diff --git a/.gitignore b/.gitignore
index 3d7e99c65e6..17f2a76dfaa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -89,6 +89,8 @@ Mage.Verify/target
Mage.Verify/mageclient.log
Mage.Verify/AllCards.json.zip
Mage.Verify/AllSets.json.zip
+Mage.Verify/AllCards.json
+Mage.Verify/AllSets.json
releases
Utils/author.txt
@@ -140,3 +142,7 @@ client_secrets.json
dependency-reduced-pom.xml
mage-bundle
/Mage.Client/game-*.json
+
+# build-tools config and log files when building client/server with Atom
+.build-tools.cson
+build-output.log
diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml
index e68ed8ddbca..78daaf61891 100644
--- a/Mage.Client/pom.xml
+++ b/Mage.Client/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-root
- 1.4.29
+ 1.4.30
org.mage
diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java
index 4d3d0b2a712..59594260f45 100644
--- a/Mage.Client/src/main/java/mage/client/MageFrame.java
+++ b/Mage.Client/src/main/java/mage/client/MageFrame.java
@@ -105,6 +105,10 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
private static final String GRAY_MODE_ARG = "-gray";
private static final String FILL_SCREEN_ARG = "-fullscreen";
private static final String SKIP_DONE_SYMBOLS = "-skipDoneSymbols";
+ private static final String USER_ARG = "-user";
+ private static final String PASSWORD_ARG = "-pw";
+ private static final String SERVER_ARG = "-server";
+ private static final String PORT_ARG = "-port";
private static final String NOT_CONNECTED_TEXT = "";
private static MageFrame instance;
@@ -123,6 +127,10 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
private static boolean grayMode = false;
private static boolean fullscreenMode = false;
private static boolean skipSmallSymbolGenerationForExisting = false;
+ private static String startUser = null;
+ private static String startPassword = "";
+ private static String startServer = "localhost";
+ private static int startPort = -1;
private static final Map CHATS = new HashMap<>();
private static final Map GAMES = new HashMap<>();
@@ -732,7 +740,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
}
public boolean autoConnect() {
- boolean autoConnectParamValue = Boolean.parseBoolean(PREFS.get("autoConnect", "false"));
+ boolean autoConnectParamValue = startUser != null || Boolean.parseBoolean(PREFS.get("autoConnect", "false"));
boolean status = false;
if (autoConnectParamValue) {
status = performConnect(false);
@@ -1186,8 +1194,10 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
startTime = System.currentTimeMillis();
Thread.setDefaultUncaughtExceptionHandler((t, e) -> LOGGER.fatal(null, e));
+
SwingUtilities.invokeLater(() -> {
- for (String arg : args) {
+ for (int i = 0; i < args.length; i++) {
+ String arg = args[i];
if (arg.startsWith(LITE_MODE_ARG)) {
liteMode = true;
}
@@ -1200,6 +1210,22 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
if (arg.startsWith(SKIP_DONE_SYMBOLS)) {
skipSmallSymbolGenerationForExisting = true;
}
+ if (arg.startsWith(USER_ARG)){
+ startUser = args[i+1];
+ i++;
+ }
+ if (arg.startsWith(PASSWORD_ARG)){
+ startPassword = args[i+1];
+ i++;
+ }
+ if (arg.startsWith(SERVER_ARG)){
+ startServer = args[i+1];
+ i++;
+ }
+ if (arg.startsWith(PORT_ARG)){
+ startPort = Integer.valueOf(args[i+1]);
+ i++;
+ }
}
if (!liteMode) {
final SplashScreen splash = SplashScreen.getSplashScreen();
@@ -1212,6 +1238,19 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
}
}
instance = new MageFrame();
+
+ if( startUser != null){
+ instance.currentConnection = new Connection();
+ instance.currentConnection.setUsername(startUser);
+ instance.currentConnection.setHost(startServer);
+ if (startPort > 0){
+ instance.currentConnection.setPort(startPort);
+ }else {
+ instance.currentConnection.setPort(MagePreferences.getServerPortWithDefault(Config.port));
+ }
+ PreferencesDialog.setProxyInformation(instance.currentConnection);
+ instance.currentConnection.setPassword(startPassword);
+ }
instance.setVisible(true);
});
diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form
index 9bc0fefed70..fee373f4c1a 100644
--- a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form
+++ b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form
@@ -851,7 +851,6 @@
-
diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java
index 6d1292bb4e3..9d406fa78e0 100644
--- a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java
+++ b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java
@@ -51,13 +51,13 @@ import mage.client.MageFrame;
import mage.client.cards.*;
import mage.client.constants.Constants.SortBy;
import mage.client.deckeditor.table.TableModel;
+import mage.client.dialog.CheckBoxList;
import static mage.client.dialog.PreferencesDialog.KEY_DECK_EDITOR_SEARCH_NAMES;
import static mage.client.dialog.PreferencesDialog.KEY_DECK_EDITOR_SEARCH_RULES;
import static mage.client.dialog.PreferencesDialog.KEY_DECK_EDITOR_SEARCH_TYPES;
import static mage.client.dialog.PreferencesDialog.KEY_DECK_EDITOR_SEARCH_UNIQUE;
import mage.client.util.GUISizeHelper;
import mage.client.util.gui.FastSearchUtil;
-import mage.client.dialog.CheckBoxList;
import mage.client.util.sets.ConstructedFormats;
import mage.constants.CardType;
import mage.constants.Rarity;
@@ -85,7 +85,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
private final SortSetting sortSetting;
private static final Map pdAllowed = new HashMap<>();
- private final String TEST_MULTI_SET="Multiple Sets selected";
+ private final String TEST_MULTI_SET = "Multiple Sets selected";
private final ActionListener searchAction = evt -> jButtonSearchActionPerformed(evt);
@@ -100,22 +100,20 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
initListViewComponents();
setGUISize();
currentView = mainModel; // by default we use List View
-
- listCodeSelected = new CheckBoxList();
+
+ listCodeSelected = new CheckBoxList();
// remove the all option
- boolean is_removeFinish=false;
-
- String[] setCodes = ConstructedFormats.getTypes();
- java.util.List result = new ArrayList<>();
-
- for(int i=0; (i result = new ArrayList<>();
+
+ for (int i = 0; (i < setCodes.length) && (!is_removeFinish); i++) {
String item = setCodes[i];
- if(!item.equals(ConstructedFormats.ALL))
- {
+ if (!item.equals(ConstructedFormats.ALL)) {
result.add(item);
}
- }
+ }
listCodeSelected.setListData(result.toArray());
}
@@ -377,33 +375,29 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
criteria.rarities(Rarity.BONUS);
}
if (this.cbExpansionSet.isVisible()) {
- if(listCodeSelected.getCheckedIndices().length <= 1)
- {
- String expansionSelection = this.cbExpansionSet.getSelectedItem().toString();
- if (!expansionSelection.equals("- All Sets")) {
- java.util.List setCodes = ConstructedFormats.getSetsByFormat(expansionSelection);
- criteria.setCodes(setCodes.toArray(new String[0]));
- }
- }
- else
- {
- java.util.List setCodes = new ArrayList<>() ;
- //java.util.List listReceived=new ArrayList<>() ;
+ if (listCodeSelected.getCheckedIndices().length <= 1) {
+ String expansionSelection = this.cbExpansionSet.getSelectedItem().toString();
+ if (!expansionSelection.equals("- All Sets")) {
+ java.util.List setCodes = ConstructedFormats.getSetsByFormat(expansionSelection);
+ criteria.setCodes(setCodes.toArray(new String[0]));
+ }
+ } else {
+ java.util.List setCodes = new ArrayList<>();
+ //java.util.List listReceived=new ArrayList<>() ;
- int[] choiseValue=listCodeSelected.getCheckedIndices();
- ListModel x= listCodeSelected.getModel();
+ int[] choiseValue = listCodeSelected.getCheckedIndices();
+ ListModel x = listCodeSelected.getModel();
- for(int itemIndex: choiseValue){
-
- java.util.List listReceived=ConstructedFormats.getSetsByFormat(x.getElementAt(itemIndex).toString());
- listReceived.stream().filter((item) -> (setCodes.contains(item)==false)).forEachOrdered((item) -> {
- setCodes.add(item);
- });
- }
- criteria.setCodes(setCodes.toArray(new String[0]));
- }
- }
+ for (int itemIndex : choiseValue) {
+ java.util.List listReceived = ConstructedFormats.getSetsByFormat(x.getElementAt(itemIndex).toString());
+ listReceived.stream().filter((item) -> (setCodes.contains(item) == false)).forEachOrdered((item) -> {
+ setCodes.add(item);
+ });
+ }
+ criteria.setCodes(setCodes.toArray(new String[0]));
+ }
+ }
return criteria;
}
@@ -1234,22 +1228,19 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
}// //GEN-END:initComponents
private void cbExpansionSetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbExpansionSetActionPerformed
- if(!cbExpansionSet.getSelectedItem().toString().contains(TEST_MULTI_SET))
- {
- int index=cbExpansionSet.getSelectedIndex();
- if(cbExpansionSet.getItemAt(0).contains(TEST_MULTI_SET))
- {
+ if (!cbExpansionSet.getSelectedItem().toString().contains(TEST_MULTI_SET)) {
+ int index = cbExpansionSet.getSelectedIndex();
+ if (cbExpansionSet.getItemAt(0).contains(TEST_MULTI_SET)) {
cbExpansionSet.removeItemAt(0);
index--;
}
- listCodeSelected.uncheckAll();
- if(index > 0)
- {
+ listCodeSelected.uncheckAll();
+ if (index > 0) {
//ofset because all sets is removed from the list
- listCodeSelected.setChecked(index-1, true);
+ listCodeSelected.setChecked(index - 1, true);
}
}
-
+
filterCards();
}//GEN-LAST:event_cbExpansionSetActionPerformed
@@ -1422,62 +1413,53 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
// TODO add your handling code here:
}//GEN-LAST:event_chkTypesActionPerformed
- private void chkRulesActionPerformed(java.awt.event.ActionEvent evt) {
+ private void chkRulesActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
- }
+ }
private void chkUniqueActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkRulesActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_chkRulesActionPerformed
private void btnExpansionSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExpansionSearchActionPerformed
- FastSearchUtil.showFastSearchForStringComboBox(listCodeSelected, FastSearchUtil.DEFAULT_EXPANSION_SEARCH_MESSAGE);
+ FastSearchUtil.showFastSearchForStringComboBox(listCodeSelected, FastSearchUtil.DEFAULT_EXPANSION_SEARCH_MESSAGE);
//
- int[] choiseValue=listCodeSelected.getCheckedIndices();
- ListModel x= listCodeSelected.getModel();
-
- if(choiseValue.length==0)//none
+ int[] choiseValue = listCodeSelected.getCheckedIndices();
+ ListModel x = listCodeSelected.getModel();
+
+ if (choiseValue.length == 0)//none
{
- cbExpansionSet.setSelectedIndex(0);
- }
- else if(choiseValue.length==1)//one
+ cbExpansionSet.setSelectedIndex(0);
+ } else if (choiseValue.length == 1)//one
{
- String itemSelected=listCodeSelected.getModel().getElementAt(choiseValue[0]).toString();
- for(int index=0;index < cbExpansionSet.getItemCount();index++)
- {
- if(cbExpansionSet.getItemAt(index).equals(itemSelected))
- {
+ String itemSelected = listCodeSelected.getModel().getElementAt(choiseValue[0]).toString();
+ for (int index = 0; index < cbExpansionSet.getItemCount(); index++) {
+ if (cbExpansionSet.getItemAt(index).equals(itemSelected)) {
cbExpansionSet.setSelectedIndex(index);
}
}
-
- }
- else//many
+
+ } else//many
{
- String message=String.format("%s:%d",TEST_MULTI_SET,choiseValue.length);
-
-
-
+ String message = String.format("%s:%d", TEST_MULTI_SET, choiseValue.length);
+
cbExpansionSet.insertItemAt(message, 0);
cbExpansionSet.setSelectedIndex(0);
-
- if(cbExpansionSet.getItemAt(1).contains(TEST_MULTI_SET))
- {
- cbExpansionSet.removeItemAt(1);
+
+ if (cbExpansionSet.getItemAt(1).contains(TEST_MULTI_SET)) {
+ cbExpansionSet.removeItemAt(1);
}
-
-
+
//listCodeSelected.setChecked(index-1, true);
- //cbExpansionSet.
+ //cbExpansionSet.
}
-
- /*for(int itemIndex: choiseValue){
+
+ /*for(int itemIndex: choiseValue){
// LogLog.warn(String.format("%d:%s",itemIndex,x.getElementAt(itemIndex).toString()));
}
- */
+ */
//
-
- filterCards();
+ filterCards();
}//GEN-LAST:event_btnExpansionSearchActionPerformed
private void tbCommonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbCommonActionPerformed
@@ -1537,8 +1519,8 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
private TableModel mainModel;
private JTable mainTable;
private ICardGrid currentView;
-
- private CheckBoxList listCodeSelected;
+
+ private final CheckBoxList listCodeSelected;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.ButtonGroup bgView;
diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/table/MageCardComparator.java b/Mage.Client/src/main/java/mage/client/deckeditor/table/MageCardComparator.java
index 0ae3255a20b..1570c99aa7a 100644
--- a/Mage.Client/src/main/java/mage/client/deckeditor/table/MageCardComparator.java
+++ b/Mage.Client/src/main/java/mage/client/deckeditor/table/MageCardComparator.java
@@ -26,11 +26,10 @@
*/
package mage.client.deckeditor.table;
+import java.util.Comparator;
import mage.cards.MageCard;
import mage.view.CardView;
-import java.util.Comparator;
-
/**
* {@link MageCard} comparator. Used to sort cards in Deck Editor Table View
* pane.
@@ -75,7 +74,7 @@ public class MageCardComparator implements Comparator {
// Color
case 3:
aCom = a.getColorText();
- bCom = a.getColorText();
+ bCom = b.getColorText();
break;
// Type
case 4:
diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
index 71b0668eef8..60620c13ab0 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
@@ -203,6 +203,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
public static final String KEY_TABLES_DIVIDER_LOCATION_1 = "tablePanelDividerLocation1";
public static final String KEY_TABLES_DIVIDER_LOCATION_2 = "tablePanelDividerLocation2";
public static final String KEY_TABLES_DIVIDER_LOCATION_3 = "tablePanelDividerLocation3";
+ public static final String KEY_TABLES_DIVIDER_LOCATION_4 = "tablePanelDividerLocation4";
// Positions of deck editor divider bars
public static final String KEY_EDITOR_HORIZONTAL_DIVIDER_LOCATION = "editorHorizontalDividerLocation";
diff --git a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.form b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.form
index be222cd34b6..bc3776f1f5d 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.form
+++ b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.form
@@ -111,7 +111,7 @@
-
+
diff --git a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java
index a6e523cfcca..487397fb73f 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java
@@ -34,6 +34,7 @@
package mage.client.dialog;
import java.awt.Dimension;
+import java.awt.Rectangle;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
@@ -43,22 +44,26 @@ import java.util.concurrent.TimeUnit;
import javax.swing.Icon;
import javax.swing.SwingWorker;
import javax.swing.table.AbstractTableModel;
+import org.apache.log4j.Logger;
+
import mage.client.MageFrame;
import mage.client.SessionHandler;
import mage.client.chat.ChatPanelBasic;
import mage.client.components.MageComponents;
import mage.client.components.tray.MageTray;
-import static mage.client.dialog.PreferencesDialog.KEY_TABLE_WAITING_COLUMNS_ORDER;
-import static mage.client.dialog.PreferencesDialog.KEY_TABLE_WAITING_COLUMNS_WIDTH;
import mage.client.util.GUISizeHelper;
import mage.client.util.audio.AudioManager;
import mage.client.util.gui.TableUtil;
import mage.client.util.gui.countryBox.CountryCellRenderer;
+import mage.client.util.gui.GuiDisplayUtil;
import mage.players.PlayerType;
import mage.remote.Session;
import mage.view.SeatView;
import mage.view.TableView;
-import org.apache.log4j.Logger;
+
+import static mage.client.dialog.PreferencesDialog.KEY_TABLE_WAITING_COLUMNS_ORDER;
+import static mage.client.dialog.PreferencesDialog.KEY_TABLE_WAITING_COLUMNS_WIDTH;
+import static mage.client.dialog.PreferencesDialog.KEY_TABLES_DIVIDER_LOCATION_4;
/**
* @author BetaSteward_at_googlemail.com
@@ -66,7 +71,7 @@ import org.apache.log4j.Logger;
public class TableWaitingDialog extends MageDialog {
private static final Logger LOGGER = Logger.getLogger(TableWaitingDialog.class);
- private static final int[] DEFAULT_COLUMS_WIDTH = {20, 50, 100, 100, 100};
+ private static final int[] DEFAULT_COLUMNS_WIDTH = {20, 50, 100, 100, 100, 100};
private UUID tableId;
private UUID roomId;
@@ -89,12 +94,11 @@ public class TableWaitingDialog extends MageDialog {
this.setSize(prefWidth, prefHeight);
}
- chatPanel.useExtendedView(ChatPanelBasic.VIEW_MODE.NONE);
- tableSeats.createDefaultColumnsFromModel();
- TableUtil.setColumnWidthAndOrder(tableSeats, DEFAULT_COLUMS_WIDTH, KEY_TABLE_WAITING_COLUMNS_WIDTH, KEY_TABLE_WAITING_COLUMNS_ORDER);
- tableSeats.setDefaultRenderer(Icon.class, new CountryCellRenderer());
setGUISize();
-
+ jTableSeats.createDefaultColumnsFromModel();
+ jTableSeats.setDefaultRenderer(Icon.class, new CountryCellRenderer());
+ TableUtil.setColumnWidthAndOrder(jTableSeats, DEFAULT_COLUMNS_WIDTH, KEY_TABLE_WAITING_COLUMNS_WIDTH, KEY_TABLE_WAITING_COLUMNS_ORDER);
+ chatPanel.useExtendedView(ChatPanelBasic.VIEW_MODE.NONE);
MageFrame.getUI().addButton(MageComponents.TABLE_WAITING_START_BUTTON, btnStart);
}
@@ -104,9 +108,9 @@ public class TableWaitingDialog extends MageDialog {
}
private void setGUISize() {
- tableSeats.getTableHeader().setFont(GUISizeHelper.tableFont);
- tableSeats.setFont(GUISizeHelper.tableFont);
- tableSeats.setRowHeight(GUISizeHelper.getTableRowHeight());
+ jTableSeats.getTableHeader().setFont(GUISizeHelper.tableFont);
+ jTableSeats.setFont(GUISizeHelper.tableFont);
+ jTableSeats.setRowHeight(GUISizeHelper.getTableRowHeight());
jSplitPane1.setDividerSize(GUISizeHelper.dividerBarSize);
jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0));
@@ -131,14 +135,14 @@ public class TableWaitingDialog extends MageDialog {
closeDialog();
return;
}
- int row = this.tableSeats.getSelectedRow();
+ int row = this.jTableSeats.getSelectedRow();
if (getTitle().equals("Waiting for players")) {
this.title = getTitle() + " - " + table.getDeckType() + " / " + table.getGameType();
this.repaint();
}
tableWaitModel.loadData(table);
- this.tableSeats.repaint();
- this.tableSeats.getSelectionModel().setSelectionInterval(row, row);
+ this.jTableSeats.repaint();
+ this.jTableSeats.getSelectionModel().setSelectionInterval(row, row);
} else {
closeDialog();
}
@@ -148,10 +152,15 @@ public class TableWaitingDialog extends MageDialog {
}
public void showDialog(UUID roomId, UUID tableId, boolean isTournament) {
+ Rectangle currentBounds = MageFrame.getDesktop().getBounds();
+ Optional chatId = SessionHandler.getTableChatId(tableId);
+ String tournamentChatDivider = PreferencesDialog.getCachedValue(KEY_TABLES_DIVIDER_LOCATION_4, null);
+ updateTask = new UpdateSeatsTask(SessionHandler.getSession(), roomId, tableId, this);
+
this.roomId = roomId;
this.tableId = tableId;
this.isTournament = isTournament;
- updateTask = new UpdateSeatsTask(SessionHandler.getSession(), roomId, tableId, this);
+
if (SessionHandler.isTableOwner(roomId, tableId)) {
this.btnStart.setVisible(true);
this.btnMoveDown.setVisible(true);
@@ -161,13 +170,15 @@ public class TableWaitingDialog extends MageDialog {
this.btnMoveDown.setVisible(false);
this.btnMoveUp.setVisible(false);
}
- Optional chatId = SessionHandler.getTableChatId(tableId);
+
if (chatId.isPresent()) {
this.chatPanel.connect(chatId.get());
updateTask.execute();
this.setModal(false);
this.setLocation(100, 100);
this.setVisible(true);
+
+ GuiDisplayUtil.restoreDividerLocations(currentBounds, tournamentChatDivider, jSplitPane1);
} else {
closeDialog();
}
@@ -177,12 +188,13 @@ public class TableWaitingDialog extends MageDialog {
if (updateTask != null) {
updateTask.cancel(true);
}
+
this.chatPanel.disconnect();
MageFrame.getUI().removeButton(MageComponents.TABLE_WAITING_START_BUTTON);
this.removeDialog();
- TableUtil.saveColumnWidthAndOrderToPrefs(tableSeats, KEY_TABLE_WAITING_COLUMNS_WIDTH, KEY_TABLE_WAITING_COLUMNS_ORDER);
- PreferencesDialog.saveValue(PreferencesDialog.KEY_TABLE_WAITING_WIDTH, Integer.toString(getWidth()));
- PreferencesDialog.saveValue(PreferencesDialog.KEY_TABLE_WAITING_HEIGHT, Integer.toString(getHeight()));
+ TableUtil.saveColumnWidthAndOrderToPrefs(jTableSeats, KEY_TABLE_WAITING_COLUMNS_WIDTH, KEY_TABLE_WAITING_COLUMNS_ORDER);
+ GuiDisplayUtil.saveCurrentBoundsToPrefs();
+ GuiDisplayUtil.saveDividerLocationToPrefs(KEY_TABLES_DIVIDER_LOCATION_4, this.jSplitPane1.getDividerLocation());
}
/**
@@ -200,7 +212,7 @@ public class TableWaitingDialog extends MageDialog {
btnStart = new javax.swing.JButton();
jSplitPane1 = new javax.swing.JSplitPane();
jScrollPane1 = new javax.swing.JScrollPane();
- tableSeats = new javax.swing.JTable();
+ jTableSeats = new javax.swing.JTable();
chatPanel = new mage.client.chat.ChatPanelBasic();
setResizable(true);
@@ -226,9 +238,9 @@ public class TableWaitingDialog extends MageDialog {
jSplitPane1.setResizeWeight(1.0);
jSplitPane1.setToolTipText("");
- tableSeats.setModel(tableWaitModel);
- tableSeats.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
- jScrollPane1.setViewportView(tableSeats);
+ jTableSeats.setModel(tableWaitModel);
+ jTableSeats.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
+ jScrollPane1.setViewportView(jTableSeats);
jSplitPane1.setLeftComponent(jScrollPane1);
jSplitPane1.setRightComponent(chatPanel);
@@ -288,19 +300,19 @@ public class TableWaitingDialog extends MageDialog {
}//GEN-LAST:event_btnCancelActionPerformed
private void btnMoveDownActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMoveDownActionPerformed
- int row = this.tableSeats.getSelectedRow();
- if (row < this.tableSeats.getRowCount() - 1) {
+ int row = this.jTableSeats.getSelectedRow();
+ if (row < this.jTableSeats.getRowCount() - 1) {
SessionHandler.swapSeats(roomId, tableId, row, row + 1);
- this.tableSeats.getSelectionModel().setSelectionInterval(row + 1, row + 1);
+ this.jTableSeats.getSelectionModel().setSelectionInterval(row + 1, row + 1);
}
}//GEN-LAST:event_btnMoveDownActionPerformed
private void btnMoveUpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMoveUpActionPerformed
- int row = this.tableSeats.getSelectedRow();
+ int row = this.jTableSeats.getSelectedRow();
if (row > 0) {
SessionHandler.swapSeats(roomId, tableId, row, row - 1);
- this.tableSeats.getSelectionModel().setSelectionInterval(row - 1, row - 1);
+ this.jTableSeats.getSelectionModel().setSelectionInterval(row - 1, row - 1);
}
}//GEN-LAST:event_btnMoveUpActionPerformed
@@ -312,14 +324,14 @@ public class TableWaitingDialog extends MageDialog {
private mage.client.chat.ChatPanelBasic chatPanel;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSplitPane jSplitPane1;
- private javax.swing.JTable tableSeats;
+ private javax.swing.JTable jTableSeats;
// End of variables declaration//GEN-END:variables
}
class TableWaitModel extends AbstractTableModel {
- private final String[] columnNames = new String[]{"Seat", "Loc", "Player Name", "Constructed Rating", "Player Type", "History"};
+ private final String[] columnNames = new String[]{"Seat", "Loc", "Player Name", "Rating", "Player Type", "History"};
private SeatView[] seats = new SeatView[0];
private boolean limited;
@@ -327,8 +339,6 @@ class TableWaitModel extends AbstractTableModel {
seats = table.getSeats().toArray(new SeatView[0]);
if (limited != table.isLimited()) {
limited = table.isLimited();
- columnNames[3] = limited ? "Limited Rating" : "Constructed Rating";
- this.fireTableStructureChanged();
}
this.fireTableDataChanged();
}
diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java
index f7560511b6f..379075fb8d4 100644
--- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java
+++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java
@@ -56,6 +56,10 @@ import mage.client.components.MageComponents;
import mage.client.dialog.*;
import static mage.client.dialog.PreferencesDialog.KEY_TABLES_COLUMNS_ORDER;
import static mage.client.dialog.PreferencesDialog.KEY_TABLES_COLUMNS_WIDTH;
+import static mage.client.dialog.PreferencesDialog.KEY_TABLES_FILTER_SETTINGS;
+import static mage.client.dialog.PreferencesDialog.KEY_TABLES_DIVIDER_LOCATION_1;
+import static mage.client.dialog.PreferencesDialog.KEY_TABLES_DIVIDER_LOCATION_2;
+import static mage.client.dialog.PreferencesDialog.KEY_TABLES_DIVIDER_LOCATION_3;
import mage.client.util.ButtonColumn;
import mage.client.util.GUISizeHelper;
import mage.client.util.IgnoreList;
@@ -191,8 +195,7 @@ public class TablesPanel extends javax.swing.JPanel {
list.add(new RowSorter.SortKey(TableTableModel.COLUMN_CREATED, SortOrder.DESCENDING));
activeTablesSorter.setSortKeys(list);
- TableUtil.setColumnWidthAndOrder(tableTables, DEFAULT_COLUMNS_WIDTH,
- PreferencesDialog.KEY_TABLES_COLUMNS_WIDTH, PreferencesDialog.KEY_TABLES_COLUMNS_ORDER); // TODO: is sort order save and restore after app restart/window open?
+ TableUtil.setColumnWidthAndOrder(tableTables, DEFAULT_COLUMNS_WIDTH, KEY_TABLES_COLUMNS_WIDTH, KEY_TABLES_COLUMNS_ORDER);
// 2. TABLE COMPLETED
completedTablesSorter = new MageTableRowSorter(matchesModel);
@@ -227,8 +230,7 @@ public class TablesPanel extends javax.swing.JPanel {
jScrollPaneTablesActive.getViewport().setBackground(new Color(255, 255, 255, 50));
jScrollPaneTablesFinished.getViewport().setBackground(new Color(255, 255, 255, 50));
- restoreSettings();
-
+ restoreFilters();
setGUISize();
Action openTableAction;
@@ -343,7 +345,7 @@ public class TablesPanel extends javax.swing.JPanel {
}
public void cleanUp() {
- saveSettings();
+ saveGuiSettings();
chatPanelMain.cleanUp();
}
@@ -406,65 +408,32 @@ public class TablesPanel extends javax.swing.JPanel {
}
private void saveDividerLocations() {
- // save panel sizes and divider locations.
- Rectangle rec = MageFrame.getDesktop().getBounds();
- String sb = Double.toString(rec.getWidth()) + 'x' + Double.toString(rec.getHeight());
- PreferencesDialog.saveValue(PreferencesDialog.KEY_MAGE_PANEL_LAST_SIZE, sb);
- PreferencesDialog.saveValue(PreferencesDialog.KEY_TABLES_DIVIDER_LOCATION_1, Integer.toString(this.jSplitPane1.getDividerLocation()));
- PreferencesDialog.saveValue(PreferencesDialog.KEY_TABLES_DIVIDER_LOCATION_2, Integer.toString(this.jSplitPaneTables.getDividerLocation()));
- PreferencesDialog.saveValue(PreferencesDialog.KEY_TABLES_DIVIDER_LOCATION_3, Integer.toString(chatPanelMain.getSplitDividerLocation()));
+ // save divider locations and divider saveDividerLocations
+ GuiDisplayUtil.saveCurrentBoundsToPrefs();
+ GuiDisplayUtil.saveDividerLocationToPrefs(KEY_TABLES_DIVIDER_LOCATION_1, this.jSplitPane1.getDividerLocation());
+ GuiDisplayUtil.saveDividerLocationToPrefs(KEY_TABLES_DIVIDER_LOCATION_2, this.jSplitPaneTables.getDividerLocation());
+ GuiDisplayUtil.saveDividerLocationToPrefs(KEY_TABLES_DIVIDER_LOCATION_3, chatPanelMain.getSplitDividerLocation());
}
- private void restoreSettings() {
- // filter settings
- String formatSettings = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_TABLES_FILTER_SETTINGS, "");
- int i = 0;
- for (JToggleButton component : filterButtons) {
- if (formatSettings.length() > i) {
- component.setSelected(formatSettings.substring(i, i + 1).equals("x"));
- } else {
- component.setSelected(true);
- }
- i++;
- }
+ private void restoreFilters() {
+ TableUtil.setActiveFilters(KEY_TABLES_FILTER_SETTINGS, filterButtons);
setTableFilter();
}
- private void saveSettings() {
- // Filters
- StringBuilder formatSettings = new StringBuilder();
- for (JToggleButton component : filterButtons) {
- formatSettings.append(component.isSelected() ? "x" : "-");
- }
- PreferencesDialog.saveValue(PreferencesDialog.KEY_TABLES_FILTER_SETTINGS, formatSettings.toString());
-
+ private void saveGuiSettings() {
+ TableUtil.saveActiveFiltersToPrefs(KEY_TABLES_FILTER_SETTINGS, filterButtons);
TableUtil.saveColumnWidthAndOrderToPrefs(tableTables, KEY_TABLES_COLUMNS_WIDTH, KEY_TABLES_COLUMNS_ORDER);
}
- private void restoreDividerLocations() {
- Rectangle rec = MageFrame.getDesktop().getBounds();
- if (rec != null) {
- String size = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_MAGE_PANEL_LAST_SIZE, null);
- String sb = Double.toString(rec.getWidth()) + 'x' + Double.toString(rec.getHeight());
- // use divider positions only if screen size is the same as it was the time the settings were saved
- if (size != null && size.equals(sb)) {
- String location = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_TABLES_DIVIDER_LOCATION_1, null);
- if (location != null && jSplitPane1 != null) {
- jSplitPane1.setDividerLocation(Integer.parseInt(location));
- }
- if (this.btnStateFinished.isSelected()) {
- this.jSplitPaneTables.setDividerLocation(-1);
- } else {
- location = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_TABLES_DIVIDER_LOCATION_2, null);
- if (location != null && jSplitPaneTables != null) {
- jSplitPaneTables.setDividerLocation(Integer.parseInt(location));
- }
- }
- location = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_TABLES_DIVIDER_LOCATION_3, null);
- if (location != null && chatPanelMain != null) {
- chatPanelMain.setSplitDividerLocation(Integer.parseInt(location));
- }
- }
+ private void restoreDividers() {
+ Rectangle currentBounds = MageFrame.getDesktop().getBounds();
+ if (currentBounds != null) {
+ String firstDivider = PreferencesDialog.getCachedValue(KEY_TABLES_DIVIDER_LOCATION_1, null);
+ String tableDivider = PreferencesDialog.getCachedValue(KEY_TABLES_DIVIDER_LOCATION_2, null);
+ String chatDivider = PreferencesDialog.getCachedValue(KEY_TABLES_DIVIDER_LOCATION_3, null);
+ GuiDisplayUtil.restoreDividerLocations(currentBounds, firstDivider, jSplitPane1);
+ GuiDisplayUtil.restoreDividerLocations(currentBounds, tableDivider, jSplitPaneTables);
+ GuiDisplayUtil.restoreDividerLocations(currentBounds, chatDivider, chatPanelMain);
}
}
@@ -565,7 +534,7 @@ public class TablesPanel extends javax.swing.JPanel {
MageFrame.getUI().addButton(MageComponents.NEW_GAME_BUTTON, btnNewTable);
// divider locations have to be set with delay else values set are overwritten with system defaults
- Executors.newSingleThreadScheduledExecutor().schedule(() -> restoreDividerLocations(), 300, TimeUnit.MILLISECONDS);
+ Executors.newSingleThreadScheduledExecutor().schedule(() -> restoreDividers(), 300, TimeUnit.MILLISECONDS);
}
@@ -580,6 +549,7 @@ public class TablesPanel extends javax.swing.JPanel {
this.jPanelBottom.setVisible(false);
} else {
this.jPanelBottom.setVisible(true);
+ URLHandler.RemoveMouseAdapter(jLabelFooterText);
URLHandler.handleMessage(serverMessages.get(0), this.jLabelFooterText);
this.jButtonFooterNext.setVisible(serverMessages.size() > 1);
}
@@ -1284,7 +1254,7 @@ public class TablesPanel extends javax.swing.JPanel {
if (currentMessage >= messages.size()) {
currentMessage = 0;
}
-
+
URLHandler.RemoveMouseAdapter(jLabelFooterText);
URLHandler.handleMessage(messages.get(currentMessage), this.jLabelFooterText);
}
@@ -1447,7 +1417,7 @@ class TableTableModel extends AbstractTableModel {
if (tables[arg0].isTournament()) {
return "Show";
} else {
- owner = tables[arg0].getControllerName();
+ owner = tables[arg0].getControllerName();
if (SessionHandler.getSession() != null && owner.equals(SessionHandler.getUserName())) {
return "";
}
diff --git a/Mage.Client/src/main/java/mage/client/util/URLHandler.java b/Mage.Client/src/main/java/mage/client/util/URLHandler.java
index 6208bddbf71..19ee86f638d 100644
--- a/Mage.Client/src/main/java/mage/client/util/URLHandler.java
+++ b/Mage.Client/src/main/java/mage/client/util/URLHandler.java
@@ -9,10 +9,10 @@ import java.awt.Desktop;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
-import java.net.URL;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.net.URL;
import javax.swing.JLabel;
/**
@@ -47,6 +47,7 @@ public class URLHandler {
private static MouseAdapter createMouseAdapter(String url) {
currentMouseAdapter = new MouseAdapter() {
+ @Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() > 0) {
if (Desktop.isDesktopSupported()) {
@@ -57,7 +58,7 @@ public class URLHandler {
} catch (IOException | URISyntaxException ex) {
// do nothing
}
- }
+ }
}
}
};
diff --git a/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java b/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java
index 2702815006b..2261c9e2a7d 100644
--- a/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java
+++ b/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java
@@ -4,8 +4,11 @@ import java.awt.*;
import java.util.ArrayList;
import java.util.Locale;
import javax.swing.*;
+import mage.client.dialog.PreferencesDialog;
+import static mage.client.dialog.PreferencesDialog.KEY_MAGE_PANEL_LAST_SIZE;
import mage.client.MageFrame;
import mage.client.util.GUISizeHelper;
+import mage.client.table.*;
import mage.constants.*;
import mage.view.CardView;
import mage.view.CounterView;
@@ -26,6 +29,35 @@ public final class GuiDisplayUtil {
public ArrayList lines;
}
+ public static void restoreDividerLocations(Rectangle bounds, String lastDividerLocation, JComponent component) {
+ String currentBounds = Double.toString(bounds.getWidth()) + 'x' + Double.toString(bounds.getHeight());
+ String savedBounds = PreferencesDialog.getCachedValue(KEY_MAGE_PANEL_LAST_SIZE, null);
+ // use divider positions only if screen size is the same as it was the time the settings were saved
+ if (savedBounds != null && savedBounds.equals(currentBounds)) {
+ if (lastDividerLocation != null && component != null) {
+ if (component instanceof JSplitPane) {
+ JSplitPane jSplitPane = (JSplitPane) component;
+ jSplitPane.setDividerLocation(Integer.parseInt(lastDividerLocation));
+ }
+
+ if (component instanceof PlayersChatPanel) {
+ PlayersChatPanel playerChatPanel = (PlayersChatPanel) component;
+ playerChatPanel.setSplitDividerLocation(Integer.parseInt(lastDividerLocation));
+ }
+ }
+ }
+ }
+
+ public static void saveCurrentBoundsToPrefs() {
+ Rectangle rec = MageFrame.getDesktop().getBounds();
+ String currentBounds = Double.toString(rec.getWidth()) + 'x' + Double.toString(rec.getHeight());
+ PreferencesDialog.saveValue(KEY_MAGE_PANEL_LAST_SIZE, currentBounds);
+ }
+
+ public static void saveDividerLocationToPrefs(String dividerPrefKey, int position) {
+ PreferencesDialog.saveValue(dividerPrefKey, Integer.toString(position));
+ }
+
public static JXPanel getDescription(CardView card, int width, int height) {
JXPanel descriptionPanel = new JXPanel();
diff --git a/Mage.Client/src/main/java/mage/client/util/gui/TableUtil.java b/Mage.Client/src/main/java/mage/client/util/gui/TableUtil.java
index 7bf6d5b1aed..f762afb2f42 100644
--- a/Mage.Client/src/main/java/mage/client/util/gui/TableUtil.java
+++ b/Mage.Client/src/main/java/mage/client/util/gui/TableUtil.java
@@ -5,8 +5,11 @@
*/
package mage.client.util.gui;
+import java.util.Arrays;
import javax.swing.JTable;
+import javax.swing.JToggleButton;
import javax.swing.table.TableColumn;
+import org.apache.log4j.Logger;
import mage.client.dialog.PreferencesDialog;
/**
@@ -22,7 +25,32 @@ public final class TableUtil {
* @param widthPrefKey
* @param orderPrefKey
*/
- static public void setColumnWidthAndOrder(JTable table, int[] defaultColumnsWidth, String widthPrefKey, String orderPrefKey) {
+
+ private static final Logger LOGGER = Logger.getLogger(TableUtil.class);
+
+ public static void saveActiveFiltersToPrefs(String filterPrefKey, JToggleButton[] buttons) {
+ StringBuilder currentFilters = new StringBuilder();
+ for (JToggleButton component : buttons) {
+ currentFilters.append(component.isSelected() ? "x" : "-");
+ }
+
+ PreferencesDialog.saveValue(filterPrefKey, currentFilters.toString());
+ }
+
+ public static void setActiveFilters(String filterPrefKey, JToggleButton[] buttons) {
+ String formatSettings = PreferencesDialog.getCachedValue(filterPrefKey, "");
+ int i = 0;
+ for (JToggleButton component : buttons) {
+ if (formatSettings.length() > i) {
+ component.setSelected(formatSettings.substring(i, i + 1).equals("x"));
+ } else {
+ component.setSelected(true);
+ }
+ i++;
+ }
+ }
+
+ public static void setColumnWidthAndOrder(JTable table, int[] defaultColumnsWidth, String widthPrefKey, String orderPrefKey) {
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// set the column width from saved value or defaults
@@ -51,11 +79,11 @@ public final class TableUtil {
}
- static public void saveColumnWidthAndOrderToPrefs(JTable table, String widthPrefKey, String orderPrefKey) {
- // Column width
+ public static void saveColumnWidthAndOrderToPrefs(JTable table, String widthPrefKey, String orderPrefKey) {
StringBuilder columnWidthSettings = new StringBuilder();
StringBuilder columnOrderSettings = new StringBuilder();
boolean firstValue = true;
+
for (int i = 0; i < table.getColumnModel().getColumnCount(); i++) {
TableColumn column = table.getColumnModel().getColumn(table.convertColumnIndexToView(i));
if (!firstValue) {
@@ -67,12 +95,12 @@ public final class TableUtil {
columnWidthSettings.append(column.getWidth());
columnOrderSettings.append(table.convertColumnIndexToModel(i));
}
+
PreferencesDialog.saveValue(widthPrefKey, columnWidthSettings.toString());
PreferencesDialog.saveValue(orderPrefKey, columnOrderSettings.toString());
-
}
- public static int[] getIntArrayFromString(String stringData) {
+ private static int[] getIntArrayFromString(String stringData) {
int[] intArray = null;
if (stringData != null && !stringData.isEmpty()) {
String[] items = stringData.split(",");
diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/beans/EventListenerList.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/beans/EventListenerList.java
index 241be3e9546..ebd130b353f 100644
--- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/beans/EventListenerList.java
+++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/beans/EventListenerList.java
@@ -55,7 +55,7 @@ public class EventListenerList extends javax.swing.event.EventListenerList {
* @param listenerClass
* @return
*/
- public Iterator getIterator(Class extends T>... listenerClass) {
+ public Iterator getIterator(Class... listenerClass) {
return getIterable(listenerClass).iterator();
}
diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MythicspoilerComSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MythicspoilerComSource.java
index b33a8b08465..1b7ff4125e1 100644
--- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MythicspoilerComSource.java
+++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MythicspoilerComSource.java
@@ -257,6 +257,7 @@ public enum MythicspoilerComSource implements CardImageSource {
supportedSets.add("UST");
supportedSets.add("RIX");
supportedSets.add("DOM");
+ supportedSets.add("BBD");
sets = new LinkedHashMap<>();
setsAliases = new HashMap<>();
diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java
index 3a43aec961d..f38b1a80e6f 100644
--- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java
+++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java
@@ -210,6 +210,7 @@ public enum ScryfallImageSource implements CardImageSource {
supportedSets.add("PPRO");
supportedSets.add("A25");
supportedSets.add("DOM");
+ supportedSets.add("BBD");
// supportedSets.add("M19");
}
diff --git a/Mage.Client/src/main/resources/card-pictures-tok.txt b/Mage.Client/src/main/resources/card-pictures-tok.txt
index 83df7a8e29a..664b4d79c31 100644
--- a/Mage.Client/src/main/resources/card-pictures-tok.txt
+++ b/Mage.Client/src/main/resources/card-pictures-tok.txt
@@ -97,6 +97,7 @@
|Generate|PLANE:PCA|Plane - Hedron Fields of Agadeem|||HedronFieldsOfAgadeemPlane|
|Generate|PLANE:PCA|Plane - Lethe Lake|||LetheLakePlane|
|Generate|PLANE:PCA|Plane - Naya|||NayaPlane|
+|Generate|PLANE:PCA|Plane - Panopticon|||PanopticonPlane|
|Generate|PLANE:PCA|Plane - Tazeem|||TazeemPlane|
|Generate|PLANE:PCA|Plane - The Dark Barony|||TheDarkBaronyPlane|
|Generate|PLANE:PCA|Plane - The Eon Fog|||TheEonFogPlane|
diff --git a/Mage.Common/pom.xml b/Mage.Common/pom.xml
index caf37f82018..1cca97c7742 100644
--- a/Mage.Common/pom.xml
+++ b/Mage.Common/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-root
- 1.4.29
+ 1.4.30
mage-common
diff --git a/Mage.Common/src/main/java/mage/utils/MageVersion.java b/Mage.Common/src/main/java/mage/utils/MageVersion.java
index 26802409ef0..f5ad8d3c811 100644
--- a/Mage.Common/src/main/java/mage/utils/MageVersion.java
+++ b/Mage.Common/src/main/java/mage/utils/MageVersion.java
@@ -40,8 +40,8 @@ public class MageVersion implements Serializable, Comparable {
*/
public final static int MAGE_VERSION_MAJOR = 1;
public final static int MAGE_VERSION_MINOR = 4;
- public final static int MAGE_VERSION_PATCH = 29;
- public final static String MAGE_VERSION_MINOR_PATCH = "V4";
+ public final static int MAGE_VERSION_PATCH = 30;
+ public final static String MAGE_VERSION_MINOR_PATCH = "V2";
public final static String MAGE_VERSION_INFO = "";
private final int major;
diff --git a/Mage.Plugins/Mage.Counter.Plugin/pom.xml b/Mage.Plugins/Mage.Counter.Plugin/pom.xml
index 18003b41773..96edf662929 100644
--- a/Mage.Plugins/Mage.Counter.Plugin/pom.xml
+++ b/Mage.Plugins/Mage.Counter.Plugin/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-plugins
- 1.4.29
+ 1.4.30
mage-counter-plugin
diff --git a/Mage.Plugins/pom.xml b/Mage.Plugins/pom.xml
index 4f55088ab0a..1bad7059904 100644
--- a/Mage.Plugins/pom.xml
+++ b/Mage.Plugins/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-root
- 1.4.29
+ 1.4.30
mage-plugins
diff --git a/Mage.Server.Console/pom.xml b/Mage.Server.Console/pom.xml
index 547a990f08c..99eb5e2de2c 100644
--- a/Mage.Server.Console/pom.xml
+++ b/Mage.Server.Console/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-root
- 1.4.29
+ 1.4.30
org.mage
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml b/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml
index 287354462e3..5d995e5381b 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-deck-constructed
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Brawl.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Brawl.java
index 846221fd23a..b3bb4ee87ff 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Brawl.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Brawl.java
@@ -149,10 +149,12 @@ public class Brawl extends Constructed {
if (commanderColor.isGreen()) {
colorIdentity.setGreen(true);
}
+ if (commanderColor.isColorless()) {
+ colorIdentity.setColorless(true);
+ }
}
}
-
- List basicsInDeck = new ArrayList<>();
+ Set basicsInDeck = new HashSet<>();
if (colorIdentity.isColorless()) {
for (Card card : deck.getCards()) {
if (basicLandNames.contains(card.getName())) {
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Commander.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Commander.java
index c1912a21a02..7fad4926070 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Commander.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Commander.java
@@ -33,6 +33,7 @@ import mage.abilities.Ability;
import mage.abilities.common.CanBeYourCommanderAbility;
import mage.abilities.costs.mana.ManaCost;
import mage.abilities.keyword.PartnerAbility;
+import mage.abilities.keyword.PartnerWithAbility;
import mage.cards.Card;
import mage.cards.ExpansionSet;
import mage.cards.Sets;
@@ -133,6 +134,10 @@ public class Commander extends Constructed {
invalid.put("Commander", "Sideboard must contain only the commander(s)");
valid = false;
} else {
+ Set commanderNames = new HashSet<>();
+ for (Card commander : deck.getSideboard()) {
+ commanderNames.add(commander.getName());
+ }
for (Card commander : deck.getSideboard()) {
if (bannedCommander.contains(commander.getName())) {
invalid.put("Commander", "Commander banned (" + commander.getName() + ')');
@@ -144,8 +149,18 @@ public class Commander extends Constructed {
valid = false;
}
if (deck.getSideboard().size() == 2 && !commander.getAbilities().contains(PartnerAbility.getInstance())) {
- invalid.put("Commander", "Commander without Partner (" + commander.getName() + ')');
- valid = false;
+ boolean partnersWith = false;
+ for (Ability ability : commander.getAbilities()) {
+ if (ability instanceof PartnerWithAbility
+ && commanderNames.contains(((PartnerWithAbility) ability).getPartnerName())) {
+ partnersWith = true;
+ break;
+ }
+ }
+ if (!partnersWith) {
+ invalid.put("Commander", "Commander without Partner (" + commander.getName() + ')');
+ valid = false;
+ }
}
FilterMana commanderColor = commander.getColorIdentity();
if (commanderColor.isWhite()) {
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/DuelCommander.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/DuelCommander.java
index 22387f9a437..b3d66fcf529 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/DuelCommander.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/DuelCommander.java
@@ -100,6 +100,7 @@ public class DuelCommander extends Commander {
bannedCommander.add("Tasigur, the Golden Fang");
bannedCommander.add("Vial Smasher the Fierce");
bannedCommander.add("Zur the Enchanter");
+ bannedCommander.add("Zurgo Bellstriker");
}
}
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/FreeformCommander.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/FreeformCommander.java
index 570be2a80e4..970ca92f9f7 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/FreeformCommander.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/FreeformCommander.java
@@ -28,15 +28,14 @@
package mage.deck;
import java.util.*;
-import java.util.Map.Entry;
-import mage.abilities.common.CanBeYourCommanderAbility;
+import mage.abilities.Ability;
import mage.abilities.keyword.PartnerAbility;
+import mage.abilities.keyword.PartnerWithAbility;
import mage.cards.Card;
import mage.cards.ExpansionSet;
import mage.cards.Sets;
import mage.cards.decks.Constructed;
import mage.cards.decks.Deck;
-import mage.constants.SetType;
import mage.filter.FilterMana;
/**
@@ -90,15 +89,29 @@ public class FreeformCommander extends Constructed {
invalid.put("Commander", "Sideboard must contain only the commander(s)");
valid = false;
} else {
+ Set commanderNames = new HashSet<>();
for (Card commander : deck.getSideboard()) {
- if (!(commander.isCreature() ||
- commander.isLegendary())) {
+ commanderNames.add(commander.getName());
+ }
+ for (Card commander : deck.getSideboard()) {
+ if (!(commander.isCreature()
+ || commander.isLegendary())) {
invalid.put("Commander", "For Freeform Commander, the commander must be a creature or be legendary. Yours was: " + commander.getName());
valid = false;
}
if (deck.getSideboard().size() == 2 && !commander.getAbilities().contains(PartnerAbility.getInstance())) {
- invalid.put("Commander", "Commander without Partner (" + commander.getName() + ')');
- valid = false;
+ boolean partnersWith = false;
+ for (Ability ability : commander.getAbilities()) {
+ if (ability instanceof PartnerWithAbility
+ && commanderNames.contains(((PartnerWithAbility) ability).getPartnerName())) {
+ partnersWith = true;
+ break;
+ }
+ }
+ if (!partnersWith) {
+ invalid.put("Commander", "Commander without Partner (" + commander.getName() + ')');
+ valid = false;
+ }
}
FilterMana commanderColor = commander.getColorIdentity();
if (commanderColor.isWhite()) {
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/PennyDreadfulCommander.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/PennyDreadfulCommander.java
index 07bbe63069e..e09c5f3ee80 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/PennyDreadfulCommander.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/PennyDreadfulCommander.java
@@ -29,8 +29,10 @@ package mage.deck;
import java.util.*;
import java.util.Map.Entry;
+import mage.abilities.Ability;
import mage.abilities.common.CanBeYourCommanderAbility;
import mage.abilities.keyword.PartnerAbility;
+import mage.abilities.keyword.PartnerWithAbility;
import mage.cards.Card;
import mage.cards.ExpansionSet;
import mage.cards.Sets;
@@ -98,6 +100,10 @@ public class PennyDreadfulCommander extends Constructed {
invalid.put("Commander", "Sideboard must contain only the commander(s)");
valid = false;
} else {
+ Set commanderNames = new HashSet<>();
+ for (Card commander : deck.getSideboard()) {
+ commanderNames.add(commander.getName());
+ }
for (Card commander : deck.getSideboard()) {
if ((!commander.isCreature() || !commander.isLegendary())
&& (!commander.isPlaneswalker() || !commander.getAbilities().contains(CanBeYourCommanderAbility.getInstance()))) {
@@ -105,8 +111,18 @@ public class PennyDreadfulCommander extends Constructed {
valid = false;
}
if (deck.getSideboard().size() == 2 && !commander.getAbilities().contains(PartnerAbility.getInstance())) {
- invalid.put("Commander", "Commander without Partner (" + commander.getName() + ')');
- valid = false;
+ boolean partnersWith = false;
+ for (Ability ability : commander.getAbilities()) {
+ if (ability instanceof PartnerWithAbility
+ && commanderNames.contains(((PartnerWithAbility) ability).getPartnerName())) {
+ partnersWith = true;
+ break;
+ }
+ }
+ if (!partnersWith) {
+ invalid.put("Commander", "Commander without Partner (" + commander.getName() + ')');
+ valid = false;
+ }
}
FilterMana commanderColor = commander.getColorIdentity();
if (commanderColor.isWhite()) {
diff --git a/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml b/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml
index 19b53474c11..78fd34bf6c4 100644
--- a/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml
+++ b/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-deck-limited
diff --git a/Mage.Server.Plugins/Mage.Game.BrawlDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.BrawlDuel/pom.xml
index 62a989b0989..0b1a9a5c22e 100644
--- a/Mage.Server.Plugins/Mage.Game.BrawlDuel/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.BrawlDuel/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-brawlduel
diff --git a/Mage.Server.Plugins/Mage.Game.BrawlFreeForAll/pom.xml b/Mage.Server.Plugins/Mage.Game.BrawlFreeForAll/pom.xml
index f2b97600f84..2d4503d4ea9 100644
--- a/Mage.Server.Plugins/Mage.Game.BrawlFreeForAll/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.BrawlFreeForAll/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-brawlfreeforall
diff --git a/Mage.Server.Plugins/Mage.Game.CanadianHighlanderDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.CanadianHighlanderDuel/pom.xml
index cd785f4b49c..6f5ed897271 100644
--- a/Mage.Server.Plugins/Mage.Game.CanadianHighlanderDuel/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.CanadianHighlanderDuel/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-canadianhighlanderduel
diff --git a/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml
index 26a262184c0..8058f31e8b6 100644
--- a/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-commanderduel
diff --git a/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml b/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml
index 19b505125d4..c1e880af349 100644
--- a/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-commanderfreeforall
diff --git a/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml b/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml
index 045eea0eebf..a594fc43ba2 100644
--- a/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-freeforall
diff --git a/Mage.Server.Plugins/Mage.Game.FreeForAll/src/mage/game/FreeForAll.java b/Mage.Server.Plugins/Mage.Game.FreeForAll/src/mage/game/FreeForAll.java
index 9ec9ec45a50..d17b32d5443 100644
--- a/Mage.Server.Plugins/Mage.Game.FreeForAll/src/mage/game/FreeForAll.java
+++ b/Mage.Server.Plugins/Mage.Game.FreeForAll/src/mage/game/FreeForAll.java
@@ -1,16 +1,16 @@
/*
* 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
@@ -20,21 +20,16 @@
* 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.game;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.UUID;
import mage.constants.MultiplayerAttackOption;
import mage.constants.RangeOfInfluence;
import mage.game.match.MatchType;
-import mage.players.Player;
/**
*
@@ -67,22 +62,6 @@ public class FreeForAll extends GameImpl {
this.numPlayers = numPlayers;
}
- @Override
- public Set getOpponents(UUID playerId) {
- Set opponents = new HashSet<>();
- for (UUID opponentId: this.getPlayer(playerId).getInRange()) {
- if (!opponentId.equals(playerId)) {
- opponents.add(opponentId);
- }
- }
- return opponents;
- }
-
- @Override
- public boolean isOpponent(Player player, UUID playerToCheck) {
- return !player.getId().equals(playerToCheck) && player.getInRange().contains(playerToCheck);
- }
-
@Override
public FreeForAll copy() {
return new FreeForAll(this);
diff --git a/Mage.Server.Plugins/Mage.Game.FreeformCommanderFreeForAll/pom.xml b/Mage.Server.Plugins/Mage.Game.FreeformCommanderFreeForAll/pom.xml
index 7db3a737178..f470d91e355 100644
--- a/Mage.Server.Plugins/Mage.Game.FreeformCommanderFreeForAll/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.FreeformCommanderFreeForAll/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-freeformcommanderfreeforall
diff --git a/Mage.Server.Plugins/Mage.Game.MomirDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.MomirDuel/pom.xml
index de504418043..dd2baee2fc8 100644
--- a/Mage.Server.Plugins/Mage.Game.MomirDuel/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.MomirDuel/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-momirduel
diff --git a/Mage.Server.Plugins/Mage.Game.MomirDuel/src/mage/game/MomirDuel.java b/Mage.Server.Plugins/Mage.Game.MomirDuel/src/mage/game/MomirDuel.java
index 37ed63aa184..a611690d047 100644
--- a/Mage.Server.Plugins/Mage.Game.MomirDuel/src/mage/game/MomirDuel.java
+++ b/Mage.Server.Plugins/Mage.Game.MomirDuel/src/mage/game/MomirDuel.java
@@ -27,8 +27,6 @@
*/
package mage.game;
-import java.util.HashSet;
-import java.util.Set;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
@@ -83,22 +81,6 @@ public class MomirDuel extends GameImpl {
state.getTurnMods().add(new TurnMod(startingPlayerId, PhaseStep.DRAW));
}
- @Override
- public Set getOpponents(UUID playerId) {
- Set opponents = new HashSet<>();
- for (UUID opponentId : this.getPlayer(playerId).getInRange()) {
- if (!opponentId.equals(playerId)) {
- opponents.add(opponentId);
- }
- }
- return opponents;
- }
-
- @Override
- public boolean isOpponent(Player player, UUID playerToCheck) {
- return !player.getId().equals(playerToCheck);
- }
-
@Override
public MomirDuel copy() {
return new MomirDuel(this);
diff --git a/Mage.Server.Plugins/Mage.Game.MomirGame/pom.xml b/Mage.Server.Plugins/Mage.Game.MomirGame/pom.xml
index c3e283c5a2f..73bd0da03f0 100644
--- a/Mage.Server.Plugins/Mage.Game.MomirGame/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.MomirGame/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-momirfreeforall
diff --git a/Mage.Server.Plugins/Mage.Game.MomirGame/src/mage/game/MomirGame.java b/Mage.Server.Plugins/Mage.Game.MomirGame/src/mage/game/MomirGame.java
index 42dd12b3271..7f7043e6745 100644
--- a/Mage.Server.Plugins/Mage.Game.MomirGame/src/mage/game/MomirGame.java
+++ b/Mage.Server.Plugins/Mage.Game.MomirGame/src/mage/game/MomirGame.java
@@ -27,8 +27,6 @@
*/
package mage.game;
-import java.util.HashSet;
-import java.util.Set;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
@@ -44,13 +42,12 @@ import mage.game.match.MatchType;
import mage.game.turn.TurnMod;
import mage.players.Player;
-
/**
*
* @author nigelzor
*/
public class MomirGame extends GameImpl {
-
+
private int numPlayers;
public MomirGame(MultiplayerAttackOption attackOption, RangeOfInfluence range, int freeMulligans, int startLife) {
@@ -59,8 +56,8 @@ public class MomirGame extends GameImpl {
public MomirGame(final MomirGame game) {
super(game);
- }
-
+ }
+
@Override
public MatchType getGameType() {
return new MomirFreeForAllType();
@@ -86,22 +83,6 @@ public class MomirGame extends GameImpl {
state.getTurnMods().add(new TurnMod(startingPlayerId, PhaseStep.DRAW));
}
- @Override
- public Set getOpponents(UUID playerId) {
- Set opponents = new HashSet<>();
- for (UUID opponentId : this.getPlayer(playerId).getInRange()) {
- if (!opponentId.equals(playerId)) {
- opponents.add(opponentId);
- }
- }
- return opponents;
- }
-
- @Override
- public boolean isOpponent(Player player, UUID playerToCheck) {
- return !player.getId().equals(playerToCheck) && player.getInRange().contains(playerToCheck);
- }
-
@Override
public MomirGame copy() {
return new MomirGame(this);
diff --git a/Mage.Server.Plugins/Mage.Game.PennyDreadfulCommanderFreeForAll/pom.xml b/Mage.Server.Plugins/Mage.Game.PennyDreadfulCommanderFreeForAll/pom.xml
index ce9eea99408..47296e7410c 100644
--- a/Mage.Server.Plugins/Mage.Game.PennyDreadfulCommanderFreeForAll/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.PennyDreadfulCommanderFreeForAll/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-pennydreadfulcommanderfreeforall
diff --git a/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml
index 5ee3091a35a..dfab44f5c3e 100644
--- a/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-tinyleadersduel
diff --git a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml
index 3554cbc99f2..a01797f1c01 100644
--- a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-game-twoplayerduel
diff --git a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java
index 23a4ac12e88..7803b9bff12 100644
--- a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java
+++ b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java
@@ -24,19 +24,15 @@
* 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.game;
-import java.util.HashSet;
-import java.util.Set;
import java.util.UUID;
import mage.constants.MultiplayerAttackOption;
import mage.constants.PhaseStep;
import mage.constants.RangeOfInfluence;
import mage.game.match.MatchType;
import mage.game.turn.TurnMod;
-import mage.players.Player;
public class TwoPlayerDuel extends GameImpl {
@@ -64,22 +60,6 @@ public class TwoPlayerDuel extends GameImpl {
state.getTurnMods().add(new TurnMod(startingPlayerId, PhaseStep.DRAW));
}
- @Override
- public Set getOpponents(UUID playerId) {
- Set opponents = new HashSet<>();
- for (UUID opponentId: this.getPlayer(playerId).getInRange()) {
- if (!opponentId.equals(playerId)) {
- opponents.add(opponentId);
- }
- }
- return opponents;
- }
-
- @Override
- public boolean isOpponent(Player player, UUID playerToCheck) {
- return !player.getId().equals(playerToCheck);
- }
-
@Override
public TwoPlayerDuel copy() {
return new TwoPlayerDuel(this);
diff --git a/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml b/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml
index 517e8282fde..835f1aa271d 100644
--- a/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-player-ai-draftbot
diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml b/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml
index 69c7bda0bbb..b85644b4eed 100644
--- a/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-player-ai-ma
diff --git a/Mage.Server.Plugins/Mage.Player.AI/pom.xml b/Mage.Server.Plugins/Mage.Player.AI/pom.xml
index b9f4cc1dd43..d8b40b7034b 100644
--- a/Mage.Server.Plugins/Mage.Player.AI/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.AI/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-player-ai
diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
index 7059fe715e3..57def9ddfcb 100644
--- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
+++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
@@ -31,7 +31,9 @@ import java.io.IOException;
import java.io.Serializable;
import java.util.*;
import java.util.Map.Entry;
+import mage.ConditionalMana;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.Mana;
import mage.abilities.*;
import mage.abilities.costs.VariableCost;
@@ -1026,7 +1028,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
findPlayables(game);
if (!playableAbilities.isEmpty()) {
for (ActivatedAbility ability : playableAbilities) {
- if (ability.canActivate(playerId, game)) {
+ if (ability.canActivate(playerId, game).canActivate()) {
if (ability.getEffects().hasOutcome(Outcome.PutLandInPlay)) {
if (this.activateAbility(ability, game)) {
return true;
@@ -1057,7 +1059,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
if (game.getStack().isEmpty()) {
if (!playableNonInstant.isEmpty()) {
for (Card card : playableNonInstant) {
- if (card.getSpellAbility().canActivate(playerId, game)) {
+ if (card.getSpellAbility().canActivate(playerId, game).canActivate()) {
if (this.activateAbility(card.getSpellAbility(), game)) {
return true;
}
@@ -1066,7 +1068,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
if (!playableAbilities.isEmpty()) {
for (ActivatedAbility ability : playableAbilities) {
- if (ability.canActivate(playerId, game)) {
+ if (ability.canActivate(playerId, game).canActivate()) {
if (!(ability.getEffects().get(0) instanceof BecomesCreatureSourceEffect)) {
if (this.activateAbility(ability, game)) {
return true;
@@ -1186,7 +1188,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
for (Mana avail : available) {
if (mana.enough(avail)) {
SpellAbility ability = card.getSpellAbility();
- if (ability != null && ability.canActivate(playerId, game)
+ if (ability != null && ability.canActivate(playerId, game).canActivate()
&& game.getContinuousEffects().preventedByRuleModification(GameEvent.getEvent(GameEvent.EventType.CAST_SPELL, ability.getSourceId(), ability.getSourceId(), playerId), ability, game, true)) {
if (card.getCardType().contains(CardType.INSTANT)
|| card.hasAbility(FlashAbility.getInstance().getId(), game)) {
@@ -1203,7 +1205,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(playerId)) {
for (ActivatedAbility ability : permanent.getAbilities().getActivatedAbilities(Zone.BATTLEFIELD)) {
- if (!(ability instanceof ActivatedManaAbilityImpl) && ability.canActivate(playerId, game)) {
+ if (!(ability instanceof ActivatedManaAbilityImpl) && ability.canActivate(playerId, game).canActivate()) {
if (ability instanceof EquipAbility && permanent.getAttachedTo() != null) {
continue;
}
@@ -1230,7 +1232,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
for (Card card : graveyard.getCards(game)) {
for (ActivatedAbility ability : card.getAbilities().getActivatedAbilities(Zone.GRAVEYARD)) {
- if (ability.canActivate(playerId, game)) {
+ if (ability.canActivate(playerId, game).canActivate()) {
ManaOptions abilityOptions = ability.getManaCosts().getOptions();
if (abilityOptions.isEmpty()) {
playableAbilities.add(ability);
@@ -1261,9 +1263,9 @@ public class ComputerPlayer extends PlayerImpl implements Player {
return result;
}
- protected boolean playManaHandling(Ability ability, ManaCost unpaid, Game game) {
+ protected boolean playManaHandling(Ability ability, ManaCost unpaid, final Game game) {
// log.info("paying for " + unpaid.getText());
- UUID spendAnyManaId = game.getContinuousEffects().asThough(ability.getSourceId(), AsThoughEffectType.SPEND_OTHER_MANA, ability, ability.getControllerId(), game);
+ MageObjectReference permittingObject = game.getContinuousEffects().asThough(ability.getSourceId(), AsThoughEffectType.SPEND_OTHER_MANA, ability, ability.getControllerId(), game);
ManaCost cost;
List producers;
if (unpaid instanceof ManaCosts) {
@@ -1279,7 +1281,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
// use color producing mana abilities with costs first that produce all color manas that are needed to pay
// otherwise the computer may not be able to pay the cost for that source
ManaAbility:
- for (ActivatedManaAbilityImpl manaAbility : mageObject.getAbilities().getAvailableActivatedManaAbilities(Zone.BATTLEFIELD, game)) {
+ for (ActivatedManaAbilityImpl manaAbility : getManaAbilitiesSortedByManaCount(mageObject, game)) {
int colored = 0;
for (Mana mana : manaAbility.getNetMana(game)) {
if (!unpaid.getMana().includesMana(mana)) {
@@ -1288,9 +1290,11 @@ public class ComputerPlayer extends PlayerImpl implements Player {
colored += mana.countColored();
}
if (colored > 1 && (cost instanceof ColoredManaCost)) {
-
for (Mana netMana : manaAbility.getNetMana(game)) {
if (cost.testPay(netMana)) {
+ if (netMana instanceof ConditionalMana && !((ConditionalMana) netMana).apply(ability, game, getId(), cost)) {
+ continue;
+ }
if (activateAbility(manaAbility, game)) {
return true;
}
@@ -1302,10 +1306,13 @@ public class ComputerPlayer extends PlayerImpl implements Player {
for (MageObject mageObject : producers) {
// pay all colored costs first
- for (ActivatedManaAbilityImpl manaAbility : mageObject.getAbilities().getAvailableActivatedManaAbilities(Zone.BATTLEFIELD, game)) {
+ for (ActivatedManaAbilityImpl manaAbility : getManaAbilitiesSortedByManaCount(mageObject, game)) {
if (cost instanceof ColoredManaCost) {
for (Mana netMana : manaAbility.getNetMana(game)) {
- if (cost.testPay(netMana) || spendAnyManaId != null) {
+ if (cost.testPay(netMana) || permittingObject != null) {
+ if (netMana instanceof ConditionalMana && !((ConditionalMana) netMana).apply(ability, game, getId(), cost)) {
+ continue;
+ }
if (activateAbility(manaAbility, game)) {
return true;
}
@@ -1314,10 +1321,13 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
}
// pay snow covered mana
- for (ActivatedManaAbilityImpl manaAbility : mageObject.getAbilities().getAvailableActivatedManaAbilities(Zone.BATTLEFIELD, game)) {
+ for (ActivatedManaAbilityImpl manaAbility : getManaAbilitiesSortedByManaCount(mageObject, game)) {
if (cost instanceof SnowManaCost) {
for (Mana netMana : manaAbility.getNetMana(game)) {
- if (cost.testPay(netMana) || spendAnyManaId != null) {
+ if (cost.testPay(netMana) || permittingObject != null) {
+ if (netMana instanceof ConditionalMana && !((ConditionalMana) netMana).apply(ability, game, getId(), cost)) {
+ continue;
+ }
if (activateAbility(manaAbility, game)) {
return true;
}
@@ -1326,10 +1336,13 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
}
// then pay hybrid
- for (ActivatedManaAbilityImpl manaAbility : mageObject.getAbilities().getAvailableActivatedManaAbilities(Zone.BATTLEFIELD, game)) {
+ for (ActivatedManaAbilityImpl manaAbility : getManaAbilitiesSortedByManaCount(mageObject, game)) {
if (cost instanceof HybridManaCost) {
for (Mana netMana : manaAbility.getNetMana(game)) {
- if (cost.testPay(netMana) || spendAnyManaId != null) {
+ if (cost.testPay(netMana) || permittingObject != null) {
+ if (netMana instanceof ConditionalMana && !((ConditionalMana) netMana).apply(ability, game, getId(), cost)) {
+ continue;
+ }
if (activateAbility(manaAbility, game)) {
return true;
}
@@ -1338,10 +1351,13 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
}
// then pay mono hybrid
- for (ActivatedManaAbilityImpl manaAbility : mageObject.getAbilities().getAvailableActivatedManaAbilities(Zone.BATTLEFIELD, game)) {
+ for (ActivatedManaAbilityImpl manaAbility : getManaAbilitiesSortedByManaCount(mageObject, game)) {
if (cost instanceof MonoHybridManaCost) {
for (Mana netMana : manaAbility.getNetMana(game)) {
- if (cost.testPay(netMana) || spendAnyManaId != null) {
+ if (cost.testPay(netMana) || permittingObject != null) {
+ if (netMana instanceof ConditionalMana && !((ConditionalMana) netMana).apply(ability, game, getId(), cost)) {
+ continue;
+ }
if (activateAbility(manaAbility, game)) {
return true;
}
@@ -1350,10 +1366,13 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
}
// pay colorless
- for (ActivatedManaAbilityImpl manaAbility : mageObject.getAbilities().getAvailableActivatedManaAbilities(Zone.BATTLEFIELD, game)) {
+ for (ActivatedManaAbilityImpl manaAbility : getManaAbilitiesSortedByManaCount(mageObject, game)) {
if (cost instanceof ColorlessManaCost) {
for (Mana netMana : manaAbility.getNetMana(game)) {
- if (cost.testPay(netMana) || spendAnyManaId != null) {
+ if (cost.testPay(netMana) || permittingObject != null) {
+ if (netMana instanceof ConditionalMana && !((ConditionalMana) netMana).apply(ability, game, getId(), cost)) {
+ continue;
+ }
if (activateAbility(manaAbility, game)) {
return true;
}
@@ -1362,10 +1381,13 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
}
// finally pay generic
- for (ActivatedManaAbilityImpl manaAbility : mageObject.getAbilities().getAvailableActivatedManaAbilities(Zone.BATTLEFIELD, game)) {
+ for (ActivatedManaAbilityImpl manaAbility : getManaAbilitiesSortedByManaCount(mageObject, game)) {
if (cost instanceof GenericManaCost) {
for (Mana netMana : manaAbility.getNetMana(game)) {
- if (cost.testPay(netMana) || spendAnyManaId != null) {
+ if (cost.testPay(netMana) || permittingObject != null) {
+ if (netMana instanceof ConditionalMana && !((ConditionalMana) netMana).apply(ability, game, getId(), cost)) {
+ continue;
+ }
if (activateAbility(manaAbility, game)) {
return true;
}
@@ -1376,13 +1398,39 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
// pay phyrexian life costs
if (cost instanceof PhyrexianManaCost) {
- if (cost.pay(null, game, null, playerId, false, null) || spendAnyManaId != null) {
+ if (cost.pay(null, game, null, playerId, false, null) || permittingObject != null) {
return true;
}
}
return false;
}
+ private Abilities getManaAbilitiesSortedByManaCount(MageObject mageObject, final Game game) {
+ Abilities manaAbilities = mageObject.getAbilities().getAvailableActivatedManaAbilities(Zone.BATTLEFIELD, game);
+ if (manaAbilities.size() > 1) {
+ // Sort mana abilities by numbver of produced manas, to use ability first that produces most mana (maybe also conditional if possible)
+ Collections.sort(manaAbilities, new Comparator() {
+ @Override
+ public int compare(ActivatedManaAbilityImpl a1, ActivatedManaAbilityImpl a2) {
+ int a1Max = 0;
+ for (Mana netMana : a1.getNetMana(game)) {
+ if (netMana.count() > a1Max) {
+ a1Max = netMana.count();
+ }
+ }
+ int a2Max = 0;
+ for (Mana netMana : a2.getNetMana(game)) {
+ if (netMana.count() > a2Max) {
+ a2Max = netMana.count();
+ }
+ }
+ return a2Max - a1Max;
+ }
+ });
+ }
+ return manaAbilities;
+ }
+
/**
*
* returns a list of Permanents that produce mana sorted by the number of
@@ -2339,7 +2387,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
private void playRemoval(List creatures, Game game) {
for (UUID creatureId : creatures) {
for (Card card : this.playableInstant) {
- if (card.getSpellAbility().canActivate(playerId, game)) {
+ if (card.getSpellAbility().canActivate(playerId, game).canActivate()) {
for (Effect effect : card.getSpellAbility().getEffects()) {
if (effect.getOutcome() == Outcome.DestroyPermanent || effect.getOutcome() == Outcome.ReturnToHand) {
if (card.getSpellAbility().getTargets().get(0).canTarget(creatureId, card.getSpellAbility(), game)) {
@@ -2358,7 +2406,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
for (UUID creatureId : creatures) {
Permanent creature = game.getPermanent(creatureId);
for (Card card : this.playableInstant) {
- if (card.getSpellAbility().canActivate(playerId, game)) {
+ if (card.getSpellAbility().canActivate(playerId, game).canActivate()) {
for (Effect effect : card.getSpellAbility().getEffects()) {
if (effect instanceof DamageTargetEffect) {
if (card.getSpellAbility().getTargets().get(0).canTarget(creatureId, card.getSpellAbility(), game)) {
diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml b/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml
index 735dc58d654..bacd02de913 100644
--- a/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-player-ai-mcts
diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml b/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml
index 4fb64e99199..a8c6839a985 100644
--- a/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-player-aiminimax
diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java
index df9e389d031..cc54d690120 100644
--- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java
+++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java
@@ -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.player.ai;
import java.util.UUID;
-import mage.constants.CardType;
-import mage.constants.Zone;
import mage.abilities.ActivatedAbility;
import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.abilities.mana.ActivatedManaAbilityImpl;
+import mage.constants.CardType;
+import mage.constants.Zone;
import mage.counters.BoostCounter;
import mage.counters.Counter;
import mage.counters.CounterType;
@@ -71,18 +70,20 @@ public final class GameStateEvaluator {
Player player = game.getPlayer(playerId);
Player opponent = game.getPlayer(game.getOpponents(playerId).iterator().next());
if (game.checkIfGameIsOver()) {
- if (player.hasLost() || opponent.hasWon())
+ if (player.hasLost() || opponent.hasWon()) {
return LOSE_SCORE;
- if (opponent.hasLost() || player.hasWon())
+ }
+ if (opponent.hasLost() || player.hasWon()) {
return WIN_SCORE;
+ }
}
int lifeScore = (player.getLife() - opponent.getLife()) * LIFE_FACTOR;
int poisonScore = (opponent.getCounters().getCount(CounterType.POISON) - player.getCounters().getCount(CounterType.POISON)) * LIFE_FACTOR * 2;
int permanentScore = 0;
- for (Permanent permanent: game.getBattlefield().getAllActivePermanents(playerId)) {
+ for (Permanent permanent : game.getBattlefield().getAllActivePermanents(playerId)) {
permanentScore += evaluatePermanent(permanent, game, ignoreTapped);
}
- for (Permanent permanent: game.getBattlefield().getAllActivePermanents(opponent.getId())) {
+ for (Permanent permanent : game.getBattlefield().getAllActivePermanents(opponent.getId())) {
permanentScore -= evaluatePermanent(permanent, game, ignoreTapped);
}
permanentScore *= PERMANENT_FACTOR;
@@ -92,26 +93,29 @@ public final class GameStateEvaluator {
handScore *= HAND_FACTOR;
int score = lifeScore + poisonScore + permanentScore + handScore;
- if (logger.isDebugEnabled())
+ if (logger.isDebugEnabled()) {
logger.debug("game state for player " + player.getName() + " evaluated to- lifeScore:" + lifeScore + " permanentScore:" + permanentScore + " handScore:" + handScore + " total:" + score);
+ }
return score;
}
public static int evaluatePermanent(Permanent permanent, Game game, boolean ignoreTapped) {
int value = 0;
- if (ignoreTapped)
+ if (ignoreTapped) {
value = 5;
- else
- value = permanent.isTapped()?4:5;
+ } else {
+ value = permanent.isTapped() ? 4 : 5;
+ }
if (permanent.getCardType().contains(CardType.CREATURE)) {
value += evaluateCreature(permanent, game) * CREATURE_FACTOR;
}
value += permanent.getAbilities().getActivatedManaAbilities(Zone.BATTLEFIELD).size();
- for (ActivatedAbility ability: permanent.getAbilities().getActivatedAbilities(Zone.BATTLEFIELD)) {
- if (!(ability instanceof ActivatedManaAbilityImpl) && ability.canActivate(ability.getControllerId(), game))
+ for (ActivatedAbility ability : permanent.getAbilities().getActivatedAbilities(Zone.BATTLEFIELD)) {
+ if (!(ability instanceof ActivatedManaAbilityImpl) && ability.canActivate(ability.getControllerId(), game).canActivate()) {
value += ability.getEffects().size();
+ }
}
- for (Counter counter: permanent.getCounters(game).values()) {
+ for (Counter counter : permanent.getCounters(game).values()) {
if (!(counter instanceof BoostCounter)) {
value += counter.getCount();
}
@@ -133,9 +137,9 @@ public final class GameStateEvaluator {
// value += 2;
value += creature.getAbilities().getEvasionAbilities().size();
value += creature.getAbilities().getProtectionAbilities().size();
- value += creature.getAbilities().containsKey(FirstStrikeAbility.getInstance().getId())?1:0;
- value += creature.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId())?2:0;
- value += creature.getAbilities().containsKey(TrampleAbility.getInstance().getId())?1:0;
+ value += creature.getAbilities().containsKey(FirstStrikeAbility.getInstance().getId()) ? 1 : 0;
+ value += creature.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId()) ? 2 : 0;
+ value += creature.getAbilities().containsKey(TrampleAbility.getInstance().getId()) ? 1 : 0;
return value;
}
diff --git a/Mage.Server.Plugins/Mage.Player.Human/pom.xml b/Mage.Server.Plugins/Mage.Player.Human/pom.xml
index ef1db9b569c..633eae49c08 100644
--- a/Mage.Server.Plugins/Mage.Player.Human/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.Human/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-player-human
diff --git a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml
index ad331b12cc6..c51329ccda2 100644
--- a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml
+++ b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-tournament-boosterdraft
diff --git a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/AdamStyborskisPauperCube.java b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/AdamStyborskisPauperCube.java
index 4ef11e8d506..ed73970067c 100644
--- a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/AdamStyborskisPauperCube.java
+++ b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/AdamStyborskisPauperCube.java
@@ -37,15 +37,15 @@ public class AdamStyborskisPauperCube extends DraftCube {
public AdamStyborskisPauperCube() {
super("Adam Styborkski's Pauper Cube"); // https://docs.google.com/spreadsheets/d/12iQhC4bHqFW7hEWxPBjyC8yBDehFZ0_4DkqzyA8EL3o/edit#gid=0
- // last updated with Hour of Devastation, Iconic Masters and Ixalan 10/18/17
+ // last updated with Dominaria 5/1/18
+ cubeCards.add(new CardIdentity("Academy Journeymage", ""));
cubeCards.add(new CardIdentity("Act of Treason", ""));
cubeCards.add(new CardIdentity("Adventuring Gear", ""));
+ cubeCards.add(new CardIdentity("Aerie Bowmasters", ""));
cubeCards.add(new CardIdentity("Aerie Ouphes", ""));
cubeCards.add(new CardIdentity("Aether Adept", ""));
cubeCards.add(new CardIdentity("Aethersnipe", ""));
cubeCards.add(new CardIdentity("Agony Warp", ""));
- cubeCards.add(new CardIdentity("Aim High", ""));
- cubeCards.add(new CardIdentity("Ambuscade", ""));
cubeCards.add(new CardIdentity("Ambush Viper", ""));
cubeCards.add(new CardIdentity("Angelic Purge", ""));
cubeCards.add(new CardIdentity("Arachnus Web", ""));
@@ -61,7 +61,7 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Aven Riftwatcher", ""));
cubeCards.add(new CardIdentity("Aven Surveyor", ""));
cubeCards.add(new CardIdentity("Azorius Guildgate", ""));
- cubeCards.add(new CardIdentity("Baleful Eidolon", ""));
+ cubeCards.add(new CardIdentity("Baloth Gorger", ""));
cubeCards.add(new CardIdentity("Barbed Lightning", ""));
cubeCards.add(new CardIdentity("Basking Rootwalla", ""));
cubeCards.add(new CardIdentity("Battle Screech", ""));
@@ -72,33 +72,31 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Blazing Torch", ""));
cubeCards.add(new CardIdentity("Blightning", ""));
cubeCards.add(new CardIdentity("Blinding Beam", ""));
+ cubeCards.add(new CardIdentity("Blink of an Eye", ""));
cubeCards.add(new CardIdentity("Bloodfell Caves", ""));
cubeCards.add(new CardIdentity("Blossoming Sands", ""));
cubeCards.add(new CardIdentity("Bonded Construct", ""));
cubeCards.add(new CardIdentity("Bonds of Faith", ""));
cubeCards.add(new CardIdentity("Bonesplitter", ""));
- cubeCards.add(new CardIdentity("Borderland Marauder", ""));
cubeCards.add(new CardIdentity("Boros Guildgate", ""));
cubeCards.add(new CardIdentity("Borrowed Grace", ""));
cubeCards.add(new CardIdentity("Branching Bolt", ""));
- cubeCards.add(new CardIdentity("Brazen Buccaneers", ""));
cubeCards.add(new CardIdentity("Brazen Wolves", ""));
cubeCards.add(new CardIdentity("Burning-Tree Emissary", ""));
cubeCards.add(new CardIdentity("Burst Lightning", ""));
cubeCards.add(new CardIdentity("Butcher Ghoul", ""));
- cubeCards.add(new CardIdentity("Byway Courier", ""));
cubeCards.add(new CardIdentity("Cage of Hands", ""));
cubeCards.add(new CardIdentity("Calcite Snapper", ""));
cubeCards.add(new CardIdentity("Call of the Conclave", ""));
+ cubeCards.add(new CardIdentity("Call the Cavalry", ""));
cubeCards.add(new CardIdentity("Capsize", ""));
cubeCards.add(new CardIdentity("Carnivorous Death-Parrot", ""));
cubeCards.add(new CardIdentity("Cartouche of Strength", ""));
- cubeCards.add(new CardIdentity("Cathodion", ""));
cubeCards.add(new CardIdentity("Cavern Harpy", ""));
cubeCards.add(new CardIdentity("Centaur Healer", ""));
cubeCards.add(new CardIdentity("Chain Lightning", ""));
cubeCards.add(new CardIdentity("Chainer's Edict", ""));
- cubeCards.add(new CardIdentity("Chatter of the Squirrel", ""));
+ cubeCards.add(new CardIdentity("Chivalrous Chevalier", ""));
cubeCards.add(new CardIdentity("Cinder Barrens", ""));
cubeCards.add(new CardIdentity("Citanul Woodreaders", ""));
cubeCards.add(new CardIdentity("Claustrophobia", ""));
@@ -108,13 +106,14 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Coalition Honor Guard", ""));
cubeCards.add(new CardIdentity("Cogwork Librarian", ""));
cubeCards.add(new CardIdentity("Colossal Might", ""));
+ cubeCards.add(new CardIdentity("Common Iguana", ""));
cubeCards.add(new CardIdentity("Compulsive Research", ""));
cubeCards.add(new CardIdentity("Compulsory Rest", ""));
cubeCards.add(new CardIdentity("Consume Strength", ""));
cubeCards.add(new CardIdentity("Corrupted Zendikon", ""));
cubeCards.add(new CardIdentity("Counterspell", ""));
+ cubeCards.add(new CardIdentity("Court Hussar", ""));
cubeCards.add(new CardIdentity("Crippling Fatigue", ""));
- cubeCards.add(new CardIdentity("Crow of Dark Tidings", ""));
cubeCards.add(new CardIdentity("Crypt Rats", ""));
cubeCards.add(new CardIdentity("Crystallization", ""));
cubeCards.add(new CardIdentity("Cunning Strike", ""));
@@ -126,24 +125,23 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Dead Weight", ""));
cubeCards.add(new CardIdentity("Deadeye Tormentor", ""));
cubeCards.add(new CardIdentity("Death Denied", ""));
+ cubeCards.add(new CardIdentity("Deathbloom Thallid", ""));
cubeCards.add(new CardIdentity("Deep Analysis", ""));
cubeCards.add(new CardIdentity("Deprive", ""));
cubeCards.add(new CardIdentity("Depths of Desire", ""));
cubeCards.add(new CardIdentity("Deputy of Acquittals", ""));
cubeCards.add(new CardIdentity("Desert", ""));
- cubeCards.add(new CardIdentity("Desperate Sentry", ""));
cubeCards.add(new CardIdentity("Devour Flesh", ""));
cubeCards.add(new CardIdentity("Diabolic Edict", ""));
cubeCards.add(new CardIdentity("Dimir Guildgate", ""));
cubeCards.add(new CardIdentity("Dinrova Horror", ""));
- cubeCards.add(new CardIdentity("Dire Fleet Hoarder", ""));
cubeCards.add(new CardIdentity("Disfigure", ""));
cubeCards.add(new CardIdentity("Dismal Backwater", ""));
cubeCards.add(new CardIdentity("Disowned Ancestor", ""));
cubeCards.add(new CardIdentity("Doom Blade", ""));
cubeCards.add(new CardIdentity("Doomed Traveler", ""));
- cubeCards.add(new CardIdentity("Drag Under", ""));
cubeCards.add(new CardIdentity("Dragon Fodder", ""));
+ cubeCards.add(new CardIdentity("Dusk Legion Zealot", ""));
cubeCards.add(new CardIdentity("Dynacharge", ""));
cubeCards.add(new CardIdentity("Eager Construct", ""));
cubeCards.add(new CardIdentity("Eldrazi Devastator", ""));
@@ -154,12 +152,13 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Emperor Crocodile", ""));
cubeCards.add(new CardIdentity("Epic Confrontation", ""));
cubeCards.add(new CardIdentity("Errant Ephemeron", ""));
- cubeCards.add(new CardIdentity("Esper Cormorants", ""));
cubeCards.add(new CardIdentity("Evincar's Justice", ""));
cubeCards.add(new CardIdentity("Evolving Wilds", ""));
+ cubeCards.add(new CardIdentity("Extremely Slow Zombie (C)", ""));
cubeCards.add(new CardIdentity("Faceless Butcher", ""));
cubeCards.add(new CardIdentity("Faith's Fetters", ""));
cubeCards.add(new CardIdentity("Falkenrath Noble", ""));
+ cubeCards.add(new CardIdentity("Fanatical Firebrand", ""));
cubeCards.add(new CardIdentity("Feeling of Dread", ""));
cubeCards.add(new CardIdentity("Fervent Cathar", ""));
cubeCards.add(new CardIdentity("Firebolt", ""));
@@ -170,25 +169,27 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Forsaken Sanctuary", ""));
cubeCards.add(new CardIdentity("Fortify", ""));
cubeCards.add(new CardIdentity("Foul Orchard", ""));
+ cubeCards.add(new CardIdentity("Frenzied Goblin", ""));
+ cubeCards.add(new CardIdentity("Frilled Deathspitter", ""));
cubeCards.add(new CardIdentity("Frilled Oculus", ""));
cubeCards.add(new CardIdentity("Frostburn Weird", ""));
+ cubeCards.add(new CardIdentity("Fungal Infection", ""));
+ cubeCards.add(new CardIdentity("GO TO JAIL", ""));
cubeCards.add(new CardIdentity("Gathan Raiders", ""));
cubeCards.add(new CardIdentity("Gather the Townsfolk", ""));
- cubeCards.add(new CardIdentity("Ghastly Demise", ""));
cubeCards.add(new CardIdentity("Ghirapur Gearcrafter", ""));
- cubeCards.add(new CardIdentity("Ghitu Slinger", ""));
cubeCards.add(new CardIdentity("Giant Growth", ""));
cubeCards.add(new CardIdentity("Gideon's Lawkeeper", ""));
cubeCards.add(new CardIdentity("Glint-Sleeve Artisan", ""));
cubeCards.add(new CardIdentity("Gnawing Zombie", ""));
cubeCards.add(new CardIdentity("Goblin Freerunner", ""));
cubeCards.add(new CardIdentity("Goblin Heelcutter", ""));
+ cubeCards.add(new CardIdentity("Goblin Trailblazer", ""));
cubeCards.add(new CardIdentity("Gods Willing", ""));
cubeCards.add(new CardIdentity("Goldmeadow Harrier", ""));
cubeCards.add(new CardIdentity("Golgari Guildgate", ""));
cubeCards.add(new CardIdentity("Gravedigger", ""));
cubeCards.add(new CardIdentity("Gray Merchant of Asphodel", ""));
- cubeCards.add(new CardIdentity("Grazing Whiptail", ""));
cubeCards.add(new CardIdentity("Grim Contest", ""));
cubeCards.add(new CardIdentity("Grisly Salvage", ""));
cubeCards.add(new CardIdentity("Grixis Slavedriver", ""));
@@ -204,9 +205,8 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Highland Lake", ""));
cubeCards.add(new CardIdentity("Hissing Iguanar", ""));
cubeCards.add(new CardIdentity("Hooting Mandrills", ""));
- cubeCards.add(new CardIdentity("Humble", ""));
+ cubeCards.add(new CardIdentity("Hordeling Outburst", ""));
cubeCards.add(new CardIdentity("Imperiosaur", ""));
- cubeCards.add(new CardIdentity("Incinerate", ""));
cubeCards.add(new CardIdentity("Inner-Flame Acolyte", ""));
cubeCards.add(new CardIdentity("Insolent Neonate", ""));
cubeCards.add(new CardIdentity("Into the Roil", ""));
@@ -214,17 +214,20 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Ivy Elemental", ""));
cubeCards.add(new CardIdentity("Izzet Chronarch", ""));
cubeCards.add(new CardIdentity("Izzet Guildgate", ""));
+ cubeCards.add(new CardIdentity("Jackal Pup", ""));
cubeCards.add(new CardIdentity("Jilt", ""));
cubeCards.add(new CardIdentity("Journey to Nowhere", ""));
cubeCards.add(new CardIdentity("Jungle Hollow", ""));
- cubeCards.add(new CardIdentity("Kabuto Moth", ""));
+ cubeCards.add(new CardIdentity("Jungleborn Pioneer", ""));
cubeCards.add(new CardIdentity("Keldon Marauders", ""));
+ cubeCards.add(new CardIdentity("Keldon Overseer", ""));
+ cubeCards.add(new CardIdentity("Keldon Raider", ""));
cubeCards.add(new CardIdentity("Kingpin's Pet", ""));
+ cubeCards.add(new CardIdentity("Kitesail Corsair", ""));
cubeCards.add(new CardIdentity("Kor Skyfisher", ""));
cubeCards.add(new CardIdentity("Kozilek's Channeler", ""));
cubeCards.add(new CardIdentity("Krenko's Command", ""));
cubeCards.add(new CardIdentity("Krosan Tusker", ""));
- cubeCards.add(new CardIdentity("Kruin Striker", ""));
cubeCards.add(new CardIdentity("Lash Out", ""));
cubeCards.add(new CardIdentity("Last Gasp", ""));
cubeCards.add(new CardIdentity("Leave in the Dust", ""));
@@ -232,16 +235,15 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Lifecraft Cavalry", ""));
cubeCards.add(new CardIdentity("Lightning Bolt", ""));
cubeCards.add(new CardIdentity("Liliana's Specter", ""));
- cubeCards.add(new CardIdentity("Lotus Path Djinn", ""));
cubeCards.add(new CardIdentity("Loyal Pegasus", ""));
cubeCards.add(new CardIdentity("Lurking Automaton", ""));
cubeCards.add(new CardIdentity("Magma Jet", ""));
cubeCards.add(new CardIdentity("Makeshift Mauler", ""));
cubeCards.add(new CardIdentity("Man-o'-War", ""));
cubeCards.add(new CardIdentity("Mana Leak", ""));
- cubeCards.add(new CardIdentity("Manticore of the Gauntlet", ""));
cubeCards.add(new CardIdentity("Mardu Hordechief", ""));
cubeCards.add(new CardIdentity("Mardu Skullhunter", ""));
+ cubeCards.add(new CardIdentity("Martyr of Dusk", ""));
cubeCards.add(new CardIdentity("Maul Splicer", ""));
cubeCards.add(new CardIdentity("Maze of Ith", ""));
cubeCards.add(new CardIdentity("Meandering River", ""));
@@ -263,7 +265,6 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Mulldrifter", ""));
cubeCards.add(new CardIdentity("Nameless Inversion", ""));
cubeCards.add(new CardIdentity("Narcolepsy", ""));
- cubeCards.add(new CardIdentity("Necromancer's Assistant", ""));
cubeCards.add(new CardIdentity("Nessian Asp", ""));
cubeCards.add(new CardIdentity("Nest Robber", ""));
cubeCards.add(new CardIdentity("Nezumi Cutthroat", ""));
@@ -272,25 +273,22 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Ninja of the Deep Hours", ""));
cubeCards.add(new CardIdentity("Oblivion Ring", ""));
cubeCards.add(new CardIdentity("Oona's Grace", ""));
+ cubeCards.add(new CardIdentity("Ordinary Pony", ""));
cubeCards.add(new CardIdentity("Orzhov Guildgate", ""));
cubeCards.add(new CardIdentity("Otherworldly Journey", ""));
+ cubeCards.add(new CardIdentity("Overgrown Armasaur", ""));
cubeCards.add(new CardIdentity("Pacifism", ""));
cubeCards.add(new CardIdentity("Paladin of the Bloodstained", ""));
cubeCards.add(new CardIdentity("Peema Outrider", ""));
cubeCards.add(new CardIdentity("Penumbra Spider", ""));
- cubeCards.add(new CardIdentity("Peregrine Drake", ""));
cubeCards.add(new CardIdentity("Perilous Myr", ""));
cubeCards.add(new CardIdentity("Pestermite", ""));
cubeCards.add(new CardIdentity("Pestilence", ""));
- cubeCards.add(new CardIdentity("Phantom Nomad", ""));
- cubeCards.add(new CardIdentity("Phantom Tiger", ""));
- cubeCards.add(new CardIdentity("Pharika's Chosen", ""));
cubeCards.add(new CardIdentity("Phyrexian Rager", ""));
cubeCards.add(new CardIdentity("Pillory of the Sleepless", ""));
cubeCards.add(new CardIdentity("Pit Fight", ""));
cubeCards.add(new CardIdentity("Pit Keeper", ""));
cubeCards.add(new CardIdentity("Plated Geopede", ""));
- cubeCards.add(new CardIdentity("Plover Knights", ""));
cubeCards.add(new CardIdentity("Porcelain Legionnaire", ""));
cubeCards.add(new CardIdentity("Pounce", ""));
cubeCards.add(new CardIdentity("Predatory Nightstalker", ""));
@@ -321,16 +319,18 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Renegade Freighter", ""));
cubeCards.add(new CardIdentity("Rift Bolt", ""));
cubeCards.add(new CardIdentity("Rishadan Airship", ""));
- cubeCards.add(new CardIdentity("Ronin Houndmaster", ""));
cubeCards.add(new CardIdentity("Rugged Highlands", ""));
cubeCards.add(new CardIdentity("Runed Servitor", ""));
cubeCards.add(new CardIdentity("Rushing River", ""));
+ cubeCards.add(new CardIdentity("Ruthless Ripper", ""));
cubeCards.add(new CardIdentity("Sailor of Means", ""));
cubeCards.add(new CardIdentity("Sakura-Tribe Elder", ""));
cubeCards.add(new CardIdentity("Sandsteppe Outcast", ""));
cubeCards.add(new CardIdentity("Sangrite Backlash", ""));
+ cubeCards.add(new CardIdentity("Saproling Migration", ""));
cubeCards.add(new CardIdentity("Sarkhan's Rage", ""));
cubeCards.add(new CardIdentity("Savage Punch", ""));
+ cubeCards.add(new CardIdentity("Savannah Lions", ""));
cubeCards.add(new CardIdentity("Scatter the Seeds", ""));
cubeCards.add(new CardIdentity("Scion Summoner", ""));
cubeCards.add(new CardIdentity("Scion of the Wild", ""));
@@ -343,9 +343,10 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Seeker of Insight", ""));
cubeCards.add(new CardIdentity("Seeker of the Way", ""));
cubeCards.add(new CardIdentity("Selesnya Guildgate", ""));
- cubeCards.add(new CardIdentity("Sentinel Spider", ""));
+ cubeCards.add(new CardIdentity("Selfie Preservation", ""));
cubeCards.add(new CardIdentity("Separatist Voidmage", ""));
cubeCards.add(new CardIdentity("Seraph of Dawn", ""));
+ cubeCards.add(new CardIdentity("Sergeant-at-Arms", ""));
cubeCards.add(new CardIdentity("Serrated Arrows", ""));
cubeCards.add(new CardIdentity("Shaper Parasite", ""));
cubeCards.add(new CardIdentity("Sheer Drop", ""));
@@ -360,11 +361,12 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Snakeform", ""));
cubeCards.add(new CardIdentity("Snap", ""));
cubeCards.add(new CardIdentity("Soul Manipulation", ""));
+ cubeCards.add(new CardIdentity("Soul of the Rapids", ""));
cubeCards.add(new CardIdentity("Soulstinger", ""));
+ cubeCards.add(new CardIdentity("Sparring Construct", ""));
cubeCards.add(new CardIdentity("Sphere of the Suns", ""));
cubeCards.add(new CardIdentity("Spike Jester", ""));
- cubeCards.add(new CardIdentity("Spined Thopter", ""));
- cubeCards.add(new CardIdentity("Splatter Thug", ""));
+ cubeCards.add(new CardIdentity("Squirrel Dealer", ""));
cubeCards.add(new CardIdentity("Staggershock", ""));
cubeCards.add(new CardIdentity("Star Compass", ""));
cubeCards.add(new CardIdentity("Stitched Drake", ""));
@@ -372,20 +374,19 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Storm Fleet Pyromancer", ""));
cubeCards.add(new CardIdentity("Stormfront Pegasus", ""));
cubeCards.add(new CardIdentity("Stormscape Apprentice", ""));
- cubeCards.add(new CardIdentity("Strip Mine", ""));
+ cubeCards.add(new CardIdentity("Strip Min", ""));
cubeCards.add(new CardIdentity("Striped Riverwinder", ""));
+ cubeCards.add(new CardIdentity("Stronghold Confessor", ""));
cubeCards.add(new CardIdentity("Submerged Boneyard", ""));
cubeCards.add(new CardIdentity("Sultai Scavenger", ""));
cubeCards.add(new CardIdentity("Suppression Bonds", ""));
cubeCards.add(new CardIdentity("Swiftwater Cliffs", ""));
cubeCards.add(new CardIdentity("Sylvan Might", ""));
cubeCards.add(new CardIdentity("Sylvok Lifestaff", ""));
- cubeCards.add(new CardIdentity("Tah-Crop Elite", ""));
cubeCards.add(new CardIdentity("Temporal Isolation", ""));
cubeCards.add(new CardIdentity("Tenement Crasher", ""));
cubeCards.add(new CardIdentity("Terminate", ""));
cubeCards.add(new CardIdentity("Terramorphic Expanse", ""));
- cubeCards.add(new CardIdentity("Test of Faith", ""));
cubeCards.add(new CardIdentity("Thorn of the Black Rose", ""));
cubeCards.add(new CardIdentity("Thornweald Archer", ""));
cubeCards.add(new CardIdentity("Thornwood Falls", ""));
@@ -393,7 +394,6 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Thraben Inspector", ""));
cubeCards.add(new CardIdentity("Thrill-Kill Assassin", ""));
cubeCards.add(new CardIdentity("Thundering Giant", ""));
- cubeCards.add(new CardIdentity("Thundering Tanadon", ""));
cubeCards.add(new CardIdentity("Thunderous Wrath", ""));
cubeCards.add(new CardIdentity("Timber Gorge", ""));
cubeCards.add(new CardIdentity("Time to Feed", ""));
@@ -408,7 +408,6 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Typhoid Rats", ""));
cubeCards.add(new CardIdentity("Ulamog's Crusher", ""));
cubeCards.add(new CardIdentity("Ulvenwald Captive", ""));
- cubeCards.add(new CardIdentity("Undying Rage", ""));
cubeCards.add(new CardIdentity("Unearth", ""));
cubeCards.add(new CardIdentity("Unmake", ""));
cubeCards.add(new CardIdentity("Vampire Interloper", ""));
@@ -427,6 +426,7 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Warped Landscape", ""));
cubeCards.add(new CardIdentity("Warren Pilferers", ""));
cubeCards.add(new CardIdentity("Wasteland Scorpion", ""));
+ cubeCards.add(new CardIdentity("Waterknot", ""));
cubeCards.add(new CardIdentity("Wayfarer's Bauble", ""));
cubeCards.add(new CardIdentity("Werebear", ""));
cubeCards.add(new CardIdentity("Whitemane Lion", ""));
@@ -436,13 +436,13 @@ public class AdamStyborskisPauperCube extends DraftCube {
cubeCards.add(new CardIdentity("Wildsize", ""));
cubeCards.add(new CardIdentity("Will-Forged Golem", ""));
cubeCards.add(new CardIdentity("Wind-Scarred Crag", ""));
- cubeCards.add(new CardIdentity("Winds of Rebuke", ""));
cubeCards.add(new CardIdentity("Winged Coatl", ""));
cubeCards.add(new CardIdentity("Wojek Halberdiers", ""));
cubeCards.add(new CardIdentity("Woodland Stream", ""));
cubeCards.add(new CardIdentity("Wrecking Ball", ""));
cubeCards.add(new CardIdentity("Wretched Gryff", ""));
cubeCards.add(new CardIdentity("Yavimaya Elder", ""));
+ cubeCards.add(new CardIdentity("Yavimaya Sapherd", ""));
cubeCards.add(new CardIdentity("Yotian Soldier", ""));
}
}
diff --git a/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml b/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml
index c72e49e940c..9d7a35c808e 100644
--- a/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml
+++ b/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-tournament-constructed
diff --git a/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml b/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml
index ff27f07fd6d..1ee73bd18e6 100644
--- a/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml
+++ b/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-server-plugins
- 1.4.29
+ 1.4.30
mage-tournament-sealed
diff --git a/Mage.Server.Plugins/pom.xml b/Mage.Server.Plugins/pom.xml
index 0cab2b380b2..46611f0d337 100644
--- a/Mage.Server.Plugins/pom.xml
+++ b/Mage.Server.Plugins/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-root
- 1.4.29
+ 1.4.30
mage-server-plugins
diff --git a/Mage.Server/config/config.xml b/Mage.Server/config/config.xml
index 898e9475b48..01a85130846 100644
--- a/Mage.Server/config/config.xml
+++ b/Mage.Server/config/config.xml
@@ -1,187 +1,186 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Mage.Server/pom.xml b/Mage.Server/pom.xml
index 375392ae295..3f11bd456b1 100644
--- a/Mage.Server/pom.xml
+++ b/Mage.Server/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-root
- 1.4.29
+ 1.4.30
mage-server
diff --git a/Mage.Server/release/config/config.xml b/Mage.Server/release/config/config.xml
index 153d1f24f3e..8a09e760ba9 100644
--- a/Mage.Server/release/config/config.xml
+++ b/Mage.Server/release/config/config.xml
@@ -142,10 +142,13 @@
-
-
+
+
+
+
+
diff --git a/Mage.Server/src/main/java/mage/server/TableController.java b/Mage.Server/src/main/java/mage/server/TableController.java
index 6464095de5f..4275592c565 100644
--- a/Mage.Server/src/main/java/mage/server/TableController.java
+++ b/Mage.Server/src/main/java/mage/server/TableController.java
@@ -100,7 +100,7 @@ public class TableController {
} else {
controllerName = "System";
}
- table = new Table(roomId, options.getGameType(), options.getName(), controllerName, DeckValidatorFactory.instance.createDeckValidator(options.getDeckType()),
+ table = new Table(roomId, options.getGameType(), options.getName(), controllerName, DeckValidatorFactory.instance.createDeckValidator(options.getDeckType()),
options.getPlayerTypes(), TableRecorderImpl.instance, match, options.getBannedUsers(), options.isPlaneChase());
chatId = ChatManager.instance.createChatSession("Match Table " + table.getId());
init();
@@ -120,7 +120,7 @@ public class TableController {
} else {
controllerName = "System";
}
- table = new Table(roomId, options.getTournamentType(), options.getName(), controllerName, DeckValidatorFactory.instance.createDeckValidator(options.getMatchOptions().getDeckType()),
+ table = new Table(roomId, options.getTournamentType(), options.getName(), controllerName, DeckValidatorFactory.instance.createDeckValidator(options.getMatchOptions().getDeckType()),
options.getPlayerTypes(), TableRecorderImpl.instance, tournament, options.getMatchOptions().getBannedUsers(), options.isPlaneChase());
chatId = ChatManager.instance.createChatSession("Tourn. table " + table.getId());
}
@@ -486,7 +486,11 @@ public class TableController {
if (userPlayerMap.get(userId) != null) {
return false;
}
- return UserManager.instance.getUser(userId).get().ccWatchGame(match.getGame().getId());
+ Optional _user = UserManager.instance.getUser(userId);
+ if (!_user.isPresent()) {
+ return false;
+ }
+ return _user.get().ccWatchGame(match.getGame().getId());
}
}
diff --git a/Mage.Sets/pom.xml b/Mage.Sets/pom.xml
index 1410214a162..8beaf1af446 100644
--- a/Mage.Sets/pom.xml
+++ b/Mage.Sets/pom.xml
@@ -7,7 +7,7 @@
org.mage
mage-root
- 1.4.29
+ 1.4.30
org.mage
diff --git a/Mage.Sets/src/mage/cards/a/AAT1.java b/Mage.Sets/src/mage/cards/a/AAT1.java
index 2a125ad0bc2..05df8033906 100644
--- a/Mage.Sets/src/mage/cards/a/AAT1.java
+++ b/Mage.Sets/src/mage/cards/a/AAT1.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class AAT1 extends CardImpl {
+public final class AAT1 extends CardImpl {
public AAT1(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/ATST.java b/Mage.Sets/src/mage/cards/a/ATST.java
index 973a5465b5b..4616157bd0c 100644
--- a/Mage.Sets/src/mage/cards/a/ATST.java
+++ b/Mage.Sets/src/mage/cards/a/ATST.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class ATST extends CardImpl {
+public final class ATST extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AWing.java b/Mage.Sets/src/mage/cards/a/AWing.java
index bbbb478f2b1..b5619bbc881 100644
--- a/Mage.Sets/src/mage/cards/a/AWing.java
+++ b/Mage.Sets/src/mage/cards/a/AWing.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author Styxo
*/
-public class AWing extends CardImpl {
+public final class AWing extends CardImpl {
public AWing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AbandonHope.java b/Mage.Sets/src/mage/cards/a/AbandonHope.java
index 18e70e3d9ae..d7bac2ea0eb 100644
--- a/Mage.Sets/src/mage/cards/a/AbandonHope.java
+++ b/Mage.Sets/src/mage/cards/a/AbandonHope.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class AbandonHope extends CardImpl {
+public final class AbandonHope extends CardImpl {
public AbandonHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AbandonReason.java b/Mage.Sets/src/mage/cards/a/AbandonReason.java
index ee4ce79c19d..9ce6b10cb3b 100644
--- a/Mage.Sets/src/mage/cards/a/AbandonReason.java
+++ b/Mage.Sets/src/mage/cards/a/AbandonReason.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AbandonReason extends CardImpl {
+public final class AbandonReason extends CardImpl {
public AbandonReason(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AbandonedOutpost.java b/Mage.Sets/src/mage/cards/a/AbandonedOutpost.java
index c6a7463475f..fd88890e79d 100644
--- a/Mage.Sets/src/mage/cards/a/AbandonedOutpost.java
+++ b/Mage.Sets/src/mage/cards/a/AbandonedOutpost.java
@@ -43,7 +43,7 @@ import mage.constants.CardType;
* @author cbt33
*/
-public class AbandonedOutpost extends CardImpl {
+public final class AbandonedOutpost extends CardImpl {
public AbandonedOutpost(UUID ownerId, CardSetInfo setInfo){
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/AbandonedSarcophagus.java b/Mage.Sets/src/mage/cards/a/AbandonedSarcophagus.java
index 02b7df4f4e4..e34deb97c12 100644
--- a/Mage.Sets/src/mage/cards/a/AbandonedSarcophagus.java
+++ b/Mage.Sets/src/mage/cards/a/AbandonedSarcophagus.java
@@ -62,7 +62,7 @@ import mage.watchers.Watcher;
*
* @author jeffwadsworth
*/
-public class AbandonedSarcophagus extends CardImpl {
+public final class AbandonedSarcophagus extends CardImpl {
public AbandonedSarcophagus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AbattoirGhoul.java b/Mage.Sets/src/mage/cards/a/AbattoirGhoul.java
index 3bb2dad8cb2..01c2b00fcf6 100644
--- a/Mage.Sets/src/mage/cards/a/AbattoirGhoul.java
+++ b/Mage.Sets/src/mage/cards/a/AbattoirGhoul.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Alvin
*/
-public class AbattoirGhoul extends CardImpl {
+public final class AbattoirGhoul extends CardImpl {
public AbattoirGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AbbeyGargoyles.java b/Mage.Sets/src/mage/cards/a/AbbeyGargoyles.java
index 9c41a980f7c..929d6594e45 100644
--- a/Mage.Sets/src/mage/cards/a/AbbeyGargoyles.java
+++ b/Mage.Sets/src/mage/cards/a/AbbeyGargoyles.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Sir-Speshkitty
*/
-public class AbbeyGargoyles extends CardImpl {
+public final class AbbeyGargoyles extends CardImpl {
public AbbeyGargoyles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AbbeyGriffin.java b/Mage.Sets/src/mage/cards/a/AbbeyGriffin.java
index d695818ef95..5680e27e524 100644
--- a/Mage.Sets/src/mage/cards/a/AbbeyGriffin.java
+++ b/Mage.Sets/src/mage/cards/a/AbbeyGriffin.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AbbeyGriffin extends CardImpl {
+public final class AbbeyGriffin extends CardImpl {
public AbbeyGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AbbeyMatron.java b/Mage.Sets/src/mage/cards/a/AbbeyMatron.java
index ff83b4b7760..58e642251b3 100644
--- a/Mage.Sets/src/mage/cards/a/AbbeyMatron.java
+++ b/Mage.Sets/src/mage/cards/a/AbbeyMatron.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Sir-Speshkitty
*/
-public class AbbeyMatron extends CardImpl {
+public final class AbbeyMatron extends CardImpl {
public AbbeyMatron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AbbotOfKeralKeep.java b/Mage.Sets/src/mage/cards/a/AbbotOfKeralKeep.java
index 6f031ca861d..1757176966c 100644
--- a/Mage.Sets/src/mage/cards/a/AbbotOfKeralKeep.java
+++ b/Mage.Sets/src/mage/cards/a/AbbotOfKeralKeep.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class AbbotOfKeralKeep extends CardImpl {
+public final class AbbotOfKeralKeep extends CardImpl {
public AbbotOfKeralKeep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/Abduction.java b/Mage.Sets/src/mage/cards/a/Abduction.java
index 78eb7501075..b18c214e594 100644
--- a/Mage.Sets/src/mage/cards/a/Abduction.java
+++ b/Mage.Sets/src/mage/cards/a/Abduction.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class Abduction extends CardImpl {
+public final class Abduction extends CardImpl {
public Abduction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AberrantResearcher.java b/Mage.Sets/src/mage/cards/a/AberrantResearcher.java
index c156664119c..199f477fec9 100644
--- a/Mage.Sets/src/mage/cards/a/AberrantResearcher.java
+++ b/Mage.Sets/src/mage/cards/a/AberrantResearcher.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class AberrantResearcher extends CardImpl {
+public final class AberrantResearcher extends CardImpl {
public AberrantResearcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Abeyance.java b/Mage.Sets/src/mage/cards/a/Abeyance.java
index d59e287112d..8d662bbf0cf 100644
--- a/Mage.Sets/src/mage/cards/a/Abeyance.java
+++ b/Mage.Sets/src/mage/cards/a/Abeyance.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class Abeyance extends CardImpl {
+public final class Abeyance extends CardImpl {
public Abeyance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AbhorrentOverlord.java b/Mage.Sets/src/mage/cards/a/AbhorrentOverlord.java
index 9ff92d2ac68..08d4518666b 100644
--- a/Mage.Sets/src/mage/cards/a/AbhorrentOverlord.java
+++ b/Mage.Sets/src/mage/cards/a/AbhorrentOverlord.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.Token;
*
* @author LevelX2
*/
-public class AbhorrentOverlord extends CardImpl {
+public final class AbhorrentOverlord extends CardImpl {
public AbhorrentOverlord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/Abjure.java b/Mage.Sets/src/mage/cards/a/Abjure.java
index 2c4e0026978..3ac8b2bc104 100644
--- a/Mage.Sets/src/mage/cards/a/Abjure.java
+++ b/Mage.Sets/src/mage/cards/a/Abjure.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author djbrez
*/
-public class Abjure extends CardImpl {
+public final class Abjure extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a blue permanent");
diff --git a/Mage.Sets/src/mage/cards/a/Abolish.java b/Mage.Sets/src/mage/cards/a/Abolish.java
index acf18f8fda8..1546df4dfd3 100644
--- a/Mage.Sets/src/mage/cards/a/Abolish.java
+++ b/Mage.Sets/src/mage/cards/a/Abolish.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author Backfir3
*/
-public class Abolish extends CardImpl {
+public final class Abolish extends CardImpl {
private static final FilterCard filterCost = new FilterCard("Plains card");
diff --git a/Mage.Sets/src/mage/cards/a/AbolisherOfBloodlines.java b/Mage.Sets/src/mage/cards/a/AbolisherOfBloodlines.java
index a8b420a75ca..4059d4de08b 100644
--- a/Mage.Sets/src/mage/cards/a/AbolisherOfBloodlines.java
+++ b/Mage.Sets/src/mage/cards/a/AbolisherOfBloodlines.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class AbolisherOfBloodlines extends CardImpl {
+public final class AbolisherOfBloodlines extends CardImpl {
public AbolisherOfBloodlines(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
diff --git a/Mage.Sets/src/mage/cards/a/Abomination.java b/Mage.Sets/src/mage/cards/a/Abomination.java
index c4225f3688a..badd2bc2807 100644
--- a/Mage.Sets/src/mage/cards/a/Abomination.java
+++ b/Mage.Sets/src/mage/cards/a/Abomination.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class Abomination extends CardImpl {
+public final class Abomination extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green or white creature");
diff --git a/Mage.Sets/src/mage/cards/a/AbominationOfGudul.java b/Mage.Sets/src/mage/cards/a/AbominationOfGudul.java
index 1d373625631..5261f52ce5a 100644
--- a/Mage.Sets/src/mage/cards/a/AbominationOfGudul.java
+++ b/Mage.Sets/src/mage/cards/a/AbominationOfGudul.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AbominationOfGudul extends CardImpl {
+public final class AbominationOfGudul extends CardImpl {
public AbominationOfGudul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Aboroth.java b/Mage.Sets/src/mage/cards/a/Aboroth.java
index dcb009f2920..24569ccdfac 100644
--- a/Mage.Sets/src/mage/cards/a/Aboroth.java
+++ b/Mage.Sets/src/mage/cards/a/Aboroth.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author Styxo
*/
-public class Aboroth extends CardImpl {
+public final class Aboroth extends CardImpl {
public Aboroth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AboshanCephalidEmperor.java b/Mage.Sets/src/mage/cards/a/AboshanCephalidEmperor.java
index 6c7057ab063..cc75af1284b 100644
--- a/Mage.Sets/src/mage/cards/a/AboshanCephalidEmperor.java
+++ b/Mage.Sets/src/mage/cards/a/AboshanCephalidEmperor.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author cbt33
*/
-public class AboshanCephalidEmperor extends CardImpl {
+public final class AboshanCephalidEmperor extends CardImpl {
static final FilterControlledCreaturePermanent filter1 = new FilterControlledCreaturePermanent("untapped Cephalid you control");
static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/a/AboshansDesire.java b/Mage.Sets/src/mage/cards/a/AboshansDesire.java
index 7c6f3fb08c9..29bd1cd2290 100644
--- a/Mage.Sets/src/mage/cards/a/AboshansDesire.java
+++ b/Mage.Sets/src/mage/cards/a/AboshansDesire.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class AboshansDesire extends CardImpl {
+public final class AboshansDesire extends CardImpl {
public AboshansDesire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AboutFace.java b/Mage.Sets/src/mage/cards/a/AboutFace.java
index 6a98008cb44..dbe6501ad10 100644
--- a/Mage.Sets/src/mage/cards/a/AboutFace.java
+++ b/Mage.Sets/src/mage/cards/a/AboutFace.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class AboutFace extends CardImpl {
+public final class AboutFace extends CardImpl {
public AboutFace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/a/Abrade.java b/Mage.Sets/src/mage/cards/a/Abrade.java
index fb81c91e77f..821913ab471 100644
--- a/Mage.Sets/src/mage/cards/a/Abrade.java
+++ b/Mage.Sets/src/mage/cards/a/Abrade.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Abrade extends CardImpl {
+public final class Abrade extends CardImpl {
public Abrade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AbruptDecay.java b/Mage.Sets/src/mage/cards/a/AbruptDecay.java
index 04c61f1eb44..d54512b46af 100644
--- a/Mage.Sets/src/mage/cards/a/AbruptDecay.java
+++ b/Mage.Sets/src/mage/cards/a/AbruptDecay.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class AbruptDecay extends CardImpl {
+public final class AbruptDecay extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanent with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/a/AbsoluteGrace.java b/Mage.Sets/src/mage/cards/a/AbsoluteGrace.java
index 30f827e67cd..77feab6f08d 100644
--- a/Mage.Sets/src/mage/cards/a/AbsoluteGrace.java
+++ b/Mage.Sets/src/mage/cards/a/AbsoluteGrace.java
@@ -44,7 +44,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author Backfir3
*/
-public class AbsoluteGrace extends CardImpl {
+public final class AbsoluteGrace extends CardImpl {
public AbsoluteGrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AbsoluteLaw.java b/Mage.Sets/src/mage/cards/a/AbsoluteLaw.java
index b7ce757c732..f05d5934dcf 100644
--- a/Mage.Sets/src/mage/cards/a/AbsoluteLaw.java
+++ b/Mage.Sets/src/mage/cards/a/AbsoluteLaw.java
@@ -44,7 +44,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author Backfir3
*/
-public class AbsoluteLaw extends CardImpl {
+public final class AbsoluteLaw extends CardImpl {
public AbsoluteLaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AbsolverThrull.java b/Mage.Sets/src/mage/cards/a/AbsolverThrull.java
index 9404afe0430..4a6ddee7c73 100644
--- a/Mage.Sets/src/mage/cards/a/AbsolverThrull.java
+++ b/Mage.Sets/src/mage/cards/a/AbsolverThrull.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class AbsolverThrull extends CardImpl {
+public final class AbsolverThrull extends CardImpl {
public AbsolverThrull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Absorb.java b/Mage.Sets/src/mage/cards/a/Absorb.java
index cb73c80daca..9a664d8f4d9 100644
--- a/Mage.Sets/src/mage/cards/a/Absorb.java
+++ b/Mage.Sets/src/mage/cards/a/Absorb.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class Absorb extends CardImpl {
+public final class Absorb extends CardImpl {
public Absorb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AbsorbVis.java b/Mage.Sets/src/mage/cards/a/AbsorbVis.java
index 3766ca521f7..53ca7258db7 100644
--- a/Mage.Sets/src/mage/cards/a/AbsorbVis.java
+++ b/Mage.Sets/src/mage/cards/a/AbsorbVis.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class AbsorbVis extends CardImpl {
+public final class AbsorbVis extends CardImpl {
public AbsorbVis (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AbstruseInterference.java b/Mage.Sets/src/mage/cards/a/AbstruseInterference.java
index b20004e0a5b..8169fa381f1 100644
--- a/Mage.Sets/src/mage/cards/a/AbstruseInterference.java
+++ b/Mage.Sets/src/mage/cards/a/AbstruseInterference.java
@@ -43,7 +43,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class AbstruseInterference extends CardImpl {
+public final class AbstruseInterference extends CardImpl {
public AbstruseInterference(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AbuJafar.java b/Mage.Sets/src/mage/cards/a/AbuJafar.java
index 9b3fe727bb3..e028202def7 100644
--- a/Mage.Sets/src/mage/cards/a/AbuJafar.java
+++ b/Mage.Sets/src/mage/cards/a/AbuJafar.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.BlockingAttackerIdPredicate;
*
* @author MarcoMarin
*/
-public class AbuJafar extends CardImpl {
+public final class AbuJafar extends CardImpl {
public AbuJafar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AbunaAcolyte.java b/Mage.Sets/src/mage/cards/a/AbunaAcolyte.java
index e4aa41a9f62..e4ea16ad87d 100644
--- a/Mage.Sets/src/mage/cards/a/AbunaAcolyte.java
+++ b/Mage.Sets/src/mage/cards/a/AbunaAcolyte.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Martin Sagastume msr986@gmail.com
*/
-public class AbunaAcolyte extends CardImpl {
+public final class AbunaAcolyte extends CardImpl {
final static FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/a/AbunasChant.java b/Mage.Sets/src/mage/cards/a/AbunasChant.java
index 16ab5f19c4a..9dff2958ea2 100644
--- a/Mage.Sets/src/mage/cards/a/AbunasChant.java
+++ b/Mage.Sets/src/mage/cards/a/AbunasChant.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class AbunasChant extends CardImpl {
+public final class AbunasChant extends CardImpl {
public AbunasChant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Abundance.java b/Mage.Sets/src/mage/cards/a/Abundance.java
index b29a7f461ce..946e2b99191 100644
--- a/Mage.Sets/src/mage/cards/a/Abundance.java
+++ b/Mage.Sets/src/mage/cards/a/Abundance.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class Abundance extends CardImpl {
+public final class Abundance extends CardImpl {
public Abundance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AbundantGrowth.java b/Mage.Sets/src/mage/cards/a/AbundantGrowth.java
index 284afa7a1cb..4c06ecfbacc 100644
--- a/Mage.Sets/src/mage/cards/a/AbundantGrowth.java
+++ b/Mage.Sets/src/mage/cards/a/AbundantGrowth.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
/**
* @author noxx
*/
-public class AbundantGrowth extends CardImpl {
+public final class AbundantGrowth extends CardImpl {
public AbundantGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AbundantMaw.java b/Mage.Sets/src/mage/cards/a/AbundantMaw.java
index 4308cd6cd80..9d9f2d510ec 100644
--- a/Mage.Sets/src/mage/cards/a/AbundantMaw.java
+++ b/Mage.Sets/src/mage/cards/a/AbundantMaw.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class AbundantMaw extends CardImpl {
+public final class AbundantMaw extends CardImpl {
public AbundantMaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/a/AbyssalGatekeeper.java b/Mage.Sets/src/mage/cards/a/AbyssalGatekeeper.java
index 3bffb52c73b..7f40b60a222 100644
--- a/Mage.Sets/src/mage/cards/a/AbyssalGatekeeper.java
+++ b/Mage.Sets/src/mage/cards/a/AbyssalGatekeeper.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author daagar
*/
-public class AbyssalGatekeeper extends CardImpl {
+public final class AbyssalGatekeeper extends CardImpl {
public AbyssalGatekeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AbyssalHorror.java b/Mage.Sets/src/mage/cards/a/AbyssalHorror.java
index 75835a08db2..b2776034fbc 100644
--- a/Mage.Sets/src/mage/cards/a/AbyssalHorror.java
+++ b/Mage.Sets/src/mage/cards/a/AbyssalHorror.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Backfir3
*/
-public class AbyssalHorror extends CardImpl {
+public final class AbyssalHorror extends CardImpl {
public AbyssalHorror (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AbyssalHunter.java b/Mage.Sets/src/mage/cards/a/AbyssalHunter.java
index 98c0a98ce5e..63382e0a784 100644
--- a/Mage.Sets/src/mage/cards/a/AbyssalHunter.java
+++ b/Mage.Sets/src/mage/cards/a/AbyssalHunter.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class AbyssalHunter extends CardImpl {
+public final class AbyssalHunter extends CardImpl {
public AbyssalHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AbyssalNightstalker.java b/Mage.Sets/src/mage/cards/a/AbyssalNightstalker.java
index 390841b3837..09067c8c504 100644
--- a/Mage.Sets/src/mage/cards/a/AbyssalNightstalker.java
+++ b/Mage.Sets/src/mage/cards/a/AbyssalNightstalker.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class AbyssalNightstalker extends CardImpl {
+public final class AbyssalNightstalker extends CardImpl {
public AbyssalNightstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AbyssalNocturnus.java b/Mage.Sets/src/mage/cards/a/AbyssalNocturnus.java
index 1c70b1a601f..f14e813d033 100644
--- a/Mage.Sets/src/mage/cards/a/AbyssalNocturnus.java
+++ b/Mage.Sets/src/mage/cards/a/AbyssalNocturnus.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class AbyssalNocturnus extends CardImpl {
+public final class AbyssalNocturnus extends CardImpl {
public AbyssalNocturnus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AbyssalPersecutor.java b/Mage.Sets/src/mage/cards/a/AbyssalPersecutor.java
index 5c98be0c287..525bd590f36 100644
--- a/Mage.Sets/src/mage/cards/a/AbyssalPersecutor.java
+++ b/Mage.Sets/src/mage/cards/a/AbyssalPersecutor.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Loki
*/
-public class AbyssalPersecutor extends CardImpl {
+public final class AbyssalPersecutor extends CardImpl {
public AbyssalPersecutor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AbyssalSpecter.java b/Mage.Sets/src/mage/cards/a/AbyssalSpecter.java
index 0186bf27e2f..509528b071f 100644
--- a/Mage.Sets/src/mage/cards/a/AbyssalSpecter.java
+++ b/Mage.Sets/src/mage/cards/a/AbyssalSpecter.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class AbyssalSpecter extends CardImpl {
+public final class AbyssalSpecter extends CardImpl {
public AbyssalSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AbzanAdvantage.java b/Mage.Sets/src/mage/cards/a/AbzanAdvantage.java
index e9afd1b79cb..90cd495afc3 100644
--- a/Mage.Sets/src/mage/cards/a/AbzanAdvantage.java
+++ b/Mage.Sets/src/mage/cards/a/AbzanAdvantage.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class AbzanAdvantage extends CardImpl {
+public final class AbzanAdvantage extends CardImpl {
public AbzanAdvantage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AbzanAscendancy.java b/Mage.Sets/src/mage/cards/a/AbzanAscendancy.java
index 20850129fbb..a096730d77c 100644
--- a/Mage.Sets/src/mage/cards/a/AbzanAscendancy.java
+++ b/Mage.Sets/src/mage/cards/a/AbzanAscendancy.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author LevelX2
*/
-public class AbzanAscendancy extends CardImpl {
+public final class AbzanAscendancy extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature you control");
diff --git a/Mage.Sets/src/mage/cards/a/AbzanBanner.java b/Mage.Sets/src/mage/cards/a/AbzanBanner.java
index 275d4f5ac3e..86df03ae3f0 100644
--- a/Mage.Sets/src/mage/cards/a/AbzanBanner.java
+++ b/Mage.Sets/src/mage/cards/a/AbzanBanner.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class AbzanBanner extends CardImpl {
+public final class AbzanBanner extends CardImpl {
public AbzanBanner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AbzanBattlePriest.java b/Mage.Sets/src/mage/cards/a/AbzanBattlePriest.java
index 182c6bf624d..94f21ed3844 100644
--- a/Mage.Sets/src/mage/cards/a/AbzanBattlePriest.java
+++ b/Mage.Sets/src/mage/cards/a/AbzanBattlePriest.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author LevelX2
*/
-public class AbzanBattlePriest extends CardImpl {
+public final class AbzanBattlePriest extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/a/AbzanBeastmaster.java b/Mage.Sets/src/mage/cards/a/AbzanBeastmaster.java
index 248e81ffcf9..78cc4fb5e44 100644
--- a/Mage.Sets/src/mage/cards/a/AbzanBeastmaster.java
+++ b/Mage.Sets/src/mage/cards/a/AbzanBeastmaster.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class AbzanBeastmaster extends CardImpl {
+public final class AbzanBeastmaster extends CardImpl {
public AbzanBeastmaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AbzanCharm.java b/Mage.Sets/src/mage/cards/a/AbzanCharm.java
index 0122c3abc4e..2f143fd33c9 100644
--- a/Mage.Sets/src/mage/cards/a/AbzanCharm.java
+++ b/Mage.Sets/src/mage/cards/a/AbzanCharm.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LevelX2
*/
-public class AbzanCharm extends CardImpl {
+public final class AbzanCharm extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creature with power 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/a/AbzanFalconer.java b/Mage.Sets/src/mage/cards/a/AbzanFalconer.java
index cfd938a4b88..fd84cd2b962 100644
--- a/Mage.Sets/src/mage/cards/a/AbzanFalconer.java
+++ b/Mage.Sets/src/mage/cards/a/AbzanFalconer.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author emerald000
*/
-public class AbzanFalconer extends CardImpl {
+public final class AbzanFalconer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/a/AbzanGuide.java b/Mage.Sets/src/mage/cards/a/AbzanGuide.java
index 582da74d4c0..be8f0d7358f 100644
--- a/Mage.Sets/src/mage/cards/a/AbzanGuide.java
+++ b/Mage.Sets/src/mage/cards/a/AbzanGuide.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AbzanGuide extends CardImpl {
+public final class AbzanGuide extends CardImpl {
public AbzanGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AbzanKinGuard.java b/Mage.Sets/src/mage/cards/a/AbzanKinGuard.java
index 35755d48821..6152ed3f98e 100644
--- a/Mage.Sets/src/mage/cards/a/AbzanKinGuard.java
+++ b/Mage.Sets/src/mage/cards/a/AbzanKinGuard.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class AbzanKinGuard extends CardImpl {
+public final class AbzanKinGuard extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("as long as you control a white or black permanent");
diff --git a/Mage.Sets/src/mage/cards/a/AbzanRunemark.java b/Mage.Sets/src/mage/cards/a/AbzanRunemark.java
index 438fa421801..1b9315e1d6b 100644
--- a/Mage.Sets/src/mage/cards/a/AbzanRunemark.java
+++ b/Mage.Sets/src/mage/cards/a/AbzanRunemark.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class AbzanRunemark extends CardImpl {
+public final class AbzanRunemark extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("as long as you control a black or green permanent");
diff --git a/Mage.Sets/src/mage/cards/a/AbzanSkycaptain.java b/Mage.Sets/src/mage/cards/a/AbzanSkycaptain.java
index 2e218f5799f..0ae4fbf4cf9 100644
--- a/Mage.Sets/src/mage/cards/a/AbzanSkycaptain.java
+++ b/Mage.Sets/src/mage/cards/a/AbzanSkycaptain.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AbzanSkycaptain extends CardImpl {
+public final class AbzanSkycaptain extends CardImpl {
public AbzanSkycaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AcademyDrake.java b/Mage.Sets/src/mage/cards/a/AcademyDrake.java
index 43e0a31b698..dec1414fabf 100644
--- a/Mage.Sets/src/mage/cards/a/AcademyDrake.java
+++ b/Mage.Sets/src/mage/cards/a/AcademyDrake.java
@@ -14,7 +14,7 @@ import mage.counters.CounterType;
import java.util.UUID;
-public class AcademyDrake extends CardImpl {
+public final class AcademyDrake extends CardImpl {
public AcademyDrake(UUID ownerId, CardSetInfo cardSetInfo) {
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AcademyElite.java b/Mage.Sets/src/mage/cards/a/AcademyElite.java
index b19274ba657..cb93fad2c22 100644
--- a/Mage.Sets/src/mage/cards/a/AcademyElite.java
+++ b/Mage.Sets/src/mage/cards/a/AcademyElite.java
@@ -49,7 +49,7 @@ import mage.filter.common.FilterInstantOrSorceryCard;
*
* @author andyfries
*/
-public class AcademyElite extends CardImpl {
+public final class AcademyElite extends CardImpl {
public AcademyElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java b/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java
index 1f8114fcf07..456f47ccf26 100644
--- a/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java
+++ b/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JRHerlehy
*/
-public class AcademyJourneymage extends CardImpl {
+public final class AcademyJourneymage extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control a Wizard");
diff --git a/Mage.Sets/src/mage/cards/a/AcademyRaider.java b/Mage.Sets/src/mage/cards/a/AcademyRaider.java
index fd055a2e493..5375dc05509 100644
--- a/Mage.Sets/src/mage/cards/a/AcademyRaider.java
+++ b/Mage.Sets/src/mage/cards/a/AcademyRaider.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class AcademyRaider extends CardImpl {
+public final class AcademyRaider extends CardImpl {
public AcademyRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AcademyRector.java b/Mage.Sets/src/mage/cards/a/AcademyRector.java
index a88b967c004..54825f03f55 100644
--- a/Mage.Sets/src/mage/cards/a/AcademyRector.java
+++ b/Mage.Sets/src/mage/cards/a/AcademyRector.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class AcademyRector extends CardImpl {
+public final class AcademyRector extends CardImpl {
public AcademyRector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
@@ -55,11 +55,12 @@ public class AcademyRector extends CardImpl {
this.toughness = new MageInt(2);
// When Academy Rector dies, you may exile it. If you do, search your library for an enchantment card, put that card onto the battlefield, then shuffle your library.
- this.addAbility(new DiesTriggeredAbility(new DoIfCostPaid(
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterEnchantmentCard())),
- new ExileSourceFromGraveCost(),
- "Exile to search enchantment?"),
- false
+ this.addAbility(new DiesTriggeredAbility(
+ new DoIfCostPaid(
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterEnchantmentCard())),
+ new ExileSourceFromGraveCost(),
+ "Exile to search for an enchantment?"
+ ), false
));
}
diff --git a/Mage.Sets/src/mage/cards/a/AcademyResearchers.java b/Mage.Sets/src/mage/cards/a/AcademyResearchers.java
index 965f5c223f8..c634964a59a 100644
--- a/Mage.Sets/src/mage/cards/a/AcademyResearchers.java
+++ b/Mage.Sets/src/mage/cards/a/AcademyResearchers.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class AcademyResearchers extends CardImpl {
+public final class AcademyResearchers extends CardImpl {
public AcademyResearchers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AcademyRuins.java b/Mage.Sets/src/mage/cards/a/AcademyRuins.java
index e47644ca3d3..6e724f8e0e3 100644
--- a/Mage.Sets/src/mage/cards/a/AcademyRuins.java
+++ b/Mage.Sets/src/mage/cards/a/AcademyRuins.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class AcademyRuins extends CardImpl {
+public final class AcademyRuins extends CardImpl {
public AcademyRuins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/Accelerate.java b/Mage.Sets/src/mage/cards/a/Accelerate.java
index 66941a568e9..e8efcfbf75f 100644
--- a/Mage.Sets/src/mage/cards/a/Accelerate.java
+++ b/Mage.Sets/src/mage/cards/a/Accelerate.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class Accelerate extends CardImpl {
+public final class Accelerate extends CardImpl {
public Accelerate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AcceleratedMutation.java b/Mage.Sets/src/mage/cards/a/AcceleratedMutation.java
index e5aa16f1287..37be6133411 100644
--- a/Mage.Sets/src/mage/cards/a/AcceleratedMutation.java
+++ b/Mage.Sets/src/mage/cards/a/AcceleratedMutation.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nigelzor
*/
-public class AcceleratedMutation extends CardImpl {
+public final class AcceleratedMutation extends CardImpl {
public AcceleratedMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AcceptableLosses.java b/Mage.Sets/src/mage/cards/a/AcceptableLosses.java
index 62348a5bba8..7f1bca8863a 100644
--- a/Mage.Sets/src/mage/cards/a/AcceptableLosses.java
+++ b/Mage.Sets/src/mage/cards/a/AcceptableLosses.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AcceptableLosses extends CardImpl {
+public final class AcceptableLosses extends CardImpl {
public AcceptableLosses(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AccomplishedAutomaton.java b/Mage.Sets/src/mage/cards/a/AccomplishedAutomaton.java
index 4dcba6f5c0e..3aa9e9e8112 100644
--- a/Mage.Sets/src/mage/cards/a/AccomplishedAutomaton.java
+++ b/Mage.Sets/src/mage/cards/a/AccomplishedAutomaton.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AccomplishedAutomaton extends CardImpl {
+public final class AccomplishedAutomaton extends CardImpl {
public AccomplishedAutomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/a/AccorderPaladin.java b/Mage.Sets/src/mage/cards/a/AccorderPaladin.java
index 0626f216cb4..43e82d7e609 100644
--- a/Mage.Sets/src/mage/cards/a/AccorderPaladin.java
+++ b/Mage.Sets/src/mage/cards/a/AccorderPaladin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class AccorderPaladin extends CardImpl {
+public final class AccorderPaladin extends CardImpl {
public AccorderPaladin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AccordersShield.java b/Mage.Sets/src/mage/cards/a/AccordersShield.java
index 0fa205769e3..5f883b58334 100644
--- a/Mage.Sets/src/mage/cards/a/AccordersShield.java
+++ b/Mage.Sets/src/mage/cards/a/AccordersShield.java
@@ -43,7 +43,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class AccordersShield extends CardImpl {
+public final class AccordersShield extends CardImpl {
public AccordersShield (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/a/AccumulatedKnowledge.java b/Mage.Sets/src/mage/cards/a/AccumulatedKnowledge.java
index ce34cccbf8c..0fb2499dda5 100644
--- a/Mage.Sets/src/mage/cards/a/AccumulatedKnowledge.java
+++ b/Mage.Sets/src/mage/cards/a/AccumulatedKnowledge.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author LevelX2
*/
-public class AccumulatedKnowledge extends CardImpl {
+public final class AccumulatedKnowledge extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Accumulated Knowledge");
diff --git a/Mage.Sets/src/mage/cards/a/AccursedCentaur.java b/Mage.Sets/src/mage/cards/a/AccursedCentaur.java
index 75477b74a85..a8e3a435b37 100644
--- a/Mage.Sets/src/mage/cards/a/AccursedCentaur.java
+++ b/Mage.Sets/src/mage/cards/a/AccursedCentaur.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author Sir-Speshkitty
*/
-public class AccursedCentaur extends CardImpl {
+public final class AccursedCentaur extends CardImpl {
public AccursedCentaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AccursedHorde.java b/Mage.Sets/src/mage/cards/a/AccursedHorde.java
index 7ec9386cd07..28e1f82c95d 100644
--- a/Mage.Sets/src/mage/cards/a/AccursedHorde.java
+++ b/Mage.Sets/src/mage/cards/a/AccursedHorde.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author fireshoes
*/
-public class AccursedHorde extends CardImpl {
+public final class AccursedHorde extends CardImpl {
private final static FilterAttackingCreature filter = new FilterAttackingCreature("attacking Zombie");
diff --git a/Mage.Sets/src/mage/cards/a/AccursedSpirit.java b/Mage.Sets/src/mage/cards/a/AccursedSpirit.java
index 123a0c1ed9e..b08a760ff45 100644
--- a/Mage.Sets/src/mage/cards/a/AccursedSpirit.java
+++ b/Mage.Sets/src/mage/cards/a/AccursedSpirit.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AccursedSpirit extends CardImpl {
+public final class AccursedSpirit extends CardImpl {
public AccursedSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AccursedWitch.java b/Mage.Sets/src/mage/cards/a/AccursedWitch.java
index c81b3be1ca5..8f91632f469 100644
--- a/Mage.Sets/src/mage/cards/a/AccursedWitch.java
+++ b/Mage.Sets/src/mage/cards/a/AccursedWitch.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author halljared
*/
-public class AccursedWitch extends CardImpl {
+public final class AccursedWitch extends CardImpl {
public AccursedWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AcidRain.java b/Mage.Sets/src/mage/cards/a/AcidRain.java
index 28a1bdd396e..c187a5ffbcb 100644
--- a/Mage.Sets/src/mage/cards/a/AcidRain.java
+++ b/Mage.Sets/src/mage/cards/a/AcidRain.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author ilcartographer
*/
-public class AcidRain extends CardImpl {
+public final class AcidRain extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Forests");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AcidSpewerDragon.java b/Mage.Sets/src/mage/cards/a/AcidSpewerDragon.java
index c0f5b56651c..4f0a2bbaf3c 100644
--- a/Mage.Sets/src/mage/cards/a/AcidSpewerDragon.java
+++ b/Mage.Sets/src/mage/cards/a/AcidSpewerDragon.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class AcidSpewerDragon extends CardImpl {
+public final class AcidSpewerDragon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other Dragon creature you control");
diff --git a/Mage.Sets/src/mage/cards/a/AcidWebSpider.java b/Mage.Sets/src/mage/cards/a/AcidWebSpider.java
index 1ed922f67cd..df4f5624124 100644
--- a/Mage.Sets/src/mage/cards/a/AcidWebSpider.java
+++ b/Mage.Sets/src/mage/cards/a/AcidWebSpider.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class AcidWebSpider extends CardImpl {
+public final class AcidWebSpider extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Equipment");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AcidicSlime.java b/Mage.Sets/src/mage/cards/a/AcidicSlime.java
index 670b7ea26f5..bbb2a41a163 100644
--- a/Mage.Sets/src/mage/cards/a/AcidicSlime.java
+++ b/Mage.Sets/src/mage/cards/a/AcidicSlime.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AcidicSlime extends CardImpl {
+public final class AcidicSlime extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, enchantment, or land");
diff --git a/Mage.Sets/src/mage/cards/a/AcidicSliver.java b/Mage.Sets/src/mage/cards/a/AcidicSliver.java
index be2b1cd08ab..7b195e64ce2 100644
--- a/Mage.Sets/src/mage/cards/a/AcidicSliver.java
+++ b/Mage.Sets/src/mage/cards/a/AcidicSliver.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author KholdFuzion
*/
-public class AcidicSliver extends CardImpl {
+public final class AcidicSliver extends CardImpl {
public AcidicSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AcidicSoil.java b/Mage.Sets/src/mage/cards/a/AcidicSoil.java
index 03226e47e85..20b8076ea7c 100644
--- a/Mage.Sets/src/mage/cards/a/AcidicSoil.java
+++ b/Mage.Sets/src/mage/cards/a/AcidicSoil.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author Backfir3
*/
-public class AcidicSoil extends CardImpl {
+public final class AcidicSoil extends CardImpl {
public AcidicSoil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AcklayOfTheArena.java b/Mage.Sets/src/mage/cards/a/AcklayOfTheArena.java
index 7f5ce8953ef..67764e3c3e5 100644
--- a/Mage.Sets/src/mage/cards/a/AcklayOfTheArena.java
+++ b/Mage.Sets/src/mage/cards/a/AcklayOfTheArena.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class AcklayOfTheArena extends CardImpl {
+public final class AcklayOfTheArena extends CardImpl {
public AcklayOfTheArena(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AcolyteOfTheInferno.java b/Mage.Sets/src/mage/cards/a/AcolyteOfTheInferno.java
index 850e17daafc..6718a13ca2c 100644
--- a/Mage.Sets/src/mage/cards/a/AcolyteOfTheInferno.java
+++ b/Mage.Sets/src/mage/cards/a/AcolyteOfTheInferno.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Wehk
*/
-public class AcolyteOfTheInferno extends CardImpl {
+public final class AcolyteOfTheInferno extends CardImpl {
public AcolyteOfTheInferno(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AcolyteOfXathrid.java b/Mage.Sets/src/mage/cards/a/AcolyteOfXathrid.java
index 0749f474423..41ac806b02f 100644
--- a/Mage.Sets/src/mage/cards/a/AcolyteOfXathrid.java
+++ b/Mage.Sets/src/mage/cards/a/AcolyteOfXathrid.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AcolyteOfXathrid extends CardImpl {
+public final class AcolyteOfXathrid extends CardImpl {
public AcolyteOfXathrid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AcolytesReward.java b/Mage.Sets/src/mage/cards/a/AcolytesReward.java
index 74f96abad30..3a2330ce196 100644
--- a/Mage.Sets/src/mage/cards/a/AcolytesReward.java
+++ b/Mage.Sets/src/mage/cards/a/AcolytesReward.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AcolytesReward extends CardImpl {
+public final class AcolytesReward extends CardImpl {
public AcolytesReward(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AcornCatapult.java b/Mage.Sets/src/mage/cards/a/AcornCatapult.java
index fb2d3d3efce..d78a464a76a 100644
--- a/Mage.Sets/src/mage/cards/a/AcornCatapult.java
+++ b/Mage.Sets/src/mage/cards/a/AcornCatapult.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class AcornCatapult extends CardImpl {
+public final class AcornCatapult extends CardImpl {
public AcornCatapult(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/a/AcornHarvest.java b/Mage.Sets/src/mage/cards/a/AcornHarvest.java
index 8a585312ed7..638c7a5dca5 100644
--- a/Mage.Sets/src/mage/cards/a/AcornHarvest.java
+++ b/Mage.Sets/src/mage/cards/a/AcornHarvest.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SquirrelToken;
*
* @author LevelX2
*/
-public class AcornHarvest extends CardImpl {
+public final class AcornHarvest extends CardImpl {
public AcornHarvest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/Acquire.java b/Mage.Sets/src/mage/cards/a/Acquire.java
index ee30d97e125..3eb0827a338 100644
--- a/Mage.Sets/src/mage/cards/a/Acquire.java
+++ b/Mage.Sets/src/mage/cards/a/Acquire.java
@@ -19,7 +19,7 @@ import mage.target.common.TargetOpponent;
/**
* @author andyfries
*/
-public class Acquire extends CardImpl {
+public final class Acquire extends CardImpl {
public Acquire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AcquireTarget.java b/Mage.Sets/src/mage/cards/a/AcquireTarget.java
index 83e6f599f6f..bcb99e48a78 100644
--- a/Mage.Sets/src/mage/cards/a/AcquireTarget.java
+++ b/Mage.Sets/src/mage/cards/a/AcquireTarget.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author Styxo
*/
-public class AcquireTarget extends CardImpl {
+public final class AcquireTarget extends CardImpl {
public AcquireTarget(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/Acridian.java b/Mage.Sets/src/mage/cards/a/Acridian.java
index bcb81ec2fab..3296bb675a0 100644
--- a/Mage.Sets/src/mage/cards/a/Acridian.java
+++ b/Mage.Sets/src/mage/cards/a/Acridian.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class Acridian extends CardImpl {
+public final class Acridian extends CardImpl {
public Acridian (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AcrobaticManeuver.java b/Mage.Sets/src/mage/cards/a/AcrobaticManeuver.java
index dc93cd129d6..8cab38998e1 100644
--- a/Mage.Sets/src/mage/cards/a/AcrobaticManeuver.java
+++ b/Mage.Sets/src/mage/cards/a/AcrobaticManeuver.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class AcrobaticManeuver extends CardImpl {
+public final class AcrobaticManeuver extends CardImpl {
public AcrobaticManeuver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ActOfAggression.java b/Mage.Sets/src/mage/cards/a/ActOfAggression.java
index 5e055072476..69e91e32e3e 100644
--- a/Mage.Sets/src/mage/cards/a/ActOfAggression.java
+++ b/Mage.Sets/src/mage/cards/a/ActOfAggression.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ActOfAggression extends CardImpl {
+public final class ActOfAggression extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/a/ActOfAuthority.java b/Mage.Sets/src/mage/cards/a/ActOfAuthority.java
index 38dcd6ca161..4bc6750f21b 100644
--- a/Mage.Sets/src/mage/cards/a/ActOfAuthority.java
+++ b/Mage.Sets/src/mage/cards/a/ActOfAuthority.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ActOfAuthority extends CardImpl {
+public final class ActOfAuthority extends CardImpl {
public ActOfAuthority(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ActOfHeroism.java b/Mage.Sets/src/mage/cards/a/ActOfHeroism.java
index 54e3d518c6c..a5d81394956 100644
--- a/Mage.Sets/src/mage/cards/a/ActOfHeroism.java
+++ b/Mage.Sets/src/mage/cards/a/ActOfHeroism.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Archer262
*/
-public class ActOfHeroism extends CardImpl {
+public final class ActOfHeroism extends CardImpl {
public ActOfHeroism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ActOfTreason.java b/Mage.Sets/src/mage/cards/a/ActOfTreason.java
index d8285a01dcb..739dbf54b78 100644
--- a/Mage.Sets/src/mage/cards/a/ActOfTreason.java
+++ b/Mage.Sets/src/mage/cards/a/ActOfTreason.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ActOfTreason extends CardImpl {
+public final class ActOfTreason extends CardImpl {
public ActOfTreason(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ActOnImpulse.java b/Mage.Sets/src/mage/cards/a/ActOnImpulse.java
index d03aa7e837b..41199b13bf9 100644
--- a/Mage.Sets/src/mage/cards/a/ActOnImpulse.java
+++ b/Mage.Sets/src/mage/cards/a/ActOnImpulse.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author Quercitron
*/
-public class ActOnImpulse extends CardImpl {
+public final class ActOnImpulse extends CardImpl {
public ActOnImpulse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ActiveVolcano.java b/Mage.Sets/src/mage/cards/a/ActiveVolcano.java
index b3c279db7e1..1d844375aff 100644
--- a/Mage.Sets/src/mage/cards/a/ActiveVolcano.java
+++ b/Mage.Sets/src/mage/cards/a/ActiveVolcano.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author emerald000
*/
-public class ActiveVolcano extends CardImpl {
+public final class ActiveVolcano extends CardImpl {
private static final FilterPermanent filterBlue = new FilterPermanent("blue permanent");
private static final FilterPermanent filterIsland = new FilterPermanent("Island");
diff --git a/Mage.Sets/src/mage/cards/a/AdNauseam.java b/Mage.Sets/src/mage/cards/a/AdNauseam.java
index 9677fdd14e9..424e9672ec4 100644
--- a/Mage.Sets/src/mage/cards/a/AdNauseam.java
+++ b/Mage.Sets/src/mage/cards/a/AdNauseam.java
@@ -43,7 +43,7 @@ import mage.players.Player;
/**
* @author North
*/
-public class AdNauseam extends CardImpl {
+public final class AdNauseam extends CardImpl {
public AdNauseam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AdamantWill.java b/Mage.Sets/src/mage/cards/a/AdamantWill.java
index 6588b3c0eee..c0f6579349c 100644
--- a/Mage.Sets/src/mage/cards/a/AdamantWill.java
+++ b/Mage.Sets/src/mage/cards/a/AdamantWill.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author tcontis
*/
-public class AdamantWill extends CardImpl {
+public final class AdamantWill extends CardImpl {
public AdamantWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AdamaroFirstToDesire.java b/Mage.Sets/src/mage/cards/a/AdamaroFirstToDesire.java
index 559e7129f43..05eb0ff5877 100644
--- a/Mage.Sets/src/mage/cards/a/AdamaroFirstToDesire.java
+++ b/Mage.Sets/src/mage/cards/a/AdamaroFirstToDesire.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AdamaroFirstToDesire extends CardImpl {
+public final class AdamaroFirstToDesire extends CardImpl {
public AdamaroFirstToDesire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AdantoTheFirstFort.java b/Mage.Sets/src/mage/cards/a/AdantoTheFirstFort.java
index 26cb0acecbd..e225a6bd12c 100644
--- a/Mage.Sets/src/mage/cards/a/AdantoTheFirstFort.java
+++ b/Mage.Sets/src/mage/cards/a/AdantoTheFirstFort.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.IxalanVampireToken;
*
* @author TheElk801
*/
-public class AdantoTheFirstFort extends CardImpl {
+public final class AdantoTheFirstFort extends CardImpl {
public AdantoTheFirstFort(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/a/AdantoVanguard.java b/Mage.Sets/src/mage/cards/a/AdantoVanguard.java
index 2618cd1643a..f569985773e 100644
--- a/Mage.Sets/src/mage/cards/a/AdantoVanguard.java
+++ b/Mage.Sets/src/mage/cards/a/AdantoVanguard.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class AdantoVanguard extends CardImpl {
+public final class AdantoVanguard extends CardImpl {
public AdantoVanguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AdaptiveAutomaton.java b/Mage.Sets/src/mage/cards/a/AdaptiveAutomaton.java
index 272f83c91ff..0d43f25755b 100644
--- a/Mage.Sets/src/mage/cards/a/AdaptiveAutomaton.java
+++ b/Mage.Sets/src/mage/cards/a/AdaptiveAutomaton.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
/**
* @author nantuko
*/
-public class AdaptiveAutomaton extends CardImpl {
+public final class AdaptiveAutomaton extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control of the chosen type");
diff --git a/Mage.Sets/src/mage/cards/a/AdaptiveSnapjaw.java b/Mage.Sets/src/mage/cards/a/AdaptiveSnapjaw.java
index fbb4c8ee7f5..07f52d83279 100644
--- a/Mage.Sets/src/mage/cards/a/AdaptiveSnapjaw.java
+++ b/Mage.Sets/src/mage/cards/a/AdaptiveSnapjaw.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class AdaptiveSnapjaw extends CardImpl {
+public final class AdaptiveSnapjaw extends CardImpl {
public AdaptiveSnapjaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AdarkarSentinel.java b/Mage.Sets/src/mage/cards/a/AdarkarSentinel.java
index 77d7ddbd3b1..332c271fad4 100644
--- a/Mage.Sets/src/mage/cards/a/AdarkarSentinel.java
+++ b/Mage.Sets/src/mage/cards/a/AdarkarSentinel.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Sir-Speshkitty
*/
-public class AdarkarSentinel extends CardImpl {
+public final class AdarkarSentinel extends CardImpl {
public AdarkarSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/a/AdarkarValkyrie.java b/Mage.Sets/src/mage/cards/a/AdarkarValkyrie.java
index 09e8beec3c2..1c3542d1089 100644
--- a/Mage.Sets/src/mage/cards/a/AdarkarValkyrie.java
+++ b/Mage.Sets/src/mage/cards/a/AdarkarValkyrie.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class AdarkarValkyrie extends CardImpl {
+public final class AdarkarValkyrie extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/a/AdarkarWastes.java b/Mage.Sets/src/mage/cards/a/AdarkarWastes.java
index 71d9e9f9c54..e483b8d2c25 100644
--- a/Mage.Sets/src/mage/cards/a/AdarkarWastes.java
+++ b/Mage.Sets/src/mage/cards/a/AdarkarWastes.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class AdarkarWastes extends CardImpl {
+public final class AdarkarWastes extends CardImpl {
public AdarkarWastes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/AdarkarWindform.java b/Mage.Sets/src/mage/cards/a/AdarkarWindform.java
index 9bea58e9f3f..b9c5b9df22c 100644
--- a/Mage.Sets/src/mage/cards/a/AdarkarWindform.java
+++ b/Mage.Sets/src/mage/cards/a/AdarkarWindform.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class AdarkarWindform extends CardImpl {
+public final class AdarkarWindform extends CardImpl {
public AdarkarWindform(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AdderStaffBoggart.java b/Mage.Sets/src/mage/cards/a/AdderStaffBoggart.java
index 17efe478984..dc129d8e12c 100644
--- a/Mage.Sets/src/mage/cards/a/AdderStaffBoggart.java
+++ b/Mage.Sets/src/mage/cards/a/AdderStaffBoggart.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class AdderStaffBoggart extends CardImpl {
+public final class AdderStaffBoggart extends CardImpl {
public AdderStaffBoggart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/Addle.java b/Mage.Sets/src/mage/cards/a/Addle.java
index ddbe51e299b..334b974a6ed 100644
--- a/Mage.Sets/src/mage/cards/a/Addle.java
+++ b/Mage.Sets/src/mage/cards/a/Addle.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class Addle extends CardImpl {
+public final class Addle extends CardImpl {
public Addle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AdelizTheCinderWind.java b/Mage.Sets/src/mage/cards/a/AdelizTheCinderWind.java
index b1955f728bc..b0bac340487 100644
--- a/Mage.Sets/src/mage/cards/a/AdelizTheCinderWind.java
+++ b/Mage.Sets/src/mage/cards/a/AdelizTheCinderWind.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author JRHerlehy
*/
-public class AdelizTheCinderWind extends CardImpl {
+public final class AdelizTheCinderWind extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wizards");
diff --git a/Mage.Sets/src/mage/cards/a/AdmiralAckbar.java b/Mage.Sets/src/mage/cards/a/AdmiralAckbar.java
index 9605a82e49a..3f02a16f7c6 100644
--- a/Mage.Sets/src/mage/cards/a/AdmiralAckbar.java
+++ b/Mage.Sets/src/mage/cards/a/AdmiralAckbar.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.RebelStarshipToken;
*
* @author Styxo
*/
-public class AdmiralAckbar extends CardImpl {
+public final class AdmiralAckbar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Starship creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AdmiralBeckettBrass.java b/Mage.Sets/src/mage/cards/a/AdmiralBeckettBrass.java
index a7406924a9c..b7460f62b2c 100644
--- a/Mage.Sets/src/mage/cards/a/AdmiralBeckettBrass.java
+++ b/Mage.Sets/src/mage/cards/a/AdmiralBeckettBrass.java
@@ -53,7 +53,7 @@ import mage.watchers.Watcher;
*
* @author TheElk801
*/
-public class AdmiralBeckettBrass extends CardImpl {
+public final class AdmiralBeckettBrass extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Pirates you control");
private static final FilterNonlandPermanent filter2 = new FilterNonlandPermanent("nonland permanent controlled by a player who was dealt combat damage by three or more Pirates this turn");
diff --git a/Mage.Sets/src/mage/cards/a/AdmiralsOrder.java b/Mage.Sets/src/mage/cards/a/AdmiralsOrder.java
index 28cf0f82baa..a96b3717ed9 100644
--- a/Mage.Sets/src/mage/cards/a/AdmiralsOrder.java
+++ b/Mage.Sets/src/mage/cards/a/AdmiralsOrder.java
@@ -42,7 +42,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author L_J
*/
-public class AdmiralsOrder extends CardImpl {
+public final class AdmiralsOrder extends CardImpl {
public AdmiralsOrder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AdmonitionAngel.java b/Mage.Sets/src/mage/cards/a/AdmonitionAngel.java
index 34bd965a454..0423b8a6787 100644
--- a/Mage.Sets/src/mage/cards/a/AdmonitionAngel.java
+++ b/Mage.Sets/src/mage/cards/a/AdmonitionAngel.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class AdmonitionAngel extends CardImpl {
+public final class AdmonitionAngel extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nonland permanent other than Admonition Angel");
diff --git a/Mage.Sets/src/mage/cards/a/AdornedPouncer.java b/Mage.Sets/src/mage/cards/a/AdornedPouncer.java
index b0de71f33ed..af7ed11b651 100644
--- a/Mage.Sets/src/mage/cards/a/AdornedPouncer.java
+++ b/Mage.Sets/src/mage/cards/a/AdornedPouncer.java
@@ -37,7 +37,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-public class AdornedPouncer extends CardImpl {
+public final class AdornedPouncer extends CardImpl {
public AdornedPouncer(UUID ownerId, CardSetInfo cardSetInfo) {
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AdrianaCaptainOfTheGuard.java b/Mage.Sets/src/mage/cards/a/AdrianaCaptainOfTheGuard.java
index 2d584ab4baa..3cc3baf5058 100644
--- a/Mage.Sets/src/mage/cards/a/AdrianaCaptainOfTheGuard.java
+++ b/Mage.Sets/src/mage/cards/a/AdrianaCaptainOfTheGuard.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Styxo
*/
-public class AdrianaCaptainOfTheGuard extends CardImpl {
+public final class AdrianaCaptainOfTheGuard extends CardImpl {
public AdrianaCaptainOfTheGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AdroitHateflayer.java b/Mage.Sets/src/mage/cards/a/AdroitHateflayer.java
index a8019903e37..2d34a510470 100644
--- a/Mage.Sets/src/mage/cards/a/AdroitHateflayer.java
+++ b/Mage.Sets/src/mage/cards/a/AdroitHateflayer.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class AdroitHateflayer extends CardImpl {
+public final class AdroitHateflayer extends CardImpl {
public AdroitHateflayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AdunOakenshield.java b/Mage.Sets/src/mage/cards/a/AdunOakenshield.java
index 95aacbc1ee1..68e780f9e3f 100644
--- a/Mage.Sets/src/mage/cards/a/AdunOakenshield.java
+++ b/Mage.Sets/src/mage/cards/a/AdunOakenshield.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author shieldal
*/
-public class AdunOakenshield extends CardImpl {
+public final class AdunOakenshield extends CardImpl {
public AdunOakenshield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AdvanceScout.java b/Mage.Sets/src/mage/cards/a/AdvanceScout.java
index bee9217b2ec..b1acff7b311 100644
--- a/Mage.Sets/src/mage/cards/a/AdvanceScout.java
+++ b/Mage.Sets/src/mage/cards/a/AdvanceScout.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class AdvanceScout extends CardImpl {
+public final class AdvanceScout extends CardImpl {
public AdvanceScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AdvancedHoverguard.java b/Mage.Sets/src/mage/cards/a/AdvancedHoverguard.java
index bb203acdf96..e62a325db8a 100644
--- a/Mage.Sets/src/mage/cards/a/AdvancedHoverguard.java
+++ b/Mage.Sets/src/mage/cards/a/AdvancedHoverguard.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class AdvancedHoverguard extends CardImpl {
+public final class AdvancedHoverguard extends CardImpl {
public AdvancedHoverguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java b/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java
index 41d9d4babd6..cefd5328041 100644
--- a/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java
+++ b/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class AdvancedStitchwing extends CardImpl {
+public final class AdvancedStitchwing extends CardImpl {
public AdvancedStitchwing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AdventOfTheWurm.java b/Mage.Sets/src/mage/cards/a/AdventOfTheWurm.java
index 6b0c2920ea2..4b8cb99da05 100644
--- a/Mage.Sets/src/mage/cards/a/AdventOfTheWurm.java
+++ b/Mage.Sets/src/mage/cards/a/AdventOfTheWurm.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.WurmToken2;
*/
-public class AdventOfTheWurm extends CardImpl {
+public final class AdventOfTheWurm extends CardImpl {
public AdventOfTheWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AdventuringGear.java b/Mage.Sets/src/mage/cards/a/AdventuringGear.java
index 1652dcdedd0..0cfcc4e4b10 100644
--- a/Mage.Sets/src/mage/cards/a/AdventuringGear.java
+++ b/Mage.Sets/src/mage/cards/a/AdventuringGear.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AdventuringGear extends CardImpl {
+public final class AdventuringGear extends CardImpl {
public AdventuringGear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/a/AdventurousImpulse.java b/Mage.Sets/src/mage/cards/a/AdventurousImpulse.java
index 2f3fa06052e..b56ed302458 100644
--- a/Mage.Sets/src/mage/cards/a/AdventurousImpulse.java
+++ b/Mage.Sets/src/mage/cards/a/AdventurousImpulse.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author tcontis
*/
-public class AdventurousImpulse extends CardImpl {
+public final class AdventurousImpulse extends CardImpl {
private static final FilterCard filter = new FilterCard("a creature or land card");
diff --git a/Mage.Sets/src/mage/cards/a/AdverseConditions.java b/Mage.Sets/src/mage/cards/a/AdverseConditions.java
index 2c175663064..dea3ca6bcb9 100644
--- a/Mage.Sets/src/mage/cards/a/AdverseConditions.java
+++ b/Mage.Sets/src/mage/cards/a/AdverseConditions.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AdverseConditions extends CardImpl {
+public final class AdverseConditions extends CardImpl {
public AdverseConditions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AdviceFromTheFae.java b/Mage.Sets/src/mage/cards/a/AdviceFromTheFae.java
index e77d338f501..ec0e0bf6782 100644
--- a/Mage.Sets/src/mage/cards/a/AdviceFromTheFae.java
+++ b/Mage.Sets/src/mage/cards/a/AdviceFromTheFae.java
@@ -49,7 +49,7 @@ import mage.target.TargetCard;
*
* @author jeffwadsworth
*/
-public class AdviceFromTheFae extends CardImpl {
+public final class AdviceFromTheFae extends CardImpl {
public AdviceFromTheFae(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2/U}{2/U}{2/U}");
diff --git a/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java b/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java
index 19145098b41..8e1906e091e 100644
--- a/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java
+++ b/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AdvocateOfTheBeast extends CardImpl {
+public final class AdvocateOfTheBeast extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Beast creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AegisAngel.java b/Mage.Sets/src/mage/cards/a/AegisAngel.java
index d85e21a8261..6dcbf294cbc 100644
--- a/Mage.Sets/src/mage/cards/a/AegisAngel.java
+++ b/Mage.Sets/src/mage/cards/a/AegisAngel.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class AegisAngel extends CardImpl {
+public final class AegisAngel extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another target permanent");
diff --git a/Mage.Sets/src/mage/cards/a/AegisAutomaton.java b/Mage.Sets/src/mage/cards/a/AegisAutomaton.java
index a74d0a9d020..218983333ea 100644
--- a/Mage.Sets/src/mage/cards/a/AegisAutomaton.java
+++ b/Mage.Sets/src/mage/cards/a/AegisAutomaton.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class AegisAutomaton extends CardImpl {
+public final class AegisAutomaton extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control");
diff --git a/Mage.Sets/src/mage/cards/a/AegisOfHonor.java b/Mage.Sets/src/mage/cards/a/AegisOfHonor.java
index 930dc4e5e30..333d1f23926 100644
--- a/Mage.Sets/src/mage/cards/a/AegisOfHonor.java
+++ b/Mage.Sets/src/mage/cards/a/AegisOfHonor.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
/**
* @author cbt33 / LevelX2
*/
-public class AegisOfHonor extends CardImpl {
+public final class AegisOfHonor extends CardImpl {
public AegisOfHonor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AegisOfTheGods.java b/Mage.Sets/src/mage/cards/a/AegisOfTheGods.java
index 82597be7f50..4c7ceb85418 100644
--- a/Mage.Sets/src/mage/cards/a/AegisOfTheGods.java
+++ b/Mage.Sets/src/mage/cards/a/AegisOfTheGods.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class AegisOfTheGods extends CardImpl {
+public final class AegisOfTheGods extends CardImpl {
public AegisOfTheGods(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AegisOfTheMeek.java b/Mage.Sets/src/mage/cards/a/AegisOfTheMeek.java
index 62e84398d2c..063f954ffab 100644
--- a/Mage.Sets/src/mage/cards/a/AegisOfTheMeek.java
+++ b/Mage.Sets/src/mage/cards/a/AegisOfTheMeek.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Leathios
*/
-public class AegisOfTheMeek extends CardImpl {
+public final class AegisOfTheMeek extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("1/1 creature");
diff --git a/Mage.Sets/src/mage/cards/a/Aeolipile.java b/Mage.Sets/src/mage/cards/a/Aeolipile.java
index d7b7c269d12..489d38b2d91 100644
--- a/Mage.Sets/src/mage/cards/a/Aeolipile.java
+++ b/Mage.Sets/src/mage/cards/a/Aeolipile.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class Aeolipile extends CardImpl {
+public final class Aeolipile extends CardImpl {
public Aeolipile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AeonChronicler.java b/Mage.Sets/src/mage/cards/a/AeonChronicler.java
index 085e7b0b8be..37b360b8065 100644
--- a/Mage.Sets/src/mage/cards/a/AeonChronicler.java
+++ b/Mage.Sets/src/mage/cards/a/AeonChronicler.java
@@ -52,7 +52,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class AeonChronicler extends CardImpl {
+public final class AeonChronicler extends CardImpl {
public AeonChronicler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AerathiBerserker.java b/Mage.Sets/src/mage/cards/a/AerathiBerserker.java
index f32840df52c..92368f1fda0 100644
--- a/Mage.Sets/src/mage/cards/a/AerathiBerserker.java
+++ b/Mage.Sets/src/mage/cards/a/AerathiBerserker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class AerathiBerserker extends CardImpl {
+public final class AerathiBerserker extends CardImpl {
public AerathiBerserker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AerialCaravan.java b/Mage.Sets/src/mage/cards/a/AerialCaravan.java
index c1482249cec..2ec1dd5f97a 100644
--- a/Mage.Sets/src/mage/cards/a/AerialCaravan.java
+++ b/Mage.Sets/src/mage/cards/a/AerialCaravan.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class AerialCaravan extends CardImpl {
+public final class AerialCaravan extends CardImpl {
public AerialCaravan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AerialFormation.java b/Mage.Sets/src/mage/cards/a/AerialFormation.java
index 8d9b3e390f9..a8908c00f2b 100644
--- a/Mage.Sets/src/mage/cards/a/AerialFormation.java
+++ b/Mage.Sets/src/mage/cards/a/AerialFormation.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AerialFormation extends CardImpl {
+public final class AerialFormation extends CardImpl {
public AerialFormation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AerialGuide.java b/Mage.Sets/src/mage/cards/a/AerialGuide.java
index 00b59ed3dc5..3af52f8edc3 100644
--- a/Mage.Sets/src/mage/cards/a/AerialGuide.java
+++ b/Mage.Sets/src/mage/cards/a/AerialGuide.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author ciaccona007
*/
-public class AerialGuide extends CardImpl {
+public final class AerialGuide extends CardImpl {
static final FilterAttackingCreature filter = new FilterAttackingCreature("another target attacking creature");
diff --git a/Mage.Sets/src/mage/cards/a/AerialManeuver.java b/Mage.Sets/src/mage/cards/a/AerialManeuver.java
index 481516245cd..4de53ffa4d6 100644
--- a/Mage.Sets/src/mage/cards/a/AerialManeuver.java
+++ b/Mage.Sets/src/mage/cards/a/AerialManeuver.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AerialManeuver extends CardImpl {
+public final class AerialManeuver extends CardImpl {
public AerialManeuver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AerialModification.java b/Mage.Sets/src/mage/cards/a/AerialModification.java
index f68a0c90b0a..9fa9c064d3c 100644
--- a/Mage.Sets/src/mage/cards/a/AerialModification.java
+++ b/Mage.Sets/src/mage/cards/a/AerialModification.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author Styxo
*/
-public class AerialModification extends CardImpl {
+public final class AerialModification extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or vehicle");
diff --git a/Mage.Sets/src/mage/cards/a/AerialPredation.java b/Mage.Sets/src/mage/cards/a/AerialPredation.java
index b7daef979e7..f0b36c23fde 100644
--- a/Mage.Sets/src/mage/cards/a/AerialPredation.java
+++ b/Mage.Sets/src/mage/cards/a/AerialPredation.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AerialPredation extends CardImpl {
+public final class AerialPredation extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/a/AerialResponder.java b/Mage.Sets/src/mage/cards/a/AerialResponder.java
index cf032f8660a..391434c026b 100644
--- a/Mage.Sets/src/mage/cards/a/AerialResponder.java
+++ b/Mage.Sets/src/mage/cards/a/AerialResponder.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AerialResponder extends CardImpl {
+public final class AerialResponder extends CardImpl {
public AerialResponder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AerialVolley.java b/Mage.Sets/src/mage/cards/a/AerialVolley.java
index c09b2378308..ed90c4e250f 100644
--- a/Mage.Sets/src/mage/cards/a/AerialVolley.java
+++ b/Mage.Sets/src/mage/cards/a/AerialVolley.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LevelX2
*/
-public class AerialVolley extends CardImpl {
+public final class AerialVolley extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/a/AerieBowmasters.java b/Mage.Sets/src/mage/cards/a/AerieBowmasters.java
index 5d465309208..88dcf9d1df7 100644
--- a/Mage.Sets/src/mage/cards/a/AerieBowmasters.java
+++ b/Mage.Sets/src/mage/cards/a/AerieBowmasters.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AerieBowmasters extends CardImpl {
+public final class AerieBowmasters extends CardImpl {
public AerieBowmasters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AerieMystics.java b/Mage.Sets/src/mage/cards/a/AerieMystics.java
index c80b21af6a8..d6a1052f3e3 100644
--- a/Mage.Sets/src/mage/cards/a/AerieMystics.java
+++ b/Mage.Sets/src/mage/cards/a/AerieMystics.java
@@ -46,7 +46,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author Loki
*/
-public class AerieMystics extends CardImpl {
+public final class AerieMystics extends CardImpl {
public AerieMystics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AerieOuphes.java b/Mage.Sets/src/mage/cards/a/AerieOuphes.java
index 011a8a9f5ec..2a3a40ab882 100644
--- a/Mage.Sets/src/mage/cards/a/AerieOuphes.java
+++ b/Mage.Sets/src/mage/cards/a/AerieOuphes.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class AerieOuphes extends CardImpl {
+public final class AerieOuphes extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/a/AerieWorshippers.java b/Mage.Sets/src/mage/cards/a/AerieWorshippers.java
index f70f0b5e64a..9690c151142 100644
--- a/Mage.Sets/src/mage/cards/a/AerieWorshippers.java
+++ b/Mage.Sets/src/mage/cards/a/AerieWorshippers.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.AerieWorshippersBirdToken;
*
* @author LevelX2
*/
-public class AerieWorshippers extends CardImpl {
+public final class AerieWorshippers extends CardImpl {
public AerieWorshippers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AeronautAdmiral.java b/Mage.Sets/src/mage/cards/a/AeronautAdmiral.java
index cd260b94eff..d193ed1889e 100644
--- a/Mage.Sets/src/mage/cards/a/AeronautAdmiral.java
+++ b/Mage.Sets/src/mage/cards/a/AeronautAdmiral.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author JRHerlehy
*/
-public class AeronautAdmiral extends CardImpl {
+public final class AeronautAdmiral extends CardImpl {
private static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("Vehicles");
diff --git a/Mage.Sets/src/mage/cards/a/AeronautTinkerer.java b/Mage.Sets/src/mage/cards/a/AeronautTinkerer.java
index c300f098100..1e84dae8826 100644
--- a/Mage.Sets/src/mage/cards/a/AeronautTinkerer.java
+++ b/Mage.Sets/src/mage/cards/a/AeronautTinkerer.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author LevelX2
*/
-public class AeronautTinkerer extends CardImpl {
+public final class AeronautTinkerer extends CardImpl {
final static private String rule = "{this} has flying as long as you control an artifact";
diff --git a/Mage.Sets/src/mage/cards/a/AesthirGlider.java b/Mage.Sets/src/mage/cards/a/AesthirGlider.java
index eb296d65a5e..56839550480 100644
--- a/Mage.Sets/src/mage/cards/a/AesthirGlider.java
+++ b/Mage.Sets/src/mage/cards/a/AesthirGlider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Sir-Speshkitty
*/
-public class AesthirGlider extends CardImpl {
+public final class AesthirGlider extends CardImpl {
public AesthirGlider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherAdept.java b/Mage.Sets/src/mage/cards/a/AetherAdept.java
index ba9ac457d25..8c502a6fb25 100644
--- a/Mage.Sets/src/mage/cards/a/AetherAdept.java
+++ b/Mage.Sets/src/mage/cards/a/AetherAdept.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AetherAdept extends CardImpl {
+public final class AetherAdept extends CardImpl {
public AetherAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherBarrier.java b/Mage.Sets/src/mage/cards/a/AetherBarrier.java
index d3bb1c3d57f..1d82c275c67 100644
--- a/Mage.Sets/src/mage/cards/a/AetherBarrier.java
+++ b/Mage.Sets/src/mage/cards/a/AetherBarrier.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class AetherBarrier extends CardImpl {
+public final class AetherBarrier extends CardImpl {
public AetherBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherBurst.java b/Mage.Sets/src/mage/cards/a/AetherBurst.java
index 15ad665ff43..55ef7460e6c 100644
--- a/Mage.Sets/src/mage/cards/a/AetherBurst.java
+++ b/Mage.Sets/src/mage/cards/a/AetherBurst.java
@@ -48,7 +48,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author magenoxx_at_gmail.com
*/
-public class AetherBurst extends CardImpl {
+public final class AetherBurst extends CardImpl {
private static final FilterCard filter = new FilterCard("cards named Aether Burst");
diff --git a/Mage.Sets/src/mage/cards/a/AetherCharge.java b/Mage.Sets/src/mage/cards/a/AetherCharge.java
index 1fc12854f09..f2eadd6d38d 100644
--- a/Mage.Sets/src/mage/cards/a/AetherCharge.java
+++ b/Mage.Sets/src/mage/cards/a/AetherCharge.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class AetherCharge extends CardImpl {
+public final class AetherCharge extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Beast you control");
diff --git a/Mage.Sets/src/mage/cards/a/AetherChaser.java b/Mage.Sets/src/mage/cards/a/AetherChaser.java
index 75f5ccd8cd4..2aa5e9003cc 100644
--- a/Mage.Sets/src/mage/cards/a/AetherChaser.java
+++ b/Mage.Sets/src/mage/cards/a/AetherChaser.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.ServoToken;
*
* @author fireshoes
*/
-public class AetherChaser extends CardImpl {
+public final class AetherChaser extends CardImpl {
public AetherChaser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherFigment.java b/Mage.Sets/src/mage/cards/a/AetherFigment.java
index 7c25bf6cdc3..d8e4ab9c2be 100644
--- a/Mage.Sets/src/mage/cards/a/AetherFigment.java
+++ b/Mage.Sets/src/mage/cards/a/AetherFigment.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
/**
* @author nantuko, BetaSteward_at_googlemail.com
*/
-public class AetherFigment extends CardImpl {
+public final class AetherFigment extends CardImpl {
public AetherFigment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherFlash.java b/Mage.Sets/src/mage/cards/a/AetherFlash.java
index f51927b3454..b29db00a3d6 100644
--- a/Mage.Sets/src/mage/cards/a/AetherFlash.java
+++ b/Mage.Sets/src/mage/cards/a/AetherFlash.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author Quercitron
*/
-public class AetherFlash extends CardImpl {
+public final class AetherFlash extends CardImpl {
public AetherFlash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherGale.java b/Mage.Sets/src/mage/cards/a/AetherGale.java
index 0b9b6fa659c..1c0ae3b18a8 100644
--- a/Mage.Sets/src/mage/cards/a/AetherGale.java
+++ b/Mage.Sets/src/mage/cards/a/AetherGale.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class AetherGale extends CardImpl {
+public final class AetherGale extends CardImpl {
public AetherGale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherHerder.java b/Mage.Sets/src/mage/cards/a/AetherHerder.java
index 02995fc6987..60f91113d6a 100644
--- a/Mage.Sets/src/mage/cards/a/AetherHerder.java
+++ b/Mage.Sets/src/mage/cards/a/AetherHerder.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.ServoToken;
*
* @author fireshoes
*/
-public class AetherHerder extends CardImpl {
+public final class AetherHerder extends CardImpl {
public AetherHerder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherHub.java b/Mage.Sets/src/mage/cards/a/AetherHub.java
index 44561817a38..6f28e66d12a 100644
--- a/Mage.Sets/src/mage/cards/a/AetherHub.java
+++ b/Mage.Sets/src/mage/cards/a/AetherHub.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author emerald000
*/
-public class AetherHub extends CardImpl {
+public final class AetherHub extends CardImpl {
public AetherHub(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/AetherInspector.java b/Mage.Sets/src/mage/cards/a/AetherInspector.java
index db88e5a5ed7..4ac24492162 100644
--- a/Mage.Sets/src/mage/cards/a/AetherInspector.java
+++ b/Mage.Sets/src/mage/cards/a/AetherInspector.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.ServoToken;
*
* @author fireshoes
*/
-public class AetherInspector extends CardImpl {
+public final class AetherInspector extends CardImpl {
public AetherInspector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherMeltdown.java b/Mage.Sets/src/mage/cards/a/AetherMeltdown.java
index 9b21a5137b2..d53537a21b0 100644
--- a/Mage.Sets/src/mage/cards/a/AetherMeltdown.java
+++ b/Mage.Sets/src/mage/cards/a/AetherMeltdown.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class AetherMeltdown extends CardImpl {
+public final class AetherMeltdown extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent("creature or vehicle");
diff --git a/Mage.Sets/src/mage/cards/a/AetherMembrane.java b/Mage.Sets/src/mage/cards/a/AetherMembrane.java
index a7a45a14322..758082cd622 100644
--- a/Mage.Sets/src/mage/cards/a/AetherMembrane.java
+++ b/Mage.Sets/src/mage/cards/a/AetherMembrane.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*
* @author klayhamn
*/
-public class AetherMembrane extends CardImpl {
+public final class AetherMembrane extends CardImpl {
public AetherMembrane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherMutation.java b/Mage.Sets/src/mage/cards/a/AetherMutation.java
index 91d31260a38..67d70a0b186 100644
--- a/Mage.Sets/src/mage/cards/a/AetherMutation.java
+++ b/Mage.Sets/src/mage/cards/a/AetherMutation.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class AetherMutation extends CardImpl {
+public final class AetherMutation extends CardImpl {
public AetherMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherPoisoner.java b/Mage.Sets/src/mage/cards/a/AetherPoisoner.java
index 14823180363..e2c600dd0a8 100644
--- a/Mage.Sets/src/mage/cards/a/AetherPoisoner.java
+++ b/Mage.Sets/src/mage/cards/a/AetherPoisoner.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.ServoToken;
*
* @author fireshoes
*/
-public class AetherPoisoner extends CardImpl {
+public final class AetherPoisoner extends CardImpl {
public AetherPoisoner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherRift.java b/Mage.Sets/src/mage/cards/a/AetherRift.java
index fb20db061b5..d230f4dd012 100644
--- a/Mage.Sets/src/mage/cards/a/AetherRift.java
+++ b/Mage.Sets/src/mage/cards/a/AetherRift.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class AetherRift extends CardImpl {
+public final class AetherRift extends CardImpl {
public AetherRift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherShockwave.java b/Mage.Sets/src/mage/cards/a/AetherShockwave.java
index ead3caebbbc..9508c6346b1 100644
--- a/Mage.Sets/src/mage/cards/a/AetherShockwave.java
+++ b/Mage.Sets/src/mage/cards/a/AetherShockwave.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class AetherShockwave extends CardImpl {
+public final class AetherShockwave extends CardImpl {
private static final FilterCreaturePermanent filterSpirit = new FilterCreaturePermanent("Spirits");
private static final FilterCreaturePermanent filterNonSpirit = new FilterCreaturePermanent("non-Spirit creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AetherSnap.java b/Mage.Sets/src/mage/cards/a/AetherSnap.java
index cebece2b9c6..6f7da047910 100644
--- a/Mage.Sets/src/mage/cards/a/AetherSnap.java
+++ b/Mage.Sets/src/mage/cards/a/AetherSnap.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AetherSnap extends CardImpl {
+public final class AetherSnap extends CardImpl {
public AetherSnap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherSpellbomb.java b/Mage.Sets/src/mage/cards/a/AetherSpellbomb.java
index 44895028155..95f7d2d621d 100644
--- a/Mage.Sets/src/mage/cards/a/AetherSpellbomb.java
+++ b/Mage.Sets/src/mage/cards/a/AetherSpellbomb.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class AetherSpellbomb extends CardImpl {
+public final class AetherSpellbomb extends CardImpl {
public AetherSpellbomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherSting.java b/Mage.Sets/src/mage/cards/a/AetherSting.java
index 3cbd5464636..9fb777088b7 100644
--- a/Mage.Sets/src/mage/cards/a/AetherSting.java
+++ b/Mage.Sets/src/mage/cards/a/AetherSting.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Backfir3
*/
-public class AetherSting extends CardImpl {
+public final class AetherSting extends CardImpl {
public AetherSting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherStorm.java b/Mage.Sets/src/mage/cards/a/AetherStorm.java
index dcf766f3c0d..a1ca5faf195 100644
--- a/Mage.Sets/src/mage/cards/a/AetherStorm.java
+++ b/Mage.Sets/src/mage/cards/a/AetherStorm.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class AetherStorm extends CardImpl {
+public final class AetherStorm extends CardImpl {
public AetherStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherSwooper.java b/Mage.Sets/src/mage/cards/a/AetherSwooper.java
index 08f172271f5..9d5e7d32edb 100644
--- a/Mage.Sets/src/mage/cards/a/AetherSwooper.java
+++ b/Mage.Sets/src/mage/cards/a/AetherSwooper.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.ServoToken;
*
* @author fireshoes
*/
-public class AetherSwooper extends CardImpl {
+public final class AetherSwooper extends CardImpl {
public AetherSwooper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherTheorist.java b/Mage.Sets/src/mage/cards/a/AetherTheorist.java
index 46c4fff6d6e..994e72959bd 100644
--- a/Mage.Sets/src/mage/cards/a/AetherTheorist.java
+++ b/Mage.Sets/src/mage/cards/a/AetherTheorist.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class AetherTheorist extends CardImpl {
+public final class AetherTheorist extends CardImpl {
public AetherTheorist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherTradewinds.java b/Mage.Sets/src/mage/cards/a/AetherTradewinds.java
index 41957487d19..5f5c5782325 100644
--- a/Mage.Sets/src/mage/cards/a/AetherTradewinds.java
+++ b/Mage.Sets/src/mage/cards/a/AetherTradewinds.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class AetherTradewinds extends CardImpl {
+public final class AetherTradewinds extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent you don't control");
diff --git a/Mage.Sets/src/mage/cards/a/AetherVial.java b/Mage.Sets/src/mage/cards/a/AetherVial.java
index 1768ec0843c..ea31f5977ca 100644
--- a/Mage.Sets/src/mage/cards/a/AetherVial.java
+++ b/Mage.Sets/src/mage/cards/a/AetherVial.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInHand;
*
* @author North
*/
-public class AetherVial extends CardImpl {
+public final class AetherVial extends CardImpl {
public AetherVial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherbornMarauder.java b/Mage.Sets/src/mage/cards/a/AetherbornMarauder.java
index be6ff0eabff..1363df77048 100644
--- a/Mage.Sets/src/mage/cards/a/AetherbornMarauder.java
+++ b/Mage.Sets/src/mage/cards/a/AetherbornMarauder.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class AetherbornMarauder extends CardImpl {
+public final class AetherbornMarauder extends CardImpl {
public AetherbornMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherfluxReservoir.java b/Mage.Sets/src/mage/cards/a/AetherfluxReservoir.java
index 7fe71f66d9c..a2354ebb9e9 100644
--- a/Mage.Sets/src/mage/cards/a/AetherfluxReservoir.java
+++ b/Mage.Sets/src/mage/cards/a/AetherfluxReservoir.java
@@ -48,7 +48,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author emerald000
*/
-public class AetherfluxReservoir extends CardImpl {
+public final class AetherfluxReservoir extends CardImpl {
public AetherfluxReservoir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/a/AethergeodeMiner.java b/Mage.Sets/src/mage/cards/a/AethergeodeMiner.java
index 60912dd97ba..c5a35ce1949 100644
--- a/Mage.Sets/src/mage/cards/a/AethergeodeMiner.java
+++ b/Mage.Sets/src/mage/cards/a/AethergeodeMiner.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class AethergeodeMiner extends CardImpl {
+public final class AethergeodeMiner extends CardImpl {
public AethergeodeMiner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Aetherize.java b/Mage.Sets/src/mage/cards/a/Aetherize.java
index 13007ef81ea..af6565a7a54 100644
--- a/Mage.Sets/src/mage/cards/a/Aetherize.java
+++ b/Mage.Sets/src/mage/cards/a/Aetherize.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author LevelX2
*/
-public class Aetherize extends CardImpl {
+public final class Aetherize extends CardImpl {
public Aetherize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Aetherling.java b/Mage.Sets/src/mage/cards/a/Aetherling.java
index d1145ccdafb..5f9f5b3ecb1 100644
--- a/Mage.Sets/src/mage/cards/a/Aetherling.java
+++ b/Mage.Sets/src/mage/cards/a/Aetherling.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class Aetherling extends CardImpl {
+public final class Aetherling extends CardImpl {
public Aetherling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AethermagesTouch.java b/Mage.Sets/src/mage/cards/a/AethermagesTouch.java
index 3dbef178a16..2014c0326d2 100644
--- a/Mage.Sets/src/mage/cards/a/AethermagesTouch.java
+++ b/Mage.Sets/src/mage/cards/a/AethermagesTouch.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class AethermagesTouch extends CardImpl {
+public final class AethermagesTouch extends CardImpl {
public AethermagesTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Aethersnatch.java b/Mage.Sets/src/mage/cards/a/Aethersnatch.java
index 66ac753daf0..a335cb58608 100644
--- a/Mage.Sets/src/mage/cards/a/Aethersnatch.java
+++ b/Mage.Sets/src/mage/cards/a/Aethersnatch.java
@@ -43,7 +43,7 @@ import mage.target.TargetSpell;
*
* @author emerald000
*/
-public class Aethersnatch extends CardImpl {
+public final class Aethersnatch extends CardImpl {
public Aethersnatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Aethersnipe.java b/Mage.Sets/src/mage/cards/a/Aethersnipe.java
index 0fd5a871b8e..7deeac9c267 100644
--- a/Mage.Sets/src/mage/cards/a/Aethersnipe.java
+++ b/Mage.Sets/src/mage/cards/a/Aethersnipe.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class Aethersnipe extends CardImpl {
+public final class Aethersnipe extends CardImpl {
public Aethersnipe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AethersphereHarvester.java b/Mage.Sets/src/mage/cards/a/AethersphereHarvester.java
index ec215d9a12b..4c003d93af6 100644
--- a/Mage.Sets/src/mage/cards/a/AethersphereHarvester.java
+++ b/Mage.Sets/src/mage/cards/a/AethersphereHarvester.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class AethersphereHarvester extends CardImpl {
+public final class AethersphereHarvester extends CardImpl {
public AethersphereHarvester(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/a/Aetherspouts.java b/Mage.Sets/src/mage/cards/a/Aetherspouts.java
index 22e83e20f16..a70f30bd926 100644
--- a/Mage.Sets/src/mage/cards/a/Aetherspouts.java
+++ b/Mage.Sets/src/mage/cards/a/Aetherspouts.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class Aetherspouts extends CardImpl {
+public final class Aetherspouts extends CardImpl {
public Aetherspouts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AethersquallAncient.java b/Mage.Sets/src/mage/cards/a/AethersquallAncient.java
index 4123166401a..e0d9f3981aa 100644
--- a/Mage.Sets/src/mage/cards/a/AethersquallAncient.java
+++ b/Mage.Sets/src/mage/cards/a/AethersquallAncient.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class AethersquallAncient extends CardImpl {
+public final class AethersquallAncient extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AetherstormRoc.java b/Mage.Sets/src/mage/cards/a/AetherstormRoc.java
index f512afa2d56..ba75c8d59e8 100644
--- a/Mage.Sets/src/mage/cards/a/AetherstormRoc.java
+++ b/Mage.Sets/src/mage/cards/a/AetherstormRoc.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AetherstormRoc extends CardImpl {
+public final class AetherstormRoc extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/a/AetherstreamLeopard.java b/Mage.Sets/src/mage/cards/a/AetherstreamLeopard.java
index b4fc2e5ba89..99e47ea6178 100644
--- a/Mage.Sets/src/mage/cards/a/AetherstreamLeopard.java
+++ b/Mage.Sets/src/mage/cards/a/AetherstreamLeopard.java
@@ -46,7 +46,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AetherstreamLeopard extends CardImpl {
+public final class AetherstreamLeopard extends CardImpl {
public AetherstreamLeopard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AethertideWhale.java b/Mage.Sets/src/mage/cards/a/AethertideWhale.java
index c50da516eb7..a7d4b34d837 100644
--- a/Mage.Sets/src/mage/cards/a/AethertideWhale.java
+++ b/Mage.Sets/src/mage/cards/a/AethertideWhale.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class AethertideWhale extends CardImpl {
+public final class AethertideWhale extends CardImpl {
public AethertideWhale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AethertorchRenegade.java b/Mage.Sets/src/mage/cards/a/AethertorchRenegade.java
index b1182a161d5..28dc36324fa 100644
--- a/Mage.Sets/src/mage/cards/a/AethertorchRenegade.java
+++ b/Mage.Sets/src/mage/cards/a/AethertorchRenegade.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class AethertorchRenegade extends CardImpl {
+public final class AethertorchRenegade extends CardImpl {
public AethertorchRenegade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/Aethertow.java b/Mage.Sets/src/mage/cards/a/Aethertow.java
index b2c0f33f187..fcd7ef998c3 100644
--- a/Mage.Sets/src/mage/cards/a/Aethertow.java
+++ b/Mage.Sets/src/mage/cards/a/Aethertow.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class Aethertow extends CardImpl {
+public final class Aethertow extends CardImpl {
private static final FilterAttackingOrBlockingCreature filter = new FilterAttackingOrBlockingCreature();
diff --git a/Mage.Sets/src/mage/cards/a/AetherwindBasker.java b/Mage.Sets/src/mage/cards/a/AetherwindBasker.java
index 68d01fefd62..3b70d77d2f5 100644
--- a/Mage.Sets/src/mage/cards/a/AetherwindBasker.java
+++ b/Mage.Sets/src/mage/cards/a/AetherwindBasker.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Styxo
*/
-public class AetherwindBasker extends CardImpl {
+public final class AetherwindBasker extends CardImpl {
public AetherwindBasker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AetherworksMarvel.java b/Mage.Sets/src/mage/cards/a/AetherworksMarvel.java
index 2cef8504452..629cd6c73f9 100644
--- a/Mage.Sets/src/mage/cards/a/AetherworksMarvel.java
+++ b/Mage.Sets/src/mage/cards/a/AetherworksMarvel.java
@@ -29,6 +29,7 @@ package mage.cards.a;
import java.util.Set;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.PutIntoGraveFromBattlefieldAllTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
@@ -52,10 +53,10 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class AetherworksMarvel extends CardImpl {
+public final class AetherworksMarvel extends CardImpl {
public AetherworksMarvel(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
addSuperType(SuperType.LEGENDARY);
// Whenever a permanent you control is put into a graveyard, you get {E}.
@@ -105,7 +106,7 @@ class AetherworksMarvelEffect extends OneShotEffect {
TargetCard target = new TargetCardInLibrary(0, 1, new FilterNonlandCard("card to cast without paying its mana cost"));
if (controller.choose(Outcome.PlayForFree, cards, target, game)) {
Card card = controller.getLibrary().getCard(target.getFirstTarget(), game);
- if (card != null && controller.cast(card.getSpellAbility(), game, true)) {
+ if (card != null && controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
cards.remove(card);
}
}
diff --git a/Mage.Sets/src/mage/cards/a/AffaGuardHound.java b/Mage.Sets/src/mage/cards/a/AffaGuardHound.java
index bd118cd201c..42bdf2e4587 100644
--- a/Mage.Sets/src/mage/cards/a/AffaGuardHound.java
+++ b/Mage.Sets/src/mage/cards/a/AffaGuardHound.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class AffaGuardHound extends CardImpl {
+public final class AffaGuardHound extends CardImpl {
public AffaGuardHound (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AffaProtector.java b/Mage.Sets/src/mage/cards/a/AffaProtector.java
index 47afa6be7ab..18414d238a7 100644
--- a/Mage.Sets/src/mage/cards/a/AffaProtector.java
+++ b/Mage.Sets/src/mage/cards/a/AffaProtector.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AffaProtector extends CardImpl {
+public final class AffaProtector extends CardImpl {
public AffaProtector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Afflict.java b/Mage.Sets/src/mage/cards/a/Afflict.java
index 164d182bd31..3c34cf3e027 100644
--- a/Mage.Sets/src/mage/cards/a/Afflict.java
+++ b/Mage.Sets/src/mage/cards/a/Afflict.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Afflict extends CardImpl {
+public final class Afflict extends CardImpl {
public Afflict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AfflictedDeserter.java b/Mage.Sets/src/mage/cards/a/AfflictedDeserter.java
index 77ca76c5d2a..94e57094a06 100644
--- a/Mage.Sets/src/mage/cards/a/AfflictedDeserter.java
+++ b/Mage.Sets/src/mage/cards/a/AfflictedDeserter.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author BetaSteward
*/
-public class AfflictedDeserter extends CardImpl {
+public final class AfflictedDeserter extends CardImpl {
public AfflictedDeserter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AfiyaGrove.java b/Mage.Sets/src/mage/cards/a/AfiyaGrove.java
index b32ede06f5f..6e325f45317 100644
--- a/Mage.Sets/src/mage/cards/a/AfiyaGrove.java
+++ b/Mage.Sets/src/mage/cards/a/AfiyaGrove.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class AfiyaGrove extends CardImpl {
+public final class AfiyaGrove extends CardImpl {
public AfiyaGrove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/Afterlife.java b/Mage.Sets/src/mage/cards/a/Afterlife.java
index 33df33168c8..423206ad969 100644
--- a/Mage.Sets/src/mage/cards/a/Afterlife.java
+++ b/Mage.Sets/src/mage/cards/a/Afterlife.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class Afterlife extends CardImpl {
+public final class Afterlife extends CardImpl {
public Afterlife(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Aftershock.java b/Mage.Sets/src/mage/cards/a/Aftershock.java
index 0de254d9323..2963f0454fc 100644
--- a/Mage.Sets/src/mage/cards/a/Aftershock.java
+++ b/Mage.Sets/src/mage/cards/a/Aftershock.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class Aftershock extends CardImpl {
+public final class Aftershock extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/a/AgadeemOccultist.java b/Mage.Sets/src/mage/cards/a/AgadeemOccultist.java
index 9ff012fb12d..3e8cc9f1c0f 100644
--- a/Mage.Sets/src/mage/cards/a/AgadeemOccultist.java
+++ b/Mage.Sets/src/mage/cards/a/AgadeemOccultist.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class AgadeemOccultist extends CardImpl {
+public final class AgadeemOccultist extends CardImpl {
public AgadeemOccultist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AgelessEntity.java b/Mage.Sets/src/mage/cards/a/AgelessEntity.java
index c571d984b78..0e12e6456de 100644
--- a/Mage.Sets/src/mage/cards/a/AgelessEntity.java
+++ b/Mage.Sets/src/mage/cards/a/AgelessEntity.java
@@ -45,7 +45,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class AgelessEntity extends CardImpl {
+public final class AgelessEntity extends CardImpl {
public AgelessEntity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AgelessSentinels.java b/Mage.Sets/src/mage/cards/a/AgelessSentinels.java
index 95e308c9f3e..e76d8880e69 100644
--- a/Mage.Sets/src/mage/cards/a/AgelessSentinels.java
+++ b/Mage.Sets/src/mage/cards/a/AgelessSentinels.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class AgelessSentinels extends CardImpl {
+public final class AgelessSentinels extends CardImpl {
public AgelessSentinels(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AgentOfErebos.java b/Mage.Sets/src/mage/cards/a/AgentOfErebos.java
index 0f6ae3f3da1..f0d0d890d1f 100644
--- a/Mage.Sets/src/mage/cards/a/AgentOfErebos.java
+++ b/Mage.Sets/src/mage/cards/a/AgentOfErebos.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class AgentOfErebos extends CardImpl {
+public final class AgentOfErebos extends CardImpl {
public AgentOfErebos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AgentOfHorizons.java b/Mage.Sets/src/mage/cards/a/AgentOfHorizons.java
index b7258138c46..961068bc616 100644
--- a/Mage.Sets/src/mage/cards/a/AgentOfHorizons.java
+++ b/Mage.Sets/src/mage/cards/a/AgentOfHorizons.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class AgentOfHorizons extends CardImpl {
+public final class AgentOfHorizons extends CardImpl {
public AgentOfHorizons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AgentOfMasks.java b/Mage.Sets/src/mage/cards/a/AgentOfMasks.java
index bf139fb100a..f52d85a4e2c 100644
--- a/Mage.Sets/src/mage/cards/a/AgentOfMasks.java
+++ b/Mage.Sets/src/mage/cards/a/AgentOfMasks.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author Loki
*/
-public class AgentOfMasks extends CardImpl {
+public final class AgentOfMasks extends CardImpl {
public AgentOfMasks(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AgentOfShauku.java b/Mage.Sets/src/mage/cards/a/AgentOfShauku.java
index e8cd5cee8c7..a99985e11be 100644
--- a/Mage.Sets/src/mage/cards/a/AgentOfShauku.java
+++ b/Mage.Sets/src/mage/cards/a/AgentOfShauku.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class AgentOfShauku extends CardImpl {
+public final class AgentOfShauku extends CardImpl {
final static FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/a/AgentOfStromgald.java b/Mage.Sets/src/mage/cards/a/AgentOfStromgald.java
index f2974a05dbd..ed27d44a94f 100644
--- a/Mage.Sets/src/mage/cards/a/AgentOfStromgald.java
+++ b/Mage.Sets/src/mage/cards/a/AgentOfStromgald.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class AgentOfStromgald extends CardImpl {
+public final class AgentOfStromgald extends CardImpl {
public AgentOfStromgald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AgentOfTheFates.java b/Mage.Sets/src/mage/cards/a/AgentOfTheFates.java
index 7bc85674a0a..916747297a8 100644
--- a/Mage.Sets/src/mage/cards/a/AgentOfTheFates.java
+++ b/Mage.Sets/src/mage/cards/a/AgentOfTheFates.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class AgentOfTheFates extends CardImpl {
+public final class AgentOfTheFates extends CardImpl {
public AgentOfTheFates(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/Aggravate.java b/Mage.Sets/src/mage/cards/a/Aggravate.java
index 5915614d39b..5dac4581adc 100644
--- a/Mage.Sets/src/mage/cards/a/Aggravate.java
+++ b/Mage.Sets/src/mage/cards/a/Aggravate.java
@@ -45,7 +45,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author North
*/
-public class Aggravate extends CardImpl {
+public final class Aggravate extends CardImpl {
public Aggravate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AggravatedAssault.java b/Mage.Sets/src/mage/cards/a/AggravatedAssault.java
index 927ea786fc5..23766abd774 100644
--- a/Mage.Sets/src/mage/cards/a/AggravatedAssault.java
+++ b/Mage.Sets/src/mage/cards/a/AggravatedAssault.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author emerald000
*/
-public class AggravatedAssault extends CardImpl {
+public final class AggravatedAssault extends CardImpl {
public AggravatedAssault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AggressiveMining.java b/Mage.Sets/src/mage/cards/a/AggressiveMining.java
index 3e053d70f96..247ecde1ee4 100644
--- a/Mage.Sets/src/mage/cards/a/AggressiveMining.java
+++ b/Mage.Sets/src/mage/cards/a/AggressiveMining.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Quercitron
*/
-public class AggressiveMining extends CardImpl {
+public final class AggressiveMining extends CardImpl {
public AggressiveMining(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AggressiveUrge.java b/Mage.Sets/src/mage/cards/a/AggressiveUrge.java
index e3d622a3e9e..b0569fdca3e 100644
--- a/Mage.Sets/src/mage/cards/a/AggressiveUrge.java
+++ b/Mage.Sets/src/mage/cards/a/AggressiveUrge.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class AggressiveUrge extends CardImpl {
+public final class AggressiveUrge extends CardImpl {
public AggressiveUrge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/Agility.java b/Mage.Sets/src/mage/cards/a/Agility.java
index 690d30824d4..80e08b881c8 100644
--- a/Mage.Sets/src/mage/cards/a/Agility.java
+++ b/Mage.Sets/src/mage/cards/a/Agility.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Agility extends CardImpl {
+public final class Agility extends CardImpl {
public Agility(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AgonizingDemise.java b/Mage.Sets/src/mage/cards/a/AgonizingDemise.java
index 1f814431605..1c8026df677 100644
--- a/Mage.Sets/src/mage/cards/a/AgonizingDemise.java
+++ b/Mage.Sets/src/mage/cards/a/AgonizingDemise.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author FenrisulfrX
*/
-public class AgonizingDemise extends CardImpl {
+public final class AgonizingDemise extends CardImpl {
private static final FilterCreaturePermanent filterNonBlackCreature = new FilterCreaturePermanent("nonblack creature");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AgonizingMemories.java b/Mage.Sets/src/mage/cards/a/AgonizingMemories.java
index afc34c70fd1..1dd80c6bc2f 100644
--- a/Mage.Sets/src/mage/cards/a/AgonizingMemories.java
+++ b/Mage.Sets/src/mage/cards/a/AgonizingMemories.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author Quercitron
*/
-public class AgonizingMemories extends CardImpl {
+public final class AgonizingMemories extends CardImpl {
public AgonizingMemories(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AgonyWarp.java b/Mage.Sets/src/mage/cards/a/AgonyWarp.java
index 99c314fd26e..993d18f5030 100644
--- a/Mage.Sets/src/mage/cards/a/AgonyWarp.java
+++ b/Mage.Sets/src/mage/cards/a/AgonyWarp.java
@@ -43,7 +43,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author North
*/
-public class AgonyWarp extends CardImpl {
+public final class AgonyWarp extends CardImpl {
public AgonyWarp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/Agoraphobia.java b/Mage.Sets/src/mage/cards/a/Agoraphobia.java
index d9776ae5688..54083a5415b 100644
--- a/Mage.Sets/src/mage/cards/a/Agoraphobia.java
+++ b/Mage.Sets/src/mage/cards/a/Agoraphobia.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Agoraphobia extends CardImpl {
+public final class Agoraphobia extends CardImpl {
public Agoraphobia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AgrusKosWojekVeteran.java b/Mage.Sets/src/mage/cards/a/AgrusKosWojekVeteran.java
index e0b4cc1ded3..ef3e87df305 100644
--- a/Mage.Sets/src/mage/cards/a/AgrusKosWojekVeteran.java
+++ b/Mage.Sets/src/mage/cards/a/AgrusKosWojekVeteran.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class AgrusKosWojekVeteran extends CardImpl {
+public final class AgrusKosWojekVeteran extends CardImpl {
private static final FilterAttackingCreature filterRed = new FilterAttackingCreature("attacking red creatures");
private static final FilterAttackingCreature filterWhite = new FilterAttackingCreature("attacking white creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AhnCropChampion.java b/Mage.Sets/src/mage/cards/a/AhnCropChampion.java
index 530cd7c38ec..549f81f6d2b 100644
--- a/Mage.Sets/src/mage/cards/a/AhnCropChampion.java
+++ b/Mage.Sets/src/mage/cards/a/AhnCropChampion.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author stravant
*/
-public class AhnCropChampion extends CardImpl {
+public final class AhnCropChampion extends CardImpl {
public AhnCropChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AhnCropCrasher.java b/Mage.Sets/src/mage/cards/a/AhnCropCrasher.java
index b1be9e0a33d..97e261b7412 100644
--- a/Mage.Sets/src/mage/cards/a/AhnCropCrasher.java
+++ b/Mage.Sets/src/mage/cards/a/AhnCropCrasher.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AhnCropCrasher extends CardImpl {
+public final class AhnCropCrasher extends CardImpl {
public AhnCropCrasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java b/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java
index 31a5e9ce445..cc89aa3016f 100644
--- a/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java
+++ b/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java
@@ -48,7 +48,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author fireshoes
*/
-public class AidFromTheCowl extends CardImpl {
+public final class AidFromTheCowl extends CardImpl {
private static final String ruleText = "Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, "
+ "you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. Otherwise, put it on the bottom of your library.";
diff --git a/Mage.Sets/src/mage/cards/a/AimHigh.java b/Mage.Sets/src/mage/cards/a/AimHigh.java
index 1b2ae2d3793..9dcef3dbda2 100644
--- a/Mage.Sets/src/mage/cards/a/AimHigh.java
+++ b/Mage.Sets/src/mage/cards/a/AimHigh.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class AimHigh extends CardImpl {
+public final class AimHigh extends CardImpl {
public AimHigh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AinokArtillerist.java b/Mage.Sets/src/mage/cards/a/AinokArtillerist.java
index 35835bace7c..7727df39297 100644
--- a/Mage.Sets/src/mage/cards/a/AinokArtillerist.java
+++ b/Mage.Sets/src/mage/cards/a/AinokArtillerist.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class AinokArtillerist extends CardImpl {
+public final class AinokArtillerist extends CardImpl {
public AinokArtillerist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AinokBondKin.java b/Mage.Sets/src/mage/cards/a/AinokBondKin.java
index bedc2b57fb7..8ac60e3ecde 100644
--- a/Mage.Sets/src/mage/cards/a/AinokBondKin.java
+++ b/Mage.Sets/src/mage/cards/a/AinokBondKin.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author LevelX2
*/
-public class AinokBondKin extends CardImpl {
+public final class AinokBondKin extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/a/AinokGuide.java b/Mage.Sets/src/mage/cards/a/AinokGuide.java
index c10ee0eb52c..0e1563a6c73 100644
--- a/Mage.Sets/src/mage/cards/a/AinokGuide.java
+++ b/Mage.Sets/src/mage/cards/a/AinokGuide.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class AinokGuide extends CardImpl {
+public final class AinokGuide extends CardImpl {
public AinokGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
@@ -62,7 +62,7 @@ public class AinokGuide extends CardImpl {
// * Search your library for a basic land card, reveal it, then shuffle your library and put that card on top of it.
Mode mode = new Mode();
- mode.getEffects().add(new SearchLibraryPutOnLibraryEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true));
+ mode.getEffects().add(new SearchLibraryPutOnLibraryEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true));
ability.addMode(mode);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/a/AinokSurvivalist.java b/Mage.Sets/src/mage/cards/a/AinokSurvivalist.java
index cea73e53c81..72fd1a0164e 100644
--- a/Mage.Sets/src/mage/cards/a/AinokSurvivalist.java
+++ b/Mage.Sets/src/mage/cards/a/AinokSurvivalist.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class AinokSurvivalist extends CardImpl {
+public final class AinokSurvivalist extends CardImpl {
private static final FilterArtifactOrEnchantmentPermanent filter = new FilterArtifactOrEnchantmentPermanent("artifact or enchantment an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/a/AinokTracker.java b/Mage.Sets/src/mage/cards/a/AinokTracker.java
index 5dfd79245fe..8b140a665e3 100644
--- a/Mage.Sets/src/mage/cards/a/AinokTracker.java
+++ b/Mage.Sets/src/mage/cards/a/AinokTracker.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AinokTracker extends CardImpl {
+public final class AinokTracker extends CardImpl {
public AinokTracker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AirBladder.java b/Mage.Sets/src/mage/cards/a/AirBladder.java
index 99fc7e6e817..a614a69a550 100644
--- a/Mage.Sets/src/mage/cards/a/AirBladder.java
+++ b/Mage.Sets/src/mage/cards/a/AirBladder.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class AirBladder extends CardImpl {
+public final class AirBladder extends CardImpl {
public AirBladder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AirElemental.java b/Mage.Sets/src/mage/cards/a/AirElemental.java
index 28d0b900721..e70b2be9daf 100644
--- a/Mage.Sets/src/mage/cards/a/AirElemental.java
+++ b/Mage.Sets/src/mage/cards/a/AirElemental.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AirElemental extends CardImpl {
+public final class AirElemental extends CardImpl {
public AirElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AirServant.java b/Mage.Sets/src/mage/cards/a/AirServant.java
index 47ea837d91a..cd4b39b3acc 100644
--- a/Mage.Sets/src/mage/cards/a/AirServant.java
+++ b/Mage.Sets/src/mage/cards/a/AirServant.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AirServant extends CardImpl {
+public final class AirServant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/a/AirborneAid.java b/Mage.Sets/src/mage/cards/a/AirborneAid.java
index 7c6ae9441a6..515f8adb8ea 100644
--- a/Mage.Sets/src/mage/cards/a/AirborneAid.java
+++ b/Mage.Sets/src/mage/cards/a/AirborneAid.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class AirborneAid extends CardImpl {
+public final class AirborneAid extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Bird on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/a/AirdropAeronauts.java b/Mage.Sets/src/mage/cards/a/AirdropAeronauts.java
index f17aa51cb4d..48f8cb9cc26 100644
--- a/Mage.Sets/src/mage/cards/a/AirdropAeronauts.java
+++ b/Mage.Sets/src/mage/cards/a/AirdropAeronauts.java
@@ -46,7 +46,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author Styxo
*/
-public class AirdropAeronauts extends CardImpl {
+public final class AirdropAeronauts extends CardImpl {
public AirdropAeronauts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AirdropCondor.java b/Mage.Sets/src/mage/cards/a/AirdropCondor.java
index 364baf20040..523177b88fb 100644
--- a/Mage.Sets/src/mage/cards/a/AirdropCondor.java
+++ b/Mage.Sets/src/mage/cards/a/AirdropCondor.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class AirdropCondor extends CardImpl {
+public final class AirdropCondor extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin creature");
diff --git a/Mage.Sets/src/mage/cards/a/AislingLeprechaun.java b/Mage.Sets/src/mage/cards/a/AislingLeprechaun.java
index ca03f62bf60..496acfb4f5f 100644
--- a/Mage.Sets/src/mage/cards/a/AislingLeprechaun.java
+++ b/Mage.Sets/src/mage/cards/a/AislingLeprechaun.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author djbrez
*/
-public class AislingLeprechaun extends CardImpl {
+public final class AislingLeprechaun extends CardImpl {
public AislingLeprechaun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java b/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java
index 92eb45c9692..cc4d9c13885 100644
--- a/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java
+++ b/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class AjaniCallerOfThePride extends CardImpl {
+public final class AjaniCallerOfThePride extends CardImpl {
public AjaniCallerOfThePride(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AjaniGoldmane.java b/Mage.Sets/src/mage/cards/a/AjaniGoldmane.java
index ad0087f425f..8b3c19b5ea1 100644
--- a/Mage.Sets/src/mage/cards/a/AjaniGoldmane.java
+++ b/Mage.Sets/src/mage/cards/a/AjaniGoldmane.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AjaniGoldmane extends CardImpl {
+public final class AjaniGoldmane extends CardImpl {
public AjaniGoldmane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java b/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java
index 6429bc1f20e..8fc800969ee 100644
--- a/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java
+++ b/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LevelX2
*/
-public class AjaniMentorOfHeroes extends CardImpl {
+public final class AjaniMentorOfHeroes extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control");
private static final FilterCard filterCard = new FilterCard("an Aura, creature, or planeswalker card");
diff --git a/Mage.Sets/src/mage/cards/a/AjaniSteadfast.java b/Mage.Sets/src/mage/cards/a/AjaniSteadfast.java
index 2677668beaf..2b5376b0099 100644
--- a/Mage.Sets/src/mage/cards/a/AjaniSteadfast.java
+++ b/Mage.Sets/src/mage/cards/a/AjaniSteadfast.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AjaniSteadfast extends CardImpl {
+public final class AjaniSteadfast extends CardImpl {
private static final FilterPlaneswalkerPermanent filter = new FilterPlaneswalkerPermanent("other planeswalker you control");
diff --git a/Mage.Sets/src/mage/cards/a/AjaniUnyielding.java b/Mage.Sets/src/mage/cards/a/AjaniUnyielding.java
index 592ca2e605e..dcf7e210921 100644
--- a/Mage.Sets/src/mage/cards/a/AjaniUnyielding.java
+++ b/Mage.Sets/src/mage/cards/a/AjaniUnyielding.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author JRHerlehy
*/
-public class AjaniUnyielding extends CardImpl {
+public final class AjaniUnyielding extends CardImpl {
private static final FilterPermanentCard nonlandPermanentFilter = new FilterPermanentCard("nonland permanent cards");
private static final FilterPlaneswalkerPermanent planeswalkerFilter = new FilterPlaneswalkerPermanent("other planeswalker you control");
diff --git a/Mage.Sets/src/mage/cards/a/AjaniValiantProtector.java b/Mage.Sets/src/mage/cards/a/AjaniValiantProtector.java
index 95537d62fb0..e5564bf1ded 100644
--- a/Mage.Sets/src/mage/cards/a/AjaniValiantProtector.java
+++ b/Mage.Sets/src/mage/cards/a/AjaniValiantProtector.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class AjaniValiantProtector extends CardImpl {
+public final class AjaniValiantProtector extends CardImpl {
public AjaniValiantProtector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AjaniVengeant.java b/Mage.Sets/src/mage/cards/a/AjaniVengeant.java
index 4bf61182c4a..58849346074 100644
--- a/Mage.Sets/src/mage/cards/a/AjaniVengeant.java
+++ b/Mage.Sets/src/mage/cards/a/AjaniVengeant.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AjaniVengeant extends CardImpl {
+public final class AjaniVengeant extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("lands");
diff --git a/Mage.Sets/src/mage/cards/a/AjanisAid.java b/Mage.Sets/src/mage/cards/a/AjanisAid.java
index 28247cd3b24..9ef52b49592 100644
--- a/Mage.Sets/src/mage/cards/a/AjanisAid.java
+++ b/Mage.Sets/src/mage/cards/a/AjanisAid.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author fireshoes
*/
-public class AjanisAid extends CardImpl {
+public final class AjanisAid extends CardImpl {
private final static FilterCard filter = new FilterCard("Ajani, Valiant Protector");
diff --git a/Mage.Sets/src/mage/cards/a/AjanisChosen.java b/Mage.Sets/src/mage/cards/a/AjanisChosen.java
index f6e6abfd4f5..9aee05853b9 100644
--- a/Mage.Sets/src/mage/cards/a/AjanisChosen.java
+++ b/Mage.Sets/src/mage/cards/a/AjanisChosen.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class AjanisChosen extends CardImpl {
+public final class AjanisChosen extends CardImpl {
public AjanisChosen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AjanisComrade.java b/Mage.Sets/src/mage/cards/a/AjanisComrade.java
index 059a9a5dca9..23301502b53 100644
--- a/Mage.Sets/src/mage/cards/a/AjanisComrade.java
+++ b/Mage.Sets/src/mage/cards/a/AjanisComrade.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class AjanisComrade extends CardImpl {
+public final class AjanisComrade extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/a/AjanisMantra.java b/Mage.Sets/src/mage/cards/a/AjanisMantra.java
index 343e23442ee..da72ae5c28c 100644
--- a/Mage.Sets/src/mage/cards/a/AjanisMantra.java
+++ b/Mage.Sets/src/mage/cards/a/AjanisMantra.java
@@ -40,7 +40,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AjanisMantra extends CardImpl {
+public final class AjanisMantra extends CardImpl {
public AjanisMantra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AjanisPresence.java b/Mage.Sets/src/mage/cards/a/AjanisPresence.java
index 1ef68b673d4..4e16cfca69e 100644
--- a/Mage.Sets/src/mage/cards/a/AjanisPresence.java
+++ b/Mage.Sets/src/mage/cards/a/AjanisPresence.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AjanisPresence extends CardImpl {
+public final class AjanisPresence extends CardImpl {
public AjanisPresence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AjanisPridemate.java b/Mage.Sets/src/mage/cards/a/AjanisPridemate.java
index d2673302e59..f771ea4794d 100644
--- a/Mage.Sets/src/mage/cards/a/AjanisPridemate.java
+++ b/Mage.Sets/src/mage/cards/a/AjanisPridemate.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AjanisPridemate extends CardImpl {
+public final class AjanisPridemate extends CardImpl {
public AjanisPridemate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AjanisSunstriker.java b/Mage.Sets/src/mage/cards/a/AjanisSunstriker.java
index c14284ef5f7..7891ffef09e 100644
--- a/Mage.Sets/src/mage/cards/a/AjanisSunstriker.java
+++ b/Mage.Sets/src/mage/cards/a/AjanisSunstriker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AjanisSunstriker extends CardImpl {
+public final class AjanisSunstriker extends CardImpl {
public AjanisSunstriker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AkiriLineSlinger.java b/Mage.Sets/src/mage/cards/a/AkiriLineSlinger.java
index 2ae4caa4a4a..729433d430d 100644
--- a/Mage.Sets/src/mage/cards/a/AkiriLineSlinger.java
+++ b/Mage.Sets/src/mage/cards/a/AkiriLineSlinger.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author spjspj
*/
-public class AkiriLineSlinger extends CardImpl {
+public final class AkiriLineSlinger extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
diff --git a/Mage.Sets/src/mage/cards/a/AkkiAvalanchers.java b/Mage.Sets/src/mage/cards/a/AkkiAvalanchers.java
index 99f9745046b..a6c405122b5 100644
--- a/Mage.Sets/src/mage/cards/a/AkkiAvalanchers.java
+++ b/Mage.Sets/src/mage/cards/a/AkkiAvalanchers.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class AkkiAvalanchers extends CardImpl {
+public final class AkkiAvalanchers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/a/AkkiBlizzardHerder.java b/Mage.Sets/src/mage/cards/a/AkkiBlizzardHerder.java
index 02223fc7701..5d453042228 100644
--- a/Mage.Sets/src/mage/cards/a/AkkiBlizzardHerder.java
+++ b/Mage.Sets/src/mage/cards/a/AkkiBlizzardHerder.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Loki
*/
-public class AkkiBlizzardHerder extends CardImpl {
+public final class AkkiBlizzardHerder extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("land");
diff --git a/Mage.Sets/src/mage/cards/a/AkkiCoalflinger.java b/Mage.Sets/src/mage/cards/a/AkkiCoalflinger.java
index d7e0476cb87..75507d21004 100644
--- a/Mage.Sets/src/mage/cards/a/AkkiCoalflinger.java
+++ b/Mage.Sets/src/mage/cards/a/AkkiCoalflinger.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author Loki
*/
-public class AkkiCoalflinger extends CardImpl {
+public final class AkkiCoalflinger extends CardImpl {
public AkkiCoalflinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkkiDrillmaster.java b/Mage.Sets/src/mage/cards/a/AkkiDrillmaster.java
index e3507737e59..2bb511ae9ce 100644
--- a/Mage.Sets/src/mage/cards/a/AkkiDrillmaster.java
+++ b/Mage.Sets/src/mage/cards/a/AkkiDrillmaster.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class AkkiDrillmaster extends CardImpl {
+public final class AkkiDrillmaster extends CardImpl {
public AkkiDrillmaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkkiLavarunner.java b/Mage.Sets/src/mage/cards/a/AkkiLavarunner.java
index c710008ce64..56eb8da1c38 100644
--- a/Mage.Sets/src/mage/cards/a/AkkiLavarunner.java
+++ b/Mage.Sets/src/mage/cards/a/AkkiLavarunner.java
@@ -25,7 +25,7 @@ import mage.game.permanent.token.Token;
/**
* @author Loki
*/
-public class AkkiLavarunner extends CardImpl {
+public final class AkkiLavarunner extends CardImpl {
public AkkiLavarunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkkiRaider.java b/Mage.Sets/src/mage/cards/a/AkkiRaider.java
index 9c7ff903b5a..c6cbaf4992b 100644
--- a/Mage.Sets/src/mage/cards/a/AkkiRaider.java
+++ b/Mage.Sets/src/mage/cards/a/AkkiRaider.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author Loki
*/
-public class AkkiRaider extends CardImpl {
+public final class AkkiRaider extends CardImpl {
public AkkiRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkkiRockspeaker.java b/Mage.Sets/src/mage/cards/a/AkkiRockspeaker.java
index d0e8dbb0b8e..04ae5e74ee6 100644
--- a/Mage.Sets/src/mage/cards/a/AkkiRockspeaker.java
+++ b/Mage.Sets/src/mage/cards/a/AkkiRockspeaker.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
/**
* @author Loki, North
*/
-public class AkkiRockspeaker extends CardImpl {
+public final class AkkiRockspeaker extends CardImpl {
public AkkiRockspeaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkkiUnderling.java b/Mage.Sets/src/mage/cards/a/AkkiUnderling.java
index 79930327eaa..0b94c96a4c1 100644
--- a/Mage.Sets/src/mage/cards/a/AkkiUnderling.java
+++ b/Mage.Sets/src/mage/cards/a/AkkiUnderling.java
@@ -45,7 +45,7 @@ import mage.constants.*;
*
* @author LevelX2
*/
-public class AkkiUnderling extends CardImpl {
+public final class AkkiUnderling extends CardImpl {
public AkkiUnderling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkkiUnderminer.java b/Mage.Sets/src/mage/cards/a/AkkiUnderminer.java
index 67dbb45fed2..f79dce5a8c7 100644
--- a/Mage.Sets/src/mage/cards/a/AkkiUnderminer.java
+++ b/Mage.Sets/src/mage/cards/a/AkkiUnderminer.java
@@ -42,7 +42,7 @@ import mage.filter.FilterPermanent;
*
* @author Loki
*/
-public class AkkiUnderminer extends CardImpl {
+public final class AkkiUnderminer extends CardImpl {
public AkkiUnderminer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkoumBattlesinger.java b/Mage.Sets/src/mage/cards/a/AkoumBattlesinger.java
index d5a1d3dba43..0c7f1c36671 100644
--- a/Mage.Sets/src/mage/cards/a/AkoumBattlesinger.java
+++ b/Mage.Sets/src/mage/cards/a/AkoumBattlesinger.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class AkoumBattlesinger extends CardImpl {
+public final class AkoumBattlesinger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("have Ally creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AkoumBoulderfoot.java b/Mage.Sets/src/mage/cards/a/AkoumBoulderfoot.java
index d5306a5adc5..c2153529708 100644
--- a/Mage.Sets/src/mage/cards/a/AkoumBoulderfoot.java
+++ b/Mage.Sets/src/mage/cards/a/AkoumBoulderfoot.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class AkoumBoulderfoot extends CardImpl {
+public final class AkoumBoulderfoot extends CardImpl {
public AkoumBoulderfoot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkoumFirebird.java b/Mage.Sets/src/mage/cards/a/AkoumFirebird.java
index 5a2352fa720..e28a6530f43 100644
--- a/Mage.Sets/src/mage/cards/a/AkoumFirebird.java
+++ b/Mage.Sets/src/mage/cards/a/AkoumFirebird.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class AkoumFirebird extends CardImpl {
+public final class AkoumFirebird extends CardImpl {
public AkoumFirebird(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkoumFlameseeker.java b/Mage.Sets/src/mage/cards/a/AkoumFlameseeker.java
index d6a58bd478a..f61171e1a13 100644
--- a/Mage.Sets/src/mage/cards/a/AkoumFlameseeker.java
+++ b/Mage.Sets/src/mage/cards/a/AkoumFlameseeker.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class AkoumFlameseeker extends CardImpl {
+public final class AkoumFlameseeker extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control");
diff --git a/Mage.Sets/src/mage/cards/a/AkoumHellkite.java b/Mage.Sets/src/mage/cards/a/AkoumHellkite.java
index dc8b44d7815..0f9e0a301fb 100644
--- a/Mage.Sets/src/mage/cards/a/AkoumHellkite.java
+++ b/Mage.Sets/src/mage/cards/a/AkoumHellkite.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class AkoumHellkite extends CardImpl {
+public final class AkoumHellkite extends CardImpl {
public AkoumHellkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkoumRefuge.java b/Mage.Sets/src/mage/cards/a/AkoumRefuge.java
index 2073d915d68..e2073dc337f 100644
--- a/Mage.Sets/src/mage/cards/a/AkoumRefuge.java
+++ b/Mage.Sets/src/mage/cards/a/AkoumRefuge.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class AkoumRefuge extends CardImpl {
+public final class AkoumRefuge extends CardImpl {
public AkoumRefuge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/AkoumStonewaker.java b/Mage.Sets/src/mage/cards/a/AkoumStonewaker.java
index a071624052c..c2c80282081 100644
--- a/Mage.Sets/src/mage/cards/a/AkoumStonewaker.java
+++ b/Mage.Sets/src/mage/cards/a/AkoumStonewaker.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.AkoumStonewakerElementalToken;
*
* @author LevelX2
*/
-public class AkoumStonewaker extends CardImpl {
+public final class AkoumStonewaker extends CardImpl {
public AkoumStonewaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkrasanSquire.java b/Mage.Sets/src/mage/cards/a/AkrasanSquire.java
index be2906b006c..fcec77155d1 100644
--- a/Mage.Sets/src/mage/cards/a/AkrasanSquire.java
+++ b/Mage.Sets/src/mage/cards/a/AkrasanSquire.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class AkrasanSquire extends CardImpl {
+public final class AkrasanSquire extends CardImpl {
public AkrasanSquire (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AkroanConscriptor.java b/Mage.Sets/src/mage/cards/a/AkroanConscriptor.java
index f90b399d6e0..976c9de4462 100644
--- a/Mage.Sets/src/mage/cards/a/AkroanConscriptor.java
+++ b/Mage.Sets/src/mage/cards/a/AkroanConscriptor.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AkroanConscriptor extends CardImpl {
+public final class AkroanConscriptor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/a/AkroanCrusader.java b/Mage.Sets/src/mage/cards/a/AkroanCrusader.java
index a76bd6d989a..9ad7abdb5f8 100644
--- a/Mage.Sets/src/mage/cards/a/AkroanCrusader.java
+++ b/Mage.Sets/src/mage/cards/a/AkroanCrusader.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.AkroanSoldierToken;
*
* @author Plopman
*/
-public class AkroanCrusader extends CardImpl {
+public final class AkroanCrusader extends CardImpl {
public AkroanCrusader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkroanHoplite.java b/Mage.Sets/src/mage/cards/a/AkroanHoplite.java
index f89061cff50..e86c1f8e451 100644
--- a/Mage.Sets/src/mage/cards/a/AkroanHoplite.java
+++ b/Mage.Sets/src/mage/cards/a/AkroanHoplite.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class AkroanHoplite extends CardImpl {
+public final class AkroanHoplite extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creatures you control");
diff --git a/Mage.Sets/src/mage/cards/a/AkroanHorse.java b/Mage.Sets/src/mage/cards/a/AkroanHorse.java
index c02c7e15673..a863e0a43e0 100644
--- a/Mage.Sets/src/mage/cards/a/AkroanHorse.java
+++ b/Mage.Sets/src/mage/cards/a/AkroanHorse.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class AkroanHorse extends CardImpl {
+public final class AkroanHorse extends CardImpl {
public AkroanHorse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/a/AkroanJailer.java b/Mage.Sets/src/mage/cards/a/AkroanJailer.java
index a5f37b77478..39d526fc6eb 100644
--- a/Mage.Sets/src/mage/cards/a/AkroanJailer.java
+++ b/Mage.Sets/src/mage/cards/a/AkroanJailer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AkroanJailer extends CardImpl {
+public final class AkroanJailer extends CardImpl {
public AkroanJailer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AkroanLineBreaker.java b/Mage.Sets/src/mage/cards/a/AkroanLineBreaker.java
index d7f29486152..4943836cc55 100644
--- a/Mage.Sets/src/mage/cards/a/AkroanLineBreaker.java
+++ b/Mage.Sets/src/mage/cards/a/AkroanLineBreaker.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AkroanLineBreaker extends CardImpl {
+public final class AkroanLineBreaker extends CardImpl {
public AkroanLineBreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkroanMastiff.java b/Mage.Sets/src/mage/cards/a/AkroanMastiff.java
index 74a3ba47479..027c390d13d 100644
--- a/Mage.Sets/src/mage/cards/a/AkroanMastiff.java
+++ b/Mage.Sets/src/mage/cards/a/AkroanMastiff.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AkroanMastiff extends CardImpl {
+public final class AkroanMastiff extends CardImpl {
public AkroanMastiff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AkroanPhalanx.java b/Mage.Sets/src/mage/cards/a/AkroanPhalanx.java
index 9c703a330de..16ae1cd749b 100644
--- a/Mage.Sets/src/mage/cards/a/AkroanPhalanx.java
+++ b/Mage.Sets/src/mage/cards/a/AkroanPhalanx.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class AkroanPhalanx extends CardImpl {
+public final class AkroanPhalanx extends CardImpl {
public AkroanPhalanx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AkroanSergeant.java b/Mage.Sets/src/mage/cards/a/AkroanSergeant.java
index 8b81ed0e4ee..2b5d430ec30 100644
--- a/Mage.Sets/src/mage/cards/a/AkroanSergeant.java
+++ b/Mage.Sets/src/mage/cards/a/AkroanSergeant.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AkroanSergeant extends CardImpl {
+public final class AkroanSergeant extends CardImpl {
public AkroanSergeant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkroanSkyguard.java b/Mage.Sets/src/mage/cards/a/AkroanSkyguard.java
index 3b8f220f03a..b0bf1d41a1c 100644
--- a/Mage.Sets/src/mage/cards/a/AkroanSkyguard.java
+++ b/Mage.Sets/src/mage/cards/a/AkroanSkyguard.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class AkroanSkyguard extends CardImpl {
+public final class AkroanSkyguard extends CardImpl {
public AkroanSkyguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AkromaAngelOfFury.java b/Mage.Sets/src/mage/cards/a/AkromaAngelOfFury.java
index 14b17b81de5..cad43652ddb 100644
--- a/Mage.Sets/src/mage/cards/a/AkromaAngelOfFury.java
+++ b/Mage.Sets/src/mage/cards/a/AkromaAngelOfFury.java
@@ -46,7 +46,7 @@ import mage.constants.*;
*
* @author LevelX2
*/
-public class AkromaAngelOfFury extends CardImpl {
+public final class AkromaAngelOfFury extends CardImpl {
public AkromaAngelOfFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AkromaAngelOfWrath.java b/Mage.Sets/src/mage/cards/a/AkromaAngelOfWrath.java
index 53000693f5a..1807a0fc9bc 100644
--- a/Mage.Sets/src/mage/cards/a/AkromaAngelOfWrath.java
+++ b/Mage.Sets/src/mage/cards/a/AkromaAngelOfWrath.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
*
* @author Loki
*/
-public class AkromaAngelOfWrath extends CardImpl {
+public final class AkromaAngelOfWrath extends CardImpl {
public AkromaAngelOfWrath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AkromasBlessing.java b/Mage.Sets/src/mage/cards/a/AkromasBlessing.java
index feb88699d98..c634cab65d8 100644
--- a/Mage.Sets/src/mage/cards/a/AkromasBlessing.java
+++ b/Mage.Sets/src/mage/cards/a/AkromasBlessing.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class AkromasBlessing extends CardImpl {
+public final class AkromasBlessing extends CardImpl {
public AkromasBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AkromasDevoted.java b/Mage.Sets/src/mage/cards/a/AkromasDevoted.java
index 4508c2a73d5..e86a66e1997 100644
--- a/Mage.Sets/src/mage/cards/a/AkromasDevoted.java
+++ b/Mage.Sets/src/mage/cards/a/AkromasDevoted.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LoneFox
*/
-public class AkromasDevoted extends CardImpl {
+public final class AkromasDevoted extends CardImpl {
public AkromasDevoted(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AkromasMemorial.java b/Mage.Sets/src/mage/cards/a/AkromasMemorial.java
index 84499b918d5..2ed6d8879f7 100644
--- a/Mage.Sets/src/mage/cards/a/AkromasMemorial.java
+++ b/Mage.Sets/src/mage/cards/a/AkromasMemorial.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
/**
* @author Loki, noxx
*/
-public class AkromasMemorial extends CardImpl {
+public final class AkromasMemorial extends CardImpl {
public AkromasMemorial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{7}");
diff --git a/Mage.Sets/src/mage/cards/a/AkromasVengeance.java b/Mage.Sets/src/mage/cards/a/AkromasVengeance.java
index 0bef2ea4a95..c7d60f0ad50 100644
--- a/Mage.Sets/src/mage/cards/a/AkromasVengeance.java
+++ b/Mage.Sets/src/mage/cards/a/AkromasVengeance.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Loki
*/
-public class AkromasVengeance extends CardImpl {
+public final class AkromasVengeance extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts, creatures, and enchantments");
diff --git a/Mage.Sets/src/mage/cards/a/AkronLegionnaire.java b/Mage.Sets/src/mage/cards/a/AkronLegionnaire.java
index ade6a6bdd0d..58518b9b929 100644
--- a/Mage.Sets/src/mage/cards/a/AkronLegionnaire.java
+++ b/Mage.Sets/src/mage/cards/a/AkronLegionnaire.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author jeffwadsworth
*/
-public class AkronLegionnaire extends CardImpl {
+public final class AkronLegionnaire extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/a/AkuDjinn.java b/Mage.Sets/src/mage/cards/a/AkuDjinn.java
index b3c3faf92e2..d64fb7e33a5 100644
--- a/Mage.Sets/src/mage/cards/a/AkuDjinn.java
+++ b/Mage.Sets/src/mage/cards/a/AkuDjinn.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class AkuDjinn extends CardImpl {
+public final class AkuDjinn extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature each opponent controls");
diff --git a/Mage.Sets/src/mage/cards/a/AkutaBornOfAsh.java b/Mage.Sets/src/mage/cards/a/AkutaBornOfAsh.java
index 089a01de797..b4dd4e515a7 100644
--- a/Mage.Sets/src/mage/cards/a/AkutaBornOfAsh.java
+++ b/Mage.Sets/src/mage/cards/a/AkutaBornOfAsh.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class AkutaBornOfAsh extends CardImpl {
+public final class AkutaBornOfAsh extends CardImpl {
private static final FilterControlledPermanent filterSwamp = new FilterControlledPermanent("a Swamp");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AlAbarasCarpet.java b/Mage.Sets/src/mage/cards/a/AlAbarasCarpet.java
index 998ae08db80..6540637f36f 100644
--- a/Mage.Sets/src/mage/cards/a/AlAbarasCarpet.java
+++ b/Mage.Sets/src/mage/cards/a/AlAbarasCarpet.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class AlAbarasCarpet extends CardImpl {
+public final class AlAbarasCarpet extends CardImpl {
public AlAbarasCarpet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/a/AlabasterDragon.java b/Mage.Sets/src/mage/cards/a/AlabasterDragon.java
index 626fce317b4..c0e58328c1b 100644
--- a/Mage.Sets/src/mage/cards/a/AlabasterDragon.java
+++ b/Mage.Sets/src/mage/cards/a/AlabasterDragon.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class AlabasterDragon extends CardImpl {
+public final class AlabasterDragon extends CardImpl {
public AlabasterDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlabasterKirin.java b/Mage.Sets/src/mage/cards/a/AlabasterKirin.java
index 0474f355a10..029199537c7 100644
--- a/Mage.Sets/src/mage/cards/a/AlabasterKirin.java
+++ b/Mage.Sets/src/mage/cards/a/AlabasterKirin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AlabasterKirin extends CardImpl {
+public final class AlabasterKirin extends CardImpl {
public AlabasterKirin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlabasterLeech.java b/Mage.Sets/src/mage/cards/a/AlabasterLeech.java
index 1589909b70c..67e21106cd6 100644
--- a/Mage.Sets/src/mage/cards/a/AlabasterLeech.java
+++ b/Mage.Sets/src/mage/cards/a/AlabasterLeech.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class AlabasterLeech extends CardImpl {
+public final class AlabasterLeech extends CardImpl {
private static final FilterCard filter = new FilterCard("White spells");
diff --git a/Mage.Sets/src/mage/cards/a/AlabasterMage.java b/Mage.Sets/src/mage/cards/a/AlabasterMage.java
index c285ebb23ad..1a0e3730dda 100644
--- a/Mage.Sets/src/mage/cards/a/AlabasterMage.java
+++ b/Mage.Sets/src/mage/cards/a/AlabasterMage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class AlabasterMage extends CardImpl {
+public final class AlabasterMage extends CardImpl {
public AlabasterMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlabasterPotion.java b/Mage.Sets/src/mage/cards/a/AlabasterPotion.java
index 36fdbf72b30..851222e953d 100644
--- a/Mage.Sets/src/mage/cards/a/AlabasterPotion.java
+++ b/Mage.Sets/src/mage/cards/a/AlabasterPotion.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author TheElk801
*/
-public class AlabasterPotion extends CardImpl {
+public final class AlabasterPotion extends CardImpl {
public AlabasterPotion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlabasterWall.java b/Mage.Sets/src/mage/cards/a/AlabasterWall.java
index d23ce849f60..14c2103008d 100644
--- a/Mage.Sets/src/mage/cards/a/AlabasterWall.java
+++ b/Mage.Sets/src/mage/cards/a/AlabasterWall.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class AlabasterWall extends CardImpl {
+public final class AlabasterWall extends CardImpl {
public AlabasterWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlabornCavalier.java b/Mage.Sets/src/mage/cards/a/AlabornCavalier.java
index 47de6eecc3a..6254f8a26d7 100644
--- a/Mage.Sets/src/mage/cards/a/AlabornCavalier.java
+++ b/Mage.Sets/src/mage/cards/a/AlabornCavalier.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author FenrisulfrX
*/
-public class AlabornCavalier extends CardImpl {
+public final class AlabornCavalier extends CardImpl {
public AlabornCavalier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlabornGrenadier.java b/Mage.Sets/src/mage/cards/a/AlabornGrenadier.java
index 4af8cb7bd4b..78d4168354b 100644
--- a/Mage.Sets/src/mage/cards/a/AlabornGrenadier.java
+++ b/Mage.Sets/src/mage/cards/a/AlabornGrenadier.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class AlabornGrenadier extends CardImpl {
+public final class AlabornGrenadier extends CardImpl {
public AlabornGrenadier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlabornMusketeer.java b/Mage.Sets/src/mage/cards/a/AlabornMusketeer.java
index f37890bb416..3e1babfc978 100644
--- a/Mage.Sets/src/mage/cards/a/AlabornMusketeer.java
+++ b/Mage.Sets/src/mage/cards/a/AlabornMusketeer.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class AlabornMusketeer extends CardImpl {
+public final class AlabornMusketeer extends CardImpl {
public AlabornMusketeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlabornTrooper.java b/Mage.Sets/src/mage/cards/a/AlabornTrooper.java
index fe6997de11a..b17e7f82586 100644
--- a/Mage.Sets/src/mage/cards/a/AlabornTrooper.java
+++ b/Mage.Sets/src/mage/cards/a/AlabornTrooper.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class AlabornTrooper extends CardImpl {
+public final class AlabornTrooper extends CardImpl {
public AlabornTrooper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlabornVeteran.java b/Mage.Sets/src/mage/cards/a/AlabornVeteran.java
index b29331f9287..3a0e2474cfb 100644
--- a/Mage.Sets/src/mage/cards/a/AlabornVeteran.java
+++ b/Mage.Sets/src/mage/cards/a/AlabornVeteran.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class AlabornVeteran extends CardImpl {
+public final class AlabornVeteran extends CardImpl {
public AlabornVeteran(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlabornZealot.java b/Mage.Sets/src/mage/cards/a/AlabornZealot.java
index 37b137ba16d..2d356afb483 100644
--- a/Mage.Sets/src/mage/cards/a/AlabornZealot.java
+++ b/Mage.Sets/src/mage/cards/a/AlabornZealot.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class AlabornZealot extends CardImpl {
+public final class AlabornZealot extends CardImpl {
public AlabornZealot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Aladdin.java b/Mage.Sets/src/mage/cards/a/Aladdin.java
index e11a21cc479..ce35411e0c1 100644
--- a/Mage.Sets/src/mage/cards/a/Aladdin.java
+++ b/Mage.Sets/src/mage/cards/a/Aladdin.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author nigelzor
*/
-public class Aladdin extends CardImpl {
+public final class Aladdin extends CardImpl {
public Aladdin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AladdinsLamp.java b/Mage.Sets/src/mage/cards/a/AladdinsLamp.java
index bf70fa15571..b8f705d3534 100644
--- a/Mage.Sets/src/mage/cards/a/AladdinsLamp.java
+++ b/Mage.Sets/src/mage/cards/a/AladdinsLamp.java
@@ -48,7 +48,7 @@ import mage.target.TargetCard;
*
* @author MarcoMarin
*/
-public class AladdinsLamp extends CardImpl {
+public final class AladdinsLamp extends CardImpl {
public AladdinsLamp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{10}");
diff --git a/Mage.Sets/src/mage/cards/a/AladdinsRing.java b/Mage.Sets/src/mage/cards/a/AladdinsRing.java
index f50c083cbf2..36e1a9bc7b9 100644
--- a/Mage.Sets/src/mage/cards/a/AladdinsRing.java
+++ b/Mage.Sets/src/mage/cards/a/AladdinsRing.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class AladdinsRing extends CardImpl {
+public final class AladdinsRing extends CardImpl {
public AladdinsRing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{8}");
diff --git a/Mage.Sets/src/mage/cards/a/Alarum.java b/Mage.Sets/src/mage/cards/a/Alarum.java
index 650ef193a84..10381c10362 100644
--- a/Mage.Sets/src/mage/cards/a/Alarum.java
+++ b/Mage.Sets/src/mage/cards/a/Alarum.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Alarum extends CardImpl {
+public final class Alarum extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonattacking creature");
diff --git a/Mage.Sets/src/mage/cards/a/AlbinoTroll.java b/Mage.Sets/src/mage/cards/a/AlbinoTroll.java
index 6640fec0428..d9db8ed8d27 100644
--- a/Mage.Sets/src/mage/cards/a/AlbinoTroll.java
+++ b/Mage.Sets/src/mage/cards/a/AlbinoTroll.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class AlbinoTroll extends CardImpl {
+public final class AlbinoTroll extends CardImpl {
public AlbinoTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AlchemistsApprentice.java b/Mage.Sets/src/mage/cards/a/AlchemistsApprentice.java
index 08fa9d398b0..093d537de5b 100644
--- a/Mage.Sets/src/mage/cards/a/AlchemistsApprentice.java
+++ b/Mage.Sets/src/mage/cards/a/AlchemistsApprentice.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author noxx
*/
-public class AlchemistsApprentice extends CardImpl {
+public final class AlchemistsApprentice extends CardImpl {
public AlchemistsApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AlchemistsGreeting.java b/Mage.Sets/src/mage/cards/a/AlchemistsGreeting.java
index 0135f9e6bbb..154910155fc 100644
--- a/Mage.Sets/src/mage/cards/a/AlchemistsGreeting.java
+++ b/Mage.Sets/src/mage/cards/a/AlchemistsGreeting.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AlchemistsGreeting extends CardImpl {
+public final class AlchemistsGreeting extends CardImpl {
public AlchemistsGreeting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AlchemistsRefuge.java b/Mage.Sets/src/mage/cards/a/AlchemistsRefuge.java
index 42a82af70de..c1d3863710b 100644
--- a/Mage.Sets/src/mage/cards/a/AlchemistsRefuge.java
+++ b/Mage.Sets/src/mage/cards/a/AlchemistsRefuge.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
* @author noxx
*
*/
-public class AlchemistsRefuge extends CardImpl {
+public final class AlchemistsRefuge extends CardImpl {
private static final FilterCard filter = new FilterCard("spells");
diff --git a/Mage.Sets/src/mage/cards/a/AlchemistsVial.java b/Mage.Sets/src/mage/cards/a/AlchemistsVial.java
index 0610f7ceb99..e7c0768c98f 100644
--- a/Mage.Sets/src/mage/cards/a/AlchemistsVial.java
+++ b/Mage.Sets/src/mage/cards/a/AlchemistsVial.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class AlchemistsVial extends CardImpl {
+public final class AlchemistsVial extends CardImpl {
public AlchemistsVial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AlchorsTomb.java b/Mage.Sets/src/mage/cards/a/AlchorsTomb.java
index 21990d82360..a32ab3cb8a4 100644
--- a/Mage.Sets/src/mage/cards/a/AlchorsTomb.java
+++ b/Mage.Sets/src/mage/cards/a/AlchorsTomb.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class AlchorsTomb extends CardImpl {
+public final class AlchorsTomb extends CardImpl {
public AlchorsTomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/a/Aleatory.java b/Mage.Sets/src/mage/cards/a/Aleatory.java
index 6caeeea06da..2d690e4fd39 100644
--- a/Mage.Sets/src/mage/cards/a/Aleatory.java
+++ b/Mage.Sets/src/mage/cards/a/Aleatory.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Aleatory extends CardImpl {
+public final class Aleatory extends CardImpl {
public Aleatory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AlertShuInfantry.java b/Mage.Sets/src/mage/cards/a/AlertShuInfantry.java
index 7e4f32e79f3..ae6b188bd3c 100644
--- a/Mage.Sets/src/mage/cards/a/AlertShuInfantry.java
+++ b/Mage.Sets/src/mage/cards/a/AlertShuInfantry.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AlertShuInfantry extends CardImpl {
+public final class AlertShuInfantry extends CardImpl {
public AlertShuInfantry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AleshaWhoSmilesAtDeath.java b/Mage.Sets/src/mage/cards/a/AleshaWhoSmilesAtDeath.java
index 9faf373ae97..3d56d00fc6f 100644
--- a/Mage.Sets/src/mage/cards/a/AleshaWhoSmilesAtDeath.java
+++ b/Mage.Sets/src/mage/cards/a/AleshaWhoSmilesAtDeath.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class AleshaWhoSmilesAtDeath extends CardImpl {
+public final class AleshaWhoSmilesAtDeath extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/a/AleshasVanguard.java b/Mage.Sets/src/mage/cards/a/AleshasVanguard.java
index 64d7834e2aa..5cd53c987c6 100644
--- a/Mage.Sets/src/mage/cards/a/AleshasVanguard.java
+++ b/Mage.Sets/src/mage/cards/a/AleshasVanguard.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AleshasVanguard extends CardImpl {
+public final class AleshasVanguard extends CardImpl {
public AleshasVanguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AlexiZephyrMage.java b/Mage.Sets/src/mage/cards/a/AlexiZephyrMage.java
index e7e48244581..ef489dce047 100644
--- a/Mage.Sets/src/mage/cards/a/AlexiZephyrMage.java
+++ b/Mage.Sets/src/mage/cards/a/AlexiZephyrMage.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInHand;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class AlexiZephyrMage extends CardImpl {
+public final class AlexiZephyrMage extends CardImpl {
public AlexiZephyrMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AlexisCloak.java b/Mage.Sets/src/mage/cards/a/AlexisCloak.java
index 7002231e71d..6e199b0e483 100644
--- a/Mage.Sets/src/mage/cards/a/AlexisCloak.java
+++ b/Mage.Sets/src/mage/cards/a/AlexisCloak.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class AlexisCloak extends CardImpl {
+public final class AlexisCloak extends CardImpl {
public AlexisCloak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AlgaeGharial.java b/Mage.Sets/src/mage/cards/a/AlgaeGharial.java
index 75d85b772c3..8ae7e638419 100644
--- a/Mage.Sets/src/mage/cards/a/AlgaeGharial.java
+++ b/Mage.Sets/src/mage/cards/a/AlgaeGharial.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class AlgaeGharial extends CardImpl {
+public final class AlgaeGharial extends CardImpl {
public AlgaeGharial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AlhammarretHighArbiter.java b/Mage.Sets/src/mage/cards/a/AlhammarretHighArbiter.java
index 131f83059e0..d8621d51e3a 100644
--- a/Mage.Sets/src/mage/cards/a/AlhammarretHighArbiter.java
+++ b/Mage.Sets/src/mage/cards/a/AlhammarretHighArbiter.java
@@ -52,7 +52,7 @@ import mage.util.GameLog;
*
* @author LevelX2
*/
-public class AlhammarretHighArbiter extends CardImpl {
+public final class AlhammarretHighArbiter extends CardImpl {
public AlhammarretHighArbiter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AlhammarretsArchive.java b/Mage.Sets/src/mage/cards/a/AlhammarretsArchive.java
index dcadf87b5d3..c99268e7db8 100644
--- a/Mage.Sets/src/mage/cards/a/AlhammarretsArchive.java
+++ b/Mage.Sets/src/mage/cards/a/AlhammarretsArchive.java
@@ -43,7 +43,7 @@ import mage.watchers.common.CardsDrawnDuringDrawStepWatcher;
*
* @author fireshoes
*/
-public class AlhammarretsArchive extends CardImpl {
+public final class AlhammarretsArchive extends CardImpl {
public AlhammarretsArchive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/a/AliBaba.java b/Mage.Sets/src/mage/cards/a/AliBaba.java
index 052d5ca9356..e7e052dd92c 100644
--- a/Mage.Sets/src/mage/cards/a/AliBaba.java
+++ b/Mage.Sets/src/mage/cards/a/AliBaba.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class AliBaba extends CardImpl {
+public final class AliBaba extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wall");
diff --git a/Mage.Sets/src/mage/cards/a/AliFromCairo.java b/Mage.Sets/src/mage/cards/a/AliFromCairo.java
index 7406471ad32..3ced96eba00 100644
--- a/Mage.Sets/src/mage/cards/a/AliFromCairo.java
+++ b/Mage.Sets/src/mage/cards/a/AliFromCairo.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author KholdFuzion
*/
-public class AliFromCairo extends CardImpl {
+public final class AliFromCairo extends CardImpl {
public AliFromCairo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AlibansTower.java b/Mage.Sets/src/mage/cards/a/AlibansTower.java
index ce93cdf349a..0e1e127c30a 100644
--- a/Mage.Sets/src/mage/cards/a/AlibansTower.java
+++ b/Mage.Sets/src/mage/cards/a/AlibansTower.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class AlibansTower extends CardImpl {
+public final class AlibansTower extends CardImpl {
public AlibansTower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AlignedHedronNetwork.java b/Mage.Sets/src/mage/cards/a/AlignedHedronNetwork.java
index 95d2037093d..c9c164bba8c 100644
--- a/Mage.Sets/src/mage/cards/a/AlignedHedronNetwork.java
+++ b/Mage.Sets/src/mage/cards/a/AlignedHedronNetwork.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class AlignedHedronNetwork extends CardImpl {
+public final class AlignedHedronNetwork extends CardImpl {
public AlignedHedronNetwork(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/a/AliveWell.java b/Mage.Sets/src/mage/cards/a/AliveWell.java
index e22cd7ca504..48af827c58a 100644
--- a/Mage.Sets/src/mage/cards/a/AliveWell.java
+++ b/Mage.Sets/src/mage/cards/a/AliveWell.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AliveWell extends SplitCard {
+public final class AliveWell extends SplitCard {
public AliveWell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}", "{W}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/a/AllHallowsEve.java b/Mage.Sets/src/mage/cards/a/AllHallowsEve.java
index e79afec154b..7eb993fedb4 100644
--- a/Mage.Sets/src/mage/cards/a/AllHallowsEve.java
+++ b/Mage.Sets/src/mage/cards/a/AllHallowsEve.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class AllHallowsEve extends CardImpl {
+public final class AllHallowsEve extends CardImpl {
public AllHallowsEve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AllIsDust.java b/Mage.Sets/src/mage/cards/a/AllIsDust.java
index 663e8a39902..d08b9215421 100644
--- a/Mage.Sets/src/mage/cards/a/AllIsDust.java
+++ b/Mage.Sets/src/mage/cards/a/AllIsDust.java
@@ -42,7 +42,7 @@ import mage.game.permanent.Permanent;
/**
* @author Loki
*/
-public class AllIsDust extends CardImpl {
+public final class AllIsDust extends CardImpl {
public AllIsDust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{7}");
diff --git a/Mage.Sets/src/mage/cards/a/AllSunsDawn.java b/Mage.Sets/src/mage/cards/a/AllSunsDawn.java
index 57c828bdedd..32795dea9ec 100644
--- a/Mage.Sets/src/mage/cards/a/AllSunsDawn.java
+++ b/Mage.Sets/src/mage/cards/a/AllSunsDawn.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class AllSunsDawn extends CardImpl {
+public final class AllSunsDawn extends CardImpl {
private final static FilterCard filterGreen = new FilterCard("green card from your graveyard");
private final static FilterCard filterRed = new FilterCard("red card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/a/Allay.java b/Mage.Sets/src/mage/cards/a/Allay.java
index 84d4b3dcc9c..e89f7aa4b4e 100644
--- a/Mage.Sets/src/mage/cards/a/Allay.java
+++ b/Mage.Sets/src/mage/cards/a/Allay.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author fireshoes
*/
-public class Allay extends CardImpl {
+public final class Allay extends CardImpl {
public Allay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlleyEvasion.java b/Mage.Sets/src/mage/cards/a/AlleyEvasion.java
index 865a31040bc..66abac96d82 100644
--- a/Mage.Sets/src/mage/cards/a/AlleyEvasion.java
+++ b/Mage.Sets/src/mage/cards/a/AlleyEvasion.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Styxo
*/
-public class AlleyEvasion extends CardImpl {
+public final class AlleyEvasion extends CardImpl {
public AlleyEvasion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlleyGrifters.java b/Mage.Sets/src/mage/cards/a/AlleyGrifters.java
index d3b4cd45065..96101db12b2 100644
--- a/Mage.Sets/src/mage/cards/a/AlleyGrifters.java
+++ b/Mage.Sets/src/mage/cards/a/AlleyGrifters.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class AlleyGrifters extends CardImpl {
+public final class AlleyGrifters extends CardImpl {
public AlleyGrifters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AlleyStrangler.java b/Mage.Sets/src/mage/cards/a/AlleyStrangler.java
index 2dec0ba20c0..a7b7e4106cd 100644
--- a/Mage.Sets/src/mage/cards/a/AlleyStrangler.java
+++ b/Mage.Sets/src/mage/cards/a/AlleyStrangler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class AlleyStrangler extends CardImpl {
+public final class AlleyStrangler extends CardImpl {
public AlleyStrangler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AllianceOfArms.java b/Mage.Sets/src/mage/cards/a/AllianceOfArms.java
index 1cef473597b..e90623d831c 100644
--- a/Mage.Sets/src/mage/cards/a/AllianceOfArms.java
+++ b/Mage.Sets/src/mage/cards/a/AllianceOfArms.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class AllianceOfArms extends CardImpl {
+public final class AllianceOfArms extends CardImpl {
public AllianceOfArms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlliedReinforcements.java b/Mage.Sets/src/mage/cards/a/AlliedReinforcements.java
index 10d37470322..b16dcc0ae54 100644
--- a/Mage.Sets/src/mage/cards/a/AlliedReinforcements.java
+++ b/Mage.Sets/src/mage/cards/a/AlliedReinforcements.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.KnightAllyToken;
*
* @author fireshoes
*/
-public class AlliedReinforcements extends CardImpl {
+public final class AlliedReinforcements extends CardImpl {
public AlliedReinforcements(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlliedStrategies.java b/Mage.Sets/src/mage/cards/a/AlliedStrategies.java
index 517210b49bf..7edec8338b3 100644
--- a/Mage.Sets/src/mage/cards/a/AlliedStrategies.java
+++ b/Mage.Sets/src/mage/cards/a/AlliedStrategies.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author FenrisulfrX
*/
-public class AlliedStrategies extends CardImpl {
+public final class AlliedStrategies extends CardImpl {
public AlliedStrategies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AllosaurusRider.java b/Mage.Sets/src/mage/cards/a/AllosaurusRider.java
index af4da568b47..74418d0bc71 100644
--- a/Mage.Sets/src/mage/cards/a/AllosaurusRider.java
+++ b/Mage.Sets/src/mage/cards/a/AllosaurusRider.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class AllosaurusRider extends CardImpl {
+public final class AllosaurusRider extends CardImpl {
private static final FilterCard filter = new FilterCard("two green cards");
diff --git a/Mage.Sets/src/mage/cards/a/AlloyGolem.java b/Mage.Sets/src/mage/cards/a/AlloyGolem.java
index e9edb400d61..a7b6d3c9d55 100644
--- a/Mage.Sets/src/mage/cards/a/AlloyGolem.java
+++ b/Mage.Sets/src/mage/cards/a/AlloyGolem.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
* @author LoneFox
*/
-public class AlloyGolem extends CardImpl {
+public final class AlloyGolem extends CardImpl {
public AlloyGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/a/AlloyMyr.java b/Mage.Sets/src/mage/cards/a/AlloyMyr.java
index 073e06f69d2..c9815227667 100644
--- a/Mage.Sets/src/mage/cards/a/AlloyMyr.java
+++ b/Mage.Sets/src/mage/cards/a/AlloyMyr.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North, Loki
*/
-public class AlloyMyr extends CardImpl {
+public final class AlloyMyr extends CardImpl {
public AlloyMyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AlluringScent.java b/Mage.Sets/src/mage/cards/a/AlluringScent.java
index 2beb557da29..bd864997f93 100644
--- a/Mage.Sets/src/mage/cards/a/AlluringScent.java
+++ b/Mage.Sets/src/mage/cards/a/AlluringScent.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ilcartographer
*/
-public class AlluringScent extends CardImpl {
+public final class AlluringScent extends CardImpl {
public AlluringScent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AlluringSiren.java b/Mage.Sets/src/mage/cards/a/AlluringSiren.java
index 0cbb9b97d60..ec84000c2fc 100644
--- a/Mage.Sets/src/mage/cards/a/AlluringSiren.java
+++ b/Mage.Sets/src/mage/cards/a/AlluringSiren.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AlluringSiren extends CardImpl {
+public final class AlluringSiren extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/a/AllyEncampment.java b/Mage.Sets/src/mage/cards/a/AllyEncampment.java
index bfccf69aefd..5eae94112ce 100644
--- a/Mage.Sets/src/mage/cards/a/AllyEncampment.java
+++ b/Mage.Sets/src/mage/cards/a/AllyEncampment.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class AllyEncampment extends CardImpl {
+public final class AllyEncampment extends CardImpl {
private static final FilterSpell FILTER = new FilterSpell("an Ally spell");
diff --git a/Mage.Sets/src/mage/cards/a/Alms.java b/Mage.Sets/src/mage/cards/a/Alms.java
index 05c35d804cd..e61611be0aa 100644
--- a/Mage.Sets/src/mage/cards/a/Alms.java
+++ b/Mage.Sets/src/mage/cards/a/Alms.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Alms extends CardImpl {
+public final class Alms extends CardImpl {
public Alms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlmsBeast.java b/Mage.Sets/src/mage/cards/a/AlmsBeast.java
index 1170f11b0bb..213fff1cf3b 100644
--- a/Mage.Sets/src/mage/cards/a/AlmsBeast.java
+++ b/Mage.Sets/src/mage/cards/a/AlmsBeast.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.BlockingAttackerIdPredicate;
*
* @author LevelX2
*/
-public class AlmsBeast extends CardImpl {
+public final class AlmsBeast extends CardImpl {
public AlmsBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AlmsCollector.java b/Mage.Sets/src/mage/cards/a/AlmsCollector.java
index 188ae36118c..3b3f2fda1e4 100644
--- a/Mage.Sets/src/mage/cards/a/AlmsCollector.java
+++ b/Mage.Sets/src/mage/cards/a/AlmsCollector.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AlmsCollector extends CardImpl {
+public final class AlmsCollector extends CardImpl {
public AlmsCollector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AlmsOfTheVein.java b/Mage.Sets/src/mage/cards/a/AlmsOfTheVein.java
index 5384e7c83de..07b5965eafd 100644
--- a/Mage.Sets/src/mage/cards/a/AlmsOfTheVein.java
+++ b/Mage.Sets/src/mage/cards/a/AlmsOfTheVein.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class AlmsOfTheVein extends CardImpl {
+public final class AlmsOfTheVein extends CardImpl {
public AlmsOfTheVein(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AlphaAuthority.java b/Mage.Sets/src/mage/cards/a/AlphaAuthority.java
index cc8b8aa5cd3..b1b06f81c23 100644
--- a/Mage.Sets/src/mage/cards/a/AlphaAuthority.java
+++ b/Mage.Sets/src/mage/cards/a/AlphaAuthority.java
@@ -48,7 +48,7 @@ import mage.util.CardUtil;
/**
* @author LevelX2
*/
-public class AlphaAuthority extends CardImpl {
+public final class AlphaAuthority extends CardImpl {
public AlphaAuthority(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AlphaBrawl.java b/Mage.Sets/src/mage/cards/a/AlphaBrawl.java
index f9a4bb697fa..ef83e31ff24 100644
--- a/Mage.Sets/src/mage/cards/a/AlphaBrawl.java
+++ b/Mage.Sets/src/mage/cards/a/AlphaBrawl.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward
*/
-public class AlphaBrawl extends CardImpl {
+public final class AlphaBrawl extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/a/AlphaKavu.java b/Mage.Sets/src/mage/cards/a/AlphaKavu.java
index 06fe91ca44d..5c3d334d732 100644
--- a/Mage.Sets/src/mage/cards/a/AlphaKavu.java
+++ b/Mage.Sets/src/mage/cards/a/AlphaKavu.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class AlphaKavu extends CardImpl {
+public final class AlphaKavu extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Kavu creature");
diff --git a/Mage.Sets/src/mage/cards/a/AlphaMyr.java b/Mage.Sets/src/mage/cards/a/AlphaMyr.java
index bc2255d3c73..f45117467fc 100644
--- a/Mage.Sets/src/mage/cards/a/AlphaMyr.java
+++ b/Mage.Sets/src/mage/cards/a/AlphaMyr.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AlphaMyr extends CardImpl {
+public final class AlphaMyr extends CardImpl {
public AlphaMyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AlphaStatus.java b/Mage.Sets/src/mage/cards/a/AlphaStatus.java
index 9701f4a5231..b10622752f1 100644
--- a/Mage.Sets/src/mage/cards/a/AlphaStatus.java
+++ b/Mage.Sets/src/mage/cards/a/AlphaStatus.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Eirkei
*/
-public class AlphaStatus extends CardImpl {
+public final class AlphaStatus extends CardImpl {
public AlphaStatus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AlphaTyrranax.java b/Mage.Sets/src/mage/cards/a/AlphaTyrranax.java
index 70f3a694f39..e91211594ec 100644
--- a/Mage.Sets/src/mage/cards/a/AlphaTyrranax.java
+++ b/Mage.Sets/src/mage/cards/a/AlphaTyrranax.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class AlphaTyrranax extends CardImpl {
+public final class AlphaTyrranax extends CardImpl {
public AlphaTyrranax(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AlpineGrizzly.java b/Mage.Sets/src/mage/cards/a/AlpineGrizzly.java
index 20700c71f81..33847398da8 100644
--- a/Mage.Sets/src/mage/cards/a/AlpineGrizzly.java
+++ b/Mage.Sets/src/mage/cards/a/AlpineGrizzly.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AlpineGrizzly extends CardImpl {
+public final class AlpineGrizzly extends CardImpl {
public AlpineGrizzly(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java b/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java
index bf906e08cb8..4ff74aad587 100644
--- a/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java
+++ b/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Quercitron
*/
-public class AltacBloodseeker extends CardImpl {
+public final class AltacBloodseeker extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/a/AltarGolem.java b/Mage.Sets/src/mage/cards/a/AltarGolem.java
index 40a7fad9498..1f2d4002b19 100644
--- a/Mage.Sets/src/mage/cards/a/AltarGolem.java
+++ b/Mage.Sets/src/mage/cards/a/AltarGolem.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
* @author jeffwadsworth
*
*/
-public class AltarGolem extends CardImpl {
+public final class AltarGolem extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/a/AltarOfBone.java b/Mage.Sets/src/mage/cards/a/AltarOfBone.java
index 2b51d510292..bd01e8ec5e2 100644
--- a/Mage.Sets/src/mage/cards/a/AltarOfBone.java
+++ b/Mage.Sets/src/mage/cards/a/AltarOfBone.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class AltarOfBone extends CardImpl {
+public final class AltarOfBone extends CardImpl {
public AltarOfBone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AltarOfDementia.java b/Mage.Sets/src/mage/cards/a/AltarOfDementia.java
index e1f504e2cbc..2a76b0e5903 100644
--- a/Mage.Sets/src/mage/cards/a/AltarOfDementia.java
+++ b/Mage.Sets/src/mage/cards/a/AltarOfDementia.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class AltarOfDementia extends CardImpl {
+public final class AltarOfDementia extends CardImpl {
public AltarOfDementia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AltarOfShadows.java b/Mage.Sets/src/mage/cards/a/AltarOfShadows.java
index f8728f9570d..f423a06c8ae 100644
--- a/Mage.Sets/src/mage/cards/a/AltarOfShadows.java
+++ b/Mage.Sets/src/mage/cards/a/AltarOfShadows.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class AltarOfShadows extends CardImpl {
+public final class AltarOfShadows extends CardImpl {
public AltarOfShadows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{7}");
diff --git a/Mage.Sets/src/mage/cards/a/AltarOfTheBrood.java b/Mage.Sets/src/mage/cards/a/AltarOfTheBrood.java
index 97ca89358a0..b56073f7cbd 100644
--- a/Mage.Sets/src/mage/cards/a/AltarOfTheBrood.java
+++ b/Mage.Sets/src/mage/cards/a/AltarOfTheBrood.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class AltarOfTheBrood extends CardImpl {
+public final class AltarOfTheBrood extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another permanent");
diff --git a/Mage.Sets/src/mage/cards/a/AltarOfTheLost.java b/Mage.Sets/src/mage/cards/a/AltarOfTheLost.java
index f0388811ae1..4a32c337b38 100644
--- a/Mage.Sets/src/mage/cards/a/AltarOfTheLost.java
+++ b/Mage.Sets/src/mage/cards/a/AltarOfTheLost.java
@@ -48,7 +48,7 @@ import mage.game.stack.Spell;
*
* @author BetaSteward
*/
-public class AltarOfTheLost extends CardImpl {
+public final class AltarOfTheLost extends CardImpl {
public AltarOfTheLost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AltarsLight.java b/Mage.Sets/src/mage/cards/a/AltarsLight.java
index 524b8b3be45..95ea964aae4 100644
--- a/Mage.Sets/src/mage/cards/a/AltarsLight.java
+++ b/Mage.Sets/src/mage/cards/a/AltarsLight.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class AltarsLight extends CardImpl {
+public final class AltarsLight extends CardImpl {
public AltarsLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AltarsReap.java b/Mage.Sets/src/mage/cards/a/AltarsReap.java
index 82a3c4295e6..5c78e8b4a9c 100644
--- a/Mage.Sets/src/mage/cards/a/AltarsReap.java
+++ b/Mage.Sets/src/mage/cards/a/AltarsReap.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class AltarsReap extends CardImpl {
+public final class AltarsReap extends CardImpl {
public AltarsReap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AlteredEgo.java b/Mage.Sets/src/mage/cards/a/AlteredEgo.java
index 444910d6c93..ffb7eede06b 100644
--- a/Mage.Sets/src/mage/cards/a/AlteredEgo.java
+++ b/Mage.Sets/src/mage/cards/a/AlteredEgo.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class AlteredEgo extends CardImpl {
+public final class AlteredEgo extends CardImpl {
public AlteredEgo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{2}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Aluren.java b/Mage.Sets/src/mage/cards/a/Aluren.java
index e02bd102dac..576e0c04ca3 100644
--- a/Mage.Sets/src/mage/cards/a/Aluren.java
+++ b/Mage.Sets/src/mage/cards/a/Aluren.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class Aluren extends CardImpl {
+public final class Aluren extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature cards with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/a/AlwaysWatching.java b/Mage.Sets/src/mage/cards/a/AlwaysWatching.java
index 419e1c8d85a..89d0fce433a 100644
--- a/Mage.Sets/src/mage/cards/a/AlwaysWatching.java
+++ b/Mage.Sets/src/mage/cards/a/AlwaysWatching.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author fireshoes
*/
-public class AlwaysWatching extends CardImpl {
+public final class AlwaysWatching extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AmaranthineWall.java b/Mage.Sets/src/mage/cards/a/AmaranthineWall.java
index 7343632a054..97861b96a5d 100644
--- a/Mage.Sets/src/mage/cards/a/AmaranthineWall.java
+++ b/Mage.Sets/src/mage/cards/a/AmaranthineWall.java
@@ -1,50 +1,50 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package mage.cards.a;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
-import mage.abilities.keyword.DefenderAbility;
-import mage.abilities.keyword.IndestructibleAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.SubType;
-
-/**
- *
- * @author Rystan
- */
-public class AmaranthineWall extends CardImpl {
-
- public AmaranthineWall(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
- this.subtype.add(SubType.WALL);
- this.power = new MageInt(0);
- this.toughness = new MageInt(6);
-
- // Defender
- this.addAbility(DefenderAbility.getInstance());
- // {2}: Amaranthine Wall gains indestructible until end of turn.
- GainAbilitySourceEffect effect = new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn);
- SimpleActivatedAbility ability = new SimpleActivatedAbility(effect, new ManaCostsImpl("{2}"));
- this.addAbility(ability);
- }
-
- public AmaranthineWall(final AmaranthineWall card) {
- super(card);
- }
-
- @Override
- public AmaranthineWall copy() {
- return new AmaranthineWall(this);
- }
-}
-
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package mage.cards.a;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
+import mage.abilities.keyword.DefenderAbility;
+import mage.abilities.keyword.IndestructibleAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+
+/**
+ *
+ * @author Rystan
+ */
+public final class AmaranthineWall extends CardImpl {
+
+ public AmaranthineWall(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
+ this.subtype.add(SubType.WALL);
+ this.power = new MageInt(0);
+ this.toughness = new MageInt(6);
+
+ // Defender
+ this.addAbility(DefenderAbility.getInstance());
+ // {2}: Amaranthine Wall gains indestructible until end of turn.
+ GainAbilitySourceEffect effect = new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn);
+ SimpleActivatedAbility ability = new SimpleActivatedAbility(effect, new ManaCostsImpl("{2}"));
+ this.addAbility(ability);
+ }
+
+ public AmaranthineWall(final AmaranthineWall card) {
+ super(card);
+ }
+
+ @Override
+ public AmaranthineWall copy() {
+ return new AmaranthineWall(this);
+ }
+}
+
diff --git a/Mage.Sets/src/mage/cards/a/AmassTheComponents.java b/Mage.Sets/src/mage/cards/a/AmassTheComponents.java
index 7d779a7c0b0..e718ea6372d 100644
--- a/Mage.Sets/src/mage/cards/a/AmassTheComponents.java
+++ b/Mage.Sets/src/mage/cards/a/AmassTheComponents.java
@@ -45,7 +45,7 @@ import mage.target.TargetCard;
*
* @author North
*/
-public class AmassTheComponents extends CardImpl {
+public final class AmassTheComponents extends CardImpl {
public AmassTheComponents(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AmateurAuteur.java b/Mage.Sets/src/mage/cards/a/AmateurAuteur.java
index 12968ab7497..2b448078768 100644
--- a/Mage.Sets/src/mage/cards/a/AmateurAuteur.java
+++ b/Mage.Sets/src/mage/cards/a/AmateurAuteur.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author TheElk801
*/
-public class AmateurAuteur extends CardImpl {
+public final class AmateurAuteur extends CardImpl {
public AmateurAuteur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AmbassadorLaquatus.java b/Mage.Sets/src/mage/cards/a/AmbassadorLaquatus.java
index 64b420a47b2..e006b879883 100644
--- a/Mage.Sets/src/mage/cards/a/AmbassadorLaquatus.java
+++ b/Mage.Sets/src/mage/cards/a/AmbassadorLaquatus.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class AmbassadorLaquatus extends CardImpl {
+public final class AmbassadorLaquatus extends CardImpl {
public AmbassadorLaquatus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AmbassadorOak.java b/Mage.Sets/src/mage/cards/a/AmbassadorOak.java
index 03fb698815f..1b76c7b3454 100644
--- a/Mage.Sets/src/mage/cards/a/AmbassadorOak.java
+++ b/Mage.Sets/src/mage/cards/a/AmbassadorOak.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ElfToken;
*
* @author Loki
*/
-public class AmbassadorOak extends CardImpl {
+public final class AmbassadorOak extends CardImpl {
public AmbassadorOak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AmberPrison.java b/Mage.Sets/src/mage/cards/a/AmberPrison.java
index bb3f0c36dd4..94c225cfb83 100644
--- a/Mage.Sets/src/mage/cards/a/AmberPrison.java
+++ b/Mage.Sets/src/mage/cards/a/AmberPrison.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author Quercitron
*/
-public class AmberPrison extends CardImpl {
+public final class AmberPrison extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/a/AmbitionsCost.java b/Mage.Sets/src/mage/cards/a/AmbitionsCost.java
index 0f8a1977dde..e3c0b4281e5 100644
--- a/Mage.Sets/src/mage/cards/a/AmbitionsCost.java
+++ b/Mage.Sets/src/mage/cards/a/AmbitionsCost.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class AmbitionsCost extends CardImpl {
+public final class AmbitionsCost extends CardImpl {
public AmbitionsCost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AmbitiousAetherborn.java b/Mage.Sets/src/mage/cards/a/AmbitiousAetherborn.java
index ab7dfd5b186..30158d076ef 100644
--- a/Mage.Sets/src/mage/cards/a/AmbitiousAetherborn.java
+++ b/Mage.Sets/src/mage/cards/a/AmbitiousAetherborn.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AmbitiousAetherborn extends CardImpl {
+public final class AmbitiousAetherborn extends CardImpl {
public AmbitiousAetherborn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/Ambuscade.java b/Mage.Sets/src/mage/cards/a/Ambuscade.java
index e97592cb703..ccd18c21c72 100644
--- a/Mage.Sets/src/mage/cards/a/Ambuscade.java
+++ b/Mage.Sets/src/mage/cards/a/Ambuscade.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ciaccona007
*/
-public class Ambuscade extends CardImpl {
+public final class Ambuscade extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/a/AmbuscadeShaman.java b/Mage.Sets/src/mage/cards/a/AmbuscadeShaman.java
index ce6a6d5522a..7274292ba66 100644
--- a/Mage.Sets/src/mage/cards/a/AmbuscadeShaman.java
+++ b/Mage.Sets/src/mage/cards/a/AmbuscadeShaman.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class AmbuscadeShaman extends CardImpl {
+public final class AmbuscadeShaman extends CardImpl {
public AmbuscadeShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/Ambush.java b/Mage.Sets/src/mage/cards/a/Ambush.java
index 447a167d156..d724249942f 100644
--- a/Mage.Sets/src/mage/cards/a/Ambush.java
+++ b/Mage.Sets/src/mage/cards/a/Ambush.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterBlockingCreature;
*
* @author fireshoes
*/
-public class Ambush extends CardImpl {
+public final class Ambush extends CardImpl {
private static final FilterBlockingCreature filter = new FilterBlockingCreature("Blocking creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AmbushCommander.java b/Mage.Sets/src/mage/cards/a/AmbushCommander.java
index f5a03b89350..ea9af3b2f28 100644
--- a/Mage.Sets/src/mage/cards/a/AmbushCommander.java
+++ b/Mage.Sets/src/mage/cards/a/AmbushCommander.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AmbushCommander extends CardImpl {
+public final class AmbushCommander extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.ELF, "an Elf");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("Forests you control");
diff --git a/Mage.Sets/src/mage/cards/a/AmbushKrotiq.java b/Mage.Sets/src/mage/cards/a/AmbushKrotiq.java
index 2d5319ed16e..74e33ee79b5 100644
--- a/Mage.Sets/src/mage/cards/a/AmbushKrotiq.java
+++ b/Mage.Sets/src/mage/cards/a/AmbushKrotiq.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class AmbushKrotiq extends CardImpl {
+public final class AmbushKrotiq extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/a/AmbushParty.java b/Mage.Sets/src/mage/cards/a/AmbushParty.java
index a9f785a9c61..dea33a59ad1 100644
--- a/Mage.Sets/src/mage/cards/a/AmbushParty.java
+++ b/Mage.Sets/src/mage/cards/a/AmbushParty.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AmbushParty extends CardImpl {
+public final class AmbushParty extends CardImpl {
public AmbushParty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AmbushViper.java b/Mage.Sets/src/mage/cards/a/AmbushViper.java
index b9d26e60331..b0d1123bb1e 100644
--- a/Mage.Sets/src/mage/cards/a/AmbushViper.java
+++ b/Mage.Sets/src/mage/cards/a/AmbushViper.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AmbushViper extends CardImpl {
+public final class AmbushViper extends CardImpl {
public AmbushViper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AmmitEternal.java b/Mage.Sets/src/mage/cards/a/AmmitEternal.java
index 3a5601741e1..845f311f7d9 100644
--- a/Mage.Sets/src/mage/cards/a/AmmitEternal.java
+++ b/Mage.Sets/src/mage/cards/a/AmmitEternal.java
@@ -13,7 +13,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
-public class AmmitEternal extends CardImpl {
+public final class AmmitEternal extends CardImpl {
public AmmitEternal(UUID ownerId, CardSetInfo cardSetInfo) {
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/Amnesia.java b/Mage.Sets/src/mage/cards/a/Amnesia.java
index 27b880fbbab..143706b406f 100644
--- a/Mage.Sets/src/mage/cards/a/Amnesia.java
+++ b/Mage.Sets/src/mage/cards/a/Amnesia.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class Amnesia extends CardImpl {
+public final class Amnesia extends CardImpl {
public Amnesia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AmoeboidChangeling.java b/Mage.Sets/src/mage/cards/a/AmoeboidChangeling.java
index 408f622619e..f9908d187fa 100644
--- a/Mage.Sets/src/mage/cards/a/AmoeboidChangeling.java
+++ b/Mage.Sets/src/mage/cards/a/AmoeboidChangeling.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author EvilGeek
*/
-public class AmoeboidChangeling extends CardImpl {
+public final class AmoeboidChangeling extends CardImpl {
public AmoeboidChangeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Amok.java b/Mage.Sets/src/mage/cards/a/Amok.java
index 3c94c5b26ea..be214eae4a1 100644
--- a/Mage.Sets/src/mage/cards/a/Amok.java
+++ b/Mage.Sets/src/mage/cards/a/Amok.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Amok extends CardImpl {
+public final class Amok extends CardImpl {
public Amok(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AmphinCutthroat.java b/Mage.Sets/src/mage/cards/a/AmphinCutthroat.java
index 9d033a104ee..d363aa3f5e0 100644
--- a/Mage.Sets/src/mage/cards/a/AmphinCutthroat.java
+++ b/Mage.Sets/src/mage/cards/a/AmphinCutthroat.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AmphinCutthroat extends CardImpl {
+public final class AmphinCutthroat extends CardImpl {
public AmphinCutthroat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AmphinPathmage.java b/Mage.Sets/src/mage/cards/a/AmphinPathmage.java
index 313a016e8ac..7f5883d34a9 100644
--- a/Mage.Sets/src/mage/cards/a/AmphinPathmage.java
+++ b/Mage.Sets/src/mage/cards/a/AmphinPathmage.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AmphinPathmage extends CardImpl {
+public final class AmphinPathmage extends CardImpl {
public AmphinPathmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AmprynTactician.java b/Mage.Sets/src/mage/cards/a/AmprynTactician.java
index 71545f0c5e7..949d24c69bd 100644
--- a/Mage.Sets/src/mage/cards/a/AmprynTactician.java
+++ b/Mage.Sets/src/mage/cards/a/AmprynTactician.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Wehk
*/
-public class AmprynTactician extends CardImpl {
+public final class AmprynTactician extends CardImpl {
public AmprynTactician(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AmrouKithkin.java b/Mage.Sets/src/mage/cards/a/AmrouKithkin.java
index 21a264ad448..057e72a81f6 100644
--- a/Mage.Sets/src/mage/cards/a/AmrouKithkin.java
+++ b/Mage.Sets/src/mage/cards/a/AmrouKithkin.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author fireshoes
*/
-public class AmrouKithkin extends CardImpl {
+public final class AmrouKithkin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/a/AmrouScout.java b/Mage.Sets/src/mage/cards/a/AmrouScout.java
index 055e0bb6753..bc621eb6316 100644
--- a/Mage.Sets/src/mage/cards/a/AmrouScout.java
+++ b/Mage.Sets/src/mage/cards/a/AmrouScout.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class AmrouScout extends CardImpl {
+public final class AmrouScout extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 3 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AmrouSeekers.java b/Mage.Sets/src/mage/cards/a/AmrouSeekers.java
index 5fb7a3689df..cb600a9a6b9 100644
--- a/Mage.Sets/src/mage/cards/a/AmrouSeekers.java
+++ b/Mage.Sets/src/mage/cards/a/AmrouSeekers.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class AmrouSeekers extends CardImpl {
+public final class AmrouSeekers extends CardImpl {
private final static FilterCreaturePermanent notArtificatOrWhite = new FilterCreaturePermanent("except by artifact creatures and/or white creatures");
diff --git a/Mage.Sets/src/mage/cards/a/Amugaba.java b/Mage.Sets/src/mage/cards/a/Amugaba.java
index 551b09ed71a..818b63974df 100644
--- a/Mage.Sets/src/mage/cards/a/Amugaba.java
+++ b/Mage.Sets/src/mage/cards/a/Amugaba.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author cbt33
*/
-public class Amugaba extends CardImpl {
+public final class Amugaba extends CardImpl {
public Amugaba(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AmuletOfKroog.java b/Mage.Sets/src/mage/cards/a/AmuletOfKroog.java
index fbe7b6b4d4f..da819e7bc77 100644
--- a/Mage.Sets/src/mage/cards/a/AmuletOfKroog.java
+++ b/Mage.Sets/src/mage/cards/a/AmuletOfKroog.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author anonymous
*/
-public class AmuletOfKroog extends CardImpl {
+public final class AmuletOfKroog extends CardImpl {
public AmuletOfKroog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AmuletOfUnmaking.java b/Mage.Sets/src/mage/cards/a/AmuletOfUnmaking.java
index b41e36a527a..68e0a903825 100644
--- a/Mage.Sets/src/mage/cards/a/AmuletOfUnmaking.java
+++ b/Mage.Sets/src/mage/cards/a/AmuletOfUnmaking.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class AmuletOfUnmaking extends CardImpl {
+public final class AmuletOfUnmaking extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or enchantment");
diff --git a/Mage.Sets/src/mage/cards/a/AmuletOfVigor.java b/Mage.Sets/src/mage/cards/a/AmuletOfVigor.java
index 51cab4b2908..f36351ee9db 100644
--- a/Mage.Sets/src/mage/cards/a/AmuletOfVigor.java
+++ b/Mage.Sets/src/mage/cards/a/AmuletOfVigor.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author Loki
*/
-public class AmuletOfVigor extends CardImpl {
+public final class AmuletOfVigor extends CardImpl {
public AmuletOfVigor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/a/AnHavvaConstable.java b/Mage.Sets/src/mage/cards/a/AnHavvaConstable.java
index 38ad797db96..10f1b3ee10d 100644
--- a/Mage.Sets/src/mage/cards/a/AnHavvaConstable.java
+++ b/Mage.Sets/src/mage/cards/a/AnHavvaConstable.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class AnHavvaConstable extends CardImpl {
+public final class AnHavvaConstable extends CardImpl {
public AnHavvaConstable(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnHavvaInn.java b/Mage.Sets/src/mage/cards/a/AnHavvaInn.java
index ce38a5427f6..edf0d4671dd 100644
--- a/Mage.Sets/src/mage/cards/a/AnHavvaInn.java
+++ b/Mage.Sets/src/mage/cards/a/AnHavvaInn.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class AnHavvaInn extends CardImpl {
+public final class AnHavvaInn extends CardImpl {
public AnHavvaInn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnHavvaTownship.java b/Mage.Sets/src/mage/cards/a/AnHavvaTownship.java
index be5cf4ce751..342dc232e30 100644
--- a/Mage.Sets/src/mage/cards/a/AnHavvaTownship.java
+++ b/Mage.Sets/src/mage/cards/a/AnHavvaTownship.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class AnHavvaTownship extends CardImpl {
+public final class AnHavvaTownship extends CardImpl {
public AnHavvaTownship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/AnZerrinRuins.java b/Mage.Sets/src/mage/cards/a/AnZerrinRuins.java
index 84b4c7113f4..c6357504e71 100644
--- a/Mage.Sets/src/mage/cards/a/AnZerrinRuins.java
+++ b/Mage.Sets/src/mage/cards/a/AnZerrinRuins.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class AnZerrinRuins extends CardImpl {
+public final class AnZerrinRuins extends CardImpl {
public AnZerrinRuins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AnaBattlemage.java b/Mage.Sets/src/mage/cards/a/AnaBattlemage.java
index ac1e13a6e3b..7475c00cd09 100644
--- a/Mage.Sets/src/mage/cards/a/AnaBattlemage.java
+++ b/Mage.Sets/src/mage/cards/a/AnaBattlemage.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetOpponent;
* @author LoneFox
*/
-public class AnaBattlemage extends CardImpl {
+public final class AnaBattlemage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creature");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AnaDisciple.java b/Mage.Sets/src/mage/cards/a/AnaDisciple.java
index b7a3eb5913c..67de5fb721d 100644
--- a/Mage.Sets/src/mage/cards/a/AnaDisciple.java
+++ b/Mage.Sets/src/mage/cards/a/AnaDisciple.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class AnaDisciple extends CardImpl {
+public final class AnaDisciple extends CardImpl {
public AnaDisciple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnaSanctuary.java b/Mage.Sets/src/mage/cards/a/AnaSanctuary.java
index 8b8584ecbaa..716e1094478 100644
--- a/Mage.Sets/src/mage/cards/a/AnaSanctuary.java
+++ b/Mage.Sets/src/mage/cards/a/AnaSanctuary.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class AnaSanctuary extends CardImpl {
+public final class AnaSanctuary extends CardImpl {
public AnaSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnabaAncestor.java b/Mage.Sets/src/mage/cards/a/AnabaAncestor.java
index 6fc4a3fcca4..7cb35233125 100644
--- a/Mage.Sets/src/mage/cards/a/AnabaAncestor.java
+++ b/Mage.Sets/src/mage/cards/a/AnabaAncestor.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class AnabaAncestor extends CardImpl {
+public final class AnabaAncestor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Another target Minotaur creature");
diff --git a/Mage.Sets/src/mage/cards/a/AnabaBodyguard.java b/Mage.Sets/src/mage/cards/a/AnabaBodyguard.java
index 8efa8468d5d..144ce8a6782 100644
--- a/Mage.Sets/src/mage/cards/a/AnabaBodyguard.java
+++ b/Mage.Sets/src/mage/cards/a/AnabaBodyguard.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AnabaBodyguard extends CardImpl {
+public final class AnabaBodyguard extends CardImpl {
public AnabaBodyguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AnabaShaman.java b/Mage.Sets/src/mage/cards/a/AnabaShaman.java
index c7423ba1d45..090df1ccc56 100644
--- a/Mage.Sets/src/mage/cards/a/AnabaShaman.java
+++ b/Mage.Sets/src/mage/cards/a/AnabaShaman.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class AnabaShaman extends CardImpl {
+public final class AnabaShaman extends CardImpl {
public AnabaShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AnabaSpiritCrafter.java b/Mage.Sets/src/mage/cards/a/AnabaSpiritCrafter.java
index 3c92bd8ba99..aed0150c7a4 100644
--- a/Mage.Sets/src/mage/cards/a/AnabaSpiritCrafter.java
+++ b/Mage.Sets/src/mage/cards/a/AnabaSpiritCrafter.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class AnabaSpiritCrafter extends CardImpl {
+public final class AnabaSpiritCrafter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Minotaur creatures");
diff --git a/Mage.Sets/src/mage/cards/a/Anaconda.java b/Mage.Sets/src/mage/cards/a/Anaconda.java
index 9736e4d07bb..bb246eb4aff 100644
--- a/Mage.Sets/src/mage/cards/a/Anaconda.java
+++ b/Mage.Sets/src/mage/cards/a/Anaconda.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class Anaconda extends CardImpl {
+public final class Anaconda extends CardImpl {
public Anaconda (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnafenzaKinTreeSpirit.java b/Mage.Sets/src/mage/cards/a/AnafenzaKinTreeSpirit.java
index 07246e1a58b..59088234de8 100644
--- a/Mage.Sets/src/mage/cards/a/AnafenzaKinTreeSpirit.java
+++ b/Mage.Sets/src/mage/cards/a/AnafenzaKinTreeSpirit.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author fireshoes
*/
-public class AnafenzaKinTreeSpirit extends CardImpl {
+public final class AnafenzaKinTreeSpirit extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/a/AnafenzaTheForemost.java b/Mage.Sets/src/mage/cards/a/AnafenzaTheForemost.java
index b6b5aa3191d..71778280974 100644
--- a/Mage.Sets/src/mage/cards/a/AnafenzaTheForemost.java
+++ b/Mage.Sets/src/mage/cards/a/AnafenzaTheForemost.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class AnafenzaTheForemost extends CardImpl {
+public final class AnafenzaTheForemost extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target tapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/a/AnakinSkywalker.java b/Mage.Sets/src/mage/cards/a/AnakinSkywalker.java
index c443902e79f..2f4c2c1b997 100644
--- a/Mage.Sets/src/mage/cards/a/AnakinSkywalker.java
+++ b/Mage.Sets/src/mage/cards/a/AnakinSkywalker.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class AnakinSkywalker extends CardImpl {
+public final class AnakinSkywalker extends CardImpl {
public AnakinSkywalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/Anarchist.java b/Mage.Sets/src/mage/cards/a/Anarchist.java
index bcd15cb7220..04a784d7e7b 100644
--- a/Mage.Sets/src/mage/cards/a/Anarchist.java
+++ b/Mage.Sets/src/mage/cards/a/Anarchist.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class Anarchist extends CardImpl {
+public final class Anarchist extends CardImpl {
private static final FilterCard filter = new FilterCard("sorcery card");
static {
diff --git a/Mage.Sets/src/mage/cards/a/Anarchy.java b/Mage.Sets/src/mage/cards/a/Anarchy.java
index ce5418c8d70..93dee6e7ee5 100644
--- a/Mage.Sets/src/mage/cards/a/Anarchy.java
+++ b/Mage.Sets/src/mage/cards/a/Anarchy.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class Anarchy extends CardImpl {
+public final class Anarchy extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("white permanents");
diff --git a/Mage.Sets/src/mage/cards/a/Anathemancer.java b/Mage.Sets/src/mage/cards/a/Anathemancer.java
index 7f293e791fd..044c4b35acd 100644
--- a/Mage.Sets/src/mage/cards/a/Anathemancer.java
+++ b/Mage.Sets/src/mage/cards/a/Anathemancer.java
@@ -52,7 +52,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class Anathemancer extends CardImpl {
+public final class Anathemancer extends CardImpl {
public Anathemancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/Anavolver.java b/Mage.Sets/src/mage/cards/a/Anavolver.java
index 36937556905..7d85d92129f 100644
--- a/Mage.Sets/src/mage/cards/a/Anavolver.java
+++ b/Mage.Sets/src/mage/cards/a/Anavolver.java
@@ -51,7 +51,7 @@ import mage.counters.CounterType;
/**
* @author Loki
*/
-public class Anavolver extends CardImpl {
+public final class Anavolver extends CardImpl {
public Anavolver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnaxAndCymede.java b/Mage.Sets/src/mage/cards/a/AnaxAndCymede.java
index 1ddb4db8bfb..9874646bf6e 100644
--- a/Mage.Sets/src/mage/cards/a/AnaxAndCymede.java
+++ b/Mage.Sets/src/mage/cards/a/AnaxAndCymede.java
@@ -49,7 +49,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class AnaxAndCymede extends CardImpl {
+public final class AnaxAndCymede extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/a/AncestorsChosen.java b/Mage.Sets/src/mage/cards/a/AncestorsChosen.java
index ca544497fa6..a82f2eac96a 100644
--- a/Mage.Sets/src/mage/cards/a/AncestorsChosen.java
+++ b/Mage.Sets/src/mage/cards/a/AncestorsChosen.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class AncestorsChosen extends CardImpl {
+public final class AncestorsChosen extends CardImpl {
public AncestorsChosen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AncestorsProphet.java b/Mage.Sets/src/mage/cards/a/AncestorsProphet.java
index 30aab68f9c9..e43249cb8c4 100644
--- a/Mage.Sets/src/mage/cards/a/AncestorsProphet.java
+++ b/Mage.Sets/src/mage/cards/a/AncestorsProphet.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Wehk
*/
-public class AncestorsProphet extends CardImpl {
+public final class AncestorsProphet extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Clerics you control");
diff --git a/Mage.Sets/src/mage/cards/a/AncestralKnowledge.java b/Mage.Sets/src/mage/cards/a/AncestralKnowledge.java
index 3ce6ce1345f..1a20978db75 100644
--- a/Mage.Sets/src/mage/cards/a/AncestralKnowledge.java
+++ b/Mage.Sets/src/mage/cards/a/AncestralKnowledge.java
@@ -48,7 +48,7 @@ import mage.target.TargetCard;
*
* @author emerald000
*/
-public class AncestralKnowledge extends CardImpl {
+public final class AncestralKnowledge extends CardImpl {
public AncestralKnowledge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AncestralMask.java b/Mage.Sets/src/mage/cards/a/AncestralMask.java
index 18dbb73baf0..743338b0230 100644
--- a/Mage.Sets/src/mage/cards/a/AncestralMask.java
+++ b/Mage.Sets/src/mage/cards/a/AncestralMask.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class AncestralMask extends CardImpl {
+public final class AncestralMask extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("each other enchantment on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/a/AncestralMemories.java b/Mage.Sets/src/mage/cards/a/AncestralMemories.java
index ae4ed209c1a..147a56417b9 100644
--- a/Mage.Sets/src/mage/cards/a/AncestralMemories.java
+++ b/Mage.Sets/src/mage/cards/a/AncestralMemories.java
@@ -46,7 +46,7 @@ import mage.target.TargetCard;
*
* @author Quercitron
*/
-public class AncestralMemories extends CardImpl {
+public final class AncestralMemories extends CardImpl {
public AncestralMemories(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AncestralRecall.java b/Mage.Sets/src/mage/cards/a/AncestralRecall.java
index cdaeecd516d..84e235ea8f9 100644
--- a/Mage.Sets/src/mage/cards/a/AncestralRecall.java
+++ b/Mage.Sets/src/mage/cards/a/AncestralRecall.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class AncestralRecall extends CardImpl {
+public final class AncestralRecall extends CardImpl {
public AncestralRecall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AncestralStatue.java b/Mage.Sets/src/mage/cards/a/AncestralStatue.java
index 0c4d6c56a82..ea098064769 100644
--- a/Mage.Sets/src/mage/cards/a/AncestralStatue.java
+++ b/Mage.Sets/src/mage/cards/a/AncestralStatue.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class AncestralStatue extends CardImpl {
+public final class AncestralStatue extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("nonland permanent you control");
diff --git a/Mage.Sets/src/mage/cards/a/AncestralTribute.java b/Mage.Sets/src/mage/cards/a/AncestralTribute.java
index 5510bac7b98..de40c9bf73c 100644
--- a/Mage.Sets/src/mage/cards/a/AncestralTribute.java
+++ b/Mage.Sets/src/mage/cards/a/AncestralTribute.java
@@ -43,7 +43,7 @@ import mage.filter.FilterCard;
* @author cbt33
*/
-public class AncestralTribute extends CardImpl {
+public final class AncestralTribute extends CardImpl {
public AncestralTribute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AncestralVengeance.java b/Mage.Sets/src/mage/cards/a/AncestralVengeance.java
index ecbc6a3150e..bf578642efb 100644
--- a/Mage.Sets/src/mage/cards/a/AncestralVengeance.java
+++ b/Mage.Sets/src/mage/cards/a/AncestralVengeance.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AncestralVengeance extends CardImpl {
+public final class AncestralVengeance extends CardImpl {
public AncestralVengeance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AncestralVision.java b/Mage.Sets/src/mage/cards/a/AncestralVision.java
index 8fdd1b575ba..993558784f3 100644
--- a/Mage.Sets/src/mage/cards/a/AncestralVision.java
+++ b/Mage.Sets/src/mage/cards/a/AncestralVision.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class AncestralVision extends CardImpl {
+public final class AncestralVision extends CardImpl {
public AncestralVision(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"");
diff --git a/Mage.Sets/src/mage/cards/a/AnchorToTheAether.java b/Mage.Sets/src/mage/cards/a/AnchorToTheAether.java
index 2c8acf4779e..95b3c7e0f6c 100644
--- a/Mage.Sets/src/mage/cards/a/AnchorToTheAether.java
+++ b/Mage.Sets/src/mage/cards/a/AnchorToTheAether.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AnchorToTheAether extends CardImpl {
+public final class AnchorToTheAether extends CardImpl {
public AnchorToTheAether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientAmphitheater.java b/Mage.Sets/src/mage/cards/a/AncientAmphitheater.java
index 36bc916d8a4..c61ec55e4dd 100644
--- a/Mage.Sets/src/mage/cards/a/AncientAmphitheater.java
+++ b/Mage.Sets/src/mage/cards/a/AncientAmphitheater.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class AncientAmphitheater extends CardImpl {
+public final class AncientAmphitheater extends CardImpl {
private static final FilterCard filter = new FilterCard("a Giant from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AncientAnimus.java b/Mage.Sets/src/mage/cards/a/AncientAnimus.java
index d799698ae6d..0a1dccc4f9e 100644
--- a/Mage.Sets/src/mage/cards/a/AncientAnimus.java
+++ b/Mage.Sets/src/mage/cards/a/AncientAnimus.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author TheElk801
*/
-public class AncientAnimus extends CardImpl {
+public final class AncientAnimus extends CardImpl {
public AncientAnimus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientBrontodon.java b/Mage.Sets/src/mage/cards/a/AncientBrontodon.java
index 074622f8161..f53773a0cae 100644
--- a/Mage.Sets/src/mage/cards/a/AncientBrontodon.java
+++ b/Mage.Sets/src/mage/cards/a/AncientBrontodon.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author caldover
*/
-public class AncientBrontodon extends CardImpl {
+public final class AncientBrontodon extends CardImpl {
public AncientBrontodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientCarp.java b/Mage.Sets/src/mage/cards/a/AncientCarp.java
index 8c2d8656306..78ed265773c 100644
--- a/Mage.Sets/src/mage/cards/a/AncientCarp.java
+++ b/Mage.Sets/src/mage/cards/a/AncientCarp.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AncientCarp extends CardImpl {
+public final class AncientCarp extends CardImpl {
public AncientCarp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientCrab.java b/Mage.Sets/src/mage/cards/a/AncientCrab.java
index ab97e9f6c63..3d50779b8f9 100644
--- a/Mage.Sets/src/mage/cards/a/AncientCrab.java
+++ b/Mage.Sets/src/mage/cards/a/AncientCrab.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AncientCrab extends CardImpl {
+public final class AncientCrab extends CardImpl {
public AncientCrab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientCraving.java b/Mage.Sets/src/mage/cards/a/AncientCraving.java
index 8a9d54287bf..e30bd0b468e 100644
--- a/Mage.Sets/src/mage/cards/a/AncientCraving.java
+++ b/Mage.Sets/src/mage/cards/a/AncientCraving.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author ilcartographer
*/
-public class AncientCraving extends CardImpl {
+public final class AncientCraving extends CardImpl {
public AncientCraving(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientDen.java b/Mage.Sets/src/mage/cards/a/AncientDen.java
index fc05c87d36d..cfa10999865 100644
--- a/Mage.Sets/src/mage/cards/a/AncientDen.java
+++ b/Mage.Sets/src/mage/cards/a/AncientDen.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class AncientDen extends CardImpl {
+public final class AncientDen extends CardImpl {
public AncientDen (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/a/AncientExcavation.java b/Mage.Sets/src/mage/cards/a/AncientExcavation.java
index 9832cb14cb5..9b1b545e511 100644
--- a/Mage.Sets/src/mage/cards/a/AncientExcavation.java
+++ b/Mage.Sets/src/mage/cards/a/AncientExcavation.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class AncientExcavation extends CardImpl {
+public final class AncientExcavation extends CardImpl {
public AncientExcavation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientGrudge.java b/Mage.Sets/src/mage/cards/a/AncientGrudge.java
index 6008c54ee08..e0b56ec8ee6 100644
--- a/Mage.Sets/src/mage/cards/a/AncientGrudge.java
+++ b/Mage.Sets/src/mage/cards/a/AncientGrudge.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetArtifactPermanent;
/**
* @author nantuko
*/
-public class AncientGrudge extends CardImpl {
+public final class AncientGrudge extends CardImpl {
public AncientGrudge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientHellkite.java b/Mage.Sets/src/mage/cards/a/AncientHellkite.java
index cee30255261..8d1596d4d09 100644
--- a/Mage.Sets/src/mage/cards/a/AncientHellkite.java
+++ b/Mage.Sets/src/mage/cards/a/AncientHellkite.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AncientHellkite extends CardImpl {
+public final class AncientHellkite extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature defending player controls");
diff --git a/Mage.Sets/src/mage/cards/a/AncientHolocron.java b/Mage.Sets/src/mage/cards/a/AncientHolocron.java
index 6a979c525d5..96c6a108570 100644
--- a/Mage.Sets/src/mage/cards/a/AncientHolocron.java
+++ b/Mage.Sets/src/mage/cards/a/AncientHolocron.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*
* @author Styxo
*/
-public class AncientHolocron extends CardImpl {
+public final class AncientHolocron extends CardImpl {
private static final FilterSpell filter = new FilterSpell("multicolored spells");
diff --git a/Mage.Sets/src/mage/cards/a/AncientHydra.java b/Mage.Sets/src/mage/cards/a/AncientHydra.java
index 9268475e059..815487f9542 100644
--- a/Mage.Sets/src/mage/cards/a/AncientHydra.java
+++ b/Mage.Sets/src/mage/cards/a/AncientHydra.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class AncientHydra extends CardImpl {
+public final class AncientHydra extends CardImpl {
public AncientHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientKavu.java b/Mage.Sets/src/mage/cards/a/AncientKavu.java
index 4967765b828..392602e4b54 100644
--- a/Mage.Sets/src/mage/cards/a/AncientKavu.java
+++ b/Mage.Sets/src/mage/cards/a/AncientKavu.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class AncientKavu extends CardImpl {
+public final class AncientKavu extends CardImpl {
public AncientKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientOfTheEquinox.java b/Mage.Sets/src/mage/cards/a/AncientOfTheEquinox.java
index f2fe578eea7..61a6e097ba6 100644
--- a/Mage.Sets/src/mage/cards/a/AncientOfTheEquinox.java
+++ b/Mage.Sets/src/mage/cards/a/AncientOfTheEquinox.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AncientOfTheEquinox extends CardImpl {
+public final class AncientOfTheEquinox extends CardImpl {
public AncientOfTheEquinox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/a/AncientOoze.java b/Mage.Sets/src/mage/cards/a/AncientOoze.java
index e6b1542c564..9c2da949d3a 100644
--- a/Mage.Sets/src/mage/cards/a/AncientOoze.java
+++ b/Mage.Sets/src/mage/cards/a/AncientOoze.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author Backfir3
*/
-public class AncientOoze extends CardImpl {
+public final class AncientOoze extends CardImpl {
public AncientOoze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientRunes.java b/Mage.Sets/src/mage/cards/a/AncientRunes.java
index 7ae003fdd6b..185fa934bb6 100644
--- a/Mage.Sets/src/mage/cards/a/AncientRunes.java
+++ b/Mage.Sets/src/mage/cards/a/AncientRunes.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class AncientRunes extends CardImpl {
+public final class AncientRunes extends CardImpl {
public AncientRunes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientSilverback.java b/Mage.Sets/src/mage/cards/a/AncientSilverback.java
index 01644f65045..6b3daf0c88f 100644
--- a/Mage.Sets/src/mage/cards/a/AncientSilverback.java
+++ b/Mage.Sets/src/mage/cards/a/AncientSilverback.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class AncientSilverback extends CardImpl {
+public final class AncientSilverback extends CardImpl {
public AncientSilverback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientSpider.java b/Mage.Sets/src/mage/cards/a/AncientSpider.java
index 27584b76470..aa5bb6feaae 100644
--- a/Mage.Sets/src/mage/cards/a/AncientSpider.java
+++ b/Mage.Sets/src/mage/cards/a/AncientSpider.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
* @author LoneFox
*/
-public class AncientSpider extends CardImpl {
+public final class AncientSpider extends CardImpl {
public AncientSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AncientSpring.java b/Mage.Sets/src/mage/cards/a/AncientSpring.java
index 432ee378bff..c0fca2ba8de 100644
--- a/Mage.Sets/src/mage/cards/a/AncientSpring.java
+++ b/Mage.Sets/src/mage/cards/a/AncientSpring.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class AncientSpring extends CardImpl {
+public final class AncientSpring extends CardImpl {
public AncientSpring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/AncientStirrings.java b/Mage.Sets/src/mage/cards/a/AncientStirrings.java
index 0f1f1d90f03..46405781301 100644
--- a/Mage.Sets/src/mage/cards/a/AncientStirrings.java
+++ b/Mage.Sets/src/mage/cards/a/AncientStirrings.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
/**
* @author LevelX
*/
-public class AncientStirrings extends CardImpl {
+public final class AncientStirrings extends CardImpl {
private static final FilterCard filter = new FilterCard("a colorless card");
diff --git a/Mage.Sets/src/mage/cards/a/AncientTomb.java b/Mage.Sets/src/mage/cards/a/AncientTomb.java
index c4551f75753..5b5100810a7 100644
--- a/Mage.Sets/src/mage/cards/a/AncientTomb.java
+++ b/Mage.Sets/src/mage/cards/a/AncientTomb.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class AncientTomb extends CardImpl {
+public final class AncientTomb extends CardImpl {
public AncientTomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/AncientZiggurat.java b/Mage.Sets/src/mage/cards/a/AncientZiggurat.java
index fd81ec5f958..7ae25f6def6 100644
--- a/Mage.Sets/src/mage/cards/a/AncientZiggurat.java
+++ b/Mage.Sets/src/mage/cards/a/AncientZiggurat.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class AncientZiggurat extends CardImpl {
+public final class AncientZiggurat extends CardImpl {
public AncientZiggurat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/AndraditeLeech.java b/Mage.Sets/src/mage/cards/a/AndraditeLeech.java
index c85b2390ed8..1a77eb090d2 100644
--- a/Mage.Sets/src/mage/cards/a/AndraditeLeech.java
+++ b/Mage.Sets/src/mage/cards/a/AndraditeLeech.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class AndraditeLeech extends CardImpl {
+public final class AndraditeLeech extends CardImpl {
private static final FilterCard filter = new FilterCard("Black spells");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfCondemnation.java b/Mage.Sets/src/mage/cards/a/AngelOfCondemnation.java
index b45988aebae..748dd175601 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfCondemnation.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfCondemnation.java
@@ -61,7 +61,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class AngelOfCondemnation extends CardImpl {
+public final class AngelOfCondemnation extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfDeliverance.java b/Mage.Sets/src/mage/cards/a/AngelOfDeliverance.java
index 1b68f6cd258..53381c90bd6 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfDeliverance.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfDeliverance.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class AngelOfDeliverance extends CardImpl {
+public final class AngelOfDeliverance extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfDespair.java b/Mage.Sets/src/mage/cards/a/AngelOfDespair.java
index 4e456a5cd67..2b6993b3224 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfDespair.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfDespair.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class AngelOfDespair extends CardImpl {
+public final class AngelOfDespair extends CardImpl {
public AngelOfDespair (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfFinality.java b/Mage.Sets/src/mage/cards/a/AngelOfFinality.java
index 3b8cfbbe522..93df7187314 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfFinality.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfFinality.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class AngelOfFinality extends CardImpl {
+public final class AngelOfFinality extends CardImpl {
public AngelOfFinality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfFlightAlabaster.java b/Mage.Sets/src/mage/cards/a/AngelOfFlightAlabaster.java
index e34fae2a42c..5efe4321a25 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfFlightAlabaster.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfFlightAlabaster.java
@@ -16,7 +16,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.target.Target;
import mage.target.common.TargetCardInYourGraveyard;
-public class AngelOfFlightAlabaster extends CardImpl {
+public final class AngelOfFlightAlabaster extends CardImpl {
private static final FilterCard filter = new FilterCard("Spirit card from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfFury.java b/Mage.Sets/src/mage/cards/a/AngelOfFury.java
index 0eb4313e251..ead46adb898 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfFury.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfFury.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class AngelOfFury extends CardImpl {
+public final class AngelOfFury extends CardImpl {
public AngelOfFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java b/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java
index 39355c6b025..4a8e1ef4bd6 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class AngelOfGlorysRise extends CardImpl {
+public final class AngelOfGlorysRise extends CardImpl {
public AngelOfGlorysRise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{W}");
@@ -103,7 +103,7 @@ class AngelOfGlorysRiseEffect extends OneShotEffect {
controller.moveCards(toExile, Zone.EXILED, source, game);
FilterCreatureCard filterHuman = new FilterCreatureCard();
filterHuman.add(new SubtypePredicate(SubType.HUMAN));
- controller.moveCards(controller.getGraveyard().getCards(filterHuman, game), Zone.GRAVEYARD, source, game);
+ controller.moveCards(controller.getGraveyard().getCards(filterHuman, game), Zone.BATTLEFIELD, source, game);
}
return true;
}
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfInvention.java b/Mage.Sets/src/mage/cards/a/AngelOfInvention.java
index 21e7d580c8b..05e4e79c0b4 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfInvention.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfInvention.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class AngelOfInvention extends CardImpl {
+public final class AngelOfInvention extends CardImpl {
public AngelOfInvention(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfJubilation.java b/Mage.Sets/src/mage/cards/a/AngelOfJubilation.java
index c575a8a6f86..191b93edf9f 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfJubilation.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfJubilation.java
@@ -53,7 +53,7 @@ import mage.players.Player;
/**
* @author noxx
*/
-public class AngelOfJubilation extends CardImpl {
+public final class AngelOfJubilation extends CardImpl {
private static final FilterCreaturePermanent filterNonBlack = new FilterCreaturePermanent("nonblack creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfLight.java b/Mage.Sets/src/mage/cards/a/AngelOfLight.java
index a1e3bc14661..fad200e7446 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfLight.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfLight.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AngelOfLight extends CardImpl {
+public final class AngelOfLight extends CardImpl {
public AngelOfLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfMercy.java b/Mage.Sets/src/mage/cards/a/AngelOfMercy.java
index b66e6f93f79..e61063529ca 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfMercy.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfMercy.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class AngelOfMercy extends CardImpl {
+public final class AngelOfMercy extends CardImpl {
public AngelOfMercy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfRenewal.java b/Mage.Sets/src/mage/cards/a/AngelOfRenewal.java
index b14ca8b9ec7..44cd4bcbca3 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfRenewal.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfRenewal.java
@@ -37,16 +37,16 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
* @author LevelX2
*/
-public class AngelOfRenewal extends CardImpl {
+public final class AngelOfRenewal extends CardImpl {
public AngelOfRenewal(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}");
this.subtype.add(SubType.ANGEL);
this.subtype.add(SubType.ALLY);
this.power = new MageInt(4);
@@ -56,8 +56,8 @@ public class AngelOfRenewal extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// When Angel of Renewal enters the battlefield, you gain 1 life for each creature you control.
this.addAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(
- new PermanentsOnBattlefieldCount(new FilterControlledCreaturePermanent()))));
-
+ new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE)
+ )));
}
public AngelOfRenewal(final AngelOfRenewal card) {
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfRetribution.java b/Mage.Sets/src/mage/cards/a/AngelOfRetribution.java
index 2d1f0acabd0..c110bd836e2 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfRetribution.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfRetribution.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AngelOfRetribution extends CardImpl {
+public final class AngelOfRetribution extends CardImpl {
public AngelOfRetribution(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfSalvation.java b/Mage.Sets/src/mage/cards/a/AngelOfSalvation.java
index ec72e86d243..3db612f749f 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfSalvation.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfSalvation.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author LevelX2
*/
-public class AngelOfSalvation extends CardImpl {
+public final class AngelOfSalvation extends CardImpl {
public AngelOfSalvation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfSanctions.java b/Mage.Sets/src/mage/cards/a/AngelOfSanctions.java
index 85bed213ada..21e2631e564 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfSanctions.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfSanctions.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class AngelOfSanctions extends CardImpl {
+public final class AngelOfSanctions extends CardImpl {
private final static FilterNonlandPermanent filter = new FilterNonlandPermanent();
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfSerenity.java b/Mage.Sets/src/mage/cards/a/AngelOfSerenity.java
index 8ab56892dbb..ed2620cbf2c 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfSerenity.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfSerenity.java
@@ -60,7 +60,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class AngelOfSerenity extends CardImpl {
+public final class AngelOfSerenity extends CardImpl {
public AngelOfSerenity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfTheDireHour.java b/Mage.Sets/src/mage/cards/a/AngelOfTheDireHour.java
index 4660563a607..ed0dbc63a08 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfTheDireHour.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfTheDireHour.java
@@ -46,7 +46,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author LevelX2
*/
-public class AngelOfTheDireHour extends CardImpl {
+public final class AngelOfTheDireHour extends CardImpl {
public AngelOfTheDireHour(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfTheGodPharaoh.java b/Mage.Sets/src/mage/cards/a/AngelOfTheGodPharaoh.java
index 16ab593f541..2fd1452a8c8 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfTheGodPharaoh.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfTheGodPharaoh.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AngelOfTheGodPharaoh extends CardImpl {
+public final class AngelOfTheGodPharaoh extends CardImpl {
public AngelOfTheGodPharaoh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelfireCrusader.java b/Mage.Sets/src/mage/cards/a/AngelfireCrusader.java
index 64f58dc1011..b3b2405c691 100644
--- a/Mage.Sets/src/mage/cards/a/AngelfireCrusader.java
+++ b/Mage.Sets/src/mage/cards/a/AngelfireCrusader.java
@@ -40,7 +40,7 @@ import mage.constants.*;
/**
* @author Loki
*/
-public class AngelfireCrusader extends CardImpl {
+public final class AngelfireCrusader extends CardImpl {
public AngelfireCrusader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelheartVial.java b/Mage.Sets/src/mage/cards/a/AngelheartVial.java
index b118f117a08..96676da04e2 100644
--- a/Mage.Sets/src/mage/cards/a/AngelheartVial.java
+++ b/Mage.Sets/src/mage/cards/a/AngelheartVial.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class AngelheartVial extends CardImpl {
+public final class AngelheartVial extends CardImpl {
public AngelheartVial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicAccord.java b/Mage.Sets/src/mage/cards/a/AngelicAccord.java
index 65c713e7614..c0fae0da414 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicAccord.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicAccord.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerGainedLifeWatcher;
*
* @author jeffwadsworth
*/
-public class AngelicAccord extends CardImpl {
+public final class AngelicAccord extends CardImpl {
public AngelicAccord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicArbiter.java b/Mage.Sets/src/mage/cards/a/AngelicArbiter.java
index cd8416a8c5c..15c34e5afc6 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicArbiter.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicArbiter.java
@@ -48,7 +48,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AngelicArbiter extends CardImpl {
+public final class AngelicArbiter extends CardImpl {
public AngelicArbiter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicArmaments.java b/Mage.Sets/src/mage/cards/a/AngelicArmaments.java
index 596e7228b80..876f2784c67 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicArmaments.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicArmaments.java
@@ -44,7 +44,7 @@ import mage.constants.*;
/**
* @author noxx
*/
-public class AngelicArmaments extends CardImpl {
+public final class AngelicArmaments extends CardImpl {
public AngelicArmaments(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicBenediction.java b/Mage.Sets/src/mage/cards/a/AngelicBenediction.java
index 746c1f829ec..fb185c123f3 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicBenediction.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicBenediction.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class AngelicBenediction extends CardImpl {
+public final class AngelicBenediction extends CardImpl {
public AngelicBenediction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicBlessing.java b/Mage.Sets/src/mage/cards/a/AngelicBlessing.java
index 4d482672adb..19cf1f9e158 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicBlessing.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicBlessing.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class AngelicBlessing extends CardImpl {
+public final class AngelicBlessing extends CardImpl {
public AngelicBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicCaptain.java b/Mage.Sets/src/mage/cards/a/AngelicCaptain.java
index f1a79cccdcb..f42c454cdd8 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicCaptain.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicCaptain.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class AngelicCaptain extends CardImpl {
+public final class AngelicCaptain extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Ally");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicChorus.java b/Mage.Sets/src/mage/cards/a/AngelicChorus.java
index 74efd8f9fb0..953485d4ee5 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicChorus.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicChorus.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author Backfir3
*/
-public class AngelicChorus extends CardImpl {
+public final class AngelicChorus extends CardImpl {
public AngelicChorus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicCurator.java b/Mage.Sets/src/mage/cards/a/AngelicCurator.java
index 8bf74430b94..596324a7ddd 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicCurator.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicCurator.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author Backfir3
*/
-public class AngelicCurator extends CardImpl {
+public final class AngelicCurator extends CardImpl {
public AngelicCurator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicDestiny.java b/Mage.Sets/src/mage/cards/a/AngelicDestiny.java
index 51228a4be3c..ed0c0632863 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicDestiny.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicDestiny.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class AngelicDestiny extends CardImpl {
+public final class AngelicDestiny extends CardImpl {
public AngelicDestiny(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicEdict.java b/Mage.Sets/src/mage/cards/a/AngelicEdict.java
index 4a8a2dad143..33c688d943b 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicEdict.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicEdict.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class AngelicEdict extends CardImpl {
+public final class AngelicEdict extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or enchantment");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AngelicFavor.java b/Mage.Sets/src/mage/cards/a/AngelicFavor.java
index 8519ad0655e..da7efa5f71a 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicFavor.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicFavor.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class AngelicFavor extends CardImpl {
+public final class AngelicFavor extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("If you control a Plains");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicFieldMarshal.java b/Mage.Sets/src/mage/cards/a/AngelicFieldMarshal.java
index a4f9a76bef9..b2c5429dc44 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicFieldMarshal.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicFieldMarshal.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author emerald000
*/
-public class AngelicFieldMarshal extends CardImpl {
+public final class AngelicFieldMarshal extends CardImpl {
public AngelicFieldMarshal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicGift.java b/Mage.Sets/src/mage/cards/a/AngelicGift.java
index 49e9913e9f1..823eb78704d 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicGift.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicGift.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AngelicGift extends CardImpl {
+public final class AngelicGift extends CardImpl {
public AngelicGift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicOverseer.java b/Mage.Sets/src/mage/cards/a/AngelicOverseer.java
index c039c77e672..f06d5a79712 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicOverseer.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicOverseer.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author nantuko
*/
-public class AngelicOverseer extends CardImpl {
+public final class AngelicOverseer extends CardImpl {
private static final String rule1 = "As long as you control a Human, {this} has hexproof";
private static final String rule2 = "and is indestructible";
diff --git a/Mage.Sets/src/mage/cards/a/AngelicPage.java b/Mage.Sets/src/mage/cards/a/AngelicPage.java
index 17a005a3029..377c106cb6d 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicPage.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicPage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class AngelicPage extends CardImpl {
+public final class AngelicPage extends CardImpl {
public AngelicPage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicProtector.java b/Mage.Sets/src/mage/cards/a/AngelicProtector.java
index 690c7bb4c07..fcfe97c915c 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicProtector.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicProtector.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AngelicProtector extends CardImpl {
+public final class AngelicProtector extends CardImpl {
public AngelicProtector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicPurge.java b/Mage.Sets/src/mage/cards/a/AngelicPurge.java
index 225389a65a2..b675c07b1dc 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicPurge.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicPurge.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class AngelicPurge extends CardImpl {
+public final class AngelicPurge extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or enchantment");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicRenewal.java b/Mage.Sets/src/mage/cards/a/AngelicRenewal.java
index e3be878cc69..45fe2ead47c 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicRenewal.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicRenewal.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LoneFox
*/
-public class AngelicRenewal extends CardImpl {
+public final class AngelicRenewal extends CardImpl {
public AngelicRenewal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicShield.java b/Mage.Sets/src/mage/cards/a/AngelicShield.java
index 4d6f47ba632..b2a49ffbf32 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicShield.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicShield.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author michael.napoleon@gmail.com
*/
-public class AngelicShield extends CardImpl {
+public final class AngelicShield extends CardImpl {
public AngelicShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicSkirmisher.java b/Mage.Sets/src/mage/cards/a/AngelicSkirmisher.java
index f2e99691c04..49e6c93e74d 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicSkirmisher.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicSkirmisher.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AngelicSkirmisher extends CardImpl {
+public final class AngelicSkirmisher extends CardImpl {
public AngelicSkirmisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicVoices.java b/Mage.Sets/src/mage/cards/a/AngelicVoices.java
index b18a58ba846..88db50cd719 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicVoices.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicVoices.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class AngelicVoices extends CardImpl {
+public final class AngelicVoices extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nonartifact, nonwhite creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AngelicWall.java b/Mage.Sets/src/mage/cards/a/AngelicWall.java
index bfeea8fb89a..ab3fb6cdcfd 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicWall.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicWall.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AngelicWall extends CardImpl {
+public final class AngelicWall extends CardImpl {
public AngelicWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelsFeather.java b/Mage.Sets/src/mage/cards/a/AngelsFeather.java
index 58e5cd315f6..ef13e20e70f 100644
--- a/Mage.Sets/src/mage/cards/a/AngelsFeather.java
+++ b/Mage.Sets/src/mage/cards/a/AngelsFeather.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AngelsFeather extends CardImpl {
+public final class AngelsFeather extends CardImpl {
private final static FilterSpell filter = new FilterSpell("a white spell");
diff --git a/Mage.Sets/src/mage/cards/a/AngelsGrace.java b/Mage.Sets/src/mage/cards/a/AngelsGrace.java
index 9beff9bc78f..09f87a544aa 100644
--- a/Mage.Sets/src/mage/cards/a/AngelsGrace.java
+++ b/Mage.Sets/src/mage/cards/a/AngelsGrace.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AngelsGrace extends CardImpl {
+public final class AngelsGrace extends CardImpl {
public AngelsGrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelsHerald.java b/Mage.Sets/src/mage/cards/a/AngelsHerald.java
index b96dc82dd43..5054cdb90ca 100644
--- a/Mage.Sets/src/mage/cards/a/AngelsHerald.java
+++ b/Mage.Sets/src/mage/cards/a/AngelsHerald.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author nantuko
*/
-public class AngelsHerald extends CardImpl {
+public final class AngelsHerald extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Empyrial Archangel");
private static final FilterControlledCreaturePermanent filterGreen = new FilterControlledCreaturePermanent("a green creature");
diff --git a/Mage.Sets/src/mage/cards/a/AngelsMercy.java b/Mage.Sets/src/mage/cards/a/AngelsMercy.java
index 7759fa376de..323af1c0e91 100644
--- a/Mage.Sets/src/mage/cards/a/AngelsMercy.java
+++ b/Mage.Sets/src/mage/cards/a/AngelsMercy.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AngelsMercy extends CardImpl {
+public final class AngelsMercy extends CardImpl {
public AngelsMercy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelsTomb.java b/Mage.Sets/src/mage/cards/a/AngelsTomb.java
index f3be463600b..6e38614c601 100644
--- a/Mage.Sets/src/mage/cards/a/AngelsTomb.java
+++ b/Mage.Sets/src/mage/cards/a/AngelsTomb.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author Loki
*/
-public class AngelsTomb extends CardImpl {
+public final class AngelsTomb extends CardImpl {
public AngelsTomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AngelsTrumpet.java b/Mage.Sets/src/mage/cards/a/AngelsTrumpet.java
index f451434e329..8bef804d3e3 100644
--- a/Mage.Sets/src/mage/cards/a/AngelsTrumpet.java
+++ b/Mage.Sets/src/mage/cards/a/AngelsTrumpet.java
@@ -49,7 +49,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author fireshoes
*/
-public class AngelsTrumpet extends CardImpl {
+public final class AngelsTrumpet extends CardImpl {
public AngelsTrumpet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/a/Angelsong.java b/Mage.Sets/src/mage/cards/a/Angelsong.java
index 7eaa2cf0863..3ff58aa058e 100644
--- a/Mage.Sets/src/mage/cards/a/Angelsong.java
+++ b/Mage.Sets/src/mage/cards/a/Angelsong.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Angelsong extends CardImpl {
+public final class Angelsong extends CardImpl {
public Angelsong(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Anger.java b/Mage.Sets/src/mage/cards/a/Anger.java
index 3ff8c6e0934..d46aff7e3d8 100644
--- a/Mage.Sets/src/mage/cards/a/Anger.java
+++ b/Mage.Sets/src/mage/cards/a/Anger.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Backfir3
*/
-public class Anger extends CardImpl {
+public final class Anger extends CardImpl {
private static final String ruleText = "As long as Anger is in your graveyard and you control a Mountain, creatures you control have haste";
diff --git a/Mage.Sets/src/mage/cards/a/AngerOfTheGods.java b/Mage.Sets/src/mage/cards/a/AngerOfTheGods.java
index 38757491f74..80234ba7cbb 100644
--- a/Mage.Sets/src/mage/cards/a/AngerOfTheGods.java
+++ b/Mage.Sets/src/mage/cards/a/AngerOfTheGods.java
@@ -41,7 +41,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author Plopman
*/
-public class AngerOfTheGods extends CardImpl {
+public final class AngerOfTheGods extends CardImpl {
public AngerOfTheGods(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AnglerDrake.java b/Mage.Sets/src/mage/cards/a/AnglerDrake.java
index 9d8c2f606e2..362848d5bcd 100644
--- a/Mage.Sets/src/mage/cards/a/AnglerDrake.java
+++ b/Mage.Sets/src/mage/cards/a/AnglerDrake.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class AnglerDrake extends CardImpl {
+public final class AnglerDrake extends CardImpl {
public AnglerDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java b/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java
index c916f562443..62a5d436513 100644
--- a/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java
+++ b/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author LevelX2
*/
-public class AngrathMinotaurPirate extends CardImpl {
+public final class AngrathMinotaurPirate extends CardImpl {
public AngrathMinotaurPirate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AngrathTheFlameChained.java b/Mage.Sets/src/mage/cards/a/AngrathTheFlameChained.java
index fa3e8534bfa..f58b6a6d83f 100644
--- a/Mage.Sets/src/mage/cards/a/AngrathTheFlameChained.java
+++ b/Mage.Sets/src/mage/cards/a/AngrathTheFlameChained.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class AngrathTheFlameChained extends CardImpl {
+public final class AngrathTheFlameChained extends CardImpl {
public AngrathTheFlameChained(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AngrathsAmbusher.java b/Mage.Sets/src/mage/cards/a/AngrathsAmbusher.java
index 11a4483261c..5d6c9fce7c7 100644
--- a/Mage.Sets/src/mage/cards/a/AngrathsAmbusher.java
+++ b/Mage.Sets/src/mage/cards/a/AngrathsAmbusher.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class AngrathsAmbusher extends CardImpl {
+public final class AngrathsAmbusher extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/a/AngrathsFury.java b/Mage.Sets/src/mage/cards/a/AngrathsFury.java
index bd3e97a74a7..551c5199264 100644
--- a/Mage.Sets/src/mage/cards/a/AngrathsFury.java
+++ b/Mage.Sets/src/mage/cards/a/AngrathsFury.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class AngrathsFury extends CardImpl {
+public final class AngrathsFury extends CardImpl {
private final static FilterCard filter = new FilterCard("Angrath, Minotaur Pirate");
diff --git a/Mage.Sets/src/mage/cards/a/AngrathsMarauders.java b/Mage.Sets/src/mage/cards/a/AngrathsMarauders.java
index 5c1a49af5e5..5dc5b0ae001 100644
--- a/Mage.Sets/src/mage/cards/a/AngrathsMarauders.java
+++ b/Mage.Sets/src/mage/cards/a/AngrathsMarauders.java
@@ -47,7 +47,7 @@ import mage.util.CardUtil;
*
* @author TheElk801
*/
-public class AngrathsMarauders extends CardImpl {
+public final class AngrathsMarauders extends CardImpl {
public AngrathsMarauders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AngryMob.java b/Mage.Sets/src/mage/cards/a/AngryMob.java
index 208310da71d..9049fbc1b35 100644
--- a/Mage.Sets/src/mage/cards/a/AngryMob.java
+++ b/Mage.Sets/src/mage/cards/a/AngryMob.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Styxo
*/
-public class AngryMob extends CardImpl {
+public final class AngryMob extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Swamps you opponents control");
diff --git a/Mage.Sets/src/mage/cards/a/AnguishedUnmaking.java b/Mage.Sets/src/mage/cards/a/AnguishedUnmaking.java
index 5f98bef3a45..9ee3f84f73a 100644
--- a/Mage.Sets/src/mage/cards/a/AnguishedUnmaking.java
+++ b/Mage.Sets/src/mage/cards/a/AnguishedUnmaking.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author fireshoes
*/
-public class AnguishedUnmaking extends CardImpl {
+public final class AnguishedUnmaking extends CardImpl {
public AnguishedUnmaking(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AngusMackenzie.java b/Mage.Sets/src/mage/cards/a/AngusMackenzie.java
index 7bda5722e61..b1a35cd7d00 100644
--- a/Mage.Sets/src/mage/cards/a/AngusMackenzie.java
+++ b/Mage.Sets/src/mage/cards/a/AngusMackenzie.java
@@ -45,7 +45,7 @@ import mage.game.Game;
*
* @author shieldal
*/
-public class AngusMackenzie extends CardImpl {
+public final class AngusMackenzie extends CardImpl {
public AngusMackenzie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AnimalBoneyard.java b/Mage.Sets/src/mage/cards/a/AnimalBoneyard.java
index d924c24886a..7b71608ded8 100644
--- a/Mage.Sets/src/mage/cards/a/AnimalBoneyard.java
+++ b/Mage.Sets/src/mage/cards/a/AnimalBoneyard.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author anonymous
*/
-public class AnimalBoneyard extends CardImpl {
+public final class AnimalBoneyard extends CardImpl {
public AnimalBoneyard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AnimalMagnetism.java b/Mage.Sets/src/mage/cards/a/AnimalMagnetism.java
index 5a8201c11e4..392629e70cb 100644
--- a/Mage.Sets/src/mage/cards/a/AnimalMagnetism.java
+++ b/Mage.Sets/src/mage/cards/a/AnimalMagnetism.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author fenhl
*/
-public class AnimalMagnetism extends CardImpl {
+public final class AnimalMagnetism extends CardImpl {
public AnimalMagnetism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnimarSoulOfElements.java b/Mage.Sets/src/mage/cards/a/AnimarSoulOfElements.java
index 6206bf4dafe..c1a810eaca3 100644
--- a/Mage.Sets/src/mage/cards/a/AnimarSoulOfElements.java
+++ b/Mage.Sets/src/mage/cards/a/AnimarSoulOfElements.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class AnimarSoulOfElements extends CardImpl {
+public final class AnimarSoulOfElements extends CardImpl {
public AnimarSoulOfElements(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AnimateArtifact.java b/Mage.Sets/src/mage/cards/a/AnimateArtifact.java
index e4e09882e53..d6150cb7ec0 100644
--- a/Mage.Sets/src/mage/cards/a/AnimateArtifact.java
+++ b/Mage.Sets/src/mage/cards/a/AnimateArtifact.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author MTGfan
*/
-public class AnimateArtifact extends CardImpl {
+public final class AnimateArtifact extends CardImpl {
private static final FilterPermanent filter = new FilterArtifactPermanent("noncreature artifact");
diff --git a/Mage.Sets/src/mage/cards/a/AnimateDead.java b/Mage.Sets/src/mage/cards/a/AnimateDead.java
index a6e9ad0b75d..5acd50ae270 100644
--- a/Mage.Sets/src/mage/cards/a/AnimateDead.java
+++ b/Mage.Sets/src/mage/cards/a/AnimateDead.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AnimateDead extends CardImpl {
+public final class AnimateDead extends CardImpl {
public AnimateDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AnimateLand.java b/Mage.Sets/src/mage/cards/a/AnimateLand.java
index 4ffc36cb879..fa143e57d34 100644
--- a/Mage.Sets/src/mage/cards/a/AnimateLand.java
+++ b/Mage.Sets/src/mage/cards/a/AnimateLand.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class AnimateLand extends CardImpl {
+public final class AnimateLand extends CardImpl {
public AnimateLand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnimateWall.java b/Mage.Sets/src/mage/cards/a/AnimateWall.java
index d722e7f916c..090be8d775c 100644
--- a/Mage.Sets/src/mage/cards/a/AnimateWall.java
+++ b/Mage.Sets/src/mage/cards/a/AnimateWall.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class AnimateWall extends CardImpl {
+public final class AnimateWall extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wall");
diff --git a/Mage.Sets/src/mage/cards/a/AnimationModule.java b/Mage.Sets/src/mage/cards/a/AnimationModule.java
index 247759bda57..7c877365820 100644
--- a/Mage.Sets/src/mage/cards/a/AnimationModule.java
+++ b/Mage.Sets/src/mage/cards/a/AnimationModule.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetPermanentOrPlayer;
*
* @author emerald000
*/
-public class AnimationModule extends CardImpl {
+public final class AnimationModule extends CardImpl {
public AnimationModule(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java b/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java
index b8da3e30d19..808ab35237f 100644
--- a/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java
+++ b/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AnimistsAwakening extends CardImpl {
+public final class AnimistsAwakening extends CardImpl {
public AnimistsAwakening(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnkhOfMishra.java b/Mage.Sets/src/mage/cards/a/AnkhOfMishra.java
index a31aa9dbf4c..ce28fb8fa1f 100644
--- a/Mage.Sets/src/mage/cards/a/AnkhOfMishra.java
+++ b/Mage.Sets/src/mage/cards/a/AnkhOfMishra.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
* @author KholdFuzion
*
*/
-public class AnkhOfMishra extends CardImpl {
+public final class AnkhOfMishra extends CardImpl {
public AnkhOfMishra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AnkleShanker.java b/Mage.Sets/src/mage/cards/a/AnkleShanker.java
index 37cbdecf61c..188b0ba9cc4 100644
--- a/Mage.Sets/src/mage/cards/a/AnkleShanker.java
+++ b/Mage.Sets/src/mage/cards/a/AnkleShanker.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class AnkleShanker extends CardImpl {
+public final class AnkleShanker extends CardImpl {
public AnkleShanker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/Annex.java b/Mage.Sets/src/mage/cards/a/Annex.java
index f792aaa90b8..83eb3ccd412 100644
--- a/Mage.Sets/src/mage/cards/a/Annex.java
+++ b/Mage.Sets/src/mage/cards/a/Annex.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author andyfries
*/
-public class Annex extends CardImpl {
+public final class Annex extends CardImpl {
public Annex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Annihilate.java b/Mage.Sets/src/mage/cards/a/Annihilate.java
index e59040bdc02..609da9c978d 100644
--- a/Mage.Sets/src/mage/cards/a/Annihilate.java
+++ b/Mage.Sets/src/mage/cards/a/Annihilate.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Annihilate extends CardImpl {
+public final class Annihilate extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AnnihilatingFire.java b/Mage.Sets/src/mage/cards/a/AnnihilatingFire.java
index 9af1d8e8f9a..a504f930557 100644
--- a/Mage.Sets/src/mage/cards/a/AnnihilatingFire.java
+++ b/Mage.Sets/src/mage/cards/a/AnnihilatingFire.java
@@ -43,7 +43,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author LevelX2
*/
-public class AnnihilatingFire extends CardImpl {
+public final class AnnihilatingFire extends CardImpl {
public AnnihilatingFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/Annul.java b/Mage.Sets/src/mage/cards/a/Annul.java
index b1c00f6b822..152b29f5193 100644
--- a/Mage.Sets/src/mage/cards/a/Annul.java
+++ b/Mage.Sets/src/mage/cards/a/Annul.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class Annul extends CardImpl {
+public final class Annul extends CardImpl {
private static final FilterSpell filter = new FilterSpell("artifact or enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/a/AnodetLurker.java b/Mage.Sets/src/mage/cards/a/AnodetLurker.java
index 8e3a7c6ed22..45685c4ae1b 100644
--- a/Mage.Sets/src/mage/cards/a/AnodetLurker.java
+++ b/Mage.Sets/src/mage/cards/a/AnodetLurker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class AnodetLurker extends CardImpl {
+public final class AnodetLurker extends CardImpl {
public AnodetLurker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/a/Anoint.java b/Mage.Sets/src/mage/cards/a/Anoint.java
index a2cb5108970..08d0cd5bed7 100644
--- a/Mage.Sets/src/mage/cards/a/Anoint.java
+++ b/Mage.Sets/src/mage/cards/a/Anoint.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Anoint extends CardImpl {
+public final class Anoint extends CardImpl {
public Anoint(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AnointedDeacon.java b/Mage.Sets/src/mage/cards/a/AnointedDeacon.java
index fff9f721308..74c9618162a 100644
--- a/Mage.Sets/src/mage/cards/a/AnointedDeacon.java
+++ b/Mage.Sets/src/mage/cards/a/AnointedDeacon.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author caldover
*/
-public class AnointedDeacon extends CardImpl {
+public final class AnointedDeacon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampire");
diff --git a/Mage.Sets/src/mage/cards/a/AnointedProcession.java b/Mage.Sets/src/mage/cards/a/AnointedProcession.java
index 0b666b621f8..c7e26578dc6 100644
--- a/Mage.Sets/src/mage/cards/a/AnointedProcession.java
+++ b/Mage.Sets/src/mage/cards/a/AnointedProcession.java
@@ -39,7 +39,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class AnointedProcession extends CardImpl {
+public final class AnointedProcession extends CardImpl {
public AnointedProcession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AnointerOfChampions.java b/Mage.Sets/src/mage/cards/a/AnointerOfChampions.java
index 06c0949c80a..1be2c088664 100644
--- a/Mage.Sets/src/mage/cards/a/AnointerOfChampions.java
+++ b/Mage.Sets/src/mage/cards/a/AnointerOfChampions.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author fireshoes
*/
-public class AnointerOfChampions extends CardImpl {
+public final class AnointerOfChampions extends CardImpl {
public AnointerOfChampions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AnointerPriest.java b/Mage.Sets/src/mage/cards/a/AnointerPriest.java
index b153dba4d0f..2ff4ff61eb0 100644
--- a/Mage.Sets/src/mage/cards/a/AnointerPriest.java
+++ b/Mage.Sets/src/mage/cards/a/AnointerPriest.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author LevelX2
*/
-public class AnointerPriest extends CardImpl {
+public final class AnointerPriest extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a creature token");
diff --git a/Mage.Sets/src/mage/cards/a/AnowonTheRuinSage.java b/Mage.Sets/src/mage/cards/a/AnowonTheRuinSage.java
index 1f49d73fe93..f747a9669ad 100644
--- a/Mage.Sets/src/mage/cards/a/AnowonTheRuinSage.java
+++ b/Mage.Sets/src/mage/cards/a/AnowonTheRuinSage.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class AnowonTheRuinSage extends CardImpl {
+public final class AnowonTheRuinSage extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Vampire creature");
diff --git a/Mage.Sets/src/mage/cards/a/AntQueen.java b/Mage.Sets/src/mage/cards/a/AntQueen.java
index dc4dde01be1..bfdee2922f6 100644
--- a/Mage.Sets/src/mage/cards/a/AntQueen.java
+++ b/Mage.Sets/src/mage/cards/a/AntQueen.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.InsectToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AntQueen extends CardImpl {
+public final class AntQueen extends CardImpl {
private static InsectToken insectToken = new InsectToken();
diff --git a/Mage.Sets/src/mage/cards/a/AnthemOfRakdos.java b/Mage.Sets/src/mage/cards/a/AnthemOfRakdos.java
index 34aae5aaeaa..d0bca63a4c3 100644
--- a/Mage.Sets/src/mage/cards/a/AnthemOfRakdos.java
+++ b/Mage.Sets/src/mage/cards/a/AnthemOfRakdos.java
@@ -49,7 +49,7 @@ import mage.util.CardUtil;
/**
* @author JotaPeRL
*/
-public class AnthemOfRakdos extends CardImpl {
+public final class AnthemOfRakdos extends CardImpl {
public AnthemOfRakdos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AnthousaSetessanHero.java b/Mage.Sets/src/mage/cards/a/AnthousaSetessanHero.java
index de8b55b25b6..8a1f0ade061 100644
--- a/Mage.Sets/src/mage/cards/a/AnthousaSetessanHero.java
+++ b/Mage.Sets/src/mage/cards/a/AnthousaSetessanHero.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class AnthousaSetessanHero extends CardImpl {
+public final class AnthousaSetessanHero extends CardImpl {
public AnthousaSetessanHero(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/Anthroplasm.java b/Mage.Sets/src/mage/cards/a/Anthroplasm.java
index c42e0f42d73..3f047e3be96 100644
--- a/Mage.Sets/src/mage/cards/a/Anthroplasm.java
+++ b/Mage.Sets/src/mage/cards/a/Anthroplasm.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class Anthroplasm extends CardImpl {
+public final class Anthroplasm extends CardImpl {
public Anthroplasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AntiMagicAura.java b/Mage.Sets/src/mage/cards/a/AntiMagicAura.java
index 5f34f7abf49..99cfd3a1c7f 100644
--- a/Mage.Sets/src/mage/cards/a/AntiMagicAura.java
+++ b/Mage.Sets/src/mage/cards/a/AntiMagicAura.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author MTGfan & L_J
*/
-public class AntiMagicAura extends CardImpl {
+public final class AntiMagicAura extends CardImpl {
public AntiMagicAura(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Anticipate.java b/Mage.Sets/src/mage/cards/a/Anticipate.java
index 4cda55ca800..0ac9163fbea 100644
--- a/Mage.Sets/src/mage/cards/a/Anticipate.java
+++ b/Mage.Sets/src/mage/cards/a/Anticipate.java
@@ -40,7 +40,7 @@ import mage.filter.FilterCard;
*
* @author fireshoes
*/
-public class Anticipate extends CardImpl {
+public final class Anticipate extends CardImpl {
public Anticipate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AntlerSkulkin.java b/Mage.Sets/src/mage/cards/a/AntlerSkulkin.java
index c4e1fe4b761..7eeea2124b6 100644
--- a/Mage.Sets/src/mage/cards/a/AntlerSkulkin.java
+++ b/Mage.Sets/src/mage/cards/a/AntlerSkulkin.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*/
-public class AntlerSkulkin extends CardImpl {
+public final class AntlerSkulkin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creature");
diff --git a/Mage.Sets/src/mage/cards/a/AnuridBarkripper.java b/Mage.Sets/src/mage/cards/a/AnuridBarkripper.java
index 7badeab0148..d01cee84e2b 100644
--- a/Mage.Sets/src/mage/cards/a/AnuridBarkripper.java
+++ b/Mage.Sets/src/mage/cards/a/AnuridBarkripper.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author LoneFox
*/
-public class AnuridBarkripper extends CardImpl {
+public final class AnuridBarkripper extends CardImpl {
public AnuridBarkripper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnuridBrushhopper.java b/Mage.Sets/src/mage/cards/a/AnuridBrushhopper.java
index 8928acbb4fd..f4b378fb831 100644
--- a/Mage.Sets/src/mage/cards/a/AnuridBrushhopper.java
+++ b/Mage.Sets/src/mage/cards/a/AnuridBrushhopper.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class AnuridBrushhopper extends CardImpl {
+public final class AnuridBrushhopper extends CardImpl {
public AnuridBrushhopper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AnuridMurkdiver.java b/Mage.Sets/src/mage/cards/a/AnuridMurkdiver.java
index 94b216fd2f9..1a5fb9e48c9 100644
--- a/Mage.Sets/src/mage/cards/a/AnuridMurkdiver.java
+++ b/Mage.Sets/src/mage/cards/a/AnuridMurkdiver.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AnuridMurkdiver extends CardImpl {
+public final class AnuridMurkdiver extends CardImpl {
public AnuridMurkdiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AnuridScavenger.java b/Mage.Sets/src/mage/cards/a/AnuridScavenger.java
index c09c75d12d6..9ca0e779387 100644
--- a/Mage.Sets/src/mage/cards/a/AnuridScavenger.java
+++ b/Mage.Sets/src/mage/cards/a/AnuridScavenger.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000 & L_J
*/
-public class AnuridScavenger extends CardImpl {
+public final class AnuridScavenger extends CardImpl {
public AnuridScavenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnuridSwarmsnapper.java b/Mage.Sets/src/mage/cards/a/AnuridSwarmsnapper.java
index efc9f2d5b64..30b3fde4871 100644
--- a/Mage.Sets/src/mage/cards/a/AnuridSwarmsnapper.java
+++ b/Mage.Sets/src/mage/cards/a/AnuridSwarmsnapper.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class AnuridSwarmsnapper extends CardImpl {
+public final class AnuridSwarmsnapper extends CardImpl {
public AnuridSwarmsnapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AnvilOfBogardan.java b/Mage.Sets/src/mage/cards/a/AnvilOfBogardan.java
index 57334993bb8..336e3c10cec 100644
--- a/Mage.Sets/src/mage/cards/a/AnvilOfBogardan.java
+++ b/Mage.Sets/src/mage/cards/a/AnvilOfBogardan.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class AnvilOfBogardan extends CardImpl {
+public final class AnvilOfBogardan extends CardImpl {
public AnvilOfBogardan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AnvilwroughtRaptor.java b/Mage.Sets/src/mage/cards/a/AnvilwroughtRaptor.java
index 018b9277729..41570224abc 100644
--- a/Mage.Sets/src/mage/cards/a/AnvilwroughtRaptor.java
+++ b/Mage.Sets/src/mage/cards/a/AnvilwroughtRaptor.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AnvilwroughtRaptor extends CardImpl {
+public final class AnvilwroughtRaptor extends CardImpl {
public AnvilwroughtRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/a/AnyaMercilessAngel.java b/Mage.Sets/src/mage/cards/a/AnyaMercilessAngel.java
index 7408df5db82..02b9a22be11 100644
--- a/Mage.Sets/src/mage/cards/a/AnyaMercilessAngel.java
+++ b/Mage.Sets/src/mage/cards/a/AnyaMercilessAngel.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class AnyaMercilessAngel extends CardImpl {
+public final class AnyaMercilessAngel extends CardImpl {
public AnyaMercilessAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ApesOfRath.java b/Mage.Sets/src/mage/cards/a/ApesOfRath.java
index 3a595a63f3b..a854607caea 100644
--- a/Mage.Sets/src/mage/cards/a/ApesOfRath.java
+++ b/Mage.Sets/src/mage/cards/a/ApesOfRath.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ApesOfRath extends CardImpl {
+public final class ApesOfRath extends CardImpl {
public ApesOfRath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ApexHawks.java b/Mage.Sets/src/mage/cards/a/ApexHawks.java
index 75f148e0d46..2c1d21de736 100644
--- a/Mage.Sets/src/mage/cards/a/ApexHawks.java
+++ b/Mage.Sets/src/mage/cards/a/ApexHawks.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class ApexHawks extends CardImpl {
+public final class ApexHawks extends CardImpl {
public ApexHawks(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AphettoAlchemist.java b/Mage.Sets/src/mage/cards/a/AphettoAlchemist.java
index 30f7e4e54f5..54ff0aba9ea 100644
--- a/Mage.Sets/src/mage/cards/a/AphettoAlchemist.java
+++ b/Mage.Sets/src/mage/cards/a/AphettoAlchemist.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class AphettoAlchemist extends CardImpl {
+public final class AphettoAlchemist extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/a/AphettoDredging.java b/Mage.Sets/src/mage/cards/a/AphettoDredging.java
index a95c0acc84f..73b3dbc6a60 100644
--- a/Mage.Sets/src/mage/cards/a/AphettoDredging.java
+++ b/Mage.Sets/src/mage/cards/a/AphettoDredging.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Quercitron
*/
-public class AphettoDredging extends CardImpl {
+public final class AphettoDredging extends CardImpl {
public AphettoDredging(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AphettoExterminator.java b/Mage.Sets/src/mage/cards/a/AphettoExterminator.java
index 85e5ebff752..149f4be4c73 100644
--- a/Mage.Sets/src/mage/cards/a/AphettoExterminator.java
+++ b/Mage.Sets/src/mage/cards/a/AphettoExterminator.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class AphettoExterminator extends CardImpl {
+public final class AphettoExterminator extends CardImpl {
public AphettoExterminator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AphettoGrifter.java b/Mage.Sets/src/mage/cards/a/AphettoGrifter.java
index d4d53bf6b3d..d22d9e0d8b6 100644
--- a/Mage.Sets/src/mage/cards/a/AphettoGrifter.java
+++ b/Mage.Sets/src/mage/cards/a/AphettoGrifter.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class AphettoGrifter extends CardImpl {
+public final class AphettoGrifter extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Wizards you control");
diff --git a/Mage.Sets/src/mage/cards/a/AphettoRunecaster.java b/Mage.Sets/src/mage/cards/a/AphettoRunecaster.java
index 1318d8bcffb..d92b66b9361 100644
--- a/Mage.Sets/src/mage/cards/a/AphettoRunecaster.java
+++ b/Mage.Sets/src/mage/cards/a/AphettoRunecaster.java
@@ -42,7 +42,7 @@ import mage.filter.FilterPermanent;
*
* @author fireshoes
*/
-public class AphettoRunecaster extends CardImpl {
+public final class AphettoRunecaster extends CardImpl {
public AphettoRunecaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AphettoVulture.java b/Mage.Sets/src/mage/cards/a/AphettoVulture.java
index 1c717f0903e..7e57a3669ca 100644
--- a/Mage.Sets/src/mage/cards/a/AphettoVulture.java
+++ b/Mage.Sets/src/mage/cards/a/AphettoVulture.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class AphettoVulture extends CardImpl {
+public final class AphettoVulture extends CardImpl {
private static final FilterCard filter = new FilterCard("Zombie card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/a/AphoticWisps.java b/Mage.Sets/src/mage/cards/a/AphoticWisps.java
index 7c7bc2058b1..9cc2e38b5d4 100644
--- a/Mage.Sets/src/mage/cards/a/AphoticWisps.java
+++ b/Mage.Sets/src/mage/cards/a/AphoticWisps.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class AphoticWisps extends CardImpl {
+public final class AphoticWisps extends CardImpl {
public AphoticWisps(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/a/Apocalypse.java b/Mage.Sets/src/mage/cards/a/Apocalypse.java
index cffb38ba31c..81c5716302d 100644
--- a/Mage.Sets/src/mage/cards/a/Apocalypse.java
+++ b/Mage.Sets/src/mage/cards/a/Apocalypse.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author markedagain
*/
-public class Apocalypse extends CardImpl {
+public final class Apocalypse extends CardImpl {
public Apocalypse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ApocalypseChime.java b/Mage.Sets/src/mage/cards/a/ApocalypseChime.java
index 8f628925461..350325bb9fb 100644
--- a/Mage.Sets/src/mage/cards/a/ApocalypseChime.java
+++ b/Mage.Sets/src/mage/cards/a/ApocalypseChime.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author L_J
*/
-public class ApocalypseChime extends CardImpl {
+public final class ApocalypseChime extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nontoken permanents with a name originally printed in the Homelands expansion");
diff --git a/Mage.Sets/src/mage/cards/a/ApocalypseDemon.java b/Mage.Sets/src/mage/cards/a/ApocalypseDemon.java
index 119c3cba427..d1ee4194490 100644
--- a/Mage.Sets/src/mage/cards/a/ApocalypseDemon.java
+++ b/Mage.Sets/src/mage/cards/a/ApocalypseDemon.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author MajorLazar
*/
-public class ApocalypseDemon extends CardImpl {
+public final class ApocalypseDemon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/a/ApocalypseHydra.java b/Mage.Sets/src/mage/cards/a/ApocalypseHydra.java
index 60b87e04ef8..75b147d3c23 100644
--- a/Mage.Sets/src/mage/cards/a/ApocalypseHydra.java
+++ b/Mage.Sets/src/mage/cards/a/ApocalypseHydra.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class ApocalypseHydra extends CardImpl {
+public final class ApocalypseHydra extends CardImpl {
public ApocalypseHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ApostlesBlessing.java b/Mage.Sets/src/mage/cards/a/ApostlesBlessing.java
index 5de768c4a94..4d6d449c01b 100644
--- a/Mage.Sets/src/mage/cards/a/ApostlesBlessing.java
+++ b/Mage.Sets/src/mage/cards/a/ApostlesBlessing.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class ApostlesBlessing extends CardImpl {
+public final class ApostlesBlessing extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact or creature you control");
diff --git a/Mage.Sets/src/mage/cards/a/ApothecaryGeist.java b/Mage.Sets/src/mage/cards/a/ApothecaryGeist.java
index 9ae9220b36c..75b38859e56 100644
--- a/Mage.Sets/src/mage/cards/a/ApothecaryGeist.java
+++ b/Mage.Sets/src/mage/cards/a/ApothecaryGeist.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class ApothecaryGeist extends CardImpl {
+public final class ApothecaryGeist extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Elf");
diff --git a/Mage.Sets/src/mage/cards/a/ApothecaryInitiate.java b/Mage.Sets/src/mage/cards/a/ApothecaryInitiate.java
index 4b90f1926c6..8ca8e23e4e1 100644
--- a/Mage.Sets/src/mage/cards/a/ApothecaryInitiate.java
+++ b/Mage.Sets/src/mage/cards/a/ApothecaryInitiate.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author jeffwadsworth
*
*/
-public class ApothecaryInitiate extends CardImpl {
+public final class ApothecaryInitiate extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a white spell");
diff --git a/Mage.Sets/src/mage/cards/a/AppealAuthority.java b/Mage.Sets/src/mage/cards/a/AppealAuthority.java
index 8403bf305cf..d52e3cbef5a 100644
--- a/Mage.Sets/src/mage/cards/a/AppealAuthority.java
+++ b/Mage.Sets/src/mage/cards/a/AppealAuthority.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AppealAuthority extends SplitCard {
+public final class AppealAuthority extends SplitCard {
public AppealAuthority(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{G}", "{1}{W}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/a/AppetiteForBrains.java b/Mage.Sets/src/mage/cards/a/AppetiteForBrains.java
index afc023af52c..67f1217ade3 100644
--- a/Mage.Sets/src/mage/cards/a/AppetiteForBrains.java
+++ b/Mage.Sets/src/mage/cards/a/AppetiteForBrains.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetOpponent;
*
* @author North
*/
-public class AppetiteForBrains extends CardImpl {
+public final class AppetiteForBrains extends CardImpl {
private static final FilterCard filter = new FilterCard("a card from it with converted mana cost 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/a/AppetiteForTheUnnatural.java b/Mage.Sets/src/mage/cards/a/AppetiteForTheUnnatural.java
index 356706dc5dc..6434b64ba65 100644
--- a/Mage.Sets/src/mage/cards/a/AppetiteForTheUnnatural.java
+++ b/Mage.Sets/src/mage/cards/a/AppetiteForTheUnnatural.java
@@ -40,7 +40,7 @@ import java.util.UUID;
/**
* @author spjspj
*/
-public class AppetiteForTheUnnatural extends CardImpl {
+public final class AppetiteForTheUnnatural extends CardImpl {
public AppetiteForTheUnnatural(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ApprenticeNecromancer.java b/Mage.Sets/src/mage/cards/a/ApprenticeNecromancer.java
index 77e71fb4ef9..e0feff049a7 100644
--- a/Mage.Sets/src/mage/cards/a/ApprenticeNecromancer.java
+++ b/Mage.Sets/src/mage/cards/a/ApprenticeNecromancer.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class ApprenticeNecromancer extends CardImpl {
+public final class ApprenticeNecromancer extends CardImpl {
public ApprenticeNecromancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/ApprenticeSorcerer.java b/Mage.Sets/src/mage/cards/a/ApprenticeSorcerer.java
index fe710099911..8cbc46b0f34 100644
--- a/Mage.Sets/src/mage/cards/a/ApprenticeSorcerer.java
+++ b/Mage.Sets/src/mage/cards/a/ApprenticeSorcerer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class ApprenticeSorcerer extends CardImpl {
+public final class ApprenticeSorcerer extends CardImpl {
public ApprenticeSorcerer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ApprenticeWizard.java b/Mage.Sets/src/mage/cards/a/ApprenticeWizard.java
index 033489ef62d..8878537c5c5 100644
--- a/Mage.Sets/src/mage/cards/a/ApprenticeWizard.java
+++ b/Mage.Sets/src/mage/cards/a/ApprenticeWizard.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ApprenticeWizard extends CardImpl {
+public final class ApprenticeWizard extends CardImpl {
public ApprenticeWizard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ApproachOfTheSecondSun.java b/Mage.Sets/src/mage/cards/a/ApproachOfTheSecondSun.java
index b8d7e21facc..34e1ac83756 100644
--- a/Mage.Sets/src/mage/cards/a/ApproachOfTheSecondSun.java
+++ b/Mage.Sets/src/mage/cards/a/ApproachOfTheSecondSun.java
@@ -19,7 +19,7 @@ import mage.watchers.Watcher;
/**
* @author stravant
*/
-public class ApproachOfTheSecondSun extends CardImpl {
+public final class ApproachOfTheSecondSun extends CardImpl {
public ApproachOfTheSecondSun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AqualishBountyHunter.java b/Mage.Sets/src/mage/cards/a/AqualishBountyHunter.java
index 12b65924741..f95742ccd51 100644
--- a/Mage.Sets/src/mage/cards/a/AqualishBountyHunter.java
+++ b/Mage.Sets/src/mage/cards/a/AqualishBountyHunter.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class AqualishBountyHunter extends CardImpl {
+public final class AqualishBountyHunter extends CardImpl {
public AqualishBountyHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/Aquamoeba.java b/Mage.Sets/src/mage/cards/a/Aquamoeba.java
index 19157aadcaf..7548f5e062d 100644
--- a/Mage.Sets/src/mage/cards/a/Aquamoeba.java
+++ b/Mage.Sets/src/mage/cards/a/Aquamoeba.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
* @author magenoxx_at_gmail.com
*/
-public class Aquamoeba extends CardImpl {
+public final class Aquamoeba extends CardImpl {
public Aquamoeba(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AquamorphEntity.java b/Mage.Sets/src/mage/cards/a/AquamorphEntity.java
index 2dac1191feb..5a1b6cb376d 100644
--- a/Mage.Sets/src/mage/cards/a/AquamorphEntity.java
+++ b/Mage.Sets/src/mage/cards/a/AquamorphEntity.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AquamorphEntity extends CardImpl {
+public final class AquamorphEntity extends CardImpl {
public AquamorphEntity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AquastrandSpider.java b/Mage.Sets/src/mage/cards/a/AquastrandSpider.java
index 27dd05d87a0..07fd71f1c19 100644
--- a/Mage.Sets/src/mage/cards/a/AquastrandSpider.java
+++ b/Mage.Sets/src/mage/cards/a/AquastrandSpider.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JotaPeRL
*/
-public class AquastrandSpider extends CardImpl {
+public final class AquastrandSpider extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AquaticIncursion.java b/Mage.Sets/src/mage/cards/a/AquaticIncursion.java
index ab1c124ce0e..f0d16aaadac 100644
--- a/Mage.Sets/src/mage/cards/a/AquaticIncursion.java
+++ b/Mage.Sets/src/mage/cards/a/AquaticIncursion.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author L_J
*/
-public class AquaticIncursion extends CardImpl {
+public final class AquaticIncursion extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Merfolk");
diff --git a/Mage.Sets/src/mage/cards/a/AqueousForm.java b/Mage.Sets/src/mage/cards/a/AqueousForm.java
index 9fcbeddabac..a93cfb30cb3 100644
--- a/Mage.Sets/src/mage/cards/a/AqueousForm.java
+++ b/Mage.Sets/src/mage/cards/a/AqueousForm.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AqueousForm extends CardImpl {
+public final class AqueousForm extends CardImpl {
public AqueousForm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AquitectsWill.java b/Mage.Sets/src/mage/cards/a/AquitectsWill.java
index bee6d447f36..d97d7bea144 100644
--- a/Mage.Sets/src/mage/cards/a/AquitectsWill.java
+++ b/Mage.Sets/src/mage/cards/a/AquitectsWill.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author ilcartographer
*/
-public class AquitectsWill extends CardImpl {
+public final class AquitectsWill extends CardImpl {
private final static FilterControlledPermanent filter = new FilterControlledPermanent("Merfolk");
diff --git a/Mage.Sets/src/mage/cards/a/AquusSteed.java b/Mage.Sets/src/mage/cards/a/AquusSteed.java
index f73f092b9c8..1db4f0144fe 100644
--- a/Mage.Sets/src/mage/cards/a/AquusSteed.java
+++ b/Mage.Sets/src/mage/cards/a/AquusSteed.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AquusSteed extends CardImpl {
+public final class AquusSteed extends CardImpl {
public AquusSteed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArabaMothrider.java b/Mage.Sets/src/mage/cards/a/ArabaMothrider.java
index c9d632d233b..9e5f4843855 100644
--- a/Mage.Sets/src/mage/cards/a/ArabaMothrider.java
+++ b/Mage.Sets/src/mage/cards/a/ArabaMothrider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ArabaMothrider extends CardImpl {
+public final class ArabaMothrider extends CardImpl {
public ArabaMothrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Arachnogenesis.java b/Mage.Sets/src/mage/cards/a/Arachnogenesis.java
index 6ff1f90102e..39ea85b3f87 100644
--- a/Mage.Sets/src/mage/cards/a/Arachnogenesis.java
+++ b/Mage.Sets/src/mage/cards/a/Arachnogenesis.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.SpiderToken;
*
* @author fireshoes
*/
-public class Arachnogenesis extends CardImpl {
+public final class Arachnogenesis extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Spider creatures");
diff --git a/Mage.Sets/src/mage/cards/a/Arachnoid.java b/Mage.Sets/src/mage/cards/a/Arachnoid.java
index 6e77afee5ec..4d034404b50 100644
--- a/Mage.Sets/src/mage/cards/a/Arachnoid.java
+++ b/Mage.Sets/src/mage/cards/a/Arachnoid.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Arachnoid extends CardImpl {
+public final class Arachnoid extends CardImpl {
public Arachnoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java b/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java
index c9e8c9982a5..39c7d5cf8e8 100644
--- a/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java
+++ b/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ArachnusSpinner extends CardImpl {
+public final class ArachnusSpinner extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Spider you control");
diff --git a/Mage.Sets/src/mage/cards/a/ArachnusWeb.java b/Mage.Sets/src/mage/cards/a/ArachnusWeb.java
index 7f52be156b0..98601c82c65 100644
--- a/Mage.Sets/src/mage/cards/a/ArachnusWeb.java
+++ b/Mage.Sets/src/mage/cards/a/ArachnusWeb.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ArachnusWeb extends CardImpl {
+public final class ArachnusWeb extends CardImpl {
public ArachnusWeb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AradaraExpress.java b/Mage.Sets/src/mage/cards/a/AradaraExpress.java
index 9decfe74033..d2a1780c082 100644
--- a/Mage.Sets/src/mage/cards/a/AradaraExpress.java
+++ b/Mage.Sets/src/mage/cards/a/AradaraExpress.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class AradaraExpress extends CardImpl {
+public final class AradaraExpress extends CardImpl {
public AradaraExpress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java b/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java
index fbf523e26ce..0732186ee3e 100644
--- a/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java
+++ b/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java
@@ -59,7 +59,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class ArahboRoarOfTheWorld extends CardImpl {
+public final class ArahboRoarOfTheWorld extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target Cat you control");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("another Cat you control");
diff --git a/Mage.Sets/src/mage/cards/a/ArashiTheSkyAsunder.java b/Mage.Sets/src/mage/cards/a/ArashiTheSkyAsunder.java
index 5ffdbc6d60c..7766264d0aa 100644
--- a/Mage.Sets/src/mage/cards/a/ArashiTheSkyAsunder.java
+++ b/Mage.Sets/src/mage/cards/a/ArashiTheSkyAsunder.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class ArashiTheSkyAsunder extends CardImpl {
+public final class ArashiTheSkyAsunder extends CardImpl {
static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/a/ArashinCleric.java b/Mage.Sets/src/mage/cards/a/ArashinCleric.java
index d259cdab86e..7a9141b183c 100644
--- a/Mage.Sets/src/mage/cards/a/ArashinCleric.java
+++ b/Mage.Sets/src/mage/cards/a/ArashinCleric.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ArashinCleric extends CardImpl {
+public final class ArashinCleric extends CardImpl {
public ArashinCleric(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArashinForemost.java b/Mage.Sets/src/mage/cards/a/ArashinForemost.java
index b8c267a3292..9b042087b99 100644
--- a/Mage.Sets/src/mage/cards/a/ArashinForemost.java
+++ b/Mage.Sets/src/mage/cards/a/ArashinForemost.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class ArashinForemost extends CardImpl {
+public final class ArashinForemost extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target Warrior creature you control");
diff --git a/Mage.Sets/src/mage/cards/a/ArashinSovereign.java b/Mage.Sets/src/mage/cards/a/ArashinSovereign.java
index 5d6bb953ddc..e45e6926d63 100644
--- a/Mage.Sets/src/mage/cards/a/ArashinSovereign.java
+++ b/Mage.Sets/src/mage/cards/a/ArashinSovereign.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ArashinSovereign extends CardImpl {
+public final class ArashinSovereign extends CardImpl {
public ArashinSovereign(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArashinWarBeast.java b/Mage.Sets/src/mage/cards/a/ArashinWarBeast.java
index ea1dea27491..24220bed793 100644
--- a/Mage.Sets/src/mage/cards/a/ArashinWarBeast.java
+++ b/Mage.Sets/src/mage/cards/a/ArashinWarBeast.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class ArashinWarBeast extends CardImpl {
+public final class ArashinWarBeast extends CardImpl {
public ArashinWarBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArbalestElite.java b/Mage.Sets/src/mage/cards/a/ArbalestElite.java
index 9f648bc5a53..4b8435f5101 100644
--- a/Mage.Sets/src/mage/cards/a/ArbalestElite.java
+++ b/Mage.Sets/src/mage/cards/a/ArbalestElite.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author nantuko
*/
-public class ArbalestElite extends CardImpl {
+public final class ArbalestElite extends CardImpl {
public ArbalestElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArbiterOfKnollridge.java b/Mage.Sets/src/mage/cards/a/ArbiterOfKnollridge.java
index e086a5654cb..d092ee432f8 100644
--- a/Mage.Sets/src/mage/cards/a/ArbiterOfKnollridge.java
+++ b/Mage.Sets/src/mage/cards/a/ArbiterOfKnollridge.java
@@ -46,7 +46,7 @@ import mage.players.PlayerList;
*
* @author anonymous
*/
-public class ArbiterOfKnollridge extends CardImpl {
+public final class ArbiterOfKnollridge extends CardImpl {
public ArbiterOfKnollridge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArbiterOfTheIdeal.java b/Mage.Sets/src/mage/cards/a/ArbiterOfTheIdeal.java
index 23f0696bd35..a1d90cd5cae 100644
--- a/Mage.Sets/src/mage/cards/a/ArbiterOfTheIdeal.java
+++ b/Mage.Sets/src/mage/cards/a/ArbiterOfTheIdeal.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ArbiterOfTheIdeal extends CardImpl {
+public final class ArbiterOfTheIdeal extends CardImpl {
public ArbiterOfTheIdeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArborArmament.java b/Mage.Sets/src/mage/cards/a/ArborArmament.java
index 5ab64905811..314de5deb3b 100644
--- a/Mage.Sets/src/mage/cards/a/ArborArmament.java
+++ b/Mage.Sets/src/mage/cards/a/ArborArmament.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JRHerlehy
*/
-public class ArborArmament extends CardImpl {
+public final class ArborArmament extends CardImpl {
public ArborArmament(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArborColossus.java b/Mage.Sets/src/mage/cards/a/ArborColossus.java
index 0c0cb481425..f6a03cdbdfb 100644
--- a/Mage.Sets/src/mage/cards/a/ArborColossus.java
+++ b/Mage.Sets/src/mage/cards/a/ArborColossus.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ArborColossus extends CardImpl {
+public final class ArborColossus extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/a/ArborElf.java b/Mage.Sets/src/mage/cards/a/ArborElf.java
index 5ef9e70d754..3aa0e160dc3 100644
--- a/Mage.Sets/src/mage/cards/a/ArborElf.java
+++ b/Mage.Sets/src/mage/cards/a/ArborElf.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ArborElf extends CardImpl {
+public final class ArborElf extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.FOREST, "Forest");
diff --git a/Mage.Sets/src/mage/cards/a/ArborbackStomper.java b/Mage.Sets/src/mage/cards/a/ArborbackStomper.java
index 8809364a165..d0e76f88c69 100644
--- a/Mage.Sets/src/mage/cards/a/ArborbackStomper.java
+++ b/Mage.Sets/src/mage/cards/a/ArborbackStomper.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ArborbackStomper extends CardImpl {
+public final class ArborbackStomper extends CardImpl {
public ArborbackStomper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/Arboria.java b/Mage.Sets/src/mage/cards/a/Arboria.java
index e3e2846027d..1a7953329a6 100644
--- a/Mage.Sets/src/mage/cards/a/Arboria.java
+++ b/Mage.Sets/src/mage/cards/a/Arboria.java
@@ -47,7 +47,7 @@ import mage.watchers.common.PermanentsEnteredBattlefieldYourLastTurnWatcher;
*
* @author spjspj
*/
-public class Arboria extends CardImpl {
+public final class Arboria extends CardImpl {
public Arboria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcBlade.java b/Mage.Sets/src/mage/cards/a/ArcBlade.java
index b800c6330cc..f5f8d158191 100644
--- a/Mage.Sets/src/mage/cards/a/ArcBlade.java
+++ b/Mage.Sets/src/mage/cards/a/ArcBlade.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class ArcBlade extends CardImpl {
+public final class ArcBlade extends CardImpl {
public ArcBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcLightning.java b/Mage.Sets/src/mage/cards/a/ArcLightning.java
index 57d8ab770f6..bfd5a55ee3f 100644
--- a/Mage.Sets/src/mage/cards/a/ArcLightning.java
+++ b/Mage.Sets/src/mage/cards/a/ArcLightning.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author Backfir3
*/
-public class ArcLightning extends CardImpl {
+public final class ArcLightning extends CardImpl {
public ArcLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcMage.java b/Mage.Sets/src/mage/cards/a/ArcMage.java
index b143071752f..629b9ee3128 100644
--- a/Mage.Sets/src/mage/cards/a/ArcMage.java
+++ b/Mage.Sets/src/mage/cards/a/ArcMage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author fireshoes
*/
-public class ArcMage extends CardImpl {
+public final class ArcMage extends CardImpl {
public ArcMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcRunner.java b/Mage.Sets/src/mage/cards/a/ArcRunner.java
index 01ee39394af..fdfbd77bdad 100644
--- a/Mage.Sets/src/mage/cards/a/ArcRunner.java
+++ b/Mage.Sets/src/mage/cards/a/ArcRunner.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ArcRunner extends CardImpl {
+public final class ArcRunner extends CardImpl {
public ArcRunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcSlogger.java b/Mage.Sets/src/mage/cards/a/ArcSlogger.java
index 2525d35386a..49b0633fe9d 100644
--- a/Mage.Sets/src/mage/cards/a/ArcSlogger.java
+++ b/Mage.Sets/src/mage/cards/a/ArcSlogger.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*/
-public class ArcSlogger extends CardImpl {
+public final class ArcSlogger extends CardImpl {
public ArcSlogger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcTrail.java b/Mage.Sets/src/mage/cards/a/ArcTrail.java
index eaeec496df5..02fe23d89d6 100644
--- a/Mage.Sets/src/mage/cards/a/ArcTrail.java
+++ b/Mage.Sets/src/mage/cards/a/ArcTrail.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author maurer.it_at_gmail.com
*/
-public class ArcTrail extends CardImpl {
+public final class ArcTrail extends CardImpl {
public ArcTrail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcadesSabboth.java b/Mage.Sets/src/mage/cards/a/ArcadesSabboth.java
index cfc4aafb559..875cf46e293 100644
--- a/Mage.Sets/src/mage/cards/a/ArcadesSabboth.java
+++ b/Mage.Sets/src/mage/cards/a/ArcadesSabboth.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
/**
* @author fireshoes
*/
-public class ArcadesSabboth extends CardImpl {
+public final class ArcadesSabboth extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped nonattacking creatures you control");
diff --git a/Mage.Sets/src/mage/cards/a/ArcaneAdaptation.java b/Mage.Sets/src/mage/cards/a/ArcaneAdaptation.java
index 66e364fe3a7..bfdcd763acd 100644
--- a/Mage.Sets/src/mage/cards/a/ArcaneAdaptation.java
+++ b/Mage.Sets/src/mage/cards/a/ArcaneAdaptation.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class ArcaneAdaptation extends CardImpl {
+public final class ArcaneAdaptation extends CardImpl {
public ArcaneAdaptation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcaneArtisan.java b/Mage.Sets/src/mage/cards/a/ArcaneArtisan.java
new file mode 100644
index 00000000000..1e4ac832d0c
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/a/ArcaneArtisan.java
@@ -0,0 +1,200 @@
+/*
+ * 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.HashSet;
+import java.util.Set;
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.ZoneChangeTriggeredAbility;
+import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
+import mage.cards.Card;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.Target;
+import mage.target.TargetPlayer;
+import mage.target.common.TargetCardInHand;
+import mage.target.targetpointer.FixedTarget;
+import mage.util.CardUtil;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ArcaneArtisan extends CardImpl {
+
+ public ArcaneArtisan(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.WIZARD);
+ this.power = new MageInt(0);
+ this.toughness = new MageInt(3);
+
+ // {2}{U}, {T}: Target player draws a card, then exiles a card from their hand. If a creature card is exiled this way, that player creates a token that's a copy of that card.
+ Ability ability = new SimpleActivatedAbility(new ArcaneArtisanCreateTokenEffect(), new ManaCostsImpl("{2}{U}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetPlayer());
+ this.addAbility(ability);
+ // When Arcane Artisan leaves the battlefield, exile all tokens created with it at the beginning of the next end step.
+ this.addAbility(new ArcaneArtisanLeavesBattlefieldTriggeredAbility());
+ }
+
+ public ArcaneArtisan(final ArcaneArtisan card) {
+ super(card);
+ }
+
+ @Override
+ public ArcaneArtisan copy() {
+ return new ArcaneArtisan(this);
+ }
+}
+
+class ArcaneArtisanCreateTokenEffect extends OneShotEffect {
+
+ ArcaneArtisanCreateTokenEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Target player draws a card, then exiles a card from their hand. "
+ + "If a creature card is exiled this way, that player creates a token that's a copy of that card.";
+ }
+
+ ArcaneArtisanCreateTokenEffect(final ArcaneArtisanCreateTokenEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ArcaneArtisanCreateTokenEffect copy() {
+ return new ArcaneArtisanCreateTokenEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getFirstTarget());
+ if (player == null) {
+ return false;
+ }
+ player.drawCards(1, game);
+ Target target = new TargetCardInHand(1, new FilterCard());
+ if (!player.chooseTarget(Outcome.Exile, target, source, game)) {
+ return false;
+ }
+ Card card = game.getCard(target.getFirstTarget());
+ player.moveCards(card, Zone.EXILED, source, game);
+ if (!card.isCreature()) {
+ return false;
+ }
+ CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(player.getId());
+ effect.setTargetPointer(new FixedTarget(card.getId(), game));
+ effect.apply(game, source);
+ Object object = game.getState().getValue(CardUtil.getCardZoneString("_tokensCreated", source.getSourceId(), game));
+ Set tokensCreated;
+ if (object != null) {
+ tokensCreated = (Set) object;
+ } else {
+ tokensCreated = new HashSet<>();
+ }
+ for (Permanent perm : effect.getAddedPermanent()) {
+ if (perm != null) {
+ tokensCreated.add(perm.getId());
+ }
+ }
+ game.getState().setValue(CardUtil.getCardZoneString("_tokensCreated", source.getSourceId(), game), tokensCreated);
+ return true;
+ }
+}
+
+class ArcaneArtisanLeavesBattlefieldTriggeredAbility extends ZoneChangeTriggeredAbility {
+
+ ArcaneArtisanLeavesBattlefieldTriggeredAbility() {
+ super(Zone.BATTLEFIELD, null,
+ new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ArcaneArtisanExileEffect())),
+ "", false
+ );
+ }
+
+ ArcaneArtisanLeavesBattlefieldTriggeredAbility(ArcaneArtisanLeavesBattlefieldTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public ArcaneArtisanLeavesBattlefieldTriggeredAbility copy() {
+ return new ArcaneArtisanLeavesBattlefieldTriggeredAbility(this);
+ }
+
+ @Override
+ public String getRule() {
+ return "When {this} leaves the battlefield, exile all tokens created with it at the beginning of the next end step";
+ }
+}
+
+class ArcaneArtisanExileEffect extends OneShotEffect {
+
+ ArcaneArtisanExileEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "exile all tokens created with {this}.";
+ }
+
+ ArcaneArtisanExileEffect(final ArcaneArtisanExileEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ArcaneArtisanExileEffect copy() {
+ return new ArcaneArtisanExileEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Object object = game.getState().getValue(CardUtil.getCardZoneString("_tokensCreated", source.getSourceId(), game, true));
+ if (object != null) {
+ Set tokensCreated = (Set) object;
+ for (UUID tokenId : tokensCreated) {
+ Permanent token = game.getPermanent(tokenId);
+ if (token != null) {
+ token.destroy(source.getSourceId(), game, true);
+ }
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/a/ArcaneDenial.java b/Mage.Sets/src/mage/cards/a/ArcaneDenial.java
index 2f1a2d7a688..8b9a8b60b77 100644
--- a/Mage.Sets/src/mage/cards/a/ArcaneDenial.java
+++ b/Mage.Sets/src/mage/cards/a/ArcaneDenial.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ArcaneDenial extends CardImpl {
+public final class ArcaneDenial extends CardImpl {
public ArcaneDenial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcaneFlight.java b/Mage.Sets/src/mage/cards/a/ArcaneFlight.java
index 5c353c70a38..84cd61a6af2 100644
--- a/Mage.Sets/src/mage/cards/a/ArcaneFlight.java
+++ b/Mage.Sets/src/mage/cards/a/ArcaneFlight.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author JRHerlehy
*/
-public class ArcaneFlight extends CardImpl {
+public final class ArcaneFlight extends CardImpl {
public ArcaneFlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcaneLaboratory.java b/Mage.Sets/src/mage/cards/a/ArcaneLaboratory.java
index 5689d4f632b..171543d7b22 100644
--- a/Mage.Sets/src/mage/cards/a/ArcaneLaboratory.java
+++ b/Mage.Sets/src/mage/cards/a/ArcaneLaboratory.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author dustinconrad
*/
-public class ArcaneLaboratory extends CardImpl {
+public final class ArcaneLaboratory extends CardImpl {
public ArcaneLaboratory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcaneLighthouse.java b/Mage.Sets/src/mage/cards/a/ArcaneLighthouse.java
index 6e39a780614..1ad8233331e 100644
--- a/Mage.Sets/src/mage/cards/a/ArcaneLighthouse.java
+++ b/Mage.Sets/src/mage/cards/a/ArcaneLighthouse.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class ArcaneLighthouse extends CardImpl {
+public final class ArcaneLighthouse extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/a/ArcaneMelee.java b/Mage.Sets/src/mage/cards/a/ArcaneMelee.java
index 3e89b8e23cf..e68b9aa19a7 100644
--- a/Mage.Sets/src/mage/cards/a/ArcaneMelee.java
+++ b/Mage.Sets/src/mage/cards/a/ArcaneMelee.java
@@ -42,7 +42,7 @@ import mage.util.CardUtil;
/**
* @author noxx
*/
-public class ArcaneMelee extends CardImpl {
+public final class ArcaneMelee extends CardImpl {
public ArcaneMelee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcaneSanctum.java b/Mage.Sets/src/mage/cards/a/ArcaneSanctum.java
index 02d6c6836b8..fb2e0c72498 100644
--- a/Mage.Sets/src/mage/cards/a/ArcaneSanctum.java
+++ b/Mage.Sets/src/mage/cards/a/ArcaneSanctum.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ArcaneSanctum extends CardImpl {
+public final class ArcaneSanctum extends CardImpl {
public ArcaneSanctum (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/a/ArcaneSpyglass.java b/Mage.Sets/src/mage/cards/a/ArcaneSpyglass.java
index df21e65613d..f2d6380efdb 100644
--- a/Mage.Sets/src/mage/cards/a/ArcaneSpyglass.java
+++ b/Mage.Sets/src/mage/cards/a/ArcaneSpyglass.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class ArcaneSpyglass extends CardImpl {
+public final class ArcaneSpyglass extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/a/ArcaneTeachings.java b/Mage.Sets/src/mage/cards/a/ArcaneTeachings.java
index 64cadbdf3ab..1c4258de343 100644
--- a/Mage.Sets/src/mage/cards/a/ArcaneTeachings.java
+++ b/Mage.Sets/src/mage/cards/a/ArcaneTeachings.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ArcaneTeachings extends CardImpl {
+public final class ArcaneTeachings extends CardImpl {
public ArcaneTeachings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcanisTheOmnipotent.java b/Mage.Sets/src/mage/cards/a/ArcanisTheOmnipotent.java
index b93fe50333b..c9e131471fc 100644
--- a/Mage.Sets/src/mage/cards/a/ArcanisTheOmnipotent.java
+++ b/Mage.Sets/src/mage/cards/a/ArcanisTheOmnipotent.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ArcanisTheOmnipotent extends CardImpl {
+public final class ArcanisTheOmnipotent extends CardImpl {
public ArcanisTheOmnipotent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcanumWings.java b/Mage.Sets/src/mage/cards/a/ArcanumWings.java
index 360520efdc5..77092f86966 100644
--- a/Mage.Sets/src/mage/cards/a/ArcanumWings.java
+++ b/Mage.Sets/src/mage/cards/a/ArcanumWings.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class ArcanumWings extends CardImpl {
+public final class ArcanumWings extends CardImpl {
public ArcanumWings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Arcbond.java b/Mage.Sets/src/mage/cards/a/Arcbond.java
index dcbebf752c8..e1c6720af09 100644
--- a/Mage.Sets/src/mage/cards/a/Arcbond.java
+++ b/Mage.Sets/src/mage/cards/a/Arcbond.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Arcbond extends CardImpl {
+public final class Arcbond extends CardImpl {
public Arcbond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundBruiser.java b/Mage.Sets/src/mage/cards/a/ArcboundBruiser.java
index 39852811975..0b2f7d23b5f 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundBruiser.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundBruiser.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class ArcboundBruiser extends CardImpl {
+public final class ArcboundBruiser extends CardImpl {
public ArcboundBruiser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundCrusher.java b/Mage.Sets/src/mage/cards/a/ArcboundCrusher.java
index ea19814cd36..dfdffeb81aa 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundCrusher.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundCrusher.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class ArcboundCrusher extends CardImpl {
+public final class ArcboundCrusher extends CardImpl {
private static final FilterPermanent filter = new FilterArtifactPermanent("another artifact");
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundFiend.java b/Mage.Sets/src/mage/cards/a/ArcboundFiend.java
index 83713be4926..de01c26a54e 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundFiend.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundFiend.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class ArcboundFiend extends CardImpl {
+public final class ArcboundFiend extends CardImpl {
public ArcboundFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundHybrid.java b/Mage.Sets/src/mage/cards/a/ArcboundHybrid.java
index e73f2dc3c1a..e8c52a27818 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundHybrid.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundHybrid.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class ArcboundHybrid extends CardImpl {
+public final class ArcboundHybrid extends CardImpl {
public ArcboundHybrid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundLancer.java b/Mage.Sets/src/mage/cards/a/ArcboundLancer.java
index a49362eeff0..1e880252d53 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundLancer.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundLancer.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class ArcboundLancer extends CardImpl {
+public final class ArcboundLancer extends CardImpl {
public ArcboundLancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundOverseer.java b/Mage.Sets/src/mage/cards/a/ArcboundOverseer.java
index 5c9da329cfc..2ce619db069 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundOverseer.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundOverseer.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent;
*
* @author jonubuu
*/
-public class ArcboundOverseer extends CardImpl {
+public final class ArcboundOverseer extends CardImpl {
private static final FilterControlledCreaturePermanent filter;
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundRavager.java b/Mage.Sets/src/mage/cards/a/ArcboundRavager.java
index 451b9b1ea79..9de59c574fa 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundRavager.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundRavager.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jonubuu
*/
-public class ArcboundRavager extends CardImpl {
+public final class ArcboundRavager extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundReclaimer.java b/Mage.Sets/src/mage/cards/a/ArcboundReclaimer.java
index 7e6594b5ae1..93f172e2ea8 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundReclaimer.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundReclaimer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class ArcboundReclaimer extends CardImpl {
+public final class ArcboundReclaimer extends CardImpl {
public ArcboundReclaimer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundSlith.java b/Mage.Sets/src/mage/cards/a/ArcboundSlith.java
index 2e00d9a16c7..89f26c88c02 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundSlith.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundSlith.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class ArcboundSlith extends CardImpl {
+public final class ArcboundSlith extends CardImpl {
public ArcboundSlith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundStinger.java b/Mage.Sets/src/mage/cards/a/ArcboundStinger.java
index 80719d1068d..f5fff496577 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundStinger.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundStinger.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class ArcboundStinger extends CardImpl {
+public final class ArcboundStinger extends CardImpl {
public ArcboundStinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundWanderer.java b/Mage.Sets/src/mage/cards/a/ArcboundWanderer.java
index 57d35d92a95..5e07f6db12e 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundWanderer.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundWanderer.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ArcboundWanderer extends CardImpl {
+public final class ArcboundWanderer extends CardImpl {
public ArcboundWanderer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcboundWorker.java b/Mage.Sets/src/mage/cards/a/ArcboundWorker.java
index 67ad67d90f3..1c326691a4b 100644
--- a/Mage.Sets/src/mage/cards/a/ArcboundWorker.java
+++ b/Mage.Sets/src/mage/cards/a/ArcboundWorker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author LevelX2
*/
-public class ArcboundWorker extends CardImpl {
+public final class ArcboundWorker extends CardImpl {
public ArcboundWorker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchOfOrazca.java b/Mage.Sets/src/mage/cards/a/ArchOfOrazca.java
index 1e2461b9458..e4c57060c8a 100644
--- a/Mage.Sets/src/mage/cards/a/ArchOfOrazca.java
+++ b/Mage.Sets/src/mage/cards/a/ArchOfOrazca.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ArchOfOrazca extends CardImpl {
+public final class ArchOfOrazca extends CardImpl {
public ArchOfOrazca(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/a/ArchaeologicalDig.java b/Mage.Sets/src/mage/cards/a/ArchaeologicalDig.java
index f9eef8a6b07..dfd324b2e20 100644
--- a/Mage.Sets/src/mage/cards/a/ArchaeologicalDig.java
+++ b/Mage.Sets/src/mage/cards/a/ArchaeologicalDig.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class ArchaeologicalDig extends CardImpl {
+public final class ArchaeologicalDig extends CardImpl {
public ArchaeologicalDig(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/Archaeomancer.java b/Mage.Sets/src/mage/cards/a/Archaeomancer.java
index 1f71feab795..7e9412f5567 100644
--- a/Mage.Sets/src/mage/cards/a/Archaeomancer.java
+++ b/Mage.Sets/src/mage/cards/a/Archaeomancer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class Archaeomancer extends CardImpl {
+public final class Archaeomancer extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/a/Archangel.java b/Mage.Sets/src/mage/cards/a/Archangel.java
index 3f5f4144994..0431db5d4cb 100644
--- a/Mage.Sets/src/mage/cards/a/Archangel.java
+++ b/Mage.Sets/src/mage/cards/a/Archangel.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Archangel extends CardImpl {
+public final class Archangel extends CardImpl {
public Archangel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchangelAvacyn.java b/Mage.Sets/src/mage/cards/a/ArchangelAvacyn.java
index 06d133446da..16a239b2c22 100644
--- a/Mage.Sets/src/mage/cards/a/ArchangelAvacyn.java
+++ b/Mage.Sets/src/mage/cards/a/ArchangelAvacyn.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class ArchangelAvacyn extends CardImpl {
+public final class ArchangelAvacyn extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a non-Angel creature you control");
diff --git a/Mage.Sets/src/mage/cards/a/ArchangelOfStrife.java b/Mage.Sets/src/mage/cards/a/ArchangelOfStrife.java
index bb7b398a075..b1846df6a05 100644
--- a/Mage.Sets/src/mage/cards/a/ArchangelOfStrife.java
+++ b/Mage.Sets/src/mage/cards/a/ArchangelOfStrife.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author Eirkei
*/
-public class ArchangelOfStrife extends CardImpl {
+public final class ArchangelOfStrife extends CardImpl {
public ArchangelOfStrife(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchangelOfThune.java b/Mage.Sets/src/mage/cards/a/ArchangelOfThune.java
index 12aea0bd588..5ca32f77874 100644
--- a/Mage.Sets/src/mage/cards/a/ArchangelOfThune.java
+++ b/Mage.Sets/src/mage/cards/a/ArchangelOfThune.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Plopman
*/
-public class ArchangelOfThune extends CardImpl {
+public final class ArchangelOfThune extends CardImpl {
public ArchangelOfThune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchangelOfTithes.java b/Mage.Sets/src/mage/cards/a/ArchangelOfTithes.java
index f05e54b894f..b89e282e8d9 100644
--- a/Mage.Sets/src/mage/cards/a/ArchangelOfTithes.java
+++ b/Mage.Sets/src/mage/cards/a/ArchangelOfTithes.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class ArchangelOfTithes extends CardImpl {
+public final class ArchangelOfTithes extends CardImpl {
public ArchangelOfTithes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchangelsLight.java b/Mage.Sets/src/mage/cards/a/ArchangelsLight.java
index bc0d35075a4..2efcd07053a 100644
--- a/Mage.Sets/src/mage/cards/a/ArchangelsLight.java
+++ b/Mage.Sets/src/mage/cards/a/ArchangelsLight.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class ArchangelsLight extends CardImpl {
+public final class ArchangelsLight extends CardImpl {
public ArchangelsLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{7}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchdemonOfGreed.java b/Mage.Sets/src/mage/cards/a/ArchdemonOfGreed.java
index a187e4b1d92..aa81dbcabfe 100644
--- a/Mage.Sets/src/mage/cards/a/ArchdemonOfGreed.java
+++ b/Mage.Sets/src/mage/cards/a/ArchdemonOfGreed.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author anonymous
*/
-public class ArchdemonOfGreed extends CardImpl {
+public final class ArchdemonOfGreed extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Human");
diff --git a/Mage.Sets/src/mage/cards/a/ArchdemonOfUnx.java b/Mage.Sets/src/mage/cards/a/ArchdemonOfUnx.java
index f92ec04a74a..b03c74b20d1 100644
--- a/Mage.Sets/src/mage/cards/a/ArchdemonOfUnx.java
+++ b/Mage.Sets/src/mage/cards/a/ArchdemonOfUnx.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author Plopman
*/
-public class ArchdemonOfUnx extends CardImpl {
+public final class ArchdemonOfUnx extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Zombie creature");
diff --git a/Mage.Sets/src/mage/cards/a/ArchersOfQarsi.java b/Mage.Sets/src/mage/cards/a/ArchersOfQarsi.java
index d0f6e89ab47..e98b8940659 100644
--- a/Mage.Sets/src/mage/cards/a/ArchersOfQarsi.java
+++ b/Mage.Sets/src/mage/cards/a/ArchersOfQarsi.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ArchersOfQarsi extends CardImpl {
+public final class ArchersOfQarsi extends CardImpl {
public ArchersOfQarsi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchersParapet.java b/Mage.Sets/src/mage/cards/a/ArchersParapet.java
index 70df8cf528b..b9552232616 100644
--- a/Mage.Sets/src/mage/cards/a/ArchersParapet.java
+++ b/Mage.Sets/src/mage/cards/a/ArchersParapet.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ArchersParapet extends CardImpl {
+public final class ArchersParapet extends CardImpl {
public ArchersParapet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchetypeOfAggression.java b/Mage.Sets/src/mage/cards/a/ArchetypeOfAggression.java
index aa203a49fd5..cd07826285a 100644
--- a/Mage.Sets/src/mage/cards/a/ArchetypeOfAggression.java
+++ b/Mage.Sets/src/mage/cards/a/ArchetypeOfAggression.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class ArchetypeOfAggression extends CardImpl {
+public final class ArchetypeOfAggression extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/a/ArchetypeOfCourage.java b/Mage.Sets/src/mage/cards/a/ArchetypeOfCourage.java
index cbc3901034c..31c55133554 100644
--- a/Mage.Sets/src/mage/cards/a/ArchetypeOfCourage.java
+++ b/Mage.Sets/src/mage/cards/a/ArchetypeOfCourage.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class ArchetypeOfCourage extends CardImpl {
+public final class ArchetypeOfCourage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
static {
diff --git a/Mage.Sets/src/mage/cards/a/ArchetypeOfEndurance.java b/Mage.Sets/src/mage/cards/a/ArchetypeOfEndurance.java
index bed134342bd..5e316213855 100644
--- a/Mage.Sets/src/mage/cards/a/ArchetypeOfEndurance.java
+++ b/Mage.Sets/src/mage/cards/a/ArchetypeOfEndurance.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class ArchetypeOfEndurance extends CardImpl {
+public final class ArchetypeOfEndurance extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/a/ArchetypeOfFinality.java b/Mage.Sets/src/mage/cards/a/ArchetypeOfFinality.java
index 3284b506d93..3db60ca80f1 100644
--- a/Mage.Sets/src/mage/cards/a/ArchetypeOfFinality.java
+++ b/Mage.Sets/src/mage/cards/a/ArchetypeOfFinality.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class ArchetypeOfFinality extends CardImpl {
+public final class ArchetypeOfFinality extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/a/ArchetypeOfImagination.java b/Mage.Sets/src/mage/cards/a/ArchetypeOfImagination.java
index 3e676fbaf14..7ae568b7df2 100644
--- a/Mage.Sets/src/mage/cards/a/ArchetypeOfImagination.java
+++ b/Mage.Sets/src/mage/cards/a/ArchetypeOfImagination.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class ArchetypeOfImagination extends CardImpl {
+public final class ArchetypeOfImagination extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
static {
diff --git a/Mage.Sets/src/mage/cards/a/ArchfiendOfDepravity.java b/Mage.Sets/src/mage/cards/a/ArchfiendOfDepravity.java
index 2be69fc7ec0..56f51369e9a 100644
--- a/Mage.Sets/src/mage/cards/a/ArchfiendOfDepravity.java
+++ b/Mage.Sets/src/mage/cards/a/ArchfiendOfDepravity.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class ArchfiendOfDepravity extends CardImpl {
+public final class ArchfiendOfDepravity extends CardImpl {
public ArchfiendOfDepravity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchfiendOfDespair.java b/Mage.Sets/src/mage/cards/a/ArchfiendOfDespair.java
new file mode 100644
index 00000000000..d31ae7360c2
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/a/ArchfiendOfDespair.java
@@ -0,0 +1,123 @@
+/*
+ * 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.BeginningOfEndStepTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.continuous.CantGainLifeAllEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.players.Player;
+import mage.watchers.common.PlayerLostLifeWatcher;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ArchfiendOfDespair extends CardImpl {
+
+ public ArchfiendOfDespair(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{B}{B}");
+
+ this.subtype.add(SubType.DEMON);
+ this.power = new MageInt(6);
+ this.toughness = new MageInt(6);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // Your opponents can't gain life.
+ this.addAbility(new SimpleStaticAbility(
+ Zone.BATTLEFIELD,
+ new CantGainLifeAllEffect(
+ Duration.WhileOnBattlefield,
+ TargetController.OPPONENT
+ )
+ ));
+
+ // At the beginning of each end step, each opponent loses life equal to the life that player lost this turn. (Damage causes loss of life.)
+ this.addAbility(new BeginningOfEndStepTriggeredAbility(new ArchfiendOfDespairEffect(), TargetController.ANY, false));
+ }
+
+ public ArchfiendOfDespair(final ArchfiendOfDespair card) {
+ super(card);
+ }
+
+ @Override
+ public ArchfiendOfDespair copy() {
+ return new ArchfiendOfDespair(this);
+ }
+}
+
+class ArchfiendOfDespairEffect extends OneShotEffect {
+
+ public ArchfiendOfDespairEffect() {
+ super(Outcome.LoseLife);
+ this.staticText = "each opponent loses life equal to the life he or she lost this turn";
+ }
+
+ public ArchfiendOfDespairEffect(final ArchfiendOfDespairEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ArchfiendOfDespairEffect copy() {
+ return new ArchfiendOfDespairEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ PlayerLostLifeWatcher watcher = (PlayerLostLifeWatcher) game.getState().getWatchers().get(PlayerLostLifeWatcher.class.getSimpleName());
+ if (controller != null && watcher != null) {
+ for (UUID playerId : game.getOpponents(controller.getId())) {
+ Player opponent = game.getPlayer(playerId);
+ if (opponent != null) {
+ int lifeLost = watcher.getLiveLost(playerId);
+ if (lifeLost > 0) {
+ opponent.loseLife(lifeLost, game, false);
+ }
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/a/ArchfiendOfIfnir.java b/Mage.Sets/src/mage/cards/a/ArchfiendOfIfnir.java
index c3d3d817778..d5a0d74ec54 100644
--- a/Mage.Sets/src/mage/cards/a/ArchfiendOfIfnir.java
+++ b/Mage.Sets/src/mage/cards/a/ArchfiendOfIfnir.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterOpponentsCreaturePermanent;
*
* @author fireshoes
*/
-public class ArchfiendOfIfnir extends CardImpl {
+public final class ArchfiendOfIfnir extends CardImpl {
public ArchfiendOfIfnir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchitectOfTheUntamed.java b/Mage.Sets/src/mage/cards/a/ArchitectOfTheUntamed.java
index c58e451b278..d0f05d64ba3 100644
--- a/Mage.Sets/src/mage/cards/a/ArchitectOfTheUntamed.java
+++ b/Mage.Sets/src/mage/cards/a/ArchitectOfTheUntamed.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.ArchitectOfTheUntamedBeastToken;
*
* @author LevelX2
*/
-public class ArchitectOfTheUntamed extends CardImpl {
+public final class ArchitectOfTheUntamed extends CardImpl {
public ArchitectOfTheUntamed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchitectsOfWill.java b/Mage.Sets/src/mage/cards/a/ArchitectsOfWill.java
index 443d7a7f876..75ce5f78009 100644
--- a/Mage.Sets/src/mage/cards/a/ArchitectsOfWill.java
+++ b/Mage.Sets/src/mage/cards/a/ArchitectsOfWill.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class ArchitectsOfWill extends CardImpl {
+public final class ArchitectsOfWill extends CardImpl {
public ArchitectsOfWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchiveTrap.java b/Mage.Sets/src/mage/cards/a/ArchiveTrap.java
index 1d331eecf54..b42aa9f4e27 100644
--- a/Mage.Sets/src/mage/cards/a/ArchiveTrap.java
+++ b/Mage.Sets/src/mage/cards/a/ArchiveTrap.java
@@ -50,7 +50,7 @@ import mage.watchers.Watcher;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class ArchiveTrap extends CardImpl {
+public final class ArchiveTrap extends CardImpl {
public ArchiveTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Archivist.java b/Mage.Sets/src/mage/cards/a/Archivist.java
index b7517d3d99c..453fcb5a2cf 100644
--- a/Mage.Sets/src/mage/cards/a/Archivist.java
+++ b/Mage.Sets/src/mage/cards/a/Archivist.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class Archivist extends CardImpl {
+public final class Archivist extends CardImpl {
public Archivist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchmageAscension.java b/Mage.Sets/src/mage/cards/a/ArchmageAscension.java
index dc913c10050..809f64007ff 100644
--- a/Mage.Sets/src/mage/cards/a/ArchmageAscension.java
+++ b/Mage.Sets/src/mage/cards/a/ArchmageAscension.java
@@ -52,7 +52,7 @@ import mage.watchers.common.CardsAmountDrawnThisTurnWatcher;
*
* @author jeffwadsworth
*/
-public class ArchmageAscension extends CardImpl {
+public final class ArchmageAscension extends CardImpl {
public ArchmageAscension(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchonOfJustice.java b/Mage.Sets/src/mage/cards/a/ArchonOfJustice.java
index 36aeb97ecf4..d1584878d04 100644
--- a/Mage.Sets/src/mage/cards/a/ArchonOfJustice.java
+++ b/Mage.Sets/src/mage/cards/a/ArchonOfJustice.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author North, Loki
*/
-public class ArchonOfJustice extends CardImpl {
+public final class ArchonOfJustice extends CardImpl {
public ArchonOfJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchonOfRedemption.java b/Mage.Sets/src/mage/cards/a/ArchonOfRedemption.java
index 50342b73b40..255426e9797 100644
--- a/Mage.Sets/src/mage/cards/a/ArchonOfRedemption.java
+++ b/Mage.Sets/src/mage/cards/a/ArchonOfRedemption.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
/**
* @author Loki
*/
-public class ArchonOfRedemption extends CardImpl {
+public final class ArchonOfRedemption extends CardImpl {
public ArchonOfRedemption(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchonOfTheTriumvirate.java b/Mage.Sets/src/mage/cards/a/ArchonOfTheTriumvirate.java
index 5e685661f8a..75179f3a847 100644
--- a/Mage.Sets/src/mage/cards/a/ArchonOfTheTriumvirate.java
+++ b/Mage.Sets/src/mage/cards/a/ArchonOfTheTriumvirate.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class ArchonOfTheTriumvirate extends CardImpl {
+public final class ArchonOfTheTriumvirate extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanents your opponents control");
diff --git a/Mage.Sets/src/mage/cards/a/ArchonOfValorsReach.java b/Mage.Sets/src/mage/cards/a/ArchonOfValorsReach.java
new file mode 100644
index 00000000000..26a25cc37e7
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/a/ArchonOfValorsReach.java
@@ -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.a;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.common.AsEntersBattlefieldAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.FlyingAbility;
+import mage.abilities.keyword.VigilanceAbility;
+import mage.abilities.keyword.TrampleAbility;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.choices.ChoiceImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.util.CardUtil;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ArchonOfValorsReach extends CardImpl {
+
+ public ArchonOfValorsReach(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{G}");
+
+ this.subtype.add(SubType.ARCHON);
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(6);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // Vigilance
+ this.addAbility(VigilanceAbility.getInstance());
+
+ // Trample
+ this.addAbility(TrampleAbility.getInstance());
+
+ // As Archon of Valor's Reach enters the battlefield, choose artifact, enchantment, instant, sorcery, or planeswalker.
+ this.addAbility(new AsEntersBattlefieldAbility(new ArchonOfValorsReachChooseEffect()));
+
+ // Players can't cast spells of the chosen type.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ArchonOfValorsReachReplacementEffect()));
+ }
+
+ public ArchonOfValorsReach(final ArchonOfValorsReach card) {
+ super(card);
+ }
+
+ @Override
+ public ArchonOfValorsReach copy() {
+ return new ArchonOfValorsReach(this);
+ }
+}
+
+class ArchonOfValorsReachChooseEffect extends OneShotEffect {
+
+ public static String VALUE_KEY = "_cardtype";
+
+ public ArchonOfValorsReachChooseEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "choose artifact, enchantment, instant, sorcery, or planeswalker";
+ }
+
+ public ArchonOfValorsReachChooseEffect(final ArchonOfValorsReachChooseEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ArchonOfValorsReachChooseEffect copy() {
+ return new ArchonOfValorsReachChooseEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ MageObject mageObject = game.getPermanentEntering(source.getSourceId());
+ if (mageObject == null) {
+ mageObject = game.getObject(source.getSourceId());
+ }
+ if (controller != null && mageObject != null) {
+ ArchonOfValorsReachChoice choices = new ArchonOfValorsReachChoice();
+ if (controller.choose(Outcome.Neutral, choices, game)) {
+ game.informPlayers(mageObject.getName() + ": Chosen card type is " + choices.getChoice());
+ System.out.println(mageObject.getId());
+ game.getState().setValue(mageObject.getId().toString() + VALUE_KEY, choices.getChoice());
+ if (mageObject instanceof Permanent) {
+ ((Permanent) mageObject).addInfo("chosen color", CardUtil.addToolTipMarkTags("Chosen card type: " + choices.getChoice()), game);
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+}
+
+class ArchonOfValorsReachChoice extends ChoiceImpl {
+
+ public ArchonOfValorsReachChoice() {
+ super(true);
+ this.choices.add("Artifact");
+ this.choices.add("Enchantment");
+ this.choices.add("Instant");
+ this.choices.add("Sorcery");
+ this.choices.add("Planeswalker");
+ this.message = "Choose artifact, enchantment, instant, sorcery, or planeswalker";
+ }
+
+ public ArchonOfValorsReachChoice(final ArchonOfValorsReachChoice choice) {
+ super(choice);
+ }
+
+ public static CardType getType(String ch) {
+ switch (ch) {
+ case "Artifact":
+ return CardType.ARTIFACT;
+ case "Enchantment":
+ return CardType.ENCHANTMENT;
+ case "Instant":
+ return CardType.INSTANT;
+ case "Sorcery":
+ return CardType.SORCERY;
+ case "Planewswalker":
+ return CardType.PLANESWALKER;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public ArchonOfValorsReachChoice copy() {
+ return new ArchonOfValorsReachChoice(this);
+ }
+
+}
+
+class ArchonOfValorsReachReplacementEffect extends ContinuousRuleModifyingEffectImpl {
+
+ ArchonOfValorsReachReplacementEffect() {
+ super(Duration.WhileOnBattlefield, Outcome.Detriment);
+ staticText = "Players can't cast spells of the chosen type";
+ }
+
+ ArchonOfValorsReachReplacementEffect(final ArchonOfValorsReachReplacementEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public String getInfoMessage(Ability source, GameEvent event, Game game) {
+ CardType cardType = (CardType) game.getState().getValue(source.getSourceId().toString() + "_cardtype");
+ MageObject mageObject = game.getObject(source.getSourceId());
+ if (mageObject != null && cardType != null) {
+ return "You can't cast " + cardType.toString() + " spells (" + mageObject.getIdName() + ").";
+ }
+ return null;
+ }
+
+ @Override
+ public boolean checksEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.CAST_SPELL;
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ CardType cardType = ArchonOfValorsReachChoice.getType((String) game.getState().getValue(source.getSourceId().toString() + "_cardtype"));
+ // spell is not on the stack yet, so we have to check the card
+ Card card = game.getCard(event.getSourceId());
+ return cardType != null && card != null && card.getCardType().contains(cardType);
+ }
+
+ @Override
+ public ArchonOfValorsReachReplacementEffect copy() {
+ return new ArchonOfValorsReachReplacementEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/a/Archweaver.java b/Mage.Sets/src/mage/cards/a/Archweaver.java
index 9d63ebe65ba..40f27a72340 100644
--- a/Mage.Sets/src/mage/cards/a/Archweaver.java
+++ b/Mage.Sets/src/mage/cards/a/Archweaver.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Archweaver extends CardImpl {
+public final class Archweaver extends CardImpl {
public Archweaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArchwingDragon.java b/Mage.Sets/src/mage/cards/a/ArchwingDragon.java
index 1067f47a1a9..a96ccd6480a 100644
--- a/Mage.Sets/src/mage/cards/a/ArchwingDragon.java
+++ b/Mage.Sets/src/mage/cards/a/ArchwingDragon.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author Loki
*/
-public class ArchwingDragon extends CardImpl {
+public final class ArchwingDragon extends CardImpl {
public ArchwingDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcticAven.java b/Mage.Sets/src/mage/cards/a/ArcticAven.java
index 95805391cf3..2b907c4c540 100644
--- a/Mage.Sets/src/mage/cards/a/ArcticAven.java
+++ b/Mage.Sets/src/mage/cards/a/ArcticAven.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class ArcticAven extends CardImpl {
+public final class ArcticAven extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Plains");
diff --git a/Mage.Sets/src/mage/cards/a/ArcticFlats.java b/Mage.Sets/src/mage/cards/a/ArcticFlats.java
index e261df7f038..11d260d02a3 100644
--- a/Mage.Sets/src/mage/cards/a/ArcticFlats.java
+++ b/Mage.Sets/src/mage/cards/a/ArcticFlats.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author dustinconrad
*/
-public class ArcticFlats extends CardImpl {
+public final class ArcticFlats extends CardImpl {
public ArcticFlats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/ArcticMerfolk.java b/Mage.Sets/src/mage/cards/a/ArcticMerfolk.java
index 9bfe2507e36..689074a17df 100644
--- a/Mage.Sets/src/mage/cards/a/ArcticMerfolk.java
+++ b/Mage.Sets/src/mage/cards/a/ArcticMerfolk.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ArcticMerfolk extends CardImpl {
+public final class ArcticMerfolk extends CardImpl {
public ArcticMerfolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcticNishoba.java b/Mage.Sets/src/mage/cards/a/ArcticNishoba.java
index 927961134ad..f097a87108b 100644
--- a/Mage.Sets/src/mage/cards/a/ArcticNishoba.java
+++ b/Mage.Sets/src/mage/cards/a/ArcticNishoba.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class ArcticNishoba extends CardImpl {
+public final class ArcticNishoba extends CardImpl {
public ArcticNishoba(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcticWolves.java b/Mage.Sets/src/mage/cards/a/ArcticWolves.java
index 57e08d50534..e5124213d3b 100644
--- a/Mage.Sets/src/mage/cards/a/ArcticWolves.java
+++ b/Mage.Sets/src/mage/cards/a/ArcticWolves.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ArcticWolves extends CardImpl {
+public final class ArcticWolves extends CardImpl {
public ArcticWolves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArcumDagsson.java b/Mage.Sets/src/mage/cards/a/ArcumDagsson.java
index b98c5f1db49..38a0c0d54cb 100644
--- a/Mage.Sets/src/mage/cards/a/ArcumDagsson.java
+++ b/Mage.Sets/src/mage/cards/a/ArcumDagsson.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class ArcumDagsson extends CardImpl {
+public final class ArcumDagsson extends CardImpl {
private static final FilterPermanent filter = new FilterArtifactPermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/a/ArdentMilitia.java b/Mage.Sets/src/mage/cards/a/ArdentMilitia.java
index 0994f43d4b9..f8c7495a177 100644
--- a/Mage.Sets/src/mage/cards/a/ArdentMilitia.java
+++ b/Mage.Sets/src/mage/cards/a/ArdentMilitia.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ArdentMilitia extends CardImpl {
+public final class ArdentMilitia extends CardImpl {
public ArdentMilitia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArdentPlea.java b/Mage.Sets/src/mage/cards/a/ArdentPlea.java
index 3375ffb2e03..fc313bdb393 100644
--- a/Mage.Sets/src/mage/cards/a/ArdentPlea.java
+++ b/Mage.Sets/src/mage/cards/a/ArdentPlea.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ArdentPlea extends CardImpl {
+public final class ArdentPlea extends CardImpl {
public ArdentPlea(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArdentRecruit.java b/Mage.Sets/src/mage/cards/a/ArdentRecruit.java
index c793bb04351..a7fa8626b24 100644
--- a/Mage.Sets/src/mage/cards/a/ArdentRecruit.java
+++ b/Mage.Sets/src/mage/cards/a/ArdentRecruit.java
@@ -42,7 +42,7 @@ import mage.constants.*;
/**
* @author Loki
*/
-public class ArdentRecruit extends CardImpl {
+public final class ArdentRecruit extends CardImpl {
public ArdentRecruit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArdentSoldier.java b/Mage.Sets/src/mage/cards/a/ArdentSoldier.java
index d5b674e88e6..73d9bfc5036 100644
--- a/Mage.Sets/src/mage/cards/a/ArdentSoldier.java
+++ b/Mage.Sets/src/mage/cards/a/ArdentSoldier.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
* @author LoneFox
*/
-public class ArdentSoldier extends CardImpl {
+public final class ArdentSoldier extends CardImpl {
public ArdentSoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Arena.java b/Mage.Sets/src/mage/cards/a/Arena.java
index 9bbd8eeef01..9d9ee0bdde7 100644
--- a/Mage.Sets/src/mage/cards/a/Arena.java
+++ b/Mage.Sets/src/mage/cards/a/Arena.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponentsChoicePermanent;
*
* @author emerald000
*/
-public class Arena extends CardImpl {
+public final class Arena extends CardImpl {
public Arena(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/ArenaAthlete.java b/Mage.Sets/src/mage/cards/a/ArenaAthlete.java
index 8e908ea5ba0..8b806cc24fa 100644
--- a/Mage.Sets/src/mage/cards/a/ArenaAthlete.java
+++ b/Mage.Sets/src/mage/cards/a/ArenaAthlete.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ArenaAthlete extends CardImpl {
+public final class ArenaAthlete extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/a/ArenaOfTheAncients.java b/Mage.Sets/src/mage/cards/a/ArenaOfTheAncients.java
index dab4222b03b..466dcdc9e2c 100644
--- a/Mage.Sets/src/mage/cards/a/ArenaOfTheAncients.java
+++ b/Mage.Sets/src/mage/cards/a/ArenaOfTheAncients.java
@@ -21,7 +21,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author nickmyers
*/
-public class ArenaOfTheAncients extends CardImpl {
+public final class ArenaOfTheAncients extends CardImpl {
private final static FilterCreaturePermanent legendaryFilter = new FilterCreaturePermanent("legendary creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/a/ArenaRector.java b/Mage.Sets/src/mage/cards/a/ArenaRector.java
new file mode 100644
index 00000000000..aac5a2e8965
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/a/ArenaRector.java
@@ -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.common.DiesTriggeredAbility;
+import mage.abilities.costs.common.ExileSourceFromGraveCost;
+import mage.abilities.effects.common.DoIfCostPaid;
+import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+import mage.filter.common.FilterPlaneswalkerCard;
+import mage.target.common.TargetCardInLibrary;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ArenaRector extends CardImpl {
+
+ public ArenaRector(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.CLERIC);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // When Arena Rector dies, you may exile it. If you do, search your library for a planeswalker card, put it onto the battlefield, then shuffle your library.
+ this.addAbility(new DiesTriggeredAbility(
+ new DoIfCostPaid(
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterPlaneswalkerCard())),
+ new ExileSourceFromGraveCost(),
+ "Exile to search for a planeswalker?"
+ ).setText("you may exile it. If you do, search your library for a planeswalker card, put it onto the battlefield, then shuffle your library"), false
+ ));
+ }
+
+ public ArenaRector(final ArenaRector card) {
+ super(card);
+ }
+
+ @Override
+ public ArenaRector copy() {
+ return new ArenaRector(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/a/ArensonsAura.java b/Mage.Sets/src/mage/cards/a/ArensonsAura.java
index edd61a1c566..0b9bb84c50a 100644
--- a/Mage.Sets/src/mage/cards/a/ArensonsAura.java
+++ b/Mage.Sets/src/mage/cards/a/ArensonsAura.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetEnchantmentPermanent;
* @author LoneFox
*/
-public class ArensonsAura extends CardImpl {
+public final class ArensonsAura extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an enchantment");
private static final FilterSpell filter2 = new FilterSpell("enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/a/ArgentMutation.java b/Mage.Sets/src/mage/cards/a/ArgentMutation.java
index f115d399c46..4c324322f46 100644
--- a/Mage.Sets/src/mage/cards/a/ArgentMutation.java
+++ b/Mage.Sets/src/mage/cards/a/ArgentMutation.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class ArgentMutation extends CardImpl {
+public final class ArgentMutation extends CardImpl {
public ArgentMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArgentSphinx.java b/Mage.Sets/src/mage/cards/a/ArgentSphinx.java
index 747d8b78769..3ae1e0da231 100644
--- a/Mage.Sets/src/mage/cards/a/ArgentSphinx.java
+++ b/Mage.Sets/src/mage/cards/a/ArgentSphinx.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class ArgentSphinx extends CardImpl {
+public final class ArgentSphinx extends CardImpl {
public ArgentSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArgentumArmor.java b/Mage.Sets/src/mage/cards/a/ArgentumArmor.java
index 58e224018e1..913b820fd43 100644
--- a/Mage.Sets/src/mage/cards/a/ArgentumArmor.java
+++ b/Mage.Sets/src/mage/cards/a/ArgentumArmor.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class ArgentumArmor extends CardImpl {
+public final class ArgentumArmor extends CardImpl {
public ArgentumArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/a/ArgivianArchaeologist.java b/Mage.Sets/src/mage/cards/a/ArgivianArchaeologist.java
index 66611339184..0e642c43a32 100644
--- a/Mage.Sets/src/mage/cards/a/ArgivianArchaeologist.java
+++ b/Mage.Sets/src/mage/cards/a/ArgivianArchaeologist.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class ArgivianArchaeologist extends CardImpl {
+public final class ArgivianArchaeologist extends CardImpl {
private static final FilterArtifactCard filter = new FilterArtifactCard("artifact card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/a/ArgivianBlacksmith.java b/Mage.Sets/src/mage/cards/a/ArgivianBlacksmith.java
index 128f5b61486..a679e09cb81 100644
--- a/Mage.Sets/src/mage/cards/a/ArgivianBlacksmith.java
+++ b/Mage.Sets/src/mage/cards/a/ArgivianBlacksmith.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class ArgivianBlacksmith extends CardImpl {
+public final class ArgivianBlacksmith extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/a/ArgivianFind.java b/Mage.Sets/src/mage/cards/a/ArgivianFind.java
index 2b9a53a36d2..6e58b5277e4 100644
--- a/Mage.Sets/src/mage/cards/a/ArgivianFind.java
+++ b/Mage.Sets/src/mage/cards/a/ArgivianFind.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class ArgivianFind extends CardImpl {
+public final class ArgivianFind extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact or enchantment card");
static {
diff --git a/Mage.Sets/src/mage/cards/a/ArgivianRestoration.java b/Mage.Sets/src/mage/cards/a/ArgivianRestoration.java
index 704886f656e..ba3fcb4e704 100644
--- a/Mage.Sets/src/mage/cards/a/ArgivianRestoration.java
+++ b/Mage.Sets/src/mage/cards/a/ArgivianRestoration.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class ArgivianRestoration extends CardImpl {
+public final class ArgivianRestoration extends CardImpl {
public ArgivianRestoration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArgothianElder.java b/Mage.Sets/src/mage/cards/a/ArgothianElder.java
index dffeb6d9cd3..b22fa18bef8 100644
--- a/Mage.Sets/src/mage/cards/a/ArgothianElder.java
+++ b/Mage.Sets/src/mage/cards/a/ArgothianElder.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Backfir3
*/
-public class ArgothianElder extends CardImpl {
+public final class ArgothianElder extends CardImpl {
public ArgothianElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArgothianEnchantress.java b/Mage.Sets/src/mage/cards/a/ArgothianEnchantress.java
index f4f946a34e0..d636f10635a 100644
--- a/Mage.Sets/src/mage/cards/a/ArgothianEnchantress.java
+++ b/Mage.Sets/src/mage/cards/a/ArgothianEnchantress.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Backfir3
*/
-public class ArgothianEnchantress extends CardImpl {
+public final class ArgothianEnchantress extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an Enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/a/ArgothianPixies.java b/Mage.Sets/src/mage/cards/a/ArgothianPixies.java
index fc798600381..c6c0ebbfcc7 100644
--- a/Mage.Sets/src/mage/cards/a/ArgothianPixies.java
+++ b/Mage.Sets/src/mage/cards/a/ArgothianPixies.java
@@ -49,7 +49,7 @@ import mage.game.events.GameEvent;
*
* @author MarcoMarin
*/
-public class ArgothianPixies extends CardImpl {
+public final class ArgothianPixies extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creatures");
diff --git a/Mage.Sets/src/mage/cards/a/ArgothianSwine.java b/Mage.Sets/src/mage/cards/a/ArgothianSwine.java
index 0b831239e08..311b2b5cf68 100644
--- a/Mage.Sets/src/mage/cards/a/ArgothianSwine.java
+++ b/Mage.Sets/src/mage/cards/a/ArgothianSwine.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class ArgothianSwine extends CardImpl {
+public final class ArgothianSwine extends CardImpl {
public ArgothianSwine (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArgothianTreefolk.java b/Mage.Sets/src/mage/cards/a/ArgothianTreefolk.java
index ecf501e0a25..76b7a26073d 100644
--- a/Mage.Sets/src/mage/cards/a/ArgothianTreefolk.java
+++ b/Mage.Sets/src/mage/cards/a/ArgothianTreefolk.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent;
*
* @author MarcoMarin
*/
-public class ArgothianTreefolk extends CardImpl {
+public final class ArgothianTreefolk extends CardImpl {
public ArgothianTreefolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArgothianWurm.java b/Mage.Sets/src/mage/cards/a/ArgothianWurm.java
index 9f68165a6d0..eb497d5c89e 100644
--- a/Mage.Sets/src/mage/cards/a/ArgothianWurm.java
+++ b/Mage.Sets/src/mage/cards/a/ArgothianWurm.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class ArgothianWurm extends CardImpl {
+public final class ArgothianWurm extends CardImpl {
public ArgothianWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArguelsBloodFast.java b/Mage.Sets/src/mage/cards/a/ArguelsBloodFast.java
index 5ad32f20dfd..502cca5291c 100644
--- a/Mage.Sets/src/mage/cards/a/ArguelsBloodFast.java
+++ b/Mage.Sets/src/mage/cards/a/ArguelsBloodFast.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class ArguelsBloodFast extends CardImpl {
+public final class ArguelsBloodFast extends CardImpl {
public ArguelsBloodFast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AridMesa.java b/Mage.Sets/src/mage/cards/a/AridMesa.java
index 47de05c6cac..f7e0faf98cc 100644
--- a/Mage.Sets/src/mage/cards/a/AridMesa.java
+++ b/Mage.Sets/src/mage/cards/a/AridMesa.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AridMesa extends CardImpl {
+public final class AridMesa extends CardImpl {
public AridMesa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/a/ArjunTheShiftingFlame.java b/Mage.Sets/src/mage/cards/a/ArjunTheShiftingFlame.java
index bdc858088e5..d89e57f8778 100644
--- a/Mage.Sets/src/mage/cards/a/ArjunTheShiftingFlame.java
+++ b/Mage.Sets/src/mage/cards/a/ArjunTheShiftingFlame.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class ArjunTheShiftingFlame extends CardImpl {
+public final class ArjunTheShiftingFlame extends CardImpl {
public ArjunTheShiftingFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArkOfBlight.java b/Mage.Sets/src/mage/cards/a/ArkOfBlight.java
index 319fb777071..c397fc46595 100644
--- a/Mage.Sets/src/mage/cards/a/ArkOfBlight.java
+++ b/Mage.Sets/src/mage/cards/a/ArkOfBlight.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class ArkOfBlight extends CardImpl {
+public final class ArkOfBlight extends CardImpl {
public ArkOfBlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/a/ArlinnEmbracedByTheMoon.java b/Mage.Sets/src/mage/cards/a/ArlinnEmbracedByTheMoon.java
index b101d4c6645..47f31763b43 100644
--- a/Mage.Sets/src/mage/cards/a/ArlinnEmbracedByTheMoon.java
+++ b/Mage.Sets/src/mage/cards/a/ArlinnEmbracedByTheMoon.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class ArlinnEmbracedByTheMoon extends CardImpl {
+public final class ArlinnEmbracedByTheMoon extends CardImpl {
public ArlinnEmbracedByTheMoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "");
diff --git a/Mage.Sets/src/mage/cards/a/ArlinnKord.java b/Mage.Sets/src/mage/cards/a/ArlinnKord.java
index 9bcfed3d5f9..9d84098849c 100644
--- a/Mage.Sets/src/mage/cards/a/ArlinnKord.java
+++ b/Mage.Sets/src/mage/cards/a/ArlinnKord.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ArlinnKord extends CardImpl {
+public final class ArlinnKord extends CardImpl {
public ArlinnKord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmWithAether.java b/Mage.Sets/src/mage/cards/a/ArmWithAether.java
index 0b222861789..128560c0117 100644
--- a/Mage.Sets/src/mage/cards/a/ArmWithAether.java
+++ b/Mage.Sets/src/mage/cards/a/ArmWithAether.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ArmWithAether extends CardImpl {
+public final class ArmWithAether extends CardImpl {
public ArmWithAether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmadaWurm.java b/Mage.Sets/src/mage/cards/a/ArmadaWurm.java
index 1668b4474ff..27ab4163bf0 100644
--- a/Mage.Sets/src/mage/cards/a/ArmadaWurm.java
+++ b/Mage.Sets/src/mage/cards/a/ArmadaWurm.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.WurmToken2;
*
* @author LevelX2
*/
-public class ArmadaWurm extends CardImpl {
+public final class ArmadaWurm extends CardImpl {
public ArmadaWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmadilloCloak.java b/Mage.Sets/src/mage/cards/a/ArmadilloCloak.java
index 73f32f514ed..00ba15dbec4 100644
--- a/Mage.Sets/src/mage/cards/a/ArmadilloCloak.java
+++ b/Mage.Sets/src/mage/cards/a/ArmadilloCloak.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ArmadilloCloak extends CardImpl {
+public final class ArmadilloCloak extends CardImpl {
public ArmadilloCloak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Armageddon.java b/Mage.Sets/src/mage/cards/a/Armageddon.java
index 46ad883b68c..6835f33c37d 100644
--- a/Mage.Sets/src/mage/cards/a/Armageddon.java
+++ b/Mage.Sets/src/mage/cards/a/Armageddon.java
@@ -38,7 +38,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class Armageddon extends CardImpl {
+public final class Armageddon extends CardImpl {
public Armageddon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmageddonClock.java b/Mage.Sets/src/mage/cards/a/ArmageddonClock.java
index 76d6ded4252..f7d34ed0143 100644
--- a/Mage.Sets/src/mage/cards/a/ArmageddonClock.java
+++ b/Mage.Sets/src/mage/cards/a/ArmageddonClock.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author MarcoMarin
*/
-public class ArmageddonClock extends CardImpl {
+public final class ArmageddonClock extends CardImpl {
public ArmageddonClock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmamentCorps.java b/Mage.Sets/src/mage/cards/a/ArmamentCorps.java
index e241acc2e4b..1f83926c6ae 100644
--- a/Mage.Sets/src/mage/cards/a/ArmamentCorps.java
+++ b/Mage.Sets/src/mage/cards/a/ArmamentCorps.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LevelX2
*/
-public class ArmamentCorps extends CardImpl {
+public final class ArmamentCorps extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/a/ArmamentMaster.java b/Mage.Sets/src/mage/cards/a/ArmamentMaster.java
index aef4031ef5f..0cea10090af 100644
--- a/Mage.Sets/src/mage/cards/a/ArmamentMaster.java
+++ b/Mage.Sets/src/mage/cards/a/ArmamentMaster.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author North
*/
-public class ArmamentMaster extends CardImpl {
+public final class ArmamentMaster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other Kor creatures you control");
diff --git a/Mage.Sets/src/mage/cards/a/ArmamentOfNyx.java b/Mage.Sets/src/mage/cards/a/ArmamentOfNyx.java
index ddd2e29f888..65cff145f70 100644
--- a/Mage.Sets/src/mage/cards/a/ArmamentOfNyx.java
+++ b/Mage.Sets/src/mage/cards/a/ArmamentOfNyx.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ArmamentOfNyx extends CardImpl {
+public final class ArmamentOfNyx extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("enchantment");
diff --git a/Mage.Sets/src/mage/cards/a/ArmedDangerous.java b/Mage.Sets/src/mage/cards/a/ArmedDangerous.java
index d7097779df2..30b230e63b0 100644
--- a/Mage.Sets/src/mage/cards/a/ArmedDangerous.java
+++ b/Mage.Sets/src/mage/cards/a/ArmedDangerous.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
import mage.constants.SpellAbilityType;
import mage.target.common.TargetCreaturePermanent;
-public class ArmedDangerous extends SplitCard {
+public final class ArmedDangerous extends SplitCard {
public ArmedDangerous(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}", "{3}{G}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/a/ArmedProtocolDroid.java b/Mage.Sets/src/mage/cards/a/ArmedProtocolDroid.java
index a0d1b36f03d..f6af8a74252 100644
--- a/Mage.Sets/src/mage/cards/a/ArmedProtocolDroid.java
+++ b/Mage.Sets/src/mage/cards/a/ArmedProtocolDroid.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class ArmedProtocolDroid extends CardImpl {
+public final class ArmedProtocolDroid extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact creature");
diff --git a/Mage.Sets/src/mage/cards/a/ArmedResponse.java b/Mage.Sets/src/mage/cards/a/ArmedResponse.java
index 3d0091199cc..e667a22528e 100644
--- a/Mage.Sets/src/mage/cards/a/ArmedResponse.java
+++ b/Mage.Sets/src/mage/cards/a/ArmedResponse.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author Plopman
*/
-public class ArmedResponse extends CardImpl {
+public final class ArmedResponse extends CardImpl {
private static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("Equipment you control");
diff --git a/Mage.Sets/src/mage/cards/a/ArmillarySphere.java b/Mage.Sets/src/mage/cards/a/ArmillarySphere.java
index eae283df7fe..0a27fd9f37e 100644
--- a/Mage.Sets/src/mage/cards/a/ArmillarySphere.java
+++ b/Mage.Sets/src/mage/cards/a/ArmillarySphere.java
@@ -46,14 +46,14 @@ import java.util.UUID;
*
* @author Loki
*/
-public class ArmillarySphere extends CardImpl {
+public final class ArmillarySphere extends CardImpl {
public ArmillarySphere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
// {2}, {tap}, Sacrifice Armillary Sphere: Search your library for up to two basic land cards, reveal them, and put them into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new GenericManaCost(2));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/a/Armistice.java b/Mage.Sets/src/mage/cards/a/Armistice.java
index 753427048ce..cc9c5b9c1ea 100644
--- a/Mage.Sets/src/mage/cards/a/Armistice.java
+++ b/Mage.Sets/src/mage/cards/a/Armistice.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class Armistice extends CardImpl {
+public final class Armistice extends CardImpl {
public Armistice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmorOfFaith.java b/Mage.Sets/src/mage/cards/a/ArmorOfFaith.java
index 3e3945cc484..1604ba5eb8c 100644
--- a/Mage.Sets/src/mage/cards/a/ArmorOfFaith.java
+++ b/Mage.Sets/src/mage/cards/a/ArmorOfFaith.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ArmorOfFaith extends CardImpl {
+public final class ArmorOfFaith extends CardImpl {
public ArmorOfFaith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmorOfThorns.java b/Mage.Sets/src/mage/cards/a/ArmorOfThorns.java
index 995d20b174b..6dc238d59bf 100644
--- a/Mage.Sets/src/mage/cards/a/ArmorOfThorns.java
+++ b/Mage.Sets/src/mage/cards/a/ArmorOfThorns.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ArmorOfThorns extends CardImpl {
+public final class ArmorOfThorns extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/a/ArmorSliver.java b/Mage.Sets/src/mage/cards/a/ArmorSliver.java
index be80a45b4b9..d88de84f291 100644
--- a/Mage.Sets/src/mage/cards/a/ArmorSliver.java
+++ b/Mage.Sets/src/mage/cards/a/ArmorSliver.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class ArmorSliver extends CardImpl {
+public final class ArmorSliver extends CardImpl {
public ArmorSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmorThrull.java b/Mage.Sets/src/mage/cards/a/ArmorThrull.java
index 0f2e355703a..d1d017ea317 100644
--- a/Mage.Sets/src/mage/cards/a/ArmorThrull.java
+++ b/Mage.Sets/src/mage/cards/a/ArmorThrull.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ArmorThrull extends CardImpl {
+public final class ArmorThrull extends CardImpl {
public ArmorThrull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmorcraftJudge.java b/Mage.Sets/src/mage/cards/a/ArmorcraftJudge.java
index f7b8787256d..3c685169441 100644
--- a/Mage.Sets/src/mage/cards/a/ArmorcraftJudge.java
+++ b/Mage.Sets/src/mage/cards/a/ArmorcraftJudge.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author LevelX2
*/
-public class ArmorcraftJudge extends CardImpl {
+public final class ArmorcraftJudge extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature you control with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoredAscension.java b/Mage.Sets/src/mage/cards/a/ArmoredAscension.java
index e144844d4f8..d8fe8d3928a 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoredAscension.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoredAscension.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com, North
*/
-public class ArmoredAscension extends CardImpl {
+public final class ArmoredAscension extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Plains you control");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoredCancrix.java b/Mage.Sets/src/mage/cards/a/ArmoredCancrix.java
index 284eb8f4b62..ade4ac6c565 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoredCancrix.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoredCancrix.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ArmoredCancrix extends CardImpl {
+public final class ArmoredCancrix extends CardImpl {
public ArmoredCancrix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoredGalleon.java b/Mage.Sets/src/mage/cards/a/ArmoredGalleon.java
index ddc7d89e287..7e662ca8d69 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoredGalleon.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoredGalleon.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class ArmoredGalleon extends CardImpl {
+public final class ArmoredGalleon extends CardImpl {
public ArmoredGalleon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoredGriffin.java b/Mage.Sets/src/mage/cards/a/ArmoredGriffin.java
index b3ed9d5e276..19e0c55a1a2 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoredGriffin.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoredGriffin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ArmoredGriffin extends CardImpl {
+public final class ArmoredGriffin extends CardImpl {
public ArmoredGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoredGuardian.java b/Mage.Sets/src/mage/cards/a/ArmoredGuardian.java
index e2e4fbbd08f..6f4f72477e5 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoredGuardian.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoredGuardian.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
* @author LoneFox
*/
-public class ArmoredGuardian extends CardImpl {
+public final class ArmoredGuardian extends CardImpl {
public ArmoredGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoredPegasus.java b/Mage.Sets/src/mage/cards/a/ArmoredPegasus.java
index 92671a41fd5..a2e680a050e 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoredPegasus.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoredPegasus.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ArmoredPegasus extends CardImpl {
+public final class ArmoredPegasus extends CardImpl {
public ArmoredPegasus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoredSkaab.java b/Mage.Sets/src/mage/cards/a/ArmoredSkaab.java
index d6cbd340599..301994781d9 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoredSkaab.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoredSkaab.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ArmoredSkaab extends CardImpl {
+public final class ArmoredSkaab extends CardImpl {
public ArmoredSkaab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoredTransport.java b/Mage.Sets/src/mage/cards/a/ArmoredTransport.java
index c472ad71a70..f59764a2b52 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoredTransport.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoredTransport.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class ArmoredTransport extends CardImpl {
+public final class ArmoredTransport extends CardImpl {
public ArmoredTransport(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoredWarhorse.java b/Mage.Sets/src/mage/cards/a/ArmoredWarhorse.java
index 2f83eaab116..a73ea850b40 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoredWarhorse.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoredWarhorse.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class ArmoredWarhorse extends CardImpl {
+public final class ArmoredWarhorse extends CardImpl {
public ArmoredWarhorse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoredWolfRider.java b/Mage.Sets/src/mage/cards/a/ArmoredWolfRider.java
index 702e785eb56..b6fb7dfe8ca 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoredWolfRider.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoredWolfRider.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*/
-public class ArmoredWolfRider extends CardImpl {
+public final class ArmoredWolfRider extends CardImpl {
public ArmoredWolfRider (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmorerGuildmage.java b/Mage.Sets/src/mage/cards/a/ArmorerGuildmage.java
index 7ddd09d2abc..9dd9753e435 100644
--- a/Mage.Sets/src/mage/cards/a/ArmorerGuildmage.java
+++ b/Mage.Sets/src/mage/cards/a/ArmorerGuildmage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ArmorerGuildmage extends CardImpl {
+public final class ArmorerGuildmage extends CardImpl {
public ArmorerGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoryAutomaton.java b/Mage.Sets/src/mage/cards/a/ArmoryAutomaton.java
index 9ae4cb229fc..59375bdcd53 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoryAutomaton.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoryAutomaton.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author spjspj
*/
-public class ArmoryAutomaton extends CardImpl {
+public final class ArmoryAutomaton extends CardImpl {
public ArmoryAutomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmoryGuard.java b/Mage.Sets/src/mage/cards/a/ArmoryGuard.java
index 62e21c5bafe..bd92ca90800 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoryGuard.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoryGuard.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jeffwadsworth
*/
-public class ArmoryGuard extends CardImpl {
+public final class ArmoryGuard extends CardImpl {
private static final String rule = "Armory Guard has vigilance as long as you control a Gate";
diff --git a/Mage.Sets/src/mage/cards/a/ArmoryOfIroas.java b/Mage.Sets/src/mage/cards/a/ArmoryOfIroas.java
index 17b8061543d..8680ac1805a 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoryOfIroas.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoryOfIroas.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class ArmoryOfIroas extends CardImpl {
+public final class ArmoryOfIroas extends CardImpl {
public ArmoryOfIroas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmsDealer.java b/Mage.Sets/src/mage/cards/a/ArmsDealer.java
index 7750ef1dc9c..644ca56c3ca 100644
--- a/Mage.Sets/src/mage/cards/a/ArmsDealer.java
+++ b/Mage.Sets/src/mage/cards/a/ArmsDealer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ArmsDealer extends CardImpl {
+public final class ArmsDealer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goblin");
diff --git a/Mage.Sets/src/mage/cards/a/ArmyAnts.java b/Mage.Sets/src/mage/cards/a/ArmyAnts.java
index bc2da6a7830..93fb843f9e4 100644
--- a/Mage.Sets/src/mage/cards/a/ArmyAnts.java
+++ b/Mage.Sets/src/mage/cards/a/ArmyAnts.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class ArmyAnts extends CardImpl {
+public final class ArmyAnts extends CardImpl {
public ArmyAnts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArmyOfAllah.java b/Mage.Sets/src/mage/cards/a/ArmyOfAllah.java
index 29843672abd..b4d3ead499a 100644
--- a/Mage.Sets/src/mage/cards/a/ArmyOfAllah.java
+++ b/Mage.Sets/src/mage/cards/a/ArmyOfAllah.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author fireshoes
*/
-public class ArmyOfAllah extends CardImpl {
+public final class ArmyOfAllah extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("Attacking creatures");
diff --git a/Mage.Sets/src/mage/cards/a/ArmyOfTheDamned.java b/Mage.Sets/src/mage/cards/a/ArmyOfTheDamned.java
index 70a2fb55443..c32154dd866 100644
--- a/Mage.Sets/src/mage/cards/a/ArmyOfTheDamned.java
+++ b/Mage.Sets/src/mage/cards/a/ArmyOfTheDamned.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.ZombieToken;
/**
* @author nantuko
*/
-public class ArmyOfTheDamned extends CardImpl {
+public final class ArmyOfTheDamned extends CardImpl {
public ArmyOfTheDamned(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/ArnjlotsAscent.java b/Mage.Sets/src/mage/cards/a/ArnjlotsAscent.java
index 5c9d0a39e42..020ca40bd57 100644
--- a/Mage.Sets/src/mage/cards/a/ArnjlotsAscent.java
+++ b/Mage.Sets/src/mage/cards/a/ArnjlotsAscent.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ArnjlotsAscent extends CardImpl {
+public final class ArnjlotsAscent extends CardImpl {
public ArnjlotsAscent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Arrest.java b/Mage.Sets/src/mage/cards/a/Arrest.java
index 8c6107fbd95..d62c2b87d00 100644
--- a/Mage.Sets/src/mage/cards/a/Arrest.java
+++ b/Mage.Sets/src/mage/cards/a/Arrest.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Arrest extends CardImpl {
+public final class Arrest extends CardImpl {
public Arrest (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArrogantBloodlord.java b/Mage.Sets/src/mage/cards/a/ArrogantBloodlord.java
index 0aa16e9cfe5..008956f61a4 100644
--- a/Mage.Sets/src/mage/cards/a/ArrogantBloodlord.java
+++ b/Mage.Sets/src/mage/cards/a/ArrogantBloodlord.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class ArrogantBloodlord extends CardImpl {
+public final class ArrogantBloodlord extends CardImpl {
public ArrogantBloodlord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/ArrogantVampire.java b/Mage.Sets/src/mage/cards/a/ArrogantVampire.java
index 416a50a3369..876c16c9b58 100644
--- a/Mage.Sets/src/mage/cards/a/ArrogantVampire.java
+++ b/Mage.Sets/src/mage/cards/a/ArrogantVampire.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class ArrogantVampire extends CardImpl {
+public final class ArrogantVampire extends CardImpl {
public ArrogantVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/ArrogantWurm.java b/Mage.Sets/src/mage/cards/a/ArrogantWurm.java
index 4fbf7c3b121..812540cb049 100644
--- a/Mage.Sets/src/mage/cards/a/ArrogantWurm.java
+++ b/Mage.Sets/src/mage/cards/a/ArrogantWurm.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author magenoxx_at_gmail.com
*/
-public class ArrogantWurm extends CardImpl {
+public final class ArrogantWurm extends CardImpl {
public ArrogantWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArrowStorm.java b/Mage.Sets/src/mage/cards/a/ArrowStorm.java
index efb4e5ae1df..bb8264f546e 100644
--- a/Mage.Sets/src/mage/cards/a/ArrowStorm.java
+++ b/Mage.Sets/src/mage/cards/a/ArrowStorm.java
@@ -42,7 +42,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class ArrowStorm extends CardImpl {
+public final class ArrowStorm extends CardImpl {
public ArrowStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArrowVolleyTrap.java b/Mage.Sets/src/mage/cards/a/ArrowVolleyTrap.java
index 353f6b315c4..181de225bbf 100644
--- a/Mage.Sets/src/mage/cards/a/ArrowVolleyTrap.java
+++ b/Mage.Sets/src/mage/cards/a/ArrowVolleyTrap.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
/**
* @author LevelX2
*/
-public class ArrowVolleyTrap extends CardImpl {
+public final class ArrowVolleyTrap extends CardImpl {
public ArrowVolleyTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArrowsOfJustice.java b/Mage.Sets/src/mage/cards/a/ArrowsOfJustice.java
index 17a40420c42..69c4e459651 100644
--- a/Mage.Sets/src/mage/cards/a/ArrowsOfJustice.java
+++ b/Mage.Sets/src/mage/cards/a/ArrowsOfJustice.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author LevelX2
*/
-public class ArrowsOfJustice extends CardImpl {
+public final class ArrowsOfJustice extends CardImpl {
public ArrowsOfJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArsenalThresher.java b/Mage.Sets/src/mage/cards/a/ArsenalThresher.java
index 4ec764a971c..3bccb3f2f51 100644
--- a/Mage.Sets/src/mage/cards/a/ArsenalThresher.java
+++ b/Mage.Sets/src/mage/cards/a/ArsenalThresher.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class ArsenalThresher extends CardImpl {
+public final class ArsenalThresher extends CardImpl {
public ArsenalThresher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{W/B}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArterialFlow.java b/Mage.Sets/src/mage/cards/a/ArterialFlow.java
index b987290e173..5f1a807b075 100644
--- a/Mage.Sets/src/mage/cards/a/ArterialFlow.java
+++ b/Mage.Sets/src/mage/cards/a/ArterialFlow.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author L_J
*/
-public class ArterialFlow extends CardImpl {
+public final class ArterialFlow extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("If you control a Vampire,");
static {
diff --git a/Mage.Sets/src/mage/cards/a/ArtfulDodge.java b/Mage.Sets/src/mage/cards/a/ArtfulDodge.java
index e03c262dbe6..19fafdfc476 100644
--- a/Mage.Sets/src/mage/cards/a/ArtfulDodge.java
+++ b/Mage.Sets/src/mage/cards/a/ArtfulDodge.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ArtfulDodge extends CardImpl {
+public final class ArtfulDodge extends CardImpl {
public ArtfulDodge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArtfulManeuver.java b/Mage.Sets/src/mage/cards/a/ArtfulManeuver.java
index 7c6dcf5abb8..2df3f315b8b 100644
--- a/Mage.Sets/src/mage/cards/a/ArtfulManeuver.java
+++ b/Mage.Sets/src/mage/cards/a/ArtfulManeuver.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ArtfulManeuver extends CardImpl {
+public final class ArtfulManeuver extends CardImpl {
public ArtfulManeuver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArtifactBlast.java b/Mage.Sets/src/mage/cards/a/ArtifactBlast.java
index f24c06f633f..fdb3cd40c7a 100644
--- a/Mage.Sets/src/mage/cards/a/ArtifactBlast.java
+++ b/Mage.Sets/src/mage/cards/a/ArtifactBlast.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author Jgod
*/
-public class ArtifactBlast extends CardImpl {
+public final class ArtifactBlast extends CardImpl {
public ArtifactBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/a/ArtifactMutation.java b/Mage.Sets/src/mage/cards/a/ArtifactMutation.java
index 44d797d484e..0747f0e89bf 100644
--- a/Mage.Sets/src/mage/cards/a/ArtifactMutation.java
+++ b/Mage.Sets/src/mage/cards/a/ArtifactMutation.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author North
*/
-public class ArtifactMutation extends CardImpl {
+public final class ArtifactMutation extends CardImpl {
public ArtifactMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArtifactPossession.java b/Mage.Sets/src/mage/cards/a/ArtifactPossession.java
index e6b77c20de2..7f0b161d44e 100644
--- a/Mage.Sets/src/mage/cards/a/ArtifactPossession.java
+++ b/Mage.Sets/src/mage/cards/a/ArtifactPossession.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author MarcoMarin
*/
-public class ArtifactPossession extends CardImpl {
+public final class ArtifactPossession extends CardImpl {
public ArtifactPossession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/ArtifactWard.java b/Mage.Sets/src/mage/cards/a/ArtifactWard.java
index 0dea8f622ea..93976bc3d74 100644
--- a/Mage.Sets/src/mage/cards/a/ArtifactWard.java
+++ b/Mage.Sets/src/mage/cards/a/ArtifactWard.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author MarcoMarin
*/
-public class ArtifactWard extends CardImpl {
+public final class ArtifactWard extends CardImpl {
public ArtifactWard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/a/ArtificersAssistant.java b/Mage.Sets/src/mage/cards/a/ArtificersAssistant.java
index 70e4fc693ad..41b72b6ff7d 100644
--- a/Mage.Sets/src/mage/cards/a/ArtificersAssistant.java
+++ b/Mage.Sets/src/mage/cards/a/ArtificersAssistant.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.HistoricPredicate;
*
* @author TheElk801
*/
-public class ArtificersAssistant extends CardImpl {
+public final class ArtificersAssistant extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a historic spell");
diff --git a/Mage.Sets/src/mage/cards/a/ArtificersEpiphany.java b/Mage.Sets/src/mage/cards/a/ArtificersEpiphany.java
index 8ced9a9b5a7..5756ede5424 100644
--- a/Mage.Sets/src/mage/cards/a/ArtificersEpiphany.java
+++ b/Mage.Sets/src/mage/cards/a/ArtificersEpiphany.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class ArtificersEpiphany extends CardImpl {
+public final class ArtificersEpiphany extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control no artifacts");
diff --git a/Mage.Sets/src/mage/cards/a/ArtificersHex.java b/Mage.Sets/src/mage/cards/a/ArtificersHex.java
index 940121f1ce7..4794a19651f 100644
--- a/Mage.Sets/src/mage/cards/a/ArtificersHex.java
+++ b/Mage.Sets/src/mage/cards/a/ArtificersHex.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class ArtificersHex extends CardImpl {
+public final class ArtificersHex extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Equipment");
static {
diff --git a/Mage.Sets/src/mage/cards/a/ArtificersIntuition.java b/Mage.Sets/src/mage/cards/a/ArtificersIntuition.java
index 2160255a0e7..df896c6412c 100644
--- a/Mage.Sets/src/mage/cards/a/ArtificersIntuition.java
+++ b/Mage.Sets/src/mage/cards/a/ArtificersIntuition.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class ArtificersIntuition extends CardImpl {
+public final class ArtificersIntuition extends CardImpl {
private static final FilterArtifactCard filter = new FilterArtifactCard("artifact card with converted mana cost 1 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/a/Artillerize.java b/Mage.Sets/src/mage/cards/a/Artillerize.java
index 7c283ad79d1..ecf1c161136 100644
--- a/Mage.Sets/src/mage/cards/a/Artillerize.java
+++ b/Mage.Sets/src/mage/cards/a/Artillerize.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class Artillerize extends CardImpl {
+public final class Artillerize extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/a/ArtisanOfForms.java b/Mage.Sets/src/mage/cards/a/ArtisanOfForms.java
index 93bd5a7fe2a..52938aab95c 100644
--- a/Mage.Sets/src/mage/cards/a/ArtisanOfForms.java
+++ b/Mage.Sets/src/mage/cards/a/ArtisanOfForms.java
@@ -48,7 +48,7 @@ import mage.util.functions.ApplyToPermanent;
*
* @author LevelX2
*/
-public class ArtisanOfForms extends CardImpl {
+public final class ArtisanOfForms extends CardImpl {
public ArtisanOfForms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/ArtisanOfKozilek.java b/Mage.Sets/src/mage/cards/a/ArtisanOfKozilek.java
index 18dedcc0144..1babb6dfdbb 100644
--- a/Mage.Sets/src/mage/cards/a/ArtisanOfKozilek.java
+++ b/Mage.Sets/src/mage/cards/a/ArtisanOfKozilek.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class ArtisanOfKozilek extends CardImpl {
+public final class ArtisanOfKozilek extends CardImpl {
public ArtisanOfKozilek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{9}");
diff --git a/Mage.Sets/src/mage/cards/a/ArtisansSorrow.java b/Mage.Sets/src/mage/cards/a/ArtisansSorrow.java
index 239951ab058..9a4963270ee 100644
--- a/Mage.Sets/src/mage/cards/a/ArtisansSorrow.java
+++ b/Mage.Sets/src/mage/cards/a/ArtisansSorrow.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class ArtisansSorrow extends CardImpl {
+public final class ArtisansSorrow extends CardImpl {
public ArtisansSorrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/ArvadTheCursed.java b/Mage.Sets/src/mage/cards/a/ArvadTheCursed.java
index f612fc9c8ce..cb6cf0f47d5 100644
--- a/Mage.Sets/src/mage/cards/a/ArvadTheCursed.java
+++ b/Mage.Sets/src/mage/cards/a/ArvadTheCursed.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author Rystan
*/
-public class ArvadTheCursed extends CardImpl {
+public final class ArvadTheCursed extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AryelKnightOfWindgrace.java b/Mage.Sets/src/mage/cards/a/AryelKnightOfWindgrace.java
index d7893abae6c..9d46521e9a0 100644
--- a/Mage.Sets/src/mage/cards/a/AryelKnightOfWindgrace.java
+++ b/Mage.Sets/src/mage/cards/a/AryelKnightOfWindgrace.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jack-the-BOSS
*/
-public class AryelKnightOfWindgrace extends CardImpl {
+public final class AryelKnightOfWindgrace extends CardImpl {
public AryelKnightOfWindgrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AsForetold.java b/Mage.Sets/src/mage/cards/a/AsForetold.java
index 42696e70ebe..6bcc36e515d 100644
--- a/Mage.Sets/src/mage/cards/a/AsForetold.java
+++ b/Mage.Sets/src/mage/cards/a/AsForetold.java
@@ -56,7 +56,7 @@ import mage.watchers.Watcher;
* really support "once each turn" alternative costs in an obvious way, but it should work in all scenarios as far
* as I can see.
*/
-public class AsForetold extends CardImpl {
+public final class AsForetold extends CardImpl {
public AsForetold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AsLuckWouldHaveIt.java b/Mage.Sets/src/mage/cards/a/AsLuckWouldHaveIt.java
index 1a5c89a8c76..805bcfccf5d 100644
--- a/Mage.Sets/src/mage/cards/a/AsLuckWouldHaveIt.java
+++ b/Mage.Sets/src/mage/cards/a/AsLuckWouldHaveIt.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class AsLuckWouldHaveIt extends CardImpl {
+public final class AsLuckWouldHaveIt extends CardImpl {
static final String rule = "put a number of luck counters on {this} equal to the result. Then if there are 100 or more luck counters on {this}, you win the game.";
diff --git a/Mage.Sets/src/mage/cards/a/AsajjVentress.java b/Mage.Sets/src/mage/cards/a/AsajjVentress.java
index ee1c1df934d..c1ede1dd932 100644
--- a/Mage.Sets/src/mage/cards/a/AsajjVentress.java
+++ b/Mage.Sets/src/mage/cards/a/AsajjVentress.java
@@ -51,7 +51,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
/**
* @author Styxo
*/
-public class AsajjVentress extends CardImpl {
+public final class AsajjVentress extends CardImpl {
public AsajjVentress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AscendantEvincar.java b/Mage.Sets/src/mage/cards/a/AscendantEvincar.java
index 5b686583139..49c5f1d64d6 100644
--- a/Mage.Sets/src/mage/cards/a/AscendantEvincar.java
+++ b/Mage.Sets/src/mage/cards/a/AscendantEvincar.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class AscendantEvincar extends CardImpl {
+public final class AscendantEvincar extends CardImpl {
private static final FilterCreaturePermanent filterBlack = new FilterCreaturePermanent("black creatures");
private static final FilterCreaturePermanent filterNonBlack = new FilterCreaturePermanent("Nonblack creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AscendedLawmage.java b/Mage.Sets/src/mage/cards/a/AscendedLawmage.java
index 53eb12a7199..a6076b1892a 100644
--- a/Mage.Sets/src/mage/cards/a/AscendedLawmage.java
+++ b/Mage.Sets/src/mage/cards/a/AscendedLawmage.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*/
-public class AscendedLawmage extends CardImpl {
+public final class AscendedLawmage extends CardImpl {
public AscendedLawmage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AscendingAven.java b/Mage.Sets/src/mage/cards/a/AscendingAven.java
index d7cd14637b4..14626fd4708 100644
--- a/Mage.Sets/src/mage/cards/a/AscendingAven.java
+++ b/Mage.Sets/src/mage/cards/a/AscendingAven.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class AscendingAven extends CardImpl {
+public final class AscendingAven extends CardImpl {
public AscendingAven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Asceticism.java b/Mage.Sets/src/mage/cards/a/Asceticism.java
index 83d1197f8b8..1d4f5bc20f3 100644
--- a/Mage.Sets/src/mage/cards/a/Asceticism.java
+++ b/Mage.Sets/src/mage/cards/a/Asceticism.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author ayratn
*/
-public class Asceticism extends CardImpl {
+public final class Asceticism extends CardImpl {
public Asceticism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AshBarrens.java b/Mage.Sets/src/mage/cards/a/AshBarrens.java
index b3cb3fe3452..f507cd29fe9 100644
--- a/Mage.Sets/src/mage/cards/a/AshBarrens.java
+++ b/Mage.Sets/src/mage/cards/a/AshBarrens.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author spjspj
*/
-public class AshBarrens extends CardImpl {
+public final class AshBarrens extends CardImpl {
public AshBarrens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/a/AshZealot.java b/Mage.Sets/src/mage/cards/a/AshZealot.java
index 8e6815cfae6..805de6c2e47 100644
--- a/Mage.Sets/src/mage/cards/a/AshZealot.java
+++ b/Mage.Sets/src/mage/cards/a/AshZealot.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class AshZealot extends CardImpl {
+public final class AshZealot extends CardImpl {
public AshZealot (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AshasFavor.java b/Mage.Sets/src/mage/cards/a/AshasFavor.java
index 5321aaf3260..6111facc8cf 100644
--- a/Mage.Sets/src/mage/cards/a/AshasFavor.java
+++ b/Mage.Sets/src/mage/cards/a/AshasFavor.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class AshasFavor extends CardImpl {
+public final class AshasFavor extends CardImpl {
public AshasFavor (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AshcloudPhoenix.java b/Mage.Sets/src/mage/cards/a/AshcloudPhoenix.java
index dd2e95f9322..8988d5cc2ad 100644
--- a/Mage.Sets/src/mage/cards/a/AshcloudPhoenix.java
+++ b/Mage.Sets/src/mage/cards/a/AshcloudPhoenix.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class AshcloudPhoenix extends CardImpl {
+public final class AshcloudPhoenix extends CardImpl {
public AshcloudPhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AshcoatBear.java b/Mage.Sets/src/mage/cards/a/AshcoatBear.java
index db5fea01e74..f15e802d21c 100644
--- a/Mage.Sets/src/mage/cards/a/AshcoatBear.java
+++ b/Mage.Sets/src/mage/cards/a/AshcoatBear.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class AshcoatBear extends CardImpl {
+public final class AshcoatBear extends CardImpl {
public AshcoatBear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AshenFirebeast.java b/Mage.Sets/src/mage/cards/a/AshenFirebeast.java
index c73c27231e6..2edf3cdab63 100644
--- a/Mage.Sets/src/mage/cards/a/AshenFirebeast.java
+++ b/Mage.Sets/src/mage/cards/a/AshenFirebeast.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class AshenFirebeast extends CardImpl {
+public final class AshenFirebeast extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AshenGhoul.java b/Mage.Sets/src/mage/cards/a/AshenGhoul.java
index 4f9dfaa36d0..477c6175ad1 100644
--- a/Mage.Sets/src/mage/cards/a/AshenGhoul.java
+++ b/Mage.Sets/src/mage/cards/a/AshenGhoul.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class AshenGhoul extends CardImpl {
+public final class AshenGhoul extends CardImpl {
public AshenGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AshenMonstrosity.java b/Mage.Sets/src/mage/cards/a/AshenMonstrosity.java
index a1ee9629e25..4f86c5aa135 100644
--- a/Mage.Sets/src/mage/cards/a/AshenMonstrosity.java
+++ b/Mage.Sets/src/mage/cards/a/AshenMonstrosity.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class AshenMonstrosity extends CardImpl {
+public final class AshenMonstrosity extends CardImpl {
public AshenMonstrosity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AshenPowder.java b/Mage.Sets/src/mage/cards/a/AshenPowder.java
index 3d976e6993d..0cd05cd38b7 100644
--- a/Mage.Sets/src/mage/cards/a/AshenPowder.java
+++ b/Mage.Sets/src/mage/cards/a/AshenPowder.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
*
* @author Quercitron
*/
-public class AshenPowder extends CardImpl {
+public final class AshenPowder extends CardImpl {
public AshenPowder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AshenRider.java b/Mage.Sets/src/mage/cards/a/AshenRider.java
index bb9030b39b4..9df0a55d4a5 100644
--- a/Mage.Sets/src/mage/cards/a/AshenRider.java
+++ b/Mage.Sets/src/mage/cards/a/AshenRider.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class AshenRider extends CardImpl {
+public final class AshenRider extends CardImpl {
public AshenRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AshenSkinZubera.java b/Mage.Sets/src/mage/cards/a/AshenSkinZubera.java
index 510b6f017d3..3b2471e11fd 100644
--- a/Mage.Sets/src/mage/cards/a/AshenSkinZubera.java
+++ b/Mage.Sets/src/mage/cards/a/AshenSkinZubera.java
@@ -44,7 +44,7 @@ import mage.watchers.common.ZuberasDiedWatcher;
/**
* @author Loki
*/
-public class AshenSkinZubera extends CardImpl {
+public final class AshenSkinZubera extends CardImpl {
public AshenSkinZubera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AshenmoorCohort.java b/Mage.Sets/src/mage/cards/a/AshenmoorCohort.java
index f6cdce1207d..c963f094abb 100644
--- a/Mage.Sets/src/mage/cards/a/AshenmoorCohort.java
+++ b/Mage.Sets/src/mage/cards/a/AshenmoorCohort.java
@@ -49,7 +49,7 @@ import java.util.UUID;
/**
* @author jeffwadsworth
*/
-public class AshenmoorCohort extends CardImpl {
+public final class AshenmoorCohort extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/a/AshenmoorGouger.java b/Mage.Sets/src/mage/cards/a/AshenmoorGouger.java
index d9e068fcb55..fd8f5da4c50 100644
--- a/Mage.Sets/src/mage/cards/a/AshenmoorGouger.java
+++ b/Mage.Sets/src/mage/cards/a/AshenmoorGouger.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AshenmoorGouger extends CardImpl {
+public final class AshenmoorGouger extends CardImpl {
public AshenmoorGouger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B/R}{B/R}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/a/AshenmoorLiege.java b/Mage.Sets/src/mage/cards/a/AshenmoorLiege.java
index 49eff7886fa..36f36f58e34 100644
--- a/Mage.Sets/src/mage/cards/a/AshenmoorLiege.java
+++ b/Mage.Sets/src/mage/cards/a/AshenmoorLiege.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class AshenmoorLiege extends CardImpl {
+public final class AshenmoorLiege extends CardImpl {
private static final FilterCreaturePermanent filterBlackCreature = new FilterCreaturePermanent("black creatures");
private static final FilterCreaturePermanent filterRedCreature = new FilterCreaturePermanent("red creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AshesOfTheAbhorrent.java b/Mage.Sets/src/mage/cards/a/AshesOfTheAbhorrent.java
index 482cfc09ac0..0e9c2a0d958 100644
--- a/Mage.Sets/src/mage/cards/a/AshesOfTheAbhorrent.java
+++ b/Mage.Sets/src/mage/cards/a/AshesOfTheAbhorrent.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author TheElk801
*/
-public class AshesOfTheAbhorrent extends CardImpl {
+public final class AshesOfTheAbhorrent extends CardImpl {
public AshesOfTheAbhorrent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AshesOfTheFallen.java b/Mage.Sets/src/mage/cards/a/AshesOfTheFallen.java
index e804b099554..0868291785d 100644
--- a/Mage.Sets/src/mage/cards/a/AshesOfTheFallen.java
+++ b/Mage.Sets/src/mage/cards/a/AshesOfTheFallen.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class AshesOfTheFallen extends CardImpl {
+public final class AshesOfTheFallen extends CardImpl {
public AshesOfTheFallen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AshesToAshes.java b/Mage.Sets/src/mage/cards/a/AshesToAshes.java
index 182dfee69d7..eaaac6dc4ec 100644
--- a/Mage.Sets/src/mage/cards/a/AshesToAshes.java
+++ b/Mage.Sets/src/mage/cards/a/AshesToAshes.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class AshesToAshes extends CardImpl {
+public final class AshesToAshes extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact creature");
diff --git a/Mage.Sets/src/mage/cards/a/AshiokNightmareWeaver.java b/Mage.Sets/src/mage/cards/a/AshiokNightmareWeaver.java
index c5cdc0e3a87..9b3222fed77 100644
--- a/Mage.Sets/src/mage/cards/a/AshiokNightmareWeaver.java
+++ b/Mage.Sets/src/mage/cards/a/AshiokNightmareWeaver.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class AshiokNightmareWeaver extends CardImpl {
+public final class AshiokNightmareWeaver extends CardImpl {
public AshiokNightmareWeaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AshioksAdept.java b/Mage.Sets/src/mage/cards/a/AshioksAdept.java
index 5a734506999..0edd71673f0 100644
--- a/Mage.Sets/src/mage/cards/a/AshioksAdept.java
+++ b/Mage.Sets/src/mage/cards/a/AshioksAdept.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class AshioksAdept extends CardImpl {
+public final class AshioksAdept extends CardImpl {
public AshioksAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AshlingTheExtinguisher.java b/Mage.Sets/src/mage/cards/a/AshlingTheExtinguisher.java
index 3af707d39a0..bae3839e5d0 100644
--- a/Mage.Sets/src/mage/cards/a/AshlingTheExtinguisher.java
+++ b/Mage.Sets/src/mage/cards/a/AshlingTheExtinguisher.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class AshlingTheExtinguisher extends CardImpl {
+public final class AshlingTheExtinguisher extends CardImpl {
public AshlingTheExtinguisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AshlingThePilgrim.java b/Mage.Sets/src/mage/cards/a/AshlingThePilgrim.java
index d041a0f367a..45868a48e3d 100644
--- a/Mage.Sets/src/mage/cards/a/AshlingThePilgrim.java
+++ b/Mage.Sets/src/mage/cards/a/AshlingThePilgrim.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AshlingThePilgrim extends CardImpl {
+public final class AshlingThePilgrim extends CardImpl {
public AshlingThePilgrim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AshlingsPrerogative.java b/Mage.Sets/src/mage/cards/a/AshlingsPrerogative.java
index d7d1155f02a..061e4c31933 100644
--- a/Mage.Sets/src/mage/cards/a/AshlingsPrerogative.java
+++ b/Mage.Sets/src/mage/cards/a/AshlingsPrerogative.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author Eirkei
*/
-public class AshlingsPrerogative extends CardImpl {
+public final class AshlingsPrerogative extends CardImpl {
public AshlingsPrerogative(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AshmouthBlade.java b/Mage.Sets/src/mage/cards/a/AshmouthBlade.java
index 16d2b090a61..0c06215f74e 100644
--- a/Mage.Sets/src/mage/cards/a/AshmouthBlade.java
+++ b/Mage.Sets/src/mage/cards/a/AshmouthBlade.java
@@ -44,7 +44,7 @@ import mage.constants.*;
*
* @author fireshoes
*/
-public class AshmouthBlade extends CardImpl {
+public final class AshmouthBlade extends CardImpl {
public AshmouthBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"");
diff --git a/Mage.Sets/src/mage/cards/a/AshmouthHound.java b/Mage.Sets/src/mage/cards/a/AshmouthHound.java
index 9450ad47fcc..58f99008233 100644
--- a/Mage.Sets/src/mage/cards/a/AshmouthHound.java
+++ b/Mage.Sets/src/mage/cards/a/AshmouthHound.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North, Loki
*/
-public class AshmouthHound extends CardImpl {
+public final class AshmouthHound extends CardImpl {
public AshmouthHound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AshnodsAltar.java b/Mage.Sets/src/mage/cards/a/AshnodsAltar.java
index a17ccef3461..9af9abeb4db 100644
--- a/Mage.Sets/src/mage/cards/a/AshnodsAltar.java
+++ b/Mage.Sets/src/mage/cards/a/AshnodsAltar.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Quercitron
*/
-public class AshnodsAltar extends CardImpl {
+public final class AshnodsAltar extends CardImpl {
public AshnodsAltar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AshnodsBattleGear.java b/Mage.Sets/src/mage/cards/a/AshnodsBattleGear.java
index 9f9d6f514c0..98ab93b2a8c 100644
--- a/Mage.Sets/src/mage/cards/a/AshnodsBattleGear.java
+++ b/Mage.Sets/src/mage/cards/a/AshnodsBattleGear.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author LoneFox
*/
-public class AshnodsBattleGear extends CardImpl {
+public final class AshnodsBattleGear extends CardImpl {
public AshnodsBattleGear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AshnodsCylix.java b/Mage.Sets/src/mage/cards/a/AshnodsCylix.java
index f57ce54bff6..6f3dd2b3c11 100644
--- a/Mage.Sets/src/mage/cards/a/AshnodsCylix.java
+++ b/Mage.Sets/src/mage/cards/a/AshnodsCylix.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author L_J
*/
-public class AshnodsCylix extends CardImpl {
+public final class AshnodsCylix extends CardImpl {
public AshnodsCylix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AshnodsTransmogrant.java b/Mage.Sets/src/mage/cards/a/AshnodsTransmogrant.java
index 6c285b30c11..ebe954758f6 100644
--- a/Mage.Sets/src/mage/cards/a/AshnodsTransmogrant.java
+++ b/Mage.Sets/src/mage/cards/a/AshnodsTransmogrant.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class AshnodsTransmogrant extends CardImpl {
+public final class AshnodsTransmogrant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact creature");
diff --git a/Mage.Sets/src/mage/cards/a/AsmiraHolyAvenger.java b/Mage.Sets/src/mage/cards/a/AsmiraHolyAvenger.java
index ff5e981b3b6..1f218aa4fc0 100644
--- a/Mage.Sets/src/mage/cards/a/AsmiraHolyAvenger.java
+++ b/Mage.Sets/src/mage/cards/a/AsmiraHolyAvenger.java
@@ -49,7 +49,7 @@ import mage.watchers.Watcher;
/**
* @author Plopman
*/
-public class AsmiraHolyAvenger extends CardImpl {
+public final class AsmiraHolyAvenger extends CardImpl {
public AsmiraHolyAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AspectOfGorgon.java b/Mage.Sets/src/mage/cards/a/AspectOfGorgon.java
index ad3652fd5ca..051af8e7119 100644
--- a/Mage.Sets/src/mage/cards/a/AspectOfGorgon.java
+++ b/Mage.Sets/src/mage/cards/a/AspectOfGorgon.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AspectOfGorgon extends CardImpl {
+public final class AspectOfGorgon extends CardImpl {
public AspectOfGorgon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AspectOfHydra.java b/Mage.Sets/src/mage/cards/a/AspectOfHydra.java
index 9351b4003d7..b22bfaa3756 100644
--- a/Mage.Sets/src/mage/cards/a/AspectOfHydra.java
+++ b/Mage.Sets/src/mage/cards/a/AspectOfHydra.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AspectOfHydra extends CardImpl {
+public final class AspectOfHydra extends CardImpl {
public AspectOfHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AspectOfMongoose.java b/Mage.Sets/src/mage/cards/a/AspectOfMongoose.java
index 1c31a409e12..20f596278ac 100644
--- a/Mage.Sets/src/mage/cards/a/AspectOfMongoose.java
+++ b/Mage.Sets/src/mage/cards/a/AspectOfMongoose.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AspectOfMongoose extends CardImpl {
+public final class AspectOfMongoose extends CardImpl {
public AspectOfMongoose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AspectOfWolf.java b/Mage.Sets/src/mage/cards/a/AspectOfWolf.java
index 33b44e47bd5..679a8f11ebb 100644
--- a/Mage.Sets/src/mage/cards/a/AspectOfWolf.java
+++ b/Mage.Sets/src/mage/cards/a/AspectOfWolf.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author KholdFuzion
*/
-public class AspectOfWolf extends CardImpl {
+public final class AspectOfWolf extends CardImpl {
public AspectOfWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AsphodelWanderer.java b/Mage.Sets/src/mage/cards/a/AsphodelWanderer.java
index 45481a44f0a..8ca669f815a 100644
--- a/Mage.Sets/src/mage/cards/a/AsphodelWanderer.java
+++ b/Mage.Sets/src/mage/cards/a/AsphodelWanderer.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class AsphodelWanderer extends CardImpl {
+public final class AsphodelWanderer extends CardImpl {
public AsphodelWanderer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/a/Asphyxiate.java b/Mage.Sets/src/mage/cards/a/Asphyxiate.java
index 532e7268282..ba4ca880d71 100644
--- a/Mage.Sets/src/mage/cards/a/Asphyxiate.java
+++ b/Mage.Sets/src/mage/cards/a/Asphyxiate.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Asphyxiate extends CardImpl {
+public final class Asphyxiate extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creature");
diff --git a/Mage.Sets/src/mage/cards/a/AspiringAeronaut.java b/Mage.Sets/src/mage/cards/a/AspiringAeronaut.java
index 37814121b1c..d1aeaa737c6 100644
--- a/Mage.Sets/src/mage/cards/a/AspiringAeronaut.java
+++ b/Mage.Sets/src/mage/cards/a/AspiringAeronaut.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author fireshoes
*/
-public class AspiringAeronaut extends CardImpl {
+public final class AspiringAeronaut extends CardImpl {
public AspiringAeronaut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Assassinate.java b/Mage.Sets/src/mage/cards/a/Assassinate.java
index c3ffad6567e..2c4b01cdd54 100644
--- a/Mage.Sets/src/mage/cards/a/Assassinate.java
+++ b/Mage.Sets/src/mage/cards/a/Assassinate.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Assassinate extends CardImpl {
+public final class Assassinate extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/a/AssassinsBlade.java b/Mage.Sets/src/mage/cards/a/AssassinsBlade.java
index 88c4ebf61da..40c28545b52 100644
--- a/Mage.Sets/src/mage/cards/a/AssassinsBlade.java
+++ b/Mage.Sets/src/mage/cards/a/AssassinsBlade.java
@@ -49,7 +49,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author TheElk801
*/
-public class AssassinsBlade extends CardImpl {
+public final class AssassinsBlade extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack attacking creature");
diff --git a/Mage.Sets/src/mage/cards/a/AssassinsStrike.java b/Mage.Sets/src/mage/cards/a/AssassinsStrike.java
index 89944b031a8..077ca62fafb 100644
--- a/Mage.Sets/src/mage/cards/a/AssassinsStrike.java
+++ b/Mage.Sets/src/mage/cards/a/AssassinsStrike.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AssassinsStrike extends CardImpl {
+public final class AssassinsStrike extends CardImpl {
public AssassinsStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AssaultBattery.java b/Mage.Sets/src/mage/cards/a/AssaultBattery.java
index 9a9805751e1..440db2273d4 100644
--- a/Mage.Sets/src/mage/cards/a/AssaultBattery.java
+++ b/Mage.Sets/src/mage/cards/a/AssaultBattery.java
@@ -38,7 +38,7 @@ import mage.constants.SpellAbilityType;
import mage.game.permanent.token.ElephantToken;
import mage.target.common.TargetAnyTarget;
-public class AssaultBattery extends SplitCard {
+public final class AssaultBattery extends SplitCard {
public AssaultBattery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}", "{3}{G}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/a/AssaultFormation.java b/Mage.Sets/src/mage/cards/a/AssaultFormation.java
index e3f2edca03e..8f2cfc175de 100644
--- a/Mage.Sets/src/mage/cards/a/AssaultFormation.java
+++ b/Mage.Sets/src/mage/cards/a/AssaultFormation.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AssaultFormation extends CardImpl {
+public final class AssaultFormation extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with defender");
diff --git a/Mage.Sets/src/mage/cards/a/AssaultGriffin.java b/Mage.Sets/src/mage/cards/a/AssaultGriffin.java
index 96d828ddb5f..9b561fcd4cc 100644
--- a/Mage.Sets/src/mage/cards/a/AssaultGriffin.java
+++ b/Mage.Sets/src/mage/cards/a/AssaultGriffin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AssaultGriffin extends CardImpl {
+public final class AssaultGriffin extends CardImpl {
public AssaultGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AssaultStrobe.java b/Mage.Sets/src/mage/cards/a/AssaultStrobe.java
index e9b3d2bbfec..e23ddfab19a 100644
--- a/Mage.Sets/src/mage/cards/a/AssaultStrobe.java
+++ b/Mage.Sets/src/mage/cards/a/AssaultStrobe.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class AssaultStrobe extends CardImpl {
+public final class AssaultStrobe extends CardImpl {
public AssaultStrobe (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AssaultSuit.java b/Mage.Sets/src/mage/cards/a/AssaultSuit.java
index 3a11df909b9..15cbcad65da 100644
--- a/Mage.Sets/src/mage/cards/a/AssaultSuit.java
+++ b/Mage.Sets/src/mage/cards/a/AssaultSuit.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class AssaultSuit extends CardImpl {
+public final class AssaultSuit extends CardImpl {
public AssaultSuit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/a/AssaultZeppelid.java b/Mage.Sets/src/mage/cards/a/AssaultZeppelid.java
index 8fb396fc836..405ce72922e 100644
--- a/Mage.Sets/src/mage/cards/a/AssaultZeppelid.java
+++ b/Mage.Sets/src/mage/cards/a/AssaultZeppelid.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AssaultZeppelid extends CardImpl {
+public final class AssaultZeppelid extends CardImpl {
public AssaultZeppelid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AssembleTheLegion.java b/Mage.Sets/src/mage/cards/a/AssembleTheLegion.java
index 1959da33e47..0a09ed7b3b6 100644
--- a/Mage.Sets/src/mage/cards/a/AssembleTheLegion.java
+++ b/Mage.Sets/src/mage/cards/a/AssembleTheLegion.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SoldierTokenWithHaste;
*
* @author LevelX2
*/
-public class AssembleTheLegion extends CardImpl {
+public final class AssembleTheLegion extends CardImpl {
public AssembleTheLegion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AssembledAlphas.java b/Mage.Sets/src/mage/cards/a/AssembledAlphas.java
index 0e27429caab..170db11ab0f 100644
--- a/Mage.Sets/src/mage/cards/a/AssembledAlphas.java
+++ b/Mage.Sets/src/mage/cards/a/AssembledAlphas.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class AssembledAlphas extends CardImpl {
+public final class AssembledAlphas extends CardImpl {
public AssembledAlphas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AssemblyWorker.java b/Mage.Sets/src/mage/cards/a/AssemblyWorker.java
index 838f5f02cb0..13a0a28299e 100644
--- a/Mage.Sets/src/mage/cards/a/AssemblyWorker.java
+++ b/Mage.Sets/src/mage/cards/a/AssemblyWorker.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class AssemblyWorker extends CardImpl {
+public final class AssemblyWorker extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Assembly-Worker creature");
diff --git a/Mage.Sets/src/mage/cards/a/AssertAuthority.java b/Mage.Sets/src/mage/cards/a/AssertAuthority.java
index fd6e16fa785..da14bfdc547 100644
--- a/Mage.Sets/src/mage/cards/a/AssertAuthority.java
+++ b/Mage.Sets/src/mage/cards/a/AssertAuthority.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class AssertAuthority extends CardImpl {
+public final class AssertAuthority extends CardImpl {
public AssertAuthority(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AstralCornucopia.java b/Mage.Sets/src/mage/cards/a/AstralCornucopia.java
index 54fab582230..c5d602cd0d4 100644
--- a/Mage.Sets/src/mage/cards/a/AstralCornucopia.java
+++ b/Mage.Sets/src/mage/cards/a/AstralCornucopia.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AstralCornucopia extends CardImpl {
+public final class AstralCornucopia extends CardImpl {
public AstralCornucopia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{X}{X}{X}");
diff --git a/Mage.Sets/src/mage/cards/a/AstralSlide.java b/Mage.Sets/src/mage/cards/a/AstralSlide.java
index db23956a8f6..e89e9d95ba0 100644
--- a/Mage.Sets/src/mage/cards/a/AstralSlide.java
+++ b/Mage.Sets/src/mage/cards/a/AstralSlide.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class AstralSlide extends CardImpl {
+public final class AstralSlide extends CardImpl {
public AstralSlide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AstralSteel.java b/Mage.Sets/src/mage/cards/a/AstralSteel.java
index 008b49a8bd1..222970ab915 100644
--- a/Mage.Sets/src/mage/cards/a/AstralSteel.java
+++ b/Mage.Sets/src/mage/cards/a/AstralSteel.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class AstralSteel extends CardImpl {
+public final class AstralSteel extends CardImpl {
public AstralSteel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Astrolabe.java b/Mage.Sets/src/mage/cards/a/Astrolabe.java
index b83f8a65c71..04397a125ab 100644
--- a/Mage.Sets/src/mage/cards/a/Astrolabe.java
+++ b/Mage.Sets/src/mage/cards/a/Astrolabe.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class Astrolabe extends CardImpl {
+public final class Astrolabe extends CardImpl {
public Astrolabe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AsylumVisitor.java b/Mage.Sets/src/mage/cards/a/AsylumVisitor.java
index 8575484bbac..7bc3c3a94e8 100644
--- a/Mage.Sets/src/mage/cards/a/AsylumVisitor.java
+++ b/Mage.Sets/src/mage/cards/a/AsylumVisitor.java
@@ -49,7 +49,7 @@ import mage.constants.TargetController;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class AsylumVisitor extends CardImpl {
+public final class AsylumVisitor extends CardImpl {
public AsylumVisitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AtalyaSamiteMaster.java b/Mage.Sets/src/mage/cards/a/AtalyaSamiteMaster.java
index 8a62d618860..e7d38d1fdbd 100644
--- a/Mage.Sets/src/mage/cards/a/AtalyaSamiteMaster.java
+++ b/Mage.Sets/src/mage/cards/a/AtalyaSamiteMaster.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class AtalyaSamiteMaster extends CardImpl {
+public final class AtalyaSamiteMaster extends CardImpl {
private static final FilterMana filterWhiteMana = new FilterMana();
diff --git a/Mage.Sets/src/mage/cards/a/AtarkaBeastbreaker.java b/Mage.Sets/src/mage/cards/a/AtarkaBeastbreaker.java
index efac07480c9..b9ec77605a3 100644
--- a/Mage.Sets/src/mage/cards/a/AtarkaBeastbreaker.java
+++ b/Mage.Sets/src/mage/cards/a/AtarkaBeastbreaker.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author LevelX2
*/
-public class AtarkaBeastbreaker extends CardImpl {
+public final class AtarkaBeastbreaker extends CardImpl {
public AtarkaBeastbreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AtarkaEfreet.java b/Mage.Sets/src/mage/cards/a/AtarkaEfreet.java
index bbd54f6f15b..b0b6c8fc75d 100644
--- a/Mage.Sets/src/mage/cards/a/AtarkaEfreet.java
+++ b/Mage.Sets/src/mage/cards/a/AtarkaEfreet.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class AtarkaEfreet extends CardImpl {
+public final class AtarkaEfreet extends CardImpl {
public AtarkaEfreet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AtarkaMonument.java b/Mage.Sets/src/mage/cards/a/AtarkaMonument.java
index 6d35ee10a1d..af79b8463bc 100644
--- a/Mage.Sets/src/mage/cards/a/AtarkaMonument.java
+++ b/Mage.Sets/src/mage/cards/a/AtarkaMonument.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author fireshoes
*/
-public class AtarkaMonument extends CardImpl {
+public final class AtarkaMonument extends CardImpl {
public AtarkaMonument(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AtarkaPummeler.java b/Mage.Sets/src/mage/cards/a/AtarkaPummeler.java
index e4e6a774451..7c44478ae5b 100644
--- a/Mage.Sets/src/mage/cards/a/AtarkaPummeler.java
+++ b/Mage.Sets/src/mage/cards/a/AtarkaPummeler.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class AtarkaPummeler extends CardImpl {
+public final class AtarkaPummeler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
diff --git a/Mage.Sets/src/mage/cards/a/AtarkaWorldRender.java b/Mage.Sets/src/mage/cards/a/AtarkaWorldRender.java
index 7cc32c280d6..2dbf6325bc8 100644
--- a/Mage.Sets/src/mage/cards/a/AtarkaWorldRender.java
+++ b/Mage.Sets/src/mage/cards/a/AtarkaWorldRender.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class AtarkaWorldRender extends CardImpl {
+public final class AtarkaWorldRender extends CardImpl {
public AtarkaWorldRender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AtarkasCommand.java b/Mage.Sets/src/mage/cards/a/AtarkasCommand.java
index c9e04b5576d..86b9ec36966 100644
--- a/Mage.Sets/src/mage/cards/a/AtarkasCommand.java
+++ b/Mage.Sets/src/mage/cards/a/AtarkasCommand.java
@@ -31,7 +31,7 @@ import java.util.UUID;
import mage.abilities.Mode;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamagePlayersEffect;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.CantGainLifeAllEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
@@ -41,43 +41,44 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.TargetController;
+import mage.filter.StaticFilters;
/**
*
* @author LevelX2
*/
-public class AtarkasCommand extends CardImpl {
+public final class AtarkasCommand extends CardImpl {
public AtarkasCommand(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}{G}");
- // Choose two -
+ // Choose two -
this.getSpellAbility().getModes().setMinModes(2);
this.getSpellAbility().getModes().setMaxModes(2);
-
- // Your opponents can't gain life this turn;
+
+ // Your opponents can't gain life this turn;
this.getSpellAbility().addEffect(new CantGainLifeAllEffect(Duration.EndOfTurn, TargetController.OPPONENT));
-
- // or Atarka's Command deals 3 damage to each opponent;
+
+ // or Atarka's Command deals 3 damage to each opponent;
Mode mode = new Mode();
mode.getEffects().add(new DamagePlayersEffect(3, TargetController.OPPONENT));
this.getSpellAbility().addMode(mode);
-
- // or You may put a land card from your hand onto the battlefield;
+
+ // or You may put a land card from your hand onto the battlefield;
mode = new Mode();
- mode.getEffects().add(new PutLandFromHandOntoBattlefieldEffect());
+ mode.getEffects().add(new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A));
this.getSpellAbility().addMode(mode);
// or Creatures you control get +1/+1 and gain reach until the end of turn.
mode = new Mode();
- Effect effect = new BoostControlledEffect(1,1, Duration.EndOfTurn);
- effect.setText("Creatures you control get +1/+1");
+ Effect effect = new BoostControlledEffect(1, 1, Duration.EndOfTurn);
+ effect.setText("Creatures you control get +1/+1");
mode.getEffects().add(effect);
effect = new GainAbilityControlledEffect(ReachAbility.getInstance(), Duration.EndOfTurn);
- effect.setText("and gain reach until the end of turn");
+ effect.setText("and gain reach until the end of turn");
mode.getEffects().add(effect);
this.getSpellAbility().addMode(mode);
-
+
}
public AtarkasCommand(final AtarkasCommand card) {
diff --git a/Mage.Sets/src/mage/cards/a/AthreosGodOfPassage.java b/Mage.Sets/src/mage/cards/a/AthreosGodOfPassage.java
index 3e888169ba4..875476646c8 100644
--- a/Mage.Sets/src/mage/cards/a/AthreosGodOfPassage.java
+++ b/Mage.Sets/src/mage/cards/a/AthreosGodOfPassage.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class AthreosGodOfPassage extends CardImpl {
+public final class AthreosGodOfPassage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you own");
diff --git a/Mage.Sets/src/mage/cards/a/Atog.java b/Mage.Sets/src/mage/cards/a/Atog.java
index 9afadc993c4..e143c31e73f 100644
--- a/Mage.Sets/src/mage/cards/a/Atog.java
+++ b/Mage.Sets/src/mage/cards/a/Atog.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class Atog extends CardImpl {
+public final class Atog extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/a/Atogatog.java b/Mage.Sets/src/mage/cards/a/Atogatog.java
index b18998578f2..5b4dbb9f2a4 100644
--- a/Mage.Sets/src/mage/cards/a/Atogatog.java
+++ b/Mage.Sets/src/mage/cards/a/Atogatog.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class Atogatog extends CardImpl {
+public final class Atogatog extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an Atog creature");
diff --git a/Mage.Sets/src/mage/cards/a/AtraxaPraetorsVoice.java b/Mage.Sets/src/mage/cards/a/AtraxaPraetorsVoice.java
index 1a5575c314c..0b4faabda7a 100644
--- a/Mage.Sets/src/mage/cards/a/AtraxaPraetorsVoice.java
+++ b/Mage.Sets/src/mage/cards/a/AtraxaPraetorsVoice.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class AtraxaPraetorsVoice extends CardImpl {
+public final class AtraxaPraetorsVoice extends CardImpl {
public AtraxaPraetorsVoice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AttendedKnight.java b/Mage.Sets/src/mage/cards/a/AttendedKnight.java
index 19ccd7797a7..63777f63c47 100644
--- a/Mage.Sets/src/mage/cards/a/AttendedKnight.java
+++ b/Mage.Sets/src/mage/cards/a/AttendedKnight.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author Loki
*/
-public class AttendedKnight extends CardImpl {
+public final class AttendedKnight extends CardImpl {
public AttendedKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Attrition.java b/Mage.Sets/src/mage/cards/a/Attrition.java
index f2a50dab608..c272d907e88 100644
--- a/Mage.Sets/src/mage/cards/a/Attrition.java
+++ b/Mage.Sets/src/mage/cards/a/Attrition.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class Attrition extends CardImpl {
+public final class Attrition extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/a/AttuneWithAether.java b/Mage.Sets/src/mage/cards/a/AttuneWithAether.java
index a3f254b1d2a..1c614656f23 100644
--- a/Mage.Sets/src/mage/cards/a/AttuneWithAether.java
+++ b/Mage.Sets/src/mage/cards/a/AttuneWithAether.java
@@ -42,13 +42,13 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class AttuneWithAether extends CardImpl {
+public final class AttuneWithAether extends CardImpl {
public AttuneWithAether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
// Search you library for a basic land card, reveal it, put it into your hand, then shuffle your library. You get {E}{E}.
- Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true);
+ Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true);
effect.setText("Search your library for a basic land card, reveal it, put it into your hand, then shuffle your library");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addEffect(new GetEnergyCountersControllerEffect(2));
diff --git a/Mage.Sets/src/mage/cards/a/Attunement.java b/Mage.Sets/src/mage/cards/a/Attunement.java
index e707f15ca80..e7f4d14dac0 100644
--- a/Mage.Sets/src/mage/cards/a/Attunement.java
+++ b/Mage.Sets/src/mage/cards/a/Attunement.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class Attunement extends CardImpl {
+public final class Attunement extends CardImpl {
public Attunement(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AtzalCaveOfEternity.java b/Mage.Sets/src/mage/cards/a/AtzalCaveOfEternity.java
index 712dd012e88..a1aa0c424bb 100644
--- a/Mage.Sets/src/mage/cards/a/AtzalCaveOfEternity.java
+++ b/Mage.Sets/src/mage/cards/a/AtzalCaveOfEternity.java
@@ -1,83 +1,83 @@
-/*
- * 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.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.InfoEffect;
-import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
-import mage.abilities.mana.AnyColorManaAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.SuperType;
-import mage.constants.Zone;
-import mage.filter.StaticFilters;
-import mage.target.common.TargetCardInYourGraveyard;
-
-/**
- *
- * @author LevelX2
- */
-public class AtzalCaveOfEternity extends CardImpl {
-
- public AtzalCaveOfEternity(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
-
- this.addSuperType(SuperType.LEGENDARY);
-
- this.nightCard = true;
-
- // (Transforms from Journey to Eternity.)
- Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new InfoEffect("(Transforms from Journey to Eternity.)"));
- ability.setRuleAtTheTop(true);
- this.addAbility(ability);
-
- // {t}: Add one mana of any color.
- this.addAbility(new AnyColorManaAbility());
-
- // {3}{B}{G}, {T}: Return target creature card from your graveyard to the battlefield.
- ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl<>("{3}{B}{G}"));
- ability.addCost(new TapSourceCost());
- ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
- this.addAbility(ability);
- }
-
- public AtzalCaveOfEternity(final AtzalCaveOfEternity card) {
- super(card);
- }
-
- @Override
- public AtzalCaveOfEternity copy() {
- return new AtzalCaveOfEternity(this);
- }
-}
+/*
+ * 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.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.InfoEffect;
+import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
+import mage.abilities.mana.AnyColorManaAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SuperType;
+import mage.constants.Zone;
+import mage.filter.StaticFilters;
+import mage.target.common.TargetCardInYourGraveyard;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class AtzalCaveOfEternity extends CardImpl {
+
+ public AtzalCaveOfEternity(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
+
+ this.addSuperType(SuperType.LEGENDARY);
+
+ this.nightCard = true;
+
+ // (Transforms from Journey to Eternity.)
+ Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new InfoEffect("(Transforms from Journey to Eternity.)"));
+ ability.setRuleAtTheTop(true);
+ this.addAbility(ability);
+
+ // {t}: Add one mana of any color.
+ this.addAbility(new AnyColorManaAbility());
+
+ // {3}{B}{G}, {T}: Return target creature card from your graveyard to the battlefield.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl<>("{3}{B}{G}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
+ this.addAbility(ability);
+ }
+
+ public AtzalCaveOfEternity(final AtzalCaveOfEternity card) {
+ super(card);
+ }
+
+ @Override
+ public AtzalCaveOfEternity copy() {
+ return new AtzalCaveOfEternity(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/a/AtzocanArcher.java b/Mage.Sets/src/mage/cards/a/AtzocanArcher.java
index 7cb2fb513ae..471c0323fe9 100644
--- a/Mage.Sets/src/mage/cards/a/AtzocanArcher.java
+++ b/Mage.Sets/src/mage/cards/a/AtzocanArcher.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class AtzocanArcher extends CardImpl {
+public final class AtzocanArcher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/a/AtzocanSeer.java b/Mage.Sets/src/mage/cards/a/AtzocanSeer.java
index bc29bab0d16..bfe0315bfeb 100644
--- a/Mage.Sets/src/mage/cards/a/AtzocanSeer.java
+++ b/Mage.Sets/src/mage/cards/a/AtzocanSeer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author L_J
*/
-public class AtzocanSeer extends CardImpl {
+public final class AtzocanSeer extends CardImpl {
private static final FilterCard filter = new FilterCard("Dinosaur from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/a/AudaciousInfiltrator.java b/Mage.Sets/src/mage/cards/a/AudaciousInfiltrator.java
index bf0465f1a92..d06569ac409 100644
--- a/Mage.Sets/src/mage/cards/a/AudaciousInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/a/AudaciousInfiltrator.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author Styxo
*/
-public class AudaciousInfiltrator extends CardImpl {
+public final class AudaciousInfiltrator extends CardImpl {
public AudaciousInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AugerSpree.java b/Mage.Sets/src/mage/cards/a/AugerSpree.java
index 83021d5b703..9d6602e4c0a 100644
--- a/Mage.Sets/src/mage/cards/a/AugerSpree.java
+++ b/Mage.Sets/src/mage/cards/a/AugerSpree.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author magenoxx_at_gmail.com
*/
-public class AugerSpree extends CardImpl {
+public final class AugerSpree extends CardImpl {
public AugerSpree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AugmentingAutomaton.java b/Mage.Sets/src/mage/cards/a/AugmentingAutomaton.java
index e8bb7ef6cde..193a1c8a364 100644
--- a/Mage.Sets/src/mage/cards/a/AugmentingAutomaton.java
+++ b/Mage.Sets/src/mage/cards/a/AugmentingAutomaton.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class AugmentingAutomaton extends CardImpl {
+public final class AugmentingAutomaton extends CardImpl {
public AugmentingAutomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/a/AugurIlVec.java b/Mage.Sets/src/mage/cards/a/AugurIlVec.java
index 9e48c4325f0..eba826ba124 100644
--- a/Mage.Sets/src/mage/cards/a/AugurIlVec.java
+++ b/Mage.Sets/src/mage/cards/a/AugurIlVec.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class AugurIlVec extends CardImpl {
+public final class AugurIlVec extends CardImpl {
public AugurIlVec(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AugurOfBolas.java b/Mage.Sets/src/mage/cards/a/AugurOfBolas.java
index 5d626a7210f..089b30b0b9d 100644
--- a/Mage.Sets/src/mage/cards/a/AugurOfBolas.java
+++ b/Mage.Sets/src/mage/cards/a/AugurOfBolas.java
@@ -50,7 +50,7 @@ import mage.target.TargetCard;
*
* @author jeffwadsworth
*/
-public class AugurOfBolas extends CardImpl {
+public final class AugurOfBolas extends CardImpl {
private static final FilterCard filter = new FilterCard("an instant or sorcery card");
diff --git a/Mage.Sets/src/mage/cards/a/AugurOfSkulls.java b/Mage.Sets/src/mage/cards/a/AugurOfSkulls.java
index f0f60ce38db..e8e7a28668f 100644
--- a/Mage.Sets/src/mage/cards/a/AugurOfSkulls.java
+++ b/Mage.Sets/src/mage/cards/a/AugurOfSkulls.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class AugurOfSkulls extends CardImpl {
+public final class AugurOfSkulls extends CardImpl {
public AugurOfSkulls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AuguryAdept.java b/Mage.Sets/src/mage/cards/a/AuguryAdept.java
index 2a93b5a236d..eeedf85fbcc 100644
--- a/Mage.Sets/src/mage/cards/a/AuguryAdept.java
+++ b/Mage.Sets/src/mage/cards/a/AuguryAdept.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AuguryAdept extends CardImpl {
+public final class AuguryAdept extends CardImpl {
public AuguryAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W/U}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/a/AuguryOwl.java b/Mage.Sets/src/mage/cards/a/AuguryOwl.java
index f33663c8fd2..f28b98bde93 100644
--- a/Mage.Sets/src/mage/cards/a/AuguryOwl.java
+++ b/Mage.Sets/src/mage/cards/a/AuguryOwl.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AuguryOwl extends CardImpl {
+public final class AuguryOwl extends CardImpl {
public AuguryOwl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AuntiesHovel.java b/Mage.Sets/src/mage/cards/a/AuntiesHovel.java
index b11d896c85d..40d89afe660 100644
--- a/Mage.Sets/src/mage/cards/a/AuntiesHovel.java
+++ b/Mage.Sets/src/mage/cards/a/AuntiesHovel.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class AuntiesHovel extends CardImpl {
+public final class AuntiesHovel extends CardImpl {
private static final FilterCard filter = new FilterCard("a Goblin card from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AuntiesSnitch.java b/Mage.Sets/src/mage/cards/a/AuntiesSnitch.java
index fe9c348d27c..20c50a8c03a 100644
--- a/Mage.Sets/src/mage/cards/a/AuntiesSnitch.java
+++ b/Mage.Sets/src/mage/cards/a/AuntiesSnitch.java
@@ -53,7 +53,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class AuntiesSnitch extends CardImpl {
+public final class AuntiesSnitch extends CardImpl {
public AuntiesSnitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AuraBarbs.java b/Mage.Sets/src/mage/cards/a/AuraBarbs.java
index 69dfdfa8c23..bfc080d3da0 100644
--- a/Mage.Sets/src/mage/cards/a/AuraBarbs.java
+++ b/Mage.Sets/src/mage/cards/a/AuraBarbs.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AuraBarbs extends CardImpl {
+public final class AuraBarbs extends CardImpl {
public AuraBarbs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AuraBlast.java b/Mage.Sets/src/mage/cards/a/AuraBlast.java
index 641b98f7ed2..b68b36c2ef5 100644
--- a/Mage.Sets/src/mage/cards/a/AuraBlast.java
+++ b/Mage.Sets/src/mage/cards/a/AuraBlast.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetEnchantmentPermanent;
* @author LoneFox
*/
-public class AuraBlast extends CardImpl {
+public final class AuraBlast extends CardImpl {
public AuraBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AuraExtraction.java b/Mage.Sets/src/mage/cards/a/AuraExtraction.java
index 4d922774a00..37f06a5a483 100644
--- a/Mage.Sets/src/mage/cards/a/AuraExtraction.java
+++ b/Mage.Sets/src/mage/cards/a/AuraExtraction.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Galatolol
*/
-public class AuraExtraction extends CardImpl {
+public final class AuraExtraction extends CardImpl {
public AuraExtraction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AuraFinesse.java b/Mage.Sets/src/mage/cards/a/AuraFinesse.java
index b44ff002489..9dc3a22b614 100644
--- a/Mage.Sets/src/mage/cards/a/AuraFinesse.java
+++ b/Mage.Sets/src/mage/cards/a/AuraFinesse.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class AuraFinesse extends CardImpl {
+public final class AuraFinesse extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Aura you control");
diff --git a/Mage.Sets/src/mage/cards/a/AuraFlux.java b/Mage.Sets/src/mage/cards/a/AuraFlux.java
index e51fd475c8d..e1e6eb24bd4 100644
--- a/Mage.Sets/src/mage/cards/a/AuraFlux.java
+++ b/Mage.Sets/src/mage/cards/a/AuraFlux.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterEnchantmentPermanent;
*
* @author Plopman
*/
-public class AuraFlux extends CardImpl {
+public final class AuraFlux extends CardImpl {
public AuraFlux(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AuraFracture.java b/Mage.Sets/src/mage/cards/a/AuraFracture.java
index d47f8172506..d570d90737a 100644
--- a/Mage.Sets/src/mage/cards/a/AuraFracture.java
+++ b/Mage.Sets/src/mage/cards/a/AuraFracture.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author fireshoes
*/
-public class AuraFracture extends CardImpl {
+public final class AuraFracture extends CardImpl {
public AuraFracture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AuraGnarlid.java b/Mage.Sets/src/mage/cards/a/AuraGnarlid.java
index a535c39d09a..59863eb2d1f 100644
--- a/Mage.Sets/src/mage/cards/a/AuraGnarlid.java
+++ b/Mage.Sets/src/mage/cards/a/AuraGnarlid.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class AuraGnarlid extends CardImpl {
+public final class AuraGnarlid extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Aura on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/a/AuraGraft.java b/Mage.Sets/src/mage/cards/a/AuraGraft.java
index 09cc30a020e..034c1e321ea 100644
--- a/Mage.Sets/src/mage/cards/a/AuraGraft.java
+++ b/Mage.Sets/src/mage/cards/a/AuraGraft.java
@@ -54,7 +54,7 @@ import mage.util.TargetAddress;
/**
* @author duncant
*/
-public class AuraGraft extends CardImpl {
+public final class AuraGraft extends CardImpl {
public AuraGraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AuraMutation.java b/Mage.Sets/src/mage/cards/a/AuraMutation.java
index 5e36be4a0b2..4a879d02575 100644
--- a/Mage.Sets/src/mage/cards/a/AuraMutation.java
+++ b/Mage.Sets/src/mage/cards/a/AuraMutation.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author North
*/
-public class AuraMutation extends CardImpl {
+public final class AuraMutation extends CardImpl {
public AuraMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AuraOfDominion.java b/Mage.Sets/src/mage/cards/a/AuraOfDominion.java
index 07e0e40b0b5..fe38f7cb9b0 100644
--- a/Mage.Sets/src/mage/cards/a/AuraOfDominion.java
+++ b/Mage.Sets/src/mage/cards/a/AuraOfDominion.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class AuraOfDominion extends CardImpl {
+public final class AuraOfDominion extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/a/AuraOfSilence.java b/Mage.Sets/src/mage/cards/a/AuraOfSilence.java
index 3e260aa6871..420b825d182 100644
--- a/Mage.Sets/src/mage/cards/a/AuraOfSilence.java
+++ b/Mage.Sets/src/mage/cards/a/AuraOfSilence.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class AuraOfSilence extends CardImpl {
+public final class AuraOfSilence extends CardImpl {
public AuraOfSilence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AuraShards.java b/Mage.Sets/src/mage/cards/a/AuraShards.java
index 71b4dc2619e..84a08321375 100644
--- a/Mage.Sets/src/mage/cards/a/AuraShards.java
+++ b/Mage.Sets/src/mage/cards/a/AuraShards.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class AuraShards extends CardImpl {
+public final class AuraShards extends CardImpl {
public AuraShards(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AuraThief.java b/Mage.Sets/src/mage/cards/a/AuraThief.java
index 9e5bff2c145..9a148b7e92f 100644
--- a/Mage.Sets/src/mage/cards/a/AuraThief.java
+++ b/Mage.Sets/src/mage/cards/a/AuraThief.java
@@ -30,7 +30,7 @@ import java.util.UUID;
* @author nick.myers
*/
-public class AuraThief extends CardImpl {
+public final class AuraThief extends CardImpl {
public AuraThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Auramancer.java b/Mage.Sets/src/mage/cards/a/Auramancer.java
index c50435f7a2b..ac4e5ad0f10 100644
--- a/Mage.Sets/src/mage/cards/a/Auramancer.java
+++ b/Mage.Sets/src/mage/cards/a/Auramancer.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author Loki
*/
-public class Auramancer extends CardImpl {
+public final class Auramancer extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantment card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/a/AuramancersGuise.java b/Mage.Sets/src/mage/cards/a/AuramancersGuise.java
index 7bb76dcc1f5..6e2a06f8a66 100644
--- a/Mage.Sets/src/mage/cards/a/AuramancersGuise.java
+++ b/Mage.Sets/src/mage/cards/a/AuramancersGuise.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author spjspj
*/
-public class AuramancersGuise extends CardImpl {
+public final class AuramancersGuise extends CardImpl {
public AuramancersGuise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/Auratog.java b/Mage.Sets/src/mage/cards/a/Auratog.java
index 7f09e24cb88..f205611470b 100644
--- a/Mage.Sets/src/mage/cards/a/Auratog.java
+++ b/Mage.Sets/src/mage/cards/a/Auratog.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class Auratog extends CardImpl {
+public final class Auratog extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an enchantment");
diff --git a/Mage.Sets/src/mage/cards/a/AuratouchedMage.java b/Mage.Sets/src/mage/cards/a/AuratouchedMage.java
index 5c0dee373c1..6e77c029b8c 100644
--- a/Mage.Sets/src/mage/cards/a/AuratouchedMage.java
+++ b/Mage.Sets/src/mage/cards/a/AuratouchedMage.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class AuratouchedMage extends CardImpl {
+public final class AuratouchedMage extends CardImpl {
public AuratouchedMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AureliaTheWarleader.java b/Mage.Sets/src/mage/cards/a/AureliaTheWarleader.java
index b69657ba26e..91d4ed052a3 100644
--- a/Mage.Sets/src/mage/cards/a/AureliaTheWarleader.java
+++ b/Mage.Sets/src/mage/cards/a/AureliaTheWarleader.java
@@ -24,54 +24,51 @@
* 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.TriggeredAbilityImpl;
-import mage.abilities.effects.Effect;
+import mage.abilities.common.AttacksFirstTimeTriggeredAbility;
import mage.abilities.effects.common.AdditionalCombatPhaseEffect;
import mage.abilities.effects.common.UntapAllControllerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.VigilanceAbility;
-import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
-import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
-import mage.game.permanent.Permanent;
+import mage.filter.StaticFilters;
/**
-*
-* @author LevelX2
-*/
-public class AureliaTheWarleader extends CardImpl {
+ *
+ * @author LevelX2
+ */
+public final class AureliaTheWarleader extends CardImpl {
public AureliaTheWarleader(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}{W}{W}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}{W}{W}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.ANGEL);
this.power = new MageInt(3);
this.toughness = new MageInt(4);
- // Flying, vigilance, haste
+ // Flying, vigilance, haste
this.addAbility(FlyingAbility.getInstance());
this.addAbility(VigilanceAbility.getInstance());
this.addAbility(HasteAbility.getInstance());
// Whenever Aurelia, the Warleader attacks for the first time each turn, untap all creatures you control. After this phase, there is an additional combat phase.
- Ability ability = new AureliaAttacksTriggeredAbility(new UntapAllControllerEffect(new FilterControlledCreaturePermanent(),"untap all creatures you control"), false);
+ Ability ability = new AttacksFirstTimeTriggeredAbility(
+ new UntapAllControllerEffect(
+ StaticFilters.FILTER_CONTROLLED_CREATURES,
+ "untap all creatures you control"
+ ),
+ false);
ability.addEffect(new AdditionalCombatPhaseEffect());
this.addAbility(ability);
@@ -86,72 +83,3 @@ public class AureliaTheWarleader extends CardImpl {
return new AureliaTheWarleader(this);
}
}
-
-class AureliaAttacksTriggeredAbility extends TriggeredAbilityImpl {
-
- protected String text;
-
- public AureliaAttacksTriggeredAbility(Effect effect, boolean optional) {
- super(Zone.BATTLEFIELD, effect, optional);
- }
-
- public AureliaAttacksTriggeredAbility(Effect effect, boolean optional, String text) {
- super(Zone.BATTLEFIELD, effect, optional);
- this.text = text;
- }
-
- public AureliaAttacksTriggeredAbility(final AureliaAttacksTriggeredAbility ability) {
- super(ability);
- this.text = ability.text;
- }
-
- @Override
- public void reset(Game game) {
- Card sourceCard = game.getCard(getSourceId());
- game.getState().setValue(getValueKey(sourceCard, game), 0);
- }
-
- @Override
- public boolean checkEventType(GameEvent event, Game game) {
- return event.getType() == EventType.ATTACKER_DECLARED;
- }
-
- @Override
- public boolean checkTrigger(GameEvent event, Game game) {
- if (event.getSourceId().equals(this.getSourceId()) ) {
- Permanent sourceCard = game.getPermanent(getSourceId());
- Integer amountAttacks = (Integer) game.getState().getValue(getValueKey(sourceCard, game));
- if (amountAttacks == null || amountAttacks < 1) {
- if (amountAttacks == null) {
- amountAttacks = 1;
- } else {
- ++amountAttacks;
- }
- game.getState().setValue(getValueKey(sourceCard, game), amountAttacks);
- return true;
- }
- }
- return false;
- }
-
- protected String getValueKey(Card sourceCard, Game game) {
- if (sourceCard == null) {
- return "";
- }
- return new StringBuilder(this.getId().toString()).append(sourceCard.getZoneChangeCounter(game)).append("amountAttacks").toString();
- }
-
- @Override
- public String getRule() {
- if (text == null || text.isEmpty()) {
-
- return "Whenever {this} attacks for the first time each turn, " + super.getRule();
- }
- return text;
- }
-
- @Override
- public AureliaAttacksTriggeredAbility copy() {
- return new AureliaAttacksTriggeredAbility(this);
- }
-}
diff --git a/Mage.Sets/src/mage/cards/a/AureliasFury.java b/Mage.Sets/src/mage/cards/a/AureliasFury.java
index ff2129dc28c..8c0264d2866 100644
--- a/Mage.Sets/src/mage/cards/a/AureliasFury.java
+++ b/Mage.Sets/src/mage/cards/a/AureliasFury.java
@@ -77,7 +77,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class AureliasFury extends CardImpl {
+public final class AureliasFury extends CardImpl {
public AureliasFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/Aurification.java b/Mage.Sets/src/mage/cards/a/Aurification.java
index 6b379fa314c..67cacc3277f 100644
--- a/Mage.Sets/src/mage/cards/a/Aurification.java
+++ b/Mage.Sets/src/mage/cards/a/Aurification.java
@@ -55,7 +55,7 @@ import mage.util.SubTypeList;
* @author andyfries
*/
-public class Aurification extends CardImpl {
+public final class Aurification extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature with a gold counter on it");
diff --git a/Mage.Sets/src/mage/cards/a/AuriokBladewarden.java b/Mage.Sets/src/mage/cards/a/AuriokBladewarden.java
index 96e2c019b69..7257e7c38db 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokBladewarden.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokBladewarden.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class AuriokBladewarden extends CardImpl {
+public final class AuriokBladewarden extends CardImpl {
public AuriokBladewarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AuriokChampion.java b/Mage.Sets/src/mage/cards/a/AuriokChampion.java
index a9bf8cfc08d..42e96a0358e 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokChampion.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokChampion.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class AuriokChampion extends CardImpl {
+public final class AuriokChampion extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/a/AuriokEdgewright.java b/Mage.Sets/src/mage/cards/a/AuriokEdgewright.java
index 44006610d8a..00ef1681a00 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokEdgewright.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokEdgewright.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author maurer.it_at_gmail.com
*/
-public class AuriokEdgewright extends CardImpl {
+public final class AuriokEdgewright extends CardImpl {
protected static String effectText = "Metalcraft - Auriok Edgewright has double strike as long as you control three or more artifacts.";
diff --git a/Mage.Sets/src/mage/cards/a/AuriokGlaivemaster.java b/Mage.Sets/src/mage/cards/a/AuriokGlaivemaster.java
index ac4d56c6342..59658cecdf4 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokGlaivemaster.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokGlaivemaster.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class AuriokGlaivemaster extends CardImpl {
+public final class AuriokGlaivemaster extends CardImpl {
private static final String rule1 = "As long as {this} is equipped, it gets +1/+1";
private static final String rule2 = "As long as {this} is equipped, it has first strike";
diff --git a/Mage.Sets/src/mage/cards/a/AuriokReplica.java b/Mage.Sets/src/mage/cards/a/AuriokReplica.java
index c65a404cc99..30ca9c13ea2 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokReplica.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokReplica.java
@@ -49,7 +49,7 @@ import mage.target.TargetSource;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AuriokReplica extends CardImpl {
+public final class AuriokReplica extends CardImpl {
public AuriokReplica(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AuriokSalvagers.java b/Mage.Sets/src/mage/cards/a/AuriokSalvagers.java
index d155f317242..f2d35cde66a 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokSalvagers.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokSalvagers.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class AuriokSalvagers extends CardImpl {
+public final class AuriokSalvagers extends CardImpl {
private static final FilterArtifactCard filter = new FilterArtifactCard("artifact card with converted mana cost 1 or less from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AuriokSiegeSled.java b/Mage.Sets/src/mage/cards/a/AuriokSiegeSled.java
index 71b39ab9079..74a085055a9 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokSiegeSled.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokSiegeSled.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class AuriokSiegeSled extends CardImpl {
+public final class AuriokSiegeSled extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/a/AuriokSteelshaper.java b/Mage.Sets/src/mage/cards/a/AuriokSteelshaper.java
index 02360c5dadd..84ea1e554b5 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokSteelshaper.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokSteelshaper.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
* @author Jason E. Wall
*
*/
-public class AuriokSteelshaper extends CardImpl {
+public final class AuriokSteelshaper extends CardImpl {
private static final FilterCreaturePermanent soldiersOrKnights = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/a/AuriokSunchaser.java b/Mage.Sets/src/mage/cards/a/AuriokSunchaser.java
index 65bc9812483..57af12a137c 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokSunchaser.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokSunchaser.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author maurer.it_at_gmail.com
*/
-public class AuriokSunchaser extends CardImpl {
+public final class AuriokSunchaser extends CardImpl {
protected static String effect1Text = "Metalcraft - As long as you control three or more artifacts, Auriok Sunchaser gets +2/+2";
protected static String effect2Text = "Metalcraft - As long as you control three or more artifacts, Auriok Sunchaser has flying";
diff --git a/Mage.Sets/src/mage/cards/a/AuriokSurvivors.java b/Mage.Sets/src/mage/cards/a/AuriokSurvivors.java
index 7fd4af06d97..2352367e7f1 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokSurvivors.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokSurvivors.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class AuriokSurvivors extends CardImpl {
+public final class AuriokSurvivors extends CardImpl {
private static final FilterCard filter = new FilterCard("Equipment card from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AuriokTransfixer.java b/Mage.Sets/src/mage/cards/a/AuriokTransfixer.java
index c329000fd4b..d38f2d066bf 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokTransfixer.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokTransfixer.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class AuriokTransfixer extends CardImpl {
+public final class AuriokTransfixer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/a/AuriokWindwalker.java b/Mage.Sets/src/mage/cards/a/AuriokWindwalker.java
index cf942c9019d..f24eb3525e3 100644
--- a/Mage.Sets/src/mage/cards/a/AuriokWindwalker.java
+++ b/Mage.Sets/src/mage/cards/a/AuriokWindwalker.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class AuriokWindwalker extends CardImpl {
+public final class AuriokWindwalker extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Equipment you control");
diff --git a/Mage.Sets/src/mage/cards/a/Aurochs.java b/Mage.Sets/src/mage/cards/a/Aurochs.java
index d4afb2fb685..5a5dbb84cd8 100644
--- a/Mage.Sets/src/mage/cards/a/Aurochs.java
+++ b/Mage.Sets/src/mage/cards/a/Aurochs.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author anonymous
*/
-public class Aurochs extends CardImpl {
+public final class Aurochs extends CardImpl {
private static final FilterAttackingCreature filter1 = new FilterAttackingCreature("other attacking Aurochs");
diff --git a/Mage.Sets/src/mage/cards/a/AurochsHerd.java b/Mage.Sets/src/mage/cards/a/AurochsHerd.java
index a10a5622ca4..a781b001821 100644
--- a/Mage.Sets/src/mage/cards/a/AurochsHerd.java
+++ b/Mage.Sets/src/mage/cards/a/AurochsHerd.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LoneFox
*/
-public class AurochsHerd extends CardImpl {
+public final class AurochsHerd extends CardImpl {
private static final FilterCard filter1 = new FilterCard("Aurochs card");
private static final FilterAttackingCreature filter2 = new FilterAttackingCreature("other attacking Aurochs");
diff --git a/Mage.Sets/src/mage/cards/a/AuroraChampion.java b/Mage.Sets/src/mage/cards/a/AuroraChampion.java
new file mode 100644
index 00000000000..b0ebb10c3e9
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/a/AuroraChampion.java
@@ -0,0 +1,83 @@
+/*
+ * 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.AttacksTriggeredAbility;
+import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
+import mage.abilities.decorator.ConditionalTriggeredAbility;
+import mage.abilities.effects.common.TapTargetEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.filter.common.FilterTeamPermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class AuroraChampion extends CardImpl {
+
+ private static final FilterTeamPermanent filter = new FilterTeamPermanent(SubType.WARRIOR, "another Warrior");
+
+ static {
+ filter.add(new AnotherPredicate());
+ }
+
+ public AuroraChampion(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
+
+ this.subtype.add(SubType.ELF);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(2);
+
+ // Whenever Aurora Champion attacks, if your team controls another Warrior, tap target creature.
+ Ability ability = new ConditionalTriggeredAbility(
+ new AttacksTriggeredAbility(new TapTargetEffect(), false),
+ new PermanentsOnTheBattlefieldCondition(filter),
+ "Whenever {this} attacks, if your team controls another Warrior, tap target creature."
+ );
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public AuroraChampion(final AuroraChampion card) {
+ super(card);
+ }
+
+ @Override
+ public AuroraChampion copy() {
+ return new AuroraChampion(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/a/AuroraEidolon.java b/Mage.Sets/src/mage/cards/a/AuroraEidolon.java
index 5f855d86715..1f7434cdfc4 100644
--- a/Mage.Sets/src/mage/cards/a/AuroraEidolon.java
+++ b/Mage.Sets/src/mage/cards/a/AuroraEidolon.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class AuroraEidolon extends CardImpl {
+public final class AuroraEidolon extends CardImpl {
public AuroraEidolon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AuroraGriffin.java b/Mage.Sets/src/mage/cards/a/AuroraGriffin.java
index 72556bd0acb..3da27a2d917 100644
--- a/Mage.Sets/src/mage/cards/a/AuroraGriffin.java
+++ b/Mage.Sets/src/mage/cards/a/AuroraGriffin.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class AuroraGriffin extends CardImpl {
+public final class AuroraGriffin extends CardImpl {
public AuroraGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AuroraOfEmrakul.java b/Mage.Sets/src/mage/cards/a/AuroraOfEmrakul.java
index 8b845f74366..847f964d093 100644
--- a/Mage.Sets/src/mage/cards/a/AuroraOfEmrakul.java
+++ b/Mage.Sets/src/mage/cards/a/AuroraOfEmrakul.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AuroraOfEmrakul extends CardImpl {
+public final class AuroraOfEmrakul extends CardImpl {
public AuroraOfEmrakul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/a/AurraSingBaneOfJedi.java b/Mage.Sets/src/mage/cards/a/AurraSingBaneOfJedi.java
index 721cbbaeb86..3652c761768 100644
--- a/Mage.Sets/src/mage/cards/a/AurraSingBaneOfJedi.java
+++ b/Mage.Sets/src/mage/cards/a/AurraSingBaneOfJedi.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class AurraSingBaneOfJedi extends CardImpl {
+public final class AurraSingBaneOfJedi extends CardImpl {
public AurraSingBaneOfJedi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AuspiciousAncestor.java b/Mage.Sets/src/mage/cards/a/AuspiciousAncestor.java
index 818fa99615f..2fd69ee0ec9 100644
--- a/Mage.Sets/src/mage/cards/a/AuspiciousAncestor.java
+++ b/Mage.Sets/src/mage/cards/a/AuspiciousAncestor.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class AuspiciousAncestor extends CardImpl {
+public final class AuspiciousAncestor extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a white spell");
diff --git a/Mage.Sets/src/mage/cards/a/AustereCommand.java b/Mage.Sets/src/mage/cards/a/AustereCommand.java
index 04c3c30970b..2b0d20b7250 100644
--- a/Mage.Sets/src/mage/cards/a/AustereCommand.java
+++ b/Mage.Sets/src/mage/cards/a/AustereCommand.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
*
* @author LevelX2
*/
-public class AustereCommand extends CardImpl {
+public final class AustereCommand extends CardImpl {
private static final FilterCreaturePermanent filter3orLess = new FilterCreaturePermanent("creatures with converted mana cost 3 or less");
private static final FilterCreaturePermanent filter4orMore = new FilterCreaturePermanent("creatures with converted mana cost 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/a/AuthorityOfTheConsuls.java b/Mage.Sets/src/mage/cards/a/AuthorityOfTheConsuls.java
index 826f11b0138..2abede202aa 100644
--- a/Mage.Sets/src/mage/cards/a/AuthorityOfTheConsuls.java
+++ b/Mage.Sets/src/mage/cards/a/AuthorityOfTheConsuls.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class AuthorityOfTheConsuls extends CardImpl {
+public final class AuthorityOfTheConsuls extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature");
diff --git a/Mage.Sets/src/mage/cards/a/AutochthonWurm.java b/Mage.Sets/src/mage/cards/a/AutochthonWurm.java
index b06da5ab5d3..50656b61d75 100644
--- a/Mage.Sets/src/mage/cards/a/AutochthonWurm.java
+++ b/Mage.Sets/src/mage/cards/a/AutochthonWurm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AutochthonWurm extends CardImpl {
+public final class AutochthonWurm extends CardImpl {
public AutochthonWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{10}{G}{G}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AutumnWillow.java b/Mage.Sets/src/mage/cards/a/AutumnWillow.java
index 7ccb1202e4a..65f54f2a7fd 100644
--- a/Mage.Sets/src/mage/cards/a/AutumnWillow.java
+++ b/Mage.Sets/src/mage/cards/a/AutumnWillow.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author L_J
*/
-public class AutumnWillow extends CardImpl {
+public final class AutumnWillow extends CardImpl {
public AutumnWillow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AutumnalGloom.java b/Mage.Sets/src/mage/cards/a/AutumnalGloom.java
index 5f1706be552..4dda2f2b09f 100644
--- a/Mage.Sets/src/mage/cards/a/AutumnalGloom.java
+++ b/Mage.Sets/src/mage/cards/a/AutumnalGloom.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class AutumnalGloom extends CardImpl {
+public final class AutumnalGloom extends CardImpl {
public AutumnalGloom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AutumnsVeil.java b/Mage.Sets/src/mage/cards/a/AutumnsVeil.java
index a07d13633ed..df71b134b11 100644
--- a/Mage.Sets/src/mage/cards/a/AutumnsVeil.java
+++ b/Mage.Sets/src/mage/cards/a/AutumnsVeil.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AutumnsVeil extends CardImpl {
+public final class AutumnsVeil extends CardImpl {
private static final FilterSpell filterTarget1 = new FilterSpell("spells you control");
private static final FilterControlledCreaturePermanent filterTarget2 = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/a/AvacynAngelOfHope.java b/Mage.Sets/src/mage/cards/a/AvacynAngelOfHope.java
index 3382db70975..7d842ff654b 100644
--- a/Mage.Sets/src/mage/cards/a/AvacynAngelOfHope.java
+++ b/Mage.Sets/src/mage/cards/a/AvacynAngelOfHope.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledPermanent;
/**
* @author noxx
*/
-public class AvacynAngelOfHope extends CardImpl {
+public final class AvacynAngelOfHope extends CardImpl {
public AvacynAngelOfHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvacynGuardianAngel.java b/Mage.Sets/src/mage/cards/a/AvacynGuardianAngel.java
index 5ac6231748d..194cd7ea2bb 100644
--- a/Mage.Sets/src/mage/cards/a/AvacynGuardianAngel.java
+++ b/Mage.Sets/src/mage/cards/a/AvacynGuardianAngel.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class AvacynGuardianAngel extends CardImpl {
+public final class AvacynGuardianAngel extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/a/AvacynThePurifier.java b/Mage.Sets/src/mage/cards/a/AvacynThePurifier.java
index 3fd6ca80734..c1bb74cb67d 100644
--- a/Mage.Sets/src/mage/cards/a/AvacynThePurifier.java
+++ b/Mage.Sets/src/mage/cards/a/AvacynThePurifier.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class AvacynThePurifier extends CardImpl {
+public final class AvacynThePurifier extends CardImpl {
public AvacynThePurifier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/a/AvacynianMissionaries.java b/Mage.Sets/src/mage/cards/a/AvacynianMissionaries.java
index 4e99d878949..2e1e1fd956e 100644
--- a/Mage.Sets/src/mage/cards/a/AvacynianMissionaries.java
+++ b/Mage.Sets/src/mage/cards/a/AvacynianMissionaries.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class AvacynianMissionaries extends CardImpl {
+public final class AvacynianMissionaries extends CardImpl {
public AvacynianMissionaries(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvacynianPriest.java b/Mage.Sets/src/mage/cards/a/AvacynianPriest.java
index ae145f638de..00a2369e6c6 100644
--- a/Mage.Sets/src/mage/cards/a/AvacynianPriest.java
+++ b/Mage.Sets/src/mage/cards/a/AvacynianPriest.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author nantuko
*/
-public class AvacynianPriest extends CardImpl {
+public final class AvacynianPriest extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Human creature");
diff --git a/Mage.Sets/src/mage/cards/a/AvacynsCollar.java b/Mage.Sets/src/mage/cards/a/AvacynsCollar.java
index f5618d5ca3f..abb2cfeb36e 100644
--- a/Mage.Sets/src/mage/cards/a/AvacynsCollar.java
+++ b/Mage.Sets/src/mage/cards/a/AvacynsCollar.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author North
*/
-public class AvacynsCollar extends CardImpl {
+public final class AvacynsCollar extends CardImpl {
public AvacynsCollar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/a/AvacynsJudgment.java b/Mage.Sets/src/mage/cards/a/AvacynsJudgment.java
index e89b5593815..a406d7e09b3 100644
--- a/Mage.Sets/src/mage/cards/a/AvacynsJudgment.java
+++ b/Mage.Sets/src/mage/cards/a/AvacynsJudgment.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author LevelX2
*/
-public class AvacynsJudgment extends CardImpl {
+public final class AvacynsJudgment extends CardImpl {
public AvacynsJudgment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AvacynsPilgrim.java b/Mage.Sets/src/mage/cards/a/AvacynsPilgrim.java
index 954f561b0a6..e25056f15f2 100644
--- a/Mage.Sets/src/mage/cards/a/AvacynsPilgrim.java
+++ b/Mage.Sets/src/mage/cards/a/AvacynsPilgrim.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author nantuko
*/
-public class AvacynsPilgrim extends CardImpl {
+public final class AvacynsPilgrim extends CardImpl {
public AvacynsPilgrim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/a/Avalanche.java b/Mage.Sets/src/mage/cards/a/Avalanche.java
index d89cc837bf9..20002b42c9c 100644
--- a/Mage.Sets/src/mage/cards/a/Avalanche.java
+++ b/Mage.Sets/src/mage/cards/a/Avalanche.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class Avalanche extends CardImpl {
+public final class Avalanche extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("snow lands");
diff --git a/Mage.Sets/src/mage/cards/a/AvalancheRiders.java b/Mage.Sets/src/mage/cards/a/AvalancheRiders.java
index 354f7651dc4..01f2984d1ad 100644
--- a/Mage.Sets/src/mage/cards/a/AvalancheRiders.java
+++ b/Mage.Sets/src/mage/cards/a/AvalancheRiders.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Backfir3
*/
-public class AvalancheRiders extends CardImpl {
+public final class AvalancheRiders extends CardImpl {
public AvalancheRiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AvalancheTusker.java b/Mage.Sets/src/mage/cards/a/AvalancheTusker.java
index d62e2514b33..b8e15bc9eff 100644
--- a/Mage.Sets/src/mage/cards/a/AvalancheTusker.java
+++ b/Mage.Sets/src/mage/cards/a/AvalancheTusker.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AvalancheTusker extends CardImpl {
+public final class AvalancheTusker extends CardImpl {
public AvalancheTusker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/Avarax.java b/Mage.Sets/src/mage/cards/a/Avarax.java
index 26e8ca0a073..7abda8f8c6f 100644
--- a/Mage.Sets/src/mage/cards/a/Avarax.java
+++ b/Mage.Sets/src/mage/cards/a/Avarax.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class Avarax extends CardImpl {
+public final class Avarax extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Avarax");
diff --git a/Mage.Sets/src/mage/cards/a/AvariceAmulet.java b/Mage.Sets/src/mage/cards/a/AvariceAmulet.java
index 117e1cd8b84..75fb158162a 100644
--- a/Mage.Sets/src/mage/cards/a/AvariceAmulet.java
+++ b/Mage.Sets/src/mage/cards/a/AvariceAmulet.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author emerald000
*/
-public class AvariceAmulet extends CardImpl {
+public final class AvariceAmulet extends CardImpl {
public AvariceAmulet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/a/AvariceTotem.java b/Mage.Sets/src/mage/cards/a/AvariceTotem.java
index d37036930d6..3cfdcdf4d04 100644
--- a/Mage.Sets/src/mage/cards/a/AvariceTotem.java
+++ b/Mage.Sets/src/mage/cards/a/AvariceTotem.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author Plopman
*/
-public class AvariceTotem extends CardImpl {
+public final class AvariceTotem extends CardImpl {
private static final String rule = "Exchange control of {this} and target nonland permanent";
public AvariceTotem(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/a/AvariciousDragon.java b/Mage.Sets/src/mage/cards/a/AvariciousDragon.java
index 7c13bdccb24..cc84bc870d3 100644
--- a/Mage.Sets/src/mage/cards/a/AvariciousDragon.java
+++ b/Mage.Sets/src/mage/cards/a/AvariciousDragon.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class AvariciousDragon extends CardImpl {
+public final class AvariciousDragon extends CardImpl {
public AvariciousDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfDiscord.java b/Mage.Sets/src/mage/cards/a/AvatarOfDiscord.java
index 92997e2ab4b..e0b0636f410 100644
--- a/Mage.Sets/src/mage/cards/a/AvatarOfDiscord.java
+++ b/Mage.Sets/src/mage/cards/a/AvatarOfDiscord.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Plopman
*/
-public class AvatarOfDiscord extends CardImpl {
+public final class AvatarOfDiscord extends CardImpl {
public AvatarOfDiscord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B/R}{B/R}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfFury.java b/Mage.Sets/src/mage/cards/a/AvatarOfFury.java
index 35560ebbe58..c7c64b90309 100644
--- a/Mage.Sets/src/mage/cards/a/AvatarOfFury.java
+++ b/Mage.Sets/src/mage/cards/a/AvatarOfFury.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class AvatarOfFury extends CardImpl {
+public final class AvatarOfFury extends CardImpl {
public AvatarOfFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfHope.java b/Mage.Sets/src/mage/cards/a/AvatarOfHope.java
index 385ce84e086..8eb302d3871 100644
--- a/Mage.Sets/src/mage/cards/a/AvatarOfHope.java
+++ b/Mage.Sets/src/mage/cards/a/AvatarOfHope.java
@@ -48,7 +48,7 @@ import mage.util.CardUtil;
*
* @author Plopman
*/
-public class AvatarOfHope extends CardImpl {
+public final class AvatarOfHope extends CardImpl {
public AvatarOfHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfMight.java b/Mage.Sets/src/mage/cards/a/AvatarOfMight.java
index 2d5448602d7..c6ea3d6bc1e 100644
--- a/Mage.Sets/src/mage/cards/a/AvatarOfMight.java
+++ b/Mage.Sets/src/mage/cards/a/AvatarOfMight.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AvatarOfMight extends CardImpl {
+public final class AvatarOfMight extends CardImpl {
public AvatarOfMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfSlaughter.java b/Mage.Sets/src/mage/cards/a/AvatarOfSlaughter.java
index 58c4f675ec7..23a57317d3d 100644
--- a/Mage.Sets/src/mage/cards/a/AvatarOfSlaughter.java
+++ b/Mage.Sets/src/mage/cards/a/AvatarOfSlaughter.java
@@ -48,7 +48,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author fireshoes
*/
-public class AvatarOfSlaughter extends CardImpl {
+public final class AvatarOfSlaughter extends CardImpl {
public AvatarOfSlaughter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfTheResolute.java b/Mage.Sets/src/mage/cards/a/AvatarOfTheResolute.java
index f4bee4a0a43..3513ce56354 100644
--- a/Mage.Sets/src/mage/cards/a/AvatarOfTheResolute.java
+++ b/Mage.Sets/src/mage/cards/a/AvatarOfTheResolute.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author jeffwadsworth
*/
-public class AvatarOfTheResolute extends CardImpl {
+public final class AvatarOfTheResolute extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other creature you control with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfWill.java b/Mage.Sets/src/mage/cards/a/AvatarOfWill.java
index 04d35881df3..ae082965980 100644
--- a/Mage.Sets/src/mage/cards/a/AvatarOfWill.java
+++ b/Mage.Sets/src/mage/cards/a/AvatarOfWill.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AvatarOfWill extends CardImpl {
+public final class AvatarOfWill extends CardImpl {
public AvatarOfWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfWoe.java b/Mage.Sets/src/mage/cards/a/AvatarOfWoe.java
index 9d37ec94ee5..514293d7928 100644
--- a/Mage.Sets/src/mage/cards/a/AvatarOfWoe.java
+++ b/Mage.Sets/src/mage/cards/a/AvatarOfWoe.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class AvatarOfWoe extends CardImpl {
+public final class AvatarOfWoe extends CardImpl {
public AvatarOfWoe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenArcher.java b/Mage.Sets/src/mage/cards/a/AvenArcher.java
index 30291c331e3..fbc65b04cbf 100644
--- a/Mage.Sets/src/mage/cards/a/AvenArcher.java
+++ b/Mage.Sets/src/mage/cards/a/AvenArcher.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author cbt33
*/
-public class AvenArcher extends CardImpl {
+public final class AvenArcher extends CardImpl {
public AvenArcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenAugur.java b/Mage.Sets/src/mage/cards/a/AvenAugur.java
index 08f641ac2e6..84870e7db44 100644
--- a/Mage.Sets/src/mage/cards/a/AvenAugur.java
+++ b/Mage.Sets/src/mage/cards/a/AvenAugur.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class AvenAugur extends CardImpl {
+public final class AvenAugur extends CardImpl {
public AvenAugur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenBattlePriest.java b/Mage.Sets/src/mage/cards/a/AvenBattlePriest.java
index 82818da0fbc..de8cc10a5de 100644
--- a/Mage.Sets/src/mage/cards/a/AvenBattlePriest.java
+++ b/Mage.Sets/src/mage/cards/a/AvenBattlePriest.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Wehk
*/
-public class AvenBattlePriest extends CardImpl {
+public final class AvenBattlePriest extends CardImpl {
public AvenBattlePriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenBrigadier.java b/Mage.Sets/src/mage/cards/a/AvenBrigadier.java
index e70f7438271..ee1d2dd2997 100644
--- a/Mage.Sets/src/mage/cards/a/AvenBrigadier.java
+++ b/Mage.Sets/src/mage/cards/a/AvenBrigadier.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class AvenBrigadier extends CardImpl {
+public final class AvenBrigadier extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Bird creatures");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Soldier creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AvenCloudchaser.java b/Mage.Sets/src/mage/cards/a/AvenCloudchaser.java
index 3ff05995f4e..57e26c766d4 100644
--- a/Mage.Sets/src/mage/cards/a/AvenCloudchaser.java
+++ b/Mage.Sets/src/mage/cards/a/AvenCloudchaser.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Loki
*/
-public class AvenCloudchaser extends CardImpl {
+public final class AvenCloudchaser extends CardImpl {
public AvenCloudchaser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenEnvoy.java b/Mage.Sets/src/mage/cards/a/AvenEnvoy.java
index 393f6deea57..2e3e1f3b889 100644
--- a/Mage.Sets/src/mage/cards/a/AvenEnvoy.java
+++ b/Mage.Sets/src/mage/cards/a/AvenEnvoy.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AvenEnvoy extends CardImpl {
+public final class AvenEnvoy extends CardImpl {
public AvenEnvoy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenFarseer.java b/Mage.Sets/src/mage/cards/a/AvenFarseer.java
index 64c3a8d2ae3..b680e267011 100644
--- a/Mage.Sets/src/mage/cards/a/AvenFarseer.java
+++ b/Mage.Sets/src/mage/cards/a/AvenFarseer.java
@@ -43,7 +43,7 @@ import mage.filter.FilterPermanent;
*
* @author LoneFox
*/
-public class AvenFarseer extends CardImpl {
+public final class AvenFarseer extends CardImpl {
public AvenFarseer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenFateshaper.java b/Mage.Sets/src/mage/cards/a/AvenFateshaper.java
index 1e72f841aec..1c0e62a939f 100644
--- a/Mage.Sets/src/mage/cards/a/AvenFateshaper.java
+++ b/Mage.Sets/src/mage/cards/a/AvenFateshaper.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class AvenFateshaper extends CardImpl {
+public final class AvenFateshaper extends CardImpl {
public AvenFateshaper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenFisher.java b/Mage.Sets/src/mage/cards/a/AvenFisher.java
index 6485ff07bd5..04f3bb8168e 100644
--- a/Mage.Sets/src/mage/cards/a/AvenFisher.java
+++ b/Mage.Sets/src/mage/cards/a/AvenFisher.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class AvenFisher extends CardImpl {
+public final class AvenFisher extends CardImpl {
public AvenFisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenFleetwing.java b/Mage.Sets/src/mage/cards/a/AvenFleetwing.java
index 33735195401..035c52e0fb3 100644
--- a/Mage.Sets/src/mage/cards/a/AvenFleetwing.java
+++ b/Mage.Sets/src/mage/cards/a/AvenFleetwing.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class AvenFleetwing extends CardImpl {
+public final class AvenFleetwing extends CardImpl {
public AvenFleetwing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenFlock.java b/Mage.Sets/src/mage/cards/a/AvenFlock.java
index dd60c93696d..a77bf7caa45 100644
--- a/Mage.Sets/src/mage/cards/a/AvenFlock.java
+++ b/Mage.Sets/src/mage/cards/a/AvenFlock.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class AvenFlock extends CardImpl {
+public final class AvenFlock extends CardImpl {
public AvenFlock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenFogbringer.java b/Mage.Sets/src/mage/cards/a/AvenFogbringer.java
index bc4fb6e0bfd..ee75b032b80 100644
--- a/Mage.Sets/src/mage/cards/a/AvenFogbringer.java
+++ b/Mage.Sets/src/mage/cards/a/AvenFogbringer.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class AvenFogbringer extends CardImpl {
+public final class AvenFogbringer extends CardImpl {
public AvenFogbringer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenInitiate.java b/Mage.Sets/src/mage/cards/a/AvenInitiate.java
index f53a87206a3..bf8f5ea20f9 100644
--- a/Mage.Sets/src/mage/cards/a/AvenInitiate.java
+++ b/Mage.Sets/src/mage/cards/a/AvenInitiate.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AvenInitiate extends CardImpl {
+public final class AvenInitiate extends CardImpl {
public AvenInitiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenLiberator.java b/Mage.Sets/src/mage/cards/a/AvenLiberator.java
index e30516985a2..f864a00f23f 100644
--- a/Mage.Sets/src/mage/cards/a/AvenLiberator.java
+++ b/Mage.Sets/src/mage/cards/a/AvenLiberator.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class AvenLiberator extends CardImpl {
+public final class AvenLiberator extends CardImpl {
public AvenLiberator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenMimeomancer.java b/Mage.Sets/src/mage/cards/a/AvenMimeomancer.java
index 3d3a0aa370d..80b9885bd14 100644
--- a/Mage.Sets/src/mage/cards/a/AvenMimeomancer.java
+++ b/Mage.Sets/src/mage/cards/a/AvenMimeomancer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class AvenMimeomancer extends CardImpl {
+public final class AvenMimeomancer extends CardImpl {
public AvenMimeomancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenMindcensor.java b/Mage.Sets/src/mage/cards/a/AvenMindcensor.java
index a604e92a220..8ec52e8e27c 100644
--- a/Mage.Sets/src/mage/cards/a/AvenMindcensor.java
+++ b/Mage.Sets/src/mage/cards/a/AvenMindcensor.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AvenMindcensor extends CardImpl {
+public final class AvenMindcensor extends CardImpl {
public AvenMindcensor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenOfEnduringHope.java b/Mage.Sets/src/mage/cards/a/AvenOfEnduringHope.java
index 202be951f36..af5dad757fa 100644
--- a/Mage.Sets/src/mage/cards/a/AvenOfEnduringHope.java
+++ b/Mage.Sets/src/mage/cards/a/AvenOfEnduringHope.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Archer262
*/
-public class AvenOfEnduringHope extends CardImpl {
+public final class AvenOfEnduringHope extends CardImpl {
public AvenOfEnduringHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenRedeemer.java b/Mage.Sets/src/mage/cards/a/AvenRedeemer.java
index a21f18c4bb2..295bd63a236 100644
--- a/Mage.Sets/src/mage/cards/a/AvenRedeemer.java
+++ b/Mage.Sets/src/mage/cards/a/AvenRedeemer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class AvenRedeemer extends CardImpl {
+public final class AvenRedeemer extends CardImpl {
public AvenRedeemer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenReedstalker.java b/Mage.Sets/src/mage/cards/a/AvenReedstalker.java
index 549d62bb164..840f2e6f480 100644
--- a/Mage.Sets/src/mage/cards/a/AvenReedstalker.java
+++ b/Mage.Sets/src/mage/cards/a/AvenReedstalker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class AvenReedstalker extends CardImpl {
+public final class AvenReedstalker extends CardImpl {
public AvenReedstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenRiftwatcher.java b/Mage.Sets/src/mage/cards/a/AvenRiftwatcher.java
index 9ba53d7c8f0..692a5634431 100644
--- a/Mage.Sets/src/mage/cards/a/AvenRiftwatcher.java
+++ b/Mage.Sets/src/mage/cards/a/AvenRiftwatcher.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author dustinconrad
*/
-public class AvenRiftwatcher extends CardImpl {
+public final class AvenRiftwatcher extends CardImpl {
public AvenRiftwatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenSentry.java b/Mage.Sets/src/mage/cards/a/AvenSentry.java
index 63fc4a02c07..f996cdcfb58 100644
--- a/Mage.Sets/src/mage/cards/a/AvenSentry.java
+++ b/Mage.Sets/src/mage/cards/a/AvenSentry.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author tcontis
*/
-public class AvenSentry extends CardImpl {
+public final class AvenSentry extends CardImpl {
public AvenSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenShrine.java b/Mage.Sets/src/mage/cards/a/AvenShrine.java
index ec84ba437e7..7df2381c3dc 100644
--- a/Mage.Sets/src/mage/cards/a/AvenShrine.java
+++ b/Mage.Sets/src/mage/cards/a/AvenShrine.java
@@ -1,144 +1,144 @@
-/*
- * 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.MageObject;
-import mage.abilities.Ability;
-import mage.abilities.TriggeredAbilityImpl;
-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.FilterCard;
-import mage.filter.predicate.mageobject.NamePredicate;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
-import mage.game.stack.Spell;
-import mage.players.Player;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class AvenShrine extends CardImpl {
-
- public AvenShrine(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{W}");
-
- // Whenever a player casts a spell, that player gains X life, where X is the number of cards in all graveyards with the same name as that spell.
- this.addAbility(new AvenShrineTriggeredAbility());
-
- }
-
- public AvenShrine(final AvenShrine card) {
- super(card);
- }
-
- @Override
- public AvenShrine copy() {
- return new AvenShrine(this);
- }
-}
-
-class AvenShrineTriggeredAbility extends TriggeredAbilityImpl {
-
- public AvenShrineTriggeredAbility() {
- super(Zone.BATTLEFIELD, new AvenShrineEffect(), false);
- }
-
- public AvenShrineTriggeredAbility(final AvenShrineTriggeredAbility ability) {
- super(ability);
- }
-
- @Override
- public AvenShrineTriggeredAbility copy() {
- return new AvenShrineTriggeredAbility(this);
- }
-
- @Override
- public boolean checkEventType(GameEvent event, Game game) {
- return event.getType() == EventType.SPELL_CAST;
- }
-
- @Override
- public boolean checkTrigger(GameEvent event, Game game) {
- Spell spell = game.getStack().getSpell(event.getTargetId());
- MageObject mageObject = game.getObject(sourceId);
- if (spell != null) {
- game.getState().setValue("avenShrine" + mageObject, spell);
- return true;
- }
- return false;
- }
-
-}
-
-class AvenShrineEffect extends OneShotEffect {
-
- public AvenShrineEffect() {
- super(Outcome.GainLife);
- staticText = "Whenever a player casts a spell, that player gains X life, where X is the number of cards in all graveyards with the same name as that spell";
- }
-
- public AvenShrineEffect(final AvenShrineEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- int count = 0;
- MageObject mageObject = game.getObject(source.getSourceId());
- Spell spell = (Spell) game.getState().getValue("avenShrine" + mageObject);
- if (spell != null) {
- Player controller = game.getPlayer(spell.getControllerId());
- if (controller != null) {
- String name = spell.getName();
- FilterCard filterCardName = new FilterCard();
- filterCardName.add(new NamePredicate(name));
- for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- count += player.getGraveyard().count(filterCardName, game);
- }
- }
- controller.gainLife(count, game, source);
- return true;
- }
- }
- return false;
- }
-
- @Override
- public AvenShrineEffect copy() {
- return new AvenShrineEffect(this);
- }
-}
+/*
+ * 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.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.TriggeredAbilityImpl;
+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.FilterCard;
+import mage.filter.predicate.mageobject.NamePredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+import mage.game.stack.Spell;
+import mage.players.Player;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class AvenShrine extends CardImpl {
+
+ public AvenShrine(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{W}");
+
+ // Whenever a player casts a spell, that player gains X life, where X is the number of cards in all graveyards with the same name as that spell.
+ this.addAbility(new AvenShrineTriggeredAbility());
+
+ }
+
+ public AvenShrine(final AvenShrine card) {
+ super(card);
+ }
+
+ @Override
+ public AvenShrine copy() {
+ return new AvenShrine(this);
+ }
+}
+
+class AvenShrineTriggeredAbility extends TriggeredAbilityImpl {
+
+ public AvenShrineTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new AvenShrineEffect(), false);
+ }
+
+ public AvenShrineTriggeredAbility(final AvenShrineTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public AvenShrineTriggeredAbility copy() {
+ return new AvenShrineTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.SPELL_CAST;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ Spell spell = game.getStack().getSpell(event.getTargetId());
+ MageObject mageObject = game.getObject(sourceId);
+ if (spell != null) {
+ game.getState().setValue("avenShrine" + mageObject, spell);
+ return true;
+ }
+ return false;
+ }
+
+}
+
+class AvenShrineEffect extends OneShotEffect {
+
+ public AvenShrineEffect() {
+ super(Outcome.GainLife);
+ staticText = "Whenever a player casts a spell, that player gains X life, where X is the number of cards in all graveyards with the same name as that spell";
+ }
+
+ public AvenShrineEffect(final AvenShrineEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ int count = 0;
+ MageObject mageObject = game.getObject(source.getSourceId());
+ Spell spell = (Spell) game.getState().getValue("avenShrine" + mageObject);
+ if (spell != null) {
+ Player controller = game.getPlayer(spell.getControllerId());
+ if (controller != null) {
+ String name = spell.getName();
+ FilterCard filterCardName = new FilterCard();
+ filterCardName.add(new NamePredicate(name));
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ count += player.getGraveyard().count(filterCardName, game);
+ }
+ }
+ controller.gainLife(count, game, source);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public AvenShrineEffect copy() {
+ return new AvenShrineEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/a/AvenSkirmisher.java b/Mage.Sets/src/mage/cards/a/AvenSkirmisher.java
index 82d33de9e63..48db52082c8 100644
--- a/Mage.Sets/src/mage/cards/a/AvenSkirmisher.java
+++ b/Mage.Sets/src/mage/cards/a/AvenSkirmisher.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AvenSkirmisher extends CardImpl {
+public final class AvenSkirmisher extends CardImpl {
public AvenSkirmisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenSmokeweaver.java b/Mage.Sets/src/mage/cards/a/AvenSmokeweaver.java
index 37629c3bc63..f7b61366235 100644
--- a/Mage.Sets/src/mage/cards/a/AvenSmokeweaver.java
+++ b/Mage.Sets/src/mage/cards/a/AvenSmokeweaver.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author cbt33
*/
-public class AvenSmokeweaver extends CardImpl {
+public final class AvenSmokeweaver extends CardImpl {
public AvenSmokeweaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenSoulgazer.java b/Mage.Sets/src/mage/cards/a/AvenSoulgazer.java
index e1ac74a4f69..0a60f463f5a 100644
--- a/Mage.Sets/src/mage/cards/a/AvenSoulgazer.java
+++ b/Mage.Sets/src/mage/cards/a/AvenSoulgazer.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class AvenSoulgazer extends CardImpl {
+public final class AvenSoulgazer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face down creature");
diff --git a/Mage.Sets/src/mage/cards/a/AvenSquire.java b/Mage.Sets/src/mage/cards/a/AvenSquire.java
index 0c68ff444aa..18947b6cd6b 100644
--- a/Mage.Sets/src/mage/cards/a/AvenSquire.java
+++ b/Mage.Sets/src/mage/cards/a/AvenSquire.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class AvenSquire extends CardImpl {
+public final class AvenSquire extends CardImpl {
public AvenSquire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenSunstriker.java b/Mage.Sets/src/mage/cards/a/AvenSunstriker.java
index 653780dc96b..1d736bbd24c 100644
--- a/Mage.Sets/src/mage/cards/a/AvenSunstriker.java
+++ b/Mage.Sets/src/mage/cards/a/AvenSunstriker.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class AvenSunstriker extends CardImpl {
+public final class AvenSunstriker extends CardImpl {
public AvenSunstriker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenSurveyor.java b/Mage.Sets/src/mage/cards/a/AvenSurveyor.java
index ca681dec854..48ea87ee92c 100644
--- a/Mage.Sets/src/mage/cards/a/AvenSurveyor.java
+++ b/Mage.Sets/src/mage/cards/a/AvenSurveyor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class AvenSurveyor extends CardImpl {
+public final class AvenSurveyor extends CardImpl {
public AvenSurveyor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenTactician.java b/Mage.Sets/src/mage/cards/a/AvenTactician.java
index b3ca1d46292..ee90eec0cc1 100644
--- a/Mage.Sets/src/mage/cards/a/AvenTactician.java
+++ b/Mage.Sets/src/mage/cards/a/AvenTactician.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class AvenTactician extends CardImpl {
+public final class AvenTactician extends CardImpl {
public AvenTactician(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenTrailblazer.java b/Mage.Sets/src/mage/cards/a/AvenTrailblazer.java
index cfdd39cb17f..f7fea27bf8a 100644
--- a/Mage.Sets/src/mage/cards/a/AvenTrailblazer.java
+++ b/Mage.Sets/src/mage/cards/a/AvenTrailblazer.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class AvenTrailblazer extends CardImpl {
+public final class AvenTrailblazer extends CardImpl {
public AvenTrailblazer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenTrooper.java b/Mage.Sets/src/mage/cards/a/AvenTrooper.java
index 0864806139d..73e3c8535e8 100644
--- a/Mage.Sets/src/mage/cards/a/AvenTrooper.java
+++ b/Mage.Sets/src/mage/cards/a/AvenTrooper.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class AvenTrooper extends CardImpl {
+public final class AvenTrooper extends CardImpl {
public AvenTrooper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenWarcraft.java b/Mage.Sets/src/mage/cards/a/AvenWarcraft.java
index 1cc4c5f933e..96ca10afe23 100644
--- a/Mage.Sets/src/mage/cards/a/AvenWarcraft.java
+++ b/Mage.Sets/src/mage/cards/a/AvenWarcraft.java
@@ -45,7 +45,7 @@ import mage.game.Game;
*
* @author TheElk801
*/
-public class AvenWarcraft extends CardImpl {
+public final class AvenWarcraft extends CardImpl {
public AvenWarcraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenWarhawk.java b/Mage.Sets/src/mage/cards/a/AvenWarhawk.java
index c1978afb441..b4b0d2e163f 100644
--- a/Mage.Sets/src/mage/cards/a/AvenWarhawk.java
+++ b/Mage.Sets/src/mage/cards/a/AvenWarhawk.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class AvenWarhawk extends CardImpl {
+public final class AvenWarhawk extends CardImpl {
public AvenWarhawk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenWindGuide.java b/Mage.Sets/src/mage/cards/a/AvenWindGuide.java
index 38520cb899f..bc02c7a8a33 100644
--- a/Mage.Sets/src/mage/cards/a/AvenWindGuide.java
+++ b/Mage.Sets/src/mage/cards/a/AvenWindGuide.java
@@ -49,7 +49,7 @@ import mage.filter.StaticFilters;
*
* @author stravant
*/
-public class AvenWindGuide extends CardImpl {
+public final class AvenWindGuide extends CardImpl {
public AvenWindGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvenWindreader.java b/Mage.Sets/src/mage/cards/a/AvenWindreader.java
index 094ae180185..19bb3301a3d 100644
--- a/Mage.Sets/src/mage/cards/a/AvenWindreader.java
+++ b/Mage.Sets/src/mage/cards/a/AvenWindreader.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author cbt33
*/
-public class AvenWindreader extends CardImpl {
+public final class AvenWindreader extends CardImpl {
public AvenWindreader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvengerEnDal.java b/Mage.Sets/src/mage/cards/a/AvengerEnDal.java
index 356d18b8539..763f114fec8 100644
--- a/Mage.Sets/src/mage/cards/a/AvengerEnDal.java
+++ b/Mage.Sets/src/mage/cards/a/AvengerEnDal.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author fireshoes
*/
-public class AvengerEnDal extends CardImpl {
+public final class AvengerEnDal extends CardImpl {
public AvengerEnDal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvengerOfZendikar.java b/Mage.Sets/src/mage/cards/a/AvengerOfZendikar.java
index ef6e900a5d6..714f8e15d74 100644
--- a/Mage.Sets/src/mage/cards/a/AvengerOfZendikar.java
+++ b/Mage.Sets/src/mage/cards/a/AvengerOfZendikar.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.PlantToken;
*
* @author Loki, nantuko, North
*/
-public class AvengerOfZendikar extends CardImpl {
+public final class AvengerOfZendikar extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("Plant creature you control");
private static final FilterControlledPermanent filterLand = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/a/AvengingAngel.java b/Mage.Sets/src/mage/cards/a/AvengingAngel.java
index 8807853fcda..0e5481cbe03 100644
--- a/Mage.Sets/src/mage/cards/a/AvengingAngel.java
+++ b/Mage.Sets/src/mage/cards/a/AvengingAngel.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class AvengingAngel extends CardImpl {
+public final class AvengingAngel extends CardImpl {
public AvengingAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvengingArrow.java b/Mage.Sets/src/mage/cards/a/AvengingArrow.java
index 90c5c0522c6..5800f28d4f4 100644
--- a/Mage.Sets/src/mage/cards/a/AvengingArrow.java
+++ b/Mage.Sets/src/mage/cards/a/AvengingArrow.java
@@ -45,7 +45,7 @@ import mage.watchers.common.SourceDidDamageWatcher;
*
* @author jeffwadsworth
*/
-public class AvengingArrow extends CardImpl {
+public final class AvengingArrow extends CardImpl {
public AvengingArrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AvengingDruid.java b/Mage.Sets/src/mage/cards/a/AvengingDruid.java
index 7531779657f..cd23a3a45ea 100644
--- a/Mage.Sets/src/mage/cards/a/AvengingDruid.java
+++ b/Mage.Sets/src/mage/cards/a/AvengingDruid.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterLandCard;
*
* @author Styxo
*/
-public class AvengingDruid extends CardImpl {
+public final class AvengingDruid extends CardImpl {
public AvengingDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AvianChangeling.java b/Mage.Sets/src/mage/cards/a/AvianChangeling.java
index 1d1c52ed893..202cf42dcd1 100644
--- a/Mage.Sets/src/mage/cards/a/AvianChangeling.java
+++ b/Mage.Sets/src/mage/cards/a/AvianChangeling.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class AvianChangeling extends CardImpl {
+public final class AvianChangeling extends CardImpl {
public AvianChangeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AviaryMechanic.java b/Mage.Sets/src/mage/cards/a/AviaryMechanic.java
index dcc5ed5634c..cadf946c77f 100644
--- a/Mage.Sets/src/mage/cards/a/AviaryMechanic.java
+++ b/Mage.Sets/src/mage/cards/a/AviaryMechanic.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class AviaryMechanic extends CardImpl {
+public final class AviaryMechanic extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another permanent you control");
diff --git a/Mage.Sets/src/mage/cards/a/AvidReclaimer.java b/Mage.Sets/src/mage/cards/a/AvidReclaimer.java
index 82684cda8c5..065a889e5c5 100644
--- a/Mage.Sets/src/mage/cards/a/AvidReclaimer.java
+++ b/Mage.Sets/src/mage/cards/a/AvidReclaimer.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author spjspj
*/
-public class AvidReclaimer extends CardImpl {
+public final class AvidReclaimer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/a/Avizoa.java b/Mage.Sets/src/mage/cards/a/Avizoa.java
index 709d317c68a..3f0d8c59615 100644
--- a/Mage.Sets/src/mage/cards/a/Avizoa.java
+++ b/Mage.Sets/src/mage/cards/a/Avizoa.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class Avizoa extends CardImpl {
+public final class Avizoa extends CardImpl {
public Avizoa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AvoidFate.java b/Mage.Sets/src/mage/cards/a/AvoidFate.java
index 21c02c3ff97..8e91c050375 100644
--- a/Mage.Sets/src/mage/cards/a/AvoidFate.java
+++ b/Mage.Sets/src/mage/cards/a/AvoidFate.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LoneFox
*/
-public class AvoidFate extends CardImpl {
+public final class AvoidFate extends CardImpl {
private final static FilterSpell filter = new FilterSpell("instant or Aura spell that targets a permanent you control");
diff --git a/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java b/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java
index 1dc0f1b8184..266a1cad306 100644
--- a/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java
+++ b/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class AwakenTheAncient extends CardImpl {
+public final class AwakenTheAncient extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.MOUNTAIN, "Mountain");
diff --git a/Mage.Sets/src/mage/cards/a/AwakenTheBear.java b/Mage.Sets/src/mage/cards/a/AwakenTheBear.java
index 67c8b342b50..0615e60e2d8 100644
--- a/Mage.Sets/src/mage/cards/a/AwakenTheBear.java
+++ b/Mage.Sets/src/mage/cards/a/AwakenTheBear.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AwakenTheBear extends CardImpl {
+public final class AwakenTheBear extends CardImpl {
public AwakenTheBear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AwakenTheSkyTyrant.java b/Mage.Sets/src/mage/cards/a/AwakenTheSkyTyrant.java
index 0e8f639eab7..e1a200cb155 100644
--- a/Mage.Sets/src/mage/cards/a/AwakenTheSkyTyrant.java
+++ b/Mage.Sets/src/mage/cards/a/AwakenTheSkyTyrant.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.DragonToken2;
*
* @author LevelX2
*/
-public class AwakenTheSkyTyrant extends CardImpl {
+public final class AwakenTheSkyTyrant extends CardImpl {
public AwakenTheSkyTyrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AwakenedAmalgam.java b/Mage.Sets/src/mage/cards/a/AwakenedAmalgam.java
index 80da89ac90b..064dd0305fc 100644
--- a/Mage.Sets/src/mage/cards/a/AwakenedAmalgam.java
+++ b/Mage.Sets/src/mage/cards/a/AwakenedAmalgam.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class AwakenedAmalgam extends CardImpl {
+public final class AwakenedAmalgam extends CardImpl {
public AwakenedAmalgam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/a/AwakenerDruid.java b/Mage.Sets/src/mage/cards/a/AwakenerDruid.java
index 6db18cff04d..81ea73e7018 100644
--- a/Mage.Sets/src/mage/cards/a/AwakenerDruid.java
+++ b/Mage.Sets/src/mage/cards/a/AwakenerDruid.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AwakenerDruid extends CardImpl {
+public final class AwakenerDruid extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.FOREST, "Forest");
diff --git a/Mage.Sets/src/mage/cards/a/Awakening.java b/Mage.Sets/src/mage/cards/a/Awakening.java
index a8fe2e19386..f2ab2f4fb68 100644
--- a/Mage.Sets/src/mage/cards/a/Awakening.java
+++ b/Mage.Sets/src/mage/cards/a/Awakening.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class Awakening extends CardImpl {
+public final class Awakening extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creatures and lands");
diff --git a/Mage.Sets/src/mage/cards/a/AwakeningZone.java b/Mage.Sets/src/mage/cards/a/AwakeningZone.java
index 47d0cc2bc56..a01c397ff28 100644
--- a/Mage.Sets/src/mage/cards/a/AwakeningZone.java
+++ b/Mage.Sets/src/mage/cards/a/AwakeningZone.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.EldraziSpawnToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AwakeningZone extends CardImpl {
+public final class AwakeningZone extends CardImpl {
public AwakeningZone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AweForTheGuilds.java b/Mage.Sets/src/mage/cards/a/AweForTheGuilds.java
index 689252d483a..e8a3a45caac 100644
--- a/Mage.Sets/src/mage/cards/a/AweForTheGuilds.java
+++ b/Mage.Sets/src/mage/cards/a/AweForTheGuilds.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*/
-public class AweForTheGuilds extends CardImpl {
+public final class AweForTheGuilds extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Monocolored creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AweStrike.java b/Mage.Sets/src/mage/cards/a/AweStrike.java
index 8632b250d69..8b3723aafcc 100755
--- a/Mage.Sets/src/mage/cards/a/AweStrike.java
+++ b/Mage.Sets/src/mage/cards/a/AweStrike.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author brikr
*/
-public class AweStrike extends CardImpl {
+public final class AweStrike extends CardImpl {
public AweStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AwokenHorror.java b/Mage.Sets/src/mage/cards/a/AwokenHorror.java
index 3a3d5177758..896cd25646c 100644
--- a/Mage.Sets/src/mage/cards/a/AwokenHorror.java
+++ b/Mage.Sets/src/mage/cards/a/AwokenHorror.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class AwokenHorror extends CardImpl {
+public final class AwokenHorror extends CardImpl {
public AwokenHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/a/AxebaneGuardian.java b/Mage.Sets/src/mage/cards/a/AxebaneGuardian.java
index 32e9028ca58..c5fdafed251 100644
--- a/Mage.Sets/src/mage/cards/a/AxebaneGuardian.java
+++ b/Mage.Sets/src/mage/cards/a/AxebaneGuardian.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author Plopman
*/
-public class AxebaneGuardian extends CardImpl {
+public final class AxebaneGuardian extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("creatures with defender you control");
diff --git a/Mage.Sets/src/mage/cards/a/AxebaneStag.java b/Mage.Sets/src/mage/cards/a/AxebaneStag.java
index 63daf316302..047a3440442 100644
--- a/Mage.Sets/src/mage/cards/a/AxebaneStag.java
+++ b/Mage.Sets/src/mage/cards/a/AxebaneStag.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AxebaneStag extends CardImpl {
+public final class AxebaneStag extends CardImpl {
public AxebaneStag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/a/AxegrinderGiant.java b/Mage.Sets/src/mage/cards/a/AxegrinderGiant.java
index ad2bc36eeda..9a85c317102 100644
--- a/Mage.Sets/src/mage/cards/a/AxegrinderGiant.java
+++ b/Mage.Sets/src/mage/cards/a/AxegrinderGiant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class AxegrinderGiant extends CardImpl {
+public final class AxegrinderGiant extends CardImpl {
public AxegrinderGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AxelrodGunnarson.java b/Mage.Sets/src/mage/cards/a/AxelrodGunnarson.java
index c3896743113..5d69f31d331 100644
--- a/Mage.Sets/src/mage/cards/a/AxelrodGunnarson.java
+++ b/Mage.Sets/src/mage/cards/a/AxelrodGunnarson.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author TheElk801
*/
-public class AxelrodGunnarson extends CardImpl {
+public final class AxelrodGunnarson extends CardImpl {
public AxelrodGunnarson(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/a/AxisOfMortality.java b/Mage.Sets/src/mage/cards/a/AxisOfMortality.java
index 44e5f51871d..37a4b78db66 100644
--- a/Mage.Sets/src/mage/cards/a/AxisOfMortality.java
+++ b/Mage.Sets/src/mage/cards/a/AxisOfMortality.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class AxisOfMortality extends CardImpl {
+public final class AxisOfMortality extends CardImpl {
public AxisOfMortality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AyeshaTanaka.java b/Mage.Sets/src/mage/cards/a/AyeshaTanaka.java
index f6e44e52830..d4427eb9c9c 100644
--- a/Mage.Sets/src/mage/cards/a/AyeshaTanaka.java
+++ b/Mage.Sets/src/mage/cards/a/AyeshaTanaka.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetActivatedAbility;
*
* @author L_J
*/
-public class AyeshaTanaka extends CardImpl {
+public final class AyeshaTanaka extends CardImpl {
private final static FilterAbility filter = new FilterAbility("activated ability from an artifact source");
diff --git a/Mage.Sets/src/mage/cards/a/AyliEternalPilgrim.java b/Mage.Sets/src/mage/cards/a/AyliEternalPilgrim.java
index 97299ca5f69..3a50c32435b 100644
--- a/Mage.Sets/src/mage/cards/a/AyliEternalPilgrim.java
+++ b/Mage.Sets/src/mage/cards/a/AyliEternalPilgrim.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author fireshoes
*/
-public class AyliEternalPilgrim extends CardImpl {
+public final class AyliEternalPilgrim extends CardImpl {
public AyliEternalPilgrim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AysenAbbey.java b/Mage.Sets/src/mage/cards/a/AysenAbbey.java
index 69335df213c..8ed9f995852 100644
--- a/Mage.Sets/src/mage/cards/a/AysenAbbey.java
+++ b/Mage.Sets/src/mage/cards/a/AysenAbbey.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class AysenAbbey extends CardImpl {
+public final class AysenAbbey extends CardImpl {
public AysenAbbey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/AysenBureaucrats.java b/Mage.Sets/src/mage/cards/a/AysenBureaucrats.java
index d3f231d84c2..6836c70da1c 100644
--- a/Mage.Sets/src/mage/cards/a/AysenBureaucrats.java
+++ b/Mage.Sets/src/mage/cards/a/AysenBureaucrats.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class AysenBureaucrats extends CardImpl {
+public final class AysenBureaucrats extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AysenCrusader.java b/Mage.Sets/src/mage/cards/a/AysenCrusader.java
index 85530f88329..3704c6ad5b8 100644
--- a/Mage.Sets/src/mage/cards/a/AysenCrusader.java
+++ b/Mage.Sets/src/mage/cards/a/AysenCrusader.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class AysenCrusader extends CardImpl {
+public final class AysenCrusader extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldiers and Warriors you control");
diff --git a/Mage.Sets/src/mage/cards/a/AysenHighway.java b/Mage.Sets/src/mage/cards/a/AysenHighway.java
index bed31930db1..645fc80dced 100644
--- a/Mage.Sets/src/mage/cards/a/AysenHighway.java
+++ b/Mage.Sets/src/mage/cards/a/AysenHighway.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class AysenHighway extends CardImpl {
+public final class AysenHighway extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures");
diff --git a/Mage.Sets/src/mage/cards/a/AyumiTheLastVisitor.java b/Mage.Sets/src/mage/cards/a/AyumiTheLastVisitor.java
index 6d3b2ea2daa..0e65c74757b 100644
--- a/Mage.Sets/src/mage/cards/a/AyumiTheLastVisitor.java
+++ b/Mage.Sets/src/mage/cards/a/AyumiTheLastVisitor.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author LevelX2
*/
-public class AyumiTheLastVisitor extends CardImpl {
+public final class AyumiTheLastVisitor extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Legendary land");
static {
diff --git a/Mage.Sets/src/mage/cards/a/AzamiLadyOfScrolls.java b/Mage.Sets/src/mage/cards/a/AzamiLadyOfScrolls.java
index 20c7c97962c..8fcdb68f10e 100644
--- a/Mage.Sets/src/mage/cards/a/AzamiLadyOfScrolls.java
+++ b/Mage.Sets/src/mage/cards/a/AzamiLadyOfScrolls.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class AzamiLadyOfScrolls extends CardImpl {
+public final class AzamiLadyOfScrolls extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Wizard you control");
diff --git a/Mage.Sets/src/mage/cards/a/AzcantaTheSunkenRuin.java b/Mage.Sets/src/mage/cards/a/AzcantaTheSunkenRuin.java
index 07bf73bf34e..e92ed9d65b1 100644
--- a/Mage.Sets/src/mage/cards/a/AzcantaTheSunkenRuin.java
+++ b/Mage.Sets/src/mage/cards/a/AzcantaTheSunkenRuin.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class AzcantaTheSunkenRuin extends CardImpl {
+public final class AzcantaTheSunkenRuin extends CardImpl {
private static final FilterCard filter = new FilterCard("noncreature, nonland card");
diff --git a/Mage.Sets/src/mage/cards/a/AzimaetDrake.java b/Mage.Sets/src/mage/cards/a/AzimaetDrake.java
index ef6cb9857d7..ac5a5165d0a 100644
--- a/Mage.Sets/src/mage/cards/a/AzimaetDrake.java
+++ b/Mage.Sets/src/mage/cards/a/AzimaetDrake.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author nigelzor
*/
-public class AzimaetDrake extends CardImpl {
+public final class AzimaetDrake extends CardImpl {
public AzimaetDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AzorTheLawbringer.java b/Mage.Sets/src/mage/cards/a/AzorTheLawbringer.java
index 078f627b4b1..312f137f791 100644
--- a/Mage.Sets/src/mage/cards/a/AzorTheLawbringer.java
+++ b/Mage.Sets/src/mage/cards/a/AzorTheLawbringer.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2 & L_J
*/
-public class AzorTheLawbringer extends CardImpl {
+public final class AzorTheLawbringer extends CardImpl {
public AzorTheLawbringer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusAEthermage.java b/Mage.Sets/src/mage/cards/a/AzoriusAEthermage.java
index 61be2614cf0..fcf2faf520f 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusAEthermage.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusAEthermage.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class AzoriusAEthermage extends CardImpl {
+public final class AzoriusAEthermage extends CardImpl {
private static final String rule = "Whenever a permanent is returned to your hand, ";
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusArrester.java b/Mage.Sets/src/mage/cards/a/AzoriusArrester.java
index e9fa2e5634f..4dae4ca32a1 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusArrester.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusArrester.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AzoriusArrester extends CardImpl {
+public final class AzoriusArrester extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusChancery.java b/Mage.Sets/src/mage/cards/a/AzoriusChancery.java
index 43b9aa4118e..d6f4a2d38c3 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusChancery.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusChancery.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Loki
*/
-public class AzoriusChancery extends CardImpl {
+public final class AzoriusChancery extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusCharm.java b/Mage.Sets/src/mage/cards/a/AzoriusCharm.java
index 86f2a5e6728..965a009adb5 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusCharm.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusCharm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author LevelX2
*/
-public class AzoriusCharm extends CardImpl {
+public final class AzoriusCharm extends CardImpl {
public AzoriusCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusCluestone.java b/Mage.Sets/src/mage/cards/a/AzoriusCluestone.java
index 3189649910f..ddd06bf8766 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusCluestone.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusCluestone.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*/
-public class AzoriusCluestone extends CardImpl {
+public final class AzoriusCluestone extends CardImpl {
public AzoriusCluestone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusFirstWing.java b/Mage.Sets/src/mage/cards/a/AzoriusFirstWing.java
index aa7c7096f3a..6b1da60e3aa 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusFirstWing.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusFirstWing.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterEnchantmentCard;
* @author LoneFox
*/
-public class AzoriusFirstWing extends CardImpl {
+public final class AzoriusFirstWing extends CardImpl {
public AzoriusFirstWing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusGuildgate.java b/Mage.Sets/src/mage/cards/a/AzoriusGuildgate.java
index 7973dec044c..fcd88105f8e 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusGuildgate.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusGuildgate.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author LevelX2
*/
-public class AzoriusGuildgate extends CardImpl {
+public final class AzoriusGuildgate extends CardImpl {
public AzoriusGuildgate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusGuildmage.java b/Mage.Sets/src/mage/cards/a/AzoriusGuildmage.java
index 2298117e63c..eef12912ef9 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusGuildmage.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusGuildmage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class AzoriusGuildmage extends CardImpl {
+public final class AzoriusGuildmage extends CardImpl {
public AzoriusGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W/U}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusHerald.java b/Mage.Sets/src/mage/cards/a/AzoriusHerald.java
index 59084d64fa2..b4254c34158 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusHerald.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusHerald.java
@@ -45,7 +45,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author LevelX2
*/
-public class AzoriusHerald extends CardImpl {
+public final class AzoriusHerald extends CardImpl {
public AzoriusHerald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusJusticiar.java b/Mage.Sets/src/mage/cards/a/AzoriusJusticiar.java
index df37d72f60e..9b519ca0930 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusJusticiar.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusJusticiar.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class AzoriusJusticiar extends CardImpl {
+public final class AzoriusJusticiar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusKeyrune.java b/Mage.Sets/src/mage/cards/a/AzoriusKeyrune.java
index 6338b5cf6ca..fc8f8af608b 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusKeyrune.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusKeyrune.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author LevelX2
*/
-public class AzoriusKeyrune extends CardImpl {
+public final class AzoriusKeyrune extends CardImpl {
public AzoriusKeyrune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/a/AzoriusSignet.java b/Mage.Sets/src/mage/cards/a/AzoriusSignet.java
index b4c1dcc3610..60a504c7e8f 100644
--- a/Mage.Sets/src/mage/cards/a/AzoriusSignet.java
+++ b/Mage.Sets/src/mage/cards/a/AzoriusSignet.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jonubuu
*/
-public class AzoriusSignet extends CardImpl {
+public final class AzoriusSignet extends CardImpl {
public AzoriusSignet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AzorsElocutors.java b/Mage.Sets/src/mage/cards/a/AzorsElocutors.java
index 90103594a03..53df01e123b 100644
--- a/Mage.Sets/src/mage/cards/a/AzorsElocutors.java
+++ b/Mage.Sets/src/mage/cards/a/AzorsElocutors.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class AzorsElocutors extends CardImpl {
+public final class AzorsElocutors extends CardImpl {
public AzorsElocutors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W/U}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/a/AzorsGateway.java b/Mage.Sets/src/mage/cards/a/AzorsGateway.java
index f3655938a80..56055b6dbc7 100644
--- a/Mage.Sets/src/mage/cards/a/AzorsGateway.java
+++ b/Mage.Sets/src/mage/cards/a/AzorsGateway.java
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class AzorsGateway extends CardImpl {
+public final class AzorsGateway extends CardImpl {
public AzorsGateway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/a/AzraBladeseeker.java b/Mage.Sets/src/mage/cards/a/AzraBladeseeker.java
new file mode 100644
index 00000000000..681448e6c1d
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/a/AzraBladeseeker.java
@@ -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.a;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.Target;
+import mage.target.common.TargetDiscard;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class AzraBladeseeker extends CardImpl {
+
+ public AzraBladeseeker(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
+
+ this.subtype.add(SubType.AZRA);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(2);
+
+ // When Azra Bladeseeker enters the battlefield, each player on your team may discard a card, then each player who discarded a card this way draws a card.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new AzraBladeseekerEffect(), false));
+ }
+
+ public AzraBladeseeker(final AzraBladeseeker card) {
+ super(card);
+ }
+
+ @Override
+ public AzraBladeseeker copy() {
+ return new AzraBladeseeker(this);
+ }
+}
+
+class AzraBladeseekerEffect extends OneShotEffect {
+
+ AzraBladeseekerEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "each player on your team may discard a card, then each player who discarded a card this way draws a card";
+ }
+
+ AzraBladeseekerEffect(final AzraBladeseekerEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public AzraBladeseekerEffect copy() {
+ return new AzraBladeseekerEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ List playerCardList = new ArrayList<>();
+ for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
+ Player player = game.getPlayer(playerId);
+ if (player == null
+ || player.hasOpponent(source.getControllerId(), game)
+ || player.getHand().isEmpty()
+ || !player.chooseUse(Outcome.DrawCard, "Discard a card?", source, game)) {
+ continue;
+ }
+ Target target = new TargetDiscard(playerId);
+ if (target.choose(Outcome.DrawCard, playerId, source.getSourceId(), game)) {
+ Card card = game.getCard(target.getFirstTarget());
+ if (card != null) {
+ playerCardList.add(new PlayerCard(player, card));
+ }
+ }
+ }
+ for (PlayerCard playerCard : playerCardList) {
+ if (playerCard.getPlayer().discard(playerCard.getCard(), source, game)) {
+ playerCard.getPlayer().drawCards(1, game);
+ }
+ }
+ return true;
+ }
+
+ class PlayerCard {
+
+ private final Player player;
+ private final Card card;
+
+ private PlayerCard(Player player, Card card) {
+ this.player = player;
+ this.card = card;
+ }
+
+ public Player getPlayer() {
+ return player;
+ }
+
+ public Card getCard() {
+ return card;
+ }
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/a/AzraOddsmaker.java b/Mage.Sets/src/mage/cards/a/AzraOddsmaker.java
new file mode 100644
index 00000000000..13fa92530aa
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/a/AzraOddsmaker.java
@@ -0,0 +1,167 @@
+/*
+ * 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.MageObjectReference;
+import mage.abilities.Ability;
+import mage.abilities.DelayedTriggeredAbility;
+import mage.abilities.common.BeginningOfCombatTriggeredAbility;
+import mage.abilities.costs.Cost;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.TargetController;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.MageObjectReferencePredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class AzraOddsmaker extends CardImpl {
+
+ public AzraOddsmaker(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}");
+
+ this.subtype.add(SubType.AZRA);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // At the beginning of combat on your turn, you may discard a card. If you do, choose a creature. Whenever that creature deals combat damage to a player this turn, you draw two cards.
+ this.addAbility(new BeginningOfCombatTriggeredAbility(new AzraOddsmakerEffect(), TargetController.YOU, true));
+ }
+
+ public AzraOddsmaker(final AzraOddsmaker card) {
+ super(card);
+ }
+
+ @Override
+ public AzraOddsmaker copy() {
+ return new AzraOddsmaker(this);
+ }
+}
+
+class AzraOddsmakerEffect extends OneShotEffect {
+
+ AzraOddsmakerEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "discard a card. If you do, choose a creature. Whenever that creature deals combat damage to a player this turn, you draw two cards";
+ }
+
+ AzraOddsmakerEffect(final AzraOddsmakerEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public AzraOddsmakerEffect copy() {
+ return new AzraOddsmakerEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getControllerId());
+ if (player == null) {
+ return false;
+ }
+ Cost cost = new DiscardCardCost();
+ Permanent permanent = null;
+ if (cost.canPay(source, source.getSourceId(), source.getControllerId(), game)
+ && cost.pay(source, game, source.getSourceId(), source.getControllerId(), true)) {
+ TargetCreaturePermanent target = new TargetCreaturePermanent();
+ target.setNotTarget(true);
+ if (player.choose(Outcome.DrawCard, target, source.getSourceId(), game)) {
+ permanent = game.getPermanent(target.getFirstTarget());
+ }
+ }
+ if (permanent == null) {
+ return false;
+ }
+ FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ filter.add(new MageObjectReferencePredicate(new MageObjectReference(permanent, game)));
+ game.addDelayedTriggeredAbility(new AzraOddsmakerDelayedTriggeredAbility(filter, permanent.getName()), source);
+ return true;
+ }
+}
+
+class AzraOddsmakerDelayedTriggeredAbility extends DelayedTriggeredAbility {
+
+ private final FilterCreaturePermanent filter;
+ private final String creatureName;
+
+ AzraOddsmakerDelayedTriggeredAbility(FilterCreaturePermanent filter, String creatureName) {
+ super(new DrawCardSourceControllerEffect(2), Duration.EndOfTurn, false);
+ this.filter = filter;
+ this.creatureName = creatureName;
+ }
+
+ AzraOddsmakerDelayedTriggeredAbility(final AzraOddsmakerDelayedTriggeredAbility ability) {
+ super(ability);
+ this.filter = ability.filter;
+ this.creatureName = ability.creatureName;
+ }
+
+ @Override
+ public AzraOddsmakerDelayedTriggeredAbility copy() {
+ return new AzraOddsmakerDelayedTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.DAMAGED_PLAYER;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ if (event.getFlag()) {
+ Permanent permanent = game.getPermanent(event.getSourceId());
+ if (permanent != null && filter.match(permanent, game)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever " + creatureName + " deals damage to a player this turn, you draw two cards";
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/a/AzureDrake.java b/Mage.Sets/src/mage/cards/a/AzureDrake.java
index 82770d4bc4d..5f34d940a4c 100644
--- a/Mage.Sets/src/mage/cards/a/AzureDrake.java
+++ b/Mage.Sets/src/mage/cards/a/AzureDrake.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AzureDrake extends CardImpl {
+public final class AzureDrake extends CardImpl {
public AzureDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AzureMage.java b/Mage.Sets/src/mage/cards/a/AzureMage.java
index 500ffd0483b..2af4a4a7aee 100644
--- a/Mage.Sets/src/mage/cards/a/AzureMage.java
+++ b/Mage.Sets/src/mage/cards/a/AzureMage.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class AzureMage extends CardImpl {
+public final class AzureMage extends CardImpl {
public AzureMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/a/AzusaLostButSeeking.java b/Mage.Sets/src/mage/cards/a/AzusaLostButSeeking.java
index ddfe3e297e9..76adf578359 100644
--- a/Mage.Sets/src/mage/cards/a/AzusaLostButSeeking.java
+++ b/Mage.Sets/src/mage/cards/a/AzusaLostButSeeking.java
@@ -40,7 +40,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class AzusaLostButSeeking extends CardImpl {
+public final class AzusaLostButSeeking extends CardImpl {
public AzusaLostButSeeking (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BackFromTheBrink.java b/Mage.Sets/src/mage/cards/b/BackFromTheBrink.java
index b887c7b5a27..e1d516bf7cc 100644
--- a/Mage.Sets/src/mage/cards/b/BackFromTheBrink.java
+++ b/Mage.Sets/src/mage/cards/b/BackFromTheBrink.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author BetaSteward
*/
-public class BackFromTheBrink extends CardImpl {
+public final class BackFromTheBrink extends CardImpl {
public BackFromTheBrink(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BackToBasics.java b/Mage.Sets/src/mage/cards/b/BackToBasics.java
index 462683bc5f6..d61fc140ae5 100644
--- a/Mage.Sets/src/mage/cards/b/BackToBasics.java
+++ b/Mage.Sets/src/mage/cards/b/BackToBasics.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author LevelX2
*/
-public class BackToBasics extends CardImpl {
+public final class BackToBasics extends CardImpl {
public BackToBasics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BackToNature.java b/Mage.Sets/src/mage/cards/b/BackToNature.java
index be765526848..cf32aa2f7ae 100644
--- a/Mage.Sets/src/mage/cards/b/BackToNature.java
+++ b/Mage.Sets/src/mage/cards/b/BackToNature.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterEnchantmentPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BackToNature extends CardImpl {
+public final class BackToNature extends CardImpl {
public BackToNature(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Backfire.java b/Mage.Sets/src/mage/cards/b/Backfire.java
index 2e75e113912..077814f8154 100644
--- a/Mage.Sets/src/mage/cards/b/Backfire.java
+++ b/Mage.Sets/src/mage/cards/b/Backfire.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author HanClinto
*/
-public class Backfire extends CardImpl {
+public final class Backfire extends CardImpl {
public Backfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/b/Backlash.java b/Mage.Sets/src/mage/cards/b/Backlash.java
index b4005509190..88d26cd4f7a 100644
--- a/Mage.Sets/src/mage/cards/b/Backlash.java
+++ b/Mage.Sets/src/mage/cards/b/Backlash.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author michael.napoleon@gmail.com
*/
-public class Backlash extends CardImpl {
+public final class Backlash extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creature");
static {
diff --git a/Mage.Sets/src/mage/cards/b/Backslide.java b/Mage.Sets/src/mage/cards/b/Backslide.java
index deaf789121d..7d468b6222e 100644
--- a/Mage.Sets/src/mage/cards/b/Backslide.java
+++ b/Mage.Sets/src/mage/cards/b/Backslide.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Backslide extends CardImpl {
+public final class Backslide extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with a morph ability");
diff --git a/Mage.Sets/src/mage/cards/b/BackwoodsSurvivalists.java b/Mage.Sets/src/mage/cards/b/BackwoodsSurvivalists.java
index fe4b2e22f0c..be36a0684f9 100644
--- a/Mage.Sets/src/mage/cards/b/BackwoodsSurvivalists.java
+++ b/Mage.Sets/src/mage/cards/b/BackwoodsSurvivalists.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class BackwoodsSurvivalists extends CardImpl {
+public final class BackwoodsSurvivalists extends CardImpl {
public BackwoodsSurvivalists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BadMoon.java b/Mage.Sets/src/mage/cards/b/BadMoon.java
index e23b3c839f5..166a74ce3c3 100644
--- a/Mage.Sets/src/mage/cards/b/BadMoon.java
+++ b/Mage.Sets/src/mage/cards/b/BadMoon.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class BadMoon extends CardImpl {
+public final class BadMoon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Black creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BadRiver.java b/Mage.Sets/src/mage/cards/b/BadRiver.java
index b9809a02d2f..f733f74d686 100644
--- a/Mage.Sets/src/mage/cards/b/BadRiver.java
+++ b/Mage.Sets/src/mage/cards/b/BadRiver.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BadRiver extends CardImpl {
+public final class BadRiver extends CardImpl {
public BadRiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/Badlands.java b/Mage.Sets/src/mage/cards/b/Badlands.java
index b4313866efc..a10e83853c7 100644
--- a/Mage.Sets/src/mage/cards/b/Badlands.java
+++ b/Mage.Sets/src/mage/cards/b/Badlands.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class Badlands extends CardImpl {
+public final class Badlands extends CardImpl {
public Badlands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BafflingEnd.java b/Mage.Sets/src/mage/cards/b/BafflingEnd.java
index 58a2e499bf9..a5d5e812212 100644
--- a/Mage.Sets/src/mage/cards/b/BafflingEnd.java
+++ b/Mage.Sets/src/mage/cards/b/BafflingEnd.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class BafflingEnd extends CardImpl {
+public final class BafflingEnd extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with converted mana cost 3 or less an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/b/BairdStewardOfArgive.java b/Mage.Sets/src/mage/cards/b/BairdStewardOfArgive.java
index 43a00edc3f0..0fbfeaf81e1 100644
--- a/Mage.Sets/src/mage/cards/b/BairdStewardOfArgive.java
+++ b/Mage.Sets/src/mage/cards/b/BairdStewardOfArgive.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
/**
* @author JRHerlehy Created on 4/4/18.
*/
-public class BairdStewardOfArgive extends CardImpl {
+public final class BairdStewardOfArgive extends CardImpl {
public BairdStewardOfArgive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BakisCurse.java b/Mage.Sets/src/mage/cards/b/BakisCurse.java
index d550b757eed..50ec3a14bd7 100644
--- a/Mage.Sets/src/mage/cards/b/BakisCurse.java
+++ b/Mage.Sets/src/mage/cards/b/BakisCurse.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class BakisCurse extends CardImpl {
+public final class BakisCurse extends CardImpl {
public BakisCurse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BakuAltar.java b/Mage.Sets/src/mage/cards/b/BakuAltar.java
index c79c7208604..b536321ab0b 100644
--- a/Mage.Sets/src/mage/cards/b/BakuAltar.java
+++ b/Mage.Sets/src/mage/cards/b/BakuAltar.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.SpiritToken;
*
* @author Loki
*/
-public class BakuAltar extends CardImpl {
+public final class BakuAltar extends CardImpl {
public BakuAltar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/b/BalaGedScorpion.java b/Mage.Sets/src/mage/cards/b/BalaGedScorpion.java
index fb5a5fded61..e6a7cad3e6e 100644
--- a/Mage.Sets/src/mage/cards/b/BalaGedScorpion.java
+++ b/Mage.Sets/src/mage/cards/b/BalaGedScorpion.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BalaGedScorpion extends CardImpl {
+public final class BalaGedScorpion extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 1 or less");
diff --git a/Mage.Sets/src/mage/cards/b/BalaGedThief.java b/Mage.Sets/src/mage/cards/b/BalaGedThief.java
index 06899fd69a4..583de2c789d 100644
--- a/Mage.Sets/src/mage/cards/b/BalaGedThief.java
+++ b/Mage.Sets/src/mage/cards/b/BalaGedThief.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class BalaGedThief extends CardImpl {
+public final class BalaGedThief extends CardImpl {
public BalaGedThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BalanWanderingKnight.java b/Mage.Sets/src/mage/cards/b/BalanWanderingKnight.java
index 72d7390a349..63b2caec734 100644
--- a/Mage.Sets/src/mage/cards/b/BalanWanderingKnight.java
+++ b/Mage.Sets/src/mage/cards/b/BalanWanderingKnight.java
@@ -55,7 +55,7 @@ import mage.game.permanent.Permanent;
*
* @author Saga
*/
-public class BalanWanderingKnight extends CardImpl {
+public final class BalanWanderingKnight extends CardImpl {
private static final String rule = "{this} has double strike as long as two or more Equipment are attached to it.";
diff --git a/Mage.Sets/src/mage/cards/b/Balance.java b/Mage.Sets/src/mage/cards/b/Balance.java
index 8bb7ed6ded1..8f0160d8084 100644
--- a/Mage.Sets/src/mage/cards/b/Balance.java
+++ b/Mage.Sets/src/mage/cards/b/Balance.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class Balance extends CardImpl {
+public final class Balance extends CardImpl {
public Balance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BalanceOfPower.java b/Mage.Sets/src/mage/cards/b/BalanceOfPower.java
index 9a65c6ca631..8192ee2cdbd 100644
--- a/Mage.Sets/src/mage/cards/b/BalanceOfPower.java
+++ b/Mage.Sets/src/mage/cards/b/BalanceOfPower.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetOpponent;
*
* @author North
*/
-public class BalanceOfPower extends CardImpl {
+public final class BalanceOfPower extends CardImpl {
public BalanceOfPower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BalancingAct.java b/Mage.Sets/src/mage/cards/b/BalancingAct.java
index 027f1edb606..f5e1b39fa72 100644
--- a/Mage.Sets/src/mage/cards/b/BalancingAct.java
+++ b/Mage.Sets/src/mage/cards/b/BalancingAct.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman (Restore Balance), cbt33
*/
-public class BalancingAct extends CardImpl {
+public final class BalancingAct extends CardImpl {
public BalancingAct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BalduvianBarbarians.java b/Mage.Sets/src/mage/cards/b/BalduvianBarbarians.java
index 2c34aaddad7..b3d231d4034 100644
--- a/Mage.Sets/src/mage/cards/b/BalduvianBarbarians.java
+++ b/Mage.Sets/src/mage/cards/b/BalduvianBarbarians.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BalduvianBarbarians extends CardImpl {
+public final class BalduvianBarbarians extends CardImpl {
public BalduvianBarbarians(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BalduvianBears.java b/Mage.Sets/src/mage/cards/b/BalduvianBears.java
index 1e07ea6a4ae..59b9edc0752 100644
--- a/Mage.Sets/src/mage/cards/b/BalduvianBears.java
+++ b/Mage.Sets/src/mage/cards/b/BalduvianBears.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BalduvianBears extends CardImpl {
+public final class BalduvianBears extends CardImpl {
public BalduvianBears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BalduvianConjurer.java b/Mage.Sets/src/mage/cards/b/BalduvianConjurer.java
index b2ebf83e5e0..47aa419b3ba 100644
--- a/Mage.Sets/src/mage/cards/b/BalduvianConjurer.java
+++ b/Mage.Sets/src/mage/cards/b/BalduvianConjurer.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class BalduvianConjurer extends CardImpl {
+public final class BalduvianConjurer extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("snow land");
diff --git a/Mage.Sets/src/mage/cards/b/BalduvianDead.java b/Mage.Sets/src/mage/cards/b/BalduvianDead.java
index 123270b32d4..14b929e7707 100644
--- a/Mage.Sets/src/mage/cards/b/BalduvianDead.java
+++ b/Mage.Sets/src/mage/cards/b/BalduvianDead.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class BalduvianDead extends CardImpl {
+public final class BalduvianDead extends CardImpl {
public BalduvianDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BalduvianFrostwaker.java b/Mage.Sets/src/mage/cards/b/BalduvianFrostwaker.java
index 5ea5b3de7ad..802f0d68d02 100644
--- a/Mage.Sets/src/mage/cards/b/BalduvianFrostwaker.java
+++ b/Mage.Sets/src/mage/cards/b/BalduvianFrostwaker.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801 & L_J
*/
-public class BalduvianFrostwaker extends CardImpl {
+public final class BalduvianFrostwaker extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("snow land");
diff --git a/Mage.Sets/src/mage/cards/b/BalduvianHorde.java b/Mage.Sets/src/mage/cards/b/BalduvianHorde.java
index 8d562cfaefa..7a32bd6d0ff 100644
--- a/Mage.Sets/src/mage/cards/b/BalduvianHorde.java
+++ b/Mage.Sets/src/mage/cards/b/BalduvianHorde.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Quercitron
*/
-public class BalduvianHorde extends CardImpl {
+public final class BalduvianHorde extends CardImpl {
public BalduvianHorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BalduvianHydra.java b/Mage.Sets/src/mage/cards/b/BalduvianHydra.java
index 31bde848f58..428caad0e39 100644
--- a/Mage.Sets/src/mage/cards/b/BalduvianHydra.java
+++ b/Mage.Sets/src/mage/cards/b/BalduvianHydra.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class BalduvianHydra extends CardImpl {
+public final class BalduvianHydra extends CardImpl {
public BalduvianHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BalduvianRage.java b/Mage.Sets/src/mage/cards/b/BalduvianRage.java
index c85c54c3b88..c181f42736b 100644
--- a/Mage.Sets/src/mage/cards/b/BalduvianRage.java
+++ b/Mage.Sets/src/mage/cards/b/BalduvianRage.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author duncant
*/
-public class BalduvianRage extends CardImpl {
+public final class BalduvianRage extends CardImpl {
public BalduvianRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BalduvianTradingPost.java b/Mage.Sets/src/mage/cards/b/BalduvianTradingPost.java
index ad86c4ab523..c497125e6c1 100644
--- a/Mage.Sets/src/mage/cards/b/BalduvianTradingPost.java
+++ b/Mage.Sets/src/mage/cards/b/BalduvianTradingPost.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class BalduvianTradingPost extends CardImpl {
+public final class BalduvianTradingPost extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Mountain");
diff --git a/Mage.Sets/src/mage/cards/b/BalduvianWarMakers.java b/Mage.Sets/src/mage/cards/b/BalduvianWarMakers.java
index a8ccfc9005c..c532eec41c2 100644
--- a/Mage.Sets/src/mage/cards/b/BalduvianWarMakers.java
+++ b/Mage.Sets/src/mage/cards/b/BalduvianWarMakers.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class BalduvianWarMakers extends CardImpl {
+public final class BalduvianWarMakers extends CardImpl {
public BalduvianWarMakers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BalduvianWarlord.java b/Mage.Sets/src/mage/cards/b/BalduvianWarlord.java
index e8378805b5f..d04dbc1548f 100644
--- a/Mage.Sets/src/mage/cards/b/BalduvianWarlord.java
+++ b/Mage.Sets/src/mage/cards/b/BalduvianWarlord.java
@@ -62,7 +62,7 @@ import mage.watchers.common.BlockedByOnlyOneCreatureThisCombatWatcher;
*
* @author L_J
*/
-public class BalduvianWarlord extends CardImpl {
+public final class BalduvianWarlord extends CardImpl {
public BalduvianWarlord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
@@ -132,7 +132,7 @@ class BalduvianWarlordUnblockEffect extends OneShotEffect {
// according to the following mail response from MTG Rules Management about False Orders:
// "if Player A attacks Players B and C, Player B's creatures cannot block creatures attacking Player C"
// therefore we need to single out creatures attacking the target blocker's controller (disappointing, I know)
-
+
List list = new ArrayList<>();
for (CombatGroup combatGroup : game.getCombat().getGroups()) {
if (combatGroup.getDefendingPlayerId().equals(permanent.getControllerId())) {
@@ -155,7 +155,7 @@ class BalduvianWarlordUnblockEffect extends OneShotEffect {
return true;
}
Permanent chosenPermanent = game.getPermanent(target.getFirstTarget());
- if (chosenPermanent != null && permanent != null && chosenPermanent.isCreature() && controller != null) {
+ if (chosenPermanent != null && chosenPermanent.isCreature()) {
CombatGroup chosenGroup = game.getCombat().findGroup(chosenPermanent.getId());
if (chosenGroup != null) {
// Relevant ruling for Balduvian Warlord:
diff --git a/Mage.Sets/src/mage/cards/b/BalefireDragon.java b/Mage.Sets/src/mage/cards/b/BalefireDragon.java
index 714d0c4e065..eaf61847e16 100644
--- a/Mage.Sets/src/mage/cards/b/BalefireDragon.java
+++ b/Mage.Sets/src/mage/cards/b/BalefireDragon.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class BalefireDragon extends CardImpl {
+public final class BalefireDragon extends CardImpl {
public BalefireDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BalefireLiege.java b/Mage.Sets/src/mage/cards/b/BalefireLiege.java
index 93832398b00..0680d5d36b3 100644
--- a/Mage.Sets/src/mage/cards/b/BalefireLiege.java
+++ b/Mage.Sets/src/mage/cards/b/BalefireLiege.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
/**
* @author Loki
*/
-public class BalefireLiege extends CardImpl {
+public final class BalefireLiege extends CardImpl {
private static final FilterCreaturePermanent filterRedCreature = new FilterCreaturePermanent("red creatures");
private static final FilterCreaturePermanent filterWhiteCreature = new FilterCreaturePermanent("white creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BalefulAmmit.java b/Mage.Sets/src/mage/cards/b/BalefulAmmit.java
index a11124d9e79..8af774899cd 100644
--- a/Mage.Sets/src/mage/cards/b/BalefulAmmit.java
+++ b/Mage.Sets/src/mage/cards/b/BalefulAmmit.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class BalefulAmmit extends CardImpl {
+public final class BalefulAmmit extends CardImpl {
public BalefulAmmit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BalefulEidolon.java b/Mage.Sets/src/mage/cards/b/BalefulEidolon.java
index b9bf1d8399c..ab4f59b7710 100644
--- a/Mage.Sets/src/mage/cards/b/BalefulEidolon.java
+++ b/Mage.Sets/src/mage/cards/b/BalefulEidolon.java
@@ -43,7 +43,7 @@ import mage.constants.*;
*
* @author LevelX2
*/
-public class BalefulEidolon extends CardImpl {
+public final class BalefulEidolon extends CardImpl {
public BalefulEidolon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BalefulForce.java b/Mage.Sets/src/mage/cards/b/BalefulForce.java
index 5521947a81a..05818f930c2 100644
--- a/Mage.Sets/src/mage/cards/b/BalefulForce.java
+++ b/Mage.Sets/src/mage/cards/b/BalefulForce.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class BalefulForce extends CardImpl {
+public final class BalefulForce extends CardImpl {
public BalefulForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BalefulStare.java b/Mage.Sets/src/mage/cards/b/BalefulStare.java
index 9dccf2b5e18..f2b07a2bc0d 100644
--- a/Mage.Sets/src/mage/cards/b/BalefulStare.java
+++ b/Mage.Sets/src/mage/cards/b/BalefulStare.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
* @author LoneFox
*/
-public class BalefulStare extends CardImpl {
+public final class BalefulStare extends CardImpl {
public BalefulStare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BalefulStrix.java b/Mage.Sets/src/mage/cards/b/BalefulStrix.java
index 6f5578352ac..5d11d20a880 100644
--- a/Mage.Sets/src/mage/cards/b/BalefulStrix.java
+++ b/Mage.Sets/src/mage/cards/b/BalefulStrix.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BalefulStrix extends CardImpl {
+public final class BalefulStrix extends CardImpl {
public BalefulStrix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BallLightning.java b/Mage.Sets/src/mage/cards/b/BallLightning.java
index 70c8de12c0e..5830e2e2bfe 100644
--- a/Mage.Sets/src/mage/cards/b/BallLightning.java
+++ b/Mage.Sets/src/mage/cards/b/BallLightning.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BallLightning extends CardImpl {
+public final class BallLightning extends CardImpl {
public BallLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BallistaCharger.java b/Mage.Sets/src/mage/cards/b/BallistaCharger.java
index afa1fbecc38..e766239f463 100644
--- a/Mage.Sets/src/mage/cards/b/BallistaCharger.java
+++ b/Mage.Sets/src/mage/cards/b/BallistaCharger.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author spjspj
*/
-public class BallistaCharger extends CardImpl {
+public final class BallistaCharger extends CardImpl {
public BallistaCharger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/b/BallistaSquad.java b/Mage.Sets/src/mage/cards/b/BallistaSquad.java
index b4ca267c568..dd86f556808 100644
--- a/Mage.Sets/src/mage/cards/b/BallistaSquad.java
+++ b/Mage.Sets/src/mage/cards/b/BallistaSquad.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author Backfir3
*/
-public class BallistaSquad extends CardImpl {
+public final class BallistaSquad extends CardImpl {
public BallistaSquad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BalloonPeddler.java b/Mage.Sets/src/mage/cards/b/BalloonPeddler.java
index 32665dc8fc2..0cb42d1bdd4 100644
--- a/Mage.Sets/src/mage/cards/b/BalloonPeddler.java
+++ b/Mage.Sets/src/mage/cards/b/BalloonPeddler.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class BalloonPeddler extends CardImpl {
+public final class BalloonPeddler extends CardImpl {
public BalloonPeddler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BallynockCohort.java b/Mage.Sets/src/mage/cards/b/BallynockCohort.java
index f8472cd363b..1bf1ec85ba0 100644
--- a/Mage.Sets/src/mage/cards/b/BallynockCohort.java
+++ b/Mage.Sets/src/mage/cards/b/BallynockCohort.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class BallynockCohort extends CardImpl {
+public final class BallynockCohort extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/b/BallynockTrapper.java b/Mage.Sets/src/mage/cards/b/BallynockTrapper.java
index 4188761879c..2d1bb5cf4ca 100644
--- a/Mage.Sets/src/mage/cards/b/BallynockTrapper.java
+++ b/Mage.Sets/src/mage/cards/b/BallynockTrapper.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class BallynockTrapper extends CardImpl {
+public final class BallynockTrapper extends CardImpl {
private static final FilterSpell filterWhiteSpell = new FilterSpell("a white spell");
diff --git a/Mage.Sets/src/mage/cards/b/BallyrushBanneret.java b/Mage.Sets/src/mage/cards/b/BallyrushBanneret.java
index 6781324b988..512815a0dc2 100644
--- a/Mage.Sets/src/mage/cards/b/BallyrushBanneret.java
+++ b/Mage.Sets/src/mage/cards/b/BallyrushBanneret.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class BallyrushBanneret extends CardImpl {
+public final class BallyrushBanneret extends CardImpl {
private static final FilterCard filter = new FilterCard("Kithkin spells and Soldier spells");
diff --git a/Mage.Sets/src/mage/cards/b/BalmOfRestoration.java b/Mage.Sets/src/mage/cards/b/BalmOfRestoration.java
index efc6acf5976..13ba20e63c6 100644
--- a/Mage.Sets/src/mage/cards/b/BalmOfRestoration.java
+++ b/Mage.Sets/src/mage/cards/b/BalmOfRestoration.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class BalmOfRestoration extends CardImpl {
+public final class BalmOfRestoration extends CardImpl {
public BalmOfRestoration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/b/BalothCageTrap.java b/Mage.Sets/src/mage/cards/b/BalothCageTrap.java
index 3277f69e2ac..8ec11f038e5 100644
--- a/Mage.Sets/src/mage/cards/b/BalothCageTrap.java
+++ b/Mage.Sets/src/mage/cards/b/BalothCageTrap.java
@@ -47,7 +47,7 @@ import java.util.UUID;
/**
* @author jeffwadsworth
*/
-public class BalothCageTrap extends CardImpl {
+public final class BalothCageTrap extends CardImpl {
public BalothCageTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BalothGorger.java b/Mage.Sets/src/mage/cards/b/BalothGorger.java
index 436c6bf94e3..cee8cdc6b39 100644
--- a/Mage.Sets/src/mage/cards/b/BalothGorger.java
+++ b/Mage.Sets/src/mage/cards/b/BalothGorger.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
/**
* @author CountAndromalius
*/
-public class BalothGorger extends CardImpl {
+public final class BalothGorger extends CardImpl {
public BalothGorger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BalothNull.java b/Mage.Sets/src/mage/cards/b/BalothNull.java
index 70685c53fbd..4ae57f6fcf5 100644
--- a/Mage.Sets/src/mage/cards/b/BalothNull.java
+++ b/Mage.Sets/src/mage/cards/b/BalothNull.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class BalothNull extends CardImpl {
+public final class BalothNull extends CardImpl {
public BalothNull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BalothPup.java b/Mage.Sets/src/mage/cards/b/BalothPup.java
index cf60c0e8111..12c38250e43 100644
--- a/Mage.Sets/src/mage/cards/b/BalothPup.java
+++ b/Mage.Sets/src/mage/cards/b/BalothPup.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class BalothPup extends CardImpl {
+public final class BalothPup extends CardImpl {
private static final String rule = "{this} has trample as long as it has a +1/+1 counter on it";
diff --git a/Mage.Sets/src/mage/cards/b/BalothWoodcrasher.java b/Mage.Sets/src/mage/cards/b/BalothWoodcrasher.java
index 4604371be2f..83b85340c02 100644
--- a/Mage.Sets/src/mage/cards/b/BalothWoodcrasher.java
+++ b/Mage.Sets/src/mage/cards/b/BalothWoodcrasher.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BalothWoodcrasher extends CardImpl {
+public final class BalothWoodcrasher extends CardImpl {
public BalothWoodcrasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BalshanBeguiler.java b/Mage.Sets/src/mage/cards/b/BalshanBeguiler.java
index d80d1f49a4b..2ab9178c87c 100644
--- a/Mage.Sets/src/mage/cards/b/BalshanBeguiler.java
+++ b/Mage.Sets/src/mage/cards/b/BalshanBeguiler.java
@@ -49,7 +49,7 @@ import mage.target.TargetCard;
*
* @author cbt33, noxx (DiscardCardYouChooseTargetOpponentEffect)
*/
-public class BalshanBeguiler extends CardImpl {
+public final class BalshanBeguiler extends CardImpl {
public BalshanBeguiler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BalshanCollaborator.java b/Mage.Sets/src/mage/cards/b/BalshanCollaborator.java
index c8578a4460c..72bc6237d6a 100644
--- a/Mage.Sets/src/mage/cards/b/BalshanCollaborator.java
+++ b/Mage.Sets/src/mage/cards/b/BalshanCollaborator.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class BalshanCollaborator extends CardImpl {
+public final class BalshanCollaborator extends CardImpl {
public BalshanCollaborator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BalshanGriffin.java b/Mage.Sets/src/mage/cards/b/BalshanGriffin.java
index 551dbc40248..55fed6fb668 100644
--- a/Mage.Sets/src/mage/cards/b/BalshanGriffin.java
+++ b/Mage.Sets/src/mage/cards/b/BalshanGriffin.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author cbt33
*/
-public class BalshanGriffin extends CardImpl {
+public final class BalshanGriffin extends CardImpl {
public BalshanGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java b/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java
index 49019ba0ccf..dc07b9e1ec3 100644
--- a/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java
+++ b/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class BalthorTheDefiled extends CardImpl {
+public final class BalthorTheDefiled extends CardImpl {
public BalthorTheDefiled(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BalthorTheStout.java b/Mage.Sets/src/mage/cards/b/BalthorTheStout.java
index 34281a6986b..9878288a7a5 100644
--- a/Mage.Sets/src/mage/cards/b/BalthorTheStout.java
+++ b/Mage.Sets/src/mage/cards/b/BalthorTheStout.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BalthorTheStout extends CardImpl {
+public final class BalthorTheStout extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Barbarian creatures");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another target Barbarian");
diff --git a/Mage.Sets/src/mage/cards/b/BalustradeSpy.java b/Mage.Sets/src/mage/cards/b/BalustradeSpy.java
index c764d93e4af..2003d665b07 100644
--- a/Mage.Sets/src/mage/cards/b/BalustradeSpy.java
+++ b/Mage.Sets/src/mage/cards/b/BalustradeSpy.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class BalustradeSpy extends CardImpl {
+public final class BalustradeSpy extends CardImpl {
public BalustradeSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Bamboozle.java b/Mage.Sets/src/mage/cards/b/Bamboozle.java
index 40580449a71..3bb631b14f2 100644
--- a/Mage.Sets/src/mage/cards/b/Bamboozle.java
+++ b/Mage.Sets/src/mage/cards/b/Bamboozle.java
@@ -1,117 +1,117 @@
-/*
- * 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.Set;
-import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.effects.OneShotEffect;
-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.FilterCard;
-import mage.game.Game;
-import mage.players.Player;
-import mage.target.TargetCard;
-import mage.target.TargetPlayer;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class Bamboozle extends CardImpl {
-
- public Bamboozle(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
-
- // Target player reveals the top four cards of their library. You choose two of those cards and put them into their graveyard. Put the rest on top of their library in any order.
- this.getSpellAbility().addEffect(new BamboozleEffect());
- this.getSpellAbility().addTarget(new TargetPlayer());
-
- }
-
- public Bamboozle(final Bamboozle card) {
- super(card);
- }
-
- @Override
- public Bamboozle copy() {
- return new Bamboozle(this);
- }
-}
-
-class BamboozleEffect extends OneShotEffect {
-
- BamboozleEffect() {
- super(Outcome.Discard);
- staticText = "Target player reveals the top four cards of their library. You choose two of those cards and put them into their graveyard. Put the rest on top of their library in any order";
- }
-
- BamboozleEffect(final BamboozleEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player targetPlayer = game.getPlayer(source.getFirstTarget());
- Player controller = game.getPlayer(source.getControllerId());
- Cards putOnTopLibrary = new CardsImpl();
- Cards putInGraveyard = new CardsImpl();
- if (targetPlayer != null
- && controller != null) {
- Set top4Cards = targetPlayer.getLibrary().getTopCards(game, 4);
- for (Card card : top4Cards) {
- putOnTopLibrary.add(card);
- }
- targetPlayer.revealCards("Bamboozle Reveal", putOnTopLibrary, game);
- TargetCard target = new TargetCard(2, Zone.LIBRARY, new FilterCard("2 cards out of this stack to put into their graveyard"));
- if (controller.choose(Outcome.Discard, putOnTopLibrary, target, game)) {
- for (UUID cardId : target.getTargets()) {
- putInGraveyard.add(game.getCard(cardId));
- putOnTopLibrary.remove(game.getCard(cardId));
- }
- targetPlayer.moveCards(putInGraveyard, Zone.GRAVEYARD, source, game);
- targetPlayer.putCardsOnTopOfLibrary(putOnTopLibrary, game, source, false);
- return true;
- }
-
- }
- return false;
- }
-
- @Override
- public BamboozleEffect copy() {
- return new BamboozleEffect(this);
- }
-
-}
+/*
+ * 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.Set;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+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.FilterCard;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.TargetCard;
+import mage.target.TargetPlayer;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class Bamboozle extends CardImpl {
+
+ public Bamboozle(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
+
+ // Target player reveals the top four cards of their library. You choose two of those cards and put them into their graveyard. Put the rest on top of their library in any order.
+ this.getSpellAbility().addEffect(new BamboozleEffect());
+ this.getSpellAbility().addTarget(new TargetPlayer());
+
+ }
+
+ public Bamboozle(final Bamboozle card) {
+ super(card);
+ }
+
+ @Override
+ public Bamboozle copy() {
+ return new Bamboozle(this);
+ }
+}
+
+class BamboozleEffect extends OneShotEffect {
+
+ BamboozleEffect() {
+ super(Outcome.Discard);
+ staticText = "Target player reveals the top four cards of their library. You choose two of those cards and put them into their graveyard. Put the rest on top of their library in any order";
+ }
+
+ BamboozleEffect(final BamboozleEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player targetPlayer = game.getPlayer(source.getFirstTarget());
+ Player controller = game.getPlayer(source.getControllerId());
+ Cards putOnTopLibrary = new CardsImpl();
+ Cards putInGraveyard = new CardsImpl();
+ if (targetPlayer != null
+ && controller != null) {
+ Set top4Cards = targetPlayer.getLibrary().getTopCards(game, 4);
+ for (Card card : top4Cards) {
+ putOnTopLibrary.add(card);
+ }
+ targetPlayer.revealCards("Bamboozle Reveal", putOnTopLibrary, game);
+ TargetCard target = new TargetCard(2, Zone.LIBRARY, new FilterCard("2 cards out of this stack to put into their graveyard"));
+ if (controller.choose(Outcome.Discard, putOnTopLibrary, target, game)) {
+ for (UUID cardId : target.getTargets()) {
+ putInGraveyard.add(game.getCard(cardId));
+ putOnTopLibrary.remove(game.getCard(cardId));
+ }
+ targetPlayer.moveCards(putInGraveyard, Zone.GRAVEYARD, source, game);
+ targetPlayer.putCardsOnTopOfLibrary(putOnTopLibrary, game, source, false);
+ return true;
+ }
+
+ }
+ return false;
+ }
+
+ @Override
+ public BamboozleEffect copy() {
+ return new BamboozleEffect(this);
+ }
+
+}
diff --git a/Mage.Sets/src/mage/cards/b/Bandage.java b/Mage.Sets/src/mage/cards/b/Bandage.java
index 076517d98d9..487dbd6e0e0 100644
--- a/Mage.Sets/src/mage/cards/b/Bandage.java
+++ b/Mage.Sets/src/mage/cards/b/Bandage.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class Bandage extends CardImpl {
+public final class Bandage extends CardImpl {
public Bandage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BaneAlleyBlackguard.java b/Mage.Sets/src/mage/cards/b/BaneAlleyBlackguard.java
index 89730311559..e22d27863ed 100644
--- a/Mage.Sets/src/mage/cards/b/BaneAlleyBlackguard.java
+++ b/Mage.Sets/src/mage/cards/b/BaneAlleyBlackguard.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*/
-public class BaneAlleyBlackguard extends CardImpl {
+public final class BaneAlleyBlackguard extends CardImpl {
public BaneAlleyBlackguard (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BaneAlleyBroker.java b/Mage.Sets/src/mage/cards/b/BaneAlleyBroker.java
index ae8b10df010..4bf3a5d3a29 100644
--- a/Mage.Sets/src/mage/cards/b/BaneAlleyBroker.java
+++ b/Mage.Sets/src/mage/cards/b/BaneAlleyBroker.java
@@ -84,7 +84,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class BaneAlleyBroker extends CardImpl {
+public final class BaneAlleyBroker extends CardImpl {
public BaneAlleyBroker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BaneOfBalaGed.java b/Mage.Sets/src/mage/cards/b/BaneOfBalaGed.java
index 4e30e9403fa..b2843244c2d 100644
--- a/Mage.Sets/src/mage/cards/b/BaneOfBalaGed.java
+++ b/Mage.Sets/src/mage/cards/b/BaneOfBalaGed.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class BaneOfBalaGed extends CardImpl {
+public final class BaneOfBalaGed extends CardImpl {
public BaneOfBalaGed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/b/BaneOfHanweir.java b/Mage.Sets/src/mage/cards/b/BaneOfHanweir.java
index 0288234dc83..e2ed77f1628 100644
--- a/Mage.Sets/src/mage/cards/b/BaneOfHanweir.java
+++ b/Mage.Sets/src/mage/cards/b/BaneOfHanweir.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class BaneOfHanweir extends CardImpl {
+public final class BaneOfHanweir extends CardImpl {
public BaneOfHanweir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/b/BaneOfProgress.java b/Mage.Sets/src/mage/cards/b/BaneOfProgress.java
index 4fe25cf5c0b..b78dfa46624 100644
--- a/Mage.Sets/src/mage/cards/b/BaneOfProgress.java
+++ b/Mage.Sets/src/mage/cards/b/BaneOfProgress.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class BaneOfProgress extends CardImpl {
+public final class BaneOfProgress extends CardImpl {
public BaneOfProgress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BaneOfTheLiving.java b/Mage.Sets/src/mage/cards/b/BaneOfTheLiving.java
index b2b7745f6bf..a0c94ab0d4d 100644
--- a/Mage.Sets/src/mage/cards/b/BaneOfTheLiving.java
+++ b/Mage.Sets/src/mage/cards/b/BaneOfTheLiving.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class BaneOfTheLiving extends CardImpl {
+public final class BaneOfTheLiving extends CardImpl {
public BaneOfTheLiving(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Banefire.java b/Mage.Sets/src/mage/cards/b/Banefire.java
index ea5010d5a35..41caf886ebe 100644
--- a/Mage.Sets/src/mage/cards/b/Banefire.java
+++ b/Mage.Sets/src/mage/cards/b/Banefire.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Banefire extends CardImpl {
+public final class Banefire extends CardImpl {
public Banefire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BanefulOmen.java b/Mage.Sets/src/mage/cards/b/BanefulOmen.java
index bd5ae176543..a836c8d4ac0 100644
--- a/Mage.Sets/src/mage/cards/b/BanefulOmen.java
+++ b/Mage.Sets/src/mage/cards/b/BanefulOmen.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class BanefulOmen extends CardImpl {
+public final class BanefulOmen extends CardImpl {
public BanefulOmen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BaneslayerAngel.java b/Mage.Sets/src/mage/cards/b/BaneslayerAngel.java
index 637bdd62085..eeca2b21bc7 100644
--- a/Mage.Sets/src/mage/cards/b/BaneslayerAngel.java
+++ b/Mage.Sets/src/mage/cards/b/BaneslayerAngel.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BaneslayerAngel extends CardImpl {
+public final class BaneslayerAngel extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("Demons and from Dragons");
diff --git a/Mage.Sets/src/mage/cards/b/BanewaspAffliction.java b/Mage.Sets/src/mage/cards/b/BanewaspAffliction.java
index ee01c91c87b..1460a694294 100644
--- a/Mage.Sets/src/mage/cards/b/BanewaspAffliction.java
+++ b/Mage.Sets/src/mage/cards/b/BanewaspAffliction.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class BanewaspAffliction extends CardImpl {
+public final class BanewaspAffliction extends CardImpl {
public BanewaspAffliction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BanewhipPunisher.java b/Mage.Sets/src/mage/cards/b/BanewhipPunisher.java
index b685ed3ea49..fcc7ee66d24 100644
--- a/Mage.Sets/src/mage/cards/b/BanewhipPunisher.java
+++ b/Mage.Sets/src/mage/cards/b/BanewhipPunisher.java
@@ -20,7 +20,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
-public class BanewhipPunisher extends CardImpl {
+public final class BanewhipPunisher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with a -1/-1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/b/BanisherPriest.java b/Mage.Sets/src/mage/cards/b/BanisherPriest.java
index 91321f468ef..8683a2af691 100644
--- a/Mage.Sets/src/mage/cards/b/BanisherPriest.java
+++ b/Mage.Sets/src/mage/cards/b/BanisherPriest.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth using LevelX2 tech
*/
-public class BanisherPriest extends CardImpl {
+public final class BanisherPriest extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/b/BanishingKnack.java b/Mage.Sets/src/mage/cards/b/BanishingKnack.java
index e583d547414..41118e054b3 100644
--- a/Mage.Sets/src/mage/cards/b/BanishingKnack.java
+++ b/Mage.Sets/src/mage/cards/b/BanishingKnack.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BanishingKnack extends CardImpl {
+public final class BanishingKnack extends CardImpl {
private static final FilterPermanent filter = new FilterNonlandPermanent();
diff --git a/Mage.Sets/src/mage/cards/b/BanishingLight.java b/Mage.Sets/src/mage/cards/b/BanishingLight.java
index abad2ea7c26..13efb427d26 100644
--- a/Mage.Sets/src/mage/cards/b/BanishingLight.java
+++ b/Mage.Sets/src/mage/cards/b/BanishingLight.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class BanishingLight extends CardImpl {
+public final class BanishingLight extends CardImpl {
private final static FilterNonlandPermanent filter = new FilterNonlandPermanent();
diff --git a/Mage.Sets/src/mage/cards/b/BanishingStroke.java b/Mage.Sets/src/mage/cards/b/BanishingStroke.java
index e96a155da2b..4ad19726a3a 100644
--- a/Mage.Sets/src/mage/cards/b/BanishingStroke.java
+++ b/Mage.Sets/src/mage/cards/b/BanishingStroke.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author noxx
*/
-public class BanishingStroke extends CardImpl {
+public final class BanishingStroke extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or enchantment");
diff --git a/Mage.Sets/src/mage/cards/b/BanishmentDecree.java b/Mage.Sets/src/mage/cards/b/BanishmentDecree.java
index 44262ef5af3..11e7cb913bd 100644
--- a/Mage.Sets/src/mage/cards/b/BanishmentDecree.java
+++ b/Mage.Sets/src/mage/cards/b/BanishmentDecree.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class BanishmentDecree extends CardImpl {
+public final class BanishmentDecree extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or enchantment");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BannersRaised.java b/Mage.Sets/src/mage/cards/b/BannersRaised.java
index c1a8c494b81..625249bcbe1 100644
--- a/Mage.Sets/src/mage/cards/b/BannersRaised.java
+++ b/Mage.Sets/src/mage/cards/b/BannersRaised.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class BannersRaised extends CardImpl {
+public final class BannersRaised extends CardImpl {
public BannersRaised(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Banshee.java b/Mage.Sets/src/mage/cards/b/Banshee.java
index 74e344b9a76..1e4a3519731 100644
--- a/Mage.Sets/src/mage/cards/b/Banshee.java
+++ b/Mage.Sets/src/mage/cards/b/Banshee.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author L_J
*/
-public class Banshee extends CardImpl {
+public final class Banshee extends CardImpl {
public Banshee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BansheeOfTheDreadChoir.java b/Mage.Sets/src/mage/cards/b/BansheeOfTheDreadChoir.java
index a2a5ad7dc15..c8334b33dc7 100644
--- a/Mage.Sets/src/mage/cards/b/BansheeOfTheDreadChoir.java
+++ b/Mage.Sets/src/mage/cards/b/BansheeOfTheDreadChoir.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class BansheeOfTheDreadChoir extends CardImpl {
+public final class BansheeOfTheDreadChoir extends CardImpl {
public BansheeOfTheDreadChoir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BansheesBlade.java b/Mage.Sets/src/mage/cards/b/BansheesBlade.java
index c34fb9f49a7..68c30a4c365 100644
--- a/Mage.Sets/src/mage/cards/b/BansheesBlade.java
+++ b/Mage.Sets/src/mage/cards/b/BansheesBlade.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class BansheesBlade extends CardImpl {
+public final class BansheesBlade extends CardImpl {
public BansheesBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/b/BantBattlemage.java b/Mage.Sets/src/mage/cards/b/BantBattlemage.java
index 3dac9eb8cda..2ee0d84c52a 100644
--- a/Mage.Sets/src/mage/cards/b/BantBattlemage.java
+++ b/Mage.Sets/src/mage/cards/b/BantBattlemage.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BantBattlemage extends CardImpl {
+public final class BantBattlemage extends CardImpl {
public BantBattlemage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BantCharm.java b/Mage.Sets/src/mage/cards/b/BantCharm.java
index fb8dc8e11c0..d81d2d73837 100644
--- a/Mage.Sets/src/mage/cards/b/BantCharm.java
+++ b/Mage.Sets/src/mage/cards/b/BantCharm.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BantCharm extends CardImpl {
+public final class BantCharm extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant spell");
diff --git a/Mage.Sets/src/mage/cards/b/BantPanorama.java b/Mage.Sets/src/mage/cards/b/BantPanorama.java
index c723bf5b805..020612250ca 100644
--- a/Mage.Sets/src/mage/cards/b/BantPanorama.java
+++ b/Mage.Sets/src/mage/cards/b/BantPanorama.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author North
*/
-public class BantPanorama extends CardImpl {
+public final class BantPanorama extends CardImpl {
private static final FilterCard filter = new FilterCard("a basic Forest, Plains, or Island card");
diff --git a/Mage.Sets/src/mage/cards/b/BantSojourners.java b/Mage.Sets/src/mage/cards/b/BantSojourners.java
index 0ef03b128db..7af8bb85205 100644
--- a/Mage.Sets/src/mage/cards/b/BantSojourners.java
+++ b/Mage.Sets/src/mage/cards/b/BantSojourners.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author jeffwadsworth
*/
-public class BantSojourners extends CardImpl {
+public final class BantSojourners extends CardImpl {
public BantSojourners(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BantSureblade.java b/Mage.Sets/src/mage/cards/b/BantSureblade.java
index 4fa64eb4549..cba335399d9 100644
--- a/Mage.Sets/src/mage/cards/b/BantSureblade.java
+++ b/Mage.Sets/src/mage/cards/b/BantSureblade.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author jeffwadsworth
*/
-public class BantSureblade extends CardImpl {
+public final class BantSureblade extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another multicolor permanent");
diff --git a/Mage.Sets/src/mage/cards/b/BanthaHerd.java b/Mage.Sets/src/mage/cards/b/BanthaHerd.java
index f3483943fa0..c140a900b8f 100644
--- a/Mage.Sets/src/mage/cards/b/BanthaHerd.java
+++ b/Mage.Sets/src/mage/cards/b/BanthaHerd.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class BanthaHerd extends CardImpl {
+public final class BanthaHerd extends CardImpl {
public BanthaHerd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BarTheDoor.java b/Mage.Sets/src/mage/cards/b/BarTheDoor.java
index 9bb89a6a9a2..1a3dfa3473d 100644
--- a/Mage.Sets/src/mage/cards/b/BarTheDoor.java
+++ b/Mage.Sets/src/mage/cards/b/BarTheDoor.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class BarTheDoor extends CardImpl {
+public final class BarTheDoor extends CardImpl {
public BarTheDoor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BaralChiefOfCompliance.java b/Mage.Sets/src/mage/cards/b/BaralChiefOfCompliance.java
index 098df222cd6..44a34ba2448 100644
--- a/Mage.Sets/src/mage/cards/b/BaralChiefOfCompliance.java
+++ b/Mage.Sets/src/mage/cards/b/BaralChiefOfCompliance.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class BaralChiefOfCompliance extends CardImpl {
+public final class BaralChiefOfCompliance extends CardImpl {
private static final FilterCard filter = new FilterCard("Instant and sorcery spells");
diff --git a/Mage.Sets/src/mage/cards/b/BaralsExpertise.java b/Mage.Sets/src/mage/cards/b/BaralsExpertise.java
index 67c40d1053e..4712f60f6fd 100644
--- a/Mage.Sets/src/mage/cards/b/BaralsExpertise.java
+++ b/Mage.Sets/src/mage/cards/b/BaralsExpertise.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class BaralsExpertise extends CardImpl {
+public final class BaralsExpertise extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts and/or creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BarbarianGeneral.java b/Mage.Sets/src/mage/cards/b/BarbarianGeneral.java
index 98cbeb11190..5b5e1302028 100644
--- a/Mage.Sets/src/mage/cards/b/BarbarianGeneral.java
+++ b/Mage.Sets/src/mage/cards/b/BarbarianGeneral.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class BarbarianGeneral extends CardImpl {
+public final class BarbarianGeneral extends CardImpl {
public BarbarianGeneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbarianHorde.java b/Mage.Sets/src/mage/cards/b/BarbarianHorde.java
index c62a5498b6b..0a52662b979 100644
--- a/Mage.Sets/src/mage/cards/b/BarbarianHorde.java
+++ b/Mage.Sets/src/mage/cards/b/BarbarianHorde.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BarbarianHorde extends CardImpl {
+public final class BarbarianHorde extends CardImpl {
public BarbarianHorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbarianLunatic.java b/Mage.Sets/src/mage/cards/b/BarbarianLunatic.java
index f5b2cbf4b66..8dce3c1c7cb 100644
--- a/Mage.Sets/src/mage/cards/b/BarbarianLunatic.java
+++ b/Mage.Sets/src/mage/cards/b/BarbarianLunatic.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BarbarianLunatic extends CardImpl {
+public final class BarbarianLunatic extends CardImpl {
public BarbarianLunatic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbarianOutcast.java b/Mage.Sets/src/mage/cards/b/BarbarianOutcast.java
index 9dac4e1663b..7211d70a6ff 100644
--- a/Mage.Sets/src/mage/cards/b/BarbarianOutcast.java
+++ b/Mage.Sets/src/mage/cards/b/BarbarianOutcast.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class BarbarianOutcast extends CardImpl {
+public final class BarbarianOutcast extends CardImpl {
private static final FilterControlledLandPermanent filterControlledLand = new FilterControlledLandPermanent("a Swamp");
diff --git a/Mage.Sets/src/mage/cards/b/BarbarianRiftcutter.java b/Mage.Sets/src/mage/cards/b/BarbarianRiftcutter.java
index 699784424c4..9cf3890c231 100644
--- a/Mage.Sets/src/mage/cards/b/BarbarianRiftcutter.java
+++ b/Mage.Sets/src/mage/cards/b/BarbarianRiftcutter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki
*/
-public class BarbarianRiftcutter extends CardImpl {
+public final class BarbarianRiftcutter extends CardImpl {
public BarbarianRiftcutter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbarianRing.java b/Mage.Sets/src/mage/cards/b/BarbarianRing.java
index 9ff322633f9..fcb38229193 100644
--- a/Mage.Sets/src/mage/cards/b/BarbarianRing.java
+++ b/Mage.Sets/src/mage/cards/b/BarbarianRing.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class BarbarianRing extends CardImpl {
+public final class BarbarianRing extends CardImpl {
public BarbarianRing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BarbaryApes.java b/Mage.Sets/src/mage/cards/b/BarbaryApes.java
index 08fe14829b0..5f70899f3ce 100644
--- a/Mage.Sets/src/mage/cards/b/BarbaryApes.java
+++ b/Mage.Sets/src/mage/cards/b/BarbaryApes.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BarbaryApes extends CardImpl {
+public final class BarbaryApes extends CardImpl {
public BarbaryApes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbedBackWurm.java b/Mage.Sets/src/mage/cards/b/BarbedBackWurm.java
index 388081d0321..9dee165bbfa 100644
--- a/Mage.Sets/src/mage/cards/b/BarbedBackWurm.java
+++ b/Mage.Sets/src/mage/cards/b/BarbedBackWurm.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class BarbedBackWurm extends CardImpl {
+public final class BarbedBackWurm extends CardImpl {
public BarbedBackWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbedBattlegear.java b/Mage.Sets/src/mage/cards/b/BarbedBattlegear.java
index 6a7f9f73b5a..e875991e739 100644
--- a/Mage.Sets/src/mage/cards/b/BarbedBattlegear.java
+++ b/Mage.Sets/src/mage/cards/b/BarbedBattlegear.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class BarbedBattlegear extends CardImpl {
+public final class BarbedBattlegear extends CardImpl {
public BarbedBattlegear (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbedField.java b/Mage.Sets/src/mage/cards/b/BarbedField.java
index 4ecff46c74d..427a2728104 100644
--- a/Mage.Sets/src/mage/cards/b/BarbedField.java
+++ b/Mage.Sets/src/mage/cards/b/BarbedField.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class BarbedField extends CardImpl {
+public final class BarbedField extends CardImpl {
public BarbedField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbedLightning.java b/Mage.Sets/src/mage/cards/b/BarbedLightning.java
index d79655bc32f..4931cf90da9 100644
--- a/Mage.Sets/src/mage/cards/b/BarbedLightning.java
+++ b/Mage.Sets/src/mage/cards/b/BarbedLightning.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class BarbedLightning extends CardImpl {
+public final class BarbedLightning extends CardImpl {
public BarbedLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbedSextant.java b/Mage.Sets/src/mage/cards/b/BarbedSextant.java
index 76f7e3710bf..88ec4a9d177 100644
--- a/Mage.Sets/src/mage/cards/b/BarbedSextant.java
+++ b/Mage.Sets/src/mage/cards/b/BarbedSextant.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class BarbedSextant extends CardImpl {
+public final class BarbedSextant extends CardImpl {
public BarbedSextant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbedShocker.java b/Mage.Sets/src/mage/cards/b/BarbedShocker.java
index ac9094ac6e3..ba82b21e6ab 100644
--- a/Mage.Sets/src/mage/cards/b/BarbedShocker.java
+++ b/Mage.Sets/src/mage/cards/b/BarbedShocker.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author markedagain
*/
-public class BarbedShocker extends CardImpl {
+public final class BarbedShocker extends CardImpl {
public BarbedShocker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbedSliver.java b/Mage.Sets/src/mage/cards/b/BarbedSliver.java
index 1321ec4ef76..0a4c28b3d58 100644
--- a/Mage.Sets/src/mage/cards/b/BarbedSliver.java
+++ b/Mage.Sets/src/mage/cards/b/BarbedSliver.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class BarbedSliver extends CardImpl {
+public final class BarbedSliver extends CardImpl {
public BarbedSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BarbtoothWurm.java b/Mage.Sets/src/mage/cards/b/BarbtoothWurm.java
index 72fe7422aa7..925e3505767 100644
--- a/Mage.Sets/src/mage/cards/b/BarbtoothWurm.java
+++ b/Mage.Sets/src/mage/cards/b/BarbtoothWurm.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class BarbtoothWurm extends CardImpl {
+public final class BarbtoothWurm extends CardImpl {
public BarbtoothWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Bargain.java b/Mage.Sets/src/mage/cards/b/Bargain.java
index 1a3eb4efa8b..b0f487b65ab 100644
--- a/Mage.Sets/src/mage/cards/b/Bargain.java
+++ b/Mage.Sets/src/mage/cards/b/Bargain.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class Bargain extends CardImpl {
+public final class Bargain extends CardImpl {
public Bargain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BarkhideMauler.java b/Mage.Sets/src/mage/cards/b/BarkhideMauler.java
index ba5405e77c4..ce618dbafba 100644
--- a/Mage.Sets/src/mage/cards/b/BarkhideMauler.java
+++ b/Mage.Sets/src/mage/cards/b/BarkhideMauler.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BarkhideMauler extends CardImpl {
+public final class BarkhideMauler extends CardImpl {
public BarkhideMauler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BarkshellBlessing.java b/Mage.Sets/src/mage/cards/b/BarkshellBlessing.java
index 348aabe820e..a3a0ef26315 100644
--- a/Mage.Sets/src/mage/cards/b/BarkshellBlessing.java
+++ b/Mage.Sets/src/mage/cards/b/BarkshellBlessing.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class BarkshellBlessing extends CardImpl {
+public final class BarkshellBlessing extends CardImpl {
public BarkshellBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G/W}");
diff --git a/Mage.Sets/src/mage/cards/b/BarktoothWarbeard.java b/Mage.Sets/src/mage/cards/b/BarktoothWarbeard.java
index fd10ec4c3ed..dfe6876420f 100644
--- a/Mage.Sets/src/mage/cards/b/BarktoothWarbeard.java
+++ b/Mage.Sets/src/mage/cards/b/BarktoothWarbeard.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class BarktoothWarbeard extends CardImpl {
+public final class BarktoothWarbeard extends CardImpl {
public BarktoothWarbeard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BarlsCage.java b/Mage.Sets/src/mage/cards/b/BarlsCage.java
index c7b1d6fe2b9..4e70d7e23e4 100644
--- a/Mage.Sets/src/mage/cards/b/BarlsCage.java
+++ b/Mage.Sets/src/mage/cards/b/BarlsCage.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Backfir3
*/
-public class BarlsCage extends CardImpl {
+public final class BarlsCage extends CardImpl {
public BarlsCage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BaronSengir.java b/Mage.Sets/src/mage/cards/b/BaronSengir.java
index abd50c24a93..674ba9c76b7 100644
--- a/Mage.Sets/src/mage/cards/b/BaronSengir.java
+++ b/Mage.Sets/src/mage/cards/b/BaronSengir.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BaronSengir extends CardImpl {
+public final class BaronSengir extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target Vampire");
diff --git a/Mage.Sets/src/mage/cards/b/BaronVonCount.java b/Mage.Sets/src/mage/cards/b/BaronVonCount.java
index 123e4819c16..86f7200b6b9 100644
--- a/Mage.Sets/src/mage/cards/b/BaronVonCount.java
+++ b/Mage.Sets/src/mage/cards/b/BaronVonCount.java
@@ -56,10 +56,10 @@ import mage.util.CardUtil;
*
* @author L_J
*/
-public class BaronVonCount extends CardImpl {
+public final class BaronVonCount extends CardImpl {
public BaronVonCount(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.VILLAIN);
@@ -152,22 +152,23 @@ class BaronVonCountTriggeredAbility extends TriggeredAbilityImpl {
Permanent sourcePermanent = game.getPermanent(getSourceId());
MageObject mageObject = game.getObject(getSourceId());
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (game.getState().getValue(mageObject.getId() + "_doom") == null) {
+ if (spell == null || sourcePermanent == null || mageObject == null) {
return false;
}
Integer doomNumber = (Integer) game.getState().getValue(mageObject.getId() + "_doom");
- if (spell != null && sourcePermanent != null && mageObject != null && doomNumber > 0) {
- if (!spell.isFaceDown(game)) {
- String doomString = doomNumber.toString();
- if (spell.getCard().getManaCost().getText().contains(doomString)
- || String.valueOf(spell.getPower().getBaseValue()).contains(doomString)
- || String.valueOf(spell.getToughness().getBaseValue()).contains(doomString)) {
- return true;
- } else {
- for (String string : spell.getCard().getRules()) {
- if (string.contains(doomString)) {
- return true;
- }
+ if (doomNumber == null || doomNumber == 0) {
+ return false;
+ }
+ if (!spell.isFaceDown(game)) {
+ String doomString = doomNumber.toString();
+ if (spell.getCard().getManaCost().getText().contains(doomString)
+ || String.valueOf(spell.getPower().getBaseValue()).contains(doomString)
+ || String.valueOf(spell.getToughness().getBaseValue()).contains(doomString)) {
+ return true;
+ } else {
+ for (String string : spell.getCard().getRules()) {
+ if (string.contains(doomString)) {
+ return true;
}
}
}
diff --git a/Mage.Sets/src/mage/cards/b/BaronyVampire.java b/Mage.Sets/src/mage/cards/b/BaronyVampire.java
index b67ba1cfae1..d3b7e240975 100644
--- a/Mage.Sets/src/mage/cards/b/BaronyVampire.java
+++ b/Mage.Sets/src/mage/cards/b/BaronyVampire.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BaronyVampire extends CardImpl {
+public final class BaronyVampire extends CardImpl {
public BaronyVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BarrageOfBoulders.java b/Mage.Sets/src/mage/cards/b/BarrageOfBoulders.java
index ad99140ee05..6cd08836546 100644
--- a/Mage.Sets/src/mage/cards/b/BarrageOfBoulders.java
+++ b/Mage.Sets/src/mage/cards/b/BarrageOfBoulders.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class BarrageOfBoulders extends CardImpl {
+public final class BarrageOfBoulders extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/b/BarrageOfExpendables.java b/Mage.Sets/src/mage/cards/b/BarrageOfExpendables.java
index 41f05f1cd67..d0befd4013a 100644
--- a/Mage.Sets/src/mage/cards/b/BarrageOfExpendables.java
+++ b/Mage.Sets/src/mage/cards/b/BarrageOfExpendables.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class BarrageOfExpendables extends CardImpl {
+public final class BarrageOfExpendables extends CardImpl {
public BarrageOfExpendables(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BarrageOgre.java b/Mage.Sets/src/mage/cards/b/BarrageOgre.java
index e6d6491e225..d608bda176e 100644
--- a/Mage.Sets/src/mage/cards/b/BarrageOgre.java
+++ b/Mage.Sets/src/mage/cards/b/BarrageOgre.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class BarrageOgre extends CardImpl {
+public final class BarrageOgre extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BarrageTyrant.java b/Mage.Sets/src/mage/cards/b/BarrageTyrant.java
index bb351b52f55..798acf7f502 100644
--- a/Mage.Sets/src/mage/cards/b/BarrageTyrant.java
+++ b/Mage.Sets/src/mage/cards/b/BarrageTyrant.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class BarrageTyrant extends CardImpl {
+public final class BarrageTyrant extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another colorless creature");
diff --git a/Mage.Sets/src/mage/cards/b/BarrelDownSokenzan.java b/Mage.Sets/src/mage/cards/b/BarrelDownSokenzan.java
index ae2f5fedbe3..f038eb94d71 100644
--- a/Mage.Sets/src/mage/cards/b/BarrelDownSokenzan.java
+++ b/Mage.Sets/src/mage/cards/b/BarrelDownSokenzan.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BarrelDownSokenzan extends CardImpl {
+public final class BarrelDownSokenzan extends CardImpl {
public BarrelDownSokenzan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BarrenGlory.java b/Mage.Sets/src/mage/cards/b/BarrenGlory.java
index 579a2c2cd73..f1794fc8dab 100644
--- a/Mage.Sets/src/mage/cards/b/BarrenGlory.java
+++ b/Mage.Sets/src/mage/cards/b/BarrenGlory.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
/**
* @author fireshoes
*/
-public class BarrenGlory extends CardImpl {
+public final class BarrenGlory extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/b/BarrenMoor.java b/Mage.Sets/src/mage/cards/b/BarrenMoor.java
index 9f0ee8f9af1..c074279d22c 100644
--- a/Mage.Sets/src/mage/cards/b/BarrenMoor.java
+++ b/Mage.Sets/src/mage/cards/b/BarrenMoor.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class BarrenMoor extends CardImpl {
+public final class BarrenMoor extends CardImpl {
public BarrenMoor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BarrentonCragtreads.java b/Mage.Sets/src/mage/cards/b/BarrentonCragtreads.java
index a6db35fbb0e..8df8e2bc126 100644
--- a/Mage.Sets/src/mage/cards/b/BarrentonCragtreads.java
+++ b/Mage.Sets/src/mage/cards/b/BarrentonCragtreads.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class BarrentonCragtreads extends CardImpl {
+public final class BarrentonCragtreads extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BarrentonMedic.java b/Mage.Sets/src/mage/cards/b/BarrentonMedic.java
index 33a439557cb..08b41ba5e51 100644
--- a/Mage.Sets/src/mage/cards/b/BarrentonMedic.java
+++ b/Mage.Sets/src/mage/cards/b/BarrentonMedic.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
* @author jeffwadsworth
*/
-public class BarrentonMedic extends CardImpl {
+public final class BarrentonMedic extends CardImpl {
public BarrentonMedic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BarricadeBreaker.java b/Mage.Sets/src/mage/cards/b/BarricadeBreaker.java
index a90d7060c88..e81b0121141 100644
--- a/Mage.Sets/src/mage/cards/b/BarricadeBreaker.java
+++ b/Mage.Sets/src/mage/cards/b/BarricadeBreaker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class BarricadeBreaker extends CardImpl {
+public final class BarricadeBreaker extends CardImpl {
public BarricadeBreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/b/BarrinMasterWizard.java b/Mage.Sets/src/mage/cards/b/BarrinMasterWizard.java
index b6dcf5c3c12..aee1b55d3ce 100644
--- a/Mage.Sets/src/mage/cards/b/BarrinMasterWizard.java
+++ b/Mage.Sets/src/mage/cards/b/BarrinMasterWizard.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author Backfir3
*/
-public class BarrinMasterWizard extends CardImpl {
+public final class BarrinMasterWizard extends CardImpl {
public BarrinMasterWizard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BarrinsCodex.java b/Mage.Sets/src/mage/cards/b/BarrinsCodex.java
index f713d22c7c0..965f7ca274b 100644
--- a/Mage.Sets/src/mage/cards/b/BarrinsCodex.java
+++ b/Mage.Sets/src/mage/cards/b/BarrinsCodex.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author Backfir3
*/
-public class BarrinsCodex extends CardImpl {
+public final class BarrinsCodex extends CardImpl {
public BarrinsCodex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BarrinsSpite.java b/Mage.Sets/src/mage/cards/b/BarrinsSpite.java
index 6961afdb078..829ceed2464 100644
--- a/Mage.Sets/src/mage/cards/b/BarrinsSpite.java
+++ b/Mage.Sets/src/mage/cards/b/BarrinsSpite.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanentSameController;
*
* @author jeffwadsworth
*/
-public class BarrinsSpite extends CardImpl {
+public final class BarrinsSpite extends CardImpl {
public BarrinsSpite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BarrinsUnmaking.java b/Mage.Sets/src/mage/cards/b/BarrinsUnmaking.java
index ec6af647eea..4b8bf9e0c07 100644
--- a/Mage.Sets/src/mage/cards/b/BarrinsUnmaking.java
+++ b/Mage.Sets/src/mage/cards/b/BarrinsUnmaking.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class BarrinsUnmaking extends CardImpl {
+public final class BarrinsUnmaking extends CardImpl {
public BarrinsUnmaking(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BarrowGhoul.java b/Mage.Sets/src/mage/cards/b/BarrowGhoul.java
index 19d29a96468..cda4e548323 100644
--- a/Mage.Sets/src/mage/cards/b/BarrowGhoul.java
+++ b/Mage.Sets/src/mage/cards/b/BarrowGhoul.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class BarrowGhoul extends CardImpl {
+public final class BarrowGhoul extends CardImpl {
public BarrowGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BartelRuneaxe.java b/Mage.Sets/src/mage/cards/b/BartelRuneaxe.java
index bc03f9f2a50..0956be915df 100644
--- a/Mage.Sets/src/mage/cards/b/BartelRuneaxe.java
+++ b/Mage.Sets/src/mage/cards/b/BartelRuneaxe.java
@@ -45,7 +45,7 @@ import mage.game.stack.StackObject;
*
* @author JRHerlehy
*/
-public class BartelRuneaxe extends CardImpl {
+public final class BartelRuneaxe extends CardImpl {
public BartelRuneaxe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BarterInBlood.java b/Mage.Sets/src/mage/cards/b/BarterInBlood.java
index 2aea795d490..4ebdc337cb6 100644
--- a/Mage.Sets/src/mage/cards/b/BarterInBlood.java
+++ b/Mage.Sets/src/mage/cards/b/BarterInBlood.java
@@ -39,7 +39,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author North
*/
-public class BarterInBlood extends CardImpl {
+public final class BarterInBlood extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("creature");
diff --git a/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java b/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java
index 933f28667fa..113d948f2b3 100644
--- a/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java
+++ b/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java
@@ -56,7 +56,7 @@ import mage.game.permanent.token.Token;
*
* @author emerald000
*/
-public class BaruFistOfKrosa extends CardImpl {
+public final class BaruFistOfKrosa extends CardImpl {
private static final FilterLandPermanent forestFilter = new FilterLandPermanent("Forest");
private static final FilterCreaturePermanent greenCreatureFilter = new FilterCreaturePermanent("green creatures you control");
diff --git a/Mage.Sets/src/mage/cards/b/BasalSliver.java b/Mage.Sets/src/mage/cards/b/BasalSliver.java
index 8a5675d736c..29259b4b3ec 100644
--- a/Mage.Sets/src/mage/cards/b/BasalSliver.java
+++ b/Mage.Sets/src/mage/cards/b/BasalSliver.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author anonymous
*/
-public class BasalSliver extends CardImpl {
+public final class BasalSliver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("All Slivers");
diff --git a/Mage.Sets/src/mage/cards/b/BasalThrull.java b/Mage.Sets/src/mage/cards/b/BasalThrull.java
index 40d6dbeeeb8..19dde63e4d6 100644
--- a/Mage.Sets/src/mage/cards/b/BasalThrull.java
+++ b/Mage.Sets/src/mage/cards/b/BasalThrull.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class BasalThrull extends CardImpl {
+public final class BasalThrull extends CardImpl {
public BasalThrull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BasaltGargoyle.java b/Mage.Sets/src/mage/cards/b/BasaltGargoyle.java
index a42e80d7ca8..7881444bc04 100644
--- a/Mage.Sets/src/mage/cards/b/BasaltGargoyle.java
+++ b/Mage.Sets/src/mage/cards/b/BasaltGargoyle.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class BasaltGargoyle extends CardImpl {
+public final class BasaltGargoyle extends CardImpl {
public BasaltGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BasaltMonolith.java b/Mage.Sets/src/mage/cards/b/BasaltMonolith.java
index a38bfcca1be..92acfe5f8da 100644
--- a/Mage.Sets/src/mage/cards/b/BasaltMonolith.java
+++ b/Mage.Sets/src/mage/cards/b/BasaltMonolith.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class BasaltMonolith extends CardImpl {
+public final class BasaltMonolith extends CardImpl {
public BasaltMonolith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BasandraBattleSeraph.java b/Mage.Sets/src/mage/cards/b/BasandraBattleSeraph.java
index 3b022caebdb..319d47bff1e 100644
--- a/Mage.Sets/src/mage/cards/b/BasandraBattleSeraph.java
+++ b/Mage.Sets/src/mage/cards/b/BasandraBattleSeraph.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class BasandraBattleSeraph extends CardImpl {
+public final class BasandraBattleSeraph extends CardImpl {
public BasandraBattleSeraph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BashToBits.java b/Mage.Sets/src/mage/cards/b/BashToBits.java
index 47d9315bace..a7170045b5d 100644
--- a/Mage.Sets/src/mage/cards/b/BashToBits.java
+++ b/Mage.Sets/src/mage/cards/b/BashToBits.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class BashToBits extends CardImpl {
+public final class BashToBits extends CardImpl {
public BashToBits(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BasilicaGuards.java b/Mage.Sets/src/mage/cards/b/BasilicaGuards.java
index c114b6b8297..9075215bc50 100644
--- a/Mage.Sets/src/mage/cards/b/BasilicaGuards.java
+++ b/Mage.Sets/src/mage/cards/b/BasilicaGuards.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BasilicaGuards extends CardImpl {
+public final class BasilicaGuards extends CardImpl {
public BasilicaGuards(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BasilicaScreecher.java b/Mage.Sets/src/mage/cards/b/BasilicaScreecher.java
index 766ba0e2959..5ba08593ca6 100644
--- a/Mage.Sets/src/mage/cards/b/BasilicaScreecher.java
+++ b/Mage.Sets/src/mage/cards/b/BasilicaScreecher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BasilicaScreecher extends CardImpl {
+public final class BasilicaScreecher extends CardImpl {
public BasilicaScreecher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BasiliskCollar.java b/Mage.Sets/src/mage/cards/b/BasiliskCollar.java
index f37e2a73350..69bde7ffad6 100644
--- a/Mage.Sets/src/mage/cards/b/BasiliskCollar.java
+++ b/Mage.Sets/src/mage/cards/b/BasiliskCollar.java
@@ -43,7 +43,7 @@ import mage.constants.*;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BasiliskCollar extends CardImpl {
+public final class BasiliskCollar extends CardImpl {
public BasiliskCollar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BaskingRootwalla.java b/Mage.Sets/src/mage/cards/b/BaskingRootwalla.java
index 3a5532a2d14..be0bfa44075 100644
--- a/Mage.Sets/src/mage/cards/b/BaskingRootwalla.java
+++ b/Mage.Sets/src/mage/cards/b/BaskingRootwalla.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author magenoxx_at_gmail.com
*/
-public class BaskingRootwalla extends CardImpl {
+public final class BaskingRootwalla extends CardImpl {
public BaskingRootwalla(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BassaraTowerArcher.java b/Mage.Sets/src/mage/cards/b/BassaraTowerArcher.java
index 5907571019f..a127180011c 100644
--- a/Mage.Sets/src/mage/cards/b/BassaraTowerArcher.java
+++ b/Mage.Sets/src/mage/cards/b/BassaraTowerArcher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BassaraTowerArcher extends CardImpl {
+public final class BassaraTowerArcher extends CardImpl {
public BassaraTowerArcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BastionEnforcer.java b/Mage.Sets/src/mage/cards/b/BastionEnforcer.java
index 63d8c80d95a..9b10358d01c 100644
--- a/Mage.Sets/src/mage/cards/b/BastionEnforcer.java
+++ b/Mage.Sets/src/mage/cards/b/BastionEnforcer.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class BastionEnforcer extends CardImpl {
+public final class BastionEnforcer extends CardImpl {
public BastionEnforcer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BastionInventor.java b/Mage.Sets/src/mage/cards/b/BastionInventor.java
index 09bfacdc7fd..968b879115c 100644
--- a/Mage.Sets/src/mage/cards/b/BastionInventor.java
+++ b/Mage.Sets/src/mage/cards/b/BastionInventor.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class BastionInventor extends CardImpl {
+public final class BastionInventor extends CardImpl {
public BastionInventor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BastionMastodon.java b/Mage.Sets/src/mage/cards/b/BastionMastodon.java
index 636e7d09f39..afdc0ad44d3 100644
--- a/Mage.Sets/src/mage/cards/b/BastionMastodon.java
+++ b/Mage.Sets/src/mage/cards/b/BastionMastodon.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author spjspj
*/
-public class BastionMastodon extends CardImpl {
+public final class BastionMastodon extends CardImpl {
public BastionMastodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/b/BastionProtector.java b/Mage.Sets/src/mage/cards/b/BastionProtector.java
index 4eff243e372..e9a35aee381 100644
--- a/Mage.Sets/src/mage/cards/b/BastionProtector.java
+++ b/Mage.Sets/src/mage/cards/b/BastionProtector.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.CommanderPredicate;
*
* @author LevelX2
*/
-public class BastionProtector extends CardImpl {
+public final class BastionProtector extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Commander creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BatheInBacta.java b/Mage.Sets/src/mage/cards/b/BatheInBacta.java
index 0bef14b687d..55e53220591 100644
--- a/Mage.Sets/src/mage/cards/b/BatheInBacta.java
+++ b/Mage.Sets/src/mage/cards/b/BatheInBacta.java
@@ -41,7 +41,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class BatheInBacta extends CardImpl {
+public final class BatheInBacta extends CardImpl {
public BatheInBacta(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BatheInDragonfire.java b/Mage.Sets/src/mage/cards/b/BatheInDragonfire.java
index 092fdd474c1..c50a8c4ed54 100644
--- a/Mage.Sets/src/mage/cards/b/BatheInDragonfire.java
+++ b/Mage.Sets/src/mage/cards/b/BatheInDragonfire.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BatheInDragonfire extends CardImpl {
+public final class BatheInDragonfire extends CardImpl {
public BatheInDragonfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BatheInLight.java b/Mage.Sets/src/mage/cards/b/BatheInLight.java
index 7317708635e..04ea43ac6ea 100644
--- a/Mage.Sets/src/mage/cards/b/BatheInLight.java
+++ b/Mage.Sets/src/mage/cards/b/BatheInLight.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2 & L_J
*/
-public class BatheInLight extends CardImpl {
+public final class BatheInLight extends CardImpl {
public BatheInLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BatonOfCourage.java b/Mage.Sets/src/mage/cards/b/BatonOfCourage.java
index 3f8e7471812..9dd0200cdd7 100644
--- a/Mage.Sets/src/mage/cards/b/BatonOfCourage.java
+++ b/Mage.Sets/src/mage/cards/b/BatonOfCourage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class BatonOfCourage extends CardImpl {
+public final class BatonOfCourage extends CardImpl {
public BatonOfCourage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BatonOfMorale.java b/Mage.Sets/src/mage/cards/b/BatonOfMorale.java
index 435a42bd098..e00c7ad6082 100644
--- a/Mage.Sets/src/mage/cards/b/BatonOfMorale.java
+++ b/Mage.Sets/src/mage/cards/b/BatonOfMorale.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class BatonOfMorale extends CardImpl {
+public final class BatonOfMorale extends CardImpl {
public BatonOfMorale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/b/BatteredGolem.java b/Mage.Sets/src/mage/cards/b/BatteredGolem.java
index abff55eaafc..604088d5ad1 100644
--- a/Mage.Sets/src/mage/cards/b/BatteredGolem.java
+++ b/Mage.Sets/src/mage/cards/b/BatteredGolem.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author Plopman
*/
-public class BatteredGolem extends CardImpl {
+public final class BatteredGolem extends CardImpl {
public BatteredGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/Batterhorn.java b/Mage.Sets/src/mage/cards/b/Batterhorn.java
index a7717147e85..6ff942054d0 100644
--- a/Mage.Sets/src/mage/cards/b/Batterhorn.java
+++ b/Mage.Sets/src/mage/cards/b/Batterhorn.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class Batterhorn extends CardImpl {
+public final class Batterhorn extends CardImpl {
public Batterhorn (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BatteringCraghorn.java b/Mage.Sets/src/mage/cards/b/BatteringCraghorn.java
index e28f9ccff00..51ca7eb3d90 100644
--- a/Mage.Sets/src/mage/cards/b/BatteringCraghorn.java
+++ b/Mage.Sets/src/mage/cards/b/BatteringCraghorn.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author LoneFox
*/
-public class BatteringCraghorn extends CardImpl {
+public final class BatteringCraghorn extends CardImpl {
public BatteringCraghorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BatteringKrasis.java b/Mage.Sets/src/mage/cards/b/BatteringKrasis.java
index 44be2256167..c07f3ecc600 100644
--- a/Mage.Sets/src/mage/cards/b/BatteringKrasis.java
+++ b/Mage.Sets/src/mage/cards/b/BatteringKrasis.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*/
-public class BatteringKrasis extends CardImpl {
+public final class BatteringKrasis extends CardImpl {
public BatteringKrasis (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BatteringRam.java b/Mage.Sets/src/mage/cards/b/BatteringRam.java
index 7ffce8eac0c..ecc0411c106 100644
--- a/Mage.Sets/src/mage/cards/b/BatteringRam.java
+++ b/Mage.Sets/src/mage/cards/b/BatteringRam.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author L_J
*/
-public class BatteringRam extends CardImpl {
+public final class BatteringRam extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wall");
diff --git a/Mage.Sets/src/mage/cards/b/BatteringSliver.java b/Mage.Sets/src/mage/cards/b/BatteringSliver.java
index ff3fbe14120..5e21d19c075 100644
--- a/Mage.Sets/src/mage/cards/b/BatteringSliver.java
+++ b/Mage.Sets/src/mage/cards/b/BatteringSliver.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author KholdFuzion
*/
-public class BatteringSliver extends CardImpl {
+public final class BatteringSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("all Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BatteringWurm.java b/Mage.Sets/src/mage/cards/b/BatteringWurm.java
index c22b15aaadb..4723428d660 100644
--- a/Mage.Sets/src/mage/cards/b/BatteringWurm.java
+++ b/Mage.Sets/src/mage/cards/b/BatteringWurm.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class BatteringWurm extends CardImpl {
+public final class BatteringWurm extends CardImpl {
public BatteringWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Batterskull.java b/Mage.Sets/src/mage/cards/b/Batterskull.java
index cf6611f3c65..8fe7c4b7206 100644
--- a/Mage.Sets/src/mage/cards/b/Batterskull.java
+++ b/Mage.Sets/src/mage/cards/b/Batterskull.java
@@ -47,7 +47,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class Batterskull extends CardImpl {
+public final class Batterskull extends CardImpl {
public Batterskull (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleAtTheBridge.java b/Mage.Sets/src/mage/cards/b/BattleAtTheBridge.java
index 6fa4797ebc5..f4a1a3d76a2 100644
--- a/Mage.Sets/src/mage/cards/b/BattleAtTheBridge.java
+++ b/Mage.Sets/src/mage/cards/b/BattleAtTheBridge.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BattleAtTheBridge extends CardImpl {
+public final class BattleAtTheBridge extends CardImpl {
public BattleAtTheBridge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleBrawler.java b/Mage.Sets/src/mage/cards/b/BattleBrawler.java
index 2d6fd0de55c..0e198e5c400 100644
--- a/Mage.Sets/src/mage/cards/b/BattleBrawler.java
+++ b/Mage.Sets/src/mage/cards/b/BattleBrawler.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class BattleBrawler extends CardImpl {
+public final class BattleBrawler extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("As long as you control a red or white permanent");
diff --git a/Mage.Sets/src/mage/cards/b/BattleFrenzy.java b/Mage.Sets/src/mage/cards/b/BattleFrenzy.java
index 026c640fc7f..43c8ad18462 100644
--- a/Mage.Sets/src/mage/cards/b/BattleFrenzy.java
+++ b/Mage.Sets/src/mage/cards/b/BattleFrenzy.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class BattleFrenzy extends CardImpl {
+public final class BattleFrenzy extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("green creatures");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("nongreen creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BattleHurda.java b/Mage.Sets/src/mage/cards/b/BattleHurda.java
index 8ab6f9a4161..449e6091a41 100644
--- a/Mage.Sets/src/mage/cards/b/BattleHurda.java
+++ b/Mage.Sets/src/mage/cards/b/BattleHurda.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class BattleHurda extends CardImpl {
+public final class BattleHurda extends CardImpl {
public BattleHurda (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleHymn.java b/Mage.Sets/src/mage/cards/b/BattleHymn.java
index b69a1f805eb..f4fdc7f24db 100644
--- a/Mage.Sets/src/mage/cards/b/BattleHymn.java
+++ b/Mage.Sets/src/mage/cards/b/BattleHymn.java
@@ -40,7 +40,7 @@ import mage.filter.StaticFilters;
*
* @author North
*/
-public class BattleHymn extends CardImpl {
+public final class BattleHymn extends CardImpl {
public BattleHymn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleMadRonin.java b/Mage.Sets/src/mage/cards/b/BattleMadRonin.java
index 1411369017d..7078527374f 100644
--- a/Mage.Sets/src/mage/cards/b/BattleMadRonin.java
+++ b/Mage.Sets/src/mage/cards/b/BattleMadRonin.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author loki
*/
-public class BattleMadRonin extends CardImpl {
+public final class BattleMadRonin extends CardImpl {
public BattleMadRonin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleMastery.java b/Mage.Sets/src/mage/cards/b/BattleMastery.java
index 5371afa10e1..a604f6d1c16 100644
--- a/Mage.Sets/src/mage/cards/b/BattleMastery.java
+++ b/Mage.Sets/src/mage/cards/b/BattleMastery.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BattleMastery extends CardImpl {
+public final class BattleMastery extends CardImpl {
public BattleMastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleOfWits.java b/Mage.Sets/src/mage/cards/b/BattleOfWits.java
index bcdebb88fa7..b1ead9d9770 100644
--- a/Mage.Sets/src/mage/cards/b/BattleOfWits.java
+++ b/Mage.Sets/src/mage/cards/b/BattleOfWits.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author North
*/
-public class BattleOfWits extends CardImpl {
+public final class BattleOfWits extends CardImpl {
public BattleOfWits(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleRampart.java b/Mage.Sets/src/mage/cards/b/BattleRampart.java
index 8aa9339a100..c377492c5c4 100644
--- a/Mage.Sets/src/mage/cards/b/BattleRampart.java
+++ b/Mage.Sets/src/mage/cards/b/BattleRampart.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BattleRampart extends CardImpl {
+public final class BattleRampart extends CardImpl {
public BattleRampart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleRattleShaman.java b/Mage.Sets/src/mage/cards/b/BattleRattleShaman.java
index d21707d9a72..1f0e6e98229 100644
--- a/Mage.Sets/src/mage/cards/b/BattleRattleShaman.java
+++ b/Mage.Sets/src/mage/cards/b/BattleRattleShaman.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class BattleRattleShaman extends CardImpl {
+public final class BattleRattleShaman extends CardImpl {
public BattleRattleShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleScreech.java b/Mage.Sets/src/mage/cards/b/BattleScreech.java
index 08de2297ae6..52b8527240c 100644
--- a/Mage.Sets/src/mage/cards/b/BattleScreech.java
+++ b/Mage.Sets/src/mage/cards/b/BattleScreech.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class BattleScreech extends CardImpl {
+public final class BattleScreech extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped white creatures you control");
diff --git a/Mage.Sets/src/mage/cards/b/BattleSliver.java b/Mage.Sets/src/mage/cards/b/BattleSliver.java
index e81b386f1a8..b6fef0e492b 100644
--- a/Mage.Sets/src/mage/cards/b/BattleSliver.java
+++ b/Mage.Sets/src/mage/cards/b/BattleSliver.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author jeffwadsworth
*/
-public class BattleSliver extends CardImpl {
+public final class BattleSliver extends CardImpl {
public BattleSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleSquadron.java b/Mage.Sets/src/mage/cards/b/BattleSquadron.java
index d4ea35a4433..e99bc6287be 100644
--- a/Mage.Sets/src/mage/cards/b/BattleSquadron.java
+++ b/Mage.Sets/src/mage/cards/b/BattleSquadron.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class BattleSquadron extends CardImpl {
+public final class BattleSquadron extends CardImpl {
public BattleSquadron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleStrain.java b/Mage.Sets/src/mage/cards/b/BattleStrain.java
index a12f8e970ed..ccd148c449d 100644
--- a/Mage.Sets/src/mage/cards/b/BattleStrain.java
+++ b/Mage.Sets/src/mage/cards/b/BattleStrain.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class BattleStrain extends CardImpl {
+public final class BattleStrain extends CardImpl {
public BattleStrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleTactics.java b/Mage.Sets/src/mage/cards/b/BattleTactics.java
index cdb6a5ab8de..7a4d7276524 100644
--- a/Mage.Sets/src/mage/cards/b/BattleTactics.java
+++ b/Mage.Sets/src/mage/cards/b/BattleTactics.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Styxo
*/
-public class BattleTactics extends CardImpl {
+public final class BattleTactics extends CardImpl {
public BattleTactics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BattlefieldForge.java b/Mage.Sets/src/mage/cards/b/BattlefieldForge.java
index 38d163c2682..c5932bd1f9f 100644
--- a/Mage.Sets/src/mage/cards/b/BattlefieldForge.java
+++ b/Mage.Sets/src/mage/cards/b/BattlefieldForge.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class BattlefieldForge extends CardImpl {
+public final class BattlefieldForge extends CardImpl {
public BattlefieldForge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BattlefieldMedic.java b/Mage.Sets/src/mage/cards/b/BattlefieldMedic.java
index e6376fe784e..06af74841ad 100644
--- a/Mage.Sets/src/mage/cards/b/BattlefieldMedic.java
+++ b/Mage.Sets/src/mage/cards/b/BattlefieldMedic.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class BattlefieldMedic extends CardImpl {
+public final class BattlefieldMedic extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/b/BattlefieldPercher.java b/Mage.Sets/src/mage/cards/b/BattlefieldPercher.java
index 05b70f13c7d..5c93d722561 100644
--- a/Mage.Sets/src/mage/cards/b/BattlefieldPercher.java
+++ b/Mage.Sets/src/mage/cards/b/BattlefieldPercher.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class BattlefieldPercher extends CardImpl {
+public final class BattlefieldPercher extends CardImpl {
public BattlefieldPercher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BattlefieldScavenger.java b/Mage.Sets/src/mage/cards/b/BattlefieldScavenger.java
index d12309f5390..46123051a3d 100644
--- a/Mage.Sets/src/mage/cards/b/BattlefieldScavenger.java
+++ b/Mage.Sets/src/mage/cards/b/BattlefieldScavenger.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author anonymous
*/
-public class BattlefieldScavenger extends CardImpl {
+public final class BattlefieldScavenger extends CardImpl {
public BattlefieldScavenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BattlefieldScrounger.java b/Mage.Sets/src/mage/cards/b/BattlefieldScrounger.java
index f28965a96f6..e0c6988fa08 100644
--- a/Mage.Sets/src/mage/cards/b/BattlefieldScrounger.java
+++ b/Mage.Sets/src/mage/cards/b/BattlefieldScrounger.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class BattlefieldScrounger extends CardImpl {
+public final class BattlefieldScrounger extends CardImpl {
public BattlefieldScrounger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BattlefieldThaumaturge.java b/Mage.Sets/src/mage/cards/b/BattlefieldThaumaturge.java
index 9b0993799e3..7a756c17bcd 100644
--- a/Mage.Sets/src/mage/cards/b/BattlefieldThaumaturge.java
+++ b/Mage.Sets/src/mage/cards/b/BattlefieldThaumaturge.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class BattlefieldThaumaturge extends CardImpl {
+public final class BattlefieldThaumaturge extends CardImpl {
public BattlefieldThaumaturge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BattleflightEagle.java b/Mage.Sets/src/mage/cards/b/BattleflightEagle.java
index c817d2cff2d..479622e3d90 100644
--- a/Mage.Sets/src/mage/cards/b/BattleflightEagle.java
+++ b/Mage.Sets/src/mage/cards/b/BattleflightEagle.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BattleflightEagle extends CardImpl {
+public final class BattleflightEagle extends CardImpl {
public BattleflightEagle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BattlefrontKrushok.java b/Mage.Sets/src/mage/cards/b/BattlefrontKrushok.java
index 4e48f672134..8573e223727 100644
--- a/Mage.Sets/src/mage/cards/b/BattlefrontKrushok.java
+++ b/Mage.Sets/src/mage/cards/b/BattlefrontKrushok.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class BattlefrontKrushok extends CardImpl {
+public final class BattlefrontKrushok extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature you control with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/b/BattlegateMimic.java b/Mage.Sets/src/mage/cards/b/BattlegateMimic.java
index e6a82a803df..c23111bd139 100644
--- a/Mage.Sets/src/mage/cards/b/BattlegateMimic.java
+++ b/Mage.Sets/src/mage/cards/b/BattlegateMimic.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class BattlegateMimic extends CardImpl {
+public final class BattlegateMimic extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a spell that's both red and white");
diff --git a/Mage.Sets/src/mage/cards/b/BattlegraceAngel.java b/Mage.Sets/src/mage/cards/b/BattlegraceAngel.java
index a255315230f..ef42ce6f179 100644
--- a/Mage.Sets/src/mage/cards/b/BattlegraceAngel.java
+++ b/Mage.Sets/src/mage/cards/b/BattlegraceAngel.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class BattlegraceAngel extends CardImpl {
+public final class BattlegraceAngel extends CardImpl {
public BattlegraceAngel (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BattlegroundGeist.java b/Mage.Sets/src/mage/cards/b/BattlegroundGeist.java
index ac2fbb0f9c3..d05698be3d4 100644
--- a/Mage.Sets/src/mage/cards/b/BattlegroundGeist.java
+++ b/Mage.Sets/src/mage/cards/b/BattlegroundGeist.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author nantuko
*/
-public class BattlegroundGeist extends CardImpl {
+public final class BattlegroundGeist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Spirit creatures");
diff --git a/Mage.Sets/src/mage/cards/b/Battlegrowth.java b/Mage.Sets/src/mage/cards/b/Battlegrowth.java
index 3b69ef916a4..9b3330a99e7 100644
--- a/Mage.Sets/src/mage/cards/b/Battlegrowth.java
+++ b/Mage.Sets/src/mage/cards/b/Battlegrowth.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Battlegrowth extends CardImpl {
+public final class Battlegrowth extends CardImpl {
public Battlegrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BattletideAlchemist.java b/Mage.Sets/src/mage/cards/b/BattletideAlchemist.java
index e489ebe17e9..36319121e77 100644
--- a/Mage.Sets/src/mage/cards/b/BattletideAlchemist.java
+++ b/Mage.Sets/src/mage/cards/b/BattletideAlchemist.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class BattletideAlchemist extends CardImpl {
+public final class BattletideAlchemist extends CardImpl {
public BattletideAlchemist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BattlewandOak.java b/Mage.Sets/src/mage/cards/b/BattlewandOak.java
index 413ad067429..0c1b58bed40 100644
--- a/Mage.Sets/src/mage/cards/b/BattlewandOak.java
+++ b/Mage.Sets/src/mage/cards/b/BattlewandOak.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author emerald000
*/
-public class BattlewandOak extends CardImpl {
+public final class BattlewandOak extends CardImpl {
private static final FilterPermanent filterForest = new FilterPermanent("a Forest");
private static final FilterSpell filterTreefolk = new FilterSpell("a Treefolk spell");
diff --git a/Mage.Sets/src/mage/cards/b/BattlewiseAven.java b/Mage.Sets/src/mage/cards/b/BattlewiseAven.java
index dc66ee2cfdd..13f33fe2d9e 100644
--- a/Mage.Sets/src/mage/cards/b/BattlewiseAven.java
+++ b/Mage.Sets/src/mage/cards/b/BattlewiseAven.java
@@ -45,7 +45,7 @@ import mage.constants.*;
*
* @author LoneFox
*/
-public class BattlewiseAven extends CardImpl {
+public final class BattlewiseAven extends CardImpl {
public BattlewiseAven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java b/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java
index 27a5a227ed7..3547a074183 100644
--- a/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java
+++ b/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class BattlewiseHoplite extends CardImpl {
+public final class BattlewiseHoplite extends CardImpl {
public BattlewiseHoplite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BattlewiseValor.java b/Mage.Sets/src/mage/cards/b/BattlewiseValor.java
index 6e56a5f04fb..13f02fae9fc 100644
--- a/Mage.Sets/src/mage/cards/b/BattlewiseValor.java
+++ b/Mage.Sets/src/mage/cards/b/BattlewiseValor.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BattlewiseValor extends CardImpl {
+public final class BattlewiseValor extends CardImpl {
public BattlewiseValor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BatwingBrume.java b/Mage.Sets/src/mage/cards/b/BatwingBrume.java
index 98b0ed45eea..f0b0558d1fa 100644
--- a/Mage.Sets/src/mage/cards/b/BatwingBrume.java
+++ b/Mage.Sets/src/mage/cards/b/BatwingBrume.java
@@ -53,7 +53,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
* @author jeffwadsworth
*
*/
-public class BatwingBrume extends CardImpl {
+public final class BatwingBrume extends CardImpl {
public BatwingBrume(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/b/BayFalcon.java b/Mage.Sets/src/mage/cards/b/BayFalcon.java
index 62d3def777a..4615e2af933 100644
--- a/Mage.Sets/src/mage/cards/b/BayFalcon.java
+++ b/Mage.Sets/src/mage/cards/b/BayFalcon.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BayFalcon extends CardImpl {
+public final class BayFalcon extends CardImpl {
public BayFalcon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/Bayou.java b/Mage.Sets/src/mage/cards/b/Bayou.java
index e8f97e52ad1..480cf15c53d 100644
--- a/Mage.Sets/src/mage/cards/b/Bayou.java
+++ b/Mage.Sets/src/mage/cards/b/Bayou.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class Bayou extends CardImpl {
+public final class Bayou extends CardImpl {
public Bayou(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BayouDragonfly.java b/Mage.Sets/src/mage/cards/b/BayouDragonfly.java
index 641db3db4da..ad3de81a6fa 100644
--- a/Mage.Sets/src/mage/cards/b/BayouDragonfly.java
+++ b/Mage.Sets/src/mage/cards/b/BayouDragonfly.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BayouDragonfly extends CardImpl {
+public final class BayouDragonfly extends CardImpl {
public BayouDragonfly(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BazaarKrovod.java b/Mage.Sets/src/mage/cards/b/BazaarKrovod.java
index 9c7c7f08bde..5a976f0a69b 100644
--- a/Mage.Sets/src/mage/cards/b/BazaarKrovod.java
+++ b/Mage.Sets/src/mage/cards/b/BazaarKrovod.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author jeffwadsworth
*/
-public class BazaarKrovod extends CardImpl {
+public final class BazaarKrovod extends CardImpl {
static final FilterAttackingCreature filter = new FilterAttackingCreature("another target attacking creature");
diff --git a/Mage.Sets/src/mage/cards/b/BazaarOfBaghdad.java b/Mage.Sets/src/mage/cards/b/BazaarOfBaghdad.java
index 89ab0e58290..7c5574bffba 100644
--- a/Mage.Sets/src/mage/cards/b/BazaarOfBaghdad.java
+++ b/Mage.Sets/src/mage/cards/b/BazaarOfBaghdad.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class BazaarOfBaghdad extends CardImpl {
+public final class BazaarOfBaghdad extends CardImpl {
public BazaarOfBaghdad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BazaarTrader.java b/Mage.Sets/src/mage/cards/b/BazaarTrader.java
index 90cecaa0dd7..c5bc6505f5c 100644
--- a/Mage.Sets/src/mage/cards/b/BazaarTrader.java
+++ b/Mage.Sets/src/mage/cards/b/BazaarTrader.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class BazaarTrader extends CardImpl {
+public final class BazaarTrader extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact, creature, or land you control");
diff --git a/Mage.Sets/src/mage/cards/b/BeaconBehemoth.java b/Mage.Sets/src/mage/cards/b/BeaconBehemoth.java
index ce136c07505..13166af8902 100644
--- a/Mage.Sets/src/mage/cards/b/BeaconBehemoth.java
+++ b/Mage.Sets/src/mage/cards/b/BeaconBehemoth.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BeaconBehemoth extends CardImpl {
+public final class BeaconBehemoth extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/b/BeaconHawk.java b/Mage.Sets/src/mage/cards/b/BeaconHawk.java
index 479b6181127..001ea45f8c7 100644
--- a/Mage.Sets/src/mage/cards/b/BeaconHawk.java
+++ b/Mage.Sets/src/mage/cards/b/BeaconHawk.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BeaconHawk extends CardImpl {
+public final class BeaconHawk extends CardImpl {
public BeaconHawk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BeaconOfCreation.java b/Mage.Sets/src/mage/cards/b/BeaconOfCreation.java
index 6ae6d0ff34d..b8e8ec43f3c 100644
--- a/Mage.Sets/src/mage/cards/b/BeaconOfCreation.java
+++ b/Mage.Sets/src/mage/cards/b/BeaconOfCreation.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.InsectToken;
*
* @author North
*/
-public class BeaconOfCreation extends CardImpl {
+public final class BeaconOfCreation extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest you control");
diff --git a/Mage.Sets/src/mage/cards/b/BeaconOfDestiny.java b/Mage.Sets/src/mage/cards/b/BeaconOfDestiny.java
index 307143fb4de..4d0d8063324 100644
--- a/Mage.Sets/src/mage/cards/b/BeaconOfDestiny.java
+++ b/Mage.Sets/src/mage/cards/b/BeaconOfDestiny.java
@@ -52,7 +52,7 @@ import mage.target.TargetSource;
*
* @author L_J
*/
-public class BeaconOfDestiny extends CardImpl {
+public final class BeaconOfDestiny extends CardImpl {
public BeaconOfDestiny(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BeaconOfDestruction.java b/Mage.Sets/src/mage/cards/b/BeaconOfDestruction.java
index 09f5d0f09ad..82825450ebc 100644
--- a/Mage.Sets/src/mage/cards/b/BeaconOfDestruction.java
+++ b/Mage.Sets/src/mage/cards/b/BeaconOfDestruction.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class BeaconOfDestruction extends CardImpl {
+public final class BeaconOfDestruction extends CardImpl {
public BeaconOfDestruction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BeaconOfImmortality.java b/Mage.Sets/src/mage/cards/b/BeaconOfImmortality.java
index 44a72af827e..09f31804029 100644
--- a/Mage.Sets/src/mage/cards/b/BeaconOfImmortality.java
+++ b/Mage.Sets/src/mage/cards/b/BeaconOfImmortality.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class BeaconOfImmortality extends CardImpl {
+public final class BeaconOfImmortality extends CardImpl {
public BeaconOfImmortality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BeaconOfTomorrows.java b/Mage.Sets/src/mage/cards/b/BeaconOfTomorrows.java
index e9928c11934..196ac4d4a15 100644
--- a/Mage.Sets/src/mage/cards/b/BeaconOfTomorrows.java
+++ b/Mage.Sets/src/mage/cards/b/BeaconOfTomorrows.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class BeaconOfTomorrows extends CardImpl {
+public final class BeaconOfTomorrows extends CardImpl {
public BeaconOfTomorrows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BeaconOfUnrest.java b/Mage.Sets/src/mage/cards/b/BeaconOfUnrest.java
index bb76c611b59..a8c164570d6 100644
--- a/Mage.Sets/src/mage/cards/b/BeaconOfUnrest.java
+++ b/Mage.Sets/src/mage/cards/b/BeaconOfUnrest.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Loki
*/
-public class BeaconOfUnrest extends CardImpl {
+public final class BeaconOfUnrest extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact or creature card from a graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BearCub.java b/Mage.Sets/src/mage/cards/b/BearCub.java
index cd8a3a3bb68..4456a601d97 100644
--- a/Mage.Sets/src/mage/cards/b/BearCub.java
+++ b/Mage.Sets/src/mage/cards/b/BearCub.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class BearCub extends CardImpl {
+public final class BearCub extends CardImpl {
public BearCub(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BearUmbra.java b/Mage.Sets/src/mage/cards/b/BearUmbra.java
index abab62af810..c62fa841bb3 100644
--- a/Mage.Sets/src/mage/cards/b/BearUmbra.java
+++ b/Mage.Sets/src/mage/cards/b/BearUmbra.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class BearUmbra extends CardImpl {
+public final class BearUmbra extends CardImpl {
public BearUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BearerOfOverwhelmingTruths.java b/Mage.Sets/src/mage/cards/b/BearerOfOverwhelmingTruths.java
index 1277ba5002d..41880abc181 100644
--- a/Mage.Sets/src/mage/cards/b/BearerOfOverwhelmingTruths.java
+++ b/Mage.Sets/src/mage/cards/b/BearerOfOverwhelmingTruths.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class BearerOfOverwhelmingTruths extends CardImpl {
+public final class BearerOfOverwhelmingTruths extends CardImpl {
public BearerOfOverwhelmingTruths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/b/BearerOfSilence.java b/Mage.Sets/src/mage/cards/b/BearerOfSilence.java
index 7c5553f1c56..707fa875a46 100644
--- a/Mage.Sets/src/mage/cards/b/BearerOfSilence.java
+++ b/Mage.Sets/src/mage/cards/b/BearerOfSilence.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class BearerOfSilence extends CardImpl {
+public final class BearerOfSilence extends CardImpl {
public BearerOfSilence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BearerOfTheHeavens.java b/Mage.Sets/src/mage/cards/b/BearerOfTheHeavens.java
index 3a5613874f1..775149da9fa 100644
--- a/Mage.Sets/src/mage/cards/b/BearerOfTheHeavens.java
+++ b/Mage.Sets/src/mage/cards/b/BearerOfTheHeavens.java
@@ -45,7 +45,7 @@ import mage.filter.FilterPermanent;
*
* @author LevelX2
*/
-public class BearerOfTheHeavens extends CardImpl {
+public final class BearerOfTheHeavens extends CardImpl {
public BearerOfTheHeavens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BearsCompanion.java b/Mage.Sets/src/mage/cards/b/BearsCompanion.java
index 1c5e2a6fcb2..ef01733b305 100644
--- a/Mage.Sets/src/mage/cards/b/BearsCompanion.java
+++ b/Mage.Sets/src/mage/cards/b/BearsCompanion.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.BearsCompanionBearToken;
*
* @author LevelX2
*/
-public class BearsCompanion extends CardImpl {
+public final class BearsCompanion extends CardImpl {
public BearsCompanion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Bearscape.java b/Mage.Sets/src/mage/cards/b/Bearscape.java
index 1c32c4c27fa..1c79b1d5ca9 100644
--- a/Mage.Sets/src/mage/cards/b/Bearscape.java
+++ b/Mage.Sets/src/mage/cards/b/Bearscape.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class Bearscape extends CardImpl {
+public final class Bearscape extends CardImpl {
public Bearscape(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BeastAttack.java b/Mage.Sets/src/mage/cards/b/BeastAttack.java
index 953e8d526f2..e58c9569026 100644
--- a/Mage.Sets/src/mage/cards/b/BeastAttack.java
+++ b/Mage.Sets/src/mage/cards/b/BeastAttack.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.BeastToken2;
*
* @author cbt33
*/
-public class BeastAttack extends CardImpl {
+public final class BeastAttack extends CardImpl {
public BeastAttack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BeastHunt.java b/Mage.Sets/src/mage/cards/b/BeastHunt.java
index f59d9c7a5e2..c79074ff44a 100644
--- a/Mage.Sets/src/mage/cards/b/BeastHunt.java
+++ b/Mage.Sets/src/mage/cards/b/BeastHunt.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author North
*/
-public class BeastHunt extends CardImpl {
+public final class BeastHunt extends CardImpl {
public BeastHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BeastOfBurden.java b/Mage.Sets/src/mage/cards/b/BeastOfBurden.java
index 7383ff9b266..202b9471fe8 100644
--- a/Mage.Sets/src/mage/cards/b/BeastOfBurden.java
+++ b/Mage.Sets/src/mage/cards/b/BeastOfBurden.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Plopman
*/
-public class BeastOfBurden extends CardImpl {
+public final class BeastOfBurden extends CardImpl {
public BeastOfBurden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/b/BeastWalkers.java b/Mage.Sets/src/mage/cards/b/BeastWalkers.java
index 2b5ab973510..75b0c0361e6 100644
--- a/Mage.Sets/src/mage/cards/b/BeastWalkers.java
+++ b/Mage.Sets/src/mage/cards/b/BeastWalkers.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author L_J
*/
-public class BeastWalkers extends CardImpl {
+public final class BeastWalkers extends CardImpl {
public BeastWalkers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BeastWithin.java b/Mage.Sets/src/mage/cards/b/BeastWithin.java
index 09e3901cefc..60ebbfb924c 100644
--- a/Mage.Sets/src/mage/cards/b/BeastWithin.java
+++ b/Mage.Sets/src/mage/cards/b/BeastWithin.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author North, Loki
*/
-public class BeastWithin extends CardImpl {
+public final class BeastWithin extends CardImpl {
public BeastWithin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BeastbreakerOfBalaGed.java b/Mage.Sets/src/mage/cards/b/BeastbreakerOfBalaGed.java
index 01dd8b8b0f8..8aa2f83d771 100644
--- a/Mage.Sets/src/mage/cards/b/BeastbreakerOfBalaGed.java
+++ b/Mage.Sets/src/mage/cards/b/BeastbreakerOfBalaGed.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*
* @author North, noxx
*/
-public class BeastbreakerOfBalaGed extends LevelerCard {
+public final class BeastbreakerOfBalaGed extends LevelerCard {
public BeastbreakerOfBalaGed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BeastcallerSavant.java b/Mage.Sets/src/mage/cards/b/BeastcallerSavant.java
index 3165c7efbfd..6682608c44a 100644
--- a/Mage.Sets/src/mage/cards/b/BeastcallerSavant.java
+++ b/Mage.Sets/src/mage/cards/b/BeastcallerSavant.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterCreatureSpell;
*
* @author fireshoes
*/
-public class BeastcallerSavant extends CardImpl {
+public final class BeastcallerSavant extends CardImpl {
public BeastcallerSavant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BeastmasterAscension.java b/Mage.Sets/src/mage/cards/b/BeastmasterAscension.java
index e162d7ebc53..0747ee5d7f2 100644
--- a/Mage.Sets/src/mage/cards/b/BeastmasterAscension.java
+++ b/Mage.Sets/src/mage/cards/b/BeastmasterAscension.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BeastmasterAscension extends CardImpl {
+public final class BeastmasterAscension extends CardImpl {
public BeastmasterAscension(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BeastmastersMagemark.java b/Mage.Sets/src/mage/cards/b/BeastmastersMagemark.java
index d507296212f..8e7f69ffa5d 100644
--- a/Mage.Sets/src/mage/cards/b/BeastmastersMagemark.java
+++ b/Mage.Sets/src/mage/cards/b/BeastmastersMagemark.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Markedagain
*/
-public class BeastmastersMagemark extends CardImpl {
+public final class BeastmastersMagemark extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control that are enchanted");
diff --git a/Mage.Sets/src/mage/cards/b/BeastsOfBogardan.java b/Mage.Sets/src/mage/cards/b/BeastsOfBogardan.java
index 4de4c33ac30..94ba7401233 100644
--- a/Mage.Sets/src/mage/cards/b/BeastsOfBogardan.java
+++ b/Mage.Sets/src/mage/cards/b/BeastsOfBogardan.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author nigelzor
*/
-public class BeastsOfBogardan extends CardImpl {
+public final class BeastsOfBogardan extends CardImpl {
private static final FilterPermanent controlFilter = new FilterPermanent("nontoken white permanent");
diff --git a/Mage.Sets/src/mage/cards/b/BeckCall.java b/Mage.Sets/src/mage/cards/b/BeckCall.java
index b0e823795c4..f033b8440fa 100644
--- a/Mage.Sets/src/mage/cards/b/BeckCall.java
+++ b/Mage.Sets/src/mage/cards/b/BeckCall.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.BirdToken;
-public class BeckCall extends SplitCard {
+public final class BeckCall extends SplitCard {
public BeckCall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}{U}", "{4}{W}{U}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/b/BeckonApparition.java b/Mage.Sets/src/mage/cards/b/BeckonApparition.java
index bea453e9cd1..dc0637c9a7c 100644
--- a/Mage.Sets/src/mage/cards/b/BeckonApparition.java
+++ b/Mage.Sets/src/mage/cards/b/BeckonApparition.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInGraveyard;
/**
* @author Loki
*/
-public class BeckonApparition extends CardImpl {
+public final class BeckonApparition extends CardImpl {
public BeckonApparition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W/B}");
diff --git a/Mage.Sets/src/mage/cards/b/BecomeImmense.java b/Mage.Sets/src/mage/cards/b/BecomeImmense.java
index 3f60e9f9628..e68a7b3ed47 100644
--- a/Mage.Sets/src/mage/cards/b/BecomeImmense.java
+++ b/Mage.Sets/src/mage/cards/b/BecomeImmense.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BecomeImmense extends CardImpl {
+public final class BecomeImmense extends CardImpl {
public BecomeImmense(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Bedlam.java b/Mage.Sets/src/mage/cards/b/Bedlam.java
index ccee7bc212a..dc19085d528 100644
--- a/Mage.Sets/src/mage/cards/b/Bedlam.java
+++ b/Mage.Sets/src/mage/cards/b/Bedlam.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author Backfir3
*/
-public class Bedlam extends CardImpl {
+public final class Bedlam extends CardImpl {
public Bedlam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BedlamReveler.java b/Mage.Sets/src/mage/cards/b/BedlamReveler.java
index a212bd6f157..deccade15aa 100644
--- a/Mage.Sets/src/mage/cards/b/BedlamReveler.java
+++ b/Mage.Sets/src/mage/cards/b/BedlamReveler.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterInstantOrSorceryCard;
*
* @author fireshoes
*/
-public class BedlamReveler extends CardImpl {
+public final class BedlamReveler extends CardImpl {
public BedlamReveler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BeeSting.java b/Mage.Sets/src/mage/cards/b/BeeSting.java
index b9bb37fd651..ea6a0f536e8 100644
--- a/Mage.Sets/src/mage/cards/b/BeeSting.java
+++ b/Mage.Sets/src/mage/cards/b/BeeSting.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author ilcartographer
*/
-public class BeeSting extends CardImpl {
+public final class BeeSting extends CardImpl {
public BeeSting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BeetlebackChief.java b/Mage.Sets/src/mage/cards/b/BeetlebackChief.java
index d80cd60facf..24d1d259d62 100644
--- a/Mage.Sets/src/mage/cards/b/BeetlebackChief.java
+++ b/Mage.Sets/src/mage/cards/b/BeetlebackChief.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author LevelX2
*/
-public class BeetlebackChief extends CardImpl {
+public final class BeetlebackChief extends CardImpl {
public BeetlebackChief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BeetleformMage.java b/Mage.Sets/src/mage/cards/b/BeetleformMage.java
index cbbefff5675..f4d2355a632 100644
--- a/Mage.Sets/src/mage/cards/b/BeetleformMage.java
+++ b/Mage.Sets/src/mage/cards/b/BeetleformMage.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*/
-public class BeetleformMage extends CardImpl {
+public final class BeetleformMage extends CardImpl {
public BeetleformMage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/Befoul.java b/Mage.Sets/src/mage/cards/b/Befoul.java
index 5ab6932268b..2825bd82bf2 100644
--- a/Mage.Sets/src/mage/cards/b/Befoul.java
+++ b/Mage.Sets/src/mage/cards/b/Befoul.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX
*/
-public class Befoul extends CardImpl {
+public final class Befoul extends CardImpl {
static final FilterPermanent filter = new FilterPermanent("land or nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/b/Befuddle.java b/Mage.Sets/src/mage/cards/b/Befuddle.java
index 11e2933f9b7..afa2af70b24 100644
--- a/Mage.Sets/src/mage/cards/b/Befuddle.java
+++ b/Mage.Sets/src/mage/cards/b/Befuddle.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JRHerlehy
*/
-public class Befuddle extends CardImpl {
+public final class Befuddle extends CardImpl {
public Befuddle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BeguilerOfWills.java b/Mage.Sets/src/mage/cards/b/BeguilerOfWills.java
index b46dd40ed57..4ee74124fa5 100644
--- a/Mage.Sets/src/mage/cards/b/BeguilerOfWills.java
+++ b/Mage.Sets/src/mage/cards/b/BeguilerOfWills.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class BeguilerOfWills extends CardImpl {
+public final class BeguilerOfWills extends CardImpl {
public BeguilerOfWills(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BehemothSledge.java b/Mage.Sets/src/mage/cards/b/BehemothSledge.java
index 65a51d45f6f..1abe5d13bfa 100644
--- a/Mage.Sets/src/mage/cards/b/BehemothSledge.java
+++ b/Mage.Sets/src/mage/cards/b/BehemothSledge.java
@@ -44,7 +44,7 @@ import mage.constants.*;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BehemothSledge extends CardImpl {
+public final class BehemothSledge extends CardImpl {
public BehemothSledge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BehemothsHerald.java b/Mage.Sets/src/mage/cards/b/BehemothsHerald.java
index 92431456266..6ed5f179525 100644
--- a/Mage.Sets/src/mage/cards/b/BehemothsHerald.java
+++ b/Mage.Sets/src/mage/cards/b/BehemothsHerald.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class BehemothsHerald extends CardImpl {
+public final class BehemothsHerald extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Godsire");
private static final FilterControlledCreaturePermanent filterRed = new FilterControlledCreaturePermanent("a red creature");
diff --git a/Mage.Sets/src/mage/cards/b/BehindTheScenes.java b/Mage.Sets/src/mage/cards/b/BehindTheScenes.java
index 2433120f344..517e52c84ad 100644
--- a/Mage.Sets/src/mage/cards/b/BehindTheScenes.java
+++ b/Mage.Sets/src/mage/cards/b/BehindTheScenes.java
@@ -45,7 +45,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author fireshoes
*/
-public class BehindTheScenes extends CardImpl {
+public final class BehindTheScenes extends CardImpl {
public BehindTheScenes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BeholdTheBeyond.java b/Mage.Sets/src/mage/cards/b/BeholdTheBeyond.java
index b688c86744a..737e859c16f 100644
--- a/Mage.Sets/src/mage/cards/b/BeholdTheBeyond.java
+++ b/Mage.Sets/src/mage/cards/b/BeholdTheBeyond.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class BeholdTheBeyond extends CardImpl {
+public final class BeholdTheBeyond extends CardImpl {
public BeholdTheBeyond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BelbesArmor.java b/Mage.Sets/src/mage/cards/b/BelbesArmor.java
index 0f722765885..400c7e1adb1 100644
--- a/Mage.Sets/src/mage/cards/b/BelbesArmor.java
+++ b/Mage.Sets/src/mage/cards/b/BelbesArmor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class BelbesArmor extends CardImpl {
+public final class BelbesArmor extends CardImpl {
public BelbesArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BelbesPercher.java b/Mage.Sets/src/mage/cards/b/BelbesPercher.java
index 4155178ad61..64108d6007e 100644
--- a/Mage.Sets/src/mage/cards/b/BelbesPercher.java
+++ b/Mage.Sets/src/mage/cards/b/BelbesPercher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class BelbesPercher extends CardImpl {
+public final class BelbesPercher extends CardImpl {
public BelbesPercher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BelbesPortal.java b/Mage.Sets/src/mage/cards/b/BelbesPortal.java
index c061bf88c81..2f3255223e5 100644
--- a/Mage.Sets/src/mage/cards/b/BelbesPortal.java
+++ b/Mage.Sets/src/mage/cards/b/BelbesPortal.java
@@ -34,7 +34,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.ChooseCreatureTypeEffect;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ChosenSubtypePredicate;
*
* @author andyfries
*/
-public class BelbesPortal extends CardImpl {
+public final class BelbesPortal extends CardImpl {
public BelbesPortal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
@@ -58,7 +58,7 @@ public class BelbesPortal extends CardImpl {
FilterCreatureCard filter = new FilterCreatureCard("a creature card of the chosen type");
filter.add(new ChosenSubtypePredicate(this.getId()));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new PutPermanentOnBattlefieldEffect(filter),
+ new PutCardFromHandOntoBattlefieldEffect(filter),
new ManaCostsImpl("{3}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/b/BelfrySpirit.java b/Mage.Sets/src/mage/cards/b/BelfrySpirit.java
index c9e47aee2ae..d135706454a 100644
--- a/Mage.Sets/src/mage/cards/b/BelfrySpirit.java
+++ b/Mage.Sets/src/mage/cards/b/BelfrySpirit.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.BatToken;
*
* @author LevelX2
*/
-public class BelfrySpirit extends CardImpl {
+public final class BelfrySpirit extends CardImpl {
public BelfrySpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BelligerentBrontodon.java b/Mage.Sets/src/mage/cards/b/BelligerentBrontodon.java
index df036bce3bf..18b5a53cba3 100644
--- a/Mage.Sets/src/mage/cards/b/BelligerentBrontodon.java
+++ b/Mage.Sets/src/mage/cards/b/BelligerentBrontodon.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author TheElk801
*/
-public class BelligerentBrontodon extends CardImpl {
+public final class BelligerentBrontodon extends CardImpl {
public BelligerentBrontodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BelligerentHatchling.java b/Mage.Sets/src/mage/cards/b/BelligerentHatchling.java
index 72f5d62b123..7c7de31d99d 100644
--- a/Mage.Sets/src/mage/cards/b/BelligerentHatchling.java
+++ b/Mage.Sets/src/mage/cards/b/BelligerentHatchling.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author Loki
*/
-public class BelligerentHatchling extends CardImpl {
+public final class BelligerentHatchling extends CardImpl {
private static final FilterSpell filterRedSpell = new FilterSpell("a red spell");
private static final FilterSpell filterWhiteSpell = new FilterSpell("a white spell");
diff --git a/Mage.Sets/src/mage/cards/b/BelligerentSliver.java b/Mage.Sets/src/mage/cards/b/BelligerentSliver.java
index 02af27ab0ce..eea70ae81d7 100644
--- a/Mage.Sets/src/mage/cards/b/BelligerentSliver.java
+++ b/Mage.Sets/src/mage/cards/b/BelligerentSliver.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Quercitron
*/
-public class BelligerentSliver extends CardImpl {
+public final class BelligerentSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver creatures you control");
diff --git a/Mage.Sets/src/mage/cards/b/BelligerentWhiptail.java b/Mage.Sets/src/mage/cards/b/BelligerentWhiptail.java
index 747f64a82af..8dc206009c7 100644
--- a/Mage.Sets/src/mage/cards/b/BelligerentWhiptail.java
+++ b/Mage.Sets/src/mage/cards/b/BelligerentWhiptail.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BelligerentWhiptail extends CardImpl {
+public final class BelligerentWhiptail extends CardImpl {
public BelligerentWhiptail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BellowingAegisaur.java b/Mage.Sets/src/mage/cards/b/BellowingAegisaur.java
index e7dbc3daa49..16a3906fc91 100644
--- a/Mage.Sets/src/mage/cards/b/BellowingAegisaur.java
+++ b/Mage.Sets/src/mage/cards/b/BellowingAegisaur.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class BellowingAegisaur extends CardImpl {
+public final class BellowingAegisaur extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature you control");
diff --git a/Mage.Sets/src/mage/cards/b/BellowingFiend.java b/Mage.Sets/src/mage/cards/b/BellowingFiend.java
index 5d7e6289828..2913c17f11a 100644
--- a/Mage.Sets/src/mage/cards/b/BellowingFiend.java
+++ b/Mage.Sets/src/mage/cards/b/BellowingFiend.java
@@ -49,7 +49,7 @@ import mage.players.Player;
* @author LoneFox
*/
-public class BellowingFiend extends CardImpl {
+public final class BellowingFiend extends CardImpl {
public BellowingFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BellowingSaddlebrute.java b/Mage.Sets/src/mage/cards/b/BellowingSaddlebrute.java
index eccf4bda2dd..f20466dd171 100644
--- a/Mage.Sets/src/mage/cards/b/BellowingSaddlebrute.java
+++ b/Mage.Sets/src/mage/cards/b/BellowingSaddlebrute.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class BellowingSaddlebrute extends CardImpl {
+public final class BellowingSaddlebrute extends CardImpl {
public BellowingSaddlebrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BellowingTanglewurm.java b/Mage.Sets/src/mage/cards/b/BellowingTanglewurm.java
index 919dc30f0ea..5a2fb42d889 100644
--- a/Mage.Sets/src/mage/cards/b/BellowingTanglewurm.java
+++ b/Mage.Sets/src/mage/cards/b/BellowingTanglewurm.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class BellowingTanglewurm extends CardImpl {
+public final class BellowingTanglewurm extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("green creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BellowsLizard.java b/Mage.Sets/src/mage/cards/b/BellowsLizard.java
index abc4c875356..bea52a71e2f 100644
--- a/Mage.Sets/src/mage/cards/b/BellowsLizard.java
+++ b/Mage.Sets/src/mage/cards/b/BellowsLizard.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class BellowsLizard extends CardImpl {
+public final class BellowsLizard extends CardImpl {
public BellowsLizard (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BelltollDragon.java b/Mage.Sets/src/mage/cards/b/BelltollDragon.java
index 8f62f096aba..724928445a2 100644
--- a/Mage.Sets/src/mage/cards/b/BelltollDragon.java
+++ b/Mage.Sets/src/mage/cards/b/BelltollDragon.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class BelltollDragon extends CardImpl {
+public final class BelltollDragon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other Dragon creature you control");
diff --git a/Mage.Sets/src/mage/cards/b/BelltowerSphinx.java b/Mage.Sets/src/mage/cards/b/BelltowerSphinx.java
index 362bed3db15..defe8c74b5c 100644
--- a/Mage.Sets/src/mage/cards/b/BelltowerSphinx.java
+++ b/Mage.Sets/src/mage/cards/b/BelltowerSphinx.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author nantuko
*/
-public class BelltowerSphinx extends CardImpl {
+public final class BelltowerSphinx extends CardImpl {
public BelltowerSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BelovedChaplain.java b/Mage.Sets/src/mage/cards/b/BelovedChaplain.java
index 34ef93bfbc1..f5f4161495e 100644
--- a/Mage.Sets/src/mage/cards/b/BelovedChaplain.java
+++ b/Mage.Sets/src/mage/cards/b/BelovedChaplain.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author cbt33, BetaSteward (Black Knight)
*/
-public class BelovedChaplain extends CardImpl {
+public final class BelovedChaplain extends CardImpl {
static final FilterCard filter = new FilterCard("creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java b/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java
index 3e2550b45fc..111395a6901 100644
--- a/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java
+++ b/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java
@@ -51,7 +51,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class BenBenAkkiHermit extends CardImpl {
+public final class BenBenAkkiHermit extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("untapped Mountain you control");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishCavalry.java b/Mage.Sets/src/mage/cards/b/BenalishCavalry.java
index 19a9b588897..34996e08ab2 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishCavalry.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishCavalry.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class BenalishCavalry extends CardImpl {
+public final class BenalishCavalry extends CardImpl {
public BenalishCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishCommander.java b/Mage.Sets/src/mage/cards/b/BenalishCommander.java
index 2d56d1e2f3f..effe6ab61aa 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishCommander.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishCommander.java
@@ -54,7 +54,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author LevelX2
*/
-public class BenalishCommander extends CardImpl {
+public final class BenalishCommander extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Soldiers you control");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishEmissary.java b/Mage.Sets/src/mage/cards/b/BenalishEmissary.java
index e5f84a0857b..82cffa6ea4b 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishEmissary.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishEmissary.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
* @author LoneFox
*/
-public class BenalishEmissary extends CardImpl {
+public final class BenalishEmissary extends CardImpl {
public BenalishEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishHeralds.java b/Mage.Sets/src/mage/cards/b/BenalishHeralds.java
index 1d52ca5a79a..70e49c250d6 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishHeralds.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishHeralds.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class BenalishHeralds extends CardImpl {
+public final class BenalishHeralds extends CardImpl {
public BenalishHeralds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishHero.java b/Mage.Sets/src/mage/cards/b/BenalishHero.java
index 0217ebf2b49..457ab517d90 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishHero.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishHero.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class BenalishHero extends CardImpl {
+public final class BenalishHero extends CardImpl {
public BenalishHero (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishHonorGuard.java b/Mage.Sets/src/mage/cards/b/BenalishHonorGuard.java
index eccc7ef5305..b7f556fa989 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishHonorGuard.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishHonorGuard.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author TheElk801
*/
-public class BenalishHonorGuard extends CardImpl {
+public final class BenalishHonorGuard extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("legendary creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BenalishInfantry.java b/Mage.Sets/src/mage/cards/b/BenalishInfantry.java
index d528ee4d296..0c323cbae8e 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishInfantry.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishInfantry.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class BenalishInfantry extends CardImpl {
+public final class BenalishInfantry extends CardImpl {
public BenalishInfantry (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishKnight.java b/Mage.Sets/src/mage/cards/b/BenalishKnight.java
index 965a03bbc99..585892e4132 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishKnight.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishKnight.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BenalishKnight extends CardImpl {
+public final class BenalishKnight extends CardImpl {
public BenalishKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishLancer.java b/Mage.Sets/src/mage/cards/b/BenalishLancer.java
index a594577251a..3df812875c1 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishLancer.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishLancer.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author FenrisulfrX
*/
-public class BenalishLancer extends CardImpl {
+public final class BenalishLancer extends CardImpl {
public BenalishLancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishMarshal.java b/Mage.Sets/src/mage/cards/b/BenalishMarshal.java
index c89f1273e1b..086ecf88aba 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishMarshal.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishMarshal.java
@@ -12,7 +12,7 @@ import mage.constants.Zone;
import java.util.UUID;
-public class BenalishMarshal extends CardImpl {
+public final class BenalishMarshal extends CardImpl {
public BenalishMarshal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishMissionary.java b/Mage.Sets/src/mage/cards/b/BenalishMissionary.java
index b7928566b2c..2351c6f16e4 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishMissionary.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishMissionary.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class BenalishMissionary extends CardImpl {
+public final class BenalishMissionary extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blocked creature");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishTrapper.java b/Mage.Sets/src/mage/cards/b/BenalishTrapper.java
index 5e118cc4c90..5e807adeedf 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishTrapper.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishTrapper.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BenalishTrapper extends CardImpl {
+public final class BenalishTrapper extends CardImpl {
public BenalishTrapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenalishVeteran.java b/Mage.Sets/src/mage/cards/b/BenalishVeteran.java
index 62d49bf7064..a8ca73dadca 100644
--- a/Mage.Sets/src/mage/cards/b/BenalishVeteran.java
+++ b/Mage.Sets/src/mage/cards/b/BenalishVeteran.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class BenalishVeteran extends CardImpl {
+public final class BenalishVeteran extends CardImpl {
public BenalishVeteran(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BeneathTheSands.java b/Mage.Sets/src/mage/cards/b/BeneathTheSands.java
index 22a6c604eed..065ffd7aaad 100644
--- a/Mage.Sets/src/mage/cards/b/BeneathTheSands.java
+++ b/Mage.Sets/src/mage/cards/b/BeneathTheSands.java
@@ -42,13 +42,13 @@ import java.util.UUID;
*
* @author Archer262
*/
-public class BeneathTheSands extends CardImpl {
+public final class BeneathTheSands extends CardImpl {
public BeneathTheSands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true));
// Cycling {2}
this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}")));
diff --git a/Mage.Sets/src/mage/cards/b/BenedictionOfMoons.java b/Mage.Sets/src/mage/cards/b/BenedictionOfMoons.java
index b80ee363de8..152b9d9a3d3 100644
--- a/Mage.Sets/src/mage/cards/b/BenedictionOfMoons.java
+++ b/Mage.Sets/src/mage/cards/b/BenedictionOfMoons.java
@@ -42,7 +42,7 @@ import mage.game.Game;
*
* @author Styxo
*/
-public class BenedictionOfMoons extends CardImpl {
+public final class BenedictionOfMoons extends CardImpl {
public BenedictionOfMoons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenefactionOfRhonas.java b/Mage.Sets/src/mage/cards/b/BenefactionOfRhonas.java
index d5728f154aa..b2acae4fc19 100644
--- a/Mage.Sets/src/mage/cards/b/BenefactionOfRhonas.java
+++ b/Mage.Sets/src/mage/cards/b/BenefactionOfRhonas.java
@@ -49,7 +49,7 @@ import mage.target.TargetCard;
*
* @author fireshoes
*/
-public class BenefactionOfRhonas extends CardImpl {
+public final class BenefactionOfRhonas extends CardImpl {
public BenefactionOfRhonas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java b/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java
index 109c36b261a..ae5371195ef 100644
--- a/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java
+++ b/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class BenefactorsDraught extends CardImpl {
+public final class BenefactorsDraught extends CardImpl {
public BenefactorsDraught(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BenevolentAncestor.java b/Mage.Sets/src/mage/cards/b/BenevolentAncestor.java
index 6294f275356..00355fe9cb5 100644
--- a/Mage.Sets/src/mage/cards/b/BenevolentAncestor.java
+++ b/Mage.Sets/src/mage/cards/b/BenevolentAncestor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class BenevolentAncestor extends CardImpl {
+public final class BenevolentAncestor extends CardImpl {
public BenevolentAncestor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenevolentBodyguard.java b/Mage.Sets/src/mage/cards/b/BenevolentBodyguard.java
index 069744f1f85..4b9b9826da8 100644
--- a/Mage.Sets/src/mage/cards/b/BenevolentBodyguard.java
+++ b/Mage.Sets/src/mage/cards/b/BenevolentBodyguard.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class BenevolentBodyguard extends CardImpl {
+public final class BenevolentBodyguard extends CardImpl {
public BenevolentBodyguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenevolentOffering.java b/Mage.Sets/src/mage/cards/b/BenevolentOffering.java
index f1667725642..994bc9df95b 100644
--- a/Mage.Sets/src/mage/cards/b/BenevolentOffering.java
+++ b/Mage.Sets/src/mage/cards/b/BenevolentOffering.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class BenevolentOffering extends CardImpl {
+public final class BenevolentOffering extends CardImpl {
public BenevolentOffering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BenthicBehemoth.java b/Mage.Sets/src/mage/cards/b/BenthicBehemoth.java
index 32e3aafb1d7..d229392ff9e 100644
--- a/Mage.Sets/src/mage/cards/b/BenthicBehemoth.java
+++ b/Mage.Sets/src/mage/cards/b/BenthicBehemoth.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BenthicBehemoth extends CardImpl {
+public final class BenthicBehemoth extends CardImpl {
public BenthicBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BenthicDjinn.java b/Mage.Sets/src/mage/cards/b/BenthicDjinn.java
index 4f3fe05488e..5dbdec9c6b8 100644
--- a/Mage.Sets/src/mage/cards/b/BenthicDjinn.java
+++ b/Mage.Sets/src/mage/cards/b/BenthicDjinn.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class BenthicDjinn extends CardImpl {
+public final class BenthicDjinn extends CardImpl {
public BenthicDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BenthicGiant.java b/Mage.Sets/src/mage/cards/b/BenthicGiant.java
index 57a3891e524..4921551cb3f 100644
--- a/Mage.Sets/src/mage/cards/b/BenthicGiant.java
+++ b/Mage.Sets/src/mage/cards/b/BenthicGiant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BenthicGiant extends CardImpl {
+public final class BenthicGiant extends CardImpl {
public BenthicGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BenthicInfiltrator.java b/Mage.Sets/src/mage/cards/b/BenthicInfiltrator.java
index 4dc6bde2f66..71cf4c31deb 100644
--- a/Mage.Sets/src/mage/cards/b/BenthicInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/b/BenthicInfiltrator.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class BenthicInfiltrator extends CardImpl {
+public final class BenthicInfiltrator extends CardImpl {
public BenthicInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/Benthicore.java b/Mage.Sets/src/mage/cards/b/Benthicore.java
index 8cb12084847..525a0b6340a 100644
--- a/Mage.Sets/src/mage/cards/b/Benthicore.java
+++ b/Mage.Sets/src/mage/cards/b/Benthicore.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class Benthicore extends CardImpl {
+public final class Benthicore extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Merfolk you control");
diff --git a/Mage.Sets/src/mage/cards/b/Bequeathal.java b/Mage.Sets/src/mage/cards/b/Bequeathal.java
index e1c6f12f92f..241914d2795 100644
--- a/Mage.Sets/src/mage/cards/b/Bequeathal.java
+++ b/Mage.Sets/src/mage/cards/b/Bequeathal.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Bequeathal extends CardImpl {
+public final class Bequeathal extends CardImpl {
public Bequeathal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Bereavement.java b/Mage.Sets/src/mage/cards/b/Bereavement.java
index b1a25c167ea..ab038a3b16e 100644
--- a/Mage.Sets/src/mage/cards/b/Bereavement.java
+++ b/Mage.Sets/src/mage/cards/b/Bereavement.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Backfir3
*/
-public class Bereavement extends CardImpl {
+public final class Bereavement extends CardImpl {
public Bereavement(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Berserk.java b/Mage.Sets/src/mage/cards/b/Berserk.java
index f4f5de11c86..9aba0926b51 100644
--- a/Mage.Sets/src/mage/cards/b/Berserk.java
+++ b/Mage.Sets/src/mage/cards/b/Berserk.java
@@ -56,7 +56,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author LevelX2
*/
-public class Berserk extends CardImpl {
+public final class Berserk extends CardImpl {
public Berserk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BerserkMurlodont.java b/Mage.Sets/src/mage/cards/b/BerserkMurlodont.java
index c4727a64b8a..33f3acdfbed 100644
--- a/Mage.Sets/src/mage/cards/b/BerserkMurlodont.java
+++ b/Mage.Sets/src/mage/cards/b/BerserkMurlodont.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Markedagain
*/
-public class BerserkMurlodont extends CardImpl {
+public final class BerserkMurlodont extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a Beast");
diff --git a/Mage.Sets/src/mage/cards/b/BerserkersOfBloodRidge.java b/Mage.Sets/src/mage/cards/b/BerserkersOfBloodRidge.java
index b28d7602959..702efa6326a 100644
--- a/Mage.Sets/src/mage/cards/b/BerserkersOfBloodRidge.java
+++ b/Mage.Sets/src/mage/cards/b/BerserkersOfBloodRidge.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BerserkersOfBloodRidge extends CardImpl {
+public final class BerserkersOfBloodRidge extends CardImpl {
public BerserkersOfBloodRidge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BerserkersOnslaught.java b/Mage.Sets/src/mage/cards/b/BerserkersOnslaught.java
index 03d1faa1f3a..e70e0be8f86 100644
--- a/Mage.Sets/src/mage/cards/b/BerserkersOnslaught.java
+++ b/Mage.Sets/src/mage/cards/b/BerserkersOnslaught.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author LevelX2
*/
-public class BerserkersOnslaught extends CardImpl {
+public final class BerserkersOnslaught extends CardImpl {
public BerserkersOnslaught(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BeseechTheQueen.java b/Mage.Sets/src/mage/cards/b/BeseechTheQueen.java
index a66e6e28f21..99fef1b9e5f 100644
--- a/Mage.Sets/src/mage/cards/b/BeseechTheQueen.java
+++ b/Mage.Sets/src/mage/cards/b/BeseechTheQueen.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class BeseechTheQueen extends CardImpl {
+public final class BeseechTheQueen extends CardImpl {
private static final FilterCard filter = new FilterCard("card with converted mana cost less than or equal to the number of lands you control");
static{
diff --git a/Mage.Sets/src/mage/cards/b/Besmirch.java b/Mage.Sets/src/mage/cards/b/Besmirch.java
index ba839ca85a2..dfa66c5983f 100644
--- a/Mage.Sets/src/mage/cards/b/Besmirch.java
+++ b/Mage.Sets/src/mage/cards/b/Besmirch.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.TargetPointer;
*
* @author TheElk801
*/
-public class Besmirch extends CardImpl {
+public final class Besmirch extends CardImpl {
public Besmirch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BestialFury.java b/Mage.Sets/src/mage/cards/b/BestialFury.java
index a1217078364..7054f40eb76 100644
--- a/Mage.Sets/src/mage/cards/b/BestialFury.java
+++ b/Mage.Sets/src/mage/cards/b/BestialFury.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author 18ths
*/
-public class BestialFury extends CardImpl {
+public final class BestialFury extends CardImpl {
public BestialFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BestialMenace.java b/Mage.Sets/src/mage/cards/b/BestialMenace.java
index 1cd6142ab17..335588c2cc7 100644
--- a/Mage.Sets/src/mage/cards/b/BestialMenace.java
+++ b/Mage.Sets/src/mage/cards/b/BestialMenace.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.WolfToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BestialMenace extends CardImpl {
+public final class BestialMenace extends CardImpl {
public BestialMenace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Betrayal.java b/Mage.Sets/src/mage/cards/b/Betrayal.java
index 827e9d0b1a1..f778992a830 100644
--- a/Mage.Sets/src/mage/cards/b/Betrayal.java
+++ b/Mage.Sets/src/mage/cards/b/Betrayal.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Betrayal extends CardImpl {
+public final class Betrayal extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/b/BetrayalOfFlesh.java b/Mage.Sets/src/mage/cards/b/BetrayalOfFlesh.java
index 07dc06d0b4d..d51ccc776e7 100644
--- a/Mage.Sets/src/mage/cards/b/BetrayalOfFlesh.java
+++ b/Mage.Sets/src/mage/cards/b/BetrayalOfFlesh.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*
*/
-public class BetrayalOfFlesh extends CardImpl {
+public final class BetrayalOfFlesh extends CardImpl {
public BetrayalOfFlesh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Bewilder.java b/Mage.Sets/src/mage/cards/b/Bewilder.java
index 997d40151ec..8bda79bbd68 100644
--- a/Mage.Sets/src/mage/cards/b/Bewilder.java
+++ b/Mage.Sets/src/mage/cards/b/Bewilder.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Bewilder extends CardImpl {
+public final class Bewilder extends CardImpl {
public Bewilder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BibFortuna.java b/Mage.Sets/src/mage/cards/b/BibFortuna.java
index 5a19c769dbb..c8e74422fb7 100644
--- a/Mage.Sets/src/mage/cards/b/BibFortuna.java
+++ b/Mage.Sets/src/mage/cards/b/BibFortuna.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Styxo
*/
-public class BibFortuna extends CardImpl {
+public final class BibFortuna extends CardImpl {
public BibFortuna(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BidentOfThassa.java b/Mage.Sets/src/mage/cards/b/BidentOfThassa.java
index 32785b646d6..d60afe46d93 100644
--- a/Mage.Sets/src/mage/cards/b/BidentOfThassa.java
+++ b/Mage.Sets/src/mage/cards/b/BidentOfThassa.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class BidentOfThassa extends CardImpl {
+public final class BidentOfThassa extends CardImpl {
public BidentOfThassa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.ARTIFACT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/Bifurcate.java b/Mage.Sets/src/mage/cards/b/Bifurcate.java
index 26710436348..e47700bb8fc 100644
--- a/Mage.Sets/src/mage/cards/b/Bifurcate.java
+++ b/Mage.Sets/src/mage/cards/b/Bifurcate.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author ciaccona007
*/
-public class Bifurcate extends CardImpl {
+public final class Bifurcate extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BigGameHunter.java b/Mage.Sets/src/mage/cards/b/BigGameHunter.java
index 851c66f5b81..d8a3f3c2336 100644
--- a/Mage.Sets/src/mage/cards/b/BigGameHunter.java
+++ b/Mage.Sets/src/mage/cards/b/BigGameHunter.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BigGameHunter extends CardImpl {
+public final class BigGameHunter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/b/BileBlight.java b/Mage.Sets/src/mage/cards/b/BileBlight.java
index 62b65e92302..c93eaf94c91 100644
--- a/Mage.Sets/src/mage/cards/b/BileBlight.java
+++ b/Mage.Sets/src/mage/cards/b/BileBlight.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class BileBlight extends CardImpl {
+public final class BileBlight extends CardImpl {
public BileBlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BileUrchin.java b/Mage.Sets/src/mage/cards/b/BileUrchin.java
index 1fa32fb93ee..6abb7080747 100644
--- a/Mage.Sets/src/mage/cards/b/BileUrchin.java
+++ b/Mage.Sets/src/mage/cards/b/BileUrchin.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class BileUrchin extends CardImpl {
+public final class BileUrchin extends CardImpl {
public BileUrchin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Bind.java b/Mage.Sets/src/mage/cards/b/Bind.java
index 8d1b8c51be1..c862819f3fa 100644
--- a/Mage.Sets/src/mage/cards/b/Bind.java
+++ b/Mage.Sets/src/mage/cards/b/Bind.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetActivatedAbility;
* @author LoneFox
*/
-public class Bind extends CardImpl {
+public final class Bind extends CardImpl {
public Bind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BindingAgony.java b/Mage.Sets/src/mage/cards/b/BindingAgony.java
index ed35e218438..0a4a59a8f68 100644
--- a/Mage.Sets/src/mage/cards/b/BindingAgony.java
+++ b/Mage.Sets/src/mage/cards/b/BindingAgony.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class BindingAgony extends CardImpl {
+public final class BindingAgony extends CardImpl {
public BindingAgony(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BindingGrasp.java b/Mage.Sets/src/mage/cards/b/BindingGrasp.java
index d64d85eb7d2..86c8180d526 100644
--- a/Mage.Sets/src/mage/cards/b/BindingGrasp.java
+++ b/Mage.Sets/src/mage/cards/b/BindingGrasp.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class BindingGrasp extends CardImpl {
+public final class BindingGrasp extends CardImpl {
public BindingGrasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BindingMummy.java b/Mage.Sets/src/mage/cards/b/BindingMummy.java
index 6c822b4a153..cb070c8c2fa 100644
--- a/Mage.Sets/src/mage/cards/b/BindingMummy.java
+++ b/Mage.Sets/src/mage/cards/b/BindingMummy.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class BindingMummy extends CardImpl {
+public final class BindingMummy extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Zombie");
diff --git a/Mage.Sets/src/mage/cards/b/BiomanticMastery.java b/Mage.Sets/src/mage/cards/b/BiomanticMastery.java
index 23e6902ce57..e49ec4e3a30 100644
--- a/Mage.Sets/src/mage/cards/b/BiomanticMastery.java
+++ b/Mage.Sets/src/mage/cards/b/BiomanticMastery.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class BiomanticMastery extends CardImpl {
+public final class BiomanticMastery extends CardImpl {
public BiomanticMastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G/U}{G/U}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/b/BiomassMutation.java b/Mage.Sets/src/mage/cards/b/BiomassMutation.java
index 259226b738e..92670d23c60 100644
--- a/Mage.Sets/src/mage/cards/b/BiomassMutation.java
+++ b/Mage.Sets/src/mage/cards/b/BiomassMutation.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class BiomassMutation extends CardImpl {
+public final class BiomassMutation extends CardImpl {
public BiomassMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{G/U}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/b/Bioplasm.java b/Mage.Sets/src/mage/cards/b/Bioplasm.java
index 3b591d9c7b5..aa638f2645d 100644
--- a/Mage.Sets/src/mage/cards/b/Bioplasm.java
+++ b/Mage.Sets/src/mage/cards/b/Bioplasm.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class Bioplasm extends CardImpl {
+public final class Bioplasm extends CardImpl {
public Bioplasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Biorhythm.java b/Mage.Sets/src/mage/cards/b/Biorhythm.java
index 2d6ab817cc5..53d82619fc8 100644
--- a/Mage.Sets/src/mage/cards/b/Biorhythm.java
+++ b/Mage.Sets/src/mage/cards/b/Biorhythm.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author LoneFox
*/
-public class Biorhythm extends CardImpl {
+public final class Biorhythm extends CardImpl {
public Biorhythm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Bioshift.java b/Mage.Sets/src/mage/cards/b/Bioshift.java
index 50a76dac607..580bcf568db 100644
--- a/Mage.Sets/src/mage/cards/b/Bioshift.java
+++ b/Mage.Sets/src/mage/cards/b/Bioshift.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Bioshift extends CardImpl {
+public final class Bioshift extends CardImpl {
public Bioshift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G/U}");
diff --git a/Mage.Sets/src/mage/cards/b/Biovisionary.java b/Mage.Sets/src/mage/cards/b/Biovisionary.java
index baba8644d93..de5fe8e6824 100644
--- a/Mage.Sets/src/mage/cards/b/Biovisionary.java
+++ b/Mage.Sets/src/mage/cards/b/Biovisionary.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author Plopman
*/
-public class Biovisionary extends CardImpl {
+public final class Biovisionary extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("if you control four or more creatures named Biovisionary");
static{
diff --git a/Mage.Sets/src/mage/cards/b/BirchloreRangers.java b/Mage.Sets/src/mage/cards/b/BirchloreRangers.java
index 51c74155f2e..7af9657e9fb 100644
--- a/Mage.Sets/src/mage/cards/b/BirchloreRangers.java
+++ b/Mage.Sets/src/mage/cards/b/BirchloreRangers.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class BirchloreRangers extends CardImpl {
+public final class BirchloreRangers extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Elves you control");
diff --git a/Mage.Sets/src/mage/cards/b/BirdMaiden.java b/Mage.Sets/src/mage/cards/b/BirdMaiden.java
index 8cc9d2d8dcb..9ed2d77ffec 100644
--- a/Mage.Sets/src/mage/cards/b/BirdMaiden.java
+++ b/Mage.Sets/src/mage/cards/b/BirdMaiden.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BirdMaiden extends CardImpl {
+public final class BirdMaiden extends CardImpl {
public BirdMaiden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BirdsOfParadise.java b/Mage.Sets/src/mage/cards/b/BirdsOfParadise.java
index 1815917f1ac..f7a275fdee8 100644
--- a/Mage.Sets/src/mage/cards/b/BirdsOfParadise.java
+++ b/Mage.Sets/src/mage/cards/b/BirdsOfParadise.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com, Loki
*/
-public class BirdsOfParadise extends CardImpl {
+public final class BirdsOfParadise extends CardImpl {
public BirdsOfParadise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BirthingHulk.java b/Mage.Sets/src/mage/cards/b/BirthingHulk.java
index ec014526e8b..fc6026ba7a1 100644
--- a/Mage.Sets/src/mage/cards/b/BirthingHulk.java
+++ b/Mage.Sets/src/mage/cards/b/BirthingHulk.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author LevelX2
*/
-public class BirthingHulk extends CardImpl {
+public final class BirthingHulk extends CardImpl {
public BirthingHulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BirthingPod.java b/Mage.Sets/src/mage/cards/b/BirthingPod.java
index 1b8095c44ed..83c8e63448c 100644
--- a/Mage.Sets/src/mage/cards/b/BirthingPod.java
+++ b/Mage.Sets/src/mage/cards/b/BirthingPod.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class BirthingPod extends CardImpl {
+public final class BirthingPod extends CardImpl {
public BirthingPod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}{G/P}");
diff --git a/Mage.Sets/src/mage/cards/b/BishopOfBinding.java b/Mage.Sets/src/mage/cards/b/BishopOfBinding.java
index ea0b73fdd79..3f002a75ed0 100644
--- a/Mage.Sets/src/mage/cards/b/BishopOfBinding.java
+++ b/Mage.Sets/src/mage/cards/b/BishopOfBinding.java
@@ -59,7 +59,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class BishopOfBinding extends CardImpl {
+public final class BishopOfBinding extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/b/BishopOfRebirth.java b/Mage.Sets/src/mage/cards/b/BishopOfRebirth.java
index 590ac7d9a35..4d15f102bbe 100644
--- a/Mage.Sets/src/mage/cards/b/BishopOfRebirth.java
+++ b/Mage.Sets/src/mage/cards/b/BishopOfRebirth.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TacomenX
*/
-public class BishopOfRebirth extends CardImpl {
+public final class BishopOfRebirth extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("creature card with converted mana cost 3 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/b/BishopOfTheBloodstained.java b/Mage.Sets/src/mage/cards/b/BishopOfTheBloodstained.java
index d301e788ac3..f0d03e3fe2f 100644
--- a/Mage.Sets/src/mage/cards/b/BishopOfTheBloodstained.java
+++ b/Mage.Sets/src/mage/cards/b/BishopOfTheBloodstained.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class BishopOfTheBloodstained extends CardImpl {
+public final class BishopOfTheBloodstained extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampire you control");
diff --git a/Mage.Sets/src/mage/cards/b/BishopsSoldier.java b/Mage.Sets/src/mage/cards/b/BishopsSoldier.java
index d0172512004..8622acdf367 100644
--- a/Mage.Sets/src/mage/cards/b/BishopsSoldier.java
+++ b/Mage.Sets/src/mage/cards/b/BishopsSoldier.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class BishopsSoldier extends CardImpl {
+public final class BishopsSoldier extends CardImpl {
public BishopsSoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BiteOfTheBlackRose.java b/Mage.Sets/src/mage/cards/b/BiteOfTheBlackRose.java
index 8fb724ca755..33581cd5f3d 100644
--- a/Mage.Sets/src/mage/cards/b/BiteOfTheBlackRose.java
+++ b/Mage.Sets/src/mage/cards/b/BiteOfTheBlackRose.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class BiteOfTheBlackRose extends CardImpl {
+public final class BiteOfTheBlackRose extends CardImpl {
public BiteOfTheBlackRose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BitingRain.java b/Mage.Sets/src/mage/cards/b/BitingRain.java
index cc8a0cc7012..92283bff528 100644
--- a/Mage.Sets/src/mage/cards/b/BitingRain.java
+++ b/Mage.Sets/src/mage/cards/b/BitingRain.java
@@ -40,7 +40,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class BitingRain extends CardImpl {
+public final class BitingRain extends CardImpl {
public BitingRain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BitingTether.java b/Mage.Sets/src/mage/cards/b/BitingTether.java
index 52850b4e6c3..635c0fd4f10 100644
--- a/Mage.Sets/src/mage/cards/b/BitingTether.java
+++ b/Mage.Sets/src/mage/cards/b/BitingTether.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*
*/
-public class BitingTether extends CardImpl {
+public final class BitingTether extends CardImpl {
public BitingTether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BitterFeud.java b/Mage.Sets/src/mage/cards/b/BitterFeud.java
index e7d64955514..191c3aa90c5 100644
--- a/Mage.Sets/src/mage/cards/b/BitterFeud.java
+++ b/Mage.Sets/src/mage/cards/b/BitterFeud.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class BitterFeud extends CardImpl {
+public final class BitterFeud extends CardImpl {
public BitterFeud(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BitterOrdeal.java b/Mage.Sets/src/mage/cards/b/BitterOrdeal.java
index b03a699cb86..d5737c37c26 100644
--- a/Mage.Sets/src/mage/cards/b/BitterOrdeal.java
+++ b/Mage.Sets/src/mage/cards/b/BitterOrdeal.java
@@ -47,7 +47,7 @@ import mage.watchers.common.GravestormWatcher;
*
* @author emerald000
*/
-public class BitterOrdeal extends CardImpl {
+public final class BitterOrdeal extends CardImpl {
public BitterOrdeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BitterRevelation.java b/Mage.Sets/src/mage/cards/b/BitterRevelation.java
index 7bcc7db0b0b..d57884d3462 100644
--- a/Mage.Sets/src/mage/cards/b/BitterRevelation.java
+++ b/Mage.Sets/src/mage/cards/b/BitterRevelation.java
@@ -40,7 +40,7 @@ import mage.filter.StaticFilters;
*
* @author emerald000
*/
-public class BitterRevelation extends CardImpl {
+public final class BitterRevelation extends CardImpl {
public BitterRevelation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BitterbladeWarrior.java b/Mage.Sets/src/mage/cards/b/BitterbladeWarrior.java
index f7f34d38ff5..3061dfe772b 100644
--- a/Mage.Sets/src/mage/cards/b/BitterbladeWarrior.java
+++ b/Mage.Sets/src/mage/cards/b/BitterbladeWarrior.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class BitterbladeWarrior extends CardImpl {
+public final class BitterbladeWarrior extends CardImpl {
public BitterbladeWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Bitterblossom.java b/Mage.Sets/src/mage/cards/b/Bitterblossom.java
index 7ead9777830..b106f891e77 100644
--- a/Mage.Sets/src/mage/cards/b/Bitterblossom.java
+++ b/Mage.Sets/src/mage/cards/b/Bitterblossom.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.FaerieRogueToken;
*
* @author Loki
*/
-public class Bitterblossom extends CardImpl {
+public final class Bitterblossom extends CardImpl {
public Bitterblossom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BitterbowSharpshooters.java b/Mage.Sets/src/mage/cards/b/BitterbowSharpshooters.java
index 0f9f2d2c5b7..76132cf007e 100644
--- a/Mage.Sets/src/mage/cards/b/BitterbowSharpshooters.java
+++ b/Mage.Sets/src/mage/cards/b/BitterbowSharpshooters.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author ciaccona007
*/
-public class BitterbowSharpshooters extends CardImpl {
+public final class BitterbowSharpshooters extends CardImpl {
public BitterbowSharpshooters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BitterheartWitch.java b/Mage.Sets/src/mage/cards/b/BitterheartWitch.java
index b0a4fac32d6..e36546fc7d0 100644
--- a/Mage.Sets/src/mage/cards/b/BitterheartWitch.java
+++ b/Mage.Sets/src/mage/cards/b/BitterheartWitch.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author BetaSteward
*/
-public class BitterheartWitch extends CardImpl {
+public final class BitterheartWitch extends CardImpl {
public BitterheartWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BituminousBlast.java b/Mage.Sets/src/mage/cards/b/BituminousBlast.java
index 893bb9ba0a1..bade8a73b3c 100644
--- a/Mage.Sets/src/mage/cards/b/BituminousBlast.java
+++ b/Mage.Sets/src/mage/cards/b/BituminousBlast.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BituminousBlast extends CardImpl {
+public final class BituminousBlast extends CardImpl {
public BituminousBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlackCarriage.java b/Mage.Sets/src/mage/cards/b/BlackCarriage.java
index 6022d059911..0a06b959ae0 100644
--- a/Mage.Sets/src/mage/cards/b/BlackCarriage.java
+++ b/Mage.Sets/src/mage/cards/b/BlackCarriage.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class BlackCarriage extends CardImpl {
+public final class BlackCarriage extends CardImpl {
public BlackCarriage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlackCat.java b/Mage.Sets/src/mage/cards/b/BlackCat.java
index 521c374c445..d6f263c9072 100644
--- a/Mage.Sets/src/mage/cards/b/BlackCat.java
+++ b/Mage.Sets/src/mage/cards/b/BlackCat.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX
*/
-public class BlackCat extends CardImpl {
+public final class BlackCat extends CardImpl {
public BlackCat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlackKnight.java b/Mage.Sets/src/mage/cards/b/BlackKnight.java
index 74d1fa67cd2..973cfcd5382 100644
--- a/Mage.Sets/src/mage/cards/b/BlackKnight.java
+++ b/Mage.Sets/src/mage/cards/b/BlackKnight.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BlackKnight extends CardImpl {
+public final class BlackKnight extends CardImpl {
public BlackKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlackLotus.java b/Mage.Sets/src/mage/cards/b/BlackLotus.java
index 8bfaa4be4b4..bef9f82d02b 100644
--- a/Mage.Sets/src/mage/cards/b/BlackLotus.java
+++ b/Mage.Sets/src/mage/cards/b/BlackLotus.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class BlackLotus extends CardImpl {
+public final class BlackLotus extends CardImpl {
public BlackLotus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/b/BlackManaBattery.java b/Mage.Sets/src/mage/cards/b/BlackManaBattery.java
index ac632e9393f..124212456c6 100644
--- a/Mage.Sets/src/mage/cards/b/BlackManaBattery.java
+++ b/Mage.Sets/src/mage/cards/b/BlackManaBattery.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class BlackManaBattery extends CardImpl {
+public final class BlackManaBattery extends CardImpl {
public BlackManaBattery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BlackMarket.java b/Mage.Sets/src/mage/cards/b/BlackMarket.java
index 455a8ded8c6..dee113d8dda 100644
--- a/Mage.Sets/src/mage/cards/b/BlackMarket.java
+++ b/Mage.Sets/src/mage/cards/b/BlackMarket.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author markedagain
*/
-public class BlackMarket extends CardImpl {
+public final class BlackMarket extends CardImpl {
public BlackMarket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java b/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java
index cf677a16bc1..65e0cdf607b 100644
--- a/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java
+++ b/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class BlackMarketDealer extends CardImpl {
+public final class BlackMarketDealer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a Rogue or Hunter creature you control");
diff --git a/Mage.Sets/src/mage/cards/b/BlackOakOfOdunos.java b/Mage.Sets/src/mage/cards/b/BlackOakOfOdunos.java
index 530e66ca69b..d3c85e66ac3 100644
--- a/Mage.Sets/src/mage/cards/b/BlackOakOfOdunos.java
+++ b/Mage.Sets/src/mage/cards/b/BlackOakOfOdunos.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Quercitron
*/
-public class BlackOakOfOdunos extends CardImpl {
+public final class BlackOakOfOdunos extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/b/BlackPoplarShaman.java b/Mage.Sets/src/mage/cards/b/BlackPoplarShaman.java
index c087a4c986f..05c7ea1341c 100644
--- a/Mage.Sets/src/mage/cards/b/BlackPoplarShaman.java
+++ b/Mage.Sets/src/mage/cards/b/BlackPoplarShaman.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class BlackPoplarShaman extends CardImpl {
+public final class BlackPoplarShaman extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Treefolk");
diff --git a/Mage.Sets/src/mage/cards/b/BlackScarab.java b/Mage.Sets/src/mage/cards/b/BlackScarab.java
index 7e23173a24a..44b07ab1559 100644
--- a/Mage.Sets/src/mage/cards/b/BlackScarab.java
+++ b/Mage.Sets/src/mage/cards/b/BlackScarab.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Zeplar1_at_googlemail.com
*/
-public class BlackScarab extends CardImpl {
+public final class BlackScarab extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creatures");
private static final FilterPermanent filter2 = new FilterPermanent("black permanent");
diff --git a/Mage.Sets/src/mage/cards/b/BlackSunsZenith.java b/Mage.Sets/src/mage/cards/b/BlackSunsZenith.java
index 90d13dde653..d61116a75a9 100644
--- a/Mage.Sets/src/mage/cards/b/BlackSunsZenith.java
+++ b/Mage.Sets/src/mage/cards/b/BlackSunsZenith.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class BlackSunsZenith extends CardImpl {
+public final class BlackSunsZenith extends CardImpl {
public BlackSunsZenith (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlackVise.java b/Mage.Sets/src/mage/cards/b/BlackVise.java
index 52c49857318..43cddd9c21d 100644
--- a/Mage.Sets/src/mage/cards/b/BlackVise.java
+++ b/Mage.Sets/src/mage/cards/b/BlackVise.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author dustinconrad
*/
-public class BlackVise extends CardImpl {
+public final class BlackVise extends CardImpl {
public BlackVise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BlackWard.java b/Mage.Sets/src/mage/cards/b/BlackWard.java
index f285a144bc8..e999ae3b745 100644
--- a/Mage.Sets/src/mage/cards/b/BlackWard.java
+++ b/Mage.Sets/src/mage/cards/b/BlackWard.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class BlackWard extends CardImpl {
+public final class BlackWard extends CardImpl {
private static final FilterCard filter = new FilterCard("black");
diff --git a/Mage.Sets/src/mage/cards/b/BlackbladeReforged.java b/Mage.Sets/src/mage/cards/b/BlackbladeReforged.java
index 06a17e681d7..16ccb69fbda 100644
--- a/Mage.Sets/src/mage/cards/b/BlackbladeReforged.java
+++ b/Mage.Sets/src/mage/cards/b/BlackbladeReforged.java
@@ -1,57 +1,57 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package mage.cards.b;
-
-import java.util.UUID;
-import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.filter.common.FilterControlledLandPermanent;
-import mage.filter.common.FilterControlledPermanent;
-import mage.abilities.effects.common.continuous.BoostEquippedEffect;
-import mage.abilities.costs.mana.GenericManaCost;
-import mage.abilities.keyword.EquipAbility;
-import mage.abilities.keyword.EquipLegendaryAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.constants.SubType;
-import mage.constants.SuperType;
-import mage.constants.Zone;
-
-/**
- *
- * @author Rystan
- */
-public class BlackbladeReforged extends CardImpl {
-
- private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
-
- public BlackbladeReforged(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
- addSuperType(SuperType.LEGENDARY);
- this.subtype.add(SubType.EQUIPMENT);
-
- // Equipped creature gets +1/+1 for each land you control.
- PermanentsOnBattlefieldCount count = new PermanentsOnBattlefieldCount(filter);
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(count, count)));
-
- // Equip legendary creature (3)
- this.addAbility(new EquipLegendaryAbility(Outcome.AddAbility, new GenericManaCost(3)));
-
- // Equip {7}
- this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(7)));
- }
-
- public BlackbladeReforged(final BlackbladeReforged card) {
- super(card);
- }
-
- @Override
- public BlackbladeReforged copy() {
- return new BlackbladeReforged(this);
- }
-}
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package mage.cards.b;
+
+import java.util.UUID;
+import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.filter.common.FilterControlledLandPermanent;
+import mage.filter.common.FilterControlledPermanent;
+import mage.abilities.effects.common.continuous.BoostEquippedEffect;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.keyword.EquipAbility;
+import mage.abilities.keyword.EquipLegendaryAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author Rystan
+ */
+public final class BlackbladeReforged extends CardImpl {
+
+ private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
+
+ public BlackbladeReforged(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
+ addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.EQUIPMENT);
+
+ // Equipped creature gets +1/+1 for each land you control.
+ PermanentsOnBattlefieldCount count = new PermanentsOnBattlefieldCount(filter);
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(count, count)));
+
+ // Equip legendary creature (3)
+ this.addAbility(new EquipLegendaryAbility(Outcome.AddAbility, new GenericManaCost(3)));
+
+ // Equip {7}
+ this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(7)));
+ }
+
+ public BlackbladeReforged(final BlackbladeReforged card) {
+ super(card);
+ }
+
+ @Override
+ public BlackbladeReforged copy() {
+ return new BlackbladeReforged(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/b/BlackcleaveCliffs.java b/Mage.Sets/src/mage/cards/b/BlackcleaveCliffs.java
index eff8060564e..4e872825565 100644
--- a/Mage.Sets/src/mage/cards/b/BlackcleaveCliffs.java
+++ b/Mage.Sets/src/mage/cards/b/BlackcleaveCliffs.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author maurer.it_at_gmail.com
*/
-public class BlackcleaveCliffs extends CardImpl {
+public final class BlackcleaveCliffs extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/b/BlackcleaveGoblin.java b/Mage.Sets/src/mage/cards/b/BlackcleaveGoblin.java
index 45f750029aa..e06313a7e30 100644
--- a/Mage.Sets/src/mage/cards/b/BlackcleaveGoblin.java
+++ b/Mage.Sets/src/mage/cards/b/BlackcleaveGoblin.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class BlackcleaveGoblin extends CardImpl {
+public final class BlackcleaveGoblin extends CardImpl {
public BlackcleaveGoblin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Blackmail.java b/Mage.Sets/src/mage/cards/b/Blackmail.java
index 42fd1ced0ae..b384e017a62 100644
--- a/Mage.Sets/src/mage/cards/b/Blackmail.java
+++ b/Mage.Sets/src/mage/cards/b/Blackmail.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class Blackmail extends CardImpl {
+public final class Blackmail extends CardImpl {
public Blackmail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BladeOfSelves.java b/Mage.Sets/src/mage/cards/b/BladeOfSelves.java
index 23e38f35676..a3fec87498b 100644
--- a/Mage.Sets/src/mage/cards/b/BladeOfSelves.java
+++ b/Mage.Sets/src/mage/cards/b/BladeOfSelves.java
@@ -41,7 +41,7 @@ import mage.constants.*;
*
* @author fireshoes
*/
-public class BladeOfSelves extends CardImpl {
+public final class BladeOfSelves extends CardImpl {
public BladeOfSelves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/b/BladeOfTheBloodchief.java b/Mage.Sets/src/mage/cards/b/BladeOfTheBloodchief.java
index 4afd172f028..cf7193165e8 100644
--- a/Mage.Sets/src/mage/cards/b/BladeOfTheBloodchief.java
+++ b/Mage.Sets/src/mage/cards/b/BladeOfTheBloodchief.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author mamaurer, nantuko
*/
-public class BladeOfTheBloodchief extends CardImpl {
+public final class BladeOfTheBloodchief extends CardImpl {
public BladeOfTheBloodchief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BladeOfTheSixthPride.java b/Mage.Sets/src/mage/cards/b/BladeOfTheSixthPride.java
index db662b78ccd..6991047a210 100644
--- a/Mage.Sets/src/mage/cards/b/BladeOfTheSixthPride.java
+++ b/Mage.Sets/src/mage/cards/b/BladeOfTheSixthPride.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BladeOfTheSixthPride extends CardImpl {
+public final class BladeOfTheSixthPride extends CardImpl {
public BladeOfTheSixthPride(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BladeSliver.java b/Mage.Sets/src/mage/cards/b/BladeSliver.java
index 5f1a3008f99..433f1354549 100644
--- a/Mage.Sets/src/mage/cards/b/BladeSliver.java
+++ b/Mage.Sets/src/mage/cards/b/BladeSliver.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author cbt33
*/
-public class BladeSliver extends CardImpl {
+public final class BladeSliver extends CardImpl {
public BladeSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BladeSplicer.java b/Mage.Sets/src/mage/cards/b/BladeSplicer.java
index 5eb59173f19..6c70bf9224d 100644
--- a/Mage.Sets/src/mage/cards/b/BladeSplicer.java
+++ b/Mage.Sets/src/mage/cards/b/BladeSplicer.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.GolemToken;
*
* @author Loki
*/
-public class BladeSplicer extends CardImpl {
+public final class BladeSplicer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Golem creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BladeTribeBerserkers.java b/Mage.Sets/src/mage/cards/b/BladeTribeBerserkers.java
index 346a6d0dd2e..41904d89c9c 100644
--- a/Mage.Sets/src/mage/cards/b/BladeTribeBerserkers.java
+++ b/Mage.Sets/src/mage/cards/b/BladeTribeBerserkers.java
@@ -46,7 +46,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BladeTribeBerserkers extends CardImpl {
+public final class BladeTribeBerserkers extends CardImpl {
private static final String effectText = "Metalcraft - When Blade-Tribe Berserkers enters the battlefield, if you control three or more artifacts, Blade-Tribe Berserkers gets +3/+3 and gains haste until end of turn.";
diff --git a/Mage.Sets/src/mage/cards/b/BladedBracers.java b/Mage.Sets/src/mage/cards/b/BladedBracers.java
index 369ea4a7ecf..fa0b4e6bfc1 100644
--- a/Mage.Sets/src/mage/cards/b/BladedBracers.java
+++ b/Mage.Sets/src/mage/cards/b/BladedBracers.java
@@ -45,7 +45,7 @@ import java.util.UUID;
/**
* @author noxx
*/
-public class BladedBracers extends CardImpl {
+public final class BladedBracers extends CardImpl {
private static final String ruleText = "As long as equipped creature is a Human or an Angel, it has vigilance";
diff --git a/Mage.Sets/src/mage/cards/b/BladedPinions.java b/Mage.Sets/src/mage/cards/b/BladedPinions.java
index 2645bd54c60..292e78054a3 100644
--- a/Mage.Sets/src/mage/cards/b/BladedPinions.java
+++ b/Mage.Sets/src/mage/cards/b/BladedPinions.java
@@ -43,7 +43,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class BladedPinions extends CardImpl {
+public final class BladedPinions extends CardImpl {
public BladedPinions (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/b/BladedSentinel.java b/Mage.Sets/src/mage/cards/b/BladedSentinel.java
index f39508fcd83..db61bbf185d 100644
--- a/Mage.Sets/src/mage/cards/b/BladedSentinel.java
+++ b/Mage.Sets/src/mage/cards/b/BladedSentinel.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class BladedSentinel extends CardImpl {
+public final class BladedSentinel extends CardImpl {
public BladedSentinel (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BlademaneBaku.java b/Mage.Sets/src/mage/cards/b/BlademaneBaku.java
index e65642851f7..a02cf3996cf 100644
--- a/Mage.Sets/src/mage/cards/b/BlademaneBaku.java
+++ b/Mage.Sets/src/mage/cards/b/BlademaneBaku.java
@@ -49,7 +49,7 @@ import mage.game.Game;
/**
* @author LevelX2
*/
-public class BlademaneBaku extends CardImpl {
+public final class BlademaneBaku extends CardImpl {
public BlademaneBaku(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BladesOfVelisVel.java b/Mage.Sets/src/mage/cards/b/BladesOfVelisVel.java
index 7fa6d383ee4..20a0ddbc70e 100644
--- a/Mage.Sets/src/mage/cards/b/BladesOfVelisVel.java
+++ b/Mage.Sets/src/mage/cards/b/BladesOfVelisVel.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BladesOfVelisVel extends CardImpl {
+public final class BladesOfVelisVel extends CardImpl {
public BladesOfVelisVel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BladetuskBoar.java b/Mage.Sets/src/mage/cards/b/BladetuskBoar.java
index 8b497dafe01..34fd10bb624 100644
--- a/Mage.Sets/src/mage/cards/b/BladetuskBoar.java
+++ b/Mage.Sets/src/mage/cards/b/BladetuskBoar.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class BladetuskBoar extends CardImpl {
+public final class BladetuskBoar extends CardImpl {
public BladetuskBoar (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BladewingTheRisen.java b/Mage.Sets/src/mage/cards/b/BladewingTheRisen.java
index 4da947aee3a..f78bbb2b588 100644
--- a/Mage.Sets/src/mage/cards/b/BladewingTheRisen.java
+++ b/Mage.Sets/src/mage/cards/b/BladewingTheRisen.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class BladewingTheRisen extends CardImpl {
+public final class BladewingTheRisen extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dragon creatures");
private static final FilterPermanentCard filterCard = new FilterPermanentCard("Dragon permanent card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/b/BladewingsThrall.java b/Mage.Sets/src/mage/cards/b/BladewingsThrall.java
index 9245ecfd6fa..cae0b257cf5 100644
--- a/Mage.Sets/src/mage/cards/b/BladewingsThrall.java
+++ b/Mage.Sets/src/mage/cards/b/BladewingsThrall.java
@@ -49,7 +49,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author nomage
*/
-public class BladewingsThrall extends CardImpl {
+public final class BladewingsThrall extends CardImpl {
final static private String RULE = "{this} has flying as long as you control a Dragon";
diff --git a/Mage.Sets/src/mage/cards/b/BlanchwoodArmor.java b/Mage.Sets/src/mage/cards/b/BlanchwoodArmor.java
index 95a24515143..1768ccc1ace 100644
--- a/Mage.Sets/src/mage/cards/b/BlanchwoodArmor.java
+++ b/Mage.Sets/src/mage/cards/b/BlanchwoodArmor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BlanchwoodArmor extends CardImpl {
+public final class BlanchwoodArmor extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest you control");
diff --git a/Mage.Sets/src/mage/cards/b/BlanchwoodTreefolk.java b/Mage.Sets/src/mage/cards/b/BlanchwoodTreefolk.java
index 1764462686c..8401fae0b5a 100644
--- a/Mage.Sets/src/mage/cards/b/BlanchwoodTreefolk.java
+++ b/Mage.Sets/src/mage/cards/b/BlanchwoodTreefolk.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class BlanchwoodTreefolk extends CardImpl {
+public final class BlanchwoodTreefolk extends CardImpl {
public BlanchwoodTreefolk (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BlanketOfNight.java b/Mage.Sets/src/mage/cards/b/BlanketOfNight.java
index bc64cdb9908..638479364c2 100644
--- a/Mage.Sets/src/mage/cards/b/BlanketOfNight.java
+++ b/Mage.Sets/src/mage/cards/b/BlanketOfNight.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author Galatolol
*/
-public class BlanketOfNight extends CardImpl {
+public final class BlanketOfNight extends CardImpl {
public BlanketOfNight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlaringCaptain.java b/Mage.Sets/src/mage/cards/b/BlaringCaptain.java
new file mode 100644
index 00000000000..0c94f568c80
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/b/BlaringCaptain.java
@@ -0,0 +1,78 @@
+/*
+ * 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.MageInt;
+import mage.abilities.common.AttacksTriggeredAbility;
+import mage.abilities.effects.common.continuous.BoostAllEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.AttackingPredicate;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class BlaringCaptain extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.WARRIOR, "attacking Warriors");
+
+ static {
+ filter.add(new AttackingPredicate());
+ }
+
+ public BlaringCaptain(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
+
+ this.subtype.add(SubType.AZRA);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Partner with Blaring Recruiter (When this creature enters the battlefield, target player may put Blaring Recruiter into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Blaring Recruiter"));
+
+ // Whenever Blaring Captain attacks, attacking Warriors get +1/+1 until end of turn.
+ this.addAbility(new AttacksTriggeredAbility(new BoostAllEffect(1, 1, Duration.EndOfTurn, filter, false), false));
+ }
+
+ public BlaringCaptain(final BlaringCaptain card) {
+ super(card);
+ }
+
+ @Override
+ public BlaringCaptain copy() {
+ return new BlaringCaptain(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/b/BlaringRecruiter.java b/Mage.Sets/src/mage/cards/b/BlaringRecruiter.java
new file mode 100644
index 00000000000..de8027dc2b8
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/b/BlaringRecruiter.java
@@ -0,0 +1,71 @@
+/*
+ * 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.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.game.permanent.token.WarriorToken;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class BlaringRecruiter extends CardImpl {
+
+ public BlaringRecruiter(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
+
+ this.subtype.add(SubType.ELF);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Partner with Blaring Captain (When this creature enters the battlefield, target player may put Blaring Captain into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Blaring Captain"));
+
+ // {2}{W}: Create a 1/1 white Warrior creature token.
+ this.addAbility(new SimpleActivatedAbility(new CreateTokenEffect(new WarriorToken()), new ManaCostsImpl("{2}{W}")));
+ }
+
+ public BlaringRecruiter(final BlaringRecruiter card) {
+ super(card);
+ }
+
+ @Override
+ public BlaringRecruiter copy() {
+ return new BlaringRecruiter(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/b/BlasphemousAct.java b/Mage.Sets/src/mage/cards/b/BlasphemousAct.java
index 7d772765cde..68e04edb69b 100644
--- a/Mage.Sets/src/mage/cards/b/BlasphemousAct.java
+++ b/Mage.Sets/src/mage/cards/b/BlasphemousAct.java
@@ -45,7 +45,7 @@ import mage.util.CardUtil;
/**
* @author nantuko
*/
-public class BlasphemousAct extends CardImpl {
+public final class BlasphemousAct extends CardImpl {
public BlasphemousAct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{8}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlastOfGenius.java b/Mage.Sets/src/mage/cards/b/BlastOfGenius.java
index 3be7b1f6ff3..93de4d06233 100644
--- a/Mage.Sets/src/mage/cards/b/BlastOfGenius.java
+++ b/Mage.Sets/src/mage/cards/b/BlastOfGenius.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetDiscard;
*
* @author LevelX2
*/
-public class BlastOfGenius extends CardImpl {
+public final class BlastOfGenius extends CardImpl {
public BlastOfGenius(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlastedLandscape.java b/Mage.Sets/src/mage/cards/b/BlastedLandscape.java
index 0466d47f8ba..8055d69ea93 100644
--- a/Mage.Sets/src/mage/cards/b/BlastedLandscape.java
+++ b/Mage.Sets/src/mage/cards/b/BlastedLandscape.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Backfir3
*/
-public class BlastedLandscape extends CardImpl {
+public final class BlastedLandscape extends CardImpl {
public BlastedLandscape(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BlasterMage.java b/Mage.Sets/src/mage/cards/b/BlasterMage.java
index 362af436da4..15169e50bdd 100644
--- a/Mage.Sets/src/mage/cards/b/BlasterMage.java
+++ b/Mage.Sets/src/mage/cards/b/BlasterMage.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class BlasterMage extends CardImpl {
+public final class BlasterMage extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wall");
diff --git a/Mage.Sets/src/mage/cards/b/BlastfireBolt.java b/Mage.Sets/src/mage/cards/b/BlastfireBolt.java
index 7a87b5c9e65..49e63b6ef19 100644
--- a/Mage.Sets/src/mage/cards/b/BlastfireBolt.java
+++ b/Mage.Sets/src/mage/cards/b/BlastfireBolt.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author Quercitron
*/
-public class BlastfireBolt extends CardImpl {
+public final class BlastfireBolt extends CardImpl {
public BlastfireBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlastingStation.java b/Mage.Sets/src/mage/cards/b/BlastingStation.java
index d99ff45889e..ebb719bb8f2 100644
--- a/Mage.Sets/src/mage/cards/b/BlastingStation.java
+++ b/Mage.Sets/src/mage/cards/b/BlastingStation.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class BlastingStation extends CardImpl {
+public final class BlastingStation extends CardImpl {
public BlastingStation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/b/Blastoderm.java b/Mage.Sets/src/mage/cards/b/Blastoderm.java
index 9a6d521d9aa..80974a119d2 100644
--- a/Mage.Sets/src/mage/cards/b/Blastoderm.java
+++ b/Mage.Sets/src/mage/cards/b/Blastoderm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Blastoderm extends CardImpl {
+public final class Blastoderm extends CardImpl {
public Blastoderm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BlatantThievery.java b/Mage.Sets/src/mage/cards/b/BlatantThievery.java
index 85c0c6b8645..76532e25ff7 100644
--- a/Mage.Sets/src/mage/cards/b/BlatantThievery.java
+++ b/Mage.Sets/src/mage/cards/b/BlatantThievery.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class BlatantThievery extends CardImpl {
+public final class BlatantThievery extends CardImpl {
public BlatantThievery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/Blaze.java b/Mage.Sets/src/mage/cards/b/Blaze.java
index a4430e9ea5f..e6bdfa930db 100644
--- a/Mage.Sets/src/mage/cards/b/Blaze.java
+++ b/Mage.Sets/src/mage/cards/b/Blaze.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class Blaze extends CardImpl {
+public final class Blaze extends CardImpl {
public Blaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlazeCommando.java b/Mage.Sets/src/mage/cards/b/BlazeCommando.java
index 2d6c42cd36f..9f7a8bc256e 100644
--- a/Mage.Sets/src/mage/cards/b/BlazeCommando.java
+++ b/Mage.Sets/src/mage/cards/b/BlazeCommando.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*/
-public class BlazeCommando extends CardImpl {
+public final class BlazeCommando extends CardImpl {
public BlazeCommando (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlazeOfGlory.java b/Mage.Sets/src/mage/cards/b/BlazeOfGlory.java
index c8e22ca5631..97778de0e98 100644
--- a/Mage.Sets/src/mage/cards/b/BlazeOfGlory.java
+++ b/Mage.Sets/src/mage/cards/b/BlazeOfGlory.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class BlazeOfGlory extends CardImpl {
+public final class BlazeOfGlory extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature defending player controls");
diff --git a/Mage.Sets/src/mage/cards/b/BlazethornScarecrow.java b/Mage.Sets/src/mage/cards/b/BlazethornScarecrow.java
index f628fe5f102..74b2459cd38 100644
--- a/Mage.Sets/src/mage/cards/b/BlazethornScarecrow.java
+++ b/Mage.Sets/src/mage/cards/b/BlazethornScarecrow.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class BlazethornScarecrow extends CardImpl {
+public final class BlazethornScarecrow extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a red creature");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("a green creature");
diff --git a/Mage.Sets/src/mage/cards/b/BlazingArchon.java b/Mage.Sets/src/mage/cards/b/BlazingArchon.java
index 4dda65847e0..6a65dee4cb2 100644
--- a/Mage.Sets/src/mage/cards/b/BlazingArchon.java
+++ b/Mage.Sets/src/mage/cards/b/BlazingArchon.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class BlazingArchon extends CardImpl {
+public final class BlazingArchon extends CardImpl {
public BlazingArchon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlazingBladeAskari.java b/Mage.Sets/src/mage/cards/b/BlazingBladeAskari.java
index 1d4db715a21..5a89b5bc991 100644
--- a/Mage.Sets/src/mage/cards/b/BlazingBladeAskari.java
+++ b/Mage.Sets/src/mage/cards/b/BlazingBladeAskari.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class BlazingBladeAskari extends CardImpl {
+public final class BlazingBladeAskari extends CardImpl {
public BlazingBladeAskari(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlazingHellhound.java b/Mage.Sets/src/mage/cards/b/BlazingHellhound.java
index bd0ded2db5a..986368be2a2 100644
--- a/Mage.Sets/src/mage/cards/b/BlazingHellhound.java
+++ b/Mage.Sets/src/mage/cards/b/BlazingHellhound.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class BlazingHellhound extends CardImpl {
+public final class BlazingHellhound extends CardImpl {
public BlazingHellhound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlazingHope.java b/Mage.Sets/src/mage/cards/b/BlazingHope.java
index 17226da746a..e27ae7bcd07 100644
--- a/Mage.Sets/src/mage/cards/b/BlazingHope.java
+++ b/Mage.Sets/src/mage/cards/b/BlazingHope.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BlazingHope extends CardImpl {
+public final class BlazingHope extends CardImpl {
public BlazingHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlazingSalvo.java b/Mage.Sets/src/mage/cards/b/BlazingSalvo.java
index ce5b8a90087..24c52609d46 100644
--- a/Mage.Sets/src/mage/cards/b/BlazingSalvo.java
+++ b/Mage.Sets/src/mage/cards/b/BlazingSalvo.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class BlazingSalvo extends CardImpl {
+public final class BlazingSalvo extends CardImpl {
public BlazingSalvo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlazingShoal.java b/Mage.Sets/src/mage/cards/b/BlazingShoal.java
index 58edd82af40..d27a95b8115 100644
--- a/Mage.Sets/src/mage/cards/b/BlazingShoal.java
+++ b/Mage.Sets/src/mage/cards/b/BlazingShoal.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BlazingShoal extends CardImpl {
+public final class BlazingShoal extends CardImpl {
public BlazingShoal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlazingSpecter.java b/Mage.Sets/src/mage/cards/b/BlazingSpecter.java
index 648ee548098..5fbf0e5ee9f 100644
--- a/Mage.Sets/src/mage/cards/b/BlazingSpecter.java
+++ b/Mage.Sets/src/mage/cards/b/BlazingSpecter.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BlazingSpecter extends CardImpl {
+public final class BlazingSpecter extends CardImpl {
public BlazingSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlazingTorch.java b/Mage.Sets/src/mage/cards/b/BlazingTorch.java
index 7377c4d82a7..e36e00116a1 100644
--- a/Mage.Sets/src/mage/cards/b/BlazingTorch.java
+++ b/Mage.Sets/src/mage/cards/b/BlazingTorch.java
@@ -56,7 +56,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class BlazingTorch extends CardImpl {
+public final class BlazingTorch extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampires or Zombies");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BlazingVolley.java b/Mage.Sets/src/mage/cards/b/BlazingVolley.java
index c2d7958281d..e2522c68322 100644
--- a/Mage.Sets/src/mage/cards/b/BlazingVolley.java
+++ b/Mage.Sets/src/mage/cards/b/BlazingVolley.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterOpponentsCreaturePermanent;
*
* @author fireshoes
*/
-public class BlazingVolley extends CardImpl {
+public final class BlazingVolley extends CardImpl {
public BlazingVolley(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BleakCovenVampires.java b/Mage.Sets/src/mage/cards/b/BleakCovenVampires.java
index 51e03d65fb7..38add43d6bd 100644
--- a/Mage.Sets/src/mage/cards/b/BleakCovenVampires.java
+++ b/Mage.Sets/src/mage/cards/b/BleakCovenVampires.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class BleakCovenVampires extends CardImpl {
+public final class BleakCovenVampires extends CardImpl {
private static final String effectText = "Metalcraft - When Bleak Coven Vampires enters the battlefield, if you control three or more artifacts, target player loses 4 life and you gain 4 life.";
diff --git a/Mage.Sets/src/mage/cards/b/BlessedAlliance.java b/Mage.Sets/src/mage/cards/b/BlessedAlliance.java
index bda99e75e57..e19b78de8a8 100644
--- a/Mage.Sets/src/mage/cards/b/BlessedAlliance.java
+++ b/Mage.Sets/src/mage/cards/b/BlessedAlliance.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class BlessedAlliance extends CardImpl {
+public final class BlessedAlliance extends CardImpl {
private static final FilterPlayer filterSacrifice = new FilterPlayer("opponent to sacrifice an attacking creature");
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creatures to untap");
diff --git a/Mage.Sets/src/mage/cards/b/BlessedBreath.java b/Mage.Sets/src/mage/cards/b/BlessedBreath.java
index eeeae51d029..a97f597e667 100644
--- a/Mage.Sets/src/mage/cards/b/BlessedBreath.java
+++ b/Mage.Sets/src/mage/cards/b/BlessedBreath.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class BlessedBreath extends CardImpl {
+public final class BlessedBreath extends CardImpl {
public BlessedBreath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlessedLight.java b/Mage.Sets/src/mage/cards/b/BlessedLight.java
index 4b9a611199d..32c9804f199 100644
--- a/Mage.Sets/src/mage/cards/b/BlessedLight.java
+++ b/Mage.Sets/src/mage/cards/b/BlessedLight.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class BlessedLight extends CardImpl {
+public final class BlessedLight extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or enchantment");
diff --git a/Mage.Sets/src/mage/cards/b/BlessedOrator.java b/Mage.Sets/src/mage/cards/b/BlessedOrator.java
index 27e3f019386..07faf4e8ee3 100644
--- a/Mage.Sets/src/mage/cards/b/BlessedOrator.java
+++ b/Mage.Sets/src/mage/cards/b/BlessedOrator.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author noxx (Angel of Jubilation), cbt33
*/
-public class BlessedOrator extends CardImpl {
+public final class BlessedOrator extends CardImpl {
public BlessedOrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlessedReincarnation.java b/Mage.Sets/src/mage/cards/b/BlessedReincarnation.java
index 012bf6fdd58..1f082b3f112 100644
--- a/Mage.Sets/src/mage/cards/b/BlessedReincarnation.java
+++ b/Mage.Sets/src/mage/cards/b/BlessedReincarnation.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BlessedReincarnation extends CardImpl {
+public final class BlessedReincarnation extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/b/BlessedReversal.java b/Mage.Sets/src/mage/cards/b/BlessedReversal.java
index cef33c05d6e..5ccef524073 100644
--- a/Mage.Sets/src/mage/cards/b/BlessedReversal.java
+++ b/Mage.Sets/src/mage/cards/b/BlessedReversal.java
@@ -42,7 +42,7 @@ import mage.game.combat.CombatGroup;
*
* @author North
*/
-public class BlessedReversal extends CardImpl {
+public final class BlessedReversal extends CardImpl {
public BlessedReversal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlessedSpirits.java b/Mage.Sets/src/mage/cards/b/BlessedSpirits.java
index fec78645853..81db8775b2a 100644
--- a/Mage.Sets/src/mage/cards/b/BlessedSpirits.java
+++ b/Mage.Sets/src/mage/cards/b/BlessedSpirits.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class BlessedSpirits extends CardImpl {
+public final class BlessedSpirits extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an enchantment spell");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BlessedWind.java b/Mage.Sets/src/mage/cards/b/BlessedWind.java
index 7eb3c807210..51e24bce7ad 100644
--- a/Mage.Sets/src/mage/cards/b/BlessedWind.java
+++ b/Mage.Sets/src/mage/cards/b/BlessedWind.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class BlessedWind extends CardImpl {
+public final class BlessedWind extends CardImpl {
public BlessedWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{7}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlessedWine.java b/Mage.Sets/src/mage/cards/b/BlessedWine.java
index d7eb38727f2..5a78a21b965 100644
--- a/Mage.Sets/src/mage/cards/b/BlessedWine.java
+++ b/Mage.Sets/src/mage/cards/b/BlessedWine.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class BlessedWine extends CardImpl {
+public final class BlessedWine extends CardImpl {
public BlessedWine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/Blessing.java b/Mage.Sets/src/mage/cards/b/Blessing.java
index 8899f136780..c1950ec147f 100644
--- a/Mage.Sets/src/mage/cards/b/Blessing.java
+++ b/Mage.Sets/src/mage/cards/b/Blessing.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jonubuu
*/
-public class Blessing extends CardImpl {
+public final class Blessing extends CardImpl {
public Blessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlessingOfBelzenlok.java b/Mage.Sets/src/mage/cards/b/BlessingOfBelzenlok.java
index 98fdb446016..779fa234d77 100644
--- a/Mage.Sets/src/mage/cards/b/BlessingOfBelzenlok.java
+++ b/Mage.Sets/src/mage/cards/b/BlessingOfBelzenlok.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class BlessingOfBelzenlok extends CardImpl {
+public final class BlessingOfBelzenlok extends CardImpl {
public BlessingOfBelzenlok(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlessingOfLeeches.java b/Mage.Sets/src/mage/cards/b/BlessingOfLeeches.java
index f41dbcd1d93..4dea580a763 100644
--- a/Mage.Sets/src/mage/cards/b/BlessingOfLeeches.java
+++ b/Mage.Sets/src/mage/cards/b/BlessingOfLeeches.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BlessingOfLeeches extends CardImpl {
+public final class BlessingOfLeeches extends CardImpl {
public BlessingOfLeeches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlessingOfTheNephilim.java b/Mage.Sets/src/mage/cards/b/BlessingOfTheNephilim.java
index 18f16c8a3a8..be98cd0fc6c 100644
--- a/Mage.Sets/src/mage/cards/b/BlessingOfTheNephilim.java
+++ b/Mage.Sets/src/mage/cards/b/BlessingOfTheNephilim.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class BlessingOfTheNephilim extends CardImpl {
+public final class BlessingOfTheNephilim extends CardImpl {
public BlessingOfTheNephilim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlessingsOfNature.java b/Mage.Sets/src/mage/cards/b/BlessingsOfNature.java
index 1ead36fabba..c1fd9b131db 100644
--- a/Mage.Sets/src/mage/cards/b/BlessingsOfNature.java
+++ b/Mage.Sets/src/mage/cards/b/BlessingsOfNature.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author North
*/
-public class BlessingsOfNature extends CardImpl {
+public final class BlessingsOfNature extends CardImpl {
public BlessingsOfNature(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Blight.java b/Mage.Sets/src/mage/cards/b/Blight.java
index 03beaded3db..51f29a1e587 100644
--- a/Mage.Sets/src/mage/cards/b/Blight.java
+++ b/Mage.Sets/src/mage/cards/b/Blight.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class Blight extends CardImpl {
+public final class Blight extends CardImpl {
public Blight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlightHerder.java b/Mage.Sets/src/mage/cards/b/BlightHerder.java
index c01519b118b..7b9f36ea9da 100644
--- a/Mage.Sets/src/mage/cards/b/BlightHerder.java
+++ b/Mage.Sets/src/mage/cards/b/BlightHerder.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInExile;
*
* @author LevelX2
*/
-public class BlightHerder extends CardImpl {
+public final class BlightHerder extends CardImpl {
public BlightHerder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/b/BlightKeeper.java b/Mage.Sets/src/mage/cards/b/BlightKeeper.java
index b0c7d19305a..2011151b315 100644
--- a/Mage.Sets/src/mage/cards/b/BlightKeeper.java
+++ b/Mage.Sets/src/mage/cards/b/BlightKeeper.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class BlightKeeper extends CardImpl {
+public final class BlightKeeper extends CardImpl {
public BlightKeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlightMamba.java b/Mage.Sets/src/mage/cards/b/BlightMamba.java
index 0dc5c6c76a7..eaec504a1b7 100644
--- a/Mage.Sets/src/mage/cards/b/BlightMamba.java
+++ b/Mage.Sets/src/mage/cards/b/BlightMamba.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class BlightMamba extends CardImpl {
+public final class BlightMamba extends CardImpl {
public BlightMamba (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BlightSickle.java b/Mage.Sets/src/mage/cards/b/BlightSickle.java
index cb036d1fc5a..436397713a3 100644
--- a/Mage.Sets/src/mage/cards/b/BlightSickle.java
+++ b/Mage.Sets/src/mage/cards/b/BlightSickle.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author North
*/
-public class BlightSickle extends CardImpl {
+public final class BlightSickle extends CardImpl {
public BlightSickle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/b/Blightcaster.java b/Mage.Sets/src/mage/cards/b/Blightcaster.java
index 9197f743319..40cd7f6048f 100644
--- a/Mage.Sets/src/mage/cards/b/Blightcaster.java
+++ b/Mage.Sets/src/mage/cards/b/Blightcaster.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Blightcaster extends CardImpl {
+public final class Blightcaster extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an enchantment spell");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BlightedAgent.java b/Mage.Sets/src/mage/cards/b/BlightedAgent.java
index 4f3ae397ebc..fd989ea3608 100644
--- a/Mage.Sets/src/mage/cards/b/BlightedAgent.java
+++ b/Mage.Sets/src/mage/cards/b/BlightedAgent.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BlightedAgent extends CardImpl {
+public final class BlightedAgent extends CardImpl {
public BlightedAgent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BlightedBat.java b/Mage.Sets/src/mage/cards/b/BlightedBat.java
index 8923345bf21..820aa53fdc5 100644
--- a/Mage.Sets/src/mage/cards/b/BlightedBat.java
+++ b/Mage.Sets/src/mage/cards/b/BlightedBat.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class BlightedBat extends CardImpl {
+public final class BlightedBat extends CardImpl {
public BlightedBat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlightedCataract.java b/Mage.Sets/src/mage/cards/b/BlightedCataract.java
index b57cc475a13..843edfb709d 100644
--- a/Mage.Sets/src/mage/cards/b/BlightedCataract.java
+++ b/Mage.Sets/src/mage/cards/b/BlightedCataract.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class BlightedCataract extends CardImpl {
+public final class BlightedCataract extends CardImpl {
public BlightedCataract(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BlightedFen.java b/Mage.Sets/src/mage/cards/b/BlightedFen.java
index 3ac95cfd80a..8ab8eec1320 100644
--- a/Mage.Sets/src/mage/cards/b/BlightedFen.java
+++ b/Mage.Sets/src/mage/cards/b/BlightedFen.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class BlightedFen extends CardImpl {
+public final class BlightedFen extends CardImpl {
public BlightedFen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/b/BlightedGorge.java b/Mage.Sets/src/mage/cards/b/BlightedGorge.java
index d749a3ec26c..31157f2c4ac 100644
--- a/Mage.Sets/src/mage/cards/b/BlightedGorge.java
+++ b/Mage.Sets/src/mage/cards/b/BlightedGorge.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class BlightedGorge extends CardImpl {
+public final class BlightedGorge extends CardImpl {
public BlightedGorge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BlightedShaman.java b/Mage.Sets/src/mage/cards/b/BlightedShaman.java
index 6a886ec22c3..8341ef4ddb9 100644
--- a/Mage.Sets/src/mage/cards/b/BlightedShaman.java
+++ b/Mage.Sets/src/mage/cards/b/BlightedShaman.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class BlightedShaman extends CardImpl {
+public final class BlightedShaman extends CardImpl {
private static final FilterControlledPermanent filterSwamp = new FilterControlledPermanent("a Swamp");
diff --git a/Mage.Sets/src/mage/cards/b/BlightedSteppe.java b/Mage.Sets/src/mage/cards/b/BlightedSteppe.java
index 0a77b45955c..21abb51436d 100644
--- a/Mage.Sets/src/mage/cards/b/BlightedSteppe.java
+++ b/Mage.Sets/src/mage/cards/b/BlightedSteppe.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class BlightedSteppe extends CardImpl {
+public final class BlightedSteppe extends CardImpl {
public BlightedSteppe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BlightedWoodland.java b/Mage.Sets/src/mage/cards/b/BlightedWoodland.java
index 5a3646604b7..87593e5b034 100644
--- a/Mage.Sets/src/mage/cards/b/BlightedWoodland.java
+++ b/Mage.Sets/src/mage/cards/b/BlightedWoodland.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class BlightedWoodland extends CardImpl {
+public final class BlightedWoodland extends CardImpl {
public BlightedWoodland(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
@@ -57,7 +57,7 @@ public class BlightedWoodland extends CardImpl {
// {3}{G}, {T}, Sacrifice Blighted Woodland: Search your library for up to two basic land cards and put them onto the battlefield tapped. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new ManaCostsImpl<>("{3}{G}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/b/Blightning.java b/Mage.Sets/src/mage/cards/b/Blightning.java
index 6584eaa68ec..0918590f80e 100644
--- a/Mage.Sets/src/mage/cards/b/Blightning.java
+++ b/Mage.Sets/src/mage/cards/b/Blightning.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Blightning extends CardImpl {
+public final class Blightning extends CardImpl {
public Blightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlightsoilDruid.java b/Mage.Sets/src/mage/cards/b/BlightsoilDruid.java
index 8b366eb4f8a..be6e217ec66 100644
--- a/Mage.Sets/src/mage/cards/b/BlightsoilDruid.java
+++ b/Mage.Sets/src/mage/cards/b/BlightsoilDruid.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class BlightsoilDruid extends CardImpl {
+public final class BlightsoilDruid extends CardImpl {
public BlightsoilDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Blightspeaker.java b/Mage.Sets/src/mage/cards/b/Blightspeaker.java
index 95d94383ed3..df62bf1f344 100644
--- a/Mage.Sets/src/mage/cards/b/Blightspeaker.java
+++ b/Mage.Sets/src/mage/cards/b/Blightspeaker.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class Blightspeaker extends CardImpl {
+public final class Blightspeaker extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/b/BlightsteelColossus.java b/Mage.Sets/src/mage/cards/b/BlightsteelColossus.java
index 3a99674c53c..3861f0cf0a9 100644
--- a/Mage.Sets/src/mage/cards/b/BlightsteelColossus.java
+++ b/Mage.Sets/src/mage/cards/b/BlightsteelColossus.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class BlightsteelColossus extends CardImpl {
+public final class BlightsteelColossus extends CardImpl {
public BlightsteelColossus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{12}");
diff --git a/Mage.Sets/src/mage/cards/b/Blightwidow.java b/Mage.Sets/src/mage/cards/b/Blightwidow.java
index 8a2c9c734f1..17e4e0710b6 100644
--- a/Mage.Sets/src/mage/cards/b/Blightwidow.java
+++ b/Mage.Sets/src/mage/cards/b/Blightwidow.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class Blightwidow extends CardImpl {
+public final class Blightwidow extends CardImpl {
public Blightwidow (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindCreeper.java b/Mage.Sets/src/mage/cards/b/BlindCreeper.java
index 8f4483dad0d..d277baf6201 100644
--- a/Mage.Sets/src/mage/cards/b/BlindCreeper.java
+++ b/Mage.Sets/src/mage/cards/b/BlindCreeper.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Loki
*/
-public class BlindCreeper extends CardImpl {
+public final class BlindCreeper extends CardImpl {
public BlindCreeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindHunter.java b/Mage.Sets/src/mage/cards/b/BlindHunter.java
index 3ca1f7f255e..9f4c47d1a93 100644
--- a/Mage.Sets/src/mage/cards/b/BlindHunter.java
+++ b/Mage.Sets/src/mage/cards/b/BlindHunter.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class BlindHunter extends CardImpl {
+public final class BlindHunter extends CardImpl {
public BlindHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindObedience.java b/Mage.Sets/src/mage/cards/b/BlindObedience.java
index ee2b8547c3f..d5fa0ce308e 100644
--- a/Mage.Sets/src/mage/cards/b/BlindObedience.java
+++ b/Mage.Sets/src/mage/cards/b/BlindObedience.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class BlindObedience extends CardImpl {
+public final class BlindObedience extends CardImpl {
public BlindObedience(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindPhantasm.java b/Mage.Sets/src/mage/cards/b/BlindPhantasm.java
index 41abac25dd3..0367200e4c0 100644
--- a/Mage.Sets/src/mage/cards/b/BlindPhantasm.java
+++ b/Mage.Sets/src/mage/cards/b/BlindPhantasm.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BlindPhantasm extends CardImpl {
+public final class BlindPhantasm extends CardImpl {
public BlindPhantasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindSeer.java b/Mage.Sets/src/mage/cards/b/BlindSeer.java
index 083d668b6fd..2924473ec4f 100644
--- a/Mage.Sets/src/mage/cards/b/BlindSeer.java
+++ b/Mage.Sets/src/mage/cards/b/BlindSeer.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetSpellOrPermanent;
* @author LoneFox
*/
-public class BlindSeer extends CardImpl {
+public final class BlindSeer extends CardImpl {
public BlindSeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindSpotGiant.java b/Mage.Sets/src/mage/cards/b/BlindSpotGiant.java
index 1b736e2ee42..0b1aae0fefe 100644
--- a/Mage.Sets/src/mage/cards/b/BlindSpotGiant.java
+++ b/Mage.Sets/src/mage/cards/b/BlindSpotGiant.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class BlindSpotGiant extends CardImpl {
+public final class BlindSpotGiant extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control another Giant");
diff --git a/Mage.Sets/src/mage/cards/b/BlindWithAnger.java b/Mage.Sets/src/mage/cards/b/BlindWithAnger.java
index 076f4b96663..d8068eb6b7f 100644
--- a/Mage.Sets/src/mage/cards/b/BlindWithAnger.java
+++ b/Mage.Sets/src/mage/cards/b/BlindWithAnger.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class BlindWithAnger extends CardImpl {
+public final class BlindWithAnger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonlegendary creature");
diff --git a/Mage.Sets/src/mage/cards/b/BlindWorship.java b/Mage.Sets/src/mage/cards/b/BlindWorship.java
index 3f2b573df8b..6f38062c65d 100644
--- a/Mage.Sets/src/mage/cards/b/BlindWorship.java
+++ b/Mage.Sets/src/mage/cards/b/BlindWorship.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class BlindWorship extends CardImpl {
+public final class BlindWorship extends CardImpl {
public BlindWorship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindZealot.java b/Mage.Sets/src/mage/cards/b/BlindZealot.java
index aea4e84c410..df7f4f0e66d 100644
--- a/Mage.Sets/src/mage/cards/b/BlindZealot.java
+++ b/Mage.Sets/src/mage/cards/b/BlindZealot.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class BlindZealot extends CardImpl {
+public final class BlindZealot extends CardImpl {
public BlindZealot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindingAngel.java b/Mage.Sets/src/mage/cards/b/BlindingAngel.java
index a8c7fc8a4b8..1c770012496 100644
--- a/Mage.Sets/src/mage/cards/b/BlindingAngel.java
+++ b/Mage.Sets/src/mage/cards/b/BlindingAngel.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class BlindingAngel extends CardImpl {
+public final class BlindingAngel extends CardImpl {
public BlindingAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindingBeam.java b/Mage.Sets/src/mage/cards/b/BlindingBeam.java
index 549a575b482..aae5656952c 100644
--- a/Mage.Sets/src/mage/cards/b/BlindingBeam.java
+++ b/Mage.Sets/src/mage/cards/b/BlindingBeam.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BlindingBeam extends CardImpl {
+public final class BlindingBeam extends CardImpl {
public BlindingBeam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindingDrone.java b/Mage.Sets/src/mage/cards/b/BlindingDrone.java
index 352567728a4..aa417022987 100644
--- a/Mage.Sets/src/mage/cards/b/BlindingDrone.java
+++ b/Mage.Sets/src/mage/cards/b/BlindingDrone.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class BlindingDrone extends CardImpl {
+public final class BlindingDrone extends CardImpl {
public BlindingDrone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindingFlare.java b/Mage.Sets/src/mage/cards/b/BlindingFlare.java
index 22f4db052eb..119a849f38c 100644
--- a/Mage.Sets/src/mage/cards/b/BlindingFlare.java
+++ b/Mage.Sets/src/mage/cards/b/BlindingFlare.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BlindingFlare extends CardImpl {
+public final class BlindingFlare extends CardImpl {
public BlindingFlare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindingFog.java b/Mage.Sets/src/mage/cards/b/BlindingFog.java
index fbac6b90920..83e83f05fcd 100644
--- a/Mage.Sets/src/mage/cards/b/BlindingFog.java
+++ b/Mage.Sets/src/mage/cards/b/BlindingFog.java
@@ -42,7 +42,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX2
*/
-public class BlindingFog extends CardImpl {
+public final class BlindingFog extends CardImpl {
public BlindingFog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindingLight.java b/Mage.Sets/src/mage/cards/b/BlindingLight.java
index 9c128d2f4a4..5f611380b86 100644
--- a/Mage.Sets/src/mage/cards/b/BlindingLight.java
+++ b/Mage.Sets/src/mage/cards/b/BlindingLight.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*/
-public class BlindingLight extends CardImpl {
+public final class BlindingLight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonwhite creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BlindingMage.java b/Mage.Sets/src/mage/cards/b/BlindingMage.java
index 36dfaae2a91..a1346bd5ccf 100644
--- a/Mage.Sets/src/mage/cards/b/BlindingMage.java
+++ b/Mage.Sets/src/mage/cards/b/BlindingMage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BlindingMage extends CardImpl {
+public final class BlindingMage extends CardImpl {
public BlindingMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindingPowder.java b/Mage.Sets/src/mage/cards/b/BlindingPowder.java
index 801f827fc1b..89bdb63415b 100644
--- a/Mage.Sets/src/mage/cards/b/BlindingPowder.java
+++ b/Mage.Sets/src/mage/cards/b/BlindingPowder.java
@@ -45,7 +45,7 @@ import mage.constants.*;
*
* @author LevelX2
*/
-public class BlindingPowder extends CardImpl {
+public final class BlindingPowder extends CardImpl {
public BlindingPowder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindingSouleater.java b/Mage.Sets/src/mage/cards/b/BlindingSouleater.java
index 89ba8ddedc1..31f447d4df5 100644
--- a/Mage.Sets/src/mage/cards/b/BlindingSouleater.java
+++ b/Mage.Sets/src/mage/cards/b/BlindingSouleater.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BlindingSouleater extends CardImpl {
+public final class BlindingSouleater extends CardImpl {
public BlindingSouleater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BlindingSpray.java b/Mage.Sets/src/mage/cards/b/BlindingSpray.java
index e3b2800025f..a8051ee6fa1 100644
--- a/Mage.Sets/src/mage/cards/b/BlindingSpray.java
+++ b/Mage.Sets/src/mage/cards/b/BlindingSpray.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class BlindingSpray extends CardImpl {
+public final class BlindingSpray extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/b/BlinkOfAnEye.java b/Mage.Sets/src/mage/cards/b/BlinkOfAnEye.java
index f76d6319b6c..370f06028f4 100644
--- a/Mage.Sets/src/mage/cards/b/BlinkOfAnEye.java
+++ b/Mage.Sets/src/mage/cards/b/BlinkOfAnEye.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author JRHerlehy
*/
-public class BlinkOfAnEye extends CardImpl {
+public final class BlinkOfAnEye extends CardImpl {
public BlinkOfAnEye(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BlinkingSpirit.java b/Mage.Sets/src/mage/cards/b/BlinkingSpirit.java
index d4bc20bfbfb..bc6911b6361 100644
--- a/Mage.Sets/src/mage/cards/b/BlinkingSpirit.java
+++ b/Mage.Sets/src/mage/cards/b/BlinkingSpirit.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class BlinkingSpirit extends CardImpl {
+public final class BlinkingSpirit extends CardImpl {
public BlinkingSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BlinkmothInfusion.java b/Mage.Sets/src/mage/cards/b/BlinkmothInfusion.java
index 705254a6698..071099f0135 100644
--- a/Mage.Sets/src/mage/cards/b/BlinkmothInfusion.java
+++ b/Mage.Sets/src/mage/cards/b/BlinkmothInfusion.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class BlinkmothInfusion extends CardImpl {
+public final class BlinkmothInfusion extends CardImpl {
public BlinkmothInfusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{12}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BlinkmothNexus.java b/Mage.Sets/src/mage/cards/b/BlinkmothNexus.java
index ddb504a800c..11d7781d2f8 100644
--- a/Mage.Sets/src/mage/cards/b/BlinkmothNexus.java
+++ b/Mage.Sets/src/mage/cards/b/BlinkmothNexus.java
@@ -55,7 +55,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class BlinkmothNexus extends CardImpl {
+public final class BlinkmothNexus extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Blinkmoth");
diff --git a/Mage.Sets/src/mage/cards/b/BlinkmothUrn.java b/Mage.Sets/src/mage/cards/b/BlinkmothUrn.java
index 607832d265e..06fa539b03e 100644
--- a/Mage.Sets/src/mage/cards/b/BlinkmothUrn.java
+++ b/Mage.Sets/src/mage/cards/b/BlinkmothUrn.java
@@ -25,7 +25,7 @@ import mage.players.Player;
*
* @author nickmyers
*/
-public class BlinkmothUrn extends CardImpl {
+public final class BlinkmothUrn extends CardImpl {
public BlinkmothUrn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
@@ -51,7 +51,7 @@ class BlinkmothUrnEffect extends OneShotEffect {
public BlinkmothUrnEffect() {
super(Outcome.PutManaInPool);
- this.staticText = "if Blinkmoth Urn is untapped, that player adds {1} to their mana pool for each artifact he or she controls";
+ this.staticText = "if Blinkmoth Urn is untapped, that player adds {1} for each artifact he or she controls";
}
public BlinkmothUrnEffect(final BlinkmothUrnEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/b/BlinkmothWell.java b/Mage.Sets/src/mage/cards/b/BlinkmothWell.java
index bc212ad8b46..2d557bd349d 100644
--- a/Mage.Sets/src/mage/cards/b/BlinkmothWell.java
+++ b/Mage.Sets/src/mage/cards/b/BlinkmothWell.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class BlinkmothWell extends CardImpl {
+public final class BlinkmothWell extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("noncreature artifact");
diff --git a/Mage.Sets/src/mage/cards/b/BlisterBeetle.java b/Mage.Sets/src/mage/cards/b/BlisterBeetle.java
index 3cec29e1087..13b960adb56 100644
--- a/Mage.Sets/src/mage/cards/b/BlisterBeetle.java
+++ b/Mage.Sets/src/mage/cards/b/BlisterBeetle.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BlisterBeetle extends CardImpl {
+public final class BlisterBeetle extends CardImpl {
public BlisterBeetle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlistercoilWeird.java b/Mage.Sets/src/mage/cards/b/BlistercoilWeird.java
index 8e20979de20..64381f715c7 100644
--- a/Mage.Sets/src/mage/cards/b/BlistercoilWeird.java
+++ b/Mage.Sets/src/mage/cards/b/BlistercoilWeird.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
/**
* @author LevelX2
*/
-public class BlistercoilWeird extends CardImpl {
+public final class BlistercoilWeird extends CardImpl {
public BlistercoilWeird(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U/R}");
diff --git a/Mage.Sets/src/mage/cards/b/Blistergrub.java b/Mage.Sets/src/mage/cards/b/Blistergrub.java
index 3292314732c..c6d018c8bc8 100644
--- a/Mage.Sets/src/mage/cards/b/Blistergrub.java
+++ b/Mage.Sets/src/mage/cards/b/Blistergrub.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class Blistergrub extends CardImpl {
+public final class Blistergrub extends CardImpl {
public Blistergrub (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlisteringBarrier.java b/Mage.Sets/src/mage/cards/b/BlisteringBarrier.java
index bab49984c3b..a421b4b15bc 100644
--- a/Mage.Sets/src/mage/cards/b/BlisteringBarrier.java
+++ b/Mage.Sets/src/mage/cards/b/BlisteringBarrier.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BlisteringBarrier extends CardImpl {
+public final class BlisteringBarrier extends CardImpl {
public BlisteringBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlisteringDieflyn.java b/Mage.Sets/src/mage/cards/b/BlisteringDieflyn.java
index 4ffb439a6fe..71127b14bf5 100644
--- a/Mage.Sets/src/mage/cards/b/BlisteringDieflyn.java
+++ b/Mage.Sets/src/mage/cards/b/BlisteringDieflyn.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class BlisteringDieflyn extends CardImpl {
+public final class BlisteringDieflyn extends CardImpl {
public BlisteringDieflyn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlisteringFirecat.java b/Mage.Sets/src/mage/cards/b/BlisteringFirecat.java
index 54a9f406762..dd10af5d463 100644
--- a/Mage.Sets/src/mage/cards/b/BlisteringFirecat.java
+++ b/Mage.Sets/src/mage/cards/b/BlisteringFirecat.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class BlisteringFirecat extends CardImpl {
+public final class BlisteringFirecat extends CardImpl {
public BlisteringFirecat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Blisterpod.java b/Mage.Sets/src/mage/cards/b/Blisterpod.java
index fd29f78ba62..d192baedf78 100644
--- a/Mage.Sets/src/mage/cards/b/Blisterpod.java
+++ b/Mage.Sets/src/mage/cards/b/Blisterpod.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author LevelX2
*/
-public class Blisterpod extends CardImpl {
+public final class Blisterpod extends CardImpl {
public Blisterpod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BlisterstickShaman.java b/Mage.Sets/src/mage/cards/b/BlisterstickShaman.java
index be08e03f8f2..16500bcc388 100644
--- a/Mage.Sets/src/mage/cards/b/BlisterstickShaman.java
+++ b/Mage.Sets/src/mage/cards/b/BlisterstickShaman.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class BlisterstickShaman extends CardImpl {
+public final class BlisterstickShaman extends CardImpl {
public BlisterstickShaman (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlitzHellion.java b/Mage.Sets/src/mage/cards/b/BlitzHellion.java
index 3a2e5d10e8c..623e2a25179 100644
--- a/Mage.Sets/src/mage/cards/b/BlitzHellion.java
+++ b/Mage.Sets/src/mage/cards/b/BlitzHellion.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class BlitzHellion extends CardImpl {
+public final class BlitzHellion extends CardImpl {
public BlitzHellion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BlizzardElemental.java b/Mage.Sets/src/mage/cards/b/BlizzardElemental.java
index 9cb822ae5e4..ae22927ba52 100644
--- a/Mage.Sets/src/mage/cards/b/BlizzardElemental.java
+++ b/Mage.Sets/src/mage/cards/b/BlizzardElemental.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class BlizzardElemental extends CardImpl {
+public final class BlizzardElemental extends CardImpl {
public BlizzardElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BlizzardSpecter.java b/Mage.Sets/src/mage/cards/b/BlizzardSpecter.java
index 944a9c005c6..f0dbf4c647c 100644
--- a/Mage.Sets/src/mage/cards/b/BlizzardSpecter.java
+++ b/Mage.Sets/src/mage/cards/b/BlizzardSpecter.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author anonymous
*/
-public class BlizzardSpecter extends CardImpl {
+public final class BlizzardSpecter extends CardImpl {
public BlizzardSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloatedToad.java b/Mage.Sets/src/mage/cards/b/BloatedToad.java
index 90e71edfcad..95901be218e 100644
--- a/Mage.Sets/src/mage/cards/b/BloatedToad.java
+++ b/Mage.Sets/src/mage/cards/b/BloatedToad.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class BloatedToad extends CardImpl {
+public final class BloatedToad extends CardImpl {
public BloatedToad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BlockadeRunner.java b/Mage.Sets/src/mage/cards/b/BlockadeRunner.java
index c6719f7fcb5..d1b4f8fcb85 100644
--- a/Mage.Sets/src/mage/cards/b/BlockadeRunner.java
+++ b/Mage.Sets/src/mage/cards/b/BlockadeRunner.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author djbrez
*/
-public class BlockadeRunner extends CardImpl {
+public final class BlockadeRunner extends CardImpl {
public BlockadeRunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/Blockbuster.java b/Mage.Sets/src/mage/cards/b/Blockbuster.java
index 33ad356cb81..f5dda8c2619 100644
--- a/Mage.Sets/src/mage/cards/b/Blockbuster.java
+++ b/Mage.Sets/src/mage/cards/b/Blockbuster.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author fireshoes
*/
-public class Blockbuster extends CardImpl {
+public final class Blockbuster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/b/BloodArtist.java b/Mage.Sets/src/mage/cards/b/BloodArtist.java
index f1b3c383a7e..e9779c9bfff 100644
--- a/Mage.Sets/src/mage/cards/b/BloodArtist.java
+++ b/Mage.Sets/src/mage/cards/b/BloodArtist.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author noxx
*/
-public class BloodArtist extends CardImpl {
+public final class BloodArtist extends CardImpl {
public BloodArtist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodBairn.java b/Mage.Sets/src/mage/cards/b/BloodBairn.java
index 6d748852683..94779a4ef31 100644
--- a/Mage.Sets/src/mage/cards/b/BloodBairn.java
+++ b/Mage.Sets/src/mage/cards/b/BloodBairn.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class BloodBairn extends CardImpl {
+public final class BloodBairn extends CardImpl {
public BloodBairn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodBaronOfVizkopa.java b/Mage.Sets/src/mage/cards/b/BloodBaronOfVizkopa.java
index a61b06cad45..9ef7b5cd610 100644
--- a/Mage.Sets/src/mage/cards/b/BloodBaronOfVizkopa.java
+++ b/Mage.Sets/src/mage/cards/b/BloodBaronOfVizkopa.java
@@ -43,7 +43,7 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
-public class BloodBaronOfVizkopa extends CardImpl {
+public final class BloodBaronOfVizkopa extends CardImpl {
public BloodBaronOfVizkopa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodCelebrant.java b/Mage.Sets/src/mage/cards/b/BloodCelebrant.java
index 532a84646cc..329b1e033dd 100644
--- a/Mage.Sets/src/mage/cards/b/BloodCelebrant.java
+++ b/Mage.Sets/src/mage/cards/b/BloodCelebrant.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class BloodCelebrant extends CardImpl {
+public final class BloodCelebrant extends CardImpl {
public BloodCelebrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodChinFanatic.java b/Mage.Sets/src/mage/cards/b/BloodChinFanatic.java
index cc08ef2faf2..ddef93fcfec 100644
--- a/Mage.Sets/src/mage/cards/b/BloodChinFanatic.java
+++ b/Mage.Sets/src/mage/cards/b/BloodChinFanatic.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class BloodChinFanatic extends CardImpl {
+public final class BloodChinFanatic extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Warrior creature");
diff --git a/Mage.Sets/src/mage/cards/b/BloodChinRager.java b/Mage.Sets/src/mage/cards/b/BloodChinRager.java
index 2657e0931bc..c3308ea90f3 100644
--- a/Mage.Sets/src/mage/cards/b/BloodChinRager.java
+++ b/Mage.Sets/src/mage/cards/b/BloodChinRager.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class BloodChinRager extends CardImpl {
+public final class BloodChinRager extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.WARRIOR,"Warrior creatures you control");
diff --git a/Mage.Sets/src/mage/cards/b/BloodClock.java b/Mage.Sets/src/mage/cards/b/BloodClock.java
index 4dbc36dfe79..ac8d17c4450 100644
--- a/Mage.Sets/src/mage/cards/b/BloodClock.java
+++ b/Mage.Sets/src/mage/cards/b/BloodClock.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class BloodClock extends CardImpl {
+public final class BloodClock extends CardImpl {
public BloodClock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodCrypt.java b/Mage.Sets/src/mage/cards/b/BloodCrypt.java
index d176adbfd29..83483a19c8c 100644
--- a/Mage.Sets/src/mage/cards/b/BloodCrypt.java
+++ b/Mage.Sets/src/mage/cards/b/BloodCrypt.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class BloodCrypt extends CardImpl {
+public final class BloodCrypt extends CardImpl {
public BloodCrypt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/b/BloodCultist.java b/Mage.Sets/src/mage/cards/b/BloodCultist.java
index f5d1d60edfb..70a50b73e32 100644
--- a/Mage.Sets/src/mage/cards/b/BloodCultist.java
+++ b/Mage.Sets/src/mage/cards/b/BloodCultist.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BloodCultist extends CardImpl {
+public final class BloodCultist extends CardImpl {
public BloodCultist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodCursedKnight.java b/Mage.Sets/src/mage/cards/b/BloodCursedKnight.java
index 72ef09b5029..a80414bc7e2 100644
--- a/Mage.Sets/src/mage/cards/b/BloodCursedKnight.java
+++ b/Mage.Sets/src/mage/cards/b/BloodCursedKnight.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterControlledEnchantmentPermanent;
*
* @author fireshoes
*/
-public class BloodCursedKnight extends CardImpl {
+public final class BloodCursedKnight extends CardImpl {
final static private String rule1 = "As long as you control an enchantment, {this} gets +1/+1";
final static private String rule2 = "and has lifelink";
diff --git a/Mage.Sets/src/mage/cards/b/BloodFeud.java b/Mage.Sets/src/mage/cards/b/BloodFeud.java
index 565f0717938..190f55db8df 100644
--- a/Mage.Sets/src/mage/cards/b/BloodFeud.java
+++ b/Mage.Sets/src/mage/cards/b/BloodFeud.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author intimidatingant
*/
-public class BloodFeud extends CardImpl {
+public final class BloodFeud extends CardImpl {
public BloodFeud(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodFrenzy.java b/Mage.Sets/src/mage/cards/b/BloodFrenzy.java
index 85fdb37b75e..f5e9876443f 100644
--- a/Mage.Sets/src/mage/cards/b/BloodFrenzy.java
+++ b/Mage.Sets/src/mage/cards/b/BloodFrenzy.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author LoneFox
*/
-public class BloodFrenzy extends CardImpl {
+public final class BloodFrenzy extends CardImpl {
public BloodFrenzy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodFunnel.java b/Mage.Sets/src/mage/cards/b/BloodFunnel.java
index 2bf389829d6..12470ad6b4b 100644
--- a/Mage.Sets/src/mage/cards/b/BloodFunnel.java
+++ b/Mage.Sets/src/mage/cards/b/BloodFunnel.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class BloodFunnel extends CardImpl {
+public final class BloodFunnel extends CardImpl {
private static final FilterCard filter = new FilterCard("Noncreature spells");
private static final FilterSpell filterNoncreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/b/BloodHost.java b/Mage.Sets/src/mage/cards/b/BloodHost.java
index 32b85c303e3..7488c6a7243 100644
--- a/Mage.Sets/src/mage/cards/b/BloodHost.java
+++ b/Mage.Sets/src/mage/cards/b/BloodHost.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class BloodHost extends CardImpl {
+public final class BloodHost extends CardImpl {
public BloodHost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodHound.java b/Mage.Sets/src/mage/cards/b/BloodHound.java
index 02db0969e28..dab0c6846f7 100644
--- a/Mage.Sets/src/mage/cards/b/BloodHound.java
+++ b/Mage.Sets/src/mage/cards/b/BloodHound.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class BloodHound extends CardImpl {
+public final class BloodHound extends CardImpl {
public BloodHound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodKnight.java b/Mage.Sets/src/mage/cards/b/BloodKnight.java
index 3a8abb1dc1c..f4cbc81b6e8 100644
--- a/Mage.Sets/src/mage/cards/b/BloodKnight.java
+++ b/Mage.Sets/src/mage/cards/b/BloodKnight.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Quercitron
*/
-public class BloodKnight extends CardImpl {
+public final class BloodKnight extends CardImpl {
public BloodKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodLust.java b/Mage.Sets/src/mage/cards/b/BloodLust.java
index 7d8faa1ea75..777c49d806c 100644
--- a/Mage.Sets/src/mage/cards/b/BloodLust.java
+++ b/Mage.Sets/src/mage/cards/b/BloodLust.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author jeffwadsworth
*/
-public class BloodLust extends CardImpl {
+public final class BloodLust extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/b/BloodMist.java b/Mage.Sets/src/mage/cards/b/BloodMist.java
index 783e7f48e70..780a0ef163c 100644
--- a/Mage.Sets/src/mage/cards/b/BloodMist.java
+++ b/Mage.Sets/src/mage/cards/b/BloodMist.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class BloodMist extends CardImpl {
+public final class BloodMist extends CardImpl {
public BloodMist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodMoon.java b/Mage.Sets/src/mage/cards/b/BloodMoon.java
index ac4c466cf7f..cc9825509ca 100644
--- a/Mage.Sets/src/mage/cards/b/BloodMoon.java
+++ b/Mage.Sets/src/mage/cards/b/BloodMoon.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class BloodMoon extends CardImpl {
+public final class BloodMoon extends CardImpl {
public BloodMoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodOath.java b/Mage.Sets/src/mage/cards/b/BloodOath.java
index f2066e7a367..7a0cfdccce9 100644
--- a/Mage.Sets/src/mage/cards/b/BloodOath.java
+++ b/Mage.Sets/src/mage/cards/b/BloodOath.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class BloodOath extends CardImpl {
+public final class BloodOath extends CardImpl {
public BloodOath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodOfTheMartyr.java b/Mage.Sets/src/mage/cards/b/BloodOfTheMartyr.java
index cf24c13827a..2e56c6293e3 100644
--- a/Mage.Sets/src/mage/cards/b/BloodOfTheMartyr.java
+++ b/Mage.Sets/src/mage/cards/b/BloodOfTheMartyr.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class BloodOfTheMartyr extends CardImpl {
+public final class BloodOfTheMartyr extends CardImpl {
public BloodOfTheMartyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodOgre.java b/Mage.Sets/src/mage/cards/b/BloodOgre.java
index 6160119ba98..ddea3c26713 100644
--- a/Mage.Sets/src/mage/cards/b/BloodOgre.java
+++ b/Mage.Sets/src/mage/cards/b/BloodOgre.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class BloodOgre extends CardImpl {
+public final class BloodOgre extends CardImpl {
public BloodOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodPet.java b/Mage.Sets/src/mage/cards/b/BloodPet.java
index ccddc8631e9..b5d3c40902a 100644
--- a/Mage.Sets/src/mage/cards/b/BloodPet.java
+++ b/Mage.Sets/src/mage/cards/b/BloodPet.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class BloodPet extends CardImpl {
+public final class BloodPet extends CardImpl {
public BloodPet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodReckoning.java b/Mage.Sets/src/mage/cards/b/BloodReckoning.java
index 2cd90d1799d..42f4676c70a 100644
--- a/Mage.Sets/src/mage/cards/b/BloodReckoning.java
+++ b/Mage.Sets/src/mage/cards/b/BloodReckoning.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author jeffwadsworth
*/
-public class BloodReckoning extends CardImpl {
+public final class BloodReckoning extends CardImpl {
public BloodReckoning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodRites.java b/Mage.Sets/src/mage/cards/b/BloodRites.java
index 7a08a0239f3..bfae9d9d564 100644
--- a/Mage.Sets/src/mage/cards/b/BloodRites.java
+++ b/Mage.Sets/src/mage/cards/b/BloodRites.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author Loki
*/
-public class BloodRites extends CardImpl {
+public final class BloodRites extends CardImpl {
public BloodRites(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodScrivener.java b/Mage.Sets/src/mage/cards/b/BloodScrivener.java
index 86de6d8e774..c9653c82efa 100644
--- a/Mage.Sets/src/mage/cards/b/BloodScrivener.java
+++ b/Mage.Sets/src/mage/cards/b/BloodScrivener.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*/
-public class BloodScrivener extends CardImpl {
+public final class BloodScrivener extends CardImpl {
public BloodScrivener (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodSeeker.java b/Mage.Sets/src/mage/cards/b/BloodSeeker.java
index 6958763a9dd..1e18cd67d11 100644
--- a/Mage.Sets/src/mage/cards/b/BloodSeeker.java
+++ b/Mage.Sets/src/mage/cards/b/BloodSeeker.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class BloodSeeker extends CardImpl {
+public final class BloodSeeker extends CardImpl {
public BloodSeeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodSpeaker.java b/Mage.Sets/src/mage/cards/b/BloodSpeaker.java
index 0dc96ed894b..4d60ea1e67f 100644
--- a/Mage.Sets/src/mage/cards/b/BloodSpeaker.java
+++ b/Mage.Sets/src/mage/cards/b/BloodSpeaker.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class BloodSpeaker extends CardImpl {
+public final class BloodSpeaker extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Demon under your control");
private static final FilterCard filterCard = new FilterCard("Demon card");
diff --git a/Mage.Sets/src/mage/cards/b/BloodSun.java b/Mage.Sets/src/mage/cards/b/BloodSun.java
index d72953070a7..25afd0ad7a2 100644
--- a/Mage.Sets/src/mage/cards/b/BloodSun.java
+++ b/Mage.Sets/src/mage/cards/b/BloodSun.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class BloodSun extends CardImpl {
+public final class BloodSun extends CardImpl {
public BloodSun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodTithe.java b/Mage.Sets/src/mage/cards/b/BloodTithe.java
index 91c594b5bc8..164e7bb57a9 100644
--- a/Mage.Sets/src/mage/cards/b/BloodTithe.java
+++ b/Mage.Sets/src/mage/cards/b/BloodTithe.java
@@ -41,7 +41,7 @@ import mage.game.Game;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BloodTithe extends CardImpl {
+public final class BloodTithe extends CardImpl {
public BloodTithe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodTollHarpy.java b/Mage.Sets/src/mage/cards/b/BloodTollHarpy.java
index 4ed3c3b3d53..35d8795ea95 100644
--- a/Mage.Sets/src/mage/cards/b/BloodTollHarpy.java
+++ b/Mage.Sets/src/mage/cards/b/BloodTollHarpy.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BloodTollHarpy extends CardImpl {
+public final class BloodTollHarpy extends CardImpl {
public BloodTollHarpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodTribute.java b/Mage.Sets/src/mage/cards/b/BloodTribute.java
index 83b549e5a60..e0602eb4f86 100644
--- a/Mage.Sets/src/mage/cards/b/BloodTribute.java
+++ b/Mage.Sets/src/mage/cards/b/BloodTribute.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetOpponent;
*
* @author North
*/
-public class BloodTribute extends CardImpl {
+public final class BloodTribute extends CardImpl {
public BloodTribute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodTyrant.java b/Mage.Sets/src/mage/cards/b/BloodTyrant.java
index f5f16eab4d7..62883c5244f 100644
--- a/Mage.Sets/src/mage/cards/b/BloodTyrant.java
+++ b/Mage.Sets/src/mage/cards/b/BloodTyrant.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class BloodTyrant extends CardImpl {
+public final class BloodTyrant extends CardImpl {
public BloodTyrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodVassal.java b/Mage.Sets/src/mage/cards/b/BloodVassal.java
index abd52bcb4f3..f75a80961ee 100644
--- a/Mage.Sets/src/mage/cards/b/BloodVassal.java
+++ b/Mage.Sets/src/mage/cards/b/BloodVassal.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class BloodVassal extends CardImpl {
+public final class BloodVassal extends CardImpl {
public BloodVassal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodbondMarch.java b/Mage.Sets/src/mage/cards/b/BloodbondMarch.java
index f8c9e71107a..1a8668b8584 100644
--- a/Mage.Sets/src/mage/cards/b/BloodbondMarch.java
+++ b/Mage.Sets/src/mage/cards/b/BloodbondMarch.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author JRHerlehy
*/
-public class BloodbondMarch extends CardImpl {
+public final class BloodbondMarch extends CardImpl {
public BloodbondMarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodbondVampire.java b/Mage.Sets/src/mage/cards/b/BloodbondVampire.java
index 8bdd79de84a..c027902b0a4 100644
--- a/Mage.Sets/src/mage/cards/b/BloodbondVampire.java
+++ b/Mage.Sets/src/mage/cards/b/BloodbondVampire.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class BloodbondVampire extends CardImpl {
+public final class BloodbondVampire extends CardImpl {
public BloodbondVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodbornScoundrels.java b/Mage.Sets/src/mage/cards/b/BloodbornScoundrels.java
new file mode 100644
index 00000000000..5c89ed24991
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/b/BloodbornScoundrels.java
@@ -0,0 +1,76 @@
+/*
+ * 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.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.abilities.effects.common.LoseLifeTargetEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.AssistAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.target.common.TargetOpponent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class BloodbornScoundrels extends CardImpl {
+
+ public BloodbornScoundrels(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}");
+
+ this.subtype.add(SubType.VAMPIRE);
+ this.subtype.add(SubType.ROGUE);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(4);
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // When Bloodborn Scoundrels enters the battlefield, target opponent loses 2 life and you gain 2 life.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new LoseLifeTargetEffect(2));
+ ability.addEffect(new GainLifeEffect(2).setText("and you gain 2 life"));
+ ability.addTarget(new TargetOpponent());
+ this.addAbility(ability);
+ }
+
+ public BloodbornScoundrels(final BloodbornScoundrels card) {
+ super(card);
+ }
+
+ @Override
+ public BloodbornScoundrels copy() {
+ return new BloodbornScoundrels(this);
+ }
+}
+// greetings, good hunter
diff --git a/Mage.Sets/src/mage/cards/b/BloodbraidElf.java b/Mage.Sets/src/mage/cards/b/BloodbraidElf.java
index f1a77888263..a00c16f2c30 100644
--- a/Mage.Sets/src/mage/cards/b/BloodbraidElf.java
+++ b/Mage.Sets/src/mage/cards/b/BloodbraidElf.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BloodbraidElf extends CardImpl {
+public final class BloodbraidElf extends CardImpl {
public BloodbraidElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Bloodbriar.java b/Mage.Sets/src/mage/cards/b/Bloodbriar.java
index 9f556fd2a08..e1233e62b9d 100644
--- a/Mage.Sets/src/mage/cards/b/Bloodbriar.java
+++ b/Mage.Sets/src/mage/cards/b/Bloodbriar.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class Bloodbriar extends CardImpl {
+public final class Bloodbriar extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent("another permanent");
diff --git a/Mage.Sets/src/mage/cards/b/BloodchiefAscension.java b/Mage.Sets/src/mage/cards/b/BloodchiefAscension.java
index b83099f8c87..0fb6562871e 100644
--- a/Mage.Sets/src/mage/cards/b/BloodchiefAscension.java
+++ b/Mage.Sets/src/mage/cards/b/BloodchiefAscension.java
@@ -51,7 +51,7 @@ import mage.filter.FilterCard;
*
* @author LevelX2
*/
-public class BloodchiefAscension extends CardImpl {
+public final class BloodchiefAscension extends CardImpl {
public BloodchiefAscension(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodcrazedGoblin.java b/Mage.Sets/src/mage/cards/b/BloodcrazedGoblin.java
index 5a401168467..b04a0c2f86f 100644
--- a/Mage.Sets/src/mage/cards/b/BloodcrazedGoblin.java
+++ b/Mage.Sets/src/mage/cards/b/BloodcrazedGoblin.java
@@ -48,7 +48,7 @@ import mage.watchers.common.BloodthirstWatcher;
* @author BetaSteward_at_googlemail.com
* @author North
*/
-public class BloodcrazedGoblin extends CardImpl {
+public final class BloodcrazedGoblin extends CardImpl {
public BloodcrazedGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java b/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java
index 93accc1ed00..f7fd248e761 100644
--- a/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java
+++ b/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BloodcrazedHoplite extends CardImpl {
+public final class BloodcrazedHoplite extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/b/BloodcrazedNeonate.java b/Mage.Sets/src/mage/cards/b/BloodcrazedNeonate.java
index 667ed6421a6..856fda903f1 100644
--- a/Mage.Sets/src/mage/cards/b/BloodcrazedNeonate.java
+++ b/Mage.Sets/src/mage/cards/b/BloodcrazedNeonate.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class BloodcrazedNeonate extends CardImpl {
+public final class BloodcrazedNeonate extends CardImpl {
public BloodcrazedNeonate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodcrazedPaladin.java b/Mage.Sets/src/mage/cards/b/BloodcrazedPaladin.java
index af835b494dd..2bb9f6d1a96 100644
--- a/Mage.Sets/src/mage/cards/b/BloodcrazedPaladin.java
+++ b/Mage.Sets/src/mage/cards/b/BloodcrazedPaladin.java
@@ -45,7 +45,7 @@ import mage.watchers.common.CreaturesDiedWatcher;
*
* @author TheElk801
*/
-public class BloodcrazedPaladin extends CardImpl {
+public final class BloodcrazedPaladin extends CardImpl {
public BloodcrazedPaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Bloodcurdler.java b/Mage.Sets/src/mage/cards/b/Bloodcurdler.java
index 4cce9b701f6..0c17bba5087 100644
--- a/Mage.Sets/src/mage/cards/b/Bloodcurdler.java
+++ b/Mage.Sets/src/mage/cards/b/Bloodcurdler.java
@@ -50,7 +50,7 @@ import mage.constants.*;
*
* @author cbt33, plopman (Immortal Coil)
*/
-public class Bloodcurdler extends CardImpl {
+public final class Bloodcurdler extends CardImpl {
public Bloodcurdler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodcurdlingScream.java b/Mage.Sets/src/mage/cards/b/BloodcurdlingScream.java
index e8bd1f841a5..22bff0b9eac 100644
--- a/Mage.Sets/src/mage/cards/b/BloodcurdlingScream.java
+++ b/Mage.Sets/src/mage/cards/b/BloodcurdlingScream.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BloodcurdlingScream extends CardImpl {
+public final class BloodcurdlingScream extends CardImpl {
public BloodcurdlingScream(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodfellCaves.java b/Mage.Sets/src/mage/cards/b/BloodfellCaves.java
index d0cb5b2a903..ea6e30ed3eb 100644
--- a/Mage.Sets/src/mage/cards/b/BloodfellCaves.java
+++ b/Mage.Sets/src/mage/cards/b/BloodfellCaves.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class BloodfellCaves extends CardImpl {
+public final class BloodfellCaves extends CardImpl {
public BloodfellCaves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BloodfireColossus.java b/Mage.Sets/src/mage/cards/b/BloodfireColossus.java
index 5f26d8dccbf..04306847c8f 100644
--- a/Mage.Sets/src/mage/cards/b/BloodfireColossus.java
+++ b/Mage.Sets/src/mage/cards/b/BloodfireColossus.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class BloodfireColossus extends CardImpl {
+public final class BloodfireColossus extends CardImpl {
public BloodfireColossus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodfireDwarf.java b/Mage.Sets/src/mage/cards/b/BloodfireDwarf.java
index 31f7d00966f..38630cb0b02 100644
--- a/Mage.Sets/src/mage/cards/b/BloodfireDwarf.java
+++ b/Mage.Sets/src/mage/cards/b/BloodfireDwarf.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
/**
* @author Loki
*/
-public class BloodfireDwarf extends CardImpl {
+public final class BloodfireDwarf extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/b/BloodfireEnforcers.java b/Mage.Sets/src/mage/cards/b/BloodfireEnforcers.java
index 3868a0656f1..0073921b696 100644
--- a/Mage.Sets/src/mage/cards/b/BloodfireEnforcers.java
+++ b/Mage.Sets/src/mage/cards/b/BloodfireEnforcers.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class BloodfireEnforcers extends CardImpl {
+public final class BloodfireEnforcers extends CardImpl {
public BloodfireEnforcers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodfireExpert.java b/Mage.Sets/src/mage/cards/b/BloodfireExpert.java
index 9fd7fa96e9b..b07c3a2acc5 100644
--- a/Mage.Sets/src/mage/cards/b/BloodfireExpert.java
+++ b/Mage.Sets/src/mage/cards/b/BloodfireExpert.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BloodfireExpert extends CardImpl {
+public final class BloodfireExpert extends CardImpl {
public BloodfireExpert(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodfireInfusion.java b/Mage.Sets/src/mage/cards/b/BloodfireInfusion.java
index ba798c3045d..2c5098eccd8 100644
--- a/Mage.Sets/src/mage/cards/b/BloodfireInfusion.java
+++ b/Mage.Sets/src/mage/cards/b/BloodfireInfusion.java
@@ -53,10 +53,10 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class BloodfireInfusion extends CardImpl {
+public final class BloodfireInfusion extends CardImpl {
public BloodfireInfusion(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
this.subtype.add(SubType.AURA);
// Enchant creature you control
@@ -65,14 +65,14 @@ public class BloodfireInfusion extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
-
+
// {R}, Sacrifice enchanted creature: Bloodfire Infusion deals damage equal to the sacrificed creature's power to each creature.
Effect effect = new DamageAllEffect(new AttachedPermanentPowerCount(), new FilterCreaturePermanent());
effect.setText("{this} deals damage equal to the sacrificed creature's power to each creature");
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{R}"));
ability2.addCost(new SacrificeAttachedCost());
this.addAbility(ability2);
-
+
}
public BloodfireInfusion(final BloodfireInfusion card) {
@@ -90,10 +90,11 @@ class AttachedPermanentPowerCount implements DynamicValue {
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
Permanent attachment = game.getPermanentOrLKIBattlefield(sourceAbility.getSourceId());
+ if (attachment == null) {
+ return 0;
+ }
Permanent permanent = game.getPermanentOrLKIBattlefield(attachment.getAttachedTo());
- if (attachment != null
- && permanent != null
- && (permanent.getPower().getValue() >= 0)) {
+ if (permanent != null && (permanent.getPower().getValue() >= 0)) {
return permanent.getPower().getValue();
}
return 0;
diff --git a/Mage.Sets/src/mage/cards/b/BloodfireKavu.java b/Mage.Sets/src/mage/cards/b/BloodfireKavu.java
index 3e50bd08fe3..026cd60726e 100644
--- a/Mage.Sets/src/mage/cards/b/BloodfireKavu.java
+++ b/Mage.Sets/src/mage/cards/b/BloodfireKavu.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterCreaturePermanent;
/**
* @author Loki
*/
-public class BloodfireKavu extends CardImpl {
+public final class BloodfireKavu extends CardImpl {
public BloodfireKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodfireMentor.java b/Mage.Sets/src/mage/cards/b/BloodfireMentor.java
index 7c070be8368..6babc019216 100644
--- a/Mage.Sets/src/mage/cards/b/BloodfireMentor.java
+++ b/Mage.Sets/src/mage/cards/b/BloodfireMentor.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class BloodfireMentor extends CardImpl {
+public final class BloodfireMentor extends CardImpl {
public BloodfireMentor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodflowConnoisseur.java b/Mage.Sets/src/mage/cards/b/BloodflowConnoisseur.java
index a276f548590..c650716e5c9 100644
--- a/Mage.Sets/src/mage/cards/b/BloodflowConnoisseur.java
+++ b/Mage.Sets/src/mage/cards/b/BloodflowConnoisseur.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author noxx
*/
-public class BloodflowConnoisseur extends CardImpl {
+public final class BloodflowConnoisseur extends CardImpl {
public BloodflowConnoisseur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodforgedBattleAxe.java b/Mage.Sets/src/mage/cards/b/BloodforgedBattleAxe.java
index 98d934b7c51..8d59dae28b1 100644
--- a/Mage.Sets/src/mage/cards/b/BloodforgedBattleAxe.java
+++ b/Mage.Sets/src/mage/cards/b/BloodforgedBattleAxe.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class BloodforgedBattleAxe extends CardImpl {
+public final class BloodforgedBattleAxe extends CardImpl {
public BloodforgedBattleAxe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodfrayGiant.java b/Mage.Sets/src/mage/cards/b/BloodfrayGiant.java
index d06a7c77ba7..76254a81cf6 100644
--- a/Mage.Sets/src/mage/cards/b/BloodfrayGiant.java
+++ b/Mage.Sets/src/mage/cards/b/BloodfrayGiant.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BloodfrayGiant extends CardImpl {
+public final class BloodfrayGiant extends CardImpl {
public BloodfrayGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Bloodghast.java b/Mage.Sets/src/mage/cards/b/Bloodghast.java
index fa54386a59c..597f83eff5b 100644
--- a/Mage.Sets/src/mage/cards/b/Bloodghast.java
+++ b/Mage.Sets/src/mage/cards/b/Bloodghast.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author maurer.it_at_gmail.com
*/
-public class Bloodghast extends CardImpl {
+public final class Bloodghast extends CardImpl {
public Bloodghast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodgiftDemon.java b/Mage.Sets/src/mage/cards/b/BloodgiftDemon.java
index 6860d0ccc85..36b6c27d55a 100644
--- a/Mage.Sets/src/mage/cards/b/BloodgiftDemon.java
+++ b/Mage.Sets/src/mage/cards/b/BloodgiftDemon.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class BloodgiftDemon extends CardImpl {
+public final class BloodgiftDemon extends CardImpl {
public BloodgiftDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodhallOoze.java b/Mage.Sets/src/mage/cards/b/BloodhallOoze.java
index a5722f3d88e..40a3d86f593 100644
--- a/Mage.Sets/src/mage/cards/b/BloodhallOoze.java
+++ b/Mage.Sets/src/mage/cards/b/BloodhallOoze.java
@@ -50,7 +50,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author loki
*/
-public class BloodhallOoze extends CardImpl {
+public final class BloodhallOoze extends CardImpl {
public BloodhallOoze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodhallPriest.java b/Mage.Sets/src/mage/cards/b/BloodhallPriest.java
index 3139813d163..fae3db7944b 100644
--- a/Mage.Sets/src/mage/cards/b/BloodhallPriest.java
+++ b/Mage.Sets/src/mage/cards/b/BloodhallPriest.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class BloodhallPriest extends CardImpl {
+public final class BloodhallPriest extends CardImpl {
public BloodhallPriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodhunterBat.java b/Mage.Sets/src/mage/cards/b/BloodhunterBat.java
index f19d15ee593..9486bf5b220 100644
--- a/Mage.Sets/src/mage/cards/b/BloodhunterBat.java
+++ b/Mage.Sets/src/mage/cards/b/BloodhunterBat.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class BloodhunterBat extends CardImpl {
+public final class BloodhunterBat extends CardImpl {
public BloodhunterBat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodhuskRitualist.java b/Mage.Sets/src/mage/cards/b/BloodhuskRitualist.java
index f1f7656ae47..2be3bcba099 100644
--- a/Mage.Sets/src/mage/cards/b/BloodhuskRitualist.java
+++ b/Mage.Sets/src/mage/cards/b/BloodhuskRitualist.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class BloodhuskRitualist extends CardImpl {
+public final class BloodhuskRitualist extends CardImpl {
public BloodhuskRitualist (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodiedGhost.java b/Mage.Sets/src/mage/cards/b/BloodiedGhost.java
index b275c22beac..902988343e1 100644
--- a/Mage.Sets/src/mage/cards/b/BloodiedGhost.java
+++ b/Mage.Sets/src/mage/cards/b/BloodiedGhost.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class BloodiedGhost extends CardImpl {
+public final class BloodiedGhost extends CardImpl {
public BloodiedGhost (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W/B}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodletterQuill.java b/Mage.Sets/src/mage/cards/b/BloodletterQuill.java
index c7b12eb8896..f879e74d4b7 100644
--- a/Mage.Sets/src/mage/cards/b/BloodletterQuill.java
+++ b/Mage.Sets/src/mage/cards/b/BloodletterQuill.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class BloodletterQuill extends CardImpl {
+public final class BloodletterQuill extends CardImpl {
public BloodletterQuill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodlineKeeper.java b/Mage.Sets/src/mage/cards/b/BloodlineKeeper.java
index cf8bf56e998..5b862ba3f96 100644
--- a/Mage.Sets/src/mage/cards/b/BloodlineKeeper.java
+++ b/Mage.Sets/src/mage/cards/b/BloodlineKeeper.java
@@ -54,7 +54,7 @@ import mage.game.permanent.token.VampireToken;
*
* @author Loki
*/
-public class BloodlineKeeper extends CardImpl {
+public final class BloodlineKeeper extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control five or more Vampires");
diff --git a/Mage.Sets/src/mage/cards/b/BloodlineNecromancer.java b/Mage.Sets/src/mage/cards/b/BloodlineNecromancer.java
index 0f5ad87392b..563c0d1e688 100644
--- a/Mage.Sets/src/mage/cards/b/BloodlineNecromancer.java
+++ b/Mage.Sets/src/mage/cards/b/BloodlineNecromancer.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class BloodlineNecromancer extends CardImpl {
+public final class BloodlineNecromancer extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("Vampire or Wizard creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/b/BloodlineShaman.java b/Mage.Sets/src/mage/cards/b/BloodlineShaman.java
index 183e7ea969d..38123f93781 100644
--- a/Mage.Sets/src/mage/cards/b/BloodlineShaman.java
+++ b/Mage.Sets/src/mage/cards/b/BloodlineShaman.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class BloodlineShaman extends CardImpl {
+public final class BloodlineShaman extends CardImpl {
public BloodlineShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodlordOfVaasgoth.java b/Mage.Sets/src/mage/cards/b/BloodlordOfVaasgoth.java
index 0495c28a61f..6cb95585954 100644
--- a/Mage.Sets/src/mage/cards/b/BloodlordOfVaasgoth.java
+++ b/Mage.Sets/src/mage/cards/b/BloodlordOfVaasgoth.java
@@ -47,7 +47,7 @@ import mage.game.stack.Spell;
/**
* @author nantuko
*/
-public class BloodlordOfVaasgoth extends CardImpl {
+public final class BloodlordOfVaasgoth extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a Vampire creature spell");
diff --git a/Mage.Sets/src/mage/cards/b/BloodlustInciter.java b/Mage.Sets/src/mage/cards/b/BloodlustInciter.java
index b26d3942849..c96f0ea5723 100644
--- a/Mage.Sets/src/mage/cards/b/BloodlustInciter.java
+++ b/Mage.Sets/src/mage/cards/b/BloodlustInciter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BloodlustInciter extends CardImpl {
+public final class BloodlustInciter extends CardImpl {
public BloodlustInciter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodmadVampire.java b/Mage.Sets/src/mage/cards/b/BloodmadVampire.java
index 7c6bb850794..4d70a4b3463 100644
--- a/Mage.Sets/src/mage/cards/b/BloodmadVampire.java
+++ b/Mage.Sets/src/mage/cards/b/BloodmadVampire.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class BloodmadVampire extends CardImpl {
+public final class BloodmadVampire extends CardImpl {
public BloodmadVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodmarkMentor.java b/Mage.Sets/src/mage/cards/b/BloodmarkMentor.java
index 9f4886ede3a..039c9b6541c 100644
--- a/Mage.Sets/src/mage/cards/b/BloodmarkMentor.java
+++ b/Mage.Sets/src/mage/cards/b/BloodmarkMentor.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class BloodmarkMentor extends CardImpl {
+public final class BloodmarkMentor extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Red creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BloodpyreElemental.java b/Mage.Sets/src/mage/cards/b/BloodpyreElemental.java
index da6e59b39c8..dfdd7250d3d 100644
--- a/Mage.Sets/src/mage/cards/b/BloodpyreElemental.java
+++ b/Mage.Sets/src/mage/cards/b/BloodpyreElemental.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class BloodpyreElemental extends CardImpl {
+public final class BloodpyreElemental extends CardImpl {
public BloodpyreElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodrageBrawler.java b/Mage.Sets/src/mage/cards/b/BloodrageBrawler.java
index f39a641a833..dac83dd307c 100644
--- a/Mage.Sets/src/mage/cards/b/BloodrageBrawler.java
+++ b/Mage.Sets/src/mage/cards/b/BloodrageBrawler.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class BloodrageBrawler extends CardImpl {
+public final class BloodrageBrawler extends CardImpl {
public BloodrageBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodrageVampire.java b/Mage.Sets/src/mage/cards/b/BloodrageVampire.java
index 98f512749f8..3dbcaaf9b63 100644
--- a/Mage.Sets/src/mage/cards/b/BloodrageVampire.java
+++ b/Mage.Sets/src/mage/cards/b/BloodrageVampire.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BloodrageVampire extends CardImpl {
+public final class BloodrageVampire extends CardImpl {
public BloodrageVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodriteInvoker.java b/Mage.Sets/src/mage/cards/b/BloodriteInvoker.java
index a2d2e29f938..e6e13d3ed92 100644
--- a/Mage.Sets/src/mage/cards/b/BloodriteInvoker.java
+++ b/Mage.Sets/src/mage/cards/b/BloodriteInvoker.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class BloodriteInvoker extends CardImpl {
+public final class BloodriteInvoker extends CardImpl {
public BloodriteInvoker (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodrockCyclops.java b/Mage.Sets/src/mage/cards/b/BloodrockCyclops.java
index 6367ac1bcaf..894140adafe 100644
--- a/Mage.Sets/src/mage/cards/b/BloodrockCyclops.java
+++ b/Mage.Sets/src/mage/cards/b/BloodrockCyclops.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class BloodrockCyclops extends CardImpl {
+public final class BloodrockCyclops extends CardImpl {
public BloodrockCyclops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodscaleProwler.java b/Mage.Sets/src/mage/cards/b/BloodscaleProwler.java
index f9f05a36e3a..59a0db8aad4 100644
--- a/Mage.Sets/src/mage/cards/b/BloodscaleProwler.java
+++ b/Mage.Sets/src/mage/cards/b/BloodscaleProwler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class BloodscaleProwler extends CardImpl {
+public final class BloodscaleProwler extends CardImpl {
public BloodscaleProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Bloodscent.java b/Mage.Sets/src/mage/cards/b/Bloodscent.java
index 2f1d02f9daa..277c017d09e 100644
--- a/Mage.Sets/src/mage/cards/b/Bloodscent.java
+++ b/Mage.Sets/src/mage/cards/b/Bloodscent.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Bloodscent extends CardImpl {
+public final class Bloodscent extends CardImpl {
public Bloodscent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodshedFever.java b/Mage.Sets/src/mage/cards/b/BloodshedFever.java
index 3886ab33799..3eeb9205ef1 100644
--- a/Mage.Sets/src/mage/cards/b/BloodshedFever.java
+++ b/Mage.Sets/src/mage/cards/b/BloodshedFever.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class BloodshedFever extends CardImpl {
+public final class BloodshedFever extends CardImpl {
public BloodshedFever(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodshotCyclops.java b/Mage.Sets/src/mage/cards/b/BloodshotCyclops.java
index 46b51b5f1f3..f7cea4885e8 100644
--- a/Mage.Sets/src/mage/cards/b/BloodshotCyclops.java
+++ b/Mage.Sets/src/mage/cards/b/BloodshotCyclops.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Backfir3
*/
-public class BloodshotCyclops extends CardImpl {
+public final class BloodshotCyclops extends CardImpl {
public BloodshotCyclops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodshotTrainee.java b/Mage.Sets/src/mage/cards/b/BloodshotTrainee.java
index 007d6846395..8db8ca0995a 100644
--- a/Mage.Sets/src/mage/cards/b/BloodshotTrainee.java
+++ b/Mage.Sets/src/mage/cards/b/BloodshotTrainee.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BloodshotTrainee extends CardImpl {
+public final class BloodshotTrainee extends CardImpl {
public BloodshotTrainee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodsoakedChampion.java b/Mage.Sets/src/mage/cards/b/BloodsoakedChampion.java
index 953b4c64c26..233fa80038b 100644
--- a/Mage.Sets/src/mage/cards/b/BloodsoakedChampion.java
+++ b/Mage.Sets/src/mage/cards/b/BloodsoakedChampion.java
@@ -46,7 +46,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author emerald000
*/
-public class BloodsoakedChampion extends CardImpl {
+public final class BloodsoakedChampion extends CardImpl {
public BloodsoakedChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodsporeThrinax.java b/Mage.Sets/src/mage/cards/b/BloodsporeThrinax.java
index 4de82704762..ac1e8b6c4cf 100644
--- a/Mage.Sets/src/mage/cards/b/BloodsporeThrinax.java
+++ b/Mage.Sets/src/mage/cards/b/BloodsporeThrinax.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class BloodsporeThrinax extends CardImpl {
+public final class BloodsporeThrinax extends CardImpl {
public BloodsporeThrinax(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodstainedMire.java b/Mage.Sets/src/mage/cards/b/BloodstainedMire.java
index dddadf3fbb8..5f544f9b9f3 100644
--- a/Mage.Sets/src/mage/cards/b/BloodstainedMire.java
+++ b/Mage.Sets/src/mage/cards/b/BloodstainedMire.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class BloodstainedMire extends CardImpl {
+public final class BloodstainedMire extends CardImpl {
public BloodstainedMire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BloodstokeHowler.java b/Mage.Sets/src/mage/cards/b/BloodstokeHowler.java
index 5e183305c5d..d7abbb277a4 100644
--- a/Mage.Sets/src/mage/cards/b/BloodstokeHowler.java
+++ b/Mage.Sets/src/mage/cards/b/BloodstokeHowler.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class BloodstokeHowler extends CardImpl {
+public final class BloodstokeHowler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Beast creatures you control");
diff --git a/Mage.Sets/src/mage/cards/b/BloodstoneCameo.java b/Mage.Sets/src/mage/cards/b/BloodstoneCameo.java
index e5fd170d973..a99062eba99 100644
--- a/Mage.Sets/src/mage/cards/b/BloodstoneCameo.java
+++ b/Mage.Sets/src/mage/cards/b/BloodstoneCameo.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class BloodstoneCameo extends CardImpl {
+public final class BloodstoneCameo extends CardImpl {
public BloodstoneCameo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodstoneGoblin.java b/Mage.Sets/src/mage/cards/b/BloodstoneGoblin.java
index c3fc22c58ea..41a348114fa 100644
--- a/Mage.Sets/src/mage/cards/b/BloodstoneGoblin.java
+++ b/Mage.Sets/src/mage/cards/b/BloodstoneGoblin.java
@@ -49,7 +49,7 @@ import mage.game.stack.Spell;
*
* @author TheElk801
*/
-public class BloodstoneGoblin extends CardImpl {
+public final class BloodstoneGoblin extends CardImpl {
public BloodstoneGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodswornSteward.java b/Mage.Sets/src/mage/cards/b/BloodswornSteward.java
index 8ed3d569f39..a5603ff00c6 100644
--- a/Mage.Sets/src/mage/cards/b/BloodswornSteward.java
+++ b/Mage.Sets/src/mage/cards/b/BloodswornSteward.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.CommanderPredicate;
*
* @author Saga
*/
-public class BloodswornSteward extends CardImpl {
+public final class BloodswornSteward extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Commander creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BloodtallowCandle.java b/Mage.Sets/src/mage/cards/b/BloodtallowCandle.java
index 275db8cd679..d088d95c473 100644
--- a/Mage.Sets/src/mage/cards/b/BloodtallowCandle.java
+++ b/Mage.Sets/src/mage/cards/b/BloodtallowCandle.java
@@ -1,76 +1,76 @@
-/*
- * 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 mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.SacrificeSourceCost;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.mana.GenericManaCost;
-import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Zone;
-import mage.filter.StaticFilters;
-import mage.target.common.TargetCardInLibrary;
-
-import java.util.UUID;
-import mage.abilities.effects.common.continuous.BoostTargetEffect;
-import mage.constants.Duration;
-import mage.target.common.TargetCreaturePermanent;
-
-/**
- *
- * @author Rystan
- */
-public class BloodtallowCandle extends CardImpl {
-
- public BloodtallowCandle(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
-
- // {6}, {T}, Sacrifice Bloodtallow Candle: Target creature gets -5/-5 until end of turn.
- Ability ability = new SimpleActivatedAbility(
- new BoostTargetEffect(-5, -5, Duration.EndOfTurn),
- new GenericManaCost(6));
- ability.addCost(new TapSourceCost());
- ability.addCost(new SacrificeSourceCost());
- ability.addTarget(new TargetCreaturePermanent());
-
- this.addAbility(ability);
- }
-
- public BloodtallowCandle(final BloodtallowCandle card) {
- super(card);
- }
-
- @Override
- public BloodtallowCandle copy() {
- return new BloodtallowCandle(this);
- }
-}
+/*
+ * 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 mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Zone;
+import mage.filter.StaticFilters;
+import mage.target.common.TargetCardInLibrary;
+
+import java.util.UUID;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.constants.Duration;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author Rystan
+ */
+public final class BloodtallowCandle extends CardImpl {
+
+ public BloodtallowCandle(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
+
+ // {6}, {T}, Sacrifice Bloodtallow Candle: Target creature gets -5/-5 until end of turn.
+ Ability ability = new SimpleActivatedAbility(
+ new BoostTargetEffect(-5, -5, Duration.EndOfTurn),
+ new GenericManaCost(6));
+ ability.addCost(new TapSourceCost());
+ ability.addCost(new SacrificeSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+
+ this.addAbility(ability);
+ }
+
+ public BloodtallowCandle(final BloodtallowCandle card) {
+ super(card);
+ }
+
+ @Override
+ public BloodtallowCandle copy() {
+ return new BloodtallowCandle(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/b/BloodthirstyOgre.java b/Mage.Sets/src/mage/cards/b/BloodthirstyOgre.java
index ee5c3e8c69b..ea8702cc351 100644
--- a/Mage.Sets/src/mage/cards/b/BloodthirstyOgre.java
+++ b/Mage.Sets/src/mage/cards/b/BloodthirstyOgre.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class BloodthirstyOgre extends CardImpl {
+public final class BloodthirstyOgre extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control a Demon");
diff --git a/Mage.Sets/src/mage/cards/b/BloodthornTaunter.java b/Mage.Sets/src/mage/cards/b/BloodthornTaunter.java
index 4ee2436baf8..873935a6b5c 100644
--- a/Mage.Sets/src/mage/cards/b/BloodthornTaunter.java
+++ b/Mage.Sets/src/mage/cards/b/BloodthornTaunter.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BloodthornTaunter extends CardImpl {
+public final class BloodthornTaunter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/b/BloodthroneVampire.java b/Mage.Sets/src/mage/cards/b/BloodthroneVampire.java
index bd5ccc256d8..60f65b5b7d4 100644
--- a/Mage.Sets/src/mage/cards/b/BloodthroneVampire.java
+++ b/Mage.Sets/src/mage/cards/b/BloodthroneVampire.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BloodthroneVampire extends CardImpl {
+public final class BloodthroneVampire extends CardImpl {
public BloodthroneVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BloodwaterEntity.java b/Mage.Sets/src/mage/cards/b/BloodwaterEntity.java
index 2cc85cecf3b..52a7e614abe 100644
--- a/Mage.Sets/src/mage/cards/b/BloodwaterEntity.java
+++ b/Mage.Sets/src/mage/cards/b/BloodwaterEntity.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author ciaccona007
*/
-public class BloodwaterEntity extends CardImpl {
+public final class BloodwaterEntity extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/b/BloomTender.java b/Mage.Sets/src/mage/cards/b/BloomTender.java
index b217242a358..ca6657fbb3b 100644
--- a/Mage.Sets/src/mage/cards/b/BloomTender.java
+++ b/Mage.Sets/src/mage/cards/b/BloomTender.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class BloomTender extends CardImpl {
+public final class BloomTender extends CardImpl {
public BloomTender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BloomingMarsh.java b/Mage.Sets/src/mage/cards/b/BloomingMarsh.java
index b4bc16086fd..b4995bb3e32 100644
--- a/Mage.Sets/src/mage/cards/b/BloomingMarsh.java
+++ b/Mage.Sets/src/mage/cards/b/BloomingMarsh.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class BloomingMarsh extends CardImpl {
+public final class BloomingMarsh extends CardImpl {
public BloomingMarsh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/b/BlossomDryad.java b/Mage.Sets/src/mage/cards/b/BlossomDryad.java
index 617b44e590d..df369a9b0f3 100644
--- a/Mage.Sets/src/mage/cards/b/BlossomDryad.java
+++ b/Mage.Sets/src/mage/cards/b/BlossomDryad.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author TheElk801
*/
-public class BlossomDryad extends CardImpl {
+public final class BlossomDryad extends CardImpl {
public BlossomDryad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BlossomingDefense.java b/Mage.Sets/src/mage/cards/b/BlossomingDefense.java
index 72d3d62309d..2030af9d2fe 100644
--- a/Mage.Sets/src/mage/cards/b/BlossomingDefense.java
+++ b/Mage.Sets/src/mage/cards/b/BlossomingDefense.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class BlossomingDefense extends CardImpl {
+public final class BlossomingDefense extends CardImpl {
public BlossomingDefense(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BlossomingSands.java b/Mage.Sets/src/mage/cards/b/BlossomingSands.java
index 0c1ef0b52e8..7c35302d8d7 100644
--- a/Mage.Sets/src/mage/cards/b/BlossomingSands.java
+++ b/Mage.Sets/src/mage/cards/b/BlossomingSands.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class BlossomingSands extends CardImpl {
+public final class BlossomingSands extends CardImpl {
public BlossomingSands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BlossomingWreath.java b/Mage.Sets/src/mage/cards/b/BlossomingWreath.java
index a0f4d84a21b..03698e47740 100644
--- a/Mage.Sets/src/mage/cards/b/BlossomingWreath.java
+++ b/Mage.Sets/src/mage/cards/b/BlossomingWreath.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author Derpthemeus
*/
-public class BlossomingWreath extends CardImpl {
+public final class BlossomingWreath extends CardImpl {
public BlossomingWreath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BlowflyInfestation.java b/Mage.Sets/src/mage/cards/b/BlowflyInfestation.java
index ae4980f72cd..ab472c82520 100644
--- a/Mage.Sets/src/mage/cards/b/BlowflyInfestation.java
+++ b/Mage.Sets/src/mage/cards/b/BlowflyInfestation.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
*
*/
-public class BlowflyInfestation extends CardImpl {
+public final class BlowflyInfestation extends CardImpl {
private static final String rule = "Whenever a creature dies, if it had a -1/-1 counter on it, put a -1/-1 counter on target creature.";
diff --git a/Mage.Sets/src/mage/cards/b/BludgeonBrawl.java b/Mage.Sets/src/mage/cards/b/BludgeonBrawl.java
index 4d0dd92b135..a623dd5cd2e 100644
--- a/Mage.Sets/src/mage/cards/b/BludgeonBrawl.java
+++ b/Mage.Sets/src/mage/cards/b/BludgeonBrawl.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class BludgeonBrawl extends CardImpl {
+public final class BludgeonBrawl extends CardImpl {
public BludgeonBrawl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlueElementalBlast.java b/Mage.Sets/src/mage/cards/b/BlueElementalBlast.java
index a9955e3b886..10af7a1b4c9 100644
--- a/Mage.Sets/src/mage/cards/b/BlueElementalBlast.java
+++ b/Mage.Sets/src/mage/cards/b/BlueElementalBlast.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author Plopman
*/
-public class BlueElementalBlast extends CardImpl {
+public final class BlueElementalBlast extends CardImpl {
private static final FilterPermanent filterPermanent = new FilterPermanent("red permanent");
private static final FilterSpell filterSpell = new FilterSpell("red spell");
diff --git a/Mage.Sets/src/mage/cards/b/BlueManaBattery.java b/Mage.Sets/src/mage/cards/b/BlueManaBattery.java
index 1e8a81b8774..e6226df8e9b 100644
--- a/Mage.Sets/src/mage/cards/b/BlueManaBattery.java
+++ b/Mage.Sets/src/mage/cards/b/BlueManaBattery.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class BlueManaBattery extends CardImpl {
+public final class BlueManaBattery extends CardImpl {
public BlueManaBattery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BlueScarab.java b/Mage.Sets/src/mage/cards/b/BlueScarab.java
index b23904dac77..bab38291254 100644
--- a/Mage.Sets/src/mage/cards/b/BlueScarab.java
+++ b/Mage.Sets/src/mage/cards/b/BlueScarab.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Zeplar1_at_googlemail.com
*/
-public class BlueScarab extends CardImpl {
+public final class BlueScarab extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creatures");
private static final FilterPermanent filter2 = new FilterCreaturePermanent("blue permanent");
diff --git a/Mage.Sets/src/mage/cards/b/BlueSunsZenith.java b/Mage.Sets/src/mage/cards/b/BlueSunsZenith.java
index 7987167aff6..12e1bdbbdeb 100644
--- a/Mage.Sets/src/mage/cards/b/BlueSunsZenith.java
+++ b/Mage.Sets/src/mage/cards/b/BlueSunsZenith.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class BlueSunsZenith extends CardImpl {
+public final class BlueSunsZenith extends CardImpl {
public BlueSunsZenith (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BlueWard.java b/Mage.Sets/src/mage/cards/b/BlueWard.java
index 2f84db9d33e..7eb03e11a4c 100644
--- a/Mage.Sets/src/mage/cards/b/BlueWard.java
+++ b/Mage.Sets/src/mage/cards/b/BlueWard.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class BlueWard extends CardImpl {
+public final class BlueWard extends CardImpl {
private static final FilterCard filter = new FilterCard("blue");
diff --git a/Mage.Sets/src/mage/cards/b/BluntTheAssault.java b/Mage.Sets/src/mage/cards/b/BluntTheAssault.java
index 47c42a4e14e..f667549b77b 100644
--- a/Mage.Sets/src/mage/cards/b/BluntTheAssault.java
+++ b/Mage.Sets/src/mage/cards/b/BluntTheAssault.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Loki
*/
-public class BluntTheAssault extends CardImpl {
+public final class BluntTheAssault extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/b/BlurOfBlades.java b/Mage.Sets/src/mage/cards/b/BlurOfBlades.java
index 5a1b7b9c5fc..6788d6af836 100644
--- a/Mage.Sets/src/mage/cards/b/BlurOfBlades.java
+++ b/Mage.Sets/src/mage/cards/b/BlurOfBlades.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ciaccona007
*/
-public class BlurOfBlades extends CardImpl {
+public final class BlurOfBlades extends CardImpl {
public BlurOfBlades(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlurSliver.java b/Mage.Sets/src/mage/cards/b/BlurSliver.java
index f30f1e48381..716339654d7 100644
--- a/Mage.Sets/src/mage/cards/b/BlurSliver.java
+++ b/Mage.Sets/src/mage/cards/b/BlurSliver.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class BlurSliver extends CardImpl {
+public final class BlurSliver extends CardImpl {
public BlurSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BlurredMongoose.java b/Mage.Sets/src/mage/cards/b/BlurredMongoose.java
index 4803ffa7e62..5f824649669 100644
--- a/Mage.Sets/src/mage/cards/b/BlurredMongoose.java
+++ b/Mage.Sets/src/mage/cards/b/BlurredMongoose.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class BlurredMongoose extends CardImpl {
+public final class BlurredMongoose extends CardImpl {
public BlurredMongoose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Blustersquall.java b/Mage.Sets/src/mage/cards/b/Blustersquall.java
index 0a45046ea11..c8eda5c88cf 100644
--- a/Mage.Sets/src/mage/cards/b/Blustersquall.java
+++ b/Mage.Sets/src/mage/cards/b/Blustersquall.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Blustersquall extends CardImpl {
+public final class Blustersquall extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/b/BoaConstrictor.java b/Mage.Sets/src/mage/cards/b/BoaConstrictor.java
index a776aaec7dd..dce36deff34 100644
--- a/Mage.Sets/src/mage/cards/b/BoaConstrictor.java
+++ b/Mage.Sets/src/mage/cards/b/BoaConstrictor.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class BoaConstrictor extends CardImpl {
+public final class BoaConstrictor extends CardImpl {
public BoaConstrictor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BoarUmbra.java b/Mage.Sets/src/mage/cards/b/BoarUmbra.java
index 345c5315c73..5f622e74541 100644
--- a/Mage.Sets/src/mage/cards/b/BoarUmbra.java
+++ b/Mage.Sets/src/mage/cards/b/BoarUmbra.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BoarUmbra extends CardImpl {
+public final class BoarUmbra extends CardImpl {
public BoarUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BoardTheWeatherlight.java b/Mage.Sets/src/mage/cards/b/BoardTheWeatherlight.java
index 762e9c1aa6b..9526df1e7a7 100644
--- a/Mage.Sets/src/mage/cards/b/BoardTheWeatherlight.java
+++ b/Mage.Sets/src/mage/cards/b/BoardTheWeatherlight.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.HistoricPredicate;
*
* @author TheElk801
*/
-public class BoardTheWeatherlight extends CardImpl {
+public final class BoardTheWeatherlight extends CardImpl {
private static final FilterCard filter = new FilterCard("a historic card");
diff --git a/Mage.Sets/src/mage/cards/b/BoartuskLiege.java b/Mage.Sets/src/mage/cards/b/BoartuskLiege.java
index effea50e579..892344e385d 100644
--- a/Mage.Sets/src/mage/cards/b/BoartuskLiege.java
+++ b/Mage.Sets/src/mage/cards/b/BoartuskLiege.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class BoartuskLiege extends CardImpl {
+public final class BoartuskLiege extends CardImpl {
private static final FilterCreaturePermanent filterRed = new FilterCreaturePermanent("red creatures");
private static final FilterCreaturePermanent filterGreen = new FilterCreaturePermanent("green creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BobaFett.java b/Mage.Sets/src/mage/cards/b/BobaFett.java
index 7680e3cfdb6..2d7153b234a 100644
--- a/Mage.Sets/src/mage/cards/b/BobaFett.java
+++ b/Mage.Sets/src/mage/cards/b/BobaFett.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class BobaFett extends CardImpl {
+public final class BobaFett extends CardImpl {
public BobaFett(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BodyDouble.java b/Mage.Sets/src/mage/cards/b/BodyDouble.java
index b825e2cb8a4..420c3eccd4e 100644
--- a/Mage.Sets/src/mage/cards/b/BodyDouble.java
+++ b/Mage.Sets/src/mage/cards/b/BodyDouble.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class BodyDouble extends CardImpl {
+public final class BodyDouble extends CardImpl {
public BodyDouble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BodyOfJukai.java b/Mage.Sets/src/mage/cards/b/BodyOfJukai.java
index 0f2f783ef57..1b88fce22e5 100644
--- a/Mage.Sets/src/mage/cards/b/BodyOfJukai.java
+++ b/Mage.Sets/src/mage/cards/b/BodyOfJukai.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BodyOfJukai extends CardImpl {
+public final class BodyOfJukai extends CardImpl {
public BodyOfJukai(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BodySnatcher.java b/Mage.Sets/src/mage/cards/b/BodySnatcher.java
index 56355cef643..0a10aaf3c4e 100644
--- a/Mage.Sets/src/mage/cards/b/BodySnatcher.java
+++ b/Mage.Sets/src/mage/cards/b/BodySnatcher.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class BodySnatcher extends CardImpl {
+public final class BodySnatcher extends CardImpl {
public BodySnatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogDown.java b/Mage.Sets/src/mage/cards/b/BogDown.java
index 3e7878316ce..c11a2be4b80 100644
--- a/Mage.Sets/src/mage/cards/b/BogDown.java
+++ b/Mage.Sets/src/mage/cards/b/BogDown.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
* @author LoneFox
*/
-public class BogDown extends CardImpl {
+public final class BogDown extends CardImpl {
public BogDown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogElemental.java b/Mage.Sets/src/mage/cards/b/BogElemental.java
index ef3638c661c..2f5881a9f0b 100644
--- a/Mage.Sets/src/mage/cards/b/BogElemental.java
+++ b/Mage.Sets/src/mage/cards/b/BogElemental.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class BogElemental extends CardImpl {
+public final class BogElemental extends CardImpl {
public BogElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogGlider.java b/Mage.Sets/src/mage/cards/b/BogGlider.java
index f2ac95ba09f..07e73b863e2 100644
--- a/Mage.Sets/src/mage/cards/b/BogGlider.java
+++ b/Mage.Sets/src/mage/cards/b/BogGlider.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Backfir3
*/
-public class BogGlider extends CardImpl {
+public final class BogGlider extends CardImpl {
final static FilterControlledPermanent landFilter = new FilterControlledLandPermanent("a land");
private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 2 or less");
diff --git a/Mage.Sets/src/mage/cards/b/BogGnarr.java b/Mage.Sets/src/mage/cards/b/BogGnarr.java
index 3f806bd8470..f3ba5168e7c 100644
--- a/Mage.Sets/src/mage/cards/b/BogGnarr.java
+++ b/Mage.Sets/src/mage/cards/b/BogGnarr.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author Loki
*/
-public class BogGnarr extends CardImpl {
+public final class BogGnarr extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a black spell");
diff --git a/Mage.Sets/src/mage/cards/b/BogHoodlums.java b/Mage.Sets/src/mage/cards/b/BogHoodlums.java
index 36855d694c5..f62ec55247f 100644
--- a/Mage.Sets/src/mage/cards/b/BogHoodlums.java
+++ b/Mage.Sets/src/mage/cards/b/BogHoodlums.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class BogHoodlums extends CardImpl {
+public final class BogHoodlums extends CardImpl {
public BogHoodlums(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogImp.java b/Mage.Sets/src/mage/cards/b/BogImp.java
index f609f665aee..bffc780c15a 100644
--- a/Mage.Sets/src/mage/cards/b/BogImp.java
+++ b/Mage.Sets/src/mage/cards/b/BogImp.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BogImp extends CardImpl {
+public final class BogImp extends CardImpl {
public BogImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogInitiate.java b/Mage.Sets/src/mage/cards/b/BogInitiate.java
index 76bc2c0184d..87b3251e971 100644
--- a/Mage.Sets/src/mage/cards/b/BogInitiate.java
+++ b/Mage.Sets/src/mage/cards/b/BogInitiate.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class BogInitiate extends CardImpl {
+public final class BogInitiate extends CardImpl {
public BogInitiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogRaiders.java b/Mage.Sets/src/mage/cards/b/BogRaiders.java
index ca5f8844573..9340d30d653 100644
--- a/Mage.Sets/src/mage/cards/b/BogRaiders.java
+++ b/Mage.Sets/src/mage/cards/b/BogRaiders.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BogRaiders extends CardImpl {
+public final class BogRaiders extends CardImpl {
public BogRaiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogRats.java b/Mage.Sets/src/mage/cards/b/BogRats.java
index 7e92145faf6..af8cc4b6865 100644
--- a/Mage.Sets/src/mage/cards/b/BogRats.java
+++ b/Mage.Sets/src/mage/cards/b/BogRats.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Quercitron
*/
-public class BogRats extends CardImpl {
+public final class BogRats extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls");
diff --git a/Mage.Sets/src/mage/cards/b/BogSerpent.java b/Mage.Sets/src/mage/cards/b/BogSerpent.java
index 684c3491b92..5bb16dce551 100644
--- a/Mage.Sets/src/mage/cards/b/BogSerpent.java
+++ b/Mage.Sets/src/mage/cards/b/BogSerpent.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class BogSerpent extends CardImpl {
+public final class BogSerpent extends CardImpl {
public BogSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogSmugglers.java b/Mage.Sets/src/mage/cards/b/BogSmugglers.java
index 329d0f685f6..c17d3b4085b 100644
--- a/Mage.Sets/src/mage/cards/b/BogSmugglers.java
+++ b/Mage.Sets/src/mage/cards/b/BogSmugglers.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BogSmugglers extends CardImpl {
+public final class BogSmugglers extends CardImpl {
public BogSmugglers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogStriderAsh.java b/Mage.Sets/src/mage/cards/b/BogStriderAsh.java
index fba87e3a615..8c68db8a9b3 100644
--- a/Mage.Sets/src/mage/cards/b/BogStriderAsh.java
+++ b/Mage.Sets/src/mage/cards/b/BogStriderAsh.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author EvilGeek
*/
-public class BogStriderAsh extends CardImpl {
+public final class BogStriderAsh extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a Goblin spell");
diff --git a/Mage.Sets/src/mage/cards/b/BogTatters.java b/Mage.Sets/src/mage/cards/b/BogTatters.java
index d65b322bfe3..33db79ce79a 100644
--- a/Mage.Sets/src/mage/cards/b/BogTatters.java
+++ b/Mage.Sets/src/mage/cards/b/BogTatters.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class BogTatters extends CardImpl {
+public final class BogTatters extends CardImpl {
public BogTatters (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogWitch.java b/Mage.Sets/src/mage/cards/b/BogWitch.java
index 968e1b4dc6b..3aadd556b7c 100644
--- a/Mage.Sets/src/mage/cards/b/BogWitch.java
+++ b/Mage.Sets/src/mage/cards/b/BogWitch.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class BogWitch extends CardImpl {
+public final class BogWitch extends CardImpl {
public BogWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogWraith.java b/Mage.Sets/src/mage/cards/b/BogWraith.java
index 1cdab4228c7..c0a06a552fe 100644
--- a/Mage.Sets/src/mage/cards/b/BogWraith.java
+++ b/Mage.Sets/src/mage/cards/b/BogWraith.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BogWraith extends CardImpl {
+public final class BogWraith extends CardImpl {
public BogWraith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BogWreckage.java b/Mage.Sets/src/mage/cards/b/BogWreckage.java
index 1df850cbc34..627d9c2e72a 100644
--- a/Mage.Sets/src/mage/cards/b/BogWreckage.java
+++ b/Mage.Sets/src/mage/cards/b/BogWreckage.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class BogWreckage extends CardImpl {
+public final class BogWreckage extends CardImpl {
public BogWreckage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BogardanFirefiend.java b/Mage.Sets/src/mage/cards/b/BogardanFirefiend.java
index ab1cc882b72..63b3651e506 100644
--- a/Mage.Sets/src/mage/cards/b/BogardanFirefiend.java
+++ b/Mage.Sets/src/mage/cards/b/BogardanFirefiend.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BogardanFirefiend extends CardImpl {
+public final class BogardanFirefiend extends CardImpl {
public BogardanFirefiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BogardanHellkite.java b/Mage.Sets/src/mage/cards/b/BogardanHellkite.java
index 30ca44d995c..17d3bf1c9f0 100644
--- a/Mage.Sets/src/mage/cards/b/BogardanHellkite.java
+++ b/Mage.Sets/src/mage/cards/b/BogardanHellkite.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BogardanHellkite extends CardImpl {
+public final class BogardanHellkite extends CardImpl {
public BogardanHellkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BogardanLancer.java b/Mage.Sets/src/mage/cards/b/BogardanLancer.java
index 91491334789..37d5ce7d1a3 100644
--- a/Mage.Sets/src/mage/cards/b/BogardanLancer.java
+++ b/Mage.Sets/src/mage/cards/b/BogardanLancer.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class BogardanLancer extends CardImpl {
+public final class BogardanLancer extends CardImpl {
public BogardanLancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BogardanRager.java b/Mage.Sets/src/mage/cards/b/BogardanRager.java
index 987ce501fc1..0910ec156b1 100644
--- a/Mage.Sets/src/mage/cards/b/BogardanRager.java
+++ b/Mage.Sets/src/mage/cards/b/BogardanRager.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BogardanRager extends CardImpl {
+public final class BogardanRager extends CardImpl {
public BogardanRager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BogbrewWitch.java b/Mage.Sets/src/mage/cards/b/BogbrewWitch.java
index edd6aeab0ba..512e55ceb57 100644
--- a/Mage.Sets/src/mage/cards/b/BogbrewWitch.java
+++ b/Mage.Sets/src/mage/cards/b/BogbrewWitch.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class BogbrewWitch extends CardImpl {
+public final class BogbrewWitch extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Festering Newt or Bubbling Cauldron");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BoggartArsonists.java b/Mage.Sets/src/mage/cards/b/BoggartArsonists.java
index e3b31270a3c..f5963a9b802 100644
--- a/Mage.Sets/src/mage/cards/b/BoggartArsonists.java
+++ b/Mage.Sets/src/mage/cards/b/BoggartArsonists.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class BoggartArsonists extends CardImpl {
+public final class BoggartArsonists extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Scarecrow or Plains");
diff --git a/Mage.Sets/src/mage/cards/b/BoggartBirthRite.java b/Mage.Sets/src/mage/cards/b/BoggartBirthRite.java
index 18b37e2dbf8..aaa4faa428c 100644
--- a/Mage.Sets/src/mage/cards/b/BoggartBirthRite.java
+++ b/Mage.Sets/src/mage/cards/b/BoggartBirthRite.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class BoggartBirthRite extends CardImpl {
+public final class BoggartBirthRite extends CardImpl {
private static final FilterCard filter = new FilterCard("Goblin card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/b/BoggartBrute.java b/Mage.Sets/src/mage/cards/b/BoggartBrute.java
index dbf317e2f2b..71bcfe2c770 100644
--- a/Mage.Sets/src/mage/cards/b/BoggartBrute.java
+++ b/Mage.Sets/src/mage/cards/b/BoggartBrute.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BoggartBrute extends CardImpl {
+public final class BoggartBrute extends CardImpl {
public BoggartBrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BoggartForager.java b/Mage.Sets/src/mage/cards/b/BoggartForager.java
index 388b0c9a655..0175ea1853b 100644
--- a/Mage.Sets/src/mage/cards/b/BoggartForager.java
+++ b/Mage.Sets/src/mage/cards/b/BoggartForager.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Wehk
*/
-public class BoggartForager extends CardImpl {
+public final class BoggartForager extends CardImpl {
public BoggartForager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BoggartHarbinger.java b/Mage.Sets/src/mage/cards/b/BoggartHarbinger.java
index 398702baed4..574e2edaef5 100644
--- a/Mage.Sets/src/mage/cards/b/BoggartHarbinger.java
+++ b/Mage.Sets/src/mage/cards/b/BoggartHarbinger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author dustinconrad
*/
-public class BoggartHarbinger extends CardImpl {
+public final class BoggartHarbinger extends CardImpl {
private static final FilterCard filter = new FilterCard("Goblin card");
diff --git a/Mage.Sets/src/mage/cards/b/BoggartLoggers.java b/Mage.Sets/src/mage/cards/b/BoggartLoggers.java
index 715463bd33a..093c7774d91 100644
--- a/Mage.Sets/src/mage/cards/b/BoggartLoggers.java
+++ b/Mage.Sets/src/mage/cards/b/BoggartLoggers.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class BoggartLoggers extends CardImpl {
+public final class BoggartLoggers extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Treefolk or Forest");
diff --git a/Mage.Sets/src/mage/cards/b/BoggartMob.java b/Mage.Sets/src/mage/cards/b/BoggartMob.java
index a2e1f7352db..ad104cfe8e4 100644
--- a/Mage.Sets/src/mage/cards/b/BoggartMob.java
+++ b/Mage.Sets/src/mage/cards/b/BoggartMob.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.GoblinRogueToken;
*
* @author fireshoes
*/
-public class BoggartMob extends CardImpl {
+public final class BoggartMob extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin you control");
diff --git a/Mage.Sets/src/mage/cards/b/BoggartRamGang.java b/Mage.Sets/src/mage/cards/b/BoggartRamGang.java
index 1350fd1449e..e7be84eeace 100644
--- a/Mage.Sets/src/mage/cards/b/BoggartRamGang.java
+++ b/Mage.Sets/src/mage/cards/b/BoggartRamGang.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BoggartRamGang extends CardImpl {
+public final class BoggartRamGang extends CardImpl {
public BoggartRamGang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/G}{R/G}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/b/BoggartShenanigans.java b/Mage.Sets/src/mage/cards/b/BoggartShenanigans.java
index 459508d8d15..c906cf5bc43 100644
--- a/Mage.Sets/src/mage/cards/b/BoggartShenanigans.java
+++ b/Mage.Sets/src/mage/cards/b/BoggartShenanigans.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class BoggartShenanigans extends CardImpl {
+public final class BoggartShenanigans extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another Goblin you control");
diff --git a/Mage.Sets/src/mage/cards/b/BoggartSpriteChaser.java b/Mage.Sets/src/mage/cards/b/BoggartSpriteChaser.java
index e5451f51210..70ee1ef33e2 100644
--- a/Mage.Sets/src/mage/cards/b/BoggartSpriteChaser.java
+++ b/Mage.Sets/src/mage/cards/b/BoggartSpriteChaser.java
@@ -49,7 +49,7 @@ import mage.filter.FilterPermanent;
*
* @author BursegSardaukar
*/
-public class BoggartSpriteChaser extends CardImpl {
+public final class BoggartSpriteChaser extends CardImpl {
public BoggartSpriteChaser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Boil.java b/Mage.Sets/src/mage/cards/b/Boil.java
index ae5788a2b3e..bcb9a9bd87b 100644
--- a/Mage.Sets/src/mage/cards/b/Boil.java
+++ b/Mage.Sets/src/mage/cards/b/Boil.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class Boil extends CardImpl {
+public final class Boil extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Islands");
diff --git a/Mage.Sets/src/mage/cards/b/BoilingBlood.java b/Mage.Sets/src/mage/cards/b/BoilingBlood.java
index eb10f3423d2..443178f4fa3 100644
--- a/Mage.Sets/src/mage/cards/b/BoilingBlood.java
+++ b/Mage.Sets/src/mage/cards/b/BoilingBlood.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class BoilingBlood extends CardImpl {
+public final class BoilingBlood extends CardImpl {
public BoilingBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BoilingEarth.java b/Mage.Sets/src/mage/cards/b/BoilingEarth.java
index fb255160561..7f9a9d3a1c5 100644
--- a/Mage.Sets/src/mage/cards/b/BoilingEarth.java
+++ b/Mage.Sets/src/mage/cards/b/BoilingEarth.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class BoilingEarth extends CardImpl {
+public final class BoilingEarth extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature your opponents control");
diff --git a/Mage.Sets/src/mage/cards/b/BoilingSeas.java b/Mage.Sets/src/mage/cards/b/BoilingSeas.java
index d42796506c7..57f3421a8f5 100644
--- a/Mage.Sets/src/mage/cards/b/BoilingSeas.java
+++ b/Mage.Sets/src/mage/cards/b/BoilingSeas.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author emerald000
*/
-public class BoilingSeas extends CardImpl {
+public final class BoilingSeas extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Islands");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BojukaBog.java b/Mage.Sets/src/mage/cards/b/BojukaBog.java
index 52d10fac142..8d8308c807c 100644
--- a/Mage.Sets/src/mage/cards/b/BojukaBog.java
+++ b/Mage.Sets/src/mage/cards/b/BojukaBog.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class BojukaBog extends CardImpl {
+public final class BojukaBog extends CardImpl {
public BojukaBog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BojukaBrigand.java b/Mage.Sets/src/mage/cards/b/BojukaBrigand.java
index 77a3dcce590..93d725baf60 100644
--- a/Mage.Sets/src/mage/cards/b/BojukaBrigand.java
+++ b/Mage.Sets/src/mage/cards/b/BojukaBrigand.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class BojukaBrigand extends CardImpl {
+public final class BojukaBrigand extends CardImpl {
public BojukaBrigand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BolaWarrior.java b/Mage.Sets/src/mage/cards/b/BolaWarrior.java
index 07dc204772f..cc520fb4367 100644
--- a/Mage.Sets/src/mage/cards/b/BolaWarrior.java
+++ b/Mage.Sets/src/mage/cards/b/BolaWarrior.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class BolaWarrior extends CardImpl {
+public final class BolaWarrior extends CardImpl {
public BolaWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BoldDefense.java b/Mage.Sets/src/mage/cards/b/BoldDefense.java
index a65a23e9780..c0833f0ae91 100644
--- a/Mage.Sets/src/mage/cards/b/BoldDefense.java
+++ b/Mage.Sets/src/mage/cards/b/BoldDefense.java
@@ -45,7 +45,7 @@ import mage.filter.StaticFilters;
/**
* @author nantuko, Loki
*/
-public class BoldDefense extends CardImpl {
+public final class BoldDefense extends CardImpl {
public BoldDefense(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BoldImpaler.java b/Mage.Sets/src/mage/cards/b/BoldImpaler.java
index 5afb8230c75..0e87e48f4c3 100644
--- a/Mage.Sets/src/mage/cards/b/BoldImpaler.java
+++ b/Mage.Sets/src/mage/cards/b/BoldImpaler.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class BoldImpaler extends CardImpl {
+public final class BoldImpaler extends CardImpl {
public BoldImpaler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BoldwyrHeavyweights.java b/Mage.Sets/src/mage/cards/b/BoldwyrHeavyweights.java
index 23c412bd99c..f948b912dec 100644
--- a/Mage.Sets/src/mage/cards/b/BoldwyrHeavyweights.java
+++ b/Mage.Sets/src/mage/cards/b/BoldwyrHeavyweights.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class BoldwyrHeavyweights extends CardImpl {
+public final class BoldwyrHeavyweights extends CardImpl {
public BoldwyrHeavyweights(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java b/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java
index b40e3e03bf4..584abde02d1 100644
--- a/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java
+++ b/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class BoldwyrIntimidator extends CardImpl {
+public final class BoldwyrIntimidator extends CardImpl {
public BoldwyrIntimidator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BoltOfKeranos.java b/Mage.Sets/src/mage/cards/b/BoltOfKeranos.java
index 095dd14d854..8dd39307127 100644
--- a/Mage.Sets/src/mage/cards/b/BoltOfKeranos.java
+++ b/Mage.Sets/src/mage/cards/b/BoltOfKeranos.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class BoltOfKeranos extends CardImpl {
+public final class BoltOfKeranos extends CardImpl {
public BoltOfKeranos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BoltwingMarauder.java b/Mage.Sets/src/mage/cards/b/BoltwingMarauder.java
index 0df712715d7..553a2488392 100644
--- a/Mage.Sets/src/mage/cards/b/BoltwingMarauder.java
+++ b/Mage.Sets/src/mage/cards/b/BoltwingMarauder.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BoltwingMarauder extends CardImpl {
+public final class BoltwingMarauder extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature under your control");
diff --git a/Mage.Sets/src/mage/cards/b/BomatBazaarBarge.java b/Mage.Sets/src/mage/cards/b/BomatBazaarBarge.java
index 2a9ca93effd..87015a9bbe7 100644
--- a/Mage.Sets/src/mage/cards/b/BomatBazaarBarge.java
+++ b/Mage.Sets/src/mage/cards/b/BomatBazaarBarge.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class BomatBazaarBarge extends CardImpl {
+public final class BomatBazaarBarge extends CardImpl {
public BomatBazaarBarge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BomatCourier.java b/Mage.Sets/src/mage/cards/b/BomatCourier.java
index f5cecc1c36a..46ccc99fe9e 100644
--- a/Mage.Sets/src/mage/cards/b/BomatCourier.java
+++ b/Mage.Sets/src/mage/cards/b/BomatCourier.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class BomatCourier extends CardImpl {
+public final class BomatCourier extends CardImpl {
public BomatCourier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BombSquad.java b/Mage.Sets/src/mage/cards/b/BombSquad.java
index 1e8349a529e..d32ab16d0e2 100644
--- a/Mage.Sets/src/mage/cards/b/BombSquad.java
+++ b/Mage.Sets/src/mage/cards/b/BombSquad.java
@@ -62,7 +62,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class BombSquad extends CardImpl {
+public final class BombSquad extends CardImpl {
public BombSquad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Bombard.java b/Mage.Sets/src/mage/cards/b/Bombard.java
index 66d23a66da5..513140596b7 100644
--- a/Mage.Sets/src/mage/cards/b/Bombard.java
+++ b/Mage.Sets/src/mage/cards/b/Bombard.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Bombard extends CardImpl {
+public final class Bombard extends CardImpl {
public Bombard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BomberCorps.java b/Mage.Sets/src/mage/cards/b/BomberCorps.java
index ae22396a385..18c06205714 100644
--- a/Mage.Sets/src/mage/cards/b/BomberCorps.java
+++ b/Mage.Sets/src/mage/cards/b/BomberCorps.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class BomberCorps extends CardImpl {
+public final class BomberCorps extends CardImpl {
public BomberCorps(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BondBeetle.java b/Mage.Sets/src/mage/cards/b/BondBeetle.java
index 960d66d8af4..7d11361dcd7 100644
--- a/Mage.Sets/src/mage/cards/b/BondBeetle.java
+++ b/Mage.Sets/src/mage/cards/b/BondBeetle.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BondBeetle extends CardImpl {
+public final class BondBeetle extends CardImpl {
public BondBeetle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BondOfAgony.java b/Mage.Sets/src/mage/cards/b/BondOfAgony.java
index be645c90b27..a21d15ab46a 100644
--- a/Mage.Sets/src/mage/cards/b/BondOfAgony.java
+++ b/Mage.Sets/src/mage/cards/b/BondOfAgony.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
/**
* @author magenoxx
*/
-public class BondOfAgony extends CardImpl {
+public final class BondOfAgony extends CardImpl {
public BondOfAgony(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BondedConstruct.java b/Mage.Sets/src/mage/cards/b/BondedConstruct.java
index fbc97e31613..280ed90367e 100644
--- a/Mage.Sets/src/mage/cards/b/BondedConstruct.java
+++ b/Mage.Sets/src/mage/cards/b/BondedConstruct.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class BondedConstruct extends CardImpl {
+public final class BondedConstruct extends CardImpl {
public BondedConstruct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BondedFetch.java b/Mage.Sets/src/mage/cards/b/BondedFetch.java
index abb768ab408..3534db6e77e 100644
--- a/Mage.Sets/src/mage/cards/b/BondedFetch.java
+++ b/Mage.Sets/src/mage/cards/b/BondedFetch.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class BondedFetch extends CardImpl {
+public final class BondedFetch extends CardImpl {
public BondedFetch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BondedHorncrest.java b/Mage.Sets/src/mage/cards/b/BondedHorncrest.java
index a62a0783249..677e3540380 100644
--- a/Mage.Sets/src/mage/cards/b/BondedHorncrest.java
+++ b/Mage.Sets/src/mage/cards/b/BondedHorncrest.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class BondedHorncrest extends CardImpl {
+public final class BondedHorncrest extends CardImpl {
public BondedHorncrest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BondsOfFaith.java b/Mage.Sets/src/mage/cards/b/BondsOfFaith.java
index 0bf81889dfd..59a65654443 100644
--- a/Mage.Sets/src/mage/cards/b/BondsOfFaith.java
+++ b/Mage.Sets/src/mage/cards/b/BondsOfFaith.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author nantuko
*/
-public class BondsOfFaith extends CardImpl {
+public final class BondsOfFaith extends CardImpl {
private static final String rule = "Enchanted creature gets +2/+2 as long as it's a Human";
diff --git a/Mage.Sets/src/mage/cards/b/BondsOfMortality.java b/Mage.Sets/src/mage/cards/b/BondsOfMortality.java
index 83fa7c32736..445a0053af6 100644
--- a/Mage.Sets/src/mage/cards/b/BondsOfMortality.java
+++ b/Mage.Sets/src/mage/cards/b/BondsOfMortality.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class BondsOfMortality extends CardImpl {
+public final class BondsOfMortality extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/b/BondsOfQuicksilver.java b/Mage.Sets/src/mage/cards/b/BondsOfQuicksilver.java
index 1d93180ce9a..b39c0fa2219 100644
--- a/Mage.Sets/src/mage/cards/b/BondsOfQuicksilver.java
+++ b/Mage.Sets/src/mage/cards/b/BondsOfQuicksilver.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class BondsOfQuicksilver extends CardImpl {
+public final class BondsOfQuicksilver extends CardImpl {
public BondsOfQuicksilver (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BoneDancer.java b/Mage.Sets/src/mage/cards/b/BoneDancer.java
index 4d3a6741bd5..51a11aa79f0 100644
--- a/Mage.Sets/src/mage/cards/b/BoneDancer.java
+++ b/Mage.Sets/src/mage/cards/b/BoneDancer.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LoneFox
*/
-public class BoneDancer extends CardImpl {
+public final class BoneDancer extends CardImpl {
public BoneDancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BoneFlute.java b/Mage.Sets/src/mage/cards/b/BoneFlute.java
index 5c8a42f9b51..3a5f09303ba 100644
--- a/Mage.Sets/src/mage/cards/b/BoneFlute.java
+++ b/Mage.Sets/src/mage/cards/b/BoneFlute.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class BoneFlute extends CardImpl {
+public final class BoneFlute extends CardImpl {
public BoneFlute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BoneHarvest.java b/Mage.Sets/src/mage/cards/b/BoneHarvest.java
index be8211fcdd5..b0d00de11b0 100644
--- a/Mage.Sets/src/mage/cards/b/BoneHarvest.java
+++ b/Mage.Sets/src/mage/cards/b/BoneHarvest.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class BoneHarvest extends CardImpl {
+public final class BoneHarvest extends CardImpl {
public BoneHarvest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BonePicker.java b/Mage.Sets/src/mage/cards/b/BonePicker.java
index 0624cabce29..6468be416f5 100644
--- a/Mage.Sets/src/mage/cards/b/BonePicker.java
+++ b/Mage.Sets/src/mage/cards/b/BonePicker.java
@@ -49,7 +49,7 @@ import mage.watchers.common.MorbidWatcher;
*
* @author stravant
*/
-public class BonePicker extends CardImpl {
+public final class BonePicker extends CardImpl {
public BonePicker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BoneSaw.java b/Mage.Sets/src/mage/cards/b/BoneSaw.java
index ad2c4d06f5e..ff31484000b 100644
--- a/Mage.Sets/src/mage/cards/b/BoneSaw.java
+++ b/Mage.Sets/src/mage/cards/b/BoneSaw.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class BoneSaw extends CardImpl {
+public final class BoneSaw extends CardImpl {
public BoneSaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/b/BoneShredder.java b/Mage.Sets/src/mage/cards/b/BoneShredder.java
index f0db6997473..ff29bb17787 100644
--- a/Mage.Sets/src/mage/cards/b/BoneShredder.java
+++ b/Mage.Sets/src/mage/cards/b/BoneShredder.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class BoneShredder extends CardImpl {
+public final class BoneShredder extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact, nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/b/BoneSplinters.java b/Mage.Sets/src/mage/cards/b/BoneSplinters.java
index 3570bb5a474..cab7d96d179 100644
--- a/Mage.Sets/src/mage/cards/b/BoneSplinters.java
+++ b/Mage.Sets/src/mage/cards/b/BoneSplinters.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BoneSplinters extends CardImpl {
+public final class BoneSplinters extends CardImpl {
public BoneSplinters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BoneToAsh.java b/Mage.Sets/src/mage/cards/b/BoneToAsh.java
index 357d26b06b8..a8946974c50 100644
--- a/Mage.Sets/src/mage/cards/b/BoneToAsh.java
+++ b/Mage.Sets/src/mage/cards/b/BoneToAsh.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class BoneToAsh extends CardImpl {
+public final class BoneToAsh extends CardImpl {
public BoneToAsh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BonebreakerGiant.java b/Mage.Sets/src/mage/cards/b/BonebreakerGiant.java
index cc72967a0ee..1fbc0a457bb 100644
--- a/Mage.Sets/src/mage/cards/b/BonebreakerGiant.java
+++ b/Mage.Sets/src/mage/cards/b/BonebreakerGiant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class BonebreakerGiant extends CardImpl {
+public final class BonebreakerGiant extends CardImpl {
public BonebreakerGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Bonehoard.java b/Mage.Sets/src/mage/cards/b/Bonehoard.java
index 85f78ace708..fe6923ade3f 100644
--- a/Mage.Sets/src/mage/cards/b/Bonehoard.java
+++ b/Mage.Sets/src/mage/cards/b/Bonehoard.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author North
*/
-public class Bonehoard extends CardImpl {
+public final class Bonehoard extends CardImpl {
public Bonehoard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/b/Boneknitter.java b/Mage.Sets/src/mage/cards/b/Boneknitter.java
index 6d1cbd3959f..607b4935c0f 100644
--- a/Mage.Sets/src/mage/cards/b/Boneknitter.java
+++ b/Mage.Sets/src/mage/cards/b/Boneknitter.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class Boneknitter extends CardImpl {
+public final class Boneknitter extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Zombie");
diff --git a/Mage.Sets/src/mage/cards/b/BonescytheSliver.java b/Mage.Sets/src/mage/cards/b/BonescytheSliver.java
index ce72333aa8e..0df0b884259 100644
--- a/Mage.Sets/src/mage/cards/b/BonescytheSliver.java
+++ b/Mage.Sets/src/mage/cards/b/BonescytheSliver.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author jeffwadsworth
*/
-public class BonescytheSliver extends CardImpl {
+public final class BonescytheSliver extends CardImpl {
public BonescytheSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BoneshardSlasher.java b/Mage.Sets/src/mage/cards/b/BoneshardSlasher.java
index ebe80c415ce..b84969b1fd7 100644
--- a/Mage.Sets/src/mage/cards/b/BoneshardSlasher.java
+++ b/Mage.Sets/src/mage/cards/b/BoneshardSlasher.java
@@ -47,7 +47,7 @@ import mage.constants.*;
*
* @author LoneFox
*/
-public class BoneshardSlasher extends CardImpl {
+public final class BoneshardSlasher extends CardImpl {
public BoneshardSlasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Bonesplitter.java b/Mage.Sets/src/mage/cards/b/Bonesplitter.java
index 4cf4164fa99..e362dcfb722 100644
--- a/Mage.Sets/src/mage/cards/b/Bonesplitter.java
+++ b/Mage.Sets/src/mage/cards/b/Bonesplitter.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class Bonesplitter extends CardImpl {
+public final class Bonesplitter extends CardImpl {
public Bonesplitter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BonesplitterSliver.java b/Mage.Sets/src/mage/cards/b/BonesplitterSliver.java
index 8b2761d1b30..e0270c5a1c0 100644
--- a/Mage.Sets/src/mage/cards/b/BonesplitterSliver.java
+++ b/Mage.Sets/src/mage/cards/b/BonesplitterSliver.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author Sir-Speshkitty
*/
-public class BonesplitterSliver extends CardImpl {
+public final class BonesplitterSliver extends CardImpl {
public BonesplitterSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BonethornValesk.java b/Mage.Sets/src/mage/cards/b/BonethornValesk.java
index ec3bf003a92..622548e2dbd 100644
--- a/Mage.Sets/src/mage/cards/b/BonethornValesk.java
+++ b/Mage.Sets/src/mage/cards/b/BonethornValesk.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author TheElk801
*/
-public class BonethornValesk extends CardImpl {
+public final class BonethornValesk extends CardImpl {
public BonethornValesk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BoneyardParley.java b/Mage.Sets/src/mage/cards/b/BoneyardParley.java
index 74874f678a2..18b43b2e354 100644
--- a/Mage.Sets/src/mage/cards/b/BoneyardParley.java
+++ b/Mage.Sets/src/mage/cards/b/BoneyardParley.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class BoneyardParley extends CardImpl {
+public final class BoneyardParley extends CardImpl {
public BoneyardParley(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BoneyardScourge.java b/Mage.Sets/src/mage/cards/b/BoneyardScourge.java
index 6abc6183faf..e6ddaa239b8 100644
--- a/Mage.Sets/src/mage/cards/b/BoneyardScourge.java
+++ b/Mage.Sets/src/mage/cards/b/BoneyardScourge.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class BoneyardScourge extends CardImpl {
+public final class BoneyardScourge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a Dragon you control");
diff --git a/Mage.Sets/src/mage/cards/b/BoneyardWurm.java b/Mage.Sets/src/mage/cards/b/BoneyardWurm.java
index ccbb5200d74..559d8b81d7a 100644
--- a/Mage.Sets/src/mage/cards/b/BoneyardWurm.java
+++ b/Mage.Sets/src/mage/cards/b/BoneyardWurm.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreatureCard;
/**
* @author nantuko
*/
-public class BoneyardWurm extends CardImpl {
+public final class BoneyardWurm extends CardImpl {
public BoneyardWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BonfireOfTheDamned.java b/Mage.Sets/src/mage/cards/b/BonfireOfTheDamned.java
index cb0e9db6c2a..e5dfaf6661d 100644
--- a/Mage.Sets/src/mage/cards/b/BonfireOfTheDamned.java
+++ b/Mage.Sets/src/mage/cards/b/BonfireOfTheDamned.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author noxx
*/
-public class BonfireOfTheDamned extends CardImpl {
+public final class BonfireOfTheDamned extends CardImpl {
public BonfireOfTheDamned(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java b/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java
index 41bb478723d..99c40c41927 100644
--- a/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java
+++ b/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java
@@ -55,7 +55,7 @@ import mage.watchers.common.CreaturesDiedWatcher;
*
* @author jeffwadsworth
*/
-public class BontuTheGlorified extends CardImpl {
+public final class BontuTheGlorified extends CardImpl {
public BontuTheGlorified(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BontusLastReckoning.java b/Mage.Sets/src/mage/cards/b/BontusLastReckoning.java
index 78d3f3809ad..3276460c143 100644
--- a/Mage.Sets/src/mage/cards/b/BontusLastReckoning.java
+++ b/Mage.Sets/src/mage/cards/b/BontusLastReckoning.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author spjspj
*/
-public class BontusLastReckoning extends CardImpl {
+public final class BontusLastReckoning extends CardImpl {
public BontusLastReckoning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BontusMonument.java b/Mage.Sets/src/mage/cards/b/BontusMonument.java
index f60d6c9bd0b..fd4ed1d59e3 100644
--- a/Mage.Sets/src/mage/cards/b/BontusMonument.java
+++ b/Mage.Sets/src/mage/cards/b/BontusMonument.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class BontusMonument extends CardImpl {
+public final class BontusMonument extends CardImpl {
private static final FilterCard filter = new FilterCard("black creature spells");
diff --git a/Mage.Sets/src/mage/cards/b/BonusRound.java b/Mage.Sets/src/mage/cards/b/BonusRound.java
new file mode 100644
index 00000000000..bae237c8597
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/b/BonusRound.java
@@ -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.b;
+
+import java.util.UUID;
+import mage.abilities.DelayedTriggeredAbility;
+import mage.abilities.effects.common.CopyTargetSpellEffect;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+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;
+import mage.game.stack.Spell;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class BonusRound extends CardImpl {
+
+ public BonusRound(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
+
+ // Until end of turn, whenever a player casts an instant or sorcery spell, that player copies it and may choose new targets for the copy.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new BonusRoundDelayedTriggeredAbility()));
+ }
+
+ public BonusRound(final BonusRound card) {
+ super(card);
+ }
+
+ @Override
+ public BonusRound copy() {
+ return new BonusRound(this);
+ }
+}
+
+class BonusRoundDelayedTriggeredAbility extends DelayedTriggeredAbility {
+
+ public BonusRoundDelayedTriggeredAbility() {
+ super(new CopyTargetSpellEffect(true, true), Duration.EndOfTurn, false);
+ }
+
+ public BonusRoundDelayedTriggeredAbility(final BonusRoundDelayedTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public BonusRoundDelayedTriggeredAbility copy() {
+ return new BonusRoundDelayedTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.SPELL_CAST;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ Spell spell = game.getStack().getSpell(event.getTargetId());
+ if (spell != null && (spell.isInstant() || spell.isSorcery())) {
+ this.getEffects().setTargetPointer(new FixedTarget(event.getTargetId()));
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Until end of turn, whenever a player casts an instant or sorcery spell, "
+ + "that player copies it and may choose new targets for the copy";
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/b/BookBurning.java b/Mage.Sets/src/mage/cards/b/BookBurning.java
index 1afbe407e05..c184d9aebef 100644
--- a/Mage.Sets/src/mage/cards/b/BookBurning.java
+++ b/Mage.Sets/src/mage/cards/b/BookBurning.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author tomd1990
*/
-public class BookBurning extends CardImpl {
+public final class BookBurning extends CardImpl {
public BookBurning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BookOfRass.java b/Mage.Sets/src/mage/cards/b/BookOfRass.java
index fbfc363bb7e..3e9a3cc6bfa 100644
--- a/Mage.Sets/src/mage/cards/b/BookOfRass.java
+++ b/Mage.Sets/src/mage/cards/b/BookOfRass.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author nigelzor
*/
-public class BookOfRass extends CardImpl {
+public final class BookOfRass extends CardImpl {
public BookOfRass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/b/BoomBust.java b/Mage.Sets/src/mage/cards/b/BoomBust.java
index ace529057b2..cecb77b1fac 100644
--- a/Mage.Sets/src/mage/cards/b/BoomBust.java
+++ b/Mage.Sets/src/mage/cards/b/BoomBust.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.target.TargetPermanent;
-public class BoomBust extends SplitCard {
+public final class BoomBust extends SplitCard {
private static final FilterLandPermanent filter1 = new FilterLandPermanent("land you control");
private static final FilterLandPermanent filter2 = new FilterLandPermanent("land you don't control");
diff --git a/Mage.Sets/src/mage/cards/b/Boomerang.java b/Mage.Sets/src/mage/cards/b/Boomerang.java
index aa9b28c3d55..899919b616a 100644
--- a/Mage.Sets/src/mage/cards/b/Boomerang.java
+++ b/Mage.Sets/src/mage/cards/b/Boomerang.java
@@ -38,7 +38,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class Boomerang extends CardImpl {
+public final class Boomerang extends CardImpl {
public Boomerang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/Boompile.java b/Mage.Sets/src/mage/cards/b/Boompile.java
index 3df8b0c5542..daebedc6471 100644
--- a/Mage.Sets/src/mage/cards/b/Boompile.java
+++ b/Mage.Sets/src/mage/cards/b/Boompile.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterNonlandPermanent;
*
* @author LevelX2
*/
-public class Boompile extends CardImpl {
+public final class Boompile extends CardImpl {
public Boompile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BoonOfEmrakul.java b/Mage.Sets/src/mage/cards/b/BoonOfEmrakul.java
index 504f58a252e..d6dc78584d7 100644
--- a/Mage.Sets/src/mage/cards/b/BoonOfEmrakul.java
+++ b/Mage.Sets/src/mage/cards/b/BoonOfEmrakul.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class BoonOfEmrakul extends CardImpl {
+public final class BoonOfEmrakul extends CardImpl {
public BoonOfEmrakul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BoonOfErebos.java b/Mage.Sets/src/mage/cards/b/BoonOfErebos.java
index 328b29cb012..bb1262e2b9a 100644
--- a/Mage.Sets/src/mage/cards/b/BoonOfErebos.java
+++ b/Mage.Sets/src/mage/cards/b/BoonOfErebos.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BoonOfErebos extends CardImpl {
+public final class BoonOfErebos extends CardImpl {
public BoonOfErebos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BoonReflection.java b/Mage.Sets/src/mage/cards/b/BoonReflection.java
index 6d17eb2bdcc..6ce2981a44e 100644
--- a/Mage.Sets/src/mage/cards/b/BoonReflection.java
+++ b/Mage.Sets/src/mage/cards/b/BoonReflection.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent.EventType;
* @author jeffwadsworth
*
*/
-public class BoonReflection extends CardImpl {
+public final class BoonReflection extends CardImpl {
public BoonReflection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BoonSatyr.java b/Mage.Sets/src/mage/cards/b/BoonSatyr.java
index 0e239316992..f8b553285b3 100644
--- a/Mage.Sets/src/mage/cards/b/BoonSatyr.java
+++ b/Mage.Sets/src/mage/cards/b/BoonSatyr.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class BoonSatyr extends CardImpl {
+public final class BoonSatyr extends CardImpl {
public BoonSatyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java b/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java
index a7169148af9..8fc16bc351a 100644
--- a/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java
+++ b/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class BoonweaverGiant extends CardImpl {
+public final class BoonweaverGiant extends CardImpl {
public BoonweaverGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/Borborygmos.java b/Mage.Sets/src/mage/cards/b/Borborygmos.java
index 849324bf135..97d92e0fe4b 100644
--- a/Mage.Sets/src/mage/cards/b/Borborygmos.java
+++ b/Mage.Sets/src/mage/cards/b/Borborygmos.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class Borborygmos extends CardImpl {
+public final class Borborygmos extends CardImpl {
public Borborygmos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BorborygmosEnraged.java b/Mage.Sets/src/mage/cards/b/BorborygmosEnraged.java
index 3e0d90897f6..11198c3fa20 100644
--- a/Mage.Sets/src/mage/cards/b/BorborygmosEnraged.java
+++ b/Mage.Sets/src/mage/cards/b/BorborygmosEnraged.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class BorborygmosEnraged extends CardImpl {
+public final class BorborygmosEnraged extends CardImpl {
public BorborygmosEnraged(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BorderGuard.java b/Mage.Sets/src/mage/cards/b/BorderGuard.java
index 62af9755833..46bf2755e2b 100644
--- a/Mage.Sets/src/mage/cards/b/BorderGuard.java
+++ b/Mage.Sets/src/mage/cards/b/BorderGuard.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class BorderGuard extends CardImpl {
+public final class BorderGuard extends CardImpl {
public BorderGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorderPatrol.java b/Mage.Sets/src/mage/cards/b/BorderPatrol.java
index e482a00dffe..76a7a49e7db 100644
--- a/Mage.Sets/src/mage/cards/b/BorderPatrol.java
+++ b/Mage.Sets/src/mage/cards/b/BorderPatrol.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BorderPatrol extends CardImpl {
+public final class BorderPatrol extends CardImpl {
public BorderPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorderlandBehemoth.java b/Mage.Sets/src/mage/cards/b/BorderlandBehemoth.java
index 414e73ec65c..c5e7d64b758 100644
--- a/Mage.Sets/src/mage/cards/b/BorderlandBehemoth.java
+++ b/Mage.Sets/src/mage/cards/b/BorderlandBehemoth.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.PermanentIdPredicate;
*
* @author fireshoes
*/
-public class BorderlandBehemoth extends CardImpl {
+public final class BorderlandBehemoth extends CardImpl {
public BorderlandBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java b/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java
index 97f800e510c..0ac886ed7e0 100644
--- a/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java
+++ b/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetDiscard;
*
* @author fireshoes
*/
-public class BorderlandExplorer extends CardImpl {
+public final class BorderlandExplorer extends CardImpl {
public BorderlandExplorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
@@ -135,7 +135,7 @@ class BorderlandExplorerEffect extends OneShotEffect {
if (player != null) {
Cards cardsPlayer = cardsToDiscard.get(playerId);
if (cardsPlayer != null && !cardsPlayer.isEmpty()) {
- TargetCardInLibrary target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND);
if (player.searchLibrary(target, game)) {
if (!target.getTargets().isEmpty()) {
Cards cards = new CardsImpl(target.getTargets());
diff --git a/Mage.Sets/src/mage/cards/b/BorderlandMarauder.java b/Mage.Sets/src/mage/cards/b/BorderlandMarauder.java
index c6627bfdd32..7017e42bf78 100644
--- a/Mage.Sets/src/mage/cards/b/BorderlandMarauder.java
+++ b/Mage.Sets/src/mage/cards/b/BorderlandMarauder.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Quercitron
*/
-public class BorderlandMarauder extends CardImpl {
+public final class BorderlandMarauder extends CardImpl {
public BorderlandMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BorderlandMinotaur.java b/Mage.Sets/src/mage/cards/b/BorderlandMinotaur.java
index ef037cd2989..b92c8993a88 100644
--- a/Mage.Sets/src/mage/cards/b/BorderlandMinotaur.java
+++ b/Mage.Sets/src/mage/cards/b/BorderlandMinotaur.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BorderlandMinotaur extends CardImpl {
+public final class BorderlandMinotaur extends CardImpl {
public BorderlandMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BorderlandRanger.java b/Mage.Sets/src/mage/cards/b/BorderlandRanger.java
index acb15038782..dd0510d374f 100644
--- a/Mage.Sets/src/mage/cards/b/BorderlandRanger.java
+++ b/Mage.Sets/src/mage/cards/b/BorderlandRanger.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class BorderlandRanger extends CardImpl {
+public final class BorderlandRanger extends CardImpl {
public BorderlandRanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
@@ -53,7 +53,7 @@ public class BorderlandRanger extends CardImpl {
this.toughness = new MageInt(2);
// When Borderland Ranger enters the battlefield, you may search your library for a basic land card, reveal it, and put it into your hand. If you do, shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
}
public BorderlandRanger(final BorderlandRanger card) {
diff --git a/Mage.Sets/src/mage/cards/b/BorealCentaur.java b/Mage.Sets/src/mage/cards/b/BorealCentaur.java
index 36b74ac028d..c9000636233 100644
--- a/Mage.Sets/src/mage/cards/b/BorealCentaur.java
+++ b/Mage.Sets/src/mage/cards/b/BorealCentaur.java
@@ -40,7 +40,7 @@ import mage.constants.*;
*
* @author LoneFox
*/
-public class BorealCentaur extends CardImpl {
+public final class BorealCentaur extends CardImpl {
public BorealCentaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BorealDruid.java b/Mage.Sets/src/mage/cards/b/BorealDruid.java
index 604d4de5eb6..9cf82f9e781 100644
--- a/Mage.Sets/src/mage/cards/b/BorealDruid.java
+++ b/Mage.Sets/src/mage/cards/b/BorealDruid.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class BorealDruid extends CardImpl {
+public final class BorealDruid extends CardImpl {
public BorealDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BorealGriffin.java b/Mage.Sets/src/mage/cards/b/BorealGriffin.java
index b39cbe50fa4..3c9b366d7fb 100644
--- a/Mage.Sets/src/mage/cards/b/BorealGriffin.java
+++ b/Mage.Sets/src/mage/cards/b/BorealGriffin.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author LoneFox
*/
-public class BorealGriffin extends CardImpl {
+public final class BorealGriffin extends CardImpl {
public BorealGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorealShelf.java b/Mage.Sets/src/mage/cards/b/BorealShelf.java
index 90d985921aa..23414ca38f3 100644
--- a/Mage.Sets/src/mage/cards/b/BorealShelf.java
+++ b/Mage.Sets/src/mage/cards/b/BorealShelf.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author dustinconrad
*/
-public class BorealShelf extends CardImpl {
+public final class BorealShelf extends CardImpl {
public BorealShelf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BorisDevilboon.java b/Mage.Sets/src/mage/cards/b/BorisDevilboon.java
index fb1e7dcc5e5..c4432721ea1 100644
--- a/Mage.Sets/src/mage/cards/b/BorisDevilboon.java
+++ b/Mage.Sets/src/mage/cards/b/BorisDevilboon.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.MinorDemonToken;
*
* @author LoneFox
*/
-public class BorisDevilboon extends CardImpl {
+public final class BorisDevilboon extends CardImpl {
public BorisDevilboon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BorosBattleshaper.java b/Mage.Sets/src/mage/cards/b/BorosBattleshaper.java
index 660fe5a7236..f1fd8f83f1e 100644
--- a/Mage.Sets/src/mage/cards/b/BorosBattleshaper.java
+++ b/Mage.Sets/src/mage/cards/b/BorosBattleshaper.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*/
-public class BorosBattleshaper extends CardImpl {
+public final class BorosBattleshaper extends CardImpl {
public BorosBattleshaper (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorosCharm.java b/Mage.Sets/src/mage/cards/b/BorosCharm.java
index 0be3fee1846..bf58b1858d1 100644
--- a/Mage.Sets/src/mage/cards/b/BorosCharm.java
+++ b/Mage.Sets/src/mage/cards/b/BorosCharm.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Plopman
*/
-public class BorosCharm extends CardImpl {
+public final class BorosCharm extends CardImpl {
public BorosCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorosCluestone.java b/Mage.Sets/src/mage/cards/b/BorosCluestone.java
index 94986c84c03..847f99e27e8 100644
--- a/Mage.Sets/src/mage/cards/b/BorosCluestone.java
+++ b/Mage.Sets/src/mage/cards/b/BorosCluestone.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*/
-public class BorosCluestone extends CardImpl {
+public final class BorosCluestone extends CardImpl {
public BorosCluestone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BorosElite.java b/Mage.Sets/src/mage/cards/b/BorosElite.java
index 795e7961863..00f16b23e46 100644
--- a/Mage.Sets/src/mage/cards/b/BorosElite.java
+++ b/Mage.Sets/src/mage/cards/b/BorosElite.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BorosElite extends CardImpl {
+public final class BorosElite extends CardImpl {
public BorosElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorosFuryShield.java b/Mage.Sets/src/mage/cards/b/BorosFuryShield.java
index 1c4bb39da53..e0969553300 100644
--- a/Mage.Sets/src/mage/cards/b/BorosFuryShield.java
+++ b/Mage.Sets/src/mage/cards/b/BorosFuryShield.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Dilnu
*/
-public class BorosFuryShield extends CardImpl {
+public final class BorosFuryShield extends CardImpl {
private static final FilterAttackingOrBlockingCreature filter = new FilterAttackingOrBlockingCreature();
public BorosFuryShield(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/b/BorosGarrison.java b/Mage.Sets/src/mage/cards/b/BorosGarrison.java
index 086c5a12fdb..3140d33f7e0 100644
--- a/Mage.Sets/src/mage/cards/b/BorosGarrison.java
+++ b/Mage.Sets/src/mage/cards/b/BorosGarrison.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Loki
*/
-public class BorosGarrison extends CardImpl {
+public final class BorosGarrison extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/b/BorosGuildgate.java b/Mage.Sets/src/mage/cards/b/BorosGuildgate.java
index 6ea339ed99e..88557d69c51 100644
--- a/Mage.Sets/src/mage/cards/b/BorosGuildgate.java
+++ b/Mage.Sets/src/mage/cards/b/BorosGuildgate.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BorosGuildgate extends CardImpl {
+public final class BorosGuildgate extends CardImpl {
public BorosGuildgate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BorosGuildmage.java b/Mage.Sets/src/mage/cards/b/BorosGuildmage.java
index bd76e2443cd..7e0e5774abc 100644
--- a/Mage.Sets/src/mage/cards/b/BorosGuildmage.java
+++ b/Mage.Sets/src/mage/cards/b/BorosGuildmage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BorosGuildmage extends CardImpl {
+public final class BorosGuildmage extends CardImpl {
public BorosGuildmage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/W}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorosKeyrune.java b/Mage.Sets/src/mage/cards/b/BorosKeyrune.java
index 7d1a77dd836..8f5ef88ebed 100644
--- a/Mage.Sets/src/mage/cards/b/BorosKeyrune.java
+++ b/Mage.Sets/src/mage/cards/b/BorosKeyrune.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author LevelX2
*/
-public class BorosKeyrune extends CardImpl {
+public final class BorosKeyrune extends CardImpl {
public BorosKeyrune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BorosMastiff.java b/Mage.Sets/src/mage/cards/b/BorosMastiff.java
index 1806565f121..31d1d58ea9a 100644
--- a/Mage.Sets/src/mage/cards/b/BorosMastiff.java
+++ b/Mage.Sets/src/mage/cards/b/BorosMastiff.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*/
-public class BorosMastiff extends CardImpl {
+public final class BorosMastiff extends CardImpl {
public BorosMastiff (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorosReckoner.java b/Mage.Sets/src/mage/cards/b/BorosReckoner.java
index 01e9bb8aebb..d0858c1a2c4 100644
--- a/Mage.Sets/src/mage/cards/b/BorosReckoner.java
+++ b/Mage.Sets/src/mage/cards/b/BorosReckoner.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class BorosReckoner extends CardImpl {
+public final class BorosReckoner extends CardImpl {
public BorosReckoner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R/W}{R/W}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorosRecruit.java b/Mage.Sets/src/mage/cards/b/BorosRecruit.java
index 0469ade0290..a0f66d09c8a 100644
--- a/Mage.Sets/src/mage/cards/b/BorosRecruit.java
+++ b/Mage.Sets/src/mage/cards/b/BorosRecruit.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class BorosRecruit extends CardImpl {
+public final class BorosRecruit extends CardImpl {
public BorosRecruit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorosSignet.java b/Mage.Sets/src/mage/cards/b/BorosSignet.java
index 1095e0b2fa5..b7e4c031102 100644
--- a/Mage.Sets/src/mage/cards/b/BorosSignet.java
+++ b/Mage.Sets/src/mage/cards/b/BorosSignet.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class BorosSignet extends CardImpl {
+public final class BorosSignet extends CardImpl {
public BorosSignet (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/b/BorosSwiftblade.java b/Mage.Sets/src/mage/cards/b/BorosSwiftblade.java
index a7e5fae1717..180c70b3f0b 100644
--- a/Mage.Sets/src/mage/cards/b/BorosSwiftblade.java
+++ b/Mage.Sets/src/mage/cards/b/BorosSwiftblade.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class BorosSwiftblade extends CardImpl {
+public final class BorosSwiftblade extends CardImpl {
public BorosSwiftblade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorrowedGrace.java b/Mage.Sets/src/mage/cards/b/BorrowedGrace.java
index b4df378b401..f0da24e4b6d 100644
--- a/Mage.Sets/src/mage/cards/b/BorrowedGrace.java
+++ b/Mage.Sets/src/mage/cards/b/BorrowedGrace.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class BorrowedGrace extends CardImpl {
+public final class BorrowedGrace extends CardImpl {
public BorrowedGrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BorrowedHostility.java b/Mage.Sets/src/mage/cards/b/BorrowedHostility.java
index 235ddc6b31d..30303f438c9 100644
--- a/Mage.Sets/src/mage/cards/b/BorrowedHostility.java
+++ b/Mage.Sets/src/mage/cards/b/BorrowedHostility.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BorrowedHostility extends CardImpl {
+public final class BorrowedHostility extends CardImpl {
private static final FilterCreaturePermanent filterBoost = new FilterCreaturePermanent("creature to get +3/+0");
private static final FilterCreaturePermanent filterFirstStrike = new FilterCreaturePermanent("creature to gain first strike");
diff --git a/Mage.Sets/src/mage/cards/b/BorrowedMalevolence.java b/Mage.Sets/src/mage/cards/b/BorrowedMalevolence.java
index cc7fc412d41..1c510ef6290 100644
--- a/Mage.Sets/src/mage/cards/b/BorrowedMalevolence.java
+++ b/Mage.Sets/src/mage/cards/b/BorrowedMalevolence.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BorrowedMalevolence extends CardImpl {
+public final class BorrowedMalevolence extends CardImpl {
private static final FilterCreaturePermanent filterCreaturePlus = new FilterCreaturePermanent("creature to get +1/+1");
private static final FilterCreaturePermanent filterCreatureMinus = new FilterCreaturePermanent("creature to get -1/-1");
diff --git a/Mage.Sets/src/mage/cards/b/Borrowing100000Arrows.java b/Mage.Sets/src/mage/cards/b/Borrowing100000Arrows.java
index bcf374841e8..4748a7cacdb 100644
--- a/Mage.Sets/src/mage/cards/b/Borrowing100000Arrows.java
+++ b/Mage.Sets/src/mage/cards/b/Borrowing100000Arrows.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class Borrowing100000Arrows extends CardImpl {
+public final class Borrowing100000Arrows extends CardImpl {
public Borrowing100000Arrows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BorrowingTheEastWind.java b/Mage.Sets/src/mage/cards/b/BorrowingTheEastWind.java
index 46a9d9c3a70..039dd07958c 100644
--- a/Mage.Sets/src/mage/cards/b/BorrowingTheEastWind.java
+++ b/Mage.Sets/src/mage/cards/b/BorrowingTheEastWind.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LoneFox
*/
-public class BorrowingTheEastWind extends CardImpl {
+public final class BorrowingTheEastWind extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with horsemanship");
diff --git a/Mage.Sets/src/mage/cards/b/BoseijuWhoSheltersAll.java b/Mage.Sets/src/mage/cards/b/BoseijuWhoSheltersAll.java
index 76e36ced9ba..7413d32a25f 100644
--- a/Mage.Sets/src/mage/cards/b/BoseijuWhoSheltersAll.java
+++ b/Mage.Sets/src/mage/cards/b/BoseijuWhoSheltersAll.java
@@ -53,7 +53,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class BoseijuWhoSheltersAll extends CardImpl {
+public final class BoseijuWhoSheltersAll extends CardImpl {
public BoseijuWhoSheltersAll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/b/BoshIronGolem.java b/Mage.Sets/src/mage/cards/b/BoshIronGolem.java
index 484ed6270cd..9d2face4e49 100644
--- a/Mage.Sets/src/mage/cards/b/BoshIronGolem.java
+++ b/Mage.Sets/src/mage/cards/b/BoshIronGolem.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class BoshIronGolem extends CardImpl {
+public final class BoshIronGolem extends CardImpl {
public BoshIronGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/b/BoskBanneret.java b/Mage.Sets/src/mage/cards/b/BoskBanneret.java
index 468cdf9cabf..3aa4e88bc6c 100644
--- a/Mage.Sets/src/mage/cards/b/BoskBanneret.java
+++ b/Mage.Sets/src/mage/cards/b/BoskBanneret.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class BoskBanneret extends CardImpl {
+public final class BoskBanneret extends CardImpl {
private static final FilterCard filter = new FilterCard("Treefolk spells and Shaman spells");
diff --git a/Mage.Sets/src/mage/cards/b/Bossk.java b/Mage.Sets/src/mage/cards/b/Bossk.java
index 676b9ea5134..2a62406858d 100644
--- a/Mage.Sets/src/mage/cards/b/Bossk.java
+++ b/Mage.Sets/src/mage/cards/b/Bossk.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class Bossk extends CardImpl {
+public final class Bossk extends CardImpl {
public Bossk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
@@ -70,7 +70,7 @@ public class Bossk extends CardImpl {
this.addAbility(new BosskTriggeredAbility());
// Bounty — Whenever a creature an opponent controls with a bounty counter on it dies, you may search your library for a basic land card, reveal it, and put it in to your hand. If you do, shuffle your library.
- this.addAbility(new BountyAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true), true));
+ this.addAbility(new BountyAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
}
public Bossk(final Bossk card) {
diff --git a/Mage.Sets/src/mage/cards/b/BotanicalSanctum.java b/Mage.Sets/src/mage/cards/b/BotanicalSanctum.java
index 4afcf0d4b7b..ee684814732 100644
--- a/Mage.Sets/src/mage/cards/b/BotanicalSanctum.java
+++ b/Mage.Sets/src/mage/cards/b/BotanicalSanctum.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class BotanicalSanctum extends CardImpl {
+public final class BotanicalSanctum extends CardImpl {
public BotanicalSanctum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/b/BottleGnomes.java b/Mage.Sets/src/mage/cards/b/BottleGnomes.java
index 7ff6e4c91af..7b20166a00b 100644
--- a/Mage.Sets/src/mage/cards/b/BottleGnomes.java
+++ b/Mage.Sets/src/mage/cards/b/BottleGnomes.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class BottleGnomes extends CardImpl {
+public final class BottleGnomes extends CardImpl {
public BottleGnomes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java b/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java
index 5f2386afbd0..873645c5a49 100644
--- a/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java
+++ b/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author KholdFuzion
*/
-public class BottleOfSuleiman extends CardImpl {
+public final class BottleOfSuleiman extends CardImpl {
public BottleOfSuleiman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BottledCloister.java b/Mage.Sets/src/mage/cards/b/BottledCloister.java
index ccf50c297e6..18d3b37e994 100644
--- a/Mage.Sets/src/mage/cards/b/BottledCloister.java
+++ b/Mage.Sets/src/mage/cards/b/BottledCloister.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class BottledCloister extends CardImpl {
+public final class BottledCloister extends CardImpl {
public BottledCloister(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BottomlessPit.java b/Mage.Sets/src/mage/cards/b/BottomlessPit.java
index d01791b9f8d..df6b21a2eea 100644
--- a/Mage.Sets/src/mage/cards/b/BottomlessPit.java
+++ b/Mage.Sets/src/mage/cards/b/BottomlessPit.java
@@ -39,7 +39,7 @@ import mage.constants.TargetController;
*
* @author dustinconrad
*/
-public class BottomlessPit extends CardImpl {
+public final class BottomlessPit extends CardImpl {
public BottomlessPit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BottomlessVault.java b/Mage.Sets/src/mage/cards/b/BottomlessVault.java
index 2c97f86a05d..f46f835c0da 100644
--- a/Mage.Sets/src/mage/cards/b/BottomlessVault.java
+++ b/Mage.Sets/src/mage/cards/b/BottomlessVault.java
@@ -54,7 +54,7 @@ import mage.counters.CounterType;
*
* @author anonymous
*/
-public class BottomlessVault extends CardImpl {
+public final class BottomlessVault extends CardImpl {
public BottomlessVault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BoulderSalvo.java b/Mage.Sets/src/mage/cards/b/BoulderSalvo.java
index 03197d52f32..48f8f7b98b1 100644
--- a/Mage.Sets/src/mage/cards/b/BoulderSalvo.java
+++ b/Mage.Sets/src/mage/cards/b/BoulderSalvo.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BoulderSalvo extends CardImpl {
+public final class BoulderSalvo extends CardImpl {
public BoulderSalvo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Boulderfall.java b/Mage.Sets/src/mage/cards/b/Boulderfall.java
index 3696aa62e29..1182cae9fa9 100644
--- a/Mage.Sets/src/mage/cards/b/Boulderfall.java
+++ b/Mage.Sets/src/mage/cards/b/Boulderfall.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author Plopman
*/
-public class Boulderfall extends CardImpl {
+public final class Boulderfall extends CardImpl {
public Boulderfall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{6}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BouncingBeebles.java b/Mage.Sets/src/mage/cards/b/BouncingBeebles.java
index 644695aedfe..9d88116c60f 100644
--- a/Mage.Sets/src/mage/cards/b/BouncingBeebles.java
+++ b/Mage.Sets/src/mage/cards/b/BouncingBeebles.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author Backfir3
*/
-public class BouncingBeebles extends CardImpl {
+public final class BouncingBeebles extends CardImpl {
public BouncingBeebles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java b/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java
index ae21d3b7678..5ddcf870656 100644
--- a/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java
+++ b/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author halljared
*/
-public class BoundByMoonsilver extends CardImpl {
+public final class BoundByMoonsilver extends CardImpl {
private final static FilterControlledPermanent filter = new FilterControlledPermanent("another permanent");
diff --git a/Mage.Sets/src/mage/cards/b/BoundDetermined.java b/Mage.Sets/src/mage/cards/b/BoundDetermined.java
index cc5e126e42a..c5049757534 100644
--- a/Mage.Sets/src/mage/cards/b/BoundDetermined.java
+++ b/Mage.Sets/src/mage/cards/b/BoundDetermined.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class BoundDetermined extends SplitCard {
+public final class BoundDetermined extends SplitCard {
public BoundDetermined(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}{G}", "{G}{U}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/b/BoundInSilence.java b/Mage.Sets/src/mage/cards/b/BoundInSilence.java
index bd879b3c6a7..00d597371a3 100644
--- a/Mage.Sets/src/mage/cards/b/BoundInSilence.java
+++ b/Mage.Sets/src/mage/cards/b/BoundInSilence.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BoundInSilence extends CardImpl {
+public final class BoundInSilence extends CardImpl {
public BoundInSilence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BoundingKrasis.java b/Mage.Sets/src/mage/cards/b/BoundingKrasis.java
index 755fe48784a..0317d75fe03 100644
--- a/Mage.Sets/src/mage/cards/b/BoundingKrasis.java
+++ b/Mage.Sets/src/mage/cards/b/BoundingKrasis.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BoundingKrasis extends CardImpl {
+public final class BoundingKrasis extends CardImpl {
public BoundingKrasis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BoundlessRealms.java b/Mage.Sets/src/mage/cards/b/BoundlessRealms.java
index 03f8188e687..16b9d557795 100644
--- a/Mage.Sets/src/mage/cards/b/BoundlessRealms.java
+++ b/Mage.Sets/src/mage/cards/b/BoundlessRealms.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author North
*/
-public class BoundlessRealms extends CardImpl {
+public final class BoundlessRealms extends CardImpl {
public BoundlessRealms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{G}");
@@ -95,7 +95,7 @@ class BoundlessRealmsEffect extends OneShotEffect {
filter.add(new ControllerPredicate(TargetController.YOU));
int amount = new PermanentsOnBattlefieldCount(filter).calculate(game, source, this);
- TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, game)) {
controller.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null);
}
diff --git a/Mage.Sets/src/mage/cards/b/BounteousKirin.java b/Mage.Sets/src/mage/cards/b/BounteousKirin.java
index 539324e0fee..d60bd62f07c 100644
--- a/Mage.Sets/src/mage/cards/b/BounteousKirin.java
+++ b/Mage.Sets/src/mage/cards/b/BounteousKirin.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class BounteousKirin extends CardImpl {
+public final class BounteousKirin extends CardImpl {
public BounteousKirin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BountifulHarvest.java b/Mage.Sets/src/mage/cards/b/BountifulHarvest.java
index bcfef132727..b2d1c507a0e 100644
--- a/Mage.Sets/src/mage/cards/b/BountifulHarvest.java
+++ b/Mage.Sets/src/mage/cards/b/BountifulHarvest.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledPermanent;
/**
* @author Loki
*/
-public class BountifulHarvest extends CardImpl {
+public final class BountifulHarvest extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/b/BountifulPromenade.java b/Mage.Sets/src/mage/cards/b/BountifulPromenade.java
index 6f80b937f7f..bba7eb3a2ac 100644
--- a/Mage.Sets/src/mage/cards/b/BountifulPromenade.java
+++ b/Mage.Sets/src/mage/cards/b/BountifulPromenade.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class BountifulPromenade extends CardImpl {
+public final class BountifulPromenade extends CardImpl {
public BountifulPromenade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/b/BountyCollector.java b/Mage.Sets/src/mage/cards/b/BountyCollector.java
index 6aead18351f..78c8e7df823 100644
--- a/Mage.Sets/src/mage/cards/b/BountyCollector.java
+++ b/Mage.Sets/src/mage/cards/b/BountyCollector.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Styxo
*/
-public class BountyCollector extends CardImpl {
+public final class BountyCollector extends CardImpl {
public BountyCollector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BountyHunter.java b/Mage.Sets/src/mage/cards/b/BountyHunter.java
index aeb555d3b3c..0c15585fc63 100644
--- a/Mage.Sets/src/mage/cards/b/BountyHunter.java
+++ b/Mage.Sets/src/mage/cards/b/BountyHunter.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LoneFox
*/
-public class BountyHunter extends CardImpl {
+public final class BountyHunter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature with a bounty counter on it");
diff --git a/Mage.Sets/src/mage/cards/b/BountyOfTheHunt.java b/Mage.Sets/src/mage/cards/b/BountyOfTheHunt.java
index f7689d4557e..4d5bfb0ee0a 100644
--- a/Mage.Sets/src/mage/cards/b/BountyOfTheHunt.java
+++ b/Mage.Sets/src/mage/cards/b/BountyOfTheHunt.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LoneFox
*/
-public class BountyOfTheHunt extends CardImpl {
+public final class BountyOfTheHunt extends CardImpl {
public BountyOfTheHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BountyOfTheLuxa.java b/Mage.Sets/src/mage/cards/b/BountyOfTheLuxa.java
index fe32d153ef9..d41959fc22e 100644
--- a/Mage.Sets/src/mage/cards/b/BountyOfTheLuxa.java
+++ b/Mage.Sets/src/mage/cards/b/BountyOfTheLuxa.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class BountyOfTheLuxa extends CardImpl {
+public final class BountyOfTheLuxa extends CardImpl {
public BountyOfTheLuxa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BountySniper.java b/Mage.Sets/src/mage/cards/b/BountySniper.java
index 769bc345048..12f1bc30a6d 100644
--- a/Mage.Sets/src/mage/cards/b/BountySniper.java
+++ b/Mage.Sets/src/mage/cards/b/BountySniper.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class BountySniper extends CardImpl {
+public final class BountySniper extends CardImpl {
public BountySniper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BountySpotter.java b/Mage.Sets/src/mage/cards/b/BountySpotter.java
index 7b12e272da7..cac58eef575 100644
--- a/Mage.Sets/src/mage/cards/b/BountySpotter.java
+++ b/Mage.Sets/src/mage/cards/b/BountySpotter.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class BountySpotter extends CardImpl {
+public final class BountySpotter extends CardImpl {
public BountySpotter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BowOfNylea.java b/Mage.Sets/src/mage/cards/b/BowOfNylea.java
index 26bca2028db..81d4a4763f3 100644
--- a/Mage.Sets/src/mage/cards/b/BowOfNylea.java
+++ b/Mage.Sets/src/mage/cards/b/BowOfNylea.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BowOfNylea extends CardImpl {
+public final class BowOfNylea extends CardImpl {
private static final FilterCreaturePermanent filterFlying = new FilterCreaturePermanent("creature with flying");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BowerPassage.java b/Mage.Sets/src/mage/cards/b/BowerPassage.java
index 90f56a26ce2..859a5817dc9 100644
--- a/Mage.Sets/src/mage/cards/b/BowerPassage.java
+++ b/Mage.Sets/src/mage/cards/b/BowerPassage.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
/**
* @author noxx
*/
-public class BowerPassage extends CardImpl {
+public final class BowerPassage extends CardImpl {
public BowerPassage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BoxOfFreerangeGoblins.java b/Mage.Sets/src/mage/cards/b/BoxOfFreerangeGoblins.java
index 16771460577..e4f22bf81e6 100644
--- a/Mage.Sets/src/mage/cards/b/BoxOfFreerangeGoblins.java
+++ b/Mage.Sets/src/mage/cards/b/BoxOfFreerangeGoblins.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class BoxOfFreerangeGoblins extends CardImpl {
+public final class BoxOfFreerangeGoblins extends CardImpl {
public BoxOfFreerangeGoblins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BraceForImpact.java b/Mage.Sets/src/mage/cards/b/BraceForImpact.java
index dd6686b3c75..d8583766e07 100644
--- a/Mage.Sets/src/mage/cards/b/BraceForImpact.java
+++ b/Mage.Sets/src/mage/cards/b/BraceForImpact.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class BraceForImpact extends CardImpl {
+public final class BraceForImpact extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("multicolored creature");
diff --git a/Mage.Sets/src/mage/cards/b/BrackwaterElemental.java b/Mage.Sets/src/mage/cards/b/BrackwaterElemental.java
index 74c8fc8241c..11070c5a2c7 100644
--- a/Mage.Sets/src/mage/cards/b/BrackwaterElemental.java
+++ b/Mage.Sets/src/mage/cards/b/BrackwaterElemental.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class BrackwaterElemental extends CardImpl {
+public final class BrackwaterElemental extends CardImpl {
public BrackwaterElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BragoKingEternal.java b/Mage.Sets/src/mage/cards/b/BragoKingEternal.java
index c69b88afc32..80f85e2764a 100644
--- a/Mage.Sets/src/mage/cards/b/BragoKingEternal.java
+++ b/Mage.Sets/src/mage/cards/b/BragoKingEternal.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class BragoKingEternal extends CardImpl {
+public final class BragoKingEternal extends CardImpl {
public BragoKingEternal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BraidOfFire.java b/Mage.Sets/src/mage/cards/b/BraidOfFire.java
index b68c213d9dd..0cd6221af3f 100644
--- a/Mage.Sets/src/mage/cards/b/BraidOfFire.java
+++ b/Mage.Sets/src/mage/cards/b/BraidOfFire.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author AlumiuN
*/
-public class BraidOfFire extends CardImpl {
+public final class BraidOfFire extends CardImpl {
public BraidOfFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BraidsCabalMinion.java b/Mage.Sets/src/mage/cards/b/BraidsCabalMinion.java
index 71387fcbb96..65cbcc0af6a 100644
--- a/Mage.Sets/src/mage/cards/b/BraidsCabalMinion.java
+++ b/Mage.Sets/src/mage/cards/b/BraidsCabalMinion.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author cbt33, North (Karma)
*/
-public class BraidsCabalMinion extends CardImpl {
+public final class BraidsCabalMinion extends CardImpl {
static final FilterPermanent filter = new FilterPermanent("an artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/b/BraidsConjurerAdept.java b/Mage.Sets/src/mage/cards/b/BraidsConjurerAdept.java
index ef3276fb418..aa4016f5ba7 100644
--- a/Mage.Sets/src/mage/cards/b/BraidsConjurerAdept.java
+++ b/Mage.Sets/src/mage/cards/b/BraidsConjurerAdept.java
@@ -30,7 +30,7 @@ package mage.cards.b;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LoneFox
*/
-public class BraidsConjurerAdept extends CardImpl {
+public final class BraidsConjurerAdept extends CardImpl {
private static final FilterCard filter = new FilterCard("an artifact, creature, or land card");
@@ -64,7 +64,7 @@ public class BraidsConjurerAdept extends CardImpl {
this.toughness = new MageInt(2);
// At the beginning of each player's upkeep, that player may put an artifact, creature, or land card from their hand onto the battlefield.
- this.addAbility(new BeginningOfUpkeepTriggeredAbility(new PutPermanentOnBattlefieldEffect(filter, true), TargetController.ANY, false));
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new PutCardFromHandOntoBattlefieldEffect(filter, true), TargetController.ANY, false));
}
public BraidsConjurerAdept(final BraidsConjurerAdept card) {
diff --git a/Mage.Sets/src/mage/cards/b/BraidwoodCup.java b/Mage.Sets/src/mage/cards/b/BraidwoodCup.java
index d7ad7710e69..f93e59cb5a6 100644
--- a/Mage.Sets/src/mage/cards/b/BraidwoodCup.java
+++ b/Mage.Sets/src/mage/cards/b/BraidwoodCup.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class BraidwoodCup extends CardImpl {
+public final class BraidwoodCup extends CardImpl {
public BraidwoodCup(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BraidwoodSextant.java b/Mage.Sets/src/mage/cards/b/BraidwoodSextant.java
index 11ceac2232e..e66b642cdeb 100644
--- a/Mage.Sets/src/mage/cards/b/BraidwoodSextant.java
+++ b/Mage.Sets/src/mage/cards/b/BraidwoodSextant.java
@@ -46,14 +46,14 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class BraidwoodSextant extends CardImpl {
+public final class BraidwoodSextant extends CardImpl {
public BraidwoodSextant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
// {2}, {tap}, Sacrifice Braidwood Sextant: Search your library for a basic land card, reveal that card, and put it into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new ManaCostsImpl("{2}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/b/BrainFreeze.java b/Mage.Sets/src/mage/cards/b/BrainFreeze.java
index 372c5c4a827..f8300ab422c 100644
--- a/Mage.Sets/src/mage/cards/b/BrainFreeze.java
+++ b/Mage.Sets/src/mage/cards/b/BrainFreeze.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class BrainFreeze extends CardImpl {
+public final class BrainFreeze extends CardImpl {
public BrainFreeze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BrainGorgers.java b/Mage.Sets/src/mage/cards/b/BrainGorgers.java
index 3c5fe641568..53adc1c785c 100644
--- a/Mage.Sets/src/mage/cards/b/BrainGorgers.java
+++ b/Mage.Sets/src/mage/cards/b/BrainGorgers.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class BrainGorgers extends CardImpl {
+public final class BrainGorgers extends CardImpl {
public BrainGorgers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BrainInAJar.java b/Mage.Sets/src/mage/cards/b/BrainInAJar.java
index bf9b9a3a9c8..0e82c0e1562 100644
--- a/Mage.Sets/src/mage/cards/b/BrainInAJar.java
+++ b/Mage.Sets/src/mage/cards/b/BrainInAJar.java
@@ -28,6 +28,7 @@
package mage.cards.b;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
@@ -56,7 +57,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class BrainInAJar extends CardImpl {
+public final class BrainInAJar extends CardImpl {
public BrainInAJar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
@@ -114,7 +115,7 @@ class BrainInAJarCastEffect extends OneShotEffect {
controller.chooseTarget(outcome, target, source, game);
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/b/BrainMaggot.java b/Mage.Sets/src/mage/cards/b/BrainMaggot.java
index 78b0e6c8851..736d9482aaf 100644
--- a/Mage.Sets/src/mage/cards/b/BrainMaggot.java
+++ b/Mage.Sets/src/mage/cards/b/BrainMaggot.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class BrainMaggot extends CardImpl {
+public final class BrainMaggot extends CardImpl {
public BrainMaggot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BrainPry.java b/Mage.Sets/src/mage/cards/b/BrainPry.java
index 7ca2ab73b26..69294ad8f07 100644
--- a/Mage.Sets/src/mage/cards/b/BrainPry.java
+++ b/Mage.Sets/src/mage/cards/b/BrainPry.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class BrainPry extends CardImpl {
+public final class BrainPry extends CardImpl {
public BrainPry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BrainWeevil.java b/Mage.Sets/src/mage/cards/b/BrainWeevil.java
index 1a102482f91..2c2013bc41f 100644
--- a/Mage.Sets/src/mage/cards/b/BrainWeevil.java
+++ b/Mage.Sets/src/mage/cards/b/BrainWeevil.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class BrainWeevil extends CardImpl {
+public final class BrainWeevil extends CardImpl {
public BrainWeevil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Brainbite.java b/Mage.Sets/src/mage/cards/b/Brainbite.java
index f34c2d5325a..e1cbd864ce7 100644
--- a/Mage.Sets/src/mage/cards/b/Brainbite.java
+++ b/Mage.Sets/src/mage/cards/b/Brainbite.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class Brainbite extends CardImpl {
+public final class Brainbite extends CardImpl {
public Brainbite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Braingeyser.java b/Mage.Sets/src/mage/cards/b/Braingeyser.java
index eb6649d95e8..a3b03c6452e 100644
--- a/Mage.Sets/src/mage/cards/b/Braingeyser.java
+++ b/Mage.Sets/src/mage/cards/b/Braingeyser.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
* @author KholdFuzion
*/
-public class Braingeyser extends CardImpl {
+public final class Braingeyser extends CardImpl {
public Braingeyser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/Brainspoil.java b/Mage.Sets/src/mage/cards/b/Brainspoil.java
index f432d4d1f7a..c65c6e7f597 100644
--- a/Mage.Sets/src/mage/cards/b/Brainspoil.java
+++ b/Mage.Sets/src/mage/cards/b/Brainspoil.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Brainspoil extends CardImpl {
+public final class Brainspoil extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that isn't enchanted");
diff --git a/Mage.Sets/src/mage/cards/b/Brainstorm.java b/Mage.Sets/src/mage/cards/b/Brainstorm.java
index 41236434759..1214951630d 100644
--- a/Mage.Sets/src/mage/cards/b/Brainstorm.java
+++ b/Mage.Sets/src/mage/cards/b/Brainstorm.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author jonubuu
*/
-public class Brainstorm extends CardImpl {
+public final class Brainstorm extends CardImpl {
public Brainstorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/b/Brainwash.java b/Mage.Sets/src/mage/cards/b/Brainwash.java
index f787a151bf7..75c0b37eeca 100644
--- a/Mage.Sets/src/mage/cards/b/Brainwash.java
+++ b/Mage.Sets/src/mage/cards/b/Brainwash.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author Galatolol
*/
-public class Brainwash extends CardImpl {
+public final class Brainwash extends CardImpl {
public Brainwash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BrambleCreeper.java b/Mage.Sets/src/mage/cards/b/BrambleCreeper.java
index 5f76e408351..fda58b78c60 100644
--- a/Mage.Sets/src/mage/cards/b/BrambleCreeper.java
+++ b/Mage.Sets/src/mage/cards/b/BrambleCreeper.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class BrambleCreeper extends CardImpl {
+public final class BrambleCreeper extends CardImpl {
public BrambleCreeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BrambleElemental.java b/Mage.Sets/src/mage/cards/b/BrambleElemental.java
index a6ee5e64cf6..af5b8db2847 100644
--- a/Mage.Sets/src/mage/cards/b/BrambleElemental.java
+++ b/Mage.Sets/src/mage/cards/b/BrambleElemental.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author LevelX2
*/
-public class BrambleElemental extends CardImpl {
+public final class BrambleElemental extends CardImpl {
public BrambleElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BrambleSovereign.java b/Mage.Sets/src/mage/cards/b/BrambleSovereign.java
new file mode 100644
index 00000000000..c3635d888d4
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/b/BrambleSovereign.java
@@ -0,0 +1,118 @@
+/*
+ * 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.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
+import mage.abilities.effects.common.DoIfCostPaid;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.SetTargetPointer;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.permanent.AnotherPredicate;
+import mage.filter.predicate.permanent.TokenPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class BrambleSovereign extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
+
+ static {
+ filter.add(Predicates.not(new TokenPredicate()));
+ filter.add(new AnotherPredicate());
+ }
+
+ public BrambleSovereign(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
+
+ this.subtype.add(SubType.DRYAD);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(4);
+
+ // Whenever another nontoken creature enters the battlefield, you may pay {1}{G}. If you do, that creature's controller creates a token that's a copy of that creature.
+ this.addAbility(new EntersBattlefieldAllTriggeredAbility(
+ Zone.BATTLEFIELD,
+ new DoIfCostPaid(new BrambleSovereignEffect(), new ManaCostsImpl("{1}{G}")),
+ filter, false, SetTargetPointer.PERMANENT,
+ "Whenever another nontoken creature enters the battlefield, you may pay {1}{G}. "
+ + "If you do, that creature's controller creates a token that's a copy of that creature."
+ ));
+ }
+
+ public BrambleSovereign(final BrambleSovereign card) {
+ super(card);
+ }
+
+ @Override
+ public BrambleSovereign copy() {
+ return new BrambleSovereign(this);
+ }
+}
+
+class BrambleSovereignEffect extends OneShotEffect {
+
+ BrambleSovereignEffect() {
+ super(Outcome.PutCardInPlay);
+ this.staticText = "its controller creates a token that's a copy of that creature";
+ }
+
+ BrambleSovereignEffect(final BrambleSovereignEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public BrambleSovereignEffect copy() {
+ return new BrambleSovereignEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent permanent = game.getPermanentOrLKIBattlefield(this.getTargetPointer().getFirst(game, source));
+ if (permanent != null) {
+ CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(permanent.getControllerId());
+ effect.setTargetPointer(targetPointer);
+ effect.apply(game, source);
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/b/Bramblecrush.java b/Mage.Sets/src/mage/cards/b/Bramblecrush.java
index e2e66f43b48..240d0afb762 100644
--- a/Mage.Sets/src/mage/cards/b/Bramblecrush.java
+++ b/Mage.Sets/src/mage/cards/b/Bramblecrush.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class Bramblecrush extends CardImpl {
+public final class Bramblecrush extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature permanent");
diff --git a/Mage.Sets/src/mage/cards/b/Bramblesnap.java b/Mage.Sets/src/mage/cards/b/Bramblesnap.java
index f7a126ef572..bced927713a 100644
--- a/Mage.Sets/src/mage/cards/b/Bramblesnap.java
+++ b/Mage.Sets/src/mage/cards/b/Bramblesnap.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class Bramblesnap extends CardImpl {
+public final class Bramblesnap extends CardImpl {
public Bramblesnap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BrambleweftBehemoth.java b/Mage.Sets/src/mage/cards/b/BrambleweftBehemoth.java
index ef2e37781b0..e52ded3af1a 100644
--- a/Mage.Sets/src/mage/cards/b/BrambleweftBehemoth.java
+++ b/Mage.Sets/src/mage/cards/b/BrambleweftBehemoth.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class BrambleweftBehemoth extends CardImpl {
+public final class BrambleweftBehemoth extends CardImpl {
public BrambleweftBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BramblewoodParagon.java b/Mage.Sets/src/mage/cards/b/BramblewoodParagon.java
index fbfa151b8b7..5e041fff43d 100644
--- a/Mage.Sets/src/mage/cards/b/BramblewoodParagon.java
+++ b/Mage.Sets/src/mage/cards/b/BramblewoodParagon.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class BramblewoodParagon extends CardImpl {
+public final class BramblewoodParagon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Each creature you control with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/b/BranchingBolt.java b/Mage.Sets/src/mage/cards/b/BranchingBolt.java
index fd762b99573..f2cc8f8d96a 100644
--- a/Mage.Sets/src/mage/cards/b/BranchingBolt.java
+++ b/Mage.Sets/src/mage/cards/b/BranchingBolt.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class BranchingBolt extends CardImpl {
+public final class BranchingBolt extends CardImpl {
private static final FilterCreaturePermanent filterFlying = new FilterCreaturePermanent("creature with flying");
private static final FilterCreaturePermanent filterNotFlying = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/b/BranchsnapLorian.java b/Mage.Sets/src/mage/cards/b/BranchsnapLorian.java
index 3a98dbb7eec..b8c66a7e1a6 100644
--- a/Mage.Sets/src/mage/cards/b/BranchsnapLorian.java
+++ b/Mage.Sets/src/mage/cards/b/BranchsnapLorian.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class BranchsnapLorian extends CardImpl {
+public final class BranchsnapLorian extends CardImpl {
public BranchsnapLorian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Brand.java b/Mage.Sets/src/mage/cards/b/Brand.java
index dbd697f4468..d41c6a59fb8 100644
--- a/Mage.Sets/src/mage/cards/b/Brand.java
+++ b/Mage.Sets/src/mage/cards/b/Brand.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.other.OwnerPredicate;
*
* @author fenhl
*/
-public class Brand extends CardImpl {
+public final class Brand extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("all permanents you own");
diff --git a/Mage.Sets/src/mage/cards/b/BrandOfIllOmen.java b/Mage.Sets/src/mage/cards/b/BrandOfIllOmen.java
index 0b66aafdaa1..e0df592a66e 100644
--- a/Mage.Sets/src/mage/cards/b/BrandOfIllOmen.java
+++ b/Mage.Sets/src/mage/cards/b/BrandOfIllOmen.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author ciaccona007
*/
-public class BrandOfIllOmen extends CardImpl {
+public final class BrandOfIllOmen extends CardImpl {
public BrandOfIllOmen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java b/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java
index 83553cefb51..54315058fc6 100644
--- a/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java
+++ b/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java
@@ -50,7 +50,7 @@ import mage.players.Player;
/**
* @author L_J
*/
-public class BrandedBrawlers extends CardImpl {
+public final class BrandedBrawlers extends CardImpl {
static final private FilterLandPermanent filter = new FilterLandPermanent("an untapped land");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BrandedHowler.java b/Mage.Sets/src/mage/cards/b/BrandedHowler.java
index f3e5d3589d8..ffc05235aa6 100644
--- a/Mage.Sets/src/mage/cards/b/BrandedHowler.java
+++ b/Mage.Sets/src/mage/cards/b/BrandedHowler.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class BrandedHowler extends CardImpl {
+public final class BrandedHowler extends CardImpl {
public BrandedHowler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/b/BrassGnat.java b/Mage.Sets/src/mage/cards/b/BrassGnat.java
index 5e5bb388fb9..8bb931c8a1a 100644
--- a/Mage.Sets/src/mage/cards/b/BrassGnat.java
+++ b/Mage.Sets/src/mage/cards/b/BrassGnat.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author nigelzor
*/
-public class BrassGnat extends CardImpl {
+public final class BrassGnat extends CardImpl {
public BrassGnat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BrassHerald.java b/Mage.Sets/src/mage/cards/b/BrassHerald.java
index 5daf8059b6a..e9f56db068a 100644
--- a/Mage.Sets/src/mage/cards/b/BrassHerald.java
+++ b/Mage.Sets/src/mage/cards/b/BrassHerald.java
@@ -48,7 +48,7 @@ import mage.game.Game;
*
* @author LoneFox
*/
-public class BrassHerald extends CardImpl {
+public final class BrassHerald extends CardImpl {
public BrassHerald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/b/BrassMan.java b/Mage.Sets/src/mage/cards/b/BrassMan.java
index d29eaf14584..1d8067bd01f 100644
--- a/Mage.Sets/src/mage/cards/b/BrassMan.java
+++ b/Mage.Sets/src/mage/cards/b/BrassMan.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author KholdFuzion
*/
-public class BrassMan extends CardImpl {
+public final class BrassMan extends CardImpl {
public BrassMan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BrassSecretary.java b/Mage.Sets/src/mage/cards/b/BrassSecretary.java
index 929594378de..e5da87475c2 100644
--- a/Mage.Sets/src/mage/cards/b/BrassSecretary.java
+++ b/Mage.Sets/src/mage/cards/b/BrassSecretary.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class BrassSecretary extends CardImpl {
+public final class BrassSecretary extends CardImpl {
public BrassSecretary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/BrassSquire.java b/Mage.Sets/src/mage/cards/b/BrassSquire.java
index b654467351c..cec1dcf8795 100644
--- a/Mage.Sets/src/mage/cards/b/BrassSquire.java
+++ b/Mage.Sets/src/mage/cards/b/BrassSquire.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class BrassSquire extends CardImpl {
+public final class BrassSquire extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Equipment you control");
diff --git a/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java b/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java
index 7620727df5a..c91e07978ec 100644
--- a/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java
+++ b/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class BrassTalonChimera extends CardImpl {
+public final class BrassTalonChimera extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature");
diff --git a/Mage.Sets/src/mage/cards/b/BrassclawOrcs.java b/Mage.Sets/src/mage/cards/b/BrassclawOrcs.java
index 7022834e540..2b107c69e78 100644
--- a/Mage.Sets/src/mage/cards/b/BrassclawOrcs.java
+++ b/Mage.Sets/src/mage/cards/b/BrassclawOrcs.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author dustinconrad
*/
-public class BrassclawOrcs extends CardImpl {
+public final class BrassclawOrcs extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BrasssBounty.java b/Mage.Sets/src/mage/cards/b/BrasssBounty.java
index 62c42f3dc09..243c0447258 100644
--- a/Mage.Sets/src/mage/cards/b/BrasssBounty.java
+++ b/Mage.Sets/src/mage/cards/b/BrasssBounty.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author LevelX2
*/
-public class BrasssBounty extends CardImpl {
+public final class BrasssBounty extends CardImpl {
public BrasssBounty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Bravado.java b/Mage.Sets/src/mage/cards/b/Bravado.java
index 9ef5bbe17b1..c1b01e808a4 100644
--- a/Mage.Sets/src/mage/cards/b/Bravado.java
+++ b/Mage.Sets/src/mage/cards/b/Bravado.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author Backfir3
*/
-public class Bravado extends CardImpl {
+public final class Bravado extends CardImpl {
public Bravado(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BraveTheElements.java b/Mage.Sets/src/mage/cards/b/BraveTheElements.java
index f08e5ff9b03..cf66c59dbc5 100644
--- a/Mage.Sets/src/mage/cards/b/BraveTheElements.java
+++ b/Mage.Sets/src/mage/cards/b/BraveTheElements.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BraveTheElements extends CardImpl {
+public final class BraveTheElements extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("White creatures you control");
diff --git a/Mage.Sets/src/mage/cards/b/BraveTheSands.java b/Mage.Sets/src/mage/cards/b/BraveTheSands.java
index 44cd2ae2b79..768a7e9ece1 100644
--- a/Mage.Sets/src/mage/cards/b/BraveTheSands.java
+++ b/Mage.Sets/src/mage/cards/b/BraveTheSands.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author emerald000
*/
-public class BraveTheSands extends CardImpl {
+public final class BraveTheSands extends CardImpl {
public BraveTheSands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/Brawl.java b/Mage.Sets/src/mage/cards/b/Brawl.java
index 0d556da22eb..f96822205f6 100644
--- a/Mage.Sets/src/mage/cards/b/Brawl.java
+++ b/Mage.Sets/src/mage/cards/b/Brawl.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Brawl extends CardImpl {
+public final class Brawl extends CardImpl {
public Brawl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrawlersPlate.java b/Mage.Sets/src/mage/cards/b/BrawlersPlate.java
index 63d80b07125..71ec961f507 100644
--- a/Mage.Sets/src/mage/cards/b/BrawlersPlate.java
+++ b/Mage.Sets/src/mage/cards/b/BrawlersPlate.java
@@ -43,7 +43,7 @@ import mage.constants.*;
*
* @author emerald000
*/
-public class BrawlersPlate extends CardImpl {
+public final class BrawlersPlate extends CardImpl {
public BrawlersPlate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/b/Brawn.java b/Mage.Sets/src/mage/cards/b/Brawn.java
index faa025bd9be..17639a5cbf4 100644
--- a/Mage.Sets/src/mage/cards/b/Brawn.java
+++ b/Mage.Sets/src/mage/cards/b/Brawn.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Backfir3
*/
-public class Brawn extends CardImpl {
+public final class Brawn extends CardImpl {
private static final String ruleText = "As long as Brawn is in your graveyard and you control a Forest, creatures you control have trample";
diff --git a/Mage.Sets/src/mage/cards/b/BrazenBuccaneers.java b/Mage.Sets/src/mage/cards/b/BrazenBuccaneers.java
index d0b91465973..fe00e56656d 100644
--- a/Mage.Sets/src/mage/cards/b/BrazenBuccaneers.java
+++ b/Mage.Sets/src/mage/cards/b/BrazenBuccaneers.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class BrazenBuccaneers extends CardImpl {
+public final class BrazenBuccaneers extends CardImpl {
public BrazenBuccaneers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrazenFreebooter.java b/Mage.Sets/src/mage/cards/b/BrazenFreebooter.java
index f391daee26c..6e4968fb508 100644
--- a/Mage.Sets/src/mage/cards/b/BrazenFreebooter.java
+++ b/Mage.Sets/src/mage/cards/b/BrazenFreebooter.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author L_J
*/
-public class BrazenFreebooter extends CardImpl {
+public final class BrazenFreebooter extends CardImpl {
public BrazenFreebooter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrazenScourge.java b/Mage.Sets/src/mage/cards/b/BrazenScourge.java
index b4c0087339d..b8c968ab238 100644
--- a/Mage.Sets/src/mage/cards/b/BrazenScourge.java
+++ b/Mage.Sets/src/mage/cards/b/BrazenScourge.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class BrazenScourge extends CardImpl {
+public final class BrazenScourge extends CardImpl {
public BrazenScourge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrazenWolves.java b/Mage.Sets/src/mage/cards/b/BrazenWolves.java
index 9786b7f897d..71211de5e0d 100644
--- a/Mage.Sets/src/mage/cards/b/BrazenWolves.java
+++ b/Mage.Sets/src/mage/cards/b/BrazenWolves.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BrazenWolves extends CardImpl {
+public final class BrazenWolves extends CardImpl {
public BrazenWolves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Breach.java b/Mage.Sets/src/mage/cards/b/Breach.java
index 7f57adc979e..f42979b736a 100644
--- a/Mage.Sets/src/mage/cards/b/Breach.java
+++ b/Mage.Sets/src/mage/cards/b/Breach.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Breach extends CardImpl {
+public final class Breach extends CardImpl {
public Breach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BreachingHippocamp.java b/Mage.Sets/src/mage/cards/b/BreachingHippocamp.java
index ab9f967a244..fc593d840e1 100644
--- a/Mage.Sets/src/mage/cards/b/BreachingHippocamp.java
+++ b/Mage.Sets/src/mage/cards/b/BreachingHippocamp.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class BreachingHippocamp extends CardImpl {
+public final class BreachingHippocamp extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BreachingLeviathan.java b/Mage.Sets/src/mage/cards/b/BreachingLeviathan.java
index a015ea4a696..80de582520a 100644
--- a/Mage.Sets/src/mage/cards/b/BreachingLeviathan.java
+++ b/Mage.Sets/src/mage/cards/b/BreachingLeviathan.java
@@ -56,7 +56,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author LevelX2
*/
-public class BreachingLeviathan extends CardImpl {
+public final class BreachingLeviathan extends CardImpl {
public BreachingLeviathan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BreakAsunder.java b/Mage.Sets/src/mage/cards/b/BreakAsunder.java
index 43ce195fbfa..945f3935e20 100644
--- a/Mage.Sets/src/mage/cards/b/BreakAsunder.java
+++ b/Mage.Sets/src/mage/cards/b/BreakAsunder.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author Jgod
*/
-public class BreakAsunder extends CardImpl {
+public final class BreakAsunder extends CardImpl {
public BreakAsunder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BreakOfDay.java b/Mage.Sets/src/mage/cards/b/BreakOfDay.java
index d007d88789f..9dd4fd05a00 100644
--- a/Mage.Sets/src/mage/cards/b/BreakOfDay.java
+++ b/Mage.Sets/src/mage/cards/b/BreakOfDay.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
* @author Loki
*/
-public class BreakOfDay extends CardImpl {
+public final class BreakOfDay extends CardImpl {
public BreakOfDay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BreakOpen.java b/Mage.Sets/src/mage/cards/b/BreakOpen.java
index 4d166c1ad62..e6d64a5b977 100644
--- a/Mage.Sets/src/mage/cards/b/BreakOpen.java
+++ b/Mage.Sets/src/mage/cards/b/BreakOpen.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class BreakOpen extends CardImpl {
+public final class BreakOpen extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Face-down creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/b/BreakThroughTheLine.java b/Mage.Sets/src/mage/cards/b/BreakThroughTheLine.java
index f5c119af301..bdc37466593 100644
--- a/Mage.Sets/src/mage/cards/b/BreakThroughTheLine.java
+++ b/Mage.Sets/src/mage/cards/b/BreakThroughTheLine.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BreakThroughTheLine extends CardImpl {
+public final class BreakThroughTheLine extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/b/BreakerOfArmies.java b/Mage.Sets/src/mage/cards/b/BreakerOfArmies.java
index fe366f021f5..78c87c2b4a9 100644
--- a/Mage.Sets/src/mage/cards/b/BreakerOfArmies.java
+++ b/Mage.Sets/src/mage/cards/b/BreakerOfArmies.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class BreakerOfArmies extends CardImpl {
+public final class BreakerOfArmies extends CardImpl {
public BreakerOfArmies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/b/BreakingEntering.java b/Mage.Sets/src/mage/cards/b/BreakingEntering.java
index 9a3756f8164..b346dddfd1d 100644
--- a/Mage.Sets/src/mage/cards/b/BreakingEntering.java
+++ b/Mage.Sets/src/mage/cards/b/BreakingEntering.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
import mage.target.common.TargetCardInGraveyard;
import mage.target.targetpointer.FixedTarget;
-public class BreakingEntering extends SplitCard {
+public final class BreakingEntering extends SplitCard {
public BreakingEntering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}{B}", "{4}{B}{R}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/b/BreakingPoint.java b/Mage.Sets/src/mage/cards/b/BreakingPoint.java
index acbd34b4725..04fa56e1df7 100644
--- a/Mage.Sets/src/mage/cards/b/BreakingPoint.java
+++ b/Mage.Sets/src/mage/cards/b/BreakingPoint.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author ilcartographer
*/
-public class BreakingPoint extends CardImpl {
+public final class BreakingPoint extends CardImpl {
public BreakingPoint(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BreakingWave.java b/Mage.Sets/src/mage/cards/b/BreakingWave.java
index 1f21437d4fb..af644c18193 100644
--- a/Mage.Sets/src/mage/cards/b/BreakingWave.java
+++ b/Mage.Sets/src/mage/cards/b/BreakingWave.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
* @author LoneFox
*
*/
-public class BreakingWave extends CardImpl {
+public final class BreakingWave extends CardImpl {
public BreakingWave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BreakneckRider.java b/Mage.Sets/src/mage/cards/b/BreakneckRider.java
index 308d7d8558a..618b5994fcf 100644
--- a/Mage.Sets/src/mage/cards/b/BreakneckRider.java
+++ b/Mage.Sets/src/mage/cards/b/BreakneckRider.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class BreakneckRider extends CardImpl {
+public final class BreakneckRider extends CardImpl {
public BreakneckRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Breakthrough.java b/Mage.Sets/src/mage/cards/b/Breakthrough.java
index f8f2e05451b..a095f407563 100644
--- a/Mage.Sets/src/mage/cards/b/Breakthrough.java
+++ b/Mage.Sets/src/mage/cards/b/Breakthrough.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class Breakthrough extends CardImpl {
+public final class Breakthrough extends CardImpl {
public Breakthrough(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BreathOfDarigaaz.java b/Mage.Sets/src/mage/cards/b/BreathOfDarigaaz.java
index 84df1b12895..71c47029110 100644
--- a/Mage.Sets/src/mage/cards/b/BreathOfDarigaaz.java
+++ b/Mage.Sets/src/mage/cards/b/BreathOfDarigaaz.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author FenrisulfrX
*/
-public class BreathOfDarigaaz extends CardImpl {
+public final class BreathOfDarigaaz extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/b/BreathOfDreams.java b/Mage.Sets/src/mage/cards/b/BreathOfDreams.java
index a9ff1064d16..d7db687a7d2 100644
--- a/Mage.Sets/src/mage/cards/b/BreathOfDreams.java
+++ b/Mage.Sets/src/mage/cards/b/BreathOfDreams.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author L_J
*/
-public class BreathOfDreams extends CardImpl {
+public final class BreathOfDreams extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Green creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BreathOfFury.java b/Mage.Sets/src/mage/cards/b/BreathOfFury.java
index a289d33ffeb..d6ea50a8f2a 100644
--- a/Mage.Sets/src/mage/cards/b/BreathOfFury.java
+++ b/Mage.Sets/src/mage/cards/b/BreathOfFury.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author duncant
*/
-public class BreathOfFury extends CardImpl {
+public final class BreathOfFury extends CardImpl {
public BreathOfFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BreathOfLife.java b/Mage.Sets/src/mage/cards/b/BreathOfLife.java
index 89707a5ef25..a4938fef017 100644
--- a/Mage.Sets/src/mage/cards/b/BreathOfLife.java
+++ b/Mage.Sets/src/mage/cards/b/BreathOfLife.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author dustinconrad
*/
-public class BreathOfLife extends CardImpl {
+public final class BreathOfLife extends CardImpl {
public BreathOfLife(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BreathOfMalfegor.java b/Mage.Sets/src/mage/cards/b/BreathOfMalfegor.java
index 2c47b6c6966..c7b13ab90f1 100644
--- a/Mage.Sets/src/mage/cards/b/BreathOfMalfegor.java
+++ b/Mage.Sets/src/mage/cards/b/BreathOfMalfegor.java
@@ -38,7 +38,7 @@ import mage.constants.TargetController;
*
* @author jeffwadsworth
*/
-public class BreathOfMalfegor extends CardImpl {
+public final class BreathOfMalfegor extends CardImpl {
public BreathOfMalfegor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/Breathstealer.java b/Mage.Sets/src/mage/cards/b/Breathstealer.java
index c80867040b2..94887a3f84b 100644
--- a/Mage.Sets/src/mage/cards/b/Breathstealer.java
+++ b/Mage.Sets/src/mage/cards/b/Breathstealer.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class Breathstealer extends CardImpl {
+public final class Breathstealer extends CardImpl {
public Breathstealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BreathstealersCrypt.java b/Mage.Sets/src/mage/cards/b/BreathstealersCrypt.java
index 94718a650a1..2ef5f70d0b8 100644
--- a/Mage.Sets/src/mage/cards/b/BreathstealersCrypt.java
+++ b/Mage.Sets/src/mage/cards/b/BreathstealersCrypt.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class BreathstealersCrypt extends CardImpl {
+public final class BreathstealersCrypt extends CardImpl {
public BreathstealersCrypt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BredForTheHunt.java b/Mage.Sets/src/mage/cards/b/BredForTheHunt.java
index 5490121f311..83f368fda69 100644
--- a/Mage.Sets/src/mage/cards/b/BredForTheHunt.java
+++ b/Mage.Sets/src/mage/cards/b/BredForTheHunt.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
-public class BredForTheHunt extends CardImpl {
+public final class BredForTheHunt extends CardImpl {
public BredForTheHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BreedingPit.java b/Mage.Sets/src/mage/cards/b/BreedingPit.java
index b1577618730..c056bc706b9 100644
--- a/Mage.Sets/src/mage/cards/b/BreedingPit.java
+++ b/Mage.Sets/src/mage/cards/b/BreedingPit.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.BreedingPitThrullToken;
*
* @author jeffwadsworth
*/
-public class BreedingPit extends CardImpl {
+public final class BreedingPit extends CardImpl {
public BreedingPit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BreedingPool.java b/Mage.Sets/src/mage/cards/b/BreedingPool.java
index 628bb5ac4a5..02c4bb7f5e6 100644
--- a/Mage.Sets/src/mage/cards/b/BreedingPool.java
+++ b/Mage.Sets/src/mage/cards/b/BreedingPool.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class BreedingPool extends CardImpl {
+public final class BreedingPool extends CardImpl {
public BreedingPool(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/b/Breezekeeper.java b/Mage.Sets/src/mage/cards/b/Breezekeeper.java
index 94c66228426..d7390fec690 100644
--- a/Mage.Sets/src/mage/cards/b/Breezekeeper.java
+++ b/Mage.Sets/src/mage/cards/b/Breezekeeper.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Breezekeeper extends CardImpl {
+public final class Breezekeeper extends CardImpl {
public Breezekeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BreyaEtheriumShaper.java b/Mage.Sets/src/mage/cards/b/BreyaEtheriumShaper.java
index 6b033469512..2c018e2d4a9 100644
--- a/Mage.Sets/src/mage/cards/b/BreyaEtheriumShaper.java
+++ b/Mage.Sets/src/mage/cards/b/BreyaEtheriumShaper.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class BreyaEtheriumShaper extends CardImpl {
+public final class BreyaEtheriumShaper extends CardImpl {
public BreyaEtheriumShaper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{W}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BriarPatch.java b/Mage.Sets/src/mage/cards/b/BriarPatch.java
index ce90a08e89c..92f5d833ad1 100644
--- a/Mage.Sets/src/mage/cards/b/BriarPatch.java
+++ b/Mage.Sets/src/mage/cards/b/BriarPatch.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class BriarPatch extends CardImpl {
+public final class BriarPatch extends CardImpl {
public BriarPatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BriarShield.java b/Mage.Sets/src/mage/cards/b/BriarShield.java
index 019f4eb276e..485ab441101 100644
--- a/Mage.Sets/src/mage/cards/b/BriarShield.java
+++ b/Mage.Sets/src/mage/cards/b/BriarShield.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class BriarShield extends CardImpl {
+public final class BriarShield extends CardImpl {
public BriarShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BriarberryCohort.java b/Mage.Sets/src/mage/cards/b/BriarberryCohort.java
index f487fc4dffb..7bfd13854bb 100644
--- a/Mage.Sets/src/mage/cards/b/BriarberryCohort.java
+++ b/Mage.Sets/src/mage/cards/b/BriarberryCohort.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class BriarberryCohort extends CardImpl {
+public final class BriarberryCohort extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/b/BriarbridgePatrol.java b/Mage.Sets/src/mage/cards/b/BriarbridgePatrol.java
index 9cbfc70cc39..5d79f7c1769 100644
--- a/Mage.Sets/src/mage/cards/b/BriarbridgePatrol.java
+++ b/Mage.Sets/src/mage/cards/b/BriarbridgePatrol.java
@@ -27,12 +27,14 @@
*/
package mage.cards.b;
+import java.util.List;
+import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.DealsDamageToOneOrMoreCreaturesTriggeredAbility;
import mage.abilities.condition.Condition;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.keyword.InvestigateEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -40,18 +42,15 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
-import mage.filter.common.FilterCreatureCard;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.watchers.common.PermanentsSacrificedWatcher;
-import java.util.List;
-import java.util.UUID;
-
/**
* @author LevelX2
*/
-public class BriarbridgePatrol extends CardImpl {
+public final class BriarbridgePatrol extends CardImpl {
public BriarbridgePatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
@@ -62,7 +61,7 @@ public class BriarbridgePatrol extends CardImpl {
// Whenever Briarbridge Patrol deals damage to one or more creatures, investigate (Create a colorless Clue artifact token with "2, Sacrifice this artifact: Draw a card.").
this.addAbility(new DealsDamageToOneOrMoreCreaturesTriggeredAbility(new InvestigateEffect(), false, false, false));
// At the beginning of each end step, if you sacrificed three or more Clues this turn, you may put a creature card from your hand onto the battlefield.
- this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new PutPermanentOnBattlefieldEffect(new FilterCreatureCard("a creature card")), TargetController.ANY,
+ this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_CREATURE_A), TargetController.ANY,
BriarbridgePatrolCondition.instance, true), new PermanentsSacrificedWatcher());
}
@@ -104,4 +103,4 @@ enum BriarbridgePatrolCondition implements Condition {
return "if you sacrificed three or more Clues this turn";
}
- }
+}
diff --git a/Mage.Sets/src/mage/cards/b/Briarhorn.java b/Mage.Sets/src/mage/cards/b/Briarhorn.java
index bcf3429f0b3..f8efa781a28 100644
--- a/Mage.Sets/src/mage/cards/b/Briarhorn.java
+++ b/Mage.Sets/src/mage/cards/b/Briarhorn.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Briarhorn extends CardImpl {
+public final class Briarhorn extends CardImpl {
public Briarhorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BriarknitKami.java b/Mage.Sets/src/mage/cards/b/BriarknitKami.java
index efe95b2eaf9..29d7def9b1c 100644
--- a/Mage.Sets/src/mage/cards/b/BriarknitKami.java
+++ b/Mage.Sets/src/mage/cards/b/BriarknitKami.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BriarknitKami extends CardImpl {
+public final class BriarknitKami extends CardImpl {
public BriarknitKami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BriarpackAlpha.java b/Mage.Sets/src/mage/cards/b/BriarpackAlpha.java
index e1064ed0109..9aecf173143 100644
--- a/Mage.Sets/src/mage/cards/b/BriarpackAlpha.java
+++ b/Mage.Sets/src/mage/cards/b/BriarpackAlpha.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BriarpackAlpha extends CardImpl {
+public final class BriarpackAlpha extends CardImpl {
public BriarpackAlpha(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BribersPurse.java b/Mage.Sets/src/mage/cards/b/BribersPurse.java
index f515587dd60..2b1e09d8a66 100644
--- a/Mage.Sets/src/mage/cards/b/BribersPurse.java
+++ b/Mage.Sets/src/mage/cards/b/BribersPurse.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BribersPurse extends CardImpl {
+public final class BribersPurse extends CardImpl {
public BribersPurse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{X}");
diff --git a/Mage.Sets/src/mage/cards/b/Bribery.java b/Mage.Sets/src/mage/cards/b/Bribery.java
index 23265d2619b..76971325b60 100644
--- a/Mage.Sets/src/mage/cards/b/Bribery.java
+++ b/Mage.Sets/src/mage/cards/b/Bribery.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class Bribery extends CardImpl {
+public final class Bribery extends CardImpl {
public Bribery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BridgeFromBelow.java b/Mage.Sets/src/mage/cards/b/BridgeFromBelow.java
index 80fa80f289f..4ed2fc2bd1b 100644
--- a/Mage.Sets/src/mage/cards/b/BridgeFromBelow.java
+++ b/Mage.Sets/src/mage/cards/b/BridgeFromBelow.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class BridgeFromBelow extends CardImpl {
+public final class BridgeFromBelow extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Whenever a nontoken creature is put into your graveyard from the battlefield");
diff --git a/Mage.Sets/src/mage/cards/b/BrightReprisal.java b/Mage.Sets/src/mage/cards/b/BrightReprisal.java
index 3a8884ea8f3..765eff0661d 100644
--- a/Mage.Sets/src/mage/cards/b/BrightReprisal.java
+++ b/Mage.Sets/src/mage/cards/b/BrightReprisal.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author TheElk801
*/
-public class BrightReprisal extends CardImpl {
+public final class BrightReprisal extends CardImpl {
public BrightReprisal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/Brightflame.java b/Mage.Sets/src/mage/cards/b/Brightflame.java
index 7b1107b2fe7..f8e0c560aad 100644
--- a/Mage.Sets/src/mage/cards/b/Brightflame.java
+++ b/Mage.Sets/src/mage/cards/b/Brightflame.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Dilnu
*/
-public class Brightflame extends CardImpl {
+public final class Brightflame extends CardImpl {
public Brightflame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}{R}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BrighthearthBanneret.java b/Mage.Sets/src/mage/cards/b/BrighthearthBanneret.java
index 10be161c3a6..154e9f24a60 100644
--- a/Mage.Sets/src/mage/cards/b/BrighthearthBanneret.java
+++ b/Mage.Sets/src/mage/cards/b/BrighthearthBanneret.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class BrighthearthBanneret extends CardImpl {
+public final class BrighthearthBanneret extends CardImpl {
private static final FilterCard filter = new FilterCard("Elemental spells and Warrior spells");
diff --git a/Mage.Sets/src/mage/cards/b/Brightling.java b/Mage.Sets/src/mage/cards/b/Brightling.java
new file mode 100644
index 00000000000..c378ba77181
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/b/Brightling.java
@@ -0,0 +1,138 @@
+/*
+ * 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.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ColoredManaCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.ReturnToHandSourceEffect;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
+import mage.abilities.keyword.LifelinkAbility;
+import mage.abilities.keyword.VigilanceAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.ColoredManaSymbol;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class Brightling extends CardImpl {
+
+ public Brightling(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
+
+ this.subtype.add(SubType.SHAPESHIFTER);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // {W}: Brightling gains vigilance until end of turn.
+ this.addAbility(new SimpleActivatedAbility(
+ Zone.BATTLEFIELD,
+ new GainAbilitySourceEffect(
+ VigilanceAbility.getInstance(),
+ Duration.EndOfTurn
+ ),
+ new ColoredManaCost(ColoredManaSymbol.W)
+ ));
+
+ // {W}: Brightling gains lifelink until end of turn.
+ this.addAbility(new SimpleActivatedAbility(
+ Zone.BATTLEFIELD,
+ new GainAbilitySourceEffect(
+ LifelinkAbility.getInstance(),
+ Duration.EndOfTurn
+ ),
+ new ColoredManaCost(ColoredManaSymbol.W)
+ ));
+
+ // {W}: Return Brightling to its owner's hand.
+ this.addAbility(new SimpleActivatedAbility(
+ Zone.BATTLEFIELD,
+ new ReturnToHandSourceEffect(true),
+ new ColoredManaCost(ColoredManaSymbol.W)
+ ));
+
+ // {1}: Brightling gets +1/-1 or -1/+1 until end of turn.
+ this.addAbility(new SimpleActivatedAbility(
+ Zone.BATTLEFIELD,
+ new BrightlingEffect(),
+ new GenericManaCost(1)
+ ));
+ }
+
+ public Brightling(final Brightling card) {
+ super(card);
+ }
+
+ @Override
+ public Brightling copy() {
+ return new Brightling(this);
+ }
+}
+
+class BrightlingEffect extends OneShotEffect {
+
+ BrightlingEffect() {
+ super(Outcome.BoostCreature);
+ this.staticText = "{this} gets +1/-1 or -1/+1 until end of turn";
+ }
+
+ BrightlingEffect(final BrightlingEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public BrightlingEffect copy() {
+ return new BrightlingEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getControllerId());
+ Permanent permanent = game.getPermanent(source.getSourceId());
+ if (player == null || permanent == null) {
+ return false;
+ }
+ int boost = (player.chooseUse(outcome, "Give +1/-1 or -1/+1?", null, "+1/-1", "-1/+1", source, game) ? 1 : -1);
+ return new BoostSourceEffect(boost, -1 * boost, Duration.EndOfTurn).apply(game, source);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/b/BrightstoneRitual.java b/Mage.Sets/src/mage/cards/b/BrightstoneRitual.java
index da6cd91c884..4eb821cce07 100644
--- a/Mage.Sets/src/mage/cards/b/BrightstoneRitual.java
+++ b/Mage.Sets/src/mage/cards/b/BrightstoneRitual.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class BrightstoneRitual extends CardImpl {
+public final class BrightstoneRitual extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Goblin on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/b/BrigidHeroOfKinsbaile.java b/Mage.Sets/src/mage/cards/b/BrigidHeroOfKinsbaile.java
index 1d9e56825ad..81d0d2ddf78 100644
--- a/Mage.Sets/src/mage/cards/b/BrigidHeroOfKinsbaile.java
+++ b/Mage.Sets/src/mage/cards/b/BrigidHeroOfKinsbaile.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class BrigidHeroOfKinsbaile extends CardImpl {
+public final class BrigidHeroOfKinsbaile extends CardImpl {
public BrigidHeroOfKinsbaile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BrilliantHalo.java b/Mage.Sets/src/mage/cards/b/BrilliantHalo.java
index 3a0a1d3be71..c8b1b46d059 100644
--- a/Mage.Sets/src/mage/cards/b/BrilliantHalo.java
+++ b/Mage.Sets/src/mage/cards/b/BrilliantHalo.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BrilliantHalo extends CardImpl {
+public final class BrilliantHalo extends CardImpl {
public BrilliantHalo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BrilliantPlan.java b/Mage.Sets/src/mage/cards/b/BrilliantPlan.java
index 0c73f589632..2ba7b380a4a 100644
--- a/Mage.Sets/src/mage/cards/b/BrilliantPlan.java
+++ b/Mage.Sets/src/mage/cards/b/BrilliantPlan.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class BrilliantPlan extends CardImpl {
+public final class BrilliantPlan extends CardImpl {
public BrilliantPlan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BrilliantSpectrum.java b/Mage.Sets/src/mage/cards/b/BrilliantSpectrum.java
index 14598aff258..66fe1f7c091 100644
--- a/Mage.Sets/src/mage/cards/b/BrilliantSpectrum.java
+++ b/Mage.Sets/src/mage/cards/b/BrilliantSpectrum.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class BrilliantSpectrum extends CardImpl {
+public final class BrilliantSpectrum extends CardImpl {
public BrilliantSpectrum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BrilliantUltimatum.java b/Mage.Sets/src/mage/cards/b/BrilliantUltimatum.java
index f91c2b78046..7a2946962c7 100644
--- a/Mage.Sets/src/mage/cards/b/BrilliantUltimatum.java
+++ b/Mage.Sets/src/mage/cards/b/BrilliantUltimatum.java
@@ -31,6 +31,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.*;
@@ -47,10 +48,10 @@ import mage.target.common.TargetOpponent;
*
* @author jeffwadsworth
*/
-public class BrilliantUltimatum extends CardImpl {
+public final class BrilliantUltimatum extends CardImpl {
public BrilliantUltimatum(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}{W}{U}{U}{U}{B}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{W}{W}{U}{U}{U}{B}{B}");
// Exile the top five cards of your library. An opponent separates those cards into two piles. You may play any number of cards from one of those piles without paying their mana costs.
this.getSpellAbility().addEffect(new BrilliantUltimatumEffect());
@@ -136,7 +137,7 @@ class BrilliantUltimatumEffect extends OneShotEffect {
TargetCard targetExiledCard = new TargetCard(Zone.EXILED, new FilterCard());
if (controller.chooseTarget(Outcome.PlayForFree, selectedPile, targetExiledCard, source, game)) {
Card card = selectedPile.get(targetExiledCard.getFirstTarget(), game);
- if (controller.playCard(card, game, true, true)) {
+ if (controller.playCard(card, game, true, true, new MageObjectReference(source.getSourceObject(game), game))) {
selectedPileCards.remove(card);
selectedPile.remove(card);
}
diff --git a/Mage.Sets/src/mage/cards/b/BrimazKingOfOreskos.java b/Mage.Sets/src/mage/cards/b/BrimazKingOfOreskos.java
index a590196abe5..20fd05179a7 100644
--- a/Mage.Sets/src/mage/cards/b/BrimazKingOfOreskos.java
+++ b/Mage.Sets/src/mage/cards/b/BrimazKingOfOreskos.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class BrimazKingOfOreskos extends CardImpl {
+public final class BrimazKingOfOreskos extends CardImpl {
public BrimazKingOfOreskos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BrimstoneDragon.java b/Mage.Sets/src/mage/cards/b/BrimstoneDragon.java
index 77d44e990c9..920fd3146f5 100644
--- a/Mage.Sets/src/mage/cards/b/BrimstoneDragon.java
+++ b/Mage.Sets/src/mage/cards/b/BrimstoneDragon.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class BrimstoneDragon extends CardImpl {
+public final class BrimstoneDragon extends CardImpl {
public BrimstoneDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrimstoneMage.java b/Mage.Sets/src/mage/cards/b/BrimstoneMage.java
index f7109c04829..c2a400c7549 100644
--- a/Mage.Sets/src/mage/cards/b/BrimstoneMage.java
+++ b/Mage.Sets/src/mage/cards/b/BrimstoneMage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki, noxx
*/
-public class BrimstoneMage extends LevelerCard {
+public final class BrimstoneMage extends LevelerCard {
public BrimstoneMage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrimstoneVolley.java b/Mage.Sets/src/mage/cards/b/BrimstoneVolley.java
index 4bd38fdb02c..2546468de63 100644
--- a/Mage.Sets/src/mage/cards/b/BrimstoneVolley.java
+++ b/Mage.Sets/src/mage/cards/b/BrimstoneVolley.java
@@ -44,7 +44,7 @@ import mage.watchers.common.MorbidWatcher;
/**
* @author nantuko
*/
-public class BrimstoneVolley extends CardImpl {
+public final class BrimstoneVolley extends CardImpl {
public BrimstoneVolley(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrindleBoar.java b/Mage.Sets/src/mage/cards/b/BrindleBoar.java
index 3e8b2cb4ac9..affd8d5372b 100644
--- a/Mage.Sets/src/mage/cards/b/BrindleBoar.java
+++ b/Mage.Sets/src/mage/cards/b/BrindleBoar.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BrindleBoar extends CardImpl {
+public final class BrindleBoar extends CardImpl {
public BrindleBoar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BrindleShoat.java b/Mage.Sets/src/mage/cards/b/BrindleShoat.java
index 83dbf1603dd..42b6e78e34b 100644
--- a/Mage.Sets/src/mage/cards/b/BrindleShoat.java
+++ b/Mage.Sets/src/mage/cards/b/BrindleShoat.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.BoarToken;
*
* @author LevelX2
*/
-public class BrindleShoat extends CardImpl {
+public final class BrindleShoat extends CardImpl {
public BrindleShoat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BrineElemental.java b/Mage.Sets/src/mage/cards/b/BrineElemental.java
index a6cb3786b48..534c756b07f 100644
--- a/Mage.Sets/src/mage/cards/b/BrineElemental.java
+++ b/Mage.Sets/src/mage/cards/b/BrineElemental.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class BrineElemental extends CardImpl {
+public final class BrineElemental extends CardImpl {
public BrineElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BrineShaman.java b/Mage.Sets/src/mage/cards/b/BrineShaman.java
index 7187b4e6c19..064438f165a 100644
--- a/Mage.Sets/src/mage/cards/b/BrineShaman.java
+++ b/Mage.Sets/src/mage/cards/b/BrineShaman.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class BrineShaman extends CardImpl {
+public final class BrineShaman extends CardImpl {
private static final FilterSpell filter = new FilterSpell("noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/b/BringDown.java b/Mage.Sets/src/mage/cards/b/BringDown.java
new file mode 100644
index 00000000000..f2e7f9a7c1e
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/b/BringDown.java
@@ -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.b;
+
+import java.util.UUID;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.abilities.keyword.AssistAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.ComparisonType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.PowerPredicate;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class BringDown extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
+
+ static {
+ filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 3));
+ }
+
+ public BringDown(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // Destroy target creature with power 4 or greater.
+ this.getSpellAbility().addEffect(new DestroyTargetEffect());
+ this.getSpellAbility().addTarget(new TargetPermanent(filter));
+ }
+
+ public BringDown(final BringDown card) {
+ super(card);
+ }
+
+ @Override
+ public BringDown copy() {
+ return new BringDown(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/b/BringLow.java b/Mage.Sets/src/mage/cards/b/BringLow.java
index 7b5fcdf59f8..9271e3ff73b 100644
--- a/Mage.Sets/src/mage/cards/b/BringLow.java
+++ b/Mage.Sets/src/mage/cards/b/BringLow.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BringLow extends CardImpl {
+public final class BringLow extends CardImpl {
public BringLow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BringToLight.java b/Mage.Sets/src/mage/cards/b/BringToLight.java
index 34fbe118fb3..d572426a264 100644
--- a/Mage.Sets/src/mage/cards/b/BringToLight.java
+++ b/Mage.Sets/src/mage/cards/b/BringToLight.java
@@ -28,6 +28,7 @@
package mage.cards.b;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.ColorsOfManaSpentToCastCount;
import mage.abilities.effects.OneShotEffect;
@@ -51,10 +52,10 @@ import org.apache.log4j.Logger;
*
* @author LevelX2
*/
-public class BringToLight extends CardImpl {
+public final class BringToLight extends CardImpl {
public BringToLight(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}{U}");
// Converge-Search your library for a creature, instant, or sorcery card with converted mana
// cost less than or equal to the number of colors of mana spent to cast Bring to Light, exile that card,
@@ -108,7 +109,7 @@ class BringToLightEffect extends OneShotEffect {
if (card != null) {
if (controller.chooseUse(outcome, "Cast " + card.getName() + " without paying its mana cost?", source, game)) {
if (card.getSpellAbility() != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
} else {
Logger.getLogger(BringToLightEffect.class).error("Bring to Light: spellAbility == null " + card.getName());
}
diff --git a/Mage.Sets/src/mage/cards/b/BringerOfTheBlackDawn.java b/Mage.Sets/src/mage/cards/b/BringerOfTheBlackDawn.java
index 87bc6de36ff..f379e186054 100644
--- a/Mage.Sets/src/mage/cards/b/BringerOfTheBlackDawn.java
+++ b/Mage.Sets/src/mage/cards/b/BringerOfTheBlackDawn.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class BringerOfTheBlackDawn extends CardImpl {
+public final class BringerOfTheBlackDawn extends CardImpl {
public BringerOfTheBlackDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BringerOfTheBlueDawn.java b/Mage.Sets/src/mage/cards/b/BringerOfTheBlueDawn.java
index 5b0cd0828f8..ff1af399893 100644
--- a/Mage.Sets/src/mage/cards/b/BringerOfTheBlueDawn.java
+++ b/Mage.Sets/src/mage/cards/b/BringerOfTheBlueDawn.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class BringerOfTheBlueDawn extends CardImpl {
+public final class BringerOfTheBlueDawn extends CardImpl {
public BringerOfTheBlueDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BringerOfTheGreenDawn.java b/Mage.Sets/src/mage/cards/b/BringerOfTheGreenDawn.java
index 7d498b51672..407f3ed6703 100644
--- a/Mage.Sets/src/mage/cards/b/BringerOfTheGreenDawn.java
+++ b/Mage.Sets/src/mage/cards/b/BringerOfTheGreenDawn.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.BeastToken;
*
* @author Plopman
*/
-public class BringerOfTheGreenDawn extends CardImpl {
+public final class BringerOfTheGreenDawn extends CardImpl {
public BringerOfTheGreenDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BringerOfTheRedDawn.java b/Mage.Sets/src/mage/cards/b/BringerOfTheRedDawn.java
index 7d0bda5348f..a82ea6f1406 100644
--- a/Mage.Sets/src/mage/cards/b/BringerOfTheRedDawn.java
+++ b/Mage.Sets/src/mage/cards/b/BringerOfTheRedDawn.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class BringerOfTheRedDawn extends CardImpl {
+public final class BringerOfTheRedDawn extends CardImpl {
public BringerOfTheRedDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BringerOfTheWhiteDawn.java b/Mage.Sets/src/mage/cards/b/BringerOfTheWhiteDawn.java
index e89c41ba291..ebe166db8c2 100644
--- a/Mage.Sets/src/mage/cards/b/BringerOfTheWhiteDawn.java
+++ b/Mage.Sets/src/mage/cards/b/BringerOfTheWhiteDawn.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class BringerOfTheWhiteDawn extends CardImpl {
+public final class BringerOfTheWhiteDawn extends CardImpl {
public BringerOfTheWhiteDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BrinkOfDisaster.java b/Mage.Sets/src/mage/cards/b/BrinkOfDisaster.java
index 767a2539f4e..efebf3d9832 100644
--- a/Mage.Sets/src/mage/cards/b/BrinkOfDisaster.java
+++ b/Mage.Sets/src/mage/cards/b/BrinkOfDisaster.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author nantuko
*/
-public class BrinkOfDisaster extends CardImpl {
+public final class BrinkOfDisaster extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or land");
diff --git a/Mage.Sets/src/mage/cards/b/BrinkOfMadness.java b/Mage.Sets/src/mage/cards/b/BrinkOfMadness.java
index 45fbaee9be0..6763fb00849 100644
--- a/Mage.Sets/src/mage/cards/b/BrinkOfMadness.java
+++ b/Mage.Sets/src/mage/cards/b/BrinkOfMadness.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class BrinkOfMadness extends CardImpl {
+public final class BrinkOfMadness extends CardImpl {
public BrinkOfMadness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BrionStoutarm.java b/Mage.Sets/src/mage/cards/b/BrionStoutarm.java
index 2beaac8387c..240dd268246 100644
--- a/Mage.Sets/src/mage/cards/b/BrionStoutarm.java
+++ b/Mage.Sets/src/mage/cards/b/BrionStoutarm.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class BrionStoutarm extends CardImpl {
+public final class BrionStoutarm extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature other than Brion Stoutarm");
diff --git a/Mage.Sets/src/mage/cards/b/BriselaVoiceOfNightmares.java b/Mage.Sets/src/mage/cards/b/BriselaVoiceOfNightmares.java
index 71169692a65..2c2f890bd93 100644
--- a/Mage.Sets/src/mage/cards/b/BriselaVoiceOfNightmares.java
+++ b/Mage.Sets/src/mage/cards/b/BriselaVoiceOfNightmares.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class BriselaVoiceOfNightmares extends MeldCard {
+public final class BriselaVoiceOfNightmares extends MeldCard {
public BriselaVoiceOfNightmares(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
addSuperType(SuperType.LEGENDARY);
diff --git a/Mage.Sets/src/mage/cards/b/BristlingHydra.java b/Mage.Sets/src/mage/cards/b/BristlingHydra.java
index ada08ab0c80..ecf2e4b3a02 100644
--- a/Mage.Sets/src/mage/cards/b/BristlingHydra.java
+++ b/Mage.Sets/src/mage/cards/b/BristlingHydra.java
@@ -50,7 +50,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class BristlingHydra extends CardImpl {
+public final class BristlingHydra extends CardImpl {
public BristlingHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BrittleEffigy.java b/Mage.Sets/src/mage/cards/b/BrittleEffigy.java
index a18440b3d74..b202bb986f2 100644
--- a/Mage.Sets/src/mage/cards/b/BrittleEffigy.java
+++ b/Mage.Sets/src/mage/cards/b/BrittleEffigy.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BrittleEffigy extends CardImpl {
+public final class BrittleEffigy extends CardImpl {
public BrittleEffigy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/b/BrokenAmbitions.java b/Mage.Sets/src/mage/cards/b/BrokenAmbitions.java
index 92b2fe2fd3d..4e45e2065b5 100644
--- a/Mage.Sets/src/mage/cards/b/BrokenAmbitions.java
+++ b/Mage.Sets/src/mage/cards/b/BrokenAmbitions.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class BrokenAmbitions extends CardImpl {
+public final class BrokenAmbitions extends CardImpl {
public BrokenAmbitions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BrokenBond.java b/Mage.Sets/src/mage/cards/b/BrokenBond.java
index edd5b097aa7..edfad0c7b47 100644
--- a/Mage.Sets/src/mage/cards/b/BrokenBond.java
+++ b/Mage.Sets/src/mage/cards/b/BrokenBond.java
@@ -30,7 +30,7 @@ package mage.cards.b;
import java.util.UUID;
import mage.abilities.effects.common.DestroyTargetEffect;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author JRHerlehy
*/
-public class BrokenBond extends CardImpl {
+public final class BrokenBond extends CardImpl {
public BrokenBond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
@@ -49,7 +49,7 @@ public class BrokenBond extends CardImpl {
// Destroy target artifact or enchantment. You may put a land card from your hand onto the battlefield.
this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT));
this.getSpellAbility().addEffect(new DestroyTargetEffect());
- this.getSpellAbility().addEffect(new PutLandFromHandOntoBattlefieldEffect());
+ this.getSpellAbility().addEffect(new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A));
}
public BrokenBond(final BrokenBond card) {
diff --git a/Mage.Sets/src/mage/cards/b/BrokenConcentration.java b/Mage.Sets/src/mage/cards/b/BrokenConcentration.java
index ae331bcce0b..1b53c472921 100644
--- a/Mage.Sets/src/mage/cards/b/BrokenConcentration.java
+++ b/Mage.Sets/src/mage/cards/b/BrokenConcentration.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class BrokenConcentration extends CardImpl {
+public final class BrokenConcentration extends CardImpl {
public BrokenConcentration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BrokenDam.java b/Mage.Sets/src/mage/cards/b/BrokenDam.java
index 08d90df075f..11678587b4d 100644
--- a/Mage.Sets/src/mage/cards/b/BrokenDam.java
+++ b/Mage.Sets/src/mage/cards/b/BrokenDam.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class BrokenDam extends CardImpl {
+public final class BrokenDam extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/b/BrokenFall.java b/Mage.Sets/src/mage/cards/b/BrokenFall.java
index 09739982c29..326f3cf1a98 100644
--- a/Mage.Sets/src/mage/cards/b/BrokenFall.java
+++ b/Mage.Sets/src/mage/cards/b/BrokenFall.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BrokenFall extends CardImpl {
+public final class BrokenFall extends CardImpl {
public BrokenFall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BrokenVisage.java b/Mage.Sets/src/mage/cards/b/BrokenVisage.java
index 9b9651b0b8d..1721521bdd4 100644
--- a/Mage.Sets/src/mage/cards/b/BrokenVisage.java
+++ b/Mage.Sets/src/mage/cards/b/BrokenVisage.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class BrokenVisage extends CardImpl {
+public final class BrokenVisage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact attacking creature");
static {
diff --git a/Mage.Sets/src/mage/cards/b/Brontotherium.java b/Mage.Sets/src/mage/cards/b/Brontotherium.java
index 7c5d39e6a12..1452cf5eac8 100644
--- a/Mage.Sets/src/mage/cards/b/Brontotherium.java
+++ b/Mage.Sets/src/mage/cards/b/Brontotherium.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class Brontotherium extends CardImpl {
+public final class Brontotherium extends CardImpl {
public Brontotherium(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BronzeBombshell.java b/Mage.Sets/src/mage/cards/b/BronzeBombshell.java
index 5bdd5d42ee6..c578c784e27 100644
--- a/Mage.Sets/src/mage/cards/b/BronzeBombshell.java
+++ b/Mage.Sets/src/mage/cards/b/BronzeBombshell.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class BronzeBombshell extends CardImpl {
+public final class BronzeBombshell extends CardImpl {
public BronzeBombshell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BronzeSable.java b/Mage.Sets/src/mage/cards/b/BronzeSable.java
index 258c0d9e70a..78b1490b07c 100644
--- a/Mage.Sets/src/mage/cards/b/BronzeSable.java
+++ b/Mage.Sets/src/mage/cards/b/BronzeSable.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BronzeSable extends CardImpl {
+public final class BronzeSable extends CardImpl {
public BronzeSable(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java b/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java
index fd52817a172..87fb717ec07 100644
--- a/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java
+++ b/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*/
-public class BronzebeakMoa extends CardImpl {
+public final class BronzebeakMoa extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature under your control");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BroodBirthing.java b/Mage.Sets/src/mage/cards/b/BroodBirthing.java
index 3317203a24a..0cd7c38fe55 100644
--- a/Mage.Sets/src/mage/cards/b/BroodBirthing.java
+++ b/Mage.Sets/src/mage/cards/b/BroodBirthing.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.EldraziSpawnToken;
*
* @author North
*/
-public class BroodBirthing extends CardImpl {
+public final class BroodBirthing extends CardImpl {
public BroodBirthing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BroodButcher.java b/Mage.Sets/src/mage/cards/b/BroodButcher.java
index a161efc1911..846ac95910d 100644
--- a/Mage.Sets/src/mage/cards/b/BroodButcher.java
+++ b/Mage.Sets/src/mage/cards/b/BroodButcher.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BroodButcher extends CardImpl {
+public final class BroodButcher extends CardImpl {
public BroodButcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BroodKeeper.java b/Mage.Sets/src/mage/cards/b/BroodKeeper.java
index 605d0705b04..307078d0856 100644
--- a/Mage.Sets/src/mage/cards/b/BroodKeeper.java
+++ b/Mage.Sets/src/mage/cards/b/BroodKeeper.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.BroodKeeperDragonToken;
*
* @author Quercitron
*/
-public class BroodKeeper extends CardImpl {
+public final class BroodKeeper extends CardImpl {
public BroodKeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BroodMonitor.java b/Mage.Sets/src/mage/cards/b/BroodMonitor.java
index 200376a1158..2eb82fe3178 100644
--- a/Mage.Sets/src/mage/cards/b/BroodMonitor.java
+++ b/Mage.Sets/src/mage/cards/b/BroodMonitor.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author LevelX2
*/
-public class BroodMonitor extends CardImpl {
+public final class BroodMonitor extends CardImpl {
public BroodMonitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BroodOfCockroaches.java b/Mage.Sets/src/mage/cards/b/BroodOfCockroaches.java
index e1320b457b2..87c6bd1922e 100644
--- a/Mage.Sets/src/mage/cards/b/BroodOfCockroaches.java
+++ b/Mage.Sets/src/mage/cards/b/BroodOfCockroaches.java
@@ -50,7 +50,7 @@ import static mage.constants.Outcome.Benefit;
*
* @author mpouedras
*/
-public class BroodOfCockroaches extends CardImpl {
+public final class BroodOfCockroaches extends CardImpl {
public BroodOfCockroaches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BroodSliver.java b/Mage.Sets/src/mage/cards/b/BroodSliver.java
index 92b663102d5..c3a230d91e0 100644
--- a/Mage.Sets/src/mage/cards/b/BroodSliver.java
+++ b/Mage.Sets/src/mage/cards/b/BroodSliver.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author cbt33, LevelX2 (Ogre Slumlord)
*/
-public class BroodSliver extends CardImpl {
+public final class BroodSliver extends CardImpl {
public BroodSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BroodbirthViper.java b/Mage.Sets/src/mage/cards/b/BroodbirthViper.java
index b048276edfc..d8b930eb141 100644
--- a/Mage.Sets/src/mage/cards/b/BroodbirthViper.java
+++ b/Mage.Sets/src/mage/cards/b/BroodbirthViper.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class BroodbirthViper extends CardImpl {
+public final class BroodbirthViper extends CardImpl {
public BroodbirthViper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BroodhatchNantuko.java b/Mage.Sets/src/mage/cards/b/BroodhatchNantuko.java
index 72bf9a42a3e..16367007fbc 100644
--- a/Mage.Sets/src/mage/cards/b/BroodhatchNantuko.java
+++ b/Mage.Sets/src/mage/cards/b/BroodhatchNantuko.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author Temba21
*/
-public class BroodhatchNantuko extends CardImpl {
+public final class BroodhatchNantuko extends CardImpl {
public BroodhatchNantuko(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BroodhunterWurm.java b/Mage.Sets/src/mage/cards/b/BroodhunterWurm.java
index 5c1918cae96..c839d93c246 100644
--- a/Mage.Sets/src/mage/cards/b/BroodhunterWurm.java
+++ b/Mage.Sets/src/mage/cards/b/BroodhunterWurm.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BroodhunterWurm extends CardImpl {
+public final class BroodhunterWurm extends CardImpl {
public BroodhunterWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BroodingSaurian.java b/Mage.Sets/src/mage/cards/b/BroodingSaurian.java
index f181e29eb02..68f1051c6f0 100644
--- a/Mage.Sets/src/mage/cards/b/BroodingSaurian.java
+++ b/Mage.Sets/src/mage/cards/b/BroodingSaurian.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class BroodingSaurian extends CardImpl {
+public final class BroodingSaurian extends CardImpl {
public BroodingSaurian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BroodmateDragon.java b/Mage.Sets/src/mage/cards/b/BroodmateDragon.java
index 05ed5f8413a..f3611692888 100644
--- a/Mage.Sets/src/mage/cards/b/BroodmateDragon.java
+++ b/Mage.Sets/src/mage/cards/b/BroodmateDragon.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.DragonToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BroodmateDragon extends CardImpl {
+public final class BroodmateDragon extends CardImpl {
private static DragonToken dragonToken = new DragonToken();
diff --git a/Mage.Sets/src/mage/cards/b/Broodstar.java b/Mage.Sets/src/mage/cards/b/Broodstar.java
index 774a7b9613d..456edf6453f 100644
--- a/Mage.Sets/src/mage/cards/b/Broodstar.java
+++ b/Mage.Sets/src/mage/cards/b/Broodstar.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Loki
*/
-public class Broodstar extends CardImpl {
+public final class Broodstar extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifacts you control");
static {
diff --git a/Mage.Sets/src/mage/cards/b/Broodwarden.java b/Mage.Sets/src/mage/cards/b/Broodwarden.java
index c8bd6d7c718..ce3de353e62 100644
--- a/Mage.Sets/src/mage/cards/b/Broodwarden.java
+++ b/Mage.Sets/src/mage/cards/b/Broodwarden.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class Broodwarden extends CardImpl {
+public final class Broodwarden extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Eldrazi Spawn creatures");
diff --git a/Mage.Sets/src/mage/cards/b/BrothersOfFire.java b/Mage.Sets/src/mage/cards/b/BrothersOfFire.java
index 4bc9fd6223b..31f8229a446 100644
--- a/Mage.Sets/src/mage/cards/b/BrothersOfFire.java
+++ b/Mage.Sets/src/mage/cards/b/BrothersOfFire.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class BrothersOfFire extends CardImpl {
+public final class BrothersOfFire extends CardImpl {
public BrothersOfFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrothersYamazaki.java b/Mage.Sets/src/mage/cards/b/BrothersYamazaki.java
index 761add31ae8..f74628338f3 100644
--- a/Mage.Sets/src/mage/cards/b/BrothersYamazaki.java
+++ b/Mage.Sets/src/mage/cards/b/BrothersYamazaki.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class BrothersYamazaki extends CardImpl {
+public final class BrothersYamazaki extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/b/Browbeat.java b/Mage.Sets/src/mage/cards/b/Browbeat.java
index fd2a2632eb4..cc7b48f95f1 100644
--- a/Mage.Sets/src/mage/cards/b/Browbeat.java
+++ b/Mage.Sets/src/mage/cards/b/Browbeat.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author dustinconrad
*/
-public class Browbeat extends CardImpl {
+public final class Browbeat extends CardImpl {
public Browbeat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrownOuphe.java b/Mage.Sets/src/mage/cards/b/BrownOuphe.java
index 06bc31afbfd..61fe2e4dee0 100644
--- a/Mage.Sets/src/mage/cards/b/BrownOuphe.java
+++ b/Mage.Sets/src/mage/cards/b/BrownOuphe.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetActivatedAbility;
*
* @author TheElk801
*/
-public class BrownOuphe extends CardImpl {
+public final class BrownOuphe extends CardImpl {
private final static FilterAbility filter = new FilterAbility("activated ability from an artifact source");
diff --git a/Mage.Sets/src/mage/cards/b/Browse.java b/Mage.Sets/src/mage/cards/b/Browse.java
index dd7ca439a9d..70c2c2c3af9 100644
--- a/Mage.Sets/src/mage/cards/b/Browse.java
+++ b/Mage.Sets/src/mage/cards/b/Browse.java
@@ -45,7 +45,7 @@ import mage.target.TargetCard;
*
* @author Quercitron
*/
-public class Browse extends CardImpl {
+public final class Browse extends CardImpl {
public Browse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java b/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java
index 6b3f06f5f06..f325311281c 100644
--- a/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java
+++ b/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java
@@ -58,7 +58,7 @@ import mage.target.TargetPermanent;
/**
* @author noxx
*/
-public class BrunaLightOfAlabaster extends CardImpl {
+public final class BrunaLightOfAlabaster extends CardImpl {
public BrunaLightOfAlabaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BrunaTheFadingLight.java b/Mage.Sets/src/mage/cards/b/BrunaTheFadingLight.java
index 1ab5c8fe2a4..e0c9b881223 100644
--- a/Mage.Sets/src/mage/cards/b/BrunaTheFadingLight.java
+++ b/Mage.Sets/src/mage/cards/b/BrunaTheFadingLight.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class BrunaTheFadingLight extends CardImpl {
+public final class BrunaTheFadingLight extends CardImpl {
private static final FilterCard filter = new FilterCard("Angel or Human creature card");
diff --git a/Mage.Sets/src/mage/cards/b/BruseTarlBoorishHerder.java b/Mage.Sets/src/mage/cards/b/BruseTarlBoorishHerder.java
index 4bff9595e61..014afc247a2 100644
--- a/Mage.Sets/src/mage/cards/b/BruseTarlBoorishHerder.java
+++ b/Mage.Sets/src/mage/cards/b/BruseTarlBoorishHerder.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author spjspj
*/
-public class BruseTarlBoorishHerder extends CardImpl {
+public final class BruseTarlBoorishHerder extends CardImpl {
public BruseTarlBoorishHerder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BrushWithDeath.java b/Mage.Sets/src/mage/cards/b/BrushWithDeath.java
index e68a6b8637e..156167eeb13 100644
--- a/Mage.Sets/src/mage/cards/b/BrushWithDeath.java
+++ b/Mage.Sets/src/mage/cards/b/BrushWithDeath.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetOpponent;
*
* @author LoneFox
*/
-public class BrushWithDeath extends CardImpl {
+public final class BrushWithDeath extends CardImpl {
public BrushWithDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Brushland.java b/Mage.Sets/src/mage/cards/b/Brushland.java
index 65db181439e..35f07cd5f5c 100644
--- a/Mage.Sets/src/mage/cards/b/Brushland.java
+++ b/Mage.Sets/src/mage/cards/b/Brushland.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Brushland extends CardImpl {
+public final class Brushland extends CardImpl {
public Brushland(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/Brushstrider.java b/Mage.Sets/src/mage/cards/b/Brushstrider.java
index 07bafd8f171..14cfe4f42de 100644
--- a/Mage.Sets/src/mage/cards/b/Brushstrider.java
+++ b/Mage.Sets/src/mage/cards/b/Brushstrider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Brushstrider extends CardImpl {
+public final class Brushstrider extends CardImpl {
public Brushstrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/Brushwagg.java b/Mage.Sets/src/mage/cards/b/Brushwagg.java
index b060c0f8e4b..7ad6238ee75 100644
--- a/Mage.Sets/src/mage/cards/b/Brushwagg.java
+++ b/Mage.Sets/src/mage/cards/b/Brushwagg.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class Brushwagg extends CardImpl {
+public final class Brushwagg extends CardImpl {
public Brushwagg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BrutalDeceiver.java b/Mage.Sets/src/mage/cards/b/BrutalDeceiver.java
index e443ace2d94..131de252c83 100644
--- a/Mage.Sets/src/mage/cards/b/BrutalDeceiver.java
+++ b/Mage.Sets/src/mage/cards/b/BrutalDeceiver.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX
*/
-public class BrutalDeceiver extends CardImpl {
+public final class BrutalDeceiver extends CardImpl {
public BrutalDeceiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrutalExpulsion.java b/Mage.Sets/src/mage/cards/b/BrutalExpulsion.java
index a12786b9f28..b5bc1d72e92 100644
--- a/Mage.Sets/src/mage/cards/b/BrutalExpulsion.java
+++ b/Mage.Sets/src/mage/cards/b/BrutalExpulsion.java
@@ -48,7 +48,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author LevelX2
*/
-public class BrutalExpulsion extends CardImpl {
+public final class BrutalExpulsion extends CardImpl {
private static final FilterSpellOrPermanent filter = new FilterSpellOrPermanent("spell or creature");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BrutalHordechief.java b/Mage.Sets/src/mage/cards/b/BrutalHordechief.java
index e9068ea94b9..f42965c1855 100644
--- a/Mage.Sets/src/mage/cards/b/BrutalHordechief.java
+++ b/Mage.Sets/src/mage/cards/b/BrutalHordechief.java
@@ -54,7 +54,7 @@ import mage.watchers.common.ChooseBlockersRedundancyWatcher;
*
* @author LevelX2
*/
-public class BrutalHordechief extends CardImpl {
+public final class BrutalHordechief extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/b/BrutalNightstalker.java b/Mage.Sets/src/mage/cards/b/BrutalNightstalker.java
index 944239b176a..2d761ff935a 100644
--- a/Mage.Sets/src/mage/cards/b/BrutalNightstalker.java
+++ b/Mage.Sets/src/mage/cards/b/BrutalNightstalker.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class BrutalNightstalker extends CardImpl {
+public final class BrutalNightstalker extends CardImpl {
public BrutalNightstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BrutalSuppression.java b/Mage.Sets/src/mage/cards/b/BrutalSuppression.java
index 5ed3b44b9f9..4364086bb8d 100644
--- a/Mage.Sets/src/mage/cards/b/BrutalSuppression.java
+++ b/Mage.Sets/src/mage/cards/b/BrutalSuppression.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author L_J
*/
-public class BrutalSuppression extends CardImpl {
+public final class BrutalSuppression extends CardImpl {
public BrutalSuppression(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BrutalizerExarch.java b/Mage.Sets/src/mage/cards/b/BrutalizerExarch.java
index 5c65013d196..97ed56dd4bb 100644
--- a/Mage.Sets/src/mage/cards/b/BrutalizerExarch.java
+++ b/Mage.Sets/src/mage/cards/b/BrutalizerExarch.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class BrutalizerExarch extends CardImpl {
+public final class BrutalizerExarch extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature permanent");
diff --git a/Mage.Sets/src/mage/cards/b/BruteForce.java b/Mage.Sets/src/mage/cards/b/BruteForce.java
index 7c9d54aba36..4c9e3b64664 100644
--- a/Mage.Sets/src/mage/cards/b/BruteForce.java
+++ b/Mage.Sets/src/mage/cards/b/BruteForce.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BruteForce extends CardImpl {
+public final class BruteForce extends CardImpl {
public BruteForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BruteStrength.java b/Mage.Sets/src/mage/cards/b/BruteStrength.java
index 639c35df1f8..a82b0477af8 100644
--- a/Mage.Sets/src/mage/cards/b/BruteStrength.java
+++ b/Mage.Sets/src/mage/cards/b/BruteStrength.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BruteStrength extends CardImpl {
+public final class BruteStrength extends CardImpl {
public BruteStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BubbleMatrix.java b/Mage.Sets/src/mage/cards/b/BubbleMatrix.java
index a0727903e6d..39f9c2057a5 100644
--- a/Mage.Sets/src/mage/cards/b/BubbleMatrix.java
+++ b/Mage.Sets/src/mage/cards/b/BubbleMatrix.java
@@ -41,7 +41,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LoneFox
*/
-public class BubbleMatrix extends CardImpl {
+public final class BubbleMatrix extends CardImpl {
public BubbleMatrix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/b/BubblingBeebles.java b/Mage.Sets/src/mage/cards/b/BubblingBeebles.java
index cd0c641e7ba..646a522a298 100644
--- a/Mage.Sets/src/mage/cards/b/BubblingBeebles.java
+++ b/Mage.Sets/src/mage/cards/b/BubblingBeebles.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author Backfir3
*/
-public class BubblingBeebles extends CardImpl {
+public final class BubblingBeebles extends CardImpl {
public BubblingBeebles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BubblingCauldron.java b/Mage.Sets/src/mage/cards/b/BubblingCauldron.java
index 94b4795837d..9a81915c02d 100644
--- a/Mage.Sets/src/mage/cards/b/BubblingCauldron.java
+++ b/Mage.Sets/src/mage/cards/b/BubblingCauldron.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class BubblingCauldron extends CardImpl {
+public final class BubblingCauldron extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a creature named Festering Newt");
diff --git a/Mage.Sets/src/mage/cards/b/BubblingMuck.java b/Mage.Sets/src/mage/cards/b/BubblingMuck.java
index fd6acd31e93..379ae51dd39 100644
--- a/Mage.Sets/src/mage/cards/b/BubblingMuck.java
+++ b/Mage.Sets/src/mage/cards/b/BubblingMuck.java
@@ -51,12 +51,12 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class BubblingMuck extends CardImpl {
+public final class BubblingMuck extends CardImpl {
public BubblingMuck(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
- // Until end of turn, whenever a player taps a Swamp for mana, that player adds {B} to their mana pool.
+ // Until end of turn, whenever a player taps a Swamp for mana, that player adds {B}.
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new BubblingMuckTriggeredAbility()));
}
@@ -111,6 +111,6 @@ class BubblingMuckTriggeredAbility extends DelayedTriggeredManaAbility {
@Override
public String getRule() {
- return "Until end of turn, whenever a player taps a Swamp for mana, that player adds {B} to their mana pool";
+ return "Until end of turn, whenever a player taps a Swamp for mana, that player adds {B}";
}
}
diff --git a/Mage.Sets/src/mage/cards/b/BuccaneersBravado.java b/Mage.Sets/src/mage/cards/b/BuccaneersBravado.java
index 64b605a4a16..6fb4faba0f5 100644
--- a/Mage.Sets/src/mage/cards/b/BuccaneersBravado.java
+++ b/Mage.Sets/src/mage/cards/b/BuccaneersBravado.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class BuccaneersBravado extends CardImpl {
+public final class BuccaneersBravado extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Pirate");
diff --git a/Mage.Sets/src/mage/cards/b/BudokaGardener.java b/Mage.Sets/src/mage/cards/b/BudokaGardener.java
index a9463b13f20..2e261746e54 100644
--- a/Mage.Sets/src/mage/cards/b/BudokaGardener.java
+++ b/Mage.Sets/src/mage/cards/b/BudokaGardener.java
@@ -35,7 +35,6 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.FlipSourceEffect;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@@ -44,15 +43,16 @@ import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.game.permanent.token.DokaiWeaverofLifeToken;
import mage.game.permanent.token.TokenImpl;
-import mage.game.permanent.token.Token;
import mage.players.Player;
import java.util.UUID;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
+import mage.filter.StaticFilters;
/**
* @author Loki
*/
-public class BudokaGardener extends CardImpl {
+public final class BudokaGardener extends CardImpl {
public BudokaGardener(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
@@ -64,7 +64,7 @@ public class BudokaGardener extends CardImpl {
this.flipCardName = "Dokai, Weaver of Life";
// {T}: You may put a land card from your hand onto the battlefield. If you control ten or more lands, flip Budoka Gardener.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutLandFromHandOntoBattlefieldEffect(), new TapSourceCost());
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A), new TapSourceCost());
ability.addEffect(new BudokaGardenerEffect());
this.addAbility(ability);
}
@@ -128,6 +128,7 @@ class DokaiWeaverofLife extends TokenImpl {
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}
+
public DokaiWeaverofLife(final DokaiWeaverofLife token) {
super(token);
}
diff --git a/Mage.Sets/src/mage/cards/b/BudokaPupil.java b/Mage.Sets/src/mage/cards/b/BudokaPupil.java
index b224ddcd8a4..538e346d234 100644
--- a/Mage.Sets/src/mage/cards/b/BudokaPupil.java
+++ b/Mage.Sets/src/mage/cards/b/BudokaPupil.java
@@ -55,7 +55,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class BudokaPupil extends CardImpl {
+public final class BudokaPupil extends CardImpl {
public BudokaPupil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BuildersBane.java b/Mage.Sets/src/mage/cards/b/BuildersBane.java
index 7c8602f9eeb..dd9be913373 100644
--- a/Mage.Sets/src/mage/cards/b/BuildersBane.java
+++ b/Mage.Sets/src/mage/cards/b/BuildersBane.java
@@ -1,125 +1,125 @@
-/*
- * 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.HashMap;
-import java.util.Map;
-import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.SpellAbility;
-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.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.common.TargetArtifactPermanent;
-
-/**
- *
- * @author sinsedrix
- */
-public class BuildersBane extends CardImpl {
-
- public BuildersBane(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{R}");
-
- // Destroy X target artifacts. Builder's Bane deals damage to each player equal to the number of artifacts he or she controlled put into a graveyard this way.
- this.getSpellAbility().addTarget(new TargetArtifactPermanent());
- this.getSpellAbility().addEffect(new BuildersBaneEffect());
- }
-
- @Override
- public void adjustTargets(Ability ability, Game game) {
- if (ability instanceof SpellAbility) {
- ability.getTargets().clear();
- int xValue = ability.getManaCostsToPay().getX();
- ability.addTarget(new TargetArtifactPermanent(xValue, xValue));
- }
- }
-
- public BuildersBane(final BuildersBane card) {
- super(card);
- }
-
- @Override
- public BuildersBane copy() {
- return new BuildersBane(this);
- }
-}
-
-class BuildersBaneEffect extends OneShotEffect {
-
- public BuildersBaneEffect() {
- super(Outcome.DestroyPermanent);
- this.staticText = "Destroy X target artifacts. {this} deals damage to each player equal to the number of artifacts he or she controlled put into a graveyard this way";
- }
-
- public BuildersBaneEffect(final BuildersBaneEffect effect) {
- super(effect);
- }
-
- @Override
- public BuildersBaneEffect copy() {
- return new BuildersBaneEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Map destroyedArtifactPerPlayer = new HashMap<>();
-
- // Destroy X target artifacts.
- for (UUID targetID : this.targetPointer.getTargets(game, source)) {
- Permanent permanent = game.getPermanent(targetID);
- if (permanent != null) {
- if (permanent.destroy(source.getSourceId(), game, false)) {
- game.applyEffects();
- if (permanent.getZoneChangeCounter(game) + 1 == game.getState().getZoneChangeCounter(permanent.getId())
- && !game.getState().getZone(permanent.getId()).equals(Zone.GRAVEYARD)) {
- // A replacement effect has moved the card to another zone as grvayard
- continue;
- }
- destroyedArtifactPerPlayer.merge(permanent.getControllerId(), 1, Integer::sum);
- }
- }
- }
-
- // Builder's Bane deals damage to each player equal to the number of artifacts he or she controlled put into a graveyard this way.
- for (Map.Entry entry : destroyedArtifactPerPlayer.entrySet()) {
- Player player = game.getPlayer(entry.getKey());
- if (player != null) {
- player.damage(entry.getValue(), source.getSourceId(), game, false, true);
- }
- }
-
- return true;
- }
-}
+/*
+ * 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.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.SpellAbility;
+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.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetArtifactPermanent;
+
+/**
+ *
+ * @author sinsedrix
+ */
+public final class BuildersBane extends CardImpl {
+
+ public BuildersBane(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{R}");
+
+ // Destroy X target artifacts. Builder's Bane deals damage to each player equal to the number of artifacts he or she controlled put into a graveyard this way.
+ this.getSpellAbility().addTarget(new TargetArtifactPermanent());
+ this.getSpellAbility().addEffect(new BuildersBaneEffect());
+ }
+
+ @Override
+ public void adjustTargets(Ability ability, Game game) {
+ if (ability instanceof SpellAbility) {
+ ability.getTargets().clear();
+ int xValue = ability.getManaCostsToPay().getX();
+ ability.addTarget(new TargetArtifactPermanent(xValue, xValue));
+ }
+ }
+
+ public BuildersBane(final BuildersBane card) {
+ super(card);
+ }
+
+ @Override
+ public BuildersBane copy() {
+ return new BuildersBane(this);
+ }
+}
+
+class BuildersBaneEffect extends OneShotEffect {
+
+ public BuildersBaneEffect() {
+ super(Outcome.DestroyPermanent);
+ this.staticText = "Destroy X target artifacts. {this} deals damage to each player equal to the number of artifacts he or she controlled put into a graveyard this way";
+ }
+
+ public BuildersBaneEffect(final BuildersBaneEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public BuildersBaneEffect copy() {
+ return new BuildersBaneEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Map destroyedArtifactPerPlayer = new HashMap<>();
+
+ // Destroy X target artifacts.
+ for (UUID targetID : this.targetPointer.getTargets(game, source)) {
+ Permanent permanent = game.getPermanent(targetID);
+ if (permanent != null) {
+ if (permanent.destroy(source.getSourceId(), game, false)) {
+ game.applyEffects();
+ if (permanent.getZoneChangeCounter(game) + 1 == game.getState().getZoneChangeCounter(permanent.getId())
+ && !game.getState().getZone(permanent.getId()).equals(Zone.GRAVEYARD)) {
+ // A replacement effect has moved the card to another zone as grvayard
+ continue;
+ }
+ destroyedArtifactPerPlayer.merge(permanent.getControllerId(), 1, Integer::sum);
+ }
+ }
+ }
+
+ // Builder's Bane deals damage to each player equal to the number of artifacts he or she controlled put into a graveyard this way.
+ for (Map.Entry entry : destroyedArtifactPerPlayer.entrySet()) {
+ Player player = game.getPlayer(entry.getKey());
+ if (player != null) {
+ player.damage(entry.getValue(), source.getSourceId(), game, false, true);
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/b/BuildersBlessing.java b/Mage.Sets/src/mage/cards/b/BuildersBlessing.java
index 1fb3ce8b129..7465002030f 100644
--- a/Mage.Sets/src/mage/cards/b/BuildersBlessing.java
+++ b/Mage.Sets/src/mage/cards/b/BuildersBlessing.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterUntappedCreature;
/**
* @author noxx
*/
-public class BuildersBlessing extends CardImpl {
+public final class BuildersBlessing extends CardImpl {
public BuildersBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BuiltToLast.java b/Mage.Sets/src/mage/cards/b/BuiltToLast.java
index 8e0d519029e..1ea01ef2751 100644
--- a/Mage.Sets/src/mage/cards/b/BuiltToLast.java
+++ b/Mage.Sets/src/mage/cards/b/BuiltToLast.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BuiltToLast extends CardImpl {
+public final class BuiltToLast extends CardImpl {
public BuiltToLast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BuiltToSmash.java b/Mage.Sets/src/mage/cards/b/BuiltToSmash.java
index f207d1e0330..4672ab8537b 100644
--- a/Mage.Sets/src/mage/cards/b/BuiltToSmash.java
+++ b/Mage.Sets/src/mage/cards/b/BuiltToSmash.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author spjspj
*/
-public class BuiltToSmash extends CardImpl {
+public final class BuiltToSmash extends CardImpl {
public BuiltToSmash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BullAurochs.java b/Mage.Sets/src/mage/cards/b/BullAurochs.java
index f6772cad790..dcf6724f5ff 100644
--- a/Mage.Sets/src/mage/cards/b/BullAurochs.java
+++ b/Mage.Sets/src/mage/cards/b/BullAurochs.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LoneFox
*/
-public class BullAurochs extends CardImpl {
+public final class BullAurochs extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Aurochs");
diff --git a/Mage.Sets/src/mage/cards/b/BullCerodon.java b/Mage.Sets/src/mage/cards/b/BullCerodon.java
index 7134b82927d..9d3b9b69d35 100644
--- a/Mage.Sets/src/mage/cards/b/BullCerodon.java
+++ b/Mage.Sets/src/mage/cards/b/BullCerodon.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class BullCerodon extends CardImpl {
+public final class BullCerodon extends CardImpl {
public BullCerodon (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BullElephant.java b/Mage.Sets/src/mage/cards/b/BullElephant.java
index 70c93e99a41..f2949815906 100644
--- a/Mage.Sets/src/mage/cards/b/BullElephant.java
+++ b/Mage.Sets/src/mage/cards/b/BullElephant.java
@@ -14,7 +14,7 @@ import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
-public class BullElephant extends CardImpl {
+public final class BullElephant extends CardImpl {
private static FilterControlledLandPermanent controlledForest = new FilterControlledLandPermanent("Forests");
diff --git a/Mage.Sets/src/mage/cards/b/BullHippo.java b/Mage.Sets/src/mage/cards/b/BullHippo.java
index 0dced4f8a13..50f5b7b8e7c 100644
--- a/Mage.Sets/src/mage/cards/b/BullHippo.java
+++ b/Mage.Sets/src/mage/cards/b/BullHippo.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class BullHippo extends CardImpl {
+public final class BullHippo extends CardImpl {
public BullHippo (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BullRancor.java b/Mage.Sets/src/mage/cards/b/BullRancor.java
index b61ec2923c5..25556ff04d8 100644
--- a/Mage.Sets/src/mage/cards/b/BullRancor.java
+++ b/Mage.Sets/src/mage/cards/b/BullRancor.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class BullRancor extends CardImpl {
+public final class BullRancor extends CardImpl {
public BullRancor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BullRush.java b/Mage.Sets/src/mage/cards/b/BullRush.java
index 8261a54d040..95f336d5a1e 100644
--- a/Mage.Sets/src/mage/cards/b/BullRush.java
+++ b/Mage.Sets/src/mage/cards/b/BullRush.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BullRush extends CardImpl {
+public final class BullRush extends CardImpl {
public BullRush (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BullRushBruiser.java b/Mage.Sets/src/mage/cards/b/BullRushBruiser.java
new file mode 100644
index 00000000000..a1370ca241c
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/b/BullRushBruiser.java
@@ -0,0 +1,81 @@
+/*
+ * 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.MageInt;
+import mage.abilities.common.AttacksTriggeredAbility;
+import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
+import mage.abilities.decorator.ConditionalTriggeredAbility;
+import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
+import mage.abilities.keyword.FirstStrikeAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.filter.common.FilterTeamPermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class BullRushBruiser extends CardImpl {
+
+ private static final FilterTeamPermanent filter = new FilterTeamPermanent(SubType.WARRIOR, "another Warrior");
+
+ static {
+ filter.add(new AnotherPredicate());
+ }
+
+ public BullRushBruiser(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
+
+ this.subtype.add(SubType.MINOTAUR);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(3);
+
+ // Whenever Bull-Rush Bruiser attacks, if your team controls another Warrior, Bull-Rush Bruiser gains first strike until end of turn.
+ this.addAbility(new ConditionalTriggeredAbility(
+ new AttacksTriggeredAbility(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()), false),
+ new PermanentsOnTheBattlefieldCondition(filter),
+ "Whenever {this} attacks, if your team controls another Warrior, "
+ + "{this} gains first strike until end of turn."
+ ));
+ }
+
+ public BullRushBruiser(final BullRushBruiser card) {
+ super(card);
+ }
+
+ @Override
+ public BullRushBruiser copy() {
+ return new BullRushBruiser(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/b/Bullwhip.java b/Mage.Sets/src/mage/cards/b/Bullwhip.java
index b42cfb50fad..55b1d99eab3 100644
--- a/Mage.Sets/src/mage/cards/b/Bullwhip.java
+++ b/Mage.Sets/src/mage/cards/b/Bullwhip.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Bullwhip extends CardImpl {
+public final class Bullwhip extends CardImpl {
public Bullwhip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/b/Bulwark.java b/Mage.Sets/src/mage/cards/b/Bulwark.java
index f758644f41c..09ac11dd904 100644
--- a/Mage.Sets/src/mage/cards/b/Bulwark.java
+++ b/Mage.Sets/src/mage/cards/b/Bulwark.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author Backfir3
*/
-public class Bulwark extends CardImpl {
+public final class Bulwark extends CardImpl {
public Bulwark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BumpInTheNight.java b/Mage.Sets/src/mage/cards/b/BumpInTheNight.java
index 5be8a0830af..149c073cca9 100644
--- a/Mage.Sets/src/mage/cards/b/BumpInTheNight.java
+++ b/Mage.Sets/src/mage/cards/b/BumpInTheNight.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetOpponent;
/**
* @author nantuko
*/
-public class BumpInTheNight extends CardImpl {
+public final class BumpInTheNight extends CardImpl {
public BumpInTheNight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Buoyancy.java b/Mage.Sets/src/mage/cards/b/Buoyancy.java
index 5046c3662bd..d91a1f5c2c4 100644
--- a/Mage.Sets/src/mage/cards/b/Buoyancy.java
+++ b/Mage.Sets/src/mage/cards/b/Buoyancy.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class Buoyancy extends CardImpl {
+public final class Buoyancy extends CardImpl {
public Buoyancy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/b/BurdenOfGreed.java b/Mage.Sets/src/mage/cards/b/BurdenOfGreed.java
index d7af0c5daf6..735dd61ee2b 100644
--- a/Mage.Sets/src/mage/cards/b/BurdenOfGreed.java
+++ b/Mage.Sets/src/mage/cards/b/BurdenOfGreed.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author wetterlicht
*/
-public class BurdenOfGreed extends CardImpl {
+public final class BurdenOfGreed extends CardImpl {
public BurdenOfGreed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BurdenOfGuilt.java b/Mage.Sets/src/mage/cards/b/BurdenOfGuilt.java
index 456b687fdd8..39eca98907e 100644
--- a/Mage.Sets/src/mage/cards/b/BurdenOfGuilt.java
+++ b/Mage.Sets/src/mage/cards/b/BurdenOfGuilt.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BurdenOfGuilt extends CardImpl {
+public final class BurdenOfGuilt extends CardImpl {
public BurdenOfGuilt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/b/Burgeoning.java b/Mage.Sets/src/mage/cards/b/Burgeoning.java
index aeb7593fbc5..51acf0b36d7 100644
--- a/Mage.Sets/src/mage/cards/b/Burgeoning.java
+++ b/Mage.Sets/src/mage/cards/b/Burgeoning.java
@@ -29,11 +29,12 @@ package mage.cards.b;
import java.util.UUID;
import mage.abilities.TriggeredAbilityImpl;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
@@ -42,10 +43,10 @@ import mage.game.permanent.Permanent;
/**
* @author duncant
*/
-public class Burgeoning extends CardImpl {
+public final class Burgeoning extends CardImpl {
public Burgeoning(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
// Whenever an opponent plays a land, you may put a land card from your hand onto the battlefield.
this.addAbility(new BurgeoningTriggeredAbility());
@@ -61,10 +62,10 @@ public class Burgeoning extends CardImpl {
}
}
-
class BurgeoningTriggeredAbility extends TriggeredAbilityImpl {
+
BurgeoningTriggeredAbility() {
- super(Zone.BATTLEFIELD, new PutLandFromHandOntoBattlefieldEffect());
+ super(Zone.BATTLEFIELD, new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A));
}
BurgeoningTriggeredAbility(BurgeoningTriggeredAbility ability) {
diff --git a/Mage.Sets/src/mage/cards/b/BuriedAlive.java b/Mage.Sets/src/mage/cards/b/BuriedAlive.java
index 90e03292ef6..98dfd8d73b2 100644
--- a/Mage.Sets/src/mage/cards/b/BuriedAlive.java
+++ b/Mage.Sets/src/mage/cards/b/BuriedAlive.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author cbt33, plopman (Entomb)
*/
-public class BuriedAlive extends CardImpl {
+public final class BuriedAlive extends CardImpl {
public BuriedAlive(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/b/BuriedRuin.java b/Mage.Sets/src/mage/cards/b/BuriedRuin.java
index 7d1f5e76acd..99e93dab411 100644
--- a/Mage.Sets/src/mage/cards/b/BuriedRuin.java
+++ b/Mage.Sets/src/mage/cards/b/BuriedRuin.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author Loki
*/
-public class BuriedRuin extends CardImpl {
+public final class BuriedRuin extends CardImpl {
public BuriedRuin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/b/BurnAtTheStake.java b/Mage.Sets/src/mage/cards/b/BurnAtTheStake.java
index 4cf29edf4d4..86e4511f6c9 100644
--- a/Mage.Sets/src/mage/cards/b/BurnAtTheStake.java
+++ b/Mage.Sets/src/mage/cards/b/BurnAtTheStake.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class BurnAtTheStake extends CardImpl {
+public final class BurnAtTheStake extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/b/BurnAway.java b/Mage.Sets/src/mage/cards/b/BurnAway.java
index 4ce566f629e..e3cff85cacb 100644
--- a/Mage.Sets/src/mage/cards/b/BurnAway.java
+++ b/Mage.Sets/src/mage/cards/b/BurnAway.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BurnAway extends CardImpl {
+public final class BurnAway extends CardImpl {
public BurnAway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurnFromWithin.java b/Mage.Sets/src/mage/cards/b/BurnFromWithin.java
index df486c26b66..2847f9d5660 100644
--- a/Mage.Sets/src/mage/cards/b/BurnFromWithin.java
+++ b/Mage.Sets/src/mage/cards/b/BurnFromWithin.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class BurnFromWithin extends CardImpl {
+public final class BurnFromWithin extends CardImpl {
public BurnFromWithin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurnTrail.java b/Mage.Sets/src/mage/cards/b/BurnTrail.java
index 619fc8a8480..741350e364a 100644
--- a/Mage.Sets/src/mage/cards/b/BurnTrail.java
+++ b/Mage.Sets/src/mage/cards/b/BurnTrail.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class BurnTrail extends CardImpl {
+public final class BurnTrail extends CardImpl {
public BurnTrail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningAnger.java b/Mage.Sets/src/mage/cards/b/BurningAnger.java
index 90961c8297e..6e95b11a4da 100644
--- a/Mage.Sets/src/mage/cards/b/BurningAnger.java
+++ b/Mage.Sets/src/mage/cards/b/BurningAnger.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class BurningAnger extends CardImpl {
+public final class BurningAnger extends CardImpl {
public BurningAnger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningCloak.java b/Mage.Sets/src/mage/cards/b/BurningCloak.java
index 2c438c493e6..60556b743ba 100644
--- a/Mage.Sets/src/mage/cards/b/BurningCloak.java
+++ b/Mage.Sets/src/mage/cards/b/BurningCloak.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class BurningCloak extends CardImpl {
+public final class BurningCloak extends CardImpl {
public BurningCloak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningEarth.java b/Mage.Sets/src/mage/cards/b/BurningEarth.java
index c9585a4047c..377fcae6eae 100644
--- a/Mage.Sets/src/mage/cards/b/BurningEarth.java
+++ b/Mage.Sets/src/mage/cards/b/BurningEarth.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author jeffwadsworth
*/
-public class BurningEarth extends CardImpl {
+public final class BurningEarth extends CardImpl {
private final static FilterLandPermanent filter = new FilterLandPermanent("a player taps a nonbasic land");
diff --git a/Mage.Sets/src/mage/cards/b/BurningEyeZubera.java b/Mage.Sets/src/mage/cards/b/BurningEyeZubera.java
index 121496fd2c1..4a77c520103 100644
--- a/Mage.Sets/src/mage/cards/b/BurningEyeZubera.java
+++ b/Mage.Sets/src/mage/cards/b/BurningEyeZubera.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class BurningEyeZubera extends CardImpl {
+public final class BurningEyeZubera extends CardImpl {
public BurningEyeZubera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningFields.java b/Mage.Sets/src/mage/cards/b/BurningFields.java
index e445d6f5cde..e165bf7f1c1 100644
--- a/Mage.Sets/src/mage/cards/b/BurningFields.java
+++ b/Mage.Sets/src/mage/cards/b/BurningFields.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author LoneFox
*/
-public class BurningFields extends CardImpl {
+public final class BurningFields extends CardImpl {
public BurningFields(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningFistMinotaur.java b/Mage.Sets/src/mage/cards/b/BurningFistMinotaur.java
index fc89e0824c7..e2f7c2c4652 100644
--- a/Mage.Sets/src/mage/cards/b/BurningFistMinotaur.java
+++ b/Mage.Sets/src/mage/cards/b/BurningFistMinotaur.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class BurningFistMinotaur extends CardImpl {
+public final class BurningFistMinotaur extends CardImpl {
public BurningFistMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningInquiry.java b/Mage.Sets/src/mage/cards/b/BurningInquiry.java
index f2d2e968662..3639fa7ca13 100644
--- a/Mage.Sets/src/mage/cards/b/BurningInquiry.java
+++ b/Mage.Sets/src/mage/cards/b/BurningInquiry.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class BurningInquiry extends CardImpl {
+public final class BurningInquiry extends CardImpl {
public BurningInquiry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningOfXinye.java b/Mage.Sets/src/mage/cards/b/BurningOfXinye.java
index 3a4d46af541..21e66dee1fe 100644
--- a/Mage.Sets/src/mage/cards/b/BurningOfXinye.java
+++ b/Mage.Sets/src/mage/cards/b/BurningOfXinye.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class BurningOfXinye extends CardImpl {
+public final class BurningOfXinye extends CardImpl {
public BurningOfXinye(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningOil.java b/Mage.Sets/src/mage/cards/b/BurningOil.java
index 837bfc4888e..c0f47fe9fda 100644
--- a/Mage.Sets/src/mage/cards/b/BurningOil.java
+++ b/Mage.Sets/src/mage/cards/b/BurningOil.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author North
*/
-public class BurningOil extends CardImpl {
+public final class BurningOil extends CardImpl {
public BurningOil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningPalmEfreet.java b/Mage.Sets/src/mage/cards/b/BurningPalmEfreet.java
index 1208ee6e9ec..50a366c9753 100644
--- a/Mage.Sets/src/mage/cards/b/BurningPalmEfreet.java
+++ b/Mage.Sets/src/mage/cards/b/BurningPalmEfreet.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class BurningPalmEfreet extends CardImpl {
+public final class BurningPalmEfreet extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/b/BurningSands.java b/Mage.Sets/src/mage/cards/b/BurningSands.java
index 386a6fe6690..2287b0a203a 100644
--- a/Mage.Sets/src/mage/cards/b/BurningSands.java
+++ b/Mage.Sets/src/mage/cards/b/BurningSands.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class BurningSands extends CardImpl {
+public final class BurningSands extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/b/BurningShieldAskari.java b/Mage.Sets/src/mage/cards/b/BurningShieldAskari.java
index 6efbe7957e2..e75ac7dd9dc 100644
--- a/Mage.Sets/src/mage/cards/b/BurningShieldAskari.java
+++ b/Mage.Sets/src/mage/cards/b/BurningShieldAskari.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class BurningShieldAskari extends CardImpl {
+public final class BurningShieldAskari extends CardImpl {
public BurningShieldAskari(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningSunsAvatar.java b/Mage.Sets/src/mage/cards/b/BurningSunsAvatar.java
index 8b350221a4c..d74c26ffe7d 100644
--- a/Mage.Sets/src/mage/cards/b/BurningSunsAvatar.java
+++ b/Mage.Sets/src/mage/cards/b/BurningSunsAvatar.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author TheElk801
*/
-public class BurningSunsAvatar extends CardImpl {
+public final class BurningSunsAvatar extends CardImpl {
public BurningSunsAvatar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningTreeBloodscale.java b/Mage.Sets/src/mage/cards/b/BurningTreeBloodscale.java
index 7ecc4f61e1a..000be05fd72 100644
--- a/Mage.Sets/src/mage/cards/b/BurningTreeBloodscale.java
+++ b/Mage.Sets/src/mage/cards/b/BurningTreeBloodscale.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class BurningTreeBloodscale extends CardImpl {
+public final class BurningTreeBloodscale extends CardImpl {
public BurningTreeBloodscale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningTreeEmissary.java b/Mage.Sets/src/mage/cards/b/BurningTreeEmissary.java
index 037f87f9634..414b33f9a0a 100644
--- a/Mage.Sets/src/mage/cards/b/BurningTreeEmissary.java
+++ b/Mage.Sets/src/mage/cards/b/BurningTreeEmissary.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BurningTreeEmissary extends CardImpl {
+public final class BurningTreeEmissary extends CardImpl {
public BurningTreeEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/G}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningTreeShaman.java b/Mage.Sets/src/mage/cards/b/BurningTreeShaman.java
index 43533dc2ee2..52ab41d5529 100644
--- a/Mage.Sets/src/mage/cards/b/BurningTreeShaman.java
+++ b/Mage.Sets/src/mage/cards/b/BurningTreeShaman.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class BurningTreeShaman extends CardImpl {
+public final class BurningTreeShaman extends CardImpl {
public BurningTreeShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningVengeance.java b/Mage.Sets/src/mage/cards/b/BurningVengeance.java
index 6b45a94c328..f3b0561e99d 100644
--- a/Mage.Sets/src/mage/cards/b/BurningVengeance.java
+++ b/Mage.Sets/src/mage/cards/b/BurningVengeance.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author nantuko
*/
-public class BurningVengeance extends CardImpl {
+public final class BurningVengeance extends CardImpl {
public BurningVengeance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningWish.java b/Mage.Sets/src/mage/cards/b/BurningWish.java
index fc67edefb56..daa2d042097 100644
--- a/Mage.Sets/src/mage/cards/b/BurningWish.java
+++ b/Mage.Sets/src/mage/cards/b/BurningWish.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class BurningWish extends CardImpl {
+public final class BurningWish extends CardImpl {
private static final FilterCard filter = new FilterCard("a sorcery card");
diff --git a/Mage.Sets/src/mage/cards/b/BurnishedHart.java b/Mage.Sets/src/mage/cards/b/BurnishedHart.java
index 2b4bbe8910c..95b0376f668 100644
--- a/Mage.Sets/src/mage/cards/b/BurnishedHart.java
+++ b/Mage.Sets/src/mage/cards/b/BurnishedHart.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class BurnishedHart extends CardImpl {
+public final class BurnishedHart extends CardImpl {
public BurnishedHart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
@@ -59,7 +59,7 @@ public class BurnishedHart extends CardImpl {
// {3}, Sacrifice Burnished Hart: Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library.
Ability ability = new SimpleActivatedAbility(
Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new GenericManaCost(3));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/b/Burnout.java b/Mage.Sets/src/mage/cards/b/Burnout.java
index e150055d32c..6b6a517713d 100644
--- a/Mage.Sets/src/mage/cards/b/Burnout.java
+++ b/Mage.Sets/src/mage/cards/b/Burnout.java
@@ -49,7 +49,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class Burnout extends CardImpl {
+public final class Burnout extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant spell");
diff --git a/Mage.Sets/src/mage/cards/b/BurntOffering.java b/Mage.Sets/src/mage/cards/b/BurntOffering.java
index b2dc7278404..04975131217 100644
--- a/Mage.Sets/src/mage/cards/b/BurntOffering.java
+++ b/Mage.Sets/src/mage/cards/b/BurntOffering.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Topher
*/
-public class BurntOffering extends CardImpl {
+public final class BurntOffering extends CardImpl {
public BurntOffering(UUID ownerID, CardSetInfo setInfo) {
super(ownerID, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BurntheImpure.java b/Mage.Sets/src/mage/cards/b/BurntheImpure.java
index 5a9a0aa6099..b8cdabb7450 100644
--- a/Mage.Sets/src/mage/cards/b/BurntheImpure.java
+++ b/Mage.Sets/src/mage/cards/b/BurntheImpure.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ayratn
*/
-public class BurntheImpure extends CardImpl {
+public final class BurntheImpure extends CardImpl {
public BurntheImpure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurrGrafter.java b/Mage.Sets/src/mage/cards/b/BurrGrafter.java
index 481e7e88b47..361259a102e 100644
--- a/Mage.Sets/src/mage/cards/b/BurrGrafter.java
+++ b/Mage.Sets/src/mage/cards/b/BurrGrafter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BurrGrafter extends CardImpl {
+public final class BurrGrafter extends CardImpl {
public BurrGrafter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BurrentonBombardier.java b/Mage.Sets/src/mage/cards/b/BurrentonBombardier.java
index 5148910043c..5c729851ea5 100644
--- a/Mage.Sets/src/mage/cards/b/BurrentonBombardier.java
+++ b/Mage.Sets/src/mage/cards/b/BurrentonBombardier.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class BurrentonBombardier extends CardImpl {
+public final class BurrentonBombardier extends CardImpl {
public BurrentonBombardier (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BurrentonForgeTender.java b/Mage.Sets/src/mage/cards/b/BurrentonForgeTender.java
index 1024fc2cb52..bcb6cf55fae 100644
--- a/Mage.Sets/src/mage/cards/b/BurrentonForgeTender.java
+++ b/Mage.Sets/src/mage/cards/b/BurrentonForgeTender.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class BurrentonForgeTender extends CardImpl {
+public final class BurrentonForgeTender extends CardImpl {
private static final FilterObject filterObject = new FilterObject("a red");
diff --git a/Mage.Sets/src/mage/cards/b/BurrentonShieldBearers.java b/Mage.Sets/src/mage/cards/b/BurrentonShieldBearers.java
index bcf08eebc40..b82ca04af93 100644
--- a/Mage.Sets/src/mage/cards/b/BurrentonShieldBearers.java
+++ b/Mage.Sets/src/mage/cards/b/BurrentonShieldBearers.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class BurrentonShieldBearers extends CardImpl {
+public final class BurrentonShieldBearers extends CardImpl {
public BurrentonShieldBearers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/b/Burrowing.java b/Mage.Sets/src/mage/cards/b/Burrowing.java
index ff472157beb..cde32c262e2 100644
--- a/Mage.Sets/src/mage/cards/b/Burrowing.java
+++ b/Mage.Sets/src/mage/cards/b/Burrowing.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author KholdFuzion
*/
-public class Burrowing extends CardImpl {
+public final class Burrowing extends CardImpl {
public Burrowing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurstLightning.java b/Mage.Sets/src/mage/cards/b/BurstLightning.java
index feebfab3bff..d1116fe45aa 100644
--- a/Mage.Sets/src/mage/cards/b/BurstLightning.java
+++ b/Mage.Sets/src/mage/cards/b/BurstLightning.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BurstLightning extends CardImpl {
+public final class BurstLightning extends CardImpl {
public BurstLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurstOfEnergy.java b/Mage.Sets/src/mage/cards/b/BurstOfEnergy.java
index f3cdd887d66..6098f1bce7e 100644
--- a/Mage.Sets/src/mage/cards/b/BurstOfEnergy.java
+++ b/Mage.Sets/src/mage/cards/b/BurstOfEnergy.java
@@ -38,7 +38,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class BurstOfEnergy extends CardImpl {
+public final class BurstOfEnergy extends CardImpl {
public BurstOfEnergy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/b/BurstOfSpeed.java b/Mage.Sets/src/mage/cards/b/BurstOfSpeed.java
index 7c0231d37d7..1cc0dba4857 100644
--- a/Mage.Sets/src/mage/cards/b/BurstOfSpeed.java
+++ b/Mage.Sets/src/mage/cards/b/BurstOfSpeed.java
@@ -40,7 +40,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class BurstOfSpeed extends CardImpl {
+public final class BurstOfSpeed extends CardImpl {
public BurstOfSpeed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurstOfStrength.java b/Mage.Sets/src/mage/cards/b/BurstOfStrength.java
index 25027c62b7b..b6e821a8148 100644
--- a/Mage.Sets/src/mage/cards/b/BurstOfStrength.java
+++ b/Mage.Sets/src/mage/cards/b/BurstOfStrength.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class BurstOfStrength extends CardImpl {
+public final class BurstOfStrength extends CardImpl {
public BurstOfStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java b/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java
index 53db42aa371..80aafe9441b 100644
--- a/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java
+++ b/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java
@@ -51,7 +51,7 @@ import java.util.UUID;
/**
* @author LevelX
*/
-public class BushiTenderfoot extends CardImpl {
+public final class BushiTenderfoot extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn");
diff --git a/Mage.Sets/src/mage/cards/b/ButcherGhoul.java b/Mage.Sets/src/mage/cards/b/ButcherGhoul.java
index 61debd31b68..ff7c6376bfd 100644
--- a/Mage.Sets/src/mage/cards/b/ButcherGhoul.java
+++ b/Mage.Sets/src/mage/cards/b/ButcherGhoul.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ButcherGhoul extends CardImpl {
+public final class ButcherGhoul extends CardImpl {
public ButcherGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/ButcherOfMalakir.java b/Mage.Sets/src/mage/cards/b/ButcherOfMalakir.java
index 0b7f2b29bad..965a96dd5bb 100644
--- a/Mage.Sets/src/mage/cards/b/ButcherOfMalakir.java
+++ b/Mage.Sets/src/mage/cards/b/ButcherOfMalakir.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author jeffwadsworth
*/
-public class ButcherOfMalakir extends CardImpl {
+public final class ButcherOfMalakir extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/b/ButcherOfTheHorde.java b/Mage.Sets/src/mage/cards/b/ButcherOfTheHorde.java
index b61402b9f3b..780ba038089 100644
--- a/Mage.Sets/src/mage/cards/b/ButcherOfTheHorde.java
+++ b/Mage.Sets/src/mage/cards/b/ButcherOfTheHorde.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ButcherOfTheHorde extends CardImpl {
+public final class ButcherOfTheHorde extends CardImpl {
public ButcherOfTheHorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/ButcherOrgg.java b/Mage.Sets/src/mage/cards/b/ButcherOrgg.java
index f12cd58780a..d819b52cd96 100644
--- a/Mage.Sets/src/mage/cards/b/ButcherOrgg.java
+++ b/Mage.Sets/src/mage/cards/b/ButcherOrgg.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class ButcherOrgg extends CardImpl {
+public final class ButcherOrgg extends CardImpl {
public ButcherOrgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/ButchersCleaver.java b/Mage.Sets/src/mage/cards/b/ButchersCleaver.java
index b12fba5b0ec..42a5ec9c616 100644
--- a/Mage.Sets/src/mage/cards/b/ButchersCleaver.java
+++ b/Mage.Sets/src/mage/cards/b/ButchersCleaver.java
@@ -44,7 +44,7 @@ import mage.constants.*;
*
* @author nantuko
*/
-public class ButchersCleaver extends CardImpl {
+public final class ButchersCleaver extends CardImpl {
private static final String staticText = "As long as equipped creature is a Human, it has lifelink";
diff --git a/Mage.Sets/src/mage/cards/b/ButchersGlee.java b/Mage.Sets/src/mage/cards/b/ButchersGlee.java
index db8d45a5b4a..a0e366a670b 100644
--- a/Mage.Sets/src/mage/cards/b/ButchersGlee.java
+++ b/Mage.Sets/src/mage/cards/b/ButchersGlee.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ButchersGlee extends CardImpl {
+public final class ButchersGlee extends CardImpl {
public ButchersGlee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BuzzingWhackADoodle.java b/Mage.Sets/src/mage/cards/b/BuzzingWhackADoodle.java
index 45263884e9b..7afa17e7e71 100644
--- a/Mage.Sets/src/mage/cards/b/BuzzingWhackADoodle.java
+++ b/Mage.Sets/src/mage/cards/b/BuzzingWhackADoodle.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
*
* @author spjspj
*/
-public class BuzzingWhackADoodle extends CardImpl {
+public final class BuzzingWhackADoodle extends CardImpl {
public BuzzingWhackADoodle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/b/ByForce.java b/Mage.Sets/src/mage/cards/b/ByForce.java
index 4fb0dee3425..392aa3fcccf 100644
--- a/Mage.Sets/src/mage/cards/b/ByForce.java
+++ b/Mage.Sets/src/mage/cards/b/ByForce.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author spjspj
*/
-public class ByForce extends CardImpl {
+public final class ByForce extends CardImpl {
public ByForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BygoneBishop.java b/Mage.Sets/src/mage/cards/b/BygoneBishop.java
index 3a056b01279..7c63705abf3 100644
--- a/Mage.Sets/src/mage/cards/b/BygoneBishop.java
+++ b/Mage.Sets/src/mage/cards/b/BygoneBishop.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
*
* @author fireshoes
*/
-public class BygoneBishop extends CardImpl {
+public final class BygoneBishop extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a creature spell with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/b/BywayCourier.java b/Mage.Sets/src/mage/cards/b/BywayCourier.java
index 7f073e0f3a5..2f8a13c6286 100644
--- a/Mage.Sets/src/mage/cards/b/BywayCourier.java
+++ b/Mage.Sets/src/mage/cards/b/BywayCourier.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class BywayCourier extends CardImpl {
+public final class BywayCourier extends CardImpl {
public BywayCourier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/C3POAndR2D2.java b/Mage.Sets/src/mage/cards/c/C3POAndR2D2.java
index 58e3132533d..f4be89b6d48 100644
--- a/Mage.Sets/src/mage/cards/c/C3POAndR2D2.java
+++ b/Mage.Sets/src/mage/cards/c/C3POAndR2D2.java
@@ -45,7 +45,7 @@ import mage.constants.SuperType;
*
* @author Styxo
*/
-public class C3POAndR2D2 extends CardImpl {
+public final class C3POAndR2D2 extends CardImpl {
public C3POAndR2D2(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalArchon.java b/Mage.Sets/src/mage/cards/c/CabalArchon.java
index 7b1309064cf..d348827b815 100644
--- a/Mage.Sets/src/mage/cards/c/CabalArchon.java
+++ b/Mage.Sets/src/mage/cards/c/CabalArchon.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class CabalArchon extends CardImpl {
+public final class CabalArchon extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cleric");
diff --git a/Mage.Sets/src/mage/cards/c/CabalCoffers.java b/Mage.Sets/src/mage/cards/c/CabalCoffers.java
index 2d4dc9a2f00..9d437ac092c 100644
--- a/Mage.Sets/src/mage/cards/c/CabalCoffers.java
+++ b/Mage.Sets/src/mage/cards/c/CabalCoffers.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class CabalCoffers extends CardImpl {
+public final class CabalCoffers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Swamp you control");
diff --git a/Mage.Sets/src/mage/cards/c/CabalConditioning.java b/Mage.Sets/src/mage/cards/c/CabalConditioning.java
index 5ac53f18b1b..24de52c3b9f 100644
--- a/Mage.Sets/src/mage/cards/c/CabalConditioning.java
+++ b/Mage.Sets/src/mage/cards/c/CabalConditioning.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author nigelzor
*/
-public class CabalConditioning extends CardImpl {
+public final class CabalConditioning extends CardImpl {
public CabalConditioning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalEvangel.java b/Mage.Sets/src/mage/cards/c/CabalEvangel.java
index 66ea2793531..a5a742c9c83 100644
--- a/Mage.Sets/src/mage/cards/c/CabalEvangel.java
+++ b/Mage.Sets/src/mage/cards/c/CabalEvangel.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Rystan
*/
-public class CabalEvangel extends CardImpl {
+public final class CabalEvangel extends CardImpl {
public CabalEvangel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalExecutioner.java b/Mage.Sets/src/mage/cards/c/CabalExecutioner.java
index 77877b49203..c3464f743c4 100644
--- a/Mage.Sets/src/mage/cards/c/CabalExecutioner.java
+++ b/Mage.Sets/src/mage/cards/c/CabalExecutioner.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class CabalExecutioner extends CardImpl {
+public final class CabalExecutioner extends CardImpl {
public CabalExecutioner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalInquisitor.java b/Mage.Sets/src/mage/cards/c/CabalInquisitor.java
index 43f4de72c2e..38396547c8c 100644
--- a/Mage.Sets/src/mage/cards/c/CabalInquisitor.java
+++ b/Mage.Sets/src/mage/cards/c/CabalInquisitor.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author cbt33
*/
-public class CabalInquisitor extends CardImpl {
+public final class CabalInquisitor extends CardImpl {
public CabalInquisitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalInterrogator.java b/Mage.Sets/src/mage/cards/c/CabalInterrogator.java
index 60c05a4d263..756d06c9b17 100644
--- a/Mage.Sets/src/mage/cards/c/CabalInterrogator.java
+++ b/Mage.Sets/src/mage/cards/c/CabalInterrogator.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class CabalInterrogator extends CardImpl {
+public final class CabalInterrogator extends CardImpl {
public CabalInterrogator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalPaladin.java b/Mage.Sets/src/mage/cards/c/CabalPaladin.java
index 4e04ea0b1e6..0df0a51a4a3 100644
--- a/Mage.Sets/src/mage/cards/c/CabalPaladin.java
+++ b/Mage.Sets/src/mage/cards/c/CabalPaladin.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterHistoricSpell;
*
* @author TheElk801
*/
-public class CabalPaladin extends CardImpl {
+public final class CabalPaladin extends CardImpl {
public CabalPaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalPatriarch.java b/Mage.Sets/src/mage/cards/c/CabalPatriarch.java
index 216348901bb..00915534b25 100644
--- a/Mage.Sets/src/mage/cards/c/CabalPatriarch.java
+++ b/Mage.Sets/src/mage/cards/c/CabalPatriarch.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33, LevelX2
*/
-public class CabalPatriarch extends CardImpl {
+public final class CabalPatriarch extends CardImpl {
public CabalPatriarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalPit.java b/Mage.Sets/src/mage/cards/c/CabalPit.java
index 9533d1c4c1f..e5c2d5ff3ca 100644
--- a/Mage.Sets/src/mage/cards/c/CabalPit.java
+++ b/Mage.Sets/src/mage/cards/c/CabalPit.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CabalPit extends CardImpl {
+public final class CabalPit extends CardImpl {
public CabalPit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CabalRitual.java b/Mage.Sets/src/mage/cards/c/CabalRitual.java
index 99f17461812..c33fca28c3c 100644
--- a/Mage.Sets/src/mage/cards/c/CabalRitual.java
+++ b/Mage.Sets/src/mage/cards/c/CabalRitual.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class CabalRitual extends CardImpl {
+public final class CabalRitual extends CardImpl {
public CabalRitual(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalShrine.java b/Mage.Sets/src/mage/cards/c/CabalShrine.java
index 9177e40cb6c..132c44ef6be 100644
--- a/Mage.Sets/src/mage/cards/c/CabalShrine.java
+++ b/Mage.Sets/src/mage/cards/c/CabalShrine.java
@@ -1,144 +1,144 @@
-/*
- * 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.MageObject;
-import mage.abilities.Ability;
-import mage.abilities.TriggeredAbilityImpl;
-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.FilterCard;
-import mage.filter.predicate.mageobject.NamePredicate;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
-import mage.game.stack.Spell;
-import mage.players.Player;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class CabalShrine extends CardImpl {
-
- public CabalShrine(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}");
-
-
- // Whenever a player casts a spell, that player discards X cards, where X is the number of cards in all graveyards with the same name as that spell.
- this.addAbility(new CabalShrineTriggeredAbility());
- }
-
- public CabalShrine(final CabalShrine card) {
- super(card);
- }
-
- @Override
- public CabalShrine copy() {
- return new CabalShrine(this);
- }
-}
-
-class CabalShrineTriggeredAbility extends TriggeredAbilityImpl {
-
- public CabalShrineTriggeredAbility() {
- super(Zone.BATTLEFIELD, new CabalShrineEffect(), false);
- }
-
- public CabalShrineTriggeredAbility(final CabalShrineTriggeredAbility ability) {
- super(ability);
- }
-
- @Override
- public CabalShrineTriggeredAbility copy() {
- return new CabalShrineTriggeredAbility(this);
- }
-
- @Override
- public boolean checkEventType(GameEvent event, Game game) {
- return event.getType() == EventType.SPELL_CAST;
- }
-
- @Override
- public boolean checkTrigger(GameEvent event, Game game) {
- Spell spell = game.getStack().getSpell(event.getTargetId());
- MageObject mageObject = game.getObject(sourceId);
- if (spell != null) {
- game.getState().setValue("cabalShrine" + mageObject, spell);
- return true;
- }
- return false;
- }
-
-}
-
-class CabalShrineEffect extends OneShotEffect {
-
- public CabalShrineEffect() {
- super(Outcome.Discard);
- staticText = "Whenever a player casts a spell, that player discards X cards, where X is the number of cards in all graveyards with the same name as that spell";
- }
-
- public CabalShrineEffect(final CabalShrineEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- int count = 0;
- MageObject mageObject = game.getObject(source.getSourceId());
- Spell spell = (Spell) game.getState().getValue("cabalShrine" + mageObject);
- if (spell != null) {
- Player controller = game.getPlayer(spell.getControllerId());
- if (controller != null) {
- String name = spell.getName();
- FilterCard filterCardName = new FilterCard();
- filterCardName.add(new NamePredicate(name));
- for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- count += player.getGraveyard().count(filterCardName, game);
- }
- }
- controller.discard(count, false, source, game);
- return true;
- }
- }
- return false;
- }
-
- @Override
- public CabalShrineEffect copy() {
- return new CabalShrineEffect(this);
- }
-}
+/*
+ * 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.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.TriggeredAbilityImpl;
+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.FilterCard;
+import mage.filter.predicate.mageobject.NamePredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+import mage.game.stack.Spell;
+import mage.players.Player;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class CabalShrine extends CardImpl {
+
+ public CabalShrine(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}");
+
+
+ // Whenever a player casts a spell, that player discards X cards, where X is the number of cards in all graveyards with the same name as that spell.
+ this.addAbility(new CabalShrineTriggeredAbility());
+ }
+
+ public CabalShrine(final CabalShrine card) {
+ super(card);
+ }
+
+ @Override
+ public CabalShrine copy() {
+ return new CabalShrine(this);
+ }
+}
+
+class CabalShrineTriggeredAbility extends TriggeredAbilityImpl {
+
+ public CabalShrineTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new CabalShrineEffect(), false);
+ }
+
+ public CabalShrineTriggeredAbility(final CabalShrineTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public CabalShrineTriggeredAbility copy() {
+ return new CabalShrineTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.SPELL_CAST;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ Spell spell = game.getStack().getSpell(event.getTargetId());
+ MageObject mageObject = game.getObject(sourceId);
+ if (spell != null) {
+ game.getState().setValue("cabalShrine" + mageObject, spell);
+ return true;
+ }
+ return false;
+ }
+
+}
+
+class CabalShrineEffect extends OneShotEffect {
+
+ public CabalShrineEffect() {
+ super(Outcome.Discard);
+ staticText = "Whenever a player casts a spell, that player discards X cards, where X is the number of cards in all graveyards with the same name as that spell";
+ }
+
+ public CabalShrineEffect(final CabalShrineEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ int count = 0;
+ MageObject mageObject = game.getObject(source.getSourceId());
+ Spell spell = (Spell) game.getState().getValue("cabalShrine" + mageObject);
+ if (spell != null) {
+ Player controller = game.getPlayer(spell.getControllerId());
+ if (controller != null) {
+ String name = spell.getName();
+ FilterCard filterCardName = new FilterCard();
+ filterCardName.add(new NamePredicate(name));
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ count += player.getGraveyard().count(filterCardName, game);
+ }
+ }
+ controller.discard(count, false, source, game);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public CabalShrineEffect copy() {
+ return new CabalShrineEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/c/CabalSlaver.java b/Mage.Sets/src/mage/cards/c/CabalSlaver.java
index 8958f5e40cb..5d6a8136605 100644
--- a/Mage.Sets/src/mage/cards/c/CabalSlaver.java
+++ b/Mage.Sets/src/mage/cards/c/CabalSlaver.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author markedagain
*/
-public class CabalSlaver extends CardImpl {
+public final class CabalSlaver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Goblin");
diff --git a/Mage.Sets/src/mage/cards/c/CabalStronghold.java b/Mage.Sets/src/mage/cards/c/CabalStronghold.java
index 906db792aeb..18dce87cc51 100644
--- a/Mage.Sets/src/mage/cards/c/CabalStronghold.java
+++ b/Mage.Sets/src/mage/cards/c/CabalStronghold.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
* @author JRHerlehy
* Created on 4/7/18.
*/
-public class CabalStronghold extends CardImpl {
+public final class CabalStronghold extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("basic Swamp you control");
diff --git a/Mage.Sets/src/mage/cards/c/CabalSurgeon.java b/Mage.Sets/src/mage/cards/c/CabalSurgeon.java
index c53b25976e0..8b3ab6e2669 100644
--- a/Mage.Sets/src/mage/cards/c/CabalSurgeon.java
+++ b/Mage.Sets/src/mage/cards/c/CabalSurgeon.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author markedagain
*/
-public class CabalSurgeon extends CardImpl {
+public final class CabalSurgeon extends CardImpl {
public CabalSurgeon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalTherapy.java b/Mage.Sets/src/mage/cards/c/CabalTherapy.java
index 8e3e679afc3..cee42fa62e3 100644
--- a/Mage.Sets/src/mage/cards/c/CabalTherapy.java
+++ b/Mage.Sets/src/mage/cards/c/CabalTherapy.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author jonubuu
*/
-public class CabalTherapy extends CardImpl {
+public final class CabalTherapy extends CardImpl {
public CabalTherapy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalTorturer.java b/Mage.Sets/src/mage/cards/c/CabalTorturer.java
index d2184238197..284c9a5e479 100644
--- a/Mage.Sets/src/mage/cards/c/CabalTorturer.java
+++ b/Mage.Sets/src/mage/cards/c/CabalTorturer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class CabalTorturer extends CardImpl {
+public final class CabalTorturer extends CardImpl {
public CabalTorturer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CabalTrainee.java b/Mage.Sets/src/mage/cards/c/CabalTrainee.java
index 15c8c845a20..f51ec8fab25 100644
--- a/Mage.Sets/src/mage/cards/c/CabalTrainee.java
+++ b/Mage.Sets/src/mage/cards/c/CabalTrainee.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CabalTrainee extends CardImpl {
+public final class CabalTrainee extends CardImpl {
public CabalTrainee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CacheRaiders.java b/Mage.Sets/src/mage/cards/c/CacheRaiders.java
index 4c5e0e6eee6..b81104e130a 100644
--- a/Mage.Sets/src/mage/cards/c/CacheRaiders.java
+++ b/Mage.Sets/src/mage/cards/c/CacheRaiders.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Loki
*/
-public class CacheRaiders extends CardImpl {
+public final class CacheRaiders extends CardImpl {
public CacheRaiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CachedDefenses.java b/Mage.Sets/src/mage/cards/c/CachedDefenses.java
index 7f29d5982f9..ab459b00ad7 100644
--- a/Mage.Sets/src/mage/cards/c/CachedDefenses.java
+++ b/Mage.Sets/src/mage/cards/c/CachedDefenses.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class CachedDefenses extends CardImpl {
+public final class CachedDefenses extends CardImpl {
public CachedDefenses(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CacklingCounterpart.java b/Mage.Sets/src/mage/cards/c/CacklingCounterpart.java
index 1db428edc30..3efb46d73e6 100644
--- a/Mage.Sets/src/mage/cards/c/CacklingCounterpart.java
+++ b/Mage.Sets/src/mage/cards/c/CacklingCounterpart.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author nantuko
*/
-public class CacklingCounterpart extends CardImpl {
+public final class CacklingCounterpart extends CardImpl {
public CacklingCounterpart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CacklingFiend.java b/Mage.Sets/src/mage/cards/c/CacklingFiend.java
index 901d37bc2c5..b6c25c183a6 100644
--- a/Mage.Sets/src/mage/cards/c/CacklingFiend.java
+++ b/Mage.Sets/src/mage/cards/c/CacklingFiend.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author Backfir3
*/
-public class CacklingFiend extends CardImpl {
+public final class CacklingFiend extends CardImpl {
public CacklingFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CacklingFlames.java b/Mage.Sets/src/mage/cards/c/CacklingFlames.java
index 69bbea04285..460e05f35f4 100644
--- a/Mage.Sets/src/mage/cards/c/CacklingFlames.java
+++ b/Mage.Sets/src/mage/cards/c/CacklingFlames.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author JotaPeRL
*/
-public class CacklingFlames extends CardImpl {
+public final class CacklingFlames extends CardImpl {
public CacklingFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CacklingImp.java b/Mage.Sets/src/mage/cards/c/CacklingImp.java
index f7089a71836..71e41353920 100644
--- a/Mage.Sets/src/mage/cards/c/CacklingImp.java
+++ b/Mage.Sets/src/mage/cards/c/CacklingImp.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class CacklingImp extends CardImpl {
+public final class CacklingImp extends CardImpl {
public CacklingImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CacklingWitch.java b/Mage.Sets/src/mage/cards/c/CacklingWitch.java
index bf097b383e0..b37c6b3bc3a 100644
--- a/Mage.Sets/src/mage/cards/c/CacklingWitch.java
+++ b/Mage.Sets/src/mage/cards/c/CacklingWitch.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CacklingWitch extends CardImpl {
+public final class CacklingWitch extends CardImpl {
public CacklingWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Cacophodon.java b/Mage.Sets/src/mage/cards/c/Cacophodon.java
index 02f7a696507..90cd2b39532 100644
--- a/Mage.Sets/src/mage/cards/c/Cacophodon.java
+++ b/Mage.Sets/src/mage/cards/c/Cacophodon.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class Cacophodon extends CardImpl {
+public final class Cacophodon extends CardImpl {
public Cacophodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CadaverImp.java b/Mage.Sets/src/mage/cards/c/CadaverImp.java
index 67bc621c017..4c0fc980e03 100644
--- a/Mage.Sets/src/mage/cards/c/CadaverImp.java
+++ b/Mage.Sets/src/mage/cards/c/CadaverImp.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class CadaverImp extends CardImpl {
+public final class CadaverImp extends CardImpl {
public CadaverImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CadaverousBloom.java b/Mage.Sets/src/mage/cards/c/CadaverousBloom.java
index e41117ac436..1c218821b20 100644
--- a/Mage.Sets/src/mage/cards/c/CadaverousBloom.java
+++ b/Mage.Sets/src/mage/cards/c/CadaverousBloom.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LoneFox
*/
-public class CadaverousBloom extends CardImpl {
+public final class CadaverousBloom extends CardImpl {
public CadaverousBloom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CadaverousKnight.java b/Mage.Sets/src/mage/cards/c/CadaverousKnight.java
index d3587248cba..7207654ad4b 100644
--- a/Mage.Sets/src/mage/cards/c/CadaverousKnight.java
+++ b/Mage.Sets/src/mage/cards/c/CadaverousKnight.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class CadaverousKnight extends CardImpl {
+public final class CadaverousKnight extends CardImpl {
public CadaverousKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CageOfHands.java b/Mage.Sets/src/mage/cards/c/CageOfHands.java
index 082fc369a6d..f810e1ede30 100644
--- a/Mage.Sets/src/mage/cards/c/CageOfHands.java
+++ b/Mage.Sets/src/mage/cards/c/CageOfHands.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CageOfHands extends CardImpl {
+public final class CageOfHands extends CardImpl {
public CageOfHands (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CagedSun.java b/Mage.Sets/src/mage/cards/c/CagedSun.java
index d29b4726002..a1459d78870 100644
--- a/Mage.Sets/src/mage/cards/c/CagedSun.java
+++ b/Mage.Sets/src/mage/cards/c/CagedSun.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class CagedSun extends CardImpl {
+public final class CagedSun extends CardImpl {
public CagedSun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/c/Cagemail.java b/Mage.Sets/src/mage/cards/c/Cagemail.java
index 01c75c71ab0..5630b3f1980 100644
--- a/Mage.Sets/src/mage/cards/c/Cagemail.java
+++ b/Mage.Sets/src/mage/cards/c/Cagemail.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class Cagemail extends CardImpl {
+public final class Cagemail extends CardImpl {
public Cagemail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CairnWanderer.java b/Mage.Sets/src/mage/cards/c/CairnWanderer.java
index ff1f42eb8c5..c6ee0099790 100644
--- a/Mage.Sets/src/mage/cards/c/CairnWanderer.java
+++ b/Mage.Sets/src/mage/cards/c/CairnWanderer.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author psykad
*/
-public class CairnWanderer extends CardImpl {
+public final class CairnWanderer extends CardImpl {
public CairnWanderer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Calciderm.java b/Mage.Sets/src/mage/cards/c/Calciderm.java
index 4b6e0ba57ed..39c471ac678 100644
--- a/Mage.Sets/src/mage/cards/c/Calciderm.java
+++ b/Mage.Sets/src/mage/cards/c/Calciderm.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class Calciderm extends CardImpl {
+public final class Calciderm extends CardImpl {
public Calciderm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CalciformPools.java b/Mage.Sets/src/mage/cards/c/CalciformPools.java
index a5333ef9e9e..6ae31d6ae2b 100644
--- a/Mage.Sets/src/mage/cards/c/CalciformPools.java
+++ b/Mage.Sets/src/mage/cards/c/CalciformPools.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class CalciformPools extends CardImpl {
+public final class CalciformPools extends CardImpl {
public CalciformPools(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CalciteSnapper.java b/Mage.Sets/src/mage/cards/c/CalciteSnapper.java
index 210a7f7a2d1..3d4fdfd4b79 100644
--- a/Mage.Sets/src/mage/cards/c/CalciteSnapper.java
+++ b/Mage.Sets/src/mage/cards/c/CalciteSnapper.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class CalciteSnapper extends CardImpl {
+public final class CalciteSnapper extends CardImpl {
public CalciteSnapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CalculatedDismissal.java b/Mage.Sets/src/mage/cards/c/CalculatedDismissal.java
index e269a5690a7..a2b74510d2a 100644
--- a/Mage.Sets/src/mage/cards/c/CalculatedDismissal.java
+++ b/Mage.Sets/src/mage/cards/c/CalculatedDismissal.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class CalculatedDismissal extends CardImpl {
+public final class CalculatedDismissal extends CardImpl {
public CalculatedDismissal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CalderaHellion.java b/Mage.Sets/src/mage/cards/c/CalderaHellion.java
index 7d246cd3b4f..221bef73033 100644
--- a/Mage.Sets/src/mage/cards/c/CalderaHellion.java
+++ b/Mage.Sets/src/mage/cards/c/CalderaHellion.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class CalderaHellion extends CardImpl {
+public final class CalderaHellion extends CardImpl {
public CalderaHellion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CalderaKavu.java b/Mage.Sets/src/mage/cards/c/CalderaKavu.java
index 59c3c91b46b..bd18849aea1 100644
--- a/Mage.Sets/src/mage/cards/c/CalderaKavu.java
+++ b/Mage.Sets/src/mage/cards/c/CalderaKavu.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class CalderaKavu extends CardImpl {
+public final class CalderaKavu extends CardImpl {
public CalderaKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CalderaLake.java b/Mage.Sets/src/mage/cards/c/CalderaLake.java
index bba7232f33f..325860901b3 100644
--- a/Mage.Sets/src/mage/cards/c/CalderaLake.java
+++ b/Mage.Sets/src/mage/cards/c/CalderaLake.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class CalderaLake extends CardImpl {
+public final class CalderaLake extends CardImpl {
public CalderaLake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/c/CaligoSkinWitch.java b/Mage.Sets/src/mage/cards/c/CaligoSkinWitch.java
index 5857b92887e..96f10e4a12f 100644
--- a/Mage.Sets/src/mage/cards/c/CaligoSkinWitch.java
+++ b/Mage.Sets/src/mage/cards/c/CaligoSkinWitch.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author JRHerlehy
*/
-public class CaligoSkinWitch extends CardImpl {
+public final class CaligoSkinWitch extends CardImpl {
public CaligoSkinWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CallForBlood.java b/Mage.Sets/src/mage/cards/c/CallForBlood.java
index 818e39793ab..76f973ee23d 100644
--- a/Mage.Sets/src/mage/cards/c/CallForBlood.java
+++ b/Mage.Sets/src/mage/cards/c/CallForBlood.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CallForBlood extends CardImpl {
+public final class CallForBlood extends CardImpl {
public CallForBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CallForUnity.java b/Mage.Sets/src/mage/cards/c/CallForUnity.java
index 1851ea0eda3..191a07f80d7 100644
--- a/Mage.Sets/src/mage/cards/c/CallForUnity.java
+++ b/Mage.Sets/src/mage/cards/c/CallForUnity.java
@@ -50,7 +50,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author fireshoes
*/
-public class CallForUnity extends CardImpl {
+public final class CallForUnity extends CardImpl {
private static final String ruleText = "Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, "
+ "put a unity counter on {this}.";
diff --git a/Mage.Sets/src/mage/cards/c/CallOfTheConclave.java b/Mage.Sets/src/mage/cards/c/CallOfTheConclave.java
index 3e55802680f..067c64a401d 100644
--- a/Mage.Sets/src/mage/cards/c/CallOfTheConclave.java
+++ b/Mage.Sets/src/mage/cards/c/CallOfTheConclave.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.CentaurToken;
*
* @author LevelX2
*/
-public class CallOfTheConclave extends CardImpl {
+public final class CallOfTheConclave extends CardImpl {
public CallOfTheConclave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CallOfTheFullMoon.java b/Mage.Sets/src/mage/cards/c/CallOfTheFullMoon.java
index c33f8ff4724..36fa23a382b 100644
--- a/Mage.Sets/src/mage/cards/c/CallOfTheFullMoon.java
+++ b/Mage.Sets/src/mage/cards/c/CallOfTheFullMoon.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class CallOfTheFullMoon extends CardImpl {
+public final class CallOfTheFullMoon extends CardImpl {
public CallOfTheFullMoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CallOfTheHerd.java b/Mage.Sets/src/mage/cards/c/CallOfTheHerd.java
index f686eff988e..eb98d487312 100644
--- a/Mage.Sets/src/mage/cards/c/CallOfTheHerd.java
+++ b/Mage.Sets/src/mage/cards/c/CallOfTheHerd.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ElephantToken;
*
* @author Loki
*/
-public class CallOfTheHerd extends CardImpl {
+public final class CallOfTheHerd extends CardImpl {
public CallOfTheHerd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CallOfTheNightwing.java b/Mage.Sets/src/mage/cards/c/CallOfTheNightwing.java
index 0ceaa713dca..39d093ea24d 100644
--- a/Mage.Sets/src/mage/cards/c/CallOfTheNightwing.java
+++ b/Mage.Sets/src/mage/cards/c/CallOfTheNightwing.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.NightwingHorrorToken;
*
* @author LevelX2
*/
-public class CallOfTheNightwing extends CardImpl {
+public final class CallOfTheNightwing extends CardImpl {
public CallOfTheNightwing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CallOfTheWild.java b/Mage.Sets/src/mage/cards/c/CallOfTheWild.java
index 25c1eb9a958..1e4594871fc 100644
--- a/Mage.Sets/src/mage/cards/c/CallOfTheWild.java
+++ b/Mage.Sets/src/mage/cards/c/CallOfTheWild.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class CallOfTheWild extends CardImpl {
+public final class CallOfTheWild extends CardImpl {
public CallOfTheWild(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CallTheBloodline.java b/Mage.Sets/src/mage/cards/c/CallTheBloodline.java
index 1a5fd001673..986c626579a 100644
--- a/Mage.Sets/src/mage/cards/c/CallTheBloodline.java
+++ b/Mage.Sets/src/mage/cards/c/CallTheBloodline.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.VampireKnightToken;
*
* @author fireshoes
*/
-public class CallTheBloodline extends CardImpl {
+public final class CallTheBloodline extends CardImpl {
public CallTheBloodline(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CallTheCavalry.java b/Mage.Sets/src/mage/cards/c/CallTheCavalry.java
index 99a3fb806c3..a99506093ca 100644
--- a/Mage.Sets/src/mage/cards/c/CallTheCavalry.java
+++ b/Mage.Sets/src/mage/cards/c/CallTheCavalry.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.KnightToken;
*
* @author JRHerlehy
*/
-public class CallTheCavalry extends CardImpl {
+public final class CallTheCavalry extends CardImpl {
public CallTheCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CallTheGatewatch.java b/Mage.Sets/src/mage/cards/c/CallTheGatewatch.java
index ac3c5a6a3ee..32a178999c1 100644
--- a/Mage.Sets/src/mage/cards/c/CallTheGatewatch.java
+++ b/Mage.Sets/src/mage/cards/c/CallTheGatewatch.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class CallTheGatewatch extends CardImpl {
+public final class CallTheGatewatch extends CardImpl {
private static final FilterPlaneswalkerCard filter = new FilterPlaneswalkerCard("planeswalker card");
diff --git a/Mage.Sets/src/mage/cards/c/CallTheScions.java b/Mage.Sets/src/mage/cards/c/CallTheScions.java
index a47de50d880..ace160189aa 100644
--- a/Mage.Sets/src/mage/cards/c/CallTheScions.java
+++ b/Mage.Sets/src/mage/cards/c/CallTheScions.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author LevelX2
*/
-public class CallTheScions extends CardImpl {
+public final class CallTheScions extends CardImpl {
public CallTheScions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CallTheSkybreaker.java b/Mage.Sets/src/mage/cards/c/CallTheSkybreaker.java
index cfe922e21b4..493aca8f57a 100644
--- a/Mage.Sets/src/mage/cards/c/CallTheSkybreaker.java
+++ b/Mage.Sets/src/mage/cards/c/CallTheSkybreaker.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.CallTheSkyBreakerElementalToken;
*
* @author jeffwadsworth
*/
-public class CallTheSkybreaker extends CardImpl {
+public final class CallTheSkybreaker extends CardImpl {
public CallTheSkybreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U/R}{U/R}");
diff --git a/Mage.Sets/src/mage/cards/c/CallToArms.java b/Mage.Sets/src/mage/cards/c/CallToArms.java
index 095cdba84a6..e94c292b74f 100644
--- a/Mage.Sets/src/mage/cards/c/CallToArms.java
+++ b/Mage.Sets/src/mage/cards/c/CallToArms.java
@@ -61,7 +61,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class CallToArms extends CardImpl {
+public final class CallToArms extends CardImpl {
public CallToArms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CallToGlory.java b/Mage.Sets/src/mage/cards/c/CallToGlory.java
index b2c31e6112d..83840c726b8 100644
--- a/Mage.Sets/src/mage/cards/c/CallToGlory.java
+++ b/Mage.Sets/src/mage/cards/c/CallToGlory.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class CallToGlory extends CardImpl {
+public final class CallToGlory extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Samurai");
diff --git a/Mage.Sets/src/mage/cards/c/CallToHeel.java b/Mage.Sets/src/mage/cards/c/CallToHeel.java
index d2614d8fabd..a34b1ab4787 100644
--- a/Mage.Sets/src/mage/cards/c/CallToHeel.java
+++ b/Mage.Sets/src/mage/cards/c/CallToHeel.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class CallToHeel extends CardImpl {
+public final class CallToHeel extends CardImpl {
public CallToHeel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CallToMind.java b/Mage.Sets/src/mage/cards/c/CallToMind.java
index 150c350b546..28fcac74916 100644
--- a/Mage.Sets/src/mage/cards/c/CallToMind.java
+++ b/Mage.Sets/src/mage/cards/c/CallToMind.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CallToMind extends CardImpl {
+public final class CallToMind extends CardImpl {
public CallToMind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CallToServe.java b/Mage.Sets/src/mage/cards/c/CallToServe.java
index 7b5941a8bad..d2111c47ab8 100644
--- a/Mage.Sets/src/mage/cards/c/CallToServe.java
+++ b/Mage.Sets/src/mage/cards/c/CallToServe.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CallToServe extends CardImpl {
+public final class CallToServe extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/c/CallToTheFeast.java b/Mage.Sets/src/mage/cards/c/CallToTheFeast.java
index 9408afd4eff..dfb47cfae7e 100644
--- a/Mage.Sets/src/mage/cards/c/CallToTheFeast.java
+++ b/Mage.Sets/src/mage/cards/c/CallToTheFeast.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.IxalanVampireToken;
*
* @author TheElk801
*/
-public class CallToTheFeast extends CardImpl {
+public final class CallToTheFeast extends CardImpl {
public CallToTheFeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CallToTheGrave.java b/Mage.Sets/src/mage/cards/c/CallToTheGrave.java
index 3e010c44b1e..5c4fa62818f 100644
--- a/Mage.Sets/src/mage/cards/c/CallToTheGrave.java
+++ b/Mage.Sets/src/mage/cards/c/CallToTheGrave.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author nantuko
*/
-public class CallToTheGrave extends CardImpl {
+public final class CallToTheGrave extends CardImpl {
private static final String ruleText = "At the beginning of the end step, if no creatures are on the battlefield, sacrifice {this}.";
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Zombie creature");
diff --git a/Mage.Sets/src/mage/cards/c/CallToTheKindred.java b/Mage.Sets/src/mage/cards/c/CallToTheKindred.java
index d7e400810e6..00ee292f067 100644
--- a/Mage.Sets/src/mage/cards/c/CallToTheKindred.java
+++ b/Mage.Sets/src/mage/cards/c/CallToTheKindred.java
@@ -59,7 +59,7 @@ import java.util.UUID;
*
* @author North
*/
-public class CallToTheKindred extends CardImpl {
+public final class CallToTheKindred extends CardImpl {
public CallToTheKindred(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CallToTheNetherworld.java b/Mage.Sets/src/mage/cards/c/CallToTheNetherworld.java
index 1ee552f8535..14071ebce90 100644
--- a/Mage.Sets/src/mage/cards/c/CallToTheNetherworld.java
+++ b/Mage.Sets/src/mage/cards/c/CallToTheNetherworld.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author nigelzor
*/
-public class CallToTheNetherworld extends CardImpl {
+public final class CallToTheNetherworld extends CardImpl {
private static FilterCreatureCard filter = new FilterCreatureCard("black creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/c/CallerOfGales.java b/Mage.Sets/src/mage/cards/c/CallerOfGales.java
index 6316c5223ec..8714bdd4649 100644
--- a/Mage.Sets/src/mage/cards/c/CallerOfGales.java
+++ b/Mage.Sets/src/mage/cards/c/CallerOfGales.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CallerOfGales extends CardImpl {
+public final class CallerOfGales extends CardImpl {
public CallerOfGales (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CallerOfTheClaw.java b/Mage.Sets/src/mage/cards/c/CallerOfTheClaw.java
index 73e3c316ae5..8bada22e6ef 100644
--- a/Mage.Sets/src/mage/cards/c/CallerOfTheClaw.java
+++ b/Mage.Sets/src/mage/cards/c/CallerOfTheClaw.java
@@ -53,7 +53,7 @@ import mage.watchers.Watcher;
*
* @author Plopman
*/
-public class CallerOfTheClaw extends CardImpl {
+public final class CallerOfTheClaw extends CardImpl {
public CallerOfTheClaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CallerOfTheHunt.java b/Mage.Sets/src/mage/cards/c/CallerOfTheHunt.java
index b683055fc30..581a991595c 100644
--- a/Mage.Sets/src/mage/cards/c/CallerOfTheHunt.java
+++ b/Mage.Sets/src/mage/cards/c/CallerOfTheHunt.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class CallerOfTheHunt extends CardImpl {
+public final class CallerOfTheHunt extends CardImpl {
public CallerOfTheHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CallerOfThePack.java b/Mage.Sets/src/mage/cards/c/CallerOfThePack.java
index 6875bed2fc3..9312e6f475f 100644
--- a/Mage.Sets/src/mage/cards/c/CallerOfThePack.java
+++ b/Mage.Sets/src/mage/cards/c/CallerOfThePack.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CallerOfThePack extends CardImpl {
+public final class CallerOfThePack extends CardImpl {
public CallerOfThePack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CallousDeceiver.java b/Mage.Sets/src/mage/cards/c/CallousDeceiver.java
index 03c905e245a..ac78ed866bc 100644
--- a/Mage.Sets/src/mage/cards/c/CallousDeceiver.java
+++ b/Mage.Sets/src/mage/cards/c/CallousDeceiver.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX
*/
-public class CallousDeceiver extends CardImpl {
+public final class CallousDeceiver extends CardImpl {
public CallousDeceiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CallousGiant.java b/Mage.Sets/src/mage/cards/c/CallousGiant.java
index ddf68298ba7..c2cfec5bfe2 100644
--- a/Mage.Sets/src/mage/cards/c/CallousGiant.java
+++ b/Mage.Sets/src/mage/cards/c/CallousGiant.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent;
* @author LoneFox
*/
-public class CallousGiant extends CardImpl {
+public final class CallousGiant extends CardImpl {
public CallousGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CallousOppressor.java b/Mage.Sets/src/mage/cards/c/CallousOppressor.java
index a7868ae8c6d..a2232209140 100644
--- a/Mage.Sets/src/mage/cards/c/CallousOppressor.java
+++ b/Mage.Sets/src/mage/cards/c/CallousOppressor.java
@@ -60,7 +60,7 @@ import mage.util.CardUtil;
*
* @author L_J
*/
-public class CallousOppressor extends CardImpl {
+public final class CallousOppressor extends CardImpl {
public CallousOppressor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CallowJushi.java b/Mage.Sets/src/mage/cards/c/CallowJushi.java
index aa2867a6fdd..e938a7c1055 100644
--- a/Mage.Sets/src/mage/cards/c/CallowJushi.java
+++ b/Mage.Sets/src/mage/cards/c/CallowJushi.java
@@ -57,7 +57,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class CallowJushi extends CardImpl {
+public final class CallowJushi extends CardImpl {
public CallowJushi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CalmingLicid.java b/Mage.Sets/src/mage/cards/c/CalmingLicid.java
index 5a281528f41..adc5a76eef1 100644
--- a/Mage.Sets/src/mage/cards/c/CalmingLicid.java
+++ b/Mage.Sets/src/mage/cards/c/CalmingLicid.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class CalmingLicid extends CardImpl {
+public final class CalmingLicid extends CardImpl {
public CalmingLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CalmingVerse.java b/Mage.Sets/src/mage/cards/c/CalmingVerse.java
index 619ff31d5f4..08c46125889 100644
--- a/Mage.Sets/src/mage/cards/c/CalmingVerse.java
+++ b/Mage.Sets/src/mage/cards/c/CalmingVerse.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class CalmingVerse extends CardImpl {
+public final class CalmingVerse extends CardImpl {
public CalmingVerse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Caltrops.java b/Mage.Sets/src/mage/cards/c/Caltrops.java
index 8a0d55b95f1..04a10e43915 100644
--- a/Mage.Sets/src/mage/cards/c/Caltrops.java
+++ b/Mage.Sets/src/mage/cards/c/Caltrops.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
* @author LoneFox
*
*/
-public class Caltrops extends CardImpl {
+public final class Caltrops extends CardImpl {
public Caltrops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/c/Camel.java b/Mage.Sets/src/mage/cards/c/Camel.java
index e5dec0f990d..ab5eba93c43 100644
--- a/Mage.Sets/src/mage/cards/c/Camel.java
+++ b/Mage.Sets/src/mage/cards/c/Camel.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class Camel extends CardImpl {
+public final class Camel extends CardImpl {
public Camel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Camouflage.java b/Mage.Sets/src/mage/cards/c/Camouflage.java
index d7cc8a74190..ce5c7f30fe3 100644
--- a/Mage.Sets/src/mage/cards/c/Camouflage.java
+++ b/Mage.Sets/src/mage/cards/c/Camouflage.java
@@ -59,7 +59,7 @@ import mage.util.RandomUtil;
*
* @author L_J
*/
-public class Camouflage extends CardImpl {
+public final class Camouflage extends CardImpl {
public Camouflage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CampaignOfVengeance.java b/Mage.Sets/src/mage/cards/c/CampaignOfVengeance.java
index 6f087b53690..2635cb0b052 100644
--- a/Mage.Sets/src/mage/cards/c/CampaignOfVengeance.java
+++ b/Mage.Sets/src/mage/cards/c/CampaignOfVengeance.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class CampaignOfVengeance extends CardImpl {
+public final class CampaignOfVengeance extends CardImpl {
public CampaignOfVengeance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CanalCourier.java b/Mage.Sets/src/mage/cards/c/CanalCourier.java
index 4b064ba91e8..09528438fbd 100644
--- a/Mage.Sets/src/mage/cards/c/CanalCourier.java
+++ b/Mage.Sets/src/mage/cards/c/CanalCourier.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class CanalCourier extends CardImpl {
+public final class CanalCourier extends CardImpl {
public CanalCourier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CanalMonitor.java b/Mage.Sets/src/mage/cards/c/CanalMonitor.java
index 996c747b11c..a88c3b70929 100644
--- a/Mage.Sets/src/mage/cards/c/CanalMonitor.java
+++ b/Mage.Sets/src/mage/cards/c/CanalMonitor.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class CanalMonitor extends CardImpl {
+public final class CanalMonitor extends CardImpl {
public CanalMonitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Cancel.java b/Mage.Sets/src/mage/cards/c/Cancel.java
index e37e29b006d..49280a531da 100644
--- a/Mage.Sets/src/mage/cards/c/Cancel.java
+++ b/Mage.Sets/src/mage/cards/c/Cancel.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Cancel extends CardImpl {
+public final class Cancel extends CardImpl {
public Cancel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CandelabraOfTawnos.java b/Mage.Sets/src/mage/cards/c/CandelabraOfTawnos.java
index 4cbab1c4fc9..6607d0660fe 100644
--- a/Mage.Sets/src/mage/cards/c/CandelabraOfTawnos.java
+++ b/Mage.Sets/src/mage/cards/c/CandelabraOfTawnos.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author duncant
*/
-public class CandelabraOfTawnos extends CardImpl {
+public final class CandelabraOfTawnos extends CardImpl {
public CandelabraOfTawnos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/c/CandlesGlow.java b/Mage.Sets/src/mage/cards/c/CandlesGlow.java
index 5dd1a212fe8..08c85ae4883 100644
--- a/Mage.Sets/src/mage/cards/c/CandlesGlow.java
+++ b/Mage.Sets/src/mage/cards/c/CandlesGlow.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class CandlesGlow extends CardImpl {
+public final class CandlesGlow extends CardImpl {
public CandlesGlow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CandlesOfLeng.java b/Mage.Sets/src/mage/cards/c/CandlesOfLeng.java
index f7b4ad0e915..bcde27e329b 100644
--- a/Mage.Sets/src/mage/cards/c/CandlesOfLeng.java
+++ b/Mage.Sets/src/mage/cards/c/CandlesOfLeng.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class CandlesOfLeng extends CardImpl {
+public final class CandlesOfLeng extends CardImpl {
public CandlesOfLeng(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CankerAbomination.java b/Mage.Sets/src/mage/cards/c/CankerAbomination.java
index f70a36552cb..b5615ff04d0 100644
--- a/Mage.Sets/src/mage/cards/c/CankerAbomination.java
+++ b/Mage.Sets/src/mage/cards/c/CankerAbomination.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
* @author jeffwadsworth
*
*/
-public class CankerAbomination extends CardImpl {
+public final class CankerAbomination extends CardImpl {
public CankerAbomination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B/G}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/c/CankerousThirst.java b/Mage.Sets/src/mage/cards/c/CankerousThirst.java
index a26106f24d0..7ecbb8d9ab6 100644
--- a/Mage.Sets/src/mage/cards/c/CankerousThirst.java
+++ b/Mage.Sets/src/mage/cards/c/CankerousThirst.java
@@ -48,7 +48,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
* @author jeffwadsworth
*
*/
-public class CankerousThirst extends CardImpl {
+public final class CankerousThirst extends CardImpl {
public CankerousThirst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/c/Cannibalize.java b/Mage.Sets/src/mage/cards/c/Cannibalize.java
index 176e2c435c6..14de6329926 100644
--- a/Mage.Sets/src/mage/cards/c/Cannibalize.java
+++ b/Mage.Sets/src/mage/cards/c/Cannibalize.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanentSameController;
*
* @author LevelX2
*/
-public class Cannibalize extends CardImpl {
+public final class Cannibalize extends CardImpl {
public Cannibalize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CanopyClaws.java b/Mage.Sets/src/mage/cards/c/CanopyClaws.java
index 3be969acee3..bc0fbb4086d 100644
--- a/Mage.Sets/src/mage/cards/c/CanopyClaws.java
+++ b/Mage.Sets/src/mage/cards/c/CanopyClaws.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class CanopyClaws extends CardImpl {
+public final class CanopyClaws extends CardImpl {
public CanopyClaws(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CanopyCover.java b/Mage.Sets/src/mage/cards/c/CanopyCover.java
index 2af226423b7..da893ca8a22 100644
--- a/Mage.Sets/src/mage/cards/c/CanopyCover.java
+++ b/Mage.Sets/src/mage/cards/c/CanopyCover.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class CanopyCover extends CardImpl {
+public final class CanopyCover extends CardImpl {
private static final FilterObject filter = new FilterStackObject("spells or abilities your opponents control");
diff --git a/Mage.Sets/src/mage/cards/c/CanopyCrawler.java b/Mage.Sets/src/mage/cards/c/CanopyCrawler.java
index 0705e10d6b1..177b52c2aa9 100644
--- a/Mage.Sets/src/mage/cards/c/CanopyCrawler.java
+++ b/Mage.Sets/src/mage/cards/c/CanopyCrawler.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class CanopyCrawler extends CardImpl {
+public final class CanopyCrawler extends CardImpl {
public CanopyCrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CanopyDragon.java b/Mage.Sets/src/mage/cards/c/CanopyDragon.java
index 5b72046482b..26ec4bdfd5e 100644
--- a/Mage.Sets/src/mage/cards/c/CanopyDragon.java
+++ b/Mage.Sets/src/mage/cards/c/CanopyDragon.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class CanopyDragon extends CardImpl {
+public final class CanopyDragon extends CardImpl {
public CanopyDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CanopyGorger.java b/Mage.Sets/src/mage/cards/c/CanopyGorger.java
index 043a88d5efa..d421170f5aa 100644
--- a/Mage.Sets/src/mage/cards/c/CanopyGorger.java
+++ b/Mage.Sets/src/mage/cards/c/CanopyGorger.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CanopyGorger extends CardImpl {
+public final class CanopyGorger extends CardImpl {
public CanopyGorger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CanopySpider.java b/Mage.Sets/src/mage/cards/c/CanopySpider.java
index fdf5935a52d..60073b0b3af 100644
--- a/Mage.Sets/src/mage/cards/c/CanopySpider.java
+++ b/Mage.Sets/src/mage/cards/c/CanopySpider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CanopySpider extends CardImpl {
+public final class CanopySpider extends CardImpl {
public CanopySpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CanopySurge.java b/Mage.Sets/src/mage/cards/c/CanopySurge.java
index 51fac51679a..afe5f89ccab 100644
--- a/Mage.Sets/src/mage/cards/c/CanopySurge.java
+++ b/Mage.Sets/src/mage/cards/c/CanopySurge.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LoneFox
*/
-public class CanopySurge extends CardImpl {
+public final class CanopySurge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/c/CanopyVista.java b/Mage.Sets/src/mage/cards/c/CanopyVista.java
index cf404b51cb2..48eced9ef08 100644
--- a/Mage.Sets/src/mage/cards/c/CanopyVista.java
+++ b/Mage.Sets/src/mage/cards/c/CanopyVista.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
/**
* @author fireshoes
*/
-public class CanopyVista extends CardImpl {
+public final class CanopyVista extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/c/CantinaBand.java b/Mage.Sets/src/mage/cards/c/CantinaBand.java
index a032732c333..e95ad5c3190 100644
--- a/Mage.Sets/src/mage/cards/c/CantinaBand.java
+++ b/Mage.Sets/src/mage/cards/c/CantinaBand.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class CantinaBand extends CardImpl {
+public final class CantinaBand extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact creature");
diff --git a/Mage.Sets/src/mage/cards/c/Cantivore.java b/Mage.Sets/src/mage/cards/c/Cantivore.java
index d0e84ac5e5d..d89f8e68dc0 100644
--- a/Mage.Sets/src/mage/cards/c/Cantivore.java
+++ b/Mage.Sets/src/mage/cards/c/Cantivore.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Loki (Mortivore), cbt33
*/
-public class Cantivore extends CardImpl {
+public final class Cantivore extends CardImpl {
static final FilterCard filter = new FilterCard("enchantment cards");
diff --git a/Mage.Sets/src/mage/cards/c/CanyonDrake.java b/Mage.Sets/src/mage/cards/c/CanyonDrake.java
index 9b193d9eafd..c08b8dce29c 100644
--- a/Mage.Sets/src/mage/cards/c/CanyonDrake.java
+++ b/Mage.Sets/src/mage/cards/c/CanyonDrake.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class CanyonDrake extends CardImpl {
+public final class CanyonDrake extends CardImpl {
public CanyonDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CanyonLurkers.java b/Mage.Sets/src/mage/cards/c/CanyonLurkers.java
index c6bf3eacedc..3348f8f0b03 100644
--- a/Mage.Sets/src/mage/cards/c/CanyonLurkers.java
+++ b/Mage.Sets/src/mage/cards/c/CanyonLurkers.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CanyonLurkers extends CardImpl {
+public final class CanyonLurkers extends CardImpl {
public CanyonLurkers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CanyonMinotaur.java b/Mage.Sets/src/mage/cards/c/CanyonMinotaur.java
index c9e302841c2..82b90480a81 100644
--- a/Mage.Sets/src/mage/cards/c/CanyonMinotaur.java
+++ b/Mage.Sets/src/mage/cards/c/CanyonMinotaur.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CanyonMinotaur extends CardImpl {
+public final class CanyonMinotaur extends CardImpl {
public CanyonMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CanyonSlough.java b/Mage.Sets/src/mage/cards/c/CanyonSlough.java
index afb85dc2da1..31d21db1c8d 100644
--- a/Mage.Sets/src/mage/cards/c/CanyonSlough.java
+++ b/Mage.Sets/src/mage/cards/c/CanyonSlough.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CanyonSlough extends CardImpl {
+public final class CanyonSlough extends CardImpl {
public CanyonSlough(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/c/CanyonWildcat.java b/Mage.Sets/src/mage/cards/c/CanyonWildcat.java
index cfd6cfd963c..3f3845da3b4 100644
--- a/Mage.Sets/src/mage/cards/c/CanyonWildcat.java
+++ b/Mage.Sets/src/mage/cards/c/CanyonWildcat.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CanyonWildcat extends CardImpl {
+public final class CanyonWildcat extends CardImpl {
public CanyonWildcat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CaoCaoLordOfWei.java b/Mage.Sets/src/mage/cards/c/CaoCaoLordOfWei.java
index 963a94e8e6c..1d6b6717288 100644
--- a/Mage.Sets/src/mage/cards/c/CaoCaoLordOfWei.java
+++ b/Mage.Sets/src/mage/cards/c/CaoCaoLordOfWei.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class CaoCaoLordOfWei extends CardImpl {
+public final class CaoCaoLordOfWei extends CardImpl {
public CaoCaoLordOfWei(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CaoRenWeiCommander.java b/Mage.Sets/src/mage/cards/c/CaoRenWeiCommander.java
index 51735c9e713..5045550398a 100644
--- a/Mage.Sets/src/mage/cards/c/CaoRenWeiCommander.java
+++ b/Mage.Sets/src/mage/cards/c/CaoRenWeiCommander.java
@@ -42,7 +42,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class CaoRenWeiCommander extends CardImpl {
+public final class CaoRenWeiCommander extends CardImpl {
public CaoRenWeiCommander(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CapashenKnight.java b/Mage.Sets/src/mage/cards/c/CapashenKnight.java
index 4a76dad1835..08ad94558b5 100644
--- a/Mage.Sets/src/mage/cards/c/CapashenKnight.java
+++ b/Mage.Sets/src/mage/cards/c/CapashenKnight.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class CapashenKnight extends CardImpl {
+public final class CapashenKnight extends CardImpl {
public CapashenKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CapashenStandard.java b/Mage.Sets/src/mage/cards/c/CapashenStandard.java
index 1f6ac6206b6..8553af11ed0 100644
--- a/Mage.Sets/src/mage/cards/c/CapashenStandard.java
+++ b/Mage.Sets/src/mage/cards/c/CapashenStandard.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class CapashenStandard extends CardImpl {
+public final class CapashenStandard extends CardImpl {
public CapashenStandard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CapashenTemplar.java b/Mage.Sets/src/mage/cards/c/CapashenTemplar.java
index acd2c0d283d..9c4c55adad8 100644
--- a/Mage.Sets/src/mage/cards/c/CapashenTemplar.java
+++ b/Mage.Sets/src/mage/cards/c/CapashenTemplar.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class CapashenTemplar extends CardImpl {
+public final class CapashenTemplar extends CardImpl {
public CapashenTemplar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CapashenUnicorn.java b/Mage.Sets/src/mage/cards/c/CapashenUnicorn.java
index c76e8d881bd..14ab87ec133 100644
--- a/Mage.Sets/src/mage/cards/c/CapashenUnicorn.java
+++ b/Mage.Sets/src/mage/cards/c/CapashenUnicorn.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author anonymous
*/
-public class CapashenUnicorn extends CardImpl {
+public final class CapashenUnicorn extends CardImpl {
public CapashenUnicorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CapitalOffense.java b/Mage.Sets/src/mage/cards/c/CapitalOffense.java
index d6522a87965..cf395e0087b 100644
--- a/Mage.Sets/src/mage/cards/c/CapitalOffense.java
+++ b/Mage.Sets/src/mage/cards/c/CapitalOffense.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class CapitalOffense extends CardImpl {
+public final class CapitalOffense extends CardImpl {
public CapitalOffense(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}{B}");
@@ -86,10 +86,12 @@ class NumberOfCapitalsInTextOfTargetCreatureCount implements DynamicValue {
if (cards != null) {
for (CardInfo cardInfo : cards) {
Card dummy = cardInfo != null ? cardInfo.getCard() : null;
- for (String line : dummy.getRules()) {
- line = line.replaceAll("(?i)", ""); // Ignoring reminder text in italic
- line = line.replaceAll("\\{this\\}", permanent.getName());
- capitals += line.length() - line.replaceAll("[A-Z]", "").length();
+ if (dummy != null) {
+ for (String line : dummy.getRules()) {
+ line = line.replaceAll("(?i)", ""); // Ignoring reminder text in italic
+ line = line.replaceAll("\\{this\\}", permanent.getName());
+ capitals += line.length() - line.replaceAll("[A-Z]", "").length();
+ }
}
return -1 * capitals;
}
diff --git a/Mage.Sets/src/mage/cards/c/CapitalPunishment.java b/Mage.Sets/src/mage/cards/c/CapitalPunishment.java
index 8d88aef4fe8..d5ee306a152 100644
--- a/Mage.Sets/src/mage/cards/c/CapitalPunishment.java
+++ b/Mage.Sets/src/mage/cards/c/CapitalPunishment.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author JRHerlehy
*/
-public class CapitalPunishment extends CardImpl {
+public final class CapitalPunishment extends CardImpl {
public CapitalPunishment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CapriciousEfreet.java b/Mage.Sets/src/mage/cards/c/CapriciousEfreet.java
index d8bc117292c..a3da546b404 100644
--- a/Mage.Sets/src/mage/cards/c/CapriciousEfreet.java
+++ b/Mage.Sets/src/mage/cards/c/CapriciousEfreet.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author North
*/
-public class CapriciousEfreet extends CardImpl {
+public final class CapriciousEfreet extends CardImpl {
private static final FilterNonlandPermanent filterControlled = new FilterNonlandPermanent("nonland permanent you control");
private static final FilterNonlandPermanent filterNotControlled = new FilterNonlandPermanent("nonland permanent you don't control");
diff --git a/Mage.Sets/src/mage/cards/c/CapriciousSorcerer.java b/Mage.Sets/src/mage/cards/c/CapriciousSorcerer.java
index a482bab3da9..52643616837 100644
--- a/Mage.Sets/src/mage/cards/c/CapriciousSorcerer.java
+++ b/Mage.Sets/src/mage/cards/c/CapriciousSorcerer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class CapriciousSorcerer extends CardImpl {
+public final class CapriciousSorcerer extends CardImpl {
public CapriciousSorcerer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Capsize.java b/Mage.Sets/src/mage/cards/c/Capsize.java
index 8e179aea390..07b9cb3cc1c 100644
--- a/Mage.Sets/src/mage/cards/c/Capsize.java
+++ b/Mage.Sets/src/mage/cards/c/Capsize.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class Capsize extends CardImpl {
+public final class Capsize extends CardImpl {
public Capsize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CaptainLanneryStorm.java b/Mage.Sets/src/mage/cards/c/CaptainLanneryStorm.java
index 5f3b8bfe067..a1713c8b7af 100644
--- a/Mage.Sets/src/mage/cards/c/CaptainLanneryStorm.java
+++ b/Mage.Sets/src/mage/cards/c/CaptainLanneryStorm.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author TheElk801
*/
-public class CaptainLanneryStorm extends CardImpl {
+public final class CaptainLanneryStorm extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Treasure");
diff --git a/Mage.Sets/src/mage/cards/c/CaptainOfTheMists.java b/Mage.Sets/src/mage/cards/c/CaptainOfTheMists.java
index 7cd7fce1035..dbe87391f6f 100644
--- a/Mage.Sets/src/mage/cards/c/CaptainOfTheMists.java
+++ b/Mage.Sets/src/mage/cards/c/CaptainOfTheMists.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author noxx
*/
-public class CaptainOfTheMists extends CardImpl {
+public final class CaptainOfTheMists extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another Human");
diff --git a/Mage.Sets/src/mage/cards/c/CaptainOfTheWatch.java b/Mage.Sets/src/mage/cards/c/CaptainOfTheWatch.java
index 54c07f55a4c..d3a60b09ef7 100644
--- a/Mage.Sets/src/mage/cards/c/CaptainOfTheWatch.java
+++ b/Mage.Sets/src/mage/cards/c/CaptainOfTheWatch.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.SoldierToken;
/**
* @author Loki
*/
-public class CaptainOfTheWatch extends CardImpl {
+public final class CaptainOfTheWatch extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CaptainSisay.java b/Mage.Sets/src/mage/cards/c/CaptainSisay.java
index d8bb9ccdff1..a694707b2e7 100644
--- a/Mage.Sets/src/mage/cards/c/CaptainSisay.java
+++ b/Mage.Sets/src/mage/cards/c/CaptainSisay.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class CaptainSisay extends CardImpl {
+public final class CaptainSisay extends CardImpl {
private static final FilterCard filter = new FilterCard("legendary card");
diff --git a/Mage.Sets/src/mage/cards/c/CaptainsCall.java b/Mage.Sets/src/mage/cards/c/CaptainsCall.java
index db70d4971bf..9119695123a 100644
--- a/Mage.Sets/src/mage/cards/c/CaptainsCall.java
+++ b/Mage.Sets/src/mage/cards/c/CaptainsCall.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author Loki
*/
-public class CaptainsCall extends CardImpl {
+public final class CaptainsCall extends CardImpl {
public CaptainsCall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CaptainsClaws.java b/Mage.Sets/src/mage/cards/c/CaptainsClaws.java
index aa4241bc1b8..5d1417b9275 100644
--- a/Mage.Sets/src/mage/cards/c/CaptainsClaws.java
+++ b/Mage.Sets/src/mage/cards/c/CaptainsClaws.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.KorAllyToken;
*
* @author LevelX2
*/
-public class CaptainsClaws extends CardImpl {
+public final class CaptainsClaws extends CardImpl {
public CaptainsClaws(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CaptainsHook.java b/Mage.Sets/src/mage/cards/c/CaptainsHook.java
index 20df6b3c6cf..9cad7bdcaba 100644
--- a/Mage.Sets/src/mage/cards/c/CaptainsHook.java
+++ b/Mage.Sets/src/mage/cards/c/CaptainsHook.java
@@ -52,7 +52,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class CaptainsHook extends CardImpl {
+public final class CaptainsHook extends CardImpl {
public CaptainsHook(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CaptivatingCrew.java b/Mage.Sets/src/mage/cards/c/CaptivatingCrew.java
index ae87461a4f0..ae426439293 100644
--- a/Mage.Sets/src/mage/cards/c/CaptivatingCrew.java
+++ b/Mage.Sets/src/mage/cards/c/CaptivatingCrew.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class CaptivatingCrew extends CardImpl {
+public final class CaptivatingCrew extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/c/CaptivatingGlance.java b/Mage.Sets/src/mage/cards/c/CaptivatingGlance.java
index a05fdd7fdfa..0d8563843c7 100644
--- a/Mage.Sets/src/mage/cards/c/CaptivatingGlance.java
+++ b/Mage.Sets/src/mage/cards/c/CaptivatingGlance.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class CaptivatingGlance extends CardImpl {
+public final class CaptivatingGlance extends CardImpl {
public CaptivatingGlance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java b/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java
index fa95df40510..8c7fde5be65 100644
--- a/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java
+++ b/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CaptivatingVampire extends CardImpl {
+public final class CaptivatingVampire extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Vampire creatures");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("untapped Vampires you control");
diff --git a/Mage.Sets/src/mage/cards/c/CaptiveFlame.java b/Mage.Sets/src/mage/cards/c/CaptiveFlame.java
index d1d31420da2..a2e373c4cb6 100644
--- a/Mage.Sets/src/mage/cards/c/CaptiveFlame.java
+++ b/Mage.Sets/src/mage/cards/c/CaptiveFlame.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CaptiveFlame extends CardImpl {
+public final class CaptiveFlame extends CardImpl {
public CaptiveFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Capture.java b/Mage.Sets/src/mage/cards/c/Capture.java
index b791a281e53..0fc9403daa4 100644
--- a/Mage.Sets/src/mage/cards/c/Capture.java
+++ b/Mage.Sets/src/mage/cards/c/Capture.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class Capture extends CardImpl {
+public final class Capture extends CardImpl {
public Capture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CaptureOfJingzhou.java b/Mage.Sets/src/mage/cards/c/CaptureOfJingzhou.java
index a11a6ac8009..fb6381119cb 100644
--- a/Mage.Sets/src/mage/cards/c/CaptureOfJingzhou.java
+++ b/Mage.Sets/src/mage/cards/c/CaptureOfJingzhou.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class CaptureOfJingzhou extends CardImpl {
+public final class CaptureOfJingzhou extends CardImpl {
public CaptureOfJingzhou(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java b/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java
index 302dc5bf426..00c17e8a32e 100644
--- a/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java
+++ b/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class CapturedByTheConsulate extends CardImpl {
+public final class CapturedByTheConsulate extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/c/CapturedSunlight.java b/Mage.Sets/src/mage/cards/c/CapturedSunlight.java
index fe0bc997c38..443fb5d44bc 100644
--- a/Mage.Sets/src/mage/cards/c/CapturedSunlight.java
+++ b/Mage.Sets/src/mage/cards/c/CapturedSunlight.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class CapturedSunlight extends CardImpl {
+public final class CapturedSunlight extends CardImpl {
public CapturedSunlight (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Carapace.java b/Mage.Sets/src/mage/cards/c/Carapace.java
index cd8fd5609ae..16fb26cd555 100644
--- a/Mage.Sets/src/mage/cards/c/Carapace.java
+++ b/Mage.Sets/src/mage/cards/c/Carapace.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class Carapace extends CardImpl {
+public final class Carapace extends CardImpl {
public Carapace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CarapaceForger.java b/Mage.Sets/src/mage/cards/c/CarapaceForger.java
index 7c9d135b867..24ed914a9ec 100644
--- a/Mage.Sets/src/mage/cards/c/CarapaceForger.java
+++ b/Mage.Sets/src/mage/cards/c/CarapaceForger.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class CarapaceForger extends CardImpl {
+public final class CarapaceForger extends CardImpl {
private static final String text = "Metalcraft - Carapace Forger gets +2/+2 as long as you control three or more artifacts";
public CarapaceForger (UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/c/CaravanEscort.java b/Mage.Sets/src/mage/cards/c/CaravanEscort.java
index 1ee6fec3e86..eb97f754d42 100644
--- a/Mage.Sets/src/mage/cards/c/CaravanEscort.java
+++ b/Mage.Sets/src/mage/cards/c/CaravanEscort.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CaravanEscort extends LevelerCard {
+public final class CaravanEscort extends LevelerCard {
public CaravanEscort(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CaravanHurda.java b/Mage.Sets/src/mage/cards/c/CaravanHurda.java
index 5892cc4cb0a..373d960b893 100644
--- a/Mage.Sets/src/mage/cards/c/CaravanHurda.java
+++ b/Mage.Sets/src/mage/cards/c/CaravanHurda.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CaravanHurda extends CardImpl {
+public final class CaravanHurda extends CardImpl {
public CaravanHurda (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CaravanVigil.java b/Mage.Sets/src/mage/cards/c/CaravanVigil.java
index 019d2703201..599ef834f93 100644
--- a/Mage.Sets/src/mage/cards/c/CaravanVigil.java
+++ b/Mage.Sets/src/mage/cards/c/CaravanVigil.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class CaravanVigil extends CardImpl {
+public final class CaravanVigil extends CardImpl {
public CaravanVigil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
@@ -88,7 +88,7 @@ class CaravanVigilEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
MageObject sourceObject = source.getSourceObject(game);
if (sourceObject != null && controller != null) {
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, game)) {
Card card = controller.getLibrary().getCard(target.getFirstTarget(), game);
if (card != null) {
diff --git a/Mage.Sets/src/mage/cards/c/CarboniteChamber.java b/Mage.Sets/src/mage/cards/c/CarboniteChamber.java
index e1303447970..6a4ef907b83 100644
--- a/Mage.Sets/src/mage/cards/c/CarboniteChamber.java
+++ b/Mage.Sets/src/mage/cards/c/CarboniteChamber.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class CarboniteChamber extends CardImpl {
+public final class CarboniteChamber extends CardImpl {
public CarboniteChamber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Carbonize.java b/Mage.Sets/src/mage/cards/c/Carbonize.java
index fc5381ca808..3e4178863bf 100644
--- a/Mage.Sets/src/mage/cards/c/Carbonize.java
+++ b/Mage.Sets/src/mage/cards/c/Carbonize.java
@@ -42,7 +42,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author markedagain
*/
-public class Carbonize extends CardImpl {
+public final class Carbonize extends CardImpl {
public Carbonize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CarefulConsideration.java b/Mage.Sets/src/mage/cards/c/CarefulConsideration.java
index e07c2e07e9b..3585b262e92 100644
--- a/Mage.Sets/src/mage/cards/c/CarefulConsideration.java
+++ b/Mage.Sets/src/mage/cards/c/CarefulConsideration.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class CarefulConsideration extends CardImpl {
+public final class CarefulConsideration extends CardImpl {
public CarefulConsideration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CarefulStudy.java b/Mage.Sets/src/mage/cards/c/CarefulStudy.java
index 65334d90b66..daecbbd16da 100644
--- a/Mage.Sets/src/mage/cards/c/CarefulStudy.java
+++ b/Mage.Sets/src/mage/cards/c/CarefulStudy.java
@@ -36,7 +36,7 @@ import mage.constants.CardType;
/**
* @author magenoxx_at_gmail.com
*/
-public class CarefulStudy extends CardImpl {
+public final class CarefulStudy extends CardImpl {
public CarefulStudy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Caregiver.java b/Mage.Sets/src/mage/cards/c/Caregiver.java
index b974fd7b4ec..8c010445c13 100644
--- a/Mage.Sets/src/mage/cards/c/Caregiver.java
+++ b/Mage.Sets/src/mage/cards/c/Caregiver.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class Caregiver extends CardImpl {
+public final class Caregiver extends CardImpl {
public Caregiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CaressOfPhyrexia.java b/Mage.Sets/src/mage/cards/c/CaressOfPhyrexia.java
index 754720922df..641e634f962 100644
--- a/Mage.Sets/src/mage/cards/c/CaressOfPhyrexia.java
+++ b/Mage.Sets/src/mage/cards/c/CaressOfPhyrexia.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class CaressOfPhyrexia extends CardImpl {
+public final class CaressOfPhyrexia extends CardImpl {
public CaressOfPhyrexia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CaribouRange.java b/Mage.Sets/src/mage/cards/c/CaribouRange.java
index 6f02cee6abf..2d3d4f1e33f 100644
--- a/Mage.Sets/src/mage/cards/c/CaribouRange.java
+++ b/Mage.Sets/src/mage/cards/c/CaribouRange.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class CaribouRange extends CardImpl {
+public final class CaribouRange extends CardImpl {
static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Caribou token");
diff --git a/Mage.Sets/src/mage/cards/c/CarnageAltar.java b/Mage.Sets/src/mage/cards/c/CarnageAltar.java
index 56a91a51fe3..8113e70f2d1 100644
--- a/Mage.Sets/src/mage/cards/c/CarnageAltar.java
+++ b/Mage.Sets/src/mage/cards/c/CarnageAltar.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class CarnageAltar extends CardImpl {
+public final class CarnageAltar extends CardImpl {
public CarnageAltar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CarnageGladiator.java b/Mage.Sets/src/mage/cards/c/CarnageGladiator.java
index a6cb836388f..d4234ecf305 100644
--- a/Mage.Sets/src/mage/cards/c/CarnageGladiator.java
+++ b/Mage.Sets/src/mage/cards/c/CarnageGladiator.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
-public class CarnageGladiator extends CardImpl {
+public final class CarnageGladiator extends CardImpl {
public CarnageGladiator (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CarnageTyrant.java b/Mage.Sets/src/mage/cards/c/CarnageTyrant.java
index 65769dbb242..e8af755ac8c 100644
--- a/Mage.Sets/src/mage/cards/c/CarnageTyrant.java
+++ b/Mage.Sets/src/mage/cards/c/CarnageTyrant.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author TheElk801
*/
-public class CarnageTyrant extends CardImpl {
+public final class CarnageTyrant extends CardImpl {
public CarnageTyrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CarnageWurm.java b/Mage.Sets/src/mage/cards/c/CarnageWurm.java
index 033a8c5f9ca..e8c810e861a 100644
--- a/Mage.Sets/src/mage/cards/c/CarnageWurm.java
+++ b/Mage.Sets/src/mage/cards/c/CarnageWurm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CarnageWurm extends CardImpl {
+public final class CarnageWurm extends CardImpl {
public CarnageWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Carnassid.java b/Mage.Sets/src/mage/cards/c/Carnassid.java
index ac8fae99615..386e43ed640 100644
--- a/Mage.Sets/src/mage/cards/c/Carnassid.java
+++ b/Mage.Sets/src/mage/cards/c/Carnassid.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class Carnassid extends CardImpl {
+public final class Carnassid extends CardImpl {
public Carnassid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CarnifexDemon.java b/Mage.Sets/src/mage/cards/c/CarnifexDemon.java
index ed40d382416..4e395d5ba7e 100644
--- a/Mage.Sets/src/mage/cards/c/CarnifexDemon.java
+++ b/Mage.Sets/src/mage/cards/c/CarnifexDemon.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class CarnifexDemon extends CardImpl {
+public final class CarnifexDemon extends CardImpl {
public CarnifexDemon (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CarnivalHellsteed.java b/Mage.Sets/src/mage/cards/c/CarnivalHellsteed.java
index be7a3edde41..d7183d3c5d7 100644
--- a/Mage.Sets/src/mage/cards/c/CarnivalHellsteed.java
+++ b/Mage.Sets/src/mage/cards/c/CarnivalHellsteed.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CarnivalHellsteed extends CardImpl {
+public final class CarnivalHellsteed extends CardImpl {
public CarnivalHellsteed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CarnivalOfSouls.java b/Mage.Sets/src/mage/cards/c/CarnivalOfSouls.java
index edd9eacaf8a..85874fffe80 100644
--- a/Mage.Sets/src/mage/cards/c/CarnivalOfSouls.java
+++ b/Mage.Sets/src/mage/cards/c/CarnivalOfSouls.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Galatolol
*/
-public class CarnivalOfSouls extends CardImpl {
+public final class CarnivalOfSouls extends CardImpl {
public CarnivalOfSouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CarnivorousMossBeast.java b/Mage.Sets/src/mage/cards/c/CarnivorousMossBeast.java
index b67dbb3a77a..6a98ab30236 100644
--- a/Mage.Sets/src/mage/cards/c/CarnivorousMossBeast.java
+++ b/Mage.Sets/src/mage/cards/c/CarnivorousMossBeast.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class CarnivorousMossBeast extends CardImpl {
+public final class CarnivorousMossBeast extends CardImpl {
public CarnivorousMossBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CarnivorousPlant.java b/Mage.Sets/src/mage/cards/c/CarnivorousPlant.java
index 5f136ba96e0..0681f4766d0 100644
--- a/Mage.Sets/src/mage/cards/c/CarnivorousPlant.java
+++ b/Mage.Sets/src/mage/cards/c/CarnivorousPlant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CarnivorousPlant extends CardImpl {
+public final class CarnivorousPlant extends CardImpl {
public CarnivorousPlant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Carnophage.java b/Mage.Sets/src/mage/cards/c/Carnophage.java
index f0c38a2b085..9dc0a84eecd 100644
--- a/Mage.Sets/src/mage/cards/c/Carnophage.java
+++ b/Mage.Sets/src/mage/cards/c/Carnophage.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class Carnophage extends CardImpl {
+public final class Carnophage extends CardImpl {
public Carnophage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Carom.java b/Mage.Sets/src/mage/cards/c/Carom.java
index bb6dc4e1c36..d651b58d594 100644
--- a/Mage.Sets/src/mage/cards/c/Carom.java
+++ b/Mage.Sets/src/mage/cards/c/Carom.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Skyler Sell
*/
-public class Carom extends CardImpl {
+public final class Carom extends CardImpl {
public Carom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java b/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java
index 7d9da21db24..4f6c02e313b 100644
--- a/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java
+++ b/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class CarpetOfFlowers extends CardImpl {
+public final class CarpetOfFlowers extends CardImpl {
public CarpetOfFlowers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CarrierPigeons.java b/Mage.Sets/src/mage/cards/c/CarrierPigeons.java
index 862f30eef55..144e01c5c1c 100644
--- a/Mage.Sets/src/mage/cards/c/CarrierPigeons.java
+++ b/Mage.Sets/src/mage/cards/c/CarrierPigeons.java
@@ -44,7 +44,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class CarrierPigeons extends CardImpl {
+public final class CarrierPigeons extends CardImpl {
public CarrierPigeons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CarrierThrall.java b/Mage.Sets/src/mage/cards/c/CarrierThrall.java
index 6ecd711a180..7f66a075605 100644
--- a/Mage.Sets/src/mage/cards/c/CarrierThrall.java
+++ b/Mage.Sets/src/mage/cards/c/CarrierThrall.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author LevelX2
*/
-public class CarrierThrall extends CardImpl {
+public final class CarrierThrall extends CardImpl {
public CarrierThrall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Carrion.java b/Mage.Sets/src/mage/cards/c/Carrion.java
index 15a835f3ae0..e40b6c1fc88 100644
--- a/Mage.Sets/src/mage/cards/c/Carrion.java
+++ b/Mage.Sets/src/mage/cards/c/Carrion.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class Carrion extends CardImpl {
+public final class Carrion extends CardImpl {
public Carrion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CarrionAnts.java b/Mage.Sets/src/mage/cards/c/CarrionAnts.java
index dc68247ed6b..eab9a2d43bb 100644
--- a/Mage.Sets/src/mage/cards/c/CarrionAnts.java
+++ b/Mage.Sets/src/mage/cards/c/CarrionAnts.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class CarrionAnts extends CardImpl {
+public final class CarrionAnts extends CardImpl {
public CarrionAnts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CarrionBeetles.java b/Mage.Sets/src/mage/cards/c/CarrionBeetles.java
index ee5f54f7978..70ac3717ca6 100644
--- a/Mage.Sets/src/mage/cards/c/CarrionBeetles.java
+++ b/Mage.Sets/src/mage/cards/c/CarrionBeetles.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author fireshoes
*/
-public class CarrionBeetles extends CardImpl {
+public final class CarrionBeetles extends CardImpl {
public CarrionBeetles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CarrionCall.java b/Mage.Sets/src/mage/cards/c/CarrionCall.java
index a025c6e16ca..54d6b559af9 100644
--- a/Mage.Sets/src/mage/cards/c/CarrionCall.java
+++ b/Mage.Sets/src/mage/cards/c/CarrionCall.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.InsectInfectToken;
*
* @author Loki
*/
-public class CarrionCall extends CardImpl {
+public final class CarrionCall extends CardImpl {
public CarrionCall (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CarrionCrow.java b/Mage.Sets/src/mage/cards/c/CarrionCrow.java
index 41ab77069b9..5a78a7d8a0e 100644
--- a/Mage.Sets/src/mage/cards/c/CarrionCrow.java
+++ b/Mage.Sets/src/mage/cards/c/CarrionCrow.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class CarrionCrow extends CardImpl {
+public final class CarrionCrow extends CardImpl {
public CarrionCrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CarrionFeeder.java b/Mage.Sets/src/mage/cards/c/CarrionFeeder.java
index e2ed83634fd..63993e53775 100644
--- a/Mage.Sets/src/mage/cards/c/CarrionFeeder.java
+++ b/Mage.Sets/src/mage/cards/c/CarrionFeeder.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jonubuu
*/
-public class CarrionFeeder extends CardImpl {
+public final class CarrionFeeder extends CardImpl {
public CarrionFeeder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CarrionHowler.java b/Mage.Sets/src/mage/cards/c/CarrionHowler.java
index 811eff9b304..eb69bca507b 100644
--- a/Mage.Sets/src/mage/cards/c/CarrionHowler.java
+++ b/Mage.Sets/src/mage/cards/c/CarrionHowler.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class CarrionHowler extends CardImpl {
+public final class CarrionHowler extends CardImpl {
public CarrionHowler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CarrionScreecher.java b/Mage.Sets/src/mage/cards/c/CarrionScreecher.java
index e83b3d82108..98433180fac 100644
--- a/Mage.Sets/src/mage/cards/c/CarrionScreecher.java
+++ b/Mage.Sets/src/mage/cards/c/CarrionScreecher.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CarrionScreecher extends CardImpl {
+public final class CarrionScreecher extends CardImpl {
public CarrionScreecher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CarrionThrash.java b/Mage.Sets/src/mage/cards/c/CarrionThrash.java
index 20be521a24a..f889b55088c 100644
--- a/Mage.Sets/src/mage/cards/c/CarrionThrash.java
+++ b/Mage.Sets/src/mage/cards/c/CarrionThrash.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class CarrionThrash extends CardImpl {
+public final class CarrionThrash extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("another creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/c/CarrionWall.java b/Mage.Sets/src/mage/cards/c/CarrionWall.java
index ead46934203..537c255fab5 100644
--- a/Mage.Sets/src/mage/cards/c/CarrionWall.java
+++ b/Mage.Sets/src/mage/cards/c/CarrionWall.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class CarrionWall extends CardImpl {
+public final class CarrionWall extends CardImpl {
public CarrionWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Carrionette.java b/Mage.Sets/src/mage/cards/c/Carrionette.java
index cfef1b9a75c..63a6286d6f6 100644
--- a/Mage.Sets/src/mage/cards/c/Carrionette.java
+++ b/Mage.Sets/src/mage/cards/c/Carrionette.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Carrionette extends CardImpl {
+public final class Carrionette extends CardImpl {
public Carrionette(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CarryAway.java b/Mage.Sets/src/mage/cards/c/CarryAway.java
index d5db9da4654..ee17c177f7e 100644
--- a/Mage.Sets/src/mage/cards/c/CarryAway.java
+++ b/Mage.Sets/src/mage/cards/c/CarryAway.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class CarryAway extends CardImpl {
+public final class CarryAway extends CardImpl {
public CarryAway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CartelAristocrat.java b/Mage.Sets/src/mage/cards/c/CartelAristocrat.java
index 32a08d3d471..ed542ef6b02 100644
--- a/Mage.Sets/src/mage/cards/c/CartelAristocrat.java
+++ b/Mage.Sets/src/mage/cards/c/CartelAristocrat.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class CartelAristocrat extends CardImpl {
+public final class CartelAristocrat extends CardImpl {
public CartelAristocrat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Cartographer.java b/Mage.Sets/src/mage/cards/c/Cartographer.java
index e8f4c1dabc5..9063da37992 100644
--- a/Mage.Sets/src/mage/cards/c/Cartographer.java
+++ b/Mage.Sets/src/mage/cards/c/Cartographer.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author cbt33
*/
-public class Cartographer extends CardImpl {
+public final class Cartographer extends CardImpl {
public Cartographer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CartoucheOfAmbition.java b/Mage.Sets/src/mage/cards/c/CartoucheOfAmbition.java
index 459bf7a4789..45681c6fe98 100644
--- a/Mage.Sets/src/mage/cards/c/CartoucheOfAmbition.java
+++ b/Mage.Sets/src/mage/cards/c/CartoucheOfAmbition.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class CartoucheOfAmbition extends CardImpl {
+public final class CartoucheOfAmbition extends CardImpl {
public CartoucheOfAmbition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CartoucheOfKnowledge.java b/Mage.Sets/src/mage/cards/c/CartoucheOfKnowledge.java
index cf0373d6cac..895a444f110 100644
--- a/Mage.Sets/src/mage/cards/c/CartoucheOfKnowledge.java
+++ b/Mage.Sets/src/mage/cards/c/CartoucheOfKnowledge.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class CartoucheOfKnowledge extends CardImpl {
+public final class CartoucheOfKnowledge extends CardImpl {
public CartoucheOfKnowledge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CartoucheOfSolidarity.java b/Mage.Sets/src/mage/cards/c/CartoucheOfSolidarity.java
index 2b1d1e39116..d61e1173f9e 100644
--- a/Mage.Sets/src/mage/cards/c/CartoucheOfSolidarity.java
+++ b/Mage.Sets/src/mage/cards/c/CartoucheOfSolidarity.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class CartoucheOfSolidarity extends CardImpl {
+public final class CartoucheOfSolidarity extends CardImpl {
public CartoucheOfSolidarity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CartoucheOfStrength.java b/Mage.Sets/src/mage/cards/c/CartoucheOfStrength.java
index 661797a8710..3a2321363c9 100644
--- a/Mage.Sets/src/mage/cards/c/CartoucheOfStrength.java
+++ b/Mage.Sets/src/mage/cards/c/CartoucheOfStrength.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author stravant
*/
-public class CartoucheOfStrength extends CardImpl {
+public final class CartoucheOfStrength extends CardImpl {
public CartoucheOfStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CartoucheOfZeal.java b/Mage.Sets/src/mage/cards/c/CartoucheOfZeal.java
index 79bdbbc4d0f..f44e1882ac6 100644
--- a/Mage.Sets/src/mage/cards/c/CartoucheOfZeal.java
+++ b/Mage.Sets/src/mage/cards/c/CartoucheOfZeal.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class CartoucheOfZeal extends CardImpl {
+public final class CartoucheOfZeal extends CardImpl {
public CartoucheOfZeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CarvenCaryatid.java b/Mage.Sets/src/mage/cards/c/CarvenCaryatid.java
index 993abb647ef..9ceceb03934 100644
--- a/Mage.Sets/src/mage/cards/c/CarvenCaryatid.java
+++ b/Mage.Sets/src/mage/cards/c/CarvenCaryatid.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CarvenCaryatid extends CardImpl {
+public final class CarvenCaryatid extends CardImpl {
public CarvenCaryatid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CascadeBluffs.java b/Mage.Sets/src/mage/cards/c/CascadeBluffs.java
index af0444a1a95..1e2e7487e41 100644
--- a/Mage.Sets/src/mage/cards/c/CascadeBluffs.java
+++ b/Mage.Sets/src/mage/cards/c/CascadeBluffs.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class CascadeBluffs extends CardImpl {
+public final class CascadeBluffs extends CardImpl {
public CascadeBluffs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/c/CascadingCataracts.java b/Mage.Sets/src/mage/cards/c/CascadingCataracts.java
index cb6d9925f28..903de16fd15 100644
--- a/Mage.Sets/src/mage/cards/c/CascadingCataracts.java
+++ b/Mage.Sets/src/mage/cards/c/CascadingCataracts.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author spjspj
*/
-public class CascadingCataracts extends CardImpl {
+public final class CascadingCataracts extends CardImpl {
public CascadingCataracts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/c/CastDown.java b/Mage.Sets/src/mage/cards/c/CastDown.java
index d40e4aa6375..7d331602253 100644
--- a/Mage.Sets/src/mage/cards/c/CastDown.java
+++ b/Mage.Sets/src/mage/cards/c/CastDown.java
@@ -12,7 +12,7 @@ import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
-public class CastDown extends CardImpl {
+public final class CastDown extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonlegendary creature");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CastIntoDarkness.java b/Mage.Sets/src/mage/cards/c/CastIntoDarkness.java
index 29c4aa924dd..d2ead9f1ad1 100644
--- a/Mage.Sets/src/mage/cards/c/CastIntoDarkness.java
+++ b/Mage.Sets/src/mage/cards/c/CastIntoDarkness.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CastIntoDarkness extends CardImpl {
+public final class CastIntoDarkness extends CardImpl {
public CastIntoDarkness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CastOut.java b/Mage.Sets/src/mage/cards/c/CastOut.java
index d65e85cac3b..434e9f4f3c0 100644
--- a/Mage.Sets/src/mage/cards/c/CastOut.java
+++ b/Mage.Sets/src/mage/cards/c/CastOut.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class CastOut extends CardImpl {
+public final class CastOut extends CardImpl {
private final static FilterNonlandPermanent filter = new FilterNonlandPermanent();
diff --git a/Mage.Sets/src/mage/cards/c/CastThroughTime.java b/Mage.Sets/src/mage/cards/c/CastThroughTime.java
index 075c415df4a..7ef8c87d364 100644
--- a/Mage.Sets/src/mage/cards/c/CastThroughTime.java
+++ b/Mage.Sets/src/mage/cards/c/CastThroughTime.java
@@ -51,7 +51,7 @@ import java.util.UUID;
/**
* @author magenoxx_at_gmail.com
*/
-public class CastThroughTime extends CardImpl {
+public final class CastThroughTime extends CardImpl {
protected static final FilterCard filter = new FilterCard("Instant and sorcery spells you control");
diff --git a/Mage.Sets/src/mage/cards/c/CastawaysDespair.java b/Mage.Sets/src/mage/cards/c/CastawaysDespair.java
index 1ce5c09d57f..3a8b945e2c7 100644
--- a/Mage.Sets/src/mage/cards/c/CastawaysDespair.java
+++ b/Mage.Sets/src/mage/cards/c/CastawaysDespair.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class CastawaysDespair extends CardImpl {
+public final class CastawaysDespair extends CardImpl {
public CastawaysDespair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Castigate.java b/Mage.Sets/src/mage/cards/c/Castigate.java
index ede9dd764a5..f36afb98932 100644
--- a/Mage.Sets/src/mage/cards/c/Castigate.java
+++ b/Mage.Sets/src/mage/cards/c/Castigate.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponent;
*
* @author dustinconrad
*/
-public class Castigate extends CardImpl {
+public final class Castigate extends CardImpl {
public Castigate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CastingOfBones.java b/Mage.Sets/src/mage/cards/c/CastingOfBones.java
index 2ade0cadee4..652a8fdc8c8 100644
--- a/Mage.Sets/src/mage/cards/c/CastingOfBones.java
+++ b/Mage.Sets/src/mage/cards/c/CastingOfBones.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author AMWJ
*/
-public class CastingOfBones extends CardImpl {
+public final class CastingOfBones extends CardImpl {
public CastingOfBones(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Castle.java b/Mage.Sets/src/mage/cards/c/Castle.java
index f0728a5884a..cf7557f03fb 100644
--- a/Mage.Sets/src/mage/cards/c/Castle.java
+++ b/Mage.Sets/src/mage/cards/c/Castle.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterUntappedCreature;
* @author KholdFuzion
*/
-public class Castle extends CardImpl {
+public final class Castle extends CardImpl {
public Castle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CastleRaptors.java b/Mage.Sets/src/mage/cards/c/CastleRaptors.java
index e60a1192cd6..1af4f2a6fc6 100644
--- a/Mage.Sets/src/mage/cards/c/CastleRaptors.java
+++ b/Mage.Sets/src/mage/cards/c/CastleRaptors.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class CastleRaptors extends CardImpl {
+public final class CastleRaptors extends CardImpl {
public CastleRaptors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CastleSengir.java b/Mage.Sets/src/mage/cards/c/CastleSengir.java
index 20af9b1bae0..65611066eff 100644
--- a/Mage.Sets/src/mage/cards/c/CastleSengir.java
+++ b/Mage.Sets/src/mage/cards/c/CastleSengir.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class CastleSengir extends CardImpl {
+public final class CastleSengir extends CardImpl {
public CastleSengir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CatBurglar.java b/Mage.Sets/src/mage/cards/c/CatBurglar.java
index 65369adf343..16fb2b0df7f 100644
--- a/Mage.Sets/src/mage/cards/c/CatBurglar.java
+++ b/Mage.Sets/src/mage/cards/c/CatBurglar.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class CatBurglar extends CardImpl {
+public final class CatBurglar extends CardImpl {
public CatBurglar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CatWarriors.java b/Mage.Sets/src/mage/cards/c/CatWarriors.java
index 1d096ee5b44..bd23d347495 100644
--- a/Mage.Sets/src/mage/cards/c/CatWarriors.java
+++ b/Mage.Sets/src/mage/cards/c/CatWarriors.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CatWarriors extends CardImpl {
+public final class CatWarriors extends CardImpl {
public CatWarriors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Cataclysm.java b/Mage.Sets/src/mage/cards/c/Cataclysm.java
index af938d0f1c6..d4fcf0ed8ec 100644
--- a/Mage.Sets/src/mage/cards/c/Cataclysm.java
+++ b/Mage.Sets/src/mage/cards/c/Cataclysm.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class Cataclysm extends CardImpl {
+public final class Cataclysm extends CardImpl {
public Cataclysm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CataclysmicGearhulk.java b/Mage.Sets/src/mage/cards/c/CataclysmicGearhulk.java
index 785c8f4a27b..59562860f9b 100644
--- a/Mage.Sets/src/mage/cards/c/CataclysmicGearhulk.java
+++ b/Mage.Sets/src/mage/cards/c/CataclysmicGearhulk.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class CataclysmicGearhulk extends CardImpl {
+public final class CataclysmicGearhulk extends CardImpl {
public CataclysmicGearhulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CatacombSifter.java b/Mage.Sets/src/mage/cards/c/CatacombSifter.java
index d4bd6c5b149..7a903d9029e 100644
--- a/Mage.Sets/src/mage/cards/c/CatacombSifter.java
+++ b/Mage.Sets/src/mage/cards/c/CatacombSifter.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author fireshoes
*/
-public class CatacombSifter extends CardImpl {
+public final class CatacombSifter extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CatacombSlug.java b/Mage.Sets/src/mage/cards/c/CatacombSlug.java
index fa2b0a6c8ce..8c8715a7671 100644
--- a/Mage.Sets/src/mage/cards/c/CatacombSlug.java
+++ b/Mage.Sets/src/mage/cards/c/CatacombSlug.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CatacombSlug extends CardImpl {
+public final class CatacombSlug extends CardImpl {
public CatacombSlug(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Catalog.java b/Mage.Sets/src/mage/cards/c/Catalog.java
index cd85e8ceac7..202ac4d8bdd 100644
--- a/Mage.Sets/src/mage/cards/c/Catalog.java
+++ b/Mage.Sets/src/mage/cards/c/Catalog.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Backfir3
*/
-public class Catalog extends CardImpl {
+public final class Catalog extends CardImpl {
public Catalog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CatalystElemental.java b/Mage.Sets/src/mage/cards/c/CatalystElemental.java
new file mode 100644
index 00000000000..3b5c9fbd89d
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/c/CatalystElemental.java
@@ -0,0 +1,66 @@
+/*
+ * 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.Mana;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.mana.SimpleManaAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class CatalystElemental extends CardImpl {
+
+ public CatalystElemental(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
+
+ this.subtype.add(SubType.ELEMENTAL);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Sacrifice Catalyst Elemental: Add {R}{R}.
+ this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.RedMana(2), new SacrificeSourceCost()));
+ }
+
+ public CatalystElemental(final CatalystElemental card) {
+ super(card);
+ }
+
+ @Override
+ public CatalystElemental copy() {
+ return new CatalystElemental(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/c/CatalystStone.java b/Mage.Sets/src/mage/cards/c/CatalystStone.java
index d5ce0d565a8..f0ae795a3ab 100644
--- a/Mage.Sets/src/mage/cards/c/CatalystStone.java
+++ b/Mage.Sets/src/mage/cards/c/CatalystStone.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class CatalystStone extends CardImpl {
+public final class CatalystStone extends CardImpl {
public CatalystStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CatapultMaster.java b/Mage.Sets/src/mage/cards/c/CatapultMaster.java
index 1395c1f8490..ba94da66108 100644
--- a/Mage.Sets/src/mage/cards/c/CatapultMaster.java
+++ b/Mage.Sets/src/mage/cards/c/CatapultMaster.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CatapultMaster extends CardImpl {
+public final class CatapultMaster extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Soldiers you control");
diff --git a/Mage.Sets/src/mage/cards/c/CatapultSquad.java b/Mage.Sets/src/mage/cards/c/CatapultSquad.java
index cb78655d000..5f1e649ffa4 100644
--- a/Mage.Sets/src/mage/cards/c/CatapultSquad.java
+++ b/Mage.Sets/src/mage/cards/c/CatapultSquad.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class CatapultSquad extends CardImpl {
+public final class CatapultSquad extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Soldiers you control");
diff --git a/Mage.Sets/src/mage/cards/c/Catastrophe.java b/Mage.Sets/src/mage/cards/c/Catastrophe.java
index 57f926ab0d9..6eb6158efc9 100644
--- a/Mage.Sets/src/mage/cards/c/Catastrophe.java
+++ b/Mage.Sets/src/mage/cards/c/Catastrophe.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class Catastrophe extends CardImpl {
+public final class Catastrophe extends CardImpl {
public Catastrophe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CatchRelease.java b/Mage.Sets/src/mage/cards/c/CatchRelease.java
index 6b7f771e430..cc3848afdd1 100644
--- a/Mage.Sets/src/mage/cards/c/CatchRelease.java
+++ b/Mage.Sets/src/mage/cards/c/CatchRelease.java
@@ -52,7 +52,7 @@ import mage.target.Target;
import mage.target.TargetPermanent;
import mage.target.common.TargetControlledPermanent;
-public class CatchRelease extends SplitCard {
+public final class CatchRelease extends SplitCard {
public CatchRelease(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}{R}", "{4}{R}{W}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/c/CateranBrute.java b/Mage.Sets/src/mage/cards/c/CateranBrute.java
index 8cb25d80c4f..4e8cc71a651 100644
--- a/Mage.Sets/src/mage/cards/c/CateranBrute.java
+++ b/Mage.Sets/src/mage/cards/c/CateranBrute.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class CateranBrute extends CardImpl {
+public final class CateranBrute extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 2 or less");
diff --git a/Mage.Sets/src/mage/cards/c/CateranEnforcer.java b/Mage.Sets/src/mage/cards/c/CateranEnforcer.java
index fff5bdf1142..fe0a9e30e8c 100644
--- a/Mage.Sets/src/mage/cards/c/CateranEnforcer.java
+++ b/Mage.Sets/src/mage/cards/c/CateranEnforcer.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class CateranEnforcer extends CardImpl {
+public final class CateranEnforcer extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 4 or less");
diff --git a/Mage.Sets/src/mage/cards/c/CateranKidnappers.java b/Mage.Sets/src/mage/cards/c/CateranKidnappers.java
index d8becc6885c..8eae61dbf22 100644
--- a/Mage.Sets/src/mage/cards/c/CateranKidnappers.java
+++ b/Mage.Sets/src/mage/cards/c/CateranKidnappers.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author Backfir3
*/
-public class CateranKidnappers extends CardImpl {
+public final class CateranKidnappers extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/c/CateranOverlord.java b/Mage.Sets/src/mage/cards/c/CateranOverlord.java
index 486b59b39a7..05dc6d39ac2 100644
--- a/Mage.Sets/src/mage/cards/c/CateranOverlord.java
+++ b/Mage.Sets/src/mage/cards/c/CateranOverlord.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Backfir3
*/
-public class CateranOverlord extends CardImpl {
+public final class CateranOverlord extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 6 or less");
diff --git a/Mage.Sets/src/mage/cards/c/CateranPersuader.java b/Mage.Sets/src/mage/cards/c/CateranPersuader.java
index bdc63e53abb..0bfd0457707 100644
--- a/Mage.Sets/src/mage/cards/c/CateranPersuader.java
+++ b/Mage.Sets/src/mage/cards/c/CateranPersuader.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class CateranPersuader extends CardImpl {
+public final class CateranPersuader extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 1 or less");
diff --git a/Mage.Sets/src/mage/cards/c/CateranSlaver.java b/Mage.Sets/src/mage/cards/c/CateranSlaver.java
index 120ccdabda8..fabcc379e25 100644
--- a/Mage.Sets/src/mage/cards/c/CateranSlaver.java
+++ b/Mage.Sets/src/mage/cards/c/CateranSlaver.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class CateranSlaver extends CardImpl {
+public final class CateranSlaver extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 5 or less");
diff --git a/Mage.Sets/src/mage/cards/c/CateranSummons.java b/Mage.Sets/src/mage/cards/c/CateranSummons.java
index 1d5038387ea..6b038d752df 100644
--- a/Mage.Sets/src/mage/cards/c/CateranSummons.java
+++ b/Mage.Sets/src/mage/cards/c/CateranSummons.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class CateranSummons extends CardImpl {
+public final class CateranSummons extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("Mercenary card");
diff --git a/Mage.Sets/src/mage/cards/c/CaterwaulingBoggart.java b/Mage.Sets/src/mage/cards/c/CaterwaulingBoggart.java
index 23593081c23..64c3361ada7 100644
--- a/Mage.Sets/src/mage/cards/c/CaterwaulingBoggart.java
+++ b/Mage.Sets/src/mage/cards/c/CaterwaulingBoggart.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class CaterwaulingBoggart extends CardImpl {
+public final class CaterwaulingBoggart extends CardImpl {
private static final FilterPermanent filterGoblin = new FilterControlledCreaturePermanent("Goblin");
private static final FilterPermanent filterElemental = new FilterControlledCreaturePermanent("Elemental");
diff --git a/Mage.Sets/src/mage/cards/c/CatharsCompanion.java b/Mage.Sets/src/mage/cards/c/CatharsCompanion.java
index 58910324db1..14ec6933cfb 100644
--- a/Mage.Sets/src/mage/cards/c/CatharsCompanion.java
+++ b/Mage.Sets/src/mage/cards/c/CatharsCompanion.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class CatharsCompanion extends CardImpl {
+public final class CatharsCompanion extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CatharsCrusade.java b/Mage.Sets/src/mage/cards/c/CatharsCrusade.java
index 4211b8597a5..2c5e43fd8c3 100644
--- a/Mage.Sets/src/mage/cards/c/CatharsCrusade.java
+++ b/Mage.Sets/src/mage/cards/c/CatharsCrusade.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Loki
*/
-public class CatharsCrusade extends CardImpl {
+public final class CatharsCrusade extends CardImpl {
public CatharsCrusade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CatharsShield.java b/Mage.Sets/src/mage/cards/c/CatharsShield.java
index ce1690e4298..63abd070ad6 100644
--- a/Mage.Sets/src/mage/cards/c/CatharsShield.java
+++ b/Mage.Sets/src/mage/cards/c/CatharsShield.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class CatharsShield extends CardImpl {
+public final class CatharsShield extends CardImpl {
public CatharsShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/c/CatharticAdept.java b/Mage.Sets/src/mage/cards/c/CatharticAdept.java
index 8b51f4fd507..65662281024 100644
--- a/Mage.Sets/src/mage/cards/c/CatharticAdept.java
+++ b/Mage.Sets/src/mage/cards/c/CatharticAdept.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class CatharticAdept extends CardImpl {
+public final class CatharticAdept extends CardImpl {
public CatharticAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CatharticReunion.java b/Mage.Sets/src/mage/cards/c/CatharticReunion.java
index 907ff8090ec..3e67292acb0 100644
--- a/Mage.Sets/src/mage/cards/c/CatharticReunion.java
+++ b/Mage.Sets/src/mage/cards/c/CatharticReunion.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class CatharticReunion extends CardImpl {
+public final class CatharticReunion extends CardImpl {
public CatharticReunion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CathedralMembrane.java b/Mage.Sets/src/mage/cards/c/CathedralMembrane.java
index 1167df0bcde..4b397bf7e46 100644
--- a/Mage.Sets/src/mage/cards/c/CathedralMembrane.java
+++ b/Mage.Sets/src/mage/cards/c/CathedralMembrane.java
@@ -44,7 +44,7 @@ import mage.watchers.Watcher;
/**
* @author BetaSteward
*/
-public class CathedralMembrane extends CardImpl {
+public final class CathedralMembrane extends CardImpl {
public CathedralMembrane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{W/P}");
diff --git a/Mage.Sets/src/mage/cards/c/CathedralOfWar.java b/Mage.Sets/src/mage/cards/c/CathedralOfWar.java
index 182ee8a8458..64f0a80aa91 100644
--- a/Mage.Sets/src/mage/cards/c/CathedralOfWar.java
+++ b/Mage.Sets/src/mage/cards/c/CathedralOfWar.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author jeffwadsworth
*/
-public class CathedralOfWar extends CardImpl {
+public final class CathedralOfWar extends CardImpl {
public CathedralOfWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CathedralSanctifier.java b/Mage.Sets/src/mage/cards/c/CathedralSanctifier.java
index 9a5c0b33dfe..b7fdfaf33ad 100644
--- a/Mage.Sets/src/mage/cards/c/CathedralSanctifier.java
+++ b/Mage.Sets/src/mage/cards/c/CathedralSanctifier.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CathedralSanctifier extends CardImpl {
+public final class CathedralSanctifier extends CardImpl {
public CathedralSanctifier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Cathodion.java b/Mage.Sets/src/mage/cards/c/Cathodion.java
index 39e7c0079a5..09c6940c7f6 100644
--- a/Mage.Sets/src/mage/cards/c/Cathodion.java
+++ b/Mage.Sets/src/mage/cards/c/Cathodion.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class Cathodion extends CardImpl {
+public final class Cathodion extends CardImpl {
public Cathodion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CaughtInTheBrights.java b/Mage.Sets/src/mage/cards/c/CaughtInTheBrights.java
index d38016f7701..d36072f6a9a 100644
--- a/Mage.Sets/src/mage/cards/c/CaughtInTheBrights.java
+++ b/Mage.Sets/src/mage/cards/c/CaughtInTheBrights.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class CaughtInTheBrights extends CardImpl {
+public final class CaughtInTheBrights extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vehicle you control");
diff --git a/Mage.Sets/src/mage/cards/c/CauldronDance.java b/Mage.Sets/src/mage/cards/c/CauldronDance.java
index f73c8b083a3..61ec935a244 100644
--- a/Mage.Sets/src/mage/cards/c/CauldronDance.java
+++ b/Mage.Sets/src/mage/cards/c/CauldronDance.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author nomage
*/
-public class CauldronDance extends CardImpl {
+public final class CauldronDance extends CardImpl {
public CauldronDance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CauldronHaze.java b/Mage.Sets/src/mage/cards/c/CauldronHaze.java
index 6521ec0c8c2..085b31fc176 100644
--- a/Mage.Sets/src/mage/cards/c/CauldronHaze.java
+++ b/Mage.Sets/src/mage/cards/c/CauldronHaze.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class CauldronHaze extends CardImpl {
+public final class CauldronHaze extends CardImpl {
private final String rule = "Choose any number of target creatures. Each of those creatures gains persist until end of turn";
diff --git a/Mage.Sets/src/mage/cards/c/CauldronOfSouls.java b/Mage.Sets/src/mage/cards/c/CauldronOfSouls.java
index ece08ea9413..1b070762967 100644
--- a/Mage.Sets/src/mage/cards/c/CauldronOfSouls.java
+++ b/Mage.Sets/src/mage/cards/c/CauldronOfSouls.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class CauldronOfSouls extends CardImpl {
+public final class CauldronOfSouls extends CardImpl {
public CauldronOfSouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/c/CausticCaterpillar.java b/Mage.Sets/src/mage/cards/c/CausticCaterpillar.java
index 123b6840930..81a1fe23268 100644
--- a/Mage.Sets/src/mage/cards/c/CausticCaterpillar.java
+++ b/Mage.Sets/src/mage/cards/c/CausticCaterpillar.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class CausticCaterpillar extends CardImpl {
+public final class CausticCaterpillar extends CardImpl {
public CausticCaterpillar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CausticCrawler.java b/Mage.Sets/src/mage/cards/c/CausticCrawler.java
index 449a07455cc..09a09508773 100644
--- a/Mage.Sets/src/mage/cards/c/CausticCrawler.java
+++ b/Mage.Sets/src/mage/cards/c/CausticCrawler.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class CausticCrawler extends CardImpl {
+public final class CausticCrawler extends CardImpl {
public CausticCrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CausticHound.java b/Mage.Sets/src/mage/cards/c/CausticHound.java
index 79def2d6454..6ec19fd50ae 100644
--- a/Mage.Sets/src/mage/cards/c/CausticHound.java
+++ b/Mage.Sets/src/mage/cards/c/CausticHound.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CausticHound extends CardImpl {
+public final class CausticHound extends CardImpl {
public CausticHound (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CausticRain.java b/Mage.Sets/src/mage/cards/c/CausticRain.java
index b7d2aea2876..04ea2ec642e 100644
--- a/Mage.Sets/src/mage/cards/c/CausticRain.java
+++ b/Mage.Sets/src/mage/cards/c/CausticRain.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki
*/
-public class CausticRain extends CardImpl {
+public final class CausticRain extends CardImpl {
public CausticRain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CausticTar.java b/Mage.Sets/src/mage/cards/c/CausticTar.java
index 63eaa002ea8..5c236c216b8 100644
--- a/Mage.Sets/src/mage/cards/c/CausticTar.java
+++ b/Mage.Sets/src/mage/cards/c/CausticTar.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author cbt33, LevelX2 (Sea's Claim), LevelX2 (Pollenbright Wings)
*/
-public class CausticTar extends CardImpl {
+public final class CausticTar extends CardImpl {
public CausticTar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CausticWasps.java b/Mage.Sets/src/mage/cards/c/CausticWasps.java
index cd654977483..54a7d935f0a 100644
--- a/Mage.Sets/src/mage/cards/c/CausticWasps.java
+++ b/Mage.Sets/src/mage/cards/c/CausticWasps.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author Mitchel Stein
*/
-public class CausticWasps extends CardImpl {
+public final class CausticWasps extends CardImpl {
public CausticWasps(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CauterySliver.java b/Mage.Sets/src/mage/cards/c/CauterySliver.java
index 9827edb2868..f0c37a2fb7d 100644
--- a/Mage.Sets/src/mage/cards/c/CauterySliver.java
+++ b/Mage.Sets/src/mage/cards/c/CauterySliver.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author anonymous
*/
-public class CauterySliver extends CardImpl {
+public final class CauterySliver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers");
diff --git a/Mage.Sets/src/mage/cards/c/CavalryMaster.java b/Mage.Sets/src/mage/cards/c/CavalryMaster.java
index 6d201730641..a0af8250b75 100644
--- a/Mage.Sets/src/mage/cards/c/CavalryMaster.java
+++ b/Mage.Sets/src/mage/cards/c/CavalryMaster.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author Plopman
*/
-public class CavalryMaster extends CardImpl {
+public final class CavalryMaster extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control with flanking");
diff --git a/Mage.Sets/src/mage/cards/c/CavalryPegasus.java b/Mage.Sets/src/mage/cards/c/CavalryPegasus.java
index 78019738542..4fbab858438 100644
--- a/Mage.Sets/src/mage/cards/c/CavalryPegasus.java
+++ b/Mage.Sets/src/mage/cards/c/CavalryPegasus.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.AttackingPredicate;
*
* @author LevelX2
*/
-public class CavalryPegasus extends CardImpl {
+public final class CavalryPegasus extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("each attacking Human");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CaveIn.java b/Mage.Sets/src/mage/cards/c/CaveIn.java
index a774eff235a..dd1adda66df 100644
--- a/Mage.Sets/src/mage/cards/c/CaveIn.java
+++ b/Mage.Sets/src/mage/cards/c/CaveIn.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class CaveIn extends CardImpl {
+public final class CaveIn extends CardImpl {
public CaveIn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CavePeople.java b/Mage.Sets/src/mage/cards/c/CavePeople.java
index 843feac6236..31ff2e47899 100644
--- a/Mage.Sets/src/mage/cards/c/CavePeople.java
+++ b/Mage.Sets/src/mage/cards/c/CavePeople.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CavePeople extends CardImpl {
+public final class CavePeople extends CardImpl {
public CavePeople(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CaveSense.java b/Mage.Sets/src/mage/cards/c/CaveSense.java
index c9968fa9ef2..ba3d131d04e 100644
--- a/Mage.Sets/src/mage/cards/c/CaveSense.java
+++ b/Mage.Sets/src/mage/cards/c/CaveSense.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CaveSense extends CardImpl {
+public final class CaveSense extends CardImpl {
public CaveSense(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CaveTiger.java b/Mage.Sets/src/mage/cards/c/CaveTiger.java
index b25f58d3e4f..568ddcd425a 100644
--- a/Mage.Sets/src/mage/cards/c/CaveTiger.java
+++ b/Mage.Sets/src/mage/cards/c/CaveTiger.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Backfir3
*/
-public class CaveTiger extends CardImpl {
+public final class CaveTiger extends CardImpl {
public CaveTiger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CavernCrawler.java b/Mage.Sets/src/mage/cards/c/CavernCrawler.java
index 7a36cdde60d..f888aa70f4a 100644
--- a/Mage.Sets/src/mage/cards/c/CavernCrawler.java
+++ b/Mage.Sets/src/mage/cards/c/CavernCrawler.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class CavernCrawler extends CardImpl {
+public final class CavernCrawler extends CardImpl {
public CavernCrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CavernHarpy.java b/Mage.Sets/src/mage/cards/c/CavernHarpy.java
index d46b06dd695..51f4922ced6 100644
--- a/Mage.Sets/src/mage/cards/c/CavernHarpy.java
+++ b/Mage.Sets/src/mage/cards/c/CavernHarpy.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class CavernHarpy extends CardImpl {
+public final class CavernHarpy extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("blue or black creature you control");
diff --git a/Mage.Sets/src/mage/cards/c/CavernLampad.java b/Mage.Sets/src/mage/cards/c/CavernLampad.java
index 2f55077885f..6067815bea0 100644
--- a/Mage.Sets/src/mage/cards/c/CavernLampad.java
+++ b/Mage.Sets/src/mage/cards/c/CavernLampad.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class CavernLampad extends CardImpl {
+public final class CavernLampad extends CardImpl {
public CavernLampad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CavernOfSouls.java b/Mage.Sets/src/mage/cards/c/CavernOfSouls.java
index 66811e2a834..21b728d765a 100644
--- a/Mage.Sets/src/mage/cards/c/CavernOfSouls.java
+++ b/Mage.Sets/src/mage/cards/c/CavernOfSouls.java
@@ -57,7 +57,7 @@ import mage.watchers.Watcher;
*
* @author noxx
*/
-public class CavernOfSouls extends CardImpl {
+public final class CavernOfSouls extends CardImpl {
public CavernOfSouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/c/CavernThoctar.java b/Mage.Sets/src/mage/cards/c/CavernThoctar.java
index be75bd9c321..ab40b3637c9 100644
--- a/Mage.Sets/src/mage/cards/c/CavernThoctar.java
+++ b/Mage.Sets/src/mage/cards/c/CavernThoctar.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class CavernThoctar extends CardImpl {
+public final class CavernThoctar extends CardImpl {
public CavernThoctar (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CavernsOfDespair.java b/Mage.Sets/src/mage/cards/c/CavernsOfDespair.java
index fbfffffd5c7..b0dabf3648d 100644
--- a/Mage.Sets/src/mage/cards/c/CavernsOfDespair.java
+++ b/Mage.Sets/src/mage/cards/c/CavernsOfDespair.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class CavernsOfDespair extends CardImpl {
+public final class CavernsOfDespair extends CardImpl {
public CavernsOfDespair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CavesOfKoilos.java b/Mage.Sets/src/mage/cards/c/CavesOfKoilos.java
index 6648dd47bc0..d873d19b7b8 100644
--- a/Mage.Sets/src/mage/cards/c/CavesOfKoilos.java
+++ b/Mage.Sets/src/mage/cards/c/CavesOfKoilos.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class CavesOfKoilos extends CardImpl {
+public final class CavesOfKoilos extends CardImpl {
public CavesOfKoilos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CeaseFire.java b/Mage.Sets/src/mage/cards/c/CeaseFire.java
index 086ea949ff7..b5f8b2ec110 100644
--- a/Mage.Sets/src/mage/cards/c/CeaseFire.java
+++ b/Mage.Sets/src/mage/cards/c/CeaseFire.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth (Steel Golem), cbt33
*/
-public class CeaseFire extends CardImpl {
+public final class CeaseFire extends CardImpl {
public CeaseFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CeaselessSearblades.java b/Mage.Sets/src/mage/cards/c/CeaselessSearblades.java
index cb537005931..1258e11e2df 100644
--- a/Mage.Sets/src/mage/cards/c/CeaselessSearblades.java
+++ b/Mage.Sets/src/mage/cards/c/CeaselessSearblades.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author Will
*/
-public class CeaselessSearblades extends CardImpl {
+public final class CeaselessSearblades extends CardImpl {
public CeaselessSearblades(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialAncient.java b/Mage.Sets/src/mage/cards/c/CelestialAncient.java
index 3e227cf29b6..adce60bc7c9 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialAncient.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialAncient.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class CelestialAncient extends CardImpl {
+public final class CelestialAncient extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an enchantment spell");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CelestialArchon.java b/Mage.Sets/src/mage/cards/c/CelestialArchon.java
index 013ddb60e97..61ac0b4a646 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialArchon.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialArchon.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class CelestialArchon extends CardImpl {
+public final class CelestialArchon extends CardImpl {
public CelestialArchon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialColonnade.java b/Mage.Sets/src/mage/cards/c/CelestialColonnade.java
index 99b2a16486c..0305e58240e 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialColonnade.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialColonnade.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class CelestialColonnade extends CardImpl {
+public final class CelestialColonnade extends CardImpl {
public CelestialColonnade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/c/CelestialConvergence.java b/Mage.Sets/src/mage/cards/c/CelestialConvergence.java
index 4acdfa85c43..3ebe966f928 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialConvergence.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialConvergence.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class CelestialConvergence extends CardImpl {
+public final class CelestialConvergence extends CardImpl {
public CelestialConvergence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialCrusader.java b/Mage.Sets/src/mage/cards/c/CelestialCrusader.java
index 239bbec96f6..1c84bb5a1bc 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialCrusader.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialCrusader.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class CelestialCrusader extends CardImpl {
+public final class CelestialCrusader extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialDawn.java b/Mage.Sets/src/mage/cards/c/CelestialDawn.java
index f0e43ddb42c..2fffa36b164 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialDawn.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialDawn.java
@@ -48,13 +48,13 @@ import mage.game.permanent.Permanent;
import mage.game.stack.Spell;
import mage.players.ManaPoolItem;
import mage.players.Player;
-import mage.sets.Commander;
+import mage.game.command.Commander;
/**
*
* @author LevelX2
*/
-public class CelestialDawn extends CardImpl {
+public final class CelestialDawn extends CardImpl {
public CelestialDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialFlare.java b/Mage.Sets/src/mage/cards/c/CelestialFlare.java
index 4669d7e2fd3..3693259c885 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialFlare.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialFlare.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class CelestialFlare extends CardImpl {
+public final class CelestialFlare extends CardImpl {
private static final FilterAttackingOrBlockingCreature filter = new FilterAttackingOrBlockingCreature("attacking or blocking creature");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialForce.java b/Mage.Sets/src/mage/cards/c/CelestialForce.java
index bc0fd97d8ae..d4fce4c5fd0 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialForce.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialForce.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class CelestialForce extends CardImpl {
+public final class CelestialForce extends CardImpl {
public CelestialForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialGatekeeper.java b/Mage.Sets/src/mage/cards/c/CelestialGatekeeper.java
index b3b76035f9c..7244ff172c3 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialGatekeeper.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialGatekeeper.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author TheElk801
*/
-public class CelestialGatekeeper extends CardImpl {
+public final class CelestialGatekeeper extends CardImpl {
private static final FilterCard filter = new FilterCard("Bird and/or Cleric permanent cards");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialKirin.java b/Mage.Sets/src/mage/cards/c/CelestialKirin.java
index 3082e74b94d..91f820e26be 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialKirin.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialKirin.java
@@ -47,7 +47,7 @@ import mage.game.stack.Spell;
*
* @author LevelX2
*/
-public class CelestialKirin extends CardImpl {
+public final class CelestialKirin extends CardImpl {
public CelestialKirin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialMantle.java b/Mage.Sets/src/mage/cards/c/CelestialMantle.java
index 5fa64c03fae..3672c693472 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialMantle.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialMantle.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CelestialMantle extends CardImpl {
+public final class CelestialMantle extends CardImpl {
public CelestialMantle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialPrism.java b/Mage.Sets/src/mage/cards/c/CelestialPrism.java
index 738ad08eb77..80d6c4b9221 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialPrism.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialPrism.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author icetc
*/
-public class CelestialPrism extends CardImpl {
+public final class CelestialPrism extends CardImpl {
public CelestialPrism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialPurge.java b/Mage.Sets/src/mage/cards/c/CelestialPurge.java
index 558bddb7462..c865ae1e1ad 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialPurge.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialPurge.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CelestialPurge extends CardImpl {
+public final class CelestialPurge extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("black or red permanent");
diff --git a/Mage.Sets/src/mage/cards/c/CelestialSword.java b/Mage.Sets/src/mage/cards/c/CelestialSword.java
index 2ab1ca60eb3..12b73412883 100644
--- a/Mage.Sets/src/mage/cards/c/CelestialSword.java
+++ b/Mage.Sets/src/mage/cards/c/CelestialSword.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author choiseul11
*/
-public class CelestialSword extends CardImpl {
+public final class CelestialSword extends CardImpl {
public CelestialSword(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/c/CellarDoor.java b/Mage.Sets/src/mage/cards/c/CellarDoor.java
index c1d8caa09ee..5c3d849bdfc 100644
--- a/Mage.Sets/src/mage/cards/c/CellarDoor.java
+++ b/Mage.Sets/src/mage/cards/c/CellarDoor.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class CellarDoor extends CardImpl {
+public final class CellarDoor extends CardImpl {
public CellarDoor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CemeteryGate.java b/Mage.Sets/src/mage/cards/c/CemeteryGate.java
index 3868f76310f..855c26eb8ff 100644
--- a/Mage.Sets/src/mage/cards/c/CemeteryGate.java
+++ b/Mage.Sets/src/mage/cards/c/CemeteryGate.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CemeteryGate extends CardImpl {
+public final class CemeteryGate extends CardImpl {
public CemeteryGate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CemeteryPuca.java b/Mage.Sets/src/mage/cards/c/CemeteryPuca.java
index 07519be9742..23a97d2ead0 100644
--- a/Mage.Sets/src/mage/cards/c/CemeteryPuca.java
+++ b/Mage.Sets/src/mage/cards/c/CemeteryPuca.java
@@ -53,7 +53,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author jeffwadsworth
*/
-public class CemeteryPuca extends CardImpl {
+public final class CemeteryPuca extends CardImpl {
public CemeteryPuca(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U/B}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/c/CemeteryReaper.java b/Mage.Sets/src/mage/cards/c/CemeteryReaper.java
index ec0e2a679c3..31f1a539c9a 100644
--- a/Mage.Sets/src/mage/cards/c/CemeteryReaper.java
+++ b/Mage.Sets/src/mage/cards/c/CemeteryReaper.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInGraveyard;
/**
* @author Loki
*/
-public class CemeteryReaper extends CardImpl {
+public final class CemeteryReaper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CemeteryRecruitment.java b/Mage.Sets/src/mage/cards/c/CemeteryRecruitment.java
index 0363af2e674..3926b95214e 100644
--- a/Mage.Sets/src/mage/cards/c/CemeteryRecruitment.java
+++ b/Mage.Sets/src/mage/cards/c/CemeteryRecruitment.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class CemeteryRecruitment extends CardImpl {
+public final class CemeteryRecruitment extends CardImpl {
public CemeteryRecruitment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CennsEnlistment.java b/Mage.Sets/src/mage/cards/c/CennsEnlistment.java
index ce7cd03a5e7..be9919b9d10 100644
--- a/Mage.Sets/src/mage/cards/c/CennsEnlistment.java
+++ b/Mage.Sets/src/mage/cards/c/CennsEnlistment.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.KithkinToken;
*
* @author Plopman
*/
-public class CennsEnlistment extends CardImpl {
+public final class CennsEnlistment extends CardImpl {
public CennsEnlistment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CennsHeir.java b/Mage.Sets/src/mage/cards/c/CennsHeir.java
index e0174a7d698..17e43caa85d 100644
--- a/Mage.Sets/src/mage/cards/c/CennsHeir.java
+++ b/Mage.Sets/src/mage/cards/c/CennsHeir.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LoneFox
*/
-public class CennsHeir extends CardImpl {
+public final class CennsHeir extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Kithkin");
diff --git a/Mage.Sets/src/mage/cards/c/CennsTactician.java b/Mage.Sets/src/mage/cards/c/CennsTactician.java
index 99ffeb0441b..21f5a4ad47d 100644
--- a/Mage.Sets/src/mage/cards/c/CennsTactician.java
+++ b/Mage.Sets/src/mage/cards/c/CennsTactician.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class CennsTactician extends CardImpl {
+public final class CennsTactician extends CardImpl {
private static final FilterCreaturePermanent filterSoldier = new FilterCreaturePermanent("Soldier creature");
private static final FilterControlledCreaturePermanent filterCounter = new FilterControlledCreaturePermanent("Each creature you control with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/c/Censor.java b/Mage.Sets/src/mage/cards/c/Censor.java
index 25441b412a5..52563c8ba0c 100644
--- a/Mage.Sets/src/mage/cards/c/Censor.java
+++ b/Mage.Sets/src/mage/cards/c/Censor.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class Censor extends CardImpl {
+public final class Censor extends CardImpl {
public Censor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CentaurArcher.java b/Mage.Sets/src/mage/cards/c/CentaurArcher.java
index 719170613ec..789814154a5 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurArcher.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurArcher.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class CentaurArcher extends CardImpl {
+public final class CentaurArcher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/c/CentaurBattlemaster.java b/Mage.Sets/src/mage/cards/c/CentaurBattlemaster.java
index 3bc0c6aeba9..2776e9ea4d3 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurBattlemaster.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurBattlemaster.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class CentaurBattlemaster extends CardImpl {
+public final class CentaurBattlemaster extends CardImpl {
public CentaurBattlemaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CentaurChieftain.java b/Mage.Sets/src/mage/cards/c/CentaurChieftain.java
index 832e20cbe69..7292135d74b 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurChieftain.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurChieftain.java
@@ -53,7 +53,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class CentaurChieftain extends CardImpl {
+public final class CentaurChieftain extends CardImpl {
public CentaurChieftain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CentaurCourser.java b/Mage.Sets/src/mage/cards/c/CentaurCourser.java
index 96ee0874727..6d2d4ba133d 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurCourser.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurCourser.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CentaurCourser extends CardImpl {
+public final class CentaurCourser extends CardImpl {
public CentaurCourser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CentaurGarden.java b/Mage.Sets/src/mage/cards/c/CentaurGarden.java
index 5825b9657d8..897e5e80b52 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurGarden.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurGarden.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CentaurGarden extends CardImpl {
+public final class CentaurGarden extends CardImpl {
public CentaurGarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CentaurGlade.java b/Mage.Sets/src/mage/cards/c/CentaurGlade.java
index e17adfb2be6..ef9158d1b85 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurGlade.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurGlade.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.CentaurToken;
*
* @author fireshoes
*/
-public class CentaurGlade extends CardImpl {
+public final class CentaurGlade extends CardImpl {
public CentaurGlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CentaurHealer.java b/Mage.Sets/src/mage/cards/c/CentaurHealer.java
index 2fbd1bab2bd..2e5efdce09f 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurHealer.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurHealer.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CentaurHealer extends CardImpl {
+public final class CentaurHealer extends CardImpl {
public CentaurHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CentaurOmenreader.java b/Mage.Sets/src/mage/cards/c/CentaurOmenreader.java
index 40dea7f8bf7..1146ded2034 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurOmenreader.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurOmenreader.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class CentaurOmenreader extends CardImpl {
+public final class CentaurOmenreader extends CardImpl {
private static final FilterCard filter = new FilterCard("creature spells");
diff --git a/Mage.Sets/src/mage/cards/c/CentaurRootcaster.java b/Mage.Sets/src/mage/cards/c/CentaurRootcaster.java
index b175792f0cd..f10351cddfc 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurRootcaster.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurRootcaster.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class CentaurRootcaster extends CardImpl {
+public final class CentaurRootcaster extends CardImpl {
public CentaurRootcaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
@@ -54,7 +54,7 @@ public class CentaurRootcaster extends CardImpl {
// Whenever Centaur Rootcaster deals combat damage to a player, you may search your library for a basic land card and put that card onto the battlefield tapped. If you do, shuffle your library.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
true));
}
diff --git a/Mage.Sets/src/mage/cards/c/CentaurSafeguard.java b/Mage.Sets/src/mage/cards/c/CentaurSafeguard.java
index f7381ad3e9a..e9e66568b68 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurSafeguard.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurSafeguard.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CentaurSafeguard extends CardImpl {
+public final class CentaurSafeguard extends CardImpl {
public CentaurSafeguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/c/CentaurVeteran.java b/Mage.Sets/src/mage/cards/c/CentaurVeteran.java
index d59a07fb933..cc27eec4ec3 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurVeteran.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurVeteran.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class CentaurVeteran extends CardImpl {
+public final class CentaurVeteran extends CardImpl {
public CentaurVeteran(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CentaurVinecrasher.java b/Mage.Sets/src/mage/cards/c/CentaurVinecrasher.java
index 4704ee770ec..018320386d6 100644
--- a/Mage.Sets/src/mage/cards/c/CentaurVinecrasher.java
+++ b/Mage.Sets/src/mage/cards/c/CentaurVinecrasher.java
@@ -52,7 +52,7 @@ import mage.filter.common.FilterLandCard;
*
* @author LevelX2
*/
-public class CentaurVinecrasher extends CardImpl {
+public final class CentaurVinecrasher extends CardImpl {
public CentaurVinecrasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CentaursHerald.java b/Mage.Sets/src/mage/cards/c/CentaursHerald.java
index 204fca9be5a..f5e7e227b96 100644
--- a/Mage.Sets/src/mage/cards/c/CentaursHerald.java
+++ b/Mage.Sets/src/mage/cards/c/CentaursHerald.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.CentaurToken;
*
* @author LevelX2
*/
-public class CentaursHerald extends CardImpl {
+public final class CentaursHerald extends CardImpl {
public CentaursHerald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CenterSoul.java b/Mage.Sets/src/mage/cards/c/CenterSoul.java
index cc0d02732de..22366d2209d 100644
--- a/Mage.Sets/src/mage/cards/c/CenterSoul.java
+++ b/Mage.Sets/src/mage/cards/c/CenterSoul.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class CenterSoul extends CardImpl {
+public final class CenterSoul extends CardImpl {
public CenterSoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidAristocrat.java b/Mage.Sets/src/mage/cards/c/CephalidAristocrat.java
index 7ca4f11d079..f916c9c1b31 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidAristocrat.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidAristocrat.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CephalidAristocrat extends CardImpl {
+public final class CephalidAristocrat extends CardImpl {
public CephalidAristocrat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidBroker.java b/Mage.Sets/src/mage/cards/c/CephalidBroker.java
index a17f97b4443..25c1816a46b 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidBroker.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidBroker.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
* @author cbt33, North (Merfolk Looter)
*
*/
-public class CephalidBroker extends CardImpl {
+public final class CephalidBroker extends CardImpl {
public CephalidBroker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidColiseum.java b/Mage.Sets/src/mage/cards/c/CephalidColiseum.java
index bee79cd595a..b900012a936 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidColiseum.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidColiseum.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class CephalidColiseum extends CardImpl {
+public final class CephalidColiseum extends CardImpl {
public CephalidColiseum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidConstable.java b/Mage.Sets/src/mage/cards/c/CephalidConstable.java
index 61d91902dbb..dad225b1e22 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidConstable.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidConstable.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author emerald000
*/
-public class CephalidConstable extends CardImpl {
+public final class CephalidConstable extends CardImpl {
public CephalidConstable(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidIllusionist.java b/Mage.Sets/src/mage/cards/c/CephalidIllusionist.java
index e4046c8bbfc..549aa734f7c 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidIllusionist.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidIllusionist.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class CephalidIllusionist extends CardImpl {
+public final class CephalidIllusionist extends CardImpl {
public CephalidIllusionist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidInkshrouder.java b/Mage.Sets/src/mage/cards/c/CephalidInkshrouder.java
index 223ddca87e7..e4a890d88ce 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidInkshrouder.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidInkshrouder.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class CephalidInkshrouder extends CardImpl {
+public final class CephalidInkshrouder extends CardImpl {
public CephalidInkshrouder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidLooter.java b/Mage.Sets/src/mage/cards/c/CephalidLooter.java
index 131f4d0f931..45474f2de54 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidLooter.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidLooter.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author cbt33, Loki (Merfolk Looter)
*/
-public class CephalidLooter extends CardImpl {
+public final class CephalidLooter extends CardImpl {
public CephalidLooter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidPathmage.java b/Mage.Sets/src/mage/cards/c/CephalidPathmage.java
index 60fe0d01206..9f83a6eb8ed 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidPathmage.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidPathmage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class CephalidPathmage extends CardImpl {
+public final class CephalidPathmage extends CardImpl {
public CephalidPathmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidRetainer.java b/Mage.Sets/src/mage/cards/c/CephalidRetainer.java
index 8a59ad1fd24..650611d8079 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidRetainer.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidRetainer.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class CephalidRetainer extends CardImpl {
+public final class CephalidRetainer extends CardImpl {
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidSage.java b/Mage.Sets/src/mage/cards/c/CephalidSage.java
index 53afd4075fa..1a005adfd50 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidSage.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidSage.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class CephalidSage extends CardImpl {
+public final class CephalidSage extends CardImpl {
public CephalidSage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidScout.java b/Mage.Sets/src/mage/cards/c/CephalidScout.java
index 2a7c0c9165f..122e00b6ef2 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidScout.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidScout.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author cbt33
*/
-public class CephalidScout extends CardImpl {
+public final class CephalidScout extends CardImpl {
public CephalidScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidShrine.java b/Mage.Sets/src/mage/cards/c/CephalidShrine.java
index 130e9138679..cdaadd6b05a 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidShrine.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidShrine.java
@@ -1,157 +1,157 @@
-/*
- * 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.MageObject;
-import mage.abilities.Ability;
-import mage.abilities.TriggeredAbilityImpl;
-import mage.abilities.costs.Cost;
-import mage.abilities.costs.mana.GenericManaCost;
-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.FilterCard;
-import mage.filter.predicate.mageobject.NamePredicate;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
-import mage.game.stack.Spell;
-import mage.game.stack.StackObject;
-import mage.players.Player;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class CephalidShrine extends CardImpl {
-
- public CephalidShrine(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{U}");
-
- // Whenever a player casts a spell, counter that spell unless that player pays {X}, where X is the number of cards in all graveyards with the same name as the spell.
- this.addAbility(new CephalidShrineTriggeredAbility());
- }
-
- public CephalidShrine(final CephalidShrine card) {
- super(card);
- }
-
- @Override
- public CephalidShrine copy() {
- return new CephalidShrine(this);
- }
-}
-
-class CephalidShrineTriggeredAbility extends TriggeredAbilityImpl {
-
- public CephalidShrineTriggeredAbility() {
- super(Zone.BATTLEFIELD, new CephalidShrineEffect(), false);
- }
-
- public CephalidShrineTriggeredAbility(final CephalidShrineTriggeredAbility ability) {
- super(ability);
- }
-
- @Override
- public CephalidShrineTriggeredAbility copy() {
- return new CephalidShrineTriggeredAbility(this);
- }
-
- @Override
- public boolean checkEventType(GameEvent event, Game game) {
- return event.getType() == EventType.SPELL_CAST;
- }
-
- @Override
- public boolean checkTrigger(GameEvent event, Game game) {
- Spell spell = game.getStack().getSpell(event.getTargetId());
- MageObject mageObject = game.getObject(sourceId);
- if (spell != null) {
- game.getState().setValue("cephalidShrine" + mageObject, spell);
- return true;
- }
- return false;
- }
-
-}
-
-class CephalidShrineEffect extends OneShotEffect {
-
- public CephalidShrineEffect() {
- super(Outcome.Detriment);
- staticText = "Whenever a player casts a spell, counter that spell unless that player pays {X}, where X is the number of cards in all graveyards with the same name as the spell";
- }
-
- public CephalidShrineEffect(final CephalidShrineEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- int count = 0;
- MageObject mageObject = game.getObject(source.getSourceId());
- Spell spell = (Spell) game.getState().getValue("cephalidShrine" + mageObject);
- if (spell != null) {
- Player controller = game.getPlayer(spell.getControllerId());
- if (controller != null) {
- String name = spell.getName();
- FilterCard filterCardName = new FilterCard();
- filterCardName.add(new NamePredicate(name));
- for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- count += player.getGraveyard().count(filterCardName, game);
- }
- }
- // even if the cost is 0, we still offer
- Cost cost = new GenericManaCost(count);
- if (game.getStack().contains((StackObject) spell)
- && cost.canPay(source, source.getSourceId(), controller.getId(), game)
- && controller.chooseUse(outcome, "Pay " + cost.getText() + " to prevent countering " + spell.getName() + "?", source, game)
- && cost.pay(source, game, source.getSourceId(), controller.getId(), false)
- && cost.isPaid()) {
- return false;
- } else {
- spell.counter(source.getId(), game);
- game.informPlayers(spell.getName() + " has been countered due to " + controller.getName() + " not paying " + cost.getText());
- return true;
- }
- }
- }
- return false;
- }
-
- @Override
- public CephalidShrineEffect copy() {
- return new CephalidShrineEffect(this);
- }
-}
+/*
+ * 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.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.costs.Cost;
+import mage.abilities.costs.mana.GenericManaCost;
+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.FilterCard;
+import mage.filter.predicate.mageobject.NamePredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+import mage.game.stack.Spell;
+import mage.game.stack.StackObject;
+import mage.players.Player;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class CephalidShrine extends CardImpl {
+
+ public CephalidShrine(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{U}");
+
+ // Whenever a player casts a spell, counter that spell unless that player pays {X}, where X is the number of cards in all graveyards with the same name as the spell.
+ this.addAbility(new CephalidShrineTriggeredAbility());
+ }
+
+ public CephalidShrine(final CephalidShrine card) {
+ super(card);
+ }
+
+ @Override
+ public CephalidShrine copy() {
+ return new CephalidShrine(this);
+ }
+}
+
+class CephalidShrineTriggeredAbility extends TriggeredAbilityImpl {
+
+ public CephalidShrineTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new CephalidShrineEffect(), false);
+ }
+
+ public CephalidShrineTriggeredAbility(final CephalidShrineTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public CephalidShrineTriggeredAbility copy() {
+ return new CephalidShrineTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.SPELL_CAST;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ Spell spell = game.getStack().getSpell(event.getTargetId());
+ MageObject mageObject = game.getObject(sourceId);
+ if (spell != null) {
+ game.getState().setValue("cephalidShrine" + mageObject, spell);
+ return true;
+ }
+ return false;
+ }
+
+}
+
+class CephalidShrineEffect extends OneShotEffect {
+
+ public CephalidShrineEffect() {
+ super(Outcome.Detriment);
+ staticText = "Whenever a player casts a spell, counter that spell unless that player pays {X}, where X is the number of cards in all graveyards with the same name as the spell";
+ }
+
+ public CephalidShrineEffect(final CephalidShrineEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ int count = 0;
+ MageObject mageObject = game.getObject(source.getSourceId());
+ Spell spell = (Spell) game.getState().getValue("cephalidShrine" + mageObject);
+ if (spell != null) {
+ Player controller = game.getPlayer(spell.getControllerId());
+ if (controller != null) {
+ String name = spell.getName();
+ FilterCard filterCardName = new FilterCard();
+ filterCardName.add(new NamePredicate(name));
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ count += player.getGraveyard().count(filterCardName, game);
+ }
+ }
+ // even if the cost is 0, we still offer
+ Cost cost = new GenericManaCost(count);
+ if (game.getStack().contains((StackObject) spell)
+ && cost.canPay(source, source.getSourceId(), controller.getId(), game)
+ && controller.chooseUse(outcome, "Pay " + cost.getText() + " to prevent countering " + spell.getName() + "?", source, game)
+ && cost.pay(source, game, source.getSourceId(), controller.getId(), false)
+ && cost.isPaid()) {
+ return false;
+ } else {
+ spell.counter(source.getId(), game);
+ game.informPlayers(spell.getName() + " has been countered due to " + controller.getName() + " not paying " + cost.getText());
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public CephalidShrineEffect copy() {
+ return new CephalidShrineEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/c/CephalidSnitch.java b/Mage.Sets/src/mage/cards/c/CephalidSnitch.java
index 2085c215fd2..eced5b149b8 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidSnitch.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidSnitch.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author tcontis
*/
-public class CephalidSnitch extends CardImpl {
+public final class CephalidSnitch extends CardImpl {
public CephalidSnitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CephalidVandal.java b/Mage.Sets/src/mage/cards/c/CephalidVandal.java
index 3d301c5cdd9..530dff3200d 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidVandal.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidVandal.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class CephalidVandal extends CardImpl {
+public final class CephalidVandal extends CardImpl {
public CephalidVandal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CerebralEruption.java b/Mage.Sets/src/mage/cards/c/CerebralEruption.java
index bfdd1720ef6..e6c6b4b4232 100644
--- a/Mage.Sets/src/mage/cards/c/CerebralEruption.java
+++ b/Mage.Sets/src/mage/cards/c/CerebralEruption.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CerebralEruption extends CardImpl {
+public final class CerebralEruption extends CardImpl {
public CerebralEruption(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CerebralVortex.java b/Mage.Sets/src/mage/cards/c/CerebralVortex.java
index 52a186c3b23..4a0273a538f 100644
--- a/Mage.Sets/src/mage/cards/c/CerebralVortex.java
+++ b/Mage.Sets/src/mage/cards/c/CerebralVortex.java
@@ -50,7 +50,7 @@ import mage.watchers.Watcher;
*
* @author emerald000
*/
-public class CerebralVortex extends CardImpl {
+public final class CerebralVortex extends CardImpl {
public CerebralVortex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CeremonialGuard.java b/Mage.Sets/src/mage/cards/c/CeremonialGuard.java
index 325d386667d..58b338edbb0 100644
--- a/Mage.Sets/src/mage/cards/c/CeremonialGuard.java
+++ b/Mage.Sets/src/mage/cards/c/CeremonialGuard.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author TheElk801
*/
-public class CeremonialGuard extends CardImpl {
+public final class CeremonialGuard extends CardImpl {
public CeremonialGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CeremoniousRejection.java b/Mage.Sets/src/mage/cards/c/CeremoniousRejection.java
index 911c9a713b8..9f6ccc0cfac 100644
--- a/Mage.Sets/src/mage/cards/c/CeremoniousRejection.java
+++ b/Mage.Sets/src/mage/cards/c/CeremoniousRejection.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class CeremoniousRejection extends CardImpl {
+public final class CeremoniousRejection extends CardImpl {
private static final FilterSpell filter = new FilterSpell("colorless spell");
diff --git a/Mage.Sets/src/mage/cards/c/CerodonYearling.java b/Mage.Sets/src/mage/cards/c/CerodonYearling.java
index 2b060b65790..5ad794476a3 100644
--- a/Mage.Sets/src/mage/cards/c/CerodonYearling.java
+++ b/Mage.Sets/src/mage/cards/c/CerodonYearling.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CerodonYearling extends CardImpl {
+public final class CerodonYearling extends CardImpl {
public CerodonYearling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CertainDeath.java b/Mage.Sets/src/mage/cards/c/CertainDeath.java
index 4bde849fd2d..429ac9abb45 100644
--- a/Mage.Sets/src/mage/cards/c/CertainDeath.java
+++ b/Mage.Sets/src/mage/cards/c/CertainDeath.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class CertainDeath extends CardImpl {
+public final class CertainDeath extends CardImpl {
public CertainDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CeruleanSphinx.java b/Mage.Sets/src/mage/cards/c/CeruleanSphinx.java
index 9ee729eb0b6..02ee13bfa25 100644
--- a/Mage.Sets/src/mage/cards/c/CeruleanSphinx.java
+++ b/Mage.Sets/src/mage/cards/c/CeruleanSphinx.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class CeruleanSphinx extends CardImpl {
+public final class CeruleanSphinx extends CardImpl {
public CeruleanSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CeruleanWisps.java b/Mage.Sets/src/mage/cards/c/CeruleanWisps.java
index 4c69b7be04e..004a19a9a33 100644
--- a/Mage.Sets/src/mage/cards/c/CeruleanWisps.java
+++ b/Mage.Sets/src/mage/cards/c/CeruleanWisps.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class CeruleanWisps extends CardImpl {
+public final class CeruleanWisps extends CardImpl {
public CeruleanWisps (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CeruleanWyvern.java b/Mage.Sets/src/mage/cards/c/CeruleanWyvern.java
index 520910d487e..75f498c47aa 100644
--- a/Mage.Sets/src/mage/cards/c/CeruleanWyvern.java
+++ b/Mage.Sets/src/mage/cards/c/CeruleanWyvern.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CeruleanWyvern extends CardImpl {
+public final class CeruleanWyvern extends CardImpl {
public CeruleanWyvern(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Cessation.java b/Mage.Sets/src/mage/cards/c/Cessation.java
index e1fa648f756..00660461636 100644
--- a/Mage.Sets/src/mage/cards/c/Cessation.java
+++ b/Mage.Sets/src/mage/cards/c/Cessation.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class Cessation extends CardImpl {
+public final class Cessation extends CardImpl {
public Cessation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CetaDisciple.java b/Mage.Sets/src/mage/cards/c/CetaDisciple.java
index 5adda4fb44b..6678538cb30 100644
--- a/Mage.Sets/src/mage/cards/c/CetaDisciple.java
+++ b/Mage.Sets/src/mage/cards/c/CetaDisciple.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class CetaDisciple extends CardImpl {
+public final class CetaDisciple extends CardImpl {
public CetaDisciple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CetaSanctuary.java b/Mage.Sets/src/mage/cards/c/CetaSanctuary.java
index 7a126b07435..4765e9fed9e 100644
--- a/Mage.Sets/src/mage/cards/c/CetaSanctuary.java
+++ b/Mage.Sets/src/mage/cards/c/CetaSanctuary.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class CetaSanctuary extends CardImpl {
+public final class CetaSanctuary extends CardImpl {
public CetaSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Cetavolver.java b/Mage.Sets/src/mage/cards/c/Cetavolver.java
index 1b67890e141..25a88546806 100644
--- a/Mage.Sets/src/mage/cards/c/Cetavolver.java
+++ b/Mage.Sets/src/mage/cards/c/Cetavolver.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class Cetavolver extends CardImpl {
+public final class Cetavolver extends CardImpl {
public Cetavolver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChainLightning.java b/Mage.Sets/src/mage/cards/c/ChainLightning.java
index 0be470e6a0f..dee17db0145 100644
--- a/Mage.Sets/src/mage/cards/c/ChainLightning.java
+++ b/Mage.Sets/src/mage/cards/c/ChainLightning.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class ChainLightning extends CardImpl {
+public final class ChainLightning extends CardImpl {
public ChainLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChainOfAcid.java b/Mage.Sets/src/mage/cards/c/ChainOfAcid.java
index e7ae7f47c8b..3aea1a946b5 100644
--- a/Mage.Sets/src/mage/cards/c/ChainOfAcid.java
+++ b/Mage.Sets/src/mage/cards/c/ChainOfAcid.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class ChainOfAcid extends CardImpl {
+public final class ChainOfAcid extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature permanent");
diff --git a/Mage.Sets/src/mage/cards/c/ChainOfPlasma.java b/Mage.Sets/src/mage/cards/c/ChainOfPlasma.java
index 984664125e9..5a22f8135e6 100644
--- a/Mage.Sets/src/mage/cards/c/ChainOfPlasma.java
+++ b/Mage.Sets/src/mage/cards/c/ChainOfPlasma.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author TheElk801
*/
-public class ChainOfPlasma extends CardImpl {
+public final class ChainOfPlasma extends CardImpl {
public ChainOfPlasma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChainOfSilence.java b/Mage.Sets/src/mage/cards/c/ChainOfSilence.java
index d2780688ddb..fd1eb782ae1 100644
--- a/Mage.Sets/src/mage/cards/c/ChainOfSilence.java
+++ b/Mage.Sets/src/mage/cards/c/ChainOfSilence.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class ChainOfSilence extends CardImpl {
+public final class ChainOfSilence extends CardImpl {
public ChainOfSilence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChainOfSmog.java b/Mage.Sets/src/mage/cards/c/ChainOfSmog.java
index 5f6d76f0e4d..ea4c3e58427 100644
--- a/Mage.Sets/src/mage/cards/c/ChainOfSmog.java
+++ b/Mage.Sets/src/mage/cards/c/ChainOfSmog.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class ChainOfSmog extends CardImpl {
+public final class ChainOfSmog extends CardImpl {
public ChainOfSmog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ChainOfVapor.java b/Mage.Sets/src/mage/cards/c/ChainOfVapor.java
index 5efbb59dd39..179adfd212c 100644
--- a/Mage.Sets/src/mage/cards/c/ChainOfVapor.java
+++ b/Mage.Sets/src/mage/cards/c/ChainOfVapor.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author Plopman
*/
-public class ChainOfVapor extends CardImpl {
+public final class ChainOfVapor extends CardImpl {
public ChainOfVapor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChainReaction.java b/Mage.Sets/src/mage/cards/c/ChainReaction.java
index 94f7283a183..c0f927d3a62 100644
--- a/Mage.Sets/src/mage/cards/c/ChainReaction.java
+++ b/Mage.Sets/src/mage/cards/c/ChainReaction.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author North
*/
-public class ChainReaction extends CardImpl {
+public final class ChainReaction extends CardImpl {
public ChainReaction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChainStasis.java b/Mage.Sets/src/mage/cards/c/ChainStasis.java
index 4db9cb1646d..9be38a09eb9 100644
--- a/Mage.Sets/src/mage/cards/c/ChainStasis.java
+++ b/Mage.Sets/src/mage/cards/c/ChainStasis.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class ChainStasis extends CardImpl {
+public final class ChainStasis extends CardImpl {
public ChainStasis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Chainbreaker.java b/Mage.Sets/src/mage/cards/c/Chainbreaker.java
index 13001c42c15..80f1844d1ed 100644
--- a/Mage.Sets/src/mage/cards/c/Chainbreaker.java
+++ b/Mage.Sets/src/mage/cards/c/Chainbreaker.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class Chainbreaker extends CardImpl {
+public final class Chainbreaker extends CardImpl {
public Chainbreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/ChainedThroatseeker.java b/Mage.Sets/src/mage/cards/c/ChainedThroatseeker.java
index 450b36a37c9..2e3a6cf55d6 100644
--- a/Mage.Sets/src/mage/cards/c/ChainedThroatseeker.java
+++ b/Mage.Sets/src/mage/cards/c/ChainedThroatseeker.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author North
*/
-public class ChainedThroatseeker extends CardImpl {
+public final class ChainedThroatseeker extends CardImpl {
public ChainedThroatseeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChainedToTheRocks.java b/Mage.Sets/src/mage/cards/c/ChainedToTheRocks.java
index 67e62f0cec8..76915e251bc 100644
--- a/Mage.Sets/src/mage/cards/c/ChainedToTheRocks.java
+++ b/Mage.Sets/src/mage/cards/c/ChainedToTheRocks.java
@@ -87,7 +87,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class ChainedToTheRocks extends CardImpl {
+public final class ChainedToTheRocks extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Mountain you control");
private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java b/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java
index 605cd9f0762..00b808a8c0d 100644
--- a/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java
+++ b/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class ChainerDementiaMaster extends CardImpl {
+public final class ChainerDementiaMaster extends CardImpl {
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("Nightmare creatures");
private static final FilterPermanent filterPermanent = new FilterPermanent("Nightmares");
diff --git a/Mage.Sets/src/mage/cards/c/ChainersEdict.java b/Mage.Sets/src/mage/cards/c/ChainersEdict.java
index 4abb9d9ac98..d50f6d28219 100644
--- a/Mage.Sets/src/mage/cards/c/ChainersEdict.java
+++ b/Mage.Sets/src/mage/cards/c/ChainersEdict.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author dustinconrad
*/
-public class ChainersEdict extends CardImpl {
+public final class ChainersEdict extends CardImpl {
public ChainersEdict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ChainersTorment.java b/Mage.Sets/src/mage/cards/c/ChainersTorment.java
index 90bc026ed51..3bed438ac2d 100644
--- a/Mage.Sets/src/mage/cards/c/ChainersTorment.java
+++ b/Mage.Sets/src/mage/cards/c/ChainersTorment.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class ChainersTorment extends CardImpl {
+public final class ChainersTorment extends CardImpl {
public ChainersTorment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Chainflinger.java b/Mage.Sets/src/mage/cards/c/Chainflinger.java
index 6c53686a34f..3aee213115f 100644
--- a/Mage.Sets/src/mage/cards/c/Chainflinger.java
+++ b/Mage.Sets/src/mage/cards/c/Chainflinger.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Chainflinger extends CardImpl {
+public final class Chainflinger extends CardImpl {
public Chainflinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChainsOfMephistopheles.java b/Mage.Sets/src/mage/cards/c/ChainsOfMephistopheles.java
index f4366fe6ebd..b5db6b58eec 100644
--- a/Mage.Sets/src/mage/cards/c/ChainsOfMephistopheles.java
+++ b/Mage.Sets/src/mage/cards/c/ChainsOfMephistopheles.java
@@ -46,7 +46,7 @@ import mage.watchers.common.CardsDrawnDuringDrawStepWatcher;
*
* @author LevelX2
*/
-public class ChainsOfMephistopheles extends CardImpl {
+public final class ChainsOfMephistopheles extends CardImpl {
public ChainsOfMephistopheles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ChakramRetriever.java b/Mage.Sets/src/mage/cards/c/ChakramRetriever.java
new file mode 100644
index 00000000000..6520570b7ec
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/c/ChakramRetriever.java
@@ -0,0 +1,79 @@
+/*
+ * 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.Ability;
+import mage.abilities.common.SpellCastControllerTriggeredAbility;
+import mage.abilities.condition.common.MyTurnCondition;
+import mage.abilities.decorator.ConditionalTriggeredAbility;
+import mage.abilities.effects.common.UntapTargetEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ChakramRetriever extends CardImpl {
+
+ public ChakramRetriever(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
+
+ this.subtype.add(SubType.ELEMENTAL);
+ this.subtype.add(SubType.HOUND);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(4);
+
+ // Partner with Chakram Slinger (When this creature enters the battlefield, target player may put Chakram Slinger into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Chakram Slinger"));
+
+ // Whenever you cast a spell during your turn, untap target creature.
+ Ability ability = new ConditionalTriggeredAbility(
+ new SpellCastControllerTriggeredAbility(new UntapTargetEffect(), false),
+ MyTurnCondition.instance,
+ "Whenever you cast a spell during your turn, untap target creature."
+ );
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public ChakramRetriever(final ChakramRetriever card) {
+ super(card);
+ }
+
+ @Override
+ public ChakramRetriever copy() {
+ return new ChakramRetriever(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/c/ChakramSlinger.java b/Mage.Sets/src/mage/cards/c/ChakramSlinger.java
new file mode 100644
index 00000000000..2fade7a2f63
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/c/ChakramSlinger.java
@@ -0,0 +1,76 @@
+/*
+ * 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.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.target.common.TargetPlayerOrPlaneswalker;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ChakramSlinger extends CardImpl {
+
+ public ChakramSlinger(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(4);
+
+ // Partner with Chakram Retriever (When this creature enters the battlefield, target player may put Chakram Retriever into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Chakram Retriever"));
+
+ // {R}, {T}: Chakram Slinger deals 2 damage to target player or planeswalker.
+ Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2), new ManaCostsImpl("{R}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetPlayerOrPlaneswalker());
+ this.addAbility(ability);
+ }
+
+ public ChakramSlinger(final ChakramSlinger card) {
+ super(card);
+ }
+
+ @Override
+ public ChakramSlinger copy() {
+ return new ChakramSlinger(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/c/ChaliceOfDeath.java b/Mage.Sets/src/mage/cards/c/ChaliceOfDeath.java
index 42440940396..29c2d0e8e28 100644
--- a/Mage.Sets/src/mage/cards/c/ChaliceOfDeath.java
+++ b/Mage.Sets/src/mage/cards/c/ChaliceOfDeath.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author intimidatingant
*/
-public class ChaliceOfDeath extends CardImpl {
+public final class ChaliceOfDeath extends CardImpl {
public ChaliceOfDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"");
diff --git a/Mage.Sets/src/mage/cards/c/ChaliceOfLife.java b/Mage.Sets/src/mage/cards/c/ChaliceOfLife.java
index c8a363f7494..5beb2d0eaaa 100644
--- a/Mage.Sets/src/mage/cards/c/ChaliceOfLife.java
+++ b/Mage.Sets/src/mage/cards/c/ChaliceOfLife.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author intimidatingant
*/
-public class ChaliceOfLife extends CardImpl {
+public final class ChaliceOfLife extends CardImpl {
public ChaliceOfLife(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/ChaliceOfTheVoid.java b/Mage.Sets/src/mage/cards/c/ChaliceOfTheVoid.java
index cc53c2feb4d..65885b946a2 100644
--- a/Mage.Sets/src/mage/cards/c/ChaliceOfTheVoid.java
+++ b/Mage.Sets/src/mage/cards/c/ChaliceOfTheVoid.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author anonymous
*/
-public class ChaliceOfTheVoid extends CardImpl {
+public final class ChaliceOfTheVoid extends CardImpl {
public ChaliceOfTheVoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{X}{X}");
diff --git a/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java b/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java
index d6548217a59..b139f8f07e5 100644
--- a/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java
+++ b/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author anonymous
*/
-public class ChamberOfManipulation extends CardImpl {
+public final class ChamberOfManipulation extends CardImpl {
public ChamberOfManipulation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChamberedNautilus.java b/Mage.Sets/src/mage/cards/c/ChamberedNautilus.java
index f9688426c22..f73b499b272 100644
--- a/Mage.Sets/src/mage/cards/c/ChamberedNautilus.java
+++ b/Mage.Sets/src/mage/cards/c/ChamberedNautilus.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ChamberedNautilus extends CardImpl {
+public final class ChamberedNautilus extends CardImpl {
public ChamberedNautilus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChameleonBlur.java b/Mage.Sets/src/mage/cards/c/ChameleonBlur.java
new file mode 100644
index 00000000000..bf0c2799d92
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/c/ChameleonBlur.java
@@ -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.c;
+
+import java.util.UUID;
+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;
+import mage.game.permanent.Permanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ChameleonBlur extends CardImpl {
+
+ public ChameleonBlur(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{G}");
+
+ // Prevent all damage that creatures would deal to players this turn.
+ this.getSpellAbility().addEffect(new ChameleonBlurEffect());
+ }
+
+ public ChameleonBlur(final ChameleonBlur card) {
+ super(card);
+ }
+
+ @Override
+ public ChameleonBlur copy() {
+ return new ChameleonBlur(this);
+ }
+}
+
+class ChameleonBlurEffect extends PreventionEffectImpl {
+
+ public ChameleonBlurEffect() {
+ super(Duration.EndOfTurn, Integer.MAX_VALUE, false);
+ staticText = "prevent all damage that creatures would deal to players this turn";
+ }
+
+ public ChameleonBlurEffect(final ChameleonBlurEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ChameleonBlurEffect copy() {
+ return new ChameleonBlurEffect(this);
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ if (super.applies(event, source, game)
+ && event.getType() == GameEvent.EventType.DAMAGE_PLAYER
+ && event.getAmount() > 0) {
+ Permanent permanent = game.getPermanent(event.getSourceId());
+ return permanent != null && permanent.isCreature();
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/c/ChameleonColossus.java b/Mage.Sets/src/mage/cards/c/ChameleonColossus.java
index 68305d47fa5..d13e1b35f4d 100644
--- a/Mage.Sets/src/mage/cards/c/ChameleonColossus.java
+++ b/Mage.Sets/src/mage/cards/c/ChameleonColossus.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ChameleonColossus extends CardImpl {
+public final class ChameleonColossus extends CardImpl {
public ChameleonColossus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChampionLancer.java b/Mage.Sets/src/mage/cards/c/ChampionLancer.java
index 71a9b845201..25a7258f167 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionLancer.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionLancer.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent;
*
* @author TheElk801
*/
-public class ChampionLancer extends CardImpl {
+public final class ChampionLancer extends CardImpl {
public ChampionLancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfArashin.java b/Mage.Sets/src/mage/cards/c/ChampionOfArashin.java
index 335b6d0e3b6..ae2cfb78f54 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionOfArashin.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionOfArashin.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ChampionOfArashin extends CardImpl {
+public final class ChampionOfArashin extends CardImpl {
public ChampionOfArashin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfDusk.java b/Mage.Sets/src/mage/cards/c/ChampionOfDusk.java
index 372428c07ae..fc3a54d1d92 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionOfDusk.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionOfDusk.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author L_J
*/
-public class ChampionOfDusk extends CardImpl {
+public final class ChampionOfDusk extends CardImpl {
private final static FilterControlledPermanent filter = new FilterControlledPermanent("Vampires you control");
diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java b/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java
index 01dc8fe0e99..ad161fcdfef 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
/**
* @author noxx
*/
-public class ChampionOfLambholt extends CardImpl {
+public final class ChampionOfLambholt extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfRhonas.java b/Mage.Sets/src/mage/cards/c/ChampionOfRhonas.java
index 4d65190d27b..0507ef48a77 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionOfRhonas.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionOfRhonas.java
@@ -30,19 +30,19 @@ package mage.cards.c;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.BecomesExertSourceTriggeredAbility;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.keyword.ExertAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterCreatureCard;
+import mage.filter.StaticFilters;
/**
*
* @author fireshoes
*/
-public class ChampionOfRhonas extends CardImpl {
+public final class ChampionOfRhonas extends CardImpl {
public ChampionOfRhonas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
@@ -53,7 +53,7 @@ public class ChampionOfRhonas extends CardImpl {
this.toughness = new MageInt(3);
// You may exert Champion of Rhonas as it attacks. When you do, you may put a creature card from your hand onto the battlefield.
- BecomesExertSourceTriggeredAbility ability = new BecomesExertSourceTriggeredAbility(new PutPermanentOnBattlefieldEffect(new FilterCreatureCard("a creature card")));
+ BecomesExertSourceTriggeredAbility ability = new BecomesExertSourceTriggeredAbility(new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_CREATURE_A));
this.addAbility(new ExertAbility(ability));
}
diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfStraySouls.java b/Mage.Sets/src/mage/cards/c/ChampionOfStraySouls.java
index 459920fa243..8e1826b51b2 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionOfStraySouls.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionOfStraySouls.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class ChampionOfStraySouls extends CardImpl {
+public final class ChampionOfStraySouls extends CardImpl {
private final UUID originalId;
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other creatures");
diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfTheFlame.java b/Mage.Sets/src/mage/cards/c/ChampionOfTheFlame.java
index 3dc8630adc9..b5d1f5d452b 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionOfTheFlame.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionOfTheFlame.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class ChampionOfTheFlame extends CardImpl {
+public final class ChampionOfTheFlame extends CardImpl {
public ChampionOfTheFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfTheParish.java b/Mage.Sets/src/mage/cards/c/ChampionOfTheParish.java
index 1bd661fd9ec..2e851ea6998 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionOfTheParish.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionOfTheParish.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author nantuko
*/
-public class ChampionOfTheParish extends CardImpl {
+public final class ChampionOfTheParish extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another Human");
static {
diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfWits.java b/Mage.Sets/src/mage/cards/c/ChampionOfWits.java
index fd64d00a703..c72b19e4349 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionOfWits.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionOfWits.java
@@ -47,7 +47,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class ChampionOfWits extends CardImpl {
+public final class ChampionOfWits extends CardImpl {
public ChampionOfWits(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChampionsDrake.java b/Mage.Sets/src/mage/cards/c/ChampionsDrake.java
index 924eef9a97d..79b583b4984 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionsDrake.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionsDrake.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class ChampionsDrake extends CardImpl {
+public final class ChampionsDrake extends CardImpl {
private static final String rule = "{this} gets +3/+3 as long as you control a creature with three or more level counters on it.";
diff --git a/Mage.Sets/src/mage/cards/c/ChampionsHelm.java b/Mage.Sets/src/mage/cards/c/ChampionsHelm.java
index cdaad441556..8c99833c17b 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionsHelm.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionsHelm.java
@@ -44,7 +44,7 @@ import mage.constants.*;
*
* @author LevelX2
*/
-public class ChampionsHelm extends CardImpl {
+public final class ChampionsHelm extends CardImpl {
private static final String staticText = "As long as equipped creature is legendary, it has hexproof";
diff --git a/Mage.Sets/src/mage/cards/c/ChampionsVictory.java b/Mage.Sets/src/mage/cards/c/ChampionsVictory.java
index a3d2222ee2d..eeddd66bcc1 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionsVictory.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionsVictory.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author TheElk801
*/
-public class ChampionsVictory extends CardImpl {
+public final class ChampionsVictory extends CardImpl {
public ChampionsVictory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChanceEncounter.java b/Mage.Sets/src/mage/cards/c/ChanceEncounter.java
index c2426a31f12..1167184fd12 100644
--- a/Mage.Sets/src/mage/cards/c/ChanceEncounter.java
+++ b/Mage.Sets/src/mage/cards/c/ChanceEncounter.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class ChanceEncounter extends CardImpl {
+public final class ChanceEncounter extends CardImpl {
public ChanceEncounter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChancellorOfTheAnnex.java b/Mage.Sets/src/mage/cards/c/ChancellorOfTheAnnex.java
index 2a883ba5f29..45bd3a45e60 100644
--- a/Mage.Sets/src/mage/cards/c/ChancellorOfTheAnnex.java
+++ b/Mage.Sets/src/mage/cards/c/ChancellorOfTheAnnex.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author BetaSteward
*/
-public class ChancellorOfTheAnnex extends CardImpl {
+public final class ChancellorOfTheAnnex extends CardImpl {
public ChancellorOfTheAnnex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChancellorOfTheDross.java b/Mage.Sets/src/mage/cards/c/ChancellorOfTheDross.java
index 299fdcf72e8..457be6103cc 100644
--- a/Mage.Sets/src/mage/cards/c/ChancellorOfTheDross.java
+++ b/Mage.Sets/src/mage/cards/c/ChancellorOfTheDross.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward
*/
-public class ChancellorOfTheDross extends CardImpl {
+public final class ChancellorOfTheDross extends CardImpl {
private static String abilityText = "at the beginning of the first upkeep, each opponent loses 3 life, then you gain life equal to the life lost this way";
diff --git a/Mage.Sets/src/mage/cards/c/ChancellorOfTheForge.java b/Mage.Sets/src/mage/cards/c/ChancellorOfTheForge.java
index 941ab0ad9a1..ec34a490b45 100644
--- a/Mage.Sets/src/mage/cards/c/ChancellorOfTheForge.java
+++ b/Mage.Sets/src/mage/cards/c/ChancellorOfTheForge.java
@@ -45,13 +45,13 @@ import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
-import mage.game.permanent.token.GoblinTokenWithHaste;
+import mage.game.permanent.token.GoblinToken;
/**
*
* @author BetaSteward
*/
-public class ChancellorOfTheForge extends CardImpl {
+public final class ChancellorOfTheForge extends CardImpl {
private static String abilityText = "at the beginning of the first upkeep, create a 1/1 red Goblin creature token with haste";
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control");
@@ -61,7 +61,7 @@ public class ChancellorOfTheForge extends CardImpl {
}
public ChancellorOfTheForge(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}{R}");
this.subtype.add(SubType.GIANT);
this.power = new MageInt(5);
@@ -72,7 +72,7 @@ public class ChancellorOfTheForge extends CardImpl {
// When Chancellor of the Forge enters the battlefield, create X 1/1 red Goblin creature tokens with haste, where X is the number of creatures you control.
DynamicValue value = new PermanentsOnBattlefieldCount(filter);
- this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GoblinTokenWithHaste(), value), false));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GoblinToken(true), value), false));
}
public ChancellorOfTheForge(final ChancellorOfTheForge card) {
@@ -87,8 +87,8 @@ public class ChancellorOfTheForge extends CardImpl {
class ChancellorOfTheForgeDelayedTriggeredAbility extends DelayedTriggeredAbility {
- ChancellorOfTheForgeDelayedTriggeredAbility () {
- super(new CreateTokenEffect(new GoblinTokenWithHaste()));
+ ChancellorOfTheForgeDelayedTriggeredAbility() {
+ super(new CreateTokenEffect(new GoblinToken(true)));
}
ChancellorOfTheForgeDelayedTriggeredAbility(ChancellorOfTheForgeDelayedTriggeredAbility ability) {
@@ -104,6 +104,7 @@ class ChancellorOfTheForgeDelayedTriggeredAbility extends DelayedTriggeredAbilit
public boolean checkTrigger(GameEvent event, Game game) {
return true;
}
+
@Override
public ChancellorOfTheForgeDelayedTriggeredAbility copy() {
return new ChancellorOfTheForgeDelayedTriggeredAbility(this);
diff --git a/Mage.Sets/src/mage/cards/c/ChancellorOfTheSpires.java b/Mage.Sets/src/mage/cards/c/ChancellorOfTheSpires.java
index 769aafb4900..d06f4d7bc43 100644
--- a/Mage.Sets/src/mage/cards/c/ChancellorOfTheSpires.java
+++ b/Mage.Sets/src/mage/cards/c/ChancellorOfTheSpires.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
*
* @author BetaSteward
*/
-public class ChancellorOfTheSpires extends CardImpl {
+public final class ChancellorOfTheSpires extends CardImpl {
private static final String abilityText = "at the beginning of the first upkeep, each opponent puts the top seven cards of their library into their graveyard";
diff --git a/Mage.Sets/src/mage/cards/c/ChancellorOfTheTangle.java b/Mage.Sets/src/mage/cards/c/ChancellorOfTheTangle.java
index 50dbd593ed8..eae6aa0184a 100644
--- a/Mage.Sets/src/mage/cards/c/ChancellorOfTheTangle.java
+++ b/Mage.Sets/src/mage/cards/c/ChancellorOfTheTangle.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward
*/
-public class ChancellorOfTheTangle extends CardImpl {
+public final class ChancellorOfTheTangle extends CardImpl {
private static String abilityText = "at the beginning of your first main phase, add {G}";
diff --git a/Mage.Sets/src/mage/cards/c/Chandler.java b/Mage.Sets/src/mage/cards/c/Chandler.java
index 30c04c3d936..4d4fccd850f 100644
--- a/Mage.Sets/src/mage/cards/c/Chandler.java
+++ b/Mage.Sets/src/mage/cards/c/Chandler.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Chandler extends CardImpl {
+public final class Chandler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/c/ChandraAblaze.java b/Mage.Sets/src/mage/cards/c/ChandraAblaze.java
index 912937767a5..cf494454ac2 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraAblaze.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraAblaze.java
@@ -29,6 +29,7 @@ package mage.cards.c;
import java.util.Set;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
@@ -41,8 +42,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterCard;
import mage.filter.predicate.Predicates;
@@ -51,18 +52,18 @@ import mage.filter.predicate.mageobject.ColorPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
-import mage.target.common.TargetCardInGraveyard;
import mage.target.common.TargetAnyTarget;
+import mage.target.common.TargetCardInGraveyard;
import mage.target.common.TargetDiscard;
/**
*
* @author North
*/
-public class ChandraAblaze extends CardImpl {
+public final class ChandraAblaze extends CardImpl {
public ChandraAblaze(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{4}{R}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{R}{R}");
this.addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.CHANDRA);
@@ -198,7 +199,7 @@ class ChandraAblazeEffect5 extends OneShotEffect {
if (player.choose(outcome, target, source.getSourceId(), game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- player.cast(card.getSpellAbility(), game, true);
+ player.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
player.getGraveyard().remove(card);
cards.remove(card);
}
diff --git a/Mage.Sets/src/mage/cards/c/ChandraBoldPyromancer.java b/Mage.Sets/src/mage/cards/c/ChandraBoldPyromancer.java
index 210b5e525a3..20ce786e2cf 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraBoldPyromancer.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraBoldPyromancer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
*
* @author TheElk801
*/
-public class ChandraBoldPyromancer extends CardImpl {
+public final class ChandraBoldPyromancer extends CardImpl {
public ChandraBoldPyromancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChandraFireOfKaladesh.java b/Mage.Sets/src/mage/cards/c/ChandraFireOfKaladesh.java
index 4ee014c814f..10152ed3d76 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraFireOfKaladesh.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraFireOfKaladesh.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class ChandraFireOfKaladesh extends CardImpl {
+public final class ChandraFireOfKaladesh extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a red spell");
diff --git a/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java b/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java
index 77fcd01b7b1..d09fbdfd6cf 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class ChandraFlamecaller extends CardImpl {
+public final class ChandraFlamecaller extends CardImpl {
public ChandraFlamecaller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChandraNalaar.java b/Mage.Sets/src/mage/cards/c/ChandraNalaar.java
index 8f0c92c2f60..39b599384f6 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraNalaar.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraNalaar.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author BetaSteward_at_googlemail.com, nantuko
*/
-public class ChandraNalaar extends CardImpl {
+public final class ChandraNalaar extends CardImpl {
public ChandraNalaar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChandraPyrogenius.java b/Mage.Sets/src/mage/cards/c/ChandraPyrogenius.java
index 3490d0000d0..a842465a676 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraPyrogenius.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraPyrogenius.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class ChandraPyrogenius extends CardImpl {
+public final class ChandraPyrogenius extends CardImpl {
public ChandraPyrogenius(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChandraPyromaster.java b/Mage.Sets/src/mage/cards/c/ChandraPyromaster.java
index 75c5b5f59f8..aa5aee8e4c2 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraPyromaster.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraPyromaster.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author jeffwadsworth
*/
-public class ChandraPyromaster extends CardImpl {
+public final class ChandraPyromaster extends CardImpl {
public ChandraPyromaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{R}{R}");
@@ -287,17 +287,18 @@ class ChandraPyromasterEffect3 extends OneShotEffect {
if (controller.chooseTarget(Outcome.PlayForFree, cards, target, source, game)) {
Card card = cards.get(target.getFirstTarget(), game);
if (card != null) {
+ MageObjectReference mor = new MageObjectReference(source.getSourceObject(game), game);
if (controller.chooseUse(outcome, "Do you wish to cast copy 1 of " + card.getName(), source, game)) {
Card copy1 = game.copyCard(card, source, source.getControllerId());
- controller.cast(copy1.getSpellAbility(), game, true);
+ controller.cast(copy1.getSpellAbility(), game, true, mor);
}
if (controller.chooseUse(outcome, "Do you wish to cast copy 2 of " + card.getName(), source, game)) {
Card copy2 = game.copyCard(card, source, source.getControllerId());
- controller.cast(copy2.getSpellAbility(), game, true);
+ controller.cast(copy2.getSpellAbility(), game, true, mor);
}
if (controller.chooseUse(outcome, "Do you wish to cast copy 3 of " + card.getName(), source, game)) {
Card copy3 = game.copyCard(card, source, source.getControllerId());
- controller.cast(copy3.getSpellAbility(), game, true);
+ controller.cast(copy3.getSpellAbility(), game, true, mor);
}
return true;
}
diff --git a/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java b/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java
index f048556ec5e..6ec9776d048 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class ChandraRoaringFlame extends CardImpl {
+public final class ChandraRoaringFlame extends CardImpl {
public ChandraRoaringFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "");
diff --git a/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java b/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java
index 4648830acac..f9d51c9134a 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class ChandraTheFirebrand extends CardImpl {
+public final class ChandraTheFirebrand extends CardImpl {
public ChandraTheFirebrand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChandraTorchOfDefiance.java b/Mage.Sets/src/mage/cards/c/ChandraTorchOfDefiance.java
index 3b8f4c0adbb..ed8a5a41a19 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraTorchOfDefiance.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraTorchOfDefiance.java
@@ -29,22 +29,23 @@ package mage.cards.c;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.mana.BasicManaEffect;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.GetEmblemEffect;
+import mage.abilities.effects.mana.BasicManaEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.constants.Zone;
@@ -57,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author fireshoes
*/
-public class ChandraTorchOfDefiance extends CardImpl {
+public final class ChandraTorchOfDefiance extends CardImpl {
public ChandraTorchOfDefiance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{R}{R}");
@@ -120,7 +121,7 @@ class ChandraTorchOfDefianceEffect extends OneShotEffect {
controller.moveCardToExileWithInfo(card, source.getSourceId(), sourceObject.getIdName(), source.getSourceId(), game, Zone.LIBRARY, true);
if (!card.getManaCost().isEmpty()) {
if (controller.chooseUse(Outcome.Benefit, "Cast the card? (You still pay the costs)", source, game) && !card.isLand()) {
- exiledCardWasCast = controller.cast(card.getSpellAbility(), game, false);
+ exiledCardWasCast = controller.cast(card.getSpellAbility(), game, false, new MageObjectReference(source.getSourceObject(game), game));
}
}
if (!exiledCardWasCast) {
diff --git a/Mage.Sets/src/mage/cards/c/ChandrasDefeat.java b/Mage.Sets/src/mage/cards/c/ChandrasDefeat.java
index efe09ea7794..ae13956e3cb 100644
--- a/Mage.Sets/src/mage/cards/c/ChandrasDefeat.java
+++ b/Mage.Sets/src/mage/cards/c/ChandrasDefeat.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author spjspj
*/
-public class ChandrasDefeat extends CardImpl {
+public final class ChandrasDefeat extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent("creature or planeswalker");
diff --git a/Mage.Sets/src/mage/cards/c/ChandrasFury.java b/Mage.Sets/src/mage/cards/c/ChandrasFury.java
index a25b23272cb..895bf38cd9e 100644
--- a/Mage.Sets/src/mage/cards/c/ChandrasFury.java
+++ b/Mage.Sets/src/mage/cards/c/ChandrasFury.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author North
*/
-public class ChandrasFury extends CardImpl {
+public final class ChandrasFury extends CardImpl {
public ChandrasFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChandrasIgnition.java b/Mage.Sets/src/mage/cards/c/ChandrasIgnition.java
index 61107de7e0f..2de9b546642 100644
--- a/Mage.Sets/src/mage/cards/c/ChandrasIgnition.java
+++ b/Mage.Sets/src/mage/cards/c/ChandrasIgnition.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ChandrasIgnition extends CardImpl {
+public final class ChandrasIgnition extends CardImpl {
public ChandrasIgnition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChandrasOutburst.java b/Mage.Sets/src/mage/cards/c/ChandrasOutburst.java
index 4373e2d7206..7b9a49e9689 100644
--- a/Mage.Sets/src/mage/cards/c/ChandrasOutburst.java
+++ b/Mage.Sets/src/mage/cards/c/ChandrasOutburst.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author TheElk801
*/
-public class ChandrasOutburst extends CardImpl {
+public final class ChandrasOutburst extends CardImpl {
private final static FilterCard filter = new FilterCard("Chandra, Bold Pyromancer");
diff --git a/Mage.Sets/src/mage/cards/c/ChandrasOutrage.java b/Mage.Sets/src/mage/cards/c/ChandrasOutrage.java
index e055e25cf4d..b2763310a8f 100644
--- a/Mage.Sets/src/mage/cards/c/ChandrasOutrage.java
+++ b/Mage.Sets/src/mage/cards/c/ChandrasOutrage.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ChandrasOutrage extends CardImpl {
+public final class ChandrasOutrage extends CardImpl {
public ChandrasOutrage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChandrasPhoenix.java b/Mage.Sets/src/mage/cards/c/ChandrasPhoenix.java
index ae9b57f2788..5884f285edb 100644
--- a/Mage.Sets/src/mage/cards/c/ChandrasPhoenix.java
+++ b/Mage.Sets/src/mage/cards/c/ChandrasPhoenix.java
@@ -49,7 +49,7 @@ import mage.game.stack.StackObject;
*
* @author anonymous
*/
-public class ChandrasPhoenix extends CardImpl {
+public final class ChandrasPhoenix extends CardImpl {
public ChandrasPhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChandrasPyrohelix.java b/Mage.Sets/src/mage/cards/c/ChandrasPyrohelix.java
index b86587adb9f..57e739a7f7d 100644
--- a/Mage.Sets/src/mage/cards/c/ChandrasPyrohelix.java
+++ b/Mage.Sets/src/mage/cards/c/ChandrasPyrohelix.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author spjspj
*/
-public class ChandrasPyrohelix extends CardImpl {
+public final class ChandrasPyrohelix extends CardImpl {
public ChandrasPyrohelix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChandrasRevolution.java b/Mage.Sets/src/mage/cards/c/ChandrasRevolution.java
index 7099c2b18ee..988549af6cd 100644
--- a/Mage.Sets/src/mage/cards/c/ChandrasRevolution.java
+++ b/Mage.Sets/src/mage/cards/c/ChandrasRevolution.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class ChandrasRevolution extends CardImpl {
+public final class ChandrasRevolution extends CardImpl {
public ChandrasRevolution(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChandrasSpitfire.java b/Mage.Sets/src/mage/cards/c/ChandrasSpitfire.java
index 158f5bb628f..6a3a0229284 100644
--- a/Mage.Sets/src/mage/cards/c/ChandrasSpitfire.java
+++ b/Mage.Sets/src/mage/cards/c/ChandrasSpitfire.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ChandrasSpitfire extends CardImpl {
+public final class ChandrasSpitfire extends CardImpl {
public ChandrasSpitfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChangeOfHeart.java b/Mage.Sets/src/mage/cards/c/ChangeOfHeart.java
index a2416a3c4ea..623c8a77322 100644
--- a/Mage.Sets/src/mage/cards/c/ChangeOfHeart.java
+++ b/Mage.Sets/src/mage/cards/c/ChangeOfHeart.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ChangeOfHeart extends CardImpl {
+public final class ChangeOfHeart extends CardImpl {
public ChangeOfHeart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChangelingBerserker.java b/Mage.Sets/src/mage/cards/c/ChangelingBerserker.java
index d57e785cb8d..ae0c18b3129 100644
--- a/Mage.Sets/src/mage/cards/c/ChangelingBerserker.java
+++ b/Mage.Sets/src/mage/cards/c/ChangelingBerserker.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ChangelingBerserker extends CardImpl {
+public final class ChangelingBerserker extends CardImpl {
public ChangelingBerserker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChangelingHero.java b/Mage.Sets/src/mage/cards/c/ChangelingHero.java
index d9cd6680535..ead167734c7 100644
--- a/Mage.Sets/src/mage/cards/c/ChangelingHero.java
+++ b/Mage.Sets/src/mage/cards/c/ChangelingHero.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ChangelingHero extends CardImpl {
+public final class ChangelingHero extends CardImpl {
public ChangelingHero(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChangelingSentinel.java b/Mage.Sets/src/mage/cards/c/ChangelingSentinel.java
index fdc003ffc9e..d59036f4b0b 100644
--- a/Mage.Sets/src/mage/cards/c/ChangelingSentinel.java
+++ b/Mage.Sets/src/mage/cards/c/ChangelingSentinel.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ChangelingSentinel extends CardImpl {
+public final class ChangelingSentinel extends CardImpl {
public ChangelingSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChangelingTitan.java b/Mage.Sets/src/mage/cards/c/ChangelingTitan.java
index c04657ce4cb..31754112f18 100644
--- a/Mage.Sets/src/mage/cards/c/ChangelingTitan.java
+++ b/Mage.Sets/src/mage/cards/c/ChangelingTitan.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ChangelingTitan extends CardImpl {
+public final class ChangelingTitan extends CardImpl {
public ChangelingTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Channel.java b/Mage.Sets/src/mage/cards/c/Channel.java
index ceefa9df0bb..66dc86200b2 100644
--- a/Mage.Sets/src/mage/cards/c/Channel.java
+++ b/Mage.Sets/src/mage/cards/c/Channel.java
@@ -51,7 +51,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author emerald000
*/
-public class Channel extends CardImpl {
+public final class Channel extends CardImpl {
public Channel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChannelHarm.java b/Mage.Sets/src/mage/cards/c/ChannelHarm.java
index 9123edb2340..28e4725e47a 100644
--- a/Mage.Sets/src/mage/cards/c/ChannelHarm.java
+++ b/Mage.Sets/src/mage/cards/c/ChannelHarm.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class ChannelHarm extends CardImpl {
+public final class ChannelHarm extends CardImpl {
public ChannelHarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChannelTheSuns.java b/Mage.Sets/src/mage/cards/c/ChannelTheSuns.java
index 9e5dfd63d5c..48ee6c9a6d1 100644
--- a/Mage.Sets/src/mage/cards/c/ChannelTheSuns.java
+++ b/Mage.Sets/src/mage/cards/c/ChannelTheSuns.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author magenoxx
*/
-public class ChannelTheSuns extends CardImpl {
+public final class ChannelTheSuns extends CardImpl {
public ChannelTheSuns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChannelerInitiate.java b/Mage.Sets/src/mage/cards/c/ChannelerInitiate.java
index 2d93fce5844..742c3078eb7 100644
--- a/Mage.Sets/src/mage/cards/c/ChannelerInitiate.java
+++ b/Mage.Sets/src/mage/cards/c/ChannelerInitiate.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class ChannelerInitiate extends CardImpl {
+public final class ChannelerInitiate extends CardImpl {
public ChannelerInitiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChantOfTheSkifsang.java b/Mage.Sets/src/mage/cards/c/ChantOfTheSkifsang.java
index 736e8172c9b..6abe69427db 100644
--- a/Mage.Sets/src/mage/cards/c/ChantOfTheSkifsang.java
+++ b/Mage.Sets/src/mage/cards/c/ChantOfTheSkifsang.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class ChantOfTheSkifsang extends CardImpl {
+public final class ChantOfTheSkifsang extends CardImpl {
public ChantOfTheSkifsang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChantOfVituGhazi.java b/Mage.Sets/src/mage/cards/c/ChantOfVituGhazi.java
index 57bcb8565d6..bb3d64b0829 100644
--- a/Mage.Sets/src/mage/cards/c/ChantOfVituGhazi.java
+++ b/Mage.Sets/src/mage/cards/c/ChantOfVituGhazi.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ChantOfVituGhazi extends CardImpl {
+public final class ChantOfVituGhazi extends CardImpl {
public ChantOfVituGhazi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{6}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChaosCharm.java b/Mage.Sets/src/mage/cards/c/ChaosCharm.java
index 3d1d640ee54..aa538c13b22 100644
--- a/Mage.Sets/src/mage/cards/c/ChaosCharm.java
+++ b/Mage.Sets/src/mage/cards/c/ChaosCharm.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ChaosCharm extends CardImpl {
+public final class ChaosCharm extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wall");
diff --git a/Mage.Sets/src/mage/cards/c/ChaosHarlequin.java b/Mage.Sets/src/mage/cards/c/ChaosHarlequin.java
index f9d39b82eea..559c11e27a9 100644
--- a/Mage.Sets/src/mage/cards/c/ChaosHarlequin.java
+++ b/Mage.Sets/src/mage/cards/c/ChaosHarlequin.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class ChaosHarlequin extends CardImpl {
+public final class ChaosHarlequin extends CardImpl {
public ChaosHarlequin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChaosImps.java b/Mage.Sets/src/mage/cards/c/ChaosImps.java
index 08bb3375505..a62b2a376a8 100644
--- a/Mage.Sets/src/mage/cards/c/ChaosImps.java
+++ b/Mage.Sets/src/mage/cards/c/ChaosImps.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class ChaosImps extends CardImpl {
+public final class ChaosImps extends CardImpl {
public ChaosImps(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChaosMaw.java b/Mage.Sets/src/mage/cards/c/ChaosMaw.java
index 8d8ccf216a4..7916f847db4 100644
--- a/Mage.Sets/src/mage/cards/c/ChaosMaw.java
+++ b/Mage.Sets/src/mage/cards/c/ChaosMaw.java
@@ -11,7 +11,7 @@ import mage.constants.SubType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.AnotherPredicate;
-public class ChaosMaw extends CardImpl {
+public final class ChaosMaw extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature");
static {
filter.add(new AnotherPredicate());
diff --git a/Mage.Sets/src/mage/cards/c/ChaosMoon.java b/Mage.Sets/src/mage/cards/c/ChaosMoon.java
index 8ece9bb8ee3..1bd0776c8b1 100644
--- a/Mage.Sets/src/mage/cards/c/ChaosMoon.java
+++ b/Mage.Sets/src/mage/cards/c/ChaosMoon.java
@@ -33,13 +33,10 @@ import mage.Mana;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
-import mage.abilities.common.TapForManaAllTriggeredManaAbility;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
-import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.Effect;
import mage.abilities.effects.mana.AddManaToManaPoolTargetControllerEffect;
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
-import mage.abilities.effects.common.ManaEffect;
import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.ReplacementEffectImpl;
@@ -47,7 +44,6 @@ import mage.abilities.mana.DelayedTriggeredManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.mageobject.ColorPredicate;
@@ -64,13 +60,12 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class ChaosMoon extends CardImpl {
+public final class ChaosMoon extends CardImpl {
public ChaosMoon(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
-
- // At the beginning of each upkeep, count the number of permanents. If the number is odd, until end of turn, red creatures get +1/+1 and whenever a player taps a Mountain for mana, that player adds {R} to their mana pool (in addition to the mana the land produces). If the number is even, until end of turn, red creatures get -1/-1 and if a player taps a Mountain for mana, that Mountain produces colorless mana instead of any other type.
+ // At the beginning of each upkeep, count the number of permanents. If the number is odd, until end of turn, red creatures get +1/+1 and whenever a player taps a Mountain for mana, that player adds {R} (in addition to the mana the land produces). If the number is even, until end of turn, red creatures get -1/-1 and if a player taps a Mountain for mana, that Mountain produces colorless mana instead of any other type.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new ChaosMoonEffect(), TargetController.ANY, false));
}
@@ -94,7 +89,7 @@ class ChaosMoonEffect extends OneShotEffect {
public ChaosMoonEffect() {
super(Outcome.Neutral);
- this.staticText = "count the number of permanents. If the number is odd, until end of turn, red creatures get +1/+1 and whenever a player taps a Mountain for mana, that player adds {R} to their mana pool (in addition to the mana the land produces). If the number is even, until end of turn, red creatures get -1/-1 and if a player taps a Mountain for mana, that Mountain produces colorless mana instead of any other type";
+ this.staticText = "count the number of permanents. If the number is odd, until end of turn, red creatures get +1/+1 and whenever a player taps a Mountain for mana, that player adds {R} (in addition to the mana the land produces). If the number is even, until end of turn, red creatures get -1/-1 and if a player taps a Mountain for mana, that Mountain produces colorless mana instead of any other type";
}
public ChaosMoonEffect(final ChaosMoonEffect effect) {
@@ -115,8 +110,7 @@ class ChaosMoonEffect extends OneShotEffect {
if (permanentsInPlay % 2 != 0) {
game.addEffect(new BoostAllEffect(1, 1, Duration.EndOfTurn, filter, false), source);
new CreateDelayedTriggeredAbilityEffect(new ChaosMoonOddTriggeredAbility()).apply(game, source);
- }
- // Even
+ } // Even
else {
game.addEffect(new BoostAllEffect(-1, -1, Duration.EndOfTurn, filter, false), source);
game.addEffect(new ChaosMoonEvenReplacementEffect(), source);
@@ -168,7 +162,7 @@ class ChaosMoonOddTriggeredAbility extends DelayedTriggeredManaAbility {
@Override
public String getRule() {
- return "Until end of turn, whenever a player taps a Mountain for mana, that player adds {R} to their mana pool";
+ return "Until end of turn, whenever a player taps a Mountain for mana, that player adds {R}";
}
}
diff --git a/Mage.Sets/src/mage/cards/c/ChaosWarp.java b/Mage.Sets/src/mage/cards/c/ChaosWarp.java
index b559466c636..89a69c33846 100644
--- a/Mage.Sets/src/mage/cards/c/ChaosWarp.java
+++ b/Mage.Sets/src/mage/cards/c/ChaosWarp.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
* @author Mitchel Stein
*
*/
-public class ChaosWarp extends CardImpl {
+public final class ChaosWarp extends CardImpl {
public ChaosWarp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Chaoslace.java b/Mage.Sets/src/mage/cards/c/Chaoslace.java
index 4dd6138b688..9d3986f178c 100644
--- a/Mage.Sets/src/mage/cards/c/Chaoslace.java
+++ b/Mage.Sets/src/mage/cards/c/Chaoslace.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author AlumiuN
*/
-public class Chaoslace extends CardImpl {
+public final class Chaoslace extends CardImpl {
public Chaoslace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Chaosphere.java b/Mage.Sets/src/mage/cards/c/Chaosphere.java
index 9e1ae1af641..f4bc7724716 100644
--- a/Mage.Sets/src/mage/cards/c/Chaosphere.java
+++ b/Mage.Sets/src/mage/cards/c/Chaosphere.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class Chaosphere extends CardImpl {
+public final class Chaosphere extends CardImpl {
static final private FilterCreaturePermanent filterCreature = new FilterCreaturePermanent();
static final private String rule = "Creatures without flying have reach.";
diff --git a/Mage.Sets/src/mage/cards/c/ChaoticBacklash.java b/Mage.Sets/src/mage/cards/c/ChaoticBacklash.java
index f73f75e9d06..765cbee72f4 100644
--- a/Mage.Sets/src/mage/cards/c/ChaoticBacklash.java
+++ b/Mage.Sets/src/mage/cards/c/ChaoticBacklash.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class ChaoticBacklash extends CardImpl {
+public final class ChaoticBacklash extends CardImpl {
public ChaoticBacklash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChaoticGoo.java b/Mage.Sets/src/mage/cards/c/ChaoticGoo.java
index ae6ed5d317f..986919c8ef2 100644
--- a/Mage.Sets/src/mage/cards/c/ChaoticGoo.java
+++ b/Mage.Sets/src/mage/cards/c/ChaoticGoo.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class ChaoticGoo extends CardImpl {
+public final class ChaoticGoo extends CardImpl {
public ChaoticGoo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChaoticStrike.java b/Mage.Sets/src/mage/cards/c/ChaoticStrike.java
index fb504ea0b7a..4f0b350a7d5 100644
--- a/Mage.Sets/src/mage/cards/c/ChaoticStrike.java
+++ b/Mage.Sets/src/mage/cards/c/ChaoticStrike.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ChaoticStrike extends CardImpl {
+public final class ChaoticStrike extends CardImpl {
public ChaoticStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChapelGeist.java b/Mage.Sets/src/mage/cards/c/ChapelGeist.java
index b330a6932dc..fb273c74d61 100644
--- a/Mage.Sets/src/mage/cards/c/ChapelGeist.java
+++ b/Mage.Sets/src/mage/cards/c/ChapelGeist.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ChapelGeist extends CardImpl {
+public final class ChapelGeist extends CardImpl {
public ChapelGeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChaplainsBlessing.java b/Mage.Sets/src/mage/cards/c/ChaplainsBlessing.java
index eb8c60bbda5..bb62c1cc8de 100644
--- a/Mage.Sets/src/mage/cards/c/ChaplainsBlessing.java
+++ b/Mage.Sets/src/mage/cards/c/ChaplainsBlessing.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class ChaplainsBlessing extends CardImpl {
+public final class ChaplainsBlessing extends CardImpl {
public ChaplainsBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Char.java b/Mage.Sets/src/mage/cards/c/Char.java
index b9defa2b2ec..c6e7826bdcc 100644
--- a/Mage.Sets/src/mage/cards/c/Char.java
+++ b/Mage.Sets/src/mage/cards/c/Char.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Char extends CardImpl {
+public final class Char extends CardImpl {
public Char(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CharRumbler.java b/Mage.Sets/src/mage/cards/c/CharRumbler.java
index 61480127598..f07231fc66d 100644
--- a/Mage.Sets/src/mage/cards/c/CharRumbler.java
+++ b/Mage.Sets/src/mage/cards/c/CharRumbler.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class CharRumbler extends CardImpl {
+public final class CharRumbler extends CardImpl {
public CharRumbler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CharcoalDiamond.java b/Mage.Sets/src/mage/cards/c/CharcoalDiamond.java
index e14a7bf3bde..5d78eff9453 100644
--- a/Mage.Sets/src/mage/cards/c/CharcoalDiamond.java
+++ b/Mage.Sets/src/mage/cards/c/CharcoalDiamond.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Quercitron
*/
-public class CharcoalDiamond extends CardImpl {
+public final class CharcoalDiamond extends CardImpl {
public CharcoalDiamond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/Charge.java b/Mage.Sets/src/mage/cards/c/Charge.java
index e9146dffa44..b3aa3f0a277 100644
--- a/Mage.Sets/src/mage/cards/c/Charge.java
+++ b/Mage.Sets/src/mage/cards/c/Charge.java
@@ -8,7 +8,7 @@ import mage.constants.Duration;
import java.util.UUID;
-public class Charge extends CardImpl {
+public final class Charge extends CardImpl {
public Charge(UUID ownerId, CardSetInfo cardSetInfo){
super(ownerId, cardSetInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChargeAcrossTheAraba.java b/Mage.Sets/src/mage/cards/c/ChargeAcrossTheAraba.java
index d7467b824a4..2fe593b6127 100644
--- a/Mage.Sets/src/mage/cards/c/ChargeAcrossTheAraba.java
+++ b/Mage.Sets/src/mage/cards/c/ChargeAcrossTheAraba.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ChargeAcrossTheAraba extends CardImpl {
+public final class ChargeAcrossTheAraba extends CardImpl {
public ChargeAcrossTheAraba(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChargingBadger.java b/Mage.Sets/src/mage/cards/c/ChargingBadger.java
index f45a0632958..63137526961 100644
--- a/Mage.Sets/src/mage/cards/c/ChargingBadger.java
+++ b/Mage.Sets/src/mage/cards/c/ChargingBadger.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ChargingBadger extends CardImpl {
+public final class ChargingBadger extends CardImpl {
public ChargingBadger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChargingBandits.java b/Mage.Sets/src/mage/cards/c/ChargingBandits.java
index 9b2eaacdcaa..384db9e8e64 100644
--- a/Mage.Sets/src/mage/cards/c/ChargingBandits.java
+++ b/Mage.Sets/src/mage/cards/c/ChargingBandits.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class ChargingBandits extends CardImpl {
+public final class ChargingBandits extends CardImpl {
public ChargingBandits(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ChargingBinox.java b/Mage.Sets/src/mage/cards/c/ChargingBinox.java
new file mode 100644
index 00000000000..76768d8785d
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/c/ChargingBinox.java
@@ -0,0 +1,66 @@
+/*
+ * 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.keyword.AssistAbility;
+import mage.abilities.keyword.TrampleAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+
+/**
+ *
+ * @author emerald000
+ */
+public final class ChargingBinox extends CardImpl {
+
+ public ChargingBinox(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{7}{G}");
+
+ this.subtype.add(SubType.BEAST);
+ this.power = new MageInt(7);
+ this.toughness = new MageInt(5);
+
+ // Assist (Another player can pay up to {7} of this spell's cost.)
+ this.addAbility(new AssistAbility());
+ // Trample
+ this.addAbility(TrampleAbility.getInstance());
+ }
+
+ public ChargingBinox(final ChargingBinox card) {
+ super(card);
+ }
+
+ @Override
+ public ChargingBinox copy() {
+ return new ChargingBinox(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/c/ChargingCinderhorn.java b/Mage.Sets/src/mage/cards/c/ChargingCinderhorn.java
index 5ec6e62c78c..b1b6254984e 100644
--- a/Mage.Sets/src/mage/cards/c/ChargingCinderhorn.java
+++ b/Mage.Sets/src/mage/cards/c/ChargingCinderhorn.java
@@ -53,7 +53,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author spjspj
*/
-public class ChargingCinderhorn extends CardImpl {
+public final class ChargingCinderhorn extends CardImpl {
public ChargingCinderhorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChargingGriffin.java b/Mage.Sets/src/mage/cards/c/ChargingGriffin.java
index 9cd953e2db1..9a194986c3f 100644
--- a/Mage.Sets/src/mage/cards/c/ChargingGriffin.java
+++ b/Mage.Sets/src/mage/cards/c/ChargingGriffin.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author jeffwadsworth
*/
-public class ChargingGriffin extends CardImpl {
+public final class ChargingGriffin extends CardImpl {
public ChargingGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChargingMonstrosaur.java b/Mage.Sets/src/mage/cards/c/ChargingMonstrosaur.java
index f56a6d9c23a..dad5ea6df57 100644
--- a/Mage.Sets/src/mage/cards/c/ChargingMonstrosaur.java
+++ b/Mage.Sets/src/mage/cards/c/ChargingMonstrosaur.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class ChargingMonstrosaur extends CardImpl {
+public final class ChargingMonstrosaur extends CardImpl {
public ChargingMonstrosaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChargingPaladin.java b/Mage.Sets/src/mage/cards/c/ChargingPaladin.java
index d23e9d4e289..5d2fc80221a 100644
--- a/Mage.Sets/src/mage/cards/c/ChargingPaladin.java
+++ b/Mage.Sets/src/mage/cards/c/ChargingPaladin.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author daagar
*/
-public class ChargingPaladin extends CardImpl {
+public final class ChargingPaladin extends CardImpl {
public ChargingPaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChargingRhino.java b/Mage.Sets/src/mage/cards/c/ChargingRhino.java
index 8b9f3754fb9..6cbdd291490 100644
--- a/Mage.Sets/src/mage/cards/c/ChargingRhino.java
+++ b/Mage.Sets/src/mage/cards/c/ChargingRhino.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ChargingRhino extends CardImpl {
+public final class ChargingRhino extends CardImpl {
public ChargingRhino(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChargingSlateback.java b/Mage.Sets/src/mage/cards/c/ChargingSlateback.java
index ee7ae262195..63896dd59a6 100644
--- a/Mage.Sets/src/mage/cards/c/ChargingSlateback.java
+++ b/Mage.Sets/src/mage/cards/c/ChargingSlateback.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ChargingSlateback extends CardImpl {
+public final class ChargingSlateback extends CardImpl {
public ChargingSlateback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChargingTroll.java b/Mage.Sets/src/mage/cards/c/ChargingTroll.java
index 3740430d70c..cbe4c131f1f 100644
--- a/Mage.Sets/src/mage/cards/c/ChargingTroll.java
+++ b/Mage.Sets/src/mage/cards/c/ChargingTroll.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ChargingTroll extends CardImpl {
+public final class ChargingTroll extends CardImpl {
public ChargingTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChargingTuskodon.java b/Mage.Sets/src/mage/cards/c/ChargingTuskodon.java
index 8af07485e06..bbd05bdea66 100644
--- a/Mage.Sets/src/mage/cards/c/ChargingTuskodon.java
+++ b/Mage.Sets/src/mage/cards/c/ChargingTuskodon.java
@@ -49,7 +49,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class ChargingTuskodon extends CardImpl {
+public final class ChargingTuskodon extends CardImpl {
public ChargingTuskodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChariotOfVictory.java b/Mage.Sets/src/mage/cards/c/ChariotOfVictory.java
index 9207df79dde..a31876d4279 100644
--- a/Mage.Sets/src/mage/cards/c/ChariotOfVictory.java
+++ b/Mage.Sets/src/mage/cards/c/ChariotOfVictory.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ChariotOfVictory extends CardImpl {
+public final class ChariotOfVictory extends CardImpl {
public ChariotOfVictory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/c/Charisma.java b/Mage.Sets/src/mage/cards/c/Charisma.java
index cfde550460a..41c5de84d8f 100644
--- a/Mage.Sets/src/mage/cards/c/Charisma.java
+++ b/Mage.Sets/src/mage/cards/c/Charisma.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class Charisma extends CardImpl {
+public final class Charisma extends CardImpl {
private static final String rule = "gain control of the other creature for as long as {this} remains on the battlefield";
diff --git a/Mage.Sets/src/mage/cards/c/CharmPeddler.java b/Mage.Sets/src/mage/cards/c/CharmPeddler.java
index 77bb606ceb6..c37c342eb9b 100644
--- a/Mage.Sets/src/mage/cards/c/CharmPeddler.java
+++ b/Mage.Sets/src/mage/cards/c/CharmPeddler.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class CharmPeddler extends CardImpl {
+public final class CharmPeddler extends CardImpl {
public CharmPeddler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CharmbreakerDevils.java b/Mage.Sets/src/mage/cards/c/CharmbreakerDevils.java
index 36e9897dfc1..9aaaded0e8d 100644
--- a/Mage.Sets/src/mage/cards/c/CharmbreakerDevils.java
+++ b/Mage.Sets/src/mage/cards/c/CharmbreakerDevils.java
@@ -55,7 +55,7 @@ import mage.util.RandomUtil;
*
* @author North
*/
-public class CharmbreakerDevils extends CardImpl {
+public final class CharmbreakerDevils extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery card");
diff --git a/Mage.Sets/src/mage/cards/c/CharmedGriffin.java b/Mage.Sets/src/mage/cards/c/CharmedGriffin.java
index 93e724de4f8..cbaa781eb52 100644
--- a/Mage.Sets/src/mage/cards/c/CharmedGriffin.java
+++ b/Mage.Sets/src/mage/cards/c/CharmedGriffin.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInHand;
*
* @author TheElk801
*/
-public class CharmedGriffin extends CardImpl {
+public final class CharmedGriffin extends CardImpl {
public CharmedGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CharmedPendant.java b/Mage.Sets/src/mage/cards/c/CharmedPendant.java
index 325086fe560..e8b120bf0a9 100644
--- a/Mage.Sets/src/mage/cards/c/CharmedPendant.java
+++ b/Mage.Sets/src/mage/cards/c/CharmedPendant.java
@@ -61,7 +61,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class CharmedPendant extends CardImpl {
+public final class CharmedPendant extends CardImpl {
public CharmedPendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
@@ -98,12 +98,12 @@ class CharmedPendantAbility extends ActivatedManaAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
Player player = game.getPlayer(playerId);
if (player != null && !player.isInPayManaMode()) { // while paying the costs of a spell you cant activate this
return super.canActivate(playerId, game);
}
- return false;
+ return ActivationStatus.getFalse();
}
@Override
diff --git a/Mage.Sets/src/mage/cards/c/CharnelhoardWurm.java b/Mage.Sets/src/mage/cards/c/CharnelhoardWurm.java
index 4be731363ff..ee2f089eb49 100644
--- a/Mage.Sets/src/mage/cards/c/CharnelhoardWurm.java
+++ b/Mage.Sets/src/mage/cards/c/CharnelhoardWurm.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class CharnelhoardWurm extends CardImpl {
+public final class CharnelhoardWurm extends CardImpl {
public CharnelhoardWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChartACourse.java b/Mage.Sets/src/mage/cards/c/ChartACourse.java
index 5e205b28b71..60e90391f98 100644
--- a/Mage.Sets/src/mage/cards/c/ChartACourse.java
+++ b/Mage.Sets/src/mage/cards/c/ChartACourse.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author TheElk801
*/
-public class ChartACourse extends CardImpl {
+public final class ChartACourse extends CardImpl {
public ChartACourse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChartoothCougar.java b/Mage.Sets/src/mage/cards/c/ChartoothCougar.java
index 8300964eec3..b6162292960 100644
--- a/Mage.Sets/src/mage/cards/c/ChartoothCougar.java
+++ b/Mage.Sets/src/mage/cards/c/ChartoothCougar.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class ChartoothCougar extends CardImpl {
+public final class ChartoothCougar extends CardImpl {
public ChartoothCougar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChasmDrake.java b/Mage.Sets/src/mage/cards/c/ChasmDrake.java
index 0b8ee850e21..8e1480dd593 100644
--- a/Mage.Sets/src/mage/cards/c/ChasmDrake.java
+++ b/Mage.Sets/src/mage/cards/c/ChasmDrake.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class ChasmDrake extends CardImpl {
+public final class ChasmDrake extends CardImpl {
public ChasmDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChasmGuide.java b/Mage.Sets/src/mage/cards/c/ChasmGuide.java
index 8f774529f03..1ee27265f6d 100644
--- a/Mage.Sets/src/mage/cards/c/ChasmGuide.java
+++ b/Mage.Sets/src/mage/cards/c/ChasmGuide.java
@@ -43,7 +43,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX2
*/
-public class ChasmGuide extends CardImpl {
+public final class ChasmGuide extends CardImpl {
public ChasmGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChasmSkulker.java b/Mage.Sets/src/mage/cards/c/ChasmSkulker.java
index 1af20617a15..4f473abb265 100644
--- a/Mage.Sets/src/mage/cards/c/ChasmSkulker.java
+++ b/Mage.Sets/src/mage/cards/c/ChasmSkulker.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ChasmSkulker extends CardImpl {
+public final class ChasmSkulker extends CardImpl {
public ChasmSkulker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Chastise.java b/Mage.Sets/src/mage/cards/c/Chastise.java
index 3628304e443..c9106dc3dcd 100644
--- a/Mage.Sets/src/mage/cards/c/Chastise.java
+++ b/Mage.Sets/src/mage/cards/c/Chastise.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author Plopman
*/
-public class Chastise extends CardImpl {
+public final class Chastise extends CardImpl {
public Chastise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChatterOfTheSquirrel.java b/Mage.Sets/src/mage/cards/c/ChatterOfTheSquirrel.java
index 32e2cca8dd8..c86d8fca033 100644
--- a/Mage.Sets/src/mage/cards/c/ChatterOfTheSquirrel.java
+++ b/Mage.Sets/src/mage/cards/c/ChatterOfTheSquirrel.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.SquirrelToken;
*
* @author cbt33
*/
-public class ChatterOfTheSquirrel extends CardImpl {
+public final class ChatterOfTheSquirrel extends CardImpl {
public ChatterOfTheSquirrel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CheeringFanatic.java b/Mage.Sets/src/mage/cards/c/CheeringFanatic.java
new file mode 100644
index 00000000000..5b40034be22
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/c/CheeringFanatic.java
@@ -0,0 +1,103 @@
+/*
+ * 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.Ability;
+import mage.abilities.common.AttacksTriggeredAbility;
+import mage.abilities.effects.ContinuousEffect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.NameACardEffect;
+import mage.abilities.effects.common.NameACardEffect.TypeOfName;
+import mage.abilities.effects.common.cost.SpellsCostReductionAllEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.filter.FilterCard;
+import mage.filter.predicate.mageobject.NamePredicate;
+import mage.game.Game;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class CheeringFanatic extends CardImpl {
+
+ public CheeringFanatic(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
+
+ this.subtype.add(SubType.GOBLIN);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Whenever Cheering Fanatic attacks, choose a card name. Spells with the chosen name cost {1} less to cast this turn.
+ this.addAbility(new AttacksTriggeredAbility(new CheeringFanaticEffect(), false));
+ }
+
+ public CheeringFanatic(final CheeringFanatic card) {
+ super(card);
+ }
+
+ @Override
+ public CheeringFanatic copy() {
+ return new CheeringFanatic(this);
+ }
+}
+
+class CheeringFanaticEffect extends OneShotEffect {
+
+ CheeringFanaticEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "choose a card name. Spells with the chosen name cost {1} less to cast this turn";
+ }
+
+ CheeringFanaticEffect(final CheeringFanaticEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public CheeringFanaticEffect copy() {
+ return new CheeringFanaticEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ new NameACardEffect(TypeOfName.ALL).apply(game, source);
+ String cardName = (String) game.getState().getValue(source.getSourceId().toString() + NameACardEffect.INFO_KEY);
+ FilterCard filter = new FilterCard();
+ filter.add(new NamePredicate(cardName));
+ ContinuousEffect effect = new SpellsCostReductionAllEffect(filter, 1);
+ effect.setDuration(Duration.EndOfTurn);
+ game.addEffect(effect, source);
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/c/ChemistersTrick.java b/Mage.Sets/src/mage/cards/c/ChemistersTrick.java
index 043a0232486..03b447a186b 100644
--- a/Mage.Sets/src/mage/cards/c/ChemistersTrick.java
+++ b/Mage.Sets/src/mage/cards/c/ChemistersTrick.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ChemistersTrick extends CardImpl {
+public final class ChemistersTrick extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/c/CherishedHatchling.java b/Mage.Sets/src/mage/cards/c/CherishedHatchling.java
index 6907711ae04..20729b70067 100644
--- a/Mage.Sets/src/mage/cards/c/CherishedHatchling.java
+++ b/Mage.Sets/src/mage/cards/c/CherishedHatchling.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class CherishedHatchling extends CardImpl {
+public final class CherishedHatchling extends CardImpl {
private static final FilterCard filterCard = new FilterCard("Dinosaur spells");
diff --git a/Mage.Sets/src/mage/cards/c/Chewbacca.java b/Mage.Sets/src/mage/cards/c/Chewbacca.java
index f87b5972ef8..9538ece3c35 100644
--- a/Mage.Sets/src/mage/cards/c/Chewbacca.java
+++ b/Mage.Sets/src/mage/cards/c/Chewbacca.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Styxo
*/
-public class Chewbacca extends CardImpl {
+public final class Chewbacca extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control");
diff --git a/Mage.Sets/src/mage/cards/c/ChickenALaKing.java b/Mage.Sets/src/mage/cards/c/ChickenALaKing.java
index e12636431ff..84e9db8bc0e 100644
--- a/Mage.Sets/src/mage/cards/c/ChickenALaKing.java
+++ b/Mage.Sets/src/mage/cards/c/ChickenALaKing.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author spjspj
*/
-public class ChickenALaKing extends CardImpl {
+public final class ChickenALaKing extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Chicken you control");
diff --git a/Mage.Sets/src/mage/cards/c/ChickenEgg.java b/Mage.Sets/src/mage/cards/c/ChickenEgg.java
index 8f09a83c9ab..ced51c6af84 100644
--- a/Mage.Sets/src/mage/cards/c/ChickenEgg.java
+++ b/Mage.Sets/src/mage/cards/c/ChickenEgg.java
@@ -50,7 +50,7 @@ import java.util.UUID;
* @author ciaccona007
*/
-public class ChickenEgg extends CardImpl {
+public final class ChickenEgg extends CardImpl {
public ChickenEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ChiefChirpa.java b/Mage.Sets/src/mage/cards/c/ChiefChirpa.java
index 855cea3a057..97456fc93f2 100644
--- a/Mage.Sets/src/mage/cards/c/ChiefChirpa.java
+++ b/Mage.Sets/src/mage/cards/c/ChiefChirpa.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Styxo
*/
-public class ChiefChirpa extends CardImpl {
+public final class ChiefChirpa extends CardImpl {
private static final FilterCreaturePermanent diedFilter = new FilterCreaturePermanent("a green creature you control");
private static final FilterControlledCreaturePermanent ewokFilter = new FilterControlledCreaturePermanent("another target Ewok creature you control");
diff --git a/Mage.Sets/src/mage/cards/c/ChiefEngineer.java b/Mage.Sets/src/mage/cards/c/ChiefEngineer.java
index 6d2c2ff102d..b251989dff4 100644
--- a/Mage.Sets/src/mage/cards/c/ChiefEngineer.java
+++ b/Mage.Sets/src/mage/cards/c/ChiefEngineer.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterArtifactSpell;
*
* @author LevelX2
*/
-public class ChiefEngineer extends CardImpl {
+public final class ChiefEngineer extends CardImpl {
public ChiefEngineer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChiefOfTheEdge.java b/Mage.Sets/src/mage/cards/c/ChiefOfTheEdge.java
index 2b7e2ff4f2e..cb364f923ba 100644
--- a/Mage.Sets/src/mage/cards/c/ChiefOfTheEdge.java
+++ b/Mage.Sets/src/mage/cards/c/ChiefOfTheEdge.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class ChiefOfTheEdge extends CardImpl {
+public final class ChiefOfTheEdge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Warrior creatures");
diff --git a/Mage.Sets/src/mage/cards/c/ChiefOfTheFoundry.java b/Mage.Sets/src/mage/cards/c/ChiefOfTheFoundry.java
index 09f2b30afa9..0e5466920bb 100644
--- a/Mage.Sets/src/mage/cards/c/ChiefOfTheFoundry.java
+++ b/Mage.Sets/src/mage/cards/c/ChiefOfTheFoundry.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class ChiefOfTheFoundry extends CardImpl {
+public final class ChiefOfTheFoundry extends CardImpl {
private static final FilterCreaturePermanent filterBoosted = new FilterCreaturePermanent("Other artifact creatures you control");
diff --git a/Mage.Sets/src/mage/cards/c/ChiefOfTheScale.java b/Mage.Sets/src/mage/cards/c/ChiefOfTheScale.java
index 1247817099b..090154bdbe6 100644
--- a/Mage.Sets/src/mage/cards/c/ChiefOfTheScale.java
+++ b/Mage.Sets/src/mage/cards/c/ChiefOfTheScale.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class ChiefOfTheScale extends CardImpl {
+public final class ChiefOfTheScale extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Warrior creatures");
diff --git a/Mage.Sets/src/mage/cards/c/ChieftainEnDal.java b/Mage.Sets/src/mage/cards/c/ChieftainEnDal.java
index e6f55fc33cf..3caddab1f81 100644
--- a/Mage.Sets/src/mage/cards/c/ChieftainEnDal.java
+++ b/Mage.Sets/src/mage/cards/c/ChieftainEnDal.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author TheElk801
*/
-public class ChieftainEnDal extends CardImpl {
+public final class ChieftainEnDal extends CardImpl {
public ChieftainEnDal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChildOfAlara.java b/Mage.Sets/src/mage/cards/c/ChildOfAlara.java
index ad4c0d7f957..b8cd6ace870 100644
--- a/Mage.Sets/src/mage/cards/c/ChildOfAlara.java
+++ b/Mage.Sets/src/mage/cards/c/ChildOfAlara.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterNonlandPermanent;
*
* @author jeffwadsworth
*/
-public class ChildOfAlara extends CardImpl {
+public final class ChildOfAlara extends CardImpl {
public ChildOfAlara(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChildOfGaea.java b/Mage.Sets/src/mage/cards/c/ChildOfGaea.java
index 4cca45a94e4..e6e9476a8b8 100644
--- a/Mage.Sets/src/mage/cards/c/ChildOfGaea.java
+++ b/Mage.Sets/src/mage/cards/c/ChildOfGaea.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class ChildOfGaea extends CardImpl {
+public final class ChildOfGaea extends CardImpl {
public ChildOfGaea(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChildOfNight.java b/Mage.Sets/src/mage/cards/c/ChildOfNight.java
index fcfcba2415c..2e5c04b1071 100644
--- a/Mage.Sets/src/mage/cards/c/ChildOfNight.java
+++ b/Mage.Sets/src/mage/cards/c/ChildOfNight.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ChildOfNight extends CardImpl {
+public final class ChildOfNight extends CardImpl {
public ChildOfNight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ChildOfThorns.java b/Mage.Sets/src/mage/cards/c/ChildOfThorns.java
index 390a7cbff0f..78a1f800495 100644
--- a/Mage.Sets/src/mage/cards/c/ChildOfThorns.java
+++ b/Mage.Sets/src/mage/cards/c/ChildOfThorns.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ChildOfThorns extends CardImpl {
+public final class ChildOfThorns extends CardImpl {
public ChildOfThorns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChildhoodHorror.java b/Mage.Sets/src/mage/cards/c/ChildhoodHorror.java
index 4452370a738..1c285666299 100644
--- a/Mage.Sets/src/mage/cards/c/ChildhoodHorror.java
+++ b/Mage.Sets/src/mage/cards/c/ChildhoodHorror.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class ChildhoodHorror extends CardImpl {
+public final class ChildhoodHorror extends CardImpl {
public ChildhoodHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ChildrenOfKorlis.java b/Mage.Sets/src/mage/cards/c/ChildrenOfKorlis.java
index 21fc131f49e..796054ae008 100644
--- a/Mage.Sets/src/mage/cards/c/ChildrenOfKorlis.java
+++ b/Mage.Sets/src/mage/cards/c/ChildrenOfKorlis.java
@@ -47,7 +47,7 @@ import mage.watchers.common.PlayerLostLifeWatcher;
*
* @author LevelX2
*/
-public class ChildrenOfKorlis extends CardImpl {
+public final class ChildrenOfKorlis extends CardImpl {
public ChildrenOfKorlis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Chill.java b/Mage.Sets/src/mage/cards/c/Chill.java
index 44f7109ba68..92fa4ce86b4 100644
--- a/Mage.Sets/src/mage/cards/c/Chill.java
+++ b/Mage.Sets/src/mage/cards/c/Chill.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Quercitron
*/
-public class Chill extends CardImpl {
+public final class Chill extends CardImpl {
private static final FilterCard filter = new FilterCard("Red spells");
static {
diff --git a/Mage.Sets/src/mage/cards/c/ChillHaunting.java b/Mage.Sets/src/mage/cards/c/ChillHaunting.java
index 77610b404dd..0030396c428 100644
--- a/Mage.Sets/src/mage/cards/c/ChillHaunting.java
+++ b/Mage.Sets/src/mage/cards/c/ChillHaunting.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class ChillHaunting extends CardImpl {
+public final class ChillHaunting extends CardImpl {
public ChillHaunting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ChillOfForeboding.java b/Mage.Sets/src/mage/cards/c/ChillOfForeboding.java
index a3e7e9b035a..bb11a3850ae 100644
--- a/Mage.Sets/src/mage/cards/c/ChillOfForeboding.java
+++ b/Mage.Sets/src/mage/cards/c/ChillOfForeboding.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author North
*/
-public class ChillOfForeboding extends CardImpl {
+public final class ChillOfForeboding extends CardImpl {
public ChillOfForeboding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChillToTheBone.java b/Mage.Sets/src/mage/cards/c/ChillToTheBone.java
index 1c4db8d9939..2bcd7067d7e 100644
--- a/Mage.Sets/src/mage/cards/c/ChillToTheBone.java
+++ b/Mage.Sets/src/mage/cards/c/ChillToTheBone.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ChillToTheBone extends CardImpl {
+public final class ChillToTheBone extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonsnow creature");
diff --git a/Mage.Sets/src/mage/cards/c/ChillingApparition.java b/Mage.Sets/src/mage/cards/c/ChillingApparition.java
index d9c336d9548..5dd6da936ac 100644
--- a/Mage.Sets/src/mage/cards/c/ChillingApparition.java
+++ b/Mage.Sets/src/mage/cards/c/ChillingApparition.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class ChillingApparition extends CardImpl {
+public final class ChillingApparition extends CardImpl {
public ChillingApparition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ChillingGrasp.java b/Mage.Sets/src/mage/cards/c/ChillingGrasp.java
index edc5e9f3d1f..9b7bb5736f6 100644
--- a/Mage.Sets/src/mage/cards/c/ChillingGrasp.java
+++ b/Mage.Sets/src/mage/cards/c/ChillingGrasp.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ChillingGrasp extends CardImpl {
+public final class ChillingGrasp extends CardImpl {
public ChillingGrasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChillingShade.java b/Mage.Sets/src/mage/cards/c/ChillingShade.java
index 0205c4d206f..3cdf6df0120 100644
--- a/Mage.Sets/src/mage/cards/c/ChillingShade.java
+++ b/Mage.Sets/src/mage/cards/c/ChillingShade.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class ChillingShade extends CardImpl {
+public final class ChillingShade extends CardImpl {
public ChillingShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ChimeOfNight.java b/Mage.Sets/src/mage/cards/c/ChimeOfNight.java
index bb87ac03324..38062c57a7c 100644
--- a/Mage.Sets/src/mage/cards/c/ChimeOfNight.java
+++ b/Mage.Sets/src/mage/cards/c/ChimeOfNight.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author TheElk801
*/
-public class ChimeOfNight extends CardImpl {
+public final class ChimeOfNight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/c/ChimericCoils.java b/Mage.Sets/src/mage/cards/c/ChimericCoils.java
index 0db1ff9d600..d9c69029e08 100644
--- a/Mage.Sets/src/mage/cards/c/ChimericCoils.java
+++ b/Mage.Sets/src/mage/cards/c/ChimericCoils.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class ChimericCoils extends CardImpl {
+public final class ChimericCoils extends CardImpl {
public ChimericCoils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/c/ChimericEgg.java b/Mage.Sets/src/mage/cards/c/ChimericEgg.java
index 0630e258e3b..5a288e5c605 100644
--- a/Mage.Sets/src/mage/cards/c/ChimericEgg.java
+++ b/Mage.Sets/src/mage/cards/c/ChimericEgg.java
@@ -55,7 +55,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author Pete Rossi
*/
-public class ChimericEgg extends CardImpl {
+public final class ChimericEgg extends CardImpl {
private final static FilterSpell nonArtifactFilter = new FilterSpell("a nonartifact spell");
diff --git a/Mage.Sets/src/mage/cards/c/ChimericIdol.java b/Mage.Sets/src/mage/cards/c/ChimericIdol.java
index b8db34d7b14..c0dcf006f86 100644
--- a/Mage.Sets/src/mage/cards/c/ChimericIdol.java
+++ b/Mage.Sets/src/mage/cards/c/ChimericIdol.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author LevelX2
*/
-public class ChimericIdol extends CardImpl {
+public final class ChimericIdol extends CardImpl {
public ChimericIdol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/c/ChimericMass.java b/Mage.Sets/src/mage/cards/c/ChimericMass.java
index 3c47fffbb33..4a1d531c4a4 100644
--- a/Mage.Sets/src/mage/cards/c/ChimericMass.java
+++ b/Mage.Sets/src/mage/cards/c/ChimericMass.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class ChimericMass extends CardImpl {
+public final class ChimericMass extends CardImpl {
public ChimericMass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{X}");
diff --git a/Mage.Sets/src/mage/cards/c/ChimericSphere.java b/Mage.Sets/src/mage/cards/c/ChimericSphere.java
index 0768740e4c9..a7942a82fd3 100644
--- a/Mage.Sets/src/mage/cards/c/ChimericSphere.java
+++ b/Mage.Sets/src/mage/cards/c/ChimericSphere.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author LoneFox
*/
-public class ChimericSphere extends CardImpl {
+public final class ChimericSphere extends CardImpl {
public ChimericSphere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/c/ChimericStaff.java b/Mage.Sets/src/mage/cards/c/ChimericStaff.java
index fea9809b785..e378c2f66d2 100644
--- a/Mage.Sets/src/mage/cards/c/ChimericStaff.java
+++ b/Mage.Sets/src/mage/cards/c/ChimericStaff.java
@@ -42,7 +42,7 @@ import mage.game.permanent.Permanent;
*
* @author Backfir3
*/
-public class ChimericStaff extends CardImpl {
+public final class ChimericStaff extends CardImpl {
public ChimericStaff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/c/ChimneyImp.java b/Mage.Sets/src/mage/cards/c/ChimneyImp.java
index c29a769a8f7..1807e82cff7 100644
--- a/Mage.Sets/src/mage/cards/c/ChimneyImp.java
+++ b/Mage.Sets/src/mage/cards/c/ChimneyImp.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author djbrez
*/
-public class ChimneyImp extends CardImpl {
+public final class ChimneyImp extends CardImpl {
public ChimneyImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ChiseiHeartOfOceans.java b/Mage.Sets/src/mage/cards/c/ChiseiHeartOfOceans.java
index c2ed315ddf6..3aa87bf52c8 100644
--- a/Mage.Sets/src/mage/cards/c/ChiseiHeartOfOceans.java
+++ b/Mage.Sets/src/mage/cards/c/ChiseiHeartOfOceans.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class ChiseiHeartOfOceans extends CardImpl {
+public final class ChiseiHeartOfOceans extends CardImpl {
private static final FilterPermanent filter = new FilterControlledPermanent("remove a counter from a permanent you control");
diff --git a/Mage.Sets/src/mage/cards/c/ChitinousCloak.java b/Mage.Sets/src/mage/cards/c/ChitinousCloak.java
index 165c8f52c20..ea33b07f0a8 100644
--- a/Mage.Sets/src/mage/cards/c/ChitinousCloak.java
+++ b/Mage.Sets/src/mage/cards/c/ChitinousCloak.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ChitinousCloak extends CardImpl {
+public final class ChitinousCloak extends CardImpl {
public ChitinousCloak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/ChitteringDoom.java b/Mage.Sets/src/mage/cards/c/ChitteringDoom.java
index 7152a7bdee1..596acd97438 100644
--- a/Mage.Sets/src/mage/cards/c/ChitteringDoom.java
+++ b/Mage.Sets/src/mage/cards/c/ChitteringDoom.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SquirrelToken;
*
* @author spjspj
*/
-public class ChitteringDoom extends CardImpl {
+public final class ChitteringDoom extends CardImpl {
public ChitteringDoom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChitteringHost.java b/Mage.Sets/src/mage/cards/c/ChitteringHost.java
index 9e65b786e82..0b67d88a4b6 100644
--- a/Mage.Sets/src/mage/cards/c/ChitteringHost.java
+++ b/Mage.Sets/src/mage/cards/c/ChitteringHost.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ChitteringHost extends MeldCard {
+public final class ChitteringHost extends MeldCard {
public ChitteringHost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.ELDRAZI);
diff --git a/Mage.Sets/src/mage/cards/c/ChitteringRats.java b/Mage.Sets/src/mage/cards/c/ChitteringRats.java
index 537df4938dc..75efbf46d25 100644
--- a/Mage.Sets/src/mage/cards/c/ChitteringRats.java
+++ b/Mage.Sets/src/mage/cards/c/ChitteringRats.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class ChitteringRats extends CardImpl {
+public final class ChitteringRats extends CardImpl {
public ChitteringRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Chlorophant.java b/Mage.Sets/src/mage/cards/c/Chlorophant.java
index ef9e6760fd8..6fc10099738 100644
--- a/Mage.Sets/src/mage/cards/c/Chlorophant.java
+++ b/Mage.Sets/src/mage/cards/c/Chlorophant.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author cbt33
*/
-public class Chlorophant extends CardImpl {
+public final class Chlorophant extends CardImpl {
public Chlorophant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChoArrimAlchemist.java b/Mage.Sets/src/mage/cards/c/ChoArrimAlchemist.java
index 74d31a45303..ffc224553b9 100644
--- a/Mage.Sets/src/mage/cards/c/ChoArrimAlchemist.java
+++ b/Mage.Sets/src/mage/cards/c/ChoArrimAlchemist.java
@@ -52,7 +52,7 @@ import mage.target.TargetSource;
*
* @author anonymous
*/
-public class ChoArrimAlchemist extends CardImpl {
+public final class ChoArrimAlchemist extends CardImpl {
public ChoArrimAlchemist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChoArrimBruiser.java b/Mage.Sets/src/mage/cards/c/ChoArrimBruiser.java
index 8b7db8f03dd..fe79bd44e45 100644
--- a/Mage.Sets/src/mage/cards/c/ChoArrimBruiser.java
+++ b/Mage.Sets/src/mage/cards/c/ChoArrimBruiser.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class ChoArrimBruiser extends CardImpl {
+public final class ChoArrimBruiser extends CardImpl {
public ChoArrimBruiser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChoArrimLegate.java b/Mage.Sets/src/mage/cards/c/ChoArrimLegate.java
index 962177a25bc..36418efb0ec 100644
--- a/Mage.Sets/src/mage/cards/c/ChoArrimLegate.java
+++ b/Mage.Sets/src/mage/cards/c/ChoArrimLegate.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class ChoArrimLegate extends CardImpl {
+public final class ChoArrimLegate extends CardImpl {
private static final FilterPermanent filterPlains = new FilterPermanent();
private static final FilterPermanent filterSwamp = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/c/ChoMannoRevolutionary.java b/Mage.Sets/src/mage/cards/c/ChoMannoRevolutionary.java
index d8009776360..7418f62f60c 100644
--- a/Mage.Sets/src/mage/cards/c/ChoMannoRevolutionary.java
+++ b/Mage.Sets/src/mage/cards/c/ChoMannoRevolutionary.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ChoMannoRevolutionary extends CardImpl {
+public final class ChoMannoRevolutionary extends CardImpl {
public ChoMannoRevolutionary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChoMannosBlessing.java b/Mage.Sets/src/mage/cards/c/ChoMannosBlessing.java
index c2d245cf687..80aeaa903cb 100644
--- a/Mage.Sets/src/mage/cards/c/ChoMannosBlessing.java
+++ b/Mage.Sets/src/mage/cards/c/ChoMannosBlessing.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ChoMannosBlessing extends CardImpl {
+public final class ChoMannosBlessing extends CardImpl {
public ChoMannosBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChoiceOfDamnations.java b/Mage.Sets/src/mage/cards/c/ChoiceOfDamnations.java
index 3fcfe767032..6d4e3256003 100644
--- a/Mage.Sets/src/mage/cards/c/ChoiceOfDamnations.java
+++ b/Mage.Sets/src/mage/cards/c/ChoiceOfDamnations.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class ChoiceOfDamnations extends CardImpl {
+public final class ChoiceOfDamnations extends CardImpl {
public ChoiceOfDamnations(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Choke.java b/Mage.Sets/src/mage/cards/c/Choke.java
index 09d9f6a6107..addfed55e09 100644
--- a/Mage.Sets/src/mage/cards/c/Choke.java
+++ b/Mage.Sets/src/mage/cards/c/Choke.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class Choke extends CardImpl {
+public final class Choke extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Islands");
diff --git a/Mage.Sets/src/mage/cards/c/ChokedEstuary.java b/Mage.Sets/src/mage/cards/c/ChokedEstuary.java
index 6e87364f2c5..af473efa3dc 100644
--- a/Mage.Sets/src/mage/cards/c/ChokedEstuary.java
+++ b/Mage.Sets/src/mage/cards/c/ChokedEstuary.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class ChokedEstuary extends CardImpl {
+public final class ChokedEstuary extends CardImpl {
private static final FilterCard filter = new FilterCard("an Island or Swamp card from your hand");
diff --git a/Mage.Sets/src/mage/cards/c/ChokingFumes.java b/Mage.Sets/src/mage/cards/c/ChokingFumes.java
index 0121ba37249..8883a117886 100644
--- a/Mage.Sets/src/mage/cards/c/ChokingFumes.java
+++ b/Mage.Sets/src/mage/cards/c/ChokingFumes.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author North
*/
-public class ChokingFumes extends CardImpl {
+public final class ChokingFumes extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature();
diff --git a/Mage.Sets/src/mage/cards/c/ChokingRestraints.java b/Mage.Sets/src/mage/cards/c/ChokingRestraints.java
index 44ab15bfa29..d767a8f8b90 100644
--- a/Mage.Sets/src/mage/cards/c/ChokingRestraints.java
+++ b/Mage.Sets/src/mage/cards/c/ChokingRestraints.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ChokingRestraints extends CardImpl {
+public final class ChokingRestraints extends CardImpl {
public ChokingRestraints(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChokingSands.java b/Mage.Sets/src/mage/cards/c/ChokingSands.java
index 371e1202311..de6ba85918a 100644
--- a/Mage.Sets/src/mage/cards/c/ChokingSands.java
+++ b/Mage.Sets/src/mage/cards/c/ChokingSands.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class ChokingSands extends CardImpl {
+public final class ChokingSands extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("non-Swamp land");
diff --git a/Mage.Sets/src/mage/cards/c/ChokingTethers.java b/Mage.Sets/src/mage/cards/c/ChokingTethers.java
index a678ea66c68..71cbb916a83 100644
--- a/Mage.Sets/src/mage/cards/c/ChokingTethers.java
+++ b/Mage.Sets/src/mage/cards/c/ChokingTethers.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ChokingTethers extends CardImpl {
+public final class ChokingTethers extends CardImpl {
public ChokingTethers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChordOfCalling.java b/Mage.Sets/src/mage/cards/c/ChordOfCalling.java
index bd3263ae9c4..1997823a883 100644
--- a/Mage.Sets/src/mage/cards/c/ChordOfCalling.java
+++ b/Mage.Sets/src/mage/cards/c/ChordOfCalling.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author jonubuu
*/
-public class ChordOfCalling extends CardImpl {
+public final class ChordOfCalling extends CardImpl {
public ChordOfCalling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChorusOfMight.java b/Mage.Sets/src/mage/cards/c/ChorusOfMight.java
index dbc66942c68..26a728dcb77 100644
--- a/Mage.Sets/src/mage/cards/c/ChorusOfMight.java
+++ b/Mage.Sets/src/mage/cards/c/ChorusOfMight.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ChorusOfMight extends CardImpl {
+public final class ChorusOfMight extends CardImpl {
public ChorusOfMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChorusOfTheConclave.java b/Mage.Sets/src/mage/cards/c/ChorusOfTheConclave.java
index efe5d55042d..fa12e7f01d8 100644
--- a/Mage.Sets/src/mage/cards/c/ChorusOfTheConclave.java
+++ b/Mage.Sets/src/mage/cards/c/ChorusOfTheConclave.java
@@ -53,7 +53,7 @@ import mage.players.Player;
* @author jeffwadsworth
*
*/
-public class ChorusOfTheConclave extends CardImpl {
+public final class ChorusOfTheConclave extends CardImpl {
public ChorusOfTheConclave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChorusOfTheTides.java b/Mage.Sets/src/mage/cards/c/ChorusOfTheTides.java
index bdf0055fa37..238bf39e862 100644
--- a/Mage.Sets/src/mage/cards/c/ChorusOfTheTides.java
+++ b/Mage.Sets/src/mage/cards/c/ChorusOfTheTides.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ChorusOfTheTides extends CardImpl {
+public final class ChorusOfTheTides extends CardImpl {
public ChorusOfTheTides(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChorusOfWoe.java b/Mage.Sets/src/mage/cards/c/ChorusOfWoe.java
index 1fc2b79a452..dda32f1bcfb 100644
--- a/Mage.Sets/src/mage/cards/c/ChorusOfWoe.java
+++ b/Mage.Sets/src/mage/cards/c/ChorusOfWoe.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class ChorusOfWoe extends CardImpl {
+public final class ChorusOfWoe extends CardImpl {
public ChorusOfWoe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ChosenByHeliod.java b/Mage.Sets/src/mage/cards/c/ChosenByHeliod.java
index 1351f630aae..34b28dea2ef 100644
--- a/Mage.Sets/src/mage/cards/c/ChosenByHeliod.java
+++ b/Mage.Sets/src/mage/cards/c/ChosenByHeliod.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ChosenByHeliod extends CardImpl {
+public final class ChosenByHeliod extends CardImpl {
public ChosenByHeliod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChosenOfMarkov.java b/Mage.Sets/src/mage/cards/c/ChosenOfMarkov.java
index a5dffea59fe..144672e30d5 100644
--- a/Mage.Sets/src/mage/cards/c/ChosenOfMarkov.java
+++ b/Mage.Sets/src/mage/cards/c/ChosenOfMarkov.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class ChosenOfMarkov extends CardImpl {
+public final class ChosenOfMarkov extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Vampire you control");
static {
diff --git a/Mage.Sets/src/mage/cards/c/Chromanticore.java b/Mage.Sets/src/mage/cards/c/Chromanticore.java
index 7224cc683b4..2c3d0990182 100644
--- a/Mage.Sets/src/mage/cards/c/Chromanticore.java
+++ b/Mage.Sets/src/mage/cards/c/Chromanticore.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class Chromanticore extends CardImpl {
+public final class Chromanticore extends CardImpl {
public Chromanticore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChromaticLantern.java b/Mage.Sets/src/mage/cards/c/ChromaticLantern.java
index 67898bbdb28..06b02be13e8 100644
--- a/Mage.Sets/src/mage/cards/c/ChromaticLantern.java
+++ b/Mage.Sets/src/mage/cards/c/ChromaticLantern.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
/**
* @author LevelX2
*/
-public class ChromaticLantern extends CardImpl {
+public final class ChromaticLantern extends CardImpl {
public ChromaticLantern(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/ChromaticSphere.java b/Mage.Sets/src/mage/cards/c/ChromaticSphere.java
index d2ce6876375..c30b95af5a0 100644
--- a/Mage.Sets/src/mage/cards/c/ChromaticSphere.java
+++ b/Mage.Sets/src/mage/cards/c/ChromaticSphere.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ChromaticSphere extends CardImpl {
+public final class ChromaticSphere extends CardImpl {
public ChromaticSphere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/c/ChromaticStar.java b/Mage.Sets/src/mage/cards/c/ChromaticStar.java
index 55b3e3c06cd..41f9d82972b 100644
--- a/Mage.Sets/src/mage/cards/c/ChromaticStar.java
+++ b/Mage.Sets/src/mage/cards/c/ChromaticStar.java
@@ -43,7 +43,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ChromaticStar extends CardImpl {
+public final class ChromaticStar extends CardImpl {
public ChromaticStar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/c/ChromeMox.java b/Mage.Sets/src/mage/cards/c/ChromeMox.java
index b560592dc7b..5ecaf697764 100644
--- a/Mage.Sets/src/mage/cards/c/ChromeMox.java
+++ b/Mage.Sets/src/mage/cards/c/ChromeMox.java
@@ -27,6 +27,7 @@
*/
package mage.cards.c;
+import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import mage.MageObject;
@@ -60,14 +61,14 @@ import mage.util.GameLog;
*
* @author Plopman
*/
-public class ChromeMox extends CardImpl {
+public final class ChromeMox extends CardImpl {
public ChromeMox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{0}");
// Imprint - When Chrome Mox enters the battlefield, you may exile a nonartifact, nonland card from your hand.
this.addAbility(new EntersBattlefieldTriggeredAbility(new ChromeMoxEffect(), true));
- // {tap}: Add one mana of any of the exiled card's colors.
+ // {T}: Add one mana of any of the exiled card's colors.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new ChromeMoxManaEffect(), new TapSourceCost()));
}
@@ -150,16 +151,47 @@ class ChromeMoxManaEffect extends ManaEffect {
@Override
public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- if (player != null) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
checkToFirePossibleEvents(getMana(game, source), game, source);
- player.getManaPool().addMana(getMana(game, source), game, source);
+ controller.getManaPool().addMana(getMana(game, source), game, source);
return true;
}
return false;
}
+ @Override
+ public List getNetMana(Game game, Ability source) {
+ List netMana = new ArrayList<>();
+ Permanent permanent = game.getPermanent(source.getSourceId());
+ if (permanent != null) {
+ List imprinted = permanent.getImprinted();
+ if (!imprinted.isEmpty()) {
+ Card imprintedCard = game.getCard(imprinted.get(0));
+ if (imprintedCard != null) {
+ ObjectColor color = imprintedCard.getColor(game);
+ if (color.isBlack()) {
+ netMana.add(Mana.BlackMana(1));
+ }
+ if (color.isRed()) {
+ netMana.add(Mana.RedMana(1));
+ }
+ if (color.isBlue()) {
+ netMana.add(Mana.BlueMana(1));
+ }
+ if (color.isGreen()) {
+ netMana.add(Mana.GreenMana(1));
+ }
+ if (color.isWhite()) {
+ netMana.add(Mana.WhiteMana(1));
+ }
+ }
+ }
+ }
+ return netMana;
+ }
+
@Override
public Mana produceMana(boolean netMana, Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getSourceId());
@@ -214,9 +246,6 @@ class ChromeMoxManaEffect extends ManaEffect {
case "White":
player.getManaPool().addMana(Mana.WhiteMana(1), game, source);
break;
- case "Colorless":
- player.getManaPool().addMana(Mana.ColorlessMana(1), game, source);
- break;
default:
break;
}
diff --git a/Mage.Sets/src/mage/cards/c/ChromeSteed.java b/Mage.Sets/src/mage/cards/c/ChromeSteed.java
index e00bfbbb859..ce981939eac 100644
--- a/Mage.Sets/src/mage/cards/c/ChromeSteed.java
+++ b/Mage.Sets/src/mage/cards/c/ChromeSteed.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ChromeSteed extends CardImpl {
+public final class ChromeSteed extends CardImpl {
private static final String text = "Metalcraft - Chrome Steed gets +2/+2 as long as you control three or more artifacts";
public ChromeSteed (UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/c/ChromescaleDrake.java b/Mage.Sets/src/mage/cards/c/ChromescaleDrake.java
index 5da39d27b63..bef3e0830b9 100644
--- a/Mage.Sets/src/mage/cards/c/ChromescaleDrake.java
+++ b/Mage.Sets/src/mage/cards/c/ChromescaleDrake.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author fireshoes
*/
-public class ChromescaleDrake extends CardImpl {
+public final class ChromescaleDrake extends CardImpl {
public ChromescaleDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChromeshellCrab.java b/Mage.Sets/src/mage/cards/c/ChromeshellCrab.java
index 59cf4dcbb06..02643259340 100644
--- a/Mage.Sets/src/mage/cards/c/ChromeshellCrab.java
+++ b/Mage.Sets/src/mage/cards/c/ChromeshellCrab.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ChromeshellCrab extends CardImpl {
+public final class ChromeshellCrab extends CardImpl {
private static final String rule = "you may exchange control of target creature you control and target creature an opponent controls";
diff --git a/Mage.Sets/src/mage/cards/c/Chromium.java b/Mage.Sets/src/mage/cards/c/Chromium.java
index e01dc868350..ea4586e76a2 100644
--- a/Mage.Sets/src/mage/cards/c/Chromium.java
+++ b/Mage.Sets/src/mage/cards/c/Chromium.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class Chromium extends CardImpl {
+public final class Chromium extends CardImpl {
public Chromium(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}{U}{U}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Chronatog.java b/Mage.Sets/src/mage/cards/c/Chronatog.java
index 26c3b520828..3f2a065f1ac 100644
--- a/Mage.Sets/src/mage/cards/c/Chronatog.java
+++ b/Mage.Sets/src/mage/cards/c/Chronatog.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class Chronatog extends CardImpl {
+public final class Chronatog extends CardImpl {
public Chronatog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChronatogTotem.java b/Mage.Sets/src/mage/cards/c/ChronatogTotem.java
index 1e4c959cdd9..90faa883054 100644
--- a/Mage.Sets/src/mage/cards/c/ChronatogTotem.java
+++ b/Mage.Sets/src/mage/cards/c/ChronatogTotem.java
@@ -58,7 +58,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author emerald000
*/
-public class ChronatogTotem extends CardImpl {
+public final class ChronatogTotem extends CardImpl {
public ChronatogTotem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/c/ChronicFlooding.java b/Mage.Sets/src/mage/cards/c/ChronicFlooding.java
index 4ae9358ef0c..31ebb8355f4 100644
--- a/Mage.Sets/src/mage/cards/c/ChronicFlooding.java
+++ b/Mage.Sets/src/mage/cards/c/ChronicFlooding.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author LevelX2
*/
-public class ChronicFlooding extends CardImpl {
+public final class ChronicFlooding extends CardImpl {
public ChronicFlooding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChroniclerOfHeroes.java b/Mage.Sets/src/mage/cards/c/ChroniclerOfHeroes.java
index 594349cfe56..46c51a273ff 100644
--- a/Mage.Sets/src/mage/cards/c/ChroniclerOfHeroes.java
+++ b/Mage.Sets/src/mage/cards/c/ChroniclerOfHeroes.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class ChroniclerOfHeroes extends CardImpl {
+public final class ChroniclerOfHeroes extends CardImpl {
public ChroniclerOfHeroes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ChronomanticEscape.java b/Mage.Sets/src/mage/cards/c/ChronomanticEscape.java
index 2c98c940c1c..9a72d6b1b64 100644
--- a/Mage.Sets/src/mage/cards/c/ChronomanticEscape.java
+++ b/Mage.Sets/src/mage/cards/c/ChronomanticEscape.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author spjspj
*/
-public class ChronomanticEscape extends CardImpl {
+public final class ChronomanticEscape extends CardImpl {
public ChronomanticEscape(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/c/Chronomaton.java b/Mage.Sets/src/mage/cards/c/Chronomaton.java
index 9b19363ea40..5f4c52d24ae 100644
--- a/Mage.Sets/src/mage/cards/c/Chronomaton.java
+++ b/Mage.Sets/src/mage/cards/c/Chronomaton.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class Chronomaton extends CardImpl {
+public final class Chronomaton extends CardImpl {
public Chronomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/c/Chronosavant.java b/Mage.Sets/src/mage/cards/c/Chronosavant.java
index f1a9a2f598c..8c979901139 100644
--- a/Mage.Sets/src/mage/cards/c/Chronosavant.java
+++ b/Mage.Sets/src/mage/cards/c/Chronosavant.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class Chronosavant extends CardImpl {
+public final class Chronosavant extends CardImpl {
public Chronosavant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Chronostutter.java b/Mage.Sets/src/mage/cards/c/Chronostutter.java
index 7a3499c45f9..479fa7f1631 100644
--- a/Mage.Sets/src/mage/cards/c/Chronostutter.java
+++ b/Mage.Sets/src/mage/cards/c/Chronostutter.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Chronostutter extends CardImpl {
+public final class Chronostutter extends CardImpl {
public Chronostutter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Chronozoa.java b/Mage.Sets/src/mage/cards/c/Chronozoa.java
index a12bb99c5bc..f989c3de3c8 100644
--- a/Mage.Sets/src/mage/cards/c/Chronozoa.java
+++ b/Mage.Sets/src/mage/cards/c/Chronozoa.java
@@ -51,7 +51,7 @@ import mage.counters.CounterType;
* @author Gal Lerman
*
*/
-public class Chronozoa extends CardImpl {
+public final class Chronozoa extends CardImpl {
public Chronozoa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ChubToad.java b/Mage.Sets/src/mage/cards/c/ChubToad.java
index 1b64eb472bf..289c79a9342 100644
--- a/Mage.Sets/src/mage/cards/c/ChubToad.java
+++ b/Mage.Sets/src/mage/cards/c/ChubToad.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author anonymous
*/
-public class ChubToad extends CardImpl {
+public final class ChubToad extends CardImpl {
public ChubToad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ChurningEddy.java b/Mage.Sets/src/mage/cards/c/ChurningEddy.java
index f60171d9e09..b94663be9eb 100644
--- a/Mage.Sets/src/mage/cards/c/ChurningEddy.java
+++ b/Mage.Sets/src/mage/cards/c/ChurningEddy.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class ChurningEddy extends CardImpl {
+public final class ChurningEddy extends CardImpl {
public ChurningEddy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CinderBarrens.java b/Mage.Sets/src/mage/cards/c/CinderBarrens.java
index 3115ff30035..060fe434478 100644
--- a/Mage.Sets/src/mage/cards/c/CinderBarrens.java
+++ b/Mage.Sets/src/mage/cards/c/CinderBarrens.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class CinderBarrens extends CardImpl {
+public final class CinderBarrens extends CardImpl {
public CinderBarrens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CinderCloud.java b/Mage.Sets/src/mage/cards/c/CinderCloud.java
index dab5bca111d..9955217358f 100644
--- a/Mage.Sets/src/mage/cards/c/CinderCloud.java
+++ b/Mage.Sets/src/mage/cards/c/CinderCloud.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ciaccona007
*/
-public class CinderCloud extends CardImpl {
+public final class CinderCloud extends CardImpl {
public CinderCloud(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CinderElemental.java b/Mage.Sets/src/mage/cards/c/CinderElemental.java
index e7836fce763..f9a4807f999 100644
--- a/Mage.Sets/src/mage/cards/c/CinderElemental.java
+++ b/Mage.Sets/src/mage/cards/c/CinderElemental.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class CinderElemental extends CardImpl {
+public final class CinderElemental extends CardImpl {
public CinderElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CinderGiant.java b/Mage.Sets/src/mage/cards/c/CinderGiant.java
index 18ceb0214d6..e7ced09993b 100644
--- a/Mage.Sets/src/mage/cards/c/CinderGiant.java
+++ b/Mage.Sets/src/mage/cards/c/CinderGiant.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class CinderGiant extends CardImpl {
+public final class CinderGiant extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("each other creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CinderGlade.java b/Mage.Sets/src/mage/cards/c/CinderGlade.java
index e37a2f782e2..dc0c3048031 100644
--- a/Mage.Sets/src/mage/cards/c/CinderGlade.java
+++ b/Mage.Sets/src/mage/cards/c/CinderGlade.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author fireshoes
*/
-public class CinderGlade extends CardImpl {
+public final class CinderGlade extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/c/CinderHellion.java b/Mage.Sets/src/mage/cards/c/CinderHellion.java
index fc4713ee595..764ae3e2be8 100644
--- a/Mage.Sets/src/mage/cards/c/CinderHellion.java
+++ b/Mage.Sets/src/mage/cards/c/CinderHellion.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author fireshoes
*/
-public class CinderHellion extends CardImpl {
+public final class CinderHellion extends CardImpl {
public CinderHellion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CinderMarsh.java b/Mage.Sets/src/mage/cards/c/CinderMarsh.java
index db777e18c30..595b567b314 100644
--- a/Mage.Sets/src/mage/cards/c/CinderMarsh.java
+++ b/Mage.Sets/src/mage/cards/c/CinderMarsh.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class CinderMarsh extends CardImpl {
+public final class CinderMarsh extends CardImpl {
public CinderMarsh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/c/CinderPyromancer.java b/Mage.Sets/src/mage/cards/c/CinderPyromancer.java
index a6d10ccb38b..dc6a06ef96f 100644
--- a/Mage.Sets/src/mage/cards/c/CinderPyromancer.java
+++ b/Mage.Sets/src/mage/cards/c/CinderPyromancer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class CinderPyromancer extends CardImpl {
+public final class CinderPyromancer extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a red spell");
diff --git a/Mage.Sets/src/mage/cards/c/CinderShade.java b/Mage.Sets/src/mage/cards/c/CinderShade.java
index b3dc93f6178..53606b70f76 100644
--- a/Mage.Sets/src/mage/cards/c/CinderShade.java
+++ b/Mage.Sets/src/mage/cards/c/CinderShade.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author michael.napoleon@gmail.com
*/
-public class CinderShade extends CardImpl {
+public final class CinderShade extends CardImpl {
public CinderShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CinderStorm.java b/Mage.Sets/src/mage/cards/c/CinderStorm.java
index 0926274e631..2890093e6fb 100644
--- a/Mage.Sets/src/mage/cards/c/CinderStorm.java
+++ b/Mage.Sets/src/mage/cards/c/CinderStorm.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author nigelzor
*/
-public class CinderStorm extends CardImpl {
+public final class CinderStorm extends CardImpl {
public CinderStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CinderWall.java b/Mage.Sets/src/mage/cards/c/CinderWall.java
index 3d7b059518b..814a8041559 100644
--- a/Mage.Sets/src/mage/cards/c/CinderWall.java
+++ b/Mage.Sets/src/mage/cards/c/CinderWall.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author dustinconrad
*/
-public class CinderWall extends CardImpl {
+public final class CinderWall extends CardImpl {
public CinderWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Cinderbones.java b/Mage.Sets/src/mage/cards/c/Cinderbones.java
index 54ed687bb6e..cac15978102 100644
--- a/Mage.Sets/src/mage/cards/c/Cinderbones.java
+++ b/Mage.Sets/src/mage/cards/c/Cinderbones.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class Cinderbones extends CardImpl {
+public final class Cinderbones extends CardImpl {
public Cinderbones(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CinderhazeWretch.java b/Mage.Sets/src/mage/cards/c/CinderhazeWretch.java
index 7bf79f392cb..dce811e1c4a 100644
--- a/Mage.Sets/src/mage/cards/c/CinderhazeWretch.java
+++ b/Mage.Sets/src/mage/cards/c/CinderhazeWretch.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
* @author jeffwadsworth
*
*/
-public class CinderhazeWretch extends CardImpl {
+public final class CinderhazeWretch extends CardImpl {
public CinderhazeWretch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CircleOfAffliction.java b/Mage.Sets/src/mage/cards/c/CircleOfAffliction.java
index bdc90f9b6bb..15de90cf6a6 100644
--- a/Mage.Sets/src/mage/cards/c/CircleOfAffliction.java
+++ b/Mage.Sets/src/mage/cards/c/CircleOfAffliction.java
@@ -52,7 +52,7 @@ import mage.target.TargetPlayer;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class CircleOfAffliction extends CardImpl {
+public final class CircleOfAffliction extends CardImpl {
public CircleOfAffliction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CircleOfElders.java b/Mage.Sets/src/mage/cards/c/CircleOfElders.java
index 839ea3748dc..2eaaaa13d95 100644
--- a/Mage.Sets/src/mage/cards/c/CircleOfElders.java
+++ b/Mage.Sets/src/mage/cards/c/CircleOfElders.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class CircleOfElders extends CardImpl {
+public final class CircleOfElders extends CardImpl {
public CircleOfElders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CircleOfFlame.java b/Mage.Sets/src/mage/cards/c/CircleOfFlame.java
index 16984dabb36..65e2bf0c07d 100644
--- a/Mage.Sets/src/mage/cards/c/CircleOfFlame.java
+++ b/Mage.Sets/src/mage/cards/c/CircleOfFlame.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author nantuko
*/
-public class CircleOfFlame extends CardImpl {
+public final class CircleOfFlame extends CardImpl {
public CircleOfFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CircleOfProtectionArtifacts.java b/Mage.Sets/src/mage/cards/c/CircleOfProtectionArtifacts.java
index 6c72f73b1bf..6337a44e3be 100644
--- a/Mage.Sets/src/mage/cards/c/CircleOfProtectionArtifacts.java
+++ b/Mage.Sets/src/mage/cards/c/CircleOfProtectionArtifacts.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class CircleOfProtectionArtifacts extends CardImpl {
+public final class CircleOfProtectionArtifacts extends CardImpl {
private static final FilterObject filter = new FilterObject("artifact source");
diff --git a/Mage.Sets/src/mage/cards/c/CircleOfProtectionBlack.java b/Mage.Sets/src/mage/cards/c/CircleOfProtectionBlack.java
index 6563b26aa7a..950ed431a58 100644
--- a/Mage.Sets/src/mage/cards/c/CircleOfProtectionBlack.java
+++ b/Mage.Sets/src/mage/cards/c/CircleOfProtectionBlack.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Plopman
*/
-public class CircleOfProtectionBlack extends CardImpl {
+public final class CircleOfProtectionBlack extends CardImpl {
private static final FilterObject filter = new FilterObject("black source");
diff --git a/Mage.Sets/src/mage/cards/c/CircleOfProtectionBlue.java b/Mage.Sets/src/mage/cards/c/CircleOfProtectionBlue.java
index 71054576921..e61d44d769d 100644
--- a/Mage.Sets/src/mage/cards/c/CircleOfProtectionBlue.java
+++ b/Mage.Sets/src/mage/cards/c/CircleOfProtectionBlue.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Plopman
*/
-public class CircleOfProtectionBlue extends CardImpl {
+public final class CircleOfProtectionBlue extends CardImpl {
private static final FilterObject filter = new FilterObject("blue source");
diff --git a/Mage.Sets/src/mage/cards/c/CircleOfProtectionGreen.java b/Mage.Sets/src/mage/cards/c/CircleOfProtectionGreen.java
index d3e90622a8d..3fff38ce8dc 100644
--- a/Mage.Sets/src/mage/cards/c/CircleOfProtectionGreen.java
+++ b/Mage.Sets/src/mage/cards/c/CircleOfProtectionGreen.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Plopman
*/
-public class CircleOfProtectionGreen extends CardImpl {
+public final class CircleOfProtectionGreen extends CardImpl {
private static final FilterObject filter = new FilterObject("green source");
diff --git a/Mage.Sets/src/mage/cards/c/CircleOfProtectionRed.java b/Mage.Sets/src/mage/cards/c/CircleOfProtectionRed.java
index d2fb9d57157..4380050bfa7 100644
--- a/Mage.Sets/src/mage/cards/c/CircleOfProtectionRed.java
+++ b/Mage.Sets/src/mage/cards/c/CircleOfProtectionRed.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Plopman
*/
-public class CircleOfProtectionRed extends CardImpl {
+public final class CircleOfProtectionRed extends CardImpl {
private static final FilterObject filter = new FilterObject("red source");
diff --git a/Mage.Sets/src/mage/cards/c/CircleOfProtectionShadow.java b/Mage.Sets/src/mage/cards/c/CircleOfProtectionShadow.java
index 67eced4b67d..cd54ceb41cb 100644
--- a/Mage.Sets/src/mage/cards/c/CircleOfProtectionShadow.java
+++ b/Mage.Sets/src/mage/cards/c/CircleOfProtectionShadow.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LoneFox
*/
-public class CircleOfProtectionShadow extends CardImpl {
+public final class CircleOfProtectionShadow extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature of your choice with shadow");
diff --git a/Mage.Sets/src/mage/cards/c/CircleOfProtectionWhite.java b/Mage.Sets/src/mage/cards/c/CircleOfProtectionWhite.java
index c8f4f1612a8..8e3b3f8c213 100644
--- a/Mage.Sets/src/mage/cards/c/CircleOfProtectionWhite.java
+++ b/Mage.Sets/src/mage/cards/c/CircleOfProtectionWhite.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Plopman
*/
-public class CircleOfProtectionWhite extends CardImpl {
+public final class CircleOfProtectionWhite extends CardImpl {
private static final FilterObject filter = new FilterObject("white source");
diff --git a/Mage.Sets/src/mage/cards/c/CircuDimirLobotomist.java b/Mage.Sets/src/mage/cards/c/CircuDimirLobotomist.java
index 461ccd4f02e..84241ec7fad 100644
--- a/Mage.Sets/src/mage/cards/c/CircuDimirLobotomist.java
+++ b/Mage.Sets/src/mage/cards/c/CircuDimirLobotomist.java
@@ -61,7 +61,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class CircuDimirLobotomist extends CardImpl {
+public final class CircuDimirLobotomist extends CardImpl {
private static final FilterSpell filterBlue = new FilterSpell("a blue spell");
private static final FilterSpell filterBlack = new FilterSpell("a black spell");
diff --git a/Mage.Sets/src/mage/cards/c/CircularLogic.java b/Mage.Sets/src/mage/cards/c/CircularLogic.java
index 5c9e2ad6e93..50b1606460d 100644
--- a/Mage.Sets/src/mage/cards/c/CircularLogic.java
+++ b/Mage.Sets/src/mage/cards/c/CircularLogic.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author magenoxx_at_gmail.com
*/
-public class CircularLogic extends CardImpl {
+public final class CircularLogic extends CardImpl {
public CircularLogic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CitadelCastellan.java b/Mage.Sets/src/mage/cards/c/CitadelCastellan.java
index 1db77cfc2e1..bc8f3e8d6ef 100644
--- a/Mage.Sets/src/mage/cards/c/CitadelCastellan.java
+++ b/Mage.Sets/src/mage/cards/c/CitadelCastellan.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CitadelCastellan extends CardImpl {
+public final class CitadelCastellan extends CardImpl {
public CitadelCastellan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CitadelOfPain.java b/Mage.Sets/src/mage/cards/c/CitadelOfPain.java
index c539dfae638..7843e919a5a 100644
--- a/Mage.Sets/src/mage/cards/c/CitadelOfPain.java
+++ b/Mage.Sets/src/mage/cards/c/CitadelOfPain.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author Alexsandr0x
*/
-public class CitadelOfPain extends CardImpl {
+public final class CitadelOfPain extends CardImpl {
public CitadelOfPain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CitadelSiege.java b/Mage.Sets/src/mage/cards/c/CitadelSiege.java
index a688524744e..95af90d4110 100644
--- a/Mage.Sets/src/mage/cards/c/CitadelSiege.java
+++ b/Mage.Sets/src/mage/cards/c/CitadelSiege.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CitadelSiege extends CardImpl {
+public final class CitadelSiege extends CardImpl {
private final static String ruleTrigger1 = "&bull Khans — At the beginning of combat on your turn, put two +1/+1 counters on target creature you control.";
private final static String ruleTrigger2 = "&bull Dragons — At the beginning of combat on each opponent's turn, tap target creature that player controls.";
diff --git a/Mage.Sets/src/mage/cards/c/CitanulCentaurs.java b/Mage.Sets/src/mage/cards/c/CitanulCentaurs.java
index 1aa4315a483..1c4b6193e46 100644
--- a/Mage.Sets/src/mage/cards/c/CitanulCentaurs.java
+++ b/Mage.Sets/src/mage/cards/c/CitanulCentaurs.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class CitanulCentaurs extends CardImpl {
+public final class CitanulCentaurs extends CardImpl {
public CitanulCentaurs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CitanulDruid.java b/Mage.Sets/src/mage/cards/c/CitanulDruid.java
index 724e22d7eba..f6b3ff9b363 100644
--- a/Mage.Sets/src/mage/cards/c/CitanulDruid.java
+++ b/Mage.Sets/src/mage/cards/c/CitanulDruid.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author ilcartographer
*/
-public class CitanulDruid extends CardImpl {
+public final class CitanulDruid extends CardImpl {
private static final FilterArtifactSpell filter = new FilterArtifactSpell();
static {
diff --git a/Mage.Sets/src/mage/cards/c/CitanulFlute.java b/Mage.Sets/src/mage/cards/c/CitanulFlute.java
index 65d93ad9876..fafb52511d4 100644
--- a/Mage.Sets/src/mage/cards/c/CitanulFlute.java
+++ b/Mage.Sets/src/mage/cards/c/CitanulFlute.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class CitanulFlute extends CardImpl {
+public final class CitanulFlute extends CardImpl {
public CitanulFlute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/c/CitanulHierophants.java b/Mage.Sets/src/mage/cards/c/CitanulHierophants.java
index 9cfae021bd1..7356d21d28a 100644
--- a/Mage.Sets/src/mage/cards/c/CitanulHierophants.java
+++ b/Mage.Sets/src/mage/cards/c/CitanulHierophants.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Backfir3
*/
-public class CitanulHierophants extends CardImpl {
+public final class CitanulHierophants extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CitanulWoodreaders.java b/Mage.Sets/src/mage/cards/c/CitanulWoodreaders.java
index 2720e87d4b5..b2c9d2bae5f 100644
--- a/Mage.Sets/src/mage/cards/c/CitanulWoodreaders.java
+++ b/Mage.Sets/src/mage/cards/c/CitanulWoodreaders.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CitanulWoodreaders extends CardImpl {
+public final class CitanulWoodreaders extends CardImpl {
public CitanulWoodreaders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CityInABottle.java b/Mage.Sets/src/mage/cards/c/CityInABottle.java
index ffe24d8c97a..fe55127ddd0 100644
--- a/Mage.Sets/src/mage/cards/c/CityInABottle.java
+++ b/Mage.Sets/src/mage/cards/c/CityInABottle.java
@@ -57,7 +57,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class CityInABottle extends CardImpl {
+public final class CityInABottle extends CardImpl {
public CityInABottle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CityOfBrass.java b/Mage.Sets/src/mage/cards/c/CityOfBrass.java
index 4a8bff34c7d..75832357699 100644
--- a/Mage.Sets/src/mage/cards/c/CityOfBrass.java
+++ b/Mage.Sets/src/mage/cards/c/CityOfBrass.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author jeffwadsworth
*/
-public class CityOfBrass extends CardImpl {
+public final class CityOfBrass extends CardImpl {
public CityOfBrass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CityOfShadows.java b/Mage.Sets/src/mage/cards/c/CityOfShadows.java
index 76f9918f719..471e33239c8 100644
--- a/Mage.Sets/src/mage/cards/c/CityOfShadows.java
+++ b/Mage.Sets/src/mage/cards/c/CityOfShadows.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Luna Skyrise
*/
-public class CityOfShadows extends CardImpl {
+public final class CityOfShadows extends CardImpl {
public CityOfShadows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CityOfSolitude.java b/Mage.Sets/src/mage/cards/c/CityOfSolitude.java
index dbcc7129ba6..7a13efef5e0 100644
--- a/Mage.Sets/src/mage/cards/c/CityOfSolitude.java
+++ b/Mage.Sets/src/mage/cards/c/CityOfSolitude.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author emerald000
*/
-public class CityOfSolitude extends CardImpl {
+public final class CityOfSolitude extends CardImpl {
public CityOfSolitude(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CityOfTraitors.java b/Mage.Sets/src/mage/cards/c/CityOfTraitors.java
index b4497593025..f01f84b34f6 100644
--- a/Mage.Sets/src/mage/cards/c/CityOfTraitors.java
+++ b/Mage.Sets/src/mage/cards/c/CityOfTraitors.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class CityOfTraitors extends CardImpl {
+public final class CityOfTraitors extends CardImpl {
public CityOfTraitors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CivicGuildmage.java b/Mage.Sets/src/mage/cards/c/CivicGuildmage.java
index 7d3e73b0bea..31a31f76b08 100644
--- a/Mage.Sets/src/mage/cards/c/CivicGuildmage.java
+++ b/Mage.Sets/src/mage/cards/c/CivicGuildmage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CivicGuildmage extends CardImpl {
+public final class CivicGuildmage extends CardImpl {
public CivicGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CivicSaber.java b/Mage.Sets/src/mage/cards/c/CivicSaber.java
index ad74455206b..d009cca983f 100644
--- a/Mage.Sets/src/mage/cards/c/CivicSaber.java
+++ b/Mage.Sets/src/mage/cards/c/CivicSaber.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class CivicSaber extends CardImpl {
+public final class CivicSaber extends CardImpl {
public CivicSaber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/c/CivicWayfinder.java b/Mage.Sets/src/mage/cards/c/CivicWayfinder.java
index 414602e1609..1208942a4e2 100644
--- a/Mage.Sets/src/mage/cards/c/CivicWayfinder.java
+++ b/Mage.Sets/src/mage/cards/c/CivicWayfinder.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class CivicWayfinder extends CardImpl {
+public final class CivicWayfinder extends CardImpl {
public CivicWayfinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
@@ -55,7 +55,7 @@ public class CivicWayfinder extends CardImpl {
this.toughness = new MageInt(2);
// When Civic Wayfinder enters the battlefield, you may search your library for a basic land card, reveal it, and put it into your hand. If you do, shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
}
public CivicWayfinder(final CivicWayfinder card) {
diff --git a/Mage.Sets/src/mage/cards/c/CivilizedScholar.java b/Mage.Sets/src/mage/cards/c/CivilizedScholar.java
index 30837240b27..469479f188b 100644
--- a/Mage.Sets/src/mage/cards/c/CivilizedScholar.java
+++ b/Mage.Sets/src/mage/cards/c/CivilizedScholar.java
@@ -52,7 +52,7 @@ import mage.watchers.Watcher;
/**
* @author nantuko
*/
-public class CivilizedScholar extends CardImpl {
+public final class CivilizedScholar extends CardImpl {
public CivilizedScholar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ClaimFame.java b/Mage.Sets/src/mage/cards/c/ClaimFame.java
index e2923fa9218..2127dafd7f9 100644
--- a/Mage.Sets/src/mage/cards/c/ClaimFame.java
+++ b/Mage.Sets/src/mage/cards/c/ClaimFame.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ClaimFame extends SplitCard {
+public final class ClaimFame extends SplitCard {
private static final FilterCard filter = new FilterCreatureCard("creature card with converted mana cost 2 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/c/ClaimOfErebos.java b/Mage.Sets/src/mage/cards/c/ClaimOfErebos.java
index 23dd7f3a754..5d080b99fd2 100644
--- a/Mage.Sets/src/mage/cards/c/ClaimOfErebos.java
+++ b/Mage.Sets/src/mage/cards/c/ClaimOfErebos.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ClaimOfErebos extends CardImpl {
+public final class ClaimOfErebos extends CardImpl {
public ClaimOfErebos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Clairvoyance.java b/Mage.Sets/src/mage/cards/c/Clairvoyance.java
index a0dd3dd11f4..f60956dae4a 100644
--- a/Mage.Sets/src/mage/cards/c/Clairvoyance.java
+++ b/Mage.Sets/src/mage/cards/c/Clairvoyance.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class Clairvoyance extends CardImpl {
+public final class Clairvoyance extends CardImpl {
public Clairvoyance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ClanDefiance.java b/Mage.Sets/src/mage/cards/c/ClanDefiance.java
index c918242c0a1..23d8c8a426a 100644
--- a/Mage.Sets/src/mage/cards/c/ClanDefiance.java
+++ b/Mage.Sets/src/mage/cards/c/ClanDefiance.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author jeffwadsworth
*/
-public class ClanDefiance extends CardImpl {
+public final class ClanDefiance extends CardImpl {
static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
static final private FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java b/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java
index 80fedb08c87..94b9aafc452 100644
--- a/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java
+++ b/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class ClarionUltimatum extends CardImpl {
+public final class ClarionUltimatum extends CardImpl {
public ClarionUltimatum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}{G}{W}{W}{W}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ClashOfRealities.java b/Mage.Sets/src/mage/cards/c/ClashOfRealities.java
index c8797e116fe..8b2175abb4d 100644
--- a/Mage.Sets/src/mage/cards/c/ClashOfRealities.java
+++ b/Mage.Sets/src/mage/cards/c/ClashOfRealities.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ClashOfRealities extends CardImpl {
+public final class ClashOfRealities extends CardImpl {
private static final FilterCreaturePermanent filterSpirit = new FilterCreaturePermanent("Spirit creature");
private static final FilterCreaturePermanent filterNotSpirit = new FilterCreaturePermanent("non-Spirit creature");
diff --git a/Mage.Sets/src/mage/cards/c/ClashOfWills.java b/Mage.Sets/src/mage/cards/c/ClashOfWills.java
index 07b047c5b10..ba5871fd17f 100644
--- a/Mage.Sets/src/mage/cards/c/ClashOfWills.java
+++ b/Mage.Sets/src/mage/cards/c/ClashOfWills.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class ClashOfWills extends CardImpl {
+public final class ClashOfWills extends CardImpl {
public ClashOfWills(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Claustrophobia.java b/Mage.Sets/src/mage/cards/c/Claustrophobia.java
index 8bc3427e850..2227a7d7c0f 100644
--- a/Mage.Sets/src/mage/cards/c/Claustrophobia.java
+++ b/Mage.Sets/src/mage/cards/c/Claustrophobia.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class Claustrophobia extends CardImpl {
+public final class Claustrophobia extends CardImpl {
public Claustrophobia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ClawsOfGix.java b/Mage.Sets/src/mage/cards/c/ClawsOfGix.java
index ba0513617ef..aaf52da60eb 100644
--- a/Mage.Sets/src/mage/cards/c/ClawsOfGix.java
+++ b/Mage.Sets/src/mage/cards/c/ClawsOfGix.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Backfir3
*/
-public class ClawsOfGix extends CardImpl {
+public final class ClawsOfGix extends CardImpl {
public ClawsOfGix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/c/ClawsOfValakut.java b/Mage.Sets/src/mage/cards/c/ClawsOfValakut.java
index fcb89ed7a7b..cfcc50b82a4 100644
--- a/Mage.Sets/src/mage/cards/c/ClawsOfValakut.java
+++ b/Mage.Sets/src/mage/cards/c/ClawsOfValakut.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki, North
*/
-public class ClawsOfValakut extends CardImpl {
+public final class ClawsOfValakut extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain you control");
diff --git a/Mage.Sets/src/mage/cards/c/ClawsOfWirewood.java b/Mage.Sets/src/mage/cards/c/ClawsOfWirewood.java
index 46873c21fe3..120e635b612 100644
--- a/Mage.Sets/src/mage/cards/c/ClawsOfWirewood.java
+++ b/Mage.Sets/src/mage/cards/c/ClawsOfWirewood.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class ClawsOfWirewood extends CardImpl {
+public final class ClawsOfWirewood extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/c/ClayStatue.java b/Mage.Sets/src/mage/cards/c/ClayStatue.java
index a937cc27ff0..d32f79f8347 100644
--- a/Mage.Sets/src/mage/cards/c/ClayStatue.java
+++ b/Mage.Sets/src/mage/cards/c/ClayStatue.java
@@ -15,7 +15,7 @@ import mage.constants.Zone;
*
* @author Jgod
*/
-public class ClayStatue extends CardImpl {
+public final class ClayStatue extends CardImpl {
public ClayStatue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/c/Cleanfall.java b/Mage.Sets/src/mage/cards/c/Cleanfall.java
index cffd9a9bf7b..edc1ae50b42 100644
--- a/Mage.Sets/src/mage/cards/c/Cleanfall.java
+++ b/Mage.Sets/src/mage/cards/c/Cleanfall.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterEnchantmentPermanent;
/**
* @author Loki
*/
-public class Cleanfall extends CardImpl {
+public final class Cleanfall extends CardImpl {
public Cleanfall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Cleanse.java b/Mage.Sets/src/mage/cards/c/Cleanse.java
index 530416393e4..47678d9bdfe 100644
--- a/Mage.Sets/src/mage/cards/c/Cleanse.java
+++ b/Mage.Sets/src/mage/cards/c/Cleanse.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class Cleanse extends CardImpl {
+public final class Cleanse extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creatures");
diff --git a/Mage.Sets/src/mage/cards/c/Cleansing.java b/Mage.Sets/src/mage/cards/c/Cleansing.java
index efc3bf62019..fbf851df3e5 100644
--- a/Mage.Sets/src/mage/cards/c/Cleansing.java
+++ b/Mage.Sets/src/mage/cards/c/Cleansing.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class Cleansing extends CardImpl {
+public final class Cleansing extends CardImpl {
public Cleansing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CleansingBeam.java b/Mage.Sets/src/mage/cards/c/CleansingBeam.java
index f07fdc54df6..c70a75324f7 100644
--- a/Mage.Sets/src/mage/cards/c/CleansingBeam.java
+++ b/Mage.Sets/src/mage/cards/c/CleansingBeam.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fenhl
*/
-public class CleansingBeam extends CardImpl {
+public final class CleansingBeam extends CardImpl {
public CleansingBeam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CleansingMeditation.java b/Mage.Sets/src/mage/cards/c/CleansingMeditation.java
index 8efd70c13d4..43db9e9cb68 100644
--- a/Mage.Sets/src/mage/cards/c/CleansingMeditation.java
+++ b/Mage.Sets/src/mage/cards/c/CleansingMeditation.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author spjspj
*/
-public class CleansingMeditation extends CardImpl {
+public final class CleansingMeditation extends CardImpl {
public CleansingMeditation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CleansingRay.java b/Mage.Sets/src/mage/cards/c/CleansingRay.java
index 6fe73280398..17e63c39e5b 100644
--- a/Mage.Sets/src/mage/cards/c/CleansingRay.java
+++ b/Mage.Sets/src/mage/cards/c/CleansingRay.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class CleansingRay extends CardImpl {
+public final class CleansingRay extends CardImpl {
public CleansingRay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Clear.java b/Mage.Sets/src/mage/cards/c/Clear.java
index 4f0843f28d3..7b13db23f0f 100644
--- a/Mage.Sets/src/mage/cards/c/Clear.java
+++ b/Mage.Sets/src/mage/cards/c/Clear.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Backfir3
*/
-public class Clear extends CardImpl {
+public final class Clear extends CardImpl {
public Clear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ClearAPath.java b/Mage.Sets/src/mage/cards/c/ClearAPath.java
index 06880b9951d..b3e236075bc 100644
--- a/Mage.Sets/src/mage/cards/c/ClearAPath.java
+++ b/Mage.Sets/src/mage/cards/c/ClearAPath.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
-public class ClearAPath extends CardImpl {
+public final class ClearAPath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with defender");
static {
diff --git a/Mage.Sets/src/mage/cards/c/ClearShot.java b/Mage.Sets/src/mage/cards/c/ClearShot.java
index 65597c5b025..12017364f14 100644
--- a/Mage.Sets/src/mage/cards/c/ClearShot.java
+++ b/Mage.Sets/src/mage/cards/c/ClearShot.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ClearShot extends CardImpl {
+public final class ClearShot extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/c/ClearwaterGoblet.java b/Mage.Sets/src/mage/cards/c/ClearwaterGoblet.java
index 8ed6e6a36ef..37ef344afb6 100644
--- a/Mage.Sets/src/mage/cards/c/ClearwaterGoblet.java
+++ b/Mage.Sets/src/mage/cards/c/ClearwaterGoblet.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class ClearwaterGoblet extends CardImpl {
+public final class ClearwaterGoblet extends CardImpl {
public ClearwaterGoblet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/c/CleaverRiot.java b/Mage.Sets/src/mage/cards/c/CleaverRiot.java
index c459b476212..56f2a0fcfd5 100644
--- a/Mage.Sets/src/mage/cards/c/CleaverRiot.java
+++ b/Mage.Sets/src/mage/cards/c/CleaverRiot.java
@@ -40,7 +40,7 @@ import mage.filter.StaticFilters;
*
* @author North
*/
-public class CleaverRiot extends CardImpl {
+public final class CleaverRiot extends CardImpl {
public CleaverRiot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ClergyEnVec.java b/Mage.Sets/src/mage/cards/c/ClergyEnVec.java
index 6065d50495c..45dc02f8894 100644
--- a/Mage.Sets/src/mage/cards/c/ClergyEnVec.java
+++ b/Mage.Sets/src/mage/cards/c/ClergyEnVec.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class ClergyEnVec extends CardImpl {
+public final class ClergyEnVec extends CardImpl {
public ClergyEnVec(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ClergyOfTheHolyNimbus.java b/Mage.Sets/src/mage/cards/c/ClergyOfTheHolyNimbus.java
index 5022878c6fb..a25d9b3f9d9 100644
--- a/Mage.Sets/src/mage/cards/c/ClergyOfTheHolyNimbus.java
+++ b/Mage.Sets/src/mage/cards/c/ClergyOfTheHolyNimbus.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class ClergyOfTheHolyNimbus extends CardImpl {
+public final class ClergyOfTheHolyNimbus extends CardImpl {
public ClergyOfTheHolyNimbus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ClericOfTheForwardOrder.java b/Mage.Sets/src/mage/cards/c/ClericOfTheForwardOrder.java
index eb08284b5a8..4948f305987 100644
--- a/Mage.Sets/src/mage/cards/c/ClericOfTheForwardOrder.java
+++ b/Mage.Sets/src/mage/cards/c/ClericOfTheForwardOrder.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class ClericOfTheForwardOrder extends CardImpl {
+public final class ClericOfTheForwardOrder extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature you control named Cleric of the Forward Order");
diff --git a/Mage.Sets/src/mage/cards/c/CleverImpersonator.java b/Mage.Sets/src/mage/cards/c/CleverImpersonator.java
index d1d099d6866..135e3aa933e 100644
--- a/Mage.Sets/src/mage/cards/c/CleverImpersonator.java
+++ b/Mage.Sets/src/mage/cards/c/CleverImpersonator.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterNonlandPermanent;
*
* @author emerald000
*/
-public class CleverImpersonator extends CardImpl {
+public final class CleverImpersonator extends CardImpl {
public CleverImpersonator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Clickslither.java b/Mage.Sets/src/mage/cards/c/Clickslither.java
index ac73c7a8af7..3d6708447f5 100644
--- a/Mage.Sets/src/mage/cards/c/Clickslither.java
+++ b/Mage.Sets/src/mage/cards/c/Clickslither.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class Clickslither extends CardImpl {
+public final class Clickslither extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin");
diff --git a/Mage.Sets/src/mage/cards/c/CliffThreader.java b/Mage.Sets/src/mage/cards/c/CliffThreader.java
index 27b600f361c..7937f7eec2a 100644
--- a/Mage.Sets/src/mage/cards/c/CliffThreader.java
+++ b/Mage.Sets/src/mage/cards/c/CliffThreader.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CliffThreader extends CardImpl {
+public final class CliffThreader extends CardImpl {
public CliffThreader (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CliffhavenVampire.java b/Mage.Sets/src/mage/cards/c/CliffhavenVampire.java
index 223047c9963..73dea1e5690 100644
--- a/Mage.Sets/src/mage/cards/c/CliffhavenVampire.java
+++ b/Mage.Sets/src/mage/cards/c/CliffhavenVampire.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CliffhavenVampire extends CardImpl {
+public final class CliffhavenVampire extends CardImpl {
public CliffhavenVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CliffrunnerBehemoth.java b/Mage.Sets/src/mage/cards/c/CliffrunnerBehemoth.java
index 8aa065a7fcd..1fdb33620d6 100644
--- a/Mage.Sets/src/mage/cards/c/CliffrunnerBehemoth.java
+++ b/Mage.Sets/src/mage/cards/c/CliffrunnerBehemoth.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class CliffrunnerBehemoth extends CardImpl {
+public final class CliffrunnerBehemoth extends CardImpl {
private static final FilterPermanent redPermanentFilter = new FilterPermanent("red");
private static final FilterPermanent whitePermanentFilter = new FilterPermanent("white");
diff --git a/Mage.Sets/src/mage/cards/c/CliffsideLookout.java b/Mage.Sets/src/mage/cards/c/CliffsideLookout.java
index daf254f7a3b..5c0beccfc81 100644
--- a/Mage.Sets/src/mage/cards/c/CliffsideLookout.java
+++ b/Mage.Sets/src/mage/cards/c/CliffsideLookout.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class CliffsideLookout extends CardImpl {
+public final class CliffsideLookout extends CardImpl {
public CliffsideLookout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ClifftopRetreat.java b/Mage.Sets/src/mage/cards/c/ClifftopRetreat.java
index b2359fba934..f89700c1422 100644
--- a/Mage.Sets/src/mage/cards/c/ClifftopRetreat.java
+++ b/Mage.Sets/src/mage/cards/c/ClifftopRetreat.java
@@ -49,7 +49,7 @@ import java.util.UUID;
/**
* @author nantuko
*/
-public class ClifftopRetreat extends CardImpl {
+public final class ClifftopRetreat extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/c/ClingingAnemones.java b/Mage.Sets/src/mage/cards/c/ClingingAnemones.java
index c0f798e9614..ce651e953d0 100644
--- a/Mage.Sets/src/mage/cards/c/ClingingAnemones.java
+++ b/Mage.Sets/src/mage/cards/c/ClingingAnemones.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class ClingingAnemones extends CardImpl {
+public final class ClingingAnemones extends CardImpl {
public ClingingAnemones(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ClingingDarkness.java b/Mage.Sets/src/mage/cards/c/ClingingDarkness.java
index c2574fb8c9d..dc8daa0a650 100644
--- a/Mage.Sets/src/mage/cards/c/ClingingDarkness.java
+++ b/Mage.Sets/src/mage/cards/c/ClingingDarkness.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author anonymous
*/
-public class ClingingDarkness extends CardImpl {
+public final class ClingingDarkness extends CardImpl {
public ClingingDarkness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ClingingMists.java b/Mage.Sets/src/mage/cards/c/ClingingMists.java
index 686382183f1..dfd6bba302e 100644
--- a/Mage.Sets/src/mage/cards/c/ClingingMists.java
+++ b/Mage.Sets/src/mage/cards/c/ClingingMists.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author BetaSteward
*/
-public class ClingingMists extends CardImpl {
+public final class ClingingMists extends CardImpl {
public ClingingMists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ClipWings.java b/Mage.Sets/src/mage/cards/c/ClipWings.java
index 3ae7bbe913f..66cc4d31d6b 100644
--- a/Mage.Sets/src/mage/cards/c/ClipWings.java
+++ b/Mage.Sets/src/mage/cards/c/ClipWings.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author fireshoes
*/
-public class ClipWings extends CardImpl {
+public final class ClipWings extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/c/CloakAndDagger.java b/Mage.Sets/src/mage/cards/c/CloakAndDagger.java
index bf022a10d59..dd5a6436484 100644
--- a/Mage.Sets/src/mage/cards/c/CloakAndDagger.java
+++ b/Mage.Sets/src/mage/cards/c/CloakAndDagger.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class CloakAndDagger extends CardImpl {
+public final class CloakAndDagger extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a Rogue creature");
diff --git a/Mage.Sets/src/mage/cards/c/CloakOfFeathers.java b/Mage.Sets/src/mage/cards/c/CloakOfFeathers.java
index 80ebf538ee2..e8a4330faf4 100644
--- a/Mage.Sets/src/mage/cards/c/CloakOfFeathers.java
+++ b/Mage.Sets/src/mage/cards/c/CloakOfFeathers.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CloakOfFeathers extends CardImpl {
+public final class CloakOfFeathers extends CardImpl {
public CloakOfFeathers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java b/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java
index 06d89374a23..b0abf7fd114 100644
--- a/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java
+++ b/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CloakOfInvisibility extends CardImpl {
+public final class CloakOfInvisibility extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by Walls");
static {
filter.add(Predicates.not(new SubtypePredicate(SubType.WALL)));
diff --git a/Mage.Sets/src/mage/cards/c/CloakOfMists.java b/Mage.Sets/src/mage/cards/c/CloakOfMists.java
index 5b98138ae2e..844045a268f 100644
--- a/Mage.Sets/src/mage/cards/c/CloakOfMists.java
+++ b/Mage.Sets/src/mage/cards/c/CloakOfMists.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class CloakOfMists extends CardImpl {
+public final class CloakOfMists extends CardImpl {
public CloakOfMists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloakedSiren.java b/Mage.Sets/src/mage/cards/c/CloakedSiren.java
index 4b27cf42cd9..302c1106760 100644
--- a/Mage.Sets/src/mage/cards/c/CloakedSiren.java
+++ b/Mage.Sets/src/mage/cards/c/CloakedSiren.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CloakedSiren extends CardImpl {
+public final class CloakedSiren extends CardImpl {
public CloakedSiren(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloakingDevice.java b/Mage.Sets/src/mage/cards/c/CloakingDevice.java
index 87755d79a04..b6d5d308c11 100644
--- a/Mage.Sets/src/mage/cards/c/CloakingDevice.java
+++ b/Mage.Sets/src/mage/cards/c/CloakingDevice.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class CloakingDevice extends CardImpl {
+public final class CloakingDevice extends CardImpl {
public CloakingDevice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ClockOfOmens.java b/Mage.Sets/src/mage/cards/c/ClockOfOmens.java
index f6091892943..dcbaee320ad 100644
--- a/Mage.Sets/src/mage/cards/c/ClockOfOmens.java
+++ b/Mage.Sets/src/mage/cards/c/ClockOfOmens.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class ClockOfOmens extends CardImpl {
+public final class ClockOfOmens extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped artifacts you control");
diff --git a/Mage.Sets/src/mage/cards/c/Clockspinning.java b/Mage.Sets/src/mage/cards/c/Clockspinning.java
index 11834748f41..b6fe4e27461 100644
--- a/Mage.Sets/src/mage/cards/c/Clockspinning.java
+++ b/Mage.Sets/src/mage/cards/c/Clockspinning.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class Clockspinning extends CardImpl {
+public final class Clockspinning extends CardImpl {
public Clockspinning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ClockworkAvian.java b/Mage.Sets/src/mage/cards/c/ClockworkAvian.java
index bbdd354c570..daab1e5bcb6 100644
--- a/Mage.Sets/src/mage/cards/c/ClockworkAvian.java
+++ b/Mage.Sets/src/mage/cards/c/ClockworkAvian.java
@@ -59,7 +59,7 @@ import mage.watchers.common.AttackedOrBlockedThisCombatWatcher;
*
* @author MarcoMarin
*/
-public class ClockworkAvian extends CardImpl {
+public final class ClockworkAvian extends CardImpl {
public ClockworkAvian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/c/ClockworkBeast.java b/Mage.Sets/src/mage/cards/c/ClockworkBeast.java
index 07123dda4e8..55427731204 100644
--- a/Mage.Sets/src/mage/cards/c/ClockworkBeast.java
+++ b/Mage.Sets/src/mage/cards/c/ClockworkBeast.java
@@ -58,7 +58,7 @@ import mage.watchers.common.AttackedOrBlockedThisCombatWatcher;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class ClockworkBeast extends CardImpl {
+public final class ClockworkBeast extends CardImpl {
public ClockworkBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/c/ClockworkBeetle.java b/Mage.Sets/src/mage/cards/c/ClockworkBeetle.java
index cb4e78db165..96f6eade938 100644
--- a/Mage.Sets/src/mage/cards/c/ClockworkBeetle.java
+++ b/Mage.Sets/src/mage/cards/c/ClockworkBeetle.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class ClockworkBeetle extends CardImpl {
+public final class ClockworkBeetle extends CardImpl {
public ClockworkBeetle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/c/ClockworkCondor.java b/Mage.Sets/src/mage/cards/c/ClockworkCondor.java
index bd8aae69417..f5486462a95 100644
--- a/Mage.Sets/src/mage/cards/c/ClockworkCondor.java
+++ b/Mage.Sets/src/mage/cards/c/ClockworkCondor.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class ClockworkCondor extends CardImpl {
+public final class ClockworkCondor extends CardImpl {
public ClockworkCondor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/c/ClockworkDragon.java b/Mage.Sets/src/mage/cards/c/ClockworkDragon.java
index 9d5f6450bef..329c39ebf55 100644
--- a/Mage.Sets/src/mage/cards/c/ClockworkDragon.java
+++ b/Mage.Sets/src/mage/cards/c/ClockworkDragon.java
@@ -53,7 +53,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class ClockworkDragon extends CardImpl {
+public final class ClockworkDragon extends CardImpl {
public ClockworkDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/c/ClockworkGnomes.java b/Mage.Sets/src/mage/cards/c/ClockworkGnomes.java
index 7c4377ec312..2940c283231 100644
--- a/Mage.Sets/src/mage/cards/c/ClockworkGnomes.java
+++ b/Mage.Sets/src/mage/cards/c/ClockworkGnomes.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author hanasu
*/
-public class ClockworkGnomes extends CardImpl {
+public final class ClockworkGnomes extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/c/ClockworkHydra.java b/Mage.Sets/src/mage/cards/c/ClockworkHydra.java
index aea57305f8d..5a8eb00e4b9 100644
--- a/Mage.Sets/src/mage/cards/c/ClockworkHydra.java
+++ b/Mage.Sets/src/mage/cards/c/ClockworkHydra.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ClockworkHydra extends CardImpl {
+public final class ClockworkHydra extends CardImpl {
public ClockworkHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/c/ClockworkSteed.java b/Mage.Sets/src/mage/cards/c/ClockworkSteed.java
index 041672cd705..5f4cae87e1a 100644
--- a/Mage.Sets/src/mage/cards/c/ClockworkSteed.java
+++ b/Mage.Sets/src/mage/cards/c/ClockworkSteed.java
@@ -63,7 +63,7 @@ import mage.watchers.common.AttackedOrBlockedThisCombatWatcher;
*
* @author escplan9, MarcoMarin & L_J
*/
-public class ClockworkSteed extends CardImpl {
+public final class ClockworkSteed extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creatures");
diff --git a/Mage.Sets/src/mage/cards/c/ClockworkSwarm.java b/Mage.Sets/src/mage/cards/c/ClockworkSwarm.java
index 37a603166cd..aacf04e620e 100644
--- a/Mage.Sets/src/mage/cards/c/ClockworkSwarm.java
+++ b/Mage.Sets/src/mage/cards/c/ClockworkSwarm.java
@@ -63,7 +63,7 @@ import mage.watchers.common.AttackedOrBlockedThisCombatWatcher;
*
* @author TheElk801
*/
-public class ClockworkSwarm extends CardImpl {
+public final class ClockworkSwarm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls");
diff --git a/Mage.Sets/src/mage/cards/c/ClockworkVorrac.java b/Mage.Sets/src/mage/cards/c/ClockworkVorrac.java
index f2d19569ea3..0689667da86 100644
--- a/Mage.Sets/src/mage/cards/c/ClockworkVorrac.java
+++ b/Mage.Sets/src/mage/cards/c/ClockworkVorrac.java
@@ -53,7 +53,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class ClockworkVorrac extends CardImpl {
+public final class ClockworkVorrac extends CardImpl {
public ClockworkVorrac(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/c/CloisteredYouth.java b/Mage.Sets/src/mage/cards/c/CloisteredYouth.java
index 05723808f0c..806c1ca753d 100644
--- a/Mage.Sets/src/mage/cards/c/CloisteredYouth.java
+++ b/Mage.Sets/src/mage/cards/c/CloisteredYouth.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author Loki
*/
-public class CloisteredYouth extends CardImpl {
+public final class CloisteredYouth extends CardImpl {
public CloisteredYouth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Clone.java b/Mage.Sets/src/mage/cards/c/Clone.java
index 13420b2e6e8..00b9a36bcc6 100644
--- a/Mage.Sets/src/mage/cards/c/Clone.java
+++ b/Mage.Sets/src/mage/cards/c/Clone.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Clone extends CardImpl {
+public final class Clone extends CardImpl {
public Clone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloneLegion.java b/Mage.Sets/src/mage/cards/c/CloneLegion.java
index 423b0c22ff2..abe37c104c6 100644
--- a/Mage.Sets/src/mage/cards/c/CloneLegion.java
+++ b/Mage.Sets/src/mage/cards/c/CloneLegion.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class CloneLegion extends CardImpl {
+public final class CloneLegion extends CardImpl {
public CloneLegion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{7}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloneShell.java b/Mage.Sets/src/mage/cards/c/CloneShell.java
index cf0c4c95531..93ac2a878ce 100644
--- a/Mage.Sets/src/mage/cards/c/CloneShell.java
+++ b/Mage.Sets/src/mage/cards/c/CloneShell.java
@@ -49,7 +49,7 @@ import mage.util.CardUtil;
/**
* @author nantuko
*/
-public class CloneShell extends CardImpl {
+public final class CloneShell extends CardImpl {
public CloneShell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
@@ -92,7 +92,7 @@ class CloneShellEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
- if (controller != null) {
+ if (controller == null) {
return false;
}
Cards cards = new CardsImpl(controller.getLibrary().getTopCards(game, 4));
diff --git a/Mage.Sets/src/mage/cards/c/CloseQuarters.java b/Mage.Sets/src/mage/cards/c/CloseQuarters.java
index 717f352b810..0108efc14cd 100644
--- a/Mage.Sets/src/mage/cards/c/CloseQuarters.java
+++ b/Mage.Sets/src/mage/cards/c/CloseQuarters.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class CloseQuarters extends CardImpl {
+public final class CloseQuarters extends CardImpl {
final static private FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
diff --git a/Mage.Sets/src/mage/cards/c/ClotSliver.java b/Mage.Sets/src/mage/cards/c/ClotSliver.java
index f81d24e29c8..79b0bafedb3 100644
--- a/Mage.Sets/src/mage/cards/c/ClotSliver.java
+++ b/Mage.Sets/src/mage/cards/c/ClotSliver.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class ClotSliver extends CardImpl {
+public final class ClotSliver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Slivers");
diff --git a/Mage.Sets/src/mage/cards/c/CloudCover.java b/Mage.Sets/src/mage/cards/c/CloudCover.java
index f75f3cbc227..91081c61511 100644
--- a/Mage.Sets/src/mage/cards/c/CloudCover.java
+++ b/Mage.Sets/src/mage/cards/c/CloudCover.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class CloudCover extends CardImpl {
+public final class CloudCover extends CardImpl {
public CloudCover(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudCrusader.java b/Mage.Sets/src/mage/cards/c/CloudCrusader.java
index b6c84dc6d9a..1128b5303e8 100644
--- a/Mage.Sets/src/mage/cards/c/CloudCrusader.java
+++ b/Mage.Sets/src/mage/cards/c/CloudCrusader.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CloudCrusader extends CardImpl {
+public final class CloudCrusader extends CardImpl {
public CloudCrusader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudDjinn.java b/Mage.Sets/src/mage/cards/c/CloudDjinn.java
index 8a638f021c1..56b122d470e 100644
--- a/Mage.Sets/src/mage/cards/c/CloudDjinn.java
+++ b/Mage.Sets/src/mage/cards/c/CloudDjinn.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CloudDjinn extends CardImpl {
+public final class CloudDjinn extends CardImpl {
public CloudDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudDragon.java b/Mage.Sets/src/mage/cards/c/CloudDragon.java
index 2c35637a78b..1baa7da72d0 100644
--- a/Mage.Sets/src/mage/cards/c/CloudDragon.java
+++ b/Mage.Sets/src/mage/cards/c/CloudDragon.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author ilcartographer
*/
-public class CloudDragon extends CardImpl {
+public final class CloudDragon extends CardImpl {
public CloudDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudElemental.java b/Mage.Sets/src/mage/cards/c/CloudElemental.java
index c042e9738da..e102218a2e5 100644
--- a/Mage.Sets/src/mage/cards/c/CloudElemental.java
+++ b/Mage.Sets/src/mage/cards/c/CloudElemental.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CloudElemental extends CardImpl {
+public final class CloudElemental extends CardImpl {
public CloudElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudKey.java b/Mage.Sets/src/mage/cards/c/CloudKey.java
index 764bad1d0cd..7da1f97dfc8 100644
--- a/Mage.Sets/src/mage/cards/c/CloudKey.java
+++ b/Mage.Sets/src/mage/cards/c/CloudKey.java
@@ -27,7 +27,7 @@ import mage.util.CardUtil;
*
* @author nick.myers
*/
-public class CloudKey extends CardImpl {
+public final class CloudKey extends CardImpl {
public CloudKey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudManta.java b/Mage.Sets/src/mage/cards/c/CloudManta.java
index 94b8589d0a3..f760df24dde 100644
--- a/Mage.Sets/src/mage/cards/c/CloudManta.java
+++ b/Mage.Sets/src/mage/cards/c/CloudManta.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CloudManta extends CardImpl {
+public final class CloudManta extends CardImpl {
public CloudManta(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudOfFaeries.java b/Mage.Sets/src/mage/cards/c/CloudOfFaeries.java
index 872cc6ab85e..bb04f1a8895 100644
--- a/Mage.Sets/src/mage/cards/c/CloudOfFaeries.java
+++ b/Mage.Sets/src/mage/cards/c/CloudOfFaeries.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class CloudOfFaeries extends CardImpl {
+public final class CloudOfFaeries extends CardImpl {
public CloudOfFaeries(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudPirates.java b/Mage.Sets/src/mage/cards/c/CloudPirates.java
index cb3e837bb06..ade69034f34 100644
--- a/Mage.Sets/src/mage/cards/c/CloudPirates.java
+++ b/Mage.Sets/src/mage/cards/c/CloudPirates.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CloudPirates extends CardImpl {
+public final class CloudPirates extends CardImpl {
public CloudPirates(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudSpirit.java b/Mage.Sets/src/mage/cards/c/CloudSpirit.java
index a8027b5b472..3f85a0a1982 100644
--- a/Mage.Sets/src/mage/cards/c/CloudSpirit.java
+++ b/Mage.Sets/src/mage/cards/c/CloudSpirit.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author michael.napoleon@gmail.com
*/
-public class CloudSpirit extends CardImpl {
+public final class CloudSpirit extends CardImpl {
public CloudSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudSprite.java b/Mage.Sets/src/mage/cards/c/CloudSprite.java
index 14e06f61127..1c4362cf4ed 100644
--- a/Mage.Sets/src/mage/cards/c/CloudSprite.java
+++ b/Mage.Sets/src/mage/cards/c/CloudSprite.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CloudSprite extends CardImpl {
+public final class CloudSprite extends CardImpl {
public CloudSprite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Cloudblazer.java b/Mage.Sets/src/mage/cards/c/Cloudblazer.java
index b0fefc28035..7502f7ec402 100644
--- a/Mage.Sets/src/mage/cards/c/Cloudblazer.java
+++ b/Mage.Sets/src/mage/cards/c/Cloudblazer.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class Cloudblazer extends CardImpl {
+public final class Cloudblazer extends CardImpl {
public Cloudblazer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudchaserEagle.java b/Mage.Sets/src/mage/cards/c/CloudchaserEagle.java
index 01d305c7997..05b2f545cf8 100644
--- a/Mage.Sets/src/mage/cards/c/CloudchaserEagle.java
+++ b/Mage.Sets/src/mage/cards/c/CloudchaserEagle.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Loki
*/
-public class CloudchaserEagle extends CardImpl {
+public final class CloudchaserEagle extends CardImpl {
public CloudchaserEagle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudchaserKestrel.java b/Mage.Sets/src/mage/cards/c/CloudchaserKestrel.java
index 91443238a9f..3d88bad4654 100644
--- a/Mage.Sets/src/mage/cards/c/CloudchaserKestrel.java
+++ b/Mage.Sets/src/mage/cards/c/CloudchaserKestrel.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LoneFox
*/
-public class CloudchaserKestrel extends CardImpl {
+public final class CloudchaserKestrel extends CardImpl {
public CloudchaserKestrel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudcrestLake.java b/Mage.Sets/src/mage/cards/c/CloudcrestLake.java
index 4318f904ec3..7d99e4597ef 100644
--- a/Mage.Sets/src/mage/cards/c/CloudcrestLake.java
+++ b/Mage.Sets/src/mage/cards/c/CloudcrestLake.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
/**
* @author Loki
*/
-public class CloudcrestLake extends CardImpl {
+public final class CloudcrestLake extends CardImpl {
public CloudcrestLake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CloudcrownOak.java b/Mage.Sets/src/mage/cards/c/CloudcrownOak.java
index da3874c902b..5fc98cfd3c8 100644
--- a/Mage.Sets/src/mage/cards/c/CloudcrownOak.java
+++ b/Mage.Sets/src/mage/cards/c/CloudcrownOak.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CloudcrownOak extends CardImpl {
+public final class CloudcrownOak extends CardImpl {
public CloudcrownOak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudfinRaptor.java b/Mage.Sets/src/mage/cards/c/CloudfinRaptor.java
index 609a6491148..aa5e2809b79 100644
--- a/Mage.Sets/src/mage/cards/c/CloudfinRaptor.java
+++ b/Mage.Sets/src/mage/cards/c/CloudfinRaptor.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CloudfinRaptor extends CardImpl {
+public final class CloudfinRaptor extends CardImpl {
public CloudfinRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Cloudform.java b/Mage.Sets/src/mage/cards/c/Cloudform.java
index 1c3061052fc..dbff2bb288f 100644
--- a/Mage.Sets/src/mage/cards/c/Cloudform.java
+++ b/Mage.Sets/src/mage/cards/c/Cloudform.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class Cloudform extends CardImpl {
+public final class Cloudform extends CardImpl {
public Cloudform(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudgoatRanger.java b/Mage.Sets/src/mage/cards/c/CloudgoatRanger.java
index f55639b471b..53e34736bf5 100644
--- a/Mage.Sets/src/mage/cards/c/CloudgoatRanger.java
+++ b/Mage.Sets/src/mage/cards/c/CloudgoatRanger.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class CloudgoatRanger extends CardImpl {
+public final class CloudgoatRanger extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Kithkin you control");
diff --git a/Mage.Sets/src/mage/cards/c/CloudheathDrake.java b/Mage.Sets/src/mage/cards/c/CloudheathDrake.java
index 9dd5a0db48e..5cbdea39020 100644
--- a/Mage.Sets/src/mage/cards/c/CloudheathDrake.java
+++ b/Mage.Sets/src/mage/cards/c/CloudheathDrake.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class CloudheathDrake extends CardImpl {
+public final class CloudheathDrake extends CardImpl {
public CloudheathDrake (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudhoofKirin.java b/Mage.Sets/src/mage/cards/c/CloudhoofKirin.java
index 4b88bb7f5ad..50e45f6bace 100644
--- a/Mage.Sets/src/mage/cards/c/CloudhoofKirin.java
+++ b/Mage.Sets/src/mage/cards/c/CloudhoofKirin.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class CloudhoofKirin extends CardImpl {
+public final class CloudhoofKirin extends CardImpl {
public CloudhoofKirin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Cloudpost.java b/Mage.Sets/src/mage/cards/c/Cloudpost.java
index 43fd7cc2688..5187b6299fd 100644
--- a/Mage.Sets/src/mage/cards/c/Cloudpost.java
+++ b/Mage.Sets/src/mage/cards/c/Cloudpost.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jonubuu
*/
-public class Cloudpost extends CardImpl {
+public final class Cloudpost extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Locus on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/c/CloudreachCavalry.java b/Mage.Sets/src/mage/cards/c/CloudreachCavalry.java
index 2c5d3ec0a28..05618977b31 100644
--- a/Mage.Sets/src/mage/cards/c/CloudreachCavalry.java
+++ b/Mage.Sets/src/mage/cards/c/CloudreachCavalry.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class CloudreachCavalry extends CardImpl {
+public final class CloudreachCavalry extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Bird");
diff --git a/Mage.Sets/src/mage/cards/c/CloudreaderSphinx.java b/Mage.Sets/src/mage/cards/c/CloudreaderSphinx.java
index 37f5eb7dc43..cf18c7ecf1a 100644
--- a/Mage.Sets/src/mage/cards/c/CloudreaderSphinx.java
+++ b/Mage.Sets/src/mage/cards/c/CloudreaderSphinx.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class CloudreaderSphinx extends CardImpl {
+public final class CloudreaderSphinx extends CardImpl {
public CloudreaderSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Cloudseeder.java b/Mage.Sets/src/mage/cards/c/Cloudseeder.java
index a86c21cceec..29361dc171e 100644
--- a/Mage.Sets/src/mage/cards/c/Cloudseeder.java
+++ b/Mage.Sets/src/mage/cards/c/Cloudseeder.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.CloudSpriteToken;
*
* @author LoneFox
*/
-public class Cloudseeder extends CardImpl {
+public final class Cloudseeder extends CardImpl {
public Cloudseeder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Cloudshift.java b/Mage.Sets/src/mage/cards/c/Cloudshift.java
index 5f6941023f7..b20d3403ef8 100644
--- a/Mage.Sets/src/mage/cards/c/Cloudshift.java
+++ b/Mage.Sets/src/mage/cards/c/Cloudshift.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author noxx
*/
-public class Cloudshift extends CardImpl {
+public final class Cloudshift extends CardImpl {
public Cloudshift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Cloudskate.java b/Mage.Sets/src/mage/cards/c/Cloudskate.java
index 6a144fe38ec..7774f42a5ce 100644
--- a/Mage.Sets/src/mage/cards/c/Cloudskate.java
+++ b/Mage.Sets/src/mage/cards/c/Cloudskate.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author markedagain
*/
-public class Cloudskate extends CardImpl {
+public final class Cloudskate extends CardImpl {
public Cloudskate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CloudstoneCurio.java b/Mage.Sets/src/mage/cards/c/CloudstoneCurio.java
index d4413d6c57d..5fafa7c94b0 100644
--- a/Mage.Sets/src/mage/cards/c/CloudstoneCurio.java
+++ b/Mage.Sets/src/mage/cards/c/CloudstoneCurio.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class CloudstoneCurio extends CardImpl {
+public final class CloudstoneCurio extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a nonartifact permanent");
diff --git a/Mage.Sets/src/mage/cards/c/Cloudthresher.java b/Mage.Sets/src/mage/cards/c/Cloudthresher.java
index 9182d74cf81..88de53a92d7 100644
--- a/Mage.Sets/src/mage/cards/c/Cloudthresher.java
+++ b/Mage.Sets/src/mage/cards/c/Cloudthresher.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class Cloudthresher extends CardImpl {
+public final class Cloudthresher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CloutOfTheDominus.java b/Mage.Sets/src/mage/cards/c/CloutOfTheDominus.java
index 90323feef0f..717f391dd14 100644
--- a/Mage.Sets/src/mage/cards/c/CloutOfTheDominus.java
+++ b/Mage.Sets/src/mage/cards/c/CloutOfTheDominus.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class CloutOfTheDominus extends CardImpl {
+public final class CloutOfTheDominus extends CardImpl {
public CloutOfTheDominus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U/R}");
diff --git a/Mage.Sets/src/mage/cards/c/ClovenCasting.java b/Mage.Sets/src/mage/cards/c/ClovenCasting.java
index 107ed2c49da..4b90d78159a 100644
--- a/Mage.Sets/src/mage/cards/c/ClovenCasting.java
+++ b/Mage.Sets/src/mage/cards/c/ClovenCasting.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*
* @author jeffwadsworth
*/
-public class ClovenCasting extends CardImpl {
+public final class ClovenCasting extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a multicolored instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/c/ClutchOfCurrents.java b/Mage.Sets/src/mage/cards/c/ClutchOfCurrents.java
index 9a0ea6d406f..2a77d5d1d7b 100644
--- a/Mage.Sets/src/mage/cards/c/ClutchOfCurrents.java
+++ b/Mage.Sets/src/mage/cards/c/ClutchOfCurrents.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ClutchOfCurrents extends CardImpl {
+public final class ClutchOfCurrents extends CardImpl {
public ClutchOfCurrents(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ClutchOfTheUndercity.java b/Mage.Sets/src/mage/cards/c/ClutchOfTheUndercity.java
index f7c90597c7c..4281558f397 100644
--- a/Mage.Sets/src/mage/cards/c/ClutchOfTheUndercity.java
+++ b/Mage.Sets/src/mage/cards/c/ClutchOfTheUndercity.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class ClutchOfTheUndercity extends CardImpl {
+public final class ClutchOfTheUndercity extends CardImpl {
public ClutchOfTheUndercity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ClutchOfUndeath.java b/Mage.Sets/src/mage/cards/c/ClutchOfUndeath.java
index 2c04cc3a7e9..c3aeaf5abd8 100644
--- a/Mage.Sets/src/mage/cards/c/ClutchOfUndeath.java
+++ b/Mage.Sets/src/mage/cards/c/ClutchOfUndeath.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JRHerlehy
*/
-public class ClutchOfUndeath extends CardImpl {
+public final class ClutchOfUndeath extends CardImpl {
public ClutchOfUndeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CoalGolem.java b/Mage.Sets/src/mage/cards/c/CoalGolem.java
index 55e223aa5f6..3df4dbdb791 100644
--- a/Mage.Sets/src/mage/cards/c/CoalGolem.java
+++ b/Mage.Sets/src/mage/cards/c/CoalGolem.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class CoalGolem extends CardImpl {
+public final class CoalGolem extends CardImpl {
public CoalGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/c/CoalStoker.java b/Mage.Sets/src/mage/cards/c/CoalStoker.java
index 3423694d1c5..4f9d670215b 100644
--- a/Mage.Sets/src/mage/cards/c/CoalStoker.java
+++ b/Mage.Sets/src/mage/cards/c/CoalStoker.java
@@ -44,7 +44,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author ilcartographer
*/
-public class CoalStoker extends CardImpl {
+public final class CoalStoker extends CardImpl {
public CoalStoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CoalhaulerSwine.java b/Mage.Sets/src/mage/cards/c/CoalhaulerSwine.java
index 6508d432b07..58cfe0dd3d3 100644
--- a/Mage.Sets/src/mage/cards/c/CoalhaulerSwine.java
+++ b/Mage.Sets/src/mage/cards/c/CoalhaulerSwine.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author vereena42
*/
-public class CoalhaulerSwine extends CardImpl {
+public final class CoalhaulerSwine extends CardImpl {
public CoalhaulerSwine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CoalitionFlag.java b/Mage.Sets/src/mage/cards/c/CoalitionFlag.java
index a5e996cd2d6..15b29dd0f1e 100644
--- a/Mage.Sets/src/mage/cards/c/CoalitionFlag.java
+++ b/Mage.Sets/src/mage/cards/c/CoalitionFlag.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class CoalitionFlag extends CardImpl {
+public final class CoalitionFlag extends CardImpl {
public CoalitionFlag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CoalitionHonorGuard.java b/Mage.Sets/src/mage/cards/c/CoalitionHonorGuard.java
index 6625d8b943c..d2eea391947 100644
--- a/Mage.Sets/src/mage/cards/c/CoalitionHonorGuard.java
+++ b/Mage.Sets/src/mage/cards/c/CoalitionHonorGuard.java
@@ -43,7 +43,7 @@ import mage.filter.FilterPermanent;
*
* @author LevelX2
*/
-public class CoalitionHonorGuard extends CardImpl {
+public final class CoalitionHonorGuard extends CardImpl {
public CoalitionHonorGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CoalitionRelic.java b/Mage.Sets/src/mage/cards/c/CoalitionRelic.java
index 2c23040e8ce..3ff9dd79ba7 100644
--- a/Mage.Sets/src/mage/cards/c/CoalitionRelic.java
+++ b/Mage.Sets/src/mage/cards/c/CoalitionRelic.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class CoalitionRelic extends CardImpl {
+public final class CoalitionRelic extends CardImpl {
public CoalitionRelic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CoalitionVictory.java b/Mage.Sets/src/mage/cards/c/CoalitionVictory.java
index b5713cb7ad9..ac8b190d19f 100644
--- a/Mage.Sets/src/mage/cards/c/CoalitionVictory.java
+++ b/Mage.Sets/src/mage/cards/c/CoalitionVictory.java
@@ -46,7 +46,7 @@ import mage.game.Game;
/**
* @author fireshoes
*/
-public class CoalitionVictory extends CardImpl {
+public final class CoalitionVictory extends CardImpl {
static final FilterControlledLandPermanent filterPlains = new FilterControlledLandPermanent();
static final FilterControlledLandPermanent filterIsland = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/c/CoastWatcher.java b/Mage.Sets/src/mage/cards/c/CoastWatcher.java
index 510aedbcea9..f29232c0fd0 100644
--- a/Mage.Sets/src/mage/cards/c/CoastWatcher.java
+++ b/Mage.Sets/src/mage/cards/c/CoastWatcher.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CoastWatcher extends CardImpl {
+public final class CoastWatcher extends CardImpl {
public CoastWatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoastalBreach.java b/Mage.Sets/src/mage/cards/c/CoastalBreach.java
index f2515fc2310..9b925e19a36 100644
--- a/Mage.Sets/src/mage/cards/c/CoastalBreach.java
+++ b/Mage.Sets/src/mage/cards/c/CoastalBreach.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterNonlandPermanent;
*
* @author LevelX2
*/
-public class CoastalBreach extends CardImpl {
+public final class CoastalBreach extends CardImpl {
public CoastalBreach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoastalDiscovery.java b/Mage.Sets/src/mage/cards/c/CoastalDiscovery.java
index 99883d794ec..7cbd2f96b68 100644
--- a/Mage.Sets/src/mage/cards/c/CoastalDiscovery.java
+++ b/Mage.Sets/src/mage/cards/c/CoastalDiscovery.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class CoastalDiscovery extends CardImpl {
+public final class CoastalDiscovery extends CardImpl {
public CoastalDiscovery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoastalDrake.java b/Mage.Sets/src/mage/cards/c/CoastalDrake.java
index d8fd9eb2643..30a323c711e 100644
--- a/Mage.Sets/src/mage/cards/c/CoastalDrake.java
+++ b/Mage.Sets/src/mage/cards/c/CoastalDrake.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CoastalDrake extends CardImpl {
+public final class CoastalDrake extends CardImpl {
public CoastalDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoastalHornclaw.java b/Mage.Sets/src/mage/cards/c/CoastalHornclaw.java
index c41a11017f7..015e224f9b2 100644
--- a/Mage.Sets/src/mage/cards/c/CoastalHornclaw.java
+++ b/Mage.Sets/src/mage/cards/c/CoastalHornclaw.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class CoastalHornclaw extends CardImpl {
+public final class CoastalHornclaw extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/c/CoastalPiracy.java b/Mage.Sets/src/mage/cards/c/CoastalPiracy.java
index f9bbec209ee..be5ced370cb 100644
--- a/Mage.Sets/src/mage/cards/c/CoastalPiracy.java
+++ b/Mage.Sets/src/mage/cards/c/CoastalPiracy.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author Xavierv3131
*/
-public class CoastalPiracy extends CardImpl {
+public final class CoastalPiracy extends CardImpl {
public CoastalPiracy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoastalTower.java b/Mage.Sets/src/mage/cards/c/CoastalTower.java
index 13eaa4c13e4..70664edad2f 100644
--- a/Mage.Sets/src/mage/cards/c/CoastalTower.java
+++ b/Mage.Sets/src/mage/cards/c/CoastalTower.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class CoastalTower extends CardImpl {
+public final class CoastalTower extends CardImpl {
public CoastalTower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CoastalWizard.java b/Mage.Sets/src/mage/cards/c/CoastalWizard.java
index 4b689b32689..a26003a96da 100644
--- a/Mage.Sets/src/mage/cards/c/CoastalWizard.java
+++ b/Mage.Sets/src/mage/cards/c/CoastalWizard.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CoastalWizard extends CardImpl {
+public final class CoastalWizard extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CoastlineChimera.java b/Mage.Sets/src/mage/cards/c/CoastlineChimera.java
index bfe814eab47..6d9505ff71e 100644
--- a/Mage.Sets/src/mage/cards/c/CoastlineChimera.java
+++ b/Mage.Sets/src/mage/cards/c/CoastlineChimera.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class CoastlineChimera extends CardImpl {
+public final class CoastlineChimera extends CardImpl {
public CoastlineChimera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoatOfArms.java b/Mage.Sets/src/mage/cards/c/CoatOfArms.java
index 978db2257fb..e0d6182edf9 100644
--- a/Mage.Sets/src/mage/cards/c/CoatOfArms.java
+++ b/Mage.Sets/src/mage/cards/c/CoatOfArms.java
@@ -45,7 +45,7 @@ import mage.util.SubTypeList;
*
* @author North
*/
-public class CoatOfArms extends CardImpl {
+public final class CoatOfArms extends CardImpl {
public CoatOfArms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/c/CoatWithVenom.java b/Mage.Sets/src/mage/cards/c/CoatWithVenom.java
index 854f068245c..3dc1bdc4401 100644
--- a/Mage.Sets/src/mage/cards/c/CoatWithVenom.java
+++ b/Mage.Sets/src/mage/cards/c/CoatWithVenom.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CoatWithVenom extends CardImpl {
+public final class CoatWithVenom extends CardImpl {
public CoatWithVenom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java b/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java
index 4d0c25fb02e..505a130c544 100644
--- a/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java
+++ b/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class CoaxFromTheBlindEternities extends CardImpl {
+public final class CoaxFromTheBlindEternities extends CardImpl {
private static final FilterCard filter = new FilterCard("an Eldrazi card");
diff --git a/Mage.Sets/src/mage/cards/c/CobaltGolem.java b/Mage.Sets/src/mage/cards/c/CobaltGolem.java
index 1f806dfcb07..b96db4aa6d2 100644
--- a/Mage.Sets/src/mage/cards/c/CobaltGolem.java
+++ b/Mage.Sets/src/mage/cards/c/CobaltGolem.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class CobaltGolem extends CardImpl {
+public final class CobaltGolem extends CardImpl {
public CobaltGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/c/Cobblebrute.java b/Mage.Sets/src/mage/cards/c/Cobblebrute.java
index 503c4b2f03d..841cbe11f3e 100644
--- a/Mage.Sets/src/mage/cards/c/Cobblebrute.java
+++ b/Mage.Sets/src/mage/cards/c/Cobblebrute.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Cobblebrute extends CardImpl {
+public final class Cobblebrute extends CardImpl {
public Cobblebrute (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CobbledWings.java b/Mage.Sets/src/mage/cards/c/CobbledWings.java
index fed371f2f87..67c442b735b 100644
--- a/Mage.Sets/src/mage/cards/c/CobbledWings.java
+++ b/Mage.Sets/src/mage/cards/c/CobbledWings.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author nantuko
*/
-public class CobbledWings extends CardImpl {
+public final class CobbledWings extends CardImpl {
public CobbledWings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CobraTrap.java b/Mage.Sets/src/mage/cards/c/CobraTrap.java
index 681dad5561e..36d8956cfdd 100644
--- a/Mage.Sets/src/mage/cards/c/CobraTrap.java
+++ b/Mage.Sets/src/mage/cards/c/CobraTrap.java
@@ -52,7 +52,7 @@ import java.util.UUID;
/**
* @author Rafbill
*/
-public class CobraTrap extends CardImpl {
+public final class CobraTrap extends CardImpl {
public CobraTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Cockatrice.java b/Mage.Sets/src/mage/cards/c/Cockatrice.java
index 53d0ff12e7c..2c9e22b51bf 100644
--- a/Mage.Sets/src/mage/cards/c/Cockatrice.java
+++ b/Mage.Sets/src/mage/cards/c/Cockatrice.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Backfir3
*/
-public class Cockatrice extends CardImpl {
+public final class Cockatrice extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creature");
diff --git a/Mage.Sets/src/mage/cards/c/CodexShredder.java b/Mage.Sets/src/mage/cards/c/CodexShredder.java
index 486361fb9d1..dc24e5ff8f0 100644
--- a/Mage.Sets/src/mage/cards/c/CodexShredder.java
+++ b/Mage.Sets/src/mage/cards/c/CodexShredder.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author LevelX2
*/
-public class CodexShredder extends CardImpl {
+public final class CodexShredder extends CardImpl {
public CodexShredder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/c/CoercedConfession.java b/Mage.Sets/src/mage/cards/c/CoercedConfession.java
index 75245e08609..f53c803776c 100644
--- a/Mage.Sets/src/mage/cards/c/CoercedConfession.java
+++ b/Mage.Sets/src/mage/cards/c/CoercedConfession.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class CoercedConfession extends CardImpl {
+public final class CoercedConfession extends CardImpl {
public CoercedConfession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/c/Coercion.java b/Mage.Sets/src/mage/cards/c/Coercion.java
index dc05d270480..ca034d939c0 100644
--- a/Mage.Sets/src/mage/cards/c/Coercion.java
+++ b/Mage.Sets/src/mage/cards/c/Coercion.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class Coercion extends CardImpl {
+public final class Coercion extends CardImpl {
public Coercion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CoercivePortal.java b/Mage.Sets/src/mage/cards/c/CoercivePortal.java
index e1ec484e6bf..4391b365096 100644
--- a/Mage.Sets/src/mage/cards/c/CoercivePortal.java
+++ b/Mage.Sets/src/mage/cards/c/CoercivePortal.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class CoercivePortal extends CardImpl {
+public final class CoercivePortal extends CardImpl {
public CoercivePortal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/c/CoffinPuppets.java b/Mage.Sets/src/mage/cards/c/CoffinPuppets.java
index 55e53caf1bf..34005b06f8f 100644
--- a/Mage.Sets/src/mage/cards/c/CoffinPuppets.java
+++ b/Mage.Sets/src/mage/cards/c/CoffinPuppets.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class CoffinPuppets extends CardImpl {
+public final class CoffinPuppets extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control a Swamp");
diff --git a/Mage.Sets/src/mage/cards/c/CoffinPurge.java b/Mage.Sets/src/mage/cards/c/CoffinPurge.java
index bfdf3c82faf..764d4829970 100644
--- a/Mage.Sets/src/mage/cards/c/CoffinPurge.java
+++ b/Mage.Sets/src/mage/cards/c/CoffinPurge.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInGraveyard;
* @author cbt33, jonubuu (Withered Wretch)
*/
-public class CoffinPurge extends CardImpl {
+public final class CoffinPurge extends CardImpl {
public CoffinPurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CoffinQueen.java b/Mage.Sets/src/mage/cards/c/CoffinQueen.java
index c7ea4503d51..cd9bd8611b9 100644
--- a/Mage.Sets/src/mage/cards/c/CoffinQueen.java
+++ b/Mage.Sets/src/mage/cards/c/CoffinQueen.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author anonymous
*/
-public class CoffinQueen extends CardImpl {
+public final class CoffinQueen extends CardImpl {
public CoffinQueen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Cognivore.java b/Mage.Sets/src/mage/cards/c/Cognivore.java
index f1f4cd19b50..d5e7ca4556a 100644
--- a/Mage.Sets/src/mage/cards/c/Cognivore.java
+++ b/Mage.Sets/src/mage/cards/c/Cognivore.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
/**
* @author cbt33
*/
-public class Cognivore extends CardImpl {
+public final class Cognivore extends CardImpl {
static final FilterCard filter = new FilterCard("instant cards");
diff --git a/Mage.Sets/src/mage/cards/c/CogworkAssembler.java b/Mage.Sets/src/mage/cards/c/CogworkAssembler.java
index 650f1962f87..b4189bad570 100644
--- a/Mage.Sets/src/mage/cards/c/CogworkAssembler.java
+++ b/Mage.Sets/src/mage/cards/c/CogworkAssembler.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class CogworkAssembler extends CardImpl {
+public final class CogworkAssembler extends CardImpl {
public CogworkAssembler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CogworkersPuzzleknot.java b/Mage.Sets/src/mage/cards/c/CogworkersPuzzleknot.java
index 704288759cc..33473af02dd 100644
--- a/Mage.Sets/src/mage/cards/c/CogworkersPuzzleknot.java
+++ b/Mage.Sets/src/mage/cards/c/CogworkersPuzzleknot.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.ServoToken;
*
* @author emerald000
*/
-public class CogworkersPuzzleknot extends CardImpl {
+public final class CogworkersPuzzleknot extends CardImpl {
public CogworkersPuzzleknot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CoiledTinviper.java b/Mage.Sets/src/mage/cards/c/CoiledTinviper.java
index 659837bfab1..0c6b3204d8c 100644
--- a/Mage.Sets/src/mage/cards/c/CoiledTinviper.java
+++ b/Mage.Sets/src/mage/cards/c/CoiledTinviper.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CoiledTinviper extends CardImpl {
+public final class CoiledTinviper extends CardImpl {
public CoiledTinviper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CoilingOracle.java b/Mage.Sets/src/mage/cards/c/CoilingOracle.java
index 358fa6714b2..60dbcd589ea 100644
--- a/Mage.Sets/src/mage/cards/c/CoilingOracle.java
+++ b/Mage.Sets/src/mage/cards/c/CoilingOracle.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author mluds
*/
-public class CoilingOracle extends CardImpl {
+public final class CoilingOracle extends CardImpl {
public CoilingOracle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoilingWoodworm.java b/Mage.Sets/src/mage/cards/c/CoilingWoodworm.java
index 189edae62bf..09d562a08b0 100644
--- a/Mage.Sets/src/mage/cards/c/CoilingWoodworm.java
+++ b/Mage.Sets/src/mage/cards/c/CoilingWoodworm.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class CoilingWoodworm extends CardImpl {
+public final class CoilingWoodworm extends CardImpl {
final static FilterPermanent filterLands = new FilterPermanent("Forests you control");
diff --git a/Mage.Sets/src/mage/cards/c/ColdEyedSelkie.java b/Mage.Sets/src/mage/cards/c/ColdEyedSelkie.java
index f488e3cfde4..c8147446f77 100644
--- a/Mage.Sets/src/mage/cards/c/ColdEyedSelkie.java
+++ b/Mage.Sets/src/mage/cards/c/ColdEyedSelkie.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ColdEyedSelkie extends CardImpl {
+public final class ColdEyedSelkie extends CardImpl {
public ColdEyedSelkie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G/U}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/c/ColdSnap.java b/Mage.Sets/src/mage/cards/c/ColdSnap.java
index ba44eaf38a3..a76f4df750b 100644
--- a/Mage.Sets/src/mage/cards/c/ColdSnap.java
+++ b/Mage.Sets/src/mage/cards/c/ColdSnap.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class ColdSnap extends CardImpl {
+public final class ColdSnap extends CardImpl {
public ColdSnap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ColdStorage.java b/Mage.Sets/src/mage/cards/c/ColdStorage.java
index 86d1396b79f..41e20eaaa07 100644
--- a/Mage.Sets/src/mage/cards/c/ColdStorage.java
+++ b/Mage.Sets/src/mage/cards/c/ColdStorage.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class ColdStorage extends CardImpl {
+public final class ColdStorage extends CardImpl {
public ColdStorage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/c/ColdWaterSnapper.java b/Mage.Sets/src/mage/cards/c/ColdWaterSnapper.java
index 0f3fede1422..deab6ec8fef 100644
--- a/Mage.Sets/src/mage/cards/c/ColdWaterSnapper.java
+++ b/Mage.Sets/src/mage/cards/c/ColdWaterSnapper.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class ColdWaterSnapper extends CardImpl {
+public final class ColdWaterSnapper extends CardImpl {
public ColdWaterSnapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ColdsteelHeart.java b/Mage.Sets/src/mage/cards/c/ColdsteelHeart.java
index adbe418cbf4..1d480223727 100644
--- a/Mage.Sets/src/mage/cards/c/ColdsteelHeart.java
+++ b/Mage.Sets/src/mage/cards/c/ColdsteelHeart.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author Plopman
*/
-public class ColdsteelHeart extends CardImpl {
+public final class ColdsteelHeart extends CardImpl {
public ColdsteelHeart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/c/ColfenorsPlans.java b/Mage.Sets/src/mage/cards/c/ColfenorsPlans.java
index 89d26739faa..61381d9db35 100644
--- a/Mage.Sets/src/mage/cards/c/ColfenorsPlans.java
+++ b/Mage.Sets/src/mage/cards/c/ColfenorsPlans.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author Styxo
*/
-public class ColfenorsPlans extends CardImpl {
+public final class ColfenorsPlans extends CardImpl {
public ColfenorsPlans(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ColfenorsUrn.java b/Mage.Sets/src/mage/cards/c/ColfenorsUrn.java
index 6f0c415ae1a..798ff59a842 100644
--- a/Mage.Sets/src/mage/cards/c/ColfenorsUrn.java
+++ b/Mage.Sets/src/mage/cards/c/ColfenorsUrn.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author Styxo
*/
-public class ColfenorsUrn extends CardImpl {
+public final class ColfenorsUrn extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with toughness 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/c/CollapsingBorders.java b/Mage.Sets/src/mage/cards/c/CollapsingBorders.java
index c273b3e7b8f..ee28efaa7ac 100644
--- a/Mage.Sets/src/mage/cards/c/CollapsingBorders.java
+++ b/Mage.Sets/src/mage/cards/c/CollapsingBorders.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
* @author LoneFox
*
*/
-public class CollapsingBorders extends CardImpl {
+public final class CollapsingBorders extends CardImpl {
public CollapsingBorders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CollateralDamage.java b/Mage.Sets/src/mage/cards/c/CollateralDamage.java
index 0bc5e08af79..bda2e1a7d46 100644
--- a/Mage.Sets/src/mage/cards/c/CollateralDamage.java
+++ b/Mage.Sets/src/mage/cards/c/CollateralDamage.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class CollateralDamage extends CardImpl {
+public final class CollateralDamage extends CardImpl {
public CollateralDamage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CollectedCompany.java b/Mage.Sets/src/mage/cards/c/CollectedCompany.java
index 66f8231aea9..9efba70788f 100644
--- a/Mage.Sets/src/mage/cards/c/CollectedCompany.java
+++ b/Mage.Sets/src/mage/cards/c/CollectedCompany.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
*
* @author jeffwadsworth
*/
-public class CollectedCompany extends CardImpl {
+public final class CollectedCompany extends CardImpl {
private static final FilterCard filter = new FilterCard("up to two creature cards with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/c/CollectiveBlessing.java b/Mage.Sets/src/mage/cards/c/CollectiveBlessing.java
index 25aea0d3496..349fcb0ee2e 100644
--- a/Mage.Sets/src/mage/cards/c/CollectiveBlessing.java
+++ b/Mage.Sets/src/mage/cards/c/CollectiveBlessing.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class CollectiveBlessing extends CardImpl {
+public final class CollectiveBlessing extends CardImpl {
public CollectiveBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CollectiveBrutality.java b/Mage.Sets/src/mage/cards/c/CollectiveBrutality.java
index a7a2b8ca757..aba416e9458 100644
--- a/Mage.Sets/src/mage/cards/c/CollectiveBrutality.java
+++ b/Mage.Sets/src/mage/cards/c/CollectiveBrutality.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CollectiveBrutality extends CardImpl {
+public final class CollectiveBrutality extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card");
private static final FilterPlayer filterDiscard = new FilterPlayer("opponent to discard");
diff --git a/Mage.Sets/src/mage/cards/c/CollectiveDefiance.java b/Mage.Sets/src/mage/cards/c/CollectiveDefiance.java
index 9ef18ea686b..8e273cfb62a 100644
--- a/Mage.Sets/src/mage/cards/c/CollectiveDefiance.java
+++ b/Mage.Sets/src/mage/cards/c/CollectiveDefiance.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author fireshoes
*/
-public class CollectiveDefiance extends CardImpl {
+public final class CollectiveDefiance extends CardImpl {
private static final FilterPlayer filterDiscard = new FilterPlayer("player to discard and then draw cards");
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creature to be dealt damage");
diff --git a/Mage.Sets/src/mage/cards/c/CollectiveEffort.java b/Mage.Sets/src/mage/cards/c/CollectiveEffort.java
index 0048e993b55..db2642d79f5 100644
--- a/Mage.Sets/src/mage/cards/c/CollectiveEffort.java
+++ b/Mage.Sets/src/mage/cards/c/CollectiveEffort.java
@@ -62,7 +62,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author fireshoes
*/
-public class CollectiveEffort extends CardImpl {
+public final class CollectiveEffort extends CardImpl {
private static final FilterControlledCreaturePermanent filterUntapped = new FilterControlledCreaturePermanent("untapped creature you control");
private static final FilterCreaturePermanent filterDestroyCreature = new FilterCreaturePermanent("creature with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/c/CollectiveRestraint.java b/Mage.Sets/src/mage/cards/c/CollectiveRestraint.java
index d2b60309a0b..828be646575 100644
--- a/Mage.Sets/src/mage/cards/c/CollectiveRestraint.java
+++ b/Mage.Sets/src/mage/cards/c/CollectiveRestraint.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent;
*
* @author Simown
*/
-public class CollectiveRestraint extends CardImpl {
+public final class CollectiveRestraint extends CardImpl {
public CollectiveRestraint(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CollectiveUnconscious.java b/Mage.Sets/src/mage/cards/c/CollectiveUnconscious.java
index 0896581b200..c9a804f4d5a 100644
--- a/Mage.Sets/src/mage/cards/c/CollectiveUnconscious.java
+++ b/Mage.Sets/src/mage/cards/c/CollectiveUnconscious.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Plopman
*/
-public class CollectiveUnconscious extends CardImpl {
+public final class CollectiveUnconscious extends CardImpl {
public CollectiveUnconscious(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CollectiveVoyage.java b/Mage.Sets/src/mage/cards/c/CollectiveVoyage.java
index bd26b4b5564..715e02329af 100644
--- a/Mage.Sets/src/mage/cards/c/CollectiveVoyage.java
+++ b/Mage.Sets/src/mage/cards/c/CollectiveVoyage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class CollectiveVoyage extends CardImpl {
+public final class CollectiveVoyage extends CardImpl {
public CollectiveVoyage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}");
@@ -101,7 +101,7 @@ class CollectiveVoyageEffect extends OneShotEffect {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
- TargetCardInLibrary target = new TargetCardInLibrary(0, xSum, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, xSum, StaticFilters.FILTER_CARD_BASIC_LAND);
if (player.searchLibrary(target, game)) {
player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, true, null);
player.shuffleLibrary(source, game);
diff --git a/Mage.Sets/src/mage/cards/c/ColosYearling.java b/Mage.Sets/src/mage/cards/c/ColosYearling.java
index 8940c37bec7..ab728e5fdb1 100644
--- a/Mage.Sets/src/mage/cards/c/ColosYearling.java
+++ b/Mage.Sets/src/mage/cards/c/ColosYearling.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ColosYearling extends CardImpl {
+public final class ColosYearling extends CardImpl {
public ColosYearling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ColossalDreadmaw.java b/Mage.Sets/src/mage/cards/c/ColossalDreadmaw.java
index e1fcac90a43..091da34c844 100644
--- a/Mage.Sets/src/mage/cards/c/ColossalDreadmaw.java
+++ b/Mage.Sets/src/mage/cards/c/ColossalDreadmaw.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class ColossalDreadmaw extends CardImpl {
+public final class ColossalDreadmaw extends CardImpl {
public ColossalDreadmaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ColossalHeroics.java b/Mage.Sets/src/mage/cards/c/ColossalHeroics.java
index 3dd66083024..ca2a4456e63 100644
--- a/Mage.Sets/src/mage/cards/c/ColossalHeroics.java
+++ b/Mage.Sets/src/mage/cards/c/ColossalHeroics.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ColossalHeroics extends CardImpl {
+public final class ColossalHeroics extends CardImpl {
public ColossalHeroics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ColossalMight.java b/Mage.Sets/src/mage/cards/c/ColossalMight.java
index b8b3af73ec1..fb97177ff4c 100644
--- a/Mage.Sets/src/mage/cards/c/ColossalMight.java
+++ b/Mage.Sets/src/mage/cards/c/ColossalMight.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ColossalMight extends CardImpl {
+public final class ColossalMight extends CardImpl {
public ColossalMight (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ColossalWhale.java b/Mage.Sets/src/mage/cards/c/ColossalWhale.java
index ea34c64046f..92e201906de 100644
--- a/Mage.Sets/src/mage/cards/c/ColossalWhale.java
+++ b/Mage.Sets/src/mage/cards/c/ColossalWhale.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class ColossalWhale extends CardImpl {
+public final class ColossalWhale extends CardImpl {
public ColossalWhale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Colossapede.java b/Mage.Sets/src/mage/cards/c/Colossapede.java
index 15886bd3e29..05a9327a103 100644
--- a/Mage.Sets/src/mage/cards/c/Colossapede.java
+++ b/Mage.Sets/src/mage/cards/c/Colossapede.java
@@ -10,7 +10,7 @@ import mage.constants.SubType;
/**
* @author Stravant
*/
-public class Colossapede extends CardImpl {
+public final class Colossapede extends CardImpl {
public Colossapede(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ColossodonYearling.java b/Mage.Sets/src/mage/cards/c/ColossodonYearling.java
index 5dfed80bf97..3e4e209cfdb 100644
--- a/Mage.Sets/src/mage/cards/c/ColossodonYearling.java
+++ b/Mage.Sets/src/mage/cards/c/ColossodonYearling.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ColossodonYearling extends CardImpl {
+public final class ColossodonYearling extends CardImpl {
public ColossodonYearling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ColossusOfAkros.java b/Mage.Sets/src/mage/cards/c/ColossusOfAkros.java
index 3ecee284304..a48853310c4 100644
--- a/Mage.Sets/src/mage/cards/c/ColossusOfAkros.java
+++ b/Mage.Sets/src/mage/cards/c/ColossusOfAkros.java
@@ -52,7 +52,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ColossusOfAkros extends CardImpl {
+public final class ColossusOfAkros extends CardImpl {
public ColossusOfAkros(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/c/ColossusOfSardia.java b/Mage.Sets/src/mage/cards/c/ColossusOfSardia.java
index 1bf75b58b99..4fad121e259 100644
--- a/Mage.Sets/src/mage/cards/c/ColossusOfSardia.java
+++ b/Mage.Sets/src/mage/cards/c/ColossusOfSardia.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class ColossusOfSardia extends CardImpl {
+public final class ColossusOfSardia extends CardImpl {
public ColossusOfSardia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{9}");
diff --git a/Mage.Sets/src/mage/cards/c/ComaVeil.java b/Mage.Sets/src/mage/cards/c/ComaVeil.java
index 0284ee55a72..d46c448b02a 100644
--- a/Mage.Sets/src/mage/cards/c/ComaVeil.java
+++ b/Mage.Sets/src/mage/cards/c/ComaVeil.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class ComaVeil extends CardImpl {
+public final class ComaVeil extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/c/CombatCelebrant.java b/Mage.Sets/src/mage/cards/c/CombatCelebrant.java
index a5b096a2904..2e8b591c808 100644
--- a/Mage.Sets/src/mage/cards/c/CombatCelebrant.java
+++ b/Mage.Sets/src/mage/cards/c/CombatCelebrant.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class CombatCelebrant extends CardImpl {
+public final class CombatCelebrant extends CardImpl {
public CombatCelebrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CombatMedic.java b/Mage.Sets/src/mage/cards/c/CombatMedic.java
index d9c185ba136..0faecdb987b 100644
--- a/Mage.Sets/src/mage/cards/c/CombatMedic.java
+++ b/Mage.Sets/src/mage/cards/c/CombatMedic.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class CombatMedic extends CardImpl {
+public final class CombatMedic extends CardImpl {
public CombatMedic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ComboAttack.java b/Mage.Sets/src/mage/cards/c/ComboAttack.java
new file mode 100644
index 00000000000..d0098b169b7
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/c/ComboAttack.java
@@ -0,0 +1,99 @@
+/*
+ * 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.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.filter.common.FilterTeamCreaturePermanent;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ComboAttack extends CardImpl {
+
+ public ComboAttack(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
+
+ // Two target creatures your team controls each deal damage equal to their power to target creature.
+ this.getSpellAbility().addEffect(new ComboAttackEffect());
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent(2, 2, new FilterTeamCreaturePermanent(), false));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent(1));
+ }
+
+ public ComboAttack(final ComboAttack card) {
+ super(card);
+ }
+
+ @Override
+ public ComboAttack copy() {
+ return new ComboAttack(this);
+ }
+}
+
+class ComboAttackEffect extends OneShotEffect {
+
+ ComboAttackEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Two target creatures your team controls each deal damage equal to their power to target creature";
+ }
+
+ ComboAttackEffect(final ComboAttackEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ComboAttackEffect copy() {
+ return new ComboAttackEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent permanent1 = game.getPermanent(source.getTargets().get(0).getTargets().get(0));
+ Permanent permanent2 = game.getPermanent(source.getTargets().get(0).getTargets().get(1));
+ Permanent permanent3 = game.getPermanent(source.getTargets().get(1).getTargets().get(0));
+ if (permanent3 == null) {
+ return false;
+ }
+ if (permanent1 != null) {
+ permanent3.damage(permanent1.getPower().getValue(), permanent1.getId(), game, false, true);
+ }
+ if (permanent2 != null) {
+ permanent3.damage(permanent2.getPower().getValue(), permanent2.getId(), game, false, true);
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/c/Combust.java b/Mage.Sets/src/mage/cards/c/Combust.java
index 323a696b65a..105d6e01125 100644
--- a/Mage.Sets/src/mage/cards/c/Combust.java
+++ b/Mage.Sets/src/mage/cards/c/Combust.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Combust extends CardImpl {
+public final class Combust extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white or blue creature");
diff --git a/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java b/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java
index df92f77e6d5..9512022e559 100644
--- a/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java
+++ b/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponent;
*
* @author spjspj
*/
-public class CombustibleGearhulk extends CardImpl {
+public final class CombustibleGearhulk extends CardImpl {
public CombustibleGearhulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CometStorm.java b/Mage.Sets/src/mage/cards/c/CometStorm.java
index 63cd202799d..2d294318089 100644
--- a/Mage.Sets/src/mage/cards/c/CometStorm.java
+++ b/Mage.Sets/src/mage/cards/c/CometStorm.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class CometStorm extends CardImpl {
+public final class CometStorm extends CardImpl {
public CometStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Comeuppance.java b/Mage.Sets/src/mage/cards/c/Comeuppance.java
index be574ee5075..22ae340d1c2 100644
--- a/Mage.Sets/src/mage/cards/c/Comeuppance.java
+++ b/Mage.Sets/src/mage/cards/c/Comeuppance.java
@@ -49,7 +49,7 @@ import org.apache.log4j.Logger;
*
* @author LevelX2
*/
-public class Comeuppance extends CardImpl {
+public final class Comeuppance extends CardImpl {
public Comeuppance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CommandBeacon.java b/Mage.Sets/src/mage/cards/c/CommandBeacon.java
index 2ca08325e45..ef44111484b 100644
--- a/Mage.Sets/src/mage/cards/c/CommandBeacon.java
+++ b/Mage.Sets/src/mage/cards/c/CommandBeacon.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class CommandBeacon extends CardImpl {
+public final class CommandBeacon extends CardImpl {
public CommandBeacon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CommandOfUnsummoning.java b/Mage.Sets/src/mage/cards/c/CommandOfUnsummoning.java
index 9ea9c2069f2..b31521fd8ab 100644
--- a/Mage.Sets/src/mage/cards/c/CommandOfUnsummoning.java
+++ b/Mage.Sets/src/mage/cards/c/CommandOfUnsummoning.java
@@ -45,7 +45,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author TheElk801
*/
-public class CommandOfUnsummoning extends CardImpl {
+public final class CommandOfUnsummoning extends CardImpl {
public CommandOfUnsummoning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CommandTower.java b/Mage.Sets/src/mage/cards/c/CommandTower.java
index 15b9d4aa2c2..4451d261949 100644
--- a/Mage.Sets/src/mage/cards/c/CommandTower.java
+++ b/Mage.Sets/src/mage/cards/c/CommandTower.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class CommandTower extends CardImpl {
+public final class CommandTower extends CardImpl {
public CommandTower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/Commandeer.java b/Mage.Sets/src/mage/cards/c/Commandeer.java
index c0f7140d1e4..f0d16f98a44 100644
--- a/Mage.Sets/src/mage/cards/c/Commandeer.java
+++ b/Mage.Sets/src/mage/cards/c/Commandeer.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class Commandeer extends CardImpl {
+public final class Commandeer extends CardImpl {
private static final FilterCard filter = new FilterCard("two blue cards");
private static final FilterSpell filterSpell = new FilterSpell("noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/c/CommanderCody.java b/Mage.Sets/src/mage/cards/c/CommanderCody.java
index 418ab31c201..16cf131706a 100644
--- a/Mage.Sets/src/mage/cards/c/CommanderCody.java
+++ b/Mage.Sets/src/mage/cards/c/CommanderCody.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.TrooperToken;
*
* @author Styxo
*/
-public class CommanderCody extends CardImpl {
+public final class CommanderCody extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-token Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CommanderEesha.java b/Mage.Sets/src/mage/cards/c/CommanderEesha.java
index e5fea9d91ce..8728ac3d619 100644
--- a/Mage.Sets/src/mage/cards/c/CommanderEesha.java
+++ b/Mage.Sets/src/mage/cards/c/CommanderEesha.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author daagar
*/
-public class CommanderEesha extends CardImpl {
+public final class CommanderEesha extends CardImpl {
static final FilterCard filter = new FilterCard("creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CommanderGrevenIlVec.java b/Mage.Sets/src/mage/cards/c/CommanderGrevenIlVec.java
index 6d6dca37ba8..f35652a78c2 100644
--- a/Mage.Sets/src/mage/cards/c/CommanderGrevenIlVec.java
+++ b/Mage.Sets/src/mage/cards/c/CommanderGrevenIlVec.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class CommanderGrevenIlVec extends CardImpl {
+public final class CommanderGrevenIlVec extends CardImpl {
public CommanderGrevenIlVec(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CommandersAuthority.java b/Mage.Sets/src/mage/cards/c/CommandersAuthority.java
index 23889904546..7be38ccdcd7 100644
--- a/Mage.Sets/src/mage/cards/c/CommandersAuthority.java
+++ b/Mage.Sets/src/mage/cards/c/CommandersAuthority.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CommandersAuthority extends CardImpl {
+public final class CommandersAuthority extends CardImpl {
public CommandersAuthority(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CommandersSphere.java b/Mage.Sets/src/mage/cards/c/CommandersSphere.java
index 861299838ae..be396f8d660 100644
--- a/Mage.Sets/src/mage/cards/c/CommandersSphere.java
+++ b/Mage.Sets/src/mage/cards/c/CommandersSphere.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class CommandersSphere extends CardImpl {
+public final class CommandersSphere extends CardImpl {
public CommandersSphere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CommencementOfFestivities.java b/Mage.Sets/src/mage/cards/c/CommencementOfFestivities.java
index 8f26e84435c..baf4cbf5160 100644
--- a/Mage.Sets/src/mage/cards/c/CommencementOfFestivities.java
+++ b/Mage.Sets/src/mage/cards/c/CommencementOfFestivities.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author spjspj
*/
-public class CommencementOfFestivities extends CardImpl {
+public final class CommencementOfFestivities extends CardImpl {
public CommencementOfFestivities(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CommitMemory.java b/Mage.Sets/src/mage/cards/c/CommitMemory.java
index 88a3bfed1dc..3c505ea9f15 100644
--- a/Mage.Sets/src/mage/cards/c/CommitMemory.java
+++ b/Mage.Sets/src/mage/cards/c/CommitMemory.java
@@ -32,6 +32,7 @@ import mage.abilities.Ability;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardAllEffect;
+import mage.abilities.effects.common.ShuffleHandGraveyardAllEffect;
import mage.abilities.keyword.AftermathAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -39,7 +40,6 @@ import mage.cards.SplitCard;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SpellAbilityType;
-import mage.constants.Zone;
import mage.filter.common.FilterNonlandPermanent;
import mage.filter.common.FilterSpellOrPermanent;
import mage.game.Game;
@@ -52,7 +52,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author fireshoes
*/
-public class CommitMemory extends SplitCard {
+public final class CommitMemory extends SplitCard {
private static final FilterSpellOrPermanent filter = new FilterSpellOrPermanent("spell or nonland permanent");
@@ -72,7 +72,7 @@ public class CommitMemory extends SplitCard {
// Aftermath
// Each player shuffles their hand and graveyard into their library, then draws seven cards.
((CardImpl) (getRightHalfCard())).addAbility(new AftermathAbility().setRuleAtTheTop(true));
- getRightHalfCard().getSpellAbility().addEffect(new MemoryEffect());
+ getRightHalfCard().getSpellAbility().addEffect(new ShuffleHandGraveyardAllEffect());
Effect effect = new DrawCardAllEffect(7);
effect.setText(", then draws seven cards");
getRightHalfCard().getSpellAbility().addEffect(effect);
@@ -120,34 +120,3 @@ class CommitEffect extends OneShotEffect {
return false;
}
}
-
-class MemoryEffect extends OneShotEffect {
-
- public MemoryEffect() {
- super(Outcome.Neutral);
- staticText = "Each player shuffles their hand and graveyard into their library";
- }
-
- public MemoryEffect(final MemoryEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- player.moveCards(player.getHand(), Zone.LIBRARY, source, game);
- player.moveCards(player.getGraveyard(), Zone.LIBRARY, source, game);
- player.shuffleLibrary(source, game);
- }
- }
- return true;
- }
-
- @Override
- public MemoryEffect copy() {
- return new MemoryEffect(this);
- }
-
-}
diff --git a/Mage.Sets/src/mage/cards/c/CommonBond.java b/Mage.Sets/src/mage/cards/c/CommonBond.java
index 162048f3d4b..1b8fa876a01 100644
--- a/Mage.Sets/src/mage/cards/c/CommonBond.java
+++ b/Mage.Sets/src/mage/cards/c/CommonBond.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CommonBond extends CardImpl {
+public final class CommonBond extends CardImpl {
public CommonBond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CommonCause.java b/Mage.Sets/src/mage/cards/c/CommonCause.java
index 5fb8e60e470..96c8e1638bd 100644
--- a/Mage.Sets/src/mage/cards/c/CommonCause.java
+++ b/Mage.Sets/src/mage/cards/c/CommonCause.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class CommonCause extends CardImpl {
+public final class CommonCause extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Nonartifact creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CommuneWithDinosaurs.java b/Mage.Sets/src/mage/cards/c/CommuneWithDinosaurs.java
index 8d657813de8..dd65e6435f3 100644
--- a/Mage.Sets/src/mage/cards/c/CommuneWithDinosaurs.java
+++ b/Mage.Sets/src/mage/cards/c/CommuneWithDinosaurs.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class CommuneWithDinosaurs extends CardImpl {
+public final class CommuneWithDinosaurs extends CardImpl {
private static final FilterCard filter = new FilterCard("a Dinosaur or land card");
diff --git a/Mage.Sets/src/mage/cards/c/CommuneWithLava.java b/Mage.Sets/src/mage/cards/c/CommuneWithLava.java
index 975bc54f8ae..dd2f83052ab 100644
--- a/Mage.Sets/src/mage/cards/c/CommuneWithLava.java
+++ b/Mage.Sets/src/mage/cards/c/CommuneWithLava.java
@@ -46,7 +46,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class CommuneWithLava extends CardImpl {
+public final class CommuneWithLava extends CardImpl {
public CommuneWithLava(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CommuneWithNature.java b/Mage.Sets/src/mage/cards/c/CommuneWithNature.java
index b5dc2824bf0..69d13bbec6f 100644
--- a/Mage.Sets/src/mage/cards/c/CommuneWithNature.java
+++ b/Mage.Sets/src/mage/cards/c/CommuneWithNature.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LevelX
*/
-public class CommuneWithNature extends CardImpl {
+public final class CommuneWithNature extends CardImpl {
public CommuneWithNature(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CommuneWithTheGods.java b/Mage.Sets/src/mage/cards/c/CommuneWithTheGods.java
index c2bdbb97df8..5e0bd907e9e 100644
--- a/Mage.Sets/src/mage/cards/c/CommuneWithTheGods.java
+++ b/Mage.Sets/src/mage/cards/c/CommuneWithTheGods.java
@@ -45,7 +45,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class CommuneWithTheGods extends CardImpl {
+public final class CommuneWithTheGods extends CardImpl {
public CommuneWithTheGods(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CompanionOfTheTrials.java b/Mage.Sets/src/mage/cards/c/CompanionOfTheTrials.java
index 3cba42bb5c0..d0c088a77c4 100644
--- a/Mage.Sets/src/mage/cards/c/CompanionOfTheTrials.java
+++ b/Mage.Sets/src/mage/cards/c/CompanionOfTheTrials.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class CompanionOfTheTrials extends CardImpl {
+public final class CompanionOfTheTrials extends CardImpl {
private static final FilterPlaneswalkerPermanent filter = new FilterPlaneswalkerPermanent("you control a Gideon planeswalker");
static {
diff --git a/Mage.Sets/src/mage/cards/c/ComparativeAnalysis.java b/Mage.Sets/src/mage/cards/c/ComparativeAnalysis.java
index e7bd8871a39..de8a327eb70 100644
--- a/Mage.Sets/src/mage/cards/c/ComparativeAnalysis.java
+++ b/Mage.Sets/src/mage/cards/c/ComparativeAnalysis.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class ComparativeAnalysis extends CardImpl {
+public final class ComparativeAnalysis extends CardImpl {
public ComparativeAnalysis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CompellingArgument.java b/Mage.Sets/src/mage/cards/c/CompellingArgument.java
index 5730361bd46..2f72ee599c8 100644
--- a/Mage.Sets/src/mage/cards/c/CompellingArgument.java
+++ b/Mage.Sets/src/mage/cards/c/CompellingArgument.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class CompellingArgument extends CardImpl {
+public final class CompellingArgument extends CardImpl {
public CompellingArgument(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CompellingDeterrence.java b/Mage.Sets/src/mage/cards/c/CompellingDeterrence.java
index f7ab0ee2943..5617468d416 100644
--- a/Mage.Sets/src/mage/cards/c/CompellingDeterrence.java
+++ b/Mage.Sets/src/mage/cards/c/CompellingDeterrence.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author fireshoes
*/
-public class CompellingDeterrence extends CardImpl {
+public final class CompellingDeterrence extends CardImpl {
public CompellingDeterrence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CompleteDisregard.java b/Mage.Sets/src/mage/cards/c/CompleteDisregard.java
index ee384dd0658..2fc0ff73bd8 100644
--- a/Mage.Sets/src/mage/cards/c/CompleteDisregard.java
+++ b/Mage.Sets/src/mage/cards/c/CompleteDisregard.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CompleteDisregard extends CardImpl {
+public final class CompleteDisregard extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 3 or less");
diff --git a/Mage.Sets/src/mage/cards/c/ComplexAutomaton.java b/Mage.Sets/src/mage/cards/c/ComplexAutomaton.java
index d6eba4f2c8c..2781fb7aad8 100644
--- a/Mage.Sets/src/mage/cards/c/ComplexAutomaton.java
+++ b/Mage.Sets/src/mage/cards/c/ComplexAutomaton.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author TheElk801
*/
-public class ComplexAutomaton extends CardImpl {
+public final class ComplexAutomaton extends CardImpl {
public ComplexAutomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/c/Complicate.java b/Mage.Sets/src/mage/cards/c/Complicate.java
index 86c96e8b047..4e0a1d14325 100644
--- a/Mage.Sets/src/mage/cards/c/Complicate.java
+++ b/Mage.Sets/src/mage/cards/c/Complicate.java
@@ -43,7 +43,7 @@ import mage.target.TargetSpell;
*
* @author emerald000
*/
-public class Complicate extends CardImpl {
+public final class Complicate extends CardImpl {
public Complicate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CompositeGolem.java b/Mage.Sets/src/mage/cards/c/CompositeGolem.java
index ea68f31d9d6..2430cbe7e08 100644
--- a/Mage.Sets/src/mage/cards/c/CompositeGolem.java
+++ b/Mage.Sets/src/mage/cards/c/CompositeGolem.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class CompositeGolem extends CardImpl {
+public final class CompositeGolem extends CardImpl {
public CompositeGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/c/Compost.java b/Mage.Sets/src/mage/cards/c/Compost.java
index 3c1ea933b66..002ed1a904e 100644
--- a/Mage.Sets/src/mage/cards/c/Compost.java
+++ b/Mage.Sets/src/mage/cards/c/Compost.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author emerald000
*/
-public class Compost extends CardImpl {
+public final class Compost extends CardImpl {
private static final FilterCard filter = new FilterCard("a black card");
diff --git a/Mage.Sets/src/mage/cards/c/Compulsion.java b/Mage.Sets/src/mage/cards/c/Compulsion.java
index 770a1872e7f..6c79f91ac9f 100644
--- a/Mage.Sets/src/mage/cards/c/Compulsion.java
+++ b/Mage.Sets/src/mage/cards/c/Compulsion.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Jgod
*/
-public class Compulsion extends CardImpl {
+public final class Compulsion extends CardImpl {
public Compulsion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CompulsiveResearch.java b/Mage.Sets/src/mage/cards/c/CompulsiveResearch.java
index 9174b7fd781..727cfd49ecd 100644
--- a/Mage.Sets/src/mage/cards/c/CompulsiveResearch.java
+++ b/Mage.Sets/src/mage/cards/c/CompulsiveResearch.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetDiscard;
*
* @author Plopman
*/
-public class CompulsiveResearch extends CardImpl {
+public final class CompulsiveResearch extends CardImpl {
public CompulsiveResearch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CompulsoryRest.java b/Mage.Sets/src/mage/cards/c/CompulsoryRest.java
index 4056b898551..b012399f13f 100644
--- a/Mage.Sets/src/mage/cards/c/CompulsoryRest.java
+++ b/Mage.Sets/src/mage/cards/c/CompulsoryRest.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class CompulsoryRest extends CardImpl {
+public final class CompulsoryRest extends CardImpl {
public CompulsoryRest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConcealedCourtyard.java b/Mage.Sets/src/mage/cards/c/ConcealedCourtyard.java
index 7ae900b2b0d..c87ea4cc5b4 100644
--- a/Mage.Sets/src/mage/cards/c/ConcealedCourtyard.java
+++ b/Mage.Sets/src/mage/cards/c/ConcealedCourtyard.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class ConcealedCourtyard extends CardImpl {
+public final class ConcealedCourtyard extends CardImpl {
public ConcealedCourtyard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/c/Concentrate.java b/Mage.Sets/src/mage/cards/c/Concentrate.java
index fc085a2687f..985888bfa24 100644
--- a/Mage.Sets/src/mage/cards/c/Concentrate.java
+++ b/Mage.Sets/src/mage/cards/c/Concentrate.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class Concentrate extends CardImpl {
+public final class Concentrate extends CardImpl {
public Concentrate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ConcertedEffort.java b/Mage.Sets/src/mage/cards/c/ConcertedEffort.java
index ac723c81129..fdb6f4a5f02 100644
--- a/Mage.Sets/src/mage/cards/c/ConcertedEffort.java
+++ b/Mage.Sets/src/mage/cards/c/ConcertedEffort.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class ConcertedEffort extends CardImpl {
+public final class ConcertedEffort extends CardImpl {
public ConcertedEffort(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConchHorn.java b/Mage.Sets/src/mage/cards/c/ConchHorn.java
index ab425ff1c6e..7523fcb974f 100644
--- a/Mage.Sets/src/mage/cards/c/ConchHorn.java
+++ b/Mage.Sets/src/mage/cards/c/ConchHorn.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class ConchHorn extends CardImpl {
+public final class ConchHorn extends CardImpl {
public ConchHorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/ConclaveEquenaut.java b/Mage.Sets/src/mage/cards/c/ConclaveEquenaut.java
index 9526a1fa8fa..91c187fec39 100644
--- a/Mage.Sets/src/mage/cards/c/ConclaveEquenaut.java
+++ b/Mage.Sets/src/mage/cards/c/ConclaveEquenaut.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class ConclaveEquenaut extends CardImpl {
+public final class ConclaveEquenaut extends CardImpl {
public ConclaveEquenaut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConclaveNaturalists.java b/Mage.Sets/src/mage/cards/c/ConclaveNaturalists.java
index d6af13cbe67..25a1b604ef9 100644
--- a/Mage.Sets/src/mage/cards/c/ConclaveNaturalists.java
+++ b/Mage.Sets/src/mage/cards/c/ConclaveNaturalists.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class ConclaveNaturalists extends CardImpl {
+public final class ConclaveNaturalists extends CardImpl {
public ConclaveNaturalists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ConclavePhalanx.java b/Mage.Sets/src/mage/cards/c/ConclavePhalanx.java
index a6e6d4f8280..009263f3647 100644
--- a/Mage.Sets/src/mage/cards/c/ConclavePhalanx.java
+++ b/Mage.Sets/src/mage/cards/c/ConclavePhalanx.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author jonubuu
*/
-public class ConclavePhalanx extends CardImpl {
+public final class ConclavePhalanx extends CardImpl {
public ConclavePhalanx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConclavesBlessing.java b/Mage.Sets/src/mage/cards/c/ConclavesBlessing.java
index a7c3c88a83a..8c38a6a2bf5 100644
--- a/Mage.Sets/src/mage/cards/c/ConclavesBlessing.java
+++ b/Mage.Sets/src/mage/cards/c/ConclavesBlessing.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class ConclavesBlessing extends CardImpl {
+public final class ConclavesBlessing extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other creature you control");
diff --git a/Mage.Sets/src/mage/cards/c/ConcordantCrossroads.java b/Mage.Sets/src/mage/cards/c/ConcordantCrossroads.java
index c332941d2c8..51c279c58e8 100644
--- a/Mage.Sets/src/mage/cards/c/ConcordantCrossroads.java
+++ b/Mage.Sets/src/mage/cards/c/ConcordantCrossroads.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class ConcordantCrossroads extends CardImpl {
+public final class ConcordantCrossroads extends CardImpl {
public ConcordantCrossroads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ConcordiaPegasus.java b/Mage.Sets/src/mage/cards/c/ConcordiaPegasus.java
index 0552441018e..c055af67a7f 100644
--- a/Mage.Sets/src/mage/cards/c/ConcordiaPegasus.java
+++ b/Mage.Sets/src/mage/cards/c/ConcordiaPegasus.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ConcordiaPegasus extends CardImpl {
+public final class ConcordiaPegasus extends CardImpl {
public ConcordiaPegasus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java b/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java
index 510301eca83..1c23342db04 100644
--- a/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java
+++ b/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author North
*/
-public class ConcussiveBolt extends CardImpl {
+public final class ConcussiveBolt extends CardImpl {
public ConcussiveBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Condemn.java b/Mage.Sets/src/mage/cards/c/Condemn.java
index 39a36e6dfde..fe9218c2578 100644
--- a/Mage.Sets/src/mage/cards/c/Condemn.java
+++ b/Mage.Sets/src/mage/cards/c/Condemn.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Condemn extends CardImpl {
+public final class Condemn extends CardImpl {
public Condemn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Condescend.java b/Mage.Sets/src/mage/cards/c/Condescend.java
index 20c79841481..98158265876 100644
--- a/Mage.Sets/src/mage/cards/c/Condescend.java
+++ b/Mage.Sets/src/mage/cards/c/Condescend.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Condescend extends CardImpl {
+public final class Condescend extends CardImpl {
public Condescend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ConduitOfEmrakul.java b/Mage.Sets/src/mage/cards/c/ConduitOfEmrakul.java
index 2f82ca81465..e37b7fe464f 100644
--- a/Mage.Sets/src/mage/cards/c/ConduitOfEmrakul.java
+++ b/Mage.Sets/src/mage/cards/c/ConduitOfEmrakul.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class ConduitOfEmrakul extends CardImpl {
+public final class ConduitOfEmrakul extends CardImpl {
public ConduitOfEmrakul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java b/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java
index 5ea158c1f41..e9826b01139 100644
--- a/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java
+++ b/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java
@@ -58,7 +58,7 @@ import mage.watchers.Watcher;
/**
* @author LevelX2
*/
-public class ConduitOfRuin extends CardImpl {
+public final class ConduitOfRuin extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a colorless creature card with converted mana cost 7 or greater");
private static final FilterCreatureCard filterCost = new FilterCreatureCard("The first creature spell");
diff --git a/Mage.Sets/src/mage/cards/c/ConduitOfStorms.java b/Mage.Sets/src/mage/cards/c/ConduitOfStorms.java
index 8cec71805c5..09076218445 100644
--- a/Mage.Sets/src/mage/cards/c/ConduitOfStorms.java
+++ b/Mage.Sets/src/mage/cards/c/ConduitOfStorms.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ConduitOfStorms extends CardImpl {
+public final class ConduitOfStorms extends CardImpl {
public ConduitOfStorms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ConeOfFlame.java b/Mage.Sets/src/mage/cards/c/ConeOfFlame.java
index d1b63281a31..a435b1a171b 100644
--- a/Mage.Sets/src/mage/cards/c/ConeOfFlame.java
+++ b/Mage.Sets/src/mage/cards/c/ConeOfFlame.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Quercitron
*/
-public class ConeOfFlame extends CardImpl {
+public final class ConeOfFlame extends CardImpl {
public ConeOfFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Confessor.java b/Mage.Sets/src/mage/cards/c/Confessor.java
index 3ab080f4f2c..6069ad06fd4 100644
--- a/Mage.Sets/src/mage/cards/c/Confessor.java
+++ b/Mage.Sets/src/mage/cards/c/Confessor.java
@@ -42,7 +42,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author cbt33
*/
-public class Confessor extends CardImpl {
+public final class Confessor extends CardImpl {
public Confessor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConfirmSuspicions.java b/Mage.Sets/src/mage/cards/c/ConfirmSuspicions.java
index 18cd077b4f4..74b42f03407 100644
--- a/Mage.Sets/src/mage/cards/c/ConfirmSuspicions.java
+++ b/Mage.Sets/src/mage/cards/c/ConfirmSuspicions.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class ConfirmSuspicions extends CardImpl {
+public final class ConfirmSuspicions extends CardImpl {
public ConfirmSuspicions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Confiscate.java b/Mage.Sets/src/mage/cards/c/Confiscate.java
index 773b845c386..5a12198830e 100644
--- a/Mage.Sets/src/mage/cards/c/Confiscate.java
+++ b/Mage.Sets/src/mage/cards/c/Confiscate.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author Loki, noxx
*/
-public class Confiscate extends CardImpl {
+public final class Confiscate extends CardImpl {
public Confiscate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java b/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java
index aaeda5ecf4f..f816524d203 100644
--- a/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java
+++ b/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ConfiscationCoup extends CardImpl {
+public final class ConfiscationCoup extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent("creature or artifact");
diff --git a/Mage.Sets/src/mage/cards/c/Conflagrate.java b/Mage.Sets/src/mage/cards/c/Conflagrate.java
index b4289fe2792..b2389773bf8 100644
--- a/Mage.Sets/src/mage/cards/c/Conflagrate.java
+++ b/Mage.Sets/src/mage/cards/c/Conflagrate.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author LevelX2
*/
-public class Conflagrate extends CardImpl {
+public final class Conflagrate extends CardImpl {
public Conflagrate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Conflux.java b/Mage.Sets/src/mage/cards/c/Conflux.java
index b7e6f35968f..955b47d10fd 100644
--- a/Mage.Sets/src/mage/cards/c/Conflux.java
+++ b/Mage.Sets/src/mage/cards/c/Conflux.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class Conflux extends CardImpl {
+public final class Conflux extends CardImpl {
public Conflux(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Confound.java b/Mage.Sets/src/mage/cards/c/Confound.java
index 3675f891f22..61b466ffad0 100644
--- a/Mage.Sets/src/mage/cards/c/Confound.java
+++ b/Mage.Sets/src/mage/cards/c/Confound.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class Confound extends CardImpl {
+public final class Confound extends CardImpl {
private final static FilterSpell filter = new FilterSpell("spell that targets a creature");
diff --git a/Mage.Sets/src/mage/cards/c/ConfrontTheUnknown.java b/Mage.Sets/src/mage/cards/c/ConfrontTheUnknown.java
index fe7ea9a9fb9..ffee138687e 100644
--- a/Mage.Sets/src/mage/cards/c/ConfrontTheUnknown.java
+++ b/Mage.Sets/src/mage/cards/c/ConfrontTheUnknown.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ConfrontTheUnknown extends CardImpl {
+public final class ConfrontTheUnknown extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("each Clue you control");
diff --git a/Mage.Sets/src/mage/cards/c/ConfusionInTheRanks.java b/Mage.Sets/src/mage/cards/c/ConfusionInTheRanks.java
index 40e365dff68..87a16332aa6 100644
--- a/Mage.Sets/src/mage/cards/c/ConfusionInTheRanks.java
+++ b/Mage.Sets/src/mage/cards/c/ConfusionInTheRanks.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author anonymous
*/
-public class ConfusionInTheRanks extends CardImpl {
+public final class ConfusionInTheRanks extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("an artifact, creature, or enchantment");
diff --git a/Mage.Sets/src/mage/cards/c/Congregate.java b/Mage.Sets/src/mage/cards/c/Congregate.java
index 4918ffac4ac..41d8fcc363d 100644
--- a/Mage.Sets/src/mage/cards/c/Congregate.java
+++ b/Mage.Sets/src/mage/cards/c/Congregate.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class Congregate extends CardImpl {
+public final class Congregate extends CardImpl {
public Congregate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CongregationAtDawn.java b/Mage.Sets/src/mage/cards/c/CongregationAtDawn.java
index d50e810f057..0e955363f15 100644
--- a/Mage.Sets/src/mage/cards/c/CongregationAtDawn.java
+++ b/Mage.Sets/src/mage/cards/c/CongregationAtDawn.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class CongregationAtDawn extends CardImpl {
+public final class CongregationAtDawn extends CardImpl {
public CongregationAtDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConiferStrider.java b/Mage.Sets/src/mage/cards/c/ConiferStrider.java
index 7b8be0d3ea0..5b92df628b4 100644
--- a/Mage.Sets/src/mage/cards/c/ConiferStrider.java
+++ b/Mage.Sets/src/mage/cards/c/ConiferStrider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ConiferStrider extends CardImpl {
+public final class ConiferStrider extends CardImpl {
public ConiferStrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ConjuredCurrency.java b/Mage.Sets/src/mage/cards/c/ConjuredCurrency.java
index 26ce039d52f..0d972daa8bb 100644
--- a/Mage.Sets/src/mage/cards/c/ConjuredCurrency.java
+++ b/Mage.Sets/src/mage/cards/c/ConjuredCurrency.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
/**
* @author LevelX2
*/
-public class ConjuredCurrency extends CardImpl {
+public final class ConjuredCurrency extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent you neither own nor control");
diff --git a/Mage.Sets/src/mage/cards/c/ConjurersBauble.java b/Mage.Sets/src/mage/cards/c/ConjurersBauble.java
index 5b80d4da2f3..507d43f7d61 100644
--- a/Mage.Sets/src/mage/cards/c/ConjurersBauble.java
+++ b/Mage.Sets/src/mage/cards/c/ConjurersBauble.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jeffwadsworth
*/
-public class ConjurersBauble extends CardImpl {
+public final class ConjurersBauble extends CardImpl {
static final String rule = "Put up to one target card from your graveyard on the bottom of your library";
diff --git a/Mage.Sets/src/mage/cards/c/ConjurersCloset.java b/Mage.Sets/src/mage/cards/c/ConjurersCloset.java
index a3c064850bd..a1e8c560b2b 100644
--- a/Mage.Sets/src/mage/cards/c/ConjurersCloset.java
+++ b/Mage.Sets/src/mage/cards/c/ConjurersCloset.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author noxx
*/
-public class ConjurersCloset extends CardImpl {
+public final class ConjurersCloset extends CardImpl {
public ConjurersCloset(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/c/Conquer.java b/Mage.Sets/src/mage/cards/c/Conquer.java
index 6555c10a023..9d6be6d12b1 100644
--- a/Mage.Sets/src/mage/cards/c/Conquer.java
+++ b/Mage.Sets/src/mage/cards/c/Conquer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Quercitron
*/
-public class Conquer extends CardImpl {
+public final class Conquer extends CardImpl {
public Conquer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ConqueringManticore.java b/Mage.Sets/src/mage/cards/c/ConqueringManticore.java
index 64e6ab9ad0f..2c459ab5368 100644
--- a/Mage.Sets/src/mage/cards/c/ConqueringManticore.java
+++ b/Mage.Sets/src/mage/cards/c/ConqueringManticore.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ConqueringManticore extends CardImpl {
+public final class ConqueringManticore extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/c/ConquerorsFlail.java b/Mage.Sets/src/mage/cards/c/ConquerorsFlail.java
index a18c86f10ba..a239a713a01 100644
--- a/Mage.Sets/src/mage/cards/c/ConquerorsFlail.java
+++ b/Mage.Sets/src/mage/cards/c/ConquerorsFlail.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class ConquerorsFlail extends CardImpl {
+public final class ConquerorsFlail extends CardImpl {
public ConquerorsFlail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/c/ConquerorsFoothold.java b/Mage.Sets/src/mage/cards/c/ConquerorsFoothold.java
index ecf87d08d8e..70e68eba835 100644
--- a/Mage.Sets/src/mage/cards/c/ConquerorsFoothold.java
+++ b/Mage.Sets/src/mage/cards/c/ConquerorsFoothold.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class ConquerorsFoothold extends CardImpl {
+public final class ConquerorsFoothold extends CardImpl {
public ConquerorsFoothold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/c/ConquerorsGalleon.java b/Mage.Sets/src/mage/cards/c/ConquerorsGalleon.java
index aed4a492000..ca45ba5affa 100644
--- a/Mage.Sets/src/mage/cards/c/ConquerorsGalleon.java
+++ b/Mage.Sets/src/mage/cards/c/ConquerorsGalleon.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author TheElk801
*/
-public class ConquerorsGalleon extends CardImpl {
+public final class ConquerorsGalleon extends CardImpl {
public ConquerorsGalleon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/c/ConquerorsPledge.java b/Mage.Sets/src/mage/cards/c/ConquerorsPledge.java
index c18d48f5a32..5c4488dff6e 100644
--- a/Mage.Sets/src/mage/cards/c/ConquerorsPledge.java
+++ b/Mage.Sets/src/mage/cards/c/ConquerorsPledge.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.KorSoldierToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ConquerorsPledge extends CardImpl {
+public final class ConquerorsPledge extends CardImpl {
public ConquerorsPledge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsecrateLand.java b/Mage.Sets/src/mage/cards/c/ConsecrateLand.java
index d6c19230e63..65c0cbe0dfc 100644
--- a/Mage.Sets/src/mage/cards/c/ConsecrateLand.java
+++ b/Mage.Sets/src/mage/cards/c/ConsecrateLand.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author MTGfan
*/
-public class ConsecrateLand extends CardImpl {
+public final class ConsecrateLand extends CardImpl {
public ConsecrateLand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsecratedByBlood.java b/Mage.Sets/src/mage/cards/c/ConsecratedByBlood.java
index 0c93d79adef..5b555573e79 100644
--- a/Mage.Sets/src/mage/cards/c/ConsecratedByBlood.java
+++ b/Mage.Sets/src/mage/cards/c/ConsecratedByBlood.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class ConsecratedByBlood extends CardImpl {
+public final class ConsecratedByBlood extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("two other creatures");
diff --git a/Mage.Sets/src/mage/cards/c/ConsecratedSphinx.java b/Mage.Sets/src/mage/cards/c/ConsecratedSphinx.java
index a66310e2df4..4e9968dffbb 100644
--- a/Mage.Sets/src/mage/cards/c/ConsecratedSphinx.java
+++ b/Mage.Sets/src/mage/cards/c/ConsecratedSphinx.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Loki
*/
-public class ConsecratedSphinx extends CardImpl {
+public final class ConsecratedSphinx extends CardImpl {
public ConsecratedSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Conservator.java b/Mage.Sets/src/mage/cards/c/Conservator.java
index 4d4f57523ad..329b23d3f74 100644
--- a/Mage.Sets/src/mage/cards/c/Conservator.java
+++ b/Mage.Sets/src/mage/cards/c/Conservator.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
* @author KholdFuzion
*
*/
-public class Conservator extends CardImpl {
+public final class Conservator extends CardImpl {
public Conservator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsignOblivion.java b/Mage.Sets/src/mage/cards/c/ConsignOblivion.java
index dfd284e6675..aab6479a10b 100644
--- a/Mage.Sets/src/mage/cards/c/ConsignOblivion.java
+++ b/Mage.Sets/src/mage/cards/c/ConsignOblivion.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class ConsignOblivion extends SplitCard {
+public final class ConsignOblivion extends SplitCard {
public ConsignOblivion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{1}{U}", "{4}{B}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/c/ConsignToDream.java b/Mage.Sets/src/mage/cards/c/ConsignToDream.java
index 0d86a531b5f..6951982fb1e 100644
--- a/Mage.Sets/src/mage/cards/c/ConsignToDream.java
+++ b/Mage.Sets/src/mage/cards/c/ConsignToDream.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
* @author jeffwadsworth
*
*/
-public class ConsignToDream extends CardImpl {
+public final class ConsignToDream extends CardImpl {
public ConsignToDream(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsignToDust.java b/Mage.Sets/src/mage/cards/c/ConsignToDust.java
index bd2ec104fd8..a6f8449b975 100644
--- a/Mage.Sets/src/mage/cards/c/ConsignToDust.java
+++ b/Mage.Sets/src/mage/cards/c/ConsignToDust.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class ConsignToDust extends CardImpl {
+public final class ConsignToDust extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts and/or enchantments");
diff --git a/Mage.Sets/src/mage/cards/c/Conspiracy.java b/Mage.Sets/src/mage/cards/c/Conspiracy.java
index 9fc41146bc9..58e73727fe6 100644
--- a/Mage.Sets/src/mage/cards/c/Conspiracy.java
+++ b/Mage.Sets/src/mage/cards/c/Conspiracy.java
@@ -52,7 +52,7 @@ import mage.util.SubTypeList;
*
* @author anonymous
*/
-public class Conspiracy extends CardImpl {
+public final class Conspiracy extends CardImpl {
public Conspiracy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ConstantMists.java b/Mage.Sets/src/mage/cards/c/ConstantMists.java
index 05f8880b77e..2d9439570e7 100644
--- a/Mage.Sets/src/mage/cards/c/ConstantMists.java
+++ b/Mage.Sets/src/mage/cards/c/ConstantMists.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class ConstantMists extends CardImpl {
+public final class ConstantMists extends CardImpl {
public ConstantMists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ConstrictingSliver.java b/Mage.Sets/src/mage/cards/c/ConstrictingSliver.java
index 0ba5e8c004d..758df5eb04e 100644
--- a/Mage.Sets/src/mage/cards/c/ConstrictingSliver.java
+++ b/Mage.Sets/src/mage/cards/c/ConstrictingSliver.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class ConstrictingSliver extends CardImpl {
+public final class ConstrictingSliver extends CardImpl {
private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/c/ConstrictingTendrils.java b/Mage.Sets/src/mage/cards/c/ConstrictingTendrils.java
index d11a579bb37..006722cd589 100644
--- a/Mage.Sets/src/mage/cards/c/ConstrictingTendrils.java
+++ b/Mage.Sets/src/mage/cards/c/ConstrictingTendrils.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ConstrictingTendrils extends CardImpl {
+public final class ConstrictingTendrils extends CardImpl {
public ConstrictingTendrils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsulateCrackdown.java b/Mage.Sets/src/mage/cards/c/ConsulateCrackdown.java
index dff260b1689..bffc45e7aac 100644
--- a/Mage.Sets/src/mage/cards/c/ConsulateCrackdown.java
+++ b/Mage.Sets/src/mage/cards/c/ConsulateCrackdown.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
/**
* @author JRHerlehy
*/
-public class ConsulateCrackdown extends CardImpl {
+public final class ConsulateCrackdown extends CardImpl {
public ConsulateCrackdown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsulateDreadnought.java b/Mage.Sets/src/mage/cards/c/ConsulateDreadnought.java
index 606cc51edae..45d2585e451 100644
--- a/Mage.Sets/src/mage/cards/c/ConsulateDreadnought.java
+++ b/Mage.Sets/src/mage/cards/c/ConsulateDreadnought.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class ConsulateDreadnought extends CardImpl {
+public final class ConsulateDreadnought extends CardImpl {
public ConsulateDreadnought(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsulateSkygate.java b/Mage.Sets/src/mage/cards/c/ConsulateSkygate.java
index 20a42f1e718..fdfbe773024 100644
--- a/Mage.Sets/src/mage/cards/c/ConsulateSkygate.java
+++ b/Mage.Sets/src/mage/cards/c/ConsulateSkygate.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ConsulateSkygate extends CardImpl {
+public final class ConsulateSkygate extends CardImpl {
public ConsulateSkygate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsulateSurveillance.java b/Mage.Sets/src/mage/cards/c/ConsulateSurveillance.java
index e9fa80e8e44..de02e24cdc9 100644
--- a/Mage.Sets/src/mage/cards/c/ConsulateSurveillance.java
+++ b/Mage.Sets/src/mage/cards/c/ConsulateSurveillance.java
@@ -44,7 +44,7 @@ import mage.filter.FilterObject;
*
* @author LevelX2
*/
-public class ConsulateSurveillance extends CardImpl {
+public final class ConsulateSurveillance extends CardImpl {
public ConsulateSurveillance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsulateTurret.java b/Mage.Sets/src/mage/cards/c/ConsulateTurret.java
index 80321981bb8..1ac9db9c11b 100644
--- a/Mage.Sets/src/mage/cards/c/ConsulateTurret.java
+++ b/Mage.Sets/src/mage/cards/c/ConsulateTurret.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Styxo
*/
-public class ConsulateTurret extends CardImpl {
+public final class ConsulateTurret extends CardImpl {
public ConsulateTurret(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsulsLieutenant.java b/Mage.Sets/src/mage/cards/c/ConsulsLieutenant.java
index f801dec3924..8ed54074e42 100644
--- a/Mage.Sets/src/mage/cards/c/ConsulsLieutenant.java
+++ b/Mage.Sets/src/mage/cards/c/ConsulsLieutenant.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author LevelX2
*/
-public class ConsulsLieutenant extends CardImpl {
+public final class ConsulsLieutenant extends CardImpl {
public ConsulsLieutenant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java b/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java
index 60e62aa9201..451191819ed 100644
--- a/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java
+++ b/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ConsulsShieldguard extends CardImpl {
+public final class ConsulsShieldguard extends CardImpl {
private final static FilterAttackingCreature filter = new FilterAttackingCreature();
diff --git a/Mage.Sets/src/mage/cards/c/ConsultTheNecrosages.java b/Mage.Sets/src/mage/cards/c/ConsultTheNecrosages.java
index 0d1a576dfce..9108c219bc3 100644
--- a/Mage.Sets/src/mage/cards/c/ConsultTheNecrosages.java
+++ b/Mage.Sets/src/mage/cards/c/ConsultTheNecrosages.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author anonymous
*/
-public class ConsultTheNecrosages extends CardImpl {
+public final class ConsultTheNecrosages extends CardImpl {
public ConsultTheNecrosages(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsumeSpirit.java b/Mage.Sets/src/mage/cards/c/ConsumeSpirit.java
index e6635cb1469..32e3e895089 100644
--- a/Mage.Sets/src/mage/cards/c/ConsumeSpirit.java
+++ b/Mage.Sets/src/mage/cards/c/ConsumeSpirit.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author nantuko
*/
-public class ConsumeSpirit extends CardImpl {
+public final class ConsumeSpirit extends CardImpl {
static final FilterMana filterBlack = new FilterMana();
diff --git a/Mage.Sets/src/mage/cards/c/ConsumeStrength.java b/Mage.Sets/src/mage/cards/c/ConsumeStrength.java
index 15654f0fced..2c92aa3b51b 100644
--- a/Mage.Sets/src/mage/cards/c/ConsumeStrength.java
+++ b/Mage.Sets/src/mage/cards/c/ConsumeStrength.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ConsumeStrength extends CardImpl {
+public final class ConsumeStrength extends CardImpl {
public ConsumeStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsumeTheMeek.java b/Mage.Sets/src/mage/cards/c/ConsumeTheMeek.java
index adcb2b92477..e1b31e376b1 100644
--- a/Mage.Sets/src/mage/cards/c/ConsumeTheMeek.java
+++ b/Mage.Sets/src/mage/cards/c/ConsumeTheMeek.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
*
* @author anonymous
*/
-public class ConsumeTheMeek extends CardImpl {
+public final class ConsumeTheMeek extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/c/ConsumingAberration.java b/Mage.Sets/src/mage/cards/c/ConsumingAberration.java
index 574fbf23ab1..d7f117c64a5 100644
--- a/Mage.Sets/src/mage/cards/c/ConsumingAberration.java
+++ b/Mage.Sets/src/mage/cards/c/ConsumingAberration.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class ConsumingAberration extends CardImpl {
+public final class ConsumingAberration extends CardImpl {
public ConsumingAberration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsumingBonfire.java b/Mage.Sets/src/mage/cards/c/ConsumingBonfire.java
index ba2eb347af1..7edea611686 100644
--- a/Mage.Sets/src/mage/cards/c/ConsumingBonfire.java
+++ b/Mage.Sets/src/mage/cards/c/ConsumingBonfire.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
* @author Poddo
*/
-public class ConsumingBonfire extends CardImpl {
+public final class ConsumingBonfire extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("non-Elemental creature");
private static final FilterPermanent filter2 = new FilterPermanent("Treefolk creature");
diff --git a/Mage.Sets/src/mage/cards/c/ConsumingFerocity.java b/Mage.Sets/src/mage/cards/c/ConsumingFerocity.java
index f8801a61a44..44233f0646e 100644
--- a/Mage.Sets/src/mage/cards/c/ConsumingFerocity.java
+++ b/Mage.Sets/src/mage/cards/c/ConsumingFerocity.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class ConsumingFerocity extends CardImpl {
+public final class ConsumingFerocity extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creature");
diff --git a/Mage.Sets/src/mage/cards/c/ConsumingFervor.java b/Mage.Sets/src/mage/cards/c/ConsumingFervor.java
index 59e8b751a00..8e510989384 100644
--- a/Mage.Sets/src/mage/cards/c/ConsumingFervor.java
+++ b/Mage.Sets/src/mage/cards/c/ConsumingFervor.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ConsumingFervor extends CardImpl {
+public final class ConsumingFervor extends CardImpl {
public ConsumingFervor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsumingSinkhole.java b/Mage.Sets/src/mage/cards/c/ConsumingSinkhole.java
index ad6f74199ee..e41ef5febbf 100644
--- a/Mage.Sets/src/mage/cards/c/ConsumingSinkhole.java
+++ b/Mage.Sets/src/mage/cards/c/ConsumingSinkhole.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class ConsumingSinkhole extends CardImpl {
+public final class ConsumingSinkhole extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("land creature");
diff --git a/Mage.Sets/src/mage/cards/c/ConsumingVapors.java b/Mage.Sets/src/mage/cards/c/ConsumingVapors.java
index 8ab8006cbde..c494d1734d8 100644
--- a/Mage.Sets/src/mage/cards/c/ConsumingVapors.java
+++ b/Mage.Sets/src/mage/cards/c/ConsumingVapors.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author maurer.it_at_gmail.com
*/
-public class ConsumingVapors extends CardImpl {
+public final class ConsumingVapors extends CardImpl {
diff --git a/Mage.Sets/src/mage/cards/c/ConsumingVortex.java b/Mage.Sets/src/mage/cards/c/ConsumingVortex.java
index ccfdd94653f..df9f4853a2d 100644
--- a/Mage.Sets/src/mage/cards/c/ConsumingVortex.java
+++ b/Mage.Sets/src/mage/cards/c/ConsumingVortex.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ConsumingVortex extends CardImpl {
+public final class ConsumingVortex extends CardImpl {
public ConsumingVortex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ConsumptiveGoo.java b/Mage.Sets/src/mage/cards/c/ConsumptiveGoo.java
index 9257f20e0d3..692a3aaf044 100644
--- a/Mage.Sets/src/mage/cards/c/ConsumptiveGoo.java
+++ b/Mage.Sets/src/mage/cards/c/ConsumptiveGoo.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ConsumptiveGoo extends CardImpl {
+public final class ConsumptiveGoo extends CardImpl {
public ConsumptiveGoo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Contagion.java b/Mage.Sets/src/mage/cards/c/Contagion.java
index 6db46caa910..0a4e749bcd8 100644
--- a/Mage.Sets/src/mage/cards/c/Contagion.java
+++ b/Mage.Sets/src/mage/cards/c/Contagion.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author Plopman
*/
-public class Contagion extends CardImpl {
+public final class Contagion extends CardImpl {
public Contagion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ContagionClasp.java b/Mage.Sets/src/mage/cards/c/ContagionClasp.java
index 0e45af5fb63..6d4609f65cc 100644
--- a/Mage.Sets/src/mage/cards/c/ContagionClasp.java
+++ b/Mage.Sets/src/mage/cards/c/ContagionClasp.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ContagionClasp extends CardImpl {
+public final class ContagionClasp extends CardImpl {
public ContagionClasp (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/ContagionEngine.java b/Mage.Sets/src/mage/cards/c/ContagionEngine.java
index af3b2547395..df76ccc04a0 100644
--- a/Mage.Sets/src/mage/cards/c/ContagionEngine.java
+++ b/Mage.Sets/src/mage/cards/c/ContagionEngine.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class ContagionEngine extends CardImpl {
+public final class ContagionEngine extends CardImpl {
public ContagionEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/c/ContagiousNim.java b/Mage.Sets/src/mage/cards/c/ContagiousNim.java
index 08e5707722c..71b245595fd 100644
--- a/Mage.Sets/src/mage/cards/c/ContagiousNim.java
+++ b/Mage.Sets/src/mage/cards/c/ContagiousNim.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ContagiousNim extends CardImpl {
+public final class ContagiousNim extends CardImpl {
public ContagiousNim (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ContainmentMembrane.java b/Mage.Sets/src/mage/cards/c/ContainmentMembrane.java
index 476c4e215d6..7dcb1e3a674 100644
--- a/Mage.Sets/src/mage/cards/c/ContainmentMembrane.java
+++ b/Mage.Sets/src/mage/cards/c/ContainmentMembrane.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ContainmentMembrane extends CardImpl {
+public final class ContainmentMembrane extends CardImpl {
public ContainmentMembrane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ContainmentPriest.java b/Mage.Sets/src/mage/cards/c/ContainmentPriest.java
index d93809301e7..1d74f25a244 100644
--- a/Mage.Sets/src/mage/cards/c/ContainmentPriest.java
+++ b/Mage.Sets/src/mage/cards/c/ContainmentPriest.java
@@ -52,7 +52,7 @@ import mage.watchers.common.CreatureWasCastWatcher;
*
* @author LevelX2
*/
-public class ContainmentPriest extends CardImpl {
+public final class ContainmentPriest extends CardImpl {
public ContainmentPriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ContaminatedBond.java b/Mage.Sets/src/mage/cards/c/ContaminatedBond.java
index d2b4646db9f..7679099b48a 100644
--- a/Mage.Sets/src/mage/cards/c/ContaminatedBond.java
+++ b/Mage.Sets/src/mage/cards/c/ContaminatedBond.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ContaminatedBond extends CardImpl {
+public final class ContaminatedBond extends CardImpl {
public ContaminatedBond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ContaminatedGround.java b/Mage.Sets/src/mage/cards/c/ContaminatedGround.java
index 56fcd127351..b0104e6eaeb 100644
--- a/Mage.Sets/src/mage/cards/c/ContaminatedGround.java
+++ b/Mage.Sets/src/mage/cards/c/ContaminatedGround.java
@@ -48,7 +48,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class ContaminatedGround extends CardImpl {
+public final class ContaminatedGround extends CardImpl {
public ContaminatedGround(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Contamination.java b/Mage.Sets/src/mage/cards/c/Contamination.java
index eb38e21c833..2a0ee1df454 100644
--- a/Mage.Sets/src/mage/cards/c/Contamination.java
+++ b/Mage.Sets/src/mage/cards/c/Contamination.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class Contamination extends CardImpl {
+public final class Contamination extends CardImpl {
public Contamination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Contemplation.java b/Mage.Sets/src/mage/cards/c/Contemplation.java
index e5b65078dce..f08a9be3233 100644
--- a/Mage.Sets/src/mage/cards/c/Contemplation.java
+++ b/Mage.Sets/src/mage/cards/c/Contemplation.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author LoneFox
*/
-public class Contemplation extends CardImpl {
+public final class Contemplation extends CardImpl {
public Contemplation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ContestedCliffs.java b/Mage.Sets/src/mage/cards/c/ContestedCliffs.java
index 9facab640e9..009023a8688 100644
--- a/Mage.Sets/src/mage/cards/c/ContestedCliffs.java
+++ b/Mage.Sets/src/mage/cards/c/ContestedCliffs.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ContestedCliffs extends CardImpl {
+public final class ContestedCliffs extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Beast creature you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/c/ContestedWarZone.java b/Mage.Sets/src/mage/cards/c/ContestedWarZone.java
index e430c0cfc26..14b68da54fa 100644
--- a/Mage.Sets/src/mage/cards/c/ContestedWarZone.java
+++ b/Mage.Sets/src/mage/cards/c/ContestedWarZone.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ContestedWarZone extends CardImpl {
+public final class ContestedWarZone extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("Attacking creatures");
diff --git a/Mage.Sets/src/mage/cards/c/ContingencyPlan.java b/Mage.Sets/src/mage/cards/c/ContingencyPlan.java
index ac582ac7241..15b97b8873b 100644
--- a/Mage.Sets/src/mage/cards/c/ContingencyPlan.java
+++ b/Mage.Sets/src/mage/cards/c/ContingencyPlan.java
@@ -40,7 +40,7 @@ import mage.filter.FilterCard;
*
* @author LevelX2
*/
-public class ContingencyPlan extends CardImpl {
+public final class ContingencyPlan extends CardImpl {
public ContingencyPlan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ContrabandKingpin.java b/Mage.Sets/src/mage/cards/c/ContrabandKingpin.java
index 2b9316574ee..133e5a793d9 100644
--- a/Mage.Sets/src/mage/cards/c/ContrabandKingpin.java
+++ b/Mage.Sets/src/mage/cards/c/ContrabandKingpin.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author fireshoes
*/
-public class ContrabandKingpin extends CardImpl {
+public final class ContrabandKingpin extends CardImpl {
public ContrabandKingpin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/ContractKilling.java b/Mage.Sets/src/mage/cards/c/ContractKilling.java
index 3f970dd0d0d..aa49344d952 100644
--- a/Mage.Sets/src/mage/cards/c/ContractKilling.java
+++ b/Mage.Sets/src/mage/cards/c/ContractKilling.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class ContractKilling extends CardImpl {
+public final class ContractKilling extends CardImpl {
public ContractKilling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Contradict.java b/Mage.Sets/src/mage/cards/c/Contradict.java
index 0a0306b0473..553feef3eda 100644
--- a/Mage.Sets/src/mage/cards/c/Contradict.java
+++ b/Mage.Sets/src/mage/cards/c/Contradict.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class Contradict extends CardImpl {
+public final class Contradict extends CardImpl {
public Contradict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ControlMagic.java b/Mage.Sets/src/mage/cards/c/ControlMagic.java
index fd5b3b734a2..1434cf1ad3f 100644
--- a/Mage.Sets/src/mage/cards/c/ControlMagic.java
+++ b/Mage.Sets/src/mage/cards/c/ControlMagic.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author KholdFuzion
*/
-public class ControlMagic extends CardImpl {
+public final class ControlMagic extends CardImpl {
public ControlMagic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ControlOfTheCourt.java b/Mage.Sets/src/mage/cards/c/ControlOfTheCourt.java
index b14ee510378..c69cc00df8e 100644
--- a/Mage.Sets/src/mage/cards/c/ControlOfTheCourt.java
+++ b/Mage.Sets/src/mage/cards/c/ControlOfTheCourt.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class ControlOfTheCourt extends CardImpl {
+public final class ControlOfTheCourt extends CardImpl {
public ControlOfTheCourt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/ControlledInstincts.java b/Mage.Sets/src/mage/cards/c/ControlledInstincts.java
index 0c2f9f82620..c796b62cb4b 100644
--- a/Mage.Sets/src/mage/cards/c/ControlledInstincts.java
+++ b/Mage.Sets/src/mage/cards/c/ControlledInstincts.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ControlledInstincts extends CardImpl {
+public final class ControlledInstincts extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red or green creature");
diff --git a/Mage.Sets/src/mage/cards/c/Controvert.java b/Mage.Sets/src/mage/cards/c/Controvert.java
index 72a6e98a467..274edc84c2c 100644
--- a/Mage.Sets/src/mage/cards/c/Controvert.java
+++ b/Mage.Sets/src/mage/cards/c/Controvert.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class Controvert extends CardImpl {
+public final class Controvert extends CardImpl {
public Controvert(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ConundrumSphinx.java b/Mage.Sets/src/mage/cards/c/ConundrumSphinx.java
index 9cc733409bb..41e4ed8b270 100644
--- a/Mage.Sets/src/mage/cards/c/ConundrumSphinx.java
+++ b/Mage.Sets/src/mage/cards/c/ConundrumSphinx.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ConundrumSphinx extends CardImpl {
+public final class ConundrumSphinx extends CardImpl {
public ConundrumSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Convalescence.java b/Mage.Sets/src/mage/cards/c/Convalescence.java
index c1e49c05d56..175af801e9e 100644
--- a/Mage.Sets/src/mage/cards/c/Convalescence.java
+++ b/Mage.Sets/src/mage/cards/c/Convalescence.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class Convalescence extends CardImpl {
+public final class Convalescence extends CardImpl {
public Convalescence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConvalescentCare.java b/Mage.Sets/src/mage/cards/c/ConvalescentCare.java
index a8fe53e6512..cf994e6a508 100644
--- a/Mage.Sets/src/mage/cards/c/ConvalescentCare.java
+++ b/Mage.Sets/src/mage/cards/c/ConvalescentCare.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class ConvalescentCare extends CardImpl {
+public final class ConvalescentCare extends CardImpl {
public ConvalescentCare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Conversion.java b/Mage.Sets/src/mage/cards/c/Conversion.java
index b9f7acfc784..4557db9573d 100644
--- a/Mage.Sets/src/mage/cards/c/Conversion.java
+++ b/Mage.Sets/src/mage/cards/c/Conversion.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class Conversion extends CardImpl {
+public final class Conversion extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.MOUNTAIN, "Mountains");
diff --git a/Mage.Sets/src/mage/cards/c/ConversionChamber.java b/Mage.Sets/src/mage/cards/c/ConversionChamber.java
index 5a47b6a1a13..d6b6be7bd5e 100644
--- a/Mage.Sets/src/mage/cards/c/ConversionChamber.java
+++ b/Mage.Sets/src/mage/cards/c/ConversionChamber.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Loki
*/
-public class ConversionChamber extends CardImpl {
+public final class ConversionChamber extends CardImpl {
public ConversionChamber (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/ConvictedKiller.java b/Mage.Sets/src/mage/cards/c/ConvictedKiller.java
index 33a40f929dd..da17ad1fa66 100644
--- a/Mage.Sets/src/mage/cards/c/ConvictedKiller.java
+++ b/Mage.Sets/src/mage/cards/c/ConvictedKiller.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class ConvictedKiller extends CardImpl {
+public final class ConvictedKiller extends CardImpl {
public ConvictedKiller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Conviction.java b/Mage.Sets/src/mage/cards/c/Conviction.java
index 137b86e9d3a..c3ef5277655 100644
--- a/Mage.Sets/src/mage/cards/c/Conviction.java
+++ b/Mage.Sets/src/mage/cards/c/Conviction.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Conviction extends CardImpl {
+public final class Conviction extends CardImpl {
public Conviction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/ConvincingMirage.java b/Mage.Sets/src/mage/cards/c/ConvincingMirage.java
index cbb6f52f9e2..b92d64d4883 100644
--- a/Mage.Sets/src/mage/cards/c/ConvincingMirage.java
+++ b/Mage.Sets/src/mage/cards/c/ConvincingMirage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author North
*/
-public class ConvincingMirage extends CardImpl {
+public final class ConvincingMirage extends CardImpl {
public ConvincingMirage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Convolute.java b/Mage.Sets/src/mage/cards/c/Convolute.java
index 8337b3b06e9..5e09a321429 100644
--- a/Mage.Sets/src/mage/cards/c/Convolute.java
+++ b/Mage.Sets/src/mage/cards/c/Convolute.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class Convolute extends CardImpl {
+public final class Convolute extends CardImpl {
public Convolute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/ConvulsingLicid.java b/Mage.Sets/src/mage/cards/c/ConvulsingLicid.java
index de1edf40ef2..0f8952a4877 100644
--- a/Mage.Sets/src/mage/cards/c/ConvulsingLicid.java
+++ b/Mage.Sets/src/mage/cards/c/ConvulsingLicid.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class ConvulsingLicid extends CardImpl {
+public final class ConvulsingLicid extends CardImpl {
public ConvulsingLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Cooperation.java b/Mage.Sets/src/mage/cards/c/Cooperation.java
index 33bbb2f37f2..3da541d5d96 100644
--- a/Mage.Sets/src/mage/cards/c/Cooperation.java
+++ b/Mage.Sets/src/mage/cards/c/Cooperation.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Cooperation extends CardImpl {
+public final class Cooperation extends CardImpl {
public Cooperation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CoordinatedAssault.java b/Mage.Sets/src/mage/cards/c/CoordinatedAssault.java
index 628524a93c7..46ab386a4e2 100644
--- a/Mage.Sets/src/mage/cards/c/CoordinatedAssault.java
+++ b/Mage.Sets/src/mage/cards/c/CoordinatedAssault.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CoordinatedAssault extends CardImpl {
+public final class CoordinatedAssault extends CardImpl {
public CoordinatedAssault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CoordinatedBarrage.java b/Mage.Sets/src/mage/cards/c/CoordinatedBarrage.java
index 518dfc76ace..604d44fdb80 100644
--- a/Mage.Sets/src/mage/cards/c/CoordinatedBarrage.java
+++ b/Mage.Sets/src/mage/cards/c/CoordinatedBarrage.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class CoordinatedBarrage extends CardImpl {
+public final class CoordinatedBarrage extends CardImpl {
public CoordinatedBarrage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CopperCarapace.java b/Mage.Sets/src/mage/cards/c/CopperCarapace.java
index a57e232c19e..1d265a66608 100644
--- a/Mage.Sets/src/mage/cards/c/CopperCarapace.java
+++ b/Mage.Sets/src/mage/cards/c/CopperCarapace.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class CopperCarapace extends CardImpl {
+public final class CopperCarapace extends CardImpl {
public CopperCarapace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/c/CopperGnomes.java b/Mage.Sets/src/mage/cards/c/CopperGnomes.java
index d926d333a85..828955dfab4 100644
--- a/Mage.Sets/src/mage/cards/c/CopperGnomes.java
+++ b/Mage.Sets/src/mage/cards/c/CopperGnomes.java
@@ -33,19 +33,19 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterArtifactCard;
+import mage.filter.StaticFilters;
/**
*
* @author fireshoes
*/
-public class CopperGnomes extends CardImpl {
+public final class CopperGnomes extends CardImpl {
public CopperGnomes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
@@ -54,7 +54,11 @@ public class CopperGnomes extends CardImpl {
this.toughness = new MageInt(1);
// {4}, Sacrifice Copper Gnomes: You may put an artifact card from your hand onto the battlefield.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutPermanentOnBattlefieldEffect(new FilterArtifactCard()), new ManaCostsImpl("{4}"));
+ Ability ability = new SimpleActivatedAbility(
+ Zone.BATTLEFIELD,
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_ARTIFACT_AN),
+ new ManaCostsImpl("{4}")
+ );
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/c/CopperLeafAngel.java b/Mage.Sets/src/mage/cards/c/CopperLeafAngel.java
index 80250266920..08ca1d236de 100644
--- a/Mage.Sets/src/mage/cards/c/CopperLeafAngel.java
+++ b/Mage.Sets/src/mage/cards/c/CopperLeafAngel.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author Rene - bugisemail at gmail.com
*/
-public class CopperLeafAngel extends CardImpl {
+public final class CopperLeafAngel extends CardImpl {
public CopperLeafAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/c/CopperMyr.java b/Mage.Sets/src/mage/cards/c/CopperMyr.java
index cd8cfafecc5..0da8de2f9a4 100644
--- a/Mage.Sets/src/mage/cards/c/CopperMyr.java
+++ b/Mage.Sets/src/mage/cards/c/CopperMyr.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CopperMyr extends CardImpl {
+public final class CopperMyr extends CardImpl {
public CopperMyr (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CopperTablet.java b/Mage.Sets/src/mage/cards/c/CopperTablet.java
index 40339075ebe..3fa85537fc6 100644
--- a/Mage.Sets/src/mage/cards/c/CopperTablet.java
+++ b/Mage.Sets/src/mage/cards/c/CopperTablet.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
* @author KholdFuzion
*/
-public class CopperTablet extends CardImpl {
+public final class CopperTablet extends CardImpl {
public CopperTablet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CopperhoofVorrac.java b/Mage.Sets/src/mage/cards/c/CopperhoofVorrac.java
index 11ed989f77a..78e3244d568 100644
--- a/Mage.Sets/src/mage/cards/c/CopperhoofVorrac.java
+++ b/Mage.Sets/src/mage/cards/c/CopperhoofVorrac.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LoneFox
*/
-public class CopperhoofVorrac extends CardImpl {
+public final class CopperhoofVorrac extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("untapped permanent your opponents control");
diff --git a/Mage.Sets/src/mage/cards/c/CopperhornScout.java b/Mage.Sets/src/mage/cards/c/CopperhornScout.java
index c7229c0991f..b5130a85ca6 100644
--- a/Mage.Sets/src/mage/cards/c/CopperhornScout.java
+++ b/Mage.Sets/src/mage/cards/c/CopperhornScout.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author maurer.it_at_gmail.com
*/
-public class CopperhornScout extends CardImpl {
+public final class CopperhornScout extends CardImpl {
public CopperhornScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CopperlineGorge.java b/Mage.Sets/src/mage/cards/c/CopperlineGorge.java
index 7dbdfafeb6f..530e62a07b4 100644
--- a/Mage.Sets/src/mage/cards/c/CopperlineGorge.java
+++ b/Mage.Sets/src/mage/cards/c/CopperlineGorge.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author maurer.it_at_gmail.com
*/
-public class CopperlineGorge extends CardImpl {
+public final class CopperlineGorge extends CardImpl {
public CopperlineGorge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/c/CopyArtifact.java b/Mage.Sets/src/mage/cards/c/CopyArtifact.java
index 835d7a1c2c1..9a3dfeb2d2f 100644
--- a/Mage.Sets/src/mage/cards/c/CopyArtifact.java
+++ b/Mage.Sets/src/mage/cards/c/CopyArtifact.java
@@ -42,7 +42,7 @@ import mage.util.functions.CardTypeApplier;
* @author KholdFuzion
*
*/
-public class CopyArtifact extends CardImpl {
+public final class CopyArtifact extends CardImpl {
public CopyArtifact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CopyEnchantment.java b/Mage.Sets/src/mage/cards/c/CopyEnchantment.java
index cf9968c1395..b93e563f083 100644
--- a/Mage.Sets/src/mage/cards/c/CopyEnchantment.java
+++ b/Mage.Sets/src/mage/cards/c/CopyEnchantment.java
@@ -51,7 +51,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author LevelX2
*/
-public class CopyEnchantment extends CardImpl {
+public final class CopyEnchantment extends CardImpl {
public CopyEnchantment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoralAtoll.java b/Mage.Sets/src/mage/cards/c/CoralAtoll.java
index 3521c05ad79..e25bcaf9035 100644
--- a/Mage.Sets/src/mage/cards/c/CoralAtoll.java
+++ b/Mage.Sets/src/mage/cards/c/CoralAtoll.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class CoralAtoll extends CardImpl {
+public final class CoralAtoll extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Island");
diff --git a/Mage.Sets/src/mage/cards/c/CoralBarrier.java b/Mage.Sets/src/mage/cards/c/CoralBarrier.java
index 1e6f30411d8..577a28b7136 100644
--- a/Mage.Sets/src/mage/cards/c/CoralBarrier.java
+++ b/Mage.Sets/src/mage/cards/c/CoralBarrier.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.CoralBarrierSquidToken;
*
* @author LevelX2
*/
-public class CoralBarrier extends CardImpl {
+public final class CoralBarrier extends CardImpl {
public CoralBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoralEel.java b/Mage.Sets/src/mage/cards/c/CoralEel.java
index fc3478e1132..c0d27ccc935 100644
--- a/Mage.Sets/src/mage/cards/c/CoralEel.java
+++ b/Mage.Sets/src/mage/cards/c/CoralEel.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CoralEel extends CardImpl {
+public final class CoralEel extends CardImpl {
public CoralEel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoralFighters.java b/Mage.Sets/src/mage/cards/c/CoralFighters.java
index 8234bd16041..bfbca3fde42 100644
--- a/Mage.Sets/src/mage/cards/c/CoralFighters.java
+++ b/Mage.Sets/src/mage/cards/c/CoralFighters.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LoneFox
*/
-public class CoralFighters extends CardImpl {
+public final class CoralFighters extends CardImpl {
public CoralFighters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoralHelm.java b/Mage.Sets/src/mage/cards/c/CoralHelm.java
index 9a935d75e5a..49d136df859 100644
--- a/Mage.Sets/src/mage/cards/c/CoralHelm.java
+++ b/Mage.Sets/src/mage/cards/c/CoralHelm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nigelzor
*/
-public class CoralHelm extends CardImpl {
+public final class CoralHelm extends CardImpl {
public CoralHelm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CoralMerfolk.java b/Mage.Sets/src/mage/cards/c/CoralMerfolk.java
index b254d1bf375..e8e0bcb5353 100644
--- a/Mage.Sets/src/mage/cards/c/CoralMerfolk.java
+++ b/Mage.Sets/src/mage/cards/c/CoralMerfolk.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CoralMerfolk extends CardImpl {
+public final class CoralMerfolk extends CardImpl {
public CoralMerfolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoralNet.java b/Mage.Sets/src/mage/cards/c/CoralNet.java
index b66d5404b1a..cd5c138eb3c 100644
--- a/Mage.Sets/src/mage/cards/c/CoralNet.java
+++ b/Mage.Sets/src/mage/cards/c/CoralNet.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CoralNet extends CardImpl {
+public final class CoralNet extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green or white creature");
diff --git a/Mage.Sets/src/mage/cards/c/CoralReef.java b/Mage.Sets/src/mage/cards/c/CoralReef.java
index 4d7b0fab398..4754d24e073 100644
--- a/Mage.Sets/src/mage/cards/c/CoralReef.java
+++ b/Mage.Sets/src/mage/cards/c/CoralReef.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CoralReef extends CardImpl {
+public final class CoralReef extends CardImpl {
private static final FilterControlledPermanent islandFilter = new FilterControlledPermanent("an Island");
private static final FilterControlledCreaturePermanent untappedBlueCreatureFilter = new FilterControlledCreaturePermanent("an untapped blue creature you control");
diff --git a/Mage.Sets/src/mage/cards/c/CoralTrickster.java b/Mage.Sets/src/mage/cards/c/CoralTrickster.java
index 5a995797ccf..8b7c2b6e825 100644
--- a/Mage.Sets/src/mage/cards/c/CoralTrickster.java
+++ b/Mage.Sets/src/mage/cards/c/CoralTrickster.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class CoralTrickster extends CardImpl {
+public final class CoralTrickster extends CardImpl {
public CoralTrickster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoralhelmCommander.java b/Mage.Sets/src/mage/cards/c/CoralhelmCommander.java
index f7e49593649..2439622d49c 100644
--- a/Mage.Sets/src/mage/cards/c/CoralhelmCommander.java
+++ b/Mage.Sets/src/mage/cards/c/CoralhelmCommander.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class CoralhelmCommander extends LevelerCard {
+public final class CoralhelmCommander extends LevelerCard {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CoralhelmGuide.java b/Mage.Sets/src/mage/cards/c/CoralhelmGuide.java
index 1d3328e5216..5a76fcf2515 100644
--- a/Mage.Sets/src/mage/cards/c/CoralhelmGuide.java
+++ b/Mage.Sets/src/mage/cards/c/CoralhelmGuide.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CoralhelmGuide extends CardImpl {
+public final class CoralhelmGuide extends CardImpl {
public CoralhelmGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoreProwler.java b/Mage.Sets/src/mage/cards/c/CoreProwler.java
index 47dec4fe8e8..cc2495137ea 100644
--- a/Mage.Sets/src/mage/cards/c/CoreProwler.java
+++ b/Mage.Sets/src/mage/cards/c/CoreProwler.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CoreProwler extends CardImpl {
+public final class CoreProwler extends CardImpl {
public CoreProwler (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/c/CorellianCorvette.java b/Mage.Sets/src/mage/cards/c/CorellianCorvette.java
index 9b7af57ccc9..975cb2e051e 100644
--- a/Mage.Sets/src/mage/cards/c/CorellianCorvette.java
+++ b/Mage.Sets/src/mage/cards/c/CorellianCorvette.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class CorellianCorvette extends CardImpl {
+public final class CorellianCorvette extends CardImpl {
public CorellianCorvette(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Coretapper.java b/Mage.Sets/src/mage/cards/c/Coretapper.java
index 2a95d0627b5..c33d48aef5e 100644
--- a/Mage.Sets/src/mage/cards/c/Coretapper.java
+++ b/Mage.Sets/src/mage/cards/c/Coretapper.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class Coretapper extends CardImpl {
+public final class Coretapper extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/c/CorpseAugur.java b/Mage.Sets/src/mage/cards/c/CorpseAugur.java
index 4022c7f6ee0..068f38881a1 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseAugur.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseAugur.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class CorpseAugur extends CardImpl {
+public final class CorpseAugur extends CardImpl {
public CorpseAugur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorpseBlockade.java b/Mage.Sets/src/mage/cards/c/CorpseBlockade.java
index a14f89f231e..54248e1a2e7 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseBlockade.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseBlockade.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class CorpseBlockade extends CardImpl {
+public final class CorpseBlockade extends CardImpl {
public CorpseBlockade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorpseChurn.java b/Mage.Sets/src/mage/cards/c/CorpseChurn.java
index 31bbba9bf88..95e5d3fd31e 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseChurn.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseChurn.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class CorpseChurn extends CardImpl {
+public final class CorpseChurn extends CardImpl {
public CorpseChurn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java b/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java
index 47efd67b94d..0ac0eef4465 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class CorpseConnoisseur extends CardImpl {
+public final class CorpseConnoisseur extends CardImpl {
public CorpseConnoisseur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorpseCur.java b/Mage.Sets/src/mage/cards/c/CorpseCur.java
index e7f9506fb89..23fda708555 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseCur.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseCur.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class CorpseCur extends CardImpl {
+public final class CorpseCur extends CardImpl {
private static final FilterCard filter = new FilterCard("creature card with infect from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/c/CorpseDance.java b/Mage.Sets/src/mage/cards/c/CorpseDance.java
index 02220e40b5e..6d61dbc3fe1 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseDance.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseDance.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class CorpseDance extends CardImpl {
+public final class CorpseDance extends CardImpl {
public CorpseDance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorpseHarvester.java b/Mage.Sets/src/mage/cards/c/CorpseHarvester.java
index 4634848ace2..f9278b34ecd 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseHarvester.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseHarvester.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class CorpseHarvester extends CardImpl {
+public final class CorpseHarvester extends CardImpl {
public CorpseHarvester(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorpseHauler.java b/Mage.Sets/src/mage/cards/c/CorpseHauler.java
index 699208df105..bce80328119 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseHauler.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseHauler.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class CorpseHauler extends CardImpl {
+public final class CorpseHauler extends CardImpl {
private static final FilterCard filter = new FilterCard("another target creature card from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CorpseLunge.java b/Mage.Sets/src/mage/cards/c/CorpseLunge.java
index bc7469e59d4..2dff59b9f25 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseLunge.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseLunge.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class CorpseLunge extends CardImpl {
+public final class CorpseLunge extends CardImpl {
public CorpseLunge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorpseTraders.java b/Mage.Sets/src/mage/cards/c/CorpseTraders.java
index 6a52ad79739..26aef951ecf 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseTraders.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseTraders.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
/**
* @author noxx
*/
-public class CorpseTraders extends CardImpl {
+public final class CorpseTraders extends CardImpl {
public CorpseTraders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Corpsehatch.java b/Mage.Sets/src/mage/cards/c/Corpsehatch.java
index f0c59c2b69a..4b271cd2b9b 100644
--- a/Mage.Sets/src/mage/cards/c/Corpsehatch.java
+++ b/Mage.Sets/src/mage/cards/c/Corpsehatch.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Corpsehatch extends CardImpl {
+public final class Corpsehatch extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/c/CorpsejackMenace.java b/Mage.Sets/src/mage/cards/c/CorpsejackMenace.java
index 5e35c026b39..f5a30a58962 100644
--- a/Mage.Sets/src/mage/cards/c/CorpsejackMenace.java
+++ b/Mage.Sets/src/mage/cards/c/CorpsejackMenace.java
@@ -56,7 +56,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class CorpsejackMenace extends CardImpl {
+public final class CorpsejackMenace extends CardImpl {
public CorpsejackMenace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Corpseweft.java b/Mage.Sets/src/mage/cards/c/Corpseweft.java
index 9b8c821d1af..28e132da022 100644
--- a/Mage.Sets/src/mage/cards/c/Corpseweft.java
+++ b/Mage.Sets/src/mage/cards/c/Corpseweft.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class Corpseweft extends CardImpl {
+public final class Corpseweft extends CardImpl {
public Corpseweft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorpulentCorpse.java b/Mage.Sets/src/mage/cards/c/CorpulentCorpse.java
index db2b7ae1b9a..7e2685fec94 100644
--- a/Mage.Sets/src/mage/cards/c/CorpulentCorpse.java
+++ b/Mage.Sets/src/mage/cards/c/CorpulentCorpse.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CorpulentCorpse extends CardImpl {
+public final class CorpulentCorpse extends CardImpl {
public CorpulentCorpse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Corrosion.java b/Mage.Sets/src/mage/cards/c/Corrosion.java
index 8199b9cc547..72cb78cf079 100644
--- a/Mage.Sets/src/mage/cards/c/Corrosion.java
+++ b/Mage.Sets/src/mage/cards/c/Corrosion.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
*
* @author L_J
*/
-public class Corrosion extends CardImpl {
+public final class Corrosion extends CardImpl {
public Corrosion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CorrosiveGale.java b/Mage.Sets/src/mage/cards/c/CorrosiveGale.java
index 7a001b835cb..ce395fdc4e5 100644
--- a/Mage.Sets/src/mage/cards/c/CorrosiveGale.java
+++ b/Mage.Sets/src/mage/cards/c/CorrosiveGale.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author North
*/
-public class CorrosiveGale extends CardImpl {
+public final class CorrosiveGale extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/c/CorrosiveMentor.java b/Mage.Sets/src/mage/cards/c/CorrosiveMentor.java
index 47e874a0749..87b53c4917f 100644
--- a/Mage.Sets/src/mage/cards/c/CorrosiveMentor.java
+++ b/Mage.Sets/src/mage/cards/c/CorrosiveMentor.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class CorrosiveMentor extends CardImpl {
+public final class CorrosiveMentor extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Black creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CorrosiveOoze.java b/Mage.Sets/src/mage/cards/c/CorrosiveOoze.java
index c3eda267656..b9960033126 100644
--- a/Mage.Sets/src/mage/cards/c/CorrosiveOoze.java
+++ b/Mage.Sets/src/mage/cards/c/CorrosiveOoze.java
@@ -27,25 +27,43 @@
*/
package mage.cards.c;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
+import mage.abilities.Ability;
import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility;
import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility;
import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
-import mage.abilities.effects.common.DestroyAllAttachedEquipmentEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
+import mage.constants.Outcome;
import mage.constants.SubType;
+import mage.constants.TurnPhase;
+import mage.constants.WatcherScope;
+import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.EquippedPredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.ZoneChangeEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.watchers.Watcher;
/**
*
* @author rscoates
*/
-public class CorrosiveOoze extends CardImpl {
+public final class CorrosiveOoze extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("equipped creature");
@@ -62,9 +80,8 @@ public class CorrosiveOoze extends CardImpl {
this.toughness = new MageInt(2);
// Whenever Corrosive Ooze blocks or becomes blocked by an equipped creature, destroy all Equipment attached to that creature at end of combat.
- Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyAllAttachedEquipmentEffect()), true);
- effect.setText("destroy all Equipment attached to that creature at end of combat");
- this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, filter, false));
+ Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new CorrosiveOozeEffect()), true);
+ this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, filter, false), new CorrosiveOozeCombatWatcher());
}
public CorrosiveOoze(final CorrosiveOoze card) {
@@ -76,3 +93,162 @@ public class CorrosiveOoze extends CardImpl {
return new CorrosiveOoze(this);
}
}
+
+class CorrosiveOozeEffect extends OneShotEffect {
+
+ public CorrosiveOozeEffect() {
+ super(Outcome.DestroyPermanent);
+ this.staticText = "destroy all Equipment attached to that creature at end of combat";
+ }
+
+ public CorrosiveOozeEffect(final CorrosiveOozeEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public CorrosiveOozeEffect copy() {
+ return new CorrosiveOozeEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ CorrosiveOozeCombatWatcher watcher = (CorrosiveOozeCombatWatcher) game.getState().getWatchers().get(CorrosiveOozeCombatWatcher.class.getSimpleName());
+ if (controller != null && watcher != null) {
+ MageObjectReference sourceMor = new MageObjectReference(source.getSourceObject(game), game);
+ // get equipmentsToDestroy of creatres already left the battlefield
+ List toDestroy = new ArrayList<>();
+ Set toDestroyMor = watcher.getEquipmentsToDestroy(sourceMor);
+ if (toDestroyMor != null) {
+ for (MageObjectReference mor : toDestroyMor) {
+ Permanent attachment = mor.getPermanent(game);
+ if (attachment != null) {
+ toDestroy.add(attachment);
+ }
+ }
+ }
+ // get the related creatures
+ Set relatedCreatures = watcher.getRelatedBlockedCreatures(sourceMor);
+ if (relatedCreatures != null) {
+ for (MageObjectReference relatedCreature : relatedCreatures) {
+ Permanent permanent = relatedCreature.getPermanent(game);
+ if (permanent != null) {
+ for (UUID attachmentId : permanent.getAttachments()) {
+ Permanent attachment = game.getPermanent(attachmentId);
+ if (attachment != null && attachment.hasSubtype(SubType.EQUIPMENT, game)) {
+ toDestroy.add(attachment);
+ }
+ }
+ }
+ }
+ }
+ for (Permanent permanent : toDestroy) {
+ permanent.destroy(source.getSourceId(), game, false);
+ }
+
+ return true;
+ }
+ return false;
+
+ }
+}
+
+class CorrosiveOozeCombatWatcher extends Watcher {
+
+ public final HashMap> oozeBlocksOrBlocked = new HashMap<>();
+ public final HashMap> oozeEquipmentsToDestroy = new HashMap<>();
+
+ public CorrosiveOozeCombatWatcher() {
+ super(CorrosiveOozeCombatWatcher.class.getSimpleName(), WatcherScope.GAME);
+ }
+
+ public CorrosiveOozeCombatWatcher(final CorrosiveOozeCombatWatcher watcher) {
+ super(watcher);
+ for (Map.Entry> entry : watcher.oozeBlocksOrBlocked.entrySet()) {
+ HashSet newSet = new HashSet<>(entry.getValue());
+ oozeBlocksOrBlocked.put(entry.getKey(), newSet);
+ }
+ for (Map.Entry> entry : watcher.oozeEquipmentsToDestroy.entrySet()) {
+ HashSet newSet = new HashSet<>(entry.getValue());
+ oozeEquipmentsToDestroy.put(entry.getKey(), newSet);
+ }
+ }
+
+ @Override
+ public void watch(GameEvent event, Game game) {
+ if (event.getType() == GameEvent.EventType.BEGIN_COMBAT_STEP_PRE) {
+ this.oozeBlocksOrBlocked.clear();
+ }
+ if (event.getType() == GameEvent.EventType.BLOCKER_DECLARED) {
+ Permanent attacker = game.getPermanent(event.getTargetId());
+ Permanent blocker = game.getPermanent(event.getSourceId());
+ if (attacker != null && attacker.getName().equals("Corrosive Ooze")) { // To check for name is not working if Ooze is copied but name changed
+ if (blocker != null && hasAttachedEquipment(game, blocker)) {
+ MageObjectReference oozeMor = new MageObjectReference(attacker, game);
+ HashSet relatedCreatures = oozeBlocksOrBlocked.getOrDefault(oozeMor, new HashSet<>());
+ relatedCreatures.add(new MageObjectReference(event.getSourceId(), game));
+ oozeBlocksOrBlocked.put(oozeMor, relatedCreatures);
+ }
+ }
+ if (blocker != null && blocker.getName().equals("Corrosive Ooze")) {
+ if (attacker != null && hasAttachedEquipment(game, attacker)) {
+ MageObjectReference oozeMor = new MageObjectReference(blocker, game);
+ HashSet relatedCreatures = oozeBlocksOrBlocked.getOrDefault(oozeMor, new HashSet<>());
+ relatedCreatures.add(new MageObjectReference(event.getTargetId(), game));
+ oozeBlocksOrBlocked.put(oozeMor, relatedCreatures);
+ }
+ }
+ }
+
+ if (event.getType() == GameEvent.EventType.ZONE_CHANGE) {
+ if (((ZoneChangeEvent) event).getFromZone().equals(Zone.BATTLEFIELD)) {
+ if (game.getTurn() != null && TurnPhase.COMBAT.equals(game.getTurn().getPhaseType())) {
+ // Check if a previous blocked or blocked by creatures is leaving the battlefield
+ for (Map.Entry> entry : oozeBlocksOrBlocked.entrySet()) {
+ for (MageObjectReference mor : entry.getValue()) {
+ if (mor.refersTo(((ZoneChangeEvent) event).getTarget(), game)) {
+ // check for equipments and remember
+ for (UUID attachmentId : ((ZoneChangeEvent) event).getTarget().getAttachments()) {
+ Permanent attachment = game.getPermanent(attachmentId);
+ if (attachment != null && attachment.hasSubtype(SubType.EQUIPMENT, game)) {
+ HashSet toDestroy = oozeEquipmentsToDestroy.getOrDefault(entry.getKey(), new HashSet<>());
+ toDestroy.add(new MageObjectReference(attachment, game));
+ oozeEquipmentsToDestroy.put(entry.getKey(), toDestroy);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private boolean hasAttachedEquipment(Game game, Permanent permanent) {
+ for (UUID attachmentId : permanent.getAttachments()) {
+ Permanent attachment = game.getPermanent(attachmentId);
+ if (attachment != null && attachment.hasSubtype(SubType.EQUIPMENT, game)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public Set getRelatedBlockedCreatures(MageObjectReference ooze) {
+ Set relatedCreatures = this.oozeBlocksOrBlocked.get(ooze);
+ oozeBlocksOrBlocked.remove(ooze); // remove here to get no overlap with creatures leaving meanwhile
+ return relatedCreatures;
+ }
+
+ public Set getEquipmentsToDestroy(MageObjectReference ooze) {
+ Set equipmentsToDestroy = this.oozeEquipmentsToDestroy.get(ooze);
+ oozeEquipmentsToDestroy.remove(ooze); // remove here to get no overlap with creatures leaving meanwhile
+ return equipmentsToDestroy;
+ }
+
+ @Override
+ public CorrosiveOozeCombatWatcher copy() {
+ return new CorrosiveOozeCombatWatcher(this);
+ }
+
+}
diff --git a/Mage.Sets/src/mage/cards/c/Corrupt.java b/Mage.Sets/src/mage/cards/c/Corrupt.java
index 09817116f97..792a0a3756f 100644
--- a/Mage.Sets/src/mage/cards/c/Corrupt.java
+++ b/Mage.Sets/src/mage/cards/c/Corrupt.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Corrupt extends CardImpl {
+public final class Corrupt extends CardImpl {
public Corrupt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorruptCourtOfficial.java b/Mage.Sets/src/mage/cards/c/CorruptCourtOfficial.java
index 854dbaf2651..6f22f0e949c 100644
--- a/Mage.Sets/src/mage/cards/c/CorruptCourtOfficial.java
+++ b/Mage.Sets/src/mage/cards/c/CorruptCourtOfficial.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetOpponent;
*
* @author LoneFox
*/
-public class CorruptCourtOfficial extends CardImpl {
+public final class CorruptCourtOfficial extends CardImpl {
public CorruptCourtOfficial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorruptEunuchs.java b/Mage.Sets/src/mage/cards/c/CorruptEunuchs.java
index 615ec322bad..7e274086d87 100644
--- a/Mage.Sets/src/mage/cards/c/CorruptEunuchs.java
+++ b/Mage.Sets/src/mage/cards/c/CorruptEunuchs.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class CorruptEunuchs extends CardImpl {
+public final class CorruptEunuchs extends CardImpl {
public CorruptEunuchs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CorruptOfficial.java b/Mage.Sets/src/mage/cards/c/CorruptOfficial.java
index b9fa873cac6..78f644f76aa 100644
--- a/Mage.Sets/src/mage/cards/c/CorruptOfficial.java
+++ b/Mage.Sets/src/mage/cards/c/CorruptOfficial.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class CorruptOfficial extends CardImpl {
+public final class CorruptOfficial extends CardImpl {
public CorruptOfficial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorruptedConscience.java b/Mage.Sets/src/mage/cards/c/CorruptedConscience.java
index 1d410e2ab13..a54724d9276 100644
--- a/Mage.Sets/src/mage/cards/c/CorruptedConscience.java
+++ b/Mage.Sets/src/mage/cards/c/CorruptedConscience.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CorruptedConscience extends CardImpl {
+public final class CorruptedConscience extends CardImpl {
public CorruptedConscience(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CorruptedCrossroads.java b/Mage.Sets/src/mage/cards/c/CorruptedCrossroads.java
index 62f3804096c..4e586623d09 100644
--- a/Mage.Sets/src/mage/cards/c/CorruptedCrossroads.java
+++ b/Mage.Sets/src/mage/cards/c/CorruptedCrossroads.java
@@ -47,7 +47,7 @@ import mage.game.Game;
*
* @author fireshoes
*/
-public class CorruptedCrossroads extends CardImpl {
+public final class CorruptedCrossroads extends CardImpl {
public CorruptedCrossroads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CorruptedGrafstone.java b/Mage.Sets/src/mage/cards/c/CorruptedGrafstone.java
index ba041701219..4c7fa6f7adc 100644
--- a/Mage.Sets/src/mage/cards/c/CorruptedGrafstone.java
+++ b/Mage.Sets/src/mage/cards/c/CorruptedGrafstone.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class CorruptedGrafstone extends CardImpl {
+public final class CorruptedGrafstone extends CardImpl {
public CorruptedGrafstone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CorruptedHarvester.java b/Mage.Sets/src/mage/cards/c/CorruptedHarvester.java
index 608d22ee321..1253752ef7c 100644
--- a/Mage.Sets/src/mage/cards/c/CorruptedHarvester.java
+++ b/Mage.Sets/src/mage/cards/c/CorruptedHarvester.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class CorruptedHarvester extends CardImpl {
+public final class CorruptedHarvester extends CardImpl {
public CorruptedHarvester(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorruptedResolve.java b/Mage.Sets/src/mage/cards/c/CorruptedResolve.java
index 76967c7d63e..866e329c278 100644
--- a/Mage.Sets/src/mage/cards/c/CorruptedResolve.java
+++ b/Mage.Sets/src/mage/cards/c/CorruptedResolve.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class CorruptedResolve extends CardImpl {
+public final class CorruptedResolve extends CardImpl {
public CorruptedResolve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CorruptedRoots.java b/Mage.Sets/src/mage/cards/c/CorruptedRoots.java
index 506dbecc09c..ef8e2ce1412 100644
--- a/Mage.Sets/src/mage/cards/c/CorruptedRoots.java
+++ b/Mage.Sets/src/mage/cards/c/CorruptedRoots.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class CorruptedRoots extends CardImpl {
+public final class CorruptedRoots extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Forest or Plains");
diff --git a/Mage.Sets/src/mage/cards/c/CorruptedZendikon.java b/Mage.Sets/src/mage/cards/c/CorruptedZendikon.java
index e63ced72db0..7ad93231d29 100644
--- a/Mage.Sets/src/mage/cards/c/CorruptedZendikon.java
+++ b/Mage.Sets/src/mage/cards/c/CorruptedZendikon.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class CorruptedZendikon extends CardImpl {
+public final class CorruptedZendikon extends CardImpl {
public CorruptedZendikon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CorruptingLicid.java b/Mage.Sets/src/mage/cards/c/CorruptingLicid.java
index bb8093eceba..3896fa90281 100644
--- a/Mage.Sets/src/mage/cards/c/CorruptingLicid.java
+++ b/Mage.Sets/src/mage/cards/c/CorruptingLicid.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class CorruptingLicid extends CardImpl {
+public final class CorruptingLicid extends CardImpl {
public CorruptingLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CosisRavager.java b/Mage.Sets/src/mage/cards/c/CosisRavager.java
index 292f408067a..fbe6234e53c 100644
--- a/Mage.Sets/src/mage/cards/c/CosisRavager.java
+++ b/Mage.Sets/src/mage/cards/c/CosisRavager.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class CosisRavager extends CardImpl {
+public final class CosisRavager extends CardImpl {
public CosisRavager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CosisTrickster.java b/Mage.Sets/src/mage/cards/c/CosisTrickster.java
index 02c836231f8..9ebadfdd387 100644
--- a/Mage.Sets/src/mage/cards/c/CosisTrickster.java
+++ b/Mage.Sets/src/mage/cards/c/CosisTrickster.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author North
*/
-public class CosisTrickster extends CardImpl {
+public final class CosisTrickster extends CardImpl {
public CosisTrickster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CosmicHorror.java b/Mage.Sets/src/mage/cards/c/CosmicHorror.java
index 1d29fea9768..8567a009b91 100644
--- a/Mage.Sets/src/mage/cards/c/CosmicHorror.java
+++ b/Mage.Sets/src/mage/cards/c/CosmicHorror.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class CosmicHorror extends CardImpl {
+public final class CosmicHorror extends CardImpl {
public CosmicHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CosmicLarva.java b/Mage.Sets/src/mage/cards/c/CosmicLarva.java
index dd04b8fac8c..b76b7fb2ad7 100644
--- a/Mage.Sets/src/mage/cards/c/CosmicLarva.java
+++ b/Mage.Sets/src/mage/cards/c/CosmicLarva.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class CosmicLarva extends CardImpl {
+public final class CosmicLarva extends CardImpl {
public CosmicLarva(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CostlyPlunder.java b/Mage.Sets/src/mage/cards/c/CostlyPlunder.java
index 4a8cbd66251..de6b12c4492 100644
--- a/Mage.Sets/src/mage/cards/c/CostlyPlunder.java
+++ b/Mage.Sets/src/mage/cards/c/CostlyPlunder.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class CostlyPlunder extends CardImpl {
+public final class CostlyPlunder extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/c/CouncilGuardian.java b/Mage.Sets/src/mage/cards/c/CouncilGuardian.java
index f8fc87afc1f..7f5c296b5ea 100644
--- a/Mage.Sets/src/mage/cards/c/CouncilGuardian.java
+++ b/Mage.Sets/src/mage/cards/c/CouncilGuardian.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class CouncilGuardian extends CardImpl {
+public final class CouncilGuardian extends CardImpl {
public CouncilGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CouncilOfAdvisors.java b/Mage.Sets/src/mage/cards/c/CouncilOfAdvisors.java
index aa80e99f0bd..0fb66e9475c 100644
--- a/Mage.Sets/src/mage/cards/c/CouncilOfAdvisors.java
+++ b/Mage.Sets/src/mage/cards/c/CouncilOfAdvisors.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CouncilOfAdvisors extends CardImpl {
+public final class CouncilOfAdvisors extends CardImpl {
public CouncilOfAdvisors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CouncilOfTheAbsolute.java b/Mage.Sets/src/mage/cards/c/CouncilOfTheAbsolute.java
index f18b0d4a40b..d03d8420805 100644
--- a/Mage.Sets/src/mage/cards/c/CouncilOfTheAbsolute.java
+++ b/Mage.Sets/src/mage/cards/c/CouncilOfTheAbsolute.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class CouncilOfTheAbsolute extends CardImpl {
+public final class CouncilOfTheAbsolute extends CardImpl {
public CouncilOfTheAbsolute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CouncilsJudgment.java b/Mage.Sets/src/mage/cards/c/CouncilsJudgment.java
index 2972690b4c7..df6ecb69090 100644
--- a/Mage.Sets/src/mage/cards/c/CouncilsJudgment.java
+++ b/Mage.Sets/src/mage/cards/c/CouncilsJudgment.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author emerald000
*/
-public class CouncilsJudgment extends CardImpl {
+public final class CouncilsJudgment extends CardImpl {
public CouncilsJudgment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CounselOfTheSoratami.java b/Mage.Sets/src/mage/cards/c/CounselOfTheSoratami.java
index 09799ca6155..3e2589e4fdf 100644
--- a/Mage.Sets/src/mage/cards/c/CounselOfTheSoratami.java
+++ b/Mage.Sets/src/mage/cards/c/CounselOfTheSoratami.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class CounselOfTheSoratami extends CardImpl {
+public final class CounselOfTheSoratami extends CardImpl {
public CounselOfTheSoratami (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Counterbalance.java b/Mage.Sets/src/mage/cards/c/Counterbalance.java
index 0a83c7b39d9..7eaffad04e7 100644
--- a/Mage.Sets/src/mage/cards/c/Counterbalance.java
+++ b/Mage.Sets/src/mage/cards/c/Counterbalance.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class Counterbalance extends CardImpl {
+public final class Counterbalance extends CardImpl {
public Counterbalance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Counterbore.java b/Mage.Sets/src/mage/cards/c/Counterbore.java
index fad6984c8ec..9f1975486bc 100644
--- a/Mage.Sets/src/mage/cards/c/Counterbore.java
+++ b/Mage.Sets/src/mage/cards/c/Counterbore.java
@@ -38,7 +38,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Counterbore extends CardImpl {
+public final class Counterbore extends CardImpl {
public Counterbore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Counterflux.java b/Mage.Sets/src/mage/cards/c/Counterflux.java
index 167dac3fbbb..0c5a2d046bc 100644
--- a/Mage.Sets/src/mage/cards/c/Counterflux.java
+++ b/Mage.Sets/src/mage/cards/c/Counterflux.java
@@ -56,7 +56,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Counterflux extends CardImpl {
+public final class Counterflux extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell you don't control");
diff --git a/Mage.Sets/src/mage/cards/c/Counterintelligence.java b/Mage.Sets/src/mage/cards/c/Counterintelligence.java
index 7f5d6fc9eea..f42c61979a2 100644
--- a/Mage.Sets/src/mage/cards/c/Counterintelligence.java
+++ b/Mage.Sets/src/mage/cards/c/Counterintelligence.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Counterintelligence extends CardImpl {
+public final class Counterintelligence extends CardImpl {
public Counterintelligence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Counterlash.java b/Mage.Sets/src/mage/cards/c/Counterlash.java
index b1ad8d92250..22f54e3a5ac 100644
--- a/Mage.Sets/src/mage/cards/c/Counterlash.java
+++ b/Mage.Sets/src/mage/cards/c/Counterlash.java
@@ -27,7 +27,11 @@
*/
package mage.cards.c;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
@@ -45,19 +49,14 @@ import mage.players.Player;
import mage.target.TargetSpell;
import mage.target.common.TargetCardInHand;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
/**
*
* @author BetaSteward
*/
-public class Counterlash extends CardImpl {
+public final class Counterlash extends CardImpl {
public Counterlash(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}{U}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{U}{U}");
// Counter target spell. You may cast a nonland card in your hand that shares a card type with that spell without paying its mana cost.
this.getSpellAbility().addTarget(new TargetSpell());
@@ -99,7 +98,7 @@ class CounterlashEffect extends OneShotEffect {
if (player.chooseUse(Outcome.PutCardInPlay, "Cast a nonland card in your hand that shares a card type with that spell without paying its mana cost?", source, game)) {
FilterCard filter = new FilterCard();
List> types = new ArrayList<>();
- for (CardType type: stackObject.getCardType()) {
+ for (CardType type : stackObject.getCardType()) {
if (type != CardType.LAND) {
types.add(new CardTypePredicate(type));
}
@@ -109,7 +108,7 @@ class CounterlashEffect extends OneShotEffect {
if (player.choose(Outcome.PutCardInPlay, target, source.getSourceId(), game)) {
Card card = player.getHand().get(target.getFirstTarget(), game);
if (card != null) {
- player.cast(card.getSpellAbility(), game, true);
+ player.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/c/Countermand.java b/Mage.Sets/src/mage/cards/c/Countermand.java
index a208421b7f3..40e68c38a5f 100644
--- a/Mage.Sets/src/mage/cards/c/Countermand.java
+++ b/Mage.Sets/src/mage/cards/c/Countermand.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Countermand extends CardImpl {
+public final class Countermand extends CardImpl {
public Countermand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Counterspell.java b/Mage.Sets/src/mage/cards/c/Counterspell.java
index 2afb34bdce0..f2540b9ac77 100644
--- a/Mage.Sets/src/mage/cards/c/Counterspell.java
+++ b/Mage.Sets/src/mage/cards/c/Counterspell.java
@@ -38,7 +38,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class Counterspell extends CardImpl {
+public final class Counterspell extends CardImpl {
public Counterspell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Countersquall.java b/Mage.Sets/src/mage/cards/c/Countersquall.java
index d767ac2ad2d..668b70378cb 100644
--- a/Mage.Sets/src/mage/cards/c/Countersquall.java
+++ b/Mage.Sets/src/mage/cards/c/Countersquall.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class Countersquall extends CardImpl {
+public final class Countersquall extends CardImpl {
private static final FilterSpell filter = new FilterSpell("noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/c/CountervailingWinds.java b/Mage.Sets/src/mage/cards/c/CountervailingWinds.java
index 2f1b6717a7c..325a2df277c 100644
--- a/Mage.Sets/src/mage/cards/c/CountervailingWinds.java
+++ b/Mage.Sets/src/mage/cards/c/CountervailingWinds.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author emerald000
*/
-public class CountervailingWinds extends CardImpl {
+public final class CountervailingWinds extends CardImpl {
public CountervailingWinds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CountlessGearsRenegade.java b/Mage.Sets/src/mage/cards/c/CountlessGearsRenegade.java
index f2b0835c8d8..2844b81ecbe 100644
--- a/Mage.Sets/src/mage/cards/c/CountlessGearsRenegade.java
+++ b/Mage.Sets/src/mage/cards/c/CountlessGearsRenegade.java
@@ -45,7 +45,7 @@ import mage.watchers.common.RevoltWatcher;
/**
* @author JRHerlehy
*/
-public class CountlessGearsRenegade extends CardImpl {
+public final class CountlessGearsRenegade extends CardImpl {
public CountlessGearsRenegade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CountrysideCrusher.java b/Mage.Sets/src/mage/cards/c/CountrysideCrusher.java
index b526c7e1c75..043d3b7275b 100644
--- a/Mage.Sets/src/mage/cards/c/CountrysideCrusher.java
+++ b/Mage.Sets/src/mage/cards/c/CountrysideCrusher.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class CountrysideCrusher extends CardImpl {
+public final class CountrysideCrusher extends CardImpl {
public CountrysideCrusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CourageousOutrider.java b/Mage.Sets/src/mage/cards/c/CourageousOutrider.java
index 0234afeafa7..60391d3218d 100644
--- a/Mage.Sets/src/mage/cards/c/CourageousOutrider.java
+++ b/Mage.Sets/src/mage/cards/c/CourageousOutrider.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class CourageousOutrider extends CardImpl {
+public final class CourageousOutrider extends CardImpl {
private static final FilterCard filter = new FilterCard("a Human card");
diff --git a/Mage.Sets/src/mage/cards/c/CourierGriffin.java b/Mage.Sets/src/mage/cards/c/CourierGriffin.java
index 64990241e09..1e0f6b15180 100644
--- a/Mage.Sets/src/mage/cards/c/CourierGriffin.java
+++ b/Mage.Sets/src/mage/cards/c/CourierGriffin.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CourierGriffin extends CardImpl {
+public final class CourierGriffin extends CardImpl {
public CourierGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CourierHawk.java b/Mage.Sets/src/mage/cards/c/CourierHawk.java
index c880685b361..6e8bfa14881 100644
--- a/Mage.Sets/src/mage/cards/c/CourierHawk.java
+++ b/Mage.Sets/src/mage/cards/c/CourierHawk.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CourierHawk extends CardImpl {
+public final class CourierHawk extends CardImpl {
public CourierHawk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CouriersCapsule.java b/Mage.Sets/src/mage/cards/c/CouriersCapsule.java
index 83d71ae5c5d..780aef76c35 100644
--- a/Mage.Sets/src/mage/cards/c/CouriersCapsule.java
+++ b/Mage.Sets/src/mage/cards/c/CouriersCapsule.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class CouriersCapsule extends CardImpl {
+public final class CouriersCapsule extends CardImpl {
public CouriersCapsule (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CourserOfKruphix.java b/Mage.Sets/src/mage/cards/c/CourserOfKruphix.java
index a93a2974dd3..1f13e1f5514 100644
--- a/Mage.Sets/src/mage/cards/c/CourserOfKruphix.java
+++ b/Mage.Sets/src/mage/cards/c/CourserOfKruphix.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author LevelX2
*/
-public class CourserOfKruphix extends CardImpl {
+public final class CourserOfKruphix extends CardImpl {
public CourserOfKruphix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CoursersAccord.java b/Mage.Sets/src/mage/cards/c/CoursersAccord.java
index 22d577f334d..56b68bb53fd 100644
--- a/Mage.Sets/src/mage/cards/c/CoursersAccord.java
+++ b/Mage.Sets/src/mage/cards/c/CoursersAccord.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.CentaurToken;
*
* @author LevleX2
*/
-public class CoursersAccord extends CardImpl {
+public final class CoursersAccord extends CardImpl {
public CoursersAccord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CourtArchers.java b/Mage.Sets/src/mage/cards/c/CourtArchers.java
index 0622e7f7aed..f96c0337530 100644
--- a/Mage.Sets/src/mage/cards/c/CourtArchers.java
+++ b/Mage.Sets/src/mage/cards/c/CourtArchers.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CourtArchers extends CardImpl {
+public final class CourtArchers extends CardImpl {
public CourtArchers (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CourtHomunculus.java b/Mage.Sets/src/mage/cards/c/CourtHomunculus.java
index fb36c2130cd..2add5ee6942 100644
--- a/Mage.Sets/src/mage/cards/c/CourtHomunculus.java
+++ b/Mage.Sets/src/mage/cards/c/CourtHomunculus.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class CourtHomunculus extends CardImpl {
+public final class CourtHomunculus extends CardImpl {
public CourtHomunculus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CourtHussar.java b/Mage.Sets/src/mage/cards/c/CourtHussar.java
index 6a768012b10..8ad7f0a241e 100644
--- a/Mage.Sets/src/mage/cards/c/CourtHussar.java
+++ b/Mage.Sets/src/mage/cards/c/CourtHussar.java
@@ -48,7 +48,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author LevelX2
*/
-public class CourtHussar extends CardImpl {
+public final class CourtHussar extends CardImpl {
public CourtHussar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CourtStreetDenizen.java b/Mage.Sets/src/mage/cards/c/CourtStreetDenizen.java
index e05868515a7..c97bbe4414b 100644
--- a/Mage.Sets/src/mage/cards/c/CourtStreetDenizen.java
+++ b/Mage.Sets/src/mage/cards/c/CourtStreetDenizen.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CourtStreetDenizen extends CardImpl {
+public final class CourtStreetDenizen extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another white creature");
private static final FilterCreaturePermanent filterOpponentCreature = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/c/CourtlyProvocateur.java b/Mage.Sets/src/mage/cards/c/CourtlyProvocateur.java
index dd5a5b1b6c1..f8104119848 100644
--- a/Mage.Sets/src/mage/cards/c/CourtlyProvocateur.java
+++ b/Mage.Sets/src/mage/cards/c/CourtlyProvocateur.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author magenoxx_at_gmail.com
*/
-public class CourtlyProvocateur extends CardImpl {
+public final class CourtlyProvocateur extends CardImpl {
public CourtlyProvocateur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CovenantOfBlood.java b/Mage.Sets/src/mage/cards/c/CovenantOfBlood.java
index 32fd28ac903..f6808558b73 100644
--- a/Mage.Sets/src/mage/cards/c/CovenantOfBlood.java
+++ b/Mage.Sets/src/mage/cards/c/CovenantOfBlood.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class CovenantOfBlood extends CardImpl {
+public final class CovenantOfBlood extends CardImpl {
public CovenantOfBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CovenantOfMinds.java b/Mage.Sets/src/mage/cards/c/CovenantOfMinds.java
index 0b77aecf83d..c3938a9063f 100644
--- a/Mage.Sets/src/mage/cards/c/CovenantOfMinds.java
+++ b/Mage.Sets/src/mage/cards/c/CovenantOfMinds.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author North
*/
-public class CovenantOfMinds extends CardImpl {
+public final class CovenantOfMinds extends CardImpl {
public CovenantOfMinds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CoverOfDarkness.java b/Mage.Sets/src/mage/cards/c/CoverOfDarkness.java
index 0132fe64943..e840ddab156 100644
--- a/Mage.Sets/src/mage/cards/c/CoverOfDarkness.java
+++ b/Mage.Sets/src/mage/cards/c/CoverOfDarkness.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class CoverOfDarkness extends CardImpl {
+public final class CoverOfDarkness extends CardImpl {
public CoverOfDarkness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CovertOperative.java b/Mage.Sets/src/mage/cards/c/CovertOperative.java
index c5089c4ef29..9de0e552daf 100644
--- a/Mage.Sets/src/mage/cards/c/CovertOperative.java
+++ b/Mage.Sets/src/mage/cards/c/CovertOperative.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CovertOperative extends CardImpl {
+public final class CovertOperative extends CardImpl {
public CovertOperative(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CovetedPeacock.java b/Mage.Sets/src/mage/cards/c/CovetedPeacock.java
index 2ed2d8e3ce5..fabcabde94b 100644
--- a/Mage.Sets/src/mage/cards/c/CovetedPeacock.java
+++ b/Mage.Sets/src/mage/cards/c/CovetedPeacock.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class CovetedPeacock extends CardImpl {
+public final class CovetedPeacock extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/c/CovetousDragon.java b/Mage.Sets/src/mage/cards/c/CovetousDragon.java
index 537b965c6ab..73434b58f65 100644
--- a/Mage.Sets/src/mage/cards/c/CovetousDragon.java
+++ b/Mage.Sets/src/mage/cards/c/CovetousDragon.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author fireshoes
*/
-public class CovetousDragon extends CardImpl {
+public final class CovetousDragon extends CardImpl {
public CovetousDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Cowardice.java b/Mage.Sets/src/mage/cards/c/Cowardice.java
index 7b789f93ecf..ee9a942d734 100644
--- a/Mage.Sets/src/mage/cards/c/Cowardice.java
+++ b/Mage.Sets/src/mage/cards/c/Cowardice.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author dustinconrad
*/
-public class Cowardice extends CardImpl {
+public final class Cowardice extends CardImpl {
public Cowardice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CowedByWisdom.java b/Mage.Sets/src/mage/cards/c/CowedByWisdom.java
index 9c6a1868b7d..50f3d530014 100644
--- a/Mage.Sets/src/mage/cards/c/CowedByWisdom.java
+++ b/Mage.Sets/src/mage/cards/c/CowedByWisdom.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CowedByWisdom extends CardImpl {
+public final class CowedByWisdom extends CardImpl {
public CowedByWisdom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CowerInFear.java b/Mage.Sets/src/mage/cards/c/CowerInFear.java
index 247c96d0adf..270252a5193 100644
--- a/Mage.Sets/src/mage/cards/c/CowerInFear.java
+++ b/Mage.Sets/src/mage/cards/c/CowerInFear.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class CowerInFear extends CardImpl {
+public final class CowerInFear extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/c/CowlProwler.java b/Mage.Sets/src/mage/cards/c/CowlProwler.java
index 40c00c413cb..af8f7164185 100644
--- a/Mage.Sets/src/mage/cards/c/CowlProwler.java
+++ b/Mage.Sets/src/mage/cards/c/CowlProwler.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CowlProwler extends CardImpl {
+public final class CowlProwler extends CardImpl {
public CowlProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrabUmbra.java b/Mage.Sets/src/mage/cards/c/CrabUmbra.java
index a182da6693d..48e7511049c 100644
--- a/Mage.Sets/src/mage/cards/c/CrabUmbra.java
+++ b/Mage.Sets/src/mage/cards/c/CrabUmbra.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CrabUmbra extends CardImpl {
+public final class CrabUmbra extends CardImpl {
public CrabUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CrabappleCohort.java b/Mage.Sets/src/mage/cards/c/CrabappleCohort.java
index e70187d7ea8..dcb9e5f41a2 100644
--- a/Mage.Sets/src/mage/cards/c/CrabappleCohort.java
+++ b/Mage.Sets/src/mage/cards/c/CrabappleCohort.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author North
*/
-public class CrabappleCohort extends CardImpl {
+public final class CrabappleCohort extends CardImpl {
private static final String rule = "{this} gets +1/+1 as long as you control another green creature";
diff --git a/Mage.Sets/src/mage/cards/c/CrackTheEarth.java b/Mage.Sets/src/mage/cards/c/CrackTheEarth.java
index f82c61313da..7a3a5f0e5d8 100644
--- a/Mage.Sets/src/mage/cards/c/CrackTheEarth.java
+++ b/Mage.Sets/src/mage/cards/c/CrackTheEarth.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author LevelX
*/
-public class CrackTheEarth extends CardImpl {
+public final class CrackTheEarth extends CardImpl {
public CrackTheEarth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Crackdown.java b/Mage.Sets/src/mage/cards/c/Crackdown.java
index c8b145435ad..31c2c02d5be 100644
--- a/Mage.Sets/src/mage/cards/c/Crackdown.java
+++ b/Mage.Sets/src/mage/cards/c/Crackdown.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author fireshoes
*/
-public class Crackdown extends CardImpl {
+public final class Crackdown extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonwhite creatures with power 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/c/CrackdownConstruct.java b/Mage.Sets/src/mage/cards/c/CrackdownConstruct.java
index 6341a23b516..4566e1d18c6 100644
--- a/Mage.Sets/src/mage/cards/c/CrackdownConstruct.java
+++ b/Mage.Sets/src/mage/cards/c/CrackdownConstruct.java
@@ -47,7 +47,7 @@ import mage.game.stack.StackAbility;
*
* @author spjspj
*/
-public class CrackdownConstruct extends CardImpl {
+public final class CrackdownConstruct extends CardImpl {
public CrackdownConstruct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/c/Crackleburr.java b/Mage.Sets/src/mage/cards/c/Crackleburr.java
index 0a7dac031ba..93a99d1c3fe 100644
--- a/Mage.Sets/src/mage/cards/c/Crackleburr.java
+++ b/Mage.Sets/src/mage/cards/c/Crackleburr.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*/
-public class Crackleburr extends CardImpl {
+public final class Crackleburr extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("two untapped red creatures you control");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("two tapped blue creatures you control");
diff --git a/Mage.Sets/src/mage/cards/c/CracklingClub.java b/Mage.Sets/src/mage/cards/c/CracklingClub.java
index aed57df283c..e69bf6563d1 100644
--- a/Mage.Sets/src/mage/cards/c/CracklingClub.java
+++ b/Mage.Sets/src/mage/cards/c/CracklingClub.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class CracklingClub extends CardImpl {
+public final class CracklingClub extends CardImpl {
public CracklingClub(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CracklingDoom.java b/Mage.Sets/src/mage/cards/c/CracklingDoom.java
index 2b0f5b81874..54d775f9f6e 100644
--- a/Mage.Sets/src/mage/cards/c/CracklingDoom.java
+++ b/Mage.Sets/src/mage/cards/c/CracklingDoom.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class CracklingDoom extends CardImpl {
+public final class CracklingDoom extends CardImpl {
public CracklingDoom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CracklingPerimeter.java b/Mage.Sets/src/mage/cards/c/CracklingPerimeter.java
index fe484aaf523..91939869269 100644
--- a/Mage.Sets/src/mage/cards/c/CracklingPerimeter.java
+++ b/Mage.Sets/src/mage/cards/c/CracklingPerimeter.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class CracklingPerimeter extends CardImpl {
+public final class CracklingPerimeter extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Gate you control");
diff --git a/Mage.Sets/src/mage/cards/c/CracklingTriton.java b/Mage.Sets/src/mage/cards/c/CracklingTriton.java
index c1a5c3f04c8..93bb6fb9353 100644
--- a/Mage.Sets/src/mage/cards/c/CracklingTriton.java
+++ b/Mage.Sets/src/mage/cards/c/CracklingTriton.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class CracklingTriton extends CardImpl {
+public final class CracklingTriton extends CardImpl {
public CracklingTriton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CradleGuard.java b/Mage.Sets/src/mage/cards/c/CradleGuard.java
index 1032befa2e6..801a65c3ef7 100644
--- a/Mage.Sets/src/mage/cards/c/CradleGuard.java
+++ b/Mage.Sets/src/mage/cards/c/CradleGuard.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class CradleGuard extends CardImpl {
+public final class CradleGuard extends CardImpl {
public CradleGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CradleOfTheAccursed.java b/Mage.Sets/src/mage/cards/c/CradleOfTheAccursed.java
index 35bca5b1c28..093c2807e72 100644
--- a/Mage.Sets/src/mage/cards/c/CradleOfTheAccursed.java
+++ b/Mage.Sets/src/mage/cards/c/CradleOfTheAccursed.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author spjspj
*/
-public class CradleOfTheAccursed extends CardImpl {
+public final class CradleOfTheAccursed extends CardImpl {
public CradleOfTheAccursed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/c/CradleOfVitality.java b/Mage.Sets/src/mage/cards/c/CradleOfVitality.java
index 2343978634a..c69bba1308a 100644
--- a/Mage.Sets/src/mage/cards/c/CradleOfVitality.java
+++ b/Mage.Sets/src/mage/cards/c/CradleOfVitality.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Alvin
*/
-public class CradleOfVitality extends CardImpl {
+public final class CradleOfVitality extends CardImpl {
public CradleOfVitality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CradleToGrave.java b/Mage.Sets/src/mage/cards/c/CradleToGrave.java
index 494731992d4..0d6229f6f97 100644
--- a/Mage.Sets/src/mage/cards/c/CradleToGrave.java
+++ b/Mage.Sets/src/mage/cards/c/CradleToGrave.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author bieno002
*/
-public class CradleToGrave extends CardImpl {
+public final class CradleToGrave extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature that entered the battlefield this turn");
diff --git a/Mage.Sets/src/mage/cards/c/CraftyCutpurse.java b/Mage.Sets/src/mage/cards/c/CraftyCutpurse.java
index a65d349b587..5c09bfaedfd 100644
--- a/Mage.Sets/src/mage/cards/c/CraftyCutpurse.java
+++ b/Mage.Sets/src/mage/cards/c/CraftyCutpurse.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class CraftyCutpurse extends CardImpl {
+public final class CraftyCutpurse extends CardImpl {
public CraftyCutpurse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CraftyPathmage.java b/Mage.Sets/src/mage/cards/c/CraftyPathmage.java
index 7389fbe7de9..46ef3a62700 100644
--- a/Mage.Sets/src/mage/cards/c/CraftyPathmage.java
+++ b/Mage.Sets/src/mage/cards/c/CraftyPathmage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CraftyPathmage extends CardImpl {
+public final class CraftyPathmage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/c/CragPuca.java b/Mage.Sets/src/mage/cards/c/CragPuca.java
index d659f13be38..dfc64a2e059 100644
--- a/Mage.Sets/src/mage/cards/c/CragPuca.java
+++ b/Mage.Sets/src/mage/cards/c/CragPuca.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
* @author jeffwadsworth
*/
-public class CragPuca extends CardImpl {
+public final class CragPuca extends CardImpl {
public CragPuca(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U/R}{U/R}{U/R}");
diff --git a/Mage.Sets/src/mage/cards/c/CragSaurian.java b/Mage.Sets/src/mage/cards/c/CragSaurian.java
index 4f5ba77bde2..d4034ee90dd 100644
--- a/Mage.Sets/src/mage/cards/c/CragSaurian.java
+++ b/Mage.Sets/src/mage/cards/c/CragSaurian.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author wetterlicht & L_J
*/
-public class CragSaurian extends CardImpl {
+public final class CragSaurian extends CardImpl {
public CragSaurian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CragganwickCremator.java b/Mage.Sets/src/mage/cards/c/CragganwickCremator.java
index 08de7ad1008..5f6473c1fdd 100644
--- a/Mage.Sets/src/mage/cards/c/CragganwickCremator.java
+++ b/Mage.Sets/src/mage/cards/c/CragganwickCremator.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class CragganwickCremator extends CardImpl {
+public final class CragganwickCremator extends CardImpl {
public CragganwickCremator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CranialArchive.java b/Mage.Sets/src/mage/cards/c/CranialArchive.java
index 452a5d52ef2..4179d95c8b5 100644
--- a/Mage.Sets/src/mage/cards/c/CranialArchive.java
+++ b/Mage.Sets/src/mage/cards/c/CranialArchive.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class CranialArchive extends CardImpl {
+public final class CranialArchive extends CardImpl {
public CranialArchive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CranialExtraction.java b/Mage.Sets/src/mage/cards/c/CranialExtraction.java
index c373a03bf13..11b3d235eba 100644
--- a/Mage.Sets/src/mage/cards/c/CranialExtraction.java
+++ b/Mage.Sets/src/mage/cards/c/CranialExtraction.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CranialExtraction extends CardImpl {
+public final class CranialExtraction extends CardImpl {
public CranialExtraction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CranialPlating.java b/Mage.Sets/src/mage/cards/c/CranialPlating.java
index fc666fda568..29bb4612863 100644
--- a/Mage.Sets/src/mage/cards/c/CranialPlating.java
+++ b/Mage.Sets/src/mage/cards/c/CranialPlating.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class CranialPlating extends CardImpl {
+public final class CranialPlating extends CardImpl {
private static final FilterControlledPermanent filterCounted = new FilterControlledPermanent("artifacts you control");
static {
diff --git a/Mage.Sets/src/mage/cards/c/Crash.java b/Mage.Sets/src/mage/cards/c/Crash.java
index ff08e789c89..1c65bf15a7c 100644
--- a/Mage.Sets/src/mage/cards/c/Crash.java
+++ b/Mage.Sets/src/mage/cards/c/Crash.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author dustinconrad
*/
-public class Crash extends CardImpl {
+public final class Crash extends CardImpl {
private static final FilterPermanent effectFilter = new FilterPermanent("artifact");
private static final FilterControlledPermanent alternativeCostFilter = new FilterControlledLandPermanent("a Mountain");
diff --git a/Mage.Sets/src/mage/cards/c/CrashLanding.java b/Mage.Sets/src/mage/cards/c/CrashLanding.java
index 43f0a8c9243..114eafd1f7f 100644
--- a/Mage.Sets/src/mage/cards/c/CrashLanding.java
+++ b/Mage.Sets/src/mage/cards/c/CrashLanding.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class CrashLanding extends CardImpl {
+public final class CrashLanding extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forests you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/c/CrashOfRhinos.java b/Mage.Sets/src/mage/cards/c/CrashOfRhinos.java
index 576f6fdc264..081fc2c9276 100644
--- a/Mage.Sets/src/mage/cards/c/CrashOfRhinos.java
+++ b/Mage.Sets/src/mage/cards/c/CrashOfRhinos.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CrashOfRhinos extends CardImpl {
+public final class CrashOfRhinos extends CardImpl {
public CrashOfRhinos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrashTheRamparts.java b/Mage.Sets/src/mage/cards/c/CrashTheRamparts.java
index c199a4a077b..84ddc6e960a 100644
--- a/Mage.Sets/src/mage/cards/c/CrashTheRamparts.java
+++ b/Mage.Sets/src/mage/cards/c/CrashTheRamparts.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class CrashTheRamparts extends CardImpl {
+public final class CrashTheRamparts extends CardImpl {
public CrashTheRamparts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrashThrough.java b/Mage.Sets/src/mage/cards/c/CrashThrough.java
index 3f3ab4d540b..29b657a406a 100644
--- a/Mage.Sets/src/mage/cards/c/CrashThrough.java
+++ b/Mage.Sets/src/mage/cards/c/CrashThrough.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author ciaccona007
*/
-public class CrashThrough extends CardImpl {
+public final class CrashThrough extends CardImpl {
public CrashThrough(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrashingBoars.java b/Mage.Sets/src/mage/cards/c/CrashingBoars.java
index 2d2de5f4f85..6397fd8e395 100644
--- a/Mage.Sets/src/mage/cards/c/CrashingBoars.java
+++ b/Mage.Sets/src/mage/cards/c/CrashingBoars.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class CrashingBoars extends CardImpl {
+public final class CrashingBoars extends CardImpl {
public CrashingBoars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrashingCentaur.java b/Mage.Sets/src/mage/cards/c/CrashingCentaur.java
index 70ae1601c19..5f9bb3ed248 100644
--- a/Mage.Sets/src/mage/cards/c/CrashingCentaur.java
+++ b/Mage.Sets/src/mage/cards/c/CrashingCentaur.java
@@ -53,7 +53,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class CrashingCentaur extends CardImpl {
+public final class CrashingCentaur extends CardImpl {
public CrashingCentaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrashingTide.java b/Mage.Sets/src/mage/cards/c/CrashingTide.java
index f4cb1d1fd55..ae57faa9e4f 100644
--- a/Mage.Sets/src/mage/cards/c/CrashingTide.java
+++ b/Mage.Sets/src/mage/cards/c/CrashingTide.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CrashingTide extends CardImpl {
+public final class CrashingTide extends CardImpl {
public CrashingTide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CraterElemental.java b/Mage.Sets/src/mage/cards/c/CraterElemental.java
index ce2863c02a0..16544702850 100644
--- a/Mage.Sets/src/mage/cards/c/CraterElemental.java
+++ b/Mage.Sets/src/mage/cards/c/CraterElemental.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CraterElemental extends CardImpl {
+public final class CraterElemental extends CardImpl {
public CraterElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CraterHellion.java b/Mage.Sets/src/mage/cards/c/CraterHellion.java
index bff7863db0a..16774fba133 100644
--- a/Mage.Sets/src/mage/cards/c/CraterHellion.java
+++ b/Mage.Sets/src/mage/cards/c/CraterHellion.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author Backfir3
*/
-public class CraterHellion extends CardImpl {
+public final class CraterHellion extends CardImpl {
public CraterHellion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CraterhoofBehemoth.java b/Mage.Sets/src/mage/cards/c/CraterhoofBehemoth.java
index c9ab595eea3..70600e49547 100644
--- a/Mage.Sets/src/mage/cards/c/CraterhoofBehemoth.java
+++ b/Mage.Sets/src/mage/cards/c/CraterhoofBehemoth.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class CraterhoofBehemoth extends CardImpl {
+public final class CraterhoofBehemoth extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/c/Craterize.java b/Mage.Sets/src/mage/cards/c/Craterize.java
index 48d330d0dc7..c0d65aadc62 100644
--- a/Mage.Sets/src/mage/cards/c/Craterize.java
+++ b/Mage.Sets/src/mage/cards/c/Craterize.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author North
*/
-public class Craterize extends CardImpl {
+public final class Craterize extends CardImpl {
public Craterize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CratersClaws.java b/Mage.Sets/src/mage/cards/c/CratersClaws.java
index 97ae8f450f4..0e598515043 100644
--- a/Mage.Sets/src/mage/cards/c/CratersClaws.java
+++ b/Mage.Sets/src/mage/cards/c/CratersClaws.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class CratersClaws extends CardImpl {
+public final class CratersClaws extends CardImpl {
public CratersClaws(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CravenGiant.java b/Mage.Sets/src/mage/cards/c/CravenGiant.java
index 9e2463c0b79..57086c3242b 100644
--- a/Mage.Sets/src/mage/cards/c/CravenGiant.java
+++ b/Mage.Sets/src/mage/cards/c/CravenGiant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CravenGiant extends CardImpl {
+public final class CravenGiant extends CardImpl {
public CravenGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CravenKnight.java b/Mage.Sets/src/mage/cards/c/CravenKnight.java
index 86add2ea66f..aabb63c3201 100644
--- a/Mage.Sets/src/mage/cards/c/CravenKnight.java
+++ b/Mage.Sets/src/mage/cards/c/CravenKnight.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CravenKnight extends CardImpl {
+public final class CravenKnight extends CardImpl {
public CravenKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CrawGiant.java b/Mage.Sets/src/mage/cards/c/CrawGiant.java
index f0b57c9502f..b66176e3110 100644
--- a/Mage.Sets/src/mage/cards/c/CrawGiant.java
+++ b/Mage.Sets/src/mage/cards/c/CrawGiant.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CrawGiant extends CardImpl {
+public final class CrawGiant extends CardImpl {
public CrawGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrawWurm.java b/Mage.Sets/src/mage/cards/c/CrawWurm.java
index 4c213a02cba..f0341e60bd6 100644
--- a/Mage.Sets/src/mage/cards/c/CrawWurm.java
+++ b/Mage.Sets/src/mage/cards/c/CrawWurm.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CrawWurm extends CardImpl {
+public final class CrawWurm extends CardImpl {
public CrawWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrawlingFilth.java b/Mage.Sets/src/mage/cards/c/CrawlingFilth.java
index f72c98f9c6d..82791e9d668 100644
--- a/Mage.Sets/src/mage/cards/c/CrawlingFilth.java
+++ b/Mage.Sets/src/mage/cards/c/CrawlingFilth.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CrawlingFilth extends CardImpl {
+public final class CrawlingFilth extends CardImpl {
public CrawlingFilth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CrawlingSensation.java b/Mage.Sets/src/mage/cards/c/CrawlingSensation.java
index 68ba1aa3db2..327bc3ea899 100644
--- a/Mage.Sets/src/mage/cards/c/CrawlingSensation.java
+++ b/Mage.Sets/src/mage/cards/c/CrawlingSensation.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.InsectToken;
*
* @author LevelX2
*/
-public class CrawlingSensation extends CardImpl {
+public final class CrawlingSensation extends CardImpl {
public CrawlingSensation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Crawlspace.java b/Mage.Sets/src/mage/cards/c/Crawlspace.java
index 30222124c25..7a3b3c563d8 100644
--- a/Mage.Sets/src/mage/cards/c/Crawlspace.java
+++ b/Mage.Sets/src/mage/cards/c/Crawlspace.java
@@ -41,7 +41,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class Crawlspace extends CardImpl {
+public final class Crawlspace extends CardImpl {
public Crawlspace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CrazedArmodon.java b/Mage.Sets/src/mage/cards/c/CrazedArmodon.java
index 4f346ed8467..e740369e7f5 100644
--- a/Mage.Sets/src/mage/cards/c/CrazedArmodon.java
+++ b/Mage.Sets/src/mage/cards/c/CrazedArmodon.java
@@ -53,7 +53,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes
*/
-public class CrazedArmodon extends CardImpl {
+public final class CrazedArmodon extends CardImpl {
public CrazedArmodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrazedFirecat.java b/Mage.Sets/src/mage/cards/c/CrazedFirecat.java
index 048e0f10b5c..355d4c4dbee 100644
--- a/Mage.Sets/src/mage/cards/c/CrazedFirecat.java
+++ b/Mage.Sets/src/mage/cards/c/CrazedFirecat.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class CrazedFirecat extends CardImpl {
+public final class CrazedFirecat extends CardImpl {
public CrazedFirecat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrazedGoblin.java b/Mage.Sets/src/mage/cards/c/CrazedGoblin.java
index b077b979a49..d1acd1adee4 100644
--- a/Mage.Sets/src/mage/cards/c/CrazedGoblin.java
+++ b/Mage.Sets/src/mage/cards/c/CrazedGoblin.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class CrazedGoblin extends CardImpl {
+public final class CrazedGoblin extends CardImpl {
public CrazedGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrazedSkirge.java b/Mage.Sets/src/mage/cards/c/CrazedSkirge.java
index bfd80a531df..35cada0b5a1 100644
--- a/Mage.Sets/src/mage/cards/c/CrazedSkirge.java
+++ b/Mage.Sets/src/mage/cards/c/CrazedSkirge.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class CrazedSkirge extends CardImpl {
+public final class CrazedSkirge extends CardImpl {
public CrazedSkirge (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CreakwoodGhoul.java b/Mage.Sets/src/mage/cards/c/CreakwoodGhoul.java
index 1e42c001b75..ba63ce9a88d 100644
--- a/Mage.Sets/src/mage/cards/c/CreakwoodGhoul.java
+++ b/Mage.Sets/src/mage/cards/c/CreakwoodGhoul.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Loki
*/
-public class CreakwoodGhoul extends CardImpl {
+public final class CreakwoodGhoul extends CardImpl {
public CreakwoodGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CreakwoodLiege.java b/Mage.Sets/src/mage/cards/c/CreakwoodLiege.java
index 05586fd5e84..1bc61e79340 100644
--- a/Mage.Sets/src/mage/cards/c/CreakwoodLiege.java
+++ b/Mage.Sets/src/mage/cards/c/CreakwoodLiege.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.CreakwoodLiegeToken;
*
* @author anonymous
*/
-public class CreakwoodLiege extends CardImpl {
+public final class CreakwoodLiege extends CardImpl {
private static final FilterCreaturePermanent filterBlackCreature = new FilterCreaturePermanent("black creatures");
private static final FilterCreaturePermanent filterGreenCreature = new FilterCreaturePermanent("green creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CreamOfTheCrop.java b/Mage.Sets/src/mage/cards/c/CreamOfTheCrop.java
index 3d94b9d83f7..e17d8d563ff 100644
--- a/Mage.Sets/src/mage/cards/c/CreamOfTheCrop.java
+++ b/Mage.Sets/src/mage/cards/c/CreamOfTheCrop.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class CreamOfTheCrop extends CardImpl {
+public final class CreamOfTheCrop extends CardImpl {
public CreamOfTheCrop(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CreatureBond.java b/Mage.Sets/src/mage/cards/c/CreatureBond.java
index 6041d3debd0..5966fa154f4 100644
--- a/Mage.Sets/src/mage/cards/c/CreatureBond.java
+++ b/Mage.Sets/src/mage/cards/c/CreatureBond.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author MTGfan
*/
-public class CreatureBond extends CardImpl {
+public final class CreatureBond extends CardImpl {
public CreatureBond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CreditVoucher.java b/Mage.Sets/src/mage/cards/c/CreditVoucher.java
index 09ce01569e0..4379ea0fd9b 100644
--- a/Mage.Sets/src/mage/cards/c/CreditVoucher.java
+++ b/Mage.Sets/src/mage/cards/c/CreditVoucher.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInHand;
*
* @author TheElk801
*/
-public class CreditVoucher extends CardImpl {
+public final class CreditVoucher extends CardImpl {
public CreditVoucher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/c/Creeperhulk.java b/Mage.Sets/src/mage/cards/c/Creeperhulk.java
index 07f6d433d45..9c483061b0b 100644
--- a/Mage.Sets/src/mage/cards/c/Creeperhulk.java
+++ b/Mage.Sets/src/mage/cards/c/Creeperhulk.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class Creeperhulk extends CardImpl {
+public final class Creeperhulk extends CardImpl {
public Creeperhulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CreepingCorrosion.java b/Mage.Sets/src/mage/cards/c/CreepingCorrosion.java
index a908bda814f..c6a6f72d878 100644
--- a/Mage.Sets/src/mage/cards/c/CreepingCorrosion.java
+++ b/Mage.Sets/src/mage/cards/c/CreepingCorrosion.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author Viserion
*/
-public class CreepingCorrosion extends CardImpl {
+public final class CreepingCorrosion extends CardImpl {
public CreepingCorrosion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CreepingDread.java b/Mage.Sets/src/mage/cards/c/CreepingDread.java
index ff7348a9675..900ff03cdec 100644
--- a/Mage.Sets/src/mage/cards/c/CreepingDread.java
+++ b/Mage.Sets/src/mage/cards/c/CreepingDread.java
@@ -47,7 +47,7 @@ import mage.target.TargetCard;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class CreepingDread extends CardImpl {
+public final class CreepingDread extends CardImpl {
public CreepingDread(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CreepingMold.java b/Mage.Sets/src/mage/cards/c/CreepingMold.java
index e54851d8fea..f326e2da64f 100644
--- a/Mage.Sets/src/mage/cards/c/CreepingMold.java
+++ b/Mage.Sets/src/mage/cards/c/CreepingMold.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class CreepingMold extends CardImpl {
+public final class CreepingMold extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, enchantment, or land");
diff --git a/Mage.Sets/src/mage/cards/c/CreepingRenaissance.java b/Mage.Sets/src/mage/cards/c/CreepingRenaissance.java
index 674b94d0d5c..e9f2e3ee97b 100644
--- a/Mage.Sets/src/mage/cards/c/CreepingRenaissance.java
+++ b/Mage.Sets/src/mage/cards/c/CreepingRenaissance.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author nantuko
*/
-public class CreepingRenaissance extends CardImpl {
+public final class CreepingRenaissance extends CardImpl {
public CreepingRenaissance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CreepingTarPit.java b/Mage.Sets/src/mage/cards/c/CreepingTarPit.java
index e750cff2b8e..662b3826e87 100644
--- a/Mage.Sets/src/mage/cards/c/CreepingTarPit.java
+++ b/Mage.Sets/src/mage/cards/c/CreepingTarPit.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author Loki
*/
-public class CreepingTarPit extends CardImpl {
+public final class CreepingTarPit extends CardImpl {
public CreepingTarPit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/c/CreepyDoll.java b/Mage.Sets/src/mage/cards/c/CreepyDoll.java
index 5b0091cbafe..5e047f967a6 100644
--- a/Mage.Sets/src/mage/cards/c/CreepyDoll.java
+++ b/Mage.Sets/src/mage/cards/c/CreepyDoll.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author nantuko
*/
-public class CreepyDoll extends CardImpl {
+public final class CreepyDoll extends CardImpl {
public CreepyDoll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/c/Cremate.java b/Mage.Sets/src/mage/cards/c/Cremate.java
index d4d47fd272c..e0cab46f197 100644
--- a/Mage.Sets/src/mage/cards/c/Cremate.java
+++ b/Mage.Sets/src/mage/cards/c/Cremate.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Loki
*/
-public class Cremate extends CardImpl {
+public final class Cremate extends CardImpl {
public Cremate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CrenellatedWall.java b/Mage.Sets/src/mage/cards/c/CrenellatedWall.java
index 1beb37963d8..1c3d0e3a505 100644
--- a/Mage.Sets/src/mage/cards/c/CrenellatedWall.java
+++ b/Mage.Sets/src/mage/cards/c/CrenellatedWall.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class CrenellatedWall extends CardImpl {
+public final class CrenellatedWall extends CardImpl {
public CrenellatedWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/c/CrescendoOfWar.java b/Mage.Sets/src/mage/cards/c/CrescendoOfWar.java
index d8c0c8a8a7a..53c5442e407 100644
--- a/Mage.Sets/src/mage/cards/c/CrescendoOfWar.java
+++ b/Mage.Sets/src/mage/cards/c/CrescendoOfWar.java
@@ -49,7 +49,7 @@ import mage.filter.common.FilterBlockingCreature;
*
* @author fireshoes
*/
-public class CrescendoOfWar extends CardImpl {
+public final class CrescendoOfWar extends CardImpl {
public CrescendoOfWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CrestedCraghorn.java b/Mage.Sets/src/mage/cards/c/CrestedCraghorn.java
index 47580c0afe4..006c1bdab96 100644
--- a/Mage.Sets/src/mage/cards/c/CrestedCraghorn.java
+++ b/Mage.Sets/src/mage/cards/c/CrestedCraghorn.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CrestedCraghorn extends CardImpl {
+public final class CrestedCraghorn extends CardImpl {
public CrestedCraghorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrestedHerdcaller.java b/Mage.Sets/src/mage/cards/c/CrestedHerdcaller.java
index a485e37390c..c36054a2b92 100644
--- a/Mage.Sets/src/mage/cards/c/CrestedHerdcaller.java
+++ b/Mage.Sets/src/mage/cards/c/CrestedHerdcaller.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.DinosaurToken;
*
* @author LevelX2
*/
-public class CrestedHerdcaller extends CardImpl {
+public final class CrestedHerdcaller extends CardImpl {
public CrestedHerdcaller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrestedSunmare.java b/Mage.Sets/src/mage/cards/c/CrestedSunmare.java
index fa0bf4dd977..745a89985d4 100644
--- a/Mage.Sets/src/mage/cards/c/CrestedSunmare.java
+++ b/Mage.Sets/src/mage/cards/c/CrestedSunmare.java
@@ -53,7 +53,7 @@ import mage.watchers.common.PlayerGainedLifeWatcher;
*
* @author emerald000
*/
-public class CrestedSunmare extends CardImpl {
+public final class CrestedSunmare extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Horses you control");
diff --git a/Mage.Sets/src/mage/cards/c/Crevasse.java b/Mage.Sets/src/mage/cards/c/Crevasse.java
index 05bd0daad78..1b35baa357c 100644
--- a/Mage.Sets/src/mage/cards/c/Crevasse.java
+++ b/Mage.Sets/src/mage/cards/c/Crevasse.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author L_J
*/
-public class Crevasse extends CardImpl {
+public final class Crevasse extends CardImpl {
public Crevasse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CribSwap.java b/Mage.Sets/src/mage/cards/c/CribSwap.java
index d30b68eda0b..5bbab1bfc33 100644
--- a/Mage.Sets/src/mage/cards/c/CribSwap.java
+++ b/Mage.Sets/src/mage/cards/c/CribSwap.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CribSwap extends CardImpl {
+public final class CribSwap extends CardImpl {
public CribSwap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CrimePunishment.java b/Mage.Sets/src/mage/cards/c/CrimePunishment.java
index 39788d32728..c7fbf23e286 100644
--- a/Mage.Sets/src/mage/cards/c/CrimePunishment.java
+++ b/Mage.Sets/src/mage/cards/c/CrimePunishment.java
@@ -43,7 +43,7 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetCardInOpponentsGraveyard;
-public class CrimePunishment extends SplitCard {
+public final class CrimePunishment extends SplitCard {
private static final FilterCard filter = new FilterCard("creature or enchantment card from an opponent's graveyard");
diff --git a/Mage.Sets/src/mage/cards/c/CrimsonAcolyte.java b/Mage.Sets/src/mage/cards/c/CrimsonAcolyte.java
index 288575b4aaf..888c0d3e0b3 100644
--- a/Mage.Sets/src/mage/cards/c/CrimsonAcolyte.java
+++ b/Mage.Sets/src/mage/cards/c/CrimsonAcolyte.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author michael.napoleon@gmail.com
*/
-public class CrimsonAcolyte extends CardImpl {
+public final class CrimsonAcolyte extends CardImpl {
public CrimsonAcolyte(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CrimsonHellkite.java b/Mage.Sets/src/mage/cards/c/CrimsonHellkite.java
index 9b395f4ebea..ce556a72ac4 100644
--- a/Mage.Sets/src/mage/cards/c/CrimsonHellkite.java
+++ b/Mage.Sets/src/mage/cards/c/CrimsonHellkite.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class CrimsonHellkite extends CardImpl {
+public final class CrimsonHellkite extends CardImpl {
private static final FilterMana filterRedMana = new FilterMana();
diff --git a/Mage.Sets/src/mage/cards/c/CrimsonHonorGuard.java b/Mage.Sets/src/mage/cards/c/CrimsonHonorGuard.java
index 78187e67a64..41ba15b5bd3 100644
--- a/Mage.Sets/src/mage/cards/c/CrimsonHonorGuard.java
+++ b/Mage.Sets/src/mage/cards/c/CrimsonHonorGuard.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class CrimsonHonorGuard extends CardImpl {
+public final class CrimsonHonorGuard extends CardImpl {
public CrimsonHonorGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrimsonKobolds.java b/Mage.Sets/src/mage/cards/c/CrimsonKobolds.java
index 07fcaa1b815..5e680f22f28 100644
--- a/Mage.Sets/src/mage/cards/c/CrimsonKobolds.java
+++ b/Mage.Sets/src/mage/cards/c/CrimsonKobolds.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CrimsonKobolds extends CardImpl {
+public final class CrimsonKobolds extends CardImpl {
public CrimsonKobolds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{0}");
diff --git a/Mage.Sets/src/mage/cards/c/CrimsonMage.java b/Mage.Sets/src/mage/cards/c/CrimsonMage.java
index be2a27e5abb..17d389dd3da 100644
--- a/Mage.Sets/src/mage/cards/c/CrimsonMage.java
+++ b/Mage.Sets/src/mage/cards/c/CrimsonMage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class CrimsonMage extends CardImpl {
+public final class CrimsonMage extends CardImpl {
public CrimsonMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrimsonManticore.java b/Mage.Sets/src/mage/cards/c/CrimsonManticore.java
index 73fbf7aceb0..ccd639b01ea 100644
--- a/Mage.Sets/src/mage/cards/c/CrimsonManticore.java
+++ b/Mage.Sets/src/mage/cards/c/CrimsonManticore.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author jeffwadsworth
*/
-public class CrimsonManticore extends CardImpl {
+public final class CrimsonManticore extends CardImpl {
public CrimsonManticore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrimsonMuckwader.java b/Mage.Sets/src/mage/cards/c/CrimsonMuckwader.java
index 962312115ef..51dfbc9f284 100644
--- a/Mage.Sets/src/mage/cards/c/CrimsonMuckwader.java
+++ b/Mage.Sets/src/mage/cards/c/CrimsonMuckwader.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class CrimsonMuckwader extends CardImpl {
+public final class CrimsonMuckwader extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Swamp");
diff --git a/Mage.Sets/src/mage/cards/c/CrimsonWisps.java b/Mage.Sets/src/mage/cards/c/CrimsonWisps.java
index 33b18e80a76..420bf5bdd83 100644
--- a/Mage.Sets/src/mage/cards/c/CrimsonWisps.java
+++ b/Mage.Sets/src/mage/cards/c/CrimsonWisps.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class CrimsonWisps extends CardImpl {
+public final class CrimsonWisps extends CardImpl {
public CrimsonWisps (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CripplingBlight.java b/Mage.Sets/src/mage/cards/c/CripplingBlight.java
index b4e95dd7697..54dc8008e44 100644
--- a/Mage.Sets/src/mage/cards/c/CripplingBlight.java
+++ b/Mage.Sets/src/mage/cards/c/CripplingBlight.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class CripplingBlight extends CardImpl {
+public final class CripplingBlight extends CardImpl {
public CripplingBlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CripplingChill.java b/Mage.Sets/src/mage/cards/c/CripplingChill.java
index cecef94e75d..d2631497f51 100644
--- a/Mage.Sets/src/mage/cards/c/CripplingChill.java
+++ b/Mage.Sets/src/mage/cards/c/CripplingChill.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author noxx
*/
-public class CripplingChill extends CardImpl {
+public final class CripplingChill extends CardImpl {
public CripplingChill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CripplingFatigue.java b/Mage.Sets/src/mage/cards/c/CripplingFatigue.java
index ae1acfe4220..f80be756fd8 100644
--- a/Mage.Sets/src/mage/cards/c/CripplingFatigue.java
+++ b/Mage.Sets/src/mage/cards/c/CripplingFatigue.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CripplingFatigue extends CardImpl {
+public final class CripplingFatigue extends CardImpl {
public CripplingFatigue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Crocanura.java b/Mage.Sets/src/mage/cards/c/Crocanura.java
index afdf6b86742..b2f23086070 100644
--- a/Mage.Sets/src/mage/cards/c/Crocanura.java
+++ b/Mage.Sets/src/mage/cards/c/Crocanura.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class Crocanura extends CardImpl {
+public final class Crocanura extends CardImpl {
public Crocanura(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrocodileOfTheCrossing.java b/Mage.Sets/src/mage/cards/c/CrocodileOfTheCrossing.java
index bdad68e9344..4c10c4e03db 100644
--- a/Mage.Sets/src/mage/cards/c/CrocodileOfTheCrossing.java
+++ b/Mage.Sets/src/mage/cards/c/CrocodileOfTheCrossing.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class CrocodileOfTheCrossing extends CardImpl {
+public final class CrocodileOfTheCrossing extends CardImpl {
public CrocodileOfTheCrossing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Cromat.java b/Mage.Sets/src/mage/cards/c/Cromat.java
index cfb752ae07b..4ad853c944c 100644
--- a/Mage.Sets/src/mage/cards/c/Cromat.java
+++ b/Mage.Sets/src/mage/cards/c/Cromat.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Cromat extends CardImpl {
+public final class Cromat extends CardImpl {
public Cromat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrookOfCondemnation.java b/Mage.Sets/src/mage/cards/c/CrookOfCondemnation.java
index 8f3733e97e6..3c412a1709f 100644
--- a/Mage.Sets/src/mage/cards/c/CrookOfCondemnation.java
+++ b/Mage.Sets/src/mage/cards/c/CrookOfCondemnation.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author jeffwadsworth
*/
-public class CrookOfCondemnation extends CardImpl {
+public final class CrookOfCondemnation extends CardImpl {
private UUID exileId = UUID.randomUUID();
diff --git a/Mage.Sets/src/mage/cards/c/CrookclawElder.java b/Mage.Sets/src/mage/cards/c/CrookclawElder.java
index a5295003023..d4e0a0ac13d 100644
--- a/Mage.Sets/src/mage/cards/c/CrookclawElder.java
+++ b/Mage.Sets/src/mage/cards/c/CrookclawElder.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class CrookclawElder extends CardImpl {
+public final class CrookclawElder extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Bird you control");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("untapped Wizards you control");
diff --git a/Mage.Sets/src/mage/cards/c/CrookclawTransmuter.java b/Mage.Sets/src/mage/cards/c/CrookclawTransmuter.java
index 64855624095..de4501d458d 100644
--- a/Mage.Sets/src/mage/cards/c/CrookclawTransmuter.java
+++ b/Mage.Sets/src/mage/cards/c/CrookclawTransmuter.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class CrookclawTransmuter extends CardImpl {
+public final class CrookclawTransmuter extends CardImpl {
public CrookclawTransmuter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CrookedScales.java b/Mage.Sets/src/mage/cards/c/CrookedScales.java
index 8886e0d2af8..527b5cb9207 100644
--- a/Mage.Sets/src/mage/cards/c/CrookedScales.java
+++ b/Mage.Sets/src/mage/cards/c/CrookedScales.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author TheElk801
*/
-public class CrookedScales extends CardImpl {
+public final class CrookedScales extends CardImpl {
public CrookedScales(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/c/CrookshankKobolds.java b/Mage.Sets/src/mage/cards/c/CrookshankKobolds.java
index 6a2197d6692..2f46b2def1f 100644
--- a/Mage.Sets/src/mage/cards/c/CrookshankKobolds.java
+++ b/Mage.Sets/src/mage/cards/c/CrookshankKobolds.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class CrookshankKobolds extends CardImpl {
+public final class CrookshankKobolds extends CardImpl {
public CrookshankKobolds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{0}");
diff --git a/Mage.Sets/src/mage/cards/c/CropRotation.java b/Mage.Sets/src/mage/cards/c/CropRotation.java
index ce9b937c573..6c0a75515aa 100644
--- a/Mage.Sets/src/mage/cards/c/CropRotation.java
+++ b/Mage.Sets/src/mage/cards/c/CropRotation.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class CropRotation extends CardImpl {
+public final class CropRotation extends CardImpl {
public CropRotation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CropSigil.java b/Mage.Sets/src/mage/cards/c/CropSigil.java
index 9d610ffe42c..3c37ab75b2b 100644
--- a/Mage.Sets/src/mage/cards/c/CropSigil.java
+++ b/Mage.Sets/src/mage/cards/c/CropSigil.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class CropSigil extends CardImpl {
+public final class CropSigil extends CardImpl {
private static final FilterCard filterCreature = new FilterCard("creature card in a graveyard");
private static final FilterCard filterLand = new FilterCard("land card in a graveyard");
diff --git a/Mage.Sets/src/mage/cards/c/CrosisThePurger.java b/Mage.Sets/src/mage/cards/c/CrosisThePurger.java
index 4fd36f307c8..7f0e3413e5b 100644
--- a/Mage.Sets/src/mage/cards/c/CrosisThePurger.java
+++ b/Mage.Sets/src/mage/cards/c/CrosisThePurger.java
@@ -55,7 +55,7 @@ import mage.players.Player;
* @author LoneFox
*
*/
-public class CrosisThePurger extends CardImpl {
+public final class CrosisThePurger extends CardImpl {
public CrosisThePurger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrosissAttendant.java b/Mage.Sets/src/mage/cards/c/CrosissAttendant.java
index e28331e774c..09894992dd5 100644
--- a/Mage.Sets/src/mage/cards/c/CrosissAttendant.java
+++ b/Mage.Sets/src/mage/cards/c/CrosissAttendant.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class CrosissAttendant extends CardImpl {
+public final class CrosissAttendant extends CardImpl {
public CrosissAttendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/c/CrosissCatacombs.java b/Mage.Sets/src/mage/cards/c/CrosissCatacombs.java
index c70d3080b8c..e84270dc557 100644
--- a/Mage.Sets/src/mage/cards/c/CrosissCatacombs.java
+++ b/Mage.Sets/src/mage/cards/c/CrosissCatacombs.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class CrosissCatacombs extends CardImpl {
+public final class CrosissCatacombs extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("non-Lair land");
static{
diff --git a/Mage.Sets/src/mage/cards/c/CrosissCharm.java b/Mage.Sets/src/mage/cards/c/CrosissCharm.java
index 411ff825626..bd0c0e60c24 100644
--- a/Mage.Sets/src/mage/cards/c/CrosissCharm.java
+++ b/Mage.Sets/src/mage/cards/c/CrosissCharm.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CrosissCharm extends CardImpl {
+public final class CrosissCharm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CrossbowAmbush.java b/Mage.Sets/src/mage/cards/c/CrossbowAmbush.java
index c9f52dde8d4..07f6ede6673 100644
--- a/Mage.Sets/src/mage/cards/c/CrossbowAmbush.java
+++ b/Mage.Sets/src/mage/cards/c/CrossbowAmbush.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class CrossbowAmbush extends CardImpl {
+public final class CrossbowAmbush extends CardImpl {
public CrossbowAmbush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrossbowInfantry.java b/Mage.Sets/src/mage/cards/c/CrossbowInfantry.java
index f070471074c..63df0bf7e1f 100644
--- a/Mage.Sets/src/mage/cards/c/CrossbowInfantry.java
+++ b/Mage.Sets/src/mage/cards/c/CrossbowInfantry.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author Plopman
*/
-public class CrossbowInfantry extends CardImpl {
+public final class CrossbowInfantry extends CardImpl {
public CrossbowInfantry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Crossfire.java b/Mage.Sets/src/mage/cards/c/Crossfire.java
index 7f990d17244..ee6adcc2e57 100644
--- a/Mage.Sets/src/mage/cards/c/Crossfire.java
+++ b/Mage.Sets/src/mage/cards/c/Crossfire.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class Crossfire extends CardImpl {
+public final class Crossfire extends CardImpl {
public Crossfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java b/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java
index 3517a12e801..dc989d2b644 100644
--- a/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java
+++ b/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author LevelX2
*/
-public class CrossroadsConsecrator extends CardImpl {
+public final class CrossroadsConsecrator extends CardImpl {
private final static FilterAttackingCreature filter = new FilterAttackingCreature("attacking Human");
diff --git a/Mage.Sets/src/mage/cards/c/CrosstownCourier.java b/Mage.Sets/src/mage/cards/c/CrosstownCourier.java
index 1b21bd34a48..4cd30cc4bc6 100644
--- a/Mage.Sets/src/mage/cards/c/CrosstownCourier.java
+++ b/Mage.Sets/src/mage/cards/c/CrosstownCourier.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class CrosstownCourier extends CardImpl {
+public final class CrosstownCourier extends CardImpl {
public CrosstownCourier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CrosswayVampire.java b/Mage.Sets/src/mage/cards/c/CrosswayVampire.java
index 4afba91c82e..a199a859a1f 100644
--- a/Mage.Sets/src/mage/cards/c/CrosswayVampire.java
+++ b/Mage.Sets/src/mage/cards/c/CrosswayVampire.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class CrosswayVampire extends CardImpl {
+public final class CrosswayVampire extends CardImpl {
public CrosswayVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/Crosswinds.java b/Mage.Sets/src/mage/cards/c/Crosswinds.java
index 72a10e0bee3..c0882b5f53a 100644
--- a/Mage.Sets/src/mage/cards/c/Crosswinds.java
+++ b/Mage.Sets/src/mage/cards/c/Crosswinds.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author hanasu
*/
-public class Crosswinds extends CardImpl {
+public final class Crosswinds extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/c/CrovaxAscendantHero.java b/Mage.Sets/src/mage/cards/c/CrovaxAscendantHero.java
index 6b94be72abf..844be50f1e5 100644
--- a/Mage.Sets/src/mage/cards/c/CrovaxAscendantHero.java
+++ b/Mage.Sets/src/mage/cards/c/CrovaxAscendantHero.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class CrovaxAscendantHero extends CardImpl {
+public final class CrovaxAscendantHero extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("white creatures");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Nonwhite creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CrovaxTheCursed.java b/Mage.Sets/src/mage/cards/c/CrovaxTheCursed.java
index ac674638f52..71442cf197a 100644
--- a/Mage.Sets/src/mage/cards/c/CrovaxTheCursed.java
+++ b/Mage.Sets/src/mage/cards/c/CrovaxTheCursed.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class CrovaxTheCursed extends CardImpl {
+public final class CrovaxTheCursed extends CardImpl {
public CrovaxTheCursed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CrowOfDarkTidings.java b/Mage.Sets/src/mage/cards/c/CrowOfDarkTidings.java
index 981970f4938..0f4c8a77793 100644
--- a/Mage.Sets/src/mage/cards/c/CrowOfDarkTidings.java
+++ b/Mage.Sets/src/mage/cards/c/CrowOfDarkTidings.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CrowOfDarkTidings extends CardImpl {
+public final class CrowOfDarkTidings extends CardImpl {
public CrowOfDarkTidings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CrowStorm.java b/Mage.Sets/src/mage/cards/c/CrowStorm.java
index 8ba10dcf889..37d696cf213 100644
--- a/Mage.Sets/src/mage/cards/c/CrowStorm.java
+++ b/Mage.Sets/src/mage/cards/c/CrowStorm.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.StormCrowToken;
*
* @author spjspj
*/
-public class CrowStorm extends CardImpl {
+public final class CrowStorm extends CardImpl {
public CrowStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CrowdFavorites.java b/Mage.Sets/src/mage/cards/c/CrowdFavorites.java
index cbf3d8caccf..d955dbc1afe 100644
--- a/Mage.Sets/src/mage/cards/c/CrowdFavorites.java
+++ b/Mage.Sets/src/mage/cards/c/CrowdFavorites.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class CrowdFavorites extends CardImpl {
+public final class CrowdFavorites extends CardImpl {
public CrowdFavorites(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CrowdOfCinders.java b/Mage.Sets/src/mage/cards/c/CrowdOfCinders.java
index 42c9be5caa6..5c254b0f66c 100644
--- a/Mage.Sets/src/mage/cards/c/CrowdOfCinders.java
+++ b/Mage.Sets/src/mage/cards/c/CrowdOfCinders.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class CrowdOfCinders extends CardImpl {
+public final class CrowdOfCinders extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("black permanents you control");
diff --git a/Mage.Sets/src/mage/cards/c/CrowdsFavor.java b/Mage.Sets/src/mage/cards/c/CrowdsFavor.java
index 97f5f719db0..ac54ffe3539 100644
--- a/Mage.Sets/src/mage/cards/c/CrowdsFavor.java
+++ b/Mage.Sets/src/mage/cards/c/CrowdsFavor.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class CrowdsFavor extends CardImpl {
+public final class CrowdsFavor extends CardImpl {
public CrowdsFavor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java b/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java
index f1c59b35fa7..d29ef833981 100644
--- a/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java
+++ b/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class CrownHunterHireling extends CardImpl {
+public final class CrownHunterHireling extends CardImpl {
public CrownHunterHireling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrownOfConvergence.java b/Mage.Sets/src/mage/cards/c/CrownOfConvergence.java
index 56b06cc4d5e..eb1897a53bd 100644
--- a/Mage.Sets/src/mage/cards/c/CrownOfConvergence.java
+++ b/Mage.Sets/src/mage/cards/c/CrownOfConvergence.java
@@ -54,7 +54,7 @@ import mage.players.Player;
/**
* @author jeffwadsworth
*/
-public class CrownOfConvergence extends CardImpl {
+public final class CrownOfConvergence extends CardImpl {
private static final String rule1 = "As long as the top card of your library is a creature card, creatures you control that share a color with that card get +1/+1";
diff --git a/Mage.Sets/src/mage/cards/c/CrownOfDoom.java b/Mage.Sets/src/mage/cards/c/CrownOfDoom.java
index 851c8ecd923..85342ea2398 100644
--- a/Mage.Sets/src/mage/cards/c/CrownOfDoom.java
+++ b/Mage.Sets/src/mage/cards/c/CrownOfDoom.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class CrownOfDoom extends CardImpl {
+public final class CrownOfDoom extends CardImpl {
private static final FilterPlayer filter = new FilterPlayer("player other than {this}'s owner");
diff --git a/Mage.Sets/src/mage/cards/c/CrownOfEmpires.java b/Mage.Sets/src/mage/cards/c/CrownOfEmpires.java
index dad62976327..8c37a60b8b6 100644
--- a/Mage.Sets/src/mage/cards/c/CrownOfEmpires.java
+++ b/Mage.Sets/src/mage/cards/c/CrownOfEmpires.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author nantuko
*/
-public class CrownOfEmpires extends CardImpl {
+public final class CrownOfEmpires extends CardImpl {
public CrownOfEmpires(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CrownOfFlames.java b/Mage.Sets/src/mage/cards/c/CrownOfFlames.java
index a8046667377..925cb0b6e16 100644
--- a/Mage.Sets/src/mage/cards/c/CrownOfFlames.java
+++ b/Mage.Sets/src/mage/cards/c/CrownOfFlames.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CrownOfFlames extends CardImpl {
+public final class CrownOfFlames extends CardImpl {
public CrownOfFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrownOfTheAges.java b/Mage.Sets/src/mage/cards/c/CrownOfTheAges.java
index b863c23e441..5d53c629645 100644
--- a/Mage.Sets/src/mage/cards/c/CrownOfTheAges.java
+++ b/Mage.Sets/src/mage/cards/c/CrownOfTheAges.java
@@ -56,7 +56,7 @@ import mage.target.TargetPermanent;
*
* @author spjspj
*/
-public class CrownOfTheAges extends CardImpl {
+public final class CrownOfTheAges extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Aura attached to a creature");
@@ -103,46 +103,47 @@ class CrownOfTheAgesEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- UUID auraId = getTargetPointer().getFirst(game, source);
- Permanent aura = game.getPermanent(auraId);
+ Permanent aura = game.getPermanent(source.getFirstTarget());
+ if (aura == null) {
+ return false;
+ }
Permanent fromPermanent = game.getPermanent(aura.getAttachedTo());
Player controller = game.getPlayer(source.getControllerId());
- if (fromPermanent != null && controller != null) {
- boolean passed = true;
- FilterCreaturePermanent filterChoice = new FilterCreaturePermanent("another creature");
- filterChoice.add(Predicates.not(new PermanentIdPredicate(fromPermanent.getId())));
+ if (fromPermanent == null || controller == null) {
+ return false;
+ }
+ boolean passed = true;
+ FilterCreaturePermanent filterChoice = new FilterCreaturePermanent("another creature");
+ filterChoice.add(Predicates.not(new PermanentIdPredicate(fromPermanent.getId())));
- Target chosenCreatureToAttachAura = new TargetPermanent(filterChoice);
- chosenCreatureToAttachAura.setNotTarget(true);
+ Target chosenCreatureToAttachAura = new TargetPermanent(filterChoice);
+ chosenCreatureToAttachAura.setNotTarget(true);
- if (chosenCreatureToAttachAura.canChoose(source.getSourceId(), source.getControllerId(), game)
- && controller.choose(Outcome.Neutral, chosenCreatureToAttachAura, source.getSourceId(), game)) {
- Permanent creatureToAttachAura = game.getPermanent(chosenCreatureToAttachAura.getFirstTarget());
- if (creatureToAttachAura != null) {
- if (aura != null && passed) {
- // Check the target filter
- Target target = aura.getSpellAbility().getTargets().get(0);
- if (target instanceof TargetPermanent) {
- if (!target.getFilter().match(creatureToAttachAura, game)) {
- passed = false;
- }
- }
- // Check for protection
- MageObject auraObject = game.getObject(auraId);
- if (creatureToAttachAura.cantBeAttachedBy(auraObject, game)) {
+ if (chosenCreatureToAttachAura.canChoose(source.getSourceId(), source.getControllerId(), game)
+ && controller.choose(Outcome.Neutral, chosenCreatureToAttachAura, source.getSourceId(), game)) {
+ Permanent creatureToAttachAura = game.getPermanent(chosenCreatureToAttachAura.getFirstTarget());
+ if (creatureToAttachAura != null) {
+ if (passed) {
+ // Check the target filter
+ Target target = aura.getSpellAbility().getTargets().get(0);
+ if (target instanceof TargetPermanent) {
+ if (!target.getFilter().match(creatureToAttachAura, game)) {
passed = false;
}
}
- if (passed) {
- fromPermanent.removeAttachment(aura.getId(), game);
- creatureToAttachAura.addAttachment(aura.getId(), game);
- return true;
+ // Check for protection
+ MageObject auraObject = game.getObject(aura.getId());
+ if (creatureToAttachAura.cantBeAttachedBy(auraObject, game)) {
+ passed = false;
}
}
+ if (passed) {
+ fromPermanent.removeAttachment(aura.getId(), game);
+ creatureToAttachAura.addAttachment(aura.getId(), game);
+ return true;
+ }
}
- return true;
}
-
- return false;
+ return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/c/CrownedCeratok.java b/Mage.Sets/src/mage/cards/c/CrownedCeratok.java
index 332b8eede6c..51574d1c674 100644
--- a/Mage.Sets/src/mage/cards/c/CrownedCeratok.java
+++ b/Mage.Sets/src/mage/cards/c/CrownedCeratok.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author LevelX2
*/
-public class CrownedCeratok extends CardImpl {
+public final class CrownedCeratok extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature you control with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CrucibleOfFire.java b/Mage.Sets/src/mage/cards/c/CrucibleOfFire.java
index e69ae705495..46125b3d436 100644
--- a/Mage.Sets/src/mage/cards/c/CrucibleOfFire.java
+++ b/Mage.Sets/src/mage/cards/c/CrucibleOfFire.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Plopman
*/
-public class CrucibleOfFire extends CardImpl {
+public final class CrucibleOfFire extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dragon creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CrucibleOfTheSpiritDragon.java b/Mage.Sets/src/mage/cards/c/CrucibleOfTheSpiritDragon.java
index cf25643f103..0c38d9efbe4 100644
--- a/Mage.Sets/src/mage/cards/c/CrucibleOfTheSpiritDragon.java
+++ b/Mage.Sets/src/mage/cards/c/CrucibleOfTheSpiritDragon.java
@@ -54,7 +54,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class CrucibleOfTheSpiritDragon extends CardImpl {
+public final class CrucibleOfTheSpiritDragon extends CardImpl {
public CrucibleOfTheSpiritDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CrucibleOfWorlds.java b/Mage.Sets/src/mage/cards/c/CrucibleOfWorlds.java
index a525d9fead2..7f2633271bb 100644
--- a/Mage.Sets/src/mage/cards/c/CrucibleOfWorlds.java
+++ b/Mage.Sets/src/mage/cards/c/CrucibleOfWorlds.java
@@ -39,7 +39,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class CrucibleOfWorlds extends CardImpl {
+public final class CrucibleOfWorlds extends CardImpl {
public CrucibleOfWorlds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CrudeRampart.java b/Mage.Sets/src/mage/cards/c/CrudeRampart.java
index b901baff913..39090696274 100644
--- a/Mage.Sets/src/mage/cards/c/CrudeRampart.java
+++ b/Mage.Sets/src/mage/cards/c/CrudeRampart.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CrudeRampart extends CardImpl {
+public final class CrudeRampart extends CardImpl {
public CrudeRampart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CruelBargain.java b/Mage.Sets/src/mage/cards/c/CruelBargain.java
index 6133c539b2c..646a570ae1f 100644
--- a/Mage.Sets/src/mage/cards/c/CruelBargain.java
+++ b/Mage.Sets/src/mage/cards/c/CruelBargain.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author magenoxx
*/
-public class CruelBargain extends CardImpl {
+public final class CruelBargain extends CardImpl {
public CruelBargain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CruelDeceiver.java b/Mage.Sets/src/mage/cards/c/CruelDeceiver.java
index dd515075b0b..3ca22c5a322 100644
--- a/Mage.Sets/src/mage/cards/c/CruelDeceiver.java
+++ b/Mage.Sets/src/mage/cards/c/CruelDeceiver.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class CruelDeceiver extends CardImpl {
+public final class CruelDeceiver extends CardImpl {
public CruelDeceiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CruelEdict.java b/Mage.Sets/src/mage/cards/c/CruelEdict.java
index 3ccd0f683e4..5a22a3fe1ec 100644
--- a/Mage.Sets/src/mage/cards/c/CruelEdict.java
+++ b/Mage.Sets/src/mage/cards/c/CruelEdict.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class CruelEdict extends CardImpl {
+public final class CruelEdict extends CardImpl {
public CruelEdict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CruelEntertainment.java b/Mage.Sets/src/mage/cards/c/CruelEntertainment.java
index e15e4278481..d43ce0ba69c 100644
--- a/Mage.Sets/src/mage/cards/c/CruelEntertainment.java
+++ b/Mage.Sets/src/mage/cards/c/CruelEntertainment.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class CruelEntertainment extends CardImpl {
+public final class CruelEntertainment extends CardImpl {
public CruelEntertainment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CruelFate.java b/Mage.Sets/src/mage/cards/c/CruelFate.java
index 8fab4b1f991..5a172ac924b 100644
--- a/Mage.Sets/src/mage/cards/c/CruelFate.java
+++ b/Mage.Sets/src/mage/cards/c/CruelFate.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801 & L_J
*/
-public class CruelFate extends CardImpl {
+public final class CruelFate extends CardImpl {
public CruelFate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CruelFeeding.java b/Mage.Sets/src/mage/cards/c/CruelFeeding.java
index 9cf4d918353..9ab598c63c8 100644
--- a/Mage.Sets/src/mage/cards/c/CruelFeeding.java
+++ b/Mage.Sets/src/mage/cards/c/CruelFeeding.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CruelFeeding extends CardImpl {
+public final class CruelFeeding extends CardImpl {
public CruelFeeding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CruelFinality.java b/Mage.Sets/src/mage/cards/c/CruelFinality.java
index bc0e2df311a..1d60223e9fc 100644
--- a/Mage.Sets/src/mage/cards/c/CruelFinality.java
+++ b/Mage.Sets/src/mage/cards/c/CruelFinality.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CruelFinality extends CardImpl {
+public final class CruelFinality extends CardImpl {
public CruelFinality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CruelReality.java b/Mage.Sets/src/mage/cards/c/CruelReality.java
index 5317bff8cd7..a7bc3dbb714 100644
--- a/Mage.Sets/src/mage/cards/c/CruelReality.java
+++ b/Mage.Sets/src/mage/cards/c/CruelReality.java
@@ -56,7 +56,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class CruelReality extends CardImpl {
+public final class CruelReality extends CardImpl {
public CruelReality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CruelRevival.java b/Mage.Sets/src/mage/cards/c/CruelRevival.java
index ffb68b6e650..8c1fd8a7bab 100644
--- a/Mage.Sets/src/mage/cards/c/CruelRevival.java
+++ b/Mage.Sets/src/mage/cards/c/CruelRevival.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jeffwadsworth
*/
-public class CruelRevival extends CardImpl {
+public final class CruelRevival extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Zombie creature");
private final static FilterCard filter2 = new FilterCard("Zombie card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/c/CruelSadist.java b/Mage.Sets/src/mage/cards/c/CruelSadist.java
index 11024c6cb30..c5fac64fa79 100644
--- a/Mage.Sets/src/mage/cards/c/CruelSadist.java
+++ b/Mage.Sets/src/mage/cards/c/CruelSadist.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class CruelSadist extends CardImpl {
+public final class CruelSadist extends CardImpl {
public CruelSadist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CruelTutor.java b/Mage.Sets/src/mage/cards/c/CruelTutor.java
index 45612b71428..a5c1c244cd1 100644
--- a/Mage.Sets/src/mage/cards/c/CruelTutor.java
+++ b/Mage.Sets/src/mage/cards/c/CruelTutor.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author dustinconrad
*/
-public class CruelTutor extends CardImpl {
+public final class CruelTutor extends CardImpl {
public CruelTutor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CruelUltimatum.java b/Mage.Sets/src/mage/cards/c/CruelUltimatum.java
index f9c94d3ddb2..6d15a8b8cf0 100644
--- a/Mage.Sets/src/mage/cards/c/CruelUltimatum.java
+++ b/Mage.Sets/src/mage/cards/c/CruelUltimatum.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author North
*/
-public class CruelUltimatum extends CardImpl {
+public final class CruelUltimatum extends CardImpl {
public CruelUltimatum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}{U}{B}{B}{B}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrueltyOfTheSith.java b/Mage.Sets/src/mage/cards/c/CrueltyOfTheSith.java
index 08d32bea26d..7a053521490 100644
--- a/Mage.Sets/src/mage/cards/c/CrueltyOfTheSith.java
+++ b/Mage.Sets/src/mage/cards/c/CrueltyOfTheSith.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author Styxo
*/
-public class CrueltyOfTheSith extends CardImpl {
+public final class CrueltyOfTheSith extends CardImpl {
private static final FilterSpell filterNoncreature = new FilterSpell("noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/c/Crumble.java b/Mage.Sets/src/mage/cards/c/Crumble.java
index eedc915cbe9..39db9be67b6 100644
--- a/Mage.Sets/src/mage/cards/c/Crumble.java
+++ b/Mage.Sets/src/mage/cards/c/Crumble.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author fireshoes
*/
-public class Crumble extends CardImpl {
+public final class Crumble extends CardImpl {
public Crumble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrumbleToDust.java b/Mage.Sets/src/mage/cards/c/CrumbleToDust.java
index 1630304b743..389065cebf2 100644
--- a/Mage.Sets/src/mage/cards/c/CrumbleToDust.java
+++ b/Mage.Sets/src/mage/cards/c/CrumbleToDust.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author fireshoes
*/
-public class CrumbleToDust extends CardImpl {
+public final class CrumbleToDust extends CardImpl {
public CrumbleToDust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrumblingAshes.java b/Mage.Sets/src/mage/cards/c/CrumblingAshes.java
index 119bcc32230..8e380f87f83 100644
--- a/Mage.Sets/src/mage/cards/c/CrumblingAshes.java
+++ b/Mage.Sets/src/mage/cards/c/CrumblingAshes.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class CrumblingAshes extends CardImpl {
+public final class CrumblingAshes extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with a -1/-1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/c/CrumblingColossus.java b/Mage.Sets/src/mage/cards/c/CrumblingColossus.java
index 1e0ae9dc73f..42b2ccd9991 100644
--- a/Mage.Sets/src/mage/cards/c/CrumblingColossus.java
+++ b/Mage.Sets/src/mage/cards/c/CrumblingColossus.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CrumblingColossus extends CardImpl {
+public final class CrumblingColossus extends CardImpl {
public CrumblingColossus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/c/CrumblingNecropolis.java b/Mage.Sets/src/mage/cards/c/CrumblingNecropolis.java
index 1fa094fe84c..9249434cb84 100644
--- a/Mage.Sets/src/mage/cards/c/CrumblingNecropolis.java
+++ b/Mage.Sets/src/mage/cards/c/CrumblingNecropolis.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CrumblingNecropolis extends CardImpl {
+public final class CrumblingNecropolis extends CardImpl {
public CrumblingNecropolis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/c/CrumblingSanctuary.java b/Mage.Sets/src/mage/cards/c/CrumblingSanctuary.java
index f80ce2bc785..b12f5644baf 100644
--- a/Mage.Sets/src/mage/cards/c/CrumblingSanctuary.java
+++ b/Mage.Sets/src/mage/cards/c/CrumblingSanctuary.java
@@ -45,7 +45,7 @@ import mage.players.Player;
* @author LoneFox
*/
-public class CrumblingSanctuary extends CardImpl {
+public final class CrumblingSanctuary extends CardImpl {
public CrumblingSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/c/CrumblingVestige.java b/Mage.Sets/src/mage/cards/c/CrumblingVestige.java
index 30532961f26..a70f28642e0 100644
--- a/Mage.Sets/src/mage/cards/c/CrumblingVestige.java
+++ b/Mage.Sets/src/mage/cards/c/CrumblingVestige.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class CrumblingVestige extends CardImpl {
+public final class CrumblingVestige extends CardImpl {
public CrumblingVestige(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/c/Crusade.java b/Mage.Sets/src/mage/cards/c/Crusade.java
index 9d62e80daa3..7c120a20ae7 100644
--- a/Mage.Sets/src/mage/cards/c/Crusade.java
+++ b/Mage.Sets/src/mage/cards/c/Crusade.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North, Loki
*/
-public class Crusade extends CardImpl {
+public final class Crusade extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CrusaderOfOdric.java b/Mage.Sets/src/mage/cards/c/CrusaderOfOdric.java
index 3d966157f81..c9870a49063 100644
--- a/Mage.Sets/src/mage/cards/c/CrusaderOfOdric.java
+++ b/Mage.Sets/src/mage/cards/c/CrusaderOfOdric.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Loki
*/
-public class CrusaderOfOdric extends CardImpl {
+public final class CrusaderOfOdric extends CardImpl {
public CrusaderOfOdric(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CrusadingKnight.java b/Mage.Sets/src/mage/cards/c/CrusadingKnight.java
index 5e352294601..4450ef17d07 100644
--- a/Mage.Sets/src/mage/cards/c/CrusadingKnight.java
+++ b/Mage.Sets/src/mage/cards/c/CrusadingKnight.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author anonymous
*/
-public class CrusadingKnight extends CardImpl {
+public final class CrusadingKnight extends CardImpl {
private static final FilterLandPermanent swampFilter = new FilterLandPermanent("Swamp your opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/c/Crush.java b/Mage.Sets/src/mage/cards/c/Crush.java
index eca610f1bea..8ee0fcb50cc 100644
--- a/Mage.Sets/src/mage/cards/c/Crush.java
+++ b/Mage.Sets/src/mage/cards/c/Crush.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author North
*/
-public class Crush extends CardImpl {
+public final class Crush extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("noncreature artifact");
diff --git a/Mage.Sets/src/mage/cards/c/CrushOfTentacles.java b/Mage.Sets/src/mage/cards/c/CrushOfTentacles.java
index 04c731d5dce..45eb1be1549 100644
--- a/Mage.Sets/src/mage/cards/c/CrushOfTentacles.java
+++ b/Mage.Sets/src/mage/cards/c/CrushOfTentacles.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.CrushOfTentaclesToken;
*
* @author LevelX2
*/
-public class CrushOfTentacles extends CardImpl {
+public final class CrushOfTentacles extends CardImpl {
public CrushOfTentacles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CrushOfWurms.java b/Mage.Sets/src/mage/cards/c/CrushOfWurms.java
index bcf0a60bb0c..7d123d1887c 100644
--- a/Mage.Sets/src/mage/cards/c/CrushOfWurms.java
+++ b/Mage.Sets/src/mage/cards/c/CrushOfWurms.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.WurmToken;
/**
* @author JRHerlehy
*/
-public class CrushOfWurms extends CardImpl {
+public final class CrushOfWurms extends CardImpl {
public CrushOfWurms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CrushUnderfoot.java b/Mage.Sets/src/mage/cards/c/CrushUnderfoot.java
index 5fc416f168f..72055d7e163 100644
--- a/Mage.Sets/src/mage/cards/c/CrushUnderfoot.java
+++ b/Mage.Sets/src/mage/cards/c/CrushUnderfoot.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CrushUnderfoot extends CardImpl {
+public final class CrushUnderfoot extends CardImpl {
public CrushUnderfoot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrusherZendikon.java b/Mage.Sets/src/mage/cards/c/CrusherZendikon.java
index 0f3d07b8376..58fa9c6a4af 100644
--- a/Mage.Sets/src/mage/cards/c/CrusherZendikon.java
+++ b/Mage.Sets/src/mage/cards/c/CrusherZendikon.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class CrusherZendikon extends CardImpl {
+public final class CrusherZendikon extends CardImpl {
public CrusherZendikon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CrushingCanopy.java b/Mage.Sets/src/mage/cards/c/CrushingCanopy.java
index 26fa4497404..2a6a99f96db 100644
--- a/Mage.Sets/src/mage/cards/c/CrushingCanopy.java
+++ b/Mage.Sets/src/mage/cards/c/CrushingCanopy.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author TheElk801
*/
-public class CrushingCanopy extends CardImpl {
+public final class CrushingCanopy extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/c/CrushingPain.java b/Mage.Sets/src/mage/cards/c/CrushingPain.java
index b60671a2014..ae21dadc946 100644
--- a/Mage.Sets/src/mage/cards/c/CrushingPain.java
+++ b/Mage.Sets/src/mage/cards/c/CrushingPain.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class CrushingPain extends CardImpl {
+public final class CrushingPain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn");
diff --git a/Mage.Sets/src/mage/cards/c/CrushingVines.java b/Mage.Sets/src/mage/cards/c/CrushingVines.java
index c6d03b414ac..3097ee48bbc 100644
--- a/Mage.Sets/src/mage/cards/c/CrushingVines.java
+++ b/Mage.Sets/src/mage/cards/c/CrushingVines.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class CrushingVines extends CardImpl {
+public final class CrushingVines extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/c/CruxOfFate.java b/Mage.Sets/src/mage/cards/c/CruxOfFate.java
index cff0adb41fb..0607a8be3ad 100644
--- a/Mage.Sets/src/mage/cards/c/CruxOfFate.java
+++ b/Mage.Sets/src/mage/cards/c/CruxOfFate.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class CruxOfFate extends CardImpl {
+public final class CruxOfFate extends CardImpl {
private static final FilterCreaturePermanent filterNonDragon = new FilterCreaturePermanent("non-Dragon creatures");
diff --git a/Mage.Sets/src/mage/cards/c/CryOfContrition.java b/Mage.Sets/src/mage/cards/c/CryOfContrition.java
index a53b5a218a0..20b5ecb475b 100644
--- a/Mage.Sets/src/mage/cards/c/CryOfContrition.java
+++ b/Mage.Sets/src/mage/cards/c/CryOfContrition.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class CryOfContrition extends CardImpl {
+public final class CryOfContrition extends CardImpl {
public CryOfContrition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Cryoclasm.java b/Mage.Sets/src/mage/cards/c/Cryoclasm.java
index e15e1e93800..0aabae3e4f7 100644
--- a/Mage.Sets/src/mage/cards/c/Cryoclasm.java
+++ b/Mage.Sets/src/mage/cards/c/Cryoclasm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author dustinconrad
*/
-public class Cryoclasm extends CardImpl {
+public final class Cryoclasm extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Plains or Island");
diff --git a/Mage.Sets/src/mage/cards/c/Crypsis.java b/Mage.Sets/src/mage/cards/c/Crypsis.java
index 8a921a67296..a5996e42da4 100644
--- a/Mage.Sets/src/mage/cards/c/Crypsis.java
+++ b/Mage.Sets/src/mage/cards/c/Crypsis.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class Crypsis extends CardImpl {
+public final class Crypsis extends CardImpl {
static final FilterCard filter = new FilterCard("creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/c/CryptAngel.java b/Mage.Sets/src/mage/cards/c/CryptAngel.java
index 6376048e968..5f2c75ca265 100644
--- a/Mage.Sets/src/mage/cards/c/CryptAngel.java
+++ b/Mage.Sets/src/mage/cards/c/CryptAngel.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LoneFox
*/
-public class CryptAngel extends CardImpl {
+public final class CryptAngel extends CardImpl {
private static final FilterCreatureCard filter2 = new FilterCreatureCard("blue or red creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/c/CryptChampion.java b/Mage.Sets/src/mage/cards/c/CryptChampion.java
index 53964b6d6a6..b81319a05bf 100644
--- a/Mage.Sets/src/mage/cards/c/CryptChampion.java
+++ b/Mage.Sets/src/mage/cards/c/CryptChampion.java
@@ -58,7 +58,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author emerald000
*/
-public class CryptChampion extends CardImpl {
+public final class CryptChampion extends CardImpl {
public CryptChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CryptCobra.java b/Mage.Sets/src/mage/cards/c/CryptCobra.java
index 57e1f4b4d08..f7c3bd36a65 100644
--- a/Mage.Sets/src/mage/cards/c/CryptCobra.java
+++ b/Mage.Sets/src/mage/cards/c/CryptCobra.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CryptCobra extends CardImpl {
+public final class CryptCobra extends CardImpl {
public CryptCobra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CryptCreeper.java b/Mage.Sets/src/mage/cards/c/CryptCreeper.java
index 0935557bdb6..94dc325832d 100644
--- a/Mage.Sets/src/mage/cards/c/CryptCreeper.java
+++ b/Mage.Sets/src/mage/cards/c/CryptCreeper.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInGraveyard;
/**
* @author noxx
*/
-public class CryptCreeper extends CardImpl {
+public final class CryptCreeper extends CardImpl {
public CryptCreeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CryptGhast.java b/Mage.Sets/src/mage/cards/c/CryptGhast.java
index 9e537678332..4814bc9159a 100644
--- a/Mage.Sets/src/mage/cards/c/CryptGhast.java
+++ b/Mage.Sets/src/mage/cards/c/CryptGhast.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class CryptGhast extends CardImpl {
+public final class CryptGhast extends CardImpl {
public CryptGhast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CryptIncursion.java b/Mage.Sets/src/mage/cards/c/CryptIncursion.java
index add4ddaae1e..47dd38caafd 100644
--- a/Mage.Sets/src/mage/cards/c/CryptIncursion.java
+++ b/Mage.Sets/src/mage/cards/c/CryptIncursion.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*/
-public class CryptIncursion extends CardImpl {
+public final class CryptIncursion extends CardImpl {
public CryptIncursion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CryptOfAgadeem.java b/Mage.Sets/src/mage/cards/c/CryptOfAgadeem.java
index 3e0fabc020d..09820818228 100644
--- a/Mage.Sets/src/mage/cards/c/CryptOfAgadeem.java
+++ b/Mage.Sets/src/mage/cards/c/CryptOfAgadeem.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class CryptOfAgadeem extends CardImpl {
+public final class CryptOfAgadeem extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("black creature card");
diff --git a/Mage.Sets/src/mage/cards/c/CryptOfTheEternals.java b/Mage.Sets/src/mage/cards/c/CryptOfTheEternals.java
index a5b7472788a..05433c0e5fa 100644
--- a/Mage.Sets/src/mage/cards/c/CryptOfTheEternals.java
+++ b/Mage.Sets/src/mage/cards/c/CryptOfTheEternals.java
@@ -16,7 +16,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
-public class CryptOfTheEternals extends CardImpl {
+public final class CryptOfTheEternals extends CardImpl {
public CryptOfTheEternals(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/c/CryptRats.java b/Mage.Sets/src/mage/cards/c/CryptRats.java
index fd2a8f6469b..521850a5d5d 100644
--- a/Mage.Sets/src/mage/cards/c/CryptRats.java
+++ b/Mage.Sets/src/mage/cards/c/CryptRats.java
@@ -48,7 +48,7 @@ import mage.filter.FilterMana;
*
* @author LevelX2
*/
-public class CryptRats extends CardImpl {
+public final class CryptRats extends CardImpl {
static final FilterMana filterBlack = new FilterMana();
diff --git a/Mage.Sets/src/mage/cards/c/CryptRipper.java b/Mage.Sets/src/mage/cards/c/CryptRipper.java
index 8139982a8bb..426800158e8 100644
--- a/Mage.Sets/src/mage/cards/c/CryptRipper.java
+++ b/Mage.Sets/src/mage/cards/c/CryptRipper.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class CryptRipper extends CardImpl {
+public final class CryptRipper extends CardImpl {
public CryptRipper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CryptSliver.java b/Mage.Sets/src/mage/cards/c/CryptSliver.java
index 49a65d439a5..b51060872f2 100644
--- a/Mage.Sets/src/mage/cards/c/CryptSliver.java
+++ b/Mage.Sets/src/mage/cards/c/CryptSliver.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class CryptSliver extends CardImpl {
+public final class CryptSliver extends CardImpl {
public CryptSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CryptbornHorror.java b/Mage.Sets/src/mage/cards/c/CryptbornHorror.java
index 18643f9ea47..1785b46094f 100644
--- a/Mage.Sets/src/mage/cards/c/CryptbornHorror.java
+++ b/Mage.Sets/src/mage/cards/c/CryptbornHorror.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class CryptbornHorror extends CardImpl {
+public final class CryptbornHorror extends CardImpl {
private static final String rule = "with X +1/+1 counters on it, where X is the total life lost by your opponents this turn";
diff --git a/Mage.Sets/src/mage/cards/c/Cryptbreaker.java b/Mage.Sets/src/mage/cards/c/Cryptbreaker.java
index 732cd644ed3..ebffb7d5aab 100644
--- a/Mage.Sets/src/mage/cards/c/Cryptbreaker.java
+++ b/Mage.Sets/src/mage/cards/c/Cryptbreaker.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class Cryptbreaker extends CardImpl {
+public final class Cryptbreaker extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Zombies you control");
diff --git a/Mage.Sets/src/mage/cards/c/CrypticAnnelid.java b/Mage.Sets/src/mage/cards/c/CrypticAnnelid.java
index 23dc6817dbd..ce6ec3afa33 100644
--- a/Mage.Sets/src/mage/cards/c/CrypticAnnelid.java
+++ b/Mage.Sets/src/mage/cards/c/CrypticAnnelid.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CrypticAnnelid extends CardImpl {
+public final class CrypticAnnelid extends CardImpl {
public CrypticAnnelid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CrypticCommand.java b/Mage.Sets/src/mage/cards/c/CrypticCommand.java
index ed229e65549..67923588d80 100644
--- a/Mage.Sets/src/mage/cards/c/CrypticCommand.java
+++ b/Mage.Sets/src/mage/cards/c/CrypticCommand.java
@@ -51,7 +51,7 @@ import mage.target.TargetSpell;
*
* @author jonubuu
*/
-public class CrypticCommand extends CardImpl {
+public final class CrypticCommand extends CardImpl {
public CrypticCommand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CrypticCruiser.java b/Mage.Sets/src/mage/cards/c/CrypticCruiser.java
index 1e53956d3e2..e656f3d3c8e 100644
--- a/Mage.Sets/src/mage/cards/c/CrypticCruiser.java
+++ b/Mage.Sets/src/mage/cards/c/CrypticCruiser.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CrypticCruiser extends CardImpl {
+public final class CrypticCruiser extends CardImpl {
public CrypticCruiser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CrypticGateway.java b/Mage.Sets/src/mage/cards/c/CrypticGateway.java
index 9821618bf7c..9b1f9ef859f 100644
--- a/Mage.Sets/src/mage/cards/c/CrypticGateway.java
+++ b/Mage.Sets/src/mage/cards/c/CrypticGateway.java
@@ -33,7 +33,7 @@ import mage.abilities.costs.Cost;
import mage.abilities.costs.CostImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.keyword.ChangelingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -60,7 +60,7 @@ import java.util.UUID;
*
* @author spjspj
*/
-public class CrypticGateway extends CardImpl {
+public final class CrypticGateway extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
@@ -71,7 +71,7 @@ public class CrypticGateway extends CardImpl {
TargetControlledPermanent target;
public CrypticGateway(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
// Tap two untapped creatures you control: You may put a creature card from your hand that shares a creature type with each creature tapped this way onto the battlefield.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CrypticGatewayEffect(), new CrypticGatewayCost(new TargetControlledPermanent(filter))));
@@ -173,7 +173,7 @@ class CrypticGatewayEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
- if (source == null || source.getCosts() == null) {
+ if (source.getCosts() == null) {
return false;
}
@@ -223,7 +223,7 @@ class CrypticGatewayEffect extends OneShotEffect {
}
if (commonSubType) {
- PutPermanentOnBattlefieldEffect putIntoPlay = new PutPermanentOnBattlefieldEffect(filter);
+ PutCardFromHandOntoBattlefieldEffect putIntoPlay = new PutCardFromHandOntoBattlefieldEffect(filter);
putIntoPlay.apply(game, source);
}
}
diff --git a/Mage.Sets/src/mage/cards/c/CrypticSerpent.java b/Mage.Sets/src/mage/cards/c/CrypticSerpent.java
index a4f1d37d484..6f13da1e3d6 100644
--- a/Mage.Sets/src/mage/cards/c/CrypticSerpent.java
+++ b/Mage.Sets/src/mage/cards/c/CrypticSerpent.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterInstantOrSorceryCard;
*
* @author fireshoes
*/
-public class CrypticSerpent extends CardImpl {
+public final class CrypticSerpent extends CardImpl {
public CrypticSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CryptolithFragment.java b/Mage.Sets/src/mage/cards/c/CryptolithFragment.java
index cb44fe9d3ae..1bbf9b03a26 100644
--- a/Mage.Sets/src/mage/cards/c/CryptolithFragment.java
+++ b/Mage.Sets/src/mage/cards/c/CryptolithFragment.java
@@ -47,7 +47,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class CryptolithFragment extends CardImpl {
+public final class CryptolithFragment extends CardImpl {
public CryptolithFragment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CryptolithRite.java b/Mage.Sets/src/mage/cards/c/CryptolithRite.java
index 05b75c9b379..d65cb7fdc28 100644
--- a/Mage.Sets/src/mage/cards/c/CryptolithRite.java
+++ b/Mage.Sets/src/mage/cards/c/CryptolithRite.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class CryptolithRite extends CardImpl {
+public final class CryptolithRite extends CardImpl {
public CryptolithRite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Cryptoplasm.java b/Mage.Sets/src/mage/cards/c/Cryptoplasm.java
index a6ca4a53156..f83cfa22d11 100644
--- a/Mage.Sets/src/mage/cards/c/Cryptoplasm.java
+++ b/Mage.Sets/src/mage/cards/c/Cryptoplasm.java
@@ -49,7 +49,7 @@ import mage.util.functions.ApplyToPermanent;
/**
* @author Loki
*/
-public class Cryptoplasm extends CardImpl {
+public final class Cryptoplasm extends CardImpl {
final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/c/Cryptwailing.java b/Mage.Sets/src/mage/cards/c/Cryptwailing.java
index 1ad88cbebe5..6622e083df6 100644
--- a/Mage.Sets/src/mage/cards/c/Cryptwailing.java
+++ b/Mage.Sets/src/mage/cards/c/Cryptwailing.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2 & L_J
*/
-public class Cryptwailing extends CardImpl {
+public final class Cryptwailing extends CardImpl {
public Cryptwailing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CrystalBall.java b/Mage.Sets/src/mage/cards/c/CrystalBall.java
index ab297c9154b..72aa95121a0 100644
--- a/Mage.Sets/src/mage/cards/c/CrystalBall.java
+++ b/Mage.Sets/src/mage/cards/c/CrystalBall.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CrystalBall extends CardImpl {
+public final class CrystalBall extends CardImpl {
public CrystalBall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CrystalChimes.java b/Mage.Sets/src/mage/cards/c/CrystalChimes.java
index 6bef60e4d50..ce6f7a0e7a9 100644
--- a/Mage.Sets/src/mage/cards/c/CrystalChimes.java
+++ b/Mage.Sets/src/mage/cards/c/CrystalChimes.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class CrystalChimes extends CardImpl {
+public final class CrystalChimes extends CardImpl {
public CrystalChimes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CrystalGolem.java b/Mage.Sets/src/mage/cards/c/CrystalGolem.java
index 5688b6a0e0d..573e8b49a0b 100644
--- a/Mage.Sets/src/mage/cards/c/CrystalGolem.java
+++ b/Mage.Sets/src/mage/cards/c/CrystalGolem.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class CrystalGolem extends CardImpl {
+public final class CrystalGolem extends CardImpl {
public CrystalGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/c/CrystalQuarry.java b/Mage.Sets/src/mage/cards/c/CrystalQuarry.java
index c9965fbb4dd..ac11aed0ee9 100644
--- a/Mage.Sets/src/mage/cards/c/CrystalQuarry.java
+++ b/Mage.Sets/src/mage/cards/c/CrystalQuarry.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class CrystalQuarry extends CardImpl {
+public final class CrystalQuarry extends CardImpl {
public CrystalQuarry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/c/CrystalRod.java b/Mage.Sets/src/mage/cards/c/CrystalRod.java
index 46eb132f01c..525609ade1b 100644
--- a/Mage.Sets/src/mage/cards/c/CrystalRod.java
+++ b/Mage.Sets/src/mage/cards/c/CrystalRod.java
@@ -46,7 +46,7 @@ import mage.game.stack.Spell;
* @author KholdFuzion
*/
-public class CrystalRod extends CardImpl {
+public final class CrystalRod extends CardImpl {
public CrystalRod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/c/CrystalSeer.java b/Mage.Sets/src/mage/cards/c/CrystalSeer.java
index d7025b4f7e1..ba139861daa 100644
--- a/Mage.Sets/src/mage/cards/c/CrystalSeer.java
+++ b/Mage.Sets/src/mage/cards/c/CrystalSeer.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX
*/
-public class CrystalSeer extends CardImpl {
+public final class CrystalSeer extends CardImpl {
public CrystalSeer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CrystalShard.java b/Mage.Sets/src/mage/cards/c/CrystalShard.java
index 5dc069dcb88..a84cd20227e 100644
--- a/Mage.Sets/src/mage/cards/c/CrystalShard.java
+++ b/Mage.Sets/src/mage/cards/c/CrystalShard.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CrystalShard extends CardImpl {
+public final class CrystalShard extends CardImpl {
public CrystalShard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CrystalVein.java b/Mage.Sets/src/mage/cards/c/CrystalVein.java
index b3ac11b8456..57b0c381a14 100644
--- a/Mage.Sets/src/mage/cards/c/CrystalVein.java
+++ b/Mage.Sets/src/mage/cards/c/CrystalVein.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class CrystalVein extends CardImpl {
+public final class CrystalVein extends CardImpl {
public CrystalVein(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/c/CrystallineCrawler.java b/Mage.Sets/src/mage/cards/c/CrystallineCrawler.java
index 4644270b05b..95d6d817c21 100644
--- a/Mage.Sets/src/mage/cards/c/CrystallineCrawler.java
+++ b/Mage.Sets/src/mage/cards/c/CrystallineCrawler.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class CrystallineCrawler extends CardImpl {
+public final class CrystallineCrawler extends CardImpl {
public CrystallineCrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/c/CrystallineNautilus.java b/Mage.Sets/src/mage/cards/c/CrystallineNautilus.java
index 929ffd9a694..b9d96fe62d5 100644
--- a/Mage.Sets/src/mage/cards/c/CrystallineNautilus.java
+++ b/Mage.Sets/src/mage/cards/c/CrystallineNautilus.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class CrystallineNautilus extends CardImpl {
+public final class CrystallineNautilus extends CardImpl {
public CrystallineNautilus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CrystallineSliver.java b/Mage.Sets/src/mage/cards/c/CrystallineSliver.java
index 6c5839c4bda..8c471b404de 100644
--- a/Mage.Sets/src/mage/cards/c/CrystallineSliver.java
+++ b/Mage.Sets/src/mage/cards/c/CrystallineSliver.java
@@ -44,7 +44,7 @@ import mage.filter.FilterPermanent;
*
* @author Plopman
*/
-public class CrystallineSliver extends CardImpl {
+public final class CrystallineSliver extends CardImpl {
public CrystallineSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Crystallization.java b/Mage.Sets/src/mage/cards/c/Crystallization.java
index 5b992cb8057..056abaf87fb 100644
--- a/Mage.Sets/src/mage/cards/c/Crystallization.java
+++ b/Mage.Sets/src/mage/cards/c/Crystallization.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class Crystallization extends CardImpl {
+public final class Crystallization extends CardImpl {
public Crystallization(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G/U}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CudgelTroll.java b/Mage.Sets/src/mage/cards/c/CudgelTroll.java
index b8091d7424d..aae133a1d5a 100644
--- a/Mage.Sets/src/mage/cards/c/CudgelTroll.java
+++ b/Mage.Sets/src/mage/cards/c/CudgelTroll.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CudgelTroll extends CardImpl {
+public final class CudgelTroll extends CardImpl {
public CudgelTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CullingDais.java b/Mage.Sets/src/mage/cards/c/CullingDais.java
index 75395987281..878a31f4d6b 100644
--- a/Mage.Sets/src/mage/cards/c/CullingDais.java
+++ b/Mage.Sets/src/mage/cards/c/CullingDais.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class CullingDais extends CardImpl {
+public final class CullingDais extends CardImpl {
public CullingDais(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CullingDrone.java b/Mage.Sets/src/mage/cards/c/CullingDrone.java
index 181c706511f..d29b27fcb70 100644
--- a/Mage.Sets/src/mage/cards/c/CullingDrone.java
+++ b/Mage.Sets/src/mage/cards/c/CullingDrone.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CullingDrone extends CardImpl {
+public final class CullingDrone extends CardImpl {
public CullingDrone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CullingMark.java b/Mage.Sets/src/mage/cards/c/CullingMark.java
index 230c07d317a..b4e03f49b1c 100644
--- a/Mage.Sets/src/mage/cards/c/CullingMark.java
+++ b/Mage.Sets/src/mage/cards/c/CullingMark.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CullingMark extends CardImpl {
+public final class CullingMark extends CardImpl {
public CullingMark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CullingScales.java b/Mage.Sets/src/mage/cards/c/CullingScales.java
index 8f0756ad557..8633a19f4ef 100644
--- a/Mage.Sets/src/mage/cards/c/CullingScales.java
+++ b/Mage.Sets/src/mage/cards/c/CullingScales.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author cg5
*/
-public class CullingScales extends CardImpl {
+public final class CullingScales extends CardImpl {
private static final FilterPermanent filterNonlandPermanentWithLowestCmc = new FilterNonlandPermanent(
"nonland permanent with the lowest converted mana cost (If two or more permanents are tied for lowest cost, target any one of them.)"
diff --git a/Mage.Sets/src/mage/cards/c/CullingSun.java b/Mage.Sets/src/mage/cards/c/CullingSun.java
index 343566c2571..4ddeaa44725 100644
--- a/Mage.Sets/src/mage/cards/c/CullingSun.java
+++ b/Mage.Sets/src/mage/cards/c/CullingSun.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
*
* @author Loki
*/
-public class CullingSun extends CardImpl {
+public final class CullingSun extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with converted mana cost 3 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CullingTheWeak.java b/Mage.Sets/src/mage/cards/c/CullingTheWeak.java
index 1c38f88dc9c..3bc60cd9c46 100644
--- a/Mage.Sets/src/mage/cards/c/CullingTheWeak.java
+++ b/Mage.Sets/src/mage/cards/c/CullingTheWeak.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class CullingTheWeak extends CardImpl {
+public final class CullingTheWeak extends CardImpl {
public CullingTheWeak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java b/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java
index f9b0619e2c4..50e49131485 100644
--- a/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java
+++ b/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.WolfToken;
*
* @author LevelX2
*/
-public class CultOfTheWaxingMoon extends CardImpl {
+public final class CultOfTheWaxingMoon extends CardImpl {
public CultOfTheWaxingMoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CultbrandCinder.java b/Mage.Sets/src/mage/cards/c/CultbrandCinder.java
index 8aa1cdec0de..f34980ace09 100644
--- a/Mage.Sets/src/mage/cards/c/CultbrandCinder.java
+++ b/Mage.Sets/src/mage/cards/c/CultbrandCinder.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class CultbrandCinder extends CardImpl {
+public final class CultbrandCinder extends CardImpl {
public CultbrandCinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/c/CultistsStaff.java b/Mage.Sets/src/mage/cards/c/CultistsStaff.java
index 184d283d74c..5ea3ac21f55 100644
--- a/Mage.Sets/src/mage/cards/c/CultistsStaff.java
+++ b/Mage.Sets/src/mage/cards/c/CultistsStaff.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class CultistsStaff extends CardImpl {
+public final class CultistsStaff extends CardImpl {
public CultistsStaff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/Cultivate.java b/Mage.Sets/src/mage/cards/c/Cultivate.java
index 2959af31e44..c5073b380e0 100644
--- a/Mage.Sets/src/mage/cards/c/Cultivate.java
+++ b/Mage.Sets/src/mage/cards/c/Cultivate.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Cultivate extends CardImpl {
+public final class Cultivate extends CardImpl {
public Cultivate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
@@ -92,7 +92,7 @@ class CultivateEffect extends OneShotEffect {
if (controller == null || sourceObject == null) {
return false;
}
- TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, game)) {
if (!target.getTargets().isEmpty()) {
Cards revealed = new CardsImpl(target.getTargets());
diff --git a/Mage.Sets/src/mage/cards/c/CultivatorDrone.java b/Mage.Sets/src/mage/cards/c/CultivatorDrone.java
index 9c7926313ab..5304317616e 100644
--- a/Mage.Sets/src/mage/cards/c/CultivatorDrone.java
+++ b/Mage.Sets/src/mage/cards/c/CultivatorDrone.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class CultivatorDrone extends CardImpl {
+public final class CultivatorDrone extends CardImpl {
public CultivatorDrone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CultivatorOfBlades.java b/Mage.Sets/src/mage/cards/c/CultivatorOfBlades.java
index d5acad521de..46e64cad4c3 100644
--- a/Mage.Sets/src/mage/cards/c/CultivatorOfBlades.java
+++ b/Mage.Sets/src/mage/cards/c/CultivatorOfBlades.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class CultivatorOfBlades extends CardImpl {
+public final class CultivatorOfBlades extends CardImpl {
public CultivatorOfBlades(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CultivatorsCaravan.java b/Mage.Sets/src/mage/cards/c/CultivatorsCaravan.java
index 48066af54cc..d1855a64139 100644
--- a/Mage.Sets/src/mage/cards/c/CultivatorsCaravan.java
+++ b/Mage.Sets/src/mage/cards/c/CultivatorsCaravan.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class CultivatorsCaravan extends CardImpl {
+public final class CultivatorsCaravan extends CardImpl {
public CultivatorsCaravan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CulturalExchange.java b/Mage.Sets/src/mage/cards/c/CulturalExchange.java
index bb81b4b40a7..d09d4cc9856 100644
--- a/Mage.Sets/src/mage/cards/c/CulturalExchange.java
+++ b/Mage.Sets/src/mage/cards/c/CulturalExchange.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class CulturalExchange extends CardImpl {
+public final class CulturalExchange extends CardImpl {
public CulturalExchange(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CumberStone.java b/Mage.Sets/src/mage/cards/c/CumberStone.java
index 1c299c8ef9f..7bbf95ee25b 100644
--- a/Mage.Sets/src/mage/cards/c/CumberStone.java
+++ b/Mage.Sets/src/mage/cards/c/CumberStone.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class CumberStone extends CardImpl {
+public final class CumberStone extends CardImpl {
public CumberStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CunningAbduction.java b/Mage.Sets/src/mage/cards/c/CunningAbduction.java
index ec2de76adcb..23da5257925 100644
--- a/Mage.Sets/src/mage/cards/c/CunningAbduction.java
+++ b/Mage.Sets/src/mage/cards/c/CunningAbduction.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author Styxo
*/
-public class CunningAbduction extends CardImpl {
+public final class CunningAbduction extends CardImpl {
public CunningAbduction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CunningAdvisor.java b/Mage.Sets/src/mage/cards/c/CunningAdvisor.java
index d9f52cdff44..e6f7c07be85 100644
--- a/Mage.Sets/src/mage/cards/c/CunningAdvisor.java
+++ b/Mage.Sets/src/mage/cards/c/CunningAdvisor.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class CunningAdvisor extends CardImpl {
+public final class CunningAdvisor extends CardImpl {
public CunningAdvisor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CunningBandit.java b/Mage.Sets/src/mage/cards/c/CunningBandit.java
index 2267a698de5..e366885ffa4 100644
--- a/Mage.Sets/src/mage/cards/c/CunningBandit.java
+++ b/Mage.Sets/src/mage/cards/c/CunningBandit.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CunningBandit extends CardImpl {
+public final class CunningBandit extends CardImpl {
public CunningBandit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CunningBreezedancer.java b/Mage.Sets/src/mage/cards/c/CunningBreezedancer.java
index d166055c55d..90354f22857 100644
--- a/Mage.Sets/src/mage/cards/c/CunningBreezedancer.java
+++ b/Mage.Sets/src/mage/cards/c/CunningBreezedancer.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class CunningBreezedancer extends CardImpl {
+public final class CunningBreezedancer extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/c/CunningLethemancer.java b/Mage.Sets/src/mage/cards/c/CunningLethemancer.java
index 586303715fa..019b691d09e 100644
--- a/Mage.Sets/src/mage/cards/c/CunningLethemancer.java
+++ b/Mage.Sets/src/mage/cards/c/CunningLethemancer.java
@@ -41,7 +41,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author North
*/
-public class CunningLethemancer extends CardImpl {
+public final class CunningLethemancer extends CardImpl {
public CunningLethemancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CunningSparkmage.java b/Mage.Sets/src/mage/cards/c/CunningSparkmage.java
index 052abacea81..253bfcbcaca 100644
--- a/Mage.Sets/src/mage/cards/c/CunningSparkmage.java
+++ b/Mage.Sets/src/mage/cards/c/CunningSparkmage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class CunningSparkmage extends CardImpl {
+public final class CunningSparkmage extends CardImpl {
public CunningSparkmage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CunningStrike.java b/Mage.Sets/src/mage/cards/c/CunningStrike.java
index 6d2f946bee9..03b0fcb21e3 100644
--- a/Mage.Sets/src/mage/cards/c/CunningStrike.java
+++ b/Mage.Sets/src/mage/cards/c/CunningStrike.java
@@ -43,7 +43,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author fireshoes
*/
-public class CunningStrike extends CardImpl {
+public final class CunningStrike extends CardImpl {
public CunningStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CunningSurvivor.java b/Mage.Sets/src/mage/cards/c/CunningSurvivor.java
index 65eea723d8f..e676624c73a 100644
--- a/Mage.Sets/src/mage/cards/c/CunningSurvivor.java
+++ b/Mage.Sets/src/mage/cards/c/CunningSurvivor.java
@@ -44,7 +44,7 @@ import mage.constants.Duration;
*
* @author emerald000
*/
-public class CunningSurvivor extends CardImpl {
+public final class CunningSurvivor extends CardImpl {
public CunningSurvivor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CunningWish.java b/Mage.Sets/src/mage/cards/c/CunningWish.java
index 23a2e3aaef2..d6f9c8bd0d3 100644
--- a/Mage.Sets/src/mage/cards/c/CunningWish.java
+++ b/Mage.Sets/src/mage/cards/c/CunningWish.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class CunningWish extends CardImpl {
+public final class CunningWish extends CardImpl {
private static final FilterCard filter = new FilterCard("an instant card");
diff --git a/Mage.Sets/src/mage/cards/c/CuombajjWitches.java b/Mage.Sets/src/mage/cards/c/CuombajjWitches.java
index 0012e9e2551..112ca0b0883 100644
--- a/Mage.Sets/src/mage/cards/c/CuombajjWitches.java
+++ b/Mage.Sets/src/mage/cards/c/CuombajjWitches.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
* @author LoneFox
*/
-public class CuombajjWitches extends CardImpl {
+public final class CuombajjWitches extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/c/CuratorOfMysteries.java b/Mage.Sets/src/mage/cards/c/CuratorOfMysteries.java
index 789aa0c95f0..37fbf22f181 100644
--- a/Mage.Sets/src/mage/cards/c/CuratorOfMysteries.java
+++ b/Mage.Sets/src/mage/cards/c/CuratorOfMysteries.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CuratorOfMysteries extends CardImpl {
+public final class CuratorOfMysteries extends CardImpl {
public CuratorOfMysteries(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CuratorsWard.java b/Mage.Sets/src/mage/cards/c/CuratorsWard.java
index 45e65822634..9feb0097c67 100644
--- a/Mage.Sets/src/mage/cards/c/CuratorsWard.java
+++ b/Mage.Sets/src/mage/cards/c/CuratorsWard.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author keelahnkhan
*/
-public class CuratorsWard extends CardImpl {
+public final class CuratorsWard extends CardImpl {
public CuratorsWard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Curfew.java b/Mage.Sets/src/mage/cards/c/Curfew.java
index 632733fd2fa..99d53efb11b 100644
--- a/Mage.Sets/src/mage/cards/c/Curfew.java
+++ b/Mage.Sets/src/mage/cards/c/Curfew.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author maxlebedev
*/
-public class Curfew extends CardImpl {
+public final class Curfew extends CardImpl {
public Curfew(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CurioVendor.java b/Mage.Sets/src/mage/cards/c/CurioVendor.java
index eab9d079338..0e7a08c0cc2 100644
--- a/Mage.Sets/src/mage/cards/c/CurioVendor.java
+++ b/Mage.Sets/src/mage/cards/c/CurioVendor.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CurioVendor extends CardImpl {
+public final class CurioVendor extends CardImpl {
public CurioVendor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/Curiosity.java b/Mage.Sets/src/mage/cards/c/Curiosity.java
index e096c5d1c69..d0d9ac7195d 100644
--- a/Mage.Sets/src/mage/cards/c/Curiosity.java
+++ b/Mage.Sets/src/mage/cards/c/Curiosity.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Alvin, noxx
*/
-public class Curiosity extends CardImpl {
+public final class Curiosity extends CardImpl {
public Curiosity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CuriousHomunculus.java b/Mage.Sets/src/mage/cards/c/CuriousHomunculus.java
index bdc106c205c..6cd937e933f 100644
--- a/Mage.Sets/src/mage/cards/c/CuriousHomunculus.java
+++ b/Mage.Sets/src/mage/cards/c/CuriousHomunculus.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class CuriousHomunculus extends CardImpl {
+public final class CuriousHomunculus extends CardImpl {
public CuriousHomunculus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CuriousKillbot.java b/Mage.Sets/src/mage/cards/c/CuriousKillbot.java
index 692c666743c..41159d4fa36 100644
--- a/Mage.Sets/src/mage/cards/c/CuriousKillbot.java
+++ b/Mage.Sets/src/mage/cards/c/CuriousKillbot.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class CuriousKillbot extends CardImpl {
+public final class CuriousKillbot extends CardImpl {
public CuriousKillbot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CuriousObsession.java b/Mage.Sets/src/mage/cards/c/CuriousObsession.java
index d57baf7085f..2e4cdd5fbaa 100644
--- a/Mage.Sets/src/mage/cards/c/CuriousObsession.java
+++ b/Mage.Sets/src/mage/cards/c/CuriousObsession.java
@@ -57,7 +57,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author LevelX2
*/
-public class CuriousObsession extends CardImpl {
+public final class CuriousObsession extends CardImpl {
public CuriousObsession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseArtifact.java b/Mage.Sets/src/mage/cards/c/CurseArtifact.java
index 1521a7da54b..cc3abf81423 100644
--- a/Mage.Sets/src/mage/cards/c/CurseArtifact.java
+++ b/Mage.Sets/src/mage/cards/c/CurseArtifact.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LoneFox & L_J
*/
-public class CurseArtifact extends CardImpl {
+public final class CurseArtifact extends CardImpl {
public CurseArtifact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfBloodletting.java b/Mage.Sets/src/mage/cards/c/CurseOfBloodletting.java
index 14a92b7d164..87f359c684c 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfBloodletting.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfBloodletting.java
@@ -46,7 +46,7 @@ import mage.util.CardUtil;
*
* @author BetaSteward
*/
-public class CurseOfBloodletting extends CardImpl {
+public final class CurseOfBloodletting extends CardImpl {
public CurseOfBloodletting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfBounty.java b/Mage.Sets/src/mage/cards/c/CurseOfBounty.java
index 3bd23ce1ba7..25c842bda60 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfBounty.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfBounty.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author Saga
*/
-public class CurseOfBounty extends CardImpl {
+public final class CurseOfBounty extends CardImpl {
public CurseOfBounty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfChains.java b/Mage.Sets/src/mage/cards/c/CurseOfChains.java
index 032d68abd28..ed4561c52d8 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfChains.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfChains.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CurseOfChains extends CardImpl {
+public final class CurseOfChains extends CardImpl {
public CurseOfChains(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfChaos.java b/Mage.Sets/src/mage/cards/c/CurseOfChaos.java
index 6c6da26808f..f92a7be34c2 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfChaos.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfChaos.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class CurseOfChaos extends CardImpl {
+public final class CurseOfChaos extends CardImpl {
public CurseOfChaos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfDeathsHold.java b/Mage.Sets/src/mage/cards/c/CurseOfDeathsHold.java
index b5a0da4df20..e116910ebb9 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfDeathsHold.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfDeathsHold.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author BetaSteward
*/
-public class CurseOfDeathsHold extends CardImpl {
+public final class CurseOfDeathsHold extends CardImpl {
public CurseOfDeathsHold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfDisturbance.java b/Mage.Sets/src/mage/cards/c/CurseOfDisturbance.java
index a7e6cedd2f4..46010b040b5 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfDisturbance.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfDisturbance.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Saga
*/
-public class CurseOfDisturbance extends CardImpl {
+public final class CurseOfDisturbance extends CardImpl {
public CurseOfDisturbance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfEchoes.java b/Mage.Sets/src/mage/cards/c/CurseOfEchoes.java
index 96e43762b90..ce29c542cd1 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfEchoes.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfEchoes.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author BetaSteward
*/
-public class CurseOfEchoes extends CardImpl {
+public final class CurseOfEchoes extends CardImpl {
public CurseOfEchoes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfExhaustion.java b/Mage.Sets/src/mage/cards/c/CurseOfExhaustion.java
index 6d783e8ed11..9f0702d0bae 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfExhaustion.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfExhaustion.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author BetaSteward
*/
-public class CurseOfExhaustion extends CardImpl {
+public final class CurseOfExhaustion extends CardImpl {
public CurseOfExhaustion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfInertia.java b/Mage.Sets/src/mage/cards/c/CurseOfInertia.java
index 9bba2d9d7b4..f045773501f 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfInertia.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfInertia.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class CurseOfInertia extends CardImpl {
+public final class CurseOfInertia extends CardImpl {
public CurseOfInertia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfMaritLage.java b/Mage.Sets/src/mage/cards/c/CurseOfMaritLage.java
index 6c95d339c25..cf2df502aea 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfMaritLage.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfMaritLage.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class CurseOfMaritLage extends CardImpl {
+public final class CurseOfMaritLage extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Islands");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java b/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java
index ea26695acdf..f0e710fafa9 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java
@@ -57,7 +57,7 @@ import java.util.UUID;
*
* @author BetaSteward
*/
-public class CurseOfMisfortunes extends CardImpl {
+public final class CurseOfMisfortunes extends CardImpl {
public CurseOfMisfortunes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java b/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java
index aa2d262d4f5..1800a23fad7 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author BetaSteward
*/
-public class CurseOfOblivion extends CardImpl {
+public final class CurseOfOblivion extends CardImpl {
public CurseOfOblivion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfOpulence.java b/Mage.Sets/src/mage/cards/c/CurseOfOpulence.java
index d3baa57f299..3c5e03431f4 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfOpulence.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfOpulence.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Saga
*/
-public class CurseOfOpulence extends CardImpl {
+public final class CurseOfOpulence extends CardImpl {
public CurseOfOpulence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfPredation.java b/Mage.Sets/src/mage/cards/c/CurseOfPredation.java
index 7f08c5dd062..dbc2bd63154 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfPredation.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfPredation.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class CurseOfPredation extends CardImpl {
+public final class CurseOfPredation extends CardImpl {
public CurseOfPredation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfShallowGraves.java b/Mage.Sets/src/mage/cards/c/CurseOfShallowGraves.java
index 9c5674ceb48..56a1f98b59d 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfShallowGraves.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfShallowGraves.java
@@ -56,7 +56,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class CurseOfShallowGraves extends CardImpl {
+public final class CurseOfShallowGraves extends CardImpl {
public CurseOfShallowGraves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfStalkedPrey.java b/Mage.Sets/src/mage/cards/c/CurseOfStalkedPrey.java
index 45962e0e494..86a119b46fe 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfStalkedPrey.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfStalkedPrey.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author BetaSteward
*/
-public class CurseOfStalkedPrey extends CardImpl {
+public final class CurseOfStalkedPrey extends CardImpl {
public CurseOfStalkedPrey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfTheBloodyTome.java b/Mage.Sets/src/mage/cards/c/CurseOfTheBloodyTome.java
index 96df62b5914..c9423a16879 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfTheBloodyTome.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfTheBloodyTome.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author Alvin
*/
-public class CurseOfTheBloodyTome extends CardImpl {
+public final class CurseOfTheBloodyTome extends CardImpl {
public CurseOfTheBloodyTome(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfTheCabal.java b/Mage.Sets/src/mage/cards/c/CurseOfTheCabal.java
index 6ec8aa4ea76..cdc20604b93 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfTheCabal.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfTheCabal.java
@@ -60,7 +60,7 @@ import java.util.UUID;
*
* @author anonymous
*/
-public class CurseOfTheCabal extends CardImpl {
+public final class CurseOfTheCabal extends CardImpl {
public CurseOfTheCabal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{9}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfTheForsaken.java b/Mage.Sets/src/mage/cards/c/CurseOfTheForsaken.java
index 31c9ee4413b..6a34d3b1637 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfTheForsaken.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfTheForsaken.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class CurseOfTheForsaken extends CardImpl {
+public final class CurseOfTheForsaken extends CardImpl {
public CurseOfTheForsaken(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfTheNightlyHunt.java b/Mage.Sets/src/mage/cards/c/CurseOfTheNightlyHunt.java
index c03dd3eb7e1..1647019285b 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfTheNightlyHunt.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfTheNightlyHunt.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author BetaSteward
*/
-public class CurseOfTheNightlyHunt extends CardImpl {
+public final class CurseOfTheNightlyHunt extends CardImpl {
public CurseOfTheNightlyHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfThePiercedHeart.java b/Mage.Sets/src/mage/cards/c/CurseOfThePiercedHeart.java
index 520e3992b41..59dbaa71b55 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfThePiercedHeart.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfThePiercedHeart.java
@@ -55,7 +55,7 @@ import mage.target.TargetPermanent;
*
* @author BetaSteward
*/
-public class CurseOfThePiercedHeart extends CardImpl {
+public final class CurseOfThePiercedHeart extends CardImpl {
public CurseOfThePiercedHeart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfTheSwine.java b/Mage.Sets/src/mage/cards/c/CurseOfTheSwine.java
index 51bb5df07da..e23256486f7 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfTheSwine.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfTheSwine.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CurseOfTheSwine extends CardImpl {
+public final class CurseOfTheSwine extends CardImpl {
public CurseOfTheSwine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfThirst.java b/Mage.Sets/src/mage/cards/c/CurseOfThirst.java
index 99ee2c1c204..8df9a141544 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfThirst.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfThirst.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author BetaSteward
*/
-public class CurseOfThirst extends CardImpl {
+public final class CurseOfThirst extends CardImpl {
public CurseOfThirst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfVengeance.java b/Mage.Sets/src/mage/cards/c/CurseOfVengeance.java
index dffe0ea851f..2873d1d0770 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfVengeance.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfVengeance.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author spjspj
*/
-public class CurseOfVengeance extends CardImpl {
+public final class CurseOfVengeance extends CardImpl {
public CurseOfVengeance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfVerbosity.java b/Mage.Sets/src/mage/cards/c/CurseOfVerbosity.java
index 3f6545c677d..45635a75aae 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfVerbosity.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfVerbosity.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Saga
*/
-public class CurseOfVerbosity extends CardImpl {
+public final class CurseOfVerbosity extends CardImpl {
public CurseOfVerbosity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfVitality.java b/Mage.Sets/src/mage/cards/c/CurseOfVitality.java
index 95f1d46c159..ef3c85b9b09 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfVitality.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfVitality.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author Saga
*/
-public class CurseOfVitality extends CardImpl {
+public final class CurseOfVitality extends CardImpl {
public CurseOfVitality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfWizardry.java b/Mage.Sets/src/mage/cards/c/CurseOfWizardry.java
index 86abd40f219..cd0bf207315 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfWizardry.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfWizardry.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author jeffwadsworth
*/
-public class CurseOfWizardry extends CardImpl {
+public final class CurseOfWizardry extends CardImpl {
public CurseOfWizardry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/Cursebreak.java b/Mage.Sets/src/mage/cards/c/Cursebreak.java
index e78cff95007..5cb3073bcd5 100644
--- a/Mage.Sets/src/mage/cards/c/Cursebreak.java
+++ b/Mage.Sets/src/mage/cards/c/Cursebreak.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetEnchantmentPermanent;
/**
* @author noxx
*/
-public class Cursebreak extends CardImpl {
+public final class Cursebreak extends CardImpl {
public Cursebreak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/Cursecatcher.java b/Mage.Sets/src/mage/cards/c/Cursecatcher.java
index 36bf35432f8..1db9b1dc1b1 100644
--- a/Mage.Sets/src/mage/cards/c/Cursecatcher.java
+++ b/Mage.Sets/src/mage/cards/c/Cursecatcher.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class Cursecatcher extends CardImpl {
+public final class Cursecatcher extends CardImpl {
public Cursecatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CursedFlesh.java b/Mage.Sets/src/mage/cards/c/CursedFlesh.java
index 45064f5c3bf..39348b4b566 100644
--- a/Mage.Sets/src/mage/cards/c/CursedFlesh.java
+++ b/Mage.Sets/src/mage/cards/c/CursedFlesh.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author michael.napoleon@gmail.com
*/
-public class CursedFlesh extends CardImpl {
+public final class CursedFlesh extends CardImpl {
public CursedFlesh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CursedLand.java b/Mage.Sets/src/mage/cards/c/CursedLand.java
index 07d7cf351b5..36169423a07 100644
--- a/Mage.Sets/src/mage/cards/c/CursedLand.java
+++ b/Mage.Sets/src/mage/cards/c/CursedLand.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class CursedLand extends CardImpl {
+public final class CursedLand extends CardImpl {
public CursedLand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CursedMinotaur.java b/Mage.Sets/src/mage/cards/c/CursedMinotaur.java
index a363957ba02..5fffd119499 100644
--- a/Mage.Sets/src/mage/cards/c/CursedMinotaur.java
+++ b/Mage.Sets/src/mage/cards/c/CursedMinotaur.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CursedMinotaur extends CardImpl {
+public final class CursedMinotaur extends CardImpl {
public CursedMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CursedMonstrosity.java b/Mage.Sets/src/mage/cards/c/CursedMonstrosity.java
index 1402a5bd340..8f77cba882a 100644
--- a/Mage.Sets/src/mage/cards/c/CursedMonstrosity.java
+++ b/Mage.Sets/src/mage/cards/c/CursedMonstrosity.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author cbt33
*/
-public class CursedMonstrosity extends CardImpl {
+public final class CursedMonstrosity extends CardImpl {
public CursedMonstrosity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CursedRack.java b/Mage.Sets/src/mage/cards/c/CursedRack.java
index 34610897b85..1a5f4af7bff 100644
--- a/Mage.Sets/src/mage/cards/c/CursedRack.java
+++ b/Mage.Sets/src/mage/cards/c/CursedRack.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author MarcoMarin
*/
-public class CursedRack extends CardImpl {
+public final class CursedRack extends CardImpl {
public CursedRack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/c/CursedRonin.java b/Mage.Sets/src/mage/cards/c/CursedRonin.java
index c2b49d9d251..8c57e4d38a7 100644
--- a/Mage.Sets/src/mage/cards/c/CursedRonin.java
+++ b/Mage.Sets/src/mage/cards/c/CursedRonin.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class CursedRonin extends CardImpl {
+public final class CursedRonin extends CardImpl {
public CursedRonin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CursedScroll.java b/Mage.Sets/src/mage/cards/c/CursedScroll.java
index cc57140ee9c..1a39f73431b 100644
--- a/Mage.Sets/src/mage/cards/c/CursedScroll.java
+++ b/Mage.Sets/src/mage/cards/c/CursedScroll.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
* @author jeffwadsworth
*
*/
-public class CursedScroll extends CardImpl {
+public final class CursedScroll extends CardImpl {
public CursedScroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/c/CursedTotem.java b/Mage.Sets/src/mage/cards/c/CursedTotem.java
index 0a41419f0b1..6452d8a1606 100644
--- a/Mage.Sets/src/mage/cards/c/CursedTotem.java
+++ b/Mage.Sets/src/mage/cards/c/CursedTotem.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class CursedTotem extends CardImpl {
+public final class CursedTotem extends CardImpl {
public CursedTotem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CurtainOfLight.java b/Mage.Sets/src/mage/cards/c/CurtainOfLight.java
index 9098accfc39..5ca65462662 100644
--- a/Mage.Sets/src/mage/cards/c/CurtainOfLight.java
+++ b/Mage.Sets/src/mage/cards/c/CurtainOfLight.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CurtainOfLight extends CardImpl {
+public final class CurtainOfLight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("unblocked attacking creature");
diff --git a/Mage.Sets/src/mage/cards/c/CurtainsCall.java b/Mage.Sets/src/mage/cards/c/CurtainsCall.java
index 857b99d4087..aefab9a43bc 100644
--- a/Mage.Sets/src/mage/cards/c/CurtainsCall.java
+++ b/Mage.Sets/src/mage/cards/c/CurtainsCall.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CurtainsCall extends CardImpl {
+public final class CurtainsCall extends CardImpl {
public CurtainsCall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CustodiLich.java b/Mage.Sets/src/mage/cards/c/CustodiLich.java
index 0d202720d84..7563d8cb740 100644
--- a/Mage.Sets/src/mage/cards/c/CustodiLich.java
+++ b/Mage.Sets/src/mage/cards/c/CustodiLich.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class CustodiLich extends CardImpl {
+public final class CustodiLich extends CardImpl {
public CustodiLich(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CustodiSoulbinders.java b/Mage.Sets/src/mage/cards/c/CustodiSoulbinders.java
index 135fed12084..0f3cb80bb0b 100644
--- a/Mage.Sets/src/mage/cards/c/CustodiSoulbinders.java
+++ b/Mage.Sets/src/mage/cards/c/CustodiSoulbinders.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author emerald000
*/
-public class CustodiSoulbinders extends CardImpl {
+public final class CustodiSoulbinders extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CustodiSoulcaller.java b/Mage.Sets/src/mage/cards/c/CustodiSoulcaller.java
index eb5a9756df7..8e4242d9a80 100644
--- a/Mage.Sets/src/mage/cards/c/CustodiSoulcaller.java
+++ b/Mage.Sets/src/mage/cards/c/CustodiSoulcaller.java
@@ -55,7 +55,7 @@ import mage.watchers.Watcher;
*
* @author L_J
*/
-public class CustodiSoulcaller extends CardImpl {
+public final class CustodiSoulcaller extends CardImpl {
public CustodiSoulcaller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CustodiSquire.java b/Mage.Sets/src/mage/cards/c/CustodiSquire.java
index dd0f91281c0..f266828a03a 100644
--- a/Mage.Sets/src/mage/cards/c/CustodiSquire.java
+++ b/Mage.Sets/src/mage/cards/c/CustodiSquire.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class CustodiSquire extends CardImpl {
+public final class CustodiSquire extends CardImpl {
public CustodiSquire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/c/CustodianOfTheTrove.java b/Mage.Sets/src/mage/cards/c/CustodianOfTheTrove.java
index 9a4be99ec89..dffb1248ed2 100644
--- a/Mage.Sets/src/mage/cards/c/CustodianOfTheTrove.java
+++ b/Mage.Sets/src/mage/cards/c/CustodianOfTheTrove.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CustodianOfTheTrove extends CardImpl {
+public final class CustodianOfTheTrove extends CardImpl {
public CustodianOfTheTrove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/c/CustodyBattle.java b/Mage.Sets/src/mage/cards/c/CustodyBattle.java
index cff9c850a97..b0f392cbd0f 100644
--- a/Mage.Sets/src/mage/cards/c/CustodyBattle.java
+++ b/Mage.Sets/src/mage/cards/c/CustodyBattle.java
@@ -66,7 +66,7 @@ import mage.util.CardUtil;
*
* @author TheElk801
*/
-public class CustodyBattle extends CardImpl {
+public final class CustodyBattle extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/c/CustomsDepot.java b/Mage.Sets/src/mage/cards/c/CustomsDepot.java
index ce866cd1fcf..a046570ff2a 100644
--- a/Mage.Sets/src/mage/cards/c/CustomsDepot.java
+++ b/Mage.Sets/src/mage/cards/c/CustomsDepot.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author TheElk801
*/
-public class CustomsDepot extends CardImpl {
+public final class CustomsDepot extends CardImpl {
public CustomsDepot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CutRibbons.java b/Mage.Sets/src/mage/cards/c/CutRibbons.java
index ac1e6fa473e..4378f21ff68 100644
--- a/Mage.Sets/src/mage/cards/c/CutRibbons.java
+++ b/Mage.Sets/src/mage/cards/c/CutRibbons.java
@@ -15,7 +15,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Stravant
*/
-public class CutRibbons extends SplitCard {
+public final class CutRibbons extends SplitCard {
public CutRibbons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{1}{R}", "{X}{B}{B}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/c/CutTheEarthlyBond.java b/Mage.Sets/src/mage/cards/c/CutTheEarthlyBond.java
index da11de36637..1439eb8a9a7 100644
--- a/Mage.Sets/src/mage/cards/c/CutTheEarthlyBond.java
+++ b/Mage.Sets/src/mage/cards/c/CutTheEarthlyBond.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class CutTheEarthlyBond extends CardImpl {
+public final class CutTheEarthlyBond extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("enchanted permanent");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CutTheTethers.java b/Mage.Sets/src/mage/cards/c/CutTheTethers.java
index 56592f33718..1d09f259fd0 100644
--- a/Mage.Sets/src/mage/cards/c/CutTheTethers.java
+++ b/Mage.Sets/src/mage/cards/c/CutTheTethers.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class CutTheTethers extends CardImpl {
+public final class CutTheTethers extends CardImpl {
public CutTheTethers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CutthroatIlDal.java b/Mage.Sets/src/mage/cards/c/CutthroatIlDal.java
index c0a3df5cd53..50e2b11c467 100644
--- a/Mage.Sets/src/mage/cards/c/CutthroatIlDal.java
+++ b/Mage.Sets/src/mage/cards/c/CutthroatIlDal.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class CutthroatIlDal extends CardImpl {
+public final class CutthroatIlDal extends CardImpl {
public CutthroatIlDal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CutthroatManeuver.java b/Mage.Sets/src/mage/cards/c/CutthroatManeuver.java
index cbafc300683..edff727e6b5 100644
--- a/Mage.Sets/src/mage/cards/c/CutthroatManeuver.java
+++ b/Mage.Sets/src/mage/cards/c/CutthroatManeuver.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CutthroatManeuver extends CardImpl {
+public final class CutthroatManeuver extends CardImpl {
public CutthroatManeuver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CyclicalEvolution.java b/Mage.Sets/src/mage/cards/c/CyclicalEvolution.java
index 1d50181299a..cbd9788a94a 100644
--- a/Mage.Sets/src/mage/cards/c/CyclicalEvolution.java
+++ b/Mage.Sets/src/mage/cards/c/CyclicalEvolution.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class CyclicalEvolution extends CardImpl {
+public final class CyclicalEvolution extends CardImpl {
public CyclicalEvolution(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/Cyclone.java b/Mage.Sets/src/mage/cards/c/Cyclone.java
index 75647dacc81..afa74e3e071 100644
--- a/Mage.Sets/src/mage/cards/c/Cyclone.java
+++ b/Mage.Sets/src/mage/cards/c/Cyclone.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author MarcoMarin
*/
-public class Cyclone extends CardImpl {
+public final class Cyclone extends CardImpl {
public Cyclone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CycloneSire.java b/Mage.Sets/src/mage/cards/c/CycloneSire.java
index 8dc818dabf1..d40a9d92af1 100644
--- a/Mage.Sets/src/mage/cards/c/CycloneSire.java
+++ b/Mage.Sets/src/mage/cards/c/CycloneSire.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class CycloneSire extends CardImpl {
+public final class CycloneSire extends CardImpl {
public CycloneSire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/c/CyclonicRift.java b/Mage.Sets/src/mage/cards/c/CyclonicRift.java
index 826f7606dcd..2f818a2bad5 100644
--- a/Mage.Sets/src/mage/cards/c/CyclonicRift.java
+++ b/Mage.Sets/src/mage/cards/c/CyclonicRift.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class CyclonicRift extends CardImpl {
+public final class CyclonicRift extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanent you don't control");
diff --git a/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java b/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java
index d945e06ccc0..17c6d3c8da3 100644
--- a/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java
+++ b/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Derpthemeus
*/
-public class CyclopeanMummy extends CardImpl {
+public final class CyclopeanMummy extends CardImpl {
public CyclopeanMummy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/c/CyclopeanSnare.java b/Mage.Sets/src/mage/cards/c/CyclopeanSnare.java
index 2dfe391026f..c08b682d58c 100644
--- a/Mage.Sets/src/mage/cards/c/CyclopeanSnare.java
+++ b/Mage.Sets/src/mage/cards/c/CyclopeanSnare.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class CyclopeanSnare extends CardImpl {
+public final class CyclopeanSnare extends CardImpl {
public CyclopeanSnare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java b/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java
index da16ebabea6..08a086f704f 100644
--- a/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java
+++ b/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java
@@ -66,7 +66,7 @@ import java.util.UUID;
*
* @author MTGfan
*/
-public class CyclopeanTomb extends CardImpl {
+public final class CyclopeanTomb extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/c/CyclopsGladiator.java b/Mage.Sets/src/mage/cards/c/CyclopsGladiator.java
index 93dcf093036..cabf24e3f4f 100644
--- a/Mage.Sets/src/mage/cards/c/CyclopsGladiator.java
+++ b/Mage.Sets/src/mage/cards/c/CyclopsGladiator.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class CyclopsGladiator extends CardImpl {
+public final class CyclopsGladiator extends CardImpl {
public CyclopsGladiator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CyclopsOfEternalFury.java b/Mage.Sets/src/mage/cards/c/CyclopsOfEternalFury.java
index 9f7218d1afd..637e866484c 100644
--- a/Mage.Sets/src/mage/cards/c/CyclopsOfEternalFury.java
+++ b/Mage.Sets/src/mage/cards/c/CyclopsOfEternalFury.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class CyclopsOfEternalFury extends CardImpl {
+public final class CyclopsOfEternalFury extends CardImpl {
public CyclopsOfEternalFury(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/c/CyclopsOfOneEyedPass.java b/Mage.Sets/src/mage/cards/c/CyclopsOfOneEyedPass.java
index 4759f2b9e69..3af8fc43b88 100644
--- a/Mage.Sets/src/mage/cards/c/CyclopsOfOneEyedPass.java
+++ b/Mage.Sets/src/mage/cards/c/CyclopsOfOneEyedPass.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CyclopsOfOneEyedPass extends CardImpl {
+public final class CyclopsOfOneEyedPass extends CardImpl {
public CyclopsOfOneEyedPass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/c/CyclopsTyrant.java b/Mage.Sets/src/mage/cards/c/CyclopsTyrant.java
index 2db10574e00..ef87300e2a6 100644
--- a/Mage.Sets/src/mage/cards/c/CyclopsTyrant.java
+++ b/Mage.Sets/src/mage/cards/c/CyclopsTyrant.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author jeffwadsworth
*/
-public class CyclopsTyrant extends CardImpl {
+public final class CyclopsTyrant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CylianElf.java b/Mage.Sets/src/mage/cards/c/CylianElf.java
index 01323f2c960..ebf95494725 100644
--- a/Mage.Sets/src/mage/cards/c/CylianElf.java
+++ b/Mage.Sets/src/mage/cards/c/CylianElf.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class CylianElf extends CardImpl {
+public final class CylianElf extends CardImpl {
public CylianElf (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CylianSunsinger.java b/Mage.Sets/src/mage/cards/c/CylianSunsinger.java
index 8276e3bdb65..057a92736f6 100644
--- a/Mage.Sets/src/mage/cards/c/CylianSunsinger.java
+++ b/Mage.Sets/src/mage/cards/c/CylianSunsinger.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author jeffwadsworth
*/
-public class CylianSunsinger extends CardImpl {
+public final class CylianSunsinger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Cylian Sunsinger and each other creature with the same name");
diff --git a/Mage.Sets/src/mage/cards/c/Cystbearer.java b/Mage.Sets/src/mage/cards/c/Cystbearer.java
index 22f99998873..0f8255efe74 100644
--- a/Mage.Sets/src/mage/cards/c/Cystbearer.java
+++ b/Mage.Sets/src/mage/cards/c/Cystbearer.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author nantuko
*/
-public class Cystbearer extends CardImpl {
+public final class Cystbearer extends CardImpl {
public Cystbearer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/c/CytoplastManipulator.java b/Mage.Sets/src/mage/cards/c/CytoplastManipulator.java
index 469b6d334bb..3369be919e6 100644
--- a/Mage.Sets/src/mage/cards/c/CytoplastManipulator.java
+++ b/Mage.Sets/src/mage/cards/c/CytoplastManipulator.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JotaPeRL
*/
-public class CytoplastManipulator extends CardImpl {
+public final class CytoplastManipulator extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/c/CytoplastRootKin.java b/Mage.Sets/src/mage/cards/c/CytoplastRootKin.java
index 805d7991b1a..b99298bc2e1 100644
--- a/Mage.Sets/src/mage/cards/c/CytoplastRootKin.java
+++ b/Mage.Sets/src/mage/cards/c/CytoplastRootKin.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class CytoplastRootKin extends CardImpl {
+public final class CytoplastRootKin extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other creature you control that has a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/c/Cytoshape.java b/Mage.Sets/src/mage/cards/c/Cytoshape.java
index 72bddeb4f4b..8b91853477c 100644
--- a/Mage.Sets/src/mage/cards/c/Cytoshape.java
+++ b/Mage.Sets/src/mage/cards/c/Cytoshape.java
@@ -1,113 +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.c;
-
-import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.effects.OneShotEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.Outcome;
-import mage.constants.SuperType;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.Predicates;
-import mage.filter.predicate.mageobject.SupertypePredicate;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.target.Target;
-import mage.target.common.TargetCreaturePermanent;
-import mage.util.functions.EmptyApplyToPermanent;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class Cytoshape extends CardImpl {
-
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonlegendary creature");
-
- static {
- filter.add(Predicates.not(new SupertypePredicate(SuperType.LEGENDARY)));
- }
-
- public Cytoshape(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}{U}");
-
- // Choose a nonlegendary creature on the battlefield. Target creature becomes a copy of that creature until end of turn.
- this.getSpellAbility().addEffect(new CytoshapeEffect());
- Target target = new TargetCreaturePermanent(1, 1, filter, true);
- target.setTargetTag(1);
- this.getSpellAbility().addTarget(target);
-
- FilterCreaturePermanent filter2 = new FilterCreaturePermanent("target creature that will become a copy of that chosen creature");
- target = new TargetCreaturePermanent(filter2);
- target.setTargetTag(2);
- this.getSpellAbility().addTarget(target);
-
- }
-
- public Cytoshape(final Cytoshape card) {
- super(card);
- }
-
- @Override
- public Cytoshape copy() {
- return new Cytoshape(this);
- }
-}
-
-class CytoshapeEffect extends OneShotEffect {
-
- public CytoshapeEffect() {
- super(Outcome.Copy);
- this.staticText = "Choose a nonlegendary creature on the battlefield. Target creature becomes a copy of that creature until end of turn.";
- }
-
- public CytoshapeEffect(final CytoshapeEffect effect) {
- super(effect);
- }
-
- @Override
- public CytoshapeEffect copy() {
- return new CytoshapeEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability ability) {
- Permanent copyFrom = game.getPermanent(getTargetPointer().getFirst(game, ability));
- if (copyFrom != null) {
- Permanent copyTo = game.getPermanentOrLKIBattlefield(ability.getTargets().get(1).getFirstTarget());
- if (copyTo != null) {
- game.copyPermanent(Duration.EndOfTurn, copyFrom, copyTo.getId(), ability, new EmptyApplyToPermanent());
- }
- }
- return true;
- }
-}
+/*
+ * 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.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.SuperType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.SupertypePredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.target.Target;
+import mage.target.common.TargetCreaturePermanent;
+import mage.util.functions.EmptyApplyToPermanent;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class Cytoshape extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonlegendary creature");
+
+ static {
+ filter.add(Predicates.not(new SupertypePredicate(SuperType.LEGENDARY)));
+ }
+
+ public Cytoshape(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}{U}");
+
+ // Choose a nonlegendary creature on the battlefield. Target creature becomes a copy of that creature until end of turn.
+ this.getSpellAbility().addEffect(new CytoshapeEffect());
+ Target target = new TargetCreaturePermanent(1, 1, filter, true);
+ target.setTargetTag(1);
+ this.getSpellAbility().addTarget(target);
+
+ FilterCreaturePermanent filter2 = new FilterCreaturePermanent("target creature that will become a copy of that chosen creature");
+ target = new TargetCreaturePermanent(filter2);
+ target.setTargetTag(2);
+ this.getSpellAbility().addTarget(target);
+
+ }
+
+ public Cytoshape(final Cytoshape card) {
+ super(card);
+ }
+
+ @Override
+ public Cytoshape copy() {
+ return new Cytoshape(this);
+ }
+}
+
+class CytoshapeEffect extends OneShotEffect {
+
+ public CytoshapeEffect() {
+ super(Outcome.Copy);
+ this.staticText = "Choose a nonlegendary creature on the battlefield. Target creature becomes a copy of that creature until end of turn.";
+ }
+
+ public CytoshapeEffect(final CytoshapeEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public CytoshapeEffect copy() {
+ return new CytoshapeEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability ability) {
+ Permanent copyFrom = game.getPermanent(getTargetPointer().getFirst(game, ability));
+ if (copyFrom != null) {
+ Permanent copyTo = game.getPermanentOrLKIBattlefield(ability.getTargets().get(1).getFirstTarget());
+ if (copyTo != null) {
+ game.copyPermanent(Duration.EndOfTurn, copyFrom, copyTo.getId(), ability, new EmptyApplyToPermanent());
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/c/CytospawnShambler.java b/Mage.Sets/src/mage/cards/c/CytospawnShambler.java
index 820ff1953ff..6ec700372e7 100644
--- a/Mage.Sets/src/mage/cards/c/CytospawnShambler.java
+++ b/Mage.Sets/src/mage/cards/c/CytospawnShambler.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JotaPeRL
*/
-public class CytospawnShambler extends CardImpl {
+public final class CytospawnShambler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DAvenantArcher.java b/Mage.Sets/src/mage/cards/d/DAvenantArcher.java
index a78f57c0de3..a1f5d31f01d 100644
--- a/Mage.Sets/src/mage/cards/d/DAvenantArcher.java
+++ b/Mage.Sets/src/mage/cards/d/DAvenantArcher.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author Quercitron
*/
-public class DAvenantArcher extends CardImpl {
+public final class DAvenantArcher extends CardImpl {
public DAvenantArcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DAvenantHealer.java b/Mage.Sets/src/mage/cards/d/DAvenantHealer.java
index 5c67de59df0..1ed547c2074 100644
--- a/Mage.Sets/src/mage/cards/d/DAvenantHealer.java
+++ b/Mage.Sets/src/mage/cards/d/DAvenantHealer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreatureOrPlayer;
*
* @author LoneFox
*/
-public class DAvenantHealer extends CardImpl {
+public final class DAvenantHealer extends CardImpl {
public DAvenantHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DAvenantTrapper.java b/Mage.Sets/src/mage/cards/d/DAvenantTrapper.java
index b389aaa7c96..b8b9a5466b5 100644
--- a/Mage.Sets/src/mage/cards/d/DAvenantTrapper.java
+++ b/Mage.Sets/src/mage/cards/d/DAvenantTrapper.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author TheElk801
*/
-public class DAvenantTrapper extends CardImpl {
+public final class DAvenantTrapper extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a historic spell");
diff --git a/Mage.Sets/src/mage/cards/d/DackFayden.java b/Mage.Sets/src/mage/cards/d/DackFayden.java
index 08760be9006..c1a4e4ec7d4 100644
--- a/Mage.Sets/src/mage/cards/d/DackFayden.java
+++ b/Mage.Sets/src/mage/cards/d/DackFayden.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author emerald000
*/
-public class DackFayden extends CardImpl {
+public final class DackFayden extends CardImpl {
public DackFayden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DacksDuplicate.java b/Mage.Sets/src/mage/cards/d/DacksDuplicate.java
index 07f784dc603..1c10fea8661 100644
--- a/Mage.Sets/src/mage/cards/d/DacksDuplicate.java
+++ b/Mage.Sets/src/mage/cards/d/DacksDuplicate.java
@@ -49,7 +49,7 @@ import mage.util.functions.ApplyToPermanent;
*
* @author LevelX2
*/
-public class DacksDuplicate extends CardImpl {
+public final class DacksDuplicate extends CardImpl {
public DacksDuplicate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DaggerOfTheWorthy.java b/Mage.Sets/src/mage/cards/d/DaggerOfTheWorthy.java
index 7214f3c103c..4e64451d908 100644
--- a/Mage.Sets/src/mage/cards/d/DaggerOfTheWorthy.java
+++ b/Mage.Sets/src/mage/cards/d/DaggerOfTheWorthy.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author ciaccona007
*/
-public class DaggerOfTheWorthy extends CardImpl {
+public final class DaggerOfTheWorthy extends CardImpl {
public DaggerOfTheWorthy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/d/DaggerbackBasilisk.java b/Mage.Sets/src/mage/cards/d/DaggerbackBasilisk.java
index 2eaf485402e..ca0d2b84b27 100644
--- a/Mage.Sets/src/mage/cards/d/DaggerbackBasilisk.java
+++ b/Mage.Sets/src/mage/cards/d/DaggerbackBasilisk.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DaggerbackBasilisk extends CardImpl {
+public final class DaggerbackBasilisk extends CardImpl {
public DaggerbackBasilisk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DaggerclawImp.java b/Mage.Sets/src/mage/cards/d/DaggerclawImp.java
index d0368d138ea..0ab38913275 100644
--- a/Mage.Sets/src/mage/cards/d/DaggerclawImp.java
+++ b/Mage.Sets/src/mage/cards/d/DaggerclawImp.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DaggerclawImp extends CardImpl {
+public final class DaggerclawImp extends CardImpl {
public DaggerclawImp (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DaggerdromeImp.java b/Mage.Sets/src/mage/cards/d/DaggerdromeImp.java
index 1d4f2ce3970..a7d69abec74 100644
--- a/Mage.Sets/src/mage/cards/d/DaggerdromeImp.java
+++ b/Mage.Sets/src/mage/cards/d/DaggerdromeImp.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DaggerdromeImp extends CardImpl {
+public final class DaggerdromeImp extends CardImpl {
public DaggerdromeImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DaghatarTheAdamant.java b/Mage.Sets/src/mage/cards/d/DaghatarTheAdamant.java
index b3a102289ad..c7656248d15 100644
--- a/Mage.Sets/src/mage/cards/d/DaghatarTheAdamant.java
+++ b/Mage.Sets/src/mage/cards/d/DaghatarTheAdamant.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DaghatarTheAdamant extends CardImpl {
+public final class DaghatarTheAdamant extends CardImpl {
public DaghatarTheAdamant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DagobahMawSlug.java b/Mage.Sets/src/mage/cards/d/DagobahMawSlug.java
index d52589b1fe8..c4f144a38b8 100644
--- a/Mage.Sets/src/mage/cards/d/DagobahMawSlug.java
+++ b/Mage.Sets/src/mage/cards/d/DagobahMawSlug.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class DagobahMawSlug extends CardImpl {
+public final class DagobahMawSlug extends CardImpl {
public DagobahMawSlug(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DailyRegimen.java b/Mage.Sets/src/mage/cards/d/DailyRegimen.java
index fd7553fe43b..563879eaaca 100644
--- a/Mage.Sets/src/mage/cards/d/DailyRegimen.java
+++ b/Mage.Sets/src/mage/cards/d/DailyRegimen.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DailyRegimen extends CardImpl {
+public final class DailyRegimen extends CardImpl {
public DailyRegimen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DakkonBlackblade.java b/Mage.Sets/src/mage/cards/d/DakkonBlackblade.java
index 768c361794b..332917afd5a 100644
--- a/Mage.Sets/src/mage/cards/d/DakkonBlackblade.java
+++ b/Mage.Sets/src/mage/cards/d/DakkonBlackblade.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author fireshoes
*/
-public class DakkonBlackblade extends CardImpl {
+public final class DakkonBlackblade extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("lands you control");
diff --git a/Mage.Sets/src/mage/cards/d/DakmorBat.java b/Mage.Sets/src/mage/cards/d/DakmorBat.java
index 87b85d05df7..9d6cd153ab1 100644
--- a/Mage.Sets/src/mage/cards/d/DakmorBat.java
+++ b/Mage.Sets/src/mage/cards/d/DakmorBat.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class DakmorBat extends CardImpl {
+public final class DakmorBat extends CardImpl {
public DakmorBat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DakmorGhoul.java b/Mage.Sets/src/mage/cards/d/DakmorGhoul.java
index 0a741d6b23a..fa6d5c5d451 100644
--- a/Mage.Sets/src/mage/cards/d/DakmorGhoul.java
+++ b/Mage.Sets/src/mage/cards/d/DakmorGhoul.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class DakmorGhoul extends CardImpl {
+public final class DakmorGhoul extends CardImpl {
public DakmorGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DakmorLancer.java b/Mage.Sets/src/mage/cards/d/DakmorLancer.java
index b6a0455b881..ae33e231818 100644
--- a/Mage.Sets/src/mage/cards/d/DakmorLancer.java
+++ b/Mage.Sets/src/mage/cards/d/DakmorLancer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class DakmorLancer extends CardImpl {
+public final class DakmorLancer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/d/DakmorPlague.java b/Mage.Sets/src/mage/cards/d/DakmorPlague.java
index c5722d2eb7d..7f37349c1bd 100644
--- a/Mage.Sets/src/mage/cards/d/DakmorPlague.java
+++ b/Mage.Sets/src/mage/cards/d/DakmorPlague.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class DakmorPlague extends CardImpl {
+public final class DakmorPlague extends CardImpl {
public DakmorPlague(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DakmorSalvage.java b/Mage.Sets/src/mage/cards/d/DakmorSalvage.java
index 1c5f2b90373..4faa7fe23fe 100644
--- a/Mage.Sets/src/mage/cards/d/DakmorSalvage.java
+++ b/Mage.Sets/src/mage/cards/d/DakmorSalvage.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class DakmorSalvage extends CardImpl {
+public final class DakmorSalvage extends CardImpl {
public DakmorSalvage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/DakmorScorpion.java b/Mage.Sets/src/mage/cards/d/DakmorScorpion.java
index a536967fb54..5d10fb354ba 100644
--- a/Mage.Sets/src/mage/cards/d/DakmorScorpion.java
+++ b/Mage.Sets/src/mage/cards/d/DakmorScorpion.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class DakmorScorpion extends CardImpl {
+public final class DakmorScorpion extends CardImpl {
public DakmorScorpion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DakmorSorceress.java b/Mage.Sets/src/mage/cards/d/DakmorSorceress.java
index d66eec76cea..d483c2cc996 100644
--- a/Mage.Sets/src/mage/cards/d/DakmorSorceress.java
+++ b/Mage.Sets/src/mage/cards/d/DakmorSorceress.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class DakmorSorceress extends CardImpl {
+public final class DakmorSorceress extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Swamps you control");
diff --git a/Mage.Sets/src/mage/cards/d/DakraMystic.java b/Mage.Sets/src/mage/cards/d/DakraMystic.java
index 19f41e4f16e..fae79ec3faf 100644
--- a/Mage.Sets/src/mage/cards/d/DakraMystic.java
+++ b/Mage.Sets/src/mage/cards/d/DakraMystic.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DakraMystic extends CardImpl {
+public final class DakraMystic extends CardImpl {
public DakraMystic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DamiaSageOfStone.java b/Mage.Sets/src/mage/cards/d/DamiaSageOfStone.java
index 33ae97e9859..7dea3c2128b 100644
--- a/Mage.Sets/src/mage/cards/d/DamiaSageOfStone.java
+++ b/Mage.Sets/src/mage/cards/d/DamiaSageOfStone.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class DamiaSageOfStone extends CardImpl {
+public final class DamiaSageOfStone extends CardImpl {
public DamiaSageOfStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DamnablePact.java b/Mage.Sets/src/mage/cards/d/DamnablePact.java
index 315a4649c9e..1dee876a92b 100644
--- a/Mage.Sets/src/mage/cards/d/DamnablePact.java
+++ b/Mage.Sets/src/mage/cards/d/DamnablePact.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class DamnablePact extends CardImpl {
+public final class DamnablePact extends CardImpl {
public DamnablePact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Damnation.java b/Mage.Sets/src/mage/cards/d/Damnation.java
index 833e9b9577a..53642e6fe00 100644
--- a/Mage.Sets/src/mage/cards/d/Damnation.java
+++ b/Mage.Sets/src/mage/cards/d/Damnation.java
@@ -38,7 +38,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author Loki
*/
-public class Damnation extends CardImpl {
+public final class Damnation extends CardImpl {
public Damnation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DampenThought.java b/Mage.Sets/src/mage/cards/d/DampenThought.java
index 6d323bc386e..57e9306cfae 100644
--- a/Mage.Sets/src/mage/cards/d/DampenThought.java
+++ b/Mage.Sets/src/mage/cards/d/DampenThought.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class DampenThought extends CardImpl {
+public final class DampenThought extends CardImpl {
public DampenThought(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DampeningPulse.java b/Mage.Sets/src/mage/cards/d/DampeningPulse.java
index 72e04d6c9eb..52d26d1e9a7 100644
--- a/Mage.Sets/src/mage/cards/d/DampeningPulse.java
+++ b/Mage.Sets/src/mage/cards/d/DampeningPulse.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class DampeningPulse extends CardImpl {
+public final class DampeningPulse extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/d/DampingField.java b/Mage.Sets/src/mage/cards/d/DampingField.java
index 5aadba05d85..502519dd7bf 100644
--- a/Mage.Sets/src/mage/cards/d/DampingField.java
+++ b/Mage.Sets/src/mage/cards/d/DampingField.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DampingField extends CardImpl {
+public final class DampingField extends CardImpl {
public DampingField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DampingMatrix.java b/Mage.Sets/src/mage/cards/d/DampingMatrix.java
index 0f62c489445..64688eb4945 100644
--- a/Mage.Sets/src/mage/cards/d/DampingMatrix.java
+++ b/Mage.Sets/src/mage/cards/d/DampingMatrix.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class DampingMatrix extends CardImpl {
+public final class DampingMatrix extends CardImpl {
public DampingMatrix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DampingSphere.java b/Mage.Sets/src/mage/cards/d/DampingSphere.java
index 47671961b08..22c896ba072 100644
--- a/Mage.Sets/src/mage/cards/d/DampingSphere.java
+++ b/Mage.Sets/src/mage/cards/d/DampingSphere.java
@@ -51,7 +51,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author L_J
*/
-public class DampingSphere extends CardImpl {
+public final class DampingSphere extends CardImpl {
public DampingSphere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/d/DanceOfMany.java b/Mage.Sets/src/mage/cards/d/DanceOfMany.java
index 773f801ac38..ccd66668c94 100644
--- a/Mage.Sets/src/mage/cards/d/DanceOfMany.java
+++ b/Mage.Sets/src/mage/cards/d/DanceOfMany.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class DanceOfMany extends CardImpl {
+public final class DanceOfMany extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/d/DanceOfShadows.java b/Mage.Sets/src/mage/cards/d/DanceOfShadows.java
index b30f135d698..2bf10bccf91 100644
--- a/Mage.Sets/src/mage/cards/d/DanceOfShadows.java
+++ b/Mage.Sets/src/mage/cards/d/DanceOfShadows.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class DanceOfShadows extends CardImpl {
+public final class DanceOfShadows extends CardImpl {
public DanceOfShadows (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DanceOfTheDead.java b/Mage.Sets/src/mage/cards/d/DanceOfTheDead.java
index f869fbf8cc6..8914a49f97f 100644
--- a/Mage.Sets/src/mage/cards/d/DanceOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/d/DanceOfTheDead.java
@@ -65,7 +65,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DanceOfTheDead extends CardImpl {
+public final class DanceOfTheDead extends CardImpl {
public DanceOfTheDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DanceOfTheSkywise.java b/Mage.Sets/src/mage/cards/d/DanceOfTheSkywise.java
index 876e63b1ff4..b04d9475ef4 100644
--- a/Mage.Sets/src/mage/cards/d/DanceOfTheSkywise.java
+++ b/Mage.Sets/src/mage/cards/d/DanceOfTheSkywise.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class DanceOfTheSkywise extends CardImpl {
+public final class DanceOfTheSkywise extends CardImpl {
public DanceOfTheSkywise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DanceWithDevils.java b/Mage.Sets/src/mage/cards/d/DanceWithDevils.java
index 0d80fb5a6ec..1e7589698aa 100644
--- a/Mage.Sets/src/mage/cards/d/DanceWithDevils.java
+++ b/Mage.Sets/src/mage/cards/d/DanceWithDevils.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.DevilToken;
*
* @author fireshoes
*/
-public class DanceWithDevils extends CardImpl {
+public final class DanceWithDevils extends CardImpl {
public DanceWithDevils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DancingScimitar.java b/Mage.Sets/src/mage/cards/d/DancingScimitar.java
index ee9a389b898..dcd69bc60ce 100644
--- a/Mage.Sets/src/mage/cards/d/DancingScimitar.java
+++ b/Mage.Sets/src/mage/cards/d/DancingScimitar.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DancingScimitar extends CardImpl {
+public final class DancingScimitar extends CardImpl {
public DancingScimitar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/d/Dandan.java b/Mage.Sets/src/mage/cards/d/Dandan.java
index fc1f4f29b50..5fac914eff3 100644
--- a/Mage.Sets/src/mage/cards/d/Dandan.java
+++ b/Mage.Sets/src/mage/cards/d/Dandan.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterLandPermanent;
/**
* @author KholdFuzion
*/
-public class Dandan extends CardImpl {
+public final class Dandan extends CardImpl {
public Dandan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DangerousWager.java b/Mage.Sets/src/mage/cards/d/DangerousWager.java
index 6f2af5f584a..2871958ea1f 100644
--- a/Mage.Sets/src/mage/cards/d/DangerousWager.java
+++ b/Mage.Sets/src/mage/cards/d/DangerousWager.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author North
*/
-public class DangerousWager extends CardImpl {
+public final class DangerousWager extends CardImpl {
public DangerousWager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DanithaCapashenParagon.java b/Mage.Sets/src/mage/cards/d/DanithaCapashenParagon.java
index 90351d7a356..aa176645b5f 100644
--- a/Mage.Sets/src/mage/cards/d/DanithaCapashenParagon.java
+++ b/Mage.Sets/src/mage/cards/d/DanithaCapashenParagon.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class DanithaCapashenParagon extends CardImpl {
+public final class DanithaCapashenParagon extends CardImpl {
private static final FilterCard filter = new FilterCard("Aura and Equipment spells");
diff --git a/Mage.Sets/src/mage/cards/d/DarajaGriffin.java b/Mage.Sets/src/mage/cards/d/DarajaGriffin.java
index 10a21077ded..839812070b1 100644
--- a/Mage.Sets/src/mage/cards/d/DarajaGriffin.java
+++ b/Mage.Sets/src/mage/cards/d/DarajaGriffin.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class DarajaGriffin extends CardImpl {
+public final class DarajaGriffin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature");
diff --git a/Mage.Sets/src/mage/cards/d/Darba.java b/Mage.Sets/src/mage/cards/d/Darba.java
index f380a60b7d2..b316342ef14 100644
--- a/Mage.Sets/src/mage/cards/d/Darba.java
+++ b/Mage.Sets/src/mage/cards/d/Darba.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class Darba extends CardImpl {
+public final class Darba extends CardImpl {
public Darba(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DaredevilDragster.java b/Mage.Sets/src/mage/cards/d/DaredevilDragster.java
index d07b56a9f61..15749b6a249 100644
--- a/Mage.Sets/src/mage/cards/d/DaredevilDragster.java
+++ b/Mage.Sets/src/mage/cards/d/DaredevilDragster.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author spjspj
*/
-public class DaredevilDragster extends CardImpl {
+public final class DaredevilDragster extends CardImpl {
public DaredevilDragster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DarettiIngeniousIconoclast.java b/Mage.Sets/src/mage/cards/d/DarettiIngeniousIconoclast.java
index 202254ff0c6..596aab585af 100644
--- a/Mage.Sets/src/mage/cards/d/DarettiIngeniousIconoclast.java
+++ b/Mage.Sets/src/mage/cards/d/DarettiIngeniousIconoclast.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class DarettiIngeniousIconoclast extends CardImpl {
+public final class DarettiIngeniousIconoclast extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/d/DarettiScrapSavant.java b/Mage.Sets/src/mage/cards/d/DarettiScrapSavant.java
index ce376ce6868..8a02a33d35c 100644
--- a/Mage.Sets/src/mage/cards/d/DarettiScrapSavant.java
+++ b/Mage.Sets/src/mage/cards/d/DarettiScrapSavant.java
@@ -63,7 +63,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DarettiScrapSavant extends CardImpl {
+public final class DarettiScrapSavant extends CardImpl {
public DarettiScrapSavant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DarienKingOfKjeldor.java b/Mage.Sets/src/mage/cards/d/DarienKingOfKjeldor.java
index 3581920ec0a..917d4d389c9 100644
--- a/Mage.Sets/src/mage/cards/d/DarienKingOfKjeldor.java
+++ b/Mage.Sets/src/mage/cards/d/DarienKingOfKjeldor.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DarienKingOfKjeldor extends CardImpl {
+public final class DarienKingOfKjeldor extends CardImpl {
public DarienKingOfKjeldor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DarigaazReincarnated.java b/Mage.Sets/src/mage/cards/d/DarigaazReincarnated.java
index c381ca3fa52..4b6f8277cb2 100644
--- a/Mage.Sets/src/mage/cards/d/DarigaazReincarnated.java
+++ b/Mage.Sets/src/mage/cards/d/DarigaazReincarnated.java
@@ -62,7 +62,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class DarigaazReincarnated extends CardImpl {
+public final class DarigaazReincarnated extends CardImpl {
public DarigaazReincarnated(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DarigaazTheIgniter.java b/Mage.Sets/src/mage/cards/d/DarigaazTheIgniter.java
index 05b202cba6c..2633ffb08be 100644
--- a/Mage.Sets/src/mage/cards/d/DarigaazTheIgniter.java
+++ b/Mage.Sets/src/mage/cards/d/DarigaazTheIgniter.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author FenrisulfrX
*/
-public class DarigaazTheIgniter extends CardImpl {
+public final class DarigaazTheIgniter extends CardImpl {
public DarigaazTheIgniter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DarigaazsAttendant.java b/Mage.Sets/src/mage/cards/d/DarigaazsAttendant.java
index e9aebea233f..64e222a9c83 100644
--- a/Mage.Sets/src/mage/cards/d/DarigaazsAttendant.java
+++ b/Mage.Sets/src/mage/cards/d/DarigaazsAttendant.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class DarigaazsAttendant extends CardImpl {
+public final class DarigaazsAttendant extends CardImpl {
public DarigaazsAttendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/d/DarigaazsCaldera.java b/Mage.Sets/src/mage/cards/d/DarigaazsCaldera.java
index 18f9beb15b6..055c7ad3ec6 100644
--- a/Mage.Sets/src/mage/cards/d/DarigaazsCaldera.java
+++ b/Mage.Sets/src/mage/cards/d/DarigaazsCaldera.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class DarigaazsCaldera extends CardImpl {
+public final class DarigaazsCaldera extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("non-Lair land");
static{
diff --git a/Mage.Sets/src/mage/cards/d/DarigaazsCharm.java b/Mage.Sets/src/mage/cards/d/DarigaazsCharm.java
index eddd66b9d79..6c9c5e441fa 100644
--- a/Mage.Sets/src/mage/cards/d/DarigaazsCharm.java
+++ b/Mage.Sets/src/mage/cards/d/DarigaazsCharm.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author FenrisulfrX
*/
-public class DarigaazsCharm extends CardImpl {
+public final class DarigaazsCharm extends CardImpl {
public DarigaazsCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DaringApprentice.java b/Mage.Sets/src/mage/cards/d/DaringApprentice.java
index 2c68cb5cc9b..1bf6360128d 100644
--- a/Mage.Sets/src/mage/cards/d/DaringApprentice.java
+++ b/Mage.Sets/src/mage/cards/d/DaringApprentice.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author Plopman
*/
-public class DaringApprentice extends CardImpl {
+public final class DaringApprentice extends CardImpl {
public DaringApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DaringArchaeologist.java b/Mage.Sets/src/mage/cards/d/DaringArchaeologist.java
index a0c026db017..4b1d0049ab4 100644
--- a/Mage.Sets/src/mage/cards/d/DaringArchaeologist.java
+++ b/Mage.Sets/src/mage/cards/d/DaringArchaeologist.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class DaringArchaeologist extends CardImpl {
+public final class DaringArchaeologist extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a historic spell");
diff --git a/Mage.Sets/src/mage/cards/d/DaringBuccaneer.java b/Mage.Sets/src/mage/cards/d/DaringBuccaneer.java
index 8f1368e3f9e..8182e59ebc9 100644
--- a/Mage.Sets/src/mage/cards/d/DaringBuccaneer.java
+++ b/Mage.Sets/src/mage/cards/d/DaringBuccaneer.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Will
*/
-public class DaringBuccaneer extends CardImpl {
+public final class DaringBuccaneer extends CardImpl {
private static final FilterCard filter = new FilterCard("a Pirate card from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DaringDemolition.java b/Mage.Sets/src/mage/cards/d/DaringDemolition.java
index 933ef257e91..d0d42212d8b 100644
--- a/Mage.Sets/src/mage/cards/d/DaringDemolition.java
+++ b/Mage.Sets/src/mage/cards/d/DaringDemolition.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class DaringDemolition extends CardImpl {
+public final class DaringDemolition extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent("creature or Vehicle");
diff --git a/Mage.Sets/src/mage/cards/d/DaringLeap.java b/Mage.Sets/src/mage/cards/d/DaringLeap.java
index 2e56b8d4447..3556f709109 100644
--- a/Mage.Sets/src/mage/cards/d/DaringLeap.java
+++ b/Mage.Sets/src/mage/cards/d/DaringLeap.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DaringLeap extends CardImpl {
+public final class DaringLeap extends CardImpl {
public DaringLeap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DaringSaboteur.java b/Mage.Sets/src/mage/cards/d/DaringSaboteur.java
index 9c34129962d..dbba6a6956e 100644
--- a/Mage.Sets/src/mage/cards/d/DaringSaboteur.java
+++ b/Mage.Sets/src/mage/cards/d/DaringSaboteur.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class DaringSaboteur extends CardImpl {
+public final class DaringSaboteur extends CardImpl {
public DaringSaboteur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DaringSkyjek.java b/Mage.Sets/src/mage/cards/d/DaringSkyjek.java
index c0ea33efaae..18838a2d07d 100644
--- a/Mage.Sets/src/mage/cards/d/DaringSkyjek.java
+++ b/Mage.Sets/src/mage/cards/d/DaringSkyjek.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class DaringSkyjek extends CardImpl {
+public final class DaringSkyjek extends CardImpl {
public DaringSkyjek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DaringSleuth.java b/Mage.Sets/src/mage/cards/d/DaringSleuth.java
index de3b79f7d2b..7bf08d25eb3 100644
--- a/Mage.Sets/src/mage/cards/d/DaringSleuth.java
+++ b/Mage.Sets/src/mage/cards/d/DaringSleuth.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class DaringSleuth extends CardImpl {
+public final class DaringSleuth extends CardImpl {
public DaringSleuth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DaringThief.java b/Mage.Sets/src/mage/cards/d/DaringThief.java
index 42e82da88d3..d7da31e4614 100644
--- a/Mage.Sets/src/mage/cards/d/DaringThief.java
+++ b/Mage.Sets/src/mage/cards/d/DaringThief.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class DaringThief extends CardImpl {
+public final class DaringThief extends CardImpl {
public DaringThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkApprenticeship.java b/Mage.Sets/src/mage/cards/d/DarkApprenticeship.java
index 141a73d891f..f5b523d6bd0 100644
--- a/Mage.Sets/src/mage/cards/d/DarkApprenticeship.java
+++ b/Mage.Sets/src/mage/cards/d/DarkApprenticeship.java
@@ -44,7 +44,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class DarkApprenticeship extends CardImpl {
+public final class DarkApprenticeship extends CardImpl {
public DarkApprenticeship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkBanishing.java b/Mage.Sets/src/mage/cards/d/DarkBanishing.java
index 0d19447b65e..62a3f6496a4 100644
--- a/Mage.Sets/src/mage/cards/d/DarkBanishing.java
+++ b/Mage.Sets/src/mage/cards/d/DarkBanishing.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DarkBanishing extends CardImpl {
+public final class DarkBanishing extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/d/DarkBargain.java b/Mage.Sets/src/mage/cards/d/DarkBargain.java
index 1dd99d314c9..4450f831203 100644
--- a/Mage.Sets/src/mage/cards/d/DarkBargain.java
+++ b/Mage.Sets/src/mage/cards/d/DarkBargain.java
@@ -45,7 +45,7 @@ import mage.target.TargetCard;
*
* @author Quercitron
*/
-public class DarkBargain extends CardImpl {
+public final class DarkBargain extends CardImpl {
public DarkBargain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkBetrayal.java b/Mage.Sets/src/mage/cards/d/DarkBetrayal.java
index 976a13d3a65..93e61cb382f 100644
--- a/Mage.Sets/src/mage/cards/d/DarkBetrayal.java
+++ b/Mage.Sets/src/mage/cards/d/DarkBetrayal.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DarkBetrayal extends CardImpl {
+public final class DarkBetrayal extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DarkConfidant.java b/Mage.Sets/src/mage/cards/d/DarkConfidant.java
index 2dc4d58361c..fb433975ed7 100644
--- a/Mage.Sets/src/mage/cards/d/DarkConfidant.java
+++ b/Mage.Sets/src/mage/cards/d/DarkConfidant.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class DarkConfidant extends CardImpl {
+public final class DarkConfidant extends CardImpl {
public DarkConfidant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkDabbling.java b/Mage.Sets/src/mage/cards/d/DarkDabbling.java
index b9991dffff0..f8a27553be9 100644
--- a/Mage.Sets/src/mage/cards/d/DarkDabbling.java
+++ b/Mage.Sets/src/mage/cards/d/DarkDabbling.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DarkDabbling extends CardImpl {
+public final class DarkDabbling extends CardImpl {
public DarkDabbling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkDeal.java b/Mage.Sets/src/mage/cards/d/DarkDeal.java
index 56b3116594a..c6ca4e6ca81 100644
--- a/Mage.Sets/src/mage/cards/d/DarkDeal.java
+++ b/Mage.Sets/src/mage/cards/d/DarkDeal.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DarkDeal extends CardImpl {
+public final class DarkDeal extends CardImpl {
public DarkDeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkDecision.java b/Mage.Sets/src/mage/cards/d/DarkDecision.java
index c60e82ed509..d3c614d964f 100644
--- a/Mage.Sets/src/mage/cards/d/DarkDecision.java
+++ b/Mage.Sets/src/mage/cards/d/DarkDecision.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class DarkDecision extends CardImpl {
+public final class DarkDecision extends CardImpl {
public DarkDecision(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkDepths.java b/Mage.Sets/src/mage/cards/d/DarkDepths.java
index eb0c8f3b323..c746570da69 100644
--- a/Mage.Sets/src/mage/cards/d/DarkDepths.java
+++ b/Mage.Sets/src/mage/cards/d/DarkDepths.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.MaritLageToken;
*
* @author Plopman
*/
-public class DarkDepths extends CardImpl {
+public final class DarkDepths extends CardImpl {
public DarkDepths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/d/DarkFavor.java b/Mage.Sets/src/mage/cards/d/DarkFavor.java
index bd70948b4aa..a2e3a64b81c 100644
--- a/Mage.Sets/src/mage/cards/d/DarkFavor.java
+++ b/Mage.Sets/src/mage/cards/d/DarkFavor.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class DarkFavor extends CardImpl {
+public final class DarkFavor extends CardImpl {
public DarkFavor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkHatchling.java b/Mage.Sets/src/mage/cards/d/DarkHatchling.java
index 7951a950ff6..33642dc1ecf 100644
--- a/Mage.Sets/src/mage/cards/d/DarkHatchling.java
+++ b/Mage.Sets/src/mage/cards/d/DarkHatchling.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DarkHatchling extends CardImpl {
+public final class DarkHatchling extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DarkHeartOfTheWood.java b/Mage.Sets/src/mage/cards/d/DarkHeartOfTheWood.java
index 49fe931eb27..76f3a0c5b08 100644
--- a/Mage.Sets/src/mage/cards/d/DarkHeartOfTheWood.java
+++ b/Mage.Sets/src/mage/cards/d/DarkHeartOfTheWood.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class DarkHeartOfTheWood extends CardImpl {
+public final class DarkHeartOfTheWood extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest");
diff --git a/Mage.Sets/src/mage/cards/d/DarkImpostor.java b/Mage.Sets/src/mage/cards/d/DarkImpostor.java
index ebd1853c016..67ebadd7295 100644
--- a/Mage.Sets/src/mage/cards/d/DarkImpostor.java
+++ b/Mage.Sets/src/mage/cards/d/DarkImpostor.java
@@ -29,14 +29,15 @@ package mage.cards.d;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.ActivatedAbility;
+import mage.abilities.Mode;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.ContinuousEffectImpl;
-import mage.abilities.effects.common.ExileTargetEffect;
-import mage.abilities.effects.common.ImprintTargetEffect;
+import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
@@ -52,20 +53,18 @@ import mage.target.common.TargetCreaturePermanent;
* @author noxx
*
*/
-public class DarkImpostor extends CardImpl {
+public final class DarkImpostor extends CardImpl {
public DarkImpostor(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.subtype.add(SubType.VAMPIRE);
this.subtype.add(SubType.ASSASSIN);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
- // {4}{B}{B}: Exile target creature and put a +1/+1 counter on Dark Impostor.\
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ImprintTargetEffect(), new ManaCostsImpl("{4}{B}{B}"));
- ability.addEffect(new ExileTargetEffect(null, this.getIdName()));
- ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
+ // {4}{B}{B}: Exile target creature and put a +1/+1 counter on Dark Impostor.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DarkImpostorExileTargetEffect(), new ManaCostsImpl("{4}{B}{B}"));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
@@ -83,6 +82,40 @@ public class DarkImpostor extends CardImpl {
}
}
+class DarkImpostorExileTargetEffect extends OneShotEffect {
+
+ public DarkImpostorExileTargetEffect() {
+ super(Outcome.Exile);
+ }
+
+ public DarkImpostorExileTargetEffect(final DarkImpostorExileTargetEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public DarkImpostorExileTargetEffect copy() {
+ return new DarkImpostorExileTargetEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent permanent = game.getPermanentOrLKIBattlefield(source.getFirstTarget());
+ MageObject sourceObject = source.getSourceObject(game);
+ if (permanent != null) {
+ permanent.moveToExile(null, null, source.getSourceId(), game);
+ if (sourceObject instanceof Permanent) {
+ ((Permanent) sourceObject).imprint(permanent.getId(), game);
+ }
+ }
+ return new AddCountersSourceEffect(CounterType.P1P1.createInstance()).apply(game, source);
+ }
+
+ @Override
+ public String getText(Mode mode) {
+ return "exile target creature and put a +1/+1 counter on {this}";
+ }
+}
+
class DarkImpostorContinuousEffect extends ContinuousEffectImpl {
public DarkImpostorContinuousEffect() {
@@ -103,7 +136,7 @@ class DarkImpostorContinuousEffect extends ContinuousEffectImpl {
if (card != null) {
for (Ability ability : card.getAbilities()) {
if (ability instanceof ActivatedAbility) {
- perm.addAbility(ability, source.getSourceId(), game);
+ perm.addAbility(ability.copy(), source.getSourceId(), game);
}
}
}
diff --git a/Mage.Sets/src/mage/cards/d/DarkInquiry.java b/Mage.Sets/src/mage/cards/d/DarkInquiry.java
index 9daef08045d..2efbd548264 100644
--- a/Mage.Sets/src/mage/cards/d/DarkInquiry.java
+++ b/Mage.Sets/src/mage/cards/d/DarkInquiry.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class DarkInquiry extends CardImpl {
+public final class DarkInquiry extends CardImpl {
public DarkInquiry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkIntimations.java b/Mage.Sets/src/mage/cards/d/DarkIntimations.java
index cc7ab7d8224..b9e2e5e9086 100644
--- a/Mage.Sets/src/mage/cards/d/DarkIntimations.java
+++ b/Mage.Sets/src/mage/cards/d/DarkIntimations.java
@@ -61,7 +61,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DarkIntimations extends CardImpl {
+public final class DarkIntimations extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a Bolas planeswalker spell");
diff --git a/Mage.Sets/src/mage/cards/d/DarkMaze.java b/Mage.Sets/src/mage/cards/d/DarkMaze.java
index 7d70b7eac8b..5e0a36da51d 100644
--- a/Mage.Sets/src/mage/cards/d/DarkMaze.java
+++ b/Mage.Sets/src/mage/cards/d/DarkMaze.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class DarkMaze extends CardImpl {
+public final class DarkMaze extends CardImpl {
public DarkMaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkNourishment.java b/Mage.Sets/src/mage/cards/d/DarkNourishment.java
index b613ea90f15..d2548448352 100644
--- a/Mage.Sets/src/mage/cards/d/DarkNourishment.java
+++ b/Mage.Sets/src/mage/cards/d/DarkNourishment.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author TheElk801
*/
-public class DarkNourishment extends CardImpl {
+public final class DarkNourishment extends CardImpl {
public DarkNourishment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkOffering.java b/Mage.Sets/src/mage/cards/d/DarkOffering.java
index c9d3715b41d..ab9af93e335 100644
--- a/Mage.Sets/src/mage/cards/d/DarkOffering.java
+++ b/Mage.Sets/src/mage/cards/d/DarkOffering.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DarkOffering extends CardImpl {
+public final class DarkOffering extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/d/DarkPetition.java b/Mage.Sets/src/mage/cards/d/DarkPetition.java
index 0d83e697152..b535043fa84 100644
--- a/Mage.Sets/src/mage/cards/d/DarkPetition.java
+++ b/Mage.Sets/src/mage/cards/d/DarkPetition.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class DarkPetition extends CardImpl {
+public final class DarkPetition extends CardImpl {
public DarkPetition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkPrivilege.java b/Mage.Sets/src/mage/cards/d/DarkPrivilege.java
index 870851fc905..f72065b275f 100644
--- a/Mage.Sets/src/mage/cards/d/DarkPrivilege.java
+++ b/Mage.Sets/src/mage/cards/d/DarkPrivilege.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class DarkPrivilege extends CardImpl {
+public final class DarkPrivilege extends CardImpl {
public DarkPrivilege(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkProphecy.java b/Mage.Sets/src/mage/cards/d/DarkProphecy.java
index a2ba6f7e438..01616c043d0 100644
--- a/Mage.Sets/src/mage/cards/d/DarkProphecy.java
+++ b/Mage.Sets/src/mage/cards/d/DarkProphecy.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class DarkProphecy extends CardImpl {
+public final class DarkProphecy extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DarkRevenant.java b/Mage.Sets/src/mage/cards/d/DarkRevenant.java
index e0120e02b6d..324782f1fd6 100644
--- a/Mage.Sets/src/mage/cards/d/DarkRevenant.java
+++ b/Mage.Sets/src/mage/cards/d/DarkRevenant.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DarkRevenant extends CardImpl {
+public final class DarkRevenant extends CardImpl {
public DarkRevenant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkRitual.java b/Mage.Sets/src/mage/cards/d/DarkRitual.java
index e42ae231adf..e73689e038f 100644
--- a/Mage.Sets/src/mage/cards/d/DarkRitual.java
+++ b/Mage.Sets/src/mage/cards/d/DarkRitual.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class DarkRitual extends CardImpl {
+public final class DarkRitual extends CardImpl {
public DarkRitual(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkSalvation.java b/Mage.Sets/src/mage/cards/d/DarkSalvation.java
index efea1f5f67b..0e16add7e90 100644
--- a/Mage.Sets/src/mage/cards/d/DarkSalvation.java
+++ b/Mage.Sets/src/mage/cards/d/DarkSalvation.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class DarkSalvation extends CardImpl {
+public final class DarkSalvation extends CardImpl {
public DarkSalvation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkSphere.java b/Mage.Sets/src/mage/cards/d/DarkSphere.java
index d08efb04fb2..85004d783d5 100644
--- a/Mage.Sets/src/mage/cards/d/DarkSphere.java
+++ b/Mage.Sets/src/mage/cards/d/DarkSphere.java
@@ -71,7 +71,7 @@ import mage.target.TargetSource;
*
* @author ThomasLerner
*/
-public class DarkSphere extends CardImpl {
+public final class DarkSphere extends CardImpl {
public DarkSphere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{0}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkSupplicant.java b/Mage.Sets/src/mage/cards/d/DarkSupplicant.java
index 11ea6f0ef41..993d47ed991 100644
--- a/Mage.Sets/src/mage/cards/d/DarkSupplicant.java
+++ b/Mage.Sets/src/mage/cards/d/DarkSupplicant.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class DarkSupplicant extends CardImpl {
+public final class DarkSupplicant extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("three Clerics you control");
diff --git a/Mage.Sets/src/mage/cards/d/DarkSuspicions.java b/Mage.Sets/src/mage/cards/d/DarkSuspicions.java
index ddf0cf03c9b..377dc24d10b 100644
--- a/Mage.Sets/src/mage/cards/d/DarkSuspicions.java
+++ b/Mage.Sets/src/mage/cards/d/DarkSuspicions.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author ESOF_1617_T5_G3
*/
-public class DarkSuspicions extends CardImpl {
+public final class DarkSuspicions extends CardImpl {
public DarkSuspicions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkTemper.java b/Mage.Sets/src/mage/cards/d/DarkTemper.java
index 6893a70cc20..a5c5809de02 100644
--- a/Mage.Sets/src/mage/cards/d/DarkTemper.java
+++ b/Mage.Sets/src/mage/cards/d/DarkTemper.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class DarkTemper extends CardImpl {
+public final class DarkTemper extends CardImpl {
public DarkTemper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkTriumph.java b/Mage.Sets/src/mage/cards/d/DarkTriumph.java
index f6db02a354c..6b6a0f3b978 100644
--- a/Mage.Sets/src/mage/cards/d/DarkTriumph.java
+++ b/Mage.Sets/src/mage/cards/d/DarkTriumph.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class DarkTriumph extends CardImpl {
+public final class DarkTriumph extends CardImpl {
private static final FilterLandPermanent filterSwamp = new FilterLandPermanent("If you control a Swamp");
diff --git a/Mage.Sets/src/mage/cards/d/DarkTrooper.java b/Mage.Sets/src/mage/cards/d/DarkTrooper.java
index f817049f4b7..b3435d71642 100644
--- a/Mage.Sets/src/mage/cards/d/DarkTrooper.java
+++ b/Mage.Sets/src/mage/cards/d/DarkTrooper.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class DarkTrooper extends CardImpl {
+public final class DarkTrooper extends CardImpl {
public DarkTrooper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkTutelage.java b/Mage.Sets/src/mage/cards/d/DarkTutelage.java
index 3895e610a74..84c7cffb189 100644
--- a/Mage.Sets/src/mage/cards/d/DarkTutelage.java
+++ b/Mage.Sets/src/mage/cards/d/DarkTutelage.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author BetaSteward_at_googlemail.com
*/
-public class DarkTutelage extends CardImpl {
+public final class DarkTutelage extends CardImpl {
public DarkTutelage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkWithering.java b/Mage.Sets/src/mage/cards/d/DarkWithering.java
index 6e095f8f8b5..5cd83d7b6f7 100644
--- a/Mage.Sets/src/mage/cards/d/DarkWithering.java
+++ b/Mage.Sets/src/mage/cards/d/DarkWithering.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author magenoxx_at_gmail.com
*/
-public class DarkWithering extends CardImpl {
+public final class DarkWithering extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/d/Darkblast.java b/Mage.Sets/src/mage/cards/d/Darkblast.java
index a8d002b5d83..1718f52d5d6 100644
--- a/Mage.Sets/src/mage/cards/d/Darkblast.java
+++ b/Mage.Sets/src/mage/cards/d/Darkblast.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Darkblast extends CardImpl {
+public final class Darkblast extends CardImpl {
public Darkblast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkestHour.java b/Mage.Sets/src/mage/cards/d/DarkestHour.java
index 7163e0c9531..074a64474c4 100644
--- a/Mage.Sets/src/mage/cards/d/DarkestHour.java
+++ b/Mage.Sets/src/mage/cards/d/DarkestHour.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class DarkestHour extends CardImpl {
+public final class DarkestHour extends CardImpl {
public DarkestHour(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkheartSliver.java b/Mage.Sets/src/mage/cards/d/DarkheartSliver.java
index 5cb7fcfa64e..7186aae9c51 100644
--- a/Mage.Sets/src/mage/cards/d/DarkheartSliver.java
+++ b/Mage.Sets/src/mage/cards/d/DarkheartSliver.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author KholdFuzion
*/
-public class DarkheartSliver extends CardImpl {
+public final class DarkheartSliver extends CardImpl {
public DarkheartSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DarklingStalker.java b/Mage.Sets/src/mage/cards/d/DarklingStalker.java
index e3aee6f97cf..008d934caec 100644
--- a/Mage.Sets/src/mage/cards/d/DarklingStalker.java
+++ b/Mage.Sets/src/mage/cards/d/DarklingStalker.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class DarklingStalker extends CardImpl {
+public final class DarklingStalker extends CardImpl {
public DarklingStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarklitGargoyle.java b/Mage.Sets/src/mage/cards/d/DarklitGargoyle.java
index f6d00afad29..6dc48278823 100644
--- a/Mage.Sets/src/mage/cards/d/DarklitGargoyle.java
+++ b/Mage.Sets/src/mage/cards/d/DarklitGargoyle.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class DarklitGargoyle extends CardImpl {
+public final class DarklitGargoyle extends CardImpl {
public DarklitGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Darkness.java b/Mage.Sets/src/mage/cards/d/Darkness.java
index 8e5e6385b17..4a8049d1984 100644
--- a/Mage.Sets/src/mage/cards/d/Darkness.java
+++ b/Mage.Sets/src/mage/cards/d/Darkness.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class Darkness extends CardImpl {
+public final class Darkness extends CardImpl {
public Darkness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkslickDrake.java b/Mage.Sets/src/mage/cards/d/DarkslickDrake.java
index d2c8f600e9d..41e4cf97ebd 100644
--- a/Mage.Sets/src/mage/cards/d/DarkslickDrake.java
+++ b/Mage.Sets/src/mage/cards/d/DarkslickDrake.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DarkslickDrake extends CardImpl {
+public final class DarkslickDrake extends CardImpl {
public DarkslickDrake (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkslickShores.java b/Mage.Sets/src/mage/cards/d/DarkslickShores.java
index 42bf7dd27f3..292fa83b494 100644
--- a/Mage.Sets/src/mage/cards/d/DarkslickShores.java
+++ b/Mage.Sets/src/mage/cards/d/DarkslickShores.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author maurer.it_at_gmail.com
*/
-public class DarkslickShores extends CardImpl {
+public final class DarkslickShores extends CardImpl {
private final static FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelAxe.java b/Mage.Sets/src/mage/cards/d/DarksteelAxe.java
index 771d9f93667..8a08ec562f5 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelAxe.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelAxe.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class DarksteelAxe extends CardImpl {
+public final class DarksteelAxe extends CardImpl {
public DarksteelAxe (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelBrute.java b/Mage.Sets/src/mage/cards/d/DarksteelBrute.java
index 717cd40ea7e..6953e6e7b48 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelBrute.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelBrute.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author Loki
*/
-public class DarksteelBrute extends CardImpl {
+public final class DarksteelBrute extends CardImpl {
public DarksteelBrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelCitadel.java b/Mage.Sets/src/mage/cards/d/DarksteelCitadel.java
index 70cb2aaca43..f7fcd5e8636 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelCitadel.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelCitadel.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class DarksteelCitadel extends CardImpl {
+public final class DarksteelCitadel extends CardImpl {
public DarksteelCitadel (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelColossus.java b/Mage.Sets/src/mage/cards/d/DarksteelColossus.java
index 59baceeff97..21f1bef68bd 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelColossus.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelColossus.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class DarksteelColossus extends CardImpl {
+public final class DarksteelColossus extends CardImpl {
public DarksteelColossus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{11}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelForge.java b/Mage.Sets/src/mage/cards/d/DarksteelForge.java
index d23841dd357..d2ee5de90be 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelForge.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelForge.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
/**
* @author Loki
*/
-public class DarksteelForge extends CardImpl {
+public final class DarksteelForge extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Artifacts you control");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelGargoyle.java b/Mage.Sets/src/mage/cards/d/DarksteelGargoyle.java
index f8bcb58e4b1..b9df0b1d634 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelGargoyle.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelGargoyle.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class DarksteelGargoyle extends CardImpl {
+public final class DarksteelGargoyle extends CardImpl {
public DarksteelGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelGarrison.java b/Mage.Sets/src/mage/cards/d/DarksteelGarrison.java
index bdbba6de0a0..03c6818b79a 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelGarrison.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelGarrison.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class DarksteelGarrison extends CardImpl {
+public final class DarksteelGarrison extends CardImpl {
public DarksteelGarrison(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
@@ -112,14 +112,15 @@ class FortifyAbility extends ActivatedAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
- if (super.canActivate(playerId, game)) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
+ ActivationStatus activationStatus = super.canActivate(playerId, game);
+ if (activationStatus.canActivate()) {
Permanent permanent = game.getPermanent(sourceId);
if (permanent != null && permanent.hasSubtype(SubType.FORTIFICATION, game)) {
- return true;
+ return activationStatus;
}
}
- return false;
+ return ActivationStatus.getFalse();
}
public FortifyAbility(final FortifyAbility ability) {
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelIngot.java b/Mage.Sets/src/mage/cards/d/DarksteelIngot.java
index b76e6e4e21f..f59d12b37b0 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelIngot.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelIngot.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
* @author Loki
*/
-public class DarksteelIngot extends CardImpl {
+public final class DarksteelIngot extends CardImpl {
public DarksteelIngot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelJuggernaut.java b/Mage.Sets/src/mage/cards/d/DarksteelJuggernaut.java
index e3c3caf48c0..c91b5851023 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelJuggernaut.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelJuggernaut.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author Loki
*/
-public class DarksteelJuggernaut extends CardImpl {
+public final class DarksteelJuggernaut extends CardImpl {
public DarksteelJuggernaut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelMutation.java b/Mage.Sets/src/mage/cards/d/DarksteelMutation.java
index 415af1d5ead..4425c7e2eee 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelMutation.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelMutation.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DarksteelMutation extends CardImpl {
+public final class DarksteelMutation extends CardImpl {
public DarksteelMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelMyr.java b/Mage.Sets/src/mage/cards/d/DarksteelMyr.java
index 0f20417a68e..9e284e6b31d 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelMyr.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelMyr.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DarksteelMyr extends CardImpl {
+public final class DarksteelMyr extends CardImpl {
public DarksteelMyr (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelPendant.java b/Mage.Sets/src/mage/cards/d/DarksteelPendant.java
index 7a8aff77c9e..67107946b55 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelPendant.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelPendant.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DarksteelPendant extends CardImpl {
+public final class DarksteelPendant extends CardImpl {
public DarksteelPendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelPlate.java b/Mage.Sets/src/mage/cards/d/DarksteelPlate.java
index bdac772db5a..8f080719098 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelPlate.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelPlate.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class DarksteelPlate extends CardImpl {
+public final class DarksteelPlate extends CardImpl {
public DarksteelPlate (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelReactor.java b/Mage.Sets/src/mage/cards/d/DarksteelReactor.java
index b65ecf68d07..42eb6c63085 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelReactor.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelReactor.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class DarksteelReactor extends CardImpl {
+public final class DarksteelReactor extends CardImpl {
public DarksteelReactor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelRelic.java b/Mage.Sets/src/mage/cards/d/DarksteelRelic.java
index 401c7a1bb48..0b4d96ae1a5 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelRelic.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelRelic.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class DarksteelRelic extends CardImpl {
+public final class DarksteelRelic extends CardImpl {
public DarksteelRelic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/d/DarksteelSentinel.java b/Mage.Sets/src/mage/cards/d/DarksteelSentinel.java
index b21a279147f..b3b08a9b47b 100644
--- a/Mage.Sets/src/mage/cards/d/DarksteelSentinel.java
+++ b/Mage.Sets/src/mage/cards/d/DarksteelSentinel.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DarksteelSentinel extends CardImpl {
+public final class DarksteelSentinel extends CardImpl {
public DarksteelSentinel (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkthicketWolf.java b/Mage.Sets/src/mage/cards/d/DarkthicketWolf.java
index 791bf48b646..5c4b6c5e7c8 100644
--- a/Mage.Sets/src/mage/cards/d/DarkthicketWolf.java
+++ b/Mage.Sets/src/mage/cards/d/DarkthicketWolf.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class DarkthicketWolf extends CardImpl {
+public final class DarkthicketWolf extends CardImpl {
public DarkthicketWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkwatchElves.java b/Mage.Sets/src/mage/cards/d/DarkwatchElves.java
index 5bd66ae38d0..7984c35504c 100644
--- a/Mage.Sets/src/mage/cards/d/DarkwatchElves.java
+++ b/Mage.Sets/src/mage/cards/d/DarkwatchElves.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
/**
* @author Backfir3
*/
-public class DarkwatchElves extends CardImpl {
+public final class DarkwatchElves extends CardImpl {
public DarkwatchElves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DarkwaterCatacombs.java b/Mage.Sets/src/mage/cards/d/DarkwaterCatacombs.java
index 1f0f0cf51de..a0bc7080b9a 100644
--- a/Mage.Sets/src/mage/cards/d/DarkwaterCatacombs.java
+++ b/Mage.Sets/src/mage/cards/d/DarkwaterCatacombs.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class DarkwaterCatacombs extends CardImpl {
+public final class DarkwaterCatacombs extends CardImpl {
public DarkwaterCatacombs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/DarkwaterEgg.java b/Mage.Sets/src/mage/cards/d/DarkwaterEgg.java
index 1ea15158fb7..64d03304846 100644
--- a/Mage.Sets/src/mage/cards/d/DarkwaterEgg.java
+++ b/Mage.Sets/src/mage/cards/d/DarkwaterEgg.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class DarkwaterEgg extends CardImpl {
+public final class DarkwaterEgg extends CardImpl {
public DarkwaterEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/d/DarthMaul.java b/Mage.Sets/src/mage/cards/d/DarthMaul.java
index 918bd7be330..eddffa7187c 100644
--- a/Mage.Sets/src/mage/cards/d/DarthMaul.java
+++ b/Mage.Sets/src/mage/cards/d/DarthMaul.java
@@ -49,7 +49,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class DarthMaul extends CardImpl {
+public final class DarthMaul extends CardImpl {
public DarthMaul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DarthSidiousSithLord.java b/Mage.Sets/src/mage/cards/d/DarthSidiousSithLord.java
index 114dc69f497..988d7ad4a4c 100644
--- a/Mage.Sets/src/mage/cards/d/DarthSidiousSithLord.java
+++ b/Mage.Sets/src/mage/cards/d/DarthSidiousSithLord.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class DarthSidiousSithLord extends CardImpl {
+public final class DarthSidiousSithLord extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature permanent");
diff --git a/Mage.Sets/src/mage/cards/d/DarthTyranus.java b/Mage.Sets/src/mage/cards/d/DarthTyranus.java
index 1a8a2ac281e..858d9d23a71 100644
--- a/Mage.Sets/src/mage/cards/d/DarthTyranus.java
+++ b/Mage.Sets/src/mage/cards/d/DarthTyranus.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class DarthTyranus extends CardImpl {
+public final class DarthTyranus extends CardImpl {
public DarthTyranus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{1}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DarthVader.java b/Mage.Sets/src/mage/cards/d/DarthVader.java
index 85a40aca5d2..094af0de2a2 100644
--- a/Mage.Sets/src/mage/cards/d/DarthVader.java
+++ b/Mage.Sets/src/mage/cards/d/DarthVader.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author Styxo
*/
-public class DarthVader extends CardImpl {
+public final class DarthVader extends CardImpl {
public DarthVader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
diff --git a/Mage.Sets/src/mage/cards/d/DartingMerfolk.java b/Mage.Sets/src/mage/cards/d/DartingMerfolk.java
index a7ff571ea36..b0236c3e27c 100644
--- a/Mage.Sets/src/mage/cards/d/DartingMerfolk.java
+++ b/Mage.Sets/src/mage/cards/d/DartingMerfolk.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DartingMerfolk extends CardImpl {
+public final class DartingMerfolk extends CardImpl {
public DartingMerfolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DaruCavalier.java b/Mage.Sets/src/mage/cards/d/DaruCavalier.java
index 37a75f64a74..9f2366df02c 100644
--- a/Mage.Sets/src/mage/cards/d/DaruCavalier.java
+++ b/Mage.Sets/src/mage/cards/d/DaruCavalier.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
* @author fireshoes
*/
-public class DaruCavalier extends CardImpl {
+public final class DaruCavalier extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Daru Cavalier");
diff --git a/Mage.Sets/src/mage/cards/d/DaruEncampment.java b/Mage.Sets/src/mage/cards/d/DaruEncampment.java
index 1b112a610c0..0aa383ddae0 100644
--- a/Mage.Sets/src/mage/cards/d/DaruEncampment.java
+++ b/Mage.Sets/src/mage/cards/d/DaruEncampment.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class DaruEncampment extends CardImpl {
+public final class DaruEncampment extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creature");
diff --git a/Mage.Sets/src/mage/cards/d/DaruHealer.java b/Mage.Sets/src/mage/cards/d/DaruHealer.java
index 4bb99ec76e9..a6446e6136e 100644
--- a/Mage.Sets/src/mage/cards/d/DaruHealer.java
+++ b/Mage.Sets/src/mage/cards/d/DaruHealer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author TheElk801
*/
-public class DaruHealer extends CardImpl {
+public final class DaruHealer extends CardImpl {
public DaruHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DaruLancer.java b/Mage.Sets/src/mage/cards/d/DaruLancer.java
index 8055aa3c4cf..6d0f5bfe561 100644
--- a/Mage.Sets/src/mage/cards/d/DaruLancer.java
+++ b/Mage.Sets/src/mage/cards/d/DaruLancer.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class DaruLancer extends CardImpl {
+public final class DaruLancer extends CardImpl {
public DaruLancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DaruMender.java b/Mage.Sets/src/mage/cards/d/DaruMender.java
index 88ae921811d..fd4d41930c0 100644
--- a/Mage.Sets/src/mage/cards/d/DaruMender.java
+++ b/Mage.Sets/src/mage/cards/d/DaruMender.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DaruMender extends CardImpl {
+public final class DaruMender extends CardImpl {
public DaruMender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DaruSanctifier.java b/Mage.Sets/src/mage/cards/d/DaruSanctifier.java
index 725399e860c..c95eb9f29e5 100644
--- a/Mage.Sets/src/mage/cards/d/DaruSanctifier.java
+++ b/Mage.Sets/src/mage/cards/d/DaruSanctifier.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LoneFox
*/
-public class DaruSanctifier extends CardImpl {
+public final class DaruSanctifier extends CardImpl {
public DaruSanctifier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DaruSpiritualist.java b/Mage.Sets/src/mage/cards/d/DaruSpiritualist.java
index 2c0442f5dff..39bd0c2b05c 100644
--- a/Mage.Sets/src/mage/cards/d/DaruSpiritualist.java
+++ b/Mage.Sets/src/mage/cards/d/DaruSpiritualist.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class DaruSpiritualist extends CardImpl {
+public final class DaruSpiritualist extends CardImpl {
public DaruSpiritualist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DaruStinger.java b/Mage.Sets/src/mage/cards/d/DaruStinger.java
index 9e4810f5200..315183fc967 100644
--- a/Mage.Sets/src/mage/cards/d/DaruStinger.java
+++ b/Mage.Sets/src/mage/cards/d/DaruStinger.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author LoneFox
*/
-public class DaruStinger extends CardImpl {
+public final class DaruStinger extends CardImpl {
public DaruStinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DaruWarchief.java b/Mage.Sets/src/mage/cards/d/DaruWarchief.java
index c9f4a41e887..5d2548f6774 100644
--- a/Mage.Sets/src/mage/cards/d/DaruWarchief.java
+++ b/Mage.Sets/src/mage/cards/d/DaruWarchief.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class DaruWarchief extends CardImpl {
+public final class DaruWarchief extends CardImpl {
private static final FilterCard filter = new FilterCard("Soldier spells");
private static final FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("Soldier creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DashHopes.java b/Mage.Sets/src/mage/cards/d/DashHopes.java
index aa197c63814..3d562c21241 100644
--- a/Mage.Sets/src/mage/cards/d/DashHopes.java
+++ b/Mage.Sets/src/mage/cards/d/DashHopes.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class DashHopes extends CardImpl {
+public final class DashHopes extends CardImpl {
public DashHopes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DaughterOfAutumn.java b/Mage.Sets/src/mage/cards/d/DaughterOfAutumn.java
index 69684989ffe..a8049aa8063 100644
--- a/Mage.Sets/src/mage/cards/d/DaughterOfAutumn.java
+++ b/Mage.Sets/src/mage/cards/d/DaughterOfAutumn.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class DaughterOfAutumn extends CardImpl {
+public final class DaughterOfAutumn extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creature");
diff --git a/Mage.Sets/src/mage/cards/d/DauntingDefender.java b/Mage.Sets/src/mage/cards/d/DauntingDefender.java
index 3e4e96f8ace..be5a0e5f06d 100644
--- a/Mage.Sets/src/mage/cards/d/DauntingDefender.java
+++ b/Mage.Sets/src/mage/cards/d/DauntingDefender.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class DauntingDefender extends CardImpl {
+public final class DauntingDefender extends CardImpl {
public DauntingDefender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DauntlessAven.java b/Mage.Sets/src/mage/cards/d/DauntlessAven.java
index d35dab98d65..467531f8ea8 100644
--- a/Mage.Sets/src/mage/cards/d/DauntlessAven.java
+++ b/Mage.Sets/src/mage/cards/d/DauntlessAven.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Archer262
*/
-public class DauntlessAven extends CardImpl {
+public final class DauntlessAven extends CardImpl {
public DauntlessAven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DauntlessBodyguard.java b/Mage.Sets/src/mage/cards/d/DauntlessBodyguard.java
index 26fa79b5ad9..3be2f7d4c04 100644
--- a/Mage.Sets/src/mage/cards/d/DauntlessBodyguard.java
+++ b/Mage.Sets/src/mage/cards/d/DauntlessBodyguard.java
@@ -42,9 +42,9 @@ import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.permanent.AnotherPredicate;
@@ -59,7 +59,7 @@ import mage.util.CardUtil;
*
* @author L_J
*/
-public class DauntlessBodyguard extends CardImpl {
+public final class DauntlessBodyguard extends CardImpl {
public DauntlessBodyguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
@@ -68,7 +68,7 @@ public class DauntlessBodyguard extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(1);
- // As Dauntless Bodyguard enters the battlefield, choose another creature you control.
+ // As Dauntless Bodyguard enters the battlefield, choose another creature you control.
this.addAbility(new AsEntersBattlefieldAbility(new DauntlessBodyguardChooseCreatureEffect()));
// Sacrifice Dauntless Bodyguard: The chosen creature gains indestructible until end of turn.
@@ -147,12 +147,14 @@ class DauntlessBodyguardGainAbilityEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- MageObjectReference mor;
Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
if (sourcePermanent == null) {
return false;
}
- mor = (MageObjectReference) game.getState().getValue(sourcePermanent.getId() + "_chosenCreature");
+ MageObjectReference mor = (MageObjectReference) game.getState().getValue(sourcePermanent.getId() + "_chosenCreature");
+ if (mor == null) {
+ return false;
+ }
Permanent chosenPermanent = mor.getPermanent(game);
if (chosenPermanent != null) {
ContinuousEffect effect = new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn);
diff --git a/Mage.Sets/src/mage/cards/d/DauntlessCathar.java b/Mage.Sets/src/mage/cards/d/DauntlessCathar.java
index a29671d35e8..405451c030d 100644
--- a/Mage.Sets/src/mage/cards/d/DauntlessCathar.java
+++ b/Mage.Sets/src/mage/cards/d/DauntlessCathar.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class DauntlessCathar extends CardImpl {
+public final class DauntlessCathar extends CardImpl {
public DauntlessCathar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DauntlessDourbark.java b/Mage.Sets/src/mage/cards/d/DauntlessDourbark.java
index e0560f0df86..9cb4a07c20c 100644
--- a/Mage.Sets/src/mage/cards/d/DauntlessDourbark.java
+++ b/Mage.Sets/src/mage/cards/d/DauntlessDourbark.java
@@ -53,7 +53,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
* @author jeffwadsworth
*
*/
-public class DauntlessDourbark extends CardImpl {
+public final class DauntlessDourbark extends CardImpl {
final static private FilterControlledPermanent filter = new FilterControlledPermanent("Forests you control plus the number of Treefolk you control");
final static private FilterControlledPermanent filter2 = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/d/DauntlessEscort.java b/Mage.Sets/src/mage/cards/d/DauntlessEscort.java
index 9d6ec5a0b9c..f6bfff5b633 100644
--- a/Mage.Sets/src/mage/cards/d/DauntlessEscort.java
+++ b/Mage.Sets/src/mage/cards/d/DauntlessEscort.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author North
*/
-public class DauntlessEscort extends CardImpl {
+public final class DauntlessEscort extends CardImpl {
public DauntlessEscort(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DauntlessOnslaught.java b/Mage.Sets/src/mage/cards/d/DauntlessOnslaught.java
index a00a0f5a213..5e2f43944c5 100644
--- a/Mage.Sets/src/mage/cards/d/DauntlessOnslaught.java
+++ b/Mage.Sets/src/mage/cards/d/DauntlessOnslaught.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DauntlessOnslaught extends CardImpl {
+public final class DauntlessOnslaught extends CardImpl {
public DauntlessOnslaught(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DauntlessRiverMarshal.java b/Mage.Sets/src/mage/cards/d/DauntlessRiverMarshal.java
index b2875fb81b6..d7218cd00c6 100644
--- a/Mage.Sets/src/mage/cards/d/DauntlessRiverMarshal.java
+++ b/Mage.Sets/src/mage/cards/d/DauntlessRiverMarshal.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DauntlessRiverMarshal extends CardImpl {
+public final class DauntlessRiverMarshal extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("an Island");
diff --git a/Mage.Sets/src/mage/cards/d/DauthiCutthroat.java b/Mage.Sets/src/mage/cards/d/DauthiCutthroat.java
index 71fadcf00a7..309f4b553dd 100644
--- a/Mage.Sets/src/mage/cards/d/DauthiCutthroat.java
+++ b/Mage.Sets/src/mage/cards/d/DauthiCutthroat.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DauthiCutthroat extends CardImpl {
+public final class DauthiCutthroat extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with shadow");
diff --git a/Mage.Sets/src/mage/cards/d/DauthiEmbrace.java b/Mage.Sets/src/mage/cards/d/DauthiEmbrace.java
index fcd0c7d4e4d..55f87f578df 100644
--- a/Mage.Sets/src/mage/cards/d/DauthiEmbrace.java
+++ b/Mage.Sets/src/mage/cards/d/DauthiEmbrace.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DauthiEmbrace extends CardImpl {
+public final class DauthiEmbrace extends CardImpl {
public DauthiEmbrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DauthiGhoul.java b/Mage.Sets/src/mage/cards/d/DauthiGhoul.java
index 39f0cf1fc47..9da01b3845b 100644
--- a/Mage.Sets/src/mage/cards/d/DauthiGhoul.java
+++ b/Mage.Sets/src/mage/cards/d/DauthiGhoul.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LoneFox
*/
-public class DauthiGhoul extends CardImpl {
+public final class DauthiGhoul extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with shadow");
diff --git a/Mage.Sets/src/mage/cards/d/DauthiHorror.java b/Mage.Sets/src/mage/cards/d/DauthiHorror.java
index e76dca1686b..77be4ce7894 100644
--- a/Mage.Sets/src/mage/cards/d/DauthiHorror.java
+++ b/Mage.Sets/src/mage/cards/d/DauthiHorror.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class DauthiHorror extends CardImpl {
+public final class DauthiHorror extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DauthiJackal.java b/Mage.Sets/src/mage/cards/d/DauthiJackal.java
index 62db90500a6..b29af10729e 100644
--- a/Mage.Sets/src/mage/cards/d/DauthiJackal.java
+++ b/Mage.Sets/src/mage/cards/d/DauthiJackal.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DauthiJackal extends CardImpl {
+public final class DauthiJackal extends CardImpl {
public DauthiJackal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DauthiMarauder.java b/Mage.Sets/src/mage/cards/d/DauthiMarauder.java
index d65005baba4..625a172a4f3 100644
--- a/Mage.Sets/src/mage/cards/d/DauthiMarauder.java
+++ b/Mage.Sets/src/mage/cards/d/DauthiMarauder.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DauthiMarauder extends CardImpl {
+public final class DauthiMarauder extends CardImpl {
public DauthiMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DauthiMercenary.java b/Mage.Sets/src/mage/cards/d/DauthiMercenary.java
index 22d3cad4116..b036c882e07 100644
--- a/Mage.Sets/src/mage/cards/d/DauthiMercenary.java
+++ b/Mage.Sets/src/mage/cards/d/DauthiMercenary.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class DauthiMercenary extends CardImpl {
+public final class DauthiMercenary extends CardImpl {
public DauthiMercenary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DauthiMindripper.java b/Mage.Sets/src/mage/cards/d/DauthiMindripper.java
index 71f11395c54..6945e92785f 100644
--- a/Mage.Sets/src/mage/cards/d/DauthiMindripper.java
+++ b/Mage.Sets/src/mage/cards/d/DauthiMindripper.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class DauthiMindripper extends CardImpl {
+public final class DauthiMindripper extends CardImpl {
public DauthiMindripper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DauthiSlayer.java b/Mage.Sets/src/mage/cards/d/DauthiSlayer.java
index f3ca71bdf23..e7c4e5ffa0f 100644
--- a/Mage.Sets/src/mage/cards/d/DauthiSlayer.java
+++ b/Mage.Sets/src/mage/cards/d/DauthiSlayer.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DauthiSlayer extends CardImpl {
+public final class DauthiSlayer extends CardImpl {
public DauthiSlayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DauthiTrapper.java b/Mage.Sets/src/mage/cards/d/DauthiTrapper.java
index 7670231f0bd..c9085daf0ba 100644
--- a/Mage.Sets/src/mage/cards/d/DauthiTrapper.java
+++ b/Mage.Sets/src/mage/cards/d/DauthiTrapper.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DauthiTrapper extends CardImpl {
+public final class DauthiTrapper extends CardImpl {
public DauthiTrapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DauthiWarlord.java b/Mage.Sets/src/mage/cards/d/DauthiWarlord.java
index 915f690c40d..1e715befe16 100644
--- a/Mage.Sets/src/mage/cards/d/DauthiWarlord.java
+++ b/Mage.Sets/src/mage/cards/d/DauthiWarlord.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author fireshoes
*/
-public class DauthiWarlord extends CardImpl {
+public final class DauthiWarlord extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("creatures with shadow");
diff --git a/Mage.Sets/src/mage/cards/d/DawnCharm.java b/Mage.Sets/src/mage/cards/d/DawnCharm.java
index 967292e423f..967ac20d98e 100644
--- a/Mage.Sets/src/mage/cards/d/DawnCharm.java
+++ b/Mage.Sets/src/mage/cards/d/DawnCharm.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DawnCharm extends CardImpl {
+public final class DawnCharm extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell that targets you");
diff --git a/Mage.Sets/src/mage/cards/d/DawnElemental.java b/Mage.Sets/src/mage/cards/d/DawnElemental.java
index 012bffa4b83..6a362832ebc 100644
--- a/Mage.Sets/src/mage/cards/d/DawnElemental.java
+++ b/Mage.Sets/src/mage/cards/d/DawnElemental.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author spjspj
*/
-public class DawnElemental extends CardImpl {
+public final class DawnElemental extends CardImpl {
public DawnElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DawnGryff.java b/Mage.Sets/src/mage/cards/d/DawnGryff.java
index 30510321701..d0835f6204b 100644
--- a/Mage.Sets/src/mage/cards/d/DawnGryff.java
+++ b/Mage.Sets/src/mage/cards/d/DawnGryff.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DawnGryff extends CardImpl {
+public final class DawnGryff extends CardImpl {
public DawnGryff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DawnOfTheDead.java b/Mage.Sets/src/mage/cards/d/DawnOfTheDead.java
index 14e4b1db012..f711be07efc 100644
--- a/Mage.Sets/src/mage/cards/d/DawnOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/d/DawnOfTheDead.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class DawnOfTheDead extends CardImpl {
+public final class DawnOfTheDead extends CardImpl {
public DawnOfTheDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DawnToDusk.java b/Mage.Sets/src/mage/cards/d/DawnToDusk.java
index f360ba09a08..644104c393c 100644
--- a/Mage.Sets/src/mage/cards/d/DawnToDusk.java
+++ b/Mage.Sets/src/mage/cards/d/DawnToDusk.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class DawnToDusk extends CardImpl {
+public final class DawnToDusk extends CardImpl {
private static final FilterCard filterCard = new FilterCard("enchantment card from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DawnbreakReclaimer.java b/Mage.Sets/src/mage/cards/d/DawnbreakReclaimer.java
index e20effc2ac4..c8be847bf0d 100644
--- a/Mage.Sets/src/mage/cards/d/DawnbreakReclaimer.java
+++ b/Mage.Sets/src/mage/cards/d/DawnbreakReclaimer.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class DawnbreakReclaimer extends CardImpl {
+public final class DawnbreakReclaimer extends CardImpl {
public DawnbreakReclaimer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DawnbringerCharioteers.java b/Mage.Sets/src/mage/cards/d/DawnbringerCharioteers.java
index d8014924364..ca7f836d0ab 100644
--- a/Mage.Sets/src/mage/cards/d/DawnbringerCharioteers.java
+++ b/Mage.Sets/src/mage/cards/d/DawnbringerCharioteers.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class DawnbringerCharioteers extends CardImpl {
+public final class DawnbringerCharioteers extends CardImpl {
public DawnbringerCharioteers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DawnfeatherEagle.java b/Mage.Sets/src/mage/cards/d/DawnfeatherEagle.java
index ae9435f2b21..27b5ca3b5cc 100644
--- a/Mage.Sets/src/mage/cards/d/DawnfeatherEagle.java
+++ b/Mage.Sets/src/mage/cards/d/DawnfeatherEagle.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author Styxo
*/
-public class DawnfeatherEagle extends CardImpl {
+public final class DawnfeatherEagle extends CardImpl {
public DawnfeatherEagle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Dawnfluke.java b/Mage.Sets/src/mage/cards/d/Dawnfluke.java
index 667cfee3d6a..7589089e1a8 100644
--- a/Mage.Sets/src/mage/cards/d/Dawnfluke.java
+++ b/Mage.Sets/src/mage/cards/d/Dawnfluke.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Dawnfluke extends CardImpl {
+public final class Dawnfluke extends CardImpl {
public Dawnfluke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DawnglareInvoker.java b/Mage.Sets/src/mage/cards/d/DawnglareInvoker.java
index 7683ae7673f..4d38483b832 100644
--- a/Mage.Sets/src/mage/cards/d/DawnglareInvoker.java
+++ b/Mage.Sets/src/mage/cards/d/DawnglareInvoker.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class DawnglareInvoker extends CardImpl {
+public final class DawnglareInvoker extends CardImpl {
public DawnglareInvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DawnglowInfusion.java b/Mage.Sets/src/mage/cards/d/DawnglowInfusion.java
index 4002241e981..c85466d4993 100644
--- a/Mage.Sets/src/mage/cards/d/DawnglowInfusion.java
+++ b/Mage.Sets/src/mage/cards/d/DawnglowInfusion.java
@@ -44,7 +44,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author LevelX2
*/
-public class DawnglowInfusion extends CardImpl {
+public final class DawnglowInfusion extends CardImpl {
public DawnglowInfusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/d/DawningPurist.java b/Mage.Sets/src/mage/cards/d/DawningPurist.java
index 4941ccc6420..539327f01a8 100644
--- a/Mage.Sets/src/mage/cards/d/DawningPurist.java
+++ b/Mage.Sets/src/mage/cards/d/DawningPurist.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author djbrez
*/
-public class DawningPurist extends CardImpl {
+public final class DawningPurist extends CardImpl {
public DawningPurist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DawnrayArcher.java b/Mage.Sets/src/mage/cards/d/DawnrayArcher.java
index 2c1b159e0a2..8b5f5d23f94 100644
--- a/Mage.Sets/src/mage/cards/d/DawnrayArcher.java
+++ b/Mage.Sets/src/mage/cards/d/DawnrayArcher.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author Plopman
*/
-public class DawnrayArcher extends CardImpl {
+public final class DawnrayArcher extends CardImpl {
public DawnrayArcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DawnsReflection.java b/Mage.Sets/src/mage/cards/d/DawnsReflection.java
index 8c428f547a4..48393c6aba2 100644
--- a/Mage.Sets/src/mage/cards/d/DawnsReflection.java
+++ b/Mage.Sets/src/mage/cards/d/DawnsReflection.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class DawnsReflection extends CardImpl {
+public final class DawnsReflection extends CardImpl {
public DawnsReflection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
@@ -65,7 +65,7 @@ public class DawnsReflection extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
- // Whenever enchanted land is tapped for mana, its controller adds two mana in any combination of colors to their mana pool.
+ // Whenever enchanted land is tapped for mana, its controller adds two mana in any combination of colors.
this.addAbility(new DawnsReflectionTriggeredAbility());
}
@@ -107,7 +107,7 @@ class DawnsReflectionTriggeredAbility extends TriggeredManaAbility {
@Override
public String getRule() {
- return "Whenever enchanted land is tapped for mana, its controller adds two mana in any combination of colors to their mana pool (in addition to the mana the land produces).";
+ return "Whenever enchanted land is tapped for mana, its controller adds two mana in any combination of colors (in addition to the mana the land produces).";
}
}
@@ -115,7 +115,7 @@ class DawnsReflectionManaEffect extends ManaEffect {
public DawnsReflectionManaEffect() {
super();
- this.staticText = "its controller adds two mana in any combination of colors to their mana pool";
+ this.staticText = "its controller adds two mana in any combination of colors";
}
public DawnsReflectionManaEffect(final DawnsReflectionManaEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/d/Dawnstrider.java b/Mage.Sets/src/mage/cards/d/Dawnstrider.java
index acc83ac2ead..1a938cf4ac4 100644
--- a/Mage.Sets/src/mage/cards/d/Dawnstrider.java
+++ b/Mage.Sets/src/mage/cards/d/Dawnstrider.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Plopman
*/
-public class Dawnstrider extends CardImpl {
+public final class Dawnstrider extends CardImpl {
public Dawnstrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DawnstrikePaladin.java b/Mage.Sets/src/mage/cards/d/DawnstrikePaladin.java
index ecb80c47750..9516a810cc6 100644
--- a/Mage.Sets/src/mage/cards/d/DawnstrikePaladin.java
+++ b/Mage.Sets/src/mage/cards/d/DawnstrikePaladin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DawnstrikePaladin extends CardImpl {
+public final class DawnstrikePaladin extends CardImpl {
public DawnstrikePaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DawntreaderElk.java b/Mage.Sets/src/mage/cards/d/DawntreaderElk.java
index 23f52358dde..25fc803ac06 100644
--- a/Mage.Sets/src/mage/cards/d/DawntreaderElk.java
+++ b/Mage.Sets/src/mage/cards/d/DawntreaderElk.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author North
*/
-public class DawntreaderElk extends CardImpl {
+public final class DawntreaderElk extends CardImpl {
public DawntreaderElk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
@@ -58,7 +58,7 @@ public class DawntreaderElk extends CardImpl {
// {G}, Sacrifice Dawntreader Elk: Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new ColoredManaCost(ColoredManaSymbol.G));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/d/DaxosOfMeletis.java b/Mage.Sets/src/mage/cards/d/DaxosOfMeletis.java
index 74ebfa642a0..95a47e9e1e4 100644
--- a/Mage.Sets/src/mage/cards/d/DaxosOfMeletis.java
+++ b/Mage.Sets/src/mage/cards/d/DaxosOfMeletis.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class DaxosOfMeletis extends CardImpl {
+public final class DaxosOfMeletis extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/d/DaxosTheReturned.java b/Mage.Sets/src/mage/cards/d/DaxosTheReturned.java
index 511acbc335a..4831c08ea1f 100644
--- a/Mage.Sets/src/mage/cards/d/DaxosTheReturned.java
+++ b/Mage.Sets/src/mage/cards/d/DaxosTheReturned.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.DaxosSpiritToken;
*
* @author fireshoes
*/
-public class DaxosTheReturned extends CardImpl {
+public final class DaxosTheReturned extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/d/DaxossTorment.java b/Mage.Sets/src/mage/cards/d/DaxossTorment.java
index 4a38d1e894d..9ceaec12a6e 100644
--- a/Mage.Sets/src/mage/cards/d/DaxossTorment.java
+++ b/Mage.Sets/src/mage/cards/d/DaxossTorment.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.custom.CreatureToken;
/**
* @author fireshoes
*/
-public class DaxossTorment extends CardImpl {
+public final class DaxossTorment extends CardImpl {
public DaxossTorment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DayOfDestiny.java b/Mage.Sets/src/mage/cards/d/DayOfDestiny.java
index 0c9e17dd4cc..635e8027835 100644
--- a/Mage.Sets/src/mage/cards/d/DayOfDestiny.java
+++ b/Mage.Sets/src/mage/cards/d/DayOfDestiny.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author Loki
*/
-public class DayOfDestiny extends CardImpl {
+public final class DayOfDestiny extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Legendary creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DayOfJudgment.java b/Mage.Sets/src/mage/cards/d/DayOfJudgment.java
index 42daf6f7e9c..9449d47c489 100644
--- a/Mage.Sets/src/mage/cards/d/DayOfJudgment.java
+++ b/Mage.Sets/src/mage/cards/d/DayOfJudgment.java
@@ -38,7 +38,7 @@ import mage.filter.StaticFilters;
*
* @author BetaSteward_at_googlemail.com
*/
-public class DayOfJudgment extends CardImpl {
+public final class DayOfJudgment extends CardImpl {
public DayOfJudgment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DayOfTheDragons.java b/Mage.Sets/src/mage/cards/d/DayOfTheDragons.java
index 19bfc2451be..8a81e35cc5e 100644
--- a/Mage.Sets/src/mage/cards/d/DayOfTheDragons.java
+++ b/Mage.Sets/src/mage/cards/d/DayOfTheDragons.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class DayOfTheDragons extends CardImpl {
+public final class DayOfTheDragons extends CardImpl {
public DayOfTheDragons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DaybreakChaplain.java b/Mage.Sets/src/mage/cards/d/DaybreakChaplain.java
new file mode 100644
index 00000000000..7dcefb0816b
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/d/DaybreakChaplain.java
@@ -0,0 +1,65 @@
+/*
+ * 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.constants.SubType;
+import mage.abilities.keyword.LifelinkAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class DaybreakChaplain extends CardImpl {
+
+ public DaybreakChaplain(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.CLERIC);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(3);
+
+ // Lifelink
+ this.addAbility(LifelinkAbility.getInstance());
+
+ }
+
+ public DaybreakChaplain(final DaybreakChaplain card) {
+ super(card);
+ }
+
+ @Override
+ public DaybreakChaplain copy() {
+ return new DaybreakChaplain(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/d/DaybreakCoronet.java b/Mage.Sets/src/mage/cards/d/DaybreakCoronet.java
index 086d0dd58f5..df0412b74a5 100644
--- a/Mage.Sets/src/mage/cards/d/DaybreakCoronet.java
+++ b/Mage.Sets/src/mage/cards/d/DaybreakCoronet.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class DaybreakCoronet extends CardImpl {
+public final class DaybreakCoronet extends CardImpl {
public DaybreakCoronet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DaybreakRanger.java b/Mage.Sets/src/mage/cards/d/DaybreakRanger.java
index 172b92e61e9..927a96bb6f6 100644
--- a/Mage.Sets/src/mage/cards/d/DaybreakRanger.java
+++ b/Mage.Sets/src/mage/cards/d/DaybreakRanger.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class DaybreakRanger extends CardImpl {
+public final class DaybreakRanger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/d/DaysUndoing.java b/Mage.Sets/src/mage/cards/d/DaysUndoing.java
index b43324d2972..0d034643860 100644
--- a/Mage.Sets/src/mage/cards/d/DaysUndoing.java
+++ b/Mage.Sets/src/mage/cards/d/DaysUndoing.java
@@ -28,32 +28,27 @@
package mage.cards.d;
import java.util.UUID;
-import mage.abilities.Ability;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.Effect;
-import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardAllEffect;
import mage.abilities.effects.common.EndTurnEffect;
+import mage.abilities.effects.common.ShuffleHandGraveyardAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.constants.Zone;
-import mage.game.Game;
-import mage.players.Player;
/**
*
* @author fireshoes
*/
-public class DaysUndoing extends CardImpl {
+public final class DaysUndoing extends CardImpl {
public DaysUndoing(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
// Each player shuffles their hand and graveyard into their library, then draws seven cards. If it's your turn, end the turn.
- this.getSpellAbility().addEffect(new DaysUndoingEffect());
+ this.getSpellAbility().addEffect(new ShuffleHandGraveyardAllEffect());
Effect effect = new DrawCardAllEffect(7);
effect.setText(", then draws seven cards");
this.getSpellAbility().addEffect(effect);
@@ -69,36 +64,3 @@ public class DaysUndoing extends CardImpl {
return new DaysUndoing(this);
}
}
-
-class DaysUndoingEffect extends OneShotEffect {
-
- public DaysUndoingEffect() {
- super(Outcome.Neutral);
- staticText = "Each player shuffles their hand and graveyard into their library";
- }
-
- public DaysUndoingEffect(final DaysUndoingEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player controller = game.getPlayer(source.getControllerId());
- for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- player.moveCards(player.getHand(), Zone.LIBRARY, source, game);
- player.moveCards(player.getGraveyard(), Zone.LIBRARY, source, game);
- player.shuffleLibrary(source, game);
-
- }
- }
- return true;
- }
-
- @Override
- public DaysUndoingEffect copy() {
- return new DaysUndoingEffect(this);
- }
-
-}
diff --git a/Mage.Sets/src/mage/cards/d/Daze.java b/Mage.Sets/src/mage/cards/d/Daze.java
index 95c6fb8e7ea..fad87e53e4c 100644
--- a/Mage.Sets/src/mage/cards/d/Daze.java
+++ b/Mage.Sets/src/mage/cards/d/Daze.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jonubuu
*/
-public class Daze extends CardImpl {
+public final class Daze extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an Island");
diff --git a/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java b/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java
index 8f69a06346a..7f74cc2742f 100644
--- a/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java
+++ b/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2 & L_J
*/
-public class DazzlingBeauty extends CardImpl {
+public final class DazzlingBeauty extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("unblocked attacking creature");
diff --git a/Mage.Sets/src/mage/cards/d/DazzlingRamparts.java b/Mage.Sets/src/mage/cards/d/DazzlingRamparts.java
index 14d4301d2ff..0951e50c25f 100644
--- a/Mage.Sets/src/mage/cards/d/DazzlingRamparts.java
+++ b/Mage.Sets/src/mage/cards/d/DazzlingRamparts.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class DazzlingRamparts extends CardImpl {
+public final class DazzlingRamparts extends CardImpl {
public DazzlingRamparts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DazzlingReflection.java b/Mage.Sets/src/mage/cards/d/DazzlingReflection.java
index bf709171138..ae973b8735d 100644
--- a/Mage.Sets/src/mage/cards/d/DazzlingReflection.java
+++ b/Mage.Sets/src/mage/cards/d/DazzlingReflection.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DazzlingReflection extends CardImpl {
+public final class DazzlingReflection extends CardImpl {
public DazzlingReflection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadDrop.java b/Mage.Sets/src/mage/cards/d/DeadDrop.java
index 6f4d6e5bdfc..b478679f16b 100644
--- a/Mage.Sets/src/mage/cards/d/DeadDrop.java
+++ b/Mage.Sets/src/mage/cards/d/DeadDrop.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class DeadDrop extends CardImpl {
+public final class DeadDrop extends CardImpl {
public DeadDrop(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{9}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadGone.java b/Mage.Sets/src/mage/cards/d/DeadGone.java
index 22eabe88201..5b4ad47b997 100644
--- a/Mage.Sets/src/mage/cards/d/DeadGone.java
+++ b/Mage.Sets/src/mage/cards/d/DeadGone.java
@@ -16,7 +16,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author dustinconrad
*/
-public class DeadGone extends SplitCard {
+public final class DeadGone extends SplitCard {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/d/DeadIronSledge.java b/Mage.Sets/src/mage/cards/d/DeadIronSledge.java
index a93cad40ce2..30b1f836db0 100644
--- a/Mage.Sets/src/mage/cards/d/DeadIronSledge.java
+++ b/Mage.Sets/src/mage/cards/d/DeadIronSledge.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author jerekwilson
*/
-public class DeadIronSledge extends CardImpl {
+public final class DeadIronSledge extends CardImpl {
public DeadIronSledge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadMansChest.java b/Mage.Sets/src/mage/cards/d/DeadMansChest.java
index a1a00a68cce..1ccc2d836b4 100644
--- a/Mage.Sets/src/mage/cards/d/DeadMansChest.java
+++ b/Mage.Sets/src/mage/cards/d/DeadMansChest.java
@@ -61,7 +61,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DeadMansChest extends CardImpl {
+public final class DeadMansChest extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/d/DeadReckoning.java b/Mage.Sets/src/mage/cards/d/DeadReckoning.java
index 0435e24eabd..a80ef0a08a5 100644
--- a/Mage.Sets/src/mage/cards/d/DeadReckoning.java
+++ b/Mage.Sets/src/mage/cards/d/DeadReckoning.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class DeadReckoning extends CardImpl {
+public final class DeadReckoning extends CardImpl {
public DeadReckoning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadReveler.java b/Mage.Sets/src/mage/cards/d/DeadReveler.java
index 4032ca7abff..7510535c4a1 100644
--- a/Mage.Sets/src/mage/cards/d/DeadReveler.java
+++ b/Mage.Sets/src/mage/cards/d/DeadReveler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DeadReveler extends CardImpl {
+public final class DeadReveler extends CardImpl {
public DeadReveler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadRingers.java b/Mage.Sets/src/mage/cards/d/DeadRingers.java
index 212693d15a1..d689ac88ce2 100644
--- a/Mage.Sets/src/mage/cards/d/DeadRingers.java
+++ b/Mage.Sets/src/mage/cards/d/DeadRingers.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DeadRingers extends CardImpl {
+public final class DeadRingers extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/d/DeadWeight.java b/Mage.Sets/src/mage/cards/d/DeadWeight.java
index fad973b69ff..af28db84fbb 100644
--- a/Mage.Sets/src/mage/cards/d/DeadWeight.java
+++ b/Mage.Sets/src/mage/cards/d/DeadWeight.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Alvin
*/
-public class DeadWeight extends CardImpl {
+public final class DeadWeight extends CardImpl {
public DeadWeight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Deadapult.java b/Mage.Sets/src/mage/cards/d/Deadapult.java
index d3b9d1096fa..cc8e4cf29bc 100644
--- a/Mage.Sets/src/mage/cards/d/Deadapult.java
+++ b/Mage.Sets/src/mage/cards/d/Deadapult.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*/
-public class Deadapult extends CardImpl {
+public final class Deadapult extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Zombie");
diff --git a/Mage.Sets/src/mage/cards/d/DeadbridgeChant.java b/Mage.Sets/src/mage/cards/d/DeadbridgeChant.java
index 32d99698eb6..86355db40f1 100644
--- a/Mage.Sets/src/mage/cards/d/DeadbridgeChant.java
+++ b/Mage.Sets/src/mage/cards/d/DeadbridgeChant.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*/
-public class DeadbridgeChant extends CardImpl {
+public final class DeadbridgeChant extends CardImpl {
public DeadbridgeChant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadbridgeGoliath.java b/Mage.Sets/src/mage/cards/d/DeadbridgeGoliath.java
index 3d9126f42c3..73f53c2c731 100644
--- a/Mage.Sets/src/mage/cards/d/DeadbridgeGoliath.java
+++ b/Mage.Sets/src/mage/cards/d/DeadbridgeGoliath.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author magenoxx_at_gmail.com
*/
-public class DeadbridgeGoliath extends CardImpl {
+public final class DeadbridgeGoliath extends CardImpl {
public DeadbridgeGoliath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadbridgeShaman.java b/Mage.Sets/src/mage/cards/d/DeadbridgeShaman.java
index 1a6af0d021d..96632065255 100644
--- a/Mage.Sets/src/mage/cards/d/DeadbridgeShaman.java
+++ b/Mage.Sets/src/mage/cards/d/DeadbridgeShaman.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class DeadbridgeShaman extends CardImpl {
+public final class DeadbridgeShaman extends CardImpl {
public DeadbridgeShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadeyeBrawler.java b/Mage.Sets/src/mage/cards/d/DeadeyeBrawler.java
index 6f88d3c0269..a6594e94d03 100644
--- a/Mage.Sets/src/mage/cards/d/DeadeyeBrawler.java
+++ b/Mage.Sets/src/mage/cards/d/DeadeyeBrawler.java
@@ -44,7 +44,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class DeadeyeBrawler extends CardImpl {
+public final class DeadeyeBrawler extends CardImpl {
public DeadeyeBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java b/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java
index ea20a739c31..a6ceac78d5d 100644
--- a/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java
+++ b/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java
@@ -48,7 +48,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author Styxo
*/
-public class DeadeyeHarpooner extends CardImpl {
+public final class DeadeyeHarpooner extends CardImpl {
private final static FilterOpponentsCreaturePermanent filter = new FilterOpponentsCreaturePermanent("tapped creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/d/DeadeyeNavigator.java b/Mage.Sets/src/mage/cards/d/DeadeyeNavigator.java
index d1be4f775a3..c3f8733bef3 100644
--- a/Mage.Sets/src/mage/cards/d/DeadeyeNavigator.java
+++ b/Mage.Sets/src/mage/cards/d/DeadeyeNavigator.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class DeadeyeNavigator extends CardImpl {
+public final class DeadeyeNavigator extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, each of those creatures has \"{1}{U}: Exile this creature, then return it to the battlefield under your control.\"";
diff --git a/Mage.Sets/src/mage/cards/d/DeadeyePlunderers.java b/Mage.Sets/src/mage/cards/d/DeadeyePlunderers.java
index 4f527e7212f..1befef4dd0a 100644
--- a/Mage.Sets/src/mage/cards/d/DeadeyePlunderers.java
+++ b/Mage.Sets/src/mage/cards/d/DeadeyePlunderers.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author TheElk801
*/
-public class DeadeyePlunderers extends CardImpl {
+public final class DeadeyePlunderers extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact you control");
diff --git a/Mage.Sets/src/mage/cards/d/DeadeyeQuartermaster.java b/Mage.Sets/src/mage/cards/d/DeadeyeQuartermaster.java
index 049f6915fad..b7fa35724ab 100644
--- a/Mage.Sets/src/mage/cards/d/DeadeyeQuartermaster.java
+++ b/Mage.Sets/src/mage/cards/d/DeadeyeQuartermaster.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class DeadeyeQuartermaster extends CardImpl {
+public final class DeadeyeQuartermaster extends CardImpl {
private static final FilterCard filter = new FilterCard("an Equipment or Vehicle card");
diff --git a/Mage.Sets/src/mage/cards/d/DeadeyeRigHauler.java b/Mage.Sets/src/mage/cards/d/DeadeyeRigHauler.java
index 8fc708b907f..de54bf50a23 100644
--- a/Mage.Sets/src/mage/cards/d/DeadeyeRigHauler.java
+++ b/Mage.Sets/src/mage/cards/d/DeadeyeRigHauler.java
@@ -45,7 +45,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class DeadeyeRigHauler extends CardImpl {
+public final class DeadeyeRigHauler extends CardImpl {
public DeadeyeRigHauler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadeyeTormentor.java b/Mage.Sets/src/mage/cards/d/DeadeyeTormentor.java
index ec6eb634465..919a74ae8ed 100644
--- a/Mage.Sets/src/mage/cards/d/DeadeyeTormentor.java
+++ b/Mage.Sets/src/mage/cards/d/DeadeyeTormentor.java
@@ -45,7 +45,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author TheElk801
*/
-public class DeadeyeTormentor extends CardImpl {
+public final class DeadeyeTormentor extends CardImpl {
public DeadeyeTormentor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadeyeTracker.java b/Mage.Sets/src/mage/cards/d/DeadeyeTracker.java
index 405263345ef..0a11862c503 100644
--- a/Mage.Sets/src/mage/cards/d/DeadeyeTracker.java
+++ b/Mage.Sets/src/mage/cards/d/DeadeyeTracker.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
*
* @author TheElk801
*/
-public class DeadeyeTracker extends CardImpl {
+public final class DeadeyeTracker extends CardImpl {
public DeadeyeTracker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Deadfall.java b/Mage.Sets/src/mage/cards/d/Deadfall.java
index d1c67a8ee34..3fc78a21bb1 100644
--- a/Mage.Sets/src/mage/cards/d/Deadfall.java
+++ b/Mage.Sets/src/mage/cards/d/Deadfall.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author L_J
*/
-public class Deadfall extends CardImpl {
+public final class Deadfall extends CardImpl {
public Deadfall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadlockTrap.java b/Mage.Sets/src/mage/cards/d/DeadlockTrap.java
index f954244b25c..f4b995d81c6 100644
--- a/Mage.Sets/src/mage/cards/d/DeadlockTrap.java
+++ b/Mage.Sets/src/mage/cards/d/DeadlockTrap.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
*
* @author spjspj
*/
-public class DeadlockTrap extends CardImpl {
+public final class DeadlockTrap extends CardImpl {
public DeadlockTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadlyAllure.java b/Mage.Sets/src/mage/cards/d/DeadlyAllure.java
index 358527dc434..96d72fdaa30 100644
--- a/Mage.Sets/src/mage/cards/d/DeadlyAllure.java
+++ b/Mage.Sets/src/mage/cards/d/DeadlyAllure.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward
*/
-public class DeadlyAllure extends CardImpl {
+public final class DeadlyAllure extends CardImpl {
public DeadlyAllure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadlyDesigns.java b/Mage.Sets/src/mage/cards/d/DeadlyDesigns.java
index 8331e5c86b8..1b028e36ea2 100644
--- a/Mage.Sets/src/mage/cards/d/DeadlyDesigns.java
+++ b/Mage.Sets/src/mage/cards/d/DeadlyDesigns.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class DeadlyDesigns extends CardImpl {
+public final class DeadlyDesigns extends CardImpl {
public DeadlyDesigns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadlyGrub.java b/Mage.Sets/src/mage/cards/d/DeadlyGrub.java
index 109c981cd51..9d34b8d528f 100644
--- a/Mage.Sets/src/mage/cards/d/DeadlyGrub.java
+++ b/Mage.Sets/src/mage/cards/d/DeadlyGrub.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.DeadlyGrubToken;
*
* @author LoneFox
*/
-public class DeadlyGrub extends CardImpl {
+public final class DeadlyGrub extends CardImpl {
public DeadlyGrub(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadlyInsect.java b/Mage.Sets/src/mage/cards/d/DeadlyInsect.java
index d7dfc1656c9..f2e9404b048 100644
--- a/Mage.Sets/src/mage/cards/d/DeadlyInsect.java
+++ b/Mage.Sets/src/mage/cards/d/DeadlyInsect.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DeadlyInsect extends CardImpl {
+public final class DeadlyInsect extends CardImpl {
public DeadlyInsect(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadlyRecluse.java b/Mage.Sets/src/mage/cards/d/DeadlyRecluse.java
index 3d861b4a40a..4b2eb8d57f7 100644
--- a/Mage.Sets/src/mage/cards/d/DeadlyRecluse.java
+++ b/Mage.Sets/src/mage/cards/d/DeadlyRecluse.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DeadlyRecluse extends CardImpl {
+public final class DeadlyRecluse extends CardImpl {
public DeadlyRecluse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadlyTempest.java b/Mage.Sets/src/mage/cards/d/DeadlyTempest.java
index c7ee54d48c8..8cd9be0c536 100644
--- a/Mage.Sets/src/mage/cards/d/DeadlyTempest.java
+++ b/Mage.Sets/src/mage/cards/d/DeadlyTempest.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class DeadlyTempest extends CardImpl {
+public final class DeadlyTempest extends CardImpl {
public DeadlyTempest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadlyWanderings.java b/Mage.Sets/src/mage/cards/d/DeadlyWanderings.java
index 4bcd8a1b9a2..f13c5a36c15 100644
--- a/Mage.Sets/src/mage/cards/d/DeadlyWanderings.java
+++ b/Mage.Sets/src/mage/cards/d/DeadlyWanderings.java
@@ -49,7 +49,7 @@ import mage.filter.StaticFilters;
/**
* @author LevelX2
*/
-public class DeadlyWanderings extends CardImpl {
+public final class DeadlyWanderings extends CardImpl {
public DeadlyWanderings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Deadshot.java b/Mage.Sets/src/mage/cards/d/Deadshot.java
index 46643ab6d2b..e77510835ae 100644
--- a/Mage.Sets/src/mage/cards/d/Deadshot.java
+++ b/Mage.Sets/src/mage/cards/d/Deadshot.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author fireshoes
*/
-public class Deadshot extends CardImpl {
+public final class Deadshot extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/d/DeadshotMinotaur.java b/Mage.Sets/src/mage/cards/d/DeadshotMinotaur.java
index 298d3e5d8e9..64fecf16556 100644
--- a/Mage.Sets/src/mage/cards/d/DeadshotMinotaur.java
+++ b/Mage.Sets/src/mage/cards/d/DeadshotMinotaur.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jonubuu
*/
-public class DeadshotMinotaur extends CardImpl {
+public final class DeadshotMinotaur extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/d/DeadwoodTreefolk.java b/Mage.Sets/src/mage/cards/d/DeadwoodTreefolk.java
index 10311b5ad9d..8cd1e129485 100644
--- a/Mage.Sets/src/mage/cards/d/DeadwoodTreefolk.java
+++ b/Mage.Sets/src/mage/cards/d/DeadwoodTreefolk.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class DeadwoodTreefolk extends CardImpl {
+public final class DeadwoodTreefolk extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("another creature card from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DearlyDeparted.java b/Mage.Sets/src/mage/cards/d/DearlyDeparted.java
index 74b092938bc..46c716dd07b 100644
--- a/Mage.Sets/src/mage/cards/d/DearlyDeparted.java
+++ b/Mage.Sets/src/mage/cards/d/DearlyDeparted.java
@@ -27,6 +27,7 @@
*/
package mage.cards.d;
+import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
@@ -42,12 +43,10 @@ import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
-import java.util.UUID;
-
/**
* @author nantuko
*/
-public class DearlyDeparted extends CardImpl {
+public final class DearlyDeparted extends CardImpl {
public DearlyDeparted(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
@@ -75,7 +74,7 @@ public class DearlyDeparted extends CardImpl {
class DearlyDepartedEntersBattlefieldEffect extends ReplacementEffectImpl {
public DearlyDepartedEntersBattlefieldEffect() {
- super(Duration.OneUse, Outcome.BoostCreature);
+ super(Duration.WhileInGraveyard, Outcome.BoostCreature);
staticText = "As long as {this} is in your graveyard, each Human creature you control enters the battlefield with an additional +1/+1 counter on it";
}
diff --git a/Mage.Sets/src/mage/cards/d/DeathBaron.java b/Mage.Sets/src/mage/cards/d/DeathBaron.java
index ecd892178fd..8dff8e29b67 100644
--- a/Mage.Sets/src/mage/cards/d/DeathBaron.java
+++ b/Mage.Sets/src/mage/cards/d/DeathBaron.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class DeathBaron extends CardImpl {
+public final class DeathBaron extends CardImpl {
private static final FilterCreaturePermanent filterSkeletons = new FilterCreaturePermanent("Skeleton creatures");
private static final FilterCreaturePermanent filterZombie = new FilterCreaturePermanent("Zombie creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DeathBomb.java b/Mage.Sets/src/mage/cards/d/DeathBomb.java
index a1ac7884648..f5e4c4e3099 100644
--- a/Mage.Sets/src/mage/cards/d/DeathBomb.java
+++ b/Mage.Sets/src/mage/cards/d/DeathBomb.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DeathBomb extends CardImpl {
+public final class DeathBomb extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DeathByDragons.java b/Mage.Sets/src/mage/cards/d/DeathByDragons.java
index 57933f54f7a..19c1bca2b4c 100644
--- a/Mage.Sets/src/mage/cards/d/DeathByDragons.java
+++ b/Mage.Sets/src/mage/cards/d/DeathByDragons.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class DeathByDragons extends CardImpl {
+public final class DeathByDragons extends CardImpl {
public DeathByDragons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathCharmer.java b/Mage.Sets/src/mage/cards/d/DeathCharmer.java
index d8873abbae4..26ed53c2ae1 100644
--- a/Mage.Sets/src/mage/cards/d/DeathCharmer.java
+++ b/Mage.Sets/src/mage/cards/d/DeathCharmer.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class DeathCharmer extends CardImpl {
+public final class DeathCharmer extends CardImpl {
public DeathCharmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathCloud.java b/Mage.Sets/src/mage/cards/d/DeathCloud.java
index e28f66fe13b..68d0c96f476 100644
--- a/Mage.Sets/src/mage/cards/d/DeathCloud.java
+++ b/Mage.Sets/src/mage/cards/d/DeathCloud.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author LevelX2
*/
-public class DeathCloud extends CardImpl {
+public final class DeathCloud extends CardImpl {
public DeathCloud(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathCultist.java b/Mage.Sets/src/mage/cards/d/DeathCultist.java
index 7daf76b0934..eaf3ab6e1c3 100644
--- a/Mage.Sets/src/mage/cards/d/DeathCultist.java
+++ b/Mage.Sets/src/mage/cards/d/DeathCultist.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class DeathCultist extends CardImpl {
+public final class DeathCultist extends CardImpl {
public DeathCultist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathDenied.java b/Mage.Sets/src/mage/cards/d/DeathDenied.java
index 19124531057..d6e7bf9c0ea 100644
--- a/Mage.Sets/src/mage/cards/d/DeathDenied.java
+++ b/Mage.Sets/src/mage/cards/d/DeathDenied.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class DeathDenied extends CardImpl {
+public final class DeathDenied extends CardImpl {
public DeathDenied(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathFrenzy.java b/Mage.Sets/src/mage/cards/d/DeathFrenzy.java
index c0bf6448e26..11d5503d7e5 100644
--- a/Mage.Sets/src/mage/cards/d/DeathFrenzy.java
+++ b/Mage.Sets/src/mage/cards/d/DeathFrenzy.java
@@ -46,7 +46,7 @@ import mage.game.events.ZoneChangeEvent;
*
* @author LevelX2
*/
-public class DeathFrenzy extends CardImpl {
+public final class DeathFrenzy extends CardImpl {
public DeathFrenzy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathGrasp.java b/Mage.Sets/src/mage/cards/d/DeathGrasp.java
index 9582d93a88b..e7530e93028 100644
--- a/Mage.Sets/src/mage/cards/d/DeathGrasp.java
+++ b/Mage.Sets/src/mage/cards/d/DeathGrasp.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class DeathGrasp extends CardImpl {
+public final class DeathGrasp extends CardImpl {
public DeathGrasp (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathHoodCobra.java b/Mage.Sets/src/mage/cards/d/DeathHoodCobra.java
index ce27747ec25..2a345602d5a 100644
--- a/Mage.Sets/src/mage/cards/d/DeathHoodCobra.java
+++ b/Mage.Sets/src/mage/cards/d/DeathHoodCobra.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class DeathHoodCobra extends CardImpl {
+public final class DeathHoodCobra extends CardImpl {
public DeathHoodCobra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathMaskDuplicant.java b/Mage.Sets/src/mage/cards/d/DeathMaskDuplicant.java
index 13df11ddb20..0f8a97eecfc 100644
--- a/Mage.Sets/src/mage/cards/d/DeathMaskDuplicant.java
+++ b/Mage.Sets/src/mage/cards/d/DeathMaskDuplicant.java
@@ -67,7 +67,7 @@ import mage.util.CardUtil;
*
* @author TheElk801
*/
-public class DeathMaskDuplicant extends CardImpl {
+public final class DeathMaskDuplicant extends CardImpl {
public DeathMaskDuplicant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathMatch.java b/Mage.Sets/src/mage/cards/d/DeathMatch.java
index dee54dc0857..2053ff02292 100644
--- a/Mage.Sets/src/mage/cards/d/DeathMatch.java
+++ b/Mage.Sets/src/mage/cards/d/DeathMatch.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FirstTargetPointer;
* @author LoneFox
*
*/
-public class DeathMatch extends CardImpl {
+public final class DeathMatch extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/d/DeathMutation.java b/Mage.Sets/src/mage/cards/d/DeathMutation.java
index 8d0b08b212d..7453f0b26b7 100644
--- a/Mage.Sets/src/mage/cards/d/DeathMutation.java
+++ b/Mage.Sets/src/mage/cards/d/DeathMutation.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class DeathMutation extends CardImpl {
+public final class DeathMutation extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/d/DeathOfAThousandStings.java b/Mage.Sets/src/mage/cards/d/DeathOfAThousandStings.java
index f6ff16a3e9d..2e8bcbd6c37 100644
--- a/Mage.Sets/src/mage/cards/d/DeathOfAThousandStings.java
+++ b/Mage.Sets/src/mage/cards/d/DeathOfAThousandStings.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class DeathOfAThousandStings extends CardImpl {
+public final class DeathOfAThousandStings extends CardImpl {
public DeathOfAThousandStings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathPitOffering.java b/Mage.Sets/src/mage/cards/d/DeathPitOffering.java
index 538ee3703b4..150a5f4dfdc 100644
--- a/Mage.Sets/src/mage/cards/d/DeathPitOffering.java
+++ b/Mage.Sets/src/mage/cards/d/DeathPitOffering.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class DeathPitOffering extends CardImpl {
+public final class DeathPitOffering extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/d/DeathPitsOfRath.java b/Mage.Sets/src/mage/cards/d/DeathPitsOfRath.java
index c9c1488d942..f9e4852449b 100644
--- a/Mage.Sets/src/mage/cards/d/DeathPitsOfRath.java
+++ b/Mage.Sets/src/mage/cards/d/DeathPitsOfRath.java
@@ -43,7 +43,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class DeathPitsOfRath extends CardImpl {
+public final class DeathPitsOfRath extends CardImpl {
public DeathPitsOfRath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathPulse.java b/Mage.Sets/src/mage/cards/d/DeathPulse.java
index 85b6bbff9ee..6dffdf6145d 100644
--- a/Mage.Sets/src/mage/cards/d/DeathPulse.java
+++ b/Mage.Sets/src/mage/cards/d/DeathPulse.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Temba21
*/
-public class DeathPulse extends CardImpl {
+public final class DeathPulse extends CardImpl {
public DeathPulse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathRattle.java b/Mage.Sets/src/mage/cards/d/DeathRattle.java
index cceef8b4734..a98bb021c3d 100644
--- a/Mage.Sets/src/mage/cards/d/DeathRattle.java
+++ b/Mage.Sets/src/mage/cards/d/DeathRattle.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DeathRattle extends CardImpl {
+public final class DeathRattle extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nongreen creature");
diff --git a/Mage.Sets/src/mage/cards/d/DeathSpark.java b/Mage.Sets/src/mage/cards/d/DeathSpark.java
index 3a2e3edd1d7..a3c0fdb2efc 100644
--- a/Mage.Sets/src/mage/cards/d/DeathSpark.java
+++ b/Mage.Sets/src/mage/cards/d/DeathSpark.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class DeathSpark extends CardImpl {
+public final class DeathSpark extends CardImpl {
public DeathSpark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathSpeakers.java b/Mage.Sets/src/mage/cards/d/DeathSpeakers.java
index 788a81e2fae..85b946536f0 100644
--- a/Mage.Sets/src/mage/cards/d/DeathSpeakers.java
+++ b/Mage.Sets/src/mage/cards/d/DeathSpeakers.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class DeathSpeakers extends CardImpl {
+public final class DeathSpeakers extends CardImpl {
public DeathSpeakers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathStroke.java b/Mage.Sets/src/mage/cards/d/DeathStroke.java
index df5ddda2b73..60e28935d67 100644
--- a/Mage.Sets/src/mage/cards/d/DeathStroke.java
+++ b/Mage.Sets/src/mage/cards/d/DeathStroke.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DeathStroke extends CardImpl {
+public final class DeathStroke extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/d/DeathTrooper.java b/Mage.Sets/src/mage/cards/d/DeathTrooper.java
index c7095be0ba9..91db47b7a93 100644
--- a/Mage.Sets/src/mage/cards/d/DeathTrooper.java
+++ b/Mage.Sets/src/mage/cards/d/DeathTrooper.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class DeathTrooper extends CardImpl {
+public final class DeathTrooper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DeathWard.java b/Mage.Sets/src/mage/cards/d/DeathWard.java
index c5e28fa62f7..70f152687d2 100644
--- a/Mage.Sets/src/mage/cards/d/DeathWard.java
+++ b/Mage.Sets/src/mage/cards/d/DeathWard.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author KholdFuzion
*/
-public class DeathWard extends CardImpl {
+public final class DeathWard extends CardImpl {
public DeathWard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathWatch.java b/Mage.Sets/src/mage/cards/d/DeathWatch.java
index ed09611320e..12d2c3cd4a2 100644
--- a/Mage.Sets/src/mage/cards/d/DeathWatch.java
+++ b/Mage.Sets/src/mage/cards/d/DeathWatch.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author vereena42
*/
-public class DeathWatch extends CardImpl {
+public final class DeathWatch extends CardImpl {
public DeathWatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathWind.java b/Mage.Sets/src/mage/cards/d/DeathWind.java
index 0a1276a73e9..071fce73c10 100644
--- a/Mage.Sets/src/mage/cards/d/DeathWind.java
+++ b/Mage.Sets/src/mage/cards/d/DeathWind.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class DeathWind extends CardImpl {
+public final class DeathWind extends CardImpl {
public DeathWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathWish.java b/Mage.Sets/src/mage/cards/d/DeathWish.java
index 3bbf8a3919a..8c4f6d8177e 100644
--- a/Mage.Sets/src/mage/cards/d/DeathWish.java
+++ b/Mage.Sets/src/mage/cards/d/DeathWish.java
@@ -40,7 +40,7 @@ import mage.filter.FilterCard;
*
* @author Plopman
*/
-public class DeathWish extends CardImpl {
+public final class DeathWish extends CardImpl {
public DeathWish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathbellowRaider.java b/Mage.Sets/src/mage/cards/d/DeathbellowRaider.java
index 1d747bb48b1..ccf689548d1 100644
--- a/Mage.Sets/src/mage/cards/d/DeathbellowRaider.java
+++ b/Mage.Sets/src/mage/cards/d/DeathbellowRaider.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class DeathbellowRaider extends CardImpl {
+public final class DeathbellowRaider extends CardImpl {
public DeathbellowRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathbloomThallid.java b/Mage.Sets/src/mage/cards/d/DeathbloomThallid.java
index 816e8b8d731..28d5082f6e8 100644
--- a/Mage.Sets/src/mage/cards/d/DeathbloomThallid.java
+++ b/Mage.Sets/src/mage/cards/d/DeathbloomThallid.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author TheElk801
*/
-public class DeathbloomThallid extends CardImpl {
+public final class DeathbloomThallid extends CardImpl {
public DeathbloomThallid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathbringerLiege.java b/Mage.Sets/src/mage/cards/d/DeathbringerLiege.java
index 614feb88daf..a33ac573f45 100644
--- a/Mage.Sets/src/mage/cards/d/DeathbringerLiege.java
+++ b/Mage.Sets/src/mage/cards/d/DeathbringerLiege.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DeathbringerLiege extends CardImpl {
+public final class DeathbringerLiege extends CardImpl {
private static final FilterCreaturePermanent filterWhite = new FilterCreaturePermanent("white creatures");
private static final FilterCreaturePermanent filterBlack = new FilterCreaturePermanent("black creatures");
private static final FilterSpell filterWhiteSpellCard = new FilterSpell("a white spell");
diff --git a/Mage.Sets/src/mage/cards/d/DeathbringerRegent.java b/Mage.Sets/src/mage/cards/d/DeathbringerRegent.java
index 2d2fdd0c8dc..f6eac3c7168 100644
--- a/Mage.Sets/src/mage/cards/d/DeathbringerRegent.java
+++ b/Mage.Sets/src/mage/cards/d/DeathbringerRegent.java
@@ -50,7 +50,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author jeffwadsworth
*/
-public class DeathbringerRegent extends CardImpl {
+public final class DeathbringerRegent extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DeathbringerThoctar.java b/Mage.Sets/src/mage/cards/d/DeathbringerThoctar.java
index d745b657ab3..91de302665d 100644
--- a/Mage.Sets/src/mage/cards/d/DeathbringerThoctar.java
+++ b/Mage.Sets/src/mage/cards/d/DeathbringerThoctar.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class DeathbringerThoctar extends CardImpl {
+public final class DeathbringerThoctar extends CardImpl {
public DeathbringerThoctar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathcapCultivator.java b/Mage.Sets/src/mage/cards/d/DeathcapCultivator.java
index bd11c524125..61a9eb104bf 100644
--- a/Mage.Sets/src/mage/cards/d/DeathcapCultivator.java
+++ b/Mage.Sets/src/mage/cards/d/DeathcapCultivator.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class DeathcapCultivator extends CardImpl {
+public final class DeathcapCultivator extends CardImpl {
public DeathcapCultivator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathcoilWurm.java b/Mage.Sets/src/mage/cards/d/DeathcoilWurm.java
index 975d5d0551b..6948f16d02d 100644
--- a/Mage.Sets/src/mage/cards/d/DeathcoilWurm.java
+++ b/Mage.Sets/src/mage/cards/d/DeathcoilWurm.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author nigelzor
*/
-public class DeathcoilWurm extends CardImpl {
+public final class DeathcoilWurm extends CardImpl {
public DeathcoilWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathcultRogue.java b/Mage.Sets/src/mage/cards/d/DeathcultRogue.java
index b229c0874f8..9465813d784 100644
--- a/Mage.Sets/src/mage/cards/d/DeathcultRogue.java
+++ b/Mage.Sets/src/mage/cards/d/DeathcultRogue.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class DeathcultRogue extends CardImpl {
+public final class DeathcultRogue extends CardImpl {
public DeathcultRogue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U/B}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathcurseOgre.java b/Mage.Sets/src/mage/cards/d/DeathcurseOgre.java
index 905dfe2060b..640e97b66ea 100644
--- a/Mage.Sets/src/mage/cards/d/DeathcurseOgre.java
+++ b/Mage.Sets/src/mage/cards/d/DeathcurseOgre.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DeathcurseOgre extends CardImpl {
+public final class DeathcurseOgre extends CardImpl {
public DeathcurseOgre (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathforgeShaman.java b/Mage.Sets/src/mage/cards/d/DeathforgeShaman.java
index 3247ce5a22e..36f85c24483 100644
--- a/Mage.Sets/src/mage/cards/d/DeathforgeShaman.java
+++ b/Mage.Sets/src/mage/cards/d/DeathforgeShaman.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author jeffwadsworth
*/
-public class DeathforgeShaman extends CardImpl {
+public final class DeathforgeShaman extends CardImpl {
public DeathforgeShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathgazeCockatrice.java b/Mage.Sets/src/mage/cards/d/DeathgazeCockatrice.java
index 6968bd3ac35..39b1442948e 100644
--- a/Mage.Sets/src/mage/cards/d/DeathgazeCockatrice.java
+++ b/Mage.Sets/src/mage/cards/d/DeathgazeCockatrice.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DeathgazeCockatrice extends CardImpl {
+public final class DeathgazeCockatrice extends CardImpl {
public DeathgazeCockatrice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Deathgazer.java b/Mage.Sets/src/mage/cards/d/Deathgazer.java
index 219899c75b5..177ad02770b 100644
--- a/Mage.Sets/src/mage/cards/d/Deathgazer.java
+++ b/Mage.Sets/src/mage/cards/d/Deathgazer.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Plopman
*/
-public class Deathgazer extends CardImpl {
+public final class Deathgazer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/d/DeathgorgeScavenger.java b/Mage.Sets/src/mage/cards/d/DeathgorgeScavenger.java
index 6a9c6beb815..89810b3f2fb 100644
--- a/Mage.Sets/src/mage/cards/d/DeathgorgeScavenger.java
+++ b/Mage.Sets/src/mage/cards/d/DeathgorgeScavenger.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author TheElk801
*/
-public class DeathgorgeScavenger extends CardImpl {
+public final class DeathgorgeScavenger extends CardImpl {
public DeathgorgeScavenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/Deathgreeter.java b/Mage.Sets/src/mage/cards/d/Deathgreeter.java
index de07f1ff60b..7a9545c5942 100644
--- a/Mage.Sets/src/mage/cards/d/Deathgreeter.java
+++ b/Mage.Sets/src/mage/cards/d/Deathgreeter.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Deathgreeter extends CardImpl {
+public final class Deathgreeter extends CardImpl {
public Deathgreeter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Deathgrip.java b/Mage.Sets/src/mage/cards/d/Deathgrip.java
index e74a0bf8f84..5844097824e 100644
--- a/Mage.Sets/src/mage/cards/d/Deathgrip.java
+++ b/Mage.Sets/src/mage/cards/d/Deathgrip.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author markedagain
*/
-public class Deathgrip extends CardImpl {
+public final class Deathgrip extends CardImpl {
private static final FilterSpell filter = new FilterSpell("green spell");
static{
filter.add(new ColorPredicate(ObjectColor.GREEN));
diff --git a/Mage.Sets/src/mage/cards/d/DeathknellKami.java b/Mage.Sets/src/mage/cards/d/DeathknellKami.java
index d89427df4e5..c2d6c975b28 100644
--- a/Mage.Sets/src/mage/cards/d/DeathknellKami.java
+++ b/Mage.Sets/src/mage/cards/d/DeathknellKami.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DeathknellKami extends CardImpl {
+public final class DeathknellKami extends CardImpl {
public DeathknellKami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Deathlace.java b/Mage.Sets/src/mage/cards/d/Deathlace.java
index b13045e4b57..f1406ad865e 100644
--- a/Mage.Sets/src/mage/cards/d/Deathlace.java
+++ b/Mage.Sets/src/mage/cards/d/Deathlace.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author AlumiuN
*/
-public class Deathlace extends CardImpl {
+public final class Deathlace extends CardImpl {
public Deathlace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathlessAncient.java b/Mage.Sets/src/mage/cards/d/DeathlessAncient.java
index 1db85ec80bb..cbf1dac716b 100644
--- a/Mage.Sets/src/mage/cards/d/DeathlessAncient.java
+++ b/Mage.Sets/src/mage/cards/d/DeathlessAncient.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author caldover
*/
-public class DeathlessAncient extends CardImpl {
+public final class DeathlessAncient extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Vampires you control");
diff --git a/Mage.Sets/src/mage/cards/d/DeathlessAngel.java b/Mage.Sets/src/mage/cards/d/DeathlessAngel.java
index 831294e15fa..610f164c618 100644
--- a/Mage.Sets/src/mage/cards/d/DeathlessAngel.java
+++ b/Mage.Sets/src/mage/cards/d/DeathlessAngel.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DeathlessAngel extends CardImpl {
+public final class DeathlessAngel extends CardImpl {
public DeathlessAngel (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java b/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java
index 743a8da73f7..c8512fe3962 100644
--- a/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java
+++ b/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class DeathlessBehemoth extends CardImpl {
+public final class DeathlessBehemoth extends CardImpl {
private final static FilterControlledPermanent filter = new FilterControlledPermanent("two Eldrazi Scions");
diff --git a/Mage.Sets/src/mage/cards/d/Deathmark.java b/Mage.Sets/src/mage/cards/d/Deathmark.java
index 406ee196bdb..1bad2821f45 100644
--- a/Mage.Sets/src/mage/cards/d/Deathmark.java
+++ b/Mage.Sets/src/mage/cards/d/Deathmark.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Deathmark extends CardImpl {
+public final class Deathmark extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green or white creature");
diff --git a/Mage.Sets/src/mage/cards/d/DeathmarkPrelate.java b/Mage.Sets/src/mage/cards/d/DeathmarkPrelate.java
index 4b5d854d9ef..e02f7ce95aa 100644
--- a/Mage.Sets/src/mage/cards/d/DeathmarkPrelate.java
+++ b/Mage.Sets/src/mage/cards/d/DeathmarkPrelate.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class DeathmarkPrelate extends CardImpl {
+public final class DeathmarkPrelate extends CardImpl {
private static final FilterControlledPermanent filter1 = new FilterControlledPermanent("Zombie");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("non-Zombie creature");
diff --git a/Mage.Sets/src/mage/cards/d/DeathmaskNezumi.java b/Mage.Sets/src/mage/cards/d/DeathmaskNezumi.java
index f567b7e1d0f..e3415a66d81 100644
--- a/Mage.Sets/src/mage/cards/d/DeathmaskNezumi.java
+++ b/Mage.Sets/src/mage/cards/d/DeathmaskNezumi.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DeathmaskNezumi extends CardImpl {
+public final class DeathmaskNezumi extends CardImpl {
public DeathmaskNezumi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathmistRaptor.java b/Mage.Sets/src/mage/cards/d/DeathmistRaptor.java
index 0eea387ca70..034e032f878 100644
--- a/Mage.Sets/src/mage/cards/d/DeathmistRaptor.java
+++ b/Mage.Sets/src/mage/cards/d/DeathmistRaptor.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DeathmistRaptor extends CardImpl {
+public final class DeathmistRaptor extends CardImpl {
public DeathmistRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathpactAngel.java b/Mage.Sets/src/mage/cards/d/DeathpactAngel.java
index 03bbda894bc..ccecf90f35b 100644
--- a/Mage.Sets/src/mage/cards/d/DeathpactAngel.java
+++ b/Mage.Sets/src/mage/cards/d/DeathpactAngel.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.DeathpactAngelToken;
*
* @author Plopman
*/
-public class DeathpactAngel extends CardImpl {
+public final class DeathpactAngel extends CardImpl {
public DeathpactAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathreapRitual.java b/Mage.Sets/src/mage/cards/d/DeathreapRitual.java
index 7b61a71590d..2d8b177190f 100644
--- a/Mage.Sets/src/mage/cards/d/DeathreapRitual.java
+++ b/Mage.Sets/src/mage/cards/d/DeathreapRitual.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class DeathreapRitual extends CardImpl {
+public final class DeathreapRitual extends CardImpl {
public DeathreapRitual(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/Deathrender.java b/Mage.Sets/src/mage/cards/d/Deathrender.java
index bd1b6c8d1df..16872eaccc2 100644
--- a/Mage.Sets/src/mage/cards/d/Deathrender.java
+++ b/Mage.Sets/src/mage/cards/d/Deathrender.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Blinke
*/
-public class Deathrender extends CardImpl {
+public final class Deathrender extends CardImpl {
public Deathrender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathriteShaman.java b/Mage.Sets/src/mage/cards/d/DeathriteShaman.java
index 9bc8f9d89df..dfd44ac6c36 100644
--- a/Mage.Sets/src/mage/cards/d/DeathriteShaman.java
+++ b/Mage.Sets/src/mage/cards/d/DeathriteShaman.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class DeathriteShaman extends CardImpl {
+public final class DeathriteShaman extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card from a graveyard");
diff --git a/Mage.Sets/src/mage/cards/d/DeathsApproach.java b/Mage.Sets/src/mage/cards/d/DeathsApproach.java
index 1977ca4c8af..2cf4d756c42 100644
--- a/Mage.Sets/src/mage/cards/d/DeathsApproach.java
+++ b/Mage.Sets/src/mage/cards/d/DeathsApproach.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DeathsApproach extends CardImpl {
+public final class DeathsApproach extends CardImpl {
public DeathsApproach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathsCaress.java b/Mage.Sets/src/mage/cards/d/DeathsCaress.java
index f6257828bb3..cd2a5e71c59 100644
--- a/Mage.Sets/src/mage/cards/d/DeathsCaress.java
+++ b/Mage.Sets/src/mage/cards/d/DeathsCaress.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author North
*/
-public class DeathsCaress extends CardImpl {
+public final class DeathsCaress extends CardImpl {
public DeathsCaress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathsDuet.java b/Mage.Sets/src/mage/cards/d/DeathsDuet.java
index 02b3b88b655..71dbe613f14 100644
--- a/Mage.Sets/src/mage/cards/d/DeathsDuet.java
+++ b/Mage.Sets/src/mage/cards/d/DeathsDuet.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class DeathsDuet extends CardImpl {
+public final class DeathsDuet extends CardImpl {
public DeathsDuet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathsHeadBuzzard.java b/Mage.Sets/src/mage/cards/d/DeathsHeadBuzzard.java
index feed52b3dda..1d847797c61 100644
--- a/Mage.Sets/src/mage/cards/d/DeathsHeadBuzzard.java
+++ b/Mage.Sets/src/mage/cards/d/DeathsHeadBuzzard.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class DeathsHeadBuzzard extends CardImpl {
+public final class DeathsHeadBuzzard extends CardImpl {
public DeathsHeadBuzzard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathsPresence.java b/Mage.Sets/src/mage/cards/d/DeathsPresence.java
index f7ac018b374..ba012b9ce49 100644
--- a/Mage.Sets/src/mage/cards/d/DeathsPresence.java
+++ b/Mage.Sets/src/mage/cards/d/DeathsPresence.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class DeathsPresence extends CardImpl {
+public final class DeathsPresence extends CardImpl {
public DeathsPresence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathsShadow.java b/Mage.Sets/src/mage/cards/d/DeathsShadow.java
index 71c65af311f..fbf20db0a83 100644
--- a/Mage.Sets/src/mage/cards/d/DeathsShadow.java
+++ b/Mage.Sets/src/mage/cards/d/DeathsShadow.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class DeathsShadow extends CardImpl {
+public final class DeathsShadow extends CardImpl {
public DeathsShadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathsporeThallid.java b/Mage.Sets/src/mage/cards/d/DeathsporeThallid.java
index cfcabc9ceae..aeaee092e48 100644
--- a/Mage.Sets/src/mage/cards/d/DeathsporeThallid.java
+++ b/Mage.Sets/src/mage/cards/d/DeathsporeThallid.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DeathsporeThallid extends CardImpl {
+public final class DeathsporeThallid extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DebilitatingInjury.java b/Mage.Sets/src/mage/cards/d/DebilitatingInjury.java
index 7ab0167e647..99e34ca5c84 100644
--- a/Mage.Sets/src/mage/cards/d/DebilitatingInjury.java
+++ b/Mage.Sets/src/mage/cards/d/DebilitatingInjury.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DebilitatingInjury extends CardImpl {
+public final class DebilitatingInjury extends CardImpl {
public DebilitatingInjury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DebtOfLoyalty.java b/Mage.Sets/src/mage/cards/d/DebtOfLoyalty.java
index cf665758934..7286d10ea7c 100644
--- a/Mage.Sets/src/mage/cards/d/DebtOfLoyalty.java
+++ b/Mage.Sets/src/mage/cards/d/DebtOfLoyalty.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Dilnu
*/
-public class DebtOfLoyalty extends CardImpl {
+public final class DebtOfLoyalty extends CardImpl {
public DebtOfLoyalty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DebtToTheDeathless.java b/Mage.Sets/src/mage/cards/d/DebtToTheDeathless.java
index 3578b52ec90..763e9b5a4b7 100644
--- a/Mage.Sets/src/mage/cards/d/DebtToTheDeathless.java
+++ b/Mage.Sets/src/mage/cards/d/DebtToTheDeathless.java
@@ -41,7 +41,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DebtToTheDeathless extends CardImpl {
+public final class DebtToTheDeathless extends CardImpl {
public DebtToTheDeathless(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{W}{W}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DebtorsKnell.java b/Mage.Sets/src/mage/cards/d/DebtorsKnell.java
index e507a8d349d..573159a6487 100644
--- a/Mage.Sets/src/mage/cards/d/DebtorsKnell.java
+++ b/Mage.Sets/src/mage/cards/d/DebtorsKnell.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class DebtorsKnell extends CardImpl {
+public final class DebtorsKnell extends CardImpl {
public DebtorsKnell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{W/B}{W/B}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/d/DebtorsPulpit.java b/Mage.Sets/src/mage/cards/d/DebtorsPulpit.java
index 9687f2c5676..2d739a92f74 100644
--- a/Mage.Sets/src/mage/cards/d/DebtorsPulpit.java
+++ b/Mage.Sets/src/mage/cards/d/DebtorsPulpit.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class DebtorsPulpit extends CardImpl {
+public final class DebtorsPulpit extends CardImpl {
public DebtorsPulpit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DecayingSoil.java b/Mage.Sets/src/mage/cards/d/DecayingSoil.java
index ef33dfae25f..05b34ccb415 100644
--- a/Mage.Sets/src/mage/cards/d/DecayingSoil.java
+++ b/Mage.Sets/src/mage/cards/d/DecayingSoil.java
@@ -61,7 +61,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author cbt33, Nantuko (Nim Deathmantle)
*/
-public class DecayingSoil extends CardImpl {
+public final class DecayingSoil extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
static{
diff --git a/Mage.Sets/src/mage/cards/d/DeceiverExarch.java b/Mage.Sets/src/mage/cards/d/DeceiverExarch.java
index 17d7af7efee..7ccc6d274b5 100644
--- a/Mage.Sets/src/mage/cards/d/DeceiverExarch.java
+++ b/Mage.Sets/src/mage/cards/d/DeceiverExarch.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class DeceiverExarch extends CardImpl {
+public final class DeceiverExarch extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/d/DeceiverOfForm.java b/Mage.Sets/src/mage/cards/d/DeceiverOfForm.java
index f8dd917bbf6..32bfe92d497 100644
--- a/Mage.Sets/src/mage/cards/d/DeceiverOfForm.java
+++ b/Mage.Sets/src/mage/cards/d/DeceiverOfForm.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DeceiverOfForm extends CardImpl {
+public final class DeceiverOfForm extends CardImpl {
public DeceiverOfForm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{C}");
diff --git a/Mage.Sets/src/mage/cards/d/Deception.java b/Mage.Sets/src/mage/cards/d/Deception.java
index b4b75526160..1a322d8204f 100644
--- a/Mage.Sets/src/mage/cards/d/Deception.java
+++ b/Mage.Sets/src/mage/cards/d/Deception.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class Deception extends CardImpl {
+public final class Deception extends CardImpl {
public Deception(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Decimate.java b/Mage.Sets/src/mage/cards/d/Decimate.java
index 5e99f1bf98c..f258999c3ec 100644
--- a/Mage.Sets/src/mage/cards/d/Decimate.java
+++ b/Mage.Sets/src/mage/cards/d/Decimate.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author shieldal
*/
-public class Decimate extends CardImpl {
+public final class Decimate extends CardImpl {
public Decimate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DecimatorBeetle.java b/Mage.Sets/src/mage/cards/d/DecimatorBeetle.java
index 268395c6b95..ab54e745024 100644
--- a/Mage.Sets/src/mage/cards/d/DecimatorBeetle.java
+++ b/Mage.Sets/src/mage/cards/d/DecimatorBeetle.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class DecimatorBeetle extends CardImpl {
+public final class DecimatorBeetle extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/d/DecimatorOfTheProvinces.java b/Mage.Sets/src/mage/cards/d/DecimatorOfTheProvinces.java
index f162c18e94a..8f5cc4469cc 100644
--- a/Mage.Sets/src/mage/cards/d/DecimatorOfTheProvinces.java
+++ b/Mage.Sets/src/mage/cards/d/DecimatorOfTheProvinces.java
@@ -49,7 +49,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author fireshoes
*/
-public class DecimatorOfTheProvinces extends CardImpl {
+public final class DecimatorOfTheProvinces extends CardImpl {
public DecimatorOfTheProvinces(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{10}");
diff --git a/Mage.Sets/src/mage/cards/d/DecimatorWeb.java b/Mage.Sets/src/mage/cards/d/DecimatorWeb.java
index 1836b27fbbe..05a7176b11f 100644
--- a/Mage.Sets/src/mage/cards/d/DecimatorWeb.java
+++ b/Mage.Sets/src/mage/cards/d/DecimatorWeb.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki, nantuko
*/
-public class DecimatorWeb extends CardImpl {
+public final class DecimatorWeb extends CardImpl {
public DecimatorWeb (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DecisionParalysis.java b/Mage.Sets/src/mage/cards/d/DecisionParalysis.java
index 95d4dacecaf..ed6d2ee775e 100644
--- a/Mage.Sets/src/mage/cards/d/DecisionParalysis.java
+++ b/Mage.Sets/src/mage/cards/d/DecisionParalysis.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DecisionParalysis extends CardImpl {
+public final class DecisionParalysis extends CardImpl {
public DecisionParalysis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeclarationInStone.java b/Mage.Sets/src/mage/cards/d/DeclarationInStone.java
index b742e819885..5909499b132 100644
--- a/Mage.Sets/src/mage/cards/d/DeclarationInStone.java
+++ b/Mage.Sets/src/mage/cards/d/DeclarationInStone.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class DeclarationInStone extends CardImpl {
+public final class DeclarationInStone extends CardImpl {
public DeclarationInStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DeclarationOfNaught.java b/Mage.Sets/src/mage/cards/d/DeclarationOfNaught.java
index da4dd1c605b..c468ac6a403 100644
--- a/Mage.Sets/src/mage/cards/d/DeclarationOfNaught.java
+++ b/Mage.Sets/src/mage/cards/d/DeclarationOfNaught.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class DeclarationOfNaught extends CardImpl {
+public final class DeclarationOfNaught extends CardImpl {
static final private FilterSpell filter = new FilterSpell("spell with the chosen name");
diff --git a/Mage.Sets/src/mage/cards/d/DecoctionModule.java b/Mage.Sets/src/mage/cards/d/DecoctionModule.java
index 87f4cc0c23b..e3d62e76406 100644
--- a/Mage.Sets/src/mage/cards/d/DecoctionModule.java
+++ b/Mage.Sets/src/mage/cards/d/DecoctionModule.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class DecoctionModule extends CardImpl {
+public final class DecoctionModule extends CardImpl {
public DecoctionModule(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/d/Decommission.java b/Mage.Sets/src/mage/cards/d/Decommission.java
index c07fbd404dd..385d0c2fe9a 100644
--- a/Mage.Sets/src/mage/cards/d/Decommission.java
+++ b/Mage.Sets/src/mage/cards/d/Decommission.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class Decommission extends CardImpl {
+public final class Decommission extends CardImpl {
public Decommission(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Decompose.java b/Mage.Sets/src/mage/cards/d/Decompose.java
index 01e6b33f3c5..74f1b09e15e 100644
--- a/Mage.Sets/src/mage/cards/d/Decompose.java
+++ b/Mage.Sets/src/mage/cards/d/Decompose.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author ilcartographer
*/
-public class Decompose extends CardImpl {
+public final class Decompose extends CardImpl {
public Decompose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Deconstruct.java b/Mage.Sets/src/mage/cards/d/Deconstruct.java
index a503f8468b8..3289808f1c6 100644
--- a/Mage.Sets/src/mage/cards/d/Deconstruct.java
+++ b/Mage.Sets/src/mage/cards/d/Deconstruct.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class Deconstruct extends CardImpl {
+public final class Deconstruct extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/d/DecoratedChampion.java b/Mage.Sets/src/mage/cards/d/DecoratedChampion.java
new file mode 100644
index 00000000000..c7fe5fd5ffa
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/d/DecoratedChampion.java
@@ -0,0 +1,78 @@
+/*
+ * 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.EntersBattlefieldAllTriggeredAbility;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.counters.CounterType;
+import mage.filter.common.FilterTeamPermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class DecoratedChampion extends CardImpl {
+
+ private static final FilterTeamPermanent filter = new FilterTeamPermanent(SubType.WARRIOR, "another Warrior");
+
+ static {
+ filter.add(new AnotherPredicate());
+ }
+
+ public DecoratedChampion(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
+
+ this.subtype.add(SubType.ELF);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Whenever another Warrior enters the battlefield under your team's control, put a +1/+1 counter on Decorated Champion.
+ this.addAbility(new EntersBattlefieldAllTriggeredAbility(
+ new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter,
+ "Whenever another Warrior enters the battlefield under your team's control,"
+ + " put a +1/+1 counter on {this}"
+ ));
+ }
+
+ public DecoratedChampion(final DecoratedChampion card) {
+ super(card);
+ }
+
+ @Override
+ public DecoratedChampion copy() {
+ return new DecoratedChampion(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/d/DecoratedGriffin.java b/Mage.Sets/src/mage/cards/d/DecoratedGriffin.java
index 9825502bf3b..a7e891482f3 100644
--- a/Mage.Sets/src/mage/cards/d/DecoratedGriffin.java
+++ b/Mage.Sets/src/mage/cards/d/DecoratedGriffin.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DecoratedGriffin extends CardImpl {
+public final class DecoratedGriffin extends CardImpl {
public DecoratedGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DecreeOfAnnihilation.java b/Mage.Sets/src/mage/cards/d/DecreeOfAnnihilation.java
index dc7170d11d8..434784fd505 100644
--- a/Mage.Sets/src/mage/cards/d/DecreeOfAnnihilation.java
+++ b/Mage.Sets/src/mage/cards/d/DecreeOfAnnihilation.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class DecreeOfAnnihilation extends CardImpl {
+public final class DecreeOfAnnihilation extends CardImpl {
public DecreeOfAnnihilation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{8}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DecreeOfJustice.java b/Mage.Sets/src/mage/cards/d/DecreeOfJustice.java
index dfd29de43c3..eed498b5720 100644
--- a/Mage.Sets/src/mage/cards/d/DecreeOfJustice.java
+++ b/Mage.Sets/src/mage/cards/d/DecreeOfJustice.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class DecreeOfJustice extends CardImpl {
+public final class DecreeOfJustice extends CardImpl {
public DecreeOfJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DecreeOfPain.java b/Mage.Sets/src/mage/cards/d/DecreeOfPain.java
index 8dd11e10b95..8f0cacc57ab 100644
--- a/Mage.Sets/src/mage/cards/d/DecreeOfPain.java
+++ b/Mage.Sets/src/mage/cards/d/DecreeOfPain.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DecreeOfPain extends CardImpl {
+public final class DecreeOfPain extends CardImpl {
public DecreeOfPain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DecreeOfSavagery.java b/Mage.Sets/src/mage/cards/d/DecreeOfSavagery.java
index 9b6e4eea081..8bbee95ae53 100644
--- a/Mage.Sets/src/mage/cards/d/DecreeOfSavagery.java
+++ b/Mage.Sets/src/mage/cards/d/DecreeOfSavagery.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DecreeOfSavagery extends CardImpl {
+public final class DecreeOfSavagery extends CardImpl {
public DecreeOfSavagery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{7}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DecreeOfSilence.java b/Mage.Sets/src/mage/cards/d/DecreeOfSilence.java
index 2c641e7c7d1..778c1dc5b63 100644
--- a/Mage.Sets/src/mage/cards/d/DecreeOfSilence.java
+++ b/Mage.Sets/src/mage/cards/d/DecreeOfSilence.java
@@ -52,7 +52,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class DecreeOfSilence extends CardImpl {
+public final class DecreeOfSilence extends CardImpl {
public DecreeOfSilence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{6}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DedicatedMartyr.java b/Mage.Sets/src/mage/cards/d/DedicatedMartyr.java
index e225e1f9a60..85984bb7fed 100644
--- a/Mage.Sets/src/mage/cards/d/DedicatedMartyr.java
+++ b/Mage.Sets/src/mage/cards/d/DedicatedMartyr.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class DedicatedMartyr extends CardImpl {
+public final class DedicatedMartyr extends CardImpl {
public DedicatedMartyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DeemWorthy.java b/Mage.Sets/src/mage/cards/d/DeemWorthy.java
index d379e02d1bf..6352f26554e 100644
--- a/Mage.Sets/src/mage/cards/d/DeemWorthy.java
+++ b/Mage.Sets/src/mage/cards/d/DeemWorthy.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Darkside-
*/
-public class DeemWorthy extends CardImpl {
+public final class DeemWorthy extends CardImpl {
public DeemWorthy (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepAnalysis.java b/Mage.Sets/src/mage/cards/d/DeepAnalysis.java
index 2ad4b705318..17dde34b508 100644
--- a/Mage.Sets/src/mage/cards/d/DeepAnalysis.java
+++ b/Mage.Sets/src/mage/cards/d/DeepAnalysis.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author magenoxx_at_gmail.com
*/
-public class DeepAnalysis extends CardImpl {
+public final class DeepAnalysis extends CardImpl {
public DeepAnalysis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepFreeze.java b/Mage.Sets/src/mage/cards/d/DeepFreeze.java
index 3af29de23e7..ffad2b1997a 100644
--- a/Mage.Sets/src/mage/cards/d/DeepFreeze.java
+++ b/Mage.Sets/src/mage/cards/d/DeepFreeze.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.TokenImpl;
*
* @author TheElk801
*/
-public class DeepFreeze extends CardImpl {
+public final class DeepFreeze extends CardImpl {
public DeepFreeze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepReconnaissance.java b/Mage.Sets/src/mage/cards/d/DeepReconnaissance.java
index 63077883d95..288b5563d92 100644
--- a/Mage.Sets/src/mage/cards/d/DeepReconnaissance.java
+++ b/Mage.Sets/src/mage/cards/d/DeepReconnaissance.java
@@ -43,14 +43,14 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class DeepReconnaissance extends CardImpl {
+public final class DeepReconnaissance extends CardImpl {
public DeepReconnaissance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
// Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true));
// Flashback {4}{G}
this.addAbility(new FlashbackAbility(new ManaCostsImpl("{4}{G}"), TimingRule.SORCERY));
}
diff --git a/Mage.Sets/src/mage/cards/d/DeepSeaKraken.java b/Mage.Sets/src/mage/cards/d/DeepSeaKraken.java
index d6786cff18f..c45415c1e94 100644
--- a/Mage.Sets/src/mage/cards/d/DeepSeaKraken.java
+++ b/Mage.Sets/src/mage/cards/d/DeepSeaKraken.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class DeepSeaKraken extends CardImpl {
+public final class DeepSeaKraken extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an opponent casts");
diff --git a/Mage.Sets/src/mage/cards/d/DeepSeaSerpent.java b/Mage.Sets/src/mage/cards/d/DeepSeaSerpent.java
index fed428204d6..1be77b710d3 100644
--- a/Mage.Sets/src/mage/cards/d/DeepSeaSerpent.java
+++ b/Mage.Sets/src/mage/cards/d/DeepSeaSerpent.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class DeepSeaSerpent extends CardImpl {
+public final class DeepSeaSerpent extends CardImpl {
public DeepSeaSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepSeaTerror.java b/Mage.Sets/src/mage/cards/d/DeepSeaTerror.java
index 8649b276c58..0bd8107291f 100644
--- a/Mage.Sets/src/mage/cards/d/DeepSeaTerror.java
+++ b/Mage.Sets/src/mage/cards/d/DeepSeaTerror.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DeepSeaTerror extends CardImpl {
+public final class DeepSeaTerror extends CardImpl {
public DeepSeaTerror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepSlumberTitan.java b/Mage.Sets/src/mage/cards/d/DeepSlumberTitan.java
index 9ba49415769..64a3110d505 100644
--- a/Mage.Sets/src/mage/cards/d/DeepSlumberTitan.java
+++ b/Mage.Sets/src/mage/cards/d/DeepSlumberTitan.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author jeffwadsworth
*/
-public class DeepSlumberTitan extends CardImpl {
+public final class DeepSlumberTitan extends CardImpl {
public DeepSlumberTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepSpawn.java b/Mage.Sets/src/mage/cards/d/DeepSpawn.java
index 47a088228e4..0c390f2c7a8 100644
--- a/Mage.Sets/src/mage/cards/d/DeepSpawn.java
+++ b/Mage.Sets/src/mage/cards/d/DeepSpawn.java
@@ -53,7 +53,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class DeepSpawn extends CardImpl {
+public final class DeepSpawn extends CardImpl {
public DeepSpawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepWater.java b/Mage.Sets/src/mage/cards/d/DeepWater.java
index d4aebc95fce..234e321c55e 100644
--- a/Mage.Sets/src/mage/cards/d/DeepWater.java
+++ b/Mage.Sets/src/mage/cards/d/DeepWater.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class DeepWater extends CardImpl {
+public final class DeepWater extends CardImpl {
public DeepWater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepWood.java b/Mage.Sets/src/mage/cards/d/DeepWood.java
index bb1d3a14051..a96568196a3 100644
--- a/Mage.Sets/src/mage/cards/d/DeepWood.java
+++ b/Mage.Sets/src/mage/cards/d/DeepWood.java
@@ -49,7 +49,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author L_J
*/
-public class DeepWood extends CardImpl {
+public final class DeepWood extends CardImpl {
public DeepWood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepcavernImp.java b/Mage.Sets/src/mage/cards/d/DeepcavernImp.java
index bef9e5a8b4b..7e5a443c332 100644
--- a/Mage.Sets/src/mage/cards/d/DeepcavernImp.java
+++ b/Mage.Sets/src/mage/cards/d/DeepcavernImp.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DeepcavernImp extends CardImpl {
+public final class DeepcavernImp extends CardImpl {
public DeepcavernImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepchannelMentor.java b/Mage.Sets/src/mage/cards/d/DeepchannelMentor.java
index e5f6875af4b..b13a9f19845 100644
--- a/Mage.Sets/src/mage/cards/d/DeepchannelMentor.java
+++ b/Mage.Sets/src/mage/cards/d/DeepchannelMentor.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class DeepchannelMentor extends CardImpl {
+public final class DeepchannelMentor extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Blue creatures you control");
diff --git a/Mage.Sets/src/mage/cards/d/DeepfathomSkulker.java b/Mage.Sets/src/mage/cards/d/DeepfathomSkulker.java
index cccfd7596a9..1581eeb7712 100644
--- a/Mage.Sets/src/mage/cards/d/DeepfathomSkulker.java
+++ b/Mage.Sets/src/mage/cards/d/DeepfathomSkulker.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DeepfathomSkulker extends CardImpl {
+public final class DeepfathomSkulker extends CardImpl {
public DeepfathomSkulker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepfireElemental.java b/Mage.Sets/src/mage/cards/d/DeepfireElemental.java
index 331de2866ff..4172f3670af 100644
--- a/Mage.Sets/src/mage/cards/d/DeepfireElemental.java
+++ b/Mage.Sets/src/mage/cards/d/DeepfireElemental.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class DeepfireElemental extends CardImpl {
+public final class DeepfireElemental extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature with converted mana cost X");
diff --git a/Mage.Sets/src/mage/cards/d/DeepglowSkate.java b/Mage.Sets/src/mage/cards/d/DeepglowSkate.java
index a79f4c599d7..6d2cec7c6d5 100644
--- a/Mage.Sets/src/mage/cards/d/DeepglowSkate.java
+++ b/Mage.Sets/src/mage/cards/d/DeepglowSkate.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author spjspj
*/
-public class DeepglowSkate extends CardImpl {
+public final class DeepglowSkate extends CardImpl {
public DeepglowSkate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeeprootChampion.java b/Mage.Sets/src/mage/cards/d/DeeprootChampion.java
index 7d8e31f0971..7f13d6a2298 100644
--- a/Mage.Sets/src/mage/cards/d/DeeprootChampion.java
+++ b/Mage.Sets/src/mage/cards/d/DeeprootChampion.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author TheElk801
*/
-public class DeeprootChampion extends CardImpl {
+public final class DeeprootChampion extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/d/DeeprootElite.java b/Mage.Sets/src/mage/cards/d/DeeprootElite.java
index a4d85082ed8..19cc11b09b6 100644
--- a/Mage.Sets/src/mage/cards/d/DeeprootElite.java
+++ b/Mage.Sets/src/mage/cards/d/DeeprootElite.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author JayDi85
*/
-public class DeeprootElite extends CardImpl {
+public final class DeeprootElite extends CardImpl {
private static final FilterPermanent filterYourAnotherMerfolk = new FilterPermanent(SubType.MERFOLK, "another " + SubType.MERFOLK.toString());
static {
diff --git a/Mage.Sets/src/mage/cards/d/DeeprootWarrior.java b/Mage.Sets/src/mage/cards/d/DeeprootWarrior.java
index d8c8b5b83ac..7d9a26c932c 100644
--- a/Mage.Sets/src/mage/cards/d/DeeprootWarrior.java
+++ b/Mage.Sets/src/mage/cards/d/DeeprootWarrior.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DeeprootWarrior extends CardImpl {
+public final class DeeprootWarrior extends CardImpl {
public DeeprootWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeeprootWaters.java b/Mage.Sets/src/mage/cards/d/DeeprootWaters.java
index f1c3aa6b8f6..28ecaa2af37 100644
--- a/Mage.Sets/src/mage/cards/d/DeeprootWaters.java
+++ b/Mage.Sets/src/mage/cards/d/DeeprootWaters.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.MerfolkHexproofToken;
*
* @author TacomenX
*/
-public class DeeprootWaters extends CardImpl {
+public final class DeeprootWaters extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a Merfolk spell");
diff --git a/Mage.Sets/src/mage/cards/d/DeeptreadMerrow.java b/Mage.Sets/src/mage/cards/d/DeeptreadMerrow.java
index 7cb5d7ce7f2..24e3ea018cb 100644
--- a/Mage.Sets/src/mage/cards/d/DeeptreadMerrow.java
+++ b/Mage.Sets/src/mage/cards/d/DeeptreadMerrow.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class DeeptreadMerrow extends CardImpl {
+public final class DeeptreadMerrow extends CardImpl {
public DeeptreadMerrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepwaterHypnotist.java b/Mage.Sets/src/mage/cards/d/DeepwaterHypnotist.java
index 4318a094cb8..21edae6829b 100644
--- a/Mage.Sets/src/mage/cards/d/DeepwaterHypnotist.java
+++ b/Mage.Sets/src/mage/cards/d/DeepwaterHypnotist.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DeepwaterHypnotist extends CardImpl {
+public final class DeepwaterHypnotist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/d/DeepwoodDrummer.java b/Mage.Sets/src/mage/cards/d/DeepwoodDrummer.java
index 19d15c96f61..c9664afe693 100644
--- a/Mage.Sets/src/mage/cards/d/DeepwoodDrummer.java
+++ b/Mage.Sets/src/mage/cards/d/DeepwoodDrummer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DeepwoodDrummer extends CardImpl {
+public final class DeepwoodDrummer extends CardImpl {
public DeepwoodDrummer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepwoodElder.java b/Mage.Sets/src/mage/cards/d/DeepwoodElder.java
index 14b5283995d..0a1968059e3 100644
--- a/Mage.Sets/src/mage/cards/d/DeepwoodElder.java
+++ b/Mage.Sets/src/mage/cards/d/DeepwoodElder.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class DeepwoodElder extends CardImpl {
+public final class DeepwoodElder extends CardImpl {
public DeepwoodElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepwoodGhoul.java b/Mage.Sets/src/mage/cards/d/DeepwoodGhoul.java
index cb91f7998f6..20b05674860 100644
--- a/Mage.Sets/src/mage/cards/d/DeepwoodGhoul.java
+++ b/Mage.Sets/src/mage/cards/d/DeepwoodGhoul.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class DeepwoodGhoul extends CardImpl {
+public final class DeepwoodGhoul extends CardImpl {
public DeepwoodGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepwoodLegate.java b/Mage.Sets/src/mage/cards/d/DeepwoodLegate.java
index adcc98b7e97..1a99805f145 100644
--- a/Mage.Sets/src/mage/cards/d/DeepwoodLegate.java
+++ b/Mage.Sets/src/mage/cards/d/DeepwoodLegate.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class DeepwoodLegate extends CardImpl {
+public final class DeepwoodLegate extends CardImpl {
private static final FilterPermanent filterForest = new FilterPermanent();
private static final FilterPermanent filterSwamp = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/d/DeepwoodTantiv.java b/Mage.Sets/src/mage/cards/d/DeepwoodTantiv.java
index 4ee5e32eb27..25b91626c04 100644
--- a/Mage.Sets/src/mage/cards/d/DeepwoodTantiv.java
+++ b/Mage.Sets/src/mage/cards/d/DeepwoodTantiv.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DeepwoodTantiv extends CardImpl {
+public final class DeepwoodTantiv extends CardImpl {
public DeepwoodTantiv(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeepwoodWolverine.java b/Mage.Sets/src/mage/cards/d/DeepwoodWolverine.java
index 7c40d32aaa1..5f2157873de 100644
--- a/Mage.Sets/src/mage/cards/d/DeepwoodWolverine.java
+++ b/Mage.Sets/src/mage/cards/d/DeepwoodWolverine.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class DeepwoodWolverine extends CardImpl {
+public final class DeepwoodWolverine extends CardImpl {
public DeepwoodWolverine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/d/Defang.java b/Mage.Sets/src/mage/cards/d/Defang.java
index 96dc34cdb67..a6a71befa56 100644
--- a/Mage.Sets/src/mage/cards/d/Defang.java
+++ b/Mage.Sets/src/mage/cards/d/Defang.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class Defang extends CardImpl {
+public final class Defang extends CardImpl {
public Defang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Defeat.java b/Mage.Sets/src/mage/cards/d/Defeat.java
index 1b6968c4ed8..032354bbca7 100644
--- a/Mage.Sets/src/mage/cards/d/Defeat.java
+++ b/Mage.Sets/src/mage/cards/d/Defeat.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Defeat extends CardImpl {
+public final class Defeat extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/d/DefendTheHearth.java b/Mage.Sets/src/mage/cards/d/DefendTheHearth.java
index 12eef3e3adc..0ea4c8b9143 100644
--- a/Mage.Sets/src/mage/cards/d/DefendTheHearth.java
+++ b/Mage.Sets/src/mage/cards/d/DefendTheHearth.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class DefendTheHearth extends CardImpl {
+public final class DefendTheHearth extends CardImpl {
public DefendTheHearth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DefenderEnVec.java b/Mage.Sets/src/mage/cards/d/DefenderEnVec.java
index 738debce1a8..5552777563f 100644
--- a/Mage.Sets/src/mage/cards/d/DefenderEnVec.java
+++ b/Mage.Sets/src/mage/cards/d/DefenderEnVec.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class DefenderEnVec extends CardImpl {
+public final class DefenderEnVec extends CardImpl {
public DefenderEnVec(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DefenderOfChaos.java b/Mage.Sets/src/mage/cards/d/DefenderOfChaos.java
index 9fb30832333..9bd6bcee6ed 100644
--- a/Mage.Sets/src/mage/cards/d/DefenderOfChaos.java
+++ b/Mage.Sets/src/mage/cards/d/DefenderOfChaos.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Backfir3
*/
-public class DefenderOfChaos extends CardImpl {
+public final class DefenderOfChaos extends CardImpl {
public DefenderOfChaos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DefenderOfLaw.java b/Mage.Sets/src/mage/cards/d/DefenderOfLaw.java
index 3e0ad68c96a..042173ae0d4 100644
--- a/Mage.Sets/src/mage/cards/d/DefenderOfLaw.java
+++ b/Mage.Sets/src/mage/cards/d/DefenderOfLaw.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Backfir3
*/
-public class DefenderOfLaw extends CardImpl {
+public final class DefenderOfLaw extends CardImpl {
public DefenderOfLaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DefenderOfTheOrder.java b/Mage.Sets/src/mage/cards/d/DefenderOfTheOrder.java
index 6740aaeeae5..b7d49a64b3b 100644
--- a/Mage.Sets/src/mage/cards/d/DefenderOfTheOrder.java
+++ b/Mage.Sets/src/mage/cards/d/DefenderOfTheOrder.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class DefenderOfTheOrder extends CardImpl {
+public final class DefenderOfTheOrder extends CardImpl {
public DefenderOfTheOrder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DefenseGrid.java b/Mage.Sets/src/mage/cards/d/DefenseGrid.java
index 8a47d6aa01c..5cbaa2350ae 100644
--- a/Mage.Sets/src/mage/cards/d/DefenseGrid.java
+++ b/Mage.Sets/src/mage/cards/d/DefenseGrid.java
@@ -42,7 +42,7 @@ import mage.game.Game;
*
* @author Plopman
*/
-public class DefenseGrid extends CardImpl {
+public final class DefenseGrid extends CardImpl {
public DefenseGrid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/d/DefenseOfTheHeart.java b/Mage.Sets/src/mage/cards/d/DefenseOfTheHeart.java
index c5669402480..721668fc57e 100644
--- a/Mage.Sets/src/mage/cards/d/DefenseOfTheHeart.java
+++ b/Mage.Sets/src/mage/cards/d/DefenseOfTheHeart.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class DefenseOfTheHeart extends CardImpl {
+public final class DefenseOfTheHeart extends CardImpl {
public DefenseOfTheHeart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DefensiveFormation.java b/Mage.Sets/src/mage/cards/d/DefensiveFormation.java
index c9b24d01302..8c424b1c3be 100644
--- a/Mage.Sets/src/mage/cards/d/DefensiveFormation.java
+++ b/Mage.Sets/src/mage/cards/d/DefensiveFormation.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author L_J
*/
-public class DefensiveFormation extends CardImpl {
+public final class DefensiveFormation extends CardImpl {
public DefensiveFormation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DefensiveManeuvers.java b/Mage.Sets/src/mage/cards/d/DefensiveManeuvers.java
index 77d4fb3526a..6a79ebad91a 100644
--- a/Mage.Sets/src/mage/cards/d/DefensiveManeuvers.java
+++ b/Mage.Sets/src/mage/cards/d/DefensiveManeuvers.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class DefensiveManeuvers extends CardImpl {
+public final class DefensiveManeuvers extends CardImpl {
public DefensiveManeuvers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DefensiveStance.java b/Mage.Sets/src/mage/cards/d/DefensiveStance.java
index b309c04ae28..5e842f811e2 100644
--- a/Mage.Sets/src/mage/cards/d/DefensiveStance.java
+++ b/Mage.Sets/src/mage/cards/d/DefensiveStance.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class DefensiveStance extends CardImpl {
+public final class DefensiveStance extends CardImpl {
public DefensiveStance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DefiantBloodlord.java b/Mage.Sets/src/mage/cards/d/DefiantBloodlord.java
index c6708334634..aba68234211 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantBloodlord.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantBloodlord.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class DefiantBloodlord extends CardImpl {
+public final class DefiantBloodlord extends CardImpl {
public DefiantBloodlord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DefiantElf.java b/Mage.Sets/src/mage/cards/d/DefiantElf.java
index d42cb426812..faad3c778b0 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantElf.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantElf.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DefiantElf extends CardImpl {
+public final class DefiantElf extends CardImpl {
public DefiantElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DefiantFalcon.java b/Mage.Sets/src/mage/cards/d/DefiantFalcon.java
index 5a59f0b5023..f597f564163 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantFalcon.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantFalcon.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class DefiantFalcon extends CardImpl {
+public final class DefiantFalcon extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/d/DefiantGreatmaw.java b/Mage.Sets/src/mage/cards/d/DefiantGreatmaw.java
index b465588e354..aa312f09ad5 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantGreatmaw.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantGreatmaw.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DefiantGreatmaw extends CardImpl {
+public final class DefiantGreatmaw extends CardImpl {
public DefiantGreatmaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DefiantKhenra.java b/Mage.Sets/src/mage/cards/d/DefiantKhenra.java
index ef519ea7d78..78aaac81711 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantKhenra.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantKhenra.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DefiantKhenra extends CardImpl {
+public final class DefiantKhenra extends CardImpl {
public DefiantKhenra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DefiantOgre.java b/Mage.Sets/src/mage/cards/d/DefiantOgre.java
index 665c3168cae..d8fcca97fce 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantOgre.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantOgre.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class DefiantOgre extends CardImpl {
+public final class DefiantOgre extends CardImpl {
public DefiantOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DefiantSalvager.java b/Mage.Sets/src/mage/cards/d/DefiantSalvager.java
index 24ffefbf89b..97572d2e20e 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantSalvager.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantSalvager.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class DefiantSalvager extends CardImpl {
+public final class DefiantSalvager extends CardImpl {
private final static FilterControlledPermanent filter = new FilterControlledPermanent("an artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/d/DefiantStand.java b/Mage.Sets/src/mage/cards/d/DefiantStand.java
index cc089e33032..1811ba6c313 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantStand.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantStand.java
@@ -46,7 +46,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author TheElk801
*/
-public class DefiantStand extends CardImpl {
+public final class DefiantStand extends CardImpl {
public DefiantStand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DefiantStrike.java b/Mage.Sets/src/mage/cards/d/DefiantStrike.java
index 766cf08dd45..75ee72f8f46 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantStrike.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantStrike.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class DefiantStrike extends CardImpl {
+public final class DefiantStrike extends CardImpl {
public DefiantStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DefiantVanguard.java b/Mage.Sets/src/mage/cards/d/DefiantVanguard.java
index 012e41a43f8..4d6cf007aa8 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantVanguard.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantVanguard.java
@@ -61,7 +61,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author bunchOfDevs
*/
-public class DefiantVanguard extends CardImpl {
+public final class DefiantVanguard extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 4 or less");
diff --git a/Mage.Sets/src/mage/cards/d/DefilerOfSouls.java b/Mage.Sets/src/mage/cards/d/DefilerOfSouls.java
index 9f4b497438f..1be07594dc0 100644
--- a/Mage.Sets/src/mage/cards/d/DefilerOfSouls.java
+++ b/Mage.Sets/src/mage/cards/d/DefilerOfSouls.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class DefilerOfSouls extends CardImpl {
+public final class DefilerOfSouls extends CardImpl {
public DefilerOfSouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DefilingTears.java b/Mage.Sets/src/mage/cards/d/DefilingTears.java
index ab99e11819c..eda43c9e23e 100644
--- a/Mage.Sets/src/mage/cards/d/DefilingTears.java
+++ b/Mage.Sets/src/mage/cards/d/DefilingTears.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Derpthemeus
*/
-public class DefilingTears extends CardImpl {
+public final class DefilingTears extends CardImpl {
public DefilingTears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeflectingPalm.java b/Mage.Sets/src/mage/cards/d/DeflectingPalm.java
index b5492fa960e..52a6548640f 100644
--- a/Mage.Sets/src/mage/cards/d/DeflectingPalm.java
+++ b/Mage.Sets/src/mage/cards/d/DeflectingPalm.java
@@ -48,7 +48,7 @@ import mage.target.TargetSource;
*
* @author LevelX2
*/
-public class DeflectingPalm extends CardImpl {
+public final class DeflectingPalm extends CardImpl {
public DeflectingPalm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Deflection.java b/Mage.Sets/src/mage/cards/d/Deflection.java
index 8c1d6786de8..d858e26d4a2 100644
--- a/Mage.Sets/src/mage/cards/d/Deflection.java
+++ b/Mage.Sets/src/mage/cards/d/Deflection.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Deflection extends CardImpl {
+public final class Deflection extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell with a single target");
diff --git a/Mage.Sets/src/mage/cards/d/DeftDismissal.java b/Mage.Sets/src/mage/cards/d/DeftDismissal.java
index d4b82c2be02..782c5e8fdb6 100644
--- a/Mage.Sets/src/mage/cards/d/DeftDismissal.java
+++ b/Mage.Sets/src/mage/cards/d/DeftDismissal.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author Styxo
*/
-public class DeftDismissal extends CardImpl {
+public final class DeftDismissal extends CardImpl {
public DeftDismissal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DeftDuelist.java b/Mage.Sets/src/mage/cards/d/DeftDuelist.java
index 3132a6a98db..9550efa6628 100644
--- a/Mage.Sets/src/mage/cards/d/DeftDuelist.java
+++ b/Mage.Sets/src/mage/cards/d/DeftDuelist.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DeftDuelist extends CardImpl {
+public final class DeftDuelist extends CardImpl {
public DeftDuelist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeftbladeElite.java b/Mage.Sets/src/mage/cards/d/DeftbladeElite.java
index 228d1330237..eff010b0df2 100644
--- a/Mage.Sets/src/mage/cards/d/DeftbladeElite.java
+++ b/Mage.Sets/src/mage/cards/d/DeftbladeElite.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DeftbladeElite extends CardImpl {
+public final class DeftbladeElite extends CardImpl {
public DeftbladeElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DefyDeath.java b/Mage.Sets/src/mage/cards/d/DefyDeath.java
index 03d0f46047b..0ac97395646 100644
--- a/Mage.Sets/src/mage/cards/d/DefyDeath.java
+++ b/Mage.Sets/src/mage/cards/d/DefyDeath.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class DefyDeath extends CardImpl {
+public final class DefyDeath extends CardImpl {
public DefyDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DefyGravity.java b/Mage.Sets/src/mage/cards/d/DefyGravity.java
index 73e2bf86856..071385144d9 100644
--- a/Mage.Sets/src/mage/cards/d/DefyGravity.java
+++ b/Mage.Sets/src/mage/cards/d/DefyGravity.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DefyGravity extends CardImpl {
+public final class DefyGravity extends CardImpl {
public DefyGravity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DegaDisciple.java b/Mage.Sets/src/mage/cards/d/DegaDisciple.java
index dd1ce924706..f251e0f59b8 100644
--- a/Mage.Sets/src/mage/cards/d/DegaDisciple.java
+++ b/Mage.Sets/src/mage/cards/d/DegaDisciple.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DegaDisciple extends CardImpl {
+public final class DegaDisciple extends CardImpl {
public DegaDisciple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DegaSanctuary.java b/Mage.Sets/src/mage/cards/d/DegaSanctuary.java
index 67141fe4cb4..04ecce8e564 100644
--- a/Mage.Sets/src/mage/cards/d/DegaSanctuary.java
+++ b/Mage.Sets/src/mage/cards/d/DegaSanctuary.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class DegaSanctuary extends CardImpl {
+public final class DegaSanctuary extends CardImpl {
public DegaSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Degavolver.java b/Mage.Sets/src/mage/cards/d/Degavolver.java
index 0b3c5965cad..51fdecd1deb 100644
--- a/Mage.Sets/src/mage/cards/d/Degavolver.java
+++ b/Mage.Sets/src/mage/cards/d/Degavolver.java
@@ -51,7 +51,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class Degavolver extends CardImpl {
+public final class Degavolver extends CardImpl {
public Degavolver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Deglamer.java b/Mage.Sets/src/mage/cards/d/Deglamer.java
index 840b04959c2..a6207857fa6 100644
--- a/Mage.Sets/src/mage/cards/d/Deglamer.java
+++ b/Mage.Sets/src/mage/cards/d/Deglamer.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class Deglamer extends CardImpl {
+public final class Deglamer extends CardImpl {
public Deglamer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/Dehydration.java b/Mage.Sets/src/mage/cards/d/Dehydration.java
index 87069b55480..20d41397cf4 100644
--- a/Mage.Sets/src/mage/cards/d/Dehydration.java
+++ b/Mage.Sets/src/mage/cards/d/Dehydration.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Dehydration extends CardImpl {
+public final class Dehydration extends CardImpl {
public Dehydration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Deicide.java b/Mage.Sets/src/mage/cards/d/Deicide.java
index 2c1c02497f8..d288bb8f0ba 100644
--- a/Mage.Sets/src/mage/cards/d/Deicide.java
+++ b/Mage.Sets/src/mage/cards/d/Deicide.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class Deicide extends CardImpl {
+public final class Deicide extends CardImpl {
diff --git a/Mage.Sets/src/mage/cards/d/DeityOfScars.java b/Mage.Sets/src/mage/cards/d/DeityOfScars.java
index 6d979524ba5..9f18a79f9d2 100644
--- a/Mage.Sets/src/mage/cards/d/DeityOfScars.java
+++ b/Mage.Sets/src/mage/cards/d/DeityOfScars.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
/**
* @author Loki
*/
-public class DeityOfScars extends CardImpl {
+public final class DeityOfScars extends CardImpl {
public DeityOfScars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B/G}{B/G}{B/G}{B/G}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/d/DejaVu.java b/Mage.Sets/src/mage/cards/d/DejaVu.java
index 44beafe19fe..f60b9afbf5d 100644
--- a/Mage.Sets/src/mage/cards/d/DejaVu.java
+++ b/Mage.Sets/src/mage/cards/d/DejaVu.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LoneFox
*/
-public class DejaVu extends CardImpl {
+public final class DejaVu extends CardImpl {
static final FilterCard filter = new FilterCard("sorcery card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/d/Delay.java b/Mage.Sets/src/mage/cards/d/Delay.java
index 0960d08733d..62e89374de0 100644
--- a/Mage.Sets/src/mage/cards/d/Delay.java
+++ b/Mage.Sets/src/mage/cards/d/Delay.java
@@ -51,7 +51,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Delay extends CardImpl {
+public final class Delay extends CardImpl {
public Delay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DelayingShield.java b/Mage.Sets/src/mage/cards/d/DelayingShield.java
index 1d94352a68d..50628f3478b 100644
--- a/Mage.Sets/src/mage/cards/d/DelayingShield.java
+++ b/Mage.Sets/src/mage/cards/d/DelayingShield.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class DelayingShield extends CardImpl {
+public final class DelayingShield extends CardImpl {
public DelayingShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DelifsCone.java b/Mage.Sets/src/mage/cards/d/DelifsCone.java
index 6d2655852a3..7ce4a66597b 100644
--- a/Mage.Sets/src/mage/cards/d/DelifsCone.java
+++ b/Mage.Sets/src/mage/cards/d/DelifsCone.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author MarcoMarin
*/
-public class DelifsCone extends CardImpl {
+public final class DelifsCone extends CardImpl {
public DelifsCone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/d/DelifsCube.java b/Mage.Sets/src/mage/cards/d/DelifsCube.java
index 265415b85d9..a6438131980 100644
--- a/Mage.Sets/src/mage/cards/d/DelifsCube.java
+++ b/Mage.Sets/src/mage/cards/d/DelifsCube.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author MarcoMarin
*/
-public class DelifsCube extends CardImpl {
+public final class DelifsCube extends CardImpl {
public DelifsCube(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/d/DeliriumSkeins.java b/Mage.Sets/src/mage/cards/d/DeliriumSkeins.java
index dee1f37dce7..3ac881e958b 100644
--- a/Mage.Sets/src/mage/cards/d/DeliriumSkeins.java
+++ b/Mage.Sets/src/mage/cards/d/DeliriumSkeins.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class DeliriumSkeins extends CardImpl {
+public final class DeliriumSkeins extends CardImpl {
public DeliriumSkeins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Delraich.java b/Mage.Sets/src/mage/cards/d/Delraich.java
index 0e2a8d364fc..121d6827697 100644
--- a/Mage.Sets/src/mage/cards/d/Delraich.java
+++ b/Mage.Sets/src/mage/cards/d/Delraich.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class Delraich extends CardImpl {
+public final class Delraich extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black creature");
diff --git a/Mage.Sets/src/mage/cards/d/Deluge.java b/Mage.Sets/src/mage/cards/d/Deluge.java
index a9b68f7041c..0bf5a03a677 100644
--- a/Mage.Sets/src/mage/cards/d/Deluge.java
+++ b/Mage.Sets/src/mage/cards/d/Deluge.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author cbt33
*/
-public class Deluge extends CardImpl {
+public final class Deluge extends CardImpl {
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/d/DelusionsOfMediocrity.java b/Mage.Sets/src/mage/cards/d/DelusionsOfMediocrity.java
index 87b9b3ed2c9..7da2f53c779 100644
--- a/Mage.Sets/src/mage/cards/d/DelusionsOfMediocrity.java
+++ b/Mage.Sets/src/mage/cards/d/DelusionsOfMediocrity.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
/**
* @author Backfir3
*/
-public class DelusionsOfMediocrity extends CardImpl {
+public final class DelusionsOfMediocrity extends CardImpl {
public DelusionsOfMediocrity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DelverOfSecrets.java b/Mage.Sets/src/mage/cards/d/DelverOfSecrets.java
index c0c9cf8ad34..e016e756e61 100644
--- a/Mage.Sets/src/mage/cards/d/DelverOfSecrets.java
+++ b/Mage.Sets/src/mage/cards/d/DelverOfSecrets.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author Alvin
*/
-public class DelverOfSecrets extends CardImpl {
+public final class DelverOfSecrets extends CardImpl {
public DelverOfSecrets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Dematerialize.java b/Mage.Sets/src/mage/cards/d/Dematerialize.java
index d120302dd7d..067a4eb6cbd 100644
--- a/Mage.Sets/src/mage/cards/d/Dematerialize.java
+++ b/Mage.Sets/src/mage/cards/d/Dematerialize.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author cbt33
*/
-public class Dematerialize extends CardImpl {
+public final class Dematerialize extends CardImpl {
public Dematerialize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DementiaBat.java b/Mage.Sets/src/mage/cards/d/DementiaBat.java
index 5cf1f513440..6af95707d70 100644
--- a/Mage.Sets/src/mage/cards/d/DementiaBat.java
+++ b/Mage.Sets/src/mage/cards/d/DementiaBat.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class DementiaBat extends CardImpl {
+public final class DementiaBat extends CardImpl {
public DementiaBat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DementiaSliver.java b/Mage.Sets/src/mage/cards/d/DementiaSliver.java
index 5620a5a552c..4b6fd94798c 100644
--- a/Mage.Sets/src/mage/cards/d/DementiaSliver.java
+++ b/Mage.Sets/src/mage/cards/d/DementiaSliver.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class DementiaSliver extends CardImpl {
+public final class DementiaSliver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("All Slivers");
diff --git a/Mage.Sets/src/mage/cards/d/DemigodOfRevenge.java b/Mage.Sets/src/mage/cards/d/DemigodOfRevenge.java
index 673aa2fa9d4..b3e92532a3e 100644
--- a/Mage.Sets/src/mage/cards/d/DemigodOfRevenge.java
+++ b/Mage.Sets/src/mage/cards/d/DemigodOfRevenge.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DemigodOfRevenge extends CardImpl {
+public final class DemigodOfRevenge extends CardImpl {
public DemigodOfRevenge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B/R}{B/R}{B/R}{B/R}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/d/Demolish.java b/Mage.Sets/src/mage/cards/d/Demolish.java
index 9c8f3cfafa5..a713565d206 100644
--- a/Mage.Sets/src/mage/cards/d/Demolish.java
+++ b/Mage.Sets/src/mage/cards/d/Demolish.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Demolish extends CardImpl {
+public final class Demolish extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or land");
diff --git a/Mage.Sets/src/mage/cards/d/DemolitionStomper.java b/Mage.Sets/src/mage/cards/d/DemolitionStomper.java
index 669f8838969..c09a2b20163 100644
--- a/Mage.Sets/src/mage/cards/d/DemolitionStomper.java
+++ b/Mage.Sets/src/mage/cards/d/DemolitionStomper.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class DemolitionStomper extends CardImpl {
+public final class DemolitionStomper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DemonOfDarkSchemes.java b/Mage.Sets/src/mage/cards/d/DemonOfDarkSchemes.java
index 937736289f7..3f16e01b99a 100644
--- a/Mage.Sets/src/mage/cards/d/DemonOfDarkSchemes.java
+++ b/Mage.Sets/src/mage/cards/d/DemonOfDarkSchemes.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class DemonOfDarkSchemes extends CardImpl {
+public final class DemonOfDarkSchemes extends CardImpl {
public DemonOfDarkSchemes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonOfDeathsGate.java b/Mage.Sets/src/mage/cards/d/DemonOfDeathsGate.java
index 7741ebda95f..26f7c7e0a41 100644
--- a/Mage.Sets/src/mage/cards/d/DemonOfDeathsGate.java
+++ b/Mage.Sets/src/mage/cards/d/DemonOfDeathsGate.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class DemonOfDeathsGate extends CardImpl {
+public final class DemonOfDeathsGate extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black creature");
diff --git a/Mage.Sets/src/mage/cards/d/DemonOfWailingAgonies.java b/Mage.Sets/src/mage/cards/d/DemonOfWailingAgonies.java
index e5067728532..91dc2508307 100644
--- a/Mage.Sets/src/mage/cards/d/DemonOfWailingAgonies.java
+++ b/Mage.Sets/src/mage/cards/d/DemonOfWailingAgonies.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author emerald000
*/
-public class DemonOfWailingAgonies extends CardImpl {
+public final class DemonOfWailingAgonies extends CardImpl {
public DemonOfWailingAgonies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonPossessedWitch.java b/Mage.Sets/src/mage/cards/d/DemonPossessedWitch.java
index 0da73a82910..5834201575f 100644
--- a/Mage.Sets/src/mage/cards/d/DemonPossessedWitch.java
+++ b/Mage.Sets/src/mage/cards/d/DemonPossessedWitch.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class DemonPossessedWitch extends CardImpl {
+public final class DemonPossessedWitch extends CardImpl {
private static final String rule = "When this creature transforms into Demon-Possessed Witch, you may destroy target creature";
diff --git a/Mage.Sets/src/mage/cards/d/Demonfire.java b/Mage.Sets/src/mage/cards/d/Demonfire.java
index 1fa4a2cab62..39416c5720d 100644
--- a/Mage.Sets/src/mage/cards/d/Demonfire.java
+++ b/Mage.Sets/src/mage/cards/d/Demonfire.java
@@ -50,7 +50,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author JotaPeRL
*/
-public class Demonfire extends CardImpl {
+public final class Demonfire extends CardImpl {
public Demonfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonicAppetite.java b/Mage.Sets/src/mage/cards/d/DemonicAppetite.java
index 9daf72d02c2..59cd6fd71ad 100644
--- a/Mage.Sets/src/mage/cards/d/DemonicAppetite.java
+++ b/Mage.Sets/src/mage/cards/d/DemonicAppetite.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class DemonicAppetite extends CardImpl {
+public final class DemonicAppetite extends CardImpl {
public DemonicAppetite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonicCollusion.java b/Mage.Sets/src/mage/cards/d/DemonicCollusion.java
index b0626feea64..ef95e1880cc 100644
--- a/Mage.Sets/src/mage/cards/d/DemonicCollusion.java
+++ b/Mage.Sets/src/mage/cards/d/DemonicCollusion.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class DemonicCollusion extends CardImpl {
+public final class DemonicCollusion extends CardImpl {
public DemonicCollusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonicConsultation.java b/Mage.Sets/src/mage/cards/d/DemonicConsultation.java
index 948756c63c5..edddbf94bce 100644
--- a/Mage.Sets/src/mage/cards/d/DemonicConsultation.java
+++ b/Mage.Sets/src/mage/cards/d/DemonicConsultation.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class DemonicConsultation extends CardImpl {
+public final class DemonicConsultation extends CardImpl {
public DemonicConsultation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonicDread.java b/Mage.Sets/src/mage/cards/d/DemonicDread.java
index 95deb8a39cb..494189cad6f 100644
--- a/Mage.Sets/src/mage/cards/d/DemonicDread.java
+++ b/Mage.Sets/src/mage/cards/d/DemonicDread.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*
*/
-public class DemonicDread extends CardImpl {
+public final class DemonicDread extends CardImpl {
public DemonicDread(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonicHordes.java b/Mage.Sets/src/mage/cards/d/DemonicHordes.java
index 2faeafd614f..a10e5b54ede 100644
--- a/Mage.Sets/src/mage/cards/d/DemonicHordes.java
+++ b/Mage.Sets/src/mage/cards/d/DemonicHordes.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetOpponent;
*
* @author jeffwadsworth
*/
-public class DemonicHordes extends CardImpl {
+public final class DemonicHordes extends CardImpl {
public DemonicHordes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonicPact.java b/Mage.Sets/src/mage/cards/d/DemonicPact.java
index ae54517d981..32f3ec6ecf6 100644
--- a/Mage.Sets/src/mage/cards/d/DemonicPact.java
+++ b/Mage.Sets/src/mage/cards/d/DemonicPact.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class DemonicPact extends CardImpl {
+public final class DemonicPact extends CardImpl {
public DemonicPact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonicRising.java b/Mage.Sets/src/mage/cards/d/DemonicRising.java
index 7e70e1a1596..1e7c55ab6fe 100644
--- a/Mage.Sets/src/mage/cards/d/DemonicRising.java
+++ b/Mage.Sets/src/mage/cards/d/DemonicRising.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.DemonToken;
/**
* @author noxx
*/
-public class DemonicRising extends CardImpl {
+public final class DemonicRising extends CardImpl {
private static final String ruleText = "At the beginning of your end step, if you control exactly one creature, create a 5/5 black Demon creature token with flying";
diff --git a/Mage.Sets/src/mage/cards/d/DemonicTaskmaster.java b/Mage.Sets/src/mage/cards/d/DemonicTaskmaster.java
index 5c7381acc60..de2c0f1a93b 100644
--- a/Mage.Sets/src/mage/cards/d/DemonicTaskmaster.java
+++ b/Mage.Sets/src/mage/cards/d/DemonicTaskmaster.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author noxx
*/
-public class DemonicTaskmaster extends CardImpl {
+public final class DemonicTaskmaster extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a creature other than Demonic Taskmaster");
diff --git a/Mage.Sets/src/mage/cards/d/DemonicTorment.java b/Mage.Sets/src/mage/cards/d/DemonicTorment.java
index dc04d29e71b..bbcd4732825 100644
--- a/Mage.Sets/src/mage/cards/d/DemonicTorment.java
+++ b/Mage.Sets/src/mage/cards/d/DemonicTorment.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DemonicTorment extends CardImpl {
+public final class DemonicTorment extends CardImpl {
public DemonicTorment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonicTutor.java b/Mage.Sets/src/mage/cards/d/DemonicTutor.java
index 5c31be0db2c..70df2f59309 100644
--- a/Mage.Sets/src/mage/cards/d/DemonicTutor.java
+++ b/Mage.Sets/src/mage/cards/d/DemonicTutor.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
* @author KholdFuzion
*/
-public class DemonicTutor extends CardImpl {
+public final class DemonicTutor extends CardImpl {
public DemonicTutor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonicVigor.java b/Mage.Sets/src/mage/cards/d/DemonicVigor.java
index 8a3dfdb6183..d5b6491ca59 100644
--- a/Mage.Sets/src/mage/cards/d/DemonicVigor.java
+++ b/Mage.Sets/src/mage/cards/d/DemonicVigor.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class DemonicVigor extends CardImpl {
+public final class DemonicVigor extends CardImpl {
public DemonicVigor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonlordBelzenlok.java b/Mage.Sets/src/mage/cards/d/DemonlordBelzenlok.java
index 0e5273b82d8..fd229e83ca4 100644
--- a/Mage.Sets/src/mage/cards/d/DemonlordBelzenlok.java
+++ b/Mage.Sets/src/mage/cards/d/DemonlordBelzenlok.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class DemonlordBelzenlok extends CardImpl {
+public final class DemonlordBelzenlok extends CardImpl {
public DemonlordBelzenlok(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonlordOfAshmouth.java b/Mage.Sets/src/mage/cards/d/DemonlordOfAshmouth.java
index 43fe1b418e8..b48e5e01b15 100644
--- a/Mage.Sets/src/mage/cards/d/DemonlordOfAshmouth.java
+++ b/Mage.Sets/src/mage/cards/d/DemonlordOfAshmouth.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author noxx
*/
-public class DemonlordOfAshmouth extends CardImpl {
+public final class DemonlordOfAshmouth extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(" another creature");
diff --git a/Mage.Sets/src/mage/cards/d/DemonmailHauberk.java b/Mage.Sets/src/mage/cards/d/DemonmailHauberk.java
index de2283bcbd2..198f6917b06 100644
--- a/Mage.Sets/src/mage/cards/d/DemonmailHauberk.java
+++ b/Mage.Sets/src/mage/cards/d/DemonmailHauberk.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author nantuko
*/
-public class DemonmailHauberk extends CardImpl {
+public final class DemonmailHauberk extends CardImpl {
public DemonmailHauberk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonsGrasp.java b/Mage.Sets/src/mage/cards/d/DemonsGrasp.java
index d886d6a9149..f70df0e6f52 100644
--- a/Mage.Sets/src/mage/cards/d/DemonsGrasp.java
+++ b/Mage.Sets/src/mage/cards/d/DemonsGrasp.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DemonsGrasp extends CardImpl {
+public final class DemonsGrasp extends CardImpl {
public DemonsGrasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonsHerald.java b/Mage.Sets/src/mage/cards/d/DemonsHerald.java
index 3fb7ea6e6c7..8b1bc3c2968 100644
--- a/Mage.Sets/src/mage/cards/d/DemonsHerald.java
+++ b/Mage.Sets/src/mage/cards/d/DemonsHerald.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class DemonsHerald extends CardImpl {
+public final class DemonsHerald extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Prince of Thralls");
private static final FilterControlledCreaturePermanent filterBlue = new FilterControlledCreaturePermanent("a blue creature");
diff --git a/Mage.Sets/src/mage/cards/d/DemonsHorn.java b/Mage.Sets/src/mage/cards/d/DemonsHorn.java
index 841c91ad460..4c85531388f 100644
--- a/Mage.Sets/src/mage/cards/d/DemonsHorn.java
+++ b/Mage.Sets/src/mage/cards/d/DemonsHorn.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class DemonsHorn extends CardImpl {
+public final class DemonsHorn extends CardImpl {
private final static FilterSpell filter = new FilterSpell("a black spell");
diff --git a/Mage.Sets/src/mage/cards/d/DemonsJester.java b/Mage.Sets/src/mage/cards/d/DemonsJester.java
index 1754b7dd750..e1720f13650 100644
--- a/Mage.Sets/src/mage/cards/d/DemonsJester.java
+++ b/Mage.Sets/src/mage/cards/d/DemonsJester.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author daagar
*/
-public class DemonsJester extends CardImpl {
+public final class DemonsJester extends CardImpl {
public DemonsJester(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DemonspineWhip.java b/Mage.Sets/src/mage/cards/d/DemonspineWhip.java
index 8c90a93e9bf..68f3716d489 100644
--- a/Mage.Sets/src/mage/cards/d/DemonspineWhip.java
+++ b/Mage.Sets/src/mage/cards/d/DemonspineWhip.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author jeffwadsworth
*/
-public class DemonspineWhip extends CardImpl {
+public final class DemonspineWhip extends CardImpl {
public DemonspineWhip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/Demoralize.java b/Mage.Sets/src/mage/cards/d/Demoralize.java
index 51435fbb231..15a328163b6 100644
--- a/Mage.Sets/src/mage/cards/d/Demoralize.java
+++ b/Mage.Sets/src/mage/cards/d/Demoralize.java
@@ -45,7 +45,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class Demoralize extends CardImpl {
+public final class Demoralize extends CardImpl {
public Demoralize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/Demystify.java b/Mage.Sets/src/mage/cards/d/Demystify.java
index b1eb9a0285f..93ccddbd1f6 100644
--- a/Mage.Sets/src/mage/cards/d/Demystify.java
+++ b/Mage.Sets/src/mage/cards/d/Demystify.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Loki
*/
-public class Demystify extends CardImpl {
+public final class Demystify extends CardImpl {
public Demystify (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DenProtector.java b/Mage.Sets/src/mage/cards/d/DenProtector.java
index 1d6bd8f8d9f..d0b0acef9e1 100644
--- a/Mage.Sets/src/mage/cards/d/DenProtector.java
+++ b/Mage.Sets/src/mage/cards/d/DenProtector.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jeffwadsworth
*/
-public class DenProtector extends CardImpl {
+public final class DenProtector extends CardImpl {
public DenProtector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DenizenOfTheDeep.java b/Mage.Sets/src/mage/cards/d/DenizenOfTheDeep.java
index 8a2b778565f..69deee22939 100644
--- a/Mage.Sets/src/mage/cards/d/DenizenOfTheDeep.java
+++ b/Mage.Sets/src/mage/cards/d/DenizenOfTheDeep.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LoneFox
*/
-public class DenizenOfTheDeep extends CardImpl {
+public final class DenizenOfTheDeep extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/d/DenseCanopy.java b/Mage.Sets/src/mage/cards/d/DenseCanopy.java
index b73fb0ceb83..61fa5e1f015 100644
--- a/Mage.Sets/src/mage/cards/d/DenseCanopy.java
+++ b/Mage.Sets/src/mage/cards/d/DenseCanopy.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class DenseCanopy extends CardImpl {
+public final class DenseCanopy extends CardImpl {
public DenseCanopy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DenseFoliage.java b/Mage.Sets/src/mage/cards/d/DenseFoliage.java
index abc5ab943a0..714ac7f8e89 100644
--- a/Mage.Sets/src/mage/cards/d/DenseFoliage.java
+++ b/Mage.Sets/src/mage/cards/d/DenseFoliage.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Quercitron
*/
-public class DenseFoliage extends CardImpl {
+public final class DenseFoliage extends CardImpl {
public DenseFoliage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DenyExistence.java b/Mage.Sets/src/mage/cards/d/DenyExistence.java
index d9886eea0c0..26926046b80 100644
--- a/Mage.Sets/src/mage/cards/d/DenyExistence.java
+++ b/Mage.Sets/src/mage/cards/d/DenyExistence.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class DenyExistence extends CardImpl {
+public final class DenyExistence extends CardImpl {
public DenyExistence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DenyReality.java b/Mage.Sets/src/mage/cards/d/DenyReality.java
index 650c8a701fe..9587fda9968 100644
--- a/Mage.Sets/src/mage/cards/d/DenyReality.java
+++ b/Mage.Sets/src/mage/cards/d/DenyReality.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class DenyReality extends CardImpl {
+public final class DenyReality extends CardImpl {
public DenyReality (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DenyingWind.java b/Mage.Sets/src/mage/cards/d/DenyingWind.java
index 66fa128a78a..e2d8d37da2f 100644
--- a/Mage.Sets/src/mage/cards/d/DenyingWind.java
+++ b/Mage.Sets/src/mage/cards/d/DenyingWind.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class DenyingWind extends CardImpl {
+public final class DenyingWind extends CardImpl {
public DenyingWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{7}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DepalaPilotExemplar.java b/Mage.Sets/src/mage/cards/d/DepalaPilotExemplar.java
index d904eea1003..37ea0721afa 100644
--- a/Mage.Sets/src/mage/cards/d/DepalaPilotExemplar.java
+++ b/Mage.Sets/src/mage/cards/d/DepalaPilotExemplar.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class DepalaPilotExemplar extends CardImpl {
+public final class DepalaPilotExemplar extends CardImpl {
public DepalaPilotExemplar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DeployTheGatewatch.java b/Mage.Sets/src/mage/cards/d/DeployTheGatewatch.java
index 00080266e24..e9027afe8bc 100644
--- a/Mage.Sets/src/mage/cards/d/DeployTheGatewatch.java
+++ b/Mage.Sets/src/mage/cards/d/DeployTheGatewatch.java
@@ -44,7 +44,7 @@ import mage.target.TargetCard;
*
* @author fireshoes
*/
-public class DeployTheGatewatch extends CardImpl {
+public final class DeployTheGatewatch extends CardImpl {
public DeployTheGatewatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DeployTheTroops.java b/Mage.Sets/src/mage/cards/d/DeployTheTroops.java
index 59b7085876f..06548b88ffb 100644
--- a/Mage.Sets/src/mage/cards/d/DeployTheTroops.java
+++ b/Mage.Sets/src/mage/cards/d/DeployTheTroops.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.TrooperToken;
*
* @author Styxo
*/
-public class DeployTheTroops extends CardImpl {
+public final class DeployTheTroops extends CardImpl {
public DeployTheTroops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DeployToTheFront.java b/Mage.Sets/src/mage/cards/d/DeployToTheFront.java
index 89aa7a72b46..5b845fcd991 100644
--- a/Mage.Sets/src/mage/cards/d/DeployToTheFront.java
+++ b/Mage.Sets/src/mage/cards/d/DeployToTheFront.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author LevelX2
*/
-public class DeployToTheFront extends CardImpl {
+public final class DeployToTheFront extends CardImpl {
public DeployToTheFront(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Deprive.java b/Mage.Sets/src/mage/cards/d/Deprive.java
index fce0fd1f5be..83e5ada3f1e 100644
--- a/Mage.Sets/src/mage/cards/d/Deprive.java
+++ b/Mage.Sets/src/mage/cards/d/Deprive.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Deprive extends CardImpl {
+public final class Deprive extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("land");
diff --git a/Mage.Sets/src/mage/cards/d/DepthsOfDesire.java b/Mage.Sets/src/mage/cards/d/DepthsOfDesire.java
index a8c0cd27c51..a989327c4e0 100644
--- a/Mage.Sets/src/mage/cards/d/DepthsOfDesire.java
+++ b/Mage.Sets/src/mage/cards/d/DepthsOfDesire.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class DepthsOfDesire extends CardImpl {
+public final class DepthsOfDesire extends CardImpl {
public DepthsOfDesire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeputizedProtester.java b/Mage.Sets/src/mage/cards/d/DeputizedProtester.java
index b5550b88287..8cd652b4e20 100644
--- a/Mage.Sets/src/mage/cards/d/DeputizedProtester.java
+++ b/Mage.Sets/src/mage/cards/d/DeputizedProtester.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class DeputizedProtester extends CardImpl {
+public final class DeputizedProtester extends CardImpl {
public DeputizedProtester(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DeputyOfAcquittals.java b/Mage.Sets/src/mage/cards/d/DeputyOfAcquittals.java
index 4654005151d..ffc62c2c205 100644
--- a/Mage.Sets/src/mage/cards/d/DeputyOfAcquittals.java
+++ b/Mage.Sets/src/mage/cards/d/DeputyOfAcquittals.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DeputyOfAcquittals extends CardImpl {
+public final class DeputyOfAcquittals extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DerangedAssistant.java b/Mage.Sets/src/mage/cards/d/DerangedAssistant.java
index a7447322c80..31f40cfeb7f 100644
--- a/Mage.Sets/src/mage/cards/d/DerangedAssistant.java
+++ b/Mage.Sets/src/mage/cards/d/DerangedAssistant.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DerangedAssistant extends CardImpl {
+public final class DerangedAssistant extends CardImpl {
public DerangedAssistant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DerangedHermit.java b/Mage.Sets/src/mage/cards/d/DerangedHermit.java
index bfa613bf75a..1d2f1fe997c 100644
--- a/Mage.Sets/src/mage/cards/d/DerangedHermit.java
+++ b/Mage.Sets/src/mage/cards/d/DerangedHermit.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.SquirrelToken;
*
* @author Plopman
*/
-public class DerangedHermit extends CardImpl {
+public final class DerangedHermit extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Squirrel creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DerangedOutcast.java b/Mage.Sets/src/mage/cards/d/DerangedOutcast.java
index 7e0ded1c217..6206535c12c 100644
--- a/Mage.Sets/src/mage/cards/d/DerangedOutcast.java
+++ b/Mage.Sets/src/mage/cards/d/DerangedOutcast.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DerangedOutcast extends CardImpl {
+public final class DerangedOutcast extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Human");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DerangedWhelp.java b/Mage.Sets/src/mage/cards/d/DerangedWhelp.java
index 7b00a45fb70..9278970f550 100644
--- a/Mage.Sets/src/mage/cards/d/DerangedWhelp.java
+++ b/Mage.Sets/src/mage/cards/d/DerangedWhelp.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DerangedWhelp extends CardImpl {
+public final class DerangedWhelp extends CardImpl {
public DerangedWhelp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/Derelor.java b/Mage.Sets/src/mage/cards/d/Derelor.java
index 5c466873cd3..2a8b3ea0997 100644
--- a/Mage.Sets/src/mage/cards/d/Derelor.java
+++ b/Mage.Sets/src/mage/cards/d/Derelor.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Quercitron
*/
-public class Derelor extends CardImpl {
+public final class Derelor extends CardImpl {
private static final FilterCard filter = new FilterCard("Black spells");
diff --git a/Mage.Sets/src/mage/cards/d/DereviEmpyrialTactician.java b/Mage.Sets/src/mage/cards/d/DereviEmpyrialTactician.java
index 2ac726055cf..04d9d6a4665 100644
--- a/Mage.Sets/src/mage/cards/d/DereviEmpyrialTactician.java
+++ b/Mage.Sets/src/mage/cards/d/DereviEmpyrialTactician.java
@@ -41,8 +41,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.game.Game;
@@ -57,7 +57,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class DereviEmpyrialTactician extends CardImpl {
+public final class DereviEmpyrialTactician extends CardImpl {
public DereviEmpyrialTactician(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}{U}");
@@ -139,10 +139,10 @@ class DereviEmpyrialTacticianAbility extends ActivatedAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
Zone currentZone = game.getState().getZone(this.getSourceId());
if (currentZone == null || currentZone != Zone.COMMAND) {
- return false;
+ return ActivationStatus.getFalse();
}
return super.canActivate(playerId, game);
}
diff --git a/Mage.Sets/src/mage/cards/d/Dermoplasm.java b/Mage.Sets/src/mage/cards/d/Dermoplasm.java
index 3fe7abef13b..7be7f8916ab 100644
--- a/Mage.Sets/src/mage/cards/d/Dermoplasm.java
+++ b/Mage.Sets/src/mage/cards/d/Dermoplasm.java
@@ -35,7 +35,7 @@ import mage.abilities.keyword.FlyingAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.keyword.MorphAbility;
import mage.cards.CardImpl;
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class Dermoplasm extends CardImpl {
+public final class Dermoplasm extends CardImpl {
public Dermoplasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
@@ -103,7 +103,7 @@ class DermoplasmEffect extends OneShotEffect {
Permanent thisCreature = game.getPermanent(source.getId());
FilterCreatureCard filter = new FilterCreatureCard("a creature card with a morph ability");
filter.add(new AbilityPredicate(MorphAbility.class));
- Effect effect = new PutPermanentOnBattlefieldEffect(new FilterCreatureCard(filter));
+ Effect effect = new PutCardFromHandOntoBattlefieldEffect(filter);
if (effect.apply(game, source)) {
if (thisCreature != null) {
effect = new ReturnToHandTargetEffect();
diff --git a/Mage.Sets/src/mage/cards/d/DescendUponTheSinful.java b/Mage.Sets/src/mage/cards/d/DescendUponTheSinful.java
index a126c2f5977..39a37ca8e5d 100644
--- a/Mage.Sets/src/mage/cards/d/DescendUponTheSinful.java
+++ b/Mage.Sets/src/mage/cards/d/DescendUponTheSinful.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.AngelToken;
*
* @author fireshoes
*/
-public class DescendUponTheSinful extends CardImpl {
+public final class DescendUponTheSinful extends CardImpl {
public DescendUponTheSinful(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DescendantOfKiyomaro.java b/Mage.Sets/src/mage/cards/d/DescendantOfKiyomaro.java
index 3119f0ffe21..b3be75a99fb 100644
--- a/Mage.Sets/src/mage/cards/d/DescendantOfKiyomaro.java
+++ b/Mage.Sets/src/mage/cards/d/DescendantOfKiyomaro.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DescendantOfKiyomaro extends CardImpl {
+public final class DescendantOfKiyomaro extends CardImpl {
public DescendantOfKiyomaro(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DescendantOfMasumaro.java b/Mage.Sets/src/mage/cards/d/DescendantOfMasumaro.java
index 9e0d574148e..5251c0fe38c 100644
--- a/Mage.Sets/src/mage/cards/d/DescendantOfMasumaro.java
+++ b/Mage.Sets/src/mage/cards/d/DescendantOfMasumaro.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class DescendantOfMasumaro extends CardImpl {
+public final class DescendantOfMasumaro extends CardImpl {
public DescendantOfMasumaro(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DescendantOfSoramaro.java b/Mage.Sets/src/mage/cards/d/DescendantOfSoramaro.java
index aa41ed96582..1d4c67b31e9 100644
--- a/Mage.Sets/src/mage/cards/d/DescendantOfSoramaro.java
+++ b/Mage.Sets/src/mage/cards/d/DescendantOfSoramaro.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX
*/
-public class DescendantOfSoramaro extends CardImpl {
+public final class DescendantOfSoramaro extends CardImpl {
public DescendantOfSoramaro(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DescendantsPath.java b/Mage.Sets/src/mage/cards/d/DescendantsPath.java
index c1eabec49b9..f61fe9b2c21 100644
--- a/Mage.Sets/src/mage/cards/d/DescendantsPath.java
+++ b/Mage.Sets/src/mage/cards/d/DescendantsPath.java
@@ -29,6 +29,7 @@ package mage.cards.d;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -47,12 +48,12 @@ import mage.players.Player;
/**
*
* @author noxx
-
+ *
*/
-public class DescendantsPath extends CardImpl {
+public final class DescendantsPath extends CardImpl {
public DescendantsPath(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
// At the beginning of your upkeep, reveal the top card of your library. If it's a creature card that shares a creature type with a creature you control, you may cast that card without paying its mana cost. Otherwise, put that card on the bottom of your library.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new DescendantsPathEffect(), TargetController.YOU, false);
@@ -99,7 +100,7 @@ class DescendantsPathEffect extends OneShotEffect {
if (card.isCreature()) {
FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
boolean found = false;
- for (Permanent permanent: game.getBattlefield().getAllActivePermanents(filter, controller.getId(), game)) {
+ for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, controller.getId(), game)) {
if (card.shareSubtypes(permanent, game)) {
found = true;
break;
@@ -108,7 +109,7 @@ class DescendantsPathEffect extends OneShotEffect {
if (found) {
game.informPlayers(sourceObject.getLogName() + ": Found a creature that shares a creature type with the revealed card.");
if (controller.chooseUse(Outcome.Benefit, "Cast the card?", source, game)) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
} else {
game.informPlayers(sourceObject.getLogName() + ": " + controller.getLogName() + " canceled casting the card.");
controller.getLibrary().putOnBottom(card, game);
@@ -128,4 +129,3 @@ class DescendantsPathEffect extends OneShotEffect {
return false;
}
}
-
diff --git a/Mage.Sets/src/mage/cards/d/DescentIntoMadness.java b/Mage.Sets/src/mage/cards/d/DescentIntoMadness.java
index 4c1ec1e436b..c8e6194a062 100644
--- a/Mage.Sets/src/mage/cards/d/DescentIntoMadness.java
+++ b/Mage.Sets/src/mage/cards/d/DescentIntoMadness.java
@@ -72,7 +72,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author noxx
*/
-public class DescentIntoMadness extends CardImpl {
+public final class DescentIntoMadness extends CardImpl {
public DescentIntoMadness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DescentOfTheDragons.java b/Mage.Sets/src/mage/cards/d/DescentOfTheDragons.java
index a8ec7660aa7..cd9364d1969 100644
--- a/Mage.Sets/src/mage/cards/d/DescentOfTheDragons.java
+++ b/Mage.Sets/src/mage/cards/d/DescentOfTheDragons.java
@@ -47,7 +47,7 @@ import java.util.UUID;
/**
* @author jeffwadsworth
*/
-public class DescentOfTheDragons extends CardImpl {
+public final class DescentOfTheDragons extends CardImpl {
public DescentOfTheDragons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DesecratedEarth.java b/Mage.Sets/src/mage/cards/d/DesecratedEarth.java
index bed6b7f383f..25e58d157c2 100644
--- a/Mage.Sets/src/mage/cards/d/DesecratedEarth.java
+++ b/Mage.Sets/src/mage/cards/d/DesecratedEarth.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author North
*/
-public class DesecratedEarth extends CardImpl {
+public final class DesecratedEarth extends CardImpl {
public DesecratedEarth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DesecrationDemon.java b/Mage.Sets/src/mage/cards/d/DesecrationDemon.java
index c4ce45a3d46..0c0afdacf88 100644
--- a/Mage.Sets/src/mage/cards/d/DesecrationDemon.java
+++ b/Mage.Sets/src/mage/cards/d/DesecrationDemon.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class DesecrationDemon extends CardImpl {
+public final class DesecrationDemon extends CardImpl {
public DesecrationDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DesecrationElemental.java b/Mage.Sets/src/mage/cards/d/DesecrationElemental.java
index 715151395a5..d3d46036cc4 100644
--- a/Mage.Sets/src/mage/cards/d/DesecrationElemental.java
+++ b/Mage.Sets/src/mage/cards/d/DesecrationElemental.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Plopman
*/
-public class DesecrationElemental extends CardImpl {
+public final class DesecrationElemental extends CardImpl {
public DesecrationElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DesecrationPlague.java b/Mage.Sets/src/mage/cards/d/DesecrationPlague.java
index 97d2d312315..a5ba04a8651 100644
--- a/Mage.Sets/src/mage/cards/d/DesecrationPlague.java
+++ b/Mage.Sets/src/mage/cards/d/DesecrationPlague.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class DesecrationPlague extends CardImpl {
+public final class DesecrationPlague extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("enchantment or land");
diff --git a/Mage.Sets/src/mage/cards/d/DesecratorHag.java b/Mage.Sets/src/mage/cards/d/DesecratorHag.java
index ef658e805c3..7e69a641cf9 100644
--- a/Mage.Sets/src/mage/cards/d/DesecratorHag.java
+++ b/Mage.Sets/src/mage/cards/d/DesecratorHag.java
@@ -47,7 +47,7 @@ import mage.target.TargetCard;
* @author jeffwadsworth
*
*/
-public class DesecratorHag extends CardImpl {
+public final class DesecratorHag extends CardImpl {
public DesecratorHag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B/G}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/d/Desert.java b/Mage.Sets/src/mage/cards/d/Desert.java
index 80c8e51dcf1..b91d95a4e5b 100644
--- a/Mage.Sets/src/mage/cards/d/Desert.java
+++ b/Mage.Sets/src/mage/cards/d/Desert.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Desert extends CardImpl {
+public final class Desert extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creature");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DesertCerodon.java b/Mage.Sets/src/mage/cards/d/DesertCerodon.java
index fdca1079352..ea6eaa75560 100644
--- a/Mage.Sets/src/mage/cards/d/DesertCerodon.java
+++ b/Mage.Sets/src/mage/cards/d/DesertCerodon.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DesertCerodon extends CardImpl {
+public final class DesertCerodon extends CardImpl {
public DesertCerodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DesertDrake.java b/Mage.Sets/src/mage/cards/d/DesertDrake.java
index 5deda498b68..57af34049d7 100644
--- a/Mage.Sets/src/mage/cards/d/DesertDrake.java
+++ b/Mage.Sets/src/mage/cards/d/DesertDrake.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class DesertDrake extends CardImpl {
+public final class DesertDrake extends CardImpl {
public DesertDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DesertNomads.java b/Mage.Sets/src/mage/cards/d/DesertNomads.java
index fd45c9ecdb2..f98ce8015d7 100644
--- a/Mage.Sets/src/mage/cards/d/DesertNomads.java
+++ b/Mage.Sets/src/mage/cards/d/DesertNomads.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author MarcoMarin
*/
-public class DesertNomads extends CardImpl {
+public final class DesertNomads extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("desert");
diff --git a/Mage.Sets/src/mage/cards/d/DesertOfTheFervent.java b/Mage.Sets/src/mage/cards/d/DesertOfTheFervent.java
index 1243cbf1bc8..8543e20be46 100644
--- a/Mage.Sets/src/mage/cards/d/DesertOfTheFervent.java
+++ b/Mage.Sets/src/mage/cards/d/DesertOfTheFervent.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DesertOfTheFervent extends CardImpl {
+public final class DesertOfTheFervent extends CardImpl {
public DesertOfTheFervent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/d/DesertOfTheGlorified.java b/Mage.Sets/src/mage/cards/d/DesertOfTheGlorified.java
index 77fc151e16c..95891ca5ce6 100644
--- a/Mage.Sets/src/mage/cards/d/DesertOfTheGlorified.java
+++ b/Mage.Sets/src/mage/cards/d/DesertOfTheGlorified.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DesertOfTheGlorified extends CardImpl {
+public final class DesertOfTheGlorified extends CardImpl {
public DesertOfTheGlorified(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/d/DesertOfTheIndomitable.java b/Mage.Sets/src/mage/cards/d/DesertOfTheIndomitable.java
index 4ce72db7bd7..c9055eba8f4 100644
--- a/Mage.Sets/src/mage/cards/d/DesertOfTheIndomitable.java
+++ b/Mage.Sets/src/mage/cards/d/DesertOfTheIndomitable.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DesertOfTheIndomitable extends CardImpl {
+public final class DesertOfTheIndomitable extends CardImpl {
public DesertOfTheIndomitable(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/d/DesertOfTheMindful.java b/Mage.Sets/src/mage/cards/d/DesertOfTheMindful.java
index ce5c0786107..1b59bb0b973 100644
--- a/Mage.Sets/src/mage/cards/d/DesertOfTheMindful.java
+++ b/Mage.Sets/src/mage/cards/d/DesertOfTheMindful.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DesertOfTheMindful extends CardImpl {
+public final class DesertOfTheMindful extends CardImpl {
public DesertOfTheMindful(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/d/DesertOfTheTrue.java b/Mage.Sets/src/mage/cards/d/DesertOfTheTrue.java
index 1c0a37d2717..0894fef479e 100644
--- a/Mage.Sets/src/mage/cards/d/DesertOfTheTrue.java
+++ b/Mage.Sets/src/mage/cards/d/DesertOfTheTrue.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DesertOfTheTrue extends CardImpl {
+public final class DesertOfTheTrue extends CardImpl {
public DesertOfTheTrue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/d/DesertSandstorm.java b/Mage.Sets/src/mage/cards/d/DesertSandstorm.java
index 929772d3f2d..7a97e2c6999 100644
--- a/Mage.Sets/src/mage/cards/d/DesertSandstorm.java
+++ b/Mage.Sets/src/mage/cards/d/DesertSandstorm.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LoneFox
*/
-public class DesertSandstorm extends CardImpl {
+public final class DesertSandstorm extends CardImpl {
public DesertSandstorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DesertTwister.java b/Mage.Sets/src/mage/cards/d/DesertTwister.java
index d2b1ad2d4a2..17c85be3568 100644
--- a/Mage.Sets/src/mage/cards/d/DesertTwister.java
+++ b/Mage.Sets/src/mage/cards/d/DesertTwister.java
@@ -38,7 +38,7 @@ import mage.target.TargetPermanent;
*
* @author Backfir3
*/
-public class DesertTwister extends CardImpl {
+public final class DesertTwister extends CardImpl {
public DesertTwister(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DesertedTemple.java b/Mage.Sets/src/mage/cards/d/DesertedTemple.java
index 92c6e727972..1ac98f5f850 100644
--- a/Mage.Sets/src/mage/cards/d/DesertedTemple.java
+++ b/Mage.Sets/src/mage/cards/d/DesertedTemple.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class DesertedTemple extends CardImpl {
+public final class DesertedTemple extends CardImpl {
public DesertedTemple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/DesertersQuarters.java b/Mage.Sets/src/mage/cards/d/DesertersQuarters.java
index 8a4d14120e8..6b15d217585 100644
--- a/Mage.Sets/src/mage/cards/d/DesertersQuarters.java
+++ b/Mage.Sets/src/mage/cards/d/DesertersQuarters.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DesertersQuarters extends CardImpl {
+public final class DesertersQuarters extends CardImpl {
public DesertersQuarters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/d/Desertion.java b/Mage.Sets/src/mage/cards/d/Desertion.java
index 85799b277de..a20fc1d42b8 100644
--- a/Mage.Sets/src/mage/cards/d/Desertion.java
+++ b/Mage.Sets/src/mage/cards/d/Desertion.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author Quercitron
*/
-public class Desertion extends CardImpl {
+public final class Desertion extends CardImpl {
public Desertion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DesertsHold.java b/Mage.Sets/src/mage/cards/d/DesertsHold.java
index c74eac584f8..f40b1ff52eb 100644
--- a/Mage.Sets/src/mage/cards/d/DesertsHold.java
+++ b/Mage.Sets/src/mage/cards/d/DesertsHold.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class DesertsHold extends CardImpl {
+public final class DesertsHold extends CardImpl {
private static final FilterControlledPermanent filterDesertPermanent = new FilterControlledPermanent("Desert");
private static final FilterCard filterDesertCard = new FilterCard("Desert card");
diff --git a/Mage.Sets/src/mage/cards/d/DesiccatedNaga.java b/Mage.Sets/src/mage/cards/d/DesiccatedNaga.java
index eb8eb6d4a5b..9cc98a4e26f 100644
--- a/Mage.Sets/src/mage/cards/d/DesiccatedNaga.java
+++ b/Mage.Sets/src/mage/cards/d/DesiccatedNaga.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class DesiccatedNaga extends CardImpl {
+public final class DesiccatedNaga extends CardImpl {
private static final FilterPlaneswalkerPermanent filter = new FilterPlaneswalkerPermanent("you control a Liliana planeswalker");
diff --git a/Mage.Sets/src/mage/cards/d/DesolateLighthouse.java b/Mage.Sets/src/mage/cards/d/DesolateLighthouse.java
index ad9ea1e8657..78fdad6577d 100644
--- a/Mage.Sets/src/mage/cards/d/DesolateLighthouse.java
+++ b/Mage.Sets/src/mage/cards/d/DesolateLighthouse.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class DesolateLighthouse extends CardImpl {
+public final class DesolateLighthouse extends CardImpl {
public DesolateLighthouse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/Desolation.java b/Mage.Sets/src/mage/cards/d/Desolation.java
index 8582d1b01a2..8e79e22ba58 100644
--- a/Mage.Sets/src/mage/cards/d/Desolation.java
+++ b/Mage.Sets/src/mage/cards/d/Desolation.java
@@ -56,7 +56,7 @@ import mage.watchers.Watcher;
*
* @author L_J
*/
-public class Desolation extends CardImpl {
+public final class Desolation extends CardImpl {
public Desolation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}");
@@ -148,7 +148,10 @@ class DesolationWatcher extends Watcher {
if (event.getType() == GameEvent.EventType.TAPPED_FOR_MANA) {
UUID playerId = event.getPlayerId();
if (playerId != null) {
- tappedForManaThisTurnPlayers.add(playerId);
+ Permanent permanent = game.getPermanentOrLKIBattlefield(event.getSourceId());
+ if (permanent != null && permanent.isLand()) {
+ tappedForManaThisTurnPlayers.add(playerId);
+ }
}
}
}
diff --git a/Mage.Sets/src/mage/cards/d/DesolationAngel.java b/Mage.Sets/src/mage/cards/d/DesolationAngel.java
index bd5fddae30e..12004245991 100644
--- a/Mage.Sets/src/mage/cards/d/DesolationAngel.java
+++ b/Mage.Sets/src/mage/cards/d/DesolationAngel.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
/**
* @author Loki
*/
-public class DesolationAngel extends CardImpl {
+public final class DesolationAngel extends CardImpl {
private static final FilterLandPermanent filter2 = new FilterLandPermanent("lands you control");
diff --git a/Mage.Sets/src/mage/cards/d/DesolationGiant.java b/Mage.Sets/src/mage/cards/d/DesolationGiant.java
index 49e542f8469..b6c9fe93c5b 100644
--- a/Mage.Sets/src/mage/cards/d/DesolationGiant.java
+++ b/Mage.Sets/src/mage/cards/d/DesolationGiant.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class DesolationGiant extends CardImpl {
+public final class DesolationGiant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("other creatures you control");
diff --git a/Mage.Sets/src/mage/cards/d/DesolationTwin.java b/Mage.Sets/src/mage/cards/d/DesolationTwin.java
index 59daf3625e8..cfff15ef745 100644
--- a/Mage.Sets/src/mage/cards/d/DesolationTwin.java
+++ b/Mage.Sets/src/mage/cards/d/DesolationTwin.java
@@ -46,7 +46,7 @@ import mage.game.stack.Spell;
*
* @author fireshoes
*/
-public class DesolationTwin extends CardImpl {
+public final class DesolationTwin extends CardImpl {
public DesolationTwin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{10}");
diff --git a/Mage.Sets/src/mage/cards/d/DesperateCastaways.java b/Mage.Sets/src/mage/cards/d/DesperateCastaways.java
index 63ab9a4ca25..765dbd075dc 100644
--- a/Mage.Sets/src/mage/cards/d/DesperateCastaways.java
+++ b/Mage.Sets/src/mage/cards/d/DesperateCastaways.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class DesperateCastaways extends CardImpl {
+public final class DesperateCastaways extends CardImpl {
public DesperateCastaways(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DesperateCharge.java b/Mage.Sets/src/mage/cards/d/DesperateCharge.java
index 7c472141e18..c164a1bea1f 100644
--- a/Mage.Sets/src/mage/cards/d/DesperateCharge.java
+++ b/Mage.Sets/src/mage/cards/d/DesperateCharge.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class DesperateCharge extends CardImpl {
+public final class DesperateCharge extends CardImpl {
public DesperateCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DesperateGambit.java b/Mage.Sets/src/mage/cards/d/DesperateGambit.java
index bee7635cb44..7ba488747e6 100644
--- a/Mage.Sets/src/mage/cards/d/DesperateGambit.java
+++ b/Mage.Sets/src/mage/cards/d/DesperateGambit.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author L_J
*/
-public class DesperateGambit extends CardImpl {
+public final class DesperateGambit extends CardImpl {
public DesperateGambit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DesperateRavings.java b/Mage.Sets/src/mage/cards/d/DesperateRavings.java
index cd4a262dc8a..499bcf1e821 100644
--- a/Mage.Sets/src/mage/cards/d/DesperateRavings.java
+++ b/Mage.Sets/src/mage/cards/d/DesperateRavings.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author North
*/
-public class DesperateRavings extends CardImpl {
+public final class DesperateRavings extends CardImpl {
public DesperateRavings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DesperateRitual.java b/Mage.Sets/src/mage/cards/d/DesperateRitual.java
index 70fe01ee57a..3d24322fe0f 100644
--- a/Mage.Sets/src/mage/cards/d/DesperateRitual.java
+++ b/Mage.Sets/src/mage/cards/d/DesperateRitual.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DesperateRitual extends CardImpl {
+public final class DesperateRitual extends CardImpl {
public DesperateRitual(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DesperateSentry.java b/Mage.Sets/src/mage/cards/d/DesperateSentry.java
index 5fa96b6e178..2ec92259493 100644
--- a/Mage.Sets/src/mage/cards/d/DesperateSentry.java
+++ b/Mage.Sets/src/mage/cards/d/DesperateSentry.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.EldraziHorrorToken;
*
* @author LevelX2
*/
-public class DesperateSentry extends CardImpl {
+public final class DesperateSentry extends CardImpl {
public DesperateSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DesperateStand.java b/Mage.Sets/src/mage/cards/d/DesperateStand.java
index 83aa8b34521..c220198ee4c 100644
--- a/Mage.Sets/src/mage/cards/d/DesperateStand.java
+++ b/Mage.Sets/src/mage/cards/d/DesperateStand.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DesperateStand extends CardImpl {
+public final class DesperateStand extends CardImpl {
public DesperateStand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Despise.java b/Mage.Sets/src/mage/cards/d/Despise.java
index 0aaddbcfe79..2621150aca0 100644
--- a/Mage.Sets/src/mage/cards/d/Despise.java
+++ b/Mage.Sets/src/mage/cards/d/Despise.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class Despise extends CardImpl {
+public final class Despise extends CardImpl {
private static final FilterCard filter = new FilterCard("a creature or planeswalker card");
static {
diff --git a/Mage.Sets/src/mage/cards/d/Despoil.java b/Mage.Sets/src/mage/cards/d/Despoil.java
index 6a6f74c8b9b..03c39a06430 100644
--- a/Mage.Sets/src/mage/cards/d/Despoil.java
+++ b/Mage.Sets/src/mage/cards/d/Despoil.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class Despoil extends CardImpl {
+public final class Despoil extends CardImpl {
public Despoil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DespoilerOfSouls.java b/Mage.Sets/src/mage/cards/d/DespoilerOfSouls.java
index 812c117410c..90bfea8b2d7 100644
--- a/Mage.Sets/src/mage/cards/d/DespoilerOfSouls.java
+++ b/Mage.Sets/src/mage/cards/d/DespoilerOfSouls.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class DespoilerOfSouls extends CardImpl {
+public final class DespoilerOfSouls extends CardImpl {
public DespoilerOfSouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Despondency.java b/Mage.Sets/src/mage/cards/d/Despondency.java
index 9ce12a2c836..1cda162ae04 100644
--- a/Mage.Sets/src/mage/cards/d/Despondency.java
+++ b/Mage.Sets/src/mage/cards/d/Despondency.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author hanasu
*/
-public class Despondency extends CardImpl {
+public final class Despondency extends CardImpl {
public Despondency(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DespoticScepter.java b/Mage.Sets/src/mage/cards/d/DespoticScepter.java
index eccd268dbad..18ace448f03 100644
--- a/Mage.Sets/src/mage/cards/d/DespoticScepter.java
+++ b/Mage.Sets/src/mage/cards/d/DespoticScepter.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class DespoticScepter extends CardImpl {
+public final class DespoticScepter extends CardImpl {
private final static FilterPermanent FILTER = new FilterPermanent("permanent you own");
diff --git a/Mage.Sets/src/mage/cards/d/DestinedLead.java b/Mage.Sets/src/mage/cards/d/DestinedLead.java
index af2b2dd4235..a031213cc26 100644
--- a/Mage.Sets/src/mage/cards/d/DestinedLead.java
+++ b/Mage.Sets/src/mage/cards/d/DestinedLead.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
import mage.constants.SpellAbilityType;
import mage.target.common.TargetCreaturePermanent;
-public class DestinedLead extends SplitCard {
+public final class DestinedLead extends SplitCard {
public DestinedLead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{1}{B}", "{3}{G}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/d/DestroyTheEvidence.java b/Mage.Sets/src/mage/cards/d/DestroyTheEvidence.java
index 52f9cb912fa..b36941b9d38 100644
--- a/Mage.Sets/src/mage/cards/d/DestroyTheEvidence.java
+++ b/Mage.Sets/src/mage/cards/d/DestroyTheEvidence.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class DestroyTheEvidence extends CardImpl {
+public final class DestroyTheEvidence extends CardImpl {
public DestroyTheEvidence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DestructiveFlow.java b/Mage.Sets/src/mage/cards/d/DestructiveFlow.java
index c560638bca4..ab89274f3a5 100644
--- a/Mage.Sets/src/mage/cards/d/DestructiveFlow.java
+++ b/Mage.Sets/src/mage/cards/d/DestructiveFlow.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author LoneFox
*/
-public class DestructiveFlow extends CardImpl {
+public final class DestructiveFlow extends CardImpl {
public DestructiveFlow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DestructiveForce.java b/Mage.Sets/src/mage/cards/d/DestructiveForce.java
index ac8c4117e1b..ec1fcd5d80e 100644
--- a/Mage.Sets/src/mage/cards/d/DestructiveForce.java
+++ b/Mage.Sets/src/mage/cards/d/DestructiveForce.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class DestructiveForce extends CardImpl {
+public final class DestructiveForce extends CardImpl {
private static final FilterControlledPermanent filterLand = new FilterControlledLandPermanent();
private static final FilterPermanent filterCreature = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/d/DestructiveRevelry.java b/Mage.Sets/src/mage/cards/d/DestructiveRevelry.java
index 356c3b5c2a8..b7cc60e2d13 100644
--- a/Mage.Sets/src/mage/cards/d/DestructiveRevelry.java
+++ b/Mage.Sets/src/mage/cards/d/DestructiveRevelry.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class DestructiveRevelry extends CardImpl {
+public final class DestructiveRevelry extends CardImpl {
public DestructiveRevelry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DestructiveTampering.java b/Mage.Sets/src/mage/cards/d/DestructiveTampering.java
index 6883136dfb8..816569bb9c7 100644
--- a/Mage.Sets/src/mage/cards/d/DestructiveTampering.java
+++ b/Mage.Sets/src/mage/cards/d/DestructiveTampering.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author spjspj
*/
-public class DestructiveTampering extends CardImpl {
+public final class DestructiveTampering extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/d/DestructiveUrge.java b/Mage.Sets/src/mage/cards/d/DestructiveUrge.java
index abf262acc3e..5122c4eaa02 100644
--- a/Mage.Sets/src/mage/cards/d/DestructiveUrge.java
+++ b/Mage.Sets/src/mage/cards/d/DestructiveUrge.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author TheElk801
*/
-public class DestructiveUrge extends CardImpl {
+public final class DestructiveUrge extends CardImpl {
public DestructiveUrge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DestructorDragon.java b/Mage.Sets/src/mage/cards/d/DestructorDragon.java
index a32ab8f3b3e..d9e044146d2 100644
--- a/Mage.Sets/src/mage/cards/d/DestructorDragon.java
+++ b/Mage.Sets/src/mage/cards/d/DestructorDragon.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class DestructorDragon extends CardImpl {
+public final class DestructorDragon extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature permanent");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DetainmentSpell.java b/Mage.Sets/src/mage/cards/d/DetainmentSpell.java
index cd8e4bff76b..e630cba4b66 100644
--- a/Mage.Sets/src/mage/cards/d/DetainmentSpell.java
+++ b/Mage.Sets/src/mage/cards/d/DetainmentSpell.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class DetainmentSpell extends CardImpl {
+public final class DetainmentSpell extends CardImpl {
public DetainmentSpell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DetentionSphere.java b/Mage.Sets/src/mage/cards/d/DetentionSphere.java
index 835f494d8ca..4992fe3b71c 100644
--- a/Mage.Sets/src/mage/cards/d/DetentionSphere.java
+++ b/Mage.Sets/src/mage/cards/d/DetentionSphere.java
@@ -55,7 +55,7 @@ import org.apache.log4j.Logger;
*
* @author LevelX2
*/
-public class DetentionSphere extends CardImpl {
+public final class DetentionSphere extends CardImpl {
static final protected FilterPermanent filter = new FilterNonlandPermanent("nonland permanent not named Detention Sphere");
diff --git a/Mage.Sets/src/mage/cards/d/Detonate.java b/Mage.Sets/src/mage/cards/d/Detonate.java
index 4e62c7559b9..5cd099b5684 100644
--- a/Mage.Sets/src/mage/cards/d/Detonate.java
+++ b/Mage.Sets/src/mage/cards/d/Detonate.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LoneFox
*/
-public class Detonate extends CardImpl {
+public final class Detonate extends CardImpl {
public Detonate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/Detritivore.java b/Mage.Sets/src/mage/cards/d/Detritivore.java
index 1865dfd7529..b0fef27f62e 100644
--- a/Mage.Sets/src/mage/cards/d/Detritivore.java
+++ b/Mage.Sets/src/mage/cards/d/Detritivore.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author LevelX2
*/
-public class Detritivore extends CardImpl {
+public final class Detritivore extends CardImpl {
public Detritivore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DeusOfCalamity.java b/Mage.Sets/src/mage/cards/d/DeusOfCalamity.java
index 3819106ef9b..ab9c2f341ac 100644
--- a/Mage.Sets/src/mage/cards/d/DeusOfCalamity.java
+++ b/Mage.Sets/src/mage/cards/d/DeusOfCalamity.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class DeusOfCalamity extends CardImpl {
+public final class DeusOfCalamity extends CardImpl {
public DeusOfCalamity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/G}{R/G}{R/G}{R/G}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/d/Devastate.java b/Mage.Sets/src/mage/cards/d/Devastate.java
index f59bf1c6cd1..48e273df9d8 100644
--- a/Mage.Sets/src/mage/cards/d/Devastate.java
+++ b/Mage.Sets/src/mage/cards/d/Devastate.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class Devastate extends CardImpl {
+public final class Devastate extends CardImpl {
public Devastate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DevastatingDreams.java b/Mage.Sets/src/mage/cards/d/DevastatingDreams.java
index 34763133d6e..f50aca88392 100644
--- a/Mage.Sets/src/mage/cards/d/DevastatingDreams.java
+++ b/Mage.Sets/src/mage/cards/d/DevastatingDreams.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class DevastatingDreams extends CardImpl {
+public final class DevastatingDreams extends CardImpl {
public DevastatingDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DevastatingSummons.java b/Mage.Sets/src/mage/cards/d/DevastatingSummons.java
index e18ebed6e87..f6b7d075c19 100644
--- a/Mage.Sets/src/mage/cards/d/DevastatingSummons.java
+++ b/Mage.Sets/src/mage/cards/d/DevastatingSummons.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.DevastatingSummonsElementalToken;
*
* @author jeffwadsworth
*/
-public class DevastatingSummons extends CardImpl {
+public final class DevastatingSummons extends CardImpl {
public DevastatingSummons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/d/Devastation.java b/Mage.Sets/src/mage/cards/d/Devastation.java
index 50cfc21f25a..7dccfa6e115 100644
--- a/Mage.Sets/src/mage/cards/d/Devastation.java
+++ b/Mage.Sets/src/mage/cards/d/Devastation.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class Devastation extends CardImpl {
+public final class Devastation extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creatures and lands");
diff --git a/Mage.Sets/src/mage/cards/d/DevastationTide.java b/Mage.Sets/src/mage/cards/d/DevastationTide.java
index 413a35a3241..a390202f868 100644
--- a/Mage.Sets/src/mage/cards/d/DevastationTide.java
+++ b/Mage.Sets/src/mage/cards/d/DevastationTide.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterNonlandPermanent;
*
* @author noxx
*/
-public class DevastationTide extends CardImpl {
+public final class DevastationTide extends CardImpl {
public DevastationTide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DeviantGlee.java b/Mage.Sets/src/mage/cards/d/DeviantGlee.java
index fbab7461886..1bc5de16931 100644
--- a/Mage.Sets/src/mage/cards/d/DeviantGlee.java
+++ b/Mage.Sets/src/mage/cards/d/DeviantGlee.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DeviantGlee extends CardImpl {
+public final class DeviantGlee extends CardImpl {
static final String rule = "and has \"{R}: This creature gains trample until end of turn.\"";
diff --git a/Mage.Sets/src/mage/cards/d/DevilsPlay.java b/Mage.Sets/src/mage/cards/d/DevilsPlay.java
index 3b617d7d708..1cda476fd35 100644
--- a/Mage.Sets/src/mage/cards/d/DevilsPlay.java
+++ b/Mage.Sets/src/mage/cards/d/DevilsPlay.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class DevilsPlay extends CardImpl {
+public final class DevilsPlay extends CardImpl {
public DevilsPlay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DevilsPlayground.java b/Mage.Sets/src/mage/cards/d/DevilsPlayground.java
index b82a54d42ee..06733230b0b 100644
--- a/Mage.Sets/src/mage/cards/d/DevilsPlayground.java
+++ b/Mage.Sets/src/mage/cards/d/DevilsPlayground.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.DevilToken;
*
* @author fireshoes
*/
-public class DevilsPlayground extends CardImpl {
+public final class DevilsPlayground extends CardImpl {
public DevilsPlayground(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DevilthornFox.java b/Mage.Sets/src/mage/cards/d/DevilthornFox.java
index e1d2105b367..99d01e89742 100644
--- a/Mage.Sets/src/mage/cards/d/DevilthornFox.java
+++ b/Mage.Sets/src/mage/cards/d/DevilthornFox.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DevilthornFox extends CardImpl {
+public final class DevilthornFox extends CardImpl {
public DevilthornFox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DevotedCaretaker.java b/Mage.Sets/src/mage/cards/d/DevotedCaretaker.java
index 15b2f70861b..263123676cb 100644
--- a/Mage.Sets/src/mage/cards/d/DevotedCaretaker.java
+++ b/Mage.Sets/src/mage/cards/d/DevotedCaretaker.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki (Ursapine), LevelX2 (Eight-and-a-Half Tails), cbt
*/
-public class DevotedCaretaker extends CardImpl {
+public final class DevotedCaretaker extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant spells and sorcery spells");
diff --git a/Mage.Sets/src/mage/cards/d/DevotedCropMate.java b/Mage.Sets/src/mage/cards/d/DevotedCropMate.java
index 254a193d5df..43646dd4930 100644
--- a/Mage.Sets/src/mage/cards/d/DevotedCropMate.java
+++ b/Mage.Sets/src/mage/cards/d/DevotedCropMate.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Styxo
*/
-public class DevotedCropMate extends CardImpl {
+public final class DevotedCropMate extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with converted mana cost 2 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/d/DevotedDruid.java b/Mage.Sets/src/mage/cards/d/DevotedDruid.java
index 63a5d820f14..6c413c2e0f6 100644
--- a/Mage.Sets/src/mage/cards/d/DevotedDruid.java
+++ b/Mage.Sets/src/mage/cards/d/DevotedDruid.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class DevotedDruid extends CardImpl {
+public final class DevotedDruid extends CardImpl {
public DevotedDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DevotedHero.java b/Mage.Sets/src/mage/cards/d/DevotedHero.java
index 962d4eabf48..45ee129b45e 100644
--- a/Mage.Sets/src/mage/cards/d/DevotedHero.java
+++ b/Mage.Sets/src/mage/cards/d/DevotedHero.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class DevotedHero extends CardImpl {
+public final class DevotedHero extends CardImpl {
public DevotedHero(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DevotedRetainer.java b/Mage.Sets/src/mage/cards/d/DevotedRetainer.java
index a5226ed7974..d42abd670c1 100644
--- a/Mage.Sets/src/mage/cards/d/DevotedRetainer.java
+++ b/Mage.Sets/src/mage/cards/d/DevotedRetainer.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DevotedRetainer extends CardImpl {
+public final class DevotedRetainer extends CardImpl {
public DevotedRetainer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DevoteeOfStrength.java b/Mage.Sets/src/mage/cards/d/DevoteeOfStrength.java
index 0c6f5f51145..5a719b6525b 100644
--- a/Mage.Sets/src/mage/cards/d/DevoteeOfStrength.java
+++ b/Mage.Sets/src/mage/cards/d/DevoteeOfStrength.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ciaccona007
*/
-public class DevoteeOfStrength extends CardImpl {
+public final class DevoteeOfStrength extends CardImpl {
public DevoteeOfStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DevourFlesh.java b/Mage.Sets/src/mage/cards/d/DevourFlesh.java
index 70290993133..cf8a9eb3c24 100644
--- a/Mage.Sets/src/mage/cards/d/DevourFlesh.java
+++ b/Mage.Sets/src/mage/cards/d/DevourFlesh.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class DevourFlesh extends CardImpl {
+public final class DevourFlesh extends CardImpl {
public DevourFlesh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DevourInFlames.java b/Mage.Sets/src/mage/cards/d/DevourInFlames.java
index b85e7a593c9..193d9a4b012 100644
--- a/Mage.Sets/src/mage/cards/d/DevourInFlames.java
+++ b/Mage.Sets/src/mage/cards/d/DevourInFlames.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
*
* @author fireshoes
*/
-public class DevourInFlames extends CardImpl {
+public final class DevourInFlames extends CardImpl {
public DevourInFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DevourInShadow.java b/Mage.Sets/src/mage/cards/d/DevourInShadow.java
index 51262edc4fe..34cf9b9bc1f 100644
--- a/Mage.Sets/src/mage/cards/d/DevourInShadow.java
+++ b/Mage.Sets/src/mage/cards/d/DevourInShadow.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class DevourInShadow extends CardImpl {
+public final class DevourInShadow extends CardImpl {
public DevourInShadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DevouringDeep.java b/Mage.Sets/src/mage/cards/d/DevouringDeep.java
index 8413c92892e..061fc93ac3b 100644
--- a/Mage.Sets/src/mage/cards/d/DevouringDeep.java
+++ b/Mage.Sets/src/mage/cards/d/DevouringDeep.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DevouringDeep extends CardImpl {
+public final class DevouringDeep extends CardImpl {
public DevouringDeep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DevouringGreed.java b/Mage.Sets/src/mage/cards/d/DevouringGreed.java
index 9507bb90539..29ecfe92e20 100644
--- a/Mage.Sets/src/mage/cards/d/DevouringGreed.java
+++ b/Mage.Sets/src/mage/cards/d/DevouringGreed.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class DevouringGreed extends CardImpl {
+public final class DevouringGreed extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("any number of Spirits");
diff --git a/Mage.Sets/src/mage/cards/d/DevouringLight.java b/Mage.Sets/src/mage/cards/d/DevouringLight.java
index eb343e9b21b..80f6ea08696 100644
--- a/Mage.Sets/src/mage/cards/d/DevouringLight.java
+++ b/Mage.Sets/src/mage/cards/d/DevouringLight.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author LevelX2
*/
-public class DevouringLight extends CardImpl {
+public final class DevouringLight extends CardImpl {
public DevouringLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DevouringRage.java b/Mage.Sets/src/mage/cards/d/DevouringRage.java
index 7c77e504ca6..bdf7da7d5c1 100644
--- a/Mage.Sets/src/mage/cards/d/DevouringRage.java
+++ b/Mage.Sets/src/mage/cards/d/DevouringRage.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DevouringRage extends CardImpl {
+public final class DevouringRage extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("any number of Spirits");
diff --git a/Mage.Sets/src/mage/cards/d/DevouringStrossus.java b/Mage.Sets/src/mage/cards/d/DevouringStrossus.java
index ca596446306..1d610062b25 100644
--- a/Mage.Sets/src/mage/cards/d/DevouringStrossus.java
+++ b/Mage.Sets/src/mage/cards/d/DevouringStrossus.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class DevouringStrossus extends CardImpl {
+public final class DevouringStrossus extends CardImpl {
public DevouringStrossus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DevouringSwarm.java b/Mage.Sets/src/mage/cards/d/DevouringSwarm.java
index d34a22d9d6a..653c4563f85 100644
--- a/Mage.Sets/src/mage/cards/d/DevouringSwarm.java
+++ b/Mage.Sets/src/mage/cards/d/DevouringSwarm.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class DevouringSwarm extends CardImpl {
+public final class DevouringSwarm extends CardImpl {
public DevouringSwarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DevoutChaplain.java b/Mage.Sets/src/mage/cards/d/DevoutChaplain.java
index ea9e0578e95..72d47407dc8 100644
--- a/Mage.Sets/src/mage/cards/d/DevoutChaplain.java
+++ b/Mage.Sets/src/mage/cards/d/DevoutChaplain.java
@@ -52,7 +52,7 @@ import java.util.UUID;
/**
* @author noxx
*/
-public class DevoutChaplain extends CardImpl {
+public final class DevoutChaplain extends CardImpl {
private static final FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Human you control");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DevoutHarpist.java b/Mage.Sets/src/mage/cards/d/DevoutHarpist.java
index 8bffe41bad7..b678ec4d493 100644
--- a/Mage.Sets/src/mage/cards/d/DevoutHarpist.java
+++ b/Mage.Sets/src/mage/cards/d/DevoutHarpist.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class DevoutHarpist extends CardImpl {
+public final class DevoutHarpist extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Aura attached to a creature");
static
{
diff --git a/Mage.Sets/src/mage/cards/d/DevoutInvocation.java b/Mage.Sets/src/mage/cards/d/DevoutInvocation.java
index 05854067354..64db4ea8729 100644
--- a/Mage.Sets/src/mage/cards/d/DevoutInvocation.java
+++ b/Mage.Sets/src/mage/cards/d/DevoutInvocation.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class DevoutInvocation extends CardImpl {
+public final class DevoutInvocation extends CardImpl {
public DevoutInvocation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DevoutLightcaster.java b/Mage.Sets/src/mage/cards/d/DevoutLightcaster.java
index e277211a0e8..0321389b1ca 100644
--- a/Mage.Sets/src/mage/cards/d/DevoutLightcaster.java
+++ b/Mage.Sets/src/mage/cards/d/DevoutLightcaster.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class DevoutLightcaster extends CardImpl {
+public final class DevoutLightcaster extends CardImpl {
private static final FilterPermanent filterTarget = new FilterPermanent("black permanent");
diff --git a/Mage.Sets/src/mage/cards/d/DevoutMonk.java b/Mage.Sets/src/mage/cards/d/DevoutMonk.java
index e46635a353e..4ec6debaa29 100644
--- a/Mage.Sets/src/mage/cards/d/DevoutMonk.java
+++ b/Mage.Sets/src/mage/cards/d/DevoutMonk.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DevoutMonk extends CardImpl {
+public final class DevoutMonk extends CardImpl {
public DevoutMonk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DevoutWitness.java b/Mage.Sets/src/mage/cards/d/DevoutWitness.java
index 51ff0abadc9..b2d246099df 100644
--- a/Mage.Sets/src/mage/cards/d/DevoutWitness.java
+++ b/Mage.Sets/src/mage/cards/d/DevoutWitness.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class DevoutWitness extends CardImpl {
+public final class DevoutWitness extends CardImpl {
public DevoutWitness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DewdropSpy.java b/Mage.Sets/src/mage/cards/d/DewdropSpy.java
index aa5acf70ee4..3e33123fd0f 100644
--- a/Mage.Sets/src/mage/cards/d/DewdropSpy.java
+++ b/Mage.Sets/src/mage/cards/d/DewdropSpy.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class DewdropSpy extends CardImpl {
+public final class DewdropSpy extends CardImpl {
public DewdropSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DhundOperative.java b/Mage.Sets/src/mage/cards/d/DhundOperative.java
index 35e5a6f302f..8d256001d73 100644
--- a/Mage.Sets/src/mage/cards/d/DhundOperative.java
+++ b/Mage.Sets/src/mage/cards/d/DhundOperative.java
@@ -49,7 +49,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class DhundOperative extends CardImpl {
+public final class DhundOperative extends CardImpl {
public DhundOperative(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiabolicEdict.java b/Mage.Sets/src/mage/cards/d/DiabolicEdict.java
index 33495a94153..1e3c25e07ff 100644
--- a/Mage.Sets/src/mage/cards/d/DiabolicEdict.java
+++ b/Mage.Sets/src/mage/cards/d/DiabolicEdict.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class DiabolicEdict extends CardImpl {
+public final class DiabolicEdict extends CardImpl {
public DiabolicEdict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiabolicIntent.java b/Mage.Sets/src/mage/cards/d/DiabolicIntent.java
index 6edbafd87e8..6d280a2ed51 100644
--- a/Mage.Sets/src/mage/cards/d/DiabolicIntent.java
+++ b/Mage.Sets/src/mage/cards/d/DiabolicIntent.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class DiabolicIntent extends CardImpl {
+public final class DiabolicIntent extends CardImpl {
public DiabolicIntent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiabolicMachine.java b/Mage.Sets/src/mage/cards/d/DiabolicMachine.java
index a6f316a7d32..2b3e8e6a09d 100644
--- a/Mage.Sets/src/mage/cards/d/DiabolicMachine.java
+++ b/Mage.Sets/src/mage/cards/d/DiabolicMachine.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author nigelzor
*/
-public class DiabolicMachine extends CardImpl {
+public final class DiabolicMachine extends CardImpl {
public DiabolicMachine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java b/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java
index 5e61ccada65..bca35fa3cae 100644
--- a/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java
+++ b/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class DiabolicRevelation extends CardImpl {
+public final class DiabolicRevelation extends CardImpl {
public DiabolicRevelation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiabolicServitude.java b/Mage.Sets/src/mage/cards/d/DiabolicServitude.java
index e89349e8814..500f644b6e0 100644
--- a/Mage.Sets/src/mage/cards/d/DiabolicServitude.java
+++ b/Mage.Sets/src/mage/cards/d/DiabolicServitude.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DiabolicServitude extends CardImpl {
+public final class DiabolicServitude extends CardImpl {
public DiabolicServitude(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiabolicTutor.java b/Mage.Sets/src/mage/cards/d/DiabolicTutor.java
index b05a5ae2b7d..ec05b24e118 100644
--- a/Mage.Sets/src/mage/cards/d/DiabolicTutor.java
+++ b/Mage.Sets/src/mage/cards/d/DiabolicTutor.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class DiabolicTutor extends CardImpl {
+public final class DiabolicTutor extends CardImpl {
public DiabolicTutor(UUID ownerId, CardSetInfo setInfo){
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiabolicVision.java b/Mage.Sets/src/mage/cards/d/DiabolicVision.java
index 552a1b90fe4..ccff87e53d9 100644
--- a/Mage.Sets/src/mage/cards/d/DiabolicVision.java
+++ b/Mage.Sets/src/mage/cards/d/DiabolicVision.java
@@ -39,7 +39,7 @@ import mage.filter.FilterCard;
*
* @author TheElk801
*/
-public class DiabolicVision extends CardImpl {
+public final class DiabolicVision extends CardImpl {
public DiabolicVision(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiamondFaerie.java b/Mage.Sets/src/mage/cards/d/DiamondFaerie.java
index 5d5b8aac2d2..4f3252dc909 100644
--- a/Mage.Sets/src/mage/cards/d/DiamondFaerie.java
+++ b/Mage.Sets/src/mage/cards/d/DiamondFaerie.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author LoneFox
*/
-public class DiamondFaerie extends CardImpl {
+public final class DiamondFaerie extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Snow creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DiamondKaleidoscope.java b/Mage.Sets/src/mage/cards/d/DiamondKaleidoscope.java
index 67389254e9f..d2aa11245cd 100644
--- a/Mage.Sets/src/mage/cards/d/DiamondKaleidoscope.java
+++ b/Mage.Sets/src/mage/cards/d/DiamondKaleidoscope.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class DiamondKaleidoscope extends CardImpl {
+public final class DiamondKaleidoscope extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Prism token");
diff --git a/Mage.Sets/src/mage/cards/d/DiamondValley.java b/Mage.Sets/src/mage/cards/d/DiamondValley.java
index e4a0070d941..59aec76c7dd 100644
--- a/Mage.Sets/src/mage/cards/d/DiamondValley.java
+++ b/Mage.Sets/src/mage/cards/d/DiamondValley.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class DiamondValley extends CardImpl {
+public final class DiamondValley extends CardImpl {
public DiamondValley(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/d/DiaochanArtfulBeauty.java b/Mage.Sets/src/mage/cards/d/DiaochanArtfulBeauty.java
index 78f1274f6a6..2286bc5ca7a 100644
--- a/Mage.Sets/src/mage/cards/d/DiaochanArtfulBeauty.java
+++ b/Mage.Sets/src/mage/cards/d/DiaochanArtfulBeauty.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponentsChoicePermanent;
*
* @author LevelX2
*/
-public class DiaochanArtfulBeauty extends CardImpl {
+public final class DiaochanArtfulBeauty extends CardImpl {
public DiaochanArtfulBeauty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DictateOfErebos.java b/Mage.Sets/src/mage/cards/d/DictateOfErebos.java
index 4efc724617a..a04f4662805 100644
--- a/Mage.Sets/src/mage/cards/d/DictateOfErebos.java
+++ b/Mage.Sets/src/mage/cards/d/DictateOfErebos.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class DictateOfErebos extends CardImpl {
+public final class DictateOfErebos extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
diff --git a/Mage.Sets/src/mage/cards/d/DictateOfHeliod.java b/Mage.Sets/src/mage/cards/d/DictateOfHeliod.java
index 51e5aac6c42..122ecd9ae85 100644
--- a/Mage.Sets/src/mage/cards/d/DictateOfHeliod.java
+++ b/Mage.Sets/src/mage/cards/d/DictateOfHeliod.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DictateOfHeliod extends CardImpl {
+public final class DictateOfHeliod extends CardImpl {
public DictateOfHeliod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DictateOfKarametra.java b/Mage.Sets/src/mage/cards/d/DictateOfKarametra.java
index a1e16a54df6..abf29693262 100644
--- a/Mage.Sets/src/mage/cards/d/DictateOfKarametra.java
+++ b/Mage.Sets/src/mage/cards/d/DictateOfKarametra.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author LevelX2
*/
-public class DictateOfKarametra extends CardImpl {
+public final class DictateOfKarametra extends CardImpl {
public DictateOfKarametra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}{G}");
@@ -49,7 +49,7 @@ public class DictateOfKarametra extends CardImpl {
// Flash
this.addAbility(FlashAbility.getInstance());
- // Whenever a player taps a land for mana, that player adds one mana to their mana pool of any type that land produced.
+ // Whenever a player taps a land for mana, that player adds one mana of any type that land produced.
this.addAbility(new TapForManaAllTriggeredManaAbility(
new AddManaOfAnyTypeProducedEffect(),
new FilterLandPermanent("a player taps a land"),
diff --git a/Mage.Sets/src/mage/cards/d/DictateOfKruphix.java b/Mage.Sets/src/mage/cards/d/DictateOfKruphix.java
index 5c9f198e563..b1164f8581f 100644
--- a/Mage.Sets/src/mage/cards/d/DictateOfKruphix.java
+++ b/Mage.Sets/src/mage/cards/d/DictateOfKruphix.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DictateOfKruphix extends CardImpl {
+public final class DictateOfKruphix extends CardImpl {
public DictateOfKruphix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DictateOfTheTwinGods.java b/Mage.Sets/src/mage/cards/d/DictateOfTheTwinGods.java
index 8b57e8b53a2..6995317acb3 100644
--- a/Mage.Sets/src/mage/cards/d/DictateOfTheTwinGods.java
+++ b/Mage.Sets/src/mage/cards/d/DictateOfTheTwinGods.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class DictateOfTheTwinGods extends CardImpl {
+public final class DictateOfTheTwinGods extends CardImpl {
public DictateOfTheTwinGods(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/Didgeridoo.java b/Mage.Sets/src/mage/cards/d/Didgeridoo.java
index ec0870fceb7..65f754b48dc 100644
--- a/Mage.Sets/src/mage/cards/d/Didgeridoo.java
+++ b/Mage.Sets/src/mage/cards/d/Didgeridoo.java
@@ -30,7 +30,7 @@ package mage.cards.d;
import java.util.UUID;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class Didgeridoo extends CardImpl {
+public final class Didgeridoo extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("a Minotaur permanent card");
@@ -55,7 +55,7 @@ public class Didgeridoo extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
// {3}: You may put a Minotaur permanent card from your hand onto the battlefield.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutPermanentOnBattlefieldEffect(filter), new ManaCostsImpl("{3}")));
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutCardFromHandOntoBattlefieldEffect(filter), new ManaCostsImpl("{3}")));
}
public Didgeridoo(final Didgeridoo card) {
diff --git a/Mage.Sets/src/mage/cards/d/DieYoung.java b/Mage.Sets/src/mage/cards/d/DieYoung.java
index 8b5c4037aba..780f8244b4a 100644
--- a/Mage.Sets/src/mage/cards/d/DieYoung.java
+++ b/Mage.Sets/src/mage/cards/d/DieYoung.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DieYoung extends CardImpl {
+public final class DieYoung extends CardImpl {
public DieYoung(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiffusionSliver.java b/Mage.Sets/src/mage/cards/d/DiffusionSliver.java
index 17e84aa750d..017dbbfd795 100644
--- a/Mage.Sets/src/mage/cards/d/DiffusionSliver.java
+++ b/Mage.Sets/src/mage/cards/d/DiffusionSliver.java
@@ -50,7 +50,7 @@ import mage.target.TargetStackObject;
*
* @author LevelX2
*/
-public class DiffusionSliver extends CardImpl {
+public final class DiffusionSliver extends CardImpl {
public DiffusionSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DigThroughTime.java b/Mage.Sets/src/mage/cards/d/DigThroughTime.java
index 6c67940f530..e830664dff3 100644
--- a/Mage.Sets/src/mage/cards/d/DigThroughTime.java
+++ b/Mage.Sets/src/mage/cards/d/DigThroughTime.java
@@ -41,7 +41,7 @@ import mage.filter.FilterCard;
*
* @author emerald000
*/
-public class DigThroughTime extends CardImpl {
+public final class DigThroughTime extends CardImpl {
public DigThroughTime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{6}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DiligentExcavator.java b/Mage.Sets/src/mage/cards/d/DiligentExcavator.java
index 77c41894cb8..a0db64604b0 100644
--- a/Mage.Sets/src/mage/cards/d/DiligentExcavator.java
+++ b/Mage.Sets/src/mage/cards/d/DiligentExcavator.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class DiligentExcavator extends CardImpl {
+public final class DiligentExcavator extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a historic spell");
diff --git a/Mage.Sets/src/mage/cards/d/DiligentFarmhand.java b/Mage.Sets/src/mage/cards/d/DiligentFarmhand.java
index 3544c95618f..85ca3682e42 100644
--- a/Mage.Sets/src/mage/cards/d/DiligentFarmhand.java
+++ b/Mage.Sets/src/mage/cards/d/DiligentFarmhand.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class DiligentFarmhand extends CardImpl {
+public final class DiligentFarmhand extends CardImpl {
public DiligentFarmhand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
@@ -59,7 +59,7 @@ public class DiligentFarmhand extends CardImpl {
this.toughness = new MageInt(1);
// {1}{G}, Sacrifice Diligent Farmhand: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true), new ManaCostsImpl("{1}{G}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), new ManaCostsImpl("{1}{G}"));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
// If Diligent Farmhand is in a graveyard, effects from spells named Muscle Burst count it as a card named Muscle Burst.
diff --git a/Mage.Sets/src/mage/cards/d/DiluvianPrimordial.java b/Mage.Sets/src/mage/cards/d/DiluvianPrimordial.java
index 073afab4331..0da9252f5be 100644
--- a/Mage.Sets/src/mage/cards/d/DiluvianPrimordial.java
+++ b/Mage.Sets/src/mage/cards/d/DiluvianPrimordial.java
@@ -29,6 +29,7 @@ package mage.cards.d;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.ContinuousEffect;
@@ -39,9 +40,9 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.Predicates;
@@ -60,10 +61,10 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DiluvianPrimordial extends CardImpl {
+public final class DiluvianPrimordial extends CardImpl {
public DiluvianPrimordial(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
this.subtype.add(SubType.AVATAR);
this.power = new MageInt(5);
@@ -128,7 +129,7 @@ class DiluvianPrimordialEffect extends OneShotEffect {
Card targetCard = game.getCard(target.getFirstTarget());
if (targetCard != null) {
if (controller.chooseUse(outcome, "Cast " + targetCard.getLogName() + '?', source, game)) {
- if (controller.cast(targetCard.getSpellAbility(), game, true)) {
+ if (controller.cast(targetCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
ContinuousEffect effect = new DiluvianPrimordialReplacementEffect();
effect.setTargetPointer(new FixedTarget(targetCard.getId(), game.getState().getZoneChangeCounter(targetCard.getId())));
game.addEffect(effect, source);
diff --git a/Mage.Sets/src/mage/cards/d/DimensionalBreach.java b/Mage.Sets/src/mage/cards/d/DimensionalBreach.java
index 8e8788faf5b..68e2ce6f792 100644
--- a/Mage.Sets/src/mage/cards/d/DimensionalBreach.java
+++ b/Mage.Sets/src/mage/cards/d/DimensionalBreach.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class DimensionalBreach extends CardImpl {
+public final class DimensionalBreach extends CardImpl {
public DimensionalBreach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DimensionalInfiltrator.java b/Mage.Sets/src/mage/cards/d/DimensionalInfiltrator.java
index 561548c951d..288478882cf 100644
--- a/Mage.Sets/src/mage/cards/d/DimensionalInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/d/DimensionalInfiltrator.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class DimensionalInfiltrator extends CardImpl {
+public final class DimensionalInfiltrator extends CardImpl {
public DimensionalInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Diminish.java b/Mage.Sets/src/mage/cards/d/Diminish.java
index 996eb9f588d..00342425404 100644
--- a/Mage.Sets/src/mage/cards/d/Diminish.java
+++ b/Mage.Sets/src/mage/cards/d/Diminish.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Diminish extends CardImpl {
+public final class Diminish extends CardImpl {
public Diminish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DiminishingReturns.java b/Mage.Sets/src/mage/cards/d/DiminishingReturns.java
index 75540071dcb..e2b5c458d2c 100644
--- a/Mage.Sets/src/mage/cards/d/DiminishingReturns.java
+++ b/Mage.Sets/src/mage/cards/d/DiminishingReturns.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author Quercitron
*/
-public class DiminishingReturns extends CardImpl {
+public final class DiminishingReturns extends CardImpl {
public DiminishingReturns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DimirAqueduct.java b/Mage.Sets/src/mage/cards/d/DimirAqueduct.java
index 2bbf74e8eda..f954f318aca 100644
--- a/Mage.Sets/src/mage/cards/d/DimirAqueduct.java
+++ b/Mage.Sets/src/mage/cards/d/DimirAqueduct.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledPermanent;
/**
* @author Loki
*/
-public class DimirAqueduct extends CardImpl {
+public final class DimirAqueduct extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/d/DimirCharm.java b/Mage.Sets/src/mage/cards/d/DimirCharm.java
index 5168958ec1c..e1130c62bca 100644
--- a/Mage.Sets/src/mage/cards/d/DimirCharm.java
+++ b/Mage.Sets/src/mage/cards/d/DimirCharm.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class DimirCharm extends CardImpl {
+public final class DimirCharm extends CardImpl {
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creature with power 2 or less");
private static final FilterSpell filterSorcery = new FilterSpell("sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/d/DimirCluestone.java b/Mage.Sets/src/mage/cards/d/DimirCluestone.java
index c57ef24cb79..a01a1fd34a1 100644
--- a/Mage.Sets/src/mage/cards/d/DimirCluestone.java
+++ b/Mage.Sets/src/mage/cards/d/DimirCluestone.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*/
-public class DimirCluestone extends CardImpl {
+public final class DimirCluestone extends CardImpl {
public DimirCluestone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DimirCutpurse.java b/Mage.Sets/src/mage/cards/d/DimirCutpurse.java
index 2753bf3023a..b0675947df4 100644
--- a/Mage.Sets/src/mage/cards/d/DimirCutpurse.java
+++ b/Mage.Sets/src/mage/cards/d/DimirCutpurse.java
@@ -45,7 +45,7 @@ import mage.players.Player;
* @author jeffwadsworth
*
*/
-public class DimirCutpurse extends CardImpl {
+public final class DimirCutpurse extends CardImpl {
public DimirCutpurse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DimirDoppelganger.java b/Mage.Sets/src/mage/cards/d/DimirDoppelganger.java
index 22d47106c28..003472586e4 100644
--- a/Mage.Sets/src/mage/cards/d/DimirDoppelganger.java
+++ b/Mage.Sets/src/mage/cards/d/DimirDoppelganger.java
@@ -53,7 +53,7 @@ import mage.util.functions.ApplyToPermanent;
*
* @author jeffwadsworth
*/
-public class DimirDoppelganger extends CardImpl {
+public final class DimirDoppelganger extends CardImpl {
public DimirDoppelganger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DimirGuildgate.java b/Mage.Sets/src/mage/cards/d/DimirGuildgate.java
index be2a38b1967..bb02bdc0d7c 100644
--- a/Mage.Sets/src/mage/cards/d/DimirGuildgate.java
+++ b/Mage.Sets/src/mage/cards/d/DimirGuildgate.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class DimirGuildgate extends CardImpl {
+public final class DimirGuildgate extends CardImpl {
public DimirGuildgate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/DimirGuildmage.java b/Mage.Sets/src/mage/cards/d/DimirGuildmage.java
index 7a6dfe05f47..b492418586b 100644
--- a/Mage.Sets/src/mage/cards/d/DimirGuildmage.java
+++ b/Mage.Sets/src/mage/cards/d/DimirGuildmage.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class DimirGuildmage extends CardImpl {
+public final class DimirGuildmage extends CardImpl {
public DimirGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U/B}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/d/DimirHouseGuard.java b/Mage.Sets/src/mage/cards/d/DimirHouseGuard.java
index 5f533f44c54..87b587d966b 100644
--- a/Mage.Sets/src/mage/cards/d/DimirHouseGuard.java
+++ b/Mage.Sets/src/mage/cards/d/DimirHouseGuard.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class DimirHouseGuard extends CardImpl {
+public final class DimirHouseGuard extends CardImpl {
public DimirHouseGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DimirInfiltrator.java b/Mage.Sets/src/mage/cards/d/DimirInfiltrator.java
index 175b8d1c94c..c5a5b2c36ce 100644
--- a/Mage.Sets/src/mage/cards/d/DimirInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/d/DimirInfiltrator.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DimirInfiltrator extends CardImpl {
+public final class DimirInfiltrator extends CardImpl {
public DimirInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DimirKeyrune.java b/Mage.Sets/src/mage/cards/d/DimirKeyrune.java
index fdcf55097db..170a6edbaa9 100644
--- a/Mage.Sets/src/mage/cards/d/DimirKeyrune.java
+++ b/Mage.Sets/src/mage/cards/d/DimirKeyrune.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author LevelX2
*/
-public class DimirKeyrune extends CardImpl {
+public final class DimirKeyrune extends CardImpl {
public DimirKeyrune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DimirMachinations.java b/Mage.Sets/src/mage/cards/d/DimirMachinations.java
index 54aa74a23f2..b3cdba533f8 100644
--- a/Mage.Sets/src/mage/cards/d/DimirMachinations.java
+++ b/Mage.Sets/src/mage/cards/d/DimirMachinations.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author emerald000
*/
-public class DimirMachinations extends CardImpl {
+public final class DimirMachinations extends CardImpl {
public DimirMachinations(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DimirSignet.java b/Mage.Sets/src/mage/cards/d/DimirSignet.java
index e7b1d45a875..4b85e4762b5 100644
--- a/Mage.Sets/src/mage/cards/d/DimirSignet.java
+++ b/Mage.Sets/src/mage/cards/d/DimirSignet.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class DimirSignet extends CardImpl {
+public final class DimirSignet extends CardImpl {
public DimirSignet (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/d/DinOfTheFireherd.java b/Mage.Sets/src/mage/cards/d/DinOfTheFireherd.java
index 7f6a2613b63..4b1f066b83f 100644
--- a/Mage.Sets/src/mage/cards/d/DinOfTheFireherd.java
+++ b/Mage.Sets/src/mage/cards/d/DinOfTheFireherd.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class DinOfTheFireherd extends CardImpl {
+public final class DinOfTheFireherd extends CardImpl {
public DinOfTheFireherd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{B/R}{B/R}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/d/DingusEgg.java b/Mage.Sets/src/mage/cards/d/DingusEgg.java
index 3b4675aa087..6cd0ff74724 100644
--- a/Mage.Sets/src/mage/cards/d/DingusEgg.java
+++ b/Mage.Sets/src/mage/cards/d/DingusEgg.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Quercitron
*/
-public class DingusEgg extends CardImpl {
+public final class DingusEgg extends CardImpl {
public DingusEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DingusStaff.java b/Mage.Sets/src/mage/cards/d/DingusStaff.java
index 2eb47cc3b43..6c070e89179 100644
--- a/Mage.Sets/src/mage/cards/d/DingusStaff.java
+++ b/Mage.Sets/src/mage/cards/d/DingusStaff.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author ciaccona007
*/
-public class DingusStaff extends CardImpl {
+public final class DingusStaff extends CardImpl {
public DingusStaff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DinosaurHunter.java b/Mage.Sets/src/mage/cards/d/DinosaurHunter.java
index 24548b6edd9..44fb5cb84af 100644
--- a/Mage.Sets/src/mage/cards/d/DinosaurHunter.java
+++ b/Mage.Sets/src/mage/cards/d/DinosaurHunter.java
@@ -42,7 +42,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author JayDi85
*/
-public class DinosaurHunter extends CardImpl {
+public final class DinosaurHunter extends CardImpl {
public DinosaurHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DinosaurStampede.java b/Mage.Sets/src/mage/cards/d/DinosaurStampede.java
index 33ccd1f3181..3b0eabff14c 100644
--- a/Mage.Sets/src/mage/cards/d/DinosaurStampede.java
+++ b/Mage.Sets/src/mage/cards/d/DinosaurStampede.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class DinosaurStampede extends CardImpl {
+public final class DinosaurStampede extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("Attacking creatures");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Dinosaurs you control");
diff --git a/Mage.Sets/src/mage/cards/d/DinrovaHorror.java b/Mage.Sets/src/mage/cards/d/DinrovaHorror.java
index 2da7da6ea4b..85b2aa469c4 100644
--- a/Mage.Sets/src/mage/cards/d/DinrovaHorror.java
+++ b/Mage.Sets/src/mage/cards/d/DinrovaHorror.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class DinrovaHorror extends CardImpl {
+public final class DinrovaHorror extends CardImpl {
public DinrovaHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiplomacyOfTheWastes.java b/Mage.Sets/src/mage/cards/d/DiplomacyOfTheWastes.java
index 409e6758615..867fd52a6e0 100644
--- a/Mage.Sets/src/mage/cards/d/DiplomacyOfTheWastes.java
+++ b/Mage.Sets/src/mage/cards/d/DiplomacyOfTheWastes.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class DiplomacyOfTheWastes extends CardImpl {
+public final class DiplomacyOfTheWastes extends CardImpl {
public DiplomacyOfTheWastes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiplomaticEscort.java b/Mage.Sets/src/mage/cards/d/DiplomaticEscort.java
index 459e7c6b1bc..2574b74e815 100644
--- a/Mage.Sets/src/mage/cards/d/DiplomaticEscort.java
+++ b/Mage.Sets/src/mage/cards/d/DiplomaticEscort.java
@@ -49,7 +49,7 @@ import mage.target.TargetStackObject;
*
* @author LoneFox
*/
-public class DiplomaticEscort extends CardImpl {
+public final class DiplomaticEscort extends CardImpl {
private final static FilterStackObject filter = new FilterStackObject("spell or ability that targets a creature");
diff --git a/Mage.Sets/src/mage/cards/d/DiplomaticImmunity.java b/Mage.Sets/src/mage/cards/d/DiplomaticImmunity.java
index 3f0a8bc376c..d4d7b5e2b98 100644
--- a/Mage.Sets/src/mage/cards/d/DiplomaticImmunity.java
+++ b/Mage.Sets/src/mage/cards/d/DiplomaticImmunity.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DiplomaticImmunity extends CardImpl {
+public final class DiplomaticImmunity extends CardImpl {
public DiplomaticImmunity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DireFleetCaptain.java b/Mage.Sets/src/mage/cards/d/DireFleetCaptain.java
index cf82dab8751..7f6a73d1a93 100644
--- a/Mage.Sets/src/mage/cards/d/DireFleetCaptain.java
+++ b/Mage.Sets/src/mage/cards/d/DireFleetCaptain.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author TheElk801
*/
-public class DireFleetCaptain extends CardImpl {
+public final class DireFleetCaptain extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Pirate");
diff --git a/Mage.Sets/src/mage/cards/d/DireFleetDaredevil.java b/Mage.Sets/src/mage/cards/d/DireFleetDaredevil.java
index 1c4436bd3c2..47e5cc9ac9d 100644
--- a/Mage.Sets/src/mage/cards/d/DireFleetDaredevil.java
+++ b/Mage.Sets/src/mage/cards/d/DireFleetDaredevil.java
@@ -66,7 +66,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DireFleetDaredevil extends CardImpl {
+public final class DireFleetDaredevil extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card from an opponent's graveyard");
diff --git a/Mage.Sets/src/mage/cards/d/DireFleetHoarder.java b/Mage.Sets/src/mage/cards/d/DireFleetHoarder.java
index 44ea3843469..48e03858bec 100644
--- a/Mage.Sets/src/mage/cards/d/DireFleetHoarder.java
+++ b/Mage.Sets/src/mage/cards/d/DireFleetHoarder.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author TheElk801
*/
-public class DireFleetHoarder extends CardImpl {
+public final class DireFleetHoarder extends CardImpl {
public DireFleetHoarder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DireFleetInterloper.java b/Mage.Sets/src/mage/cards/d/DireFleetInterloper.java
index f0ccc16a903..a9a95c45e1a 100644
--- a/Mage.Sets/src/mage/cards/d/DireFleetInterloper.java
+++ b/Mage.Sets/src/mage/cards/d/DireFleetInterloper.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class DireFleetInterloper extends CardImpl {
+public final class DireFleetInterloper extends CardImpl {
public DireFleetInterloper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DireFleetNeckbreaker.java b/Mage.Sets/src/mage/cards/d/DireFleetNeckbreaker.java
index d43b15d8f4f..dae5e1e424e 100644
--- a/Mage.Sets/src/mage/cards/d/DireFleetNeckbreaker.java
+++ b/Mage.Sets/src/mage/cards/d/DireFleetNeckbreaker.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author JayDi85
*/
-public class DireFleetNeckbreaker extends CardImpl {
+public final class DireFleetNeckbreaker extends CardImpl {
private static final FilterAttackingCreature filterYourAttackingPirates = new FilterAttackingCreature("Attacking Pirates");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DireFleetPoisoner.java b/Mage.Sets/src/mage/cards/d/DireFleetPoisoner.java
index bb266298596..d8e97804c0f 100644
--- a/Mage.Sets/src/mage/cards/d/DireFleetPoisoner.java
+++ b/Mage.Sets/src/mage/cards/d/DireFleetPoisoner.java
@@ -1,95 +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.d;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.Effect;
-import mage.abilities.effects.common.continuous.BoostTargetEffect;
-import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
-import mage.abilities.keyword.DeathtouchAbility;
-import mage.abilities.keyword.FlashAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.SubType;
-import mage.constants.TargetController;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.permanent.AttackingPredicate;
-import mage.filter.predicate.permanent.ControllerPredicate;
-import mage.target.common.TargetCreaturePermanent;
-
-/**
- *
- * @author LevelX2
- */
-public class DireFleetPoisoner extends CardImpl {
-
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.PIRATE, "attacking Pirate");
-
- static {
- filter.add(new ControllerPredicate(TargetController.YOU));
- filter.add(new AttackingPredicate());
- }
-
- public DireFleetPoisoner(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
-
- this.subtype.add(SubType.HUMAN);
- this.subtype.add(SubType.PIRATE);
- this.power = new MageInt(2);
- this.toughness = new MageInt(2);
-
- // Flash
- this.addAbility(FlashAbility.getInstance());
-
- // Deathtouch
- this.addAbility(DeathtouchAbility.getInstance());
-
- // When Dire Fleet Poisoner enters the battlefield, target attacking Pirate you control gets +1/+1 and gains deathtouch until end of turn.
- Effect effect = new BoostTargetEffect(1, 1, Duration.EndOfTurn);
- effect.setText("target attacking Pirate you control gets +1/+1");
- EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(effect);
- effect = new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn);
- effect.setText("and gains deathtouch until end of turn");
- ability.addEffect(effect);
- ability.addTarget(new TargetCreaturePermanent(filter));
- this.addAbility(ability);
- }
-
- public DireFleetPoisoner(final DireFleetPoisoner card) {
- super(card);
- }
-
- @Override
- public DireFleetPoisoner copy() {
- return new DireFleetPoisoner(this);
- }
-}
+/*
+ * 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.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
+import mage.abilities.keyword.DeathtouchAbility;
+import mage.abilities.keyword.FlashAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.constants.TargetController;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.AttackingPredicate;
+import mage.filter.predicate.permanent.ControllerPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class DireFleetPoisoner extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.PIRATE, "attacking Pirate");
+
+ static {
+ filter.add(new ControllerPredicate(TargetController.YOU));
+ filter.add(new AttackingPredicate());
+ }
+
+ public DireFleetPoisoner(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.PIRATE);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Flash
+ this.addAbility(FlashAbility.getInstance());
+
+ // Deathtouch
+ this.addAbility(DeathtouchAbility.getInstance());
+
+ // When Dire Fleet Poisoner enters the battlefield, target attacking Pirate you control gets +1/+1 and gains deathtouch until end of turn.
+ Effect effect = new BoostTargetEffect(1, 1, Duration.EndOfTurn);
+ effect.setText("target attacking Pirate you control gets +1/+1");
+ EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(effect);
+ effect = new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn);
+ effect.setText("and gains deathtouch until end of turn");
+ ability.addEffect(effect);
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public DireFleetPoisoner(final DireFleetPoisoner card) {
+ super(card);
+ }
+
+ @Override
+ public DireFleetPoisoner copy() {
+ return new DireFleetPoisoner(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/d/DireFleetRavager.java b/Mage.Sets/src/mage/cards/d/DireFleetRavager.java
index c585cc62868..3addce644e7 100644
--- a/Mage.Sets/src/mage/cards/d/DireFleetRavager.java
+++ b/Mage.Sets/src/mage/cards/d/DireFleetRavager.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class DireFleetRavager extends CardImpl {
+public final class DireFleetRavager extends CardImpl {
public DireFleetRavager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DireUndercurrents.java b/Mage.Sets/src/mage/cards/d/DireUndercurrents.java
index 6b10d57b402..9c248120dfd 100644
--- a/Mage.Sets/src/mage/cards/d/DireUndercurrents.java
+++ b/Mage.Sets/src/mage/cards/d/DireUndercurrents.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class DireUndercurrents extends CardImpl {
+public final class DireUndercurrents extends CardImpl {
private final static String rule1 = "Whenever a blue creature enters the battlefield under your control, you may have target player draw a card.";
private final static String rule2 = "Whenever a black creature enters the battlefield under your control, you may have target player discard a card.";
diff --git a/Mage.Sets/src/mage/cards/d/DireWolves.java b/Mage.Sets/src/mage/cards/d/DireWolves.java
index 224cb7f92bd..18763fdd2b4 100644
--- a/Mage.Sets/src/mage/cards/d/DireWolves.java
+++ b/Mage.Sets/src/mage/cards/d/DireWolves.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author L_J
*/
-public class DireWolves extends CardImpl {
+public final class DireWolves extends CardImpl {
private static final String rule = "{this} has banding as long as you control a Plains.";
private static final FilterLandPermanent filter = new FilterLandPermanent("a Plains");
diff --git a/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java b/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java
index 775e1238f3d..a2050ce0577 100644
--- a/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java
+++ b/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class DiregrafCaptain extends CardImpl {
+public final class DiregrafCaptain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie");
diff --git a/Mage.Sets/src/mage/cards/d/DiregrafColossus.java b/Mage.Sets/src/mage/cards/d/DiregrafColossus.java
index 019bd4899ab..1dd5d455aa8 100644
--- a/Mage.Sets/src/mage/cards/d/DiregrafColossus.java
+++ b/Mage.Sets/src/mage/cards/d/DiregrafColossus.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class DiregrafColossus extends CardImpl {
+public final class DiregrafColossus extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a Zombie spell");
diff --git a/Mage.Sets/src/mage/cards/d/DiregrafEscort.java b/Mage.Sets/src/mage/cards/d/DiregrafEscort.java
index 0d904353188..702d6a69975 100644
--- a/Mage.Sets/src/mage/cards/d/DiregrafEscort.java
+++ b/Mage.Sets/src/mage/cards/d/DiregrafEscort.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author noxx
*/
-public class DiregrafEscort extends CardImpl {
+public final class DiregrafEscort extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, both creatures have protection from Zombies";
diff --git a/Mage.Sets/src/mage/cards/d/DiregrafGhoul.java b/Mage.Sets/src/mage/cards/d/DiregrafGhoul.java
index a7d4bb9eb94..45716980ddd 100644
--- a/Mage.Sets/src/mage/cards/d/DiregrafGhoul.java
+++ b/Mage.Sets/src/mage/cards/d/DiregrafGhoul.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author nantuko
*/
-public class DiregrafGhoul extends CardImpl {
+public final class DiregrafGhoul extends CardImpl {
public DiregrafGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DirgeOfDread.java b/Mage.Sets/src/mage/cards/d/DirgeOfDread.java
index a3bd30267a1..9ce7dc72e83 100644
--- a/Mage.Sets/src/mage/cards/d/DirgeOfDread.java
+++ b/Mage.Sets/src/mage/cards/d/DirgeOfDread.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DirgeOfDread extends CardImpl {
+public final class DirgeOfDread extends CardImpl {
public DirgeOfDread(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DirgurNemesis.java b/Mage.Sets/src/mage/cards/d/DirgurNemesis.java
index 9cc94ab4fe7..3b1a338caf1 100644
--- a/Mage.Sets/src/mage/cards/d/DirgurNemesis.java
+++ b/Mage.Sets/src/mage/cards/d/DirgurNemesis.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DirgurNemesis extends CardImpl {
+public final class DirgurNemesis extends CardImpl {
public DirgurNemesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DirtcowlWurm.java b/Mage.Sets/src/mage/cards/d/DirtcowlWurm.java
index b518f1a69ac..5328d3de142 100644
--- a/Mage.Sets/src/mage/cards/d/DirtcowlWurm.java
+++ b/Mage.Sets/src/mage/cards/d/DirtcowlWurm.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class DirtcowlWurm extends CardImpl {
+public final class DirtcowlWurm extends CardImpl {
public DirtcowlWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DirtwaterWraith.java b/Mage.Sets/src/mage/cards/d/DirtwaterWraith.java
index d837d294fe8..588695a569d 100644
--- a/Mage.Sets/src/mage/cards/d/DirtwaterWraith.java
+++ b/Mage.Sets/src/mage/cards/d/DirtwaterWraith.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class DirtwaterWraith extends CardImpl {
+public final class DirtwaterWraith extends CardImpl {
public DirtwaterWraith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DirtyWererat.java b/Mage.Sets/src/mage/cards/d/DirtyWererat.java
index 54c5df8b6ac..1b9f4dec584 100644
--- a/Mage.Sets/src/mage/cards/d/DirtyWererat.java
+++ b/Mage.Sets/src/mage/cards/d/DirtyWererat.java
@@ -53,7 +53,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class DirtyWererat extends CardImpl {
+public final class DirtyWererat extends CardImpl {
public DirtyWererat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Disallow.java b/Mage.Sets/src/mage/cards/d/Disallow.java
index b5cc46309fa..4835de72c04 100644
--- a/Mage.Sets/src/mage/cards/d/Disallow.java
+++ b/Mage.Sets/src/mage/cards/d/Disallow.java
@@ -38,7 +38,7 @@ import mage.target.TargetStackObject;
/**
* @author JRHerlehy
*/
-public class Disallow extends CardImpl {
+public final class Disallow extends CardImpl {
public Disallow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DisappearingAct.java b/Mage.Sets/src/mage/cards/d/DisappearingAct.java
index cd52dd30010..ae1339e77a9 100644
--- a/Mage.Sets/src/mage/cards/d/DisappearingAct.java
+++ b/Mage.Sets/src/mage/cards/d/DisappearingAct.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class DisappearingAct extends CardImpl {
+public final class DisappearingAct extends CardImpl {
public DisappearingAct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Disarm.java b/Mage.Sets/src/mage/cards/d/Disarm.java
index 9b745dee945..8049be09e01 100644
--- a/Mage.Sets/src/mage/cards/d/Disarm.java
+++ b/Mage.Sets/src/mage/cards/d/Disarm.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Derpthemeus
*/
-public class Disarm extends CardImpl {
+public final class Disarm extends CardImpl {
public Disarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DisasterRadius.java b/Mage.Sets/src/mage/cards/d/DisasterRadius.java
index 2acde892295..39a392b5461 100644
--- a/Mage.Sets/src/mage/cards/d/DisasterRadius.java
+++ b/Mage.Sets/src/mage/cards/d/DisasterRadius.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class DisasterRadius extends CardImpl {
+public final class DisasterRadius extends CardImpl {
public DisasterRadius(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfBolas.java b/Mage.Sets/src/mage/cards/d/DiscipleOfBolas.java
index 875aac38b3d..3eef5a77da2 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfBolas.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfBolas.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class DiscipleOfBolas extends CardImpl {
+public final class DiscipleOfBolas extends CardImpl {
public DiscipleOfBolas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfDeceit.java b/Mage.Sets/src/mage/cards/d/DiscipleOfDeceit.java
index 86498c199a7..fde011ffe55 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfDeceit.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfDeceit.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class DiscipleOfDeceit extends CardImpl {
+public final class DiscipleOfDeceit extends CardImpl {
public DiscipleOfDeceit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfGrace.java b/Mage.Sets/src/mage/cards/d/DiscipleOfGrace.java
index b34a026f320..ef282b2e021 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfGrace.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfGrace.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
/**
* @author Backfir3
*/
-public class DiscipleOfGrace extends CardImpl {
+public final class DiscipleOfGrace extends CardImpl {
public DiscipleOfGrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfGriselbrand.java b/Mage.Sets/src/mage/cards/d/DiscipleOfGriselbrand.java
index c3d8b94d790..4902cb1df7a 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfGriselbrand.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfGriselbrand.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class DiscipleOfGriselbrand extends CardImpl {
+public final class DiscipleOfGriselbrand extends CardImpl {
public DiscipleOfGriselbrand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfKangee.java b/Mage.Sets/src/mage/cards/d/DiscipleOfKangee.java
index 2b9013af4c9..f352a7625e7 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfKangee.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfKangee.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DiscipleOfKangee extends CardImpl {
+public final class DiscipleOfKangee extends CardImpl {
public DiscipleOfKangee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfLaw.java b/Mage.Sets/src/mage/cards/d/DiscipleOfLaw.java
index b7834c8ebb4..4b795943275 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfLaw.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfLaw.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class DiscipleOfLaw extends CardImpl {
+public final class DiscipleOfLaw extends CardImpl {
public DiscipleOfLaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfMalice.java b/Mage.Sets/src/mage/cards/d/DiscipleOfMalice.java
index 3be5981f699..3526fe506e7 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfMalice.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfMalice.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DiscipleOfMalice extends CardImpl {
+public final class DiscipleOfMalice extends CardImpl {
public DiscipleOfMalice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfPhenax.java b/Mage.Sets/src/mage/cards/d/DiscipleOfPhenax.java
index 47f1ff2549c..fc840f317e6 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfPhenax.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfPhenax.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class DiscipleOfPhenax extends CardImpl {
+public final class DiscipleOfPhenax extends CardImpl {
public DiscipleOfPhenax(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfTeveshSzat.java b/Mage.Sets/src/mage/cards/d/DiscipleOfTeveshSzat.java
index 4e68a256aa1..17bf5ad8ba2 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfTeveshSzat.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfTeveshSzat.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DiscipleOfTeveshSzat extends CardImpl {
+public final class DiscipleOfTeveshSzat extends CardImpl {
public DiscipleOfTeveshSzat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfTheOldWays.java b/Mage.Sets/src/mage/cards/d/DiscipleOfTheOldWays.java
index ad61ced9b7b..0a3fb4c3dcd 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfTheOldWays.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfTheOldWays.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class DiscipleOfTheOldWays extends CardImpl {
+public final class DiscipleOfTheOldWays extends CardImpl {
public DiscipleOfTheOldWays(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfTheRing.java b/Mage.Sets/src/mage/cards/d/DiscipleOfTheRing.java
index 3b5dedc9dc8..c7fd7777957 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfTheRing.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfTheRing.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DiscipleOfTheRing extends CardImpl {
+public final class DiscipleOfTheRing extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfTheVault.java b/Mage.Sets/src/mage/cards/d/DiscipleOfTheVault.java
index 540e976ec7f..fb85bff1976 100644
--- a/Mage.Sets/src/mage/cards/d/DiscipleOfTheVault.java
+++ b/Mage.Sets/src/mage/cards/d/DiscipleOfTheVault.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author emerald000
*/
-public class DiscipleOfTheVault extends CardImpl {
+public final class DiscipleOfTheVault extends CardImpl {
public DiscipleOfTheVault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Discombobulate.java b/Mage.Sets/src/mage/cards/d/Discombobulate.java
index 1ed49ce570d..e34c868839f 100644
--- a/Mage.Sets/src/mage/cards/d/Discombobulate.java
+++ b/Mage.Sets/src/mage/cards/d/Discombobulate.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX
*/
-public class Discombobulate extends CardImpl {
+public final class Discombobulate extends CardImpl {
public Discombobulate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DisdainfulStroke.java b/Mage.Sets/src/mage/cards/d/DisdainfulStroke.java
index d62675c885f..cfbfab8aa37 100644
--- a/Mage.Sets/src/mage/cards/d/DisdainfulStroke.java
+++ b/Mage.Sets/src/mage/cards/d/DisdainfulStroke.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author emerald000
*/
-public class DisdainfulStroke extends CardImpl {
+public final class DisdainfulStroke extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell with converted mana cost 4 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DiseaseCarriers.java b/Mage.Sets/src/mage/cards/d/DiseaseCarriers.java
index f116183b7a2..59a1308c3c1 100644
--- a/Mage.Sets/src/mage/cards/d/DiseaseCarriers.java
+++ b/Mage.Sets/src/mage/cards/d/DiseaseCarriers.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DiseaseCarriers extends CardImpl {
+public final class DiseaseCarriers extends CardImpl {
public DiseaseCarriers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Disembowel.java b/Mage.Sets/src/mage/cards/d/Disembowel.java
index f03da466cc9..a567ecd1e40 100644
--- a/Mage.Sets/src/mage/cards/d/Disembowel.java
+++ b/Mage.Sets/src/mage/cards/d/Disembowel.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Disembowel extends CardImpl {
+public final class Disembowel extends CardImpl {
public Disembowel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Disempower.java b/Mage.Sets/src/mage/cards/d/Disempower.java
index cae808826a5..38f98f005a1 100644
--- a/Mage.Sets/src/mage/cards/d/Disempower.java
+++ b/Mage.Sets/src/mage/cards/d/Disempower.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class Disempower extends CardImpl {
+public final class Disempower extends CardImpl {
public Disempower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Disenchant.java b/Mage.Sets/src/mage/cards/d/Disenchant.java
index 4cf61887db0..11e7cfa416c 100644
--- a/Mage.Sets/src/mage/cards/d/Disenchant.java
+++ b/Mage.Sets/src/mage/cards/d/Disenchant.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class Disenchant extends CardImpl {
+public final class Disenchant extends CardImpl {
public Disenchant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Disentomb.java b/Mage.Sets/src/mage/cards/d/Disentomb.java
index f6e3a2a892a..2006da07389 100644
--- a/Mage.Sets/src/mage/cards/d/Disentomb.java
+++ b/Mage.Sets/src/mage/cards/d/Disentomb.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Disentomb extends CardImpl {
+public final class Disentomb extends CardImpl {
public Disentomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Disfigure.java b/Mage.Sets/src/mage/cards/d/Disfigure.java
index de3b629619a..d49d2616383 100644
--- a/Mage.Sets/src/mage/cards/d/Disfigure.java
+++ b/Mage.Sets/src/mage/cards/d/Disfigure.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Disfigure extends CardImpl {
+public final class Disfigure extends CardImpl {
public Disfigure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Disharmony.java b/Mage.Sets/src/mage/cards/d/Disharmony.java
index 42d58c00a5f..3aa36b97205 100644
--- a/Mage.Sets/src/mage/cards/d/Disharmony.java
+++ b/Mage.Sets/src/mage/cards/d/Disharmony.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author TheElk801
*/
-public class Disharmony extends CardImpl {
+public final class Disharmony extends CardImpl {
public Disharmony(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/Disintegrate.java b/Mage.Sets/src/mage/cards/d/Disintegrate.java
index ea60cfb58a3..3bf1734408e 100644
--- a/Mage.Sets/src/mage/cards/d/Disintegrate.java
+++ b/Mage.Sets/src/mage/cards/d/Disintegrate.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author dustinconrad
*/
-public class Disintegrate extends CardImpl {
+public final class Disintegrate extends CardImpl {
public Disintegrate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DismalBackwater.java b/Mage.Sets/src/mage/cards/d/DismalBackwater.java
index a9a0c243406..08820919bc5 100644
--- a/Mage.Sets/src/mage/cards/d/DismalBackwater.java
+++ b/Mage.Sets/src/mage/cards/d/DismalBackwater.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class DismalBackwater extends CardImpl {
+public final class DismalBackwater extends CardImpl {
public DismalBackwater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/DismalFailure.java b/Mage.Sets/src/mage/cards/d/DismalFailure.java
index 8c0ed81fbc6..fd6f07a26c5 100644
--- a/Mage.Sets/src/mage/cards/d/DismalFailure.java
+++ b/Mage.Sets/src/mage/cards/d/DismalFailure.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class DismalFailure extends CardImpl {
+public final class DismalFailure extends CardImpl {
public DismalFailure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Dismantle.java b/Mage.Sets/src/mage/cards/d/Dismantle.java
index 0ae38e25cf6..b30737c8c12 100644
--- a/Mage.Sets/src/mage/cards/d/Dismantle.java
+++ b/Mage.Sets/src/mage/cards/d/Dismantle.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Styxo
*/
-public class Dismantle extends CardImpl {
+public final class Dismantle extends CardImpl {
public Dismantle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DismantlingBlow.java b/Mage.Sets/src/mage/cards/d/DismantlingBlow.java
index 2ed125be3e2..f81b28511ed 100644
--- a/Mage.Sets/src/mage/cards/d/DismantlingBlow.java
+++ b/Mage.Sets/src/mage/cards/d/DismantlingBlow.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class DismantlingBlow extends CardImpl {
+public final class DismantlingBlow extends CardImpl {
public DismantlingBlow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Dismember.java b/Mage.Sets/src/mage/cards/d/Dismember.java
index dbcde49edfc..b10b22bc287 100644
--- a/Mage.Sets/src/mage/cards/d/Dismember.java
+++ b/Mage.Sets/src/mage/cards/d/Dismember.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class Dismember extends CardImpl {
+public final class Dismember extends CardImpl {
public Dismember (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B/P}{B/P}");
diff --git a/Mage.Sets/src/mage/cards/d/Dismiss.java b/Mage.Sets/src/mage/cards/d/Dismiss.java
index 0051dff3d52..ebd23d7a954 100644
--- a/Mage.Sets/src/mage/cards/d/Dismiss.java
+++ b/Mage.Sets/src/mage/cards/d/Dismiss.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class Dismiss extends CardImpl {
+public final class Dismiss extends CardImpl {
public Dismiss(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DismissIntoDream.java b/Mage.Sets/src/mage/cards/d/DismissIntoDream.java
index 20be78c1e0d..0a01455650f 100644
--- a/Mage.Sets/src/mage/cards/d/DismissIntoDream.java
+++ b/Mage.Sets/src/mage/cards/d/DismissIntoDream.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class DismissIntoDream extends CardImpl {
+public final class DismissIntoDream extends CardImpl {
public DismissIntoDream(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{6}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Disorder.java b/Mage.Sets/src/mage/cards/d/Disorder.java
index dc4a4bd135f..21ede22f1f5 100644
--- a/Mage.Sets/src/mage/cards/d/Disorder.java
+++ b/Mage.Sets/src/mage/cards/d/Disorder.java
@@ -47,7 +47,7 @@ import mage.players.Player;
* @author LoneFox
*/
-public class Disorder extends CardImpl {
+public final class Disorder extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creature");
diff --git a/Mage.Sets/src/mage/cards/d/Disorient.java b/Mage.Sets/src/mage/cards/d/Disorient.java
index 56fdba4a6a9..5f5af17cfb0 100644
--- a/Mage.Sets/src/mage/cards/d/Disorient.java
+++ b/Mage.Sets/src/mage/cards/d/Disorient.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Disorient extends CardImpl {
+public final class Disorient extends CardImpl {
public Disorient(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DisownedAncestor.java b/Mage.Sets/src/mage/cards/d/DisownedAncestor.java
index 9ca6c401a04..6732abdad0a 100644
--- a/Mage.Sets/src/mage/cards/d/DisownedAncestor.java
+++ b/Mage.Sets/src/mage/cards/d/DisownedAncestor.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DisownedAncestor extends CardImpl {
+public final class DisownedAncestor extends CardImpl {
public DisownedAncestor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Dispatch.java b/Mage.Sets/src/mage/cards/d/Dispatch.java
index 1348a804a82..cc65c31973b 100644
--- a/Mage.Sets/src/mage/cards/d/Dispatch.java
+++ b/Mage.Sets/src/mage/cards/d/Dispatch.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Dispatch extends CardImpl {
+public final class Dispatch extends CardImpl {
public Dispatch (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Dispel.java b/Mage.Sets/src/mage/cards/d/Dispel.java
index 05d31ea4f17..8e17ed48409 100644
--- a/Mage.Sets/src/mage/cards/d/Dispel.java
+++ b/Mage.Sets/src/mage/cards/d/Dispel.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class Dispel extends CardImpl {
+public final class Dispel extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant spell");
diff --git a/Mage.Sets/src/mage/cards/d/DispellersCapsule.java b/Mage.Sets/src/mage/cards/d/DispellersCapsule.java
index e67ef3cb888..90aa8b75922 100644
--- a/Mage.Sets/src/mage/cards/d/DispellersCapsule.java
+++ b/Mage.Sets/src/mage/cards/d/DispellersCapsule.java
@@ -46,7 +46,7 @@ import mage.abilities.costs.common.TapSourceCost;
*
* @author Loki
*/
-public class DispellersCapsule extends CardImpl {
+public final class DispellersCapsule extends CardImpl {
public DispellersCapsule (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DispenseJustice.java b/Mage.Sets/src/mage/cards/d/DispenseJustice.java
index 8b3794363d3..8c607d90b30 100644
--- a/Mage.Sets/src/mage/cards/d/DispenseJustice.java
+++ b/Mage.Sets/src/mage/cards/d/DispenseJustice.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author maurer.it_at_gmail.com
*/
-public class DispenseJustice extends CardImpl {
+public final class DispenseJustice extends CardImpl {
public DispenseJustice (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DispersalShield.java b/Mage.Sets/src/mage/cards/d/DispersalShield.java
index 3d3f144e04d..87987a944c0 100644
--- a/Mage.Sets/src/mage/cards/d/DispersalShield.java
+++ b/Mage.Sets/src/mage/cards/d/DispersalShield.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author nigelzor
*/
-public class DispersalShield extends CardImpl {
+public final class DispersalShield extends CardImpl {
public DispersalShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DispersalTechnician.java b/Mage.Sets/src/mage/cards/d/DispersalTechnician.java
index c7cba6a9e1d..17bb23002f8 100644
--- a/Mage.Sets/src/mage/cards/d/DispersalTechnician.java
+++ b/Mage.Sets/src/mage/cards/d/DispersalTechnician.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author spjspj
*/
-public class DispersalTechnician extends CardImpl {
+public final class DispersalTechnician extends CardImpl {
public DispersalTechnician(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Disperse.java b/Mage.Sets/src/mage/cards/d/Disperse.java
index 207e8cbb2c7..6c9d00b1a56 100644
--- a/Mage.Sets/src/mage/cards/d/Disperse.java
+++ b/Mage.Sets/src/mage/cards/d/Disperse.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author nantuko
*/
-public class Disperse extends CardImpl {
+public final class Disperse extends CardImpl {
public Disperse (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DispersingOrb.java b/Mage.Sets/src/mage/cards/d/DispersingOrb.java
index 634dc1a68f8..31c83e7ec98 100644
--- a/Mage.Sets/src/mage/cards/d/DispersingOrb.java
+++ b/Mage.Sets/src/mage/cards/d/DispersingOrb.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Derpthemeus
*/
-public class DispersingOrb extends CardImpl {
+public final class DispersingOrb extends CardImpl {
public DispersingOrb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Displace.java b/Mage.Sets/src/mage/cards/d/Displace.java
index ee2e1c822ca..6e68937282e 100644
--- a/Mage.Sets/src/mage/cards/d/Displace.java
+++ b/Mage.Sets/src/mage/cards/d/Displace.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class Displace extends CardImpl {
+public final class Displace extends CardImpl {
public Displace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DisplacementWave.java b/Mage.Sets/src/mage/cards/d/DisplacementWave.java
index 16b55087277..9a43a14c40f 100644
--- a/Mage.Sets/src/mage/cards/d/DisplacementWave.java
+++ b/Mage.Sets/src/mage/cards/d/DisplacementWave.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
* @author fireshoes
*/
-public class DisplacementWave extends CardImpl {
+public final class DisplacementWave extends CardImpl {
public DisplacementWave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DisplayOfDominance.java b/Mage.Sets/src/mage/cards/d/DisplayOfDominance.java
index bd5c93b5609..f687946b008 100644
--- a/Mage.Sets/src/mage/cards/d/DisplayOfDominance.java
+++ b/Mage.Sets/src/mage/cards/d/DisplayOfDominance.java
@@ -54,7 +54,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class DisplayOfDominance extends CardImpl {
+public final class DisplayOfDominance extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("blue or black noncreature permanent");
diff --git a/Mage.Sets/src/mage/cards/d/DisposalMummy.java b/Mage.Sets/src/mage/cards/d/DisposalMummy.java
index d33f8ce436b..1270d7641c1 100644
--- a/Mage.Sets/src/mage/cards/d/DisposalMummy.java
+++ b/Mage.Sets/src/mage/cards/d/DisposalMummy.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
*
* @author Archer262
*/
-public class DisposalMummy extends CardImpl {
+public final class DisposalMummy extends CardImpl {
public DisposalMummy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Dispossess.java b/Mage.Sets/src/mage/cards/d/Dispossess.java
index 006cab12cec..6016a4f5e92 100644
--- a/Mage.Sets/src/mage/cards/d/Dispossess.java
+++ b/Mage.Sets/src/mage/cards/d/Dispossess.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class Dispossess extends CardImpl {
+public final class Dispossess extends CardImpl {
public Dispossess(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Disrupt.java b/Mage.Sets/src/mage/cards/d/Disrupt.java
index 3eeabecaac2..fac4e4c4146 100644
--- a/Mage.Sets/src/mage/cards/d/Disrupt.java
+++ b/Mage.Sets/src/mage/cards/d/Disrupt.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
* @author LoneFox
*/
-public class Disrupt extends CardImpl {
+public final class Disrupt extends CardImpl {
public Disrupt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DisruptDecorum.java b/Mage.Sets/src/mage/cards/d/DisruptDecorum.java
index a2a4cd0f571..91e33b3aba2 100644
--- a/Mage.Sets/src/mage/cards/d/DisruptDecorum.java
+++ b/Mage.Sets/src/mage/cards/d/DisruptDecorum.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class DisruptDecorum extends CardImpl {
+public final class DisruptDecorum extends CardImpl {
public DisruptDecorum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DisruptingScepter.java b/Mage.Sets/src/mage/cards/d/DisruptingScepter.java
index adcee5ab63e..9a2f790987b 100644
--- a/Mage.Sets/src/mage/cards/d/DisruptingScepter.java
+++ b/Mage.Sets/src/mage/cards/d/DisruptingScepter.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class DisruptingScepter extends CardImpl {
+public final class DisruptingScepter extends CardImpl {
public DisruptingScepter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DisruptingShoal.java b/Mage.Sets/src/mage/cards/d/DisruptingShoal.java
index bf8e24914e0..d45276c981f 100644
--- a/Mage.Sets/src/mage/cards/d/DisruptingShoal.java
+++ b/Mage.Sets/src/mage/cards/d/DisruptingShoal.java
@@ -56,7 +56,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class DisruptingShoal extends CardImpl {
+public final class DisruptingShoal extends CardImpl {
public DisruptingShoal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DisruptionAura.java b/Mage.Sets/src/mage/cards/d/DisruptionAura.java
index dc2849853f2..30b452aa0c9 100644
--- a/Mage.Sets/src/mage/cards/d/DisruptionAura.java
+++ b/Mage.Sets/src/mage/cards/d/DisruptionAura.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author Plopman
*/
-public class DisruptionAura extends CardImpl {
+public final class DisruptionAura extends CardImpl {
public DisruptionAura(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DisruptivePitmage.java b/Mage.Sets/src/mage/cards/d/DisruptivePitmage.java
index 482b5151383..2e483dad87b 100644
--- a/Mage.Sets/src/mage/cards/d/DisruptivePitmage.java
+++ b/Mage.Sets/src/mage/cards/d/DisruptivePitmage.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class DisruptivePitmage extends CardImpl {
+public final class DisruptivePitmage extends CardImpl {
public DisruptivePitmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DisruptiveStudent.java b/Mage.Sets/src/mage/cards/d/DisruptiveStudent.java
index c2e40f6a770..0b1c23aac86 100644
--- a/Mage.Sets/src/mage/cards/d/DisruptiveStudent.java
+++ b/Mage.Sets/src/mage/cards/d/DisruptiveStudent.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class DisruptiveStudent extends CardImpl {
+public final class DisruptiveStudent extends CardImpl {
public DisruptiveStudent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DissensionInTheRanks.java b/Mage.Sets/src/mage/cards/d/DissensionInTheRanks.java
index dc32156cd39..4ff0069198f 100644
--- a/Mage.Sets/src/mage/cards/d/DissensionInTheRanks.java
+++ b/Mage.Sets/src/mage/cards/d/DissensionInTheRanks.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DissensionInTheRanks extends CardImpl {
+public final class DissensionInTheRanks extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("blocking creature");
diff --git a/Mage.Sets/src/mage/cards/d/DissentersDeliverance.java b/Mage.Sets/src/mage/cards/d/DissentersDeliverance.java
index 015ea34ebb6..6006f208557 100644
--- a/Mage.Sets/src/mage/cards/d/DissentersDeliverance.java
+++ b/Mage.Sets/src/mage/cards/d/DissentersDeliverance.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author fireshoes
*/
-public class DissentersDeliverance extends CardImpl {
+public final class DissentersDeliverance extends CardImpl {
public DissentersDeliverance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/Dissipate.java b/Mage.Sets/src/mage/cards/d/Dissipate.java
index f0a129990ac..cae2720ff18 100644
--- a/Mage.Sets/src/mage/cards/d/Dissipate.java
+++ b/Mage.Sets/src/mage/cards/d/Dissipate.java
@@ -38,7 +38,7 @@ import mage.target.TargetSpell;
/**
* @author nantuko
*/
-public class Dissipate extends CardImpl {
+public final class Dissipate extends CardImpl {
public Dissipate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DissipationField.java b/Mage.Sets/src/mage/cards/d/DissipationField.java
index 58a8eff315e..62cb46c0685 100644
--- a/Mage.Sets/src/mage/cards/d/DissipationField.java
+++ b/Mage.Sets/src/mage/cards/d/DissipationField.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author ayratn
*/
-public class DissipationField extends CardImpl {
+public final class DissipationField extends CardImpl {
public DissipationField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Dissolve.java b/Mage.Sets/src/mage/cards/d/Dissolve.java
index 2c2ecdb9bfc..2cf67e32935 100644
--- a/Mage.Sets/src/mage/cards/d/Dissolve.java
+++ b/Mage.Sets/src/mage/cards/d/Dissolve.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Dissolve extends CardImpl {
+public final class Dissolve extends CardImpl {
public Dissolve(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/d/DistantMelody.java b/Mage.Sets/src/mage/cards/d/DistantMelody.java
index a4085eafb08..0d5cf876627 100644
--- a/Mage.Sets/src/mage/cards/d/DistantMelody.java
+++ b/Mage.Sets/src/mage/cards/d/DistantMelody.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class DistantMelody extends CardImpl {
+public final class DistantMelody extends CardImpl {
public DistantMelody(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DistantMemories.java b/Mage.Sets/src/mage/cards/d/DistantMemories.java
index 03be8d12c69..6b843844298 100644
--- a/Mage.Sets/src/mage/cards/d/DistantMemories.java
+++ b/Mage.Sets/src/mage/cards/d/DistantMemories.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class DistantMemories extends CardImpl {
+public final class DistantMemories extends CardImpl {
public DistantMemories(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DistemperOfTheBlood.java b/Mage.Sets/src/mage/cards/d/DistemperOfTheBlood.java
index abff2196f66..7c1827a0ed8 100644
--- a/Mage.Sets/src/mage/cards/d/DistemperOfTheBlood.java
+++ b/Mage.Sets/src/mage/cards/d/DistemperOfTheBlood.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DistemperOfTheBlood extends CardImpl {
+public final class DistemperOfTheBlood extends CardImpl {
public DistemperOfTheBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DistendedMindbender.java b/Mage.Sets/src/mage/cards/d/DistendedMindbender.java
index 145a9d3c1ff..fe0d8846693 100644
--- a/Mage.Sets/src/mage/cards/d/DistendedMindbender.java
+++ b/Mage.Sets/src/mage/cards/d/DistendedMindbender.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class DistendedMindbender extends CardImpl {
+public final class DistendedMindbender extends CardImpl {
public DistendedMindbender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/d/DistortingLens.java b/Mage.Sets/src/mage/cards/d/DistortingLens.java
index f0b67486661..6047bdcb8f6 100644
--- a/Mage.Sets/src/mage/cards/d/DistortingLens.java
+++ b/Mage.Sets/src/mage/cards/d/DistortingLens.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author anonymous
*/
-public class DistortingLens extends CardImpl {
+public final class DistortingLens extends CardImpl {
public DistortingLens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/d/DistortingWake.java b/Mage.Sets/src/mage/cards/d/DistortingWake.java
index 3b83318f41d..ee6f9d76303 100644
--- a/Mage.Sets/src/mage/cards/d/DistortingWake.java
+++ b/Mage.Sets/src/mage/cards/d/DistortingWake.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class DistortingWake extends CardImpl {
+public final class DistortingWake extends CardImpl {
public DistortingWake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DistortionStrike.java b/Mage.Sets/src/mage/cards/d/DistortionStrike.java
index 089567eba19..f3b32141393 100644
--- a/Mage.Sets/src/mage/cards/d/DistortionStrike.java
+++ b/Mage.Sets/src/mage/cards/d/DistortionStrike.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class DistortionStrike extends CardImpl {
+public final class DistortionStrike extends CardImpl {
public DistortionStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Distress.java b/Mage.Sets/src/mage/cards/d/Distress.java
index ad7d587319a..309365f6d5b 100644
--- a/Mage.Sets/src/mage/cards/d/Distress.java
+++ b/Mage.Sets/src/mage/cards/d/Distress.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
/**
* @author nantuko
*/
-public class Distress extends CardImpl {
+public final class Distress extends CardImpl {
private static final FilterCard filter = new FilterCard("nonland card");
diff --git a/Mage.Sets/src/mage/cards/d/DisturbedBurial.java b/Mage.Sets/src/mage/cards/d/DisturbedBurial.java
index 6e8482f1ae7..1422d6acdd1 100644
--- a/Mage.Sets/src/mage/cards/d/DisturbedBurial.java
+++ b/Mage.Sets/src/mage/cards/d/DisturbedBurial.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class DisturbedBurial extends CardImpl {
+public final class DisturbedBurial extends CardImpl {
public DisturbedBurial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DisturbingPlot.java b/Mage.Sets/src/mage/cards/d/DisturbingPlot.java
index 6ca51903036..089ac45f1d9 100644
--- a/Mage.Sets/src/mage/cards/d/DisturbingPlot.java
+++ b/Mage.Sets/src/mage/cards/d/DisturbingPlot.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author jeffwadsworth
*/
-public class DisturbingPlot extends CardImpl {
+public final class DisturbingPlot extends CardImpl {
public DisturbingPlot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DiveBomber.java b/Mage.Sets/src/mage/cards/d/DiveBomber.java
index 8e13129aa14..5db33350405 100644
--- a/Mage.Sets/src/mage/cards/d/DiveBomber.java
+++ b/Mage.Sets/src/mage/cards/d/DiveBomber.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DiveBomber extends CardImpl {
+public final class DiveBomber extends CardImpl {
public DiveBomber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DiveDown.java b/Mage.Sets/src/mage/cards/d/DiveDown.java
index 8ce6392e1c8..c50de1f5834 100644
--- a/Mage.Sets/src/mage/cards/d/DiveDown.java
+++ b/Mage.Sets/src/mage/cards/d/DiveDown.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class DiveDown extends CardImpl {
+public final class DiveDown extends CardImpl {
public DiveDown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java b/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java
index 3c9e10acdb0..5990d8be864 100644
--- a/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java
+++ b/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DivebomberGriffin extends CardImpl {
+public final class DivebomberGriffin extends CardImpl {
public DivebomberGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DivergentGrowth.java b/Mage.Sets/src/mage/cards/d/DivergentGrowth.java
index 3d19f0a4bdd..00bcf0eaccc 100644
--- a/Mage.Sets/src/mage/cards/d/DivergentGrowth.java
+++ b/Mage.Sets/src/mage/cards/d/DivergentGrowth.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author Galatolol
*/
-public class DivergentGrowth extends CardImpl {
+public final class DivergentGrowth extends CardImpl {
public DivergentGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DivergentTransformations.java b/Mage.Sets/src/mage/cards/d/DivergentTransformations.java
index 6c8f3a1207a..0e011524e36 100644
--- a/Mage.Sets/src/mage/cards/d/DivergentTransformations.java
+++ b/Mage.Sets/src/mage/cards/d/DivergentTransformations.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DivergentTransformations extends CardImpl {
+public final class DivergentTransformations extends CardImpl {
public DivergentTransformations(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DiversionaryTactics.java b/Mage.Sets/src/mage/cards/d/DiversionaryTactics.java
index ed7c583ef16..76612fd16d5 100644
--- a/Mage.Sets/src/mage/cards/d/DiversionaryTactics.java
+++ b/Mage.Sets/src/mage/cards/d/DiversionaryTactics.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class DiversionaryTactics extends CardImpl {
+public final class DiversionaryTactics extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/d/Divert.java b/Mage.Sets/src/mage/cards/d/Divert.java
index cc5636faa6b..89a14002ef1 100644
--- a/Mage.Sets/src/mage/cards/d/Divert.java
+++ b/Mage.Sets/src/mage/cards/d/Divert.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author cbt33, Rafbill (Frightful Delustions)
*/
-public class Divert extends CardImpl {
+public final class Divert extends CardImpl {
public Divert(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Divest.java b/Mage.Sets/src/mage/cards/d/Divest.java
index d55628182ea..7c740e36cb5 100644
--- a/Mage.Sets/src/mage/cards/d/Divest.java
+++ b/Mage.Sets/src/mage/cards/d/Divest.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
* @author MasterSamurai
*
*/
-public class Divest extends CardImpl {
+public final class Divest extends CardImpl {
private static final FilterCard filter = new FilterCard("an artifact or creature card");
diff --git a/Mage.Sets/src/mage/cards/d/Divination.java b/Mage.Sets/src/mage/cards/d/Divination.java
index 10b1bbaf266..74fea3516dc 100644
--- a/Mage.Sets/src/mage/cards/d/Divination.java
+++ b/Mage.Sets/src/mage/cards/d/Divination.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class Divination extends CardImpl {
+public final class Divination extends CardImpl {
public Divination (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DivineCongregation.java b/Mage.Sets/src/mage/cards/d/DivineCongregation.java
index 232dadbbce4..62abc168a11 100644
--- a/Mage.Sets/src/mage/cards/d/DivineCongregation.java
+++ b/Mage.Sets/src/mage/cards/d/DivineCongregation.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class DivineCongregation extends CardImpl {
+public final class DivineCongregation extends CardImpl {
public DivineCongregation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DivineDeflection.java b/Mage.Sets/src/mage/cards/d/DivineDeflection.java
index 0dc61ecaab2..92f8e4711b1 100644
--- a/Mage.Sets/src/mage/cards/d/DivineDeflection.java
+++ b/Mage.Sets/src/mage/cards/d/DivineDeflection.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author noxx
*/
-public class DivineDeflection extends CardImpl {
+public final class DivineDeflection extends CardImpl {
public DivineDeflection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DivineFavor.java b/Mage.Sets/src/mage/cards/d/DivineFavor.java
index b094283e04b..c125eebfdb0 100644
--- a/Mage.Sets/src/mage/cards/d/DivineFavor.java
+++ b/Mage.Sets/src/mage/cards/d/DivineFavor.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class DivineFavor extends CardImpl {
+public final class DivineFavor extends CardImpl {
public DivineFavor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DivineIntervention.java b/Mage.Sets/src/mage/cards/d/DivineIntervention.java
index a1477f3031d..870ab045497 100644
--- a/Mage.Sets/src/mage/cards/d/DivineIntervention.java
+++ b/Mage.Sets/src/mage/cards/d/DivineIntervention.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class DivineIntervention extends CardImpl {
+public final class DivineIntervention extends CardImpl {
public DivineIntervention(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{6}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DivineLight.java b/Mage.Sets/src/mage/cards/d/DivineLight.java
index ca3e4380ec4..a0c6229c8a4 100644
--- a/Mage.Sets/src/mage/cards/d/DivineLight.java
+++ b/Mage.Sets/src/mage/cards/d/DivineLight.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class DivineLight extends CardImpl {
+public final class DivineLight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/d/DivineOffering.java b/Mage.Sets/src/mage/cards/d/DivineOffering.java
index 9e33324dc4c..33fc346588d 100644
--- a/Mage.Sets/src/mage/cards/d/DivineOffering.java
+++ b/Mage.Sets/src/mage/cards/d/DivineOffering.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author ayratn
*/
-public class DivineOffering extends CardImpl {
+public final class DivineOffering extends CardImpl {
public DivineOffering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DivinePresence.java b/Mage.Sets/src/mage/cards/d/DivinePresence.java
index cc534f2db0f..98e1f3e2704 100644
--- a/Mage.Sets/src/mage/cards/d/DivinePresence.java
+++ b/Mage.Sets/src/mage/cards/d/DivinePresence.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent;
*
* @author LoneFox
*/
-public class DivinePresence extends CardImpl {
+public final class DivinePresence extends CardImpl {
public DivinePresence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DivineReckoning.java b/Mage.Sets/src/mage/cards/d/DivineReckoning.java
index 134847d7663..a6105ac68c9 100644
--- a/Mage.Sets/src/mage/cards/d/DivineReckoning.java
+++ b/Mage.Sets/src/mage/cards/d/DivineReckoning.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author nantuko
*/
-public class DivineReckoning extends CardImpl {
+public final class DivineReckoning extends CardImpl {
public DivineReckoning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DivineRetribution.java b/Mage.Sets/src/mage/cards/d/DivineRetribution.java
index c73e8933b2c..e6f2e532c6a 100644
--- a/Mage.Sets/src/mage/cards/d/DivineRetribution.java
+++ b/Mage.Sets/src/mage/cards/d/DivineRetribution.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author TheElk801
*/
-public class DivineRetribution extends CardImpl {
+public final class DivineRetribution extends CardImpl {
public DivineRetribution(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DivineSacrament.java b/Mage.Sets/src/mage/cards/d/DivineSacrament.java
index 636b723ca36..514ce55548a 100644
--- a/Mage.Sets/src/mage/cards/d/DivineSacrament.java
+++ b/Mage.Sets/src/mage/cards/d/DivineSacrament.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Beta_Steward (Honor of the Pure), LevelX2 (Demoralize), cbt
*/
-public class DivineSacrament extends CardImpl {
+public final class DivineSacrament extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DivineTransformation.java b/Mage.Sets/src/mage/cards/d/DivineTransformation.java
index 715eee2511e..2263319d898 100644
--- a/Mage.Sets/src/mage/cards/d/DivineTransformation.java
+++ b/Mage.Sets/src/mage/cards/d/DivineTransformation.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class DivineTransformation extends CardImpl {
+public final class DivineTransformation extends CardImpl {
public DivineTransformation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DivineVerdict.java b/Mage.Sets/src/mage/cards/d/DivineVerdict.java
index 3c38328a155..b1021232342 100644
--- a/Mage.Sets/src/mage/cards/d/DivineVerdict.java
+++ b/Mage.Sets/src/mage/cards/d/DivineVerdict.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class DivineVerdict extends CardImpl {
+public final class DivineVerdict extends CardImpl {
public DivineVerdict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DivinerSpirit.java b/Mage.Sets/src/mage/cards/d/DivinerSpirit.java
index 167ca0f3bab..10368d15690 100644
--- a/Mage.Sets/src/mage/cards/d/DivinerSpirit.java
+++ b/Mage.Sets/src/mage/cards/d/DivinerSpirit.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DivinerSpirit extends CardImpl {
+public final class DivinerSpirit extends CardImpl {
public DivinerSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DivinersWand.java b/Mage.Sets/src/mage/cards/d/DivinersWand.java
index b5162263804..6a9448ee88a 100644
--- a/Mage.Sets/src/mage/cards/d/DivinersWand.java
+++ b/Mage.Sets/src/mage/cards/d/DivinersWand.java
@@ -53,7 +53,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class DivinersWand extends CardImpl {
+public final class DivinersWand extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a Wizard creature");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DivingGriffin.java b/Mage.Sets/src/mage/cards/d/DivingGriffin.java
index db8cbbe9b13..f30c1ad8ef4 100644
--- a/Mage.Sets/src/mage/cards/d/DivingGriffin.java
+++ b/Mage.Sets/src/mage/cards/d/DivingGriffin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DivingGriffin extends CardImpl {
+public final class DivingGriffin extends CardImpl {
public DivingGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DiviningWitch.java b/Mage.Sets/src/mage/cards/d/DiviningWitch.java
index 10ca9ae2321..f7394e4ff49 100644
--- a/Mage.Sets/src/mage/cards/d/DiviningWitch.java
+++ b/Mage.Sets/src/mage/cards/d/DiviningWitch.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInHand;
*
* @author maxlebedev
*/
-public class DiviningWitch extends CardImpl {
+public final class DiviningWitch extends CardImpl {
public DiviningWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DivinityOfPride.java b/Mage.Sets/src/mage/cards/d/DivinityOfPride.java
index 2e687a2d8b0..675ee6956b9 100644
--- a/Mage.Sets/src/mage/cards/d/DivinityOfPride.java
+++ b/Mage.Sets/src/mage/cards/d/DivinityOfPride.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class DivinityOfPride extends CardImpl {
+public final class DivinityOfPride extends CardImpl {
public DivinityOfPride(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W/B}{W/B}{W/B}{W/B}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/d/DizzySpell.java b/Mage.Sets/src/mage/cards/d/DizzySpell.java
index bc2458441db..67684869550 100644
--- a/Mage.Sets/src/mage/cards/d/DizzySpell.java
+++ b/Mage.Sets/src/mage/cards/d/DizzySpell.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DizzySpell extends CardImpl {
+public final class DizzySpell extends CardImpl {
public DizzySpell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DjeruWithEyesOpen.java b/Mage.Sets/src/mage/cards/d/DjeruWithEyesOpen.java
index efacfd9440f..831805d2a83 100644
--- a/Mage.Sets/src/mage/cards/d/DjeruWithEyesOpen.java
+++ b/Mage.Sets/src/mage/cards/d/DjeruWithEyesOpen.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class DjeruWithEyesOpen extends CardImpl {
+public final class DjeruWithEyesOpen extends CardImpl {
private static final FilterCard filter = new FilterCard("planeswalker card");
diff --git a/Mage.Sets/src/mage/cards/d/DjerusRenunciation.java b/Mage.Sets/src/mage/cards/d/DjerusRenunciation.java
index f5fbdae6474..e96733811ee 100644
--- a/Mage.Sets/src/mage/cards/d/DjerusRenunciation.java
+++ b/Mage.Sets/src/mage/cards/d/DjerusRenunciation.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Archer262
*/
-public class DjerusRenunciation extends CardImpl {
+public final class DjerusRenunciation extends CardImpl {
public DjerusRenunciation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DjerusResolve.java b/Mage.Sets/src/mage/cards/d/DjerusResolve.java
index 5f2b2a5a5ec..c5130eb4966 100644
--- a/Mage.Sets/src/mage/cards/d/DjerusResolve.java
+++ b/Mage.Sets/src/mage/cards/d/DjerusResolve.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DjerusResolve extends CardImpl {
+public final class DjerusResolve extends CardImpl {
public DjerusResolve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DjinnIlluminatus.java b/Mage.Sets/src/mage/cards/d/DjinnIlluminatus.java
index 4eb5d4f1f04..c0111306795 100644
--- a/Mage.Sets/src/mage/cards/d/DjinnIlluminatus.java
+++ b/Mage.Sets/src/mage/cards/d/DjinnIlluminatus.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class DjinnIlluminatus extends CardImpl {
+public final class DjinnIlluminatus extends CardImpl {
public DjinnIlluminatus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U/R}{U/R}");
diff --git a/Mage.Sets/src/mage/cards/d/DjinnOfInfiniteDeceits.java b/Mage.Sets/src/mage/cards/d/DjinnOfInfiniteDeceits.java
index d7017fbad40..ca4423baf4c 100644
--- a/Mage.Sets/src/mage/cards/d/DjinnOfInfiniteDeceits.java
+++ b/Mage.Sets/src/mage/cards/d/DjinnOfInfiniteDeceits.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DjinnOfInfiniteDeceits extends CardImpl {
+public final class DjinnOfInfiniteDeceits extends CardImpl {
private static final String rule = "Exchange control of two target nonlegendary creatures";
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonlegendary creature");
diff --git a/Mage.Sets/src/mage/cards/d/DjinnOfTheLamp.java b/Mage.Sets/src/mage/cards/d/DjinnOfTheLamp.java
index 6c436e21271..558c13c6477 100644
--- a/Mage.Sets/src/mage/cards/d/DjinnOfTheLamp.java
+++ b/Mage.Sets/src/mage/cards/d/DjinnOfTheLamp.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class DjinnOfTheLamp extends CardImpl {
+public final class DjinnOfTheLamp extends CardImpl {
public DjinnOfTheLamp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DjinnOfWishes.java b/Mage.Sets/src/mage/cards/d/DjinnOfWishes.java
index a6ca79ebae6..ae5ca75945b 100644
--- a/Mage.Sets/src/mage/cards/d/DjinnOfWishes.java
+++ b/Mage.Sets/src/mage/cards/d/DjinnOfWishes.java
@@ -30,6 +30,7 @@ package mage.cards.d;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleActivatedAbility;
@@ -40,8 +41,8 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.*;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.game.Game;
@@ -51,12 +52,12 @@ import mage.players.Player;
*
* @author nantuko
*/
-public class DjinnOfWishes extends CardImpl {
+public final class DjinnOfWishes extends CardImpl {
private static final String ruleText = "{this} enters the battlefield with three wish counters on it";
public DjinnOfWishes(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
this.subtype.add(SubType.DJINN);
this.color.setBlue(true);
@@ -103,8 +104,8 @@ class DjinnOfWishesEffect extends OneShotEffect {
Cards cards = new CardsImpl(card);
controller.revealCards(sourceObject.getIdName(), cards, game);
if (!controller.chooseUse(Outcome.PlayForFree, "Play " + card.getName() + " without paying its mana cost?", source, game)
- || !controller.playCard(card, game, true, true)) {
- card.moveToZone(Zone.EXILED, source.getSourceId(), game, false);
+ || !controller.playCard(card, game, true, true, new MageObjectReference(source.getSourceObject(game), game))) {
+ controller.moveCards(card, Zone.EXILED, source, game);
}
return true;
}
diff --git a/Mage.Sets/src/mage/cards/d/DoOrDie.java b/Mage.Sets/src/mage/cards/d/DoOrDie.java
index 29b2a9be088..6fd36e31ae5 100644
--- a/Mage.Sets/src/mage/cards/d/DoOrDie.java
+++ b/Mage.Sets/src/mage/cards/d/DoOrDie.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DoOrDie extends CardImpl {
+public final class DoOrDie extends CardImpl {
public DoOrDie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java b/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java
index a0ec96d734d..930c993292b 100644
--- a/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java
+++ b/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java
@@ -58,7 +58,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class DocentOfPerfection extends CardImpl {
+public final class DocentOfPerfection extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("an instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/d/Dodecapod.java b/Mage.Sets/src/mage/cards/d/Dodecapod.java
index f584342bc36..9af8d20a98d 100644
--- a/Mage.Sets/src/mage/cards/d/Dodecapod.java
+++ b/Mage.Sets/src/mage/cards/d/Dodecapod.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent;
*
* @author LoneFox
*/
-public class Dodecapod extends CardImpl {
+public final class Dodecapod extends CardImpl {
public Dodecapod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DoggedHunter.java b/Mage.Sets/src/mage/cards/d/DoggedHunter.java
index 58f9b714700..54892e54d94 100644
--- a/Mage.Sets/src/mage/cards/d/DoggedHunter.java
+++ b/Mage.Sets/src/mage/cards/d/DoggedHunter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author noxx (Harvester of Souls), cbt33
*/
-public class DoggedHunter extends CardImpl {
+public final class DoggedHunter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature token");
static {
diff --git a/Mage.Sets/src/mage/cards/d/Dogpile.java b/Mage.Sets/src/mage/cards/d/Dogpile.java
index 2cc5b4f14b5..a998e268f5d 100644
--- a/Mage.Sets/src/mage/cards/d/Dogpile.java
+++ b/Mage.Sets/src/mage/cards/d/Dogpile.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Dogpile extends CardImpl {
+public final class Dogpile extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creatures you control");
diff --git a/Mage.Sets/src/mage/cards/d/DolmenGate.java b/Mage.Sets/src/mage/cards/d/DolmenGate.java
index 28dd613506c..8dbd2ed9d73 100644
--- a/Mage.Sets/src/mage/cards/d/DolmenGate.java
+++ b/Mage.Sets/src/mage/cards/d/DolmenGate.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.AttackingPredicate;
*
* @author LevelX2
*/
-public class DolmenGate extends CardImpl {
+public final class DolmenGate extends CardImpl {
private static final FilterControlledCreatureInPlay filter = new FilterControlledCreatureInPlay("attacking creatures you control");
diff --git a/Mage.Sets/src/mage/cards/d/DomesticatedHydra.java b/Mage.Sets/src/mage/cards/d/DomesticatedHydra.java
index 60f50dc0c45..86f73c09482 100644
--- a/Mage.Sets/src/mage/cards/d/DomesticatedHydra.java
+++ b/Mage.Sets/src/mage/cards/d/DomesticatedHydra.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DomesticatedHydra extends CardImpl {
+public final class DomesticatedHydra extends CardImpl {
public DomesticatedHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/Domestication.java b/Mage.Sets/src/mage/cards/d/Domestication.java
index 090645658c5..1f4ba1f0bc0 100644
--- a/Mage.Sets/src/mage/cards/d/Domestication.java
+++ b/Mage.Sets/src/mage/cards/d/Domestication.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class Domestication extends CardImpl {
+public final class Domestication extends CardImpl {
public Domestication(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Dominate.java b/Mage.Sets/src/mage/cards/d/Dominate.java
index 64c0048af26..ba3357ddff3 100644
--- a/Mage.Sets/src/mage/cards/d/Dominate.java
+++ b/Mage.Sets/src/mage/cards/d/Dominate.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Dominate extends CardImpl {
+public final class Dominate extends CardImpl {
public Dominate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DominatingLicid.java b/Mage.Sets/src/mage/cards/d/DominatingLicid.java
index c74effe477b..1739a8c5b7e 100644
--- a/Mage.Sets/src/mage/cards/d/DominatingLicid.java
+++ b/Mage.Sets/src/mage/cards/d/DominatingLicid.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class DominatingLicid extends CardImpl {
+public final class DominatingLicid extends CardImpl {
public DominatingLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DominatorDrone.java b/Mage.Sets/src/mage/cards/d/DominatorDrone.java
index 2a2a2555ed8..2f398422da7 100644
--- a/Mage.Sets/src/mage/cards/d/DominatorDrone.java
+++ b/Mage.Sets/src/mage/cards/d/DominatorDrone.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class DominatorDrone extends CardImpl {
+public final class DominatorDrone extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another colorless creature");
diff --git a/Mage.Sets/src/mage/cards/d/Domineer.java b/Mage.Sets/src/mage/cards/d/Domineer.java
index c69265e5423..7b2cb07896e 100644
--- a/Mage.Sets/src/mage/cards/d/Domineer.java
+++ b/Mage.Sets/src/mage/cards/d/Domineer.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Domineer extends CardImpl {
+public final class Domineer extends CardImpl {
final static FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/d/DomineeringWill.java b/Mage.Sets/src/mage/cards/d/DomineeringWill.java
index ee861946140..a467fd6c877 100644
--- a/Mage.Sets/src/mage/cards/d/DomineeringWill.java
+++ b/Mage.Sets/src/mage/cards/d/DomineeringWill.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class DomineeringWill extends CardImpl {
+public final class DomineeringWill extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonattacking creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DominusOfFealty.java b/Mage.Sets/src/mage/cards/d/DominusOfFealty.java
index dd6b778533e..2a6343f9880 100644
--- a/Mage.Sets/src/mage/cards/d/DominusOfFealty.java
+++ b/Mage.Sets/src/mage/cards/d/DominusOfFealty.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class DominusOfFealty extends CardImpl {
+public final class DominusOfFealty extends CardImpl {
public DominusOfFealty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U/R}{U/R}{U/R}{U/R}{U/R}");
diff --git a/Mage.Sets/src/mage/cards/d/DomriRade.java b/Mage.Sets/src/mage/cards/d/DomriRade.java
index 679fd8c5c77..01be9ca41db 100644
--- a/Mage.Sets/src/mage/cards/d/DomriRade.java
+++ b/Mage.Sets/src/mage/cards/d/DomriRade.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DomriRade extends CardImpl {
+public final class DomriRade extends CardImpl {
public DomriRade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/Donate.java b/Mage.Sets/src/mage/cards/d/Donate.java
index de1284c6656..2845c4cb954 100644
--- a/Mage.Sets/src/mage/cards/d/Donate.java
+++ b/Mage.Sets/src/mage/cards/d/Donate.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Quercitron
*/
-public class Donate extends CardImpl {
+public final class Donate extends CardImpl {
public Donate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DongZhouTheTyrant.java b/Mage.Sets/src/mage/cards/d/DongZhouTheTyrant.java
index 4e4f9ff3b76..2accc1dd0a7 100644
--- a/Mage.Sets/src/mage/cards/d/DongZhouTheTyrant.java
+++ b/Mage.Sets/src/mage/cards/d/DongZhouTheTyrant.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DongZhouTheTyrant extends CardImpl {
+public final class DongZhouTheTyrant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/d/DoomBlade.java b/Mage.Sets/src/mage/cards/d/DoomBlade.java
index 85d5460474b..3b1ad3abbd6 100644
--- a/Mage.Sets/src/mage/cards/d/DoomBlade.java
+++ b/Mage.Sets/src/mage/cards/d/DoomBlade.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LokiX
*/
-public class DoomBlade extends CardImpl {
+public final class DoomBlade extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/d/DoomCannon.java b/Mage.Sets/src/mage/cards/d/DoomCannon.java
index 249b2e6f0d7..a1be94a650f 100644
--- a/Mage.Sets/src/mage/cards/d/DoomCannon.java
+++ b/Mage.Sets/src/mage/cards/d/DoomCannon.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author L_J
*/
-public class DoomCannon extends CardImpl {
+public final class DoomCannon extends CardImpl {
public DoomCannon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/d/DoomedDissenter.java b/Mage.Sets/src/mage/cards/d/DoomedDissenter.java
index d9c4b5d979c..79fdb3685e3 100644
--- a/Mage.Sets/src/mage/cards/d/DoomedDissenter.java
+++ b/Mage.Sets/src/mage/cards/d/DoomedDissenter.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author Styxo
*/
-public class DoomedDissenter extends CardImpl {
+public final class DoomedDissenter extends CardImpl {
public DoomedDissenter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DoomedNecromancer.java b/Mage.Sets/src/mage/cards/d/DoomedNecromancer.java
index 7bc722a4fb9..e550f5c29a1 100644
--- a/Mage.Sets/src/mage/cards/d/DoomedNecromancer.java
+++ b/Mage.Sets/src/mage/cards/d/DoomedNecromancer.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class DoomedNecromancer extends CardImpl {
+public final class DoomedNecromancer extends CardImpl {
public DoomedNecromancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DoomedTraveler.java b/Mage.Sets/src/mage/cards/d/DoomedTraveler.java
index 6a222203cb3..24065b552be 100644
--- a/Mage.Sets/src/mage/cards/d/DoomedTraveler.java
+++ b/Mage.Sets/src/mage/cards/d/DoomedTraveler.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author nantuko
*/
-public class DoomedTraveler extends CardImpl {
+public final class DoomedTraveler extends CardImpl {
public DoomedTraveler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Doomfall.java b/Mage.Sets/src/mage/cards/d/Doomfall.java
index 96ac8a00f61..b95aa415cba 100644
--- a/Mage.Sets/src/mage/cards/d/Doomfall.java
+++ b/Mage.Sets/src/mage/cards/d/Doomfall.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class Doomfall extends CardImpl {
+public final class Doomfall extends CardImpl {
public Doomfall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Doomgape.java b/Mage.Sets/src/mage/cards/d/Doomgape.java
index 22836aff02c..b25136b1f94 100644
--- a/Mage.Sets/src/mage/cards/d/Doomgape.java
+++ b/Mage.Sets/src/mage/cards/d/Doomgape.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
* @author jeffwadsworth
*
*/
-public class Doomgape extends CardImpl {
+public final class Doomgape extends CardImpl {
public Doomgape(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B/G}{B/G}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/d/Doomsday.java b/Mage.Sets/src/mage/cards/d/Doomsday.java
index ef4832cc365..5b48ba16348 100644
--- a/Mage.Sets/src/mage/cards/d/Doomsday.java
+++ b/Mage.Sets/src/mage/cards/d/Doomsday.java
@@ -44,7 +44,7 @@ import mage.target.TargetCard;
*
* @author Plopman
*/
-public class Doomsday extends CardImpl {
+public final class Doomsday extends CardImpl {
public Doomsday(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DoomsdaySpecter.java b/Mage.Sets/src/mage/cards/d/DoomsdaySpecter.java
index 6a2a2be932e..0ed8b08f2a6 100644
--- a/Mage.Sets/src/mage/cards/d/DoomsdaySpecter.java
+++ b/Mage.Sets/src/mage/cards/d/DoomsdaySpecter.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*/
-public class DoomsdaySpecter extends CardImpl {
+public final class DoomsdaySpecter extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("blue or black creature you control");
diff --git a/Mage.Sets/src/mage/cards/d/DoomwakeGiant.java b/Mage.Sets/src/mage/cards/d/DoomwakeGiant.java
index f98f535e244..809580cf8f1 100644
--- a/Mage.Sets/src/mage/cards/d/DoomwakeGiant.java
+++ b/Mage.Sets/src/mage/cards/d/DoomwakeGiant.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class DoomwakeGiant extends CardImpl {
+public final class DoomwakeGiant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/d/DoorOfDestinies.java b/Mage.Sets/src/mage/cards/d/DoorOfDestinies.java
index 4f7ee84187c..87d50b173ee 100644
--- a/Mage.Sets/src/mage/cards/d/DoorOfDestinies.java
+++ b/Mage.Sets/src/mage/cards/d/DoorOfDestinies.java
@@ -50,7 +50,7 @@ import mage.game.stack.Spell;
*
* @author Plopman
*/
-public class DoorOfDestinies extends CardImpl {
+public final class DoorOfDestinies extends CardImpl {
public DoorOfDestinies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DoorToNothingness.java b/Mage.Sets/src/mage/cards/d/DoorToNothingness.java
index 6598e3b17cf..aa0640d781a 100644
--- a/Mage.Sets/src/mage/cards/d/DoorToNothingness.java
+++ b/Mage.Sets/src/mage/cards/d/DoorToNothingness.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class DoorToNothingness extends CardImpl {
+public final class DoorToNothingness extends CardImpl {
public DoorToNothingness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/d/Doorkeeper.java b/Mage.Sets/src/mage/cards/d/Doorkeeper.java
index 1a76f7f3a30..82d1ff05303 100644
--- a/Mage.Sets/src/mage/cards/d/Doorkeeper.java
+++ b/Mage.Sets/src/mage/cards/d/Doorkeeper.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class Doorkeeper extends CardImpl {
+public final class Doorkeeper extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures with defender you control");
diff --git a/Mage.Sets/src/mage/cards/d/DoranTheSiegeTower.java b/Mage.Sets/src/mage/cards/d/DoranTheSiegeTower.java
index 0aecefdb5af..24cd8ac0242 100644
--- a/Mage.Sets/src/mage/cards/d/DoranTheSiegeTower.java
+++ b/Mage.Sets/src/mage/cards/d/DoranTheSiegeTower.java
@@ -51,7 +51,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class DoranTheSiegeTower extends CardImpl {
+public final class DoranTheSiegeTower extends CardImpl {
public DoranTheSiegeTower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DormantGomazoa.java b/Mage.Sets/src/mage/cards/d/DormantGomazoa.java
index 067ebc283ab..d4379a6ae71 100644
--- a/Mage.Sets/src/mage/cards/d/DormantGomazoa.java
+++ b/Mage.Sets/src/mage/cards/d/DormantGomazoa.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class DormantGomazoa extends CardImpl {
+public final class DormantGomazoa extends CardImpl {
public DormantGomazoa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DormantSliver.java b/Mage.Sets/src/mage/cards/d/DormantSliver.java
index 79dfcb65e7d..a8312ea0732 100644
--- a/Mage.Sets/src/mage/cards/d/DormantSliver.java
+++ b/Mage.Sets/src/mage/cards/d/DormantSliver.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author anonymous
*/
-public class DormantSliver extends CardImpl {
+public final class DormantSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DormantVolcano.java b/Mage.Sets/src/mage/cards/d/DormantVolcano.java
index 55bcc09eb6d..fa5c45a322b 100644
--- a/Mage.Sets/src/mage/cards/d/DormantVolcano.java
+++ b/Mage.Sets/src/mage/cards/d/DormantVolcano.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class DormantVolcano extends CardImpl {
+public final class DormantVolcano extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Mountain");
diff --git a/Mage.Sets/src/mage/cards/d/DosanTheFallingLeaf.java b/Mage.Sets/src/mage/cards/d/DosanTheFallingLeaf.java
index 2f53e5baf03..68a6a590791 100644
--- a/Mage.Sets/src/mage/cards/d/DosanTheFallingLeaf.java
+++ b/Mage.Sets/src/mage/cards/d/DosanTheFallingLeaf.java
@@ -42,7 +42,7 @@ import mage.game.events.GameEvent;
*
* @author Loki
*/
-public class DosanTheFallingLeaf extends CardImpl {
+public final class DosanTheFallingLeaf extends CardImpl {
public DosanTheFallingLeaf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DosansOldestChant.java b/Mage.Sets/src/mage/cards/d/DosansOldestChant.java
index 764ecbd1394..bfa01e12f8c 100644
--- a/Mage.Sets/src/mage/cards/d/DosansOldestChant.java
+++ b/Mage.Sets/src/mage/cards/d/DosansOldestChant.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class DosansOldestChant extends CardImpl {
+public final class DosansOldestChant extends CardImpl {
public DosansOldestChant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DoubleCleave.java b/Mage.Sets/src/mage/cards/d/DoubleCleave.java
index 260fbef3ec9..c02fa7ac7cf 100644
--- a/Mage.Sets/src/mage/cards/d/DoubleCleave.java
+++ b/Mage.Sets/src/mage/cards/d/DoubleCleave.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DoubleCleave extends CardImpl {
+public final class DoubleCleave extends CardImpl {
public DoubleCleave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/d/DoubleNegative.java b/Mage.Sets/src/mage/cards/d/DoubleNegative.java
index 7921111824a..c785f6d4d0a 100644
--- a/Mage.Sets/src/mage/cards/d/DoubleNegative.java
+++ b/Mage.Sets/src/mage/cards/d/DoubleNegative.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class DoubleNegative extends CardImpl {
+public final class DoubleNegative extends CardImpl {
public DoubleNegative(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DoublingChant.java b/Mage.Sets/src/mage/cards/d/DoublingChant.java
index 7e1cb668100..2382aa8e518 100644
--- a/Mage.Sets/src/mage/cards/d/DoublingChant.java
+++ b/Mage.Sets/src/mage/cards/d/DoublingChant.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class DoublingChant extends CardImpl {
+public final class DoublingChant extends CardImpl {
public DoublingChant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DoublingCube.java b/Mage.Sets/src/mage/cards/d/DoublingCube.java
index 5a67189ce66..2bcdbfcad3f 100644
--- a/Mage.Sets/src/mage/cards/d/DoublingCube.java
+++ b/Mage.Sets/src/mage/cards/d/DoublingCube.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class DoublingCube extends CardImpl {
+public final class DoublingCube extends CardImpl {
public DoublingCube(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
@@ -73,7 +73,7 @@ class DoublingCubeEffect extends ManaEffect {
DoublingCubeEffect() {
super();
- staticText = "Double the amount of each type of mana in your mana pool";
+ staticText = "Double the amount of each type of unspent mana you have";
}
DoublingCubeEffect(final DoublingCubeEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/d/DoublingSeason.java b/Mage.Sets/src/mage/cards/d/DoublingSeason.java
index 0424e26c57b..db9bab2ee9b 100644
--- a/Mage.Sets/src/mage/cards/d/DoublingSeason.java
+++ b/Mage.Sets/src/mage/cards/d/DoublingSeason.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class DoublingSeason extends CardImpl {
+public final class DoublingSeason extends CardImpl {
public DoublingSeason(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{G}");
@@ -96,6 +96,9 @@ class DoublingSeasonCounterEffect extends ReplacementEffectImpl {
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
Permanent permanent = game.getPermanent(event.getTargetId());
+ if (!event.getFlag()) {
+ return false;
+ }
if (permanent == null) {
permanent = game.getPermanentEntering(event.getTargetId());
landPlayed = (permanent != null
diff --git a/Mage.Sets/src/mage/cards/d/DoubtlessOne.java b/Mage.Sets/src/mage/cards/d/DoubtlessOne.java
index 28767b7277c..670d11be5be 100644
--- a/Mage.Sets/src/mage/cards/d/DoubtlessOne.java
+++ b/Mage.Sets/src/mage/cards/d/DoubtlessOne.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class DoubtlessOne extends CardImpl {
+public final class DoubtlessOne extends CardImpl {
final static FilterPermanent filter = new FilterPermanent("Clerics on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/d/Douse.java b/Mage.Sets/src/mage/cards/d/Douse.java
index bef2fb61ae7..2855528ee57 100644
--- a/Mage.Sets/src/mage/cards/d/Douse.java
+++ b/Mage.Sets/src/mage/cards/d/Douse.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author anonymous
*/
-public class Douse extends CardImpl {
+public final class Douse extends CardImpl {
private static final FilterSpell filter = new FilterSpell("red spell");
diff --git a/Mage.Sets/src/mage/cards/d/DouseInGloom.java b/Mage.Sets/src/mage/cards/d/DouseInGloom.java
index 57e8188f6d0..8dcd572a1ed 100644
--- a/Mage.Sets/src/mage/cards/d/DouseInGloom.java
+++ b/Mage.Sets/src/mage/cards/d/DouseInGloom.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DouseInGloom extends CardImpl {
+public final class DouseInGloom extends CardImpl {
public DouseInGloom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Dovescape.java b/Mage.Sets/src/mage/cards/d/Dovescape.java
index 8d15bd57397..e183a5896b7 100644
--- a/Mage.Sets/src/mage/cards/d/Dovescape.java
+++ b/Mage.Sets/src/mage/cards/d/Dovescape.java
@@ -49,7 +49,7 @@ import mage.game.stack.Spell;
*
* @author emerald000
*/
-public class Dovescape extends CardImpl {
+public final class Dovescape extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/d/DovinBaan.java b/Mage.Sets/src/mage/cards/d/DovinBaan.java
index 2a2dbfb7149..c7378bde196 100644
--- a/Mage.Sets/src/mage/cards/d/DovinBaan.java
+++ b/Mage.Sets/src/mage/cards/d/DovinBaan.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class DovinBaan extends CardImpl {
+public final class DovinBaan extends CardImpl {
public DovinBaan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DownDirty.java b/Mage.Sets/src/mage/cards/d/DownDirty.java
index fe4c76ced15..2454506ac49 100644
--- a/Mage.Sets/src/mage/cards/d/DownDirty.java
+++ b/Mage.Sets/src/mage/cards/d/DownDirty.java
@@ -37,7 +37,7 @@ import mage.constants.SpellAbilityType;
import mage.target.TargetPlayer;
import mage.target.common.TargetCardInYourGraveyard;
-public class DownDirty extends SplitCard {
+public final class DownDirty extends SplitCard {
public DownDirty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}", "{2}{G}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/d/Downdraft.java b/Mage.Sets/src/mage/cards/d/Downdraft.java
index 3f0a27abfb5..58398057411 100644
--- a/Mage.Sets/src/mage/cards/d/Downdraft.java
+++ b/Mage.Sets/src/mage/cards/d/Downdraft.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Downdraft extends CardImpl {
+public final class Downdraft extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/d/DownhillCharge.java b/Mage.Sets/src/mage/cards/d/DownhillCharge.java
index e323e80bd2b..1d120173000 100644
--- a/Mage.Sets/src/mage/cards/d/DownhillCharge.java
+++ b/Mage.Sets/src/mage/cards/d/DownhillCharge.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DownhillCharge extends CardImpl {
+public final class DownhillCharge extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Mountain");
diff --git a/Mage.Sets/src/mage/cards/d/Downpour.java b/Mage.Sets/src/mage/cards/d/Downpour.java
index 22df2663561..4a22bb65f2f 100644
--- a/Mage.Sets/src/mage/cards/d/Downpour.java
+++ b/Mage.Sets/src/mage/cards/d/Downpour.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Downpour extends CardImpl {
+public final class Downpour extends CardImpl {
public Downpour(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Downsize.java b/Mage.Sets/src/mage/cards/d/Downsize.java
index aea4ec684f2..46c50568129 100644
--- a/Mage.Sets/src/mage/cards/d/Downsize.java
+++ b/Mage.Sets/src/mage/cards/d/Downsize.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Downsize extends CardImpl {
+public final class Downsize extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/d/DowsingDagger.java b/Mage.Sets/src/mage/cards/d/DowsingDagger.java
index 9d170400f02..c1428119234 100644
--- a/Mage.Sets/src/mage/cards/d/DowsingDagger.java
+++ b/Mage.Sets/src/mage/cards/d/DowsingDagger.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class DowsingDagger extends CardImpl {
+public final class DowsingDagger extends CardImpl {
public DowsingDagger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/d/DowsingShaman.java b/Mage.Sets/src/mage/cards/d/DowsingShaman.java
index 3f35a3d2c4c..7fae9899999 100644
--- a/Mage.Sets/src/mage/cards/d/DowsingShaman.java
+++ b/Mage.Sets/src/mage/cards/d/DowsingShaman.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class DowsingShaman extends CardImpl {
+public final class DowsingShaman extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantment card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/d/DrJuliusJumblemorph.java b/Mage.Sets/src/mage/cards/d/DrJuliusJumblemorph.java
index e16331368a5..111fc6cc0cc 100644
--- a/Mage.Sets/src/mage/cards/d/DrJuliusJumblemorph.java
+++ b/Mage.Sets/src/mage/cards/d/DrJuliusJumblemorph.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author vereena42 & L_J
*/
-public class DrJuliusJumblemorph extends CardImpl {
+public final class DrJuliusJumblemorph extends CardImpl {
public DrJuliusJumblemorph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Draco.java b/Mage.Sets/src/mage/cards/d/Draco.java
index 12af257b086..bde896ecca9 100644
--- a/Mage.Sets/src/mage/cards/d/Draco.java
+++ b/Mage.Sets/src/mage/cards/d/Draco.java
@@ -49,7 +49,7 @@ import mage.util.CardUtil;
*
* @author Simown
*/
-public class Draco extends CardImpl {
+public final class Draco extends CardImpl {
public Draco(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{16}");
diff --git a/Mage.Sets/src/mage/cards/d/DraconianCylix.java b/Mage.Sets/src/mage/cards/d/DraconianCylix.java
index 071f47e65e6..32c7673a747 100644
--- a/Mage.Sets/src/mage/cards/d/DraconianCylix.java
+++ b/Mage.Sets/src/mage/cards/d/DraconianCylix.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DraconianCylix extends CardImpl {
+public final class DraconianCylix extends CardImpl {
public DraconianCylix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DraconicRoar.java b/Mage.Sets/src/mage/cards/d/DraconicRoar.java
index ac0d5b2eb57..c5d28a77928 100644
--- a/Mage.Sets/src/mage/cards/d/DraconicRoar.java
+++ b/Mage.Sets/src/mage/cards/d/DraconicRoar.java
@@ -52,7 +52,7 @@ import mage.watchers.common.DragonOnTheBattlefieldWhileSpellWasCastWatcher;
*
* @author LevelX2
*/
-public class DraconicRoar extends CardImpl {
+public final class DraconicRoar extends CardImpl {
private static final FilterCard filter = new FilterCard("a Dragon card from your hand (you don't have to)");
diff --git a/Mage.Sets/src/mage/cards/d/Dracoplasm.java b/Mage.Sets/src/mage/cards/d/Dracoplasm.java
index 1ccf4cfbe01..a51ed58a8c7 100644
--- a/Mage.Sets/src/mage/cards/d/Dracoplasm.java
+++ b/Mage.Sets/src/mage/cards/d/Dracoplasm.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class Dracoplasm extends CardImpl {
+public final class Dracoplasm extends CardImpl {
public Dracoplasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DrafnasRestoration.java b/Mage.Sets/src/mage/cards/d/DrafnasRestoration.java
index 27b1d26877c..4150ccd2a5e 100644
--- a/Mage.Sets/src/mage/cards/d/DrafnasRestoration.java
+++ b/Mage.Sets/src/mage/cards/d/DrafnasRestoration.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author emerald000
*/
-public class DrafnasRestoration extends CardImpl {
+public final class DrafnasRestoration extends CardImpl {
public DrafnasRestoration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DragDown.java b/Mage.Sets/src/mage/cards/d/DragDown.java
index 70411b8b631..0718611fbdd 100644
--- a/Mage.Sets/src/mage/cards/d/DragDown.java
+++ b/Mage.Sets/src/mage/cards/d/DragDown.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class DragDown extends CardImpl {
+public final class DragDown extends CardImpl {
public DragDown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DragUnder.java b/Mage.Sets/src/mage/cards/d/DragUnder.java
index 3fc832bad3e..f29d6f4c10c 100644
--- a/Mage.Sets/src/mage/cards/d/DragUnder.java
+++ b/Mage.Sets/src/mage/cards/d/DragUnder.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DragUnder extends CardImpl {
+public final class DragUnder extends CardImpl {
public DragUnder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonAppeasement.java b/Mage.Sets/src/mage/cards/d/DragonAppeasement.java
index 4af38e92122..02da218cd31 100644
--- a/Mage.Sets/src/mage/cards/d/DragonAppeasement.java
+++ b/Mage.Sets/src/mage/cards/d/DragonAppeasement.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author jeffwadsworth
*/
-public class DragonAppeasement extends CardImpl {
+public final class DragonAppeasement extends CardImpl {
public DragonAppeasement(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonArch.java b/Mage.Sets/src/mage/cards/d/DragonArch.java
index 66441fa4abe..6629e27df35 100644
--- a/Mage.Sets/src/mage/cards/d/DragonArch.java
+++ b/Mage.Sets/src/mage/cards/d/DragonArch.java
@@ -32,7 +32,7 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
* @author LoneFox
*/
-public class DragonArch extends CardImpl {
+public final class DragonArch extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a multicolored creature card");
@@ -57,7 +57,7 @@ public class DragonArch extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
// {2}, {T}: You may put a multicolored creature card from your hand onto the battlefield.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutPermanentOnBattlefieldEffect(filter),
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutCardFromHandOntoBattlefieldEffect(filter),
new ManaCostsImpl("{2}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/d/DragonBellMonk.java b/Mage.Sets/src/mage/cards/d/DragonBellMonk.java
index e2f15e05bc2..466d6d6c874 100644
--- a/Mage.Sets/src/mage/cards/d/DragonBellMonk.java
+++ b/Mage.Sets/src/mage/cards/d/DragonBellMonk.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DragonBellMonk extends CardImpl {
+public final class DragonBellMonk extends CardImpl {
public DragonBellMonk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonBlood.java b/Mage.Sets/src/mage/cards/d/DragonBlood.java
index 04037db027b..ea8cd53c32d 100644
--- a/Mage.Sets/src/mage/cards/d/DragonBlood.java
+++ b/Mage.Sets/src/mage/cards/d/DragonBlood.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DragonBlood extends CardImpl {
+public final class DragonBlood extends CardImpl {
public DragonBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonBreath.java b/Mage.Sets/src/mage/cards/d/DragonBreath.java
index 740b53850f7..a379ff9adc6 100644
--- a/Mage.Sets/src/mage/cards/d/DragonBreath.java
+++ b/Mage.Sets/src/mage/cards/d/DragonBreath.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class DragonBreath extends CardImpl {
+public final class DragonBreath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with converted mana cost 6 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DragonBroodmother.java b/Mage.Sets/src/mage/cards/d/DragonBroodmother.java
index 4b473f9c94c..0b6fd0d070d 100644
--- a/Mage.Sets/src/mage/cards/d/DragonBroodmother.java
+++ b/Mage.Sets/src/mage/cards/d/DragonBroodmother.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.DragonBroodmotherDragonToken;
*
* @author LevelX2
*/
-public class DragonBroodmother extends CardImpl {
+public final class DragonBroodmother extends CardImpl {
public DragonBroodmother(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonEgg.java b/Mage.Sets/src/mage/cards/d/DragonEgg.java
index cf74aefe4e1..d6eb781a010 100644
--- a/Mage.Sets/src/mage/cards/d/DragonEgg.java
+++ b/Mage.Sets/src/mage/cards/d/DragonEgg.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.DragonEggDragonToken;
*
* @author jeffwadsworth
*/
-public class DragonEgg extends CardImpl {
+public final class DragonEgg extends CardImpl {
public DragonEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonEngine.java b/Mage.Sets/src/mage/cards/d/DragonEngine.java
index da682db0288..dc7e41ef10f 100644
--- a/Mage.Sets/src/mage/cards/d/DragonEngine.java
+++ b/Mage.Sets/src/mage/cards/d/DragonEngine.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class DragonEngine extends CardImpl {
+public final class DragonEngine extends CardImpl {
public DragonEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonFangs.java b/Mage.Sets/src/mage/cards/d/DragonFangs.java
index deb49462de2..303f16f541f 100644
--- a/Mage.Sets/src/mage/cards/d/DragonFangs.java
+++ b/Mage.Sets/src/mage/cards/d/DragonFangs.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class DragonFangs extends CardImpl {
+public final class DragonFangs extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with converted mana cost 6 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DragonFodder.java b/Mage.Sets/src/mage/cards/d/DragonFodder.java
index 04f743bc7f1..0f0440ab42b 100644
--- a/Mage.Sets/src/mage/cards/d/DragonFodder.java
+++ b/Mage.Sets/src/mage/cards/d/DragonFodder.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author North
*/
-public class DragonFodder extends CardImpl {
+public final class DragonFodder extends CardImpl {
public DragonFodder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonGrip.java b/Mage.Sets/src/mage/cards/d/DragonGrip.java
index 34f06ac7a6a..e9caac69171 100644
--- a/Mage.Sets/src/mage/cards/d/DragonGrip.java
+++ b/Mage.Sets/src/mage/cards/d/DragonGrip.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DragonGrip extends CardImpl {
+public final class DragonGrip extends CardImpl {
public DragonGrip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonHatchling.java b/Mage.Sets/src/mage/cards/d/DragonHatchling.java
index ada22f4f664..cafbcd725eb 100644
--- a/Mage.Sets/src/mage/cards/d/DragonHatchling.java
+++ b/Mage.Sets/src/mage/cards/d/DragonHatchling.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class DragonHatchling extends CardImpl {
+public final class DragonHatchling extends CardImpl {
public DragonHatchling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonHunter.java b/Mage.Sets/src/mage/cards/d/DragonHunter.java
index 14ec0db0752..626b45c8add 100644
--- a/Mage.Sets/src/mage/cards/d/DragonHunter.java
+++ b/Mage.Sets/src/mage/cards/d/DragonHunter.java
@@ -43,7 +43,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class DragonHunter extends CardImpl {
+public final class DragonHunter extends CardImpl {
public DragonHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonMage.java b/Mage.Sets/src/mage/cards/d/DragonMage.java
index f40476506b0..96a41f676b9 100644
--- a/Mage.Sets/src/mage/cards/d/DragonMage.java
+++ b/Mage.Sets/src/mage/cards/d/DragonMage.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DragonMage extends CardImpl {
+public final class DragonMage extends CardImpl {
public DragonMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonMantle.java b/Mage.Sets/src/mage/cards/d/DragonMantle.java
index ef1ee3427fa..8550d35e9bb 100644
--- a/Mage.Sets/src/mage/cards/d/DragonMantle.java
+++ b/Mage.Sets/src/mage/cards/d/DragonMantle.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class DragonMantle extends CardImpl {
+public final class DragonMantle extends CardImpl {
public DragonMantle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonMask.java b/Mage.Sets/src/mage/cards/d/DragonMask.java
index 7bf95f9b845..23a84814bdf 100644
--- a/Mage.Sets/src/mage/cards/d/DragonMask.java
+++ b/Mage.Sets/src/mage/cards/d/DragonMask.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Quercitron
*/
-public class DragonMask extends CardImpl {
+public final class DragonMask extends CardImpl {
public DragonMask(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonRoost.java b/Mage.Sets/src/mage/cards/d/DragonRoost.java
index 107a4fabf88..2f71ce399e3 100644
--- a/Mage.Sets/src/mage/cards/d/DragonRoost.java
+++ b/Mage.Sets/src/mage/cards/d/DragonRoost.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.DragonToken2;
*
* @author Loki
*/
-public class DragonRoost extends CardImpl {
+public final class DragonRoost extends CardImpl {
public DragonRoost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonScales.java b/Mage.Sets/src/mage/cards/d/DragonScales.java
index bb0b0a66b60..520567c6248 100644
--- a/Mage.Sets/src/mage/cards/d/DragonScales.java
+++ b/Mage.Sets/src/mage/cards/d/DragonScales.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class DragonScales extends CardImpl {
+public final class DragonScales extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with converted mana cost 6 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DragonScarredBear.java b/Mage.Sets/src/mage/cards/d/DragonScarredBear.java
index 1c6dc5d5ca7..5a183c01dcb 100644
--- a/Mage.Sets/src/mage/cards/d/DragonScarredBear.java
+++ b/Mage.Sets/src/mage/cards/d/DragonScarredBear.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DragonScarredBear extends CardImpl {
+public final class DragonScarredBear extends CardImpl {
public DragonScarredBear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonShadow.java b/Mage.Sets/src/mage/cards/d/DragonShadow.java
index 77bb4e0fe6c..1ad0c34d3b0 100644
--- a/Mage.Sets/src/mage/cards/d/DragonShadow.java
+++ b/Mage.Sets/src/mage/cards/d/DragonShadow.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class DragonShadow extends CardImpl {
+public final class DragonShadow extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with converted mana cost 6 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DragonStyleTwins.java b/Mage.Sets/src/mage/cards/d/DragonStyleTwins.java
index 976eea92e7e..9ca3615de20 100644
--- a/Mage.Sets/src/mage/cards/d/DragonStyleTwins.java
+++ b/Mage.Sets/src/mage/cards/d/DragonStyleTwins.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DragonStyleTwins extends CardImpl {
+public final class DragonStyleTwins extends CardImpl {
public DragonStyleTwins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonTempest.java b/Mage.Sets/src/mage/cards/d/DragonTempest.java
index 98ae8fb94f9..06c80dfaecb 100644
--- a/Mage.Sets/src/mage/cards/d/DragonTempest.java
+++ b/Mage.Sets/src/mage/cards/d/DragonTempest.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class DragonTempest extends CardImpl {
+public final class DragonTempest extends CardImpl {
private static final FilterCreaturePermanent filterFlying = new FilterCreaturePermanent("a creature with flying");
diff --git a/Mage.Sets/src/mage/cards/d/DragonThroneOfTarkir.java b/Mage.Sets/src/mage/cards/d/DragonThroneOfTarkir.java
index 63dd1a0da57..7a6fd76a3de 100644
--- a/Mage.Sets/src/mage/cards/d/DragonThroneOfTarkir.java
+++ b/Mage.Sets/src/mage/cards/d/DragonThroneOfTarkir.java
@@ -51,7 +51,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class DragonThroneOfTarkir extends CardImpl {
+public final class DragonThroneOfTarkir extends CardImpl {
public DragonThroneOfTarkir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonTyrant.java b/Mage.Sets/src/mage/cards/d/DragonTyrant.java
index 4569603d451..4531036d5b4 100644
--- a/Mage.Sets/src/mage/cards/d/DragonTyrant.java
+++ b/Mage.Sets/src/mage/cards/d/DragonTyrant.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class DragonTyrant extends CardImpl {
+public final class DragonTyrant extends CardImpl {
public DragonTyrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonWhelp.java b/Mage.Sets/src/mage/cards/d/DragonWhelp.java
index f8d8f0ff8ad..1c9283b1916 100644
--- a/Mage.Sets/src/mage/cards/d/DragonWhelp.java
+++ b/Mage.Sets/src/mage/cards/d/DragonWhelp.java
@@ -52,7 +52,7 @@ import mage.game.Game;
*
* @author North
*/
-public class DragonWhelp extends CardImpl {
+public final class DragonWhelp extends CardImpl {
public DragonWhelp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonWhisperer.java b/Mage.Sets/src/mage/cards/d/DragonWhisperer.java
index 6197d7437e1..299db794437 100644
--- a/Mage.Sets/src/mage/cards/d/DragonWhisperer.java
+++ b/Mage.Sets/src/mage/cards/d/DragonWhisperer.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.DragonToken;
*
* @author fireshoes
*/
-public class DragonWhisperer extends CardImpl {
+public final class DragonWhisperer extends CardImpl {
public DragonWhisperer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonWings.java b/Mage.Sets/src/mage/cards/d/DragonWings.java
index 22e1b24c2a6..f4feb627ea7 100644
--- a/Mage.Sets/src/mage/cards/d/DragonWings.java
+++ b/Mage.Sets/src/mage/cards/d/DragonWings.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class DragonWings extends CardImpl {
+public final class DragonWings extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with converted mana cost 6 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DragonlairSpider.java b/Mage.Sets/src/mage/cards/d/DragonlairSpider.java
index 1cb888dcb14..1b337349ae4 100644
--- a/Mage.Sets/src/mage/cards/d/DragonlairSpider.java
+++ b/Mage.Sets/src/mage/cards/d/DragonlairSpider.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.InsectToken;
*
* @author LevelX2
*/
-public class DragonlairSpider extends CardImpl {
+public final class DragonlairSpider extends CardImpl {
public DragonlairSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonloftIdol.java b/Mage.Sets/src/mage/cards/d/DragonloftIdol.java
index 72293b35376..b9af7cbf502 100644
--- a/Mage.Sets/src/mage/cards/d/DragonloftIdol.java
+++ b/Mage.Sets/src/mage/cards/d/DragonloftIdol.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class DragonloftIdol extends CardImpl {
+public final class DragonloftIdol extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dragon");
diff --git a/Mage.Sets/src/mage/cards/d/DragonlordAtarka.java b/Mage.Sets/src/mage/cards/d/DragonlordAtarka.java
index fdbc872fd80..0fb508bb0e1 100644
--- a/Mage.Sets/src/mage/cards/d/DragonlordAtarka.java
+++ b/Mage.Sets/src/mage/cards/d/DragonlordAtarka.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreatureOrPlaneswalkerAmount;
*
* @author fireshoes
*/
-public class DragonlordAtarka extends CardImpl {
+public final class DragonlordAtarka extends CardImpl {
private static final FilterCreatureOrPlaneswalkerPermanent filter = new FilterCreatureOrPlaneswalkerPermanent("target creatures and/or planeswalkers your opponents control");
diff --git a/Mage.Sets/src/mage/cards/d/DragonlordDromoka.java b/Mage.Sets/src/mage/cards/d/DragonlordDromoka.java
index 9ebd5ad7939..a548a3f6c31 100644
--- a/Mage.Sets/src/mage/cards/d/DragonlordDromoka.java
+++ b/Mage.Sets/src/mage/cards/d/DragonlordDromoka.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class DragonlordDromoka extends CardImpl {
+public final class DragonlordDromoka extends CardImpl {
public DragonlordDromoka(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonlordKolaghan.java b/Mage.Sets/src/mage/cards/d/DragonlordKolaghan.java
index 05ff26a5c1f..5b7551c0538 100644
--- a/Mage.Sets/src/mage/cards/d/DragonlordKolaghan.java
+++ b/Mage.Sets/src/mage/cards/d/DragonlordKolaghan.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DragonlordKolaghan extends CardImpl {
+public final class DragonlordKolaghan extends CardImpl {
public DragonlordKolaghan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonlordOjutai.java b/Mage.Sets/src/mage/cards/d/DragonlordOjutai.java
index 022f45f42a2..f452518bff5 100644
--- a/Mage.Sets/src/mage/cards/d/DragonlordOjutai.java
+++ b/Mage.Sets/src/mage/cards/d/DragonlordOjutai.java
@@ -52,7 +52,7 @@ import mage.filter.FilterCard;
*
* @author fireshoes
*/
-public class DragonlordOjutai extends CardImpl {
+public final class DragonlordOjutai extends CardImpl {
public DragonlordOjutai(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonlordSilumgar.java b/Mage.Sets/src/mage/cards/d/DragonlordSilumgar.java
index 153660b4bef..0c36b5dda75 100644
--- a/Mage.Sets/src/mage/cards/d/DragonlordSilumgar.java
+++ b/Mage.Sets/src/mage/cards/d/DragonlordSilumgar.java
@@ -57,7 +57,7 @@ import mage.util.GameLog;
*
* @author jeffwadsworth
*/
-public class DragonlordSilumgar extends CardImpl {
+public final class DragonlordSilumgar extends CardImpl {
public DragonlordSilumgar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java b/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java
index fbec752380d..ad6ca827798 100644
--- a/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java
+++ b/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class DragonlordsPrerogative extends CardImpl {
+public final class DragonlordsPrerogative extends CardImpl {
private static final FilterCard filter = new FilterCard("a Dragon card from your hand");
diff --git a/Mage.Sets/src/mage/cards/d/DragonlordsServant.java b/Mage.Sets/src/mage/cards/d/DragonlordsServant.java
index 2ce32aa1e84..270e0e1b2c7 100644
--- a/Mage.Sets/src/mage/cards/d/DragonlordsServant.java
+++ b/Mage.Sets/src/mage/cards/d/DragonlordsServant.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class DragonlordsServant extends CardImpl {
+public final class DragonlordsServant extends CardImpl {
private static final FilterCard filter = new FilterCard("Dragon spells");
diff --git a/Mage.Sets/src/mage/cards/d/DragonmasterOutcast.java b/Mage.Sets/src/mage/cards/d/DragonmasterOutcast.java
index ed6c7cc3f61..b8282c06a18 100644
--- a/Mage.Sets/src/mage/cards/d/DragonmasterOutcast.java
+++ b/Mage.Sets/src/mage/cards/d/DragonmasterOutcast.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.DragonToken2;
*
* @author jeffwadsworth
*/
-public class DragonmasterOutcast extends CardImpl {
+public final class DragonmasterOutcast extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("land");
diff --git a/Mage.Sets/src/mage/cards/d/Dragonrage.java b/Mage.Sets/src/mage/cards/d/Dragonrage.java
index a9fc96860b1..574665ba121 100644
--- a/Mage.Sets/src/mage/cards/d/Dragonrage.java
+++ b/Mage.Sets/src/mage/cards/d/Dragonrage.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.AttackingPredicate;
*
* @author LevelX2
*/
-public class Dragonrage extends CardImpl {
+public final class Dragonrage extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("attacking creature you control");
diff --git a/Mage.Sets/src/mage/cards/d/DragonsClaw.java b/Mage.Sets/src/mage/cards/d/DragonsClaw.java
index f259878511b..2c3a687239c 100644
--- a/Mage.Sets/src/mage/cards/d/DragonsClaw.java
+++ b/Mage.Sets/src/mage/cards/d/DragonsClaw.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class DragonsClaw extends CardImpl {
+public final class DragonsClaw extends CardImpl {
private final static FilterSpell filter = new FilterSpell("a red spell");
diff --git a/Mage.Sets/src/mage/cards/d/DragonsEyeSavants.java b/Mage.Sets/src/mage/cards/d/DragonsEyeSavants.java
index 5f8a5b2e345..21c039de907 100644
--- a/Mage.Sets/src/mage/cards/d/DragonsEyeSavants.java
+++ b/Mage.Sets/src/mage/cards/d/DragonsEyeSavants.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author emerald000
*/
-public class DragonsEyeSavants extends CardImpl {
+public final class DragonsEyeSavants extends CardImpl {
private final static FilterCard filter = new FilterCard("a blue card in your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DragonsEyeSentry.java b/Mage.Sets/src/mage/cards/d/DragonsEyeSentry.java
index 81f7e75f00e..72def7a87de 100644
--- a/Mage.Sets/src/mage/cards/d/DragonsEyeSentry.java
+++ b/Mage.Sets/src/mage/cards/d/DragonsEyeSentry.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DragonsEyeSentry extends CardImpl {
+public final class DragonsEyeSentry extends CardImpl {
public DragonsEyeSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonsHerald.java b/Mage.Sets/src/mage/cards/d/DragonsHerald.java
index c0c5b9cf385..873d29027b4 100644
--- a/Mage.Sets/src/mage/cards/d/DragonsHerald.java
+++ b/Mage.Sets/src/mage/cards/d/DragonsHerald.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class DragonsHerald extends CardImpl {
+public final class DragonsHerald extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Hellkite Overlord");
private static final FilterControlledCreaturePermanent filterBlack = new FilterControlledCreaturePermanent("a black creature");
diff --git a/Mage.Sets/src/mage/cards/d/DragonscaleBoon.java b/Mage.Sets/src/mage/cards/d/DragonscaleBoon.java
index 06d352b110b..4a9704d0996 100644
--- a/Mage.Sets/src/mage/cards/d/DragonscaleBoon.java
+++ b/Mage.Sets/src/mage/cards/d/DragonscaleBoon.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DragonscaleBoon extends CardImpl {
+public final class DragonscaleBoon extends CardImpl {
public DragonscaleBoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonscaleGeneral.java b/Mage.Sets/src/mage/cards/d/DragonscaleGeneral.java
index 1204c0b234a..b5f0d3fd32e 100644
--- a/Mage.Sets/src/mage/cards/d/DragonscaleGeneral.java
+++ b/Mage.Sets/src/mage/cards/d/DragonscaleGeneral.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LevelX2
*/
-public class DragonscaleGeneral extends CardImpl {
+public final class DragonscaleGeneral extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/d/Dragonshift.java b/Mage.Sets/src/mage/cards/d/Dragonshift.java
index f83827191e4..6a33d2f13d8 100644
--- a/Mage.Sets/src/mage/cards/d/Dragonshift.java
+++ b/Mage.Sets/src/mage/cards/d/Dragonshift.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class Dragonshift extends CardImpl {
+public final class Dragonshift extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("all creatures you controls");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DragonskullSummit.java b/Mage.Sets/src/mage/cards/d/DragonskullSummit.java
index 4238fa73604..d23aac603d0 100644
--- a/Mage.Sets/src/mage/cards/d/DragonskullSummit.java
+++ b/Mage.Sets/src/mage/cards/d/DragonskullSummit.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class DragonskullSummit extends CardImpl {
+public final class DragonskullSummit extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/d/DragonsoulKnight.java b/Mage.Sets/src/mage/cards/d/DragonsoulKnight.java
index 5d8189be3f1..c2d6b83ac6a 100644
--- a/Mage.Sets/src/mage/cards/d/DragonsoulKnight.java
+++ b/Mage.Sets/src/mage/cards/d/DragonsoulKnight.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class DragonsoulKnight extends CardImpl {
+public final class DragonsoulKnight extends CardImpl {
public DragonsoulKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DragonspeakerShaman.java b/Mage.Sets/src/mage/cards/d/DragonspeakerShaman.java
index d97b0a64448..2e21647e927 100644
--- a/Mage.Sets/src/mage/cards/d/DragonspeakerShaman.java
+++ b/Mage.Sets/src/mage/cards/d/DragonspeakerShaman.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class DragonspeakerShaman extends CardImpl {
+public final class DragonspeakerShaman extends CardImpl {
private static final FilterCard filter = new FilterCard("Dragon spells");
diff --git a/Mage.Sets/src/mage/cards/d/Dragonstalker.java b/Mage.Sets/src/mage/cards/d/Dragonstalker.java
index db993dd79f9..93827d5c7e4 100644
--- a/Mage.Sets/src/mage/cards/d/Dragonstalker.java
+++ b/Mage.Sets/src/mage/cards/d/Dragonstalker.java
@@ -41,7 +41,7 @@ import mage.filter.FilterPermanent;
*
* @author LevelX2
*/
-public class Dragonstalker extends CardImpl {
+public final class Dragonstalker extends CardImpl {
public Dragonstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Dragonstorm.java b/Mage.Sets/src/mage/cards/d/Dragonstorm.java
index 8c376b4efc5..0ee6c3ab5c9 100644
--- a/Mage.Sets/src/mage/cards/d/Dragonstorm.java
+++ b/Mage.Sets/src/mage/cards/d/Dragonstorm.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class Dragonstorm extends CardImpl {
+public final class Dragonstorm extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Dragon permanent card");
diff --git a/Mage.Sets/src/mage/cards/d/DrainLife.java b/Mage.Sets/src/mage/cards/d/DrainLife.java
index 435096709d6..bcd07081731 100644
--- a/Mage.Sets/src/mage/cards/d/DrainLife.java
+++ b/Mage.Sets/src/mage/cards/d/DrainLife.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
* @author KholdFuzion
*
*/
-public class DrainLife extends CardImpl {
+public final class DrainLife extends CardImpl {
static final FilterMana filterBlack = new FilterMana();
diff --git a/Mage.Sets/src/mage/cards/d/DrainPower.java b/Mage.Sets/src/mage/cards/d/DrainPower.java
index 8e81cc943cb..c336ff64d69 100644
--- a/Mage.Sets/src/mage/cards/d/DrainPower.java
+++ b/Mage.Sets/src/mage/cards/d/DrainPower.java
@@ -56,7 +56,7 @@ import mage.target.TargetPlayer;
*
* @author L_J
*/
-public class DrainPower extends CardImpl {
+public final class DrainPower extends CardImpl {
public DrainPower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}{U}");
@@ -102,7 +102,7 @@ class DrainPowerEffect extends OneShotEffect {
List ignorePermanents = new ArrayList<>();
Map> manaAbilitiesMap = new HashMap<>();
TargetPermanent target = null;
-
+
while (true) {
manaAbilitiesMap.clear();
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, targetPlayer.getId(), game)) {
@@ -112,7 +112,7 @@ class DrainPowerEffect extends OneShotEffect {
for (Ability ability : permanent.getAbilities()) {
if (ability instanceof ActivatedAbility && ability.getAbilityType() == AbilityType.MANA) {
ActivatedManaAbilityImpl manaAbility = (ActivatedManaAbilityImpl) ability;
- if (manaAbility != null && manaAbility.canActivate(targetPlayer.getId(), game)) {
+ if (manaAbility.canActivate(targetPlayer.getId(), game).canActivate()) {
// canActivate can't check for mana abilities that require a mana cost, if the payment isn't possible (Cabal Coffers etc)
// so it's necessary to filter them out manually - might be buggy in some fringe cases
for (ManaCost manaCost : manaAbility.getManaCosts()) {
diff --git a/Mage.Sets/src/mage/cards/d/DrainTheWell.java b/Mage.Sets/src/mage/cards/d/DrainTheWell.java
index 68123083688..7e1bfe17446 100644
--- a/Mage.Sets/src/mage/cards/d/DrainTheWell.java
+++ b/Mage.Sets/src/mage/cards/d/DrainTheWell.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki
*/
-public class DrainTheWell extends CardImpl {
+public final class DrainTheWell extends CardImpl {
public DrainTheWell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B/G}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/d/DrainingWhelk.java b/Mage.Sets/src/mage/cards/d/DrainingWhelk.java
index 33600b0be6d..8bb99bae829 100644
--- a/Mage.Sets/src/mage/cards/d/DrainingWhelk.java
+++ b/Mage.Sets/src/mage/cards/d/DrainingWhelk.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
*
* @author emerald000
*/
-public class DrainingWhelk extends CardImpl {
+public final class DrainingWhelk extends CardImpl {
public DrainingWhelk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DrainpipeVermin.java b/Mage.Sets/src/mage/cards/d/DrainpipeVermin.java
index 9883194f2b7..433e02d0142 100644
--- a/Mage.Sets/src/mage/cards/d/DrainpipeVermin.java
+++ b/Mage.Sets/src/mage/cards/d/DrainpipeVermin.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class DrainpipeVermin extends CardImpl {
+public final class DrainpipeVermin extends CardImpl {
public DrainpipeVermin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrakeFamiliar.java b/Mage.Sets/src/mage/cards/d/DrakeFamiliar.java
index 5ae94f8dee2..8f6a58314d2 100644
--- a/Mage.Sets/src/mage/cards/d/DrakeFamiliar.java
+++ b/Mage.Sets/src/mage/cards/d/DrakeFamiliar.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class DrakeFamiliar extends CardImpl {
+public final class DrakeFamiliar extends CardImpl {
public DrakeFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DrakeHatchling.java b/Mage.Sets/src/mage/cards/d/DrakeHatchling.java
index 5a17e48b56d..df090832b1c 100644
--- a/Mage.Sets/src/mage/cards/d/DrakeHatchling.java
+++ b/Mage.Sets/src/mage/cards/d/DrakeHatchling.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class DrakeHatchling extends CardImpl {
+public final class DrakeHatchling extends CardImpl {
public DrakeHatchling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DrakeHaven.java b/Mage.Sets/src/mage/cards/d/DrakeHaven.java
index 2700bc47e8d..bc2de8f96fc 100644
--- a/Mage.Sets/src/mage/cards/d/DrakeHaven.java
+++ b/Mage.Sets/src/mage/cards/d/DrakeHaven.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.DrakeToken;
*
* @author fireshoes
*/
-public class DrakeHaven extends CardImpl {
+public final class DrakeHaven extends CardImpl {
public DrakeHaven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DrakeSkullCameo.java b/Mage.Sets/src/mage/cards/d/DrakeSkullCameo.java
index a1d3312e1a7..05dd920bfab 100644
--- a/Mage.Sets/src/mage/cards/d/DrakeSkullCameo.java
+++ b/Mage.Sets/src/mage/cards/d/DrakeSkullCameo.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class DrakeSkullCameo extends CardImpl {
+public final class DrakeSkullCameo extends CardImpl {
public DrakeSkullCameo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DrakeUmbra.java b/Mage.Sets/src/mage/cards/d/DrakeUmbra.java
index 466fc553a7e..7f88dfe3422 100644
--- a/Mage.Sets/src/mage/cards/d/DrakeUmbra.java
+++ b/Mage.Sets/src/mage/cards/d/DrakeUmbra.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DrakeUmbra extends CardImpl {
+public final class DrakeUmbra extends CardImpl {
public DrakeUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DrakestownForgotten.java b/Mage.Sets/src/mage/cards/d/DrakestownForgotten.java
index 60ecd71c8ae..2c24438bd58 100644
--- a/Mage.Sets/src/mage/cards/d/DrakestownForgotten.java
+++ b/Mage.Sets/src/mage/cards/d/DrakestownForgotten.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class DrakestownForgotten extends CardImpl {
+public final class DrakestownForgotten extends CardImpl {
public DrakestownForgotten(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrakewingKrasis.java b/Mage.Sets/src/mage/cards/d/DrakewingKrasis.java
index b1301cc0c39..4c32ada6b8b 100644
--- a/Mage.Sets/src/mage/cards/d/DrakewingKrasis.java
+++ b/Mage.Sets/src/mage/cards/d/DrakewingKrasis.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class DrakewingKrasis extends CardImpl {
+public final class DrakewingKrasis extends CardImpl {
public DrakewingKrasis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DralnuLichLord.java b/Mage.Sets/src/mage/cards/d/DralnuLichLord.java
index eed0ae78bfc..48f62323814 100644
--- a/Mage.Sets/src/mage/cards/d/DralnuLichLord.java
+++ b/Mage.Sets/src/mage/cards/d/DralnuLichLord.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class DralnuLichLord extends CardImpl {
+public final class DralnuLichLord extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card in your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DralnusCrusade.java b/Mage.Sets/src/mage/cards/d/DralnusCrusade.java
index e52a0e6c2ed..6a6790b700c 100755
--- a/Mage.Sets/src/mage/cards/d/DralnusCrusade.java
+++ b/Mage.Sets/src/mage/cards/d/DralnusCrusade.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author brikr
*/
-public class DralnusCrusade extends CardImpl {
+public final class DralnusCrusade extends CardImpl {
public DralnusCrusade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DralnusPet.java b/Mage.Sets/src/mage/cards/d/DralnusPet.java
index 8627591833a..990e2808cd4 100644
--- a/Mage.Sets/src/mage/cards/d/DralnusPet.java
+++ b/Mage.Sets/src/mage/cards/d/DralnusPet.java
@@ -62,7 +62,7 @@ import mage.players.Player;
* @author LoneFox
* @author LevelX
*/
-public class DralnusPet extends CardImpl {
+public final class DralnusPet extends CardImpl {
public DralnusPet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DramaticEntrance.java b/Mage.Sets/src/mage/cards/d/DramaticEntrance.java
index 610c17b2bed..c65b57a3703 100644
--- a/Mage.Sets/src/mage/cards/d/DramaticEntrance.java
+++ b/Mage.Sets/src/mage/cards/d/DramaticEntrance.java
@@ -29,7 +29,7 @@ package mage.cards.d;
import java.util.UUID;
import mage.ObjectColor;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class DramaticEntrance extends CardImpl {
+public final class DramaticEntrance extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a green creature card");
@@ -52,7 +52,7 @@ public class DramaticEntrance extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}{G}");
// You may put a green creature card from your hand onto the battlefield.
- this.getSpellAbility().addEffect(new PutPermanentOnBattlefieldEffect(filter));
+ this.getSpellAbility().addEffect(new PutCardFromHandOntoBattlefieldEffect(filter));
}
diff --git a/Mage.Sets/src/mage/cards/d/DramaticRescue.java b/Mage.Sets/src/mage/cards/d/DramaticRescue.java
index 53410310133..3ad03839335 100644
--- a/Mage.Sets/src/mage/cards/d/DramaticRescue.java
+++ b/Mage.Sets/src/mage/cards/d/DramaticRescue.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DramaticRescue extends CardImpl {
+public final class DramaticRescue extends CardImpl {
public DramaticRescue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DramaticReversal.java b/Mage.Sets/src/mage/cards/d/DramaticReversal.java
index 8b91aff5362..ca88c48b7ce 100644
--- a/Mage.Sets/src/mage/cards/d/DramaticReversal.java
+++ b/Mage.Sets/src/mage/cards/d/DramaticReversal.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class DramaticReversal extends CardImpl {
+public final class DramaticReversal extends CardImpl {
private final static FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanents");
diff --git a/Mage.Sets/src/mage/cards/d/DranaKalastriaBloodchief.java b/Mage.Sets/src/mage/cards/d/DranaKalastriaBloodchief.java
index f002df3e401..1f4433654d2 100644
--- a/Mage.Sets/src/mage/cards/d/DranaKalastriaBloodchief.java
+++ b/Mage.Sets/src/mage/cards/d/DranaKalastriaBloodchief.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DranaKalastriaBloodchief extends CardImpl {
+public final class DranaKalastriaBloodchief extends CardImpl {
public DranaKalastriaBloodchief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DranaLiberatorOfMalakir.java b/Mage.Sets/src/mage/cards/d/DranaLiberatorOfMalakir.java
index 494019be5ec..609d64f5936 100644
--- a/Mage.Sets/src/mage/cards/d/DranaLiberatorOfMalakir.java
+++ b/Mage.Sets/src/mage/cards/d/DranaLiberatorOfMalakir.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class DranaLiberatorOfMalakir extends CardImpl {
+public final class DranaLiberatorOfMalakir extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("each attacking creature you control");
diff --git a/Mage.Sets/src/mage/cards/d/DranasChosen.java b/Mage.Sets/src/mage/cards/d/DranasChosen.java
index de0f85b541c..25585e986e8 100644
--- a/Mage.Sets/src/mage/cards/d/DranasChosen.java
+++ b/Mage.Sets/src/mage/cards/d/DranasChosen.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class DranasChosen extends CardImpl {
+public final class DranasChosen extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control");
diff --git a/Mage.Sets/src/mage/cards/d/DranasEmissary.java b/Mage.Sets/src/mage/cards/d/DranasEmissary.java
index 68dca9447fd..923b80af293 100644
--- a/Mage.Sets/src/mage/cards/d/DranasEmissary.java
+++ b/Mage.Sets/src/mage/cards/d/DranasEmissary.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class DranasEmissary extends CardImpl {
+public final class DranasEmissary extends CardImpl {
public DranasEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrasticRevelation.java b/Mage.Sets/src/mage/cards/d/DrasticRevelation.java
index b9dc1c5fb6c..73ef93b9aa4 100644
--- a/Mage.Sets/src/mage/cards/d/DrasticRevelation.java
+++ b/Mage.Sets/src/mage/cards/d/DrasticRevelation.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class DrasticRevelation extends CardImpl {
+public final class DrasticRevelation extends CardImpl {
public DrasticRevelation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/Dread.java b/Mage.Sets/src/mage/cards/d/Dread.java
index a2ec93af042..afc7c54ec81 100644
--- a/Mage.Sets/src/mage/cards/d/Dread.java
+++ b/Mage.Sets/src/mage/cards/d/Dread.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class Dread extends CardImpl {
+public final class Dread extends CardImpl {
public Dread(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreadCacodemon.java b/Mage.Sets/src/mage/cards/d/DreadCacodemon.java
index 1718fec5c94..1df419670f5 100644
--- a/Mage.Sets/src/mage/cards/d/DreadCacodemon.java
+++ b/Mage.Sets/src/mage/cards/d/DreadCacodemon.java
@@ -48,7 +48,7 @@ import mage.watchers.common.CastFromHandWatcher;
/**
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class DreadCacodemon extends CardImpl {
+public final class DreadCacodemon extends CardImpl {
private static final FilterCreaturePermanent opponentsCreatures = new FilterCreaturePermanent("creatures your opponents control");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DreadCharge.java b/Mage.Sets/src/mage/cards/d/DreadCharge.java
index e7c8819cbf9..3e5ab6997f2 100644
--- a/Mage.Sets/src/mage/cards/d/DreadCharge.java
+++ b/Mage.Sets/src/mage/cards/d/DreadCharge.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author L_J
*/
-public class DreadCharge extends CardImpl {
+public final class DreadCharge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Black creatures you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("except by black creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DreadDefiler.java b/Mage.Sets/src/mage/cards/d/DreadDefiler.java
index a1df325e4cf..c350d65e5a5 100644
--- a/Mage.Sets/src/mage/cards/d/DreadDefiler.java
+++ b/Mage.Sets/src/mage/cards/d/DreadDefiler.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class DreadDefiler extends CardImpl {
+public final class DreadDefiler extends CardImpl {
public DreadDefiler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreadDrone.java b/Mage.Sets/src/mage/cards/d/DreadDrone.java
index 74d36f4e671..b9aabf12e7f 100644
--- a/Mage.Sets/src/mage/cards/d/DreadDrone.java
+++ b/Mage.Sets/src/mage/cards/d/DreadDrone.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.EldraziSpawnToken;
*
* @author Loki
*/
-public class DreadDrone extends CardImpl {
+public final class DreadDrone extends CardImpl {
public DreadDrone (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreadOfNight.java b/Mage.Sets/src/mage/cards/d/DreadOfNight.java
index d0b28a6727d..ac415e4af6a 100644
--- a/Mage.Sets/src/mage/cards/d/DreadOfNight.java
+++ b/Mage.Sets/src/mage/cards/d/DreadOfNight.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class DreadOfNight extends CardImpl {
+public final class DreadOfNight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DreadReaper.java b/Mage.Sets/src/mage/cards/d/DreadReaper.java
index fd0c7ae5ea8..97fb60f7b60 100644
--- a/Mage.Sets/src/mage/cards/d/DreadReaper.java
+++ b/Mage.Sets/src/mage/cards/d/DreadReaper.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DreadReaper extends CardImpl {
+public final class DreadReaper extends CardImpl {
public DreadReaper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreadReturn.java b/Mage.Sets/src/mage/cards/d/DreadReturn.java
index 9feb2b51d79..f2b36a2005e 100644
--- a/Mage.Sets/src/mage/cards/d/DreadReturn.java
+++ b/Mage.Sets/src/mage/cards/d/DreadReturn.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jonubuu
*/
-public class DreadReturn extends CardImpl {
+public final class DreadReturn extends CardImpl {
public DreadReturn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreadShade.java b/Mage.Sets/src/mage/cards/d/DreadShade.java
index 2f9b36add0c..f570c4113ac 100644
--- a/Mage.Sets/src/mage/cards/d/DreadShade.java
+++ b/Mage.Sets/src/mage/cards/d/DreadShade.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class DreadShade extends CardImpl {
+public final class DreadShade extends CardImpl {
public DreadShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreadSlag.java b/Mage.Sets/src/mage/cards/d/DreadSlag.java
index e004ae30379..2da712d50d3 100644
--- a/Mage.Sets/src/mage/cards/d/DreadSlag.java
+++ b/Mage.Sets/src/mage/cards/d/DreadSlag.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class DreadSlag extends CardImpl {
+public final class DreadSlag extends CardImpl {
public DreadSlag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DreadSlaver.java b/Mage.Sets/src/mage/cards/d/DreadSlaver.java
index 27028db67b2..4807f690cca 100644
--- a/Mage.Sets/src/mage/cards/d/DreadSlaver.java
+++ b/Mage.Sets/src/mage/cards/d/DreadSlaver.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author noxx
*/
-public class DreadSlaver extends CardImpl {
+public final class DreadSlaver extends CardImpl {
public DreadSlaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreadSpecter.java b/Mage.Sets/src/mage/cards/d/DreadSpecter.java
index 4f8f3c8cbfc..2aaef426dca 100644
--- a/Mage.Sets/src/mage/cards/d/DreadSpecter.java
+++ b/Mage.Sets/src/mage/cards/d/DreadSpecter.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author djbrez
*/
-public class DreadSpecter extends CardImpl {
+public final class DreadSpecter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/d/DreadStatuary.java b/Mage.Sets/src/mage/cards/d/DreadStatuary.java
index ebc23f44ebb..1ed6372a0e7 100644
--- a/Mage.Sets/src/mage/cards/d/DreadStatuary.java
+++ b/Mage.Sets/src/mage/cards/d/DreadStatuary.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.Token;
*
* @author BetaSteward_at_googlemail.com
*/
-public class DreadStatuary extends CardImpl {
+public final class DreadStatuary extends CardImpl {
public DreadStatuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/d/DreadSummons.java b/Mage.Sets/src/mage/cards/d/DreadSummons.java
index c948c7bac80..f90ebc85b88 100644
--- a/Mage.Sets/src/mage/cards/d/DreadSummons.java
+++ b/Mage.Sets/src/mage/cards/d/DreadSummons.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DreadSummons extends CardImpl {
+public final class DreadSummons extends CardImpl {
public DreadSummons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreadWanderer.java b/Mage.Sets/src/mage/cards/d/DreadWanderer.java
index 5026d0ae602..b432206794b 100644
--- a/Mage.Sets/src/mage/cards/d/DreadWanderer.java
+++ b/Mage.Sets/src/mage/cards/d/DreadWanderer.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class DreadWanderer extends CardImpl {
+public final class DreadWanderer extends CardImpl {
public DreadWanderer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreadWarlock.java b/Mage.Sets/src/mage/cards/d/DreadWarlock.java
index adc08998449..6076e22c66c 100644
--- a/Mage.Sets/src/mage/cards/d/DreadWarlock.java
+++ b/Mage.Sets/src/mage/cards/d/DreadWarlock.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class DreadWarlock extends CardImpl {
+public final class DreadWarlock extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by black creatures");
diff --git a/Mage.Sets/src/mage/cards/d/Dreadbore.java b/Mage.Sets/src/mage/cards/d/Dreadbore.java
index c74b725b6a9..5f5c0e089df 100644
--- a/Mage.Sets/src/mage/cards/d/Dreadbore.java
+++ b/Mage.Sets/src/mage/cards/d/Dreadbore.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
/**
* @author magenoxx_at_gmail.com
*/
-public class Dreadbore extends CardImpl {
+public final class Dreadbore extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or planeswalker");
diff --git a/Mage.Sets/src/mage/cards/d/DreadbringerLampads.java b/Mage.Sets/src/mage/cards/d/DreadbringerLampads.java
index 82695e47dbe..e72fc49f35f 100644
--- a/Mage.Sets/src/mage/cards/d/DreadbringerLampads.java
+++ b/Mage.Sets/src/mage/cards/d/DreadbringerLampads.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DreadbringerLampads extends CardImpl {
+public final class DreadbringerLampads extends CardImpl {
public DreadbringerLampads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreadshipReef.java b/Mage.Sets/src/mage/cards/d/DreadshipReef.java
index 61590b0b361..da045820898 100644
--- a/Mage.Sets/src/mage/cards/d/DreadshipReef.java
+++ b/Mage.Sets/src/mage/cards/d/DreadshipReef.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class DreadshipReef extends CardImpl {
+public final class DreadshipReef extends CardImpl {
public DreadshipReef(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/Dreadwaters.java b/Mage.Sets/src/mage/cards/d/Dreadwaters.java
index b724ee4b587..24684ac011a 100644
--- a/Mage.Sets/src/mage/cards/d/Dreadwaters.java
+++ b/Mage.Sets/src/mage/cards/d/Dreadwaters.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
* @author noxx
*/
-public class Dreadwaters extends CardImpl {
+public final class Dreadwaters extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("lands you control");
diff --git a/Mage.Sets/src/mage/cards/d/Dreadwing.java b/Mage.Sets/src/mage/cards/d/Dreadwing.java
index 2bd44ccba6c..a0b7b08fd38 100644
--- a/Mage.Sets/src/mage/cards/d/Dreadwing.java
+++ b/Mage.Sets/src/mage/cards/d/Dreadwing.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Dreadwing extends CardImpl {
+public final class Dreadwing extends CardImpl {
public Dreadwing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamCache.java b/Mage.Sets/src/mage/cards/d/DreamCache.java
index aea8b3a573a..09012e0a051 100644
--- a/Mage.Sets/src/mage/cards/d/DreamCache.java
+++ b/Mage.Sets/src/mage/cards/d/DreamCache.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Quercitron
*/
-public class DreamCache extends CardImpl {
+public final class DreamCache extends CardImpl {
public DreamCache(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamChisel.java b/Mage.Sets/src/mage/cards/d/DreamChisel.java
index 457b02042f4..b02981483d7 100644
--- a/Mage.Sets/src/mage/cards/d/DreamChisel.java
+++ b/Mage.Sets/src/mage/cards/d/DreamChisel.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.other.FaceDownPredicate;
*
* @author North
*/
-public class DreamChisel extends CardImpl {
+public final class DreamChisel extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("Face-down creature spells");
diff --git a/Mage.Sets/src/mage/cards/d/DreamCoat.java b/Mage.Sets/src/mage/cards/d/DreamCoat.java
index 893d4efd387..8a3d3789cda 100644
--- a/Mage.Sets/src/mage/cards/d/DreamCoat.java
+++ b/Mage.Sets/src/mage/cards/d/DreamCoat.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class DreamCoat extends CardImpl {
+public final class DreamCoat extends CardImpl {
public DreamCoat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
@@ -98,44 +98,47 @@ class BecomesColorOrColorsEnchantedEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Permanent enchantment = game.getPermanentOrLKIBattlefield(source.getSourceId());
+ if (enchantment == null) {
+ return false;
+ }
Permanent permanent = game.getPermanent(enchantment.getAttachedTo());
StringBuilder sb = new StringBuilder();
- if (controller != null && enchantment != null && permanent != null) {
- for (int i = 0; i < 5; i++) {
- if (i > 0) {
- if (!controller.chooseUse(Outcome.Neutral, "Do you wish to choose another color?", source, game)) {
- break;
- }
- }
- ChoiceColor choiceColor = new ChoiceColor();
- if (!controller.choose(Outcome.Benefit, choiceColor, game)) {
- return false;
- }
- if (!game.isSimulation()) {
- game.informPlayers(permanent.getName() + ": " + controller.getLogName() + " has chosen " + choiceColor.getChoice());
- }
- if (choiceColor.getColor().isBlack()) {
- sb.append('B');
- } else if (choiceColor.getColor().isBlue()) {
- sb.append('U');
- } else if (choiceColor.getColor().isRed()) {
- sb.append('R');
- } else if (choiceColor.getColor().isGreen()) {
- sb.append('G');
- } else if (choiceColor.getColor().isWhite()) {
- sb.append('W');
+ if (controller == null || permanent == null) {
+ return false;
+ }
+ for (int i = 0; i < 5; i++) {
+ if (i > 0) {
+ if (!controller.chooseUse(Outcome.Neutral, "Do you wish to choose another color?", source, game)) {
+ break;
}
}
- String colors = new String(sb);
- ObjectColor chosenColors = new ObjectColor(colors);
- ContinuousEffect effect = new BecomesColorTargetEffect(chosenColors, Duration.Custom);
- effect.setTargetPointer(new FixedTarget(permanent.getId()));
- game.addEffect(effect, source);
-
- return true;
+ ChoiceColor choiceColor = new ChoiceColor();
+ if (!controller.choose(Outcome.Benefit, choiceColor, game)) {
+ return false;
+ }
+ if (!game.isSimulation()) {
+ game.informPlayers(permanent.getName() + ": " + controller.getLogName() + " has chosen " + choiceColor.getChoice());
+ }
+ if (choiceColor.getColor().isBlack()) {
+ sb.append('B');
+ } else if (choiceColor.getColor().isBlue()) {
+ sb.append('U');
+ } else if (choiceColor.getColor().isRed()) {
+ sb.append('R');
+ } else if (choiceColor.getColor().isGreen()) {
+ sb.append('G');
+ } else if (choiceColor.getColor().isWhite()) {
+ sb.append('W');
+ }
}
- return false;
+ String colors = new String(sb);
+ ObjectColor chosenColors = new ObjectColor(colors);
+ ContinuousEffect effect = new BecomesColorTargetEffect(chosenColors, Duration.Custom);
+ effect.setTargetPointer(new FixedTarget(permanent.getId()));
+ game.addEffect(effect, source);
+
+ return true;
}
@Override
diff --git a/Mage.Sets/src/mage/cards/d/DreamFracture.java b/Mage.Sets/src/mage/cards/d/DreamFracture.java
index bdd7f77cb9b..3cf9cfa121b 100644
--- a/Mage.Sets/src/mage/cards/d/DreamFracture.java
+++ b/Mage.Sets/src/mage/cards/d/DreamFracture.java
@@ -43,7 +43,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class DreamFracture extends CardImpl {
+public final class DreamFracture extends CardImpl {
public DreamFracture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamHalls.java b/Mage.Sets/src/mage/cards/d/DreamHalls.java
index 40b803ce9ef..8e8e3c4d0c8 100644
--- a/Mage.Sets/src/mage/cards/d/DreamHalls.java
+++ b/Mage.Sets/src/mage/cards/d/DreamHalls.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DreamHalls extends CardImpl {
+public final class DreamHalls extends CardImpl {
public DreamHalls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamLeash.java b/Mage.Sets/src/mage/cards/d/DreamLeash.java
index db38df4aaba..f50543b9002 100644
--- a/Mage.Sets/src/mage/cards/d/DreamLeash.java
+++ b/Mage.Sets/src/mage/cards/d/DreamLeash.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author maxlebedev
*/
-public class DreamLeash extends CardImpl {
+public final class DreamLeash extends CardImpl {
public DreamLeash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamPillager.java b/Mage.Sets/src/mage/cards/d/DreamPillager.java
index bea4ad92b61..94d32895c8a 100644
--- a/Mage.Sets/src/mage/cards/d/DreamPillager.java
+++ b/Mage.Sets/src/mage/cards/d/DreamPillager.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class DreamPillager extends CardImpl {
+public final class DreamPillager extends CardImpl {
public DreamPillager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamProwler.java b/Mage.Sets/src/mage/cards/d/DreamProwler.java
index d925f85b018..d521ccf77d1 100644
--- a/Mage.Sets/src/mage/cards/d/DreamProwler.java
+++ b/Mage.Sets/src/mage/cards/d/DreamProwler.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author emerald000
*/
-public class DreamProwler extends CardImpl {
+public final class DreamProwler extends CardImpl {
public DreamProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamSalvage.java b/Mage.Sets/src/mage/cards/d/DreamSalvage.java
index bdc09c17da2..b5f3e1a357e 100644
--- a/Mage.Sets/src/mage/cards/d/DreamSalvage.java
+++ b/Mage.Sets/src/mage/cards/d/DreamSalvage.java
@@ -47,7 +47,7 @@ import mage.watchers.Watcher;
/**
* @author jeffwadsworth
*/
-public class DreamSalvage extends CardImpl {
+public final class DreamSalvage extends CardImpl {
public DreamSalvage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U/B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamStalker.java b/Mage.Sets/src/mage/cards/d/DreamStalker.java
index c5b8a689d8a..5930cefbe98 100644
--- a/Mage.Sets/src/mage/cards/d/DreamStalker.java
+++ b/Mage.Sets/src/mage/cards/d/DreamStalker.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author LevelX2
*/
-public class DreamStalker extends CardImpl {
+public final class DreamStalker extends CardImpl {
public DreamStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamThief.java b/Mage.Sets/src/mage/cards/d/DreamThief.java
index d8d5364b3f8..d32f96f732c 100644
--- a/Mage.Sets/src/mage/cards/d/DreamThief.java
+++ b/Mage.Sets/src/mage/cards/d/DreamThief.java
@@ -48,7 +48,7 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author jeffwadsworth
*/
-public class DreamThief extends CardImpl {
+public final class DreamThief extends CardImpl {
private static final String rule = "draw a card if you've cast another blue spell this turn";
diff --git a/Mage.Sets/src/mage/cards/d/DreamThrush.java b/Mage.Sets/src/mage/cards/d/DreamThrush.java
index df6fc18704e..8a3586ae15b 100644
--- a/Mage.Sets/src/mage/cards/d/DreamThrush.java
+++ b/Mage.Sets/src/mage/cards/d/DreamThrush.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class DreamThrush extends CardImpl {
+public final class DreamThrush extends CardImpl {
public DreamThrush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamTides.java b/Mage.Sets/src/mage/cards/d/DreamTides.java
index c47b8dc3d45..1d1099ec292 100644
--- a/Mage.Sets/src/mage/cards/d/DreamTides.java
+++ b/Mage.Sets/src/mage/cards/d/DreamTides.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author spjspj & L_J
*/
-public class DreamTides extends CardImpl {
+public final class DreamTides extends CardImpl {
public DreamTides(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamTwist.java b/Mage.Sets/src/mage/cards/d/DreamTwist.java
index 349d310ab32..dfdda9a8c29 100644
--- a/Mage.Sets/src/mage/cards/d/DreamTwist.java
+++ b/Mage.Sets/src/mage/cards/d/DreamTwist.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
/**
* @author nantuko
*/
-public class DreamTwist extends CardImpl {
+public final class DreamTwist extends CardImpl {
public DreamTwist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreambornMuse.java b/Mage.Sets/src/mage/cards/d/DreambornMuse.java
index 28c1af6b550..259c789395f 100644
--- a/Mage.Sets/src/mage/cards/d/DreambornMuse.java
+++ b/Mage.Sets/src/mage/cards/d/DreambornMuse.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author cbrianhill
*/
-public class DreambornMuse extends CardImpl {
+public final class DreambornMuse extends CardImpl {
public DreambornMuse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamcallerSiren.java b/Mage.Sets/src/mage/cards/d/DreamcallerSiren.java
index 67709860a01..2aceac9e3f8 100644
--- a/Mage.Sets/src/mage/cards/d/DreamcallerSiren.java
+++ b/Mage.Sets/src/mage/cards/d/DreamcallerSiren.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author TheElk801
*/
-public class DreamcallerSiren extends CardImpl {
+public final class DreamcallerSiren extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another Pirate");
diff --git a/Mage.Sets/src/mage/cards/d/Dreamcatcher.java b/Mage.Sets/src/mage/cards/d/Dreamcatcher.java
index 300c1c8ad24..05f214dc755 100644
--- a/Mage.Sets/src/mage/cards/d/Dreamcatcher.java
+++ b/Mage.Sets/src/mage/cards/d/Dreamcatcher.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class Dreamcatcher extends CardImpl {
+public final class Dreamcatcher extends CardImpl {
public Dreamcatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreampodDruid.java b/Mage.Sets/src/mage/cards/d/DreampodDruid.java
index 7708550df10..8d45a823ca2 100644
--- a/Mage.Sets/src/mage/cards/d/DreampodDruid.java
+++ b/Mage.Sets/src/mage/cards/d/DreampodDruid.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author LevelX2
*/
-public class DreampodDruid extends CardImpl {
+public final class DreampodDruid extends CardImpl {
public DreampodDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamsGrip.java b/Mage.Sets/src/mage/cards/d/DreamsGrip.java
index 89b01436ab9..8aaeb73e850 100644
--- a/Mage.Sets/src/mage/cards/d/DreamsGrip.java
+++ b/Mage.Sets/src/mage/cards/d/DreamsGrip.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author michael.napoleon@gmail.com
*/
-public class DreamsGrip extends CardImpl {
+public final class DreamsGrip extends CardImpl {
public DreamsGrip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamscapeArtist.java b/Mage.Sets/src/mage/cards/d/DreamscapeArtist.java
index fd547265f28..cc26182b5d9 100644
--- a/Mage.Sets/src/mage/cards/d/DreamscapeArtist.java
+++ b/Mage.Sets/src/mage/cards/d/DreamscapeArtist.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class DreamscapeArtist extends CardImpl {
+public final class DreamscapeArtist extends CardImpl {
public DreamscapeArtist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
@@ -62,7 +62,7 @@ public class DreamscapeArtist extends CardImpl {
this.toughness = new MageInt(1);
// {2}{U}, {tap}, Discard a card, Sacrifice a land: Search your library for up to two basic land cards and put them onto the battlefield. Then shuffle your library.
- TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND);
Ability ability = new SimpleActivatedAbility(
Zone.BATTLEFIELD,
new SearchLibraryPutInPlayEffect(target, false, Outcome.PutLandInPlay),
diff --git a/Mage.Sets/src/mage/cards/d/DreamspoilerWitches.java b/Mage.Sets/src/mage/cards/d/DreamspoilerWitches.java
index 893c8bd8175..7ecb25525df 100644
--- a/Mage.Sets/src/mage/cards/d/DreamspoilerWitches.java
+++ b/Mage.Sets/src/mage/cards/d/DreamspoilerWitches.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DreamspoilerWitches extends CardImpl {
+public final class DreamspoilerWitches extends CardImpl {
public DreamspoilerWitches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Dreamstealer.java b/Mage.Sets/src/mage/cards/d/Dreamstealer.java
index d48f9a3a77e..ca5d79930a5 100644
--- a/Mage.Sets/src/mage/cards/d/Dreamstealer.java
+++ b/Mage.Sets/src/mage/cards/d/Dreamstealer.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class Dreamstealer extends CardImpl {
+public final class Dreamstealer extends CardImpl {
public Dreamstealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DreamstoneHedron.java b/Mage.Sets/src/mage/cards/d/DreamstoneHedron.java
index ad24e32f98f..ee84f5e3563 100644
--- a/Mage.Sets/src/mage/cards/d/DreamstoneHedron.java
+++ b/Mage.Sets/src/mage/cards/d/DreamstoneHedron.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class DreamstoneHedron extends CardImpl {
+public final class DreamstoneHedron extends CardImpl {
public DreamstoneHedron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/d/Dreamwinder.java b/Mage.Sets/src/mage/cards/d/Dreamwinder.java
index 35b1657ec95..2564fa797a6 100644
--- a/Mage.Sets/src/mage/cards/d/Dreamwinder.java
+++ b/Mage.Sets/src/mage/cards/d/Dreamwinder.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author cbt33, LevelX2 (Walk the Aeons), KholdFuzion (Dandan)
*/
-public class Dreamwinder extends CardImpl {
+public final class Dreamwinder extends CardImpl {
public Dreamwinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/Dredge.java b/Mage.Sets/src/mage/cards/d/Dredge.java
index 273273645d0..a366f697788 100644
--- a/Mage.Sets/src/mage/cards/d/Dredge.java
+++ b/Mage.Sets/src/mage/cards/d/Dredge.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class Dredge extends CardImpl {
+public final class Dredge extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or land");
diff --git a/Mage.Sets/src/mage/cards/d/DregMangler.java b/Mage.Sets/src/mage/cards/d/DregMangler.java
index 2932b408185..d490fa56c6e 100644
--- a/Mage.Sets/src/mage/cards/d/DregMangler.java
+++ b/Mage.Sets/src/mage/cards/d/DregMangler.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author magenoxx_at_gmail.com
*/
-public class DregMangler extends CardImpl {
+public final class DregMangler extends CardImpl {
public DregMangler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DregReaver.java b/Mage.Sets/src/mage/cards/d/DregReaver.java
index 4eb9e201ff4..94db89a656b 100644
--- a/Mage.Sets/src/mage/cards/d/DregReaver.java
+++ b/Mage.Sets/src/mage/cards/d/DregReaver.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DregReaver extends CardImpl {
+public final class DregReaver extends CardImpl {
public DregReaver (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DregsOfSorrow.java b/Mage.Sets/src/mage/cards/d/DregsOfSorrow.java
index aed15220212..dcf4e5f8573 100644
--- a/Mage.Sets/src/mage/cards/d/DregsOfSorrow.java
+++ b/Mage.Sets/src/mage/cards/d/DregsOfSorrow.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DregsOfSorrow extends CardImpl {
+public final class DregsOfSorrow extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DregscapeZombie.java b/Mage.Sets/src/mage/cards/d/DregscapeZombie.java
index ecd94446bf1..e860f2fc16b 100644
--- a/Mage.Sets/src/mage/cards/d/DregscapeZombie.java
+++ b/Mage.Sets/src/mage/cards/d/DregscapeZombie.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DregscapeZombie extends CardImpl {
+public final class DregscapeZombie extends CardImpl {
public DregscapeZombie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Drekavac.java b/Mage.Sets/src/mage/cards/d/Drekavac.java
index 7bf6ccc7f33..4c36866bfe9 100644
--- a/Mage.Sets/src/mage/cards/d/Drekavac.java
+++ b/Mage.Sets/src/mage/cards/d/Drekavac.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
* @author LoneFox
*/
-public class Drekavac extends CardImpl {
+public final class Drekavac extends CardImpl {
private static final FilterCard filter = new FilterCard("noncreature card");
diff --git a/Mage.Sets/src/mage/cards/d/Drelnoch.java b/Mage.Sets/src/mage/cards/d/Drelnoch.java
index 0195aaf6a36..ca1c6996fd0 100644
--- a/Mage.Sets/src/mage/cards/d/Drelnoch.java
+++ b/Mage.Sets/src/mage/cards/d/Drelnoch.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class Drelnoch extends CardImpl {
+public final class Drelnoch extends CardImpl {
public Drelnoch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DriftOfPhantasms.java b/Mage.Sets/src/mage/cards/d/DriftOfPhantasms.java
index 3db4ec14c4d..992ccde72b5 100644
--- a/Mage.Sets/src/mage/cards/d/DriftOfPhantasms.java
+++ b/Mage.Sets/src/mage/cards/d/DriftOfPhantasms.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DriftOfPhantasms extends CardImpl {
+public final class DriftOfPhantasms extends CardImpl {
public DriftOfPhantasms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DriftOfTheDead.java b/Mage.Sets/src/mage/cards/d/DriftOfTheDead.java
index 2e1ef24041c..6ffa181e3f3 100644
--- a/Mage.Sets/src/mage/cards/d/DriftOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/d/DriftOfTheDead.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class DriftOfTheDead extends CardImpl {
+public final class DriftOfTheDead extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("snow lands you control");
diff --git a/Mage.Sets/src/mage/cards/d/DrifterIlDal.java b/Mage.Sets/src/mage/cards/d/DrifterIlDal.java
index 0596b72fd05..3dbba88ce83 100644
--- a/Mage.Sets/src/mage/cards/d/DrifterIlDal.java
+++ b/Mage.Sets/src/mage/cards/d/DrifterIlDal.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class DrifterIlDal extends CardImpl {
+public final class DrifterIlDal extends CardImpl {
public DrifterIlDal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DriftingDjinn.java b/Mage.Sets/src/mage/cards/d/DriftingDjinn.java
index a0f045b5c32..a11adf21c4b 100644
--- a/Mage.Sets/src/mage/cards/d/DriftingDjinn.java
+++ b/Mage.Sets/src/mage/cards/d/DriftingDjinn.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author Backfir3
*/
-public class DriftingDjinn extends CardImpl {
+public final class DriftingDjinn extends CardImpl {
public DriftingDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DriftingMeadow.java b/Mage.Sets/src/mage/cards/d/DriftingMeadow.java
index da0dc8dcced..dc2d0a0321a 100644
--- a/Mage.Sets/src/mage/cards/d/DriftingMeadow.java
+++ b/Mage.Sets/src/mage/cards/d/DriftingMeadow.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Backfir3
*/
-public class DriftingMeadow extends CardImpl {
+public final class DriftingMeadow extends CardImpl {
public DriftingMeadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/DriftingShade.java b/Mage.Sets/src/mage/cards/d/DriftingShade.java
index b69b7c13fe7..063a3fe6dbe 100644
--- a/Mage.Sets/src/mage/cards/d/DriftingShade.java
+++ b/Mage.Sets/src/mage/cards/d/DriftingShade.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class DriftingShade extends CardImpl {
+public final class DriftingShade extends CardImpl {
public DriftingShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrillSkimmer.java b/Mage.Sets/src/mage/cards/d/DrillSkimmer.java
index 125bad06f49..32830d5c24f 100644
--- a/Mage.Sets/src/mage/cards/d/DrillSkimmer.java
+++ b/Mage.Sets/src/mage/cards/d/DrillSkimmer.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author wetterlicht
*/
-public class DrillSkimmer extends CardImpl {
+public final class DrillSkimmer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("you control another artifact creature");
diff --git a/Mage.Sets/src/mage/cards/d/DrinkerOfSorrow.java b/Mage.Sets/src/mage/cards/d/DrinkerOfSorrow.java
index 65f1933c1e1..641d887f204 100644
--- a/Mage.Sets/src/mage/cards/d/DrinkerOfSorrow.java
+++ b/Mage.Sets/src/mage/cards/d/DrinkerOfSorrow.java
@@ -42,7 +42,7 @@ import mage.filter.FilterPermanent;
*
* @author TheElk801
*/
-public class DrinkerOfSorrow extends CardImpl {
+public final class DrinkerOfSorrow extends CardImpl {
public DrinkerOfSorrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrippingDead.java b/Mage.Sets/src/mage/cards/d/DrippingDead.java
index 7719d638dc7..0557c2b23b6 100644
--- a/Mage.Sets/src/mage/cards/d/DrippingDead.java
+++ b/Mage.Sets/src/mage/cards/d/DrippingDead.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DrippingDead extends CardImpl {
+public final class DrippingDead extends CardImpl {
public DrippingDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrippingTongueZubera.java b/Mage.Sets/src/mage/cards/d/DrippingTongueZubera.java
index 30f51bea685..1b8c8efe687 100644
--- a/Mage.Sets/src/mage/cards/d/DrippingTongueZubera.java
+++ b/Mage.Sets/src/mage/cards/d/DrippingTongueZubera.java
@@ -44,7 +44,7 @@ import mage.watchers.common.ZuberasDiedWatcher;
*
* @author Loki
*/
-public class DrippingTongueZubera extends CardImpl {
+public final class DrippingTongueZubera extends CardImpl {
public DrippingTongueZubera (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DrivenDespair.java b/Mage.Sets/src/mage/cards/d/DrivenDespair.java
index 7d15b56b480..6ae78f89b68 100644
--- a/Mage.Sets/src/mage/cards/d/DrivenDespair.java
+++ b/Mage.Sets/src/mage/cards/d/DrivenDespair.java
@@ -47,7 +47,7 @@ import mage.constants.SpellAbilityType;
*
* @author LevelX2
*/
-public class DrivenDespair extends SplitCard {
+public final class DrivenDespair extends SplitCard {
public DrivenDespair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{1}{G}", "{1}{B}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/d/DriverOfTheDead.java b/Mage.Sets/src/mage/cards/d/DriverOfTheDead.java
index 702d6bc1ba7..a5e5e71cb3d 100644
--- a/Mage.Sets/src/mage/cards/d/DriverOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/d/DriverOfTheDead.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author noxx
*/
-public class DriverOfTheDead extends CardImpl {
+public final class DriverOfTheDead extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with converted mana cost 2 or less from your graveyard to the battlefield");
diff --git a/Mage.Sets/src/mage/cards/d/DrogskolCaptain.java b/Mage.Sets/src/mage/cards/d/DrogskolCaptain.java
index 01cd26d62e7..08f50ab51e6 100644
--- a/Mage.Sets/src/mage/cards/d/DrogskolCaptain.java
+++ b/Mage.Sets/src/mage/cards/d/DrogskolCaptain.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class DrogskolCaptain extends CardImpl {
+public final class DrogskolCaptain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Spirit");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DrogskolCavalry.java b/Mage.Sets/src/mage/cards/d/DrogskolCavalry.java
index be89d81d083..5801dbb59b1 100644
--- a/Mage.Sets/src/mage/cards/d/DrogskolCavalry.java
+++ b/Mage.Sets/src/mage/cards/d/DrogskolCavalry.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author fireshoes
*/
-public class DrogskolCavalry extends CardImpl {
+public final class DrogskolCavalry extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another Spirit");
diff --git a/Mage.Sets/src/mage/cards/d/DrogskolReaver.java b/Mage.Sets/src/mage/cards/d/DrogskolReaver.java
index 22f7f9c311b..44a3af928a6 100644
--- a/Mage.Sets/src/mage/cards/d/DrogskolReaver.java
+++ b/Mage.Sets/src/mage/cards/d/DrogskolReaver.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Loki
*/
-public class DrogskolReaver extends CardImpl {
+public final class DrogskolReaver extends CardImpl {
public DrogskolReaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DrogskolShieldmate.java b/Mage.Sets/src/mage/cards/d/DrogskolShieldmate.java
index fb1cd57cdd0..438fedabc14 100644
--- a/Mage.Sets/src/mage/cards/d/DrogskolShieldmate.java
+++ b/Mage.Sets/src/mage/cards/d/DrogskolShieldmate.java
@@ -43,7 +43,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX2
*/
-public class DrogskolShieldmate extends CardImpl {
+public final class DrogskolShieldmate extends CardImpl {
public DrogskolShieldmate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DroidCommando.java b/Mage.Sets/src/mage/cards/d/DroidCommando.java
index 22003d8761c..06b8d94ea96 100644
--- a/Mage.Sets/src/mage/cards/d/DroidCommando.java
+++ b/Mage.Sets/src/mage/cards/d/DroidCommando.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class DroidCommando extends CardImpl {
+public final class DroidCommando extends CardImpl {
public DroidCommando(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DroidFactory.java b/Mage.Sets/src/mage/cards/d/DroidFactory.java
index e24e4ab60b6..f73e93eeb53 100644
--- a/Mage.Sets/src/mage/cards/d/DroidFactory.java
+++ b/Mage.Sets/src/mage/cards/d/DroidFactory.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class DroidFactory extends CardImpl {
+public final class DroidFactory extends CardImpl {
public DroidFactory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
@@ -74,7 +74,7 @@ public class DroidFactory extends CardImpl {
return new DroidFactory(this);
}
- public class DroidFactoryAbility extends ActivatedAbilityImpl {
+ public final class DroidFactoryAbility extends ActivatedAbilityImpl {
public DroidFactoryAbility(DroidFactoryAbility ability) {
super(ability);
diff --git a/Mage.Sets/src/mage/cards/d/DroidFoundry.java b/Mage.Sets/src/mage/cards/d/DroidFoundry.java
index 492600c0262..f37b139d930 100644
--- a/Mage.Sets/src/mage/cards/d/DroidFoundry.java
+++ b/Mage.Sets/src/mage/cards/d/DroidFoundry.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Styxo
*/
-public class DroidFoundry extends CardImpl {
+public final class DroidFoundry extends CardImpl {
public DroidFoundry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
@@ -53,7 +53,7 @@ public class DroidFoundry extends CardImpl {
// When Droid Foundry enters the battlefield , add {U}.
this.addAbility(new EntersBattlefieldTriggeredAbility(new AddManaToManaPoolSourceControllerEffect(Mana.BlueMana(1))));
- // {T}: Add {W} or {B} to you mana pool.
+ // {T}: Add {W} or {B}.
this.addAbility(new WhiteManaAbility());
this.addAbility(new BlackManaAbility());
}
diff --git a/Mage.Sets/src/mage/cards/d/Droideka.java b/Mage.Sets/src/mage/cards/d/Droideka.java
index 75a30b3630f..99526ff1221 100644
--- a/Mage.Sets/src/mage/cards/d/Droideka.java
+++ b/Mage.Sets/src/mage/cards/d/Droideka.java
@@ -45,7 +45,7 @@ import mage.target.TargetStackObject;
*
* @author Styxo
*/
-public class Droideka extends CardImpl {
+public final class Droideka extends CardImpl {
public Droideka(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DromadPurebred.java b/Mage.Sets/src/mage/cards/d/DromadPurebred.java
index c7776de8e5d..49170737820 100644
--- a/Mage.Sets/src/mage/cards/d/DromadPurebred.java
+++ b/Mage.Sets/src/mage/cards/d/DromadPurebred.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Derpthemeus
*/
-public class DromadPurebred extends CardImpl {
+public final class DromadPurebred extends CardImpl {
public DromadPurebred(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DromarTheBanisher.java b/Mage.Sets/src/mage/cards/d/DromarTheBanisher.java
index c0d52b690d7..ad52d80e3a8 100644
--- a/Mage.Sets/src/mage/cards/d/DromarTheBanisher.java
+++ b/Mage.Sets/src/mage/cards/d/DromarTheBanisher.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class DromarTheBanisher extends CardImpl {
+public final class DromarTheBanisher extends CardImpl {
public DromarTheBanisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DromarsAttendant.java b/Mage.Sets/src/mage/cards/d/DromarsAttendant.java
index 6d9edaf9c6c..6ce82a2022d 100644
--- a/Mage.Sets/src/mage/cards/d/DromarsAttendant.java
+++ b/Mage.Sets/src/mage/cards/d/DromarsAttendant.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class DromarsAttendant extends CardImpl {
+public final class DromarsAttendant extends CardImpl {
public DromarsAttendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/d/DromarsCavern.java b/Mage.Sets/src/mage/cards/d/DromarsCavern.java
index d53eb7c29a1..ac077748552 100644
--- a/Mage.Sets/src/mage/cards/d/DromarsCavern.java
+++ b/Mage.Sets/src/mage/cards/d/DromarsCavern.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class DromarsCavern extends CardImpl {
+public final class DromarsCavern extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("non-Lair land");
static{
diff --git a/Mage.Sets/src/mage/cards/d/DromarsCharm.java b/Mage.Sets/src/mage/cards/d/DromarsCharm.java
index 1a4c450f7bd..7a879c86f80 100644
--- a/Mage.Sets/src/mage/cards/d/DromarsCharm.java
+++ b/Mage.Sets/src/mage/cards/d/DromarsCharm.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DromarsCharm extends CardImpl {
+public final class DromarsCharm extends CardImpl {
public DromarsCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DromokaCaptain.java b/Mage.Sets/src/mage/cards/d/DromokaCaptain.java
index 47b50ea8717..1f8abd1d5e7 100644
--- a/Mage.Sets/src/mage/cards/d/DromokaCaptain.java
+++ b/Mage.Sets/src/mage/cards/d/DromokaCaptain.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DromokaCaptain extends CardImpl {
+public final class DromokaCaptain extends CardImpl {
public DromokaCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DromokaDunecaster.java b/Mage.Sets/src/mage/cards/d/DromokaDunecaster.java
index e4b961308bd..aaa233bc25e 100644
--- a/Mage.Sets/src/mage/cards/d/DromokaDunecaster.java
+++ b/Mage.Sets/src/mage/cards/d/DromokaDunecaster.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DromokaDunecaster extends CardImpl {
+public final class DromokaDunecaster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/d/DromokaMonument.java b/Mage.Sets/src/mage/cards/d/DromokaMonument.java
index 81d50424eec..78ce21e92b1 100644
--- a/Mage.Sets/src/mage/cards/d/DromokaMonument.java
+++ b/Mage.Sets/src/mage/cards/d/DromokaMonument.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class DromokaMonument extends CardImpl {
+public final class DromokaMonument extends CardImpl {
public DromokaMonument(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DromokaTheEternal.java b/Mage.Sets/src/mage/cards/d/DromokaTheEternal.java
index 767fd508e80..7966cf07708 100644
--- a/Mage.Sets/src/mage/cards/d/DromokaTheEternal.java
+++ b/Mage.Sets/src/mage/cards/d/DromokaTheEternal.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class DromokaTheEternal extends CardImpl {
+public final class DromokaTheEternal extends CardImpl {
public DromokaTheEternal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DromokaWarrior.java b/Mage.Sets/src/mage/cards/d/DromokaWarrior.java
index 85da714df05..2f069d4e5bd 100644
--- a/Mage.Sets/src/mage/cards/d/DromokaWarrior.java
+++ b/Mage.Sets/src/mage/cards/d/DromokaWarrior.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DromokaWarrior extends CardImpl {
+public final class DromokaWarrior extends CardImpl {
public DromokaWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DromokasCommand.java b/Mage.Sets/src/mage/cards/d/DromokasCommand.java
index f825b0d34c0..b90bfe71903 100644
--- a/Mage.Sets/src/mage/cards/d/DromokasCommand.java
+++ b/Mage.Sets/src/mage/cards/d/DromokasCommand.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class DromokasCommand extends CardImpl {
+public final class DromokasCommand extends CardImpl {
private static final FilterEnchantmentPermanent filterEnchantment = new FilterEnchantmentPermanent("an enchantment");
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creature to put a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/d/DromokasGift.java b/Mage.Sets/src/mage/cards/d/DromokasGift.java
index 98f1c6e5851..4c4c230bd44 100644
--- a/Mage.Sets/src/mage/cards/d/DromokasGift.java
+++ b/Mage.Sets/src/mage/cards/d/DromokasGift.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class DromokasGift extends CardImpl {
+public final class DromokasGift extends CardImpl {
public DromokasGift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/Dromosaur.java b/Mage.Sets/src/mage/cards/d/Dromosaur.java
index 18966f71108..7005f4c6547 100644
--- a/Mage.Sets/src/mage/cards/d/Dromosaur.java
+++ b/Mage.Sets/src/mage/cards/d/Dromosaur.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class Dromosaur extends CardImpl {
+public final class Dromosaur extends CardImpl {
public Dromosaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DroneHolocron.java b/Mage.Sets/src/mage/cards/d/DroneHolocron.java
index ee896c25956..57cffe0a762 100644
--- a/Mage.Sets/src/mage/cards/d/DroneHolocron.java
+++ b/Mage.Sets/src/mage/cards/d/DroneHolocron.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class DroneHolocron extends CardImpl {
+public final class DroneHolocron extends CardImpl {
public DroneHolocron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/d/DronepackKindred.java b/Mage.Sets/src/mage/cards/d/DronepackKindred.java
index b21fcda7a66..a66e116a83a 100644
--- a/Mage.Sets/src/mage/cards/d/DronepackKindred.java
+++ b/Mage.Sets/src/mage/cards/d/DronepackKindred.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class DronepackKindred extends CardImpl {
+public final class DronepackKindred extends CardImpl {
public DronepackKindred(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/d/DroningBureaucrats.java b/Mage.Sets/src/mage/cards/d/DroningBureaucrats.java
index aa17110ef5e..49da96b7a25 100644
--- a/Mage.Sets/src/mage/cards/d/DroningBureaucrats.java
+++ b/Mage.Sets/src/mage/cards/d/DroningBureaucrats.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author TheElk801
*/
-public class DroningBureaucrats extends CardImpl {
+public final class DroningBureaucrats extends CardImpl {
public DroningBureaucrats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DroolingGroodion.java b/Mage.Sets/src/mage/cards/d/DroolingGroodion.java
index 502ea64d811..4bd66a09f81 100644
--- a/Mage.Sets/src/mage/cards/d/DroolingGroodion.java
+++ b/Mage.Sets/src/mage/cards/d/DroolingGroodion.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DroolingGroodion extends CardImpl {
+public final class DroolingGroodion extends CardImpl {
public DroolingGroodion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DroolingOgre.java b/Mage.Sets/src/mage/cards/d/DroolingOgre.java
index e52984b77a3..32f60dda120 100644
--- a/Mage.Sets/src/mage/cards/d/DroolingOgre.java
+++ b/Mage.Sets/src/mage/cards/d/DroolingOgre.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author wetterlicht
*/
-public class DroolingOgre extends CardImpl {
+public final class DroolingOgre extends CardImpl {
public DroolingOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DropOfHoney.java b/Mage.Sets/src/mage/cards/d/DropOfHoney.java
index 0af0a38f694..b365629e6e3 100644
--- a/Mage.Sets/src/mage/cards/d/DropOfHoney.java
+++ b/Mage.Sets/src/mage/cards/d/DropOfHoney.java
@@ -54,7 +54,7 @@ import mage.target.TargetPermanent;
*
* @author MarcoMarin, but I mostly copied from LevelX2's PorphyryNodes :)
*/
-public class DropOfHoney extends CardImpl {
+public final class DropOfHoney extends CardImpl {
public DropOfHoney(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DrossCrocodile.java b/Mage.Sets/src/mage/cards/d/DrossCrocodile.java
index 478d208e350..97893a8f43f 100644
--- a/Mage.Sets/src/mage/cards/d/DrossCrocodile.java
+++ b/Mage.Sets/src/mage/cards/d/DrossCrocodile.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DrossCrocodile extends CardImpl {
+public final class DrossCrocodile extends CardImpl {
public DrossCrocodile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrossGolem.java b/Mage.Sets/src/mage/cards/d/DrossGolem.java
index e5c070cfade..05138e6227c 100644
--- a/Mage.Sets/src/mage/cards/d/DrossGolem.java
+++ b/Mage.Sets/src/mage/cards/d/DrossGolem.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DrossGolem extends CardImpl {
+public final class DrossGolem extends CardImpl {
public DrossGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/d/DrossHarvester.java b/Mage.Sets/src/mage/cards/d/DrossHarvester.java
index 8fef6a7eaf8..d2340f76c12 100644
--- a/Mage.Sets/src/mage/cards/d/DrossHarvester.java
+++ b/Mage.Sets/src/mage/cards/d/DrossHarvester.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class DrossHarvester extends CardImpl {
+public final class DrossHarvester extends CardImpl {
public DrossHarvester(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrossHopper.java b/Mage.Sets/src/mage/cards/d/DrossHopper.java
index 3b9078c3adf..69023496ae4 100644
--- a/Mage.Sets/src/mage/cards/d/DrossHopper.java
+++ b/Mage.Sets/src/mage/cards/d/DrossHopper.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class DrossHopper extends CardImpl {
+public final class DrossHopper extends CardImpl {
public DrossHopper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrossProwler.java b/Mage.Sets/src/mage/cards/d/DrossProwler.java
index 385b0582cc2..de66e301f20 100644
--- a/Mage.Sets/src/mage/cards/d/DrossProwler.java
+++ b/Mage.Sets/src/mage/cards/d/DrossProwler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DrossProwler extends CardImpl {
+public final class DrossProwler extends CardImpl {
public DrossProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrossRipper.java b/Mage.Sets/src/mage/cards/d/DrossRipper.java
index 6aaa0eddd43..fdfe78c5c1f 100644
--- a/Mage.Sets/src/mage/cards/d/DrossRipper.java
+++ b/Mage.Sets/src/mage/cards/d/DrossRipper.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class DrossRipper extends CardImpl {
+public final class DrossRipper extends CardImpl {
public DrossRipper (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DrossScorpion.java b/Mage.Sets/src/mage/cards/d/DrossScorpion.java
index dbcbfd7f591..beae42e8156 100644
--- a/Mage.Sets/src/mage/cards/d/DrossScorpion.java
+++ b/Mage.Sets/src/mage/cards/d/DrossScorpion.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author fireshoes
*/
-public class DrossScorpion extends CardImpl {
+public final class DrossScorpion extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/d/Drought.java b/Mage.Sets/src/mage/cards/d/Drought.java
index 480212c0e3b..dd866c9d71c 100644
--- a/Mage.Sets/src/mage/cards/d/Drought.java
+++ b/Mage.Sets/src/mage/cards/d/Drought.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author L_J
*/
-public class Drought extends CardImpl {
+public final class Drought extends CardImpl {
public Drought(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DroveOfElves.java b/Mage.Sets/src/mage/cards/d/DroveOfElves.java
index c1613606ca8..ce9c6fd363d 100644
--- a/Mage.Sets/src/mage/cards/d/DroveOfElves.java
+++ b/Mage.Sets/src/mage/cards/d/DroveOfElves.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class DroveOfElves extends CardImpl {
+public final class DroveOfElves extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("green permanents you control");
diff --git a/Mage.Sets/src/mage/cards/d/DroverOfTheMighty.java b/Mage.Sets/src/mage/cards/d/DroverOfTheMighty.java
index 3f813fa42e8..b81512e9d8d 100644
--- a/Mage.Sets/src/mage/cards/d/DroverOfTheMighty.java
+++ b/Mage.Sets/src/mage/cards/d/DroverOfTheMighty.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class DroverOfTheMighty extends CardImpl {
+public final class DroverOfTheMighty extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Dinosaur");
diff --git a/Mage.Sets/src/mage/cards/d/DrownInFilth.java b/Mage.Sets/src/mage/cards/d/DrownInFilth.java
index 9c88322c2c9..ca8e549b3f8 100644
--- a/Mage.Sets/src/mage/cards/d/DrownInFilth.java
+++ b/Mage.Sets/src/mage/cards/d/DrownInFilth.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DrownInFilth extends CardImpl {
+public final class DrownInFilth extends CardImpl {
public DrownInFilth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DrownInSorrow.java b/Mage.Sets/src/mage/cards/d/DrownInSorrow.java
index 7b68af4c7b3..30ed67b0a5a 100644
--- a/Mage.Sets/src/mage/cards/d/DrownInSorrow.java
+++ b/Mage.Sets/src/mage/cards/d/DrownInSorrow.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author Quercitron
*/
-public class DrownInSorrow extends CardImpl {
+public final class DrownInSorrow extends CardImpl {
public DrownInSorrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Drowned.java b/Mage.Sets/src/mage/cards/d/Drowned.java
index 2477e2c80a8..53ff239eb5b 100644
--- a/Mage.Sets/src/mage/cards/d/Drowned.java
+++ b/Mage.Sets/src/mage/cards/d/Drowned.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class Drowned extends CardImpl {
+public final class Drowned extends CardImpl {
public Drowned(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DrownedCatacomb.java b/Mage.Sets/src/mage/cards/d/DrownedCatacomb.java
index 4565940df15..249b84de4e1 100644
--- a/Mage.Sets/src/mage/cards/d/DrownedCatacomb.java
+++ b/Mage.Sets/src/mage/cards/d/DrownedCatacomb.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class DrownedCatacomb extends CardImpl {
+public final class DrownedCatacomb extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/d/DrownedRusalka.java b/Mage.Sets/src/mage/cards/d/DrownedRusalka.java
index daeeb95b1a0..86f625330a8 100644
--- a/Mage.Sets/src/mage/cards/d/DrownedRusalka.java
+++ b/Mage.Sets/src/mage/cards/d/DrownedRusalka.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class DrownedRusalka extends CardImpl {
+public final class DrownedRusalka extends CardImpl {
public DrownedRusalka(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DrownerInitiate.java b/Mage.Sets/src/mage/cards/d/DrownerInitiate.java
index 7a984add82f..9a2a3a38dd5 100644
--- a/Mage.Sets/src/mage/cards/d/DrownerInitiate.java
+++ b/Mage.Sets/src/mage/cards/d/DrownerInitiate.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
* @author jeffwadsworth
*
*/
-public class DrownerInitiate extends CardImpl {
+public final class DrownerInitiate extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a blue spell");
diff --git a/Mage.Sets/src/mage/cards/d/DrownerOfHope.java b/Mage.Sets/src/mage/cards/d/DrownerOfHope.java
index c80bb27f894..cc97306f560 100644
--- a/Mage.Sets/src/mage/cards/d/DrownerOfHope.java
+++ b/Mage.Sets/src/mage/cards/d/DrownerOfHope.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DrownerOfHope extends CardImpl {
+public final class DrownerOfHope extends CardImpl {
private static final FilterControlledPermanent FILTER = new FilterControlledPermanent("an Eldrazi Scion");
diff --git a/Mage.Sets/src/mage/cards/d/DrownerOfSecrets.java b/Mage.Sets/src/mage/cards/d/DrownerOfSecrets.java
index a34a2c32750..ad4873b1a9e 100644
--- a/Mage.Sets/src/mage/cards/d/DrownerOfSecrets.java
+++ b/Mage.Sets/src/mage/cards/d/DrownerOfSecrets.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class DrownerOfSecrets extends CardImpl {
+public final class DrownerOfSecrets extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Merfolk you control");
diff --git a/Mage.Sets/src/mage/cards/d/DrownyardBehemoth.java b/Mage.Sets/src/mage/cards/d/DrownyardBehemoth.java
index 2e005a79cd8..83f85060c4d 100644
--- a/Mage.Sets/src/mage/cards/d/DrownyardBehemoth.java
+++ b/Mage.Sets/src/mage/cards/d/DrownyardBehemoth.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class DrownyardBehemoth extends CardImpl {
+public final class DrownyardBehemoth extends CardImpl {
public DrownyardBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{9}");
diff --git a/Mage.Sets/src/mage/cards/d/DrownyardExplorers.java b/Mage.Sets/src/mage/cards/d/DrownyardExplorers.java
index ef003c058ed..344277852ef 100644
--- a/Mage.Sets/src/mage/cards/d/DrownyardExplorers.java
+++ b/Mage.Sets/src/mage/cards/d/DrownyardExplorers.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DrownyardExplorers extends CardImpl {
+public final class DrownyardExplorers extends CardImpl {
public DrownyardExplorers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DrownyardTemple.java b/Mage.Sets/src/mage/cards/d/DrownyardTemple.java
index fb1350038fb..a787bd3f40a 100644
--- a/Mage.Sets/src/mage/cards/d/DrownyardTemple.java
+++ b/Mage.Sets/src/mage/cards/d/DrownyardTemple.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class DrownyardTemple extends CardImpl {
+public final class DrownyardTemple extends CardImpl {
public DrownyardTemple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/DrudgeBeetle.java b/Mage.Sets/src/mage/cards/d/DrudgeBeetle.java
index 4e759226292..f2d00a24775 100644
--- a/Mage.Sets/src/mage/cards/d/DrudgeBeetle.java
+++ b/Mage.Sets/src/mage/cards/d/DrudgeBeetle.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DrudgeBeetle extends CardImpl {
+public final class DrudgeBeetle extends CardImpl {
public DrudgeBeetle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DrudgeReavers.java b/Mage.Sets/src/mage/cards/d/DrudgeReavers.java
index 8bcd4da2db8..ef43ae39b30 100644
--- a/Mage.Sets/src/mage/cards/d/DrudgeReavers.java
+++ b/Mage.Sets/src/mage/cards/d/DrudgeReavers.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class DrudgeReavers extends CardImpl {
+public final class DrudgeReavers extends CardImpl {
public DrudgeReavers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrudgeSentinel.java b/Mage.Sets/src/mage/cards/d/DrudgeSentinel.java
index 189b80ff84e..e4db90b4abd 100644
--- a/Mage.Sets/src/mage/cards/d/DrudgeSentinel.java
+++ b/Mage.Sets/src/mage/cards/d/DrudgeSentinel.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
/**
* @author JRHerlehy Created on 4/7/18.
*/
-public class DrudgeSentinel extends CardImpl {
+public final class DrudgeSentinel extends CardImpl {
public DrudgeSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrudgeSkeletons.java b/Mage.Sets/src/mage/cards/d/DrudgeSkeletons.java
index 6debe23e97d..be0441b6724 100644
--- a/Mage.Sets/src/mage/cards/d/DrudgeSkeletons.java
+++ b/Mage.Sets/src/mage/cards/d/DrudgeSkeletons.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class DrudgeSkeletons extends CardImpl {
+public final class DrudgeSkeletons extends CardImpl {
public DrudgeSkeletons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DrudgeSpell.java b/Mage.Sets/src/mage/cards/d/DrudgeSpell.java
index 37a97403053..776afe51fe6 100644
--- a/Mage.Sets/src/mage/cards/d/DrudgeSpell.java
+++ b/Mage.Sets/src/mage/cards/d/DrudgeSpell.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class DrudgeSpell extends CardImpl {
+public final class DrudgeSpell extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Skeleton tokens");
diff --git a/Mage.Sets/src/mage/cards/d/DruidLyrist.java b/Mage.Sets/src/mage/cards/d/DruidLyrist.java
index c93ee9ad7c1..2829fc6d54e 100644
--- a/Mage.Sets/src/mage/cards/d/DruidLyrist.java
+++ b/Mage.Sets/src/mage/cards/d/DruidLyrist.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class DruidLyrist extends CardImpl {
+public final class DruidLyrist extends CardImpl {
public DruidLyrist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DruidOfTheAnima.java b/Mage.Sets/src/mage/cards/d/DruidOfTheAnima.java
index be2be779210..68f9ace57a2 100644
--- a/Mage.Sets/src/mage/cards/d/DruidOfTheAnima.java
+++ b/Mage.Sets/src/mage/cards/d/DruidOfTheAnima.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DruidOfTheAnima extends CardImpl {
+public final class DruidOfTheAnima extends CardImpl {
public DruidOfTheAnima (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DruidOfTheCowl.java b/Mage.Sets/src/mage/cards/d/DruidOfTheCowl.java
index f4e41addfe7..5860940f241 100644
--- a/Mage.Sets/src/mage/cards/d/DruidOfTheCowl.java
+++ b/Mage.Sets/src/mage/cards/d/DruidOfTheCowl.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DruidOfTheCowl extends CardImpl {
+public final class DruidOfTheCowl extends CardImpl {
public DruidOfTheCowl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DruidicSatchel.java b/Mage.Sets/src/mage/cards/d/DruidicSatchel.java
index d2ffd5a27ad..d7f33559bef 100644
--- a/Mage.Sets/src/mage/cards/d/DruidicSatchel.java
+++ b/Mage.Sets/src/mage/cards/d/DruidicSatchel.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author North
*/
-public class DruidicSatchel extends CardImpl {
+public final class DruidicSatchel extends CardImpl {
public DruidicSatchel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/d/DruidsCall.java b/Mage.Sets/src/mage/cards/d/DruidsCall.java
index fcba8d21a39..1eb0c444278 100644
--- a/Mage.Sets/src/mage/cards/d/DruidsCall.java
+++ b/Mage.Sets/src/mage/cards/d/DruidsCall.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DruidsCall extends CardImpl {
+public final class DruidsCall extends CardImpl {
public DruidsCall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DruidsDeliverance.java b/Mage.Sets/src/mage/cards/d/DruidsDeliverance.java
index 4fd41b50ae5..ba302f5623c 100644
--- a/Mage.Sets/src/mage/cards/d/DruidsDeliverance.java
+++ b/Mage.Sets/src/mage/cards/d/DruidsDeliverance.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author LevleX2
*/
-public class DruidsDeliverance extends CardImpl {
+public final class DruidsDeliverance extends CardImpl {
public DruidsDeliverance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DruidsFamiliar.java b/Mage.Sets/src/mage/cards/d/DruidsFamiliar.java
index c918fbe78b5..6cd0f7da668 100644
--- a/Mage.Sets/src/mage/cards/d/DruidsFamiliar.java
+++ b/Mage.Sets/src/mage/cards/d/DruidsFamiliar.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
* @author noxx
*/
-public class DruidsFamiliar extends CardImpl {
+public final class DruidsFamiliar extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, each of those creatures gets +2/+2";
diff --git a/Mage.Sets/src/mage/cards/d/DruidsRepository.java b/Mage.Sets/src/mage/cards/d/DruidsRepository.java
index 4a60337b010..6aabc432273 100644
--- a/Mage.Sets/src/mage/cards/d/DruidsRepository.java
+++ b/Mage.Sets/src/mage/cards/d/DruidsRepository.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
* @author noxx
*/
-public class DruidsRepository extends CardImpl {
+public final class DruidsRepository extends CardImpl {
public DruidsRepository(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/Drumhunter.java b/Mage.Sets/src/mage/cards/d/Drumhunter.java
index 43335dd3a8c..9c983267940 100644
--- a/Mage.Sets/src/mage/cards/d/Drumhunter.java
+++ b/Mage.Sets/src/mage/cards/d/Drumhunter.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author North
*/
-public class Drumhunter extends CardImpl {
+public final class Drumhunter extends CardImpl {
public Drumhunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.java b/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.java
index cfab7d6c7d5..57509251f38 100644
--- a/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.java
+++ b/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DrunauCorpseTrawler extends CardImpl {
+public final class DrunauCorpseTrawler extends CardImpl {
public DrunauCorpseTrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DrySpell.java b/Mage.Sets/src/mage/cards/d/DrySpell.java
index 193b1296eef..a53a22739fd 100644
--- a/Mage.Sets/src/mage/cards/d/DrySpell.java
+++ b/Mage.Sets/src/mage/cards/d/DrySpell.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Quercitron
*/
-public class DrySpell extends CardImpl {
+public final class DrySpell extends CardImpl {
public DrySpell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DryadArbor.java b/Mage.Sets/src/mage/cards/d/DryadArbor.java
index 583f58d3ba2..eeb6b741f0b 100644
--- a/Mage.Sets/src/mage/cards/d/DryadArbor.java
+++ b/Mage.Sets/src/mage/cards/d/DryadArbor.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class DryadArbor extends CardImpl {
+public final class DryadArbor extends CardImpl {
public DryadArbor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND,CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/d/DryadMilitant.java b/Mage.Sets/src/mage/cards/d/DryadMilitant.java
index 967f76b5b88..d26511006f5 100644
--- a/Mage.Sets/src/mage/cards/d/DryadMilitant.java
+++ b/Mage.Sets/src/mage/cards/d/DryadMilitant.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DryadMilitant extends CardImpl {
+public final class DryadMilitant extends CardImpl {
public DryadMilitant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G/W}");
diff --git a/Mage.Sets/src/mage/cards/d/DryadSophisticate.java b/Mage.Sets/src/mage/cards/d/DryadSophisticate.java
index ca04e1ef5dc..2480dda267e 100644
--- a/Mage.Sets/src/mage/cards/d/DryadSophisticate.java
+++ b/Mage.Sets/src/mage/cards/d/DryadSophisticate.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author LevelX2
*/
-public class DryadSophisticate extends CardImpl {
+public final class DryadSophisticate extends CardImpl {
public DryadSophisticate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DryadsCaress.java b/Mage.Sets/src/mage/cards/d/DryadsCaress.java
index a51a2a80610..210e864e45d 100644
--- a/Mage.Sets/src/mage/cards/d/DryadsCaress.java
+++ b/Mage.Sets/src/mage/cards/d/DryadsCaress.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Wehk
*/
-public class DryadsCaress extends CardImpl {
+public final class DryadsCaress extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature on the battlefield");
private static final String rule = "untap all creatures you control";
diff --git a/Mage.Sets/src/mage/cards/d/DryadsFavor.java b/Mage.Sets/src/mage/cards/d/DryadsFavor.java
index 4ae6579d01c..00aac8387cb 100644
--- a/Mage.Sets/src/mage/cards/d/DryadsFavor.java
+++ b/Mage.Sets/src/mage/cards/d/DryadsFavor.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class DryadsFavor extends CardImpl {
+public final class DryadsFavor extends CardImpl {
public DryadsFavor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DualCasting.java b/Mage.Sets/src/mage/cards/d/DualCasting.java
index 8b04fcc2248..8e510fc6658 100644
--- a/Mage.Sets/src/mage/cards/d/DualCasting.java
+++ b/Mage.Sets/src/mage/cards/d/DualCasting.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class DualCasting extends CardImpl {
+public final class DualCasting extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery spell");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DualNature.java b/Mage.Sets/src/mage/cards/d/DualNature.java
index 30807860937..c9d46f2d6c9 100644
--- a/Mage.Sets/src/mage/cards/d/DualNature.java
+++ b/Mage.Sets/src/mage/cards/d/DualNature.java
@@ -58,7 +58,7 @@ import mage.util.CardUtil;
*
* @author TheElk801
*/
-public class DualNature extends CardImpl {
+public final class DualNature extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/d/DualShot.java b/Mage.Sets/src/mage/cards/d/DualShot.java
index f6c8be430c7..43221086387 100644
--- a/Mage.Sets/src/mage/cards/d/DualShot.java
+++ b/Mage.Sets/src/mage/cards/d/DualShot.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class DualShot extends CardImpl {
+public final class DualShot extends CardImpl {
public DualShot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DualcasterMage.java b/Mage.Sets/src/mage/cards/d/DualcasterMage.java
index 6b953bec669..006e29c7d40 100644
--- a/Mage.Sets/src/mage/cards/d/DualcasterMage.java
+++ b/Mage.Sets/src/mage/cards/d/DualcasterMage.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class DualcasterMage extends CardImpl {
+public final class DualcasterMage extends CardImpl {
public DualcasterMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/Dub.java b/Mage.Sets/src/mage/cards/d/Dub.java
index 1d64ddc952f..655d496554f 100644
--- a/Mage.Sets/src/mage/cards/d/Dub.java
+++ b/Mage.Sets/src/mage/cards/d/Dub.java
@@ -26,7 +26,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author JRHerlehy
* Created on 4/6/18.
*/
-public class Dub extends CardImpl {
+public final class Dub extends CardImpl {
public Dub(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DubiousChallenge.java b/Mage.Sets/src/mage/cards/d/DubiousChallenge.java
index 031dfac663f..3deda606a8d 100644
--- a/Mage.Sets/src/mage/cards/d/DubiousChallenge.java
+++ b/Mage.Sets/src/mage/cards/d/DubiousChallenge.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class DubiousChallenge extends CardImpl {
+public final class DubiousChallenge extends CardImpl {
public DubiousChallenge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DuctCrawler.java b/Mage.Sets/src/mage/cards/d/DuctCrawler.java
index c9e61d664cc..770b7a96c14 100644
--- a/Mage.Sets/src/mage/cards/d/DuctCrawler.java
+++ b/Mage.Sets/src/mage/cards/d/DuctCrawler.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class DuctCrawler extends CardImpl {
+public final class DuctCrawler extends CardImpl {
public DuctCrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DueRespect.java b/Mage.Sets/src/mage/cards/d/DueRespect.java
index 1a02ec51d79..2f71fa96c4b 100644
--- a/Mage.Sets/src/mage/cards/d/DueRespect.java
+++ b/Mage.Sets/src/mage/cards/d/DueRespect.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class DueRespect extends CardImpl {
+public final class DueRespect extends CardImpl {
public DueRespect(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DuelingGrounds.java b/Mage.Sets/src/mage/cards/d/DuelingGrounds.java
index 7367ea3ae3f..6b882fa7c5d 100644
--- a/Mage.Sets/src/mage/cards/d/DuelingGrounds.java
+++ b/Mage.Sets/src/mage/cards/d/DuelingGrounds.java
@@ -48,7 +48,7 @@ import mage.watchers.common.BlockedThisTurnWatcher;
*
* @author Quercitron
*/
-public class DuelingGrounds extends CardImpl {
+public final class DuelingGrounds extends CardImpl {
public DuelingGrounds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DuelistsHeritage.java b/Mage.Sets/src/mage/cards/d/DuelistsHeritage.java
index a9fdc13b05f..cde81be76fb 100644
--- a/Mage.Sets/src/mage/cards/d/DuelistsHeritage.java
+++ b/Mage.Sets/src/mage/cards/d/DuelistsHeritage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DuelistsHeritage extends CardImpl {
+public final class DuelistsHeritage extends CardImpl {
public DuelistsHeritage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DuergarAssailant.java b/Mage.Sets/src/mage/cards/d/DuergarAssailant.java
index af3f74d0fd5..bbe41d96ca7 100644
--- a/Mage.Sets/src/mage/cards/d/DuergarAssailant.java
+++ b/Mage.Sets/src/mage/cards/d/DuergarAssailant.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
* @author jeffwadsworth
*/
-public class DuergarAssailant extends CardImpl {
+public final class DuergarAssailant extends CardImpl {
public DuergarAssailant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/W}");
diff --git a/Mage.Sets/src/mage/cards/d/DuergarCaveGuard.java b/Mage.Sets/src/mage/cards/d/DuergarCaveGuard.java
index 81ac71e3d25..35aae433b25 100644
--- a/Mage.Sets/src/mage/cards/d/DuergarCaveGuard.java
+++ b/Mage.Sets/src/mage/cards/d/DuergarCaveGuard.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class DuergarCaveGuard extends CardImpl {
+public final class DuergarCaveGuard extends CardImpl {
public DuergarCaveGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java b/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java
index 41b8394cddd..a657c0231bc 100644
--- a/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java
+++ b/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author jeffwadsworth
*/
-public class DuergarHedgeMage extends CardImpl {
+public final class DuergarHedgeMage extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("a Mountain");
private static final FilterLandPermanent filter2 = new FilterLandPermanent("a Plains");
diff --git a/Mage.Sets/src/mage/cards/d/DuergarMineCaptain.java b/Mage.Sets/src/mage/cards/d/DuergarMineCaptain.java
index aeb12838785..39d332571e8 100644
--- a/Mage.Sets/src/mage/cards/d/DuergarMineCaptain.java
+++ b/Mage.Sets/src/mage/cards/d/DuergarMineCaptain.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterAttackingCreature;
* @author jeffwadsworth
*
*/
-public class DuergarMineCaptain extends CardImpl {
+public final class DuergarMineCaptain extends CardImpl {
public DuergarMineCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/d/DukharaPeafowl.java b/Mage.Sets/src/mage/cards/d/DukharaPeafowl.java
index b35ab80a85c..ae00a65abca 100644
--- a/Mage.Sets/src/mage/cards/d/DukharaPeafowl.java
+++ b/Mage.Sets/src/mage/cards/d/DukharaPeafowl.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DukharaPeafowl extends CardImpl {
+public final class DukharaPeafowl extends CardImpl {
public DukharaPeafowl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DukharaScavenger.java b/Mage.Sets/src/mage/cards/d/DukharaScavenger.java
index 220520abbcd..b2de377ccab 100644
--- a/Mage.Sets/src/mage/cards/d/DukharaScavenger.java
+++ b/Mage.Sets/src/mage/cards/d/DukharaScavenger.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class DukharaScavenger extends CardImpl {
+public final class DukharaScavenger extends CardImpl {
public DukharaScavenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DulcetSirens.java b/Mage.Sets/src/mage/cards/d/DulcetSirens.java
index 9adfa5670de..8643578d257 100644
--- a/Mage.Sets/src/mage/cards/d/DulcetSirens.java
+++ b/Mage.Sets/src/mage/cards/d/DulcetSirens.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class DulcetSirens extends CardImpl {
+public final class DulcetSirens extends CardImpl {
public DulcetSirens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/d/DuneBeetle.java b/Mage.Sets/src/mage/cards/d/DuneBeetle.java
index 123755f2a7b..e0a8eba5999 100644
--- a/Mage.Sets/src/mage/cards/d/DuneBeetle.java
+++ b/Mage.Sets/src/mage/cards/d/DuneBeetle.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class DuneBeetle extends CardImpl {
+public final class DuneBeetle extends CardImpl {
public DuneBeetle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DuneBroodNephilim.java b/Mage.Sets/src/mage/cards/d/DuneBroodNephilim.java
index 72c4b819f41..23dbfa440c4 100644
--- a/Mage.Sets/src/mage/cards/d/DuneBroodNephilim.java
+++ b/Mage.Sets/src/mage/cards/d/DuneBroodNephilim.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.DuneBroodNephilimToken;
/**
* @author Loki
*/
-public class DuneBroodNephilim extends CardImpl {
+public final class DuneBroodNephilim extends CardImpl {
final static FilterControlledPermanent filterLands = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/d/DuneDiviner.java b/Mage.Sets/src/mage/cards/d/DuneDiviner.java
index 61f93fa4485..1df5658bc44 100644
--- a/Mage.Sets/src/mage/cards/d/DuneDiviner.java
+++ b/Mage.Sets/src/mage/cards/d/DuneDiviner.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author ciaccona007
*/
-public class DuneDiviner extends CardImpl {
+public final class DuneDiviner extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Desert you control");
diff --git a/Mage.Sets/src/mage/cards/d/Duneblast.java b/Mage.Sets/src/mage/cards/d/Duneblast.java
index 85c01990c01..7984534242c 100644
--- a/Mage.Sets/src/mage/cards/d/Duneblast.java
+++ b/Mage.Sets/src/mage/cards/d/Duneblast.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Duneblast extends CardImpl {
+public final class Duneblast extends CardImpl {
public Duneblast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DuneriderOutlaw.java b/Mage.Sets/src/mage/cards/d/DuneriderOutlaw.java
index 214034ff274..73733c30f59 100644
--- a/Mage.Sets/src/mage/cards/d/DuneriderOutlaw.java
+++ b/Mage.Sets/src/mage/cards/d/DuneriderOutlaw.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX
*/
-public class DuneriderOutlaw extends CardImpl {
+public final class DuneriderOutlaw extends CardImpl {
private static final String ruleText = "At the beginning of each end step, if {this} dealt damage to an opponent this turn, put a +1/+1 counter on it.";
diff --git a/Mage.Sets/src/mage/cards/d/DunesOfTheDead.java b/Mage.Sets/src/mage/cards/d/DunesOfTheDead.java
index de42e24b590..24e45268a1f 100644
--- a/Mage.Sets/src/mage/cards/d/DunesOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/d/DunesOfTheDead.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author ciaccona007
*/
-public class DunesOfTheDead extends CardImpl {
+public final class DunesOfTheDead extends CardImpl {
public DunesOfTheDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/d/DungeonGeists.java b/Mage.Sets/src/mage/cards/d/DungeonGeists.java
index 78bad86148d..1c744fbddcd 100644
--- a/Mage.Sets/src/mage/cards/d/DungeonGeists.java
+++ b/Mage.Sets/src/mage/cards/d/DungeonGeists.java
@@ -52,7 +52,7 @@ import mage.watchers.Watcher;
*
* @author BetaSteward
*/
-public class DungeonGeists extends CardImpl {
+public final class DungeonGeists extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/d/DungeonShade.java b/Mage.Sets/src/mage/cards/d/DungeonShade.java
index 95c43ae2a05..e4f5d1ccdca 100644
--- a/Mage.Sets/src/mage/cards/d/DungeonShade.java
+++ b/Mage.Sets/src/mage/cards/d/DungeonShade.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class DungeonShade extends CardImpl {
+public final class DungeonShade extends CardImpl {
public DungeonShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DungroveElder.java b/Mage.Sets/src/mage/cards/d/DungroveElder.java
index dfc5115bdcd..88f331d9dbc 100644
--- a/Mage.Sets/src/mage/cards/d/DungroveElder.java
+++ b/Mage.Sets/src/mage/cards/d/DungroveElder.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class DungroveElder extends CardImpl {
+public final class DungroveElder extends CardImpl {
final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
diff --git a/Mage.Sets/src/mage/cards/d/Duplicant.java b/Mage.Sets/src/mage/cards/d/Duplicant.java
index e6673fd5181..a488550486c 100644
--- a/Mage.Sets/src/mage/cards/d/Duplicant.java
+++ b/Mage.Sets/src/mage/cards/d/Duplicant.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Duplicant extends CardImpl {
+public final class Duplicant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
@@ -68,7 +68,7 @@ public class Duplicant extends CardImpl {
this.toughness = new MageInt(4);
// Imprint - When Duplicant enters the battlefield, you may exile target nontoken creature.
- Ability ability = new EntersBattlefieldTriggeredAbility(new DuplicantExileTargetEffect(), true, "Imprint - ");
+ Ability ability = new EntersBattlefieldTriggeredAbility(new DuplicantExileTargetEffect(), true, "Imprint — ");
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);
// As long as the exiled card is a creature card, Duplicant has that card's power, toughness, and creature types. It's still a Shapeshifter.
diff --git a/Mage.Sets/src/mage/cards/d/DurableHandicraft.java b/Mage.Sets/src/mage/cards/d/DurableHandicraft.java
index 4c2be49db5c..6ed67da885e 100644
--- a/Mage.Sets/src/mage/cards/d/DurableHandicraft.java
+++ b/Mage.Sets/src/mage/cards/d/DurableHandicraft.java
@@ -50,7 +50,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author spjspj
*/
-public class DurableHandicraft extends CardImpl {
+public final class DurableHandicraft extends CardImpl {
public DurableHandicraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/Duress.java b/Mage.Sets/src/mage/cards/d/Duress.java
index 6e079f5fea3..3989a39ff14 100644
--- a/Mage.Sets/src/mage/cards/d/Duress.java
+++ b/Mage.Sets/src/mage/cards/d/Duress.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetOpponent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Duress extends CardImpl {
+public final class Duress extends CardImpl {
private static final FilterCard filter = new FilterCard("a noncreature, nonland card");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DurkwoodBaloth.java b/Mage.Sets/src/mage/cards/d/DurkwoodBaloth.java
index 20dc56fbf3b..71767d0af6e 100644
--- a/Mage.Sets/src/mage/cards/d/DurkwoodBaloth.java
+++ b/Mage.Sets/src/mage/cards/d/DurkwoodBaloth.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DurkwoodBaloth extends CardImpl {
+public final class DurkwoodBaloth extends CardImpl {
public DurkwoodBaloth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DurkwoodBoars.java b/Mage.Sets/src/mage/cards/d/DurkwoodBoars.java
index 9edb4c52777..9d7bbde8478 100644
--- a/Mage.Sets/src/mage/cards/d/DurkwoodBoars.java
+++ b/Mage.Sets/src/mage/cards/d/DurkwoodBoars.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DurkwoodBoars extends CardImpl {
+public final class DurkwoodBoars extends CardImpl {
public DurkwoodBoars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DurkwoodTracker.java b/Mage.Sets/src/mage/cards/d/DurkwoodTracker.java
new file mode 100644
index 00000000000..2e0d6097221
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/d/DurkwoodTracker.java
@@ -0,0 +1,110 @@
+/*
+ * 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.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.target.common.TargetAttackingCreature;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class DurkwoodTracker extends CardImpl {
+
+ public DurkwoodTracker(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
+
+ this.subtype.add(SubType.GIANT);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(3);
+
+ // {1}{G}, {tap}: If Durkwood Tracker is on the battlefield, it deals damage equal to its power to target attacking creature. That creature deals damage equal to its power to Durkwood Tracker.
+ Ability ability = new SimpleActivatedAbility(new DurkwoodTrackerEffect(), new ManaCostsImpl("{1}{G}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetAttackingCreature());
+ this.addAbility(ability);
+ }
+
+ public DurkwoodTracker(final DurkwoodTracker card) {
+ super(card);
+ }
+
+ @Override
+ public DurkwoodTracker copy() {
+ return new DurkwoodTracker(this);
+ }
+}
+
+class DurkwoodTrackerEffect extends OneShotEffect {
+
+ DurkwoodTrackerEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "if {this} is on the battlefield, "
+ + "it deals damage equal to its power to target attacking creature. "
+ + "That creature deals damage equal to its power to {this}";
+ }
+
+ DurkwoodTrackerEffect(final DurkwoodTrackerEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public DurkwoodTrackerEffect copy() {
+ return new DurkwoodTrackerEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent permanent = game.getPermanent(source.getSourceId());
+ if (permanent == null
+ || permanent.getZoneChangeCounter(game)
+ != source.getSourceObjectZoneChangeCounter()) {
+ return false;
+ }
+ Permanent targeted = game.getPermanent(source.getFirstTarget());
+ if (targeted == null) {
+ return false;
+ }
+ targeted.damage(permanent.getPower().getValue(), permanent.getId(), game, false, true);
+ permanent.damage(targeted.getPower().getValue(), targeted.getId(), game, false, true);
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/d/DuskCharger.java b/Mage.Sets/src/mage/cards/d/DuskCharger.java
index e9a09ec133f..2d6e6550015 100644
--- a/Mage.Sets/src/mage/cards/d/DuskCharger.java
+++ b/Mage.Sets/src/mage/cards/d/DuskCharger.java
@@ -1,78 +1,78 @@
-/*
- * 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.Ability;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.condition.common.CitysBlessingCondition;
-import mage.abilities.decorator.ConditionalContinuousEffect;
-import mage.abilities.effects.ContinuousEffect;
-import mage.abilities.effects.common.continuous.BoostSourceEffect;
-import mage.abilities.keyword.AscendAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.SubType;
-import mage.constants.Zone;
-
-/**
- *
- * @author LevelX2
- */
-public class DuskCharger extends CardImpl {
-
- public DuskCharger(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
-
- this.subtype.add(SubType.HORSE);
- this.power = new MageInt(3);
- this.toughness = new MageInt(3);
-
- // Ascend
- this.addAbility(new AscendAbility());
-
- // Dusk Charger gets +2/+2 as long as you have the city's blessing.
- ContinuousEffect boostSource = new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield);
- ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, CitysBlessingCondition.instance,
- "{this} gets +2/+2 as long as you have the city's blessing");
- Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
- this.addAbility(ability);
- }
-
- public DuskCharger(final DuskCharger card) {
- super(card);
- }
-
- @Override
- public DuskCharger copy() {
- return new DuskCharger(this);
- }
-}
+/*
+ * 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.Ability;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.condition.common.CitysBlessingCondition;
+import mage.abilities.decorator.ConditionalContinuousEffect;
+import mage.abilities.effects.ContinuousEffect;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.abilities.keyword.AscendAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class DuskCharger extends CardImpl {
+
+ public DuskCharger(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
+
+ this.subtype.add(SubType.HORSE);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Ascend
+ this.addAbility(new AscendAbility());
+
+ // Dusk Charger gets +2/+2 as long as you have the city's blessing.
+ ContinuousEffect boostSource = new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield);
+ ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, CitysBlessingCondition.instance,
+ "{this} gets +2/+2 as long as you have the city's blessing");
+ Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
+ this.addAbility(ability);
+ }
+
+ public DuskCharger(final DuskCharger card) {
+ super(card);
+ }
+
+ @Override
+ public DuskCharger copy() {
+ return new DuskCharger(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/d/DuskDawn.java b/Mage.Sets/src/mage/cards/d/DuskDawn.java
index 92db3e1321d..301d720ff00 100644
--- a/Mage.Sets/src/mage/cards/d/DuskDawn.java
+++ b/Mage.Sets/src/mage/cards/d/DuskDawn.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
import mage.game.Game;
import mage.players.Player;
-public class DuskDawn extends SplitCard {
+public final class DuskDawn extends SplitCard {
private static final FilterCreaturePermanent filterCreatures3orGreater = new FilterCreaturePermanent("creatures with power greater than or equal to 3");
diff --git a/Mage.Sets/src/mage/cards/d/DuskFeaster.java b/Mage.Sets/src/mage/cards/d/DuskFeaster.java
index dbff71b19df..142dddb1045 100644
--- a/Mage.Sets/src/mage/cards/d/DuskFeaster.java
+++ b/Mage.Sets/src/mage/cards/d/DuskFeaster.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class DuskFeaster extends CardImpl {
+public final class DuskFeaster extends CardImpl {
public DuskFeaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskImp.java b/Mage.Sets/src/mage/cards/d/DuskImp.java
index 6a7f00ced5c..ccb7fab8ca9 100644
--- a/Mage.Sets/src/mage/cards/d/DuskImp.java
+++ b/Mage.Sets/src/mage/cards/d/DuskImp.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DuskImp extends CardImpl {
+public final class DuskImp extends CardImpl {
public DuskImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskLegionDreadnought.java b/Mage.Sets/src/mage/cards/d/DuskLegionDreadnought.java
index cbf4f9dd0f2..9b5c0e90f55 100644
--- a/Mage.Sets/src/mage/cards/d/DuskLegionDreadnought.java
+++ b/Mage.Sets/src/mage/cards/d/DuskLegionDreadnought.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author TheElk801
*/
-public class DuskLegionDreadnought extends CardImpl {
+public final class DuskLegionDreadnought extends CardImpl {
public DuskLegionDreadnought(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskLegionZealot.java b/Mage.Sets/src/mage/cards/d/DuskLegionZealot.java
index edd9a6ec82b..18a31eaa8a6 100644
--- a/Mage.Sets/src/mage/cards/d/DuskLegionZealot.java
+++ b/Mage.Sets/src/mage/cards/d/DuskLegionZealot.java
@@ -42,7 +42,7 @@ import mage.cards.CardSetInfo;
*
* @author JayDi85
*/
-public class DuskLegionZealot extends CardImpl {
+public final class DuskLegionZealot extends CardImpl {
public DuskLegionZealot (UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskUrchins.java b/Mage.Sets/src/mage/cards/d/DuskUrchins.java
index de8ac3e7464..cbd990f5270 100644
--- a/Mage.Sets/src/mage/cards/d/DuskUrchins.java
+++ b/Mage.Sets/src/mage/cards/d/DuskUrchins.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author jeffwadsworth
*/
-public class DuskUrchins extends CardImpl {
+public final class DuskUrchins extends CardImpl {
public DuskUrchins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskborneSkymarcher.java b/Mage.Sets/src/mage/cards/d/DuskborneSkymarcher.java
index 4eb31fefe5b..20bb1bae2b0 100644
--- a/Mage.Sets/src/mage/cards/d/DuskborneSkymarcher.java
+++ b/Mage.Sets/src/mage/cards/d/DuskborneSkymarcher.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class DuskborneSkymarcher extends CardImpl {
+public final class DuskborneSkymarcher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.VAMPIRE, "attacking Vampire");
diff --git a/Mage.Sets/src/mage/cards/d/DuskdaleWurm.java b/Mage.Sets/src/mage/cards/d/DuskdaleWurm.java
index 1417fa3ffb0..965cd134841 100644
--- a/Mage.Sets/src/mage/cards/d/DuskdaleWurm.java
+++ b/Mage.Sets/src/mage/cards/d/DuskdaleWurm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class DuskdaleWurm extends CardImpl {
+public final class DuskdaleWurm extends CardImpl {
public DuskdaleWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskhunterBat.java b/Mage.Sets/src/mage/cards/d/DuskhunterBat.java
index 902751c77eb..a88e30cd6db 100644
--- a/Mage.Sets/src/mage/cards/d/DuskhunterBat.java
+++ b/Mage.Sets/src/mage/cards/d/DuskhunterBat.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DuskhunterBat extends CardImpl {
+public final class DuskhunterBat extends CardImpl {
public DuskhunterBat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskmantleGuildmage.java b/Mage.Sets/src/mage/cards/d/DuskmantleGuildmage.java
index bd25e8347a2..f449d51c39f 100644
--- a/Mage.Sets/src/mage/cards/d/DuskmantleGuildmage.java
+++ b/Mage.Sets/src/mage/cards/d/DuskmantleGuildmage.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth and LevelX2
*/
-public class DuskmantleGuildmage extends CardImpl {
+public final class DuskmantleGuildmage extends CardImpl {
public DuskmantleGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskmantleHouseOfShadow.java b/Mage.Sets/src/mage/cards/d/DuskmantleHouseOfShadow.java
index 58a07c5ad03..e3eaa6a50ca 100644
--- a/Mage.Sets/src/mage/cards/d/DuskmantleHouseOfShadow.java
+++ b/Mage.Sets/src/mage/cards/d/DuskmantleHouseOfShadow.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class DuskmantleHouseOfShadow extends CardImpl {
+public final class DuskmantleHouseOfShadow extends CardImpl {
public DuskmantleHouseOfShadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/d/DuskmantleProwler.java b/Mage.Sets/src/mage/cards/d/DuskmantleProwler.java
index 799ba20626d..d1b43db61cd 100644
--- a/Mage.Sets/src/mage/cards/d/DuskmantleProwler.java
+++ b/Mage.Sets/src/mage/cards/d/DuskmantleProwler.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DuskmantleProwler extends CardImpl {
+public final class DuskmantleProwler extends CardImpl {
public DuskmantleProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskmantleSeer.java b/Mage.Sets/src/mage/cards/d/DuskmantleSeer.java
index 7fbfd9c5e53..d828fc70fb5 100644
--- a/Mage.Sets/src/mage/cards/d/DuskmantleSeer.java
+++ b/Mage.Sets/src/mage/cards/d/DuskmantleSeer.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class DuskmantleSeer extends CardImpl {
+public final class DuskmantleSeer extends CardImpl {
public DuskmantleSeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskriderFalcon.java b/Mage.Sets/src/mage/cards/d/DuskriderFalcon.java
index d4dfa6a5f9a..406382043db 100644
--- a/Mage.Sets/src/mage/cards/d/DuskriderFalcon.java
+++ b/Mage.Sets/src/mage/cards/d/DuskriderFalcon.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class DuskriderFalcon extends CardImpl {
+public final class DuskriderFalcon extends CardImpl {
public DuskriderFalcon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskriderPeregrine.java b/Mage.Sets/src/mage/cards/d/DuskriderPeregrine.java
index 9333c4440b8..ac2799de6ad 100644
--- a/Mage.Sets/src/mage/cards/d/DuskriderPeregrine.java
+++ b/Mage.Sets/src/mage/cards/d/DuskriderPeregrine.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class DuskriderPeregrine extends CardImpl {
+public final class DuskriderPeregrine extends CardImpl {
public DuskriderPeregrine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/Duskwalker.java b/Mage.Sets/src/mage/cards/d/Duskwalker.java
index c1697793a34..14893ef59ce 100644
--- a/Mage.Sets/src/mage/cards/d/Duskwalker.java
+++ b/Mage.Sets/src/mage/cards/d/Duskwalker.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author michael.napoleon@gmail.com
*/
-public class Duskwalker extends CardImpl {
+public final class Duskwalker extends CardImpl {
public Duskwalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DuskwatchRecruiter.java b/Mage.Sets/src/mage/cards/d/DuskwatchRecruiter.java
index 6af0aff2c22..f29ee703c3d 100644
--- a/Mage.Sets/src/mage/cards/d/DuskwatchRecruiter.java
+++ b/Mage.Sets/src/mage/cards/d/DuskwatchRecruiter.java
@@ -50,7 +50,7 @@ import mage.filter.common.FilterCreatureCard;
/**
* @author fireshoes
*/
-public class DuskwatchRecruiter extends CardImpl {
+public final class DuskwatchRecruiter extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a creature card");
diff --git a/Mage.Sets/src/mage/cards/d/Duskworker.java b/Mage.Sets/src/mage/cards/d/Duskworker.java
index dd3aadbc550..d38a2117454 100644
--- a/Mage.Sets/src/mage/cards/d/Duskworker.java
+++ b/Mage.Sets/src/mage/cards/d/Duskworker.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Duskworker extends CardImpl {
+public final class Duskworker extends CardImpl {
public Duskworker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/d/DustBowl.java b/Mage.Sets/src/mage/cards/d/DustBowl.java
index 9dcfa57f5ea..4ed016f5f39 100644
--- a/Mage.Sets/src/mage/cards/d/DustBowl.java
+++ b/Mage.Sets/src/mage/cards/d/DustBowl.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author LevelX2
*/
-public class DustBowl extends CardImpl {
+public final class DustBowl extends CardImpl {
public DustBowl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/DustCorona.java b/Mage.Sets/src/mage/cards/d/DustCorona.java
index e9c8a1029f3..ec213e0678c 100644
--- a/Mage.Sets/src/mage/cards/d/DustCorona.java
+++ b/Mage.Sets/src/mage/cards/d/DustCorona.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class DustCorona extends CardImpl {
+public final class DustCorona extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DustElemental.java b/Mage.Sets/src/mage/cards/d/DustElemental.java
index cffa27f1e19..2f900a8e37f 100644
--- a/Mage.Sets/src/mage/cards/d/DustElemental.java
+++ b/Mage.Sets/src/mage/cards/d/DustElemental.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Zeplar1_at_googlemail.com
*/
-public class DustElemental extends CardImpl {
+public final class DustElemental extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(" creatures you control");
diff --git a/Mage.Sets/src/mage/cards/d/DustOfMoments.java b/Mage.Sets/src/mage/cards/d/DustOfMoments.java
index 012abcea484..a53b7b6ab6d 100644
--- a/Mage.Sets/src/mage/cards/d/DustOfMoments.java
+++ b/Mage.Sets/src/mage/cards/d/DustOfMoments.java
@@ -55,7 +55,7 @@ import mage.players.Player;
* @author Gal Lerman
*
*/
-public class DustOfMoments extends CardImpl {
+public final class DustOfMoments extends CardImpl {
public DustOfMoments(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DustStalker.java b/Mage.Sets/src/mage/cards/d/DustStalker.java
index 8b39d2574ee..43172b7fe56 100644
--- a/Mage.Sets/src/mage/cards/d/DustStalker.java
+++ b/Mage.Sets/src/mage/cards/d/DustStalker.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class DustStalker extends CardImpl {
+public final class DustStalker extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("if you control no other colorless creatures");
diff --git a/Mage.Sets/src/mage/cards/d/DustToDust.java b/Mage.Sets/src/mage/cards/d/DustToDust.java
index 9b7b238fd0e..6e71ddefb36 100644
--- a/Mage.Sets/src/mage/cards/d/DustToDust.java
+++ b/Mage.Sets/src/mage/cards/d/DustToDust.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class DustToDust extends CardImpl {
+public final class DustToDust extends CardImpl {
public DustToDust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DutifulAttendant.java b/Mage.Sets/src/mage/cards/d/DutifulAttendant.java
index a3d5a5e2a87..8b44141acfa 100644
--- a/Mage.Sets/src/mage/cards/d/DutifulAttendant.java
+++ b/Mage.Sets/src/mage/cards/d/DutifulAttendant.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class DutifulAttendant extends CardImpl {
+public final class DutifulAttendant extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("another target creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/d/DutifulReturn.java b/Mage.Sets/src/mage/cards/d/DutifulReturn.java
index f33b54a620f..4641110e7f7 100644
--- a/Mage.Sets/src/mage/cards/d/DutifulReturn.java
+++ b/Mage.Sets/src/mage/cards/d/DutifulReturn.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class DutifulReturn extends CardImpl {
+public final class DutifulReturn extends CardImpl {
public DutifulReturn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DutifulServants.java b/Mage.Sets/src/mage/cards/d/DutifulServants.java
index e54701a132c..a6356e45366 100644
--- a/Mage.Sets/src/mage/cards/d/DutifulServants.java
+++ b/Mage.Sets/src/mage/cards/d/DutifulServants.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Archer262
*/
-public class DutifulServants extends CardImpl {
+public final class DutifulServants extends CardImpl {
public DutifulServants(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DutifulThrull.java b/Mage.Sets/src/mage/cards/d/DutifulThrull.java
index 2b9ed36c55a..976945940ea 100644
--- a/Mage.Sets/src/mage/cards/d/DutifulThrull.java
+++ b/Mage.Sets/src/mage/cards/d/DutifulThrull.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class DutifulThrull extends CardImpl {
+public final class DutifulThrull extends CardImpl {
public DutifulThrull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DutyBoundDead.java b/Mage.Sets/src/mage/cards/d/DutyBoundDead.java
index 98caf11e3e1..5e468882548 100644
--- a/Mage.Sets/src/mage/cards/d/DutyBoundDead.java
+++ b/Mage.Sets/src/mage/cards/d/DutyBoundDead.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class DutyBoundDead extends CardImpl {
+public final class DutyBoundDead extends CardImpl {
public DutyBoundDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenArmorer.java b/Mage.Sets/src/mage/cards/d/DwarvenArmorer.java
index d3b8111f98b..73e00419d2e 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenArmorer.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenArmorer.java
@@ -58,7 +58,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LoneFox
*/
-public class DwarvenArmorer extends CardImpl {
+public final class DwarvenArmorer extends CardImpl {
public DwarvenArmorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenArmory.java b/Mage.Sets/src/mage/cards/d/DwarvenArmory.java
index 721177b5573..65cba581f3c 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenArmory.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenArmory.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DwarvenArmory extends CardImpl {
+public final class DwarvenArmory extends CardImpl {
public DwarvenArmory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenBerserker.java b/Mage.Sets/src/mage/cards/d/DwarvenBerserker.java
index 3fee75b7d2e..020cd1c5b60 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenBerserker.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenBerserker.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class DwarvenBerserker extends CardImpl {
+public final class DwarvenBerserker extends CardImpl {
public DwarvenBerserker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenBlastminer.java b/Mage.Sets/src/mage/cards/d/DwarvenBlastminer.java
index cd0f09aeec5..b64df491d09 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenBlastminer.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenBlastminer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author fireshoes
*/
-public class DwarvenBlastminer extends CardImpl {
+public final class DwarvenBlastminer extends CardImpl {
public DwarvenBlastminer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
this.subtype.add(SubType.DWARF);
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenBloodboiler.java b/Mage.Sets/src/mage/cards/d/DwarvenBloodboiler.java
index 3bd75fe5a5f..2e2d694ff7f 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenBloodboiler.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenBloodboiler.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DwarvenBloodboiler extends CardImpl {
+public final class DwarvenBloodboiler extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Dwarf you control");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenCatapult.java b/Mage.Sets/src/mage/cards/d/DwarvenCatapult.java
index f9ec9fee52a..ed3ebeea361 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenCatapult.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenCatapult.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author MarcoMarin
*/
-public class DwarvenCatapult extends CardImpl {
+public final class DwarvenCatapult extends CardImpl {
public DwarvenCatapult(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.java b/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.java
index 7b66489e50f..5e5e222a02d 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class DwarvenDemolitionTeam extends CardImpl {
+public final class DwarvenDemolitionTeam extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wall");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenDriller.java b/Mage.Sets/src/mage/cards/d/DwarvenDriller.java
index ddcf64e452e..ba81d8d1bea 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenDriller.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenDriller.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Styxo
*/
-public class DwarvenDriller extends CardImpl {
+public final class DwarvenDriller extends CardImpl {
public DwarvenDriller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenGrunt.java b/Mage.Sets/src/mage/cards/d/DwarvenGrunt.java
index 667b3c335f3..17d5a5fd6ba 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenGrunt.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenGrunt.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DwarvenGrunt extends CardImpl {
+public final class DwarvenGrunt extends CardImpl {
public DwarvenGrunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenHold.java b/Mage.Sets/src/mage/cards/d/DwarvenHold.java
index a81f41ea7a0..23fd5f31300 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenHold.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenHold.java
@@ -54,7 +54,7 @@ import mage.counters.CounterType;
*
* @author anonymous
*/
-public class DwarvenHold extends CardImpl {
+public final class DwarvenHold extends CardImpl {
public DwarvenHold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenLandslide.java b/Mage.Sets/src/mage/cards/d/DwarvenLandslide.java
index dcbdbcccc18..6e893562e98 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenLandslide.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenLandslide.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class DwarvenLandslide extends CardImpl {
+public final class DwarvenLandslide extends CardImpl {
public DwarvenLandslide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java b/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java
index dd7c4434b59..afcffb1a095 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DwarvenLieutenant extends CardImpl {
+public final class DwarvenLieutenant extends CardImpl {
static FilterCreaturePermanent filter = new FilterCreaturePermanent("Dwarf creature");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenLightsmith.java b/Mage.Sets/src/mage/cards/d/DwarvenLightsmith.java
new file mode 100644
index 00000000000..839ca8224c5
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/d/DwarvenLightsmith.java
@@ -0,0 +1,73 @@
+/*
+ * 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.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.continuous.BoostAllEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.AssistAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.filter.common.FilterTeamCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class DwarvenLightsmith extends CardImpl {
+
+ private static final FilterTeamCreaturePermanent filter = new FilterTeamCreaturePermanent("creatures your team controls");
+
+ public DwarvenLightsmith(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}");
+
+ this.subtype.add(SubType.DWARF);
+ this.subtype.add(SubType.CLERIC);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(4);
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // When Dwarven Lightsmith enters the battlefield, creatures your team controls get +1/+1 until end of turn.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new BoostAllEffect(1, 1, Duration.EndOfTurn, filter, false)));
+ }
+
+ public DwarvenLightsmith(final DwarvenLightsmith card) {
+ super(card);
+ }
+
+ @Override
+ public DwarvenLightsmith copy() {
+ return new DwarvenLightsmith(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenMiner.java b/Mage.Sets/src/mage/cards/d/DwarvenMiner.java
index d3a8d956dee..a97e2df302b 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenMiner.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenMiner.java
@@ -23,7 +23,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author nick.myers
*/
-public class DwarvenMiner extends CardImpl {
+public final class DwarvenMiner extends CardImpl {
public DwarvenMiner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenNomad.java b/Mage.Sets/src/mage/cards/d/DwarvenNomad.java
index 9289bed9dba..ba1c493107a 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenNomad.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenNomad.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DwarvenNomad extends CardImpl {
+public final class DwarvenNomad extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenPatrol.java b/Mage.Sets/src/mage/cards/d/DwarvenPatrol.java
index 9cb25e7bf99..e110adc124b 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenPatrol.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenPatrol.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*
*/
-public class DwarvenPatrol extends CardImpl {
+public final class DwarvenPatrol extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a nonred spell");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenPony.java b/Mage.Sets/src/mage/cards/d/DwarvenPony.java
index 7156212e088..59fa05c0125 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenPony.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenPony.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DwarvenPony extends CardImpl {
+public final class DwarvenPony extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dwarf creature");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenPriest.java b/Mage.Sets/src/mage/cards/d/DwarvenPriest.java
new file mode 100644
index 00000000000..a0245da514b
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/d/DwarvenPriest.java
@@ -0,0 +1,69 @@
+/*
+ * 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.EntersBattlefieldTriggeredAbility;
+import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.filter.StaticFilters;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class DwarvenPriest extends CardImpl {
+
+ public DwarvenPriest(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
+
+ this.subtype.add(SubType.DWARF);
+ this.subtype.add(SubType.CLERIC);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(4);
+
+ // When Dwarven Priest enters the battlefield, you gain 1 life for each creature you control.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(
+ new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE)
+ )));
+ }
+
+ public DwarvenPriest(final DwarvenPriest card) {
+ super(card);
+ }
+
+ @Override
+ public DwarvenPriest copy() {
+ return new DwarvenPriest(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenRecruiter.java b/Mage.Sets/src/mage/cards/d/DwarvenRecruiter.java
index ed919c5b2a1..3c81fab2835 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenRecruiter.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenRecruiter.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class DwarvenRecruiter extends CardImpl {
+public final class DwarvenRecruiter extends CardImpl {
private static final FilterCard filter = new FilterCard("Dwarf cards");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenRuins.java b/Mage.Sets/src/mage/cards/d/DwarvenRuins.java
index a9e9d83add8..d4d2872ad60 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenRuins.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenRuins.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class DwarvenRuins extends CardImpl {
+public final class DwarvenRuins extends CardImpl {
public DwarvenRuins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenShrine.java b/Mage.Sets/src/mage/cards/d/DwarvenShrine.java
index 53f37a2c753..0e0c8962b2e 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenShrine.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenShrine.java
@@ -1,143 +1,143 @@
-/*
- * 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.MageObject;
-import mage.abilities.Ability;
-import mage.abilities.TriggeredAbilityImpl;
-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.FilterCard;
-import mage.filter.predicate.mageobject.NamePredicate;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
-import mage.game.stack.Spell;
-import mage.players.Player;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class DwarvenShrine extends CardImpl {
-
- public DwarvenShrine(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
-
-
- // Whenever a player casts a spell, Dwarven Shrine deals X damage to that player, where X is twice the number of cards in all graveyards with the same name as that spell.
- this.addAbility(new DwarvenShrineTriggeredAbility());
- }
-
- public DwarvenShrine(final DwarvenShrine card) {
- super(card);
- }
-
- @Override
- public DwarvenShrine copy() {
- return new DwarvenShrine(this);
- }
-}
-
-class DwarvenShrineTriggeredAbility extends TriggeredAbilityImpl {
-
- public DwarvenShrineTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DwarvenShrineEffect(), false);
- }
-
- public DwarvenShrineTriggeredAbility(final DwarvenShrineTriggeredAbility ability) {
- super(ability);
- }
-
- @Override
- public DwarvenShrineTriggeredAbility copy() {
- return new DwarvenShrineTriggeredAbility(this);
- }
-
- @Override
- public boolean checkEventType(GameEvent event, Game game) {
- return event.getType() == EventType.SPELL_CAST;
- }
-
- @Override
- public boolean checkTrigger(GameEvent event, Game game) {
- Spell spell = game.getStack().getSpell(event.getTargetId());
- MageObject mageObject = game.getObject(sourceId);
- if (spell != null) {
- game.getState().setValue("dwarvenShrine" + mageObject, spell);
- return true;
- }
- return false;
- }
-}
-
-class DwarvenShrineEffect extends OneShotEffect {
-
- public DwarvenShrineEffect() {
- super(Outcome.Detriment);
- staticText = "Whenever a player casts a spell, {this} deals X damage to that player, where X is twice the number of cards in all graveyards with the same name as that spell.";
- }
-
- public DwarvenShrineEffect(final DwarvenShrineEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- int count = 0;
- MageObject mageObject = game.getObject(source.getSourceId());
- Spell spell = (Spell) game.getState().getValue("dwarvenShrine" + mageObject);
- if (spell != null) {
- Player controller = game.getPlayer(spell.getControllerId());
- if (controller != null) {
- String name = spell.getName();
- FilterCard filterCardName = new FilterCard();
- filterCardName.add(new NamePredicate(name));
- for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- count += player.getGraveyard().count(filterCardName, game);
- }
- }
- controller.damage(count * 2, mageObject.getId(), game, false, true);
- return true;
- }
- }
- return false;
- }
-
- @Override
- public DwarvenShrineEffect copy() {
- return new DwarvenShrineEffect(this);
- }
-}
+/*
+ * 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.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.TriggeredAbilityImpl;
+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.FilterCard;
+import mage.filter.predicate.mageobject.NamePredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+import mage.game.stack.Spell;
+import mage.players.Player;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class DwarvenShrine extends CardImpl {
+
+ public DwarvenShrine(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
+
+
+ // Whenever a player casts a spell, Dwarven Shrine deals X damage to that player, where X is twice the number of cards in all graveyards with the same name as that spell.
+ this.addAbility(new DwarvenShrineTriggeredAbility());
+ }
+
+ public DwarvenShrine(final DwarvenShrine card) {
+ super(card);
+ }
+
+ @Override
+ public DwarvenShrine copy() {
+ return new DwarvenShrine(this);
+ }
+}
+
+class DwarvenShrineTriggeredAbility extends TriggeredAbilityImpl {
+
+ public DwarvenShrineTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new DwarvenShrineEffect(), false);
+ }
+
+ public DwarvenShrineTriggeredAbility(final DwarvenShrineTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public DwarvenShrineTriggeredAbility copy() {
+ return new DwarvenShrineTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.SPELL_CAST;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ Spell spell = game.getStack().getSpell(event.getTargetId());
+ MageObject mageObject = game.getObject(sourceId);
+ if (spell != null) {
+ game.getState().setValue("dwarvenShrine" + mageObject, spell);
+ return true;
+ }
+ return false;
+ }
+}
+
+class DwarvenShrineEffect extends OneShotEffect {
+
+ public DwarvenShrineEffect() {
+ super(Outcome.Detriment);
+ staticText = "Whenever a player casts a spell, {this} deals X damage to that player, where X is twice the number of cards in all graveyards with the same name as that spell.";
+ }
+
+ public DwarvenShrineEffect(final DwarvenShrineEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ int count = 0;
+ MageObject mageObject = game.getObject(source.getSourceId());
+ Spell spell = (Spell) game.getState().getValue("dwarvenShrine" + mageObject);
+ if (spell != null) {
+ Player controller = game.getPlayer(spell.getControllerId());
+ if (controller != null) {
+ String name = spell.getName();
+ FilterCard filterCardName = new FilterCard();
+ filterCardName.add(new NamePredicate(name));
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ count += player.getGraveyard().count(filterCardName, game);
+ }
+ }
+ controller.damage(count * 2, mageObject.getId(), game, false, true);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public DwarvenShrineEffect copy() {
+ return new DwarvenShrineEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java b/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java
index 837ceaa9ba3..a2bc04125c2 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author MarcoMarin
*/
-public class DwarvenSoldier extends CardImpl {
+public final class DwarvenSoldier extends CardImpl {
public DwarvenSoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenSong.java b/Mage.Sets/src/mage/cards/d/DwarvenSong.java
index 40ef536942a..89c89ce4aa4 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenSong.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenSong.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author maxlebedev
*/
-public class DwarvenSong extends CardImpl {
+public final class DwarvenSong extends CardImpl {
public DwarvenSong(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenStrikeForce.java b/Mage.Sets/src/mage/cards/d/DwarvenStrikeForce.java
index 96aa9838fc9..65cce9aa28a 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenStrikeForce.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenStrikeForce.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class DwarvenStrikeForce extends CardImpl {
+public final class DwarvenStrikeForce extends CardImpl {
public DwarvenStrikeForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenThaumaturgist.java b/Mage.Sets/src/mage/cards/d/DwarvenThaumaturgist.java
index 0b94e72f973..0298bd96273 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenThaumaturgist.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenThaumaturgist.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class DwarvenThaumaturgist extends CardImpl {
+public final class DwarvenThaumaturgist extends CardImpl {
public DwarvenThaumaturgist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenTrader.java b/Mage.Sets/src/mage/cards/d/DwarvenTrader.java
index 96144c73a68..7101f357a89 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenTrader.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenTrader.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class DwarvenTrader extends CardImpl {
+public final class DwarvenTrader extends CardImpl {
public DwarvenTrader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenVigilantes.java b/Mage.Sets/src/mage/cards/d/DwarvenVigilantes.java
index 31c0cc5edd0..8653f037b82 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenVigilantes.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenVigilantes.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DwarvenVigilantes extends CardImpl {
+public final class DwarvenVigilantes extends CardImpl {
public DwarvenVigilantes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenWarriors.java b/Mage.Sets/src/mage/cards/d/DwarvenWarriors.java
index 723a0262222..3e68a562cd8 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenWarriors.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenWarriors.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DwarvenWarriors extends CardImpl {
+public final class DwarvenWarriors extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenWeaponsmith.java b/Mage.Sets/src/mage/cards/d/DwarvenWeaponsmith.java
index fead54d3f09..b49d01c4e3c 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenWeaponsmith.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenWeaponsmith.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DwarvenWeaponsmith extends CardImpl {
+public final class DwarvenWeaponsmith extends CardImpl {
public DwarvenWeaponsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DwellOnThePast.java b/Mage.Sets/src/mage/cards/d/DwellOnThePast.java
index 8b03a5b7f9d..061c145a96b 100644
--- a/Mage.Sets/src/mage/cards/d/DwellOnThePast.java
+++ b/Mage.Sets/src/mage/cards/d/DwellOnThePast.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class DwellOnThePast extends CardImpl {
+public final class DwellOnThePast extends CardImpl {
public DwellOnThePast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
diff --git a/Mage.Sets/src/mage/cards/d/Dwindle.java b/Mage.Sets/src/mage/cards/d/Dwindle.java
new file mode 100644
index 00000000000..e4abd0556b8
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/d/Dwindle.java
@@ -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.d;
+
+import java.util.UUID;
+import mage.constants.SubType;
+import mage.target.common.TargetCreaturePermanent;
+import mage.abilities.Ability;
+import mage.abilities.common.BlocksAttachedTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.DestroyAttachedToEffect;
+import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
+import mage.constants.Outcome;
+import mage.target.TargetPermanent;
+import mage.abilities.keyword.EnchantAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class Dwindle extends CardImpl {
+
+ public Dwindle(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
+
+ this.subtype.add(SubType.AURA);
+
+ // Enchant creature
+ TargetPermanent auraTarget = new TargetCreaturePermanent();
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
+ Ability ability = new EnchantAbility(auraTarget.getTargetName());
+ this.addAbility(ability);
+
+ // Enchanted creature gets -6/-0.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(-6, 0)));
+
+ // When enchanted creature blocks, destroy it.
+ this.addAbility(new DwindleTriggeredAbility());
+ }
+
+ public Dwindle(final Dwindle card) {
+ super(card);
+ }
+
+ @Override
+ public Dwindle copy() {
+ return new Dwindle(this);
+ }
+}
+
+class DwindleTriggeredAbility extends BlocksAttachedTriggeredAbility {
+
+ DwindleTriggeredAbility() {
+ super(new DestroyAttachedToEffect(""), "", false);
+ }
+
+ DwindleTriggeredAbility(final DwindleTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public DwindleTriggeredAbility copy() {
+ return new DwindleTriggeredAbility(this);
+ }
+
+ @Override
+ public String getRule() {
+ return "When enchanted creature blocks, destroy it.";
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/d/DwynenGiltLeafDaen.java b/Mage.Sets/src/mage/cards/d/DwynenGiltLeafDaen.java
index 119757e6775..c2db7b7b52a 100644
--- a/Mage.Sets/src/mage/cards/d/DwynenGiltLeafDaen.java
+++ b/Mage.Sets/src/mage/cards/d/DwynenGiltLeafDaen.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.AttackingPredicate;
*
* @author emerald000
*/
-public class DwynenGiltLeafDaen extends CardImpl {
+public final class DwynenGiltLeafDaen extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.ELF, "attacking Elf you control");
static {
diff --git a/Mage.Sets/src/mage/cards/d/DwynensElite.java b/Mage.Sets/src/mage/cards/d/DwynensElite.java
index d1456fc8e26..2194d9415e9 100644
--- a/Mage.Sets/src/mage/cards/d/DwynensElite.java
+++ b/Mage.Sets/src/mage/cards/d/DwynensElite.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class DwynensElite extends CardImpl {
+public final class DwynensElite extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Elf");
diff --git a/Mage.Sets/src/mage/cards/d/DyingWail.java b/Mage.Sets/src/mage/cards/d/DyingWail.java
index cf509a1c8c7..562345b80bb 100644
--- a/Mage.Sets/src/mage/cards/d/DyingWail.java
+++ b/Mage.Sets/src/mage/cards/d/DyingWail.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class DyingWail extends CardImpl {
+public final class DyingWail extends CardImpl {
public DyingWail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DyingWish.java b/Mage.Sets/src/mage/cards/d/DyingWish.java
index 31a4c2b10e7..b2110706513 100644
--- a/Mage.Sets/src/mage/cards/d/DyingWish.java
+++ b/Mage.Sets/src/mage/cards/d/DyingWish.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class DyingWish extends CardImpl {
+public final class DyingWish extends CardImpl {
public DyingWish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/d/Dynacharge.java b/Mage.Sets/src/mage/cards/d/Dynacharge.java
index 97c9ca6f10d..088667a3905 100644
--- a/Mage.Sets/src/mage/cards/d/Dynacharge.java
+++ b/Mage.Sets/src/mage/cards/d/Dynacharge.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class Dynacharge extends CardImpl {
+public final class Dynacharge extends CardImpl {
public Dynacharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/d/DynavoltTower.java b/Mage.Sets/src/mage/cards/d/DynavoltTower.java
index 7c11fee4432..f77c0e79c16 100644
--- a/Mage.Sets/src/mage/cards/d/DynavoltTower.java
+++ b/Mage.Sets/src/mage/cards/d/DynavoltTower.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class DynavoltTower extends CardImpl {
+public final class DynavoltTower extends CardImpl {
public DynavoltTower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/d/Dystopia.java b/Mage.Sets/src/mage/cards/d/Dystopia.java
index 0117152fe2a..397997b3edc 100644
--- a/Mage.Sets/src/mage/cards/d/Dystopia.java
+++ b/Mage.Sets/src/mage/cards/d/Dystopia.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author emerald000
*/
-public class Dystopia extends CardImpl {
+public final class Dystopia extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("green or white permanent");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EMPBlast.java b/Mage.Sets/src/mage/cards/e/EMPBlast.java
index 28cb12c1399..4f8f66bf1e5 100644
--- a/Mage.Sets/src/mage/cards/e/EMPBlast.java
+++ b/Mage.Sets/src/mage/cards/e/EMPBlast.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Styxo
*/
-public class EMPBlast extends CardImpl {
+public final class EMPBlast extends CardImpl {
public EMPBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EagerCadet.java b/Mage.Sets/src/mage/cards/e/EagerCadet.java
index 370a71f080e..b58cbba3fc7 100644
--- a/Mage.Sets/src/mage/cards/e/EagerCadet.java
+++ b/Mage.Sets/src/mage/cards/e/EagerCadet.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class EagerCadet extends CardImpl {
+public final class EagerCadet extends CardImpl {
public EagerCadet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EagerConstruct.java b/Mage.Sets/src/mage/cards/e/EagerConstruct.java
index b10ad5dc37a..d3542810517 100644
--- a/Mage.Sets/src/mage/cards/e/EagerConstruct.java
+++ b/Mage.Sets/src/mage/cards/e/EagerConstruct.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class EagerConstruct extends CardImpl {
+public final class EagerConstruct extends CardImpl {
public EagerConstruct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/e/EagleOfTheWatch.java b/Mage.Sets/src/mage/cards/e/EagleOfTheWatch.java
index d75d9a96920..73fe7bc1dd5 100644
--- a/Mage.Sets/src/mage/cards/e/EagleOfTheWatch.java
+++ b/Mage.Sets/src/mage/cards/e/EagleOfTheWatch.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class EagleOfTheWatch extends CardImpl {
+public final class EagleOfTheWatch extends CardImpl {
public EagleOfTheWatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java b/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java
index 661c498d401..08936f7acce 100644
--- a/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java
+++ b/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java
@@ -52,7 +52,7 @@ import mage.util.SubTypeList;
*
* @author spjspj
*/
-public class EarlOfSquirrel extends CardImpl {
+public final class EarlOfSquirrel extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Other squirrels you control");
diff --git a/Mage.Sets/src/mage/cards/e/EarlyFrost.java b/Mage.Sets/src/mage/cards/e/EarlyFrost.java
index 4c718a6e044..8706d13e932 100644
--- a/Mage.Sets/src/mage/cards/e/EarlyFrost.java
+++ b/Mage.Sets/src/mage/cards/e/EarlyFrost.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class EarlyFrost extends CardImpl {
+public final class EarlyFrost extends CardImpl {
public EarlyFrost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EarlyHarvest.java b/Mage.Sets/src/mage/cards/e/EarlyHarvest.java
index 6a6bfa86a1e..abf20a978e0 100644
--- a/Mage.Sets/src/mage/cards/e/EarlyHarvest.java
+++ b/Mage.Sets/src/mage/cards/e/EarlyHarvest.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class EarlyHarvest extends CardImpl {
+public final class EarlyHarvest extends CardImpl {
public EarlyHarvest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EarnestFellowship.java b/Mage.Sets/src/mage/cards/e/EarnestFellowship.java
index 108081da855..df7304e8362 100644
--- a/Mage.Sets/src/mage/cards/e/EarnestFellowship.java
+++ b/Mage.Sets/src/mage/cards/e/EarnestFellowship.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author cbt33, Loki (TakenoSamuraiGeneral), North (Coat of Arms)
*/
-public class EarnestFellowship extends CardImpl {
+public final class EarnestFellowship extends CardImpl {
public EarnestFellowship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EarsplittingRats.java b/Mage.Sets/src/mage/cards/e/EarsplittingRats.java
index 00ea44b2b42..9517b02ff1a 100644
--- a/Mage.Sets/src/mage/cards/e/EarsplittingRats.java
+++ b/Mage.Sets/src/mage/cards/e/EarsplittingRats.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class EarsplittingRats extends CardImpl {
+public final class EarsplittingRats extends CardImpl {
public EarsplittingRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EarthElemental.java b/Mage.Sets/src/mage/cards/e/EarthElemental.java
index 55a2e15da3d..9c5ecc0d613 100644
--- a/Mage.Sets/src/mage/cards/e/EarthElemental.java
+++ b/Mage.Sets/src/mage/cards/e/EarthElemental.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class EarthElemental extends CardImpl {
+public final class EarthElemental extends CardImpl {
public EarthElemental (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EarthRift.java b/Mage.Sets/src/mage/cards/e/EarthRift.java
index 181c81a1eb1..c990e77cd8a 100644
--- a/Mage.Sets/src/mage/cards/e/EarthRift.java
+++ b/Mage.Sets/src/mage/cards/e/EarthRift.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author North
*/
-public class EarthRift extends CardImpl {
+public final class EarthRift extends CardImpl {
public EarthRift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EarthServant.java b/Mage.Sets/src/mage/cards/e/EarthServant.java
index 3b8056c558c..d3e39c24c42 100644
--- a/Mage.Sets/src/mage/cards/e/EarthServant.java
+++ b/Mage.Sets/src/mage/cards/e/EarthServant.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author BetaSteward_at_googlemail.com, North
*/
-public class EarthServant extends CardImpl {
+public final class EarthServant extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain you control");
diff --git a/Mage.Sets/src/mage/cards/e/EarthSurge.java b/Mage.Sets/src/mage/cards/e/EarthSurge.java
index c87c6be50a7..78e643c74e8 100644
--- a/Mage.Sets/src/mage/cards/e/EarthSurge.java
+++ b/Mage.Sets/src/mage/cards/e/EarthSurge.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Styxo
*/
-public class EarthSurge extends CardImpl {
+public final class EarthSurge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("land creatures");
diff --git a/Mage.Sets/src/mage/cards/e/Earthbind.java b/Mage.Sets/src/mage/cards/e/Earthbind.java
index 27fddb5906f..07367724f03 100644
--- a/Mage.Sets/src/mage/cards/e/Earthbind.java
+++ b/Mage.Sets/src/mage/cards/e/Earthbind.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class Earthbind extends CardImpl {
+public final class Earthbind extends CardImpl {
public Earthbind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/e/Earthblighter.java b/Mage.Sets/src/mage/cards/e/Earthblighter.java
index dad73f40a48..2dd2e4e74ca 100644
--- a/Mage.Sets/src/mage/cards/e/Earthblighter.java
+++ b/Mage.Sets/src/mage/cards/e/Earthblighter.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class Earthblighter extends CardImpl {
+public final class Earthblighter extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Goblin");
static {
diff --git a/Mage.Sets/src/mage/cards/e/Earthbrawn.java b/Mage.Sets/src/mage/cards/e/Earthbrawn.java
index 73f90c75fac..12882ada0a7 100644
--- a/Mage.Sets/src/mage/cards/e/Earthbrawn.java
+++ b/Mage.Sets/src/mage/cards/e/Earthbrawn.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Earthbrawn extends CardImpl {
+public final class Earthbrawn extends CardImpl {
public Earthbrawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/Earthcraft.java b/Mage.Sets/src/mage/cards/e/Earthcraft.java
index f444a4ae3b6..87c3bef8c9d 100644
--- a/Mage.Sets/src/mage/cards/e/Earthcraft.java
+++ b/Mage.Sets/src/mage/cards/e/Earthcraft.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class Earthcraft extends CardImpl {
+public final class Earthcraft extends CardImpl {
private static final FilterControlledCreaturePermanent filterCreature = new FilterControlledCreaturePermanent("untapped creature you control");
private static final FilterControlledPermanent filterLand = new FilterControlledPermanent("basic land");
diff --git a/Mage.Sets/src/mage/cards/e/EarthenArms.java b/Mage.Sets/src/mage/cards/e/EarthenArms.java
index a148175f57c..145bce9c7ef 100644
--- a/Mage.Sets/src/mage/cards/e/EarthenArms.java
+++ b/Mage.Sets/src/mage/cards/e/EarthenArms.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class EarthenArms extends CardImpl {
+public final class EarthenArms extends CardImpl {
public EarthenArms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EarthenGoo.java b/Mage.Sets/src/mage/cards/e/EarthenGoo.java
index 4778ddaf7b7..80ac87fc1b8 100644
--- a/Mage.Sets/src/mage/cards/e/EarthenGoo.java
+++ b/Mage.Sets/src/mage/cards/e/EarthenGoo.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class EarthenGoo extends CardImpl {
+public final class EarthenGoo extends CardImpl {
public EarthenGoo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/Earthlink.java b/Mage.Sets/src/mage/cards/e/Earthlink.java
index ea985d210ea..f80151b65bb 100644
--- a/Mage.Sets/src/mage/cards/e/Earthlink.java
+++ b/Mage.Sets/src/mage/cards/e/Earthlink.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class Earthlink extends CardImpl {
+public final class Earthlink extends CardImpl {
public Earthlink(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/Earthlore.java b/Mage.Sets/src/mage/cards/e/Earthlore.java
index f8e69984473..0433f807133 100644
--- a/Mage.Sets/src/mage/cards/e/Earthlore.java
+++ b/Mage.Sets/src/mage/cards/e/Earthlore.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Earthlore extends CardImpl {
+public final class Earthlore extends CardImpl {
private static final FilterControlledPermanent filterLand = new FilterControlledPermanent("land you control");
diff --git a/Mage.Sets/src/mage/cards/e/Earthquake.java b/Mage.Sets/src/mage/cards/e/Earthquake.java
index eac8135c8e5..020319b0cec 100644
--- a/Mage.Sets/src/mage/cards/e/Earthquake.java
+++ b/Mage.Sets/src/mage/cards/e/Earthquake.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Earthquake extends CardImpl {
+public final class Earthquake extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/e/Earthshaker.java b/Mage.Sets/src/mage/cards/e/Earthshaker.java
index 62402900f83..9fe1addec69 100644
--- a/Mage.Sets/src/mage/cards/e/Earthshaker.java
+++ b/Mage.Sets/src/mage/cards/e/Earthshaker.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
/**
* @author Loki
*/
-public class Earthshaker extends CardImpl {
+public final class Earthshaker extends CardImpl {
private static final FilterCreaturePermanent creatureFilter = new FilterCreaturePermanent("creature without flying");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java b/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java
index 950d4fa555c..95dce0aa4b2 100644
--- a/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java
+++ b/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class EarthshakerKhenra extends CardImpl {
+public final class EarthshakerKhenra extends CardImpl {
private final UUID originalId;
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power less than or equal to {this}'s power");
diff --git a/Mage.Sets/src/mage/cards/e/EarwigSquad.java b/Mage.Sets/src/mage/cards/e/EarwigSquad.java
index 7d5275dfc59..4fd6dd37f63 100644
--- a/Mage.Sets/src/mage/cards/e/EarwigSquad.java
+++ b/Mage.Sets/src/mage/cards/e/EarwigSquad.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class EarwigSquad extends CardImpl {
+public final class EarwigSquad extends CardImpl {
public EarwigSquad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EasternPaladin.java b/Mage.Sets/src/mage/cards/e/EasternPaladin.java
index 210fb6df860..46d599829d4 100644
--- a/Mage.Sets/src/mage/cards/e/EasternPaladin.java
+++ b/Mage.Sets/src/mage/cards/e/EasternPaladin.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class EasternPaladin extends CardImpl {
+public final class EasternPaladin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/e/EatenBySpiders.java b/Mage.Sets/src/mage/cards/e/EatenBySpiders.java
index 881a5644d31..4eea952f28e 100644
--- a/Mage.Sets/src/mage/cards/e/EatenBySpiders.java
+++ b/Mage.Sets/src/mage/cards/e/EatenBySpiders.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class EatenBySpiders extends CardImpl {
+public final class EatenBySpiders extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/e/EaterOfDays.java b/Mage.Sets/src/mage/cards/e/EaterOfDays.java
index 9860c763331..951484850b0 100644
--- a/Mage.Sets/src/mage/cards/e/EaterOfDays.java
+++ b/Mage.Sets/src/mage/cards/e/EaterOfDays.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class EaterOfDays extends CardImpl {
+public final class EaterOfDays extends CardImpl {
public EaterOfDays(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/e/EaterOfHope.java b/Mage.Sets/src/mage/cards/e/EaterOfHope.java
index 783b7a49cf5..cb49dc48bb6 100644
--- a/Mage.Sets/src/mage/cards/e/EaterOfHope.java
+++ b/Mage.Sets/src/mage/cards/e/EaterOfHope.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class EaterOfHope extends CardImpl {
+public final class EaterOfHope extends CardImpl {
private static final FilterControlledCreaturePermanent destroyFilter = new FilterControlledCreaturePermanent("two other creatures");
diff --git a/Mage.Sets/src/mage/cards/e/EaterOfTheDead.java b/Mage.Sets/src/mage/cards/e/EaterOfTheDead.java
index 770ac389c28..29e99b27684 100644
--- a/Mage.Sets/src/mage/cards/e/EaterOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/e/EaterOfTheDead.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class EaterOfTheDead extends CardImpl {
+public final class EaterOfTheDead extends CardImpl {
public EaterOfTheDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EbonDragon.java b/Mage.Sets/src/mage/cards/e/EbonDragon.java
index a6b870cc3d0..dfabfe07cab 100644
--- a/Mage.Sets/src/mage/cards/e/EbonDragon.java
+++ b/Mage.Sets/src/mage/cards/e/EbonDragon.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class EbonDragon extends CardImpl {
+public final class EbonDragon extends CardImpl {
public EbonDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EbonDrake.java b/Mage.Sets/src/mage/cards/e/EbonDrake.java
index 34e6ce1dffc..709ccf9710b 100644
--- a/Mage.Sets/src/mage/cards/e/EbonDrake.java
+++ b/Mage.Sets/src/mage/cards/e/EbonDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class EbonDrake extends CardImpl {
+public final class EbonDrake extends CardImpl {
public EbonDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EbonPraetor.java b/Mage.Sets/src/mage/cards/e/EbonPraetor.java
index 1705067ca1c..66bceb774bf 100644
--- a/Mage.Sets/src/mage/cards/e/EbonPraetor.java
+++ b/Mage.Sets/src/mage/cards/e/EbonPraetor.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class EbonPraetor extends CardImpl {
+public final class EbonPraetor extends CardImpl {
public EbonPraetor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EbonStronghold.java b/Mage.Sets/src/mage/cards/e/EbonStronghold.java
index 2bd994a7507..4190fb465d5 100644
--- a/Mage.Sets/src/mage/cards/e/EbonStronghold.java
+++ b/Mage.Sets/src/mage/cards/e/EbonStronghold.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class EbonStronghold extends CardImpl {
+public final class EbonStronghold extends CardImpl {
public EbonStronghold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/e/EbonbladeReaper.java b/Mage.Sets/src/mage/cards/e/EbonbladeReaper.java
index ffad79e7639..76875210ad8 100644
--- a/Mage.Sets/src/mage/cards/e/EbonbladeReaper.java
+++ b/Mage.Sets/src/mage/cards/e/EbonbladeReaper.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*
* @author BijanT
*/
-public class EbonbladeReaper extends CardImpl {
+public final class EbonbladeReaper extends CardImpl {
public EbonbladeReaper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EbonyCharm.java b/Mage.Sets/src/mage/cards/e/EbonyCharm.java
index ffd37d54c17..c3b0a25c110 100644
--- a/Mage.Sets/src/mage/cards/e/EbonyCharm.java
+++ b/Mage.Sets/src/mage/cards/e/EbonyCharm.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class EbonyCharm extends CardImpl {
+public final class EbonyCharm extends CardImpl {
public EbonyCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EbonyHorse.java b/Mage.Sets/src/mage/cards/e/EbonyHorse.java
index a5fa7428ad2..ed6e3dd6783 100644
--- a/Mage.Sets/src/mage/cards/e/EbonyHorse.java
+++ b/Mage.Sets/src/mage/cards/e/EbonyHorse.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author KholdFuzion
*/
-public class EbonyHorse extends CardImpl {
+public final class EbonyHorse extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EbonyOwlNetsuke.java b/Mage.Sets/src/mage/cards/e/EbonyOwlNetsuke.java
index 73b1c83dde8..2466a72bca6 100644
--- a/Mage.Sets/src/mage/cards/e/EbonyOwlNetsuke.java
+++ b/Mage.Sets/src/mage/cards/e/EbonyOwlNetsuke.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class EbonyOwlNetsuke extends CardImpl {
+public final class EbonyOwlNetsuke extends CardImpl {
public EbonyOwlNetsuke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/e/EbonyRhino.java b/Mage.Sets/src/mage/cards/e/EbonyRhino.java
index a3df761f0c8..d03c03165fe 100644
--- a/Mage.Sets/src/mage/cards/e/EbonyRhino.java
+++ b/Mage.Sets/src/mage/cards/e/EbonyRhino.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class EbonyRhino extends CardImpl {
+public final class EbonyRhino extends CardImpl {
public EbonyRhino(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/e/EbonyTreefolk.java b/Mage.Sets/src/mage/cards/e/EbonyTreefolk.java
index 775ae5160af..e0152e02c59 100644
--- a/Mage.Sets/src/mage/cards/e/EbonyTreefolk.java
+++ b/Mage.Sets/src/mage/cards/e/EbonyTreefolk.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class EbonyTreefolk extends CardImpl {
+public final class EbonyTreefolk extends CardImpl {
public EbonyTreefolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EchoBaseCommando.java b/Mage.Sets/src/mage/cards/e/EchoBaseCommando.java
index 75374acbee5..ade5f22e17c 100644
--- a/Mage.Sets/src/mage/cards/e/EchoBaseCommando.java
+++ b/Mage.Sets/src/mage/cards/e/EchoBaseCommando.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author Styxo
*/
-public class EchoBaseCommando extends CardImpl {
+public final class EchoBaseCommando extends CardImpl {
private static final Filter filter = new FilterPermanent("Beasts");
diff --git a/Mage.Sets/src/mage/cards/e/EchoChamber.java b/Mage.Sets/src/mage/cards/e/EchoChamber.java
index 7e0263f88aa..3f11b3556b6 100644
--- a/Mage.Sets/src/mage/cards/e/EchoChamber.java
+++ b/Mage.Sets/src/mage/cards/e/EchoChamber.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class EchoChamber extends CardImpl {
+public final class EchoChamber extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/e/EchoCirclet.java b/Mage.Sets/src/mage/cards/e/EchoCirclet.java
index dd92b8924bf..89a27aac251 100644
--- a/Mage.Sets/src/mage/cards/e/EchoCirclet.java
+++ b/Mage.Sets/src/mage/cards/e/EchoCirclet.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
/**
* @author nantuko
*/
-public class EchoCirclet extends CardImpl {
+public final class EchoCirclet extends CardImpl {
public EchoCirclet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/e/EchoMage.java b/Mage.Sets/src/mage/cards/e/EchoMage.java
index db6efdd9987..4083f644693 100644
--- a/Mage.Sets/src/mage/cards/e/EchoMage.java
+++ b/Mage.Sets/src/mage/cards/e/EchoMage.java
@@ -54,7 +54,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class EchoMage extends LevelerCard {
+public final class EchoMage extends LevelerCard {
public EchoMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EchoTracer.java b/Mage.Sets/src/mage/cards/e/EchoTracer.java
index e030ec34fdf..34c6ccf94a0 100644
--- a/Mage.Sets/src/mage/cards/e/EchoTracer.java
+++ b/Mage.Sets/src/mage/cards/e/EchoTracer.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EchoTracer extends CardImpl {
+public final class EchoTracer extends CardImpl {
public EchoTracer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EchoesOfTheKinTree.java b/Mage.Sets/src/mage/cards/e/EchoesOfTheKinTree.java
index c0673833a64..5fb2474e44b 100644
--- a/Mage.Sets/src/mage/cards/e/EchoesOfTheKinTree.java
+++ b/Mage.Sets/src/mage/cards/e/EchoesOfTheKinTree.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class EchoesOfTheKinTree extends CardImpl {
+public final class EchoesOfTheKinTree extends CardImpl {
public EchoesOfTheKinTree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EchoingCalm.java b/Mage.Sets/src/mage/cards/e/EchoingCalm.java
index 4463e071ce2..f4cdc0b85f1 100644
--- a/Mage.Sets/src/mage/cards/e/EchoingCalm.java
+++ b/Mage.Sets/src/mage/cards/e/EchoingCalm.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetEnchantmentPermanent;
/**
* @author Loki
*/
-public class EchoingCalm extends CardImpl {
+public final class EchoingCalm extends CardImpl {
public EchoingCalm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EchoingCourage.java b/Mage.Sets/src/mage/cards/e/EchoingCourage.java
index 923132d7e7d..fa6f8e6cd97 100644
--- a/Mage.Sets/src/mage/cards/e/EchoingCourage.java
+++ b/Mage.Sets/src/mage/cards/e/EchoingCourage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EchoingCourage extends CardImpl {
+public final class EchoingCourage extends CardImpl {
public EchoingCourage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EchoingDecay.java b/Mage.Sets/src/mage/cards/e/EchoingDecay.java
index 87b1a5f60e6..7d0f89251aa 100644
--- a/Mage.Sets/src/mage/cards/e/EchoingDecay.java
+++ b/Mage.Sets/src/mage/cards/e/EchoingDecay.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class EchoingDecay extends CardImpl {
+public final class EchoingDecay extends CardImpl {
public EchoingDecay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EchoingRuin.java b/Mage.Sets/src/mage/cards/e/EchoingRuin.java
index 7a180d1a0f8..4b7f6a09270 100644
--- a/Mage.Sets/src/mage/cards/e/EchoingRuin.java
+++ b/Mage.Sets/src/mage/cards/e/EchoingRuin.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class EchoingRuin extends CardImpl {
+public final class EchoingRuin extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/e/EchoingTruth.java b/Mage.Sets/src/mage/cards/e/EchoingTruth.java
index 46659bc02ab..a15216d9af8 100644
--- a/Mage.Sets/src/mage/cards/e/EchoingTruth.java
+++ b/Mage.Sets/src/mage/cards/e/EchoingTruth.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class EchoingTruth extends CardImpl {
+public final class EchoingTruth extends CardImpl {
public EchoingTruth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EddytrailHawk.java b/Mage.Sets/src/mage/cards/e/EddytrailHawk.java
index 712f93c980f..37598b58e83 100644
--- a/Mage.Sets/src/mage/cards/e/EddytrailHawk.java
+++ b/Mage.Sets/src/mage/cards/e/EddytrailHawk.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EddytrailHawk extends CardImpl {
+public final class EddytrailHawk extends CardImpl {
private final static FilterAttackingCreature filter = new FilterAttackingCreature();
diff --git a/Mage.Sets/src/mage/cards/e/EdgarMarkov.java b/Mage.Sets/src/mage/cards/e/EdgarMarkov.java
index b5ed346cac6..0177a8637f7 100644
--- a/Mage.Sets/src/mage/cards/e/EdgarMarkov.java
+++ b/Mage.Sets/src/mage/cards/e/EdgarMarkov.java
@@ -55,7 +55,7 @@ import mage.game.permanent.token.EdgarMarkovToken;
*
* @author TheElk801
*/
-public class EdgarMarkov extends CardImpl {
+public final class EdgarMarkov extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Vampire you control");
private static final FilterSpell filter2 = new FilterSpell("another Vampire spell");//"another" is just there for templating, doesn't affect the card itself
diff --git a/Mage.Sets/src/mage/cards/e/EdgeOfAutumn.java b/Mage.Sets/src/mage/cards/e/EdgeOfAutumn.java
index 659752daf11..ce6b5a79fed 100644
--- a/Mage.Sets/src/mage/cards/e/EdgeOfAutumn.java
+++ b/Mage.Sets/src/mage/cards/e/EdgeOfAutumn.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author FenrisulfrX
*/
-public class EdgeOfAutumn extends CardImpl {
+public final class EdgeOfAutumn extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
@@ -57,7 +57,7 @@ public class EdgeOfAutumn extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
// If you control four or fewer lands, search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 5),
"If you control four or fewer lands, search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library."));
diff --git a/Mage.Sets/src/mage/cards/e/EdgeOfTheDivinity.java b/Mage.Sets/src/mage/cards/e/EdgeOfTheDivinity.java
index 92c22a33b9a..2446749873d 100644
--- a/Mage.Sets/src/mage/cards/e/EdgeOfTheDivinity.java
+++ b/Mage.Sets/src/mage/cards/e/EdgeOfTheDivinity.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class EdgeOfTheDivinity extends CardImpl {
+public final class EdgeOfTheDivinity extends CardImpl {
public EdgeOfTheDivinity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W/B}");
diff --git a/Mage.Sets/src/mage/cards/e/Edgewalker.java b/Mage.Sets/src/mage/cards/e/Edgewalker.java
index 671b5c2517b..b3d60881191 100644
--- a/Mage.Sets/src/mage/cards/e/Edgewalker.java
+++ b/Mage.Sets/src/mage/cards/e/Edgewalker.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class Edgewalker extends CardImpl {
+public final class Edgewalker extends CardImpl {
private static final FilterCard filter = new FilterCard("Cleric spells");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java b/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java
index f253371f7ec..28107039bd1 100644
--- a/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java
+++ b/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class EdificeOfAuthority extends CardImpl {
+public final class EdificeOfAuthority extends CardImpl {
private static final String rule = "{1}, {T}: Until your next turn, target creature can't attack or block and its activated abilities can't be activated. Activate this ability only if there are three or more brick counter on {this}.";
diff --git a/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java b/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java
index 405e28621b8..3519a54e803 100644
--- a/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java
+++ b/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author mluds
*/
-public class EdricSpymasterOfTrest extends CardImpl {
+public final class EdricSpymasterOfTrest extends CardImpl {
public EdricSpymasterOfTrest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EelUmbra.java b/Mage.Sets/src/mage/cards/e/EelUmbra.java
index ade11aa4a5a..98be6c3719c 100644
--- a/Mage.Sets/src/mage/cards/e/EelUmbra.java
+++ b/Mage.Sets/src/mage/cards/e/EelUmbra.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class EelUmbra extends CardImpl {
+public final class EelUmbra extends CardImpl {
public EelUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EerieInterlude.java b/Mage.Sets/src/mage/cards/e/EerieInterlude.java
index 8131c6c39df..512067da4a6 100644
--- a/Mage.Sets/src/mage/cards/e/EerieInterlude.java
+++ b/Mage.Sets/src/mage/cards/e/EerieInterlude.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class EerieInterlude extends CardImpl {
+public final class EerieInterlude extends CardImpl {
public EerieInterlude(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EerieProcession.java b/Mage.Sets/src/mage/cards/e/EerieProcession.java
index b753f93e6be..bfb5cda1051 100644
--- a/Mage.Sets/src/mage/cards/e/EerieProcession.java
+++ b/Mage.Sets/src/mage/cards/e/EerieProcession.java
@@ -42,7 +42,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class EerieProcession extends CardImpl {
+public final class EerieProcession extends CardImpl {
private static final FilterCard filter = new FilterCard("Arcane card");
diff --git a/Mage.Sets/src/mage/cards/e/EfficientConstruction.java b/Mage.Sets/src/mage/cards/e/EfficientConstruction.java
index fd2e6addb8f..99e535a86b4 100644
--- a/Mage.Sets/src/mage/cards/e/EfficientConstruction.java
+++ b/Mage.Sets/src/mage/cards/e/EfficientConstruction.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author fireshoes
*/
-public class EfficientConstruction extends CardImpl {
+public final class EfficientConstruction extends CardImpl {
public EfficientConstruction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EfreetWeaponmaster.java b/Mage.Sets/src/mage/cards/e/EfreetWeaponmaster.java
index 8d005f6436f..15fb0b4bfe0 100644
--- a/Mage.Sets/src/mage/cards/e/EfreetWeaponmaster.java
+++ b/Mage.Sets/src/mage/cards/e/EfreetWeaponmaster.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class EfreetWeaponmaster extends CardImpl {
+public final class EfreetWeaponmaster extends CardImpl {
public EfreetWeaponmaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EgoErasure.java b/Mage.Sets/src/mage/cards/e/EgoErasure.java
index 6dbb685411c..671487ec0a8 100644
--- a/Mage.Sets/src/mage/cards/e/EgoErasure.java
+++ b/Mage.Sets/src/mage/cards/e/EgoErasure.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class EgoErasure extends CardImpl {
+public final class EgoErasure extends CardImpl {
public EgoErasure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EidolonOfBlossoms.java b/Mage.Sets/src/mage/cards/e/EidolonOfBlossoms.java
index 36492575ca1..9398bb43bb1 100644
--- a/Mage.Sets/src/mage/cards/e/EidolonOfBlossoms.java
+++ b/Mage.Sets/src/mage/cards/e/EidolonOfBlossoms.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class EidolonOfBlossoms extends CardImpl {
+public final class EidolonOfBlossoms extends CardImpl {
public EidolonOfBlossoms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EidolonOfCountlessBattles.java b/Mage.Sets/src/mage/cards/e/EidolonOfCountlessBattles.java
index 199509d1d4b..3db302f72bd 100644
--- a/Mage.Sets/src/mage/cards/e/EidolonOfCountlessBattles.java
+++ b/Mage.Sets/src/mage/cards/e/EidolonOfCountlessBattles.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class EidolonOfCountlessBattles extends CardImpl {
+public final class EidolonOfCountlessBattles extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/e/EidolonOfRhetoric.java b/Mage.Sets/src/mage/cards/e/EidolonOfRhetoric.java
index 07f562d7cf9..74bc1a80039 100644
--- a/Mage.Sets/src/mage/cards/e/EidolonOfRhetoric.java
+++ b/Mage.Sets/src/mage/cards/e/EidolonOfRhetoric.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class EidolonOfRhetoric extends CardImpl {
+public final class EidolonOfRhetoric extends CardImpl {
public EidolonOfRhetoric(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EidolonOfTheGreatRevel.java b/Mage.Sets/src/mage/cards/e/EidolonOfTheGreatRevel.java
index 24ec3252178..3c0ae081fa2 100644
--- a/Mage.Sets/src/mage/cards/e/EidolonOfTheGreatRevel.java
+++ b/Mage.Sets/src/mage/cards/e/EidolonOfTheGreatRevel.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class EidolonOfTheGreatRevel extends CardImpl {
+public final class EidolonOfTheGreatRevel extends CardImpl {
public EidolonOfTheGreatRevel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EiganjoCastle.java b/Mage.Sets/src/mage/cards/e/EiganjoCastle.java
index f94c7368863..09a51dd313d 100644
--- a/Mage.Sets/src/mage/cards/e/EiganjoCastle.java
+++ b/Mage.Sets/src/mage/cards/e/EiganjoCastle.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class EiganjoCastle extends CardImpl {
+public final class EiganjoCastle extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature");
diff --git a/Mage.Sets/src/mage/cards/e/EiganjoFreeRiders.java b/Mage.Sets/src/mage/cards/e/EiganjoFreeRiders.java
index 071e97d0ef0..fe608722c5a 100644
--- a/Mage.Sets/src/mage/cards/e/EiganjoFreeRiders.java
+++ b/Mage.Sets/src/mage/cards/e/EiganjoFreeRiders.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author Loki
*/
-public class EiganjoFreeRiders extends CardImpl {
+public final class EiganjoFreeRiders extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("white creature you control");
diff --git a/Mage.Sets/src/mage/cards/e/EightAndAHalfTails.java b/Mage.Sets/src/mage/cards/e/EightAndAHalfTails.java
index 123f2281ba8..33380b96891 100644
--- a/Mage.Sets/src/mage/cards/e/EightAndAHalfTails.java
+++ b/Mage.Sets/src/mage/cards/e/EightAndAHalfTails.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author LevelX2
*/
-public class EightAndAHalfTails extends CardImpl {
+public final class EightAndAHalfTails extends CardImpl {
public EightAndAHalfTails(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EightfoldMaze.java b/Mage.Sets/src/mage/cards/e/EightfoldMaze.java
index 293c3b07929..8e71653a092 100644
--- a/Mage.Sets/src/mage/cards/e/EightfoldMaze.java
+++ b/Mage.Sets/src/mage/cards/e/EightfoldMaze.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author TheElk801
*/
-public class EightfoldMaze extends CardImpl {
+public final class EightfoldMaze extends CardImpl {
public EightfoldMaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EkunduGriffin.java b/Mage.Sets/src/mage/cards/e/EkunduGriffin.java
index 5b509952619..db0b04647d6 100644
--- a/Mage.Sets/src/mage/cards/e/EkunduGriffin.java
+++ b/Mage.Sets/src/mage/cards/e/EkunduGriffin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class EkunduGriffin extends CardImpl {
+public final class EkunduGriffin extends CardImpl {
public EkunduGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ElHajjaj.java b/Mage.Sets/src/mage/cards/e/ElHajjaj.java
index 0647272486c..2a9b00adac3 100644
--- a/Mage.Sets/src/mage/cards/e/ElHajjaj.java
+++ b/Mage.Sets/src/mage/cards/e/ElHajjaj.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ElHajjaj extends CardImpl {
+public final class ElHajjaj extends CardImpl {
public ElHajjaj(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ElaborateFirecannon.java b/Mage.Sets/src/mage/cards/e/ElaborateFirecannon.java
index b07176c9ad8..c96133d9830 100644
--- a/Mage.Sets/src/mage/cards/e/ElaborateFirecannon.java
+++ b/Mage.Sets/src/mage/cards/e/ElaborateFirecannon.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class ElaborateFirecannon extends CardImpl {
+public final class ElaborateFirecannon extends CardImpl {
public ElaborateFirecannon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/e/EladamriLordOfLeaves.java b/Mage.Sets/src/mage/cards/e/EladamriLordOfLeaves.java
index 41c57529dda..29241bf65de 100644
--- a/Mage.Sets/src/mage/cards/e/EladamriLordOfLeaves.java
+++ b/Mage.Sets/src/mage/cards/e/EladamriLordOfLeaves.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class EladamriLordOfLeaves extends CardImpl {
+public final class EladamriLordOfLeaves extends CardImpl {
private static final FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("Elf creatures");
private static final FilterPermanent filterPermanents = new FilterPermanent("Elves");
diff --git a/Mage.Sets/src/mage/cards/e/EladamrisCall.java b/Mage.Sets/src/mage/cards/e/EladamrisCall.java
index 99be6ab6d26..5a7ecd9e6f9 100644
--- a/Mage.Sets/src/mage/cards/e/EladamrisCall.java
+++ b/Mage.Sets/src/mage/cards/e/EladamrisCall.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class EladamrisCall extends CardImpl {
+public final class EladamrisCall extends CardImpl {
private static final FilterCard filter = new FilterCard("creature card");
diff --git a/Mage.Sets/src/mage/cards/e/EladamrisVineyard.java b/Mage.Sets/src/mage/cards/e/EladamrisVineyard.java
index 62830b567fb..f24868ced6b 100644
--- a/Mage.Sets/src/mage/cards/e/EladamrisVineyard.java
+++ b/Mage.Sets/src/mage/cards/e/EladamrisVineyard.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class EladamrisVineyard extends CardImpl {
+public final class EladamrisVineyard extends CardImpl {
public EladamrisVineyard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElandUmbra.java b/Mage.Sets/src/mage/cards/e/ElandUmbra.java
index 774d16304b0..fa0b1a0bf22 100644
--- a/Mage.Sets/src/mage/cards/e/ElandUmbra.java
+++ b/Mage.Sets/src/mage/cards/e/ElandUmbra.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ElandUmbra extends CardImpl {
+public final class ElandUmbra extends CardImpl {
public ElandUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ElbrusTheBindingBlade.java b/Mage.Sets/src/mage/cards/e/ElbrusTheBindingBlade.java
index 199f4a22ef0..c5f35a5645a 100644
--- a/Mage.Sets/src/mage/cards/e/ElbrusTheBindingBlade.java
+++ b/Mage.Sets/src/mage/cards/e/ElbrusTheBindingBlade.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward
*/
-public class ElbrusTheBindingBlade extends CardImpl {
+public final class ElbrusTheBindingBlade extends CardImpl {
public ElbrusTheBindingBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{7}");
diff --git a/Mage.Sets/src/mage/cards/e/ElderCathar.java b/Mage.Sets/src/mage/cards/e/ElderCathar.java
index 078cfc0844c..2eacb04dcba 100644
--- a/Mage.Sets/src/mage/cards/e/ElderCathar.java
+++ b/Mage.Sets/src/mage/cards/e/ElderCathar.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author nantuko
*/
-public class ElderCathar extends CardImpl {
+public final class ElderCathar extends CardImpl {
public ElderCathar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ElderDeepFiend.java b/Mage.Sets/src/mage/cards/e/ElderDeepFiend.java
index 243dc3f42b7..b11d7305a61 100644
--- a/Mage.Sets/src/mage/cards/e/ElderDeepFiend.java
+++ b/Mage.Sets/src/mage/cards/e/ElderDeepFiend.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author emerald000
*/
-public class ElderDeepFiend extends CardImpl {
+public final class ElderDeepFiend extends CardImpl {
public ElderDeepFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/e/ElderDruid.java b/Mage.Sets/src/mage/cards/e/ElderDruid.java
index 37f56f64f9a..12a867a3ae7 100644
--- a/Mage.Sets/src/mage/cards/e/ElderDruid.java
+++ b/Mage.Sets/src/mage/cards/e/ElderDruid.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author Quercitron
*/
-public class ElderDruid extends CardImpl {
+public final class ElderDruid extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/e/ElderLandWurm.java b/Mage.Sets/src/mage/cards/e/ElderLandWurm.java
index 7ce9c4ade32..334148ab7e2 100644
--- a/Mage.Sets/src/mage/cards/e/ElderLandWurm.java
+++ b/Mage.Sets/src/mage/cards/e/ElderLandWurm.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author TheElk801
*/
-public class ElderLandWurm extends CardImpl {
+public final class ElderLandWurm extends CardImpl {
public ElderLandWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ElderMastery.java b/Mage.Sets/src/mage/cards/e/ElderMastery.java
index abba31ab509..b3aa317f294 100644
--- a/Mage.Sets/src/mage/cards/e/ElderMastery.java
+++ b/Mage.Sets/src/mage/cards/e/ElderMastery.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ElderMastery extends CardImpl {
+public final class ElderMastery extends CardImpl {
public ElderMastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ElderOfLaurels.java b/Mage.Sets/src/mage/cards/e/ElderOfLaurels.java
index bdbcb3d5984..57b5c7b1aef 100644
--- a/Mage.Sets/src/mage/cards/e/ElderOfLaurels.java
+++ b/Mage.Sets/src/mage/cards/e/ElderOfLaurels.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ElderOfLaurels extends CardImpl {
+public final class ElderOfLaurels extends CardImpl {
public ElderOfLaurels(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElderPineOfJukai.java b/Mage.Sets/src/mage/cards/e/ElderPineOfJukai.java
index 2333e8c52b6..5410175e126 100644
--- a/Mage.Sets/src/mage/cards/e/ElderPineOfJukai.java
+++ b/Mage.Sets/src/mage/cards/e/ElderPineOfJukai.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterLandCard;
*
* @author LevelX2
*/
-public class ElderPineOfJukai extends CardImpl {
+public final class ElderPineOfJukai extends CardImpl {
public ElderPineOfJukai(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElderscaleWurm.java b/Mage.Sets/src/mage/cards/e/ElderscaleWurm.java
index a3cdac4b25e..595d7b670b7 100644
--- a/Mage.Sets/src/mage/cards/e/ElderscaleWurm.java
+++ b/Mage.Sets/src/mage/cards/e/ElderscaleWurm.java
@@ -49,7 +49,7 @@ import mage.players.Player;
/**
* @author magenoxx_at_gmail.com
*/
-public class ElderscaleWurm extends CardImpl {
+public final class ElderscaleWurm extends CardImpl {
public ElderscaleWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElderwoodScion.java b/Mage.Sets/src/mage/cards/e/ElderwoodScion.java
index a5fa4b54375..bfe33c2d7ee 100644
--- a/Mage.Sets/src/mage/cards/e/ElderwoodScion.java
+++ b/Mage.Sets/src/mage/cards/e/ElderwoodScion.java
@@ -47,7 +47,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class ElderwoodScion extends CardImpl {
+public final class ElderwoodScion extends CardImpl {
public ElderwoodScion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EldraziAggressor.java b/Mage.Sets/src/mage/cards/e/EldraziAggressor.java
index b275490b99a..2213ec244cb 100644
--- a/Mage.Sets/src/mage/cards/e/EldraziAggressor.java
+++ b/Mage.Sets/src/mage/cards/e/EldraziAggressor.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class EldraziAggressor extends CardImpl {
+public final class EldraziAggressor extends CardImpl {
private static final String rule = "{this} has haste as long as you control another colorless creature";
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another colorless creature");
diff --git a/Mage.Sets/src/mage/cards/e/EldraziConscription.java b/Mage.Sets/src/mage/cards/e/EldraziConscription.java
index 32099fe392a..ce30043dbff 100644
--- a/Mage.Sets/src/mage/cards/e/EldraziConscription.java
+++ b/Mage.Sets/src/mage/cards/e/EldraziConscription.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class EldraziConscription extends CardImpl {
+public final class EldraziConscription extends CardImpl {
public EldraziConscription (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.ENCHANTMENT},"{8}");
diff --git a/Mage.Sets/src/mage/cards/e/EldraziDevastator.java b/Mage.Sets/src/mage/cards/e/EldraziDevastator.java
index 6d17b3678ec..6e3228f20f8 100644
--- a/Mage.Sets/src/mage/cards/e/EldraziDevastator.java
+++ b/Mage.Sets/src/mage/cards/e/EldraziDevastator.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class EldraziDevastator extends CardImpl {
+public final class EldraziDevastator extends CardImpl {
public EldraziDevastator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java b/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java
index 1252e16a38a..b56fcc7cc01 100644
--- a/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java
+++ b/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EldraziDisplacer extends CardImpl {
+public final class EldraziDisplacer extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/e/EldraziMimic.java b/Mage.Sets/src/mage/cards/e/EldraziMimic.java
index 4c4fef9ac94..04113d55cbe 100644
--- a/Mage.Sets/src/mage/cards/e/EldraziMimic.java
+++ b/Mage.Sets/src/mage/cards/e/EldraziMimic.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class EldraziMimic extends CardImpl {
+public final class EldraziMimic extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("another colorless creature");
diff --git a/Mage.Sets/src/mage/cards/e/EldraziMonument.java b/Mage.Sets/src/mage/cards/e/EldraziMonument.java
index 8de6cee8812..0152a93b112 100644
--- a/Mage.Sets/src/mage/cards/e/EldraziMonument.java
+++ b/Mage.Sets/src/mage/cards/e/EldraziMonument.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class EldraziMonument extends CardImpl {
+public final class EldraziMonument extends CardImpl {
public EldraziMonument(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/e/EldraziObligator.java b/Mage.Sets/src/mage/cards/e/EldraziObligator.java
index e3d9337d31a..b14a706ea08 100644
--- a/Mage.Sets/src/mage/cards/e/EldraziObligator.java
+++ b/Mage.Sets/src/mage/cards/e/EldraziObligator.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class EldraziObligator extends CardImpl {
+public final class EldraziObligator extends CardImpl {
public EldraziObligator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EldraziSkyspawner.java b/Mage.Sets/src/mage/cards/e/EldraziSkyspawner.java
index c0aa919561d..5807044ce30 100644
--- a/Mage.Sets/src/mage/cards/e/EldraziSkyspawner.java
+++ b/Mage.Sets/src/mage/cards/e/EldraziSkyspawner.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author LevelX2
*/
-public class EldraziSkyspawner extends CardImpl {
+public final class EldraziSkyspawner extends CardImpl {
public EldraziSkyspawner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EldraziTemple.java b/Mage.Sets/src/mage/cards/e/EldraziTemple.java
index b355693cfe8..42075e3e2a7 100644
--- a/Mage.Sets/src/mage/cards/e/EldraziTemple.java
+++ b/Mage.Sets/src/mage/cards/e/EldraziTemple.java
@@ -47,7 +47,7 @@ import mage.game.Game;
*
* @author Loki, nantuko
*/
-public class EldraziTemple extends CardImpl {
+public final class EldraziTemple extends CardImpl {
public EldraziTemple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/e/EldritchEvolution.java b/Mage.Sets/src/mage/cards/e/EldritchEvolution.java
index 04eb3c402ec..1bf34fc2123 100644
--- a/Mage.Sets/src/mage/cards/e/EldritchEvolution.java
+++ b/Mage.Sets/src/mage/cards/e/EldritchEvolution.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class EldritchEvolution extends CardImpl {
+public final class EldritchEvolution extends CardImpl {
public EldritchEvolution(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElectricEel.java b/Mage.Sets/src/mage/cards/e/ElectricEel.java
index 72cfc62c747..d30cab6d12e 100644
--- a/Mage.Sets/src/mage/cards/e/ElectricEel.java
+++ b/Mage.Sets/src/mage/cards/e/ElectricEel.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ElectricEel extends CardImpl {
+public final class ElectricEel extends CardImpl {
public ElectricEel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/e/Electrickery.java b/Mage.Sets/src/mage/cards/e/Electrickery.java
index c0e32713614..5c5500b74f0 100644
--- a/Mage.Sets/src/mage/cards/e/Electrickery.java
+++ b/Mage.Sets/src/mage/cards/e/Electrickery.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Electrickery extends CardImpl {
+public final class Electrickery extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/e/Electrify.java b/Mage.Sets/src/mage/cards/e/Electrify.java
index 1dd37270533..164d9ad8e5d 100644
--- a/Mage.Sets/src/mage/cards/e/Electrify.java
+++ b/Mage.Sets/src/mage/cards/e/Electrify.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Electrify extends CardImpl {
+public final class Electrify extends CardImpl {
public Electrify(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/Electrolyze.java b/Mage.Sets/src/mage/cards/e/Electrolyze.java
index 0659a306f56..814d1b07c4b 100644
--- a/Mage.Sets/src/mage/cards/e/Electrolyze.java
+++ b/Mage.Sets/src/mage/cards/e/Electrolyze.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author jonubuu
*/
-public class Electrolyze extends CardImpl {
+public final class Electrolyze extends CardImpl {
public Electrolyze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/Electropotence.java b/Mage.Sets/src/mage/cards/e/Electropotence.java
index 7078dfeb12a..ae6c889e52d 100644
--- a/Mage.Sets/src/mage/cards/e/Electropotence.java
+++ b/Mage.Sets/src/mage/cards/e/Electropotence.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class Electropotence extends CardImpl {
+public final class Electropotence extends CardImpl {
public Electropotence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ElectrostaticBolt.java b/Mage.Sets/src/mage/cards/e/ElectrostaticBolt.java
index b5fa7d4a36f..5fe092f1418 100644
--- a/Mage.Sets/src/mage/cards/e/ElectrostaticBolt.java
+++ b/Mage.Sets/src/mage/cards/e/ElectrostaticBolt.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ElectrostaticBolt extends CardImpl {
+public final class ElectrostaticBolt extends CardImpl {
public ElectrostaticBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ElectrostaticPummeler.java b/Mage.Sets/src/mage/cards/e/ElectrostaticPummeler.java
index 5fd1511c4e5..c54084c9778 100644
--- a/Mage.Sets/src/mage/cards/e/ElectrostaticPummeler.java
+++ b/Mage.Sets/src/mage/cards/e/ElectrostaticPummeler.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class ElectrostaticPummeler extends CardImpl {
+public final class ElectrostaticPummeler extends CardImpl {
public ElectrostaticPummeler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/e/Electryte.java b/Mage.Sets/src/mage/cards/e/Electryte.java
new file mode 100644
index 00000000000..c628c222281
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/e/Electryte.java
@@ -0,0 +1,131 @@
+/*
+ * 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.List;
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.filter.common.FilterBlockingCreature;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+
+/**
+ *
+ * @author rystan
+ */
+public final class Electryte extends CardImpl {
+
+ public Electryte(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
+ this.subtype.add(SubType.BEAST);
+
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Whenever Electryte deals combat damage to defending player, it deals damage equal to its power to each blocking creature.
+ this.addAbility(new ElectryteTriggeredAbility());
+ }
+
+ public Electryte(final Electryte card) {
+ super(card);
+ }
+
+ @Override
+ public Electryte copy() {
+ return new Electryte(this);
+ }
+}
+
+class ElectryteTriggeredAbility extends DealsCombatDamageToAPlayerTriggeredAbility {
+
+ ElectryteTriggeredAbility() {
+ super(new ElectryteEffect(), false);
+ }
+
+ ElectryteTriggeredAbility(final ElectryteTriggeredAbility effect) {
+ super(effect);
+ }
+
+ @Override
+ public ElectryteTriggeredAbility copy() {
+ return new ElectryteTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ if (super.checkTrigger(event, game)) {
+ return game.getCombat().getDefenderId(getSourceId()).equals(event.getPlayerId());
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever {this} deals combat damage to defending player, "
+ + "it deals damage equal to its power to each blocking creature";
+ }
+}
+
+class ElectryteEffect extends OneShotEffect {
+
+ static private FilterBlockingCreature filter = new FilterBlockingCreature();
+
+ public ElectryteEffect() {
+ super(Outcome.Damage);
+ staticText = "it deals damage equal to its power to each blocking creature";
+ }
+
+ public ElectryteEffect(final ElectryteEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent thisCreature = game.getPermanent(source.getSourceId());
+ int amount = thisCreature.getPower().getValue();
+ List permanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game);
+ for (Permanent permanent : permanents) {
+ permanent.damage(amount, source.getSourceId(), game, false, true);
+ }
+ return true;
+ }
+
+ @Override
+ public ElectryteEffect copy() {
+ return new ElectryteEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/e/ElegantEdgecrafters.java b/Mage.Sets/src/mage/cards/e/ElegantEdgecrafters.java
index f2114e51443..6c47d8da755 100644
--- a/Mage.Sets/src/mage/cards/e/ElegantEdgecrafters.java
+++ b/Mage.Sets/src/mage/cards/e/ElegantEdgecrafters.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author LevelX2
*/
-public class ElegantEdgecrafters extends CardImpl {
+public final class ElegantEdgecrafters extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/e/ElementalAppeal.java b/Mage.Sets/src/mage/cards/e/ElementalAppeal.java
index 0071b499bd7..3adf0151363 100644
--- a/Mage.Sets/src/mage/cards/e/ElementalAppeal.java
+++ b/Mage.Sets/src/mage/cards/e/ElementalAppeal.java
@@ -53,7 +53,7 @@ import mage.game.permanent.token.ElementalAppealElementalToken;
*
* @author North
*/
-public class ElementalAppeal extends CardImpl {
+public final class ElementalAppeal extends CardImpl {
public ElementalAppeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ElementalAugury.java b/Mage.Sets/src/mage/cards/e/ElementalAugury.java
index 278dd06c11b..a72f6db1bc2 100644
--- a/Mage.Sets/src/mage/cards/e/ElementalAugury.java
+++ b/Mage.Sets/src/mage/cards/e/ElementalAugury.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class ElementalAugury extends CardImpl {
+public final class ElementalAugury extends CardImpl {
public ElementalAugury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ElementalBond.java b/Mage.Sets/src/mage/cards/e/ElementalBond.java
index 76f02446323..5c9d001f7cf 100644
--- a/Mage.Sets/src/mage/cards/e/ElementalBond.java
+++ b/Mage.Sets/src/mage/cards/e/ElementalBond.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author emerald000
*/
-public class ElementalBond extends CardImpl {
+public final class ElementalBond extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a creature with power 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/e/ElementalMastery.java b/Mage.Sets/src/mage/cards/e/ElementalMastery.java
index 8d860f04e00..c1c70f64f1a 100644
--- a/Mage.Sets/src/mage/cards/e/ElementalMastery.java
+++ b/Mage.Sets/src/mage/cards/e/ElementalMastery.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class ElementalMastery extends CardImpl {
+public final class ElementalMastery extends CardImpl {
public ElementalMastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ElementalResonance.java b/Mage.Sets/src/mage/cards/e/ElementalResonance.java
index 34911420b1b..82f82a22668 100644
--- a/Mage.Sets/src/mage/cards/e/ElementalResonance.java
+++ b/Mage.Sets/src/mage/cards/e/ElementalResonance.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class ElementalResonance extends CardImpl {
+public final class ElementalResonance extends CardImpl {
public ElementalResonance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElementalUprising.java b/Mage.Sets/src/mage/cards/e/ElementalUprising.java
index 60f1679b35a..f089a5a23cd 100644
--- a/Mage.Sets/src/mage/cards/e/ElementalUprising.java
+++ b/Mage.Sets/src/mage/cards/e/ElementalUprising.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class ElementalUprising extends CardImpl {
+public final class ElementalUprising extends CardImpl {
public ElementalUprising(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElendaTheDuskRose.java b/Mage.Sets/src/mage/cards/e/ElendaTheDuskRose.java
index 6fac21de271..c94bca9c578 100644
--- a/Mage.Sets/src/mage/cards/e/ElendaTheDuskRose.java
+++ b/Mage.Sets/src/mage/cards/e/ElendaTheDuskRose.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.IxalanVampireToken;
*
* @author L_J
*/
-public class ElendaTheDuskRose extends CardImpl {
+public final class ElendaTheDuskRose extends CardImpl {
public ElendaTheDuskRose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ElephantAmbush.java b/Mage.Sets/src/mage/cards/e/ElephantAmbush.java
index 9f9eaad7d41..cc1639234ef 100644
--- a/Mage.Sets/src/mage/cards/e/ElephantAmbush.java
+++ b/Mage.Sets/src/mage/cards/e/ElephantAmbush.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ElephantToken;
*
* @author LevelX2
*/
-public class ElephantAmbush extends CardImpl {
+public final class ElephantAmbush extends CardImpl {
public ElephantAmbush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElephantGrass.java b/Mage.Sets/src/mage/cards/e/ElephantGrass.java
index 2f57f5b75f9..89e37ac4a21 100644
--- a/Mage.Sets/src/mage/cards/e/ElephantGrass.java
+++ b/Mage.Sets/src/mage/cards/e/ElephantGrass.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Plopman
*/
-public class ElephantGrass extends CardImpl {
+public final class ElephantGrass extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Nonblack creatures");
private static final FilterCreaturePermanent filterBlack = new FilterCreaturePermanent("Black creatures");
diff --git a/Mage.Sets/src/mage/cards/e/ElephantGraveyard.java b/Mage.Sets/src/mage/cards/e/ElephantGraveyard.java
index eb61fb41a2b..149d03436e3 100644
--- a/Mage.Sets/src/mage/cards/e/ElephantGraveyard.java
+++ b/Mage.Sets/src/mage/cards/e/ElephantGraveyard.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author anonymous
*/
-public class ElephantGraveyard extends CardImpl {
+public final class ElephantGraveyard extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.ELEPHANT, "Elephant");
diff --git a/Mage.Sets/src/mage/cards/e/ElephantGuide.java b/Mage.Sets/src/mage/cards/e/ElephantGuide.java
index 60400763248..43afc9dd4be 100644
--- a/Mage.Sets/src/mage/cards/e/ElephantGuide.java
+++ b/Mage.Sets/src/mage/cards/e/ElephantGuide.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ElephantGuide extends CardImpl {
+public final class ElephantGuide extends CardImpl {
public ElephantGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElephantResurgence.java b/Mage.Sets/src/mage/cards/e/ElephantResurgence.java
index 203780628fd..ff56a0b16ad 100644
--- a/Mage.Sets/src/mage/cards/e/ElephantResurgence.java
+++ b/Mage.Sets/src/mage/cards/e/ElephantResurgence.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class ElephantResurgence extends CardImpl {
+public final class ElephantResurgence extends CardImpl {
public ElephantResurgence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EleshNornGrandCenobite.java b/Mage.Sets/src/mage/cards/e/EleshNornGrandCenobite.java
index 1858329b4cf..a81d1ceef1c 100644
--- a/Mage.Sets/src/mage/cards/e/EleshNornGrandCenobite.java
+++ b/Mage.Sets/src/mage/cards/e/EleshNornGrandCenobite.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class EleshNornGrandCenobite extends CardImpl {
+public final class EleshNornGrandCenobite extends CardImpl {
public EleshNornGrandCenobite (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ElfReplica.java b/Mage.Sets/src/mage/cards/e/ElfReplica.java
index 71252ac3081..88f1d8e97ac 100644
--- a/Mage.Sets/src/mage/cards/e/ElfReplica.java
+++ b/Mage.Sets/src/mage/cards/e/ElfReplica.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Loki
*/
-public class ElfReplica extends CardImpl {
+public final class ElfReplica extends CardImpl {
public ElfReplica(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/e/ElfhameDruid.java b/Mage.Sets/src/mage/cards/e/ElfhameDruid.java
index c63c1f94f2a..708daeb37db 100644
--- a/Mage.Sets/src/mage/cards/e/ElfhameDruid.java
+++ b/Mage.Sets/src/mage/cards/e/ElfhameDruid.java
@@ -21,7 +21,7 @@ import mage.game.Game;
import java.util.UUID;
-public class ElfhameDruid extends CardImpl {
+public final class ElfhameDruid extends CardImpl {
public ElfhameDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElfhamePalace.java b/Mage.Sets/src/mage/cards/e/ElfhamePalace.java
index cb1e2f34581..96f58012772 100644
--- a/Mage.Sets/src/mage/cards/e/ElfhamePalace.java
+++ b/Mage.Sets/src/mage/cards/e/ElfhamePalace.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class ElfhamePalace extends CardImpl {
+public final class ElfhamePalace extends CardImpl {
public ElfhamePalace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/e/ElfhameSanctuary.java b/Mage.Sets/src/mage/cards/e/ElfhameSanctuary.java
index 300c6b56255..a338b45ac3b 100644
--- a/Mage.Sets/src/mage/cards/e/ElfhameSanctuary.java
+++ b/Mage.Sets/src/mage/cards/e/ElfhameSanctuary.java
@@ -48,13 +48,13 @@ import java.util.UUID;
*
* @author Markedagain
*/
-public class ElfhameSanctuary extends CardImpl {
+public final class ElfhameSanctuary extends CardImpl {
public ElfhameSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
// At the beginning of your upkeep, you may search your library for a basic land card, reveal that card, and put it into your hand. If you do, you skip your draw step this turn and shuffle your library.
- Ability ability = new BeginningOfUpkeepTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD)), TargetController.YOU, true);
+ Ability ability = new BeginningOfUpkeepTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND)), TargetController.YOU, true);
ability.addEffect(new SkipDrawStepThisTurn());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/e/ElgaudInquisitor.java b/Mage.Sets/src/mage/cards/e/ElgaudInquisitor.java
index f8f352d755b..0e629483dc4 100644
--- a/Mage.Sets/src/mage/cards/e/ElgaudInquisitor.java
+++ b/Mage.Sets/src/mage/cards/e/ElgaudInquisitor.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author Loki
*/
-public class ElgaudInquisitor extends CardImpl {
+public final class ElgaudInquisitor extends CardImpl {
public ElgaudInquisitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ElgaudShieldmate.java b/Mage.Sets/src/mage/cards/e/ElgaudShieldmate.java
index 630919f1e3b..1066c592921 100644
--- a/Mage.Sets/src/mage/cards/e/ElgaudShieldmate.java
+++ b/Mage.Sets/src/mage/cards/e/ElgaudShieldmate.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class ElgaudShieldmate extends CardImpl {
+public final class ElgaudShieldmate extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, both creatures have hexproof";
diff --git a/Mage.Sets/src/mage/cards/e/EliminateTheCompetition.java b/Mage.Sets/src/mage/cards/e/EliminateTheCompetition.java
index 03bee79302c..d71fd62f022 100644
--- a/Mage.Sets/src/mage/cards/e/EliminateTheCompetition.java
+++ b/Mage.Sets/src/mage/cards/e/EliminateTheCompetition.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EliminateTheCompetition extends CardImpl {
+public final class EliminateTheCompetition extends CardImpl {
public EliminateTheCompetition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EliteArcanist.java b/Mage.Sets/src/mage/cards/e/EliteArcanist.java
index adced54e581..7a2f11380a8 100644
--- a/Mage.Sets/src/mage/cards/e/EliteArcanist.java
+++ b/Mage.Sets/src/mage/cards/e/EliteArcanist.java
@@ -29,6 +29,7 @@ package mage.cards.e;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
@@ -40,8 +41,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.mageobject.CardTypePredicate;
@@ -54,10 +55,10 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class EliteArcanist extends CardImpl {
+public final class EliteArcanist extends CardImpl {
public EliteArcanist(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WIZARD);
@@ -79,7 +80,7 @@ public class EliteArcanist extends CardImpl {
@Override
public void adjustCosts(Ability ability, Game game) {
- if(ability instanceof SimpleActivatedAbility){
+ if (ability instanceof SimpleActivatedAbility) {
Permanent sourcePermanent = game.getPermanent(ability.getSourceId());
if (sourcePermanent != null && sourcePermanent.getImprinted() != null && !sourcePermanent.getImprinted().isEmpty()) {
Card imprintedInstant = game.getCard(sourcePermanent.getImprinted().get(0));
@@ -103,7 +104,8 @@ public class EliteArcanist extends CardImpl {
class EliteArcanistImprintEffect extends OneShotEffect {
private static final FilterCard filter = new FilterCard("instant card from your hand");
- static {
+
+ static {
filter.add(new CardTypePredicate(CardType.INSTANT));
}
@@ -174,10 +176,10 @@ class EliteArcanistCopyEffect extends OneShotEffect {
if (controller != null) {
Card copiedCard = game.copyCard(imprintedInstant, source, source.getControllerId());
if (copiedCard != null) {
- game.getExile().add(source.getSourceId(), "",copiedCard);
+ game.getExile().add(source.getSourceId(), "", copiedCard);
game.getState().setZone(copiedCard.getId(), Zone.EXILED);
if (controller.chooseUse(outcome, "Cast the copied card without paying mana cost?", source, game)) {
- return controller.cast(copiedCard.getSpellAbility(), game, true);
+ return controller.cast(copiedCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/e/EliteArchers.java b/Mage.Sets/src/mage/cards/e/EliteArchers.java
index a8955441dfb..eef9bd8443b 100644
--- a/Mage.Sets/src/mage/cards/e/EliteArchers.java
+++ b/Mage.Sets/src/mage/cards/e/EliteArchers.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author Loki
*/
-public class EliteArchers extends CardImpl {
+public final class EliteArchers extends CardImpl {
public EliteArchers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EliteCatWarrior.java b/Mage.Sets/src/mage/cards/e/EliteCatWarrior.java
index bdc4762e875..9de46a28ccf 100644
--- a/Mage.Sets/src/mage/cards/e/EliteCatWarrior.java
+++ b/Mage.Sets/src/mage/cards/e/EliteCatWarrior.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class EliteCatWarrior extends CardImpl {
+public final class EliteCatWarrior extends CardImpl {
public EliteCatWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EliteInquisitor.java b/Mage.Sets/src/mage/cards/e/EliteInquisitor.java
index f631c169ecc..0478f4fb325 100644
--- a/Mage.Sets/src/mage/cards/e/EliteInquisitor.java
+++ b/Mage.Sets/src/mage/cards/e/EliteInquisitor.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author nantuko
*/
-public class EliteInquisitor extends CardImpl {
+public final class EliteInquisitor extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("Vampires, from Werewolves, and from Zombies");
diff --git a/Mage.Sets/src/mage/cards/e/EliteJavelineer.java b/Mage.Sets/src/mage/cards/e/EliteJavelineer.java
index 5772a20d14d..0785e5794e3 100644
--- a/Mage.Sets/src/mage/cards/e/EliteJavelineer.java
+++ b/Mage.Sets/src/mage/cards/e/EliteJavelineer.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class EliteJavelineer extends CardImpl {
+public final class EliteJavelineer extends CardImpl {
public EliteJavelineer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EliteScaleguard.java b/Mage.Sets/src/mage/cards/e/EliteScaleguard.java
index 5204bd3b31c..9ad96afb1c3 100644
--- a/Mage.Sets/src/mage/cards/e/EliteScaleguard.java
+++ b/Mage.Sets/src/mage/cards/e/EliteScaleguard.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class EliteScaleguard extends CardImpl {
+public final class EliteScaleguard extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature you control with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EliteSkirmisher.java b/Mage.Sets/src/mage/cards/e/EliteSkirmisher.java
index b45b68092e5..2ba5c6c531e 100644
--- a/Mage.Sets/src/mage/cards/e/EliteSkirmisher.java
+++ b/Mage.Sets/src/mage/cards/e/EliteSkirmisher.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EliteSkirmisher extends CardImpl {
+public final class EliteSkirmisher extends CardImpl {
public EliteSkirmisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EliteVanguard.java b/Mage.Sets/src/mage/cards/e/EliteVanguard.java
index 4511f51fc44..230575e7136 100644
--- a/Mage.Sets/src/mage/cards/e/EliteVanguard.java
+++ b/Mage.Sets/src/mage/cards/e/EliteVanguard.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class EliteVanguard extends CardImpl {
+public final class EliteVanguard extends CardImpl {
public EliteVanguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ElixirOfImmortality.java b/Mage.Sets/src/mage/cards/e/ElixirOfImmortality.java
index 7e6af1d22b0..763665e9d08 100644
--- a/Mage.Sets/src/mage/cards/e/ElixirOfImmortality.java
+++ b/Mage.Sets/src/mage/cards/e/ElixirOfImmortality.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ElixirOfImmortality extends CardImpl {
+public final class ElixirOfImmortality extends CardImpl {
public ElixirOfImmortality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/e/ElixirOfVitality.java b/Mage.Sets/src/mage/cards/e/ElixirOfVitality.java
index 37074ad46bb..e7c85594898 100644
--- a/Mage.Sets/src/mage/cards/e/ElixirOfVitality.java
+++ b/Mage.Sets/src/mage/cards/e/ElixirOfVitality.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Derpthemeus
*/
-public class ElixirOfVitality extends CardImpl {
+public final class ElixirOfVitality extends CardImpl {
public ElixirOfVitality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/e/ElkinBottle.java b/Mage.Sets/src/mage/cards/e/ElkinBottle.java
index ee8b719cf93..eaf7f3b4ee1 100644
--- a/Mage.Sets/src/mage/cards/e/ElkinBottle.java
+++ b/Mage.Sets/src/mage/cards/e/ElkinBottle.java
@@ -48,7 +48,7 @@ import mage.util.CardUtil;
*
* @author L_J
*/
-public class ElkinBottle extends CardImpl {
+public final class ElkinBottle extends CardImpl {
public ElkinBottle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/e/ElkinLair.java b/Mage.Sets/src/mage/cards/e/ElkinLair.java
index e2e36b18e9c..75dd802bee9 100644
--- a/Mage.Sets/src/mage/cards/e/ElkinLair.java
+++ b/Mage.Sets/src/mage/cards/e/ElkinLair.java
@@ -57,7 +57,7 @@ import mage.util.RandomUtil;
*
* @author L_J
*/
-public class ElkinLair extends CardImpl {
+public final class ElkinLair extends CardImpl {
public ElkinLair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ElsewhereFlask.java b/Mage.Sets/src/mage/cards/e/ElsewhereFlask.java
index d831f55a857..138235dede6 100644
--- a/Mage.Sets/src/mage/cards/e/ElsewhereFlask.java
+++ b/Mage.Sets/src/mage/cards/e/ElsewhereFlask.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class ElsewhereFlask extends CardImpl {
+public final class ElsewhereFlask extends CardImpl {
public ElsewhereFlask(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/e/ElspethKnightErrant.java b/Mage.Sets/src/mage/cards/e/ElspethKnightErrant.java
index 744314577c8..b54df6045bc 100644
--- a/Mage.Sets/src/mage/cards/e/ElspethKnightErrant.java
+++ b/Mage.Sets/src/mage/cards/e/ElspethKnightErrant.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ElspethKnightErrant extends CardImpl {
+public final class ElspethKnightErrant extends CardImpl {
public ElspethKnightErrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ElspethSunsChampion.java b/Mage.Sets/src/mage/cards/e/ElspethSunsChampion.java
index 608b31517c2..98448851059 100644
--- a/Mage.Sets/src/mage/cards/e/ElspethSunsChampion.java
+++ b/Mage.Sets/src/mage/cards/e/ElspethSunsChampion.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author LevelX2
*/
-public class ElspethSunsChampion extends CardImpl {
+public final class ElspethSunsChampion extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/e/ElspethTirel.java b/Mage.Sets/src/mage/cards/e/ElspethTirel.java
index 46590803523..48494461a0a 100644
--- a/Mage.Sets/src/mage/cards/e/ElspethTirel.java
+++ b/Mage.Sets/src/mage/cards/e/ElspethTirel.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class ElspethTirel extends CardImpl {
+public final class ElspethTirel extends CardImpl {
public ElspethTirel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ElusiveKrasis.java b/Mage.Sets/src/mage/cards/e/ElusiveKrasis.java
index 1d96765888a..874a767eeff 100644
--- a/Mage.Sets/src/mage/cards/e/ElusiveKrasis.java
+++ b/Mage.Sets/src/mage/cards/e/ElusiveKrasis.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ElusiveKrasis extends CardImpl {
+public final class ElusiveKrasis extends CardImpl {
public ElusiveKrasis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ElusiveSpellfist.java b/Mage.Sets/src/mage/cards/e/ElusiveSpellfist.java
index 73af9b9fc1d..c513e149995 100644
--- a/Mage.Sets/src/mage/cards/e/ElusiveSpellfist.java
+++ b/Mage.Sets/src/mage/cards/e/ElusiveSpellfist.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class ElusiveSpellfist extends CardImpl {
+public final class ElusiveSpellfist extends CardImpl {
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/e/ElusiveTormentor.java b/Mage.Sets/src/mage/cards/e/ElusiveTormentor.java
index 95969b03cd6..0b14f06102d 100644
--- a/Mage.Sets/src/mage/cards/e/ElusiveTormentor.java
+++ b/Mage.Sets/src/mage/cards/e/ElusiveTormentor.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ElusiveTormentor extends CardImpl {
+public final class ElusiveTormentor extends CardImpl {
public ElusiveTormentor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvenCache.java b/Mage.Sets/src/mage/cards/e/ElvenCache.java
index 6297acaa1b5..2c9e8753a23 100644
--- a/Mage.Sets/src/mage/cards/e/ElvenCache.java
+++ b/Mage.Sets/src/mage/cards/e/ElvenCache.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Backfir3
*/
-public class ElvenCache extends CardImpl {
+public final class ElvenCache extends CardImpl {
public ElvenCache(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvenFortress.java b/Mage.Sets/src/mage/cards/e/ElvenFortress.java
index 5ced9c4c3cb..324b4aa7626 100644
--- a/Mage.Sets/src/mage/cards/e/ElvenFortress.java
+++ b/Mage.Sets/src/mage/cards/e/ElvenFortress.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ElvenFortress extends CardImpl {
+public final class ElvenFortress extends CardImpl {
public ElvenFortress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvenLyre.java b/Mage.Sets/src/mage/cards/e/ElvenLyre.java
index b4aa6189f36..f596a57c990 100644
--- a/Mage.Sets/src/mage/cards/e/ElvenLyre.java
+++ b/Mage.Sets/src/mage/cards/e/ElvenLyre.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ElvenLyre extends CardImpl {
+public final class ElvenLyre extends CardImpl {
public ElvenLyre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvenPalisade.java b/Mage.Sets/src/mage/cards/e/ElvenPalisade.java
index 7bb8c7ea3ef..4465da2fbec 100644
--- a/Mage.Sets/src/mage/cards/e/ElvenPalisade.java
+++ b/Mage.Sets/src/mage/cards/e/ElvenPalisade.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class ElvenPalisade extends CardImpl {
+public final class ElvenPalisade extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest");
diff --git a/Mage.Sets/src/mage/cards/e/ElvenRiders.java b/Mage.Sets/src/mage/cards/e/ElvenRiders.java
index ffeccbd7839..ddae26b8c54 100644
--- a/Mage.Sets/src/mage/cards/e/ElvenRiders.java
+++ b/Mage.Sets/src/mage/cards/e/ElvenRiders.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Quercitron
*/
-public class ElvenRiders extends CardImpl {
+public final class ElvenRiders extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by Walls and/or creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/e/ElvenRite.java b/Mage.Sets/src/mage/cards/e/ElvenRite.java
index de5b3f16300..ef1fc8e803f 100644
--- a/Mage.Sets/src/mage/cards/e/ElvenRite.java
+++ b/Mage.Sets/src/mage/cards/e/ElvenRite.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author fireshoes
*/
-public class ElvenRite extends CardImpl {
+public final class ElvenRite extends CardImpl {
public ElvenRite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvenWarhounds.java b/Mage.Sets/src/mage/cards/e/ElvenWarhounds.java
index c23ade48974..32311d6fd48 100644
--- a/Mage.Sets/src/mage/cards/e/ElvenWarhounds.java
+++ b/Mage.Sets/src/mage/cards/e/ElvenWarhounds.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class ElvenWarhounds extends CardImpl {
+public final class ElvenWarhounds extends CardImpl {
public ElvenWarhounds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvesOfDeepShadow.java b/Mage.Sets/src/mage/cards/e/ElvesOfDeepShadow.java
index 480db316adf..babbf58cf01 100644
--- a/Mage.Sets/src/mage/cards/e/ElvesOfDeepShadow.java
+++ b/Mage.Sets/src/mage/cards/e/ElvesOfDeepShadow.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ElvesOfDeepShadow extends CardImpl {
+public final class ElvesOfDeepShadow extends CardImpl {
public ElvesOfDeepShadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishAberration.java b/Mage.Sets/src/mage/cards/e/ElvishAberration.java
index ff9ae83b56c..83fa54694d7 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishAberration.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishAberration.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class ElvishAberration extends CardImpl {
+public final class ElvishAberration extends CardImpl {
public ElvishAberration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishArchdruid.java b/Mage.Sets/src/mage/cards/e/ElvishArchdruid.java
index 0de38ed951a..e51cf956f50 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishArchdruid.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishArchdruid.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author BetaSteward_at_googlemail.com, North
*/
-public class ElvishArchdruid extends CardImpl {
+public final class ElvishArchdruid extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creatures");
private static final FilterControlledCreaturePermanent filterCount = new FilterControlledCreaturePermanent("Elf you control");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishArchers.java b/Mage.Sets/src/mage/cards/e/ElvishArchers.java
index 115fd8c391a..99bb3f35f26 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishArchers.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishArchers.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ElvishArchers extends CardImpl {
+public final class ElvishArchers extends CardImpl {
public ElvishArchers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishBard.java b/Mage.Sets/src/mage/cards/e/ElvishBard.java
index 762669bacb1..536a2b080e4 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishBard.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishBard.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class ElvishBard extends CardImpl {
+public final class ElvishBard extends CardImpl {
public ElvishBard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishBerserker.java b/Mage.Sets/src/mage/cards/e/ElvishBerserker.java
index 93333d59417..17834e451c9 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishBerserker.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishBerserker.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author ilcartographer
*/
-public class ElvishBerserker extends CardImpl {
+public final class ElvishBerserker extends CardImpl {
public ElvishBerserker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java b/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java
index bb7331da6e1..ce1fff2ecef 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author emerald000
*/
-public class ElvishBranchbender extends CardImpl {
+public final class ElvishBranchbender extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Forest");
static {
diff --git a/Mage.Sets/src/mage/cards/e/ElvishChampion.java b/Mage.Sets/src/mage/cards/e/ElvishChampion.java
index 20829492d69..4a44d70e895 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishChampion.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishChampion.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class ElvishChampion extends CardImpl {
+public final class ElvishChampion extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/e/ElvishEulogist.java b/Mage.Sets/src/mage/cards/e/ElvishEulogist.java
index 513b2e33ab7..26e9b4257a4 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishEulogist.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishEulogist.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class ElvishEulogist extends CardImpl {
+public final class ElvishEulogist extends CardImpl {
private static final FilterCard filter = new FilterCard("Elf");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishFarmer.java b/Mage.Sets/src/mage/cards/e/ElvishFarmer.java
index a37aa65c7c7..b57fa95197e 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishFarmer.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishFarmer.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class ElvishFarmer extends CardImpl {
+public final class ElvishFarmer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Saproling");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishFury.java b/Mage.Sets/src/mage/cards/e/ElvishFury.java
index 143967d7765..28fa077f506 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishFury.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishFury.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ElvishFury extends CardImpl {
+public final class ElvishFury extends CardImpl {
public ElvishFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishGuidance.java b/Mage.Sets/src/mage/cards/e/ElvishGuidance.java
index 0b40d130621..771c0b38033 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishGuidance.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishGuidance.java
@@ -52,10 +52,10 @@ import mage.target.common.TargetLandPermanent;
*
* @author Eirkei
*/
-public class ElvishGuidance extends CardImpl {
+public final class ElvishGuidance extends CardImpl {
public ElvishGuidance(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
this.subtype.add(SubType.AURA);
// Enchant land
@@ -65,7 +65,7 @@ public class ElvishGuidance extends CardImpl {
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
- // Whenever enchanted land is tapped for mana, its controller adds {G} to their mana pool for each Elf on the battlefield.
+ // Whenever enchanted land is tapped for mana, its controller adds {G} for each Elf on the battlefield.
this.addAbility(new ElvishGuidanceTriggeredAbility());
}
@@ -107,6 +107,6 @@ class ElvishGuidanceTriggeredAbility extends TriggeredManaAbility {
@Override
public String getRule() {
- return "Whenever enchanted land is tapped for mana, its controller adds {G} to their mana pool for each Elf on the battlefield.";
+ return "Whenever enchanted land is tapped for mana, its controller adds {G} for each Elf on the battlefield.";
}
}
diff --git a/Mage.Sets/src/mage/cards/e/ElvishHandservant.java b/Mage.Sets/src/mage/cards/e/ElvishHandservant.java
index 4d9b1d0bb14..e784eb2c60a 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishHandservant.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishHandservant.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class ElvishHandservant extends CardImpl {
+public final class ElvishHandservant extends CardImpl {
private static final FilterSpell filter = new FilterSpell("Giant");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishHarbinger.java b/Mage.Sets/src/mage/cards/e/ElvishHarbinger.java
index c98592fb804..6567c4b3b5c 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishHarbinger.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishHarbinger.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class ElvishHarbinger extends CardImpl {
+public final class ElvishHarbinger extends CardImpl {
static final FilterCard filter = new FilterCard("Elf card");
static {
diff --git a/Mage.Sets/src/mage/cards/e/ElvishHerder.java b/Mage.Sets/src/mage/cards/e/ElvishHerder.java
index cf5cd31f8fe..be1906db874 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishHerder.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishHerder.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ElvishHerder extends CardImpl {
+public final class ElvishHerder extends CardImpl {
public ElvishHerder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishHexhunter.java b/Mage.Sets/src/mage/cards/e/ElvishHexhunter.java
index c635cbe92bd..eb8f76b35df 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishHexhunter.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishHexhunter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author North
*/
-public class ElvishHexhunter extends CardImpl {
+public final class ElvishHexhunter extends CardImpl {
public ElvishHexhunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G/W}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishHunter.java b/Mage.Sets/src/mage/cards/e/ElvishHunter.java
index 5e0db0786fd..7d0ba1f39ab 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishHunter.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishHunter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class ElvishHunter extends CardImpl {
+public final class ElvishHunter extends CardImpl {
public ElvishHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishImpersonators.java b/Mage.Sets/src/mage/cards/e/ElvishImpersonators.java
index a07b413373e..d34cd1321e6 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishImpersonators.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishImpersonators.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class ElvishImpersonators extends CardImpl {
+public final class ElvishImpersonators extends CardImpl {
public ElvishImpersonators(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishLookout.java b/Mage.Sets/src/mage/cards/e/ElvishLookout.java
index 91e69b84b28..c85a9955914 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishLookout.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishLookout.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ElvishLookout extends CardImpl {
+public final class ElvishLookout extends CardImpl {
public ElvishLookout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishLyrist.java b/Mage.Sets/src/mage/cards/e/ElvishLyrist.java
index f7b3e94ebfc..75247264921 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishLyrist.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishLyrist.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Plopman
*/
-public class ElvishLyrist extends CardImpl {
+public final class ElvishLyrist extends CardImpl {
public ElvishLyrist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishMystic.java b/Mage.Sets/src/mage/cards/e/ElvishMystic.java
index 25d712f3ebe..ae30e45b8d4 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishMystic.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishMystic.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ElvishMystic extends CardImpl {
+public final class ElvishMystic extends CardImpl {
public ElvishMystic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java b/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java
index b30e38984eb..2f0b1d26753 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ElvishPathcutter extends CardImpl {
+public final class ElvishPathcutter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creature");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishPioneer.java b/Mage.Sets/src/mage/cards/e/ElvishPioneer.java
index 8062bdbacfa..23e2038671a 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishPioneer.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishPioneer.java
@@ -30,21 +30,21 @@ package mage.cards.e;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterLandCard;
+import mage.filter.StaticFilters;
/**
*
* @author Plopman
*/
-public class ElvishPioneer extends CardImpl {
+public final class ElvishPioneer extends CardImpl {
public ElvishPioneer(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
this.subtype.add(SubType.ELF);
this.subtype.add(SubType.DRUID);
@@ -52,7 +52,7 @@ public class ElvishPioneer extends CardImpl {
this.toughness = new MageInt(1);
// When Elvish Pioneer enters the battlefield, you may put a basic land card from your hand onto the battlefield tapped.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutLandFromHandOntoBattlefieldEffect(true, FilterLandCard.basicLandCard()), false));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_BASIC_LAND_A, false, true), false));
}
public ElvishPioneer(final ElvishPioneer card) {
diff --git a/Mage.Sets/src/mage/cards/e/ElvishPiper.java b/Mage.Sets/src/mage/cards/e/ElvishPiper.java
index 77b8a475ba7..8a2671fc8be 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishPiper.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishPiper.java
@@ -27,28 +27,27 @@
*/
package mage.cards.e;
-
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterCreatureCard;
+import mage.filter.StaticFilters;
/**
*
* @author North
*/
-public class ElvishPiper extends CardImpl {
+public final class ElvishPiper extends CardImpl {
public ElvishPiper(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.subtype.add(SubType.ELF);
this.subtype.add(SubType.SHAMAN);
@@ -57,7 +56,7 @@ public class ElvishPiper extends CardImpl {
// {G}, {tap}: You may put a creature card from your hand onto the battlefield.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new PutPermanentOnBattlefieldEffect(new FilterCreatureCard("a creature card")),
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_CREATURE_A),
new ManaCostsImpl("{G}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/e/ElvishPromenade.java b/Mage.Sets/src/mage/cards/e/ElvishPromenade.java
index 71784f46abe..dcd713c5308 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishPromenade.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishPromenade.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.ElfToken;
*
* @author Loki
*/
-public class ElvishPromenade extends CardImpl {
+public final class ElvishPromenade extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Elf you control");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishRanger.java b/Mage.Sets/src/mage/cards/e/ElvishRanger.java
index 28270f06a50..1e6b8db79df 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishRanger.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishRanger.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class ElvishRanger extends CardImpl {
+public final class ElvishRanger extends CardImpl {
public ElvishRanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishScout.java b/Mage.Sets/src/mage/cards/e/ElvishScout.java
index 3ea08780a63..30b454c95ad 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishScout.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishScout.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class ElvishScout extends CardImpl {
+public final class ElvishScout extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("attacking creature you control");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishScrapper.java b/Mage.Sets/src/mage/cards/e/ElvishScrapper.java
index cbc4960fdcb..948f7788e14 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishScrapper.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishScrapper.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Plopman
*/
-public class ElvishScrapper extends CardImpl {
+public final class ElvishScrapper extends CardImpl {
public ElvishScrapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishSkysweeper.java b/Mage.Sets/src/mage/cards/e/ElvishSkysweeper.java
index 30fe66bdaa8..6cf425ef3a2 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishSkysweeper.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishSkysweeper.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ElvishSkysweeper extends CardImpl {
+public final class ElvishSkysweeper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java b/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java
index c2e99d43155..bb0bd01685a 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ElvishSoultiller extends CardImpl {
+public final class ElvishSoultiller extends CardImpl {
public ElvishSoultiller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishSpiritGuide.java b/Mage.Sets/src/mage/cards/e/ElvishSpiritGuide.java
index e972cbc804f..41b030c6d0b 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishSpiritGuide.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishSpiritGuide.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class ElvishSpiritGuide extends CardImpl {
+public final class ElvishSpiritGuide extends CardImpl {
public ElvishSpiritGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishVanguard.java b/Mage.Sets/src/mage/cards/e/ElvishVanguard.java
index 62787a4e71e..23c23758765 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishVanguard.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishVanguard.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LoneFox
*/
-public class ElvishVanguard extends CardImpl {
+public final class ElvishVanguard extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another Elf");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishVisionary.java b/Mage.Sets/src/mage/cards/e/ElvishVisionary.java
index 38558c65f92..1496449c6ea 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishVisionary.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishVisionary.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ElvishVisionary extends CardImpl {
+public final class ElvishVisionary extends CardImpl {
public ElvishVisionary (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ElvishWarrior.java b/Mage.Sets/src/mage/cards/e/ElvishWarrior.java
index fb564189e1d..461a629af78 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishWarrior.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishWarrior.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ElvishWarrior extends CardImpl {
+public final class ElvishWarrior extends CardImpl {
public ElvishWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EmancipationAngel.java b/Mage.Sets/src/mage/cards/e/EmancipationAngel.java
index 0ea6e2d2995..a56b4261aa0 100644
--- a/Mage.Sets/src/mage/cards/e/EmancipationAngel.java
+++ b/Mage.Sets/src/mage/cards/e/EmancipationAngel.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Loki
*/
-public class EmancipationAngel extends CardImpl {
+public final class EmancipationAngel extends CardImpl {
public EmancipationAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EmbalmedBrawler.java b/Mage.Sets/src/mage/cards/e/EmbalmedBrawler.java
index 82ecfbd55f6..d6f571a0bac 100644
--- a/Mage.Sets/src/mage/cards/e/EmbalmedBrawler.java
+++ b/Mage.Sets/src/mage/cards/e/EmbalmedBrawler.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class EmbalmedBrawler extends CardImpl {
+public final class EmbalmedBrawler extends CardImpl {
public EmbalmedBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EmbalmersTools.java b/Mage.Sets/src/mage/cards/e/EmbalmersTools.java
index 061ad75b68a..ad94603d042 100644
--- a/Mage.Sets/src/mage/cards/e/EmbalmersTools.java
+++ b/Mage.Sets/src/mage/cards/e/EmbalmersTools.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class EmbalmersTools extends CardImpl {
+public final class EmbalmersTools extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Zombie you control");
diff --git a/Mage.Sets/src/mage/cards/e/Embargo.java b/Mage.Sets/src/mage/cards/e/Embargo.java
index 1393baba798..b5534eb4227 100644
--- a/Mage.Sets/src/mage/cards/e/Embargo.java
+++ b/Mage.Sets/src/mage/cards/e/Embargo.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterNonlandPermanent;
*
* @author fireshoes
*/
-public class Embargo extends CardImpl {
+public final class Embargo extends CardImpl {
private static final FilterPermanent filter = new FilterNonlandPermanent();
diff --git a/Mage.Sets/src/mage/cards/e/EmberBeast.java b/Mage.Sets/src/mage/cards/e/EmberBeast.java
index 7ce64e6462e..5f32957db74 100644
--- a/Mage.Sets/src/mage/cards/e/EmberBeast.java
+++ b/Mage.Sets/src/mage/cards/e/EmberBeast.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class EmberBeast extends CardImpl {
+public final class EmberBeast extends CardImpl {
public EmberBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmberEyeWolf.java b/Mage.Sets/src/mage/cards/e/EmberEyeWolf.java
index 532cb929095..3cee65a4bbd 100644
--- a/Mage.Sets/src/mage/cards/e/EmberEyeWolf.java
+++ b/Mage.Sets/src/mage/cards/e/EmberEyeWolf.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class EmberEyeWolf extends CardImpl {
+public final class EmberEyeWolf extends CardImpl {
public EmberEyeWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmberFistZubera.java b/Mage.Sets/src/mage/cards/e/EmberFistZubera.java
index bb7f5e08277..90fe825c19a 100644
--- a/Mage.Sets/src/mage/cards/e/EmberFistZubera.java
+++ b/Mage.Sets/src/mage/cards/e/EmberFistZubera.java
@@ -45,7 +45,7 @@ import mage.watchers.common.ZuberasDiedWatcher;
*
* @author Loki
*/
-public class EmberFistZubera extends CardImpl {
+public final class EmberFistZubera extends CardImpl {
public EmberFistZubera (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmberGale.java b/Mage.Sets/src/mage/cards/e/EmberGale.java
index 37137f45c6f..929071ca65b 100644
--- a/Mage.Sets/src/mage/cards/e/EmberGale.java
+++ b/Mage.Sets/src/mage/cards/e/EmberGale.java
@@ -53,7 +53,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class EmberGale extends CardImpl {
+public final class EmberGale extends CardImpl {
public EmberGale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmberHauler.java b/Mage.Sets/src/mage/cards/e/EmberHauler.java
index 63d7892e7ca..ba5822f0dff 100644
--- a/Mage.Sets/src/mage/cards/e/EmberHauler.java
+++ b/Mage.Sets/src/mage/cards/e/EmberHauler.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class EmberHauler extends CardImpl {
+public final class EmberHauler extends CardImpl {
public EmberHauler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmberShot.java b/Mage.Sets/src/mage/cards/e/EmberShot.java
index 4aab96914cd..9c548205c29 100644
--- a/Mage.Sets/src/mage/cards/e/EmberShot.java
+++ b/Mage.Sets/src/mage/cards/e/EmberShot.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class EmberShot extends CardImpl {
+public final class EmberShot extends CardImpl {
public EmberShot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmberSwallower.java b/Mage.Sets/src/mage/cards/e/EmberSwallower.java
index 1c618a54b63..720566739dd 100644
--- a/Mage.Sets/src/mage/cards/e/EmberSwallower.java
+++ b/Mage.Sets/src/mage/cards/e/EmberSwallower.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author LevelX2
*/
-public class EmberSwallower extends CardImpl {
+public final class EmberSwallower extends CardImpl {
public EmberSwallower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmberWeaver.java b/Mage.Sets/src/mage/cards/e/EmberWeaver.java
index 53a87e89803..8ba94396ad8 100644
--- a/Mage.Sets/src/mage/cards/e/EmberWeaver.java
+++ b/Mage.Sets/src/mage/cards/e/EmberWeaver.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author Loki
*/
-public class EmberWeaver extends CardImpl {
+public final class EmberWeaver extends CardImpl {
private static final FilterPermanent redPermanentFilter = new FilterPermanent("red");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EmberhornMinotaur.java b/Mage.Sets/src/mage/cards/e/EmberhornMinotaur.java
index 855609590cb..7018c76395b 100644
--- a/Mage.Sets/src/mage/cards/e/EmberhornMinotaur.java
+++ b/Mage.Sets/src/mage/cards/e/EmberhornMinotaur.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author Styxo
*/
-public class EmberhornMinotaur extends CardImpl {
+public final class EmberhornMinotaur extends CardImpl {
public EmberhornMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmbermageGoblin.java b/Mage.Sets/src/mage/cards/e/EmbermageGoblin.java
index d6ce7f5a87b..f60b2c5366e 100644
--- a/Mage.Sets/src/mage/cards/e/EmbermageGoblin.java
+++ b/Mage.Sets/src/mage/cards/e/EmbermageGoblin.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
* @author fireshoes
*/
-public class EmbermageGoblin extends CardImpl {
+public final class EmbermageGoblin extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Embermage Goblin");
diff --git a/Mage.Sets/src/mage/cards/e/EmbermawHellion.java b/Mage.Sets/src/mage/cards/e/EmbermawHellion.java
index 9a7957cf5f3..dcb30c8b25f 100644
--- a/Mage.Sets/src/mage/cards/e/EmbermawHellion.java
+++ b/Mage.Sets/src/mage/cards/e/EmbermawHellion.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
* @author LoneFox
*/
-public class EmbermawHellion extends CardImpl {
+public final class EmbermawHellion extends CardImpl {
public EmbermawHellion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/Embersmith.java b/Mage.Sets/src/mage/cards/e/Embersmith.java
index 2e4deb3dcf7..177714360c5 100644
--- a/Mage.Sets/src/mage/cards/e/Embersmith.java
+++ b/Mage.Sets/src/mage/cards/e/Embersmith.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author Loki, North
*/
-public class Embersmith extends CardImpl {
+public final class Embersmith extends CardImpl {
public Embersmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
this.subtype.add(SubType.HUMAN);
diff --git a/Mage.Sets/src/mage/cards/e/EmberstrikeDuo.java b/Mage.Sets/src/mage/cards/e/EmberstrikeDuo.java
index d0159d079d7..2c7ac4c7a18 100644
--- a/Mage.Sets/src/mage/cards/e/EmberstrikeDuo.java
+++ b/Mage.Sets/src/mage/cards/e/EmberstrikeDuo.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class EmberstrikeDuo extends CardImpl {
+public final class EmberstrikeDuo extends CardImpl {
private static final FilterSpell blackFilter = new FilterSpell("a black spell");
private static final FilterSpell redFilter = new FilterSpell("a red spell");
diff --git a/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java b/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java
index 6c973898cbe..f01f2edd654 100644
--- a/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java
+++ b/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class EmberwildeAugur extends CardImpl {
+public final class EmberwildeAugur extends CardImpl {
public EmberwildeAugur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmberwildeDjinn.java b/Mage.Sets/src/mage/cards/e/EmberwildeDjinn.java
index 1be4e804f16..3f2c40bbc1f 100644
--- a/Mage.Sets/src/mage/cards/e/EmberwildeDjinn.java
+++ b/Mage.Sets/src/mage/cards/e/EmberwildeDjinn.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class EmberwildeDjinn extends CardImpl {
+public final class EmberwildeDjinn extends CardImpl {
public EmberwildeDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmblemOfTheWarmind.java b/Mage.Sets/src/mage/cards/e/EmblemOfTheWarmind.java
index 4764b2e89c9..501a40be6ee 100644
--- a/Mage.Sets/src/mage/cards/e/EmblemOfTheWarmind.java
+++ b/Mage.Sets/src/mage/cards/e/EmblemOfTheWarmind.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class EmblemOfTheWarmind extends CardImpl {
+public final class EmblemOfTheWarmind extends CardImpl {
public EmblemOfTheWarmind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmbodimentOfFury.java b/Mage.Sets/src/mage/cards/e/EmbodimentOfFury.java
index 1522f411110..808d3d02869 100644
--- a/Mage.Sets/src/mage/cards/e/EmbodimentOfFury.java
+++ b/Mage.Sets/src/mage/cards/e/EmbodimentOfFury.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class EmbodimentOfFury extends CardImpl {
+public final class EmbodimentOfFury extends CardImpl {
private static final FilterPermanent filterLandCreatures = new FilterPermanent("Land creatures");
diff --git a/Mage.Sets/src/mage/cards/e/EmbodimentOfInsight.java b/Mage.Sets/src/mage/cards/e/EmbodimentOfInsight.java
index f7508e379e3..30f5865a80d 100644
--- a/Mage.Sets/src/mage/cards/e/EmbodimentOfInsight.java
+++ b/Mage.Sets/src/mage/cards/e/EmbodimentOfInsight.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class EmbodimentOfInsight extends CardImpl {
+public final class EmbodimentOfInsight extends CardImpl {
private static final FilterPermanent filterLandCreatures = new FilterPermanent("Land creatures");
diff --git a/Mage.Sets/src/mage/cards/e/EmbodimentOfSpring.java b/Mage.Sets/src/mage/cards/e/EmbodimentOfSpring.java
index 6c34b5fde2b..50923207c49 100644
--- a/Mage.Sets/src/mage/cards/e/EmbodimentOfSpring.java
+++ b/Mage.Sets/src/mage/cards/e/EmbodimentOfSpring.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class EmbodimentOfSpring extends CardImpl {
+public final class EmbodimentOfSpring extends CardImpl {
public EmbodimentOfSpring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
@@ -58,7 +58,7 @@ public class EmbodimentOfSpring extends CardImpl {
// {1}{G}, {T}, Sacrifice Embodiment of Spring: Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new ManaCostsImpl("{1}{G}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/e/Embolden.java b/Mage.Sets/src/mage/cards/e/Embolden.java
index 251701b1c37..1e1d161ff45 100644
--- a/Mage.Sets/src/mage/cards/e/Embolden.java
+++ b/Mage.Sets/src/mage/cards/e/Embolden.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author TheElk801
*/
-public class Embolden extends CardImpl {
+public final class Embolden extends CardImpl {
public Embolden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EmbraalBruiser.java b/Mage.Sets/src/mage/cards/e/EmbraalBruiser.java
index 9904469165c..3cfb79cc450 100644
--- a/Mage.Sets/src/mage/cards/e/EmbraalBruiser.java
+++ b/Mage.Sets/src/mage/cards/e/EmbraalBruiser.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class EmbraalBruiser extends CardImpl {
+public final class EmbraalBruiser extends CardImpl {
public EmbraalBruiser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EmbraalGearSmasher.java b/Mage.Sets/src/mage/cards/e/EmbraalGearSmasher.java
index 1c5eed278b8..24a9479381b 100644
--- a/Mage.Sets/src/mage/cards/e/EmbraalGearSmasher.java
+++ b/Mage.Sets/src/mage/cards/e/EmbraalGearSmasher.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class EmbraalGearSmasher extends CardImpl {
+public final class EmbraalGearSmasher extends CardImpl {
public EmbraalGearSmasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmeraldCharm.java b/Mage.Sets/src/mage/cards/e/EmeraldCharm.java
index 61b10c0f2ae..95ffc94afa2 100644
--- a/Mage.Sets/src/mage/cards/e/EmeraldCharm.java
+++ b/Mage.Sets/src/mage/cards/e/EmeraldCharm.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author fireshoes
*/
-public class EmeraldCharm extends CardImpl {
+public final class EmeraldCharm extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("non-Aura enchantment");
diff --git a/Mage.Sets/src/mage/cards/e/EmeraldDragonfly.java b/Mage.Sets/src/mage/cards/e/EmeraldDragonfly.java
index 8491082c891..9be926cf945 100644
--- a/Mage.Sets/src/mage/cards/e/EmeraldDragonfly.java
+++ b/Mage.Sets/src/mage/cards/e/EmeraldDragonfly.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class EmeraldDragonfly extends CardImpl {
+public final class EmeraldDragonfly extends CardImpl {
public EmeraldDragonfly(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EmeraldMedallion.java b/Mage.Sets/src/mage/cards/e/EmeraldMedallion.java
index 99bf487c011..fa84fddf210 100644
--- a/Mage.Sets/src/mage/cards/e/EmeraldMedallion.java
+++ b/Mage.Sets/src/mage/cards/e/EmeraldMedallion.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author noxx
*/
-public class EmeraldMedallion extends CardImpl {
+public final class EmeraldMedallion extends CardImpl {
private static final FilterCard filter = new FilterCard("Green spells");
diff --git a/Mage.Sets/src/mage/cards/e/EmeraldOryx.java b/Mage.Sets/src/mage/cards/e/EmeraldOryx.java
index bbfdf8eca6b..72e076dc620 100644
--- a/Mage.Sets/src/mage/cards/e/EmeraldOryx.java
+++ b/Mage.Sets/src/mage/cards/e/EmeraldOryx.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class EmeraldOryx extends CardImpl {
+public final class EmeraldOryx extends CardImpl {
public EmeraldOryx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EmergeUnscathed.java b/Mage.Sets/src/mage/cards/e/EmergeUnscathed.java
index b070e54379f..2c5f33b7233 100644
--- a/Mage.Sets/src/mage/cards/e/EmergeUnscathed.java
+++ b/Mage.Sets/src/mage/cards/e/EmergeUnscathed.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class EmergeUnscathed extends CardImpl {
+public final class EmergeUnscathed extends CardImpl {
public EmergeUnscathed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EmergentGrowth.java b/Mage.Sets/src/mage/cards/e/EmergentGrowth.java
index 6ac84c334e1..1d282b4b804 100644
--- a/Mage.Sets/src/mage/cards/e/EmergentGrowth.java
+++ b/Mage.Sets/src/mage/cards/e/EmergentGrowth.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EmergentGrowth extends CardImpl {
+public final class EmergentGrowth extends CardImpl {
public EmergentGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EmeriaAngel.java b/Mage.Sets/src/mage/cards/e/EmeriaAngel.java
index d456e73d8f7..4c890ae3117 100644
--- a/Mage.Sets/src/mage/cards/e/EmeriaAngel.java
+++ b/Mage.Sets/src/mage/cards/e/EmeriaAngel.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.BirdToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class EmeriaAngel extends CardImpl {
+public final class EmeriaAngel extends CardImpl {
public EmeriaAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EmeriaShepherd.java b/Mage.Sets/src/mage/cards/e/EmeriaShepherd.java
index b0173b92a79..e4fddcddb57 100644
--- a/Mage.Sets/src/mage/cards/e/EmeriaShepherd.java
+++ b/Mage.Sets/src/mage/cards/e/EmeriaShepherd.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class EmeriaShepherd extends CardImpl {
+public final class EmeriaShepherd extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("nonland permanent card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/e/EmeriaTheSkyRuin.java b/Mage.Sets/src/mage/cards/e/EmeriaTheSkyRuin.java
index 8dc2605f29e..d8cbdad136f 100644
--- a/Mage.Sets/src/mage/cards/e/EmeriaTheSkyRuin.java
+++ b/Mage.Sets/src/mage/cards/e/EmeriaTheSkyRuin.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
* @author North
* @author LevelX - changed to checkInterveningIfClause
*/
-public class EmeriaTheSkyRuin extends CardImpl {
+public final class EmeriaTheSkyRuin extends CardImpl {
public EmeriaTheSkyRuin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/e/EmissaryOfDespair.java b/Mage.Sets/src/mage/cards/e/EmissaryOfDespair.java
index fd3cfffdc7b..95368c50cb3 100644
--- a/Mage.Sets/src/mage/cards/e/EmissaryOfDespair.java
+++ b/Mage.Sets/src/mage/cards/e/EmissaryOfDespair.java
@@ -47,7 +47,7 @@ import mage.game.Game;
*
* @author wetterlicht
*/
-public class EmissaryOfDespair extends CardImpl {
+public final class EmissaryOfDespair extends CardImpl {
public EmissaryOfDespair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EmissaryOfHope.java b/Mage.Sets/src/mage/cards/e/EmissaryOfHope.java
index f16bb574cd5..885a951e547 100644
--- a/Mage.Sets/src/mage/cards/e/EmissaryOfHope.java
+++ b/Mage.Sets/src/mage/cards/e/EmissaryOfHope.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class EmissaryOfHope extends CardImpl {
+public final class EmissaryOfHope extends CardImpl {
public EmissaryOfHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EmissaryOfSunrise.java b/Mage.Sets/src/mage/cards/e/EmissaryOfSunrise.java
index 0587f17b366..ecc2d9e773a 100644
--- a/Mage.Sets/src/mage/cards/e/EmissaryOfSunrise.java
+++ b/Mage.Sets/src/mage/cards/e/EmissaryOfSunrise.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class EmissaryOfSunrise extends CardImpl {
+public final class EmissaryOfSunrise extends CardImpl {
public EmissaryOfSunrise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EmissaryOfTheSleepless.java b/Mage.Sets/src/mage/cards/e/EmissaryOfTheSleepless.java
index bfce46bf46a..0c67c6e4c32 100644
--- a/Mage.Sets/src/mage/cards/e/EmissaryOfTheSleepless.java
+++ b/Mage.Sets/src/mage/cards/e/EmissaryOfTheSleepless.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class EmissaryOfTheSleepless extends CardImpl {
+public final class EmissaryOfTheSleepless extends CardImpl {
public EmissaryOfTheSleepless(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EmmaraTandris.java b/Mage.Sets/src/mage/cards/e/EmmaraTandris.java
index a56231eccfe..1d4adf74dd2 100644
--- a/Mage.Sets/src/mage/cards/e/EmmaraTandris.java
+++ b/Mage.Sets/src/mage/cards/e/EmmaraTandris.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author LevelX2
*/
-public class EmmaraTandris extends CardImpl {
+public final class EmmaraTandris extends CardImpl {
private static final FilterCreatureOrPlayer filter = new FilterCreatureOrPlayer("creature tokens you control");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EmmessiTome.java b/Mage.Sets/src/mage/cards/e/EmmessiTome.java
index 758f513b11a..f59aa294c06 100644
--- a/Mage.Sets/src/mage/cards/e/EmmessiTome.java
+++ b/Mage.Sets/src/mage/cards/e/EmmessiTome.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class EmmessiTome extends CardImpl {
+public final class EmmessiTome extends CardImpl {
public EmmessiTome(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/e/EmperorCrocodile.java b/Mage.Sets/src/mage/cards/e/EmperorCrocodile.java
index 755d7173c5d..f2784ce9abd 100644
--- a/Mage.Sets/src/mage/cards/e/EmperorCrocodile.java
+++ b/Mage.Sets/src/mage/cards/e/EmperorCrocodile.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author anonymous
*/
-public class EmperorCrocodile extends CardImpl {
+public final class EmperorCrocodile extends CardImpl {
public EmperorCrocodile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EmperorsVanguard.java b/Mage.Sets/src/mage/cards/e/EmperorsVanguard.java
index 1c606707cde..6c14feffc66 100644
--- a/Mage.Sets/src/mage/cards/e/EmperorsVanguard.java
+++ b/Mage.Sets/src/mage/cards/e/EmperorsVanguard.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author TheElk801
*/
-public class EmperorsVanguard extends CardImpl {
+public final class EmperorsVanguard extends CardImpl {
public EmperorsVanguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EmpressGalina.java b/Mage.Sets/src/mage/cards/e/EmpressGalina.java
index bc8521d990b..d61f3fec272 100644
--- a/Mage.Sets/src/mage/cards/e/EmpressGalina.java
+++ b/Mage.Sets/src/mage/cards/e/EmpressGalina.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class EmpressGalina extends CardImpl {
+public final class EmpressGalina extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("legendary permanent");
diff --git a/Mage.Sets/src/mage/cards/e/EmptyCityRuse.java b/Mage.Sets/src/mage/cards/e/EmptyCityRuse.java
index 5ed1bb030ac..9108117a433 100644
--- a/Mage.Sets/src/mage/cards/e/EmptyCityRuse.java
+++ b/Mage.Sets/src/mage/cards/e/EmptyCityRuse.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetOpponent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class EmptyCityRuse extends CardImpl {
+public final class EmptyCityRuse extends CardImpl {
public EmptyCityRuse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EmptyShrineKannushi.java b/Mage.Sets/src/mage/cards/e/EmptyShrineKannushi.java
index 9183cd58a6b..449c1228c2b 100644
--- a/Mage.Sets/src/mage/cards/e/EmptyShrineKannushi.java
+++ b/Mage.Sets/src/mage/cards/e/EmptyShrineKannushi.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class EmptyShrineKannushi extends CardImpl {
+public final class EmptyShrineKannushi extends CardImpl {
public EmptyShrineKannushi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EmptyTheCatacombs.java b/Mage.Sets/src/mage/cards/e/EmptyTheCatacombs.java
index 25c0010ae7f..f4c983d2be0 100644
--- a/Mage.Sets/src/mage/cards/e/EmptyTheCatacombs.java
+++ b/Mage.Sets/src/mage/cards/e/EmptyTheCatacombs.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class EmptyTheCatacombs extends CardImpl {
+public final class EmptyTheCatacombs extends CardImpl {
public EmptyTheCatacombs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EmptyThePits.java b/Mage.Sets/src/mage/cards/e/EmptyThePits.java
index 0b5e1484e1f..580b2ec41d5 100644
--- a/Mage.Sets/src/mage/cards/e/EmptyThePits.java
+++ b/Mage.Sets/src/mage/cards/e/EmptyThePits.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author emerald000
*/
-public class EmptyThePits extends CardImpl {
+public final class EmptyThePits extends CardImpl {
public EmptyThePits(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{X}{B}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EmptyTheWarrens.java b/Mage.Sets/src/mage/cards/e/EmptyTheWarrens.java
index d3a75df5c75..dc70592790e 100644
--- a/Mage.Sets/src/mage/cards/e/EmptyTheWarrens.java
+++ b/Mage.Sets/src/mage/cards/e/EmptyTheWarrens.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author Plopman
*/
-public class EmptyTheWarrens extends CardImpl {
+public final class EmptyTheWarrens extends CardImpl {
public EmptyTheWarrens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmpyrealVoyager.java b/Mage.Sets/src/mage/cards/e/EmpyrealVoyager.java
index 7105fb439e6..e54a6f1f89e 100644
--- a/Mage.Sets/src/mage/cards/e/EmpyrealVoyager.java
+++ b/Mage.Sets/src/mage/cards/e/EmpyrealVoyager.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class EmpyrealVoyager extends CardImpl {
+public final class EmpyrealVoyager extends CardImpl {
public EmpyrealVoyager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EmpyrialArchangel.java b/Mage.Sets/src/mage/cards/e/EmpyrialArchangel.java
index f622375b462..00f7f2ce0ef 100644
--- a/Mage.Sets/src/mage/cards/e/EmpyrialArchangel.java
+++ b/Mage.Sets/src/mage/cards/e/EmpyrialArchangel.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class EmpyrialArchangel extends CardImpl {
+public final class EmpyrialArchangel extends CardImpl {
public EmpyrialArchangel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{W}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EmpyrialArmor.java b/Mage.Sets/src/mage/cards/e/EmpyrialArmor.java
index 6aad6551e1d..ae471509294 100644
--- a/Mage.Sets/src/mage/cards/e/EmpyrialArmor.java
+++ b/Mage.Sets/src/mage/cards/e/EmpyrialArmor.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EmpyrialArmor extends CardImpl {
+public final class EmpyrialArmor extends CardImpl {
public EmpyrialArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EmpyrialPlate.java b/Mage.Sets/src/mage/cards/e/EmpyrialPlate.java
index 123a1c01edf..6dd584f9605 100644
--- a/Mage.Sets/src/mage/cards/e/EmpyrialPlate.java
+++ b/Mage.Sets/src/mage/cards/e/EmpyrialPlate.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author michael.napoleon@gmail.com
*/
-public class EmpyrialPlate extends CardImpl {
+public final class EmpyrialPlate extends CardImpl {
public EmpyrialPlate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/e/EmrakulTheAeonsTorn.java b/Mage.Sets/src/mage/cards/e/EmrakulTheAeonsTorn.java
index 72ebcfcf0d6..97a39eaea2a 100644
--- a/Mage.Sets/src/mage/cards/e/EmrakulTheAeonsTorn.java
+++ b/Mage.Sets/src/mage/cards/e/EmrakulTheAeonsTorn.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
/**
* @author Loki
*/
-public class EmrakulTheAeonsTorn extends CardImpl {
+public final class EmrakulTheAeonsTorn extends CardImpl {
private static final FilterSpell filter = new FilterSpell("colored spells");
diff --git a/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java b/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java
index 73095ab5fac..295445b2696 100644
--- a/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java
+++ b/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class EmrakulThePromisedEnd extends CardImpl {
+public final class EmrakulThePromisedEnd extends CardImpl {
private static final FilterCard filter = new FilterCard("instants");
diff --git a/Mage.Sets/src/mage/cards/e/EmrakulsEvangel.java b/Mage.Sets/src/mage/cards/e/EmrakulsEvangel.java
index 9dce4aeb8f1..d4134ec68a8 100644
--- a/Mage.Sets/src/mage/cards/e/EmrakulsEvangel.java
+++ b/Mage.Sets/src/mage/cards/e/EmrakulsEvangel.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class EmrakulsEvangel extends CardImpl {
+public final class EmrakulsEvangel extends CardImpl {
public EmrakulsEvangel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EmrakulsHatcher.java b/Mage.Sets/src/mage/cards/e/EmrakulsHatcher.java
index 11577b77311..04d200df6cb 100644
--- a/Mage.Sets/src/mage/cards/e/EmrakulsHatcher.java
+++ b/Mage.Sets/src/mage/cards/e/EmrakulsHatcher.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.EldraziSpawnToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class EmrakulsHatcher extends CardImpl {
+public final class EmrakulsHatcher extends CardImpl {
public EmrakulsHatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EmrakulsInfluence.java b/Mage.Sets/src/mage/cards/e/EmrakulsInfluence.java
index b66f4b39996..eb24b962145 100644
--- a/Mage.Sets/src/mage/cards/e/EmrakulsInfluence.java
+++ b/Mage.Sets/src/mage/cards/e/EmrakulsInfluence.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class EmrakulsInfluence extends CardImpl {
+public final class EmrakulsInfluence extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("Eldrazi creature spell with converted mana cost 7 or greater");
diff --git a/Mage.Sets/src/mage/cards/e/EnatuGolem.java b/Mage.Sets/src/mage/cards/e/EnatuGolem.java
index a287f475acb..63c174d1711 100644
--- a/Mage.Sets/src/mage/cards/e/EnatuGolem.java
+++ b/Mage.Sets/src/mage/cards/e/EnatuGolem.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class EnatuGolem extends CardImpl {
+public final class EnatuGolem extends CardImpl {
public EnatuGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/e/EncampmentKeeper.java b/Mage.Sets/src/mage/cards/e/EncampmentKeeper.java
index 2ebda41ee6f..88e5d8633a7 100644
--- a/Mage.Sets/src/mage/cards/e/EncampmentKeeper.java
+++ b/Mage.Sets/src/mage/cards/e/EncampmentKeeper.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class EncampmentKeeper extends CardImpl {
+public final class EncampmentKeeper extends CardImpl {
public EncampmentKeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EncaseInIce.java b/Mage.Sets/src/mage/cards/e/EncaseInIce.java
index 23da8ddba09..f76d170121e 100644
--- a/Mage.Sets/src/mage/cards/e/EncaseInIce.java
+++ b/Mage.Sets/src/mage/cards/e/EncaseInIce.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class EncaseInIce extends CardImpl {
+public final class EncaseInIce extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red or green creature");
diff --git a/Mage.Sets/src/mage/cards/e/EnchantedEvening.java b/Mage.Sets/src/mage/cards/e/EnchantedEvening.java
index e0d08350e70..ac0a5b4e8bf 100644
--- a/Mage.Sets/src/mage/cards/e/EnchantedEvening.java
+++ b/Mage.Sets/src/mage/cards/e/EnchantedEvening.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class EnchantedEvening extends CardImpl {
+public final class EnchantedEvening extends CardImpl {
public EnchantedEvening(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W/U}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/e/EnchantresssPresence.java b/Mage.Sets/src/mage/cards/e/EnchantresssPresence.java
index 69a42bac8e0..efe93bf9158 100644
--- a/Mage.Sets/src/mage/cards/e/EnchantresssPresence.java
+++ b/Mage.Sets/src/mage/cards/e/EnchantresssPresence.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class EnchantresssPresence extends CardImpl {
+public final class EnchantresssPresence extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an Enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/e/EncirclingFissure.java b/Mage.Sets/src/mage/cards/e/EncirclingFissure.java
index 0ee475fbd93..6cbebaaadd4 100644
--- a/Mage.Sets/src/mage/cards/e/EncirclingFissure.java
+++ b/Mage.Sets/src/mage/cards/e/EncirclingFissure.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class EncirclingFissure extends CardImpl {
+public final class EncirclingFissure extends CardImpl {
public EncirclingFissure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EnclaveCryptologist.java b/Mage.Sets/src/mage/cards/e/EnclaveCryptologist.java
index 45261b032a4..698b7b66bc0 100644
--- a/Mage.Sets/src/mage/cards/e/EnclaveCryptologist.java
+++ b/Mage.Sets/src/mage/cards/e/EnclaveCryptologist.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com, noxx
*/
-public class EnclaveCryptologist extends LevelerCard {
+public final class EnclaveCryptologist extends LevelerCard {
public EnclaveCryptologist (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EnclaveElite.java b/Mage.Sets/src/mage/cards/e/EnclaveElite.java
index 7af0f092519..68a5051aec6 100644
--- a/Mage.Sets/src/mage/cards/e/EnclaveElite.java
+++ b/Mage.Sets/src/mage/cards/e/EnclaveElite.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class EnclaveElite extends CardImpl {
+public final class EnclaveElite extends CardImpl {
public EnclaveElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/Encroach.java b/Mage.Sets/src/mage/cards/e/Encroach.java
index 2eada5bbf98..6916a616b14 100644
--- a/Mage.Sets/src/mage/cards/e/Encroach.java
+++ b/Mage.Sets/src/mage/cards/e/Encroach.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author LoneFox
*/
-public class Encroach extends CardImpl {
+public final class Encroach extends CardImpl {
private static final FilterCard filter = new FilterCard("a nonbasic land card");
diff --git a/Mage.Sets/src/mage/cards/e/EncroachingWastes.java b/Mage.Sets/src/mage/cards/e/EncroachingWastes.java
index fdb5a55efd4..4a8a091e7ad 100644
--- a/Mage.Sets/src/mage/cards/e/EncroachingWastes.java
+++ b/Mage.Sets/src/mage/cards/e/EncroachingWastes.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author LevelX2
*/
-public class EncroachingWastes extends CardImpl {
+public final class EncroachingWastes extends CardImpl {
public EncroachingWastes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/e/Encrust.java b/Mage.Sets/src/mage/cards/e/Encrust.java
index 29fa6048ea5..5cfc12fbfb3 100644
--- a/Mage.Sets/src/mage/cards/e/Encrust.java
+++ b/Mage.Sets/src/mage/cards/e/Encrust.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class Encrust extends CardImpl {
+public final class Encrust extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/e/EndHostilities.java b/Mage.Sets/src/mage/cards/e/EndHostilities.java
index e3ec1656e4f..1fb1e14f5e4 100644
--- a/Mage.Sets/src/mage/cards/e/EndHostilities.java
+++ b/Mage.Sets/src/mage/cards/e/EndHostilities.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class EndHostilities extends CardImpl {
+public final class EndHostilities extends CardImpl {
public EndHostilities(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EndangeredArmodon.java b/Mage.Sets/src/mage/cards/e/EndangeredArmodon.java
index 9dcbbe84897..83c2828ea2f 100644
--- a/Mage.Sets/src/mage/cards/e/EndangeredArmodon.java
+++ b/Mage.Sets/src/mage/cards/e/EndangeredArmodon.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class EndangeredArmodon extends CardImpl {
+public final class EndangeredArmodon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with toughness 2 or less");
diff --git a/Mage.Sets/src/mage/cards/e/Endbringer.java b/Mage.Sets/src/mage/cards/e/Endbringer.java
index be8e45e53e8..939c24b00ec 100644
--- a/Mage.Sets/src/mage/cards/e/Endbringer.java
+++ b/Mage.Sets/src/mage/cards/e/Endbringer.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Endbringer extends CardImpl {
+public final class Endbringer extends CardImpl {
public Endbringer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{C}");
diff --git a/Mage.Sets/src/mage/cards/e/EndbringersRevel.java b/Mage.Sets/src/mage/cards/e/EndbringersRevel.java
index 0ac33742af7..ae42286f1b9 100644
--- a/Mage.Sets/src/mage/cards/e/EndbringersRevel.java
+++ b/Mage.Sets/src/mage/cards/e/EndbringersRevel.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author L_J
*/
-public class EndbringersRevel extends CardImpl {
+public final class EndbringersRevel extends CardImpl {
public EndbringersRevel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EndlessCockroaches.java b/Mage.Sets/src/mage/cards/e/EndlessCockroaches.java
index c24c4b93a93..63ad3211552 100644
--- a/Mage.Sets/src/mage/cards/e/EndlessCockroaches.java
+++ b/Mage.Sets/src/mage/cards/e/EndlessCockroaches.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class EndlessCockroaches extends CardImpl {
+public final class EndlessCockroaches extends CardImpl {
public EndlessCockroaches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EndlessHorizons.java b/Mage.Sets/src/mage/cards/e/EndlessHorizons.java
index 398deaebef0..1e82e011a4c 100644
--- a/Mage.Sets/src/mage/cards/e/EndlessHorizons.java
+++ b/Mage.Sets/src/mage/cards/e/EndlessHorizons.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class EndlessHorizons extends CardImpl {
+public final class EndlessHorizons extends CardImpl {
public EndlessHorizons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EndlessObedience.java b/Mage.Sets/src/mage/cards/e/EndlessObedience.java
index 5845f23a802..b198ef5180b 100644
--- a/Mage.Sets/src/mage/cards/e/EndlessObedience.java
+++ b/Mage.Sets/src/mage/cards/e/EndlessObedience.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author emerald000
*/
-public class EndlessObedience extends CardImpl {
+public final class EndlessObedience extends CardImpl {
public EndlessObedience(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EndlessOne.java b/Mage.Sets/src/mage/cards/e/EndlessOne.java
index 40086f05e1f..e5c8f98bc99 100644
--- a/Mage.Sets/src/mage/cards/e/EndlessOne.java
+++ b/Mage.Sets/src/mage/cards/e/EndlessOne.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class EndlessOne extends CardImpl {
+public final class EndlessOne extends CardImpl {
public EndlessOne(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}");
diff --git a/Mage.Sets/src/mage/cards/e/EndlessRanksOfTheDead.java b/Mage.Sets/src/mage/cards/e/EndlessRanksOfTheDead.java
index 72d0ad29910..10da57aac94 100644
--- a/Mage.Sets/src/mage/cards/e/EndlessRanksOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/e/EndlessRanksOfTheDead.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author BetaSteward
*/
-public class EndlessRanksOfTheDead extends CardImpl {
+public final class EndlessRanksOfTheDead extends CardImpl {
public EndlessRanksOfTheDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EndlessSands.java b/Mage.Sets/src/mage/cards/e/EndlessSands.java
index 5f5c5e466ca..71ba3740534 100644
--- a/Mage.Sets/src/mage/cards/e/EndlessSands.java
+++ b/Mage.Sets/src/mage/cards/e/EndlessSands.java
@@ -16,7 +16,7 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.target.common.TargetControlledCreaturePermanent;
-public class EndlessSands extends CardImpl {
+public final class EndlessSands extends CardImpl {
public EndlessSands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/e/EndlessScream.java b/Mage.Sets/src/mage/cards/e/EndlessScream.java
index ffcd26a6ad1..46ace257677 100644
--- a/Mage.Sets/src/mage/cards/e/EndlessScream.java
+++ b/Mage.Sets/src/mage/cards/e/EndlessScream.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class EndlessScream extends CardImpl {
+public final class EndlessScream extends CardImpl {
public EndlessScream(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EndlessSwarm.java b/Mage.Sets/src/mage/cards/e/EndlessSwarm.java
index 3ba6c8748e8..fa44e39b8b6 100644
--- a/Mage.Sets/src/mage/cards/e/EndlessSwarm.java
+++ b/Mage.Sets/src/mage/cards/e/EndlessSwarm.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.SnakeToken;
* @author jeffwadsworth
*/
-public class EndlessSwarm extends CardImpl {
+public final class EndlessSwarm extends CardImpl {
public EndlessSwarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EndlessWhispers.java b/Mage.Sets/src/mage/cards/e/EndlessWhispers.java
index 282a596fc73..974bfa875f4 100644
--- a/Mage.Sets/src/mage/cards/e/EndlessWhispers.java
+++ b/Mage.Sets/src/mage/cards/e/EndlessWhispers.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class EndlessWhispers extends CardImpl {
+public final class EndlessWhispers extends CardImpl {
public EndlessWhispers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EndlessWurm.java b/Mage.Sets/src/mage/cards/e/EndlessWurm.java
index 6787f69e256..d77926bc8c4 100644
--- a/Mage.Sets/src/mage/cards/e/EndlessWurm.java
+++ b/Mage.Sets/src/mage/cards/e/EndlessWurm.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class EndlessWurm extends CardImpl {
+public final class EndlessWurm extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledEnchantmentPermanent();
diff --git a/Mage.Sets/src/mage/cards/e/Endoskeleton.java b/Mage.Sets/src/mage/cards/e/Endoskeleton.java
index 53a52af8ebd..1d28ace0219 100644
--- a/Mage.Sets/src/mage/cards/e/Endoskeleton.java
+++ b/Mage.Sets/src/mage/cards/e/Endoskeleton.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Endoskeleton extends CardImpl {
+public final class Endoskeleton extends CardImpl {
public Endoskeleton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/e/EndrekSahrMasterBreeder.java b/Mage.Sets/src/mage/cards/e/EndrekSahrMasterBreeder.java
index 931f6885b01..1b0dfc31d29 100644
--- a/Mage.Sets/src/mage/cards/e/EndrekSahrMasterBreeder.java
+++ b/Mage.Sets/src/mage/cards/e/EndrekSahrMasterBreeder.java
@@ -47,7 +47,7 @@ import mage.game.stack.Spell;
/**
* @author LevelX2
*/
-public class EndrekSahrMasterBreeder extends CardImpl {
+public final class EndrekSahrMasterBreeder extends CardImpl {
public EndrekSahrMasterBreeder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/Endure.java b/Mage.Sets/src/mage/cards/e/Endure.java
index a8f8585d4e5..4d07d95e3b0 100644
--- a/Mage.Sets/src/mage/cards/e/Endure.java
+++ b/Mage.Sets/src/mage/cards/e/Endure.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author jeffwadsworth
*/
-public class Endure extends CardImpl {
+public final class Endure extends CardImpl {
private static final FilterPermanentOrPlayer filter = new FilterPermanentOrPlayer("you and permanents you control");
diff --git a/Mage.Sets/src/mage/cards/e/EnduringIdeal.java b/Mage.Sets/src/mage/cards/e/EnduringIdeal.java
index 90d0f6cf58e..a716061478f 100644
--- a/Mage.Sets/src/mage/cards/e/EnduringIdeal.java
+++ b/Mage.Sets/src/mage/cards/e/EnduringIdeal.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
* @author jeffwadsworth
*
*/
-public class EnduringIdeal extends CardImpl {
+public final class EnduringIdeal extends CardImpl {
public EnduringIdeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EnduringRenewal.java b/Mage.Sets/src/mage/cards/e/EnduringRenewal.java
index e32934b4763..81574880296 100644
--- a/Mage.Sets/src/mage/cards/e/EnduringRenewal.java
+++ b/Mage.Sets/src/mage/cards/e/EnduringRenewal.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author anonymous
*/
-public class EnduringRenewal extends CardImpl {
+public final class EnduringRenewal extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a creature");
diff --git a/Mage.Sets/src/mage/cards/e/EnduringScalelord.java b/Mage.Sets/src/mage/cards/e/EnduringScalelord.java
index c5e2fa37889..69a31dee245 100644
--- a/Mage.Sets/src/mage/cards/e/EnduringScalelord.java
+++ b/Mage.Sets/src/mage/cards/e/EnduringScalelord.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class EnduringScalelord extends CardImpl {
+public final class EnduringScalelord extends CardImpl {
public EnduringScalelord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EnduringVictory.java b/Mage.Sets/src/mage/cards/e/EnduringVictory.java
index c5f33a6fb95..5f17da43787 100644
--- a/Mage.Sets/src/mage/cards/e/EnduringVictory.java
+++ b/Mage.Sets/src/mage/cards/e/EnduringVictory.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class EnduringVictory extends CardImpl {
+public final class EnduringVictory extends CardImpl {
public EnduringVictory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EnemyOfTheGuildpact.java b/Mage.Sets/src/mage/cards/e/EnemyOfTheGuildpact.java
index 55d5e41da82..fdaf020cf4e 100644
--- a/Mage.Sets/src/mage/cards/e/EnemyOfTheGuildpact.java
+++ b/Mage.Sets/src/mage/cards/e/EnemyOfTheGuildpact.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*
* @author Wehk
*/
-public class EnemyOfTheGuildpact extends CardImpl {
+public final class EnemyOfTheGuildpact extends CardImpl {
private static final FilterObject filter = new FilterObject("multicolored");
diff --git a/Mage.Sets/src/mage/cards/e/Energizer.java b/Mage.Sets/src/mage/cards/e/Energizer.java
index 7da6d9ff8c9..cdd48677085 100644
--- a/Mage.Sets/src/mage/cards/e/Energizer.java
+++ b/Mage.Sets/src/mage/cards/e/Energizer.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class Energizer extends CardImpl {
+public final class Energizer extends CardImpl {
public Energizer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/e/EnergyArc.java b/Mage.Sets/src/mage/cards/e/EnergyArc.java
index f3c4440db47..dcc10d7ca28 100644
--- a/Mage.Sets/src/mage/cards/e/EnergyArc.java
+++ b/Mage.Sets/src/mage/cards/e/EnergyArc.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class EnergyArc extends CardImpl {
+public final class EnergyArc extends CardImpl {
public EnergyArc(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EnergyBolt.java b/Mage.Sets/src/mage/cards/e/EnergyBolt.java
index 1eb911ae8b8..cc560c11717 100644
--- a/Mage.Sets/src/mage/cards/e/EnergyBolt.java
+++ b/Mage.Sets/src/mage/cards/e/EnergyBolt.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author TheElk801
*/
-public class EnergyBolt extends CardImpl {
+public final class EnergyBolt extends CardImpl {
public EnergyBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EnergyChamber.java b/Mage.Sets/src/mage/cards/e/EnergyChamber.java
index 7982cff689a..8af3a90fbdf 100644
--- a/Mage.Sets/src/mage/cards/e/EnergyChamber.java
+++ b/Mage.Sets/src/mage/cards/e/EnergyChamber.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class EnergyChamber extends CardImpl {
+public final class EnergyChamber extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("target artifact creature");
private static final FilterPermanent filter2 = new FilterPermanent("noncreature artifact");
diff --git a/Mage.Sets/src/mage/cards/e/EnergyField.java b/Mage.Sets/src/mage/cards/e/EnergyField.java
index f4f6f0405b2..8cda9607faf 100644
--- a/Mage.Sets/src/mage/cards/e/EnergyField.java
+++ b/Mage.Sets/src/mage/cards/e/EnergyField.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent;
/**
* @author Plopman
*/
-public class EnergyField extends CardImpl {
+public final class EnergyField extends CardImpl {
public EnergyField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EnergyFlux.java b/Mage.Sets/src/mage/cards/e/EnergyFlux.java
index a944cb5e1ac..8126bdd33bd 100644
--- a/Mage.Sets/src/mage/cards/e/EnergyFlux.java
+++ b/Mage.Sets/src/mage/cards/e/EnergyFlux.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author emerald000
*/
-public class EnergyFlux extends CardImpl {
+public final class EnergyFlux extends CardImpl {
public EnergyFlux(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EnergyStorm.java b/Mage.Sets/src/mage/cards/e/EnergyStorm.java
index 3bf51c4a3f3..e9f50f6200a 100644
--- a/Mage.Sets/src/mage/cards/e/EnergyStorm.java
+++ b/Mage.Sets/src/mage/cards/e/EnergyStorm.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author TheElk801
*/
-public class EnergyStorm extends CardImpl {
+public final class EnergyStorm extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/e/EnergyTap.java b/Mage.Sets/src/mage/cards/e/EnergyTap.java
index 23e2e0cbb31..da415da87ac 100644
--- a/Mage.Sets/src/mage/cards/e/EnergyTap.java
+++ b/Mage.Sets/src/mage/cards/e/EnergyTap.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author spjspj
*/
-public class EnergyTap extends CardImpl {
+public final class EnergyTap extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you crontrol");
diff --git a/Mage.Sets/src/mage/cards/e/Enervate.java b/Mage.Sets/src/mage/cards/e/Enervate.java
index 0ffda70145b..0b8ff9c6886 100644
--- a/Mage.Sets/src/mage/cards/e/Enervate.java
+++ b/Mage.Sets/src/mage/cards/e/Enervate.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class Enervate extends CardImpl {
+public final class Enervate extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/e/Enfeeblement.java b/Mage.Sets/src/mage/cards/e/Enfeeblement.java
index 8c58beebbb2..633844b2ce6 100644
--- a/Mage.Sets/src/mage/cards/e/Enfeeblement.java
+++ b/Mage.Sets/src/mage/cards/e/Enfeeblement.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class Enfeeblement extends CardImpl {
+public final class Enfeeblement extends CardImpl {
public Enfeeblement(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EngineeredExplosives.java b/Mage.Sets/src/mage/cards/e/EngineeredExplosives.java
index 5d1e3d199aa..3287997e8c6 100644
--- a/Mage.Sets/src/mage/cards/e/EngineeredExplosives.java
+++ b/Mage.Sets/src/mage/cards/e/EngineeredExplosives.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class EngineeredExplosives extends CardImpl {
+public final class EngineeredExplosives extends CardImpl {
public EngineeredExplosives(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/e/EngineeredMight.java b/Mage.Sets/src/mage/cards/e/EngineeredMight.java
index 26635ae446a..24ec672fcc9 100644
--- a/Mage.Sets/src/mage/cards/e/EngineeredMight.java
+++ b/Mage.Sets/src/mage/cards/e/EngineeredMight.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EngineeredMight extends CardImpl {
+public final class EngineeredMight extends CardImpl {
public EngineeredMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EngineeredPlague.java b/Mage.Sets/src/mage/cards/e/EngineeredPlague.java
index e222c05f2af..bce4f17d1f0 100644
--- a/Mage.Sets/src/mage/cards/e/EngineeredPlague.java
+++ b/Mage.Sets/src/mage/cards/e/EngineeredPlague.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class EngineeredPlague extends CardImpl {
+public final class EngineeredPlague extends CardImpl {
public EngineeredPlague(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EngulfTheShore.java b/Mage.Sets/src/mage/cards/e/EngulfTheShore.java
index a29bf1fda12..b5013ad6953 100644
--- a/Mage.Sets/src/mage/cards/e/EngulfTheShore.java
+++ b/Mage.Sets/src/mage/cards/e/EngulfTheShore.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class EngulfTheShore extends CardImpl {
+public final class EngulfTheShore extends CardImpl {
public EngulfTheShore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EngulfingFlames.java b/Mage.Sets/src/mage/cards/e/EngulfingFlames.java
index 39820d828d8..309caac10fb 100644
--- a/Mage.Sets/src/mage/cards/e/EngulfingFlames.java
+++ b/Mage.Sets/src/mage/cards/e/EngulfingFlames.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33, North
*/
-public class EngulfingFlames extends CardImpl {
+public final class EngulfingFlames extends CardImpl {
public EngulfingFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EngulfingSlagwurm.java b/Mage.Sets/src/mage/cards/e/EngulfingSlagwurm.java
index f24dfb66a86..270d3c530c4 100644
--- a/Mage.Sets/src/mage/cards/e/EngulfingSlagwurm.java
+++ b/Mage.Sets/src/mage/cards/e/EngulfingSlagwurm.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class EngulfingSlagwurm extends CardImpl {
+public final class EngulfingSlagwurm extends CardImpl {
public EngulfingSlagwurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EnhancedAwareness.java b/Mage.Sets/src/mage/cards/e/EnhancedAwareness.java
index b830f289389..82c09e97257 100644
--- a/Mage.Sets/src/mage/cards/e/EnhancedAwareness.java
+++ b/Mage.Sets/src/mage/cards/e/EnhancedAwareness.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class EnhancedAwareness extends CardImpl {
+public final class EnhancedAwareness extends CardImpl {
public EnhancedAwareness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EnigmaDrake.java b/Mage.Sets/src/mage/cards/e/EnigmaDrake.java
index f436a325a74..180f1cc348b 100644
--- a/Mage.Sets/src/mage/cards/e/EnigmaDrake.java
+++ b/Mage.Sets/src/mage/cards/e/EnigmaDrake.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterInstantOrSorceryCard;
*
* @author Darkside-
*/
-public class EnigmaDrake extends CardImpl {
+public final class EnigmaDrake extends CardImpl {
public EnigmaDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EnigmaEidolon.java b/Mage.Sets/src/mage/cards/e/EnigmaEidolon.java
index e42a0c13bfa..d67acf962ca 100644
--- a/Mage.Sets/src/mage/cards/e/EnigmaEidolon.java
+++ b/Mage.Sets/src/mage/cards/e/EnigmaEidolon.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class EnigmaEidolon extends CardImpl {
+public final class EnigmaEidolon extends CardImpl {
public EnigmaEidolon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EnigmaSphinx.java b/Mage.Sets/src/mage/cards/e/EnigmaSphinx.java
index d693e7b5a6d..9016959cfae 100644
--- a/Mage.Sets/src/mage/cards/e/EnigmaSphinx.java
+++ b/Mage.Sets/src/mage/cards/e/EnigmaSphinx.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class EnigmaSphinx extends CardImpl {
+public final class EnigmaSphinx extends CardImpl {
public EnigmaSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/Enlarge.java b/Mage.Sets/src/mage/cards/e/Enlarge.java
index 6f8455481ef..ccc15333305 100644
--- a/Mage.Sets/src/mage/cards/e/Enlarge.java
+++ b/Mage.Sets/src/mage/cards/e/Enlarge.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Enlarge extends CardImpl {
+public final class Enlarge extends CardImpl {
public Enlarge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EnlightenedAscetic.java b/Mage.Sets/src/mage/cards/e/EnlightenedAscetic.java
index 19046682ce2..a0c81485048 100644
--- a/Mage.Sets/src/mage/cards/e/EnlightenedAscetic.java
+++ b/Mage.Sets/src/mage/cards/e/EnlightenedAscetic.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Wehk
*/
-public class EnlightenedAscetic extends CardImpl {
+public final class EnlightenedAscetic extends CardImpl {
public EnlightenedAscetic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EnlightenedManiac.java b/Mage.Sets/src/mage/cards/e/EnlightenedManiac.java
index 6a48f2964bf..a553cc789a7 100644
--- a/Mage.Sets/src/mage/cards/e/EnlightenedManiac.java
+++ b/Mage.Sets/src/mage/cards/e/EnlightenedManiac.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.EldraziHorrorToken;
*
* @author LevelX2
*/
-public class EnlightenedManiac extends CardImpl {
+public final class EnlightenedManiac extends CardImpl {
public EnlightenedManiac(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EnlightenedTutor.java b/Mage.Sets/src/mage/cards/e/EnlightenedTutor.java
index 195ca5cdc44..48d025c16d2 100644
--- a/Mage.Sets/src/mage/cards/e/EnlightenedTutor.java
+++ b/Mage.Sets/src/mage/cards/e/EnlightenedTutor.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class EnlightenedTutor extends CardImpl {
+public final class EnlightenedTutor extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact or enchantment card");
static{
diff --git a/Mage.Sets/src/mage/cards/e/EnlistedWurm.java b/Mage.Sets/src/mage/cards/e/EnlistedWurm.java
index af0cc55c5d6..da9d849f45f 100644
--- a/Mage.Sets/src/mage/cards/e/EnlistedWurm.java
+++ b/Mage.Sets/src/mage/cards/e/EnlistedWurm.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class EnlistedWurm extends CardImpl {
+public final class EnlistedWurm extends CardImpl {
public EnlistedWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EnlistmentOfficer.java b/Mage.Sets/src/mage/cards/e/EnlistmentOfficer.java
index 4c4c60b4336..a2a719a4095 100644
--- a/Mage.Sets/src/mage/cards/e/EnlistmentOfficer.java
+++ b/Mage.Sets/src/mage/cards/e/EnlistmentOfficer.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class EnlistmentOfficer extends CardImpl {
+public final class EnlistmentOfficer extends CardImpl {
private static final FilterCard filter = new FilterCard("Soldier cards");
diff --git a/Mage.Sets/src/mage/cards/e/EnormousBaloth.java b/Mage.Sets/src/mage/cards/e/EnormousBaloth.java
index 162c0ea1529..73fbec8280d 100644
--- a/Mage.Sets/src/mage/cards/e/EnormousBaloth.java
+++ b/Mage.Sets/src/mage/cards/e/EnormousBaloth.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class EnormousBaloth extends CardImpl {
+public final class EnormousBaloth extends CardImpl {
public EnormousBaloth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/Enrage.java b/Mage.Sets/src/mage/cards/e/Enrage.java
index 977881aa8d8..28221dca4f5 100644
--- a/Mage.Sets/src/mage/cards/e/Enrage.java
+++ b/Mage.Sets/src/mage/cards/e/Enrage.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Enrage extends CardImpl {
+public final class Enrage extends CardImpl {
public Enrage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EnragedGiant.java b/Mage.Sets/src/mage/cards/e/EnragedGiant.java
index b18eee81104..7d9b5fb2a18 100644
--- a/Mage.Sets/src/mage/cards/e/EnragedGiant.java
+++ b/Mage.Sets/src/mage/cards/e/EnragedGiant.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class EnragedGiant extends CardImpl {
+public final class EnragedGiant extends CardImpl {
public EnragedGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EnragedRevolutionary.java b/Mage.Sets/src/mage/cards/e/EnragedRevolutionary.java
index ed9b41c4f82..9fbaba545ef 100644
--- a/Mage.Sets/src/mage/cards/e/EnragedRevolutionary.java
+++ b/Mage.Sets/src/mage/cards/e/EnragedRevolutionary.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class EnragedRevolutionary extends CardImpl {
+public final class EnragedRevolutionary extends CardImpl {
public EnragedRevolutionary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EnragingLicid.java b/Mage.Sets/src/mage/cards/e/EnragingLicid.java
index 145460a3ff4..a89d710612d 100644
--- a/Mage.Sets/src/mage/cards/e/EnragingLicid.java
+++ b/Mage.Sets/src/mage/cards/e/EnragingLicid.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class EnragingLicid extends CardImpl {
+public final class EnragingLicid extends CardImpl {
public EnragingLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EnshrinedMemories.java b/Mage.Sets/src/mage/cards/e/EnshrinedMemories.java
index e031c4c19b0..ab9d0122c62 100644
--- a/Mage.Sets/src/mage/cards/e/EnshrinedMemories.java
+++ b/Mage.Sets/src/mage/cards/e/EnshrinedMemories.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LevelX2
*/
-public class EnshrinedMemories extends CardImpl {
+public final class EnshrinedMemories extends CardImpl {
public EnshrinedMemories(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EnshroudingMist.java b/Mage.Sets/src/mage/cards/e/EnshroudingMist.java
index 43708bbaf66..c7de2f23571 100644
--- a/Mage.Sets/src/mage/cards/e/EnshroudingMist.java
+++ b/Mage.Sets/src/mage/cards/e/EnshroudingMist.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EnshroudingMist extends CardImpl {
+public final class EnshroudingMist extends CardImpl {
public EnshroudingMist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/e/Enslave.java b/Mage.Sets/src/mage/cards/e/Enslave.java
index fc002a1b389..9c05854f4e1 100644
--- a/Mage.Sets/src/mage/cards/e/Enslave.java
+++ b/Mage.Sets/src/mage/cards/e/Enslave.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Enslave extends CardImpl {
+public final class Enslave extends CardImpl {
public Enslave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EnslavedDwarf.java b/Mage.Sets/src/mage/cards/e/EnslavedDwarf.java
index 4b5ea5257cf..502fef3bd05 100644
--- a/Mage.Sets/src/mage/cards/e/EnslavedDwarf.java
+++ b/Mage.Sets/src/mage/cards/e/EnslavedDwarf.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author tomd1990
*/
-public class EnslavedDwarf extends CardImpl {
+public final class EnslavedDwarf extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature");
diff --git a/Mage.Sets/src/mage/cards/e/EnslavedHorror.java b/Mage.Sets/src/mage/cards/e/EnslavedHorror.java
new file mode 100644
index 00000000000..577a10c60d9
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/e/EnslavedHorror.java
@@ -0,0 +1,119 @@
+/*
+ * 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.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreatureCard;
+import mage.filter.predicate.other.OwnerIdPredicate;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetCardInGraveyard;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class EnslavedHorror extends CardImpl {
+
+ public EnslavedHorror(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
+
+ this.subtype.add(SubType.HORROR);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(4);
+
+ // When Enslaved Horror enters the battlefield, each other player may return a creature card from his or her graveyard to the battlefield.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new EnslavedHorrorEffect()));
+ }
+
+ public EnslavedHorror(final EnslavedHorror card) {
+ super(card);
+ }
+
+ @Override
+ public EnslavedHorror copy() {
+ return new EnslavedHorror(this);
+ }
+}
+
+class EnslavedHorrorEffect extends OneShotEffect {
+
+ public EnslavedHorrorEffect() {
+ super(Outcome.PutCreatureInPlay);
+ this.staticText = "each player may put a creature card from their graveyard onto the battlefield";
+ }
+
+ public EnslavedHorrorEffect(final EnslavedHorrorEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public EnslavedHorrorEffect copy() {
+ return new EnslavedHorrorEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
+
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
+ if (playerId.equals(controller.getId())) {
+ continue;
+ }
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ FilterCreatureCard filterCreatureCard = new FilterCreatureCard("creature card from your graveyard");
+ filterCreatureCard.add(new OwnerIdPredicate(playerId));
+ TargetCardInGraveyard target = new TargetCardInGraveyard(0, 1, filterCreatureCard);
+ target.setNotTarget(true);
+ if (target.canChoose(playerId, game)
+ && player.chooseTarget(outcome, target, source, game)) {
+ Card card = game.getCard(target.getFirstTarget());
+ if (card != null) {
+ player.moveCards(card, Zone.BATTLEFIELD, source, game);
+ }
+ }
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/e/EnslavedScout.java b/Mage.Sets/src/mage/cards/e/EnslavedScout.java
index 36d4f8bdbf6..f0974a626cd 100644
--- a/Mage.Sets/src/mage/cards/e/EnslavedScout.java
+++ b/Mage.Sets/src/mage/cards/e/EnslavedScout.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class EnslavedScout extends CardImpl {
+public final class EnslavedScout extends CardImpl {
public EnslavedScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/Ensnare.java b/Mage.Sets/src/mage/cards/e/Ensnare.java
index 8cc5ab68e9a..ef7be6b63dc 100644
--- a/Mage.Sets/src/mage/cards/e/Ensnare.java
+++ b/Mage.Sets/src/mage/cards/e/Ensnare.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class Ensnare extends CardImpl {
+public final class Ensnare extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Islands");
diff --git a/Mage.Sets/src/mage/cards/e/EnsnaringBridge.java b/Mage.Sets/src/mage/cards/e/EnsnaringBridge.java
index d0d676f67fd..3142771afa2 100644
--- a/Mage.Sets/src/mage/cards/e/EnsnaringBridge.java
+++ b/Mage.Sets/src/mage/cards/e/EnsnaringBridge.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class EnsnaringBridge extends CardImpl {
+public final class EnsnaringBridge extends CardImpl {
public EnsnaringBridge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/e/EnsoulArtifact.java b/Mage.Sets/src/mage/cards/e/EnsoulArtifact.java
index 0c04a8bcdc2..03eeebe34b9 100644
--- a/Mage.Sets/src/mage/cards/e/EnsoulArtifact.java
+++ b/Mage.Sets/src/mage/cards/e/EnsoulArtifact.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class EnsoulArtifact extends CardImpl {
+public final class EnsoulArtifact extends CardImpl {
public EnsoulArtifact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EnsouledScimitar.java b/Mage.Sets/src/mage/cards/e/EnsouledScimitar.java
index cc5e75a6747..bc2f180325e 100644
--- a/Mage.Sets/src/mage/cards/e/EnsouledScimitar.java
+++ b/Mage.Sets/src/mage/cards/e/EnsouledScimitar.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.Token;
*
* @author Plopman
*/
-public class EnsouledScimitar extends CardImpl {
+public final class EnsouledScimitar extends CardImpl {
public EnsouledScimitar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/e/Entangler.java b/Mage.Sets/src/mage/cards/e/Entangler.java
index 3ec1b2578bd..711e577710a 100644
--- a/Mage.Sets/src/mage/cards/e/Entangler.java
+++ b/Mage.Sets/src/mage/cards/e/Entangler.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Rene bugisemail at gmail dot com
*/
-public class Entangler extends CardImpl {
+public final class Entangler extends CardImpl {
public Entangler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EntanglingTrap.java b/Mage.Sets/src/mage/cards/e/EntanglingTrap.java
index 2be129b938e..6bc26349633 100644
--- a/Mage.Sets/src/mage/cards/e/EntanglingTrap.java
+++ b/Mage.Sets/src/mage/cards/e/EntanglingTrap.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EntanglingTrap extends CardImpl {
+public final class EntanglingTrap extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/e/EntanglingVines.java b/Mage.Sets/src/mage/cards/e/EntanglingVines.java
index 3d92bf40cad..a81c684b801 100644
--- a/Mage.Sets/src/mage/cards/e/EntanglingVines.java
+++ b/Mage.Sets/src/mage/cards/e/EntanglingVines.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class EntanglingVines extends CardImpl {
+public final class EntanglingVines extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/e/EnterTheInfinite.java b/Mage.Sets/src/mage/cards/e/EnterTheInfinite.java
index d916a13ad6c..4fd93dd4c49 100644
--- a/Mage.Sets/src/mage/cards/e/EnterTheInfinite.java
+++ b/Mage.Sets/src/mage/cards/e/EnterTheInfinite.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class EnterTheInfinite extends CardImpl {
+public final class EnterTheInfinite extends CardImpl {
public EnterTheInfinite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{8}{U}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EnterTheUnknown.java b/Mage.Sets/src/mage/cards/e/EnterTheUnknown.java
index bf3272ef7a2..9d02c08f6d7 100644
--- a/Mage.Sets/src/mage/cards/e/EnterTheUnknown.java
+++ b/Mage.Sets/src/mage/cards/e/EnterTheUnknown.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class EnterTheUnknown extends CardImpl {
+public final class EnterTheUnknown extends CardImpl {
public EnterTheUnknown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EnthrallingVictor.java b/Mage.Sets/src/mage/cards/e/EnthrallingVictor.java
index c3225600ecc..b110242066f 100644
--- a/Mage.Sets/src/mage/cards/e/EnthrallingVictor.java
+++ b/Mage.Sets/src/mage/cards/e/EnthrallingVictor.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EnthrallingVictor extends CardImpl {
+public final class EnthrallingVictor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/e/Entomb.java b/Mage.Sets/src/mage/cards/e/Entomb.java
index aef7cac2436..62b98e215e1 100644
--- a/Mage.Sets/src/mage/cards/e/Entomb.java
+++ b/Mage.Sets/src/mage/cards/e/Entomb.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class Entomb extends CardImpl {
+public final class Entomb extends CardImpl {
public Entomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EntomberExarch.java b/Mage.Sets/src/mage/cards/e/EntomberExarch.java
index 39bc5429111..20cfdaeecc2 100644
--- a/Mage.Sets/src/mage/cards/e/EntomberExarch.java
+++ b/Mage.Sets/src/mage/cards/e/EntomberExarch.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class EntomberExarch extends CardImpl {
+public final class EntomberExarch extends CardImpl {
public EntomberExarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EntourageOfTrest.java b/Mage.Sets/src/mage/cards/e/EntourageOfTrest.java
index 1f9c5b415ff..8c4d158d561 100644
--- a/Mage.Sets/src/mage/cards/e/EntourageOfTrest.java
+++ b/Mage.Sets/src/mage/cards/e/EntourageOfTrest.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class EntourageOfTrest extends CardImpl {
+public final class EntourageOfTrest extends CardImpl {
public EntourageOfTrest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EntrailsFeaster.java b/Mage.Sets/src/mage/cards/e/EntrailsFeaster.java
index a446dd82ad2..7a671e7a248 100644
--- a/Mage.Sets/src/mage/cards/e/EntrailsFeaster.java
+++ b/Mage.Sets/src/mage/cards/e/EntrailsFeaster.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author L_J
*/
-public class EntrailsFeaster extends CardImpl {
+public final class EntrailsFeaster extends CardImpl {
public EntrailsFeaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EntrancingMelody.java b/Mage.Sets/src/mage/cards/e/EntrancingMelody.java
index 04eed25ce3a..fe2f528621b 100644
--- a/Mage.Sets/src/mage/cards/e/EntrancingMelody.java
+++ b/Mage.Sets/src/mage/cards/e/EntrancingMelody.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class EntrancingMelody extends CardImpl {
+public final class EntrancingMelody extends CardImpl {
public EntrancingMelody(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EntrapmentManeuver.java b/Mage.Sets/src/mage/cards/e/EntrapmentManeuver.java
index 999f1be6fd7..f38be84848b 100644
--- a/Mage.Sets/src/mage/cards/e/EntrapmentManeuver.java
+++ b/Mage.Sets/src/mage/cards/e/EntrapmentManeuver.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class EntrapmentManeuver extends CardImpl {
+public final class EntrapmentManeuver extends CardImpl {
public EntrapmentManeuver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EntreatTheAngels.java b/Mage.Sets/src/mage/cards/e/EntreatTheAngels.java
index e0a0f4cc418..a7d0ffb4ee1 100644
--- a/Mage.Sets/src/mage/cards/e/EntreatTheAngels.java
+++ b/Mage.Sets/src/mage/cards/e/EntreatTheAngels.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.AngelToken;
* @author noxx
*
*/
-public class EntreatTheAngels extends CardImpl {
+public final class EntreatTheAngels extends CardImpl {
public EntreatTheAngels(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EntropicEidolon.java b/Mage.Sets/src/mage/cards/e/EntropicEidolon.java
index 4b67e012ecf..0a3f00628f3 100644
--- a/Mage.Sets/src/mage/cards/e/EntropicEidolon.java
+++ b/Mage.Sets/src/mage/cards/e/EntropicEidolon.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class EntropicEidolon extends CardImpl {
+public final class EntropicEidolon extends CardImpl {
public EntropicEidolon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EntropicSpecter.java b/Mage.Sets/src/mage/cards/e/EntropicSpecter.java
index eb0cb15d734..02a0d67f77d 100644
--- a/Mage.Sets/src/mage/cards/e/EntropicSpecter.java
+++ b/Mage.Sets/src/mage/cards/e/EntropicSpecter.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class EntropicSpecter extends CardImpl {
+public final class EntropicSpecter extends CardImpl {
public EntropicSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/Envelop.java b/Mage.Sets/src/mage/cards/e/Envelop.java
index be2a62914ef..77fa53d735b 100644
--- a/Mage.Sets/src/mage/cards/e/Envelop.java
+++ b/Mage.Sets/src/mage/cards/e/Envelop.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Envelop extends CardImpl {
+public final class Envelop extends CardImpl {
private static final FilterSpell filter = new FilterSpell("sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/e/EonHub.java b/Mage.Sets/src/mage/cards/e/EonHub.java
index 5439933cbd7..fbdd5d1acb8 100644
--- a/Mage.Sets/src/mage/cards/e/EonHub.java
+++ b/Mage.Sets/src/mage/cards/e/EonHub.java
@@ -24,7 +24,7 @@ import mage.players.Player;
*
* @author nick.myers
*/
-public class EonHub extends CardImpl {
+public final class EonHub extends CardImpl {
public EonHub(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/e/EpharaGodOfThePolis.java b/Mage.Sets/src/mage/cards/e/EpharaGodOfThePolis.java
index bb0ee395283..285cac1066a 100644
--- a/Mage.Sets/src/mage/cards/e/EpharaGodOfThePolis.java
+++ b/Mage.Sets/src/mage/cards/e/EpharaGodOfThePolis.java
@@ -50,7 +50,7 @@ import mage.watchers.common.PermanentsEnteredBattlefieldWatcher;
*
* @author LevelX2
*/
-public class EpharaGodOfThePolis extends CardImpl {
+public final class EpharaGodOfThePolis extends CardImpl {
public EpharaGodOfThePolis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EpharasEnlightenment.java b/Mage.Sets/src/mage/cards/e/EpharasEnlightenment.java
index 0cda2ae9dad..ba6ebab6366 100644
--- a/Mage.Sets/src/mage/cards/e/EpharasEnlightenment.java
+++ b/Mage.Sets/src/mage/cards/e/EpharasEnlightenment.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EpharasEnlightenment extends CardImpl {
+public final class EpharasEnlightenment extends CardImpl {
public EpharasEnlightenment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EpharasRadiance.java b/Mage.Sets/src/mage/cards/e/EpharasRadiance.java
index 75426d6228c..062ce1228c3 100644
--- a/Mage.Sets/src/mage/cards/e/EpharasRadiance.java
+++ b/Mage.Sets/src/mage/cards/e/EpharasRadiance.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EpharasRadiance extends CardImpl {
+public final class EpharasRadiance extends CardImpl {
public EpharasRadiance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EpharasWarden.java b/Mage.Sets/src/mage/cards/e/EpharasWarden.java
index ed4295f979d..dcd796024ab 100644
--- a/Mage.Sets/src/mage/cards/e/EpharasWarden.java
+++ b/Mage.Sets/src/mage/cards/e/EpharasWarden.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EpharasWarden extends CardImpl {
+public final class EpharasWarden extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 3 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EphemeralShields.java b/Mage.Sets/src/mage/cards/e/EphemeralShields.java
index 9baea4488c5..aaa885aff05 100644
--- a/Mage.Sets/src/mage/cards/e/EphemeralShields.java
+++ b/Mage.Sets/src/mage/cards/e/EphemeralShields.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EphemeralShields extends CardImpl {
+public final class EphemeralShields extends CardImpl {
public EphemeralShields(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/Ephemeron.java b/Mage.Sets/src/mage/cards/e/Ephemeron.java
index f7b75b46636..a05e38b90ce 100644
--- a/Mage.Sets/src/mage/cards/e/Ephemeron.java
+++ b/Mage.Sets/src/mage/cards/e/Ephemeron.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class Ephemeron extends CardImpl {
+public final class Ephemeron extends CardImpl {
public Ephemeron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EpicConfrontation.java b/Mage.Sets/src/mage/cards/e/EpicConfrontation.java
index 8fa809a30e1..b5fd0de96ae 100644
--- a/Mage.Sets/src/mage/cards/e/EpicConfrontation.java
+++ b/Mage.Sets/src/mage/cards/e/EpicConfrontation.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class EpicConfrontation extends CardImpl {
+public final class EpicConfrontation extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/e/EpicExperiment.java b/Mage.Sets/src/mage/cards/e/EpicExperiment.java
index a387fb06561..5097701d56c 100644
--- a/Mage.Sets/src/mage/cards/e/EpicExperiment.java
+++ b/Mage.Sets/src/mage/cards/e/EpicExperiment.java
@@ -29,6 +29,7 @@ package mage.cards.e;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.*;
@@ -48,10 +49,10 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class EpicExperiment extends CardImpl {
+public final class EpicExperiment extends CardImpl {
public EpicExperiment(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{U}{R}");
// Exile the top X cards of your library. For each instant and sorcery card with
// converted mana cost X or less among them, you may cast that card without paying
@@ -105,7 +106,7 @@ class EpicExperimentEffect extends OneShotEffect {
if (controller.choose(Outcome.PlayForFree, cardsToCast, targetCard, game)) {
Card card = game.getCard(targetCard.getFirstTarget());
if (card != null) {
- if (controller.cast(card.getSpellAbility(), game, true)) {
+ if (controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
cardsToCast.remove(card);
} else {
game.informPlayer(controller, "You're not able to cast " + card.getIdName() + " or you canceled the casting.");
diff --git a/Mage.Sets/src/mage/cards/e/EpicProportions.java b/Mage.Sets/src/mage/cards/e/EpicProportions.java
index 215b29413ce..5c1b02051b1 100644
--- a/Mage.Sets/src/mage/cards/e/EpicProportions.java
+++ b/Mage.Sets/src/mage/cards/e/EpicProportions.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class EpicProportions extends CardImpl {
+public final class EpicProportions extends CardImpl {
public EpicProportions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EpicStruggle.java b/Mage.Sets/src/mage/cards/e/EpicStruggle.java
index ee44bfefa79..4f8ef6f26d2 100644
--- a/Mage.Sets/src/mage/cards/e/EpicStruggle.java
+++ b/Mage.Sets/src/mage/cards/e/EpicStruggle.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class EpicStruggle extends CardImpl {
+public final class EpicStruggle extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("if you control twenty or more creatures");
diff --git a/Mage.Sets/src/mage/cards/e/Epicenter.java b/Mage.Sets/src/mage/cards/e/Epicenter.java
index b474ab89c43..a11183c99b7 100644
--- a/Mage.Sets/src/mage/cards/e/Epicenter.java
+++ b/Mage.Sets/src/mage/cards/e/Epicenter.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class Epicenter extends CardImpl {
+public final class Epicenter extends CardImpl {
public Epicenter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EpiphanyAtTheDrownyard.java b/Mage.Sets/src/mage/cards/e/EpiphanyAtTheDrownyard.java
index 686a3cb4b02..88b91a8bc1b 100644
--- a/Mage.Sets/src/mage/cards/e/EpiphanyAtTheDrownyard.java
+++ b/Mage.Sets/src/mage/cards/e/EpiphanyAtTheDrownyard.java
@@ -50,7 +50,7 @@ import mage.util.GameLog;
*
* @author LevelX2
*/
-public class EpiphanyAtTheDrownyard extends CardImpl {
+public final class EpiphanyAtTheDrownyard extends CardImpl {
public EpiphanyAtTheDrownyard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EpiphanyStorm.java b/Mage.Sets/src/mage/cards/e/EpiphanyStorm.java
index 91778170849..d8e02c03dd1 100644
--- a/Mage.Sets/src/mage/cards/e/EpiphanyStorm.java
+++ b/Mage.Sets/src/mage/cards/e/EpiphanyStorm.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class EpiphanyStorm extends CardImpl {
+public final class EpiphanyStorm extends CardImpl {
public EpiphanyStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EpitaphGolem.java b/Mage.Sets/src/mage/cards/e/EpitaphGolem.java
index 5d9780d93ba..50b9f085af4 100644
--- a/Mage.Sets/src/mage/cards/e/EpitaphGolem.java
+++ b/Mage.Sets/src/mage/cards/e/EpitaphGolem.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class EpitaphGolem extends CardImpl {
+public final class EpitaphGolem extends CardImpl {
public EpitaphGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/e/Epochrasite.java b/Mage.Sets/src/mage/cards/e/Epochrasite.java
index 9707d0c231e..9abc07ed880 100644
--- a/Mage.Sets/src/mage/cards/e/Epochrasite.java
+++ b/Mage.Sets/src/mage/cards/e/Epochrasite.java
@@ -55,7 +55,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author LevelX2
*/
-public class Epochrasite extends CardImpl {
+public final class Epochrasite extends CardImpl {
public Epochrasite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/e/EqualTreatment.java b/Mage.Sets/src/mage/cards/e/EqualTreatment.java
index 0aaa6be6c75..1311f658ed3 100644
--- a/Mage.Sets/src/mage/cards/e/EqualTreatment.java
+++ b/Mage.Sets/src/mage/cards/e/EqualTreatment.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent;
/**
* @author L_J
*/
-public class EqualTreatment extends CardImpl {
+public final class EqualTreatment extends CardImpl {
public EqualTreatment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EquestrianSkill.java b/Mage.Sets/src/mage/cards/e/EquestrianSkill.java
index 481952b1609..3f7f1abbe39 100644
--- a/Mage.Sets/src/mage/cards/e/EquestrianSkill.java
+++ b/Mage.Sets/src/mage/cards/e/EquestrianSkill.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EquestrianSkill extends CardImpl {
+public final class EquestrianSkill extends CardImpl {
public EquestrianSkill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/Equilibrium.java b/Mage.Sets/src/mage/cards/e/Equilibrium.java
index 191fe0ffe5b..b86fe4e1a88 100644
--- a/Mage.Sets/src/mage/cards/e/Equilibrium.java
+++ b/Mage.Sets/src/mage/cards/e/Equilibrium.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class Equilibrium extends CardImpl {
+public final class Equilibrium extends CardImpl {
public Equilibrium(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/Equipoise.java b/Mage.Sets/src/mage/cards/e/Equipoise.java
index bdb79816bf3..e525caaec43 100644
--- a/Mage.Sets/src/mage/cards/e/Equipoise.java
+++ b/Mage.Sets/src/mage/cards/e/Equipoise.java
@@ -53,7 +53,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class Equipoise extends CardImpl {
+public final class Equipoise extends CardImpl {
public Equipoise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EraOfInnovation.java b/Mage.Sets/src/mage/cards/e/EraOfInnovation.java
index bb61f36a5d3..a9650c62483 100644
--- a/Mage.Sets/src/mage/cards/e/EraOfInnovation.java
+++ b/Mage.Sets/src/mage/cards/e/EraOfInnovation.java
@@ -52,7 +52,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class EraOfInnovation extends CardImpl {
+public final class EraOfInnovation extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact or Artificer");
diff --git a/Mage.Sets/src/mage/cards/e/Eradicate.java b/Mage.Sets/src/mage/cards/e/Eradicate.java
index f9be2eeb7ef..769ce1b0c76 100644
--- a/Mage.Sets/src/mage/cards/e/Eradicate.java
+++ b/Mage.Sets/src/mage/cards/e/Eradicate.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Eradicate extends CardImpl {
+public final class Eradicate extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
static {
diff --git a/Mage.Sets/src/mage/cards/e/Erase.java b/Mage.Sets/src/mage/cards/e/Erase.java
index 11f86519354..adf7514fa7d 100644
--- a/Mage.Sets/src/mage/cards/e/Erase.java
+++ b/Mage.Sets/src/mage/cards/e/Erase.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Loki
*/
-public class Erase extends CardImpl {
+public final class Erase extends CardImpl {
public Erase(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ErayoSoratamiAscendant.java b/Mage.Sets/src/mage/cards/e/ErayoSoratamiAscendant.java
index c6cd7d05b67..58198c10c6c 100644
--- a/Mage.Sets/src/mage/cards/e/ErayoSoratamiAscendant.java
+++ b/Mage.Sets/src/mage/cards/e/ErayoSoratamiAscendant.java
@@ -51,7 +51,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author LevelX2
*/
-public class ErayoSoratamiAscendant extends CardImpl {
+public final class ErayoSoratamiAscendant extends CardImpl {
public ErayoSoratamiAscendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java b/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java
index 545e5450915..e18d0af2578 100644
--- a/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java
+++ b/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java
@@ -49,7 +49,7 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class ErdwalIlluminator extends CardImpl {
+public final class ErdwalIlluminator extends CardImpl {
public ErdwalIlluminator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ErdwalRipper.java b/Mage.Sets/src/mage/cards/e/ErdwalRipper.java
index 2b533990da5..32f9473a841 100644
--- a/Mage.Sets/src/mage/cards/e/ErdwalRipper.java
+++ b/Mage.Sets/src/mage/cards/e/ErdwalRipper.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class ErdwalRipper extends CardImpl {
+public final class ErdwalRipper extends CardImpl {
public ErdwalRipper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ErebosGodOfTheDead.java b/Mage.Sets/src/mage/cards/e/ErebosGodOfTheDead.java
index f250f2df169..b311247bdf6 100644
--- a/Mage.Sets/src/mage/cards/e/ErebosGodOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/e/ErebosGodOfTheDead.java
@@ -35,25 +35,23 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.DevotionCount;
-import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.continuous.CantGainLifeAllEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.game.Game;
-import mage.players.Player;
/**
*
* @author LevelX2
*/
-public class ErebosGodOfTheDead extends CardImpl {
+public final class ErebosGodOfTheDead extends CardImpl {
public ErebosGodOfTheDead(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{3}{B}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.GOD);
@@ -62,13 +60,20 @@ public class ErebosGodOfTheDead extends CardImpl {
// Indestructible
this.addAbility(IndestructibleAbility.getInstance());
+
// As long as your devotion to black is less than five, Erebos isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(new DevotionCount(ColoredManaSymbol.B), 5);
effect.setText("As long as your devotion to black is less than five, Erebos isn't a creature.(Each {B} in the mana costs of permanents you control counts towards your devotion to black.)");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
// Your opponents can't gain life.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new OpponentsCantGainLifeEffect()));
+ this.addAbility(new SimpleStaticAbility(
+ Zone.BATTLEFIELD,
+ new CantGainLifeAllEffect(
+ Duration.WhileOnBattlefield,
+ TargetController.OPPONENT
+ )
+ ));
// {1}{B}, Pay 2 life: Draw a card.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new ManaCostsImpl("{1}{B}"));
@@ -86,33 +91,3 @@ public class ErebosGodOfTheDead extends CardImpl {
return new ErebosGodOfTheDead(this);
}
}
-
-class OpponentsCantGainLifeEffect extends ContinuousEffectImpl {
-
- public OpponentsCantGainLifeEffect() {
- super(Duration.WhileOnBattlefield, Layer.PlayerEffects, SubLayer.NA, Outcome.Benefit);
- staticText = "Your opponents can't gain life";
- }
-
- public OpponentsCantGainLifeEffect(final OpponentsCantGainLifeEffect effect) {
- super(effect);
- }
-
- @Override
- public OpponentsCantGainLifeEffect copy() {
- return new OpponentsCantGainLifeEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- for (UUID playerId: game.getOpponents(source.getControllerId())) {
- Player player = game.getPlayer(playerId);
- if (player != null)
- {
- player.setCanGainLife(false);
- }
- }
- return true;
- }
-
-}
diff --git a/Mage.Sets/src/mage/cards/e/ErebossEmissary.java b/Mage.Sets/src/mage/cards/e/ErebossEmissary.java
index 9c0fd1625dc..a41a0a19ce5 100644
--- a/Mage.Sets/src/mage/cards/e/ErebossEmissary.java
+++ b/Mage.Sets/src/mage/cards/e/ErebossEmissary.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class ErebossEmissary extends CardImpl {
+public final class ErebossEmissary extends CardImpl {
public ErebossEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ErebossTitan.java b/Mage.Sets/src/mage/cards/e/ErebossTitan.java
index ba7de369b48..236f0cea3b7 100644
--- a/Mage.Sets/src/mage/cards/e/ErebossTitan.java
+++ b/Mage.Sets/src/mage/cards/e/ErebossTitan.java
@@ -58,7 +58,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ErebossTitan extends CardImpl {
+public final class ErebossTitan extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/e/ErgRaiders.java b/Mage.Sets/src/mage/cards/e/ErgRaiders.java
index 1ac5bdd1242..1291c4ab889 100644
--- a/Mage.Sets/src/mage/cards/e/ErgRaiders.java
+++ b/Mage.Sets/src/mage/cards/e/ErgRaiders.java
@@ -50,7 +50,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
* @author LoneFox
*
*/
-public class ErgRaiders extends CardImpl {
+public final class ErgRaiders extends CardImpl {
public ErgRaiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java b/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java
index 7a9d554974a..7698e245ef1 100644
--- a/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java
+++ b/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ErhnamDjinn extends CardImpl {
+public final class ErhnamDjinn extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/e/EronTheRelentless.java b/Mage.Sets/src/mage/cards/e/EronTheRelentless.java
index eaf8e92149a..11c740041e1 100644
--- a/Mage.Sets/src/mage/cards/e/EronTheRelentless.java
+++ b/Mage.Sets/src/mage/cards/e/EronTheRelentless.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author shieldal
*/
-public class EronTheRelentless extends CardImpl {
+public final class EronTheRelentless extends CardImpl {
public EronTheRelentless(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/Erosion.java b/Mage.Sets/src/mage/cards/e/Erosion.java
index 69e281c955f..dba9032e2c0 100644
--- a/Mage.Sets/src/mage/cards/e/Erosion.java
+++ b/Mage.Sets/src/mage/cards/e/Erosion.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox & L_J
*/
-public class Erosion extends CardImpl {
+public final class Erosion extends CardImpl {
public Erosion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ErrandOfDuty.java b/Mage.Sets/src/mage/cards/e/ErrandOfDuty.java
index 764284694d8..d3b70bd0d59 100644
--- a/Mage.Sets/src/mage/cards/e/ErrandOfDuty.java
+++ b/Mage.Sets/src/mage/cards/e/ErrandOfDuty.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.ErrandOfDutyKnightToken;
*
* @author L_J
*/
-public class ErrandOfDuty extends CardImpl {
+public final class ErrandOfDuty extends CardImpl {
public ErrandOfDuty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ErrantDoomsayers.java b/Mage.Sets/src/mage/cards/e/ErrantDoomsayers.java
index 23fa87e7935..56efdf7f8ed 100644
--- a/Mage.Sets/src/mage/cards/e/ErrantDoomsayers.java
+++ b/Mage.Sets/src/mage/cards/e/ErrantDoomsayers.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ErrantDoomsayers extends CardImpl {
+public final class ErrantDoomsayers extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with toughness 2 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/e/ErrantEphemeron.java b/Mage.Sets/src/mage/cards/e/ErrantEphemeron.java
index 93d258d6515..5e839581c4b 100644
--- a/Mage.Sets/src/mage/cards/e/ErrantEphemeron.java
+++ b/Mage.Sets/src/mage/cards/e/ErrantEphemeron.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ErrantEphemeron extends CardImpl {
+public final class ErrantEphemeron extends CardImpl {
public ErrantEphemeron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/Errantry.java b/Mage.Sets/src/mage/cards/e/Errantry.java
index aa86b5ff8eb..27e57344547 100644
--- a/Mage.Sets/src/mage/cards/e/Errantry.java
+++ b/Mage.Sets/src/mage/cards/e/Errantry.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*
*/
-public class Errantry extends CardImpl {
+public final class Errantry extends CardImpl {
public Errantry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ErraticExplosion.java b/Mage.Sets/src/mage/cards/e/ErraticExplosion.java
index f2a2f8afd90..32bede69183 100644
--- a/Mage.Sets/src/mage/cards/e/ErraticExplosion.java
+++ b/Mage.Sets/src/mage/cards/e/ErraticExplosion.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author nigelzor
*/
-public class ErraticExplosion extends CardImpl {
+public final class ErraticExplosion extends CardImpl {
public ErraticExplosion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ErraticMutation.java b/Mage.Sets/src/mage/cards/e/ErraticMutation.java
index f1fa29ca293..f3b5dbb5b58 100644
--- a/Mage.Sets/src/mage/cards/e/ErraticMutation.java
+++ b/Mage.Sets/src/mage/cards/e/ErraticMutation.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ErraticMutation extends CardImpl {
+public final class ErraticMutation extends CardImpl {
public ErraticMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ErraticPortal.java b/Mage.Sets/src/mage/cards/e/ErraticPortal.java
index a878d16abcb..6a7ccc5c876 100644
--- a/Mage.Sets/src/mage/cards/e/ErraticPortal.java
+++ b/Mage.Sets/src/mage/cards/e/ErraticPortal.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class ErraticPortal extends CardImpl {
+public final class ErraticPortal extends CardImpl {
public ErraticPortal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/e/ErsatzGnomes.java b/Mage.Sets/src/mage/cards/e/ErsatzGnomes.java
index bd15d44bf42..54cb5958cc8 100644
--- a/Mage.Sets/src/mage/cards/e/ErsatzGnomes.java
+++ b/Mage.Sets/src/mage/cards/e/ErsatzGnomes.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class ErsatzGnomes extends CardImpl {
+public final class ErsatzGnomes extends CardImpl {
public ErsatzGnomes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/e/ErtaiTheCorrupted.java b/Mage.Sets/src/mage/cards/e/ErtaiTheCorrupted.java
index 879d0833120..40ee15c4666 100644
--- a/Mage.Sets/src/mage/cards/e/ErtaiTheCorrupted.java
+++ b/Mage.Sets/src/mage/cards/e/ErtaiTheCorrupted.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class ErtaiTheCorrupted extends CardImpl {
+public final class ErtaiTheCorrupted extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a creature or enchantment");
diff --git a/Mage.Sets/src/mage/cards/e/ErtaiWizardAdept.java b/Mage.Sets/src/mage/cards/e/ErtaiWizardAdept.java
index 0a02c0c538f..94f635d37e1 100644
--- a/Mage.Sets/src/mage/cards/e/ErtaiWizardAdept.java
+++ b/Mage.Sets/src/mage/cards/e/ErtaiWizardAdept.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class ErtaiWizardAdept extends CardImpl {
+public final class ErtaiWizardAdept extends CardImpl {
public ErtaiWizardAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ErtaisTrickery.java b/Mage.Sets/src/mage/cards/e/ErtaisTrickery.java
index ea0b655c622..a15ae840894 100644
--- a/Mage.Sets/src/mage/cards/e/ErtaisTrickery.java
+++ b/Mage.Sets/src/mage/cards/e/ErtaisTrickery.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class ErtaisTrickery extends CardImpl {
+public final class ErtaisTrickery extends CardImpl {
public ErtaisTrickery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EruptingDreadwolf.java b/Mage.Sets/src/mage/cards/e/EruptingDreadwolf.java
index bea742bf9c5..24298ee58c6 100644
--- a/Mage.Sets/src/mage/cards/e/EruptingDreadwolf.java
+++ b/Mage.Sets/src/mage/cards/e/EruptingDreadwolf.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class EruptingDreadwolf extends CardImpl {
+public final class EruptingDreadwolf extends CardImpl {
public EruptingDreadwolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/e/EscapeArtist.java b/Mage.Sets/src/mage/cards/e/EscapeArtist.java
index cd2abe99e2b..b3693d244c0 100644
--- a/Mage.Sets/src/mage/cards/e/EscapeArtist.java
+++ b/Mage.Sets/src/mage/cards/e/EscapeArtist.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author cbt33
*/
-public class EscapeArtist extends CardImpl {
+public final class EscapeArtist extends CardImpl {
public EscapeArtist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EscapePod.java b/Mage.Sets/src/mage/cards/e/EscapePod.java
index e72eaa45c9d..514f075b91a 100644
--- a/Mage.Sets/src/mage/cards/e/EscapePod.java
+++ b/Mage.Sets/src/mage/cards/e/EscapePod.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class EscapePod extends CardImpl {
+public final class EscapePod extends CardImpl {
public EscapePod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EscapeRoutes.java b/Mage.Sets/src/mage/cards/e/EscapeRoutes.java
index 6dd4b40e038..1bee608befb 100644
--- a/Mage.Sets/src/mage/cards/e/EscapeRoutes.java
+++ b/Mage.Sets/src/mage/cards/e/EscapeRoutes.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class EscapeRoutes extends CardImpl {
+public final class EscapeRoutes extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white or black creature you control");
diff --git a/Mage.Sets/src/mage/cards/e/EscapedNull.java b/Mage.Sets/src/mage/cards/e/EscapedNull.java
index 2d4aa41af31..725784b1169 100644
--- a/Mage.Sets/src/mage/cards/e/EscapedNull.java
+++ b/Mage.Sets/src/mage/cards/e/EscapedNull.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class EscapedNull extends CardImpl {
+public final class EscapedNull extends CardImpl {
public EscapedNull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EsperBattlemage.java b/Mage.Sets/src/mage/cards/e/EsperBattlemage.java
index d566492cc84..ece0625989a 100644
--- a/Mage.Sets/src/mage/cards/e/EsperBattlemage.java
+++ b/Mage.Sets/src/mage/cards/e/EsperBattlemage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class EsperBattlemage extends CardImpl {
+public final class EsperBattlemage extends CardImpl {
public EsperBattlemage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EsperCharm.java b/Mage.Sets/src/mage/cards/e/EsperCharm.java
index 78e18b9978e..86be86cab72 100644
--- a/Mage.Sets/src/mage/cards/e/EsperCharm.java
+++ b/Mage.Sets/src/mage/cards/e/EsperCharm.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author North
*/
-public class EsperCharm extends CardImpl {
+public final class EsperCharm extends CardImpl {
public EsperCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EsperCormorants.java b/Mage.Sets/src/mage/cards/e/EsperCormorants.java
index e300552e4c3..83e6f65c1a8 100644
--- a/Mage.Sets/src/mage/cards/e/EsperCormorants.java
+++ b/Mage.Sets/src/mage/cards/e/EsperCormorants.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class EsperCormorants extends CardImpl {
+public final class EsperCormorants extends CardImpl {
public EsperCormorants(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EsperPanorama.java b/Mage.Sets/src/mage/cards/e/EsperPanorama.java
index e7a342f5b95..ad4a51ad35c 100644
--- a/Mage.Sets/src/mage/cards/e/EsperPanorama.java
+++ b/Mage.Sets/src/mage/cards/e/EsperPanorama.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class EsperPanorama extends CardImpl {
+public final class EsperPanorama extends CardImpl {
private static final FilterCard filter = new FilterCard("a basic Plains, Island, or Swamp");
diff --git a/Mage.Sets/src/mage/cards/e/EsperSojourners.java b/Mage.Sets/src/mage/cards/e/EsperSojourners.java
index 1ea1b0aff34..f4dde57cf9b 100644
--- a/Mage.Sets/src/mage/cards/e/EsperSojourners.java
+++ b/Mage.Sets/src/mage/cards/e/EsperSojourners.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class EsperSojourners extends CardImpl {
+public final class EsperSojourners extends CardImpl {
public EsperSojourners(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EsperStormblade.java b/Mage.Sets/src/mage/cards/e/EsperStormblade.java
index 02161210100..4e39a6bb6bb 100644
--- a/Mage.Sets/src/mage/cards/e/EsperStormblade.java
+++ b/Mage.Sets/src/mage/cards/e/EsperStormblade.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author jeffwadsworth
*/
-public class EsperStormblade extends CardImpl {
+public final class EsperStormblade extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another multicolor permanent");
diff --git a/Mage.Sets/src/mage/cards/e/Esperzoa.java b/Mage.Sets/src/mage/cards/e/Esperzoa.java
index 202f46f7c4d..4bfab2f1746 100644
--- a/Mage.Sets/src/mage/cards/e/Esperzoa.java
+++ b/Mage.Sets/src/mage/cards/e/Esperzoa.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author Loki
*/
-public class Esperzoa extends CardImpl {
+public final class Esperzoa extends CardImpl {
public Esperzoa (UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/e/EssenceBacklash.java b/Mage.Sets/src/mage/cards/e/EssenceBacklash.java
index 5672d69a605..14bb974edd1 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceBacklash.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceBacklash.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class EssenceBacklash extends CardImpl {
+public final class EssenceBacklash extends CardImpl {
public EssenceBacklash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceBottle.java b/Mage.Sets/src/mage/cards/e/EssenceBottle.java
index d1d00786864..79645dbefdf 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceBottle.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceBottle.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author North
*/
-public class EssenceBottle extends CardImpl {
+public final class EssenceBottle extends CardImpl {
public EssenceBottle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceDepleter.java b/Mage.Sets/src/mage/cards/e/EssenceDepleter.java
index 4ae9f468efe..728e58d7e04 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceDepleter.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceDepleter.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class EssenceDepleter extends CardImpl {
+public final class EssenceDepleter extends CardImpl {
public EssenceDepleter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceDrain.java b/Mage.Sets/src/mage/cards/e/EssenceDrain.java
index 9b322850b44..32ef5a71011 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceDrain.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceDrain.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class EssenceDrain extends CardImpl {
+public final class EssenceDrain extends CardImpl {
public EssenceDrain (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceExtraction.java b/Mage.Sets/src/mage/cards/e/EssenceExtraction.java
index 85f37a72152..0b53530ac50 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceExtraction.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceExtraction.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class EssenceExtraction extends CardImpl {
+public final class EssenceExtraction extends CardImpl {
public EssenceExtraction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceFeed.java b/Mage.Sets/src/mage/cards/e/EssenceFeed.java
index b6dc7aa3b85..4e528c11538 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceFeed.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceFeed.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class EssenceFeed extends CardImpl {
+public final class EssenceFeed extends CardImpl {
public EssenceFeed (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceFilter.java b/Mage.Sets/src/mage/cards/e/EssenceFilter.java
index 173ec2d5c3c..d199844d5d9 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceFilter.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceFilter.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2 & L_J
*/
-public class EssenceFilter extends CardImpl {
+public final class EssenceFilter extends CardImpl {
public EssenceFilter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceFlare.java b/Mage.Sets/src/mage/cards/e/EssenceFlare.java
index 9ee6f7246db..4732dea03f6 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceFlare.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceFlare.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox & L_J
*/
-public class EssenceFlare extends CardImpl {
+public final class EssenceFlare extends CardImpl {
public EssenceFlare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceFlux.java b/Mage.Sets/src/mage/cards/e/EssenceFlux.java
index d96176c17bd..03fd06156ec 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceFlux.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceFlux.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class EssenceFlux extends CardImpl {
+public final class EssenceFlux extends CardImpl {
public EssenceFlux(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceFracture.java b/Mage.Sets/src/mage/cards/e/EssenceFracture.java
index 6574bd871ac..e12177b0067 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceFracture.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceFracture.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class EssenceFracture extends CardImpl {
+public final class EssenceFracture extends CardImpl {
public EssenceFracture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceHarvest.java b/Mage.Sets/src/mage/cards/e/EssenceHarvest.java
index 12cf6841320..9410a721f5e 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceHarvest.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceHarvest.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class EssenceHarvest extends CardImpl {
+public final class EssenceHarvest extends CardImpl {
public EssenceHarvest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceOfTheWild.java b/Mage.Sets/src/mage/cards/e/EssenceOfTheWild.java
index d3deaf97963..dedb5a531b4 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceOfTheWild.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceOfTheWild.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward
*/
-public class EssenceOfTheWild extends CardImpl {
+public final class EssenceOfTheWild extends CardImpl {
public EssenceOfTheWild(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceScatter.java b/Mage.Sets/src/mage/cards/e/EssenceScatter.java
index 653ffbe8fdb..865fa45366b 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceScatter.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceScatter.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class EssenceScatter extends CardImpl {
+public final class EssenceScatter extends CardImpl {
public EssenceScatter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceSliver.java b/Mage.Sets/src/mage/cards/e/EssenceSliver.java
index 2ed752e73a7..08616a58147 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceSliver.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceSliver.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author cbt33
*/
-public class EssenceSliver extends CardImpl {
+public final class EssenceSliver extends CardImpl {
public EssenceSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EssenceWarden.java b/Mage.Sets/src/mage/cards/e/EssenceWarden.java
index 7b3474fc4bc..bba01b805b2 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceWarden.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceWarden.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class EssenceWarden extends CardImpl {
+public final class EssenceWarden extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java b/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java
index f48ef2ec728..ac65dcc0053 100644
--- a/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java
+++ b/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java
@@ -32,6 +32,7 @@ import java.util.Set;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -41,8 +42,8 @@ import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.FilterCard;
@@ -56,7 +57,7 @@ import mage.target.TargetCard;
*
* @author ciaccona007 & L_J
*/
-public class EtaliPrimalStorm extends CardImpl {
+public final class EtaliPrimalStorm extends CardImpl {
public EtaliPrimalStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
@@ -127,7 +128,7 @@ class EtaliPrimalStormEffect extends OneShotEffect {
cardsToCast.addAll(currentExiledCards);
boolean alreadyCast = false;
while (!cardsToCast.isEmpty()) {
- if (!controller.chooseUse(Outcome.PlayForFree, "Cast a" + (alreadyCast ? "nother" : "" ) + " card exiled with " + sourceObject.getLogName() + " without paying its mana cost?", source, game)) {
+ if (!controller.chooseUse(Outcome.PlayForFree, "Cast a" + (alreadyCast ? "nother" : "") + " card exiled with " + sourceObject.getLogName() + " without paying its mana cost?", source, game)) {
break;
}
TargetCard targetCard = new TargetCard(1, Zone.EXILED, new FilterCard("nonland card to cast for free"));
@@ -135,7 +136,7 @@ class EtaliPrimalStormEffect extends OneShotEffect {
alreadyCast = true;
Card card = game.getCard(targetCard.getFirstTarget());
if (card != null) {
- if (controller.cast(card.getSpellAbility(), game, true)) {
+ if (controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
cardsToCast.remove(card);
} else {
game.informPlayer(controller, "You're not able to cast " + card.getIdName() + " or you canceled the casting.");
diff --git a/Mage.Sets/src/mage/cards/e/EtchedChampion.java b/Mage.Sets/src/mage/cards/e/EtchedChampion.java
index 6828dd283e4..c22ba5a3b7e 100644
--- a/Mage.Sets/src/mage/cards/e/EtchedChampion.java
+++ b/Mage.Sets/src/mage/cards/e/EtchedChampion.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class EtchedChampion extends CardImpl {
+public final class EtchedChampion extends CardImpl {
private static final String ruleText = "Metalcraft — Etched Champion has protection from all colors as long as you control three or more artifacts";
private static final FilterCard filter = new FilterCard("all colors");
diff --git a/Mage.Sets/src/mage/cards/e/EtchedMonstrosity.java b/Mage.Sets/src/mage/cards/e/EtchedMonstrosity.java
index b3a599b5098..d69f7547e4c 100644
--- a/Mage.Sets/src/mage/cards/e/EtchedMonstrosity.java
+++ b/Mage.Sets/src/mage/cards/e/EtchedMonstrosity.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class EtchedMonstrosity extends CardImpl {
+public final class EtchedMonstrosity extends CardImpl {
public EtchedMonstrosity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/e/EtchedOracle.java b/Mage.Sets/src/mage/cards/e/EtchedOracle.java
index b72c87b13b0..d6039f1bccc 100644
--- a/Mage.Sets/src/mage/cards/e/EtchedOracle.java
+++ b/Mage.Sets/src/mage/cards/e/EtchedOracle.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class EtchedOracle extends CardImpl {
+public final class EtchedOracle extends CardImpl {
public EtchedOracle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/e/EternalDominion.java b/Mage.Sets/src/mage/cards/e/EternalDominion.java
index 65c5ce05a3e..d794254aa75 100644
--- a/Mage.Sets/src/mage/cards/e/EternalDominion.java
+++ b/Mage.Sets/src/mage/cards/e/EternalDominion.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
* @author jeffwadsworth
*
*/
-public class EternalDominion extends CardImpl {
+public final class EternalDominion extends CardImpl {
public EternalDominion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{7}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EternalDragon.java b/Mage.Sets/src/mage/cards/e/EternalDragon.java
index 525fba0dfec..66b892f5356 100644
--- a/Mage.Sets/src/mage/cards/e/EternalDragon.java
+++ b/Mage.Sets/src/mage/cards/e/EternalDragon.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class EternalDragon extends CardImpl {
+public final class EternalDragon extends CardImpl {
public EternalDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EternalFlame.java b/Mage.Sets/src/mage/cards/e/EternalFlame.java
index be9df520eb4..d778780acc4 100644
--- a/Mage.Sets/src/mage/cards/e/EternalFlame.java
+++ b/Mage.Sets/src/mage/cards/e/EternalFlame.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author L_J
*/
-public class EternalFlame extends CardImpl {
+public final class EternalFlame extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Mountains you control");
diff --git a/Mage.Sets/src/mage/cards/e/EternalOfHarshTruths.java b/Mage.Sets/src/mage/cards/e/EternalOfHarshTruths.java
index dad55a9d3c0..c703a72bb9c 100644
--- a/Mage.Sets/src/mage/cards/e/EternalOfHarshTruths.java
+++ b/Mage.Sets/src/mage/cards/e/EternalOfHarshTruths.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class EternalOfHarshTruths extends CardImpl {
+public final class EternalOfHarshTruths extends CardImpl {
public EternalOfHarshTruths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EternalScourge.java b/Mage.Sets/src/mage/cards/e/EternalScourge.java
index 2bfc5855474..4c7ea8a6625 100644
--- a/Mage.Sets/src/mage/cards/e/EternalScourge.java
+++ b/Mage.Sets/src/mage/cards/e/EternalScourge.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes
*/
-public class EternalScourge extends CardImpl {
+public final class EternalScourge extends CardImpl {
public EternalScourge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/e/EternalThirst.java b/Mage.Sets/src/mage/cards/e/EternalThirst.java
index a4c95f58e51..723b8fb77e4 100644
--- a/Mage.Sets/src/mage/cards/e/EternalThirst.java
+++ b/Mage.Sets/src/mage/cards/e/EternalThirst.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class EternalThirst extends CardImpl {
+public final class EternalThirst extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EternalWarrior.java b/Mage.Sets/src/mage/cards/e/EternalWarrior.java
index 4d09e9f7dc8..f97a3381b46 100644
--- a/Mage.Sets/src/mage/cards/e/EternalWarrior.java
+++ b/Mage.Sets/src/mage/cards/e/EternalWarrior.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author icetc
*/
-public class EternalWarrior extends CardImpl {
+public final class EternalWarrior extends CardImpl {
public EternalWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EternalWitness.java b/Mage.Sets/src/mage/cards/e/EternalWitness.java
index 84dfb1a9f54..662ce5a66fb 100644
--- a/Mage.Sets/src/mage/cards/e/EternalWitness.java
+++ b/Mage.Sets/src/mage/cards/e/EternalWitness.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jonubuu
*/
-public class EternalWitness extends CardImpl {
+public final class EternalWitness extends CardImpl {
public EternalWitness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EternitySnare.java b/Mage.Sets/src/mage/cards/e/EternitySnare.java
index a008d5d97a0..1fad7f529c4 100644
--- a/Mage.Sets/src/mage/cards/e/EternitySnare.java
+++ b/Mage.Sets/src/mage/cards/e/EternitySnare.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class EternitySnare extends CardImpl {
+public final class EternitySnare extends CardImpl {
public EternitySnare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EternityVessel.java b/Mage.Sets/src/mage/cards/e/EternityVessel.java
index 88c1259dc9f..fe887b9fa9d 100644
--- a/Mage.Sets/src/mage/cards/e/EternityVessel.java
+++ b/Mage.Sets/src/mage/cards/e/EternityVessel.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class EternityVessel extends CardImpl {
+public final class EternityVessel extends CardImpl {
public EternityVessel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/e/EthercasteKnight.java b/Mage.Sets/src/mage/cards/e/EthercasteKnight.java
index 0caf2c4f05f..8159f55ab6f 100644
--- a/Mage.Sets/src/mage/cards/e/EthercasteKnight.java
+++ b/Mage.Sets/src/mage/cards/e/EthercasteKnight.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class EthercasteKnight extends CardImpl {
+public final class EthercasteKnight extends CardImpl {
public EthercasteKnight (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EtherealAmbush.java b/Mage.Sets/src/mage/cards/e/EtherealAmbush.java
index 37066cbb9bc..5e2f19e34a0 100644
--- a/Mage.Sets/src/mage/cards/e/EtherealAmbush.java
+++ b/Mage.Sets/src/mage/cards/e/EtherealAmbush.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class EtherealAmbush extends CardImpl {
+public final class EtherealAmbush extends CardImpl {
public EtherealAmbush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EtherealArmor.java b/Mage.Sets/src/mage/cards/e/EtherealArmor.java
index 67328cead29..6e3fdc9c058 100644
--- a/Mage.Sets/src/mage/cards/e/EtherealArmor.java
+++ b/Mage.Sets/src/mage/cards/e/EtherealArmor.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EtherealArmor extends CardImpl {
+public final class EtherealArmor extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("enchantment you control");
diff --git a/Mage.Sets/src/mage/cards/e/EtherealChampion.java b/Mage.Sets/src/mage/cards/e/EtherealChampion.java
index 8977b176e02..edeaefe1a35 100644
--- a/Mage.Sets/src/mage/cards/e/EtherealChampion.java
+++ b/Mage.Sets/src/mage/cards/e/EtherealChampion.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class EtherealChampion extends CardImpl {
+public final class EtherealChampion extends CardImpl {
public EtherealChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EtherealGuidance.java b/Mage.Sets/src/mage/cards/e/EtherealGuidance.java
index 0c395d1abbf..44ddf9ba872 100644
--- a/Mage.Sets/src/mage/cards/e/EtherealGuidance.java
+++ b/Mage.Sets/src/mage/cards/e/EtherealGuidance.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author fireshoes
*/
-public class EtherealGuidance extends CardImpl {
+public final class EtherealGuidance extends CardImpl {
public EtherealGuidance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EtherealHaze.java b/Mage.Sets/src/mage/cards/e/EtherealHaze.java
index e6175ceeba6..436a7171e22 100644
--- a/Mage.Sets/src/mage/cards/e/EtherealHaze.java
+++ b/Mage.Sets/src/mage/cards/e/EtherealHaze.java
@@ -42,7 +42,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX
*/
-public class EtherealHaze extends CardImpl {
+public final class EtherealHaze extends CardImpl {
public EtherealHaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EtherealUsher.java b/Mage.Sets/src/mage/cards/e/EtherealUsher.java
index 90d9ce91672..bebe7da620f 100644
--- a/Mage.Sets/src/mage/cards/e/EtherealUsher.java
+++ b/Mage.Sets/src/mage/cards/e/EtherealUsher.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jonubuu
*/
-public class EtherealUsher extends CardImpl {
+public final class EtherealUsher extends CardImpl {
public EtherealUsher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EtherealWhiskergill.java b/Mage.Sets/src/mage/cards/e/EtherealWhiskergill.java
index 20dbd5bbe43..5f27898befc 100644
--- a/Mage.Sets/src/mage/cards/e/EtherealWhiskergill.java
+++ b/Mage.Sets/src/mage/cards/e/EtherealWhiskergill.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class EtherealWhiskergill extends CardImpl {
+public final class EtherealWhiskergill extends CardImpl {
public EtherealWhiskergill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EtheriumAbomination.java b/Mage.Sets/src/mage/cards/e/EtheriumAbomination.java
index ebff0f28540..3cd4a4ed28f 100644
--- a/Mage.Sets/src/mage/cards/e/EtheriumAbomination.java
+++ b/Mage.Sets/src/mage/cards/e/EtheriumAbomination.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class EtheriumAbomination extends CardImpl {
+public final class EtheriumAbomination extends CardImpl {
public EtheriumAbomination (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EtheriumAstrolabe.java b/Mage.Sets/src/mage/cards/e/EtheriumAstrolabe.java
index 930e6404f2e..07f92ede617 100644
--- a/Mage.Sets/src/mage/cards/e/EtheriumAstrolabe.java
+++ b/Mage.Sets/src/mage/cards/e/EtheriumAstrolabe.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class EtheriumAstrolabe extends CardImpl {
+public final class EtheriumAstrolabe extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
static{
diff --git a/Mage.Sets/src/mage/cards/e/EtheriumHornSorcerer.java b/Mage.Sets/src/mage/cards/e/EtheriumHornSorcerer.java
index e9c2ccaf05f..d97f823ae14 100644
--- a/Mage.Sets/src/mage/cards/e/EtheriumHornSorcerer.java
+++ b/Mage.Sets/src/mage/cards/e/EtheriumHornSorcerer.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class EtheriumHornSorcerer extends CardImpl {
+public final class EtheriumHornSorcerer extends CardImpl {
public EtheriumHornSorcerer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EtheriumSculptor.java b/Mage.Sets/src/mage/cards/e/EtheriumSculptor.java
index 4f028723ffb..f4dc50f9098 100644
--- a/Mage.Sets/src/mage/cards/e/EtheriumSculptor.java
+++ b/Mage.Sets/src/mage/cards/e/EtheriumSculptor.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author North
*/
-public class EtheriumSculptor extends CardImpl {
+public final class EtheriumSculptor extends CardImpl {
private static final FilterCard filter = new FilterCard("Artifact spells");
static {
filter.add(new CardTypePredicate(CardType.ARTIFACT));
diff --git a/Mage.Sets/src/mage/cards/e/EtherswornAdjudicator.java b/Mage.Sets/src/mage/cards/e/EtherswornAdjudicator.java
index efa55606d58..429be3c7257 100644
--- a/Mage.Sets/src/mage/cards/e/EtherswornAdjudicator.java
+++ b/Mage.Sets/src/mage/cards/e/EtherswornAdjudicator.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class EtherswornAdjudicator extends CardImpl {
+public final class EtherswornAdjudicator extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or enchantment");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EtherswornCanonist.java b/Mage.Sets/src/mage/cards/e/EtherswornCanonist.java
index 988ea9719f6..4ad121bc653 100644
--- a/Mage.Sets/src/mage/cards/e/EtherswornCanonist.java
+++ b/Mage.Sets/src/mage/cards/e/EtherswornCanonist.java
@@ -48,7 +48,7 @@ import mage.watchers.Watcher;
*
* @author Plopman
*/
-public class EtherswornCanonist extends CardImpl {
+public final class EtherswornCanonist extends CardImpl {
public EtherswornCanonist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EtherswornShieldmage.java b/Mage.Sets/src/mage/cards/e/EtherswornShieldmage.java
index 644a8dd6057..7223649933e 100644
--- a/Mage.Sets/src/mage/cards/e/EtherswornShieldmage.java
+++ b/Mage.Sets/src/mage/cards/e/EtherswornShieldmage.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author jeffwadsworth
*/
-public class EtherswornShieldmage extends CardImpl {
+public final class EtherswornShieldmage extends CardImpl {
final private static FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creatures");
diff --git a/Mage.Sets/src/mage/cards/e/EtherwroughtPage.java b/Mage.Sets/src/mage/cards/e/EtherwroughtPage.java
index 89e97b4a084..acf97d913a4 100644
--- a/Mage.Sets/src/mage/cards/e/EtherwroughtPage.java
+++ b/Mage.Sets/src/mage/cards/e/EtherwroughtPage.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class EtherwroughtPage extends CardImpl {
+public final class EtherwroughtPage extends CardImpl {
public EtherwroughtPage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EunuchsIntrigues.java b/Mage.Sets/src/mage/cards/e/EunuchsIntrigues.java
index 7592c517448..a366030b796 100644
--- a/Mage.Sets/src/mage/cards/e/EunuchsIntrigues.java
+++ b/Mage.Sets/src/mage/cards/e/EunuchsIntrigues.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801 & L_J
*/
-public class EunuchsIntrigues extends CardImpl {
+public final class EunuchsIntrigues extends CardImpl {
public EunuchsIntrigues(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/Eureka.java b/Mage.Sets/src/mage/cards/e/Eureka.java
index 54a15765c6f..06576ef6cfb 100644
--- a/Mage.Sets/src/mage/cards/e/Eureka.java
+++ b/Mage.Sets/src/mage/cards/e/Eureka.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class Eureka extends CardImpl {
+public final class Eureka extends CardImpl {
public Eureka(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/Evacuation.java b/Mage.Sets/src/mage/cards/e/Evacuation.java
index 4524fe7cb4f..f88c40f3d40 100644
--- a/Mage.Sets/src/mage/cards/e/Evacuation.java
+++ b/Mage.Sets/src/mage/cards/e/Evacuation.java
@@ -38,7 +38,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author Plopman
*/
-public class Evacuation extends CardImpl {
+public final class Evacuation extends CardImpl {
public Evacuation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EvanescentIntellect.java b/Mage.Sets/src/mage/cards/e/EvanescentIntellect.java
index 3acb479eebb..fbbd1b60c34 100644
--- a/Mage.Sets/src/mage/cards/e/EvanescentIntellect.java
+++ b/Mage.Sets/src/mage/cards/e/EvanescentIntellect.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EvanescentIntellect extends CardImpl {
+public final class EvanescentIntellect extends CardImpl {
public EvanescentIntellect(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EvangelOfHeliod.java b/Mage.Sets/src/mage/cards/e/EvangelOfHeliod.java
index 84dc8c21e84..5c15d5aefab 100644
--- a/Mage.Sets/src/mage/cards/e/EvangelOfHeliod.java
+++ b/Mage.Sets/src/mage/cards/e/EvangelOfHeliod.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author LevelX2
*/
-public class EvangelOfHeliod extends CardImpl {
+public final class EvangelOfHeliod extends CardImpl {
public EvangelOfHeliod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/Evangelize.java b/Mage.Sets/src/mage/cards/e/Evangelize.java
index c9209a99c3c..50f36dbc0d8 100644
--- a/Mage.Sets/src/mage/cards/e/Evangelize.java
+++ b/Mage.Sets/src/mage/cards/e/Evangelize.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetOpponentsChoicePermanent;
*
* @author spjspj
*/
-public class Evangelize extends CardImpl {
+public final class Evangelize extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/e/Evaporate.java b/Mage.Sets/src/mage/cards/e/Evaporate.java
index d4550efe57f..60cb07dc643 100644
--- a/Mage.Sets/src/mage/cards/e/Evaporate.java
+++ b/Mage.Sets/src/mage/cards/e/Evaporate.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class Evaporate extends CardImpl {
+public final class Evaporate extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white and/or blue creature");
diff --git a/Mage.Sets/src/mage/cards/e/EvasiveAction.java b/Mage.Sets/src/mage/cards/e/EvasiveAction.java
index 87773fdc233..e4fb2fdf5f3 100644
--- a/Mage.Sets/src/mage/cards/e/EvasiveAction.java
+++ b/Mage.Sets/src/mage/cards/e/EvasiveAction.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author FenrisulfrX
*/
-public class EvasiveAction extends CardImpl {
+public final class EvasiveAction extends CardImpl {
public EvasiveAction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EvenTheOdds.java b/Mage.Sets/src/mage/cards/e/EvenTheOdds.java
index 125a314497f..223b69b3812 100644
--- a/Mage.Sets/src/mage/cards/e/EvenTheOdds.java
+++ b/Mage.Sets/src/mage/cards/e/EvenTheOdds.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author LevelX2
*/
-public class EvenTheOdds extends CardImpl {
+public final class EvenTheOdds extends CardImpl {
public EvenTheOdds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EverAfter.java b/Mage.Sets/src/mage/cards/e/EverAfter.java
index 1acc550ef61..f6339c4a993 100644
--- a/Mage.Sets/src/mage/cards/e/EverAfter.java
+++ b/Mage.Sets/src/mage/cards/e/EverAfter.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class EverAfter extends CardImpl {
+public final class EverAfter extends CardImpl {
public EverAfter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EverbarkShaman.java b/Mage.Sets/src/mage/cards/e/EverbarkShaman.java
index 8195477bdc2..a0ab187e2d7 100644
--- a/Mage.Sets/src/mage/cards/e/EverbarkShaman.java
+++ b/Mage.Sets/src/mage/cards/e/EverbarkShaman.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class EverbarkShaman extends CardImpl {
+public final class EverbarkShaman extends CardImpl {
private static final FilterCard filterForest = new FilterCard("Forest");
private static final FilterCard filterTreefolk = new FilterCard("Treefolk from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/e/EverdawnChampion.java b/Mage.Sets/src/mage/cards/e/EverdawnChampion.java
index 06beb799129..cffc2cf1f44 100644
--- a/Mage.Sets/src/mage/cards/e/EverdawnChampion.java
+++ b/Mage.Sets/src/mage/cards/e/EverdawnChampion.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent;
*
* @author L_J
*/
-public class EverdawnChampion extends CardImpl {
+public final class EverdawnChampion extends CardImpl {
public EverdawnChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EverflameEidolon.java b/Mage.Sets/src/mage/cards/e/EverflameEidolon.java
index 978b5ca8bb1..ff4f480792d 100644
--- a/Mage.Sets/src/mage/cards/e/EverflameEidolon.java
+++ b/Mage.Sets/src/mage/cards/e/EverflameEidolon.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Quercitron
*/
-public class EverflameEidolon extends CardImpl {
+public final class EverflameEidolon extends CardImpl {
public EverflameEidolon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/EverflowingChalice.java b/Mage.Sets/src/mage/cards/e/EverflowingChalice.java
index be0340a49df..82e211a0bdb 100644
--- a/Mage.Sets/src/mage/cards/e/EverflowingChalice.java
+++ b/Mage.Sets/src/mage/cards/e/EverflowingChalice.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author BetaSteward_at_googlemail.com, North
*/
-public class EverflowingChalice extends CardImpl {
+public final class EverflowingChalice extends CardImpl {
protected static final String rule = "Everflowing Chalice enters the battlefield with a charge counter on it for each time it was kicked.";
diff --git a/Mage.Sets/src/mage/cards/e/Everglades.java b/Mage.Sets/src/mage/cards/e/Everglades.java
index f9db4329ba0..4a62692bb7c 100644
--- a/Mage.Sets/src/mage/cards/e/Everglades.java
+++ b/Mage.Sets/src/mage/cards/e/Everglades.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class Everglades extends CardImpl {
+public final class Everglades extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Swamp");
diff --git a/Mage.Sets/src/mage/cards/e/EvergloveCourier.java b/Mage.Sets/src/mage/cards/e/EvergloveCourier.java
index 7afe657fe83..b2c0761e3bf 100644
--- a/Mage.Sets/src/mage/cards/e/EvergloveCourier.java
+++ b/Mage.Sets/src/mage/cards/e/EvergloveCourier.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class EvergloveCourier extends CardImpl {
+public final class EvergloveCourier extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creature");
diff --git a/Mage.Sets/src/mage/cards/e/EverlastingTorment.java b/Mage.Sets/src/mage/cards/e/EverlastingTorment.java
index 322dffbe1a9..1d0fd95e279 100644
--- a/Mage.Sets/src/mage/cards/e/EverlastingTorment.java
+++ b/Mage.Sets/src/mage/cards/e/EverlastingTorment.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class EverlastingTorment extends CardImpl {
+public final class EverlastingTorment extends CardImpl {
public EverlastingTorment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/e/Evermind.java b/Mage.Sets/src/mage/cards/e/Evermind.java
index d6a084dc2c5..de878e419b2 100644
--- a/Mage.Sets/src/mage/cards/e/Evermind.java
+++ b/Mage.Sets/src/mage/cards/e/Evermind.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class Evermind extends CardImpl {
+public final class Evermind extends CardImpl {
public Evermind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"");
diff --git a/Mage.Sets/src/mage/cards/e/EvernightShade.java b/Mage.Sets/src/mage/cards/e/EvernightShade.java
index 918b24fb10f..a9784de8ce5 100644
--- a/Mage.Sets/src/mage/cards/e/EvernightShade.java
+++ b/Mage.Sets/src/mage/cards/e/EvernightShade.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class EvernightShade extends CardImpl {
+public final class EvernightShade extends CardImpl {
public EvernightShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/Evershrike.java b/Mage.Sets/src/mage/cards/e/Evershrike.java
index 586d1b8a2ee..011af05f188 100644
--- a/Mage.Sets/src/mage/cards/e/Evershrike.java
+++ b/Mage.Sets/src/mage/cards/e/Evershrike.java
@@ -54,7 +54,7 @@ import mage.target.TargetCard;
/**
* @author jeffwadsworth
*/
-public class Evershrike extends CardImpl {
+public final class Evershrike extends CardImpl {
public Evershrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W/B}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/e/EvilEyeOfOrmsByGore.java b/Mage.Sets/src/mage/cards/e/EvilEyeOfOrmsByGore.java
index fe7773fee30..cef86621b67 100644
--- a/Mage.Sets/src/mage/cards/e/EvilEyeOfOrmsByGore.java
+++ b/Mage.Sets/src/mage/cards/e/EvilEyeOfOrmsByGore.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Quercitron
*/
-public class EvilEyeOfOrmsByGore extends CardImpl {
+public final class EvilEyeOfOrmsByGore extends CardImpl {
private static final FilterCreaturePermanent cantAttackFilter = new FilterCreaturePermanent("Non-Eye creatures you control");
private static final FilterCreaturePermanent cantBeBlockedByFilter = new FilterCreaturePermanent("except by Walls");
diff --git a/Mage.Sets/src/mage/cards/e/EvilEyeOfUrborg.java b/Mage.Sets/src/mage/cards/e/EvilEyeOfUrborg.java
index 01c15db6628..0bd7f4b6a1a 100644
--- a/Mage.Sets/src/mage/cards/e/EvilEyeOfUrborg.java
+++ b/Mage.Sets/src/mage/cards/e/EvilEyeOfUrborg.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class EvilEyeOfUrborg extends CardImpl {
+public final class EvilEyeOfUrborg extends CardImpl {
private static final FilterCreaturePermanent cantAttackFilter = new FilterCreaturePermanent("Non-Eye creatures you control");
diff --git a/Mage.Sets/src/mage/cards/e/EvilPresence.java b/Mage.Sets/src/mage/cards/e/EvilPresence.java
index 91574130db2..9c652d11350 100644
--- a/Mage.Sets/src/mage/cards/e/EvilPresence.java
+++ b/Mage.Sets/src/mage/cards/e/EvilPresence.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author North
*/
-public class EvilPresence extends CardImpl {
+public final class EvilPresence extends CardImpl {
public EvilPresence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EvilTwin.java b/Mage.Sets/src/mage/cards/e/EvilTwin.java
index ed81374d0ea..d1170d7a7ea 100644
--- a/Mage.Sets/src/mage/cards/e/EvilTwin.java
+++ b/Mage.Sets/src/mage/cards/e/EvilTwin.java
@@ -56,7 +56,7 @@ import mage.util.functions.ApplyToPermanent;
*
* @author BetaSteward
*/
-public class EvilTwin extends CardImpl {
+public final class EvilTwin extends CardImpl {
public EvilTwin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EvincarsJustice.java b/Mage.Sets/src/mage/cards/e/EvincarsJustice.java
index 8074f7cf7b9..286e38398ee 100644
--- a/Mage.Sets/src/mage/cards/e/EvincarsJustice.java
+++ b/Mage.Sets/src/mage/cards/e/EvincarsJustice.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class EvincarsJustice extends CardImpl {
+public final class EvincarsJustice extends CardImpl {
public EvincarsJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/Eviscerate.java b/Mage.Sets/src/mage/cards/e/Eviscerate.java
index 4e706d7a939..2823c5887e2 100644
--- a/Mage.Sets/src/mage/cards/e/Eviscerate.java
+++ b/Mage.Sets/src/mage/cards/e/Eviscerate.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Eviscerate extends CardImpl {
+public final class Eviscerate extends CardImpl {
public Eviscerate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/Eviscerator.java b/Mage.Sets/src/mage/cards/e/Eviscerator.java
index 1066d53b2cb..b8934675d05 100644
--- a/Mage.Sets/src/mage/cards/e/Eviscerator.java
+++ b/Mage.Sets/src/mage/cards/e/Eviscerator.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class Eviscerator extends CardImpl {
+public final class Eviscerator extends CardImpl {
public Eviscerator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EvolutionCharm.java b/Mage.Sets/src/mage/cards/e/EvolutionCharm.java
index 59d192d18df..4f10225cb7a 100644
--- a/Mage.Sets/src/mage/cards/e/EvolutionCharm.java
+++ b/Mage.Sets/src/mage/cards/e/EvolutionCharm.java
@@ -47,13 +47,13 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class EvolutionCharm extends CardImpl {
+public final class EvolutionCharm extends CardImpl {
public EvolutionCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
// Choose one - Search your library for a basic land card, reveal it, put it into your hand, then shuffle your library;
- this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true, true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true));
// or return target creature card from your graveyard to your hand;
Mode mode = new Mode();
diff --git a/Mage.Sets/src/mage/cards/e/EvolutionVat.java b/Mage.Sets/src/mage/cards/e/EvolutionVat.java
index b865855e423..199f029f46a 100644
--- a/Mage.Sets/src/mage/cards/e/EvolutionVat.java
+++ b/Mage.Sets/src/mage/cards/e/EvolutionVat.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class EvolutionVat extends CardImpl {
+public final class EvolutionVat extends CardImpl {
public EvolutionVat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/e/EvolutionaryEscalation.java b/Mage.Sets/src/mage/cards/e/EvolutionaryEscalation.java
index d20c9560633..e39bd92b750 100644
--- a/Mage.Sets/src/mage/cards/e/EvolutionaryEscalation.java
+++ b/Mage.Sets/src/mage/cards/e/EvolutionaryEscalation.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class EvolutionaryEscalation extends CardImpl {
+public final class EvolutionaryEscalation extends CardImpl {
private static final FilterCreaturePermanent filterOpponentCreature = new FilterCreaturePermanent("creature an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EvolutionaryLeap.java b/Mage.Sets/src/mage/cards/e/EvolutionaryLeap.java
index b0800dbbaba..63038eb0061 100644
--- a/Mage.Sets/src/mage/cards/e/EvolutionaryLeap.java
+++ b/Mage.Sets/src/mage/cards/e/EvolutionaryLeap.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class EvolutionaryLeap extends CardImpl {
+public final class EvolutionaryLeap extends CardImpl {
public EvolutionaryLeap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EvolvingWilds.java b/Mage.Sets/src/mage/cards/e/EvolvingWilds.java
index 13c09f8abda..39c82785be7 100644
--- a/Mage.Sets/src/mage/cards/e/EvolvingWilds.java
+++ b/Mage.Sets/src/mage/cards/e/EvolvingWilds.java
@@ -45,7 +45,7 @@ import mage.abilities.costs.common.SacrificeSourceCost;
*
* @author BetaSteward_at_googlemail.com
*/
-public class EvolvingWilds extends CardImpl {
+public final class EvolvingWilds extends CardImpl {
public EvolvingWilds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
@@ -53,7 +53,7 @@ public class EvolvingWilds extends CardImpl {
// {T}, Sacrifice Evolving Wilds: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(
Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/e/EvraHalcyonWitness.java b/Mage.Sets/src/mage/cards/e/EvraHalcyonWitness.java
index 7ac74b44aa4..2bb5f4295c5 100644
--- a/Mage.Sets/src/mage/cards/e/EvraHalcyonWitness.java
+++ b/Mage.Sets/src/mage/cards/e/EvraHalcyonWitness.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class EvraHalcyonWitness extends CardImpl {
+public final class EvraHalcyonWitness extends CardImpl {
public EvraHalcyonWitness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EwokAmbush.java b/Mage.Sets/src/mage/cards/e/EwokAmbush.java
index e7f8e4a4375..f132854692b 100644
--- a/Mage.Sets/src/mage/cards/e/EwokAmbush.java
+++ b/Mage.Sets/src/mage/cards/e/EwokAmbush.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class EwokAmbush extends CardImpl {
+public final class EwokAmbush extends CardImpl {
public EwokAmbush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EwokFiredancers.java b/Mage.Sets/src/mage/cards/e/EwokFiredancers.java
index 7cd5f291a42..4fbee258625 100644
--- a/Mage.Sets/src/mage/cards/e/EwokFiredancers.java
+++ b/Mage.Sets/src/mage/cards/e/EwokFiredancers.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class EwokFiredancers extends CardImpl {
+public final class EwokFiredancers extends CardImpl {
public EwokFiredancers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EwokVillage.java b/Mage.Sets/src/mage/cards/e/EwokVillage.java
index 0acc9e4f282..2c96fb2c3ae 100644
--- a/Mage.Sets/src/mage/cards/e/EwokVillage.java
+++ b/Mage.Sets/src/mage/cards/e/EwokVillage.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Styxo
*/
-public class EwokVillage extends CardImpl {
+public final class EwokVillage extends CardImpl {
public EwokVillage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/e/ExaltedAngel.java b/Mage.Sets/src/mage/cards/e/ExaltedAngel.java
index 738920ab3c6..a3064c28534 100644
--- a/Mage.Sets/src/mage/cards/e/ExaltedAngel.java
+++ b/Mage.Sets/src/mage/cards/e/ExaltedAngel.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ExaltedAngel extends CardImpl {
+public final class ExaltedAngel extends CardImpl {
public ExaltedAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ExaltedDragon.java b/Mage.Sets/src/mage/cards/e/ExaltedDragon.java
index 941f15b0e4c..0f1ab69ec38 100644
--- a/Mage.Sets/src/mage/cards/e/ExaltedDragon.java
+++ b/Mage.Sets/src/mage/cards/e/ExaltedDragon.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class ExaltedDragon extends CardImpl {
+public final class ExaltedDragon extends CardImpl {
public ExaltedDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ExavaRakdosBloodWitch.java b/Mage.Sets/src/mage/cards/e/ExavaRakdosBloodWitch.java
index 507a67b25c5..834181375d2 100644
--- a/Mage.Sets/src/mage/cards/e/ExavaRakdosBloodWitch.java
+++ b/Mage.Sets/src/mage/cards/e/ExavaRakdosBloodWitch.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author LevelX2
*/
-public class ExavaRakdosBloodWitch extends CardImpl {
+public final class ExavaRakdosBloodWitch extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/e/Excavation.java b/Mage.Sets/src/mage/cards/e/Excavation.java
index 64548bb255a..68853d9c904 100644
--- a/Mage.Sets/src/mage/cards/e/Excavation.java
+++ b/Mage.Sets/src/mage/cards/e/Excavation.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class Excavation extends CardImpl {
+public final class Excavation extends CardImpl {
public Excavation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ExcavationElephant.java b/Mage.Sets/src/mage/cards/e/ExcavationElephant.java
index e790add7163..31cb957b12a 100644
--- a/Mage.Sets/src/mage/cards/e/ExcavationElephant.java
+++ b/Mage.Sets/src/mage/cards/e/ExcavationElephant.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class ExcavationElephant extends CardImpl {
+public final class ExcavationElephant extends CardImpl {
public ExcavationElephant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/Excavator.java b/Mage.Sets/src/mage/cards/e/Excavator.java
index d06ee320858..f58a1a72397 100644
--- a/Mage.Sets/src/mage/cards/e/Excavator.java
+++ b/Mage.Sets/src/mage/cards/e/Excavator.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Excavator extends CardImpl {
+public final class Excavator extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("basic land");
static
diff --git a/Mage.Sets/src/mage/cards/e/Excise.java b/Mage.Sets/src/mage/cards/e/Excise.java
index e9220d5bb67..2ca5b21e1ab 100644
--- a/Mage.Sets/src/mage/cards/e/Excise.java
+++ b/Mage.Sets/src/mage/cards/e/Excise.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Excise extends CardImpl {
+public final class Excise extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creature");
static {
diff --git a/Mage.Sets/src/mage/cards/e/Exclude.java b/Mage.Sets/src/mage/cards/e/Exclude.java
index 67fc3dd8ec8..f974529d71d 100644
--- a/Mage.Sets/src/mage/cards/e/Exclude.java
+++ b/Mage.Sets/src/mage/cards/e/Exclude.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Exclude extends CardImpl {
+public final class Exclude extends CardImpl {
public Exclude(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ExclusionRitual.java b/Mage.Sets/src/mage/cards/e/ExclusionRitual.java
index c28714224d1..585c4eba361 100644
--- a/Mage.Sets/src/mage/cards/e/ExclusionRitual.java
+++ b/Mage.Sets/src/mage/cards/e/ExclusionRitual.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class ExclusionRitual extends CardImpl {
+public final class ExclusionRitual extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nonland permanent");
diff --git a/Mage.Sets/src/mage/cards/e/Excommunicate.java b/Mage.Sets/src/mage/cards/e/Excommunicate.java
index b785e5693d7..00146feec7b 100644
--- a/Mage.Sets/src/mage/cards/e/Excommunicate.java
+++ b/Mage.Sets/src/mage/cards/e/Excommunicate.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Excommunicate extends CardImpl {
+public final class Excommunicate extends CardImpl {
public Excommunicate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/Excoriate.java b/Mage.Sets/src/mage/cards/e/Excoriate.java
index 18fca88b2eb..717d2daa473 100644
--- a/Mage.Sets/src/mage/cards/e/Excoriate.java
+++ b/Mage.Sets/src/mage/cards/e/Excoriate.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Excoriate extends CardImpl {
+public final class Excoriate extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/e/Excruciator.java b/Mage.Sets/src/mage/cards/e/Excruciator.java
index dbfa7593d83..3a3c5813676 100644
--- a/Mage.Sets/src/mage/cards/e/Excruciator.java
+++ b/Mage.Sets/src/mage/cards/e/Excruciator.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class Excruciator extends CardImpl {
+public final class Excruciator extends CardImpl {
public Excruciator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/Execute.java b/Mage.Sets/src/mage/cards/e/Execute.java
index 31be239ccfa..d6163969a35 100644
--- a/Mage.Sets/src/mage/cards/e/Execute.java
+++ b/Mage.Sets/src/mage/cards/e/Execute.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Execute extends CardImpl {
+public final class Execute extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creature");
static{
diff --git a/Mage.Sets/src/mage/cards/e/ExecutionersCapsule.java b/Mage.Sets/src/mage/cards/e/ExecutionersCapsule.java
index d6051def197..fa8b550ec67 100644
--- a/Mage.Sets/src/mage/cards/e/ExecutionersCapsule.java
+++ b/Mage.Sets/src/mage/cards/e/ExecutionersCapsule.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ExecutionersCapsule extends CardImpl {
+public final class ExecutionersCapsule extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/e/ExecutionersHood.java b/Mage.Sets/src/mage/cards/e/ExecutionersHood.java
index 45f262f3e96..acb355b63e5 100644
--- a/Mage.Sets/src/mage/cards/e/ExecutionersHood.java
+++ b/Mage.Sets/src/mage/cards/e/ExecutionersHood.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class ExecutionersHood extends CardImpl {
+public final class ExecutionersHood extends CardImpl {
public ExecutionersHood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/e/ExecutionersSwing.java b/Mage.Sets/src/mage/cards/e/ExecutionersSwing.java
index 8a91902d3d7..e37750c6478 100644
--- a/Mage.Sets/src/mage/cards/e/ExecutionersSwing.java
+++ b/Mage.Sets/src/mage/cards/e/ExecutionersSwing.java
@@ -47,7 +47,7 @@ import mage.watchers.common.SourceDidDamageWatcher;
*
* @author LevelX2
*/
-public class ExecutionersSwing extends CardImpl {
+public final class ExecutionersSwing extends CardImpl {
public ExecutionersSwing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ExemplarOfStrength.java b/Mage.Sets/src/mage/cards/e/ExemplarOfStrength.java
index 6e6fb45d7e9..65ac73fde2d 100644
--- a/Mage.Sets/src/mage/cards/e/ExemplarOfStrength.java
+++ b/Mage.Sets/src/mage/cards/e/ExemplarOfStrength.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class ExemplarOfStrength extends CardImpl {
+public final class ExemplarOfStrength extends CardImpl {
public ExemplarOfStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ExertInfluence.java b/Mage.Sets/src/mage/cards/e/ExertInfluence.java
index 7ce80344625..9242f37f55d 100644
--- a/Mage.Sets/src/mage/cards/e/ExertInfluence.java
+++ b/Mage.Sets/src/mage/cards/e/ExertInfluence.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ExertInfluence extends CardImpl {
+public final class ExertInfluence extends CardImpl {
public ExertInfluence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/Exhaustion.java b/Mage.Sets/src/mage/cards/e/Exhaustion.java
index 433513ad02f..3db43a463ab 100644
--- a/Mage.Sets/src/mage/cards/e/Exhaustion.java
+++ b/Mage.Sets/src/mage/cards/e/Exhaustion.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class Exhaustion extends CardImpl {
+public final class Exhaustion extends CardImpl {
public Exhaustion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/Exhume.java b/Mage.Sets/src/mage/cards/e/Exhume.java
index c25011621df..05cb8e8e6ef 100644
--- a/Mage.Sets/src/mage/cards/e/Exhume.java
+++ b/Mage.Sets/src/mage/cards/e/Exhume.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Plopman
*/
-public class Exhume extends CardImpl {
+public final class Exhume extends CardImpl {
public Exhume(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ExhumerThrull.java b/Mage.Sets/src/mage/cards/e/ExhumerThrull.java
index 11b85615f57..9dae5dd7d31 100644
--- a/Mage.Sets/src/mage/cards/e/ExhumerThrull.java
+++ b/Mage.Sets/src/mage/cards/e/ExhumerThrull.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class ExhumerThrull extends CardImpl {
+public final class ExhumerThrull extends CardImpl {
public ExhumerThrull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/Exile.java b/Mage.Sets/src/mage/cards/e/Exile.java
index b438fabce8f..d21ace5fb3d 100644
--- a/Mage.Sets/src/mage/cards/e/Exile.java
+++ b/Mage.Sets/src/mage/cards/e/Exile.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class Exile extends CardImpl {
+public final class Exile extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonwhite attacking creature");
diff --git a/Mage.Sets/src/mage/cards/e/ExileIntoDarkness.java b/Mage.Sets/src/mage/cards/e/ExileIntoDarkness.java
index bf12924c770..33931906f2f 100644
--- a/Mage.Sets/src/mage/cards/e/ExileIntoDarkness.java
+++ b/Mage.Sets/src/mage/cards/e/ExileIntoDarkness.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class ExileIntoDarkness extends CardImpl {
+public final class ExileIntoDarkness extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/e/ExiledBoggart.java b/Mage.Sets/src/mage/cards/e/ExiledBoggart.java
index 515339213ee..ba55433c0fe 100644
--- a/Mage.Sets/src/mage/cards/e/ExiledBoggart.java
+++ b/Mage.Sets/src/mage/cards/e/ExiledBoggart.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Wehk
*/
-public class ExiledBoggart extends CardImpl {
+public final class ExiledBoggart extends CardImpl {
public ExiledBoggart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/Exogorth.java b/Mage.Sets/src/mage/cards/e/Exogorth.java
index c670f6b3d72..6997195d604 100644
--- a/Mage.Sets/src/mage/cards/e/Exogorth.java
+++ b/Mage.Sets/src/mage/cards/e/Exogorth.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author Styxo
*/
-public class Exogorth extends CardImpl {
+public final class Exogorth extends CardImpl {
public Exogorth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/Exorcist.java b/Mage.Sets/src/mage/cards/e/Exorcist.java
index 7dfd8f7ac86..2ab4070de48 100644
--- a/Mage.Sets/src/mage/cards/e/Exorcist.java
+++ b/Mage.Sets/src/mage/cards/e/Exorcist.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ilcartographer
*/
-public class Exorcist extends CardImpl {
+public final class Exorcist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature");
static {
diff --git a/Mage.Sets/src/mage/cards/e/ExoskeletalArmor.java b/Mage.Sets/src/mage/cards/e/ExoskeletalArmor.java
index 36097317339..2392cfe2791 100644
--- a/Mage.Sets/src/mage/cards/e/ExoskeletalArmor.java
+++ b/Mage.Sets/src/mage/cards/e/ExoskeletalArmor.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ExoskeletalArmor extends CardImpl {
+public final class ExoskeletalArmor extends CardImpl {
public ExoskeletalArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ExoticCurse.java b/Mage.Sets/src/mage/cards/e/ExoticCurse.java
index 34c231b9bb4..e30969ca24e 100644
--- a/Mage.Sets/src/mage/cards/e/ExoticCurse.java
+++ b/Mage.Sets/src/mage/cards/e/ExoticCurse.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author FenrisulfrX
*/
-public class ExoticCurse extends CardImpl {
+public final class ExoticCurse extends CardImpl {
public ExoticCurse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ExoticDisease.java b/Mage.Sets/src/mage/cards/e/ExoticDisease.java
index 9831ff5fc28..8c2434ab05b 100644
--- a/Mage.Sets/src/mage/cards/e/ExoticDisease.java
+++ b/Mage.Sets/src/mage/cards/e/ExoticDisease.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class ExoticDisease extends CardImpl {
+public final class ExoticDisease extends CardImpl {
public ExoticDisease(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ExoticOrchard.java b/Mage.Sets/src/mage/cards/e/ExoticOrchard.java
index 523cec6f7de..a1e0467d404 100644
--- a/Mage.Sets/src/mage/cards/e/ExoticOrchard.java
+++ b/Mage.Sets/src/mage/cards/e/ExoticOrchard.java
@@ -38,7 +38,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class ExoticOrchard extends CardImpl {
+public final class ExoticOrchard extends CardImpl {
public ExoticOrchard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/e/Expedite.java b/Mage.Sets/src/mage/cards/e/Expedite.java
index b86123ea5da..04d5791a98d 100644
--- a/Mage.Sets/src/mage/cards/e/Expedite.java
+++ b/Mage.Sets/src/mage/cards/e/Expedite.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Expedite extends CardImpl {
+public final class Expedite extends CardImpl {
public Expedite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ExpeditionEnvoy.java b/Mage.Sets/src/mage/cards/e/ExpeditionEnvoy.java
index 3746c045871..c9c20be44b9 100644
--- a/Mage.Sets/src/mage/cards/e/ExpeditionEnvoy.java
+++ b/Mage.Sets/src/mage/cards/e/ExpeditionEnvoy.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ExpeditionEnvoy extends CardImpl {
+public final class ExpeditionEnvoy extends CardImpl {
public ExpeditionEnvoy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ExpeditionMap.java b/Mage.Sets/src/mage/cards/e/ExpeditionMap.java
index 90406dceb56..7ea8bbebf7b 100644
--- a/Mage.Sets/src/mage/cards/e/ExpeditionMap.java
+++ b/Mage.Sets/src/mage/cards/e/ExpeditionMap.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class ExpeditionMap extends CardImpl {
+public final class ExpeditionMap extends CardImpl {
public ExpeditionMap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/e/ExpeditionRaptor.java b/Mage.Sets/src/mage/cards/e/ExpeditionRaptor.java
index 9451c447f3d..7284d5ecae0 100644
--- a/Mage.Sets/src/mage/cards/e/ExpeditionRaptor.java
+++ b/Mage.Sets/src/mage/cards/e/ExpeditionRaptor.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ExpeditionRaptor extends CardImpl {
+public final class ExpeditionRaptor extends CardImpl {
public ExpeditionRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ExpelFromOrazca.java b/Mage.Sets/src/mage/cards/e/ExpelFromOrazca.java
index e182c485152..1a59979030d 100644
--- a/Mage.Sets/src/mage/cards/e/ExpelFromOrazca.java
+++ b/Mage.Sets/src/mage/cards/e/ExpelFromOrazca.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class ExpelFromOrazca extends CardImpl {
+public final class ExpelFromOrazca extends CardImpl {
public ExpelFromOrazca(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ExpendableTroops.java b/Mage.Sets/src/mage/cards/e/ExpendableTroops.java
index 4718edc8112..4d8855385fe 100644
--- a/Mage.Sets/src/mage/cards/e/ExpendableTroops.java
+++ b/Mage.Sets/src/mage/cards/e/ExpendableTroops.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ExpendableTroops extends CardImpl {
+public final class ExpendableTroops extends CardImpl {
public ExpendableTroops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ExperimentKraj.java b/Mage.Sets/src/mage/cards/e/ExperimentKraj.java
index 5d447f575a2..bd6d73524ef 100644
--- a/Mage.Sets/src/mage/cards/e/ExperimentKraj.java
+++ b/Mage.Sets/src/mage/cards/e/ExperimentKraj.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ExperimentKraj extends CardImpl {
+public final class ExperimentKraj extends CardImpl {
public ExperimentKraj(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ExperimentOne.java b/Mage.Sets/src/mage/cards/e/ExperimentOne.java
index 26add92b7cc..31b8c37efa0 100644
--- a/Mage.Sets/src/mage/cards/e/ExperimentOne.java
+++ b/Mage.Sets/src/mage/cards/e/ExperimentOne.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class ExperimentOne extends CardImpl {
+public final class ExperimentOne extends CardImpl {
public ExperimentOne(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ExperimentalAviator.java b/Mage.Sets/src/mage/cards/e/ExperimentalAviator.java
index ddf617af910..05a01e3b39d 100644
--- a/Mage.Sets/src/mage/cards/e/ExperimentalAviator.java
+++ b/Mage.Sets/src/mage/cards/e/ExperimentalAviator.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author fireshoes
*/
-public class ExperimentalAviator extends CardImpl {
+public final class ExperimentalAviator extends CardImpl {
public ExperimentalAviator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ExplodingBorders.java b/Mage.Sets/src/mage/cards/e/ExplodingBorders.java
index 4b963ef0dd6..1656b8f7aa2 100644
--- a/Mage.Sets/src/mage/cards/e/ExplodingBorders.java
+++ b/Mage.Sets/src/mage/cards/e/ExplodingBorders.java
@@ -43,13 +43,13 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class ExplodingBorders extends CardImpl {
+public final class ExplodingBorders extends CardImpl {
public ExplodingBorders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}{G}");
// Domain - Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library. Exploding Borders deals X damage to target player, where X is the number of basic land types among lands you control.
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true));
this.getSpellAbility().addEffect(new DamageTargetEffect(new DomainValue()));
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
}
diff --git a/Mage.Sets/src/mage/cards/e/Exploration.java b/Mage.Sets/src/mage/cards/e/Exploration.java
index 4d2137c2ab8..16e4120a1b2 100644
--- a/Mage.Sets/src/mage/cards/e/Exploration.java
+++ b/Mage.Sets/src/mage/cards/e/Exploration.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class Exploration extends CardImpl {
+public final class Exploration extends CardImpl {
public Exploration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/Explore.java b/Mage.Sets/src/mage/cards/e/Explore.java
index 1c4d2ebee06..beeb0be6034 100644
--- a/Mage.Sets/src/mage/cards/e/Explore.java
+++ b/Mage.Sets/src/mage/cards/e/Explore.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author Viserion
*/
-public class Explore extends CardImpl {
+public final class Explore extends CardImpl {
public Explore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ExplorersScope.java b/Mage.Sets/src/mage/cards/e/ExplorersScope.java
index f9603ea2f92..2e66311984e 100644
--- a/Mage.Sets/src/mage/cards/e/ExplorersScope.java
+++ b/Mage.Sets/src/mage/cards/e/ExplorersScope.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author North
*/
-public class ExplorersScope extends CardImpl {
+public final class ExplorersScope extends CardImpl {
public ExplorersScope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/e/ExplosiveApparatus.java b/Mage.Sets/src/mage/cards/e/ExplosiveApparatus.java
index 8bad2078b9f..447b70718f9 100644
--- a/Mage.Sets/src/mage/cards/e/ExplosiveApparatus.java
+++ b/Mage.Sets/src/mage/cards/e/ExplosiveApparatus.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class ExplosiveApparatus extends CardImpl {
+public final class ExplosiveApparatus extends CardImpl {
public ExplosiveApparatus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/e/ExplosiveGrowth.java b/Mage.Sets/src/mage/cards/e/ExplosiveGrowth.java
index 9a2360efd51..17642f8cc3f 100644
--- a/Mage.Sets/src/mage/cards/e/ExplosiveGrowth.java
+++ b/Mage.Sets/src/mage/cards/e/ExplosiveGrowth.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author michael.napoleon@gmail.com
*/
-public class ExplosiveGrowth extends CardImpl {
+public final class ExplosiveGrowth extends CardImpl {
public ExplosiveGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ExplosiveImpact.java b/Mage.Sets/src/mage/cards/e/ExplosiveImpact.java
index 68615f8202b..6249cd61f07 100644
--- a/Mage.Sets/src/mage/cards/e/ExplosiveImpact.java
+++ b/Mage.Sets/src/mage/cards/e/ExplosiveImpact.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class ExplosiveImpact extends CardImpl {
+public final class ExplosiveImpact extends CardImpl {
public ExplosiveImpact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ExplosiveRevelation.java b/Mage.Sets/src/mage/cards/e/ExplosiveRevelation.java
index 2ac1ec42f38..01a3a37944c 100644
--- a/Mage.Sets/src/mage/cards/e/ExplosiveRevelation.java
+++ b/Mage.Sets/src/mage/cards/e/ExplosiveRevelation.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class ExplosiveRevelation extends CardImpl {
+public final class ExplosiveRevelation extends CardImpl {
public ExplosiveRevelation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ExplosiveVegetation.java b/Mage.Sets/src/mage/cards/e/ExplosiveVegetation.java
index 5c04952f75b..1a27f6eceb5 100644
--- a/Mage.Sets/src/mage/cards/e/ExplosiveVegetation.java
+++ b/Mage.Sets/src/mage/cards/e/ExplosiveVegetation.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class ExplosiveVegetation extends CardImpl {
+public final class ExplosiveVegetation extends CardImpl {
public ExplosiveVegetation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/ExposeEvil.java b/Mage.Sets/src/mage/cards/e/ExposeEvil.java
index 4f91e406953..ed16cef7751 100644
--- a/Mage.Sets/src/mage/cards/e/ExposeEvil.java
+++ b/Mage.Sets/src/mage/cards/e/ExposeEvil.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ExposeEvil extends CardImpl {
+public final class ExposeEvil extends CardImpl {
public ExposeEvil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/Expropriate.java b/Mage.Sets/src/mage/cards/e/Expropriate.java
index 6f423685bea..6e0c30f7d7d 100644
--- a/Mage.Sets/src/mage/cards/e/Expropriate.java
+++ b/Mage.Sets/src/mage/cards/e/Expropriate.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author JRHerlehy
*/
-public class Expropriate extends CardImpl {
+public final class Expropriate extends CardImpl {
public Expropriate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{7}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/Expunge.java b/Mage.Sets/src/mage/cards/e/Expunge.java
index 5952d8e7274..b1509f575e4 100644
--- a/Mage.Sets/src/mage/cards/e/Expunge.java
+++ b/Mage.Sets/src/mage/cards/e/Expunge.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class Expunge extends CardImpl {
+public final class Expunge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact, nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/e/ExquisiteArchangel.java b/Mage.Sets/src/mage/cards/e/ExquisiteArchangel.java
index 6ae070f4b24..29a24bcd050 100644
--- a/Mage.Sets/src/mage/cards/e/ExquisiteArchangel.java
+++ b/Mage.Sets/src/mage/cards/e/ExquisiteArchangel.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class ExquisiteArchangel extends CardImpl {
+public final class ExquisiteArchangel extends CardImpl {
public ExquisiteArchangel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/ExquisiteBlood.java b/Mage.Sets/src/mage/cards/e/ExquisiteBlood.java
index 0b730f72d35..1f8b66ecbf7 100644
--- a/Mage.Sets/src/mage/cards/e/ExquisiteBlood.java
+++ b/Mage.Sets/src/mage/cards/e/ExquisiteBlood.java
@@ -41,7 +41,7 @@ import mage.game.events.GameEvent.EventType;
/**
* @author noxx
*/
-public class ExquisiteBlood extends CardImpl {
+public final class ExquisiteBlood extends CardImpl {
public ExquisiteBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ExquisiteFirecraft.java b/Mage.Sets/src/mage/cards/e/ExquisiteFirecraft.java
index 8866bb61053..a5bd713d836 100644
--- a/Mage.Sets/src/mage/cards/e/ExquisiteFirecraft.java
+++ b/Mage.Sets/src/mage/cards/e/ExquisiteFirecraft.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class ExquisiteFirecraft extends CardImpl {
+public final class ExquisiteFirecraft extends CardImpl {
public ExquisiteFirecraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/Exsanguinate.java b/Mage.Sets/src/mage/cards/e/Exsanguinate.java
index 33c87c7c185..54842bf270f 100644
--- a/Mage.Sets/src/mage/cards/e/Exsanguinate.java
+++ b/Mage.Sets/src/mage/cards/e/Exsanguinate.java
@@ -41,7 +41,7 @@ import mage.game.Game;
*
* @author Loki
*/
-public class Exsanguinate extends CardImpl {
+public final class Exsanguinate extends CardImpl {
public Exsanguinate (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/Extinction.java b/Mage.Sets/src/mage/cards/e/Extinction.java
index 949a8a575d9..74cb054806b 100644
--- a/Mage.Sets/src/mage/cards/e/Extinction.java
+++ b/Mage.Sets/src/mage/cards/e/Extinction.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class Extinction extends CardImpl {
+public final class Extinction extends CardImpl {
public Extinction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/Extinguish.java b/Mage.Sets/src/mage/cards/e/Extinguish.java
index 5f414ece10d..cda3a65a9e8 100644
--- a/Mage.Sets/src/mage/cards/e/Extinguish.java
+++ b/Mage.Sets/src/mage/cards/e/Extinguish.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class Extinguish extends CardImpl {
+public final class Extinguish extends CardImpl {
private static final FilterSpell filter = new FilterSpell("sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/e/ExtinguishAllHope.java b/Mage.Sets/src/mage/cards/e/ExtinguishAllHope.java
index 74dd6ae02d9..a81a999f924 100644
--- a/Mage.Sets/src/mage/cards/e/ExtinguishAllHope.java
+++ b/Mage.Sets/src/mage/cards/e/ExtinguishAllHope.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class ExtinguishAllHope extends CardImpl {
+public final class ExtinguishAllHope extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nonenchantment creatures");
diff --git a/Mage.Sets/src/mage/cards/e/Extirpate.java b/Mage.Sets/src/mage/cards/e/Extirpate.java
index f39c934806d..9a7de1634cc 100644
--- a/Mage.Sets/src/mage/cards/e/Extirpate.java
+++ b/Mage.Sets/src/mage/cards/e/Extirpate.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jonubuu
*/
-public class Extirpate extends CardImpl {
+public final class Extirpate extends CardImpl {
private static final FilterCard filter = new FilterCard("card in a graveyard other than a basic land card");
diff --git a/Mage.Sets/src/mage/cards/e/Extortion.java b/Mage.Sets/src/mage/cards/e/Extortion.java
index 8e132f49266..4dccb5ad5ca 100644
--- a/Mage.Sets/src/mage/cards/e/Extortion.java
+++ b/Mage.Sets/src/mage/cards/e/Extortion.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class Extortion extends CardImpl {
+public final class Extortion extends CardImpl {
public Extortion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ExtraArms.java b/Mage.Sets/src/mage/cards/e/ExtraArms.java
index 60431b8cf71..e165de8f8db 100644
--- a/Mage.Sets/src/mage/cards/e/ExtraArms.java
+++ b/Mage.Sets/src/mage/cards/e/ExtraArms.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class ExtraArms extends CardImpl {
+public final class ExtraArms extends CardImpl {
public ExtraArms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/Extract.java b/Mage.Sets/src/mage/cards/e/Extract.java
index 4b76fe1387e..1e6c5359ea9 100644
--- a/Mage.Sets/src/mage/cards/e/Extract.java
+++ b/Mage.Sets/src/mage/cards/e/Extract.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author cbt33, jeffwadsworth (Supreme Inquisitor)
*/
-public class Extract extends CardImpl {
+public final class Extract extends CardImpl {
public Extract(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ExtractFromDarkness.java b/Mage.Sets/src/mage/cards/e/ExtractFromDarkness.java
index 32b327b92bf..fe624dd4cd8 100644
--- a/Mage.Sets/src/mage/cards/e/ExtractFromDarkness.java
+++ b/Mage.Sets/src/mage/cards/e/ExtractFromDarkness.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class ExtractFromDarkness extends CardImpl {
+public final class ExtractFromDarkness extends CardImpl {
public ExtractFromDarkness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/e/ExtractorDemon.java b/Mage.Sets/src/mage/cards/e/ExtractorDemon.java
index 2b93c307d73..ef4c46eaefe 100644
--- a/Mage.Sets/src/mage/cards/e/ExtractorDemon.java
+++ b/Mage.Sets/src/mage/cards/e/ExtractorDemon.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
* @author jeffwadsworth
*
*/
-public class ExtractorDemon extends CardImpl {
+public final class ExtractorDemon extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/e/ExtraplanarLens.java b/Mage.Sets/src/mage/cards/e/ExtraplanarLens.java
index 404c886f3dd..bfdd899d0f5 100644
--- a/Mage.Sets/src/mage/cards/e/ExtraplanarLens.java
+++ b/Mage.Sets/src/mage/cards/e/ExtraplanarLens.java
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class ExtraplanarLens extends CardImpl {
+public final class ExtraplanarLens extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("land you control");
@@ -74,7 +74,7 @@ public class ExtraplanarLens extends CardImpl {
ability.addTarget(new TargetLandPermanent(filter));
this.addAbility(ability);
- // Whenever a land with the same name as the exiled card is tapped for mana, its controller adds one mana to their mana pool of any type that land produced.
+ // Whenever a land with the same name as the exiled card is tapped for mana, its controller adds one mana of any type that land produced.
this.addAbility(new ExtraplanarLensTriggeredAbility());
}
diff --git a/Mage.Sets/src/mage/cards/e/ExtricatorOfFlesh.java b/Mage.Sets/src/mage/cards/e/ExtricatorOfFlesh.java
index 27e60f747fe..27ff9bebaa4 100644
--- a/Mage.Sets/src/mage/cards/e/ExtricatorOfFlesh.java
+++ b/Mage.Sets/src/mage/cards/e/ExtricatorOfFlesh.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ExtricatorOfFlesh extends CardImpl {
+public final class ExtricatorOfFlesh extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Eldrazi creature");
diff --git a/Mage.Sets/src/mage/cards/e/ExtricatorOfSin.java b/Mage.Sets/src/mage/cards/e/ExtricatorOfSin.java
index 9ddecc3606a..6796e5f2db5 100644
--- a/Mage.Sets/src/mage/cards/e/ExtricatorOfSin.java
+++ b/Mage.Sets/src/mage/cards/e/ExtricatorOfSin.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class ExtricatorOfSin extends CardImpl {
+public final class ExtricatorOfSin extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another permanent");
diff --git a/Mage.Sets/src/mage/cards/e/Extruder.java b/Mage.Sets/src/mage/cards/e/Extruder.java
index 015543286b7..5e53a9e1dcc 100644
--- a/Mage.Sets/src/mage/cards/e/Extruder.java
+++ b/Mage.Sets/src/mage/cards/e/Extruder.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class Extruder extends CardImpl {
+public final class Extruder extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/e/ExuberantFirestoker.java b/Mage.Sets/src/mage/cards/e/ExuberantFirestoker.java
index 0ed6e7c1055..05ae8b368a7 100644
--- a/Mage.Sets/src/mage/cards/e/ExuberantFirestoker.java
+++ b/Mage.Sets/src/mage/cards/e/ExuberantFirestoker.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
/**
* @author North
*/
-public class ExuberantFirestoker extends CardImpl {
+public final class ExuberantFirestoker extends CardImpl {
public ExuberantFirestoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/e/ExultantCultist.java b/Mage.Sets/src/mage/cards/e/ExultantCultist.java
index 3b1868390c3..0cc191d6d10 100644
--- a/Mage.Sets/src/mage/cards/e/ExultantCultist.java
+++ b/Mage.Sets/src/mage/cards/e/ExultantCultist.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ExultantCultist extends CardImpl {
+public final class ExultantCultist extends CardImpl {
public ExultantCultist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/ExultantSkymarcher.java b/Mage.Sets/src/mage/cards/e/ExultantSkymarcher.java
index 37776baa283..ed7d0d39c5f 100644
--- a/Mage.Sets/src/mage/cards/e/ExultantSkymarcher.java
+++ b/Mage.Sets/src/mage/cards/e/ExultantSkymarcher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class ExultantSkymarcher extends CardImpl {
+public final class ExultantSkymarcher extends CardImpl {
public ExultantSkymarcher (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EyeForAnEye.java b/Mage.Sets/src/mage/cards/e/EyeForAnEye.java
index 697dff7b4f0..755f3262da6 100644
--- a/Mage.Sets/src/mage/cards/e/EyeForAnEye.java
+++ b/Mage.Sets/src/mage/cards/e/EyeForAnEye.java
@@ -45,7 +45,7 @@ import mage.target.TargetSource;
*
* @author L_J
*/
-public class EyeForAnEye extends CardImpl {
+public final class EyeForAnEye extends CardImpl {
public EyeForAnEye(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EyeGouge.java b/Mage.Sets/src/mage/cards/e/EyeGouge.java
index 7e135ce8252..0fa2e410c7e 100644
--- a/Mage.Sets/src/mage/cards/e/EyeGouge.java
+++ b/Mage.Sets/src/mage/cards/e/EyeGouge.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class EyeGouge extends CardImpl {
+public final class EyeGouge extends CardImpl {
public EyeGouge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/e/EyeOfDoom.java b/Mage.Sets/src/mage/cards/e/EyeOfDoom.java
index 6a665a99c2e..80ff7616859 100644
--- a/Mage.Sets/src/mage/cards/e/EyeOfDoom.java
+++ b/Mage.Sets/src/mage/cards/e/EyeOfDoom.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class EyeOfDoom extends CardImpl {
+public final class EyeOfDoom extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent with a doom counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/e/EyeOfNowhere.java b/Mage.Sets/src/mage/cards/e/EyeOfNowhere.java
index 0ccc9084bf9..1393305f888 100644
--- a/Mage.Sets/src/mage/cards/e/EyeOfNowhere.java
+++ b/Mage.Sets/src/mage/cards/e/EyeOfNowhere.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class EyeOfNowhere extends CardImpl {
+public final class EyeOfNowhere extends CardImpl {
public EyeOfNowhere (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EyeOfRamos.java b/Mage.Sets/src/mage/cards/e/EyeOfRamos.java
index 20240c56c79..e957eeb32a7 100644
--- a/Mage.Sets/src/mage/cards/e/EyeOfRamos.java
+++ b/Mage.Sets/src/mage/cards/e/EyeOfRamos.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Jgod
*/
-public class EyeOfRamos extends CardImpl {
+public final class EyeOfRamos extends CardImpl {
public EyeOfRamos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java b/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java
index 229c7ae338f..ae61ca312ff 100644
--- a/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java
+++ b/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java
@@ -55,7 +55,7 @@ import java.util.UUID;
*
* @author spjspj
*/
-public class EyeOfSingularity extends CardImpl {
+public final class EyeOfSingularity extends CardImpl {
public EyeOfSingularity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EyeOfTheStorm.java b/Mage.Sets/src/mage/cards/e/EyeOfTheStorm.java
index 8739f843004..bafc49139b5 100644
--- a/Mage.Sets/src/mage/cards/e/EyeOfTheStorm.java
+++ b/Mage.Sets/src/mage/cards/e/EyeOfTheStorm.java
@@ -28,6 +28,7 @@
package mage.cards.e;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect;
@@ -52,7 +53,7 @@ import mage.util.CardUtil;
*
* @author spjspj
*/
-public class EyeOfTheStorm extends CardImpl {
+public final class EyeOfTheStorm extends CardImpl {
public EyeOfTheStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{U}{U}");
@@ -180,7 +181,7 @@ class EyeOfTheStormEffect1 extends OneShotEffect {
if (cardToCopy != null) {
Card copy = game.copyCard(cardToCopy, source, source.getControllerId());
if (spellController.chooseUse(outcome, "Cast " + copy.getIdName() + " without paying mana cost?", source, game)) {
- spellController.cast(copy.getSpellAbility(), game, true);
+ spellController.cast(copy.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/e/EyeOfUgin.java b/Mage.Sets/src/mage/cards/e/EyeOfUgin.java
index 69530c25805..71fc6bb73bc 100644
--- a/Mage.Sets/src/mage/cards/e/EyeOfUgin.java
+++ b/Mage.Sets/src/mage/cards/e/EyeOfUgin.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author maurer.it_at_gmail.com
*/
-public class EyeOfUgin extends CardImpl {
+public final class EyeOfUgin extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("colorless creature card");
private static final FilterCard filterSpells = new FilterCard("Colorless Eldrazi spells");
diff --git a/Mage.Sets/src/mage/cards/e/EyeOfYawgmoth.java b/Mage.Sets/src/mage/cards/e/EyeOfYawgmoth.java
index 86bf7f0328d..3aebc90df34 100644
--- a/Mage.Sets/src/mage/cards/e/EyeOfYawgmoth.java
+++ b/Mage.Sets/src/mage/cards/e/EyeOfYawgmoth.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class EyeOfYawgmoth extends CardImpl {
+public final class EyeOfYawgmoth extends CardImpl {
public EyeOfYawgmoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/e/EyeSpy.java b/Mage.Sets/src/mage/cards/e/EyeSpy.java
index 7c99cc57c64..c0e76a43b1a 100644
--- a/Mage.Sets/src/mage/cards/e/EyeSpy.java
+++ b/Mage.Sets/src/mage/cards/e/EyeSpy.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class EyeSpy extends CardImpl {
+public final class EyeSpy extends CardImpl {
public EyeSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EyeblightAssassin.java b/Mage.Sets/src/mage/cards/e/EyeblightAssassin.java
index e490059723b..16b32ef2d89 100644
--- a/Mage.Sets/src/mage/cards/e/EyeblightAssassin.java
+++ b/Mage.Sets/src/mage/cards/e/EyeblightAssassin.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class EyeblightAssassin extends CardImpl {
+public final class EyeblightAssassin extends CardImpl {
private static final FilterCreaturePermanent filterOpponentCreature = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/e/EyeblightMassacre.java b/Mage.Sets/src/mage/cards/e/EyeblightMassacre.java
index 52c03fd57b1..51ac37a5f0a 100644
--- a/Mage.Sets/src/mage/cards/e/EyeblightMassacre.java
+++ b/Mage.Sets/src/mage/cards/e/EyeblightMassacre.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
* @author LoneFox
*/
-public class EyeblightMassacre extends CardImpl {
+public final class EyeblightMassacre extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Non-Elf creatures");
diff --git a/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java b/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java
index 4505dbf682e..53d6326563a 100644
--- a/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java
+++ b/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class EyeblightsEnding extends CardImpl {
+public final class EyeblightsEnding extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Elf creature");
diff --git a/Mage.Sets/src/mage/cards/e/EyelessWatcher.java b/Mage.Sets/src/mage/cards/e/EyelessWatcher.java
index 77d11980ef9..4fc4a1a0932 100644
--- a/Mage.Sets/src/mage/cards/e/EyelessWatcher.java
+++ b/Mage.Sets/src/mage/cards/e/EyelessWatcher.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author LevelX2
*/
-public class EyelessWatcher extends CardImpl {
+public final class EyelessWatcher extends CardImpl {
public EyelessWatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EyesInTheSkies.java b/Mage.Sets/src/mage/cards/e/EyesInTheSkies.java
index 9911a3f6bec..a4e6e084df6 100644
--- a/Mage.Sets/src/mage/cards/e/EyesInTheSkies.java
+++ b/Mage.Sets/src/mage/cards/e/EyesInTheSkies.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.BirdToken;
*
* @author LevleX2
*/
-public class EyesInTheSkies extends CardImpl {
+public final class EyesInTheSkies extends CardImpl {
public EyesInTheSkies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/e/EyesOfTheWatcher.java b/Mage.Sets/src/mage/cards/e/EyesOfTheWatcher.java
index c613bf46c45..216559f25d0 100644
--- a/Mage.Sets/src/mage/cards/e/EyesOfTheWatcher.java
+++ b/Mage.Sets/src/mage/cards/e/EyesOfTheWatcher.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class EyesOfTheWatcher extends CardImpl {
+public final class EyesOfTheWatcher extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
static{
diff --git a/Mage.Sets/src/mage/cards/e/EyesOfTheWisent.java b/Mage.Sets/src/mage/cards/e/EyesOfTheWisent.java
index 0e1944d7d4a..a4052ded421 100644
--- a/Mage.Sets/src/mage/cards/e/EyesOfTheWisent.java
+++ b/Mage.Sets/src/mage/cards/e/EyesOfTheWisent.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.EyesOfTheWisentElementalToken;
*
* @author LevelX2
*/
-public class EyesOfTheWisent extends CardImpl {
+public final class EyesOfTheWisent extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a blue spell");
diff --git a/Mage.Sets/src/mage/cards/e/EzuriClawOfProgress.java b/Mage.Sets/src/mage/cards/e/EzuriClawOfProgress.java
index 6fca7d514fe..f8ee84c4f5b 100644
--- a/Mage.Sets/src/mage/cards/e/EzuriClawOfProgress.java
+++ b/Mage.Sets/src/mage/cards/e/EzuriClawOfProgress.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class EzuriClawOfProgress extends CardImpl {
+public final class EzuriClawOfProgress extends CardImpl {
final private static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
final private static FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/e/EzuriRenegadeLeader.java b/Mage.Sets/src/mage/cards/e/EzuriRenegadeLeader.java
index 49fb80befe1..c02930db70d 100644
--- a/Mage.Sets/src/mage/cards/e/EzuriRenegadeLeader.java
+++ b/Mage.Sets/src/mage/cards/e/EzuriRenegadeLeader.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author maurer.it_at_gmail.com
*/
-public class EzuriRenegadeLeader extends CardImpl {
+public final class EzuriRenegadeLeader extends CardImpl {
private static final FilterCreaturePermanent elfFilter = new FilterCreaturePermanent("Elf creatures");
private static final FilterControlledCreaturePermanent notEzuri = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/e/EzurisArchers.java b/Mage.Sets/src/mage/cards/e/EzurisArchers.java
index c33045efee6..d5f3bc00236 100644
--- a/Mage.Sets/src/mage/cards/e/EzurisArchers.java
+++ b/Mage.Sets/src/mage/cards/e/EzurisArchers.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author North
*/
-public class EzurisArchers extends CardImpl {
+public final class EzurisArchers extends CardImpl {
public EzurisArchers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/e/EzurisBrigade.java b/Mage.Sets/src/mage/cards/e/EzurisBrigade.java
index cfc79c392c6..187a71b4324 100644
--- a/Mage.Sets/src/mage/cards/e/EzurisBrigade.java
+++ b/Mage.Sets/src/mage/cards/e/EzurisBrigade.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class EzurisBrigade extends CardImpl {
+public final class EzurisBrigade extends CardImpl {
private static final String text = "Metalcraft - As long as you control three or more artifacts, Ezuri's Brigade gets +4/+4 and has trample";
public EzurisBrigade (UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/e/EzurisPredation.java b/Mage.Sets/src/mage/cards/e/EzurisPredation.java
index 511a65d27e2..3c124ab7d9b 100644
--- a/Mage.Sets/src/mage/cards/e/EzurisPredation.java
+++ b/Mage.Sets/src/mage/cards/e/EzurisPredation.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class EzurisPredation extends CardImpl {
+public final class EzurisPredation extends CardImpl {
public EzurisPredation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FaadiyahSeer.java b/Mage.Sets/src/mage/cards/f/FaadiyahSeer.java
index 43a9c3d9c04..77887d8db8c 100644
--- a/Mage.Sets/src/mage/cards/f/FaadiyahSeer.java
+++ b/Mage.Sets/src/mage/cards/f/FaadiyahSeer.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class FaadiyahSeer extends CardImpl {
+public final class FaadiyahSeer extends CardImpl {
public FaadiyahSeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FableOfWolfAndOwl.java b/Mage.Sets/src/mage/cards/f/FableOfWolfAndOwl.java
index d6af7401577..301225628e6 100644
--- a/Mage.Sets/src/mage/cards/f/FableOfWolfAndOwl.java
+++ b/Mage.Sets/src/mage/cards/f/FableOfWolfAndOwl.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.WolfToken;
/**
* @author Loki
*/
-public class FableOfWolfAndOwl extends CardImpl {
+public final class FableOfWolfAndOwl extends CardImpl {
private static final FilterSpell filterGreenSpell = new FilterSpell("a green spell");
private static final FilterSpell filterBlueSpell = new FilterSpell("a blue spell");
diff --git a/Mage.Sets/src/mage/cards/f/FabledHero.java b/Mage.Sets/src/mage/cards/f/FabledHero.java
index ed5aec5e962..dca068fece3 100644
--- a/Mage.Sets/src/mage/cards/f/FabledHero.java
+++ b/Mage.Sets/src/mage/cards/f/FabledHero.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class FabledHero extends CardImpl {
+public final class FabledHero extends CardImpl {
public FabledHero(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/Fabricate.java b/Mage.Sets/src/mage/cards/f/Fabricate.java
index 3a0a98e4f3d..985b4fc8e5f 100644
--- a/Mage.Sets/src/mage/cards/f/Fabricate.java
+++ b/Mage.Sets/src/mage/cards/f/Fabricate.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class Fabricate extends CardImpl {
+public final class Fabricate extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact");
diff --git a/Mage.Sets/src/mage/cards/f/FabricationModule.java b/Mage.Sets/src/mage/cards/f/FabricationModule.java
index 27c84f58829..5a5be490e47 100644
--- a/Mage.Sets/src/mage/cards/f/FabricationModule.java
+++ b/Mage.Sets/src/mage/cards/f/FabricationModule.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class FabricationModule extends CardImpl {
+public final class FabricationModule extends CardImpl {
public FabricationModule(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/f/FaceOfFear.java b/Mage.Sets/src/mage/cards/f/FaceOfFear.java
index 58ff9ebf3f9..3d96635fc3c 100644
--- a/Mage.Sets/src/mage/cards/f/FaceOfFear.java
+++ b/Mage.Sets/src/mage/cards/f/FaceOfFear.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class FaceOfFear extends CardImpl {
+public final class FaceOfFear extends CardImpl {
public FaceOfFear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FacelessButcher.java b/Mage.Sets/src/mage/cards/f/FacelessButcher.java
index 3d281639657..c28dbc788b7 100644
--- a/Mage.Sets/src/mage/cards/f/FacelessButcher.java
+++ b/Mage.Sets/src/mage/cards/f/FacelessButcher.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author Temba21
*/
-public class FacelessButcher extends CardImpl {
+public final class FacelessButcher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/f/FacelessDevourer.java b/Mage.Sets/src/mage/cards/f/FacelessDevourer.java
index 9eeb0c09888..8f61e813e57 100644
--- a/Mage.Sets/src/mage/cards/f/FacelessDevourer.java
+++ b/Mage.Sets/src/mage/cards/f/FacelessDevourer.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class FacelessDevourer extends CardImpl {
+public final class FacelessDevourer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/f/FacesOfThePast.java b/Mage.Sets/src/mage/cards/f/FacesOfThePast.java
index bb77709a656..807b7a8382c 100644
--- a/Mage.Sets/src/mage/cards/f/FacesOfThePast.java
+++ b/Mage.Sets/src/mage/cards/f/FacesOfThePast.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2 & L_J
*/
-public class FacesOfThePast extends CardImpl {
+public final class FacesOfThePast extends CardImpl {
public FacesOfThePast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Facevaulter.java b/Mage.Sets/src/mage/cards/f/Facevaulter.java
index b25094a13a5..ced7f0847b1 100644
--- a/Mage.Sets/src/mage/cards/f/Facevaulter.java
+++ b/Mage.Sets/src/mage/cards/f/Facevaulter.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class Facevaulter extends CardImpl {
+public final class Facevaulter extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Goblin");
diff --git a/Mage.Sets/src/mage/cards/f/FactOrFiction.java b/Mage.Sets/src/mage/cards/f/FactOrFiction.java
index 0937996e9b8..9a2ecebc36c 100644
--- a/Mage.Sets/src/mage/cards/f/FactOrFiction.java
+++ b/Mage.Sets/src/mage/cards/f/FactOrFiction.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
/**
* @author North
*/
-public class FactOrFiction extends CardImpl {
+public final class FactOrFiction extends CardImpl {
public FactOrFiction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FadeAway.java b/Mage.Sets/src/mage/cards/f/FadeAway.java
index ed3bd73e318..66bc9fb6db3 100644
--- a/Mage.Sets/src/mage/cards/f/FadeAway.java
+++ b/Mage.Sets/src/mage/cards/f/FadeAway.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Quercitron
*/
-public class FadeAway extends CardImpl {
+public final class FadeAway extends CardImpl {
public FadeAway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FadeFromMemory.java b/Mage.Sets/src/mage/cards/f/FadeFromMemory.java
index a77aad3766d..ad5d302444c 100644
--- a/Mage.Sets/src/mage/cards/f/FadeFromMemory.java
+++ b/Mage.Sets/src/mage/cards/f/FadeFromMemory.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Wehk
*/
-public class FadeFromMemory extends CardImpl {
+public final class FadeFromMemory extends CardImpl {
public FadeFromMemory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FadeIntoAntiquity.java b/Mage.Sets/src/mage/cards/f/FadeIntoAntiquity.java
index 02888abb142..db9123c2d2f 100644
--- a/Mage.Sets/src/mage/cards/f/FadeIntoAntiquity.java
+++ b/Mage.Sets/src/mage/cards/f/FadeIntoAntiquity.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class FadeIntoAntiquity extends CardImpl {
+public final class FadeIntoAntiquity extends CardImpl {
public FadeIntoAntiquity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieArtisans.java b/Mage.Sets/src/mage/cards/f/FaerieArtisans.java
index 539328bc618..5393a67f19d 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieArtisans.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieArtisans.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class FaerieArtisans extends CardImpl {
+public final class FaerieArtisans extends CardImpl {
private static final FilterCreaturePermanent filterNontoken = new FilterCreaturePermanent("nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieConclave.java b/Mage.Sets/src/mage/cards/f/FaerieConclave.java
index 91726fdd31f..b017a9e16b2 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieConclave.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieConclave.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author Loki
*/
-public class FaerieConclave extends CardImpl {
+public final class FaerieConclave extends CardImpl {
public FaerieConclave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieHarbinger.java b/Mage.Sets/src/mage/cards/f/FaerieHarbinger.java
index ad304c536bb..f989e3ec42a 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieHarbinger.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieHarbinger.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author fireshoes
*/
-public class FaerieHarbinger extends CardImpl {
+public final class FaerieHarbinger extends CardImpl {
static final FilterCard filter = new FilterCard("Faerie card");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieImpostor.java b/Mage.Sets/src/mage/cards/f/FaerieImpostor.java
index 1e7dd44a752..753d6cf76e8 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieImpostor.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieImpostor.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class FaerieImpostor extends CardImpl {
+public final class FaerieImpostor extends CardImpl {
public FaerieImpostor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieInvaders.java b/Mage.Sets/src/mage/cards/f/FaerieInvaders.java
index fc161f5526d..812d480c2f5 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieInvaders.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieInvaders.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FaerieInvaders extends CardImpl {
+public final class FaerieInvaders extends CardImpl {
public FaerieInvaders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieMacabre.java b/Mage.Sets/src/mage/cards/f/FaerieMacabre.java
index 25bc8c77f79..73e5d4aad74 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieMacabre.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieMacabre.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Plopman
*/
-public class FaerieMacabre extends CardImpl {
+public final class FaerieMacabre extends CardImpl {
public FaerieMacabre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieMechanist.java b/Mage.Sets/src/mage/cards/f/FaerieMechanist.java
index 49b7ac1f37b..a13bb41a006 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieMechanist.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieMechanist.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX
*/
-public class FaerieMechanist extends CardImpl {
+public final class FaerieMechanist extends CardImpl {
private static final FilterCard filter = new FilterCard("an artifact card");
static {
diff --git a/Mage.Sets/src/mage/cards/f/FaerieMiscreant.java b/Mage.Sets/src/mage/cards/f/FaerieMiscreant.java
index 8532d41b628..6f4ebd70fff 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieMiscreant.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieMiscreant.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class FaerieMiscreant extends CardImpl {
+public final class FaerieMiscreant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("you control another creature named Faerie Miscreant");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieNoble.java b/Mage.Sets/src/mage/cards/f/FaerieNoble.java
index 9f6689b16eb..7509392739f 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieNoble.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieNoble.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author ilcartographer
*/
-public class FaerieNoble extends CardImpl {
+public final class FaerieNoble extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Faerie creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieSquadron.java b/Mage.Sets/src/mage/cards/f/FaerieSquadron.java
index fb8cfdba0c5..cdac02a0eac 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieSquadron.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieSquadron.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
* @author LoneFox
*/
-public class FaerieSquadron extends CardImpl {
+public final class FaerieSquadron extends CardImpl {
public FaerieSquadron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieSwarm.java b/Mage.Sets/src/mage/cards/f/FaerieSwarm.java
index 35701a8c1e0..413f91b29f4 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieSwarm.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieSwarm.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class FaerieSwarm extends CardImpl {
+public final class FaerieSwarm extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("blue permanents you control");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieTauntings.java b/Mage.Sets/src/mage/cards/f/FaerieTauntings.java
index 95318c523c4..bc0e180e5fa 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieTauntings.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieTauntings.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class FaerieTauntings extends CardImpl {
+public final class FaerieTauntings extends CardImpl {
public FaerieTauntings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FaerieTrickery.java b/Mage.Sets/src/mage/cards/f/FaerieTrickery.java
index 3ef7b7e8b86..365470b73bb 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieTrickery.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieTrickery.java
@@ -43,7 +43,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class FaerieTrickery extends CardImpl {
+public final class FaerieTrickery extends CardImpl {
private static final FilterSpell filter = new FilterSpell("non-Faerie spell");
diff --git a/Mage.Sets/src/mage/cards/f/FailedInspection.java b/Mage.Sets/src/mage/cards/f/FailedInspection.java
index c623d48a459..d3ef83a39c7 100644
--- a/Mage.Sets/src/mage/cards/f/FailedInspection.java
+++ b/Mage.Sets/src/mage/cards/f/FailedInspection.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class FailedInspection extends CardImpl {
+public final class FailedInspection extends CardImpl {
public FailedInspection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FailureComply.java b/Mage.Sets/src/mage/cards/f/FailureComply.java
index 4b5663e31df..a84b3560816 100644
--- a/Mage.Sets/src/mage/cards/f/FailureComply.java
+++ b/Mage.Sets/src/mage/cards/f/FailureComply.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
/**
* @author spjspj
*/
-public class FailureComply extends SplitCard {
+public final class FailureComply extends SplitCard {
public FailureComply(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{1}{U}", "{W}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/f/FairgroundsTrumpeter.java b/Mage.Sets/src/mage/cards/f/FairgroundsTrumpeter.java
index 27ed3beda51..e45ac3f8cd2 100644
--- a/Mage.Sets/src/mage/cards/f/FairgroundsTrumpeter.java
+++ b/Mage.Sets/src/mage/cards/f/FairgroundsTrumpeter.java
@@ -51,7 +51,7 @@ import mage.watchers.Watcher;
/**
* @author spjspj
*/
-public class FairgroundsTrumpeter extends CardImpl {
+public final class FairgroundsTrumpeter extends CardImpl {
public FairgroundsTrumpeter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FairgroundsWarden.java b/Mage.Sets/src/mage/cards/f/FairgroundsWarden.java
index cda48678f7a..6d02c80e1b4 100644
--- a/Mage.Sets/src/mage/cards/f/FairgroundsWarden.java
+++ b/Mage.Sets/src/mage/cards/f/FairgroundsWarden.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class FairgroundsWarden extends CardImpl {
+public final class FairgroundsWarden extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/f/FaithHealer.java b/Mage.Sets/src/mage/cards/f/FaithHealer.java
index 0d0ae59ee1c..1cb2e646bf1 100644
--- a/Mage.Sets/src/mage/cards/f/FaithHealer.java
+++ b/Mage.Sets/src/mage/cards/f/FaithHealer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class FaithHealer extends CardImpl {
+public final class FaithHealer extends CardImpl {
public FaithHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FaithOfTheDevoted.java b/Mage.Sets/src/mage/cards/f/FaithOfTheDevoted.java
index 8b727ded217..9d7cdb11cec 100644
--- a/Mage.Sets/src/mage/cards/f/FaithOfTheDevoted.java
+++ b/Mage.Sets/src/mage/cards/f/FaithOfTheDevoted.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Styxo
*/
-public class FaithOfTheDevoted extends CardImpl {
+public final class FaithOfTheDevoted extends CardImpl {
public FaithOfTheDevoted(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FaithUnbroken.java b/Mage.Sets/src/mage/cards/f/FaithUnbroken.java
index 71bc4c4d667..36e76a74e95 100644
--- a/Mage.Sets/src/mage/cards/f/FaithUnbroken.java
+++ b/Mage.Sets/src/mage/cards/f/FaithUnbroken.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class FaithUnbroken extends CardImpl {
+public final class FaithUnbroken extends CardImpl {
private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/f/FaithbearerPaladin.java b/Mage.Sets/src/mage/cards/f/FaithbearerPaladin.java
index 684a8f1bf81..4b5c6959455 100644
--- a/Mage.Sets/src/mage/cards/f/FaithbearerPaladin.java
+++ b/Mage.Sets/src/mage/cards/f/FaithbearerPaladin.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class FaithbearerPaladin extends CardImpl {
+public final class FaithbearerPaladin extends CardImpl {
public FaithbearerPaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FaithfulSquire.java b/Mage.Sets/src/mage/cards/f/FaithfulSquire.java
index f400e04f3dc..00ad372609d 100644
--- a/Mage.Sets/src/mage/cards/f/FaithfulSquire.java
+++ b/Mage.Sets/src/mage/cards/f/FaithfulSquire.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX2
*/
-public class FaithfulSquire extends CardImpl {
+public final class FaithfulSquire extends CardImpl {
public FaithfulSquire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FaithlessLooting.java b/Mage.Sets/src/mage/cards/f/FaithlessLooting.java
index d3cc9b63103..ea951a4a8da 100644
--- a/Mage.Sets/src/mage/cards/f/FaithlessLooting.java
+++ b/Mage.Sets/src/mage/cards/f/FaithlessLooting.java
@@ -40,7 +40,7 @@ import mage.constants.TimingRule;
*
* @author Loki
*/
-public class FaithlessLooting extends CardImpl {
+public final class FaithlessLooting extends CardImpl {
public FaithlessLooting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FaithsFetters.java b/Mage.Sets/src/mage/cards/f/FaithsFetters.java
index cab93486324..ddc2a66227e 100644
--- a/Mage.Sets/src/mage/cards/f/FaithsFetters.java
+++ b/Mage.Sets/src/mage/cards/f/FaithsFetters.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
/**
* @author LevelX2
*/
-public class FaithsFetters extends CardImpl {
+public final class FaithsFetters extends CardImpl {
public FaithsFetters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FaithsReward.java b/Mage.Sets/src/mage/cards/f/FaithsReward.java
index fb413646831..6d685aaf9ce 100644
--- a/Mage.Sets/src/mage/cards/f/FaithsReward.java
+++ b/Mage.Sets/src/mage/cards/f/FaithsReward.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class FaithsReward extends CardImpl {
+public final class FaithsReward extends CardImpl {
public FaithsReward(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FaithsShield.java b/Mage.Sets/src/mage/cards/f/FaithsShield.java
index c5af9943f2f..683bf072c53 100644
--- a/Mage.Sets/src/mage/cards/f/FaithsShield.java
+++ b/Mage.Sets/src/mage/cards/f/FaithsShield.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author BetaSteward
*/
-public class FaithsShield extends CardImpl {
+public final class FaithsShield extends CardImpl {
public FaithsShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FalkenrathAristocrat.java b/Mage.Sets/src/mage/cards/f/FalkenrathAristocrat.java
index 5dfba5bc4a7..a398239143f 100644
--- a/Mage.Sets/src/mage/cards/f/FalkenrathAristocrat.java
+++ b/Mage.Sets/src/mage/cards/f/FalkenrathAristocrat.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class FalkenrathAristocrat extends CardImpl {
+public final class FalkenrathAristocrat extends CardImpl {
public FalkenrathAristocrat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FalkenrathExterminator.java b/Mage.Sets/src/mage/cards/f/FalkenrathExterminator.java
index 567e1a75c9f..401b2210dd7 100644
--- a/Mage.Sets/src/mage/cards/f/FalkenrathExterminator.java
+++ b/Mage.Sets/src/mage/cards/f/FalkenrathExterminator.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FalkenrathExterminator extends CardImpl {
+public final class FalkenrathExterminator extends CardImpl {
public FalkenrathExterminator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java b/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java
index a2ad8c4ad0a..c5109f77021 100644
--- a/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java
+++ b/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class FalkenrathGorger extends CardImpl {
+public final class FalkenrathGorger extends CardImpl {
public FalkenrathGorger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FalkenrathMarauders.java b/Mage.Sets/src/mage/cards/f/FalkenrathMarauders.java
index 9433765e71d..135c9a233fa 100644
--- a/Mage.Sets/src/mage/cards/f/FalkenrathMarauders.java
+++ b/Mage.Sets/src/mage/cards/f/FalkenrathMarauders.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author nantuko
*/
-public class FalkenrathMarauders extends CardImpl {
+public final class FalkenrathMarauders extends CardImpl {
public FalkenrathMarauders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FalkenrathNoble.java b/Mage.Sets/src/mage/cards/f/FalkenrathNoble.java
index a831ecd9673..f8741d9b0c1 100644
--- a/Mage.Sets/src/mage/cards/f/FalkenrathNoble.java
+++ b/Mage.Sets/src/mage/cards/f/FalkenrathNoble.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class FalkenrathNoble extends CardImpl {
+public final class FalkenrathNoble extends CardImpl {
public FalkenrathNoble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FalkenrathReaver.java b/Mage.Sets/src/mage/cards/f/FalkenrathReaver.java
index 1c6fa224452..32e9507d294 100644
--- a/Mage.Sets/src/mage/cards/f/FalkenrathReaver.java
+++ b/Mage.Sets/src/mage/cards/f/FalkenrathReaver.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class FalkenrathReaver extends CardImpl {
+public final class FalkenrathReaver extends CardImpl {
public FalkenrathReaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FalkenrathTorturer.java b/Mage.Sets/src/mage/cards/f/FalkenrathTorturer.java
index df58bd1c0a2..bbfe4bde784 100644
--- a/Mage.Sets/src/mage/cards/f/FalkenrathTorturer.java
+++ b/Mage.Sets/src/mage/cards/f/FalkenrathTorturer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class FalkenrathTorturer extends CardImpl {
+public final class FalkenrathTorturer extends CardImpl {
public FalkenrathTorturer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FallOfTheGavel.java b/Mage.Sets/src/mage/cards/f/FallOfTheGavel.java
index 79444cb2c22..3247ed77715 100644
--- a/Mage.Sets/src/mage/cards/f/FallOfTheGavel.java
+++ b/Mage.Sets/src/mage/cards/f/FallOfTheGavel.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class FallOfTheGavel extends CardImpl {
+public final class FallOfTheGavel extends CardImpl {
public FallOfTheGavel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FallOfTheHammer.java b/Mage.Sets/src/mage/cards/f/FallOfTheHammer.java
index bd2f90e43f7..6d8eca54394 100644
--- a/Mage.Sets/src/mage/cards/f/FallOfTheHammer.java
+++ b/Mage.Sets/src/mage/cards/f/FallOfTheHammer.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LevelX2
*/
-public class FallOfTheHammer extends CardImpl {
+public final class FallOfTheHammer extends CardImpl {
public FallOfTheHammer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FallOfTheThran.java b/Mage.Sets/src/mage/cards/f/FallOfTheThran.java
index b8fcd97dbce..8f0d176e58b 100644
--- a/Mage.Sets/src/mage/cards/f/FallOfTheThran.java
+++ b/Mage.Sets/src/mage/cards/f/FallOfTheThran.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class FallOfTheThran extends CardImpl {
+public final class FallOfTheThran extends CardImpl {
public FallOfTheThran(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FallOfTheTitans.java b/Mage.Sets/src/mage/cards/f/FallOfTheTitans.java
index e0e5b68bed2..e67d6160a6a 100644
--- a/Mage.Sets/src/mage/cards/f/FallOfTheTitans.java
+++ b/Mage.Sets/src/mage/cards/f/FallOfTheTitans.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class FallOfTheTitans extends CardImpl {
+public final class FallOfTheTitans extends CardImpl {
public FallOfTheTitans(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FallenAngel.java b/Mage.Sets/src/mage/cards/f/FallenAngel.java
index 7e7b5ade9bd..06a308a7bb7 100644
--- a/Mage.Sets/src/mage/cards/f/FallenAngel.java
+++ b/Mage.Sets/src/mage/cards/f/FallenAngel.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class FallenAngel extends CardImpl {
+public final class FallenAngel extends CardImpl {
public FallenAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FallenAskari.java b/Mage.Sets/src/mage/cards/f/FallenAskari.java
index 61a0cc73734..435616f4e21 100644
--- a/Mage.Sets/src/mage/cards/f/FallenAskari.java
+++ b/Mage.Sets/src/mage/cards/f/FallenAskari.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class FallenAskari extends CardImpl {
+public final class FallenAskari extends CardImpl {
public FallenAskari(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FallenCleric.java b/Mage.Sets/src/mage/cards/f/FallenCleric.java
index fcbda888f74..3e3ae70eb86 100644
--- a/Mage.Sets/src/mage/cards/f/FallenCleric.java
+++ b/Mage.Sets/src/mage/cards/f/FallenCleric.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class FallenCleric extends CardImpl {
+public final class FallenCleric extends CardImpl {
private static final FilterCard filter = new FilterCard("Clerics");
diff --git a/Mage.Sets/src/mage/cards/f/FallenFerromancer.java b/Mage.Sets/src/mage/cards/f/FallenFerromancer.java
index 4d4637ded59..d68401bc6dc 100644
--- a/Mage.Sets/src/mage/cards/f/FallenFerromancer.java
+++ b/Mage.Sets/src/mage/cards/f/FallenFerromancer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class FallenFerromancer extends CardImpl {
+public final class FallenFerromancer extends CardImpl {
public FallenFerromancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FallenIdeal.java b/Mage.Sets/src/mage/cards/f/FallenIdeal.java
index d522bc3df52..142e8d46413 100644
--- a/Mage.Sets/src/mage/cards/f/FallenIdeal.java
+++ b/Mage.Sets/src/mage/cards/f/FallenIdeal.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FallenIdeal extends CardImpl {
+public final class FallenIdeal extends CardImpl {
public FallenIdeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FallingTimber.java b/Mage.Sets/src/mage/cards/f/FallingTimber.java
index a78597c9d5c..63d159cb8b2 100644
--- a/Mage.Sets/src/mage/cards/f/FallingTimber.java
+++ b/Mage.Sets/src/mage/cards/f/FallingTimber.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class FallingTimber extends CardImpl {
+public final class FallingTimber extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/f/FallowEarth.java b/Mage.Sets/src/mage/cards/f/FallowEarth.java
index fbaa381e6d8..316420ced1e 100644
--- a/Mage.Sets/src/mage/cards/f/FallowEarth.java
+++ b/Mage.Sets/src/mage/cards/f/FallowEarth.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Quercitron
*/
-public class FallowEarth extends CardImpl {
+public final class FallowEarth extends CardImpl {
public FallowEarth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FallowWurm.java b/Mage.Sets/src/mage/cards/f/FallowWurm.java
index 3366c06d22e..7ee1979c9f8 100644
--- a/Mage.Sets/src/mage/cards/f/FallowWurm.java
+++ b/Mage.Sets/src/mage/cards/f/FallowWurm.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterLandCard;
*
* @author LoneFox
*/
-public class FallowWurm extends CardImpl {
+public final class FallowWurm extends CardImpl {
public FallowWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/Fallowsage.java b/Mage.Sets/src/mage/cards/f/Fallowsage.java
index 29941e5807e..cdae8d0578b 100644
--- a/Mage.Sets/src/mage/cards/f/Fallowsage.java
+++ b/Mage.Sets/src/mage/cards/f/Fallowsage.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class Fallowsage extends CardImpl {
+public final class Fallowsage extends CardImpl {
public Fallowsage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FalseCure.java b/Mage.Sets/src/mage/cards/f/FalseCure.java
index 90bac32aab2..aaf08c5220d 100644
--- a/Mage.Sets/src/mage/cards/f/FalseCure.java
+++ b/Mage.Sets/src/mage/cards/f/FalseCure.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class FalseCure extends CardImpl {
+public final class FalseCure extends CardImpl {
public FalseCure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FalseDefeat.java b/Mage.Sets/src/mage/cards/f/FalseDefeat.java
index df23b4f346e..0c7a7b308f5 100644
--- a/Mage.Sets/src/mage/cards/f/FalseDefeat.java
+++ b/Mage.Sets/src/mage/cards/f/FalseDefeat.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author ilcartographer
*/
-public class FalseDefeat extends CardImpl {
+public final class FalseDefeat extends CardImpl {
public FalseDefeat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FalseDemise.java b/Mage.Sets/src/mage/cards/f/FalseDemise.java
index cef5feae846..2d00ec0925d 100644
--- a/Mage.Sets/src/mage/cards/f/FalseDemise.java
+++ b/Mage.Sets/src/mage/cards/f/FalseDemise.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class FalseDemise extends CardImpl {
+public final class FalseDemise extends CardImpl {
public FalseDemise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FalseMemories.java b/Mage.Sets/src/mage/cards/f/FalseMemories.java
index 08f4cf2f031..a8293ba8ac2 100644
--- a/Mage.Sets/src/mage/cards/f/FalseMemories.java
+++ b/Mage.Sets/src/mage/cards/f/FalseMemories.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author L_J
*/
-public class FalseMemories extends CardImpl {
+public final class FalseMemories extends CardImpl {
public FalseMemories(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FalseMourning.java b/Mage.Sets/src/mage/cards/f/FalseMourning.java
index 5b3ab15f946..66001d54d8f 100644
--- a/Mage.Sets/src/mage/cards/f/FalseMourning.java
+++ b/Mage.Sets/src/mage/cards/f/FalseMourning.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LoneFox
*/
-public class FalseMourning extends CardImpl {
+public final class FalseMourning extends CardImpl {
public FalseMourning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FalseOrders.java b/Mage.Sets/src/mage/cards/f/FalseOrders.java
index c2dccd0b35e..b69b1a96a1e 100644
--- a/Mage.Sets/src/mage/cards/f/FalseOrders.java
+++ b/Mage.Sets/src/mage/cards/f/FalseOrders.java
@@ -61,7 +61,7 @@ import mage.watchers.common.BlockedByOnlyOneCreatureThisCombatWatcher;
*
* @author L_J
*/
-public class FalseOrders extends CardImpl {
+public final class FalseOrders extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature defending player controls");
@@ -121,85 +121,87 @@ class FalseOrdersUnblockEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Permanent permanent = game.getPermanent(source.getTargets().getFirstTarget());
- if (controller != null && permanent != null) {
+ if (controller == null || permanent == null) {
+ return false;
+ }
- // Remove target creature from combat
- Effect effect = new RemoveFromCombatTargetEffect();
- effect.apply(game, source);
+ // Remove target creature from combat
+ Effect effect = new RemoveFromCombatTargetEffect();
+ effect.apply(game, source);
- // Make blocked creatures unblocked
- BlockedByOnlyOneCreatureThisCombatWatcher watcher = (BlockedByOnlyOneCreatureThisCombatWatcher) game.getState().getWatchers().get(BlockedByOnlyOneCreatureThisCombatWatcher.class.getSimpleName());
- if (watcher != null) {
- Set combatGroups = watcher.getBlockedOnlyByCreature(permanent.getId());
- if (combatGroups != null) {
- for (CombatGroup combatGroup : combatGroups) {
- if (combatGroup != null) {
- combatGroup.setBlocked(false, game);
- }
+ // Make blocked creatures unblocked
+ BlockedByOnlyOneCreatureThisCombatWatcher watcher = (BlockedByOnlyOneCreatureThisCombatWatcher) game.getState().getWatchers().get(BlockedByOnlyOneCreatureThisCombatWatcher.class.getSimpleName());
+ if (watcher != null) {
+ Set combatGroups = watcher.getBlockedOnlyByCreature(permanent.getId());
+ if (combatGroups != null) {
+ for (CombatGroup combatGroup : combatGroups) {
+ if (combatGroup != null) {
+ combatGroup.setBlocked(false, game);
}
}
}
-
- // Choose new creature to block
- if (permanent.isCreature()) {
- if (controller.chooseUse(Outcome.Benefit, "Do you want " + permanent.getLogName() + " to block an attacking creature?", source, game)) {
- // according to the following mail response from MTG Rules Management about False Orders:
- // "if Player A attacks Players B and C, Player B's creatures cannot block creatures attacking Player C"
- // therefore we need to single out creatures attacking the target blocker's controller (disappointing, I know)
-
- List list = new ArrayList<>();
- for (CombatGroup combatGroup : game.getCombat().getGroups()) {
- if (combatGroup.getDefendingPlayerId().equals(permanent.getControllerId())) {
- for (UUID attackingCreatureId : combatGroup.getAttackers()) {
- Permanent targetsControllerAttacker = game.getPermanent(attackingCreatureId);
- list.add(targetsControllerAttacker);
- }
- }
- }
- Player targetsController = game.getPlayer(permanent.getControllerId());
- if (targetsController != null) {
- FilterAttackingCreature filter = new FilterAttackingCreature("creature attacking " + targetsController.getLogName());
- filter.add(new PermanentInListPredicate(list));
- TargetAttackingCreature target = new TargetAttackingCreature(1, 1, filter, true);
- if (target.canChoose(source.getSourceId(), controller.getId(), game)) {
- while (!target.isChosen() && target.canChoose(controller.getId(), game) && controller.canRespond()) {
- controller.chooseTarget(outcome, target, source, game);
- }
- } else {
- return true;
- }
- Permanent chosenPermanent = game.getPermanent(target.getFirstTarget());
- if (chosenPermanent != null && permanent != null && chosenPermanent.isCreature() && controller != null) {
- CombatGroup chosenGroup = game.getCombat().findGroup(chosenPermanent.getId());
- if (chosenGroup != null) {
- // Relevant ruling for Balduvian Warlord:
- // 7/15/2006 If an attacking creature has an ability that triggers “When this creature becomes blocked,”
- // it triggers when a creature blocks it due to the Warlord’s ability only if it was unblocked at that point.
- boolean notYetBlocked = chosenGroup.getBlockers().isEmpty();
- chosenGroup.addBlockerToGroup(permanent.getId(), controller.getId(), game);
- game.getCombat().addBlockingGroup(permanent.getId(), chosenPermanent.getId(), controller.getId(), game); // 702.21h
- if (notYetBlocked) {
- game.fireEvent(GameEvent.getEvent(GameEvent.EventType.CREATURE_BLOCKED, chosenPermanent.getId(), null));
- for (UUID bandedId : chosenPermanent.getBandedCards()) {
- CombatGroup bandedGroup = game.getCombat().findGroup(bandedId);
- if (bandedGroup != null && chosenGroup.getBlockers().size() == 1) {
- game.fireEvent(GameEvent.getEvent(GameEvent.EventType.CREATURE_BLOCKED, bandedId, null));
- }
- }
- }
- game.fireEvent(GameEvent.getEvent(GameEvent.EventType.BLOCKER_DECLARED, chosenPermanent.getId(), permanent.getId(), permanent.getControllerId()));
- }
- CombatGroup blockGroup = findBlockingGroup(permanent, game); // a new blockingGroup is formed, so it's necessary to find it again
- if (blockGroup != null) {
- blockGroup.pickAttackerOrder(permanent.getControllerId(), game);
- }
- }
- }
- }
- return true;
- }
}
- return false;
+
+ if (!permanent.isCreature()
+ || !controller.chooseUse(Outcome.Benefit, "Do you want " + permanent.getLogName() + " to block an attacking creature?", source, game)) {
+ return false;
+ }
+ // Choose new creature to block
+
+ // according to the following mail response from MTG Rules Management about False Orders:
+ // "if Player A attacks Players B and C, Player B's creatures cannot block creatures attacking Player C"
+ // therefore we need to single out creatures attacking the target blocker's controller (disappointing, I know)
+ List list = new ArrayList<>();
+ for (CombatGroup combatGroup : game.getCombat().getGroups()) {
+ if (combatGroup.getDefendingPlayerId().equals(permanent.getControllerId())) {
+ for (UUID attackingCreatureId : combatGroup.getAttackers()) {
+ Permanent targetsControllerAttacker = game.getPermanent(attackingCreatureId);
+ list.add(targetsControllerAttacker);
+ }
+ }
+ }
+ Player targetsController = game.getPlayer(permanent.getControllerId());
+ if (targetsController == null) {
+ return false;
+ }
+ FilterAttackingCreature filter = new FilterAttackingCreature("creature attacking " + targetsController.getLogName());
+ filter.add(new PermanentInListPredicate(list));
+ TargetAttackingCreature target = new TargetAttackingCreature(1, 1, filter, true);
+ if (target.canChoose(source.getSourceId(), controller.getId(), game)) {
+ while (!target.isChosen() && target.canChoose(controller.getId(), game) && controller.canRespond()) {
+ controller.chooseTarget(outcome, target, source, game);
+ }
+ } else {
+ return true;
+ }
+ Permanent chosenPermanent = game.getPermanent(target.getFirstTarget());
+ if (chosenPermanent == null || !chosenPermanent.isCreature()) {
+ return false;
+ }
+ CombatGroup chosenGroup = game.getCombat().findGroup(chosenPermanent.getId());
+ if (chosenGroup != null) {
+ // Relevant ruling for Balduvian Warlord:
+ // 7/15/2006 If an attacking creature has an ability that triggers “When this creature becomes blocked,”
+ // it triggers when a creature blocks it due to the Warlord’s ability only if it was unblocked at that point.
+ boolean notYetBlocked = chosenGroup.getBlockers().isEmpty();
+ chosenGroup.addBlockerToGroup(permanent.getId(), controller.getId(), game);
+ game.getCombat().addBlockingGroup(permanent.getId(), chosenPermanent.getId(), controller.getId(), game); // 702.21h
+ if (notYetBlocked) {
+ game.fireEvent(GameEvent.getEvent(GameEvent.EventType.CREATURE_BLOCKED, chosenPermanent.getId(), null));
+ for (UUID bandedId : chosenPermanent.getBandedCards()) {
+ CombatGroup bandedGroup = game.getCombat().findGroup(bandedId);
+ if (bandedGroup != null && chosenGroup.getBlockers().size() == 1) {
+ game.fireEvent(GameEvent.getEvent(GameEvent.EventType.CREATURE_BLOCKED, bandedId, null));
+ }
+ }
+ }
+ game.fireEvent(GameEvent.getEvent(GameEvent.EventType.BLOCKER_DECLARED, chosenPermanent.getId(), permanent.getId(), permanent.getControllerId()));
+ }
+ CombatGroup blockGroup = findBlockingGroup(permanent, game); // a new blockingGroup is formed, so it's necessary to find it again
+ if (blockGroup != null) {
+ blockGroup.pickAttackerOrder(permanent.getControllerId(), game);
+ }
+ return true;
}
private CombatGroup findBlockingGroup(Permanent blocker, Game game) {
diff --git a/Mage.Sets/src/mage/cards/f/FalsePeace.java b/Mage.Sets/src/mage/cards/f/FalsePeace.java
index 5b1da9a76fe..999ddd47ae9 100644
--- a/Mage.Sets/src/mage/cards/f/FalsePeace.java
+++ b/Mage.Sets/src/mage/cards/f/FalsePeace.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class FalsePeace extends CardImpl {
+public final class FalsePeace extends CardImpl {
public FalsePeace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FalseProphet.java b/Mage.Sets/src/mage/cards/f/FalseProphet.java
index a58d41eb94d..37e5d128509 100644
--- a/Mage.Sets/src/mage/cards/f/FalseProphet.java
+++ b/Mage.Sets/src/mage/cards/f/FalseProphet.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterCreaturePermanent;
* @author LoneFox
*/
-public class FalseProphet extends CardImpl {
+public final class FalseProphet extends CardImpl {
public FalseProphet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FalseSummoning.java b/Mage.Sets/src/mage/cards/f/FalseSummoning.java
index a6f5b12864d..c54ed58ae1e 100644
--- a/Mage.Sets/src/mage/cards/f/FalseSummoning.java
+++ b/Mage.Sets/src/mage/cards/f/FalseSummoning.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author Jgod
*/
-public class FalseSummoning extends CardImpl {
+public final class FalseSummoning extends CardImpl {
public FalseSummoning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Falter.java b/Mage.Sets/src/mage/cards/f/Falter.java
index 28b78eb3b00..697378a2447 100644
--- a/Mage.Sets/src/mage/cards/f/Falter.java
+++ b/Mage.Sets/src/mage/cards/f/Falter.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class Falter extends CardImpl {
+public final class Falter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/f/FamiliarGround.java b/Mage.Sets/src/mage/cards/f/FamiliarGround.java
index 067575975e5..dc51ed88991 100644
--- a/Mage.Sets/src/mage/cards/f/FamiliarGround.java
+++ b/Mage.Sets/src/mage/cards/f/FamiliarGround.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Quercitron
*/
-public class FamiliarGround extends CardImpl {
+public final class FamiliarGround extends CardImpl {
public FamiliarGround(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FamiliarsRuse.java b/Mage.Sets/src/mage/cards/f/FamiliarsRuse.java
index 1251e162f91..6254a83a09e 100644
--- a/Mage.Sets/src/mage/cards/f/FamiliarsRuse.java
+++ b/Mage.Sets/src/mage/cards/f/FamiliarsRuse.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class FamiliarsRuse extends CardImpl {
+public final class FamiliarsRuse extends CardImpl {
public FamiliarsRuse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Famine.java b/Mage.Sets/src/mage/cards/f/Famine.java
index fb18ad6a284..23b9d6ab3e1 100644
--- a/Mage.Sets/src/mage/cards/f/Famine.java
+++ b/Mage.Sets/src/mage/cards/f/Famine.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class Famine extends CardImpl {
+public final class Famine extends CardImpl {
public Famine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FamishedGhoul.java b/Mage.Sets/src/mage/cards/f/FamishedGhoul.java
index 746b68c137f..9e2dffac1b4 100644
--- a/Mage.Sets/src/mage/cards/f/FamishedGhoul.java
+++ b/Mage.Sets/src/mage/cards/f/FamishedGhoul.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author cbt33
*/
-public class FamishedGhoul extends CardImpl {
+public final class FamishedGhoul extends CardImpl {
public FamishedGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FamishedPaladin.java b/Mage.Sets/src/mage/cards/f/FamishedPaladin.java
index 20c08ae58df..0133f71bafc 100644
--- a/Mage.Sets/src/mage/cards/f/FamishedPaladin.java
+++ b/Mage.Sets/src/mage/cards/f/FamishedPaladin.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author L_J
*/
-public class FamishedPaladin extends CardImpl {
+public final class FamishedPaladin extends CardImpl {
public FamishedPaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FanBearer.java b/Mage.Sets/src/mage/cards/f/FanBearer.java
index 27ff675c8a5..19d2eca5b5d 100644
--- a/Mage.Sets/src/mage/cards/f/FanBearer.java
+++ b/Mage.Sets/src/mage/cards/f/FanBearer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FanBearer extends CardImpl {
+public final class FanBearer extends CardImpl {
public FanBearer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FanFavorite.java b/Mage.Sets/src/mage/cards/f/FanFavorite.java
new file mode 100644
index 00000000000..15a8f7c3624
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/f/FanFavorite.java
@@ -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.f;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.ActivatedAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.InfoEffect;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.abilities.keyword.AssistAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.constants.TargetController;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class FanFavorite extends CardImpl {
+
+ public FanFavorite(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.ROGUE);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // {2}: Fan Favorite gets +1/+1 until end of turn. Any player may activate this ability.
+ ActivatedAbility ability = new SimpleActivatedAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), new GenericManaCost(2));
+ ability.setMayActivate(TargetController.ANY);
+ ability.addEffect(new InfoEffect("Any player may activate this ability"));
+ this.addAbility(ability);
+ }
+
+ public FanFavorite(final FanFavorite card) {
+ super(card);
+ }
+
+ @Override
+ public FanFavorite copy() {
+ return new FanFavorite(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/f/FanaticOfMogis.java b/Mage.Sets/src/mage/cards/f/FanaticOfMogis.java
index 5abbdee8fb9..2d4798adec9 100644
--- a/Mage.Sets/src/mage/cards/f/FanaticOfMogis.java
+++ b/Mage.Sets/src/mage/cards/f/FanaticOfMogis.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class FanaticOfMogis extends CardImpl {
+public final class FanaticOfMogis extends CardImpl {
public FanaticOfMogis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FanaticOfXenagos.java b/Mage.Sets/src/mage/cards/f/FanaticOfXenagos.java
index 7d8170a8cc3..52523f9fa66 100644
--- a/Mage.Sets/src/mage/cards/f/FanaticOfXenagos.java
+++ b/Mage.Sets/src/mage/cards/f/FanaticOfXenagos.java
@@ -48,7 +48,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class FanaticOfXenagos extends CardImpl {
+public final class FanaticOfXenagos extends CardImpl {
public FanaticOfXenagos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FanaticalDevotion.java b/Mage.Sets/src/mage/cards/f/FanaticalDevotion.java
index 56ffcb98bc6..7586c57e576 100644
--- a/Mage.Sets/src/mage/cards/f/FanaticalDevotion.java
+++ b/Mage.Sets/src/mage/cards/f/FanaticalDevotion.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FanaticalDevotion extends CardImpl {
+public final class FanaticalDevotion extends CardImpl {
public FanaticalDevotion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FanaticalFever.java b/Mage.Sets/src/mage/cards/f/FanaticalFever.java
index b2bb54a67de..fd14468a022 100644
--- a/Mage.Sets/src/mage/cards/f/FanaticalFever.java
+++ b/Mage.Sets/src/mage/cards/f/FanaticalFever.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author hanasu
*/
-public class FanaticalFever extends CardImpl {
+public final class FanaticalFever extends CardImpl {
public FanaticalFever(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FanaticalFirebrand.java b/Mage.Sets/src/mage/cards/f/FanaticalFirebrand.java
index ce17cbd4f17..2df9a877a16 100644
--- a/Mage.Sets/src/mage/cards/f/FanaticalFirebrand.java
+++ b/Mage.Sets/src/mage/cards/f/FanaticalFirebrand.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author JayDi85
*/
-public class FanaticalFirebrand extends CardImpl {
+public final class FanaticalFirebrand extends CardImpl {
public FanaticalFirebrand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FangOfThePack.java b/Mage.Sets/src/mage/cards/f/FangOfThePack.java
index 761816efd92..a8897fbdabb 100644
--- a/Mage.Sets/src/mage/cards/f/FangOfThePack.java
+++ b/Mage.Sets/src/mage/cards/f/FangOfThePack.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Styxo
*/
-public class FangOfThePack extends CardImpl {
+public final class FangOfThePack extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control");
diff --git a/Mage.Sets/src/mage/cards/f/FangSkulkin.java b/Mage.Sets/src/mage/cards/f/FangSkulkin.java
index cc3c912accd..7db35b1b2d1 100644
--- a/Mage.Sets/src/mage/cards/f/FangSkulkin.java
+++ b/Mage.Sets/src/mage/cards/f/FangSkulkin.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class FangSkulkin extends CardImpl {
+public final class FangSkulkin extends CardImpl {
private static final FilterCreaturePermanent filterBlackCreature = new FilterCreaturePermanent("black creature");
diff --git a/Mage.Sets/src/mage/cards/f/FangrenFirstborn.java b/Mage.Sets/src/mage/cards/f/FangrenFirstborn.java
index b223ab2722f..e4f7b9739b7 100644
--- a/Mage.Sets/src/mage/cards/f/FangrenFirstborn.java
+++ b/Mage.Sets/src/mage/cards/f/FangrenFirstborn.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author emerald000
*/
-public class FangrenFirstborn extends CardImpl {
+public final class FangrenFirstborn extends CardImpl {
public FangrenFirstborn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FangrenHunter.java b/Mage.Sets/src/mage/cards/f/FangrenHunter.java
index e9933626942..1fbd1dc7761 100644
--- a/Mage.Sets/src/mage/cards/f/FangrenHunter.java
+++ b/Mage.Sets/src/mage/cards/f/FangrenHunter.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FangrenHunter extends CardImpl {
+public final class FangrenHunter extends CardImpl {
public FangrenHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FangrenMarauder.java b/Mage.Sets/src/mage/cards/f/FangrenMarauder.java
index cde625c951a..f2c2525abd4 100644
--- a/Mage.Sets/src/mage/cards/f/FangrenMarauder.java
+++ b/Mage.Sets/src/mage/cards/f/FangrenMarauder.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author North
*/
-public class FangrenMarauder extends CardImpl {
+public final class FangrenMarauder extends CardImpl {
public FangrenMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FangrenPathcutter.java b/Mage.Sets/src/mage/cards/f/FangrenPathcutter.java
index 305aa2d7baf..4daa0612c19 100644
--- a/Mage.Sets/src/mage/cards/f/FangrenPathcutter.java
+++ b/Mage.Sets/src/mage/cards/f/FangrenPathcutter.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author Plopman
*/
-public class FangrenPathcutter extends CardImpl {
+public final class FangrenPathcutter extends CardImpl {
public FangrenPathcutter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FanningTheFlames.java b/Mage.Sets/src/mage/cards/f/FanningTheFlames.java
index 6a88351046c..355189e18c9 100644
--- a/Mage.Sets/src/mage/cards/f/FanningTheFlames.java
+++ b/Mage.Sets/src/mage/cards/f/FanningTheFlames.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class FanningTheFlames extends CardImpl {
+public final class FanningTheFlames extends CardImpl {
public FanningTheFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FarAway.java b/Mage.Sets/src/mage/cards/f/FarAway.java
index 70b790c2a9e..a0c95d016ba 100644
--- a/Mage.Sets/src/mage/cards/f/FarAway.java
+++ b/Mage.Sets/src/mage/cards/f/FarAway.java
@@ -38,7 +38,7 @@ import mage.filter.StaticFilters;
import mage.target.TargetPlayer;
import mage.target.common.TargetCreaturePermanent;
-public class FarAway extends SplitCard {
+public final class FarAway extends SplitCard {
public FarAway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}", "{2}{B}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/f/FarWanderings.java b/Mage.Sets/src/mage/cards/f/FarWanderings.java
index 95f0f581c14..218b9cdc67f 100644
--- a/Mage.Sets/src/mage/cards/f/FarWanderings.java
+++ b/Mage.Sets/src/mage/cards/f/FarWanderings.java
@@ -44,7 +44,7 @@ import java.util.UUID;
* @author fireshoes
*/
-public class FarWanderings extends CardImpl {
+public final class FarWanderings extends CardImpl {
public FarWanderings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
@@ -52,8 +52,8 @@ public class FarWanderings extends CardImpl {
// Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library.
// Threshold - If seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.
Effect effect = new ConditionalOneShotEffect(
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new CardsInControllerGraveCondition(7),
"Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library.
Threshold — If seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.");
this.getSpellAbility().addEffect(effect);
diff --git a/Mage.Sets/src/mage/cards/f/FarbogBoneflinger.java b/Mage.Sets/src/mage/cards/f/FarbogBoneflinger.java
index 35dbf756313..3473c5194c7 100644
--- a/Mage.Sets/src/mage/cards/f/FarbogBoneflinger.java
+++ b/Mage.Sets/src/mage/cards/f/FarbogBoneflinger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FarbogBoneflinger extends CardImpl {
+public final class FarbogBoneflinger extends CardImpl {
public FarbogBoneflinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FarbogExplorer.java b/Mage.Sets/src/mage/cards/f/FarbogExplorer.java
index f33fc217785..f2d7ce5e5a5 100644
--- a/Mage.Sets/src/mage/cards/f/FarbogExplorer.java
+++ b/Mage.Sets/src/mage/cards/f/FarbogExplorer.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FarbogExplorer extends CardImpl {
+public final class FarbogExplorer extends CardImpl {
public FarbogExplorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FarbogRevenant.java b/Mage.Sets/src/mage/cards/f/FarbogRevenant.java
index 3bdfb80d93c..37c49512929 100644
--- a/Mage.Sets/src/mage/cards/f/FarbogRevenant.java
+++ b/Mage.Sets/src/mage/cards/f/FarbogRevenant.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class FarbogRevenant extends CardImpl {
+public final class FarbogRevenant extends CardImpl {
public FarbogRevenant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FarhavenElf.java b/Mage.Sets/src/mage/cards/f/FarhavenElf.java
index ca27b784fa2..92ffa936321 100644
--- a/Mage.Sets/src/mage/cards/f/FarhavenElf.java
+++ b/Mage.Sets/src/mage/cards/f/FarhavenElf.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author North
*/
-public class FarhavenElf extends CardImpl {
+public final class FarhavenElf extends CardImpl {
public FarhavenElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
@@ -54,7 +54,7 @@ public class FarhavenElf extends CardImpl {
this.toughness = new MageInt(1);
// When Farhaven Elf enters the battlefield, you may search your library for a basic land card and put it onto the battlefield tapped. If you do, shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, false), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, false), true));
}
public FarhavenElf(final FarhavenElf card) {
diff --git a/Mage.Sets/src/mage/cards/f/FarmMarket.java b/Mage.Sets/src/mage/cards/f/FarmMarket.java
index 19b1fc65a2d..9bbbd327cf5 100644
--- a/Mage.Sets/src/mage/cards/f/FarmMarket.java
+++ b/Mage.Sets/src/mage/cards/f/FarmMarket.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author LevelX2
*/
-public class FarmMarket extends SplitCard {
+public final class FarmMarket extends SplitCard {
public FarmMarket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{2}{W}", "{2}{U}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/f/Farmstead.java b/Mage.Sets/src/mage/cards/f/Farmstead.java
index 4620c4be674..480450fc5eb 100644
--- a/Mage.Sets/src/mage/cards/f/Farmstead.java
+++ b/Mage.Sets/src/mage/cards/f/Farmstead.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class Farmstead extends CardImpl {
+public final class Farmstead extends CardImpl {
public Farmstead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FarrelitePriest.java b/Mage.Sets/src/mage/cards/f/FarrelitePriest.java
index fd9c27afc1c..2522e382571 100644
--- a/Mage.Sets/src/mage/cards/f/FarrelitePriest.java
+++ b/Mage.Sets/src/mage/cards/f/FarrelitePriest.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author MarcoMarin
*/
-public class FarrelitePriest extends CardImpl {
+public final class FarrelitePriest extends CardImpl {
public FarrelitePriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FarrelsMantle.java b/Mage.Sets/src/mage/cards/f/FarrelsMantle.java
index e24f2981817..a3f38821d27 100644
--- a/Mage.Sets/src/mage/cards/f/FarrelsMantle.java
+++ b/Mage.Sets/src/mage/cards/f/FarrelsMantle.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author MarcoMarin
*/
-public class FarrelsMantle extends CardImpl {
+public final class FarrelsMantle extends CardImpl {
public FarrelsMantle(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/f/FarrelsZealot.java b/Mage.Sets/src/mage/cards/f/FarrelsZealot.java
index 6ed4e9f1f9d..8f0f2cfed9a 100644
--- a/Mage.Sets/src/mage/cards/f/FarrelsZealot.java
+++ b/Mage.Sets/src/mage/cards/f/FarrelsZealot.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FarrelsZealot extends CardImpl {
+public final class FarrelsZealot extends CardImpl {
public FarrelsZealot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/Farseek.java b/Mage.Sets/src/mage/cards/f/Farseek.java
index fd149ac59ff..f7de85f18bd 100644
--- a/Mage.Sets/src/mage/cards/f/Farseek.java
+++ b/Mage.Sets/src/mage/cards/f/Farseek.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class Farseek extends CardImpl {
+public final class Farseek extends CardImpl {
private static final FilterCard filter = new FilterCard("Plains, Island, Swamp, or Mountain card");
diff --git a/Mage.Sets/src/mage/cards/f/FarsightMask.java b/Mage.Sets/src/mage/cards/f/FarsightMask.java
index b70d7a49b87..472f63f1b8f 100644
--- a/Mage.Sets/src/mage/cards/f/FarsightMask.java
+++ b/Mage.Sets/src/mage/cards/f/FarsightMask.java
@@ -41,7 +41,7 @@ import mage.game.permanent.Permanent;
/**
* @author North
*/
-public class FarsightMask extends CardImpl {
+public final class FarsightMask extends CardImpl {
public FarsightMask(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/f/Fascination.java b/Mage.Sets/src/mage/cards/f/Fascination.java
index 655625773fc..64695e6954a 100644
--- a/Mage.Sets/src/mage/cards/f/Fascination.java
+++ b/Mage.Sets/src/mage/cards/f/Fascination.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author emerald000
*/
-public class Fascination extends CardImpl {
+public final class Fascination extends CardImpl {
public Fascination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Fastbond.java b/Mage.Sets/src/mage/cards/f/Fastbond.java
index 6f5eb254a0c..9f423809830 100644
--- a/Mage.Sets/src/mage/cards/f/Fastbond.java
+++ b/Mage.Sets/src/mage/cards/f/Fastbond.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class Fastbond extends CardImpl {
+public final class Fastbond extends CardImpl {
public Fastbond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/f/Fasting.java b/Mage.Sets/src/mage/cards/f/Fasting.java
index 407ae9d49a8..44b758b2ae6 100644
--- a/Mage.Sets/src/mage/cards/f/Fasting.java
+++ b/Mage.Sets/src/mage/cards/f/Fasting.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class Fasting extends CardImpl {
+public final class Fasting extends CardImpl {
public Fasting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FatalAttraction.java b/Mage.Sets/src/mage/cards/f/FatalAttraction.java
index 6e4754992c8..38305304789 100644
--- a/Mage.Sets/src/mage/cards/f/FatalAttraction.java
+++ b/Mage.Sets/src/mage/cards/f/FatalAttraction.java
@@ -47,7 +47,7 @@ import mage.constants.TargetController;
*
* @author TheElk801
*/
-public class FatalAttraction extends CardImpl {
+public final class FatalAttraction extends CardImpl {
public FatalAttraction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FatalBlow.java b/Mage.Sets/src/mage/cards/f/FatalBlow.java
index 7e51b2bc52d..27121acbe0b 100644
--- a/Mage.Sets/src/mage/cards/f/FatalBlow.java
+++ b/Mage.Sets/src/mage/cards/f/FatalBlow.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class FatalBlow extends CardImpl {
+public final class FatalBlow extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn");
diff --git a/Mage.Sets/src/mage/cards/f/FatalFrenzy.java b/Mage.Sets/src/mage/cards/f/FatalFrenzy.java
index 2794d52a209..3859e12bd7f 100644
--- a/Mage.Sets/src/mage/cards/f/FatalFrenzy.java
+++ b/Mage.Sets/src/mage/cards/f/FatalFrenzy.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class FatalFrenzy extends CardImpl {
+public final class FatalFrenzy extends CardImpl {
public FatalFrenzy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FatalFumes.java b/Mage.Sets/src/mage/cards/f/FatalFumes.java
index 95b030fedc3..156f0fd85dd 100644
--- a/Mage.Sets/src/mage/cards/f/FatalFumes.java
+++ b/Mage.Sets/src/mage/cards/f/FatalFumes.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
-public class FatalFumes extends CardImpl {
+public final class FatalFumes extends CardImpl {
public FatalFumes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FatalMutation.java b/Mage.Sets/src/mage/cards/f/FatalMutation.java
index e1eb3a21012..bf1d4e3ef31 100644
--- a/Mage.Sets/src/mage/cards/f/FatalMutation.java
+++ b/Mage.Sets/src/mage/cards/f/FatalMutation.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FatalMutation extends CardImpl {
+public final class FatalMutation extends CardImpl {
public FatalMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FatalPush.java b/Mage.Sets/src/mage/cards/f/FatalPush.java
index 173e0d215fc..dae5122c415 100644
--- a/Mage.Sets/src/mage/cards/f/FatalPush.java
+++ b/Mage.Sets/src/mage/cards/f/FatalPush.java
@@ -45,7 +45,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author emerald000
*/
-public class FatalPush extends CardImpl {
+public final class FatalPush extends CardImpl {
public FatalPush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FateForetold.java b/Mage.Sets/src/mage/cards/f/FateForetold.java
index 23343f0715c..26d40d59f92 100644
--- a/Mage.Sets/src/mage/cards/f/FateForetold.java
+++ b/Mage.Sets/src/mage/cards/f/FateForetold.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FateForetold extends CardImpl {
+public final class FateForetold extends CardImpl {
public FateForetold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FateForgotten.java b/Mage.Sets/src/mage/cards/f/FateForgotten.java
index 71f07a5f0ea..41d6b387420 100644
--- a/Mage.Sets/src/mage/cards/f/FateForgotten.java
+++ b/Mage.Sets/src/mage/cards/f/FateForgotten.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class FateForgotten extends CardImpl {
+public final class FateForgotten extends CardImpl {
public FateForgotten(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FateTransfer.java b/Mage.Sets/src/mage/cards/f/FateTransfer.java
index 523ac5aa641..5cf735900bf 100644
--- a/Mage.Sets/src/mage/cards/f/FateTransfer.java
+++ b/Mage.Sets/src/mage/cards/f/FateTransfer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class FateTransfer extends CardImpl {
+public final class FateTransfer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("target creature to move all counters from");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another target creature to move all counters to");
diff --git a/Mage.Sets/src/mage/cards/f/FateUnraveler.java b/Mage.Sets/src/mage/cards/f/FateUnraveler.java
index 8c4df6e5b22..d8578fcbff3 100644
--- a/Mage.Sets/src/mage/cards/f/FateUnraveler.java
+++ b/Mage.Sets/src/mage/cards/f/FateUnraveler.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Quercitron
*/
-public class FateUnraveler extends CardImpl {
+public final class FateUnraveler extends CardImpl {
public FateUnraveler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FatedConflagration.java b/Mage.Sets/src/mage/cards/f/FatedConflagration.java
index 5c16d58bd1b..70bf04da469 100644
--- a/Mage.Sets/src/mage/cards/f/FatedConflagration.java
+++ b/Mage.Sets/src/mage/cards/f/FatedConflagration.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
*
* @author LevelX2
*/
-public class FatedConflagration extends CardImpl {
+public final class FatedConflagration extends CardImpl {
public FatedConflagration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FatedInfatuation.java b/Mage.Sets/src/mage/cards/f/FatedInfatuation.java
index a5c82de3d8f..9e7a09e7c44 100644
--- a/Mage.Sets/src/mage/cards/f/FatedInfatuation.java
+++ b/Mage.Sets/src/mage/cards/f/FatedInfatuation.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class FatedInfatuation extends CardImpl {
+public final class FatedInfatuation extends CardImpl {
public FatedInfatuation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FatedIntervention.java b/Mage.Sets/src/mage/cards/f/FatedIntervention.java
index 3acd2b4cfe5..db46bb71e77 100644
--- a/Mage.Sets/src/mage/cards/f/FatedIntervention.java
+++ b/Mage.Sets/src/mage/cards/f/FatedIntervention.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.CentaurEnchantmentCreatureToken;
*
* @author LevelX2
*/
-public class FatedIntervention extends CardImpl {
+public final class FatedIntervention extends CardImpl {
public FatedIntervention(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FatedRetribution.java b/Mage.Sets/src/mage/cards/f/FatedRetribution.java
index ab01ef0a903..8a12a7d9f87 100644
--- a/Mage.Sets/src/mage/cards/f/FatedRetribution.java
+++ b/Mage.Sets/src/mage/cards/f/FatedRetribution.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class FatedRetribution extends CardImpl {
+public final class FatedRetribution extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creatures and planeswalkers");
static {
diff --git a/Mage.Sets/src/mage/cards/f/FatedReturn.java b/Mage.Sets/src/mage/cards/f/FatedReturn.java
index 566fb0cf762..4dd8897a18a 100644
--- a/Mage.Sets/src/mage/cards/f/FatedReturn.java
+++ b/Mage.Sets/src/mage/cards/f/FatedReturn.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class FatedReturn extends CardImpl {
+public final class FatedReturn extends CardImpl {
public FatedReturn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FatefulShowdown.java b/Mage.Sets/src/mage/cards/f/FatefulShowdown.java
index 733cb73732a..9f9e6a8a6c8 100644
--- a/Mage.Sets/src/mage/cards/f/FatefulShowdown.java
+++ b/Mage.Sets/src/mage/cards/f/FatefulShowdown.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class FatefulShowdown extends CardImpl {
+public final class FatefulShowdown extends CardImpl {
public FatefulShowdown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Fatespinner.java b/Mage.Sets/src/mage/cards/f/Fatespinner.java
index 01c6b428375..512e3ddcd8a 100644
--- a/Mage.Sets/src/mage/cards/f/Fatespinner.java
+++ b/Mage.Sets/src/mage/cards/f/Fatespinner.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LoneFox
*/
-public class Fatespinner extends CardImpl {
+public final class Fatespinner extends CardImpl {
public Fatespinner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Fatestitcher.java b/Mage.Sets/src/mage/cards/f/Fatestitcher.java
index 97e2363447b..269570e8545 100644
--- a/Mage.Sets/src/mage/cards/f/Fatestitcher.java
+++ b/Mage.Sets/src/mage/cards/f/Fatestitcher.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class Fatestitcher extends CardImpl {
+public final class Fatestitcher extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another target permanent");
static{
diff --git a/Mage.Sets/src/mage/cards/f/FathomFeeder.java b/Mage.Sets/src/mage/cards/f/FathomFeeder.java
index 97dbc468d9d..7fe6930bf5f 100644
--- a/Mage.Sets/src/mage/cards/f/FathomFeeder.java
+++ b/Mage.Sets/src/mage/cards/f/FathomFeeder.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class FathomFeeder extends CardImpl {
+public final class FathomFeeder extends CardImpl {
public FathomFeeder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FathomFleetBoarder.java b/Mage.Sets/src/mage/cards/f/FathomFleetBoarder.java
index ae6e45938df..99c0f001e9b 100644
--- a/Mage.Sets/src/mage/cards/f/FathomFleetBoarder.java
+++ b/Mage.Sets/src/mage/cards/f/FathomFleetBoarder.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class FathomFleetBoarder extends CardImpl {
+public final class FathomFleetBoarder extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control another Pirate");
diff --git a/Mage.Sets/src/mage/cards/f/FathomFleetCaptain.java b/Mage.Sets/src/mage/cards/f/FathomFleetCaptain.java
index 9d7913136a9..d0a93c18501 100644
--- a/Mage.Sets/src/mage/cards/f/FathomFleetCaptain.java
+++ b/Mage.Sets/src/mage/cards/f/FathomFleetCaptain.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.PirateToken;
*
* @author TheElk801
*/
-public class FathomFleetCaptain extends CardImpl {
+public final class FathomFleetCaptain extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another nontoken Pirate");
diff --git a/Mage.Sets/src/mage/cards/f/FathomFleetCutthroat.java b/Mage.Sets/src/mage/cards/f/FathomFleetCutthroat.java
index cb3a84b6190..ee8acff1dbe 100644
--- a/Mage.Sets/src/mage/cards/f/FathomFleetCutthroat.java
+++ b/Mage.Sets/src/mage/cards/f/FathomFleetCutthroat.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class FathomFleetCutthroat extends CardImpl {
+public final class FathomFleetCutthroat extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls that was dealt damage this turn");
diff --git a/Mage.Sets/src/mage/cards/f/FathomFleetFirebrand.java b/Mage.Sets/src/mage/cards/f/FathomFleetFirebrand.java
index 9e03ba0b03f..4a82c10211d 100644
--- a/Mage.Sets/src/mage/cards/f/FathomFleetFirebrand.java
+++ b/Mage.Sets/src/mage/cards/f/FathomFleetFirebrand.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class FathomFleetFirebrand extends CardImpl {
+public final class FathomFleetFirebrand extends CardImpl {
public FathomFleetFirebrand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FathomMage.java b/Mage.Sets/src/mage/cards/f/FathomMage.java
index 58a99d3219c..cfefbc3b7f6 100644
--- a/Mage.Sets/src/mage/cards/f/FathomMage.java
+++ b/Mage.Sets/src/mage/cards/f/FathomMage.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Plopman
*/
-public class FathomMage extends CardImpl {
+public final class FathomMage extends CardImpl {
public FathomMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FathomSeer.java b/Mage.Sets/src/mage/cards/f/FathomSeer.java
index 02d7b8a18ff..164818c9c48 100644
--- a/Mage.Sets/src/mage/cards/f/FathomSeer.java
+++ b/Mage.Sets/src/mage/cards/f/FathomSeer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class FathomSeer extends CardImpl {
+public final class FathomSeer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Islands");
diff --git a/Mage.Sets/src/mage/cards/f/FathomTrawl.java b/Mage.Sets/src/mage/cards/f/FathomTrawl.java
index 6287eff1d0a..b962633de36 100644
--- a/Mage.Sets/src/mage/cards/f/FathomTrawl.java
+++ b/Mage.Sets/src/mage/cards/f/FathomTrawl.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author Derpthemeus
*/
-public class FathomTrawl extends CardImpl {
+public final class FathomTrawl extends CardImpl {
public FathomTrawl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FaultLine.java b/Mage.Sets/src/mage/cards/f/FaultLine.java
index 1d2099ba988..00f656dd157 100644
--- a/Mage.Sets/src/mage/cards/f/FaultLine.java
+++ b/Mage.Sets/src/mage/cards/f/FaultLine.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class FaultLine extends CardImpl {
+public final class FaultLine extends CardImpl {
public FaultLine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FaultRiders.java b/Mage.Sets/src/mage/cards/f/FaultRiders.java
index 97f98ba0056..f9fd9cbc554 100644
--- a/Mage.Sets/src/mage/cards/f/FaultRiders.java
+++ b/Mage.Sets/src/mage/cards/f/FaultRiders.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class FaultRiders extends CardImpl {
+public final class FaultRiders extends CardImpl {
public FaultRiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Faultgrinder.java b/Mage.Sets/src/mage/cards/f/Faultgrinder.java
index 0e4a4f9c0aa..53819c69a77 100644
--- a/Mage.Sets/src/mage/cards/f/Faultgrinder.java
+++ b/Mage.Sets/src/mage/cards/f/Faultgrinder.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class Faultgrinder extends CardImpl {
+public final class Faultgrinder extends CardImpl {
public Faultgrinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FaunaShaman.java b/Mage.Sets/src/mage/cards/f/FaunaShaman.java
index ff75aecdba7..961b40d47c6 100644
--- a/Mage.Sets/src/mage/cards/f/FaunaShaman.java
+++ b/Mage.Sets/src/mage/cards/f/FaunaShaman.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author BetaSteward_at_googlemail.com
*/
-public class FaunaShaman extends CardImpl {
+public final class FaunaShaman extends CardImpl {
public FaunaShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FavorOfTheMighty.java b/Mage.Sets/src/mage/cards/f/FavorOfTheMighty.java
index aea2316e0fc..6ba638ec970 100644
--- a/Mage.Sets/src/mage/cards/f/FavorOfTheMighty.java
+++ b/Mage.Sets/src/mage/cards/f/FavorOfTheMighty.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class FavorOfTheMighty extends CardImpl {
+public final class FavorOfTheMighty extends CardImpl {
public FavorOfTheMighty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FavorOfTheOverbeing.java b/Mage.Sets/src/mage/cards/f/FavorOfTheOverbeing.java
index 0d040c84d65..d47e8877356 100644
--- a/Mage.Sets/src/mage/cards/f/FavorOfTheOverbeing.java
+++ b/Mage.Sets/src/mage/cards/f/FavorOfTheOverbeing.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class FavorOfTheOverbeing extends CardImpl {
+public final class FavorOfTheOverbeing extends CardImpl {
public FavorOfTheOverbeing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/f/FavorOfTheWoods.java b/Mage.Sets/src/mage/cards/f/FavorOfTheWoods.java
index 8a8a43e5fe4..1f2212cfbc5 100644
--- a/Mage.Sets/src/mage/cards/f/FavorOfTheWoods.java
+++ b/Mage.Sets/src/mage/cards/f/FavorOfTheWoods.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author intimidatingant
*/
-public class FavorOfTheWoods extends CardImpl {
+public final class FavorOfTheWoods extends CardImpl {
public FavorOfTheWoods(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FavorableDestiny.java b/Mage.Sets/src/mage/cards/f/FavorableDestiny.java
index 3ead00717a3..2ced3967bb4 100644
--- a/Mage.Sets/src/mage/cards/f/FavorableDestiny.java
+++ b/Mage.Sets/src/mage/cards/f/FavorableDestiny.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class FavorableDestiny extends CardImpl {
+public final class FavorableDestiny extends CardImpl {
public FavorableDestiny(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FavorableWinds.java b/Mage.Sets/src/mage/cards/f/FavorableWinds.java
index 9ecae5998d6..94c8326f377 100644
--- a/Mage.Sets/src/mage/cards/f/FavorableWinds.java
+++ b/Mage.Sets/src/mage/cards/f/FavorableWinds.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author noxx
*/
-public class FavorableWinds extends CardImpl {
+public final class FavorableWinds extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control with flying");
diff --git a/Mage.Sets/src/mage/cards/f/FavoredHoplite.java b/Mage.Sets/src/mage/cards/f/FavoredHoplite.java
index 28a44886112..e52fb375f79 100644
--- a/Mage.Sets/src/mage/cards/f/FavoredHoplite.java
+++ b/Mage.Sets/src/mage/cards/f/FavoredHoplite.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class FavoredHoplite extends CardImpl {
+public final class FavoredHoplite extends CardImpl {
public FavoredHoplite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/f/Fear.java b/Mage.Sets/src/mage/cards/f/Fear.java
index b407165e94d..5313dce8468 100644
--- a/Mage.Sets/src/mage/cards/f/Fear.java
+++ b/Mage.Sets/src/mage/cards/f/Fear.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Fear extends CardImpl {
+public final class Fear extends CardImpl {
public Fear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FearsomeAwakening.java b/Mage.Sets/src/mage/cards/f/FearsomeAwakening.java
index 71e9aced198..ff63995aad4 100644
--- a/Mage.Sets/src/mage/cards/f/FearsomeAwakening.java
+++ b/Mage.Sets/src/mage/cards/f/FearsomeAwakening.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class FearsomeAwakening extends CardImpl {
+public final class FearsomeAwakening extends CardImpl {
public FearsomeAwakening(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FearsomeTemper.java b/Mage.Sets/src/mage/cards/f/FearsomeTemper.java
index 31e1a7b4c5f..659ecc91ce3 100644
--- a/Mage.Sets/src/mage/cards/f/FearsomeTemper.java
+++ b/Mage.Sets/src/mage/cards/f/FearsomeTemper.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FearsomeTemper extends CardImpl {
+public final class FearsomeTemper extends CardImpl {
public FearsomeTemper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FeastOfBlood.java b/Mage.Sets/src/mage/cards/f/FeastOfBlood.java
index f13592fe8c7..0d81de9ccd1 100644
--- a/Mage.Sets/src/mage/cards/f/FeastOfBlood.java
+++ b/Mage.Sets/src/mage/cards/f/FeastOfBlood.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class FeastOfBlood extends CardImpl {
+public final class FeastOfBlood extends CardImpl {
public FeastOfBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FeastOfDreams.java b/Mage.Sets/src/mage/cards/f/FeastOfDreams.java
index fa093df99ac..07900032f88 100644
--- a/Mage.Sets/src/mage/cards/f/FeastOfDreams.java
+++ b/Mage.Sets/src/mage/cards/f/FeastOfDreams.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FeastOfDreams extends CardImpl {
+public final class FeastOfDreams extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("enchanted creature or enchantment creature");
diff --git a/Mage.Sets/src/mage/cards/f/FeastOfFlesh.java b/Mage.Sets/src/mage/cards/f/FeastOfFlesh.java
index 3044b8b2070..1d0b6f5eb6d 100644
--- a/Mage.Sets/src/mage/cards/f/FeastOfFlesh.java
+++ b/Mage.Sets/src/mage/cards/f/FeastOfFlesh.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class FeastOfFlesh extends CardImpl {
+public final class FeastOfFlesh extends CardImpl {
private static final FilterCard filter = new FilterCard("cards named Feast of Flesh");
diff --git a/Mage.Sets/src/mage/cards/f/FeastOfTheUnicorn.java b/Mage.Sets/src/mage/cards/f/FeastOfTheUnicorn.java
index 7423851dbd0..a4e28d9a735 100644
--- a/Mage.Sets/src/mage/cards/f/FeastOfTheUnicorn.java
+++ b/Mage.Sets/src/mage/cards/f/FeastOfTheUnicorn.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class FeastOfTheUnicorn extends CardImpl {
+public final class FeastOfTheUnicorn extends CardImpl {
public FeastOfTheUnicorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FeastOfWorms.java b/Mage.Sets/src/mage/cards/f/FeastOfWorms.java
index abf445dd842..1911366a3f2 100644
--- a/Mage.Sets/src/mage/cards/f/FeastOfWorms.java
+++ b/Mage.Sets/src/mage/cards/f/FeastOfWorms.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author LevelX
*/
-public class FeastOfWorms extends CardImpl {
+public final class FeastOfWorms extends CardImpl {
public FeastOfWorms (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeastOnTheFallen.java b/Mage.Sets/src/mage/cards/f/FeastOnTheFallen.java
index 43a6f52118c..64ad4f74983 100644
--- a/Mage.Sets/src/mage/cards/f/FeastOnTheFallen.java
+++ b/Mage.Sets/src/mage/cards/f/FeastOnTheFallen.java
@@ -47,7 +47,7 @@ import mage.watchers.common.PlayerLostLifeWatcher;
*
* @author emerald000
*/
-public class FeastOnTheFallen extends CardImpl {
+public final class FeastOnTheFallen extends CardImpl {
public FeastOnTheFallen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FeastOrFamine.java b/Mage.Sets/src/mage/cards/f/FeastOrFamine.java
index 5996d2b59f7..465ad2d9669 100644
--- a/Mage.Sets/src/mage/cards/f/FeastOrFamine.java
+++ b/Mage.Sets/src/mage/cards/f/FeastOrFamine.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FeastOrFamine extends CardImpl {
+public final class FeastOrFamine extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact, nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/f/FeatOfResistance.java b/Mage.Sets/src/mage/cards/f/FeatOfResistance.java
index 2fd619d5d35..41fcc1ecadd 100644
--- a/Mage.Sets/src/mage/cards/f/FeatOfResistance.java
+++ b/Mage.Sets/src/mage/cards/f/FeatOfResistance.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class FeatOfResistance extends CardImpl {
+public final class FeatOfResistance extends CardImpl {
public FeatOfResistance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/Fecundity.java b/Mage.Sets/src/mage/cards/f/Fecundity.java
index daa5ae176b8..203ac23a380 100644
--- a/Mage.Sets/src/mage/cards/f/Fecundity.java
+++ b/Mage.Sets/src/mage/cards/f/Fecundity.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class Fecundity extends CardImpl {
+public final class Fecundity extends CardImpl {
public Fecundity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/Feebleness.java b/Mage.Sets/src/mage/cards/f/Feebleness.java
index 320497fdd72..41a1c2c6e0c 100644
--- a/Mage.Sets/src/mage/cards/f/Feebleness.java
+++ b/Mage.Sets/src/mage/cards/f/Feebleness.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nigelzor
*/
-public class Feebleness extends CardImpl {
+public final class Feebleness extends CardImpl {
public Feebleness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FeedTheClan.java b/Mage.Sets/src/mage/cards/f/FeedTheClan.java
index e8c1f7368a2..83493358c45 100644
--- a/Mage.Sets/src/mage/cards/f/FeedTheClan.java
+++ b/Mage.Sets/src/mage/cards/f/FeedTheClan.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class FeedTheClan extends CardImpl {
+public final class FeedTheClan extends CardImpl {
public FeedTheClan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeedThePack.java b/Mage.Sets/src/mage/cards/f/FeedThePack.java
index 3e88e083ac3..9745fe1ba63 100644
--- a/Mage.Sets/src/mage/cards/f/FeedThePack.java
+++ b/Mage.Sets/src/mage/cards/f/FeedThePack.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author BetaSteward
*/
-public class FeedThePack extends CardImpl {
+public final class FeedThePack extends CardImpl {
public FeedThePack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/Feedback.java b/Mage.Sets/src/mage/cards/f/Feedback.java
index a6140d0a011..58aed3c29f3 100644
--- a/Mage.Sets/src/mage/cards/f/Feedback.java
+++ b/Mage.Sets/src/mage/cards/f/Feedback.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LoneFox
*/
-public class Feedback extends CardImpl {
+public final class Feedback extends CardImpl {
public Feedback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FeedbackBolt.java b/Mage.Sets/src/mage/cards/f/FeedbackBolt.java
index ac0cfc6a2e6..e18e0df58dc 100644
--- a/Mage.Sets/src/mage/cards/f/FeedbackBolt.java
+++ b/Mage.Sets/src/mage/cards/f/FeedbackBolt.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Plopman
*/
-public class FeedbackBolt extends CardImpl {
+public final class FeedbackBolt extends CardImpl {
public FeedbackBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FeedingFrenzy.java b/Mage.Sets/src/mage/cards/f/FeedingFrenzy.java
index e873d14c81f..321d0decd34 100644
--- a/Mage.Sets/src/mage/cards/f/FeedingFrenzy.java
+++ b/Mage.Sets/src/mage/cards/f/FeedingFrenzy.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author openSrcCoder
*/
-public class FeedingFrenzy extends CardImpl {
+public final class FeedingFrenzy extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/f/FeelingOfDread.java b/Mage.Sets/src/mage/cards/f/FeelingOfDread.java
index f81a8ba44d9..5ca1638d86c 100644
--- a/Mage.Sets/src/mage/cards/f/FeelingOfDread.java
+++ b/Mage.Sets/src/mage/cards/f/FeelingOfDread.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class FeelingOfDread extends CardImpl {
+public final class FeelingOfDread extends CardImpl {
public FeelingOfDread(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FeldonOfTheThirdPath.java b/Mage.Sets/src/mage/cards/f/FeldonOfTheThirdPath.java
index b26b85adc0e..849fa336b35 100644
--- a/Mage.Sets/src/mage/cards/f/FeldonOfTheThirdPath.java
+++ b/Mage.Sets/src/mage/cards/f/FeldonOfTheThirdPath.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class FeldonOfTheThirdPath extends CardImpl {
+public final class FeldonOfTheThirdPath extends CardImpl {
public FeldonOfTheThirdPath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FeldonsCane.java b/Mage.Sets/src/mage/cards/f/FeldonsCane.java
index 3d04bd9ef37..23d5643ba61 100644
--- a/Mage.Sets/src/mage/cards/f/FeldonsCane.java
+++ b/Mage.Sets/src/mage/cards/f/FeldonsCane.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class FeldonsCane extends CardImpl {
+public final class FeldonsCane extends CardImpl {
public FeldonsCane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/f/FelhideBrawler.java b/Mage.Sets/src/mage/cards/f/FelhideBrawler.java
index bd4544d2d9a..3ac30c822b0 100644
--- a/Mage.Sets/src/mage/cards/f/FelhideBrawler.java
+++ b/Mage.Sets/src/mage/cards/f/FelhideBrawler.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class FelhideBrawler extends CardImpl {
+public final class FelhideBrawler extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Minotaur");
diff --git a/Mage.Sets/src/mage/cards/f/FelhideMinotaur.java b/Mage.Sets/src/mage/cards/f/FelhideMinotaur.java
index 0749dfffa73..4d749318f14 100644
--- a/Mage.Sets/src/mage/cards/f/FelhideMinotaur.java
+++ b/Mage.Sets/src/mage/cards/f/FelhideMinotaur.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class FelhideMinotaur extends CardImpl {
+public final class FelhideMinotaur extends CardImpl {
public FelhideMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FelhidePetrifier.java b/Mage.Sets/src/mage/cards/f/FelhidePetrifier.java
index 40e024a558d..e0bf31f8592 100644
--- a/Mage.Sets/src/mage/cards/f/FelhidePetrifier.java
+++ b/Mage.Sets/src/mage/cards/f/FelhidePetrifier.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class FelhidePetrifier extends CardImpl {
+public final class FelhidePetrifier extends CardImpl {
public FelhidePetrifier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java b/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java
index 538727a3585..d6cbc9c0780 100644
--- a/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java
+++ b/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Quercitron
*/
-public class FelhideSpiritbinder extends CardImpl {
+public final class FelhideSpiritbinder extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/f/FelidarCub.java b/Mage.Sets/src/mage/cards/f/FelidarCub.java
index 35116859815..0a1bc120054 100644
--- a/Mage.Sets/src/mage/cards/f/FelidarCub.java
+++ b/Mage.Sets/src/mage/cards/f/FelidarCub.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author fireshoes
*/
-public class FelidarCub extends CardImpl {
+public final class FelidarCub extends CardImpl {
public FelidarCub(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FelidarGuardian.java b/Mage.Sets/src/mage/cards/f/FelidarGuardian.java
index 020fb9748c5..31df99869f9 100644
--- a/Mage.Sets/src/mage/cards/f/FelidarGuardian.java
+++ b/Mage.Sets/src/mage/cards/f/FelidarGuardian.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Styxo
*/
-public class FelidarGuardian extends CardImpl {
+public final class FelidarGuardian extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another target permanent you control");
diff --git a/Mage.Sets/src/mage/cards/f/FelidarSovereign.java b/Mage.Sets/src/mage/cards/f/FelidarSovereign.java
index cc4a50695d6..60f660e2466 100644
--- a/Mage.Sets/src/mage/cards/f/FelidarSovereign.java
+++ b/Mage.Sets/src/mage/cards/f/FelidarSovereign.java
@@ -48,7 +48,7 @@ import mage.game.Game;
*
* @author Rafbill
*/
-public class FelidarSovereign extends CardImpl {
+public final class FelidarSovereign extends CardImpl {
public FelidarSovereign(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FelidarUmbra.java b/Mage.Sets/src/mage/cards/f/FelidarUmbra.java
index 45aeffa4e25..249543cd766 100644
--- a/Mage.Sets/src/mage/cards/f/FelidarUmbra.java
+++ b/Mage.Sets/src/mage/cards/f/FelidarUmbra.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FelidarUmbra extends CardImpl {
+public final class FelidarUmbra extends CardImpl {
public FelidarUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FellFlagship.java b/Mage.Sets/src/mage/cards/f/FellFlagship.java
index c518dd75a15..84bda505496 100644
--- a/Mage.Sets/src/mage/cards/f/FellFlagship.java
+++ b/Mage.Sets/src/mage/cards/f/FellFlagship.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class FellFlagship extends CardImpl {
+public final class FellFlagship extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Pirates");
diff --git a/Mage.Sets/src/mage/cards/f/FellShepherd.java b/Mage.Sets/src/mage/cards/f/FellShepherd.java
index 2f843e96be8..6868ca19bd6 100644
--- a/Mage.Sets/src/mage/cards/f/FellShepherd.java
+++ b/Mage.Sets/src/mage/cards/f/FellShepherd.java
@@ -56,7 +56,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class FellShepherd extends CardImpl {
+public final class FellShepherd extends CardImpl {
public FellShepherd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FellTheMighty.java b/Mage.Sets/src/mage/cards/f/FellTheMighty.java
index 6aea15a4d03..dee1e8535c6 100644
--- a/Mage.Sets/src/mage/cards/f/FellTheMighty.java
+++ b/Mage.Sets/src/mage/cards/f/FellTheMighty.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FellTheMighty extends CardImpl {
+public final class FellTheMighty extends CardImpl {
public FellTheMighty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FellwarStone.java b/Mage.Sets/src/mage/cards/f/FellwarStone.java
index ac1a29e3c4b..958414597e4 100644
--- a/Mage.Sets/src/mage/cards/f/FellwarStone.java
+++ b/Mage.Sets/src/mage/cards/f/FellwarStone.java
@@ -38,7 +38,7 @@ import mage.constants.TargetController;
*
* @author Plopman
*/
-public class FellwarStone extends CardImpl {
+public final class FellwarStone extends CardImpl {
public FellwarStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/f/FemerefArchers.java b/Mage.Sets/src/mage/cards/f/FemerefArchers.java
index 3ec86db136c..95548fac22b 100644
--- a/Mage.Sets/src/mage/cards/f/FemerefArchers.java
+++ b/Mage.Sets/src/mage/cards/f/FemerefArchers.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FemerefArchers extends CardImpl {
+public final class FemerefArchers extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature with flying");
diff --git a/Mage.Sets/src/mage/cards/f/FemerefEnchantress.java b/Mage.Sets/src/mage/cards/f/FemerefEnchantress.java
index 824966e7d78..3d358055f08 100644
--- a/Mage.Sets/src/mage/cards/f/FemerefEnchantress.java
+++ b/Mage.Sets/src/mage/cards/f/FemerefEnchantress.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class FemerefEnchantress extends CardImpl {
+public final class FemerefEnchantress extends CardImpl {
public FemerefEnchantress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FemerefHealer.java b/Mage.Sets/src/mage/cards/f/FemerefHealer.java
index 85baae097cb..8d1acb7bef3 100644
--- a/Mage.Sets/src/mage/cards/f/FemerefHealer.java
+++ b/Mage.Sets/src/mage/cards/f/FemerefHealer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class FemerefHealer extends CardImpl {
+public final class FemerefHealer extends CardImpl {
public FemerefHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FemerefKnight.java b/Mage.Sets/src/mage/cards/f/FemerefKnight.java
index 25219c46a04..2cd7aa85702 100644
--- a/Mage.Sets/src/mage/cards/f/FemerefKnight.java
+++ b/Mage.Sets/src/mage/cards/f/FemerefKnight.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class FemerefKnight extends CardImpl {
+public final class FemerefKnight extends CardImpl {
public FemerefKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FemerefScouts.java b/Mage.Sets/src/mage/cards/f/FemerefScouts.java
index d572bded88c..0954124c22f 100644
--- a/Mage.Sets/src/mage/cards/f/FemerefScouts.java
+++ b/Mage.Sets/src/mage/cards/f/FemerefScouts.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FemerefScouts extends CardImpl {
+public final class FemerefScouts extends CardImpl {
public FemerefScouts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FenHauler.java b/Mage.Sets/src/mage/cards/f/FenHauler.java
index 33e12b19cfb..089857eb7e6 100644
--- a/Mage.Sets/src/mage/cards/f/FenHauler.java
+++ b/Mage.Sets/src/mage/cards/f/FenHauler.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class FenHauler extends CardImpl {
+public final class FenHauler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FenStalker.java b/Mage.Sets/src/mage/cards/f/FenStalker.java
index 5a431d60877..b4cd2a36e43 100644
--- a/Mage.Sets/src/mage/cards/f/FenStalker.java
+++ b/Mage.Sets/src/mage/cards/f/FenStalker.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LoneFox
*/
-public class FenStalker extends CardImpl {
+public final class FenStalker extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/f/FencerClique.java b/Mage.Sets/src/mage/cards/f/FencerClique.java
index 56a3c62392c..bdc1ae9fb54 100644
--- a/Mage.Sets/src/mage/cards/f/FencerClique.java
+++ b/Mage.Sets/src/mage/cards/f/FencerClique.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FencerClique extends CardImpl {
+public final class FencerClique extends CardImpl {
public FencerClique(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FencersMagemark.java b/Mage.Sets/src/mage/cards/f/FencersMagemark.java
index e01a80d2e67..e08314c42d2 100644
--- a/Mage.Sets/src/mage/cards/f/FencersMagemark.java
+++ b/Mage.Sets/src/mage/cards/f/FencersMagemark.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Markedagain
*/
-public class FencersMagemark extends CardImpl {
+public final class FencersMagemark extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control that are enchanted");
static {
diff --git a/Mage.Sets/src/mage/cards/f/FencingAce.java b/Mage.Sets/src/mage/cards/f/FencingAce.java
index ec57bb4b30f..f565b7166f1 100644
--- a/Mage.Sets/src/mage/cards/f/FencingAce.java
+++ b/Mage.Sets/src/mage/cards/f/FencingAce.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author magenoxx_at_gmail.com
*/
-public class FencingAce extends CardImpl {
+public final class FencingAce extends CardImpl {
public FencingAce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FendeepSummoner.java b/Mage.Sets/src/mage/cards/f/FendeepSummoner.java
index fcc7d7e45b6..798684522a6 100644
--- a/Mage.Sets/src/mage/cards/f/FendeepSummoner.java
+++ b/Mage.Sets/src/mage/cards/f/FendeepSummoner.java
@@ -50,7 +50,7 @@ import mage.util.SubTypeList;
/**
* @author anonymous
*/
-public class FendeepSummoner extends CardImpl {
+public final class FendeepSummoner extends CardImpl {
static final FilterLandPermanent filter = new FilterLandPermanent("Swamp");
diff --git a/Mage.Sets/src/mage/cards/f/FeralAbomination.java b/Mage.Sets/src/mage/cards/f/FeralAbomination.java
index dec9833d69b..3fac1699e92 100644
--- a/Mage.Sets/src/mage/cards/f/FeralAbomination.java
+++ b/Mage.Sets/src/mage/cards/f/FeralAbomination.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class FeralAbomination extends CardImpl {
+public final class FeralAbomination extends CardImpl {
public FeralAbomination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralAnimist.java b/Mage.Sets/src/mage/cards/f/FeralAnimist.java
index ca007ff7ada..21df1c7c317 100644
--- a/Mage.Sets/src/mage/cards/f/FeralAnimist.java
+++ b/Mage.Sets/src/mage/cards/f/FeralAnimist.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class FeralAnimist extends CardImpl {
+public final class FeralAnimist extends CardImpl {
public FeralAnimist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralContest.java b/Mage.Sets/src/mage/cards/f/FeralContest.java
index 80043fee3aa..b2c57b7f490 100644
--- a/Mage.Sets/src/mage/cards/f/FeralContest.java
+++ b/Mage.Sets/src/mage/cards/f/FeralContest.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class FeralContest extends CardImpl {
+public final class FeralContest extends CardImpl {
public FeralContest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralDeceiver.java b/Mage.Sets/src/mage/cards/f/FeralDeceiver.java
index 5bde2e76fc3..b4f27809d86 100644
--- a/Mage.Sets/src/mage/cards/f/FeralDeceiver.java
+++ b/Mage.Sets/src/mage/cards/f/FeralDeceiver.java
@@ -57,7 +57,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class FeralDeceiver extends CardImpl {
+public final class FeralDeceiver extends CardImpl {
public FeralDeceiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralHydra.java b/Mage.Sets/src/mage/cards/f/FeralHydra.java
index 89460a10e79..ee359448940 100644
--- a/Mage.Sets/src/mage/cards/f/FeralHydra.java
+++ b/Mage.Sets/src/mage/cards/f/FeralHydra.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class FeralHydra extends CardImpl {
+public final class FeralHydra extends CardImpl {
public FeralHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralIncarnation.java b/Mage.Sets/src/mage/cards/f/FeralIncarnation.java
index a9eccdb7d6d..c0170bc35bc 100644
--- a/Mage.Sets/src/mage/cards/f/FeralIncarnation.java
+++ b/Mage.Sets/src/mage/cards/f/FeralIncarnation.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.BeastToken;
*
* @author LevelX2
*/
-public class FeralIncarnation extends CardImpl {
+public final class FeralIncarnation extends CardImpl {
public FeralIncarnation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{8}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralInstinct.java b/Mage.Sets/src/mage/cards/f/FeralInstinct.java
index 690361189ff..385b0ed93aa 100644
--- a/Mage.Sets/src/mage/cards/f/FeralInstinct.java
+++ b/Mage.Sets/src/mage/cards/f/FeralInstinct.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FeralInstinct extends CardImpl {
+public final class FeralInstinct extends CardImpl {
public FeralInstinct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralInvocation.java b/Mage.Sets/src/mage/cards/f/FeralInvocation.java
index c652426d3b3..6643750aed1 100644
--- a/Mage.Sets/src/mage/cards/f/FeralInvocation.java
+++ b/Mage.Sets/src/mage/cards/f/FeralInvocation.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FeralInvocation extends CardImpl {
+public final class FeralInvocation extends CardImpl {
public FeralInvocation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralKrushok.java b/Mage.Sets/src/mage/cards/f/FeralKrushok.java
index 5daa6226d95..533f7b2e56a 100644
--- a/Mage.Sets/src/mage/cards/f/FeralKrushok.java
+++ b/Mage.Sets/src/mage/cards/f/FeralKrushok.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class FeralKrushok extends CardImpl {
+public final class FeralKrushok extends CardImpl {
public FeralKrushok(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralLightning.java b/Mage.Sets/src/mage/cards/f/FeralLightning.java
index 2d159954f5e..8236e35bc92 100644
--- a/Mage.Sets/src/mage/cards/f/FeralLightning.java
+++ b/Mage.Sets/src/mage/cards/f/FeralLightning.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class FeralLightning extends CardImpl {
+public final class FeralLightning extends CardImpl {
public FeralLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralProwler.java b/Mage.Sets/src/mage/cards/f/FeralProwler.java
index 203ff20a45d..35935d2fcbb 100644
--- a/Mage.Sets/src/mage/cards/f/FeralProwler.java
+++ b/Mage.Sets/src/mage/cards/f/FeralProwler.java
@@ -9,7 +9,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-public class FeralProwler extends CardImpl {
+public final class FeralProwler extends CardImpl {
public FeralProwler(UUID ownerId, CardSetInfo cardSetInfo) {
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralRidgewolf.java b/Mage.Sets/src/mage/cards/f/FeralRidgewolf.java
index 1e6137ac5a0..71661e9c23e 100644
--- a/Mage.Sets/src/mage/cards/f/FeralRidgewolf.java
+++ b/Mage.Sets/src/mage/cards/f/FeralRidgewolf.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
/**
* @author nantuko
*/
-public class FeralRidgewolf extends CardImpl {
+public final class FeralRidgewolf extends CardImpl {
public FeralRidgewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralShadow.java b/Mage.Sets/src/mage/cards/f/FeralShadow.java
index 2a3662fe7b3..a8eee9a1a51 100644
--- a/Mage.Sets/src/mage/cards/f/FeralShadow.java
+++ b/Mage.Sets/src/mage/cards/f/FeralShadow.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FeralShadow extends CardImpl {
+public final class FeralShadow extends CardImpl {
public FeralShadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralThallid.java b/Mage.Sets/src/mage/cards/f/FeralThallid.java
index 7da65633e9e..faf83f6b18e 100644
--- a/Mage.Sets/src/mage/cards/f/FeralThallid.java
+++ b/Mage.Sets/src/mage/cards/f/FeralThallid.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class FeralThallid extends CardImpl {
+public final class FeralThallid extends CardImpl {
public FeralThallid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FeralThrowback.java b/Mage.Sets/src/mage/cards/f/FeralThrowback.java
index 5623cdd5744..7b02c42b4ad 100644
--- a/Mage.Sets/src/mage/cards/f/FeralThrowback.java
+++ b/Mage.Sets/src/mage/cards/f/FeralThrowback.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class FeralThrowback extends CardImpl {
+public final class FeralThrowback extends CardImpl {
public FeralThrowback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FerociousCharge.java b/Mage.Sets/src/mage/cards/f/FerociousCharge.java
index 66c991b270a..5b0b2ef2148 100644
--- a/Mage.Sets/src/mage/cards/f/FerociousCharge.java
+++ b/Mage.Sets/src/mage/cards/f/FerociousCharge.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class FerociousCharge extends CardImpl {
+public final class FerociousCharge extends CardImpl {
public FerociousCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FerocityOfTheUnderworld.java b/Mage.Sets/src/mage/cards/f/FerocityOfTheUnderworld.java
index 2cdbe1f0aa4..725d070e616 100644
--- a/Mage.Sets/src/mage/cards/f/FerocityOfTheUnderworld.java
+++ b/Mage.Sets/src/mage/cards/f/FerocityOfTheUnderworld.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author Styxo
*/
-public class FerocityOfTheUnderworld extends CardImpl {
+public final class FerocityOfTheUnderworld extends CardImpl {
private static final FilterNonlandPermanent filterMode1 = new FilterNonlandPermanent("nonland permanent with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/f/FerozsBan.java b/Mage.Sets/src/mage/cards/f/FerozsBan.java
index 4662626fc42..67b6089907a 100644
--- a/Mage.Sets/src/mage/cards/f/FerozsBan.java
+++ b/Mage.Sets/src/mage/cards/f/FerozsBan.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterCreatureCard;
* @author LoneFox
*/
-public class FerozsBan extends CardImpl {
+public final class FerozsBan extends CardImpl {
public FerozsBan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/f/Ferropede.java b/Mage.Sets/src/mage/cards/f/Ferropede.java
index 8a494890c53..4b65525e845 100644
--- a/Mage.Sets/src/mage/cards/f/Ferropede.java
+++ b/Mage.Sets/src/mage/cards/f/Ferropede.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class Ferropede extends CardImpl {
+public final class Ferropede extends CardImpl {
public Ferropede(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/f/Ferrovore.java b/Mage.Sets/src/mage/cards/f/Ferrovore.java
index d55161bc9c5..4101981b9a3 100644
--- a/Mage.Sets/src/mage/cards/f/Ferrovore.java
+++ b/Mage.Sets/src/mage/cards/f/Ferrovore.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class Ferrovore extends CardImpl {
+public final class Ferrovore extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact");
static {
diff --git a/Mage.Sets/src/mage/cards/f/FertileGround.java b/Mage.Sets/src/mage/cards/f/FertileGround.java
index 7b98035eed0..ffd0d073c36 100644
--- a/Mage.Sets/src/mage/cards/f/FertileGround.java
+++ b/Mage.Sets/src/mage/cards/f/FertileGround.java
@@ -51,20 +51,19 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class FertileGround extends CardImpl {
+public final class FertileGround extends CardImpl {
public FertileGround(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
this.subtype.add(SubType.AURA);
-
// Enchant land
TargetPermanent auraTarget = new TargetLandPermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
- // Whenever enchanted land is tapped for mana, its controller adds one mana of any color to their mana pool.
+ // Whenever enchanted land is tapped for mana, its controller adds one mana of any color.
this.addAbility(new FertileGroundTriggeredAbility());
}
@@ -80,7 +79,6 @@ public class FertileGround extends CardImpl {
class FertileGroundTriggeredAbility extends TriggeredManaAbility {
-
public FertileGroundTriggeredAbility() {
super(Zone.BATTLEFIELD, new AddManaAnyColorAttachedControllerEffect());
}
@@ -96,14 +94,14 @@ class FertileGroundTriggeredAbility extends TriggeredManaAbility {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
- Permanent enchantment = game.getPermanent(this.getSourceId());
- if (enchantment != null && event.getSourceId().equals(enchantment.getAttachedTo())) {
- Permanent enchanted = game.getPermanent(enchantment.getAttachedTo());
- if (enchanted != null) {
- getEffects().get(0).setTargetPointer(new FixedTarget(enchanted.getControllerId()));
- return true;
- }
+ Permanent enchantment = game.getPermanent(this.getSourceId());
+ if (enchantment != null && event.getSourceId().equals(enchantment.getAttachedTo())) {
+ Permanent enchanted = game.getPermanent(enchantment.getAttachedTo());
+ if (enchanted != null) {
+ getEffects().get(0).setTargetPointer(new FixedTarget(enchanted.getControllerId()));
+ return true;
}
+ }
return false;
}
@@ -114,6 +112,6 @@ class FertileGroundTriggeredAbility extends TriggeredManaAbility {
@Override
public String getRule() {
- return "Whenever enchanted land is tapped for mana, its controller adds one mana of any color to their mana pool";
+ return "Whenever enchanted land is tapped for mana, its controller adds one mana of any color";
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/f/FertileThicket.java b/Mage.Sets/src/mage/cards/f/FertileThicket.java
index 3ce1452b43d..50659ce6b34 100644
--- a/Mage.Sets/src/mage/cards/f/FertileThicket.java
+++ b/Mage.Sets/src/mage/cards/f/FertileThicket.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class FertileThicket extends CardImpl {
+public final class FertileThicket extends CardImpl {
public FertileThicket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
@@ -100,7 +100,7 @@ class FertileThicketEffect extends OneShotEffect {
Cards cards = new CardsImpl();
cards.addAll(controller.getLibrary().getTopCards(game, 5));
controller.lookAtCards(sourceObject.getIdName(), cards, game);
- TargetCard target = new TargetCard(0, 1, Zone.LIBRARY, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCard target = new TargetCard(0, 1, Zone.LIBRARY, StaticFilters.FILTER_CARD_BASIC_LAND);
controller.chooseTarget(outcome, cards, target, source, game);
Cards cardsRevealed = new CardsImpl(target.getTargets());
if (!cardsRevealed.isEmpty()) {
diff --git a/Mage.Sets/src/mage/cards/f/Fertilid.java b/Mage.Sets/src/mage/cards/f/Fertilid.java
index 4faa9ee5ceb..efbce1b1e68 100644
--- a/Mage.Sets/src/mage/cards/f/Fertilid.java
+++ b/Mage.Sets/src/mage/cards/f/Fertilid.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author ilcartographer
*/
-public class Fertilid extends CardImpl {
+public final class Fertilid extends CardImpl {
public Fertilid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
@@ -64,7 +64,7 @@ public class Fertilid extends CardImpl {
// {1}{G}, Remove a +1/+1 counter from Fertilid: Target player searches their library for a basic land card and puts it onto the battlefield tapped. Then that player shuffles their library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayTargetPlayerEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true), new ManaCostsImpl("{1}{G}"));
+ new SearchLibraryPutInPlayTargetPlayerEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), new ManaCostsImpl("{1}{G}"));
ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance(1)));
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/f/FerventCathar.java b/Mage.Sets/src/mage/cards/f/FerventCathar.java
index 81452f07ef3..ef3850f82a7 100644
--- a/Mage.Sets/src/mage/cards/f/FerventCathar.java
+++ b/Mage.Sets/src/mage/cards/f/FerventCathar.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class FerventCathar extends CardImpl {
+public final class FerventCathar extends CardImpl {
public FerventCathar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FerventCharge.java b/Mage.Sets/src/mage/cards/f/FerventCharge.java
index b35179ef8bc..c98d9453f08 100644
--- a/Mage.Sets/src/mage/cards/f/FerventCharge.java
+++ b/Mage.Sets/src/mage/cards/f/FerventCharge.java
@@ -40,7 +40,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class FerventCharge extends CardImpl {
+public final class FerventCharge extends CardImpl {
public FerventCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FerventDenial.java b/Mage.Sets/src/mage/cards/f/FerventDenial.java
index 8074f0876c5..78f6a24e0c9 100644
--- a/Mage.Sets/src/mage/cards/f/FerventDenial.java
+++ b/Mage.Sets/src/mage/cards/f/FerventDenial.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author cbt33
*/
-public class FerventDenial extends CardImpl {
+public final class FerventDenial extends CardImpl {
public FerventDenial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FerventPaincaster.java b/Mage.Sets/src/mage/cards/f/FerventPaincaster.java
index 50899abcedc..4da24e0aee5 100644
--- a/Mage.Sets/src/mage/cards/f/FerventPaincaster.java
+++ b/Mage.Sets/src/mage/cards/f/FerventPaincaster.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author jeffwadsworth
*/
-public class FerventPaincaster extends CardImpl {
+public final class FerventPaincaster extends CardImpl {
public FerventPaincaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FerventStrike.java b/Mage.Sets/src/mage/cards/f/FerventStrike.java
index fc7cefee9be..f819b737d8f 100644
--- a/Mage.Sets/src/mage/cards/f/FerventStrike.java
+++ b/Mage.Sets/src/mage/cards/f/FerventStrike.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class FerventStrike extends CardImpl {
+public final class FerventStrike extends CardImpl {
public FerventStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Fervor.java b/Mage.Sets/src/mage/cards/f/Fervor.java
index 2640c1971c4..99dbf003351 100644
--- a/Mage.Sets/src/mage/cards/f/Fervor.java
+++ b/Mage.Sets/src/mage/cards/f/Fervor.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author North
*/
-public class Fervor extends CardImpl {
+public final class Fervor extends CardImpl {
public Fervor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Festercreep.java b/Mage.Sets/src/mage/cards/f/Festercreep.java
index a932e1dbe2d..fa9383f1d89 100644
--- a/Mage.Sets/src/mage/cards/f/Festercreep.java
+++ b/Mage.Sets/src/mage/cards/f/Festercreep.java
@@ -49,7 +49,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class Festercreep extends CardImpl {
+public final class Festercreep extends CardImpl {
public Festercreep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/Festergloom.java b/Mage.Sets/src/mage/cards/f/Festergloom.java
index a5bf2a108d8..93b2538119b 100644
--- a/Mage.Sets/src/mage/cards/f/Festergloom.java
+++ b/Mage.Sets/src/mage/cards/f/Festergloom.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author noxx
*/
-public class Festergloom extends CardImpl {
+public final class Festergloom extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Nonblack creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FesterhideBoar.java b/Mage.Sets/src/mage/cards/f/FesterhideBoar.java
index 8924e1c9658..47a25f90089 100644
--- a/Mage.Sets/src/mage/cards/f/FesterhideBoar.java
+++ b/Mage.Sets/src/mage/cards/f/FesterhideBoar.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class FesterhideBoar extends CardImpl {
+public final class FesterhideBoar extends CardImpl {
public FesterhideBoar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FesteringEvil.java b/Mage.Sets/src/mage/cards/f/FesteringEvil.java
index 713341a8264..b3c10230558 100644
--- a/Mage.Sets/src/mage/cards/f/FesteringEvil.java
+++ b/Mage.Sets/src/mage/cards/f/FesteringEvil.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class FesteringEvil extends CardImpl {
+public final class FesteringEvil extends CardImpl {
public FesteringEvil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FesteringGoblin.java b/Mage.Sets/src/mage/cards/f/FesteringGoblin.java
index 23c43316571..166136767e7 100644
--- a/Mage.Sets/src/mage/cards/f/FesteringGoblin.java
+++ b/Mage.Sets/src/mage/cards/f/FesteringGoblin.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FesteringGoblin extends CardImpl {
+public final class FesteringGoblin extends CardImpl {
public FesteringGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FesteringMarch.java b/Mage.Sets/src/mage/cards/f/FesteringMarch.java
index 59aa0f77dbc..e821912e498 100644
--- a/Mage.Sets/src/mage/cards/f/FesteringMarch.java
+++ b/Mage.Sets/src/mage/cards/f/FesteringMarch.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class FesteringMarch extends CardImpl {
+public final class FesteringMarch extends CardImpl {
public FesteringMarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FesteringMummy.java b/Mage.Sets/src/mage/cards/f/FesteringMummy.java
index d0c85650c8f..a6890c88169 100644
--- a/Mage.Sets/src/mage/cards/f/FesteringMummy.java
+++ b/Mage.Sets/src/mage/cards/f/FesteringMummy.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class FesteringMummy extends CardImpl {
+public final class FesteringMummy extends CardImpl {
public FesteringMummy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FesteringNewt.java b/Mage.Sets/src/mage/cards/f/FesteringNewt.java
index 5f9cfe7f20f..8b840b88a8f 100644
--- a/Mage.Sets/src/mage/cards/f/FesteringNewt.java
+++ b/Mage.Sets/src/mage/cards/f/FesteringNewt.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FesteringNewt extends CardImpl {
+public final class FesteringNewt extends CardImpl {
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creature an opponent controls");
private static final FilterCreaturePermanent filterBogbrewWitch = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/f/FesteringWound.java b/Mage.Sets/src/mage/cards/f/FesteringWound.java
index 3fb996d83d0..5c9957b7014 100644
--- a/Mage.Sets/src/mage/cards/f/FesteringWound.java
+++ b/Mage.Sets/src/mage/cards/f/FesteringWound.java
@@ -58,7 +58,7 @@ import mage.cards.CardSetInfo;
*
* @author ciaccona007
*/
-public class FesteringWound extends CardImpl {
+public final class FesteringWound extends CardImpl {
public FesteringWound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/Festival.java b/Mage.Sets/src/mage/cards/f/Festival.java
index 5684b79a58d..eed16351e90 100644
--- a/Mage.Sets/src/mage/cards/f/Festival.java
+++ b/Mage.Sets/src/mage/cards/f/Festival.java
@@ -42,7 +42,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class Festival extends CardImpl {
+public final class Festival extends CardImpl {
public Festival(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FestivalOfTheGuildpact.java b/Mage.Sets/src/mage/cards/f/FestivalOfTheGuildpact.java
index 04bc51ce390..9fe8faa6ab5 100644
--- a/Mage.Sets/src/mage/cards/f/FestivalOfTheGuildpact.java
+++ b/Mage.Sets/src/mage/cards/f/FestivalOfTheGuildpact.java
@@ -40,7 +40,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class FestivalOfTheGuildpact extends CardImpl {
+public final class FestivalOfTheGuildpact extends CardImpl {
public FestivalOfTheGuildpact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FestivalOfTrokin.java b/Mage.Sets/src/mage/cards/f/FestivalOfTrokin.java
index 83bc0a8ea5e..6cb406a992b 100644
--- a/Mage.Sets/src/mage/cards/f/FestivalOfTrokin.java
+++ b/Mage.Sets/src/mage/cards/f/FestivalOfTrokin.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class FestivalOfTrokin extends CardImpl {
+public final class FestivalOfTrokin extends CardImpl {
public FestivalOfTrokin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FetidHeath.java b/Mage.Sets/src/mage/cards/f/FetidHeath.java
index b0963df7c77..365e3733eeb 100644
--- a/Mage.Sets/src/mage/cards/f/FetidHeath.java
+++ b/Mage.Sets/src/mage/cards/f/FetidHeath.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class FetidHeath extends CardImpl {
+public final class FetidHeath extends CardImpl {
public FetidHeath (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/f/FetidHorror.java b/Mage.Sets/src/mage/cards/f/FetidHorror.java
index e18603b1437..6cb34bf1f83 100644
--- a/Mage.Sets/src/mage/cards/f/FetidHorror.java
+++ b/Mage.Sets/src/mage/cards/f/FetidHorror.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author djbrez
*/
-public class FetidHorror extends CardImpl {
+public final class FetidHorror extends CardImpl {
public FetidHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FetidImp.java b/Mage.Sets/src/mage/cards/f/FetidImp.java
index 6ac4244217a..e97b4c7a4f7 100644
--- a/Mage.Sets/src/mage/cards/f/FetidImp.java
+++ b/Mage.Sets/src/mage/cards/f/FetidImp.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class FetidImp extends CardImpl {
+public final class FetidImp extends CardImpl {
public FetidImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FetidPools.java b/Mage.Sets/src/mage/cards/f/FetidPools.java
index b6100c03636..33fd249f2b2 100644
--- a/Mage.Sets/src/mage/cards/f/FetidPools.java
+++ b/Mage.Sets/src/mage/cards/f/FetidPools.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class FetidPools extends CardImpl {
+public final class FetidPools extends CardImpl {
public FetidPools(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/f/Fettergeist.java b/Mage.Sets/src/mage/cards/f/Fettergeist.java
index fed59ba32aa..e3c90d07ef2 100644
--- a/Mage.Sets/src/mage/cards/f/Fettergeist.java
+++ b/Mage.Sets/src/mage/cards/f/Fettergeist.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author noxx
*/
-public class Fettergeist extends CardImpl {
+public final class Fettergeist extends CardImpl {
public Fettergeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FeudkillersVerdict.java b/Mage.Sets/src/mage/cards/f/FeudkillersVerdict.java
index 9a261ebd838..17a25e732fe 100644
--- a/Mage.Sets/src/mage/cards/f/FeudkillersVerdict.java
+++ b/Mage.Sets/src/mage/cards/f/FeudkillersVerdict.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class FeudkillersVerdict extends CardImpl {
+public final class FeudkillersVerdict extends CardImpl {
public FeudkillersVerdict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.SORCERY}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FeverCharm.java b/Mage.Sets/src/mage/cards/f/FeverCharm.java
index f5ecc06ee6b..931cde98723 100644
--- a/Mage.Sets/src/mage/cards/f/FeverCharm.java
+++ b/Mage.Sets/src/mage/cards/f/FeverCharm.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FeverCharm extends CardImpl {
+public final class FeverCharm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wizard creature");
diff --git a/Mage.Sets/src/mage/cards/f/FeveredConvulsions.java b/Mage.Sets/src/mage/cards/f/FeveredConvulsions.java
index 0aa1fb1ecbb..32e5cd81b87 100644
--- a/Mage.Sets/src/mage/cards/f/FeveredConvulsions.java
+++ b/Mage.Sets/src/mage/cards/f/FeveredConvulsions.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FeveredConvulsions extends CardImpl {
+public final class FeveredConvulsions extends CardImpl {
public FeveredConvulsions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FeveredStrength.java b/Mage.Sets/src/mage/cards/f/FeveredStrength.java
index 1fc93fabcfd..9cfff3e8326 100644
--- a/Mage.Sets/src/mage/cards/f/FeveredStrength.java
+++ b/Mage.Sets/src/mage/cards/f/FeveredStrength.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FeveredStrength extends CardImpl {
+public final class FeveredStrength extends CardImpl {
public FeveredStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FeveredVisions.java b/Mage.Sets/src/mage/cards/f/FeveredVisions.java
index 68df6d43e92..d437d3b72e3 100644
--- a/Mage.Sets/src/mage/cards/f/FeveredVisions.java
+++ b/Mage.Sets/src/mage/cards/f/FeveredVisions.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class FeveredVisions extends CardImpl {
+public final class FeveredVisions extends CardImpl {
public FeveredVisions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FibrousEntangler.java b/Mage.Sets/src/mage/cards/f/FibrousEntangler.java
index b50e6207f3f..21716828285 100644
--- a/Mage.Sets/src/mage/cards/f/FibrousEntangler.java
+++ b/Mage.Sets/src/mage/cards/f/FibrousEntangler.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class FibrousEntangler extends CardImpl {
+public final class FibrousEntangler extends CardImpl {
public FibrousEntangler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/f/FickleEfreet.java b/Mage.Sets/src/mage/cards/f/FickleEfreet.java
index 0b5e1d27fd5..6d503d2e222 100644
--- a/Mage.Sets/src/mage/cards/f/FickleEfreet.java
+++ b/Mage.Sets/src/mage/cards/f/FickleEfreet.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class FickleEfreet extends CardImpl {
+public final class FickleEfreet extends CardImpl {
public FickleEfreet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FiddleheadKami.java b/Mage.Sets/src/mage/cards/f/FiddleheadKami.java
index 36734c2fe7f..43b4c51e86e 100644
--- a/Mage.Sets/src/mage/cards/f/FiddleheadKami.java
+++ b/Mage.Sets/src/mage/cards/f/FiddleheadKami.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class FiddleheadKami extends CardImpl {
+public final class FiddleheadKami extends CardImpl {
public FiddleheadKami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FieldCreeper.java b/Mage.Sets/src/mage/cards/f/FieldCreeper.java
index 51239460911..d182e8f209b 100644
--- a/Mage.Sets/src/mage/cards/f/FieldCreeper.java
+++ b/Mage.Sets/src/mage/cards/f/FieldCreeper.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class FieldCreeper extends CardImpl {
+public final class FieldCreeper extends CardImpl {
public FieldCreeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/f/FieldMarshal.java b/Mage.Sets/src/mage/cards/f/FieldMarshal.java
index f4857d7aeb8..8635f50a10d 100644
--- a/Mage.Sets/src/mage/cards/f/FieldMarshal.java
+++ b/Mage.Sets/src/mage/cards/f/FieldMarshal.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author anonymous
*/
-public class FieldMarshal extends CardImpl {
+public final class FieldMarshal extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FieldOfDreams.java b/Mage.Sets/src/mage/cards/f/FieldOfDreams.java
index ee9d5eacb7b..0d14c13ba4f 100644
--- a/Mage.Sets/src/mage/cards/f/FieldOfDreams.java
+++ b/Mage.Sets/src/mage/cards/f/FieldOfDreams.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FieldOfDreams extends CardImpl {
+public final class FieldOfDreams extends CardImpl {
public FieldOfDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FieldOfReality.java b/Mage.Sets/src/mage/cards/f/FieldOfReality.java
index 0b4d2994b21..bd83498434b 100644
--- a/Mage.Sets/src/mage/cards/f/FieldOfReality.java
+++ b/Mage.Sets/src/mage/cards/f/FieldOfReality.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX
*/
-public class FieldOfReality extends CardImpl {
+public final class FieldOfReality extends CardImpl {
public FieldOfReality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FieldOfRuin.java b/Mage.Sets/src/mage/cards/f/FieldOfRuin.java
index 50015b83c71..2ec4083029c 100644
--- a/Mage.Sets/src/mage/cards/f/FieldOfRuin.java
+++ b/Mage.Sets/src/mage/cards/f/FieldOfRuin.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author TheElk801
*/
-public class FieldOfRuin extends CardImpl {
+public final class FieldOfRuin extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land an opponent controls");
@@ -115,7 +115,7 @@ class FieldOfRuinEffect extends OneShotEffect {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
- TargetCardInLibrary target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND);
if (player.searchLibrary(target, game)) {
player.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game);
player.shuffleLibrary(source, game);
diff --git a/Mage.Sets/src/mage/cards/f/FieldOfSouls.java b/Mage.Sets/src/mage/cards/f/FieldOfSouls.java
index bb47ef9e0d1..8e74a05bf26 100644
--- a/Mage.Sets/src/mage/cards/f/FieldOfSouls.java
+++ b/Mage.Sets/src/mage/cards/f/FieldOfSouls.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author fireshoes
*/
-public class FieldOfSouls extends CardImpl {
+public final class FieldOfSouls extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
static{
diff --git a/Mage.Sets/src/mage/cards/f/FieldSurgeon.java b/Mage.Sets/src/mage/cards/f/FieldSurgeon.java
index 64db3fb9afc..745ceffa75b 100644
--- a/Mage.Sets/src/mage/cards/f/FieldSurgeon.java
+++ b/Mage.Sets/src/mage/cards/f/FieldSurgeon.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FieldSurgeon extends CardImpl {
+public final class FieldSurgeon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/f/FieldmistBorderpost.java b/Mage.Sets/src/mage/cards/f/FieldmistBorderpost.java
index f0a6e674b8e..7b505dcc29b 100644
--- a/Mage.Sets/src/mage/cards/f/FieldmistBorderpost.java
+++ b/Mage.Sets/src/mage/cards/f/FieldmistBorderpost.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class FieldmistBorderpost extends CardImpl {
+public final class FieldmistBorderpost extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a basic land");
diff --git a/Mage.Sets/src/mage/cards/f/FiendBinder.java b/Mage.Sets/src/mage/cards/f/FiendBinder.java
index 5b36ad3abc3..5ea747bc8ed 100644
--- a/Mage.Sets/src/mage/cards/f/FiendBinder.java
+++ b/Mage.Sets/src/mage/cards/f/FiendBinder.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FiendBinder extends CardImpl {
+public final class FiendBinder extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/f/FiendHunter.java b/Mage.Sets/src/mage/cards/f/FiendHunter.java
index 3a453862119..f22e0c0f640 100644
--- a/Mage.Sets/src/mage/cards/f/FiendHunter.java
+++ b/Mage.Sets/src/mage/cards/f/FiendHunter.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
/**
* @author nantuko
*/
-public class FiendHunter extends CardImpl {
+public final class FiendHunter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java b/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java
index 32ce48209b1..26c553d83db 100644
--- a/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java
+++ b/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author BetaSteward
*/
-public class FiendOfTheShadows extends CardImpl {
+public final class FiendOfTheShadows extends CardImpl {
private UUID exileId = UUID.randomUUID();
diff --git a/Mage.Sets/src/mage/cards/f/FiendslayerPaladin.java b/Mage.Sets/src/mage/cards/f/FiendslayerPaladin.java
index 7196825b5c1..910ce157be0 100644
--- a/Mage.Sets/src/mage/cards/f/FiendslayerPaladin.java
+++ b/Mage.Sets/src/mage/cards/f/FiendslayerPaladin.java
@@ -51,7 +51,7 @@ import mage.game.stack.StackObject;
*
* @author jeffwadsworth
*/
-public class FiendslayerPaladin extends CardImpl {
+public final class FiendslayerPaladin extends CardImpl {
public FiendslayerPaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FierceEmpath.java b/Mage.Sets/src/mage/cards/f/FierceEmpath.java
index d03a0fbd00c..475fb21027b 100644
--- a/Mage.Sets/src/mage/cards/f/FierceEmpath.java
+++ b/Mage.Sets/src/mage/cards/f/FierceEmpath.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class FierceEmpath extends CardImpl {
+public final class FierceEmpath extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with converted mana cost 6 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/f/FierceInvocation.java b/Mage.Sets/src/mage/cards/f/FierceInvocation.java
index f44abaa3d4d..888f95f0677 100644
--- a/Mage.Sets/src/mage/cards/f/FierceInvocation.java
+++ b/Mage.Sets/src/mage/cards/f/FierceInvocation.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class FierceInvocation extends CardImpl {
+public final class FierceInvocation extends CardImpl {
public FierceInvocation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FieryBombardment.java b/Mage.Sets/src/mage/cards/f/FieryBombardment.java
index 092ebc1c071..155ded4070b 100644
--- a/Mage.Sets/src/mage/cards/f/FieryBombardment.java
+++ b/Mage.Sets/src/mage/cards/f/FieryBombardment.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetAnyTarget;
* @author jeffwadsworth
*
*/
-public class FieryBombardment extends CardImpl {
+public final class FieryBombardment extends CardImpl {
public FieryBombardment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FieryCannonade.java b/Mage.Sets/src/mage/cards/f/FieryCannonade.java
index 670ed09aee1..4b9e18b7157 100644
--- a/Mage.Sets/src/mage/cards/f/FieryCannonade.java
+++ b/Mage.Sets/src/mage/cards/f/FieryCannonade.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class FieryCannonade extends CardImpl {
+public final class FieryCannonade extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Pirate creature");
diff --git a/Mage.Sets/src/mage/cards/f/FieryConclusion.java b/Mage.Sets/src/mage/cards/f/FieryConclusion.java
index 81fee78a7bc..dbd125e01c5 100644
--- a/Mage.Sets/src/mage/cards/f/FieryConclusion.java
+++ b/Mage.Sets/src/mage/cards/f/FieryConclusion.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FieryConclusion extends CardImpl {
+public final class FieryConclusion extends CardImpl {
public FieryConclusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FieryConfluence.java b/Mage.Sets/src/mage/cards/f/FieryConfluence.java
index c9bb9517a8a..07699cab420 100644
--- a/Mage.Sets/src/mage/cards/f/FieryConfluence.java
+++ b/Mage.Sets/src/mage/cards/f/FieryConfluence.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author fireshoes
*/
-public class FieryConfluence extends CardImpl {
+public final class FieryConfluence extends CardImpl {
public FieryConfluence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FieryFall.java b/Mage.Sets/src/mage/cards/f/FieryFall.java
index b5fdb5cbc0a..ae367ce5332 100644
--- a/Mage.Sets/src/mage/cards/f/FieryFall.java
+++ b/Mage.Sets/src/mage/cards/f/FieryFall.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FieryFall extends CardImpl {
+public final class FieryFall extends CardImpl {
public FieryFall (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FieryGambit.java b/Mage.Sets/src/mage/cards/f/FieryGambit.java
index ec7858b2d34..45245566702 100644
--- a/Mage.Sets/src/mage/cards/f/FieryGambit.java
+++ b/Mage.Sets/src/mage/cards/f/FieryGambit.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FieryGambit extends CardImpl {
+public final class FieryGambit extends CardImpl {
public FieryGambit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FieryHellhound.java b/Mage.Sets/src/mage/cards/f/FieryHellhound.java
index 998762bab8e..8a9fde26b53 100644
--- a/Mage.Sets/src/mage/cards/f/FieryHellhound.java
+++ b/Mage.Sets/src/mage/cards/f/FieryHellhound.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class FieryHellhound extends CardImpl {
+public final class FieryHellhound extends CardImpl {
public FieryHellhound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FieryImpulse.java b/Mage.Sets/src/mage/cards/f/FieryImpulse.java
index e848725aa15..d8e9f95733f 100644
--- a/Mage.Sets/src/mage/cards/f/FieryImpulse.java
+++ b/Mage.Sets/src/mage/cards/f/FieryImpulse.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FieryImpulse extends CardImpl {
+public final class FieryImpulse extends CardImpl {
public FieryImpulse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FieryIntervention.java b/Mage.Sets/src/mage/cards/f/FieryIntervention.java
index 7458e3008ba..63013a744b8 100644
--- a/Mage.Sets/src/mage/cards/f/FieryIntervention.java
+++ b/Mage.Sets/src/mage/cards/f/FieryIntervention.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class FieryIntervention extends CardImpl {
+public final class FieryIntervention extends CardImpl {
public FieryIntervention(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FieryJustice.java b/Mage.Sets/src/mage/cards/f/FieryJustice.java
index f38d9970eaf..62f551e3ee8 100644
--- a/Mage.Sets/src/mage/cards/f/FieryJustice.java
+++ b/Mage.Sets/src/mage/cards/f/FieryJustice.java
@@ -42,7 +42,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class FieryJustice extends CardImpl {
+public final class FieryJustice extends CardImpl {
public FieryJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FieryMantle.java b/Mage.Sets/src/mage/cards/f/FieryMantle.java
index b7f8b842cbe..3407f0ca177 100644
--- a/Mage.Sets/src/mage/cards/f/FieryMantle.java
+++ b/Mage.Sets/src/mage/cards/f/FieryMantle.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FieryMantle extends CardImpl {
+public final class FieryMantle extends CardImpl {
public FieryMantle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FieryTemper.java b/Mage.Sets/src/mage/cards/f/FieryTemper.java
index 3df798b1d3e..ce8b86f34c0 100644
--- a/Mage.Sets/src/mage/cards/f/FieryTemper.java
+++ b/Mage.Sets/src/mage/cards/f/FieryTemper.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author magenoxx_at_gmail.com
*/
-public class FieryTemper extends CardImpl {
+public final class FieryTemper extends CardImpl {
public FieryTemper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FightToTheDeath.java b/Mage.Sets/src/mage/cards/f/FightToTheDeath.java
index be38a63b2bd..fad65dfbf53 100644
--- a/Mage.Sets/src/mage/cards/f/FightToTheDeath.java
+++ b/Mage.Sets/src/mage/cards/f/FightToTheDeath.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.BlockingPredicate;
*
* @author jeffwadsworth
*/
-public class FightToTheDeath extends CardImpl {
+public final class FightToTheDeath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("all blocking creatures and all blocked creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FightWithFire.java b/Mage.Sets/src/mage/cards/f/FightWithFire.java
index a07ac5c908f..ac8b25300b3 100644
--- a/Mage.Sets/src/mage/cards/f/FightWithFire.java
+++ b/Mage.Sets/src/mage/cards/f/FightWithFire.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class FightWithFire extends CardImpl {
+public final class FightWithFire extends CardImpl {
public FightWithFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FightingChance.java b/Mage.Sets/src/mage/cards/f/FightingChance.java
index 35565047617..72dcd459cfa 100644
--- a/Mage.Sets/src/mage/cards/f/FightingChance.java
+++ b/Mage.Sets/src/mage/cards/f/FightingChance.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class FightingChance extends CardImpl {
+public final class FightingChance extends CardImpl {
private static final FilterBlockingCreature filter = new FilterBlockingCreature("Blocking creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FightingDrake.java b/Mage.Sets/src/mage/cards/f/FightingDrake.java
index 0e52c5bde75..55be500218e 100644
--- a/Mage.Sets/src/mage/cards/f/FightingDrake.java
+++ b/Mage.Sets/src/mage/cards/f/FightingDrake.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FightingDrake extends CardImpl {
+public final class FightingDrake extends CardImpl {
public FightingDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FigureOfDestiny.java b/Mage.Sets/src/mage/cards/f/FigureOfDestiny.java
index 30e4ff9ff33..aecbf4123b2 100644
--- a/Mage.Sets/src/mage/cards/f/FigureOfDestiny.java
+++ b/Mage.Sets/src/mage/cards/f/FigureOfDestiny.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.Token;
*
* @author LevelX2
*/
-public class FigureOfDestiny extends CardImpl {
+public final class FigureOfDestiny extends CardImpl {
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent();
private static final FilterCreaturePermanent filter3 = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/f/FiligreeAngel.java b/Mage.Sets/src/mage/cards/f/FiligreeAngel.java
index 17d60cb157b..bee75a105f3 100644
--- a/Mage.Sets/src/mage/cards/f/FiligreeAngel.java
+++ b/Mage.Sets/src/mage/cards/f/FiligreeAngel.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class FiligreeAngel extends CardImpl {
+public final class FiligreeAngel extends CardImpl {
public FiligreeAngel (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}{W}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FiligreeCrawler.java b/Mage.Sets/src/mage/cards/f/FiligreeCrawler.java
index a906daff61a..cec826debf4 100644
--- a/Mage.Sets/src/mage/cards/f/FiligreeCrawler.java
+++ b/Mage.Sets/src/mage/cards/f/FiligreeCrawler.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author Styxo
*/
-public class FiligreeCrawler extends CardImpl {
+public final class FiligreeCrawler extends CardImpl {
public FiligreeCrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/f/FiligreeFamiliar.java b/Mage.Sets/src/mage/cards/f/FiligreeFamiliar.java
index 8d61d4605d2..717b3093c80 100644
--- a/Mage.Sets/src/mage/cards/f/FiligreeFamiliar.java
+++ b/Mage.Sets/src/mage/cards/f/FiligreeFamiliar.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class FiligreeFamiliar extends CardImpl {
+public final class FiligreeFamiliar extends CardImpl {
public FiligreeFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/f/FiligreeFracture.java b/Mage.Sets/src/mage/cards/f/FiligreeFracture.java
index 9a2f41774f0..cb3bd634ac0 100644
--- a/Mage.Sets/src/mage/cards/f/FiligreeFracture.java
+++ b/Mage.Sets/src/mage/cards/f/FiligreeFracture.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author North
*/
-public class FiligreeFracture extends CardImpl {
+public final class FiligreeFracture extends CardImpl {
public FiligreeFracture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FiligreeSages.java b/Mage.Sets/src/mage/cards/f/FiligreeSages.java
index 18917cfca79..73edb6d7806 100644
--- a/Mage.Sets/src/mage/cards/f/FiligreeSages.java
+++ b/Mage.Sets/src/mage/cards/f/FiligreeSages.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class FiligreeSages extends CardImpl {
+public final class FiligreeSages extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
static {
diff --git a/Mage.Sets/src/mage/cards/f/FillWithFright.java b/Mage.Sets/src/mage/cards/f/FillWithFright.java
index cdda4b010b9..2c8f1c17e51 100644
--- a/Mage.Sets/src/mage/cards/f/FillWithFright.java
+++ b/Mage.Sets/src/mage/cards/f/FillWithFright.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class FillWithFright extends CardImpl {
+public final class FillWithFright extends CardImpl {
public FillWithFright(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/Filth.java b/Mage.Sets/src/mage/cards/f/Filth.java
index 64de93f30ea..72b0637402c 100644
--- a/Mage.Sets/src/mage/cards/f/Filth.java
+++ b/Mage.Sets/src/mage/cards/f/Filth.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Backfir3
*/
-public class Filth extends CardImpl {
+public final class Filth extends CardImpl {
private static final String ruleText = "As long as Filth is in your graveyard and you control a Swamp, creatures you control have swampwalk";
diff --git a/Mage.Sets/src/mage/cards/f/FilthyCur.java b/Mage.Sets/src/mage/cards/f/FilthyCur.java
index 62b74dae0b9..aa8d2a7b5ad 100644
--- a/Mage.Sets/src/mage/cards/f/FilthyCur.java
+++ b/Mage.Sets/src/mage/cards/f/FilthyCur.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author cbt33
*/
-public class FilthyCur extends CardImpl {
+public final class FilthyCur extends CardImpl {
public FilthyCur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FinalFortune.java b/Mage.Sets/src/mage/cards/f/FinalFortune.java
index efca6727105..260646d4192 100644
--- a/Mage.Sets/src/mage/cards/f/FinalFortune.java
+++ b/Mage.Sets/src/mage/cards/f/FinalFortune.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Quercitron
*/
-public class FinalFortune extends CardImpl {
+public final class FinalFortune extends CardImpl {
public FinalFortune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FinalIteration.java b/Mage.Sets/src/mage/cards/f/FinalIteration.java
index 9684e541164..8741e58e6b9 100644
--- a/Mage.Sets/src/mage/cards/f/FinalIteration.java
+++ b/Mage.Sets/src/mage/cards/f/FinalIteration.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.HumanWizardToken;
*
* @author fireshoes
*/
-public class FinalIteration extends CardImpl {
+public final class FinalIteration extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wizards");
private static final FilterSpell filterSpell = new FilterSpell("an instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/f/FinalJudgment.java b/Mage.Sets/src/mage/cards/f/FinalJudgment.java
index 32764221f9e..c43c55e8e0a 100644
--- a/Mage.Sets/src/mage/cards/f/FinalJudgment.java
+++ b/Mage.Sets/src/mage/cards/f/FinalJudgment.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Loki
*/
-public class FinalJudgment extends CardImpl {
+public final class FinalJudgment extends CardImpl {
public FinalJudgment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FinalParting.java b/Mage.Sets/src/mage/cards/f/FinalParting.java
index 33583cda95a..0ed69f984f6 100644
--- a/Mage.Sets/src/mage/cards/f/FinalParting.java
+++ b/Mage.Sets/src/mage/cards/f/FinalParting.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class FinalParting extends CardImpl {
+public final class FinalParting extends CardImpl {
public FinalParting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FinalPunishment.java b/Mage.Sets/src/mage/cards/f/FinalPunishment.java
index 631c069f84d..028526e5b4b 100644
--- a/Mage.Sets/src/mage/cards/f/FinalPunishment.java
+++ b/Mage.Sets/src/mage/cards/f/FinalPunishment.java
@@ -43,7 +43,7 @@ import mage.watchers.common.AmountOfDamageAPlayerReceivedThisTurnWatcher;
*
* @author LoneFox
*/
-public class FinalPunishment extends CardImpl {
+public final class FinalPunishment extends CardImpl {
public FinalPunishment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FinalRevels.java b/Mage.Sets/src/mage/cards/f/FinalRevels.java
index 0acbc19b290..a9fcc2f802c 100644
--- a/Mage.Sets/src/mage/cards/f/FinalRevels.java
+++ b/Mage.Sets/src/mage/cards/f/FinalRevels.java
@@ -40,7 +40,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class FinalRevels extends CardImpl {
+public final class FinalRevels extends CardImpl {
public FinalRevels(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FinalReward.java b/Mage.Sets/src/mage/cards/f/FinalReward.java
index 5344a98e3ec..158ea35cfd0 100644
--- a/Mage.Sets/src/mage/cards/f/FinalReward.java
+++ b/Mage.Sets/src/mage/cards/f/FinalReward.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FinalReward extends CardImpl {
+public final class FinalReward extends CardImpl {
public FinalReward(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FinalStingFaerie.java b/Mage.Sets/src/mage/cards/f/FinalStingFaerie.java
index 5bb42d3f1ff..f1241950c5c 100644
--- a/Mage.Sets/src/mage/cards/f/FinalStingFaerie.java
+++ b/Mage.Sets/src/mage/cards/f/FinalStingFaerie.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FinalStingFaerie extends CardImpl {
+public final class FinalStingFaerie extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn");
diff --git a/Mage.Sets/src/mage/cards/f/FinalStrike.java b/Mage.Sets/src/mage/cards/f/FinalStrike.java
index 4dfd8f1c2e3..8f20ec3eade 100644
--- a/Mage.Sets/src/mage/cards/f/FinalStrike.java
+++ b/Mage.Sets/src/mage/cards/f/FinalStrike.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author fireshoes
*/
-public class FinalStrike extends CardImpl {
+public final class FinalStrike extends CardImpl {
public FinalStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FinestHour.java b/Mage.Sets/src/mage/cards/f/FinestHour.java
index a1efbcbeb76..ab05fdfcb72 100644
--- a/Mage.Sets/src/mage/cards/f/FinestHour.java
+++ b/Mage.Sets/src/mage/cards/f/FinestHour.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class FinestHour extends CardImpl {
+public final class FinestHour extends CardImpl {
public FinestHour(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FireAmbush.java b/Mage.Sets/src/mage/cards/f/FireAmbush.java
index e0e9a4ca332..f21f150a208 100644
--- a/Mage.Sets/src/mage/cards/f/FireAmbush.java
+++ b/Mage.Sets/src/mage/cards/f/FireAmbush.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*/
-public class FireAmbush extends CardImpl {
+public final class FireAmbush extends CardImpl {
public FireAmbush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java b/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java
index a8d2cca752b..cc3471239b7 100644
--- a/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java
+++ b/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java
@@ -45,7 +45,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author L_J
*/
-public class FireAndBrimstone extends CardImpl {
+public final class FireAndBrimstone extends CardImpl {
private static final FilterPlayer filter = new FilterPlayer("player who attacked this turn");
diff --git a/Mage.Sets/src/mage/cards/f/FireAnts.java b/Mage.Sets/src/mage/cards/f/FireAnts.java
index 0e221b3b3a3..fc5f9ea3e94 100644
--- a/Mage.Sets/src/mage/cards/f/FireAnts.java
+++ b/Mage.Sets/src/mage/cards/f/FireAnts.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class FireAnts extends CardImpl {
+public final class FireAnts extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each other creature without flying");
diff --git a/Mage.Sets/src/mage/cards/f/FireAtWill.java b/Mage.Sets/src/mage/cards/f/FireAtWill.java
index 182baebb8a6..b848f8a310b 100644
--- a/Mage.Sets/src/mage/cards/f/FireAtWill.java
+++ b/Mage.Sets/src/mage/cards/f/FireAtWill.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
* @author jeffwadsworth
*
*/
-public class FireAtWill extends CardImpl {
+public final class FireAtWill extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking or blocking creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FireBellyChangeling.java b/Mage.Sets/src/mage/cards/f/FireBellyChangeling.java
index e6b69ff21b3..27f940710ab 100644
--- a/Mage.Sets/src/mage/cards/f/FireBellyChangeling.java
+++ b/Mage.Sets/src/mage/cards/f/FireBellyChangeling.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author FenrisulfrX
*/
-public class FireBellyChangeling extends CardImpl {
+public final class FireBellyChangeling extends CardImpl {
public FireBellyChangeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireBowman.java b/Mage.Sets/src/mage/cards/f/FireBowman.java
index e7d17a52350..f2dd6257989 100644
--- a/Mage.Sets/src/mage/cards/f/FireBowman.java
+++ b/Mage.Sets/src/mage/cards/f/FireBowman.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class FireBowman extends CardImpl {
+public final class FireBowman extends CardImpl {
public FireBowman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireCovenant.java b/Mage.Sets/src/mage/cards/f/FireCovenant.java
index 2bedc71b990..4fbe359332a 100644
--- a/Mage.Sets/src/mage/cards/f/FireCovenant.java
+++ b/Mage.Sets/src/mage/cards/f/FireCovenant.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author magenoxx
*/
-public class FireCovenant extends CardImpl {
+public final class FireCovenant extends CardImpl {
public FireCovenant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireDiamond.java b/Mage.Sets/src/mage/cards/f/FireDiamond.java
index 3e76ded5f18..bee79f39e91 100644
--- a/Mage.Sets/src/mage/cards/f/FireDiamond.java
+++ b/Mage.Sets/src/mage/cards/f/FireDiamond.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Quercitron
*/
-public class FireDiamond extends CardImpl {
+public final class FireDiamond extends CardImpl {
public FireDiamond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/f/FireDragon.java b/Mage.Sets/src/mage/cards/f/FireDragon.java
index db7b55927c3..8e13f381351 100644
--- a/Mage.Sets/src/mage/cards/f/FireDragon.java
+++ b/Mage.Sets/src/mage/cards/f/FireDragon.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FireDragon extends CardImpl {
+public final class FireDragon extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("for each Mountain you control");
diff --git a/Mage.Sets/src/mage/cards/f/FireDrake.java b/Mage.Sets/src/mage/cards/f/FireDrake.java
index 0c34a7056f0..2df4fda7a67 100644
--- a/Mage.Sets/src/mage/cards/f/FireDrake.java
+++ b/Mage.Sets/src/mage/cards/f/FireDrake.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class FireDrake extends CardImpl {
+public final class FireDrake extends CardImpl {
public FireDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireElemental.java b/Mage.Sets/src/mage/cards/f/FireElemental.java
index bd8b9f3fdb5..1d43de95eae 100644
--- a/Mage.Sets/src/mage/cards/f/FireElemental.java
+++ b/Mage.Sets/src/mage/cards/f/FireElemental.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FireElemental extends CardImpl {
+public final class FireElemental extends CardImpl {
public FireElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireFieldOgre.java b/Mage.Sets/src/mage/cards/f/FireFieldOgre.java
index 02adaf24319..9887b8ea519 100644
--- a/Mage.Sets/src/mage/cards/f/FireFieldOgre.java
+++ b/Mage.Sets/src/mage/cards/f/FireFieldOgre.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FireFieldOgre extends CardImpl {
+public final class FireFieldOgre extends CardImpl {
public FireFieldOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireIce.java b/Mage.Sets/src/mage/cards/f/FireIce.java
index bdbb6ef1fa7..94dddf2f9db 100644
--- a/Mage.Sets/src/mage/cards/f/FireIce.java
+++ b/Mage.Sets/src/mage/cards/f/FireIce.java
@@ -39,7 +39,7 @@ import mage.constants.SpellAbilityType;
import mage.target.TargetPermanent;
import mage.target.common.TargetAnyTargetAmount;
-public class FireIce extends SplitCard {
+public final class FireIce extends SplitCard {
public FireIce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}", "{1}{U}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/f/FireImp.java b/Mage.Sets/src/mage/cards/f/FireImp.java
index 1bcadec9a90..fd92df1592c 100644
--- a/Mage.Sets/src/mage/cards/f/FireImp.java
+++ b/Mage.Sets/src/mage/cards/f/FireImp.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class FireImp extends CardImpl {
+public final class FireImp extends CardImpl {
public FireImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireJuggler.java b/Mage.Sets/src/mage/cards/f/FireJuggler.java
index bc2aef4a550..2d4ec642cc0 100644
--- a/Mage.Sets/src/mage/cards/f/FireJuggler.java
+++ b/Mage.Sets/src/mage/cards/f/FireJuggler.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.BlockingAttackerIdPredicate;
*
* @author BursegSardaukar
*/
-public class FireJuggler extends CardImpl {
+public final class FireJuggler extends CardImpl {
public FireJuggler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireLitThicket.java b/Mage.Sets/src/mage/cards/f/FireLitThicket.java
index 87aff39f0b0..1971ee4c534 100644
--- a/Mage.Sets/src/mage/cards/f/FireLitThicket.java
+++ b/Mage.Sets/src/mage/cards/f/FireLitThicket.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jonubuu
*/
-public class FireLitThicket extends CardImpl {
+public final class FireLitThicket extends CardImpl {
public FireLitThicket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/FireServant.java b/Mage.Sets/src/mage/cards/f/FireServant.java
index 2349f1b97b0..a060fee6333 100644
--- a/Mage.Sets/src/mage/cards/f/FireServant.java
+++ b/Mage.Sets/src/mage/cards/f/FireServant.java
@@ -49,7 +49,7 @@ import mage.util.CardUtil;
*
* @author BetaSteward_at_googlemail.com
*/
-public class FireServant extends CardImpl {
+public final class FireServant extends CardImpl {
public FireServant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireShrineKeeper.java b/Mage.Sets/src/mage/cards/f/FireShrineKeeper.java
index 442e83b0b87..10abb9e93f3 100644
--- a/Mage.Sets/src/mage/cards/f/FireShrineKeeper.java
+++ b/Mage.Sets/src/mage/cards/f/FireShrineKeeper.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FireShrineKeeper extends CardImpl {
+public final class FireShrineKeeper extends CardImpl {
public FireShrineKeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireSnake.java b/Mage.Sets/src/mage/cards/f/FireSnake.java
index 74252b27a75..cb508384e69 100644
--- a/Mage.Sets/src/mage/cards/f/FireSnake.java
+++ b/Mage.Sets/src/mage/cards/f/FireSnake.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class FireSnake extends CardImpl {
+public final class FireSnake extends CardImpl {
public FireSnake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireSprites.java b/Mage.Sets/src/mage/cards/f/FireSprites.java
index 6f3f6a880e4..8a1d1ab4630 100644
--- a/Mage.Sets/src/mage/cards/f/FireSprites.java
+++ b/Mage.Sets/src/mage/cards/f/FireSprites.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author ilcartographer
*/
-public class FireSprites extends CardImpl {
+public final class FireSprites extends CardImpl {
public FireSprites(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FireTempest.java b/Mage.Sets/src/mage/cards/f/FireTempest.java
index 116e2557e97..7b1e6d2cb6e 100644
--- a/Mage.Sets/src/mage/cards/f/FireTempest.java
+++ b/Mage.Sets/src/mage/cards/f/FireTempest.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author ilcartographer
*/
-public class FireTempest extends CardImpl {
+public final class FireTempest extends CardImpl {
public FireTempest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireWhip.java b/Mage.Sets/src/mage/cards/f/FireWhip.java
index 9609f461b49..c959e693146 100644
--- a/Mage.Sets/src/mage/cards/f/FireWhip.java
+++ b/Mage.Sets/src/mage/cards/f/FireWhip.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class FireWhip extends CardImpl {
+public final class FireWhip extends CardImpl {
public FireWhip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Fireball.java b/Mage.Sets/src/mage/cards/f/Fireball.java
index db6b42e945c..b7ac126f62e 100644
--- a/Mage.Sets/src/mage/cards/f/Fireball.java
+++ b/Mage.Sets/src/mage/cards/f/Fireball.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Fireball extends CardImpl {
+public final class Fireball extends CardImpl {
public Fireball(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Fireblast.java b/Mage.Sets/src/mage/cards/f/Fireblast.java
index f5bf8aab78a..5e3e645f7cd 100644
--- a/Mage.Sets/src/mage/cards/f/Fireblast.java
+++ b/Mage.Sets/src/mage/cards/f/Fireblast.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
* @author jeffwadsworth
*
*/
-public class Fireblast extends CardImpl {
+public final class Fireblast extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Mountains");
diff --git a/Mage.Sets/src/mage/cards/f/Firebolt.java b/Mage.Sets/src/mage/cards/f/Firebolt.java
index 627cdce7ff9..b12e782799c 100644
--- a/Mage.Sets/src/mage/cards/f/Firebolt.java
+++ b/Mage.Sets/src/mage/cards/f/Firebolt.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author cbt33
*/
-public class Firebolt extends CardImpl {
+public final class Firebolt extends CardImpl {
public Firebolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FirebrandArcher.java b/Mage.Sets/src/mage/cards/f/FirebrandArcher.java
index f14a34e372b..0d4a1edaf70 100644
--- a/Mage.Sets/src/mage/cards/f/FirebrandArcher.java
+++ b/Mage.Sets/src/mage/cards/f/FirebrandArcher.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author ciaccona007
*/
-public class FirebrandArcher extends CardImpl {
+public final class FirebrandArcher extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/f/FirebrandRanger.java b/Mage.Sets/src/mage/cards/f/FirebrandRanger.java
index 3c335a7fd50..89105bea21d 100644
--- a/Mage.Sets/src/mage/cards/f/FirebrandRanger.java
+++ b/Mage.Sets/src/mage/cards/f/FirebrandRanger.java
@@ -33,28 +33,19 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.OneShotEffect;
-import mage.cards.Card;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Outcome;
-import mage.constants.SuperType;
import mage.constants.Zone;
-import mage.filter.FilterCard;
-import mage.filter.predicate.Predicates;
-import mage.filter.predicate.mageobject.CardTypePredicate;
-import mage.filter.predicate.mageobject.SupertypePredicate;
-import mage.game.Game;
-import mage.players.Player;
-import mage.target.common.TargetCardInHand;
+import mage.filter.StaticFilters;
/**
*
* @author fireshoes
*/
-public class FirebrandRanger extends CardImpl {
+public final class FirebrandRanger extends CardImpl {
public FirebrandRanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
@@ -63,8 +54,9 @@ public class FirebrandRanger extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(1);
- // {G}, {tap}: You may put a basic land card from your hand onto the battlefield.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutLandOnBattlefieldEffect(), new ManaCostsImpl("{G}"));
+ // {G}, {T}: You may put a basic land card from your hand onto the battlefield.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_BASIC_LAND_A), new ManaCostsImpl("{G}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}
@@ -78,46 +70,3 @@ public class FirebrandRanger extends CardImpl {
return new FirebrandRanger(this);
}
}
-
-class PutLandOnBattlefieldEffect extends OneShotEffect {
-
- private static final FilterCard filter = new FilterCard("basic land card");
-
- static {
- filter.add(Predicates.and(new CardTypePredicate(CardType.LAND), new SupertypePredicate(SuperType.BASIC)));
- }
-
- private static final String choiceText = "Put a basic land card from your hand onto the battlefield?";
-
- public PutLandOnBattlefieldEffect() {
- super(Outcome.PutLandInPlay);
- this.staticText = "you may put a basic land card from your hand onto the battlefield";
- }
-
- public PutLandOnBattlefieldEffect(final PutLandOnBattlefieldEffect effect) {
- super(effect);
- }
-
- @Override
- public PutLandOnBattlefieldEffect copy() {
- return new PutLandOnBattlefieldEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- if (player == null || !player.chooseUse(Outcome.PutLandInPlay, choiceText, source, game)) {
- return false;
- }
-
- TargetCardInHand target = new TargetCardInHand(filter);
- if (player.choose(Outcome.PutLandInPlay, target, source.getSourceId(), game)) {
- Card card = game.getCard(target.getFirstTarget());
- if (card != null) {
- card.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), source.getControllerId());
- return true;
- }
- }
- return false;
- }
-}
diff --git a/Mage.Sets/src/mage/cards/f/Firebreathing.java b/Mage.Sets/src/mage/cards/f/Firebreathing.java
index ea823a4d156..eaaf8adfed4 100644
--- a/Mage.Sets/src/mage/cards/f/Firebreathing.java
+++ b/Mage.Sets/src/mage/cards/f/Firebreathing.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Firebreathing extends CardImpl {
+public final class Firebreathing extends CardImpl {
public Firebreathing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FirecannonBlast.java b/Mage.Sets/src/mage/cards/f/FirecannonBlast.java
index 9078ed37438..b41618888d7 100644
--- a/Mage.Sets/src/mage/cards/f/FirecannonBlast.java
+++ b/Mage.Sets/src/mage/cards/f/FirecannonBlast.java
@@ -42,7 +42,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class FirecannonBlast extends CardImpl {
+public final class FirecannonBlast extends CardImpl {
public FirecannonBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FirecatBlitz.java b/Mage.Sets/src/mage/cards/f/FirecatBlitz.java
index 2fd3e0f0b91..429f391819d 100644
--- a/Mage.Sets/src/mage/cards/f/FirecatBlitz.java
+++ b/Mage.Sets/src/mage/cards/f/FirecatBlitz.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class FirecatBlitz extends CardImpl {
+public final class FirecatBlitz extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Mountains");
diff --git a/Mage.Sets/src/mage/cards/f/FiredrinkerSatyr.java b/Mage.Sets/src/mage/cards/f/FiredrinkerSatyr.java
index e7e045dd2d2..11160faeec8 100644
--- a/Mage.Sets/src/mage/cards/f/FiredrinkerSatyr.java
+++ b/Mage.Sets/src/mage/cards/f/FiredrinkerSatyr.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class FiredrinkerSatyr extends CardImpl {
+public final class FiredrinkerSatyr extends CardImpl {
public FiredrinkerSatyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FirefiendElemental.java b/Mage.Sets/src/mage/cards/f/FirefiendElemental.java
index 341d3aa35f5..f838bff1bd2 100644
--- a/Mage.Sets/src/mage/cards/f/FirefiendElemental.java
+++ b/Mage.Sets/src/mage/cards/f/FirefiendElemental.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class FirefiendElemental extends CardImpl {
+public final class FirefiendElemental extends CardImpl {
public FirefiendElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FirefistAdept.java b/Mage.Sets/src/mage/cards/f/FirefistAdept.java
index 41ae90301c2..ad9662de1de 100644
--- a/Mage.Sets/src/mage/cards/f/FirefistAdept.java
+++ b/Mage.Sets/src/mage/cards/f/FirefistAdept.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author TheElk801
*/
-public class FirefistAdept extends CardImpl {
+public final class FirefistAdept extends CardImpl {
private static final FilterControlledCreaturePermanent filterCount = new FilterControlledCreaturePermanent("Wizards you control");
diff --git a/Mage.Sets/src/mage/cards/f/FirefistStriker.java b/Mage.Sets/src/mage/cards/f/FirefistStriker.java
index df5a3ec9632..a4a6a954a9f 100644
--- a/Mage.Sets/src/mage/cards/f/FirefistStriker.java
+++ b/Mage.Sets/src/mage/cards/f/FirefistStriker.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FirefistStriker extends CardImpl {
+public final class FirefistStriker extends CardImpl {
public FirefistStriker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Firefly.java b/Mage.Sets/src/mage/cards/f/Firefly.java
index 63c923c6e8b..060039d9fb5 100644
--- a/Mage.Sets/src/mage/cards/f/Firefly.java
+++ b/Mage.Sets/src/mage/cards/f/Firefly.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Firefly extends CardImpl {
+public final class Firefly extends CardImpl {
public Firefly(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FireforgersPuzzleknot.java b/Mage.Sets/src/mage/cards/f/FireforgersPuzzleknot.java
index 4d31686943b..707d95b4c46 100644
--- a/Mage.Sets/src/mage/cards/f/FireforgersPuzzleknot.java
+++ b/Mage.Sets/src/mage/cards/f/FireforgersPuzzleknot.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class FireforgersPuzzleknot extends CardImpl {
+public final class FireforgersPuzzleknot extends CardImpl {
public FireforgersPuzzleknot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/f/FirefrightMage.java b/Mage.Sets/src/mage/cards/f/FirefrightMage.java
index 36d93f1392f..f4978c0c7a3 100644
--- a/Mage.Sets/src/mage/cards/f/FirefrightMage.java
+++ b/Mage.Sets/src/mage/cards/f/FirefrightMage.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BursegSardaukar
*/
-public class FirefrightMage extends CardImpl {
+public final class FirefrightMage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by artifact creatures and/or red creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FirehoofCavalry.java b/Mage.Sets/src/mage/cards/f/FirehoofCavalry.java
index 1747691f09e..e36dd07c9a7 100644
--- a/Mage.Sets/src/mage/cards/f/FirehoofCavalry.java
+++ b/Mage.Sets/src/mage/cards/f/FirehoofCavalry.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class FirehoofCavalry extends CardImpl {
+public final class FirehoofCavalry extends CardImpl {
public FirehoofCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FiremaneAngel.java b/Mage.Sets/src/mage/cards/f/FiremaneAngel.java
index 363f880c105..b391358052a 100644
--- a/Mage.Sets/src/mage/cards/f/FiremaneAngel.java
+++ b/Mage.Sets/src/mage/cards/f/FiremaneAngel.java
@@ -53,7 +53,7 @@ import mage.game.Game;
*
* @author Loki
*/
-public class FiremaneAngel extends CardImpl {
+public final class FiremaneAngel extends CardImpl {
public FiremaneAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FiremaneAvenger.java b/Mage.Sets/src/mage/cards/f/FiremaneAvenger.java
index b1a3656df2d..49a44f6a7dd 100644
--- a/Mage.Sets/src/mage/cards/f/FiremaneAvenger.java
+++ b/Mage.Sets/src/mage/cards/f/FiremaneAvenger.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class FiremaneAvenger extends CardImpl {
+public final class FiremaneAvenger extends CardImpl {
public FiremaneAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FiremantleMage.java b/Mage.Sets/src/mage/cards/f/FiremantleMage.java
index 0de938a125c..f797a6ed7a9 100644
--- a/Mage.Sets/src/mage/cards/f/FiremantleMage.java
+++ b/Mage.Sets/src/mage/cards/f/FiremantleMage.java
@@ -43,7 +43,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX2
*/
-public class FiremantleMage extends CardImpl {
+public final class FiremantleMage extends CardImpl {
public FiremantleMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FiremawKavu.java b/Mage.Sets/src/mage/cards/f/FiremawKavu.java
index 76f90b6612d..5bbd82a0a9f 100644
--- a/Mage.Sets/src/mage/cards/f/FiremawKavu.java
+++ b/Mage.Sets/src/mage/cards/f/FiremawKavu.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FiremawKavu extends CardImpl {
+public final class FiremawKavu extends CardImpl {
public FiremawKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FiremindsForesight.java b/Mage.Sets/src/mage/cards/f/FiremindsForesight.java
index 2908fed471c..3ba9eb44f1c 100644
--- a/Mage.Sets/src/mage/cards/f/FiremindsForesight.java
+++ b/Mage.Sets/src/mage/cards/f/FiremindsForesight.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class FiremindsForesight extends CardImpl {
+public final class FiremindsForesight extends CardImpl {
public FiremindsForesight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FiresOfUndeath.java b/Mage.Sets/src/mage/cards/f/FiresOfUndeath.java
index 44dbffae4fd..afcdc0eb0d5 100644
--- a/Mage.Sets/src/mage/cards/f/FiresOfUndeath.java
+++ b/Mage.Sets/src/mage/cards/f/FiresOfUndeath.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class FiresOfUndeath extends CardImpl {
+public final class FiresOfUndeath extends CardImpl {
public FiresOfUndeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FiresOfYavimaya.java b/Mage.Sets/src/mage/cards/f/FiresOfYavimaya.java
index dcf4fc95ede..a8927311592 100644
--- a/Mage.Sets/src/mage/cards/f/FiresOfYavimaya.java
+++ b/Mage.Sets/src/mage/cards/f/FiresOfYavimaya.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki, nantuko
*/
-public class FiresOfYavimaya extends CardImpl {
+public final class FiresOfYavimaya extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Creatures you control");
diff --git a/Mage.Sets/src/mage/cards/f/Firescreamer.java b/Mage.Sets/src/mage/cards/f/Firescreamer.java
index 556246f374d..80c810ceacd 100644
--- a/Mage.Sets/src/mage/cards/f/Firescreamer.java
+++ b/Mage.Sets/src/mage/cards/f/Firescreamer.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author michael.napoleon@gmail.com
*/
-public class Firescreamer extends CardImpl {
+public final class Firescreamer extends CardImpl {
public Firescreamer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/Fireshrieker.java b/Mage.Sets/src/mage/cards/f/Fireshrieker.java
index 7044d775d4a..3866b6eb4c7 100644
--- a/Mage.Sets/src/mage/cards/f/Fireshrieker.java
+++ b/Mage.Sets/src/mage/cards/f/Fireshrieker.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class Fireshrieker extends CardImpl {
+public final class Fireshrieker extends CardImpl {
public Fireshrieker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/f/Fireslinger.java b/Mage.Sets/src/mage/cards/f/Fireslinger.java
index 9caa9705a61..e7e470b21ff 100644
--- a/Mage.Sets/src/mage/cards/f/Fireslinger.java
+++ b/Mage.Sets/src/mage/cards/f/Fireslinger.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class Fireslinger extends CardImpl {
+public final class Fireslinger extends CardImpl {
public Fireslinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FiresongAndSunspeaker.java b/Mage.Sets/src/mage/cards/f/FiresongAndSunspeaker.java
index 1890f041676..41f2ac44ec5 100644
--- a/Mage.Sets/src/mage/cards/f/FiresongAndSunspeaker.java
+++ b/Mage.Sets/src/mage/cards/f/FiresongAndSunspeaker.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreatureOrPlayer;
/**
* @author rscoates
*/
-public class FiresongAndSunspeaker extends CardImpl {
+public final class FiresongAndSunspeaker extends CardImpl {
private static final FilterObject filter = new FilterObject("Red instant and sorcery spells you control");
diff --git a/Mage.Sets/src/mage/cards/f/Firespout.java b/Mage.Sets/src/mage/cards/f/Firespout.java
index cbf6db7e979..e14d1f65dbd 100644
--- a/Mage.Sets/src/mage/cards/f/Firespout.java
+++ b/Mage.Sets/src/mage/cards/f/Firespout.java
@@ -46,7 +46,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author LevelX2
*/
-public class Firespout extends CardImpl {
+public final class Firespout extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature without flying");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/f/Firestorm.java b/Mage.Sets/src/mage/cards/f/Firestorm.java
index 46da040cd80..6668310e41e 100644
--- a/Mage.Sets/src/mage/cards/f/Firestorm.java
+++ b/Mage.Sets/src/mage/cards/f/Firestorm.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class Firestorm extends CardImpl {
+public final class Firestorm extends CardImpl {
public Firestorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FirestormHellkite.java b/Mage.Sets/src/mage/cards/f/FirestormHellkite.java
index 42d705e4302..edcc24e3dfa 100644
--- a/Mage.Sets/src/mage/cards/f/FirestormHellkite.java
+++ b/Mage.Sets/src/mage/cards/f/FirestormHellkite.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class FirestormHellkite extends CardImpl {
+public final class FirestormHellkite extends CardImpl {
public FirestormHellkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FirewakeSliver.java b/Mage.Sets/src/mage/cards/f/FirewakeSliver.java
index fe0ec2a538c..35722e84e5e 100644
--- a/Mage.Sets/src/mage/cards/f/FirewakeSliver.java
+++ b/Mage.Sets/src/mage/cards/f/FirewakeSliver.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FirewakeSliver extends CardImpl {
+public final class FirewakeSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures");
private static final FilterCreaturePermanent targetSliverFilter = new FilterCreaturePermanent("Sliver");
diff --git a/Mage.Sets/src/mage/cards/f/FirewildBorderpost.java b/Mage.Sets/src/mage/cards/f/FirewildBorderpost.java
index d6965bdba0b..cad2ac31fc4 100644
--- a/Mage.Sets/src/mage/cards/f/FirewildBorderpost.java
+++ b/Mage.Sets/src/mage/cards/f/FirewildBorderpost.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class FirewildBorderpost extends CardImpl {
+public final class FirewildBorderpost extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a basic land");
diff --git a/Mage.Sets/src/mage/cards/f/FirewingPhoenix.java b/Mage.Sets/src/mage/cards/f/FirewingPhoenix.java
index 1e4caa31a41..c242a598877 100644
--- a/Mage.Sets/src/mage/cards/f/FirewingPhoenix.java
+++ b/Mage.Sets/src/mage/cards/f/FirewingPhoenix.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class FirewingPhoenix extends CardImpl {
+public final class FirewingPhoenix extends CardImpl {
public FirewingPhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FirstResponse.java b/Mage.Sets/src/mage/cards/f/FirstResponse.java
index 5e249cf39dd..d7eed5079e2 100644
--- a/Mage.Sets/src/mage/cards/f/FirstResponse.java
+++ b/Mage.Sets/src/mage/cards/f/FirstResponse.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author LevelX2
*/
-public class FirstResponse extends CardImpl {
+public final class FirstResponse extends CardImpl {
public FirstResponse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FirstVolley.java b/Mage.Sets/src/mage/cards/f/FirstVolley.java
index 070de50402f..0536d903cc0 100644
--- a/Mage.Sets/src/mage/cards/f/FirstVolley.java
+++ b/Mage.Sets/src/mage/cards/f/FirstVolley.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class FirstVolley extends CardImpl {
+public final class FirstVolley extends CardImpl {
public FirstVolley(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FishliverOil.java b/Mage.Sets/src/mage/cards/f/FishliverOil.java
index 6f9ced94e31..31fceda6404 100644
--- a/Mage.Sets/src/mage/cards/f/FishliverOil.java
+++ b/Mage.Sets/src/mage/cards/f/FishliverOil.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Laxika
*/
-public class FishliverOil extends CardImpl {
+public final class FishliverOil extends CardImpl {
public FishliverOil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Fissure.java b/Mage.Sets/src/mage/cards/f/Fissure.java
index f077970f186..8d8f17b6ab8 100644
--- a/Mage.Sets/src/mage/cards/f/Fissure.java
+++ b/Mage.Sets/src/mage/cards/f/Fissure.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author Jgod
*/
-public class Fissure extends CardImpl {
+public final class Fissure extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or land");
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), new CardTypePredicate(CardType.LAND)));
diff --git a/Mage.Sets/src/mage/cards/f/FissureVent.java b/Mage.Sets/src/mage/cards/f/FissureVent.java
index e885f9940ad..de9f378ddcf 100644
--- a/Mage.Sets/src/mage/cards/f/FissureVent.java
+++ b/Mage.Sets/src/mage/cards/f/FissureVent.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class FissureVent extends CardImpl {
+public final class FissureVent extends CardImpl {
public FissureVent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FistOfSuns.java b/Mage.Sets/src/mage/cards/f/FistOfSuns.java
index f52801b0ab6..68ee4ae9501 100644
--- a/Mage.Sets/src/mage/cards/f/FistOfSuns.java
+++ b/Mage.Sets/src/mage/cards/f/FistOfSuns.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class FistOfSuns extends CardImpl {
+public final class FistOfSuns extends CardImpl {
public FistOfSuns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/f/FistfulOfForce.java b/Mage.Sets/src/mage/cards/f/FistfulOfForce.java
index 6b5dbe70c19..0e41022776e 100644
--- a/Mage.Sets/src/mage/cards/f/FistfulOfForce.java
+++ b/Mage.Sets/src/mage/cards/f/FistfulOfForce.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class FistfulOfForce extends CardImpl {
+public final class FistfulOfForce extends CardImpl {
public FistfulOfForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FistsOfIronwood.java b/Mage.Sets/src/mage/cards/f/FistsOfIronwood.java
index c87335e3c2f..f94e8bcd358 100644
--- a/Mage.Sets/src/mage/cards/f/FistsOfIronwood.java
+++ b/Mage.Sets/src/mage/cards/f/FistsOfIronwood.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FistsOfIronwood extends CardImpl {
+public final class FistsOfIronwood extends CardImpl {
public FistsOfIronwood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FistsOfTheAnvil.java b/Mage.Sets/src/mage/cards/f/FistsOfTheAnvil.java
index e58fc092ed3..4e2a7287dcb 100644
--- a/Mage.Sets/src/mage/cards/f/FistsOfTheAnvil.java
+++ b/Mage.Sets/src/mage/cards/f/FistsOfTheAnvil.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FistsOfTheAnvil extends CardImpl {
+public final class FistsOfTheAnvil extends CardImpl {
public FistsOfTheAnvil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FistsOfTheDemigod.java b/Mage.Sets/src/mage/cards/f/FistsOfTheDemigod.java
index d116ee56ebe..b742050da76 100644
--- a/Mage.Sets/src/mage/cards/f/FistsOfTheDemigod.java
+++ b/Mage.Sets/src/mage/cards/f/FistsOfTheDemigod.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class FistsOfTheDemigod extends CardImpl {
+public final class FistsOfTheDemigod extends CardImpl {
public FistsOfTheDemigod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/f/FitOfRage.java b/Mage.Sets/src/mage/cards/f/FitOfRage.java
index be79914d482..825e41abec1 100644
--- a/Mage.Sets/src/mage/cards/f/FitOfRage.java
+++ b/Mage.Sets/src/mage/cards/f/FitOfRage.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class FitOfRage extends CardImpl {
+public final class FitOfRage extends CardImpl {
public FitOfRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java b/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java
index a33cc51eefa..1d6e0167abf 100644
--- a/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java
+++ b/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class FiveAlarmFire extends CardImpl {
+public final class FiveAlarmFire extends CardImpl {
public FiveAlarmFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlagstonesOfTrokair.java b/Mage.Sets/src/mage/cards/f/FlagstonesOfTrokair.java
index fa04ff62fcf..2bc803ad581 100644
--- a/Mage.Sets/src/mage/cards/f/FlagstonesOfTrokair.java
+++ b/Mage.Sets/src/mage/cards/f/FlagstonesOfTrokair.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class FlagstonesOfTrokair extends CardImpl {
+public final class FlagstonesOfTrokair extends CardImpl {
private static final FilterLandCard FILTER = new FilterLandCard("Plains card");
diff --git a/Mage.Sets/src/mage/cards/f/FlailingDrake.java b/Mage.Sets/src/mage/cards/f/FlailingDrake.java
index aa850c4f124..7951c407558 100644
--- a/Mage.Sets/src/mage/cards/f/FlailingDrake.java
+++ b/Mage.Sets/src/mage/cards/f/FlailingDrake.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author anonymous
*/
-public class FlailingDrake extends CardImpl {
+public final class FlailingDrake extends CardImpl {
public FlailingDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FlailingManticore.java b/Mage.Sets/src/mage/cards/f/FlailingManticore.java
index 8f36eba3d66..1843130af38 100644
--- a/Mage.Sets/src/mage/cards/f/FlailingManticore.java
+++ b/Mage.Sets/src/mage/cards/f/FlailingManticore.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FlailingManticore extends CardImpl {
+public final class FlailingManticore extends CardImpl {
public FlailingManticore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlailingOgre.java b/Mage.Sets/src/mage/cards/f/FlailingOgre.java
index a964e4306f4..9e5cfc6b7ad 100644
--- a/Mage.Sets/src/mage/cards/f/FlailingOgre.java
+++ b/Mage.Sets/src/mage/cards/f/FlailingOgre.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FlailingOgre extends CardImpl {
+public final class FlailingOgre extends CardImpl {
public FlailingOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlailingSoldier.java b/Mage.Sets/src/mage/cards/f/FlailingSoldier.java
index 5f401ec2ecb..54626b12f6d 100644
--- a/Mage.Sets/src/mage/cards/f/FlailingSoldier.java
+++ b/Mage.Sets/src/mage/cards/f/FlailingSoldier.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FlailingSoldier extends CardImpl {
+public final class FlailingSoldier extends CardImpl {
public FlailingSoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameBurst.java b/Mage.Sets/src/mage/cards/f/FlameBurst.java
index 96510484b8b..281fa87246d 100644
--- a/Mage.Sets/src/mage/cards/f/FlameBurst.java
+++ b/Mage.Sets/src/mage/cards/f/FlameBurst.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class FlameBurst extends CardImpl {
+public final class FlameBurst extends CardImpl {
private static final FilterCard filter = new FilterCard();
diff --git a/Mage.Sets/src/mage/cards/f/FlameElemental.java b/Mage.Sets/src/mage/cards/f/FlameElemental.java
index d7adadcc20b..b6fba0d7865 100644
--- a/Mage.Sets/src/mage/cards/f/FlameElemental.java
+++ b/Mage.Sets/src/mage/cards/f/FlameElemental.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class FlameElemental extends CardImpl {
+public final class FlameElemental extends CardImpl {
public FlameElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameFusillade.java b/Mage.Sets/src/mage/cards/f/FlameFusillade.java
index f570b7ca769..164594b7d81 100644
--- a/Mage.Sets/src/mage/cards/f/FlameFusillade.java
+++ b/Mage.Sets/src/mage/cards/f/FlameFusillade.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class FlameFusillade extends CardImpl {
+public final class FlameFusillade extends CardImpl {
public FlameFusillade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameJab.java b/Mage.Sets/src/mage/cards/f/FlameJab.java
index e683be723cd..79a754f49af 100644
--- a/Mage.Sets/src/mage/cards/f/FlameJab.java
+++ b/Mage.Sets/src/mage/cards/f/FlameJab.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class FlameJab extends CardImpl {
+public final class FlameJab extends CardImpl {
public FlameJab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameJavelin.java b/Mage.Sets/src/mage/cards/f/FlameJavelin.java
index 1f02395b512..444be4f1fde 100644
--- a/Mage.Sets/src/mage/cards/f/FlameJavelin.java
+++ b/Mage.Sets/src/mage/cards/f/FlameJavelin.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class FlameJavelin extends CardImpl {
+public final class FlameJavelin extends CardImpl {
public FlameJavelin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2/R}{2/R}{2/R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameJet.java b/Mage.Sets/src/mage/cards/f/FlameJet.java
index 56bac17b069..13658a94fa8 100644
--- a/Mage.Sets/src/mage/cards/f/FlameJet.java
+++ b/Mage.Sets/src/mage/cards/f/FlameJet.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LoneFox
*/
-public class FlameJet extends CardImpl {
+public final class FlameJet extends CardImpl {
public FlameJet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameKinWarScout.java b/Mage.Sets/src/mage/cards/f/FlameKinWarScout.java
index d7c39a6ff7a..b9ee788ab55 100644
--- a/Mage.Sets/src/mage/cards/f/FlameKinWarScout.java
+++ b/Mage.Sets/src/mage/cards/f/FlameKinWarScout.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class FlameKinWarScout extends CardImpl {
+public final class FlameKinWarScout extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/f/FlameKinZealot.java b/Mage.Sets/src/mage/cards/f/FlameKinZealot.java
index 40243e68d24..30ed6577a22 100644
--- a/Mage.Sets/src/mage/cards/f/FlameKinZealot.java
+++ b/Mage.Sets/src/mage/cards/f/FlameKinZealot.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Loki
*/
-public class FlameKinZealot extends CardImpl {
+public final class FlameKinZealot extends CardImpl {
public FlameKinZealot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameLash.java b/Mage.Sets/src/mage/cards/f/FlameLash.java
index d7c93d3dfcc..153586ce905 100644
--- a/Mage.Sets/src/mage/cards/f/FlameLash.java
+++ b/Mage.Sets/src/mage/cards/f/FlameLash.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class FlameLash extends CardImpl {
+public final class FlameLash extends CardImpl {
public FlameLash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameRift.java b/Mage.Sets/src/mage/cards/f/FlameRift.java
index 105f1b70518..9a7cef646e5 100644
--- a/Mage.Sets/src/mage/cards/f/FlameRift.java
+++ b/Mage.Sets/src/mage/cards/f/FlameRift.java
@@ -38,7 +38,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class FlameRift extends CardImpl {
+public final class FlameRift extends CardImpl {
public FlameRift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameSlash.java b/Mage.Sets/src/mage/cards/f/FlameSlash.java
index 217dd12964a..19e026f5659 100644
--- a/Mage.Sets/src/mage/cards/f/FlameSlash.java
+++ b/Mage.Sets/src/mage/cards/f/FlameSlash.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class FlameSlash extends CardImpl {
+public final class FlameSlash extends CardImpl {
public FlameSlash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameSpirit.java b/Mage.Sets/src/mage/cards/f/FlameSpirit.java
index 5f52f1d7d38..9d08f6165f3 100644
--- a/Mage.Sets/src/mage/cards/f/FlameSpirit.java
+++ b/Mage.Sets/src/mage/cards/f/FlameSpirit.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class FlameSpirit extends CardImpl {
+public final class FlameSpirit extends CardImpl {
public FlameSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameWave.java b/Mage.Sets/src/mage/cards/f/FlameWave.java
index 9ffb84f0791..38d267b03f9 100644
--- a/Mage.Sets/src/mage/cards/f/FlameWave.java
+++ b/Mage.Sets/src/mage/cards/f/FlameWave.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class FlameWave extends CardImpl {
+public final class FlameWave extends CardImpl {
public FlameWave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameWreathedPhoenix.java b/Mage.Sets/src/mage/cards/f/FlameWreathedPhoenix.java
index 2a49ede5289..2bd21039ba2 100644
--- a/Mage.Sets/src/mage/cards/f/FlameWreathedPhoenix.java
+++ b/Mage.Sets/src/mage/cards/f/FlameWreathedPhoenix.java
@@ -50,7 +50,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class FlameWreathedPhoenix extends CardImpl {
+public final class FlameWreathedPhoenix extends CardImpl {
public FlameWreathedPhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamebladeAdept.java b/Mage.Sets/src/mage/cards/f/FlamebladeAdept.java
index f464c8c1337..7b3ad1037c9 100644
--- a/Mage.Sets/src/mage/cards/f/FlamebladeAdept.java
+++ b/Mage.Sets/src/mage/cards/f/FlamebladeAdept.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class FlamebladeAdept extends CardImpl {
+public final class FlamebladeAdept extends CardImpl {
public FlamebladeAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamebladeAngel.java b/Mage.Sets/src/mage/cards/f/FlamebladeAngel.java
index a8243d7df69..68bae94bb53 100644
--- a/Mage.Sets/src/mage/cards/f/FlamebladeAngel.java
+++ b/Mage.Sets/src/mage/cards/f/FlamebladeAngel.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class FlamebladeAngel extends CardImpl {
+public final class FlamebladeAngel extends CardImpl {
public FlamebladeAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameblastDragon.java b/Mage.Sets/src/mage/cards/f/FlameblastDragon.java
index 1157f1a8ec8..99755227f56 100644
--- a/Mage.Sets/src/mage/cards/f/FlameblastDragon.java
+++ b/Mage.Sets/src/mage/cards/f/FlameblastDragon.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author Loki
*/
-public class FlameblastDragon extends CardImpl {
+public final class FlameblastDragon extends CardImpl {
public FlameblastDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamebornHellion.java b/Mage.Sets/src/mage/cards/f/FlamebornHellion.java
index e55fcfbabff..44407087c8f 100644
--- a/Mage.Sets/src/mage/cards/f/FlamebornHellion.java
+++ b/Mage.Sets/src/mage/cards/f/FlamebornHellion.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class FlamebornHellion extends CardImpl {
+public final class FlamebornHellion extends CardImpl {
public FlamebornHellion (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamebornViron.java b/Mage.Sets/src/mage/cards/f/FlamebornViron.java
index af1f8be0c83..b08660416fb 100644
--- a/Mage.Sets/src/mage/cards/f/FlamebornViron.java
+++ b/Mage.Sets/src/mage/cards/f/FlamebornViron.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FlamebornViron extends CardImpl {
+public final class FlamebornViron extends CardImpl {
public FlamebornViron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Flamebreak.java b/Mage.Sets/src/mage/cards/f/Flamebreak.java
index 0f5e617e96d..47191914858 100644
--- a/Mage.Sets/src/mage/cards/f/Flamebreak.java
+++ b/Mage.Sets/src/mage/cards/f/Flamebreak.java
@@ -50,7 +50,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author LevelX2
*/
-public class Flamebreak extends CardImpl {
+public final class Flamebreak extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/f/FlamecastWheel.java b/Mage.Sets/src/mage/cards/f/FlamecastWheel.java
index 34506b0ffda..8520db6d032 100644
--- a/Mage.Sets/src/mage/cards/f/FlamecastWheel.java
+++ b/Mage.Sets/src/mage/cards/f/FlamecastWheel.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FlamecastWheel extends CardImpl {
+public final class FlamecastWheel extends CardImpl {
public FlamecastWheel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamecoreElemental.java b/Mage.Sets/src/mage/cards/f/FlamecoreElemental.java
index 66af126570a..39a8e67dd64 100644
--- a/Mage.Sets/src/mage/cards/f/FlamecoreElemental.java
+++ b/Mage.Sets/src/mage/cards/f/FlamecoreElemental.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class FlamecoreElemental extends CardImpl {
+public final class FlamecoreElemental extends CardImpl {
public FlamecoreElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java b/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java
index 5621d3b1884..f1bdcb1ca9b 100644
--- a/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java
+++ b/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java
@@ -48,7 +48,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class FlameheartWerewolf extends CardImpl {
+public final class FlameheartWerewolf extends CardImpl {
public FlameheartWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
diff --git a/Mage.Sets/src/mage/cards/f/FlamekinBladewhirl.java b/Mage.Sets/src/mage/cards/f/FlamekinBladewhirl.java
index ad1ac2714e5..6d9ad7f4001 100644
--- a/Mage.Sets/src/mage/cards/f/FlamekinBladewhirl.java
+++ b/Mage.Sets/src/mage/cards/f/FlamekinBladewhirl.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class FlamekinBladewhirl extends CardImpl {
+public final class FlamekinBladewhirl extends CardImpl {
private static final FilterCard filter = new FilterCard("an Elemental card from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/f/FlamekinBrawler.java b/Mage.Sets/src/mage/cards/f/FlamekinBrawler.java
index 8b7efa59dc5..bdb0a514384 100644
--- a/Mage.Sets/src/mage/cards/f/FlamekinBrawler.java
+++ b/Mage.Sets/src/mage/cards/f/FlamekinBrawler.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class FlamekinBrawler extends CardImpl {
+public final class FlamekinBrawler extends CardImpl {
public FlamekinBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamekinHarbinger.java b/Mage.Sets/src/mage/cards/f/FlamekinHarbinger.java
index 31d1a94b433..953a0d88f5e 100644
--- a/Mage.Sets/src/mage/cards/f/FlamekinHarbinger.java
+++ b/Mage.Sets/src/mage/cards/f/FlamekinHarbinger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jonubuu
*/
-public class FlamekinHarbinger extends CardImpl {
+public final class FlamekinHarbinger extends CardImpl {
private static final FilterCard filter = new FilterCard("Elemental card");
diff --git a/Mage.Sets/src/mage/cards/f/FlamekinSpitfire.java b/Mage.Sets/src/mage/cards/f/FlamekinSpitfire.java
index e7c4ca407c0..1b4d5c391d3 100644
--- a/Mage.Sets/src/mage/cards/f/FlamekinSpitfire.java
+++ b/Mage.Sets/src/mage/cards/f/FlamekinSpitfire.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class FlamekinSpitfire extends CardImpl {
+public final class FlamekinSpitfire extends CardImpl {
public FlamekinSpitfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamekinVillage.java b/Mage.Sets/src/mage/cards/f/FlamekinVillage.java
index e94bb6b0dc5..bd7b5bb0332 100644
--- a/Mage.Sets/src/mage/cards/f/FlamekinVillage.java
+++ b/Mage.Sets/src/mage/cards/f/FlamekinVillage.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FlamekinVillage extends CardImpl {
+public final class FlamekinVillage extends CardImpl {
private static final FilterCard filter = new FilterCard("an Elemental card from your hand");
diff --git a/Mage.Sets/src/mage/cards/f/FlamerushRider.java b/Mage.Sets/src/mage/cards/f/FlamerushRider.java
index 108e99c2bdd..8ed36ebe40e 100644
--- a/Mage.Sets/src/mage/cards/f/FlamerushRider.java
+++ b/Mage.Sets/src/mage/cards/f/FlamerushRider.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class FlamerushRider extends CardImpl {
+public final class FlamerushRider extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target attacking creature");
diff --git a/Mage.Sets/src/mage/cards/f/FlamesOfRemembrance.java b/Mage.Sets/src/mage/cards/f/FlamesOfRemembrance.java
index 53db4fdc90d..24caba2a414 100644
--- a/Mage.Sets/src/mage/cards/f/FlamesOfRemembrance.java
+++ b/Mage.Sets/src/mage/cards/f/FlamesOfRemembrance.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author Styxo
*/
-public class FlamesOfRemembrance extends CardImpl {
+public final class FlamesOfRemembrance extends CardImpl {
public FlamesOfRemembrance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java b/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java
index 1af364ac62f..a1d52e09e16 100644
--- a/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java
+++ b/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class FlamesOfTheBloodHand extends CardImpl {
+public final class FlamesOfTheBloodHand extends CardImpl {
public FlamesOfTheBloodHand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamesOfTheFirebrand.java b/Mage.Sets/src/mage/cards/f/FlamesOfTheFirebrand.java
index bdbaaff7734..78b72ca378a 100644
--- a/Mage.Sets/src/mage/cards/f/FlamesOfTheFirebrand.java
+++ b/Mage.Sets/src/mage/cards/f/FlamesOfTheFirebrand.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author North
*/
-public class FlamesOfTheFirebrand extends CardImpl {
+public final class FlamesOfTheFirebrand extends CardImpl {
public FlamesOfTheFirebrand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlameshadowConjuring.java b/Mage.Sets/src/mage/cards/f/FlameshadowConjuring.java
index 1c017740df8..692d4f5c81e 100644
--- a/Mage.Sets/src/mage/cards/f/FlameshadowConjuring.java
+++ b/Mage.Sets/src/mage/cards/f/FlameshadowConjuring.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class FlameshadowConjuring extends CardImpl {
+public final class FlameshadowConjuring extends CardImpl {
private static final FilterControlledCreaturePermanent filterNontoken = new FilterControlledCreaturePermanent("nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/f/Flameshot.java b/Mage.Sets/src/mage/cards/f/Flameshot.java
index 4835e725b8e..8d7d391b8ed 100644
--- a/Mage.Sets/src/mage/cards/f/Flameshot.java
+++ b/Mage.Sets/src/mage/cards/f/Flameshot.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author fireshoes
*/
-public class Flameshot extends CardImpl {
+public final class Flameshot extends CardImpl {
private static final FilterCard filter = new FilterCard("a Mountain card");
diff --git a/Mage.Sets/src/mage/cards/f/FlamespeakerAdept.java b/Mage.Sets/src/mage/cards/f/FlamespeakerAdept.java
index 918d083e7c9..6f4fa6d8881 100644
--- a/Mage.Sets/src/mage/cards/f/FlamespeakerAdept.java
+++ b/Mage.Sets/src/mage/cards/f/FlamespeakerAdept.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class FlamespeakerAdept extends CardImpl {
+public final class FlamespeakerAdept extends CardImpl {
public FlamespeakerAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamespeakersWill.java b/Mage.Sets/src/mage/cards/f/FlamespeakersWill.java
index 17300860d32..9d160c11b71 100644
--- a/Mage.Sets/src/mage/cards/f/FlamespeakersWill.java
+++ b/Mage.Sets/src/mage/cards/f/FlamespeakersWill.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class FlamespeakersWill extends CardImpl {
+public final class FlamespeakersWill extends CardImpl {
public FlamespeakersWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamestickCourier.java b/Mage.Sets/src/mage/cards/f/FlamestickCourier.java
index d48731c8bf6..449fffc5347 100644
--- a/Mage.Sets/src/mage/cards/f/FlamestickCourier.java
+++ b/Mage.Sets/src/mage/cards/f/FlamestickCourier.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FlamestickCourier extends CardImpl {
+public final class FlamestickCourier extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin creature");
diff --git a/Mage.Sets/src/mage/cards/f/FlametongueKavu.java b/Mage.Sets/src/mage/cards/f/FlametongueKavu.java
index 5df12e5a087..071424e476a 100644
--- a/Mage.Sets/src/mage/cards/f/FlametongueKavu.java
+++ b/Mage.Sets/src/mage/cards/f/FlametongueKavu.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FlametongueKavu extends CardImpl {
+public final class FlametongueKavu extends CardImpl {
public FlametongueKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamewakePhoenix.java b/Mage.Sets/src/mage/cards/f/FlamewakePhoenix.java
index e6dbb996697..49c12ec87a7 100644
--- a/Mage.Sets/src/mage/cards/f/FlamewakePhoenix.java
+++ b/Mage.Sets/src/mage/cards/f/FlamewakePhoenix.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class FlamewakePhoenix extends CardImpl {
+public final class FlamewakePhoenix extends CardImpl {
public FlamewakePhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlamewaveInvoker.java b/Mage.Sets/src/mage/cards/f/FlamewaveInvoker.java
index acbe454dddc..ceb8126a3dc 100644
--- a/Mage.Sets/src/mage/cards/f/FlamewaveInvoker.java
+++ b/Mage.Sets/src/mage/cards/f/FlamewaveInvoker.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class FlamewaveInvoker extends CardImpl {
+public final class FlamewaveInvoker extends CardImpl {
public FlamewaveInvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Flamewright.java b/Mage.Sets/src/mage/cards/f/Flamewright.java
index 6f2b6693d06..ac89c4f610e 100644
--- a/Mage.Sets/src/mage/cards/f/Flamewright.java
+++ b/Mage.Sets/src/mage/cards/f/Flamewright.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class Flamewright extends CardImpl {
+public final class Flamewright extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("creature with defender");
diff --git a/Mage.Sets/src/mage/cards/f/FlamingSword.java b/Mage.Sets/src/mage/cards/f/FlamingSword.java
index ee02e8ca8c2..ee3edce90c7 100644
--- a/Mage.Sets/src/mage/cards/f/FlamingSword.java
+++ b/Mage.Sets/src/mage/cards/f/FlamingSword.java
@@ -52,7 +52,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class FlamingSword extends CardImpl {
+public final class FlamingSword extends CardImpl {
public FlamingSword(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlankingTroops.java b/Mage.Sets/src/mage/cards/f/FlankingTroops.java
index a8e4fa40e31..83072b22148 100644
--- a/Mage.Sets/src/mage/cards/f/FlankingTroops.java
+++ b/Mage.Sets/src/mage/cards/f/FlankingTroops.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FlankingTroops extends CardImpl {
+public final class FlankingTroops extends CardImpl {
public FlankingTroops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/Flare.java b/Mage.Sets/src/mage/cards/f/Flare.java
index 9cf37fcdd71..a97f35d400d 100644
--- a/Mage.Sets/src/mage/cards/f/Flare.java
+++ b/Mage.Sets/src/mage/cards/f/Flare.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class Flare extends CardImpl {
+public final class Flare extends CardImpl {
public Flare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlaringFlameKin.java b/Mage.Sets/src/mage/cards/f/FlaringFlameKin.java
index e29d44d7896..39762a0e52e 100644
--- a/Mage.Sets/src/mage/cards/f/FlaringFlameKin.java
+++ b/Mage.Sets/src/mage/cards/f/FlaringFlameKin.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class FlaringFlameKin extends CardImpl {
+public final class FlaringFlameKin extends CardImpl {
public FlaringFlameKin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlaringPain.java b/Mage.Sets/src/mage/cards/f/FlaringPain.java
index 0d18dfbbda4..994168250ce 100644
--- a/Mage.Sets/src/mage/cards/f/FlaringPain.java
+++ b/Mage.Sets/src/mage/cards/f/FlaringPain.java
@@ -41,7 +41,7 @@ import mage.constants.TimingRule;
*
* @author fireshoes
*/
-public class FlaringPain extends CardImpl {
+public final class FlaringPain extends CardImpl {
public FlaringPain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Flash.java b/Mage.Sets/src/mage/cards/f/Flash.java
index cd400ffed59..24e093e41d3 100644
--- a/Mage.Sets/src/mage/cards/f/Flash.java
+++ b/Mage.Sets/src/mage/cards/f/Flash.java
@@ -49,7 +49,7 @@ import mage.util.CardUtil;
*
* @author Quercitron
*/
-public class Flash extends CardImpl {
+public final class Flash extends CardImpl {
public Flash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FlashConscription.java b/Mage.Sets/src/mage/cards/f/FlashConscription.java
index 91e9cf345b9..d480962eaac 100644
--- a/Mage.Sets/src/mage/cards/f/FlashConscription.java
+++ b/Mage.Sets/src/mage/cards/f/FlashConscription.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FlashConscription extends CardImpl {
+public final class FlashConscription extends CardImpl {
public FlashConscription(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlashCounter.java b/Mage.Sets/src/mage/cards/f/FlashCounter.java
index 0226b62621f..ab012186c51 100644
--- a/Mage.Sets/src/mage/cards/f/FlashCounter.java
+++ b/Mage.Sets/src/mage/cards/f/FlashCounter.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class FlashCounter extends CardImpl {
+public final class FlashCounter extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant spell");
diff --git a/Mage.Sets/src/mage/cards/f/FlashFlood.java b/Mage.Sets/src/mage/cards/f/FlashFlood.java
index 7339121a8db..ebd1baab2ce 100644
--- a/Mage.Sets/src/mage/cards/f/FlashFlood.java
+++ b/Mage.Sets/src/mage/cards/f/FlashFlood.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class FlashFlood extends CardImpl {
+public final class FlashFlood extends CardImpl {
private static final FilterPermanent filter1 = new FilterPermanent("red permanent");
private static final FilterPermanent filter2 = new FilterPermanent("Mountain");
diff --git a/Mage.Sets/src/mage/cards/f/FlashOfDefiance.java b/Mage.Sets/src/mage/cards/f/FlashOfDefiance.java
index 419047967e5..3b0f49286ec 100644
--- a/Mage.Sets/src/mage/cards/f/FlashOfDefiance.java
+++ b/Mage.Sets/src/mage/cards/f/FlashOfDefiance.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class FlashOfDefiance extends CardImpl {
+public final class FlashOfDefiance extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creatures and white creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FlashOfInsight.java b/Mage.Sets/src/mage/cards/f/FlashOfInsight.java
index 45b57d7c28d..b545f4506d5 100644
--- a/Mage.Sets/src/mage/cards/f/FlashOfInsight.java
+++ b/Mage.Sets/src/mage/cards/f/FlashOfInsight.java
@@ -54,7 +54,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class FlashOfInsight extends CardImpl {
+public final class FlashOfInsight extends CardImpl {
public FlashOfInsight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Flashfires.java b/Mage.Sets/src/mage/cards/f/Flashfires.java
index a5bb3a993a3..185d681e72c 100644
--- a/Mage.Sets/src/mage/cards/f/Flashfires.java
+++ b/Mage.Sets/src/mage/cards/f/Flashfires.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class Flashfires extends CardImpl {
+public final class Flashfires extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Plains");
diff --git a/Mage.Sets/src/mage/cards/f/Flashfreeze.java b/Mage.Sets/src/mage/cards/f/Flashfreeze.java
index cde9150d773..f812b32d887 100644
--- a/Mage.Sets/src/mage/cards/f/Flashfreeze.java
+++ b/Mage.Sets/src/mage/cards/f/Flashfreeze.java
@@ -43,7 +43,7 @@ import mage.target.TargetSpell;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Flashfreeze extends CardImpl {
+public final class Flashfreeze extends CardImpl {
private static final FilterSpell filter = new FilterSpell("red or green spell");
diff --git a/Mage.Sets/src/mage/cards/f/Flatten.java b/Mage.Sets/src/mage/cards/f/Flatten.java
index 82706570548..482d90d5066 100644
--- a/Mage.Sets/src/mage/cards/f/Flatten.java
+++ b/Mage.Sets/src/mage/cards/f/Flatten.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Flatten extends CardImpl {
+public final class Flatten extends CardImpl {
public Flatten(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/Flay.java b/Mage.Sets/src/mage/cards/f/Flay.java
index e9cc5561a0a..aab08d66fc9 100644
--- a/Mage.Sets/src/mage/cards/f/Flay.java
+++ b/Mage.Sets/src/mage/cards/f/Flay.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author L_J
*/
-public class Flay extends CardImpl {
+public final class Flay extends CardImpl {
public Flay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FlayedNim.java b/Mage.Sets/src/mage/cards/f/FlayedNim.java
index 2cba800e696..ffbd626bc97 100644
--- a/Mage.Sets/src/mage/cards/f/FlayedNim.java
+++ b/Mage.Sets/src/mage/cards/f/FlayedNim.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class FlayedNim extends CardImpl {
+public final class FlayedNim extends CardImpl {
public FlayedNim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FlayerDrone.java b/Mage.Sets/src/mage/cards/f/FlayerDrone.java
index 2cbbe921c4e..90868ef7aea 100644
--- a/Mage.Sets/src/mage/cards/f/FlayerDrone.java
+++ b/Mage.Sets/src/mage/cards/f/FlayerDrone.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class FlayerDrone extends CardImpl {
+public final class FlayerDrone extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another colorless creature");
diff --git a/Mage.Sets/src/mage/cards/f/FlayerHusk.java b/Mage.Sets/src/mage/cards/f/FlayerHusk.java
index c9a6bd9c07e..68528b36aab 100644
--- a/Mage.Sets/src/mage/cards/f/FlayerHusk.java
+++ b/Mage.Sets/src/mage/cards/f/FlayerHusk.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class FlayerHusk extends CardImpl {
+public final class FlayerHusk extends CardImpl {
public FlayerHusk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/f/FlayerOfTheHatebound.java b/Mage.Sets/src/mage/cards/f/FlayerOfTheHatebound.java
index 75ec723f8ed..a9690eac918 100644
--- a/Mage.Sets/src/mage/cards/f/FlayerOfTheHatebound.java
+++ b/Mage.Sets/src/mage/cards/f/FlayerOfTheHatebound.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward
*/
-public class FlayerOfTheHatebound extends CardImpl {
+public final class FlayerOfTheHatebound extends CardImpl {
public FlayerOfTheHatebound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlayingTendrils.java b/Mage.Sets/src/mage/cards/f/FlayingTendrils.java
index b1012af9313..041432d2a6d 100644
--- a/Mage.Sets/src/mage/cards/f/FlayingTendrils.java
+++ b/Mage.Sets/src/mage/cards/f/FlayingTendrils.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class FlayingTendrils extends CardImpl {
+public final class FlayingTendrils extends CardImpl {
public FlayingTendrils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FledglingDjinn.java b/Mage.Sets/src/mage/cards/f/FledglingDjinn.java
index 486ae7f73e9..70415216a8f 100644
--- a/Mage.Sets/src/mage/cards/f/FledglingDjinn.java
+++ b/Mage.Sets/src/mage/cards/f/FledglingDjinn.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class FledglingDjinn extends CardImpl {
+public final class FledglingDjinn extends CardImpl {
public FledglingDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FledglingDragon.java b/Mage.Sets/src/mage/cards/f/FledglingDragon.java
index 80ac4009278..7da56329703 100644
--- a/Mage.Sets/src/mage/cards/f/FledglingDragon.java
+++ b/Mage.Sets/src/mage/cards/f/FledglingDragon.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FledglingDragon extends CardImpl {
+public final class FledglingDragon extends CardImpl {
public FledglingDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FledglingGriffin.java b/Mage.Sets/src/mage/cards/f/FledglingGriffin.java
index f0ad31eba97..00f74c85a16 100644
--- a/Mage.Sets/src/mage/cards/f/FledglingGriffin.java
+++ b/Mage.Sets/src/mage/cards/f/FledglingGriffin.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class FledglingGriffin extends CardImpl {
+public final class FledglingGriffin extends CardImpl {
public FledglingGriffin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FledglingImp.java b/Mage.Sets/src/mage/cards/f/FledglingImp.java
index 807bd1d14d4..d2fed036093 100644
--- a/Mage.Sets/src/mage/cards/f/FledglingImp.java
+++ b/Mage.Sets/src/mage/cards/f/FledglingImp.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class FledglingImp extends CardImpl {
+public final class FledglingImp extends CardImpl {
public FledglingImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FledglingMawcor.java b/Mage.Sets/src/mage/cards/f/FledglingMawcor.java
index 98761a4503f..dbe0c6952e1 100644
--- a/Mage.Sets/src/mage/cards/f/FledglingMawcor.java
+++ b/Mage.Sets/src/mage/cards/f/FledglingMawcor.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class FledglingMawcor extends CardImpl {
+public final class FledglingMawcor extends CardImpl {
public FledglingMawcor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FledglingOsprey.java b/Mage.Sets/src/mage/cards/f/FledglingOsprey.java
index 7faf2d98a29..5954cbdebbb 100644
--- a/Mage.Sets/src/mage/cards/f/FledglingOsprey.java
+++ b/Mage.Sets/src/mage/cards/f/FledglingOsprey.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Galatolol
*/
-public class FledglingOsprey extends CardImpl {
+public final class FledglingOsprey extends CardImpl {
public FledglingOsprey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FleecemaneLion.java b/Mage.Sets/src/mage/cards/f/FleecemaneLion.java
index 4fe26ca946e..d68b9fb171b 100644
--- a/Mage.Sets/src/mage/cards/f/FleecemaneLion.java
+++ b/Mage.Sets/src/mage/cards/f/FleecemaneLion.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class FleecemaneLion extends CardImpl {
+public final class FleecemaneLion extends CardImpl {
public FleecemaneLion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java b/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java
index c6309715d7d..dc6821f73e6 100644
--- a/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java
+++ b/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author fireshoes
*/
-public class FleetFootedMonk extends CardImpl {
+public final class FleetFootedMonk extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or greater");
diff --git a/Mage.Sets/src/mage/cards/f/FleetSwallower.java b/Mage.Sets/src/mage/cards/f/FleetSwallower.java
index 0b3c83da734..650924706b8 100644
--- a/Mage.Sets/src/mage/cards/f/FleetSwallower.java
+++ b/Mage.Sets/src/mage/cards/f/FleetSwallower.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class FleetSwallower extends CardImpl {
+public final class FleetSwallower extends CardImpl {
public FleetSwallower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FleetfeatherCockatrice.java b/Mage.Sets/src/mage/cards/f/FleetfeatherCockatrice.java
index 639ba26eb98..50eecff2896 100644
--- a/Mage.Sets/src/mage/cards/f/FleetfeatherCockatrice.java
+++ b/Mage.Sets/src/mage/cards/f/FleetfeatherCockatrice.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class FleetfeatherCockatrice extends CardImpl {
+public final class FleetfeatherCockatrice extends CardImpl {
public FleetfeatherCockatrice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java b/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java
index 9c338d4d462..006ecd1a5b9 100644
--- a/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java
+++ b/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java
@@ -43,7 +43,7 @@ import mage.constants.*;
*
* @author LevelX2
*/
-public class FleetfeatherSandals extends CardImpl {
+public final class FleetfeatherSandals extends CardImpl {
public FleetfeatherSandals(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/f/FleetfootPanther.java b/Mage.Sets/src/mage/cards/f/FleetfootPanther.java
index bf1f17d2810..fd03d41c484 100644
--- a/Mage.Sets/src/mage/cards/f/FleetfootPanther.java
+++ b/Mage.Sets/src/mage/cards/f/FleetfootPanther.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author FenrisulfrX
*/
-public class FleetfootPanther extends CardImpl {
+public final class FleetfootPanther extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("green or white creature you control");
diff --git a/Mage.Sets/src/mage/cards/f/FleetingAven.java b/Mage.Sets/src/mage/cards/f/FleetingAven.java
index 1a42f824256..57a99ec8f53 100644
--- a/Mage.Sets/src/mage/cards/f/FleetingAven.java
+++ b/Mage.Sets/src/mage/cards/f/FleetingAven.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class FleetingAven extends CardImpl {
+public final class FleetingAven extends CardImpl {
public FleetingAven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FleetingDistraction.java b/Mage.Sets/src/mage/cards/f/FleetingDistraction.java
index a63a31322e4..ce557e7e5fb 100644
--- a/Mage.Sets/src/mage/cards/f/FleetingDistraction.java
+++ b/Mage.Sets/src/mage/cards/f/FleetingDistraction.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FleetingDistraction extends CardImpl {
+public final class FleetingDistraction extends CardImpl {
public FleetingDistraction (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FleetingImage.java b/Mage.Sets/src/mage/cards/f/FleetingImage.java
index 414715bd551..3fa8db57e9a 100644
--- a/Mage.Sets/src/mage/cards/f/FleetingImage.java
+++ b/Mage.Sets/src/mage/cards/f/FleetingImage.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class FleetingImage extends CardImpl {
+public final class FleetingImage extends CardImpl {
public FleetingImage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FleetingMemories.java b/Mage.Sets/src/mage/cards/f/FleetingMemories.java
index 4f97ae8472a..551f22f9799 100644
--- a/Mage.Sets/src/mage/cards/f/FleetingMemories.java
+++ b/Mage.Sets/src/mage/cards/f/FleetingMemories.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class FleetingMemories extends CardImpl {
+public final class FleetingMemories extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Clue");
diff --git a/Mage.Sets/src/mage/cards/f/FleetwheelCruiser.java b/Mage.Sets/src/mage/cards/f/FleetwheelCruiser.java
index 71ec564a9aa..ffc9e8a903b 100644
--- a/Mage.Sets/src/mage/cards/f/FleetwheelCruiser.java
+++ b/Mage.Sets/src/mage/cards/f/FleetwheelCruiser.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class FleetwheelCruiser extends CardImpl {
+public final class FleetwheelCruiser extends CardImpl {
public FleetwheelCruiser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/f/Flensermite.java b/Mage.Sets/src/mage/cards/f/Flensermite.java
index 6b59bda9f82..694c4ebc9f3 100644
--- a/Mage.Sets/src/mage/cards/f/Flensermite.java
+++ b/Mage.Sets/src/mage/cards/f/Flensermite.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class Flensermite extends CardImpl {
+public final class Flensermite extends CardImpl {
public Flensermite (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FleshAllergy.java b/Mage.Sets/src/mage/cards/f/FleshAllergy.java
index abd6acdcee9..3396f0770a5 100644
--- a/Mage.Sets/src/mage/cards/f/FleshAllergy.java
+++ b/Mage.Sets/src/mage/cards/f/FleshAllergy.java
@@ -54,7 +54,7 @@ import mage.watchers.Watcher;
*
* @author nantuko
*/
-public class FleshAllergy extends CardImpl {
+public final class FleshAllergy extends CardImpl {
public FleshAllergy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FleshBlood.java b/Mage.Sets/src/mage/cards/f/FleshBlood.java
index 6fcc518946f..55b9c5d8eb5 100644
--- a/Mage.Sets/src/mage/cards/f/FleshBlood.java
+++ b/Mage.Sets/src/mage/cards/f/FleshBlood.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetAnyTarget;
import mage.target.common.TargetCreaturePermanent;
-public class FleshBlood extends SplitCard {
+public final class FleshBlood extends SplitCard {
public FleshBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{G}", "{R}{G}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/f/FleshCarver.java b/Mage.Sets/src/mage/cards/f/FleshCarver.java
index 3a99fac51ab..6e15df562dc 100644
--- a/Mage.Sets/src/mage/cards/f/FleshCarver.java
+++ b/Mage.Sets/src/mage/cards/f/FleshCarver.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class FleshCarver extends CardImpl {
+public final class FleshCarver extends CardImpl {
public FleshCarver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FleshEaterImp.java b/Mage.Sets/src/mage/cards/f/FleshEaterImp.java
index 9db33700847..f46b1fe7496 100644
--- a/Mage.Sets/src/mage/cards/f/FleshEaterImp.java
+++ b/Mage.Sets/src/mage/cards/f/FleshEaterImp.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class FleshEaterImp extends CardImpl {
+public final class FleshEaterImp extends CardImpl {
public FleshEaterImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FleshReaver.java b/Mage.Sets/src/mage/cards/f/FleshReaver.java
index eb5448509d2..9eacf271376 100644
--- a/Mage.Sets/src/mage/cards/f/FleshReaver.java
+++ b/Mage.Sets/src/mage/cards/f/FleshReaver.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class FleshReaver extends CardImpl {
+public final class FleshReaver extends CardImpl {
public FleshReaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FleshToDust.java b/Mage.Sets/src/mage/cards/f/FleshToDust.java
index c78af7c752d..bea7e268724 100644
--- a/Mage.Sets/src/mage/cards/f/FleshToDust.java
+++ b/Mage.Sets/src/mage/cards/f/FleshToDust.java
@@ -37,7 +37,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class FleshToDust extends CardImpl {
+public final class FleshToDust extends CardImpl {
public FleshToDust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FleshbagMarauder.java b/Mage.Sets/src/mage/cards/f/FleshbagMarauder.java
index e7b4c863f3b..41a22d6e596 100644
--- a/Mage.Sets/src/mage/cards/f/FleshbagMarauder.java
+++ b/Mage.Sets/src/mage/cards/f/FleshbagMarauder.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author jonubuu
*/
-public class FleshbagMarauder extends CardImpl {
+public final class FleshbagMarauder extends CardImpl {
public FleshbagMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/Fleshformer.java b/Mage.Sets/src/mage/cards/f/Fleshformer.java
index 196bc37ad2f..2db435f35c7 100644
--- a/Mage.Sets/src/mage/cards/f/Fleshformer.java
+++ b/Mage.Sets/src/mage/cards/f/Fleshformer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class Fleshformer extends CardImpl {
+public final class Fleshformer extends CardImpl {
public Fleshformer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/Fleshgrafter.java b/Mage.Sets/src/mage/cards/f/Fleshgrafter.java
index 42542f719a0..df6924b94c3 100644
--- a/Mage.Sets/src/mage/cards/f/Fleshgrafter.java
+++ b/Mage.Sets/src/mage/cards/f/Fleshgrafter.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author Plopman
*/
-public class Fleshgrafter extends CardImpl {
+public final class Fleshgrafter extends CardImpl {
public Fleshgrafter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FleshmadSteed.java b/Mage.Sets/src/mage/cards/f/FleshmadSteed.java
index 01908e9a6f0..6fc6a3e216b 100644
--- a/Mage.Sets/src/mage/cards/f/FleshmadSteed.java
+++ b/Mage.Sets/src/mage/cards/f/FleshmadSteed.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class FleshmadSteed extends CardImpl {
+public final class FleshmadSteed extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
diff --git a/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java b/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java
index 45b4ae92115..617372d64fa 100644
--- a/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java
+++ b/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class FleshpulperGiant extends CardImpl {
+public final class FleshpulperGiant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with toughess 2 or less");
diff --git a/Mage.Sets/src/mage/cards/f/Fleshwrither.java b/Mage.Sets/src/mage/cards/f/Fleshwrither.java
index 532aaa1bd9a..f88136e22fe 100644
--- a/Mage.Sets/src/mage/cards/f/Fleshwrither.java
+++ b/Mage.Sets/src/mage/cards/f/Fleshwrither.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class Fleshwrither extends CardImpl {
+public final class Fleshwrither extends CardImpl {
public Fleshwrither(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/Flicker.java b/Mage.Sets/src/mage/cards/f/Flicker.java
index 9ce59c83619..6135a29c671 100644
--- a/Mage.Sets/src/mage/cards/f/Flicker.java
+++ b/Mage.Sets/src/mage/cards/f/Flicker.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class Flicker extends CardImpl {
+public final class Flicker extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nontoken permanent");
diff --git a/Mage.Sets/src/mage/cards/f/Flickerform.java b/Mage.Sets/src/mage/cards/f/Flickerform.java
index f1bbbbba8b0..c7cbe3edbe4 100644
--- a/Mage.Sets/src/mage/cards/f/Flickerform.java
+++ b/Mage.Sets/src/mage/cards/f/Flickerform.java
@@ -27,6 +27,8 @@
*/
package mage.cards.f;
+import java.util.HashSet;
+import java.util.Set;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@@ -50,8 +52,8 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.ExileZone;
import mage.game.Game;
import mage.game.permanent.Permanent;
-import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
+import mage.players.Player;
import mage.target.Target;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@@ -60,10 +62,10 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Flickerform extends CardImpl {
+public final class Flickerform extends CardImpl {
public Flickerform(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
this.subtype.add(SubType.AURA);
// Enchant creature
@@ -128,7 +130,7 @@ class FlickerformEffect extends OneShotEffect {
}
}
if (!(enchantedCreature instanceof Token)) {
- // At the beginning of the next end step, return that card to the battlefield under its owner's control.
+ // At the beginning of the next end step, return that card to the battlefield under its owner's control.
// If you do, return the other cards exiled this way to the battlefield under their owners' control attached to that creature
AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(
new FlickerformReturnEffect(enchantedCreature.getId(), exileZoneId));
@@ -174,12 +176,17 @@ class FlickerformReturnEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
ExileZone exileZone = game.getExile().getExileZone(exileZoneId);
Card enchantedCard = exileZone.get(enchantedCardId, game);
if (enchantedCard != null) {
- enchantedCard.putOntoBattlefield(game, Zone.EXILED, source.getSourceId(), enchantedCard.getOwnerId());
+ controller.moveCards(enchantedCard, Zone.BATTLEFIELD, source, game);
Permanent newPermanent = game.getPermanent(enchantedCardId);
if (newPermanent != null) {
+ Set toBattlefieldAttached = new HashSet();
for (Card enchantment : exileZone.getCards(game)) {
if (filterAura.match(enchantment, game)) {
boolean canTarget = false;
@@ -196,9 +203,13 @@ class FlickerformReturnEffect extends OneShotEffect {
}
game.getState().setValue("attachTo:" + enchantment.getId(), newPermanent);
}
- if (enchantment.putOntoBattlefield(game, Zone.EXILED, source.getSourceId(), enchantment.getOwnerId())) {
- if (filterAura.match(enchantment, game)) {
- newPermanent.addAttachment(enchantment.getId(), game);
+ toBattlefieldAttached.add(enchantment);
+ }
+ if (!toBattlefieldAttached.isEmpty()) {
+ controller.moveCards(toBattlefieldAttached, Zone.BATTLEFIELD, source, game);
+ for (Card card : toBattlefieldAttached) {
+ if (game.getState().getZone(card.getId()).equals(Zone.BATTLEFIELD)) {
+ newPermanent.addAttachment(card.getId(), game);
}
}
}
diff --git a/Mage.Sets/src/mage/cards/f/FlickeringSpirit.java b/Mage.Sets/src/mage/cards/f/FlickeringSpirit.java
index 442e3078444..34637c9e3b5 100644
--- a/Mage.Sets/src/mage/cards/f/FlickeringSpirit.java
+++ b/Mage.Sets/src/mage/cards/f/FlickeringSpirit.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class FlickeringSpirit extends CardImpl {
+public final class FlickeringSpirit extends CardImpl {
public FlickeringSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FlickeringWard.java b/Mage.Sets/src/mage/cards/f/FlickeringWard.java
index 2df3ba02cef..f1c6a15e63c 100644
--- a/Mage.Sets/src/mage/cards/f/FlickeringWard.java
+++ b/Mage.Sets/src/mage/cards/f/FlickeringWard.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FlickeringWard extends CardImpl {
+public final class FlickeringWard extends CardImpl {
public FlickeringWard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/f/Flickerwisp.java b/Mage.Sets/src/mage/cards/f/Flickerwisp.java
index 54f7e333868..1fc47788411 100644
--- a/Mage.Sets/src/mage/cards/f/Flickerwisp.java
+++ b/Mage.Sets/src/mage/cards/f/Flickerwisp.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class Flickerwisp extends CardImpl {
+public final class Flickerwisp extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another target permanent");
diff --git a/Mage.Sets/src/mage/cards/f/Flight.java b/Mage.Sets/src/mage/cards/f/Flight.java
index fa6f415f7ee..a26f9ace0c2 100644
--- a/Mage.Sets/src/mage/cards/f/Flight.java
+++ b/Mage.Sets/src/mage/cards/f/Flight.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Flight extends CardImpl {
+public final class Flight extends CardImpl {
public Flight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FlightOfFancy.java b/Mage.Sets/src/mage/cards/f/FlightOfFancy.java
index b20e1d5a193..93df2633c56 100644
--- a/Mage.Sets/src/mage/cards/f/FlightOfFancy.java
+++ b/Mage.Sets/src/mage/cards/f/FlightOfFancy.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FlightOfFancy extends CardImpl {
+public final class FlightOfFancy extends CardImpl {
public FlightOfFancy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FlightSpellbomb.java b/Mage.Sets/src/mage/cards/f/FlightSpellbomb.java
index a9fe88f628f..1c2fe15db43 100644
--- a/Mage.Sets/src/mage/cards/f/FlightSpellbomb.java
+++ b/Mage.Sets/src/mage/cards/f/FlightSpellbomb.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FlightSpellbomb extends CardImpl {
+public final class FlightSpellbomb extends CardImpl {
public FlightSpellbomb (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/f/Fling.java b/Mage.Sets/src/mage/cards/f/Fling.java
index f428d5b9895..6f2f7a665a3 100644
--- a/Mage.Sets/src/mage/cards/f/Fling.java
+++ b/Mage.Sets/src/mage/cards/f/Fling.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Fling extends CardImpl {
+public final class Fling extends CardImpl {
public Fling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlintGolem.java b/Mage.Sets/src/mage/cards/f/FlintGolem.java
index ee99cfbb37d..91a31f1d798 100644
--- a/Mage.Sets/src/mage/cards/f/FlintGolem.java
+++ b/Mage.Sets/src/mage/cards/f/FlintGolem.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes & L_J
*/
-public class FlintGolem extends CardImpl {
+public final class FlintGolem extends CardImpl {
public FlintGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/f/FlinthoofBoar.java b/Mage.Sets/src/mage/cards/f/FlinthoofBoar.java
index bd2c19e66e2..b599c71b2e2 100644
--- a/Mage.Sets/src/mage/cards/f/FlinthoofBoar.java
+++ b/Mage.Sets/src/mage/cards/f/FlinthoofBoar.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class FlinthoofBoar extends CardImpl {
+public final class FlinthoofBoar extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Mountain");
diff --git a/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java b/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java
index 8c7ff657320..053960702e2 100644
--- a/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java
+++ b/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class FlitterstepEidolon extends CardImpl {
+public final class FlitterstepEidolon extends CardImpl {
public FlitterstepEidolon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FloatingDreamZubera.java b/Mage.Sets/src/mage/cards/f/FloatingDreamZubera.java
index 247ce3c394a..8ad684c1461 100644
--- a/Mage.Sets/src/mage/cards/f/FloatingDreamZubera.java
+++ b/Mage.Sets/src/mage/cards/f/FloatingDreamZubera.java
@@ -42,7 +42,7 @@ import mage.watchers.common.ZuberasDiedWatcher;
/**
* @author Loki
*/
-public class FloatingDreamZubera extends CardImpl {
+public final class FloatingDreamZubera extends CardImpl {
public FloatingDreamZubera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Flood.java b/Mage.Sets/src/mage/cards/f/Flood.java
index 94bcf86d8f6..0ac0bd8608f 100644
--- a/Mage.Sets/src/mage/cards/f/Flood.java
+++ b/Mage.Sets/src/mage/cards/f/Flood.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Flood extends CardImpl {
+public final class Flood extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/f/FloodOfRecollection.java b/Mage.Sets/src/mage/cards/f/FloodOfRecollection.java
index 62050cd705f..77297fbf603 100644
--- a/Mage.Sets/src/mage/cards/f/FloodOfRecollection.java
+++ b/Mage.Sets/src/mage/cards/f/FloodOfRecollection.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author L_J
*/
-public class FloodOfRecollection extends CardImpl {
+public final class FloodOfRecollection extends CardImpl {
public FloodOfRecollection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FloodPlain.java b/Mage.Sets/src/mage/cards/f/FloodPlain.java
index a99552ef0b5..0169945c0f5 100644
--- a/Mage.Sets/src/mage/cards/f/FloodPlain.java
+++ b/Mage.Sets/src/mage/cards/f/FloodPlain.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class FloodPlain extends CardImpl {
+public final class FloodPlain extends CardImpl {
public FloodPlain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/Floodbringer.java b/Mage.Sets/src/mage/cards/f/Floodbringer.java
index 378e4268138..0397b8961eb 100644
--- a/Mage.Sets/src/mage/cards/f/Floodbringer.java
+++ b/Mage.Sets/src/mage/cards/f/Floodbringer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki
*/
-public class Floodbringer extends CardImpl {
+public final class Floodbringer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land you control (return to hand)");
diff --git a/Mage.Sets/src/mage/cards/f/Floodchaser.java b/Mage.Sets/src/mage/cards/f/Floodchaser.java
index 476d1213099..2e4cec8f782 100644
--- a/Mage.Sets/src/mage/cards/f/Floodchaser.java
+++ b/Mage.Sets/src/mage/cards/f/Floodchaser.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class Floodchaser extends CardImpl {
+public final class Floodchaser extends CardImpl {
public Floodchaser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FloodedGrove.java b/Mage.Sets/src/mage/cards/f/FloodedGrove.java
index 708ef73618f..cf20127aaa1 100644
--- a/Mage.Sets/src/mage/cards/f/FloodedGrove.java
+++ b/Mage.Sets/src/mage/cards/f/FloodedGrove.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class FloodedGrove extends CardImpl {
+public final class FloodedGrove extends CardImpl {
public FloodedGrove (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/f/FloodedShoreline.java b/Mage.Sets/src/mage/cards/f/FloodedShoreline.java
index 9f9737c3fe9..646c3c29a6d 100644
--- a/Mage.Sets/src/mage/cards/f/FloodedShoreline.java
+++ b/Mage.Sets/src/mage/cards/f/FloodedShoreline.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FloodedShoreline extends CardImpl {
+public final class FloodedShoreline extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Islands");
diff --git a/Mage.Sets/src/mage/cards/f/FloodedStrand.java b/Mage.Sets/src/mage/cards/f/FloodedStrand.java
index 39aba26c72a..05c0a2a68fb 100644
--- a/Mage.Sets/src/mage/cards/f/FloodedStrand.java
+++ b/Mage.Sets/src/mage/cards/f/FloodedStrand.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class FloodedStrand extends CardImpl {
+public final class FloodedStrand extends CardImpl {
public FloodedStrand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/FloodedWoodlands.java b/Mage.Sets/src/mage/cards/f/FloodedWoodlands.java
index 7487b3fa220..ed00f953805 100644
--- a/Mage.Sets/src/mage/cards/f/FloodedWoodlands.java
+++ b/Mage.Sets/src/mage/cards/f/FloodedWoodlands.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class FloodedWoodlands extends CardImpl {
+public final class FloodedWoodlands extends CardImpl {
public FloodedWoodlands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FloodtideSerpent.java b/Mage.Sets/src/mage/cards/f/FloodtideSerpent.java
index 3bb6d4354e7..b4a214241a1 100644
--- a/Mage.Sets/src/mage/cards/f/FloodtideSerpent.java
+++ b/Mage.Sets/src/mage/cards/f/FloodtideSerpent.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class FloodtideSerpent extends CardImpl {
+public final class FloodtideSerpent extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an enchantment you control");
diff --git a/Mage.Sets/src/mage/cards/f/FloodwaterDam.java b/Mage.Sets/src/mage/cards/f/FloodwaterDam.java
index fad71572e03..d89abd05b66 100644
--- a/Mage.Sets/src/mage/cards/f/FloodwaterDam.java
+++ b/Mage.Sets/src/mage/cards/f/FloodwaterDam.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class FloodwaterDam extends CardImpl {
+public final class FloodwaterDam extends CardImpl {
public FloodwaterDam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/f/Floodwaters.java b/Mage.Sets/src/mage/cards/f/Floodwaters.java
index 6a04b19f3b9..4228af18ba7 100644
--- a/Mage.Sets/src/mage/cards/f/Floodwaters.java
+++ b/Mage.Sets/src/mage/cards/f/Floodwaters.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Floodwaters extends CardImpl {
+public final class Floodwaters extends CardImpl {
public Floodwaters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FloralSpuzzem.java b/Mage.Sets/src/mage/cards/f/FloralSpuzzem.java
index 6b0be265b7d..081d348dfbe 100644
--- a/Mage.Sets/src/mage/cards/f/FloralSpuzzem.java
+++ b/Mage.Sets/src/mage/cards/f/FloralSpuzzem.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class FloralSpuzzem extends CardImpl {
+public final class FloralSpuzzem extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact defending player controls");
diff --git a/Mage.Sets/src/mage/cards/f/FlourishingDefenses.java b/Mage.Sets/src/mage/cards/f/FlourishingDefenses.java
index 7f13fbdc42a..358c80ce25b 100644
--- a/Mage.Sets/src/mage/cards/f/FlourishingDefenses.java
+++ b/Mage.Sets/src/mage/cards/f/FlourishingDefenses.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.ElfToken;
*
* @author jeffwadsworth
*/
-public class FlourishingDefenses extends CardImpl {
+public final class FlourishingDefenses extends CardImpl {
public FlourishingDefenses(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowOfIdeas.java b/Mage.Sets/src/mage/cards/f/FlowOfIdeas.java
index 51bac6b6d23..dd193224641 100644
--- a/Mage.Sets/src/mage/cards/f/FlowOfIdeas.java
+++ b/Mage.Sets/src/mage/cards/f/FlowOfIdeas.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class FlowOfIdeas extends CardImpl {
+public final class FlowOfIdeas extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Island you control");
diff --git a/Mage.Sets/src/mage/cards/f/FlowOfMaggots.java b/Mage.Sets/src/mage/cards/f/FlowOfMaggots.java
index c212f153300..97a2b169913 100644
--- a/Mage.Sets/src/mage/cards/f/FlowOfMaggots.java
+++ b/Mage.Sets/src/mage/cards/f/FlowOfMaggots.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class FlowOfMaggots extends CardImpl {
+public final class FlowOfMaggots extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FloweringField.java b/Mage.Sets/src/mage/cards/f/FloweringField.java
index e909164caed..3bd63b3c69d 100644
--- a/Mage.Sets/src/mage/cards/f/FloweringField.java
+++ b/Mage.Sets/src/mage/cards/f/FloweringField.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class FloweringField extends CardImpl {
+public final class FloweringField extends CardImpl {
public FloweringField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FloweringLumberknot.java b/Mage.Sets/src/mage/cards/f/FloweringLumberknot.java
index 4d414370484..b5032d8811b 100644
--- a/Mage.Sets/src/mage/cards/f/FloweringLumberknot.java
+++ b/Mage.Sets/src/mage/cards/f/FloweringLumberknot.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
/**
* @author noxx
*/
-public class FloweringLumberknot extends CardImpl {
+public final class FloweringLumberknot extends CardImpl {
public FloweringLumberknot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneArmor.java b/Mage.Sets/src/mage/cards/f/FlowstoneArmor.java
index b73d1da0e2d..fe9dcf509ad 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneArmor.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneArmor.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FlowstoneArmor extends CardImpl {
+public final class FlowstoneArmor extends CardImpl {
public FlowstoneArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneBlade.java b/Mage.Sets/src/mage/cards/f/FlowstoneBlade.java
index 0ca854baf48..1146a05ad59 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneBlade.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneBlade.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class FlowstoneBlade extends CardImpl {
+public final class FlowstoneBlade extends CardImpl {
public FlowstoneBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneChanneler.java b/Mage.Sets/src/mage/cards/f/FlowstoneChanneler.java
index b70542b911b..c6222fc18fc 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneChanneler.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneChanneler.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class FlowstoneChanneler extends CardImpl {
+public final class FlowstoneChanneler extends CardImpl {
public FlowstoneChanneler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneCharger.java b/Mage.Sets/src/mage/cards/f/FlowstoneCharger.java
index f90c839911d..2fdade95e36 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneCharger.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneCharger.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class FlowstoneCharger extends CardImpl {
+public final class FlowstoneCharger extends CardImpl {
public FlowstoneCharger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneCrusher.java b/Mage.Sets/src/mage/cards/f/FlowstoneCrusher.java
index 533c6f568b1..6dc50664af8 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneCrusher.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneCrusher.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FlowstoneCrusher extends CardImpl {
+public final class FlowstoneCrusher extends CardImpl {
public FlowstoneCrusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneEmbrace.java b/Mage.Sets/src/mage/cards/f/FlowstoneEmbrace.java
index ba4a5ef7be6..4679eb55619 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneEmbrace.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneEmbrace.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FlowstoneEmbrace extends CardImpl {
+public final class FlowstoneEmbrace extends CardImpl {
public FlowstoneEmbrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneFlood.java b/Mage.Sets/src/mage/cards/f/FlowstoneFlood.java
index e240a0ec0ac..fdee97c90b1 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneFlood.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneFlood.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class FlowstoneFlood extends CardImpl {
+public final class FlowstoneFlood extends CardImpl {
public FlowstoneFlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneGiant.java b/Mage.Sets/src/mage/cards/f/FlowstoneGiant.java
index 5fd17888b9f..7d455344e68 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneGiant.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneGiant.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class FlowstoneGiant extends CardImpl {
+public final class FlowstoneGiant extends CardImpl {
public FlowstoneGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneHellion.java b/Mage.Sets/src/mage/cards/f/FlowstoneHellion.java
index 077822abd90..03b2353fc79 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneHellion.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneHellion.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class FlowstoneHellion extends CardImpl {
+public final class FlowstoneHellion extends CardImpl {
public FlowstoneHellion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneMauler.java b/Mage.Sets/src/mage/cards/f/FlowstoneMauler.java
index 56f1d578d82..300b5b7eff2 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneMauler.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneMauler.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class FlowstoneMauler extends CardImpl {
+public final class FlowstoneMauler extends CardImpl {
public FlowstoneMauler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneOverseer.java b/Mage.Sets/src/mage/cards/f/FlowstoneOverseer.java
index 5825fa45613..68426341297 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneOverseer.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneOverseer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class FlowstoneOverseer extends CardImpl {
+public final class FlowstoneOverseer extends CardImpl {
public FlowstoneOverseer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneSalamander.java b/Mage.Sets/src/mage/cards/f/FlowstoneSalamander.java
index a8d771c648c..c29265f5e23 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneSalamander.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneSalamander.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FlowstoneSalamander extends CardImpl {
+public final class FlowstoneSalamander extends CardImpl {
public FlowstoneSalamander(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneSculpture.java b/Mage.Sets/src/mage/cards/f/FlowstoneSculpture.java
index 9bf7c471237..fba74c93cb6 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneSculpture.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneSculpture.java
@@ -58,7 +58,7 @@ import mage.players.Player;
*
* @author LoneFox
*/
-public class FlowstoneSculpture extends CardImpl {
+public final class FlowstoneSculpture extends CardImpl {
public FlowstoneSculpture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneShambler.java b/Mage.Sets/src/mage/cards/f/FlowstoneShambler.java
index 12fb6c72955..acdfbdae3de 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneShambler.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneShambler.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FlowstoneShambler extends CardImpl {
+public final class FlowstoneShambler extends CardImpl {
public FlowstoneShambler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneSlide.java b/Mage.Sets/src/mage/cards/f/FlowstoneSlide.java
index 9f4655b3528..c8f0899b48d 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneSlide.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneSlide.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author chrisasanford
*/
-public class FlowstoneSlide extends CardImpl {
+public final class FlowstoneSlide extends CardImpl {
public FlowstoneSlide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneStrike.java b/Mage.Sets/src/mage/cards/f/FlowstoneStrike.java
index 3e0b8f605c7..fbca48855d9 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneStrike.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneStrike.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class FlowstoneStrike extends CardImpl {
+public final class FlowstoneStrike extends CardImpl {
public FlowstoneStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneSurge.java b/Mage.Sets/src/mage/cards/f/FlowstoneSurge.java
index 8fcf9781eb7..6b76e97b479 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneSurge.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneSurge.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author TheElk801
*/
-public class FlowstoneSurge extends CardImpl {
+public final class FlowstoneSurge extends CardImpl {
public FlowstoneSurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneThopter.java b/Mage.Sets/src/mage/cards/f/FlowstoneThopter.java
index c84180b75ed..6f63707fdfd 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneThopter.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneThopter.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Galatolol
*/
-public class FlowstoneThopter extends CardImpl {
+public final class FlowstoneThopter extends CardImpl {
public FlowstoneThopter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneWall.java b/Mage.Sets/src/mage/cards/f/FlowstoneWall.java
index 176d44cd630..b0d553a5d24 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneWall.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneWall.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FlowstoneWall extends CardImpl {
+public final class FlowstoneWall extends CardImpl {
public FlowstoneWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneWyvern.java b/Mage.Sets/src/mage/cards/f/FlowstoneWyvern.java
index 947afa5b768..c0509db1568 100644
--- a/Mage.Sets/src/mage/cards/f/FlowstoneWyvern.java
+++ b/Mage.Sets/src/mage/cards/f/FlowstoneWyvern.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class FlowstoneWyvern extends CardImpl {
+public final class FlowstoneWyvern extends CardImpl {
public FlowstoneWyvern(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Fluctuator.java b/Mage.Sets/src/mage/cards/f/Fluctuator.java
index 47b34027e91..43a642a16b5 100644
--- a/Mage.Sets/src/mage/cards/f/Fluctuator.java
+++ b/Mage.Sets/src/mage/cards/f/Fluctuator.java
@@ -48,7 +48,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class Fluctuator extends CardImpl {
+public final class Fluctuator extends CardImpl {
public Fluctuator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/f/FlurryOfHorns.java b/Mage.Sets/src/mage/cards/f/FlurryOfHorns.java
index fe2b21a8f79..fe6dd8bed34 100644
--- a/Mage.Sets/src/mage/cards/f/FlurryOfHorns.java
+++ b/Mage.Sets/src/mage/cards/f/FlurryOfHorns.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.FlurryOfHornsMinotaurToken;
*
* @author LevelX2
*/
-public class FlurryOfHorns extends CardImpl {
+public final class FlurryOfHorns extends CardImpl {
public FlurryOfHorns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlurryOfWings.java b/Mage.Sets/src/mage/cards/f/FlurryOfWings.java
index 85f40aed42d..51a229ae75a 100644
--- a/Mage.Sets/src/mage/cards/f/FlurryOfWings.java
+++ b/Mage.Sets/src/mage/cards/f/FlurryOfWings.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.BirdSoldierToken;
*
* @author North
*/
-public class FlurryOfWings extends CardImpl {
+public final class FlurryOfWings extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("the number of attacking creatures");
diff --git a/Mage.Sets/src/mage/cards/f/Flusterstorm.java b/Mage.Sets/src/mage/cards/f/Flusterstorm.java
index a6aa30acb77..9002b76d721 100644
--- a/Mage.Sets/src/mage/cards/f/Flusterstorm.java
+++ b/Mage.Sets/src/mage/cards/f/Flusterstorm.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author Plopman
*/
-public class Flusterstorm extends CardImpl {
+public final class Flusterstorm extends CardImpl {
public Flusterstorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Flux.java b/Mage.Sets/src/mage/cards/f/Flux.java
index e166eb370e6..bc7aa51de13 100644
--- a/Mage.Sets/src/mage/cards/f/Flux.java
+++ b/Mage.Sets/src/mage/cards/f/Flux.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class Flux extends CardImpl {
+public final class Flux extends CardImpl {
public Flux(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Fluxcharger.java b/Mage.Sets/src/mage/cards/f/Fluxcharger.java
index 925a6271894..34674859ad1 100644
--- a/Mage.Sets/src/mage/cards/f/Fluxcharger.java
+++ b/Mage.Sets/src/mage/cards/f/Fluxcharger.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class Fluxcharger extends CardImpl {
+public final class Fluxcharger extends CardImpl {
public Fluxcharger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FlyingCarpet.java b/Mage.Sets/src/mage/cards/f/FlyingCarpet.java
index 88601e53d38..73274d0d41b 100644
--- a/Mage.Sets/src/mage/cards/f/FlyingCarpet.java
+++ b/Mage.Sets/src/mage/cards/f/FlyingCarpet.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class FlyingCarpet extends CardImpl {
+public final class FlyingCarpet extends CardImpl {
public FlyingCarpet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/f/FlyingCraneTechnique.java b/Mage.Sets/src/mage/cards/f/FlyingCraneTechnique.java
index bd53d54d7c0..08ca4a5918a 100644
--- a/Mage.Sets/src/mage/cards/f/FlyingCraneTechnique.java
+++ b/Mage.Sets/src/mage/cards/f/FlyingCraneTechnique.java
@@ -43,7 +43,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX2
*/
-public class FlyingCraneTechnique extends CardImpl {
+public final class FlyingCraneTechnique extends CardImpl {
public FlyingCraneTechnique(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FlyingMen.java b/Mage.Sets/src/mage/cards/f/FlyingMen.java
index 4288d6c23f0..46ded9ae47b 100644
--- a/Mage.Sets/src/mage/cards/f/FlyingMen.java
+++ b/Mage.Sets/src/mage/cards/f/FlyingMen.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FlyingMen extends CardImpl {
+public final class FlyingMen extends CardImpl {
public FlyingMen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FodderCannon.java b/Mage.Sets/src/mage/cards/f/FodderCannon.java
index 82ddf37829b..419f7d259bd 100644
--- a/Mage.Sets/src/mage/cards/f/FodderCannon.java
+++ b/Mage.Sets/src/mage/cards/f/FodderCannon.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class FodderCannon extends CardImpl {
+public final class FodderCannon extends CardImpl {
public FodderCannon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/f/FodderLaunch.java b/Mage.Sets/src/mage/cards/f/FodderLaunch.java
index 7968eff44a5..68a15e059fe 100644
--- a/Mage.Sets/src/mage/cards/f/FodderLaunch.java
+++ b/Mage.Sets/src/mage/cards/f/FodderLaunch.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author BursegSardaukar
*/
-public class FodderLaunch extends CardImpl {
+public final class FodderLaunch extends CardImpl {
public FodderLaunch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FoeRazerRegent.java b/Mage.Sets/src/mage/cards/f/FoeRazerRegent.java
index 888a7e4ca10..4fd92607923 100644
--- a/Mage.Sets/src/mage/cards/f/FoeRazerRegent.java
+++ b/Mage.Sets/src/mage/cards/f/FoeRazerRegent.java
@@ -58,7 +58,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class FoeRazerRegent extends CardImpl {
+public final class FoeRazerRegent extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/f/Fog.java b/Mage.Sets/src/mage/cards/f/Fog.java
index 3ca260f1899..beea0727729 100644
--- a/Mage.Sets/src/mage/cards/f/Fog.java
+++ b/Mage.Sets/src/mage/cards/f/Fog.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Fog extends CardImpl {
+public final class Fog extends CardImpl {
public Fog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FogBank.java b/Mage.Sets/src/mage/cards/f/FogBank.java
index a031f046ed5..84007beff79 100644
--- a/Mage.Sets/src/mage/cards/f/FogBank.java
+++ b/Mage.Sets/src/mage/cards/f/FogBank.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class FogBank extends CardImpl {
+public final class FogBank extends CardImpl {
public FogBank(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FogElemental.java b/Mage.Sets/src/mage/cards/f/FogElemental.java
index 4bf1b0d01c8..27c0f9e85fd 100644
--- a/Mage.Sets/src/mage/cards/f/FogElemental.java
+++ b/Mage.Sets/src/mage/cards/f/FogElemental.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Quercitron
*/
-public class FogElemental extends CardImpl {
+public final class FogElemental extends CardImpl {
public FogElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FogOfGnats.java b/Mage.Sets/src/mage/cards/f/FogOfGnats.java
index 9507d2f086b..f15d0770a3c 100644
--- a/Mage.Sets/src/mage/cards/f/FogOfGnats.java
+++ b/Mage.Sets/src/mage/cards/f/FogOfGnats.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class FogOfGnats extends CardImpl {
+public final class FogOfGnats extends CardImpl {
public FogOfGnats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FogPatch.java b/Mage.Sets/src/mage/cards/f/FogPatch.java
index 9baada1501f..6fa1730ebba 100644
--- a/Mage.Sets/src/mage/cards/f/FogPatch.java
+++ b/Mage.Sets/src/mage/cards/f/FogPatch.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class FogPatch extends CardImpl {
+public final class FogPatch extends CardImpl {
public FogPatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/Fogwalker.java b/Mage.Sets/src/mage/cards/f/Fogwalker.java
index eaf42be950e..57700035e7c 100644
--- a/Mage.Sets/src/mage/cards/f/Fogwalker.java
+++ b/Mage.Sets/src/mage/cards/f/Fogwalker.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Fogwalker extends CardImpl {
+public final class Fogwalker extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/f/Foil.java b/Mage.Sets/src/mage/cards/f/Foil.java
index 367fcf35aa0..e3556bdcb17 100644
--- a/Mage.Sets/src/mage/cards/f/Foil.java
+++ b/Mage.Sets/src/mage/cards/f/Foil.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class Foil extends CardImpl {
+public final class Foil extends CardImpl {
private static final FilterCard filter = new FilterCard("an Island card");
static {
diff --git a/Mage.Sets/src/mage/cards/f/FoldIntoAether.java b/Mage.Sets/src/mage/cards/f/FoldIntoAether.java
index b5035bb8e56..b9327f10617 100644
--- a/Mage.Sets/src/mage/cards/f/FoldIntoAether.java
+++ b/Mage.Sets/src/mage/cards/f/FoldIntoAether.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author North
*/
-public class FoldIntoAether extends CardImpl {
+public final class FoldIntoAether extends CardImpl {
public FoldIntoAether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FolkMedicine.java b/Mage.Sets/src/mage/cards/f/FolkMedicine.java
index 7044bf403ff..95a541fa8cd 100644
--- a/Mage.Sets/src/mage/cards/f/FolkMedicine.java
+++ b/Mage.Sets/src/mage/cards/f/FolkMedicine.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class FolkMedicine extends CardImpl {
+public final class FolkMedicine extends CardImpl {
public FolkMedicine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FolkOfAnHavva.java b/Mage.Sets/src/mage/cards/f/FolkOfAnHavva.java
index 5fb7036f577..7d544367172 100644
--- a/Mage.Sets/src/mage/cards/f/FolkOfAnHavva.java
+++ b/Mage.Sets/src/mage/cards/f/FolkOfAnHavva.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class FolkOfAnHavva extends CardImpl {
+public final class FolkOfAnHavva extends CardImpl {
public FolkOfAnHavva(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FolkOfThePines.java b/Mage.Sets/src/mage/cards/f/FolkOfThePines.java
index ca3a2a92691..500dbfe77ab 100644
--- a/Mage.Sets/src/mage/cards/f/FolkOfThePines.java
+++ b/Mage.Sets/src/mage/cards/f/FolkOfThePines.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author hanasu
*/
-public class FolkOfThePines extends CardImpl {
+public final class FolkOfThePines extends CardImpl {
public FolkOfThePines(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FollowedFootsteps.java b/Mage.Sets/src/mage/cards/f/FollowedFootsteps.java
index 576477571e2..aeec9dd7e9f 100644
--- a/Mage.Sets/src/mage/cards/f/FollowedFootsteps.java
+++ b/Mage.Sets/src/mage/cards/f/FollowedFootsteps.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
* @author LoneFox
*
*/
-public class FollowedFootsteps extends CardImpl {
+public final class FollowedFootsteps extends CardImpl {
public FollowedFootsteps(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FomoriNomad.java b/Mage.Sets/src/mage/cards/f/FomoriNomad.java
index e2fd9161064..24ecd1866f8 100644
--- a/Mage.Sets/src/mage/cards/f/FomoriNomad.java
+++ b/Mage.Sets/src/mage/cards/f/FomoriNomad.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FomoriNomad extends CardImpl {
+public final class FomoriNomad extends CardImpl {
public FomoriNomad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FontOfFertility.java b/Mage.Sets/src/mage/cards/f/FontOfFertility.java
index 2087d7ef02b..493d5f20c7c 100644
--- a/Mage.Sets/src/mage/cards/f/FontOfFertility.java
+++ b/Mage.Sets/src/mage/cards/f/FontOfFertility.java
@@ -46,14 +46,14 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class FontOfFertility extends CardImpl {
+public final class FontOfFertility extends CardImpl {
public FontOfFertility(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
// {1}{G}, Sacrifice Font of Fertility: Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(target, true, true, Outcome.PutLandInPlay), new ManaCostsImpl("{1}{G}"));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/f/FontOfFortunes.java b/Mage.Sets/src/mage/cards/f/FontOfFortunes.java
index a0771e76082..2a21184cbd8 100644
--- a/Mage.Sets/src/mage/cards/f/FontOfFortunes.java
+++ b/Mage.Sets/src/mage/cards/f/FontOfFortunes.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class FontOfFortunes extends CardImpl {
+public final class FontOfFortunes extends CardImpl {
public FontOfFortunes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FontOfIre.java b/Mage.Sets/src/mage/cards/f/FontOfIre.java
index 7853977f54a..7917e2ceebe 100644
--- a/Mage.Sets/src/mage/cards/f/FontOfIre.java
+++ b/Mage.Sets/src/mage/cards/f/FontOfIre.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class FontOfIre extends CardImpl {
+public final class FontOfIre extends CardImpl {
public FontOfIre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FontOfMythos.java b/Mage.Sets/src/mage/cards/f/FontOfMythos.java
index 12939e56819..7fbcb715a3f 100644
--- a/Mage.Sets/src/mage/cards/f/FontOfMythos.java
+++ b/Mage.Sets/src/mage/cards/f/FontOfMythos.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class FontOfMythos extends CardImpl {
+public final class FontOfMythos extends CardImpl {
public FontOfMythos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/f/FontOfReturn.java b/Mage.Sets/src/mage/cards/f/FontOfReturn.java
index 381ec917e36..96c81aed4b6 100644
--- a/Mage.Sets/src/mage/cards/f/FontOfReturn.java
+++ b/Mage.Sets/src/mage/cards/f/FontOfReturn.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class FontOfReturn extends CardImpl {
+public final class FontOfReturn extends CardImpl {
public FontOfReturn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FontOfVigor.java b/Mage.Sets/src/mage/cards/f/FontOfVigor.java
index 0fd87ab4342..e2338bce3d0 100644
--- a/Mage.Sets/src/mage/cards/f/FontOfVigor.java
+++ b/Mage.Sets/src/mage/cards/f/FontOfVigor.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class FontOfVigor extends CardImpl {
+public final class FontOfVigor extends CardImpl {
public FontOfVigor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FoodChain.java b/Mage.Sets/src/mage/cards/f/FoodChain.java
index d08e07eb497..fe853d6f821 100644
--- a/Mage.Sets/src/mage/cards/f/FoodChain.java
+++ b/Mage.Sets/src/mage/cards/f/FoodChain.java
@@ -44,7 +44,7 @@ import mage.choices.ChoiceColor;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
import mage.target.common.TargetControlledCreaturePermanent;
@@ -53,13 +53,14 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class FoodChain extends CardImpl {
+public final class FoodChain extends CardImpl {
public FoodChain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
// Exile a creature you control: Add X mana of any one color, where X is the exiled creature's converted mana cost plus one. Spend this mana only to cast creature spells.
- Ability ability = new SimpleManaAbility(Zone.BATTLEFIELD, new FoodChainManaEffect(), new ExileTargetCost(new TargetControlledCreaturePermanent(1, 1, new FilterControlledCreaturePermanent("a creature you control"), true)));
+ Ability ability = new SimpleManaAbility(Zone.BATTLEFIELD, new FoodChainManaEffect(),
+ new ExileTargetCost(new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_A_CREATURE, true)));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/f/FoolsDemise.java b/Mage.Sets/src/mage/cards/f/FoolsDemise.java
index 6d8f41b36ba..332cbba0b02 100644
--- a/Mage.Sets/src/mage/cards/f/FoolsDemise.java
+++ b/Mage.Sets/src/mage/cards/f/FoolsDemise.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FoolsDemise extends CardImpl {
+public final class FoolsDemise extends CardImpl {
public FoolsDemise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FoolsTome.java b/Mage.Sets/src/mage/cards/f/FoolsTome.java
index 01676cc376a..f813212e047 100644
--- a/Mage.Sets/src/mage/cards/f/FoolsTome.java
+++ b/Mage.Sets/src/mage/cards/f/FoolsTome.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FoolsTome extends CardImpl {
+public final class FoolsTome extends CardImpl {
public FoolsTome(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/f/FootSoldiers.java b/Mage.Sets/src/mage/cards/f/FootSoldiers.java
index 161073b08f9..96e13133b8c 100644
--- a/Mage.Sets/src/mage/cards/f/FootSoldiers.java
+++ b/Mage.Sets/src/mage/cards/f/FootSoldiers.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FootSoldiers extends CardImpl {
+public final class FootSoldiers extends CardImpl {
public FootSoldiers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FootbottomFeast.java b/Mage.Sets/src/mage/cards/f/FootbottomFeast.java
index 866583fccfa..901932bc8ee 100644
--- a/Mage.Sets/src/mage/cards/f/FootbottomFeast.java
+++ b/Mage.Sets/src/mage/cards/f/FootbottomFeast.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class FootbottomFeast extends CardImpl {
+public final class FootbottomFeast extends CardImpl {
public FootbottomFeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FoothillGuide.java b/Mage.Sets/src/mage/cards/f/FoothillGuide.java
index 970932dbc3a..a3739cc1a49 100644
--- a/Mage.Sets/src/mage/cards/f/FoothillGuide.java
+++ b/Mage.Sets/src/mage/cards/f/FoothillGuide.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class FoothillGuide extends CardImpl {
+public final class FoothillGuide extends CardImpl {
private static final FilterCard filter = new FilterCard("Goblins");
diff --git a/Mage.Sets/src/mage/cards/f/FootstepsOfTheGoryo.java b/Mage.Sets/src/mage/cards/f/FootstepsOfTheGoryo.java
index 124fd7b28f8..87beff045ea 100644
--- a/Mage.Sets/src/mage/cards/f/FootstepsOfTheGoryo.java
+++ b/Mage.Sets/src/mage/cards/f/FootstepsOfTheGoryo.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author dustinconrad
*/
-public class FootstepsOfTheGoryo extends CardImpl {
+public final class FootstepsOfTheGoryo extends CardImpl {
public FootstepsOfTheGoryo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/Foratog.java b/Mage.Sets/src/mage/cards/f/Foratog.java
index f44aac7c49a..7ed707391f9 100644
--- a/Mage.Sets/src/mage/cards/f/Foratog.java
+++ b/Mage.Sets/src/mage/cards/f/Foratog.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class Foratog extends CardImpl {
+public final class Foratog extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a Forest");
static{
diff --git a/Mage.Sets/src/mage/cards/f/Forbid.java b/Mage.Sets/src/mage/cards/f/Forbid.java
index b1490de4978..e582dca16cd 100644
--- a/Mage.Sets/src/mage/cards/f/Forbid.java
+++ b/Mage.Sets/src/mage/cards/f/Forbid.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInHand;
*
* @author dustinconrad
*/
-public class Forbid extends CardImpl {
+public final class Forbid extends CardImpl {
public Forbid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForbiddenAlchemy.java b/Mage.Sets/src/mage/cards/f/ForbiddenAlchemy.java
index 13114556af9..916743b2ca7 100644
--- a/Mage.Sets/src/mage/cards/f/ForbiddenAlchemy.java
+++ b/Mage.Sets/src/mage/cards/f/ForbiddenAlchemy.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author North
*/
-public class ForbiddenAlchemy extends CardImpl {
+public final class ForbiddenAlchemy extends CardImpl {
public ForbiddenAlchemy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForbiddenCrypt.java b/Mage.Sets/src/mage/cards/f/ForbiddenCrypt.java
index 1a566bea5d2..3b45d85dd42 100644
--- a/Mage.Sets/src/mage/cards/f/ForbiddenCrypt.java
+++ b/Mage.Sets/src/mage/cards/f/ForbiddenCrypt.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Quercitron
*/
-public class ForbiddenCrypt extends CardImpl {
+public final class ForbiddenCrypt extends CardImpl {
public ForbiddenCrypt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/ForbiddenLore.java b/Mage.Sets/src/mage/cards/f/ForbiddenLore.java
index 154e6d0ae6b..e1370dd3fcb 100644
--- a/Mage.Sets/src/mage/cards/f/ForbiddenLore.java
+++ b/Mage.Sets/src/mage/cards/f/ForbiddenLore.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class ForbiddenLore extends CardImpl {
+public final class ForbiddenLore extends CardImpl {
public ForbiddenLore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/ForbiddenOrchard.java b/Mage.Sets/src/mage/cards/f/ForbiddenOrchard.java
index 528c8b0b406..ff8aeaed186 100644
--- a/Mage.Sets/src/mage/cards/f/ForbiddenOrchard.java
+++ b/Mage.Sets/src/mage/cards/f/ForbiddenOrchard.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class ForbiddenOrchard extends CardImpl {
+public final class ForbiddenOrchard extends CardImpl {
public ForbiddenOrchard (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/f/ForbiddingWatchtower.java b/Mage.Sets/src/mage/cards/f/ForbiddingWatchtower.java
index 9011354d16f..9c44890cffd 100644
--- a/Mage.Sets/src/mage/cards/f/ForbiddingWatchtower.java
+++ b/Mage.Sets/src/mage/cards/f/ForbiddingWatchtower.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.Token;
*
* @author Loki
*/
-public class ForbiddingWatchtower extends CardImpl {
+public final class ForbiddingWatchtower extends CardImpl {
public ForbiddingWatchtower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/ForceAway.java b/Mage.Sets/src/mage/cards/f/ForceAway.java
index bcf0ff5472a..d4f804c0211 100644
--- a/Mage.Sets/src/mage/cards/f/ForceAway.java
+++ b/Mage.Sets/src/mage/cards/f/ForceAway.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ForceAway extends CardImpl {
+public final class ForceAway extends CardImpl {
public ForceAway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceBubble.java b/Mage.Sets/src/mage/cards/f/ForceBubble.java
index 1432f5ac6a9..175868207ce 100644
--- a/Mage.Sets/src/mage/cards/f/ForceBubble.java
+++ b/Mage.Sets/src/mage/cards/f/ForceBubble.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000 & L_J
*/
-public class ForceBubble extends CardImpl {
+public final class ForceBubble extends CardImpl {
public ForceBubble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceChoke.java b/Mage.Sets/src/mage/cards/f/ForceChoke.java
index 084069c8692..8e0e9ac8deb 100644
--- a/Mage.Sets/src/mage/cards/f/ForceChoke.java
+++ b/Mage.Sets/src/mage/cards/f/ForceChoke.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
*
* @author Styxo
*/
-public class ForceChoke extends CardImpl {
+public final class ForceChoke extends CardImpl {
public ForceChoke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceDenial.java b/Mage.Sets/src/mage/cards/f/ForceDenial.java
index 4a1825dbcfe..b0d94e104f7 100644
--- a/Mage.Sets/src/mage/cards/f/ForceDenial.java
+++ b/Mage.Sets/src/mage/cards/f/ForceDenial.java
@@ -45,7 +45,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class ForceDenial extends CardImpl {
+public final class ForceDenial extends CardImpl {
public ForceDenial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceDrain.java b/Mage.Sets/src/mage/cards/f/ForceDrain.java
index c4cf51ada84..0d793380dda 100644
--- a/Mage.Sets/src/mage/cards/f/ForceDrain.java
+++ b/Mage.Sets/src/mage/cards/f/ForceDrain.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Styxo
*/
-public class ForceDrain extends CardImpl {
+public final class ForceDrain extends CardImpl {
public ForceDrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceHealing.java b/Mage.Sets/src/mage/cards/f/ForceHealing.java
index 34aac29fbd2..02813d26731 100644
--- a/Mage.Sets/src/mage/cards/f/ForceHealing.java
+++ b/Mage.Sets/src/mage/cards/f/ForceHealing.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Styxo
*/
-public class ForceHealing extends CardImpl {
+public final class ForceHealing extends CardImpl {
public ForceHealing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceLightning.java b/Mage.Sets/src/mage/cards/f/ForceLightning.java
index 8efea5082c3..b45e6a4e507 100644
--- a/Mage.Sets/src/mage/cards/f/ForceLightning.java
+++ b/Mage.Sets/src/mage/cards/f/ForceLightning.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Styxo
*/
-public class ForceLightning extends CardImpl {
+public final class ForceLightning extends CardImpl {
public ForceLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceMastery.java b/Mage.Sets/src/mage/cards/f/ForceMastery.java
index feaeb3a4a39..ad604316fd3 100644
--- a/Mage.Sets/src/mage/cards/f/ForceMastery.java
+++ b/Mage.Sets/src/mage/cards/f/ForceMastery.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class ForceMastery extends CardImpl {
+public final class ForceMastery extends CardImpl {
public ForceMastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{U}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceOfNature.java b/Mage.Sets/src/mage/cards/f/ForceOfNature.java
index 2f976b49ed1..53321e00840 100644
--- a/Mage.Sets/src/mage/cards/f/ForceOfNature.java
+++ b/Mage.Sets/src/mage/cards/f/ForceOfNature.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class ForceOfNature extends CardImpl {
+public final class ForceOfNature extends CardImpl {
public ForceOfNature(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceOfSavagery.java b/Mage.Sets/src/mage/cards/f/ForceOfSavagery.java
index 4ec6faf641a..b1a9ea91043 100644
--- a/Mage.Sets/src/mage/cards/f/ForceOfSavagery.java
+++ b/Mage.Sets/src/mage/cards/f/ForceOfSavagery.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ForceOfSavagery extends CardImpl {
+public final class ForceOfSavagery extends CardImpl {
public ForceOfSavagery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceOfWill.java b/Mage.Sets/src/mage/cards/f/ForceOfWill.java
index 597973654ad..d13f18532a4 100644
--- a/Mage.Sets/src/mage/cards/f/ForceOfWill.java
+++ b/Mage.Sets/src/mage/cards/f/ForceOfWill.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Plopman
*/
-public class ForceOfWill extends CardImpl {
+public final class ForceOfWill extends CardImpl {
public ForceOfWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForcePull.java b/Mage.Sets/src/mage/cards/f/ForcePull.java
index c32c61a4612..cea51295d25 100644
--- a/Mage.Sets/src/mage/cards/f/ForcePull.java
+++ b/Mage.Sets/src/mage/cards/f/ForcePull.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class ForcePull extends CardImpl {
+public final class ForcePull extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with spaceflight");
diff --git a/Mage.Sets/src/mage/cards/f/ForcePush.java b/Mage.Sets/src/mage/cards/f/ForcePush.java
index cfa06f6d524..d833d8c3b33 100644
--- a/Mage.Sets/src/mage/cards/f/ForcePush.java
+++ b/Mage.Sets/src/mage/cards/f/ForcePush.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class ForcePush extends CardImpl {
+public final class ForcePush extends CardImpl {
public ForcePush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceReflex.java b/Mage.Sets/src/mage/cards/f/ForceReflex.java
index 9a71ffc2740..8ee1c05902c 100644
--- a/Mage.Sets/src/mage/cards/f/ForceReflex.java
+++ b/Mage.Sets/src/mage/cards/f/ForceReflex.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class ForceReflex extends CardImpl {
+public final class ForceReflex extends CardImpl {
public ForceReflex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceScream.java b/Mage.Sets/src/mage/cards/f/ForceScream.java
index 8ab64393bbb..00d41d6cf94 100644
--- a/Mage.Sets/src/mage/cards/f/ForceScream.java
+++ b/Mage.Sets/src/mage/cards/f/ForceScream.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author Styxo
*/
-public class ForceScream extends CardImpl {
+public final class ForceScream extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without spaceflight");
diff --git a/Mage.Sets/src/mage/cards/f/ForceSpark.java b/Mage.Sets/src/mage/cards/f/ForceSpark.java
index 0cdb67d8102..11902ad5ce2 100644
--- a/Mage.Sets/src/mage/cards/f/ForceSpark.java
+++ b/Mage.Sets/src/mage/cards/f/ForceSpark.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Styxo
*/
-public class ForceSpark extends CardImpl {
+public final class ForceSpark extends CardImpl {
public ForceSpark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceSpike.java b/Mage.Sets/src/mage/cards/f/ForceSpike.java
index fc9e303fd91..48fdbeac70c 100644
--- a/Mage.Sets/src/mage/cards/f/ForceSpike.java
+++ b/Mage.Sets/src/mage/cards/f/ForceSpike.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author anonymous
*/
-public class ForceSpike extends CardImpl {
+public final class ForceSpike extends CardImpl {
public ForceSpike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForceVoid.java b/Mage.Sets/src/mage/cards/f/ForceVoid.java
index 74fd3dee3bb..70f3017eeb4 100644
--- a/Mage.Sets/src/mage/cards/f/ForceVoid.java
+++ b/Mage.Sets/src/mage/cards/f/ForceVoid.java
@@ -43,7 +43,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class ForceVoid extends CardImpl {
+public final class ForceVoid extends CardImpl {
public ForceVoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForcedAdaptation.java b/Mage.Sets/src/mage/cards/f/ForcedAdaptation.java
index 9a6a5b844be..7d5adbf65eb 100644
--- a/Mage.Sets/src/mage/cards/f/ForcedAdaptation.java
+++ b/Mage.Sets/src/mage/cards/f/ForcedAdaptation.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ForcedAdaptation extends CardImpl {
+public final class ForcedAdaptation extends CardImpl {
public ForcedAdaptation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/f/ForcedFruition.java b/Mage.Sets/src/mage/cards/f/ForcedFruition.java
index 1ceacae7676..2b62bc5092f 100644
--- a/Mage.Sets/src/mage/cards/f/ForcedFruition.java
+++ b/Mage.Sets/src/mage/cards/f/ForcedFruition.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author dustinconrad
*/
-public class ForcedFruition extends CardImpl {
+public final class ForcedFruition extends CardImpl {
public ForcedFruition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForcedMarch.java b/Mage.Sets/src/mage/cards/f/ForcedMarch.java
index 1a6c44ec354..52c9fc782da 100644
--- a/Mage.Sets/src/mage/cards/f/ForcedMarch.java
+++ b/Mage.Sets/src/mage/cards/f/ForcedMarch.java
@@ -19,7 +19,7 @@ import mage.game.permanent.Permanent;
/**
* @author nick.myers
*/
-public class ForcedMarch extends CardImpl {
+public final class ForcedMarch extends CardImpl {
public ForcedMarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/ForcedRetreat.java b/Mage.Sets/src/mage/cards/f/ForcedRetreat.java
index 9492f03d953..e949eb663e8 100644
--- a/Mage.Sets/src/mage/cards/f/ForcedRetreat.java
+++ b/Mage.Sets/src/mage/cards/f/ForcedRetreat.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ForcedRetreat extends CardImpl {
+public final class ForcedRetreat extends CardImpl {
public ForcedRetreat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForcedWorship.java b/Mage.Sets/src/mage/cards/f/ForcedWorship.java
index 3d0e4751876..f1755ce0f1c 100644
--- a/Mage.Sets/src/mage/cards/f/ForcedWorship.java
+++ b/Mage.Sets/src/mage/cards/f/ForcedWorship.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ForcedWorship extends CardImpl {
+public final class ForcedWorship extends CardImpl {
public ForcedWorship (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/Forcefield.java b/Mage.Sets/src/mage/cards/f/Forcefield.java
index b35074e689c..fe0946d1938 100644
--- a/Mage.Sets/src/mage/cards/f/Forcefield.java
+++ b/Mage.Sets/src/mage/cards/f/Forcefield.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class Forcefield extends CardImpl {
+public final class Forcefield extends CardImpl {
public Forcefield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/f/ForcemageAdvocate.java b/Mage.Sets/src/mage/cards/f/ForcemageAdvocate.java
index 233ea948eeb..ae716230994 100644
--- a/Mage.Sets/src/mage/cards/f/ForcemageAdvocate.java
+++ b/Mage.Sets/src/mage/cards/f/ForcemageAdvocate.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author L_J
*/
-public class ForcemageAdvocate extends CardImpl {
+public final class ForcemageAdvocate extends CardImpl {
public ForcemageAdvocate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/ForebearsBlade.java b/Mage.Sets/src/mage/cards/f/ForebearsBlade.java
index 17cb7cf2ecf..ba5b8eb1035 100644
--- a/Mage.Sets/src/mage/cards/f/ForebearsBlade.java
+++ b/Mage.Sets/src/mage/cards/f/ForebearsBlade.java
@@ -30,7 +30,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Rystan
*/
-public class ForebearsBlade extends CardImpl {
+public final class ForebearsBlade extends CardImpl {
public ForebearsBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/f/ForebodingRuins.java b/Mage.Sets/src/mage/cards/f/ForebodingRuins.java
index 9f52629fc42..f47d41285ca 100644
--- a/Mage.Sets/src/mage/cards/f/ForebodingRuins.java
+++ b/Mage.Sets/src/mage/cards/f/ForebodingRuins.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class ForebodingRuins extends CardImpl {
+public final class ForebodingRuins extends CardImpl {
private static final FilterCard filter = new FilterCard("a Swamp or Mountain card from your hand");
diff --git a/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java b/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java
index 0d3c772b327..e2ec02837a5 100644
--- a/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java
+++ b/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ForerunnerOfSlaughter extends CardImpl {
+public final class ForerunnerOfSlaughter extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("colorless creature");
diff --git a/Mage.Sets/src/mage/cards/f/ForerunnerOfTheCoalition.java b/Mage.Sets/src/mage/cards/f/ForerunnerOfTheCoalition.java
index 95762b8f5a2..79c179ec287 100644
--- a/Mage.Sets/src/mage/cards/f/ForerunnerOfTheCoalition.java
+++ b/Mage.Sets/src/mage/cards/f/ForerunnerOfTheCoalition.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author JayDi85
*/
-public class ForerunnerOfTheCoalition extends CardImpl {
+public final class ForerunnerOfTheCoalition extends CardImpl {
private static final FilterPermanent filterAnotherPirate = new FilterPermanent(SubType.PIRATE, "another " + SubType.PIRATE.toString());
diff --git a/Mage.Sets/src/mage/cards/f/ForerunnerOfTheEmpire.java b/Mage.Sets/src/mage/cards/f/ForerunnerOfTheEmpire.java
index b17846dcfb6..74a9fd0f14f 100644
--- a/Mage.Sets/src/mage/cards/f/ForerunnerOfTheEmpire.java
+++ b/Mage.Sets/src/mage/cards/f/ForerunnerOfTheEmpire.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author JayDi85
*/
-public class ForerunnerOfTheEmpire extends CardImpl {
+public final class ForerunnerOfTheEmpire extends CardImpl {
private static final FilterCreaturePermanent filterAnyDinosaur = new FilterCreaturePermanent(SubType.DINOSAUR, SubType.DINOSAUR.toString());
diff --git a/Mage.Sets/src/mage/cards/f/ForerunnerOfTheHeralds.java b/Mage.Sets/src/mage/cards/f/ForerunnerOfTheHeralds.java
index 2f3531e377f..6efb829592a 100644
--- a/Mage.Sets/src/mage/cards/f/ForerunnerOfTheHeralds.java
+++ b/Mage.Sets/src/mage/cards/f/ForerunnerOfTheHeralds.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author JayDi85
*/
-public class ForerunnerOfTheHeralds extends CardImpl {
+public final class ForerunnerOfTheHeralds extends CardImpl {
private static final FilterPermanent filterAnotherMerfolk = new FilterPermanent(SubType.MERFOLK, "another " + SubType.MERFOLK.toString());
static {
diff --git a/Mage.Sets/src/mage/cards/f/ForerunnerOfTheLegion.java b/Mage.Sets/src/mage/cards/f/ForerunnerOfTheLegion.java
index dd19791b0e9..e751897fef7 100644
--- a/Mage.Sets/src/mage/cards/f/ForerunnerOfTheLegion.java
+++ b/Mage.Sets/src/mage/cards/f/ForerunnerOfTheLegion.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JayDi85
*/
-public class ForerunnerOfTheLegion extends CardImpl {
+public final class ForerunnerOfTheLegion extends CardImpl {
private static final FilterPermanent filterAnotherVampire = new FilterPermanent(SubType.VAMPIRE, "another " + SubType.VAMPIRE.toString());
static {
diff --git a/Mage.Sets/src/mage/cards/f/Foresee.java b/Mage.Sets/src/mage/cards/f/Foresee.java
index 8a96316041c..f9b40d0c838 100644
--- a/Mage.Sets/src/mage/cards/f/Foresee.java
+++ b/Mage.Sets/src/mage/cards/f/Foresee.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Foresee extends CardImpl {
+public final class Foresee extends CardImpl {
public Foresee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Foreshadow.java b/Mage.Sets/src/mage/cards/f/Foreshadow.java
index ce40ddcce69..3f4a63dd6cb 100644
--- a/Mage.Sets/src/mage/cards/f/Foreshadow.java
+++ b/Mage.Sets/src/mage/cards/f/Foreshadow.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author Quercitron & L_J
*/
-public class Foreshadow extends CardImpl {
+public final class Foreshadow extends CardImpl {
public Foreshadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Foresight.java b/Mage.Sets/src/mage/cards/f/Foresight.java
index 19bd5aa71e8..a5b1a6fc043 100644
--- a/Mage.Sets/src/mage/cards/f/Foresight.java
+++ b/Mage.Sets/src/mage/cards/f/Foresight.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class Foresight extends CardImpl {
+public final class Foresight extends CardImpl {
public Foresight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForestBear.java b/Mage.Sets/src/mage/cards/f/ForestBear.java
index decec6aa71e..a9a36685c7a 100644
--- a/Mage.Sets/src/mage/cards/f/ForestBear.java
+++ b/Mage.Sets/src/mage/cards/f/ForestBear.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ForestBear extends CardImpl {
+public final class ForestBear extends CardImpl {
public ForestBear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/Forfend.java b/Mage.Sets/src/mage/cards/f/Forfend.java
index a7a638e82ba..95cb53af5ca 100644
--- a/Mage.Sets/src/mage/cards/f/Forfend.java
+++ b/Mage.Sets/src/mage/cards/f/Forfend.java
@@ -39,7 +39,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author emerald000
*/
-public class Forfend extends CardImpl {
+public final class Forfend extends CardImpl {
public Forfend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/ForgeArmor.java b/Mage.Sets/src/mage/cards/f/ForgeArmor.java
index bfca5b07872..f1ff45efbac 100644
--- a/Mage.Sets/src/mage/cards/f/ForgeArmor.java
+++ b/Mage.Sets/src/mage/cards/f/ForgeArmor.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ForgeArmor extends CardImpl {
+public final class ForgeArmor extends CardImpl {
public ForgeArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/ForgeDevil.java b/Mage.Sets/src/mage/cards/f/ForgeDevil.java
index 1d5342dd9b0..858211c9ee3 100644
--- a/Mage.Sets/src/mage/cards/f/ForgeDevil.java
+++ b/Mage.Sets/src/mage/cards/f/ForgeDevil.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class ForgeDevil extends CardImpl {
+public final class ForgeDevil extends CardImpl {
public ForgeDevil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/ForgebornOreads.java b/Mage.Sets/src/mage/cards/f/ForgebornOreads.java
index 735f30ca9db..fd75ca27812 100644
--- a/Mage.Sets/src/mage/cards/f/ForgebornOreads.java
+++ b/Mage.Sets/src/mage/cards/f/ForgebornOreads.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class ForgebornOreads extends CardImpl {
+public final class ForgebornOreads extends CardImpl {
public ForgebornOreads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/ForgestokerDragon.java b/Mage.Sets/src/mage/cards/f/ForgestokerDragon.java
index 7cfeecabcf1..97645373f0d 100644
--- a/Mage.Sets/src/mage/cards/f/ForgestokerDragon.java
+++ b/Mage.Sets/src/mage/cards/f/ForgestokerDragon.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ForgestokerDragon extends CardImpl {
+public final class ForgestokerDragon extends CardImpl {
public ForgestokerDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Forget.java b/Mage.Sets/src/mage/cards/f/Forget.java
index 12a739a4b92..f8d3e58fe6d 100644
--- a/Mage.Sets/src/mage/cards/f/Forget.java
+++ b/Mage.Sets/src/mage/cards/f/Forget.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author Quercitron
*/
-public class Forget extends CardImpl {
+public final class Forget extends CardImpl {
public Forget(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForgottenAncient.java b/Mage.Sets/src/mage/cards/f/ForgottenAncient.java
index bd8e7d0298f..a8178d70cbc 100644
--- a/Mage.Sets/src/mage/cards/f/ForgottenAncient.java
+++ b/Mage.Sets/src/mage/cards/f/ForgottenAncient.java
@@ -58,7 +58,7 @@ import java.util.UUID;
*
* @author Blinke
*/
-public class ForgottenAncient extends CardImpl {
+public final class ForgottenAncient extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
filter.add(new AnotherPredicate());
diff --git a/Mage.Sets/src/mage/cards/f/ForgottenCave.java b/Mage.Sets/src/mage/cards/f/ForgottenCave.java
index 82bdd422fb4..6b5e24100b1 100644
--- a/Mage.Sets/src/mage/cards/f/ForgottenCave.java
+++ b/Mage.Sets/src/mage/cards/f/ForgottenCave.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class ForgottenCave extends CardImpl {
+public final class ForgottenCave extends CardImpl {
public ForgottenCave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/ForgottenCreation.java b/Mage.Sets/src/mage/cards/f/ForgottenCreation.java
index 37bfc59efe3..7a43867dfb6 100644
--- a/Mage.Sets/src/mage/cards/f/ForgottenCreation.java
+++ b/Mage.Sets/src/mage/cards/f/ForgottenCreation.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ForgottenCreation extends CardImpl {
+public final class ForgottenCreation extends CardImpl {
public ForgottenCreation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/ForgottenHarvest.java b/Mage.Sets/src/mage/cards/f/ForgottenHarvest.java
index c698fea6138..983f5f2d4b3 100644
--- a/Mage.Sets/src/mage/cards/f/ForgottenHarvest.java
+++ b/Mage.Sets/src/mage/cards/f/ForgottenHarvest.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class ForgottenHarvest extends CardImpl {
+public final class ForgottenHarvest extends CardImpl {
public ForgottenHarvest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/ForgottenLore.java b/Mage.Sets/src/mage/cards/f/ForgottenLore.java
index 4ecd89fa6cd..71ff7011564 100644
--- a/Mage.Sets/src/mage/cards/f/ForgottenLore.java
+++ b/Mage.Sets/src/mage/cards/f/ForgottenLore.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author LoneFox
*/
-public class ForgottenLore extends CardImpl {
+public final class ForgottenLore extends CardImpl {
public ForgottenLore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
diff --git a/Mage.Sets/src/mage/cards/f/ForiysianBrigade.java b/Mage.Sets/src/mage/cards/f/ForiysianBrigade.java
index 617a5c2b898..bd7082d0497 100644
--- a/Mage.Sets/src/mage/cards/f/ForiysianBrigade.java
+++ b/Mage.Sets/src/mage/cards/f/ForiysianBrigade.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class ForiysianBrigade extends CardImpl {
+public final class ForiysianBrigade extends CardImpl {
public ForiysianBrigade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/ForiysianInterceptor.java b/Mage.Sets/src/mage/cards/f/ForiysianInterceptor.java
index 4f34b197591..ed97c33381a 100644
--- a/Mage.Sets/src/mage/cards/f/ForiysianInterceptor.java
+++ b/Mage.Sets/src/mage/cards/f/ForiysianInterceptor.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class ForiysianInterceptor extends CardImpl {
+public final class ForiysianInterceptor extends CardImpl {
public ForiysianInterceptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/ForiysianTotem.java b/Mage.Sets/src/mage/cards/f/ForiysianTotem.java
index 0a2134ceb88..2ed13237bea 100644
--- a/Mage.Sets/src/mage/cards/f/ForiysianTotem.java
+++ b/Mage.Sets/src/mage/cards/f/ForiysianTotem.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.Token;
*
* @author klayhamn
*/
-public class ForiysianTotem extends CardImpl {
+public final class ForiysianTotem extends CardImpl {
private final static String ruleText = "As long as {this} is a creature, it can block an additional creature each combat.";
diff --git a/Mage.Sets/src/mage/cards/f/Fork.java b/Mage.Sets/src/mage/cards/f/Fork.java
index ceabe8744d1..6baf7b72e26 100644
--- a/Mage.Sets/src/mage/cards/f/Fork.java
+++ b/Mage.Sets/src/mage/cards/f/Fork.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class Fork extends CardImpl {
+public final class Fork extends CardImpl {
public Fork(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/f/ForkInTheRoad.java b/Mage.Sets/src/mage/cards/f/ForkInTheRoad.java
index e0f73b462bc..fea1d9d89ae 100644
--- a/Mage.Sets/src/mage/cards/f/ForkInTheRoad.java
+++ b/Mage.Sets/src/mage/cards/f/ForkInTheRoad.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class ForkInTheRoad extends CardImpl {
+public final class ForkInTheRoad extends CardImpl {
public ForkInTheRoad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
@@ -91,7 +91,7 @@ class ForkInTheRoadEffect extends OneShotEffect {
if (controller == null || sourceObject == null) {
return false;
}
- TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, game)) {
if (!target.getTargets().isEmpty()) {
Cards revealed = new CardsImpl();
diff --git a/Mage.Sets/src/mage/cards/f/ForkedBolt.java b/Mage.Sets/src/mage/cards/f/ForkedBolt.java
index 9f7cb72e197..5a3fb1afdfd 100644
--- a/Mage.Sets/src/mage/cards/f/ForkedBolt.java
+++ b/Mage.Sets/src/mage/cards/f/ForkedBolt.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author jeffwadsworth
*/
-public class ForkedBolt extends CardImpl {
+public final class ForkedBolt extends CardImpl {
public ForkedBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/ForkedBranchGarami.java b/Mage.Sets/src/mage/cards/f/ForkedBranchGarami.java
index 6b8246fb995..078bbf2be21 100644
--- a/Mage.Sets/src/mage/cards/f/ForkedBranchGarami.java
+++ b/Mage.Sets/src/mage/cards/f/ForkedBranchGarami.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ForkedBranchGarami extends CardImpl {
+public final class ForkedBranchGarami extends CardImpl {
public ForkedBranchGarami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/ForlornPseudamma.java b/Mage.Sets/src/mage/cards/f/ForlornPseudamma.java
index 28150994587..f880dac9c20 100644
--- a/Mage.Sets/src/mage/cards/f/ForlornPseudamma.java
+++ b/Mage.Sets/src/mage/cards/f/ForlornPseudamma.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.ForlornPseudammaZombieToken;
*
* @author LevelX2
*/
-public class ForlornPseudamma extends CardImpl {
+public final class ForlornPseudamma extends CardImpl {
public ForlornPseudamma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FormOfTheDinosaur.java b/Mage.Sets/src/mage/cards/f/FormOfTheDinosaur.java
index 6a7b364ac5a..74514625134 100644
--- a/Mage.Sets/src/mage/cards/f/FormOfTheDinosaur.java
+++ b/Mage.Sets/src/mage/cards/f/FormOfTheDinosaur.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author LevelX2
*/
-public class FormOfTheDinosaur extends CardImpl {
+public final class FormOfTheDinosaur extends CardImpl {
public FormOfTheDinosaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FormOfTheDragon.java b/Mage.Sets/src/mage/cards/f/FormOfTheDragon.java
index 5fd32482ee2..df584d61743 100644
--- a/Mage.Sets/src/mage/cards/f/FormOfTheDragon.java
+++ b/Mage.Sets/src/mage/cards/f/FormOfTheDragon.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class FormOfTheDragon extends CardImpl {
+public final class FormOfTheDragon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/f/Formation.java b/Mage.Sets/src/mage/cards/f/Formation.java
index 2a629ad808f..6323cf1eec2 100644
--- a/Mage.Sets/src/mage/cards/f/Formation.java
+++ b/Mage.Sets/src/mage/cards/f/Formation.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Formation extends CardImpl {
+public final class Formation extends CardImpl {
public Formation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FormlessNurturing.java b/Mage.Sets/src/mage/cards/f/FormlessNurturing.java
index 63f656ec2de..dca06d4b6de 100644
--- a/Mage.Sets/src/mage/cards/f/FormlessNurturing.java
+++ b/Mage.Sets/src/mage/cards/f/FormlessNurturing.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class FormlessNurturing extends CardImpl {
+public final class FormlessNurturing extends CardImpl {
public FormlessNurturing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/ForsakeTheWorldly.java b/Mage.Sets/src/mage/cards/f/ForsakeTheWorldly.java
index d644801fcbd..b57c67ae053 100644
--- a/Mage.Sets/src/mage/cards/f/ForsakeTheWorldly.java
+++ b/Mage.Sets/src/mage/cards/f/ForsakeTheWorldly.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class ForsakeTheWorldly extends CardImpl {
+public final class ForsakeTheWorldly extends CardImpl {
public ForsakeTheWorldly(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/ForsakenCity.java b/Mage.Sets/src/mage/cards/f/ForsakenCity.java
index cb7284acd2f..daed8969d81 100644
--- a/Mage.Sets/src/mage/cards/f/ForsakenCity.java
+++ b/Mage.Sets/src/mage/cards/f/ForsakenCity.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Luna Skyrise
*/
-public class ForsakenCity extends CardImpl {
+public final class ForsakenCity extends CardImpl {
private static final FilterCard filter = new FilterCard("a card from your hand");
diff --git a/Mage.Sets/src/mage/cards/f/ForsakenDrifters.java b/Mage.Sets/src/mage/cards/f/ForsakenDrifters.java
index 7b93b40e726..7c42727c7c2 100644
--- a/Mage.Sets/src/mage/cards/f/ForsakenDrifters.java
+++ b/Mage.Sets/src/mage/cards/f/ForsakenDrifters.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ForsakenDrifters extends CardImpl {
+public final class ForsakenDrifters extends CardImpl {
public ForsakenDrifters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/ForsakenSanctuary.java b/Mage.Sets/src/mage/cards/f/ForsakenSanctuary.java
index e7c47daf2e2..e4449f770af 100644
--- a/Mage.Sets/src/mage/cards/f/ForsakenSanctuary.java
+++ b/Mage.Sets/src/mage/cards/f/ForsakenSanctuary.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class ForsakenSanctuary extends CardImpl {
+public final class ForsakenSanctuary extends CardImpl {
public ForsakenSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/ForsakenWastes.java b/Mage.Sets/src/mage/cards/f/ForsakenWastes.java
index d3a71c0c333..9d4938b10d7 100644
--- a/Mage.Sets/src/mage/cards/f/ForsakenWastes.java
+++ b/Mage.Sets/src/mage/cards/f/ForsakenWastes.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class ForsakenWastes extends CardImpl {
+public final class ForsakenWastes extends CardImpl {
public ForsakenWastes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FortifiedArea.java b/Mage.Sets/src/mage/cards/f/FortifiedArea.java
index b02d4e98de9..ebe42fad472 100644
--- a/Mage.Sets/src/mage/cards/f/FortifiedArea.java
+++ b/Mage.Sets/src/mage/cards/f/FortifiedArea.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author L_J
*/
-public class FortifiedArea extends CardImpl {
+public final class FortifiedArea extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wall creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FortifiedRampart.java b/Mage.Sets/src/mage/cards/f/FortifiedRampart.java
index b4bd0d13144..3788c456daf 100644
--- a/Mage.Sets/src/mage/cards/f/FortifiedRampart.java
+++ b/Mage.Sets/src/mage/cards/f/FortifiedRampart.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class FortifiedRampart extends CardImpl {
+public final class FortifiedRampart extends CardImpl {
public FortifiedRampart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FortifiedVillage.java b/Mage.Sets/src/mage/cards/f/FortifiedVillage.java
index baaa5b3aebe..46530e56991 100644
--- a/Mage.Sets/src/mage/cards/f/FortifiedVillage.java
+++ b/Mage.Sets/src/mage/cards/f/FortifiedVillage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class FortifiedVillage extends CardImpl {
+public final class FortifiedVillage extends CardImpl {
private static final FilterCard filter = new FilterCard("a Forest or Plains card from your hand");
diff --git a/Mage.Sets/src/mage/cards/f/Fortify.java b/Mage.Sets/src/mage/cards/f/Fortify.java
index b4c01f88267..fc8fb357c46 100644
--- a/Mage.Sets/src/mage/cards/f/Fortify.java
+++ b/Mage.Sets/src/mage/cards/f/Fortify.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class Fortify extends CardImpl {
+public final class Fortify extends CardImpl {
public Fortify(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/Fortitude.java b/Mage.Sets/src/mage/cards/f/Fortitude.java
index 386ee64ff90..bbe016eed0b 100644
--- a/Mage.Sets/src/mage/cards/f/Fortitude.java
+++ b/Mage.Sets/src/mage/cards/f/Fortitude.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author hanasu
*/
-public class Fortitude extends CardImpl {
+public final class Fortitude extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/f/FortressCrab.java b/Mage.Sets/src/mage/cards/f/FortressCrab.java
index 36a64578852..50871ccd68f 100644
--- a/Mage.Sets/src/mage/cards/f/FortressCrab.java
+++ b/Mage.Sets/src/mage/cards/f/FortressCrab.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FortressCrab extends CardImpl {
+public final class FortressCrab extends CardImpl {
public FortressCrab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FortressCyclops.java b/Mage.Sets/src/mage/cards/f/FortressCyclops.java
index 137ab7758bf..46ee04e3ce6 100644
--- a/Mage.Sets/src/mage/cards/f/FortressCyclops.java
+++ b/Mage.Sets/src/mage/cards/f/FortressCyclops.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class FortressCyclops extends CardImpl {
+public final class FortressCyclops extends CardImpl {
public FortressCyclops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FortuitousFind.java b/Mage.Sets/src/mage/cards/f/FortuitousFind.java
index 6bd6b437d70..c6914b08d45 100644
--- a/Mage.Sets/src/mage/cards/f/FortuitousFind.java
+++ b/Mage.Sets/src/mage/cards/f/FortuitousFind.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class FortuitousFind extends CardImpl {
+public final class FortuitousFind extends CardImpl {
public FortuitousFind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FortunateFew.java b/Mage.Sets/src/mage/cards/f/FortunateFew.java
index 771feb72984..c88b1fb0935 100644
--- a/Mage.Sets/src/mage/cards/f/FortunateFew.java
+++ b/Mage.Sets/src/mage/cards/f/FortunateFew.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author spjspj
*/
-public class FortunateFew extends CardImpl {
+public final class FortunateFew extends CardImpl {
public FortunateFew(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FortuneThief.java b/Mage.Sets/src/mage/cards/f/FortuneThief.java
index ef5d02f1334..e897851f87f 100644
--- a/Mage.Sets/src/mage/cards/f/FortuneThief.java
+++ b/Mage.Sets/src/mage/cards/f/FortuneThief.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class FortuneThief extends CardImpl {
+public final class FortuneThief extends CardImpl {
public FortuneThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FortunesFavor.java b/Mage.Sets/src/mage/cards/f/FortunesFavor.java
index 9e9b780a1a0..699aa9a5234 100644
--- a/Mage.Sets/src/mage/cards/f/FortunesFavor.java
+++ b/Mage.Sets/src/mage/cards/f/FortunesFavor.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class FortunesFavor extends CardImpl {
+public final class FortunesFavor extends CardImpl {
public FortunesFavor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FossilFind.java b/Mage.Sets/src/mage/cards/f/FossilFind.java
index eb2579fa02d..6d3eab6a6ad 100644
--- a/Mage.Sets/src/mage/cards/f/FossilFind.java
+++ b/Mage.Sets/src/mage/cards/f/FossilFind.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author North
*/
-public class FossilFind extends CardImpl {
+public final class FossilFind extends CardImpl {
public FossilFind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R/G}");
diff --git a/Mage.Sets/src/mage/cards/f/Foster.java b/Mage.Sets/src/mage/cards/f/Foster.java
index 7f38e3d6fe6..980fab2e279 100644
--- a/Mage.Sets/src/mage/cards/f/Foster.java
+++ b/Mage.Sets/src/mage/cards/f/Foster.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class Foster extends CardImpl {
+public final class Foster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
diff --git a/Mage.Sets/src/mage/cards/f/FoulEmissary.java b/Mage.Sets/src/mage/cards/f/FoulEmissary.java
index 7429ff84fe9..59d9c95836f 100644
--- a/Mage.Sets/src/mage/cards/f/FoulEmissary.java
+++ b/Mage.Sets/src/mage/cards/f/FoulEmissary.java
@@ -51,7 +51,7 @@ import mage.game.stack.Spell;
*
* @author LevelX2
*/
-public class FoulEmissary extends CardImpl {
+public final class FoulEmissary extends CardImpl {
private static final FilterCard filter = new FilterCard("a creature card");
diff --git a/Mage.Sets/src/mage/cards/f/FoulFamiliar.java b/Mage.Sets/src/mage/cards/f/FoulFamiliar.java
index 77ab1b7e88f..4351c280bd6 100644
--- a/Mage.Sets/src/mage/cards/f/FoulFamiliar.java
+++ b/Mage.Sets/src/mage/cards/f/FoulFamiliar.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FoulFamiliar extends CardImpl {
+public final class FoulFamiliar extends CardImpl {
public FoulFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FoulImp.java b/Mage.Sets/src/mage/cards/f/FoulImp.java
index 0296b5be68f..c9f7071304a 100644
--- a/Mage.Sets/src/mage/cards/f/FoulImp.java
+++ b/Mage.Sets/src/mage/cards/f/FoulImp.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author daagar
*/
-public class FoulImp extends CardImpl {
+public final class FoulImp extends CardImpl {
public FoulImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FoulOrchard.java b/Mage.Sets/src/mage/cards/f/FoulOrchard.java
index a38f3b8ecbe..f2fbcdec6df 100644
--- a/Mage.Sets/src/mage/cards/f/FoulOrchard.java
+++ b/Mage.Sets/src/mage/cards/f/FoulOrchard.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class FoulOrchard extends CardImpl {
+public final class FoulOrchard extends CardImpl {
public FoulOrchard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/FoulPresence.java b/Mage.Sets/src/mage/cards/f/FoulPresence.java
index 9a4e4a9f89d..f50b2b23a0e 100644
--- a/Mage.Sets/src/mage/cards/f/FoulPresence.java
+++ b/Mage.Sets/src/mage/cards/f/FoulPresence.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FoulPresence extends CardImpl {
+public final class FoulPresence extends CardImpl {
public FoulPresence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FoulRenewal.java b/Mage.Sets/src/mage/cards/f/FoulRenewal.java
index 88f87dd0764..3862d98d5d4 100644
--- a/Mage.Sets/src/mage/cards/f/FoulRenewal.java
+++ b/Mage.Sets/src/mage/cards/f/FoulRenewal.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class FoulRenewal extends CardImpl {
+public final class FoulRenewal extends CardImpl {
public FoulRenewal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FoulSpirit.java b/Mage.Sets/src/mage/cards/f/FoulSpirit.java
index a32c0b511e0..ab9e0e3666a 100644
--- a/Mage.Sets/src/mage/cards/f/FoulSpirit.java
+++ b/Mage.Sets/src/mage/cards/f/FoulSpirit.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class FoulSpirit extends CardImpl {
+public final class FoulSpirit extends CardImpl {
public FoulSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FoulTongueInvocation.java b/Mage.Sets/src/mage/cards/f/FoulTongueInvocation.java
index fb4b2f69d24..0960ea50447 100644
--- a/Mage.Sets/src/mage/cards/f/FoulTongueInvocation.java
+++ b/Mage.Sets/src/mage/cards/f/FoulTongueInvocation.java
@@ -52,7 +52,7 @@ import mage.watchers.common.DragonOnTheBattlefieldWhileSpellWasCastWatcher;
*
* @author LevelX2
*/
-public class FoulTongueInvocation extends CardImpl {
+public final class FoulTongueInvocation extends CardImpl {
private static final FilterCard filter = new FilterCard("a Dragon card from your hand (you don't have to)");
diff --git a/Mage.Sets/src/mage/cards/f/FoulTongueShriek.java b/Mage.Sets/src/mage/cards/f/FoulTongueShriek.java
index 93aa88a6ab7..bdf270f07e7 100644
--- a/Mage.Sets/src/mage/cards/f/FoulTongueShriek.java
+++ b/Mage.Sets/src/mage/cards/f/FoulTongueShriek.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class FoulTongueShriek extends CardImpl {
+public final class FoulTongueShriek extends CardImpl {
public FoulTongueShriek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FoundryAssembler.java b/Mage.Sets/src/mage/cards/f/FoundryAssembler.java
index 9fc65cad740..1396f5c9576 100644
--- a/Mage.Sets/src/mage/cards/f/FoundryAssembler.java
+++ b/Mage.Sets/src/mage/cards/f/FoundryAssembler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class FoundryAssembler extends CardImpl {
+public final class FoundryAssembler extends CardImpl {
public FoundryAssembler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/f/FoundryChampion.java b/Mage.Sets/src/mage/cards/f/FoundryChampion.java
index 7b524de3b4e..36809754e9b 100644
--- a/Mage.Sets/src/mage/cards/f/FoundryChampion.java
+++ b/Mage.Sets/src/mage/cards/f/FoundryChampion.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class FoundryChampion extends CardImpl {
+public final class FoundryChampion extends CardImpl {
public FoundryChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FoundryHornet.java b/Mage.Sets/src/mage/cards/f/FoundryHornet.java
index 29813f49c14..8cce7c8e5ed 100644
--- a/Mage.Sets/src/mage/cards/f/FoundryHornet.java
+++ b/Mage.Sets/src/mage/cards/f/FoundryHornet.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author LevelX2
*/
-public class FoundryHornet extends CardImpl {
+public final class FoundryHornet extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a creature with a +1/+1 counter on it");
private final static FilterCreaturePermanent filterOpponent = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/f/FoundryInspector.java b/Mage.Sets/src/mage/cards/f/FoundryInspector.java
index 54d041ecd6c..dccdf576de9 100644
--- a/Mage.Sets/src/mage/cards/f/FoundryInspector.java
+++ b/Mage.Sets/src/mage/cards/f/FoundryInspector.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class FoundryInspector extends CardImpl {
+public final class FoundryInspector extends CardImpl {
private static final FilterCard filter = new FilterCard("Artifact spells");
diff --git a/Mage.Sets/src/mage/cards/f/FoundryOfTheConsuls.java b/Mage.Sets/src/mage/cards/f/FoundryOfTheConsuls.java
index 202842cef93..6a74b9d9885 100644
--- a/Mage.Sets/src/mage/cards/f/FoundryOfTheConsuls.java
+++ b/Mage.Sets/src/mage/cards/f/FoundryOfTheConsuls.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
* @author LoneFox
*
*/
-public class FoundryOfTheConsuls extends CardImpl {
+public final class FoundryOfTheConsuls extends CardImpl {
public FoundryOfTheConsuls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/FoundryScreecher.java b/Mage.Sets/src/mage/cards/f/FoundryScreecher.java
index 4866a353356..5ab34493a97 100644
--- a/Mage.Sets/src/mage/cards/f/FoundryScreecher.java
+++ b/Mage.Sets/src/mage/cards/f/FoundryScreecher.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class FoundryScreecher extends CardImpl {
+public final class FoundryScreecher extends CardImpl {
public FoundryScreecher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FoundryStreetDenizen.java b/Mage.Sets/src/mage/cards/f/FoundryStreetDenizen.java
index bc016d1ceb5..7c95a92f345 100644
--- a/Mage.Sets/src/mage/cards/f/FoundryStreetDenizen.java
+++ b/Mage.Sets/src/mage/cards/f/FoundryStreetDenizen.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Plopman
*/
-public class FoundryStreetDenizen extends CardImpl {
+public final class FoundryStreetDenizen extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another red creature");
static {
diff --git a/Mage.Sets/src/mage/cards/f/FountainOfCho.java b/Mage.Sets/src/mage/cards/f/FountainOfCho.java
index 469a7bd53e1..bd6a928adc6 100644
--- a/Mage.Sets/src/mage/cards/f/FountainOfCho.java
+++ b/Mage.Sets/src/mage/cards/f/FountainOfCho.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author anonymous
*/
-public class FountainOfCho extends CardImpl {
+public final class FountainOfCho extends CardImpl {
public FountainOfCho(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/FountainOfYouth.java b/Mage.Sets/src/mage/cards/f/FountainOfYouth.java
index 650c2b384b2..21ef948b6a0 100644
--- a/Mage.Sets/src/mage/cards/f/FountainOfYouth.java
+++ b/Mage.Sets/src/mage/cards/f/FountainOfYouth.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class FountainOfYouth extends CardImpl {
+public final class FountainOfYouth extends CardImpl {
public FountainOfYouth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/f/FountainWatch.java b/Mage.Sets/src/mage/cards/f/FountainWatch.java
index b4dc2f240b6..fcaefa292d6 100644
--- a/Mage.Sets/src/mage/cards/f/FountainWatch.java
+++ b/Mage.Sets/src/mage/cards/f/FountainWatch.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author spjspj
*/
-public class FountainWatch extends CardImpl {
+public final class FountainWatch extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Artifacts and Enchantments");
diff --git a/Mage.Sets/src/mage/cards/f/FourthBridgeProwler.java b/Mage.Sets/src/mage/cards/f/FourthBridgeProwler.java
index ba442bce459..c06c999a1c2 100644
--- a/Mage.Sets/src/mage/cards/f/FourthBridgeProwler.java
+++ b/Mage.Sets/src/mage/cards/f/FourthBridgeProwler.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FourthBridgeProwler extends CardImpl {
+public final class FourthBridgeProwler extends CardImpl {
public FourthBridgeProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FowlPlay.java b/Mage.Sets/src/mage/cards/f/FowlPlay.java
index 69edefb0e72..440299e6712 100644
--- a/Mage.Sets/src/mage/cards/f/FowlPlay.java
+++ b/Mage.Sets/src/mage/cards/f/FowlPlay.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class FowlPlay extends CardImpl {
+public final class FowlPlay extends CardImpl {
public FowlPlay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Foxfire.java b/Mage.Sets/src/mage/cards/f/Foxfire.java
index b7a5409ee32..7772d583fde 100644
--- a/Mage.Sets/src/mage/cards/f/Foxfire.java
+++ b/Mage.Sets/src/mage/cards/f/Foxfire.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author L_J
*/
-public class Foxfire extends CardImpl {
+public final class Foxfire extends CardImpl {
public Foxfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FoxfireOak.java b/Mage.Sets/src/mage/cards/f/FoxfireOak.java
index 705e1cbb855..8ecc08ae365 100644
--- a/Mage.Sets/src/mage/cards/f/FoxfireOak.java
+++ b/Mage.Sets/src/mage/cards/f/FoxfireOak.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class FoxfireOak extends CardImpl {
+public final class FoxfireOak extends CardImpl {
public FoxfireOak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FracturedIdentity.java b/Mage.Sets/src/mage/cards/f/FracturedIdentity.java
index 7a7d532aa4b..d3afaad8b45 100644
--- a/Mage.Sets/src/mage/cards/f/FracturedIdentity.java
+++ b/Mage.Sets/src/mage/cards/f/FracturedIdentity.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class FracturedIdentity extends CardImpl {
+public final class FracturedIdentity extends CardImpl {
public FracturedIdentity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FracturedLoyalty.java b/Mage.Sets/src/mage/cards/f/FracturedLoyalty.java
index 2ce91ccbe86..c9c258dd11d 100644
--- a/Mage.Sets/src/mage/cards/f/FracturedLoyalty.java
+++ b/Mage.Sets/src/mage/cards/f/FracturedLoyalty.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J (significantly based on wetterlicht)
*/
-public class FracturedLoyalty extends CardImpl {
+public final class FracturedLoyalty extends CardImpl {
public FracturedLoyalty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FracturingGust.java b/Mage.Sets/src/mage/cards/f/FracturingGust.java
index 465aaa551e3..2f10cd7761a 100644
--- a/Mage.Sets/src/mage/cards/f/FracturingGust.java
+++ b/Mage.Sets/src/mage/cards/f/FracturingGust.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class FracturingGust extends CardImpl {
+public final class FracturingGust extends CardImpl {
public FracturingGust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G/W}{G/W}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/f/Fragmentize.java b/Mage.Sets/src/mage/cards/f/Fragmentize.java
index 2becf125315..4fb300154d8 100644
--- a/Mage.Sets/src/mage/cards/f/Fragmentize.java
+++ b/Mage.Sets/src/mage/cards/f/Fragmentize.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class Fragmentize extends CardImpl {
+public final class Fragmentize extends CardImpl {
private static final FilterArtifactOrEnchantmentPermanent filter = new FilterArtifactOrEnchantmentPermanent("artifact or enchantment with converted mana cost 4 or less");
diff --git a/Mage.Sets/src/mage/cards/f/FranticPurification.java b/Mage.Sets/src/mage/cards/f/FranticPurification.java
index e247c52643b..ad252233054 100644
--- a/Mage.Sets/src/mage/cards/f/FranticPurification.java
+++ b/Mage.Sets/src/mage/cards/f/FranticPurification.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author magenoxx_at_gmail.com
*/
-public class FranticPurification extends CardImpl {
+public final class FranticPurification extends CardImpl {
public FranticPurification(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FranticSalvage.java b/Mage.Sets/src/mage/cards/f/FranticSalvage.java
index e23e82d5a70..f93ac2a0833 100644
--- a/Mage.Sets/src/mage/cards/f/FranticSalvage.java
+++ b/Mage.Sets/src/mage/cards/f/FranticSalvage.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class FranticSalvage extends CardImpl {
+public final class FranticSalvage extends CardImpl {
public FranticSalvage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FranticSearch.java b/Mage.Sets/src/mage/cards/f/FranticSearch.java
index b3ad38beef8..a487917ef74 100644
--- a/Mage.Sets/src/mage/cards/f/FranticSearch.java
+++ b/Mage.Sets/src/mage/cards/f/FranticSearch.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class FranticSearch extends CardImpl {
+public final class FranticSearch extends CardImpl {
public FranticSearch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FrayingSanity.java b/Mage.Sets/src/mage/cards/f/FrayingSanity.java
index 51251f8dc6d..978c787abc0 100644
--- a/Mage.Sets/src/mage/cards/f/FrayingSanity.java
+++ b/Mage.Sets/src/mage/cards/f/FrayingSanity.java
@@ -53,7 +53,7 @@ import mage.watchers.common.CardsPutIntoGraveyardWatcher;
*
* @author jeffwadsworth
*/
-public class FrayingSanity extends CardImpl {
+public final class FrayingSanity extends CardImpl {
public FrayingSanity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Frazzle.java b/Mage.Sets/src/mage/cards/f/Frazzle.java
index 5a97661b48c..430b347300e 100644
--- a/Mage.Sets/src/mage/cards/f/Frazzle.java
+++ b/Mage.Sets/src/mage/cards/f/Frazzle.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
/**
* @author Loki
*/
-public class Frazzle extends CardImpl {
+public final class Frazzle extends CardImpl {
private static final FilterSpell filter = new FilterSpell("nonblue spell");
diff --git a/Mage.Sets/src/mage/cards/f/FreedFromTheReal.java b/Mage.Sets/src/mage/cards/f/FreedFromTheReal.java
index 7bb3201dc35..c3c11be85e8 100644
--- a/Mage.Sets/src/mage/cards/f/FreedFromTheReal.java
+++ b/Mage.Sets/src/mage/cards/f/FreedFromTheReal.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class FreedFromTheReal extends CardImpl {
+public final class FreedFromTheReal extends CardImpl {
public FreedFromTheReal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FreejamRegent.java b/Mage.Sets/src/mage/cards/f/FreejamRegent.java
index 48f838680cd..fd96b6673e2 100644
--- a/Mage.Sets/src/mage/cards/f/FreejamRegent.java
+++ b/Mage.Sets/src/mage/cards/f/FreejamRegent.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
/**
* @author JRHerlehy
*/
-public class FreejamRegent extends CardImpl {
+public final class FreejamRegent extends CardImpl {
public FreejamRegent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FreewindEquenaut.java b/Mage.Sets/src/mage/cards/f/FreewindEquenaut.java
index 493059fa71f..b91b7164db8 100644
--- a/Mage.Sets/src/mage/cards/f/FreewindEquenaut.java
+++ b/Mage.Sets/src/mage/cards/f/FreewindEquenaut.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class FreewindEquenaut extends CardImpl {
+public final class FreewindEquenaut extends CardImpl {
public FreewindEquenaut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FreewindFalcon.java b/Mage.Sets/src/mage/cards/f/FreewindFalcon.java
index 4770881972a..5ade9851eb7 100644
--- a/Mage.Sets/src/mage/cards/f/FreewindFalcon.java
+++ b/Mage.Sets/src/mage/cards/f/FreewindFalcon.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author anonymous
*/
-public class FreewindFalcon extends CardImpl {
+public final class FreewindFalcon extends CardImpl {
public FreewindFalcon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FreneticEfreet.java b/Mage.Sets/src/mage/cards/f/FreneticEfreet.java
index bc43ecad871..ab40f7d6fdd 100644
--- a/Mage.Sets/src/mage/cards/f/FreneticEfreet.java
+++ b/Mage.Sets/src/mage/cards/f/FreneticEfreet.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class FreneticEfreet extends CardImpl {
+public final class FreneticEfreet extends CardImpl {
public FreneticEfreet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FreneticOgre.java b/Mage.Sets/src/mage/cards/f/FreneticOgre.java
index 95238e976f9..09aac515f8b 100644
--- a/Mage.Sets/src/mage/cards/f/FreneticOgre.java
+++ b/Mage.Sets/src/mage/cards/f/FreneticOgre.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class FreneticOgre extends CardImpl {
+public final class FreneticOgre extends CardImpl {
public FreneticOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FreneticRaptor.java b/Mage.Sets/src/mage/cards/f/FreneticRaptor.java
index af8f9fd0112..c5e9ff4c397 100644
--- a/Mage.Sets/src/mage/cards/f/FreneticRaptor.java
+++ b/Mage.Sets/src/mage/cards/f/FreneticRaptor.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author TheElk801
*/
-public class FreneticRaptor extends CardImpl {
+public final class FreneticRaptor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.BEAST, "Beasts");
diff --git a/Mage.Sets/src/mage/cards/f/FreneticSliver.java b/Mage.Sets/src/mage/cards/f/FreneticSliver.java
index c0a638c1c2a..93d51fbf7b3 100644
--- a/Mage.Sets/src/mage/cards/f/FreneticSliver.java
+++ b/Mage.Sets/src/mage/cards/f/FreneticSliver.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author anonymous
*/
-public class FreneticSliver extends CardImpl {
+public final class FreneticSliver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers");
diff --git a/Mage.Sets/src/mage/cards/f/FrenziedFugue.java b/Mage.Sets/src/mage/cards/f/FrenziedFugue.java
index 9a253f0b251..af6c84bda0b 100644
--- a/Mage.Sets/src/mage/cards/f/FrenziedFugue.java
+++ b/Mage.Sets/src/mage/cards/f/FrenziedFugue.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author LevelX2
*/
-public class FrenziedFugue extends CardImpl {
+public final class FrenziedFugue extends CardImpl {
public FrenziedFugue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FrenziedGoblin.java b/Mage.Sets/src/mage/cards/f/FrenziedGoblin.java
index 99f86958f76..52a6eed2013 100644
--- a/Mage.Sets/src/mage/cards/f/FrenziedGoblin.java
+++ b/Mage.Sets/src/mage/cards/f/FrenziedGoblin.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class FrenziedGoblin extends CardImpl {
+public final class FrenziedGoblin extends CardImpl {
public FrenziedGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FrenziedRage.java b/Mage.Sets/src/mage/cards/f/FrenziedRage.java
index 52aeb0289aa..1a1f63873b6 100644
--- a/Mage.Sets/src/mage/cards/f/FrenziedRage.java
+++ b/Mage.Sets/src/mage/cards/f/FrenziedRage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class FrenziedRage extends CardImpl {
+public final class FrenziedRage extends CardImpl {
public FrenziedRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FrenziedRaptor.java b/Mage.Sets/src/mage/cards/f/FrenziedRaptor.java
index 6d9cc0760cc..7a59e47782f 100644
--- a/Mage.Sets/src/mage/cards/f/FrenziedRaptor.java
+++ b/Mage.Sets/src/mage/cards/f/FrenziedRaptor.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class FrenziedRaptor extends CardImpl {
+public final class FrenziedRaptor extends CardImpl {
public FrenziedRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FrenziedTilling.java b/Mage.Sets/src/mage/cards/f/FrenziedTilling.java
index 5cc63a5d5c0..941b5ed1f0d 100644
--- a/Mage.Sets/src/mage/cards/f/FrenziedTilling.java
+++ b/Mage.Sets/src/mage/cards/f/FrenziedTilling.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class FrenziedTilling extends CardImpl {
+public final class FrenziedTilling extends CardImpl {
public FrenziedTilling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{G}");
@@ -51,7 +51,7 @@ public class FrenziedTilling extends CardImpl {
// Destroy target land. Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addTarget(new TargetLandPermanent());
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true));
}
public FrenziedTilling(final FrenziedTilling card) {
diff --git a/Mage.Sets/src/mage/cards/f/FrenzySliver.java b/Mage.Sets/src/mage/cards/f/FrenzySliver.java
index 9bc78c4589a..83e071b85b8 100644
--- a/Mage.Sets/src/mage/cards/f/FrenzySliver.java
+++ b/Mage.Sets/src/mage/cards/f/FrenzySliver.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class FrenzySliver extends CardImpl {
+public final class FrenzySliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FreshMeat.java b/Mage.Sets/src/mage/cards/f/FreshMeat.java
index aa97299e1f0..d39fed2bfe8 100644
--- a/Mage.Sets/src/mage/cards/f/FreshMeat.java
+++ b/Mage.Sets/src/mage/cards/f/FreshMeat.java
@@ -43,7 +43,7 @@ import mage.watchers.common.CreaturesDiedWatcher;
*
* @author North
*/
-public class FreshMeat extends CardImpl {
+public final class FreshMeat extends CardImpl {
public FreshMeat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FreshVolunteers.java b/Mage.Sets/src/mage/cards/f/FreshVolunteers.java
index 2effcf718a5..6b3d026ae95 100644
--- a/Mage.Sets/src/mage/cards/f/FreshVolunteers.java
+++ b/Mage.Sets/src/mage/cards/f/FreshVolunteers.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FreshVolunteers extends CardImpl {
+public final class FreshVolunteers extends CardImpl {
public FreshVolunteers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FretworkColony.java b/Mage.Sets/src/mage/cards/f/FretworkColony.java
index dae02d66f38..60a8e2be5ce 100644
--- a/Mage.Sets/src/mage/cards/f/FretworkColony.java
+++ b/Mage.Sets/src/mage/cards/f/FretworkColony.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class FretworkColony extends CardImpl {
+public final class FretworkColony extends CardImpl {
public FretworkColony(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java b/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java
index 2cf9e36fbce..c42746999e0 100644
--- a/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java
+++ b/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java
@@ -52,7 +52,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class FreyaliseLlanowarsFury extends CardImpl {
+public final class FreyaliseLlanowarsFury extends CardImpl {
private static final FilterControlledCreaturePermanent filterGreen = new FilterControlledCreaturePermanent("green creature you control");
diff --git a/Mage.Sets/src/mage/cards/f/FreyalisesCharm.java b/Mage.Sets/src/mage/cards/f/FreyalisesCharm.java
index 026fd10f2ca..e07cfa08db0 100644
--- a/Mage.Sets/src/mage/cards/f/FreyalisesCharm.java
+++ b/Mage.Sets/src/mage/cards/f/FreyalisesCharm.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author TheElk801
*/
-public class FreyalisesCharm extends CardImpl {
+public final class FreyalisesCharm extends CardImpl {
private static final FilterSpell filter = new FilterSpell("black spell");
diff --git a/Mage.Sets/src/mage/cards/f/FreyalisesRadiance.java b/Mage.Sets/src/mage/cards/f/FreyalisesRadiance.java
index ab44a4e85f3..96e677fc901 100644
--- a/Mage.Sets/src/mage/cards/f/FreyalisesRadiance.java
+++ b/Mage.Sets/src/mage/cards/f/FreyalisesRadiance.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author TheElk801
*/
-public class FreyalisesRadiance extends CardImpl {
+public final class FreyalisesRadiance extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("snow permanents");
diff --git a/Mage.Sets/src/mage/cards/f/FriendlyFire.java b/Mage.Sets/src/mage/cards/f/FriendlyFire.java
index b2b0af61c47..28b9cb8678f 100644
--- a/Mage.Sets/src/mage/cards/f/FriendlyFire.java
+++ b/Mage.Sets/src/mage/cards/f/FriendlyFire.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class FriendlyFire extends CardImpl {
+public final class FriendlyFire extends CardImpl {
public FriendlyFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Frightcrawler.java b/Mage.Sets/src/mage/cards/f/Frightcrawler.java
index 124e8611aa9..fa9cca89b08 100644
--- a/Mage.Sets/src/mage/cards/f/Frightcrawler.java
+++ b/Mage.Sets/src/mage/cards/f/Frightcrawler.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class Frightcrawler extends CardImpl {
+public final class Frightcrawler extends CardImpl {
public Frightcrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FrightfulDelusion.java b/Mage.Sets/src/mage/cards/f/FrightfulDelusion.java
index 708b7ed745f..974cb225b57 100644
--- a/Mage.Sets/src/mage/cards/f/FrightfulDelusion.java
+++ b/Mage.Sets/src/mage/cards/f/FrightfulDelusion.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author Rafbill
*/
-public class FrightfulDelusion extends CardImpl {
+public final class FrightfulDelusion extends CardImpl {
public FrightfulDelusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java b/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java
index 6202b160536..a75f4a37e6d 100644
--- a/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java
+++ b/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FrightshroudCourier extends CardImpl {
+public final class FrightshroudCourier extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creature");
diff --git a/Mage.Sets/src/mage/cards/f/FrilledDeathspitter.java b/Mage.Sets/src/mage/cards/f/FrilledDeathspitter.java
index aa136bec84c..c6f6279e566 100644
--- a/Mage.Sets/src/mage/cards/f/FrilledDeathspitter.java
+++ b/Mage.Sets/src/mage/cards/f/FrilledDeathspitter.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author TheElk801 & L_J
*/
-public class FrilledDeathspitter extends CardImpl {
+public final class FrilledDeathspitter extends CardImpl {
public FrilledDeathspitter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FrilledOculus.java b/Mage.Sets/src/mage/cards/f/FrilledOculus.java
index 418ff4b2a39..780967ab2fc 100644
--- a/Mage.Sets/src/mage/cards/f/FrilledOculus.java
+++ b/Mage.Sets/src/mage/cards/f/FrilledOculus.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class FrilledOculus extends CardImpl {
+public final class FrilledOculus extends CardImpl {
public FrilledOculus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FrilledSandwalla.java b/Mage.Sets/src/mage/cards/f/FrilledSandwalla.java
index c7982c785d0..1554ffacbfc 100644
--- a/Mage.Sets/src/mage/cards/f/FrilledSandwalla.java
+++ b/Mage.Sets/src/mage/cards/f/FrilledSandwalla.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author ciaccona007
*/
-public class FrilledSandwalla extends CardImpl {
+public final class FrilledSandwalla extends CardImpl {
public FrilledSandwalla(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FrilledSeaSerpent.java b/Mage.Sets/src/mage/cards/f/FrilledSeaSerpent.java
new file mode 100644
index 00000000000..cd7f05706b9
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/f/FrilledSeaSerpent.java
@@ -0,0 +1,71 @@
+/*
+ * 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.f;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class FrilledSeaSerpent extends CardImpl {
+
+ public FrilledSeaSerpent(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
+
+ this.subtype.add(SubType.SERPENT);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(6);
+
+ // {5}{U}{U}: Frilled Sea Serpent can't be blocked this turn.
+ this.addAbility(new SimpleActivatedAbility(
+ Zone.BATTLEFIELD,
+ new CantBeBlockedSourceEffect(Duration.EndOfTurn),
+ new ManaCostsImpl("{5}{U}{U}")
+ ));
+ }
+
+ public FrilledSeaSerpent(final FrilledSeaSerpent card) {
+ super(card);
+ }
+
+ @Override
+ public FrilledSeaSerpent copy() {
+ return new FrilledSeaSerpent(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/f/FrogTongue.java b/Mage.Sets/src/mage/cards/f/FrogTongue.java
index f764604a804..5fce2332968 100644
--- a/Mage.Sets/src/mage/cards/f/FrogTongue.java
+++ b/Mage.Sets/src/mage/cards/f/FrogTongue.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class FrogTongue extends CardImpl {
+public final class FrogTongue extends CardImpl {
public FrogTongue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/f/Frogmite.java b/Mage.Sets/src/mage/cards/f/Frogmite.java
index 469d3f97a48..46913b3b343 100644
--- a/Mage.Sets/src/mage/cards/f/Frogmite.java
+++ b/Mage.Sets/src/mage/cards/f/Frogmite.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class Frogmite extends CardImpl {
+public final class Frogmite extends CardImpl {
public Frogmite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/f/FrogtosserBanneret.java b/Mage.Sets/src/mage/cards/f/FrogtosserBanneret.java
index 16206fa414f..81b9a0e1612 100644
--- a/Mage.Sets/src/mage/cards/f/FrogtosserBanneret.java
+++ b/Mage.Sets/src/mage/cards/f/FrogtosserBanneret.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class FrogtosserBanneret extends CardImpl {
+public final class FrogtosserBanneret extends CardImpl {
private static final FilterCard filter = new FilterCard("Goblin spells and Rogue spells");
diff --git a/Mage.Sets/src/mage/cards/f/FromBeyond.java b/Mage.Sets/src/mage/cards/f/FromBeyond.java
index 8f7a204ffff..9b42480b273 100644
--- a/Mage.Sets/src/mage/cards/f/FromBeyond.java
+++ b/Mage.Sets/src/mage/cards/f/FromBeyond.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class FromBeyond extends CardImpl {
+public final class FromBeyond extends CardImpl {
private static final FilterCard filter = new FilterCard("Eldrazi card");
diff --git a/Mage.Sets/src/mage/cards/f/FromTheAshes.java b/Mage.Sets/src/mage/cards/f/FromTheAshes.java
index 1ee3f3f0db1..0cc9351dd80 100644
--- a/Mage.Sets/src/mage/cards/f/FromTheAshes.java
+++ b/Mage.Sets/src/mage/cards/f/FromTheAshes.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class FromTheAshes extends CardImpl {
+public final class FromTheAshes extends CardImpl {
public FromTheAshes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
@@ -106,7 +106,7 @@ class FromTheAshesEffect extends OneShotEffect {
for (Map.Entry entry : playerAmount.entrySet()) {
Player player = game.getPlayer(entry.getKey());
if (player != null && player.chooseUse(outcome, "Search your library for up to " + entry.getValue() + " basic land card(s) to put it onto the battlefield?", source, game)) {
- TargetCardInLibrary target = new TargetCardInLibrary(0, entry.getValue(), StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, entry.getValue(), StaticFilters.FILTER_CARD_BASIC_LAND);
if (player.searchLibrary(target, game)) {
if (!target.getTargets().isEmpty()) {
player.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game);
diff --git a/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java b/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java
index 52b190caa23..16871db1b91 100644
--- a/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java
+++ b/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class FromUnderTheFloorboards extends CardImpl {
+public final class FromUnderTheFloorboards extends CardImpl {
public FromUnderTheFloorboards(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FrontierBivouac.java b/Mage.Sets/src/mage/cards/f/FrontierBivouac.java
index a8b8d5fd721..cbdcc2290e2 100644
--- a/Mage.Sets/src/mage/cards/f/FrontierBivouac.java
+++ b/Mage.Sets/src/mage/cards/f/FrontierBivouac.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class FrontierBivouac extends CardImpl {
+public final class FrontierBivouac extends CardImpl {
public FrontierBivouac(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/FrontierGuide.java b/Mage.Sets/src/mage/cards/f/FrontierGuide.java
index f8fe5450435..441f2a9a56a 100644
--- a/Mage.Sets/src/mage/cards/f/FrontierGuide.java
+++ b/Mage.Sets/src/mage/cards/f/FrontierGuide.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class FrontierGuide extends CardImpl {
+public final class FrontierGuide extends CardImpl {
public FrontierGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
@@ -58,7 +58,7 @@ public class FrontierGuide extends CardImpl {
//{3}{G}, {T}: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new ManaCostsImpl("{3}{G}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/f/FrontierMastodon.java b/Mage.Sets/src/mage/cards/f/FrontierMastodon.java
index c4ec48c6273..aa7d26a15ca 100644
--- a/Mage.Sets/src/mage/cards/f/FrontierMastodon.java
+++ b/Mage.Sets/src/mage/cards/f/FrontierMastodon.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class FrontierMastodon extends CardImpl {
+public final class FrontierMastodon extends CardImpl {
public FrontierMastodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FrontierSiege.java b/Mage.Sets/src/mage/cards/f/FrontierSiege.java
index 8c6c3c6c420..40a90d51a96 100644
--- a/Mage.Sets/src/mage/cards/f/FrontierSiege.java
+++ b/Mage.Sets/src/mage/cards/f/FrontierSiege.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FrontierSiege extends CardImpl {
+public final class FrontierSiege extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with flying");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("a creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/f/FrontlineDevastator.java b/Mage.Sets/src/mage/cards/f/FrontlineDevastator.java
index 8cd9ed4f2cf..c6f435ac550 100644
--- a/Mage.Sets/src/mage/cards/f/FrontlineDevastator.java
+++ b/Mage.Sets/src/mage/cards/f/FrontlineDevastator.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author ciaccona007
*/
-public class FrontlineDevastator extends CardImpl {
+public final class FrontlineDevastator extends CardImpl {
public FrontlineDevastator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FrontlineMedic.java b/Mage.Sets/src/mage/cards/f/FrontlineMedic.java
index be32ec30182..e56ca8f79f8 100644
--- a/Mage.Sets/src/mage/cards/f/FrontlineMedic.java
+++ b/Mage.Sets/src/mage/cards/f/FrontlineMedic.java
@@ -53,7 +53,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class FrontlineMedic extends CardImpl {
+public final class FrontlineMedic extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell with {X} in its mana cost");
diff --git a/Mage.Sets/src/mage/cards/f/FrontlineRebel.java b/Mage.Sets/src/mage/cards/f/FrontlineRebel.java
index 086561af942..5d57317018e 100644
--- a/Mage.Sets/src/mage/cards/f/FrontlineRebel.java
+++ b/Mage.Sets/src/mage/cards/f/FrontlineRebel.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class FrontlineRebel extends CardImpl {
+public final class FrontlineRebel extends CardImpl {
public FrontlineRebel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FrontlineSage.java b/Mage.Sets/src/mage/cards/f/FrontlineSage.java
index 2a583ceab78..70c39cb57d8 100644
--- a/Mage.Sets/src/mage/cards/f/FrontlineSage.java
+++ b/Mage.Sets/src/mage/cards/f/FrontlineSage.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class FrontlineSage extends CardImpl {
+public final class FrontlineSage extends CardImpl {
public FrontlineSage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FrontlineStrategist.java b/Mage.Sets/src/mage/cards/f/FrontlineStrategist.java
index 112b5900dc7..fa8da2569d4 100644
--- a/Mage.Sets/src/mage/cards/f/FrontlineStrategist.java
+++ b/Mage.Sets/src/mage/cards/f/FrontlineStrategist.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author L_J
*/
-public class FrontlineStrategist extends CardImpl {
+public final class FrontlineStrategist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Soldier creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FrostBreath.java b/Mage.Sets/src/mage/cards/f/FrostBreath.java
index 67ec4dd4deb..3b0e285a175 100644
--- a/Mage.Sets/src/mage/cards/f/FrostBreath.java
+++ b/Mage.Sets/src/mage/cards/f/FrostBreath.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class FrostBreath extends CardImpl {
+public final class FrostBreath extends CardImpl {
public FrostBreath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FrostGiant.java b/Mage.Sets/src/mage/cards/f/FrostGiant.java
index b2fb297ccdc..3e7128210a8 100644
--- a/Mage.Sets/src/mage/cards/f/FrostGiant.java
+++ b/Mage.Sets/src/mage/cards/f/FrostGiant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class FrostGiant extends CardImpl {
+public final class FrostGiant extends CardImpl {
public FrostGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FrostLynx.java b/Mage.Sets/src/mage/cards/f/FrostLynx.java
index 9e41f7feaaf..b1120d4f98b 100644
--- a/Mage.Sets/src/mage/cards/f/FrostLynx.java
+++ b/Mage.Sets/src/mage/cards/f/FrostLynx.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FrostLynx extends CardImpl {
+public final class FrostLynx extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/f/FrostMarsh.java b/Mage.Sets/src/mage/cards/f/FrostMarsh.java
index 5bfaa27a22a..4a285769167 100644
--- a/Mage.Sets/src/mage/cards/f/FrostMarsh.java
+++ b/Mage.Sets/src/mage/cards/f/FrostMarsh.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author dustinconrad
*/
-public class FrostMarsh extends CardImpl {
+public final class FrostMarsh extends CardImpl {
public FrostMarsh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/FrostOgre.java b/Mage.Sets/src/mage/cards/f/FrostOgre.java
index d063acfd45e..3c84cfa0054 100644
--- a/Mage.Sets/src/mage/cards/f/FrostOgre.java
+++ b/Mage.Sets/src/mage/cards/f/FrostOgre.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FrostOgre extends CardImpl {
+public final class FrostOgre extends CardImpl {
public FrostOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FrostRaptor.java b/Mage.Sets/src/mage/cards/f/FrostRaptor.java
index 03134e47c53..543edd279b0 100644
--- a/Mage.Sets/src/mage/cards/f/FrostRaptor.java
+++ b/Mage.Sets/src/mage/cards/f/FrostRaptor.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FrostRaptor extends CardImpl {
+public final class FrostRaptor extends CardImpl {
public FrostRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FrostTitan.java b/Mage.Sets/src/mage/cards/f/FrostTitan.java
index 478ea43d374..9d27bd38e7f 100644
--- a/Mage.Sets/src/mage/cards/f/FrostTitan.java
+++ b/Mage.Sets/src/mage/cards/f/FrostTitan.java
@@ -51,7 +51,7 @@ import mage.target.TargetStackObject;
*
* @author BetaSteward_at_googlemail.com
*/
-public class FrostTitan extends CardImpl {
+public final class FrostTitan extends CardImpl {
public FrostTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FrostWalker.java b/Mage.Sets/src/mage/cards/f/FrostWalker.java
index 62472356894..7d2d77065da 100644
--- a/Mage.Sets/src/mage/cards/f/FrostWalker.java
+++ b/Mage.Sets/src/mage/cards/f/FrostWalker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class FrostWalker extends CardImpl {
+public final class FrostWalker extends CardImpl {
public FrostWalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FrostburnWeird.java b/Mage.Sets/src/mage/cards/f/FrostburnWeird.java
index 2ffe19551c4..57b2964d8c4 100644
--- a/Mage.Sets/src/mage/cards/f/FrostburnWeird.java
+++ b/Mage.Sets/src/mage/cards/f/FrostburnWeird.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class FrostburnWeird extends CardImpl {
+public final class FrostburnWeird extends CardImpl {
public FrostburnWeird(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U/R}{U/R}");
diff --git a/Mage.Sets/src/mage/cards/f/Frostling.java b/Mage.Sets/src/mage/cards/f/Frostling.java
index 26ca49a0cdb..d654156f167 100644
--- a/Mage.Sets/src/mage/cards/f/Frostling.java
+++ b/Mage.Sets/src/mage/cards/f/Frostling.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Frostling extends CardImpl {
+public final class Frostling extends CardImpl {
public Frostling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FrostwebSpider.java b/Mage.Sets/src/mage/cards/f/FrostwebSpider.java
index 7fe12014a90..b70a1af4f46 100644
--- a/Mage.Sets/src/mage/cards/f/FrostwebSpider.java
+++ b/Mage.Sets/src/mage/cards/f/FrostwebSpider.java
@@ -53,7 +53,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class FrostwebSpider extends CardImpl {
+public final class FrostwebSpider extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/f/Frostwielder.java b/Mage.Sets/src/mage/cards/f/Frostwielder.java
index 69ef1f827b1..feb9158cf3e 100644
--- a/Mage.Sets/src/mage/cards/f/Frostwielder.java
+++ b/Mage.Sets/src/mage/cards/f/Frostwielder.java
@@ -48,7 +48,7 @@ import mage.watchers.common.DamagedByWatcher;
/**
* @author LevelX
*/
-public class Frostwielder extends CardImpl {
+public final class Frostwielder extends CardImpl {
public Frostwielder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FrostwindInvoker.java b/Mage.Sets/src/mage/cards/f/FrostwindInvoker.java
index 088156fc132..641fed68ab7 100644
--- a/Mage.Sets/src/mage/cards/f/FrostwindInvoker.java
+++ b/Mage.Sets/src/mage/cards/f/FrostwindInvoker.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class FrostwindInvoker extends CardImpl {
+public final class FrostwindInvoker extends CardImpl {
public FrostwindInvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FrozenAether.java b/Mage.Sets/src/mage/cards/f/FrozenAether.java
index 9b99c1e778f..76c458681ae 100644
--- a/Mage.Sets/src/mage/cards/f/FrozenAether.java
+++ b/Mage.Sets/src/mage/cards/f/FrozenAether.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class FrozenAether extends CardImpl {
+public final class FrozenAether extends CardImpl {
public FrozenAether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FrozenShade.java b/Mage.Sets/src/mage/cards/f/FrozenShade.java
index 92b3be3951b..3878829c82d 100644
--- a/Mage.Sets/src/mage/cards/f/FrozenShade.java
+++ b/Mage.Sets/src/mage/cards/f/FrozenShade.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
* @author KholdFuzion
*/
-public class FrozenShade extends CardImpl {
+public final class FrozenShade extends CardImpl {
public FrozenShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FrozenSolid.java b/Mage.Sets/src/mage/cards/f/FrozenSolid.java
index ef8a563a3c6..e9962a6bc95 100644
--- a/Mage.Sets/src/mage/cards/f/FrozenSolid.java
+++ b/Mage.Sets/src/mage/cards/f/FrozenSolid.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FrozenSolid extends CardImpl {
+public final class FrozenSolid extends CardImpl {
public FrozenSolid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FruitOfTheFirstTree.java b/Mage.Sets/src/mage/cards/f/FruitOfTheFirstTree.java
index 294c35f9930..adf3f96c2a8 100644
--- a/Mage.Sets/src/mage/cards/f/FruitOfTheFirstTree.java
+++ b/Mage.Sets/src/mage/cards/f/FruitOfTheFirstTree.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FruitOfTheFirstTree extends CardImpl {
+public final class FruitOfTheFirstTree extends CardImpl {
public FruitOfTheFirstTree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FruitcakeElemental.java b/Mage.Sets/src/mage/cards/f/FruitcakeElemental.java
index faec6104c27..bdcae9c46a9 100644
--- a/Mage.Sets/src/mage/cards/f/FruitcakeElemental.java
+++ b/Mage.Sets/src/mage/cards/f/FruitcakeElemental.java
@@ -57,7 +57,7 @@ import mage.target.TargetPlayer;
*
* @author spjspj
*/
-public class FruitcakeElemental extends CardImpl {
+public final class FruitcakeElemental extends CardImpl {
public FruitcakeElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/Fruition.java b/Mage.Sets/src/mage/cards/f/Fruition.java
index 14729d759a8..3edff64934c 100644
--- a/Mage.Sets/src/mage/cards/f/Fruition.java
+++ b/Mage.Sets/src/mage/cards/f/Fruition.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class Fruition extends CardImpl {
+public final class Fruition extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("for each Forest on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/f/FuelForTheCause.java b/Mage.Sets/src/mage/cards/f/FuelForTheCause.java
index a359662435c..fcba59e082e 100644
--- a/Mage.Sets/src/mage/cards/f/FuelForTheCause.java
+++ b/Mage.Sets/src/mage/cards/f/FuelForTheCause.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class FuelForTheCause extends CardImpl {
+public final class FuelForTheCause extends CardImpl {
public FuelForTheCause (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FugitiveDruid.java b/Mage.Sets/src/mage/cards/f/FugitiveDruid.java
index f1df594318f..48db6a29f25 100644
--- a/Mage.Sets/src/mage/cards/f/FugitiveDruid.java
+++ b/Mage.Sets/src/mage/cards/f/FugitiveDruid.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class FugitiveDruid extends CardImpl {
+public final class FugitiveDruid extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an Aura spell");
diff --git a/Mage.Sets/src/mage/cards/f/FugitiveWizard.java b/Mage.Sets/src/mage/cards/f/FugitiveWizard.java
index 7de16a82039..21905923253 100644
--- a/Mage.Sets/src/mage/cards/f/FugitiveWizard.java
+++ b/Mage.Sets/src/mage/cards/f/FugitiveWizard.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FugitiveWizard extends CardImpl {
+public final class FugitiveWizard extends CardImpl {
public FugitiveWizard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Fugue.java b/Mage.Sets/src/mage/cards/f/Fugue.java
index 50d17d44106..f1c1f0718c4 100644
--- a/Mage.Sets/src/mage/cards/f/Fugue.java
+++ b/Mage.Sets/src/mage/cards/f/Fugue.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class Fugue extends CardImpl {
+public final class Fugue extends CardImpl {
public Fugue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FulfillContract.java b/Mage.Sets/src/mage/cards/f/FulfillContract.java
index b7ae2662ada..5da9344df51 100644
--- a/Mage.Sets/src/mage/cards/f/FulfillContract.java
+++ b/Mage.Sets/src/mage/cards/f/FulfillContract.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class FulfillContract extends CardImpl {
+public final class FulfillContract extends CardImpl {
private static final FilterCreaturePermanent filterBountyCreature = new FilterCreaturePermanent("creature with a bounty counter on it");
private static final FilterControlledCreaturePermanent filterRogueOrHunter = new FilterControlledCreaturePermanent("Rogue or Hunter you control");
diff --git a/Mage.Sets/src/mage/cards/f/FulgentDistraction.java b/Mage.Sets/src/mage/cards/f/FulgentDistraction.java
index f63543c979a..9bac7a5aaf9 100644
--- a/Mage.Sets/src/mage/cards/f/FulgentDistraction.java
+++ b/Mage.Sets/src/mage/cards/f/FulgentDistraction.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author maurer.it_at_gmail.com
*/
-public class FulgentDistraction extends CardImpl {
+public final class FulgentDistraction extends CardImpl {
public FulgentDistraction (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FullMoonsRise.java b/Mage.Sets/src/mage/cards/f/FullMoonsRise.java
index 357a97d4ab1..e3d63e67fda 100644
--- a/Mage.Sets/src/mage/cards/f/FullMoonsRise.java
+++ b/Mage.Sets/src/mage/cards/f/FullMoonsRise.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author nantuko
*/
-public class FullMoonsRise extends CardImpl {
+public final class FullMoonsRise extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FulminatorMage.java b/Mage.Sets/src/mage/cards/f/FulminatorMage.java
index 9a0d5892f7a..4f165e5edc6 100644
--- a/Mage.Sets/src/mage/cards/f/FulminatorMage.java
+++ b/Mage.Sets/src/mage/cards/f/FulminatorMage.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author North
*/
-public class FulminatorMage extends CardImpl {
+public final class FulminatorMage extends CardImpl {
public FulminatorMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B/R}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/f/Fumarole.java b/Mage.Sets/src/mage/cards/f/Fumarole.java
index 69299374ee3..0f4bb6a58a1 100644
--- a/Mage.Sets/src/mage/cards/f/Fumarole.java
+++ b/Mage.Sets/src/mage/cards/f/Fumarole.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class Fumarole extends CardImpl {
+public final class Fumarole extends CardImpl {
public Fumarole(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/Fumble.java b/Mage.Sets/src/mage/cards/f/Fumble.java
new file mode 100644
index 00000000000..f6f8404c302
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/f/Fumble.java
@@ -0,0 +1,126 @@
+/*
+ * 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.f;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.ContinuousEffect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.ReturnToHandTargetEffect;
+import mage.abilities.effects.common.continuous.GainControlTargetEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.filter.StaticFilters;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.Target;
+import mage.target.common.TargetCreaturePermanent;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class Fumble extends CardImpl {
+
+ public Fumble(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
+
+ // Return target creature to its owner's hand. Gain control of all Auras and Equipment that were attached to it, then attach them to another creature.
+ this.getSpellAbility().addEffect(new FumbleEffect());
+ }
+
+ public Fumble(final Fumble card) {
+ super(card);
+ }
+
+ @Override
+ public Fumble copy() {
+ return new Fumble(this);
+ }
+}
+
+class FumbleEffect extends OneShotEffect {
+
+ FumbleEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "return target creature to its owner's hand. "
+ + "Gain control of all Auras and Equipment that were attached to it, "
+ + "then attach them to another creature";
+ }
+
+ FumbleEffect(final FumbleEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public FumbleEffect copy() {
+ return new FumbleEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent permanent = game.getPermanent(source.getSourceId());
+ Player player = game.getPlayer(source.getControllerId());
+ if (player == null || permanent == null) {
+ return false;
+ }
+ List attachments = new ArrayList<>();
+ for (UUID permId : permanent.getAttachments()) {
+ Permanent attachment = game.getPermanent(permId);
+ if (attachment != null) {
+ attachments.add(permanent);
+ }
+ }
+ new ReturnToHandTargetEffect().apply(game, source);
+ Target target = new TargetCreaturePermanent(1, 1, StaticFilters.FILTER_PERMANENT_CREATURE, true);
+ Permanent newCreature = null;
+ if (player.choose(Outcome.BoostCreature, target, source.getSourceId(), game)) {
+ newCreature = game.getPermanent(target.getFirstTarget());
+ }
+ for (Permanent attachment : attachments) {
+ if (!attachment.hasSubtype(SubType.AURA, game) && !attachment.hasSubtype(SubType.EQUIPMENT, game)) {
+ continue;
+ }
+ ContinuousEffect effect = new GainControlTargetEffect(Duration.Custom, true, player.getId());
+ effect.setTargetPointer(new FixedTarget(attachment, game));
+ game.addEffect(effect, source);
+ if (newCreature != null) {
+ attachment.attachTo(newCreature.getId(), game);
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/f/FumeSpitter.java b/Mage.Sets/src/mage/cards/f/FumeSpitter.java
index 3e12c160b40..2acb07fe72e 100644
--- a/Mage.Sets/src/mage/cards/f/FumeSpitter.java
+++ b/Mage.Sets/src/mage/cards/f/FumeSpitter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FumeSpitter extends CardImpl {
+public final class FumeSpitter extends CardImpl {
public FumeSpitter (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/f/Fumigate.java b/Mage.Sets/src/mage/cards/f/Fumigate.java
index f45fac31a24..565494944c8 100644
--- a/Mage.Sets/src/mage/cards/f/Fumigate.java
+++ b/Mage.Sets/src/mage/cards/f/Fumigate.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class Fumigate extends CardImpl {
+public final class Fumigate extends CardImpl {
public Fumigate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FumikoTheLowblood.java b/Mage.Sets/src/mage/cards/f/FumikoTheLowblood.java
index f15a50256b6..20f2f75b1cd 100644
--- a/Mage.Sets/src/mage/cards/f/FumikoTheLowblood.java
+++ b/Mage.Sets/src/mage/cards/f/FumikoTheLowblood.java
@@ -48,7 +48,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author LevelX2
*/
-public class FumikoTheLowblood extends CardImpl {
+public final class FumikoTheLowblood extends CardImpl {
public FumikoTheLowblood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FuneralCharm.java b/Mage.Sets/src/mage/cards/f/FuneralCharm.java
index 348c382e459..3fc1561c8ab 100644
--- a/Mage.Sets/src/mage/cards/f/FuneralCharm.java
+++ b/Mage.Sets/src/mage/cards/f/FuneralCharm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class FuneralCharm extends CardImpl {
+public final class FuneralCharm extends CardImpl {
public FuneralCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FuneralMarch.java b/Mage.Sets/src/mage/cards/f/FuneralMarch.java
index 0a772799c10..4b0aa4d4a24 100644
--- a/Mage.Sets/src/mage/cards/f/FuneralMarch.java
+++ b/Mage.Sets/src/mage/cards/f/FuneralMarch.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class FuneralMarch extends CardImpl {
+public final class FuneralMarch extends CardImpl {
public FuneralMarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FuneralPyre.java b/Mage.Sets/src/mage/cards/f/FuneralPyre.java
index 133ec1de646..a91154db913 100644
--- a/Mage.Sets/src/mage/cards/f/FuneralPyre.java
+++ b/Mage.Sets/src/mage/cards/f/FuneralPyre.java
@@ -47,7 +47,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class FuneralPyre extends CardImpl {
+public final class FuneralPyre extends CardImpl {
public FuneralPyre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/f/FungalBehemoth.java b/Mage.Sets/src/mage/cards/f/FungalBehemoth.java
index 2b3ad70f4b7..14f77c8aeea 100644
--- a/Mage.Sets/src/mage/cards/f/FungalBehemoth.java
+++ b/Mage.Sets/src/mage/cards/f/FungalBehemoth.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FungalBehemoth extends CardImpl {
+public final class FungalBehemoth extends CardImpl {
public FungalBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FungalBloom.java b/Mage.Sets/src/mage/cards/f/FungalBloom.java
index 3a98571afc9..cbab2c28a81 100644
--- a/Mage.Sets/src/mage/cards/f/FungalBloom.java
+++ b/Mage.Sets/src/mage/cards/f/FungalBloom.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class FungalBloom extends CardImpl {
+public final class FungalBloom extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Fungus");
diff --git a/Mage.Sets/src/mage/cards/f/FungalInfection.java b/Mage.Sets/src/mage/cards/f/FungalInfection.java
index 814e409cec0..d4734136ea3 100644
--- a/Mage.Sets/src/mage/cards/f/FungalInfection.java
+++ b/Mage.Sets/src/mage/cards/f/FungalInfection.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class FungalInfection extends CardImpl {
+public final class FungalInfection extends CardImpl {
public FungalInfection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/f/FungalPlots.java b/Mage.Sets/src/mage/cards/f/FungalPlots.java
index 211627522f4..5872f8d535d 100644
--- a/Mage.Sets/src/mage/cards/f/FungalPlots.java
+++ b/Mage.Sets/src/mage/cards/f/FungalPlots.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class FungalPlots extends CardImpl {
+public final class FungalPlots extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a creature card from your graveyard");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("two Saprolings");
diff --git a/Mage.Sets/src/mage/cards/f/FungalReaches.java b/Mage.Sets/src/mage/cards/f/FungalReaches.java
index 783c9909fa8..d5ceffab0b6 100644
--- a/Mage.Sets/src/mage/cards/f/FungalReaches.java
+++ b/Mage.Sets/src/mage/cards/f/FungalReaches.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class FungalReaches extends CardImpl {
+public final class FungalReaches extends CardImpl {
public FungalReaches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/f/FungalShambler.java b/Mage.Sets/src/mage/cards/f/FungalShambler.java
index 6688f7d5d29..3ff58efc250 100644
--- a/Mage.Sets/src/mage/cards/f/FungalShambler.java
+++ b/Mage.Sets/src/mage/cards/f/FungalShambler.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class FungalShambler extends CardImpl {
+public final class FungalShambler extends CardImpl {
public FungalShambler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FungalSprouting.java b/Mage.Sets/src/mage/cards/f/FungalSprouting.java
index 72e2786ec8c..9d66cf326f5 100644
--- a/Mage.Sets/src/mage/cards/f/FungalSprouting.java
+++ b/Mage.Sets/src/mage/cards/f/FungalSprouting.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author jeffwadsworth
*/
-public class FungalSprouting extends CardImpl {
+public final class FungalSprouting extends CardImpl {
public FungalSprouting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FungusSliver.java b/Mage.Sets/src/mage/cards/f/FungusSliver.java
index d649a091fba..12b3c138817 100644
--- a/Mage.Sets/src/mage/cards/f/FungusSliver.java
+++ b/Mage.Sets/src/mage/cards/f/FungusSliver.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author emerald000
*/
-public class FungusSliver extends CardImpl {
+public final class FungusSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/f/Fungusaur.java b/Mage.Sets/src/mage/cards/f/Fungusaur.java
index 9b8690c4438..ad56fc99c9d 100644
--- a/Mage.Sets/src/mage/cards/f/Fungusaur.java
+++ b/Mage.Sets/src/mage/cards/f/Fungusaur.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class Fungusaur extends CardImpl {
+public final class Fungusaur extends CardImpl {
public Fungusaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FuriousAssault.java b/Mage.Sets/src/mage/cards/f/FuriousAssault.java
index 6346206d3a7..599d2daee94 100644
--- a/Mage.Sets/src/mage/cards/f/FuriousAssault.java
+++ b/Mage.Sets/src/mage/cards/f/FuriousAssault.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Galatolol
*/
-public class FuriousAssault extends CardImpl {
+public final class FuriousAssault extends CardImpl {
public FuriousAssault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FuriousReprisal.java b/Mage.Sets/src/mage/cards/f/FuriousReprisal.java
index f791cda488b..a62a6291a84 100644
--- a/Mage.Sets/src/mage/cards/f/FuriousReprisal.java
+++ b/Mage.Sets/src/mage/cards/f/FuriousReprisal.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class FuriousReprisal extends CardImpl {
+public final class FuriousReprisal extends CardImpl {
public FuriousReprisal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FuriousResistance.java b/Mage.Sets/src/mage/cards/f/FuriousResistance.java
index 83f84f37e57..8ee6543604d 100644
--- a/Mage.Sets/src/mage/cards/f/FuriousResistance.java
+++ b/Mage.Sets/src/mage/cards/f/FuriousResistance.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class FuriousResistance extends CardImpl {
+public final class FuriousResistance extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterBlockingCreature("blocking creature");
diff --git a/Mage.Sets/src/mage/cards/f/FurnaceBrood.java b/Mage.Sets/src/mage/cards/f/FurnaceBrood.java
index ae4f5f39106..6f08c8f2fbb 100644
--- a/Mage.Sets/src/mage/cards/f/FurnaceBrood.java
+++ b/Mage.Sets/src/mage/cards/f/FurnaceBrood.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class FurnaceBrood extends CardImpl {
+public final class FurnaceBrood extends CardImpl {
public FurnaceBrood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FurnaceCelebration.java b/Mage.Sets/src/mage/cards/f/FurnaceCelebration.java
index f422b3be389..1a5b3f32072 100644
--- a/Mage.Sets/src/mage/cards/f/FurnaceCelebration.java
+++ b/Mage.Sets/src/mage/cards/f/FurnaceCelebration.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class FurnaceCelebration extends CardImpl {
+public final class FurnaceCelebration extends CardImpl {
public FurnaceCelebration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FurnaceDragon.java b/Mage.Sets/src/mage/cards/f/FurnaceDragon.java
index ef70af3df6d..4464b4c36d8 100644
--- a/Mage.Sets/src/mage/cards/f/FurnaceDragon.java
+++ b/Mage.Sets/src/mage/cards/f/FurnaceDragon.java
@@ -47,7 +47,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author fireshoes
*/
-public class FurnaceDragon extends CardImpl {
+public final class FurnaceDragon extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts");
diff --git a/Mage.Sets/src/mage/cards/f/FurnaceOfRath.java b/Mage.Sets/src/mage/cards/f/FurnaceOfRath.java
index bb290fe4b06..adef7fba72d 100644
--- a/Mage.Sets/src/mage/cards/f/FurnaceOfRath.java
+++ b/Mage.Sets/src/mage/cards/f/FurnaceOfRath.java
@@ -46,7 +46,7 @@ import mage.util.CardUtil;
* @author jeffwadsworth
*
*/
-public class FurnaceOfRath extends CardImpl {
+public final class FurnaceOfRath extends CardImpl {
public FurnaceOfRath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FurnaceScamp.java b/Mage.Sets/src/mage/cards/f/FurnaceScamp.java
index dbe118d5b9a..2bce92d753d 100644
--- a/Mage.Sets/src/mage/cards/f/FurnaceScamp.java
+++ b/Mage.Sets/src/mage/cards/f/FurnaceScamp.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class FurnaceScamp extends CardImpl {
+public final class FurnaceScamp extends CardImpl {
public FurnaceScamp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FurnaceSpirit.java b/Mage.Sets/src/mage/cards/f/FurnaceSpirit.java
index 51ddbd3b099..c76b42e25bb 100644
--- a/Mage.Sets/src/mage/cards/f/FurnaceSpirit.java
+++ b/Mage.Sets/src/mage/cards/f/FurnaceSpirit.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class FurnaceSpirit extends CardImpl {
+public final class FurnaceSpirit extends CardImpl {
public FurnaceSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FurnaceWhelp.java b/Mage.Sets/src/mage/cards/f/FurnaceWhelp.java
index 4442077b8d5..a4c9b3a9dbc 100644
--- a/Mage.Sets/src/mage/cards/f/FurnaceWhelp.java
+++ b/Mage.Sets/src/mage/cards/f/FurnaceWhelp.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class FurnaceWhelp extends CardImpl {
+public final class FurnaceWhelp extends CardImpl {
public FurnaceWhelp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FurorOfTheBitten.java b/Mage.Sets/src/mage/cards/f/FurorOfTheBitten.java
index cc60809ae1a..5a18fc1f43f 100644
--- a/Mage.Sets/src/mage/cards/f/FurorOfTheBitten.java
+++ b/Mage.Sets/src/mage/cards/f/FurorOfTheBitten.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class FurorOfTheBitten extends CardImpl {
+public final class FurorOfTheBitten extends CardImpl {
public FurorOfTheBitten(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FurtiveHomunculus.java b/Mage.Sets/src/mage/cards/f/FurtiveHomunculus.java
index de4abdb0944..a4b96b5a1af 100644
--- a/Mage.Sets/src/mage/cards/f/FurtiveHomunculus.java
+++ b/Mage.Sets/src/mage/cards/f/FurtiveHomunculus.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class FurtiveHomunculus extends CardImpl {
+public final class FurtiveHomunculus extends CardImpl {
public FurtiveHomunculus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/FuryCharm.java b/Mage.Sets/src/mage/cards/f/FuryCharm.java
index e1b5aec3663..0de63e0d1f0 100644
--- a/Mage.Sets/src/mage/cards/f/FuryCharm.java
+++ b/Mage.Sets/src/mage/cards/f/FuryCharm.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetPermanentOrSuspendedCard;
*
* @author LevelX2
*/
-public class FuryCharm extends CardImpl {
+public final class FuryCharm extends CardImpl {
private static final FilterCard filter = new FilterCard("suspended card");
static {
diff --git a/Mage.Sets/src/mage/cards/f/FuryOfTheHorde.java b/Mage.Sets/src/mage/cards/f/FuryOfTheHorde.java
index febebc4f2c4..babcfc88106 100644
--- a/Mage.Sets/src/mage/cards/f/FuryOfTheHorde.java
+++ b/Mage.Sets/src/mage/cards/f/FuryOfTheHorde.java
@@ -45,7 +45,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author LevelX2
*/
-public class FuryOfTheHorde extends CardImpl {
+public final class FuryOfTheHorde extends CardImpl {
private static final FilterCard filter = new FilterCard("two red cards");
diff --git a/Mage.Sets/src/mage/cards/f/FurySliver.java b/Mage.Sets/src/mage/cards/f/FurySliver.java
index 558be9ecc33..aeb430485b6 100644
--- a/Mage.Sets/src/mage/cards/f/FurySliver.java
+++ b/Mage.Sets/src/mage/cards/f/FurySliver.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author Sir-Speshkitty
*/
-public class FurySliver extends CardImpl {
+public final class FurySliver extends CardImpl {
public FurySliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FurybladeVampire.java b/Mage.Sets/src/mage/cards/f/FurybladeVampire.java
index 2c4ceb3d01b..385ef968d64 100644
--- a/Mage.Sets/src/mage/cards/f/FurybladeVampire.java
+++ b/Mage.Sets/src/mage/cards/f/FurybladeVampire.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class FurybladeVampire extends CardImpl {
+public final class FurybladeVampire extends CardImpl {
public FurybladeVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FurybornHellkite.java b/Mage.Sets/src/mage/cards/f/FurybornHellkite.java
index bafafe3623c..d600ba06b1a 100644
--- a/Mage.Sets/src/mage/cards/f/FurybornHellkite.java
+++ b/Mage.Sets/src/mage/cards/f/FurybornHellkite.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class FurybornHellkite extends CardImpl {
+public final class FurybornHellkite extends CardImpl {
public FurybornHellkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FurystokeGiant.java b/Mage.Sets/src/mage/cards/f/FurystokeGiant.java
index f196f4920dc..747c81cdf9c 100644
--- a/Mage.Sets/src/mage/cards/f/FurystokeGiant.java
+++ b/Mage.Sets/src/mage/cards/f/FurystokeGiant.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class FurystokeGiant extends CardImpl {
+public final class FurystokeGiant extends CardImpl {
public FurystokeGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/f/FusionElemental.java b/Mage.Sets/src/mage/cards/f/FusionElemental.java
index 970c3aac0f3..c3e46e328b0 100644
--- a/Mage.Sets/src/mage/cards/f/FusionElemental.java
+++ b/Mage.Sets/src/mage/cards/f/FusionElemental.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class FusionElemental extends CardImpl {
+public final class FusionElemental extends CardImpl {
public FusionElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FutureSight.java b/Mage.Sets/src/mage/cards/f/FutureSight.java
index 75c08ad8349..d1e7965fcdd 100644
--- a/Mage.Sets/src/mage/cards/f/FutureSight.java
+++ b/Mage.Sets/src/mage/cards/f/FutureSight.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class FutureSight extends CardImpl {
+public final class FutureSight extends CardImpl {
public FutureSight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/f/Fylamarid.java b/Mage.Sets/src/mage/cards/f/Fylamarid.java
index ca9d037edf9..09f0e10f7ad 100644
--- a/Mage.Sets/src/mage/cards/f/Fylamarid.java
+++ b/Mage.Sets/src/mage/cards/f/Fylamarid.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Fylamarid extends CardImpl {
+public final class Fylamarid extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creatures");
diff --git a/Mage.Sets/src/mage/cards/f/FyndhornBow.java b/Mage.Sets/src/mage/cards/f/FyndhornBow.java
index c0a57072b9a..04e48e12eff 100644
--- a/Mage.Sets/src/mage/cards/f/FyndhornBow.java
+++ b/Mage.Sets/src/mage/cards/f/FyndhornBow.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class FyndhornBow extends CardImpl {
+public final class FyndhornBow extends CardImpl {
public FyndhornBow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/f/FyndhornBrownie.java b/Mage.Sets/src/mage/cards/f/FyndhornBrownie.java
index dbb4c644454..bff450dbdfa 100644
--- a/Mage.Sets/src/mage/cards/f/FyndhornBrownie.java
+++ b/Mage.Sets/src/mage/cards/f/FyndhornBrownie.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class FyndhornBrownie extends CardImpl {
+public final class FyndhornBrownie extends CardImpl {
public FyndhornBrownie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FyndhornElder.java b/Mage.Sets/src/mage/cards/f/FyndhornElder.java
index 8a0e4d36acb..2a2ee87b4a3 100644
--- a/Mage.Sets/src/mage/cards/f/FyndhornElder.java
+++ b/Mage.Sets/src/mage/cards/f/FyndhornElder.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class FyndhornElder extends CardImpl {
+public final class FyndhornElder extends CardImpl {
public FyndhornElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FyndhornElves.java b/Mage.Sets/src/mage/cards/f/FyndhornElves.java
index 763c77cef1c..51d764ae7b3 100644
--- a/Mage.Sets/src/mage/cards/f/FyndhornElves.java
+++ b/Mage.Sets/src/mage/cards/f/FyndhornElves.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class FyndhornElves extends CardImpl {
+public final class FyndhornElves extends CardImpl {
public FyndhornElves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/f/FyndhornPollen.java b/Mage.Sets/src/mage/cards/f/FyndhornPollen.java
index df43a5cd5c1..4afde82fe80 100644
--- a/Mage.Sets/src/mage/cards/f/FyndhornPollen.java
+++ b/Mage.Sets/src/mage/cards/f/FyndhornPollen.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author TheElk801
*/
-public class FyndhornPollen extends CardImpl {
+public final class FyndhornPollen extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("All creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GOTOJAIL.java b/Mage.Sets/src/mage/cards/g/GOTOJAIL.java
index 24f03f27b61..1477b9204c6 100644
--- a/Mage.Sets/src/mage/cards/g/GOTOJAIL.java
+++ b/Mage.Sets/src/mage/cards/g/GOTOJAIL.java
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author spjspj
*/
-public class GOTOJAIL extends CardImpl {
+public final class GOTOJAIL extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/g/GabrielAngelfire.java b/Mage.Sets/src/mage/cards/g/GabrielAngelfire.java
index af64d89d01a..df43fdacf01 100644
--- a/Mage.Sets/src/mage/cards/g/GabrielAngelfire.java
+++ b/Mage.Sets/src/mage/cards/g/GabrielAngelfire.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author Styxo & L_J
*/
-public class GabrielAngelfire extends CardImpl {
+public final class GabrielAngelfire extends CardImpl {
public GabrielAngelfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GaddockTeeg.java b/Mage.Sets/src/mage/cards/g/GaddockTeeg.java
index 5aeb4527399..8d108ded0ac 100644
--- a/Mage.Sets/src/mage/cards/g/GaddockTeeg.java
+++ b/Mage.Sets/src/mage/cards/g/GaddockTeeg.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent;
*
* @author Plopman
*/
-public class GaddockTeeg extends CardImpl {
+public final class GaddockTeeg extends CardImpl {
public GaddockTeeg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasAnthem.java b/Mage.Sets/src/mage/cards/g/GaeasAnthem.java
index 602cd09ab91..904ece0ffbb 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasAnthem.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasAnthem.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author dustinconrad
*/
-public class GaeasAnthem extends CardImpl {
+public final class GaeasAnthem extends CardImpl {
public GaeasAnthem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasAvenger.java b/Mage.Sets/src/mage/cards/g/GaeasAvenger.java
index 99f6c196d53..22a01db586a 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasAvenger.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasAvenger.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author MarcoMarin
*/
-public class GaeasAvenger extends CardImpl {
+public final class GaeasAvenger extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifacts opponent control");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasBlessing.java b/Mage.Sets/src/mage/cards/g/GaeasBlessing.java
index b8aca7aab13..8d9ed9cb299 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasBlessing.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasBlessing.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class GaeasBlessing extends CardImpl {
+public final class GaeasBlessing extends CardImpl {
public GaeasBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasBounty.java b/Mage.Sets/src/mage/cards/g/GaeasBounty.java
index 6e5e7a488e6..b1167190e1a 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasBounty.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasBounty.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author hanasu
*/
-public class GaeasBounty extends CardImpl {
+public final class GaeasBounty extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("Forest");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasCradle.java b/Mage.Sets/src/mage/cards/g/GaeasCradle.java
index cf3cae3b657..90792131637 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasCradle.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasCradle.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Backfir3
*/
-public class GaeasCradle extends CardImpl {
+public final class GaeasCradle extends CardImpl {
public GaeasCradle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasEmbrace.java b/Mage.Sets/src/mage/cards/g/GaeasEmbrace.java
index cbcfce04e32..a3e93b5a1d0 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasEmbrace.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasEmbrace.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Backfir3
*/
-public class GaeasEmbrace extends CardImpl {
+public final class GaeasEmbrace extends CardImpl {
public GaeasEmbrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasHerald.java b/Mage.Sets/src/mage/cards/g/GaeasHerald.java
index 5292518c55c..df5c101d66c 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasHerald.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasHerald.java
@@ -47,7 +47,7 @@ import mage.game.stack.Spell;
*
* @author Plopman
*/
-public class GaeasHerald extends CardImpl {
+public final class GaeasHerald extends CardImpl {
public GaeasHerald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasLiege.java b/Mage.Sets/src/mage/cards/g/GaeasLiege.java
index 95b957fbf34..1570c51661f 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasLiege.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasLiege.java
@@ -60,7 +60,7 @@ import java.util.UUID;
*
* @author anonymous
*/
-public class GaeasLiege extends CardImpl {
+public final class GaeasLiege extends CardImpl {
final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasMight.java b/Mage.Sets/src/mage/cards/g/GaeasMight.java
index 52daaeeabc2..b5ff31a0b79 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasMight.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasMight.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class GaeasMight extends CardImpl {
+public final class GaeasMight extends CardImpl {
public GaeasMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasProtector.java b/Mage.Sets/src/mage/cards/g/GaeasProtector.java
index c277902f545..df6bae3a9a7 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasProtector.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasProtector.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class GaeasProtector extends CardImpl {
+public final class GaeasProtector extends CardImpl {
public GaeasProtector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasRevenge.java b/Mage.Sets/src/mage/cards/g/GaeasRevenge.java
index 48d02976a4f..c2affef8a59 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasRevenge.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasRevenge.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GaeasRevenge extends CardImpl {
+public final class GaeasRevenge extends CardImpl {
private static final FilterObject filter = new FilterStackObject("nongreen spells or abilities from nongreen sources");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasSkyfolk.java b/Mage.Sets/src/mage/cards/g/GaeasSkyfolk.java
index b45d1b4ceaf..b9124934ed0 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasSkyfolk.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasSkyfolk.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GaeasSkyfolk extends CardImpl {
+public final class GaeasSkyfolk extends CardImpl {
public GaeasSkyfolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GaeasTouch.java b/Mage.Sets/src/mage/cards/g/GaeasTouch.java
index f95fc48d67d..5c1a69cf6df 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasTouch.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasTouch.java
@@ -29,36 +29,33 @@ package mage.cards.g;
import java.util.UUID;
import mage.Mana;
-import mage.abilities.Ability;
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
-import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.mana.SimpleManaAbility;
-import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.FilterCard;
-import mage.filter.predicate.Predicates;
-import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.filter.predicate.mageobject.SupertypePredicate;
-import mage.game.Game;
-import mage.players.Player;
-import mage.target.common.TargetCardInHand;
/**
*
* @author spjspj
*/
-public class GaeasTouch extends CardImpl {
+public final class GaeasTouch extends CardImpl {
public GaeasTouch(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}{G}");
// You may put a basic Forest card from your hand onto the battlefield. Activate this ability only any time you could cast a sorcery and only once each turn.
- LimitedTimesPerTurnActivatedAbility ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new PutBasicForestOnBattlefieldEffect(), new GenericManaCost(0), 1);
+ FilterCard filter = new FilterCard("basic Forest card");
+ filter.add(new SupertypePredicate(SuperType.BASIC));
+ filter.add(new SubtypePredicate(SubType.FOREST));
+ LimitedTimesPerTurnActivatedAbility ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD,
+ new PutCardFromHandOntoBattlefieldEffect(filter), new GenericManaCost(0), 1);
ability.setTiming(TimingRule.SORCERY);
addAbility(ability);
@@ -75,47 +72,3 @@ public class GaeasTouch extends CardImpl {
return new GaeasTouch(this);
}
}
-
-class PutBasicForestOnBattlefieldEffect extends OneShotEffect {
-
- private static final FilterCard filter = new FilterCard("basic Forest card");
-
- static {
- filter.add(Predicates.and(new CardTypePredicate(CardType.LAND), new SupertypePredicate(SuperType.BASIC)));
- filter.add(new SubtypePredicate(SubType.FOREST));
- }
-
- private static final String choiceText = "Put a basic Forest card from your hand onto the battlefield?";
-
- public PutBasicForestOnBattlefieldEffect() {
- super(Outcome.PutLandInPlay);
- this.staticText = "put a basic Forest card from your hand onto the battlefield";
- }
-
- public PutBasicForestOnBattlefieldEffect(final PutBasicForestOnBattlefieldEffect effect) {
- super(effect);
- }
-
- @Override
- public PutBasicForestOnBattlefieldEffect copy() {
- return new PutBasicForestOnBattlefieldEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- if (player == null || !player.chooseUse(Outcome.PutLandInPlay, choiceText, source, game)) {
- return false;
- }
-
- TargetCardInHand target = new TargetCardInHand(filter);
- if (player.choose(Outcome.PutLandInPlay, target, source.getSourceId(), game)) {
- Card card = game.getCard(target.getFirstTarget());
- if (card != null) {
- card.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), source.getControllerId());
- return true;
- }
- }
- return false;
- }
-}
diff --git a/Mage.Sets/src/mage/cards/g/GahijiHonoredOne.java b/Mage.Sets/src/mage/cards/g/GahijiHonoredOne.java
index 2ee393cf1a1..72ff9ce800e 100644
--- a/Mage.Sets/src/mage/cards/g/GahijiHonoredOne.java
+++ b/Mage.Sets/src/mage/cards/g/GahijiHonoredOne.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class GahijiHonoredOne extends CardImpl {
+public final class GahijiHonoredOne extends CardImpl {
public GahijiHonoredOne(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/Gainsay.java b/Mage.Sets/src/mage/cards/g/Gainsay.java
index 47e1ee6ad1e..f9c34385ac0 100644
--- a/Mage.Sets/src/mage/cards/g/Gainsay.java
+++ b/Mage.Sets/src/mage/cards/g/Gainsay.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Gainsay extends CardImpl {
+public final class Gainsay extends CardImpl {
private static final FilterSpell filter = new FilterSpell("blue spell");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GaleForce.java b/Mage.Sets/src/mage/cards/g/GaleForce.java
index 8bfe89ac94e..950327f594c 100644
--- a/Mage.Sets/src/mage/cards/g/GaleForce.java
+++ b/Mage.Sets/src/mage/cards/g/GaleForce.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
/**
* @author Loki
*/
-public class GaleForce extends CardImpl {
+public final class GaleForce extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/g/GalecasterColossus.java b/Mage.Sets/src/mage/cards/g/GalecasterColossus.java
index acdd3f8cdfe..f2140586986 100644
--- a/Mage.Sets/src/mage/cards/g/GalecasterColossus.java
+++ b/Mage.Sets/src/mage/cards/g/GalecasterColossus.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author TheElk801
*/
-public class GalecasterColossus extends CardImpl {
+public final class GalecasterColossus extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanent you don't control");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("untapped Wizard you control");
diff --git a/Mage.Sets/src/mage/cards/g/GalepowderMage.java b/Mage.Sets/src/mage/cards/g/GalepowderMage.java
index e4fdf235c61..04b035a44b2 100644
--- a/Mage.Sets/src/mage/cards/g/GalepowderMage.java
+++ b/Mage.Sets/src/mage/cards/g/GalepowderMage.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class GalepowderMage extends CardImpl {
+public final class GalepowderMage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/g/GaleriderSliver.java b/Mage.Sets/src/mage/cards/g/GaleriderSliver.java
index 98d21292649..04b0a0069b5 100644
--- a/Mage.Sets/src/mage/cards/g/GaleriderSliver.java
+++ b/Mage.Sets/src/mage/cards/g/GaleriderSliver.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class GaleriderSliver extends CardImpl {
+public final class GaleriderSliver extends CardImpl {
public GaleriderSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/g/Galestrike.java b/Mage.Sets/src/mage/cards/g/Galestrike.java
index fa60d8b6650..1595094818c 100644
--- a/Mage.Sets/src/mage/cards/g/Galestrike.java
+++ b/Mage.Sets/src/mage/cards/g/Galestrike.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class Galestrike extends CardImpl {
+public final class Galestrike extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/g/GalinasKnight.java b/Mage.Sets/src/mage/cards/g/GalinasKnight.java
index 5026f38484d..3b1872a241a 100644
--- a/Mage.Sets/src/mage/cards/g/GalinasKnight.java
+++ b/Mage.Sets/src/mage/cards/g/GalinasKnight.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author michael.napoleon@gmail.com
*/
-public class GalinasKnight extends CardImpl {
+public final class GalinasKnight extends CardImpl {
public GalinasKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/Gallantry.java b/Mage.Sets/src/mage/cards/g/Gallantry.java
index 49ca1000172..456c74e1cf3 100644
--- a/Mage.Sets/src/mage/cards/g/Gallantry.java
+++ b/Mage.Sets/src/mage/cards/g/Gallantry.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Gallantry extends CardImpl {
+public final class Gallantry extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterBlockingCreature("blocking creature");
diff --git a/Mage.Sets/src/mage/cards/g/Gallowbraid.java b/Mage.Sets/src/mage/cards/g/Gallowbraid.java
index b5d195f94d8..9f5d1bb31d3 100644
--- a/Mage.Sets/src/mage/cards/g/Gallowbraid.java
+++ b/Mage.Sets/src/mage/cards/g/Gallowbraid.java
@@ -42,7 +42,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class Gallowbraid extends CardImpl {
+public final class Gallowbraid extends CardImpl {
public Gallowbraid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.java b/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.java
index cba413e08ec..5d04bb1dc01 100644
--- a/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.java
+++ b/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author noxx
*/
-public class GallowsAtWillowHill extends CardImpl {
+public final class GallowsAtWillowHill extends CardImpl {
private static final FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Human you control");
diff --git a/Mage.Sets/src/mage/cards/g/GallowsWarden.java b/Mage.Sets/src/mage/cards/g/GallowsWarden.java
index ea7a2e7c759..23dfa595c35 100644
--- a/Mage.Sets/src/mage/cards/g/GallowsWarden.java
+++ b/Mage.Sets/src/mage/cards/g/GallowsWarden.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author nantuko
*/
-public class GallowsWarden extends CardImpl {
+public final class GallowsWarden extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Spirit creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GalvanicAlchemist.java b/Mage.Sets/src/mage/cards/g/GalvanicAlchemist.java
index e0005de091f..3c08e5fb3a1 100644
--- a/Mage.Sets/src/mage/cards/g/GalvanicAlchemist.java
+++ b/Mage.Sets/src/mage/cards/g/GalvanicAlchemist.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class GalvanicAlchemist extends CardImpl {
+public final class GalvanicAlchemist extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, each of those creatures has \"{2}{U}: Untap this creature.\"";
diff --git a/Mage.Sets/src/mage/cards/g/GalvanicArc.java b/Mage.Sets/src/mage/cards/g/GalvanicArc.java
index d15d0e6558e..3ecf50e7a66 100644
--- a/Mage.Sets/src/mage/cards/g/GalvanicArc.java
+++ b/Mage.Sets/src/mage/cards/g/GalvanicArc.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class GalvanicArc extends CardImpl {
+public final class GalvanicArc extends CardImpl {
public GalvanicArc(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GalvanicBlast.java b/Mage.Sets/src/mage/cards/g/GalvanicBlast.java
index ce192f07099..d51c7cc4ffb 100644
--- a/Mage.Sets/src/mage/cards/g/GalvanicBlast.java
+++ b/Mage.Sets/src/mage/cards/g/GalvanicBlast.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class GalvanicBlast extends CardImpl {
+public final class GalvanicBlast extends CardImpl {
private static final String effectText = "{this} deals 2 damage to anytarget.
Metalcraft - {this} deals 4 damage to that permanent or player instead if you control three or more artifacts";
diff --git a/Mage.Sets/src/mage/cards/g/GalvanicBombardment.java b/Mage.Sets/src/mage/cards/g/GalvanicBombardment.java
index a6cf6f2a74c..fac6f38eb6b 100644
--- a/Mage.Sets/src/mage/cards/g/GalvanicBombardment.java
+++ b/Mage.Sets/src/mage/cards/g/GalvanicBombardment.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GalvanicBombardment extends CardImpl {
+public final class GalvanicBombardment extends CardImpl {
private static final FilterCard filter = new FilterCard("2 plus the number of cards named Galvanic Bombardment");
diff --git a/Mage.Sets/src/mage/cards/g/GalvanicJuggernaut.java b/Mage.Sets/src/mage/cards/g/GalvanicJuggernaut.java
index f2a696e81ab..af4fc250d18 100644
--- a/Mage.Sets/src/mage/cards/g/GalvanicJuggernaut.java
+++ b/Mage.Sets/src/mage/cards/g/GalvanicJuggernaut.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class GalvanicJuggernaut extends CardImpl {
+public final class GalvanicJuggernaut extends CardImpl {
public GalvanicJuggernaut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GalvanicKey.java b/Mage.Sets/src/mage/cards/g/GalvanicKey.java
index 093eb5349ca..7e4a1fd855e 100644
--- a/Mage.Sets/src/mage/cards/g/GalvanicKey.java
+++ b/Mage.Sets/src/mage/cards/g/GalvanicKey.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class GalvanicKey extends CardImpl {
+public final class GalvanicKey extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/g/Galvanoth.java b/Mage.Sets/src/mage/cards/g/Galvanoth.java
index a8f996d0e40..10bed5a6c1e 100644
--- a/Mage.Sets/src/mage/cards/g/Galvanoth.java
+++ b/Mage.Sets/src/mage/cards/g/Galvanoth.java
@@ -29,6 +29,7 @@ package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -43,7 +44,7 @@ import mage.players.Player;
/**
* @author North
*/
-public class Galvanoth extends CardImpl {
+public final class Galvanoth extends CardImpl {
public Galvanoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
@@ -86,7 +87,7 @@ class GalvanothEffect extends OneShotEffect {
controller.lookAtCards(source, null, new CardsImpl(card), game);
if (card.isInstant() || card.isSorcery()) {
if (controller.chooseUse(Outcome.PlayForFree, "Cast " + card.getName() + " without paying its mana cost?", source, game)) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/g/Gamble.java b/Mage.Sets/src/mage/cards/g/Gamble.java
index d81e3d673df..947276bed11 100644
--- a/Mage.Sets/src/mage/cards/g/Gamble.java
+++ b/Mage.Sets/src/mage/cards/g/Gamble.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class Gamble extends CardImpl {
+public final class Gamble extends CardImpl {
public Gamble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GameOfChaos.java b/Mage.Sets/src/mage/cards/g/GameOfChaos.java
index 0a9de43fcb0..10fbf7804af 100644
--- a/Mage.Sets/src/mage/cards/g/GameOfChaos.java
+++ b/Mage.Sets/src/mage/cards/g/GameOfChaos.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetOpponent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class GameOfChaos extends CardImpl {
+public final class GameOfChaos extends CardImpl {
public GameOfChaos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GamePlan.java b/Mage.Sets/src/mage/cards/g/GamePlan.java
new file mode 100644
index 00000000000..1db071390c4
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/g/GamePlan.java
@@ -0,0 +1,68 @@
+/*
+ * 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.abilities.effects.Effect;
+import mage.abilities.effects.common.DrawCardAllEffect;
+import mage.abilities.effects.common.ExileSpellEffect;
+import mage.abilities.effects.common.ShuffleHandGraveyardAllEffect;
+import mage.abilities.keyword.AssistAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class GamePlan extends CardImpl {
+
+ public GamePlan(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}");
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // Each player shuffles their hand and graveyard into their library, then draws seven cards. Exile Game Plan.
+ this.getSpellAbility().addEffect(new ShuffleHandGraveyardAllEffect());
+ Effect effect = new DrawCardAllEffect(7);
+ effect.setText(", then draws seven cards");
+ this.getSpellAbility().addEffect(effect);
+ this.getSpellAbility().addEffect(ExileSpellEffect.getInstance());
+ }
+
+ public GamePlan(final GamePlan card) {
+ super(card);
+ }
+
+ @Override
+ public GamePlan copy() {
+ return new GamePlan(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/g/GamePreserve.java b/Mage.Sets/src/mage/cards/g/GamePreserve.java
index 5af76581a0d..bb5c1c074a7 100644
--- a/Mage.Sets/src/mage/cards/g/GamePreserve.java
+++ b/Mage.Sets/src/mage/cards/g/GamePreserve.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class GamePreserve extends CardImpl {
+public final class GamePreserve extends CardImpl {
public GamePreserve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GameTrail.java b/Mage.Sets/src/mage/cards/g/GameTrail.java
index 9b8a0993282..0e402c8336a 100644
--- a/Mage.Sets/src/mage/cards/g/GameTrail.java
+++ b/Mage.Sets/src/mage/cards/g/GameTrail.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class GameTrail extends CardImpl {
+public final class GameTrail extends CardImpl {
private static final FilterCard filter = new FilterCard("a Mountain or Forest card from your hand");
diff --git a/Mage.Sets/src/mage/cards/g/GameTrailChangeling.java b/Mage.Sets/src/mage/cards/g/GameTrailChangeling.java
index 32ebbbd7408..a7a65470455 100644
--- a/Mage.Sets/src/mage/cards/g/GameTrailChangeling.java
+++ b/Mage.Sets/src/mage/cards/g/GameTrailChangeling.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GameTrailChangeling extends CardImpl {
+public final class GameTrailChangeling extends CardImpl {
public GameTrailChangeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Gamekeeper.java b/Mage.Sets/src/mage/cards/g/Gamekeeper.java
index 48a2a5418c8..4396c9e5c66 100644
--- a/Mage.Sets/src/mage/cards/g/Gamekeeper.java
+++ b/Mage.Sets/src/mage/cards/g/Gamekeeper.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author fireshoes
*/
-public class Gamekeeper extends CardImpl {
+public final class Gamekeeper extends CardImpl {
public Gamekeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GamorreanPrisonGuard.java b/Mage.Sets/src/mage/cards/g/GamorreanPrisonGuard.java
index 0098a17b712..6f4a9f86455 100644
--- a/Mage.Sets/src/mage/cards/g/GamorreanPrisonGuard.java
+++ b/Mage.Sets/src/mage/cards/g/GamorreanPrisonGuard.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class GamorreanPrisonGuard extends CardImpl {
+public final class GamorreanPrisonGuard extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a creature");
diff --git a/Mage.Sets/src/mage/cards/g/GangOfDevils.java b/Mage.Sets/src/mage/cards/g/GangOfDevils.java
index 3ec09c53245..50361656678 100644
--- a/Mage.Sets/src/mage/cards/g/GangOfDevils.java
+++ b/Mage.Sets/src/mage/cards/g/GangOfDevils.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTargetAmount;
* @author noxx
*/
-public class GangOfDevils extends CardImpl {
+public final class GangOfDevils extends CardImpl {
public GangOfDevils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GangOfElk.java b/Mage.Sets/src/mage/cards/g/GangOfElk.java
index c47c952e07d..17ae3d25aa7 100644
--- a/Mage.Sets/src/mage/cards/g/GangOfElk.java
+++ b/Mage.Sets/src/mage/cards/g/GangOfElk.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class GangOfElk extends CardImpl {
+public final class GangOfElk extends CardImpl {
public GangOfElk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GangUp.java b/Mage.Sets/src/mage/cards/g/GangUp.java
new file mode 100644
index 00000000000..ac417410743
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/g/GangUp.java
@@ -0,0 +1,80 @@
+/*
+ * 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.abilities.Ability;
+import mage.abilities.SpellAbility;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.abilities.keyword.AssistAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.ComparisonType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.PowerPredicate;
+import mage.game.Game;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class GangUp extends CardImpl {
+
+ public GangUp(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{B}");
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // Destroy target creature with power X or less.
+ this.getSpellAbility().addEffect(new DestroyTargetEffect());
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature with power X or less")));
+ }
+
+ public GangUp(final GangUp card) {
+ super(card);
+ }
+
+ @Override
+ public void adjustTargets(Ability ability, Game game) {
+ if (ability instanceof SpellAbility) {
+ int xValue = ability.getManaCostsToPay().getX();
+ ability.getTargets().clear();
+ FilterCreaturePermanent filter = new FilterCreaturePermanent(new StringBuilder("creature with power ").append(xValue).append(" or less").toString());
+ filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, xValue + 1));
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ }
+ }
+
+ @Override
+ public GangUp copy() {
+ return new GangUp(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java b/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java
index 0d39a593c93..090415ab22e 100644
--- a/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java
+++ b/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class GangrenousGoliath extends CardImpl {
+public final class GangrenousGoliath extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Clerics");
diff --git a/Mage.Sets/src/mage/cards/g/GangrenousZombies.java b/Mage.Sets/src/mage/cards/g/GangrenousZombies.java
index 309f13bb207..96fe49ea877 100644
--- a/Mage.Sets/src/mage/cards/g/GangrenousZombies.java
+++ b/Mage.Sets/src/mage/cards/g/GangrenousZombies.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class GangrenousZombies extends CardImpl {
+public final class GangrenousZombies extends CardImpl {
private final static FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/g/GarbageElementalC.java b/Mage.Sets/src/mage/cards/g/GarbageElementalC.java
index 560aed815f2..7764cf86556 100644
--- a/Mage.Sets/src/mage/cards/g/GarbageElementalC.java
+++ b/Mage.Sets/src/mage/cards/g/GarbageElementalC.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class GarbageElementalC extends CardImpl {
+public final class GarbageElementalC extends CardImpl {
public GarbageElementalC(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GargoyleCastle.java b/Mage.Sets/src/mage/cards/g/GargoyleCastle.java
index 4fe57128d03..5918502e7c3 100644
--- a/Mage.Sets/src/mage/cards/g/GargoyleCastle.java
+++ b/Mage.Sets/src/mage/cards/g/GargoyleCastle.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.GargoyleToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GargoyleCastle extends CardImpl {
+public final class GargoyleCastle extends CardImpl {
public GargoyleCastle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/g/GargoyleSentinel.java b/Mage.Sets/src/mage/cards/g/GargoyleSentinel.java
index 81afe661ec1..452bd3444e3 100644
--- a/Mage.Sets/src/mage/cards/g/GargoyleSentinel.java
+++ b/Mage.Sets/src/mage/cards/g/GargoyleSentinel.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GargoyleSentinel extends CardImpl {
+public final class GargoyleSentinel extends CardImpl {
public GargoyleSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GarnaTheBloodflame.java b/Mage.Sets/src/mage/cards/g/GarnaTheBloodflame.java
index 1bdeffb62cf..1735025ec4d 100644
--- a/Mage.Sets/src/mage/cards/g/GarnaTheBloodflame.java
+++ b/Mage.Sets/src/mage/cards/g/GarnaTheBloodflame.java
@@ -59,7 +59,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class GarnaTheBloodflame extends CardImpl {
+public final class GarnaTheBloodflame extends CardImpl {
public GarnaTheBloodflame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GarrukApexPredator.java b/Mage.Sets/src/mage/cards/g/GarrukApexPredator.java
index 1158ab96944..42bbf2ae764 100644
--- a/Mage.Sets/src/mage/cards/g/GarrukApexPredator.java
+++ b/Mage.Sets/src/mage/cards/g/GarrukApexPredator.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class GarrukApexPredator extends CardImpl {
+public final class GarrukApexPredator extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another target planeswalker");
diff --git a/Mage.Sets/src/mage/cards/g/GarrukCallerOfBeasts.java b/Mage.Sets/src/mage/cards/g/GarrukCallerOfBeasts.java
index 23fbd9a95d9..0e3a8d4717f 100644
--- a/Mage.Sets/src/mage/cards/g/GarrukCallerOfBeasts.java
+++ b/Mage.Sets/src/mage/cards/g/GarrukCallerOfBeasts.java
@@ -32,7 +32,7 @@ import mage.ObjectColor;
import mage.abilities.LoyaltyAbility;
import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility;
import mage.abilities.effects.common.GetEmblemEffect;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.common.RevealLibraryPutIntoHandEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -48,7 +48,7 @@ import mage.game.command.emblems.GarrukCallerOfBeastsEmblem;
*
* @author LevelX2 import mage.game.command.emblems.GarrukCallerOfBeastsEmblem;
*/
-public class GarrukCallerOfBeasts extends CardImpl {
+public final class GarrukCallerOfBeasts extends CardImpl {
private static final FilterCreatureCard filterGreenCreature = new FilterCreatureCard("a green creature card");
@@ -67,7 +67,7 @@ public class GarrukCallerOfBeasts extends CardImpl {
this.addAbility(new LoyaltyAbility(new RevealLibraryPutIntoHandEffect(5, new FilterCreatureCard("creature cards"), Zone.LIBRARY), 1));
// -3: You may put a green creature card from your hand onto the battlefield.
- this.addAbility(new LoyaltyAbility(new PutPermanentOnBattlefieldEffect(filterGreenCreature), -3));
+ this.addAbility(new LoyaltyAbility(new PutCardFromHandOntoBattlefieldEffect(filterGreenCreature), -3));
// -7: You get an emblem with "Whenever you cast a creature spell, you may search your library for a creature card, put it onto the battlefield, then shuffle your library.");
this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new GarrukCallerOfBeastsEmblem()), -7));
diff --git a/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java b/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java
index e36b192e1e0..f997d3bef6f 100644
--- a/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java
+++ b/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class GarrukPrimalHunter extends CardImpl {
+public final class GarrukPrimalHunter extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/g/GarrukRelentless.java b/Mage.Sets/src/mage/cards/g/GarrukRelentless.java
index d5eb63d3e9d..2aed0c30fa5 100644
--- a/Mage.Sets/src/mage/cards/g/GarrukRelentless.java
+++ b/Mage.Sets/src/mage/cards/g/GarrukRelentless.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author nantuko
*/
-public class GarrukRelentless extends CardImpl {
+public final class GarrukRelentless extends CardImpl {
public GarrukRelentless(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GarrukTheVeilCursed.java b/Mage.Sets/src/mage/cards/g/GarrukTheVeilCursed.java
index bbae92a50e5..2dfdaabe56f 100644
--- a/Mage.Sets/src/mage/cards/g/GarrukTheVeilCursed.java
+++ b/Mage.Sets/src/mage/cards/g/GarrukTheVeilCursed.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author nantuko
*/
-public class GarrukTheVeilCursed extends CardImpl {
+public final class GarrukTheVeilCursed extends CardImpl {
public GarrukTheVeilCursed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "");
diff --git a/Mage.Sets/src/mage/cards/g/GarrukWildspeaker.java b/Mage.Sets/src/mage/cards/g/GarrukWildspeaker.java
index 47a08694303..c357f95dbd0 100644
--- a/Mage.Sets/src/mage/cards/g/GarrukWildspeaker.java
+++ b/Mage.Sets/src/mage/cards/g/GarrukWildspeaker.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GarrukWildspeaker extends CardImpl {
+public final class GarrukWildspeaker extends CardImpl {
private static BeastToken beastToken = new BeastToken();
diff --git a/Mage.Sets/src/mage/cards/g/GarruksCompanion.java b/Mage.Sets/src/mage/cards/g/GarruksCompanion.java
index ff6c975abdc..a96082e93ae 100644
--- a/Mage.Sets/src/mage/cards/g/GarruksCompanion.java
+++ b/Mage.Sets/src/mage/cards/g/GarruksCompanion.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GarruksCompanion extends CardImpl {
+public final class GarruksCompanion extends CardImpl {
public GarruksCompanion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GarruksHorde.java b/Mage.Sets/src/mage/cards/g/GarruksHorde.java
index 4603967446a..f8bae4e229f 100644
--- a/Mage.Sets/src/mage/cards/g/GarruksHorde.java
+++ b/Mage.Sets/src/mage/cards/g/GarruksHorde.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreatureCard;
/**
* @author nantuko
*/
-public class GarruksHorde extends CardImpl {
+public final class GarruksHorde extends CardImpl {
public GarruksHorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GarruksPackleader.java b/Mage.Sets/src/mage/cards/g/GarruksPackleader.java
index 0ab46a0ce81..6fa55d1d560 100644
--- a/Mage.Sets/src/mage/cards/g/GarruksPackleader.java
+++ b/Mage.Sets/src/mage/cards/g/GarruksPackleader.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GarruksPackleader extends CardImpl {
+public final class GarruksPackleader extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature with power 3 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GarrulousSycophant.java b/Mage.Sets/src/mage/cards/g/GarrulousSycophant.java
index ceb3dcdc23c..84e03462d40 100644
--- a/Mage.Sets/src/mage/cards/g/GarrulousSycophant.java
+++ b/Mage.Sets/src/mage/cards/g/GarrulousSycophant.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GarrulousSycophant extends CardImpl {
+public final class GarrulousSycophant extends CardImpl {
public GarrulousSycophant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GarzaZolPlagueQueen.java b/Mage.Sets/src/mage/cards/g/GarzaZolPlagueQueen.java
index 0b7f8f75260..a092725f682 100644
--- a/Mage.Sets/src/mage/cards/g/GarzaZolPlagueQueen.java
+++ b/Mage.Sets/src/mage/cards/g/GarzaZolPlagueQueen.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class GarzaZolPlagueQueen extends CardImpl {
+public final class GarzaZolPlagueQueen extends CardImpl {
public GarzaZolPlagueQueen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GarzasAssassin.java b/Mage.Sets/src/mage/cards/g/GarzasAssassin.java
index 4b116426781..a1c30fe07dd 100644
--- a/Mage.Sets/src/mage/cards/g/GarzasAssassin.java
+++ b/Mage.Sets/src/mage/cards/g/GarzasAssassin.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author choiseul11 & L_J
*/
-public class GarzasAssassin extends CardImpl {
+public final class GarzasAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/g/GaseousForm.java b/Mage.Sets/src/mage/cards/g/GaseousForm.java
index f933a18a305..df7d56221c3 100644
--- a/Mage.Sets/src/mage/cards/g/GaseousForm.java
+++ b/Mage.Sets/src/mage/cards/g/GaseousForm.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class GaseousForm extends CardImpl {
+public final class GaseousForm extends CardImpl {
public GaseousForm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GateHound.java b/Mage.Sets/src/mage/cards/g/GateHound.java
index 35f829b2209..d41862b1392 100644
--- a/Mage.Sets/src/mage/cards/g/GateHound.java
+++ b/Mage.Sets/src/mage/cards/g/GateHound.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author North
*/
-public class GateHound extends CardImpl {
+public final class GateHound extends CardImpl {
public GateHound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GateSmasher.java b/Mage.Sets/src/mage/cards/g/GateSmasher.java
index f8b0b896bce..b65772af215 100644
--- a/Mage.Sets/src/mage/cards/g/GateSmasher.java
+++ b/Mage.Sets/src/mage/cards/g/GateSmasher.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class GateSmasher extends CardImpl {
+public final class GateSmasher extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature with toughness 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/g/GateToPhyrexia.java b/Mage.Sets/src/mage/cards/g/GateToPhyrexia.java
index abc3faad426..f6e5841edd1 100644
--- a/Mage.Sets/src/mage/cards/g/GateToPhyrexia.java
+++ b/Mage.Sets/src/mage/cards/g/GateToPhyrexia.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class GateToPhyrexia extends CardImpl {
+public final class GateToPhyrexia extends CardImpl {
public GateToPhyrexia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GateToTheAether.java b/Mage.Sets/src/mage/cards/g/GateToTheAether.java
index 928989adb57..f98b0eab666 100644
--- a/Mage.Sets/src/mage/cards/g/GateToTheAether.java
+++ b/Mage.Sets/src/mage/cards/g/GateToTheAether.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class GateToTheAether extends CardImpl {
+public final class GateToTheAether extends CardImpl {
public GateToTheAether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java b/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java
index 4b8cbaf2c57..e319a27c4c9 100644
--- a/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java
+++ b/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java
@@ -62,7 +62,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author LevelX2
*/
-public class GateToTheAfterlife extends CardImpl {
+public final class GateToTheAfterlife extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a nontoken creature you control");
diff --git a/Mage.Sets/src/mage/cards/g/GatecreeperVine.java b/Mage.Sets/src/mage/cards/g/GatecreeperVine.java
index 7cb613c6d1d..55a2f7b3295 100644
--- a/Mage.Sets/src/mage/cards/g/GatecreeperVine.java
+++ b/Mage.Sets/src/mage/cards/g/GatecreeperVine.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class GatecreeperVine extends CardImpl {
+public final class GatecreeperVine extends CardImpl {
private static final FilterCard filter = new FilterCard("basic land card or a Gate card");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GatekeeperOfMalakir.java b/Mage.Sets/src/mage/cards/g/GatekeeperOfMalakir.java
index c221375f4dd..cf4bc409002 100644
--- a/Mage.Sets/src/mage/cards/g/GatekeeperOfMalakir.java
+++ b/Mage.Sets/src/mage/cards/g/GatekeeperOfMalakir.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author maurer.it_at_gmail.com
*/
-public class GatekeeperOfMalakir extends CardImpl {
+public final class GatekeeperOfMalakir extends CardImpl {
private static final FilterControlledPermanent filter;
diff --git a/Mage.Sets/src/mage/cards/g/GatewayShade.java b/Mage.Sets/src/mage/cards/g/GatewayShade.java
index 9345dd05441..2bc9ff8edc0 100644
--- a/Mage.Sets/src/mage/cards/g/GatewayShade.java
+++ b/Mage.Sets/src/mage/cards/g/GatewayShade.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class GatewayShade extends CardImpl {
+public final class GatewayShade extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("untapped Gate you control");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GathanRaiders.java b/Mage.Sets/src/mage/cards/g/GathanRaiders.java
index 0e50ecac7e5..12f618f8194 100644
--- a/Mage.Sets/src/mage/cards/g/GathanRaiders.java
+++ b/Mage.Sets/src/mage/cards/g/GathanRaiders.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GathanRaiders extends CardImpl {
+public final class GathanRaiders extends CardImpl {
public GathanRaiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GatherCourage.java b/Mage.Sets/src/mage/cards/g/GatherCourage.java
index ac4fbc1cb14..f8e2c118eb2 100644
--- a/Mage.Sets/src/mage/cards/g/GatherCourage.java
+++ b/Mage.Sets/src/mage/cards/g/GatherCourage.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jonubuu
*/
-public class GatherCourage extends CardImpl {
+public final class GatherCourage extends CardImpl {
public GatherCourage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GatherSpecimens.java b/Mage.Sets/src/mage/cards/g/GatherSpecimens.java
index 3d299f9a7ec..51b7480ad5c 100644
--- a/Mage.Sets/src/mage/cards/g/GatherSpecimens.java
+++ b/Mage.Sets/src/mage/cards/g/GatherSpecimens.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class GatherSpecimens extends CardImpl {
+public final class GatherSpecimens extends CardImpl {
public GatherSpecimens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GatherThePack.java b/Mage.Sets/src/mage/cards/g/GatherThePack.java
index c0ca44edcf8..2bc06dd5168 100644
--- a/Mage.Sets/src/mage/cards/g/GatherThePack.java
+++ b/Mage.Sets/src/mage/cards/g/GatherThePack.java
@@ -48,7 +48,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class GatherThePack extends CardImpl {
+public final class GatherThePack extends CardImpl {
public GatherThePack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GatherTheTownsfolk.java b/Mage.Sets/src/mage/cards/g/GatherTheTownsfolk.java
index 917742dac8c..4b13ab04c48 100644
--- a/Mage.Sets/src/mage/cards/g/GatherTheTownsfolk.java
+++ b/Mage.Sets/src/mage/cards/g/GatherTheTownsfolk.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.HumanToken;
*
* @author anonymous
*/
-public class GatherTheTownsfolk extends CardImpl {
+public final class GatherTheTownsfolk extends CardImpl {
public GatherTheTownsfolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GathererOfGraces.java b/Mage.Sets/src/mage/cards/g/GathererOfGraces.java
index ac788999739..a5d2e23b3ce 100644
--- a/Mage.Sets/src/mage/cards/g/GathererOfGraces.java
+++ b/Mage.Sets/src/mage/cards/g/GathererOfGraces.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author igoudt
*/
-public class GathererOfGraces extends CardImpl {
+public final class GathererOfGraces extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an Aura");
diff --git a/Mage.Sets/src/mage/cards/g/GatstafArsonists.java b/Mage.Sets/src/mage/cards/g/GatstafArsonists.java
index 4e9d294e450..cc61cfacf85 100644
--- a/Mage.Sets/src/mage/cards/g/GatstafArsonists.java
+++ b/Mage.Sets/src/mage/cards/g/GatstafArsonists.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class GatstafArsonists extends CardImpl {
+public final class GatstafArsonists extends CardImpl {
public GatstafArsonists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GatstafHowler.java b/Mage.Sets/src/mage/cards/g/GatstafHowler.java
index 9f91fbaa109..86a919047d3 100644
--- a/Mage.Sets/src/mage/cards/g/GatstafHowler.java
+++ b/Mage.Sets/src/mage/cards/g/GatstafHowler.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class GatstafHowler extends CardImpl {
+public final class GatstafHowler extends CardImpl {
public GatstafHowler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/g/GatstafRavagers.java b/Mage.Sets/src/mage/cards/g/GatstafRavagers.java
index f84e3cf6b46..f1e89359dc9 100644
--- a/Mage.Sets/src/mage/cards/g/GatstafRavagers.java
+++ b/Mage.Sets/src/mage/cards/g/GatstafRavagers.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class GatstafRavagers extends CardImpl {
+public final class GatstafRavagers extends CardImpl {
public GatstafRavagers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/g/GatstafShepherd.java b/Mage.Sets/src/mage/cards/g/GatstafShepherd.java
index da825b113e6..11cd689e37b 100644
--- a/Mage.Sets/src/mage/cards/g/GatstafShepherd.java
+++ b/Mage.Sets/src/mage/cards/g/GatstafShepherd.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class GatstafShepherd extends CardImpl {
+public final class GatstafShepherd extends CardImpl {
public GatstafShepherd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GauntletOfMight.java b/Mage.Sets/src/mage/cards/g/GauntletOfMight.java
index d167731847b..1d26cec644f 100644
--- a/Mage.Sets/src/mage/cards/g/GauntletOfMight.java
+++ b/Mage.Sets/src/mage/cards/g/GauntletOfMight.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class GauntletOfMight extends CardImpl {
+public final class GauntletOfMight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Red creatures");
private static final FilterLandPermanent filterMountain = new FilterLandPermanent("a Mountain is tapped");
@@ -63,9 +63,9 @@ public class GauntletOfMight extends CardImpl {
// Red creatures get +1/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, false)));
- // Whenever a Mountain is tapped for mana, its controller adds {R} to their mana pool.
+ // Whenever a Mountain is tapped for mana, its controller adds {R}.
ManaEffect effect = new AddManaToManaPoolTargetControllerEffect(new Mana(ColoredManaSymbol.R), "their");
- effect.setText("its controller adds {R} to their mana pool");
+ effect.setText("its controller adds {R}");
this.addAbility(new TapForManaAllTriggeredManaAbility(
effect, filterMountain, SetTargetPointer.PLAYER));
}
diff --git a/Mage.Sets/src/mage/cards/g/GauntletOfPower.java b/Mage.Sets/src/mage/cards/g/GauntletOfPower.java
index dbe64da15d4..b83f30dcf52 100644
--- a/Mage.Sets/src/mage/cards/g/GauntletOfPower.java
+++ b/Mage.Sets/src/mage/cards/g/GauntletOfPower.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class GauntletOfPower extends CardImpl {
+public final class GauntletOfPower extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("a basic land");
@@ -73,7 +73,7 @@ public class GauntletOfPower extends CardImpl {
// Creatures of the chosen color get +1/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GauntletOfPowerEffect1()));
- // Whenever a basic land is tapped for mana of the chosen color, its controller adds one mana of that color to their mana pool.
+ // Whenever a basic land is tapped for mana of the chosen color, its controller adds one mana of that color.
this.addAbility(new TapForManaAllTriggeredAbility(new GauntletOfPowerEffectEffect2(), filter, SetTargetPointer.PERMANENT));
}
@@ -198,7 +198,7 @@ class GauntletOfPowerEffectEffect2 extends ManaEffect {
public GauntletOfPowerEffectEffect2() {
super();
- staticText = "its controller adds one mana of that color to their mana pool";
+ staticText = "its controller adds one mana of that color";
}
public GauntletOfPowerEffectEffect2(final GauntletOfPowerEffectEffect2 effect) {
diff --git a/Mage.Sets/src/mage/cards/g/GauntletsOfChaos.java b/Mage.Sets/src/mage/cards/g/GauntletsOfChaos.java
index 6b8716ce5a3..9c487d18526 100644
--- a/Mage.Sets/src/mage/cards/g/GauntletsOfChaos.java
+++ b/Mage.Sets/src/mage/cards/g/GauntletsOfChaos.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2 & L_J
*/
-public class GauntletsOfChaos extends CardImpl {
+public final class GauntletsOfChaos extends CardImpl {
public GauntletsOfChaos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/g/GavonyIronwright.java b/Mage.Sets/src/mage/cards/g/GavonyIronwright.java
index f2a6b7c46aa..21542e0bb50 100644
--- a/Mage.Sets/src/mage/cards/g/GavonyIronwright.java
+++ b/Mage.Sets/src/mage/cards/g/GavonyIronwright.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author Loki
*/
-public class GavonyIronwright extends CardImpl {
+public final class GavonyIronwright extends CardImpl {
public GavonyIronwright(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GavonyTownship.java b/Mage.Sets/src/mage/cards/g/GavonyTownship.java
index 441b7e08fb7..03f2ae41d06 100644
--- a/Mage.Sets/src/mage/cards/g/GavonyTownship.java
+++ b/Mage.Sets/src/mage/cards/g/GavonyTownship.java
@@ -14,7 +14,7 @@ import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.common.FilterControlledCreaturePermanent;
-public class GavonyTownship extends CardImpl {
+public final class GavonyTownship extends CardImpl {
public GavonyTownship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/g/GavonyUnhallowed.java b/Mage.Sets/src/mage/cards/g/GavonyUnhallowed.java
index 8296f1dcd03..6f7edca4b17 100644
--- a/Mage.Sets/src/mage/cards/g/GavonyUnhallowed.java
+++ b/Mage.Sets/src/mage/cards/g/GavonyUnhallowed.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class GavonyUnhallowed extends CardImpl {
+public final class GavonyUnhallowed extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/g/GazeOfAdamaro.java b/Mage.Sets/src/mage/cards/g/GazeOfAdamaro.java
index 0303b2208de..910b74d9663 100644
--- a/Mage.Sets/src/mage/cards/g/GazeOfAdamaro.java
+++ b/Mage.Sets/src/mage/cards/g/GazeOfAdamaro.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class GazeOfAdamaro extends CardImpl {
+public final class GazeOfAdamaro extends CardImpl {
public GazeOfAdamaro(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GazeOfGranite.java b/Mage.Sets/src/mage/cards/g/GazeOfGranite.java
index 1ca165a1a5b..d925586a33c 100644
--- a/Mage.Sets/src/mage/cards/g/GazeOfGranite.java
+++ b/Mage.Sets/src/mage/cards/g/GazeOfGranite.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class GazeOfGranite extends CardImpl {
+public final class GazeOfGranite extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each nonland permanent with converted mana cost X or less");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GazeOfJustice.java b/Mage.Sets/src/mage/cards/g/GazeOfJustice.java
index c730c584e05..e8e5b4fe18c 100644
--- a/Mage.Sets/src/mage/cards/g/GazeOfJustice.java
+++ b/Mage.Sets/src/mage/cards/g/GazeOfJustice.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GazeOfJustice extends CardImpl {
+public final class GazeOfJustice extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped white creatures you control");
diff --git a/Mage.Sets/src/mage/cards/g/GazeOfTheGorgon.java b/Mage.Sets/src/mage/cards/g/GazeOfTheGorgon.java
index 33c2702a8bd..d815825c154 100644
--- a/Mage.Sets/src/mage/cards/g/GazeOfTheGorgon.java
+++ b/Mage.Sets/src/mage/cards/g/GazeOfTheGorgon.java
@@ -50,7 +50,7 @@ import mage.watchers.common.BlockedAttackerWatcher;
*
* @author LevelX2
*/
-public class GazeOfTheGorgon extends CardImpl {
+public final class GazeOfTheGorgon extends CardImpl {
public GazeOfTheGorgon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/g/GearseekerSerpent.java b/Mage.Sets/src/mage/cards/g/GearseekerSerpent.java
index 89ae8bcd01b..7c86ac3260e 100644
--- a/Mage.Sets/src/mage/cards/g/GearseekerSerpent.java
+++ b/Mage.Sets/src/mage/cards/g/GearseekerSerpent.java
@@ -47,7 +47,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class GearseekerSerpent extends CardImpl {
+public final class GearseekerSerpent extends CardImpl {
public GearseekerSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GearshiftAce.java b/Mage.Sets/src/mage/cards/g/GearshiftAce.java
index 499713d7619..6e1a13494cb 100644
--- a/Mage.Sets/src/mage/cards/g/GearshiftAce.java
+++ b/Mage.Sets/src/mage/cards/g/GearshiftAce.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class GearshiftAce extends CardImpl {
+public final class GearshiftAce extends CardImpl {
public GearshiftAce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GearsmithProdigy.java b/Mage.Sets/src/mage/cards/g/GearsmithProdigy.java
new file mode 100644
index 00000000000..b19f43f2413
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/g/GearsmithProdigy.java
@@ -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.g;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
+import mage.abilities.decorator.ConditionalContinuousEffect;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Zone;
+import mage.filter.StaticFilters;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class GearsmithProdigy extends CardImpl {
+
+ public GearsmithProdigy(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.ARTIFICER);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // Gearsmith Prodigy gets +1/+0 as long as you control an artifact.
+ this.addAbility(new SimpleStaticAbility(
+ Zone.BATTLEFIELD,
+ new ConditionalContinuousEffect(
+ new BoostSourceEffect(1, 0, Duration.WhileOnBattlefield),
+ new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT),
+ "{this} gets +1/+0 as long as you control an artifact"
+ )
+ ));
+ }
+
+ public GearsmithProdigy(final GearsmithProdigy card) {
+ super(card);
+ }
+
+ @Override
+ public GearsmithProdigy copy() {
+ return new GearsmithProdigy(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/g/GeierReachBandit.java b/Mage.Sets/src/mage/cards/g/GeierReachBandit.java
index 5246e74324b..8320539bae3 100644
--- a/Mage.Sets/src/mage/cards/g/GeierReachBandit.java
+++ b/Mage.Sets/src/mage/cards/g/GeierReachBandit.java
@@ -47,7 +47,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class GeierReachBandit extends CardImpl {
+public final class GeierReachBandit extends CardImpl {
public GeierReachBandit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GeierReachSanitarium.java b/Mage.Sets/src/mage/cards/g/GeierReachSanitarium.java
index 23d507bbfa3..c3dc492c563 100644
--- a/Mage.Sets/src/mage/cards/g/GeierReachSanitarium.java
+++ b/Mage.Sets/src/mage/cards/g/GeierReachSanitarium.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class GeierReachSanitarium extends CardImpl {
+public final class GeierReachSanitarium extends CardImpl {
public GeierReachSanitarium(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GeistFueledScarecrow.java b/Mage.Sets/src/mage/cards/g/GeistFueledScarecrow.java
index 0c1714358ee..76f76d2627c 100644
--- a/Mage.Sets/src/mage/cards/g/GeistFueledScarecrow.java
+++ b/Mage.Sets/src/mage/cards/g/GeistFueledScarecrow.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class GeistFueledScarecrow extends CardImpl {
+public final class GeistFueledScarecrow extends CardImpl {
private static final FilterCard filter = new FilterCard("Creature spells");
diff --git a/Mage.Sets/src/mage/cards/g/GeistHonoredMonk.java b/Mage.Sets/src/mage/cards/g/GeistHonoredMonk.java
index 996e5b38278..c8bbc396633 100644
--- a/Mage.Sets/src/mage/cards/g/GeistHonoredMonk.java
+++ b/Mage.Sets/src/mage/cards/g/GeistHonoredMonk.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
/**
* @author nantuko
*/
-public class GeistHonoredMonk extends CardImpl {
+public final class GeistHonoredMonk extends CardImpl {
public GeistHonoredMonk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java b/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java
index 6877cb62d17..88a1d1201b2 100644
--- a/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java
+++ b/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java
@@ -47,7 +47,7 @@ import mage.players.Player;
/**
* @author Loki
*/
-public class GeistOfSaintTraft extends CardImpl {
+public final class GeistOfSaintTraft extends CardImpl {
public GeistOfSaintTraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GeistOfTheArchives.java b/Mage.Sets/src/mage/cards/g/GeistOfTheArchives.java
index 320bd0e79a8..87f94477df4 100644
--- a/Mage.Sets/src/mage/cards/g/GeistOfTheArchives.java
+++ b/Mage.Sets/src/mage/cards/g/GeistOfTheArchives.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GeistOfTheArchives extends CardImpl {
+public final class GeistOfTheArchives extends CardImpl {
public GeistOfTheArchives(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GeistOfTheLonelyVigil.java b/Mage.Sets/src/mage/cards/g/GeistOfTheLonelyVigil.java
index a086ce1d3ad..debf5c7ee3b 100644
--- a/Mage.Sets/src/mage/cards/g/GeistOfTheLonelyVigil.java
+++ b/Mage.Sets/src/mage/cards/g/GeistOfTheLonelyVigil.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GeistOfTheLonelyVigil extends CardImpl {
+public final class GeistOfTheLonelyVigil extends CardImpl {
public GeistOfTheLonelyVigil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GeistOfTheMoors.java b/Mage.Sets/src/mage/cards/g/GeistOfTheMoors.java
index 1e1f6a86af1..34df05e5dde 100644
--- a/Mage.Sets/src/mage/cards/g/GeistOfTheMoors.java
+++ b/Mage.Sets/src/mage/cards/g/GeistOfTheMoors.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GeistOfTheMoors extends CardImpl {
+public final class GeistOfTheMoors extends CardImpl {
public GeistOfTheMoors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GeistSnatch.java b/Mage.Sets/src/mage/cards/g/GeistSnatch.java
index 7a9ff6ae807..6cd84929bfa 100644
--- a/Mage.Sets/src/mage/cards/g/GeistSnatch.java
+++ b/Mage.Sets/src/mage/cards/g/GeistSnatch.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author noxx
*/
-public class GeistSnatch extends CardImpl {
+public final class GeistSnatch extends CardImpl {
public GeistSnatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GeistTrappers.java b/Mage.Sets/src/mage/cards/g/GeistTrappers.java
index 459dec7f122..db2a07ffd89 100644
--- a/Mage.Sets/src/mage/cards/g/GeistTrappers.java
+++ b/Mage.Sets/src/mage/cards/g/GeistTrappers.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class GeistTrappers extends CardImpl {
+public final class GeistTrappers extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, both creatures have reach";
diff --git a/Mage.Sets/src/mage/cards/g/Geistblast.java b/Mage.Sets/src/mage/cards/g/Geistblast.java
index 413e1509fe1..8385fb9f7d2 100644
--- a/Mage.Sets/src/mage/cards/g/Geistblast.java
+++ b/Mage.Sets/src/mage/cards/g/Geistblast.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Geistblast extends CardImpl {
+public final class Geistblast extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery spell you control");
diff --git a/Mage.Sets/src/mage/cards/g/GeistcatchersRig.java b/Mage.Sets/src/mage/cards/g/GeistcatchersRig.java
index 9e1325a3b8a..32f7566fae8 100644
--- a/Mage.Sets/src/mage/cards/g/GeistcatchersRig.java
+++ b/Mage.Sets/src/mage/cards/g/GeistcatchersRig.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GeistcatchersRig extends CardImpl {
+public final class GeistcatchersRig extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/g/Geistflame.java b/Mage.Sets/src/mage/cards/g/Geistflame.java
index 47b4497182b..4e320f4af22 100644
--- a/Mage.Sets/src/mage/cards/g/Geistflame.java
+++ b/Mage.Sets/src/mage/cards/g/Geistflame.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author nantuko
*/
-public class Geistflame extends CardImpl {
+public final class Geistflame extends CardImpl {
public Geistflame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GelatinousGenesis.java b/Mage.Sets/src/mage/cards/g/GelatinousGenesis.java
index e6dbd20447c..1e3f2b481b3 100644
--- a/Mage.Sets/src/mage/cards/g/GelatinousGenesis.java
+++ b/Mage.Sets/src/mage/cards/g/GelatinousGenesis.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.OozeToken;
*
* @author jeffwadsworth
*/
-public class GelatinousGenesis extends CardImpl {
+public final class GelatinousGenesis extends CardImpl {
public GelatinousGenesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Gelectrode.java b/Mage.Sets/src/mage/cards/g/Gelectrode.java
index b3b7c989113..e47380fa3cb 100644
--- a/Mage.Sets/src/mage/cards/g/Gelectrode.java
+++ b/Mage.Sets/src/mage/cards/g/Gelectrode.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class Gelectrode extends CardImpl {
+public final class Gelectrode extends CardImpl {
public Gelectrode(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GelidShackles.java b/Mage.Sets/src/mage/cards/g/GelidShackles.java
index 3113b6e38fb..7f927d024c1 100644
--- a/Mage.Sets/src/mage/cards/g/GelidShackles.java
+++ b/Mage.Sets/src/mage/cards/g/GelidShackles.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class GelidShackles extends CardImpl {
+public final class GelidShackles extends CardImpl {
public GelidShackles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GemOfBecoming.java b/Mage.Sets/src/mage/cards/g/GemOfBecoming.java
index 7175961ac1e..b8f77831725 100644
--- a/Mage.Sets/src/mage/cards/g/GemOfBecoming.java
+++ b/Mage.Sets/src/mage/cards/g/GemOfBecoming.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class GemOfBecoming extends CardImpl {
+public final class GemOfBecoming extends CardImpl {
public GemOfBecoming(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GemhideSliver.java b/Mage.Sets/src/mage/cards/g/GemhideSliver.java
index 755bf2b55e4..4ff7134648b 100644
--- a/Mage.Sets/src/mage/cards/g/GemhideSliver.java
+++ b/Mage.Sets/src/mage/cards/g/GemhideSliver.java
@@ -45,7 +45,7 @@ import mage.filter.FilterPermanent;
*
* @author KholdFuzion
*/
-public class GemhideSliver extends CardImpl {
+public final class GemhideSliver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers");
diff --git a/Mage.Sets/src/mage/cards/g/GeminiEngine.java b/Mage.Sets/src/mage/cards/g/GeminiEngine.java
index 473f186f55c..099a4e5e037 100644
--- a/Mage.Sets/src/mage/cards/g/GeminiEngine.java
+++ b/Mage.Sets/src/mage/cards/g/GeminiEngine.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class GeminiEngine extends CardImpl {
+public final class GeminiEngine extends CardImpl {
public GeminiEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/g/GempalmAvenger.java b/Mage.Sets/src/mage/cards/g/GempalmAvenger.java
index 94a1da4abca..52e94fd72c4 100644
--- a/Mage.Sets/src/mage/cards/g/GempalmAvenger.java
+++ b/Mage.Sets/src/mage/cards/g/GempalmAvenger.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class GempalmAvenger extends CardImpl {
+public final class GempalmAvenger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java b/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java
index 549a2b1143b..d1a0fff99ac 100644
--- a/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java
+++ b/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class GempalmIncinerator extends CardImpl {
+public final class GempalmIncinerator extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Goblins on the battlefield");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GempalmPolluter.java b/Mage.Sets/src/mage/cards/g/GempalmPolluter.java
index 130047562f2..26db3772140 100644
--- a/Mage.Sets/src/mage/cards/g/GempalmPolluter.java
+++ b/Mage.Sets/src/mage/cards/g/GempalmPolluter.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class GempalmPolluter extends CardImpl {
+public final class GempalmPolluter extends CardImpl {
static final private FilterPermanent filter = new FilterPermanent("Zombie");
diff --git a/Mage.Sets/src/mage/cards/g/GempalmSorcerer.java b/Mage.Sets/src/mage/cards/g/GempalmSorcerer.java
index 92de9eac80c..ee19f5db03c 100644
--- a/Mage.Sets/src/mage/cards/g/GempalmSorcerer.java
+++ b/Mage.Sets/src/mage/cards/g/GempalmSorcerer.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class GempalmSorcerer extends CardImpl {
+public final class GempalmSorcerer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wizard creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GempalmStrider.java b/Mage.Sets/src/mage/cards/g/GempalmStrider.java
index ad0eb4d8be2..0f36ca6709b 100644
--- a/Mage.Sets/src/mage/cards/g/GempalmStrider.java
+++ b/Mage.Sets/src/mage/cards/g/GempalmStrider.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class GempalmStrider extends CardImpl {
+public final class GempalmStrider extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GemstoneArray.java b/Mage.Sets/src/mage/cards/g/GemstoneArray.java
index 136370ebad1..cb289be1ec1 100644
--- a/Mage.Sets/src/mage/cards/g/GemstoneArray.java
+++ b/Mage.Sets/src/mage/cards/g/GemstoneArray.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class GemstoneArray extends CardImpl {
+public final class GemstoneArray extends CardImpl {
public GemstoneArray(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GemstoneCaverns.java b/Mage.Sets/src/mage/cards/g/GemstoneCaverns.java
index ef6a00309f4..891274713a8 100644
--- a/Mage.Sets/src/mage/cards/g/GemstoneCaverns.java
+++ b/Mage.Sets/src/mage/cards/g/GemstoneCaverns.java
@@ -37,7 +37,10 @@ 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.ContinuousEffect;
+import mage.abilities.effects.EntersBattlefieldEffect;
import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
import mage.abilities.effects.mana.BasicManaEffect;
import mage.abilities.mana.ConditionalManaAbility;
@@ -45,6 +48,7 @@ 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.SuperType;
import mage.constants.Zone;
@@ -58,7 +62,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class GemstoneCaverns extends CardImpl {
+public final class GemstoneCaverns extends CardImpl {
public GemstoneCaverns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
@@ -143,14 +147,16 @@ class GemstoneCavernsEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- if (player != null) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
Card card = game.getCard(source.getSourceId());
if (card != null) {
- if (card.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), source.getControllerId())) {
+ ContinuousEffect effect = new EntersBattlefieldEffect(new AddCountersSourceEffect(CounterType.LUCK.createInstance()), "");
+ effect.setDuration(Duration.OneUse);
+ game.addEffect(effect, source);
+ if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
Permanent permanent = game.getPermanent(card.getId());
if (permanent != null) {
- permanent.addCounters(CounterType.LUCK.createInstance(), source, 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);
diff --git a/Mage.Sets/src/mage/cards/g/GemstoneMine.java b/Mage.Sets/src/mage/cards/g/GemstoneMine.java
index 885fd0fe466..daa573c4377 100644
--- a/Mage.Sets/src/mage/cards/g/GemstoneMine.java
+++ b/Mage.Sets/src/mage/cards/g/GemstoneMine.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author jeffwadsworth
*/
-public class GemstoneMine extends CardImpl {
+public final class GemstoneMine extends CardImpl {
public GemstoneMine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GeneralGrievous.java b/Mage.Sets/src/mage/cards/g/GeneralGrievous.java
index 5c7b7cab398..3828eda80d8 100644
--- a/Mage.Sets/src/mage/cards/g/GeneralGrievous.java
+++ b/Mage.Sets/src/mage/cards/g/GeneralGrievous.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class GeneralGrievous extends CardImpl {
+public final class GeneralGrievous extends CardImpl {
public GeneralGrievous(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GeneralJarkeld.java b/Mage.Sets/src/mage/cards/g/GeneralJarkeld.java
index 467d55a9015..bf1847ab218 100644
--- a/Mage.Sets/src/mage/cards/g/GeneralJarkeld.java
+++ b/Mage.Sets/src/mage/cards/g/GeneralJarkeld.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author L_J
*/
-public class GeneralJarkeld extends CardImpl {
+public final class GeneralJarkeld extends CardImpl {
public GeneralJarkeld(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GeneralTazri.java b/Mage.Sets/src/mage/cards/g/GeneralTazri.java
index 0d547a284d3..7b83df0e8db 100644
--- a/Mage.Sets/src/mage/cards/g/GeneralTazri.java
+++ b/Mage.Sets/src/mage/cards/g/GeneralTazri.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class GeneralTazri extends CardImpl {
+public final class GeneralTazri extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("an Ally creature card");
diff --git a/Mage.Sets/src/mage/cards/g/GeneralsKabuto.java b/Mage.Sets/src/mage/cards/g/GeneralsKabuto.java
index 240ea9243e3..d278f2171dc 100644
--- a/Mage.Sets/src/mage/cards/g/GeneralsKabuto.java
+++ b/Mage.Sets/src/mage/cards/g/GeneralsKabuto.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class GeneralsKabuto extends CardImpl {
+public final class GeneralsKabuto extends CardImpl {
public GeneralsKabuto(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GeneralsRegalia.java b/Mage.Sets/src/mage/cards/g/GeneralsRegalia.java
index 4e24ff5c79d..6ba0c04736a 100644
--- a/Mage.Sets/src/mage/cards/g/GeneralsRegalia.java
+++ b/Mage.Sets/src/mage/cards/g/GeneralsRegalia.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class GeneralsRegalia extends CardImpl {
+public final class GeneralsRegalia extends CardImpl {
public GeneralsRegalia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GeneratorServant.java b/Mage.Sets/src/mage/cards/g/GeneratorServant.java
index 3f4728dc3d8..8223a0ef9cd 100644
--- a/Mage.Sets/src/mage/cards/g/GeneratorServant.java
+++ b/Mage.Sets/src/mage/cards/g/GeneratorServant.java
@@ -54,7 +54,7 @@ import mage.watchers.Watcher;
*
* @author Quercitron
*/
-public class GeneratorServant extends CardImpl {
+public final class GeneratorServant extends CardImpl {
public GeneratorServant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GenerousPatron.java b/Mage.Sets/src/mage/cards/g/GenerousPatron.java
new file mode 100644
index 00000000000..1b9f1712bc4
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/g/GenerousPatron.java
@@ -0,0 +1,109 @@
+/*
+ * 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.TriggeredAbilityImpl;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.keyword.SupportAbility;
+import mage.constants.SubType;
+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;
+import mage.game.permanent.Permanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class GenerousPatron extends CardImpl {
+
+ public GenerousPatron(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
+
+ this.subtype.add(SubType.ELF);
+ this.subtype.add(SubType.ADVISOR);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(4);
+
+ // When Generous Patron enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two other target creatures.)
+ this.addAbility(new SupportAbility(this, 2));
+
+ // Whenever you put one or more counters on a creature you don't control, draw a card.
+ this.addAbility(new GenerousPatronTriggeredAbility());
+ }
+
+ public GenerousPatron(final GenerousPatron card) {
+ super(card);
+ }
+
+ @Override
+ public GenerousPatron copy() {
+ return new GenerousPatron(this);
+ }
+}
+
+class GenerousPatronTriggeredAbility extends TriggeredAbilityImpl {
+
+ public GenerousPatronTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), false);
+ }
+
+ public GenerousPatronTriggeredAbility(GenerousPatronTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.COUNTERS_ADDED;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
+ return event.getPlayerId().equals(this.getControllerId())
+ && permanent != null
+ && permanent.isCreature()
+ && !permanent.getControllerId().equals(getControllerId())
+ && event.getAmount() > 0;
+ }
+
+ @Override
+ public GenerousPatronTriggeredAbility copy() {
+ return new GenerousPatronTriggeredAbility(this);
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever you put one or more counters on a creature you don't control, " + super.getRule();
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/g/Genesis.java b/Mage.Sets/src/mage/cards/g/Genesis.java
index 26eac63a58c..bb82b8f289c 100644
--- a/Mage.Sets/src/mage/cards/g/Genesis.java
+++ b/Mage.Sets/src/mage/cards/g/Genesis.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class Genesis extends CardImpl {
+public final class Genesis extends CardImpl {
public Genesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GenesisChamber.java b/Mage.Sets/src/mage/cards/g/GenesisChamber.java
index 50eb8c1dfa7..93d8d68297f 100644
--- a/Mage.Sets/src/mage/cards/g/GenesisChamber.java
+++ b/Mage.Sets/src/mage/cards/g/GenesisChamber.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.MyrToken;
*
* @author Plopman
*/
-public class GenesisChamber extends CardImpl {
+public final class GenesisChamber extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/g/GenesisHydra.java b/Mage.Sets/src/mage/cards/g/GenesisHydra.java
index 85ffbe57c0e..d6f871a2459 100644
--- a/Mage.Sets/src/mage/cards/g/GenesisHydra.java
+++ b/Mage.Sets/src/mage/cards/g/GenesisHydra.java
@@ -55,7 +55,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class GenesisHydra extends CardImpl {
+public final class GenesisHydra extends CardImpl {
public GenesisHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GenesisWave.java b/Mage.Sets/src/mage/cards/g/GenesisWave.java
index 6af54bf6921..905d03069fd 100644
--- a/Mage.Sets/src/mage/cards/g/GenesisWave.java
+++ b/Mage.Sets/src/mage/cards/g/GenesisWave.java
@@ -46,7 +46,7 @@ import mage.target.TargetCard;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class GenesisWave extends CardImpl {
+public final class GenesisWave extends CardImpl {
public GenesisWave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java
index 96a4d795317..893dc373341 100644
--- a/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java
+++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class GenjuOfTheCedars extends CardImpl {
+public final class GenjuOfTheCedars extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.FOREST, "Forest");
diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java
index ad8011fd361..d31667b4cf9 100644
--- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java
+++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class GenjuOfTheFalls extends CardImpl {
+public final class GenjuOfTheFalls extends CardImpl {
private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.ISLAND, "Island");
diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java
index 512920bd752..6c3d8f6866c 100644
--- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java
+++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class GenjuOfTheFens extends CardImpl {
+public final class GenjuOfTheFens extends CardImpl {
private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.SWAMP, "Swamp");
diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java
index 279e91389c8..683665aa01d 100644
--- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java
+++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class GenjuOfTheFields extends CardImpl {
+public final class GenjuOfTheFields extends CardImpl {
private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.PLAINS, "Plains");
diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java
index 9235c07049a..7a513e710ec 100644
--- a/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java
+++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class GenjuOfTheRealm extends CardImpl {
+public final class GenjuOfTheRealm extends CardImpl {
public GenjuOfTheRealm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java
index bc97fcbd270..f33b3216fed 100644
--- a/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java
+++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class GenjuOfTheSpires extends CardImpl {
+public final class GenjuOfTheSpires extends CardImpl {
private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.MOUNTAIN, "Mountain");
diff --git a/Mage.Sets/src/mage/cards/g/Geosurge.java b/Mage.Sets/src/mage/cards/g/Geosurge.java
index 32a025ce4a7..82b98e1a537 100644
--- a/Mage.Sets/src/mage/cards/g/Geosurge.java
+++ b/Mage.Sets/src/mage/cards/g/Geosurge.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author North
*/
-public class Geosurge extends CardImpl {
+public final class Geosurge extends CardImpl {
public Geosurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GeothermalCrevice.java b/Mage.Sets/src/mage/cards/g/GeothermalCrevice.java
index b5e8a9d7121..68e34f511b4 100644
--- a/Mage.Sets/src/mage/cards/g/GeothermalCrevice.java
+++ b/Mage.Sets/src/mage/cards/g/GeothermalCrevice.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author jonubuu
*/
-public class GeothermalCrevice extends CardImpl {
+public final class GeothermalCrevice extends CardImpl {
public GeothermalCrevice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GeralfsMasterpiece.java b/Mage.Sets/src/mage/cards/g/GeralfsMasterpiece.java
index 92dd7e0bcc6..f10346c5f81 100644
--- a/Mage.Sets/src/mage/cards/g/GeralfsMasterpiece.java
+++ b/Mage.Sets/src/mage/cards/g/GeralfsMasterpiece.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class GeralfsMasterpiece extends CardImpl {
+public final class GeralfsMasterpiece extends CardImpl {
public GeralfsMasterpiece(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GeralfsMessenger.java b/Mage.Sets/src/mage/cards/g/GeralfsMessenger.java
index 1803af8e021..b61006a8899 100644
--- a/Mage.Sets/src/mage/cards/g/GeralfsMessenger.java
+++ b/Mage.Sets/src/mage/cards/g/GeralfsMessenger.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class GeralfsMessenger extends CardImpl {
+public final class GeralfsMessenger extends CardImpl {
public GeralfsMessenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GeralfsMindcrusher.java b/Mage.Sets/src/mage/cards/g/GeralfsMindcrusher.java
index 887be7754ea..d0a5ae751f2 100644
--- a/Mage.Sets/src/mage/cards/g/GeralfsMindcrusher.java
+++ b/Mage.Sets/src/mage/cards/g/GeralfsMindcrusher.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class GeralfsMindcrusher extends CardImpl {
+public final class GeralfsMindcrusher extends CardImpl {
public GeralfsMindcrusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GerrardCapashen.java b/Mage.Sets/src/mage/cards/g/GerrardCapashen.java
index 65166526a91..3e2e07dab03 100644
--- a/Mage.Sets/src/mage/cards/g/GerrardCapashen.java
+++ b/Mage.Sets/src/mage/cards/g/GerrardCapashen.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author FenrisulfrX
*/
-public class GerrardCapashen extends CardImpl {
+public final class GerrardCapashen extends CardImpl {
public GerrardCapashen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java b/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java
index 87e32f361ca..6ac3232abd9 100644
--- a/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java
+++ b/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class GerrardsBattleCry extends CardImpl {
+public final class GerrardsBattleCry extends CardImpl {
public GerrardsBattleCry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GerrardsCommand.java b/Mage.Sets/src/mage/cards/g/GerrardsCommand.java
index cf5e4177878..90fef1e5e1c 100644
--- a/Mage.Sets/src/mage/cards/g/GerrardsCommand.java
+++ b/Mage.Sets/src/mage/cards/g/GerrardsCommand.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author FenrisulfrX
*/
-public class GerrardsCommand extends CardImpl {
+public final class GerrardsCommand extends CardImpl {
public GerrardsCommand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GerrardsIrregulars.java b/Mage.Sets/src/mage/cards/g/GerrardsIrregulars.java
index a530cd6d49a..88a7ae53921 100644
--- a/Mage.Sets/src/mage/cards/g/GerrardsIrregulars.java
+++ b/Mage.Sets/src/mage/cards/g/GerrardsIrregulars.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GerrardsIrregulars extends CardImpl {
+public final class GerrardsIrregulars extends CardImpl {
public GerrardsIrregulars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GerrardsVerdict.java b/Mage.Sets/src/mage/cards/g/GerrardsVerdict.java
index 9d1e27fc3bc..f840a3190b8 100644
--- a/Mage.Sets/src/mage/cards/g/GerrardsVerdict.java
+++ b/Mage.Sets/src/mage/cards/g/GerrardsVerdict.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class GerrardsVerdict extends CardImpl {
+public final class GerrardsVerdict extends CardImpl {
public GerrardsVerdict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GerrardsWisdom.java b/Mage.Sets/src/mage/cards/g/GerrardsWisdom.java
index 7a361c3128d..b8cef510216 100644
--- a/Mage.Sets/src/mage/cards/g/GerrardsWisdom.java
+++ b/Mage.Sets/src/mage/cards/g/GerrardsWisdom.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
* @author LoneFox
*/
-public class GerrardsWisdom extends CardImpl {
+public final class GerrardsWisdom extends CardImpl {
public GerrardsWisdom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GethLordOfTheVault.java b/Mage.Sets/src/mage/cards/g/GethLordOfTheVault.java
index 68f470108bf..af581afecbf 100644
--- a/Mage.Sets/src/mage/cards/g/GethLordOfTheVault.java
+++ b/Mage.Sets/src/mage/cards/g/GethLordOfTheVault.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
/**
* @author nantuko
*/
-public class GethLordOfTheVault extends CardImpl {
+public final class GethLordOfTheVault extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact or creature card with converted mana cost X from an opponent's graveyard");
diff --git a/Mage.Sets/src/mage/cards/g/GethsGrimoire.java b/Mage.Sets/src/mage/cards/g/GethsGrimoire.java
index e9ceef5a20d..03b1598fdb5 100644
--- a/Mage.Sets/src/mage/cards/g/GethsGrimoire.java
+++ b/Mage.Sets/src/mage/cards/g/GethsGrimoire.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Mitchel Sein
*/
-public class GethsGrimoire extends CardImpl {
+public final class GethsGrimoire extends CardImpl {
public GethsGrimoire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GethsVerdict.java b/Mage.Sets/src/mage/cards/g/GethsVerdict.java
index 58253b7a1d4..3ff73d8e258 100644
--- a/Mage.Sets/src/mage/cards/g/GethsVerdict.java
+++ b/Mage.Sets/src/mage/cards/g/GethsVerdict.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class GethsVerdict extends CardImpl {
+public final class GethsVerdict extends CardImpl {
public GethsVerdict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GeyserGlider.java b/Mage.Sets/src/mage/cards/g/GeyserGlider.java
index d2bb2310f02..103030f07dd 100644
--- a/Mage.Sets/src/mage/cards/g/GeyserGlider.java
+++ b/Mage.Sets/src/mage/cards/g/GeyserGlider.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class GeyserGlider extends CardImpl {
+public final class GeyserGlider extends CardImpl {
public GeyserGlider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GeyserfieldStalker.java b/Mage.Sets/src/mage/cards/g/GeyserfieldStalker.java
index 8e64d05eea4..9a4d8bd52fb 100644
--- a/Mage.Sets/src/mage/cards/g/GeyserfieldStalker.java
+++ b/Mage.Sets/src/mage/cards/g/GeyserfieldStalker.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class GeyserfieldStalker extends CardImpl {
+public final class GeyserfieldStalker extends CardImpl {
public GeyserfieldStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhalmasWarden.java b/Mage.Sets/src/mage/cards/g/GhalmasWarden.java
index b2c831d9de0..4eb1d376476 100644
--- a/Mage.Sets/src/mage/cards/g/GhalmasWarden.java
+++ b/Mage.Sets/src/mage/cards/g/GhalmasWarden.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class GhalmasWarden extends CardImpl {
+public final class GhalmasWarden extends CardImpl {
private static final String text = "Metalcraft - Ghalma's Warden gets +2/+2 as long as you control three or more artifacts";
diff --git a/Mage.Sets/src/mage/cards/g/GhaltaPrimalHunger.java b/Mage.Sets/src/mage/cards/g/GhaltaPrimalHunger.java
index 4475fd1c4e3..3dea3e8fc82 100644
--- a/Mage.Sets/src/mage/cards/g/GhaltaPrimalHunger.java
+++ b/Mage.Sets/src/mage/cards/g/GhaltaPrimalHunger.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class GhaltaPrimalHunger extends CardImpl {
+public final class GhaltaPrimalHunger extends CardImpl {
public GhaltaPrimalHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{10}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GhastlordOfFugue.java b/Mage.Sets/src/mage/cards/g/GhastlordOfFugue.java
index 208a72e2590..5e7fc89c9c0 100644
--- a/Mage.Sets/src/mage/cards/g/GhastlordOfFugue.java
+++ b/Mage.Sets/src/mage/cards/g/GhastlordOfFugue.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class GhastlordOfFugue extends CardImpl {
+public final class GhastlordOfFugue extends CardImpl {
public GhastlordOfFugue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U/B}{U/B}{U/B}{U/B}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhastlyConscription.java b/Mage.Sets/src/mage/cards/g/GhastlyConscription.java
index cb18627fe33..dcad8c6ee77 100644
--- a/Mage.Sets/src/mage/cards/g/GhastlyConscription.java
+++ b/Mage.Sets/src/mage/cards/g/GhastlyConscription.java
@@ -52,7 +52,7 @@ import java.util.*;
*
* @author LevelX2
*/
-public class GhastlyConscription extends CardImpl {
+public final class GhastlyConscription extends CardImpl {
public GhastlyConscription(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhastlyDemise.java b/Mage.Sets/src/mage/cards/g/GhastlyDemise.java
index dd644caf355..b53148ed636 100644
--- a/Mage.Sets/src/mage/cards/g/GhastlyDemise.java
+++ b/Mage.Sets/src/mage/cards/g/GhastlyDemise.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FirstTargetPointer;
*
* @author cbt33
*/
-public class GhastlyDemise extends CardImpl {
+public final class GhastlyDemise extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature if its tougness is less than the number of cards in your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GhastlyDiscovery.java b/Mage.Sets/src/mage/cards/g/GhastlyDiscovery.java
index 9ea6daba008..78f977ee5f2 100644
--- a/Mage.Sets/src/mage/cards/g/GhastlyDiscovery.java
+++ b/Mage.Sets/src/mage/cards/g/GhastlyDiscovery.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class GhastlyDiscovery extends CardImpl {
+public final class GhastlyDiscovery extends CardImpl {
public GhastlyDiscovery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GhastlyHaunting.java b/Mage.Sets/src/mage/cards/g/GhastlyHaunting.java
index 5e74a2d3aac..6541ac70282 100644
--- a/Mage.Sets/src/mage/cards/g/GhastlyHaunting.java
+++ b/Mage.Sets/src/mage/cards/g/GhastlyHaunting.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward
*/
-public class GhastlyHaunting extends CardImpl {
+public final class GhastlyHaunting extends CardImpl {
public GhastlyHaunting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"");
diff --git a/Mage.Sets/src/mage/cards/g/GhastlyRemains.java b/Mage.Sets/src/mage/cards/g/GhastlyRemains.java
index 678f8814420..161498ed82b 100644
--- a/Mage.Sets/src/mage/cards/g/GhastlyRemains.java
+++ b/Mage.Sets/src/mage/cards/g/GhastlyRemains.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class GhastlyRemains extends CardImpl {
+public final class GhastlyRemains extends CardImpl {
public GhastlyRemains(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhaveGuruOfSpores.java b/Mage.Sets/src/mage/cards/g/GhaveGuruOfSpores.java
index af6ae0fb96e..dc69fd9397f 100644
--- a/Mage.Sets/src/mage/cards/g/GhaveGuruOfSpores.java
+++ b/Mage.Sets/src/mage/cards/g/GhaveGuruOfSpores.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class GhaveGuruOfSpores extends CardImpl {
+public final class GhaveGuruOfSpores extends CardImpl {
public GhaveGuruOfSpores(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GhazbanOgre.java b/Mage.Sets/src/mage/cards/g/GhazbanOgre.java
index 90183ebaf4c..54f534f7c3c 100644
--- a/Mage.Sets/src/mage/cards/g/GhazbanOgre.java
+++ b/Mage.Sets/src/mage/cards/g/GhazbanOgre.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
* @author MarcoMarin, Watch out! This one I actually made from scratch!(1st
* time \o/) Not even checked similars :) beware!
*/
-public class GhazbanOgre extends CardImpl {
+public final class GhazbanOgre extends CardImpl {
public GhazbanOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GhirapurAetherGrid.java b/Mage.Sets/src/mage/cards/g/GhirapurAetherGrid.java
index 655b1792ae6..24d4600cb31 100644
--- a/Mage.Sets/src/mage/cards/g/GhirapurAetherGrid.java
+++ b/Mage.Sets/src/mage/cards/g/GhirapurAetherGrid.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Wehk
*/
-public class GhirapurAetherGrid extends CardImpl {
+public final class GhirapurAetherGrid extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped artifacts you control");
diff --git a/Mage.Sets/src/mage/cards/g/GhirapurGearcrafter.java b/Mage.Sets/src/mage/cards/g/GhirapurGearcrafter.java
index 811d702b117..d2fcd2ef43d 100644
--- a/Mage.Sets/src/mage/cards/g/GhirapurGearcrafter.java
+++ b/Mage.Sets/src/mage/cards/g/GhirapurGearcrafter.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author fireshoes
*/
-public class GhirapurGearcrafter extends CardImpl {
+public final class GhirapurGearcrafter extends CardImpl {
public GhirapurGearcrafter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhirapurGuide.java b/Mage.Sets/src/mage/cards/g/GhirapurGuide.java
index fac5524a786..10bc60524b1 100644
--- a/Mage.Sets/src/mage/cards/g/GhirapurGuide.java
+++ b/Mage.Sets/src/mage/cards/g/GhirapurGuide.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GhirapurGuide extends CardImpl {
+public final class GhirapurGuide extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/g/GhirapurOrrery.java b/Mage.Sets/src/mage/cards/g/GhirapurOrrery.java
index b338b9254c3..988025ae368 100644
--- a/Mage.Sets/src/mage/cards/g/GhirapurOrrery.java
+++ b/Mage.Sets/src/mage/cards/g/GhirapurOrrery.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class GhirapurOrrery extends CardImpl {
+public final class GhirapurOrrery extends CardImpl {
public GhirapurOrrery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GhirapurOsprey.java b/Mage.Sets/src/mage/cards/g/GhirapurOsprey.java
index 0baef5d036b..a095df24d45 100644
--- a/Mage.Sets/src/mage/cards/g/GhirapurOsprey.java
+++ b/Mage.Sets/src/mage/cards/g/GhirapurOsprey.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class GhirapurOsprey extends CardImpl {
+public final class GhirapurOsprey extends CardImpl {
public GhirapurOsprey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GhituChronicler.java b/Mage.Sets/src/mage/cards/g/GhituChronicler.java
index 3607ccaa10d..d430af443e8 100644
--- a/Mage.Sets/src/mage/cards/g/GhituChronicler.java
+++ b/Mage.Sets/src/mage/cards/g/GhituChronicler.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class GhituChronicler extends CardImpl {
+public final class GhituChronicler extends CardImpl {
public GhituChronicler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhituEncampment.java b/Mage.Sets/src/mage/cards/g/GhituEncampment.java
index ad75e03c89b..bbd6bfc479e 100644
--- a/Mage.Sets/src/mage/cards/g/GhituEncampment.java
+++ b/Mage.Sets/src/mage/cards/g/GhituEncampment.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author North
*/
-public class GhituEncampment extends CardImpl {
+public final class GhituEncampment extends CardImpl {
public GhituEncampment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GhituFire.java b/Mage.Sets/src/mage/cards/g/GhituFire.java
index f5c4ccc856c..39d8387ff59 100644
--- a/Mage.Sets/src/mage/cards/g/GhituFire.java
+++ b/Mage.Sets/src/mage/cards/g/GhituFire.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*
*/
-public class GhituFire extends CardImpl {
+public final class GhituFire extends CardImpl {
public GhituFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhituFireEater.java b/Mage.Sets/src/mage/cards/g/GhituFireEater.java
index fd93501d4a3..a3cc38a0cd8 100644
--- a/Mage.Sets/src/mage/cards/g/GhituFireEater.java
+++ b/Mage.Sets/src/mage/cards/g/GhituFireEater.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*/
-public class GhituFireEater extends CardImpl {
+public final class GhituFireEater extends CardImpl {
public GhituFireEater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhituFirebreathing.java b/Mage.Sets/src/mage/cards/g/GhituFirebreathing.java
index 859915cb218..4d2b00bdec3 100644
--- a/Mage.Sets/src/mage/cards/g/GhituFirebreathing.java
+++ b/Mage.Sets/src/mage/cards/g/GhituFirebreathing.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GhituFirebreathing extends CardImpl {
+public final class GhituFirebreathing extends CardImpl {
public GhituFirebreathing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhituJourneymage.java b/Mage.Sets/src/mage/cards/g/GhituJourneymage.java
index 49a482774b1..eb5d5158ea4 100644
--- a/Mage.Sets/src/mage/cards/g/GhituJourneymage.java
+++ b/Mage.Sets/src/mage/cards/g/GhituJourneymage.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author TheElk801
*/
-public class GhituJourneymage extends CardImpl {
+public final class GhituJourneymage extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Wizard");
diff --git a/Mage.Sets/src/mage/cards/g/GhituLavarunner.java b/Mage.Sets/src/mage/cards/g/GhituLavarunner.java
index 164c9487d13..3984a48b139 100644
--- a/Mage.Sets/src/mage/cards/g/GhituLavarunner.java
+++ b/Mage.Sets/src/mage/cards/g/GhituLavarunner.java
@@ -48,7 +48,7 @@ import mage.filter.StaticFilters;
*
* @author Will
*/
-public class GhituLavarunner extends CardImpl{
+public final class GhituLavarunner extends CardImpl{
public GhituLavarunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhituSlinger.java b/Mage.Sets/src/mage/cards/g/GhituSlinger.java
index 05ecf226d75..85abd01b987 100644
--- a/Mage.Sets/src/mage/cards/g/GhituSlinger.java
+++ b/Mage.Sets/src/mage/cards/g/GhituSlinger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Backfir3
*/
-public class GhituSlinger extends CardImpl {
+public final class GhituSlinger extends CardImpl {
public GhituSlinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhituWarCry.java b/Mage.Sets/src/mage/cards/g/GhituWarCry.java
index 1d6144501be..894a7c5b557 100644
--- a/Mage.Sets/src/mage/cards/g/GhituWarCry.java
+++ b/Mage.Sets/src/mage/cards/g/GhituWarCry.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class GhituWarCry extends CardImpl {
+public final class GhituWarCry extends CardImpl {
public GhituWarCry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhorClanBloodscale.java b/Mage.Sets/src/mage/cards/g/GhorClanBloodscale.java
index efed9bf3868..9d08ab1468d 100644
--- a/Mage.Sets/src/mage/cards/g/GhorClanBloodscale.java
+++ b/Mage.Sets/src/mage/cards/g/GhorClanBloodscale.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class GhorClanBloodscale extends CardImpl {
+public final class GhorClanBloodscale extends CardImpl {
public GhorClanBloodscale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhorClanRampager.java b/Mage.Sets/src/mage/cards/g/GhorClanRampager.java
index b6e418b10c8..eca62704323 100644
--- a/Mage.Sets/src/mage/cards/g/GhorClanRampager.java
+++ b/Mage.Sets/src/mage/cards/g/GhorClanRampager.java
@@ -44,7 +44,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class GhorClanRampager extends CardImpl {
+public final class GhorClanRampager extends CardImpl {
public GhorClanRampager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GhorClanSavage.java b/Mage.Sets/src/mage/cards/g/GhorClanSavage.java
index c15dd59ffea..9fc773ad350 100644
--- a/Mage.Sets/src/mage/cards/g/GhorClanSavage.java
+++ b/Mage.Sets/src/mage/cards/g/GhorClanSavage.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GhorClanSavage extends CardImpl {
+public final class GhorClanSavage extends CardImpl {
public GhorClanSavage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostCouncilOfOrzhova.java b/Mage.Sets/src/mage/cards/g/GhostCouncilOfOrzhova.java
index 2a4178f124a..26fd0c49d8b 100644
--- a/Mage.Sets/src/mage/cards/g/GhostCouncilOfOrzhova.java
+++ b/Mage.Sets/src/mage/cards/g/GhostCouncilOfOrzhova.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class GhostCouncilOfOrzhova extends CardImpl {
+public final class GhostCouncilOfOrzhova extends CardImpl {
public GhostCouncilOfOrzhova(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostHounds.java b/Mage.Sets/src/mage/cards/g/GhostHounds.java
index 957b29b27cb..13203499d36 100644
--- a/Mage.Sets/src/mage/cards/g/GhostHounds.java
+++ b/Mage.Sets/src/mage/cards/g/GhostHounds.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Galatolol
*/
-public class GhostHounds extends CardImpl {
+public final class GhostHounds extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creature");
diff --git a/Mage.Sets/src/mage/cards/g/GhostLitNourisher.java b/Mage.Sets/src/mage/cards/g/GhostLitNourisher.java
index 0fb1b83b05e..e551cf5d1bc 100644
--- a/Mage.Sets/src/mage/cards/g/GhostLitNourisher.java
+++ b/Mage.Sets/src/mage/cards/g/GhostLitNourisher.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class GhostLitNourisher extends CardImpl {
+public final class GhostLitNourisher extends CardImpl {
public GhostLitNourisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostLitRaider.java b/Mage.Sets/src/mage/cards/g/GhostLitRaider.java
index ee7b709cf7c..2044a8cc1d4 100644
--- a/Mage.Sets/src/mage/cards/g/GhostLitRaider.java
+++ b/Mage.Sets/src/mage/cards/g/GhostLitRaider.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class GhostLitRaider extends CardImpl {
+public final class GhostLitRaider extends CardImpl {
public GhostLitRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostLitRedeemer.java b/Mage.Sets/src/mage/cards/g/GhostLitRedeemer.java
index d20792088cc..41fbcfe579d 100644
--- a/Mage.Sets/src/mage/cards/g/GhostLitRedeemer.java
+++ b/Mage.Sets/src/mage/cards/g/GhostLitRedeemer.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class GhostLitRedeemer extends CardImpl {
+public final class GhostLitRedeemer extends CardImpl {
public GhostLitRedeemer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostLitStalker.java b/Mage.Sets/src/mage/cards/g/GhostLitStalker.java
index 41ec573224c..3599375eb70 100644
--- a/Mage.Sets/src/mage/cards/g/GhostLitStalker.java
+++ b/Mage.Sets/src/mage/cards/g/GhostLitStalker.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class GhostLitStalker extends CardImpl {
+public final class GhostLitStalker extends CardImpl {
public GhostLitStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostLitWarder.java b/Mage.Sets/src/mage/cards/g/GhostLitWarder.java
index d26128d296d..c114387e3d3 100644
--- a/Mage.Sets/src/mage/cards/g/GhostLitWarder.java
+++ b/Mage.Sets/src/mage/cards/g/GhostLitWarder.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author Plopman
*/
-public class GhostLitWarder extends CardImpl {
+public final class GhostLitWarder extends CardImpl {
public GhostLitWarder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostQuarter.java b/Mage.Sets/src/mage/cards/g/GhostQuarter.java
index c5ab33cb78e..b9ac16ace44 100644
--- a/Mage.Sets/src/mage/cards/g/GhostQuarter.java
+++ b/Mage.Sets/src/mage/cards/g/GhostQuarter.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author North
*/
-public class GhostQuarter extends CardImpl {
+public final class GhostQuarter extends CardImpl {
public GhostQuarter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
@@ -100,7 +100,7 @@ class GhostQuarterEffect extends OneShotEffect {
if (permanent != null) {
Player controller = game.getPlayer(permanent.getControllerId());
if (controller.chooseUse(Outcome.PutLandInPlay, "Do you wish to search for a basic land, put it onto the battlefield and then shuffle your library?", source, game)) {
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, game)) {
Card card = controller.getLibrary().getCard(target.getFirstTarget(), game);
if (card != null) {
diff --git a/Mage.Sets/src/mage/cards/g/GhostShip.java b/Mage.Sets/src/mage/cards/g/GhostShip.java
index 1c52de82025..dfa66cd5edc 100644
--- a/Mage.Sets/src/mage/cards/g/GhostShip.java
+++ b/Mage.Sets/src/mage/cards/g/GhostShip.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author shieldal
*/
-public class GhostShip extends CardImpl {
+public final class GhostShip extends CardImpl {
public GhostShip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostTactician.java b/Mage.Sets/src/mage/cards/g/GhostTactician.java
index 706f24373b3..aa6c4aed43b 100644
--- a/Mage.Sets/src/mage/cards/g/GhostTactician.java
+++ b/Mage.Sets/src/mage/cards/g/GhostTactician.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class GhostTactician extends CardImpl {
+public final class GhostTactician extends CardImpl {
public GhostTactician(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostTown.java b/Mage.Sets/src/mage/cards/g/GhostTown.java
index cc860495d48..19e48e1f28f 100644
--- a/Mage.Sets/src/mage/cards/g/GhostTown.java
+++ b/Mage.Sets/src/mage/cards/g/GhostTown.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class GhostTown extends CardImpl {
+public final class GhostTown extends CardImpl {
public GhostTown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GhostWarden.java b/Mage.Sets/src/mage/cards/g/GhostWarden.java
index 829c3f32965..59e47719b53 100644
--- a/Mage.Sets/src/mage/cards/g/GhostWarden.java
+++ b/Mage.Sets/src/mage/cards/g/GhostWarden.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class GhostWarden extends CardImpl {
+public final class GhostWarden extends CardImpl {
public GhostWarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostbladeEidolon.java b/Mage.Sets/src/mage/cards/g/GhostbladeEidolon.java
index 535664951ef..eecbc436094 100644
--- a/Mage.Sets/src/mage/cards/g/GhostbladeEidolon.java
+++ b/Mage.Sets/src/mage/cards/g/GhostbladeEidolon.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GhostbladeEidolon extends CardImpl {
+public final class GhostbladeEidolon extends CardImpl {
public GhostbladeEidolon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/Ghostfire.java b/Mage.Sets/src/mage/cards/g/Ghostfire.java
index 5fdadfaec3a..d8d0d94b9e3 100644
--- a/Mage.Sets/src/mage/cards/g/Ghostfire.java
+++ b/Mage.Sets/src/mage/cards/g/Ghostfire.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author dustinconrad
*/
-public class Ghostfire extends CardImpl {
+public final class Ghostfire extends CardImpl {
public Ghostfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostfireBlade.java b/Mage.Sets/src/mage/cards/g/GhostfireBlade.java
index 08e83ad17f7..5820c2eb20b 100644
--- a/Mage.Sets/src/mage/cards/g/GhostfireBlade.java
+++ b/Mage.Sets/src/mage/cards/g/GhostfireBlade.java
@@ -48,7 +48,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class GhostfireBlade extends CardImpl {
+public final class GhostfireBlade extends CardImpl {
public GhostfireBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostflameSliver.java b/Mage.Sets/src/mage/cards/g/GhostflameSliver.java
index 94fd6d19403..ca9dbc41e03 100644
--- a/Mage.Sets/src/mage/cards/g/GhostflameSliver.java
+++ b/Mage.Sets/src/mage/cards/g/GhostflameSliver.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author anonymous
*/
-public class GhostflameSliver extends CardImpl {
+public final class GhostflameSliver extends CardImpl {
public GhostflameSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/Ghostform.java b/Mage.Sets/src/mage/cards/g/Ghostform.java
index c6eb5066fe1..88832686356 100644
--- a/Mage.Sets/src/mage/cards/g/Ghostform.java
+++ b/Mage.Sets/src/mage/cards/g/Ghostform.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author noxx
*/
-public class Ghostform extends CardImpl {
+public final class Ghostform extends CardImpl {
public Ghostform(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GhosthelmCourier.java b/Mage.Sets/src/mage/cards/g/GhosthelmCourier.java
index ea3e110abd0..4b00ebf44d7 100644
--- a/Mage.Sets/src/mage/cards/g/GhosthelmCourier.java
+++ b/Mage.Sets/src/mage/cards/g/GhosthelmCourier.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class GhosthelmCourier extends CardImpl {
+public final class GhosthelmCourier extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wizard creature");
diff --git a/Mage.Sets/src/mage/cards/g/GhostlyChangeling.java b/Mage.Sets/src/mage/cards/g/GhostlyChangeling.java
index 8fc88e22b13..f7a70df8916 100644
--- a/Mage.Sets/src/mage/cards/g/GhostlyChangeling.java
+++ b/Mage.Sets/src/mage/cards/g/GhostlyChangeling.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class GhostlyChangeling extends CardImpl {
+public final class GhostlyChangeling extends CardImpl {
public GhostlyChangeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostlyFlicker.java b/Mage.Sets/src/mage/cards/g/GhostlyFlicker.java
index 84d9c3dacc0..60ff4997519 100644
--- a/Mage.Sets/src/mage/cards/g/GhostlyFlicker.java
+++ b/Mage.Sets/src/mage/cards/g/GhostlyFlicker.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author noxx
*/
-public class GhostlyFlicker extends CardImpl {
+public final class GhostlyFlicker extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifacts, creatures, and/or lands you control");
diff --git a/Mage.Sets/src/mage/cards/g/GhostlyPossession.java b/Mage.Sets/src/mage/cards/g/GhostlyPossession.java
index fc7b5f5b7a5..db0d8c658c4 100644
--- a/Mage.Sets/src/mage/cards/g/GhostlyPossession.java
+++ b/Mage.Sets/src/mage/cards/g/GhostlyPossession.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward
*/
-public class GhostlyPossession extends CardImpl {
+public final class GhostlyPossession extends CardImpl {
public GhostlyPossession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostlyPrison.java b/Mage.Sets/src/mage/cards/g/GhostlyPrison.java
index 346408b0e84..6c2382520ba 100644
--- a/Mage.Sets/src/mage/cards/g/GhostlyPrison.java
+++ b/Mage.Sets/src/mage/cards/g/GhostlyPrison.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class GhostlyPrison extends CardImpl {
+public final class GhostlyPrison extends CardImpl {
public GhostlyPrison(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostlySentinel.java b/Mage.Sets/src/mage/cards/g/GhostlySentinel.java
index b3409455a51..12714ef61c5 100644
--- a/Mage.Sets/src/mage/cards/g/GhostlySentinel.java
+++ b/Mage.Sets/src/mage/cards/g/GhostlySentinel.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GhostlySentinel extends CardImpl {
+public final class GhostlySentinel extends CardImpl {
public GhostlySentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostlyTouch.java b/Mage.Sets/src/mage/cards/g/GhostlyTouch.java
index 997a64f16e7..4e190fb5ba3 100644
--- a/Mage.Sets/src/mage/cards/g/GhostlyTouch.java
+++ b/Mage.Sets/src/mage/cards/g/GhostlyTouch.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author noxx
*/
-public class GhostlyTouch extends CardImpl {
+public final class GhostlyTouch extends CardImpl {
public GhostlyTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostlyVisit.java b/Mage.Sets/src/mage/cards/g/GhostlyVisit.java
index c947d6e907f..cf8ac862dea 100644
--- a/Mage.Sets/src/mage/cards/g/GhostlyVisit.java
+++ b/Mage.Sets/src/mage/cards/g/GhostlyVisit.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class GhostlyVisit extends CardImpl {
+public final class GhostlyVisit extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/g/GhostlyWings.java b/Mage.Sets/src/mage/cards/g/GhostlyWings.java
index 4a31fe90c72..bc4de82b9e4 100644
--- a/Mage.Sets/src/mage/cards/g/GhostlyWings.java
+++ b/Mage.Sets/src/mage/cards/g/GhostlyWings.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GhostlyWings extends CardImpl {
+public final class GhostlyWings extends CardImpl {
public GhostlyWings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostsOfTheDamned.java b/Mage.Sets/src/mage/cards/g/GhostsOfTheDamned.java
index 5b3052de140..9f6b3ffcda3 100644
--- a/Mage.Sets/src/mage/cards/g/GhostsOfTheDamned.java
+++ b/Mage.Sets/src/mage/cards/g/GhostsOfTheDamned.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author hanasu
*/
-public class GhostsOfTheDamned extends CardImpl {
+public final class GhostsOfTheDamned extends CardImpl {
public GhostsOfTheDamned(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhostsOfTheInnocent.java b/Mage.Sets/src/mage/cards/g/GhostsOfTheInnocent.java
index d89fb0b6365..f33d55e0e24 100644
--- a/Mage.Sets/src/mage/cards/g/GhostsOfTheInnocent.java
+++ b/Mage.Sets/src/mage/cards/g/GhostsOfTheInnocent.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class GhostsOfTheInnocent extends CardImpl {
+public final class GhostsOfTheInnocent extends CardImpl {
public GhostsOfTheInnocent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/Ghostway.java b/Mage.Sets/src/mage/cards/g/Ghostway.java
index bc482cd628b..7cb02abf526 100644
--- a/Mage.Sets/src/mage/cards/g/Ghostway.java
+++ b/Mage.Sets/src/mage/cards/g/Ghostway.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class Ghostway extends CardImpl {
+public final class Ghostway extends CardImpl {
public Ghostway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GhoulcallerGisa.java b/Mage.Sets/src/mage/cards/g/GhoulcallerGisa.java
index 95754f8e7cc..bb8d9b05aba 100644
--- a/Mage.Sets/src/mage/cards/g/GhoulcallerGisa.java
+++ b/Mage.Sets/src/mage/cards/g/GhoulcallerGisa.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class GhoulcallerGisa extends CardImpl {
+public final class GhoulcallerGisa extends CardImpl {
public GhoulcallerGisa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhoulcallersAccomplice.java b/Mage.Sets/src/mage/cards/g/GhoulcallersAccomplice.java
index 821b0c6f899..420f66d9bc2 100644
--- a/Mage.Sets/src/mage/cards/g/GhoulcallersAccomplice.java
+++ b/Mage.Sets/src/mage/cards/g/GhoulcallersAccomplice.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author fireshoes
*/
-public class GhoulcallersAccomplice extends CardImpl {
+public final class GhoulcallersAccomplice extends CardImpl {
public GhoulcallersAccomplice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhoulcallersBell.java b/Mage.Sets/src/mage/cards/g/GhoulcallersBell.java
index c88f2df7d98..b3d3198acbb 100644
--- a/Mage.Sets/src/mage/cards/g/GhoulcallersBell.java
+++ b/Mage.Sets/src/mage/cards/g/GhoulcallersBell.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author North
*/
-public class GhoulcallersBell extends CardImpl {
+public final class GhoulcallersBell extends CardImpl {
public GhoulcallersBell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/g/GhoulcallersChant.java b/Mage.Sets/src/mage/cards/g/GhoulcallersChant.java
index b5971dab4bc..36da8de9ea0 100644
--- a/Mage.Sets/src/mage/cards/g/GhoulcallersChant.java
+++ b/Mage.Sets/src/mage/cards/g/GhoulcallersChant.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class GhoulcallersChant extends CardImpl {
+public final class GhoulcallersChant extends CardImpl {
private static final FilterCard filter = new FilterCard("Zombie cards from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/g/Ghoulflesh.java b/Mage.Sets/src/mage/cards/g/Ghoulflesh.java
index 37249ac3a88..b6acc32fa7b 100644
--- a/Mage.Sets/src/mage/cards/g/Ghoulflesh.java
+++ b/Mage.Sets/src/mage/cards/g/Ghoulflesh.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class Ghoulflesh extends CardImpl {
+public final class Ghoulflesh extends CardImpl {
public Ghoulflesh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Ghoulraiser.java b/Mage.Sets/src/mage/cards/g/Ghoulraiser.java
index b23a86e966c..de4b99c179c 100644
--- a/Mage.Sets/src/mage/cards/g/Ghoulraiser.java
+++ b/Mage.Sets/src/mage/cards/g/Ghoulraiser.java
@@ -49,7 +49,7 @@ import mage.util.RandomUtil;
*
* @author North
*/
-public class Ghoulraiser extends CardImpl {
+public final class Ghoulraiser extends CardImpl {
public Ghoulraiser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhoulsFeast.java b/Mage.Sets/src/mage/cards/g/GhoulsFeast.java
index bb6e64fd282..2a8db6084ca 100644
--- a/Mage.Sets/src/mage/cards/g/GhoulsFeast.java
+++ b/Mage.Sets/src/mage/cards/g/GhoulsFeast.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GhoulsFeast extends CardImpl {
+public final class GhoulsFeast extends CardImpl {
public GhoulsFeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Ghoulsteed.java b/Mage.Sets/src/mage/cards/g/Ghoulsteed.java
index 16e819fed9e..e02b262c462 100644
--- a/Mage.Sets/src/mage/cards/g/Ghoulsteed.java
+++ b/Mage.Sets/src/mage/cards/g/Ghoulsteed.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class Ghoulsteed extends CardImpl {
+public final class Ghoulsteed extends CardImpl {
public Ghoulsteed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Ghoultree.java b/Mage.Sets/src/mage/cards/g/Ghoultree.java
index e4b7c71c590..a70e3293c22 100644
--- a/Mage.Sets/src/mage/cards/g/Ghoultree.java
+++ b/Mage.Sets/src/mage/cards/g/Ghoultree.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author North
*/
-public class Ghoultree extends CardImpl {
+public final class Ghoultree extends CardImpl {
public Ghoultree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{7}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantAdephage.java b/Mage.Sets/src/mage/cards/g/GiantAdephage.java
index babd4150a99..e610e60c941 100644
--- a/Mage.Sets/src/mage/cards/g/GiantAdephage.java
+++ b/Mage.Sets/src/mage/cards/g/GiantAdephage.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GiantAdephage extends CardImpl {
+public final class GiantAdephage extends CardImpl {
public GiantAdephage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantAmbushBeetle.java b/Mage.Sets/src/mage/cards/g/GiantAmbushBeetle.java
index c3f8059363d..f33944f34a8 100644
--- a/Mage.Sets/src/mage/cards/g/GiantAmbushBeetle.java
+++ b/Mage.Sets/src/mage/cards/g/GiantAmbushBeetle.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class GiantAmbushBeetle extends CardImpl {
+public final class GiantAmbushBeetle extends CardImpl {
public GiantAmbushBeetle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B/G}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantBadger.java b/Mage.Sets/src/mage/cards/g/GiantBadger.java
index 162446aa962..ccdb0de8025 100644
--- a/Mage.Sets/src/mage/cards/g/GiantBadger.java
+++ b/Mage.Sets/src/mage/cards/g/GiantBadger.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class GiantBadger extends CardImpl {
+public final class GiantBadger extends CardImpl {
public GiantBadger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantCaterpillar.java b/Mage.Sets/src/mage/cards/g/GiantCaterpillar.java
index 5ffa4bf51d5..f40fea9fcd6 100644
--- a/Mage.Sets/src/mage/cards/g/GiantCaterpillar.java
+++ b/Mage.Sets/src/mage/cards/g/GiantCaterpillar.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.ButterflyToken;
*
* @author LoneFox
*/
-public class GiantCaterpillar extends CardImpl {
+public final class GiantCaterpillar extends CardImpl {
public GiantCaterpillar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantCockroach.java b/Mage.Sets/src/mage/cards/g/GiantCockroach.java
index 3040c6ffb83..87898822f16 100644
--- a/Mage.Sets/src/mage/cards/g/GiantCockroach.java
+++ b/Mage.Sets/src/mage/cards/g/GiantCockroach.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GiantCockroach extends CardImpl {
+public final class GiantCockroach extends CardImpl {
public GiantCockroach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantCrab.java b/Mage.Sets/src/mage/cards/g/GiantCrab.java
index 04aecaa32b9..0b694c161dd 100644
--- a/Mage.Sets/src/mage/cards/g/GiantCrab.java
+++ b/Mage.Sets/src/mage/cards/g/GiantCrab.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class GiantCrab extends CardImpl {
+public final class GiantCrab extends CardImpl {
public GiantCrab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantDustwasp.java b/Mage.Sets/src/mage/cards/g/GiantDustwasp.java
index 34bdd2d4b63..011b40aab51 100644
--- a/Mage.Sets/src/mage/cards/g/GiantDustwasp.java
+++ b/Mage.Sets/src/mage/cards/g/GiantDustwasp.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GiantDustwasp extends CardImpl {
+public final class GiantDustwasp extends CardImpl {
public GiantDustwasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantGrowth.java b/Mage.Sets/src/mage/cards/g/GiantGrowth.java
index ddccec1434f..c356509cff7 100644
--- a/Mage.Sets/src/mage/cards/g/GiantGrowth.java
+++ b/Mage.Sets/src/mage/cards/g/GiantGrowth.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GiantGrowth extends CardImpl {
+public final class GiantGrowth extends CardImpl {
public GiantGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantHarbinger.java b/Mage.Sets/src/mage/cards/g/GiantHarbinger.java
index 3986903a289..1e7edee6791 100644
--- a/Mage.Sets/src/mage/cards/g/GiantHarbinger.java
+++ b/Mage.Sets/src/mage/cards/g/GiantHarbinger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class GiantHarbinger extends CardImpl {
+public final class GiantHarbinger extends CardImpl {
static final FilterCard filter = new FilterCard("Giant card");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GiantMantis.java b/Mage.Sets/src/mage/cards/g/GiantMantis.java
index c03174c64c7..d556d3e7ee8 100644
--- a/Mage.Sets/src/mage/cards/g/GiantMantis.java
+++ b/Mage.Sets/src/mage/cards/g/GiantMantis.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GiantMantis extends CardImpl {
+public final class GiantMantis extends CardImpl {
public GiantMantis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantOctopus.java b/Mage.Sets/src/mage/cards/g/GiantOctopus.java
index 88a8507d732..9b2b1e595dc 100644
--- a/Mage.Sets/src/mage/cards/g/GiantOctopus.java
+++ b/Mage.Sets/src/mage/cards/g/GiantOctopus.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GiantOctopus extends CardImpl {
+public final class GiantOctopus extends CardImpl {
public GiantOctopus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantScorpion.java b/Mage.Sets/src/mage/cards/g/GiantScorpion.java
index 75bc631b7af..dfa379a797e 100644
--- a/Mage.Sets/src/mage/cards/g/GiantScorpion.java
+++ b/Mage.Sets/src/mage/cards/g/GiantScorpion.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GiantScorpion extends CardImpl {
+public final class GiantScorpion extends CardImpl {
public GiantScorpion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantShark.java b/Mage.Sets/src/mage/cards/g/GiantShark.java
index 6a63caa325b..3d78dcfcc67 100644
--- a/Mage.Sets/src/mage/cards/g/GiantShark.java
+++ b/Mage.Sets/src/mage/cards/g/GiantShark.java
@@ -55,7 +55,7 @@ import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate;
* @author KholdFuzion & L_J
*
*/
-public class GiantShark extends CardImpl {
+public final class GiantShark extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("an Island");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature that has been dealt damage this turn");
diff --git a/Mage.Sets/src/mage/cards/g/GiantSolifuge.java b/Mage.Sets/src/mage/cards/g/GiantSolifuge.java
index 46894e89272..5d56f1c8a4a 100644
--- a/Mage.Sets/src/mage/cards/g/GiantSolifuge.java
+++ b/Mage.Sets/src/mage/cards/g/GiantSolifuge.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GiantSolifuge extends CardImpl {
+public final class GiantSolifuge extends CardImpl {
public GiantSolifuge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R/G}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantSpectacle.java b/Mage.Sets/src/mage/cards/g/GiantSpectacle.java
index 230a5d5b699..969b1334c21 100644
--- a/Mage.Sets/src/mage/cards/g/GiantSpectacle.java
+++ b/Mage.Sets/src/mage/cards/g/GiantSpectacle.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GiantSpectacle extends CardImpl {
+public final class GiantSpectacle extends CardImpl {
public GiantSpectacle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantSpider.java b/Mage.Sets/src/mage/cards/g/GiantSpider.java
index 2c396cf37ed..dd30e60ddac 100644
--- a/Mage.Sets/src/mage/cards/g/GiantSpider.java
+++ b/Mage.Sets/src/mage/cards/g/GiantSpider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GiantSpider extends CardImpl {
+public final class GiantSpider extends CardImpl {
public GiantSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantStrength.java b/Mage.Sets/src/mage/cards/g/GiantStrength.java
index 5ff6a3f65e5..d6fd952e5fe 100644
--- a/Mage.Sets/src/mage/cards/g/GiantStrength.java
+++ b/Mage.Sets/src/mage/cards/g/GiantStrength.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class GiantStrength extends CardImpl {
+public final class GiantStrength extends CardImpl {
public GiantStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantTortoise.java b/Mage.Sets/src/mage/cards/g/GiantTortoise.java
index 202a639fce8..9b86faadc2c 100644
--- a/Mage.Sets/src/mage/cards/g/GiantTortoise.java
+++ b/Mage.Sets/src/mage/cards/g/GiantTortoise.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GiantTortoise extends CardImpl {
+public final class GiantTortoise extends CardImpl {
public GiantTortoise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantTrapDoorSpider.java b/Mage.Sets/src/mage/cards/g/GiantTrapDoorSpider.java
index 968ce61a782..819c6877cd8 100644
--- a/Mage.Sets/src/mage/cards/g/GiantTrapDoorSpider.java
+++ b/Mage.Sets/src/mage/cards/g/GiantTrapDoorSpider.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class GiantTrapDoorSpider extends CardImpl {
+public final class GiantTrapDoorSpider extends CardImpl {
private static final FilterCreatureAttackingYou filter = new FilterCreatureAttackingYou("creature without flying that's attacking you");
diff --git a/Mage.Sets/src/mage/cards/g/GiantTurtle.java b/Mage.Sets/src/mage/cards/g/GiantTurtle.java
index 694e0f7f624..33174b42be4 100644
--- a/Mage.Sets/src/mage/cards/g/GiantTurtle.java
+++ b/Mage.Sets/src/mage/cards/g/GiantTurtle.java
@@ -48,7 +48,7 @@ import mage.watchers.common.AttackedLastTurnWatcher;
*
* @author TheElk801
*/
-public class GiantTurtle extends CardImpl {
+public final class GiantTurtle extends CardImpl {
public GiantTurtle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantWarthog.java b/Mage.Sets/src/mage/cards/g/GiantWarthog.java
index 2c31e63e11f..04a9c767622 100644
--- a/Mage.Sets/src/mage/cards/g/GiantWarthog.java
+++ b/Mage.Sets/src/mage/cards/g/GiantWarthog.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GiantWarthog extends CardImpl {
+public final class GiantWarthog extends CardImpl {
public GiantWarthog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Giantbaiting.java b/Mage.Sets/src/mage/cards/g/Giantbaiting.java
index b2a6c5e001a..46d36532ddc 100644
--- a/Mage.Sets/src/mage/cards/g/Giantbaiting.java
+++ b/Mage.Sets/src/mage/cards/g/Giantbaiting.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.GiantBaitingGiantWarriorToken;
*
* @author jeffwadsworth
*/
-public class Giantbaiting extends CardImpl {
+public final class Giantbaiting extends CardImpl {
public Giantbaiting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiantsIre.java b/Mage.Sets/src/mage/cards/g/GiantsIre.java
index 948ebe743e8..033282268a1 100644
--- a/Mage.Sets/src/mage/cards/g/GiantsIre.java
+++ b/Mage.Sets/src/mage/cards/g/GiantsIre.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class GiantsIre extends CardImpl {
+public final class GiantsIre extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Giant");
diff --git a/Mage.Sets/src/mage/cards/g/GibberingDescent.java b/Mage.Sets/src/mage/cards/g/GibberingDescent.java
index f31a1ba6304..82032d1bb7d 100644
--- a/Mage.Sets/src/mage/cards/g/GibberingDescent.java
+++ b/Mage.Sets/src/mage/cards/g/GibberingDescent.java
@@ -50,7 +50,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author emerald000
*/
-public class GibberingDescent extends CardImpl {
+public final class GibberingDescent extends CardImpl {
public GibberingDescent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GibberingFiend.java b/Mage.Sets/src/mage/cards/g/GibberingFiend.java
index e875f2d4264..8be61d8e102 100644
--- a/Mage.Sets/src/mage/cards/g/GibberingFiend.java
+++ b/Mage.Sets/src/mage/cards/g/GibberingFiend.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class GibberingFiend extends CardImpl {
+public final class GibberingFiend extends CardImpl {
public GibberingFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GibberingHyenas.java b/Mage.Sets/src/mage/cards/g/GibberingHyenas.java
index 390a1559c86..82edf07752b 100644
--- a/Mage.Sets/src/mage/cards/g/GibberingHyenas.java
+++ b/Mage.Sets/src/mage/cards/g/GibberingHyenas.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author TheElk801
*/
-public class GibberingHyenas extends CardImpl {
+public final class GibberingHyenas extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GibberingKami.java b/Mage.Sets/src/mage/cards/g/GibberingKami.java
index fb1c21e0fae..e35c2934549 100644
--- a/Mage.Sets/src/mage/cards/g/GibberingKami.java
+++ b/Mage.Sets/src/mage/cards/g/GibberingKami.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class GibberingKami extends CardImpl {
+public final class GibberingKami extends CardImpl {
public GibberingKami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GideonAllyOfZendikar.java b/Mage.Sets/src/mage/cards/g/GideonAllyOfZendikar.java
index 01d3fbd8e38..49a60be969d 100644
--- a/Mage.Sets/src/mage/cards/g/GideonAllyOfZendikar.java
+++ b/Mage.Sets/src/mage/cards/g/GideonAllyOfZendikar.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class GideonAllyOfZendikar extends CardImpl {
+public final class GideonAllyOfZendikar extends CardImpl {
public GideonAllyOfZendikar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GideonBattleForged.java b/Mage.Sets/src/mage/cards/g/GideonBattleForged.java
index 334fdf3a2df..f16bcd19dde 100644
--- a/Mage.Sets/src/mage/cards/g/GideonBattleForged.java
+++ b/Mage.Sets/src/mage/cards/g/GideonBattleForged.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GideonBattleForged extends CardImpl {
+public final class GideonBattleForged extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/g/GideonChampionOfJustice.java b/Mage.Sets/src/mage/cards/g/GideonChampionOfJustice.java
index 667f71b81fa..ce8edfd2f55 100644
--- a/Mage.Sets/src/mage/cards/g/GideonChampionOfJustice.java
+++ b/Mage.Sets/src/mage/cards/g/GideonChampionOfJustice.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class GideonChampionOfJustice extends CardImpl {
+public final class GideonChampionOfJustice extends CardImpl {
public GideonChampionOfJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GideonJura.java b/Mage.Sets/src/mage/cards/g/GideonJura.java
index dc8e7a701d5..02997feaaf6 100644
--- a/Mage.Sets/src/mage/cards/g/GideonJura.java
+++ b/Mage.Sets/src/mage/cards/g/GideonJura.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetOpponent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GideonJura extends CardImpl {
+public final class GideonJura extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/g/GideonMartialParagon.java b/Mage.Sets/src/mage/cards/g/GideonMartialParagon.java
index 3ebfe1df4e2..f4f0784241b 100644
--- a/Mage.Sets/src/mage/cards/g/GideonMartialParagon.java
+++ b/Mage.Sets/src/mage/cards/g/GideonMartialParagon.java
@@ -53,7 +53,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class GideonMartialParagon extends CardImpl {
+public final class GideonMartialParagon extends CardImpl {
public GideonMartialParagon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java b/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java
index d7a6b2103ad..b1787ba621b 100644
--- a/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java
+++ b/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author JRHerlehy
*/
-public class GideonOfTheTrials extends CardImpl {
+public final class GideonOfTheTrials extends CardImpl {
public GideonOfTheTrials(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GideonsAvenger.java b/Mage.Sets/src/mage/cards/g/GideonsAvenger.java
index ce962af5f28..52e3dd254fb 100644
--- a/Mage.Sets/src/mage/cards/g/GideonsAvenger.java
+++ b/Mage.Sets/src/mage/cards/g/GideonsAvenger.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Loki
*/
-public class GideonsAvenger extends CardImpl {
+public final class GideonsAvenger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/g/GideonsDefeat.java b/Mage.Sets/src/mage/cards/g/GideonsDefeat.java
index 7d9502cbf91..3c11673d8d4 100644
--- a/Mage.Sets/src/mage/cards/g/GideonsDefeat.java
+++ b/Mage.Sets/src/mage/cards/g/GideonsDefeat.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GideonsDefeat extends CardImpl {
+public final class GideonsDefeat extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterAttackingOrBlockingCreature("white creature that's attacking or blocking");
diff --git a/Mage.Sets/src/mage/cards/g/GideonsIntervention.java b/Mage.Sets/src/mage/cards/g/GideonsIntervention.java
index c4e9691e631..055a74ca052 100644
--- a/Mage.Sets/src/mage/cards/g/GideonsIntervention.java
+++ b/Mage.Sets/src/mage/cards/g/GideonsIntervention.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author spjspj
*/
-public class GideonsIntervention extends CardImpl {
+public final class GideonsIntervention extends CardImpl {
public GideonsIntervention(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GideonsLawkeeper.java b/Mage.Sets/src/mage/cards/g/GideonsLawkeeper.java
index f14d27e1758..9f57a144442 100644
--- a/Mage.Sets/src/mage/cards/g/GideonsLawkeeper.java
+++ b/Mage.Sets/src/mage/cards/g/GideonsLawkeeper.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class GideonsLawkeeper extends CardImpl {
+public final class GideonsLawkeeper extends CardImpl {
public GideonsLawkeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GideonsPhalanx.java b/Mage.Sets/src/mage/cards/g/GideonsPhalanx.java
index 6a012da973e..3d993ea6cf3 100644
--- a/Mage.Sets/src/mage/cards/g/GideonsPhalanx.java
+++ b/Mage.Sets/src/mage/cards/g/GideonsPhalanx.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.KnightToken;
*
* @author fireshoes
*/
-public class GideonsPhalanx extends CardImpl {
+public final class GideonsPhalanx extends CardImpl {
public GideonsPhalanx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GideonsReproach.java b/Mage.Sets/src/mage/cards/g/GideonsReproach.java
index 53e441d78c7..1fced32dd8b 100644
--- a/Mage.Sets/src/mage/cards/g/GideonsReproach.java
+++ b/Mage.Sets/src/mage/cards/g/GideonsReproach.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author fireshoes
*/
-public class GideonsReproach extends CardImpl {
+public final class GideonsReproach extends CardImpl {
public GideonsReproach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GideonsResolve.java b/Mage.Sets/src/mage/cards/g/GideonsResolve.java
index 476b9cb6cf4..dfb2fd5c328 100644
--- a/Mage.Sets/src/mage/cards/g/GideonsResolve.java
+++ b/Mage.Sets/src/mage/cards/g/GideonsResolve.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author fireshoes
*/
-public class GideonsResolve extends CardImpl {
+public final class GideonsResolve extends CardImpl {
private final static FilterCard filter = new FilterCard("Gideon, Martial Paragon");
diff --git a/Mage.Sets/src/mage/cards/g/GiftOfEstates.java b/Mage.Sets/src/mage/cards/g/GiftOfEstates.java
index 519cc1bc2cc..8bd7f13d4a4 100644
--- a/Mage.Sets/src/mage/cards/g/GiftOfEstates.java
+++ b/Mage.Sets/src/mage/cards/g/GiftOfEstates.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class GiftOfEstates extends CardImpl {
+public final class GiftOfEstates extends CardImpl {
private static final FilterCard filter = new FilterCard("Plains cards");
diff --git a/Mage.Sets/src/mage/cards/g/GiftOfGranite.java b/Mage.Sets/src/mage/cards/g/GiftOfGranite.java
index 66eac0333c9..cd5b9bc02cf 100644
--- a/Mage.Sets/src/mage/cards/g/GiftOfGranite.java
+++ b/Mage.Sets/src/mage/cards/g/GiftOfGranite.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class GiftOfGranite extends CardImpl {
+public final class GiftOfGranite extends CardImpl {
public GiftOfGranite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GiftOfImmortality.java b/Mage.Sets/src/mage/cards/g/GiftOfImmortality.java
index 3360917aea6..ba5a08c8215 100644
--- a/Mage.Sets/src/mage/cards/g/GiftOfImmortality.java
+++ b/Mage.Sets/src/mage/cards/g/GiftOfImmortality.java
@@ -39,8 +39,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.Permanent;
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class GiftOfImmortality extends CardImpl {
+public final class GiftOfImmortality extends CardImpl {
public GiftOfImmortality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
@@ -142,7 +142,7 @@ class GiftOfImmortalityReturnEnchantmentEffect extends OneShotEffect {
Permanent creature = game.getPermanent(getTargetPointer().getFirst(game, source));
if (controller != null && creature != null) {
game.getState().setValue("attachTo:" + aura.getId(), creature);
- aura.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), controller.getId());
+ controller.moveCards(aura, Zone.BATTLEFIELD, source, game);
return creature.addAttachment(aura.getId(), game);
}
}
diff --git a/Mage.Sets/src/mage/cards/g/GiftOfOrzhova.java b/Mage.Sets/src/mage/cards/g/GiftOfOrzhova.java
index 8348ffbe965..56b19b90b7a 100644
--- a/Mage.Sets/src/mage/cards/g/GiftOfOrzhova.java
+++ b/Mage.Sets/src/mage/cards/g/GiftOfOrzhova.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GiftOfOrzhova extends CardImpl {
+public final class GiftOfOrzhova extends CardImpl {
public GiftOfOrzhova(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W/B}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/g/GiftOfParadise.java b/Mage.Sets/src/mage/cards/g/GiftOfParadise.java
index 85c7cb92d90..f5e7549893f 100644
--- a/Mage.Sets/src/mage/cards/g/GiftOfParadise.java
+++ b/Mage.Sets/src/mage/cards/g/GiftOfParadise.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class GiftOfParadise extends CardImpl {
+public final class GiftOfParadise extends CardImpl {
public GiftOfParadise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiftOfStrength.java b/Mage.Sets/src/mage/cards/g/GiftOfStrength.java
index 3e8a17fb875..d0ccc41fbe3 100644
--- a/Mage.Sets/src/mage/cards/g/GiftOfStrength.java
+++ b/Mage.Sets/src/mage/cards/g/GiftOfStrength.java
@@ -11,7 +11,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.target.common.TargetCreaturePermanent;
-public class GiftOfStrength extends CardImpl {
+public final class GiftOfStrength extends CardImpl {
public GiftOfStrength(UUID ownerId, CardSetInfo cardSetInfo) {
super(ownerId, cardSetInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiftOfTheDeity.java b/Mage.Sets/src/mage/cards/g/GiftOfTheDeity.java
index 331ea077c92..9e9e68c1d9c 100644
--- a/Mage.Sets/src/mage/cards/g/GiftOfTheDeity.java
+++ b/Mage.Sets/src/mage/cards/g/GiftOfTheDeity.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class GiftOfTheDeity extends CardImpl {
+public final class GiftOfTheDeity extends CardImpl {
public GiftOfTheDeity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiftOfTheGargantuan.java b/Mage.Sets/src/mage/cards/g/GiftOfTheGargantuan.java
index 50aa77ec022..fc30ec765a1 100644
--- a/Mage.Sets/src/mage/cards/g/GiftOfTheGargantuan.java
+++ b/Mage.Sets/src/mage/cards/g/GiftOfTheGargantuan.java
@@ -44,7 +44,7 @@ import mage.target.TargetCard;
*
* @author North
*/
-public class GiftOfTheGargantuan extends CardImpl {
+public final class GiftOfTheGargantuan extends CardImpl {
public GiftOfTheGargantuan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiftOfTusks.java b/Mage.Sets/src/mage/cards/g/GiftOfTusks.java
index 078dca867d9..002dcd018e0 100644
--- a/Mage.Sets/src/mage/cards/g/GiftOfTusks.java
+++ b/Mage.Sets/src/mage/cards/g/GiftOfTusks.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GiftOfTusks extends CardImpl {
+public final class GiftOfTusks extends CardImpl {
public GiftOfTusks(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GiftedAetherborn.java b/Mage.Sets/src/mage/cards/g/GiftedAetherborn.java
index 6bea148e694..506fd5887ea 100644
--- a/Mage.Sets/src/mage/cards/g/GiftedAetherborn.java
+++ b/Mage.Sets/src/mage/cards/g/GiftedAetherborn.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class GiftedAetherborn extends CardImpl {
+public final class GiftedAetherborn extends CardImpl {
public GiftedAetherborn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GiftedInitiate.java b/Mage.Sets/src/mage/cards/g/GiftedInitiate.java
index 87d77c133f0..05758ff68b5 100644
--- a/Mage.Sets/src/mage/cards/g/GiftedInitiate.java
+++ b/Mage.Sets/src/mage/cards/g/GiftedInitiate.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class GiftedInitiate extends CardImpl {
+public final class GiftedInitiate extends CardImpl {
public GiftedInitiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GiftofGrowth.java b/Mage.Sets/src/mage/cards/g/GiftofGrowth.java
index 0f4105b6ff1..6fcd6431334 100644
--- a/Mage.Sets/src/mage/cards/g/GiftofGrowth.java
+++ b/Mage.Sets/src/mage/cards/g/GiftofGrowth.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author rscoates
*/
-public class GiftofGrowth extends CardImpl {
+public final class GiftofGrowth extends CardImpl {
public GiftofGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiftsUngiven.java b/Mage.Sets/src/mage/cards/g/GiftsUngiven.java
index ae197a067b4..3ca76d76c28 100644
--- a/Mage.Sets/src/mage/cards/g/GiftsUngiven.java
+++ b/Mage.Sets/src/mage/cards/g/GiftsUngiven.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class GiftsUngiven extends CardImpl {
+public final class GiftsUngiven extends CardImpl {
public GiftsUngiven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/Gigadrowse.java b/Mage.Sets/src/mage/cards/g/Gigadrowse.java
index d554758767c..ef11ed92cfc 100644
--- a/Mage.Sets/src/mage/cards/g/Gigadrowse.java
+++ b/Mage.Sets/src/mage/cards/g/Gigadrowse.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class Gigadrowse extends CardImpl {
+public final class Gigadrowse extends CardImpl {
public Gigadrowse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/g/Gigantiform.java b/Mage.Sets/src/mage/cards/g/Gigantiform.java
index a10b190a98b..77ce6f61269 100644
--- a/Mage.Sets/src/mage/cards/g/Gigantiform.java
+++ b/Mage.Sets/src/mage/cards/g/Gigantiform.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Gigantiform extends CardImpl {
+public final class Gigantiform extends CardImpl {
public Gigantiform(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Gigantomancer.java b/Mage.Sets/src/mage/cards/g/Gigantomancer.java
index 5b03b50d5ec..ff7f4038884 100644
--- a/Mage.Sets/src/mage/cards/g/Gigantomancer.java
+++ b/Mage.Sets/src/mage/cards/g/Gigantomancer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class Gigantomancer extends CardImpl {
+public final class Gigantomancer extends CardImpl {
public Gigantomancer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Gigantoplasm.java b/Mage.Sets/src/mage/cards/g/Gigantoplasm.java
index e3f8abbf7d9..659bf5ee401 100644
--- a/Mage.Sets/src/mage/cards/g/Gigantoplasm.java
+++ b/Mage.Sets/src/mage/cards/g/Gigantoplasm.java
@@ -55,7 +55,7 @@ import mage.util.functions.ApplyToPermanent;
*
* @author fireshoes
*/
-public class Gigantoplasm extends CardImpl {
+public final class Gigantoplasm extends CardImpl {
public Gigantoplasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/Gigapede.java b/Mage.Sets/src/mage/cards/g/Gigapede.java
index 9d284245448..3db42423c71 100644
--- a/Mage.Sets/src/mage/cards/g/Gigapede.java
+++ b/Mage.Sets/src/mage/cards/g/Gigapede.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class Gigapede extends CardImpl {
+public final class Gigapede extends CardImpl {
public Gigapede(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Gild.java b/Mage.Sets/src/mage/cards/g/Gild.java
index 27a2f1d2416..a06f2edbae7 100644
--- a/Mage.Sets/src/mage/cards/g/Gild.java
+++ b/Mage.Sets/src/mage/cards/g/Gild.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Gild extends CardImpl {
+public final class Gild extends CardImpl {
public Gild(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GildedCerodon.java b/Mage.Sets/src/mage/cards/g/GildedCerodon.java
index 99a4a873829..10e1c2084ea 100644
--- a/Mage.Sets/src/mage/cards/g/GildedCerodon.java
+++ b/Mage.Sets/src/mage/cards/g/GildedCerodon.java
@@ -50,15 +50,15 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class GildedCerodon extends CardImpl {
-
+public final class GildedCerodon extends CardImpl {
+
private static final String rule = "Whenever {this} attacks, if you control a Desert or there is a Desert card in your graveyard, target creature can't block this turn.";
public GildedCerodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
-
+
this.subtype.add(SubType.BEAST);
-
+
this.power = new MageInt(4);
this.toughness = new MageInt(4);
@@ -66,7 +66,7 @@ public class GildedCerodon extends CardImpl {
Ability ability = new ConditionalTriggeredAbility(new AttacksTriggeredAbility(new CantBlockTargetEffect(Duration.EndOfTurn), false), new GildedCerodonCondition(), rule);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
-
+
}
public GildedCerodon(final GildedCerodon card) {
@@ -80,10 +80,10 @@ public class GildedCerodon extends CardImpl {
}
class GildedCerodonCondition implements Condition {
-
+
private static final FilterPermanent filter = new FilterPermanent();
private static final FilterCard filter2 = new FilterCard();
-
+
static {
filter.add(new SubtypePredicate(SubType.DESERT));
filter2.add(new SubtypePredicate(SubType.DESERT));
@@ -93,8 +93,8 @@ class GildedCerodonCondition implements Condition {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null
- && !game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game).isEmpty()
- || controller.getGraveyard().count(filter2, game) > 0) {
+ && (!game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game).isEmpty()
+ || controller.getGraveyard().count(filter2, game) > 0)) {
return true;
}
return false;
diff --git a/Mage.Sets/src/mage/cards/g/GildedDrake.java b/Mage.Sets/src/mage/cards/g/GildedDrake.java
index 5dfc648ca7e..e129ea1840d 100644
--- a/Mage.Sets/src/mage/cards/g/GildedDrake.java
+++ b/Mage.Sets/src/mage/cards/g/GildedDrake.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GildedDrake extends CardImpl {
+public final class GildedDrake extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/g/GildedLight.java b/Mage.Sets/src/mage/cards/g/GildedLight.java
index fed701678de..f319c77f135 100644
--- a/Mage.Sets/src/mage/cards/g/GildedLight.java
+++ b/Mage.Sets/src/mage/cards/g/GildedLight.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class GildedLight extends CardImpl {
+public final class GildedLight extends CardImpl {
public GildedLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GildedLotus.java b/Mage.Sets/src/mage/cards/g/GildedLotus.java
index 91b84f37735..a6390daf32c 100644
--- a/Mage.Sets/src/mage/cards/g/GildedLotus.java
+++ b/Mage.Sets/src/mage/cards/g/GildedLotus.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class GildedLotus extends CardImpl {
+public final class GildedLotus extends CardImpl {
public GildedLotus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/g/GildedSentinel.java b/Mage.Sets/src/mage/cards/g/GildedSentinel.java
index 1175fab4a72..b9ec2be4b58 100644
--- a/Mage.Sets/src/mage/cards/g/GildedSentinel.java
+++ b/Mage.Sets/src/mage/cards/g/GildedSentinel.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class GildedSentinel extends CardImpl {
+public final class GildedSentinel extends CardImpl {
public GildedSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GilderBairn.java b/Mage.Sets/src/mage/cards/g/GilderBairn.java
index 7f71ffd6266..31cc020f141 100644
--- a/Mage.Sets/src/mage/cards/g/GilderBairn.java
+++ b/Mage.Sets/src/mage/cards/g/GilderBairn.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class GilderBairn extends CardImpl {
+public final class GilderBairn extends CardImpl {
public GilderBairn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G/U}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/g/GiltLeafAmbush.java b/Mage.Sets/src/mage/cards/g/GiltLeafAmbush.java
index bf3a92b7ba1..d05cbe1b04a 100644
--- a/Mage.Sets/src/mage/cards/g/GiltLeafAmbush.java
+++ b/Mage.Sets/src/mage/cards/g/GiltLeafAmbush.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class GiltLeafAmbush extends CardImpl {
+public final class GiltLeafAmbush extends CardImpl {
public GiltLeafAmbush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java b/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java
index 99a265d6210..51c605697ce 100644
--- a/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java
+++ b/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class GiltLeafArchdruid extends CardImpl {
+public final class GiltLeafArchdruid extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a Druid spell");
diff --git a/Mage.Sets/src/mage/cards/g/GiltLeafPalace.java b/Mage.Sets/src/mage/cards/g/GiltLeafPalace.java
index 2a8b20ec636..5ec5d3314aa 100644
--- a/Mage.Sets/src/mage/cards/g/GiltLeafPalace.java
+++ b/Mage.Sets/src/mage/cards/g/GiltLeafPalace.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class GiltLeafPalace extends CardImpl {
+public final class GiltLeafPalace extends CardImpl {
private static final FilterCard filter = new FilterCard("a Elf from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GiltLeafSeer.java b/Mage.Sets/src/mage/cards/g/GiltLeafSeer.java
index 40e51be8470..90cea336b35 100644
--- a/Mage.Sets/src/mage/cards/g/GiltLeafSeer.java
+++ b/Mage.Sets/src/mage/cards/g/GiltLeafSeer.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class GiltLeafSeer extends CardImpl {
+public final class GiltLeafSeer extends CardImpl {
public GiltLeafSeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java b/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java
index ccd3ff2cbaf..e670ee3f8bc 100644
--- a/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java
+++ b/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GiltLeafWinnower extends CardImpl {
+public final class GiltLeafWinnower extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Elf creature whose power and toughness aren't equal");
diff --git a/Mage.Sets/src/mage/cards/g/GiltgroveStalker.java b/Mage.Sets/src/mage/cards/g/GiltgroveStalker.java
index cd4ef215f47..7d6acf98350 100644
--- a/Mage.Sets/src/mage/cards/g/GiltgroveStalker.java
+++ b/Mage.Sets/src/mage/cards/g/GiltgroveStalker.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author LevelX2
*/
-public class GiltgroveStalker extends CardImpl {
+public final class GiltgroveStalker extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/g/GiltspireAvenger.java b/Mage.Sets/src/mage/cards/g/GiltspireAvenger.java
index 06bfe359794..351c6e669ea 100644
--- a/Mage.Sets/src/mage/cards/g/GiltspireAvenger.java
+++ b/Mage.Sets/src/mage/cards/g/GiltspireAvenger.java
@@ -51,7 +51,7 @@ import mage.watchers.common.PlayerDamagedBySourceWatcher;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class GiltspireAvenger extends CardImpl {
+public final class GiltspireAvenger extends CardImpl {
public GiltspireAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java
index 99b0dca375f..deac7848fc0 100644
--- a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java
+++ b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class GisaAndGeralf extends CardImpl {
+public final class GisaAndGeralf extends CardImpl {
public GisaAndGeralf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GisasBidding.java b/Mage.Sets/src/mage/cards/g/GisasBidding.java
index dc5e1f10a13..8b38cd128c2 100644
--- a/Mage.Sets/src/mage/cards/g/GisasBidding.java
+++ b/Mage.Sets/src/mage/cards/g/GisasBidding.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author anonymous
*/
-public class GisasBidding extends CardImpl {
+public final class GisasBidding extends CardImpl {
public GisasBidding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GiselaBladeOfGoldnight.java b/Mage.Sets/src/mage/cards/g/GiselaBladeOfGoldnight.java
index 812edd6216d..09fc8be1c47 100644
--- a/Mage.Sets/src/mage/cards/g/GiselaBladeOfGoldnight.java
+++ b/Mage.Sets/src/mage/cards/g/GiselaBladeOfGoldnight.java
@@ -46,7 +46,7 @@ import mage.util.CardUtil;
/**
* @author noxx
*/
-public class GiselaBladeOfGoldnight extends CardImpl {
+public final class GiselaBladeOfGoldnight extends CardImpl {
public GiselaBladeOfGoldnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GiselaTheBrokenBlade.java b/Mage.Sets/src/mage/cards/g/GiselaTheBrokenBlade.java
index 07e7a25f335..e7b99c7c574 100644
--- a/Mage.Sets/src/mage/cards/g/GiselaTheBrokenBlade.java
+++ b/Mage.Sets/src/mage/cards/g/GiselaTheBrokenBlade.java
@@ -49,7 +49,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class GiselaTheBrokenBlade extends CardImpl {
+public final class GiselaTheBrokenBlade extends CardImpl {
public GiselaTheBrokenBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GishathSunsAvatar.java b/Mage.Sets/src/mage/cards/g/GishathSunsAvatar.java
index 58476d563b4..e46f83969b6 100644
--- a/Mage.Sets/src/mage/cards/g/GishathSunsAvatar.java
+++ b/Mage.Sets/src/mage/cards/g/GishathSunsAvatar.java
@@ -54,7 +54,7 @@ import mage.target.TargetCard;
*
* @author TheElk801
*/
-public class GishathSunsAvatar extends CardImpl {
+public final class GishathSunsAvatar extends CardImpl {
public GishathSunsAvatar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GitaxianProbe.java b/Mage.Sets/src/mage/cards/g/GitaxianProbe.java
index 8bf19e2dc5b..6bd89c40d5b 100644
--- a/Mage.Sets/src/mage/cards/g/GitaxianProbe.java
+++ b/Mage.Sets/src/mage/cards/g/GitaxianProbe.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class GitaxianProbe extends CardImpl {
+public final class GitaxianProbe extends CardImpl {
public GitaxianProbe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U/P}");
diff --git a/Mage.Sets/src/mage/cards/g/GiveNoGround.java b/Mage.Sets/src/mage/cards/g/GiveNoGround.java
index 0cddcd13f38..159d9f1c123 100644
--- a/Mage.Sets/src/mage/cards/g/GiveNoGround.java
+++ b/Mage.Sets/src/mage/cards/g/GiveNoGround.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GiveNoGround extends CardImpl {
+public final class GiveNoGround extends CardImpl {
public GiveNoGround(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GiveTake.java b/Mage.Sets/src/mage/cards/g/GiveTake.java
index cb96d355b9a..78cb1828ef9 100644
--- a/Mage.Sets/src/mage/cards/g/GiveTake.java
+++ b/Mage.Sets/src/mage/cards/g/GiveTake.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GiveTake extends SplitCard {
+public final class GiveTake extends SplitCard {
public GiveTake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}", "{2}{U}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/g/GlacialChasm.java b/Mage.Sets/src/mage/cards/g/GlacialChasm.java
index 3eac0b415f3..39f2061627f 100644
--- a/Mage.Sets/src/mage/cards/g/GlacialChasm.java
+++ b/Mage.Sets/src/mage/cards/g/GlacialChasm.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Plopman
*/
-public class GlacialChasm extends CardImpl {
+public final class GlacialChasm extends CardImpl {
public GlacialChasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GlacialCrasher.java b/Mage.Sets/src/mage/cards/g/GlacialCrasher.java
index db8f858d5a3..0e216fe0e96 100644
--- a/Mage.Sets/src/mage/cards/g/GlacialCrasher.java
+++ b/Mage.Sets/src/mage/cards/g/GlacialCrasher.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class GlacialCrasher extends CardImpl {
+public final class GlacialCrasher extends CardImpl {
public GlacialCrasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GlacialCrevasses.java b/Mage.Sets/src/mage/cards/g/GlacialCrevasses.java
index aa5295fe4ff..75dfd83f7be 100644
--- a/Mage.Sets/src/mage/cards/g/GlacialCrevasses.java
+++ b/Mage.Sets/src/mage/cards/g/GlacialCrevasses.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Quercitron
*/
-public class GlacialCrevasses extends CardImpl {
+public final class GlacialCrevasses extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a snow Mountain");
diff --git a/Mage.Sets/src/mage/cards/g/GlacialFortress.java b/Mage.Sets/src/mage/cards/g/GlacialFortress.java
index 0090555fb2c..33c03e7b8b2 100644
--- a/Mage.Sets/src/mage/cards/g/GlacialFortress.java
+++ b/Mage.Sets/src/mage/cards/g/GlacialFortress.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GlacialFortress extends CardImpl {
+public final class GlacialFortress extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/g/GlacialPlating.java b/Mage.Sets/src/mage/cards/g/GlacialPlating.java
index 7860fbb220f..a7612f62fd0 100644
--- a/Mage.Sets/src/mage/cards/g/GlacialPlating.java
+++ b/Mage.Sets/src/mage/cards/g/GlacialPlating.java
@@ -55,7 +55,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class GlacialPlating extends CardImpl {
+public final class GlacialPlating extends CardImpl {
public GlacialPlating(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GlacialRay.java b/Mage.Sets/src/mage/cards/g/GlacialRay.java
index 998201142e4..6e7ff79004c 100644
--- a/Mage.Sets/src/mage/cards/g/GlacialRay.java
+++ b/Mage.Sets/src/mage/cards/g/GlacialRay.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class GlacialRay extends CardImpl {
+public final class GlacialRay extends CardImpl {
public GlacialRay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GlacialStalker.java b/Mage.Sets/src/mage/cards/g/GlacialStalker.java
index 72767418e92..d76bb0b7948 100644
--- a/Mage.Sets/src/mage/cards/g/GlacialStalker.java
+++ b/Mage.Sets/src/mage/cards/g/GlacialStalker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GlacialStalker extends CardImpl {
+public final class GlacialStalker extends CardImpl {
public GlacialStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GlacialWall.java b/Mage.Sets/src/mage/cards/g/GlacialWall.java
index 46ad492d7ba..1b68934fcbb 100644
--- a/Mage.Sets/src/mage/cards/g/GlacialWall.java
+++ b/Mage.Sets/src/mage/cards/g/GlacialWall.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GlacialWall extends CardImpl {
+public final class GlacialWall extends CardImpl {
public GlacialWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GladeGnarr.java b/Mage.Sets/src/mage/cards/g/GladeGnarr.java
index a6be0355791..89d8ea4014c 100644
--- a/Mage.Sets/src/mage/cards/g/GladeGnarr.java
+++ b/Mage.Sets/src/mage/cards/g/GladeGnarr.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author Loki
*/
-public class GladeGnarr extends CardImpl {
+public final class GladeGnarr extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a blue spell");
diff --git a/Mage.Sets/src/mage/cards/g/GladeWatcher.java b/Mage.Sets/src/mage/cards/g/GladeWatcher.java
index 2b3e1c24ff7..224678df0f4 100644
--- a/Mage.Sets/src/mage/cards/g/GladeWatcher.java
+++ b/Mage.Sets/src/mage/cards/g/GladeWatcher.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GladeWatcher extends CardImpl {
+public final class GladeWatcher extends CardImpl {
public GladeWatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GladecoverScout.java b/Mage.Sets/src/mage/cards/g/GladecoverScout.java
index 566820b1905..65062999011 100644
--- a/Mage.Sets/src/mage/cards/g/GladecoverScout.java
+++ b/Mage.Sets/src/mage/cards/g/GladecoverScout.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class GladecoverScout extends CardImpl {
+public final class GladecoverScout extends CardImpl {
public GladecoverScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GladehartCavalry.java b/Mage.Sets/src/mage/cards/g/GladehartCavalry.java
index 09a824ac788..a4194d0136c 100644
--- a/Mage.Sets/src/mage/cards/g/GladehartCavalry.java
+++ b/Mage.Sets/src/mage/cards/g/GladehartCavalry.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class GladehartCavalry extends CardImpl {
+public final class GladehartCavalry extends CardImpl {
public GladehartCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GlamerSpinners.java b/Mage.Sets/src/mage/cards/g/GlamerSpinners.java
index 5e113645623..c31329f56da 100644
--- a/Mage.Sets/src/mage/cards/g/GlamerSpinners.java
+++ b/Mage.Sets/src/mage/cards/g/GlamerSpinners.java
@@ -55,7 +55,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class GlamerSpinners extends CardImpl {
+public final class GlamerSpinners extends CardImpl {
public GlamerSpinners(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/g/GlareOfHeresy.java b/Mage.Sets/src/mage/cards/g/GlareOfHeresy.java
index c0b44357a74..a2de8c7943a 100644
--- a/Mage.Sets/src/mage/cards/g/GlareOfHeresy.java
+++ b/Mage.Sets/src/mage/cards/g/GlareOfHeresy.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class GlareOfHeresy extends CardImpl {
+public final class GlareOfHeresy extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("white permanent");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GlareOfSubdual.java b/Mage.Sets/src/mage/cards/g/GlareOfSubdual.java
index addc5676b26..e579ccb05c3 100644
--- a/Mage.Sets/src/mage/cards/g/GlareOfSubdual.java
+++ b/Mage.Sets/src/mage/cards/g/GlareOfSubdual.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class GlareOfSubdual extends CardImpl {
+public final class GlareOfSubdual extends CardImpl {
private static final FilterControlledCreaturePermanent filterCost = new FilterControlledCreaturePermanent("untapped creature you control");
private static final FilterPermanent filterTarget = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/g/Glarecaster.java b/Mage.Sets/src/mage/cards/g/Glarecaster.java
index 20cdb62b566..c10ed6a6b15 100644
--- a/Mage.Sets/src/mage/cards/g/Glarecaster.java
+++ b/Mage.Sets/src/mage/cards/g/Glarecaster.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Glarecaster extends CardImpl {
+public final class Glarecaster extends CardImpl {
public Glarecaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/Glarewielder.java b/Mage.Sets/src/mage/cards/g/Glarewielder.java
index cedd15b166e..65fc60bb9b6 100644
--- a/Mage.Sets/src/mage/cards/g/Glarewielder.java
+++ b/Mage.Sets/src/mage/cards/g/Glarewielder.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Glarewielder extends CardImpl {
+public final class Glarewielder extends CardImpl {
public Glarewielder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GlaringAegis.java b/Mage.Sets/src/mage/cards/g/GlaringAegis.java
index 70cdb503435..88c14541e26 100644
--- a/Mage.Sets/src/mage/cards/g/GlaringAegis.java
+++ b/Mage.Sets/src/mage/cards/g/GlaringAegis.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GlaringAegis extends CardImpl {
+public final class GlaringAegis extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/g/GlaringSpotlight.java b/Mage.Sets/src/mage/cards/g/GlaringSpotlight.java
index 58b4df7b638..781cbf36b1d 100644
--- a/Mage.Sets/src/mage/cards/g/GlaringSpotlight.java
+++ b/Mage.Sets/src/mage/cards/g/GlaringSpotlight.java
@@ -57,7 +57,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class GlaringSpotlight extends CardImpl {
+public final class GlaringSpotlight extends CardImpl {
public GlaringSpotlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/g/GlassAsp.java b/Mage.Sets/src/mage/cards/g/GlassAsp.java
index d94adad68f8..57f64835d94 100644
--- a/Mage.Sets/src/mage/cards/g/GlassAsp.java
+++ b/Mage.Sets/src/mage/cards/g/GlassAsp.java
@@ -43,7 +43,7 @@ import mage.constants.PhaseStep;
*
* @author LoneFox
*/
-public class GlassAsp extends CardImpl {
+public final class GlassAsp extends CardImpl {
public GlassAsp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GlassGolem.java b/Mage.Sets/src/mage/cards/g/GlassGolem.java
index 83a95ef278b..1c95d31946c 100644
--- a/Mage.Sets/src/mage/cards/g/GlassGolem.java
+++ b/Mage.Sets/src/mage/cards/g/GlassGolem.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GlassGolem extends CardImpl {
+public final class GlassGolem extends CardImpl {
public GlassGolem (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/g/GlassblowersPuzzleknot.java b/Mage.Sets/src/mage/cards/g/GlassblowersPuzzleknot.java
index f0beb42c9ab..dc40cc23724 100644
--- a/Mage.Sets/src/mage/cards/g/GlassblowersPuzzleknot.java
+++ b/Mage.Sets/src/mage/cards/g/GlassblowersPuzzleknot.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class GlassblowersPuzzleknot extends CardImpl {
+public final class GlassblowersPuzzleknot extends CardImpl {
public GlassblowersPuzzleknot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/g/GlassdustHulk.java b/Mage.Sets/src/mage/cards/g/GlassdustHulk.java
index 0d9beee3257..07966637dbd 100644
--- a/Mage.Sets/src/mage/cards/g/GlassdustHulk.java
+++ b/Mage.Sets/src/mage/cards/g/GlassdustHulk.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Loki
*/
-public class GlassdustHulk extends CardImpl {
+public final class GlassdustHulk extends CardImpl {
private static final FilterPermanent filter = new FilterArtifactPermanent("another artifact");
diff --git a/Mage.Sets/src/mage/cards/g/GlassesOfUrza.java b/Mage.Sets/src/mage/cards/g/GlassesOfUrza.java
index 653ab186920..6f0f425b4d5 100644
--- a/Mage.Sets/src/mage/cards/g/GlassesOfUrza.java
+++ b/Mage.Sets/src/mage/cards/g/GlassesOfUrza.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author Quercitron
*/
-public class GlassesOfUrza extends CardImpl {
+public final class GlassesOfUrza extends CardImpl {
public GlassesOfUrza(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/g/GlazeFiend.java b/Mage.Sets/src/mage/cards/g/GlazeFiend.java
index 4f5739ef116..18ecf7b6be6 100644
--- a/Mage.Sets/src/mage/cards/g/GlazeFiend.java
+++ b/Mage.Sets/src/mage/cards/g/GlazeFiend.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Plopman
*/
-public class GlazeFiend extends CardImpl {
+public final class GlazeFiend extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("another artifact");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java b/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java
index 87757733fa4..c9b2b609202 100644
--- a/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java
+++ b/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GleamOfAuthority extends CardImpl {
+public final class GleamOfAuthority extends CardImpl {
public GleamOfAuthority(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GleamOfBattle.java b/Mage.Sets/src/mage/cards/g/GleamOfBattle.java
index 8b0b162cbcf..ca21899f995 100644
--- a/Mage.Sets/src/mage/cards/g/GleamOfBattle.java
+++ b/Mage.Sets/src/mage/cards/g/GleamOfBattle.java
@@ -39,7 +39,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class GleamOfBattle extends CardImpl {
+public final class GleamOfBattle extends CardImpl {
public GleamOfBattle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GleamOfResistance.java b/Mage.Sets/src/mage/cards/g/GleamOfResistance.java
index aa2f4ce7447..359b00f05a5 100644
--- a/Mage.Sets/src/mage/cards/g/GleamOfResistance.java
+++ b/Mage.Sets/src/mage/cards/g/GleamOfResistance.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class GleamOfResistance extends CardImpl {
+public final class GleamOfResistance extends CardImpl {
public GleamOfResistance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GleamingBarrier.java b/Mage.Sets/src/mage/cards/g/GleamingBarrier.java
index 6ffb0d598a8..838630cfc03 100644
--- a/Mage.Sets/src/mage/cards/g/GleamingBarrier.java
+++ b/Mage.Sets/src/mage/cards/g/GleamingBarrier.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author LevelX2
*/
-public class GleamingBarrier extends CardImpl {
+public final class GleamingBarrier extends CardImpl {
public GleamingBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/g/Gleancrawler.java b/Mage.Sets/src/mage/cards/g/Gleancrawler.java
index dee75f9b761..91600e6a507 100644
--- a/Mage.Sets/src/mage/cards/g/Gleancrawler.java
+++ b/Mage.Sets/src/mage/cards/g/Gleancrawler.java
@@ -51,7 +51,7 @@ import mage.watchers.common.CardsPutIntoGraveyardWatcher;
*
* @author LevelX2
*/
-public class Gleancrawler extends CardImpl {
+public final class Gleancrawler extends CardImpl {
public Gleancrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B/G}{B/G}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/g/GleefulSabotage.java b/Mage.Sets/src/mage/cards/g/GleefulSabotage.java
index f0b1995e2bb..bdc70dfcaf1 100644
--- a/Mage.Sets/src/mage/cards/g/GleefulSabotage.java
+++ b/Mage.Sets/src/mage/cards/g/GleefulSabotage.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class GleefulSabotage extends CardImpl {
+public final class GleefulSabotage extends CardImpl {
public GleefulSabotage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GlenElendraArchmage.java b/Mage.Sets/src/mage/cards/g/GlenElendraArchmage.java
index 3962d79804b..80741ca2646 100644
--- a/Mage.Sets/src/mage/cards/g/GlenElendraArchmage.java
+++ b/Mage.Sets/src/mage/cards/g/GlenElendraArchmage.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author jonubuu
*/
-public class GlenElendraArchmage extends CardImpl {
+public final class GlenElendraArchmage extends CardImpl {
private static final FilterSpell filter = new FilterSpell("noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/g/GlenElendraLiege.java b/Mage.Sets/src/mage/cards/g/GlenElendraLiege.java
index 53cbc928632..425245e78bc 100644
--- a/Mage.Sets/src/mage/cards/g/GlenElendraLiege.java
+++ b/Mage.Sets/src/mage/cards/g/GlenElendraLiege.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class GlenElendraLiege extends CardImpl {
+public final class GlenElendraLiege extends CardImpl {
private static final FilterCreaturePermanent filterBlue = new FilterCreaturePermanent("blue creatures");
private static final FilterCreaturePermanent filterBlack = new FilterCreaturePermanent("black creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GlenElendraPranksters.java b/Mage.Sets/src/mage/cards/g/GlenElendraPranksters.java
index 0409f1141d5..b99669f9ef1 100644
--- a/Mage.Sets/src/mage/cards/g/GlenElendraPranksters.java
+++ b/Mage.Sets/src/mage/cards/g/GlenElendraPranksters.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Markedagain
*/
-public class GlenElendraPranksters extends CardImpl {
+public final class GlenElendraPranksters extends CardImpl {
public GlenElendraPranksters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GlidingLicid.java b/Mage.Sets/src/mage/cards/g/GlidingLicid.java
index e96e59d88c1..c474df62321 100644
--- a/Mage.Sets/src/mage/cards/g/GlidingLicid.java
+++ b/Mage.Sets/src/mage/cards/g/GlidingLicid.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class GlidingLicid extends CardImpl {
+public final class GlidingLicid extends CardImpl {
public GlidingLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GlimmerOfGenius.java b/Mage.Sets/src/mage/cards/g/GlimmerOfGenius.java
index c1a4b36e012..cc2b08468c1 100644
--- a/Mage.Sets/src/mage/cards/g/GlimmerOfGenius.java
+++ b/Mage.Sets/src/mage/cards/g/GlimmerOfGenius.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class GlimmerOfGenius extends CardImpl {
+public final class GlimmerOfGenius extends CardImpl {
public GlimmerOfGenius(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GlimmerdustNap.java b/Mage.Sets/src/mage/cards/g/GlimmerdustNap.java
index 80950f0b430..576bd83e1f8 100644
--- a/Mage.Sets/src/mage/cards/g/GlimmerdustNap.java
+++ b/Mage.Sets/src/mage/cards/g/GlimmerdustNap.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GlimmerdustNap extends CardImpl {
+public final class GlimmerdustNap extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/g/GlimmeringAngel.java b/Mage.Sets/src/mage/cards/g/GlimmeringAngel.java
index d13fcc320d0..7688e59d189 100644
--- a/Mage.Sets/src/mage/cards/g/GlimmeringAngel.java
+++ b/Mage.Sets/src/mage/cards/g/GlimmeringAngel.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class GlimmeringAngel extends CardImpl {
+public final class GlimmeringAngel extends CardImpl {
public GlimmeringAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GlimmerpointStag.java b/Mage.Sets/src/mage/cards/g/GlimmerpointStag.java
index 18408fe6880..413a4ed718f 100644
--- a/Mage.Sets/src/mage/cards/g/GlimmerpointStag.java
+++ b/Mage.Sets/src/mage/cards/g/GlimmerpointStag.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author maurer.it_at_gmail.com
*/
-public class GlimmerpointStag extends CardImpl {
+public final class GlimmerpointStag extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent("another target permanent");
diff --git a/Mage.Sets/src/mage/cards/g/Glimmerpost.java b/Mage.Sets/src/mage/cards/g/Glimmerpost.java
index d8cf9a6279b..6571b448128 100644
--- a/Mage.Sets/src/mage/cards/g/Glimmerpost.java
+++ b/Mage.Sets/src/mage/cards/g/Glimmerpost.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class Glimmerpost extends CardImpl {
+public final class Glimmerpost extends CardImpl {
public Glimmerpost (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/g/Glimmervoid.java b/Mage.Sets/src/mage/cards/g/Glimmervoid.java
index 5715a54e98b..a04544f1344 100644
--- a/Mage.Sets/src/mage/cards/g/Glimmervoid.java
+++ b/Mage.Sets/src/mage/cards/g/Glimmervoid.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent;
*
* @author jonubuu
*/
-public class Glimmervoid extends CardImpl {
+public final class Glimmervoid extends CardImpl {
public Glimmervoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GlimpseOfNature.java b/Mage.Sets/src/mage/cards/g/GlimpseOfNature.java
index d7e74a9ac88..1f64ab92161 100644
--- a/Mage.Sets/src/mage/cards/g/GlimpseOfNature.java
+++ b/Mage.Sets/src/mage/cards/g/GlimpseOfNature.java
@@ -41,7 +41,7 @@ import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.stack.Spell;
-public class GlimpseOfNature extends CardImpl {
+public final class GlimpseOfNature extends CardImpl {
public GlimpseOfNature (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GlimpseTheFuture.java b/Mage.Sets/src/mage/cards/g/GlimpseTheFuture.java
index 2b847347239..8a1ce60875d 100644
--- a/Mage.Sets/src/mage/cards/g/GlimpseTheFuture.java
+++ b/Mage.Sets/src/mage/cards/g/GlimpseTheFuture.java
@@ -39,7 +39,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class GlimpseTheFuture extends CardImpl {
+public final class GlimpseTheFuture extends CardImpl {
public GlimpseTheFuture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GlimpseTheSunGod.java b/Mage.Sets/src/mage/cards/g/GlimpseTheSunGod.java
index 1f976adacb0..eb5f3b57f81 100644
--- a/Mage.Sets/src/mage/cards/g/GlimpseTheSunGod.java
+++ b/Mage.Sets/src/mage/cards/g/GlimpseTheSunGod.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GlimpseTheSunGod extends CardImpl {
+public final class GlimpseTheSunGod extends CardImpl {
public GlimpseTheSunGod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GlimpseTheUnthinkable.java b/Mage.Sets/src/mage/cards/g/GlimpseTheUnthinkable.java
index 313a6a82397..781cbb1436d 100644
--- a/Mage.Sets/src/mage/cards/g/GlimpseTheUnthinkable.java
+++ b/Mage.Sets/src/mage/cards/g/GlimpseTheUnthinkable.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class GlimpseTheUnthinkable extends CardImpl {
+public final class GlimpseTheUnthinkable extends CardImpl {
public GlimpseTheUnthinkable(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Glint.java b/Mage.Sets/src/mage/cards/g/Glint.java
index ea5b7e47303..8f32eb0de1b 100644
--- a/Mage.Sets/src/mage/cards/g/Glint.java
+++ b/Mage.Sets/src/mage/cards/g/Glint.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class Glint extends CardImpl {
+public final class Glint extends CardImpl {
public Glint(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GlintEyeNephilim.java b/Mage.Sets/src/mage/cards/g/GlintEyeNephilim.java
index 532ebb61ad7..e936f376c26 100644
--- a/Mage.Sets/src/mage/cards/g/GlintEyeNephilim.java
+++ b/Mage.Sets/src/mage/cards/g/GlintEyeNephilim.java
@@ -49,7 +49,7 @@ import mage.players.Player;
/**
* @author fenhl
*/
-public class GlintEyeNephilim extends CardImpl {
+public final class GlintEyeNephilim extends CardImpl {
public GlintEyeNephilim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GlintHawk.java b/Mage.Sets/src/mage/cards/g/GlintHawk.java
index ef80a561a0f..2e7e11daaf7 100644
--- a/Mage.Sets/src/mage/cards/g/GlintHawk.java
+++ b/Mage.Sets/src/mage/cards/g/GlintHawk.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author maurer.it_at_gmail.com
*/
-public class GlintHawk extends CardImpl {
+public final class GlintHawk extends CardImpl {
public GlintHawk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GlintHawkIdol.java b/Mage.Sets/src/mage/cards/g/GlintHawkIdol.java
index 2b9cac2f389..c87dd67756f 100644
--- a/Mage.Sets/src/mage/cards/g/GlintHawkIdol.java
+++ b/Mage.Sets/src/mage/cards/g/GlintHawkIdol.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.Token;
*
* @author Loki
*/
-public class GlintHawkIdol extends CardImpl {
+public final class GlintHawkIdol extends CardImpl {
private static final FilterPermanent filter = new FilterArtifactPermanent("another artifact");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GlintNestCrane.java b/Mage.Sets/src/mage/cards/g/GlintNestCrane.java
index 05c37b3f795..dc24d269b8d 100644
--- a/Mage.Sets/src/mage/cards/g/GlintNestCrane.java
+++ b/Mage.Sets/src/mage/cards/g/GlintNestCrane.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class GlintNestCrane extends CardImpl {
+public final class GlintNestCrane extends CardImpl {
public GlintNestCrane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GlintSleeveArtisan.java b/Mage.Sets/src/mage/cards/g/GlintSleeveArtisan.java
index bf57293c067..682ef47f093 100644
--- a/Mage.Sets/src/mage/cards/g/GlintSleeveArtisan.java
+++ b/Mage.Sets/src/mage/cards/g/GlintSleeveArtisan.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class GlintSleeveArtisan extends CardImpl {
+public final class GlintSleeveArtisan extends CardImpl {
public GlintSleeveArtisan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java b/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java
index 826eda15049..7425d0843ae 100644
--- a/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java
+++ b/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class GlintSleeveSiphoner extends CardImpl {
+public final class GlintSleeveSiphoner extends CardImpl {
public GlintSleeveSiphoner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GlintwingInvoker.java b/Mage.Sets/src/mage/cards/g/GlintwingInvoker.java
index 0d447f8df84..11eef28778f 100644
--- a/Mage.Sets/src/mage/cards/g/GlintwingInvoker.java
+++ b/Mage.Sets/src/mage/cards/g/GlintwingInvoker.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class GlintwingInvoker extends CardImpl {
+public final class GlintwingInvoker extends CardImpl {
public GlintwingInvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GlissaSunseeker.java b/Mage.Sets/src/mage/cards/g/GlissaSunseeker.java
index 11c68921bb9..a06b642a3ef 100644
--- a/Mage.Sets/src/mage/cards/g/GlissaSunseeker.java
+++ b/Mage.Sets/src/mage/cards/g/GlissaSunseeker.java
@@ -51,10 +51,10 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author fireshoes
*/
-public class GlissaSunseeker extends CardImpl {
+public final class GlissaSunseeker extends CardImpl {
public GlissaSunseeker(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.ELF);
this.power = new MageInt(3);
@@ -62,7 +62,7 @@ public class GlissaSunseeker extends CardImpl {
// First strike
this.addAbility(FirstStrikeAbility.getInstance());
-
+
// {tap}: Destroy target artifact if its converted mana cost is equal to the amount of mana in your mana pool.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GlissaSunseekerEffect(), new TapSourceCost());
ability.addTarget(new TargetArtifactPermanent());
@@ -83,7 +83,7 @@ class GlissaSunseekerEffect extends OneShotEffect {
public GlissaSunseekerEffect() {
super(Outcome.DestroyPermanent);
- this.staticText = "Destroy target artifact if its converted mana cost is equal to the amount of mana in your mana pool";
+ this.staticText = "Destroy target artifact if its converted mana cost is equal to the amount of unspent mana you have";
}
public GlissaSunseekerEffect(final GlissaSunseekerEffect effect) {
@@ -98,6 +98,10 @@ class GlissaSunseekerEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
+ Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source));
+ if (controller == null || permanent == null) {
+ return false;
+ }
ManaPool pool = controller.getManaPool();
int blackMana = pool.getBlack();
int whiteMana = pool.getWhite();
@@ -106,12 +110,9 @@ class GlissaSunseekerEffect extends OneShotEffect {
int redMana = pool.getRed();
int colorlessMana = pool.getColorless();
int manaPoolTotal = blackMana + whiteMana + blueMana + greenMana + redMana + colorlessMana;
- Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source));
- if (controller != null && permanent != null) {
- if (permanent.getConvertedManaCost() == manaPoolTotal) {
- return permanent.destroy(source.getSourceId(), game, false);
- }
+ if (permanent.getConvertedManaCost() == manaPoolTotal) {
+ return permanent.destroy(source.getSourceId(), game, false);
}
return false;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/g/GlissaTheTraitor.java b/Mage.Sets/src/mage/cards/g/GlissaTheTraitor.java
index 26ba2fb15ac..de6d4ed886e 100644
--- a/Mage.Sets/src/mage/cards/g/GlissaTheTraitor.java
+++ b/Mage.Sets/src/mage/cards/g/GlissaTheTraitor.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class GlissaTheTraitor extends CardImpl {
+public final class GlissaTheTraitor extends CardImpl {
public GlissaTheTraitor (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{G}{G}");
addSuperType(SuperType.LEGENDARY);
diff --git a/Mage.Sets/src/mage/cards/g/GlissasCourier.java b/Mage.Sets/src/mage/cards/g/GlissasCourier.java
index db2bad5d040..020b4452823 100644
--- a/Mage.Sets/src/mage/cards/g/GlissasCourier.java
+++ b/Mage.Sets/src/mage/cards/g/GlissasCourier.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GlissasCourier extends CardImpl {
+public final class GlissasCourier extends CardImpl {
public GlissasCourier (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GlissasScorn.java b/Mage.Sets/src/mage/cards/g/GlissasScorn.java
index 11ddff0b13e..a33bf7834d3 100644
--- a/Mage.Sets/src/mage/cards/g/GlissasScorn.java
+++ b/Mage.Sets/src/mage/cards/g/GlissasScorn.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author North
*/
-public class GlissasScorn extends CardImpl {
+public final class GlissasScorn extends CardImpl {
public GlissasScorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GlistenerElf.java b/Mage.Sets/src/mage/cards/g/GlistenerElf.java
index 2d0cd99d808..dda8a601a12 100644
--- a/Mage.Sets/src/mage/cards/g/GlistenerElf.java
+++ b/Mage.Sets/src/mage/cards/g/GlistenerElf.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GlistenerElf extends CardImpl {
+public final class GlistenerElf extends CardImpl {
public GlistenerElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GlisteningOil.java b/Mage.Sets/src/mage/cards/g/GlisteningOil.java
index 122feba70d4..841cd45c5eb 100644
--- a/Mage.Sets/src/mage/cards/g/GlisteningOil.java
+++ b/Mage.Sets/src/mage/cards/g/GlisteningOil.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class GlisteningOil extends CardImpl {
+public final class GlisteningOil extends CardImpl {
public GlisteningOil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Glitterfang.java b/Mage.Sets/src/mage/cards/g/Glitterfang.java
index e26e16f3daf..675845907be 100644
--- a/Mage.Sets/src/mage/cards/g/Glitterfang.java
+++ b/Mage.Sets/src/mage/cards/g/Glitterfang.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class Glitterfang extends CardImpl {
+public final class Glitterfang extends CardImpl {
public Glitterfang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GlitteringLion.java b/Mage.Sets/src/mage/cards/g/GlitteringLion.java
index 4ecf4f220e7..ee7b60a41bb 100644
--- a/Mage.Sets/src/mage/cards/g/GlitteringLion.java
+++ b/Mage.Sets/src/mage/cards/g/GlitteringLion.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author L_J
*/
-public class GlitteringLion extends CardImpl {
+public final class GlitteringLion extends CardImpl {
public GlitteringLion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GlitteringLynx.java b/Mage.Sets/src/mage/cards/g/GlitteringLynx.java
index 3c2269fb482..51d813eb4cc 100644
--- a/Mage.Sets/src/mage/cards/g/GlitteringLynx.java
+++ b/Mage.Sets/src/mage/cards/g/GlitteringLynx.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author L_J
*/
-public class GlitteringLynx extends CardImpl {
+public final class GlitteringLynx extends CardImpl {
public GlitteringLynx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GlitteringWish.java b/Mage.Sets/src/mage/cards/g/GlitteringWish.java
index 509635970ac..902eae7f367 100644
--- a/Mage.Sets/src/mage/cards/g/GlitteringWish.java
+++ b/Mage.Sets/src/mage/cards/g/GlitteringWish.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*
* @author Plopman
*/
-public class GlitteringWish extends CardImpl {
+public final class GlitteringWish extends CardImpl {
private static final FilterCard filter = new FilterCard("a multicolored card");
diff --git a/Mage.Sets/src/mage/cards/g/GlobalRuin.java b/Mage.Sets/src/mage/cards/g/GlobalRuin.java
index 4066c9650c5..8d74464d8a8 100644
--- a/Mage.Sets/src/mage/cards/g/GlobalRuin.java
+++ b/Mage.Sets/src/mage/cards/g/GlobalRuin.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Markedagain
*/
-public class GlobalRuin extends CardImpl {
+public final class GlobalRuin extends CardImpl {
public GlobalRuin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/Gloom.java b/Mage.Sets/src/mage/cards/g/Gloom.java
index ee97f039d5a..7c8a090ff85 100644
--- a/Mage.Sets/src/mage/cards/g/Gloom.java
+++ b/Mage.Sets/src/mage/cards/g/Gloom.java
@@ -46,7 +46,7 @@ import mage.util.CardUtil;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class Gloom extends CardImpl {
+public final class Gloom extends CardImpl {
private static final FilterCard filter = new FilterCard("White spells");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GloomSurgeon.java b/Mage.Sets/src/mage/cards/g/GloomSurgeon.java
index 00a4ca41e09..8afbadc8e04 100644
--- a/Mage.Sets/src/mage/cards/g/GloomSurgeon.java
+++ b/Mage.Sets/src/mage/cards/g/GloomSurgeon.java
@@ -47,7 +47,7 @@ import mage.players.Player;
/**
* @author noxx
*/
-public class GloomSurgeon extends CardImpl {
+public final class GloomSurgeon extends CardImpl {
public GloomSurgeon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Gloomdrifter.java b/Mage.Sets/src/mage/cards/g/Gloomdrifter.java
index ee872f4c743..619197c2fc9 100644
--- a/Mage.Sets/src/mage/cards/g/Gloomdrifter.java
+++ b/Mage.Sets/src/mage/cards/g/Gloomdrifter.java
@@ -53,7 +53,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class Gloomdrifter extends CardImpl {
+public final class Gloomdrifter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creatures");
diff --git a/Mage.Sets/src/mage/cards/g/Gloomhunter.java b/Mage.Sets/src/mage/cards/g/Gloomhunter.java
index 674ee933aca..cfbee55ab9c 100644
--- a/Mage.Sets/src/mage/cards/g/Gloomhunter.java
+++ b/Mage.Sets/src/mage/cards/g/Gloomhunter.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class Gloomhunter extends CardImpl {
+public final class Gloomhunter extends CardImpl {
public Gloomhunter (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Gloomlance.java b/Mage.Sets/src/mage/cards/g/Gloomlance.java
index 1504b75a682..ba458beb3dd 100644
--- a/Mage.Sets/src/mage/cards/g/Gloomlance.java
+++ b/Mage.Sets/src/mage/cards/g/Gloomlance.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class Gloomlance extends CardImpl {
+public final class Gloomlance extends CardImpl {
public Gloomlance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Gloomwidow.java b/Mage.Sets/src/mage/cards/g/Gloomwidow.java
index d6e91a5f025..0183cfd4bdd 100644
--- a/Mage.Sets/src/mage/cards/g/Gloomwidow.java
+++ b/Mage.Sets/src/mage/cards/g/Gloomwidow.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Gloomwidow extends CardImpl {
+public final class Gloomwidow extends CardImpl {
public Gloomwidow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GloomwidowsFeast.java b/Mage.Sets/src/mage/cards/g/GloomwidowsFeast.java
index 11cdf6a9dc7..c6829cc40db 100644
--- a/Mage.Sets/src/mage/cards/g/GloomwidowsFeast.java
+++ b/Mage.Sets/src/mage/cards/g/GloomwidowsFeast.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class GloomwidowsFeast extends CardImpl {
+public final class GloomwidowsFeast extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("target creature with flying");
diff --git a/Mage.Sets/src/mage/cards/g/GlorifierOfDusk.java b/Mage.Sets/src/mage/cards/g/GlorifierOfDusk.java
index 6e27e1ee5e0..9b6467053bd 100644
--- a/Mage.Sets/src/mage/cards/g/GlorifierOfDusk.java
+++ b/Mage.Sets/src/mage/cards/g/GlorifierOfDusk.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class GlorifierOfDusk extends CardImpl {
+public final class GlorifierOfDusk extends CardImpl {
public GlorifierOfDusk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GloriousAnthem.java b/Mage.Sets/src/mage/cards/g/GloriousAnthem.java
index d1fcd678053..a7ee1ca02e5 100644
--- a/Mage.Sets/src/mage/cards/g/GloriousAnthem.java
+++ b/Mage.Sets/src/mage/cards/g/GloriousAnthem.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class GloriousAnthem extends CardImpl {
+public final class GloriousAnthem extends CardImpl {
public GloriousAnthem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GloriousCharge.java b/Mage.Sets/src/mage/cards/g/GloriousCharge.java
index 9ae9b9c3abb..8505815e0c5 100644
--- a/Mage.Sets/src/mage/cards/g/GloriousCharge.java
+++ b/Mage.Sets/src/mage/cards/g/GloriousCharge.java
@@ -39,7 +39,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class GloriousCharge extends CardImpl {
+public final class GloriousCharge extends CardImpl {
public GloriousCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GloriousEnd.java b/Mage.Sets/src/mage/cards/g/GloriousEnd.java
index 0a8a1341071..5c10d6a435d 100644
--- a/Mage.Sets/src/mage/cards/g/GloriousEnd.java
+++ b/Mage.Sets/src/mage/cards/g/GloriousEnd.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class GloriousEnd extends CardImpl {
+public final class GloriousEnd extends CardImpl {
public GloriousEnd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/Glory.java b/Mage.Sets/src/mage/cards/g/Glory.java
index cfcbec2b522..db2b129c13a 100644
--- a/Mage.Sets/src/mage/cards/g/Glory.java
+++ b/Mage.Sets/src/mage/cards/g/Glory.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class Glory extends CardImpl {
+public final class Glory extends CardImpl {
public Glory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GloryBoundInitiate.java b/Mage.Sets/src/mage/cards/g/GloryBoundInitiate.java
index 6aafc34105a..2bce4aa8e70 100644
--- a/Mage.Sets/src/mage/cards/g/GloryBoundInitiate.java
+++ b/Mage.Sets/src/mage/cards/g/GloryBoundInitiate.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class GloryBoundInitiate extends CardImpl {
+public final class GloryBoundInitiate extends CardImpl {
public GloryBoundInitiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GloryOfWarfare.java b/Mage.Sets/src/mage/cards/g/GloryOfWarfare.java
index fa6db7acae4..93de96f64a4 100644
--- a/Mage.Sets/src/mage/cards/g/GloryOfWarfare.java
+++ b/Mage.Sets/src/mage/cards/g/GloryOfWarfare.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class GloryOfWarfare extends CardImpl {
+public final class GloryOfWarfare extends CardImpl {
public GloryOfWarfare (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GlorySeeker.java b/Mage.Sets/src/mage/cards/g/GlorySeeker.java
index 1806f7a1680..1f3945158e4 100644
--- a/Mage.Sets/src/mage/cards/g/GlorySeeker.java
+++ b/Mage.Sets/src/mage/cards/g/GlorySeeker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GlorySeeker extends CardImpl {
+public final class GlorySeeker extends CardImpl {
public GlorySeeker (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/Glorybringer.java b/Mage.Sets/src/mage/cards/g/Glorybringer.java
index f69964e97bd..9f59da84481 100644
--- a/Mage.Sets/src/mage/cards/g/Glorybringer.java
+++ b/Mage.Sets/src/mage/cards/g/Glorybringer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Glorybringer extends CardImpl {
+public final class Glorybringer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Dragon creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/g/GloryscaleViashino.java b/Mage.Sets/src/mage/cards/g/GloryscaleViashino.java
index 5702409be81..bd63cd3a11a 100644
--- a/Mage.Sets/src/mage/cards/g/GloryscaleViashino.java
+++ b/Mage.Sets/src/mage/cards/g/GloryscaleViashino.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class GloryscaleViashino extends CardImpl {
+public final class GloryscaleViashino extends CardImpl {
public GloryscaleViashino(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GloweringRogon.java b/Mage.Sets/src/mage/cards/g/GloweringRogon.java
index bd46bdf1c33..68884eaa9b8 100644
--- a/Mage.Sets/src/mage/cards/g/GloweringRogon.java
+++ b/Mage.Sets/src/mage/cards/g/GloweringRogon.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class GloweringRogon extends CardImpl {
+public final class GloweringRogon extends CardImpl {
public GloweringRogon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GlowingAnemone.java b/Mage.Sets/src/mage/cards/g/GlowingAnemone.java
index eb5722d7efc..22b7826cfc7 100644
--- a/Mage.Sets/src/mage/cards/g/GlowingAnemone.java
+++ b/Mage.Sets/src/mage/cards/g/GlowingAnemone.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author TheElk801
*/
-public class GlowingAnemone extends CardImpl {
+public final class GlowingAnemone extends CardImpl {
public GlowingAnemone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/Glowrider.java b/Mage.Sets/src/mage/cards/g/Glowrider.java
index cafb8d1fc06..b04c7a48d09 100644
--- a/Mage.Sets/src/mage/cards/g/Glowrider.java
+++ b/Mage.Sets/src/mage/cards/g/Glowrider.java
@@ -44,7 +44,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class Glowrider extends CardImpl {
+public final class Glowrider extends CardImpl {
public Glowrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GluttonousCyclops.java b/Mage.Sets/src/mage/cards/g/GluttonousCyclops.java
index 4f732dceace..20a196d97b2 100644
--- a/Mage.Sets/src/mage/cards/g/GluttonousCyclops.java
+++ b/Mage.Sets/src/mage/cards/g/GluttonousCyclops.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GluttonousCyclops extends CardImpl {
+public final class GluttonousCyclops extends CardImpl {
public GluttonousCyclops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GluttonousSlime.java b/Mage.Sets/src/mage/cards/g/GluttonousSlime.java
index 6d8e7681c89..c25067c146b 100644
--- a/Mage.Sets/src/mage/cards/g/GluttonousSlime.java
+++ b/Mage.Sets/src/mage/cards/g/GluttonousSlime.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GluttonousSlime extends CardImpl {
+public final class GluttonousSlime extends CardImpl {
public GluttonousSlime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GluttonousZombie.java b/Mage.Sets/src/mage/cards/g/GluttonousZombie.java
index 9798dfebc42..de7a91e3407 100644
--- a/Mage.Sets/src/mage/cards/g/GluttonousZombie.java
+++ b/Mage.Sets/src/mage/cards/g/GluttonousZombie.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GluttonousZombie extends CardImpl {
+public final class GluttonousZombie extends CardImpl {
public GluttonousZombie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GlyphKeeper.java b/Mage.Sets/src/mage/cards/g/GlyphKeeper.java
index 2598f0ab5e6..84f1ea91f4f 100644
--- a/Mage.Sets/src/mage/cards/g/GlyphKeeper.java
+++ b/Mage.Sets/src/mage/cards/g/GlyphKeeper.java
@@ -50,7 +50,7 @@ import mage.watchers.common.NumberOfTimesPermanentTargetedATurnWatcher;
*
* @author Styxo
*/
-public class GlyphKeeper extends CardImpl {
+public final class GlyphKeeper extends CardImpl {
public GlyphKeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GlyphOfDestruction.java b/Mage.Sets/src/mage/cards/g/GlyphOfDestruction.java
index c0b8195354e..95bb1844e74 100644
--- a/Mage.Sets/src/mage/cards/g/GlyphOfDestruction.java
+++ b/Mage.Sets/src/mage/cards/g/GlyphOfDestruction.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class GlyphOfDestruction extends CardImpl {
+public final class GlyphOfDestruction extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("blocking Wall you control");
diff --git a/Mage.Sets/src/mage/cards/g/GlyphOfDoom.java b/Mage.Sets/src/mage/cards/g/GlyphOfDoom.java
index 748661c0a08..c9cc5caf53b 100644
--- a/Mage.Sets/src/mage/cards/g/GlyphOfDoom.java
+++ b/Mage.Sets/src/mage/cards/g/GlyphOfDoom.java
@@ -53,7 +53,7 @@ import mage.watchers.common.BlockedAttackerWatcher;
*
* @author LevelX2 & L_J
*/
-public class GlyphOfDoom extends CardImpl {
+public final class GlyphOfDoom extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wall creature");
diff --git a/Mage.Sets/src/mage/cards/g/GlyphOfLife.java b/Mage.Sets/src/mage/cards/g/GlyphOfLife.java
index 7a7d91d91c1..79f50dc883e 100644
--- a/Mage.Sets/src/mage/cards/g/GlyphOfLife.java
+++ b/Mage.Sets/src/mage/cards/g/GlyphOfLife.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes & L_J
*/
-public class GlyphOfLife extends CardImpl {
+public final class GlyphOfLife extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wall creature");
diff --git a/Mage.Sets/src/mage/cards/g/GnarledEffigy.java b/Mage.Sets/src/mage/cards/g/GnarledEffigy.java
index 4b6730ae9cc..cd86cf7e797 100644
--- a/Mage.Sets/src/mage/cards/g/GnarledEffigy.java
+++ b/Mage.Sets/src/mage/cards/g/GnarledEffigy.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GnarledEffigy extends CardImpl {
+public final class GnarledEffigy extends CardImpl {
public GnarledEffigy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GnarledMass.java b/Mage.Sets/src/mage/cards/g/GnarledMass.java
index 81aa13de2d7..49b35dddb7f 100644
--- a/Mage.Sets/src/mage/cards/g/GnarledMass.java
+++ b/Mage.Sets/src/mage/cards/g/GnarledMass.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GnarledMass extends CardImpl {
+public final class GnarledMass extends CardImpl {
public GnarledMass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GnarledScarhide.java b/Mage.Sets/src/mage/cards/g/GnarledScarhide.java
index afe83006e8c..a1d7d0e14e8 100644
--- a/Mage.Sets/src/mage/cards/g/GnarledScarhide.java
+++ b/Mage.Sets/src/mage/cards/g/GnarledScarhide.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GnarledScarhide extends CardImpl {
+public final class GnarledScarhide extends CardImpl {
public GnarledScarhide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GnarlidPack.java b/Mage.Sets/src/mage/cards/g/GnarlidPack.java
index 3048a81c00a..5e9ba6fec77 100644
--- a/Mage.Sets/src/mage/cards/g/GnarlidPack.java
+++ b/Mage.Sets/src/mage/cards/g/GnarlidPack.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class GnarlidPack extends CardImpl {
+public final class GnarlidPack extends CardImpl {
public GnarlidPack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java b/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java
index a6bc2c9073d..386d3dd8d21 100644
--- a/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java
+++ b/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java
@@ -59,7 +59,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class GnarlrootTrapper extends CardImpl {
+public final class GnarlrootTrapper extends CardImpl {
private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("attacking ELf you control");
diff --git a/Mage.Sets/src/mage/cards/g/GnarlwoodDryad.java b/Mage.Sets/src/mage/cards/g/GnarlwoodDryad.java
index 993fff2a29d..876a383d670 100644
--- a/Mage.Sets/src/mage/cards/g/GnarlwoodDryad.java
+++ b/Mage.Sets/src/mage/cards/g/GnarlwoodDryad.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class GnarlwoodDryad extends CardImpl {
+public final class GnarlwoodDryad extends CardImpl {
public GnarlwoodDryad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GnatAlleyCreeper.java b/Mage.Sets/src/mage/cards/g/GnatAlleyCreeper.java
index 9fe23cf8af1..2a7baece471 100644
--- a/Mage.Sets/src/mage/cards/g/GnatAlleyCreeper.java
+++ b/Mage.Sets/src/mage/cards/g/GnatAlleyCreeper.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author Quercitron
*/
-public class GnatAlleyCreeper extends CardImpl {
+public final class GnatAlleyCreeper extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/g/GnatMiser.java b/Mage.Sets/src/mage/cards/g/GnatMiser.java
index 29b0e8e2a0f..e95f485b211 100644
--- a/Mage.Sets/src/mage/cards/g/GnatMiser.java
+++ b/Mage.Sets/src/mage/cards/g/GnatMiser.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class GnatMiser extends CardImpl {
+public final class GnatMiser extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("blue creature");
diff --git a/Mage.Sets/src/mage/cards/g/Gnathosaur.java b/Mage.Sets/src/mage/cards/g/Gnathosaur.java
index 99f7430d16d..56c65fd489c 100644
--- a/Mage.Sets/src/mage/cards/g/Gnathosaur.java
+++ b/Mage.Sets/src/mage/cards/g/Gnathosaur.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class Gnathosaur extends CardImpl {
+public final class Gnathosaur extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/g/GnawToTheBone.java b/Mage.Sets/src/mage/cards/g/GnawToTheBone.java
index 09b15e432af..defd2771263 100644
--- a/Mage.Sets/src/mage/cards/g/GnawToTheBone.java
+++ b/Mage.Sets/src/mage/cards/g/GnawToTheBone.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author nantuko
*/
-public class GnawToTheBone extends CardImpl {
+public final class GnawToTheBone extends CardImpl {
public GnawToTheBone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GnawingZombie.java b/Mage.Sets/src/mage/cards/g/GnawingZombie.java
index 7c314c8dcc6..fbc4957ca5d 100644
--- a/Mage.Sets/src/mage/cards/g/GnawingZombie.java
+++ b/Mage.Sets/src/mage/cards/g/GnawingZombie.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class GnawingZombie extends CardImpl {
+public final class GnawingZombie extends CardImpl {
public GnawingZombie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GoForTheThroat.java b/Mage.Sets/src/mage/cards/g/GoForTheThroat.java
index f7fc4f851f8..492568c3108 100644
--- a/Mage.Sets/src/mage/cards/g/GoForTheThroat.java
+++ b/Mage.Sets/src/mage/cards/g/GoForTheThroat.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class GoForTheThroat extends CardImpl {
+public final class GoForTheThroat extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/g/Goatnapper.java b/Mage.Sets/src/mage/cards/g/Goatnapper.java
index aaed0481965..adc664a9755 100644
--- a/Mage.Sets/src/mage/cards/g/Goatnapper.java
+++ b/Mage.Sets/src/mage/cards/g/Goatnapper.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class Goatnapper extends CardImpl {
+public final class Goatnapper extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Goat");
diff --git a/Mage.Sets/src/mage/cards/g/GobblingOoze.java b/Mage.Sets/src/mage/cards/g/GobblingOoze.java
index c380e4aee5e..3906bc55c37 100644
--- a/Mage.Sets/src/mage/cards/g/GobblingOoze.java
+++ b/Mage.Sets/src/mage/cards/g/GobblingOoze.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class GobblingOoze extends CardImpl {
+public final class GobblingOoze extends CardImpl {
public GobblingOoze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GobhobblerRats.java b/Mage.Sets/src/mage/cards/g/GobhobblerRats.java
index 364006d06c8..35124ce28c9 100644
--- a/Mage.Sets/src/mage/cards/g/GobhobblerRats.java
+++ b/Mage.Sets/src/mage/cards/g/GobhobblerRats.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GobhobblerRats extends CardImpl {
+public final class GobhobblerRats extends CardImpl {
public GobhobblerRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinArchaeologist.java b/Mage.Sets/src/mage/cards/g/GoblinArchaeologist.java
index 488700f2489..78a1c2c1944 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinArchaeologist.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinArchaeologist.java
@@ -28,7 +28,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author BursegSardaukar
*/
-public class GoblinArchaeologist extends CardImpl {
+public final class GoblinArchaeologist extends CardImpl {
public GoblinArchaeologist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinArsonist.java b/Mage.Sets/src/mage/cards/g/GoblinArsonist.java
index d1a09a21242..5c152041e3b 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinArsonist.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinArsonist.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class GoblinArsonist extends CardImpl {
+public final class GoblinArsonist extends CardImpl {
public GoblinArsonist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinArtillery.java b/Mage.Sets/src/mage/cards/g/GoblinArtillery.java
index 0c290576d96..c5ba6c66949 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinArtillery.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinArtillery.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class GoblinArtillery extends CardImpl {
+public final class GoblinArtillery extends CardImpl {
public GoblinArtillery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinArtisans.java b/Mage.Sets/src/mage/cards/g/GoblinArtisans.java
index 8c5e249696b..7964e2ef1a7 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinArtisans.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinArtisans.java
@@ -59,7 +59,7 @@ import mage.target.TargetCard;
*
* @author MarcoMarin
*/
-public class GoblinArtisans extends CardImpl {
+public final class GoblinArtisans extends CardImpl {
public GoblinArtisans(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinAssassin.java b/Mage.Sets/src/mage/cards/g/GoblinAssassin.java
index 5f76c8f0320..d40d8dbce69 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinAssassin.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinAssassin.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author BursegSardaukar
*/
-public class GoblinAssassin extends CardImpl {
+public final class GoblinAssassin extends CardImpl {
public GoblinAssassin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinAssault.java b/Mage.Sets/src/mage/cards/g/GoblinAssault.java
index d5f0cf4b67c..22fcdceaf8f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinAssault.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinAssault.java
@@ -39,20 +39,20 @@ import mage.constants.Duration;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.StaticFilters;
-import mage.game.permanent.token.GoblinTokenWithHaste;
+import mage.game.permanent.token.GoblinToken;
import mage.watchers.common.AttackedThisTurnWatcher;
/**
*
* @author Plopman
*/
-public class GoblinAssault extends CardImpl {
+public final class GoblinAssault extends CardImpl {
public GoblinAssault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
// At the beginning of your upkeep, create a 1/1 red Goblin creature token with haste.
- this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CreateTokenEffect(new GoblinTokenWithHaste()), TargetController.YOU, false));
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CreateTokenEffect(new GoblinToken(true)), TargetController.YOU, false));
// Goblin creatures attack each turn if able.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new AttacksIfAbleAllEffect(StaticFilters.FILTER_PERMANENT_CREATURE_GOBLINS, Duration.WhileOnBattlefield)), new AttackedThisTurnWatcher());
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBalloonBrigade.java b/Mage.Sets/src/mage/cards/g/GoblinBalloonBrigade.java
index 45a3c6e26fe..5c8974dd9f3 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBalloonBrigade.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBalloonBrigade.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GoblinBalloonBrigade extends CardImpl {
+public final class GoblinBalloonBrigade extends CardImpl {
public GoblinBalloonBrigade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBangchuckers.java b/Mage.Sets/src/mage/cards/g/GoblinBangchuckers.java
index 48827879b1c..d3a3db0f4d5 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBangchuckers.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBangchuckers.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author nantuko
*/
-public class GoblinBangchuckers extends CardImpl {
+public final class GoblinBangchuckers extends CardImpl {
public GoblinBangchuckers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBarrage.java b/Mage.Sets/src/mage/cards/g/GoblinBarrage.java
index a99ceb3a915..c76e896093e 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBarrage.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBarrage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class GoblinBarrage extends CardImpl {
+public final class GoblinBarrage extends CardImpl {
public GoblinBarrage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBattleJester.java b/Mage.Sets/src/mage/cards/g/GoblinBattleJester.java
index c50c8653a26..9a04715bb5a 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBattleJester.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBattleJester.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GoblinBattleJester extends CardImpl {
+public final class GoblinBattleJester extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a red spell");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBerserker.java b/Mage.Sets/src/mage/cards/g/GoblinBerserker.java
index 8f7136f1704..3f9a1a1a991 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBerserker.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBerserker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GoblinBerserker extends CardImpl {
+public final class GoblinBerserker extends CardImpl {
public GoblinBerserker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBomb.java b/Mage.Sets/src/mage/cards/g/GoblinBomb.java
index 0d537fa5a0f..da0401bdbc9 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBomb.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBomb.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class GoblinBomb extends CardImpl {
+public final class GoblinBomb extends CardImpl {
public GoblinBomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBombardment.java b/Mage.Sets/src/mage/cards/g/GoblinBombardment.java
index c1be7f5376d..18456664925 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBombardment.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBombardment.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class GoblinBombardment extends CardImpl {
+public final class GoblinBombardment extends CardImpl {
public GoblinBombardment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBoomKeg.java b/Mage.Sets/src/mage/cards/g/GoblinBoomKeg.java
index 11cd0bf93b7..954b86d0a66 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBoomKeg.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBoomKeg.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class GoblinBoomKeg extends CardImpl {
+public final class GoblinBoomKeg extends CardImpl {
public GoblinBoomKeg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBrawler.java b/Mage.Sets/src/mage/cards/g/GoblinBrawler.java
index 299548a83ac..321c9673e57 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBrawler.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBrawler.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class GoblinBrawler extends CardImpl {
+public final class GoblinBrawler extends CardImpl {
public GoblinBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBrigand.java b/Mage.Sets/src/mage/cards/g/GoblinBrigand.java
index e93813fd6c7..7c45176668b 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBrigand.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBrigand.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Jgod
*/
-public class GoblinBrigand extends CardImpl {
+public final class GoblinBrigand extends CardImpl {
public GoblinBrigand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBully.java b/Mage.Sets/src/mage/cards/g/GoblinBully.java
index 4ed750fd9db..313725a3427 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBully.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBully.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class GoblinBully extends CardImpl {
+public final class GoblinBully extends CardImpl {
public GoblinBully(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBurrows.java b/Mage.Sets/src/mage/cards/g/GoblinBurrows.java
index 4c8d42408a3..dcddf2a247f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBurrows.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBurrows.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GoblinBurrows extends CardImpl {
+public final class GoblinBurrows extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin creature");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinBushwhacker.java b/Mage.Sets/src/mage/cards/g/GoblinBushwhacker.java
index 7e454732d60..c876f644e4b 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinBushwhacker.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinBushwhacker.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author North
*/
-public class GoblinBushwhacker extends CardImpl {
+public final class GoblinBushwhacker extends CardImpl {
public GoblinBushwhacker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinCadets.java b/Mage.Sets/src/mage/cards/g/GoblinCadets.java
index 281d5bf4091..5335776351a 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinCadets.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinCadets.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class GoblinCadets extends CardImpl {
+public final class GoblinCadets extends CardImpl {
public GoblinCadets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinCannon.java b/Mage.Sets/src/mage/cards/g/GoblinCannon.java
index b87d7602ad1..d5fb7db6ae3 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinCannon.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinCannon.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class GoblinCannon extends CardImpl {
+public final class GoblinCannon extends CardImpl {
public GoblinCannon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinCavaliers.java b/Mage.Sets/src/mage/cards/g/GoblinCavaliers.java
index 87573becadc..d9df0a5e504 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinCavaliers.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinCavaliers.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class GoblinCavaliers extends CardImpl {
+public final class GoblinCavaliers extends CardImpl {
public GoblinCavaliers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinCaves.java b/Mage.Sets/src/mage/cards/g/GoblinCaves.java
index cea705ca57e..d1e9691e974 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinCaves.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinCaves.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author nigelzor
*/
-public class GoblinCaves extends CardImpl {
+public final class GoblinCaves extends CardImpl {
public GoblinCaves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinChainwhirler.java b/Mage.Sets/src/mage/cards/g/GoblinChainwhirler.java
index a4582008a38..0a8c9388c5f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinChainwhirler.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinChainwhirler.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Will
*/
-public class GoblinChainwhirler extends CardImpl {
+public final class GoblinChainwhirler extends CardImpl {
final static FilterPermanent filter = new FilterPermanent("creatures and planeswalkers your opponents control");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinCharbelcher.java b/Mage.Sets/src/mage/cards/g/GoblinCharbelcher.java
index 09a39b50e0e..0c6d028a7a6 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinCharbelcher.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinCharbelcher.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class GoblinCharbelcher extends CardImpl {
+public final class GoblinCharbelcher extends CardImpl {
public GoblinCharbelcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinChariot.java b/Mage.Sets/src/mage/cards/g/GoblinChariot.java
index 66bd1cecbec..7738d20e749 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinChariot.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinChariot.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GoblinChariot extends CardImpl {
+public final class GoblinChariot extends CardImpl {
public GoblinChariot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinChieftain.java b/Mage.Sets/src/mage/cards/g/GoblinChieftain.java
index 672e651c455..77111310faa 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinChieftain.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinChieftain.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GoblinChieftain extends CardImpl {
+public final class GoblinChieftain extends CardImpl {
public GoblinChieftain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinChirurgeon.java b/Mage.Sets/src/mage/cards/g/GoblinChirurgeon.java
index 4fb6a138422..06bf9aa787f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinChirurgeon.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinChirurgeon.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GoblinChirurgeon extends CardImpl {
+public final class GoblinChirurgeon extends CardImpl {
public GoblinChirurgeon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java b/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java
index fa65ebfe7b1..d70ab5b76a0 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author BursegSardaukar
*/
-public class GoblinClearcutter extends CardImpl {
+public final class GoblinClearcutter extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinCohort.java b/Mage.Sets/src/mage/cards/g/GoblinCohort.java
index 8f16f6b9961..055b1557ad4 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinCohort.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinCohort.java
@@ -46,7 +46,7 @@ import mage.watchers.common.PlayerCastCreatureWatcher;
*
* @author LevelX2
*/
-public class GoblinCohort extends CardImpl {
+public final class GoblinCohort extends CardImpl {
public GoblinCohort(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinCommando.java b/Mage.Sets/src/mage/cards/g/GoblinCommando.java
index d5c2f5ca99b..572c5198adb 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinCommando.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinCommando.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GoblinCommando extends CardImpl {
+public final class GoblinCommando extends CardImpl {
public GoblinCommando(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinDarkDwellers.java b/Mage.Sets/src/mage/cards/g/GoblinDarkDwellers.java
index 31b558779ce..6b13919dbdd 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinDarkDwellers.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinDarkDwellers.java
@@ -29,6 +29,7 @@ package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.ContinuousEffect;
@@ -39,10 +40,10 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.ComparisonType;
import mage.constants.Duration;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterInstantOrSorceryCard;
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
@@ -57,23 +58,23 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class GoblinDarkDwellers extends CardImpl {
-
- private static final FilterInstantOrSorceryCard filter = new FilterInstantOrSorceryCard("instant or sorcery card with converted mana cost 3 or less");
-
+public final class GoblinDarkDwellers extends CardImpl {
+
+ private static final FilterInstantOrSorceryCard filter = new FilterInstantOrSorceryCard("instant or sorcery card with converted mana cost 3 or less");
+
static {
filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 4));
}
public GoblinDarkDwellers(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
this.subtype.add(SubType.GOBLIN);
this.power = new MageInt(4);
this.toughness = new MageInt(4);
// Menace
this.addAbility(new MenaceAbility());
-
+
// When Goblin Dark-Dwellers enters the battlefield, you may cast target instant or sorcery card with converted mana cost 3 or less
// from your graveyard without paying its mana cost. If that card would be put into your graveyard this turn, exile it instead.
Ability ability = new EntersBattlefieldTriggeredAbility(new GoblinDarkDwellersEffect());
@@ -115,7 +116,7 @@ class GoblinDarkDwellersEffect extends OneShotEffect {
Card card = game.getCard(this.getTargetPointer().getFirst(game, source));
if (card != null) {
if (controller.chooseUse(outcome, "Cast " + card.getLogName() + '?', source, game)) {
- if (controller.cast(card.getSpellAbility(), game, true)) {
+ if (controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
ContinuousEffect effect = new GoblinDarkDwellersReplacementEffect(card.getId());
effect.setTargetPointer(new FixedTarget(card.getId(), game.getState().getZoneChangeCounter(card.getId())));
game.addEffect(effect, source);
diff --git a/Mage.Sets/src/mage/cards/g/GoblinDeathraiders.java b/Mage.Sets/src/mage/cards/g/GoblinDeathraiders.java
index af90b941122..f27082f3786 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinDeathraiders.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinDeathraiders.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GoblinDeathraiders extends CardImpl {
+public final class GoblinDeathraiders extends CardImpl {
public GoblinDeathraiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinDiggingTeam.java b/Mage.Sets/src/mage/cards/g/GoblinDiggingTeam.java
index eedc2d43b92..637e442f56f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinDiggingTeam.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinDiggingTeam.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author Quercitron
*/
-public class GoblinDiggingTeam extends CardImpl {
+public final class GoblinDiggingTeam extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wall");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinDiplomats.java b/Mage.Sets/src/mage/cards/g/GoblinDiplomats.java
index 107131ae4f7..6c4042d438b 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinDiplomats.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinDiplomats.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class GoblinDiplomats extends CardImpl {
+public final class GoblinDiplomats extends CardImpl {
public GoblinDiplomats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinDirigible.java b/Mage.Sets/src/mage/cards/g/GoblinDirigible.java
index be3afc6da86..27d10f0b4e0 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinDirigible.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinDirigible.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class GoblinDirigible extends CardImpl {
+public final class GoblinDirigible extends CardImpl {
public GoblinDirigible(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinDynamo.java b/Mage.Sets/src/mage/cards/g/GoblinDynamo.java
index 60eb5c10cfc..050635d2f2f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinDynamo.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinDynamo.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author BursegSardaukar
*/
-public class GoblinDynamo extends CardImpl {
+public final class GoblinDynamo extends CardImpl {
public GoblinDynamo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinElectromancer.java b/Mage.Sets/src/mage/cards/g/GoblinElectromancer.java
index 4ac64f03caf..0dbac40d783 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinElectromancer.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinElectromancer.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class GoblinElectromancer extends CardImpl {
+public final class GoblinElectromancer extends CardImpl {
private static final FilterCard filter = new FilterCard("Instant and sorcery spells");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GoblinEliteInfantry.java b/Mage.Sets/src/mage/cards/g/GoblinEliteInfantry.java
index 84694d65181..242ed6f9300 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinEliteInfantry.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinEliteInfantry.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class GoblinEliteInfantry extends CardImpl {
+public final class GoblinEliteInfantry extends CardImpl {
public GoblinEliteInfantry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinFestival.java b/Mage.Sets/src/mage/cards/g/GoblinFestival.java
index 55852a15ac4..693e415807b 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinFestival.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinFestival.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class GoblinFestival extends CardImpl {
+public final class GoblinFestival extends CardImpl {
public GoblinFestival(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinFireFiend.java b/Mage.Sets/src/mage/cards/g/GoblinFireFiend.java
index 9e86eab09dd..61e6a745d1e 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinFireFiend.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinFireFiend.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author BursegSardaukar
*/
-public class GoblinFireFiend extends CardImpl {
+public final class GoblinFireFiend extends CardImpl {
public GoblinFireFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinFirebug.java b/Mage.Sets/src/mage/cards/g/GoblinFirebug.java
index 9dee0228e26..0e69fb816d3 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinFirebug.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinFirebug.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class GoblinFirebug extends CardImpl {
+public final class GoblinFirebug extends CardImpl {
public GoblinFirebug(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinFireslinger.java b/Mage.Sets/src/mage/cards/g/GoblinFireslinger.java
index 46ef29d4779..39adac57b2f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinFireslinger.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinFireslinger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
/**
* @author Loki
*/
-public class GoblinFireslinger extends CardImpl {
+public final class GoblinFireslinger extends CardImpl {
public GoblinFireslinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinFirestarter.java b/Mage.Sets/src/mage/cards/g/GoblinFirestarter.java
index 1cf2307c135..e1922a2be3e 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinFirestarter.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinFirestarter.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class GoblinFirestarter extends CardImpl {
+public final class GoblinFirestarter extends CardImpl {
public GoblinFirestarter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinFlectomancer.java b/Mage.Sets/src/mage/cards/g/GoblinFlectomancer.java
index e2993c0d9cb..b1d468d149e 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinFlectomancer.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinFlectomancer.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
* @author LoneFox
*/
-public class GoblinFlectomancer extends CardImpl {
+public final class GoblinFlectomancer extends CardImpl {
public GoblinFlectomancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java b/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java
index 31673be49dc..0b235af82b7 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java
@@ -48,7 +48,7 @@ import mage.constants.TargetController;
*
* @author MarcoMarin
*/
-public class GoblinFlotilla extends CardImpl {
+public final class GoblinFlotilla extends CardImpl {
public GoblinFlotilla(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinFreerunner.java b/Mage.Sets/src/mage/cards/g/GoblinFreerunner.java
index a35e8f22c78..b2257d729dd 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinFreerunner.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinFreerunner.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class GoblinFreerunner extends CardImpl {
+public final class GoblinFreerunner extends CardImpl {
public GoblinFreerunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinFurrier.java b/Mage.Sets/src/mage/cards/g/GoblinFurrier.java
index d54976d5970..7f45c8a7bd2 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinFurrier.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinFurrier.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2 & L_J
*/
-public class GoblinFurrier extends CardImpl {
+public final class GoblinFurrier extends CardImpl {
public GoblinFurrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinGame.java b/Mage.Sets/src/mage/cards/g/GoblinGame.java
index 0c84c9199aa..e49a2a8e196 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinGame.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinGame.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class GoblinGame extends CardImpl {
+public final class GoblinGame extends CardImpl {
public GoblinGame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinGardener.java b/Mage.Sets/src/mage/cards/g/GoblinGardener.java
index 82d042824c3..4f762fe2678 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinGardener.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinGardener.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetLandPermanent;
* @author LoneFox
*/
-public class GoblinGardener extends CardImpl {
+public final class GoblinGardener extends CardImpl {
public GoblinGardener(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinGaveleer.java b/Mage.Sets/src/mage/cards/g/GoblinGaveleer.java
index c68e16118ea..0d6f35bc221 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinGaveleer.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinGaveleer.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class GoblinGaveleer extends CardImpl {
+public final class GoblinGaveleer extends CardImpl {
public GoblinGaveleer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinGeneral.java b/Mage.Sets/src/mage/cards/g/GoblinGeneral.java
index 05c8f161c41..c4a5f608daa 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinGeneral.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinGeneral.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class GoblinGeneral extends CardImpl {
+public final class GoblinGeneral extends CardImpl {
public GoblinGeneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinGlider.java b/Mage.Sets/src/mage/cards/g/GoblinGlider.java
index 5b0824b84e3..cdf758cf7cf 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinGlider.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinGlider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class GoblinGlider extends CardImpl {
+public final class GoblinGlider extends CardImpl {
public GoblinGlider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinGloryChaser.java b/Mage.Sets/src/mage/cards/g/GoblinGloryChaser.java
index d63dd615c17..eb38e631a36 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinGloryChaser.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinGloryChaser.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class GoblinGloryChaser extends CardImpl {
+public final class GoblinGloryChaser extends CardImpl {
public GoblinGloryChaser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinGoon.java b/Mage.Sets/src/mage/cards/g/GoblinGoon.java
index 817d09611bc..0c1acaf2c41 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinGoon.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinGoon.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class GoblinGoon extends CardImpl {
+public final class GoblinGoon extends CardImpl {
public GoblinGoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinGrappler.java b/Mage.Sets/src/mage/cards/g/GoblinGrappler.java
index 77c1914d31d..5d31532435f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinGrappler.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinGrappler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class GoblinGrappler extends CardImpl {
+public final class GoblinGrappler extends CardImpl {
public GoblinGrappler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinGrenade.java b/Mage.Sets/src/mage/cards/g/GoblinGrenade.java
index ea5ba2a4ce4..0d9887dfdf2 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinGrenade.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinGrenade.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author Loki
*/
-public class GoblinGrenade extends CardImpl {
+public final class GoblinGrenade extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinGrenadiers.java b/Mage.Sets/src/mage/cards/g/GoblinGrenadiers.java
index cea2cb9d8ed..be85d024ea0 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinGrenadiers.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinGrenadiers.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class GoblinGrenadiers extends CardImpl {
+public final class GoblinGrenadiers extends CardImpl {
public GoblinGrenadiers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinGuide.java b/Mage.Sets/src/mage/cards/g/GoblinGuide.java
index c2828ae1883..47a0a9352f6 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinGuide.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinGuide.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GoblinGuide extends CardImpl {
+public final class GoblinGuide extends CardImpl {
public GoblinGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinHeelcutter.java b/Mage.Sets/src/mage/cards/g/GoblinHeelcutter.java
index 71276fe015f..acc7afde14d 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinHeelcutter.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinHeelcutter.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GoblinHeelcutter extends CardImpl {
+public final class GoblinHeelcutter extends CardImpl {
public GoblinHeelcutter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinHero.java b/Mage.Sets/src/mage/cards/g/GoblinHero.java
index 6f77876f967..8d9c0b1c352 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinHero.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinHero.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GoblinHero extends CardImpl {
+public final class GoblinHero extends CardImpl {
public GoblinHero(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinInstigator.java b/Mage.Sets/src/mage/cards/g/GoblinInstigator.java
new file mode 100644
index 00000000000..f7621bf0374
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/g/GoblinInstigator.java
@@ -0,0 +1,66 @@
+/*
+ * 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.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.game.permanent.token.GoblinToken;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class GoblinInstigator extends CardImpl {
+
+ public GoblinInstigator(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
+
+ this.subtype.add(SubType.GOBLIN);
+ this.subtype.add(SubType.ROGUE);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // When Goblin Instigator enters the battlefield, create a 1/1 red Goblin creature token.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GoblinToken())));
+ }
+
+ public GoblinInstigator(final GoblinInstigator card) {
+ super(card);
+ }
+
+ @Override
+ public GoblinInstigator copy() {
+ return new GoblinInstigator(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/g/GoblinKaboomist.java b/Mage.Sets/src/mage/cards/g/GoblinKaboomist.java
index a214ef02086..7b458ecd4c1 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinKaboomist.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinKaboomist.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Quercitron
*/
-public class GoblinKaboomist extends CardImpl {
+public final class GoblinKaboomist extends CardImpl {
public GoblinKaboomist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinKing.java b/Mage.Sets/src/mage/cards/g/GoblinKing.java
index e379681fdd2..0c890ddb5ec 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinKing.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinKing.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
/**
* @author Loki
*/
-public class GoblinKing extends CardImpl {
+public final class GoblinKing extends CardImpl {
public GoblinKing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinKites.java b/Mage.Sets/src/mage/cards/g/GoblinKites.java
index 5903b1dc2c5..0035b9f33d7 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinKites.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinKites.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author MarcoMarin
*/
-public class GoblinKites extends CardImpl {
+public final class GoblinKites extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("controlled creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinLackey.java b/Mage.Sets/src/mage/cards/g/GoblinLackey.java
index f937117f0ad..1149ed8f153 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinLackey.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinLackey.java
@@ -30,7 +30,7 @@ package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.DealsDamageToAPlayerTriggeredAbility;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jonubuu
*/
-public class GoblinLackey extends CardImpl {
+public final class GoblinLackey extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("a Goblin permanent card");
@@ -58,7 +58,7 @@ public class GoblinLackey extends CardImpl {
this.toughness = new MageInt(1);
// Whenever Goblin Lackey deals damage to a player, you may put a Goblin permanent card from your hand onto the battlefield.
- this.addAbility(new DealsDamageToAPlayerTriggeredAbility(new PutPermanentOnBattlefieldEffect(filter), false));
+ this.addAbility(new DealsDamageToAPlayerTriggeredAbility(new PutCardFromHandOntoBattlefieldEffect(filter), false));
}
public GoblinLackey(final GoblinLackey card) {
diff --git a/Mage.Sets/src/mage/cards/g/GoblinLegionnaire.java b/Mage.Sets/src/mage/cards/g/GoblinLegionnaire.java
index 3d0bb4896ad..ae5fbf40da9 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinLegionnaire.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinLegionnaire.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class GoblinLegionnaire extends CardImpl {
+public final class GoblinLegionnaire extends CardImpl {
public GoblinLegionnaire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinLookout.java b/Mage.Sets/src/mage/cards/g/GoblinLookout.java
index 22c84498a41..56d60314878 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinLookout.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinLookout.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class GoblinLookout extends CardImpl {
+public final class GoblinLookout extends CardImpl {
private static final FilterControlledPermanent filterPermanent = new FilterControlledPermanent("a Goblin");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinLore.java b/Mage.Sets/src/mage/cards/g/GoblinLore.java
index 51efe63c76f..bedbf1ce09d 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinLore.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinLore.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author jonubuu
*/
-public class GoblinLore extends CardImpl {
+public final class GoblinLore extends CardImpl {
public GoblinLore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinLyre.java b/Mage.Sets/src/mage/cards/g/GoblinLyre.java
index 55843a7a1fc..78807968d22 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinLyre.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinLyre.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author L_J
*/
-public class GoblinLyre extends CardImpl {
+public final class GoblinLyre extends CardImpl {
public GoblinLyre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinMachinist.java b/Mage.Sets/src/mage/cards/g/GoblinMachinist.java
index f6cd85a68b3..5f6d964ea44 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinMachinist.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinMachinist.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class GoblinMachinist extends CardImpl {
+public final class GoblinMachinist extends CardImpl {
public GoblinMachinist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinMarshal.java b/Mage.Sets/src/mage/cards/g/GoblinMarshal.java
index 4b8b4d302ee..68da6085ae9 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinMarshal.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinMarshal.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author Backfir3
*/
-public class GoblinMarshal extends CardImpl {
+public final class GoblinMarshal extends CardImpl {
public GoblinMarshal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinMasons.java b/Mage.Sets/src/mage/cards/g/GoblinMasons.java
index 80e02c5cb4d..075a6b71cdc 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinMasons.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinMasons.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author BursegSardaukar
*/
-public class GoblinMasons extends CardImpl {
+public final class GoblinMasons extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wall");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinMatron.java b/Mage.Sets/src/mage/cards/g/GoblinMatron.java
index 8bdf08c6544..3246d0a003f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinMatron.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinMatron.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jonubuu
*/
-public class GoblinMatron extends CardImpl {
+public final class GoblinMatron extends CardImpl {
private static final FilterCard filter = new FilterCard("Goblin card");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinMedics.java b/Mage.Sets/src/mage/cards/g/GoblinMedics.java
index 3c5837afcf2..435de0d2653 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinMedics.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinMedics.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class GoblinMedics extends CardImpl {
+public final class GoblinMedics extends CardImpl {
public GoblinMedics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinMotivator.java b/Mage.Sets/src/mage/cards/g/GoblinMotivator.java
new file mode 100644
index 00000000000..6cc7be5324b
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/g/GoblinMotivator.java
@@ -0,0 +1,80 @@
+/*
+ * 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.costs.common.TapSourceCost;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
+import mage.abilities.keyword.HasteAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class GoblinMotivator extends CardImpl {
+
+ public GoblinMotivator(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
+
+ this.subtype.add(SubType.GOBLIN);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {T}: Target creature gains haste until end of turn.
+ Ability ability = new SimpleActivatedAbility(
+ Zone.BATTLEFIELD,
+ new GainAbilityTargetEffect(
+ HasteAbility.getInstance(),
+ Duration.EndOfTurn
+ ),
+ new TapSourceCost()
+ );
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public GoblinMotivator(final GoblinMotivator card) {
+ super(card);
+ }
+
+ @Override
+ public GoblinMotivator copy() {
+ return new GoblinMotivator(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/g/GoblinMountaineer.java b/Mage.Sets/src/mage/cards/g/GoblinMountaineer.java
index f8dd9b9050b..8b614a3cd66 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinMountaineer.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinMountaineer.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GoblinMountaineer extends CardImpl {
+public final class GoblinMountaineer extends CardImpl {
public GoblinMountaineer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinMutant.java b/Mage.Sets/src/mage/cards/g/GoblinMutant.java
index 81a01f7a775..4ac668bc6d6 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinMutant.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinMutant.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
* @author BursegSardaukar
*
*/
-public class GoblinMutant extends CardImpl {
+public final class GoblinMutant extends CardImpl {
static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creature with power 3 or greater");
static final private FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creatures with power 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinOffensive.java b/Mage.Sets/src/mage/cards/g/GoblinOffensive.java
index e7b780603d2..ed1578e3f8c 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinOffensive.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinOffensive.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author jonubuu
*/
-public class GoblinOffensive extends CardImpl {
+public final class GoblinOffensive extends CardImpl {
public GoblinOffensive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinOutlander.java b/Mage.Sets/src/mage/cards/g/GoblinOutlander.java
index 7a0704fd3f6..8f46fbb4072 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinOutlander.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinOutlander.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GoblinOutlander extends CardImpl {
+public final class GoblinOutlander extends CardImpl {
public GoblinOutlander(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinPatrol.java b/Mage.Sets/src/mage/cards/g/GoblinPatrol.java
index 1ed585acfff..a7608b434aa 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinPatrol.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinPatrol.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class GoblinPatrol extends CardImpl {
+public final class GoblinPatrol extends CardImpl {
public GoblinPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinPiker.java b/Mage.Sets/src/mage/cards/g/GoblinPiker.java
index dbd40b533ea..c8119d60787 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinPiker.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinPiker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GoblinPiker extends CardImpl {
+public final class GoblinPiker extends CardImpl {
public GoblinPiker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java b/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java
index 97b34fbc38b..1dddb0a68d4 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author jonubuu
*/
-public class GoblinPiledriver extends CardImpl {
+public final class GoblinPiledriver extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Goblin");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinPsychopath.java b/Mage.Sets/src/mage/cards/g/GoblinPsychopath.java
index a64aa200543..04805d0abf1 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinPsychopath.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinPsychopath.java
@@ -48,10 +48,10 @@ import mage.players.Player;
*
* @author L_J
*/
-public class GoblinPsychopath extends CardImpl {
+public final class GoblinPsychopath extends CardImpl {
public GoblinPsychopath(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
this.subtype.add(SubType.GOBLIN);
this.subtype.add(SubType.MUTANT);
this.power = new MageInt(5);
@@ -72,7 +72,7 @@ public class GoblinPsychopath extends CardImpl {
}
class GoblinPsychopathEffect extends ReplacementEffectImpl {
-
+
private boolean wonFlip;
public GoblinPsychopathEffect() {
@@ -97,9 +97,9 @@ class GoblinPsychopathEffect extends ReplacementEffectImpl {
@Override
public boolean checksEventType(GameEvent event, Game game) {
- return event.getType() == GameEvent.EventType.DAMAGE_CREATURE ||
- event.getType() == GameEvent.EventType.DAMAGE_PLANESWALKER ||
- event.getType() == GameEvent.EventType.DAMAGE_PLAYER;
+ return event.getType() == GameEvent.EventType.DAMAGE_CREATURE
+ || event.getType() == GameEvent.EventType.DAMAGE_PLANESWALKER
+ || event.getType() == GameEvent.EventType.DAMAGE_PLAYER;
}
@Override
@@ -116,21 +116,19 @@ class GoblinPsychopathEffect extends ReplacementEffectImpl {
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
MageObject object = game.getObject(event.getSourceId());
Player controller = game.getPlayer(source.getControllerId());
- if (controller != null && object != null) {
- if (this.applies(event, source, game) && event instanceof DamageEvent && event.getAmount() > 0) {
- DamageEvent damageEvent = (DamageEvent) event;
- if (damageEvent.isCombatDamage()) {
- if (!wonFlip) {
- // TODO: make this redirect damage from all blockers
- controller.damage(event.getAmount(), source.getSourceId(), game, false, true);
- String sourceLogName = source != null ? game.getObject(source.getSourceId()).getLogName() + ": " : "";
- game.informPlayers(sourceLogName + "Redirected " + event.getAmount() + " damage to " + controller.getLogName());
- this.discard();
- return true;
- }
- }
- }
+ if (controller == null || object == null
+ || !(this.applies(event, source, game) && event instanceof DamageEvent && event.getAmount() > 0)) {
+ return false;
}
- return false;
+ DamageEvent damageEvent = (DamageEvent) event;
+ if (!damageEvent.isCombatDamage() || wonFlip) {
+ return false;
+ }
+ // TODO: make this redirect damage from all blockers
+ controller.damage(event.getAmount(), source.getSourceId(), game, false, true);
+ String sourceLogName = game.getObject(source.getSourceId()).getLogName() + ": ";
+ game.informPlayers(sourceLogName + "Redirected " + event.getAmount() + " damage to " + controller.getLogName());
+ this.discard();
+ return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java b/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java
index b8a71039553..0d9c8c47e6c 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author emerald000
*/
-public class GoblinPyromancer extends CardImpl {
+public final class GoblinPyromancer extends CardImpl {
private static final FilterPermanent filterPermanent = new FilterPermanent("Goblins");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java b/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java
index 6ab00da64ab..67dd62a443a 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java
@@ -45,14 +45,14 @@ import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.AnotherPredicate;
import mage.filter.predicate.permanent.AttackingPredicate;
import mage.filter.predicate.permanent.ControllerPredicate;
-import mage.game.permanent.token.GoblinTokenWithHaste;
+import mage.game.permanent.token.GoblinToken;
import mage.watchers.common.AttackedThisTurnWatcher;
/**
*
* @author Quercitron
*/
-public class GoblinRabblemaster extends CardImpl {
+public final class GoblinRabblemaster extends CardImpl {
private static final FilterCreaturePermanent otherGoblinFilter = new FilterCreaturePermanent(SubType.GOBLIN, "Other Goblin creatures you control");
private static final FilterCreaturePermanent attackingFilter = new FilterCreaturePermanent(SubType.GOBLIN, "other attacking Goblin");
@@ -66,7 +66,7 @@ public class GoblinRabblemaster extends CardImpl {
}
public GoblinRabblemaster(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
this.subtype.add(SubType.GOBLIN);
this.subtype.add(SubType.WARRIOR);
@@ -78,7 +78,7 @@ public class GoblinRabblemaster extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect), new AttackedThisTurnWatcher());
// At the beginning of combat on your turn, create a 1/1 red Goblin creature token with haste.
- this.addAbility(new BeginningOfCombatTriggeredAbility(new CreateTokenEffect(new GoblinTokenWithHaste()), TargetController.YOU, false));
+ this.addAbility(new BeginningOfCombatTriggeredAbility(new CreateTokenEffect(new GoblinToken(true)), TargetController.YOU, false));
// When Goblin Rabblemaster attacks, it gets +1/+0 until end of turn for each other attacking Goblin.
this.addAbility(new AttacksTriggeredAbility(new BoostSourceEffect(new PermanentsOnBattlefieldCount(attackingFilter), new StaticValue(0), Duration.EndOfTurn, true), false));
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRacketeer.java b/Mage.Sets/src/mage/cards/g/GoblinRacketeer.java
index 4445a2d8f79..6d08b379029 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRacketeer.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRacketeer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class GoblinRacketeer extends CardImpl {
+public final class GoblinRacketeer extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRaider.java b/Mage.Sets/src/mage/cards/g/GoblinRaider.java
index 1a16ff6c92a..0d78388473b 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRaider.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRaider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class GoblinRaider extends CardImpl {
+public final class GoblinRaider extends CardImpl {
public GoblinRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRally.java b/Mage.Sets/src/mage/cards/g/GoblinRally.java
index f2670ff5c40..54cebfc0828 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRally.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRally.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author LevelX2
*/
-public class GoblinRally extends CardImpl {
+public final class GoblinRally extends CardImpl {
public GoblinRally(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRazerunners.java b/Mage.Sets/src/mage/cards/g/GoblinRazerunners.java
index 4ef3c4c38a6..364dfadb834 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRazerunners.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRazerunners.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class GoblinRazerunners extends CardImpl {
+public final class GoblinRazerunners extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRecruiter.java b/Mage.Sets/src/mage/cards/g/GoblinRecruiter.java
index 1a0e005e4cc..975054e1e8f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRecruiter.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRecruiter.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Quercitron
*/
-public class GoblinRecruiter extends CardImpl {
+public final class GoblinRecruiter extends CardImpl {
private static final FilterCard filter = new FilterCard("Goblin cards");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinReplica.java b/Mage.Sets/src/mage/cards/g/GoblinReplica.java
index 8161e8e072e..ab688f3a2ba 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinReplica.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinReplica.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class GoblinReplica extends CardImpl {
+public final class GoblinReplica extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRimerunner.java b/Mage.Sets/src/mage/cards/g/GoblinRimerunner.java
index a1574b4caaf..adf2d6b13db 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRimerunner.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRimerunner.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class GoblinRimerunner extends CardImpl {
+public final class GoblinRimerunner extends CardImpl {
public GoblinRimerunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRingleader.java b/Mage.Sets/src/mage/cards/g/GoblinRingleader.java
index f62d672e045..40bdaa6efec 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRingleader.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRingleader.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class GoblinRingleader extends CardImpl {
+public final class GoblinRingleader extends CardImpl {
private static final FilterCard filter = new FilterCard("Goblin cards");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRockSled.java b/Mage.Sets/src/mage/cards/g/GoblinRockSled.java
index 3addc4904e9..32e86b81226 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRockSled.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRockSled.java
@@ -56,7 +56,7 @@ import mage.watchers.common.AttackedLastTurnWatcher;
*
* @author L_J
*/
-public class GoblinRockSled extends CardImpl {
+public final class GoblinRockSled extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("a Mountain");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRoughrider.java b/Mage.Sets/src/mage/cards/g/GoblinRoughrider.java
index 890e60e763b..ae8eab2badf 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRoughrider.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRoughrider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GoblinRoughrider extends CardImpl {
+public final class GoblinRoughrider extends CardImpl {
public GoblinRoughrider (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRuinblaster.java b/Mage.Sets/src/mage/cards/g/GoblinRuinblaster.java
index f42c1ff93fb..b0c2c8009aa 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRuinblaster.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRuinblaster.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GoblinRuinblaster extends CardImpl {
+public final class GoblinRuinblaster extends CardImpl {
public GoblinRuinblaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinScouts.java b/Mage.Sets/src/mage/cards/g/GoblinScouts.java
index 66715039b84..db20937342c 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinScouts.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinScouts.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.GoblinScoutsToken;
*
* @author fireshoes
*/
-public class GoblinScouts extends CardImpl {
+public final class GoblinScouts extends CardImpl {
public GoblinScouts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSettler.java b/Mage.Sets/src/mage/cards/g/GoblinSettler.java
index cd007830517..01683622111 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSettler.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSettler.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class GoblinSettler extends CardImpl {
+public final class GoblinSettler extends CardImpl {
public GoblinSettler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSharpshooter.java b/Mage.Sets/src/mage/cards/g/GoblinSharpshooter.java
index a3826b87540..fb5b62d1e1b 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSharpshooter.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSharpshooter.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jonubuu
*/
-public class GoblinSharpshooter extends CardImpl {
+public final class GoblinSharpshooter extends CardImpl {
public GoblinSharpshooter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinShortcutter.java b/Mage.Sets/src/mage/cards/g/GoblinShortcutter.java
index 34d27463d09..b2ba4c3d969 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinShortcutter.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinShortcutter.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GoblinShortcutter extends CardImpl {
+public final class GoblinShortcutter extends CardImpl {
public GoblinShortcutter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinShrine.java b/Mage.Sets/src/mage/cards/g/GoblinShrine.java
index b50e60b10a3..f18e9012abb 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinShrine.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinShrine.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class GoblinShrine extends CardImpl {
+public final class GoblinShrine extends CardImpl {
private static final FilterCreaturePermanent filterGoblin = new FilterCreaturePermanent("Goblin creature");
private static final String rule = "As long as enchanted land is a basic Mountain, Goblin creatures get +1/+0.";
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSkyRaider.java b/Mage.Sets/src/mage/cards/g/GoblinSkyRaider.java
index c913f680054..c5a488253d2 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSkyRaider.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSkyRaider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GoblinSkyRaider extends CardImpl {
+public final class GoblinSkyRaider extends CardImpl {
public GoblinSkyRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSkycutter.java b/Mage.Sets/src/mage/cards/g/GoblinSkycutter.java
index 112f0a02caa..104bae3e17d 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSkycutter.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSkycutter.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*
*/
-public class GoblinSkycutter extends CardImpl {
+public final class GoblinSkycutter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSledder.java b/Mage.Sets/src/mage/cards/g/GoblinSledder.java
index 2c247cd989c..f5405fcdeed 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSledder.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSledder.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GoblinSledder extends CardImpl {
+public final class GoblinSledder extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSnowman.java b/Mage.Sets/src/mage/cards/g/GoblinSnowman.java
index bb9ea0649fd..205056fca9f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSnowman.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSnowman.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BursegSardaukar
*/
-public class GoblinSnowman extends CardImpl {
+public final class GoblinSnowman extends CardImpl {
public GoblinSnowman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java b/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java
index fd560f1d6e9..98f260db28b 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author BursegSardaukar
*/
-public class GoblinSoothsayer extends CardImpl {
+public final class GoblinSoothsayer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red creatures");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("goblin");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSpelunkers.java b/Mage.Sets/src/mage/cards/g/GoblinSpelunkers.java
index 1f663e31920..65743426383 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSpelunkers.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSpelunkers.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GoblinSpelunkers extends CardImpl {
+public final class GoblinSpelunkers extends CardImpl {
public GoblinSpelunkers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSpy.java b/Mage.Sets/src/mage/cards/g/GoblinSpy.java
index f72bd32bddf..7dc26653f19 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSpy.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSpy.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author michael.napoleon@gmail.com
*/
-public class GoblinSpy extends CardImpl {
+public final class GoblinSpy extends CardImpl {
public GoblinSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSpymaster.java b/Mage.Sets/src/mage/cards/g/GoblinSpymaster.java
index cc4a09f4428..1fabd6a65ea 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSpymaster.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSpymaster.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class GoblinSpymaster extends CardImpl {
+public final class GoblinSpymaster extends CardImpl {
public GoblinSpymaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinStriker.java b/Mage.Sets/src/mage/cards/g/GoblinStriker.java
index d26540b8f3b..05b8c5e1732 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinStriker.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinStriker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GoblinStriker extends CardImpl {
+public final class GoblinStriker extends CardImpl {
public GoblinStriker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSwineRider.java b/Mage.Sets/src/mage/cards/g/GoblinSwineRider.java
index ce4a79c8768..3ae45522327 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSwineRider.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSwineRider.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterAttackingOrBlockingCreature;
*
* @author LoneFox
*/
-public class GoblinSwineRider extends CardImpl {
+public final class GoblinSwineRider extends CardImpl {
public GoblinSwineRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java b/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java
index ef93d186ba7..25b2ba2ba19 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GoblinTaskmaster extends CardImpl {
+public final class GoblinTaskmaster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin creature");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinTestPilot.java b/Mage.Sets/src/mage/cards/g/GoblinTestPilot.java
index 304e9003664..82f1892cf26 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinTestPilot.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinTestPilot.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class GoblinTestPilot extends CardImpl {
+public final class GoblinTestPilot extends CardImpl {
public GoblinTestPilot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinTinkerer.java b/Mage.Sets/src/mage/cards/g/GoblinTinkerer.java
index f12b67014e7..d79f2654114 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinTinkerer.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinTinkerer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class GoblinTinkerer extends CardImpl {
+public final class GoblinTinkerer extends CardImpl {
public GoblinTinkerer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinTrailblazer.java b/Mage.Sets/src/mage/cards/g/GoblinTrailblazer.java
index 121cd83666a..cfe8104858c 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinTrailblazer.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinTrailblazer.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class GoblinTrailblazer extends CardImpl {
+public final class GoblinTrailblazer extends CardImpl {
public GoblinTrailblazer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinTrenches.java b/Mage.Sets/src/mage/cards/g/GoblinTrenches.java
index 906177655ea..ccb3fd042ad 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinTrenches.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinTrenches.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class GoblinTrenches extends CardImpl {
+public final class GoblinTrenches extends CardImpl {
final static FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinTunneler.java b/Mage.Sets/src/mage/cards/g/GoblinTunneler.java
index faf3f434a0b..0a8caaaab29 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinTunneler.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinTunneler.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GoblinTunneler extends CardImpl {
+public final class GoblinTunneler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinTurncoat.java b/Mage.Sets/src/mage/cards/g/GoblinTurncoat.java
index 214fd862be3..f1ef07a165e 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinTurncoat.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinTurncoat.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Backfir3
*/
-public class GoblinTurncoat extends CardImpl {
+public final class GoblinTurncoat extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinTutor.java b/Mage.Sets/src/mage/cards/g/GoblinTutor.java
index bb6a135605e..dfb7fa77252 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinTutor.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinTutor.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author spjspj
*/
-public class GoblinTutor extends CardImpl {
+public final class GoblinTutor extends CardImpl {
public GoblinTutor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinVandal.java b/Mage.Sets/src/mage/cards/g/GoblinVandal.java
index 0f35d9b0820..8597ad7550a 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinVandal.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinVandal.java
@@ -56,7 +56,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class GoblinVandal extends CardImpl {
+public final class GoblinVandal extends CardImpl {
public GoblinVandal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarBuggy.java b/Mage.Sets/src/mage/cards/g/GoblinWarBuggy.java
index 32a5a9bb0dc..3160bc39d69 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWarBuggy.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWarBuggy.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class GoblinWarBuggy extends CardImpl {
+public final class GoblinWarBuggy extends CardImpl {
public GoblinWarBuggy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarCry.java b/Mage.Sets/src/mage/cards/g/GoblinWarCry.java
index a1d6a1939af..50d8588d402 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWarCry.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWarCry.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801 & L_J
*/
-public class GoblinWarCry extends CardImpl {
+public final class GoblinWarCry extends CardImpl {
public GoblinWarCry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarDrums.java b/Mage.Sets/src/mage/cards/g/GoblinWarDrums.java
index f53fba68300..5a5c1567258 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWarDrums.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWarDrums.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
- public class GoblinWarDrums extends CardImpl {
+ public final class GoblinWarDrums extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarPaint.java b/Mage.Sets/src/mage/cards/g/GoblinWarPaint.java
index 69b6013ca71..0e388a22d24 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWarPaint.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWarPaint.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GoblinWarPaint extends CardImpl {
+public final class GoblinWarPaint extends CardImpl {
public GoblinWarPaint(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java b/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java
index 8217e81c199..ecd0b085a07 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class GoblinWarStrike extends CardImpl {
+public final class GoblinWarStrike extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblins you control");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarWagon.java b/Mage.Sets/src/mage/cards/g/GoblinWarWagon.java
index a16fd044800..58fcdf21cd4 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWarWagon.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWarWagon.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class GoblinWarWagon extends CardImpl {
+public final class GoblinWarWagon extends CardImpl {
public GoblinWarWagon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarchief.java b/Mage.Sets/src/mage/cards/g/GoblinWarchief.java
index 401dd689ec9..769f88a2966 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWarchief.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWarchief.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jonubuu
*/
-public class GoblinWarchief extends CardImpl {
+public final class GoblinWarchief extends CardImpl {
private static final FilterCard filterSpells = new FilterCard("Goblin spells");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWardriver.java b/Mage.Sets/src/mage/cards/g/GoblinWardriver.java
index 5b6bbc18e26..0aebb714725 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWardriver.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWardriver.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GoblinWardriver extends CardImpl {
+public final class GoblinWardriver extends CardImpl {
public GoblinWardriver (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarrens.java b/Mage.Sets/src/mage/cards/g/GoblinWarrens.java
index 4b68a59d043..675bf9a21f6 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWarrens.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWarrens.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Quercitron
*/
-public class GoblinWarrens extends CardImpl {
+public final class GoblinWarrens extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.GOBLIN, "Goblins");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWelder.java b/Mage.Sets/src/mage/cards/g/GoblinWelder.java
index 646f298948b..1826eecd55f 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWelder.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWelder.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Plopman
*/
-public class GoblinWelder extends CardImpl {
+public final class GoblinWelder extends CardImpl {
public GoblinWelder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWizard.java b/Mage.Sets/src/mage/cards/g/GoblinWizard.java
index 755c51e88bc..25c8bee9627 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWizard.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWizard.java
@@ -34,7 +34,7 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author BursegSardaukar
*/
-public class GoblinWizard extends CardImpl {
+public final class GoblinWizard extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Goblin");
private static final FilterPermanent goblinPermanent = new FilterPermanent("Goblin");
@@ -72,7 +72,7 @@ public class GoblinWizard extends CardImpl {
// {tap}: You may put a Goblin permanent card from your hand onto the battlefield.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new PutPermanentOnBattlefieldEffect(filter),
+ new PutCardFromHandOntoBattlefieldEffect(filter),
new TapSourceCost()));
// {R}: Target Goblin gains protection from white until end of turn.
diff --git a/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java b/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java
index 5e217e9f2cc..1a3d2c3be93 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java
@@ -43,7 +43,7 @@ import java.util.UUID;
/**
* @author fireshoes
*/
-public class GoblinsOfTheFlarg extends CardImpl {
+public final class GoblinsOfTheFlarg extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Dwarf");
diff --git a/Mage.Sets/src/mage/cards/g/Goblinslide.java b/Mage.Sets/src/mage/cards/g/Goblinslide.java
index 1114cf302cf..94cd05331b4 100644
--- a/Mage.Sets/src/mage/cards/g/Goblinslide.java
+++ b/Mage.Sets/src/mage/cards/g/Goblinslide.java
@@ -38,13 +38,13 @@ import mage.constants.CardType;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
-import mage.game.permanent.token.GoblinTokenWithHaste;
+import mage.game.permanent.token.GoblinToken;
/**
*
* @author emerald000
*/
-public class Goblinslide extends CardImpl {
+public final class Goblinslide extends CardImpl {
private static final FilterSpell filter = new FilterSpell("noncreature spell");
@@ -53,10 +53,10 @@ public class Goblinslide extends CardImpl {
}
public Goblinslide(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
// Whenever you cast a noncreature spell, you may pay {1}. If you do, create a 1/1 red Goblin creature token with haste.
- this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid(new CreateTokenEffect(new GoblinTokenWithHaste()), new GenericManaCost(1)), filter, false));
+ this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid(new CreateTokenEffect(new GoblinToken(true)), new GenericManaCost(1)), filter, false));
}
public Goblinslide(final Goblinslide card) {
diff --git a/Mage.Sets/src/mage/cards/g/GodFavoredGeneral.java b/Mage.Sets/src/mage/cards/g/GodFavoredGeneral.java
index 8f15d680551..756e47c5101 100644
--- a/Mage.Sets/src/mage/cards/g/GodFavoredGeneral.java
+++ b/Mage.Sets/src/mage/cards/g/GodFavoredGeneral.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.GodFavoredGeneralSoldierToken;
*
* @author LevelX2
*/
-public class GodFavoredGeneral extends CardImpl {
+public final class GodFavoredGeneral extends CardImpl {
public GodFavoredGeneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java b/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java
index 3f11c73617a..53c0b0de798 100644
--- a/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java
+++ b/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author emerald000
*/
-public class GodPharaohsFaithful extends CardImpl {
+public final class GodPharaohsFaithful extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a blue, black or red spell");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GodPharaohsGift.java b/Mage.Sets/src/mage/cards/g/GodPharaohsGift.java
index 47f3e65ab11..d4bbc20b5d0 100644
--- a/Mage.Sets/src/mage/cards/g/GodPharaohsGift.java
+++ b/Mage.Sets/src/mage/cards/g/GodPharaohsGift.java
@@ -58,7 +58,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class GodPharaohsGift extends CardImpl {
+public final class GodPharaohsGift extends CardImpl {
public GodPharaohsGift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/g/GodheadOfAwe.java b/Mage.Sets/src/mage/cards/g/GodheadOfAwe.java
index 1526f1791de..a5129e22aa4 100644
--- a/Mage.Sets/src/mage/cards/g/GodheadOfAwe.java
+++ b/Mage.Sets/src/mage/cards/g/GodheadOfAwe.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
* @author jeffwadsworth
*
*/
-public class GodheadOfAwe extends CardImpl {
+public final class GodheadOfAwe extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Other creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GodhunterOctopus.java b/Mage.Sets/src/mage/cards/g/GodhunterOctopus.java
index 0b96005bece..e5b6a401049 100644
--- a/Mage.Sets/src/mage/cards/g/GodhunterOctopus.java
+++ b/Mage.Sets/src/mage/cards/g/GodhunterOctopus.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.EnchantedPredicate;
*
* @author LevelX2
*/
-public class GodhunterOctopus extends CardImpl {
+public final class GodhunterOctopus extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("an enchantment or an enchanted permanent");
diff --git a/Mage.Sets/src/mage/cards/g/GodlessShrine.java b/Mage.Sets/src/mage/cards/g/GodlessShrine.java
index dc091dadd2e..20af9b174be 100644
--- a/Mage.Sets/src/mage/cards/g/GodlessShrine.java
+++ b/Mage.Sets/src/mage/cards/g/GodlessShrine.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GodlessShrine extends CardImpl {
+public final class GodlessShrine extends CardImpl {
public GodlessShrine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java b/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java
index 0cc73b3cb0b..2a35bfdf702 100644
--- a/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java
+++ b/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java
@@ -30,44 +30,39 @@ package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
-import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.common.AttacksFirstTimeTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AdditionalCombatPhaseEffect;
import mage.abilities.effects.common.UntapAllControllerEffect;
+import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
-import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.predicate.Predicates;
-import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.filter.predicate.mageobject.SubtypePredicate;
-import mage.filter.predicate.permanent.PermanentIdPredicate;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
+import mage.filter.predicate.permanent.AnotherPredicate;
import mage.target.common.TargetCardInLibrary;
-import mage.util.CardUtil;
/**
*
* @author LevelX2
*/
-public class GodoBanditWarlord extends CardImpl {
+public final class GodoBanditWarlord extends CardImpl {
private static final FilterCard filter = new FilterCard("an Equipment card");
+ private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent(SubType.SAMURAI);
+
static {
- filter.add(new CardTypePredicate(CardType.ARTIFACT));
filter.add(new SubtypePredicate(SubType.EQUIPMENT));
+ filter2.add(new AnotherPredicate());
}
public GodoBanditWarlord(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.BARBARIAN);
@@ -77,10 +72,10 @@ public class GodoBanditWarlord extends CardImpl {
// When Godo, Bandit Warlord enters the battlefield, you may search your library for an Equipment card and put it onto the battlefield. If you do, shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false, true), true));
+
// Whenever Godo attacks for the first time each turn, untap it and all Samurai you control. After this phase, there is an additional combat phase.
- FilterControlledCreaturePermanent untapFilter = new FilterControlledCreaturePermanent();
- untapFilter.add(Predicates.or(new PermanentIdPredicate(this.getId()), new SubtypePredicate(SubType.SAMURAI)));
- Ability ability = new GodoBanditWarlordAttacksTriggeredAbility(new UntapAllControllerEffect(untapFilter,"untap it and all Samurai you control"), false);
+ Ability ability = new AttacksFirstTimeTriggeredAbility(new UntapSourceEffect().setText("untap it"), false);
+ ability.addEffect(new UntapAllControllerEffect(filter2, "and all Samurai you control"));
ability.addEffect(new AdditionalCombatPhaseEffect());
this.addAbility(ability);
}
@@ -94,52 +89,3 @@ public class GodoBanditWarlord extends CardImpl {
return new GodoBanditWarlord(this);
}
}
-
-class GodoBanditWarlordAttacksTriggeredAbility extends TriggeredAbilityImpl {
-
- public GodoBanditWarlordAttacksTriggeredAbility(Effect effect, boolean optional) {
- super(Zone.BATTLEFIELD, effect, optional);
- }
-
- public GodoBanditWarlordAttacksTriggeredAbility(final GodoBanditWarlordAttacksTriggeredAbility ability) {
- super(ability);
- }
-
- @Override
- public void reset(Game game) {
- game.getState().setValue(CardUtil.getCardZoneString("amountAttacks", this.getSourceId(), game), 0);
- }
-
- @Override
- public boolean checkEventType(GameEvent event, Game game) {
- return event.getType() == EventType.ATTACKER_DECLARED;
- }
-
- @Override
- public boolean checkTrigger(GameEvent event, Game game) {
- if (event.getSourceId().equals(this.getSourceId()) ) {
- Integer amountAttacks = (Integer) game.getState().getValue(CardUtil.getCardZoneString("amountAttacks", this.getSourceId(), game));
- if (amountAttacks == null || amountAttacks < 1) {
- if (amountAttacks == null) {
- amountAttacks = 1;
- } else {
- ++amountAttacks;
- }
- game.getState().setValue(CardUtil.getCardZoneString("amountAttacks", this.getSourceId(), game), amountAttacks);
- return true;
- }
- }
- return false;
- }
-
- @Override
- public String getRule() {
- return "Whenever {this} attacks for the first time each turn, " + super.getRule();
- }
-
- @Override
- public GodoBanditWarlordAttacksTriggeredAbility copy() {
- return new GodoBanditWarlordAttacksTriggeredAbility(this);
- }
-}
-
diff --git a/Mage.Sets/src/mage/cards/g/GodosIrregulars.java b/Mage.Sets/src/mage/cards/g/GodosIrregulars.java
index 9feacc74f68..b0cb9525c44 100644
--- a/Mage.Sets/src/mage/cards/g/GodosIrregulars.java
+++ b/Mage.Sets/src/mage/cards/g/GodosIrregulars.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GodosIrregulars extends CardImpl {
+public final class GodosIrregulars extends CardImpl {
public GodosIrregulars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GodsEyeGateToTheReikai.java b/Mage.Sets/src/mage/cards/g/GodsEyeGateToTheReikai.java
index 8f0e140e526..173da1fdfc9 100644
--- a/Mage.Sets/src/mage/cards/g/GodsEyeGateToTheReikai.java
+++ b/Mage.Sets/src/mage/cards/g/GodsEyeGateToTheReikai.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.SpiritToken;
*
* @author Loki
*/
-public class GodsEyeGateToTheReikai extends CardImpl {
+public final class GodsEyeGateToTheReikai extends CardImpl {
public GodsEyeGateToTheReikai(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GodsWilling.java b/Mage.Sets/src/mage/cards/g/GodsWilling.java
index 3f3b9ddcfb2..edf19b36753 100644
--- a/Mage.Sets/src/mage/cards/g/GodsWilling.java
+++ b/Mage.Sets/src/mage/cards/g/GodsWilling.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class GodsWilling extends CardImpl {
+public final class GodsWilling extends CardImpl {
public GodsWilling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/g/Godsend.java b/Mage.Sets/src/mage/cards/g/Godsend.java
index c47dbf04cb8..412fca3b676 100644
--- a/Mage.Sets/src/mage/cards/g/Godsend.java
+++ b/Mage.Sets/src/mage/cards/g/Godsend.java
@@ -60,7 +60,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class Godsend extends CardImpl {
+public final class Godsend extends CardImpl {
public Godsend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/Godsire.java b/Mage.Sets/src/mage/cards/g/Godsire.java
index 76bcf5f3ec6..0c135d0149e 100644
--- a/Mage.Sets/src/mage/cards/g/Godsire.java
+++ b/Mage.Sets/src/mage/cards/g/Godsire.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.GodSireBeastToken;
*
* @author Loki
*/
-public class Godsire extends CardImpl {
+public final class Godsire extends CardImpl {
public Godsire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{G}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/Godtoucher.java b/Mage.Sets/src/mage/cards/g/Godtoucher.java
index 1f077b3d024..150cc21843a 100644
--- a/Mage.Sets/src/mage/cards/g/Godtoucher.java
+++ b/Mage.Sets/src/mage/cards/g/Godtoucher.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Godtoucher extends CardImpl {
+public final class Godtoucher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/g/GodtrackerOfJund.java b/Mage.Sets/src/mage/cards/g/GodtrackerOfJund.java
index 3c300ec4642..8a42d328fe5 100644
--- a/Mage.Sets/src/mage/cards/g/GodtrackerOfJund.java
+++ b/Mage.Sets/src/mage/cards/g/GodtrackerOfJund.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author jeffwadsworth
*/
-public class GodtrackerOfJund extends CardImpl {
+public final class GodtrackerOfJund extends CardImpl {
final private static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/g/GohamDjinn.java b/Mage.Sets/src/mage/cards/g/GohamDjinn.java
index 412d5d98d8c..228161e1ea2 100644
--- a/Mage.Sets/src/mage/cards/g/GohamDjinn.java
+++ b/Mage.Sets/src/mage/cards/g/GohamDjinn.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class GohamDjinn extends CardImpl {
+public final class GohamDjinn extends CardImpl {
public GohamDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldForgeGarrison.java b/Mage.Sets/src/mage/cards/g/GoldForgeGarrison.java
index 90f1e96bedf..d0a4070c8a4 100644
--- a/Mage.Sets/src/mage/cards/g/GoldForgeGarrison.java
+++ b/Mage.Sets/src/mage/cards/g/GoldForgeGarrison.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.GoldForgeGarrisonGolemToken;
*
* @author LevelX2
*/
-public class GoldForgeGarrison extends CardImpl {
+public final class GoldForgeGarrison extends CardImpl {
public GoldForgeGarrison(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/g/GoldForgedSentinel.java b/Mage.Sets/src/mage/cards/g/GoldForgedSentinel.java
index 075126de393..b978a514b9b 100644
--- a/Mage.Sets/src/mage/cards/g/GoldForgedSentinel.java
+++ b/Mage.Sets/src/mage/cards/g/GoldForgedSentinel.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GoldForgedSentinel extends CardImpl {
+public final class GoldForgedSentinel extends CardImpl {
public GoldForgedSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldMyr.java b/Mage.Sets/src/mage/cards/g/GoldMyr.java
index 19f8b628462..85e8075cd9b 100644
--- a/Mage.Sets/src/mage/cards/g/GoldMyr.java
+++ b/Mage.Sets/src/mage/cards/g/GoldMyr.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GoldMyr extends CardImpl {
+public final class GoldMyr extends CardImpl {
public GoldMyr (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldenBear.java b/Mage.Sets/src/mage/cards/g/GoldenBear.java
index 930d9c10aef..ac948f8d6fe 100644
--- a/Mage.Sets/src/mage/cards/g/GoldenBear.java
+++ b/Mage.Sets/src/mage/cards/g/GoldenBear.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class GoldenBear extends CardImpl {
+public final class GoldenBear extends CardImpl {
public GoldenBear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldenDemise.java b/Mage.Sets/src/mage/cards/g/GoldenDemise.java
index 1de4a2f9f70..f8e70cc04b8 100644
--- a/Mage.Sets/src/mage/cards/g/GoldenDemise.java
+++ b/Mage.Sets/src/mage/cards/g/GoldenDemise.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class GoldenDemise extends CardImpl {
+public final class GoldenDemise extends CardImpl {
public GoldenDemise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldenGuardian.java b/Mage.Sets/src/mage/cards/g/GoldenGuardian.java
index 1734d5d0365..92783f16c5a 100644
--- a/Mage.Sets/src/mage/cards/g/GoldenGuardian.java
+++ b/Mage.Sets/src/mage/cards/g/GoldenGuardian.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class GoldenGuardian extends CardImpl {
+public final class GoldenGuardian extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control");
diff --git a/Mage.Sets/src/mage/cards/g/GoldenHind.java b/Mage.Sets/src/mage/cards/g/GoldenHind.java
index d3d105109de..3aec40defc1 100644
--- a/Mage.Sets/src/mage/cards/g/GoldenHind.java
+++ b/Mage.Sets/src/mage/cards/g/GoldenHind.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GoldenHind extends CardImpl {
+public final class GoldenHind extends CardImpl {
public GoldenHind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldenUrn.java b/Mage.Sets/src/mage/cards/g/GoldenUrn.java
index a8b28eb8f8d..8c4f3ea963a 100644
--- a/Mage.Sets/src/mage/cards/g/GoldenUrn.java
+++ b/Mage.Sets/src/mage/cards/g/GoldenUrn.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class GoldenUrn extends CardImpl {
+public final class GoldenUrn extends CardImpl {
public GoldenUrn (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldenWish.java b/Mage.Sets/src/mage/cards/g/GoldenWish.java
index 2ec362ccf0a..a548dad17ef 100644
--- a/Mage.Sets/src/mage/cards/g/GoldenWish.java
+++ b/Mage.Sets/src/mage/cards/g/GoldenWish.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class GoldenWish extends CardImpl {
+public final class GoldenWish extends CardImpl {
private static final FilterCard filter = new FilterCard("an artifact or enchantment card");
diff --git a/Mage.Sets/src/mage/cards/g/GoldenglowMoth.java b/Mage.Sets/src/mage/cards/g/GoldenglowMoth.java
index 5cfb2096828..cee6194cf52 100644
--- a/Mage.Sets/src/mage/cards/g/GoldenglowMoth.java
+++ b/Mage.Sets/src/mage/cards/g/GoldenglowMoth.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GoldenglowMoth extends CardImpl {
+public final class GoldenglowMoth extends CardImpl {
public GoldenglowMoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldenhideOx.java b/Mage.Sets/src/mage/cards/g/GoldenhideOx.java
index 05cf71f0163..ddc174774f4 100644
--- a/Mage.Sets/src/mage/cards/g/GoldenhideOx.java
+++ b/Mage.Sets/src/mage/cards/g/GoldenhideOx.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GoldenhideOx extends CardImpl {
+public final class GoldenhideOx extends CardImpl {
public GoldenhideOx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldmeadowDodger.java b/Mage.Sets/src/mage/cards/g/GoldmeadowDodger.java
index e14cd8654c6..f658243ef14 100644
--- a/Mage.Sets/src/mage/cards/g/GoldmeadowDodger.java
+++ b/Mage.Sets/src/mage/cards/g/GoldmeadowDodger.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author Wehk
*/
-public class GoldmeadowDodger extends CardImpl {
+public final class GoldmeadowDodger extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creatures with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/g/GoldmeadowHarrier.java b/Mage.Sets/src/mage/cards/g/GoldmeadowHarrier.java
index 7492916ddd0..bf0e0b1cea1 100644
--- a/Mage.Sets/src/mage/cards/g/GoldmeadowHarrier.java
+++ b/Mage.Sets/src/mage/cards/g/GoldmeadowHarrier.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class GoldmeadowHarrier extends CardImpl {
+public final class GoldmeadowHarrier extends CardImpl {
public GoldmeadowHarrier (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldmeadowLookout.java b/Mage.Sets/src/mage/cards/g/GoldmeadowLookout.java
index 792b65ef03f..787acbd34aa 100644
--- a/Mage.Sets/src/mage/cards/g/GoldmeadowLookout.java
+++ b/Mage.Sets/src/mage/cards/g/GoldmeadowLookout.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.GoldmeadowHarrierToken;
*
* @author fireshoes
*/
-public class GoldmeadowLookout extends CardImpl {
+public final class GoldmeadowLookout extends CardImpl {
public GoldmeadowLookout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldmeadowStalwart.java b/Mage.Sets/src/mage/cards/g/GoldmeadowStalwart.java
index 73ee2b12732..448ea8fa08c 100644
--- a/Mage.Sets/src/mage/cards/g/GoldmeadowStalwart.java
+++ b/Mage.Sets/src/mage/cards/g/GoldmeadowStalwart.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class GoldmeadowStalwart extends CardImpl {
+public final class GoldmeadowStalwart extends CardImpl {
private static final FilterCard filter = new FilterCard("a Kithkin card from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GoldnightCastigator.java b/Mage.Sets/src/mage/cards/g/GoldnightCastigator.java
index 5f173392257..8bfc6ac7a94 100644
--- a/Mage.Sets/src/mage/cards/g/GoldnightCastigator.java
+++ b/Mage.Sets/src/mage/cards/g/GoldnightCastigator.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class GoldnightCastigator extends CardImpl {
+public final class GoldnightCastigator extends CardImpl {
public GoldnightCastigator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldnightCommander.java b/Mage.Sets/src/mage/cards/g/GoldnightCommander.java
index 56f03170be5..aad807f53f4 100644
--- a/Mage.Sets/src/mage/cards/g/GoldnightCommander.java
+++ b/Mage.Sets/src/mage/cards/g/GoldnightCommander.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
/**
* @author Loki
*/
-public class GoldnightCommander extends CardImpl {
+public final class GoldnightCommander extends CardImpl {
public GoldnightCommander(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GoldnightRedeemer.java b/Mage.Sets/src/mage/cards/g/GoldnightRedeemer.java
index 633c5ec444b..20840d86e4f 100644
--- a/Mage.Sets/src/mage/cards/g/GoldnightRedeemer.java
+++ b/Mage.Sets/src/mage/cards/g/GoldnightRedeemer.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
* @author noxx
*/
-public class GoldnightRedeemer extends CardImpl {
+public final class GoldnightRedeemer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other creature you control");
diff --git a/Mage.Sets/src/mage/cards/g/GolemArtisan.java b/Mage.Sets/src/mage/cards/g/GolemArtisan.java
index 132bcba0b4a..de8d468f6ce 100644
--- a/Mage.Sets/src/mage/cards/g/GolemArtisan.java
+++ b/Mage.Sets/src/mage/cards/g/GolemArtisan.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author nantuko
*/
-public class GolemArtisan extends CardImpl {
+public final class GolemArtisan extends CardImpl {
public GolemArtisan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/g/GolemFoundry.java b/Mage.Sets/src/mage/cards/g/GolemFoundry.java
index af15ee535f9..c58367128af 100644
--- a/Mage.Sets/src/mage/cards/g/GolemFoundry.java
+++ b/Mage.Sets/src/mage/cards/g/GolemFoundry.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.GolemToken;
*
* @author Loki, North
*/
-public class GolemFoundry extends CardImpl {
+public final class GolemFoundry extends CardImpl {
public GolemFoundry (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GolemSkinGauntlets.java b/Mage.Sets/src/mage/cards/g/GolemSkinGauntlets.java
index 8dbcccd31d1..b5c9e6b84c4 100644
--- a/Mage.Sets/src/mage/cards/g/GolemSkinGauntlets.java
+++ b/Mage.Sets/src/mage/cards/g/GolemSkinGauntlets.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class GolemSkinGauntlets extends CardImpl {
+public final class GolemSkinGauntlets extends CardImpl {
public GolemSkinGauntlets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/g/GolemsHeart.java b/Mage.Sets/src/mage/cards/g/GolemsHeart.java
index 2ab886d12dc..f613ed7c4e4 100644
--- a/Mage.Sets/src/mage/cards/g/GolemsHeart.java
+++ b/Mage.Sets/src/mage/cards/g/GolemsHeart.java
@@ -43,7 +43,7 @@ import mage.game.stack.Spell;
*
* @author Loki
*/
-public class GolemsHeart extends CardImpl {
+public final class GolemsHeart extends CardImpl {
public GolemsHeart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariBrownscale.java b/Mage.Sets/src/mage/cards/g/GolgariBrownscale.java
index 2c546fbc934..68f25206aaf 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariBrownscale.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariBrownscale.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GolgariBrownscale extends CardImpl {
+public final class GolgariBrownscale extends CardImpl {
public GolgariBrownscale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariCharm.java b/Mage.Sets/src/mage/cards/g/GolgariCharm.java
index 98576fc5dd4..eb4d5e78c16 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariCharm.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariCharm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class GolgariCharm extends CardImpl {
+public final class GolgariCharm extends CardImpl {
public GolgariCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariCluestone.java b/Mage.Sets/src/mage/cards/g/GolgariCluestone.java
index 37b5efdc7bd..5db7d69bd35 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariCluestone.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariCluestone.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*/
-public class GolgariCluestone extends CardImpl {
+public final class GolgariCluestone extends CardImpl {
public GolgariCluestone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariDecoy.java b/Mage.Sets/src/mage/cards/g/GolgariDecoy.java
index b9edac6a7b4..38cc8e0d6ba 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariDecoy.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariDecoy.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GolgariDecoy extends CardImpl {
+public final class GolgariDecoy extends CardImpl {
public GolgariDecoy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariGermination.java b/Mage.Sets/src/mage/cards/g/GolgariGermination.java
index 814d6b57b14..1e64cc8bff9 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariGermination.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariGermination.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author Wehk
*/
-public class GolgariGermination extends CardImpl {
+public final class GolgariGermination extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature you control");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariGraveTroll.java b/Mage.Sets/src/mage/cards/g/GolgariGraveTroll.java
index 0f2570e33e6..de6eb9c482b 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariGraveTroll.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariGraveTroll.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author jonubuu
*/
-public class GolgariGraveTroll extends CardImpl {
+public final class GolgariGraveTroll extends CardImpl {
public GolgariGraveTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariGuildgate.java b/Mage.Sets/src/mage/cards/g/GolgariGuildgate.java
index 3bb01769523..1a163dad09d 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariGuildgate.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariGuildgate.java
@@ -40,7 +40,7 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class GolgariGuildgate extends CardImpl {
+public final class GolgariGuildgate extends CardImpl {
public GolgariGuildgate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariGuildmage.java b/Mage.Sets/src/mage/cards/g/GolgariGuildmage.java
index a330bdf9c12..b4f9a278f0b 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariGuildmage.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariGuildmage.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class GolgariGuildmage extends CardImpl {
+public final class GolgariGuildmage extends CardImpl {
public GolgariGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B/G}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariKeyrune.java b/Mage.Sets/src/mage/cards/g/GolgariKeyrune.java
index 6a010297c8b..b4ff614659f 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariKeyrune.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariKeyrune.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.Token;
/**
* @author LevelX2
*/
-public class GolgariKeyrune extends CardImpl {
+public final class GolgariKeyrune extends CardImpl {
public GolgariKeyrune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariLonglegs.java b/Mage.Sets/src/mage/cards/g/GolgariLonglegs.java
index 3f631fc0771..7aec6c3bb98 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariLonglegs.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariLonglegs.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GolgariLonglegs extends CardImpl {
+public final class GolgariLonglegs extends CardImpl {
public GolgariLonglegs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B/G}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariRotFarm.java b/Mage.Sets/src/mage/cards/g/GolgariRotFarm.java
index 366ab29a419..ce10e6edf22 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariRotFarm.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariRotFarm.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Loki
*/
-public class GolgariRotFarm extends CardImpl {
+public final class GolgariRotFarm extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/g/GolgariRotwurm.java b/Mage.Sets/src/mage/cards/g/GolgariRotwurm.java
index 52de8e78f6c..005fffe529e 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariRotwurm.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariRotwurm.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class GolgariRotwurm extends CardImpl {
+public final class GolgariRotwurm extends CardImpl {
public GolgariRotwurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariSignet.java b/Mage.Sets/src/mage/cards/g/GolgariSignet.java
index 2fe4aecde2c..8bbf8e4ee42 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariSignet.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariSignet.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class GolgariSignet extends CardImpl {
+public final class GolgariSignet extends CardImpl {
public GolgariSignet (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/g/GolgariThug.java b/Mage.Sets/src/mage/cards/g/GolgariThug.java
index 242c6260476..c0cd69b1fe0 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariThug.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariThug.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jonubuu
*/
-public class GolgariThug extends CardImpl {
+public final class GolgariThug extends CardImpl {
private static final FilterCard filter = new FilterCard("creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/g/GolgothianSylex.java b/Mage.Sets/src/mage/cards/g/GolgothianSylex.java
index db187142ea1..bfd2adb60c6 100644
--- a/Mage.Sets/src/mage/cards/g/GolgothianSylex.java
+++ b/Mage.Sets/src/mage/cards/g/GolgothianSylex.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author MarcoMarin
*/
-public class GolgothianSylex extends CardImpl {
+public final class GolgothianSylex extends CardImpl {
public GolgothianSylex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GoliathBeetle.java b/Mage.Sets/src/mage/cards/g/GoliathBeetle.java
index 6425a636ea5..66bebe63012 100644
--- a/Mage.Sets/src/mage/cards/g/GoliathBeetle.java
+++ b/Mage.Sets/src/mage/cards/g/GoliathBeetle.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GoliathBeetle extends CardImpl {
+public final class GoliathBeetle extends CardImpl {
public GoliathBeetle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GoliathSphinx.java b/Mage.Sets/src/mage/cards/g/GoliathSphinx.java
index 79412133e27..eb6a74cdc24 100644
--- a/Mage.Sets/src/mage/cards/g/GoliathSphinx.java
+++ b/Mage.Sets/src/mage/cards/g/GoliathSphinx.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GoliathSphinx extends CardImpl {
+public final class GoliathSphinx extends CardImpl {
public GoliathSphinx (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GoliathSpider.java b/Mage.Sets/src/mage/cards/g/GoliathSpider.java
index 04124252850..aaa872dd775 100644
--- a/Mage.Sets/src/mage/cards/g/GoliathSpider.java
+++ b/Mage.Sets/src/mage/cards/g/GoliathSpider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GoliathSpider extends CardImpl {
+public final class GoliathSpider extends CardImpl {
public GoliathSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Gomazoa.java b/Mage.Sets/src/mage/cards/g/Gomazoa.java
index 0d8bc788fe1..1b9b6bd7f27 100644
--- a/Mage.Sets/src/mage/cards/g/Gomazoa.java
+++ b/Mage.Sets/src/mage/cards/g/Gomazoa.java
@@ -54,7 +54,7 @@ import mage.watchers.Watcher;
*
* @author jeffwadsworth
*/
-public class Gomazoa extends CardImpl {
+public final class Gomazoa extends CardImpl {
public Gomazoa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GoneMissing.java b/Mage.Sets/src/mage/cards/g/GoneMissing.java
index 2566733e2a2..66a48808d9e 100644
--- a/Mage.Sets/src/mage/cards/g/GoneMissing.java
+++ b/Mage.Sets/src/mage/cards/g/GoneMissing.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class GoneMissing extends CardImpl {
+public final class GoneMissing extends CardImpl {
public GoneMissing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GontiLordOfLuxury.java b/Mage.Sets/src/mage/cards/g/GontiLordOfLuxury.java
index 1702679c4a2..7b6efdaffc4 100644
--- a/Mage.Sets/src/mage/cards/g/GontiLordOfLuxury.java
+++ b/Mage.Sets/src/mage/cards/g/GontiLordOfLuxury.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class GontiLordOfLuxury extends CardImpl {
+public final class GontiLordOfLuxury extends CardImpl {
protected static final String VALUE_PREFIX = "ExileZones";
diff --git a/Mage.Sets/src/mage/cards/g/GontisAetherHeart.java b/Mage.Sets/src/mage/cards/g/GontisAetherHeart.java
index b8d878c986a..f129b80b04a 100644
--- a/Mage.Sets/src/mage/cards/g/GontisAetherHeart.java
+++ b/Mage.Sets/src/mage/cards/g/GontisAetherHeart.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class GontisAetherHeart extends CardImpl {
+public final class GontisAetherHeart extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("{this} or another artifact");
diff --git a/Mage.Sets/src/mage/cards/g/GontisMachinations.java b/Mage.Sets/src/mage/cards/g/GontisMachinations.java
index ed5a711eee8..86e727f30fa 100644
--- a/Mage.Sets/src/mage/cards/g/GontisMachinations.java
+++ b/Mage.Sets/src/mage/cards/g/GontisMachinations.java
@@ -50,7 +50,7 @@ import mage.watchers.Watcher;
/**
* @author LevelX2
*/
-public class GontisMachinations extends CardImpl {
+public final class GontisMachinations extends CardImpl {
public GontisMachinations(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GoreHouseChainwalker.java b/Mage.Sets/src/mage/cards/g/GoreHouseChainwalker.java
index 3254084ba92..104dba6a03f 100644
--- a/Mage.Sets/src/mage/cards/g/GoreHouseChainwalker.java
+++ b/Mage.Sets/src/mage/cards/g/GoreHouseChainwalker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GoreHouseChainwalker extends CardImpl {
+public final class GoreHouseChainwalker extends CardImpl {
public GoreHouseChainwalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoreSwine.java b/Mage.Sets/src/mage/cards/g/GoreSwine.java
index bf3364d156e..47716199157 100644
--- a/Mage.Sets/src/mage/cards/g/GoreSwine.java
+++ b/Mage.Sets/src/mage/cards/g/GoreSwine.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class GoreSwine extends CardImpl {
+public final class GoreSwine extends CardImpl {
public GoreSwine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoreVassal.java b/Mage.Sets/src/mage/cards/g/GoreVassal.java
index 475f5d5c387..fde65c4d664 100644
--- a/Mage.Sets/src/mage/cards/g/GoreVassal.java
+++ b/Mage.Sets/src/mage/cards/g/GoreVassal.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GoreVassal extends CardImpl {
+public final class GoreVassal extends CardImpl {
public GoreVassal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GorehornMinotaurs.java b/Mage.Sets/src/mage/cards/g/GorehornMinotaurs.java
index 3212e0ba53a..41ed51ac013 100644
--- a/Mage.Sets/src/mage/cards/g/GorehornMinotaurs.java
+++ b/Mage.Sets/src/mage/cards/g/GorehornMinotaurs.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GorehornMinotaurs extends CardImpl {
+public final class GorehornMinotaurs extends CardImpl {
public GorehornMinotaurs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoretuskFirebeast.java b/Mage.Sets/src/mage/cards/g/GoretuskFirebeast.java
index 1d347922257..7668d3f77f0 100644
--- a/Mage.Sets/src/mage/cards/g/GoretuskFirebeast.java
+++ b/Mage.Sets/src/mage/cards/g/GoretuskFirebeast.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Backfir3
*/
-public class GoretuskFirebeast extends CardImpl {
+public final class GoretuskFirebeast extends CardImpl {
public GoretuskFirebeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GorgerWurm.java b/Mage.Sets/src/mage/cards/g/GorgerWurm.java
index cf6f5b3000b..c9dbb5b4250 100644
--- a/Mage.Sets/src/mage/cards/g/GorgerWurm.java
+++ b/Mage.Sets/src/mage/cards/g/GorgerWurm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GorgerWurm extends CardImpl {
+public final class GorgerWurm extends CardImpl {
public GorgerWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GorgonFlail.java b/Mage.Sets/src/mage/cards/g/GorgonFlail.java
index 43acd3fc4d1..4bb1157bb74 100644
--- a/Mage.Sets/src/mage/cards/g/GorgonFlail.java
+++ b/Mage.Sets/src/mage/cards/g/GorgonFlail.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class GorgonFlail extends CardImpl {
+public final class GorgonFlail extends CardImpl {
public GorgonFlail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/g/GorgonRecluse.java b/Mage.Sets/src/mage/cards/g/GorgonRecluse.java
index b12a05f9c49..bee203e8d37 100644
--- a/Mage.Sets/src/mage/cards/g/GorgonRecluse.java
+++ b/Mage.Sets/src/mage/cards/g/GorgonRecluse.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author nigelzor
*/
-public class GorgonRecluse extends CardImpl {
+public final class GorgonRecluse extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/g/GorgonsHead.java b/Mage.Sets/src/mage/cards/g/GorgonsHead.java
index 3188daa4d79..4ae42ad2325 100644
--- a/Mage.Sets/src/mage/cards/g/GorgonsHead.java
+++ b/Mage.Sets/src/mage/cards/g/GorgonsHead.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GorgonsHead extends CardImpl {
+public final class GorgonsHead extends CardImpl {
public GorgonsHead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/g/GorillaBerserkers.java b/Mage.Sets/src/mage/cards/g/GorillaBerserkers.java
index 6862b37de78..968b1103f17 100644
--- a/Mage.Sets/src/mage/cards/g/GorillaBerserkers.java
+++ b/Mage.Sets/src/mage/cards/g/GorillaBerserkers.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class GorillaBerserkers extends CardImpl {
+public final class GorillaBerserkers extends CardImpl {
public GorillaBerserkers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GorillaChieftain.java b/Mage.Sets/src/mage/cards/g/GorillaChieftain.java
index 86c7b44b0a4..880dd8e6955 100644
--- a/Mage.Sets/src/mage/cards/g/GorillaChieftain.java
+++ b/Mage.Sets/src/mage/cards/g/GorillaChieftain.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class GorillaChieftain extends CardImpl {
+public final class GorillaChieftain extends CardImpl {
public GorillaChieftain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GorillaPack.java b/Mage.Sets/src/mage/cards/g/GorillaPack.java
index d82ff45891a..0a1afbd7100 100644
--- a/Mage.Sets/src/mage/cards/g/GorillaPack.java
+++ b/Mage.Sets/src/mage/cards/g/GorillaPack.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class GorillaPack extends CardImpl {
+public final class GorillaPack extends CardImpl {
public GorillaPack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GorillaShaman.java b/Mage.Sets/src/mage/cards/g/GorillaShaman.java
index 751fed34d65..44c41c12e12 100644
--- a/Mage.Sets/src/mage/cards/g/GorillaShaman.java
+++ b/Mage.Sets/src/mage/cards/g/GorillaShaman.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class GorillaShaman extends CardImpl {
+public final class GorillaShaman extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature artifact with converted mana cost X");
diff --git a/Mage.Sets/src/mage/cards/g/GorillaTitan.java b/Mage.Sets/src/mage/cards/g/GorillaTitan.java
index 4806542fe99..e28f46b1192 100644
--- a/Mage.Sets/src/mage/cards/g/GorillaTitan.java
+++ b/Mage.Sets/src/mage/cards/g/GorillaTitan.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class GorillaTitan extends CardImpl {
+public final class GorillaTitan extends CardImpl {
public GorillaTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GorillaWarCry.java b/Mage.Sets/src/mage/cards/g/GorillaWarCry.java
index 3b0f9366fba..94a4653b101 100644
--- a/Mage.Sets/src/mage/cards/g/GorillaWarCry.java
+++ b/Mage.Sets/src/mage/cards/g/GorillaWarCry.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author fireshoes
*/
-public class GorillaWarCry extends CardImpl {
+public final class GorillaWarCry extends CardImpl {
public GorillaWarCry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GorillaWarrior.java b/Mage.Sets/src/mage/cards/g/GorillaWarrior.java
index f3c3ba24f16..c32aa225b33 100644
--- a/Mage.Sets/src/mage/cards/g/GorillaWarrior.java
+++ b/Mage.Sets/src/mage/cards/g/GorillaWarrior.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class GorillaWarrior extends CardImpl {
+public final class GorillaWarrior extends CardImpl {
public GorillaWarrior (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GoringCeratops.java b/Mage.Sets/src/mage/cards/g/GoringCeratops.java
index b8a30f1a262..eac3fb562b7 100644
--- a/Mage.Sets/src/mage/cards/g/GoringCeratops.java
+++ b/Mage.Sets/src/mage/cards/g/GoringCeratops.java
@@ -45,7 +45,7 @@ import mage.filter.StaticFilters;
*
* @author caldover
*/
-public class GoringCeratops extends CardImpl {
+public final class GoringCeratops extends CardImpl {
public GoringCeratops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GoryosVengeance.java b/Mage.Sets/src/mage/cards/g/GoryosVengeance.java
index 8f962662d7a..f1de8608ce7 100644
--- a/Mage.Sets/src/mage/cards/g/GoryosVengeance.java
+++ b/Mage.Sets/src/mage/cards/g/GoryosVengeance.java
@@ -55,7 +55,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class GoryosVengeance extends CardImpl {
+public final class GoryosVengeance extends CardImpl {
private static final FilterCard filter = new FilterCard("legendary creature card");
diff --git a/Mage.Sets/src/mage/cards/g/GossamerChains.java b/Mage.Sets/src/mage/cards/g/GossamerChains.java
index 5a9c9cc6d7e..83c0c6a98b7 100644
--- a/Mage.Sets/src/mage/cards/g/GossamerChains.java
+++ b/Mage.Sets/src/mage/cards/g/GossamerChains.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class GossamerChains extends CardImpl {
+public final class GossamerChains extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("unblocked creature");
diff --git a/Mage.Sets/src/mage/cards/g/GossamerPhantasm.java b/Mage.Sets/src/mage/cards/g/GossamerPhantasm.java
index 5771bc16382..778b61026b3 100644
--- a/Mage.Sets/src/mage/cards/g/GossamerPhantasm.java
+++ b/Mage.Sets/src/mage/cards/g/GossamerPhantasm.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class GossamerPhantasm extends CardImpl {
+public final class GossamerPhantasm extends CardImpl {
public GossamerPhantasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GostaDirk.java b/Mage.Sets/src/mage/cards/g/GostaDirk.java
index 4ca1aa3283d..eaead5a4628 100644
--- a/Mage.Sets/src/mage/cards/g/GostaDirk.java
+++ b/Mage.Sets/src/mage/cards/g/GostaDirk.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class GostaDirk extends CardImpl {
+public final class GostaDirk extends CardImpl {
public GostaDirk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java b/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java
index 492d5838a27..68941edd9de 100644
--- a/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java
+++ b/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Wehk
*/
-public class GovernTheGuildless extends CardImpl {
+public final class GovernTheGuildless extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("monocolored creature");
diff --git a/Mage.Sets/src/mage/cards/g/GrabTheReins.java b/Mage.Sets/src/mage/cards/g/GrabTheReins.java
index ab3b3bcddd0..f3911d01b4a 100644
--- a/Mage.Sets/src/mage/cards/g/GrabTheReins.java
+++ b/Mage.Sets/src/mage/cards/g/GrabTheReins.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*
*/
-public class GrabTheReins extends CardImpl {
+public final class GrabTheReins extends CardImpl {
public GrabTheReins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GracebladeArtisan.java b/Mage.Sets/src/mage/cards/g/GracebladeArtisan.java
index a4d50f7e2eb..15388973e3e 100644
--- a/Mage.Sets/src/mage/cards/g/GracebladeArtisan.java
+++ b/Mage.Sets/src/mage/cards/g/GracebladeArtisan.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class GracebladeArtisan extends CardImpl {
+public final class GracebladeArtisan extends CardImpl {
public GracebladeArtisan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GracefulAdept.java b/Mage.Sets/src/mage/cards/g/GracefulAdept.java
index fd8c4e5daef..dd5d3cfb296 100644
--- a/Mage.Sets/src/mage/cards/g/GracefulAdept.java
+++ b/Mage.Sets/src/mage/cards/g/GracefulAdept.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author nantuko
*/
-public class GracefulAdept extends CardImpl {
+public final class GracefulAdept extends CardImpl {
public GracefulAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GracefulAntelope.java b/Mage.Sets/src/mage/cards/g/GracefulAntelope.java
index d05f1044d47..1c49c51ec64 100644
--- a/Mage.Sets/src/mage/cards/g/GracefulAntelope.java
+++ b/Mage.Sets/src/mage/cards/g/GracefulAntelope.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author cbt33, Loki (Contaminated Ground), Plopman (Larceny)
*/
-public class GracefulAntelope extends CardImpl {
+public final class GracefulAntelope extends CardImpl {
public GracefulAntelope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GracefulCat.java b/Mage.Sets/src/mage/cards/g/GracefulCat.java
index 69f7b9abd39..7df3e5ae524 100644
--- a/Mage.Sets/src/mage/cards/g/GracefulCat.java
+++ b/Mage.Sets/src/mage/cards/g/GracefulCat.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class GracefulCat extends CardImpl {
+public final class GracefulCat extends CardImpl {
public GracefulCat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GracefulReprieve.java b/Mage.Sets/src/mage/cards/g/GracefulReprieve.java
index f727f6d91b7..9ca5fc520c7 100644
--- a/Mage.Sets/src/mage/cards/g/GracefulReprieve.java
+++ b/Mage.Sets/src/mage/cards/g/GracefulReprieve.java
@@ -28,6 +28,7 @@
package mage.cards.g;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -42,23 +43,23 @@ import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.events.ZoneChangeEvent;
-import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetCreaturePermanent;
+import mage.target.targetpointer.FixedTarget;
/**
*
* @author jeffwadsworth
*/
-public class GracefulReprieve extends CardImpl {
+public final class GracefulReprieve extends CardImpl {
public GracefulReprieve(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
// When target creature dies this turn, return that card to the battlefield under its owner's control.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new GracefulReprieveEffect());
-
+
}
public GracefulReprieve(final GracefulReprieve card) {
@@ -89,7 +90,7 @@ class GracefulReprieveEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- DelayedTriggeredAbility delayedAbility = new GracefulReprieveDelayedTriggeredAbility(targetPointer.getFirst(game, source));
+ DelayedTriggeredAbility delayedAbility = new GracefulReprieveDelayedTriggeredAbility(new MageObjectReference(targetPointer.getFirst(game, source), game));
game.addDelayedTriggeredAbility(delayedAbility, source);
return true;
}
@@ -97,10 +98,10 @@ class GracefulReprieveEffect extends OneShotEffect {
class GracefulReprieveDelayedTriggeredAbility extends DelayedTriggeredAbility {
- private UUID target;
+ private MageObjectReference target;
- public GracefulReprieveDelayedTriggeredAbility(UUID target) {
- super(new GracefulReprieveDelayedEffect(target), Duration.EndOfTurn);
+ public GracefulReprieveDelayedTriggeredAbility(MageObjectReference target) {
+ super(new GracefulReprieveDelayedEffect(), Duration.EndOfTurn);
this.target = target;
}
@@ -116,9 +117,10 @@ class GracefulReprieveDelayedTriggeredAbility extends DelayedTriggeredAbility {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
- if (event.getTargetId().equals(target)) {
+ if (target.refersTo(((ZoneChangeEvent) event).getTarget(), game)) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ getEffects().setTargetPointer(new FixedTarget(target.getSourceId()));
return true;
}
}
@@ -138,17 +140,13 @@ class GracefulReprieveDelayedTriggeredAbility extends DelayedTriggeredAbility {
class GracefulReprieveDelayedEffect extends OneShotEffect {
- private final UUID target;
-
- public GracefulReprieveDelayedEffect(UUID target) {
+ public GracefulReprieveDelayedEffect() {
super(Outcome.PutCreatureInPlay);
- this.target = target;
this.staticText = "return that card to the battlefield under its owner's control";
}
public GracefulReprieveDelayedEffect(final GracefulReprieveDelayedEffect effect) {
super(effect);
- this.target = effect.target;
}
@Override
@@ -159,17 +157,12 @@ class GracefulReprieveDelayedEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
- Permanent permanent = (Permanent) game.getLastKnownInformation(target, Zone.BATTLEFIELD);
- if (controller != null
- && permanent != null) {
- Player player = game.getPlayer(permanent.getOwnerId());
- if (player != null) {
- Card card = game.getCard(target);
- if (card != null && game.getState().getZone(card.getId()) == Zone.GRAVEYARD) {
- return card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), player.getId());
- }
- return true;
+ if (controller != null) {
+ Card card = game.getCard(getTargetPointer().getFirst(game, source));
+ if (card != null && game.getState().getZone(card.getId()) == Zone.GRAVEYARD) {
+ controller.moveCards(card, Zone.BATTLEFIELD, source, game, false, false, true, null);
}
+ return true;
}
return false;
}
diff --git a/Mage.Sets/src/mage/cards/g/GrafHarvest.java b/Mage.Sets/src/mage/cards/g/GrafHarvest.java
index e6ae038832b..83cd3881c5c 100644
--- a/Mage.Sets/src/mage/cards/g/GrafHarvest.java
+++ b/Mage.Sets/src/mage/cards/g/GrafHarvest.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class GrafHarvest extends CardImpl {
+public final class GrafHarvest extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Zombies you control");
diff --git a/Mage.Sets/src/mage/cards/g/GrafMole.java b/Mage.Sets/src/mage/cards/g/GrafMole.java
index 90acdffb6da..5e3f2a6dd46 100644
--- a/Mage.Sets/src/mage/cards/g/GrafMole.java
+++ b/Mage.Sets/src/mage/cards/g/GrafMole.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class GrafMole extends CardImpl {
+public final class GrafMole extends CardImpl {
public GrafMole(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrafRats.java b/Mage.Sets/src/mage/cards/g/GrafRats.java
index 4792cc5fd7a..39a75ca07b3 100644
--- a/Mage.Sets/src/mage/cards/g/GrafRats.java
+++ b/Mage.Sets/src/mage/cards/g/GrafRats.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author emerald000
*/
-public class GrafRats extends CardImpl {
+public final class GrafRats extends CardImpl {
public GrafRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrafdiggersCage.java b/Mage.Sets/src/mage/cards/g/GrafdiggersCage.java
index f53ec08f7e4..b61bc6e718b 100644
--- a/Mage.Sets/src/mage/cards/g/GrafdiggersCage.java
+++ b/Mage.Sets/src/mage/cards/g/GrafdiggersCage.java
@@ -47,7 +47,7 @@ import mage.game.events.ZoneChangeEvent;
*
* @author BetaSteward
*/
-public class GrafdiggersCage extends CardImpl {
+public final class GrafdiggersCage extends CardImpl {
public GrafdiggersCage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/g/GraftedExoskeleton.java b/Mage.Sets/src/mage/cards/g/GraftedExoskeleton.java
index 9f505348c77..9bfefe37578 100644
--- a/Mage.Sets/src/mage/cards/g/GraftedExoskeleton.java
+++ b/Mage.Sets/src/mage/cards/g/GraftedExoskeleton.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author nantuko
*/
-public class GraftedExoskeleton extends CardImpl {
+public final class GraftedExoskeleton extends CardImpl {
public GraftedExoskeleton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GraftedSkullcap.java b/Mage.Sets/src/mage/cards/g/GraftedSkullcap.java
index b95dde453db..4144f8b177b 100644
--- a/Mage.Sets/src/mage/cards/g/GraftedSkullcap.java
+++ b/Mage.Sets/src/mage/cards/g/GraftedSkullcap.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
* @author LoneFox
*/
-public class GraftedSkullcap extends CardImpl {
+public final class GraftedSkullcap extends CardImpl {
public GraftedSkullcap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GraftedWargear.java b/Mage.Sets/src/mage/cards/g/GraftedWargear.java
index ed24eb5a89b..7782fcd5c67 100644
--- a/Mage.Sets/src/mage/cards/g/GraftedWargear.java
+++ b/Mage.Sets/src/mage/cards/g/GraftedWargear.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GraftedWargear extends CardImpl {
+public final class GraftedWargear extends CardImpl {
public GraftedWargear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GrandAbolisher.java b/Mage.Sets/src/mage/cards/g/GrandAbolisher.java
index 2eec9adc1a5..9deb452e982 100644
--- a/Mage.Sets/src/mage/cards/g/GrandAbolisher.java
+++ b/Mage.Sets/src/mage/cards/g/GrandAbolisher.java
@@ -48,7 +48,7 @@ import mage.players.Player;
/**
* @author nantuko
*/
-public class GrandAbolisher extends CardImpl {
+public final class GrandAbolisher extends CardImpl {
public GrandAbolisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GrandArbiterAugustinIV.java b/Mage.Sets/src/mage/cards/g/GrandArbiterAugustinIV.java
index cb9efb4234d..4a0d889f7b7 100644
--- a/Mage.Sets/src/mage/cards/g/GrandArbiterAugustinIV.java
+++ b/Mage.Sets/src/mage/cards/g/GrandArbiterAugustinIV.java
@@ -47,7 +47,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class GrandArbiterAugustinIV extends CardImpl {
+public final class GrandArbiterAugustinIV extends CardImpl {
private static final FilterCard filterWhite = new FilterCard("White spells");
private static final FilterCard filterBlue = new FilterCard("Blue spells");
diff --git a/Mage.Sets/src/mage/cards/g/GrandArchitect.java b/Mage.Sets/src/mage/cards/g/GrandArchitect.java
index b1fcbad133f..39ac9b30967 100644
--- a/Mage.Sets/src/mage/cards/g/GrandArchitect.java
+++ b/Mage.Sets/src/mage/cards/g/GrandArchitect.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com, nantuko
*/
-public class GrandArchitect extends CardImpl {
+public final class GrandArchitect extends CardImpl {
private static final FilterCreaturePermanent boostFilter = new FilterCreaturePermanent("blue creatures");
private static final FilterCreaturePermanent targetFilter = new FilterCreaturePermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/g/GrandColiseum.java b/Mage.Sets/src/mage/cards/g/GrandColiseum.java
index ddf3878ba60..0241c3f346a 100644
--- a/Mage.Sets/src/mage/cards/g/GrandColiseum.java
+++ b/Mage.Sets/src/mage/cards/g/GrandColiseum.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author KholdFuzion
*/
-public class GrandColiseum extends CardImpl {
+public final class GrandColiseum extends CardImpl {
public GrandColiseum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GrandMelee.java b/Mage.Sets/src/mage/cards/g/GrandMelee.java
index b6cb8bff300..9003f38b6ec 100644
--- a/Mage.Sets/src/mage/cards/g/GrandMelee.java
+++ b/Mage.Sets/src/mage/cards/g/GrandMelee.java
@@ -43,7 +43,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author fenhl
*/
-public class GrandMelee extends CardImpl {
+public final class GrandMelee extends CardImpl {
public GrandMelee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GrandMoffTarkin.java b/Mage.Sets/src/mage/cards/g/GrandMoffTarkin.java
index 2dc8e873ccb..d1adaa7eb5e 100644
--- a/Mage.Sets/src/mage/cards/g/GrandMoffTarkin.java
+++ b/Mage.Sets/src/mage/cards/g/GrandMoffTarkin.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author Styxo/spjspj
*/
-public class GrandMoffTarkin extends CardImpl {
+public final class GrandMoffTarkin extends CardImpl {
public GrandMoffTarkin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrandWarlordRadha.java b/Mage.Sets/src/mage/cards/g/GrandWarlordRadha.java
index 1a93af41874..29a4ecc0b59 100644
--- a/Mage.Sets/src/mage/cards/g/GrandWarlordRadha.java
+++ b/Mage.Sets/src/mage/cards/g/GrandWarlordRadha.java
@@ -58,7 +58,7 @@ import mage.watchers.Watcher;
*
* @author TheElk801
*/
-public class GrandWarlordRadha extends CardImpl {
+public final class GrandWarlordRadha extends CardImpl {
public GrandWarlordRadha(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrandmotherSengir.java b/Mage.Sets/src/mage/cards/g/GrandmotherSengir.java
index f16364cd88d..5174dca4487 100644
--- a/Mage.Sets/src/mage/cards/g/GrandmotherSengir.java
+++ b/Mage.Sets/src/mage/cards/g/GrandmotherSengir.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author hanasu
*/
-public class GrandmotherSengir extends CardImpl {
+public final class GrandmotherSengir extends CardImpl {
public GrandmotherSengir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrangerGuildmage.java b/Mage.Sets/src/mage/cards/g/GrangerGuildmage.java
index cb958893bbe..c17f243c466 100644
--- a/Mage.Sets/src/mage/cards/g/GrangerGuildmage.java
+++ b/Mage.Sets/src/mage/cards/g/GrangerGuildmage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GrangerGuildmage extends CardImpl {
+public final class GrangerGuildmage extends CardImpl {
public GrangerGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GraniteGargoyle.java b/Mage.Sets/src/mage/cards/g/GraniteGargoyle.java
index fe6f118a169..2501b2299c0 100644
--- a/Mage.Sets/src/mage/cards/g/GraniteGargoyle.java
+++ b/Mage.Sets/src/mage/cards/g/GraniteGargoyle.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class GraniteGargoyle extends CardImpl {
+public final class GraniteGargoyle extends CardImpl {
public GraniteGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GraniteGrip.java b/Mage.Sets/src/mage/cards/g/GraniteGrip.java
index d834234b9a0..2c1aca5ff5a 100644
--- a/Mage.Sets/src/mage/cards/g/GraniteGrip.java
+++ b/Mage.Sets/src/mage/cards/g/GraniteGrip.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class GraniteGrip extends CardImpl {
+public final class GraniteGrip extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain you control");
diff --git a/Mage.Sets/src/mage/cards/g/GraniteShard.java b/Mage.Sets/src/mage/cards/g/GraniteShard.java
index e304e2eb0f2..77d3e8de7d2 100644
--- a/Mage.Sets/src/mage/cards/g/GraniteShard.java
+++ b/Mage.Sets/src/mage/cards/g/GraniteShard.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class GraniteShard extends CardImpl {
+public final class GraniteShard extends CardImpl {
public GraniteShard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GraniticTitan.java b/Mage.Sets/src/mage/cards/g/GraniticTitan.java
index 22fd617fe8d..5bfcebdcfda 100644
--- a/Mage.Sets/src/mage/cards/g/GraniticTitan.java
+++ b/Mage.Sets/src/mage/cards/g/GraniticTitan.java
@@ -10,7 +10,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-public class GraniticTitan extends CardImpl {
+public final class GraniticTitan extends CardImpl {
public GraniticTitan(UUID ownerId, CardSetInfo cardSetInfo){
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/Granulate.java b/Mage.Sets/src/mage/cards/g/Granulate.java
index 3d1ff6abbeb..5f2ab59bf31 100644
--- a/Mage.Sets/src/mage/cards/g/Granulate.java
+++ b/Mage.Sets/src/mage/cards/g/Granulate.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
*
* @author Plopman
*/
-public class Granulate extends CardImpl {
+public final class Granulate extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland artifact with converted mana cost 4 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/g/Grapeshot.java b/Mage.Sets/src/mage/cards/g/Grapeshot.java
index ab3104e4326..8db76ab8027 100644
--- a/Mage.Sets/src/mage/cards/g/Grapeshot.java
+++ b/Mage.Sets/src/mage/cards/g/Grapeshot.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class Grapeshot extends CardImpl {
+public final class Grapeshot extends CardImpl {
public Grapeshot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GrapeshotCatapult.java b/Mage.Sets/src/mage/cards/g/GrapeshotCatapult.java
index e3a70e97499..4be63f56396 100644
--- a/Mage.Sets/src/mage/cards/g/GrapeshotCatapult.java
+++ b/Mage.Sets/src/mage/cards/g/GrapeshotCatapult.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class GrapeshotCatapult extends CardImpl {
+public final class GrapeshotCatapult extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/g/GrappleWithThePast.java b/Mage.Sets/src/mage/cards/g/GrappleWithThePast.java
index ba5fa7a1e35..c35ca2cf61e 100644
--- a/Mage.Sets/src/mage/cards/g/GrappleWithThePast.java
+++ b/Mage.Sets/src/mage/cards/g/GrappleWithThePast.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class GrappleWithThePast extends CardImpl {
+public final class GrappleWithThePast extends CardImpl {
public GrappleWithThePast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrapplerSpider.java b/Mage.Sets/src/mage/cards/g/GrapplerSpider.java
index c5888ffb732..a841d8d9cc3 100644
--- a/Mage.Sets/src/mage/cards/g/GrapplerSpider.java
+++ b/Mage.Sets/src/mage/cards/g/GrapplerSpider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GrapplerSpider extends CardImpl {
+public final class GrapplerSpider extends CardImpl {
public GrapplerSpider (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrapplingHook.java b/Mage.Sets/src/mage/cards/g/GrapplingHook.java
index 54065b22996..cdf0035f70e 100644
--- a/Mage.Sets/src/mage/cards/g/GrapplingHook.java
+++ b/Mage.Sets/src/mage/cards/g/GrapplingHook.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GrapplingHook extends CardImpl {
+public final class GrapplingHook extends CardImpl {
public GrapplingHook(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GraspOfDarkness.java b/Mage.Sets/src/mage/cards/g/GraspOfDarkness.java
index c7096c1750e..044a615a28a 100644
--- a/Mage.Sets/src/mage/cards/g/GraspOfDarkness.java
+++ b/Mage.Sets/src/mage/cards/g/GraspOfDarkness.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class GraspOfDarkness extends CardImpl {
+public final class GraspOfDarkness extends CardImpl {
public GraspOfDarkness (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GraspOfFate.java b/Mage.Sets/src/mage/cards/g/GraspOfFate.java
index b2bf8c94ba9..c41bf0d7d14 100644
--- a/Mage.Sets/src/mage/cards/g/GraspOfFate.java
+++ b/Mage.Sets/src/mage/cards/g/GraspOfFate.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class GraspOfFate extends CardImpl {
+public final class GraspOfFate extends CardImpl {
public GraspOfFate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GraspOfPhantoms.java b/Mage.Sets/src/mage/cards/g/GraspOfPhantoms.java
index 122f86db9d8..ae6b13cd055 100644
--- a/Mage.Sets/src/mage/cards/g/GraspOfPhantoms.java
+++ b/Mage.Sets/src/mage/cards/g/GraspOfPhantoms.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class GraspOfPhantoms extends CardImpl {
+public final class GraspOfPhantoms extends CardImpl {
public GraspOfPhantoms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GraspOfTheHieromancer.java b/Mage.Sets/src/mage/cards/g/GraspOfTheHieromancer.java
index cab1e73f0f7..3ab2db5e574 100644
--- a/Mage.Sets/src/mage/cards/g/GraspOfTheHieromancer.java
+++ b/Mage.Sets/src/mage/cards/g/GraspOfTheHieromancer.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GraspOfTheHieromancer extends CardImpl {
+public final class GraspOfTheHieromancer extends CardImpl {
public GraspOfTheHieromancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GraspingCurrent.java b/Mage.Sets/src/mage/cards/g/GraspingCurrent.java
index cbc5d71444d..ce91795820a 100644
--- a/Mage.Sets/src/mage/cards/g/GraspingCurrent.java
+++ b/Mage.Sets/src/mage/cards/g/GraspingCurrent.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class GraspingCurrent extends CardImpl {
+public final class GraspingCurrent extends CardImpl {
private final static FilterCard filter = new FilterCard("Jace, Ingenious Mind-Mage");
diff --git a/Mage.Sets/src/mage/cards/g/GraspingDunes.java b/Mage.Sets/src/mage/cards/g/GraspingDunes.java
index a046aaaba06..e505b6ba11d 100644
--- a/Mage.Sets/src/mage/cards/g/GraspingDunes.java
+++ b/Mage.Sets/src/mage/cards/g/GraspingDunes.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class GraspingDunes extends CardImpl {
+public final class GraspingDunes extends CardImpl {
public GraspingDunes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/g/GraspingScoundrel.java b/Mage.Sets/src/mage/cards/g/GraspingScoundrel.java
index ee4727d144c..eef28519bf0 100644
--- a/Mage.Sets/src/mage/cards/g/GraspingScoundrel.java
+++ b/Mage.Sets/src/mage/cards/g/GraspingScoundrel.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Will
*/
-public class GraspingScoundrel extends CardImpl{
+public final class GraspingScoundrel extends CardImpl{
public GraspingScoundrel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrasslandCrusader.java b/Mage.Sets/src/mage/cards/g/GrasslandCrusader.java
index 39031d19de1..9abb06e1804 100644
--- a/Mage.Sets/src/mage/cards/g/GrasslandCrusader.java
+++ b/Mage.Sets/src/mage/cards/g/GrasslandCrusader.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class GrasslandCrusader extends CardImpl {
+public final class GrasslandCrusader extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf or Soldier creature");
diff --git a/Mage.Sets/src/mage/cards/g/Grasslands.java b/Mage.Sets/src/mage/cards/g/Grasslands.java
index c89f3fb3fe5..4718369f5db 100644
--- a/Mage.Sets/src/mage/cards/g/Grasslands.java
+++ b/Mage.Sets/src/mage/cards/g/Grasslands.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author LevelX2
*/
-public class Grasslands extends CardImpl {
+public final class Grasslands extends CardImpl {
public Grasslands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/g/GratuitousViolence.java b/Mage.Sets/src/mage/cards/g/GratuitousViolence.java
index ed40dbba8a9..a3149fa636c 100644
--- a/Mage.Sets/src/mage/cards/g/GratuitousViolence.java
+++ b/Mage.Sets/src/mage/cards/g/GratuitousViolence.java
@@ -46,7 +46,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class GratuitousViolence extends CardImpl {
+public final class GratuitousViolence extends CardImpl {
public GratuitousViolence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GraveBetrayal.java b/Mage.Sets/src/mage/cards/g/GraveBetrayal.java
index 2f443d8ce86..244acb8b08e 100644
--- a/Mage.Sets/src/mage/cards/g/GraveBetrayal.java
+++ b/Mage.Sets/src/mage/cards/g/GraveBetrayal.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class GraveBetrayal extends CardImpl {
+public final class GraveBetrayal extends CardImpl {
public GraveBetrayal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GraveBirthing.java b/Mage.Sets/src/mage/cards/g/GraveBirthing.java
index 2885323741c..b0394088b34 100644
--- a/Mage.Sets/src/mage/cards/g/GraveBirthing.java
+++ b/Mage.Sets/src/mage/cards/g/GraveBirthing.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class GraveBirthing extends CardImpl {
+public final class GraveBirthing extends CardImpl {
public GraveBirthing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GraveBramble.java b/Mage.Sets/src/mage/cards/g/GraveBramble.java
index 93d54e96211..e7b96fd8633 100644
--- a/Mage.Sets/src/mage/cards/g/GraveBramble.java
+++ b/Mage.Sets/src/mage/cards/g/GraveBramble.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class GraveBramble extends CardImpl {
+public final class GraveBramble extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("Zombies");
diff --git a/Mage.Sets/src/mage/cards/g/GraveDefiler.java b/Mage.Sets/src/mage/cards/g/GraveDefiler.java
index 2df5dba5ddd..0a095acfbc1 100644
--- a/Mage.Sets/src/mage/cards/g/GraveDefiler.java
+++ b/Mage.Sets/src/mage/cards/g/GraveDefiler.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class GraveDefiler extends CardImpl {
+public final class GraveDefiler extends CardImpl {
private static final FilterCard filter = new FilterCard("Zombie cards");
diff --git a/Mage.Sets/src/mage/cards/g/GraveExchange.java b/Mage.Sets/src/mage/cards/g/GraveExchange.java
index 2b3f23f780e..e119935a443 100644
--- a/Mage.Sets/src/mage/cards/g/GraveExchange.java
+++ b/Mage.Sets/src/mage/cards/g/GraveExchange.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class GraveExchange extends CardImpl {
+public final class GraveExchange extends CardImpl {
public GraveExchange(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GravePact.java b/Mage.Sets/src/mage/cards/g/GravePact.java
index 044f75d37bd..dc5567af8f3 100644
--- a/Mage.Sets/src/mage/cards/g/GravePact.java
+++ b/Mage.Sets/src/mage/cards/g/GravePact.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class GravePact extends CardImpl {
+public final class GravePact extends CardImpl {
public GravePact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GravePeril.java b/Mage.Sets/src/mage/cards/g/GravePeril.java
index d0edc88b67d..8d57969286d 100644
--- a/Mage.Sets/src/mage/cards/g/GravePeril.java
+++ b/Mage.Sets/src/mage/cards/g/GravePeril.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class GravePeril extends CardImpl {
+public final class GravePeril extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a nonblack creature");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GraveRobbers.java b/Mage.Sets/src/mage/cards/g/GraveRobbers.java
index 3178cd6e033..7ab1532475e 100644
--- a/Mage.Sets/src/mage/cards/g/GraveRobbers.java
+++ b/Mage.Sets/src/mage/cards/g/GraveRobbers.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class GraveRobbers extends CardImpl {
+public final class GraveRobbers extends CardImpl {
public GraveRobbers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GraveScrabbler.java b/Mage.Sets/src/mage/cards/g/GraveScrabbler.java
index f86199a122a..2174464a069 100644
--- a/Mage.Sets/src/mage/cards/g/GraveScrabbler.java
+++ b/Mage.Sets/src/mage/cards/g/GraveScrabbler.java
@@ -16,7 +16,7 @@ import mage.constants.SubType;
import mage.filter.common.FilterCreatureCard;
import mage.target.common.TargetCardInGraveyard;
-public class GraveScrabbler extends CardImpl {
+public final class GraveScrabbler extends CardImpl {
public GraveScrabbler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GraveServitude.java b/Mage.Sets/src/mage/cards/g/GraveServitude.java
index 604c6a04391..0ad16c3ea6b 100644
--- a/Mage.Sets/src/mage/cards/g/GraveServitude.java
+++ b/Mage.Sets/src/mage/cards/g/GraveServitude.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class GraveServitude extends CardImpl {
+public final class GraveServitude extends CardImpl {
public GraveServitude(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GraveShellScarab.java b/Mage.Sets/src/mage/cards/g/GraveShellScarab.java
index ff944163471..4c46f779b31 100644
--- a/Mage.Sets/src/mage/cards/g/GraveShellScarab.java
+++ b/Mage.Sets/src/mage/cards/g/GraveShellScarab.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author jonubuu
*/
-public class GraveShellScarab extends CardImpl {
+public final class GraveShellScarab extends CardImpl {
public GraveShellScarab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GraveSifter.java b/Mage.Sets/src/mage/cards/g/GraveSifter.java
index a82a56f7f75..26381ee57fd 100644
--- a/Mage.Sets/src/mage/cards/g/GraveSifter.java
+++ b/Mage.Sets/src/mage/cards/g/GraveSifter.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class GraveSifter extends CardImpl {
+public final class GraveSifter extends CardImpl {
public GraveSifter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GraveStrength.java b/Mage.Sets/src/mage/cards/g/GraveStrength.java
index d8bfe97205d..e6d4acc850f 100644
--- a/Mage.Sets/src/mage/cards/g/GraveStrength.java
+++ b/Mage.Sets/src/mage/cards/g/GraveStrength.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GraveStrength extends CardImpl {
+public final class GraveStrength extends CardImpl {
public GraveStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GraveTitan.java b/Mage.Sets/src/mage/cards/g/GraveTitan.java
index 5595709b33a..51e9e0b4cd0 100644
--- a/Mage.Sets/src/mage/cards/g/GraveTitan.java
+++ b/Mage.Sets/src/mage/cards/g/GraveTitan.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GraveTitan extends CardImpl {
+public final class GraveTitan extends CardImpl {
public GraveTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GraveUpheaval.java b/Mage.Sets/src/mage/cards/g/GraveUpheaval.java
index 60ccfd47007..fca832d2990 100644
--- a/Mage.Sets/src/mage/cards/g/GraveUpheaval.java
+++ b/Mage.Sets/src/mage/cards/g/GraveUpheaval.java
@@ -43,6 +43,8 @@ import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
import mage.target.common.TargetCardInGraveyard;
import mage.target.targetpointer.FixedTarget;
@@ -50,12 +52,11 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class GraveUpheaval extends CardImpl {
+public final class GraveUpheaval extends CardImpl {
public GraveUpheaval(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{R}");
-
// Put target creature card from a graveyard onto the battlefield under your control. It gains haste.
this.getSpellAbility().addEffect(new GraveUpheavalEffect());
this.getSpellAbility().addTarget(new TargetCardInGraveyard());
@@ -92,12 +93,19 @@ class GraveUpheavalEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
Card card = game.getCard(source.getFirstTarget());
if (card != null) {
- card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId());
- ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
- effect.setTargetPointer(new FixedTarget(card.getId()));
- game.addEffect(effect, source);
+ controller.moveCards(card, Zone.BATTLEFIELD, source, game);
+ Permanent permanent = game.getPermanent(card.getId());
+ if (permanent != null) {
+ ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
+ effect.setTargetPointer(new FixedTarget(permanent, game));
+ game.addEffect(effect, source);
+ }
return true;
}
diff --git a/Mage.Sets/src/mage/cards/g/GravebaneZombie.java b/Mage.Sets/src/mage/cards/g/GravebaneZombie.java
index e75b37cace8..6234828d831 100644
--- a/Mage.Sets/src/mage/cards/g/GravebaneZombie.java
+++ b/Mage.Sets/src/mage/cards/g/GravebaneZombie.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author Quercitron
*/
-public class GravebaneZombie extends CardImpl {
+public final class GravebaneZombie extends CardImpl {
public GravebaneZombie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Gravebind.java b/Mage.Sets/src/mage/cards/g/Gravebind.java
index c1c77fc34bd..8bedcd30636 100644
--- a/Mage.Sets/src/mage/cards/g/Gravebind.java
+++ b/Mage.Sets/src/mage/cards/g/Gravebind.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Gravebind extends CardImpl {
+public final class Gravebind extends CardImpl {
public Gravebind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GravebladeMarauder.java b/Mage.Sets/src/mage/cards/g/GravebladeMarauder.java
index 00ac88abfa4..352047e557b 100644
--- a/Mage.Sets/src/mage/cards/g/GravebladeMarauder.java
+++ b/Mage.Sets/src/mage/cards/g/GravebladeMarauder.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class GravebladeMarauder extends CardImpl {
+public final class GravebladeMarauder extends CardImpl {
public GravebladeMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GravebornMuse.java b/Mage.Sets/src/mage/cards/g/GravebornMuse.java
index fe13ffc6751..490798b3bae 100644
--- a/Mage.Sets/src/mage/cards/g/GravebornMuse.java
+++ b/Mage.Sets/src/mage/cards/g/GravebornMuse.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class GravebornMuse extends CardImpl {
+public final class GravebornMuse extends CardImpl {
private static FilterControlledPermanent filter = new FilterControlledPermanent("Zombie you control");
static {
diff --git a/Mage.Sets/src/mage/cards/g/Gravecrawler.java b/Mage.Sets/src/mage/cards/g/Gravecrawler.java
index 3b5fb152d53..788b7ca2451 100644
--- a/Mage.Sets/src/mage/cards/g/Gravecrawler.java
+++ b/Mage.Sets/src/mage/cards/g/Gravecrawler.java
@@ -45,7 +45,7 @@ import mage.game.Game;
*
* @author BetaSteward
*/
-public class Gravecrawler extends CardImpl {
+public final class Gravecrawler extends CardImpl {
public Gravecrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Gravedigger.java b/Mage.Sets/src/mage/cards/g/Gravedigger.java
index 45b0e8a4db3..65f2bf1a916 100644
--- a/Mage.Sets/src/mage/cards/g/Gravedigger.java
+++ b/Mage.Sets/src/mage/cards/g/Gravedigger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Gravedigger extends CardImpl {
+public final class Gravedigger extends CardImpl {
public Gravedigger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Gravegouger.java b/Mage.Sets/src/mage/cards/g/Gravegouger.java
index 0f7864bc800..e88e7337612 100644
--- a/Mage.Sets/src/mage/cards/g/Gravegouger.java
+++ b/Mage.Sets/src/mage/cards/g/Gravegouger.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author LoneFox
*/
-public class Gravegouger extends CardImpl {
+public final class Gravegouger extends CardImpl {
public Gravegouger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GravelSlinger.java b/Mage.Sets/src/mage/cards/g/GravelSlinger.java
index 22f6fd8a625..4c6d0e1810b 100644
--- a/Mage.Sets/src/mage/cards/g/GravelSlinger.java
+++ b/Mage.Sets/src/mage/cards/g/GravelSlinger.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class GravelSlinger extends CardImpl {
+public final class GravelSlinger extends CardImpl {
public GravelSlinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GravelgillAxeshark.java b/Mage.Sets/src/mage/cards/g/GravelgillAxeshark.java
index 60e9d904768..94a709712f2 100644
--- a/Mage.Sets/src/mage/cards/g/GravelgillAxeshark.java
+++ b/Mage.Sets/src/mage/cards/g/GravelgillAxeshark.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GravelgillAxeshark extends CardImpl {
+public final class GravelgillAxeshark extends CardImpl {
public GravelgillAxeshark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/g/GravelgillDuo.java b/Mage.Sets/src/mage/cards/g/GravelgillDuo.java
index bb51e40bc51..f2f9beea670 100644
--- a/Mage.Sets/src/mage/cards/g/GravelgillDuo.java
+++ b/Mage.Sets/src/mage/cards/g/GravelgillDuo.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class GravelgillDuo extends CardImpl {
+public final class GravelgillDuo extends CardImpl {
private static final FilterSpell blueFilter = new FilterSpell("a blue spell");
private static final FilterSpell blackFilter = new FilterSpell("a black spell");
diff --git a/Mage.Sets/src/mage/cards/g/GravenAbomination.java b/Mage.Sets/src/mage/cards/g/GravenAbomination.java
index a4cf6bc27a4..c356a1023f5 100644
--- a/Mage.Sets/src/mage/cards/g/GravenAbomination.java
+++ b/Mage.Sets/src/mage/cards/g/GravenAbomination.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author jeffwadsworth
*/
-public class GravenAbomination extends CardImpl {
+public final class GravenAbomination extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/g/GravenCairns.java b/Mage.Sets/src/mage/cards/g/GravenCairns.java
index 12c45cba74b..9574169ebae 100644
--- a/Mage.Sets/src/mage/cards/g/GravenCairns.java
+++ b/Mage.Sets/src/mage/cards/g/GravenCairns.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class GravenCairns extends CardImpl {
+public final class GravenCairns extends CardImpl {
public GravenCairns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GravenDominator.java b/Mage.Sets/src/mage/cards/g/GravenDominator.java
index 6ecb7b99714..5cf8d6e14cd 100644
--- a/Mage.Sets/src/mage/cards/g/GravenDominator.java
+++ b/Mage.Sets/src/mage/cards/g/GravenDominator.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class GravenDominator extends CardImpl {
+public final class GravenDominator extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each other creature");
static {
diff --git a/Mage.Sets/src/mage/cards/g/Gravepurge.java b/Mage.Sets/src/mage/cards/g/Gravepurge.java
index 401571001be..67876c8e90f 100644
--- a/Mage.Sets/src/mage/cards/g/Gravepurge.java
+++ b/Mage.Sets/src/mage/cards/g/Gravepurge.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class Gravepurge extends CardImpl {
+public final class Gravepurge extends CardImpl {
public Gravepurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GraverobberSpider.java b/Mage.Sets/src/mage/cards/g/GraverobberSpider.java
index 4d72b260503..3ad7f89d117 100644
--- a/Mage.Sets/src/mage/cards/g/GraverobberSpider.java
+++ b/Mage.Sets/src/mage/cards/g/GraverobberSpider.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LevelX2
*/
-public class GraverobberSpider extends CardImpl {
+public final class GraverobberSpider extends CardImpl {
public GraverobberSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java b/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java
index a8c3d029d09..e05fd8d1859 100644
--- a/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java
+++ b/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class GravespawnSovereign extends CardImpl {
+public final class GravespawnSovereign extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Zombies you control");
diff --git a/Mage.Sets/src/mage/cards/g/Gravestorm.java b/Mage.Sets/src/mage/cards/g/Gravestorm.java
index 34975f9b4e4..bd5b3cff8cc 100644
--- a/Mage.Sets/src/mage/cards/g/Gravestorm.java
+++ b/Mage.Sets/src/mage/cards/g/Gravestorm.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class Gravestorm extends CardImpl {
+public final class Gravestorm extends CardImpl {
public Gravestorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GravetillerWurm.java b/Mage.Sets/src/mage/cards/g/GravetillerWurm.java
index 4de5743045f..1128023cd39 100644
--- a/Mage.Sets/src/mage/cards/g/GravetillerWurm.java
+++ b/Mage.Sets/src/mage/cards/g/GravetillerWurm.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class GravetillerWurm extends CardImpl {
+public final class GravetillerWurm extends CardImpl {
public GravetillerWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GraveyardShovel.java b/Mage.Sets/src/mage/cards/g/GraveyardShovel.java
index 7ca823d55d9..96b4a1cbaf7 100644
--- a/Mage.Sets/src/mage/cards/g/GraveyardShovel.java
+++ b/Mage.Sets/src/mage/cards/g/GraveyardShovel.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class GraveyardShovel extends CardImpl {
+public final class GraveyardShovel extends CardImpl {
public GraveyardShovel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/g/GravitationalShift.java b/Mage.Sets/src/mage/cards/g/GravitationalShift.java
index efc96ecaae8..75b0b2244bc 100644
--- a/Mage.Sets/src/mage/cards/g/GravitationalShift.java
+++ b/Mage.Sets/src/mage/cards/g/GravitationalShift.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author jeffwadsworth
*/
-public class GravitationalShift extends CardImpl {
+public final class GravitationalShift extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Creatures with flying");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/g/GravityNegator.java b/Mage.Sets/src/mage/cards/g/GravityNegator.java
index bcad645c712..4ef5e4ec3de 100644
--- a/Mage.Sets/src/mage/cards/g/GravityNegator.java
+++ b/Mage.Sets/src/mage/cards/g/GravityNegator.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GravityNegator extends CardImpl {
+public final class GravityNegator extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/g/GravitySphere.java b/Mage.Sets/src/mage/cards/g/GravitySphere.java
index 0854e66699b..52b0e32dce1 100644
--- a/Mage.Sets/src/mage/cards/g/GravitySphere.java
+++ b/Mage.Sets/src/mage/cards/g/GravitySphere.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class GravitySphere extends CardImpl {
+public final class GravitySphere extends CardImpl {
final static private FilterPermanent filter = new FilterPermanent("All creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GravityWell.java b/Mage.Sets/src/mage/cards/g/GravityWell.java
index cb2532a2f7d..867cb491e10 100644
--- a/Mage.Sets/src/mage/cards/g/GravityWell.java
+++ b/Mage.Sets/src/mage/cards/g/GravityWell.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class GravityWell extends CardImpl {
+public final class GravityWell extends CardImpl {
public GravityWell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrayMerchantOfAsphodel.java b/Mage.Sets/src/mage/cards/g/GrayMerchantOfAsphodel.java
index 52d3fd6852d..1b6c8fe8425 100644
--- a/Mage.Sets/src/mage/cards/g/GrayMerchantOfAsphodel.java
+++ b/Mage.Sets/src/mage/cards/g/GrayMerchantOfAsphodel.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class GrayMerchantOfAsphodel extends CardImpl {
+public final class GrayMerchantOfAsphodel extends CardImpl {
public GrayMerchantOfAsphodel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrayOgre.java b/Mage.Sets/src/mage/cards/g/GrayOgre.java
index 666df320679..f6671e02f7c 100644
--- a/Mage.Sets/src/mage/cards/g/GrayOgre.java
+++ b/Mage.Sets/src/mage/cards/g/GrayOgre.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GrayOgre extends CardImpl {
+public final class GrayOgre extends CardImpl {
public GrayOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GraypeltHunter.java b/Mage.Sets/src/mage/cards/g/GraypeltHunter.java
index efbc7fcaa9a..f0d6064cb33 100644
--- a/Mage.Sets/src/mage/cards/g/GraypeltHunter.java
+++ b/Mage.Sets/src/mage/cards/g/GraypeltHunter.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class GraypeltHunter extends CardImpl {
+public final class GraypeltHunter extends CardImpl {
public GraypeltHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GraypeltRefuge.java b/Mage.Sets/src/mage/cards/g/GraypeltRefuge.java
index f72b7d0c870..fe6517bb5f8 100644
--- a/Mage.Sets/src/mage/cards/g/GraypeltRefuge.java
+++ b/Mage.Sets/src/mage/cards/g/GraypeltRefuge.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class GraypeltRefuge extends CardImpl {
+public final class GraypeltRefuge extends CardImpl {
public GraypeltRefuge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GrayscaledGharial.java b/Mage.Sets/src/mage/cards/g/GrayscaledGharial.java
index 6ce01926714..1e641d3b748 100644
--- a/Mage.Sets/src/mage/cards/g/GrayscaledGharial.java
+++ b/Mage.Sets/src/mage/cards/g/GrayscaledGharial.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GrayscaledGharial extends CardImpl {
+public final class GrayscaledGharial extends CardImpl {
public GrayscaledGharial (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GrazingGladehart.java b/Mage.Sets/src/mage/cards/g/GrazingGladehart.java
index 3b12e2bbe80..8c593bb0bee 100644
--- a/Mage.Sets/src/mage/cards/g/GrazingGladehart.java
+++ b/Mage.Sets/src/mage/cards/g/GrazingGladehart.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GrazingGladehart extends CardImpl {
+public final class GrazingGladehart extends CardImpl {
public GrazingGladehart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrazingKelpie.java b/Mage.Sets/src/mage/cards/g/GrazingKelpie.java
index a143ff626b7..968b2aff433 100644
--- a/Mage.Sets/src/mage/cards/g/GrazingKelpie.java
+++ b/Mage.Sets/src/mage/cards/g/GrazingKelpie.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInGraveyard;
* @author jeffwadsworth
*/
-public class GrazingKelpie extends CardImpl {
+public final class GrazingKelpie extends CardImpl {
public GrazingKelpie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/g/GrazingWhiptail.java b/Mage.Sets/src/mage/cards/g/GrazingWhiptail.java
index acaf2265dd8..ae5ad8d8532 100644
--- a/Mage.Sets/src/mage/cards/g/GrazingWhiptail.java
+++ b/Mage.Sets/src/mage/cards/g/GrazingWhiptail.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class GrazingWhiptail extends CardImpl {
+public final class GrazingWhiptail extends CardImpl {
public GrazingWhiptail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GreatDefender.java b/Mage.Sets/src/mage/cards/g/GreatDefender.java
index 101c127b17d..c8d42ac31c3 100644
--- a/Mage.Sets/src/mage/cards/g/GreatDefender.java
+++ b/Mage.Sets/src/mage/cards/g/GreatDefender.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class GreatDefender extends CardImpl {
+public final class GreatDefender extends CardImpl {
public GreatDefender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GreatFurnace.java b/Mage.Sets/src/mage/cards/g/GreatFurnace.java
index 985f1150e28..93c3a4523a6 100644
--- a/Mage.Sets/src/mage/cards/g/GreatFurnace.java
+++ b/Mage.Sets/src/mage/cards/g/GreatFurnace.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class GreatFurnace extends CardImpl {
+public final class GreatFurnace extends CardImpl {
public GreatFurnace (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/g/GreatHart.java b/Mage.Sets/src/mage/cards/g/GreatHart.java
index bade0beb8ac..3620ffa0dc3 100644
--- a/Mage.Sets/src/mage/cards/g/GreatHart.java
+++ b/Mage.Sets/src/mage/cards/g/GreatHart.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GreatHart extends CardImpl {
+public final class GreatHart extends CardImpl {
public GreatHart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GreatHornKrushok.java b/Mage.Sets/src/mage/cards/g/GreatHornKrushok.java
index 925423aa8d5..a9ba8ba136c 100644
--- a/Mage.Sets/src/mage/cards/g/GreatHornKrushok.java
+++ b/Mage.Sets/src/mage/cards/g/GreatHornKrushok.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class GreatHornKrushok extends CardImpl {
+public final class GreatHornKrushok extends CardImpl {
public GreatHornKrushok(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GreatOakGuardian.java b/Mage.Sets/src/mage/cards/g/GreatOakGuardian.java
index 9446172a307..baebc0a3997 100644
--- a/Mage.Sets/src/mage/cards/g/GreatOakGuardian.java
+++ b/Mage.Sets/src/mage/cards/g/GreatOakGuardian.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class GreatOakGuardian extends CardImpl {
+public final class GreatOakGuardian extends CardImpl {
public GreatOakGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GreatSableStag.java b/Mage.Sets/src/mage/cards/g/GreatSableStag.java
index 9b8fe22828f..3830c902b9b 100644
--- a/Mage.Sets/src/mage/cards/g/GreatSableStag.java
+++ b/Mage.Sets/src/mage/cards/g/GreatSableStag.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GreatSableStag extends CardImpl {
+public final class GreatSableStag extends CardImpl {
public GreatSableStag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GreatTeachersDecree.java b/Mage.Sets/src/mage/cards/g/GreatTeachersDecree.java
index 286f1f4329b..d7290f5dfae 100644
--- a/Mage.Sets/src/mage/cards/g/GreatTeachersDecree.java
+++ b/Mage.Sets/src/mage/cards/g/GreatTeachersDecree.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class GreatTeachersDecree extends CardImpl {
+public final class GreatTeachersDecree extends CardImpl {
public GreatTeachersDecree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GreatWall.java b/Mage.Sets/src/mage/cards/g/GreatWall.java
index becca2448b8..c8f6649488c 100644
--- a/Mage.Sets/src/mage/cards/g/GreatWall.java
+++ b/Mage.Sets/src/mage/cards/g/GreatWall.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author L_J
*/
-public class GreatWall extends CardImpl {
+public final class GreatWall extends CardImpl {
public GreatWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GreatWhale.java b/Mage.Sets/src/mage/cards/g/GreatWhale.java
index 61ba5c826dc..9d530268b0f 100644
--- a/Mage.Sets/src/mage/cards/g/GreatWhale.java
+++ b/Mage.Sets/src/mage/cards/g/GreatWhale.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class GreatWhale extends CardImpl {
+public final class GreatWhale extends CardImpl {
public GreatWhale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GreatbowDoyen.java b/Mage.Sets/src/mage/cards/g/GreatbowDoyen.java
index 435c572c9f2..39dc0250a53 100644
--- a/Mage.Sets/src/mage/cards/g/GreatbowDoyen.java
+++ b/Mage.Sets/src/mage/cards/g/GreatbowDoyen.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class GreatbowDoyen extends CardImpl {
+public final class GreatbowDoyen extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Archer creatures you control");
diff --git a/Mage.Sets/src/mage/cards/g/GreaterAuramancy.java b/Mage.Sets/src/mage/cards/g/GreaterAuramancy.java
index 29d87233d1b..2adcbf2449b 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterAuramancy.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterAuramancy.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.EnchantedPredicate;
* @author jeffwadsworth
*/
-public class GreaterAuramancy extends CardImpl {
+public final class GreaterAuramancy extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("enchantments");
private static final FilterPermanent filter2 = new FilterPermanent("Enchanted creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GreaterBasilisk.java b/Mage.Sets/src/mage/cards/g/GreaterBasilisk.java
index 9de48155490..b605932f59c 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterBasilisk.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterBasilisk.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class GreaterBasilisk extends CardImpl {
+public final class GreaterBasilisk extends CardImpl {
public GreaterBasilisk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GreaterForgeling.java b/Mage.Sets/src/mage/cards/g/GreaterForgeling.java
index 9d1cf6378b2..a4a9c907561 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterForgeling.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterForgeling.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class GreaterForgeling extends CardImpl {
+public final class GreaterForgeling extends CardImpl {
public GreaterForgeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GreaterGargadon.java b/Mage.Sets/src/mage/cards/g/GreaterGargadon.java
index d7f6fd5b345..bccf0646031 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterGargadon.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterGargadon.java
@@ -51,12 +51,10 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class GreaterGargadon extends CardImpl {
+public final class GreaterGargadon extends CardImpl {
-
-
public GreaterGargadon(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{9}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{9}{R}");
this.subtype.add(SubType.BEAST);
this.power = new MageInt(9);
@@ -78,14 +76,14 @@ public class GreaterGargadon extends CardImpl {
}
}
-
class GreaterGargadonAbility extends ActivatedAbilityImpl {
-
+
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact, creature, or land");
+
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT), new CardTypePredicate(CardType.CREATURE), new CardTypePredicate(CardType.LAND)));
}
-
+
public GreaterGargadonAbility() {
super(Zone.EXILED, new RemoveCounterSourceEffect(CounterType.TIME.createInstance()), new SacrificeTargetCost(new TargetControlledPermanent(filter)));
}
@@ -100,16 +98,14 @@ class GreaterGargadonAbility extends ActivatedAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
Card card = game.getCard(this.getSourceId());
- if(super.canActivate(playerId, game) && card != null && card.getCounters(game).getCount(CounterType.TIME) > 0){
- return true;
+ if (card == null || card.getCounters(game).getCount(CounterType.TIME) == 0) {
+ return ActivationStatus.getFalse();
}
- return false;
+ return super.canActivate(playerId, game);
}
-
-
@Override
public String getRule() {
return super.getRule() + " Activate this ability only if Greater Gargadon is suspended.";
diff --git a/Mage.Sets/src/mage/cards/g/GreaterGood.java b/Mage.Sets/src/mage/cards/g/GreaterGood.java
index 71a0781d35c..537d16f7ef2 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterGood.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterGood.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class GreaterGood extends CardImpl {
+public final class GreaterGood extends CardImpl {
public GreaterGood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GreaterHarvester.java b/Mage.Sets/src/mage/cards/g/GreaterHarvester.java
index 929b56a5ef8..b6c14a22ef3 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterHarvester.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterHarvester.java
@@ -30,7 +30,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author wanderer120
*/
-public class GreaterHarvester extends CardImpl {
+public final class GreaterHarvester extends CardImpl {
static final FilterPermanent filter = new FilterPermanent("a permanent");
diff --git a/Mage.Sets/src/mage/cards/g/GreaterKraytDragon.java b/Mage.Sets/src/mage/cards/g/GreaterKraytDragon.java
index eeee4e0c3e0..e7e775dbd1d 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterKraytDragon.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterKraytDragon.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Styxo
*/
-public class GreaterKraytDragon extends CardImpl {
+public final class GreaterKraytDragon extends CardImpl {
public GreaterKraytDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GreaterMossdog.java b/Mage.Sets/src/mage/cards/g/GreaterMossdog.java
index cfd8ba56f7d..0ac611d7d0a 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterMossdog.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterMossdog.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class GreaterMossdog extends CardImpl {
+public final class GreaterMossdog extends CardImpl {
public GreaterMossdog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GreaterRealmOfPreservation.java b/Mage.Sets/src/mage/cards/g/GreaterRealmOfPreservation.java
index de7fa75b941..40d6bcf00c7 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterRealmOfPreservation.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterRealmOfPreservation.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author L_J
*/
-public class GreaterRealmOfPreservation extends CardImpl {
+public final class GreaterRealmOfPreservation extends CardImpl {
private static final FilterObject filter = new FilterObject("black or red source");
static{
diff --git a/Mage.Sets/src/mage/cards/g/GreaterSandwurm.java b/Mage.Sets/src/mage/cards/g/GreaterSandwurm.java
index 2c59da4235c..ff6a3a65da0 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterSandwurm.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterSandwurm.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author fireshoes
*/
-public class GreaterSandwurm extends CardImpl {
+public final class GreaterSandwurm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/g/GreaterStoneSpirit.java b/Mage.Sets/src/mage/cards/g/GreaterStoneSpirit.java
index a9a59aefb16..0bc813d131d 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterStoneSpirit.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterStoneSpirit.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GreaterStoneSpirit extends CardImpl {
+public final class GreaterStoneSpirit extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/g/GreaterWerewolf.java b/Mage.Sets/src/mage/cards/g/GreaterWerewolf.java
index 72268af829c..2e09b2e7b40 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterWerewolf.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterWerewolf.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class GreaterWerewolf extends CardImpl {
+public final class GreaterWerewolf extends CardImpl {
public GreaterWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Greatsword.java b/Mage.Sets/src/mage/cards/g/Greatsword.java
index 1041f7d2559..d799c053715 100644
--- a/Mage.Sets/src/mage/cards/g/Greatsword.java
+++ b/Mage.Sets/src/mage/cards/g/Greatsword.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class Greatsword extends CardImpl {
+public final class Greatsword extends CardImpl {
public Greatsword(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/g/Greed.java b/Mage.Sets/src/mage/cards/g/Greed.java
index 0ab68a136a5..ca6ffdbaba6 100644
--- a/Mage.Sets/src/mage/cards/g/Greed.java
+++ b/Mage.Sets/src/mage/cards/g/Greed.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class Greed extends CardImpl {
+public final class Greed extends CardImpl {
public Greed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Greedo.java b/Mage.Sets/src/mage/cards/g/Greedo.java
index a7d5c81e6fe..87057956ae3 100644
--- a/Mage.Sets/src/mage/cards/g/Greedo.java
+++ b/Mage.Sets/src/mage/cards/g/Greedo.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Styxo
*/
-public class Greedo extends CardImpl {
+public final class Greedo extends CardImpl {
private static final FilterCard filterCard = new FilterCard("Hunter or Rogue card");
diff --git a/Mage.Sets/src/mage/cards/g/GreelMindRaker.java b/Mage.Sets/src/mage/cards/g/GreelMindRaker.java
index 668f5f307de..6ff606f0038 100644
--- a/Mage.Sets/src/mage/cards/g/GreelMindRaker.java
+++ b/Mage.Sets/src/mage/cards/g/GreelMindRaker.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Styxo
*/
-public class GreelMindRaker extends CardImpl {
+public final class GreelMindRaker extends CardImpl {
public GreelMindRaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GreelsCaress.java b/Mage.Sets/src/mage/cards/g/GreelsCaress.java
index a9957886e89..b084228e71a 100644
--- a/Mage.Sets/src/mage/cards/g/GreelsCaress.java
+++ b/Mage.Sets/src/mage/cards/g/GreelsCaress.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class GreelsCaress extends CardImpl {
+public final class GreelsCaress extends CardImpl {
public GreelsCaress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GreenManaBattery.java b/Mage.Sets/src/mage/cards/g/GreenManaBattery.java
index 279b982e8bd..8bd811a811b 100644
--- a/Mage.Sets/src/mage/cards/g/GreenManaBattery.java
+++ b/Mage.Sets/src/mage/cards/g/GreenManaBattery.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class GreenManaBattery extends CardImpl {
+public final class GreenManaBattery extends CardImpl {
public GreenManaBattery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GreenScarab.java b/Mage.Sets/src/mage/cards/g/GreenScarab.java
index eec5731a310..02a7bfd5e4d 100644
--- a/Mage.Sets/src/mage/cards/g/GreenScarab.java
+++ b/Mage.Sets/src/mage/cards/g/GreenScarab.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Zeplar1_at_googlemail.com
*/
-public class GreenScarab extends CardImpl {
+public final class GreenScarab extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creatures");
private static final FilterPermanent filter2 = new FilterPermanent("green permanent");
diff --git a/Mage.Sets/src/mage/cards/g/GreenSunsZenith.java b/Mage.Sets/src/mage/cards/g/GreenSunsZenith.java
index 2c98d38df55..af620df8602 100644
--- a/Mage.Sets/src/mage/cards/g/GreenSunsZenith.java
+++ b/Mage.Sets/src/mage/cards/g/GreenSunsZenith.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author Loki
*/
-public class GreenSunsZenith extends CardImpl {
+public final class GreenSunsZenith extends CardImpl {
private static final FilterCard filter = new FilterCard("green creature");
diff --git a/Mage.Sets/src/mage/cards/g/GreenWard.java b/Mage.Sets/src/mage/cards/g/GreenWard.java
index e4707817184..33b18ced480 100644
--- a/Mage.Sets/src/mage/cards/g/GreenWard.java
+++ b/Mage.Sets/src/mage/cards/g/GreenWard.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class GreenWard extends CardImpl {
+public final class GreenWard extends CardImpl {
private static final FilterCard filter = new FilterCard("green");
diff --git a/Mage.Sets/src/mage/cards/g/GreenbeltRampager.java b/Mage.Sets/src/mage/cards/g/GreenbeltRampager.java
index e7f78f9695f..3e5fab37d0f 100644
--- a/Mage.Sets/src/mage/cards/g/GreenbeltRampager.java
+++ b/Mage.Sets/src/mage/cards/g/GreenbeltRampager.java
@@ -25,19 +25,19 @@
* 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.EntersBattlefieldTriggeredAbility;
+import mage.abilities.costs.common.PayEnergyCost;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.game.Game;
@@ -47,7 +47,7 @@ import mage.players.Player;
/**
* @author JRHerlehy
*/
-public class GreenbeltRampager extends CardImpl {
+public final class GreenbeltRampager extends CardImpl {
public GreenbeltRampager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
@@ -82,18 +82,18 @@ public class GreenbeltRampager extends CardImpl {
@Override
public boolean apply(Game game, Ability source) {
- Permanent card = game.getPermanent(source.getSourceId());
- Player player = game.getPlayer(source.getControllerId());
-
- if (card == null || player == null) return false;
-
- if (player.getCounters().getCount(CounterType.ENERGY) > 1) {
- player.getCounters().removeCounter(CounterType.ENERGY, 2);
- } else {
- card.moveToZone(Zone.HAND, source.getSourceId(), game, true);
- player.addCounters(CounterType.ENERGY.createInstance(), game);
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
}
+ if (!new PayEnergyCost(2).pay(source, game, source.getSourceId(), source.getControllerId(), true)) {
+ Permanent sourceObject = source.getSourcePermanentIfItStillExists(game);
+ if (sourceObject != null) {
+ controller.moveCards(sourceObject, Zone.HAND, source, game);
+ controller.addCounters(CounterType.ENERGY.createInstance(), game);
+ }
+ }
return true;
}
diff --git a/Mage.Sets/src/mage/cards/g/GreenerPastures.java b/Mage.Sets/src/mage/cards/g/GreenerPastures.java
index 2ae29036f2a..58eebd7ee8f 100644
--- a/Mage.Sets/src/mage/cards/g/GreenerPastures.java
+++ b/Mage.Sets/src/mage/cards/g/GreenerPastures.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class GreenerPastures extends CardImpl {
+public final class GreenerPastures extends CardImpl {
public GreenerPastures(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GreenhiltTrainee.java b/Mage.Sets/src/mage/cards/g/GreenhiltTrainee.java
index 541d8d887b8..b22ccf4c582 100644
--- a/Mage.Sets/src/mage/cards/g/GreenhiltTrainee.java
+++ b/Mage.Sets/src/mage/cards/g/GreenhiltTrainee.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class GreenhiltTrainee extends CardImpl {
+public final class GreenhiltTrainee extends CardImpl {
public GreenhiltTrainee (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Greenseeker.java b/Mage.Sets/src/mage/cards/g/Greenseeker.java
index 4b873b29bb3..f0b05c1c951 100644
--- a/Mage.Sets/src/mage/cards/g/Greenseeker.java
+++ b/Mage.Sets/src/mage/cards/g/Greenseeker.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class Greenseeker extends CardImpl {
+public final class Greenseeker extends CardImpl {
public Greenseeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
@@ -59,7 +59,7 @@ public class Greenseeker extends CardImpl {
// {G}, {tap}, Discard a card: Search your library for a basic land card, reveal it, and put it into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new ManaCostsImpl("{G}"));
ability.addCost(new TapSourceCost());
ability.addCost(new DiscardCardCost());
diff --git a/Mage.Sets/src/mage/cards/g/GreensideWatcher.java b/Mage.Sets/src/mage/cards/g/GreensideWatcher.java
index da021269317..a58c4fb3d1c 100644
--- a/Mage.Sets/src/mage/cards/g/GreensideWatcher.java
+++ b/Mage.Sets/src/mage/cards/g/GreensideWatcher.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class GreensideWatcher extends CardImpl {
+public final class GreensideWatcher extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Gate");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GreenwardenOfMurasa.java b/Mage.Sets/src/mage/cards/g/GreenwardenOfMurasa.java
index 217e769da79..f4f83f6cbd1 100644
--- a/Mage.Sets/src/mage/cards/g/GreenwardenOfMurasa.java
+++ b/Mage.Sets/src/mage/cards/g/GreenwardenOfMurasa.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class GreenwardenOfMurasa extends CardImpl {
+public final class GreenwardenOfMurasa extends CardImpl {
public GreenwardenOfMurasa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GreenweaverDruid.java b/Mage.Sets/src/mage/cards/g/GreenweaverDruid.java
index 169b1714632..8b26bb9d492 100644
--- a/Mage.Sets/src/mage/cards/g/GreenweaverDruid.java
+++ b/Mage.Sets/src/mage/cards/g/GreenweaverDruid.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class GreenweaverDruid extends CardImpl {
+public final class GreenweaverDruid extends CardImpl {
public GreenweaverDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java b/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java
index 6af6a496bc6..6fbe4cb6804 100644
--- a/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java
+++ b/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java
@@ -43,7 +43,7 @@ import mage.watchers.common.RevoltWatcher;
/**
* @author JRHerlehy
*/
-public class GreenwheelLiberator extends CardImpl {
+public final class GreenwheelLiberator extends CardImpl {
public GreenwheelLiberator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GremlinInfestation.java b/Mage.Sets/src/mage/cards/g/GremlinInfestation.java
index 9b1aa50b4aa..1d8674fbb23 100644
--- a/Mage.Sets/src/mage/cards/g/GremlinInfestation.java
+++ b/Mage.Sets/src/mage/cards/g/GremlinInfestation.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class GremlinInfestation extends CardImpl {
+public final class GremlinInfestation extends CardImpl {
public GremlinInfestation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GremlinMine.java b/Mage.Sets/src/mage/cards/g/GremlinMine.java
index 2857fad92e7..e7dfe008e7d 100644
--- a/Mage.Sets/src/mage/cards/g/GremlinMine.java
+++ b/Mage.Sets/src/mage/cards/g/GremlinMine.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author North
*/
-public class GremlinMine extends CardImpl {
+public final class GremlinMine extends CardImpl {
private static final FilterArtifactPermanent filterCreature = new FilterArtifactPermanent("artifact creature");
private static final FilterArtifactPermanent filterNonCreature = new FilterArtifactPermanent("noncreature artifact");
diff --git a/Mage.Sets/src/mage/cards/g/GrenzoDungeonWarden.java b/Mage.Sets/src/mage/cards/g/GrenzoDungeonWarden.java
index 18b16527eac..a64cab5a0a1 100644
--- a/Mage.Sets/src/mage/cards/g/GrenzoDungeonWarden.java
+++ b/Mage.Sets/src/mage/cards/g/GrenzoDungeonWarden.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class GrenzoDungeonWarden extends CardImpl {
+public final class GrenzoDungeonWarden extends CardImpl {
public GrenzoDungeonWarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GrenzoHavocRaiser.java b/Mage.Sets/src/mage/cards/g/GrenzoHavocRaiser.java
index ed3818b390a..7508445ef27 100644
--- a/Mage.Sets/src/mage/cards/g/GrenzoHavocRaiser.java
+++ b/Mage.Sets/src/mage/cards/g/GrenzoHavocRaiser.java
@@ -68,7 +68,7 @@ import mage.util.CardUtil;
*
* @author TheElk801, LevelX2
*/
-public class GrenzoHavocRaiser extends CardImpl {
+public final class GrenzoHavocRaiser extends CardImpl {
public GrenzoHavocRaiser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GrenzosCutthroat.java b/Mage.Sets/src/mage/cards/g/GrenzosCutthroat.java
index a28997cb2b6..66d0f01730c 100644
--- a/Mage.Sets/src/mage/cards/g/GrenzosCutthroat.java
+++ b/Mage.Sets/src/mage/cards/g/GrenzosCutthroat.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GrenzosCutthroat extends CardImpl {
+public final class GrenzosCutthroat extends CardImpl {
public GrenzosCutthroat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GrenzosRuffians.java b/Mage.Sets/src/mage/cards/g/GrenzosRuffians.java
index 05aeff22963..b70f42f3e7d 100644
--- a/Mage.Sets/src/mage/cards/g/GrenzosRuffians.java
+++ b/Mage.Sets/src/mage/cards/g/GrenzosRuffians.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class GrenzosRuffians extends CardImpl {
+public final class GrenzosRuffians extends CardImpl {
public GrenzosRuffians(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GridMonitor.java b/Mage.Sets/src/mage/cards/g/GridMonitor.java
index 3ddaf2e2ff7..4fa7136716b 100644
--- a/Mage.Sets/src/mage/cards/g/GridMonitor.java
+++ b/Mage.Sets/src/mage/cards/g/GridMonitor.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author fireshoes
*/
-public class GridMonitor extends CardImpl {
+public final class GridMonitor extends CardImpl {
public GridMonitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/Gridlock.java b/Mage.Sets/src/mage/cards/g/Gridlock.java
index d38007faeca..5b94175e70a 100644
--- a/Mage.Sets/src/mage/cards/g/Gridlock.java
+++ b/Mage.Sets/src/mage/cards/g/Gridlock.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class Gridlock extends CardImpl {
+public final class Gridlock extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanents");
public Gridlock(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/g/GriefTyrant.java b/Mage.Sets/src/mage/cards/g/GriefTyrant.java
index a85815bff45..de6cde49982 100644
--- a/Mage.Sets/src/mage/cards/g/GriefTyrant.java
+++ b/Mage.Sets/src/mage/cards/g/GriefTyrant.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class GriefTyrant extends CardImpl {
+public final class GriefTyrant extends CardImpl {
public GriefTyrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/g/GriffinCanyon.java b/Mage.Sets/src/mage/cards/g/GriffinCanyon.java
index 330c123319a..4b9ae572eb7 100644
--- a/Mage.Sets/src/mage/cards/g/GriffinCanyon.java
+++ b/Mage.Sets/src/mage/cards/g/GriffinCanyon.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author anonymous
*/
-public class GriffinCanyon extends CardImpl {
+public final class GriffinCanyon extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.GRIFFIN, "target Griffin");
diff --git a/Mage.Sets/src/mage/cards/g/GriffinDreamfinder.java b/Mage.Sets/src/mage/cards/g/GriffinDreamfinder.java
index cd65bc29ed1..72326c7f7be 100644
--- a/Mage.Sets/src/mage/cards/g/GriffinDreamfinder.java
+++ b/Mage.Sets/src/mage/cards/g/GriffinDreamfinder.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class GriffinDreamfinder extends CardImpl {
+public final class GriffinDreamfinder extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantment card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/g/GriffinGuide.java b/Mage.Sets/src/mage/cards/g/GriffinGuide.java
index ee322eefa95..c1f632ede81 100644
--- a/Mage.Sets/src/mage/cards/g/GriffinGuide.java
+++ b/Mage.Sets/src/mage/cards/g/GriffinGuide.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GriffinGuide extends CardImpl {
+public final class GriffinGuide extends CardImpl {
public GriffinGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GriffinProtector.java b/Mage.Sets/src/mage/cards/g/GriffinProtector.java
index 1e221190957..bd5007fe784 100644
--- a/Mage.Sets/src/mage/cards/g/GriffinProtector.java
+++ b/Mage.Sets/src/mage/cards/g/GriffinProtector.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class GriffinProtector extends CardImpl {
+public final class GriffinProtector extends CardImpl {
public GriffinProtector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GriffinRider.java b/Mage.Sets/src/mage/cards/g/GriffinRider.java
index e3a417e9814..ef9cb5b8125 100644
--- a/Mage.Sets/src/mage/cards/g/GriffinRider.java
+++ b/Mage.Sets/src/mage/cards/g/GriffinRider.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author nantuko
*/
-public class GriffinRider extends CardImpl {
+public final class GriffinRider extends CardImpl {
private static final String rule1 = "As long as you control a Griffin creature, {this} gets +3/+3.";
private static final String rule2 = "As long as you control a Griffin creature, {this} has flying.";
diff --git a/Mage.Sets/src/mage/cards/g/GriffinSentinel.java b/Mage.Sets/src/mage/cards/g/GriffinSentinel.java
index 88f0b4b0a43..4ad52a92362 100644
--- a/Mage.Sets/src/mage/cards/g/GriffinSentinel.java
+++ b/Mage.Sets/src/mage/cards/g/GriffinSentinel.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class GriffinSentinel extends CardImpl {
+public final class GriffinSentinel extends CardImpl {
public GriffinSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GriftersBlade.java b/Mage.Sets/src/mage/cards/g/GriftersBlade.java
index b9c867bb2ac..25ccfa4ecc0 100644
--- a/Mage.Sets/src/mage/cards/g/GriftersBlade.java
+++ b/Mage.Sets/src/mage/cards/g/GriftersBlade.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class GriftersBlade extends CardImpl {
+public final class GriftersBlade extends CardImpl {
public GriftersBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimAffliction.java b/Mage.Sets/src/mage/cards/g/GrimAffliction.java
index cb755d27f65..2caac3b4efe 100644
--- a/Mage.Sets/src/mage/cards/g/GrimAffliction.java
+++ b/Mage.Sets/src/mage/cards/g/GrimAffliction.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GrimAffliction extends CardImpl {
+public final class GrimAffliction extends CardImpl {
public GrimAffliction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimBackwoods.java b/Mage.Sets/src/mage/cards/g/GrimBackwoods.java
index b9e1a93c677..3bfdd411281 100644
--- a/Mage.Sets/src/mage/cards/g/GrimBackwoods.java
+++ b/Mage.Sets/src/mage/cards/g/GrimBackwoods.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class GrimBackwoods extends CardImpl {
+public final class GrimBackwoods extends CardImpl {
public GrimBackwoods(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/g/GrimCaptainsCall.java b/Mage.Sets/src/mage/cards/g/GrimCaptainsCall.java
index df3bb98dff8..afd3fa56f94 100644
--- a/Mage.Sets/src/mage/cards/g/GrimCaptainsCall.java
+++ b/Mage.Sets/src/mage/cards/g/GrimCaptainsCall.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class GrimCaptainsCall extends CardImpl {
+public final class GrimCaptainsCall extends CardImpl {
public GrimCaptainsCall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimContest.java b/Mage.Sets/src/mage/cards/g/GrimContest.java
index 65301ef86d9..fbd20c2c114 100644
--- a/Mage.Sets/src/mage/cards/g/GrimContest.java
+++ b/Mage.Sets/src/mage/cards/g/GrimContest.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class GrimContest extends CardImpl {
+public final class GrimContest extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/g/GrimDiscovery.java b/Mage.Sets/src/mage/cards/g/GrimDiscovery.java
index b1dd81ecdce..ea483b0030c 100644
--- a/Mage.Sets/src/mage/cards/g/GrimDiscovery.java
+++ b/Mage.Sets/src/mage/cards/g/GrimDiscovery.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class GrimDiscovery extends CardImpl {
+public final class GrimDiscovery extends CardImpl {
private static final FilterLandCard filterLandCard = new FilterLandCard("land card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/g/GrimFlayer.java b/Mage.Sets/src/mage/cards/g/GrimFlayer.java
index dca28bd5039..6725c9619d3 100644
--- a/Mage.Sets/src/mage/cards/g/GrimFlayer.java
+++ b/Mage.Sets/src/mage/cards/g/GrimFlayer.java
@@ -50,7 +50,7 @@ import mage.filter.FilterCard;
*
* @author fireshoes
*/
-public class GrimFlayer extends CardImpl {
+public final class GrimFlayer extends CardImpl {
public GrimFlayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimFlowering.java b/Mage.Sets/src/mage/cards/g/GrimFlowering.java
index 306e486d0c6..a6c1c9c5c18 100644
--- a/Mage.Sets/src/mage/cards/g/GrimFlowering.java
+++ b/Mage.Sets/src/mage/cards/g/GrimFlowering.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author North
*/
-public class GrimFlowering extends CardImpl {
+public final class GrimFlowering extends CardImpl {
public GrimFlowering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimGuardian.java b/Mage.Sets/src/mage/cards/g/GrimGuardian.java
index 36d78bb51de..f64f2f6f98b 100644
--- a/Mage.Sets/src/mage/cards/g/GrimGuardian.java
+++ b/Mage.Sets/src/mage/cards/g/GrimGuardian.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GrimGuardian extends CardImpl {
+public final class GrimGuardian extends CardImpl {
public GrimGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimHaruspex.java b/Mage.Sets/src/mage/cards/g/GrimHaruspex.java
index 3b00ad9100a..0a6d1eeb2e1 100644
--- a/Mage.Sets/src/mage/cards/g/GrimHaruspex.java
+++ b/Mage.Sets/src/mage/cards/g/GrimHaruspex.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author emerald000
*/
-public class GrimHaruspex extends CardImpl {
+public final class GrimHaruspex extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another nontoken creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GrimHarvest.java b/Mage.Sets/src/mage/cards/g/GrimHarvest.java
index 9a963c8983b..f1fe1e45801 100644
--- a/Mage.Sets/src/mage/cards/g/GrimHarvest.java
+++ b/Mage.Sets/src/mage/cards/g/GrimHarvest.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class GrimHarvest extends CardImpl {
+public final class GrimHarvest extends CardImpl {
public GrimHarvest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimLavamancer.java b/Mage.Sets/src/mage/cards/g/GrimLavamancer.java
index af141f25d01..d45497709d1 100644
--- a/Mage.Sets/src/mage/cards/g/GrimLavamancer.java
+++ b/Mage.Sets/src/mage/cards/g/GrimLavamancer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class GrimLavamancer extends CardImpl {
+public final class GrimLavamancer extends CardImpl {
public GrimLavamancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimMonolith.java b/Mage.Sets/src/mage/cards/g/GrimMonolith.java
index 75b058c830b..3263eece8af 100644
--- a/Mage.Sets/src/mage/cards/g/GrimMonolith.java
+++ b/Mage.Sets/src/mage/cards/g/GrimMonolith.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class GrimMonolith extends CardImpl {
+public final class GrimMonolith extends CardImpl {
public GrimMonolith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimPoppet.java b/Mage.Sets/src/mage/cards/g/GrimPoppet.java
index 9ea36ebc92f..f0b0d74df4f 100644
--- a/Mage.Sets/src/mage/cards/g/GrimPoppet.java
+++ b/Mage.Sets/src/mage/cards/g/GrimPoppet.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class GrimPoppet extends CardImpl {
+public final class GrimPoppet extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/g/GrimReminder.java b/Mage.Sets/src/mage/cards/g/GrimReminder.java
index af283688686..fa478fab621 100644
--- a/Mage.Sets/src/mage/cards/g/GrimReminder.java
+++ b/Mage.Sets/src/mage/cards/g/GrimReminder.java
@@ -60,7 +60,7 @@ import mage.watchers.Watcher;
*
* @author TheElk801
*/
-public class GrimReminder extends CardImpl {
+public final class GrimReminder extends CardImpl {
public GrimReminder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimReturn.java b/Mage.Sets/src/mage/cards/g/GrimReturn.java
index fa19eefe29c..ad7249ebf01 100644
--- a/Mage.Sets/src/mage/cards/g/GrimReturn.java
+++ b/Mage.Sets/src/mage/cards/g/GrimReturn.java
@@ -49,7 +49,7 @@ import mage.watchers.common.CardsPutIntoGraveyardWatcher;
*
* @author LevelX2
*/
-public class GrimReturn extends CardImpl {
+public final class GrimReturn extends CardImpl {
private static final String textFilter = "creature card in a graveyard that was put there from the battlefield this turn";
diff --git a/Mage.Sets/src/mage/cards/g/GrimRoustabout.java b/Mage.Sets/src/mage/cards/g/GrimRoustabout.java
index 17a2ff91dd6..6169ae611f0 100644
--- a/Mage.Sets/src/mage/cards/g/GrimRoustabout.java
+++ b/Mage.Sets/src/mage/cards/g/GrimRoustabout.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GrimRoustabout extends CardImpl {
+public final class GrimRoustabout extends CardImpl {
public GrimRoustabout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimStrider.java b/Mage.Sets/src/mage/cards/g/GrimStrider.java
index 68f10048e27..a30d04cf9b2 100644
--- a/Mage.Sets/src/mage/cards/g/GrimStrider.java
+++ b/Mage.Sets/src/mage/cards/g/GrimStrider.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Darkside-
*/
-public class GrimStrider extends CardImpl {
+public final class GrimStrider extends CardImpl {
public GrimStrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimTutor.java b/Mage.Sets/src/mage/cards/g/GrimTutor.java
index def87372790..9877637bd79 100644
--- a/Mage.Sets/src/mage/cards/g/GrimTutor.java
+++ b/Mage.Sets/src/mage/cards/g/GrimTutor.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class GrimTutor extends CardImpl {
+public final class GrimTutor extends CardImpl {
public GrimTutor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimclawBats.java b/Mage.Sets/src/mage/cards/g/GrimclawBats.java
index 49332c57bcf..e84b39aa11f 100644
--- a/Mage.Sets/src/mage/cards/g/GrimclawBats.java
+++ b/Mage.Sets/src/mage/cards/g/GrimclawBats.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class GrimclawBats extends CardImpl {
+public final class GrimclawBats extends CardImpl {
public GrimclawBats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimgrinCorpseBorn.java b/Mage.Sets/src/mage/cards/g/GrimgrinCorpseBorn.java
index d0b56be7d79..cfb4beafcf8 100644
--- a/Mage.Sets/src/mage/cards/g/GrimgrinCorpseBorn.java
+++ b/Mage.Sets/src/mage/cards/g/GrimgrinCorpseBorn.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GrimgrinCorpseBorn extends CardImpl {
+public final class GrimgrinCorpseBorn extends CardImpl {
public GrimgrinCorpseBorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimlockDinobotLeader.java b/Mage.Sets/src/mage/cards/g/GrimlockDinobotLeader.java
index 664360080e7..0a1adbb60b3 100644
--- a/Mage.Sets/src/mage/cards/g/GrimlockDinobotLeader.java
+++ b/Mage.Sets/src/mage/cards/g/GrimlockDinobotLeader.java
@@ -53,7 +53,7 @@ import mage.filter.predicate.permanent.TransformedPredicate;
*
* @author Saga
*/
-public class GrimlockDinobotLeader extends CardImpl{
+public final class GrimlockDinobotLeader extends CardImpl{
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dinosaurs and Vehicles");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GrimlockFerociousKing.java b/Mage.Sets/src/mage/cards/g/GrimlockFerociousKing.java
index 7b301c4f980..d9ebcc8c10e 100644
--- a/Mage.Sets/src/mage/cards/g/GrimlockFerociousKing.java
+++ b/Mage.Sets/src/mage/cards/g/GrimlockFerociousKing.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Saga
*/
-public class GrimlockFerociousKing extends CardImpl{
+public final class GrimlockFerociousKing extends CardImpl{
public GrimlockFerociousKing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/g/GrimoireOfTheDead.java b/Mage.Sets/src/mage/cards/g/GrimoireOfTheDead.java
index 625f2dbc6cd..532d2655fd3 100644
--- a/Mage.Sets/src/mage/cards/g/GrimoireOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/g/GrimoireOfTheDead.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInHand;
*
* @author BetaSteward
*/
-public class GrimoireOfTheDead extends CardImpl {
+public final class GrimoireOfTheDead extends CardImpl {
public GrimoireOfTheDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GrimoireThief.java b/Mage.Sets/src/mage/cards/g/GrimoireThief.java
index 47e0db88f08..a15b15b2d60 100644
--- a/Mage.Sets/src/mage/cards/g/GrimoireThief.java
+++ b/Mage.Sets/src/mage/cards/g/GrimoireThief.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class GrimoireThief extends CardImpl {
+public final class GrimoireThief extends CardImpl {
protected static final String VALUE_PREFIX = "ExileZones";
diff --git a/Mage.Sets/src/mage/cards/g/GrindDust.java b/Mage.Sets/src/mage/cards/g/GrindDust.java
index 0a58a7901c3..20477b75bc7 100644
--- a/Mage.Sets/src/mage/cards/g/GrindDust.java
+++ b/Mage.Sets/src/mage/cards/g/GrindDust.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GrindDust extends SplitCard {
+public final class GrindDust extends SplitCard {
public GrindDust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{1}{B}", "{3}{W}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/g/Grindclock.java b/Mage.Sets/src/mage/cards/g/Grindclock.java
index 05b1c6f1860..18d3928aa16 100644
--- a/Mage.Sets/src/mage/cards/g/Grindclock.java
+++ b/Mage.Sets/src/mage/cards/g/Grindclock.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class Grindclock extends CardImpl {
+public final class Grindclock extends CardImpl {
public Grindclock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/g/GrindingStation.java b/Mage.Sets/src/mage/cards/g/GrindingStation.java
index d28abc6b129..4c244417884 100644
--- a/Mage.Sets/src/mage/cards/g/GrindingStation.java
+++ b/Mage.Sets/src/mage/cards/g/GrindingStation.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class GrindingStation extends CardImpl {
+public final class GrindingStation extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
static {
diff --git a/Mage.Sets/src/mage/cards/g/Grindstone.java b/Mage.Sets/src/mage/cards/g/Grindstone.java
index accfc5ee856..0e749f9064a 100644
--- a/Mage.Sets/src/mage/cards/g/Grindstone.java
+++ b/Mage.Sets/src/mage/cards/g/Grindstone.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class Grindstone extends CardImpl {
+public final class Grindstone extends CardImpl {
public Grindstone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/g/GrinningDemon.java b/Mage.Sets/src/mage/cards/g/GrinningDemon.java
index ebf0cda68c5..02195a5cefa 100644
--- a/Mage.Sets/src/mage/cards/g/GrinningDemon.java
+++ b/Mage.Sets/src/mage/cards/g/GrinningDemon.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class GrinningDemon extends CardImpl {
+public final class GrinningDemon extends CardImpl {
public GrinningDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrinningIgnus.java b/Mage.Sets/src/mage/cards/g/GrinningIgnus.java
index 04d88432d5f..c5fed627ad9 100644
--- a/Mage.Sets/src/mage/cards/g/GrinningIgnus.java
+++ b/Mage.Sets/src/mage/cards/g/GrinningIgnus.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GrinningIgnus extends CardImpl {
+public final class GrinningIgnus extends CardImpl {
public GrinningIgnus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GrinningTotem.java b/Mage.Sets/src/mage/cards/g/GrinningTotem.java
index a9909d8916c..56ebc240366 100644
--- a/Mage.Sets/src/mage/cards/g/GrinningTotem.java
+++ b/Mage.Sets/src/mage/cards/g/GrinningTotem.java
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author Quercitron
*/
-public class GrinningTotem extends CardImpl {
+public final class GrinningTotem extends CardImpl {
public GrinningTotem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GripOfChaos.java b/Mage.Sets/src/mage/cards/g/GripOfChaos.java
index 545f620cbac..8673d52bf63 100644
--- a/Mage.Sets/src/mage/cards/g/GripOfChaos.java
+++ b/Mage.Sets/src/mage/cards/g/GripOfChaos.java
@@ -52,7 +52,7 @@ import mage.util.RandomUtil;
*
* @author emerald000
*/
-public class GripOfChaos extends CardImpl {
+public final class GripOfChaos extends CardImpl {
public GripOfChaos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GripOfDesolation.java b/Mage.Sets/src/mage/cards/g/GripOfDesolation.java
index 4c1855923de..eec301f486e 100644
--- a/Mage.Sets/src/mage/cards/g/GripOfDesolation.java
+++ b/Mage.Sets/src/mage/cards/g/GripOfDesolation.java
@@ -42,7 +42,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class GripOfDesolation extends CardImpl {
+public final class GripOfDesolation extends CardImpl {
public GripOfDesolation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GripOfPhyresis.java b/Mage.Sets/src/mage/cards/g/GripOfPhyresis.java
index 80a9988c619..31f548b0d56 100644
--- a/Mage.Sets/src/mage/cards/g/GripOfPhyresis.java
+++ b/Mage.Sets/src/mage/cards/g/GripOfPhyresis.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author spjspj
*/
-public class GripOfPhyresis extends CardImpl {
+public final class GripOfPhyresis extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Equipment");
diff --git a/Mage.Sets/src/mage/cards/g/GripOfTheRoil.java b/Mage.Sets/src/mage/cards/g/GripOfTheRoil.java
index c157d08016f..92f031edd85 100644
--- a/Mage.Sets/src/mage/cards/g/GripOfTheRoil.java
+++ b/Mage.Sets/src/mage/cards/g/GripOfTheRoil.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GripOfTheRoil extends CardImpl {
+public final class GripOfTheRoil extends CardImpl {
public GripOfTheRoil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/Griptide.java b/Mage.Sets/src/mage/cards/g/Griptide.java
index 1973003f31a..c6d278f8c71 100644
--- a/Mage.Sets/src/mage/cards/g/Griptide.java
+++ b/Mage.Sets/src/mage/cards/g/Griptide.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Griptide extends CardImpl {
+public final class Griptide extends CardImpl {
public Griptide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/Griselbrand.java b/Mage.Sets/src/mage/cards/g/Griselbrand.java
index a4adbd6a739..518eeb9c6fd 100644
--- a/Mage.Sets/src/mage/cards/g/Griselbrand.java
+++ b/Mage.Sets/src/mage/cards/g/Griselbrand.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Griselbrand extends CardImpl {
+public final class Griselbrand extends CardImpl {
public Griselbrand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrislyAnglerfish.java b/Mage.Sets/src/mage/cards/g/GrislyAnglerfish.java
index 9b4daf1d1de..f4d88c7a877 100644
--- a/Mage.Sets/src/mage/cards/g/GrislyAnglerfish.java
+++ b/Mage.Sets/src/mage/cards/g/GrislyAnglerfish.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class GrislyAnglerfish extends CardImpl {
+public final class GrislyAnglerfish extends CardImpl {
public GrislyAnglerfish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/g/GrislySalvage.java b/Mage.Sets/src/mage/cards/g/GrislySalvage.java
index 0fe3c540a54..cb6feb9ca9c 100644
--- a/Mage.Sets/src/mage/cards/g/GrislySalvage.java
+++ b/Mage.Sets/src/mage/cards/g/GrislySalvage.java
@@ -45,7 +45,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class GrislySalvage extends CardImpl {
+public final class GrislySalvage extends CardImpl {
public GrislySalvage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrislySpectacle.java b/Mage.Sets/src/mage/cards/g/GrislySpectacle.java
index fddca207aeb..3191def2495 100644
--- a/Mage.Sets/src/mage/cards/g/GrislySpectacle.java
+++ b/Mage.Sets/src/mage/cards/g/GrislySpectacle.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class GrislySpectacle extends CardImpl {
+public final class GrislySpectacle extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact creature");
diff --git a/Mage.Sets/src/mage/cards/g/GrislySurvivor.java b/Mage.Sets/src/mage/cards/g/GrislySurvivor.java
index 203f0f250a4..814f6154d37 100644
--- a/Mage.Sets/src/mage/cards/g/GrislySurvivor.java
+++ b/Mage.Sets/src/mage/cards/g/GrislySurvivor.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author ciaccona007
*/
-public class GrislySurvivor extends CardImpl {
+public final class GrislySurvivor extends CardImpl {
public GrislySurvivor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrislyTransformation.java b/Mage.Sets/src/mage/cards/g/GrislyTransformation.java
index 62d9ab52163..77a47cb84ab 100644
--- a/Mage.Sets/src/mage/cards/g/GrislyTransformation.java
+++ b/Mage.Sets/src/mage/cards/g/GrislyTransformation.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GrislyTransformation extends CardImpl {
+public final class GrislyTransformation extends CardImpl {
public GrislyTransformation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GristleGrinner.java b/Mage.Sets/src/mage/cards/g/GristleGrinner.java
index c7279357812..02e1b2d3c91 100644
--- a/Mage.Sets/src/mage/cards/g/GristleGrinner.java
+++ b/Mage.Sets/src/mage/cards/g/GristleGrinner.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class GristleGrinner extends CardImpl {
+public final class GristleGrinner extends CardImpl {
public GristleGrinner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Gristleback.java b/Mage.Sets/src/mage/cards/g/Gristleback.java
index c0a83dd7c35..eb8e02ba6d2 100644
--- a/Mage.Sets/src/mage/cards/g/Gristleback.java
+++ b/Mage.Sets/src/mage/cards/g/Gristleback.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class Gristleback extends CardImpl {
+public final class Gristleback extends CardImpl {
public Gristleback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrixisBattlemage.java b/Mage.Sets/src/mage/cards/g/GrixisBattlemage.java
index 7f8e7af34a4..3610348d8b8 100644
--- a/Mage.Sets/src/mage/cards/g/GrixisBattlemage.java
+++ b/Mage.Sets/src/mage/cards/g/GrixisBattlemage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class GrixisBattlemage extends CardImpl {
+public final class GrixisBattlemage extends CardImpl {
public GrixisBattlemage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrixisCharm.java b/Mage.Sets/src/mage/cards/g/GrixisCharm.java
index c3bf31f9bbc..b6ddec319a8 100644
--- a/Mage.Sets/src/mage/cards/g/GrixisCharm.java
+++ b/Mage.Sets/src/mage/cards/g/GrixisCharm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GrixisCharm extends CardImpl {
+public final class GrixisCharm extends CardImpl {
public GrixisCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GrixisGrimblade.java b/Mage.Sets/src/mage/cards/g/GrixisGrimblade.java
index 39e638c25b3..6ae598a1ea3 100644
--- a/Mage.Sets/src/mage/cards/g/GrixisGrimblade.java
+++ b/Mage.Sets/src/mage/cards/g/GrixisGrimblade.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author jeffwadsworth
*/
-public class GrixisGrimblade extends CardImpl {
+public final class GrixisGrimblade extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another multicolor permanent");
diff --git a/Mage.Sets/src/mage/cards/g/GrixisIllusionist.java b/Mage.Sets/src/mage/cards/g/GrixisIllusionist.java
index c3a3d63d61b..013cd86f889 100644
--- a/Mage.Sets/src/mage/cards/g/GrixisIllusionist.java
+++ b/Mage.Sets/src/mage/cards/g/GrixisIllusionist.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class GrixisIllusionist extends CardImpl {
+public final class GrixisIllusionist extends CardImpl {
public GrixisIllusionist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GrixisPanorama.java b/Mage.Sets/src/mage/cards/g/GrixisPanorama.java
index 66c00c61328..a7080ef57e4 100644
--- a/Mage.Sets/src/mage/cards/g/GrixisPanorama.java
+++ b/Mage.Sets/src/mage/cards/g/GrixisPanorama.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class GrixisPanorama extends CardImpl {
+public final class GrixisPanorama extends CardImpl {
private static final FilterCard filter = new FilterCard("a basic Island, Swamp, or Mountain card");
diff --git a/Mage.Sets/src/mage/cards/g/GrixisSlavedriver.java b/Mage.Sets/src/mage/cards/g/GrixisSlavedriver.java
index e7b93f7f175..a5eee6426ae 100644
--- a/Mage.Sets/src/mage/cards/g/GrixisSlavedriver.java
+++ b/Mage.Sets/src/mage/cards/g/GrixisSlavedriver.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.ZombieToken;
/**
* @author Loki
*/
-public class GrixisSlavedriver extends CardImpl {
+public final class GrixisSlavedriver extends CardImpl {
public GrixisSlavedriver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrixisSojourners.java b/Mage.Sets/src/mage/cards/g/GrixisSojourners.java
index 0afcc9b662a..7d80989ae63 100644
--- a/Mage.Sets/src/mage/cards/g/GrixisSojourners.java
+++ b/Mage.Sets/src/mage/cards/g/GrixisSojourners.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author jeffwadsworth
*/
-public class GrixisSojourners extends CardImpl {
+public final class GrixisSojourners extends CardImpl {
public GrixisSojourners(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GrizzledAngler.java b/Mage.Sets/src/mage/cards/g/GrizzledAngler.java
index 06d5cd047dd..8b77323908c 100644
--- a/Mage.Sets/src/mage/cards/g/GrizzledAngler.java
+++ b/Mage.Sets/src/mage/cards/g/GrizzledAngler.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class GrizzledAngler extends CardImpl {
+public final class GrizzledAngler extends CardImpl {
public GrizzledAngler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GrizzledLeotau.java b/Mage.Sets/src/mage/cards/g/GrizzledLeotau.java
index 8363a5da3e1..5c899b5cfb9 100644
--- a/Mage.Sets/src/mage/cards/g/GrizzledLeotau.java
+++ b/Mage.Sets/src/mage/cards/g/GrizzledLeotau.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GrizzledLeotau extends CardImpl {
+public final class GrizzledLeotau extends CardImpl {
public GrizzledLeotau(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GrizzledOutcasts.java b/Mage.Sets/src/mage/cards/g/GrizzledOutcasts.java
index 31631d9f2c9..4a88d65f2e1 100644
--- a/Mage.Sets/src/mage/cards/g/GrizzledOutcasts.java
+++ b/Mage.Sets/src/mage/cards/g/GrizzledOutcasts.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class GrizzledOutcasts extends CardImpl {
+public final class GrizzledOutcasts extends CardImpl {
public GrizzledOutcasts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrizzlyBears.java b/Mage.Sets/src/mage/cards/g/GrizzlyBears.java
index f01ea495de3..09f2936b2d7 100644
--- a/Mage.Sets/src/mage/cards/g/GrizzlyBears.java
+++ b/Mage.Sets/src/mage/cards/g/GrizzlyBears.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GrizzlyBears extends CardImpl {
+public final class GrizzlyBears extends CardImpl {
public GrizzlyBears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrizzlyFate.java b/Mage.Sets/src/mage/cards/g/GrizzlyFate.java
index bd54800e618..aa14eb6ccfb 100644
--- a/Mage.Sets/src/mage/cards/g/GrizzlyFate.java
+++ b/Mage.Sets/src/mage/cards/g/GrizzlyFate.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.BearToken;
*
* @author LevelX2
*/
-public class GrizzlyFate extends CardImpl {
+public final class GrizzlyFate extends CardImpl {
public GrizzlyFate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Groffskithur.java b/Mage.Sets/src/mage/cards/g/Groffskithur.java
index 00c3aaa9b8e..e9a550f4fd1 100644
--- a/Mage.Sets/src/mage/cards/g/Groffskithur.java
+++ b/Mage.Sets/src/mage/cards/g/Groffskithur.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class Groffskithur extends CardImpl {
+public final class Groffskithur extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Groffskithur from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/g/GrotagSiegeRunner.java b/Mage.Sets/src/mage/cards/g/GrotagSiegeRunner.java
index b637ff40232..069f02e07f3 100644
--- a/Mage.Sets/src/mage/cards/g/GrotagSiegeRunner.java
+++ b/Mage.Sets/src/mage/cards/g/GrotagSiegeRunner.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class GrotagSiegeRunner extends CardImpl {
+public final class GrotagSiegeRunner extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with defender");
diff --git a/Mage.Sets/src/mage/cards/g/GrotagThrasher.java b/Mage.Sets/src/mage/cards/g/GrotagThrasher.java
index a03ee7b8a15..7c727a71db3 100644
--- a/Mage.Sets/src/mage/cards/g/GrotagThrasher.java
+++ b/Mage.Sets/src/mage/cards/g/GrotagThrasher.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class GrotagThrasher extends CardImpl {
+public final class GrotagThrasher extends CardImpl {
public GrotagThrasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GrotesqueHybrid.java b/Mage.Sets/src/mage/cards/g/GrotesqueHybrid.java
index 74c916a226b..e4c5887e3e3 100644
--- a/Mage.Sets/src/mage/cards/g/GrotesqueHybrid.java
+++ b/Mage.Sets/src/mage/cards/g/GrotesqueHybrid.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class GrotesqueHybrid extends CardImpl {
+public final class GrotesqueHybrid extends CardImpl {
public GrotesqueHybrid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrotesqueMutation.java b/Mage.Sets/src/mage/cards/g/GrotesqueMutation.java
index 3e11cab2567..f96048925ae 100644
--- a/Mage.Sets/src/mage/cards/g/GrotesqueMutation.java
+++ b/Mage.Sets/src/mage/cards/g/GrotesqueMutation.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GrotesqueMutation extends CardImpl {
+public final class GrotesqueMutation extends CardImpl {
public GrotesqueMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GrothamaAllDevouring.java b/Mage.Sets/src/mage/cards/g/GrothamaAllDevouring.java
new file mode 100644
index 00000000000..48b1d6b74fe
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/g/GrothamaAllDevouring.java
@@ -0,0 +1,244 @@
+/*
+ * 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.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import mage.MageInt;
+import mage.MageObjectReference;
+import mage.abilities.Ability;
+import mage.abilities.common.AttacksTriggeredAbility;
+import mage.abilities.common.LeavesBattlefieldTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.WatcherScope;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.watchers.Watcher;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class GrothamaAllDevouring extends CardImpl {
+
+ public GrothamaAllDevouring(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.WURM);
+ this.power = new MageInt(10);
+ this.toughness = new MageInt(8);
+
+ // Other creatures have "Whenever this creature attacks, you may have it fight Grothama, All-Devouring."
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GrothamaAllDevouringGainAbilityEffect()));
+
+ // When Grothama leaves the battlefield, each player draws cards equal to the amount of damage dealt to Grothama this turn by sources they controlled.
+ this.addAbility(new LeavesBattlefieldTriggeredAbility(new GrothamaAllDevouringDrawCardsEffect(), false), new GrothamaAllDevouringWatcher());
+ }
+
+ public GrothamaAllDevouring(final GrothamaAllDevouring card) {
+ super(card);
+ }
+
+ @Override
+ public GrothamaAllDevouring copy() {
+ return new GrothamaAllDevouring(this);
+ }
+}
+
+class GrothamaAllDevouringGainAbilityEffect extends GainAbilityAllEffect {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
+
+ static {
+ filter.add(new AnotherPredicate());
+ }
+
+ GrothamaAllDevouringGainAbilityEffect() {
+ super(new AttacksTriggeredAbility(
+ new GrothamaAllDevouringFightEffect(null, null), true
+ ), Duration.WhileOnBattlefield, filter);
+ this.staticText = "Other creatures have \"Whenever this creature attacks, you may have it fight {this}.\"";
+ }
+
+ GrothamaAllDevouringGainAbilityEffect(final GrothamaAllDevouringGainAbilityEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public GrothamaAllDevouringGainAbilityEffect copy() {
+ return new GrothamaAllDevouringGainAbilityEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent permanent = game.getPermanent(source.getSourceId());
+ if (permanent == null) {
+ return false;
+ }
+ ability = new AttacksTriggeredAbility(new GrothamaAllDevouringFightEffect(permanent.getId(), permanent.getName()), true);
+ return super.apply(game, source);
+ }
+}
+
+class GrothamaAllDevouringFightEffect extends OneShotEffect {
+
+ private final UUID fightId;
+
+ GrothamaAllDevouringFightEffect(UUID fightId, String fightName) {
+ super(Outcome.Benefit);
+ this.fightId = fightId;
+ this.staticText = "you may have it fight " + fightName;
+ }
+
+ GrothamaAllDevouringFightEffect(final GrothamaAllDevouringFightEffect effect) {
+ super(effect);
+ this.fightId = effect.fightId;
+ }
+
+ @Override
+ public GrothamaAllDevouringFightEffect copy() {
+ return new GrothamaAllDevouringFightEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent grothama = game.getPermanent(fightId);
+ Permanent creature = game.getPermanent(source.getSourceId());
+ if (grothama == null || creature == null) {
+ return false;
+ }
+ return grothama.fight(creature, source, game);
+ }
+}
+
+class GrothamaAllDevouringDrawCardsEffect extends OneShotEffect {
+
+ GrothamaAllDevouringDrawCardsEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "each player draws cards equal to the amount of "
+ + "damage dealt to {this} this turn by sources they controlled.";
+ }
+
+ GrothamaAllDevouringDrawCardsEffect(final GrothamaAllDevouringDrawCardsEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public GrothamaAllDevouringDrawCardsEffect copy() {
+ return new GrothamaAllDevouringDrawCardsEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
+ GrothamaAllDevouringWatcher watcher = (GrothamaAllDevouringWatcher) game.getState().getWatchers().get(GrothamaAllDevouringWatcher.class.getSimpleName());
+ if (watcher == null) {
+ return false;
+ }
+ Map damageMap = watcher.getDamageMap(new MageObjectReference(source.getSourceId(), source.getSourceObjectZoneChangeCounter() - 1, game));
+ for (UUID playerId : game.getPlayerList()) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ int toDraw = damageMap.getOrDefault(player.getId(), 0);
+ if (toDraw > 0) {
+ player.drawCards(toDraw, game);
+ }
+ }
+ }
+ return true;
+ }
+}
+
+class GrothamaAllDevouringWatcher extends Watcher {
+
+ Map> damageMap = new HashMap<>();
+
+ GrothamaAllDevouringWatcher() {
+ super(GrothamaAllDevouringWatcher.class.getSimpleName(), WatcherScope.GAME);
+ }
+
+ GrothamaAllDevouringWatcher(final GrothamaAllDevouringWatcher watcher) {
+ super(watcher);
+ for (MageObjectReference mor : watcher.damageMap.keySet()) {
+ this.damageMap.putIfAbsent(mor, new HashMap<>());
+ for (UUID key : watcher.damageMap.get(mor).keySet()) {
+ this.damageMap.get(mor).putIfAbsent(key, 0);
+ this.damageMap.get(mor).compute(key, (k, damage) -> damage + watcher.damageMap.get(mor).get(key));
+ }
+ }
+ }
+
+ @Override
+ public GrothamaAllDevouringWatcher copy() {
+ return new GrothamaAllDevouringWatcher(this);
+ }
+
+ @Override
+ public void watch(GameEvent event, Game game) {
+ if (event.getType() != GameEvent.EventType.DAMAGED_CREATURE) {
+ return;
+ }
+ Permanent damaged = game.getPermanentOrLKIBattlefield(event.getTargetId());
+ if (damaged == null) {
+ return;
+ }
+ MageObjectReference mor = new MageObjectReference(damaged, game);
+ damageMap.putIfAbsent(mor, new HashMap<>());
+ damageMap.get(mor).putIfAbsent(event.getPlayerId(), 0);
+ damageMap.get(mor).compute(event.getPlayerId(), (k, damage) -> damage + event.getAmount());
+ }
+
+ @Override
+ public void reset() {
+ super.reset();
+ damageMap.clear();
+ }
+
+ public Map getDamageMap(MageObjectReference mor) {
+ return damageMap.getOrDefault(mor, new HashMap<>());
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/g/GroundAssault.java b/Mage.Sets/src/mage/cards/g/GroundAssault.java
index f679340485f..5f323703969 100644
--- a/Mage.Sets/src/mage/cards/g/GroundAssault.java
+++ b/Mage.Sets/src/mage/cards/g/GroundAssault.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GroundAssault extends CardImpl {
+public final class GroundAssault extends CardImpl {
public GroundAssault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GroundPounder.java b/Mage.Sets/src/mage/cards/g/GroundPounder.java
index 640ffcbee0f..577d7dcd40c 100644
--- a/Mage.Sets/src/mage/cards/g/GroundPounder.java
+++ b/Mage.Sets/src/mage/cards/g/GroundPounder.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class GroundPounder extends CardImpl {
+public final class GroundPounder extends CardImpl {
public GroundPounder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GroundRift.java b/Mage.Sets/src/mage/cards/g/GroundRift.java
index a87966d09a1..d92f40054cd 100644
--- a/Mage.Sets/src/mage/cards/g/GroundRift.java
+++ b/Mage.Sets/src/mage/cards/g/GroundRift.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class GroundRift extends CardImpl {
+public final class GroundRift extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/g/GroundSeal.java b/Mage.Sets/src/mage/cards/g/GroundSeal.java
index f3f5817665a..a7e52e91e33 100644
--- a/Mage.Sets/src/mage/cards/g/GroundSeal.java
+++ b/Mage.Sets/src/mage/cards/g/GroundSeal.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
/**
* @author jeffwadsworth
*/
-public class GroundSeal extends CardImpl {
+public final class GroundSeal extends CardImpl {
public GroundSeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Groundbreaker.java b/Mage.Sets/src/mage/cards/g/Groundbreaker.java
index 4c6870841ca..ffb05ef0bc4 100644
--- a/Mage.Sets/src/mage/cards/g/Groundbreaker.java
+++ b/Mage.Sets/src/mage/cards/g/Groundbreaker.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author Plopman
*/
-public class Groundbreaker extends CardImpl {
+public final class Groundbreaker extends CardImpl {
public Groundbreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Grounded.java b/Mage.Sets/src/mage/cards/g/Grounded.java
index d25db29cebe..06de1f90b22 100644
--- a/Mage.Sets/src/mage/cards/g/Grounded.java
+++ b/Mage.Sets/src/mage/cards/g/Grounded.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class Grounded extends CardImpl {
+public final class Grounded extends CardImpl {
public Grounded(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GroundlingPouncer.java b/Mage.Sets/src/mage/cards/g/GroundlingPouncer.java
index c03cd462e13..c5f448bc169 100644
--- a/Mage.Sets/src/mage/cards/g/GroundlingPouncer.java
+++ b/Mage.Sets/src/mage/cards/g/GroundlingPouncer.java
@@ -56,7 +56,7 @@ import mage.game.Game;
* @author jeffwadsworth
*
*/
-public class GroundlingPouncer extends CardImpl {
+public final class GroundlingPouncer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/g/GroundshakerSliver.java b/Mage.Sets/src/mage/cards/g/GroundshakerSliver.java
index b4e9d815615..f5012666099 100644
--- a/Mage.Sets/src/mage/cards/g/GroundshakerSliver.java
+++ b/Mage.Sets/src/mage/cards/g/GroundshakerSliver.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class GroundshakerSliver extends CardImpl {
+public final class GroundshakerSliver extends CardImpl {
public GroundshakerSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Groundskeeper.java b/Mage.Sets/src/mage/cards/g/Groundskeeper.java
index 4b3d127ae94..d6d8c53316e 100644
--- a/Mage.Sets/src/mage/cards/g/Groundskeeper.java
+++ b/Mage.Sets/src/mage/cards/g/Groundskeeper.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class Groundskeeper extends CardImpl {
+public final class Groundskeeper extends CardImpl {
public Groundskeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Groundswell.java b/Mage.Sets/src/mage/cards/g/Groundswell.java
index 19b4d4f27b0..3d5d6d48f61 100644
--- a/Mage.Sets/src/mage/cards/g/Groundswell.java
+++ b/Mage.Sets/src/mage/cards/g/Groundswell.java
@@ -43,7 +43,7 @@ import mage.watchers.common.LandfallWatcher;
*
* @author Viserion
*/
-public class Groundswell extends CardImpl {
+public final class Groundswell extends CardImpl {
public Groundswell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GroveOfTheBurnwillows.java b/Mage.Sets/src/mage/cards/g/GroveOfTheBurnwillows.java
index 4755e162619..a619b38738c 100644
--- a/Mage.Sets/src/mage/cards/g/GroveOfTheBurnwillows.java
+++ b/Mage.Sets/src/mage/cards/g/GroveOfTheBurnwillows.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author jonubuu
*/
-public class GroveOfTheBurnwillows extends CardImpl {
+public final class GroveOfTheBurnwillows extends CardImpl {
public GroveOfTheBurnwillows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GroveOfTheGuardian.java b/Mage.Sets/src/mage/cards/g/GroveOfTheGuardian.java
index 895bf58519f..c1b3cbf7591 100644
--- a/Mage.Sets/src/mage/cards/g/GroveOfTheGuardian.java
+++ b/Mage.Sets/src/mage/cards/g/GroveOfTheGuardian.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author LevelX2
*/
-public class GroveOfTheGuardian extends CardImpl {
+public final class GroveOfTheGuardian extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/g/GroveRumbler.java b/Mage.Sets/src/mage/cards/g/GroveRumbler.java
index 27880c8ea69..658a9e22ae4 100644
--- a/Mage.Sets/src/mage/cards/g/GroveRumbler.java
+++ b/Mage.Sets/src/mage/cards/g/GroveRumbler.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class GroveRumbler extends CardImpl {
+public final class GroveRumbler extends CardImpl {
public GroveRumbler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GrovetenderDruids.java b/Mage.Sets/src/mage/cards/g/GrovetenderDruids.java
index b4125b10816..99c8254a360 100644
--- a/Mage.Sets/src/mage/cards/g/GrovetenderDruids.java
+++ b/Mage.Sets/src/mage/cards/g/GrovetenderDruids.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class GrovetenderDruids extends CardImpl {
+public final class GrovetenderDruids extends CardImpl {
public GrovetenderDruids(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GrowFromTheAshes.java b/Mage.Sets/src/mage/cards/g/GrowFromTheAshes.java
index ee002dc954a..571d759a5b0 100644
--- a/Mage.Sets/src/mage/cards/g/GrowFromTheAshes.java
+++ b/Mage.Sets/src/mage/cards/g/GrowFromTheAshes.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class GrowFromTheAshes extends CardImpl {
+public final class GrowFromTheAshes extends CardImpl {
public GrowFromTheAshes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
@@ -52,8 +52,8 @@ public class GrowFromTheAshes extends CardImpl {
// Search you library for a basic land card, put it onto the battlefield, then shuffle your library. If this spell was kicked, instead search your library for two basic land cards, put them onto the battlefield, then shuffle your library.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD), false, true),
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD), false, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
KickedCondition.instance,
"Search your library for a basic land card, put it onto the battlefield, then shuffle your library. If this spell was kicked, instead search your library for two basic land cards, put them onto the battlefield, then shuffle your library."));
}
diff --git a/Mage.Sets/src/mage/cards/g/GrowingRanks.java b/Mage.Sets/src/mage/cards/g/GrowingRanks.java
index 7e9e702c2e3..93bb7b63914 100644
--- a/Mage.Sets/src/mage/cards/g/GrowingRanks.java
+++ b/Mage.Sets/src/mage/cards/g/GrowingRanks.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
/**
* @author LevelX2
*/
-public class GrowingRanks extends CardImpl {
+public final class GrowingRanks extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/g/GrowingRitesOfItlimoc.java b/Mage.Sets/src/mage/cards/g/GrowingRitesOfItlimoc.java
index 0e3a1cb05ff..66a2dbf3ffa 100644
--- a/Mage.Sets/src/mage/cards/g/GrowingRitesOfItlimoc.java
+++ b/Mage.Sets/src/mage/cards/g/GrowingRitesOfItlimoc.java
@@ -52,7 +52,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author JRHerlehy
*/
-public class GrowingRitesOfItlimoc extends CardImpl {
+public final class GrowingRitesOfItlimoc extends CardImpl {
private static final FilterCard filter = new FilterCard("a creature card");
diff --git a/Mage.Sets/src/mage/cards/g/GrowthSpasm.java b/Mage.Sets/src/mage/cards/g/GrowthSpasm.java
index 9dec125ecdf..8a825d9ecb2 100644
--- a/Mage.Sets/src/mage/cards/g/GrowthSpasm.java
+++ b/Mage.Sets/src/mage/cards/g/GrowthSpasm.java
@@ -42,13 +42,13 @@ import java.util.UUID;
*
* @author North
*/
-public class GrowthSpasm extends CardImpl {
+public final class GrowthSpasm extends CardImpl {
public GrowthSpasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true));
this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken()));
}
diff --git a/Mage.Sets/src/mage/cards/g/GrowthSpurt.java b/Mage.Sets/src/mage/cards/g/GrowthSpurt.java
index 1e092f5e751..3032e014c1c 100644
--- a/Mage.Sets/src/mage/cards/g/GrowthSpurt.java
+++ b/Mage.Sets/src/mage/cards/g/GrowthSpurt.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author ciaccona007
*/
-public class GrowthSpurt extends CardImpl {
+public final class GrowthSpurt extends CardImpl {
public GrowthSpurt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Grozoth.java b/Mage.Sets/src/mage/cards/g/Grozoth.java
index 5a9aa952014..85df5d88133 100644
--- a/Mage.Sets/src/mage/cards/g/Grozoth.java
+++ b/Mage.Sets/src/mage/cards/g/Grozoth.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class Grozoth extends CardImpl {
+public final class Grozoth extends CardImpl {
public Grozoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GruesomeDeformity.java b/Mage.Sets/src/mage/cards/g/GruesomeDeformity.java
index 262c453b288..9639ef5257a 100644
--- a/Mage.Sets/src/mage/cards/g/GruesomeDeformity.java
+++ b/Mage.Sets/src/mage/cards/g/GruesomeDeformity.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Alvin
*/
-public class GruesomeDeformity extends CardImpl {
+public final class GruesomeDeformity extends CardImpl {
public GruesomeDeformity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GruesomeDiscovery.java b/Mage.Sets/src/mage/cards/g/GruesomeDiscovery.java
index 79403861a50..29dd4fa4050 100644
--- a/Mage.Sets/src/mage/cards/g/GruesomeDiscovery.java
+++ b/Mage.Sets/src/mage/cards/g/GruesomeDiscovery.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class GruesomeDiscovery extends CardImpl {
+public final class GruesomeDiscovery extends CardImpl {
public GruesomeDiscovery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GruesomeEncore.java b/Mage.Sets/src/mage/cards/g/GruesomeEncore.java
index 162c5f0259f..7eb298d014e 100644
--- a/Mage.Sets/src/mage/cards/g/GruesomeEncore.java
+++ b/Mage.Sets/src/mage/cards/g/GruesomeEncore.java
@@ -48,6 +48,8 @@ import mage.filter.common.FilterCreatureCard;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
import mage.target.common.TargetCardInOpponentsGraveyard;
import mage.target.targetpointer.FixedTarget;
@@ -55,12 +57,12 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class GruesomeEncore extends CardImpl {
+public final class GruesomeEncore extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card from an opponent's graveyard");
public GruesomeEncore(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
// Put target creature card from an opponent's graveyard onto the battlefield under your control. It gains haste.
this.getSpellAbility().addEffect(new GruesomeEncoreEffect());
@@ -97,19 +99,23 @@ class GruesomeEncoreEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- Card card = game.getCard(source.getFirstTarget());
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
+ Card card = game.getCard(getTargetPointer().getFirst(game, source));
if (card != null) {
- card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId());
-
- ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
- effect.setTargetPointer(new FixedTarget(card.getId()));
- game.addEffect(effect, source);
-
- ExileTargetEffect exileEffect = new ExileTargetEffect();
- exileEffect.setTargetPointer(new FixedTarget(card.getId()));
- DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect);
- game.addDelayedTriggeredAbility(delayedAbility, source);
-
+ controller.moveCards(card, Zone.BATTLEFIELD, source, game);
+ Permanent permanent = game.getPermanent(card.getId());
+ if (permanent != null) {
+ ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
+ effect.setTargetPointer(new FixedTarget(permanent, game));
+ game.addEffect(effect, source);
+ ExileTargetEffect exileEffect = new ExileTargetEffect();
+ exileEffect.setTargetPointer(new FixedTarget(permanent, game));
+ DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect);
+ game.addDelayedTriggeredAbility(delayedAbility, source);
+ }
return true;
}
diff --git a/Mage.Sets/src/mage/cards/g/GruesomeFate.java b/Mage.Sets/src/mage/cards/g/GruesomeFate.java
index d9eb6b1d63a..f7157d80546 100644
--- a/Mage.Sets/src/mage/cards/g/GruesomeFate.java
+++ b/Mage.Sets/src/mage/cards/g/GruesomeFate.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class GruesomeFate extends CardImpl {
+public final class GruesomeFate extends CardImpl {
public GruesomeFate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GruesomeSlaughter.java b/Mage.Sets/src/mage/cards/g/GruesomeSlaughter.java
index 88085cfc3cc..6864625dd02 100644
--- a/Mage.Sets/src/mage/cards/g/GruesomeSlaughter.java
+++ b/Mage.Sets/src/mage/cards/g/GruesomeSlaughter.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GruesomeSlaughter extends CardImpl {
+public final class GruesomeSlaughter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("colorless creatures you control");
diff --git a/Mage.Sets/src/mage/cards/g/GrunnTheLonelyKing.java b/Mage.Sets/src/mage/cards/g/GrunnTheLonelyKing.java
index 33a775ad7f3..8d69cb56885 100644
--- a/Mage.Sets/src/mage/cards/g/GrunnTheLonelyKing.java
+++ b/Mage.Sets/src/mage/cards/g/GrunnTheLonelyKing.java
@@ -21,7 +21,7 @@ import mage.counters.CounterType;
* @author JRHerlehy
* Created on 4/5/18.
*/
-public class GrunnTheLonelyKing extends CardImpl {
+public final class GrunnTheLonelyKing extends CardImpl {
public GrunnTheLonelyKing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GruulCharm.java b/Mage.Sets/src/mage/cards/g/GruulCharm.java
index ea0cb6a2516..3c6856cc92a 100644
--- a/Mage.Sets/src/mage/cards/g/GruulCharm.java
+++ b/Mage.Sets/src/mage/cards/g/GruulCharm.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.other.OwnerPredicate;
*
* @author jeffwadsworth
*/
-public class GruulCharm extends CardImpl {
+public final class GruulCharm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures without flying");
private static final FilterPermanent filter2 = new FilterPermanent("all permanents you own");
diff --git a/Mage.Sets/src/mage/cards/g/GruulCluestone.java b/Mage.Sets/src/mage/cards/g/GruulCluestone.java
index 0a75100c39e..a431bb0f6f9 100644
--- a/Mage.Sets/src/mage/cards/g/GruulCluestone.java
+++ b/Mage.Sets/src/mage/cards/g/GruulCluestone.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*/
-public class GruulCluestone extends CardImpl {
+public final class GruulCluestone extends CardImpl {
public GruulCluestone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GruulGuildgate.java b/Mage.Sets/src/mage/cards/g/GruulGuildgate.java
index af52ecfe88c..01d444f4d0d 100644
--- a/Mage.Sets/src/mage/cards/g/GruulGuildgate.java
+++ b/Mage.Sets/src/mage/cards/g/GruulGuildgate.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class GruulGuildgate extends CardImpl {
+public final class GruulGuildgate extends CardImpl {
public GruulGuildgate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/g/GruulGuildmage.java b/Mage.Sets/src/mage/cards/g/GruulGuildmage.java
index dd83c86e5ed..0aafac66b1d 100644
--- a/Mage.Sets/src/mage/cards/g/GruulGuildmage.java
+++ b/Mage.Sets/src/mage/cards/g/GruulGuildmage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
/**
* @author Loki
*/
-public class GruulGuildmage extends CardImpl {
+public final class GruulGuildmage extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/g/GruulKeyrune.java b/Mage.Sets/src/mage/cards/g/GruulKeyrune.java
index fe000a45fd2..7f0cc240fb6 100644
--- a/Mage.Sets/src/mage/cards/g/GruulKeyrune.java
+++ b/Mage.Sets/src/mage/cards/g/GruulKeyrune.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author LevelX2
*/
-public class GruulKeyrune extends CardImpl {
+public final class GruulKeyrune extends CardImpl {
public GruulKeyrune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GruulNodorog.java b/Mage.Sets/src/mage/cards/g/GruulNodorog.java
index 961d2d966b6..a31feab42b0 100644
--- a/Mage.Sets/src/mage/cards/g/GruulNodorog.java
+++ b/Mage.Sets/src/mage/cards/g/GruulNodorog.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GruulNodorog extends CardImpl {
+public final class GruulNodorog extends CardImpl {
public GruulNodorog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GruulRagebeast.java b/Mage.Sets/src/mage/cards/g/GruulRagebeast.java
index b2f9c291f69..b73a0bab5df 100644
--- a/Mage.Sets/src/mage/cards/g/GruulRagebeast.java
+++ b/Mage.Sets/src/mage/cards/g/GruulRagebeast.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class GruulRagebeast extends CardImpl {
+public final class GruulRagebeast extends CardImpl {
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/g/GruulScrapper.java b/Mage.Sets/src/mage/cards/g/GruulScrapper.java
index a3c45542ff6..3c425236b42 100644
--- a/Mage.Sets/src/mage/cards/g/GruulScrapper.java
+++ b/Mage.Sets/src/mage/cards/g/GruulScrapper.java
@@ -46,7 +46,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author Styxo
*/
-public class GruulScrapper extends CardImpl {
+public final class GruulScrapper extends CardImpl {
public GruulScrapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GruulSignet.java b/Mage.Sets/src/mage/cards/g/GruulSignet.java
index 97d13426568..1792096c324 100644
--- a/Mage.Sets/src/mage/cards/g/GruulSignet.java
+++ b/Mage.Sets/src/mage/cards/g/GruulSignet.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class GruulSignet extends CardImpl {
+public final class GruulSignet extends CardImpl {
public GruulSignet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/g/GruulTurf.java b/Mage.Sets/src/mage/cards/g/GruulTurf.java
index f8d6e765830..a67493859bf 100644
--- a/Mage.Sets/src/mage/cards/g/GruulTurf.java
+++ b/Mage.Sets/src/mage/cards/g/GruulTurf.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledPermanent;
/**
* @author Loki
*/
-public class GruulTurf extends CardImpl {
+public final class GruulTurf extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/g/GruulWarChant.java b/Mage.Sets/src/mage/cards/g/GruulWarChant.java
index 9f0b2125d3d..5775037d691 100644
--- a/Mage.Sets/src/mage/cards/g/GruulWarChant.java
+++ b/Mage.Sets/src/mage/cards/g/GruulWarChant.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class GruulWarChant extends CardImpl {
+public final class GruulWarChant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GruulWarPlow.java b/Mage.Sets/src/mage/cards/g/GruulWarPlow.java
index 853f70091c5..82182413a3e 100644
--- a/Mage.Sets/src/mage/cards/g/GruulWarPlow.java
+++ b/Mage.Sets/src/mage/cards/g/GruulWarPlow.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
/**
* @author Loki
*/
-public class GruulWarPlow extends CardImpl {
+public final class GruulWarPlow extends CardImpl {
public GruulWarPlow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GryffVanguard.java b/Mage.Sets/src/mage/cards/g/GryffVanguard.java
index 5b676e45781..32948de82ff 100644
--- a/Mage.Sets/src/mage/cards/g/GryffVanguard.java
+++ b/Mage.Sets/src/mage/cards/g/GryffVanguard.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author noxx
*/
-public class GryffVanguard extends CardImpl {
+public final class GryffVanguard extends CardImpl {
public GryffVanguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GryffsBoon.java b/Mage.Sets/src/mage/cards/g/GryffsBoon.java
index 171fc5c0637..c47bc7f103d 100644
--- a/Mage.Sets/src/mage/cards/g/GryffsBoon.java
+++ b/Mage.Sets/src/mage/cards/g/GryffsBoon.java
@@ -45,6 +45,7 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.permanent.Permanent;
+import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@@ -52,10 +53,10 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class GryffsBoon extends CardImpl {
+public final class GryffsBoon extends CardImpl {
public GryffsBoon(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
this.subtype.add(SubType.AURA);
// Enchant creature
@@ -102,12 +103,13 @@ class GryffsBoonEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Card aura = game.getCard(source.getSourceId());
- if (aura != null
+ Player controller = game.getPlayer(source.getControllerId());
+ if (aura != null && controller != null
&& game.getState().getZone(aura.getId()) == Zone.GRAVEYARD) {
Permanent targetPermanent = game.getPermanent(getTargetPointer().getFirst(game, source));
if (!targetPermanent.cantBeAttachedBy(aura, game)) {
game.getState().setValue("attachTo:" + aura.getId(), targetPermanent);
- aura.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId());
+ controller.moveCards(aura, Zone.BATTLEFIELD, source, game);
return targetPermanent.addAttachment(aura.getId(), game);
}
}
diff --git a/Mage.Sets/src/mage/cards/g/GuanYuSaintedWarrior.java b/Mage.Sets/src/mage/cards/g/GuanYuSaintedWarrior.java
index a4500b9f304..044034a4cf8 100644
--- a/Mage.Sets/src/mage/cards/g/GuanYuSaintedWarrior.java
+++ b/Mage.Sets/src/mage/cards/g/GuanYuSaintedWarrior.java
@@ -42,7 +42,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class GuanYuSaintedWarrior extends CardImpl {
+public final class GuanYuSaintedWarrior extends CardImpl {
public GuanYuSaintedWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuanYus1000LiMarch.java b/Mage.Sets/src/mage/cards/g/GuanYus1000LiMarch.java
index 0e359f7c147..330fa5f96f0 100644
--- a/Mage.Sets/src/mage/cards/g/GuanYus1000LiMarch.java
+++ b/Mage.Sets/src/mage/cards/g/GuanYus1000LiMarch.java
@@ -39,7 +39,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LoneFox
*/
-public class GuanYus1000LiMarch extends CardImpl {
+public final class GuanYus1000LiMarch extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GuardDuty.java b/Mage.Sets/src/mage/cards/g/GuardDuty.java
index 34b8948bf0c..87fcd769566 100644
--- a/Mage.Sets/src/mage/cards/g/GuardDuty.java
+++ b/Mage.Sets/src/mage/cards/g/GuardDuty.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class GuardDuty extends CardImpl {
+public final class GuardDuty extends CardImpl {
public GuardDuty (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardGomazoa.java b/Mage.Sets/src/mage/cards/g/GuardGomazoa.java
index d74d4dd210e..0c2a7730c60 100644
--- a/Mage.Sets/src/mage/cards/g/GuardGomazoa.java
+++ b/Mage.Sets/src/mage/cards/g/GuardGomazoa.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class GuardGomazoa extends CardImpl {
+public final class GuardGomazoa extends CardImpl {
public GuardGomazoa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianAngel.java b/Mage.Sets/src/mage/cards/g/GuardianAngel.java
index 23156c98780..c8636985844 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianAngel.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianAngel.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author MTGfan
*/
-public class GuardianAngel extends CardImpl {
+public final class GuardianAngel extends CardImpl {
public GuardianAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianAutomaton.java b/Mage.Sets/src/mage/cards/g/GuardianAutomaton.java
index b1e724a2ac4..a5458fa2d2c 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianAutomaton.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianAutomaton.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
* @author LoneFox
*/
-public class GuardianAutomaton extends CardImpl {
+public final class GuardianAutomaton extends CardImpl {
public GuardianAutomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianBeast.java b/Mage.Sets/src/mage/cards/g/GuardianBeast.java
index 72c83b96544..07998a25f81 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianBeast.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianBeast.java
@@ -58,7 +58,7 @@ import mage.game.stack.StackObject;
*
* @author spjspj
*/
-public class GuardianBeast extends CardImpl {
+public final class GuardianBeast extends CardImpl {
private static final FilterObject filterAura = new FilterStackObject("auras");
private static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("Noncreature artifacts");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianIdol.java b/Mage.Sets/src/mage/cards/g/GuardianIdol.java
index c20a6a7bc1d..28ec0e0851b 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianIdol.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianIdol.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.Token;
*
* @author Plopman
*/
-public class GuardianIdol extends CardImpl {
+public final class GuardianIdol extends CardImpl {
public GuardianIdol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianLions.java b/Mage.Sets/src/mage/cards/g/GuardianLions.java
index a1ec8bf518f..6d3dcc6e045 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianLions.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianLions.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class GuardianLions extends CardImpl {
+public final class GuardianLions extends CardImpl {
public GuardianLions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfCloverdell.java b/Mage.Sets/src/mage/cards/g/GuardianOfCloverdell.java
index 15be302352d..af3f14d4404 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianOfCloverdell.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianOfCloverdell.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class GuardianOfCloverdell extends CardImpl {
+public final class GuardianOfCloverdell extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Kithkin");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfPilgrims.java b/Mage.Sets/src/mage/cards/g/GuardianOfPilgrims.java
index 741ae00c3d8..bb0b3ce5b32 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianOfPilgrims.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianOfPilgrims.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GuardianOfPilgrims extends CardImpl {
+public final class GuardianOfPilgrims extends CardImpl {
public GuardianOfPilgrims(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfSolitude.java b/Mage.Sets/src/mage/cards/g/GuardianOfSolitude.java
index eb01d6288cf..90f57b78719 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianOfSolitude.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianOfSolitude.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class GuardianOfSolitude extends CardImpl {
+public final class GuardianOfSolitude extends CardImpl {
public GuardianOfSolitude(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfTazeem.java b/Mage.Sets/src/mage/cards/g/GuardianOfTazeem.java
index 4bbd31d00c0..b5c6c39df2b 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianOfTazeem.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianOfTazeem.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class GuardianOfTazeem extends CardImpl {
+public final class GuardianOfTazeem extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfTheAges.java b/Mage.Sets/src/mage/cards/g/GuardianOfTheAges.java
index 6a56a11e704..3e581a1dd1a 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianOfTheAges.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianOfTheAges.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author Noahsark
*/
-public class GuardianOfTheAges extends CardImpl {
+public final class GuardianOfTheAges extends CardImpl {
public GuardianOfTheAges(UUID ownerId, CardSetInfo setInfo){
super(ownerId,setInfo,new CardType[]{CardType.CREATURE,CardType.ARTIFACT},"{7}");
this.subtype.add(SubType.GOLEM);
diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfTheGateless.java b/Mage.Sets/src/mage/cards/g/GuardianOfTheGateless.java
index 1f51f2ae2bf..f1aa8ddfda9 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianOfTheGateless.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianOfTheGateless.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class GuardianOfTheGateless extends CardImpl {
+public final class GuardianOfTheGateless extends CardImpl {
public GuardianOfTheGateless(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfTheGreatConduit.java b/Mage.Sets/src/mage/cards/g/GuardianOfTheGreatConduit.java
index f85962c599f..22e3eff5ace 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianOfTheGreatConduit.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianOfTheGreatConduit.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class GuardianOfTheGreatConduit extends CardImpl {
+public final class GuardianOfTheGreatConduit extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
private static final String rule = "As long as you control a Nissa planeswalker, {this} gets +2/+0";
diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfTheGuildpact.java b/Mage.Sets/src/mage/cards/g/GuardianOfTheGuildpact.java
index 00168cbba01..9442cc7afce 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianOfTheGuildpact.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianOfTheGuildpact.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.MonocoloredPredicate;
*
* @author LevelX2
*/
-public class GuardianOfTheGuildpact extends CardImpl {
+public final class GuardianOfTheGuildpact extends CardImpl {
private static final FilterCard filter = new FilterCard("monocolored");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfVituGhazi.java b/Mage.Sets/src/mage/cards/g/GuardianOfVituGhazi.java
index a81372fbea1..446f85deddc 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianOfVituGhazi.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianOfVituGhazi.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class GuardianOfVituGhazi extends CardImpl {
+public final class GuardianOfVituGhazi extends CardImpl {
public GuardianOfVituGhazi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianSeraph.java b/Mage.Sets/src/mage/cards/g/GuardianSeraph.java
index 193560c24cb..2efac53797a 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianSeraph.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianSeraph.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent;
*
* @author North
*/
-public class GuardianSeraph extends CardImpl {
+public final class GuardianSeraph extends CardImpl {
public GuardianSeraph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianShieldBearer.java b/Mage.Sets/src/mage/cards/g/GuardianShieldBearer.java
index 7543ac20cf1..b8f741b5ef4 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianShieldBearer.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianShieldBearer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class GuardianShieldBearer extends CardImpl {
+public final class GuardianShieldBearer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control");
diff --git a/Mage.Sets/src/mage/cards/g/GuardianZendikon.java b/Mage.Sets/src/mage/cards/g/GuardianZendikon.java
index 02ba012b78e..2c4e43c9ac5 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianZendikon.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianZendikon.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class GuardianZendikon extends CardImpl {
+public final class GuardianZendikon extends CardImpl {
public GuardianZendikon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardiansMagemark.java b/Mage.Sets/src/mage/cards/g/GuardiansMagemark.java
index 9255cb069b9..6f54a24ab96 100644
--- a/Mage.Sets/src/mage/cards/g/GuardiansMagemark.java
+++ b/Mage.Sets/src/mage/cards/g/GuardiansMagemark.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Markedagain
*/
-public class GuardiansMagemark extends CardImpl {
+public final class GuardiansMagemark extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control that are enchanted");
static {
diff --git a/Mage.Sets/src/mage/cards/g/GuardiansOfAkrasa.java b/Mage.Sets/src/mage/cards/g/GuardiansOfAkrasa.java
index b83ee0cdc1e..0c7e8ea37d5 100644
--- a/Mage.Sets/src/mage/cards/g/GuardiansOfAkrasa.java
+++ b/Mage.Sets/src/mage/cards/g/GuardiansOfAkrasa.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class GuardiansOfAkrasa extends CardImpl {
+public final class GuardiansOfAkrasa extends CardImpl {
public GuardiansOfAkrasa (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardiansOfKoilos.java b/Mage.Sets/src/mage/cards/g/GuardiansOfKoilos.java
index 1933ec154d5..3cfd76700ec 100644
--- a/Mage.Sets/src/mage/cards/g/GuardiansOfKoilos.java
+++ b/Mage.Sets/src/mage/cards/g/GuardiansOfKoilos.java
@@ -21,7 +21,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author Rystan
*/
-public class GuardiansOfKoilos extends CardImpl {
+public final class GuardiansOfKoilos extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another historic permanent you control");
diff --git a/Mage.Sets/src/mage/cards/g/GuardiansOfMeletis.java b/Mage.Sets/src/mage/cards/g/GuardiansOfMeletis.java
index f21d9775cff..b9137a4abe5 100644
--- a/Mage.Sets/src/mage/cards/g/GuardiansOfMeletis.java
+++ b/Mage.Sets/src/mage/cards/g/GuardiansOfMeletis.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GuardiansOfMeletis extends CardImpl {
+public final class GuardiansOfMeletis extends CardImpl {
public GuardiansOfMeletis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/g/GuardiansPledge.java b/Mage.Sets/src/mage/cards/g/GuardiansPledge.java
index 131a772b5bc..0c5084f5c47 100644
--- a/Mage.Sets/src/mage/cards/g/GuardiansPledge.java
+++ b/Mage.Sets/src/mage/cards/g/GuardiansPledge.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class GuardiansPledge extends CardImpl {
+public final class GuardiansPledge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures");
diff --git a/Mage.Sets/src/mage/cards/g/GudulLurker.java b/Mage.Sets/src/mage/cards/g/GudulLurker.java
index d0d2fb45321..ad679ab107c 100644
--- a/Mage.Sets/src/mage/cards/g/GudulLurker.java
+++ b/Mage.Sets/src/mage/cards/g/GudulLurker.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class GudulLurker extends CardImpl {
+public final class GudulLurker extends CardImpl {
public GudulLurker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GuerrillaTactics.java b/Mage.Sets/src/mage/cards/g/GuerrillaTactics.java
index 7d539dc0b8d..70963c94c78 100644
--- a/Mage.Sets/src/mage/cards/g/GuerrillaTactics.java
+++ b/Mage.Sets/src/mage/cards/g/GuerrillaTactics.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author dustinconrad
*/
-public class GuerrillaTactics extends CardImpl {
+public final class GuerrillaTactics extends CardImpl {
public GuerrillaTactics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GuidedPassage.java b/Mage.Sets/src/mage/cards/g/GuidedPassage.java
index 8e5e2ee9928..ac9f63432e6 100644
--- a/Mage.Sets/src/mage/cards/g/GuidedPassage.java
+++ b/Mage.Sets/src/mage/cards/g/GuidedPassage.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class GuidedPassage extends CardImpl {
+public final class GuidedPassage extends CardImpl {
public GuidedPassage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GuidedStrike.java b/Mage.Sets/src/mage/cards/g/GuidedStrike.java
index 9183e799f80..ffd73897f69 100644
--- a/Mage.Sets/src/mage/cards/g/GuidedStrike.java
+++ b/Mage.Sets/src/mage/cards/g/GuidedStrike.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class GuidedStrike extends CardImpl {
+public final class GuidedStrike extends CardImpl {
public GuidedStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuildFeud.java b/Mage.Sets/src/mage/cards/g/GuildFeud.java
index c3dceb9c07d..dda2d8e495f 100644
--- a/Mage.Sets/src/mage/cards/g/GuildFeud.java
+++ b/Mage.Sets/src/mage/cards/g/GuildFeud.java
@@ -27,6 +27,7 @@
*/
package mage.cards.g;
+import java.util.UUID;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
@@ -43,16 +44,14 @@ import mage.players.Player;
import mage.target.TargetCard;
import mage.target.common.TargetOpponent;
-import java.util.UUID;
-
/**
*
* @author LevelX2
*/
-public class GuildFeud extends CardImpl {
+public final class GuildFeud extends CardImpl {
public GuildFeud(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{R}");
// At the beginning of your upkeep, target opponent reveals the top three cards
// of their library, may put a creature card from among them onto the battlefield,
@@ -95,9 +94,8 @@ class GuildFeudEffect extends OneShotEffect {
if (opponent != null && controller != null && sourceObject != null) {
for (int activePlayer = 0; activePlayer < 2; activePlayer++) {
Player player = (activePlayer == 0 ? opponent : controller);
- Cards topThreeCards = new CardsImpl();
- topThreeCards.addAll(player.getLibrary().getTopCards(game, 3));
- player.revealCards(sourceObject.getIdName() + " - " + player.getName() + " top library cards", topThreeCards, game);
+ Cards topThreeCards = new CardsImpl(player.getLibrary().getTopCards(game, 3));
+ player.revealCards(source, player.getName() + " top library cards", topThreeCards, game);
Card creatureToBattlefield;
if (!topThreeCards.isEmpty()) {
if (player.chooseUse(Outcome.PutCreatureInPlay, "Put a creature card among them to the battlefield?", source, game)) {
@@ -108,9 +106,7 @@ class GuildFeudEffect extends OneShotEffect {
creatureToBattlefield = topThreeCards.get(target.getFirstTarget(), game);
if (creatureToBattlefield != null) {
topThreeCards.remove(creatureToBattlefield);
- if (creatureToBattlefield.putOntoBattlefield(game, Zone.LIBRARY,
- source.getSourceId(), player.getId())) {
- game.informPlayers("Guild Feud: " + player.getLogName() + " put " + creatureToBattlefield.getName() + " to the battlefield");
+ if (player.moveCards(creatureToBattlefield, Zone.BATTLEFIELD, source, game)) {
if (activePlayer == 0) {
opponentCreature = game.getPermanent(creatureToBattlefield.getId());
} else {
diff --git a/Mage.Sets/src/mage/cards/g/GuildscornWard.java b/Mage.Sets/src/mage/cards/g/GuildscornWard.java
index ee076e6fb1f..3a7293a9171 100644
--- a/Mage.Sets/src/mage/cards/g/GuildscornWard.java
+++ b/Mage.Sets/src/mage/cards/g/GuildscornWard.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class GuildscornWard extends CardImpl {
+public final class GuildscornWard extends CardImpl {
private static final FilterObject filter = new FilterObject("multicolored");
static {
diff --git a/Mage.Sets/src/mage/cards/g/Guile.java b/Mage.Sets/src/mage/cards/g/Guile.java
index 33c35bd6b3a..ea193212cfd 100644
--- a/Mage.Sets/src/mage/cards/g/Guile.java
+++ b/Mage.Sets/src/mage/cards/g/Guile.java
@@ -29,6 +29,7 @@ package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.PutIntoGraveFromAnywhereSourceTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
@@ -39,9 +40,9 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
@@ -54,10 +55,10 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class Guile extends CardImpl {
+public final class Guile extends CardImpl {
public Guile(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}{U}");
this.subtype.add(SubType.ELEMENTAL);
this.subtype.add(SubType.INCARNATION);
this.power = new MageInt(6);
@@ -113,7 +114,7 @@ class GuileReplacementEffect extends ReplacementEffectImpl {
if (!spell.isCopy()) {
Card spellCard = spell.getCard();
if (spellCard != null && controller.chooseUse(Outcome.PlayForFree, "Cast " + spellCard.getIdName() + " for free?", source, game)) {
- controller.playCard(spellCard, game, true, true);
+ controller.playCard(spellCard, game, true, true, new MageObjectReference(source.getSourceObject(game), game));
}
return true;
}
diff --git a/Mage.Sets/src/mage/cards/g/Guiltfeeder.java b/Mage.Sets/src/mage/cards/g/Guiltfeeder.java
index ba711d169f1..e4d09550674 100644
--- a/Mage.Sets/src/mage/cards/g/Guiltfeeder.java
+++ b/Mage.Sets/src/mage/cards/g/Guiltfeeder.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class Guiltfeeder extends CardImpl {
+public final class Guiltfeeder extends CardImpl {
public Guiltfeeder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GuiltyConscience.java b/Mage.Sets/src/mage/cards/g/GuiltyConscience.java
index eee1b27f83c..d6a4b682be8 100644
--- a/Mage.Sets/src/mage/cards/g/GuiltyConscience.java
+++ b/Mage.Sets/src/mage/cards/g/GuiltyConscience.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author HanClinto
*/
-public class GuiltyConscience extends CardImpl {
+public final class GuiltyConscience extends CardImpl {
public GuiltyConscience(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GuiseOfFire.java b/Mage.Sets/src/mage/cards/g/GuiseOfFire.java
index 259c716386f..118c07426e0 100644
--- a/Mage.Sets/src/mage/cards/g/GuiseOfFire.java
+++ b/Mage.Sets/src/mage/cards/g/GuiseOfFire.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class GuiseOfFire extends CardImpl {
+public final class GuiseOfFire extends CardImpl {
public GuiseOfFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GulfSquid.java b/Mage.Sets/src/mage/cards/g/GulfSquid.java
index 33a457a835b..ddab75ec2ab 100644
--- a/Mage.Sets/src/mage/cards/g/GulfSquid.java
+++ b/Mage.Sets/src/mage/cards/g/GulfSquid.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class GulfSquid extends CardImpl {
+public final class GulfSquid extends CardImpl {
public GulfSquid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/Guma.java b/Mage.Sets/src/mage/cards/g/Guma.java
index 4c18ea316bf..f1ef1bd5c91 100644
--- a/Mage.Sets/src/mage/cards/g/Guma.java
+++ b/Mage.Sets/src/mage/cards/g/Guma.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class Guma extends CardImpl {
+public final class Guma extends CardImpl {
public Guma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/Gundark.java b/Mage.Sets/src/mage/cards/g/Gundark.java
index fa7881bd45f..6b2e29b75c0 100644
--- a/Mage.Sets/src/mage/cards/g/Gundark.java
+++ b/Mage.Sets/src/mage/cards/g/Gundark.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author Styxo
*/
-public class Gundark extends CardImpl {
+public final class Gundark extends CardImpl {
public Gundark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GunganCaptain.java b/Mage.Sets/src/mage/cards/g/GunganCaptain.java
index 836a33429ac..4eeb422d65f 100644
--- a/Mage.Sets/src/mage/cards/g/GunganCaptain.java
+++ b/Mage.Sets/src/mage/cards/g/GunganCaptain.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class GunganCaptain extends CardImpl {
+public final class GunganCaptain extends CardImpl {
public GunganCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GurmagAngler.java b/Mage.Sets/src/mage/cards/g/GurmagAngler.java
index 4a65221c25e..300ede2839e 100644
--- a/Mage.Sets/src/mage/cards/g/GurmagAngler.java
+++ b/Mage.Sets/src/mage/cards/g/GurmagAngler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class GurmagAngler extends CardImpl {
+public final class GurmagAngler extends CardImpl {
public GurmagAngler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GurmagDrowner.java b/Mage.Sets/src/mage/cards/g/GurmagDrowner.java
index 28ab5d3d60b..04aca1ecfc6 100644
--- a/Mage.Sets/src/mage/cards/g/GurmagDrowner.java
+++ b/Mage.Sets/src/mage/cards/g/GurmagDrowner.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class GurmagDrowner extends CardImpl {
+public final class GurmagDrowner extends CardImpl {
public GurmagDrowner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GurmagSwiftwing.java b/Mage.Sets/src/mage/cards/g/GurmagSwiftwing.java
index 707115e5299..007792ae352 100644
--- a/Mage.Sets/src/mage/cards/g/GurmagSwiftwing.java
+++ b/Mage.Sets/src/mage/cards/g/GurmagSwiftwing.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GurmagSwiftwing extends CardImpl {
+public final class GurmagSwiftwing extends CardImpl {
public GurmagSwiftwing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Gurzigost.java b/Mage.Sets/src/mage/cards/g/Gurzigost.java
index d708e41a4cd..5f4ddc5c9c4 100644
--- a/Mage.Sets/src/mage/cards/g/Gurzigost.java
+++ b/Mage.Sets/src/mage/cards/g/Gurzigost.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000 & L_J
*/
-public class Gurzigost extends CardImpl {
+public final class Gurzigost extends CardImpl {
public Gurzigost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/Gush.java b/Mage.Sets/src/mage/cards/g/Gush.java
index 67178a73d4a..21dee50f379 100644
--- a/Mage.Sets/src/mage/cards/g/Gush.java
+++ b/Mage.Sets/src/mage/cards/g/Gush.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class Gush extends CardImpl {
+public final class Gush extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Islands");
static{
diff --git a/Mage.Sets/src/mage/cards/g/GustSkimmer.java b/Mage.Sets/src/mage/cards/g/GustSkimmer.java
index 4e5c9acea4e..5b659e737bb 100644
--- a/Mage.Sets/src/mage/cards/g/GustSkimmer.java
+++ b/Mage.Sets/src/mage/cards/g/GustSkimmer.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class GustSkimmer extends CardImpl {
+public final class GustSkimmer extends CardImpl {
public GustSkimmer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/g/GustWalker.java b/Mage.Sets/src/mage/cards/g/GustWalker.java
index be7b0fe9e4f..1fbeb1915b8 100644
--- a/Mage.Sets/src/mage/cards/g/GustWalker.java
+++ b/Mage.Sets/src/mage/cards/g/GustWalker.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author Styxo
*/
-public class GustWalker extends CardImpl {
+public final class GustWalker extends CardImpl {
public GustWalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GustcloakCavalier.java b/Mage.Sets/src/mage/cards/g/GustcloakCavalier.java
index e09e59319c9..af850fdaf9d 100644
--- a/Mage.Sets/src/mage/cards/g/GustcloakCavalier.java
+++ b/Mage.Sets/src/mage/cards/g/GustcloakCavalier.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class GustcloakCavalier extends CardImpl {
+public final class GustcloakCavalier extends CardImpl {
public GustcloakCavalier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GustcloakHarrier.java b/Mage.Sets/src/mage/cards/g/GustcloakHarrier.java
index fc126900cc5..4749a9da1d0 100644
--- a/Mage.Sets/src/mage/cards/g/GustcloakHarrier.java
+++ b/Mage.Sets/src/mage/cards/g/GustcloakHarrier.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class GustcloakHarrier extends CardImpl {
+public final class GustcloakHarrier extends CardImpl {
public GustcloakHarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GustcloakRunner.java b/Mage.Sets/src/mage/cards/g/GustcloakRunner.java
index 492f45c81c0..c98f9ecb749 100644
--- a/Mage.Sets/src/mage/cards/g/GustcloakRunner.java
+++ b/Mage.Sets/src/mage/cards/g/GustcloakRunner.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class GustcloakRunner extends CardImpl {
+public final class GustcloakRunner extends CardImpl {
public GustcloakRunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GustcloakSavior.java b/Mage.Sets/src/mage/cards/g/GustcloakSavior.java
index 3ab4b8408bc..2bb87af2353 100644
--- a/Mage.Sets/src/mage/cards/g/GustcloakSavior.java
+++ b/Mage.Sets/src/mage/cards/g/GustcloakSavior.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class GustcloakSavior extends CardImpl {
+public final class GustcloakSavior extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
diff --git a/Mage.Sets/src/mage/cards/g/GustcloakSentinel.java b/Mage.Sets/src/mage/cards/g/GustcloakSentinel.java
index e206b10dee3..dc60e135812 100644
--- a/Mage.Sets/src/mage/cards/g/GustcloakSentinel.java
+++ b/Mage.Sets/src/mage/cards/g/GustcloakSentinel.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class GustcloakSentinel extends CardImpl {
+public final class GustcloakSentinel extends CardImpl {
public GustcloakSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GustcloakSkirmisher.java b/Mage.Sets/src/mage/cards/g/GustcloakSkirmisher.java
index 900a57bae5d..5343cbd7cc6 100644
--- a/Mage.Sets/src/mage/cards/g/GustcloakSkirmisher.java
+++ b/Mage.Sets/src/mage/cards/g/GustcloakSkirmisher.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class GustcloakSkirmisher extends CardImpl {
+public final class GustcloakSkirmisher extends CardImpl {
public GustcloakSkirmisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/GustriderExuberant.java b/Mage.Sets/src/mage/cards/g/GustriderExuberant.java
index e78dbe6fdd9..2782ebdb73d 100644
--- a/Mage.Sets/src/mage/cards/g/GustriderExuberant.java
+++ b/Mage.Sets/src/mage/cards/g/GustriderExuberant.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author North
*/
-public class GustriderExuberant extends CardImpl {
+public final class GustriderExuberant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/g/GutShot.java b/Mage.Sets/src/mage/cards/g/GutShot.java
index 34ad281595b..b77d7c15b7b 100644
--- a/Mage.Sets/src/mage/cards/g/GutShot.java
+++ b/Mage.Sets/src/mage/cards/g/GutShot.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class GutShot extends CardImpl {
+public final class GutShot extends CardImpl {
public GutShot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R/P}");
diff --git a/Mage.Sets/src/mage/cards/g/GutlessGhoul.java b/Mage.Sets/src/mage/cards/g/GutlessGhoul.java
index 6cce21a5360..8db1741a92a 100644
--- a/Mage.Sets/src/mage/cards/g/GutlessGhoul.java
+++ b/Mage.Sets/src/mage/cards/g/GutlessGhoul.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class GutlessGhoul extends CardImpl {
+public final class GutlessGhoul extends CardImpl {
public GutlessGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GutterGrime.java b/Mage.Sets/src/mage/cards/g/GutterGrime.java
index 8c6f7d43dbb..85a581340ce 100644
--- a/Mage.Sets/src/mage/cards/g/GutterGrime.java
+++ b/Mage.Sets/src/mage/cards/g/GutterGrime.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.GutterGrimeToken;
*
* @author BetaSteward
*/
-public class GutterGrime extends CardImpl {
+public final class GutterGrime extends CardImpl {
public GutterGrime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GutterSkulk.java b/Mage.Sets/src/mage/cards/g/GutterSkulk.java
index d0195cea075..15e6826ae14 100644
--- a/Mage.Sets/src/mage/cards/g/GutterSkulk.java
+++ b/Mage.Sets/src/mage/cards/g/GutterSkulk.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class GutterSkulk extends CardImpl {
+public final class GutterSkulk extends CardImpl {
public GutterSkulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/Guttersnipe.java b/Mage.Sets/src/mage/cards/g/Guttersnipe.java
index cb5c32b282d..d70f998a287 100644
--- a/Mage.Sets/src/mage/cards/g/Guttersnipe.java
+++ b/Mage.Sets/src/mage/cards/g/Guttersnipe.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class Guttersnipe extends CardImpl {
+public final class Guttersnipe extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/g/GutturalResponse.java b/Mage.Sets/src/mage/cards/g/GutturalResponse.java
index d406ee25d63..701bcce7d94 100644
--- a/Mage.Sets/src/mage/cards/g/GutturalResponse.java
+++ b/Mage.Sets/src/mage/cards/g/GutturalResponse.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class GutturalResponse extends CardImpl {
+public final class GutturalResponse extends CardImpl {
private static final FilterSpell filter = new FilterSpell("blue instant spell");
diff --git a/Mage.Sets/src/mage/cards/g/GutwrencherOni.java b/Mage.Sets/src/mage/cards/g/GutwrencherOni.java
index fe42b35e822..e8632260a63 100644
--- a/Mage.Sets/src/mage/cards/g/GutwrencherOni.java
+++ b/Mage.Sets/src/mage/cards/g/GutwrencherOni.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class GutwrencherOni extends CardImpl {
+public final class GutwrencherOni extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("Ogre");
diff --git a/Mage.Sets/src/mage/cards/g/GuulDrazAssassin.java b/Mage.Sets/src/mage/cards/g/GuulDrazAssassin.java
index 17f66ee1b26..135686d21f4 100644
--- a/Mage.Sets/src/mage/cards/g/GuulDrazAssassin.java
+++ b/Mage.Sets/src/mage/cards/g/GuulDrazAssassin.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki, noxx
*/
-public class GuulDrazAssassin extends LevelerCard {
+public final class GuulDrazAssassin extends LevelerCard {
public GuulDrazAssassin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GuulDrazOverseer.java b/Mage.Sets/src/mage/cards/g/GuulDrazOverseer.java
index 19d3ebb4994..3a3cb0b932f 100644
--- a/Mage.Sets/src/mage/cards/g/GuulDrazOverseer.java
+++ b/Mage.Sets/src/mage/cards/g/GuulDrazOverseer.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class GuulDrazOverseer extends CardImpl {
+public final class GuulDrazOverseer extends CardImpl {
public GuulDrazOverseer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GuulDrazSpecter.java b/Mage.Sets/src/mage/cards/g/GuulDrazSpecter.java
index c9b676597a4..ab9047ee3b3 100644
--- a/Mage.Sets/src/mage/cards/g/GuulDrazSpecter.java
+++ b/Mage.Sets/src/mage/cards/g/GuulDrazSpecter.java
@@ -49,7 +49,7 @@ import mage.game.Game;
/**
* @author North
*/
-public class GuulDrazSpecter extends CardImpl {
+public final class GuulDrazSpecter extends CardImpl {
private static final String ruleText = "{this} gets +3/+3 as long as an opponent has no cards in hand";
diff --git a/Mage.Sets/src/mage/cards/g/GuulDrazVampire.java b/Mage.Sets/src/mage/cards/g/GuulDrazVampire.java
index 8eb4be5cdf0..04a309a9866 100644
--- a/Mage.Sets/src/mage/cards/g/GuulDrazVampire.java
+++ b/Mage.Sets/src/mage/cards/g/GuulDrazVampire.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class GuulDrazVampire extends CardImpl {
+public final class GuulDrazVampire extends CardImpl {
private static final String rule1 = "As long as an opponent has 10 or less life, {this} gets +2/+1";
private static final String rule2 = "and has intimidate. (It can't be blocked except by artifact creatures and/or creatures that share a color with it.)";
diff --git a/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java b/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java
index 8ea4c2f0629..4049263752e 100644
--- a/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java
+++ b/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class GwafaHazidProfiteer extends CardImpl {
+public final class GwafaHazidProfiteer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/g/GwendlynDiCorci.java b/Mage.Sets/src/mage/cards/g/GwendlynDiCorci.java
index b5e5aa88fbc..91fa57fd147 100644
--- a/Mage.Sets/src/mage/cards/g/GwendlynDiCorci.java
+++ b/Mage.Sets/src/mage/cards/g/GwendlynDiCorci.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class GwendlynDiCorci extends CardImpl {
+public final class GwendlynDiCorci extends CardImpl {
public GwendlynDiCorci(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GwyllionHedgeMage.java b/Mage.Sets/src/mage/cards/g/GwyllionHedgeMage.java
index 60f6534efcc..6917d4ad253 100644
--- a/Mage.Sets/src/mage/cards/g/GwyllionHedgeMage.java
+++ b/Mage.Sets/src/mage/cards/g/GwyllionHedgeMage.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*
*/
-public class GwyllionHedgeMage extends CardImpl {
+public final class GwyllionHedgeMage extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Plains");
private static final FilterLandPermanent filter2 = new FilterLandPermanent("Swamps");
diff --git a/Mage.Sets/src/mage/cards/g/GyreSage.java b/Mage.Sets/src/mage/cards/g/GyreSage.java
index 5d882cf72e7..2133e3e508c 100644
--- a/Mage.Sets/src/mage/cards/g/GyreSage.java
+++ b/Mage.Sets/src/mage/cards/g/GyreSage.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class GyreSage extends CardImpl {
+public final class GyreSage extends CardImpl {
public GyreSage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HaakonStromgaldScourge.java b/Mage.Sets/src/mage/cards/h/HaakonStromgaldScourge.java
index 85d1b276fa1..ccddc629e99 100644
--- a/Mage.Sets/src/mage/cards/h/HaakonStromgaldScourge.java
+++ b/Mage.Sets/src/mage/cards/h/HaakonStromgaldScourge.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author Mainiack11
*/
-public class HaakonStromgaldScourge extends CardImpl {
+public final class HaakonStromgaldScourge extends CardImpl {
public HaakonStromgaldScourge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HaazdaExonerator.java b/Mage.Sets/src/mage/cards/h/HaazdaExonerator.java
index 83a05a3d9f5..b46e81669c8 100644
--- a/Mage.Sets/src/mage/cards/h/HaazdaExonerator.java
+++ b/Mage.Sets/src/mage/cards/h/HaazdaExonerator.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class HaazdaExonerator extends CardImpl {
+public final class HaazdaExonerator extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Aura");
diff --git a/Mage.Sets/src/mage/cards/h/HaazdaShieldMate.java b/Mage.Sets/src/mage/cards/h/HaazdaShieldMate.java
index 18ac054bd03..3d13195de43 100644
--- a/Mage.Sets/src/mage/cards/h/HaazdaShieldMate.java
+++ b/Mage.Sets/src/mage/cards/h/HaazdaShieldMate.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class HaazdaShieldMate extends CardImpl {
+public final class HaazdaShieldMate extends CardImpl {
public HaazdaShieldMate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HaazdaSnareSquad.java b/Mage.Sets/src/mage/cards/h/HaazdaSnareSquad.java
index 4ad47a36fbf..7cdf9a45982 100644
--- a/Mage.Sets/src/mage/cards/h/HaazdaSnareSquad.java
+++ b/Mage.Sets/src/mage/cards/h/HaazdaSnareSquad.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*/
-public class HaazdaSnareSquad extends CardImpl {
+public final class HaazdaSnareSquad extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HadaFreeblade.java b/Mage.Sets/src/mage/cards/h/HadaFreeblade.java
index e6e316c67ff..c5d28718fae 100644
--- a/Mage.Sets/src/mage/cards/h/HadaFreeblade.java
+++ b/Mage.Sets/src/mage/cards/h/HadaFreeblade.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class HadaFreeblade extends CardImpl {
+public final class HadaFreeblade extends CardImpl {
public HadaFreeblade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HadaSpyPatrol.java b/Mage.Sets/src/mage/cards/h/HadaSpyPatrol.java
index 542383aa7e7..ecf8268f56e 100644
--- a/Mage.Sets/src/mage/cards/h/HadaSpyPatrol.java
+++ b/Mage.Sets/src/mage/cards/h/HadaSpyPatrol.java
@@ -46,7 +46,7 @@ import mage.constants.SubType;
*
* @author North, noxx
*/
-public class HadaSpyPatrol extends LevelerCard {
+public final class HadaSpyPatrol extends LevelerCard {
public HadaSpyPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HadanasClimb.java b/Mage.Sets/src/mage/cards/h/HadanasClimb.java
index 2c7f819563e..4467b30fc03 100644
--- a/Mage.Sets/src/mage/cards/h/HadanasClimb.java
+++ b/Mage.Sets/src/mage/cards/h/HadanasClimb.java
@@ -1,78 +1,78 @@
-/*
- * 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.abilities.Ability;
-import mage.abilities.common.BeginningOfCombatTriggeredAbility;
-import mage.abilities.condition.common.TargetHasCounterCondition;
-import mage.abilities.decorator.ConditionalOneShotEffect;
-import mage.abilities.effects.common.TransformSourceEffect;
-import mage.abilities.effects.common.counter.AddCountersTargetEffect;
-import mage.abilities.keyword.TransformAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.cards.w.WingedTempleOfOrazca;
-import mage.constants.CardType;
-import mage.constants.SuperType;
-import mage.constants.TargetController;
-import mage.counters.CounterType;
-import mage.target.common.TargetControlledCreaturePermanent;
-
-/**
- *
- * @author LevelX2
- */
-public class HadanasClimb extends CardImpl {
-
- public HadanasClimb(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{U}");
-
- this.addSuperType(SuperType.LEGENDARY);
- this.transformable = true;
-
- this.secondSideCardClazz = WingedTempleOfOrazca.class;
-
- // At the beginning of combat on your turn, put a +1/+1 counter on target creature you control. Then if that creature has three or more +1/+1 counters on it, transform Hadana's Climb.
- this.addAbility(new TransformAbility());
- Ability ability = new BeginningOfCombatTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), TargetController.YOU, false);
- ability.addEffect(new ConditionalOneShotEffect(new TransformSourceEffect(true), new TargetHasCounterCondition(CounterType.P1P1, 3, Integer.MAX_VALUE),
- "Then if that creature has three or more +1/+1 counters on it, transform {this}"));
- ability.addTarget(new TargetControlledCreaturePermanent());
- this.addAbility(ability);
- }
-
- public HadanasClimb(final HadanasClimb card) {
- super(card);
- }
-
- @Override
- public HadanasClimb copy() {
- return new HadanasClimb(this);
- }
-}
+/*
+ * 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.abilities.Ability;
+import mage.abilities.common.BeginningOfCombatTriggeredAbility;
+import mage.abilities.condition.common.TargetHasCounterCondition;
+import mage.abilities.decorator.ConditionalOneShotEffect;
+import mage.abilities.effects.common.TransformSourceEffect;
+import mage.abilities.effects.common.counter.AddCountersTargetEffect;
+import mage.abilities.keyword.TransformAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.cards.w.WingedTempleOfOrazca;
+import mage.constants.CardType;
+import mage.constants.SuperType;
+import mage.constants.TargetController;
+import mage.counters.CounterType;
+import mage.target.common.TargetControlledCreaturePermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class HadanasClimb extends CardImpl {
+
+ public HadanasClimb(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{U}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.transformable = true;
+
+ this.secondSideCardClazz = WingedTempleOfOrazca.class;
+
+ // At the beginning of combat on your turn, put a +1/+1 counter on target creature you control. Then if that creature has three or more +1/+1 counters on it, transform Hadana's Climb.
+ this.addAbility(new TransformAbility());
+ Ability ability = new BeginningOfCombatTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), TargetController.YOU, false);
+ ability.addEffect(new ConditionalOneShotEffect(new TransformSourceEffect(true), new TargetHasCounterCondition(CounterType.P1P1, 3, Integer.MAX_VALUE),
+ "Then if that creature has three or more +1/+1 counters on it, transform {this}"));
+ ability.addTarget(new TargetControlledCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public HadanasClimb(final HadanasClimb card) {
+ super(card);
+ }
+
+ @Override
+ public HadanasClimb copy() {
+ return new HadanasClimb(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/h/HagHedgeMage.java b/Mage.Sets/src/mage/cards/h/HagHedgeMage.java
index fd4e6efce07..b900560ea28 100644
--- a/Mage.Sets/src/mage/cards/h/HagHedgeMage.java
+++ b/Mage.Sets/src/mage/cards/h/HagHedgeMage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
* @author jeffwadsworth
*
*/
-public class HagHedgeMage extends CardImpl {
+public final class HagHedgeMage extends CardImpl {
private final static FilterLandPermanent filter = new FilterLandPermanent();
private final static FilterLandPermanent filter2 = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/h/HagraCrocodile.java b/Mage.Sets/src/mage/cards/h/HagraCrocodile.java
index f79074ad2ef..fc150b0129d 100644
--- a/Mage.Sets/src/mage/cards/h/HagraCrocodile.java
+++ b/Mage.Sets/src/mage/cards/h/HagraCrocodile.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class HagraCrocodile extends CardImpl {
+public final class HagraCrocodile extends CardImpl {
public HagraCrocodile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HagraDiabolist.java b/Mage.Sets/src/mage/cards/h/HagraDiabolist.java
index 49aa2cf3558..b4c2bc2e3f9 100644
--- a/Mage.Sets/src/mage/cards/h/HagraDiabolist.java
+++ b/Mage.Sets/src/mage/cards/h/HagraDiabolist.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class HagraDiabolist extends CardImpl {
+public final class HagraDiabolist extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Allies you control");
diff --git a/Mage.Sets/src/mage/cards/h/HagraSharpshooter.java b/Mage.Sets/src/mage/cards/h/HagraSharpshooter.java
index ac7436e3729..ee46ba2cf50 100644
--- a/Mage.Sets/src/mage/cards/h/HagraSharpshooter.java
+++ b/Mage.Sets/src/mage/cards/h/HagraSharpshooter.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HagraSharpshooter extends CardImpl {
+public final class HagraSharpshooter extends CardImpl {
public HagraSharpshooter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HailOfArrows.java b/Mage.Sets/src/mage/cards/h/HailOfArrows.java
index 51da6f1b47a..b70f690629d 100644
--- a/Mage.Sets/src/mage/cards/h/HailOfArrows.java
+++ b/Mage.Sets/src/mage/cards/h/HailOfArrows.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LevelX2
*/
-public class HailOfArrows extends CardImpl {
+public final class HailOfArrows extends CardImpl {
public HailOfArrows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HailStorm.java b/Mage.Sets/src/mage/cards/h/HailStorm.java
index 5ee36723325..c1a85cb8993 100644
--- a/Mage.Sets/src/mage/cards/h/HailStorm.java
+++ b/Mage.Sets/src/mage/cards/h/HailStorm.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author L_J
*/
-public class HailStorm extends CardImpl {
+public final class HailStorm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HairStrungKoto.java b/Mage.Sets/src/mage/cards/h/HairStrungKoto.java
index 5cc017e0b92..9851b3a7a65 100644
--- a/Mage.Sets/src/mage/cards/h/HairStrungKoto.java
+++ b/Mage.Sets/src/mage/cards/h/HairStrungKoto.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX
*/
-public class HairStrungKoto extends CardImpl {
+public final class HairStrungKoto extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/h/HakimLoreweaver.java b/Mage.Sets/src/mage/cards/h/HakimLoreweaver.java
index 348472d02ab..bea7f849aa9 100644
--- a/Mage.Sets/src/mage/cards/h/HakimLoreweaver.java
+++ b/Mage.Sets/src/mage/cards/h/HakimLoreweaver.java
@@ -61,7 +61,7 @@ import java.util.UUID;
*
* @author jeffwadsworth, TheElk801
*/
-public class HakimLoreweaver extends CardImpl {
+public final class HakimLoreweaver extends CardImpl {
private static final FilterCard filter = new FilterCard("target Aura card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/h/HalamDjinn.java b/Mage.Sets/src/mage/cards/h/HalamDjinn.java
index 1328c5a9937..e48db3d96b5 100644
--- a/Mage.Sets/src/mage/cards/h/HalamDjinn.java
+++ b/Mage.Sets/src/mage/cards/h/HalamDjinn.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class HalamDjinn extends CardImpl {
+public final class HalamDjinn extends CardImpl {
public HalamDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/Halberdier.java b/Mage.Sets/src/mage/cards/h/Halberdier.java
index 7b4491b1b5a..c65ed7fc967 100644
--- a/Mage.Sets/src/mage/cards/h/Halberdier.java
+++ b/Mage.Sets/src/mage/cards/h/Halberdier.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Halberdier extends CardImpl {
+public final class Halberdier extends CardImpl {
public Halberdier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HalcyonGlaze.java b/Mage.Sets/src/mage/cards/h/HalcyonGlaze.java
index 3d5c4da5ad5..730a489bc65 100644
--- a/Mage.Sets/src/mage/cards/h/HalcyonGlaze.java
+++ b/Mage.Sets/src/mage/cards/h/HalcyonGlaze.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.Token;
*
* @author Loki
*/
-public class HalcyonGlaze extends CardImpl {
+public final class HalcyonGlaze extends CardImpl {
public HalcyonGlaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/Halfdane.java b/Mage.Sets/src/mage/cards/h/Halfdane.java
index 591be18213c..aefbd33af7e 100644
--- a/Mage.Sets/src/mage/cards/h/Halfdane.java
+++ b/Mage.Sets/src/mage/cards/h/Halfdane.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Halfdane extends CardImpl {
+public final class Halfdane extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("target creature other than Halfdane");
diff --git a/Mage.Sets/src/mage/cards/h/HalimarDepths.java b/Mage.Sets/src/mage/cards/h/HalimarDepths.java
index 69161780dc6..5756d31df27 100644
--- a/Mage.Sets/src/mage/cards/h/HalimarDepths.java
+++ b/Mage.Sets/src/mage/cards/h/HalimarDepths.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class HalimarDepths extends CardImpl {
+public final class HalimarDepths extends CardImpl {
public HalimarDepths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/h/HalimarExcavator.java b/Mage.Sets/src/mage/cards/h/HalimarExcavator.java
index a20d9c7cef2..cf4fc779850 100644
--- a/Mage.Sets/src/mage/cards/h/HalimarExcavator.java
+++ b/Mage.Sets/src/mage/cards/h/HalimarExcavator.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class HalimarExcavator extends CardImpl {
+public final class HalimarExcavator extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Allies you control");
diff --git a/Mage.Sets/src/mage/cards/h/HalimarTidecaller.java b/Mage.Sets/src/mage/cards/h/HalimarTidecaller.java
index af1bd02e133..43a6a9f9ee8 100644
--- a/Mage.Sets/src/mage/cards/h/HalimarTidecaller.java
+++ b/Mage.Sets/src/mage/cards/h/HalimarTidecaller.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class HalimarTidecaller extends CardImpl {
+public final class HalimarTidecaller extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Land creatures");
private static final FilterCard filterCard = new FilterCard("card with awaken from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/h/HalimarWavewatch.java b/Mage.Sets/src/mage/cards/h/HalimarWavewatch.java
index 12c84f43764..9c7efc2bdab 100644
--- a/Mage.Sets/src/mage/cards/h/HalimarWavewatch.java
+++ b/Mage.Sets/src/mage/cards/h/HalimarWavewatch.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*
* @author North, noxx
*/
-public class HalimarWavewatch extends LevelerCard {
+public final class HalimarWavewatch extends LevelerCard {
public HalimarWavewatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HallOfGemstone.java b/Mage.Sets/src/mage/cards/h/HallOfGemstone.java
index 9cd0715735c..8ade61bc926 100644
--- a/Mage.Sets/src/mage/cards/h/HallOfGemstone.java
+++ b/Mage.Sets/src/mage/cards/h/HallOfGemstone.java
@@ -49,7 +49,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class HallOfGemstone extends CardImpl {
+public final class HallOfGemstone extends CardImpl {
public HallOfGemstone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HallOfTheBanditLord.java b/Mage.Sets/src/mage/cards/h/HallOfTheBanditLord.java
index edb7ad34723..80c2ab0c66e 100644
--- a/Mage.Sets/src/mage/cards/h/HallOfTheBanditLord.java
+++ b/Mage.Sets/src/mage/cards/h/HallOfTheBanditLord.java
@@ -57,7 +57,7 @@ import mage.watchers.Watcher;
*
* @author emerald000
*/
-public class HallOfTheBanditLord extends CardImpl {
+public final class HallOfTheBanditLord extends CardImpl {
public HallOfTheBanditLord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HallOfTriumph.java b/Mage.Sets/src/mage/cards/h/HallOfTriumph.java
index bdedf576d6a..0168b04e098 100644
--- a/Mage.Sets/src/mage/cards/h/HallOfTriumph.java
+++ b/Mage.Sets/src/mage/cards/h/HallOfTriumph.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class HallOfTriumph extends CardImpl {
+public final class HallOfTriumph extends CardImpl {
public HallOfTriumph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HallarTheFirefletcher.java b/Mage.Sets/src/mage/cards/h/HallarTheFirefletcher.java
index 579dd9700da..22313b16c1b 100644
--- a/Mage.Sets/src/mage/cards/h/HallarTheFirefletcher.java
+++ b/Mage.Sets/src/mage/cards/h/HallarTheFirefletcher.java
@@ -53,7 +53,7 @@ import mage.game.stack.Spell;
*
* @author TheElk801
*/
-public class HallarTheFirefletcher extends CardImpl {
+public final class HallarTheFirefletcher extends CardImpl {
public HallarTheFirefletcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/Hallow.java b/Mage.Sets/src/mage/cards/h/Hallow.java
index 2b7ae84b6ea..fb428f950d0 100644
--- a/Mage.Sets/src/mage/cards/h/Hallow.java
+++ b/Mage.Sets/src/mage/cards/h/Hallow.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Hallow extends CardImpl {
+public final class Hallow extends CardImpl {
public Hallow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HallowedBurial.java b/Mage.Sets/src/mage/cards/h/HallowedBurial.java
index 854a44b49b6..430b6292239 100644
--- a/Mage.Sets/src/mage/cards/h/HallowedBurial.java
+++ b/Mage.Sets/src/mage/cards/h/HallowedBurial.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class HallowedBurial extends CardImpl {
+public final class HallowedBurial extends CardImpl {
public HallowedBurial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HallowedFountain.java b/Mage.Sets/src/mage/cards/h/HallowedFountain.java
index 27a81923fe3..72a7c4ffb50 100644
--- a/Mage.Sets/src/mage/cards/h/HallowedFountain.java
+++ b/Mage.Sets/src/mage/cards/h/HallowedFountain.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class HallowedFountain extends CardImpl {
+public final class HallowedFountain extends CardImpl {
public HallowedFountain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/h/HallowedGround.java b/Mage.Sets/src/mage/cards/h/HallowedGround.java
index 37c00f5c6ba..3fb4fb14561 100644
--- a/Mage.Sets/src/mage/cards/h/HallowedGround.java
+++ b/Mage.Sets/src/mage/cards/h/HallowedGround.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Styxo
*/
-public class HallowedGround extends CardImpl {
+public final class HallowedGround extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("nonsnow land you control");
diff --git a/Mage.Sets/src/mage/cards/h/HallowedHealer.java b/Mage.Sets/src/mage/cards/h/HallowedHealer.java
index d863fff218e..a9237b30a35 100644
--- a/Mage.Sets/src/mage/cards/h/HallowedHealer.java
+++ b/Mage.Sets/src/mage/cards/h/HallowedHealer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
* @author cbt33
*/
-public class HallowedHealer extends CardImpl {
+public final class HallowedHealer extends CardImpl {
public HallowedHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HallowedMoonlight.java b/Mage.Sets/src/mage/cards/h/HallowedMoonlight.java
index eb39f8c1c3d..538090e7ec5 100644
--- a/Mage.Sets/src/mage/cards/h/HallowedMoonlight.java
+++ b/Mage.Sets/src/mage/cards/h/HallowedMoonlight.java
@@ -48,7 +48,7 @@ import mage.watchers.common.CreatureWasCastWatcher;
*
* @author LevelX2
*/
-public class HallowedMoonlight extends CardImpl {
+public final class HallowedMoonlight extends CardImpl {
public HallowedMoonlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HallowedSpiritkeeper.java b/Mage.Sets/src/mage/cards/h/HallowedSpiritkeeper.java
index 13195d023a3..18c9c94063c 100644
--- a/Mage.Sets/src/mage/cards/h/HallowedSpiritkeeper.java
+++ b/Mage.Sets/src/mage/cards/h/HallowedSpiritkeeper.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author LevelX2
*/
-public class HallowedSpiritkeeper extends CardImpl {
+public final class HallowedSpiritkeeper extends CardImpl {
public HallowedSpiritkeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HallsOfMist.java b/Mage.Sets/src/mage/cards/h/HallsOfMist.java
index 4f171f1ae0c..6a9a444ffb5 100644
--- a/Mage.Sets/src/mage/cards/h/HallsOfMist.java
+++ b/Mage.Sets/src/mage/cards/h/HallsOfMist.java
@@ -48,7 +48,7 @@ import mage.watchers.common.AttackedLastTurnWatcher;
*
* @author L_J
*/
-public class HallsOfMist extends CardImpl {
+public final class HallsOfMist extends CardImpl {
public HallsOfMist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/h/HaloHunter.java b/Mage.Sets/src/mage/cards/h/HaloHunter.java
index 02ee0dbf510..622ce63e52b 100644
--- a/Mage.Sets/src/mage/cards/h/HaloHunter.java
+++ b/Mage.Sets/src/mage/cards/h/HaloHunter.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class HaloHunter extends CardImpl {
+public final class HaloHunter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Angel");
diff --git a/Mage.Sets/src/mage/cards/h/HaltOrder.java b/Mage.Sets/src/mage/cards/h/HaltOrder.java
index 3cd2d0888f1..91139363a32 100644
--- a/Mage.Sets/src/mage/cards/h/HaltOrder.java
+++ b/Mage.Sets/src/mage/cards/h/HaltOrder.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class HaltOrder extends CardImpl {
+public final class HaltOrder extends CardImpl {
public HaltOrder (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HamletCaptain.java b/Mage.Sets/src/mage/cards/h/HamletCaptain.java
index 9ac4b0e87b3..35c52a73fa0 100644
--- a/Mage.Sets/src/mage/cards/h/HamletCaptain.java
+++ b/Mage.Sets/src/mage/cards/h/HamletCaptain.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class HamletCaptain extends CardImpl {
+public final class HamletCaptain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Humans");
diff --git a/Mage.Sets/src/mage/cards/h/HamletbackGoliath.java b/Mage.Sets/src/mage/cards/h/HamletbackGoliath.java
index 9d5092fd7b1..41b17a65e12 100644
--- a/Mage.Sets/src/mage/cards/h/HamletbackGoliath.java
+++ b/Mage.Sets/src/mage/cards/h/HamletbackGoliath.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class HamletbackGoliath extends CardImpl {
+public final class HamletbackGoliath extends CardImpl {
public HamletbackGoliath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HammerHelper.java b/Mage.Sets/src/mage/cards/h/HammerHelper.java
index bf54276c572..d6cf3a6883e 100644
--- a/Mage.Sets/src/mage/cards/h/HammerHelper.java
+++ b/Mage.Sets/src/mage/cards/h/HammerHelper.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class HammerHelper extends CardImpl {
+public final class HammerHelper extends CardImpl {
public HammerHelper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HammerMage.java b/Mage.Sets/src/mage/cards/h/HammerMage.java
index 13805e64d74..0f1ae6474da 100644
--- a/Mage.Sets/src/mage/cards/h/HammerMage.java
+++ b/Mage.Sets/src/mage/cards/h/HammerMage.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author LoneFox
*/
-public class HammerMage extends CardImpl {
+public final class HammerMage extends CardImpl {
public HammerMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HammerOfBogardan.java b/Mage.Sets/src/mage/cards/h/HammerOfBogardan.java
index f51762f2505..2d9f767b809 100644
--- a/Mage.Sets/src/mage/cards/h/HammerOfBogardan.java
+++ b/Mage.Sets/src/mage/cards/h/HammerOfBogardan.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
* @author jeffwadsworth
*
*/
-public class HammerOfBogardan extends CardImpl {
+public final class HammerOfBogardan extends CardImpl {
public HammerOfBogardan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HammerOfNazahn.java b/Mage.Sets/src/mage/cards/h/HammerOfNazahn.java
index 126584955d1..634d081089f 100644
--- a/Mage.Sets/src/mage/cards/h/HammerOfNazahn.java
+++ b/Mage.Sets/src/mage/cards/h/HammerOfNazahn.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Saga
*/
-public class HammerOfNazahn extends CardImpl {
+public final class HammerOfNazahn extends CardImpl {
private final static FilterEquipmentPermanent filter = new FilterEquipmentPermanent("{this} or another Equipment");
diff --git a/Mage.Sets/src/mage/cards/h/HammerOfPurphoros.java b/Mage.Sets/src/mage/cards/h/HammerOfPurphoros.java
index 8b4d30326b9..33e0fbb1bfd 100644
--- a/Mage.Sets/src/mage/cards/h/HammerOfPurphoros.java
+++ b/Mage.Sets/src/mage/cards/h/HammerOfPurphoros.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class HammerOfPurphoros extends CardImpl {
+public final class HammerOfPurphoros extends CardImpl {
public HammerOfPurphoros(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.ARTIFACT}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HammerOfRuin.java b/Mage.Sets/src/mage/cards/h/HammerOfRuin.java
index 5af5d8c6f52..e005aa15b4d 100644
--- a/Mage.Sets/src/mage/cards/h/HammerOfRuin.java
+++ b/Mage.Sets/src/mage/cards/h/HammerOfRuin.java
@@ -55,7 +55,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class HammerOfRuin extends CardImpl {
+public final class HammerOfRuin extends CardImpl {
public HammerOfRuin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/h/HammerfistGiant.java b/Mage.Sets/src/mage/cards/h/HammerfistGiant.java
index ec8413a8176..11c4e769382 100644
--- a/Mage.Sets/src/mage/cards/h/HammerfistGiant.java
+++ b/Mage.Sets/src/mage/cards/h/HammerfistGiant.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author fireshoes
*/
-public class HammerfistGiant extends CardImpl {
+public final class HammerfistGiant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature without flying");
diff --git a/Mage.Sets/src/mage/cards/h/Hammerhand.java b/Mage.Sets/src/mage/cards/h/Hammerhand.java
index 6eccc4e9a2d..18edae3ecec 100644
--- a/Mage.Sets/src/mage/cards/h/Hammerhand.java
+++ b/Mage.Sets/src/mage/cards/h/Hammerhand.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class Hammerhand extends CardImpl {
+public final class Hammerhand extends CardImpl {
public Hammerhand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HammerheadShark.java b/Mage.Sets/src/mage/cards/h/HammerheadShark.java
index c638c1153d8..c5ef9e39fed 100644
--- a/Mage.Sets/src/mage/cards/h/HammerheadShark.java
+++ b/Mage.Sets/src/mage/cards/h/HammerheadShark.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class HammerheadShark extends CardImpl {
+public final class HammerheadShark extends CardImpl {
public HammerheadShark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/Hammerheim.java b/Mage.Sets/src/mage/cards/h/Hammerheim.java
index 4ee6248a6bc..e535233a86d 100644
--- a/Mage.Sets/src/mage/cards/h/Hammerheim.java
+++ b/Mage.Sets/src/mage/cards/h/Hammerheim.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Hammerheim extends CardImpl {
+public final class Hammerheim extends CardImpl {
public Hammerheim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/h/HammerheimDeadeye.java b/Mage.Sets/src/mage/cards/h/HammerheimDeadeye.java
index 1b80635f2a7..5c5497d140c 100644
--- a/Mage.Sets/src/mage/cards/h/HammerheimDeadeye.java
+++ b/Mage.Sets/src/mage/cards/h/HammerheimDeadeye.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HammerheimDeadeye extends CardImpl {
+public final class HammerheimDeadeye extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HanSolo.java b/Mage.Sets/src/mage/cards/h/HanSolo.java
index 5fc30658fc0..902be519543 100644
--- a/Mage.Sets/src/mage/cards/h/HanSolo.java
+++ b/Mage.Sets/src/mage/cards/h/HanSolo.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class HanSolo extends CardImpl {
+public final class HanSolo extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Starship you control");
diff --git a/Mage.Sets/src/mage/cards/h/HanaKami.java b/Mage.Sets/src/mage/cards/h/HanaKami.java
index e951508c6ec..ef56e4e34b8 100644
--- a/Mage.Sets/src/mage/cards/h/HanaKami.java
+++ b/Mage.Sets/src/mage/cards/h/HanaKami.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author Loki
*/
-public class HanaKami extends CardImpl {
+public final class HanaKami extends CardImpl {
private static final FilterCard filter = new FilterCard("Arcane card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/h/HanabiBlast.java b/Mage.Sets/src/mage/cards/h/HanabiBlast.java
index f6157bf367e..c932743ff7f 100644
--- a/Mage.Sets/src/mage/cards/h/HanabiBlast.java
+++ b/Mage.Sets/src/mage/cards/h/HanabiBlast.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class HanabiBlast extends CardImpl {
+public final class HanabiBlast extends CardImpl {
public HanabiBlast (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HandOfCruelty.java b/Mage.Sets/src/mage/cards/h/HandOfCruelty.java
index 7699e8be923..7588f3b74e0 100644
--- a/Mage.Sets/src/mage/cards/h/HandOfCruelty.java
+++ b/Mage.Sets/src/mage/cards/h/HandOfCruelty.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class HandOfCruelty extends CardImpl {
+public final class HandOfCruelty extends CardImpl {
public HandOfCruelty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HandOfDeath.java b/Mage.Sets/src/mage/cards/h/HandOfDeath.java
index 250826549ea..d7e91fc6dbd 100644
--- a/Mage.Sets/src/mage/cards/h/HandOfDeath.java
+++ b/Mage.Sets/src/mage/cards/h/HandOfDeath.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class HandOfDeath extends CardImpl {
+public final class HandOfDeath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/h/HandOfEmrakul.java b/Mage.Sets/src/mage/cards/h/HandOfEmrakul.java
index 044a0e0d7d0..7b5f8caba3d 100644
--- a/Mage.Sets/src/mage/cards/h/HandOfEmrakul.java
+++ b/Mage.Sets/src/mage/cards/h/HandOfEmrakul.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class HandOfEmrakul extends CardImpl {
+public final class HandOfEmrakul extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("four Eldrazi Spawn");
diff --git a/Mage.Sets/src/mage/cards/h/HandOfHonor.java b/Mage.Sets/src/mage/cards/h/HandOfHonor.java
index 3a05ec60741..6414e015b4d 100644
--- a/Mage.Sets/src/mage/cards/h/HandOfHonor.java
+++ b/Mage.Sets/src/mage/cards/h/HandOfHonor.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author anonymous
*/
-public class HandOfHonor extends CardImpl {
+public final class HandOfHonor extends CardImpl {
public HandOfHonor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HandOfJustice.java b/Mage.Sets/src/mage/cards/h/HandOfJustice.java
index eba96bdd620..0af16a61ecf 100644
--- a/Mage.Sets/src/mage/cards/h/HandOfJustice.java
+++ b/Mage.Sets/src/mage/cards/h/HandOfJustice.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class HandOfJustice extends CardImpl {
+public final class HandOfJustice extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped white creatures you control");
diff --git a/Mage.Sets/src/mage/cards/h/HandOfSilumgar.java b/Mage.Sets/src/mage/cards/h/HandOfSilumgar.java
index 94b25ea97c2..60608a5eb51 100644
--- a/Mage.Sets/src/mage/cards/h/HandOfSilumgar.java
+++ b/Mage.Sets/src/mage/cards/h/HandOfSilumgar.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class HandOfSilumgar extends CardImpl {
+public final class HandOfSilumgar extends CardImpl {
public HandOfSilumgar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java b/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java
index fe94655a459..dfb5c0128f3 100644
--- a/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java
+++ b/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author Viserion, North
*/
-public class HandOfThePraetors extends CardImpl {
+public final class HandOfThePraetors extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with infect");
private static final FilterSpell filterSpell = new FilterSpell("a creature spell with infect");
diff --git a/Mage.Sets/src/mage/cards/h/HandToHand.java b/Mage.Sets/src/mage/cards/h/HandToHand.java
index 0686a306a20..39114c39a90 100644
--- a/Mage.Sets/src/mage/cards/h/HandToHand.java
+++ b/Mage.Sets/src/mage/cards/h/HandToHand.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent;
*
* @author fireshoes
*/
-public class HandToHand extends CardImpl {
+public final class HandToHand extends CardImpl {
public HandToHand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HandsOfBinding.java b/Mage.Sets/src/mage/cards/h/HandsOfBinding.java
index 2c6638cb756..48a14f1e616 100644
--- a/Mage.Sets/src/mage/cards/h/HandsOfBinding.java
+++ b/Mage.Sets/src/mage/cards/h/HandsOfBinding.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class HandsOfBinding extends CardImpl {
+public final class HandsOfBinding extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static{
diff --git a/Mage.Sets/src/mage/cards/h/HangarbackWalker.java b/Mage.Sets/src/mage/cards/h/HangarbackWalker.java
index b58bd63b1d1..ccbf579e120 100644
--- a/Mage.Sets/src/mage/cards/h/HangarbackWalker.java
+++ b/Mage.Sets/src/mage/cards/h/HangarbackWalker.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author fireshoes
*/
-public class HangarbackWalker extends CardImpl {
+public final class HangarbackWalker extends CardImpl {
public HangarbackWalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{X}{X}");
diff --git a/Mage.Sets/src/mage/cards/h/Hankyu.java b/Mage.Sets/src/mage/cards/h/Hankyu.java
index d68b955af2f..ee5d09e89e7 100644
--- a/Mage.Sets/src/mage/cards/h/Hankyu.java
+++ b/Mage.Sets/src/mage/cards/h/Hankyu.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class Hankyu extends CardImpl {
+public final class Hankyu extends CardImpl {
public Hankyu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/h/HannaShipsNavigator.java b/Mage.Sets/src/mage/cards/h/HannaShipsNavigator.java
index 8d927725661..cc723c2e6e2 100644
--- a/Mage.Sets/src/mage/cards/h/HannaShipsNavigator.java
+++ b/Mage.Sets/src/mage/cards/h/HannaShipsNavigator.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class HannaShipsNavigator extends CardImpl {
+public final class HannaShipsNavigator extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact or enchantment card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/h/HannasCustody.java b/Mage.Sets/src/mage/cards/h/HannasCustody.java
index 16f91424f3a..7d020ad1c05 100644
--- a/Mage.Sets/src/mage/cards/h/HannasCustody.java
+++ b/Mage.Sets/src/mage/cards/h/HannasCustody.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Loki
*/
-public class HannasCustody extends CardImpl {
+public final class HannasCustody extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts");
diff --git a/Mage.Sets/src/mage/cards/h/HanweirBattlements.java b/Mage.Sets/src/mage/cards/h/HanweirBattlements.java
index 3572035a505..02c2b9555f5 100644
--- a/Mage.Sets/src/mage/cards/h/HanweirBattlements.java
+++ b/Mage.Sets/src/mage/cards/h/HanweirBattlements.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HanweirBattlements extends CardImpl {
+public final class HanweirBattlements extends CardImpl {
public HanweirBattlements(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HanweirGarrison.java b/Mage.Sets/src/mage/cards/h/HanweirGarrison.java
index b91654c870b..b0163be3cd5 100644
--- a/Mage.Sets/src/mage/cards/h/HanweirGarrison.java
+++ b/Mage.Sets/src/mage/cards/h/HanweirGarrison.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.RedHumanToken;
*
* @author fireshoes
*/
-public class HanweirGarrison extends CardImpl {
+public final class HanweirGarrison extends CardImpl {
public HanweirGarrison(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HanweirLancer.java b/Mage.Sets/src/mage/cards/h/HanweirLancer.java
index 2b801e7f852..f4991e477a7 100644
--- a/Mage.Sets/src/mage/cards/h/HanweirLancer.java
+++ b/Mage.Sets/src/mage/cards/h/HanweirLancer.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class HanweirLancer extends CardImpl {
+public final class HanweirLancer extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, both creatures have first strike";
diff --git a/Mage.Sets/src/mage/cards/h/HanweirMilitiaCaptain.java b/Mage.Sets/src/mage/cards/h/HanweirMilitiaCaptain.java
index 72120b760eb..4db0dd50e90 100644
--- a/Mage.Sets/src/mage/cards/h/HanweirMilitiaCaptain.java
+++ b/Mage.Sets/src/mage/cards/h/HanweirMilitiaCaptain.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class HanweirMilitiaCaptain extends CardImpl {
+public final class HanweirMilitiaCaptain extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("if you control four or more creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HanweirTheWrithingTownship.java b/Mage.Sets/src/mage/cards/h/HanweirTheWrithingTownship.java
index d3270036d69..78162232f10 100644
--- a/Mage.Sets/src/mage/cards/h/HanweirTheWrithingTownship.java
+++ b/Mage.Sets/src/mage/cards/h/HanweirTheWrithingTownship.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.EldraziHorrorToken;
*
* @author LevelX2
*/
-public class HanweirTheWrithingTownship extends MeldCard {
+public final class HanweirTheWrithingTownship extends MeldCard {
public HanweirTheWrithingTownship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
addSuperType(SuperType.LEGENDARY);
diff --git a/Mage.Sets/src/mage/cards/h/HanweirWatchkeep.java b/Mage.Sets/src/mage/cards/h/HanweirWatchkeep.java
index 005fbbd114f..f3ccd58ceb0 100644
--- a/Mage.Sets/src/mage/cards/h/HanweirWatchkeep.java
+++ b/Mage.Sets/src/mage/cards/h/HanweirWatchkeep.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class HanweirWatchkeep extends CardImpl {
+public final class HanweirWatchkeep extends CardImpl {
public HanweirWatchkeep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HapatraVizierOfPoisons.java b/Mage.Sets/src/mage/cards/h/HapatraVizierOfPoisons.java
index 2d63496710a..48bd09d8830 100644
--- a/Mage.Sets/src/mage/cards/h/HapatraVizierOfPoisons.java
+++ b/Mage.Sets/src/mage/cards/h/HapatraVizierOfPoisons.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class HapatraVizierOfPoisons extends CardImpl {
+public final class HapatraVizierOfPoisons extends CardImpl {
public HapatraVizierOfPoisons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HapatrasMark.java b/Mage.Sets/src/mage/cards/h/HapatrasMark.java
index f4764c969f0..97c070e0aaa 100644
--- a/Mage.Sets/src/mage/cards/h/HapatrasMark.java
+++ b/Mage.Sets/src/mage/cards/h/HapatrasMark.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class HapatrasMark extends CardImpl {
+public final class HapatrasMark extends CardImpl {
public HapatrasMark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HaphazardBombardment.java b/Mage.Sets/src/mage/cards/h/HaphazardBombardment.java
index b0331155834..7a489b9eb49 100644
--- a/Mage.Sets/src/mage/cards/h/HaphazardBombardment.java
+++ b/Mage.Sets/src/mage/cards/h/HaphazardBombardment.java
@@ -59,7 +59,7 @@ import mage.util.RandomUtil;
*
* @author LevelX2
*/
-public class HaphazardBombardment extends CardImpl {
+public final class HaphazardBombardment extends CardImpl {
public HaphazardBombardment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HaplessResearcher.java b/Mage.Sets/src/mage/cards/h/HaplessResearcher.java
index e44ee7ea5d2..9ce186d427f 100644
--- a/Mage.Sets/src/mage/cards/h/HaplessResearcher.java
+++ b/Mage.Sets/src/mage/cards/h/HaplessResearcher.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class HaplessResearcher extends CardImpl {
+public final class HaplessResearcher extends CardImpl {
public HaplessResearcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HarabazDruid.java b/Mage.Sets/src/mage/cards/h/HarabazDruid.java
index 849624ace11..ade3ee81338 100644
--- a/Mage.Sets/src/mage/cards/h/HarabazDruid.java
+++ b/Mage.Sets/src/mage/cards/h/HarabazDruid.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class HarabazDruid extends CardImpl {
+public final class HarabazDruid extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Allies you control");
diff --git a/Mage.Sets/src/mage/cards/h/HarbingerOfNight.java b/Mage.Sets/src/mage/cards/h/HarbingerOfNight.java
index bd318a65d8a..a56da178f1d 100644
--- a/Mage.Sets/src/mage/cards/h/HarbingerOfNight.java
+++ b/Mage.Sets/src/mage/cards/h/HarbingerOfNight.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreaturePermanent;
* @author LoneFox
*/
-public class HarbingerOfNight extends CardImpl {
+public final class HarbingerOfNight extends CardImpl {
public HarbingerOfNight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HarbingerOfSpring.java b/Mage.Sets/src/mage/cards/h/HarbingerOfSpring.java
index 0d5ffc8ad01..9496811c26d 100644
--- a/Mage.Sets/src/mage/cards/h/HarbingerOfSpring.java
+++ b/Mage.Sets/src/mage/cards/h/HarbingerOfSpring.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class HarbingerOfSpring extends CardImpl {
+public final class HarbingerOfSpring extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Spirit creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HarbingerOfTheHunt.java b/Mage.Sets/src/mage/cards/h/HarbingerOfTheHunt.java
index fda9b47135a..68da8e4dd04 100644
--- a/Mage.Sets/src/mage/cards/h/HarbingerOfTheHunt.java
+++ b/Mage.Sets/src/mage/cards/h/HarbingerOfTheHunt.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class HarbingerOfTheHunt extends CardImpl {
+public final class HarbingerOfTheHunt extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("other creature with flying");
diff --git a/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java b/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java
index ca60f7928c2..9ec72e082a4 100644
--- a/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java
+++ b/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HarbingerOfTheTides extends CardImpl {
+public final class HarbingerOfTheTides extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/h/HarborBandit.java b/Mage.Sets/src/mage/cards/h/HarborBandit.java
index 4dc458279f5..c78a2ce0265 100644
--- a/Mage.Sets/src/mage/cards/h/HarborBandit.java
+++ b/Mage.Sets/src/mage/cards/h/HarborBandit.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jeffwadsworth
*/
-public class HarborBandit extends CardImpl {
+public final class HarborBandit extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("island");
private static final String rule = "{this} gets +1/+1 as long as you control an Island";
diff --git a/Mage.Sets/src/mage/cards/h/HarborGuardian.java b/Mage.Sets/src/mage/cards/h/HarborGuardian.java
index ef4c8b38196..276abe6a6dd 100644
--- a/Mage.Sets/src/mage/cards/h/HarborGuardian.java
+++ b/Mage.Sets/src/mage/cards/h/HarborGuardian.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class HarborGuardian extends CardImpl {
+public final class HarborGuardian extends CardImpl {
public HarborGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HarborSerpent.java b/Mage.Sets/src/mage/cards/h/HarborSerpent.java
index 6f09e87b0bf..5c7b514572e 100644
--- a/Mage.Sets/src/mage/cards/h/HarborSerpent.java
+++ b/Mage.Sets/src/mage/cards/h/HarborSerpent.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
* @author BetaSteward_at_googlemail.com
* @author North
*/
-public class HarborSerpent extends CardImpl {
+public final class HarborSerpent extends CardImpl {
public HarborSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HardenedBerserker.java b/Mage.Sets/src/mage/cards/h/HardenedBerserker.java
index 080faf805ea..5ef1a0f0ca9 100644
--- a/Mage.Sets/src/mage/cards/h/HardenedBerserker.java
+++ b/Mage.Sets/src/mage/cards/h/HardenedBerserker.java
@@ -48,7 +48,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author LevelX2
*/
-public class HardenedBerserker extends CardImpl {
+public final class HardenedBerserker extends CardImpl {
public HardenedBerserker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HardenedScales.java b/Mage.Sets/src/mage/cards/h/HardenedScales.java
index a1197feeae9..6f02a7f1a7d 100644
--- a/Mage.Sets/src/mage/cards/h/HardenedScales.java
+++ b/Mage.Sets/src/mage/cards/h/HardenedScales.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class HardenedScales extends CardImpl {
+public final class HardenedScales extends CardImpl {
public HardenedScales(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HardyVeteran.java b/Mage.Sets/src/mage/cards/h/HardyVeteran.java
index 88d23ce0586..54d7ba46db5 100644
--- a/Mage.Sets/src/mage/cards/h/HardyVeteran.java
+++ b/Mage.Sets/src/mage/cards/h/HardyVeteran.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HardyVeteran extends CardImpl {
+public final class HardyVeteran extends CardImpl {
public HardyVeteran(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HarmattanEfreet.java b/Mage.Sets/src/mage/cards/h/HarmattanEfreet.java
index d4b176d8537..242fb83b47f 100644
--- a/Mage.Sets/src/mage/cards/h/HarmattanEfreet.java
+++ b/Mage.Sets/src/mage/cards/h/HarmattanEfreet.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class HarmattanEfreet extends CardImpl {
+public final class HarmattanEfreet extends CardImpl {
public HarmattanEfreet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HarmlessAssault.java b/Mage.Sets/src/mage/cards/h/HarmlessAssault.java
index 9ff798c9fce..28c1c03d6e0 100644
--- a/Mage.Sets/src/mage/cards/h/HarmlessAssault.java
+++ b/Mage.Sets/src/mage/cards/h/HarmlessAssault.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author Rafbill
*/
-public class HarmlessAssault extends CardImpl {
+public final class HarmlessAssault extends CardImpl {
public HarmlessAssault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HarmlessOffering.java b/Mage.Sets/src/mage/cards/h/HarmlessOffering.java
index 946c19c198c..8d0a3b8a159 100644
--- a/Mage.Sets/src/mage/cards/h/HarmlessOffering.java
+++ b/Mage.Sets/src/mage/cards/h/HarmlessOffering.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class HarmlessOffering extends CardImpl {
+public final class HarmlessOffering extends CardImpl {
public HarmlessOffering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HarmonicConvergence.java b/Mage.Sets/src/mage/cards/h/HarmonicConvergence.java
index a88d888181a..abc4a95550e 100644
--- a/Mage.Sets/src/mage/cards/h/HarmonicConvergence.java
+++ b/Mage.Sets/src/mage/cards/h/HarmonicConvergence.java
@@ -48,7 +48,7 @@ import java.util.*;
*
* @author North
*/
-public class HarmonicConvergence extends CardImpl {
+public final class HarmonicConvergence extends CardImpl {
public HarmonicConvergence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HarmonicSliver.java b/Mage.Sets/src/mage/cards/h/HarmonicSliver.java
index d25c8581dfa..51a429eba0e 100644
--- a/Mage.Sets/src/mage/cards/h/HarmonicSliver.java
+++ b/Mage.Sets/src/mage/cards/h/HarmonicSliver.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class HarmonicSliver extends CardImpl {
+public final class HarmonicSliver extends CardImpl {
private static final FilterCreaturePermanent filterSliver = new FilterCreaturePermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/h/Harmonize.java b/Mage.Sets/src/mage/cards/h/Harmonize.java
index 966192019c7..e6c39653a02 100644
--- a/Mage.Sets/src/mage/cards/h/Harmonize.java
+++ b/Mage.Sets/src/mage/cards/h/Harmonize.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class Harmonize extends CardImpl {
+public final class Harmonize extends CardImpl {
public Harmonize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HarmonyOfNature.java b/Mage.Sets/src/mage/cards/h/HarmonyOfNature.java
index c40fc7e7817..75162e940ef 100644
--- a/Mage.Sets/src/mage/cards/h/HarmonyOfNature.java
+++ b/Mage.Sets/src/mage/cards/h/HarmonyOfNature.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class HarmonyOfNature extends CardImpl {
+public final class HarmonyOfNature extends CardImpl {
public HarmonyOfNature(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HarmsWay.java b/Mage.Sets/src/mage/cards/h/HarmsWay.java
index 81299ade5c1..727df5f6f1c 100644
--- a/Mage.Sets/src/mage/cards/h/HarmsWay.java
+++ b/Mage.Sets/src/mage/cards/h/HarmsWay.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author noxx
*/
-public class HarmsWay extends CardImpl {
+public final class HarmsWay extends CardImpl {
public HarmsWay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HarnessByForce.java b/Mage.Sets/src/mage/cards/h/HarnessByForce.java
index 3b496a5edfe..65c4fd3f810 100644
--- a/Mage.Sets/src/mage/cards/h/HarnessByForce.java
+++ b/Mage.Sets/src/mage/cards/h/HarnessByForce.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HarnessByForce extends CardImpl {
+public final class HarnessByForce extends CardImpl {
public HarnessByForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HarnessTheStorm.java b/Mage.Sets/src/mage/cards/h/HarnessTheStorm.java
index 2af3d7ebf86..2f865934332 100644
--- a/Mage.Sets/src/mage/cards/h/HarnessTheStorm.java
+++ b/Mage.Sets/src/mage/cards/h/HarnessTheStorm.java
@@ -28,6 +28,7 @@
package mage.cards.h;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.Effect;
@@ -52,10 +53,10 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author LevelX2
*/
-public class HarnessTheStorm extends CardImpl {
+public final class HarnessTheStorm extends CardImpl {
public HarnessTheStorm(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
// Whenever you cast an instant or sorcery spell from your hand, you may cast target card with the same name as that spell from your graveyard.
this.addAbility(new HarnessTheStormTriggeredAbility(new HarnessTheStormEffect(),
@@ -132,7 +133,7 @@ class HarnessTheStormEffect extends OneShotEffect {
Card card = controller.getGraveyard().get(getTargetPointer().getFirst(game, source), game);
if (card != null) {
if (controller.chooseUse(outcome, "Cast " + card.getIdName() + " from your graveyard?", source, game)) {
- controller.cast(card.getSpellAbility(), game, false);
+ controller.cast(card.getSpellAbility(), game, false, new MageObjectReference(source.getSourceObject(game), game));
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/h/HarnessedLightning.java b/Mage.Sets/src/mage/cards/h/HarnessedLightning.java
index e737ad896df..5d716a3db80 100644
--- a/Mage.Sets/src/mage/cards/h/HarnessedLightning.java
+++ b/Mage.Sets/src/mage/cards/h/HarnessedLightning.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HarnessedLightning extends CardImpl {
+public final class HarnessedLightning extends CardImpl {
public HarnessedLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HarpoonSniper.java b/Mage.Sets/src/mage/cards/h/HarpoonSniper.java
index efc29f96575..61b09ef02f9 100644
--- a/Mage.Sets/src/mage/cards/h/HarpoonSniper.java
+++ b/Mage.Sets/src/mage/cards/h/HarpoonSniper.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author Loki
*/
-public class HarpoonSniper extends CardImpl {
+public final class HarpoonSniper extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Merfolk you control");
diff --git a/Mage.Sets/src/mage/cards/h/HarrierGriffin.java b/Mage.Sets/src/mage/cards/h/HarrierGriffin.java
index bce47a4d4d4..11f95e212f2 100644
--- a/Mage.Sets/src/mage/cards/h/HarrierGriffin.java
+++ b/Mage.Sets/src/mage/cards/h/HarrierGriffin.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class HarrierGriffin extends CardImpl {
+public final class HarrierGriffin extends CardImpl {
public HarrierGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HarrierNaga.java b/Mage.Sets/src/mage/cards/h/HarrierNaga.java
index c51a1d7252c..2f4cedd7bea 100644
--- a/Mage.Sets/src/mage/cards/h/HarrierNaga.java
+++ b/Mage.Sets/src/mage/cards/h/HarrierNaga.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author ciaccona007
*/
-public class HarrierNaga extends CardImpl {
+public final class HarrierNaga extends CardImpl {
public HarrierNaga(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/Harrow.java b/Mage.Sets/src/mage/cards/h/Harrow.java
index 84b94e7e8b1..ad206ccaffd 100644
--- a/Mage.Sets/src/mage/cards/h/Harrow.java
+++ b/Mage.Sets/src/mage/cards/h/Harrow.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Viserion
*/
-public class Harrow extends CardImpl {
+public final class Harrow extends CardImpl {
public Harrow(UUID ownerId, CardSetInfo setInfo){
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
@@ -55,7 +55,7 @@ public class Harrow extends CardImpl {
this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("land"))));
// Search your library for up to two basic land cards and put them onto the battlefield. Then shuffle your library.
- TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND);
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(target, false, Outcome.PutLandInPlay));
}
diff --git a/Mage.Sets/src/mage/cards/h/HarrowingJourney.java b/Mage.Sets/src/mage/cards/h/HarrowingJourney.java
index 0bf8043a411..b26a7e148dc 100644
--- a/Mage.Sets/src/mage/cards/h/HarrowingJourney.java
+++ b/Mage.Sets/src/mage/cards/h/HarrowingJourney.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class HarrowingJourney extends CardImpl {
+public final class HarrowingJourney extends CardImpl {
public HarrowingJourney(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HarshDeceiver.java b/Mage.Sets/src/mage/cards/h/HarshDeceiver.java
index af887e3e3b8..37b3e2273b1 100644
--- a/Mage.Sets/src/mage/cards/h/HarshDeceiver.java
+++ b/Mage.Sets/src/mage/cards/h/HarshDeceiver.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author LevelX
*/
-public class HarshDeceiver extends CardImpl {
+public final class HarshDeceiver extends CardImpl {
public HarshDeceiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HarshJudgment.java b/Mage.Sets/src/mage/cards/h/HarshJudgment.java
index 45039ec2e47..293e06de99a 100755
--- a/Mage.Sets/src/mage/cards/h/HarshJudgment.java
+++ b/Mage.Sets/src/mage/cards/h/HarshJudgment.java
@@ -52,7 +52,7 @@ import mage.target.TargetPlayer;
*
* @author brikr
*/
-public class HarshJudgment extends CardImpl {
+public final class HarshJudgment extends CardImpl {
public HarshJudgment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HarshJustice.java b/Mage.Sets/src/mage/cards/h/HarshJustice.java
index bfbf9c70af7..44f6afd03e6 100644
--- a/Mage.Sets/src/mage/cards/h/HarshJustice.java
+++ b/Mage.Sets/src/mage/cards/h/HarshJustice.java
@@ -57,7 +57,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author LevelX2 & L_J
*/
-public class HarshJustice extends CardImpl {
+public final class HarshJustice extends CardImpl {
public HarshJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HarshMentor.java b/Mage.Sets/src/mage/cards/h/HarshMentor.java
index 5deb5e80ad0..240a8e4c0f5 100644
--- a/Mage.Sets/src/mage/cards/h/HarshMentor.java
+++ b/Mage.Sets/src/mage/cards/h/HarshMentor.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class HarshMentor extends CardImpl {
+public final class HarshMentor extends CardImpl {
public HarshMentor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HarshMercy.java b/Mage.Sets/src/mage/cards/h/HarshMercy.java
index 3c3a2ba95c3..cc64e56eb94 100644
--- a/Mage.Sets/src/mage/cards/h/HarshMercy.java
+++ b/Mage.Sets/src/mage/cards/h/HarshMercy.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author pcasaretto
*/
-public class HarshMercy extends CardImpl {
+public final class HarshMercy extends CardImpl {
public HarshMercy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HarshScrutiny.java b/Mage.Sets/src/mage/cards/h/HarshScrutiny.java
index 1a24b144528..22dc9a44823 100644
--- a/Mage.Sets/src/mage/cards/h/HarshScrutiny.java
+++ b/Mage.Sets/src/mage/cards/h/HarshScrutiny.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class HarshScrutiny extends CardImpl {
+public final class HarshScrutiny extends CardImpl {
public HarshScrutiny(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HarshSustenance.java b/Mage.Sets/src/mage/cards/h/HarshSustenance.java
index d3637d9e159..c1b311a40b7 100644
--- a/Mage.Sets/src/mage/cards/h/HarshSustenance.java
+++ b/Mage.Sets/src/mage/cards/h/HarshSustenance.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class HarshSustenance extends CardImpl {
+public final class HarshSustenance extends CardImpl {
public HarshSustenance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HaruOnna.java b/Mage.Sets/src/mage/cards/h/HaruOnna.java
index c5a8ab1469e..49f7a02c3cb 100644
--- a/Mage.Sets/src/mage/cards/h/HaruOnna.java
+++ b/Mage.Sets/src/mage/cards/h/HaruOnna.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class HaruOnna extends CardImpl {
+public final class HaruOnna extends CardImpl {
public HaruOnna(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HarvestGwyllion.java b/Mage.Sets/src/mage/cards/h/HarvestGwyllion.java
index 080bb56c89e..4aa6e8b62f0 100644
--- a/Mage.Sets/src/mage/cards/h/HarvestGwyllion.java
+++ b/Mage.Sets/src/mage/cards/h/HarvestGwyllion.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HarvestGwyllion extends CardImpl {
+public final class HarvestGwyllion extends CardImpl {
public HarvestGwyllion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W/B}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/h/HarvestHand.java b/Mage.Sets/src/mage/cards/h/HarvestHand.java
index db847383447..15376714143 100644
--- a/Mage.Sets/src/mage/cards/h/HarvestHand.java
+++ b/Mage.Sets/src/mage/cards/h/HarvestHand.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author halljared
*/
-public class HarvestHand extends CardImpl {
+public final class HarvestHand extends CardImpl {
public HarvestHand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HarvestMage.java b/Mage.Sets/src/mage/cards/h/HarvestMage.java
index be48f3dd415..56b6d887d93 100644
--- a/Mage.Sets/src/mage/cards/h/HarvestMage.java
+++ b/Mage.Sets/src/mage/cards/h/HarvestMage.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCardInHand;
*
* @author L_J
*/
-public class HarvestMage extends CardImpl {
+public final class HarvestMage extends CardImpl {
public HarvestMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HarvestPyre.java b/Mage.Sets/src/mage/cards/h/HarvestPyre.java
index 927bc769a91..92828ef3676 100644
--- a/Mage.Sets/src/mage/cards/h/HarvestPyre.java
+++ b/Mage.Sets/src/mage/cards/h/HarvestPyre.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward
*/
-public class HarvestPyre extends CardImpl {
+public final class HarvestPyre extends CardImpl {
public HarvestPyre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HarvestSeason.java b/Mage.Sets/src/mage/cards/h/HarvestSeason.java
index 696bc1b3562..274a7607fdc 100644
--- a/Mage.Sets/src/mage/cards/h/HarvestSeason.java
+++ b/Mage.Sets/src/mage/cards/h/HarvestSeason.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Styxo
*/
-public class HarvestSeason extends CardImpl {
+public final class HarvestSeason extends CardImpl {
public HarvestSeason(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
@@ -98,7 +98,7 @@ class HarvestSeasonEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
- TargetCardInLibrary target = new TargetCardInLibrary(0, new PermanentsOnBattlefieldCount(filter).calculate(game, source, this), StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, new PermanentsOnBattlefieldCount(filter).calculate(game, source, this), StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, game)) {
controller.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null);
}
diff --git a/Mage.Sets/src/mage/cards/h/HarvestWurm.java b/Mage.Sets/src/mage/cards/h/HarvestWurm.java
index aa7e3ef1d55..a5cb16c80e2 100644
--- a/Mage.Sets/src/mage/cards/h/HarvestWurm.java
+++ b/Mage.Sets/src/mage/cards/h/HarvestWurm.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author markedagain
*/
-public class HarvestWurm extends CardImpl {
+public final class HarvestWurm extends CardImpl {
public HarvestWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
@@ -53,7 +53,7 @@ public class HarvestWurm extends CardImpl {
this.toughness = new MageInt(2);
// When Harvest Wurm enters the battlefield, sacrifice it unless you return a basic land card from your graveyard to your hand.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new ReturnToHandFromGraveyardCost(new TargetCardInYourGraveyard(StaticFilters.FILTER_BASIC_LAND_CARD)))));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new ReturnToHandFromGraveyardCost(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_BASIC_LAND)))));
}
public HarvestWurm(final HarvestWurm card) {
diff --git a/Mage.Sets/src/mage/cards/h/HarvesterDruid.java b/Mage.Sets/src/mage/cards/h/HarvesterDruid.java
index 1e6574df23a..8a2d2e9228c 100644
--- a/Mage.Sets/src/mage/cards/h/HarvesterDruid.java
+++ b/Mage.Sets/src/mage/cards/h/HarvesterDruid.java
@@ -40,7 +40,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class HarvesterDruid extends CardImpl {
+public final class HarvesterDruid extends CardImpl {
public HarvesterDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HarvesterOfSouls.java b/Mage.Sets/src/mage/cards/h/HarvesterOfSouls.java
index 6dcceed3a99..ca86eee6bec 100644
--- a/Mage.Sets/src/mage/cards/h/HarvesterOfSouls.java
+++ b/Mage.Sets/src/mage/cards/h/HarvesterOfSouls.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
/**
* @author noxx
*/
-public class HarvesterOfSouls extends CardImpl {
+public final class HarvesterOfSouls extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/h/HarvesterTroll.java b/Mage.Sets/src/mage/cards/h/HarvesterTroll.java
index ad4414ef64c..c033efb550f 100644
--- a/Mage.Sets/src/mage/cards/h/HarvesterTroll.java
+++ b/Mage.Sets/src/mage/cards/h/HarvesterTroll.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class HarvesterTroll extends CardImpl {
+public final class HarvesterTroll extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a creature or land");
diff --git a/Mage.Sets/src/mage/cards/h/HarvestguardAlseids.java b/Mage.Sets/src/mage/cards/h/HarvestguardAlseids.java
index 20cc6ec90db..cb3e571bf46 100644
--- a/Mage.Sets/src/mage/cards/h/HarvestguardAlseids.java
+++ b/Mage.Sets/src/mage/cards/h/HarvestguardAlseids.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HarvestguardAlseids extends CardImpl {
+public final class HarvestguardAlseids extends CardImpl {
public HarvestguardAlseids(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HashepOasis.java b/Mage.Sets/src/mage/cards/h/HashepOasis.java
index 5d4918ce9c7..8430bd5b849 100644
--- a/Mage.Sets/src/mage/cards/h/HashepOasis.java
+++ b/Mage.Sets/src/mage/cards/h/HashepOasis.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ciaccona007
*/
-public class HashepOasis extends CardImpl {
+public final class HashepOasis extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Desert");
diff --git a/Mage.Sets/src/mage/cards/h/HasranOgress.java b/Mage.Sets/src/mage/cards/h/HasranOgress.java
index d0669f18e78..08a5dab9a20 100644
--- a/Mage.Sets/src/mage/cards/h/HasranOgress.java
+++ b/Mage.Sets/src/mage/cards/h/HasranOgress.java
@@ -47,7 +47,7 @@ import mage.players.Player;
* @author LoneFox
*/
-public class HasranOgress extends CardImpl {
+public final class HasranOgress extends CardImpl {
public HasranOgress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HatchetBully.java b/Mage.Sets/src/mage/cards/h/HatchetBully.java
index 155ff22eafa..1d0bcc5be39 100644
--- a/Mage.Sets/src/mage/cards/h/HatchetBully.java
+++ b/Mage.Sets/src/mage/cards/h/HatchetBully.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class HatchetBully extends CardImpl {
+public final class HatchetBully extends CardImpl {
public HatchetBully(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HatchingPlans.java b/Mage.Sets/src/mage/cards/h/HatchingPlans.java
index c7ff10983eb..68c2c23bd38 100644
--- a/Mage.Sets/src/mage/cards/h/HatchingPlans.java
+++ b/Mage.Sets/src/mage/cards/h/HatchingPlans.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class HatchingPlans extends CardImpl {
+public final class HatchingPlans extends CardImpl {
public HatchingPlans (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HateWeaver.java b/Mage.Sets/src/mage/cards/h/HateWeaver.java
index f584155e60e..2edb0d876aa 100644
--- a/Mage.Sets/src/mage/cards/h/HateWeaver.java
+++ b/Mage.Sets/src/mage/cards/h/HateWeaver.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class HateWeaver extends CardImpl {
+public final class HateWeaver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue or red creature");
diff --git a/Mage.Sets/src/mage/cards/h/Hateflayer.java b/Mage.Sets/src/mage/cards/h/Hateflayer.java
index edfe0240a8c..8f571696a16 100644
--- a/Mage.Sets/src/mage/cards/h/Hateflayer.java
+++ b/Mage.Sets/src/mage/cards/h/Hateflayer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class Hateflayer extends CardImpl {
+public final class Hateflayer extends CardImpl {
public Hateflayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/Hatred.java b/Mage.Sets/src/mage/cards/h/Hatred.java
index 69e421a21ae..2bb5918db4e 100644
--- a/Mage.Sets/src/mage/cards/h/Hatred.java
+++ b/Mage.Sets/src/mage/cards/h/Hatred.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author magenoxx
*/
-public class Hatred extends CardImpl {
+public final class Hatred extends CardImpl {
public Hatred(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HauntedAngel.java b/Mage.Sets/src/mage/cards/h/HauntedAngel.java
index 60a2810b31c..2255c54318a 100644
--- a/Mage.Sets/src/mage/cards/h/HauntedAngel.java
+++ b/Mage.Sets/src/mage/cards/h/HauntedAngel.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.HauntedAngelToken;
* @author LoneFox
*
*/
-public class HauntedAngel extends CardImpl {
+public final class HauntedAngel extends CardImpl {
public HauntedAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HauntedCadaver.java b/Mage.Sets/src/mage/cards/h/HauntedCadaver.java
index 0699c215451..f6091efa20f 100644
--- a/Mage.Sets/src/mage/cards/h/HauntedCadaver.java
+++ b/Mage.Sets/src/mage/cards/h/HauntedCadaver.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author Temba21
*/
-public class HauntedCadaver extends CardImpl {
+public final class HauntedCadaver extends CardImpl {
public HauntedCadaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HauntedCloak.java b/Mage.Sets/src/mage/cards/h/HauntedCloak.java
index a938b37a2a4..fd487a3e422 100644
--- a/Mage.Sets/src/mage/cards/h/HauntedCloak.java
+++ b/Mage.Sets/src/mage/cards/h/HauntedCloak.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class HauntedCloak extends CardImpl {
+public final class HauntedCloak extends CardImpl {
public HauntedCloak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HauntedCrossroads.java b/Mage.Sets/src/mage/cards/h/HauntedCrossroads.java
index be51ef916d3..b7f00c59f97 100644
--- a/Mage.Sets/src/mage/cards/h/HauntedCrossroads.java
+++ b/Mage.Sets/src/mage/cards/h/HauntedCrossroads.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class HauntedCrossroads extends CardImpl {
+public final class HauntedCrossroads extends CardImpl {
public HauntedCrossroads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HauntedDead.java b/Mage.Sets/src/mage/cards/h/HauntedDead.java
index 8e4e2abf511..99b2f1219f1 100644
--- a/Mage.Sets/src/mage/cards/h/HauntedDead.java
+++ b/Mage.Sets/src/mage/cards/h/HauntedDead.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class HauntedDead extends CardImpl {
+public final class HauntedDead extends CardImpl {
public HauntedDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HauntedFengraf.java b/Mage.Sets/src/mage/cards/h/HauntedFengraf.java
index a3b763024e5..ca29afa3186 100644
--- a/Mage.Sets/src/mage/cards/h/HauntedFengraf.java
+++ b/Mage.Sets/src/mage/cards/h/HauntedFengraf.java
@@ -50,7 +50,7 @@ import mage.util.RandomUtil;
*
* @author North
*/
-public class HauntedFengraf extends CardImpl {
+public final class HauntedFengraf extends CardImpl {
public HauntedFengraf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HauntedGuardian.java b/Mage.Sets/src/mage/cards/h/HauntedGuardian.java
index 80cab5d9092..19f3b60b52d 100644
--- a/Mage.Sets/src/mage/cards/h/HauntedGuardian.java
+++ b/Mage.Sets/src/mage/cards/h/HauntedGuardian.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HauntedGuardian extends CardImpl {
+public final class HauntedGuardian extends CardImpl {
public HauntedGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/h/HauntedPlateMail.java b/Mage.Sets/src/mage/cards/h/HauntedPlateMail.java
index 53537ff439c..6e60da53fa4 100644
--- a/Mage.Sets/src/mage/cards/h/HauntedPlateMail.java
+++ b/Mage.Sets/src/mage/cards/h/HauntedPlateMail.java
@@ -53,7 +53,7 @@ import mage.game.permanent.token.Token;
*
* @author Plopman
*/
-public class HauntedPlateMail extends CardImpl {
+public final class HauntedPlateMail extends CardImpl {
public HauntedPlateMail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HaunterOfNightveil.java b/Mage.Sets/src/mage/cards/h/HaunterOfNightveil.java
index c026173052a..d21da7dd7ad 100644
--- a/Mage.Sets/src/mage/cards/h/HaunterOfNightveil.java
+++ b/Mage.Sets/src/mage/cards/h/HaunterOfNightveil.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HaunterOfNightveil extends CardImpl {
+public final class HaunterOfNightveil extends CardImpl {
public HaunterOfNightveil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HauntingEchoes.java b/Mage.Sets/src/mage/cards/h/HauntingEchoes.java
index 1273169ae7a..00b6ceb860b 100644
--- a/Mage.Sets/src/mage/cards/h/HauntingEchoes.java
+++ b/Mage.Sets/src/mage/cards/h/HauntingEchoes.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class HauntingEchoes extends CardImpl {
+public final class HauntingEchoes extends CardImpl {
public HauntingEchoes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}");
@@ -86,7 +86,7 @@ class HauntingEchoesEffect extends OneShotEffect {
Player targetPlayer = game.getPlayer(source.getFirstTarget());
if (targetPlayer != null) {
for (Card card : targetPlayer.getGraveyard().getCards(game)) {
- if (!StaticFilters.FILTER_BASIC_LAND_CARD.match(card, game)) {
+ if (!StaticFilters.FILTER_CARD_BASIC_LAND.match(card, game)) {
card.moveToExile(null, "", source.getSourceId(), game);
FilterCard filterCard = new FilterCard("cards named " + card.getName());
diff --git a/Mage.Sets/src/mage/cards/h/HauntingHymn.java b/Mage.Sets/src/mage/cards/h/HauntingHymn.java
index bbf035eab76..5b720fada78 100644
--- a/Mage.Sets/src/mage/cards/h/HauntingHymn.java
+++ b/Mage.Sets/src/mage/cards/h/HauntingHymn.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author nigelzor
*/
-public class HauntingHymn extends CardImpl {
+public final class HauntingHymn extends CardImpl {
public HauntingHymn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HauntingMisery.java b/Mage.Sets/src/mage/cards/h/HauntingMisery.java
index 814211fbd1e..1999c097370 100644
--- a/Mage.Sets/src/mage/cards/h/HauntingMisery.java
+++ b/Mage.Sets/src/mage/cards/h/HauntingMisery.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author markedagain
*/
-public class HauntingMisery extends CardImpl {
+public final class HauntingMisery extends CardImpl {
public HauntingMisery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HauntingWind.java b/Mage.Sets/src/mage/cards/h/HauntingWind.java
index dca80cded44..19697f2e612 100644
--- a/Mage.Sets/src/mage/cards/h/HauntingWind.java
+++ b/Mage.Sets/src/mage/cards/h/HauntingWind.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class HauntingWind extends CardImpl {
+public final class HauntingWind extends CardImpl {
public HauntingWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java b/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java
index c7f440eea7c..84658b331ab 100644
--- a/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java
+++ b/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java
@@ -59,7 +59,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class HavenOfTheSpiritDragon extends CardImpl {
+public final class HavenOfTheSpiritDragon extends CardImpl {
private static final FilterCard filter = new FilterCard("Dragon creature card or Ugin planeswalker card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/h/HavengulLich.java b/Mage.Sets/src/mage/cards/h/HavengulLich.java
index 9bfe17d21e2..6d046f28ebb 100644
--- a/Mage.Sets/src/mage/cards/h/HavengulLich.java
+++ b/Mage.Sets/src/mage/cards/h/HavengulLich.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author BetaSteward
*/
-public class HavengulLich extends CardImpl {
+public final class HavengulLich extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("creature card in a graveyard");
diff --git a/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java b/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java
index 74b68560d06..0e58d88a53d 100644
--- a/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java
+++ b/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class HavengulRunebinder extends CardImpl {
+public final class HavengulRunebinder extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a creature card from your graveyard");
private static final FilterControlledCreaturePermanent filterPermanent = new FilterControlledCreaturePermanent("Zombie creature you control");
diff --git a/Mage.Sets/src/mage/cards/h/HavengulSkaab.java b/Mage.Sets/src/mage/cards/h/HavengulSkaab.java
index cba977e67b1..0a8c1b7568d 100644
--- a/Mage.Sets/src/mage/cards/h/HavengulSkaab.java
+++ b/Mage.Sets/src/mage/cards/h/HavengulSkaab.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author noxx
*/
-public class HavengulSkaab extends CardImpl {
+public final class HavengulSkaab extends CardImpl {
public HavengulSkaab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HavengulVampire.java b/Mage.Sets/src/mage/cards/h/HavengulVampire.java
index 2bc0c549ea1..c4f49a1edcb 100644
--- a/Mage.Sets/src/mage/cards/h/HavengulVampire.java
+++ b/Mage.Sets/src/mage/cards/h/HavengulVampire.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class HavengulVampire extends CardImpl {
+public final class HavengulVampire extends CardImpl {
public HavengulVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HavenwoodBattleground.java b/Mage.Sets/src/mage/cards/h/HavenwoodBattleground.java
index 6b16a8af80f..560ab204cf0 100644
--- a/Mage.Sets/src/mage/cards/h/HavenwoodBattleground.java
+++ b/Mage.Sets/src/mage/cards/h/HavenwoodBattleground.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class HavenwoodBattleground extends CardImpl {
+public final class HavenwoodBattleground extends CardImpl {
public HavenwoodBattleground(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HavenwoodWurm.java b/Mage.Sets/src/mage/cards/h/HavenwoodWurm.java
index 26e2d18b191..26080d1a2a0 100644
--- a/Mage.Sets/src/mage/cards/h/HavenwoodWurm.java
+++ b/Mage.Sets/src/mage/cards/h/HavenwoodWurm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class HavenwoodWurm extends CardImpl {
+public final class HavenwoodWurm extends CardImpl {
public HavenwoodWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/Havoc.java b/Mage.Sets/src/mage/cards/h/Havoc.java
index ebde6ccc746..bf4d400408d 100644
--- a/Mage.Sets/src/mage/cards/h/Havoc.java
+++ b/Mage.Sets/src/mage/cards/h/Havoc.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class Havoc extends CardImpl {
+public final class Havoc extends CardImpl {
private final static FilterSpell filter = new FilterSpell("a white spell");
diff --git a/Mage.Sets/src/mage/cards/h/HavocDemon.java b/Mage.Sets/src/mage/cards/h/HavocDemon.java
index c7fd339a415..9ef5d7f02f8 100644
--- a/Mage.Sets/src/mage/cards/h/HavocDemon.java
+++ b/Mage.Sets/src/mage/cards/h/HavocDemon.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class HavocDemon extends CardImpl {
+public final class HavocDemon extends CardImpl {
public HavocDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HavocFestival.java b/Mage.Sets/src/mage/cards/h/HavocFestival.java
index 89a77a9fa90..c0f848c5f0d 100644
--- a/Mage.Sets/src/mage/cards/h/HavocFestival.java
+++ b/Mage.Sets/src/mage/cards/h/HavocFestival.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HavocFestival extends CardImpl {
+public final class HavocFestival extends CardImpl {
public HavocFestival(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HavocSower.java b/Mage.Sets/src/mage/cards/h/HavocSower.java
index d06022831b1..dc7f3bc624d 100644
--- a/Mage.Sets/src/mage/cards/h/HavocSower.java
+++ b/Mage.Sets/src/mage/cards/h/HavocSower.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HavocSower extends CardImpl {
+public final class HavocSower extends CardImpl {
public HavocSower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HawkeaterMoth.java b/Mage.Sets/src/mage/cards/h/HawkeaterMoth.java
index a028644207e..976359ade5f 100644
--- a/Mage.Sets/src/mage/cards/h/HawkeaterMoth.java
+++ b/Mage.Sets/src/mage/cards/h/HawkeaterMoth.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class HawkeaterMoth extends CardImpl {
+public final class HawkeaterMoth extends CardImpl {
public HawkeaterMoth (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HazardTrooper.java b/Mage.Sets/src/mage/cards/h/HazardTrooper.java
index f6dad5883f0..c84b0f74d34 100644
--- a/Mage.Sets/src/mage/cards/h/HazardTrooper.java
+++ b/Mage.Sets/src/mage/cards/h/HazardTrooper.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class HazardTrooper extends CardImpl {
+public final class HazardTrooper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HazardousConditions.java b/Mage.Sets/src/mage/cards/h/HazardousConditions.java
index 38666e58193..a116f128db4 100644
--- a/Mage.Sets/src/mage/cards/h/HazardousConditions.java
+++ b/Mage.Sets/src/mage/cards/h/HazardousConditions.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author spjspj
*/
-public class HazardousConditions extends CardImpl {
+public final class HazardousConditions extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with no counter");
diff --git a/Mage.Sets/src/mage/cards/h/HazduhrTheAbbot.java b/Mage.Sets/src/mage/cards/h/HazduhrTheAbbot.java
index 0664483184f..4ea1043ebd4 100644
--- a/Mage.Sets/src/mage/cards/h/HazduhrTheAbbot.java
+++ b/Mage.Sets/src/mage/cards/h/HazduhrTheAbbot.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author TheElk801 & L_J
*/
-public class HazduhrTheAbbot extends CardImpl {
+public final class HazduhrTheAbbot extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("white creature you control");
diff --git a/Mage.Sets/src/mage/cards/h/HazeFrog.java b/Mage.Sets/src/mage/cards/h/HazeFrog.java
index fdffcdb4b7e..825460d08d3 100644
--- a/Mage.Sets/src/mage/cards/h/HazeFrog.java
+++ b/Mage.Sets/src/mage/cards/h/HazeFrog.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class HazeFrog extends CardImpl {
+public final class HazeFrog extends CardImpl {
public HazeFrog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HazeOfPollen.java b/Mage.Sets/src/mage/cards/h/HazeOfPollen.java
index a24500e5c56..824080a1f1c 100644
--- a/Mage.Sets/src/mage/cards/h/HazeOfPollen.java
+++ b/Mage.Sets/src/mage/cards/h/HazeOfPollen.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class HazeOfPollen extends CardImpl {
+public final class HazeOfPollen extends CardImpl {
public HazeOfPollen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HazeOfRage.java b/Mage.Sets/src/mage/cards/h/HazeOfRage.java
index 93a5d385d71..1aac55b27eb 100644
--- a/Mage.Sets/src/mage/cards/h/HazeOfRage.java
+++ b/Mage.Sets/src/mage/cards/h/HazeOfRage.java
@@ -40,7 +40,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class HazeOfRage extends CardImpl {
+public final class HazeOfRage extends CardImpl {
public HazeOfRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HazeriderDrake.java b/Mage.Sets/src/mage/cards/h/HazeriderDrake.java
index d047b6e7e0b..610fcea4c51 100644
--- a/Mage.Sets/src/mage/cards/h/HazeriderDrake.java
+++ b/Mage.Sets/src/mage/cards/h/HazeriderDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class HazeriderDrake extends CardImpl {
+public final class HazeriderDrake extends CardImpl {
public HazeriderDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HazezonTamar.java b/Mage.Sets/src/mage/cards/h/HazezonTamar.java
index b51dea533fc..a1daeda4487 100644
--- a/Mage.Sets/src/mage/cards/h/HazezonTamar.java
+++ b/Mage.Sets/src/mage/cards/h/HazezonTamar.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HazezonTamar extends CardImpl {
+public final class HazezonTamar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Sand Warriors");
diff --git a/Mage.Sets/src/mage/cards/h/HazoretTheFervent.java b/Mage.Sets/src/mage/cards/h/HazoretTheFervent.java
index c08e6dd3834..95f5f0e7656 100644
--- a/Mage.Sets/src/mage/cards/h/HazoretTheFervent.java
+++ b/Mage.Sets/src/mage/cards/h/HazoretTheFervent.java
@@ -52,7 +52,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class HazoretTheFervent extends CardImpl {
+public final class HazoretTheFervent extends CardImpl {
public HazoretTheFervent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HazoretsFavor.java b/Mage.Sets/src/mage/cards/h/HazoretsFavor.java
index 38743174365..98a6093cbe4 100644
--- a/Mage.Sets/src/mage/cards/h/HazoretsFavor.java
+++ b/Mage.Sets/src/mage/cards/h/HazoretsFavor.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class HazoretsFavor extends CardImpl {
+public final class HazoretsFavor extends CardImpl {
public HazoretsFavor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HazoretsMonument.java b/Mage.Sets/src/mage/cards/h/HazoretsMonument.java
index 5ecd04e9569..2aa74be7e45 100644
--- a/Mage.Sets/src/mage/cards/h/HazoretsMonument.java
+++ b/Mage.Sets/src/mage/cards/h/HazoretsMonument.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class HazoretsMonument extends CardImpl {
+public final class HazoretsMonument extends CardImpl {
private static final FilterCard filter = new FilterCard("Red creature spells");
private static final FilterSpell filter2 = new FilterSpell("a creature spell");
diff --git a/Mage.Sets/src/mage/cards/h/HazoretsUndyingFury.java b/Mage.Sets/src/mage/cards/h/HazoretsUndyingFury.java
index d8a68cf19d0..cf51bd1b9a2 100644
--- a/Mage.Sets/src/mage/cards/h/HazoretsUndyingFury.java
+++ b/Mage.Sets/src/mage/cards/h/HazoretsUndyingFury.java
@@ -29,6 +29,7 @@ package mage.cards.h;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
@@ -57,7 +58,7 @@ import mage.target.TargetCard;
*
* @author ciaccona007
*/
-public class HazoretsUndyingFury extends CardImpl {
+public final class HazoretsUndyingFury extends CardImpl {
public HazoretsUndyingFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}{R}");
@@ -129,7 +130,7 @@ class HazoretsUndyingFuryEffect extends OneShotEffect {
if (controller.choose(Outcome.PlayForFree, cardsToCast, targetCard, game)) {
Card card = game.getCard(targetCard.getFirstTarget());
if (card != null) {
- if (controller.cast(card.getSpellAbility(), game, true)) {
+ if (controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
cardsToCast.remove(card);
} else {
game.informPlayer(controller, "You're not able to cast " + card.getIdName() + " or you canceled the casting.");
diff --git a/Mage.Sets/src/mage/cards/h/HazyHomunculus.java b/Mage.Sets/src/mage/cards/h/HazyHomunculus.java
index 3bc28e3cf3b..a0c896976c0 100644
--- a/Mage.Sets/src/mage/cards/h/HazyHomunculus.java
+++ b/Mage.Sets/src/mage/cards/h/HazyHomunculus.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author North
*/
-public class HazyHomunculus extends CardImpl {
+public final class HazyHomunculus extends CardImpl {
private static final FilterPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/h/HeWhoHungers.java b/Mage.Sets/src/mage/cards/h/HeWhoHungers.java
index 1ff5cf2e8d7..db117eb4626 100644
--- a/Mage.Sets/src/mage/cards/h/HeWhoHungers.java
+++ b/Mage.Sets/src/mage/cards/h/HeWhoHungers.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetOpponent;
/**
* @author LevelX
*/
-public class HeWhoHungers extends CardImpl {
+public final class HeWhoHungers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Spirit");
diff --git a/Mage.Sets/src/mage/cards/h/HeadGames.java b/Mage.Sets/src/mage/cards/h/HeadGames.java
index 0d1b5f7cce6..1d96e39cf8a 100644
--- a/Mage.Sets/src/mage/cards/h/HeadGames.java
+++ b/Mage.Sets/src/mage/cards/h/HeadGames.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetOpponent;
*
* @author Eirkei
*/
-public class HeadGames extends CardImpl {
+public final class HeadGames extends CardImpl {
public HeadGames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HeadHunting.java b/Mage.Sets/src/mage/cards/h/HeadHunting.java
index fbf076891e2..c21d961074d 100644
--- a/Mage.Sets/src/mage/cards/h/HeadHunting.java
+++ b/Mage.Sets/src/mage/cards/h/HeadHunting.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class HeadHunting extends CardImpl {
+public final class HeadHunting extends CardImpl {
public HeadHunting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/Headhunter.java b/Mage.Sets/src/mage/cards/h/Headhunter.java
index c8197402810..a69f6c3371f 100644
--- a/Mage.Sets/src/mage/cards/h/Headhunter.java
+++ b/Mage.Sets/src/mage/cards/h/Headhunter.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Headhunter extends CardImpl {
+public final class Headhunter extends CardImpl {
public Headhunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HeadlessHorseman.java b/Mage.Sets/src/mage/cards/h/HeadlessHorseman.java
index a68dec8c00c..e1883da9251 100644
--- a/Mage.Sets/src/mage/cards/h/HeadlessHorseman.java
+++ b/Mage.Sets/src/mage/cards/h/HeadlessHorseman.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HeadlessHorseman extends CardImpl {
+public final class HeadlessHorseman extends CardImpl {
public HeadlessHorseman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HeadlessSkaab.java b/Mage.Sets/src/mage/cards/h/HeadlessSkaab.java
index 539d4293f1c..92ef4230e70 100644
--- a/Mage.Sets/src/mage/cards/h/HeadlessSkaab.java
+++ b/Mage.Sets/src/mage/cards/h/HeadlessSkaab.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class HeadlessSkaab extends CardImpl {
+public final class HeadlessSkaab extends CardImpl {
public HeadlessSkaab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HeadlongRush.java b/Mage.Sets/src/mage/cards/h/HeadlongRush.java
index c762b13a2a4..d3e57202811 100644
--- a/Mage.Sets/src/mage/cards/h/HeadlongRush.java
+++ b/Mage.Sets/src/mage/cards/h/HeadlongRush.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author TheElk801
*/
-public class HeadlongRush extends CardImpl {
+public final class HeadlongRush extends CardImpl {
public HeadlongRush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/Headstone.java b/Mage.Sets/src/mage/cards/h/Headstone.java
index 6407c869d06..8a380d33d6a 100644
--- a/Mage.Sets/src/mage/cards/h/Headstone.java
+++ b/Mage.Sets/src/mage/cards/h/Headstone.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class Headstone extends CardImpl {
+public final class Headstone extends CardImpl {
public Headstone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HeadstrongBrute.java b/Mage.Sets/src/mage/cards/h/HeadstrongBrute.java
index c70577694a8..ee1f4079609 100644
--- a/Mage.Sets/src/mage/cards/h/HeadstrongBrute.java
+++ b/Mage.Sets/src/mage/cards/h/HeadstrongBrute.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author TheElk801
*/
-public class HeadstrongBrute extends CardImpl {
+public final class HeadstrongBrute extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Pirate");
diff --git a/Mage.Sets/src/mage/cards/h/HeadwaterSentries.java b/Mage.Sets/src/mage/cards/h/HeadwaterSentries.java
index 2d75bd73c86..34fd9c3c88b 100644
--- a/Mage.Sets/src/mage/cards/h/HeadwaterSentries.java
+++ b/Mage.Sets/src/mage/cards/h/HeadwaterSentries.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author TheElk801
*/
-public class HeadwaterSentries extends CardImpl {
+public final class HeadwaterSentries extends CardImpl {
public HeadwaterSentries(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/Heal.java b/Mage.Sets/src/mage/cards/h/Heal.java
index a109589c363..c58999c335a 100644
--- a/Mage.Sets/src/mage/cards/h/Heal.java
+++ b/Mage.Sets/src/mage/cards/h/Heal.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class Heal extends CardImpl {
+public final class Heal extends CardImpl {
public Heal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HealTheScars.java b/Mage.Sets/src/mage/cards/h/HealTheScars.java
index 90a3d6d3e0f..d7c7a4a9073 100644
--- a/Mage.Sets/src/mage/cards/h/HealTheScars.java
+++ b/Mage.Sets/src/mage/cards/h/HealTheScars.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class HealTheScars extends CardImpl {
+public final class HealTheScars extends CardImpl {
public HealTheScars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HealerOfThePride.java b/Mage.Sets/src/mage/cards/h/HealerOfThePride.java
index 026611d152a..0c61cedf9ab 100644
--- a/Mage.Sets/src/mage/cards/h/HealerOfThePride.java
+++ b/Mage.Sets/src/mage/cards/h/HealerOfThePride.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class HealerOfThePride extends CardImpl {
+public final class HealerOfThePride extends CardImpl {
public HealerOfThePride(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HealersHeaddress.java b/Mage.Sets/src/mage/cards/h/HealersHeaddress.java
index 71d44772101..f97c392e085 100644
--- a/Mage.Sets/src/mage/cards/h/HealersHeaddress.java
+++ b/Mage.Sets/src/mage/cards/h/HealersHeaddress.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class HealersHeaddress extends CardImpl {
+public final class HealersHeaddress extends CardImpl {
public HealersHeaddress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/h/HealingGrace.java b/Mage.Sets/src/mage/cards/h/HealingGrace.java
index c6f603abddf..6f9cbcd2183 100644
--- a/Mage.Sets/src/mage/cards/h/HealingGrace.java
+++ b/Mage.Sets/src/mage/cards/h/HealingGrace.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author TheElk801
*/
-public class HealingGrace extends CardImpl {
+public final class HealingGrace extends CardImpl {
public HealingGrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HealingHands.java b/Mage.Sets/src/mage/cards/h/HealingHands.java
index f89458a4f24..c2a74963b0b 100644
--- a/Mage.Sets/src/mage/cards/h/HealingHands.java
+++ b/Mage.Sets/src/mage/cards/h/HealingHands.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Wehk
*/
-public class HealingHands extends CardImpl {
+public final class HealingHands extends CardImpl {
public HealingHands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HealingLeaves.java b/Mage.Sets/src/mage/cards/h/HealingLeaves.java
index 9cd1cad9b05..b47bfb8ad60 100644
--- a/Mage.Sets/src/mage/cards/h/HealingLeaves.java
+++ b/Mage.Sets/src/mage/cards/h/HealingLeaves.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class HealingLeaves extends CardImpl {
+public final class HealingLeaves extends CardImpl {
public HealingLeaves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HealingSalve.java b/Mage.Sets/src/mage/cards/h/HealingSalve.java
index d4e58af2966..ec96c180afc 100644
--- a/Mage.Sets/src/mage/cards/h/HealingSalve.java
+++ b/Mage.Sets/src/mage/cards/h/HealingSalve.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class HealingSalve extends CardImpl {
+public final class HealingSalve extends CardImpl {
public HealingSalve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeapDoll.java b/Mage.Sets/src/mage/cards/h/HeapDoll.java
index d7c713f81a3..9067b99d020 100644
--- a/Mage.Sets/src/mage/cards/h/HeapDoll.java
+++ b/Mage.Sets/src/mage/cards/h/HeapDoll.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author North
*/
-public class HeapDoll extends CardImpl {
+public final class HeapDoll extends CardImpl {
public HeapDoll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartOfBogardan.java b/Mage.Sets/src/mage/cards/h/HeartOfBogardan.java
index 6e6b211f358..23dadbe2377 100644
--- a/Mage.Sets/src/mage/cards/h/HeartOfBogardan.java
+++ b/Mage.Sets/src/mage/cards/h/HeartOfBogardan.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author emerald000 & L_J
*/
-public class HeartOfBogardan extends CardImpl {
+public final class HeartOfBogardan extends CardImpl {
public HeartOfBogardan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartOfKiran.java b/Mage.Sets/src/mage/cards/h/HeartOfKiran.java
index 0c51696f4cf..fee14051b20 100644
--- a/Mage.Sets/src/mage/cards/h/HeartOfKiran.java
+++ b/Mage.Sets/src/mage/cards/h/HeartOfKiran.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author JRHerlehy
*/
-public class HeartOfKiran extends CardImpl {
+public final class HeartOfKiran extends CardImpl {
public HeartOfKiran(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartOfLight.java b/Mage.Sets/src/mage/cards/h/HeartOfLight.java
index cbddc79849a..d68e59221f8 100644
--- a/Mage.Sets/src/mage/cards/h/HeartOfLight.java
+++ b/Mage.Sets/src/mage/cards/h/HeartOfLight.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX2
*/
-public class HeartOfLight extends CardImpl {
+public final class HeartOfLight extends CardImpl {
public HeartOfLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartOfRamos.java b/Mage.Sets/src/mage/cards/h/HeartOfRamos.java
index be69334bede..b4094f4a018 100644
--- a/Mage.Sets/src/mage/cards/h/HeartOfRamos.java
+++ b/Mage.Sets/src/mage/cards/h/HeartOfRamos.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Jgod
*/
-public class HeartOfRamos extends CardImpl {
+public final class HeartOfRamos extends CardImpl {
public HeartOfRamos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartOfYavimaya.java b/Mage.Sets/src/mage/cards/h/HeartOfYavimaya.java
index 4e1ff54cf9e..1732e13b710 100644
--- a/Mage.Sets/src/mage/cards/h/HeartOfYavimaya.java
+++ b/Mage.Sets/src/mage/cards/h/HeartOfYavimaya.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HeartOfYavimaya extends CardImpl {
+public final class HeartOfYavimaya extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/h/HeartPiercerBow.java b/Mage.Sets/src/mage/cards/h/HeartPiercerBow.java
index 3980aa45145..af3ab6d7524 100644
--- a/Mage.Sets/src/mage/cards/h/HeartPiercerBow.java
+++ b/Mage.Sets/src/mage/cards/h/HeartPiercerBow.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HeartPiercerBow extends CardImpl {
+public final class HeartPiercerBow extends CardImpl {
public HeartPiercerBow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartPiercerManticore.java b/Mage.Sets/src/mage/cards/h/HeartPiercerManticore.java
index 2a2967d9b61..db348bccf3f 100644
--- a/Mage.Sets/src/mage/cards/h/HeartPiercerManticore.java
+++ b/Mage.Sets/src/mage/cards/h/HeartPiercerManticore.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class HeartPiercerManticore extends CardImpl {
+public final class HeartPiercerManticore extends CardImpl {
public HeartPiercerManticore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartSliver.java b/Mage.Sets/src/mage/cards/h/HeartSliver.java
index 41f11e35c9b..bd98a2de8be 100644
--- a/Mage.Sets/src/mage/cards/h/HeartSliver.java
+++ b/Mage.Sets/src/mage/cards/h/HeartSliver.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class HeartSliver extends CardImpl {
+public final class HeartSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HeartWarden.java b/Mage.Sets/src/mage/cards/h/HeartWarden.java
index 1c0da7e3916..5472b866e94 100644
--- a/Mage.Sets/src/mage/cards/h/HeartWarden.java
+++ b/Mage.Sets/src/mage/cards/h/HeartWarden.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class HeartWarden extends CardImpl {
+public final class HeartWarden extends CardImpl {
public HeartWarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartbeatOfSpring.java b/Mage.Sets/src/mage/cards/h/HeartbeatOfSpring.java
index 82a298b4760..be9ddf239cb 100644
--- a/Mage.Sets/src/mage/cards/h/HeartbeatOfSpring.java
+++ b/Mage.Sets/src/mage/cards/h/HeartbeatOfSpring.java
@@ -40,13 +40,13 @@ import mage.filter.common.FilterLandPermanent;
*
* @author Loki
*/
-public class HeartbeatOfSpring extends CardImpl {
+public final class HeartbeatOfSpring extends CardImpl {
public HeartbeatOfSpring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
- // Whenever a player taps a land for mana, that player adds one mana to their mana pool of any type that land produced.
+ // Whenever a player taps a land for mana, that player adds one mana of any type that land produced.
this.addAbility(new TapForManaAllTriggeredManaAbility(
new AddManaOfAnyTypeProducedEffect(),
new FilterLandPermanent("a player taps a land"),
diff --git a/Mage.Sets/src/mage/cards/h/HearthCharm.java b/Mage.Sets/src/mage/cards/h/HearthCharm.java
index 30c1739d7ba..628e1db61ac 100644
--- a/Mage.Sets/src/mage/cards/h/HearthCharm.java
+++ b/Mage.Sets/src/mage/cards/h/HearthCharm.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class HearthCharm extends CardImpl {
+public final class HearthCharm extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("artifact creature");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("attacking creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HearthKami.java b/Mage.Sets/src/mage/cards/h/HearthKami.java
index 40d3cf2b6db..c822332630d 100644
--- a/Mage.Sets/src/mage/cards/h/HearthKami.java
+++ b/Mage.Sets/src/mage/cards/h/HearthKami.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class HearthKami extends CardImpl {
+public final class HearthKami extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact with converted mana cost X");
diff --git a/Mage.Sets/src/mage/cards/h/HearthcageGiant.java b/Mage.Sets/src/mage/cards/h/HearthcageGiant.java
index 9ed75757bb2..5bc06f21668 100644
--- a/Mage.Sets/src/mage/cards/h/HearthcageGiant.java
+++ b/Mage.Sets/src/mage/cards/h/HearthcageGiant.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class HearthcageGiant extends CardImpl {
+public final class HearthcageGiant extends CardImpl {
private static final FilterControlledPermanent filterElemental = new FilterControlledPermanent("Elemental");
private static final FilterCreaturePermanent filterGiant = new FilterCreaturePermanent("Giant");
diff --git a/Mage.Sets/src/mage/cards/h/HearthfireHobgoblin.java b/Mage.Sets/src/mage/cards/h/HearthfireHobgoblin.java
index f7a8f29c996..dd84af76808 100644
--- a/Mage.Sets/src/mage/cards/h/HearthfireHobgoblin.java
+++ b/Mage.Sets/src/mage/cards/h/HearthfireHobgoblin.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HearthfireHobgoblin extends CardImpl {
+public final class HearthfireHobgoblin extends CardImpl {
public HearthfireHobgoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/W}{R/W}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartlashCinder.java b/Mage.Sets/src/mage/cards/h/HeartlashCinder.java
index b6685e431de..eb01ab16991 100644
--- a/Mage.Sets/src/mage/cards/h/HeartlashCinder.java
+++ b/Mage.Sets/src/mage/cards/h/HeartlashCinder.java
@@ -52,7 +52,7 @@ import mage.game.Game;
* @author jeffwadsworth
*
*/
-public class HeartlashCinder extends CardImpl {
+public final class HeartlashCinder extends CardImpl {
public HeartlashCinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartlessHidetsugu.java b/Mage.Sets/src/mage/cards/h/HeartlessHidetsugu.java
index 901a50b6696..b52fcbdd069 100644
--- a/Mage.Sets/src/mage/cards/h/HeartlessHidetsugu.java
+++ b/Mage.Sets/src/mage/cards/h/HeartlessHidetsugu.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HeartlessHidetsugu extends CardImpl {
+public final class HeartlessHidetsugu extends CardImpl {
public HeartlessHidetsugu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartlessPillage.java b/Mage.Sets/src/mage/cards/h/HeartlessPillage.java
index bdf46a432b3..5a8b07373af 100644
--- a/Mage.Sets/src/mage/cards/h/HeartlessPillage.java
+++ b/Mage.Sets/src/mage/cards/h/HeartlessPillage.java
@@ -43,7 +43,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class HeartlessPillage extends CardImpl {
+public final class HeartlessPillage extends CardImpl {
public HeartlessPillage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartlessSummoning.java b/Mage.Sets/src/mage/cards/h/HeartlessSummoning.java
index cb6a402f02e..fde7de77647 100644
--- a/Mage.Sets/src/mage/cards/h/HeartlessSummoning.java
+++ b/Mage.Sets/src/mage/cards/h/HeartlessSummoning.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author BetaSteward
*/
-public class HeartlessSummoning extends CardImpl {
+public final class HeartlessSummoning extends CardImpl {
public HeartlessSummoning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/Heartmender.java b/Mage.Sets/src/mage/cards/h/Heartmender.java
index 1c3a6dda5a1..e8c3852cff6 100644
--- a/Mage.Sets/src/mage/cards/h/Heartmender.java
+++ b/Mage.Sets/src/mage/cards/h/Heartmender.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class Heartmender extends CardImpl {
+public final class Heartmender extends CardImpl {
public Heartmender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G/W}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/h/Heartseeker.java b/Mage.Sets/src/mage/cards/h/Heartseeker.java
index 498bccc1e0b..ae8a5ade337 100644
--- a/Mage.Sets/src/mage/cards/h/Heartseeker.java
+++ b/Mage.Sets/src/mage/cards/h/Heartseeker.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class Heartseeker extends CardImpl {
+public final class Heartseeker extends CardImpl {
public Heartseeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartstabberMosquito.java b/Mage.Sets/src/mage/cards/h/HeartstabberMosquito.java
index 4575eec3daa..e2891b5c7bc 100644
--- a/Mage.Sets/src/mage/cards/h/HeartstabberMosquito.java
+++ b/Mage.Sets/src/mage/cards/h/HeartstabberMosquito.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class HeartstabberMosquito extends CardImpl {
+public final class HeartstabberMosquito extends CardImpl {
public HeartstabberMosquito(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/Heartstone.java b/Mage.Sets/src/mage/cards/h/Heartstone.java
index ee67ca37989..b490d05b68b 100644
--- a/Mage.Sets/src/mage/cards/h/Heartstone.java
+++ b/Mage.Sets/src/mage/cards/h/Heartstone.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author pcasaretto_at_gmail.com
*/
-public class Heartstone extends CardImpl {
+public final class Heartstone extends CardImpl {
public Heartstone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartwoodDryad.java b/Mage.Sets/src/mage/cards/h/HeartwoodDryad.java
index 50e42752e62..f0060cc15de 100644
--- a/Mage.Sets/src/mage/cards/h/HeartwoodDryad.java
+++ b/Mage.Sets/src/mage/cards/h/HeartwoodDryad.java
@@ -46,7 +46,7 @@ import mage.game.Game;
*
* @author fireshoes
*/
-public class HeartwoodDryad extends CardImpl {
+public final class HeartwoodDryad extends CardImpl {
public HeartwoodDryad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartwoodGiant.java b/Mage.Sets/src/mage/cards/h/HeartwoodGiant.java
index f17c6057242..851325ddad0 100644
--- a/Mage.Sets/src/mage/cards/h/HeartwoodGiant.java
+++ b/Mage.Sets/src/mage/cards/h/HeartwoodGiant.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class HeartwoodGiant extends CardImpl {
+public final class HeartwoodGiant extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/h/HeartwoodShard.java b/Mage.Sets/src/mage/cards/h/HeartwoodShard.java
index 1639e752fcf..cf1a84f79f0 100644
--- a/Mage.Sets/src/mage/cards/h/HeartwoodShard.java
+++ b/Mage.Sets/src/mage/cards/h/HeartwoodShard.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class HeartwoodShard extends CardImpl {
+public final class HeartwoodShard extends CardImpl {
public HeartwoodShard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartwoodStoryteller.java b/Mage.Sets/src/mage/cards/h/HeartwoodStoryteller.java
index 3803b02b64c..dec5417c110 100644
--- a/Mage.Sets/src/mage/cards/h/HeartwoodStoryteller.java
+++ b/Mage.Sets/src/mage/cards/h/HeartwoodStoryteller.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class HeartwoodStoryteller extends CardImpl {
+public final class HeartwoodStoryteller extends CardImpl {
public HeartwoodStoryteller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HeartwoodTreefolk.java b/Mage.Sets/src/mage/cards/h/HeartwoodTreefolk.java
index 3078b7d745e..bf47d379790 100644
--- a/Mage.Sets/src/mage/cards/h/HeartwoodTreefolk.java
+++ b/Mage.Sets/src/mage/cards/h/HeartwoodTreefolk.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HeartwoodTreefolk extends CardImpl {
+public final class HeartwoodTreefolk extends CardImpl {
public HeartwoodTreefolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HeatOfBattle.java b/Mage.Sets/src/mage/cards/h/HeatOfBattle.java
index 20367069bd0..30f540b9ddf 100644
--- a/Mage.Sets/src/mage/cards/h/HeatOfBattle.java
+++ b/Mage.Sets/src/mage/cards/h/HeatOfBattle.java
@@ -12,7 +12,7 @@ import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.target.targetpointer.FixedTarget;
-public class HeatOfBattle extends CardImpl {
+public final class HeatOfBattle extends CardImpl {
public HeatOfBattle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HeatRay.java b/Mage.Sets/src/mage/cards/h/HeatRay.java
index 8c40108b82d..55e4f8ccda6 100644
--- a/Mage.Sets/src/mage/cards/h/HeatRay.java
+++ b/Mage.Sets/src/mage/cards/h/HeatRay.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class HeatRay extends CardImpl {
+public final class HeatRay extends CardImpl {
public HeatRay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HeatShimmer.java b/Mage.Sets/src/mage/cards/h/HeatShimmer.java
index 80fb54d1090..25bc90ce37f 100644
--- a/Mage.Sets/src/mage/cards/h/HeatShimmer.java
+++ b/Mage.Sets/src/mage/cards/h/HeatShimmer.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class HeatShimmer extends CardImpl {
+public final class HeatShimmer extends CardImpl {
public HeatShimmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HeatStroke.java b/Mage.Sets/src/mage/cards/h/HeatStroke.java
index 5cefc5f7753..50d11e7885e 100644
--- a/Mage.Sets/src/mage/cards/h/HeatStroke.java
+++ b/Mage.Sets/src/mage/cards/h/HeatStroke.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.BlockingPredicate;
/**
* @author dustinroepsch
*/
-public class HeatStroke extends CardImpl {
+public final class HeatStroke extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/h/HeavenEarth.java b/Mage.Sets/src/mage/cards/h/HeavenEarth.java
index 6fd3a88d329..86dfdf57f59 100644
--- a/Mage.Sets/src/mage/cards/h/HeavenEarth.java
+++ b/Mage.Sets/src/mage/cards/h/HeavenEarth.java
@@ -18,7 +18,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author Styxo
*/
-public class HeavenEarth extends SplitCard {
+public final class HeavenEarth extends SplitCard {
private static final FilterCreaturePermanent filterFlying = new FilterCreaturePermanent("creature with flying");
private static final FilterCreaturePermanent filterWithouFlying = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/h/HeavensGate.java b/Mage.Sets/src/mage/cards/h/HeavensGate.java
index 9a08bf2aacc..c8576c3b27e 100644
--- a/Mage.Sets/src/mage/cards/h/HeavensGate.java
+++ b/Mage.Sets/src/mage/cards/h/HeavensGate.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author maxlebedev
*/
-public class HeavensGate extends CardImpl {
+public final class HeavensGate extends CardImpl {
public HeavensGate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeavyArbalest.java b/Mage.Sets/src/mage/cards/h/HeavyArbalest.java
index 9bf2efc33f0..05d8ef01c15 100644
--- a/Mage.Sets/src/mage/cards/h/HeavyArbalest.java
+++ b/Mage.Sets/src/mage/cards/h/HeavyArbalest.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class HeavyArbalest extends CardImpl {
+public final class HeavyArbalest extends CardImpl {
public HeavyArbalest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HeavyBallista.java b/Mage.Sets/src/mage/cards/h/HeavyBallista.java
index 31df971b461..40d3b3c142e 100644
--- a/Mage.Sets/src/mage/cards/h/HeavyBallista.java
+++ b/Mage.Sets/src/mage/cards/h/HeavyBallista.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author Quercitron
*/
-public class HeavyBallista extends CardImpl {
+public final class HeavyBallista extends CardImpl {
public HeavyBallista(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeavyFog.java b/Mage.Sets/src/mage/cards/h/HeavyFog.java
index e69e57ebf07..91fda0300ca 100644
--- a/Mage.Sets/src/mage/cards/h/HeavyFog.java
+++ b/Mage.Sets/src/mage/cards/h/HeavyFog.java
@@ -49,7 +49,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author L_J
*/
-public class HeavyFog extends CardImpl {
+public final class HeavyFog extends CardImpl {
public HeavyFog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HeavyInfantry.java b/Mage.Sets/src/mage/cards/h/HeavyInfantry.java
index e094d443c2d..c632fec05de 100644
--- a/Mage.Sets/src/mage/cards/h/HeavyInfantry.java
+++ b/Mage.Sets/src/mage/cards/h/HeavyInfantry.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HeavyInfantry extends CardImpl {
+public final class HeavyInfantry extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/h/HeavyMattock.java b/Mage.Sets/src/mage/cards/h/HeavyMattock.java
index 232a0db4c27..669c9a0add3 100644
--- a/Mage.Sets/src/mage/cards/h/HeavyMattock.java
+++ b/Mage.Sets/src/mage/cards/h/HeavyMattock.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class HeavyMattock extends CardImpl {
+public final class HeavyMattock extends CardImpl {
private static final String staticText = "As long as equipped creature is a Human, it gets an additional +1/+1";
diff --git a/Mage.Sets/src/mage/cards/h/HeavyTrooper.java b/Mage.Sets/src/mage/cards/h/HeavyTrooper.java
index 714c207862d..2c9bb43d624 100644
--- a/Mage.Sets/src/mage/cards/h/HeavyTrooper.java
+++ b/Mage.Sets/src/mage/cards/h/HeavyTrooper.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class HeavyTrooper extends CardImpl {
+public final class HeavyTrooper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/h/Hecatomb.java b/Mage.Sets/src/mage/cards/h/Hecatomb.java
index 5908cd56cef..12ea9fe1970 100644
--- a/Mage.Sets/src/mage/cards/h/Hecatomb.java
+++ b/Mage.Sets/src/mage/cards/h/Hecatomb.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Quercitron
*/
-public class Hecatomb extends CardImpl {
+public final class Hecatomb extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Swamp you control");
diff --git a/Mage.Sets/src/mage/cards/h/HecklingFiends.java b/Mage.Sets/src/mage/cards/h/HecklingFiends.java
index e9e4fdc127c..c50909d1f07 100644
--- a/Mage.Sets/src/mage/cards/h/HecklingFiends.java
+++ b/Mage.Sets/src/mage/cards/h/HecklingFiends.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class HecklingFiends extends CardImpl {
+public final class HecklingFiends extends CardImpl {
public HecklingFiends(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HedgeTroll.java b/Mage.Sets/src/mage/cards/h/HedgeTroll.java
index 6b54bc51472..007eba6c6dc 100644
--- a/Mage.Sets/src/mage/cards/h/HedgeTroll.java
+++ b/Mage.Sets/src/mage/cards/h/HedgeTroll.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class HedgeTroll extends CardImpl {
+public final class HedgeTroll extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Plains");
diff --git a/Mage.Sets/src/mage/cards/h/HedonistsTrove.java b/Mage.Sets/src/mage/cards/h/HedonistsTrove.java
index 44aa5b482b3..629a2f699b5 100644
--- a/Mage.Sets/src/mage/cards/h/HedonistsTrove.java
+++ b/Mage.Sets/src/mage/cards/h/HedonistsTrove.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class HedonistsTrove extends CardImpl {
+public final class HedonistsTrove extends CardImpl {
public HedonistsTrove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HedronAlignment.java b/Mage.Sets/src/mage/cards/h/HedronAlignment.java
index d5bba42dc5c..c514899297e 100644
--- a/Mage.Sets/src/mage/cards/h/HedronAlignment.java
+++ b/Mage.Sets/src/mage/cards/h/HedronAlignment.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HedronAlignment extends CardImpl {
+public final class HedronAlignment extends CardImpl {
public HedronAlignment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HedronArchive.java b/Mage.Sets/src/mage/cards/h/HedronArchive.java
index cc45010786f..99220e7affa 100644
--- a/Mage.Sets/src/mage/cards/h/HedronArchive.java
+++ b/Mage.Sets/src/mage/cards/h/HedronArchive.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class HedronArchive extends CardImpl {
+public final class HedronArchive extends CardImpl {
public HedronArchive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HedronBlade.java b/Mage.Sets/src/mage/cards/h/HedronBlade.java
index 0f47c1405d7..331803b0bbd 100644
--- a/Mage.Sets/src/mage/cards/h/HedronBlade.java
+++ b/Mage.Sets/src/mage/cards/h/HedronBlade.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class HedronBlade extends CardImpl {
+public final class HedronBlade extends CardImpl {
public HedronBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/h/HedronCrab.java b/Mage.Sets/src/mage/cards/h/HedronCrab.java
index 1d95e083bd0..db50af1bc9f 100644
--- a/Mage.Sets/src/mage/cards/h/HedronCrab.java
+++ b/Mage.Sets/src/mage/cards/h/HedronCrab.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class HedronCrab extends CardImpl {
+public final class HedronCrab extends CardImpl {
public HedronCrab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HedronCrawler.java b/Mage.Sets/src/mage/cards/h/HedronCrawler.java
index bd08f8ae5b8..4128987220c 100644
--- a/Mage.Sets/src/mage/cards/h/HedronCrawler.java
+++ b/Mage.Sets/src/mage/cards/h/HedronCrawler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class HedronCrawler extends CardImpl {
+public final class HedronCrawler extends CardImpl {
public HedronCrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/h/HedronFieldPurists.java b/Mage.Sets/src/mage/cards/h/HedronFieldPurists.java
index 0f16e1febf7..83b5013edfb 100644
--- a/Mage.Sets/src/mage/cards/h/HedronFieldPurists.java
+++ b/Mage.Sets/src/mage/cards/h/HedronFieldPurists.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class HedronFieldPurists extends LevelerCard {
+public final class HedronFieldPurists extends LevelerCard {
public HedronFieldPurists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HedronMatrix.java b/Mage.Sets/src/mage/cards/h/HedronMatrix.java
index 73a4e04461f..c8338aaad64 100644
--- a/Mage.Sets/src/mage/cards/h/HedronMatrix.java
+++ b/Mage.Sets/src/mage/cards/h/HedronMatrix.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class HedronMatrix extends CardImpl {
+public final class HedronMatrix extends CardImpl {
public HedronMatrix (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HedronRover.java b/Mage.Sets/src/mage/cards/h/HedronRover.java
index a60a8060fa5..ef181f991c2 100644
--- a/Mage.Sets/src/mage/cards/h/HedronRover.java
+++ b/Mage.Sets/src/mage/cards/h/HedronRover.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class HedronRover extends CardImpl {
+public final class HedronRover extends CardImpl {
public HedronRover (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HedronScrabbler.java b/Mage.Sets/src/mage/cards/h/HedronScrabbler.java
index 1bb3b5aa36c..8b845fa242c 100644
--- a/Mage.Sets/src/mage/cards/h/HedronScrabbler.java
+++ b/Mage.Sets/src/mage/cards/h/HedronScrabbler.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class HedronScrabbler extends CardImpl {
+public final class HedronScrabbler extends CardImpl {
public HedronScrabbler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/h/HeedTheMists.java b/Mage.Sets/src/mage/cards/h/HeedTheMists.java
index c6de2d363d8..40252c1639a 100644
--- a/Mage.Sets/src/mage/cards/h/HeedTheMists.java
+++ b/Mage.Sets/src/mage/cards/h/HeedTheMists.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HeedTheMists extends CardImpl {
+public final class HeedTheMists extends CardImpl {
public HeedTheMists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HeedlessOne.java b/Mage.Sets/src/mage/cards/h/HeedlessOne.java
index d2442fa93f0..dafb9d7cbad 100644
--- a/Mage.Sets/src/mage/cards/h/HeedlessOne.java
+++ b/Mage.Sets/src/mage/cards/h/HeedlessOne.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class HeedlessOne extends CardImpl {
+public final class HeedlessOne extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Elves on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/h/HeidarRimewindMaster.java b/Mage.Sets/src/mage/cards/h/HeidarRimewindMaster.java
index 822f87b4e32..f8467b31240 100644
--- a/Mage.Sets/src/mage/cards/h/HeidarRimewindMaster.java
+++ b/Mage.Sets/src/mage/cards/h/HeidarRimewindMaster.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class HeidarRimewindMaster extends CardImpl {
+public final class HeidarRimewindMaster extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control four or more snow permanents");
diff --git a/Mage.Sets/src/mage/cards/h/HeightenedAwareness.java b/Mage.Sets/src/mage/cards/h/HeightenedAwareness.java
index fc13005ad64..460ed676ef3 100644
--- a/Mage.Sets/src/mage/cards/h/HeightenedAwareness.java
+++ b/Mage.Sets/src/mage/cards/h/HeightenedAwareness.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class HeightenedAwareness extends CardImpl {
+public final class HeightenedAwareness extends CardImpl {
public HeightenedAwareness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HeirOfFalkenrath.java b/Mage.Sets/src/mage/cards/h/HeirOfFalkenrath.java
index b46c1906421..68412e58d38 100644
--- a/Mage.Sets/src/mage/cards/h/HeirOfFalkenrath.java
+++ b/Mage.Sets/src/mage/cards/h/HeirOfFalkenrath.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class HeirOfFalkenrath extends CardImpl {
+public final class HeirOfFalkenrath extends CardImpl {
public HeirOfFalkenrath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HeirOfTheWilds.java b/Mage.Sets/src/mage/cards/h/HeirOfTheWilds.java
index 4920ce96e55..06f759ff8a5 100644
--- a/Mage.Sets/src/mage/cards/h/HeirOfTheWilds.java
+++ b/Mage.Sets/src/mage/cards/h/HeirOfTheWilds.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class HeirOfTheWilds extends CardImpl {
+public final class HeirOfTheWilds extends CardImpl {
public HeirOfTheWilds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HeirToTheNight.java b/Mage.Sets/src/mage/cards/h/HeirToTheNight.java
index 17fb353f54e..4b17618d219 100644
--- a/Mage.Sets/src/mage/cards/h/HeirToTheNight.java
+++ b/Mage.Sets/src/mage/cards/h/HeirToTheNight.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class HeirToTheNight extends CardImpl {
+public final class HeirToTheNight extends CardImpl {
public HeirToTheNight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/h/HeirloomBlade.java b/Mage.Sets/src/mage/cards/h/HeirloomBlade.java
index 35bb0d1db1f..0eeae368683 100644
--- a/Mage.Sets/src/mage/cards/h/HeirloomBlade.java
+++ b/Mage.Sets/src/mage/cards/h/HeirloomBlade.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author Saga
*/
-public class HeirloomBlade extends CardImpl {
+public final class HeirloomBlade extends CardImpl {
public HeirloomBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HeirsOfStromkirk.java b/Mage.Sets/src/mage/cards/h/HeirsOfStromkirk.java
index 43d47b9071a..c6d80a6d710 100644
--- a/Mage.Sets/src/mage/cards/h/HeirsOfStromkirk.java
+++ b/Mage.Sets/src/mage/cards/h/HeirsOfStromkirk.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class HeirsOfStromkirk extends CardImpl {
+public final class HeirsOfStromkirk extends CardImpl {
public HeirsOfStromkirk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HekmaSentinels.java b/Mage.Sets/src/mage/cards/h/HekmaSentinels.java
index c99fcda9407..d0036680050 100644
--- a/Mage.Sets/src/mage/cards/h/HekmaSentinels.java
+++ b/Mage.Sets/src/mage/cards/h/HekmaSentinels.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Styxo
*/
-public class HekmaSentinels extends CardImpl {
+public final class HekmaSentinels extends CardImpl {
public HekmaSentinels(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HeliodGodOfTheSun.java b/Mage.Sets/src/mage/cards/h/HeliodGodOfTheSun.java
index 32a5ccc015f..75a9e83ac74 100644
--- a/Mage.Sets/src/mage/cards/h/HeliodGodOfTheSun.java
+++ b/Mage.Sets/src/mage/cards/h/HeliodGodOfTheSun.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.HeliodGodOfTheSunToken;
*
* @author LevelX2
*/
-public class HeliodGodOfTheSun extends CardImpl {
+public final class HeliodGodOfTheSun extends CardImpl {
public HeliodGodOfTheSun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeliodsEmissary.java b/Mage.Sets/src/mage/cards/h/HeliodsEmissary.java
index 5da7c23ad38..de823f10480 100644
--- a/Mage.Sets/src/mage/cards/h/HeliodsEmissary.java
+++ b/Mage.Sets/src/mage/cards/h/HeliodsEmissary.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HeliodsEmissary extends CardImpl {
+public final class HeliodsEmissary extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java b/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java
index 0668f940678..c2edc641308 100644
--- a/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java
+++ b/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class HeliodsPilgrim extends CardImpl {
+public final class HeliodsPilgrim extends CardImpl {
private static final FilterCard filter = new FilterCard("Aura card");
diff --git a/Mage.Sets/src/mage/cards/h/Helionaut.java b/Mage.Sets/src/mage/cards/h/Helionaut.java
index 19e1deb3978..c6d8ad86b99 100644
--- a/Mage.Sets/src/mage/cards/h/Helionaut.java
+++ b/Mage.Sets/src/mage/cards/h/Helionaut.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class Helionaut extends CardImpl {
+public final class Helionaut extends CardImpl {
public Helionaut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/Heliophial.java b/Mage.Sets/src/mage/cards/h/Heliophial.java
index 505b84bef52..b4ae98ede19 100644
--- a/Mage.Sets/src/mage/cards/h/Heliophial.java
+++ b/Mage.Sets/src/mage/cards/h/Heliophial.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class Heliophial extends CardImpl {
+public final class Heliophial extends CardImpl {
public Heliophial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/h/HeliumSquirter.java b/Mage.Sets/src/mage/cards/h/HeliumSquirter.java
index 8fad0ada4be..6d88f362967 100644
--- a/Mage.Sets/src/mage/cards/h/HeliumSquirter.java
+++ b/Mage.Sets/src/mage/cards/h/HeliumSquirter.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JotaPeRL
*/
-public class HeliumSquirter extends CardImpl {
+public final class HeliumSquirter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HelixPinnacle.java b/Mage.Sets/src/mage/cards/h/HelixPinnacle.java
index c4fe64e45a2..09203522cda 100644
--- a/Mage.Sets/src/mage/cards/h/HelixPinnacle.java
+++ b/Mage.Sets/src/mage/cards/h/HelixPinnacle.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author jeffwadsworth
*/
-public class HelixPinnacle extends CardImpl {
+public final class HelixPinnacle extends CardImpl {
static final String rule = "at the beginning of your upkeep, if there are 100 or more tower counters on Helix Pinnacle, you win the game";
diff --git a/Mage.Sets/src/mage/cards/h/HellBentRaider.java b/Mage.Sets/src/mage/cards/h/HellBentRaider.java
index 9b35381becb..0ace9cf1a39 100644
--- a/Mage.Sets/src/mage/cards/h/HellBentRaider.java
+++ b/Mage.Sets/src/mage/cards/h/HellBentRaider.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author tomd1990
*/
-public class HellBentRaider extends CardImpl {
+public final class HellBentRaider extends CardImpl {
public HellBentRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HellSwarm.java b/Mage.Sets/src/mage/cards/h/HellSwarm.java
index 520e063daa5..51e7d99d8c7 100644
--- a/Mage.Sets/src/mage/cards/h/HellSwarm.java
+++ b/Mage.Sets/src/mage/cards/h/HellSwarm.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author TheElk801
*/
-public class HellSwarm extends CardImpl {
+public final class HellSwarm extends CardImpl {
public HellSwarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HellcarverDemon.java b/Mage.Sets/src/mage/cards/h/HellcarverDemon.java
index af8462e4b7e..b0c59a6db7d 100644
--- a/Mage.Sets/src/mage/cards/h/HellcarverDemon.java
+++ b/Mage.Sets/src/mage/cards/h/HellcarverDemon.java
@@ -32,21 +32,21 @@ import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
-import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
-import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
@@ -56,7 +56,7 @@ import mage.target.TargetCard;
*
* @author jeffwadsworth & L_J
*/
-public class HellcarverDemon extends CardImpl {
+public final class HellcarverDemon extends CardImpl {
public HellcarverDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}{B}");
@@ -110,14 +110,14 @@ class HellcarverDemonEffect extends OneShotEffect {
Set currentExiledCards = new HashSet<>();
currentExiledCards.addAll(controller.getLibrary().getTopCards(game, 6));
controller.moveCardsToExile(currentExiledCards, source, game, true, source.getSourceId(), sourceObject.getIdName());
-
+
// cast the possible cards without paying the mana
Cards cardsToCast = new CardsImpl();
cardsToCast.addAll(currentExiledCards);
boolean alreadyCast = false;
while (!cardsToCast.isEmpty()
&& controller.canRespond()) {
- if (!controller.chooseUse(outcome, "Cast a" + (alreadyCast ? "nother" : "" ) + " card exiled with " + sourceObject.getLogName() + " without paying its mana cost?", source, game)) {
+ if (!controller.chooseUse(outcome, "Cast a" + (alreadyCast ? "nother" : "") + " card exiled with " + sourceObject.getLogName() + " without paying its mana cost?", source, game)) {
break;
}
TargetCard targetCard = new TargetCard(1, Zone.EXILED, new FilterCard("nonland card to cast for free"));
@@ -125,7 +125,7 @@ class HellcarverDemonEffect extends OneShotEffect {
alreadyCast = true;
Card card = game.getCard(targetCard.getFirstTarget());
if (card != null) {
- if (controller.cast(card.getSpellAbility(), game, true)) {
+ if (controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
cardsToCast.remove(card);
} else {
game.informPlayer(controller, "You're not able to cast " + card.getIdName() + " or you canceled the casting.");
diff --git a/Mage.Sets/src/mage/cards/h/Helldozer.java b/Mage.Sets/src/mage/cards/h/Helldozer.java
index ab85df4c087..c072190f311 100644
--- a/Mage.Sets/src/mage/cards/h/Helldozer.java
+++ b/Mage.Sets/src/mage/cards/h/Helldozer.java
@@ -48,10 +48,10 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class Helldozer extends CardImpl {
+public final class Helldozer extends CardImpl {
public Helldozer(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}{B}");
this.subtype.add(SubType.ZOMBIE);
this.subtype.add(SubType.GIANT);
@@ -96,15 +96,14 @@ class HelldozerEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Permanent helldozer = game.getPermanent(source.getSourceId());
Permanent landTarget = game.getPermanent(source.getFirstTarget());
- if (landTarget != null) {
- landTarget.destroy(id, game, false);
+ if (landTarget == null) {
+ return false;
}
- Permanent landPermanent = (Permanent) game.getLastKnownInformation(landTarget.getId(), Zone.BATTLEFIELD);
- if (landPermanent != null
- && !landPermanent.isBasic()
- && helldozer != null) {
+ boolean wasNonBasic = !landTarget.isBasic();
+ landTarget.destroy(id, game, false);
+ if (wasNonBasic && helldozer != null) {
return helldozer.untap(game);
}
return false;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/h/Hellfire.java b/Mage.Sets/src/mage/cards/h/Hellfire.java
index 04bb3819893..a3bd06295a5 100644
--- a/Mage.Sets/src/mage/cards/h/Hellfire.java
+++ b/Mage.Sets/src/mage/cards/h/Hellfire.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class Hellfire extends CardImpl {
+public final class Hellfire extends CardImpl {
public Hellfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HellfireMongrel.java b/Mage.Sets/src/mage/cards/h/HellfireMongrel.java
index b9d589a6d3b..4911e2a35fd 100644
--- a/Mage.Sets/src/mage/cards/h/HellfireMongrel.java
+++ b/Mage.Sets/src/mage/cards/h/HellfireMongrel.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author North
*/
-public class HellfireMongrel extends CardImpl {
+public final class HellfireMongrel extends CardImpl {
public HellfireMongrel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HellholeFlailer.java b/Mage.Sets/src/mage/cards/h/HellholeFlailer.java
index a71a10dcfdf..9dd44eea6bf 100644
--- a/Mage.Sets/src/mage/cards/h/HellholeFlailer.java
+++ b/Mage.Sets/src/mage/cards/h/HellholeFlailer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class HellholeFlailer extends CardImpl {
+public final class HellholeFlailer extends CardImpl {
public HellholeFlailer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HellholeRats.java b/Mage.Sets/src/mage/cards/h/HellholeRats.java
index 2830a93812c..89518e02b21 100644
--- a/Mage.Sets/src/mage/cards/h/HellholeRats.java
+++ b/Mage.Sets/src/mage/cards/h/HellholeRats.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class HellholeRats extends CardImpl {
+public final class HellholeRats extends CardImpl {
public HellholeRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HellionCrucible.java b/Mage.Sets/src/mage/cards/h/HellionCrucible.java
index 01dadd38813..3cc4cb9010b 100644
--- a/Mage.Sets/src/mage/cards/h/HellionCrucible.java
+++ b/Mage.Sets/src/mage/cards/h/HellionCrucible.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.HellionHasteToken;
*
* @author jeffwadsworth
*/
-public class HellionCrucible extends CardImpl {
+public final class HellionCrucible extends CardImpl {
public HellionCrucible(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/h/HellionEruption.java b/Mage.Sets/src/mage/cards/h/HellionEruption.java
index 3293c229bfe..783d5e3f5d3 100644
--- a/Mage.Sets/src/mage/cards/h/HellionEruption.java
+++ b/Mage.Sets/src/mage/cards/h/HellionEruption.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.HellionToken;
*
* @author North
*/
-public class HellionEruption extends CardImpl {
+public final class HellionEruption extends CardImpl {
public HellionEruption(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HellkiteCharger.java b/Mage.Sets/src/mage/cards/h/HellkiteCharger.java
index ce8862d4d2f..ed7a1108e5a 100644
--- a/Mage.Sets/src/mage/cards/h/HellkiteCharger.java
+++ b/Mage.Sets/src/mage/cards/h/HellkiteCharger.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HellkiteCharger extends CardImpl {
+public final class HellkiteCharger extends CardImpl {
public HellkiteCharger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HellkiteHatchling.java b/Mage.Sets/src/mage/cards/h/HellkiteHatchling.java
index a595cef323b..4edde5b8188 100644
--- a/Mage.Sets/src/mage/cards/h/HellkiteHatchling.java
+++ b/Mage.Sets/src/mage/cards/h/HellkiteHatchling.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HellkiteHatchling extends CardImpl {
+public final class HellkiteHatchling extends CardImpl {
public HellkiteHatchling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HellkiteIgniter.java b/Mage.Sets/src/mage/cards/h/HellkiteIgniter.java
index a8186bbf521..121e3f0195c 100644
--- a/Mage.Sets/src/mage/cards/h/HellkiteIgniter.java
+++ b/Mage.Sets/src/mage/cards/h/HellkiteIgniter.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Loki
*/
-public class HellkiteIgniter extends CardImpl {
+public final class HellkiteIgniter extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifact you control");
diff --git a/Mage.Sets/src/mage/cards/h/HellkiteOverlord.java b/Mage.Sets/src/mage/cards/h/HellkiteOverlord.java
index ac880e3d99a..2e8c218f33b 100644
--- a/Mage.Sets/src/mage/cards/h/HellkiteOverlord.java
+++ b/Mage.Sets/src/mage/cards/h/HellkiteOverlord.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class HellkiteOverlord extends CardImpl {
+public final class HellkiteOverlord extends CardImpl {
public HellkiteOverlord (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{R}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HellkiteTyrant.java b/Mage.Sets/src/mage/cards/h/HellkiteTyrant.java
index b8ef07cd060..58052f300dd 100644
--- a/Mage.Sets/src/mage/cards/h/HellkiteTyrant.java
+++ b/Mage.Sets/src/mage/cards/h/HellkiteTyrant.java
@@ -64,7 +64,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class HellkiteTyrant extends CardImpl {
+public final class HellkiteTyrant extends CardImpl {
public HellkiteTyrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HellraiserGoblin.java b/Mage.Sets/src/mage/cards/h/HellraiserGoblin.java
index 20a3074e6a6..fc5714ae806 100644
--- a/Mage.Sets/src/mage/cards/h/HellraiserGoblin.java
+++ b/Mage.Sets/src/mage/cards/h/HellraiserGoblin.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class HellraiserGoblin extends CardImpl {
+public final class HellraiserGoblin extends CardImpl {
public HellraiserGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/Hellrider.java b/Mage.Sets/src/mage/cards/h/Hellrider.java
index b75b9eecfca..8274b5b092f 100644
--- a/Mage.Sets/src/mage/cards/h/Hellrider.java
+++ b/Mage.Sets/src/mage/cards/h/Hellrider.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class Hellrider extends CardImpl {
+public final class Hellrider extends CardImpl {
public Hellrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HellsCaretaker.java b/Mage.Sets/src/mage/cards/h/HellsCaretaker.java
index 6d957dd0f00..0ede73b0f8b 100644
--- a/Mage.Sets/src/mage/cards/h/HellsCaretaker.java
+++ b/Mage.Sets/src/mage/cards/h/HellsCaretaker.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class HellsCaretaker extends CardImpl {
+public final class HellsCaretaker extends CardImpl {
public HellsCaretaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HellsThunder.java b/Mage.Sets/src/mage/cards/h/HellsThunder.java
index 72a3544ced1..1c94307b11c 100644
--- a/Mage.Sets/src/mage/cards/h/HellsThunder.java
+++ b/Mage.Sets/src/mage/cards/h/HellsThunder.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class HellsThunder extends CardImpl {
+public final class HellsThunder extends CardImpl {
public HellsThunder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HellsparkElemental.java b/Mage.Sets/src/mage/cards/h/HellsparkElemental.java
index d6509e55660..646e69cd473 100644
--- a/Mage.Sets/src/mage/cards/h/HellsparkElemental.java
+++ b/Mage.Sets/src/mage/cards/h/HellsparkElemental.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent.EventType;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class HellsparkElemental extends CardImpl {
+public final class HellsparkElemental extends CardImpl {
public HellsparkElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HelmOfAwakening.java b/Mage.Sets/src/mage/cards/h/HelmOfAwakening.java
index 00c108bbb3a..86fa4631db9 100644
--- a/Mage.Sets/src/mage/cards/h/HelmOfAwakening.java
+++ b/Mage.Sets/src/mage/cards/h/HelmOfAwakening.java
@@ -39,7 +39,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HelmOfAwakening extends CardImpl {
+public final class HelmOfAwakening extends CardImpl {
public HelmOfAwakening(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/h/HelmOfChatzuk.java b/Mage.Sets/src/mage/cards/h/HelmOfChatzuk.java
index ec6cc2e1224..0ed527051d6 100644
--- a/Mage.Sets/src/mage/cards/h/HelmOfChatzuk.java
+++ b/Mage.Sets/src/mage/cards/h/HelmOfChatzuk.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class HelmOfChatzuk extends CardImpl {
+public final class HelmOfChatzuk extends CardImpl {
public HelmOfChatzuk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/h/HelmOfKaldra.java b/Mage.Sets/src/mage/cards/h/HelmOfKaldra.java
index 309d21d56f6..4ff07d9fb5d 100644
--- a/Mage.Sets/src/mage/cards/h/HelmOfKaldra.java
+++ b/Mage.Sets/src/mage/cards/h/HelmOfKaldra.java
@@ -55,7 +55,7 @@ import mage.game.permanent.token.KaldraToken;
*
* @author LevelX2
*/
-public class HelmOfKaldra extends CardImpl {
+public final class HelmOfKaldra extends CardImpl {
static final FilterControlledArtifactPermanent filterHelm = new FilterControlledArtifactPermanent();
static final FilterControlledArtifactPermanent filterShield = new FilterControlledArtifactPermanent();
diff --git a/Mage.Sets/src/mage/cards/h/HelmOfObedience.java b/Mage.Sets/src/mage/cards/h/HelmOfObedience.java
index 3c4816aa415..a6de0d69845 100644
--- a/Mage.Sets/src/mage/cards/h/HelmOfObedience.java
+++ b/Mage.Sets/src/mage/cards/h/HelmOfObedience.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class HelmOfObedience extends CardImpl {
+public final class HelmOfObedience extends CardImpl {
public HelmOfObedience(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HelmOfPossession.java b/Mage.Sets/src/mage/cards/h/HelmOfPossession.java
index 1e47145bee7..52a1659a4d8 100644
--- a/Mage.Sets/src/mage/cards/h/HelmOfPossession.java
+++ b/Mage.Sets/src/mage/cards/h/HelmOfPossession.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class HelmOfPossession extends CardImpl {
+public final class HelmOfPossession extends CardImpl {
public HelmOfPossession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HelmOfTheGhastlord.java b/Mage.Sets/src/mage/cards/h/HelmOfTheGhastlord.java
index b145e71cba5..c4abb44904d 100644
--- a/Mage.Sets/src/mage/cards/h/HelmOfTheGhastlord.java
+++ b/Mage.Sets/src/mage/cards/h/HelmOfTheGhastlord.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class HelmOfTheGhastlord extends CardImpl {
+public final class HelmOfTheGhastlord extends CardImpl {
public HelmOfTheGhastlord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/h/HelmOfTheGods.java b/Mage.Sets/src/mage/cards/h/HelmOfTheGods.java
index 1d0878e68b3..32b417e931d 100644
--- a/Mage.Sets/src/mage/cards/h/HelmOfTheGods.java
+++ b/Mage.Sets/src/mage/cards/h/HelmOfTheGods.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class HelmOfTheGods extends CardImpl {
+public final class HelmOfTheGods extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("enchantment you control");
diff --git a/Mage.Sets/src/mage/cards/h/HelmOfTheHost.java b/Mage.Sets/src/mage/cards/h/HelmOfTheHost.java
index 1458aa942d7..f25937ec312 100644
--- a/Mage.Sets/src/mage/cards/h/HelmOfTheHost.java
+++ b/Mage.Sets/src/mage/cards/h/HelmOfTheHost.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Will
*/
-public class HelmOfTheHost extends CardImpl {
+public final class HelmOfTheHost extends CardImpl {
public HelmOfTheHost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/h/Helvault.java b/Mage.Sets/src/mage/cards/h/Helvault.java
index 1fffc4c9b6e..9c80ef79cba 100644
--- a/Mage.Sets/src/mage/cards/h/Helvault.java
+++ b/Mage.Sets/src/mage/cards/h/Helvault.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Helvault extends CardImpl {
+public final class Helvault extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/h/HematiteGolem.java b/Mage.Sets/src/mage/cards/h/HematiteGolem.java
index 85fa91a299e..52110acdba4 100644
--- a/Mage.Sets/src/mage/cards/h/HematiteGolem.java
+++ b/Mage.Sets/src/mage/cards/h/HematiteGolem.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class HematiteGolem extends CardImpl {
+public final class HematiteGolem extends CardImpl {
public HematiteGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HematiteTalisman.java b/Mage.Sets/src/mage/cards/h/HematiteTalisman.java
index 9ab830d76d6..30be4c035a3 100644
--- a/Mage.Sets/src/mage/cards/h/HematiteTalisman.java
+++ b/Mage.Sets/src/mage/cards/h/HematiteTalisman.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class HematiteTalisman extends CardImpl {
+public final class HematiteTalisman extends CardImpl {
private final static FilterSpell filter = new FilterSpell("a red spell");
diff --git a/Mage.Sets/src/mage/cards/h/HenchfiendOfUkor.java b/Mage.Sets/src/mage/cards/h/HenchfiendOfUkor.java
index 5cc44ae2c8f..acd4b6d0a40 100644
--- a/Mage.Sets/src/mage/cards/h/HenchfiendOfUkor.java
+++ b/Mage.Sets/src/mage/cards/h/HenchfiendOfUkor.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class HenchfiendOfUkor extends CardImpl {
+public final class HenchfiendOfUkor extends CardImpl {
public HenchfiendOfUkor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HengeGuardian.java b/Mage.Sets/src/mage/cards/h/HengeGuardian.java
index 4dc33ef5248..0d61f97a2ce 100644
--- a/Mage.Sets/src/mage/cards/h/HengeGuardian.java
+++ b/Mage.Sets/src/mage/cards/h/HengeGuardian.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class HengeGuardian extends CardImpl {
+public final class HengeGuardian extends CardImpl {
public HengeGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/h/HengeOfRamos.java b/Mage.Sets/src/mage/cards/h/HengeOfRamos.java
index ef4b310678d..a30457ce18f 100644
--- a/Mage.Sets/src/mage/cards/h/HengeOfRamos.java
+++ b/Mage.Sets/src/mage/cards/h/HengeOfRamos.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author anonymous
*/
-public class HengeOfRamos extends CardImpl {
+public final class HengeOfRamos extends CardImpl {
public HengeOfRamos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfAnafenza.java b/Mage.Sets/src/mage/cards/h/HeraldOfAnafenza.java
index 29ad93d933b..2767b778a89 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfAnafenza.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfAnafenza.java
@@ -47,7 +47,7 @@ import mage.game.stack.StackAbility;
*
* @author LevelX2
*/
-public class HeraldOfAnafenza extends CardImpl {
+public final class HeraldOfAnafenza extends CardImpl {
public HeraldOfAnafenza(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfAnguish.java b/Mage.Sets/src/mage/cards/h/HeraldOfAnguish.java
index 88aedd53231..b34ff5c0bb0 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfAnguish.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfAnguish.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class HeraldOfAnguish extends CardImpl {
+public final class HeraldOfAnguish extends CardImpl {
public HeraldOfAnguish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfDromoka.java b/Mage.Sets/src/mage/cards/h/HeraldOfDromoka.java
index 598c457eab9..0d83ff3dce1 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfDromoka.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfDromoka.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class HeraldOfDromoka extends CardImpl {
+public final class HeraldOfDromoka extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("other Warrior creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfKozilek.java b/Mage.Sets/src/mage/cards/h/HeraldOfKozilek.java
index f04b62b8103..e6c96b20a9b 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfKozilek.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfKozilek.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
*
* @author fireshoes
*/
-public class HeraldOfKozilek extends CardImpl {
+public final class HeraldOfKozilek extends CardImpl {
private static final FilterCard filter = new FilterCard("Colorless spells");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfLeshrac.java b/Mage.Sets/src/mage/cards/h/HeraldOfLeshrac.java
index a04f5f36820..e798746e03a 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfLeshrac.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfLeshrac.java
@@ -66,7 +66,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class HeraldOfLeshrac extends CardImpl {
+public final class HeraldOfLeshrac extends CardImpl {
private static final FilterPermanent filter = new FilterControlledLandPermanent("land you control but don't own");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfSecretStreams.java b/Mage.Sets/src/mage/cards/h/HeraldOfSecretStreams.java
index b05d2cab397..960f1d32df9 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfSecretStreams.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfSecretStreams.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author TheElk801
*/
-public class HeraldOfSecretStreams extends CardImpl {
+public final class HeraldOfSecretStreams extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control with +1/+1 counters on them");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfSerra.java b/Mage.Sets/src/mage/cards/h/HeraldOfSerra.java
index c3505419a2f..d5b19e7dfb7 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfSerra.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfSerra.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class HeraldOfSerra extends CardImpl {
+public final class HeraldOfSerra extends CardImpl {
public HeraldOfSerra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfTheFair.java b/Mage.Sets/src/mage/cards/h/HeraldOfTheFair.java
index 80be5265f4e..21db1d7b0f4 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfTheFair.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfTheFair.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class HeraldOfTheFair extends CardImpl {
+public final class HeraldOfTheFair extends CardImpl {
public HeraldOfTheFair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfTheHost.java b/Mage.Sets/src/mage/cards/h/HeraldOfTheHost.java
index 59b3434f157..690f4ac2edd 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfTheHost.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfTheHost.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class HeraldOfTheHost extends CardImpl {
+public final class HeraldOfTheHost extends CardImpl {
public HeraldOfTheHost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfThePantheon.java b/Mage.Sets/src/mage/cards/h/HeraldOfThePantheon.java
index 4fdc3378418..321f55b67b2 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfThePantheon.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfThePantheon.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class HeraldOfThePantheon extends CardImpl {
+public final class HeraldOfThePantheon extends CardImpl {
private static final FilterCard filter = new FilterCard("Enchantment spells");
private static final FilterSpell filter2 = new FilterSpell("an enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfTorment.java b/Mage.Sets/src/mage/cards/h/HeraldOfTorment.java
index 938c723ee44..b89c2b33e60 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfTorment.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfTorment.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class HeraldOfTorment extends CardImpl {
+public final class HeraldOfTorment extends CardImpl {
public HeraldOfTorment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfWar.java b/Mage.Sets/src/mage/cards/h/HeraldOfWar.java
index 853e0b7bbd5..0e645aaca5c 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldOfWar.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldOfWar.java
@@ -48,7 +48,7 @@ import mage.util.CardUtil;
/**
* @author noxx
*/
-public class HeraldOfWar extends CardImpl {
+public final class HeraldOfWar extends CardImpl {
public HeraldOfWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeraldsHorn.java b/Mage.Sets/src/mage/cards/h/HeraldsHorn.java
index cadce2f3cec..27af7c7a050 100644
--- a/Mage.Sets/src/mage/cards/h/HeraldsHorn.java
+++ b/Mage.Sets/src/mage/cards/h/HeraldsHorn.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author Saga
*/
-public class HeraldsHorn extends CardImpl {
+public final class HeraldsHorn extends CardImpl {
public HeraldsHorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HerbalPoultice.java b/Mage.Sets/src/mage/cards/h/HerbalPoultice.java
index 6519b29f702..73cded07a04 100644
--- a/Mage.Sets/src/mage/cards/h/HerbalPoultice.java
+++ b/Mage.Sets/src/mage/cards/h/HerbalPoultice.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class HerbalPoultice extends CardImpl {
+public final class HerbalPoultice extends CardImpl {
public HerbalPoultice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/h/HerdGnarr.java b/Mage.Sets/src/mage/cards/h/HerdGnarr.java
index 0bf680e245b..ffffd3dcd0e 100644
--- a/Mage.Sets/src/mage/cards/h/HerdGnarr.java
+++ b/Mage.Sets/src/mage/cards/h/HerdGnarr.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class HerdGnarr extends CardImpl {
+public final class HerdGnarr extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/h/HerdchaserDragon.java b/Mage.Sets/src/mage/cards/h/HerdchaserDragon.java
index a5c7b8ceda7..d52d60261ea 100644
--- a/Mage.Sets/src/mage/cards/h/HerdchaserDragon.java
+++ b/Mage.Sets/src/mage/cards/h/HerdchaserDragon.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class HerdchaserDragon extends CardImpl {
+public final class HerdchaserDragon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other Dragon creature you control");
diff --git a/Mage.Sets/src/mage/cards/h/HereticsPunishment.java b/Mage.Sets/src/mage/cards/h/HereticsPunishment.java
index 1e2d70918df..fdf6997f2ab 100644
--- a/Mage.Sets/src/mage/cards/h/HereticsPunishment.java
+++ b/Mage.Sets/src/mage/cards/h/HereticsPunishment.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward
*/
-public class HereticsPunishment extends CardImpl {
+public final class HereticsPunishment extends CardImpl {
public HereticsPunishment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HeritageDruid.java b/Mage.Sets/src/mage/cards/h/HeritageDruid.java
index 312f9b4809d..5b0b642efe4 100644
--- a/Mage.Sets/src/mage/cards/h/HeritageDruid.java
+++ b/Mage.Sets/src/mage/cards/h/HeritageDruid.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class HeritageDruid extends CardImpl {
+public final class HeritageDruid extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Elves you control");
diff --git a/Mage.Sets/src/mage/cards/h/HermeticStudy.java b/Mage.Sets/src/mage/cards/h/HermeticStudy.java
index 1c91a11a717..084436880b0 100644
--- a/Mage.Sets/src/mage/cards/h/HermeticStudy.java
+++ b/Mage.Sets/src/mage/cards/h/HermeticStudy.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class HermeticStudy extends CardImpl {
+public final class HermeticStudy extends CardImpl {
public HermeticStudy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HermitDruid.java b/Mage.Sets/src/mage/cards/h/HermitDruid.java
index 940ea218aeb..0523cfec6af 100644
--- a/Mage.Sets/src/mage/cards/h/HermitDruid.java
+++ b/Mage.Sets/src/mage/cards/h/HermitDruid.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class HermitDruid extends CardImpl {
+public final class HermitDruid extends CardImpl {
public HermitDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
@@ -57,7 +57,7 @@ public class HermitDruid extends CardImpl {
this.toughness = new MageInt(1);
// {G}, {tap}: Reveal cards from the top of your library until you reveal a basic land card. Put that card into your hand and all other cards revealed this way into your graveyard.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RevealCardsFromLibraryUntilEffect(StaticFilters.FILTER_BASIC_LAND_CARD, Zone.HAND, Zone.GRAVEYARD), new ManaCostsImpl("{G}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RevealCardsFromLibraryUntilEffect(StaticFilters.FILTER_CARD_BASIC_LAND, Zone.HAND, Zone.GRAVEYARD), new ManaCostsImpl("{G}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/h/HermitOfTheNatterknolls.java b/Mage.Sets/src/mage/cards/h/HermitOfTheNatterknolls.java
index a632f6b5751..601cb0715f1 100644
--- a/Mage.Sets/src/mage/cards/h/HermitOfTheNatterknolls.java
+++ b/Mage.Sets/src/mage/cards/h/HermitOfTheNatterknolls.java
@@ -50,7 +50,7 @@ import mage.filter.FilterSpell;
*
* @author LevelX2
*/
-public class HermitOfTheNatterknolls extends CardImpl {
+public final class HermitOfTheNatterknolls extends CardImpl {
public HermitOfTheNatterknolls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HeroOfBladehold.java b/Mage.Sets/src/mage/cards/h/HeroOfBladehold.java
index 703afbdf901..b184b38bf66 100644
--- a/Mage.Sets/src/mage/cards/h/HeroOfBladehold.java
+++ b/Mage.Sets/src/mage/cards/h/HeroOfBladehold.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SoldierToken;
/**
* @author Loki
*/
-public class HeroOfBladehold extends CardImpl {
+public final class HeroOfBladehold extends CardImpl {
public HeroOfBladehold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeroOfGomaFada.java b/Mage.Sets/src/mage/cards/h/HeroOfGomaFada.java
index ce03d6341b9..8a5341ac732 100644
--- a/Mage.Sets/src/mage/cards/h/HeroOfGomaFada.java
+++ b/Mage.Sets/src/mage/cards/h/HeroOfGomaFada.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class HeroOfGomaFada extends CardImpl {
+public final class HeroOfGomaFada extends CardImpl {
public HeroOfGomaFada(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeroOfIroas.java b/Mage.Sets/src/mage/cards/h/HeroOfIroas.java
index 748afba3402..827f53fb443 100644
--- a/Mage.Sets/src/mage/cards/h/HeroOfIroas.java
+++ b/Mage.Sets/src/mage/cards/h/HeroOfIroas.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class HeroOfIroas extends CardImpl {
+public final class HeroOfIroas extends CardImpl {
private static final FilterCard filter = new FilterCard("Aura spells");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HeroOfLeinaTower.java b/Mage.Sets/src/mage/cards/h/HeroOfLeinaTower.java
index 54cc004eaac..06a479b536c 100644
--- a/Mage.Sets/src/mage/cards/h/HeroOfLeinaTower.java
+++ b/Mage.Sets/src/mage/cards/h/HeroOfLeinaTower.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HeroOfLeinaTower extends CardImpl {
+public final class HeroOfLeinaTower extends CardImpl {
public HeroOfLeinaTower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HeroOfOxidRidge.java b/Mage.Sets/src/mage/cards/h/HeroOfOxidRidge.java
index 4c5fe73ec0f..19b134e1dfc 100644
--- a/Mage.Sets/src/mage/cards/h/HeroOfOxidRidge.java
+++ b/Mage.Sets/src/mage/cards/h/HeroOfOxidRidge.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class HeroOfOxidRidge extends CardImpl {
+public final class HeroOfOxidRidge extends CardImpl {
public HeroOfOxidRidge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HeroesBane.java b/Mage.Sets/src/mage/cards/h/HeroesBane.java
index 39baf77dbaf..7ffaa3986c2 100644
--- a/Mage.Sets/src/mage/cards/h/HeroesBane.java
+++ b/Mage.Sets/src/mage/cards/h/HeroesBane.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class HeroesBane extends CardImpl {
+public final class HeroesBane extends CardImpl {
public HeroesBane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HeroesPodium.java b/Mage.Sets/src/mage/cards/h/HeroesPodium.java
index a7f54579a7f..ef55f8599a9 100644
--- a/Mage.Sets/src/mage/cards/h/HeroesPodium.java
+++ b/Mage.Sets/src/mage/cards/h/HeroesPodium.java
@@ -52,7 +52,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class HeroesPodium extends CardImpl {
+public final class HeroesPodium extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each legendary creature you control");
diff --git a/Mage.Sets/src/mage/cards/h/HeroesRemembered.java b/Mage.Sets/src/mage/cards/h/HeroesRemembered.java
index ac47ba24077..27f5128cb43 100644
--- a/Mage.Sets/src/mage/cards/h/HeroesRemembered.java
+++ b/Mage.Sets/src/mage/cards/h/HeroesRemembered.java
@@ -9,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-public class HeroesRemembered extends CardImpl {
+public final class HeroesRemembered extends CardImpl {
public HeroesRemembered(UUID ownerId, CardSetInfo setInfo){
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeroesReunion.java b/Mage.Sets/src/mage/cards/h/HeroesReunion.java
index 25ed905f8ea..23abfa8260f 100644
--- a/Mage.Sets/src/mage/cards/h/HeroesReunion.java
+++ b/Mage.Sets/src/mage/cards/h/HeroesReunion.java
@@ -37,7 +37,7 @@ import mage.target.TargetPlayer;
/**
* @author magenoxx_at_gmail.com
*/
-public class HeroesReunion extends CardImpl {
+public final class HeroesReunion extends CardImpl {
public HeroesReunion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeroicDefiance.java b/Mage.Sets/src/mage/cards/h/HeroicDefiance.java
index ce4a9ed6a0f..5c83d09cd54 100644
--- a/Mage.Sets/src/mage/cards/h/HeroicDefiance.java
+++ b/Mage.Sets/src/mage/cards/h/HeroicDefiance.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class HeroicDefiance extends CardImpl {
+public final class HeroicDefiance extends CardImpl {
public HeroicDefiance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HeroicIntervention.java b/Mage.Sets/src/mage/cards/h/HeroicIntervention.java
index 0f603ed4e7a..d5b349b9d71 100644
--- a/Mage.Sets/src/mage/cards/h/HeroicIntervention.java
+++ b/Mage.Sets/src/mage/cards/h/HeroicIntervention.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author fireshoes
*/
-public class HeroicIntervention extends CardImpl {
+public final class HeroicIntervention extends CardImpl {
public HeroicIntervention(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/Heroism.java b/Mage.Sets/src/mage/cards/h/Heroism.java
index cb1c9ef02bf..0c135268951 100644
--- a/Mage.Sets/src/mage/cards/h/Heroism.java
+++ b/Mage.Sets/src/mage/cards/h/Heroism.java
@@ -58,18 +58,19 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class Heroism extends CardImpl {
+public final class Heroism extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a white creature");
+
static {
filter.add(new ColorPredicate(ObjectColor.WHITE));
}
public Heroism(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
+
// Sacrifice a white creature: For each attacking red creature, prevent all combat damage that would be dealt by that creature this turn unless its controller pays {2}{R}.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new HeroismEffect(), new SacrificeTargetCost(new TargetControlledCreaturePermanent(1,1, filter, true))));
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new HeroismEffect(), new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true))));
}
public Heroism(final Heroism card) {
@@ -83,8 +84,9 @@ public class Heroism extends CardImpl {
}
class HeroismEffect extends OneShotEffect {
-
+
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking red creature");
+
static {
filter.add(new ColorPredicate(ObjectColor.RED));
}
@@ -111,7 +113,7 @@ class HeroismEffect extends OneShotEffect {
Player player = game.getPlayer(game.getActivePlayerId());
Cost cost = new ManaCostsImpl("{2}{R}");
List permanentsToPrevent = new ArrayList<>();
- for (Permanent permanent : game.getState().getBattlefield().getAllActivePermanents(filter, player.getId(), game)) {
+ for (Permanent permanent : game.getState().getBattlefield().getAllActivePermanents(filter, game.getActivePlayerId(), game)) {
cost.clearPaid();
String message = "Pay " + cost.getText() + "? If you don't, " + permanent.getLogName() + "'s combat damage will be prevented this turn.";
if (player != null && player.chooseUse(Outcome.Neutral, message, source, game)) {
diff --git a/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java b/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java
index d3129daac17..94fee0d2b94 100644
--- a/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java
+++ b/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class HeronsGraceChampion extends CardImpl {
+public final class HeronsGraceChampion extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other Humans");
diff --git a/Mage.Sets/src/mage/cards/h/HerosBlade.java b/Mage.Sets/src/mage/cards/h/HerosBlade.java
index 88b28293504..e28e5d48336 100644
--- a/Mage.Sets/src/mage/cards/h/HerosBlade.java
+++ b/Mage.Sets/src/mage/cards/h/HerosBlade.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class HerosBlade extends CardImpl {
+public final class HerosBlade extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a legendary creature");
diff --git a/Mage.Sets/src/mage/cards/h/HerosDemise.java b/Mage.Sets/src/mage/cards/h/HerosDemise.java
index 4b40ffb428d..2555de89616 100644
--- a/Mage.Sets/src/mage/cards/h/HerosDemise.java
+++ b/Mage.Sets/src/mage/cards/h/HerosDemise.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class HerosDemise extends CardImpl {
+public final class HerosDemise extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature");
diff --git a/Mage.Sets/src/mage/cards/h/HerosDownfall.java b/Mage.Sets/src/mage/cards/h/HerosDownfall.java
index 528d41d7541..3f8fd952a8d 100644
--- a/Mage.Sets/src/mage/cards/h/HerosDownfall.java
+++ b/Mage.Sets/src/mage/cards/h/HerosDownfall.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
*
* @author LevelX2
*/
-public class HerosDownfall extends CardImpl {
+public final class HerosDownfall extends CardImpl {
public HerosDownfall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HerosResolve.java b/Mage.Sets/src/mage/cards/h/HerosResolve.java
index 6958444e5d9..a21167da5a5 100644
--- a/Mage.Sets/src/mage/cards/h/HerosResolve.java
+++ b/Mage.Sets/src/mage/cards/h/HerosResolve.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class HerosResolve extends CardImpl {
+public final class HerosResolve extends CardImpl {
public HerosResolve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/Hesitation.java b/Mage.Sets/src/mage/cards/h/Hesitation.java
index 13c56985818..ec3d2ee0301 100644
--- a/Mage.Sets/src/mage/cards/h/Hesitation.java
+++ b/Mage.Sets/src/mage/cards/h/Hesitation.java
@@ -43,7 +43,7 @@ import mage.filter.FilterSpell;
*
* @author LoneFox
*/
-public class Hesitation extends CardImpl {
+public final class Hesitation extends CardImpl {
public Hesitation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HewedStoneRetainers.java b/Mage.Sets/src/mage/cards/h/HewedStoneRetainers.java
index 9162149b2f1..17bdc266de1 100644
--- a/Mage.Sets/src/mage/cards/h/HewedStoneRetainers.java
+++ b/Mage.Sets/src/mage/cards/h/HewedStoneRetainers.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class HewedStoneRetainers extends CardImpl {
+public final class HewedStoneRetainers extends CardImpl {
public HewedStoneRetainers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/h/Hex.java b/Mage.Sets/src/mage/cards/h/Hex.java
index eb6a6c94805..5ed67b073fd 100644
--- a/Mage.Sets/src/mage/cards/h/Hex.java
+++ b/Mage.Sets/src/mage/cards/h/Hex.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Hex extends CardImpl {
+public final class Hex extends CardImpl {
public Hex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HexParasite.java b/Mage.Sets/src/mage/cards/h/HexParasite.java
index 4e6ee90f6a3..ec089c8161b 100644
--- a/Mage.Sets/src/mage/cards/h/HexParasite.java
+++ b/Mage.Sets/src/mage/cards/h/HexParasite.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author BetaSteward
*/
-public class HexParasite extends CardImpl {
+public final class HexParasite extends CardImpl {
public HexParasite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/h/HexplateGolem.java b/Mage.Sets/src/mage/cards/h/HexplateGolem.java
index fce93af4e7b..dadc588f21a 100644
--- a/Mage.Sets/src/mage/cards/h/HexplateGolem.java
+++ b/Mage.Sets/src/mage/cards/h/HexplateGolem.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class HexplateGolem extends CardImpl {
+public final class HexplateGolem extends CardImpl {
public HexplateGolem (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/h/Hibernation.java b/Mage.Sets/src/mage/cards/h/Hibernation.java
index 52165274316..04d0d57bc59 100644
--- a/Mage.Sets/src/mage/cards/h/Hibernation.java
+++ b/Mage.Sets/src/mage/cards/h/Hibernation.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Plopman
*/
-public class Hibernation extends CardImpl {
+public final class Hibernation extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("green permanents");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HibernationSliver.java b/Mage.Sets/src/mage/cards/h/HibernationSliver.java
index e548fb1734a..3c8dbb77ac6 100644
--- a/Mage.Sets/src/mage/cards/h/HibernationSliver.java
+++ b/Mage.Sets/src/mage/cards/h/HibernationSliver.java
@@ -48,7 +48,7 @@ import mage.filter.FilterPermanent;
*
* @author Plopman
*/
-public class HibernationSliver extends CardImpl {
+public final class HibernationSliver extends CardImpl {
public HibernationSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HibernationsEnd.java b/Mage.Sets/src/mage/cards/h/HibernationsEnd.java
index 048610a3c60..860d818c8fd 100644
--- a/Mage.Sets/src/mage/cards/h/HibernationsEnd.java
+++ b/Mage.Sets/src/mage/cards/h/HibernationsEnd.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LoneFox
*/
-public class HibernationsEnd extends CardImpl {
+public final class HibernationsEnd extends CardImpl {
public HibernationsEnd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HickoryWoodlot.java b/Mage.Sets/src/mage/cards/h/HickoryWoodlot.java
index 81f9a69a3bd..5871395d79c 100644
--- a/Mage.Sets/src/mage/cards/h/HickoryWoodlot.java
+++ b/Mage.Sets/src/mage/cards/h/HickoryWoodlot.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class HickoryWoodlot extends CardImpl {
+public final class HickoryWoodlot extends CardImpl {
public HickoryWoodlot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HiddenAncients.java b/Mage.Sets/src/mage/cards/h/HiddenAncients.java
index 4f39fdbb79b..8d1715ca2ad 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenAncients.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenAncients.java
@@ -50,7 +50,7 @@ import java.util.UUID;
* @author LoneFox
*
*/
-public class HiddenAncients extends CardImpl {
+public final class HiddenAncients extends CardImpl {
private static final FilterSpell filter = new FilterSpell("enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/h/HiddenDragonslayer.java b/Mage.Sets/src/mage/cards/h/HiddenDragonslayer.java
index 98b3fcec851..76de89fd84e 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenDragonslayer.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenDragonslayer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class HiddenDragonslayer extends CardImpl {
+public final class HiddenDragonslayer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/h/HiddenGibbons.java b/Mage.Sets/src/mage/cards/h/HiddenGibbons.java
index 7895602ae57..4cb3f673bdd 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenGibbons.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenGibbons.java
@@ -51,7 +51,7 @@ import java.util.UUID;
* @author LoneFox
*
*/
-public class HiddenGibbons extends CardImpl {
+public final class HiddenGibbons extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant spell");
diff --git a/Mage.Sets/src/mage/cards/h/HiddenGuerrillas.java b/Mage.Sets/src/mage/cards/h/HiddenGuerrillas.java
index 19c7087a316..c1f2ec4c11d 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenGuerrillas.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenGuerrillas.java
@@ -51,7 +51,7 @@ import java.util.UUID;
* @author LoneFox
*
*/
-public class HiddenGuerrillas extends CardImpl {
+public final class HiddenGuerrillas extends CardImpl {
public HiddenGuerrillas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HiddenHerbalists.java b/Mage.Sets/src/mage/cards/h/HiddenHerbalists.java
index 321e1b169b9..5a9d0a86add 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenHerbalists.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenHerbalists.java
@@ -44,7 +44,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author Styxo
*/
-public class HiddenHerbalists extends CardImpl {
+public final class HiddenHerbalists extends CardImpl {
public HiddenHerbalists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HiddenHerd.java b/Mage.Sets/src/mage/cards/h/HiddenHerd.java
index ad4a74a717f..a721eb54ad1 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenHerd.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenHerd.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.Token;
*
* @author TheElk801
*/
-public class HiddenHerd extends CardImpl {
+public final class HiddenHerd extends CardImpl {
public HiddenHerd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HiddenHorror.java b/Mage.Sets/src/mage/cards/h/HiddenHorror.java
index c1805c5310b..88e486065e0 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenHorror.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenHorror.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Loki
*/
-public class HiddenHorror extends CardImpl {
+public final class HiddenHorror extends CardImpl {
public HiddenHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HiddenPath.java b/Mage.Sets/src/mage/cards/h/HiddenPath.java
index dd7f335a880..07924a6752c 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenPath.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenPath.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class HiddenPath extends CardImpl {
+public final class HiddenPath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Green creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HiddenSpider.java b/Mage.Sets/src/mage/cards/h/HiddenSpider.java
index 0b019defbce..c9947140d39 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenSpider.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenSpider.java
@@ -53,7 +53,7 @@ import java.util.UUID;
* @author LoneFox
*
*/
-public class HiddenSpider extends CardImpl {
+public final class HiddenSpider extends CardImpl {
private static final FilterCreatureSpell filter = new FilterCreatureSpell("creature spell with flying");
diff --git a/Mage.Sets/src/mage/cards/h/HiddenStockpile.java b/Mage.Sets/src/mage/cards/h/HiddenStockpile.java
index 218c2309ab6..5e22798489e 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenStockpile.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenStockpile.java
@@ -51,7 +51,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author LevelX2
*/
-public class HiddenStockpile extends CardImpl {
+public final class HiddenStockpile extends CardImpl {
public HiddenStockpile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HiddenStrings.java b/Mage.Sets/src/mage/cards/h/HiddenStrings.java
index 1029835e292..c93db030262 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenStrings.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenStrings.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*/
-public class HiddenStrings extends CardImpl {
+public final class HiddenStrings extends CardImpl {
public HiddenStrings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HideSeek.java b/Mage.Sets/src/mage/cards/h/HideSeek.java
index a0b95477525..8d6bd6f1753 100644
--- a/Mage.Sets/src/mage/cards/h/HideSeek.java
+++ b/Mage.Sets/src/mage/cards/h/HideSeek.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class HideSeek extends SplitCard {
+public final class HideSeek extends SplitCard {
public HideSeek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}{W}", "{W}{B}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/h/HideousEnd.java b/Mage.Sets/src/mage/cards/h/HideousEnd.java
index 7a442f94322..2757cb388e9 100644
--- a/Mage.Sets/src/mage/cards/h/HideousEnd.java
+++ b/Mage.Sets/src/mage/cards/h/HideousEnd.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class HideousEnd extends CardImpl {
+public final class HideousEnd extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/h/HideousLaughter.java b/Mage.Sets/src/mage/cards/h/HideousLaughter.java
index d81c2d180f0..77ff5147838 100644
--- a/Mage.Sets/src/mage/cards/h/HideousLaughter.java
+++ b/Mage.Sets/src/mage/cards/h/HideousLaughter.java
@@ -40,7 +40,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class HideousLaughter extends CardImpl {
+public final class HideousLaughter extends CardImpl {
public HideousLaughter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HideousVisage.java b/Mage.Sets/src/mage/cards/h/HideousVisage.java
index 863f9403421..ac3a8dc194c 100644
--- a/Mage.Sets/src/mage/cards/h/HideousVisage.java
+++ b/Mage.Sets/src/mage/cards/h/HideousVisage.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Loki
*/
-public class HideousVisage extends CardImpl {
+public final class HideousVisage extends CardImpl {
public HideousVisage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HidetsugusSecondRite.java b/Mage.Sets/src/mage/cards/h/HidetsugusSecondRite.java
index 2ea2cb8a688..22d84a37811 100644
--- a/Mage.Sets/src/mage/cards/h/HidetsugusSecondRite.java
+++ b/Mage.Sets/src/mage/cards/h/HidetsugusSecondRite.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class HidetsugusSecondRite extends CardImpl {
+public final class HidetsugusSecondRite extends CardImpl {
public HidetsugusSecondRite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HieroglyphicIllumination.java b/Mage.Sets/src/mage/cards/h/HieroglyphicIllumination.java
index 977d061378b..20b1153d747 100644
--- a/Mage.Sets/src/mage/cards/h/HieroglyphicIllumination.java
+++ b/Mage.Sets/src/mage/cards/h/HieroglyphicIllumination.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class HieroglyphicIllumination extends CardImpl {
+public final class HieroglyphicIllumination extends CardImpl {
public HieroglyphicIllumination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HierophantsChalice.java b/Mage.Sets/src/mage/cards/h/HierophantsChalice.java
index e53d8336e55..c799b68d697 100644
--- a/Mage.Sets/src/mage/cards/h/HierophantsChalice.java
+++ b/Mage.Sets/src/mage/cards/h/HierophantsChalice.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class HierophantsChalice extends CardImpl {
+public final class HierophantsChalice extends CardImpl {
public HierophantsChalice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HighGround.java b/Mage.Sets/src/mage/cards/h/HighGround.java
index 9e879ec37ef..7376453fe22 100644
--- a/Mage.Sets/src/mage/cards/h/HighGround.java
+++ b/Mage.Sets/src/mage/cards/h/HighGround.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class HighGround extends CardImpl {
+public final class HighGround extends CardImpl {
public HighGround(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HighMarket.java b/Mage.Sets/src/mage/cards/h/HighMarket.java
index 9014a419edf..5b4e2c69353 100644
--- a/Mage.Sets/src/mage/cards/h/HighMarket.java
+++ b/Mage.Sets/src/mage/cards/h/HighMarket.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class HighMarket extends CardImpl {
+public final class HighMarket extends CardImpl {
public HighMarket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/h/HighPriestOfPenance.java b/Mage.Sets/src/mage/cards/h/HighPriestOfPenance.java
index 6f50c18ff61..f66142752cd 100644
--- a/Mage.Sets/src/mage/cards/h/HighPriestOfPenance.java
+++ b/Mage.Sets/src/mage/cards/h/HighPriestOfPenance.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author Plopman
*/
-public class HighPriestOfPenance extends CardImpl {
+public final class HighPriestOfPenance extends CardImpl {
public HighPriestOfPenance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HighSeas.java b/Mage.Sets/src/mage/cards/h/HighSeas.java
index e61452d07a2..614c3ab6721 100644
--- a/Mage.Sets/src/mage/cards/h/HighSeas.java
+++ b/Mage.Sets/src/mage/cards/h/HighSeas.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class HighSeas extends CardImpl {
+public final class HighSeas extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("Red creature spells and green creature spells");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HighSentinelsOfArashin.java b/Mage.Sets/src/mage/cards/h/HighSentinelsOfArashin.java
index 454f81cc436..b386a1aa662 100644
--- a/Mage.Sets/src/mage/cards/h/HighSentinelsOfArashin.java
+++ b/Mage.Sets/src/mage/cards/h/HighSentinelsOfArashin.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class HighSentinelsOfArashin extends CardImpl {
+public final class HighSentinelsOfArashin extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other creature you control with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HighTide.java b/Mage.Sets/src/mage/cards/h/HighTide.java
index dddbcd588d5..44096300a06 100644
--- a/Mage.Sets/src/mage/cards/h/HighTide.java
+++ b/Mage.Sets/src/mage/cards/h/HighTide.java
@@ -51,12 +51,12 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class HighTide extends CardImpl {
+public final class HighTide extends CardImpl {
public HighTide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
- // Until end of turn, whenever a player taps an Island for mana, that player adds {U} to their mana pool.
+ // Until end of turn, whenever a player taps an Island for mana, that player adds {U}.
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new HighTideTriggeredAbility()));
}
@@ -112,6 +112,6 @@ class HighTideTriggeredAbility extends DelayedTriggeredManaAbility {
@Override
public String getRule() {
- return "Until end of turn, whenever a player taps an Island for mana, that player adds {U} to their mana pool";
+ return "Until end of turn, whenever a player taps an Island for mana, that player adds {U}";
}
}
diff --git a/Mage.Sets/src/mage/cards/h/HighbornGhoul.java b/Mage.Sets/src/mage/cards/h/HighbornGhoul.java
index db025dbc05e..aaecd90e17d 100644
--- a/Mage.Sets/src/mage/cards/h/HighbornGhoul.java
+++ b/Mage.Sets/src/mage/cards/h/HighbornGhoul.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HighbornGhoul extends CardImpl {
+public final class HighbornGhoul extends CardImpl {
public HighbornGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HighlandBerserker.java b/Mage.Sets/src/mage/cards/h/HighlandBerserker.java
index 7230e3cb26d..64b8bee6ffa 100644
--- a/Mage.Sets/src/mage/cards/h/HighlandBerserker.java
+++ b/Mage.Sets/src/mage/cards/h/HighlandBerserker.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class HighlandBerserker extends CardImpl {
+public final class HighlandBerserker extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control");
diff --git a/Mage.Sets/src/mage/cards/h/HighlandGame.java b/Mage.Sets/src/mage/cards/h/HighlandGame.java
index 976c0bc3e97..cbed571dd2f 100644
--- a/Mage.Sets/src/mage/cards/h/HighlandGame.java
+++ b/Mage.Sets/src/mage/cards/h/HighlandGame.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class HighlandGame extends CardImpl {
+public final class HighlandGame extends CardImpl {
public HighlandGame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HighlandGiant.java b/Mage.Sets/src/mage/cards/h/HighlandGiant.java
index 446c86a4b32..e07d1b8acda 100644
--- a/Mage.Sets/src/mage/cards/h/HighlandGiant.java
+++ b/Mage.Sets/src/mage/cards/h/HighlandGiant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class HighlandGiant extends CardImpl {
+public final class HighlandGiant extends CardImpl {
public HighlandGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HighlandLake.java b/Mage.Sets/src/mage/cards/h/HighlandLake.java
index 05ef6e4d5bb..979650c058f 100644
--- a/Mage.Sets/src/mage/cards/h/HighlandLake.java
+++ b/Mage.Sets/src/mage/cards/h/HighlandLake.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class HighlandLake extends CardImpl {
+public final class HighlandLake extends CardImpl {
public HighlandLake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HighlandWeald.java b/Mage.Sets/src/mage/cards/h/HighlandWeald.java
index 6a20581e017..e7a8464de55 100644
--- a/Mage.Sets/src/mage/cards/h/HighlandWeald.java
+++ b/Mage.Sets/src/mage/cards/h/HighlandWeald.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author dustinconrad
*/
-public class HighlandWeald extends CardImpl {
+public final class HighlandWeald extends CardImpl {
public HighlandWeald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HighspireArtisan.java b/Mage.Sets/src/mage/cards/h/HighspireArtisan.java
index 18a2753930d..c0328db2d71 100644
--- a/Mage.Sets/src/mage/cards/h/HighspireArtisan.java
+++ b/Mage.Sets/src/mage/cards/h/HighspireArtisan.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class HighspireArtisan extends CardImpl {
+public final class HighspireArtisan extends CardImpl {
public HighspireArtisan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HighspireInfusion.java b/Mage.Sets/src/mage/cards/h/HighspireInfusion.java
index 81b7b7d91c6..394c61c6ec8 100644
--- a/Mage.Sets/src/mage/cards/h/HighspireInfusion.java
+++ b/Mage.Sets/src/mage/cards/h/HighspireInfusion.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class HighspireInfusion extends CardImpl {
+public final class HighspireInfusion extends CardImpl {
public HighspireInfusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HighspireMantis.java b/Mage.Sets/src/mage/cards/h/HighspireMantis.java
index 49bf7ad4246..5b798112854 100644
--- a/Mage.Sets/src/mage/cards/h/HighspireMantis.java
+++ b/Mage.Sets/src/mage/cards/h/HighspireMantis.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class HighspireMantis extends CardImpl {
+public final class HighspireMantis extends CardImpl {
public HighspireMantis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HightideHermit.java b/Mage.Sets/src/mage/cards/h/HightideHermit.java
index dd259147c78..419c1feed51 100644
--- a/Mage.Sets/src/mage/cards/h/HightideHermit.java
+++ b/Mage.Sets/src/mage/cards/h/HightideHermit.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HightideHermit extends CardImpl {
+public final class HightideHermit extends CardImpl {
public HightideHermit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HighwayRobber.java b/Mage.Sets/src/mage/cards/h/HighwayRobber.java
index 1cffc4f4a63..d231b8ebef4 100644
--- a/Mage.Sets/src/mage/cards/h/HighwayRobber.java
+++ b/Mage.Sets/src/mage/cards/h/HighwayRobber.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class HighwayRobber extends CardImpl {
+public final class HighwayRobber extends CardImpl {
public HighwayRobber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java b/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java
index 04ed7cd8660..ca32eed8d75 100644
--- a/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java
+++ b/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HigureTheStillWind extends CardImpl {
+public final class HigureTheStillWind extends CardImpl {
private static final FilterCard filter = new FilterCard("Ninja card");
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("Ninja creature");
diff --git a/Mage.Sets/src/mage/cards/h/Hijack.java b/Mage.Sets/src/mage/cards/h/Hijack.java
index 166ffdb3f2c..e03cde0745c 100644
--- a/Mage.Sets/src/mage/cards/h/Hijack.java
+++ b/Mage.Sets/src/mage/cards/h/Hijack.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class Hijack extends CardImpl {
+public final class Hijack extends CardImpl {
public Hijack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HikariTwilightGuardian.java b/Mage.Sets/src/mage/cards/h/HikariTwilightGuardian.java
index 9ab00f0348d..e7271faba39 100644
--- a/Mage.Sets/src/mage/cards/h/HikariTwilightGuardian.java
+++ b/Mage.Sets/src/mage/cards/h/HikariTwilightGuardian.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class HikariTwilightGuardian extends CardImpl {
+public final class HikariTwilightGuardian extends CardImpl {
public HikariTwilightGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HillGiant.java b/Mage.Sets/src/mage/cards/h/HillGiant.java
index b133585a89b..5c0a99017bb 100644
--- a/Mage.Sets/src/mage/cards/h/HillGiant.java
+++ b/Mage.Sets/src/mage/cards/h/HillGiant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HillGiant extends CardImpl {
+public final class HillGiant extends CardImpl {
public HillGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HillcomberGiant.java b/Mage.Sets/src/mage/cards/h/HillcomberGiant.java
index 04133437de0..ae9f3873f93 100644
--- a/Mage.Sets/src/mage/cards/h/HillcomberGiant.java
+++ b/Mage.Sets/src/mage/cards/h/HillcomberGiant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HillcomberGiant extends CardImpl {
+public final class HillcomberGiant extends CardImpl {
public HillcomberGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/Hinder.java b/Mage.Sets/src/mage/cards/h/Hinder.java
index 747896b1483..3e6f90be997 100644
--- a/Mage.Sets/src/mage/cards/h/Hinder.java
+++ b/Mage.Sets/src/mage/cards/h/Hinder.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class Hinder extends CardImpl {
+public final class Hinder extends CardImpl {
public Hinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HinderingLight.java b/Mage.Sets/src/mage/cards/h/HinderingLight.java
index 66cc9a3ad74..8fd50335c4a 100644
--- a/Mage.Sets/src/mage/cards/h/HinderingLight.java
+++ b/Mage.Sets/src/mage/cards/h/HinderingLight.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class HinderingLight extends CardImpl {
+public final class HinderingLight extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell that targets you or a permanent you control");
diff --git a/Mage.Sets/src/mage/cards/h/HinderingTouch.java b/Mage.Sets/src/mage/cards/h/HinderingTouch.java
index b5c5e8ba325..91e3e8b6d13 100644
--- a/Mage.Sets/src/mage/cards/h/HinderingTouch.java
+++ b/Mage.Sets/src/mage/cards/h/HinderingTouch.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author Plopman
*/
-public class HinderingTouch extends CardImpl {
+public final class HinderingTouch extends CardImpl {
public HinderingTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/Hindervines.java b/Mage.Sets/src/mage/cards/h/Hindervines.java
index 6eb783f3ebf..7c7495da866 100644
--- a/Mage.Sets/src/mage/cards/h/Hindervines.java
+++ b/Mage.Sets/src/mage/cards/h/Hindervines.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author jeffwadsworth
*/
-public class Hindervines extends CardImpl {
+public final class Hindervines extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with no +1/+1 counters on them");
diff --git a/Mage.Sets/src/mage/cards/h/HintOfInsanity.java b/Mage.Sets/src/mage/cards/h/HintOfInsanity.java
index f38224f0767..edcfc563ab8 100644
--- a/Mage.Sets/src/mage/cards/h/HintOfInsanity.java
+++ b/Mage.Sets/src/mage/cards/h/HintOfInsanity.java
@@ -1,114 +1,114 @@
-/*
- * 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.abilities.Ability;
-import mage.abilities.effects.OneShotEffect;
-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.filter.FilterCard;
-import mage.game.Game;
-import mage.players.Player;
-import mage.target.TargetPlayer;
-import mage.target.common.TargetCardInHand;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class HintOfInsanity extends CardImpl {
-
- public HintOfInsanity(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
-
- // Target player reveals his or her hand. That player discards all nonland cards with the same name as another card in his or her hand.
- this.getSpellAbility().addEffect(new HintOfInsanityEffect());
- this.getSpellAbility().addTarget(new TargetPlayer());
-
- }
-
- public HintOfInsanity(final HintOfInsanity card) {
- super(card);
- }
-
- @Override
- public HintOfInsanity copy() {
- return new HintOfInsanity(this);
- }
-}
-
-class HintOfInsanityEffect extends OneShotEffect {
-
- public HintOfInsanityEffect() {
- super(Outcome.Discard);
- this.staticText = "Target player reveals his or her hand. That player discards all nonland cards with the same name as another card in his or her hand";
- }
-
- public HintOfInsanityEffect(final HintOfInsanityEffect effect) {
- super(effect);
- }
-
- @Override
- public HintOfInsanityEffect copy() {
- return new HintOfInsanityEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- FilterCard filter = new FilterCard("card from your hand");
- Player targetPlayer = game.getPlayer(source.getFirstTarget());
- String nameOfChosenCard;
- Card chosenCard;
- if (targetPlayer != null) {
- TargetCardInHand targetCard = new TargetCardInHand(filter);
- targetCard.setNotTarget(true);
- Cards cardsInHand = new CardsImpl();
- cardsInHand.addAll(targetPlayer.getHand());
- targetPlayer.revealCards("Hint of Insanity Reveal", cardsInHand, game);
- if (!cardsInHand.isEmpty()
- && targetPlayer.choose(Outcome.Discard, targetCard, source.getSourceId(), game)) {
- chosenCard = game.getCard(targetCard.getFirstTarget());
- nameOfChosenCard = chosenCard.getName();
- for (Card card : cardsInHand.getCards(game)) {
- if (card.getName().equals(nameOfChosenCard)
- && !card.isLand()) {
- targetPlayer.discard(card, source, game);
- }
- }
- return true;
- }
- }
- return false;
- }
-}
+/*
+ * 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.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+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.filter.FilterCard;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.TargetPlayer;
+import mage.target.common.TargetCardInHand;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class HintOfInsanity extends CardImpl {
+
+ public HintOfInsanity(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
+
+ // Target player reveals his or her hand. That player discards all nonland cards with the same name as another card in his or her hand.
+ this.getSpellAbility().addEffect(new HintOfInsanityEffect());
+ this.getSpellAbility().addTarget(new TargetPlayer());
+
+ }
+
+ public HintOfInsanity(final HintOfInsanity card) {
+ super(card);
+ }
+
+ @Override
+ public HintOfInsanity copy() {
+ return new HintOfInsanity(this);
+ }
+}
+
+class HintOfInsanityEffect extends OneShotEffect {
+
+ public HintOfInsanityEffect() {
+ super(Outcome.Discard);
+ this.staticText = "Target player reveals his or her hand. That player discards all nonland cards with the same name as another card in his or her hand";
+ }
+
+ public HintOfInsanityEffect(final HintOfInsanityEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public HintOfInsanityEffect copy() {
+ return new HintOfInsanityEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ FilterCard filter = new FilterCard("card from your hand");
+ Player targetPlayer = game.getPlayer(source.getFirstTarget());
+ String nameOfChosenCard;
+ Card chosenCard;
+ if (targetPlayer != null) {
+ TargetCardInHand targetCard = new TargetCardInHand(filter);
+ targetCard.setNotTarget(true);
+ Cards cardsInHand = new CardsImpl();
+ cardsInHand.addAll(targetPlayer.getHand());
+ targetPlayer.revealCards("Hint of Insanity Reveal", cardsInHand, game);
+ if (!cardsInHand.isEmpty()
+ && targetPlayer.choose(Outcome.Discard, targetCard, source.getSourceId(), game)) {
+ chosenCard = game.getCard(targetCard.getFirstTarget());
+ nameOfChosenCard = chosenCard.getName();
+ for (Card card : cardsInHand.getCards(game)) {
+ if (card.getName().equals(nameOfChosenCard)
+ && !card.isLand()) {
+ targetPlayer.discard(card, source, game);
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/h/HinterlandDrake.java b/Mage.Sets/src/mage/cards/h/HinterlandDrake.java
index 3caafdb4fd0..562e97c081f 100644
--- a/Mage.Sets/src/mage/cards/h/HinterlandDrake.java
+++ b/Mage.Sets/src/mage/cards/h/HinterlandDrake.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author Styxo
*/
-public class HinterlandDrake extends CardImpl {
+public final class HinterlandDrake extends CardImpl {
public HinterlandDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HinterlandHarbor.java b/Mage.Sets/src/mage/cards/h/HinterlandHarbor.java
index 62aaa793824..2caf9349bec 100644
--- a/Mage.Sets/src/mage/cards/h/HinterlandHarbor.java
+++ b/Mage.Sets/src/mage/cards/h/HinterlandHarbor.java
@@ -48,7 +48,7 @@ import java.util.UUID;
/**
* @author nantuko
*/
-public class HinterlandHarbor extends CardImpl {
+public final class HinterlandHarbor extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/h/HinterlandHermit.java b/Mage.Sets/src/mage/cards/h/HinterlandHermit.java
index f4db5cdc9f1..84748a07043 100644
--- a/Mage.Sets/src/mage/cards/h/HinterlandHermit.java
+++ b/Mage.Sets/src/mage/cards/h/HinterlandHermit.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author BetaSteward
*/
-public class HinterlandHermit extends CardImpl {
+public final class HinterlandHermit extends CardImpl {
public HinterlandHermit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HinterlandLogger.java b/Mage.Sets/src/mage/cards/h/HinterlandLogger.java
index 6737ae18bd9..03ffe497869 100644
--- a/Mage.Sets/src/mage/cards/h/HinterlandLogger.java
+++ b/Mage.Sets/src/mage/cards/h/HinterlandLogger.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class HinterlandLogger extends CardImpl {
+public final class HinterlandLogger extends CardImpl {
public HinterlandLogger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HinterlandScourge.java b/Mage.Sets/src/mage/cards/h/HinterlandScourge.java
index 3cdac983f48..35dd5d1b321 100644
--- a/Mage.Sets/src/mage/cards/h/HinterlandScourge.java
+++ b/Mage.Sets/src/mage/cards/h/HinterlandScourge.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author BetaSteward
*/
-public class HinterlandScourge extends CardImpl {
+public final class HinterlandScourge extends CardImpl {
public HinterlandScourge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/h/HiredGiant.java b/Mage.Sets/src/mage/cards/h/HiredGiant.java
index baefbbb01e6..3a2be3dfaba 100644
--- a/Mage.Sets/src/mage/cards/h/HiredGiant.java
+++ b/Mage.Sets/src/mage/cards/h/HiredGiant.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000 & L_J
*/
-public class HiredGiant extends CardImpl {
+public final class HiredGiant extends CardImpl {
public HiredGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HiredMuscle.java b/Mage.Sets/src/mage/cards/h/HiredMuscle.java
index 8289ac2a18c..762f19218ff 100644
--- a/Mage.Sets/src/mage/cards/h/HiredMuscle.java
+++ b/Mage.Sets/src/mage/cards/h/HiredMuscle.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX2
*/
-public class HiredMuscle extends CardImpl {
+public final class HiredMuscle extends CardImpl {
public HiredMuscle(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/h/HiredTorturer.java b/Mage.Sets/src/mage/cards/h/HiredTorturer.java
index 9f7676e55c0..02a73a67286 100644
--- a/Mage.Sets/src/mage/cards/h/HiredTorturer.java
+++ b/Mage.Sets/src/mage/cards/h/HiredTorturer.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
*/
-public class HiredTorturer extends CardImpl {
+public final class HiredTorturer extends CardImpl {
public HiredTorturer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HisokaMinamoSensei.java b/Mage.Sets/src/mage/cards/h/HisokaMinamoSensei.java
index 7ba8e94c274..6cbcdde832c 100644
--- a/Mage.Sets/src/mage/cards/h/HisokaMinamoSensei.java
+++ b/Mage.Sets/src/mage/cards/h/HisokaMinamoSensei.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInHand;
/**
* @author LevelX
*/
-public class HisokaMinamoSensei extends CardImpl {
+public final class HisokaMinamoSensei extends CardImpl {
public HisokaMinamoSensei(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HisokasDefiance.java b/Mage.Sets/src/mage/cards/h/HisokasDefiance.java
index a1068c456d3..6dc2d0db0d2 100644
--- a/Mage.Sets/src/mage/cards/h/HisokasDefiance.java
+++ b/Mage.Sets/src/mage/cards/h/HisokasDefiance.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
/**
* @author Loki
*/
-public class HisokasDefiance extends CardImpl {
+public final class HisokasDefiance extends CardImpl {
private static final FilterSpell filter = new FilterSpell("Spirit or Arcane spell");
diff --git a/Mage.Sets/src/mage/cards/h/HisokasGuard.java b/Mage.Sets/src/mage/cards/h/HisokasGuard.java
index ace3a16599c..e0bb84377d5 100644
--- a/Mage.Sets/src/mage/cards/h/HisokasGuard.java
+++ b/Mage.Sets/src/mage/cards/h/HisokasGuard.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author nantuko
*/
-public class HisokasGuard extends CardImpl {
+public final class HisokasGuard extends CardImpl {
public HisokasGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HissingIguanar.java b/Mage.Sets/src/mage/cards/h/HissingIguanar.java
index 4aad54eac28..3c6e27587ac 100644
--- a/Mage.Sets/src/mage/cards/h/HissingIguanar.java
+++ b/Mage.Sets/src/mage/cards/h/HissingIguanar.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author North
*/
-public class HissingIguanar extends CardImpl {
+public final class HissingIguanar extends CardImpl {
public HissingIguanar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HissingMiasma.java b/Mage.Sets/src/mage/cards/h/HissingMiasma.java
index f67ff590779..b4e0f0f0f6f 100644
--- a/Mage.Sets/src/mage/cards/h/HissingMiasma.java
+++ b/Mage.Sets/src/mage/cards/h/HissingMiasma.java
@@ -39,7 +39,7 @@ import mage.constants.SetTargetPointer;
*
* @author lopho
*/
-public class HissingMiasma extends CardImpl {
+public final class HissingMiasma extends CardImpl {
private static final String RULE = "Whenever a creature attacks you, its controller loses 1 life.";
diff --git a/Mage.Sets/src/mage/cards/h/HissingQuagmire.java b/Mage.Sets/src/mage/cards/h/HissingQuagmire.java
index ce490c12308..2327d05a2cc 100644
--- a/Mage.Sets/src/mage/cards/h/HissingQuagmire.java
+++ b/Mage.Sets/src/mage/cards/h/HissingQuagmire.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class HissingQuagmire extends CardImpl {
+public final class HissingQuagmire extends CardImpl {
public HissingQuagmire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HistoryOfBenalia.java b/Mage.Sets/src/mage/cards/h/HistoryOfBenalia.java
index 833b4783b84..008c0a9c4ce 100644
--- a/Mage.Sets/src/mage/cards/h/HistoryOfBenalia.java
+++ b/Mage.Sets/src/mage/cards/h/HistoryOfBenalia.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.KnightToken;
*
* @author LevelX2
*/
-public class HistoryOfBenalia extends CardImpl {
+public final class HistoryOfBenalia extends CardImpl {
public HistoryOfBenalia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HitRun.java b/Mage.Sets/src/mage/cards/h/HitRun.java
index a0b2f3c12d9..fc3184e3ac1 100644
--- a/Mage.Sets/src/mage/cards/h/HitRun.java
+++ b/Mage.Sets/src/mage/cards/h/HitRun.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class HitRun extends SplitCard {
+public final class HitRun extends SplitCard {
public HitRun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}{R}", "{3}{R}{G}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/h/HitchclawRecluse.java b/Mage.Sets/src/mage/cards/h/HitchclawRecluse.java
index 4fbded4a393..9a6f309a82c 100644
--- a/Mage.Sets/src/mage/cards/h/HitchclawRecluse.java
+++ b/Mage.Sets/src/mage/cards/h/HitchclawRecluse.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class HitchclawRecluse extends CardImpl {
+public final class HitchclawRecluse extends CardImpl {
public HitchclawRecluse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HiveMind.java b/Mage.Sets/src/mage/cards/h/HiveMind.java
index 27f74cd1c77..e561d1581f4 100644
--- a/Mage.Sets/src/mage/cards/h/HiveMind.java
+++ b/Mage.Sets/src/mage/cards/h/HiveMind.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class HiveMind extends CardImpl {
+public final class HiveMind extends CardImpl {
public HiveMind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HiveStirrings.java b/Mage.Sets/src/mage/cards/h/HiveStirrings.java
index 9f1c2a9cdda..85bce2fb1ef 100644
--- a/Mage.Sets/src/mage/cards/h/HiveStirrings.java
+++ b/Mage.Sets/src/mage/cards/h/HiveStirrings.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.SliverToken;
*
* @author jeffwadsworth
*/
-public class HiveStirrings extends CardImpl {
+public final class HiveStirrings extends CardImpl {
public HiveStirrings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/Hivestone.java b/Mage.Sets/src/mage/cards/h/Hivestone.java
index 88a14d1cc8a..8f8831507c1 100644
--- a/Mage.Sets/src/mage/cards/h/Hivestone.java
+++ b/Mage.Sets/src/mage/cards/h/Hivestone.java
@@ -15,7 +15,7 @@ import mage.util.SubTypeList;
/**
* Created by Alexsandr0x.
*/
-public class Hivestone extends CardImpl {
+public final class Hivestone extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
diff --git a/Mage.Sets/src/mage/cards/h/HivisOfTheScale.java b/Mage.Sets/src/mage/cards/h/HivisOfTheScale.java
index 74e8546c33f..a2b6db29c92 100644
--- a/Mage.Sets/src/mage/cards/h/HivisOfTheScale.java
+++ b/Mage.Sets/src/mage/cards/h/HivisOfTheScale.java
@@ -56,7 +56,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class HivisOfTheScale extends CardImpl {
+public final class HivisOfTheScale extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
private static final FilterPermanent filterDragon = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/h/HixusPrisonWarden.java b/Mage.Sets/src/mage/cards/h/HixusPrisonWarden.java
index 6ac2db3717f..7233d7b4a10 100644
--- a/Mage.Sets/src/mage/cards/h/HixusPrisonWarden.java
+++ b/Mage.Sets/src/mage/cards/h/HixusPrisonWarden.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class HixusPrisonWarden extends CardImpl {
+public final class HixusPrisonWarden extends CardImpl {
public HixusPrisonWarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HoarShade.java b/Mage.Sets/src/mage/cards/h/HoarShade.java
index 7bc5a3f623c..2868da10e2d 100644
--- a/Mage.Sets/src/mage/cards/h/HoarShade.java
+++ b/Mage.Sets/src/mage/cards/h/HoarShade.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author hanasu
*/
-public class HoarShade extends CardImpl {
+public final class HoarShade extends CardImpl {
public HoarShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HoardSmelterDragon.java b/Mage.Sets/src/mage/cards/h/HoardSmelterDragon.java
index ca9cd332f02..3249de1935c 100644
--- a/Mage.Sets/src/mage/cards/h/HoardSmelterDragon.java
+++ b/Mage.Sets/src/mage/cards/h/HoardSmelterDragon.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class HoardSmelterDragon extends CardImpl {
+public final class HoardSmelterDragon extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HoardersGreed.java b/Mage.Sets/src/mage/cards/h/HoardersGreed.java
index 4392008fb99..bb7afbca828 100644
--- a/Mage.Sets/src/mage/cards/h/HoardersGreed.java
+++ b/Mage.Sets/src/mage/cards/h/HoardersGreed.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HoardersGreed extends CardImpl {
+public final class HoardersGreed extends CardImpl {
public HoardersGreed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HoardingDragon.java b/Mage.Sets/src/mage/cards/h/HoardingDragon.java
index c56d42c4a15..1bbe81d6efe 100644
--- a/Mage.Sets/src/mage/cards/h/HoardingDragon.java
+++ b/Mage.Sets/src/mage/cards/h/HoardingDragon.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author BetaSteward_at_googlemail.com
*/
-public class HoardingDragon extends CardImpl {
+public final class HoardingDragon extends CardImpl {
public HoardingDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/Hobble.java b/Mage.Sets/src/mage/cards/h/Hobble.java
index 0104168f218..70d7feafd7e 100644
--- a/Mage.Sets/src/mage/cards/h/Hobble.java
+++ b/Mage.Sets/src/mage/cards/h/Hobble.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Hobble extends CardImpl {
+public final class Hobble extends CardImpl {
public Hobble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HobgoblinDragoon.java b/Mage.Sets/src/mage/cards/h/HobgoblinDragoon.java
index 353efe87bc2..8f533f42789 100644
--- a/Mage.Sets/src/mage/cards/h/HobgoblinDragoon.java
+++ b/Mage.Sets/src/mage/cards/h/HobgoblinDragoon.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HobgoblinDragoon extends CardImpl {
+public final class HobgoblinDragoon extends CardImpl {
public HobgoblinDragoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/h/HokoriDustDrinker.java b/Mage.Sets/src/mage/cards/h/HokoriDustDrinker.java
index 14e6a8121ff..794a6a6893e 100644
--- a/Mage.Sets/src/mage/cards/h/HokoriDustDrinker.java
+++ b/Mage.Sets/src/mage/cards/h/HokoriDustDrinker.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
/**
* @author LevelX2
*/
-public class HokoriDustDrinker extends CardImpl {
+public final class HokoriDustDrinker extends CardImpl {
public HokoriDustDrinker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HoldAtBay.java b/Mage.Sets/src/mage/cards/h/HoldAtBay.java
index 0d54c09c0f3..9439d645460 100644
--- a/Mage.Sets/src/mage/cards/h/HoldAtBay.java
+++ b/Mage.Sets/src/mage/cards/h/HoldAtBay.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class HoldAtBay extends CardImpl {
+public final class HoldAtBay extends CardImpl {
public HoldAtBay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HoldTheGates.java b/Mage.Sets/src/mage/cards/h/HoldTheGates.java
index 82130a1f31b..a4f1179cc89 100644
--- a/Mage.Sets/src/mage/cards/h/HoldTheGates.java
+++ b/Mage.Sets/src/mage/cards/h/HoldTheGates.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class HoldTheGates extends CardImpl {
+public final class HoldTheGates extends CardImpl {
private static final FilterPermanent filter = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/h/HoldTheLine.java b/Mage.Sets/src/mage/cards/h/HoldTheLine.java
index 3dfa54ae48e..cb0c43ca859 100644
--- a/Mage.Sets/src/mage/cards/h/HoldTheLine.java
+++ b/Mage.Sets/src/mage/cards/h/HoldTheLine.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterBlockingCreature;
*
* @author LevelX
*/
-public class HoldTheLine extends CardImpl {
+public final class HoldTheLine extends CardImpl {
private static final FilterBlockingCreature filter = new FilterBlockingCreature("Blocking creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HoldoutSettlement.java b/Mage.Sets/src/mage/cards/h/HoldoutSettlement.java
index fde102d9aca..e0d1ae6d96f 100644
--- a/Mage.Sets/src/mage/cards/h/HoldoutSettlement.java
+++ b/Mage.Sets/src/mage/cards/h/HoldoutSettlement.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class HoldoutSettlement extends CardImpl {
+public final class HoldoutSettlement extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/h/HolisticWisdom.java b/Mage.Sets/src/mage/cards/h/HolisticWisdom.java
index 0b5e4f6e6e5..d1482b25d1b 100644
--- a/Mage.Sets/src/mage/cards/h/HolisticWisdom.java
+++ b/Mage.Sets/src/mage/cards/h/HolisticWisdom.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class HolisticWisdom extends CardImpl {
+public final class HolisticWisdom extends CardImpl {
public HolisticWisdom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HollowDogs.java b/Mage.Sets/src/mage/cards/h/HollowDogs.java
index 8adcf12e9a2..98309c588b3 100644
--- a/Mage.Sets/src/mage/cards/h/HollowDogs.java
+++ b/Mage.Sets/src/mage/cards/h/HollowDogs.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class HollowDogs extends CardImpl {
+public final class HollowDogs extends CardImpl {
public HollowDogs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HollowOne.java b/Mage.Sets/src/mage/cards/h/HollowOne.java
index f37f64c564b..bb8a25ad0a9 100644
--- a/Mage.Sets/src/mage/cards/h/HollowOne.java
+++ b/Mage.Sets/src/mage/cards/h/HollowOne.java
@@ -51,7 +51,7 @@ import mage.watchers.common.CardsCycledOrDiscardedThisTurnWatcher;
*
* @author spjspj
*/
-public class HollowOne extends CardImpl {
+public final class HollowOne extends CardImpl {
public HollowOne(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/h/HollowSpecter.java b/Mage.Sets/src/mage/cards/h/HollowSpecter.java
index 59541584aaf..0dd13573913 100644
--- a/Mage.Sets/src/mage/cards/h/HollowSpecter.java
+++ b/Mage.Sets/src/mage/cards/h/HollowSpecter.java
@@ -54,7 +54,7 @@ import mage.target.TargetCard;
*
* @author fireshoes
*/
-public class HollowSpecter extends CardImpl {
+public final class HollowSpecter extends CardImpl {
public HollowSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HollowTrees.java b/Mage.Sets/src/mage/cards/h/HollowTrees.java
index aeeb6b2db6c..07c5d5a72f7 100644
--- a/Mage.Sets/src/mage/cards/h/HollowTrees.java
+++ b/Mage.Sets/src/mage/cards/h/HollowTrees.java
@@ -54,7 +54,7 @@ import mage.counters.CounterType;
*
* @author anonymous
*/
-public class HollowTrees extends CardImpl {
+public final class HollowTrees extends CardImpl {
public HollowTrees(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HollowWarrior.java b/Mage.Sets/src/mage/cards/h/HollowWarrior.java
index fc39cb4e1be..482a71df1b8 100644
--- a/Mage.Sets/src/mage/cards/h/HollowWarrior.java
+++ b/Mage.Sets/src/mage/cards/h/HollowWarrior.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author L_J
*/
-public class HollowWarrior extends CardImpl {
+public final class HollowWarrior extends CardImpl {
public HollowWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HollowbornBarghest.java b/Mage.Sets/src/mage/cards/h/HollowbornBarghest.java
index 5fe56f264d8..4b20b3fc26b 100644
--- a/Mage.Sets/src/mage/cards/h/HollowbornBarghest.java
+++ b/Mage.Sets/src/mage/cards/h/HollowbornBarghest.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class HollowbornBarghest extends CardImpl {
+public final class HollowbornBarghest extends CardImpl {
private static final String rule = "At the beginning of your upkeep, if you have no cards in hand, each opponent loses 2 life.";
diff --git a/Mage.Sets/src/mage/cards/h/HollowhengeBeast.java b/Mage.Sets/src/mage/cards/h/HollowhengeBeast.java
index 9820d32aa72..e82bfc59594 100644
--- a/Mage.Sets/src/mage/cards/h/HollowhengeBeast.java
+++ b/Mage.Sets/src/mage/cards/h/HollowhengeBeast.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HollowhengeBeast extends CardImpl {
+public final class HollowhengeBeast extends CardImpl {
public HollowhengeBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HollowhengeScavenger.java b/Mage.Sets/src/mage/cards/h/HollowhengeScavenger.java
index c1c715273a8..25456426ade 100644
--- a/Mage.Sets/src/mage/cards/h/HollowhengeScavenger.java
+++ b/Mage.Sets/src/mage/cards/h/HollowhengeScavenger.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author nantuko
*/
-public class HollowhengeScavenger extends CardImpl {
+public final class HollowhengeScavenger extends CardImpl {
private static final String staticText = "Morbid - When {this} enters the battlefield, if a creature died this turn, you gain 5 life.";
diff --git a/Mage.Sets/src/mage/cards/h/HollowhengeSpirit.java b/Mage.Sets/src/mage/cards/h/HollowhengeSpirit.java
index 33edf027120..82fa1e7e2fb 100644
--- a/Mage.Sets/src/mage/cards/h/HollowhengeSpirit.java
+++ b/Mage.Sets/src/mage/cards/h/HollowhengeSpirit.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author BetaSteward
*/
-public class HollowhengeSpirit extends CardImpl {
+public final class HollowhengeSpirit extends CardImpl {
public HollowhengeSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/Hollowsage.java b/Mage.Sets/src/mage/cards/h/Hollowsage.java
index 8a8196fdbff..3244586273b 100644
--- a/Mage.Sets/src/mage/cards/h/Hollowsage.java
+++ b/Mage.Sets/src/mage/cards/h/Hollowsage.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class Hollowsage extends CardImpl {
+public final class Hollowsage extends CardImpl {
public Hollowsage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HolyArmor.java b/Mage.Sets/src/mage/cards/h/HolyArmor.java
index f9d6b09ff76..a62d5436fcf 100644
--- a/Mage.Sets/src/mage/cards/h/HolyArmor.java
+++ b/Mage.Sets/src/mage/cards/h/HolyArmor.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jonubuu
*/
-public class HolyArmor extends CardImpl {
+public final class HolyArmor extends CardImpl {
public HolyArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HolyDay.java b/Mage.Sets/src/mage/cards/h/HolyDay.java
index a6c8727cfee..9f70532498e 100644
--- a/Mage.Sets/src/mage/cards/h/HolyDay.java
+++ b/Mage.Sets/src/mage/cards/h/HolyDay.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class HolyDay extends CardImpl {
+public final class HolyDay extends CardImpl {
public HolyDay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HolyJusticiar.java b/Mage.Sets/src/mage/cards/h/HolyJusticiar.java
index 61192dfa633..b488a1d824b 100644
--- a/Mage.Sets/src/mage/cards/h/HolyJusticiar.java
+++ b/Mage.Sets/src/mage/cards/h/HolyJusticiar.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class HolyJusticiar extends CardImpl {
+public final class HolyJusticiar extends CardImpl {
public HolyJusticiar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HolyLight.java b/Mage.Sets/src/mage/cards/h/HolyLight.java
index f2c029aa0ec..6e2adedb34a 100644
--- a/Mage.Sets/src/mage/cards/h/HolyLight.java
+++ b/Mage.Sets/src/mage/cards/h/HolyLight.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author daagar
*/
-public class HolyLight extends CardImpl {
+public final class HolyLight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Nonwhite creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HolyMantle.java b/Mage.Sets/src/mage/cards/h/HolyMantle.java
index 5eeabc68ee7..397bd9a120a 100644
--- a/Mage.Sets/src/mage/cards/h/HolyMantle.java
+++ b/Mage.Sets/src/mage/cards/h/HolyMantle.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HolyMantle extends CardImpl {
+public final class HolyMantle extends CardImpl {
public HolyMantle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HolyStrength.java b/Mage.Sets/src/mage/cards/h/HolyStrength.java
index 18c755ad89a..06e51dc2838 100644
--- a/Mage.Sets/src/mage/cards/h/HolyStrength.java
+++ b/Mage.Sets/src/mage/cards/h/HolyStrength.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class HolyStrength extends CardImpl {
+public final class HolyStrength extends CardImpl {
public HolyStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/Homarid.java b/Mage.Sets/src/mage/cards/h/Homarid.java
index 039243ea541..0b85d776c6f 100644
--- a/Mage.Sets/src/mage/cards/h/Homarid.java
+++ b/Mage.Sets/src/mage/cards/h/Homarid.java
@@ -55,7 +55,7 @@ import mage.game.events.GameEvent;
*
* @author LoneFox
*/
-public class Homarid extends CardImpl {
+public final class Homarid extends CardImpl {
public Homarid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HomaridExplorer.java b/Mage.Sets/src/mage/cards/h/HomaridExplorer.java
index 4424c03505b..6b97572f8b4 100644
--- a/Mage.Sets/src/mage/cards/h/HomaridExplorer.java
+++ b/Mage.Sets/src/mage/cards/h/HomaridExplorer.java
@@ -11,7 +11,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.target.TargetPlayer;
-public class HomaridExplorer extends CardImpl {
+public final class HomaridExplorer extends CardImpl {
public HomaridExplorer(UUID ownerId, CardSetInfo cardSetInfo) {
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HomaridShaman.java b/Mage.Sets/src/mage/cards/h/HomaridShaman.java
index d6e1581088b..001c305c6cb 100644
--- a/Mage.Sets/src/mage/cards/h/HomaridShaman.java
+++ b/Mage.Sets/src/mage/cards/h/HomaridShaman.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class HomaridShaman extends CardImpl {
+public final class HomaridShaman extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/h/HomaridSpawningBed.java b/Mage.Sets/src/mage/cards/h/HomaridSpawningBed.java
index 101c619b95a..629abf284f6 100644
--- a/Mage.Sets/src/mage/cards/h/HomaridSpawningBed.java
+++ b/Mage.Sets/src/mage/cards/h/HomaridSpawningBed.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class HomaridSpawningBed extends CardImpl {
+public final class HomaridSpawningBed extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a blue creature");
diff --git a/Mage.Sets/src/mage/cards/h/HomaridWarrior.java b/Mage.Sets/src/mage/cards/h/HomaridWarrior.java
index 7f57bfd64c5..fbaa738f695 100644
--- a/Mage.Sets/src/mage/cards/h/HomaridWarrior.java
+++ b/Mage.Sets/src/mage/cards/h/HomaridWarrior.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class HomaridWarrior extends CardImpl {
+public final class HomaridWarrior extends CardImpl {
public HomaridWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HomewardPath.java b/Mage.Sets/src/mage/cards/h/HomewardPath.java
index e5f79f2c0c7..917b1f80d37 100644
--- a/Mage.Sets/src/mage/cards/h/HomewardPath.java
+++ b/Mage.Sets/src/mage/cards/h/HomewardPath.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HomewardPath extends CardImpl {
+public final class HomewardPath extends CardImpl {
public HomewardPath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HomicidalBrute.java b/Mage.Sets/src/mage/cards/h/HomicidalBrute.java
index f8810aa4ed5..08ec764fe2a 100644
--- a/Mage.Sets/src/mage/cards/h/HomicidalBrute.java
+++ b/Mage.Sets/src/mage/cards/h/HomicidalBrute.java
@@ -45,7 +45,7 @@ import mage.watchers.Watcher;
/**
* @author nantuko
*/
-public class HomicidalBrute extends CardImpl {
+public final class HomicidalBrute extends CardImpl {
public HomicidalBrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/h/HomicidalSeclusion.java b/Mage.Sets/src/mage/cards/h/HomicidalSeclusion.java
index 78c9d848661..56b67b5871a 100644
--- a/Mage.Sets/src/mage/cards/h/HomicidalSeclusion.java
+++ b/Mage.Sets/src/mage/cards/h/HomicidalSeclusion.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class HomicidalSeclusion extends CardImpl {
+public final class HomicidalSeclusion extends CardImpl {
private static final String rule = "As long as you control exactly one creature, that creature gets +3/+1";
diff --git a/Mage.Sets/src/mage/cards/h/HomingLightning.java b/Mage.Sets/src/mage/cards/h/HomingLightning.java
index 886d020dd98..3c3404aa84f 100644
--- a/Mage.Sets/src/mage/cards/h/HomingLightning.java
+++ b/Mage.Sets/src/mage/cards/h/HomingLightning.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class HomingLightning extends CardImpl {
+public final class HomingLightning extends CardImpl {
public HomingLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HomingSliver.java b/Mage.Sets/src/mage/cards/h/HomingSliver.java
index 31b22230801..bdd9c338742 100644
--- a/Mage.Sets/src/mage/cards/h/HomingSliver.java
+++ b/Mage.Sets/src/mage/cards/h/HomingSliver.java
@@ -49,7 +49,7 @@ import mage.players.Player;
* @author Luna Skyrise
*/
-public class HomingSliver extends CardImpl {
+public final class HomingSliver extends CardImpl {
private static final FilterCard filter = new FilterCard("Sliver card");
diff --git a/Mage.Sets/src/mage/cards/h/HomuraHumanAscendant.java b/Mage.Sets/src/mage/cards/h/HomuraHumanAscendant.java
index fb875fb34ce..fc4dcbc5352 100644
--- a/Mage.Sets/src/mage/cards/h/HomuraHumanAscendant.java
+++ b/Mage.Sets/src/mage/cards/h/HomuraHumanAscendant.java
@@ -60,7 +60,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HomuraHumanAscendant extends CardImpl {
+public final class HomuraHumanAscendant extends CardImpl {
public HomuraHumanAscendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.java b/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.java
index 47a46958b5c..0b11ceb902c 100644
--- a/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.java
+++ b/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.java
@@ -45,7 +45,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class HondenOfCleansingFire extends CardImpl {
+public final class HondenOfCleansingFire extends CardImpl {
final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
diff --git a/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.java b/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.java
index 4c3e26f6705..501662a64b0 100644
--- a/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.java
+++ b/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class HondenOfInfiniteRage extends CardImpl {
+public final class HondenOfInfiniteRage extends CardImpl {
final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
diff --git a/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java b/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java
index f063eb05ef6..35c541d2234 100644
--- a/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java
+++ b/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java
@@ -46,7 +46,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class HondenOfLifesWeb extends CardImpl {
+public final class HondenOfLifesWeb extends CardImpl {
final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
diff --git a/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java b/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java
index aa614f163ac..faf6df91a9e 100644
--- a/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java
+++ b/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java
@@ -47,7 +47,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class HondenOfNightsReach extends CardImpl {
+public final class HondenOfNightsReach extends CardImpl {
final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
diff --git a/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java b/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java
index 36d0e07dde5..3852924e33f 100644
--- a/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java
+++ b/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java
@@ -45,7 +45,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class HondenOfSeeingWinds extends CardImpl {
+public final class HondenOfSeeingWinds extends CardImpl {
final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
diff --git a/Mage.Sets/src/mage/cards/h/HonedKhopesh.java b/Mage.Sets/src/mage/cards/h/HonedKhopesh.java
index 7e3e99134d8..f5ed73e14c0 100644
--- a/Mage.Sets/src/mage/cards/h/HonedKhopesh.java
+++ b/Mage.Sets/src/mage/cards/h/HonedKhopesh.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class HonedKhopesh extends CardImpl {
+public final class HonedKhopesh extends CardImpl {
public HonedKhopesh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/h/HonorGuard.java b/Mage.Sets/src/mage/cards/h/HonorGuard.java
index aedfd9c76db..7b6ad26707e 100644
--- a/Mage.Sets/src/mage/cards/h/HonorGuard.java
+++ b/Mage.Sets/src/mage/cards/h/HonorGuard.java
@@ -40,7 +40,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class HonorGuard extends CardImpl {
+public final class HonorGuard extends CardImpl {
public HonorGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HonorOfThePure.java b/Mage.Sets/src/mage/cards/h/HonorOfThePure.java
index 13e3c55b528..0926a51664f 100644
--- a/Mage.Sets/src/mage/cards/h/HonorOfThePure.java
+++ b/Mage.Sets/src/mage/cards/h/HonorOfThePure.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class HonorOfThePure extends CardImpl {
+public final class HonorOfThePure extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HonorTheFallen.java b/Mage.Sets/src/mage/cards/h/HonorTheFallen.java
index 61e060db01d..482cb700c9f 100644
--- a/Mage.Sets/src/mage/cards/h/HonorTheFallen.java
+++ b/Mage.Sets/src/mage/cards/h/HonorTheFallen.java
@@ -45,7 +45,7 @@ import mage.players.Player;
* @author L_J
*/
-public class HonorTheFallen extends CardImpl {
+public final class HonorTheFallen extends CardImpl {
public HonorTheFallen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HonorWornShaku.java b/Mage.Sets/src/mage/cards/h/HonorWornShaku.java
index 7e4a332eb54..4bea614a4f0 100644
--- a/Mage.Sets/src/mage/cards/h/HonorWornShaku.java
+++ b/Mage.Sets/src/mage/cards/h/HonorWornShaku.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class HonorWornShaku extends CardImpl {
+public final class HonorWornShaku extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped legendary permanent");
diff --git a/Mage.Sets/src/mage/cards/h/HonorablePassage.java b/Mage.Sets/src/mage/cards/h/HonorablePassage.java
index 8ccf1200cf8..18c8191bde4 100644
--- a/Mage.Sets/src/mage/cards/h/HonorablePassage.java
+++ b/Mage.Sets/src/mage/cards/h/HonorablePassage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author L_J
*/
-public class HonorablePassage extends CardImpl {
+public final class HonorablePassage extends CardImpl {
public HonorablePassage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HonorableScout.java b/Mage.Sets/src/mage/cards/h/HonorableScout.java
index 3322c3b8163..70857d02a24 100644
--- a/Mage.Sets/src/mage/cards/h/HonorableScout.java
+++ b/Mage.Sets/src/mage/cards/h/HonorableScout.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author LoneFox
*/
-public class HonorableScout extends CardImpl {
+public final class HonorableScout extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black and/or red creature");
diff --git a/Mage.Sets/src/mage/cards/h/HonoredCropCaptain.java b/Mage.Sets/src/mage/cards/h/HonoredCropCaptain.java
index c7272a88919..5e013e33ec1 100644
--- a/Mage.Sets/src/mage/cards/h/HonoredCropCaptain.java
+++ b/Mage.Sets/src/mage/cards/h/HonoredCropCaptain.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author Styxo
*/
-public class HonoredCropCaptain extends CardImpl {
+public final class HonoredCropCaptain extends CardImpl {
public HonoredCropCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HonoredHierarch.java b/Mage.Sets/src/mage/cards/h/HonoredHierarch.java
index 952a501f55c..9ed3f0a7a71 100644
--- a/Mage.Sets/src/mage/cards/h/HonoredHierarch.java
+++ b/Mage.Sets/src/mage/cards/h/HonoredHierarch.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HonoredHierarch extends CardImpl {
+public final class HonoredHierarch extends CardImpl {
public HonoredHierarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HonoredHydra.java b/Mage.Sets/src/mage/cards/h/HonoredHydra.java
index 5df7ccd53fb..8fe7c15d8b1 100644
--- a/Mage.Sets/src/mage/cards/h/HonoredHydra.java
+++ b/Mage.Sets/src/mage/cards/h/HonoredHydra.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class HonoredHydra extends CardImpl {
+public final class HonoredHydra extends CardImpl {
public HonoredHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HonorsReward.java b/Mage.Sets/src/mage/cards/h/HonorsReward.java
index f5d2d680441..997fba731cc 100644
--- a/Mage.Sets/src/mage/cards/h/HonorsReward.java
+++ b/Mage.Sets/src/mage/cards/h/HonorsReward.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class HonorsReward extends CardImpl {
+public final class HonorsReward extends CardImpl {
public HonorsReward(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HoodedAssassin.java b/Mage.Sets/src/mage/cards/h/HoodedAssassin.java
index f594604cb95..48421866dbc 100644
--- a/Mage.Sets/src/mage/cards/h/HoodedAssassin.java
+++ b/Mage.Sets/src/mage/cards/h/HoodedAssassin.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HoodedAssassin extends CardImpl {
+public final class HoodedAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn");
diff --git a/Mage.Sets/src/mage/cards/h/HoodedBrawler.java b/Mage.Sets/src/mage/cards/h/HoodedBrawler.java
index cc37fb0d049..b5349a8a3d2 100644
--- a/Mage.Sets/src/mage/cards/h/HoodedBrawler.java
+++ b/Mage.Sets/src/mage/cards/h/HoodedBrawler.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class HoodedBrawler extends CardImpl {
+public final class HoodedBrawler extends CardImpl {
public HoodedBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HoodedHorror.java b/Mage.Sets/src/mage/cards/h/HoodedHorror.java
index f8123791b26..78e5fc23326 100644
--- a/Mage.Sets/src/mage/cards/h/HoodedHorror.java
+++ b/Mage.Sets/src/mage/cards/h/HoodedHorror.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HoodedHorror extends CardImpl {
+public final class HoodedHorror extends CardImpl {
public HoodedHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HoodedHydra.java b/Mage.Sets/src/mage/cards/h/HoodedHydra.java
index bb64d542566..f984b5ef8b3 100644
--- a/Mage.Sets/src/mage/cards/h/HoodedHydra.java
+++ b/Mage.Sets/src/mage/cards/h/HoodedHydra.java
@@ -53,7 +53,7 @@ import mage.game.permanent.token.SnakeToken;
*
* @author LevelX2
*/
-public class HoodedHydra extends CardImpl {
+public final class HoodedHydra extends CardImpl {
public HoodedHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HoodedKavu.java b/Mage.Sets/src/mage/cards/h/HoodedKavu.java
index b120c0d3948..4cd184c2fa6 100644
--- a/Mage.Sets/src/mage/cards/h/HoodedKavu.java
+++ b/Mage.Sets/src/mage/cards/h/HoodedKavu.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class HoodedKavu extends CardImpl {
+public final class HoodedKavu extends CardImpl {
public HoodedKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/Hoodwink.java b/Mage.Sets/src/mage/cards/h/Hoodwink.java
index 286d5a0f178..2ab89c3b99f 100644
--- a/Mage.Sets/src/mage/cards/h/Hoodwink.java
+++ b/Mage.Sets/src/mage/cards/h/Hoodwink.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author markedagain
*/
-public class Hoodwink extends CardImpl {
+public final class Hoodwink extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, enchantment, or land");
diff --git a/Mage.Sets/src/mage/cards/h/HoofSkulkin.java b/Mage.Sets/src/mage/cards/h/HoofSkulkin.java
index e29bc1abf0b..e7aba28901b 100644
--- a/Mage.Sets/src/mage/cards/h/HoofSkulkin.java
+++ b/Mage.Sets/src/mage/cards/h/HoofSkulkin.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class HoofSkulkin extends CardImpl {
+public final class HoofSkulkin extends CardImpl {
private static final FilterCreaturePermanent filterGreenCreature = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/h/HoofprintsOfTheStag.java b/Mage.Sets/src/mage/cards/h/HoofprintsOfTheStag.java
index 3328b5dcc62..a58be8c11ad 100644
--- a/Mage.Sets/src/mage/cards/h/HoofprintsOfTheStag.java
+++ b/Mage.Sets/src/mage/cards/h/HoofprintsOfTheStag.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.WhiteElementalToken;
*
* @author Loki
*/
-public class HoofprintsOfTheStag extends CardImpl {
+public final class HoofprintsOfTheStag extends CardImpl {
public HoofprintsOfTheStag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HootingMandrills.java b/Mage.Sets/src/mage/cards/h/HootingMandrills.java
index f8635f3897f..3f1aa4483b8 100644
--- a/Mage.Sets/src/mage/cards/h/HootingMandrills.java
+++ b/Mage.Sets/src/mage/cards/h/HootingMandrills.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class HootingMandrills extends CardImpl {
+public final class HootingMandrills extends CardImpl {
public HootingMandrills(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java b/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java
index d06fa08ab1a..54b4998426d 100644
--- a/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java
+++ b/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class HopeAgainstHope extends CardImpl {
+public final class HopeAgainstHope extends CardImpl {
public HopeAgainstHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HopeAndGlory.java b/Mage.Sets/src/mage/cards/h/HopeAndGlory.java
index 63b65b89410..d3360a177eb 100644
--- a/Mage.Sets/src/mage/cards/h/HopeAndGlory.java
+++ b/Mage.Sets/src/mage/cards/h/HopeAndGlory.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class HopeAndGlory extends CardImpl {
+public final class HopeAndGlory extends CardImpl {
public HopeAndGlory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HopeCharm.java b/Mage.Sets/src/mage/cards/h/HopeCharm.java
index 892ba64773c..bc5adb85192 100644
--- a/Mage.Sets/src/mage/cards/h/HopeCharm.java
+++ b/Mage.Sets/src/mage/cards/h/HopeCharm.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class HopeCharm extends CardImpl {
+public final class HopeCharm extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Aura");
diff --git a/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java b/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java
index 9bfc1de65a2..fb58c07d50a 100644
--- a/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java
+++ b/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java
@@ -60,7 +60,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class HopeOfGhirapur extends CardImpl {
+public final class HopeOfGhirapur extends CardImpl {
private static final FilterPlayer filter = new FilterPlayer("player who was dealt combat damage by {this} this turn");
diff --git a/Mage.Sets/src/mage/cards/h/HopeTender.java b/Mage.Sets/src/mage/cards/h/HopeTender.java
index b859754e53e..83821858635 100644
--- a/Mage.Sets/src/mage/cards/h/HopeTender.java
+++ b/Mage.Sets/src/mage/cards/h/HopeTender.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author ciaccona007
*/
-public class HopeTender extends CardImpl {
+public final class HopeTender extends CardImpl {
public HopeTender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HopefulEidolon.java b/Mage.Sets/src/mage/cards/h/HopefulEidolon.java
index 47b56603903..7fae0dcf4e8 100644
--- a/Mage.Sets/src/mage/cards/h/HopefulEidolon.java
+++ b/Mage.Sets/src/mage/cards/h/HopefulEidolon.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HopefulEidolon extends CardImpl {
+public final class HopefulEidolon extends CardImpl {
public HopefulEidolon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HoppingAutomaton.java b/Mage.Sets/src/mage/cards/h/HoppingAutomaton.java
index 952ed102276..e0c6ac20340 100644
--- a/Mage.Sets/src/mage/cards/h/HoppingAutomaton.java
+++ b/Mage.Sets/src/mage/cards/h/HoppingAutomaton.java
@@ -46,7 +46,7 @@ import mage.constants.Duration;
*
* @author TheElk801
*/
-public class HoppingAutomaton extends CardImpl {
+public final class HoppingAutomaton extends CardImpl {
public HoppingAutomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HordeAmbusher.java b/Mage.Sets/src/mage/cards/h/HordeAmbusher.java
index 446bc8a9781..93e0e853dd7 100644
--- a/Mage.Sets/src/mage/cards/h/HordeAmbusher.java
+++ b/Mage.Sets/src/mage/cards/h/HordeAmbusher.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class HordeAmbusher extends CardImpl {
+public final class HordeAmbusher extends CardImpl {
private final static FilterCard filter = new FilterCard("a red card in your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HordeOfBoggarts.java b/Mage.Sets/src/mage/cards/h/HordeOfBoggarts.java
index 06d1816e65f..8a67a70128e 100644
--- a/Mage.Sets/src/mage/cards/h/HordeOfBoggarts.java
+++ b/Mage.Sets/src/mage/cards/h/HordeOfBoggarts.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class HordeOfBoggarts extends CardImpl {
+public final class HordeOfBoggarts extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("red permanents you control");
diff --git a/Mage.Sets/src/mage/cards/h/HordeOfNotions.java b/Mage.Sets/src/mage/cards/h/HordeOfNotions.java
index 641dcf7b2f9..a5cacf11432 100644
--- a/Mage.Sets/src/mage/cards/h/HordeOfNotions.java
+++ b/Mage.Sets/src/mage/cards/h/HordeOfNotions.java
@@ -29,6 +29,7 @@ package mage.cards.h;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
@@ -50,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class HordeOfNotions extends CardImpl {
+public final class HordeOfNotions extends CardImpl {
private final static FilterCard filter = new FilterCard("Elemental card from your graveyard");
@@ -59,7 +60,7 @@ public class HordeOfNotions extends CardImpl {
}
public HordeOfNotions(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}{B}{R}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}{B}{R}{G}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.ELEMENTAL);
this.power = new MageInt(5);
@@ -110,7 +111,7 @@ class HordeOfNotionsEffect extends OneShotEffect {
if (controller != null) {
Card card = game.getCard(getTargetPointer().getFirst(game, source));
if (card != null && controller.chooseUse(outcome, "Play " + card.getName() + " from your graveyard for free?", source, game)) {
- controller.playCard(card, game, true, true);
+ controller.playCard(card, game, true, true, new MageObjectReference(source.getSourceObject(game), game));
}
return true;
}
diff --git a/Mage.Sets/src/mage/cards/h/HordelingOutburst.java b/Mage.Sets/src/mage/cards/h/HordelingOutburst.java
index a4123498bc5..b563c9754f6 100644
--- a/Mage.Sets/src/mage/cards/h/HordelingOutburst.java
+++ b/Mage.Sets/src/mage/cards/h/HordelingOutburst.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author LevelX2
*/
-public class HordelingOutburst extends CardImpl {
+public final class HordelingOutburst extends CardImpl {
public HordelingOutburst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HorizonCanopy.java b/Mage.Sets/src/mage/cards/h/HorizonCanopy.java
index afbe5753a5c..a12bd2beff5 100644
--- a/Mage.Sets/src/mage/cards/h/HorizonCanopy.java
+++ b/Mage.Sets/src/mage/cards/h/HorizonCanopy.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author jonubuu
*/
-public class HorizonCanopy extends CardImpl {
+public final class HorizonCanopy extends CardImpl {
public HorizonCanopy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HorizonChimera.java b/Mage.Sets/src/mage/cards/h/HorizonChimera.java
index 3138b5911b5..671b57919f8 100644
--- a/Mage.Sets/src/mage/cards/h/HorizonChimera.java
+++ b/Mage.Sets/src/mage/cards/h/HorizonChimera.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class HorizonChimera extends CardImpl {
+public final class HorizonChimera extends CardImpl {
public HorizonChimera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HorizonDrake.java b/Mage.Sets/src/mage/cards/h/HorizonDrake.java
index aca5dd5a844..2bfab5e5ae3 100644
--- a/Mage.Sets/src/mage/cards/h/HorizonDrake.java
+++ b/Mage.Sets/src/mage/cards/h/HorizonDrake.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterLandCard;
/**
* @author Loki
*/
-public class HorizonDrake extends CardImpl {
+public final class HorizonDrake extends CardImpl {
private static FilterLandCard filter = new FilterLandCard("lands");
diff --git a/Mage.Sets/src/mage/cards/h/HorizonScholar.java b/Mage.Sets/src/mage/cards/h/HorizonScholar.java
index fbdf144838a..3c919f8ced6 100644
--- a/Mage.Sets/src/mage/cards/h/HorizonScholar.java
+++ b/Mage.Sets/src/mage/cards/h/HorizonScholar.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class HorizonScholar extends CardImpl {
+public final class HorizonScholar extends CardImpl {
public HorizonScholar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HorizonSeed.java b/Mage.Sets/src/mage/cards/h/HorizonSeed.java
index 59db17dfdd4..6aef3434b78 100644
--- a/Mage.Sets/src/mage/cards/h/HorizonSeed.java
+++ b/Mage.Sets/src/mage/cards/h/HorizonSeed.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class HorizonSeed extends CardImpl {
+public final class HorizonSeed extends CardImpl {
public HorizonSeed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HorizonSpellbomb.java b/Mage.Sets/src/mage/cards/h/HorizonSpellbomb.java
index 641053abec0..3de7c31f887 100644
--- a/Mage.Sets/src/mage/cards/h/HorizonSpellbomb.java
+++ b/Mage.Sets/src/mage/cards/h/HorizonSpellbomb.java
@@ -48,14 +48,14 @@ import java.util.UUID;
*
* @author North
*/
-public class HorizonSpellbomb extends CardImpl {
+public final class HorizonSpellbomb extends CardImpl {
public HorizonSpellbomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
// {2}, {tap}, Sacrifice Horizon Spellbomb: Search your library for a basic land card, reveal it, and put it into your hand. Then shuffle your library.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new ManaCostsImpl("{2}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/h/HornOfDeafening.java b/Mage.Sets/src/mage/cards/h/HornOfDeafening.java
index 01b6313df59..21883f84437 100644
--- a/Mage.Sets/src/mage/cards/h/HornOfDeafening.java
+++ b/Mage.Sets/src/mage/cards/h/HornOfDeafening.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ilcartographer
*/
-public class HornOfDeafening extends CardImpl {
+public final class HornOfDeafening extends CardImpl {
public HornOfDeafening(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HornOfGreed.java b/Mage.Sets/src/mage/cards/h/HornOfGreed.java
index e71e1397943..cdf400debdb 100644
--- a/Mage.Sets/src/mage/cards/h/HornOfGreed.java
+++ b/Mage.Sets/src/mage/cards/h/HornOfGreed.java
@@ -43,7 +43,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class HornOfGreed extends CardImpl {
+public final class HornOfGreed extends CardImpl {
public HornOfGreed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HornOfPlenty.java b/Mage.Sets/src/mage/cards/h/HornOfPlenty.java
index b81686c703a..a6cca33ba46 100644
--- a/Mage.Sets/src/mage/cards/h/HornOfPlenty.java
+++ b/Mage.Sets/src/mage/cards/h/HornOfPlenty.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class HornOfPlenty extends CardImpl {
+public final class HornOfPlenty extends CardImpl {
public HornOfPlenty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/h/HornOfRamos.java b/Mage.Sets/src/mage/cards/h/HornOfRamos.java
index fb1479df6d8..537280a5e58 100644
--- a/Mage.Sets/src/mage/cards/h/HornOfRamos.java
+++ b/Mage.Sets/src/mage/cards/h/HornOfRamos.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Jgod
*/
-public class HornOfRamos extends CardImpl {
+public final class HornOfRamos extends CardImpl {
public HornOfRamos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HorncallersChant.java b/Mage.Sets/src/mage/cards/h/HorncallersChant.java
index 6496fa0632f..c8166abed0c 100644
--- a/Mage.Sets/src/mage/cards/h/HorncallersChant.java
+++ b/Mage.Sets/src/mage/cards/h/HorncallersChant.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.RhinoToken;
*
* @author LevleX2
*/
-public class HorncallersChant extends CardImpl {
+public final class HorncallersChant extends CardImpl {
public HorncallersChant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{7}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HornedCheetah.java b/Mage.Sets/src/mage/cards/h/HornedCheetah.java
index d2fe43df2a6..c99a29993f6 100644
--- a/Mage.Sets/src/mage/cards/h/HornedCheetah.java
+++ b/Mage.Sets/src/mage/cards/h/HornedCheetah.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class HornedCheetah extends CardImpl {
+public final class HornedCheetah extends CardImpl {
public HornedCheetah(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HornedHelm.java b/Mage.Sets/src/mage/cards/h/HornedHelm.java
index 53003f2bba0..f9d4b92841f 100644
--- a/Mage.Sets/src/mage/cards/h/HornedHelm.java
+++ b/Mage.Sets/src/mage/cards/h/HornedHelm.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class HornedHelm extends CardImpl {
+public final class HornedHelm extends CardImpl {
public HornedHelm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/h/HornedKavu.java b/Mage.Sets/src/mage/cards/h/HornedKavu.java
index a570ed90d8b..296c6f99b12 100644
--- a/Mage.Sets/src/mage/cards/h/HornedKavu.java
+++ b/Mage.Sets/src/mage/cards/h/HornedKavu.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*/
-public class HornedKavu extends CardImpl {
+public final class HornedKavu extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("red or green creature you control");
diff --git a/Mage.Sets/src/mage/cards/h/HornedSliver.java b/Mage.Sets/src/mage/cards/h/HornedSliver.java
index 076e6b67727..acfec6aa675 100644
--- a/Mage.Sets/src/mage/cards/h/HornedSliver.java
+++ b/Mage.Sets/src/mage/cards/h/HornedSliver.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class HornedSliver extends CardImpl {
+public final class HornedSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HornedTroll.java b/Mage.Sets/src/mage/cards/h/HornedTroll.java
index 217fbd84692..0dc679ed7f9 100644
--- a/Mage.Sets/src/mage/cards/h/HornedTroll.java
+++ b/Mage.Sets/src/mage/cards/h/HornedTroll.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class HornedTroll extends CardImpl {
+public final class HornedTroll extends CardImpl {
public HornedTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HornedTurtle.java b/Mage.Sets/src/mage/cards/h/HornedTurtle.java
index fde62036d44..f206ccc98ba 100644
--- a/Mage.Sets/src/mage/cards/h/HornedTurtle.java
+++ b/Mage.Sets/src/mage/cards/h/HornedTurtle.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class HornedTurtle extends CardImpl {
+public final class HornedTurtle extends CardImpl {
public HornedTurtle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HornetCannon.java b/Mage.Sets/src/mage/cards/h/HornetCannon.java
index 6f741f2c4ae..70c5cc1c2cc 100644
--- a/Mage.Sets/src/mage/cards/h/HornetCannon.java
+++ b/Mage.Sets/src/mage/cards/h/HornetCannon.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author FenrisulfrX
*/
-public class HornetCannon extends CardImpl {
+public final class HornetCannon extends CardImpl {
public HornetCannon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HornetCobra.java b/Mage.Sets/src/mage/cards/h/HornetCobra.java
index c8b1a5c2d2c..11f85d652de 100644
--- a/Mage.Sets/src/mage/cards/h/HornetCobra.java
+++ b/Mage.Sets/src/mage/cards/h/HornetCobra.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HornetCobra extends CardImpl {
+public final class HornetCobra extends CardImpl {
public HornetCobra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HornetHarasser.java b/Mage.Sets/src/mage/cards/h/HornetHarasser.java
index 49ea178ecba..3a0b257973c 100644
--- a/Mage.Sets/src/mage/cards/h/HornetHarasser.java
+++ b/Mage.Sets/src/mage/cards/h/HornetHarasser.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class HornetHarasser extends CardImpl {
+public final class HornetHarasser extends CardImpl {
public HornetHarasser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HornetNest.java b/Mage.Sets/src/mage/cards/h/HornetNest.java
index b8bb917844e..362740e4dc2 100644
--- a/Mage.Sets/src/mage/cards/h/HornetNest.java
+++ b/Mage.Sets/src/mage/cards/h/HornetNest.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HornetNest extends CardImpl {
+public final class HornetNest extends CardImpl {
public HornetNest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HornetQueen.java b/Mage.Sets/src/mage/cards/h/HornetQueen.java
index ce7b1baa494..4d08848fbdc 100644
--- a/Mage.Sets/src/mage/cards/h/HornetQueen.java
+++ b/Mage.Sets/src/mage/cards/h/HornetQueen.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.HornetQueenInsectToken;
*
* @author LevelX2
*/
-public class HornetQueen extends CardImpl {
+public final class HornetQueen extends CardImpl {
public HornetQueen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HornetSting.java b/Mage.Sets/src/mage/cards/h/HornetSting.java
index 63e2f45bbcc..576503da204 100644
--- a/Mage.Sets/src/mage/cards/h/HornetSting.java
+++ b/Mage.Sets/src/mage/cards/h/HornetSting.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class HornetSting extends CardImpl {
+public final class HornetSting extends CardImpl {
public HornetSting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/h/Hornswoggle.java b/Mage.Sets/src/mage/cards/h/Hornswoggle.java
index 4f8253d2e13..b2c214999a6 100644
--- a/Mage.Sets/src/mage/cards/h/Hornswoggle.java
+++ b/Mage.Sets/src/mage/cards/h/Hornswoggle.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Hornswoggle extends CardImpl {
+public final class Hornswoggle extends CardImpl {
public Hornswoggle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HorobiDeathsWail.java b/Mage.Sets/src/mage/cards/h/HorobiDeathsWail.java
index c827407585d..42283ba1084 100644
--- a/Mage.Sets/src/mage/cards/h/HorobiDeathsWail.java
+++ b/Mage.Sets/src/mage/cards/h/HorobiDeathsWail.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX
*/
-public class HorobiDeathsWail extends CardImpl {
+public final class HorobiDeathsWail extends CardImpl {
public HorobiDeathsWail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HorobisWhisper.java b/Mage.Sets/src/mage/cards/h/HorobisWhisper.java
index e1f03f0c3b5..b9bd3734d52 100644
--- a/Mage.Sets/src/mage/cards/h/HorobisWhisper.java
+++ b/Mage.Sets/src/mage/cards/h/HorobisWhisper.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class HorobisWhisper extends CardImpl {
+public final class HorobisWhisper extends CardImpl {
private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("nonblack creature");
private static final FilterLandPermanent filterCondition = new FilterLandPermanent("Swamp");
diff --git a/Mage.Sets/src/mage/cards/h/HorribleHordes.java b/Mage.Sets/src/mage/cards/h/HorribleHordes.java
index d962ee780cc..d7f4985408f 100644
--- a/Mage.Sets/src/mage/cards/h/HorribleHordes.java
+++ b/Mage.Sets/src/mage/cards/h/HorribleHordes.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class HorribleHordes extends CardImpl {
+public final class HorribleHordes extends CardImpl {
public HorribleHordes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/h/HorriblyAwry.java b/Mage.Sets/src/mage/cards/h/HorriblyAwry.java
index fa4414bd392..8dece7185b7 100644
--- a/Mage.Sets/src/mage/cards/h/HorriblyAwry.java
+++ b/Mage.Sets/src/mage/cards/h/HorriblyAwry.java
@@ -43,7 +43,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class HorriblyAwry extends CardImpl {
+public final class HorriblyAwry extends CardImpl {
private static final FilterCreatureSpell filter = new FilterCreatureSpell("creature spell with converted mana cost 4 or less");
diff --git a/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java b/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java
index ef516b175c6..ee5cfc06af3 100644
--- a/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java
+++ b/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class HorrifyingRevelation extends CardImpl {
+public final class HorrifyingRevelation extends CardImpl {
public HorrifyingRevelation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java b/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java
index 06a8f902edc..8b47da2c3f1 100644
--- a/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java
+++ b/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class HorrorOfHorrors extends CardImpl {
+public final class HorrorOfHorrors extends CardImpl {
private static final FilterControlledPermanent filter1 = new FilterControlledPermanent("a Swamp");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("black creature");
diff --git a/Mage.Sets/src/mage/cards/h/HorrorOfTheBrokenLands.java b/Mage.Sets/src/mage/cards/h/HorrorOfTheBrokenLands.java
index 9a13928397b..711f2a5899a 100644
--- a/Mage.Sets/src/mage/cards/h/HorrorOfTheBrokenLands.java
+++ b/Mage.Sets/src/mage/cards/h/HorrorOfTheBrokenLands.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author Styxo
*/
-public class HorrorOfTheBrokenLands extends CardImpl {
+public final class HorrorOfTheBrokenLands extends CardImpl {
public HorrorOfTheBrokenLands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HorrorOfTheDim.java b/Mage.Sets/src/mage/cards/h/HorrorOfTheDim.java
index 4030ea9a992..d41c1ab6f03 100644
--- a/Mage.Sets/src/mage/cards/h/HorrorOfTheDim.java
+++ b/Mage.Sets/src/mage/cards/h/HorrorOfTheDim.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HorrorOfTheDim extends CardImpl {
+public final class HorrorOfTheDim extends CardImpl {
public HorrorOfTheDim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HorseshoeCrab.java b/Mage.Sets/src/mage/cards/h/HorseshoeCrab.java
index 378404f074b..102832cb390 100644
--- a/Mage.Sets/src/mage/cards/h/HorseshoeCrab.java
+++ b/Mage.Sets/src/mage/cards/h/HorseshoeCrab.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class HorseshoeCrab extends CardImpl {
+public final class HorseshoeCrab extends CardImpl {
public HorseshoeCrab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HostageTaker.java b/Mage.Sets/src/mage/cards/h/HostageTaker.java
index 786b8265906..64aed7d74ba 100644
--- a/Mage.Sets/src/mage/cards/h/HostageTaker.java
+++ b/Mage.Sets/src/mage/cards/h/HostageTaker.java
@@ -62,7 +62,7 @@ import mage.util.CardUtil;
*
* @author TheElk801
*/
-public class HostageTaker extends CardImpl {
+public final class HostageTaker extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent("another target artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/h/HostileDesert.java b/Mage.Sets/src/mage/cards/h/HostileDesert.java
index bae75868292..7e153728901 100644
--- a/Mage.Sets/src/mage/cards/h/HostileDesert.java
+++ b/Mage.Sets/src/mage/cards/h/HostileDesert.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author ciaccona007
*/
-public class HostileDesert extends CardImpl {
+public final class HostileDesert extends CardImpl {
public HostileDesert(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/h/HostileMinotaur.java b/Mage.Sets/src/mage/cards/h/HostileMinotaur.java
new file mode 100644
index 00000000000..94657d993d7
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/h/HostileMinotaur.java
@@ -0,0 +1,64 @@
+/*
+ * 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.MageInt;
+import mage.constants.SubType;
+import mage.abilities.keyword.HasteAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class HostileMinotaur extends CardImpl {
+
+ public HostileMinotaur(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
+
+ this.subtype.add(SubType.MINOTAUR);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Haste
+ this.addAbility(HasteAbility.getInstance());
+
+ }
+
+ public HostileMinotaur(final HostileMinotaur card) {
+ super(card);
+ }
+
+ @Override
+ public HostileMinotaur copy() {
+ return new HostileMinotaur(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/h/HostileRealm.java b/Mage.Sets/src/mage/cards/h/HostileRealm.java
index 93b72a7471f..abde6e4f50c 100644
--- a/Mage.Sets/src/mage/cards/h/HostileRealm.java
+++ b/Mage.Sets/src/mage/cards/h/HostileRealm.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author emerald000
*/
-public class HostileRealm extends CardImpl {
+public final class HostileRealm extends CardImpl {
public HostileRealm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/Hostility.java b/Mage.Sets/src/mage/cards/h/Hostility.java
index 75e98069f3f..39acbdd0cc8 100644
--- a/Mage.Sets/src/mage/cards/h/Hostility.java
+++ b/Mage.Sets/src/mage/cards/h/Hostility.java
@@ -52,10 +52,10 @@ import mage.game.stack.Spell;
*
* @author LevelX2
*/
-public class Hostility extends CardImpl {
+public final class Hostility extends CardImpl {
public Hostility(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}{R}");
this.subtype.add(SubType.ELEMENTAL);
this.subtype.add(SubType.INCARNATION);
this.power = new MageInt(6);
@@ -124,17 +124,8 @@ class HostilityEffect extends PreventionEffectImpl {
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
PreventionEffectData preventionEffectData = preventDamageAction(event, source, game);
if (preventionEffectData.getPreventedDamage() > 0) {
- new CreateTokenEffect(new HostilityElementalToken(), preventionEffectData.getPreventedDamage()).apply(game, source);
+ new CreateTokenEffect(new ElementalShamanToken(true), preventionEffectData.getPreventedDamage()).apply(game, source);
}
return true;
}
}
-
-class HostilityElementalToken extends ElementalShamanToken {
-
- public HostilityElementalToken() {
- super("DD2");
- description = description + " with haste";
- addAbility(HasteAbility.getInstance());
- }
-}
diff --git a/Mage.Sets/src/mage/cards/h/HotPursuit.java b/Mage.Sets/src/mage/cards/h/HotPursuit.java
index 7cdda72edc6..8a858d57c3c 100644
--- a/Mage.Sets/src/mage/cards/h/HotPursuit.java
+++ b/Mage.Sets/src/mage/cards/h/HotPursuit.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class HotPursuit extends CardImpl {
+public final class HotPursuit extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature with a bounty counter on it");
diff --git a/Mage.Sets/src/mage/cards/h/HotSoup.java b/Mage.Sets/src/mage/cards/h/HotSoup.java
index 969b778c722..2ce52e5ff49 100644
--- a/Mage.Sets/src/mage/cards/h/HotSoup.java
+++ b/Mage.Sets/src/mage/cards/h/HotSoup.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class HotSoup extends CardImpl {
+public final class HotSoup extends CardImpl {
public HotSoup(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/h/HotSprings.java b/Mage.Sets/src/mage/cards/h/HotSprings.java
index 28e446c46fd..a26fec5b239 100644
--- a/Mage.Sets/src/mage/cards/h/HotSprings.java
+++ b/Mage.Sets/src/mage/cards/h/HotSprings.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class HotSprings extends CardImpl {
+public final class HotSprings extends CardImpl {
public HotSprings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HotheadedGiant.java b/Mage.Sets/src/mage/cards/h/HotheadedGiant.java
index 7b6e2c9a3ac..6b8f332f4f5 100644
--- a/Mage.Sets/src/mage/cards/h/HotheadedGiant.java
+++ b/Mage.Sets/src/mage/cards/h/HotheadedGiant.java
@@ -55,7 +55,7 @@ import mage.watchers.Watcher;
*
* @author jeffwadsworth
*/
-public class HotheadedGiant extends CardImpl {
+public final class HotheadedGiant extends CardImpl {
public HotheadedGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HoundOfGriselbrand.java b/Mage.Sets/src/mage/cards/h/HoundOfGriselbrand.java
index ddd9b57afc6..cf75cc4a3aa 100644
--- a/Mage.Sets/src/mage/cards/h/HoundOfGriselbrand.java
+++ b/Mage.Sets/src/mage/cards/h/HoundOfGriselbrand.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HoundOfGriselbrand extends CardImpl {
+public final class HoundOfGriselbrand extends CardImpl {
public HoundOfGriselbrand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java b/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java
index 71772a177c2..d0bacef6258 100644
--- a/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java
+++ b/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class HoundOfTheFarbogs extends CardImpl {
+public final class HoundOfTheFarbogs extends CardImpl {
final static private String RULE = "{this} has menace as long as there are four or more card types among cards in your graveyard";
diff --git a/Mage.Sets/src/mage/cards/h/HourOfDevastation.java b/Mage.Sets/src/mage/cards/h/HourOfDevastation.java
index a232c91702d..a54ea48c573 100644
--- a/Mage.Sets/src/mage/cards/h/HourOfDevastation.java
+++ b/Mage.Sets/src/mage/cards/h/HourOfDevastation.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author ciaccona007
*/
-public class HourOfDevastation extends CardImpl {
+public final class HourOfDevastation extends CardImpl {
private static FilterPermanent filter = new FilterPermanent("creature and each non-Bolas planeswalker");
diff --git a/Mage.Sets/src/mage/cards/h/HourOfEternity.java b/Mage.Sets/src/mage/cards/h/HourOfEternity.java
index 51c6c012fe6..14d9ce9c823 100644
--- a/Mage.Sets/src/mage/cards/h/HourOfEternity.java
+++ b/Mage.Sets/src/mage/cards/h/HourOfEternity.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class HourOfEternity extends CardImpl {
+public final class HourOfEternity extends CardImpl {
public HourOfEternity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HourOfGlory.java b/Mage.Sets/src/mage/cards/h/HourOfGlory.java
index b11f3759daa..edee2e6ec56 100644
--- a/Mage.Sets/src/mage/cards/h/HourOfGlory.java
+++ b/Mage.Sets/src/mage/cards/h/HourOfGlory.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class HourOfGlory extends CardImpl {
+public final class HourOfGlory extends CardImpl {
public HourOfGlory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HourOfNeed.java b/Mage.Sets/src/mage/cards/h/HourOfNeed.java
index 0b9911eab08..6525d678ec6 100644
--- a/Mage.Sets/src/mage/cards/h/HourOfNeed.java
+++ b/Mage.Sets/src/mage/cards/h/HourOfNeed.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HourOfNeed extends CardImpl {
+public final class HourOfNeed extends CardImpl {
public HourOfNeed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HourOfPromise.java b/Mage.Sets/src/mage/cards/h/HourOfPromise.java
index 627c8382ac4..7e433e857e1 100644
--- a/Mage.Sets/src/mage/cards/h/HourOfPromise.java
+++ b/Mage.Sets/src/mage/cards/h/HourOfPromise.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class HourOfPromise extends CardImpl {
+public final class HourOfPromise extends CardImpl {
public HourOfPromise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HourOfReckoning.java b/Mage.Sets/src/mage/cards/h/HourOfReckoning.java
index 2b87fa483ad..d1d84c304fb 100644
--- a/Mage.Sets/src/mage/cards/h/HourOfReckoning.java
+++ b/Mage.Sets/src/mage/cards/h/HourOfReckoning.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author Wehk
*/
-public class HourOfReckoning extends CardImpl {
+public final class HourOfReckoning extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HourOfRevelation.java b/Mage.Sets/src/mage/cards/h/HourOfRevelation.java
index b8c1ade95c8..b46c2419345 100644
--- a/Mage.Sets/src/mage/cards/h/HourOfRevelation.java
+++ b/Mage.Sets/src/mage/cards/h/HourOfRevelation.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterNonlandPermanent;
*
* @author fireshoes
*/
-public class HourOfRevelation extends CardImpl {
+public final class HourOfRevelation extends CardImpl {
public HourOfRevelation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HoverBarrier.java b/Mage.Sets/src/mage/cards/h/HoverBarrier.java
index 2ba9569e743..41303a82d3f 100644
--- a/Mage.Sets/src/mage/cards/h/HoverBarrier.java
+++ b/Mage.Sets/src/mage/cards/h/HoverBarrier.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HoverBarrier extends CardImpl {
+public final class HoverBarrier extends CardImpl {
public HoverBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HoverguardObserver.java b/Mage.Sets/src/mage/cards/h/HoverguardObserver.java
index 30b74c4ec82..03eeba63a62 100644
--- a/Mage.Sets/src/mage/cards/h/HoverguardObserver.java
+++ b/Mage.Sets/src/mage/cards/h/HoverguardObserver.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class HoverguardObserver extends CardImpl {
+public final class HoverguardObserver extends CardImpl {
public HoverguardObserver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HoverguardSweepers.java b/Mage.Sets/src/mage/cards/h/HoverguardSweepers.java
index d484c2e4993..2cf1fc105b5 100644
--- a/Mage.Sets/src/mage/cards/h/HoverguardSweepers.java
+++ b/Mage.Sets/src/mage/cards/h/HoverguardSweepers.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class HoverguardSweepers extends CardImpl {
+public final class HoverguardSweepers extends CardImpl {
public HoverguardSweepers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/Hovermyr.java b/Mage.Sets/src/mage/cards/h/Hovermyr.java
index c6992232c0f..6401b68290d 100644
--- a/Mage.Sets/src/mage/cards/h/Hovermyr.java
+++ b/Mage.Sets/src/mage/cards/h/Hovermyr.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Hovermyr extends CardImpl {
+public final class Hovermyr extends CardImpl {
public Hovermyr (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/h/HowlFromBeyond.java b/Mage.Sets/src/mage/cards/h/HowlFromBeyond.java
index 5b402fe67d5..abaa0f6ce1d 100644
--- a/Mage.Sets/src/mage/cards/h/HowlFromBeyond.java
+++ b/Mage.Sets/src/mage/cards/h/HowlFromBeyond.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author KholdFuzion
*/
-public class HowlFromBeyond extends CardImpl {
+public final class HowlFromBeyond extends CardImpl {
public HowlFromBeyond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HowlOfTheHorde.java b/Mage.Sets/src/mage/cards/h/HowlOfTheHorde.java
index 4a709af6d7d..e53137c00c4 100644
--- a/Mage.Sets/src/mage/cards/h/HowlOfTheHorde.java
+++ b/Mage.Sets/src/mage/cards/h/HowlOfTheHorde.java
@@ -48,7 +48,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author emerald000
*/
-public class HowlOfTheHorde extends CardImpl {
+public final class HowlOfTheHorde extends CardImpl {
public HowlOfTheHorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HowlOfTheNightPack.java b/Mage.Sets/src/mage/cards/h/HowlOfTheNightPack.java
index 9228dd007c7..79a29e19493 100644
--- a/Mage.Sets/src/mage/cards/h/HowlOfTheNightPack.java
+++ b/Mage.Sets/src/mage/cards/h/HowlOfTheNightPack.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.WolfToken;
*
* @author Loki
*/
-public class HowlOfTheNightPack extends CardImpl {
+public final class HowlOfTheNightPack extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("for each Forest you control");
diff --git a/Mage.Sets/src/mage/cards/h/Howlgeist.java b/Mage.Sets/src/mage/cards/h/Howlgeist.java
index 9f61a245790..2bff28c1f96 100644
--- a/Mage.Sets/src/mage/cards/h/Howlgeist.java
+++ b/Mage.Sets/src/mage/cards/h/Howlgeist.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class Howlgeist extends CardImpl {
+public final class Howlgeist extends CardImpl {
public Howlgeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HowlingBanshee.java b/Mage.Sets/src/mage/cards/h/HowlingBanshee.java
index 315dd28093f..7458dc4188e 100644
--- a/Mage.Sets/src/mage/cards/h/HowlingBanshee.java
+++ b/Mage.Sets/src/mage/cards/h/HowlingBanshee.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class HowlingBanshee extends CardImpl {
+public final class HowlingBanshee extends CardImpl {
public HowlingBanshee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HowlingChorus.java b/Mage.Sets/src/mage/cards/h/HowlingChorus.java
index 9896474e05c..184af247e04 100644
--- a/Mage.Sets/src/mage/cards/h/HowlingChorus.java
+++ b/Mage.Sets/src/mage/cards/h/HowlingChorus.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.EldraziHorrorToken;
*
* @author LevelX2
*/
-public class HowlingChorus extends CardImpl {
+public final class HowlingChorus extends CardImpl {
public HowlingChorus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/h/HowlingFury.java b/Mage.Sets/src/mage/cards/h/HowlingFury.java
index abf8e38b8fa..8c90f460863 100644
--- a/Mage.Sets/src/mage/cards/h/HowlingFury.java
+++ b/Mage.Sets/src/mage/cards/h/HowlingFury.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class HowlingFury extends CardImpl {
+public final class HowlingFury extends CardImpl {
public HowlingFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HowlingGale.java b/Mage.Sets/src/mage/cards/h/HowlingGale.java
index 70f2af26976..22700b2a3b8 100644
--- a/Mage.Sets/src/mage/cards/h/HowlingGale.java
+++ b/Mage.Sets/src/mage/cards/h/HowlingGale.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class HowlingGale extends CardImpl {
+public final class HowlingGale extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HowlingGolem.java b/Mage.Sets/src/mage/cards/h/HowlingGolem.java
index f598273a30f..a80889c5142 100644
--- a/Mage.Sets/src/mage/cards/h/HowlingGolem.java
+++ b/Mage.Sets/src/mage/cards/h/HowlingGolem.java
@@ -1,41 +1,41 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package mage.cards.h;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.common.AttacksOrBlocksTriggeredAbility;
-import mage.abilities.effects.common.DrawCardAllEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.SubType;
-
-/**
- *
- * @author Rystan
- */
-public class HowlingGolem extends CardImpl {
-
- public HowlingGolem(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
- this.subtype.add(SubType.GOLEM);
- this.power = new MageInt(2);
- this.toughness = new MageInt(3);
-
- // Whenever Howling Golem attacks or blocks, each player draws a card.
- this.addAbility(new AttacksOrBlocksTriggeredAbility(new DrawCardAllEffect(1), false));
- }
-
- public HowlingGolem(final HowlingGolem card) {
- super(card);
- }
-
- @Override
- public HowlingGolem copy() {
- return new HowlingGolem(this);
- }
-}
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package mage.cards.h;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.AttacksOrBlocksTriggeredAbility;
+import mage.abilities.effects.common.DrawCardAllEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+
+/**
+ *
+ * @author Rystan
+ */
+public final class HowlingGolem extends CardImpl {
+
+ public HowlingGolem(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
+ this.subtype.add(SubType.GOLEM);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(3);
+
+ // Whenever Howling Golem attacks or blocks, each player draws a card.
+ this.addAbility(new AttacksOrBlocksTriggeredAbility(new DrawCardAllEffect(1), false));
+ }
+
+ public HowlingGolem(final HowlingGolem card) {
+ super(card);
+ }
+
+ @Override
+ public HowlingGolem copy() {
+ return new HowlingGolem(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/h/HowlingMine.java b/Mage.Sets/src/mage/cards/h/HowlingMine.java
index 0efc28142f9..8845481d3b1 100644
--- a/Mage.Sets/src/mage/cards/h/HowlingMine.java
+++ b/Mage.Sets/src/mage/cards/h/HowlingMine.java
@@ -43,7 +43,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class HowlingMine extends CardImpl {
+public final class HowlingMine extends CardImpl {
public HowlingMine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/h/HowlingWolf.java b/Mage.Sets/src/mage/cards/h/HowlingWolf.java
index 27fd7a098f5..7654b820881 100644
--- a/Mage.Sets/src/mage/cards/h/HowlingWolf.java
+++ b/Mage.Sets/src/mage/cards/h/HowlingWolf.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class HowlingWolf extends CardImpl {
+public final class HowlingWolf extends CardImpl {
private static final FilterCard filter = new FilterCard("cards named Howling Wolf");
diff --git a/Mage.Sets/src/mage/cards/h/HowlpackAlpha.java b/Mage.Sets/src/mage/cards/h/HowlpackAlpha.java
index e48241869cc..931358d734d 100644
--- a/Mage.Sets/src/mage/cards/h/HowlpackAlpha.java
+++ b/Mage.Sets/src/mage/cards/h/HowlpackAlpha.java
@@ -54,7 +54,7 @@ import mage.game.permanent.token.WolfToken;
*
* @author North, noxx
*/
-public class HowlpackAlpha extends CardImpl {
+public final class HowlpackAlpha extends CardImpl {
private static final String ruleText = "At the beginning of your end step, create a 2/2 green Wolf creature token";
diff --git a/Mage.Sets/src/mage/cards/h/HowlpackOfEstwald.java b/Mage.Sets/src/mage/cards/h/HowlpackOfEstwald.java
index 1fdc240c75c..873bde6758d 100644
--- a/Mage.Sets/src/mage/cards/h/HowlpackOfEstwald.java
+++ b/Mage.Sets/src/mage/cards/h/HowlpackOfEstwald.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class HowlpackOfEstwald extends CardImpl {
+public final class HowlpackOfEstwald extends CardImpl {
public HowlpackOfEstwald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/h/HowlpackResurgence.java b/Mage.Sets/src/mage/cards/h/HowlpackResurgence.java
index ccdd72b0b31..f6d226ecbb5 100644
--- a/Mage.Sets/src/mage/cards/h/HowlpackResurgence.java
+++ b/Mage.Sets/src/mage/cards/h/HowlpackResurgence.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class HowlpackResurgence extends CardImpl {
+public final class HowlpackResurgence extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control that's a Wolf or a Werewolf");
diff --git a/Mage.Sets/src/mage/cards/h/HowlpackWolf.java b/Mage.Sets/src/mage/cards/h/HowlpackWolf.java
index dda751fd021..adcd76fa188 100644
--- a/Mage.Sets/src/mage/cards/h/HowlpackWolf.java
+++ b/Mage.Sets/src/mage/cards/h/HowlpackWolf.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class HowlpackWolf extends CardImpl {
+public final class HowlpackWolf extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Wolf or Werewolf");
diff --git a/Mage.Sets/src/mage/cards/h/HowltoothHollow.java b/Mage.Sets/src/mage/cards/h/HowltoothHollow.java
index 154b1dbb83b..57ff60ca25b 100644
--- a/Mage.Sets/src/mage/cards/h/HowltoothHollow.java
+++ b/Mage.Sets/src/mage/cards/h/HowltoothHollow.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HowltoothHollow extends CardImpl {
+public final class HowltoothHollow extends CardImpl {
public HowltoothHollow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HuaTuoHonoredPhysician.java b/Mage.Sets/src/mage/cards/h/HuaTuoHonoredPhysician.java
index dcdb94eeef4..46af387a5b7 100644
--- a/Mage.Sets/src/mage/cards/h/HuaTuoHonoredPhysician.java
+++ b/Mage.Sets/src/mage/cards/h/HuaTuoHonoredPhysician.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class HuaTuoHonoredPhysician extends CardImpl {
+public final class HuaTuoHonoredPhysician extends CardImpl {
public HuaTuoHonoredPhysician(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HuangZhongShuGeneral.java b/Mage.Sets/src/mage/cards/h/HuangZhongShuGeneral.java
index d5044c1ce91..f1c711006ca 100644
--- a/Mage.Sets/src/mage/cards/h/HuangZhongShuGeneral.java
+++ b/Mage.Sets/src/mage/cards/h/HuangZhongShuGeneral.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class HuangZhongShuGeneral extends CardImpl {
+public final class HuangZhongShuGeneral extends CardImpl {
public HuangZhongShuGeneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java b/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java
index 593d3856819..d5201243c1b 100644
--- a/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java
+++ b/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class HuatliDinosaurKnight extends CardImpl {
+public final class HuatliDinosaurKnight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dinosaur you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/h/HuatliRadiantChampion.java b/Mage.Sets/src/mage/cards/h/HuatliRadiantChampion.java
index c9b3d1e9d7d..fcbcc7e9faa 100644
--- a/Mage.Sets/src/mage/cards/h/HuatliRadiantChampion.java
+++ b/Mage.Sets/src/mage/cards/h/HuatliRadiantChampion.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HuatliRadiantChampion extends CardImpl {
+public final class HuatliRadiantChampion extends CardImpl {
public HuatliRadiantChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HuatliWarriorPoet.java b/Mage.Sets/src/mage/cards/h/HuatliWarriorPoet.java
index 51fa9e6ecda..f6c75458281 100644
--- a/Mage.Sets/src/mage/cards/h/HuatliWarriorPoet.java
+++ b/Mage.Sets/src/mage/cards/h/HuatliWarriorPoet.java
@@ -61,7 +61,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class HuatliWarriorPoet extends CardImpl {
+public final class HuatliWarriorPoet extends CardImpl {
public HuatliWarriorPoet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HuatlisSnubhorn.java b/Mage.Sets/src/mage/cards/h/HuatlisSnubhorn.java
index 74a2c6ea243..0d62e5f4a83 100644
--- a/Mage.Sets/src/mage/cards/h/HuatlisSnubhorn.java
+++ b/Mage.Sets/src/mage/cards/h/HuatlisSnubhorn.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class HuatlisSnubhorn extends CardImpl {
+public final class HuatlisSnubhorn extends CardImpl {
public HuatlisSnubhorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HuatlisSpurring.java b/Mage.Sets/src/mage/cards/h/HuatlisSpurring.java
index 0346ac0dc46..5eca4233731 100644
--- a/Mage.Sets/src/mage/cards/h/HuatlisSpurring.java
+++ b/Mage.Sets/src/mage/cards/h/HuatlisSpurring.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class HuatlisSpurring extends CardImpl {
+public final class HuatlisSpurring extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Jace planeswalker");
diff --git a/Mage.Sets/src/mage/cards/h/Hubris.java b/Mage.Sets/src/mage/cards/h/Hubris.java
index c8ce8463789..d7f7f66d02c 100644
--- a/Mage.Sets/src/mage/cards/h/Hubris.java
+++ b/Mage.Sets/src/mage/cards/h/Hubris.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Hubris extends CardImpl {
+public final class Hubris extends CardImpl {
public Hubris(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HuddleUp.java b/Mage.Sets/src/mage/cards/h/HuddleUp.java
new file mode 100644
index 00000000000..06926b6ea57
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/h/HuddleUp.java
@@ -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.h;
+
+import java.util.UUID;
+import mage.abilities.effects.common.DrawCardTargetEffect;
+import mage.abilities.keyword.AssistAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.target.TargetPlayer;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class HuddleUp extends CardImpl {
+
+ public HuddleUp(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // Two target players each draw a card.
+ this.getSpellAbility().addEffect(new DrawCardTargetEffect(1).setText("Two target players each draw a card"));
+ this.getSpellAbility().addTarget(new TargetPlayer(2));
+ }
+
+ public HuddleUp(final HuddleUp card) {
+ super(card);
+ }
+
+ @Override
+ public HuddleUp copy() {
+ return new HuddleUp(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/h/HulkingCyclops.java b/Mage.Sets/src/mage/cards/h/HulkingCyclops.java
index 62951a9d66c..dcd3be884b9 100644
--- a/Mage.Sets/src/mage/cards/h/HulkingCyclops.java
+++ b/Mage.Sets/src/mage/cards/h/HulkingCyclops.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class HulkingCyclops extends CardImpl {
+public final class HulkingCyclops extends CardImpl {
public HulkingCyclops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HulkingDevil.java b/Mage.Sets/src/mage/cards/h/HulkingDevil.java
index fd66e1233d8..8389bad9230 100644
--- a/Mage.Sets/src/mage/cards/h/HulkingDevil.java
+++ b/Mage.Sets/src/mage/cards/h/HulkingDevil.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class HulkingDevil extends CardImpl {
+public final class HulkingDevil extends CardImpl {
public HulkingDevil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HulkingGoblin.java b/Mage.Sets/src/mage/cards/h/HulkingGoblin.java
index 48ee1ef3544..c792d1d4416 100644
--- a/Mage.Sets/src/mage/cards/h/HulkingGoblin.java
+++ b/Mage.Sets/src/mage/cards/h/HulkingGoblin.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class HulkingGoblin extends CardImpl {
+public final class HulkingGoblin extends CardImpl {
public HulkingGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HulkingOgre.java b/Mage.Sets/src/mage/cards/h/HulkingOgre.java
index 741bae28ade..0d982e9858e 100644
--- a/Mage.Sets/src/mage/cards/h/HulkingOgre.java
+++ b/Mage.Sets/src/mage/cards/h/HulkingOgre.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class HulkingOgre extends CardImpl {
+public final class HulkingOgre extends CardImpl {
public HulkingOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HullBreach.java b/Mage.Sets/src/mage/cards/h/HullBreach.java
index 756d2d6dbe0..b3cc407d533 100644
--- a/Mage.Sets/src/mage/cards/h/HullBreach.java
+++ b/Mage.Sets/src/mage/cards/h/HullBreach.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class HullBreach extends CardImpl {
+public final class HullBreach extends CardImpl {
public HullBreach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HumOfTheRadix.java b/Mage.Sets/src/mage/cards/h/HumOfTheRadix.java
index 45eedf902ae..160bb92bb24 100644
--- a/Mage.Sets/src/mage/cards/h/HumOfTheRadix.java
+++ b/Mage.Sets/src/mage/cards/h/HumOfTheRadix.java
@@ -48,7 +48,7 @@ import mage.util.CardUtil;
*
* @author Pete Rossi
*/
-public class HumOfTheRadix extends CardImpl {
+public final class HumOfTheRadix extends CardImpl {
public HumOfTheRadix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HumanFrailty.java b/Mage.Sets/src/mage/cards/h/HumanFrailty.java
index 730d33e614d..a9e7a9f1d5e 100644
--- a/Mage.Sets/src/mage/cards/h/HumanFrailty.java
+++ b/Mage.Sets/src/mage/cards/h/HumanFrailty.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
/**
* @author noxx
*/
-public class HumanFrailty extends CardImpl {
+public final class HumanFrailty extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creature");
diff --git a/Mage.Sets/src/mage/cards/h/Humble.java b/Mage.Sets/src/mage/cards/h/Humble.java
index 1389a2a5647..58f027904f2 100644
--- a/Mage.Sets/src/mage/cards/h/Humble.java
+++ b/Mage.Sets/src/mage/cards/h/Humble.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*
*/
-public class Humble extends CardImpl {
+public final class Humble extends CardImpl {
public Humble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HumbleBudoka.java b/Mage.Sets/src/mage/cards/h/HumbleBudoka.java
index 5b2bb7d4104..b43c871695b 100644
--- a/Mage.Sets/src/mage/cards/h/HumbleBudoka.java
+++ b/Mage.Sets/src/mage/cards/h/HumbleBudoka.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class HumbleBudoka extends CardImpl {
+public final class HumbleBudoka extends CardImpl {
public HumbleBudoka (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HumbleDefector.java b/Mage.Sets/src/mage/cards/h/HumbleDefector.java
index afe4c94d865..557cbf39755 100644
--- a/Mage.Sets/src/mage/cards/h/HumbleDefector.java
+++ b/Mage.Sets/src/mage/cards/h/HumbleDefector.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetOpponent;
*
* @author jeffwadsworth
*/
-public class HumbleDefector extends CardImpl {
+public final class HumbleDefector extends CardImpl {
public HumbleDefector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HumbleTheBrute.java b/Mage.Sets/src/mage/cards/h/HumbleTheBrute.java
index 0c3d696936c..fd7c62a831a 100644
--- a/Mage.Sets/src/mage/cards/h/HumbleTheBrute.java
+++ b/Mage.Sets/src/mage/cards/h/HumbleTheBrute.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class HumbleTheBrute extends CardImpl {
+public final class HumbleTheBrute extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/h/HumblerOfMortals.java b/Mage.Sets/src/mage/cards/h/HumblerOfMortals.java
index aa74a0e0101..2177e6ef94a 100644
--- a/Mage.Sets/src/mage/cards/h/HumblerOfMortals.java
+++ b/Mage.Sets/src/mage/cards/h/HumblerOfMortals.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class HumblerOfMortals extends CardImpl {
+public final class HumblerOfMortals extends CardImpl {
public HumblerOfMortals(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/Humility.java b/Mage.Sets/src/mage/cards/h/Humility.java
index 112d7e205c3..00c4a81bce9 100644
--- a/Mage.Sets/src/mage/cards/h/Humility.java
+++ b/Mage.Sets/src/mage/cards/h/Humility.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class Humility extends CardImpl {
+public final class Humility extends CardImpl {
public Humility(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HundingGjornersen.java b/Mage.Sets/src/mage/cards/h/HundingGjornersen.java
index 0b6a4224519..b4ee9e1543e 100644
--- a/Mage.Sets/src/mage/cards/h/HundingGjornersen.java
+++ b/Mage.Sets/src/mage/cards/h/HundingGjornersen.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class HundingGjornersen extends CardImpl {
+public final class HundingGjornersen extends CardImpl {
public HundingGjornersen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HundredHandedOne.java b/Mage.Sets/src/mage/cards/h/HundredHandedOne.java
index aae18886d67..426dfc005f8 100644
--- a/Mage.Sets/src/mage/cards/h/HundredHandedOne.java
+++ b/Mage.Sets/src/mage/cards/h/HundredHandedOne.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HundredHandedOne extends CardImpl {
+public final class HundredHandedOne extends CardImpl {
public HundredHandedOne(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HundredTalonKami.java b/Mage.Sets/src/mage/cards/h/HundredTalonKami.java
index 693459cb0b8..e8ae72dc426 100644
--- a/Mage.Sets/src/mage/cards/h/HundredTalonKami.java
+++ b/Mage.Sets/src/mage/cards/h/HundredTalonKami.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class HundredTalonKami extends CardImpl {
+public final class HundredTalonKami extends CardImpl {
public HundredTalonKami (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HundredTalonStrike.java b/Mage.Sets/src/mage/cards/h/HundredTalonStrike.java
index 6848d7cf91c..9602604ab37 100644
--- a/Mage.Sets/src/mage/cards/h/HundredTalonStrike.java
+++ b/Mage.Sets/src/mage/cards/h/HundredTalonStrike.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class HundredTalonStrike extends CardImpl {
+public final class HundredTalonStrike extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped white creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/h/Hundroog.java b/Mage.Sets/src/mage/cards/h/Hundroog.java
index dae333666de..982b5076f8e 100644
--- a/Mage.Sets/src/mage/cards/h/Hundroog.java
+++ b/Mage.Sets/src/mage/cards/h/Hundroog.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Hundroog extends CardImpl {
+public final class Hundroog extends CardImpl {
public Hundroog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HungerOfTheHowlpack.java b/Mage.Sets/src/mage/cards/h/HungerOfTheHowlpack.java
index 5d9caebad07..48a878e42c4 100644
--- a/Mage.Sets/src/mage/cards/h/HungerOfTheHowlpack.java
+++ b/Mage.Sets/src/mage/cards/h/HungerOfTheHowlpack.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class HungerOfTheHowlpack extends CardImpl {
+public final class HungerOfTheHowlpack extends CardImpl {
public HungerOfTheHowlpack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HungerOfTheNim.java b/Mage.Sets/src/mage/cards/h/HungerOfTheNim.java
index 943dd93559f..1e65bd695f4 100644
--- a/Mage.Sets/src/mage/cards/h/HungerOfTheNim.java
+++ b/Mage.Sets/src/mage/cards/h/HungerOfTheNim.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class HungerOfTheNim extends CardImpl {
+public final class HungerOfTheNim extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
diff --git a/Mage.Sets/src/mage/cards/h/HungeringYeti.java b/Mage.Sets/src/mage/cards/h/HungeringYeti.java
index 7851f64d3c9..a62dc9e3f3b 100644
--- a/Mage.Sets/src/mage/cards/h/HungeringYeti.java
+++ b/Mage.Sets/src/mage/cards/h/HungeringYeti.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class HungeringYeti extends CardImpl {
+public final class HungeringYeti extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("as long as you control a green or blue permanent");
diff --git a/Mage.Sets/src/mage/cards/h/HungryDragonsnake.java b/Mage.Sets/src/mage/cards/h/HungryDragonsnake.java
index 424118e3a10..4c9db454047 100644
--- a/Mage.Sets/src/mage/cards/h/HungryDragonsnake.java
+++ b/Mage.Sets/src/mage/cards/h/HungryDragonsnake.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Styxo
*/
-public class HungryDragonsnake extends CardImpl {
+public final class HungryDragonsnake extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("under an opponents's control");
diff --git a/Mage.Sets/src/mage/cards/h/HungryFlames.java b/Mage.Sets/src/mage/cards/h/HungryFlames.java
index 2e220952b12..388c9003329 100644
--- a/Mage.Sets/src/mage/cards/h/HungryFlames.java
+++ b/Mage.Sets/src/mage/cards/h/HungryFlames.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
/**
* @author JRHerlehy
*/
-public class HungryFlames extends CardImpl {
+public final class HungryFlames extends CardImpl {
public HungryFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HungryHungryHeifer.java b/Mage.Sets/src/mage/cards/h/HungryHungryHeifer.java
index 40ffa92a0b4..91a6213f6dc 100644
--- a/Mage.Sets/src/mage/cards/h/HungryHungryHeifer.java
+++ b/Mage.Sets/src/mage/cards/h/HungryHungryHeifer.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author spjspj
*/
-public class HungryHungryHeifer extends CardImpl {
+public final class HungryHungryHeifer extends CardImpl {
public HungryHungryHeifer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HungryLynx.java b/Mage.Sets/src/mage/cards/h/HungryLynx.java
index 492052b883e..7d121f525e2 100644
--- a/Mage.Sets/src/mage/cards/h/HungryLynx.java
+++ b/Mage.Sets/src/mage/cards/h/HungryLynx.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetOpponent;
*
* @author Saga
*/
-public class HungryLynx extends CardImpl {
+public final class HungryLynx extends CardImpl {
private final static FilterControlledCreaturePermanent filterCat = new FilterControlledCreaturePermanent("Cats");
static {
diff --git a/Mage.Sets/src/mage/cards/h/HungryMist.java b/Mage.Sets/src/mage/cards/h/HungryMist.java
index ebd836557fd..23471ca8933 100644
--- a/Mage.Sets/src/mage/cards/h/HungryMist.java
+++ b/Mage.Sets/src/mage/cards/h/HungryMist.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class HungryMist extends CardImpl {
+public final class HungryMist extends CardImpl {
public HungryMist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HungrySpriggan.java b/Mage.Sets/src/mage/cards/h/HungrySpriggan.java
index d63be940355..6ed2cf0eff8 100644
--- a/Mage.Sets/src/mage/cards/h/HungrySpriggan.java
+++ b/Mage.Sets/src/mage/cards/h/HungrySpriggan.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class HungrySpriggan extends CardImpl {
+public final class HungrySpriggan extends CardImpl {
public HungrySpriggan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntDown.java b/Mage.Sets/src/mage/cards/h/HuntDown.java
index e2c40487b07..299176377d7 100644
--- a/Mage.Sets/src/mage/cards/h/HuntDown.java
+++ b/Mage.Sets/src/mage/cards/h/HuntDown.java
@@ -44,7 +44,7 @@ import mage.watchers.common.BlockedAttackerWatcher;
*
* @author jeffwadsworth
*/
-public class HuntDown extends CardImpl {
+public final class HuntDown extends CardImpl {
private static final FilterCreaturePermanent filterMustBlock = new FilterCreaturePermanent("Creature that must block");
private static final FilterCreaturePermanent filterToBeBlocked = new FilterCreaturePermanent("Creature that is to be blocked");
diff --git a/Mage.Sets/src/mage/cards/h/HuntTheHunter.java b/Mage.Sets/src/mage/cards/h/HuntTheHunter.java
index 9a2dc29460f..4476c4f9902 100644
--- a/Mage.Sets/src/mage/cards/h/HuntTheHunter.java
+++ b/Mage.Sets/src/mage/cards/h/HuntTheHunter.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HuntTheHunter extends CardImpl {
+public final class HuntTheHunter extends CardImpl {
private static final FilterControlledCreaturePermanent filterControlledGreen = new FilterControlledCreaturePermanent("green creature you control");
private static final FilterCreaturePermanent filterOpponentGreen = new FilterCreaturePermanent("green creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/h/HuntTheWeak.java b/Mage.Sets/src/mage/cards/h/HuntTheWeak.java
index 4670631262e..2341e7c21cd 100644
--- a/Mage.Sets/src/mage/cards/h/HuntTheWeak.java
+++ b/Mage.Sets/src/mage/cards/h/HuntTheWeak.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HuntTheWeak extends CardImpl {
+public final class HuntTheWeak extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/h/HuntToExtinction.java b/Mage.Sets/src/mage/cards/h/HuntToExtinction.java
index 205813b07d7..5f7bb79334d 100644
--- a/Mage.Sets/src/mage/cards/h/HuntToExtinction.java
+++ b/Mage.Sets/src/mage/cards/h/HuntToExtinction.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class HuntToExtinction extends CardImpl {
+public final class HuntToExtinction extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with a bounty counter on it");
diff --git a/Mage.Sets/src/mage/cards/h/HuntedDragon.java b/Mage.Sets/src/mage/cards/h/HuntedDragon.java
index 83c3ed88ffb..61122b84c2d 100644
--- a/Mage.Sets/src/mage/cards/h/HuntedDragon.java
+++ b/Mage.Sets/src/mage/cards/h/HuntedDragon.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class HuntedDragon extends CardImpl {
+public final class HuntedDragon extends CardImpl {
public HuntedDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntedGhoul.java b/Mage.Sets/src/mage/cards/h/HuntedGhoul.java
index 98bff42edd6..ba7dbf18302 100644
--- a/Mage.Sets/src/mage/cards/h/HuntedGhoul.java
+++ b/Mage.Sets/src/mage/cards/h/HuntedGhoul.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterCreaturePermanent;
/**
* @author noxx
*/
-public class HuntedGhoul extends CardImpl {
+public final class HuntedGhoul extends CardImpl {
public HuntedGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntedHorror.java b/Mage.Sets/src/mage/cards/h/HuntedHorror.java
index e3c1d711350..1c5c045589a 100644
--- a/Mage.Sets/src/mage/cards/h/HuntedHorror.java
+++ b/Mage.Sets/src/mage/cards/h/HuntedHorror.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class HuntedHorror extends CardImpl {
+public final class HuntedHorror extends CardImpl {
public HuntedHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntedLammasu.java b/Mage.Sets/src/mage/cards/h/HuntedLammasu.java
index 303a69696bb..d26ef7770bf 100644
--- a/Mage.Sets/src/mage/cards/h/HuntedLammasu.java
+++ b/Mage.Sets/src/mage/cards/h/HuntedLammasu.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
/**
* @author Loki
*/
-public class HuntedLammasu extends CardImpl {
+public final class HuntedLammasu extends CardImpl {
public HuntedLammasu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntedPhantasm.java b/Mage.Sets/src/mage/cards/h/HuntedPhantasm.java
index a48c5a3fb67..a51b81664eb 100644
--- a/Mage.Sets/src/mage/cards/h/HuntedPhantasm.java
+++ b/Mage.Sets/src/mage/cards/h/HuntedPhantasm.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class HuntedPhantasm extends CardImpl {
+public final class HuntedPhantasm extends CardImpl {
public HuntedPhantasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntedTroll.java b/Mage.Sets/src/mage/cards/h/HuntedTroll.java
index 7662cf4c867..91d5e5f9a71 100644
--- a/Mage.Sets/src/mage/cards/h/HuntedTroll.java
+++ b/Mage.Sets/src/mage/cards/h/HuntedTroll.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class HuntedTroll extends CardImpl {
+public final class HuntedTroll extends CardImpl {
public HuntedTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntedWumpus.java b/Mage.Sets/src/mage/cards/h/HuntedWumpus.java
index 712c0c2dc48..1ca93ff99e9 100644
--- a/Mage.Sets/src/mage/cards/h/HuntedWumpus.java
+++ b/Mage.Sets/src/mage/cards/h/HuntedWumpus.java
@@ -31,27 +31,27 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
-import mage.cards.Card;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
-import mage.constants.Zone;
-import mage.filter.common.FilterCreatureCard;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
-import mage.target.common.TargetCardInHand;
+import mage.target.targetpointer.FixedTarget;
/**
*
* @author LevelX2
*/
-public class HuntedWumpus extends CardImpl {
+public final class HuntedWumpus extends CardImpl {
public HuntedWumpus(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.subtype.add(SubType.BEAST);
this.power = new MageInt(6);
@@ -92,20 +92,11 @@ class HuntedWumpusEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
- for(UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (!playerId.equals(controller.getId())) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- TargetCardInHand target = new TargetCardInHand(new FilterCreatureCard());
- if (target.canChoose(source.getSourceId(), playerId, game)
- && player.chooseUse(Outcome.Neutral, "Put a creature card from your hand onto the battlefield?", source, game)
- && player.choose(Outcome.PutCreatureInPlay, target, source.getSourceId(), game)) {
- Card card = game.getCard(target.getFirstTarget());
- if (card != null) {
- card.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), player.getId());
- }
- }
- }
+ Effect effect = new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_CREATURE_A, true);
+ effect.setTargetPointer(new FixedTarget(playerId));
+ effect.apply(game, source);
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/h/HunterOfEyeblights.java b/Mage.Sets/src/mage/cards/h/HunterOfEyeblights.java
index f690e240b35..c0c27b18007 100644
--- a/Mage.Sets/src/mage/cards/h/HunterOfEyeblights.java
+++ b/Mage.Sets/src/mage/cards/h/HunterOfEyeblights.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class HunterOfEyeblights extends CardImpl {
+public final class HunterOfEyeblights extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature you don't control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature with a counter on it");
diff --git a/Mage.Sets/src/mage/cards/h/HunterSliver.java b/Mage.Sets/src/mage/cards/h/HunterSliver.java
index 52f8a63685d..ff9b72ff7a9 100644
--- a/Mage.Sets/src/mage/cards/h/HunterSliver.java
+++ b/Mage.Sets/src/mage/cards/h/HunterSliver.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author cbt33
*/
-public class HunterSliver extends CardImpl {
+public final class HunterSliver extends CardImpl {
public HunterSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntersAmbush.java b/Mage.Sets/src/mage/cards/h/HuntersAmbush.java
index c71b54aab5e..4b5d8eeac22 100644
--- a/Mage.Sets/src/mage/cards/h/HuntersAmbush.java
+++ b/Mage.Sets/src/mage/cards/h/HuntersAmbush.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class HuntersAmbush extends CardImpl {
+public final class HuntersAmbush extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nongreen creatures");
diff --git a/Mage.Sets/src/mage/cards/h/HuntersFeast.java b/Mage.Sets/src/mage/cards/h/HuntersFeast.java
index 26ff09170df..bbffb93fc60 100644
--- a/Mage.Sets/src/mage/cards/h/HuntersFeast.java
+++ b/Mage.Sets/src/mage/cards/h/HuntersFeast.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class HuntersFeast extends CardImpl {
+public final class HuntersFeast extends CardImpl {
public HuntersFeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntersInsight.java b/Mage.Sets/src/mage/cards/h/HuntersInsight.java
index 8b05b575cc8..69ae2c9642c 100644
--- a/Mage.Sets/src/mage/cards/h/HuntersInsight.java
+++ b/Mage.Sets/src/mage/cards/h/HuntersInsight.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class HuntersInsight extends CardImpl {
+public final class HuntersInsight extends CardImpl {
public HuntersInsight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntersProwess.java b/Mage.Sets/src/mage/cards/h/HuntersProwess.java
index e7e0c11dc75..47f2221e159 100644
--- a/Mage.Sets/src/mage/cards/h/HuntersProwess.java
+++ b/Mage.Sets/src/mage/cards/h/HuntersProwess.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class HuntersProwess extends CardImpl {
+public final class HuntersProwess extends CardImpl {
public HuntersProwess(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntingCheetah.java b/Mage.Sets/src/mage/cards/h/HuntingCheetah.java
index 9117c89a46d..a578c7ffec9 100644
--- a/Mage.Sets/src/mage/cards/h/HuntingCheetah.java
+++ b/Mage.Sets/src/mage/cards/h/HuntingCheetah.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LoneFox
*/
-public class HuntingCheetah extends CardImpl {
+public final class HuntingCheetah extends CardImpl {
private static final FilterCard filter = new FilterCard("Forest card");
diff --git a/Mage.Sets/src/mage/cards/h/HuntingDrake.java b/Mage.Sets/src/mage/cards/h/HuntingDrake.java
index 7493033fd2c..f67256f5381 100644
--- a/Mage.Sets/src/mage/cards/h/HuntingDrake.java
+++ b/Mage.Sets/src/mage/cards/h/HuntingDrake.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class HuntingDrake extends CardImpl {
+public final class HuntingDrake extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red or green creature");
diff --git a/Mage.Sets/src/mage/cards/h/HuntingGrounds.java b/Mage.Sets/src/mage/cards/h/HuntingGrounds.java
index 3e03f591a5a..d2df5c66e26 100644
--- a/Mage.Sets/src/mage/cards/h/HuntingGrounds.java
+++ b/Mage.Sets/src/mage/cards/h/HuntingGrounds.java
@@ -33,7 +33,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.SpellCastOpponentTriggeredAbility;
import mage.abilities.condition.common.CardsInControllerGraveCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -47,13 +47,13 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LoneFox
*/
-public class HuntingGrounds extends CardImpl {
+public final class HuntingGrounds extends CardImpl {
public HuntingGrounds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}{W}");
// Threshold - As long as seven or more cards are in your graveyard, Hunting Grounds has "Whenever an opponent casts a spell, you may put a creature card from your hand onto the battlefield."
- Ability gainedAbility = new SpellCastOpponentTriggeredAbility(new PutPermanentOnBattlefieldEffect(
+ Ability gainedAbility = new SpellCastOpponentTriggeredAbility(new PutCardFromHandOntoBattlefieldEffect(
new FilterCreatureCard("a creature card")), true);
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
new GainAbilitySourceEffect(gainedAbility, Duration.WhileOnBattlefield), new CardsInControllerGraveCondition(7),
diff --git a/Mage.Sets/src/mage/cards/h/HuntingKavu.java b/Mage.Sets/src/mage/cards/h/HuntingKavu.java
index c4444d13389..2793ab92a52 100644
--- a/Mage.Sets/src/mage/cards/h/HuntingKavu.java
+++ b/Mage.Sets/src/mage/cards/h/HuntingKavu.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class HuntingKavu extends CardImpl {
+public final class HuntingKavu extends CardImpl {
private static final FilterCreatureAttackingYou filter = new FilterCreatureAttackingYou("creature without flying that's attacking you");
diff --git a/Mage.Sets/src/mage/cards/h/HuntingMoa.java b/Mage.Sets/src/mage/cards/h/HuntingMoa.java
index a22e4fe801c..c7e7845da99 100644
--- a/Mage.Sets/src/mage/cards/h/HuntingMoa.java
+++ b/Mage.Sets/src/mage/cards/h/HuntingMoa.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class HuntingMoa extends CardImpl {
+public final class HuntingMoa extends CardImpl {
public HuntingMoa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntingPack.java b/Mage.Sets/src/mage/cards/h/HuntingPack.java
index 9d19ce49a2e..d53f2534696 100644
--- a/Mage.Sets/src/mage/cards/h/HuntingPack.java
+++ b/Mage.Sets/src/mage/cards/h/HuntingPack.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.BeastToken2;
*
* @author Plopman
*/
-public class HuntingPack extends CardImpl {
+public final class HuntingPack extends CardImpl {
public HuntingPack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntingTriad.java b/Mage.Sets/src/mage/cards/h/HuntingTriad.java
index f10c1066394..be9e236f3a8 100644
--- a/Mage.Sets/src/mage/cards/h/HuntingTriad.java
+++ b/Mage.Sets/src/mage/cards/h/HuntingTriad.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ElfToken;
*
* @author Loki
*/
-public class HuntingTriad extends CardImpl {
+public final class HuntingTriad extends CardImpl {
public HuntingTriad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntingWilds.java b/Mage.Sets/src/mage/cards/h/HuntingWilds.java
index 71eabb63f5c..76fe3c19aa9 100644
--- a/Mage.Sets/src/mage/cards/h/HuntingWilds.java
+++ b/Mage.Sets/src/mage/cards/h/HuntingWilds.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author anonymous
*/
-public class HuntingWilds extends CardImpl {
+public final class HuntingWilds extends CardImpl {
public HuntingWilds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HuntmasterOfTheFells.java b/Mage.Sets/src/mage/cards/h/HuntmasterOfTheFells.java
index 58627d0bbd9..ecd413499b5 100644
--- a/Mage.Sets/src/mage/cards/h/HuntmasterOfTheFells.java
+++ b/Mage.Sets/src/mage/cards/h/HuntmasterOfTheFells.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.WolfToken;
*
* @author BetaSteward
*/
-public class HuntmasterOfTheFells extends CardImpl {
+public final class HuntmasterOfTheFells extends CardImpl {
public HuntmasterOfTheFells(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HurkylsRecall.java b/Mage.Sets/src/mage/cards/h/HurkylsRecall.java
index 01a468134cc..5bdd51ca696 100644
--- a/Mage.Sets/src/mage/cards/h/HurkylsRecall.java
+++ b/Mage.Sets/src/mage/cards/h/HurkylsRecall.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class HurkylsRecall extends CardImpl {
+public final class HurkylsRecall extends CardImpl {
public HurkylsRecall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HurloonMinotaur.java b/Mage.Sets/src/mage/cards/h/HurloonMinotaur.java
index f1cba6b3aff..6b42e4058ca 100644
--- a/Mage.Sets/src/mage/cards/h/HurloonMinotaur.java
+++ b/Mage.Sets/src/mage/cards/h/HurloonMinotaur.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HurloonMinotaur extends CardImpl {
+public final class HurloonMinotaur extends CardImpl {
public HurloonMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HurloonShaman.java b/Mage.Sets/src/mage/cards/h/HurloonShaman.java
index c94e0a3bc58..3003bee83a0 100644
--- a/Mage.Sets/src/mage/cards/h/HurloonShaman.java
+++ b/Mage.Sets/src/mage/cards/h/HurloonShaman.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author Derpthemeus
*/
-public class HurloonShaman extends CardImpl {
+public final class HurloonShaman extends CardImpl {
public HurloonShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HurlyBurly.java b/Mage.Sets/src/mage/cards/h/HurlyBurly.java
index 486936b3af0..3ed3838b80e 100644
--- a/Mage.Sets/src/mage/cards/h/HurlyBurly.java
+++ b/Mage.Sets/src/mage/cards/h/HurlyBurly.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author Loki
*/
-public class HurlyBurly extends CardImpl {
+public final class HurlyBurly extends CardImpl {
private static final FilterCreaturePermanent filterWithoutFlying = new FilterCreaturePermanent("creature without flying");
private static final FilterCreaturePermanent filterWithFlying = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/h/HurrJackal.java b/Mage.Sets/src/mage/cards/h/HurrJackal.java
index 4659a59a048..bd590c5c199 100644
--- a/Mage.Sets/src/mage/cards/h/HurrJackal.java
+++ b/Mage.Sets/src/mage/cards/h/HurrJackal.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author MarcoMarin
*/
-public class HurrJackal extends CardImpl {
+public final class HurrJackal extends CardImpl {
public HurrJackal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/h/Hurricane.java b/Mage.Sets/src/mage/cards/h/Hurricane.java
index f2a0aeec21a..345e2b005b0 100644
--- a/Mage.Sets/src/mage/cards/h/Hurricane.java
+++ b/Mage.Sets/src/mage/cards/h/Hurricane.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author Quercitron
*/
-public class Hurricane extends CardImpl {
+public final class Hurricane extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/h/Hush.java b/Mage.Sets/src/mage/cards/h/Hush.java
index b03a05c1278..c4505b41a27 100644
--- a/Mage.Sets/src/mage/cards/h/Hush.java
+++ b/Mage.Sets/src/mage/cards/h/Hush.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterEnchantmentPermanent;
*
* @author Backfir3
*/
-public class Hush extends CardImpl {
+public final class Hush extends CardImpl {
public Hush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HushwingGryff.java b/Mage.Sets/src/mage/cards/h/HushwingGryff.java
index 97eac840847..e24a86bba86 100644
--- a/Mage.Sets/src/mage/cards/h/HushwingGryff.java
+++ b/Mage.Sets/src/mage/cards/h/HushwingGryff.java
@@ -53,7 +53,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class HushwingGryff extends CardImpl {
+public final class HushwingGryff extends CardImpl {
public HushwingGryff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HussarPatrol.java b/Mage.Sets/src/mage/cards/h/HussarPatrol.java
index a8f5e412180..c03e6462266 100644
--- a/Mage.Sets/src/mage/cards/h/HussarPatrol.java
+++ b/Mage.Sets/src/mage/cards/h/HussarPatrol.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HussarPatrol extends CardImpl {
+public final class HussarPatrol extends CardImpl {
public HussarPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HuttCrimeLord.java b/Mage.Sets/src/mage/cards/h/HuttCrimeLord.java
index 07873dafe7e..9ab90d9f0d0 100644
--- a/Mage.Sets/src/mage/cards/h/HuttCrimeLord.java
+++ b/Mage.Sets/src/mage/cards/h/HuttCrimeLord.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class HuttCrimeLord extends CardImpl {
+public final class HuttCrimeLord extends CardImpl {
public HuttCrimeLord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HuttPalace.java b/Mage.Sets/src/mage/cards/h/HuttPalace.java
index 530b22b2fb4..f656c0ca2c6 100644
--- a/Mage.Sets/src/mage/cards/h/HuttPalace.java
+++ b/Mage.Sets/src/mage/cards/h/HuttPalace.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Styxo
*/
-public class HuttPalace extends CardImpl {
+public final class HuttPalace extends CardImpl {
public HuttPalace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/h/HyalopterousLemure.java b/Mage.Sets/src/mage/cards/h/HyalopterousLemure.java
index aabf97d2a08..e00a9480b72 100644
--- a/Mage.Sets/src/mage/cards/h/HyalopterousLemure.java
+++ b/Mage.Sets/src/mage/cards/h/HyalopterousLemure.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class HyalopterousLemure extends CardImpl {
+public final class HyalopterousLemure extends CardImpl {
public HyalopterousLemure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HydraBroodmaster.java b/Mage.Sets/src/mage/cards/h/HydraBroodmaster.java
index 716230b4473..11bbf7153ed 100644
--- a/Mage.Sets/src/mage/cards/h/HydraBroodmaster.java
+++ b/Mage.Sets/src/mage/cards/h/HydraBroodmaster.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HydraBroodmaster extends CardImpl {
+public final class HydraBroodmaster extends CardImpl {
public HydraBroodmaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HydraOmnivore.java b/Mage.Sets/src/mage/cards/h/HydraOmnivore.java
index a03324fa44c..622f8d19477 100644
--- a/Mage.Sets/src/mage/cards/h/HydraOmnivore.java
+++ b/Mage.Sets/src/mage/cards/h/HydraOmnivore.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class HydraOmnivore extends CardImpl {
+public final class HydraOmnivore extends CardImpl {
public HydraOmnivore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/Hydradoodle.java b/Mage.Sets/src/mage/cards/h/Hydradoodle.java
index 5637b38610c..5551077528b 100644
--- a/Mage.Sets/src/mage/cards/h/Hydradoodle.java
+++ b/Mage.Sets/src/mage/cards/h/Hydradoodle.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class Hydradoodle extends CardImpl {
+public final class Hydradoodle extends CardImpl {
public Hydradoodle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{X}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/Hydroblast.java b/Mage.Sets/src/mage/cards/h/Hydroblast.java
index 2ce6fd481c8..8e21cbb6c51 100644
--- a/Mage.Sets/src/mage/cards/h/Hydroblast.java
+++ b/Mage.Sets/src/mage/cards/h/Hydroblast.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author emerald000
*/
-public class Hydroblast extends CardImpl {
+public final class Hydroblast extends CardImpl {
public Hydroblast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/h/Hydroform.java b/Mage.Sets/src/mage/cards/h/Hydroform.java
index 70615b1b738..40802d51d19 100644
--- a/Mage.Sets/src/mage/cards/h/Hydroform.java
+++ b/Mage.Sets/src/mage/cards/h/Hydroform.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class Hydroform extends CardImpl {
+public final class Hydroform extends CardImpl {
public Hydroform(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/Hydrolash.java b/Mage.Sets/src/mage/cards/h/Hydrolash.java
index bd525201707..e85529567a4 100644
--- a/Mage.Sets/src/mage/cards/h/Hydrolash.java
+++ b/Mage.Sets/src/mage/cards/h/Hydrolash.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author LevelX2
*/
-public class Hydrolash extends CardImpl {
+public final class Hydrolash extends CardImpl {
public Hydrolash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HydromorphGuardian.java b/Mage.Sets/src/mage/cards/h/HydromorphGuardian.java
index 5034fd42cc1..e417c775c45 100644
--- a/Mage.Sets/src/mage/cards/h/HydromorphGuardian.java
+++ b/Mage.Sets/src/mage/cards/h/HydromorphGuardian.java
@@ -49,7 +49,7 @@ import mage.target.TargetSpell;
*
* @author TaVSt
*/
-public class HydromorphGuardian extends CardImpl {
+public final class HydromorphGuardian extends CardImpl {
private final static FilterSpell filter = new FilterSpell("spell that targets one or more creatures you control");
diff --git a/Mage.Sets/src/mage/cards/h/HydromorphGull.java b/Mage.Sets/src/mage/cards/h/HydromorphGull.java
index 5a3b02c477f..b0502a2f028 100644
--- a/Mage.Sets/src/mage/cards/h/HydromorphGull.java
+++ b/Mage.Sets/src/mage/cards/h/HydromorphGull.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class HydromorphGull extends CardImpl {
+public final class HydromorphGull extends CardImpl {
private final static FilterSpell filter = new FilterSpell("spell that targets one or more creatures you control");
diff --git a/Mage.Sets/src/mage/cards/h/Hydrosurge.java b/Mage.Sets/src/mage/cards/h/Hydrosurge.java
index d5fd21124aa..5d74ee1ab6c 100644
--- a/Mage.Sets/src/mage/cards/h/Hydrosurge.java
+++ b/Mage.Sets/src/mage/cards/h/Hydrosurge.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Hydrosurge extends CardImpl {
+public final class Hydrosurge extends CardImpl {
public Hydrosurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HyenaPack.java b/Mage.Sets/src/mage/cards/h/HyenaPack.java
index a3af08db3aa..50bd1f134ba 100644
--- a/Mage.Sets/src/mage/cards/h/HyenaPack.java
+++ b/Mage.Sets/src/mage/cards/h/HyenaPack.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class HyenaPack extends CardImpl {
+public final class HyenaPack extends CardImpl {
public HyenaPack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HyenaUmbra.java b/Mage.Sets/src/mage/cards/h/HyenaUmbra.java
index 47e5c89e6bd..4731ddd3858 100644
--- a/Mage.Sets/src/mage/cards/h/HyenaUmbra.java
+++ b/Mage.Sets/src/mage/cards/h/HyenaUmbra.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class HyenaUmbra extends CardImpl {
+public final class HyenaUmbra extends CardImpl {
public HyenaUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HymnOfRebirth.java b/Mage.Sets/src/mage/cards/h/HymnOfRebirth.java
index 0193b5bfb78..e9977b23e45 100644
--- a/Mage.Sets/src/mage/cards/h/HymnOfRebirth.java
+++ b/Mage.Sets/src/mage/cards/h/HymnOfRebirth.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LoneFox
*/
-public class HymnOfRebirth extends CardImpl {
+public final class HymnOfRebirth extends CardImpl {
public HymnOfRebirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HymnToTourach.java b/Mage.Sets/src/mage/cards/h/HymnToTourach.java
index fde702bc5d0..97dde5a0b2e 100644
--- a/Mage.Sets/src/mage/cards/h/HymnToTourach.java
+++ b/Mage.Sets/src/mage/cards/h/HymnToTourach.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author jonubuu
*/
-public class HymnToTourach extends CardImpl {
+public final class HymnToTourach extends CardImpl {
public HymnToTourach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/Hypergenesis.java b/Mage.Sets/src/mage/cards/h/Hypergenesis.java
index d406983e51e..6422b9b4c05 100644
--- a/Mage.Sets/src/mage/cards/h/Hypergenesis.java
+++ b/Mage.Sets/src/mage/cards/h/Hypergenesis.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class Hypergenesis extends CardImpl {
+public final class Hypergenesis extends CardImpl {
public Hypergenesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"");
diff --git a/Mage.Sets/src/mage/cards/h/HyperionBlacksmith.java b/Mage.Sets/src/mage/cards/h/HyperionBlacksmith.java
index af8d44aaeb0..b55262c0e9c 100644
--- a/Mage.Sets/src/mage/cards/h/HyperionBlacksmith.java
+++ b/Mage.Sets/src/mage/cards/h/HyperionBlacksmith.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author fireshoes
*/
-public class HyperionBlacksmith extends CardImpl {
+public final class HyperionBlacksmith extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifact an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/h/HypersonicDragon.java b/Mage.Sets/src/mage/cards/h/HypersonicDragon.java
index b86d59bc34b..7da8d7b4cee 100644
--- a/Mage.Sets/src/mage/cards/h/HypersonicDragon.java
+++ b/Mage.Sets/src/mage/cards/h/HypersonicDragon.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
/**
* @author magenoxx_at_gmail.com
*/
-public class HypersonicDragon extends CardImpl {
+public final class HypersonicDragon extends CardImpl {
private static final FilterCard filter = new FilterCard("sorcery spells");
diff --git a/Mage.Sets/src/mage/cards/h/HypervoltGrasp.java b/Mage.Sets/src/mage/cards/h/HypervoltGrasp.java
index 5406dba3019..cae3811ffb1 100644
--- a/Mage.Sets/src/mage/cards/h/HypervoltGrasp.java
+++ b/Mage.Sets/src/mage/cards/h/HypervoltGrasp.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class HypervoltGrasp extends CardImpl {
+public final class HypervoltGrasp extends CardImpl {
public HypervoltGrasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/h/HypnoticCloud.java b/Mage.Sets/src/mage/cards/h/HypnoticCloud.java
index 151d4504b15..502a9cf5e42 100644
--- a/Mage.Sets/src/mage/cards/h/HypnoticCloud.java
+++ b/Mage.Sets/src/mage/cards/h/HypnoticCloud.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class HypnoticCloud extends CardImpl {
+public final class HypnoticCloud extends CardImpl {
public HypnoticCloud(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HypnoticSiren.java b/Mage.Sets/src/mage/cards/h/HypnoticSiren.java
index 89c7f52d20b..f7ba6589d85 100644
--- a/Mage.Sets/src/mage/cards/h/HypnoticSiren.java
+++ b/Mage.Sets/src/mage/cards/h/HypnoticSiren.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class HypnoticSiren extends CardImpl {
+public final class HypnoticSiren extends CardImpl {
public HypnoticSiren(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/h/HypnoticSpecter.java b/Mage.Sets/src/mage/cards/h/HypnoticSpecter.java
index c5a621eb965..42ee3c862fa 100644
--- a/Mage.Sets/src/mage/cards/h/HypnoticSpecter.java
+++ b/Mage.Sets/src/mage/cards/h/HypnoticSpecter.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class HypnoticSpecter extends CardImpl {
+public final class HypnoticSpecter extends CardImpl {
public HypnoticSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/Hypnox.java b/Mage.Sets/src/mage/cards/h/Hypnox.java
index c5e78cce382..728203340b8 100644
--- a/Mage.Sets/src/mage/cards/h/Hypnox.java
+++ b/Mage.Sets/src/mage/cards/h/Hypnox.java
@@ -54,7 +54,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author L_J
*/
-public class Hypnox extends CardImpl {
+public final class Hypnox extends CardImpl {
public Hypnox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/Hypochondria.java b/Mage.Sets/src/mage/cards/h/Hypochondria.java
index 599cd604198..6ea640b8c18 100644
--- a/Mage.Sets/src/mage/cards/h/Hypochondria.java
+++ b/Mage.Sets/src/mage/cards/h/Hypochondria.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class Hypochondria extends CardImpl {
+public final class Hypochondria extends CardImpl {
public Hypochondria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/h/HystericalBlindness.java b/Mage.Sets/src/mage/cards/h/HystericalBlindness.java
index 70b07d54ece..4920dc1d565 100644
--- a/Mage.Sets/src/mage/cards/h/HystericalBlindness.java
+++ b/Mage.Sets/src/mage/cards/h/HystericalBlindness.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class HystericalBlindness extends CardImpl {
+public final class HystericalBlindness extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/h/Hystrodon.java b/Mage.Sets/src/mage/cards/h/Hystrodon.java
index 3578429c863..302531df489 100644
--- a/Mage.Sets/src/mage/cards/h/Hystrodon.java
+++ b/Mage.Sets/src/mage/cards/h/Hystrodon.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Hystrodon extends CardImpl {
+public final class Hystrodon extends CardImpl {
public Hystrodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/HythoniaTheCruel.java b/Mage.Sets/src/mage/cards/h/HythoniaTheCruel.java
index f2b93c2b1f3..5fd8c76662a 100644
--- a/Mage.Sets/src/mage/cards/h/HythoniaTheCruel.java
+++ b/Mage.Sets/src/mage/cards/h/HythoniaTheCruel.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class HythoniaTheCruel extends CardImpl {
+public final class HythoniaTheCruel extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Gorgon creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/i/IG88B.java b/Mage.Sets/src/mage/cards/i/IG88B.java
index d0c5fb11543..f36b19b80c8 100644
--- a/Mage.Sets/src/mage/cards/i/IG88B.java
+++ b/Mage.Sets/src/mage/cards/i/IG88B.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author Styxo
*/
-public class IG88B extends CardImpl {
+public final class IG88B extends CardImpl {
public IG88B(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IbHalfheartGoblinTactician.java b/Mage.Sets/src/mage/cards/i/IbHalfheartGoblinTactician.java
index 153ac95aefb..a29c212853f 100644
--- a/Mage.Sets/src/mage/cards/i/IbHalfheartGoblinTactician.java
+++ b/Mage.Sets/src/mage/cards/i/IbHalfheartGoblinTactician.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class IbHalfheartGoblinTactician extends CardImpl {
+public final class IbHalfheartGoblinTactician extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Mountains");
private static final FilterCreaturePermanent filterGoblin = new FilterCreaturePermanent("another Goblin you control");
diff --git a/Mage.Sets/src/mage/cards/i/IcatianCrier.java b/Mage.Sets/src/mage/cards/i/IcatianCrier.java
index 9c032111aab..8febe21ec15 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianCrier.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianCrier.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.CitizenToken;
*
* @author fireshoes
*/
-public class IcatianCrier extends CardImpl {
+public final class IcatianCrier extends CardImpl {
public IcatianCrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IcatianInfantry.java b/Mage.Sets/src/mage/cards/i/IcatianInfantry.java
index db3edeb5445..6d5cea1aad0 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianInfantry.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianInfantry.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author L_J
*/
-public class IcatianInfantry extends CardImpl {
+public final class IcatianInfantry extends CardImpl {
public IcatianInfantry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java b/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java
index be01459181e..15aa3c9d958 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class IcatianJavelineers extends CardImpl {
+public final class IcatianJavelineers extends CardImpl {
public IcatianJavelineers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java b/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java
index 3869836737d..998ad09f538 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class IcatianLieutenant extends CardImpl {
+public final class IcatianLieutenant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creature");
diff --git a/Mage.Sets/src/mage/cards/i/IcatianMoneychanger.java b/Mage.Sets/src/mage/cards/i/IcatianMoneychanger.java
index 6d413e107a3..666aba21967 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianMoneychanger.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianMoneychanger.java
@@ -53,7 +53,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class IcatianMoneychanger extends CardImpl {
+public final class IcatianMoneychanger extends CardImpl {
public IcatianMoneychanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IcatianPhalanx.java b/Mage.Sets/src/mage/cards/i/IcatianPhalanx.java
index afee04009a7..b66ab558220 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianPhalanx.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianPhalanx.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class IcatianPhalanx extends CardImpl {
+public final class IcatianPhalanx extends CardImpl {
public IcatianPhalanx (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IcatianPriest.java b/Mage.Sets/src/mage/cards/i/IcatianPriest.java
index 56080ddc2ce..b3e95ad8c7d 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianPriest.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianPriest.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class IcatianPriest extends CardImpl {
+public final class IcatianPriest extends CardImpl {
public IcatianPriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IcatianScout.java b/Mage.Sets/src/mage/cards/i/IcatianScout.java
index 64f54a6d089..d0e7ba33c64 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianScout.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianScout.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class IcatianScout extends CardImpl {
+public final class IcatianScout extends CardImpl {
public IcatianScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IcatianSkirmishers.java b/Mage.Sets/src/mage/cards/i/IcatianSkirmishers.java
index 6148e3967eb..a1ae52bebac 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianSkirmishers.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianSkirmishers.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class IcatianSkirmishers extends CardImpl {
+public final class IcatianSkirmishers extends CardImpl {
public IcatianSkirmishers (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IcatianStore.java b/Mage.Sets/src/mage/cards/i/IcatianStore.java
index 1d2ac0bc829..e93c382a015 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianStore.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianStore.java
@@ -54,7 +54,7 @@ import mage.counters.CounterType;
*
* @author anonymous
*/
-public class IcatianStore extends CardImpl {
+public final class IcatianStore extends CardImpl {
public IcatianStore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/i/IcatianTown.java b/Mage.Sets/src/mage/cards/i/IcatianTown.java
index 2c1b9a24c98..2c52a87c024 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianTown.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianTown.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.CitizenToken;
*
* @author Quercitron
*/
-public class IcatianTown extends CardImpl {
+public final class IcatianTown extends CardImpl {
public IcatianTown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IceCage.java b/Mage.Sets/src/mage/cards/i/IceCage.java
index 6944db4415e..4acd3c35a35 100644
--- a/Mage.Sets/src/mage/cards/i/IceCage.java
+++ b/Mage.Sets/src/mage/cards/i/IceCage.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class IceCage extends CardImpl {
+public final class IceCage extends CardImpl {
public IceCage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IceCauldron.java b/Mage.Sets/src/mage/cards/i/IceCauldron.java
index 9c7555d4a45..a6e665d91f9 100644
--- a/Mage.Sets/src/mage/cards/i/IceCauldron.java
+++ b/Mage.Sets/src/mage/cards/i/IceCauldron.java
@@ -68,7 +68,7 @@ import mage.util.CardUtil;
*
* @author L_J (based on jeffwadsworth)
*/
-public class IceCauldron extends CardImpl {
+public final class IceCauldron extends CardImpl {
public IceCauldron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
@@ -81,7 +81,7 @@ public class IceCauldron extends CardImpl {
ability.addCost(new TapSourceCost());
this.addAbility(ability);
- // {T}, Remove a charge counter from Ice Cauldron: Add Ice Cauldron's last noted type and amount of mana to your mana pool. Spend this mana only to cast the last card exiled with Ice Cauldron.
+ // {T}, Remove a charge counter from Ice Cauldron: Add Ice Cauldron's last noted type and amount of mana. Spend this mana only to cast the last card exiled with Ice Cauldron.
Ability ability2 = new SimpleManaAbility(Zone.BATTLEFIELD, new IceCauldronAddManaEffect(), new TapSourceCost());
ability2.addCost(new RemoveCountersSourceCost(CounterType.CHARGE.createInstance()));
this.addAbility(ability2);
@@ -221,7 +221,7 @@ class IceCauldronAddManaEffect extends ManaEffect {
IceCauldronAddManaEffect() {
super();
- staticText = "Add {this}'s last noted type and amount of mana to your mana pool. Spend this mana only to cast the last card exiled with {this}";
+ staticText = "Add {this}'s last noted type and amount of mana. Spend this mana only to cast the last card exiled with {this}";
}
IceCauldronAddManaEffect(IceCauldronAddManaEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/i/IceCave.java b/Mage.Sets/src/mage/cards/i/IceCave.java
index bd0a45b7e1a..bbe5224b767 100644
--- a/Mage.Sets/src/mage/cards/i/IceCave.java
+++ b/Mage.Sets/src/mage/cards/i/IceCave.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author ThomasLerner
*/
-public class IceCave extends CardImpl {
+public final class IceCave extends CardImpl {
public IceCave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IceFloe.java b/Mage.Sets/src/mage/cards/i/IceFloe.java
index 5dff9889085..716cf7286b5 100644
--- a/Mage.Sets/src/mage/cards/i/IceFloe.java
+++ b/Mage.Sets/src/mage/cards/i/IceFloe.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class IceFloe extends CardImpl {
+public final class IceFloe extends CardImpl {
private static final FilterCreatureAttackingYou filter = new FilterCreatureAttackingYou("creature without flying that's attacking you");
diff --git a/Mage.Sets/src/mage/cards/i/IceOver.java b/Mage.Sets/src/mage/cards/i/IceOver.java
index 8062c01a751..d08a14fd7d8 100644
--- a/Mage.Sets/src/mage/cards/i/IceOver.java
+++ b/Mage.Sets/src/mage/cards/i/IceOver.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author Styxo
*/
-public class IceOver extends CardImpl {
+public final class IceOver extends CardImpl {
public IceOver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IceStorm.java b/Mage.Sets/src/mage/cards/i/IceStorm.java
index c8cae54b204..4aa4c5b2ebc 100644
--- a/Mage.Sets/src/mage/cards/i/IceStorm.java
+++ b/Mage.Sets/src/mage/cards/i/IceStorm.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class IceStorm extends CardImpl {
+public final class IceStorm extends CardImpl {
public IceStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/Iceberg.java b/Mage.Sets/src/mage/cards/i/Iceberg.java
index 234de6dbc83..aa06ecad1dd 100644
--- a/Mage.Sets/src/mage/cards/i/Iceberg.java
+++ b/Mage.Sets/src/mage/cards/i/Iceberg.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class Iceberg extends CardImpl {
+public final class Iceberg extends CardImpl {
public Iceberg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/Icefall.java b/Mage.Sets/src/mage/cards/i/Icefall.java
index 42fd307c7df..c9fb11f3446 100644
--- a/Mage.Sets/src/mage/cards/i/Icefall.java
+++ b/Mage.Sets/src/mage/cards/i/Icefall.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class Icefall extends CardImpl {
+public final class Icefall extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or land");
diff --git a/Mage.Sets/src/mage/cards/i/IcefallRegent.java b/Mage.Sets/src/mage/cards/i/IcefallRegent.java
index bd44a074f8e..57947d3d8f4 100644
--- a/Mage.Sets/src/mage/cards/i/IcefallRegent.java
+++ b/Mage.Sets/src/mage/cards/i/IcefallRegent.java
@@ -64,7 +64,7 @@ import mage.watchers.Watcher;
*
* @author fireshoes
*/
-public class IcefallRegent extends CardImpl {
+public final class IcefallRegent extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/i/IcefeatherAven.java b/Mage.Sets/src/mage/cards/i/IcefeatherAven.java
index 2451f867a13..49b5d1fa5fa 100644
--- a/Mage.Sets/src/mage/cards/i/IcefeatherAven.java
+++ b/Mage.Sets/src/mage/cards/i/IcefeatherAven.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class IcefeatherAven extends CardImpl {
+public final class IcefeatherAven extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/i/Icequake.java b/Mage.Sets/src/mage/cards/i/Icequake.java
index 2104a04d2a4..a52d59f2681 100644
--- a/Mage.Sets/src/mage/cards/i/Icequake.java
+++ b/Mage.Sets/src/mage/cards/i/Icequake.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class Icequake extends CardImpl {
+public final class Icequake extends CardImpl {
public Icequake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IchorExplosion.java b/Mage.Sets/src/mage/cards/i/IchorExplosion.java
index b77ae88ca03..503e51bd595 100644
--- a/Mage.Sets/src/mage/cards/i/IchorExplosion.java
+++ b/Mage.Sets/src/mage/cards/i/IchorExplosion.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class IchorExplosion extends CardImpl {
+public final class IchorExplosion extends CardImpl {
public IchorExplosion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IchorRats.java b/Mage.Sets/src/mage/cards/i/IchorRats.java
index 814ae5cac7c..49ea1752852 100644
--- a/Mage.Sets/src/mage/cards/i/IchorRats.java
+++ b/Mage.Sets/src/mage/cards/i/IchorRats.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class IchorRats extends CardImpl {
+public final class IchorRats extends CardImpl {
public IchorRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IchorSlick.java b/Mage.Sets/src/mage/cards/i/IchorSlick.java
index 80917c29e9f..695fcb0ae23 100644
--- a/Mage.Sets/src/mage/cards/i/IchorSlick.java
+++ b/Mage.Sets/src/mage/cards/i/IchorSlick.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author magenoxx_at_gmail.com
*/
-public class IchorSlick extends CardImpl {
+public final class IchorSlick extends CardImpl {
public IchorSlick(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IchorWellspring.java b/Mage.Sets/src/mage/cards/i/IchorWellspring.java
index 86a523ab97a..22dd1ed34e0 100644
--- a/Mage.Sets/src/mage/cards/i/IchorWellspring.java
+++ b/Mage.Sets/src/mage/cards/i/IchorWellspring.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
/**
* @author ayratn
*/
-public class IchorWellspring extends CardImpl {
+public final class IchorWellspring extends CardImpl {
public IchorWellspring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/i/IchorclawMyr.java b/Mage.Sets/src/mage/cards/i/IchorclawMyr.java
index 073861c9913..767d28e947f 100644
--- a/Mage.Sets/src/mage/cards/i/IchorclawMyr.java
+++ b/Mage.Sets/src/mage/cards/i/IchorclawMyr.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class IchorclawMyr extends CardImpl {
+public final class IchorclawMyr extends CardImpl {
public IchorclawMyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/i/Ichorid.java b/Mage.Sets/src/mage/cards/i/Ichorid.java
index e5ba87ab0ee..bb1826499dc 100644
--- a/Mage.Sets/src/mage/cards/i/Ichorid.java
+++ b/Mage.Sets/src/mage/cards/i/Ichorid.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class Ichorid extends CardImpl {
+public final class Ichorid extends CardImpl {
public Ichorid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IcyBlast.java b/Mage.Sets/src/mage/cards/i/IcyBlast.java
index 2dce926f881..0c685514ee0 100644
--- a/Mage.Sets/src/mage/cards/i/IcyBlast.java
+++ b/Mage.Sets/src/mage/cards/i/IcyBlast.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class IcyBlast extends CardImpl {
+public final class IcyBlast extends CardImpl {
public IcyBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IcyManipulator.java b/Mage.Sets/src/mage/cards/i/IcyManipulator.java
index e7435e390be..456e242334f 100644
--- a/Mage.Sets/src/mage/cards/i/IcyManipulator.java
+++ b/Mage.Sets/src/mage/cards/i/IcyManipulator.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class IcyManipulator extends CardImpl {
+public final class IcyManipulator extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/i/IcyPrison.java b/Mage.Sets/src/mage/cards/i/IcyPrison.java
index 83a8acec63d..c0e504fddc4 100644
--- a/Mage.Sets/src/mage/cards/i/IcyPrison.java
+++ b/Mage.Sets/src/mage/cards/i/IcyPrison.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class IcyPrison extends CardImpl {
+public final class IcyPrison extends CardImpl {
public IcyPrison(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IdeasUnbound.java b/Mage.Sets/src/mage/cards/i/IdeasUnbound.java
index ee9a850f7f2..c9307ed6e83 100644
--- a/Mage.Sets/src/mage/cards/i/IdeasUnbound.java
+++ b/Mage.Sets/src/mage/cards/i/IdeasUnbound.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class IdeasUnbound extends CardImpl {
+public final class IdeasUnbound extends CardImpl {
public IdeasUnbound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IdentityCrisis.java b/Mage.Sets/src/mage/cards/i/IdentityCrisis.java
index 4650d46c611..ae5c044fd8b 100644
--- a/Mage.Sets/src/mage/cards/i/IdentityCrisis.java
+++ b/Mage.Sets/src/mage/cards/i/IdentityCrisis.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class IdentityCrisis extends CardImpl {
+public final class IdentityCrisis extends CardImpl {
public IdentityCrisis (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{W}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IdentityThief.java b/Mage.Sets/src/mage/cards/i/IdentityThief.java
index 0aa01daccfd..7634907b3bf 100644
--- a/Mage.Sets/src/mage/cards/i/IdentityThief.java
+++ b/Mage.Sets/src/mage/cards/i/IdentityThief.java
@@ -58,7 +58,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class IdentityThief extends CardImpl {
+public final class IdentityThief extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("target nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/i/IdleThoughts.java b/Mage.Sets/src/mage/cards/i/IdleThoughts.java
index 6c7152915be..6bfef3161dd 100644
--- a/Mage.Sets/src/mage/cards/i/IdleThoughts.java
+++ b/Mage.Sets/src/mage/cards/i/IdleThoughts.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class IdleThoughts extends CardImpl {
+public final class IdleThoughts extends CardImpl {
public IdleThoughts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IdyllicTutor.java b/Mage.Sets/src/mage/cards/i/IdyllicTutor.java
index bfd4d7d5752..8c0b4c287d1 100644
--- a/Mage.Sets/src/mage/cards/i/IdyllicTutor.java
+++ b/Mage.Sets/src/mage/cards/i/IdyllicTutor.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author Loki
*/
-public class IdyllicTutor extends CardImpl {
+public final class IdyllicTutor extends CardImpl {
private static final FilterCard filter = new FilterCard("an enchantment");
diff --git a/Mage.Sets/src/mage/cards/i/IfhBiffEfreet.java b/Mage.Sets/src/mage/cards/i/IfhBiffEfreet.java
index 60e432e4ab2..c7fcd2e2af7 100644
--- a/Mage.Sets/src/mage/cards/i/IfhBiffEfreet.java
+++ b/Mage.Sets/src/mage/cards/i/IfhBiffEfreet.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author fireshoes
*/
-public class IfhBiffEfreet extends CardImpl {
+public final class IfhBiffEfreet extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/i/IfnirDeadlands.java b/Mage.Sets/src/mage/cards/i/IfnirDeadlands.java
index 60d71d2ea6f..e9646d73189 100644
--- a/Mage.Sets/src/mage/cards/i/IfnirDeadlands.java
+++ b/Mage.Sets/src/mage/cards/i/IfnirDeadlands.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class IfnirDeadlands extends CardImpl {
+public final class IfnirDeadlands extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Desert");
diff --git a/Mage.Sets/src/mage/cards/i/IgneousGolem.java b/Mage.Sets/src/mage/cards/i/IgneousGolem.java
index a1107878ce2..63be2051f87 100644
--- a/Mage.Sets/src/mage/cards/i/IgneousGolem.java
+++ b/Mage.Sets/src/mage/cards/i/IgneousGolem.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class IgneousGolem extends CardImpl {
+public final class IgneousGolem extends CardImpl {
public IgneousGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/i/IgneousPouncer.java b/Mage.Sets/src/mage/cards/i/IgneousPouncer.java
index cf646a7d31a..f29a523b8cb 100644
--- a/Mage.Sets/src/mage/cards/i/IgneousPouncer.java
+++ b/Mage.Sets/src/mage/cards/i/IgneousPouncer.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class IgneousPouncer extends CardImpl {
+public final class IgneousPouncer extends CardImpl {
public IgneousPouncer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IgniteDisorder.java b/Mage.Sets/src/mage/cards/i/IgniteDisorder.java
index d08c7951142..e5107996408 100644
--- a/Mage.Sets/src/mage/cards/i/IgniteDisorder.java
+++ b/Mage.Sets/src/mage/cards/i/IgniteDisorder.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author North
*/
-public class IgniteDisorder extends CardImpl {
+public final class IgniteDisorder extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white and/or blue creatures");
diff --git a/Mage.Sets/src/mage/cards/i/IgniteMemories.java b/Mage.Sets/src/mage/cards/i/IgniteMemories.java
index f86fc260814..ece2df6198d 100644
--- a/Mage.Sets/src/mage/cards/i/IgniteMemories.java
+++ b/Mage.Sets/src/mage/cards/i/IgniteMemories.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class IgniteMemories extends CardImpl {
+public final class IgniteMemories extends CardImpl {
public IgniteMemories(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IgnitionTeam.java b/Mage.Sets/src/mage/cards/i/IgnitionTeam.java
index a4fa959347a..d43778e4fd5 100644
--- a/Mage.Sets/src/mage/cards/i/IgnitionTeam.java
+++ b/Mage.Sets/src/mage/cards/i/IgnitionTeam.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class IgnitionTeam extends CardImpl {
+public final class IgnitionTeam extends CardImpl {
public IgnitionTeam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IgnobleSoldier.java b/Mage.Sets/src/mage/cards/i/IgnobleSoldier.java
index c463f86462e..1e715697b81 100644
--- a/Mage.Sets/src/mage/cards/i/IgnobleSoldier.java
+++ b/Mage.Sets/src/mage/cards/i/IgnobleSoldier.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class IgnobleSoldier extends CardImpl {
+public final class IgnobleSoldier extends CardImpl {
public IgnobleSoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IgnorantBliss.java b/Mage.Sets/src/mage/cards/i/IgnorantBliss.java
index afc4bcde0fa..1990c1eb5bf 100644
--- a/Mage.Sets/src/mage/cards/i/IgnorantBliss.java
+++ b/Mage.Sets/src/mage/cards/i/IgnorantBliss.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class IgnorantBliss extends CardImpl {
+public final class IgnorantBliss extends CardImpl {
public IgnorantBliss(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IhsansShade.java b/Mage.Sets/src/mage/cards/i/IhsansShade.java
index 841881c9fd5..1e0b1941764 100644
--- a/Mage.Sets/src/mage/cards/i/IhsansShade.java
+++ b/Mage.Sets/src/mage/cards/i/IhsansShade.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class IhsansShade extends CardImpl {
+public final class IhsansShade extends CardImpl {
public IhsansShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java b/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java
index 392fa2ea140..ce08e979ad3 100644
--- a/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java
+++ b/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class IizukaTheRuthless extends CardImpl {
+public final class IizukaTheRuthless extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Samurai");
diff --git a/Mage.Sets/src/mage/cards/i/IkiralOutrider.java b/Mage.Sets/src/mage/cards/i/IkiralOutrider.java
index 25391cdbbdc..4b7e4a6f23c 100644
--- a/Mage.Sets/src/mage/cards/i/IkiralOutrider.java
+++ b/Mage.Sets/src/mage/cards/i/IkiralOutrider.java
@@ -46,7 +46,7 @@ import mage.constants.SubType;
*
* @author Loki, noxx
*/
-public class IkiralOutrider extends LevelerCard {
+public final class IkiralOutrider extends LevelerCard {
public IkiralOutrider (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java b/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java
index cb990d46229..f97921fea4b 100644
--- a/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java
+++ b/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author spjspj
*/
-public class IkraShidiqiTheUsurper extends CardImpl {
+public final class IkraShidiqiTheUsurper extends CardImpl {
public IkraShidiqiTheUsurper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IllGottenGains.java b/Mage.Sets/src/mage/cards/i/IllGottenGains.java
index a00bc082b9e..f2841736a2c 100644
--- a/Mage.Sets/src/mage/cards/i/IllGottenGains.java
+++ b/Mage.Sets/src/mage/cards/i/IllGottenGains.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class IllGottenGains extends CardImpl {
+public final class IllGottenGains extends CardImpl {
public IllGottenGains(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IllTemperedCyclops.java b/Mage.Sets/src/mage/cards/i/IllTemperedCyclops.java
index c9364cd75c5..5deb501971b 100644
--- a/Mage.Sets/src/mage/cards/i/IllTemperedCyclops.java
+++ b/Mage.Sets/src/mage/cards/i/IllTemperedCyclops.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class IllTemperedCyclops extends CardImpl {
+public final class IllTemperedCyclops extends CardImpl {
public IllTemperedCyclops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IllicitAuction.java b/Mage.Sets/src/mage/cards/i/IllicitAuction.java
index bb87c8d63c3..ac40d256256 100644
--- a/Mage.Sets/src/mage/cards/i/IllicitAuction.java
+++ b/Mage.Sets/src/mage/cards/i/IllicitAuction.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class IllicitAuction extends CardImpl {
+public final class IllicitAuction extends CardImpl {
public IllicitAuction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IllnessInTheRanks.java b/Mage.Sets/src/mage/cards/i/IllnessInTheRanks.java
index 92b0d760412..d54d8b6aae0 100644
--- a/Mage.Sets/src/mage/cards/i/IllnessInTheRanks.java
+++ b/Mage.Sets/src/mage/cards/i/IllnessInTheRanks.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author LevelX2
*/
-public class IllnessInTheRanks extends CardImpl {
+public final class IllnessInTheRanks extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens");
static {
diff --git a/Mage.Sets/src/mage/cards/i/Illuminate.java b/Mage.Sets/src/mage/cards/i/Illuminate.java
index 57c7024ad7a..92ac35ad886 100644
--- a/Mage.Sets/src/mage/cards/i/Illuminate.java
+++ b/Mage.Sets/src/mage/cards/i/Illuminate.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Illuminate extends CardImpl {
+public final class Illuminate extends CardImpl {
public Illuminate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IlluminatedFolio.java b/Mage.Sets/src/mage/cards/i/IlluminatedFolio.java
index 4582163974f..9e5e67e5789 100644
--- a/Mage.Sets/src/mage/cards/i/IlluminatedFolio.java
+++ b/Mage.Sets/src/mage/cards/i/IlluminatedFolio.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class IlluminatedFolio extends CardImpl {
+public final class IlluminatedFolio extends CardImpl {
public IlluminatedFolio(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/i/IlluminatedWings.java b/Mage.Sets/src/mage/cards/i/IlluminatedWings.java
index 292d9ed095a..d49b5f2f72a 100644
--- a/Mage.Sets/src/mage/cards/i/IlluminatedWings.java
+++ b/Mage.Sets/src/mage/cards/i/IlluminatedWings.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class IlluminatedWings extends CardImpl {
+public final class IlluminatedWings extends CardImpl {
public IlluminatedWings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/Illumination.java b/Mage.Sets/src/mage/cards/i/Illumination.java
index afdfd769c10..b1b03454944 100644
--- a/Mage.Sets/src/mage/cards/i/Illumination.java
+++ b/Mage.Sets/src/mage/cards/i/Illumination.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class Illumination extends CardImpl {
+public final class Illumination extends CardImpl {
private static final FilterSpell filter = new FilterSpell("artifact or enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/i/IllusionReality.java b/Mage.Sets/src/mage/cards/i/IllusionReality.java
index 2b6b4d6138d..4df840354a6 100644
--- a/Mage.Sets/src/mage/cards/i/IllusionReality.java
+++ b/Mage.Sets/src/mage/cards/i/IllusionReality.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author LevelX2
*/
-public class IllusionReality extends SplitCard {
+public final class IllusionReality extends SplitCard {
public IllusionReality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}", "{2}{G}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/i/IllusionaryArmor.java b/Mage.Sets/src/mage/cards/i/IllusionaryArmor.java
index 8c3a2927bb6..2f0a24ceec4 100644
--- a/Mage.Sets/src/mage/cards/i/IllusionaryArmor.java
+++ b/Mage.Sets/src/mage/cards/i/IllusionaryArmor.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class IllusionaryArmor extends CardImpl {
+public final class IllusionaryArmor extends CardImpl {
public IllusionaryArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IllusionaryForces.java b/Mage.Sets/src/mage/cards/i/IllusionaryForces.java
index a6e6ebe9f03..1c5c00ac9f3 100644
--- a/Mage.Sets/src/mage/cards/i/IllusionaryForces.java
+++ b/Mage.Sets/src/mage/cards/i/IllusionaryForces.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class IllusionaryForces extends CardImpl {
+public final class IllusionaryForces extends CardImpl {
public IllusionaryForces(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IllusionaryServant.java b/Mage.Sets/src/mage/cards/i/IllusionaryServant.java
index db30aede782..28a5ca4a422 100644
--- a/Mage.Sets/src/mage/cards/i/IllusionaryServant.java
+++ b/Mage.Sets/src/mage/cards/i/IllusionaryServant.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class IllusionaryServant extends CardImpl {
+public final class IllusionaryServant extends CardImpl {
public IllusionaryServant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IllusionaryWall.java b/Mage.Sets/src/mage/cards/i/IllusionaryWall.java
index 862b899ae70..75871551662 100644
--- a/Mage.Sets/src/mage/cards/i/IllusionaryWall.java
+++ b/Mage.Sets/src/mage/cards/i/IllusionaryWall.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class IllusionaryWall extends CardImpl {
+public final class IllusionaryWall extends CardImpl {
public IllusionaryWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IllusionistsBracers.java b/Mage.Sets/src/mage/cards/i/IllusionistsBracers.java
index c5de31a6ab9..ff2813dbc86 100644
--- a/Mage.Sets/src/mage/cards/i/IllusionistsBracers.java
+++ b/Mage.Sets/src/mage/cards/i/IllusionistsBracers.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class IllusionistsBracers extends CardImpl {
+public final class IllusionistsBracers extends CardImpl {
public IllusionistsBracers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/i/IllusionistsGambit.java b/Mage.Sets/src/mage/cards/i/IllusionistsGambit.java
index bf08eab3260..4ba58bac228 100644
--- a/Mage.Sets/src/mage/cards/i/IllusionistsGambit.java
+++ b/Mage.Sets/src/mage/cards/i/IllusionistsGambit.java
@@ -53,7 +53,7 @@ import mage.game.turn.TurnMod;
*
* @author LevelX2
*/
-public class IllusionistsGambit extends CardImpl {
+public final class IllusionistsGambit extends CardImpl {
public IllusionistsGambit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IllusionistsStratagem.java b/Mage.Sets/src/mage/cards/i/IllusionistsStratagem.java
index 8d4addc91e4..6f19efb99f4 100644
--- a/Mage.Sets/src/mage/cards/i/IllusionistsStratagem.java
+++ b/Mage.Sets/src/mage/cards/i/IllusionistsStratagem.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Styxo
*/
-public class IllusionistsStratagem extends CardImpl {
+public final class IllusionistsStratagem extends CardImpl {
public IllusionistsStratagem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IllusionsOfGrandeur.java b/Mage.Sets/src/mage/cards/i/IllusionsOfGrandeur.java
index 8f45d1790eb..f91187484c2 100644
--- a/Mage.Sets/src/mage/cards/i/IllusionsOfGrandeur.java
+++ b/Mage.Sets/src/mage/cards/i/IllusionsOfGrandeur.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author emerald000
*/
-public class IllusionsOfGrandeur extends CardImpl {
+public final class IllusionsOfGrandeur extends CardImpl {
public IllusionsOfGrandeur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IllusoryAmbusher.java b/Mage.Sets/src/mage/cards/i/IllusoryAmbusher.java
index e41b9a464ff..b223e967ed1 100644
--- a/Mage.Sets/src/mage/cards/i/IllusoryAmbusher.java
+++ b/Mage.Sets/src/mage/cards/i/IllusoryAmbusher.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class IllusoryAmbusher extends CardImpl {
+public final class IllusoryAmbusher extends CardImpl {
public IllusoryAmbusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IllusoryAngel.java b/Mage.Sets/src/mage/cards/i/IllusoryAngel.java
index 3b084fe5dc3..689117bad79 100644
--- a/Mage.Sets/src/mage/cards/i/IllusoryAngel.java
+++ b/Mage.Sets/src/mage/cards/i/IllusoryAngel.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class IllusoryAngel extends CardImpl {
+public final class IllusoryAngel extends CardImpl {
public IllusoryAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IllusoryDemon.java b/Mage.Sets/src/mage/cards/i/IllusoryDemon.java
index e5db8d487f4..4569bfa0ff9 100644
--- a/Mage.Sets/src/mage/cards/i/IllusoryDemon.java
+++ b/Mage.Sets/src/mage/cards/i/IllusoryDemon.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class IllusoryDemon extends CardImpl {
+public final class IllusoryDemon extends CardImpl {
public IllusoryDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IllusoryGains.java b/Mage.Sets/src/mage/cards/i/IllusoryGains.java
index d2b7f01df0a..a39103267e4 100644
--- a/Mage.Sets/src/mage/cards/i/IllusoryGains.java
+++ b/Mage.Sets/src/mage/cards/i/IllusoryGains.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class IllusoryGains extends CardImpl {
+public final class IllusoryGains extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a creature");
diff --git a/Mage.Sets/src/mage/cards/i/IllusoryWrappings.java b/Mage.Sets/src/mage/cards/i/IllusoryWrappings.java
index e305bb678ca..6a1c7c1cc49 100644
--- a/Mage.Sets/src/mage/cards/i/IllusoryWrappings.java
+++ b/Mage.Sets/src/mage/cards/i/IllusoryWrappings.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class IllusoryWrappings extends CardImpl {
+public final class IllusoryWrappings extends CardImpl {
public IllusoryWrappings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/Imagecrafter.java b/Mage.Sets/src/mage/cards/i/Imagecrafter.java
index 52aca24e9b4..23c40c95731 100644
--- a/Mage.Sets/src/mage/cards/i/Imagecrafter.java
+++ b/Mage.Sets/src/mage/cards/i/Imagecrafter.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author EvilGeek
*/
-public class Imagecrafter extends CardImpl {
+public final class Imagecrafter extends CardImpl {
public Imagecrafter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/i/ImagesOfThePast.java b/Mage.Sets/src/mage/cards/i/ImagesOfThePast.java
index f8fd54d611c..8ae90441296 100644
--- a/Mage.Sets/src/mage/cards/i/ImagesOfThePast.java
+++ b/Mage.Sets/src/mage/cards/i/ImagesOfThePast.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Styxo
*/
-public class ImagesOfThePast extends CardImpl {
+public final class ImagesOfThePast extends CardImpl {
public ImagesOfThePast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/ImaginaryPet.java b/Mage.Sets/src/mage/cards/i/ImaginaryPet.java
index 8d20c701ad1..1b414c7c599 100644
--- a/Mage.Sets/src/mage/cards/i/ImaginaryPet.java
+++ b/Mage.Sets/src/mage/cards/i/ImaginaryPet.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class ImaginaryPet extends CardImpl {
+public final class ImaginaryPet extends CardImpl {
public ImaginaryPet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/ImaginaryThreats.java b/Mage.Sets/src/mage/cards/i/ImaginaryThreats.java
index bdd4e9a0dd6..1536b3abf31 100644
--- a/Mage.Sets/src/mage/cards/i/ImaginaryThreats.java
+++ b/Mage.Sets/src/mage/cards/i/ImaginaryThreats.java
@@ -51,7 +51,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author LevelX2
*/
-public class ImaginaryThreats extends CardImpl {
+public final class ImaginaryThreats extends CardImpl {
public ImaginaryThreats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/ImiStatue.java b/Mage.Sets/src/mage/cards/i/ImiStatue.java
index 5d04bb83186..afff9cc760c 100644
--- a/Mage.Sets/src/mage/cards/i/ImiStatue.java
+++ b/Mage.Sets/src/mage/cards/i/ImiStatue.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ImiStatue extends CardImpl {
+public final class ImiStatue extends CardImpl {
public ImiStatue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/i/ImmaculateMagistrate.java b/Mage.Sets/src/mage/cards/i/ImmaculateMagistrate.java
index 6354abe13c2..b9a76fa7d40 100644
--- a/Mage.Sets/src/mage/cards/i/ImmaculateMagistrate.java
+++ b/Mage.Sets/src/mage/cards/i/ImmaculateMagistrate.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ImmaculateMagistrate extends CardImpl {
+public final class ImmaculateMagistrate extends CardImpl {
public ImmaculateMagistrate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/Immerwolf.java b/Mage.Sets/src/mage/cards/i/Immerwolf.java
index 05ebd73ae76..4f3bb45a307 100644
--- a/Mage.Sets/src/mage/cards/i/Immerwolf.java
+++ b/Mage.Sets/src/mage/cards/i/Immerwolf.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward
*/
-public class Immerwolf extends CardImpl {
+public final class Immerwolf extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wolf and Werewolf creatures");
diff --git a/Mage.Sets/src/mage/cards/i/ImminentDoom.java b/Mage.Sets/src/mage/cards/i/ImminentDoom.java
index a8b06b8abb2..48b5559edff 100644
--- a/Mage.Sets/src/mage/cards/i/ImminentDoom.java
+++ b/Mage.Sets/src/mage/cards/i/ImminentDoom.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class ImminentDoom extends CardImpl {
+public final class ImminentDoom extends CardImpl {
public ImminentDoom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java b/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java
index 710547162d8..474aa49b77d 100644
--- a/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java
+++ b/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java
@@ -49,7 +49,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class ImmobilizerEldrazi extends CardImpl {
+public final class ImmobilizerEldrazi extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature with toughness greater than its power");
diff --git a/Mage.Sets/src/mage/cards/i/ImmobilizingInk.java b/Mage.Sets/src/mage/cards/i/ImmobilizingInk.java
index 91648cbf4c6..da3c8096991 100644
--- a/Mage.Sets/src/mage/cards/i/ImmobilizingInk.java
+++ b/Mage.Sets/src/mage/cards/i/ImmobilizingInk.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class ImmobilizingInk extends CardImpl {
+public final class ImmobilizingInk extends CardImpl {
public ImmobilizingInk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/ImmolatingGlare.java b/Mage.Sets/src/mage/cards/i/ImmolatingGlare.java
index 64b86caa4d0..beea4ab257d 100644
--- a/Mage.Sets/src/mage/cards/i/ImmolatingGlare.java
+++ b/Mage.Sets/src/mage/cards/i/ImmolatingGlare.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ImmolatingGlare extends CardImpl {
+public final class ImmolatingGlare extends CardImpl {
public ImmolatingGlare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/ImmolatingSouleater.java b/Mage.Sets/src/mage/cards/i/ImmolatingSouleater.java
index dfaf9a7229a..864fbaf15ce 100644
--- a/Mage.Sets/src/mage/cards/i/ImmolatingSouleater.java
+++ b/Mage.Sets/src/mage/cards/i/ImmolatingSouleater.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class ImmolatingSouleater extends CardImpl {
+public final class ImmolatingSouleater extends CardImpl {
public ImmolatingSouleater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/i/Immolation.java b/Mage.Sets/src/mage/cards/i/Immolation.java
index a66c785ef1b..47fbe8b3f01 100644
--- a/Mage.Sets/src/mage/cards/i/Immolation.java
+++ b/Mage.Sets/src/mage/cards/i/Immolation.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ilcartographer
*/
-public class Immolation extends CardImpl {
+public final class Immolation extends CardImpl {
public Immolation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/i/ImmortalCoil.java b/Mage.Sets/src/mage/cards/i/ImmortalCoil.java
index 1ea18a3da52..1cc506429a4 100644
--- a/Mage.Sets/src/mage/cards/i/ImmortalCoil.java
+++ b/Mage.Sets/src/mage/cards/i/ImmortalCoil.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class ImmortalCoil extends CardImpl {
+public final class ImmortalCoil extends CardImpl {
public ImmortalCoil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/ImmortalServitude.java b/Mage.Sets/src/mage/cards/i/ImmortalServitude.java
index 176b8022dfe..730aaa3afbe 100644
--- a/Mage.Sets/src/mage/cards/i/ImmortalServitude.java
+++ b/Mage.Sets/src/mage/cards/i/ImmortalServitude.java
@@ -45,15 +45,13 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class ImmortalServitude extends CardImpl {
+public final class ImmortalServitude extends CardImpl {
public ImmortalServitude(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{W/B}{W/B}{W/B}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{W/B}{W/B}{W/B}");
// Return each creature card with converted mana cost X from your graveyard to the battlefield.
this.getSpellAbility().addEffect(new ImmortalServitudeEffect());
-
}
public ImmortalServitude(final ImmortalServitude card) {
@@ -88,11 +86,10 @@ class ImmortalServitudeEffect extends OneShotEffect {
int count = source.getManaCostsToPay().getX();
Set cards = you.getGraveyard().getCards(new FilterCreatureCard(), game);
for (Card card : cards) {
- if (card.getConvertedManaCost() == count
- && card != null) {
+ if (card != null && card.getConvertedManaCost() == count) {
card.moveToZone(Zone.BATTLEFIELD, source.getSourceId(), game, false);
}
}
return true;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/i/ImpactResonance.java b/Mage.Sets/src/mage/cards/i/ImpactResonance.java
index f57a768bf62..ca8ef9b607b 100644
--- a/Mage.Sets/src/mage/cards/i/ImpactResonance.java
+++ b/Mage.Sets/src/mage/cards/i/ImpactResonance.java
@@ -47,7 +47,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class ImpactResonance extends CardImpl {
+public final class ImpactResonance extends CardImpl {
public ImpactResonance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/ImpactTremors.java b/Mage.Sets/src/mage/cards/i/ImpactTremors.java
index 1fb08dcb145..5fa33900aef 100644
--- a/Mage.Sets/src/mage/cards/i/ImpactTremors.java
+++ b/Mage.Sets/src/mage/cards/i/ImpactTremors.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class ImpactTremors extends CardImpl {
+public final class ImpactTremors extends CardImpl {
public ImpactTremors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/Impale.java b/Mage.Sets/src/mage/cards/i/Impale.java
index 36f98408355..9c190782ee6 100644
--- a/Mage.Sets/src/mage/cards/i/Impale.java
+++ b/Mage.Sets/src/mage/cards/i/Impale.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Impale extends CardImpl {
+public final class Impale extends CardImpl {
public Impale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/ImpalerShrike.java b/Mage.Sets/src/mage/cards/i/ImpalerShrike.java
index 90348bd9ad7..f869afd3582 100644
--- a/Mage.Sets/src/mage/cards/i/ImpalerShrike.java
+++ b/Mage.Sets/src/mage/cards/i/ImpalerShrike.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ImpalerShrike extends CardImpl {
+public final class ImpalerShrike extends CardImpl {
public ImpalerShrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/Impatience.java b/Mage.Sets/src/mage/cards/i/Impatience.java
index 647759f495a..22692cf81a9 100644
--- a/Mage.Sets/src/mage/cards/i/Impatience.java
+++ b/Mage.Sets/src/mage/cards/i/Impatience.java
@@ -46,7 +46,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
* @author LoneFox
*/
-public class Impatience extends CardImpl {
+public final class Impatience extends CardImpl {
public Impatience(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/ImpeccableTiming.java b/Mage.Sets/src/mage/cards/i/ImpeccableTiming.java
index f3fc0a463b8..428acbbe7e0 100644
--- a/Mage.Sets/src/mage/cards/i/ImpeccableTiming.java
+++ b/Mage.Sets/src/mage/cards/i/ImpeccableTiming.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author LevelX2
*/
-public class ImpeccableTiming extends CardImpl {
+public final class ImpeccableTiming extends CardImpl {
public ImpeccableTiming(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/ImpelledGiant.java b/Mage.Sets/src/mage/cards/i/ImpelledGiant.java
index 5bec4dc3eca..2a761a1b41c 100644
--- a/Mage.Sets/src/mage/cards/i/ImpelledGiant.java
+++ b/Mage.Sets/src/mage/cards/i/ImpelledGiant.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class ImpelledGiant extends CardImpl {
+public final class ImpelledGiant extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an untapped red creature you control other than Impelled Giant");
diff --git a/Mage.Sets/src/mage/cards/i/ImpendingDisaster.java b/Mage.Sets/src/mage/cards/i/ImpendingDisaster.java
index 2c95487fd7b..f46fc7121c8 100644
--- a/Mage.Sets/src/mage/cards/i/ImpendingDisaster.java
+++ b/Mage.Sets/src/mage/cards/i/ImpendingDisaster.java
@@ -47,7 +47,7 @@ import mage.game.Game;
*
* @author Plopman
*/
-public class ImpendingDisaster extends CardImpl {
+public final class ImpendingDisaster extends CardImpl {
public ImpendingDisaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/ImperialAerosaur.java b/Mage.Sets/src/mage/cards/i/ImperialAerosaur.java
index a40cf227aae..da48a837546 100644
--- a/Mage.Sets/src/mage/cards/i/ImperialAerosaur.java
+++ b/Mage.Sets/src/mage/cards/i/ImperialAerosaur.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class ImperialAerosaur extends CardImpl {
+public final class ImperialAerosaur extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/i/ImperialCeratops.java b/Mage.Sets/src/mage/cards/i/ImperialCeratops.java
index 74cfe031e9a..f1a7762362a 100644
--- a/Mage.Sets/src/mage/cards/i/ImperialCeratops.java
+++ b/Mage.Sets/src/mage/cards/i/ImperialCeratops.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author L_J
*/
-public class ImperialCeratops extends CardImpl {
+public final class ImperialCeratops extends CardImpl {
public ImperialCeratops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/ImperialEdict.java b/Mage.Sets/src/mage/cards/i/ImperialEdict.java
index 90179d846be..a780f0aa908 100644
--- a/Mage.Sets/src/mage/cards/i/ImperialEdict.java
+++ b/Mage.Sets/src/mage/cards/i/ImperialEdict.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class ImperialEdict extends CardImpl {
+public final class ImperialEdict extends CardImpl {
public ImperialEdict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/ImperialGunner.java b/Mage.Sets/src/mage/cards/i/ImperialGunner.java
index c102ab82909..3c751f6d2a1 100644
--- a/Mage.Sets/src/mage/cards/i/ImperialGunner.java
+++ b/Mage.Sets/src/mage/cards/i/ImperialGunner.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Styxo
*/
-public class ImperialGunner extends CardImpl {
+public final class ImperialGunner extends CardImpl {
private static final FilterCreaturePlayerOrPlaneswalker filter = new FilterCreaturePlayerOrPlaneswalker("target player, planeswalker or Starship creature");
diff --git a/Mage.Sets/src/mage/cards/i/ImperialHellkite.java b/Mage.Sets/src/mage/cards/i/ImperialHellkite.java
index 0728eec05d2..078bfdc43b3 100644
--- a/Mage.Sets/src/mage/cards/i/ImperialHellkite.java
+++ b/Mage.Sets/src/mage/cards/i/ImperialHellkite.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class ImperialHellkite extends CardImpl {
+public final class ImperialHellkite extends CardImpl {
public ImperialHellkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/ImperialLancer.java b/Mage.Sets/src/mage/cards/i/ImperialLancer.java
index feb477524f4..15e88be3fa7 100644
--- a/Mage.Sets/src/mage/cards/i/ImperialLancer.java
+++ b/Mage.Sets/src/mage/cards/i/ImperialLancer.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class ImperialLancer extends CardImpl {
+public final class ImperialLancer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Dinosaur");
diff --git a/Mage.Sets/src/mage/cards/i/ImperialMask.java b/Mage.Sets/src/mage/cards/i/ImperialMask.java
index d2e64525d31..bb6ed89bf9c 100644
--- a/Mage.Sets/src/mage/cards/i/ImperialMask.java
+++ b/Mage.Sets/src/mage/cards/i/ImperialMask.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author TheElk801
*/
-public class ImperialMask extends CardImpl {
+public final class ImperialMask extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/i/ImperialRecruiter.java b/Mage.Sets/src/mage/cards/i/ImperialRecruiter.java
index 1b2cc1587b7..c56b356eb1e 100644
--- a/Mage.Sets/src/mage/cards/i/ImperialRecruiter.java
+++ b/Mage.Sets/src/mage/cards/i/ImperialRecruiter.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class ImperialRecruiter extends CardImpl {
+public final class ImperialRecruiter extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/i/ImperialSeal.java b/Mage.Sets/src/mage/cards/i/ImperialSeal.java
index 866ecd3b5ee..d3fc8190e38 100644
--- a/Mage.Sets/src/mage/cards/i/ImperialSeal.java
+++ b/Mage.Sets/src/mage/cards/i/ImperialSeal.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class ImperialSeal extends CardImpl {
+public final class ImperialSeal extends CardImpl {
public ImperialSeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/i/Imperiosaur.java b/Mage.Sets/src/mage/cards/i/Imperiosaur.java
index a630c9a3f9d..a94dc7793df 100644
--- a/Mage.Sets/src/mage/cards/i/Imperiosaur.java
+++ b/Mage.Sets/src/mage/cards/i/Imperiosaur.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author LevelX2
*/
-public class Imperiosaur extends CardImpl {
+public final class Imperiosaur extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/i/ImperiousPerfect.java b/Mage.Sets/src/mage/cards/i/ImperiousPerfect.java
index 9d7a4caa23d..33163bbb29b 100644
--- a/Mage.Sets/src/mage/cards/i/ImperiousPerfect.java
+++ b/Mage.Sets/src/mage/cards/i/ImperiousPerfect.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.ElfToken;
*
* @author Loki
*/
-public class ImperiousPerfect extends CardImpl {
+public final class ImperiousPerfect extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creatures");
diff --git a/Mage.Sets/src/mage/cards/i/ImpetuousDevils.java b/Mage.Sets/src/mage/cards/i/ImpetuousDevils.java
index 141e0d1df4d..8e89b0dbdf4 100644
--- a/Mage.Sets/src/mage/cards/i/ImpetuousDevils.java
+++ b/Mage.Sets/src/mage/cards/i/ImpetuousDevils.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ImpetuousDevils extends CardImpl {
+public final class ImpetuousDevils extends CardImpl {
public ImpetuousDevils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/ImpetuousProtege.java b/Mage.Sets/src/mage/cards/i/ImpetuousProtege.java
new file mode 100644
index 00000000000..80084620206
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/i/ImpetuousProtege.java
@@ -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.i;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.AttacksTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.TargetController;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.ControllerPredicate;
+import mage.filter.predicate.permanent.TappedPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ImpetuousProtege extends CardImpl {
+
+ public ImpetuousProtege(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(0);
+ this.toughness = new MageInt(4);
+
+ // Partner with Proud Mentor (When this creature enters the battlefield, target player may put Proud Mentor into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Proud Mentor"));
+
+ // Whenever Impetuous Protege attacks, it gets +X/+0 until end of turn, where X is the greatest power among tapped creatures your opponents control
+ this.addAbility(new AttacksTriggeredAbility(new ImpetuousProtegeEffect(), false));
+ }
+
+ public ImpetuousProtege(final ImpetuousProtege card) {
+ super(card);
+ }
+
+ @Override
+ public ImpetuousProtege copy() {
+ return new ImpetuousProtege(this);
+ }
+}
+
+class ImpetuousProtegeEffect extends OneShotEffect {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
+
+ static {
+ filter.add(new TappedPredicate());
+ filter.add(new ControllerPredicate(TargetController.OPPONENT));
+ }
+
+ ImpetuousProtegeEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "it gets +X/+0 until end of turn, where X is the greatest power among tapped creatures your opponents control";
+ }
+
+ ImpetuousProtegeEffect(final ImpetuousProtegeEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ImpetuousProtegeEffect copy() {
+ return new ImpetuousProtegeEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ int maxPower = 0;
+ for (Permanent creature : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
+ maxPower = Math.max(maxPower, creature.getPower().getValue());
+ }
+ game.addEffect(new BoostSourceEffect(maxPower, 0, Duration.EndOfTurn), source);
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/i/ImpetuousSunchaser.java b/Mage.Sets/src/mage/cards/i/ImpetuousSunchaser.java
index 5fbee7c4c0d..315398ae0f1 100644
--- a/Mage.Sets/src/mage/cards/i/ImpetuousSunchaser.java
+++ b/Mage.Sets/src/mage/cards/i/ImpetuousSunchaser.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ImpetuousSunchaser extends CardImpl {
+public final class ImpetuousSunchaser extends CardImpl {
public ImpetuousSunchaser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/ImplementOfCombustion.java b/Mage.Sets/src/mage/cards/i/ImplementOfCombustion.java
index 8b254b0a6cd..d720eca11ec 100644
--- a/Mage.Sets/src/mage/cards/i/ImplementOfCombustion.java
+++ b/Mage.Sets/src/mage/cards/i/ImplementOfCombustion.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class ImplementOfCombustion extends CardImpl {
+public final class ImplementOfCombustion extends CardImpl {
public ImplementOfCombustion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/i/ImplementOfExamination.java b/Mage.Sets/src/mage/cards/i/ImplementOfExamination.java
index 22cc424d756..306fff198d4 100644
--- a/Mage.Sets/src/mage/cards/i/ImplementOfExamination.java
+++ b/Mage.Sets/src/mage/cards/i/ImplementOfExamination.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ImplementOfExamination extends CardImpl {
+public final class ImplementOfExamination extends CardImpl {
public ImplementOfExamination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/i/ImplementOfFerocity.java b/Mage.Sets/src/mage/cards/i/ImplementOfFerocity.java
index feb953a3544..149998b0844 100644
--- a/Mage.Sets/src/mage/cards/i/ImplementOfFerocity.java
+++ b/Mage.Sets/src/mage/cards/i/ImplementOfFerocity.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ImplementOfFerocity extends CardImpl {
+public final class ImplementOfFerocity extends CardImpl {
public ImplementOfFerocity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/i/ImplementOfImprovement.java b/Mage.Sets/src/mage/cards/i/ImplementOfImprovement.java
index 885815f236d..fab2a5b86cd 100644
--- a/Mage.Sets/src/mage/cards/i/ImplementOfImprovement.java
+++ b/Mage.Sets/src/mage/cards/i/ImplementOfImprovement.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ImplementOfImprovement extends CardImpl {
+public final class ImplementOfImprovement extends CardImpl {
public ImplementOfImprovement(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/i/ImplementOfMalice.java b/Mage.Sets/src/mage/cards/i/ImplementOfMalice.java
index 9835e94f039..d9860785100 100644
--- a/Mage.Sets/src/mage/cards/i/ImplementOfMalice.java
+++ b/Mage.Sets/src/mage/cards/i/ImplementOfMalice.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class ImplementOfMalice extends CardImpl {
+public final class ImplementOfMalice extends CardImpl {
public ImplementOfMalice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/i/ImplementsOfSacrifice.java b/Mage.Sets/src/mage/cards/i/ImplementsOfSacrifice.java
index 14edd1def85..30a468a144e 100644
--- a/Mage.Sets/src/mage/cards/i/ImplementsOfSacrifice.java
+++ b/Mage.Sets/src/mage/cards/i/ImplementsOfSacrifice.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ImplementsOfSacrifice extends CardImpl {
+public final class ImplementsOfSacrifice extends CardImpl {
public ImplementsOfSacrifice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/i/Implode.java b/Mage.Sets/src/mage/cards/i/Implode.java
index 8da00818c93..7f69ac201b1 100644
--- a/Mage.Sets/src/mage/cards/i/Implode.java
+++ b/Mage.Sets/src/mage/cards/i/Implode.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetLandPermanent;
* @author LoneFox
*/
-public class Implode extends CardImpl {
+public final class Implode extends CardImpl {
public Implode(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/ImposingSovereign.java b/Mage.Sets/src/mage/cards/i/ImposingSovereign.java
index 1b4fa6f0d24..cffd84a2a12 100644
--- a/Mage.Sets/src/mage/cards/i/ImposingSovereign.java
+++ b/Mage.Sets/src/mage/cards/i/ImposingSovereign.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class ImposingSovereign extends CardImpl {
+public final class ImposingSovereign extends CardImpl {
public ImposingSovereign(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/ImposingVisage.java b/Mage.Sets/src/mage/cards/i/ImposingVisage.java
index 8e3d76dd726..c31d6b9731f 100644
--- a/Mage.Sets/src/mage/cards/i/ImposingVisage.java
+++ b/Mage.Sets/src/mage/cards/i/ImposingVisage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ImposingVisage extends CardImpl {
+public final class ImposingVisage extends CardImpl {
public ImposingVisage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/i/Imprison.java b/Mage.Sets/src/mage/cards/i/Imprison.java
index 9b3f47f44a5..3110251c288 100644
--- a/Mage.Sets/src/mage/cards/i/Imprison.java
+++ b/Mage.Sets/src/mage/cards/i/Imprison.java
@@ -63,7 +63,7 @@ import mage.watchers.common.BlockedByOnlyOneCreatureThisCombatWatcher;
*
* @author L_J
*/
-public class Imprison extends CardImpl {
+public final class Imprison extends CardImpl {
public Imprison(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/i/ImprisonedInTheMoon.java b/Mage.Sets/src/mage/cards/i/ImprisonedInTheMoon.java
index 3cfc8e254d1..66b5bc8c81c 100644
--- a/Mage.Sets/src/mage/cards/i/ImprisonedInTheMoon.java
+++ b/Mage.Sets/src/mage/cards/i/ImprisonedInTheMoon.java
@@ -54,7 +54,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class ImprisonedInTheMoon extends CardImpl {
+public final class ImprisonedInTheMoon extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature, land, or planeswalker");
diff --git a/Mage.Sets/src/mage/cards/i/ImpromptuRaid.java b/Mage.Sets/src/mage/cards/i/ImpromptuRaid.java
index fa2ce1ebcc6..4a39b75f9cc 100644
--- a/Mage.Sets/src/mage/cards/i/ImpromptuRaid.java
+++ b/Mage.Sets/src/mage/cards/i/ImpromptuRaid.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class ImpromptuRaid extends CardImpl {
+public final class ImpromptuRaid extends CardImpl {
public ImpromptuRaid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/i/ImprovisedArmor.java b/Mage.Sets/src/mage/cards/i/ImprovisedArmor.java
index 4230a8f4c56..2f717f123e2 100644
--- a/Mage.Sets/src/mage/cards/i/ImprovisedArmor.java
+++ b/Mage.Sets/src/mage/cards/i/ImprovisedArmor.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ImprovisedArmor extends CardImpl {
+public final class ImprovisedArmor extends CardImpl {
public ImprovisedArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/ImpsMischief.java b/Mage.Sets/src/mage/cards/i/ImpsMischief.java
index 07278710e6e..14f32610488 100644
--- a/Mage.Sets/src/mage/cards/i/ImpsMischief.java
+++ b/Mage.Sets/src/mage/cards/i/ImpsMischief.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class ImpsMischief extends CardImpl {
+public final class ImpsMischief extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell with a single target");
diff --git a/Mage.Sets/src/mage/cards/i/ImpsTaunt.java b/Mage.Sets/src/mage/cards/i/ImpsTaunt.java
index 6182dbf84a2..1bc03ad9b50 100644
--- a/Mage.Sets/src/mage/cards/i/ImpsTaunt.java
+++ b/Mage.Sets/src/mage/cards/i/ImpsTaunt.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ImpsTaunt extends CardImpl {
+public final class ImpsTaunt extends CardImpl {
public ImpsTaunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/Impulse.java b/Mage.Sets/src/mage/cards/i/Impulse.java
index 13807fe4494..4e9edec639c 100644
--- a/Mage.Sets/src/mage/cards/i/Impulse.java
+++ b/Mage.Sets/src/mage/cards/i/Impulse.java
@@ -40,7 +40,7 @@ import mage.filter.FilterCard;
*
* @author LevelX2
*/
-public class Impulse extends CardImpl {
+public final class Impulse extends CardImpl {
public Impulse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/ImpulsiveManeuvers.java b/Mage.Sets/src/mage/cards/i/ImpulsiveManeuvers.java
index d94fce17a22..b3c693bc72e 100644
--- a/Mage.Sets/src/mage/cards/i/ImpulsiveManeuvers.java
+++ b/Mage.Sets/src/mage/cards/i/ImpulsiveManeuvers.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author L_J
*/
-public class ImpulsiveManeuvers extends CardImpl {
+public final class ImpulsiveManeuvers extends CardImpl {
public ImpulsiveManeuvers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/ImpulsiveWager.java b/Mage.Sets/src/mage/cards/i/ImpulsiveWager.java
index b023a00e577..1afbafffc45 100644
--- a/Mage.Sets/src/mage/cards/i/ImpulsiveWager.java
+++ b/Mage.Sets/src/mage/cards/i/ImpulsiveWager.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class ImpulsiveWager extends CardImpl {
+public final class ImpulsiveWager extends CardImpl {
public ImpulsiveWager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InBolassClutches.java b/Mage.Sets/src/mage/cards/i/InBolassClutches.java
index 0cee40b900e..9ad2d12d67b 100644
--- a/Mage.Sets/src/mage/cards/i/InBolassClutches.java
+++ b/Mage.Sets/src/mage/cards/i/InBolassClutches.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class InBolassClutches extends CardImpl {
+public final class InBolassClutches extends CardImpl {
public InBolassClutches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InGarruksWake.java b/Mage.Sets/src/mage/cards/i/InGarruksWake.java
index 56b98eba84b..84f3134e604 100644
--- a/Mage.Sets/src/mage/cards/i/InGarruksWake.java
+++ b/Mage.Sets/src/mage/cards/i/InGarruksWake.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
/**
* @author noxx
*/
-public class InGarruksWake extends CardImpl {
+public final class InGarruksWake extends CardImpl {
private static final FilterPermanent filter = new FilterCreatureOrPlaneswalkerPermanent("creatures you don't control and all planeswalkers you don't control");
diff --git a/Mage.Sets/src/mage/cards/i/InOketrasName.java b/Mage.Sets/src/mage/cards/i/InOketrasName.java
index c5b5bdb0786..ee249ca335e 100644
--- a/Mage.Sets/src/mage/cards/i/InOketrasName.java
+++ b/Mage.Sets/src/mage/cards/i/InOketrasName.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class InOketrasName extends CardImpl {
+public final class InOketrasName extends CardImpl {
private static final FilterCreaturePermanent filterNotZombies = new FilterCreaturePermanent("Other creatures");
diff --git a/Mage.Sets/src/mage/cards/i/InTheEyeOfChaos.java b/Mage.Sets/src/mage/cards/i/InTheEyeOfChaos.java
index 04299ed5eff..257023bf45c 100644
--- a/Mage.Sets/src/mage/cards/i/InTheEyeOfChaos.java
+++ b/Mage.Sets/src/mage/cards/i/InTheEyeOfChaos.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class InTheEyeOfChaos extends CardImpl {
+public final class InTheEyeOfChaos extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant spell");
static {
diff --git a/Mage.Sets/src/mage/cards/i/InTheWebOfWar.java b/Mage.Sets/src/mage/cards/i/InTheWebOfWar.java
index 60eebdb4173..952665c83fb 100644
--- a/Mage.Sets/src/mage/cards/i/InTheWebOfWar.java
+++ b/Mage.Sets/src/mage/cards/i/InTheWebOfWar.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class InTheWebOfWar extends CardImpl {
+public final class InTheWebOfWar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature");
diff --git a/Mage.Sets/src/mage/cards/i/InactionInjunction.java b/Mage.Sets/src/mage/cards/i/InactionInjunction.java
index 5065a9edca8..f69c8ca3dbb 100644
--- a/Mage.Sets/src/mage/cards/i/InactionInjunction.java
+++ b/Mage.Sets/src/mage/cards/i/InactionInjunction.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class InactionInjunction extends CardImpl {
+public final class InactionInjunction extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/i/InallaArchmageRitualist.java b/Mage.Sets/src/mage/cards/i/InallaArchmageRitualist.java
index 4fe37b08e47..4d01f8de66e 100644
--- a/Mage.Sets/src/mage/cards/i/InallaArchmageRitualist.java
+++ b/Mage.Sets/src/mage/cards/i/InallaArchmageRitualist.java
@@ -68,7 +68,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class InallaArchmageRitualist extends CardImpl {
+public final class InallaArchmageRitualist extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another nontoken Wizard");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("untapped Wizards you control");
diff --git a/Mage.Sets/src/mage/cards/i/InameAsOne.java b/Mage.Sets/src/mage/cards/i/InameAsOne.java
index 09b917e651d..eb1dbe6aa50 100644
--- a/Mage.Sets/src/mage/cards/i/InameAsOne.java
+++ b/Mage.Sets/src/mage/cards/i/InameAsOne.java
@@ -60,7 +60,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author LevelX2
*/
-public class InameAsOne extends CardImpl {
+public final class InameAsOne extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Spirit permanent card");
diff --git a/Mage.Sets/src/mage/cards/i/InameDeathAspect.java b/Mage.Sets/src/mage/cards/i/InameDeathAspect.java
index dc985f65534..448bf47d01f 100644
--- a/Mage.Sets/src/mage/cards/i/InameDeathAspect.java
+++ b/Mage.Sets/src/mage/cards/i/InameDeathAspect.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class InameDeathAspect extends CardImpl {
+public final class InameDeathAspect extends CardImpl {
public InameDeathAspect(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InameLifeAspect.java b/Mage.Sets/src/mage/cards/i/InameLifeAspect.java
index 83c33b9c44e..ccd07eddc16 100644
--- a/Mage.Sets/src/mage/cards/i/InameLifeAspect.java
+++ b/Mage.Sets/src/mage/cards/i/InameLifeAspect.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class InameLifeAspect extends CardImpl {
+public final class InameLifeAspect extends CardImpl {
private static final FilterCard filter = new FilterCard("Spirit cards from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/i/IncandescentSoulstoke.java b/Mage.Sets/src/mage/cards/i/IncandescentSoulstoke.java
index 99f152e8460..ea2e8c1dbc8 100644
--- a/Mage.Sets/src/mage/cards/i/IncandescentSoulstoke.java
+++ b/Mage.Sets/src/mage/cards/i/IncandescentSoulstoke.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class IncandescentSoulstoke extends CardImpl {
+public final class IncandescentSoulstoke extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elemental creatures");
diff --git a/Mage.Sets/src/mage/cards/i/IncendiaryCommand.java b/Mage.Sets/src/mage/cards/i/IncendiaryCommand.java
index 442b5171bc2..35e1bf1fb05 100644
--- a/Mage.Sets/src/mage/cards/i/IncendiaryCommand.java
+++ b/Mage.Sets/src/mage/cards/i/IncendiaryCommand.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class IncendiaryCommand extends CardImpl {
+public final class IncendiaryCommand extends CardImpl {
public IncendiaryCommand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IncendiaryFlow.java b/Mage.Sets/src/mage/cards/i/IncendiaryFlow.java
index 68607d0c784..a77f65dd854 100644
--- a/Mage.Sets/src/mage/cards/i/IncendiaryFlow.java
+++ b/Mage.Sets/src/mage/cards/i/IncendiaryFlow.java
@@ -42,7 +42,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author fireshoes
*/
-public class IncendiaryFlow extends CardImpl {
+public final class IncendiaryFlow extends CardImpl {
public IncendiaryFlow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IncendiarySabotage.java b/Mage.Sets/src/mage/cards/i/IncendiarySabotage.java
index ddad4200f2c..dc658a9636f 100644
--- a/Mage.Sets/src/mage/cards/i/IncendiarySabotage.java
+++ b/Mage.Sets/src/mage/cards/i/IncendiarySabotage.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author cg5
*/
-public class IncendiarySabotage extends CardImpl {
+public final class IncendiarySabotage extends CardImpl {
public IncendiarySabotage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/Incinerate.java b/Mage.Sets/src/mage/cards/i/Incinerate.java
index f3904012a4b..4b5882bba81 100644
--- a/Mage.Sets/src/mage/cards/i/Incinerate.java
+++ b/Mage.Sets/src/mage/cards/i/Incinerate.java
@@ -46,7 +46,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author North
*/
-public class Incinerate extends CardImpl {
+public final class Incinerate extends CardImpl {
public Incinerate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/Incite.java b/Mage.Sets/src/mage/cards/i/Incite.java
index c4ed9cb9420..d67b1867d93 100644
--- a/Mage.Sets/src/mage/cards/i/Incite.java
+++ b/Mage.Sets/src/mage/cards/i/Incite.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Incite extends CardImpl {
+public final class Incite extends CardImpl {
public Incite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InciteHysteria.java b/Mage.Sets/src/mage/cards/i/InciteHysteria.java
index 7295b99d4b9..83163962ebf 100644
--- a/Mage.Sets/src/mage/cards/i/InciteHysteria.java
+++ b/Mage.Sets/src/mage/cards/i/InciteHysteria.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class InciteHysteria extends CardImpl {
+public final class InciteHysteria extends CardImpl {
public InciteHysteria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InciteRebellion.java b/Mage.Sets/src/mage/cards/i/InciteRebellion.java
index 457bfa09805..363889d35ac 100644
--- a/Mage.Sets/src/mage/cards/i/InciteRebellion.java
+++ b/Mage.Sets/src/mage/cards/i/InciteRebellion.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class InciteRebellion extends CardImpl {
+public final class InciteRebellion extends CardImpl {
public InciteRebellion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InciteWar.java b/Mage.Sets/src/mage/cards/i/InciteWar.java
index 26dcef22f1c..8ca5a3554ef 100644
--- a/Mage.Sets/src/mage/cards/i/InciteWar.java
+++ b/Mage.Sets/src/mage/cards/i/InciteWar.java
@@ -54,7 +54,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author fireshoes
*/
-public class InciteWar extends CardImpl {
+public final class InciteWar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/i/IncitedRabble.java b/Mage.Sets/src/mage/cards/i/IncitedRabble.java
index ff2cd7bc760..574e05c5349 100644
--- a/Mage.Sets/src/mage/cards/i/IncitedRabble.java
+++ b/Mage.Sets/src/mage/cards/i/IncitedRabble.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class IncitedRabble extends CardImpl {
+public final class IncitedRabble extends CardImpl {
public IncitedRabble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/i/Incoming.java b/Mage.Sets/src/mage/cards/i/Incoming.java
index 2ad9b51cc73..eda961bf80e 100644
--- a/Mage.Sets/src/mage/cards/i/Incoming.java
+++ b/Mage.Sets/src/mage/cards/i/Incoming.java
@@ -30,9 +30,9 @@ package mage.cards.i;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
-import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
+import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author spjspj
*/
-public class Incoming extends CardImpl {
+public final class Incoming extends CardImpl {
public Incoming(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}{G}{G}{G}");
@@ -101,13 +101,7 @@ class IncomingEffect extends OneShotEffect {
if (player != null) {
TargetCardInLibrary target = new TargetCardInLibrary(0, Integer.MAX_VALUE, filter);
if (player.searchLibrary(target, game)) {
- for (UUID cardId : target.getTargets()) {
- Card card = player.getLibrary().getCard(cardId, game);
- if (card != null) {
- card.putOntoBattlefield(game, Zone.LIBRARY, source.getSourceId(), player.getId(), true);
- }
-
- }
+ player.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game);
player.shuffleLibrary(source, game);
}
}
diff --git a/Mage.Sets/src/mage/cards/i/IncorrigibleYouths.java b/Mage.Sets/src/mage/cards/i/IncorrigibleYouths.java
index afc03f2d9cb..01ee07b9844 100644
--- a/Mage.Sets/src/mage/cards/i/IncorrigibleYouths.java
+++ b/Mage.Sets/src/mage/cards/i/IncorrigibleYouths.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class IncorrigibleYouths extends CardImpl {
+public final class IncorrigibleYouths extends CardImpl {
public IncorrigibleYouths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IncreasingAmbition.java b/Mage.Sets/src/mage/cards/i/IncreasingAmbition.java
index acb1b64675b..0851eed59f2 100644
--- a/Mage.Sets/src/mage/cards/i/IncreasingAmbition.java
+++ b/Mage.Sets/src/mage/cards/i/IncreasingAmbition.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author BetaSteward
*/
-public class IncreasingAmbition extends CardImpl {
+public final class IncreasingAmbition extends CardImpl {
public IncreasingAmbition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IncreasingConfusion.java b/Mage.Sets/src/mage/cards/i/IncreasingConfusion.java
index 1390384f801..69c9af5a444 100644
--- a/Mage.Sets/src/mage/cards/i/IncreasingConfusion.java
+++ b/Mage.Sets/src/mage/cards/i/IncreasingConfusion.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward
*/
-public class IncreasingConfusion extends CardImpl {
+public final class IncreasingConfusion extends CardImpl {
public IncreasingConfusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IncreasingDevotion.java b/Mage.Sets/src/mage/cards/i/IncreasingDevotion.java
index ca84f45c3fb..6d3d6475839 100644
--- a/Mage.Sets/src/mage/cards/i/IncreasingDevotion.java
+++ b/Mage.Sets/src/mage/cards/i/IncreasingDevotion.java
@@ -46,7 +46,7 @@ import mage.game.stack.Spell;
*
* @author BetaSteward
*/
-public class IncreasingDevotion extends CardImpl {
+public final class IncreasingDevotion extends CardImpl {
public IncreasingDevotion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IncreasingSavagery.java b/Mage.Sets/src/mage/cards/i/IncreasingSavagery.java
index 04a8ba72e8f..e66365e384a 100644
--- a/Mage.Sets/src/mage/cards/i/IncreasingSavagery.java
+++ b/Mage.Sets/src/mage/cards/i/IncreasingSavagery.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward
*/
-public class IncreasingSavagery extends CardImpl {
+public final class IncreasingSavagery extends CardImpl {
public IncreasingSavagery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IncreasingVengeance.java b/Mage.Sets/src/mage/cards/i/IncreasingVengeance.java
index f5bceb85177..7ece224d5ed 100644
--- a/Mage.Sets/src/mage/cards/i/IncreasingVengeance.java
+++ b/Mage.Sets/src/mage/cards/i/IncreasingVengeance.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author BetaSteward
*/
-public class IncreasingVengeance extends CardImpl {
+public final class IncreasingVengeance extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/i/IncrementalBlight.java b/Mage.Sets/src/mage/cards/i/IncrementalBlight.java
index 506416e7e52..8f999511de1 100644
--- a/Mage.Sets/src/mage/cards/i/IncrementalBlight.java
+++ b/Mage.Sets/src/mage/cards/i/IncrementalBlight.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class IncrementalBlight extends CardImpl {
+public final class IncrementalBlight extends CardImpl {
public IncrementalBlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IncrementalGrowth.java b/Mage.Sets/src/mage/cards/i/IncrementalGrowth.java
index cdea73d6e6f..6da28ee3310 100644
--- a/Mage.Sets/src/mage/cards/i/IncrementalGrowth.java
+++ b/Mage.Sets/src/mage/cards/i/IncrementalGrowth.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class IncrementalGrowth extends CardImpl {
+public final class IncrementalGrowth extends CardImpl {
public IncrementalGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IncubatorDrone.java b/Mage.Sets/src/mage/cards/i/IncubatorDrone.java
index 9819d77c14a..2f4f83c893a 100644
--- a/Mage.Sets/src/mage/cards/i/IncubatorDrone.java
+++ b/Mage.Sets/src/mage/cards/i/IncubatorDrone.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author fireshoes
*/
-public class IncubatorDrone extends CardImpl {
+public final class IncubatorDrone extends CardImpl {
public IncubatorDrone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IncurableOgre.java b/Mage.Sets/src/mage/cards/i/IncurableOgre.java
index 02ed8e68dac..bc90549d1d5 100644
--- a/Mage.Sets/src/mage/cards/i/IncurableOgre.java
+++ b/Mage.Sets/src/mage/cards/i/IncurableOgre.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class IncurableOgre extends CardImpl {
+public final class IncurableOgre extends CardImpl {
public IncurableOgre (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IncursionSpecialist.java b/Mage.Sets/src/mage/cards/i/IncursionSpecialist.java
index 3d1720c92dd..fa06d465bda 100644
--- a/Mage.Sets/src/mage/cards/i/IncursionSpecialist.java
+++ b/Mage.Sets/src/mage/cards/i/IncursionSpecialist.java
@@ -47,7 +47,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author jeffwadsworth
*/
-public class IncursionSpecialist extends CardImpl {
+public final class IncursionSpecialist extends CardImpl {
public IncursionSpecialist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IndebtedSamurai.java b/Mage.Sets/src/mage/cards/i/IndebtedSamurai.java
index 65dfe635e1f..c4e2576f669 100644
--- a/Mage.Sets/src/mage/cards/i/IndebtedSamurai.java
+++ b/Mage.Sets/src/mage/cards/i/IndebtedSamurai.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class IndebtedSamurai extends CardImpl {
+public final class IndebtedSamurai extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a Samurai you control");
static {
diff --git a/Mage.Sets/src/mage/cards/i/IndenturedDjinn.java b/Mage.Sets/src/mage/cards/i/IndenturedDjinn.java
index a2e1a19850c..0c37e220bfb 100644
--- a/Mage.Sets/src/mage/cards/i/IndenturedDjinn.java
+++ b/Mage.Sets/src/mage/cards/i/IndenturedDjinn.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class IndenturedDjinn extends CardImpl {
+public final class IndenturedDjinn extends CardImpl {
public IndenturedDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IndenturedOaf.java b/Mage.Sets/src/mage/cards/i/IndenturedOaf.java
index 5bc219da760..1a939e40c4b 100644
--- a/Mage.Sets/src/mage/cards/i/IndenturedOaf.java
+++ b/Mage.Sets/src/mage/cards/i/IndenturedOaf.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class IndenturedOaf extends CardImpl {
+public final class IndenturedOaf extends CardImpl {
public IndenturedOaf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IndependentTroops.java b/Mage.Sets/src/mage/cards/i/IndependentTroops.java
index 603fafc50e4..a8053675079 100644
--- a/Mage.Sets/src/mage/cards/i/IndependentTroops.java
+++ b/Mage.Sets/src/mage/cards/i/IndependentTroops.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class IndependentTroops extends CardImpl {
+public final class IndependentTroops extends CardImpl {
public IndependentTroops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/Indestructibility.java b/Mage.Sets/src/mage/cards/i/Indestructibility.java
index afcad5bfcd2..a175e96db66 100644
--- a/Mage.Sets/src/mage/cards/i/Indestructibility.java
+++ b/Mage.Sets/src/mage/cards/i/Indestructibility.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class Indestructibility extends CardImpl {
+public final class Indestructibility extends CardImpl {
public Indestructibility(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IndestructibleAura.java b/Mage.Sets/src/mage/cards/i/IndestructibleAura.java
index 54f3da33751..a1165c5ac9a 100644
--- a/Mage.Sets/src/mage/cards/i/IndestructibleAura.java
+++ b/Mage.Sets/src/mage/cards/i/IndestructibleAura.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class IndestructibleAura extends CardImpl {
+public final class IndestructibleAura extends CardImpl {
public IndestructibleAura(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/i/Index.java b/Mage.Sets/src/mage/cards/i/Index.java
index f5e391c9adf..23715ac3f92 100644
--- a/Mage.Sets/src/mage/cards/i/Index.java
+++ b/Mage.Sets/src/mage/cards/i/Index.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
/**
* @author LevelX
*/
-public class Index extends CardImpl {
+public final class Index extends CardImpl {
public Index(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IndigoFaerie.java b/Mage.Sets/src/mage/cards/i/IndigoFaerie.java
index 7c54bd546b2..306cedf8912 100644
--- a/Mage.Sets/src/mage/cards/i/IndigoFaerie.java
+++ b/Mage.Sets/src/mage/cards/i/IndigoFaerie.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class IndigoFaerie extends CardImpl {
+public final class IndigoFaerie extends CardImpl {
public IndigoFaerie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IndomitableAncients.java b/Mage.Sets/src/mage/cards/i/IndomitableAncients.java
index 8ac5abae9c3..ae90d7a2aeb 100644
--- a/Mage.Sets/src/mage/cards/i/IndomitableAncients.java
+++ b/Mage.Sets/src/mage/cards/i/IndomitableAncients.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class IndomitableAncients extends CardImpl {
+public final class IndomitableAncients extends CardImpl {
public IndomitableAncients(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IndomitableArchangel.java b/Mage.Sets/src/mage/cards/i/IndomitableArchangel.java
index 452ecae6f1c..6c6c5609131 100644
--- a/Mage.Sets/src/mage/cards/i/IndomitableArchangel.java
+++ b/Mage.Sets/src/mage/cards/i/IndomitableArchangel.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
/**
* @author nantuko
*/
-public class IndomitableArchangel extends CardImpl {
+public final class IndomitableArchangel extends CardImpl {
private static final String rule = "Metalcraft - Artifacts you control have shroud as long as you control three or more artifacts.";
diff --git a/Mage.Sets/src/mage/cards/i/IndomitableCreativity.java b/Mage.Sets/src/mage/cards/i/IndomitableCreativity.java
index 95528a9e996..d47c7e08a80 100644
--- a/Mage.Sets/src/mage/cards/i/IndomitableCreativity.java
+++ b/Mage.Sets/src/mage/cards/i/IndomitableCreativity.java
@@ -49,7 +49,7 @@ import java.util.*;
*
* @author LevelX2
*/
-public class IndomitableCreativity extends CardImpl {
+public final class IndomitableCreativity extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts and/or creatures");
diff --git a/Mage.Sets/src/mage/cards/i/IndomitableWill.java b/Mage.Sets/src/mage/cards/i/IndomitableWill.java
index aa67acafc3f..50bc75255d3 100644
--- a/Mage.Sets/src/mage/cards/i/IndomitableWill.java
+++ b/Mage.Sets/src/mage/cards/i/IndomitableWill.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class IndomitableWill extends CardImpl {
+public final class IndomitableWill extends CardImpl {
public IndomitableWill (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IndrikStomphowler.java b/Mage.Sets/src/mage/cards/i/IndrikStomphowler.java
index 03fd8af6810..c55bf6386fb 100644
--- a/Mage.Sets/src/mage/cards/i/IndrikStomphowler.java
+++ b/Mage.Sets/src/mage/cards/i/IndrikStomphowler.java
@@ -43,7 +43,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class IndrikStomphowler extends CardImpl {
+public final class IndrikStomphowler extends CardImpl {
public IndrikStomphowler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IndrikUmbra.java b/Mage.Sets/src/mage/cards/i/IndrikUmbra.java
index f54734d2f6f..5e86f9c4d47 100644
--- a/Mage.Sets/src/mage/cards/i/IndrikUmbra.java
+++ b/Mage.Sets/src/mage/cards/i/IndrikUmbra.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class IndrikUmbra extends CardImpl {
+public final class IndrikUmbra extends CardImpl {
public IndrikUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InduceDespair.java b/Mage.Sets/src/mage/cards/i/InduceDespair.java
index cecdd424ded..8bcb0f9f0b0 100644
--- a/Mage.Sets/src/mage/cards/i/InduceDespair.java
+++ b/Mage.Sets/src/mage/cards/i/InduceDespair.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class InduceDespair extends CardImpl {
+public final class InduceDespair extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card from your hand");
diff --git a/Mage.Sets/src/mage/cards/i/InduceParanoia.java b/Mage.Sets/src/mage/cards/i/InduceParanoia.java
index 715a0b6a525..e66604784bc 100644
--- a/Mage.Sets/src/mage/cards/i/InduceParanoia.java
+++ b/Mage.Sets/src/mage/cards/i/InduceParanoia.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class InduceParanoia extends CardImpl {
+public final class InduceParanoia extends CardImpl {
public InduceParanoia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InducedAmnesia.java b/Mage.Sets/src/mage/cards/i/InducedAmnesia.java
index 9e1f51a05d2..88c4ca0bff4 100644
--- a/Mage.Sets/src/mage/cards/i/InducedAmnesia.java
+++ b/Mage.Sets/src/mage/cards/i/InducedAmnesia.java
@@ -49,7 +49,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class InducedAmnesia extends CardImpl {
+public final class InducedAmnesia extends CardImpl {
public InducedAmnesia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IndulgentAristocrat.java b/Mage.Sets/src/mage/cards/i/IndulgentAristocrat.java
index d17d8de0328..4530d80eff8 100644
--- a/Mage.Sets/src/mage/cards/i/IndulgentAristocrat.java
+++ b/Mage.Sets/src/mage/cards/i/IndulgentAristocrat.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class IndulgentAristocrat extends CardImpl {
+public final class IndulgentAristocrat extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Vampire you control");
diff --git a/Mage.Sets/src/mage/cards/i/IndulgentTormentor.java b/Mage.Sets/src/mage/cards/i/IndulgentTormentor.java
index 34bc884333b..bbffa50d374 100644
--- a/Mage.Sets/src/mage/cards/i/IndulgentTormentor.java
+++ b/Mage.Sets/src/mage/cards/i/IndulgentTormentor.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponent;
*
* @author emerald000
*/
-public class IndulgentTormentor extends CardImpl {
+public final class IndulgentTormentor extends CardImpl {
public IndulgentTormentor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InertiaBubble.java b/Mage.Sets/src/mage/cards/i/InertiaBubble.java
index 0cd76bcd386..2456e30a3fb 100644
--- a/Mage.Sets/src/mage/cards/i/InertiaBubble.java
+++ b/Mage.Sets/src/mage/cards/i/InertiaBubble.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LoneFox
*/
-public class InertiaBubble extends CardImpl {
+public final class InertiaBubble extends CardImpl {
public InertiaBubble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InescapableBrute.java b/Mage.Sets/src/mage/cards/i/InescapableBrute.java
index 0b0605e1218..6bef3ab99ea 100644
--- a/Mage.Sets/src/mage/cards/i/InescapableBrute.java
+++ b/Mage.Sets/src/mage/cards/i/InescapableBrute.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class InescapableBrute extends CardImpl {
+public final class InescapableBrute extends CardImpl {
public InescapableBrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InexorableBlob.java b/Mage.Sets/src/mage/cards/i/InexorableBlob.java
index 8ed15040e54..32313aaddb2 100644
--- a/Mage.Sets/src/mage/cards/i/InexorableBlob.java
+++ b/Mage.Sets/src/mage/cards/i/InexorableBlob.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.InexorableBlobOozeToken;
*
* @author fireshoes
*/
-public class InexorableBlob extends CardImpl {
+public final class InexorableBlob extends CardImpl {
public InexorableBlob(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/InexorableTide.java b/Mage.Sets/src/mage/cards/i/InexorableTide.java
index d5f79b357c7..61fafcdad5e 100644
--- a/Mage.Sets/src/mage/cards/i/InexorableTide.java
+++ b/Mage.Sets/src/mage/cards/i/InexorableTide.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Loki, North
*/
-public class InexorableTide extends CardImpl {
+public final class InexorableTide extends CardImpl {
public InexorableTide (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InfantryVeteran.java b/Mage.Sets/src/mage/cards/i/InfantryVeteran.java
index 5885edac14a..7d2dae7a8c4 100644
--- a/Mage.Sets/src/mage/cards/i/InfantryVeteran.java
+++ b/Mage.Sets/src/mage/cards/i/InfantryVeteran.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author BetaSteward_at_googlemail.com
*/
-public class InfantryVeteran extends CardImpl {
+public final class InfantryVeteran extends CardImpl {
public InfantryVeteran(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InfectedVermin.java b/Mage.Sets/src/mage/cards/i/InfectedVermin.java
index b0508395d56..0adbb19bf4f 100644
--- a/Mage.Sets/src/mage/cards/i/InfectedVermin.java
+++ b/Mage.Sets/src/mage/cards/i/InfectedVermin.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class InfectedVermin extends CardImpl {
+public final class InfectedVermin extends CardImpl {
public InfectedVermin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfectiousBloodlust.java b/Mage.Sets/src/mage/cards/i/InfectiousBloodlust.java
index db6573bd214..7a919d0d248 100644
--- a/Mage.Sets/src/mage/cards/i/InfectiousBloodlust.java
+++ b/Mage.Sets/src/mage/cards/i/InfectiousBloodlust.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class InfectiousBloodlust extends CardImpl {
+public final class InfectiousBloodlust extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Infectious Bloodlust");
diff --git a/Mage.Sets/src/mage/cards/i/InfectiousCurse.java b/Mage.Sets/src/mage/cards/i/InfectiousCurse.java
index 05c6e5d74e8..94a737714db 100644
--- a/Mage.Sets/src/mage/cards/i/InfectiousCurse.java
+++ b/Mage.Sets/src/mage/cards/i/InfectiousCurse.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author halljared
*/
-public class InfectiousCurse extends CardImpl {
+public final class InfectiousCurse extends CardImpl {
public InfectiousCurse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"");
diff --git a/Mage.Sets/src/mage/cards/i/InfectiousHorror.java b/Mage.Sets/src/mage/cards/i/InfectiousHorror.java
index bc51df378c1..f5e615b8b60 100644
--- a/Mage.Sets/src/mage/cards/i/InfectiousHorror.java
+++ b/Mage.Sets/src/mage/cards/i/InfectiousHorror.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class InfectiousHorror extends CardImpl {
+public final class InfectiousHorror extends CardImpl {
public InfectiousHorror (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfectiousHost.java b/Mage.Sets/src/mage/cards/i/InfectiousHost.java
index 9c659651cf5..a58328a77ed 100644
--- a/Mage.Sets/src/mage/cards/i/InfectiousHost.java
+++ b/Mage.Sets/src/mage/cards/i/InfectiousHost.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class InfectiousHost extends CardImpl {
+public final class InfectiousHost extends CardImpl {
public InfectiousHost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernalCaretaker.java b/Mage.Sets/src/mage/cards/i/InfernalCaretaker.java
index bad19aaabe2..15e40cda62a 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalCaretaker.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalCaretaker.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterBySubtypeCard;
*
* @author cg5
*/
-public class InfernalCaretaker extends CardImpl {
+public final class InfernalCaretaker extends CardImpl {
private static FilterCard zombieCard = new FilterBySubtypeCard(SubType.ZOMBIE);
diff --git a/Mage.Sets/src/mage/cards/i/InfernalContract.java b/Mage.Sets/src/mage/cards/i/InfernalContract.java
index ffd209d054c..e8ccc1d96dd 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalContract.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalContract.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class InfernalContract extends CardImpl {
+public final class InfernalContract extends CardImpl {
public InfernalContract(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernalDarkness.java b/Mage.Sets/src/mage/cards/i/InfernalDarkness.java
index 52dce517c00..10ddb9f8678 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalDarkness.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalDarkness.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class InfernalDarkness extends CardImpl {
+public final class InfernalDarkness extends CardImpl {
public InfernalDarkness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernalDenizen.java b/Mage.Sets/src/mage/cards/i/InfernalDenizen.java
index 408f0ed728f..1f3c59edaa7 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalDenizen.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalDenizen.java
@@ -65,7 +65,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class InfernalDenizen extends CardImpl {
+public final class InfernalDenizen extends CardImpl {
public InfernalDenizen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{7}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernalGenesis.java b/Mage.Sets/src/mage/cards/i/InfernalGenesis.java
index 2c0e8d26acc..a4e9590323f 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalGenesis.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalGenesis.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class InfernalGenesis extends CardImpl {
+public final class InfernalGenesis extends CardImpl {
public InfernalGenesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernalKirin.java b/Mage.Sets/src/mage/cards/i/InfernalKirin.java
index c51a43e017b..d309bd7119e 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalKirin.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalKirin.java
@@ -52,7 +52,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class InfernalKirin extends CardImpl {
+public final class InfernalKirin extends CardImpl {
public InfernalKirin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernalMedusa.java b/Mage.Sets/src/mage/cards/i/InfernalMedusa.java
index 492d40838b4..869f82e69a6 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalMedusa.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalMedusa.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author L_J
*/
-public class InfernalMedusa extends CardImpl {
+public final class InfernalMedusa extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creature");
diff --git a/Mage.Sets/src/mage/cards/i/InfernalOffering.java b/Mage.Sets/src/mage/cards/i/InfernalOffering.java
index 83077c7d889..87931e97c86 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalOffering.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalOffering.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
*
* @author emerald000
*/
-public class InfernalOffering extends CardImpl {
+public final class InfernalOffering extends CardImpl {
public InfernalOffering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernalPlunge.java b/Mage.Sets/src/mage/cards/i/InfernalPlunge.java
index 039b374c8bc..92a0c9db849 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalPlunge.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalPlunge.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class InfernalPlunge extends CardImpl {
+public final class InfernalPlunge extends CardImpl {
public InfernalPlunge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernalScarring.java b/Mage.Sets/src/mage/cards/i/InfernalScarring.java
index 06010c36c85..bdee62a11a9 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalScarring.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalScarring.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class InfernalScarring extends CardImpl {
+public final class InfernalScarring extends CardImpl {
public InfernalScarring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernalTribute.java b/Mage.Sets/src/mage/cards/i/InfernalTribute.java
index 9c67b41b53c..ce485b45da5 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalTribute.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalTribute.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Styxo
*/
-public class InfernalTribute extends CardImpl {
+public final class InfernalTribute extends CardImpl {
private final static FilterControlledPermanent filter = new FilterControlledPermanent("a nontoken permanent");
diff --git a/Mage.Sets/src/mage/cards/i/InfernalTutor.java b/Mage.Sets/src/mage/cards/i/InfernalTutor.java
index 9ae168485b8..a7c7596a5b3 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalTutor.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalTutor.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class InfernalTutor extends CardImpl {
+public final class InfernalTutor extends CardImpl {
public InfernalTutor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/Inferno.java b/Mage.Sets/src/mage/cards/i/Inferno.java
index 442e7c0173b..31817a59665 100644
--- a/Mage.Sets/src/mage/cards/i/Inferno.java
+++ b/Mage.Sets/src/mage/cards/i/Inferno.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class Inferno extends CardImpl {
+public final class Inferno extends CardImpl {
public Inferno(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernoElemental.java b/Mage.Sets/src/mage/cards/i/InfernoElemental.java
index 3df8502ea81..d62cd2953eb 100644
--- a/Mage.Sets/src/mage/cards/i/InfernoElemental.java
+++ b/Mage.Sets/src/mage/cards/i/InfernoElemental.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class InfernoElemental extends CardImpl {
+public final class InfernoElemental extends CardImpl {
public InfernoElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernoFist.java b/Mage.Sets/src/mage/cards/i/InfernoFist.java
index 355260e01b8..53c1c4adf30 100644
--- a/Mage.Sets/src/mage/cards/i/InfernoFist.java
+++ b/Mage.Sets/src/mage/cards/i/InfernoFist.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Quercitron
*/
-public class InfernoFist extends CardImpl {
+public final class InfernoFist extends CardImpl {
public InfernoFist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernoJet.java b/Mage.Sets/src/mage/cards/i/InfernoJet.java
index eddffdfa858..6c353562cca 100644
--- a/Mage.Sets/src/mage/cards/i/InfernoJet.java
+++ b/Mage.Sets/src/mage/cards/i/InfernoJet.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author fireshoes
*/
-public class InfernoJet extends CardImpl {
+public final class InfernoJet extends CardImpl {
public InfernoJet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernoTitan.java b/Mage.Sets/src/mage/cards/i/InfernoTitan.java
index 797281846b3..b0d2ccaa3ea 100644
--- a/Mage.Sets/src/mage/cards/i/InfernoTitan.java
+++ b/Mage.Sets/src/mage/cards/i/InfernoTitan.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author BetaSteward_at_googlemail.com
*/
-public class InfernoTitan extends CardImpl {
+public final class InfernoTitan extends CardImpl {
public InfernoTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InfernoTrap.java b/Mage.Sets/src/mage/cards/i/InfernoTrap.java
index cb03166b81c..425da822c15 100644
--- a/Mage.Sets/src/mage/cards/i/InfernoTrap.java
+++ b/Mage.Sets/src/mage/cards/i/InfernoTrap.java
@@ -49,7 +49,7 @@ import java.util.*;
/**
* @author jeffwadsworth
*/
-public class InfernoTrap extends CardImpl {
+public final class InfernoTrap extends CardImpl {
public InfernoTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/Infest.java b/Mage.Sets/src/mage/cards/i/Infest.java
index 58e44a67acb..06597e2d150 100644
--- a/Mage.Sets/src/mage/cards/i/Infest.java
+++ b/Mage.Sets/src/mage/cards/i/Infest.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Loki
*/
-public class Infest extends CardImpl {
+public final class Infest extends CardImpl {
public Infest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfestedRoothold.java b/Mage.Sets/src/mage/cards/i/InfestedRoothold.java
index 3370e9bffcb..14f9f4cbbcf 100644
--- a/Mage.Sets/src/mage/cards/i/InfestedRoothold.java
+++ b/Mage.Sets/src/mage/cards/i/InfestedRoothold.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.InsectToken;
*
* @author TheElk801
*/
-public class InfestedRoothold extends CardImpl {
+public final class InfestedRoothold extends CardImpl {
private final static FilterSpell filter = new FilterSpell("an artifact spell");
diff --git a/Mage.Sets/src/mage/cards/i/Infiltrate.java b/Mage.Sets/src/mage/cards/i/Infiltrate.java
index d565f062c70..9630fcdffd1 100644
--- a/Mage.Sets/src/mage/cards/i/Infiltrate.java
+++ b/Mage.Sets/src/mage/cards/i/Infiltrate.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author AlumiuN
*/
-public class Infiltrate extends CardImpl {
+public final class Infiltrate extends CardImpl {
public Infiltrate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InfiltrationLens.java b/Mage.Sets/src/mage/cards/i/InfiltrationLens.java
index 366518bd51f..501b01780a0 100644
--- a/Mage.Sets/src/mage/cards/i/InfiltrationLens.java
+++ b/Mage.Sets/src/mage/cards/i/InfiltrationLens.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class InfiltrationLens extends CardImpl {
+public final class InfiltrationLens extends CardImpl {
public InfiltrationLens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/i/InfiltratorIlKor.java b/Mage.Sets/src/mage/cards/i/InfiltratorIlKor.java
index 89a92ab2efd..19647bc07fa 100644
--- a/Mage.Sets/src/mage/cards/i/InfiltratorIlKor.java
+++ b/Mage.Sets/src/mage/cards/i/InfiltratorIlKor.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class InfiltratorIlKor extends CardImpl {
+public final class InfiltratorIlKor extends CardImpl {
public InfiltratorIlKor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InfiltratorsMagemark.java b/Mage.Sets/src/mage/cards/i/InfiltratorsMagemark.java
index 5719425a292..2c6e858f050 100644
--- a/Mage.Sets/src/mage/cards/i/InfiltratorsMagemark.java
+++ b/Mage.Sets/src/mage/cards/i/InfiltratorsMagemark.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class InfiltratorsMagemark extends CardImpl {
+public final class InfiltratorsMagemark extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control that are enchanted");
static {
diff --git a/Mage.Sets/src/mage/cards/i/InfiniteHourglass.java b/Mage.Sets/src/mage/cards/i/InfiniteHourglass.java
index 458f1f1ec66..f170b1419b8 100644
--- a/Mage.Sets/src/mage/cards/i/InfiniteHourglass.java
+++ b/Mage.Sets/src/mage/cards/i/InfiniteHourglass.java
@@ -52,7 +52,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class InfiniteHourglass extends CardImpl {
+public final class InfiniteHourglass extends CardImpl {
public InfiniteHourglass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/i/InfiniteObliteration.java b/Mage.Sets/src/mage/cards/i/InfiniteObliteration.java
index c226e35f096..f030f619f50 100644
--- a/Mage.Sets/src/mage/cards/i/InfiniteObliteration.java
+++ b/Mage.Sets/src/mage/cards/i/InfiniteObliteration.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class InfiniteObliteration extends CardImpl {
+public final class InfiniteObliteration extends CardImpl {
public InfiniteObliteration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InfiniteReflection.java b/Mage.Sets/src/mage/cards/i/InfiniteReflection.java
index 74b1b8894ab..3360f30ae7d 100644
--- a/Mage.Sets/src/mage/cards/i/InfiniteReflection.java
+++ b/Mage.Sets/src/mage/cards/i/InfiniteReflection.java
@@ -59,7 +59,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author noxx
*/
-public class InfiniteReflection extends CardImpl {
+public final class InfiniteReflection extends CardImpl {
public InfiniteReflection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/Inflame.java b/Mage.Sets/src/mage/cards/i/Inflame.java
index c8801c59646..e33b519dae3 100644
--- a/Mage.Sets/src/mage/cards/i/Inflame.java
+++ b/Mage.Sets/src/mage/cards/i/Inflame.java
@@ -39,7 +39,7 @@ import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate;
*
* @author Quercitron
*/
-public class Inflame extends CardImpl {
+public final class Inflame extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creature dealt damage this turn");
diff --git a/Mage.Sets/src/mage/cards/i/InformationDealer.java b/Mage.Sets/src/mage/cards/i/InformationDealer.java
index c1871efa6d7..5502b526bad 100644
--- a/Mage.Sets/src/mage/cards/i/InformationDealer.java
+++ b/Mage.Sets/src/mage/cards/i/InformationDealer.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class InformationDealer extends CardImpl {
+public final class InformationDealer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wizards on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/i/Infuse.java b/Mage.Sets/src/mage/cards/i/Infuse.java
index 0f34527ccac..dfeb6b0c6a1 100644
--- a/Mage.Sets/src/mage/cards/i/Infuse.java
+++ b/Mage.Sets/src/mage/cards/i/Infuse.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class Infuse extends CardImpl {
+public final class Infuse extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/i/InfuseWithTheElements.java b/Mage.Sets/src/mage/cards/i/InfuseWithTheElements.java
index baf48b212a9..a7995dd2a02 100644
--- a/Mage.Sets/src/mage/cards/i/InfuseWithTheElements.java
+++ b/Mage.Sets/src/mage/cards/i/InfuseWithTheElements.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class InfuseWithTheElements extends CardImpl {
+public final class InfuseWithTheElements extends CardImpl {
public InfuseWithTheElements(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/InfusedArrows.java b/Mage.Sets/src/mage/cards/i/InfusedArrows.java
index cbf554f9502..7c2e5593825 100644
--- a/Mage.Sets/src/mage/cards/i/InfusedArrows.java
+++ b/Mage.Sets/src/mage/cards/i/InfusedArrows.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class InfusedArrows extends CardImpl {
+public final class InfusedArrows extends CardImpl {
public InfusedArrows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/i/IngeniousSkaab.java b/Mage.Sets/src/mage/cards/i/IngeniousSkaab.java
index 49ca95fc19e..27e95e359a3 100644
--- a/Mage.Sets/src/mage/cards/i/IngeniousSkaab.java
+++ b/Mage.Sets/src/mage/cards/i/IngeniousSkaab.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class IngeniousSkaab extends CardImpl {
+public final class IngeniousSkaab extends CardImpl {
public IngeniousSkaab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IngeniousThief.java b/Mage.Sets/src/mage/cards/i/IngeniousThief.java
index 9a7c46f4caf..333896f1345 100644
--- a/Mage.Sets/src/mage/cards/i/IngeniousThief.java
+++ b/Mage.Sets/src/mage/cards/i/IngeniousThief.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class IngeniousThief extends CardImpl {
+public final class IngeniousThief extends CardImpl {
public IngeniousThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IngotChewer.java b/Mage.Sets/src/mage/cards/i/IngotChewer.java
index cb744eb20b4..c21b6ebf89b 100644
--- a/Mage.Sets/src/mage/cards/i/IngotChewer.java
+++ b/Mage.Sets/src/mage/cards/i/IngotChewer.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class IngotChewer extends CardImpl {
+public final class IngotChewer extends CardImpl {
public IngotChewer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/Inheritance.java b/Mage.Sets/src/mage/cards/i/Inheritance.java
index 88cbcaa049a..8230e7ef81d 100644
--- a/Mage.Sets/src/mage/cards/i/Inheritance.java
+++ b/Mage.Sets/src/mage/cards/i/Inheritance.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class Inheritance extends CardImpl {
+public final class Inheritance extends CardImpl {
public Inheritance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/i/Inhumaniac.java b/Mage.Sets/src/mage/cards/i/Inhumaniac.java
index 94b94efb5f2..b5157aa15b1 100644
--- a/Mage.Sets/src/mage/cards/i/Inhumaniac.java
+++ b/Mage.Sets/src/mage/cards/i/Inhumaniac.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class Inhumaniac extends CardImpl {
+public final class Inhumaniac extends CardImpl {
public Inhumaniac(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java b/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java
index 642e42a29b7..24089edc1b9 100644
--- a/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java
+++ b/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX
*/
-public class InitiateOfBlood extends CardImpl {
+public final class InitiateOfBlood extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn");
diff --git a/Mage.Sets/src/mage/cards/i/InitiatesCompanion.java b/Mage.Sets/src/mage/cards/i/InitiatesCompanion.java
index a15191ce9db..5d75727661a 100644
--- a/Mage.Sets/src/mage/cards/i/InitiatesCompanion.java
+++ b/Mage.Sets/src/mage/cards/i/InitiatesCompanion.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class InitiatesCompanion extends CardImpl {
+public final class InitiatesCompanion extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or land");
diff --git a/Mage.Sets/src/mage/cards/i/InitiatesOfTheEbonHand.java b/Mage.Sets/src/mage/cards/i/InitiatesOfTheEbonHand.java
index aed220545da..980f4e513be 100644
--- a/Mage.Sets/src/mage/cards/i/InitiatesOfTheEbonHand.java
+++ b/Mage.Sets/src/mage/cards/i/InitiatesOfTheEbonHand.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author MarcoMarin
*/
-public class InitiatesOfTheEbonHand extends CardImpl {
+public final class InitiatesOfTheEbonHand extends CardImpl {
public InitiatesOfTheEbonHand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InkDissolver.java b/Mage.Sets/src/mage/cards/i/InkDissolver.java
index 72d735fe67d..e4f30075851 100644
--- a/Mage.Sets/src/mage/cards/i/InkDissolver.java
+++ b/Mage.Sets/src/mage/cards/i/InkDissolver.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class InkDissolver extends CardImpl {
+public final class InkDissolver extends CardImpl {
public InkDissolver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InkEyesServantOfOni.java b/Mage.Sets/src/mage/cards/i/InkEyesServantOfOni.java
index 59593ef498a..0b5a355271e 100644
--- a/Mage.Sets/src/mage/cards/i/InkEyesServantOfOni.java
+++ b/Mage.Sets/src/mage/cards/i/InkEyesServantOfOni.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class InkEyesServantOfOni extends CardImpl {
+public final class InkEyesServantOfOni extends CardImpl {
public InkEyesServantOfOni(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InkTreaderNephilim.java b/Mage.Sets/src/mage/cards/i/InkTreaderNephilim.java
index 69b10175a93..534049ad031 100644
--- a/Mage.Sets/src/mage/cards/i/InkTreaderNephilim.java
+++ b/Mage.Sets/src/mage/cards/i/InkTreaderNephilim.java
@@ -52,7 +52,7 @@ import mage.util.TargetAddress;
/**
* @author duncant
*/
-public class InkTreaderNephilim extends CardImpl {
+public final class InkTreaderNephilim extends CardImpl {
public InkTreaderNephilim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InkfathomDivers.java b/Mage.Sets/src/mage/cards/i/InkfathomDivers.java
index 3d1868cfb6b..d295b4e4225 100644
--- a/Mage.Sets/src/mage/cards/i/InkfathomDivers.java
+++ b/Mage.Sets/src/mage/cards/i/InkfathomDivers.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX
*/
-public class InkfathomDivers extends CardImpl {
+public final class InkfathomDivers extends CardImpl {
public InkfathomDivers (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InkfathomInfiltrator.java b/Mage.Sets/src/mage/cards/i/InkfathomInfiltrator.java
index 3d98d27c2fb..1863c9ba891 100644
--- a/Mage.Sets/src/mage/cards/i/InkfathomInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/i/InkfathomInfiltrator.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class InkfathomInfiltrator extends CardImpl {
+public final class InkfathomInfiltrator extends CardImpl {
public InkfathomInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U/B}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/i/InkfathomWitch.java b/Mage.Sets/src/mage/cards/i/InkfathomWitch.java
index cb124046120..8ea2f396d39 100644
--- a/Mage.Sets/src/mage/cards/i/InkfathomWitch.java
+++ b/Mage.Sets/src/mage/cards/i/InkfathomWitch.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.UnblockedPredicate;
*
* @author LevelX2
*/
-public class InkfathomWitch extends CardImpl {
+public final class InkfathomWitch extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each unblocked creature");
static {
diff --git a/Mage.Sets/src/mage/cards/i/InkmothNexus.java b/Mage.Sets/src/mage/cards/i/InkmothNexus.java
index 88293ee6a9a..ac96da9babd 100644
--- a/Mage.Sets/src/mage/cards/i/InkmothNexus.java
+++ b/Mage.Sets/src/mage/cards/i/InkmothNexus.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.Token;
*
* @author Loki
*/
-public class InkmothNexus extends CardImpl {
+public final class InkmothNexus extends CardImpl {
public InkmothNexus (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/i/InkwellLeviathan.java b/Mage.Sets/src/mage/cards/i/InkwellLeviathan.java
index 38d79219deb..05197d250af 100644
--- a/Mage.Sets/src/mage/cards/i/InkwellLeviathan.java
+++ b/Mage.Sets/src/mage/cards/i/InkwellLeviathan.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class InkwellLeviathan extends CardImpl {
+public final class InkwellLeviathan extends CardImpl {
public InkwellLeviathan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InnerCalmOuterStrength.java b/Mage.Sets/src/mage/cards/i/InnerCalmOuterStrength.java
index b2c649e1a93..96f22aeadc9 100644
--- a/Mage.Sets/src/mage/cards/i/InnerCalmOuterStrength.java
+++ b/Mage.Sets/src/mage/cards/i/InnerCalmOuterStrength.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class InnerCalmOuterStrength extends CardImpl {
+public final class InnerCalmOuterStrength extends CardImpl {
public InnerCalmOuterStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/InnerChamberGuard.java b/Mage.Sets/src/mage/cards/i/InnerChamberGuard.java
index 84c80212332..613531d98dd 100644
--- a/Mage.Sets/src/mage/cards/i/InnerChamberGuard.java
+++ b/Mage.Sets/src/mage/cards/i/InnerChamberGuard.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class InnerChamberGuard extends CardImpl {
+public final class InnerChamberGuard extends CardImpl {
public InnerChamberGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InnerDemon.java b/Mage.Sets/src/mage/cards/i/InnerDemon.java
new file mode 100644
index 00000000000..db1485690e4
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/i/InnerDemon.java
@@ -0,0 +1,102 @@
+/*
+ * 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.constants.SubType;
+import mage.target.common.TargetCreaturePermanent;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.continuous.AddCardSubtypeAttachedEffect;
+import mage.abilities.effects.common.continuous.BoostAllEffect;
+import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
+import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
+import mage.constants.Outcome;
+import mage.target.TargetPermanent;
+import mage.abilities.keyword.EnchantAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.AttachmentType;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class InnerDemon extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("all non-Demon creatures");
+
+ static {
+ filter.add(Predicates.not(new SubtypePredicate(SubType.DEMON)));
+ }
+
+ public InnerDemon(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
+
+ this.subtype.add(SubType.AURA);
+
+ // Enchant creature
+ TargetPermanent auraTarget = new TargetCreaturePermanent();
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
+ Ability ability = new EnchantAbility(auraTarget.getTargetName());
+ this.addAbility(ability);
+
+ // Enchanted creature gets +2/+2, has flying, and is a Demon in addition to its other types.
+ ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield));
+ Effect effect = new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA);
+ effect.setText(", has flying");
+ ability.addEffect(effect);
+ effect = new AddCardSubtypeAttachedEffect(SubType.DEMON, Duration.WhileOnBattlefield, AttachmentType.AURA);
+ effect.setText(", and is an Demon in addition to its other types");
+ ability.addEffect(effect);
+ this.addAbility(ability);
+
+ // When Inner Demon enters the battlefield, all non-Demon creatures get -2/-2 until end of turn.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new BoostAllEffect(-2, -2, Duration.EndOfTurn, filter, false)));
+ }
+
+ public InnerDemon(final InnerDemon card) {
+ super(card);
+ }
+
+ @Override
+ public InnerDemon copy() {
+ return new InnerDemon(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/i/InnerFire.java b/Mage.Sets/src/mage/cards/i/InnerFire.java
index cd2140e7133..404860739c9 100644
--- a/Mage.Sets/src/mage/cards/i/InnerFire.java
+++ b/Mage.Sets/src/mage/cards/i/InnerFire.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class InnerFire extends CardImpl {
+public final class InnerFire extends CardImpl {
public InnerFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InnerFlameAcolyte.java b/Mage.Sets/src/mage/cards/i/InnerFlameAcolyte.java
index d5319483b06..5768daf6ea8 100644
--- a/Mage.Sets/src/mage/cards/i/InnerFlameAcolyte.java
+++ b/Mage.Sets/src/mage/cards/i/InnerFlameAcolyte.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class InnerFlameAcolyte extends CardImpl {
+public final class InnerFlameAcolyte extends CardImpl {
public InnerFlameAcolyte(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InnerFlameIgniter.java b/Mage.Sets/src/mage/cards/i/InnerFlameIgniter.java
index a0a5f0569ce..2c3e36a6728 100644
--- a/Mage.Sets/src/mage/cards/i/InnerFlameIgniter.java
+++ b/Mage.Sets/src/mage/cards/i/InnerFlameIgniter.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class InnerFlameIgniter extends CardImpl {
+public final class InnerFlameIgniter extends CardImpl {
public InnerFlameIgniter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InnerSanctum.java b/Mage.Sets/src/mage/cards/i/InnerSanctum.java
index 4f9c90ffa69..4dc2f5604df 100644
--- a/Mage.Sets/src/mage/cards/i/InnerSanctum.java
+++ b/Mage.Sets/src/mage/cards/i/InnerSanctum.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreatureInPlay;
*
* @author TheElk801
*/
-public class InnerSanctum extends CardImpl {
+public final class InnerSanctum extends CardImpl {
public InnerSanctum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InnerStruggle.java b/Mage.Sets/src/mage/cards/i/InnerStruggle.java
index f15a81468c1..9d5a71a6951 100644
--- a/Mage.Sets/src/mage/cards/i/InnerStruggle.java
+++ b/Mage.Sets/src/mage/cards/i/InnerStruggle.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class InnerStruggle extends CardImpl {
+public final class InnerStruggle extends CardImpl {
public InnerStruggle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InnocenceKami.java b/Mage.Sets/src/mage/cards/i/InnocenceKami.java
index c3b2897b221..e09089aa2b1 100644
--- a/Mage.Sets/src/mage/cards/i/InnocenceKami.java
+++ b/Mage.Sets/src/mage/cards/i/InnocenceKami.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class InnocenceKami extends CardImpl {
+public final class InnocenceKami extends CardImpl {
public InnocenceKami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InnocentBlood.java b/Mage.Sets/src/mage/cards/i/InnocentBlood.java
index dde2fb9c558..73f1bfc8978 100644
--- a/Mage.Sets/src/mage/cards/i/InnocentBlood.java
+++ b/Mage.Sets/src/mage/cards/i/InnocentBlood.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author jonubuu
*/
-public class InnocentBlood extends CardImpl {
+public final class InnocentBlood extends CardImpl {
public InnocentBlood(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/i/Inquisition.java b/Mage.Sets/src/mage/cards/i/Inquisition.java
index 8ce6fd71a33..e3341425c5c 100644
--- a/Mage.Sets/src/mage/cards/i/Inquisition.java
+++ b/Mage.Sets/src/mage/cards/i/Inquisition.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth & L_J
*/
-public class Inquisition extends CardImpl {
+public final class Inquisition extends CardImpl {
public Inquisition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InquisitionOfKozilek.java b/Mage.Sets/src/mage/cards/i/InquisitionOfKozilek.java
index e5ca8bda201..ba1a6e10306 100644
--- a/Mage.Sets/src/mage/cards/i/InquisitionOfKozilek.java
+++ b/Mage.Sets/src/mage/cards/i/InquisitionOfKozilek.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class InquisitionOfKozilek extends CardImpl {
+public final class InquisitionOfKozilek extends CardImpl {
private static final FilterCard filter = new FilterCard("nonland card with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/i/InquisitorExarch.java b/Mage.Sets/src/mage/cards/i/InquisitorExarch.java
index c50e16b3912..1aecfa77cb6 100644
--- a/Mage.Sets/src/mage/cards/i/InquisitorExarch.java
+++ b/Mage.Sets/src/mage/cards/i/InquisitorExarch.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class InquisitorExarch extends CardImpl {
+public final class InquisitorExarch extends CardImpl {
public InquisitorExarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InquisitorsFlail.java b/Mage.Sets/src/mage/cards/i/InquisitorsFlail.java
index 9b9d3189d19..a1baa86cb8d 100644
--- a/Mage.Sets/src/mage/cards/i/InquisitorsFlail.java
+++ b/Mage.Sets/src/mage/cards/i/InquisitorsFlail.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
/**
* @author nantuko
*/
-public class InquisitorsFlail extends CardImpl {
+public final class InquisitorsFlail extends CardImpl {
public InquisitorsFlail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/i/InquisitorsOx.java b/Mage.Sets/src/mage/cards/i/InquisitorsOx.java
index 558b49ec6dd..f750b9233ab 100644
--- a/Mage.Sets/src/mage/cards/i/InquisitorsOx.java
+++ b/Mage.Sets/src/mage/cards/i/InquisitorsOx.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class InquisitorsOx extends CardImpl {
+public final class InquisitorsOx extends CardImpl {
public InquisitorsOx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InquisitorsSnare.java b/Mage.Sets/src/mage/cards/i/InquisitorsSnare.java
index 61475dc57d7..ef44308eb96 100644
--- a/Mage.Sets/src/mage/cards/i/InquisitorsSnare.java
+++ b/Mage.Sets/src/mage/cards/i/InquisitorsSnare.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
* @author jeffwadsworth
*
*/
-public class InquisitorsSnare extends CardImpl {
+public final class InquisitorsSnare extends CardImpl {
public InquisitorsSnare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InsatiableGorgers.java b/Mage.Sets/src/mage/cards/i/InsatiableGorgers.java
index c2894bab951..10bf5e37beb 100644
--- a/Mage.Sets/src/mage/cards/i/InsatiableGorgers.java
+++ b/Mage.Sets/src/mage/cards/i/InsatiableGorgers.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class InsatiableGorgers extends CardImpl {
+public final class InsatiableGorgers extends CardImpl {
public InsatiableGorgers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InsatiableHarpy.java b/Mage.Sets/src/mage/cards/i/InsatiableHarpy.java
index ff75b8f2d8b..39a73e37a2d 100644
--- a/Mage.Sets/src/mage/cards/i/InsatiableHarpy.java
+++ b/Mage.Sets/src/mage/cards/i/InsatiableHarpy.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class InsatiableHarpy extends CardImpl {
+public final class InsatiableHarpy extends CardImpl {
public InsatiableHarpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InsatiableRakghoul.java b/Mage.Sets/src/mage/cards/i/InsatiableRakghoul.java
index 68347665e6e..1247b7ac3f9 100644
--- a/Mage.Sets/src/mage/cards/i/InsatiableRakghoul.java
+++ b/Mage.Sets/src/mage/cards/i/InsatiableRakghoul.java
@@ -50,7 +50,7 @@ import mage.watchers.Watcher;
*
* @author Styxo
*/
-public class InsatiableRakghoul extends CardImpl {
+public final class InsatiableRakghoul extends CardImpl {
public InsatiableRakghoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InsatiableSouleater.java b/Mage.Sets/src/mage/cards/i/InsatiableSouleater.java
index 3993327b86f..0e87dadd9bc 100644
--- a/Mage.Sets/src/mage/cards/i/InsatiableSouleater.java
+++ b/Mage.Sets/src/mage/cards/i/InsatiableSouleater.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class InsatiableSouleater extends CardImpl {
+public final class InsatiableSouleater extends CardImpl {
public InsatiableSouleater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/i/InsectileAberration.java b/Mage.Sets/src/mage/cards/i/InsectileAberration.java
index a9491c25706..0f9adb48e8b 100644
--- a/Mage.Sets/src/mage/cards/i/InsectileAberration.java
+++ b/Mage.Sets/src/mage/cards/i/InsectileAberration.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Alvin
*/
-public class InsectileAberration extends CardImpl {
+public final class InsectileAberration extends CardImpl {
public InsectileAberration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/i/InsideOut.java b/Mage.Sets/src/mage/cards/i/InsideOut.java
index 7f77df32c4d..6625e6936fb 100644
--- a/Mage.Sets/src/mage/cards/i/InsideOut.java
+++ b/Mage.Sets/src/mage/cards/i/InsideOut.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*/
-public class InsideOut extends CardImpl {
+public final class InsideOut extends CardImpl {
public InsideOut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U/R}");
diff --git a/Mage.Sets/src/mage/cards/i/InsidiousBookworms.java b/Mage.Sets/src/mage/cards/i/InsidiousBookworms.java
index 2773da47417..705d3effdac 100644
--- a/Mage.Sets/src/mage/cards/i/InsidiousBookworms.java
+++ b/Mage.Sets/src/mage/cards/i/InsidiousBookworms.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class InsidiousBookworms extends CardImpl {
+public final class InsidiousBookworms extends CardImpl {
public InsidiousBookworms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InsidiousDreams.java b/Mage.Sets/src/mage/cards/i/InsidiousDreams.java
index dba486743a9..8653050a1a8 100644
--- a/Mage.Sets/src/mage/cards/i/InsidiousDreams.java
+++ b/Mage.Sets/src/mage/cards/i/InsidiousDreams.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author spjspj
*/
-public class InsidiousDreams extends CardImpl {
+public final class InsidiousDreams extends CardImpl {
public InsidiousDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InsidiousMist.java b/Mage.Sets/src/mage/cards/i/InsidiousMist.java
index f9d54d26ead..9e4ac711d76 100644
--- a/Mage.Sets/src/mage/cards/i/InsidiousMist.java
+++ b/Mage.Sets/src/mage/cards/i/InsidiousMist.java
@@ -52,7 +52,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class InsidiousMist extends CardImpl {
+public final class InsidiousMist extends CardImpl {
public InsidiousMist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/i/InsidiousWill.java b/Mage.Sets/src/mage/cards/i/InsidiousWill.java
index 9a01996a743..a9995c22d61 100644
--- a/Mage.Sets/src/mage/cards/i/InsidiousWill.java
+++ b/Mage.Sets/src/mage/cards/i/InsidiousWill.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class InsidiousWill extends CardImpl {
+public final class InsidiousWill extends CardImpl {
public InsidiousWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/Insight.java b/Mage.Sets/src/mage/cards/i/Insight.java
index ce8e8e33aa0..55ded67d119 100644
--- a/Mage.Sets/src/mage/cards/i/Insight.java
+++ b/Mage.Sets/src/mage/cards/i/Insight.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Quercitron
*/
-public class Insight extends CardImpl {
+public final class Insight extends CardImpl {
private static final FilterSpell filter = new FilterSpell("green spell");
diff --git a/Mage.Sets/src/mage/cards/i/Insist.java b/Mage.Sets/src/mage/cards/i/Insist.java
index b5d35aa7be7..574c5d810c0 100644
--- a/Mage.Sets/src/mage/cards/i/Insist.java
+++ b/Mage.Sets/src/mage/cards/i/Insist.java
@@ -47,7 +47,7 @@ import mage.watchers.Watcher;
/**
* @author fireshoes
*/
-public class Insist extends CardImpl {
+public final class Insist extends CardImpl {
public Insist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/i/Insolence.java b/Mage.Sets/src/mage/cards/i/Insolence.java
index 00a662601d1..62c73e1d02d 100644
--- a/Mage.Sets/src/mage/cards/i/Insolence.java
+++ b/Mage.Sets/src/mage/cards/i/Insolence.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Insolence extends CardImpl {
+public final class Insolence extends CardImpl {
public Insolence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InsolentNeonate.java b/Mage.Sets/src/mage/cards/i/InsolentNeonate.java
index b7c186a823e..eeb8db5e1c6 100644
--- a/Mage.Sets/src/mage/cards/i/InsolentNeonate.java
+++ b/Mage.Sets/src/mage/cards/i/InsolentNeonate.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class InsolentNeonate extends CardImpl {
+public final class InsolentNeonate extends CardImpl {
public InsolentNeonate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/i/Inspiration.java b/Mage.Sets/src/mage/cards/i/Inspiration.java
index d5316d6aaf8..16f447058d2 100644
--- a/Mage.Sets/src/mage/cards/i/Inspiration.java
+++ b/Mage.Sets/src/mage/cards/i/Inspiration.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class Inspiration extends CardImpl {
+public final class Inspiration extends CardImpl {
public Inspiration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InspiredCharge.java b/Mage.Sets/src/mage/cards/i/InspiredCharge.java
index 42baf86db2c..c6d9cbd2df3 100644
--- a/Mage.Sets/src/mage/cards/i/InspiredCharge.java
+++ b/Mage.Sets/src/mage/cards/i/InspiredCharge.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author BetaSteward_at_googlemail.com
*/
-public class InspiredCharge extends CardImpl {
+public final class InspiredCharge extends CardImpl {
public InspiredCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InspiredSprite.java b/Mage.Sets/src/mage/cards/i/InspiredSprite.java
index cf53ed6fabb..0405fb5913c 100644
--- a/Mage.Sets/src/mage/cards/i/InspiredSprite.java
+++ b/Mage.Sets/src/mage/cards/i/InspiredSprite.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class InspiredSprite extends CardImpl {
+public final class InspiredSprite extends CardImpl {
private static final FilterSpell filter = new FilterSpell("Wizard");
diff --git a/Mage.Sets/src/mage/cards/i/InspiringCall.java b/Mage.Sets/src/mage/cards/i/InspiringCall.java
index e3a5cceeef0..65d30e6207f 100644
--- a/Mage.Sets/src/mage/cards/i/InspiringCall.java
+++ b/Mage.Sets/src/mage/cards/i/InspiringCall.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author LevelX2
*/
-public class InspiringCall extends CardImpl {
+public final class InspiringCall extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature you control with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/i/InspiringCaptain.java b/Mage.Sets/src/mage/cards/i/InspiringCaptain.java
index dcd3beda094..5ed1bbd80ae 100644
--- a/Mage.Sets/src/mage/cards/i/InspiringCaptain.java
+++ b/Mage.Sets/src/mage/cards/i/InspiringCaptain.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author fireshoes
*/
-public class InspiringCaptain extends CardImpl {
+public final class InspiringCaptain extends CardImpl {
public InspiringCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InspiringCleric.java b/Mage.Sets/src/mage/cards/i/InspiringCleric.java
index 765707130dd..f33e7266fbf 100644
--- a/Mage.Sets/src/mage/cards/i/InspiringCleric.java
+++ b/Mage.Sets/src/mage/cards/i/InspiringCleric.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class InspiringCleric extends CardImpl {
+public final class InspiringCleric extends CardImpl {
public InspiringCleric(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InspiringRoar.java b/Mage.Sets/src/mage/cards/i/InspiringRoar.java
index 0e6dbb11d5a..3957df3616e 100644
--- a/Mage.Sets/src/mage/cards/i/InspiringRoar.java
+++ b/Mage.Sets/src/mage/cards/i/InspiringRoar.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class InspiringRoar extends CardImpl {
+public final class InspiringRoar extends CardImpl {
public InspiringRoar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InspiringStatuary.java b/Mage.Sets/src/mage/cards/i/InspiringStatuary.java
index 8f6dc21dfef..435335baa12 100644
--- a/Mage.Sets/src/mage/cards/i/InspiringStatuary.java
+++ b/Mage.Sets/src/mage/cards/i/InspiringStatuary.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Styxo
*/
-public class InspiringStatuary extends CardImpl {
+public final class InspiringStatuary extends CardImpl {
private static final FilterSpell filter = new FilterSpell("non-artifact spells you cast");
diff --git a/Mage.Sets/src/mage/cards/i/InspiringVantage.java b/Mage.Sets/src/mage/cards/i/InspiringVantage.java
index 7fd41983a3a..f6c293f3fa2 100644
--- a/Mage.Sets/src/mage/cards/i/InspiringVantage.java
+++ b/Mage.Sets/src/mage/cards/i/InspiringVantage.java
@@ -45,7 +45,7 @@ import mage.filter.StaticFilters;
/**
* @author fireshoes
*/
-public class InspiringVantage extends CardImpl {
+public final class InspiringVantage extends CardImpl {
public InspiringVantage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/i/Inspirit.java b/Mage.Sets/src/mage/cards/i/Inspirit.java
index 87a7ff8e98d..007ed541c8d 100644
--- a/Mage.Sets/src/mage/cards/i/Inspirit.java
+++ b/Mage.Sets/src/mage/cards/i/Inspirit.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Inspirit extends CardImpl {
+public final class Inspirit extends CardImpl {
public Inspirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/Instigator.java b/Mage.Sets/src/mage/cards/i/Instigator.java
index d6bc254d2a7..81ea975c83c 100644
--- a/Mage.Sets/src/mage/cards/i/Instigator.java
+++ b/Mage.Sets/src/mage/cards/i/Instigator.java
@@ -55,7 +55,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author fireshoes
*/
-public class Instigator extends CardImpl {
+public final class Instigator extends CardImpl {
public Instigator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InstigatorGang.java b/Mage.Sets/src/mage/cards/i/InstigatorGang.java
index 10530b4a25f..404581e9625 100644
--- a/Mage.Sets/src/mage/cards/i/InstigatorGang.java
+++ b/Mage.Sets/src/mage/cards/i/InstigatorGang.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterAttackingCreature;
/**
* @author nantuko
*/
-public class InstigatorGang extends CardImpl {
+public final class InstigatorGang extends CardImpl {
public InstigatorGang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InstillEnergy.java b/Mage.Sets/src/mage/cards/i/InstillEnergy.java
index 79c77486353..af725d9173f 100644
--- a/Mage.Sets/src/mage/cards/i/InstillEnergy.java
+++ b/Mage.Sets/src/mage/cards/i/InstillEnergy.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class InstillEnergy extends CardImpl {
+public final class InstillEnergy extends CardImpl {
public InstillEnergy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/i/InstillFuror.java b/Mage.Sets/src/mage/cards/i/InstillFuror.java
index ed7ebfb59b6..0bc39b73523 100644
--- a/Mage.Sets/src/mage/cards/i/InstillFuror.java
+++ b/Mage.Sets/src/mage/cards/i/InstillFuror.java
@@ -56,7 +56,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author LevelX2
*/
-public class InstillFuror extends CardImpl {
+public final class InstillFuror extends CardImpl {
public InstillFuror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InstillInfection.java b/Mage.Sets/src/mage/cards/i/InstillInfection.java
index 5f666bebd79..538bd8592e5 100644
--- a/Mage.Sets/src/mage/cards/i/InstillInfection.java
+++ b/Mage.Sets/src/mage/cards/i/InstillInfection.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class InstillInfection extends CardImpl {
+public final class InstillInfection extends CardImpl {
public InstillInfection (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/InsultInjury.java b/Mage.Sets/src/mage/cards/i/InsultInjury.java
index d2c7699a347..43f13ffdce0 100644
--- a/Mage.Sets/src/mage/cards/i/InsultInjury.java
+++ b/Mage.Sets/src/mage/cards/i/InsultInjury.java
@@ -24,7 +24,7 @@ import mage.util.CardUtil;
/**
* @author Stravant
*/
-public class InsultInjury extends SplitCard {
+public final class InsultInjury extends SplitCard {
public InsultInjury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{2}{R}", "{2}{R}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/i/Insurrection.java b/Mage.Sets/src/mage/cards/i/Insurrection.java
index 69b66d4769b..3c4f408d183 100644
--- a/Mage.Sets/src/mage/cards/i/Insurrection.java
+++ b/Mage.Sets/src/mage/cards/i/Insurrection.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class Insurrection extends CardImpl {
+public final class Insurrection extends CardImpl {
public Insurrection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IntangibleVirtue.java b/Mage.Sets/src/mage/cards/i/IntangibleVirtue.java
index 88062a94187..a0a1a697b7b 100644
--- a/Mage.Sets/src/mage/cards/i/IntangibleVirtue.java
+++ b/Mage.Sets/src/mage/cards/i/IntangibleVirtue.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author BetaSteward
*/
-public class IntangibleVirtue extends CardImpl {
+public final class IntangibleVirtue extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens");
diff --git a/Mage.Sets/src/mage/cards/i/IntellectualOffering.java b/Mage.Sets/src/mage/cards/i/IntellectualOffering.java
index 32716ec4343..aefac4173f7 100644
--- a/Mage.Sets/src/mage/cards/i/IntellectualOffering.java
+++ b/Mage.Sets/src/mage/cards/i/IntellectualOffering.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author emerald000
*/
-public class IntellectualOffering extends CardImpl {
+public final class IntellectualOffering extends CardImpl {
public IntellectualOffering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/Interdict.java b/Mage.Sets/src/mage/cards/i/Interdict.java
index 4ae659f513c..f153387eee4 100644
--- a/Mage.Sets/src/mage/cards/i/Interdict.java
+++ b/Mage.Sets/src/mage/cards/i/Interdict.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class Interdict extends CardImpl {
+public final class Interdict extends CardImpl {
private static final FilterStackObject filter = new FilterStackObject("activated ability from an artifact, creature, enchantment, or land");
diff --git a/Mage.Sets/src/mage/cards/i/InterpretTheSigns.java b/Mage.Sets/src/mage/cards/i/InterpretTheSigns.java
index f896fbca8dd..164e71f63c8 100644
--- a/Mage.Sets/src/mage/cards/i/InterpretTheSigns.java
+++ b/Mage.Sets/src/mage/cards/i/InterpretTheSigns.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class InterpretTheSigns extends CardImpl {
+public final class InterpretTheSigns extends CardImpl {
public InterpretTheSigns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/Interrogation.java b/Mage.Sets/src/mage/cards/i/Interrogation.java
index d38299731dd..a0e0d79f421 100644
--- a/Mage.Sets/src/mage/cards/i/Interrogation.java
+++ b/Mage.Sets/src/mage/cards/i/Interrogation.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class Interrogation extends CardImpl {
+public final class Interrogation extends CardImpl {
public Interrogation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/Intervene.java b/Mage.Sets/src/mage/cards/i/Intervene.java
index 24d8c8ed743..d4287f6ce5a 100644
--- a/Mage.Sets/src/mage/cards/i/Intervene.java
+++ b/Mage.Sets/src/mage/cards/i/Intervene.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author Plopman
*/
-public class Intervene extends CardImpl {
+public final class Intervene extends CardImpl {
private final static FilterSpell filter = new FilterSpell("spell that targets a creature");
diff --git a/Mage.Sets/src/mage/cards/i/InterventionPact.java b/Mage.Sets/src/mage/cards/i/InterventionPact.java
index a33136b06f4..63902e311a8 100644
--- a/Mage.Sets/src/mage/cards/i/InterventionPact.java
+++ b/Mage.Sets/src/mage/cards/i/InterventionPact.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class InterventionPact extends CardImpl {
+public final class InterventionPact extends CardImpl {
public InterventionPact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/i/IntetTheDreamer.java b/Mage.Sets/src/mage/cards/i/IntetTheDreamer.java
index 1956c497642..fc2235d2fb4 100644
--- a/Mage.Sets/src/mage/cards/i/IntetTheDreamer.java
+++ b/Mage.Sets/src/mage/cards/i/IntetTheDreamer.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class IntetTheDreamer extends CardImpl {
+public final class IntetTheDreamer extends CardImpl {
protected static final String VALUE_PREFIX = "ExileZones";
diff --git a/Mage.Sets/src/mage/cards/i/Intimidation.java b/Mage.Sets/src/mage/cards/i/Intimidation.java
index baf9873900e..b4e4b106466 100644
--- a/Mage.Sets/src/mage/cards/i/Intimidation.java
+++ b/Mage.Sets/src/mage/cards/i/Intimidation.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Galatolol
*/
-public class Intimidation extends CardImpl {
+public final class Intimidation extends CardImpl {
public Intimidation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IntimidationBolt.java b/Mage.Sets/src/mage/cards/i/IntimidationBolt.java
index 06ec52d67e8..1c38f229952 100644
--- a/Mage.Sets/src/mage/cards/i/IntimidationBolt.java
+++ b/Mage.Sets/src/mage/cards/i/IntimidationBolt.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class IntimidationBolt extends CardImpl {
+public final class IntimidationBolt extends CardImpl {
public IntimidationBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IntimidatorInitiate.java b/Mage.Sets/src/mage/cards/i/IntimidatorInitiate.java
index 7874a2a5b0a..ab0b56ca1d8 100644
--- a/Mage.Sets/src/mage/cards/i/IntimidatorInitiate.java
+++ b/Mage.Sets/src/mage/cards/i/IntimidatorInitiate.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class IntimidatorInitiate extends CardImpl {
+public final class IntimidatorInitiate extends CardImpl {
private static final FilterSpell filter = new FilterSpell("red spell");
diff --git a/Mage.Sets/src/mage/cards/i/IntoTheCore.java b/Mage.Sets/src/mage/cards/i/IntoTheCore.java
index a491d796193..72ddb3b08b8 100644
--- a/Mage.Sets/src/mage/cards/i/IntoTheCore.java
+++ b/Mage.Sets/src/mage/cards/i/IntoTheCore.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class IntoTheCore extends CardImpl {
+public final class IntoTheCore extends CardImpl {
public IntoTheCore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IntoTheFray.java b/Mage.Sets/src/mage/cards/i/IntoTheFray.java
index c4dc730acda..4c0feafc7f3 100644
--- a/Mage.Sets/src/mage/cards/i/IntoTheFray.java
+++ b/Mage.Sets/src/mage/cards/i/IntoTheFray.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class IntoTheFray extends CardImpl {
+public final class IntoTheFray extends CardImpl {
public IntoTheFray(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IntoTheMawOfHell.java b/Mage.Sets/src/mage/cards/i/IntoTheMawOfHell.java
index e2cb07378aa..2ad3dfecd6b 100644
--- a/Mage.Sets/src/mage/cards/i/IntoTheMawOfHell.java
+++ b/Mage.Sets/src/mage/cards/i/IntoTheMawOfHell.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author North
*/
-public class IntoTheMawOfHell extends CardImpl {
+public final class IntoTheMawOfHell extends CardImpl {
public IntoTheMawOfHell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IntoTheNorth.java b/Mage.Sets/src/mage/cards/i/IntoTheNorth.java
index 81e2374c4d6..c1aca2ee365 100644
--- a/Mage.Sets/src/mage/cards/i/IntoTheNorth.java
+++ b/Mage.Sets/src/mage/cards/i/IntoTheNorth.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class IntoTheNorth extends CardImpl {
+public final class IntoTheNorth extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("snow land card");
diff --git a/Mage.Sets/src/mage/cards/i/IntoTheRoil.java b/Mage.Sets/src/mage/cards/i/IntoTheRoil.java
index 3e3a888f465..fbe8a4ab7c1 100644
--- a/Mage.Sets/src/mage/cards/i/IntoTheRoil.java
+++ b/Mage.Sets/src/mage/cards/i/IntoTheRoil.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author Viserion
*/
-public class IntoTheRoil extends CardImpl {
+public final class IntoTheRoil extends CardImpl {
public IntoTheRoil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IntoTheVoid.java b/Mage.Sets/src/mage/cards/i/IntoTheVoid.java
index b1d0abdfd20..7596a859ada 100644
--- a/Mage.Sets/src/mage/cards/i/IntoTheVoid.java
+++ b/Mage.Sets/src/mage/cards/i/IntoTheVoid.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author noxx
*/
-public class IntoTheVoid extends CardImpl {
+public final class IntoTheVoid extends CardImpl {
public IntoTheVoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IntoTheWilds.java b/Mage.Sets/src/mage/cards/i/IntoTheWilds.java
index 27b2f15ba96..73207994c32 100644
--- a/Mage.Sets/src/mage/cards/i/IntoTheWilds.java
+++ b/Mage.Sets/src/mage/cards/i/IntoTheWilds.java
@@ -34,13 +34,11 @@ import mage.abilities.effects.OneShotEffect;
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.TargetController;
import mage.constants.Zone;
-import mage.filter.common.FilterLandCard;
import mage.game.Game;
import mage.players.Player;
@@ -48,13 +46,12 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class IntoTheWilds extends CardImpl {
+public final class IntoTheWilds extends CardImpl {
public IntoTheWilds(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
-
- // At the beginning of your upkeep, look at the top card of your library. If it's a land card, you may put it onto the battlefield.
+ // At the beginning of your upkeep, look at the top card of your library. If it's a land card, you may put it onto the battlefield.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new IntoTheWildsEffect(), TargetController.YOU, false));
}
@@ -71,8 +68,6 @@ public class IntoTheWilds extends CardImpl {
class IntoTheWildsEffect extends OneShotEffect {
- private final static FilterLandCard filter = new FilterLandCard();
-
public IntoTheWildsEffect() {
super(Outcome.PutLandInPlay);
this.staticText = "look at the top card of your library. If it's a land card, you may put it onto the battlefield";
@@ -89,20 +84,18 @@ class IntoTheWildsEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- if (player == null) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
return false;
}
- Card card = player.getLibrary().getFromTop(game);
+ Card card = controller.getLibrary().getFromTop(game);
if (card != null) {
- Cards cards = new CardsImpl();
- cards.add(card);
- player.lookAtCards("Into the Wilds", cards, game);
- if (filter.match(card, game)) {
+ controller.lookAtCards(source, "", new CardsImpl(card), game);
+ if (card.isLand()) {
String message = "Put " + card.getName() + " onto the battlefield?";
- if (player.chooseUse(outcome, message, source, game)) {
- return card.putOntoBattlefield(game, Zone.LIBRARY, source.getSourceId(), source.getControllerId(), false);
+ if (controller.chooseUse(outcome, message, source, game)) {
+ controller.moveCards(card, Zone.BATTLEFIELD, source, game);
}
}
}
diff --git a/Mage.Sets/src/mage/cards/i/IntoThinAir.java b/Mage.Sets/src/mage/cards/i/IntoThinAir.java
index 4540069870e..8c77656a6ae 100644
--- a/Mage.Sets/src/mage/cards/i/IntoThinAir.java
+++ b/Mage.Sets/src/mage/cards/i/IntoThinAir.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Plopman
*/
-public class IntoThinAir extends CardImpl {
+public final class IntoThinAir extends CardImpl {
public IntoThinAir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IntrepidHero.java b/Mage.Sets/src/mage/cards/i/IntrepidHero.java
index e5de581ca93..a58109df199 100644
--- a/Mage.Sets/src/mage/cards/i/IntrepidHero.java
+++ b/Mage.Sets/src/mage/cards/i/IntrepidHero.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class IntrepidHero extends CardImpl {
+public final class IntrepidHero extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java b/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java
index 0fa405ad8ae..2c520ff0cb5 100644
--- a/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java
+++ b/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class IntrepidProvisioner extends CardImpl {
+public final class IntrepidProvisioner extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.HUMAN, "another target Human you control");
diff --git a/Mage.Sets/src/mage/cards/i/IntruderAlarm.java b/Mage.Sets/src/mage/cards/i/IntruderAlarm.java
index 7be697c5d97..01ff7c95102 100644
--- a/Mage.Sets/src/mage/cards/i/IntruderAlarm.java
+++ b/Mage.Sets/src/mage/cards/i/IntruderAlarm.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Plopman
*/
-public class IntruderAlarm extends CardImpl {
+public final class IntruderAlarm extends CardImpl {
public IntruderAlarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/Intuition.java b/Mage.Sets/src/mage/cards/i/Intuition.java
index 262b3e3fb31..12b10cd23ed 100644
--- a/Mage.Sets/src/mage/cards/i/Intuition.java
+++ b/Mage.Sets/src/mage/cards/i/Intuition.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class Intuition extends CardImpl {
+public final class Intuition extends CardImpl {
public Intuition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/Inundate.java b/Mage.Sets/src/mage/cards/i/Inundate.java
index 0badb75c60a..56bd902e5b9 100644
--- a/Mage.Sets/src/mage/cards/i/Inundate.java
+++ b/Mage.Sets/src/mage/cards/i/Inundate.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class Inundate extends CardImpl {
+public final class Inundate extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblue creatures");
diff --git a/Mage.Sets/src/mage/cards/i/InvaderParasite.java b/Mage.Sets/src/mage/cards/i/InvaderParasite.java
index 689411e8786..f48279b1548 100644
--- a/Mage.Sets/src/mage/cards/i/InvaderParasite.java
+++ b/Mage.Sets/src/mage/cards/i/InvaderParasite.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author Loki
*/
-public class InvaderParasite extends CardImpl {
+public final class InvaderParasite extends CardImpl {
public InvaderParasite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InvasionPlans.java b/Mage.Sets/src/mage/cards/i/InvasionPlans.java
index dda406b0362..66f9327bf98 100644
--- a/Mage.Sets/src/mage/cards/i/InvasionPlans.java
+++ b/Mage.Sets/src/mage/cards/i/InvasionPlans.java
@@ -44,7 +44,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author L_J
*/
-public class InvasionPlans extends CardImpl {
+public final class InvasionPlans extends CardImpl {
public InvasionPlans(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InvasiveSpecies.java b/Mage.Sets/src/mage/cards/i/InvasiveSpecies.java
index 68a37b02921..6b55f171747 100644
--- a/Mage.Sets/src/mage/cards/i/InvasiveSpecies.java
+++ b/Mage.Sets/src/mage/cards/i/InvasiveSpecies.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class InvasiveSpecies extends CardImpl {
+public final class InvasiveSpecies extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another permanent you control");
diff --git a/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java b/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java
index 8f49c36ad23..c29c2f753bb 100644
--- a/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java
+++ b/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class InvasiveSurgery extends CardImpl {
+public final class InvasiveSurgery extends CardImpl {
private final static FilterSpell filter = new FilterSpell("sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/i/InventorsApprentice.java b/Mage.Sets/src/mage/cards/i/InventorsApprentice.java
index 420630a13dc..8cb7d4b26df 100644
--- a/Mage.Sets/src/mage/cards/i/InventorsApprentice.java
+++ b/Mage.Sets/src/mage/cards/i/InventorsApprentice.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author cg5
*/
-public class InventorsApprentice extends CardImpl {
+public final class InventorsApprentice extends CardImpl {
private static final String rule = "{this} gets +1/+1 as long as you control an artifact";
diff --git a/Mage.Sets/src/mage/cards/i/InventorsFair.java b/Mage.Sets/src/mage/cards/i/InventorsFair.java
index fc49d21d761..d33c99b52da 100644
--- a/Mage.Sets/src/mage/cards/i/InventorsFair.java
+++ b/Mage.Sets/src/mage/cards/i/InventorsFair.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class InventorsFair extends CardImpl {
+public final class InventorsFair extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact");
diff --git a/Mage.Sets/src/mage/cards/i/InventorsGoggles.java b/Mage.Sets/src/mage/cards/i/InventorsGoggles.java
index 8a8d9e7514a..d931aa82392 100644
--- a/Mage.Sets/src/mage/cards/i/InventorsGoggles.java
+++ b/Mage.Sets/src/mage/cards/i/InventorsGoggles.java
@@ -43,7 +43,7 @@ import mage.filter.FilterPermanent;
*
* @author emerald000
*/
-public class InventorsGoggles extends CardImpl {
+public final class InventorsGoggles extends CardImpl {
public InventorsGoggles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/i/InvertTheSkies.java b/Mage.Sets/src/mage/cards/i/InvertTheSkies.java
index cc0aa0eaf79..914bea9462f 100644
--- a/Mage.Sets/src/mage/cards/i/InvertTheSkies.java
+++ b/Mage.Sets/src/mage/cards/i/InvertTheSkies.java
@@ -52,7 +52,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
* @author jeffwadsworth
*
*/
-public class InvertTheSkies extends CardImpl {
+public final class InvertTheSkies extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/i/InverterOfTruth.java b/Mage.Sets/src/mage/cards/i/InverterOfTruth.java
index a330de37673..92801a8b2fb 100644
--- a/Mage.Sets/src/mage/cards/i/InverterOfTruth.java
+++ b/Mage.Sets/src/mage/cards/i/InverterOfTruth.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class InverterOfTruth extends CardImpl {
+public final class InverterOfTruth extends CardImpl {
public InverterOfTruth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/Invigorate.java b/Mage.Sets/src/mage/cards/i/Invigorate.java
index 45f852d9ed9..6509e3b3bd5 100644
--- a/Mage.Sets/src/mage/cards/i/Invigorate.java
+++ b/Mage.Sets/src/mage/cards/i/Invigorate.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Invigorate extends CardImpl {
+public final class Invigorate extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("If you control a Forest");
diff --git a/Mage.Sets/src/mage/cards/i/InvigoratedRampage.java b/Mage.Sets/src/mage/cards/i/InvigoratedRampage.java
index d70a71bd5d5..b05b1b4f529 100644
--- a/Mage.Sets/src/mage/cards/i/InvigoratedRampage.java
+++ b/Mage.Sets/src/mage/cards/i/InvigoratedRampage.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class InvigoratedRampage extends CardImpl {
+public final class InvigoratedRampage extends CardImpl {
public InvigoratedRampage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/InvigoratingBoon.java b/Mage.Sets/src/mage/cards/i/InvigoratingBoon.java
index 74b2b51f2b8..267bfe49a6a 100644
--- a/Mage.Sets/src/mage/cards/i/InvigoratingBoon.java
+++ b/Mage.Sets/src/mage/cards/i/InvigoratingBoon.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class InvigoratingBoon extends CardImpl {
+public final class InvigoratingBoon extends CardImpl {
public InvigoratingBoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/InvigoratingFalls.java b/Mage.Sets/src/mage/cards/i/InvigoratingFalls.java
index bafbf30f60b..47743db7f3a 100644
--- a/Mage.Sets/src/mage/cards/i/InvigoratingFalls.java
+++ b/Mage.Sets/src/mage/cards/i/InvigoratingFalls.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LoneFox
*/
-public class InvigoratingFalls extends CardImpl {
+public final class InvigoratingFalls extends CardImpl {
public InvigoratingFalls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/InvincibleHymn.java b/Mage.Sets/src/mage/cards/i/InvincibleHymn.java
index a11ae209b20..769f49ee8b9 100644
--- a/Mage.Sets/src/mage/cards/i/InvincibleHymn.java
+++ b/Mage.Sets/src/mage/cards/i/InvincibleHymn.java
@@ -41,7 +41,7 @@ import mage.players.Player;
*
* @author North
*/
-public class InvincibleHymn extends CardImpl {
+public final class InvincibleHymn extends CardImpl {
public InvincibleHymn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/Inviolability.java b/Mage.Sets/src/mage/cards/i/Inviolability.java
index a15d11ee96e..5abd801f88e 100644
--- a/Mage.Sets/src/mage/cards/i/Inviolability.java
+++ b/Mage.Sets/src/mage/cards/i/Inviolability.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Inviolability extends CardImpl {
+public final class Inviolability extends CardImpl {
public Inviolability(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/Invisibility.java b/Mage.Sets/src/mage/cards/i/Invisibility.java
index 40fcd6aba5d..97624b2b266 100644
--- a/Mage.Sets/src/mage/cards/i/Invisibility.java
+++ b/Mage.Sets/src/mage/cards/i/Invisibility.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Invisibility extends CardImpl {
+public final class Invisibility extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by Walls");
static {
diff --git a/Mage.Sets/src/mage/cards/i/InvisibleStalker.java b/Mage.Sets/src/mage/cards/i/InvisibleStalker.java
index e06875a4a3c..7f3341da384 100644
--- a/Mage.Sets/src/mage/cards/i/InvisibleStalker.java
+++ b/Mage.Sets/src/mage/cards/i/InvisibleStalker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author nantuko
*/
-public class InvisibleStalker extends CardImpl {
+public final class InvisibleStalker extends CardImpl {
public InvisibleStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java b/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java
index 4169859e96c..7a5e6085204 100644
--- a/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java
+++ b/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class InvocationOfSaintTraft extends CardImpl {
+public final class InvocationOfSaintTraft extends CardImpl {
public InvocationOfSaintTraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InvokePrejudice.java b/Mage.Sets/src/mage/cards/i/InvokePrejudice.java
index 08643ceac58..a2ed2304ee3 100644
--- a/Mage.Sets/src/mage/cards/i/InvokePrejudice.java
+++ b/Mage.Sets/src/mage/cards/i/InvokePrejudice.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class InvokePrejudice extends CardImpl {
+public final class InvokePrejudice extends CardImpl {
public InvokePrejudice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/InvokeTheDivine.java b/Mage.Sets/src/mage/cards/i/InvokeTheDivine.java
index fc2aecb369c..687f4e39098 100644
--- a/Mage.Sets/src/mage/cards/i/InvokeTheDivine.java
+++ b/Mage.Sets/src/mage/cards/i/InvokeTheDivine.java
@@ -10,7 +10,7 @@ import mage.target.TargetPermanent;
import java.util.UUID;
-public class InvokeTheDivine extends CardImpl {
+public final class InvokeTheDivine extends CardImpl {
public InvokeTheDivine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/InvokeTheFiremind.java b/Mage.Sets/src/mage/cards/i/InvokeTheFiremind.java
index 1f1edd7cfee..41d47955d2c 100644
--- a/Mage.Sets/src/mage/cards/i/InvokeTheFiremind.java
+++ b/Mage.Sets/src/mage/cards/i/InvokeTheFiremind.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class InvokeTheFiremind extends CardImpl {
+public final class InvokeTheFiremind extends CardImpl {
public InvokeTheFiremind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/Invulnerability.java b/Mage.Sets/src/mage/cards/i/Invulnerability.java
index 9a435336a7c..c1c3adcb441 100644
--- a/Mage.Sets/src/mage/cards/i/Invulnerability.java
+++ b/Mage.Sets/src/mage/cards/i/Invulnerability.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author anonymous
*/
-public class Invulnerability extends CardImpl {
+public final class Invulnerability extends CardImpl {
public Invulnerability(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IonCannon.java b/Mage.Sets/src/mage/cards/i/IonCannon.java
index 956420497ac..da712d54d05 100644
--- a/Mage.Sets/src/mage/cards/i/IonCannon.java
+++ b/Mage.Sets/src/mage/cards/i/IonCannon.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class IonCannon extends CardImpl {
+public final class IonCannon extends CardImpl {
public IonCannon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IonStorm.java b/Mage.Sets/src/mage/cards/i/IonStorm.java
index 65a8eea9275..807951d168b 100644
--- a/Mage.Sets/src/mage/cards/i/IonStorm.java
+++ b/Mage.Sets/src/mage/cards/i/IonStorm.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class IonStorm extends CardImpl {
+public final class IonStorm extends CardImpl {
public IonStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IonaShieldOfEmeria.java b/Mage.Sets/src/mage/cards/i/IonaShieldOfEmeria.java
index a01955b9299..7a1bf7378d6 100644
--- a/Mage.Sets/src/mage/cards/i/IonaShieldOfEmeria.java
+++ b/Mage.Sets/src/mage/cards/i/IonaShieldOfEmeria.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class IonaShieldOfEmeria extends CardImpl {
+public final class IonaShieldOfEmeria extends CardImpl {
public IonaShieldOfEmeria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IonasBlessing.java b/Mage.Sets/src/mage/cards/i/IonasBlessing.java
index 248914a1b0d..34628900961 100644
--- a/Mage.Sets/src/mage/cards/i/IonasBlessing.java
+++ b/Mage.Sets/src/mage/cards/i/IonasBlessing.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class IonasBlessing extends CardImpl {
+public final class IonasBlessing extends CardImpl {
public IonasBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IonasJudgment.java b/Mage.Sets/src/mage/cards/i/IonasJudgment.java
index c3ad1db6acb..3dbf1fb9be0 100644
--- a/Mage.Sets/src/mage/cards/i/IonasJudgment.java
+++ b/Mage.Sets/src/mage/cards/i/IonasJudgment.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class IonasJudgment extends CardImpl {
+public final class IonasJudgment extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or enchantment");
static {
diff --git a/Mage.Sets/src/mage/cards/i/IorRuinExpedition.java b/Mage.Sets/src/mage/cards/i/IorRuinExpedition.java
index 24d284072b7..3b3ca6122d2 100644
--- a/Mage.Sets/src/mage/cards/i/IorRuinExpedition.java
+++ b/Mage.Sets/src/mage/cards/i/IorRuinExpedition.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class IorRuinExpedition extends CardImpl {
+public final class IorRuinExpedition extends CardImpl {
public IorRuinExpedition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IpnuRivulet.java b/Mage.Sets/src/mage/cards/i/IpnuRivulet.java
index 5c666f28c15..5a49c1c9cd2 100644
--- a/Mage.Sets/src/mage/cards/i/IpnuRivulet.java
+++ b/Mage.Sets/src/mage/cards/i/IpnuRivulet.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class IpnuRivulet extends CardImpl {
+public final class IpnuRivulet extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Desert");
diff --git a/Mage.Sets/src/mage/cards/i/IreOfKaminari.java b/Mage.Sets/src/mage/cards/i/IreOfKaminari.java
index b6db46ee9df..ab7f2a26c34 100644
--- a/Mage.Sets/src/mage/cards/i/IreOfKaminari.java
+++ b/Mage.Sets/src/mage/cards/i/IreOfKaminari.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class IreOfKaminari extends CardImpl {
+public final class IreOfKaminari extends CardImpl {
private static final FilterCard filter = new FilterCard("Arcane");
diff --git a/Mage.Sets/src/mage/cards/i/IreShaman.java b/Mage.Sets/src/mage/cards/i/IreShaman.java
index e58fe289629..832629dbff6 100644
--- a/Mage.Sets/src/mage/cards/i/IreShaman.java
+++ b/Mage.Sets/src/mage/cards/i/IreShaman.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class IreShaman extends CardImpl {
+public final class IreShaman extends CardImpl {
public IreShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IridescentAngel.java b/Mage.Sets/src/mage/cards/i/IridescentAngel.java
index 6ce689b9312..ebfa47ff7b5 100644
--- a/Mage.Sets/src/mage/cards/i/IridescentAngel.java
+++ b/Mage.Sets/src/mage/cards/i/IridescentAngel.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class IridescentAngel extends CardImpl {
+public final class IridescentAngel extends CardImpl {
private static final FilterCard filter = new FilterCard("all colors");
diff --git a/Mage.Sets/src/mage/cards/i/IridescentDrake.java b/Mage.Sets/src/mage/cards/i/IridescentDrake.java
index 223ddb3276e..d007e3915eb 100644
--- a/Mage.Sets/src/mage/cards/i/IridescentDrake.java
+++ b/Mage.Sets/src/mage/cards/i/IridescentDrake.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author TheElk801
*/
-public class IridescentDrake extends CardImpl {
+public final class IridescentDrake extends CardImpl {
public IridescentDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IriniSengir.java b/Mage.Sets/src/mage/cards/i/IriniSengir.java
index 619b16ca190..5e5fad02cc1 100644
--- a/Mage.Sets/src/mage/cards/i/IriniSengir.java
+++ b/Mage.Sets/src/mage/cards/i/IriniSengir.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class IriniSengir extends CardImpl {
+public final class IriniSengir extends CardImpl {
private static final FilterEnchantmentCard filter = new FilterEnchantmentCard("Green enchantment spells and white enchantment spells");
static {
diff --git a/Mage.Sets/src/mage/cards/i/IroasGodOfVictory.java b/Mage.Sets/src/mage/cards/i/IroasGodOfVictory.java
index 00b036f9d9f..bfa8b79f4c8 100644
--- a/Mage.Sets/src/mage/cards/i/IroasGodOfVictory.java
+++ b/Mage.Sets/src/mage/cards/i/IroasGodOfVictory.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class IroasGodOfVictory extends CardImpl {
+public final class IroasGodOfVictory extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
private static final FilterControlledCreatureInPlay filterAttacking = new FilterControlledCreatureInPlay("attacking creatures you control");
diff --git a/Mage.Sets/src/mage/cards/i/IroassChampion.java b/Mage.Sets/src/mage/cards/i/IroassChampion.java
index 040a7336523..b36efda653e 100644
--- a/Mage.Sets/src/mage/cards/i/IroassChampion.java
+++ b/Mage.Sets/src/mage/cards/i/IroassChampion.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class IroassChampion extends CardImpl {
+public final class IroassChampion extends CardImpl {
public IroassChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IronBarbHellion.java b/Mage.Sets/src/mage/cards/i/IronBarbHellion.java
index a1b513dbfaa..4fc100f6475 100644
--- a/Mage.Sets/src/mage/cards/i/IronBarbHellion.java
+++ b/Mage.Sets/src/mage/cards/i/IronBarbHellion.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class IronBarbHellion extends CardImpl {
+public final class IronBarbHellion extends CardImpl {
public IronBarbHellion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IronFistOfTheEmpire.java b/Mage.Sets/src/mage/cards/i/IronFistOfTheEmpire.java
index 7384e118532..080f35bb65d 100644
--- a/Mage.Sets/src/mage/cards/i/IronFistOfTheEmpire.java
+++ b/Mage.Sets/src/mage/cards/i/IronFistOfTheEmpire.java
@@ -46,7 +46,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class IronFistOfTheEmpire extends CardImpl {
+public final class IronFistOfTheEmpire extends CardImpl {
public IronFistOfTheEmpire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/IronHeartChimera.java b/Mage.Sets/src/mage/cards/i/IronHeartChimera.java
index 0ed742e319a..b59b979051e 100644
--- a/Mage.Sets/src/mage/cards/i/IronHeartChimera.java
+++ b/Mage.Sets/src/mage/cards/i/IronHeartChimera.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class IronHeartChimera extends CardImpl {
+public final class IronHeartChimera extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature you control");
diff --git a/Mage.Sets/src/mage/cards/i/IronLance.java b/Mage.Sets/src/mage/cards/i/IronLance.java
index f2d691de04d..10898fedde8 100644
--- a/Mage.Sets/src/mage/cards/i/IronLance.java
+++ b/Mage.Sets/src/mage/cards/i/IronLance.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Derpthemeus
*/
-public class IronLance extends CardImpl {
+public final class IronLance extends CardImpl {
public IronLance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/i/IronLeagueSteed.java b/Mage.Sets/src/mage/cards/i/IronLeagueSteed.java
index f582666dffb..922e0ed4310 100644
--- a/Mage.Sets/src/mage/cards/i/IronLeagueSteed.java
+++ b/Mage.Sets/src/mage/cards/i/IronLeagueSteed.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class IronLeagueSteed extends CardImpl {
+public final class IronLeagueSteed extends CardImpl {
public IronLeagueSteed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/i/IronMaiden.java b/Mage.Sets/src/mage/cards/i/IronMaiden.java
index e22d07f6d11..1e1f4bc8f9f 100644
--- a/Mage.Sets/src/mage/cards/i/IronMaiden.java
+++ b/Mage.Sets/src/mage/cards/i/IronMaiden.java
@@ -44,10 +44,10 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class IronMaiden extends CardImpl {
+public final class IronMaiden extends CardImpl {
public IronMaiden(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
// At the beginning of each opponent's upkeep, Iron Maiden deals X damage to that player, where X is the number of cards in their hand minus 4.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new IronMaidenEffect(), TargetController.OPPONENT, false);
@@ -62,10 +62,8 @@ public class IronMaiden extends CardImpl {
public IronMaiden copy() {
return new IronMaiden(this);
}
-
-
-}
+}
class IronMaidenEffect extends OneShotEffect {
@@ -80,16 +78,11 @@ class IronMaidenEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(targetPointer.getFirst(game, source));
- if(player != null)
- {
+ if (player != null) {
int amount = player.getHand().size() - 4;
- if(amount > 0)
- {
- if (player != null) {
- player.damage(amount, source.getSourceId(), game, false, true);
- return true;
- }
-
+ if (amount > 0) {
+ player.damage(amount, source.getSourceId(), game, false, true);
+ return true;
}
}
return false;
@@ -99,7 +92,7 @@ class IronMaidenEffect extends OneShotEffect {
public IronMaidenEffect copy() {
return new IronMaidenEffect(this);
}
-
+
@Override
public String getText(Mode mode) {
return "Iron Maiden deals X damage to that player, where X is the number of cards in their hand minus 4";
diff --git a/Mage.Sets/src/mage/cards/i/IronMyr.java b/Mage.Sets/src/mage/cards/i/IronMyr.java
index 1ac8b11278c..145f68f89fa 100644
--- a/Mage.Sets/src/mage/cards/i/IronMyr.java
+++ b/Mage.Sets/src/mage/cards/i/IronMyr.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class IronMyr extends CardImpl {
+public final class IronMyr extends CardImpl {
public IronMyr (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/i/IronStar.java b/Mage.Sets/src/mage/cards/i/IronStar.java
index 1be68f6dd40..e0e9a071658 100644
--- a/Mage.Sets/src/mage/cards/i/IronStar.java
+++ b/Mage.Sets/src/mage/cards/i/IronStar.java
@@ -45,7 +45,7 @@ import mage.game.stack.Spell;
*
* @author KholdFuzion
*/
-public class IronStar extends CardImpl {
+public final class IronStar extends CardImpl {
public IronStar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/i/IronTuskElephant.java b/Mage.Sets/src/mage/cards/i/IronTuskElephant.java
index f559187aee2..8d5f92cf95c 100644
--- a/Mage.Sets/src/mage/cards/i/IronTuskElephant.java
+++ b/Mage.Sets/src/mage/cards/i/IronTuskElephant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class IronTuskElephant extends CardImpl {
+public final class IronTuskElephant extends CardImpl {
public IronTuskElephant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IronWill.java b/Mage.Sets/src/mage/cards/i/IronWill.java
index 014f8dbd720..1aa658706ce 100644
--- a/Mage.Sets/src/mage/cards/i/IronWill.java
+++ b/Mage.Sets/src/mage/cards/i/IronWill.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class IronWill extends CardImpl {
+public final class IronWill extends CardImpl {
public IronWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IroncladRevolutionary.java b/Mage.Sets/src/mage/cards/i/IroncladRevolutionary.java
index dcf36b510c8..c2b421345a1 100644
--- a/Mage.Sets/src/mage/cards/i/IroncladRevolutionary.java
+++ b/Mage.Sets/src/mage/cards/i/IroncladRevolutionary.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class IroncladRevolutionary extends CardImpl {
+public final class IroncladRevolutionary extends CardImpl {
public IroncladRevolutionary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IroncladSlayer.java b/Mage.Sets/src/mage/cards/i/IroncladSlayer.java
index 5c992df4699..c2786ef26a7 100644
--- a/Mage.Sets/src/mage/cards/i/IroncladSlayer.java
+++ b/Mage.Sets/src/mage/cards/i/IroncladSlayer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class IroncladSlayer extends CardImpl {
+public final class IroncladSlayer extends CardImpl {
private final static FilterCard filter = new FilterCard("Aura or Equipment card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/i/IronclawBuzzardiers.java b/Mage.Sets/src/mage/cards/i/IronclawBuzzardiers.java
index 2248049ca3c..a439cdc10f8 100644
--- a/Mage.Sets/src/mage/cards/i/IronclawBuzzardiers.java
+++ b/Mage.Sets/src/mage/cards/i/IronclawBuzzardiers.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author dustinconrad
*/
-public class IronclawBuzzardiers extends CardImpl {
+public final class IronclawBuzzardiers extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/i/IronclawCurse.java b/Mage.Sets/src/mage/cards/i/IronclawCurse.java
index aae4e3ff4e8..716971c8f21 100644
--- a/Mage.Sets/src/mage/cards/i/IronclawCurse.java
+++ b/Mage.Sets/src/mage/cards/i/IronclawCurse.java
@@ -25,7 +25,6 @@
* 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;
@@ -52,10 +51,10 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class IronclawCurse extends CardImpl {
+public final class IronclawCurse extends CardImpl {
public IronclawCurse(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
this.subtype.add(SubType.AURA);
// Enchant creature
@@ -67,7 +66,7 @@ public class IronclawCurse extends CardImpl {
// Enchanted creature gets 0/-1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(0, -1, Duration.WhileOnBattlefield)));
-
+
// Enchanted creature can't block creatures with power equal to or greater than the enchanted creature's toughness.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new IronclawCurseEffect()));
}
@@ -101,8 +100,11 @@ class IronclawCurseEffect extends CantBlockAttachedEffect {
@Override
public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) {
Permanent enchantment = game.getPermanentOrLKIBattlefield(source.getSourceId());
+ if (enchantment == null) {
+ return false;
+ }
Permanent enchantedCreature = game.getPermanent(enchantment.getAttachedTo());
- if (enchantment != null && enchantment.getAttachedTo() != null) {
+ if (enchantment.getAttachedTo() != null) {
return !(attacker.getPower().getValue() >= enchantedCreature.getToughness().getValue());
}
return true;
diff --git a/Mage.Sets/src/mage/cards/i/IronclawOrcs.java b/Mage.Sets/src/mage/cards/i/IronclawOrcs.java
index db7841c5d85..5d77a741ddb 100644
--- a/Mage.Sets/src/mage/cards/i/IronclawOrcs.java
+++ b/Mage.Sets/src/mage/cards/i/IronclawOrcs.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author dustinconrad
*/
-public class IronclawOrcs extends CardImpl {
+public final class IronclawOrcs extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/i/Ironfang.java b/Mage.Sets/src/mage/cards/i/Ironfang.java
index e85c4b0a5b9..a0219b4a5ee 100644
--- a/Mage.Sets/src/mage/cards/i/Ironfang.java
+++ b/Mage.Sets/src/mage/cards/i/Ironfang.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class Ironfang extends CardImpl {
+public final class Ironfang extends CardImpl {
public Ironfang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/i/IronfistCrusher.java b/Mage.Sets/src/mage/cards/i/IronfistCrusher.java
index 2972f2f87d7..314f3c17405 100644
--- a/Mage.Sets/src/mage/cards/i/IronfistCrusher.java
+++ b/Mage.Sets/src/mage/cards/i/IronfistCrusher.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class IronfistCrusher extends CardImpl {
+public final class IronfistCrusher extends CardImpl {
public IronfistCrusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IronhoofOx.java b/Mage.Sets/src/mage/cards/i/IronhoofOx.java
index bbc4585d850..7892ed3b75a 100644
--- a/Mage.Sets/src/mage/cards/i/IronhoofOx.java
+++ b/Mage.Sets/src/mage/cards/i/IronhoofOx.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author ilcartographer
*/
-public class IronhoofOx extends CardImpl {
+public final class IronhoofOx extends CardImpl {
public IronhoofOx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IronrootTreefolk.java b/Mage.Sets/src/mage/cards/i/IronrootTreefolk.java
index 23356729ee9..c64b34e9a68 100644
--- a/Mage.Sets/src/mage/cards/i/IronrootTreefolk.java
+++ b/Mage.Sets/src/mage/cards/i/IronrootTreefolk.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class IronrootTreefolk extends CardImpl {
+public final class IronrootTreefolk extends CardImpl {
public IronrootTreefolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IronshellBeetle.java b/Mage.Sets/src/mage/cards/i/IronshellBeetle.java
index b33437d8c86..e4031e8c2fe 100644
--- a/Mage.Sets/src/mage/cards/i/IronshellBeetle.java
+++ b/Mage.Sets/src/mage/cards/i/IronshellBeetle.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class IronshellBeetle extends CardImpl {
+public final class IronshellBeetle extends CardImpl {
public IronshellBeetle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IrontreadCrusher.java b/Mage.Sets/src/mage/cards/i/IrontreadCrusher.java
index 9905127fc01..2c9aba4dfba 100644
--- a/Mage.Sets/src/mage/cards/i/IrontreadCrusher.java
+++ b/Mage.Sets/src/mage/cards/i/IrontreadCrusher.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class IrontreadCrusher extends CardImpl {
+public final class IrontreadCrusher extends CardImpl {
public IrontreadCrusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/i/IronwrightsCleansing.java b/Mage.Sets/src/mage/cards/i/IronwrightsCleansing.java
index ab5a73a8572..82edb65e426 100644
--- a/Mage.Sets/src/mage/cards/i/IronwrightsCleansing.java
+++ b/Mage.Sets/src/mage/cards/i/IronwrightsCleansing.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class IronwrightsCleansing extends CardImpl {
+public final class IronwrightsCleansing extends CardImpl {
public IronwrightsCleansing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/Irradiate.java b/Mage.Sets/src/mage/cards/i/Irradiate.java
index d13f8a13909..ca871e7814c 100644
--- a/Mage.Sets/src/mage/cards/i/Irradiate.java
+++ b/Mage.Sets/src/mage/cards/i/Irradiate.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Irradiate extends CardImpl {
+public final class Irradiate extends CardImpl {
public Irradiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IrresistiblePrey.java b/Mage.Sets/src/mage/cards/i/IrresistiblePrey.java
index 7386509e18d..7851a2144f4 100644
--- a/Mage.Sets/src/mage/cards/i/IrresistiblePrey.java
+++ b/Mage.Sets/src/mage/cards/i/IrresistiblePrey.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class IrresistiblePrey extends CardImpl {
+public final class IrresistiblePrey extends CardImpl {
public IrresistiblePrey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IrrigatedFarmland.java b/Mage.Sets/src/mage/cards/i/IrrigatedFarmland.java
index 5d3fa3e4a27..5c3c1fa6a6b 100644
--- a/Mage.Sets/src/mage/cards/i/IrrigatedFarmland.java
+++ b/Mage.Sets/src/mage/cards/i/IrrigatedFarmland.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class IrrigatedFarmland extends CardImpl {
+public final class IrrigatedFarmland extends CardImpl {
public IrrigatedFarmland(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/i/IrrigationDitch.java b/Mage.Sets/src/mage/cards/i/IrrigationDitch.java
index 21e4672b3d4..ab051920a7c 100644
--- a/Mage.Sets/src/mage/cards/i/IrrigationDitch.java
+++ b/Mage.Sets/src/mage/cards/i/IrrigationDitch.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class IrrigationDitch extends CardImpl {
+public final class IrrigationDitch extends CardImpl {
public IrrigationDitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/i/IsamaruHoundofKonda.java b/Mage.Sets/src/mage/cards/i/IsamaruHoundofKonda.java
index 1837c0246e7..ca84ec93dab 100644
--- a/Mage.Sets/src/mage/cards/i/IsamaruHoundofKonda.java
+++ b/Mage.Sets/src/mage/cards/i/IsamaruHoundofKonda.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author Loki
*/
-public class IsamaruHoundofKonda extends CardImpl {
+public final class IsamaruHoundofKonda extends CardImpl {
public IsamaruHoundofKonda (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IsaoEnlightenedBushi.java b/Mage.Sets/src/mage/cards/i/IsaoEnlightenedBushi.java
index f0979128794..2ed1fe1261f 100644
--- a/Mage.Sets/src/mage/cards/i/IsaoEnlightenedBushi.java
+++ b/Mage.Sets/src/mage/cards/i/IsaoEnlightenedBushi.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class IsaoEnlightenedBushi extends CardImpl {
+public final class IsaoEnlightenedBushi extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Samurai");
diff --git a/Mage.Sets/src/mage/cards/i/IshaiOjutaiDragonspeaker.java b/Mage.Sets/src/mage/cards/i/IshaiOjutaiDragonspeaker.java
index b7956ee5d13..348484a14a5 100644
--- a/Mage.Sets/src/mage/cards/i/IshaiOjutaiDragonspeaker.java
+++ b/Mage.Sets/src/mage/cards/i/IshaiOjutaiDragonspeaker.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class IshaiOjutaiDragonspeaker extends CardImpl {
+public final class IshaiOjutaiDragonspeaker extends CardImpl {
public IshaiOjutaiDragonspeaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IshiIshiAkkiCrackshot.java b/Mage.Sets/src/mage/cards/i/IshiIshiAkkiCrackshot.java
index 8553572cedd..0248c814a09 100644
--- a/Mage.Sets/src/mage/cards/i/IshiIshiAkkiCrackshot.java
+++ b/Mage.Sets/src/mage/cards/i/IshiIshiAkkiCrackshot.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class IshiIshiAkkiCrackshot extends CardImpl {
+public final class IshiIshiAkkiCrackshot extends CardImpl {
private static final FilterSpiritOrArcaneCard filter = new FilterSpiritOrArcaneCard();
diff --git a/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java b/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java
index dbe4f450ac4..61a84e08e09 100644
--- a/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java
+++ b/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class IshkanahGrafwidow extends CardImpl {
+public final class IshkanahGrafwidow extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Spider you control");
diff --git a/Mage.Sets/src/mage/cards/i/IslandFishJasconius.java b/Mage.Sets/src/mage/cards/i/IslandFishJasconius.java
index 7411e0c51e2..c7650102391 100644
--- a/Mage.Sets/src/mage/cards/i/IslandFishJasconius.java
+++ b/Mage.Sets/src/mage/cards/i/IslandFishJasconius.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class IslandFishJasconius extends CardImpl {
+public final class IslandFishJasconius extends CardImpl {
public IslandFishJasconius(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IslandOfWakWak.java b/Mage.Sets/src/mage/cards/i/IslandOfWakWak.java
index e027cfcc871..3cb6ad37b06 100644
--- a/Mage.Sets/src/mage/cards/i/IslandOfWakWak.java
+++ b/Mage.Sets/src/mage/cards/i/IslandOfWakWak.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class IslandOfWakWak extends CardImpl {
+public final class IslandOfWakWak extends CardImpl {
private static final FilterCreaturePermanent filterWithFlying = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/i/IslandSanctuary.java b/Mage.Sets/src/mage/cards/i/IslandSanctuary.java
index 4a2c7c933c3..48602c726a8 100644
--- a/Mage.Sets/src/mage/cards/i/IslandSanctuary.java
+++ b/Mage.Sets/src/mage/cards/i/IslandSanctuary.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class IslandSanctuary extends CardImpl {
+public final class IslandSanctuary extends CardImpl {
public IslandSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IslebackSpawn.java b/Mage.Sets/src/mage/cards/i/IslebackSpawn.java
index 36be3494985..61a0ff12494 100644
--- a/Mage.Sets/src/mage/cards/i/IslebackSpawn.java
+++ b/Mage.Sets/src/mage/cards/i/IslebackSpawn.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class IslebackSpawn extends CardImpl {
+public final class IslebackSpawn extends CardImpl {
public IslebackSpawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IsochronScepter.java b/Mage.Sets/src/mage/cards/i/IsochronScepter.java
index b7ac1defaf2..25574f7864d 100644
--- a/Mage.Sets/src/mage/cards/i/IsochronScepter.java
+++ b/Mage.Sets/src/mage/cards/i/IsochronScepter.java
@@ -28,6 +28,7 @@
package mage.cards.i;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
@@ -55,10 +56,10 @@ import org.apache.log4j.Logger;
*
* @author LevelX2
*/
-public class IsochronScepter extends CardImpl {
+public final class IsochronScepter extends CardImpl {
public IsochronScepter(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
// Imprint - When Isochron Scepter enters the battlefield, you may exile an instant card with converted mana cost 2 or less from your hand.
this.addAbility(new EntersBattlefieldTriggeredAbility(new IsochronScepterImprintEffect(), true, "Imprint — "));
@@ -162,7 +163,7 @@ class IsochronScepterCopyEffect extends OneShotEffect {
game.getState().setZone(copiedCard.getId(), Zone.EXILED);
if (controller.chooseUse(outcome, "Cast the copied card without paying mana cost?", source, game)) {
if (copiedCard.getSpellAbility() != null) {
- controller.cast(copiedCard.getSpellAbility(), game, true);
+ controller.cast(copiedCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
} else {
Logger.getLogger(IsochronScepterCopyEffect.class).error("Isochron Scepter: spell ability == null " + copiedCard.getName());
}
diff --git a/Mage.Sets/src/mage/cards/i/IsolatedChapel.java b/Mage.Sets/src/mage/cards/i/IsolatedChapel.java
index f002742ff34..e22f390b15d 100644
--- a/Mage.Sets/src/mage/cards/i/IsolatedChapel.java
+++ b/Mage.Sets/src/mage/cards/i/IsolatedChapel.java
@@ -49,7 +49,7 @@ import java.util.UUID;
/**
* @author nantuko
*/
-public class IsolatedChapel extends CardImpl {
+public final class IsolatedChapel extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/i/IsolationCell.java b/Mage.Sets/src/mage/cards/i/IsolationCell.java
index d9cfa4a748c..6393c1b6a70 100644
--- a/Mage.Sets/src/mage/cards/i/IsolationCell.java
+++ b/Mage.Sets/src/mage/cards/i/IsolationCell.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class IsolationCell extends CardImpl {
+public final class IsolationCell extends CardImpl {
public IsolationCell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/i/IsolationZone.java b/Mage.Sets/src/mage/cards/i/IsolationZone.java
index 821de3c6ccd..4fa45d1e015 100644
--- a/Mage.Sets/src/mage/cards/i/IsolationZone.java
+++ b/Mage.Sets/src/mage/cards/i/IsolationZone.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class IsolationZone extends CardImpl {
+public final class IsolationZone extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent("creature or enchantment an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/i/IsperiaSupremeJudge.java b/Mage.Sets/src/mage/cards/i/IsperiaSupremeJudge.java
index 060562ae105..d949dd9866d 100644
--- a/Mage.Sets/src/mage/cards/i/IsperiaSupremeJudge.java
+++ b/Mage.Sets/src/mage/cards/i/IsperiaSupremeJudge.java
@@ -42,7 +42,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class IsperiaSupremeJudge extends CardImpl {
+public final class IsperiaSupremeJudge extends CardImpl {
public IsperiaSupremeJudge(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/i/IsperiaTheInscrutable.java b/Mage.Sets/src/mage/cards/i/IsperiaTheInscrutable.java
index 7796b02016d..8c52dd87c2e 100644
--- a/Mage.Sets/src/mage/cards/i/IsperiaTheInscrutable.java
+++ b/Mage.Sets/src/mage/cards/i/IsperiaTheInscrutable.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author lunaskyrise
*/
-public class IsperiaTheInscrutable extends CardImpl {
+public final class IsperiaTheInscrutable extends CardImpl {
public IsperiaTheInscrutable(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IsperiasSkywatch.java b/Mage.Sets/src/mage/cards/i/IsperiasSkywatch.java
index 85859d4bda9..1be5b781292 100644
--- a/Mage.Sets/src/mage/cards/i/IsperiasSkywatch.java
+++ b/Mage.Sets/src/mage/cards/i/IsperiasSkywatch.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class IsperiasSkywatch extends CardImpl {
+public final class IsperiasSkywatch extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/i/ItOfTheHorridSwarm.java b/Mage.Sets/src/mage/cards/i/ItOfTheHorridSwarm.java
index 374ac0b954f..56a35114bee 100644
--- a/Mage.Sets/src/mage/cards/i/ItOfTheHorridSwarm.java
+++ b/Mage.Sets/src/mage/cards/i/ItOfTheHorridSwarm.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.InsectToken;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class ItOfTheHorridSwarm extends CardImpl {
+public final class ItOfTheHorridSwarm extends CardImpl {
public ItOfTheHorridSwarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/i/ItThatBetrays.java b/Mage.Sets/src/mage/cards/i/ItThatBetrays.java
index 507e7ca2c5f..a5eaddf1af8 100644
--- a/Mage.Sets/src/mage/cards/i/ItThatBetrays.java
+++ b/Mage.Sets/src/mage/cards/i/ItThatBetrays.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author jeffwadsworth
*/
-public class ItThatBetrays extends CardImpl {
+public final class ItThatBetrays extends CardImpl {
private static final FilterPermanent FILTER = new FilterPermanent("nontoken permanent");
diff --git a/Mage.Sets/src/mage/cards/i/ItThatRidesAsOne.java b/Mage.Sets/src/mage/cards/i/ItThatRidesAsOne.java
index 3574e01211a..5bd1a94b1be 100644
--- a/Mage.Sets/src/mage/cards/i/ItThatRidesAsOne.java
+++ b/Mage.Sets/src/mage/cards/i/ItThatRidesAsOne.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ItThatRidesAsOne extends CardImpl {
+public final class ItThatRidesAsOne extends CardImpl {
public ItThatRidesAsOne(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/i/IthHighArcanist.java b/Mage.Sets/src/mage/cards/i/IthHighArcanist.java
index 5ff259dfce3..d8a99c7edb8 100644
--- a/Mage.Sets/src/mage/cards/i/IthHighArcanist.java
+++ b/Mage.Sets/src/mage/cards/i/IthHighArcanist.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author LoneFox
*/
-public class IthHighArcanist extends CardImpl {
+public final class IthHighArcanist extends CardImpl {
public IthHighArcanist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/i/IthorianInitiate.java b/Mage.Sets/src/mage/cards/i/IthorianInitiate.java
index e3bcf12b88e..01ab0d06a65 100644
--- a/Mage.Sets/src/mage/cards/i/IthorianInitiate.java
+++ b/Mage.Sets/src/mage/cards/i/IthorianInitiate.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class IthorianInitiate extends CardImpl {
+public final class IthorianInitiate extends CardImpl {
public IthorianInitiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
@@ -55,7 +55,7 @@ public class IthorianInitiate extends CardImpl {
this.toughness = new MageInt(1);
// When Ithorian Initiate enters the battlefield, you may search your library for a basic land, reveal it, and put it into your hand. If you do shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
// Meditate {1}{G}
this.addAbility(new MeditateAbility(new ManaCostsImpl("{1}{G}")));
diff --git a/Mage.Sets/src/mage/cards/i/ItlimocCradleOfTheSun.java b/Mage.Sets/src/mage/cards/i/ItlimocCradleOfTheSun.java
index d9b76d29381..7ac943a01e2 100644
--- a/Mage.Sets/src/mage/cards/i/ItlimocCradleOfTheSun.java
+++ b/Mage.Sets/src/mage/cards/i/ItlimocCradleOfTheSun.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author JRHerlehy
*/
-public class ItlimocCradleOfTheSun extends CardImpl {
+public final class ItlimocCradleOfTheSun extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("creature you control");
diff --git a/Mage.Sets/src/mage/cards/i/IvoryCharm.java b/Mage.Sets/src/mage/cards/i/IvoryCharm.java
index 8ed515d712c..61429656660 100644
--- a/Mage.Sets/src/mage/cards/i/IvoryCharm.java
+++ b/Mage.Sets/src/mage/cards/i/IvoryCharm.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class IvoryCharm extends CardImpl {
+public final class IvoryCharm extends CardImpl {
public IvoryCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IvoryCraneNetsuke.java b/Mage.Sets/src/mage/cards/i/IvoryCraneNetsuke.java
index a038e94f4fb..159af0f7d45 100644
--- a/Mage.Sets/src/mage/cards/i/IvoryCraneNetsuke.java
+++ b/Mage.Sets/src/mage/cards/i/IvoryCraneNetsuke.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class IvoryCraneNetsuke extends CardImpl {
+public final class IvoryCraneNetsuke extends CardImpl {
public IvoryCraneNetsuke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/i/IvoryCup.java b/Mage.Sets/src/mage/cards/i/IvoryCup.java
index 857711417ef..0911e4da1b5 100644
--- a/Mage.Sets/src/mage/cards/i/IvoryCup.java
+++ b/Mage.Sets/src/mage/cards/i/IvoryCup.java
@@ -46,7 +46,7 @@ import mage.game.stack.Spell;
* @author KholdFuzion
*/
-public class IvoryCup extends CardImpl {
+public final class IvoryCup extends CardImpl {
public IvoryCup(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/i/IvoryGiant.java b/Mage.Sets/src/mage/cards/i/IvoryGiant.java
index f539b371925..eeb9a6ad190 100644
--- a/Mage.Sets/src/mage/cards/i/IvoryGiant.java
+++ b/Mage.Sets/src/mage/cards/i/IvoryGiant.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class IvoryGiant extends CardImpl {
+public final class IvoryGiant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonwhite creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/i/IvoryGuardians.java b/Mage.Sets/src/mage/cards/i/IvoryGuardians.java
index 248fcd02bd1..3ca8a0fc4da 100644
--- a/Mage.Sets/src/mage/cards/i/IvoryGuardians.java
+++ b/Mage.Sets/src/mage/cards/i/IvoryGuardians.java
@@ -52,7 +52,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author jeffwadsworth
*/
-public class IvoryGuardians extends CardImpl {
+public final class IvoryGuardians extends CardImpl {
private static final FilterPermanent controlFilter = new FilterPermanent("nontoken red permanent");
private static final FilterCreaturePermanent boostFilter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/i/IvoryMask.java b/Mage.Sets/src/mage/cards/i/IvoryMask.java
index 51640a9904b..f9bab3213c3 100644
--- a/Mage.Sets/src/mage/cards/i/IvoryMask.java
+++ b/Mage.Sets/src/mage/cards/i/IvoryMask.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class IvoryMask extends CardImpl {
+public final class IvoryMask extends CardImpl {
public IvoryMask(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/i/IvoryTower.java b/Mage.Sets/src/mage/cards/i/IvoryTower.java
index 12010316a01..9afcdbfb1ea 100644
--- a/Mage.Sets/src/mage/cards/i/IvoryTower.java
+++ b/Mage.Sets/src/mage/cards/i/IvoryTower.java
@@ -44,7 +44,7 @@ import mage.players.Player;
* @author LoneFox
*/
-public class IvoryTower extends CardImpl {
+public final class IvoryTower extends CardImpl {
public IvoryTower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/i/IvorytuskFortress.java b/Mage.Sets/src/mage/cards/i/IvorytuskFortress.java
index c8709612d23..15e3bd0bc5f 100644
--- a/Mage.Sets/src/mage/cards/i/IvorytuskFortress.java
+++ b/Mage.Sets/src/mage/cards/i/IvorytuskFortress.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author LevelX2
*/
-public class IvorytuskFortress extends CardImpl {
+public final class IvorytuskFortress extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature you control with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/i/IvyDancer.java b/Mage.Sets/src/mage/cards/i/IvyDancer.java
index 799a813a4d4..da7bf563ebf 100644
--- a/Mage.Sets/src/mage/cards/i/IvyDancer.java
+++ b/Mage.Sets/src/mage/cards/i/IvyDancer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class IvyDancer extends CardImpl {
+public final class IvyDancer extends CardImpl {
public IvyDancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IvyElemental.java b/Mage.Sets/src/mage/cards/i/IvyElemental.java
index 89df135c4f2..f4014e73710 100644
--- a/Mage.Sets/src/mage/cards/i/IvyElemental.java
+++ b/Mage.Sets/src/mage/cards/i/IvyElemental.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author cbt33
*/
-public class IvyElemental extends CardImpl {
+public final class IvyElemental extends CardImpl {
public IvyElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IvyLaneDenizen.java b/Mage.Sets/src/mage/cards/i/IvyLaneDenizen.java
index e4871b512d9..c5e9f8b9f65 100644
--- a/Mage.Sets/src/mage/cards/i/IvyLaneDenizen.java
+++ b/Mage.Sets/src/mage/cards/i/IvyLaneDenizen.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class IvyLaneDenizen extends CardImpl {
+public final class IvyLaneDenizen extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another green creature");
static {
diff --git a/Mage.Sets/src/mage/cards/i/IwamoriOfTheOpenFist.java b/Mage.Sets/src/mage/cards/i/IwamoriOfTheOpenFist.java
index 862790d6ee0..5fd59ed3b62 100644
--- a/Mage.Sets/src/mage/cards/i/IwamoriOfTheOpenFist.java
+++ b/Mage.Sets/src/mage/cards/i/IwamoriOfTheOpenFist.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class IwamoriOfTheOpenFist extends CardImpl {
+public final class IwamoriOfTheOpenFist extends CardImpl {
public IwamoriOfTheOpenFist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IxalansBinding.java b/Mage.Sets/src/mage/cards/i/IxalansBinding.java
index 1e41ce332e2..cab6ef2977c 100644
--- a/Mage.Sets/src/mage/cards/i/IxalansBinding.java
+++ b/Mage.Sets/src/mage/cards/i/IxalansBinding.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author TheElk801
*/
-public class IxalansBinding extends CardImpl {
+public final class IxalansBinding extends CardImpl {
private final static FilterNonlandPermanent filter = new FilterNonlandPermanent();
diff --git a/Mage.Sets/src/mage/cards/i/IxallisDiviner.java b/Mage.Sets/src/mage/cards/i/IxallisDiviner.java
index f8b9eafbe73..30e5ce3bf23 100644
--- a/Mage.Sets/src/mage/cards/i/IxallisDiviner.java
+++ b/Mage.Sets/src/mage/cards/i/IxallisDiviner.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class IxallisDiviner extends CardImpl {
+public final class IxallisDiviner extends CardImpl {
public IxallisDiviner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IxallisKeeper.java b/Mage.Sets/src/mage/cards/i/IxallisKeeper.java
index 289076e484d..860a66260d6 100644
--- a/Mage.Sets/src/mage/cards/i/IxallisKeeper.java
+++ b/Mage.Sets/src/mage/cards/i/IxallisKeeper.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class IxallisKeeper extends CardImpl {
+public final class IxallisKeeper extends CardImpl {
public IxallisKeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/i/IxidorRealitySculptor.java b/Mage.Sets/src/mage/cards/i/IxidorRealitySculptor.java
index dc7f4e618b3..fa052b16bc8 100644
--- a/Mage.Sets/src/mage/cards/i/IxidorRealitySculptor.java
+++ b/Mage.Sets/src/mage/cards/i/IxidorRealitySculptor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cg5
*/
-public class IxidorRealitySculptor extends CardImpl {
+public final class IxidorRealitySculptor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Face-down creatures");
private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("face-down creature");
diff --git a/Mage.Sets/src/mage/cards/i/IxidorsWill.java b/Mage.Sets/src/mage/cards/i/IxidorsWill.java
index 195880b4b3c..277cf5b23c1 100644
--- a/Mage.Sets/src/mage/cards/i/IxidorsWill.java
+++ b/Mage.Sets/src/mage/cards/i/IxidorsWill.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author Quercitron
*/
-public class IxidorsWill extends CardImpl {
+public final class IxidorsWill extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent(SubType.WIZARD, "Wizard");
diff --git a/Mage.Sets/src/mage/cards/i/Ixidron.java b/Mage.Sets/src/mage/cards/i/Ixidron.java
index ec2c4b368ee..988016db482 100644
--- a/Mage.Sets/src/mage/cards/i/Ixidron.java
+++ b/Mage.Sets/src/mage/cards/i/Ixidron.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author LevelX2
*/
-public class Ixidron extends CardImpl {
+public final class Ixidron extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("face-down creatures on the battlefield");
private static final FilterCreaturePermanent filterTurnFaceDown = new FilterCreaturePermanent("other nontoken creatures");
diff --git a/Mage.Sets/src/mage/cards/i/IzzetBoilerworks.java b/Mage.Sets/src/mage/cards/i/IzzetBoilerworks.java
index 10935fd18b3..6eff9755ff6 100644
--- a/Mage.Sets/src/mage/cards/i/IzzetBoilerworks.java
+++ b/Mage.Sets/src/mage/cards/i/IzzetBoilerworks.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledPermanent;
/**
* @author Loki
*/
-public class IzzetBoilerworks extends CardImpl {
+public final class IzzetBoilerworks extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/i/IzzetCharm.java b/Mage.Sets/src/mage/cards/i/IzzetCharm.java
index b2213e9a0b9..17d28693e40 100644
--- a/Mage.Sets/src/mage/cards/i/IzzetCharm.java
+++ b/Mage.Sets/src/mage/cards/i/IzzetCharm.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class IzzetCharm extends CardImpl {
+public final class IzzetCharm extends CardImpl {
static private final FilterSpell filter = new FilterSpell("noncreature spell");
static {
diff --git a/Mage.Sets/src/mage/cards/i/IzzetChemister.java b/Mage.Sets/src/mage/cards/i/IzzetChemister.java
index 2663fc9d5a6..66fcac147e0 100644
--- a/Mage.Sets/src/mage/cards/i/IzzetChemister.java
+++ b/Mage.Sets/src/mage/cards/i/IzzetChemister.java
@@ -29,6 +29,7 @@ package mage.cards.i;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
@@ -43,8 +44,8 @@ import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.common.FilterOwnedCard;
@@ -60,7 +61,7 @@ import mage.target.common.TargetCardInExile;
*
* @author TheElk801
*/
-public class IzzetChemister extends CardImpl {
+public final class IzzetChemister extends CardImpl {
private static final FilterCard filter = new FilterOwnedCard("instant or sorcery card from your graveyard");
@@ -144,7 +145,7 @@ class IzzetChemisterCastFromExileEffect extends OneShotEffect {
while (cardsToExile.count(filter, game) > 0 && controller.choose(Outcome.PlayForFree, cardsToExile, target, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
cardsToExile.remove(card);
} else {
break OuterLoop;
diff --git a/Mage.Sets/src/mage/cards/i/IzzetChronarch.java b/Mage.Sets/src/mage/cards/i/IzzetChronarch.java
index 85a49bce4f9..1fc9b2f79e1 100644
--- a/Mage.Sets/src/mage/cards/i/IzzetChronarch.java
+++ b/Mage.Sets/src/mage/cards/i/IzzetChronarch.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class IzzetChronarch extends CardImpl {
+public final class IzzetChronarch extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/i/IzzetCluestone.java b/Mage.Sets/src/mage/cards/i/IzzetCluestone.java
index 389e440b056..798cd9f84d0 100644
--- a/Mage.Sets/src/mage/cards/i/IzzetCluestone.java
+++ b/Mage.Sets/src/mage/cards/i/IzzetCluestone.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*/
-public class IzzetCluestone extends CardImpl {
+public final class IzzetCluestone extends CardImpl {
public IzzetCluestone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/i/IzzetGuildgate.java b/Mage.Sets/src/mage/cards/i/IzzetGuildgate.java
index bada9c1462b..775fafff8d4 100644
--- a/Mage.Sets/src/mage/cards/i/IzzetGuildgate.java
+++ b/Mage.Sets/src/mage/cards/i/IzzetGuildgate.java
@@ -40,7 +40,7 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class IzzetGuildgate extends CardImpl {
+public final class IzzetGuildgate extends CardImpl {
public IzzetGuildgate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/i/IzzetGuildmage.java b/Mage.Sets/src/mage/cards/i/IzzetGuildmage.java
index 1133b991076..4bc01f6605c 100644
--- a/Mage.Sets/src/mage/cards/i/IzzetGuildmage.java
+++ b/Mage.Sets/src/mage/cards/i/IzzetGuildmage.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class IzzetGuildmage extends CardImpl {
+public final class IzzetGuildmage extends CardImpl {
private static final FilterSpell filterInstant = new FilterSpell("instant spell you control with converted mana cost 2 or less");
private static final FilterSpell filterSorcery = new FilterSpell("sorcery spell you control with converted mana cost 2 or less");
diff --git a/Mage.Sets/src/mage/cards/i/IzzetKeyrune.java b/Mage.Sets/src/mage/cards/i/IzzetKeyrune.java
index 8a063fa392c..2b386f025f0 100644
--- a/Mage.Sets/src/mage/cards/i/IzzetKeyrune.java
+++ b/Mage.Sets/src/mage/cards/i/IzzetKeyrune.java
@@ -52,7 +52,7 @@ import mage.players.Player;
/**
* @author LevelX2
*/
-public class IzzetKeyrune extends CardImpl {
+public final class IzzetKeyrune extends CardImpl {
public IzzetKeyrune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/i/IzzetSignet.java b/Mage.Sets/src/mage/cards/i/IzzetSignet.java
index da671b66b58..895d2565bbb 100644
--- a/Mage.Sets/src/mage/cards/i/IzzetSignet.java
+++ b/Mage.Sets/src/mage/cards/i/IzzetSignet.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class IzzetSignet extends CardImpl {
+public final class IzzetSignet extends CardImpl {
public IzzetSignet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/i/IzzetStaticaster.java b/Mage.Sets/src/mage/cards/i/IzzetStaticaster.java
index d8852b24de1..c7baa3eac67 100644
--- a/Mage.Sets/src/mage/cards/i/IzzetStaticaster.java
+++ b/Mage.Sets/src/mage/cards/i/IzzetStaticaster.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class IzzetStaticaster extends CardImpl {
+public final class IzzetStaticaster extends CardImpl {
public IzzetStaticaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JabarisBanner.java b/Mage.Sets/src/mage/cards/j/JabarisBanner.java
index 12b2968c98d..6dea05f54ee 100644
--- a/Mage.Sets/src/mage/cards/j/JabarisBanner.java
+++ b/Mage.Sets/src/mage/cards/j/JabarisBanner.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class JabarisBanner extends CardImpl {
+public final class JabarisBanner extends CardImpl {
public JabarisBanner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/j/JabbaTheHutt.java b/Mage.Sets/src/mage/cards/j/JabbaTheHutt.java
index ad958255468..61c7f7374c7 100644
--- a/Mage.Sets/src/mage/cards/j/JabbaTheHutt.java
+++ b/Mage.Sets/src/mage/cards/j/JabbaTheHutt.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class JabbaTheHutt extends CardImpl {
+public final class JabbaTheHutt extends CardImpl {
private static final FilterOpponentsCreaturePermanent filter = new FilterOpponentsCreaturePermanent("creature an opponent control with a bounty counter on it");
diff --git a/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java b/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java
index c8fddaa7ac4..c16cd803251 100644
--- a/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java
+++ b/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java
@@ -30,6 +30,7 @@ package mage.cards.j;
import java.util.ArrayList;
import java.util.Set;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.LoyaltyAbility;
@@ -43,9 +44,9 @@ import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.FilterCard;
@@ -68,7 +69,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class JaceArchitectOfThought extends CardImpl {
+public final class JaceArchitectOfThought extends CardImpl {
public JaceArchitectOfThought(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{U}{U}");
@@ -290,7 +291,7 @@ class JaceArchitectOfThoughtEffect3 extends OneShotEffect {
while (jaceExileZone.count(filter, game) > 0 && controller.choose(Outcome.PlayForFree, jaceExileZone, target, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- if (controller.cast(card.getSpellAbility(), game, true)) {
+ if (controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
game.getExile().removeCard(card, game);
}
}
diff --git a/Mage.Sets/src/mage/cards/j/JaceBeleren.java b/Mage.Sets/src/mage/cards/j/JaceBeleren.java
index 36afd9823c1..c9f4dff8ea3 100644
--- a/Mage.Sets/src/mage/cards/j/JaceBeleren.java
+++ b/Mage.Sets/src/mage/cards/j/JaceBeleren.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class JaceBeleren extends CardImpl {
+public final class JaceBeleren extends CardImpl {
public JaceBeleren(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JaceCunningCastaway.java b/Mage.Sets/src/mage/cards/j/JaceCunningCastaway.java
index 501657b9a68..51bfee9939e 100644
--- a/Mage.Sets/src/mage/cards/j/JaceCunningCastaway.java
+++ b/Mage.Sets/src/mage/cards/j/JaceCunningCastaway.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class JaceCunningCastaway extends CardImpl {
+public final class JaceCunningCastaway extends CardImpl {
public JaceCunningCastaway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JaceIngeniousMindMage.java b/Mage.Sets/src/mage/cards/j/JaceIngeniousMindMage.java
index 5d8fdb57f0e..71fd07c826e 100644
--- a/Mage.Sets/src/mage/cards/j/JaceIngeniousMindMage.java
+++ b/Mage.Sets/src/mage/cards/j/JaceIngeniousMindMage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class JaceIngeniousMindMage extends CardImpl {
+public final class JaceIngeniousMindMage extends CardImpl {
public JaceIngeniousMindMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JaceMemoryAdept.java b/Mage.Sets/src/mage/cards/j/JaceMemoryAdept.java
index c9449cfd93f..250a90de67f 100644
--- a/Mage.Sets/src/mage/cards/j/JaceMemoryAdept.java
+++ b/Mage.Sets/src/mage/cards/j/JaceMemoryAdept.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
/**
* @author nantuko
*/
-public class JaceMemoryAdept extends CardImpl {
+public final class JaceMemoryAdept extends CardImpl {
public JaceMemoryAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java b/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java
index 4c1884e2a6b..0ababbd6dc5 100644
--- a/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java
+++ b/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java
@@ -62,7 +62,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class JaceTelepathUnbound extends CardImpl {
+public final class JaceTelepathUnbound extends CardImpl {
public JaceTelepathUnbound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "");
diff --git a/Mage.Sets/src/mage/cards/j/JaceTheLivingGuildpact.java b/Mage.Sets/src/mage/cards/j/JaceTheLivingGuildpact.java
index 03a62fd8bf9..09e90570ff2 100644
--- a/Mage.Sets/src/mage/cards/j/JaceTheLivingGuildpact.java
+++ b/Mage.Sets/src/mage/cards/j/JaceTheLivingGuildpact.java
@@ -28,35 +28,31 @@
package mage.cards.j;
import java.util.UUID;
-import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.Effect;
-import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
-import mage.cards.Card;
+import mage.abilities.effects.common.ShuffleHandGraveyardAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Outcome;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterNonlandPermanent;
import mage.filter.predicate.permanent.AnotherPredicate;
-import mage.game.Game;
-import mage.players.Player;
import mage.target.TargetPermanent;
/**
*
* @author LevelX2
*/
-public class JaceTheLivingGuildpact extends CardImpl {
+public final class JaceTheLivingGuildpact extends CardImpl {
private static final FilterPermanent filter = new FilterNonlandPermanent("another target nonland permanent");
@@ -65,7 +61,7 @@ public class JaceTheLivingGuildpact extends CardImpl {
}
public JaceTheLivingGuildpact(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{2}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{U}{U}");
this.addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.JACE);
@@ -83,7 +79,8 @@ public class JaceTheLivingGuildpact extends CardImpl {
this.addAbility(ability);
// -8: Each player shuffles their hand and graveyard into their library. You draw seven cards.
- this.addAbility(new LoyaltyAbility(new JaceTheLivingGuildpactEffect(), -8));
+ ability = new LoyaltyAbility(new ShuffleHandGraveyardAllEffect(), -8);
+ ability.addEffect(new DrawCardSourceControllerEffect(7).setText("You draw seven cards"));
}
@@ -96,45 +93,3 @@ public class JaceTheLivingGuildpact extends CardImpl {
return new JaceTheLivingGuildpact(this);
}
}
-
-class JaceTheLivingGuildpactEffect extends OneShotEffect {
-
- public JaceTheLivingGuildpactEffect() {
- super(Outcome.Neutral);
- staticText = "Each player shuffles their hand and graveyard into their library. You draw seven cards";
- }
-
- public JaceTheLivingGuildpactEffect(final JaceTheLivingGuildpactEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player controller = game.getPlayer(source.getControllerId());
- if (controller != null) {
- for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- for (Card card : player.getHand().getCards(game)) {
- card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true);
- }
- for (Card card : player.getGraveyard().getCards(game)) {
- card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true);
- }
- player.shuffleLibrary(source, game);
- }
- }
- controller.drawCards(7, game);
- return true;
-
- }
- return false;
-
- }
-
- @Override
- public JaceTheLivingGuildpactEffect copy() {
- return new JaceTheLivingGuildpactEffect(this);
- }
-
-}
diff --git a/Mage.Sets/src/mage/cards/j/JaceTheMindSculptor.java b/Mage.Sets/src/mage/cards/j/JaceTheMindSculptor.java
index 61a784f0842..88a5ddad7e9 100644
--- a/Mage.Sets/src/mage/cards/j/JaceTheMindSculptor.java
+++ b/Mage.Sets/src/mage/cards/j/JaceTheMindSculptor.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class JaceTheMindSculptor extends CardImpl {
+public final class JaceTheMindSculptor extends CardImpl {
public JaceTheMindSculptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java b/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java
index f48f975a46f..d6b1f642cd7 100644
--- a/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java
+++ b/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java
@@ -50,7 +50,7 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author LevelX2
*/
-public class JaceUnravelerOfSecrets extends CardImpl {
+public final class JaceUnravelerOfSecrets extends CardImpl {
public JaceUnravelerOfSecrets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JaceVrynsProdigy.java b/Mage.Sets/src/mage/cards/j/JaceVrynsProdigy.java
index d5a1dab2642..455d2fcf2c3 100644
--- a/Mage.Sets/src/mage/cards/j/JaceVrynsProdigy.java
+++ b/Mage.Sets/src/mage/cards/j/JaceVrynsProdigy.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class JaceVrynsProdigy extends CardImpl {
+public final class JaceVrynsProdigy extends CardImpl {
public JaceVrynsProdigy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JacesArchivist.java b/Mage.Sets/src/mage/cards/j/JacesArchivist.java
index ddda9cfcc0d..dae7d44338b 100644
--- a/Mage.Sets/src/mage/cards/j/JacesArchivist.java
+++ b/Mage.Sets/src/mage/cards/j/JacesArchivist.java
@@ -47,7 +47,7 @@ import mage.players.Player;
/**
* @author Loki
*/
-public class JacesArchivist extends CardImpl {
+public final class JacesArchivist extends CardImpl {
public JacesArchivist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JacesDefeat.java b/Mage.Sets/src/mage/cards/j/JacesDefeat.java
index 225ee8b5432..91e29b06312 100644
--- a/Mage.Sets/src/mage/cards/j/JacesDefeat.java
+++ b/Mage.Sets/src/mage/cards/j/JacesDefeat.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class JacesDefeat extends CardImpl {
+public final class JacesDefeat extends CardImpl {
private static final FilterSpell filter = new FilterSpell("blue spell");
diff --git a/Mage.Sets/src/mage/cards/j/JacesErasure.java b/Mage.Sets/src/mage/cards/j/JacesErasure.java
index 3fdf209f2a0..739c8fe3204 100644
--- a/Mage.Sets/src/mage/cards/j/JacesErasure.java
+++ b/Mage.Sets/src/mage/cards/j/JacesErasure.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class JacesErasure extends CardImpl {
+public final class JacesErasure extends CardImpl {
public JacesErasure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JacesIngenuity.java b/Mage.Sets/src/mage/cards/j/JacesIngenuity.java
index 3ee27739928..65c16d8ab69 100644
--- a/Mage.Sets/src/mage/cards/j/JacesIngenuity.java
+++ b/Mage.Sets/src/mage/cards/j/JacesIngenuity.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class JacesIngenuity extends CardImpl {
+public final class JacesIngenuity extends CardImpl {
public JacesIngenuity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JacesMindseeker.java b/Mage.Sets/src/mage/cards/j/JacesMindseeker.java
index 0df0bc549e8..62dd902a10c 100644
--- a/Mage.Sets/src/mage/cards/j/JacesMindseeker.java
+++ b/Mage.Sets/src/mage/cards/j/JacesMindseeker.java
@@ -31,6 +31,7 @@ import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -41,8 +42,8 @@ import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.common.FilterInstantOrSorceryCard;
@@ -55,7 +56,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class JacesMindseeker extends CardImpl {
+public final class JacesMindseeker extends CardImpl {
public JacesMindseeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
@@ -132,7 +133,7 @@ class JaceMindseekerEffect extends OneShotEffect {
&& controller.choose(outcome, cardsToCast, target, game)) {
Card card = cardsToCast.get(target.getFirstTarget(), game);
if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/j/JacesPhantasm.java b/Mage.Sets/src/mage/cards/j/JacesPhantasm.java
index 0bc5e9962f9..d81956f61d0 100644
--- a/Mage.Sets/src/mage/cards/j/JacesPhantasm.java
+++ b/Mage.Sets/src/mage/cards/j/JacesPhantasm.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class JacesPhantasm extends CardImpl {
+public final class JacesPhantasm extends CardImpl {
public JacesPhantasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JacesSanctum.java b/Mage.Sets/src/mage/cards/j/JacesSanctum.java
index 0acd517e84e..149e035464f 100644
--- a/Mage.Sets/src/mage/cards/j/JacesSanctum.java
+++ b/Mage.Sets/src/mage/cards/j/JacesSanctum.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class JacesSanctum extends CardImpl {
+public final class JacesSanctum extends CardImpl {
private static final FilterCard filter = new FilterCard("Instant and sorcery spells");
diff --git a/Mage.Sets/src/mage/cards/j/JacesScrutiny.java b/Mage.Sets/src/mage/cards/j/JacesScrutiny.java
index d75a5dc83ed..ed271fbfcd2 100644
--- a/Mage.Sets/src/mage/cards/j/JacesScrutiny.java
+++ b/Mage.Sets/src/mage/cards/j/JacesScrutiny.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class JacesScrutiny extends CardImpl {
+public final class JacesScrutiny extends CardImpl {
public JacesScrutiny(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JacesSentinel.java b/Mage.Sets/src/mage/cards/j/JacesSentinel.java
index 5d27ac6b601..bfcd0558d10 100644
--- a/Mage.Sets/src/mage/cards/j/JacesSentinel.java
+++ b/Mage.Sets/src/mage/cards/j/JacesSentinel.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class JacesSentinel extends CardImpl {
+public final class JacesSentinel extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Jace planeswalker");
diff --git a/Mage.Sets/src/mage/cards/j/JackInTheMox.java b/Mage.Sets/src/mage/cards/j/JackInTheMox.java
index 9742dc5c6df..500ce781afd 100644
--- a/Mage.Sets/src/mage/cards/j/JackInTheMox.java
+++ b/Mage.Sets/src/mage/cards/j/JackInTheMox.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class JackInTheMox extends CardImpl {
+public final class JackInTheMox extends CardImpl {
public JackInTheMox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{0}");
diff --git a/Mage.Sets/src/mage/cards/j/JackalFamiliar.java b/Mage.Sets/src/mage/cards/j/JackalFamiliar.java
index 0df2a26a270..f89602e801c 100644
--- a/Mage.Sets/src/mage/cards/j/JackalFamiliar.java
+++ b/Mage.Sets/src/mage/cards/j/JackalFamiliar.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author magenoxx_at_gmail.com
*/
-public class JackalFamiliar extends CardImpl {
+public final class JackalFamiliar extends CardImpl {
public JackalFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JackalPup.java b/Mage.Sets/src/mage/cards/j/JackalPup.java
index f4984ef300f..a9e5388a65f 100644
--- a/Mage.Sets/src/mage/cards/j/JackalPup.java
+++ b/Mage.Sets/src/mage/cards/j/JackalPup.java
@@ -46,7 +46,7 @@ import mage.players.Player;
* @author jeffwadsworth
*
*/
-public class JackalPup extends CardImpl {
+public final class JackalPup extends CardImpl {
public JackalPup(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JackalopeHerd.java b/Mage.Sets/src/mage/cards/j/JackalopeHerd.java
index b0dd86ccd98..4fd33dc28d7 100644
--- a/Mage.Sets/src/mage/cards/j/JackalopeHerd.java
+++ b/Mage.Sets/src/mage/cards/j/JackalopeHerd.java
@@ -41,7 +41,7 @@ import mage.filter.FilterSpell;
*
* @author LoneFox
*/
-public class JackalopeHerd extends CardImpl {
+public final class JackalopeHerd extends CardImpl {
public JackalopeHerd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JacquesLeVert.java b/Mage.Sets/src/mage/cards/j/JacquesLeVert.java
index 68e70f71974..0db662cf96d 100644
--- a/Mage.Sets/src/mage/cards/j/JacquesLeVert.java
+++ b/Mage.Sets/src/mage/cards/j/JacquesLeVert.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class JacquesLeVert extends CardImpl {
+public final class JacquesLeVert extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Green creatures");
diff --git a/Mage.Sets/src/mage/cards/j/JaddiLifestrider.java b/Mage.Sets/src/mage/cards/j/JaddiLifestrider.java
index 8a24fe5c355..8b73c24572d 100644
--- a/Mage.Sets/src/mage/cards/j/JaddiLifestrider.java
+++ b/Mage.Sets/src/mage/cards/j/JaddiLifestrider.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class JaddiLifestrider extends CardImpl {
+public final class JaddiLifestrider extends CardImpl {
public JaddiLifestrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JaddiOffshoot.java b/Mage.Sets/src/mage/cards/j/JaddiOffshoot.java
index 678feec5b91..5fcef0c5475 100644
--- a/Mage.Sets/src/mage/cards/j/JaddiOffshoot.java
+++ b/Mage.Sets/src/mage/cards/j/JaddiOffshoot.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class JaddiOffshoot extends CardImpl {
+public final class JaddiOffshoot extends CardImpl {
public JaddiOffshoot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JadeBearer.java b/Mage.Sets/src/mage/cards/j/JadeBearer.java
index 8a2af9d6a7f..0cc0a573294 100644
--- a/Mage.Sets/src/mage/cards/j/JadeBearer.java
+++ b/Mage.Sets/src/mage/cards/j/JadeBearer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JayDi85
*/
-public class JadeBearer extends CardImpl {
+public final class JadeBearer extends CardImpl {
private static final FilterCreaturePermanent filterYourAnotherMerfolk = new FilterCreaturePermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/j/JadeGuardian.java b/Mage.Sets/src/mage/cards/j/JadeGuardian.java
index 00ec9d541ed..32d5f055e85 100644
--- a/Mage.Sets/src/mage/cards/j/JadeGuardian.java
+++ b/Mage.Sets/src/mage/cards/j/JadeGuardian.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class JadeGuardian extends CardImpl {
+public final class JadeGuardian extends CardImpl {
public JadeGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JadeIdol.java b/Mage.Sets/src/mage/cards/j/JadeIdol.java
index babb7d2c666..bd8287e0b27 100644
--- a/Mage.Sets/src/mage/cards/j/JadeIdol.java
+++ b/Mage.Sets/src/mage/cards/j/JadeIdol.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.Token;
/**
* @author Loki
*/
-public class JadeIdol extends CardImpl {
+public final class JadeIdol extends CardImpl {
public JadeIdol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/j/JadeLeech.java b/Mage.Sets/src/mage/cards/j/JadeLeech.java
index ffa3fae6406..b6fa9647b6f 100644
--- a/Mage.Sets/src/mage/cards/j/JadeLeech.java
+++ b/Mage.Sets/src/mage/cards/j/JadeLeech.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class JadeLeech extends CardImpl {
+public final class JadeLeech extends CardImpl {
private static final FilterCard filter = new FilterCard("Green spells");
diff --git a/Mage.Sets/src/mage/cards/j/JadeMage.java b/Mage.Sets/src/mage/cards/j/JadeMage.java
index cf6f0e6775c..5df27ef30b7 100644
--- a/Mage.Sets/src/mage/cards/j/JadeMage.java
+++ b/Mage.Sets/src/mage/cards/j/JadeMage.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.SaprolingToken;
/**
* @author Loki
*/
-public class JadeMage extends CardImpl {
+public final class JadeMage extends CardImpl {
public JadeMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JadeMonolith.java b/Mage.Sets/src/mage/cards/j/JadeMonolith.java
index b6a4b86ee7b..c1b59e092df 100644
--- a/Mage.Sets/src/mage/cards/j/JadeMonolith.java
+++ b/Mage.Sets/src/mage/cards/j/JadeMonolith.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class JadeMonolith extends CardImpl {
+public final class JadeMonolith extends CardImpl {
public JadeMonolith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/j/JadeStatue.java b/Mage.Sets/src/mage/cards/j/JadeStatue.java
index 8ce07b711d3..8ffc5221999 100644
--- a/Mage.Sets/src/mage/cards/j/JadeStatue.java
+++ b/Mage.Sets/src/mage/cards/j/JadeStatue.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.Token;
*
* @author anonymous
*/
-public class JadeStatue extends CardImpl {
+public final class JadeStatue extends CardImpl {
public JadeStatue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/j/JadecraftArtisan.java b/Mage.Sets/src/mage/cards/j/JadecraftArtisan.java
index 1a6317d6d38..1e12bd7f7d2 100644
--- a/Mage.Sets/src/mage/cards/j/JadecraftArtisan.java
+++ b/Mage.Sets/src/mage/cards/j/JadecraftArtisan.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JayDi85
*/
-public class JadecraftArtisan extends CardImpl {
+public final class JadecraftArtisan extends CardImpl {
public JadecraftArtisan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage/src/main/java/mage/abilities/effects/common/PutLandFromHandOntoBattlefieldEffect.java b/Mage.Sets/src/mage/cards/j/JadedResponse.java
similarity index 52%
rename from Mage/src/main/java/mage/abilities/effects/common/PutLandFromHandOntoBattlefieldEffect.java
rename to Mage.Sets/src/mage/cards/j/JadedResponse.java
index 45edec3a94e..837ccefa4bd 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/PutLandFromHandOntoBattlefieldEffect.java
+++ b/Mage.Sets/src/mage/cards/j/JadedResponse.java
@@ -25,72 +25,74 @@
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
-package mage.abilities.effects.common;
+package mage.cards.j;
+import java.util.UUID;
+import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
-import mage.cards.Card;
+import mage.abilities.effects.common.CounterTargetEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
import mage.constants.Outcome;
-import mage.constants.Zone;
-import mage.filter.FilterCard;
-import mage.filter.common.FilterLandCard;
+import mage.filter.StaticFilters;
import mage.game.Game;
-import mage.players.Player;
-import mage.target.Target;
-import mage.target.common.TargetCardInHand;
+import mage.game.permanent.Permanent;
+import mage.game.stack.StackObject;
/**
*
- * @author LevelX2
+ * @author TheElk801
*/
-public class PutLandFromHandOntoBattlefieldEffect extends OneShotEffect {
+public final class JadedResponse extends CardImpl {
- private FilterCard filter;
- private boolean tapped;
+ public JadedResponse(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
- public PutLandFromHandOntoBattlefieldEffect() {
- this(false);
+ // Counter target spell if it shares a color with a creature you control.
+ this.getSpellAbility().addEffect(new JadedResponseEffect());
}
- public PutLandFromHandOntoBattlefieldEffect(boolean tapped) {
- this(tapped, new FilterLandCard());
+ public JadedResponse(final JadedResponse card) {
+ super(card);
}
- public PutLandFromHandOntoBattlefieldEffect(boolean tapped, FilterCard filter) {
- super(Outcome.PutLandInPlay);
- this.tapped = tapped;
- this.filter = filter;
- staticText = "you may put a " + filter.getMessage() + " from your hand onto the battlefield" + (tapped ? " tapped" : "");
+ @Override
+ public JadedResponse copy() {
+ return new JadedResponse(this);
+ }
+}
+
+class JadedResponseEffect extends OneShotEffect {
+
+ JadedResponseEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Counter target spell if it shares a color with a creature you control";
}
- public PutLandFromHandOntoBattlefieldEffect(final PutLandFromHandOntoBattlefieldEffect effect) {
+ JadedResponseEffect(final JadedResponseEffect effect) {
super(effect);
- this.tapped = effect.tapped;
- this.filter = effect.filter;
+ }
+
+ @Override
+ public JadedResponseEffect copy() {
+ return new JadedResponseEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
- Player controller = game.getPlayer(source.getControllerId());
- if (controller != null) {
- Target target = new TargetCardInHand(filter);
- if (target.canChoose(source.getSourceId(), source.getControllerId(), game)
- && controller.chooseUse(outcome, "Put land onto battlefield?", source, game)
- && controller.choose(outcome, target, source.getSourceId(), game)) {
- Card card = game.getCard(target.getFirstTarget());
- if (card != null) {
- controller.moveCards(card, Zone.BATTLEFIELD, source, game, tapped, false, false, null);
- }
+ StackObject stackObject = game.getStack().getStackObject(source.getFirstTarget());
+ if (stackObject == null) {
+ return false;
+ }
+ ObjectColor creatureColors = new ObjectColor();
+ for (Permanent creature : game.getBattlefield().getActivePermanents(StaticFilters.FILTER_CONTROLLED_CREATURES, source.getControllerId(), game)) {
+ creatureColors = creatureColors.union(creature.getColor(game));
+ if (!creatureColors.intersection(stackObject.getColor(game)).isColorless()) {
+ return new CounterTargetEffect().apply(game, source);
}
- return true;
}
return false;
-
}
-
- @Override
- public PutLandFromHandOntoBattlefieldEffect copy() {
- return new PutLandFromHandOntoBattlefieldEffect(this);
- }
-
}
diff --git a/Mage.Sets/src/mage/cards/j/JadelightRanger.java b/Mage.Sets/src/mage/cards/j/JadelightRanger.java
index 07e4227f1bb..4bfc980a9eb 100644
--- a/Mage.Sets/src/mage/cards/j/JadelightRanger.java
+++ b/Mage.Sets/src/mage/cards/j/JadelightRanger.java
@@ -1,68 +1,68 @@
-/*
- * 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.Ability;
-import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.keyword.ExploreSourceEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.SubType;
-
-/**
- *
- * @author LevelX2
- */
-public class JadelightRanger extends CardImpl {
-
- public JadelightRanger(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
-
- this.subtype.add(SubType.MERFOLK);
- this.subtype.add(SubType.SCOUT);
- this.power = new MageInt(2);
- this.toughness = new MageInt(1);
-
- // When Jadelight Ranger enters the battlefield, it explores, then it explores again.
- Ability ability = new EntersBattlefieldTriggeredAbility(new ExploreSourceEffect().setText("it explores"), false);
- ability.addEffect(new ExploreSourceEffect().setText(", then it explores again. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard. Then repeat this process.) "));
- this.addAbility(ability);
- }
-
- public JadelightRanger(final JadelightRanger card) {
- super(card);
- }
-
- @Override
- public JadelightRanger copy() {
- return new JadelightRanger(this);
- }
-}
+/*
+ * 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.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.keyword.ExploreSourceEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class JadelightRanger extends CardImpl {
+
+ public JadelightRanger(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
+
+ this.subtype.add(SubType.MERFOLK);
+ this.subtype.add(SubType.SCOUT);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(1);
+
+ // When Jadelight Ranger enters the battlefield, it explores, then it explores again.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new ExploreSourceEffect().setText("it explores"), false);
+ ability.addEffect(new ExploreSourceEffect().setText(", then it explores again. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard. Then repeat this process.) "));
+ this.addAbility(ability);
+ }
+
+ public JadelightRanger(final JadelightRanger card) {
+ super(card);
+ }
+
+ @Override
+ public JadelightRanger copy() {
+ return new JadelightRanger(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/j/JaggedLightning.java b/Mage.Sets/src/mage/cards/j/JaggedLightning.java
index f76c661d508..0a088bcfe83 100644
--- a/Mage.Sets/src/mage/cards/j/JaggedLightning.java
+++ b/Mage.Sets/src/mage/cards/j/JaggedLightning.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class JaggedLightning extends CardImpl {
+public final class JaggedLightning extends CardImpl {
public JaggedLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JaggedPoppet.java b/Mage.Sets/src/mage/cards/j/JaggedPoppet.java
index b4828248895..9631909ad96 100644
--- a/Mage.Sets/src/mage/cards/j/JaggedPoppet.java
+++ b/Mage.Sets/src/mage/cards/j/JaggedPoppet.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author jerekwilson
*/
-public class JaggedPoppet extends CardImpl {
+public final class JaggedPoppet extends CardImpl {
public JaggedPoppet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java b/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java
index 32a0895072a..97c69124c31 100644
--- a/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java
+++ b/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class JaggedScarArchers extends CardImpl {
+public final class JaggedScarArchers extends CardImpl {
private static final FilterCreaturePermanent flyingCreatureFilter = new FilterCreaturePermanent("creature with flying");
private static final FilterControlledPermanent controlledElvesFilter = new FilterControlledPermanent("Elves you control");
diff --git a/Mage.Sets/src/mage/cards/j/JagwaspSwarm.java b/Mage.Sets/src/mage/cards/j/JagwaspSwarm.java
index 699ecc167d2..b57cbef7378 100644
--- a/Mage.Sets/src/mage/cards/j/JagwaspSwarm.java
+++ b/Mage.Sets/src/mage/cards/j/JagwaspSwarm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class JagwaspSwarm extends CardImpl {
+public final class JagwaspSwarm extends CardImpl {
public JagwaspSwarm (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/j/JaliraMasterPolymorphist.java b/Mage.Sets/src/mage/cards/j/JaliraMasterPolymorphist.java
index f4d2c67dab2..0f7554e75b0 100644
--- a/Mage.Sets/src/mage/cards/j/JaliraMasterPolymorphist.java
+++ b/Mage.Sets/src/mage/cards/j/JaliraMasterPolymorphist.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class JaliraMasterPolymorphist extends CardImpl {
+public final class JaliraMasterPolymorphist extends CardImpl {
private static final FilterCreatureCard filterCard = new FilterCreatureCard("nonlegendary creature card");
diff --git a/Mage.Sets/src/mage/cards/j/JalumTome.java b/Mage.Sets/src/mage/cards/j/JalumTome.java
index 2858a0ad713..559d5f8965e 100644
--- a/Mage.Sets/src/mage/cards/j/JalumTome.java
+++ b/Mage.Sets/src/mage/cards/j/JalumTome.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class JalumTome extends CardImpl {
+public final class JalumTome extends CardImpl {
public JalumTome(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/j/JamuraanLion.java b/Mage.Sets/src/mage/cards/j/JamuraanLion.java
index 12086ccabcf..183c99247a3 100644
--- a/Mage.Sets/src/mage/cards/j/JamuraanLion.java
+++ b/Mage.Sets/src/mage/cards/j/JamuraanLion.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class JamuraanLion extends CardImpl {
+public final class JamuraanLion extends CardImpl {
public JamuraanLion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JandorsRing.java b/Mage.Sets/src/mage/cards/j/JandorsRing.java
index 8a2d7581659..b1e044b7d51 100644
--- a/Mage.Sets/src/mage/cards/j/JandorsRing.java
+++ b/Mage.Sets/src/mage/cards/j/JandorsRing.java
@@ -55,7 +55,7 @@ import mage.watchers.Watcher;
/**
* @author MarcoMarin
*/
-public class JandorsRing extends CardImpl {
+public final class JandorsRing extends CardImpl {
public JandorsRing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/j/JandorsSaddlebags.java b/Mage.Sets/src/mage/cards/j/JandorsSaddlebags.java
index c8615adeb71..9a8809da3f4 100644
--- a/Mage.Sets/src/mage/cards/j/JandorsSaddlebags.java
+++ b/Mage.Sets/src/mage/cards/j/JandorsSaddlebags.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author KholdFuzion
*/
-public class JandorsSaddlebags extends CardImpl {
+public final class JandorsSaddlebags extends CardImpl {
public JandorsSaddlebags(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/j/JangoFett.java b/Mage.Sets/src/mage/cards/j/JangoFett.java
index 1f62423053a..9a3bbaef883 100644
--- a/Mage.Sets/src/mage/cards/j/JangoFett.java
+++ b/Mage.Sets/src/mage/cards/j/JangoFett.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo/spjspj
*/
-public class JangoFett extends CardImpl {
+public final class JangoFett extends CardImpl {
public JangoFett(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JanjeetSentry.java b/Mage.Sets/src/mage/cards/j/JanjeetSentry.java
index 99f1f6ec3bd..13a5da3487a 100644
--- a/Mage.Sets/src/mage/cards/j/JanjeetSentry.java
+++ b/Mage.Sets/src/mage/cards/j/JanjeetSentry.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class JanjeetSentry extends CardImpl {
+public final class JanjeetSentry extends CardImpl {
public JanjeetSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JarJarBinks.java b/Mage.Sets/src/mage/cards/j/JarJarBinks.java
index 228e7879d70..975ef0237a4 100644
--- a/Mage.Sets/src/mage/cards/j/JarJarBinks.java
+++ b/Mage.Sets/src/mage/cards/j/JarJarBinks.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponent;
*
* @author Styxo
*/
-public class JarJarBinks extends CardImpl {
+public final class JarJarBinks extends CardImpl {
public JarJarBinks(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JarKaiBattleStance.java b/Mage.Sets/src/mage/cards/j/JarKaiBattleStance.java
index 4e328f9cc4b..6ee81d5ee9e 100644
--- a/Mage.Sets/src/mage/cards/j/JarKaiBattleStance.java
+++ b/Mage.Sets/src/mage/cards/j/JarKaiBattleStance.java
@@ -46,7 +46,7 @@ import mage.util.SubTypeList;
*
* @author Styxo
*/
-public class JarKaiBattleStance extends CardImpl {
+public final class JarKaiBattleStance extends CardImpl {
public JarKaiBattleStance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JarOfEyeballs.java b/Mage.Sets/src/mage/cards/j/JarOfEyeballs.java
index d52c3d76667..67a05ff2dbb 100644
--- a/Mage.Sets/src/mage/cards/j/JarOfEyeballs.java
+++ b/Mage.Sets/src/mage/cards/j/JarOfEyeballs.java
@@ -58,7 +58,7 @@ import mage.target.TargetCard;
*
* @author North
*/
-public class JarOfEyeballs extends CardImpl {
+public final class JarOfEyeballs extends CardImpl {
public JarOfEyeballs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/j/JaradGolgariLichLord.java b/Mage.Sets/src/mage/cards/j/JaradGolgariLichLord.java
index bee51ab341b..4d2233bee95 100644
--- a/Mage.Sets/src/mage/cards/j/JaradGolgariLichLord.java
+++ b/Mage.Sets/src/mage/cards/j/JaradGolgariLichLord.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class JaradGolgariLichLord extends CardImpl {
+public final class JaradGolgariLichLord extends CardImpl {
private static final FilterControlledPermanent filterSwamp = new FilterControlledPermanent("a Swamp");
private static final FilterControlledPermanent filterForest = new FilterControlledPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/j/JaradsOrders.java b/Mage.Sets/src/mage/cards/j/JaradsOrders.java
index f9a2c5a8e09..ee1016dda15 100644
--- a/Mage.Sets/src/mage/cards/j/JaradsOrders.java
+++ b/Mage.Sets/src/mage/cards/j/JaradsOrders.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class JaradsOrders extends CardImpl {
+public final class JaradsOrders extends CardImpl {
public JaradsOrders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JarethLeonineTitan.java b/Mage.Sets/src/mage/cards/j/JarethLeonineTitan.java
index 9fbf0d29d24..60a97047727 100644
--- a/Mage.Sets/src/mage/cards/j/JarethLeonineTitan.java
+++ b/Mage.Sets/src/mage/cards/j/JarethLeonineTitan.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class JarethLeonineTitan extends CardImpl {
+public final class JarethLeonineTitan extends CardImpl {
public JarethLeonineTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JasmineBoreal.java b/Mage.Sets/src/mage/cards/j/JasmineBoreal.java
index 7407546e639..d187b033fd6 100644
--- a/Mage.Sets/src/mage/cards/j/JasmineBoreal.java
+++ b/Mage.Sets/src/mage/cards/j/JasmineBoreal.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class JasmineBoreal extends CardImpl {
+public final class JasmineBoreal extends CardImpl {
public JasmineBoreal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JawboneSkulkin.java b/Mage.Sets/src/mage/cards/j/JawboneSkulkin.java
index 546810503a5..3256db248e7 100644
--- a/Mage.Sets/src/mage/cards/j/JawboneSkulkin.java
+++ b/Mage.Sets/src/mage/cards/j/JawboneSkulkin.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class JawboneSkulkin extends CardImpl {
+public final class JawboneSkulkin extends CardImpl {
private static final FilterCreaturePermanent filterRedCreature = new FilterCreaturePermanent("red creature");
diff --git a/Mage.Sets/src/mage/cards/j/JawsOfStone.java b/Mage.Sets/src/mage/cards/j/JawsOfStone.java
index d929511bf45..70db1048a87 100644
--- a/Mage.Sets/src/mage/cards/j/JawsOfStone.java
+++ b/Mage.Sets/src/mage/cards/j/JawsOfStone.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author jeffwadsworth
*/
-public class JawsOfStone extends CardImpl {
+public final class JawsOfStone extends CardImpl {
static final private FilterControlledLandPermanent filter = new FilterControlledLandPermanent("mountains you control");
diff --git a/Mage.Sets/src/mage/cards/j/JayaBallard.java b/Mage.Sets/src/mage/cards/j/JayaBallard.java
index 7a6340b9ba7..23c091361b9 100644
--- a/Mage.Sets/src/mage/cards/j/JayaBallard.java
+++ b/Mage.Sets/src/mage/cards/j/JayaBallard.java
@@ -54,7 +54,7 @@ import mage.watchers.common.CastFromGraveyardWatcher;
*
* @author LevelX2
*/
-public class JayaBallard extends CardImpl {
+public final class JayaBallard extends CardImpl {
public JayaBallard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JayaBallardTaskMage.java b/Mage.Sets/src/mage/cards/j/JayaBallardTaskMage.java
index 202c8d05a6d..52c243a7b48 100644
--- a/Mage.Sets/src/mage/cards/j/JayaBallardTaskMage.java
+++ b/Mage.Sets/src/mage/cards/j/JayaBallardTaskMage.java
@@ -55,7 +55,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author LevelX2
*/
-public class JayaBallardTaskMage extends CardImpl {
+public final class JayaBallardTaskMage extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("blue permanent");
diff --git a/Mage.Sets/src/mage/cards/j/JayasImmolatingInferno.java b/Mage.Sets/src/mage/cards/j/JayasImmolatingInferno.java
index c807711e98e..8240592a9e7 100644
--- a/Mage.Sets/src/mage/cards/j/JayasImmolatingInferno.java
+++ b/Mage.Sets/src/mage/cards/j/JayasImmolatingInferno.java
@@ -15,7 +15,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author JRHerlehy Created on 4/8/18.
*/
-public class JayasImmolatingInferno extends CardImpl {
+public final class JayasImmolatingInferno extends CardImpl {
public JayasImmolatingInferno(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JayemdaeTome.java b/Mage.Sets/src/mage/cards/j/JayemdaeTome.java
index 89617454b3e..b2a7d768db8 100644
--- a/Mage.Sets/src/mage/cards/j/JayemdaeTome.java
+++ b/Mage.Sets/src/mage/cards/j/JayemdaeTome.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class JayemdaeTome extends CardImpl {
+public final class JayemdaeTome extends CardImpl {
public JayemdaeTome(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/j/JazalGoldmane.java b/Mage.Sets/src/mage/cards/j/JazalGoldmane.java
index 799f5d2d710..e1bfa376a24 100644
--- a/Mage.Sets/src/mage/cards/j/JazalGoldmane.java
+++ b/Mage.Sets/src/mage/cards/j/JazalGoldmane.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author LevelX2
*/
-public class JazalGoldmane extends CardImpl {
+public final class JazalGoldmane extends CardImpl {
public JazalGoldmane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JediBattleHealer.java b/Mage.Sets/src/mage/cards/j/JediBattleHealer.java
index f5109fcb02a..1d9673c81c2 100644
--- a/Mage.Sets/src/mage/cards/j/JediBattleHealer.java
+++ b/Mage.Sets/src/mage/cards/j/JediBattleHealer.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class JediBattleHealer extends CardImpl {
+public final class JediBattleHealer extends CardImpl {
public JediBattleHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JediBattleMage.java b/Mage.Sets/src/mage/cards/j/JediBattleMage.java
index 0b6f5145e2d..7259dc95525 100644
--- a/Mage.Sets/src/mage/cards/j/JediBattleMage.java
+++ b/Mage.Sets/src/mage/cards/j/JediBattleMage.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class JediBattleMage extends CardImpl {
+public final class JediBattleMage extends CardImpl {
public JediBattleMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JediBattleSage.java b/Mage.Sets/src/mage/cards/j/JediBattleSage.java
index c5b88ae4925..d95693b8bfe 100644
--- a/Mage.Sets/src/mage/cards/j/JediBattleSage.java
+++ b/Mage.Sets/src/mage/cards/j/JediBattleSage.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class JediBattleSage extends CardImpl {
+public final class JediBattleSage extends CardImpl {
public JediBattleSage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JediEnclave.java b/Mage.Sets/src/mage/cards/j/JediEnclave.java
index 3d8de85f884..92cece4f349 100644
--- a/Mage.Sets/src/mage/cards/j/JediEnclave.java
+++ b/Mage.Sets/src/mage/cards/j/JediEnclave.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class JediEnclave extends CardImpl {
+public final class JediEnclave extends CardImpl {
public JediEnclave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/j/JediHolocron.java b/Mage.Sets/src/mage/cards/j/JediHolocron.java
index 1045a9f3029..6e7c5612371 100644
--- a/Mage.Sets/src/mage/cards/j/JediHolocron.java
+++ b/Mage.Sets/src/mage/cards/j/JediHolocron.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class JediHolocron extends CardImpl {
+public final class JediHolocron extends CardImpl {
public JediHolocron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/j/JediInquirer.java b/Mage.Sets/src/mage/cards/j/JediInquirer.java
index 1a26367a25a..0da82b9a042 100644
--- a/Mage.Sets/src/mage/cards/j/JediInquirer.java
+++ b/Mage.Sets/src/mage/cards/j/JediInquirer.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Styxo
*/
-public class JediInquirer extends CardImpl {
+public final class JediInquirer extends CardImpl {
public JediInquirer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JediInstructor.java b/Mage.Sets/src/mage/cards/j/JediInstructor.java
index ca004227e62..2213f177fa3 100644
--- a/Mage.Sets/src/mage/cards/j/JediInstructor.java
+++ b/Mage.Sets/src/mage/cards/j/JediInstructor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class JediInstructor extends CardImpl {
+public final class JediInstructor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/j/JediKnight.java b/Mage.Sets/src/mage/cards/j/JediKnight.java
index 495ff886555..bbf804c2241 100644
--- a/Mage.Sets/src/mage/cards/j/JediKnight.java
+++ b/Mage.Sets/src/mage/cards/j/JediKnight.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author Styxo
*/
-public class JediKnight extends CardImpl {
+public final class JediKnight extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanent you don't control");
diff --git a/Mage.Sets/src/mage/cards/j/JediMindTrick.java b/Mage.Sets/src/mage/cards/j/JediMindTrick.java
index 07c2fe731d3..5a444f472db 100644
--- a/Mage.Sets/src/mage/cards/j/JediMindTrick.java
+++ b/Mage.Sets/src/mage/cards/j/JediMindTrick.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class JediMindTrick extends CardImpl {
+public final class JediMindTrick extends CardImpl {
public JediMindTrick(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JediSentinel.java b/Mage.Sets/src/mage/cards/j/JediSentinel.java
index e0e663c02c0..bc1d0ca7537 100644
--- a/Mage.Sets/src/mage/cards/j/JediSentinel.java
+++ b/Mage.Sets/src/mage/cards/j/JediSentinel.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class JediSentinel extends CardImpl {
+public final class JediSentinel extends CardImpl {
private static final FilterControlledCreaturePermanent filter1 = new FilterControlledCreaturePermanent("another target creature you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/j/JediStarfighter.java b/Mage.Sets/src/mage/cards/j/JediStarfighter.java
index aff6412efaa..889ea6f3de2 100644
--- a/Mage.Sets/src/mage/cards/j/JediStarfighter.java
+++ b/Mage.Sets/src/mage/cards/j/JediStarfighter.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class JediStarfighter extends CardImpl {
+public final class JediStarfighter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Jedi creatures you control");
diff --git a/Mage.Sets/src/mage/cards/j/JediTemple.java b/Mage.Sets/src/mage/cards/j/JediTemple.java
index f40b8197043..6d74ace20c4 100644
--- a/Mage.Sets/src/mage/cards/j/JediTemple.java
+++ b/Mage.Sets/src/mage/cards/j/JediTemple.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Styxo
*/
-public class JediTemple extends CardImpl {
+public final class JediTemple extends CardImpl {
public JediTemple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/j/JediTraining.java b/Mage.Sets/src/mage/cards/j/JediTraining.java
index 0244b9f3c94..48d427150d6 100644
--- a/Mage.Sets/src/mage/cards/j/JediTraining.java
+++ b/Mage.Sets/src/mage/cards/j/JediTraining.java
@@ -49,7 +49,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Styxo
*/
-public class JediTraining extends CardImpl {
+public final class JediTraining extends CardImpl {
protected static final FilterCard filter = new FilterCard("Jedi spells");
diff --git a/Mage.Sets/src/mage/cards/j/JeditOjanen.java b/Mage.Sets/src/mage/cards/j/JeditOjanen.java
index 6880ad6be47..a8888329377 100644
--- a/Mage.Sets/src/mage/cards/j/JeditOjanen.java
+++ b/Mage.Sets/src/mage/cards/j/JeditOjanen.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class JeditOjanen extends CardImpl {
+public final class JeditOjanen extends CardImpl {
public JeditOjanen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JeditOjanenOfEfrava.java b/Mage.Sets/src/mage/cards/j/JeditOjanenOfEfrava.java
index 815bb7607d0..41a4aa2361e 100644
--- a/Mage.Sets/src/mage/cards/j/JeditOjanenOfEfrava.java
+++ b/Mage.Sets/src/mage/cards/j/JeditOjanenOfEfrava.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.CatWarriorToken;
*
* @author fireshoes
*/
-public class JeditOjanenOfEfrava extends CardImpl {
+public final class JeditOjanenOfEfrava extends CardImpl {
public JeditOjanenOfEfrava(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JeditsDragoons.java b/Mage.Sets/src/mage/cards/j/JeditsDragoons.java
index 5297df21d1a..a1e47e23770 100644
--- a/Mage.Sets/src/mage/cards/j/JeditsDragoons.java
+++ b/Mage.Sets/src/mage/cards/j/JeditsDragoons.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class JeditsDragoons extends CardImpl {
+public final class JeditsDragoons extends CardImpl {
public JeditsDragoons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JeeringHomunculus.java b/Mage.Sets/src/mage/cards/j/JeeringHomunculus.java
index 7e3bdea8a4f..159a1dd9e89 100644
--- a/Mage.Sets/src/mage/cards/j/JeeringHomunculus.java
+++ b/Mage.Sets/src/mage/cards/j/JeeringHomunculus.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class JeeringHomunculus extends CardImpl {
+public final class JeeringHomunculus extends CardImpl {
public JeeringHomunculus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JeeringInstigator.java b/Mage.Sets/src/mage/cards/j/JeeringInstigator.java
index ae54e0cf807..1a29436ce3a 100644
--- a/Mage.Sets/src/mage/cards/j/JeeringInstigator.java
+++ b/Mage.Sets/src/mage/cards/j/JeeringInstigator.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class JeeringInstigator extends CardImpl {
+public final class JeeringInstigator extends CardImpl {
static final private FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/j/JelennSphinx.java b/Mage.Sets/src/mage/cards/j/JelennSphinx.java
index 52bec18ec65..1be8c3c8948 100644
--- a/Mage.Sets/src/mage/cards/j/JelennSphinx.java
+++ b/Mage.Sets/src/mage/cards/j/JelennSphinx.java
@@ -44,7 +44,7 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class JelennSphinx extends CardImpl {
+public final class JelennSphinx extends CardImpl {
public JelennSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JelevaNephaliasScourge.java b/Mage.Sets/src/mage/cards/j/JelevaNephaliasScourge.java
index 19aca22058d..351ec498b6f 100644
--- a/Mage.Sets/src/mage/cards/j/JelevaNephaliasScourge.java
+++ b/Mage.Sets/src/mage/cards/j/JelevaNephaliasScourge.java
@@ -32,6 +32,7 @@ import java.util.Map;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@@ -41,8 +42,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.WatcherScope;
import mage.filter.common.FilterInstantOrSorceryCard;
@@ -60,7 +61,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class JelevaNephaliasScourge extends CardImpl {
+public final class JelevaNephaliasScourge extends CardImpl {
public JelevaNephaliasScourge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{B}{R}");
@@ -155,7 +156,7 @@ class JelevaNephaliasCastEffect extends OneShotEffect {
if (controller.choose(Outcome.PlayForFree, exileZone, target, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- return controller.cast(card.getSpellAbility(), game, true);
+ return controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/j/JenaraAsuraOfWar.java b/Mage.Sets/src/mage/cards/j/JenaraAsuraOfWar.java
index 2354cf527fa..aa942411729 100644
--- a/Mage.Sets/src/mage/cards/j/JenaraAsuraOfWar.java
+++ b/Mage.Sets/src/mage/cards/j/JenaraAsuraOfWar.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class JenaraAsuraOfWar extends CardImpl {
+public final class JenaraAsuraOfWar extends CardImpl {
public JenaraAsuraOfWar (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JerrardOfTheClosedFist.java b/Mage.Sets/src/mage/cards/j/JerrardOfTheClosedFist.java
index 138158540ae..8eba1e230cf 100644
--- a/Mage.Sets/src/mage/cards/j/JerrardOfTheClosedFist.java
+++ b/Mage.Sets/src/mage/cards/j/JerrardOfTheClosedFist.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class JerrardOfTheClosedFist extends CardImpl {
+public final class JerrardOfTheClosedFist extends CardImpl {
public JerrardOfTheClosedFist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JeskaWarriorAdept.java b/Mage.Sets/src/mage/cards/j/JeskaWarriorAdept.java
index cb2a1e88eb8..178522c47f0 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaWarriorAdept.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaWarriorAdept.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class JeskaWarriorAdept extends CardImpl {
+public final class JeskaWarriorAdept extends CardImpl {
public JeskaWarriorAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiAscendancy.java b/Mage.Sets/src/mage/cards/j/JeskaiAscendancy.java
index 407506d7812..3d06f4f03b8 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiAscendancy.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiAscendancy.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class JeskaiAscendancy extends CardImpl {
+public final class JeskaiAscendancy extends CardImpl {
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiBanner.java b/Mage.Sets/src/mage/cards/j/JeskaiBanner.java
index 8f46caa27c9..9368e75af4f 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiBanner.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiBanner.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class JeskaiBanner extends CardImpl {
+public final class JeskaiBanner extends CardImpl {
public JeskaiBanner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiBarricade.java b/Mage.Sets/src/mage/cards/j/JeskaiBarricade.java
index e8a24c9ccb0..e08c3cd9ff6 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiBarricade.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiBarricade.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class JeskaiBarricade extends CardImpl {
+public final class JeskaiBarricade extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiCharm.java b/Mage.Sets/src/mage/cards/j/JeskaiCharm.java
index 12d47924016..639655ee36c 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiCharm.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiCharm.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author LevelX2
*/
-public class JeskaiCharm extends CardImpl {
+public final class JeskaiCharm extends CardImpl {
public JeskaiCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiElder.java b/Mage.Sets/src/mage/cards/j/JeskaiElder.java
index 799b4c623b2..0f246516741 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiElder.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiElder.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class JeskaiElder extends CardImpl {
+public final class JeskaiElder extends CardImpl {
public JeskaiElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiInfiltrator.java b/Mage.Sets/src/mage/cards/j/JeskaiInfiltrator.java
index 8df0690deb2..4c6af938b56 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiInfiltrator.java
@@ -60,7 +60,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class JeskaiInfiltrator extends CardImpl {
+public final class JeskaiInfiltrator extends CardImpl {
public JeskaiInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiRunemark.java b/Mage.Sets/src/mage/cards/j/JeskaiRunemark.java
index 50a34438d19..a4f833b2456 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiRunemark.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiRunemark.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class JeskaiRunemark extends CardImpl {
+public final class JeskaiRunemark extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("as long as you control a red or white permanent");
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiSage.java b/Mage.Sets/src/mage/cards/j/JeskaiSage.java
index ff0d8550484..7f528804eff 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiSage.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiSage.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class JeskaiSage extends CardImpl {
+public final class JeskaiSage extends CardImpl {
public JeskaiSage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiStudent.java b/Mage.Sets/src/mage/cards/j/JeskaiStudent.java
index 14a6b27641b..3fc45fa6640 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiStudent.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiStudent.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class JeskaiStudent extends CardImpl {
+public final class JeskaiStudent extends CardImpl {
public JeskaiStudent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiWindscout.java b/Mage.Sets/src/mage/cards/j/JeskaiWindscout.java
index cc555470e2a..9c138e7278f 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiWindscout.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiWindscout.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class JeskaiWindscout extends CardImpl {
+public final class JeskaiWindscout extends CardImpl {
public JeskaiWindscout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JestersCap.java b/Mage.Sets/src/mage/cards/j/JestersCap.java
index ce450034da1..17f025f1778 100644
--- a/Mage.Sets/src/mage/cards/j/JestersCap.java
+++ b/Mage.Sets/src/mage/cards/j/JestersCap.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class JestersCap extends CardImpl {
+public final class JestersCap extends CardImpl {
public JestersCap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/j/JestersMask.java b/Mage.Sets/src/mage/cards/j/JestersMask.java
index aa7fc29d60c..94c9a917248 100644
--- a/Mage.Sets/src/mage/cards/j/JestersMask.java
+++ b/Mage.Sets/src/mage/cards/j/JestersMask.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author Eirkei
*/
-public class JestersMask extends CardImpl {
+public final class JestersMask extends CardImpl {
public JestersMask(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/j/JestersScepter.java b/Mage.Sets/src/mage/cards/j/JestersScepter.java
index 3d04413d7dd..0064982aa0a 100644
--- a/Mage.Sets/src/mage/cards/j/JestersScepter.java
+++ b/Mage.Sets/src/mage/cards/j/JestersScepter.java
@@ -64,7 +64,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class JestersScepter extends CardImpl {
+public final class JestersScepter extends CardImpl {
public JestersScepter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/j/JetMedallion.java b/Mage.Sets/src/mage/cards/j/JetMedallion.java
index 04fa557182e..eab206cd02d 100644
--- a/Mage.Sets/src/mage/cards/j/JetMedallion.java
+++ b/Mage.Sets/src/mage/cards/j/JetMedallion.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author noxx
*/
-public class JetMedallion extends CardImpl {
+public final class JetMedallion extends CardImpl {
private static final FilterCard filter = new FilterCard("Black spells");
diff --git a/Mage.Sets/src/mage/cards/j/JettingGlasskite.java b/Mage.Sets/src/mage/cards/j/JettingGlasskite.java
index 6cbd976edd5..e655fe61c88 100644
--- a/Mage.Sets/src/mage/cards/j/JettingGlasskite.java
+++ b/Mage.Sets/src/mage/cards/j/JettingGlasskite.java
@@ -46,7 +46,7 @@ import mage.target.TargetStackObject;
*
* @author LevelX2
*/
-public class JettingGlasskite extends CardImpl {
+public final class JettingGlasskite extends CardImpl {
public JettingGlasskite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JeweledAmulet.java b/Mage.Sets/src/mage/cards/j/JeweledAmulet.java
index 386602ce31c..955be1a7740 100644
--- a/Mage.Sets/src/mage/cards/j/JeweledAmulet.java
+++ b/Mage.Sets/src/mage/cards/j/JeweledAmulet.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class JeweledAmulet extends CardImpl {
+public final class JeweledAmulet extends CardImpl {
private static final String rule = "{1}, {T}: Put a charge counter on {this}. Note the type of mana spent to pay this activation cost. Activate this ability only if there are no charge counters on {this}";
diff --git a/Mage.Sets/src/mage/cards/j/JeweledSpirit.java b/Mage.Sets/src/mage/cards/j/JeweledSpirit.java
index 0ba8cce9c56..3b9467873fe 100644
--- a/Mage.Sets/src/mage/cards/j/JeweledSpirit.java
+++ b/Mage.Sets/src/mage/cards/j/JeweledSpirit.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class JeweledSpirit extends CardImpl {
+public final class JeweledSpirit extends CardImpl {
public JeweledSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JhessianBalmgiver.java b/Mage.Sets/src/mage/cards/j/JhessianBalmgiver.java
index d0b947100d1..878372c43f1 100644
--- a/Mage.Sets/src/mage/cards/j/JhessianBalmgiver.java
+++ b/Mage.Sets/src/mage/cards/j/JhessianBalmgiver.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class JhessianBalmgiver extends CardImpl {
+public final class JhessianBalmgiver extends CardImpl {
public JhessianBalmgiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JhessianInfiltrator.java b/Mage.Sets/src/mage/cards/j/JhessianInfiltrator.java
index c3e5c4830e5..c02ea90650a 100644
--- a/Mage.Sets/src/mage/cards/j/JhessianInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/j/JhessianInfiltrator.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class JhessianInfiltrator extends CardImpl {
+public final class JhessianInfiltrator extends CardImpl {
public JhessianInfiltrator (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JhessianLookout.java b/Mage.Sets/src/mage/cards/j/JhessianLookout.java
index a1acc4ddec9..b7c9e032f12 100644
--- a/Mage.Sets/src/mage/cards/j/JhessianLookout.java
+++ b/Mage.Sets/src/mage/cards/j/JhessianLookout.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class JhessianLookout extends CardImpl {
+public final class JhessianLookout extends CardImpl {
public JhessianLookout (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JhessianThief.java b/Mage.Sets/src/mage/cards/j/JhessianThief.java
index 3358efbe58d..6ee376c6fe9 100644
--- a/Mage.Sets/src/mage/cards/j/JhessianThief.java
+++ b/Mage.Sets/src/mage/cards/j/JhessianThief.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class JhessianThief extends CardImpl {
+public final class JhessianThief extends CardImpl {
public JhessianThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JhessianZombies.java b/Mage.Sets/src/mage/cards/j/JhessianZombies.java
index 97a08d932da..3f387fd3692 100644
--- a/Mage.Sets/src/mage/cards/j/JhessianZombies.java
+++ b/Mage.Sets/src/mage/cards/j/JhessianZombies.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class JhessianZombies extends CardImpl {
+public final class JhessianZombies extends CardImpl {
public JhessianZombies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/j/JhoiraOfTheGhitu.java b/Mage.Sets/src/mage/cards/j/JhoiraOfTheGhitu.java
index c999a97f047..1c71f06db2a 100644
--- a/Mage.Sets/src/mage/cards/j/JhoiraOfTheGhitu.java
+++ b/Mage.Sets/src/mage/cards/j/JhoiraOfTheGhitu.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class JhoiraOfTheGhitu extends CardImpl {
+public final class JhoiraOfTheGhitu extends CardImpl {
public JhoiraOfTheGhitu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JhoiraWeatherlightCaptain.java b/Mage.Sets/src/mage/cards/j/JhoiraWeatherlightCaptain.java
index 017b3b23614..a31d1d78899 100644
--- a/Mage.Sets/src/mage/cards/j/JhoiraWeatherlightCaptain.java
+++ b/Mage.Sets/src/mage/cards/j/JhoiraWeatherlightCaptain.java
@@ -11,7 +11,7 @@ import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.common.FilterHistoricSpell;
-public class JhoiraWeatherlightCaptain extends CardImpl {
+public final class JhoiraWeatherlightCaptain extends CardImpl {
public JhoiraWeatherlightCaptain(UUID ownerId, CardSetInfo cardSetInfo) {
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JhoirasFamiliar.java b/Mage.Sets/src/mage/cards/j/JhoirasFamiliar.java
index ac6130c2f97..8d9f6512af7 100644
--- a/Mage.Sets/src/mage/cards/j/JhoirasFamiliar.java
+++ b/Mage.Sets/src/mage/cards/j/JhoirasFamiliar.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterHistoricCard;
*
* @author LevelX2
*/
-public class JhoirasFamiliar extends CardImpl {
+public final class JhoirasFamiliar extends CardImpl {
public JhoirasFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/j/JhoirasTimebug.java b/Mage.Sets/src/mage/cards/j/JhoirasTimebug.java
index 1eb094198c6..5b4f19ec811 100644
--- a/Mage.Sets/src/mage/cards/j/JhoirasTimebug.java
+++ b/Mage.Sets/src/mage/cards/j/JhoirasTimebug.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetPermanentOrSuspendedCard;
*
* @author emerald000
*/
-public class JhoirasTimebug extends CardImpl {
+public final class JhoirasTimebug extends CardImpl {
private static final FilterPermanentOrSuspendedCard filter = new FilterPermanentOrSuspendedCard("permanent you control or suspended card you own");
static {
diff --git a/Mage.Sets/src/mage/cards/j/JhoirasToolbox.java b/Mage.Sets/src/mage/cards/j/JhoirasToolbox.java
index 38c0cabb5ed..33e2efdddb9 100644
--- a/Mage.Sets/src/mage/cards/j/JhoirasToolbox.java
+++ b/Mage.Sets/src/mage/cards/j/JhoirasToolbox.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class JhoirasToolbox extends CardImpl {
+public final class JhoirasToolbox extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/j/JhovallQueen.java b/Mage.Sets/src/mage/cards/j/JhovallQueen.java
index 1f6d8501d94..dd57523d203 100644
--- a/Mage.Sets/src/mage/cards/j/JhovallQueen.java
+++ b/Mage.Sets/src/mage/cards/j/JhovallQueen.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class JhovallQueen extends CardImpl {
+public final class JhovallQueen extends CardImpl {
public JhovallQueen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JhovallRider.java b/Mage.Sets/src/mage/cards/j/JhovallRider.java
index 6edc54d64b2..388d61d92d0 100644
--- a/Mage.Sets/src/mage/cards/j/JhovallRider.java
+++ b/Mage.Sets/src/mage/cards/j/JhovallRider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class JhovallRider extends CardImpl {
+public final class JhovallRider extends CardImpl {
public JhovallRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JiangYanggu.java b/Mage.Sets/src/mage/cards/j/JiangYanggu.java
index df8b126ca31..e566a081e71 100644
--- a/Mage.Sets/src/mage/cards/j/JiangYanggu.java
+++ b/Mage.Sets/src/mage/cards/j/JiangYanggu.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class JiangYanggu extends CardImpl {
+public final class JiangYanggu extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature name Mowu");
diff --git a/Mage.Sets/src/mage/cards/j/Jihad.java b/Mage.Sets/src/mage/cards/j/Jihad.java
index c1561c2b769..bf4fcb3197c 100644
--- a/Mage.Sets/src/mage/cards/j/Jihad.java
+++ b/Mage.Sets/src/mage/cards/j/Jihad.java
@@ -58,7 +58,7 @@ import mage.game.events.GameEvent;
*
* @author MarcoMarin
*/
-public class Jihad extends CardImpl {
+public final class Jihad extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures");
diff --git a/Mage.Sets/src/mage/cards/j/Jilt.java b/Mage.Sets/src/mage/cards/j/Jilt.java
index ab8f47df738..601aa37bb16 100644
--- a/Mage.Sets/src/mage/cards/j/Jilt.java
+++ b/Mage.Sets/src/mage/cards/j/Jilt.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author fireshoes
*/
-public class Jilt extends CardImpl {
+public final class Jilt extends CardImpl {
public Jilt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JinGitaxiasCoreAugur.java b/Mage.Sets/src/mage/cards/j/JinGitaxiasCoreAugur.java
index e8eec650bed..42a9b67c4c7 100644
--- a/Mage.Sets/src/mage/cards/j/JinGitaxiasCoreAugur.java
+++ b/Mage.Sets/src/mage/cards/j/JinGitaxiasCoreAugur.java
@@ -43,7 +43,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class JinGitaxiasCoreAugur extends CardImpl {
+public final class JinGitaxiasCoreAugur extends CardImpl {
public JinGitaxiasCoreAugur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/Jinx.java b/Mage.Sets/src/mage/cards/j/Jinx.java
index dd25f648a7b..523abc569b0 100644
--- a/Mage.Sets/src/mage/cards/j/Jinx.java
+++ b/Mage.Sets/src/mage/cards/j/Jinx.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class Jinx extends CardImpl {
+public final class Jinx extends CardImpl {
public Jinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JinxedChoker.java b/Mage.Sets/src/mage/cards/j/JinxedChoker.java
index 48b7038b6d6..ba5d33b90da 100644
--- a/Mage.Sets/src/mage/cards/j/JinxedChoker.java
+++ b/Mage.Sets/src/mage/cards/j/JinxedChoker.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
* @author andyfries
*/
-public class JinxedChoker extends CardImpl {
+public final class JinxedChoker extends CardImpl {
public JinxedChoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/j/JinxedIdol.java b/Mage.Sets/src/mage/cards/j/JinxedIdol.java
index a2448b980a7..8372bea1a87 100644
--- a/Mage.Sets/src/mage/cards/j/JinxedIdol.java
+++ b/Mage.Sets/src/mage/cards/j/JinxedIdol.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class JinxedIdol extends CardImpl {
+public final class JinxedIdol extends CardImpl {
public JinxedIdol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
@@ -92,7 +92,7 @@ class JinxedIdolEffect extends ContinuousEffectImpl {
@Override
public boolean apply(Game game, Ability source) {
- Permanent permanent = (Permanent) source.getSourceObjectIfItStillExists(game);
+ Permanent permanent = source.getSourcePermanentIfItStillExists(game);
if (permanent != null) {
return permanent.changeControllerId(source.getFirstTarget(), game);
} else {
diff --git a/Mage.Sets/src/mage/cards/j/JinxedRing.java b/Mage.Sets/src/mage/cards/j/JinxedRing.java
index 7686a24e82c..7ca85ea4695 100644
--- a/Mage.Sets/src/mage/cards/j/JinxedRing.java
+++ b/Mage.Sets/src/mage/cards/j/JinxedRing.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class JinxedRing extends CardImpl {
+public final class JinxedRing extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a nontoken permanent");
diff --git a/Mage.Sets/src/mage/cards/j/JiwariTheEarthAflame.java b/Mage.Sets/src/mage/cards/j/JiwariTheEarthAflame.java
index 4c21b54877b..2676e6d011e 100644
--- a/Mage.Sets/src/mage/cards/j/JiwariTheEarthAflame.java
+++ b/Mage.Sets/src/mage/cards/j/JiwariTheEarthAflame.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class JiwariTheEarthAflame extends CardImpl {
+public final class JiwariTheEarthAflame extends CardImpl {
static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/j/JodahArchmageEternal.java b/Mage.Sets/src/mage/cards/j/JodahArchmageEternal.java
index 8bdae7d29ca..969267d8bd0 100644
--- a/Mage.Sets/src/mage/cards/j/JodahArchmageEternal.java
+++ b/Mage.Sets/src/mage/cards/j/JodahArchmageEternal.java
@@ -40,7 +40,7 @@ import mage.constants.*;
*
* @author CountAndromalius
*/
-public class JodahArchmageEternal extends CardImpl {
+public final class JodahArchmageEternal extends CardImpl {
public JodahArchmageEternal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JodahsAvenger.java b/Mage.Sets/src/mage/cards/j/JodahsAvenger.java
index 59e6b65c829..771302c70f5 100644
--- a/Mage.Sets/src/mage/cards/j/JodahsAvenger.java
+++ b/Mage.Sets/src/mage/cards/j/JodahsAvenger.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class JodahsAvenger extends CardImpl {
+public final class JodahsAvenger extends CardImpl {
public JodahsAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/Johan.java b/Mage.Sets/src/mage/cards/j/Johan.java
index 4affd49c260..d80dd213df6 100644
--- a/Mage.Sets/src/mage/cards/j/Johan.java
+++ b/Mage.Sets/src/mage/cards/j/Johan.java
@@ -54,7 +54,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author L_J
*/
-public class Johan extends CardImpl {
+public final class Johan extends CardImpl {
public Johan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JohnnyComboPlayer.java b/Mage.Sets/src/mage/cards/j/JohnnyComboPlayer.java
index a489f990318..2b00510c041 100644
--- a/Mage.Sets/src/mage/cards/j/JohnnyComboPlayer.java
+++ b/Mage.Sets/src/mage/cards/j/JohnnyComboPlayer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author L_J
*/
-public class JohnnyComboPlayer extends CardImpl {
+public final class JohnnyComboPlayer extends CardImpl {
public JohnnyComboPlayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JohtullWurm.java b/Mage.Sets/src/mage/cards/j/JohtullWurm.java
index 99a34270f8c..36eda6fc1d8 100644
--- a/Mage.Sets/src/mage/cards/j/JohtullWurm.java
+++ b/Mage.Sets/src/mage/cards/j/JohtullWurm.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class JohtullWurm extends CardImpl {
+public final class JohtullWurm extends CardImpl {
public JohtullWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JoinTheRanks.java b/Mage.Sets/src/mage/cards/j/JoinTheRanks.java
index a2bc07d6119..72251b42f01 100644
--- a/Mage.Sets/src/mage/cards/j/JoinTheRanks.java
+++ b/Mage.Sets/src/mage/cards/j/JoinTheRanks.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.JoinTheRanksSoldierToken;
*
* @author Loki
*/
-public class JoinTheRanks extends CardImpl {
+public final class JoinTheRanks extends CardImpl {
public JoinTheRanks(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JoinerAdept.java b/Mage.Sets/src/mage/cards/j/JoinerAdept.java
index ef2c3c9041f..cb7de135e96 100644
--- a/Mage.Sets/src/mage/cards/j/JoinerAdept.java
+++ b/Mage.Sets/src/mage/cards/j/JoinerAdept.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class JoinerAdept extends CardImpl {
+public final class JoinerAdept extends CardImpl {
public JoinerAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JointAssault.java b/Mage.Sets/src/mage/cards/j/JointAssault.java
index 45ca4926787..daab75c800d 100644
--- a/Mage.Sets/src/mage/cards/j/JointAssault.java
+++ b/Mage.Sets/src/mage/cards/j/JointAssault.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class JointAssault extends CardImpl {
+public final class JointAssault extends CardImpl {
public JointAssault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/j/Jokulhaups.java b/Mage.Sets/src/mage/cards/j/Jokulhaups.java
index 869ff53ae94..c7862eb2436 100644
--- a/Mage.Sets/src/mage/cards/j/Jokulhaups.java
+++ b/Mage.Sets/src/mage/cards/j/Jokulhaups.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Quercitron
*/
-public class Jokulhaups extends CardImpl {
+public final class Jokulhaups extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts, creatures, and lands");
diff --git a/Mage.Sets/src/mage/cards/j/Jokulmorder.java b/Mage.Sets/src/mage/cards/j/Jokulmorder.java
index 99c8ba7525e..c4953ff0674 100644
--- a/Mage.Sets/src/mage/cards/j/Jokulmorder.java
+++ b/Mage.Sets/src/mage/cards/j/Jokulmorder.java
@@ -56,7 +56,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class Jokulmorder extends CardImpl {
+public final class Jokulmorder extends CardImpl {
public Jokulmorder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JolraelEmpressOfBeasts.java b/Mage.Sets/src/mage/cards/j/JolraelEmpressOfBeasts.java
index e87ed17bfc1..cd5fb467100 100644
--- a/Mage.Sets/src/mage/cards/j/JolraelEmpressOfBeasts.java
+++ b/Mage.Sets/src/mage/cards/j/JolraelEmpressOfBeasts.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class JolraelEmpressOfBeasts extends CardImpl {
+public final class JolraelEmpressOfBeasts extends CardImpl {
public JolraelEmpressOfBeasts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JolraelsCentaur.java b/Mage.Sets/src/mage/cards/j/JolraelsCentaur.java
index d4dc295726a..fcf952d00b9 100644
--- a/Mage.Sets/src/mage/cards/j/JolraelsCentaur.java
+++ b/Mage.Sets/src/mage/cards/j/JolraelsCentaur.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class JolraelsCentaur extends CardImpl {
+public final class JolraelsCentaur extends CardImpl {
public JolraelsCentaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JolraelsFavor.java b/Mage.Sets/src/mage/cards/j/JolraelsFavor.java
index ace94c27907..1e37e871a0c 100644
--- a/Mage.Sets/src/mage/cards/j/JolraelsFavor.java
+++ b/Mage.Sets/src/mage/cards/j/JolraelsFavor.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class JolraelsFavor extends CardImpl {
+public final class JolraelsFavor extends CardImpl {
public JolraelsFavor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/Jolt.java b/Mage.Sets/src/mage/cards/j/Jolt.java
index e30373d02e9..8c320d94b97 100644
--- a/Mage.Sets/src/mage/cards/j/Jolt.java
+++ b/Mage.Sets/src/mage/cards/j/Jolt.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class Jolt extends CardImpl {
+public final class Jolt extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/j/JoltingMerfolk.java b/Mage.Sets/src/mage/cards/j/JoltingMerfolk.java
index f38d3766afa..454d161fb4e 100644
--- a/Mage.Sets/src/mage/cards/j/JoltingMerfolk.java
+++ b/Mage.Sets/src/mage/cards/j/JoltingMerfolk.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class JoltingMerfolk extends CardImpl {
+public final class JoltingMerfolk extends CardImpl {
public JoltingMerfolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JorKadeenThePrevailer.java b/Mage.Sets/src/mage/cards/j/JorKadeenThePrevailer.java
index b06947f8174..db4d5c3b290 100644
--- a/Mage.Sets/src/mage/cards/j/JorKadeenThePrevailer.java
+++ b/Mage.Sets/src/mage/cards/j/JorKadeenThePrevailer.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author North
*/
-public class JorKadeenThePrevailer extends CardImpl {
+public final class JorKadeenThePrevailer extends CardImpl {
private static final String effectText = "Metalcraft - Creatures you control get +3/+0 as long as you control three or more artifacts.";
diff --git a/Mage.Sets/src/mage/cards/j/JoragaAuxiliary.java b/Mage.Sets/src/mage/cards/j/JoragaAuxiliary.java
index e8444bde274..408c8ff1b6d 100644
--- a/Mage.Sets/src/mage/cards/j/JoragaAuxiliary.java
+++ b/Mage.Sets/src/mage/cards/j/JoragaAuxiliary.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class JoragaAuxiliary extends CardImpl {
+public final class JoragaAuxiliary extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other target creatures");
diff --git a/Mage.Sets/src/mage/cards/j/JoragaBard.java b/Mage.Sets/src/mage/cards/j/JoragaBard.java
index fc7ff79a21c..c026de24cbc 100644
--- a/Mage.Sets/src/mage/cards/j/JoragaBard.java
+++ b/Mage.Sets/src/mage/cards/j/JoragaBard.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class JoragaBard extends CardImpl {
+public final class JoragaBard extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control");
diff --git a/Mage.Sets/src/mage/cards/j/JoragaInvocation.java b/Mage.Sets/src/mage/cards/j/JoragaInvocation.java
index 0ab3a5dedcc..0c7021cc0a6 100644
--- a/Mage.Sets/src/mage/cards/j/JoragaInvocation.java
+++ b/Mage.Sets/src/mage/cards/j/JoragaInvocation.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class JoragaInvocation extends CardImpl {
+public final class JoragaInvocation extends CardImpl {
public JoragaInvocation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JoragaTreespeaker.java b/Mage.Sets/src/mage/cards/j/JoragaTreespeaker.java
index 07a13f12c92..330c35e3a94 100644
--- a/Mage.Sets/src/mage/cards/j/JoragaTreespeaker.java
+++ b/Mage.Sets/src/mage/cards/j/JoragaTreespeaker.java
@@ -55,7 +55,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author BetaSteward_at_googlemail.com, noxx
*/
-public class JoragaTreespeaker extends LevelerCard {
+public final class JoragaTreespeaker extends LevelerCard {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elves");
diff --git a/Mage.Sets/src/mage/cards/j/JoragaWarcaller.java b/Mage.Sets/src/mage/cards/j/JoragaWarcaller.java
index 6e1d6ea033d..a2a149c9958 100644
--- a/Mage.Sets/src/mage/cards/j/JoragaWarcaller.java
+++ b/Mage.Sets/src/mage/cards/j/JoragaWarcaller.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author jeffwadsworth
*/
-public class JoragaWarcaller extends CardImpl {
+public final class JoragaWarcaller extends CardImpl {
private static final String rule = "Other Elf creatures you control get +1/+1 for each +1/+1 counter on Joraga Warcaller";
diff --git a/Mage.Sets/src/mage/cards/j/JoriEnRuinDiver.java b/Mage.Sets/src/mage/cards/j/JoriEnRuinDiver.java
index 510a90a4b84..ec40c1e4e33 100644
--- a/Mage.Sets/src/mage/cards/j/JoriEnRuinDiver.java
+++ b/Mage.Sets/src/mage/cards/j/JoriEnRuinDiver.java
@@ -46,7 +46,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author fireshoes
*/
-public class JoriEnRuinDiver extends CardImpl {
+public final class JoriEnRuinDiver extends CardImpl {
public JoriEnRuinDiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JorubaiMurkLurker.java b/Mage.Sets/src/mage/cards/j/JorubaiMurkLurker.java
index 4bc0864adcd..d7fb9e6d2f1 100644
--- a/Mage.Sets/src/mage/cards/j/JorubaiMurkLurker.java
+++ b/Mage.Sets/src/mage/cards/j/JorubaiMurkLurker.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class JorubaiMurkLurker extends CardImpl {
+public final class JorubaiMurkLurker extends CardImpl {
private static final String rule = "{this} gets +1/+1 as long as you control a Swamp";
private static final FilterLandPermanent filter = new FilterLandPermanent("a Swamp");
diff --git a/Mage.Sets/src/mage/cards/j/JosuVessLichKnight.java b/Mage.Sets/src/mage/cards/j/JosuVessLichKnight.java
index 765bab24263..038dbf6e2e3 100644
--- a/Mage.Sets/src/mage/cards/j/JosuVessLichKnight.java
+++ b/Mage.Sets/src/mage/cards/j/JosuVessLichKnight.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.ZombieKnightToken;
import java.util.UUID;
-public class JosuVessLichKnight extends CardImpl {
+public final class JosuVessLichKnight extends CardImpl {
public JosuVessLichKnight(UUID ownerID, CardSetInfo cardSetInfo){
super(ownerID, cardSetInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/j/JotunGrunt.java b/Mage.Sets/src/mage/cards/j/JotunGrunt.java
index 2bff40dd6ee..2578752d0eb 100644
--- a/Mage.Sets/src/mage/cards/j/JotunGrunt.java
+++ b/Mage.Sets/src/mage/cards/j/JotunGrunt.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author emerald000
*/
-public class JotunGrunt extends CardImpl {
+public final class JotunGrunt extends CardImpl {
public JotunGrunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JotunOwlKeeper.java b/Mage.Sets/src/mage/cards/j/JotunOwlKeeper.java
index 0e47d8117e6..b766c91029c 100644
--- a/Mage.Sets/src/mage/cards/j/JotunOwlKeeper.java
+++ b/Mage.Sets/src/mage/cards/j/JotunOwlKeeper.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.BirdToken;
*
* @author TheElk801
*/
-public class JotunOwlKeeper extends CardImpl {
+public final class JotunOwlKeeper extends CardImpl {
public JotunOwlKeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JourneyOfDiscovery.java b/Mage.Sets/src/mage/cards/j/JourneyOfDiscovery.java
index cc59dbc5791..11d38c2042c 100644
--- a/Mage.Sets/src/mage/cards/j/JourneyOfDiscovery.java
+++ b/Mage.Sets/src/mage/cards/j/JourneyOfDiscovery.java
@@ -44,13 +44,13 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class JourneyOfDiscovery extends CardImpl {
+public final class JourneyOfDiscovery extends CardImpl {
public JourneyOfDiscovery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
// Choose one - Search your library for up to two basic land cards, reveal them, put them into your hand, then shuffle your library;
- this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD)));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND)));
// or you may play up to two additional lands this turn.
Mode mode = new Mode();
diff --git a/Mage.Sets/src/mage/cards/j/JourneyToEternity.java b/Mage.Sets/src/mage/cards/j/JourneyToEternity.java
index 5e34f1ebace..8b7fca26407 100644
--- a/Mage.Sets/src/mage/cards/j/JourneyToEternity.java
+++ b/Mage.Sets/src/mage/cards/j/JourneyToEternity.java
@@ -1,123 +1,123 @@
-/*
- * 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.abilities.Ability;
-import mage.abilities.common.DiesAttachedTriggeredAbility;
-import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.AttachEffect;
-import mage.abilities.effects.common.ReturnToBattlefieldUnderYourControlAttachedEffect;
-import mage.abilities.keyword.EnchantAbility;
-import mage.abilities.keyword.TransformAbility;
-import mage.cards.Card;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.cards.a.AtzalCaveOfEternity;
-import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.constants.SubType;
-import mage.constants.SuperType;
-import mage.constants.Zone;
-import mage.filter.StaticFilters;
-import mage.game.Game;
-import mage.players.Player;
-import mage.target.TargetPermanent;
-
-/**
- *
- * @author LevelX2
- */
-public class JourneyToEternity extends CardImpl {
-
- public JourneyToEternity(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{G}");
-
- this.addSuperType(SuperType.LEGENDARY);
- this.subtype.add(SubType.AURA);
-
- this.transformable = true;
- this.secondSideCardClazz = AtzalCaveOfEternity.class;
-
- // Enchant creature you control
- TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_CONTROLLED);
- this.getSpellAbility().addTarget(auraTarget);
- this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
- Ability ability = new EnchantAbility(auraTarget.getTargetName());
- this.addAbility(ability);
-
- // When enchanted creature dies, return it to the battlefield under your control, then return Journey to Eternity to the battlefield transformed under your control.
- this.addAbility(new TransformAbility());
- ability = new DiesAttachedTriggeredAbility(new ReturnToBattlefieldUnderYourControlAttachedEffect("it"), "enchanted creature");
- ability.addEffect(new JourneyToEternityReturnTransformedSourceEffect());
- this.addAbility(ability);
-
- }
-
- public JourneyToEternity(final JourneyToEternity card) {
- super(card);
- }
-
- @Override
- public JourneyToEternity copy() {
- return new JourneyToEternity(this);
- }
-}
-
-class JourneyToEternityReturnTransformedSourceEffect extends OneShotEffect {
-
- public JourneyToEternityReturnTransformedSourceEffect() {
- super(Outcome.Benefit);
- this.staticText = ", then return {this} to the battlefield transformed under your control.";
- }
-
- public JourneyToEternityReturnTransformedSourceEffect(final JourneyToEternityReturnTransformedSourceEffect effect) {
- super(effect);
- }
-
- @Override
- public JourneyToEternityReturnTransformedSourceEffect copy() {
- return new JourneyToEternityReturnTransformedSourceEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Card card = game.getCard(source.getSourceId());
- Player controller = game.getPlayer(source.getControllerId());
- if (card != null && controller != null) {
- Zone zone = game.getState().getZone(card.getId());
- // cards needs to be in public non battlefield zone
- if (zone.equals(Zone.BATTLEFIELD) || !zone.isPublicZone()) {
- return true;
- }
- game.getState().setValue(TransformAbility.VALUE_KEY_ENTER_TRANSFORMED + source.getSourceId(), Boolean.TRUE);
- controller.moveCards(card, Zone.BATTLEFIELD, source, game, false, false, false, null);
- }
- return true;
- }
-}
+/*
+ * 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.abilities.Ability;
+import mage.abilities.common.DiesAttachedTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.ReturnToBattlefieldUnderYourControlAttachedEffect;
+import mage.abilities.keyword.EnchantAbility;
+import mage.abilities.keyword.TransformAbility;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.cards.a.AtzalCaveOfEternity;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.constants.Zone;
+import mage.filter.StaticFilters;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class JourneyToEternity extends CardImpl {
+
+ public JourneyToEternity(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{G}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.AURA);
+
+ this.transformable = true;
+ this.secondSideCardClazz = AtzalCaveOfEternity.class;
+
+ // Enchant creature you control
+ TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_CONTROLLED);
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
+ Ability ability = new EnchantAbility(auraTarget.getTargetName());
+ this.addAbility(ability);
+
+ // When enchanted creature dies, return it to the battlefield under your control, then return Journey to Eternity to the battlefield transformed under your control.
+ this.addAbility(new TransformAbility());
+ ability = new DiesAttachedTriggeredAbility(new ReturnToBattlefieldUnderYourControlAttachedEffect("it"), "enchanted creature");
+ ability.addEffect(new JourneyToEternityReturnTransformedSourceEffect());
+ this.addAbility(ability);
+
+ }
+
+ public JourneyToEternity(final JourneyToEternity card) {
+ super(card);
+ }
+
+ @Override
+ public JourneyToEternity copy() {
+ return new JourneyToEternity(this);
+ }
+}
+
+class JourneyToEternityReturnTransformedSourceEffect extends OneShotEffect {
+
+ public JourneyToEternityReturnTransformedSourceEffect() {
+ super(Outcome.Benefit);
+ this.staticText = ", then return {this} to the battlefield transformed under your control.";
+ }
+
+ public JourneyToEternityReturnTransformedSourceEffect(final JourneyToEternityReturnTransformedSourceEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public JourneyToEternityReturnTransformedSourceEffect copy() {
+ return new JourneyToEternityReturnTransformedSourceEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Card card = game.getCard(source.getSourceId());
+ Player controller = game.getPlayer(source.getControllerId());
+ if (card != null && controller != null) {
+ Zone zone = game.getState().getZone(card.getId());
+ // cards needs to be in public non battlefield zone
+ if (zone.equals(Zone.BATTLEFIELD) || !zone.isPublicZone()) {
+ return true;
+ }
+ game.getState().setValue(TransformAbility.VALUE_KEY_ENTER_TRANSFORMED + source.getSourceId(), Boolean.TRUE);
+ controller.moveCards(card, Zone.BATTLEFIELD, source, game, false, false, false, null);
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/j/JourneyToNowhere.java b/Mage.Sets/src/mage/cards/j/JourneyToNowhere.java
index 6277b896f0c..d30a85c3199 100644
--- a/Mage.Sets/src/mage/cards/j/JourneyToNowhere.java
+++ b/Mage.Sets/src/mage/cards/j/JourneyToNowhere.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author maurer.it_at_gmail.com
*/
-public class JourneyToNowhere extends CardImpl {
+public final class JourneyToNowhere extends CardImpl {
public JourneyToNowhere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JourneyersKite.java b/Mage.Sets/src/mage/cards/j/JourneyersKite.java
index 9da94985743..7f43dec437e 100644
--- a/Mage.Sets/src/mage/cards/j/JourneyersKite.java
+++ b/Mage.Sets/src/mage/cards/j/JourneyersKite.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class JourneyersKite extends CardImpl {
+public final class JourneyersKite extends CardImpl {
public JourneyersKite (UUID ownerId, CardSetInfo setInfo) {
@@ -54,7 +54,7 @@ public class JourneyersKite extends CardImpl {
// {3}, {tap}: Search your library for a basic land card, reveal it, and put it into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new GenericManaCost(3));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/j/JoustingLance.java b/Mage.Sets/src/mage/cards/j/JoustingLance.java
index e2bc1aeae86..d97e6a98016 100644
--- a/Mage.Sets/src/mage/cards/j/JoustingLance.java
+++ b/Mage.Sets/src/mage/cards/j/JoustingLance.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class JoustingLance extends CardImpl {
+public final class JoustingLance extends CardImpl {
public JoustingLance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/j/Joven.java b/Mage.Sets/src/mage/cards/j/Joven.java
index 2b66cea9781..0692290976d 100644
--- a/Mage.Sets/src/mage/cards/j/Joven.java
+++ b/Mage.Sets/src/mage/cards/j/Joven.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class Joven extends CardImpl {
+public final class Joven extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("noncreature artifact");
diff --git a/Mage.Sets/src/mage/cards/j/JovensTools.java b/Mage.Sets/src/mage/cards/j/JovensTools.java
index 642ece28ae4..a9fd42eb3a3 100644
--- a/Mage.Sets/src/mage/cards/j/JovensTools.java
+++ b/Mage.Sets/src/mage/cards/j/JovensTools.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class JovensTools extends CardImpl {
+public final class JovensTools extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by walls");
static {
diff --git a/Mage.Sets/src/mage/cards/j/JovialEvil.java b/Mage.Sets/src/mage/cards/j/JovialEvil.java
index 86f90219e1a..3b51d5b2d72 100644
--- a/Mage.Sets/src/mage/cards/j/JovialEvil.java
+++ b/Mage.Sets/src/mage/cards/j/JovialEvil.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author Backfir3
*/
-public class JovialEvil extends CardImpl {
+public final class JovialEvil extends CardImpl {
public JovialEvil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/j/JoyousRespite.java b/Mage.Sets/src/mage/cards/j/JoyousRespite.java
index 579de04d248..97fbc61fc55 100644
--- a/Mage.Sets/src/mage/cards/j/JoyousRespite.java
+++ b/Mage.Sets/src/mage/cards/j/JoyousRespite.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class JoyousRespite extends CardImpl {
+public final class JoyousRespite extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/j/JubilantMascot.java b/Mage.Sets/src/mage/cards/j/JubilantMascot.java
new file mode 100644
index 00000000000..7f66a2bb003
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/j/JubilantMascot.java
@@ -0,0 +1,85 @@
+/*
+ * 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.Ability;
+import mage.abilities.common.BeginningOfCombatTriggeredAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DoIfCostPaid;
+import mage.abilities.effects.common.counter.AddCountersTargetEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.TargetController;
+import mage.counters.CounterType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class JubilantMascot extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other target creatures");
+
+ static {
+ filter.add(new AnotherPredicate());
+ }
+
+ public JubilantMascot(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
+
+ this.subtype.add(SubType.HOMUNCULUS);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // At the beginning of combat on your turn, you may pay {3}{W}. If you do, support 2. (Put a +1/+1 counter on each of up to two other target creatures.)
+ Ability ability = new BeginningOfCombatTriggeredAbility(
+ new DoIfCostPaid(
+ new AddCountersTargetEffect(CounterType.P1P1.createInstance())
+ .setText("support 2"),
+ new ManaCostsImpl("{3}{W}")
+ ), TargetController.YOU, false);
+ ability.addTarget(new TargetCreaturePermanent(0, 2, filter, false));
+ this.addAbility(ability);
+ }
+
+ public JubilantMascot(final JubilantMascot card) {
+ super(card);
+ }
+
+ @Override
+ public JubilantMascot copy() {
+ return new JubilantMascot(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java b/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java
index 22bd74a42a4..2153b69f96b 100644
--- a/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java
+++ b/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class JudgeOfCurrents extends CardImpl {
+public final class JudgeOfCurrents extends CardImpl {
public JudgeOfCurrents(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JudgeUnworthy.java b/Mage.Sets/src/mage/cards/j/JudgeUnworthy.java
index 07a6c7344c1..d10867f32e8 100644
--- a/Mage.Sets/src/mage/cards/j/JudgeUnworthy.java
+++ b/Mage.Sets/src/mage/cards/j/JudgeUnworthy.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author fireshoes
*/
-public class JudgeUnworthy extends CardImpl {
+public final class JudgeUnworthy extends CardImpl {
public JudgeUnworthy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JudgesFamiliar.java b/Mage.Sets/src/mage/cards/j/JudgesFamiliar.java
index 233e78d7cdd..1f7a477da61 100644
--- a/Mage.Sets/src/mage/cards/j/JudgesFamiliar.java
+++ b/Mage.Sets/src/mage/cards/j/JudgesFamiliar.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class JudgesFamiliar extends CardImpl {
+public final class JudgesFamiliar extends CardImpl {
public JudgesFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W/U}");
diff --git a/Mage.Sets/src/mage/cards/j/JuganTheRisingStar.java b/Mage.Sets/src/mage/cards/j/JuganTheRisingStar.java
index 95dce944f18..c52933a221a 100644
--- a/Mage.Sets/src/mage/cards/j/JuganTheRisingStar.java
+++ b/Mage.Sets/src/mage/cards/j/JuganTheRisingStar.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
/**
* @author LevelX
*/
-public class JuganTheRisingStar extends CardImpl {
+public final class JuganTheRisingStar extends CardImpl {
public JuganTheRisingStar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/Juggernaut.java b/Mage.Sets/src/mage/cards/j/Juggernaut.java
index 9f404564957..c41d8dced32 100644
--- a/Mage.Sets/src/mage/cards/j/Juggernaut.java
+++ b/Mage.Sets/src/mage/cards/j/Juggernaut.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Juggernaut extends CardImpl {
+public final class Juggernaut extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls");
diff --git a/Mage.Sets/src/mage/cards/j/JukaiMessenger.java b/Mage.Sets/src/mage/cards/j/JukaiMessenger.java
index 596bf947473..98b1161507a 100644
--- a/Mage.Sets/src/mage/cards/j/JukaiMessenger.java
+++ b/Mage.Sets/src/mage/cards/j/JukaiMessenger.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class JukaiMessenger extends CardImpl {
+public final class JukaiMessenger extends CardImpl {
public JukaiMessenger (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JumboImp.java b/Mage.Sets/src/mage/cards/j/JumboImp.java
index b64c2b454c1..63d1174dfad 100644
--- a/Mage.Sets/src/mage/cards/j/JumboImp.java
+++ b/Mage.Sets/src/mage/cards/j/JumboImp.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class JumboImp extends CardImpl {
+public final class JumboImp extends CardImpl {
public JumboImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/j/Jump.java b/Mage.Sets/src/mage/cards/j/Jump.java
index e1393e72bf5..14d2100b57a 100644
--- a/Mage.Sets/src/mage/cards/j/Jump.java
+++ b/Mage.Sets/src/mage/cards/j/Jump.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Jump extends CardImpl {
+public final class Jump extends CardImpl {
public Jump(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JumpTrooper.java b/Mage.Sets/src/mage/cards/j/JumpTrooper.java
index 506677b8ba7..80c82d8eb87 100644
--- a/Mage.Sets/src/mage/cards/j/JumpTrooper.java
+++ b/Mage.Sets/src/mage/cards/j/JumpTrooper.java
@@ -50,7 +50,7 @@ import mage.target.TargetStackObject;
*
* @author Styxo
*/
-public class JumpTrooper extends CardImpl {
+public final class JumpTrooper extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/j/JundBattlemage.java b/Mage.Sets/src/mage/cards/j/JundBattlemage.java
index 3086ec42020..b7b5155d015 100644
--- a/Mage.Sets/src/mage/cards/j/JundBattlemage.java
+++ b/Mage.Sets/src/mage/cards/j/JundBattlemage.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class JundBattlemage extends CardImpl {
+public final class JundBattlemage extends CardImpl {
public JundBattlemage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/j/JundCharm.java b/Mage.Sets/src/mage/cards/j/JundCharm.java
index 29454c78135..9177b13f7b9 100644
--- a/Mage.Sets/src/mage/cards/j/JundCharm.java
+++ b/Mage.Sets/src/mage/cards/j/JundCharm.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jonubuu
*/
-public class JundCharm extends CardImpl {
+public final class JundCharm extends CardImpl {
public JundCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JundHackblade.java b/Mage.Sets/src/mage/cards/j/JundHackblade.java
index 706f5cb8d31..834f8ce0e61 100644
--- a/Mage.Sets/src/mage/cards/j/JundHackblade.java
+++ b/Mage.Sets/src/mage/cards/j/JundHackblade.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author jeffwadsworth
*/
-public class JundHackblade extends CardImpl {
+public final class JundHackblade extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another multicolor permanent");
diff --git a/Mage.Sets/src/mage/cards/j/JundPanorama.java b/Mage.Sets/src/mage/cards/j/JundPanorama.java
index f43681f2063..d0ec9926d79 100644
--- a/Mage.Sets/src/mage/cards/j/JundPanorama.java
+++ b/Mage.Sets/src/mage/cards/j/JundPanorama.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author BetaSteward_at_googlemail.com
*/
-public class JundPanorama extends CardImpl {
+public final class JundPanorama extends CardImpl {
private static final FilterCard filter = new FilterCard("a basic Swamp, Mountain, or Forest card");
diff --git a/Mage.Sets/src/mage/cards/j/JundSojourners.java b/Mage.Sets/src/mage/cards/j/JundSojourners.java
index f309d88735b..285d4df79ae 100644
--- a/Mage.Sets/src/mage/cards/j/JundSojourners.java
+++ b/Mage.Sets/src/mage/cards/j/JundSojourners.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class JundSojourners extends CardImpl {
+public final class JundSojourners extends CardImpl {
public JundSojourners(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JungleBarrier.java b/Mage.Sets/src/mage/cards/j/JungleBarrier.java
index 5f0d04b8e48..0304a84dcdd 100644
--- a/Mage.Sets/src/mage/cards/j/JungleBarrier.java
+++ b/Mage.Sets/src/mage/cards/j/JungleBarrier.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class JungleBarrier extends CardImpl {
+public final class JungleBarrier extends CardImpl {
public JungleBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JungleBasin.java b/Mage.Sets/src/mage/cards/j/JungleBasin.java
index b1b541d9ccd..8a09f73379f 100644
--- a/Mage.Sets/src/mage/cards/j/JungleBasin.java
+++ b/Mage.Sets/src/mage/cards/j/JungleBasin.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class JungleBasin extends CardImpl {
+public final class JungleBasin extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Forest");
diff --git a/Mage.Sets/src/mage/cards/j/JungleCreeper.java b/Mage.Sets/src/mage/cards/j/JungleCreeper.java
index 6a3e56e4ec4..a8a09ed0cbb 100644
--- a/Mage.Sets/src/mage/cards/j/JungleCreeper.java
+++ b/Mage.Sets/src/mage/cards/j/JungleCreeper.java
@@ -1,66 +1,66 @@
-/*
- * 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.common.SimpleActivatedAbility;
-import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.SubType;
-import mage.constants.Zone;
-
-/**
- *
- * @author LevelX2
- */
-public class JungleCreeper extends CardImpl {
-
- public JungleCreeper(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{G}");
-
- this.subtype.add(SubType.ELEMENTAL);
- this.power = new MageInt(3);
- this.toughness = new MageInt(3);
-
- // {3}{B}{G}: Return Jungle Creeper from your graveyard to your hand.
- this.addAbility(new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), new ManaCostsImpl("{3}{B}{G}")));
- }
-
- public JungleCreeper(final JungleCreeper card) {
- super(card);
- }
-
- @Override
- public JungleCreeper copy() {
- return new JungleCreeper(this);
- }
-}
+/*
+ * 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.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class JungleCreeper extends CardImpl {
+
+ public JungleCreeper(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{G}");
+
+ this.subtype.add(SubType.ELEMENTAL);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // {3}{B}{G}: Return Jungle Creeper from your graveyard to your hand.
+ this.addAbility(new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), new ManaCostsImpl("{3}{B}{G}")));
+ }
+
+ public JungleCreeper(final JungleCreeper card) {
+ super(card);
+ }
+
+ @Override
+ public JungleCreeper copy() {
+ return new JungleCreeper(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/j/JungleDelver.java b/Mage.Sets/src/mage/cards/j/JungleDelver.java
index ddeee1ba8b0..47b5a0882a9 100644
--- a/Mage.Sets/src/mage/cards/j/JungleDelver.java
+++ b/Mage.Sets/src/mage/cards/j/JungleDelver.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class JungleDelver extends CardImpl {
+public final class JungleDelver extends CardImpl {
public JungleDelver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JungleHollow.java b/Mage.Sets/src/mage/cards/j/JungleHollow.java
index 38f99c35731..5da45613e72 100644
--- a/Mage.Sets/src/mage/cards/j/JungleHollow.java
+++ b/Mage.Sets/src/mage/cards/j/JungleHollow.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class JungleHollow extends CardImpl {
+public final class JungleHollow extends CardImpl {
public JungleHollow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/j/JungleLion.java b/Mage.Sets/src/mage/cards/j/JungleLion.java
index f6f26de25a5..047f40d40c9 100644
--- a/Mage.Sets/src/mage/cards/j/JungleLion.java
+++ b/Mage.Sets/src/mage/cards/j/JungleLion.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
* @author LoneFox
*/
-public class JungleLion extends CardImpl {
+public final class JungleLion extends CardImpl {
public JungleLion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JunglePatrol.java b/Mage.Sets/src/mage/cards/j/JunglePatrol.java
index 958908df754..92551d6f84a 100644
--- a/Mage.Sets/src/mage/cards/j/JunglePatrol.java
+++ b/Mage.Sets/src/mage/cards/j/JunglePatrol.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class JunglePatrol extends CardImpl {
+public final class JunglePatrol extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a token named Wood");
diff --git a/Mage.Sets/src/mage/cards/j/JungleShrine.java b/Mage.Sets/src/mage/cards/j/JungleShrine.java
index e49a79d827a..80145ae9c6a 100644
--- a/Mage.Sets/src/mage/cards/j/JungleShrine.java
+++ b/Mage.Sets/src/mage/cards/j/JungleShrine.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class JungleShrine extends CardImpl {
+public final class JungleShrine extends CardImpl {
public JungleShrine (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/j/JungleTroll.java b/Mage.Sets/src/mage/cards/j/JungleTroll.java
index f4e3f563dad..1caf5862988 100644
--- a/Mage.Sets/src/mage/cards/j/JungleTroll.java
+++ b/Mage.Sets/src/mage/cards/j/JungleTroll.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class JungleTroll extends CardImpl {
+public final class JungleTroll extends CardImpl {
public JungleTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JungleVillage.java b/Mage.Sets/src/mage/cards/j/JungleVillage.java
index de3d303fc07..8816755d69b 100644
--- a/Mage.Sets/src/mage/cards/j/JungleVillage.java
+++ b/Mage.Sets/src/mage/cards/j/JungleVillage.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class JungleVillage extends CardImpl {
+public final class JungleVillage extends CardImpl {
public JungleVillage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
@@ -74,7 +74,7 @@ public class JungleVillage extends CardImpl {
return new JungleVillage(this);
}
- public class JungleVillageAbility extends ActivatedAbilityImpl {
+ public final class JungleVillageAbility extends ActivatedAbilityImpl {
public JungleVillageAbility(JungleVillageAbility ability) {
super(ability);
diff --git a/Mage.Sets/src/mage/cards/j/JungleWayfinder.java b/Mage.Sets/src/mage/cards/j/JungleWayfinder.java
new file mode 100644
index 00000000000..d2f9578cd07
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/j/JungleWayfinder.java
@@ -0,0 +1,119 @@
+/*
+ * 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.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.cards.CardsImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.filter.StaticFilters;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetCardInLibrary;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class JungleWayfinder extends CardImpl {
+
+ public JungleWayfinder(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
+
+ this.subtype.add(SubType.ELF);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // When Jungle Wayfinder enters the battlefield, each player may search their library for a basic land card, reveal it, put it into their hand, then shuffle their library.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new JungleWayfinderEffect(), false));
+ }
+
+ public JungleWayfinder(final JungleWayfinder card) {
+ super(card);
+ }
+
+ @Override
+ public JungleWayfinder copy() {
+ return new JungleWayfinder(this);
+ }
+}
+
+class JungleWayfinderEffect extends OneShotEffect {
+
+ public JungleWayfinderEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "each player may search their library for a basic land card, reveal it, put it into their hand, then shuffle their library";
+ }
+
+ public JungleWayfinderEffect(final JungleWayfinderEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public JungleWayfinderEffect copy() {
+ return new JungleWayfinderEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND);
+ if (player.chooseUse(Outcome.Benefit, "Search your library for a card to put into your hand?", source, game)) {
+ player.searchLibrary(target, game);
+ for (UUID cardId : target.getTargets()) {
+ Card card = player.getLibrary().getCard(cardId, game);
+ if (card != null) {
+ player.revealCards(source, new CardsImpl(card), game);
+ player.moveCards(card, Zone.HAND, source, game);
+ }
+ }
+ player.shuffleLibrary(source, game);
+ }
+ }
+ }
+ // prevent undo
+ controller.resetStoredBookmark(game);
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/j/JungleWeaver.java b/Mage.Sets/src/mage/cards/j/JungleWeaver.java
index 39f97db5101..30fc5e8baf8 100644
--- a/Mage.Sets/src/mage/cards/j/JungleWeaver.java
+++ b/Mage.Sets/src/mage/cards/j/JungleWeaver.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class JungleWeaver extends CardImpl {
+public final class JungleWeaver extends CardImpl {
public JungleWeaver (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JungleWurm.java b/Mage.Sets/src/mage/cards/j/JungleWurm.java
index 72b7762b149..7955f750768 100644
--- a/Mage.Sets/src/mage/cards/j/JungleWurm.java
+++ b/Mage.Sets/src/mage/cards/j/JungleWurm.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class JungleWurm extends CardImpl {
+public final class JungleWurm extends CardImpl {
public JungleWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JunglebornPioneer.java b/Mage.Sets/src/mage/cards/j/JunglebornPioneer.java
index 1f49a3148b2..56e05c5adc6 100644
--- a/Mage.Sets/src/mage/cards/j/JunglebornPioneer.java
+++ b/Mage.Sets/src/mage/cards/j/JunglebornPioneer.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.MerfolkHexproofToken;
*
* @author JayDi85
*/
-public class JunglebornPioneer extends CardImpl {
+public final class JunglebornPioneer extends CardImpl {
public JunglebornPioneer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JuniperOrderAdvocate.java b/Mage.Sets/src/mage/cards/j/JuniperOrderAdvocate.java
index 71a24fd35f3..358929b8727 100644
--- a/Mage.Sets/src/mage/cards/j/JuniperOrderAdvocate.java
+++ b/Mage.Sets/src/mage/cards/j/JuniperOrderAdvocate.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class JuniperOrderAdvocate extends CardImpl {
+public final class JuniperOrderAdvocate extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creatures you control");
diff --git a/Mage.Sets/src/mage/cards/j/JuniperOrderDruid.java b/Mage.Sets/src/mage/cards/j/JuniperOrderDruid.java
index af842a4441b..f732a3687f9 100644
--- a/Mage.Sets/src/mage/cards/j/JuniperOrderDruid.java
+++ b/Mage.Sets/src/mage/cards/j/JuniperOrderDruid.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author hanasu
*/
-public class JuniperOrderDruid extends CardImpl {
+public final class JuniperOrderDruid extends CardImpl {
public JuniperOrderDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JuniperOrderRanger.java b/Mage.Sets/src/mage/cards/j/JuniperOrderRanger.java
index 4331c0b0760..44d3660ee81 100644
--- a/Mage.Sets/src/mage/cards/j/JuniperOrderRanger.java
+++ b/Mage.Sets/src/mage/cards/j/JuniperOrderRanger.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author emerald000
*/
-public class JuniperOrderRanger extends CardImpl {
+public final class JuniperOrderRanger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
diff --git a/Mage.Sets/src/mage/cards/j/JunkDiver.java b/Mage.Sets/src/mage/cards/j/JunkDiver.java
index 2e223c70cc7..97d59409755 100644
--- a/Mage.Sets/src/mage/cards/j/JunkDiver.java
+++ b/Mage.Sets/src/mage/cards/j/JunkDiver.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class JunkDiver extends CardImpl {
+public final class JunkDiver extends CardImpl {
private static final FilterArtifactCard filter = new FilterArtifactCard("another target artifact card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/j/JunkGolem.java b/Mage.Sets/src/mage/cards/j/JunkGolem.java
index 73bb7f1c6d3..d5ea939493f 100644
--- a/Mage.Sets/src/mage/cards/j/JunkGolem.java
+++ b/Mage.Sets/src/mage/cards/j/JunkGolem.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class JunkGolem extends CardImpl {
+public final class JunkGolem extends CardImpl {
public JunkGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/j/Junktroller.java b/Mage.Sets/src/mage/cards/j/Junktroller.java
index 0930c7988fb..d3ec6998a71 100644
--- a/Mage.Sets/src/mage/cards/j/Junktroller.java
+++ b/Mage.Sets/src/mage/cards/j/Junktroller.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class Junktroller extends CardImpl {
+public final class Junktroller extends CardImpl {
public Junktroller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/j/JunkyoBell.java b/Mage.Sets/src/mage/cards/j/JunkyoBell.java
index acb490930e4..aeef50b04ee 100644
--- a/Mage.Sets/src/mage/cards/j/JunkyoBell.java
+++ b/Mage.Sets/src/mage/cards/j/JunkyoBell.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author LevelX
*/
-public class JunkyoBell extends CardImpl {
+public final class JunkyoBell extends CardImpl {
public JunkyoBell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/j/JuntuStakes.java b/Mage.Sets/src/mage/cards/j/JuntuStakes.java
index 0df733d42e7..aa44ef001db 100644
--- a/Mage.Sets/src/mage/cards/j/JuntuStakes.java
+++ b/Mage.Sets/src/mage/cards/j/JuntuStakes.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author LoneFox
*/
-public class JuntuStakes extends CardImpl {
+public final class JuntuStakes extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures with power 1 or less");
diff --git a/Mage.Sets/src/mage/cards/j/JununEfreet.java b/Mage.Sets/src/mage/cards/j/JununEfreet.java
index 7e578a379bf..28ddc6504a1 100644
--- a/Mage.Sets/src/mage/cards/j/JununEfreet.java
+++ b/Mage.Sets/src/mage/cards/j/JununEfreet.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class JununEfreet extends CardImpl {
+public final class JununEfreet extends CardImpl {
public JununEfreet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/j/JushiApprentice.java b/Mage.Sets/src/mage/cards/j/JushiApprentice.java
index c1107af4897..bd3c6aa77bd 100644
--- a/Mage.Sets/src/mage/cards/j/JushiApprentice.java
+++ b/Mage.Sets/src/mage/cards/j/JushiApprentice.java
@@ -54,7 +54,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class JushiApprentice extends CardImpl {
+public final class JushiApprentice extends CardImpl {
public JushiApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JustFate.java b/Mage.Sets/src/mage/cards/j/JustFate.java
index 214396cd316..da7ed976dad 100644
--- a/Mage.Sets/src/mage/cards/j/JustFate.java
+++ b/Mage.Sets/src/mage/cards/j/JustFate.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author TheElk801
*/
-public class JustFate extends CardImpl {
+public final class JustFate extends CardImpl {
public JustFate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JustTheWind.java b/Mage.Sets/src/mage/cards/j/JustTheWind.java
index 61aa260d55b..b5cbcffc9ab 100644
--- a/Mage.Sets/src/mage/cards/j/JustTheWind.java
+++ b/Mage.Sets/src/mage/cards/j/JustTheWind.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class JustTheWind extends CardImpl {
+public final class JustTheWind extends CardImpl {
public JustTheWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/Justice.java b/Mage.Sets/src/mage/cards/j/Justice.java
index edb9b80ad7e..f675b7884aa 100644
--- a/Mage.Sets/src/mage/cards/j/Justice.java
+++ b/Mage.Sets/src/mage/cards/j/Justice.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class Justice extends CardImpl {
+public final class Justice extends CardImpl {
public Justice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/j/JuvenileGloomwidow.java b/Mage.Sets/src/mage/cards/j/JuvenileGloomwidow.java
index 0036b759de8..9a96309b07d 100644
--- a/Mage.Sets/src/mage/cards/j/JuvenileGloomwidow.java
+++ b/Mage.Sets/src/mage/cards/j/JuvenileGloomwidow.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class JuvenileGloomwidow extends CardImpl {
+public final class JuvenileGloomwidow extends CardImpl {
public JuvenileGloomwidow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/Juxtapose.java b/Mage.Sets/src/mage/cards/j/Juxtapose.java
index 29a926080a1..7687ce2f1a8 100644
--- a/Mage.Sets/src/mage/cards/j/Juxtapose.java
+++ b/Mage.Sets/src/mage/cards/j/Juxtapose.java
@@ -61,7 +61,7 @@ import mage.target.TargetPlayer;
*
* @author Quercitron
*/
-public class Juxtapose extends CardImpl {
+public final class Juxtapose extends CardImpl {
public Juxtapose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JuzamDjinn.java b/Mage.Sets/src/mage/cards/j/JuzamDjinn.java
index 6ed1f650c07..e3256176ddf 100644
--- a/Mage.Sets/src/mage/cards/j/JuzamDjinn.java
+++ b/Mage.Sets/src/mage/cards/j/JuzamDjinn.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author Loki
*/
-public class JuzamDjinn extends CardImpl {
+public final class JuzamDjinn extends CardImpl {
public JuzamDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/j/JwarIsleAvenger.java b/Mage.Sets/src/mage/cards/j/JwarIsleAvenger.java
index bf5538fddd3..d1c28afa8f4 100644
--- a/Mage.Sets/src/mage/cards/j/JwarIsleAvenger.java
+++ b/Mage.Sets/src/mage/cards/j/JwarIsleAvenger.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class JwarIsleAvenger extends CardImpl {
+public final class JwarIsleAvenger extends CardImpl {
public JwarIsleAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JwarIsleRefuge.java b/Mage.Sets/src/mage/cards/j/JwarIsleRefuge.java
index caee2a86ce6..e905ada16d1 100644
--- a/Mage.Sets/src/mage/cards/j/JwarIsleRefuge.java
+++ b/Mage.Sets/src/mage/cards/j/JwarIsleRefuge.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class JwarIsleRefuge extends CardImpl {
+public final class JwarIsleRefuge extends CardImpl {
public JwarIsleRefuge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/j/JwariScuttler.java b/Mage.Sets/src/mage/cards/j/JwariScuttler.java
index 5160a22efad..c094a920982 100644
--- a/Mage.Sets/src/mage/cards/j/JwariScuttler.java
+++ b/Mage.Sets/src/mage/cards/j/JwariScuttler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class JwariScuttler extends CardImpl {
+public final class JwariScuttler extends CardImpl {
public JwariScuttler (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/j/JwariShapeshifter.java b/Mage.Sets/src/mage/cards/j/JwariShapeshifter.java
index 32c0ac74c6a..9afbb2f64f4 100644
--- a/Mage.Sets/src/mage/cards/j/JwariShapeshifter.java
+++ b/Mage.Sets/src/mage/cards/j/JwariShapeshifter.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author jeffwadsworth
*/
-public class JwariShapeshifter extends CardImpl {
+public final class JwariShapeshifter extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Ally creature");
diff --git a/Mage.Sets/src/mage/cards/k/KaaliaOfTheVast.java b/Mage.Sets/src/mage/cards/k/KaaliaOfTheVast.java
index 80107f5e711..25fb8696390 100644
--- a/Mage.Sets/src/mage/cards/k/KaaliaOfTheVast.java
+++ b/Mage.Sets/src/mage/cards/k/KaaliaOfTheVast.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Backfir3
*/
-public class KaaliaOfTheVast extends CardImpl {
+public final class KaaliaOfTheVast extends CardImpl {
public KaaliaOfTheVast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KabiraCrossroads.java b/Mage.Sets/src/mage/cards/k/KabiraCrossroads.java
index 6749e5e5bbb..ea935153255 100644
--- a/Mage.Sets/src/mage/cards/k/KabiraCrossroads.java
+++ b/Mage.Sets/src/mage/cards/k/KabiraCrossroads.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class KabiraCrossroads extends CardImpl {
+public final class KabiraCrossroads extends CardImpl {
public KabiraCrossroads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/k/KabiraEvangel.java b/Mage.Sets/src/mage/cards/k/KabiraEvangel.java
index e05440f5bc7..a879cfe884f 100644
--- a/Mage.Sets/src/mage/cards/k/KabiraEvangel.java
+++ b/Mage.Sets/src/mage/cards/k/KabiraEvangel.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jeffwadsworth
*/
-public class KabiraEvangel extends CardImpl {
+public final class KabiraEvangel extends CardImpl {
private static final FilterControlledCreaturePermanent FILTER1 = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/k/KabiraVindicator.java b/Mage.Sets/src/mage/cards/k/KabiraVindicator.java
index 66b2a6ee8b9..aedbc091767 100644
--- a/Mage.Sets/src/mage/cards/k/KabiraVindicator.java
+++ b/Mage.Sets/src/mage/cards/k/KabiraVindicator.java
@@ -49,7 +49,7 @@ import mage.filter.StaticFilters;
*
* @author North, noxx
*/
-public class KabiraVindicator extends LevelerCard {
+public final class KabiraVindicator extends LevelerCard {
public KabiraVindicator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KabutoMoth.java b/Mage.Sets/src/mage/cards/k/KabutoMoth.java
index 36253db222a..085a86c7c67 100644
--- a/Mage.Sets/src/mage/cards/k/KabutoMoth.java
+++ b/Mage.Sets/src/mage/cards/k/KabutoMoth.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class KabutoMoth extends CardImpl {
+public final class KabutoMoth extends CardImpl {
public KabutoMoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KaervekTheMerciless.java b/Mage.Sets/src/mage/cards/k/KaervekTheMerciless.java
index 19bab1ed43a..0e8a52c74b3 100644
--- a/Mage.Sets/src/mage/cards/k/KaervekTheMerciless.java
+++ b/Mage.Sets/src/mage/cards/k/KaervekTheMerciless.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
* @author jeffwadsworth
*
*/
-public class KaervekTheMerciless extends CardImpl {
+public final class KaervekTheMerciless extends CardImpl {
public KaervekTheMerciless(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KaerveksHex.java b/Mage.Sets/src/mage/cards/k/KaerveksHex.java
index e4953bb1531..3d3ce7bcdfe 100644
--- a/Mage.Sets/src/mage/cards/k/KaerveksHex.java
+++ b/Mage.Sets/src/mage/cards/k/KaerveksHex.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author TheElk801
*/
-public class KaerveksHex extends CardImpl {
+public final class KaerveksHex extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/k/KaerveksPurge.java b/Mage.Sets/src/mage/cards/k/KaerveksPurge.java
index 095cb763b92..7fcdf1675fb 100644
--- a/Mage.Sets/src/mage/cards/k/KaerveksPurge.java
+++ b/Mage.Sets/src/mage/cards/k/KaerveksPurge.java
@@ -1,119 +1,119 @@
-/*
- * 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.k;
-
-import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.SpellAbility;
-import mage.abilities.effects.OneShotEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.ComparisonType;
-import mage.constants.Outcome;
-import mage.constants.Zone;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.common.TargetCreaturePermanent;
-
-/**
- *
- * @author sinsedrix
- */
-public class KaerveksPurge extends CardImpl {
-
- public KaerveksPurge(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{R}");
-
- // Destroy target creature with converted mana cost X. If that creature dies this way, Kaervek's Purge deals damage equal to the creature's power to the creature's controller.
- this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature with converted mana cost X")));
- this.getSpellAbility().addEffect(new KaerveksPurgeEffect());
- }
-
- @Override
- public void adjustTargets(Ability ability, Game game) {
- if (ability instanceof SpellAbility) {
- ability.getTargets().clear();
- int xValue = ability.getManaCostsToPay().getX();
- FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with converted mana cost X");
- filter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
- ability.addTarget(new TargetCreaturePermanent(filter));
- }
- }
-
- public KaerveksPurge(final KaerveksPurge card) {
- super(card);
- }
-
- @Override
- public KaerveksPurge copy() {
- return new KaerveksPurge(this);
- }
-}
-
-class KaerveksPurgeEffect extends OneShotEffect {
-
- public KaerveksPurgeEffect() {
- super(Outcome.DestroyPermanent);
- this.staticText = "Destroy target creature with converted mana cost X. If that creature dies this way, {this} deals damage equal to the creature's power to the creature's controller";
- }
-
- public KaerveksPurgeEffect(final KaerveksPurgeEffect effect) {
- super(effect);
- }
-
- @Override
- public KaerveksPurgeEffect copy() {
- return new KaerveksPurgeEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- // Destroy target creature with converted mana cost X.
- Permanent targetCreature = game.getPermanent(getTargetPointer().getFirst(game, source));
- if (targetCreature != null && targetCreature.destroy(source.getSourceId(), game, false)) {
- game.applyEffects();
- if (targetCreature.getZoneChangeCounter(game) + 1 == game.getState().getZoneChangeCounter(targetCreature.getId())
- && !game.getState().getZone(targetCreature.getId()).equals(Zone.GRAVEYARD)) {
- // A replacement effect has moved the card to another zone as graveyard
- return true;
- }
- // If that creature dies this way, Kaervek's Purge deals damage equal to the creature's power to the creature's controller
- Player creatureController = game.getPlayer(targetCreature.getControllerId());
- int power = targetCreature.getPower().getValue();
- if (creatureController != null) {
- creatureController.damage(power, source.getSourceId(), game, false, true);
- }
- }
- return true;
- }
-
-}
+/*
+ * 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.k;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.SpellAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.ComparisonType;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author sinsedrix
+ */
+public final class KaerveksPurge extends CardImpl {
+
+ public KaerveksPurge(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{R}");
+
+ // Destroy target creature with converted mana cost X. If that creature dies this way, Kaervek's Purge deals damage equal to the creature's power to the creature's controller.
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature with converted mana cost X")));
+ this.getSpellAbility().addEffect(new KaerveksPurgeEffect());
+ }
+
+ @Override
+ public void adjustTargets(Ability ability, Game game) {
+ if (ability instanceof SpellAbility) {
+ ability.getTargets().clear();
+ int xValue = ability.getManaCostsToPay().getX();
+ FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with converted mana cost X");
+ filter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ }
+ }
+
+ public KaerveksPurge(final KaerveksPurge card) {
+ super(card);
+ }
+
+ @Override
+ public KaerveksPurge copy() {
+ return new KaerveksPurge(this);
+ }
+}
+
+class KaerveksPurgeEffect extends OneShotEffect {
+
+ public KaerveksPurgeEffect() {
+ super(Outcome.DestroyPermanent);
+ this.staticText = "Destroy target creature with converted mana cost X. If that creature dies this way, {this} deals damage equal to the creature's power to the creature's controller";
+ }
+
+ public KaerveksPurgeEffect(final KaerveksPurgeEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public KaerveksPurgeEffect copy() {
+ return new KaerveksPurgeEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ // Destroy target creature with converted mana cost X.
+ Permanent targetCreature = game.getPermanent(getTargetPointer().getFirst(game, source));
+ if (targetCreature != null && targetCreature.destroy(source.getSourceId(), game, false)) {
+ game.applyEffects();
+ if (targetCreature.getZoneChangeCounter(game) + 1 == game.getState().getZoneChangeCounter(targetCreature.getId())
+ && !game.getState().getZone(targetCreature.getId()).equals(Zone.GRAVEYARD)) {
+ // A replacement effect has moved the card to another zone as graveyard
+ return true;
+ }
+ // If that creature dies this way, Kaervek's Purge deals damage equal to the creature's power to the creature's controller
+ Player creatureController = game.getPlayer(targetCreature.getControllerId());
+ int power = targetCreature.getPower().getValue();
+ if (creatureController != null) {
+ creatureController.damage(power, source.getSourceId(), game, false, true);
+ }
+ }
+ return true;
+ }
+
+}
diff --git a/Mage.Sets/src/mage/cards/k/KaerveksSpite.java b/Mage.Sets/src/mage/cards/k/KaerveksSpite.java
index 8602a8c41be..f38414c79f4 100644
--- a/Mage.Sets/src/mage/cards/k/KaerveksSpite.java
+++ b/Mage.Sets/src/mage/cards/k/KaerveksSpite.java
@@ -10,7 +10,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.common.FilterControlledPermanent;
-public class KaerveksSpite extends CardImpl {
+public final class KaerveksSpite extends CardImpl {
public KaerveksSpite(UUID ownerId, CardSetInfo cardSetInfo) {
super(ownerId, cardSetInfo, new CardType[]{CardType.INSTANT}, "{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KaerveksTorch.java b/Mage.Sets/src/mage/cards/k/KaerveksTorch.java
index ee0b668972b..6bfaa2fb743 100644
--- a/Mage.Sets/src/mage/cards/k/KaerveksTorch.java
+++ b/Mage.Sets/src/mage/cards/k/KaerveksTorch.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
* @author LoneFox
*
*/
-public class KaerveksTorch extends CardImpl {
+public final class KaerveksTorch extends CardImpl {
public KaerveksTorch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KagemaroFirstToSuffer.java b/Mage.Sets/src/mage/cards/k/KagemaroFirstToSuffer.java
index 0004cc860bd..3a3daeecc8d 100644
--- a/Mage.Sets/src/mage/cards/k/KagemaroFirstToSuffer.java
+++ b/Mage.Sets/src/mage/cards/k/KagemaroFirstToSuffer.java
@@ -52,7 +52,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class KagemaroFirstToSuffer extends CardImpl {
+public final class KagemaroFirstToSuffer extends CardImpl {
public KagemaroFirstToSuffer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KagemarosClutch.java b/Mage.Sets/src/mage/cards/k/KagemarosClutch.java
index cf73cb11fac..22a2e014712 100644
--- a/Mage.Sets/src/mage/cards/k/KagemarosClutch.java
+++ b/Mage.Sets/src/mage/cards/k/KagemarosClutch.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KagemarosClutch extends CardImpl {
+public final class KagemarosClutch extends CardImpl {
public KagemarosClutch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KahoMinamoHistorian.java b/Mage.Sets/src/mage/cards/k/KahoMinamoHistorian.java
index e9d1f218fbd..6ce1635d7b9 100644
--- a/Mage.Sets/src/mage/cards/k/KahoMinamoHistorian.java
+++ b/Mage.Sets/src/mage/cards/k/KahoMinamoHistorian.java
@@ -30,6 +30,7 @@ package mage.cards.k;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
@@ -39,9 +40,9 @@ import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.SearchEffect;
import mage.cards.*;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.ComparisonType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.FilterCard;
@@ -57,10 +58,10 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class KahoMinamoHistorian extends CardImpl {
+public final class KahoMinamoHistorian extends CardImpl {
public KahoMinamoHistorian(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
this.addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WIZARD);
@@ -154,7 +155,7 @@ class KahoMinamoHistorianCastEffect extends OneShotEffect {
if (!cards.isEmpty() && controller.choose(Outcome.PlayForFree, cards, target, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/k/KaijinOfTheVanishingTouch.java b/Mage.Sets/src/mage/cards/k/KaijinOfTheVanishingTouch.java
index 7401ad0dfc9..e113112a37d 100644
--- a/Mage.Sets/src/mage/cards/k/KaijinOfTheVanishingTouch.java
+++ b/Mage.Sets/src/mage/cards/k/KaijinOfTheVanishingTouch.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class KaijinOfTheVanishingTouch extends CardImpl {
+public final class KaijinOfTheVanishingTouch extends CardImpl {
public KaijinOfTheVanishingTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KalastriaHealer.java b/Mage.Sets/src/mage/cards/k/KalastriaHealer.java
index 555957ee127..68ca4403604 100644
--- a/Mage.Sets/src/mage/cards/k/KalastriaHealer.java
+++ b/Mage.Sets/src/mage/cards/k/KalastriaHealer.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class KalastriaHealer extends CardImpl {
+public final class KalastriaHealer extends CardImpl {
public KalastriaHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KalastriaHighborn.java b/Mage.Sets/src/mage/cards/k/KalastriaHighborn.java
index 04f60e62c2d..88471f38081 100644
--- a/Mage.Sets/src/mage/cards/k/KalastriaHighborn.java
+++ b/Mage.Sets/src/mage/cards/k/KalastriaHighborn.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author maurer.it_at_gmail.com, TheElk801
*/
-public class KalastriaHighborn extends CardImpl {
+public final class KalastriaHighborn extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampire you control");
diff --git a/Mage.Sets/src/mage/cards/k/KalastriaNightwatch.java b/Mage.Sets/src/mage/cards/k/KalastriaNightwatch.java
index a83fbe19f5f..4355d8f336b 100644
--- a/Mage.Sets/src/mage/cards/k/KalastriaNightwatch.java
+++ b/Mage.Sets/src/mage/cards/k/KalastriaNightwatch.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class KalastriaNightwatch extends CardImpl {
+public final class KalastriaNightwatch extends CardImpl {
public KalastriaNightwatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/Kaleidostone.java b/Mage.Sets/src/mage/cards/k/Kaleidostone.java
index ee29004b5f8..707f05a3a34 100644
--- a/Mage.Sets/src/mage/cards/k/Kaleidostone.java
+++ b/Mage.Sets/src/mage/cards/k/Kaleidostone.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class Kaleidostone extends CardImpl {
+public final class Kaleidostone extends CardImpl {
public Kaleidostone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/k/KalemneDiscipleOfIroas.java b/Mage.Sets/src/mage/cards/k/KalemneDiscipleOfIroas.java
index b53abea157a..2ab24367c6a 100644
--- a/Mage.Sets/src/mage/cards/k/KalemneDiscipleOfIroas.java
+++ b/Mage.Sets/src/mage/cards/k/KalemneDiscipleOfIroas.java
@@ -57,7 +57,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class KalemneDiscipleOfIroas extends CardImpl {
+public final class KalemneDiscipleOfIroas extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a creature spell with converted mana cost 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/k/KalemnesCaptain.java b/Mage.Sets/src/mage/cards/k/KalemnesCaptain.java
index cf0c2767cc0..9c56f51dfbf 100644
--- a/Mage.Sets/src/mage/cards/k/KalemnesCaptain.java
+++ b/Mage.Sets/src/mage/cards/k/KalemnesCaptain.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class KalemnesCaptain extends CardImpl {
+public final class KalemnesCaptain extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts and enchantments");
diff --git a/Mage.Sets/src/mage/cards/k/KalitasBloodchiefOfGhet.java b/Mage.Sets/src/mage/cards/k/KalitasBloodchiefOfGhet.java
index c2c90c033cf..21c7166ad02 100644
--- a/Mage.Sets/src/mage/cards/k/KalitasBloodchiefOfGhet.java
+++ b/Mage.Sets/src/mage/cards/k/KalitasBloodchiefOfGhet.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class KalitasBloodchiefOfGhet extends CardImpl {
+public final class KalitasBloodchiefOfGhet extends CardImpl {
public KalitasBloodchiefOfGhet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java b/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java
index 35bf71b2f39..71cc7f2297f 100644
--- a/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java
+++ b/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author fireshoes
*/
-public class KalitasTraitorOfGhet extends CardImpl {
+public final class KalitasTraitorOfGhet extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Vampire or Zombie");
diff --git a/Mage.Sets/src/mage/cards/k/KalonianBehemoth.java b/Mage.Sets/src/mage/cards/k/KalonianBehemoth.java
index 2e474849129..ac26a549560 100644
--- a/Mage.Sets/src/mage/cards/k/KalonianBehemoth.java
+++ b/Mage.Sets/src/mage/cards/k/KalonianBehemoth.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KalonianBehemoth extends CardImpl {
+public final class KalonianBehemoth extends CardImpl {
public KalonianBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KalonianHydra.java b/Mage.Sets/src/mage/cards/k/KalonianHydra.java
index 4321c9e20b4..d390314a13d 100644
--- a/Mage.Sets/src/mage/cards/k/KalonianHydra.java
+++ b/Mage.Sets/src/mage/cards/k/KalonianHydra.java
@@ -53,7 +53,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class KalonianHydra extends CardImpl {
+public final class KalonianHydra extends CardImpl {
public KalonianHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KalonianTusker.java b/Mage.Sets/src/mage/cards/k/KalonianTusker.java
index f91100d0555..7fd639dbbdf 100644
--- a/Mage.Sets/src/mage/cards/k/KalonianTusker.java
+++ b/Mage.Sets/src/mage/cards/k/KalonianTusker.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class KalonianTusker extends CardImpl {
+public final class KalonianTusker extends CardImpl {
public KalonianTusker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KalonianTwingrove.java b/Mage.Sets/src/mage/cards/k/KalonianTwingrove.java
index 3bac921e35c..cf6552a8995 100644
--- a/Mage.Sets/src/mage/cards/k/KalonianTwingrove.java
+++ b/Mage.Sets/src/mage/cards/k/KalonianTwingrove.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.KalonianTwingroveTreefolkWarriorToken;
*
* @author LevelX2
*/
-public class KalonianTwingrove extends CardImpl {
+public final class KalonianTwingrove extends CardImpl {
final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
diff --git a/Mage.Sets/src/mage/cards/k/KamahlFistOfKrosa.java b/Mage.Sets/src/mage/cards/k/KamahlFistOfKrosa.java
index 08090565b6b..ad68a516f60 100644
--- a/Mage.Sets/src/mage/cards/k/KamahlFistOfKrosa.java
+++ b/Mage.Sets/src/mage/cards/k/KamahlFistOfKrosa.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Backfir3
*/
-public class KamahlFistOfKrosa extends CardImpl {
+public final class KamahlFistOfKrosa extends CardImpl {
public KamahlFistOfKrosa(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/k/KamahlPitFighter.java b/Mage.Sets/src/mage/cards/k/KamahlPitFighter.java
index 5e0767ac9c3..5871dc76adc 100644
--- a/Mage.Sets/src/mage/cards/k/KamahlPitFighter.java
+++ b/Mage.Sets/src/mage/cards/k/KamahlPitFighter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class KamahlPitFighter extends CardImpl {
+public final class KamahlPitFighter extends CardImpl {
public KamahlPitFighter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KamahlsDesire.java b/Mage.Sets/src/mage/cards/k/KamahlsDesire.java
index f965a1e5e0a..6a3a5cf5608 100644
--- a/Mage.Sets/src/mage/cards/k/KamahlsDesire.java
+++ b/Mage.Sets/src/mage/cards/k/KamahlsDesire.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class KamahlsDesire extends CardImpl {
+public final class KamahlsDesire extends CardImpl {
public KamahlsDesire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KamahlsDruidicVow.java b/Mage.Sets/src/mage/cards/k/KamahlsDruidicVow.java
index 1cb1a97158f..727a4263a88 100644
--- a/Mage.Sets/src/mage/cards/k/KamahlsDruidicVow.java
+++ b/Mage.Sets/src/mage/cards/k/KamahlsDruidicVow.java
@@ -26,7 +26,7 @@ import mage.target.TargetCard;
/**
* @author JRHerlehy Created on 4/8/18.
*/
-public class KamahlsDruidicVow extends CardImpl {
+public final class KamahlsDruidicVow extends CardImpl {
public KamahlsDruidicVow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KamahlsSledge.java b/Mage.Sets/src/mage/cards/k/KamahlsSledge.java
index 51ed81268e6..1be5282f2ac 100644
--- a/Mage.Sets/src/mage/cards/k/KamahlsSledge.java
+++ b/Mage.Sets/src/mage/cards/k/KamahlsSledge.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class KamahlsSledge extends CardImpl {
+public final class KamahlsSledge extends CardImpl {
public KamahlsSledge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KamahlsSummons.java b/Mage.Sets/src/mage/cards/k/KamahlsSummons.java
index a621481a52e..68a11ed84b1 100644
--- a/Mage.Sets/src/mage/cards/k/KamahlsSummons.java
+++ b/Mage.Sets/src/mage/cards/k/KamahlsSummons.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInHand;
*
* @author L_J
*/
-public class KamahlsSummons extends CardImpl {
+public final class KamahlsSummons extends CardImpl {
public KamahlsSummons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KambalConsulOfAllocation.java b/Mage.Sets/src/mage/cards/k/KambalConsulOfAllocation.java
index 5147ea4705d..a4ee3173bec 100644
--- a/Mage.Sets/src/mage/cards/k/KambalConsulOfAllocation.java
+++ b/Mage.Sets/src/mage/cards/k/KambalConsulOfAllocation.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author emerald000
*/
-public class KambalConsulOfAllocation extends CardImpl {
+public final class KambalConsulOfAllocation extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
static {
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfAncientLaw.java b/Mage.Sets/src/mage/cards/k/KamiOfAncientLaw.java
index 1f3c7718137..9153ec23cad 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfAncientLaw.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfAncientLaw.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Loki
*/
-public class KamiOfAncientLaw extends CardImpl {
+public final class KamiOfAncientLaw extends CardImpl {
public KamiOfAncientLaw (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfEmptyGraves.java b/Mage.Sets/src/mage/cards/k/KamiOfEmptyGraves.java
index af26c026333..02cd844ac20 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfEmptyGraves.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfEmptyGraves.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KamiOfEmptyGraves extends CardImpl {
+public final class KamiOfEmptyGraves extends CardImpl {
public KamiOfEmptyGraves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfFalseHope.java b/Mage.Sets/src/mage/cards/k/KamiOfFalseHope.java
index 8ea37664a63..41b451734af 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfFalseHope.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfFalseHope.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class KamiOfFalseHope extends CardImpl {
+public final class KamiOfFalseHope extends CardImpl {
public KamiOfFalseHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfFiresRoar.java b/Mage.Sets/src/mage/cards/k/KamiOfFiresRoar.java
index 73e7bdb1fb2..8bfdfe2e8d4 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfFiresRoar.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfFiresRoar.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class KamiOfFiresRoar extends CardImpl {
+public final class KamiOfFiresRoar extends CardImpl {
public KamiOfFiresRoar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfLunacy.java b/Mage.Sets/src/mage/cards/k/KamiOfLunacy.java
index 1d823e08608..b73e7aba4d9 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfLunacy.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfLunacy.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class KamiOfLunacy extends CardImpl {
+public final class KamiOfLunacy extends CardImpl {
public KamiOfLunacy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfOldStone.java b/Mage.Sets/src/mage/cards/k/KamiOfOldStone.java
index 3c9b93bd36b..8aa419d59b9 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfOldStone.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfOldStone.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class KamiOfOldStone extends CardImpl {
+public final class KamiOfOldStone extends CardImpl {
public KamiOfOldStone (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfTatteredShoji.java b/Mage.Sets/src/mage/cards/k/KamiOfTatteredShoji.java
index 3ce1dd011e8..77a3528076c 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfTatteredShoji.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfTatteredShoji.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class KamiOfTatteredShoji extends CardImpl {
+public final class KamiOfTatteredShoji extends CardImpl {
public KamiOfTatteredShoji(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfTheCrescentMoon.java b/Mage.Sets/src/mage/cards/k/KamiOfTheCrescentMoon.java
index 4c9ec6101a0..97fd47917b7 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfTheCrescentMoon.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfTheCrescentMoon.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class KamiOfTheCrescentMoon extends CardImpl {
+public final class KamiOfTheCrescentMoon extends CardImpl {
public KamiOfTheCrescentMoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfTheHonoredDead.java b/Mage.Sets/src/mage/cards/k/KamiOfTheHonoredDead.java
index 01967c209a3..d062183b04c 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfTheHonoredDead.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfTheHonoredDead.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX
*/
-public class KamiOfTheHonoredDead extends CardImpl {
+public final class KamiOfTheHonoredDead extends CardImpl {
public KamiOfTheHonoredDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfTheHunt.java b/Mage.Sets/src/mage/cards/k/KamiOfTheHunt.java
index 4fe8db8ea1e..d765d1172e5 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfTheHunt.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfTheHunt.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
/**
* @author Loki
*/
-public class KamiOfTheHunt extends CardImpl {
+public final class KamiOfTheHunt extends CardImpl {
public KamiOfTheHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfThePaintedRoad.java b/Mage.Sets/src/mage/cards/k/KamiOfThePaintedRoad.java
index cff8750ebcd..4243118ea95 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfThePaintedRoad.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfThePaintedRoad.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class KamiOfThePaintedRoad extends CardImpl {
+public final class KamiOfThePaintedRoad extends CardImpl {
public KamiOfThePaintedRoad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfThePalaceFields.java b/Mage.Sets/src/mage/cards/k/KamiOfThePalaceFields.java
index 2a08474b476..e84ac50aabd 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfThePalaceFields.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfThePalaceFields.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class KamiOfThePalaceFields extends CardImpl {
+public final class KamiOfThePalaceFields extends CardImpl {
public KamiOfThePalaceFields(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfTheTendedGarden.java b/Mage.Sets/src/mage/cards/k/KamiOfTheTendedGarden.java
index f4340416950..17c9a49a7c3 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfTheTendedGarden.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfTheTendedGarden.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
*
* @author Loki
*/
-public class KamiOfTheTendedGarden extends CardImpl {
+public final class KamiOfTheTendedGarden extends CardImpl {
public KamiOfTheTendedGarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfTheWaningMoon.java b/Mage.Sets/src/mage/cards/k/KamiOfTheWaningMoon.java
index 08fb3100878..5903a56350f 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfTheWaningMoon.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfTheWaningMoon.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class KamiOfTheWaningMoon extends CardImpl {
+public final class KamiOfTheWaningMoon extends CardImpl {
public KamiOfTheWaningMoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KamiOfTwistedReflection.java b/Mage.Sets/src/mage/cards/k/KamiOfTwistedReflection.java
index 3458d3e5df7..525e36ee9d1 100644
--- a/Mage.Sets/src/mage/cards/k/KamiOfTwistedReflection.java
+++ b/Mage.Sets/src/mage/cards/k/KamiOfTwistedReflection.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class KamiOfTwistedReflection extends CardImpl {
+public final class KamiOfTwistedReflection extends CardImpl {
public KamiOfTwistedReflection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KaminoCloningFacility.java b/Mage.Sets/src/mage/cards/k/KaminoCloningFacility.java
index c0f3cf365d9..34c8bc38893 100644
--- a/Mage.Sets/src/mage/cards/k/KaminoCloningFacility.java
+++ b/Mage.Sets/src/mage/cards/k/KaminoCloningFacility.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.TrooperToken;
*
* @author Styxo
*/
-public class KaminoCloningFacility extends CardImpl {
+public final class KaminoCloningFacility extends CardImpl {
private static final FilterSpell FILTER = new FilterSpell("a Trooper spell");
diff --git a/Mage.Sets/src/mage/cards/k/KangeeAerieKeeper.java b/Mage.Sets/src/mage/cards/k/KangeeAerieKeeper.java
index 6c2bf154405..affd5554825 100644
--- a/Mage.Sets/src/mage/cards/k/KangeeAerieKeeper.java
+++ b/Mage.Sets/src/mage/cards/k/KangeeAerieKeeper.java
@@ -56,7 +56,7 @@ import mage.game.Game;
*
* @author emerald000
*/
-public class KangeeAerieKeeper extends CardImpl {
+public final class KangeeAerieKeeper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Bird creatures");
diff --git a/Mage.Sets/src/mage/cards/k/KapshoKitefins.java b/Mage.Sets/src/mage/cards/k/KapshoKitefins.java
index 7c12c19a079..fe6b1510b5e 100644
--- a/Mage.Sets/src/mage/cards/k/KapshoKitefins.java
+++ b/Mage.Sets/src/mage/cards/k/KapshoKitefins.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KapshoKitefins extends CardImpl {
+public final class KapshoKitefins extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("{this} or another creature");
private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java b/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java
index cd7216c7795..604cf53f0e2 100644
--- a/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java
+++ b/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java
@@ -53,7 +53,7 @@ import mage.watchers.Watcher;
*
* @author emerald000
*/
-public class KaradorGhostChieftain extends CardImpl {
+public final class KaradorGhostChieftain extends CardImpl {
public KaradorGhostChieftain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/Karakas.java b/Mage.Sets/src/mage/cards/k/Karakas.java
index 8988a2244fe..c382fab0f09 100644
--- a/Mage.Sets/src/mage/cards/k/Karakas.java
+++ b/Mage.Sets/src/mage/cards/k/Karakas.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Plopman
*/
-public class Karakas extends CardImpl {
+public final class Karakas extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature");
diff --git a/Mage.Sets/src/mage/cards/k/KarametraGodOfHarvests.java b/Mage.Sets/src/mage/cards/k/KarametraGodOfHarvests.java
index 54567ed6599..230e32b168f 100644
--- a/Mage.Sets/src/mage/cards/k/KarametraGodOfHarvests.java
+++ b/Mage.Sets/src/mage/cards/k/KarametraGodOfHarvests.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class KarametraGodOfHarvests extends CardImpl {
+public final class KarametraGodOfHarvests extends CardImpl {
private static final FilterCard filter = new FilterCard("a Forest or Plains card");
diff --git a/Mage.Sets/src/mage/cards/k/KarametrasAcolyte.java b/Mage.Sets/src/mage/cards/k/KarametrasAcolyte.java
index f0af2f6933f..2e088e0fbb6 100644
--- a/Mage.Sets/src/mage/cards/k/KarametrasAcolyte.java
+++ b/Mage.Sets/src/mage/cards/k/KarametrasAcolyte.java
@@ -42,7 +42,7 @@ import mage.constants.ColoredManaSymbol;
*
* @author LevelX2
*/
-public class KarametrasAcolyte extends CardImpl {
+public final class KarametrasAcolyte extends CardImpl {
public KarametrasAcolyte(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KarametrasFavor.java b/Mage.Sets/src/mage/cards/k/KarametrasFavor.java
index 5cb3d4557d2..ae3cb630599 100644
--- a/Mage.Sets/src/mage/cards/k/KarametrasFavor.java
+++ b/Mage.Sets/src/mage/cards/k/KarametrasFavor.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KarametrasFavor extends CardImpl {
+public final class KarametrasFavor extends CardImpl {
public KarametrasFavor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KarganDragonlord.java b/Mage.Sets/src/mage/cards/k/KarganDragonlord.java
index 9975ff801bd..0a3c4df7af6 100644
--- a/Mage.Sets/src/mage/cards/k/KarganDragonlord.java
+++ b/Mage.Sets/src/mage/cards/k/KarganDragonlord.java
@@ -51,7 +51,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com, noxx
*/
-public class KarganDragonlord extends LevelerCard {
+public final class KarganDragonlord extends LevelerCard {
public KarganDragonlord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java b/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java
index 43c4993629b..6b7b93da617 100644
--- a/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java
+++ b/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class KariZevSkyshipRaider extends CardImpl {
+public final class KariZevSkyshipRaider extends CardImpl {
public KariZevSkyshipRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java b/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java
index 3d978e13d6c..7223951add3 100644
--- a/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java
+++ b/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class KariZevsExpertise extends CardImpl {
+public final class KariZevsExpertise extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
diff --git a/Mage.Sets/src/mage/cards/k/KarlovOfTheGhostCouncil.java b/Mage.Sets/src/mage/cards/k/KarlovOfTheGhostCouncil.java
index aa6094958ed..65ed6b55d6d 100644
--- a/Mage.Sets/src/mage/cards/k/KarlovOfTheGhostCouncil.java
+++ b/Mage.Sets/src/mage/cards/k/KarlovOfTheGhostCouncil.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class KarlovOfTheGhostCouncil extends CardImpl {
+public final class KarlovOfTheGhostCouncil extends CardImpl {
public KarlovOfTheGhostCouncil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/Karma.java b/Mage.Sets/src/mage/cards/k/Karma.java
index 60eb117b448..3553d2b1de6 100644
--- a/Mage.Sets/src/mage/cards/k/Karma.java
+++ b/Mage.Sets/src/mage/cards/k/Karma.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class Karma extends CardImpl {
+public final class Karma extends CardImpl {
diff --git a/Mage.Sets/src/mage/cards/k/KarmicGuide.java b/Mage.Sets/src/mage/cards/k/KarmicGuide.java
index 1fe2f7af535..2f3287a0f09 100644
--- a/Mage.Sets/src/mage/cards/k/KarmicGuide.java
+++ b/Mage.Sets/src/mage/cards/k/KarmicGuide.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Backfir3
*/
-public class KarmicGuide extends CardImpl {
+public final class KarmicGuide extends CardImpl {
public KarmicGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KarmicJustice.java b/Mage.Sets/src/mage/cards/k/KarmicJustice.java
index 52f573755d9..861e7255ce8 100644
--- a/Mage.Sets/src/mage/cards/k/KarmicJustice.java
+++ b/Mage.Sets/src/mage/cards/k/KarmicJustice.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author emerald000
*/
-public class KarmicJustice extends CardImpl {
+public final class KarmicJustice extends CardImpl {
public KarmicJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KarnLiberated.java b/Mage.Sets/src/mage/cards/k/KarnLiberated.java
index 434c3506ddc..6e237a7e530 100644
--- a/Mage.Sets/src/mage/cards/k/KarnLiberated.java
+++ b/Mage.Sets/src/mage/cards/k/KarnLiberated.java
@@ -64,7 +64,7 @@ import mage.util.CardUtil;
*
* @author bunchOfDevs
*/
-public class KarnLiberated extends CardImpl {
+public final class KarnLiberated extends CardImpl {
public KarnLiberated(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{7}");
@@ -265,15 +265,14 @@ class KarnPlayerExileEffect extends OneShotEffect {
if (sourceObject == null) {
return false;
}
- if (player != null) {
- TargetCardInHand target = new TargetCardInHand();
- if (target != null
- && target.canChoose(source.getSourceId(), player.getId(), game)) {
- if (target.chooseTarget(Outcome.Exile, player.getId(), source, game)) {
- UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter());
- return player.moveCardsToExile(new CardsImpl(target.getTargets()).getCards(game), source, game, true, exileId, sourceObject.getIdName());
- }
- }
+ if (player == null) {
+ return false;
+ }
+ TargetCardInHand target = new TargetCardInHand();
+ if (target.canChoose(source.getSourceId(), player.getId(), game)
+ && target.chooseTarget(Outcome.Exile, player.getId(), source, game)) {
+ UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter());
+ return player.moveCardsToExile(new CardsImpl(target.getTargets()).getCards(game), source, game, true, exileId, sourceObject.getIdName());
}
return false;
}
diff --git a/Mage.Sets/src/mage/cards/k/KarnScionOfUrza.java b/Mage.Sets/src/mage/cards/k/KarnScionOfUrza.java
index f2207bbd5f9..7868bfd8a17 100644
--- a/Mage.Sets/src/mage/cards/k/KarnScionOfUrza.java
+++ b/Mage.Sets/src/mage/cards/k/KarnScionOfUrza.java
@@ -62,7 +62,7 @@ import mage.target.common.TargetOpponent;
*
* @author spjspj
*/
-public class KarnScionOfUrza extends CardImpl {
+public final class KarnScionOfUrza extends CardImpl {
public KarnScionOfUrza(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/k/KarnSilverGolem.java b/Mage.Sets/src/mage/cards/k/KarnSilverGolem.java
index 528fb93e774..5e201d48bb8 100644
--- a/Mage.Sets/src/mage/cards/k/KarnSilverGolem.java
+++ b/Mage.Sets/src/mage/cards/k/KarnSilverGolem.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class KarnSilverGolem extends CardImpl {
+public final class KarnSilverGolem extends CardImpl {
private static final FilterArtifactPermanent filterNonCreature = new FilterArtifactPermanent("noncreature artifact");
diff --git a/Mage.Sets/src/mage/cards/k/KarnsTemporalSundering.java b/Mage.Sets/src/mage/cards/k/KarnsTemporalSundering.java
index 514dfa906e6..17a55ab4dbd 100644
--- a/Mage.Sets/src/mage/cards/k/KarnsTemporalSundering.java
+++ b/Mage.Sets/src/mage/cards/k/KarnsTemporalSundering.java
@@ -20,7 +20,7 @@ import mage.target.common.TargetNonlandPermanent;
/**
* @author JRHerlehy Created on 4/8/18.
*/
-public class KarnsTemporalSundering extends CardImpl {
+public final class KarnsTemporalSundering extends CardImpl {
public KarnsTemporalSundering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KarnsTouch.java b/Mage.Sets/src/mage/cards/k/KarnsTouch.java
index 40801e90f57..f39854e362b 100644
--- a/Mage.Sets/src/mage/cards/k/KarnsTouch.java
+++ b/Mage.Sets/src/mage/cards/k/KarnsTouch.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class KarnsTouch extends CardImpl {
+public final class KarnsTouch extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("noncreature artifact");
diff --git a/Mage.Sets/src/mage/cards/k/KaronaFalseGod.java b/Mage.Sets/src/mage/cards/k/KaronaFalseGod.java
index 37068eeda63..ed8ee1b152a 100644
--- a/Mage.Sets/src/mage/cards/k/KaronaFalseGod.java
+++ b/Mage.Sets/src/mage/cards/k/KaronaFalseGod.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class KaronaFalseGod extends CardImpl {
+public final class KaronaFalseGod extends CardImpl {
public KaronaFalseGod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KaronasZealot.java b/Mage.Sets/src/mage/cards/k/KaronasZealot.java
index 680f6ab59ce..00ae526714a 100644
--- a/Mage.Sets/src/mage/cards/k/KaronasZealot.java
+++ b/Mage.Sets/src/mage/cards/k/KaronasZealot.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class KaronasZealot extends CardImpl {
+public final class KaronasZealot extends CardImpl {
public KaronasZealot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/Karoo.java b/Mage.Sets/src/mage/cards/k/Karoo.java
index 07612d299e2..ae32c74e531 100644
--- a/Mage.Sets/src/mage/cards/k/Karoo.java
+++ b/Mage.Sets/src/mage/cards/k/Karoo.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class Karoo extends CardImpl {
+public final class Karoo extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Plains");
diff --git a/Mage.Sets/src/mage/cards/k/KarooMeerkat.java b/Mage.Sets/src/mage/cards/k/KarooMeerkat.java
index bbe5b1cab0e..9dfc90a3efd 100644
--- a/Mage.Sets/src/mage/cards/k/KarooMeerkat.java
+++ b/Mage.Sets/src/mage/cards/k/KarooMeerkat.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class KarooMeerkat extends CardImpl {
+public final class KarooMeerkat extends CardImpl {
public KarooMeerkat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KarplusanForest.java b/Mage.Sets/src/mage/cards/k/KarplusanForest.java
index 1a7960e6004..a104884fe94 100644
--- a/Mage.Sets/src/mage/cards/k/KarplusanForest.java
+++ b/Mage.Sets/src/mage/cards/k/KarplusanForest.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class KarplusanForest extends CardImpl {
+public final class KarplusanForest extends CardImpl {
public KarplusanForest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/k/KarplusanGiant.java b/Mage.Sets/src/mage/cards/k/KarplusanGiant.java
index 586ef2025ba..018e9d8b69e 100644
--- a/Mage.Sets/src/mage/cards/k/KarplusanGiant.java
+++ b/Mage.Sets/src/mage/cards/k/KarplusanGiant.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class KarplusanGiant extends CardImpl {
+public final class KarplusanGiant extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("untapped snow land you control");
diff --git a/Mage.Sets/src/mage/cards/k/KarplusanHound.java b/Mage.Sets/src/mage/cards/k/KarplusanHound.java
index 917f3937e34..80beca294ea 100644
--- a/Mage.Sets/src/mage/cards/k/KarplusanHound.java
+++ b/Mage.Sets/src/mage/cards/k/KarplusanHound.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class KarplusanHound extends CardImpl {
+public final class KarplusanHound extends CardImpl {
public KarplusanHound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KarplusanMinotaur.java b/Mage.Sets/src/mage/cards/k/KarplusanMinotaur.java
index b6505bfce8b..015dca2a8f7 100644
--- a/Mage.Sets/src/mage/cards/k/KarplusanMinotaur.java
+++ b/Mage.Sets/src/mage/cards/k/KarplusanMinotaur.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponent;
*
* @author L_J
*/
-public class KarplusanMinotaur extends CardImpl {
+public final class KarplusanMinotaur extends CardImpl {
public KarplusanMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KarplusanStrider.java b/Mage.Sets/src/mage/cards/k/KarplusanStrider.java
index 479eee0318b..8df02f45870 100644
--- a/Mage.Sets/src/mage/cards/k/KarplusanStrider.java
+++ b/Mage.Sets/src/mage/cards/k/KarplusanStrider.java
@@ -48,7 +48,7 @@ import mage.game.stack.Spell;
*
* @author emerald000
*/
-public class KarplusanStrider extends CardImpl {
+public final class KarplusanStrider extends CardImpl {
public KarplusanStrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KarplusanWolverine.java b/Mage.Sets/src/mage/cards/k/KarplusanWolverine.java
index 84ab4bec9c1..79fc0db229e 100644
--- a/Mage.Sets/src/mage/cards/k/KarplusanWolverine.java
+++ b/Mage.Sets/src/mage/cards/k/KarplusanWolverine.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class KarplusanWolverine extends CardImpl {
+public final class KarplusanWolverine extends CardImpl {
public KarplusanWolverine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KarplusanYeti.java b/Mage.Sets/src/mage/cards/k/KarplusanYeti.java
index ab83fea3b4a..8d3fa2fa867 100644
--- a/Mage.Sets/src/mage/cards/k/KarplusanYeti.java
+++ b/Mage.Sets/src/mage/cards/k/KarplusanYeti.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class KarplusanYeti extends CardImpl {
+public final class KarplusanYeti extends CardImpl {
public KarplusanYeti(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KarrthusTyrantOfJund.java b/Mage.Sets/src/mage/cards/k/KarrthusTyrantOfJund.java
index 1f678c9caef..82bc0c3cd43 100644
--- a/Mage.Sets/src/mage/cards/k/KarrthusTyrantOfJund.java
+++ b/Mage.Sets/src/mage/cards/k/KarrthusTyrantOfJund.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class KarrthusTyrantOfJund extends CardImpl {
+public final class KarrthusTyrantOfJund extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Dragon creatures you control");
diff --git a/Mage.Sets/src/mage/cards/k/Karstoderm.java b/Mage.Sets/src/mage/cards/k/Karstoderm.java
index f2e8456f876..c1c3cc46179 100644
--- a/Mage.Sets/src/mage/cards/k/Karstoderm.java
+++ b/Mage.Sets/src/mage/cards/k/Karstoderm.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author fireshoes
*/
-public class Karstoderm extends CardImpl {
+public final class Karstoderm extends CardImpl {
public Karstoderm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KasetoOrochiArchmage.java b/Mage.Sets/src/mage/cards/k/KasetoOrochiArchmage.java
index 90255394915..cc287cd661c 100644
--- a/Mage.Sets/src/mage/cards/k/KasetoOrochiArchmage.java
+++ b/Mage.Sets/src/mage/cards/k/KasetoOrochiArchmage.java
@@ -46,7 +46,7 @@ import java.util.UUID;
/**
* @author fireshoes
*/
-public class KasetoOrochiArchmage extends CardImpl {
+public final class KasetoOrochiArchmage extends CardImpl {
public KasetoOrochiArchmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KashiTribeElite.java b/Mage.Sets/src/mage/cards/k/KashiTribeElite.java
index 6321947cbe4..fab3a5d9345 100644
--- a/Mage.Sets/src/mage/cards/k/KashiTribeElite.java
+++ b/Mage.Sets/src/mage/cards/k/KashiTribeElite.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author LevelX
*/
-public class KashiTribeElite extends CardImpl {
+public final class KashiTribeElite extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Legendary Snakes");
diff --git a/Mage.Sets/src/mage/cards/k/KashiTribeReaver.java b/Mage.Sets/src/mage/cards/k/KashiTribeReaver.java
index 661d24ff67c..3b3f2331d08 100644
--- a/Mage.Sets/src/mage/cards/k/KashiTribeReaver.java
+++ b/Mage.Sets/src/mage/cards/k/KashiTribeReaver.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX
*/
-public class KashiTribeReaver extends CardImpl {
+public final class KashiTribeReaver extends CardImpl {
public KashiTribeReaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KashiTribeWarriors.java b/Mage.Sets/src/mage/cards/k/KashiTribeWarriors.java
index dc79757e662..b8c77da7917 100644
--- a/Mage.Sets/src/mage/cards/k/KashiTribeWarriors.java
+++ b/Mage.Sets/src/mage/cards/k/KashiTribeWarriors.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX
*/
-public class KashiTribeWarriors extends CardImpl {
+public final class KashiTribeWarriors extends CardImpl {
public KashiTribeWarriors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KasimirTheLoneWolf.java b/Mage.Sets/src/mage/cards/k/KasimirTheLoneWolf.java
index c7efbf86ed0..57d0d4079c4 100644
--- a/Mage.Sets/src/mage/cards/k/KasimirTheLoneWolf.java
+++ b/Mage.Sets/src/mage/cards/k/KasimirTheLoneWolf.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class KasimirTheLoneWolf extends CardImpl {
+public final class KasimirTheLoneWolf extends CardImpl {
public KasimirTheLoneWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KatabaticWinds.java b/Mage.Sets/src/mage/cards/k/KatabaticWinds.java
index 6dbcf40b428..ae9d6b9c261 100644
--- a/Mage.Sets/src/mage/cards/k/KatabaticWinds.java
+++ b/Mage.Sets/src/mage/cards/k/KatabaticWinds.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class KatabaticWinds extends CardImpl {
+public final class KatabaticWinds extends CardImpl {
public KatabaticWinds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KatakiWarsWage.java b/Mage.Sets/src/mage/cards/k/KatakiWarsWage.java
index 208606cd600..7c3b867943e 100644
--- a/Mage.Sets/src/mage/cards/k/KatakiWarsWage.java
+++ b/Mage.Sets/src/mage/cards/k/KatakiWarsWage.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Loki
*/
-public class KatakiWarsWage extends CardImpl {
+public final class KatakiWarsWage extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts");
diff --git a/Mage.Sets/src/mage/cards/k/KathariBomber.java b/Mage.Sets/src/mage/cards/k/KathariBomber.java
index 1aa7295626a..259a817c34a 100644
--- a/Mage.Sets/src/mage/cards/k/KathariBomber.java
+++ b/Mage.Sets/src/mage/cards/k/KathariBomber.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author LevelX2
*/
-public class KathariBomber extends CardImpl {
+public final class KathariBomber extends CardImpl {
public KathariBomber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KathariRemnant.java b/Mage.Sets/src/mage/cards/k/KathariRemnant.java
index 58b7fb0be14..8dd0467b149 100644
--- a/Mage.Sets/src/mage/cards/k/KathariRemnant.java
+++ b/Mage.Sets/src/mage/cards/k/KathariRemnant.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class KathariRemnant extends CardImpl {
+public final class KathariRemnant extends CardImpl {
public KathariRemnant (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KathariScreecher.java b/Mage.Sets/src/mage/cards/k/KathariScreecher.java
index 0f7880bbff7..daa68500ec8 100644
--- a/Mage.Sets/src/mage/cards/k/KathariScreecher.java
+++ b/Mage.Sets/src/mage/cards/k/KathariScreecher.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class KathariScreecher extends CardImpl {
+public final class KathariScreecher extends CardImpl {
public KathariScreecher (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KavuAggressor.java b/Mage.Sets/src/mage/cards/k/KavuAggressor.java
index 211631a2624..b85ba336178 100644
--- a/Mage.Sets/src/mage/cards/k/KavuAggressor.java
+++ b/Mage.Sets/src/mage/cards/k/KavuAggressor.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
* @author LoneFox
*/
-public class KavuAggressor extends CardImpl {
+public final class KavuAggressor extends CardImpl {
public KavuAggressor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KavuChameleon.java b/Mage.Sets/src/mage/cards/k/KavuChameleon.java
index f4be5699caf..02503ac2620 100644
--- a/Mage.Sets/src/mage/cards/k/KavuChameleon.java
+++ b/Mage.Sets/src/mage/cards/k/KavuChameleon.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class KavuChameleon extends CardImpl {
+public final class KavuChameleon extends CardImpl {
public KavuChameleon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KavuClimber.java b/Mage.Sets/src/mage/cards/k/KavuClimber.java
index 070a0ae1d38..65debd15703 100644
--- a/Mage.Sets/src/mage/cards/k/KavuClimber.java
+++ b/Mage.Sets/src/mage/cards/k/KavuClimber.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class KavuClimber extends CardImpl {
+public final class KavuClimber extends CardImpl {
public KavuClimber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KavuGlider.java b/Mage.Sets/src/mage/cards/k/KavuGlider.java
index 2f2b241cfa6..c6be16bc694 100644
--- a/Mage.Sets/src/mage/cards/k/KavuGlider.java
+++ b/Mage.Sets/src/mage/cards/k/KavuGlider.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class KavuGlider extends CardImpl {
+public final class KavuGlider extends CardImpl {
public KavuGlider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KavuHowler.java b/Mage.Sets/src/mage/cards/k/KavuHowler.java
index 0752f3fb8b3..b6f80c91185 100644
--- a/Mage.Sets/src/mage/cards/k/KavuHowler.java
+++ b/Mage.Sets/src/mage/cards/k/KavuHowler.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class KavuHowler extends CardImpl {
+public final class KavuHowler extends CardImpl {
private static final FilterCard filter = new FilterCard("Kavu cards");
diff --git a/Mage.Sets/src/mage/cards/k/KavuLair.java b/Mage.Sets/src/mage/cards/k/KavuLair.java
index 99b5e7e0863..dad3aad94f8 100644
--- a/Mage.Sets/src/mage/cards/k/KavuLair.java
+++ b/Mage.Sets/src/mage/cards/k/KavuLair.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author LevelX2
*/
-public class KavuLair extends CardImpl {
+public final class KavuLair extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/k/KavuMauler.java b/Mage.Sets/src/mage/cards/k/KavuMauler.java
index 7a014a16ef2..5dd7bacc54d 100644
--- a/Mage.Sets/src/mage/cards/k/KavuMauler.java
+++ b/Mage.Sets/src/mage/cards/k/KavuMauler.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LoneFox
*/
-public class KavuMauler extends CardImpl {
+public final class KavuMauler extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Kavu");
diff --git a/Mage.Sets/src/mage/cards/k/KavuMonarch.java b/Mage.Sets/src/mage/cards/k/KavuMonarch.java
index 6d701273dc4..18f1e2b2cdd 100644
--- a/Mage.Sets/src/mage/cards/k/KavuMonarch.java
+++ b/Mage.Sets/src/mage/cards/k/KavuMonarch.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LoneFox
*/
-public class KavuMonarch extends CardImpl {
+public final class KavuMonarch extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Kavu creatures");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another Kavu");
diff --git a/Mage.Sets/src/mage/cards/k/KavuPredator.java b/Mage.Sets/src/mage/cards/k/KavuPredator.java
index 421cafa6879..f316f1ebf60 100644
--- a/Mage.Sets/src/mage/cards/k/KavuPredator.java
+++ b/Mage.Sets/src/mage/cards/k/KavuPredator.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class KavuPredator extends CardImpl {
+public final class KavuPredator extends CardImpl {
public KavuPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KavuPrimarch.java b/Mage.Sets/src/mage/cards/k/KavuPrimarch.java
index 7f19fb332aa..633f2f4897b 100644
--- a/Mage.Sets/src/mage/cards/k/KavuPrimarch.java
+++ b/Mage.Sets/src/mage/cards/k/KavuPrimarch.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class KavuPrimarch extends CardImpl {
+public final class KavuPrimarch extends CardImpl {
public KavuPrimarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KavuRecluse.java b/Mage.Sets/src/mage/cards/k/KavuRecluse.java
index 5a89d3e82da..cc77a2cfbf7 100644
--- a/Mage.Sets/src/mage/cards/k/KavuRecluse.java
+++ b/Mage.Sets/src/mage/cards/k/KavuRecluse.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LoneFox
*/
-public class KavuRecluse extends CardImpl {
+public final class KavuRecluse extends CardImpl {
public KavuRecluse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KavuRunner.java b/Mage.Sets/src/mage/cards/k/KavuRunner.java
index 7eac03339ab..2d2957d9299 100644
--- a/Mage.Sets/src/mage/cards/k/KavuRunner.java
+++ b/Mage.Sets/src/mage/cards/k/KavuRunner.java
@@ -53,7 +53,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class KavuRunner extends CardImpl {
+public final class KavuRunner extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white or blue creature");
diff --git a/Mage.Sets/src/mage/cards/k/KavuScout.java b/Mage.Sets/src/mage/cards/k/KavuScout.java
index f9a94eadcc1..d4b4f767a78 100644
--- a/Mage.Sets/src/mage/cards/k/KavuScout.java
+++ b/Mage.Sets/src/mage/cards/k/KavuScout.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class KavuScout extends CardImpl {
+public final class KavuScout extends CardImpl {
public KavuScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KavuTitan.java b/Mage.Sets/src/mage/cards/k/KavuTitan.java
index 897658ec232..eb31066075c 100644
--- a/Mage.Sets/src/mage/cards/k/KavuTitan.java
+++ b/Mage.Sets/src/mage/cards/k/KavuTitan.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author Backfir3
*/
-public class KavuTitan extends CardImpl {
+public final class KavuTitan extends CardImpl {
public KavuTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KayaGhostAssassin.java b/Mage.Sets/src/mage/cards/k/KayaGhostAssassin.java
index 658713e9feb..2721d825c6b 100644
--- a/Mage.Sets/src/mage/cards/k/KayaGhostAssassin.java
+++ b/Mage.Sets/src/mage/cards/k/KayaGhostAssassin.java
@@ -58,7 +58,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class KayaGhostAssassin extends CardImpl {
+public final class KayaGhostAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("target creature to exile. Choose no targets to exile Kaya.");
diff --git a/Mage.Sets/src/mage/cards/k/Kaysa.java b/Mage.Sets/src/mage/cards/k/Kaysa.java
index 3fdcbec9083..fa688391371 100644
--- a/Mage.Sets/src/mage/cards/k/Kaysa.java
+++ b/Mage.Sets/src/mage/cards/k/Kaysa.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class Kaysa extends CardImpl {
+public final class Kaysa extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Green creatures");
diff --git a/Mage.Sets/src/mage/cards/k/KazanduBlademaster.java b/Mage.Sets/src/mage/cards/k/KazanduBlademaster.java
index db12c56fe2e..95460c7a753 100644
--- a/Mage.Sets/src/mage/cards/k/KazanduBlademaster.java
+++ b/Mage.Sets/src/mage/cards/k/KazanduBlademaster.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class KazanduBlademaster extends CardImpl {
+public final class KazanduBlademaster extends CardImpl {
public KazanduBlademaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KazanduRefuge.java b/Mage.Sets/src/mage/cards/k/KazanduRefuge.java
index 75faa1594fb..8e9d60435eb 100644
--- a/Mage.Sets/src/mage/cards/k/KazanduRefuge.java
+++ b/Mage.Sets/src/mage/cards/k/KazanduRefuge.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class KazanduRefuge extends CardImpl {
+public final class KazanduRefuge extends CardImpl {
public KazanduRefuge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/k/KazanduTuskcaller.java b/Mage.Sets/src/mage/cards/k/KazanduTuskcaller.java
index 410129fa0e3..78397274826 100644
--- a/Mage.Sets/src/mage/cards/k/KazanduTuskcaller.java
+++ b/Mage.Sets/src/mage/cards/k/KazanduTuskcaller.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.ElephantToken;
/**
* @author North, noxx
*/
-public class KazanduTuskcaller extends LevelerCard {
+public final class KazanduTuskcaller extends LevelerCard {
public KazanduTuskcaller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KazarovSengirPureblood.java b/Mage.Sets/src/mage/cards/k/KazarovSengirPureblood.java
index ad9497028f2..680c34ceaf5 100644
--- a/Mage.Sets/src/mage/cards/k/KazarovSengirPureblood.java
+++ b/Mage.Sets/src/mage/cards/k/KazarovSengirPureblood.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class KazarovSengirPureblood extends CardImpl {
+public final class KazarovSengirPureblood extends CardImpl {
public KazarovSengirPureblood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KazuulTyrantOfTheCliffs.java b/Mage.Sets/src/mage/cards/k/KazuulTyrantOfTheCliffs.java
index 45c499678c0..215831c1481 100644
--- a/Mage.Sets/src/mage/cards/k/KazuulTyrantOfTheCliffs.java
+++ b/Mage.Sets/src/mage/cards/k/KazuulTyrantOfTheCliffs.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class KazuulTyrantOfTheCliffs extends CardImpl {
+public final class KazuulTyrantOfTheCliffs extends CardImpl {
public KazuulTyrantOfTheCliffs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KazuulWarlord.java b/Mage.Sets/src/mage/cards/k/KazuulWarlord.java
index f123a451ca3..39fbc96d6d4 100644
--- a/Mage.Sets/src/mage/cards/k/KazuulWarlord.java
+++ b/Mage.Sets/src/mage/cards/k/KazuulWarlord.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class KazuulWarlord extends CardImpl {
+public final class KazuulWarlord extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control");
diff --git a/Mage.Sets/src/mage/cards/k/KazuulsTollCollector.java b/Mage.Sets/src/mage/cards/k/KazuulsTollCollector.java
index 7418150791c..417bcd329cd 100644
--- a/Mage.Sets/src/mage/cards/k/KazuulsTollCollector.java
+++ b/Mage.Sets/src/mage/cards/k/KazuulsTollCollector.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class KazuulsTollCollector extends CardImpl {
+public final class KazuulsTollCollector extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Equipment you control");
diff --git a/Mage.Sets/src/mage/cards/k/KederektCreeper.java b/Mage.Sets/src/mage/cards/k/KederektCreeper.java
index e806e4fafbe..fc6532fc547 100644
--- a/Mage.Sets/src/mage/cards/k/KederektCreeper.java
+++ b/Mage.Sets/src/mage/cards/k/KederektCreeper.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KederektCreeper extends CardImpl {
+public final class KederektCreeper extends CardImpl {
public KederektCreeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KederektLeviathan.java b/Mage.Sets/src/mage/cards/k/KederektLeviathan.java
index 5362b8bc3e5..6b46623e9cf 100644
--- a/Mage.Sets/src/mage/cards/k/KederektLeviathan.java
+++ b/Mage.Sets/src/mage/cards/k/KederektLeviathan.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author Plopman
*/
-public class KederektLeviathan extends CardImpl {
+public final class KederektLeviathan extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("all other nonland permanents");
static{
diff --git a/Mage.Sets/src/mage/cards/k/KederektParasite.java b/Mage.Sets/src/mage/cards/k/KederektParasite.java
index ac7309829df..0158b070edd 100644
--- a/Mage.Sets/src/mage/cards/k/KederektParasite.java
+++ b/Mage.Sets/src/mage/cards/k/KederektParasite.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class KederektParasite extends CardImpl {
+public final class KederektParasite extends CardImpl {
public KederektParasite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
@@ -101,7 +101,7 @@ class KederektParasiteTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkInterveningIfClause(Game game) {
- return new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0).apply(game, this);
+ return new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 0).apply(game, this);
}
@Override
diff --git a/Mage.Sets/src/mage/cards/k/KeenEyedArchers.java b/Mage.Sets/src/mage/cards/k/KeenEyedArchers.java
index d2f45d48d33..7e450f2976b 100644
--- a/Mage.Sets/src/mage/cards/k/KeenEyedArchers.java
+++ b/Mage.Sets/src/mage/cards/k/KeenEyedArchers.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class KeenEyedArchers extends CardImpl {
+public final class KeenEyedArchers extends CardImpl {
public KeenEyedArchers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KeenSense.java b/Mage.Sets/src/mage/cards/k/KeenSense.java
index e06883aa0f6..c12353b13cb 100644
--- a/Mage.Sets/src/mage/cards/k/KeenSense.java
+++ b/Mage.Sets/src/mage/cards/k/KeenSense.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KeenSense extends CardImpl {
+public final class KeenSense extends CardImpl {
public KeenSense(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KeeneyeAven.java b/Mage.Sets/src/mage/cards/k/KeeneyeAven.java
index 9a3d271ff7d..0567a6f24d6 100644
--- a/Mage.Sets/src/mage/cards/k/KeeneyeAven.java
+++ b/Mage.Sets/src/mage/cards/k/KeeneyeAven.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KeeneyeAven extends CardImpl {
+public final class KeeneyeAven extends CardImpl {
public KeeneyeAven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KeeningApparition.java b/Mage.Sets/src/mage/cards/k/KeeningApparition.java
index a4b339880bb..12bae63f5f7 100644
--- a/Mage.Sets/src/mage/cards/k/KeeningApparition.java
+++ b/Mage.Sets/src/mage/cards/k/KeeningApparition.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetEnchantmentPermanent;
/**
* @author LevelX2
*/
-public class KeeningApparition extends CardImpl {
+public final class KeeningApparition extends CardImpl {
public KeeningApparition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KeeningBanshee.java b/Mage.Sets/src/mage/cards/k/KeeningBanshee.java
index ad0f118bd66..54144c816b3 100644
--- a/Mage.Sets/src/mage/cards/k/KeeningBanshee.java
+++ b/Mage.Sets/src/mage/cards/k/KeeningBanshee.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class KeeningBanshee extends CardImpl {
+public final class KeeningBanshee extends CardImpl {
public KeeningBanshee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KeeningStone.java b/Mage.Sets/src/mage/cards/k/KeeningStone.java
index 0f9993221c9..23fa86a1ea4 100644
--- a/Mage.Sets/src/mage/cards/k/KeeningStone.java
+++ b/Mage.Sets/src/mage/cards/k/KeeningStone.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class KeeningStone extends CardImpl {
+public final class KeeningStone extends CardImpl {
public KeeningStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/k/KeepWatch.java b/Mage.Sets/src/mage/cards/k/KeepWatch.java
index cf5d10c1be8..575923e3c04 100644
--- a/Mage.Sets/src/mage/cards/k/KeepWatch.java
+++ b/Mage.Sets/src/mage/cards/k/KeepWatch.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author jeffwadsworth
*/
-public class KeepWatch extends CardImpl {
+public final class KeepWatch extends CardImpl {
public KeepWatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfKeys.java b/Mage.Sets/src/mage/cards/k/KeeperOfKeys.java
index fb12d970054..ebac101abcc 100644
--- a/Mage.Sets/src/mage/cards/k/KeeperOfKeys.java
+++ b/Mage.Sets/src/mage/cards/k/KeeperOfKeys.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class KeeperOfKeys extends CardImpl {
+public final class KeeperOfKeys extends CardImpl {
public KeeperOfKeys(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfKookus.java b/Mage.Sets/src/mage/cards/k/KeeperOfKookus.java
index a393e098028..7bb8da45e08 100644
--- a/Mage.Sets/src/mage/cards/k/KeeperOfKookus.java
+++ b/Mage.Sets/src/mage/cards/k/KeeperOfKookus.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author BursegSardaukar
*/
-public class KeeperOfKookus extends CardImpl {
+public final class KeeperOfKookus extends CardImpl {
public KeeperOfKookus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfProgenitus.java b/Mage.Sets/src/mage/cards/k/KeeperOfProgenitus.java
index faaf4ad35b9..d9360ba566c 100644
--- a/Mage.Sets/src/mage/cards/k/KeeperOfProgenitus.java
+++ b/Mage.Sets/src/mage/cards/k/KeeperOfProgenitus.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class KeeperOfProgenitus extends CardImpl {
+public final class KeeperOfProgenitus extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("a player taps a Mountain, Forest, or Plains");
@@ -64,7 +64,7 @@ public class KeeperOfProgenitus extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(3);
- // Whenever a player taps a Mountain, Forest, or Plains for mana, that player adds one mana to their mana pool of any type that land produced.
+ // Whenever a player taps a Mountain, Forest, or Plains for mana, that player adds one mana of any type that land produced.
this.addAbility(new TapForManaAllTriggeredManaAbility(
new AddManaOfAnyTypeProducedEffect(),
filter, SetTargetPointer.PERMANENT));
diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfTheDead.java b/Mage.Sets/src/mage/cards/k/KeeperOfTheDead.java
index c07b5a45452..d5b746d8cf6 100644
--- a/Mage.Sets/src/mage/cards/k/KeeperOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/k/KeeperOfTheDead.java
@@ -63,7 +63,7 @@ import mage.target.TargetPlayer;
*
* @author spjspj
*/
-public class KeeperOfTheDead extends CardImpl {
+public final class KeeperOfTheDead extends CardImpl {
private static final FilterPlayer filter = new FilterPlayer();
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfTheLens.java b/Mage.Sets/src/mage/cards/k/KeeperOfTheLens.java
index fb28be85dd3..364e3d54404 100644
--- a/Mage.Sets/src/mage/cards/k/KeeperOfTheLens.java
+++ b/Mage.Sets/src/mage/cards/k/KeeperOfTheLens.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KeeperOfTheLens extends CardImpl {
+public final class KeeperOfTheLens extends CardImpl {
public KeeperOfTheLens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfTheLight.java b/Mage.Sets/src/mage/cards/k/KeeperOfTheLight.java
index 4a6500e2713..77e63296f17 100644
--- a/Mage.Sets/src/mage/cards/k/KeeperOfTheLight.java
+++ b/Mage.Sets/src/mage/cards/k/KeeperOfTheLight.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author stevemarkham81
*/
-public class KeeperOfTheLight extends CardImpl {
+public final class KeeperOfTheLight extends CardImpl {
public KeeperOfTheLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfTheNineGales.java b/Mage.Sets/src/mage/cards/k/KeeperOfTheNineGales.java
index 0aef7874913..3be9f810b25 100644
--- a/Mage.Sets/src/mage/cards/k/KeeperOfTheNineGales.java
+++ b/Mage.Sets/src/mage/cards/k/KeeperOfTheNineGales.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class KeeperOfTheNineGales extends CardImpl {
+public final class KeeperOfTheNineGales extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Birds you control");
diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfTresserhorn.java b/Mage.Sets/src/mage/cards/k/KeeperOfTresserhorn.java
index 6d860db5d15..25da025f5da 100644
--- a/Mage.Sets/src/mage/cards/k/KeeperOfTresserhorn.java
+++ b/Mage.Sets/src/mage/cards/k/KeeperOfTresserhorn.java
@@ -44,7 +44,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class KeeperOfTresserhorn extends CardImpl {
+public final class KeeperOfTresserhorn extends CardImpl {
public KeeperOfTresserhorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KeepersOfTheFaith.java b/Mage.Sets/src/mage/cards/k/KeepersOfTheFaith.java
index ee8bf187877..4a55e105e83 100644
--- a/Mage.Sets/src/mage/cards/k/KeepersOfTheFaith.java
+++ b/Mage.Sets/src/mage/cards/k/KeepersOfTheFaith.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KeepersOfTheFaith extends CardImpl {
+public final class KeepersOfTheFaith extends CardImpl {
public KeepersOfTheFaith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java b/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java
index f3274bcf1ef..183352737ab 100644
--- a/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java
+++ b/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KeepsakeGorgon extends CardImpl {
+public final class KeepsakeGorgon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Gorgon creature an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/k/KefnetTheMindful.java b/Mage.Sets/src/mage/cards/k/KefnetTheMindful.java
index c8ad595ec9c..c960b77bd37 100644
--- a/Mage.Sets/src/mage/cards/k/KefnetTheMindful.java
+++ b/Mage.Sets/src/mage/cards/k/KefnetTheMindful.java
@@ -57,7 +57,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class KefnetTheMindful extends CardImpl {
+public final class KefnetTheMindful extends CardImpl {
public KefnetTheMindful(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KefnetsLastWord.java b/Mage.Sets/src/mage/cards/k/KefnetsLastWord.java
index 56676ce1b0f..7d40ad59ee5 100644
--- a/Mage.Sets/src/mage/cards/k/KefnetsLastWord.java
+++ b/Mage.Sets/src/mage/cards/k/KefnetsLastWord.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class KefnetsLastWord extends CardImpl {
+public final class KefnetsLastWord extends CardImpl {
public KefnetsLastWord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KefnetsMonument.java b/Mage.Sets/src/mage/cards/k/KefnetsMonument.java
index 2f59203ca9a..487443ddf77 100644
--- a/Mage.Sets/src/mage/cards/k/KefnetsMonument.java
+++ b/Mage.Sets/src/mage/cards/k/KefnetsMonument.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class KefnetsMonument extends CardImpl {
+public final class KefnetsMonument extends CardImpl {
private static final FilterCard filter = new FilterCard("Blue creature spells");
private static final FilterSpell filter2 = new FilterSpell("a creature spell");
diff --git a/Mage.Sets/src/mage/cards/k/KeiTakahashi.java b/Mage.Sets/src/mage/cards/k/KeiTakahashi.java
index 42393196ff5..4d9fd1e8974 100644
--- a/Mage.Sets/src/mage/cards/k/KeiTakahashi.java
+++ b/Mage.Sets/src/mage/cards/k/KeiTakahashi.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class KeiTakahashi extends CardImpl {
+public final class KeiTakahashi extends CardImpl {
public KeiTakahashi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KeigaTheTideStar.java b/Mage.Sets/src/mage/cards/k/KeigaTheTideStar.java
index a9c4203677c..79f541a7691 100644
--- a/Mage.Sets/src/mage/cards/k/KeigaTheTideStar.java
+++ b/Mage.Sets/src/mage/cards/k/KeigaTheTideStar.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class KeigaTheTideStar extends CardImpl {
+public final class KeigaTheTideStar extends CardImpl {
public KeigaTheTideStar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonArsonist.java b/Mage.Sets/src/mage/cards/k/KeldonArsonist.java
index 4015d76390e..12eb99ebce2 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonArsonist.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonArsonist.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class KeldonArsonist extends CardImpl {
+public final class KeldonArsonist extends CardImpl {
public KeldonArsonist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonBattlewagon.java b/Mage.Sets/src/mage/cards/k/KeldonBattlewagon.java
index e65943b01fc..ac6a1570da6 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonBattlewagon.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonBattlewagon.java
@@ -62,7 +62,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth & L_J
*/
-public class KeldonBattlewagon extends CardImpl {
+public final class KeldonBattlewagon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an untapped creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/k/KeldonBerserker.java b/Mage.Sets/src/mage/cards/k/KeldonBerserker.java
index 0760a231478..a3a6810b8e5 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonBerserker.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonBerserker.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author TheElk801
*/
-public class KeldonBerserker extends CardImpl {
+public final class KeldonBerserker extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("untapped lands");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonChampion.java b/Mage.Sets/src/mage/cards/k/KeldonChampion.java
index a72b636ec36..ab9e4077a8a 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonChampion.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonChampion.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class KeldonChampion extends CardImpl {
+public final class KeldonChampion extends CardImpl {
public KeldonChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonFirebombers.java b/Mage.Sets/src/mage/cards/k/KeldonFirebombers.java
index 5e2eda6c093..1c93fb333e9 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonFirebombers.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonFirebombers.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class KeldonFirebombers extends CardImpl {
+public final class KeldonFirebombers extends CardImpl {
public KeldonFirebombers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonHalberdier.java b/Mage.Sets/src/mage/cards/k/KeldonHalberdier.java
index a430221b116..8d0d29c4672 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonHalberdier.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonHalberdier.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class KeldonHalberdier extends CardImpl {
+public final class KeldonHalberdier extends CardImpl {
public KeldonHalberdier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonMantle.java b/Mage.Sets/src/mage/cards/k/KeldonMantle.java
index 9abc2abc76a..8bd00aa0121 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonMantle.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonMantle.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class KeldonMantle extends CardImpl {
+public final class KeldonMantle extends CardImpl {
public KeldonMantle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonMarauders.java b/Mage.Sets/src/mage/cards/k/KeldonMarauders.java
index 6ab4f786ce9..e5f26bd3de0 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonMarauders.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonMarauders.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author jonubuu
*/
-public class KeldonMarauders extends CardImpl {
+public final class KeldonMarauders extends CardImpl {
public KeldonMarauders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonMegaliths.java b/Mage.Sets/src/mage/cards/k/KeldonMegaliths.java
index 385350122ac..ef747b0df43 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonMegaliths.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonMegaliths.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author anonymous
*/
-public class KeldonMegaliths extends CardImpl {
+public final class KeldonMegaliths extends CardImpl {
public KeldonMegaliths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonNecropolis.java b/Mage.Sets/src/mage/cards/k/KeldonNecropolis.java
index 79f655d558b..30b3c85a098 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonNecropolis.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonNecropolis.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class KeldonNecropolis extends CardImpl {
+public final class KeldonNecropolis extends CardImpl {
public KeldonNecropolis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonOverseer.java b/Mage.Sets/src/mage/cards/k/KeldonOverseer.java
index 5275f4863d0..181b9a12c9f 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonOverseer.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonOverseer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KeldonOverseer extends CardImpl {
+public final class KeldonOverseer extends CardImpl {
public KeldonOverseer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonRaider.java b/Mage.Sets/src/mage/cards/k/KeldonRaider.java
index 08ed62e98cb..4cfbe5e1541 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonRaider.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonRaider.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class KeldonRaider extends CardImpl {
+public final class KeldonRaider extends CardImpl {
public KeldonRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonTwilight.java b/Mage.Sets/src/mage/cards/k/KeldonTwilight.java
index 2b9c9a3ea07..acf25e1d310 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonTwilight.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonTwilight.java
@@ -47,7 +47,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author spjspj & L_J
*/
-public class KeldonTwilight extends CardImpl {
+public final class KeldonTwilight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you controlled since the beginning of the turn");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonVandals.java b/Mage.Sets/src/mage/cards/k/KeldonVandals.java
index 50a67bbcf6a..645bb29d289 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonVandals.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonVandals.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author Backfir3
*/
-public class KeldonVandals extends CardImpl {
+public final class KeldonVandals extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonWarcaller.java b/Mage.Sets/src/mage/cards/k/KeldonWarcaller.java
index c4b89b55275..07d0d4af59a 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonWarcaller.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonWarcaller.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class KeldonWarcaller extends CardImpl {
+public final class KeldonWarcaller extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Saga you control");
diff --git a/Mage.Sets/src/mage/cards/k/KeldonWarlord.java b/Mage.Sets/src/mage/cards/k/KeldonWarlord.java
index 6bc21f82638..d343139609f 100644
--- a/Mage.Sets/src/mage/cards/k/KeldonWarlord.java
+++ b/Mage.Sets/src/mage/cards/k/KeldonWarlord.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TGower
*/
-public class KeldonWarlord extends CardImpl {
+public final class KeldonWarlord extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Wall creatures you control.");
diff --git a/Mage.Sets/src/mage/cards/k/KelinoreBat.java b/Mage.Sets/src/mage/cards/k/KelinoreBat.java
index 65d5675f641..f7bf51d463f 100644
--- a/Mage.Sets/src/mage/cards/k/KelinoreBat.java
+++ b/Mage.Sets/src/mage/cards/k/KelinoreBat.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class KelinoreBat extends CardImpl {
+public final class KelinoreBat extends CardImpl {
public KelinoreBat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KelsinkoRanger.java b/Mage.Sets/src/mage/cards/k/KelsinkoRanger.java
index 3ba4fd3c088..c14b1e48887 100644
--- a/Mage.Sets/src/mage/cards/k/KelsinkoRanger.java
+++ b/Mage.Sets/src/mage/cards/k/KelsinkoRanger.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class KelsinkoRanger extends CardImpl {
+public final class KelsinkoRanger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/k/KembaKhaRegent.java b/Mage.Sets/src/mage/cards/k/KembaKhaRegent.java
index 0bc45d42e14..95a60d2a188 100644
--- a/Mage.Sets/src/mage/cards/k/KembaKhaRegent.java
+++ b/Mage.Sets/src/mage/cards/k/KembaKhaRegent.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.CatToken;
*
* @author Loki, North
*/
-public class KembaKhaRegent extends CardImpl {
+public final class KembaKhaRegent extends CardImpl {
public KembaKhaRegent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KembasLegion.java b/Mage.Sets/src/mage/cards/k/KembasLegion.java
index 973326de897..7a42a824b74 100644
--- a/Mage.Sets/src/mage/cards/k/KembasLegion.java
+++ b/Mage.Sets/src/mage/cards/k/KembasLegion.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author North
*/
-public class KembasLegion extends CardImpl {
+public final class KembasLegion extends CardImpl {
public KembasLegion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KembasSkyguard.java b/Mage.Sets/src/mage/cards/k/KembasSkyguard.java
index 8ba36f0f709..2187df371f3 100644
--- a/Mage.Sets/src/mage/cards/k/KembasSkyguard.java
+++ b/Mage.Sets/src/mage/cards/k/KembasSkyguard.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author maurer.it_at_gmail.com
*/
-public class KembasSkyguard extends CardImpl {
+public final class KembasSkyguard extends CardImpl {
public KembasSkyguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KemuriOnna.java b/Mage.Sets/src/mage/cards/k/KemuriOnna.java
index 18f3435b47a..6e9dc0ee3da 100644
--- a/Mage.Sets/src/mage/cards/k/KemuriOnna.java
+++ b/Mage.Sets/src/mage/cards/k/KemuriOnna.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class KemuriOnna extends CardImpl {
+public final class KemuriOnna extends CardImpl {
public KemuriOnna(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KentaroTheSmilingCat.java b/Mage.Sets/src/mage/cards/k/KentaroTheSmilingCat.java
index ed84de2ef05..38eb2c4f76e 100644
--- a/Mage.Sets/src/mage/cards/k/KentaroTheSmilingCat.java
+++ b/Mage.Sets/src/mage/cards/k/KentaroTheSmilingCat.java
@@ -49,7 +49,7 @@ import mage.players.Player;
/**
* @author LevelX2
*/
-public class KentaroTheSmilingCat extends CardImpl {
+public final class KentaroTheSmilingCat extends CardImpl {
public KentaroTheSmilingCat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KeranosGodOfStorms.java b/Mage.Sets/src/mage/cards/k/KeranosGodOfStorms.java
index 11e6606b7b1..ba46b31759c 100644
--- a/Mage.Sets/src/mage/cards/k/KeranosGodOfStorms.java
+++ b/Mage.Sets/src/mage/cards/k/KeranosGodOfStorms.java
@@ -59,7 +59,7 @@ import mage.watchers.common.CardsAmountDrawnThisTurnWatcher;
*
* @author LevelX2
*/
-public class KeranosGodOfStorms extends CardImpl {
+public final class KeranosGodOfStorms extends CardImpl {
public KeranosGodOfStorms(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/k/KessDissidentMage.java b/Mage.Sets/src/mage/cards/k/KessDissidentMage.java
index 8140b57de4b..533ee965c32 100644
--- a/Mage.Sets/src/mage/cards/k/KessDissidentMage.java
+++ b/Mage.Sets/src/mage/cards/k/KessDissidentMage.java
@@ -66,7 +66,7 @@ import mage.watchers.Watcher;
*
* @author spjspj
*/
-public class KessDissidentMage extends CardImpl {
+public final class KessDissidentMage extends CardImpl {
public KessDissidentMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KessigCagebreakers.java b/Mage.Sets/src/mage/cards/k/KessigCagebreakers.java
index 9dbff9d82af..a3335822947 100644
--- a/Mage.Sets/src/mage/cards/k/KessigCagebreakers.java
+++ b/Mage.Sets/src/mage/cards/k/KessigCagebreakers.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author North
*/
-public class KessigCagebreakers extends CardImpl {
+public final class KessigCagebreakers extends CardImpl {
public KessigCagebreakers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KessigDireSwine.java b/Mage.Sets/src/mage/cards/k/KessigDireSwine.java
index 12ef7f82480..5c26b21a3ce 100644
--- a/Mage.Sets/src/mage/cards/k/KessigDireSwine.java
+++ b/Mage.Sets/src/mage/cards/k/KessigDireSwine.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class KessigDireSwine extends CardImpl {
+public final class KessigDireSwine extends CardImpl {
public KessigDireSwine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KessigForgemaster.java b/Mage.Sets/src/mage/cards/k/KessigForgemaster.java
index 9a42a06a608..f560c79add3 100644
--- a/Mage.Sets/src/mage/cards/k/KessigForgemaster.java
+++ b/Mage.Sets/src/mage/cards/k/KessigForgemaster.java
@@ -49,7 +49,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class KessigForgemaster extends CardImpl {
+public final class KessigForgemaster extends CardImpl {
public KessigForgemaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KessigMalcontents.java b/Mage.Sets/src/mage/cards/k/KessigMalcontents.java
index 7083624e19e..b5f6d47896a 100644
--- a/Mage.Sets/src/mage/cards/k/KessigMalcontents.java
+++ b/Mage.Sets/src/mage/cards/k/KessigMalcontents.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
/**
* @author noxx
*/
-public class KessigMalcontents extends CardImpl {
+public final class KessigMalcontents extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Humans you control");
diff --git a/Mage.Sets/src/mage/cards/k/KessigProwler.java b/Mage.Sets/src/mage/cards/k/KessigProwler.java
index 5d7332a23d5..eb4c13d7d55 100644
--- a/Mage.Sets/src/mage/cards/k/KessigProwler.java
+++ b/Mage.Sets/src/mage/cards/k/KessigProwler.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class KessigProwler extends CardImpl {
+public final class KessigProwler extends CardImpl {
public KessigProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KessigRecluse.java b/Mage.Sets/src/mage/cards/k/KessigRecluse.java
index 19caceca1e5..b6d1381a483 100644
--- a/Mage.Sets/src/mage/cards/k/KessigRecluse.java
+++ b/Mage.Sets/src/mage/cards/k/KessigRecluse.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KessigRecluse extends CardImpl {
+public final class KessigRecluse extends CardImpl {
public KessigRecluse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KessigWolf.java b/Mage.Sets/src/mage/cards/k/KessigWolf.java
index 17ccc414f7b..e992223a167 100644
--- a/Mage.Sets/src/mage/cards/k/KessigWolf.java
+++ b/Mage.Sets/src/mage/cards/k/KessigWolf.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class KessigWolf extends CardImpl {
+public final class KessigWolf extends CardImpl {
public KessigWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KessigWolfRun.java b/Mage.Sets/src/mage/cards/k/KessigWolfRun.java
index 25c95bc2bcb..0b051c0bf4e 100644
--- a/Mage.Sets/src/mage/cards/k/KessigWolfRun.java
+++ b/Mage.Sets/src/mage/cards/k/KessigWolfRun.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author nantuko
*/
-public class KessigWolfRun extends CardImpl {
+public final class KessigWolfRun extends CardImpl {
public KessigWolfRun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/k/KeyToTheCity.java b/Mage.Sets/src/mage/cards/k/KeyToTheCity.java
index ffeb698cd42..03aa4217260 100644
--- a/Mage.Sets/src/mage/cards/k/KeyToTheCity.java
+++ b/Mage.Sets/src/mage/cards/k/KeyToTheCity.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class KeyToTheCity extends CardImpl {
+public final class KeyToTheCity extends CardImpl {
public KeyToTheCity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/k/KeymasterRogue.java b/Mage.Sets/src/mage/cards/k/KeymasterRogue.java
index 270d63f99f7..224dbbaaaf3 100644
--- a/Mage.Sets/src/mage/cards/k/KeymasterRogue.java
+++ b/Mage.Sets/src/mage/cards/k/KeymasterRogue.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Plopman
*/
-public class KeymasterRogue extends CardImpl {
+public final class KeymasterRogue extends CardImpl {
public KeymasterRogue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/Kezzerdrix.java b/Mage.Sets/src/mage/cards/k/Kezzerdrix.java
index 6e4f61b433e..62ef661f34d 100644
--- a/Mage.Sets/src/mage/cards/k/Kezzerdrix.java
+++ b/Mage.Sets/src/mage/cards/k/Kezzerdrix.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class Kezzerdrix extends CardImpl {
+public final class Kezzerdrix extends CardImpl {
public Kezzerdrix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KhabalGhoul.java b/Mage.Sets/src/mage/cards/k/KhabalGhoul.java
index 75594a5596e..5aca0c430f2 100644
--- a/Mage.Sets/src/mage/cards/k/KhabalGhoul.java
+++ b/Mage.Sets/src/mage/cards/k/KhabalGhoul.java
@@ -44,7 +44,7 @@ import mage.watchers.common.CreaturesDiedWatcher;
*
* @author LoneFox
*/
-public class KhabalGhoul extends CardImpl {
+public final class KhabalGhoul extends CardImpl {
public KhabalGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KhalniGarden.java b/Mage.Sets/src/mage/cards/k/KhalniGarden.java
index d3b2a25298c..3e2ea687225 100644
--- a/Mage.Sets/src/mage/cards/k/KhalniGarden.java
+++ b/Mage.Sets/src/mage/cards/k/KhalniGarden.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.PlantToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class KhalniGarden extends CardImpl {
+public final class KhalniGarden extends CardImpl {
public KhalniGarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/k/KhalniGem.java b/Mage.Sets/src/mage/cards/k/KhalniGem.java
index ab6a2edb64a..c493d0ae980 100644
--- a/Mage.Sets/src/mage/cards/k/KhalniGem.java
+++ b/Mage.Sets/src/mage/cards/k/KhalniGem.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author maurer.it_at_gmail.com
*/
-public class KhalniGem extends CardImpl {
+public final class KhalniGem extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/k/KhalniHeartExpedition.java b/Mage.Sets/src/mage/cards/k/KhalniHeartExpedition.java
index 304dc4661b2..34b2cfd03f0 100644
--- a/Mage.Sets/src/mage/cards/k/KhalniHeartExpedition.java
+++ b/Mage.Sets/src/mage/cards/k/KhalniHeartExpedition.java
@@ -49,14 +49,14 @@ import java.util.UUID;
*
* @author Viserion
*/
-public class KhalniHeartExpedition extends CardImpl {
+public final class KhalniHeartExpedition extends CardImpl {
public KhalniHeartExpedition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
- TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND);
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new SearchLibraryPutInPlayEffect(target, true, Outcome.PutLandInPlay),
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
diff --git a/Mage.Sets/src/mage/cards/k/KhalniHydra.java b/Mage.Sets/src/mage/cards/k/KhalniHydra.java
index 91edc5d7e5e..02f16670843 100644
--- a/Mage.Sets/src/mage/cards/k/KhalniHydra.java
+++ b/Mage.Sets/src/mage/cards/k/KhalniHydra.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author maurer.it_at_gmail.com
*/
-public class KhalniHydra extends CardImpl {
+public final class KhalniHydra extends CardImpl {
private static final FilterControlledCreaturePermanent filter;
diff --git a/Mage.Sets/src/mage/cards/k/KhenraCharioteer.java b/Mage.Sets/src/mage/cards/k/KhenraCharioteer.java
index de993e7f595..27f42b69633 100644
--- a/Mage.Sets/src/mage/cards/k/KhenraCharioteer.java
+++ b/Mage.Sets/src/mage/cards/k/KhenraCharioteer.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Styxo
*/
-public class KhenraCharioteer extends CardImpl {
+public final class KhenraCharioteer extends CardImpl {
public KhenraCharioteer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KhenraEternal.java b/Mage.Sets/src/mage/cards/k/KhenraEternal.java
index 0450c72c185..6a0279170e0 100644
--- a/Mage.Sets/src/mage/cards/k/KhenraEternal.java
+++ b/Mage.Sets/src/mage/cards/k/KhenraEternal.java
@@ -8,7 +8,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-public class KhenraEternal extends CardImpl {
+public final class KhenraEternal extends CardImpl {
public KhenraEternal(UUID ownerId, CardSetInfo cardSetInfo) {
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KhenraScrapper.java b/Mage.Sets/src/mage/cards/k/KhenraScrapper.java
index df5a4af154d..497b0cd3e65 100644
--- a/Mage.Sets/src/mage/cards/k/KhenraScrapper.java
+++ b/Mage.Sets/src/mage/cards/k/KhenraScrapper.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class KhenraScrapper extends CardImpl {
+public final class KhenraScrapper extends CardImpl {
public KhenraScrapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KherKeep.java b/Mage.Sets/src/mage/cards/k/KherKeep.java
index 7b8c1b13636..27d1e08fdef 100644
--- a/Mage.Sets/src/mage/cards/k/KherKeep.java
+++ b/Mage.Sets/src/mage/cards/k/KherKeep.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.KherKeepKoboldToken;
*
* @author LevelX2
*/
-public class KherKeep extends CardImpl {
+public final class KherKeep extends CardImpl {
public KherKeep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/k/KheruBloodsucker.java b/Mage.Sets/src/mage/cards/k/KheruBloodsucker.java
index ccd42966ac6..1a40b11d220 100644
--- a/Mage.Sets/src/mage/cards/k/KheruBloodsucker.java
+++ b/Mage.Sets/src/mage/cards/k/KheruBloodsucker.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class KheruBloodsucker extends CardImpl {
+public final class KheruBloodsucker extends CardImpl {
private static final FilterCreaturePermanent toughnessFilter = new FilterCreaturePermanent("a creature you control with toughness 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/k/KheruDreadmaw.java b/Mage.Sets/src/mage/cards/k/KheruDreadmaw.java
index bd40c30c1af..0a495d84d86 100644
--- a/Mage.Sets/src/mage/cards/k/KheruDreadmaw.java
+++ b/Mage.Sets/src/mage/cards/k/KheruDreadmaw.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class KheruDreadmaw extends CardImpl {
+public final class KheruDreadmaw extends CardImpl {
public KheruDreadmaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KheruLichLord.java b/Mage.Sets/src/mage/cards/k/KheruLichLord.java
index 8598e601e0b..1ffc1b03e46 100644
--- a/Mage.Sets/src/mage/cards/k/KheruLichLord.java
+++ b/Mage.Sets/src/mage/cards/k/KheruLichLord.java
@@ -66,7 +66,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class KheruLichLord extends CardImpl {
+public final class KheruLichLord extends CardImpl {
public KheruLichLord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KheruMindEater.java b/Mage.Sets/src/mage/cards/k/KheruMindEater.java
index 301a9a144d0..57870593785 100644
--- a/Mage.Sets/src/mage/cards/k/KheruMindEater.java
+++ b/Mage.Sets/src/mage/cards/k/KheruMindEater.java
@@ -41,9 +41,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AsThoughEffectType;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.game.ExileZone;
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author TheElk801
*/
-public class KheruMindEater extends CardImpl {
+public final class KheruMindEater extends CardImpl {
public KheruMindEater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
@@ -107,7 +107,7 @@ class KheruMindEaterExileEffect extends OneShotEffect {
Card card = game.getCard(target.getFirstTarget());
MageObject sourceObject = game.getObject(source.getSourceId());
if (card != null && sourceObject != null) {
- if (player.moveCardToExileWithInfo(card, CardUtil.getCardExileZoneId(game, source), sourceObject.getIdName(), source.getSourceId(), game, Zone.HAND, true)) {
+ if (player.moveCardsToExile(card, source, game, false, CardUtil.getCardExileZoneId(game, source), sourceObject.getIdName())) {
card.setFaceDown(true, game);
}
return true;
diff --git a/Mage.Sets/src/mage/cards/k/KheruSpellsnatcher.java b/Mage.Sets/src/mage/cards/k/KheruSpellsnatcher.java
index 4d5b7a0c09c..820588c3e57 100644
--- a/Mage.Sets/src/mage/cards/k/KheruSpellsnatcher.java
+++ b/Mage.Sets/src/mage/cards/k/KheruSpellsnatcher.java
@@ -58,7 +58,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class KheruSpellsnatcher extends CardImpl {
+public final class KheruSpellsnatcher extends CardImpl {
public KheruSpellsnatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KhorvathBrightflame.java b/Mage.Sets/src/mage/cards/k/KhorvathBrightflame.java
new file mode 100644
index 00000000000..09b1be5d243
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/k/KhorvathBrightflame.java
@@ -0,0 +1,86 @@
+/*
+ * 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.k;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.abilities.keyword.FlyingAbility;
+import mage.abilities.keyword.HasteAbility;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Zone;
+import mage.filter.common.FilterTeamPermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class KhorvathBrightflame extends CardImpl {
+
+ private static final FilterTeamPermanent filter = new FilterTeamPermanent(SubType.KNIGHT, "Knights your team controls");
+
+ public KhorvathBrightflame(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.DRAGON);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(4);
+
+ // Partner with Sylvia Brightspear (When this creature enters the battlefield, target player may put Sylvia into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Sylvia Brightspear", true));
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // Haste
+ this.addAbility(HasteAbility.getInstance());
+
+ // Knights your team controls have flying and haste.
+ Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield, filter));
+ ability.addEffect(new GainAbilityAllEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield, filter).setText("and haste"));
+ this.addAbility(ability);
+ }
+
+ public KhorvathBrightflame(final KhorvathBrightflame card) {
+ super(card);
+ }
+
+ @Override
+ public KhorvathBrightflame copy() {
+ return new KhorvathBrightflame(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/k/KhorvathsFury.java b/Mage.Sets/src/mage/cards/k/KhorvathsFury.java
new file mode 100644
index 00000000000..ad8f7bde025
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/k/KhorvathsFury.java
@@ -0,0 +1,115 @@
+/*
+ * 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.k;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.choices.ChooseFriendsAndFoes;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class KhorvathsFury extends CardImpl {
+
+ public KhorvathsFury(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}");
+
+ // For each player, choose friend or foe. Each friend discards all cards from their hand, then draws that many cards plus one. Khorvath's Fury deals damage to each foe equal to the number of cards in their hand.
+ this.getSpellAbility().addEffect(new KhorvathsFuryEffect());
+ }
+
+ public KhorvathsFury(final KhorvathsFury card) {
+ super(card);
+ }
+
+ @Override
+ public KhorvathsFury copy() {
+ return new KhorvathsFury(this);
+ }
+}
+
+class KhorvathsFuryEffect extends OneShotEffect {
+
+ KhorvathsFuryEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "For each player, choose friend or foe. "
+ + "Each friend discards all cards from their hand, "
+ + "then draws that many cards plus one."
+ + " {this} deals damage to each foe equal to the number of cards in their hand";
+ }
+
+ KhorvathsFuryEffect(final KhorvathsFuryEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public KhorvathsFuryEffect copy() {
+ return new KhorvathsFuryEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
+ ChooseFriendsAndFoes choice = new ChooseFriendsAndFoes();
+ choice.chooseFriendOrFoe(controller, source, game);
+ Map cardsToDraw = new HashMap<>();
+ for (Player player : choice.getFriends()) {
+ if (player != null) {
+ int cardsInHand = player.getHand().size();
+ player.discard(cardsInHand, false, source, game);
+ if (cardsInHand > 0) {
+ cardsToDraw.put(player.getId(), cardsInHand);
+ }
+ }
+ }
+ for (Player player : choice.getFriends()) {
+ if (player != null) {
+ player.drawCards(cardsToDraw.get(player.getId()) + 1, game);
+ }
+ }
+ for (Player player : choice.getFoes()) {
+ if (player != null) {
+ player.damage(player.getHand().size(), source.getSourceId(), game, false, true);
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/k/KiAdiMundi.java b/Mage.Sets/src/mage/cards/k/KiAdiMundi.java
index a6c1deec479..eabdf153973 100644
--- a/Mage.Sets/src/mage/cards/k/KiAdiMundi.java
+++ b/Mage.Sets/src/mage/cards/k/KiAdiMundi.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Styxo
*/
-public class KiAdiMundi extends CardImpl {
+public final class KiAdiMundi extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature you control");
diff --git a/Mage.Sets/src/mage/cards/k/KikiJikiMirrorBreaker.java b/Mage.Sets/src/mage/cards/k/KikiJikiMirrorBreaker.java
index 8cfb48536ab..6c5e11f4700 100644
--- a/Mage.Sets/src/mage/cards/k/KikiJikiMirrorBreaker.java
+++ b/Mage.Sets/src/mage/cards/k/KikiJikiMirrorBreaker.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jonubuu
*/
-public class KikiJikiMirrorBreaker extends CardImpl {
+public final class KikiJikiMirrorBreaker extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("nonlegendary creature you control");
diff --git a/Mage.Sets/src/mage/cards/k/KikuNightsFlower.java b/Mage.Sets/src/mage/cards/k/KikuNightsFlower.java
index b93cfdbb645..215bfeec64f 100644
--- a/Mage.Sets/src/mage/cards/k/KikuNightsFlower.java
+++ b/Mage.Sets/src/mage/cards/k/KikuNightsFlower.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class KikuNightsFlower extends CardImpl {
+public final class KikuNightsFlower extends CardImpl {
public KikuNightsFlower (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KikusShadow.java b/Mage.Sets/src/mage/cards/k/KikusShadow.java
index 648eda7a99e..249a1fb9ebc 100644
--- a/Mage.Sets/src/mage/cards/k/KikusShadow.java
+++ b/Mage.Sets/src/mage/cards/k/KikusShadow.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KikusShadow extends CardImpl {
+public final class KikusShadow extends CardImpl {
public KikusShadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KillShot.java b/Mage.Sets/src/mage/cards/k/KillShot.java
index 97e6e921920..4af3b19d965 100644
--- a/Mage.Sets/src/mage/cards/k/KillShot.java
+++ b/Mage.Sets/src/mage/cards/k/KillShot.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class KillShot extends CardImpl {
+public final class KillShot extends CardImpl {
public KillShot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KillSuitCultist.java b/Mage.Sets/src/mage/cards/k/KillSuitCultist.java
index 7a48931c1aa..8bd7bf5b4f7 100644
--- a/Mage.Sets/src/mage/cards/k/KillSuitCultist.java
+++ b/Mage.Sets/src/mage/cards/k/KillSuitCultist.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class KillSuitCultist extends CardImpl {
+public final class KillSuitCultist extends CardImpl {
public KillSuitCultist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KillSwitch.java b/Mage.Sets/src/mage/cards/k/KillSwitch.java
index 4af8adc08d4..5c3089388aa 100644
--- a/Mage.Sets/src/mage/cards/k/KillSwitch.java
+++ b/Mage.Sets/src/mage/cards/k/KillSwitch.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.PermanentIdPredicate;
*
* @author spjspj
*/
-public class KillSwitch extends CardImpl {
+public final class KillSwitch extends CardImpl {
//static {
diff --git a/Mage.Sets/src/mage/cards/k/KillerBees.java b/Mage.Sets/src/mage/cards/k/KillerBees.java
index 92fde6fd304..b33987ae2b6 100644
--- a/Mage.Sets/src/mage/cards/k/KillerBees.java
+++ b/Mage.Sets/src/mage/cards/k/KillerBees.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class KillerBees extends CardImpl {
+public final class KillerBees extends CardImpl {
public KillerBees(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KillerInstinct.java b/Mage.Sets/src/mage/cards/k/KillerInstinct.java
index ca6d7f785d5..8beb28be7c3 100644
--- a/Mage.Sets/src/mage/cards/k/KillerInstinct.java
+++ b/Mage.Sets/src/mage/cards/k/KillerInstinct.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class KillerInstinct extends CardImpl {
+public final class KillerInstinct extends CardImpl {
public KillerInstinct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KillerWhale.java b/Mage.Sets/src/mage/cards/k/KillerWhale.java
index 9af7bc4798f..c96dd218b91 100644
--- a/Mage.Sets/src/mage/cards/k/KillerWhale.java
+++ b/Mage.Sets/src/mage/cards/k/KillerWhale.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class KillerWhale extends CardImpl {
+public final class KillerWhale extends CardImpl {
public KillerWhale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KillingGlare.java b/Mage.Sets/src/mage/cards/k/KillingGlare.java
index d078e13651c..21d5adc5c4a 100644
--- a/Mage.Sets/src/mage/cards/k/KillingGlare.java
+++ b/Mage.Sets/src/mage/cards/k/KillingGlare.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KillingGlare extends CardImpl {
+public final class KillingGlare extends CardImpl {
public KillingGlare (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KillingWave.java b/Mage.Sets/src/mage/cards/k/KillingWave.java
index 5624f39f0cc..8da49be1437 100644
--- a/Mage.Sets/src/mage/cards/k/KillingWave.java
+++ b/Mage.Sets/src/mage/cards/k/KillingWave.java
@@ -45,11 +45,10 @@ import java.util.*;
*
* @author North
*/
-public class KillingWave extends CardImpl {
+public final class KillingWave extends CardImpl {
public KillingWave(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}");
// For each creature, its controller sacrifices it unless he or she pays X life.
this.getSpellAbility().addEffect(new KillingWaveEffect());
@@ -96,21 +95,23 @@ class KillingWaveEffect extends OneShotEffect {
FilterCreaturePermanent filter = new FilterCreaturePermanent();
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
- List creatures = game.getBattlefield().getAllActivePermanents(filter, playerId, game);
+ if (player != null) {
+ List creatures = game.getBattlefield().getAllActivePermanents(filter, playerId, game);
- int lifePaid = 0;
- int playerLife = player.getLife();
- for (Permanent creature : creatures) {
- String message = "Pay " + amount + " life? If you don't, " + creature.getName() + " will be sacrificed.";
- if (playerLife - amount - lifePaid >= 0 && player != null && player.chooseUse(Outcome.Neutral, message, source, game)) {
- game.informPlayers(player.getLogName() + " pays " + amount + " life. He will not sacrifice " + creature.getName());
- lifePaid += amount;
- } else {
- game.informPlayers(player.getLogName() + " will sacrifice " + creature.getName());
- sacrifices.add(creature);
+ int lifePaid = 0;
+ int playerLife = player.getLife();
+ for (Permanent creature : creatures) {
+ String message = "Pay " + amount + " life? If you don't, " + creature.getName() + " will be sacrificed.";
+ if (playerLife - amount - lifePaid >= 0 && player.chooseUse(Outcome.Neutral, message, source, game)) {
+ game.informPlayers(player.getLogName() + " pays " + amount + " life. He will not sacrifice " + creature.getName());
+ lifePaid += amount;
+ } else {
+ game.informPlayers(player.getLogName() + " will sacrifice " + creature.getName());
+ sacrifices.add(creature);
+ }
}
+ lifePaidAmounts.put(playerId, lifePaid);
}
- lifePaidAmounts.put(playerId, lifePaid);
}
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
diff --git a/Mage.Sets/src/mage/cards/k/KilnFiend.java b/Mage.Sets/src/mage/cards/k/KilnFiend.java
index 0538815f107..f8005e6c9f4 100644
--- a/Mage.Sets/src/mage/cards/k/KilnFiend.java
+++ b/Mage.Sets/src/mage/cards/k/KilnFiend.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author North
*/
-public class KilnFiend extends CardImpl {
+public final class KilnFiend extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
static {
diff --git a/Mage.Sets/src/mage/cards/k/KilnWalker.java b/Mage.Sets/src/mage/cards/k/KilnWalker.java
index a2ec6761ebf..198cf4a0d25 100644
--- a/Mage.Sets/src/mage/cards/k/KilnWalker.java
+++ b/Mage.Sets/src/mage/cards/k/KilnWalker.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class KilnWalker extends CardImpl {
+public final class KilnWalker extends CardImpl {
public KilnWalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/k/KilnmouthDragon.java b/Mage.Sets/src/mage/cards/k/KilnmouthDragon.java
index deb6557ad3d..e8a0a557702 100644
--- a/Mage.Sets/src/mage/cards/k/KilnmouthDragon.java
+++ b/Mage.Sets/src/mage/cards/k/KilnmouthDragon.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author FenrisulfrX
*/
-public class KilnmouthDragon extends CardImpl {
+public final class KilnmouthDragon extends CardImpl {
public KilnmouthDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KinTreeInvocation.java b/Mage.Sets/src/mage/cards/k/KinTreeInvocation.java
index bc713542b19..f9549759131 100644
--- a/Mage.Sets/src/mage/cards/k/KinTreeInvocation.java
+++ b/Mage.Sets/src/mage/cards/k/KinTreeInvocation.java
@@ -50,7 +50,7 @@ import mage.util.SubTypeList;
*
* @author LevelX2
*/
-public class KinTreeInvocation extends CardImpl {
+public final class KinTreeInvocation extends CardImpl {
public KinTreeInvocation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KinTreeWarden.java b/Mage.Sets/src/mage/cards/k/KinTreeWarden.java
index 7257dcfba5a..701b1861992 100644
--- a/Mage.Sets/src/mage/cards/k/KinTreeWarden.java
+++ b/Mage.Sets/src/mage/cards/k/KinTreeWarden.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class KinTreeWarden extends CardImpl {
+public final class KinTreeWarden extends CardImpl {
public KinTreeWarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/k/Kindercatch.java b/Mage.Sets/src/mage/cards/k/Kindercatch.java
index 1695def63c5..136541eb6cb 100644
--- a/Mage.Sets/src/mage/cards/k/Kindercatch.java
+++ b/Mage.Sets/src/mage/cards/k/Kindercatch.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Kindercatch extends CardImpl {
+public final class Kindercatch extends CardImpl {
public Kindercatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/Kindle.java b/Mage.Sets/src/mage/cards/k/Kindle.java
index d0bc2aa6f5b..a882d52a23e 100644
--- a/Mage.Sets/src/mage/cards/k/Kindle.java
+++ b/Mage.Sets/src/mage/cards/k/Kindle.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Kindle extends CardImpl {
+public final class Kindle extends CardImpl {
private static final FilterCard filter = new FilterCard("2 plus the number of cards named Kindle");
diff --git a/Mage.Sets/src/mage/cards/k/KindleTheCarnage.java b/Mage.Sets/src/mage/cards/k/KindleTheCarnage.java
index 463e641889a..02010a57010 100644
--- a/Mage.Sets/src/mage/cards/k/KindleTheCarnage.java
+++ b/Mage.Sets/src/mage/cards/k/KindleTheCarnage.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class KindleTheCarnage extends CardImpl {
+public final class KindleTheCarnage extends CardImpl {
public KindleTheCarnage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KindledFury.java b/Mage.Sets/src/mage/cards/k/KindledFury.java
index 5ae167bc3f2..e8ee560cf77 100644
--- a/Mage.Sets/src/mage/cards/k/KindledFury.java
+++ b/Mage.Sets/src/mage/cards/k/KindledFury.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class KindledFury extends CardImpl {
+public final class KindledFury extends CardImpl {
public KindledFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KindlyStranger.java b/Mage.Sets/src/mage/cards/k/KindlyStranger.java
index 30f7961d5d2..2ad1c43fe05 100644
--- a/Mage.Sets/src/mage/cards/k/KindlyStranger.java
+++ b/Mage.Sets/src/mage/cards/k/KindlyStranger.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class KindlyStranger extends CardImpl {
+public final class KindlyStranger extends CardImpl {
public KindlyStranger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KindredBoon.java b/Mage.Sets/src/mage/cards/k/KindredBoon.java
index c0be740e70d..085124a7326 100644
--- a/Mage.Sets/src/mage/cards/k/KindredBoon.java
+++ b/Mage.Sets/src/mage/cards/k/KindredBoon.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author Saga
*/
-public class KindredBoon extends CardImpl {
+public final class KindredBoon extends CardImpl {
private static final FilterControlledCreaturePermanent filterDivinity = new FilterControlledCreaturePermanent("Each creature you control with a divinity counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/k/KindredCharge.java b/Mage.Sets/src/mage/cards/k/KindredCharge.java
index 029797f0f73..218b05c604f 100644
--- a/Mage.Sets/src/mage/cards/k/KindredCharge.java
+++ b/Mage.Sets/src/mage/cards/k/KindredCharge.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Saga
*/
-public class KindredCharge extends CardImpl {
+public final class KindredCharge extends CardImpl {
public KindredCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KindredDiscovery.java b/Mage.Sets/src/mage/cards/k/KindredDiscovery.java
index 79069afc07a..26a793aa81b 100644
--- a/Mage.Sets/src/mage/cards/k/KindredDiscovery.java
+++ b/Mage.Sets/src/mage/cards/k/KindredDiscovery.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ChosenSubtypePredicate;
*
* @author Saga
*/
-public class KindredDiscovery extends CardImpl {
+public final class KindredDiscovery extends CardImpl {
public KindredDiscovery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KindredDominance.java b/Mage.Sets/src/mage/cards/k/KindredDominance.java
index 93b77d9f5f5..d19d2a7860e 100644
--- a/Mage.Sets/src/mage/cards/k/KindredDominance.java
+++ b/Mage.Sets/src/mage/cards/k/KindredDominance.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author caldover
*/
-public class KindredDominance extends CardImpl {
+public final class KindredDominance extends CardImpl {
public KindredDominance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KindredSummons.java b/Mage.Sets/src/mage/cards/k/KindredSummons.java
index c72c121e6eb..7f4649ccf56 100644
--- a/Mage.Sets/src/mage/cards/k/KindredSummons.java
+++ b/Mage.Sets/src/mage/cards/k/KindredSummons.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author Saga
*/
-public class KindredSummons extends CardImpl {
+public final class KindredSummons extends CardImpl {
public KindredSummons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KingCheetah.java b/Mage.Sets/src/mage/cards/k/KingCheetah.java
index 2a9dce7d91e..97a94957395 100644
--- a/Mage.Sets/src/mage/cards/k/KingCheetah.java
+++ b/Mage.Sets/src/mage/cards/k/KingCheetah.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KingCheetah extends CardImpl {
+public final class KingCheetah extends CardImpl {
public KingCheetah(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KingCrab.java b/Mage.Sets/src/mage/cards/k/KingCrab.java
index 7e4abce70ee..6738c8810f4 100644
--- a/Mage.Sets/src/mage/cards/k/KingCrab.java
+++ b/Mage.Sets/src/mage/cards/k/KingCrab.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class KingCrab extends CardImpl {
+public final class KingCrab extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/k/KingMacarTheGoldCursed.java b/Mage.Sets/src/mage/cards/k/KingMacarTheGoldCursed.java
index cc6ba928ff8..9c2badfb1d0 100644
--- a/Mage.Sets/src/mage/cards/k/KingMacarTheGoldCursed.java
+++ b/Mage.Sets/src/mage/cards/k/KingMacarTheGoldCursed.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KingMacarTheGoldCursed extends CardImpl {
+public final class KingMacarTheGoldCursed extends CardImpl {
public KingMacarTheGoldCursed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KingSuleiman.java b/Mage.Sets/src/mage/cards/k/KingSuleiman.java
index 7b48ec7c27e..930c00029b8 100644
--- a/Mage.Sets/src/mage/cards/k/KingSuleiman.java
+++ b/Mage.Sets/src/mage/cards/k/KingSuleiman.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author KholdFuzion
*/
-public class KingSuleiman extends CardImpl {
+public final class KingSuleiman extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Djinn or Efreet");
diff --git a/Mage.Sets/src/mage/cards/k/Kingfisher.java b/Mage.Sets/src/mage/cards/k/Kingfisher.java
index 08be8a5483d..52ee6ac13f5 100644
--- a/Mage.Sets/src/mage/cards/k/Kingfisher.java
+++ b/Mage.Sets/src/mage/cards/k/Kingfisher.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class Kingfisher extends CardImpl {
+public final class Kingfisher extends CardImpl {
public Kingfisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KingpinsPet.java b/Mage.Sets/src/mage/cards/k/KingpinsPet.java
index f66ca88a44f..279e38ff8b9 100644
--- a/Mage.Sets/src/mage/cards/k/KingpinsPet.java
+++ b/Mage.Sets/src/mage/cards/k/KingpinsPet.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class KingpinsPet extends CardImpl {
+public final class KingpinsPet extends CardImpl {
public KingpinsPet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KingsAssassin.java b/Mage.Sets/src/mage/cards/k/KingsAssassin.java
index 856686ef799..c8b28a7d1d5 100644
--- a/Mage.Sets/src/mage/cards/k/KingsAssassin.java
+++ b/Mage.Sets/src/mage/cards/k/KingsAssassin.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class KingsAssassin extends CardImpl {
+public final class KingsAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/k/KinjallisCaller.java b/Mage.Sets/src/mage/cards/k/KinjallisCaller.java
index 7be71ff7d47..a56692ca9f9 100644
--- a/Mage.Sets/src/mage/cards/k/KinjallisCaller.java
+++ b/Mage.Sets/src/mage/cards/k/KinjallisCaller.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class KinjallisCaller extends CardImpl {
+public final class KinjallisCaller extends CardImpl {
private static final FilterCard filter = new FilterCard("Dinosaur spells");
diff --git a/Mage.Sets/src/mage/cards/k/KinjallisSunwing.java b/Mage.Sets/src/mage/cards/k/KinjallisSunwing.java
index 6fde2f046e9..ceec0e5735b 100644
--- a/Mage.Sets/src/mage/cards/k/KinjallisSunwing.java
+++ b/Mage.Sets/src/mage/cards/k/KinjallisSunwing.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class KinjallisSunwing extends CardImpl {
+public final class KinjallisSunwing extends CardImpl {
public KinjallisSunwing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KinsbaileBalloonist.java b/Mage.Sets/src/mage/cards/k/KinsbaileBalloonist.java
index 9292e76e9bc..0b6e06108ff 100644
--- a/Mage.Sets/src/mage/cards/k/KinsbaileBalloonist.java
+++ b/Mage.Sets/src/mage/cards/k/KinsbaileBalloonist.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class KinsbaileBalloonist extends CardImpl {
+public final class KinsbaileBalloonist extends CardImpl {
public KinsbaileBalloonist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KinsbaileBorderguard.java b/Mage.Sets/src/mage/cards/k/KinsbaileBorderguard.java
index d87d9f79ee0..7ac1ffa375c 100644
--- a/Mage.Sets/src/mage/cards/k/KinsbaileBorderguard.java
+++ b/Mage.Sets/src/mage/cards/k/KinsbaileBorderguard.java
@@ -53,7 +53,7 @@ import mage.game.permanent.token.KithkinToken;
*
* @author LoneFox
*/
-public class KinsbaileBorderguard extends CardImpl {
+public final class KinsbaileBorderguard extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/k/KinsbaileCavalier.java b/Mage.Sets/src/mage/cards/k/KinsbaileCavalier.java
index 39b9e5a7d95..8c5c49ebdf5 100644
--- a/Mage.Sets/src/mage/cards/k/KinsbaileCavalier.java
+++ b/Mage.Sets/src/mage/cards/k/KinsbaileCavalier.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class KinsbaileCavalier extends CardImpl {
+public final class KinsbaileCavalier extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Knight creatures");
diff --git a/Mage.Sets/src/mage/cards/k/KinsbaileSkirmisher.java b/Mage.Sets/src/mage/cards/k/KinsbaileSkirmisher.java
index a5dc99b377c..2aa3e5d4523 100644
--- a/Mage.Sets/src/mage/cards/k/KinsbaileSkirmisher.java
+++ b/Mage.Sets/src/mage/cards/k/KinsbaileSkirmisher.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class KinsbaileSkirmisher extends CardImpl {
+public final class KinsbaileSkirmisher extends CardImpl {
public KinsbaileSkirmisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KinscaerHarpoonist.java b/Mage.Sets/src/mage/cards/k/KinscaerHarpoonist.java
index 011a077f365..334887fed05 100644
--- a/Mage.Sets/src/mage/cards/k/KinscaerHarpoonist.java
+++ b/Mage.Sets/src/mage/cards/k/KinscaerHarpoonist.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*/
-public class KinscaerHarpoonist extends CardImpl {
+public final class KinscaerHarpoonist extends CardImpl {
public KinscaerHarpoonist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KioraMasterOfTheDepths.java b/Mage.Sets/src/mage/cards/k/KioraMasterOfTheDepths.java
index ed634488849..a1990129258 100644
--- a/Mage.Sets/src/mage/cards/k/KioraMasterOfTheDepths.java
+++ b/Mage.Sets/src/mage/cards/k/KioraMasterOfTheDepths.java
@@ -63,7 +63,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class KioraMasterOfTheDepths extends CardImpl {
+public final class KioraMasterOfTheDepths extends CardImpl {
public KioraMasterOfTheDepths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KioraTheCrashingWave.java b/Mage.Sets/src/mage/cards/k/KioraTheCrashingWave.java
index caf17737b3f..9402289c359 100644
--- a/Mage.Sets/src/mage/cards/k/KioraTheCrashingWave.java
+++ b/Mage.Sets/src/mage/cards/k/KioraTheCrashingWave.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class KioraTheCrashingWave extends CardImpl {
+public final class KioraTheCrashingWave extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/k/KiorasDismissal.java b/Mage.Sets/src/mage/cards/k/KiorasDismissal.java
index 1a6b0ee38da..c713f03475b 100644
--- a/Mage.Sets/src/mage/cards/k/KiorasDismissal.java
+++ b/Mage.Sets/src/mage/cards/k/KiorasDismissal.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class KiorasDismissal extends CardImpl {
+public final class KiorasDismissal extends CardImpl {
public KiorasDismissal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KiorasFollower.java b/Mage.Sets/src/mage/cards/k/KiorasFollower.java
index 270e11bc33a..053c7c270d7 100644
--- a/Mage.Sets/src/mage/cards/k/KiorasFollower.java
+++ b/Mage.Sets/src/mage/cards/k/KiorasFollower.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class KiorasFollower extends CardImpl {
+public final class KiorasFollower extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another target permanent");
diff --git a/Mage.Sets/src/mage/cards/k/KiraGreatGlassSpinner.java b/Mage.Sets/src/mage/cards/k/KiraGreatGlassSpinner.java
index dfcc8a6c8a9..4a2284beef9 100644
--- a/Mage.Sets/src/mage/cards/k/KiraGreatGlassSpinner.java
+++ b/Mage.Sets/src/mage/cards/k/KiraGreatGlassSpinner.java
@@ -50,7 +50,7 @@ import mage.watchers.common.NumberOfTimesPermanentTargetedATurnWatcher;
*
* @author LevelX2
*/
-public class KiraGreatGlassSpinner extends CardImpl {
+public final class KiraGreatGlassSpinner extends CardImpl {
public KiraGreatGlassSpinner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KirdApe.java b/Mage.Sets/src/mage/cards/k/KirdApe.java
index 9178fe0ca37..80b35695065 100644
--- a/Mage.Sets/src/mage/cards/k/KirdApe.java
+++ b/Mage.Sets/src/mage/cards/k/KirdApe.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jonubuu
*/
-public class KirdApe extends CardImpl {
+public final class KirdApe extends CardImpl {
private static final String rule = "{this} gets +1/+2 as long as you control a Forest";
private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/k/KirdChieftain.java b/Mage.Sets/src/mage/cards/k/KirdChieftain.java
index 5c80a54221b..07581401117 100644
--- a/Mage.Sets/src/mage/cards/k/KirdChieftain.java
+++ b/Mage.Sets/src/mage/cards/k/KirdChieftain.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class KirdChieftain extends CardImpl {
+public final class KirdChieftain extends CardImpl {
private static final String rule = "{this} gets +1/+1 as long as you control a Forest";
private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/k/KiriOnna.java b/Mage.Sets/src/mage/cards/k/KiriOnna.java
index 7c82248bb69..56b9f848e96 100644
--- a/Mage.Sets/src/mage/cards/k/KiriOnna.java
+++ b/Mage.Sets/src/mage/cards/k/KiriOnna.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class KiriOnna extends CardImpl {
+public final class KiriOnna extends CardImpl {
public KiriOnna(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KirtarsDesire.java b/Mage.Sets/src/mage/cards/k/KirtarsDesire.java
index 1906384c886..87a3ca42d55 100644
--- a/Mage.Sets/src/mage/cards/k/KirtarsDesire.java
+++ b/Mage.Sets/src/mage/cards/k/KirtarsDesire.java
@@ -51,7 +51,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class KirtarsDesire extends CardImpl {
+public final class KirtarsDesire extends CardImpl {
public KirtarsDesire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KirtarsWrath.java b/Mage.Sets/src/mage/cards/k/KirtarsWrath.java
index 7a8803a199c..76a2e424099 100644
--- a/Mage.Sets/src/mage/cards/k/KirtarsWrath.java
+++ b/Mage.Sets/src/mage/cards/k/KirtarsWrath.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author LevelX2
*/
-public class KirtarsWrath extends CardImpl {
+public final class KirtarsWrath extends CardImpl {
public KirtarsWrath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/Kismet.java b/Mage.Sets/src/mage/cards/k/Kismet.java
index abcbda0c4c8..456169e833a 100644
--- a/Mage.Sets/src/mage/cards/k/Kismet.java
+++ b/Mage.Sets/src/mage/cards/k/Kismet.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author Quercitron
*/
-public class Kismet extends CardImpl {
+public final class Kismet extends CardImpl {
public Kismet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KissOfDeath.java b/Mage.Sets/src/mage/cards/k/KissOfDeath.java
index 1f653a219e0..3a2b435cf08 100644
--- a/Mage.Sets/src/mage/cards/k/KissOfDeath.java
+++ b/Mage.Sets/src/mage/cards/k/KissOfDeath.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author fireshoes
*/
-public class KissOfDeath extends CardImpl {
+public final class KissOfDeath extends CardImpl {
public KissOfDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KissOfTheAmesha.java b/Mage.Sets/src/mage/cards/k/KissOfTheAmesha.java
index a0ce05c3556..69cdb3851bb 100644
--- a/Mage.Sets/src/mage/cards/k/KissOfTheAmesha.java
+++ b/Mage.Sets/src/mage/cards/k/KissOfTheAmesha.java
@@ -39,16 +39,15 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class KissOfTheAmesha extends CardImpl {
+public final class KissOfTheAmesha extends CardImpl {
public KissOfTheAmesha(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{U}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}{U}");
// Target player gains 7 life and draws two cards.
this.getSpellAbility().addTarget(new TargetPlayer());
this.getSpellAbility().addEffect(new GainLifeTargetEffect(7));
- this.getSpellAbility().addEffect(new DrawCardTargetEffect(2));
+ this.getSpellAbility().addEffect(new DrawCardTargetEffect(2).setText("and draws two cards"));
}
public KissOfTheAmesha(final KissOfTheAmesha card) {
diff --git a/Mage.Sets/src/mage/cards/k/KitchenFinks.java b/Mage.Sets/src/mage/cards/k/KitchenFinks.java
index 2ae886f5947..78e0f676d1f 100644
--- a/Mage.Sets/src/mage/cards/k/KitchenFinks.java
+++ b/Mage.Sets/src/mage/cards/k/KitchenFinks.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class KitchenFinks extends CardImpl {
+public final class KitchenFinks extends CardImpl {
public KitchenFinks(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G/W}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/k/KiteShield.java b/Mage.Sets/src/mage/cards/k/KiteShield.java
index d2c10259a5a..2b75c996ef3 100644
--- a/Mage.Sets/src/mage/cards/k/KiteShield.java
+++ b/Mage.Sets/src/mage/cards/k/KiteShield.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class KiteShield extends CardImpl {
+public final class KiteShield extends CardImpl {
public KiteShield (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/k/Kitesail.java b/Mage.Sets/src/mage/cards/k/Kitesail.java
index 73125167aad..b611e0dd6ed 100644
--- a/Mage.Sets/src/mage/cards/k/Kitesail.java
+++ b/Mage.Sets/src/mage/cards/k/Kitesail.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class Kitesail extends CardImpl {
+public final class Kitesail extends CardImpl {
public Kitesail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/k/KitesailApprentice.java b/Mage.Sets/src/mage/cards/k/KitesailApprentice.java
index 1b06f9e1032..b5df919d12a 100644
--- a/Mage.Sets/src/mage/cards/k/KitesailApprentice.java
+++ b/Mage.Sets/src/mage/cards/k/KitesailApprentice.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class KitesailApprentice extends CardImpl {
+public final class KitesailApprentice extends CardImpl {
private static final String rule1 = "As long as {this} is equipped, it gets +1/+1";
private static final String rule2 = "As long as {this} is equipped, it has flying";
diff --git a/Mage.Sets/src/mage/cards/k/KitesailCorsair.java b/Mage.Sets/src/mage/cards/k/KitesailCorsair.java
index 3d26acea3d6..8cef701cad5 100644
--- a/Mage.Sets/src/mage/cards/k/KitesailCorsair.java
+++ b/Mage.Sets/src/mage/cards/k/KitesailCorsair.java
@@ -43,7 +43,7 @@ import mage.cards.CardSetInfo;
*
* @author JayDi85
*/
-public class KitesailCorsair extends CardImpl {
+public final class KitesailCorsair extends CardImpl {
public KitesailCorsair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KitesailFreebooter.java b/Mage.Sets/src/mage/cards/k/KitesailFreebooter.java
index 1c55127d584..c623e5e7965 100644
--- a/Mage.Sets/src/mage/cards/k/KitesailFreebooter.java
+++ b/Mage.Sets/src/mage/cards/k/KitesailFreebooter.java
@@ -62,7 +62,7 @@ import mage.util.CardUtil;
*
* @author TheElk801
*/
-public class KitesailFreebooter extends CardImpl {
+public final class KitesailFreebooter extends CardImpl {
public KitesailFreebooter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KitesailScout.java b/Mage.Sets/src/mage/cards/k/KitesailScout.java
index 90d320b2c2e..436ebffdc42 100644
--- a/Mage.Sets/src/mage/cards/k/KitesailScout.java
+++ b/Mage.Sets/src/mage/cards/k/KitesailScout.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class KitesailScout extends CardImpl {
+public final class KitesailScout extends CardImpl {
public KitesailScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KithkinDaggerdare.java b/Mage.Sets/src/mage/cards/k/KithkinDaggerdare.java
index c5dd967804c..c400986682a 100644
--- a/Mage.Sets/src/mage/cards/k/KithkinDaggerdare.java
+++ b/Mage.Sets/src/mage/cards/k/KithkinDaggerdare.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author Loki
*/
-public class KithkinDaggerdare extends CardImpl {
+public final class KithkinDaggerdare extends CardImpl {
public KithkinDaggerdare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KithkinGreatheart.java b/Mage.Sets/src/mage/cards/k/KithkinGreatheart.java
index 0858e873410..1c3bda4e704 100644
--- a/Mage.Sets/src/mage/cards/k/KithkinGreatheart.java
+++ b/Mage.Sets/src/mage/cards/k/KithkinGreatheart.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class KithkinGreatheart extends CardImpl {
+public final class KithkinGreatheart extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Giant");
static {
diff --git a/Mage.Sets/src/mage/cards/k/KithkinHarbinger.java b/Mage.Sets/src/mage/cards/k/KithkinHarbinger.java
index f630bf9b8e1..f0d91565ebf 100644
--- a/Mage.Sets/src/mage/cards/k/KithkinHarbinger.java
+++ b/Mage.Sets/src/mage/cards/k/KithkinHarbinger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LoneFox
*/
-public class KithkinHarbinger extends CardImpl {
+public final class KithkinHarbinger extends CardImpl {
static final FilterCard filter = new FilterCard("Kithkin card");
diff --git a/Mage.Sets/src/mage/cards/k/KithkinHealer.java b/Mage.Sets/src/mage/cards/k/KithkinHealer.java
index 2ec92ab237f..c1d646ca5ad 100644
--- a/Mage.Sets/src/mage/cards/k/KithkinHealer.java
+++ b/Mage.Sets/src/mage/cards/k/KithkinHealer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class KithkinHealer extends CardImpl {
+public final class KithkinHealer extends CardImpl {
public KithkinHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KithkinMourncaller.java b/Mage.Sets/src/mage/cards/k/KithkinMourncaller.java
index a0a5fa779f7..614825cd048 100644
--- a/Mage.Sets/src/mage/cards/k/KithkinMourncaller.java
+++ b/Mage.Sets/src/mage/cards/k/KithkinMourncaller.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class KithkinMourncaller extends CardImpl {
+public final class KithkinMourncaller extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("an attacking Kithkin or Elf");
diff --git a/Mage.Sets/src/mage/cards/k/KithkinRabble.java b/Mage.Sets/src/mage/cards/k/KithkinRabble.java
index ef371e7e11e..4bf446d0840 100644
--- a/Mage.Sets/src/mage/cards/k/KithkinRabble.java
+++ b/Mage.Sets/src/mage/cards/k/KithkinRabble.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class KithkinRabble extends CardImpl {
+public final class KithkinRabble extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("white permanents you control");
diff --git a/Mage.Sets/src/mage/cards/k/KithkinShielddare.java b/Mage.Sets/src/mage/cards/k/KithkinShielddare.java
index 2370625603a..d702b0f24ff 100644
--- a/Mage.Sets/src/mage/cards/k/KithkinShielddare.java
+++ b/Mage.Sets/src/mage/cards/k/KithkinShielddare.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class KithkinShielddare extends CardImpl {
+public final class KithkinShielddare extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterBlockingCreature("blocking creature");
diff --git a/Mage.Sets/src/mage/cards/k/KithkinSpellduster.java b/Mage.Sets/src/mage/cards/k/KithkinSpellduster.java
index 1f3f0de057a..7d71216731f 100644
--- a/Mage.Sets/src/mage/cards/k/KithkinSpellduster.java
+++ b/Mage.Sets/src/mage/cards/k/KithkinSpellduster.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Loki
*/
-public class KithkinSpellduster extends CardImpl {
+public final class KithkinSpellduster extends CardImpl {
public KithkinSpellduster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KithkinZealot.java b/Mage.Sets/src/mage/cards/k/KithkinZealot.java
index 8d85cf01aaf..89a417ced28 100644
--- a/Mage.Sets/src/mage/cards/k/KithkinZealot.java
+++ b/Mage.Sets/src/mage/cards/k/KithkinZealot.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author jeffwadsworth
*/
-public class KithkinZealot extends CardImpl {
+public final class KithkinZealot extends CardImpl {
public KithkinZealot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KithkinZephyrnaut.java b/Mage.Sets/src/mage/cards/k/KithkinZephyrnaut.java
index 7da57e2150f..544d9d47ba5 100644
--- a/Mage.Sets/src/mage/cards/k/KithkinZephyrnaut.java
+++ b/Mage.Sets/src/mage/cards/k/KithkinZephyrnaut.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class KithkinZephyrnaut extends CardImpl {
+public final class KithkinZephyrnaut extends CardImpl {
public KithkinZephyrnaut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KitsuneBlademaster.java b/Mage.Sets/src/mage/cards/k/KitsuneBlademaster.java
index fd5d0ab1adf..4634c474138 100644
--- a/Mage.Sets/src/mage/cards/k/KitsuneBlademaster.java
+++ b/Mage.Sets/src/mage/cards/k/KitsuneBlademaster.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class KitsuneBlademaster extends CardImpl {
+public final class KitsuneBlademaster extends CardImpl {
public KitsuneBlademaster (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KitsuneBonesetter.java b/Mage.Sets/src/mage/cards/k/KitsuneBonesetter.java
index f300a116d56..965d3f7052c 100644
--- a/Mage.Sets/src/mage/cards/k/KitsuneBonesetter.java
+++ b/Mage.Sets/src/mage/cards/k/KitsuneBonesetter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KitsuneBonesetter extends CardImpl {
+public final class KitsuneBonesetter extends CardImpl {
public KitsuneBonesetter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KitsuneDawnblade.java b/Mage.Sets/src/mage/cards/k/KitsuneDawnblade.java
index 96f7e833280..f09d8b0aa93 100644
--- a/Mage.Sets/src/mage/cards/k/KitsuneDawnblade.java
+++ b/Mage.Sets/src/mage/cards/k/KitsuneDawnblade.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class KitsuneDawnblade extends CardImpl {
+public final class KitsuneDawnblade extends CardImpl {
public KitsuneDawnblade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KitsuneDiviner.java b/Mage.Sets/src/mage/cards/k/KitsuneDiviner.java
index 10a650a4866..e0a35d02080 100644
--- a/Mage.Sets/src/mage/cards/k/KitsuneDiviner.java
+++ b/Mage.Sets/src/mage/cards/k/KitsuneDiviner.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class KitsuneDiviner extends CardImpl {
+public final class KitsuneDiviner extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Spirit");
diff --git a/Mage.Sets/src/mage/cards/k/KitsuneHealer.java b/Mage.Sets/src/mage/cards/k/KitsuneHealer.java
index d72ebd3620f..5a18cc9c940 100644
--- a/Mage.Sets/src/mage/cards/k/KitsuneHealer.java
+++ b/Mage.Sets/src/mage/cards/k/KitsuneHealer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class KitsuneHealer extends CardImpl {
+public final class KitsuneHealer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature");
diff --git a/Mage.Sets/src/mage/cards/k/KitsuneLoreweaver.java b/Mage.Sets/src/mage/cards/k/KitsuneLoreweaver.java
index b1f2789f06e..5ad6e7d31b7 100644
--- a/Mage.Sets/src/mage/cards/k/KitsuneLoreweaver.java
+++ b/Mage.Sets/src/mage/cards/k/KitsuneLoreweaver.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class KitsuneLoreweaver extends CardImpl {
+public final class KitsuneLoreweaver extends CardImpl {
public KitsuneLoreweaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KitsuneMystic.java b/Mage.Sets/src/mage/cards/k/KitsuneMystic.java
index c60ee324af5..633f0772a9c 100644
--- a/Mage.Sets/src/mage/cards/k/KitsuneMystic.java
+++ b/Mage.Sets/src/mage/cards/k/KitsuneMystic.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KitsuneMystic extends CardImpl {
+public final class KitsuneMystic extends CardImpl {
public KitsuneMystic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KitsunePalliator.java b/Mage.Sets/src/mage/cards/k/KitsunePalliator.java
index b2f8111a8a6..c71cc49bb18 100644
--- a/Mage.Sets/src/mage/cards/k/KitsunePalliator.java
+++ b/Mage.Sets/src/mage/cards/k/KitsunePalliator.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class KitsunePalliator extends CardImpl {
+public final class KitsunePalliator extends CardImpl {
public KitsunePalliator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KitsuneRiftwalker.java b/Mage.Sets/src/mage/cards/k/KitsuneRiftwalker.java
index 0802cfcbce8..267df1659a7 100644
--- a/Mage.Sets/src/mage/cards/k/KitsuneRiftwalker.java
+++ b/Mage.Sets/src/mage/cards/k/KitsuneRiftwalker.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX
*/
-public class KitsuneRiftwalker extends CardImpl {
+public final class KitsuneRiftwalker extends CardImpl {
private static final FilterCard filter = new FilterCard("Spirits and from Arcane");
diff --git a/Mage.Sets/src/mage/cards/k/KiyomaroFirstToStand.java b/Mage.Sets/src/mage/cards/k/KiyomaroFirstToStand.java
index 807693f06a2..c1d15d0ae26 100644
--- a/Mage.Sets/src/mage/cards/k/KiyomaroFirstToStand.java
+++ b/Mage.Sets/src/mage/cards/k/KiyomaroFirstToStand.java
@@ -59,7 +59,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class KiyomaroFirstToStand extends CardImpl {
+public final class KiyomaroFirstToStand extends CardImpl {
public KiyomaroFirstToStand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranDead.java b/Mage.Sets/src/mage/cards/k/KjeldoranDead.java
index 0a9bd0052de..7c2e1880ac9 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranDead.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranDead.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author Quercitron
*/
-public class KjeldoranDead extends CardImpl {
+public final class KjeldoranDead extends CardImpl {
public KjeldoranDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranEscort.java b/Mage.Sets/src/mage/cards/k/KjeldoranEscort.java
index c3fb41e65f7..31b86ddf54e 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranEscort.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranEscort.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class KjeldoranEscort extends CardImpl {
+public final class KjeldoranEscort extends CardImpl {
public KjeldoranEscort (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranFrostbeast.java b/Mage.Sets/src/mage/cards/k/KjeldoranFrostbeast.java
index 59f7d1d18a3..698c0604417 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranFrostbeast.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranFrostbeast.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.BlockingAttackerIdPredicate;
*
* @author TheElk801
*/
-public class KjeldoranFrostbeast extends CardImpl {
+public final class KjeldoranFrostbeast extends CardImpl {
public KjeldoranFrostbeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranGargoyle.java b/Mage.Sets/src/mage/cards/k/KjeldoranGargoyle.java
index 110598bc75f..89afa8283e4 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranGargoyle.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranGargoyle.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class KjeldoranGargoyle extends CardImpl {
+public final class KjeldoranGargoyle extends CardImpl {
public KjeldoranGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranHomeGuard.java b/Mage.Sets/src/mage/cards/k/KjeldoranHomeGuard.java
index 08268863197..74c58ca722d 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranHomeGuard.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranHomeGuard.java
@@ -47,7 +47,7 @@ import mage.watchers.common.AttackedOrBlockedThisCombatWatcher;
*
* @author TheElk801
*/
-public class KjeldoranHomeGuard extends CardImpl {
+public final class KjeldoranHomeGuard extends CardImpl {
public KjeldoranHomeGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranJavelineer.java b/Mage.Sets/src/mage/cards/k/KjeldoranJavelineer.java
index efb114d0b04..22f0cdf3b05 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranJavelineer.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranJavelineer.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author TheElk801
*/
-public class KjeldoranJavelineer extends CardImpl {
+public final class KjeldoranJavelineer extends CardImpl {
public KjeldoranJavelineer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranKnight.java b/Mage.Sets/src/mage/cards/k/KjeldoranKnight.java
index c737b8f84aa..10ef9e90d9d 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranKnight.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranKnight.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author L_J
*/
-public class KjeldoranKnight extends CardImpl {
+public final class KjeldoranKnight extends CardImpl {
public KjeldoranKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranOutpost.java b/Mage.Sets/src/mage/cards/k/KjeldoranOutpost.java
index 63d77004e63..a45422c707c 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranOutpost.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranOutpost.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class KjeldoranOutpost extends CardImpl {
+public final class KjeldoranOutpost extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Plains");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranOutrider.java b/Mage.Sets/src/mage/cards/k/KjeldoranOutrider.java
index 83d26ec8382..8df80cc6cf9 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranOutrider.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranOutrider.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class KjeldoranOutrider extends CardImpl {
+public final class KjeldoranOutrider extends CardImpl {
public KjeldoranOutrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranPhalanx.java b/Mage.Sets/src/mage/cards/k/KjeldoranPhalanx.java
index 679e18446e4..6c05f94426a 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranPhalanx.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranPhalanx.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class KjeldoranPhalanx extends CardImpl {
+public final class KjeldoranPhalanx extends CardImpl {
public KjeldoranPhalanx (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranRoyalGuard.java b/Mage.Sets/src/mage/cards/k/KjeldoranRoyalGuard.java
index 0ff4c0e5036..2bec6570729 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranRoyalGuard.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranRoyalGuard.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author Quercitron
*/
-public class KjeldoranRoyalGuard extends CardImpl {
+public final class KjeldoranRoyalGuard extends CardImpl {
public KjeldoranRoyalGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranSkycaptain.java b/Mage.Sets/src/mage/cards/k/KjeldoranSkycaptain.java
index c00db93a4f7..b3b74049676 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranSkycaptain.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranSkycaptain.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class KjeldoranSkycaptain extends CardImpl {
+public final class KjeldoranSkycaptain extends CardImpl {
public KjeldoranSkycaptain (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranSkyknight.java b/Mage.Sets/src/mage/cards/k/KjeldoranSkyknight.java
index abafa67e3ae..dbf50d9aad7 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranSkyknight.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranSkyknight.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class KjeldoranSkyknight extends CardImpl {
+public final class KjeldoranSkyknight extends CardImpl {
public KjeldoranSkyknight (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranWarCry.java b/Mage.Sets/src/mage/cards/k/KjeldoranWarCry.java
index f7d5617f27a..5d72975d8e3 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranWarCry.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranWarCry.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author L_J
*/
-public class KjeldoranWarCry extends CardImpl {
+public final class KjeldoranWarCry extends CardImpl {
private static final FilterCard filter = new FilterCard("cards named Kjeldoran War Cry");
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranWarrior.java b/Mage.Sets/src/mage/cards/k/KjeldoranWarrior.java
index d038a26ae63..e418bb6777b 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranWarrior.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranWarrior.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class KjeldoranWarrior extends CardImpl {
+public final class KjeldoranWarrior extends CardImpl {
public KjeldoranWarrior (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnacksawClique.java b/Mage.Sets/src/mage/cards/k/KnacksawClique.java
index ec7e7f83a32..9ef00890b4d 100644
--- a/Mage.Sets/src/mage/cards/k/KnacksawClique.java
+++ b/Mage.Sets/src/mage/cards/k/KnacksawClique.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class KnacksawClique extends CardImpl {
+public final class KnacksawClique extends CardImpl {
public KnacksawClique(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java b/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java
index 796e1ed2cd6..98961ad549c 100644
--- a/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java
+++ b/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class KnightCaptainOfEos extends CardImpl {
+public final class KnightCaptainOfEos extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Soldier");
diff --git a/Mage.Sets/src/mage/cards/k/KnightErrant.java b/Mage.Sets/src/mage/cards/k/KnightErrant.java
index e778ceefb6d..33d94dc15dd 100644
--- a/Mage.Sets/src/mage/cards/k/KnightErrant.java
+++ b/Mage.Sets/src/mage/cards/k/KnightErrant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KnightErrant extends CardImpl {
+public final class KnightErrant extends CardImpl {
public KnightErrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightExemplar.java b/Mage.Sets/src/mage/cards/k/KnightExemplar.java
index c3ff5eb3a71..478ab4cc484 100644
--- a/Mage.Sets/src/mage/cards/k/KnightExemplar.java
+++ b/Mage.Sets/src/mage/cards/k/KnightExemplar.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class KnightExemplar extends CardImpl {
+public final class KnightExemplar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Knight creatures");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfCliffhaven.java b/Mage.Sets/src/mage/cards/k/KnightOfCliffhaven.java
index e569b6e1ef9..05dd2ced4e0 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfCliffhaven.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfCliffhaven.java
@@ -46,7 +46,7 @@ import mage.constants.SubType;
*
* @author North, noxx
*/
-public class KnightOfCliffhaven extends LevelerCard {
+public final class KnightOfCliffhaven extends LevelerCard {
public KnightOfCliffhaven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfDawn.java b/Mage.Sets/src/mage/cards/k/KnightOfDawn.java
index 09b5620f48f..343b8d0450f 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfDawn.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfDawn.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class KnightOfDawn extends CardImpl {
+public final class KnightOfDawn extends CardImpl {
public KnightOfDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfDusk.java b/Mage.Sets/src/mage/cards/k/KnightOfDusk.java
index 52f6d613efc..bb3cd9b0833 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfDusk.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfDusk.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author dustinconrad
*/
-public class KnightOfDusk extends CardImpl {
+public final class KnightOfDusk extends CardImpl {
public KnightOfDusk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfGlory.java b/Mage.Sets/src/mage/cards/k/KnightOfGlory.java
index 022777f4b6c..007e2d15465 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfGlory.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfGlory.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class KnightOfGlory extends CardImpl {
+public final class KnightOfGlory extends CardImpl {
public KnightOfGlory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfGrace.java b/Mage.Sets/src/mage/cards/k/KnightOfGrace.java
index c562e2ae63d..d2e215e1456 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfGrace.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfGrace.java
@@ -22,7 +22,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
import java.util.UUID;
-public class KnightOfGrace extends CardImpl {
+public final class KnightOfGrace extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("black permanent");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfInfamy.java b/Mage.Sets/src/mage/cards/k/KnightOfInfamy.java
index d93a9015bc8..76dd86c98b2 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfInfamy.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfInfamy.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KnightOfInfamy extends CardImpl {
+public final class KnightOfInfamy extends CardImpl {
public KnightOfInfamy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfMalice.java b/Mage.Sets/src/mage/cards/k/KnightOfMalice.java
index 3639a7263fd..1962b9c4d46 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfMalice.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfMalice.java
@@ -18,7 +18,7 @@ import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.predicate.mageobject.ColorPredicate;
-public class KnightOfMalice extends CardImpl {
+public final class KnightOfMalice extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("white permanent");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfMeadowgrain.java b/Mage.Sets/src/mage/cards/k/KnightOfMeadowgrain.java
index cfe8be0525e..4f24b0fc8e6 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfMeadowgrain.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfMeadowgrain.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KnightOfMeadowgrain extends CardImpl {
+public final class KnightOfMeadowgrain extends CardImpl {
public KnightOfMeadowgrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfNewAlara.java b/Mage.Sets/src/mage/cards/k/KnightOfNewAlara.java
index 31dcc153534..6ce68c98bc4 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfNewAlara.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfNewAlara.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class KnightOfNewAlara extends CardImpl {
+public final class KnightOfNewAlara extends CardImpl {
public KnightOfNewAlara(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfNewBenalia.java b/Mage.Sets/src/mage/cards/k/KnightOfNewBenalia.java
index 7da71448e6e..76d54f2027e 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfNewBenalia.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfNewBenalia.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class KnightOfNewBenalia extends CardImpl {
+public final class KnightOfNewBenalia extends CardImpl {
public KnightOfNewBenalia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfObligation.java b/Mage.Sets/src/mage/cards/k/KnightOfObligation.java
index c2fa88acbe5..ad0e30e1d38 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfObligation.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfObligation.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class KnightOfObligation extends CardImpl {
+public final class KnightOfObligation extends CardImpl {
public KnightOfObligation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfStromgald.java b/Mage.Sets/src/mage/cards/k/KnightOfStromgald.java
index 434e17d6af0..3b041b1fc98 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfStromgald.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfStromgald.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class KnightOfStromgald extends CardImpl {
+public final class KnightOfStromgald extends CardImpl {
public KnightOfStromgald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfSursi.java b/Mage.Sets/src/mage/cards/k/KnightOfSursi.java
index 4ed3fceeb31..7872cff1396 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfSursi.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfSursi.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class KnightOfSursi extends CardImpl {
+public final class KnightOfSursi extends CardImpl {
public KnightOfSursi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfTheHolyNimbus.java b/Mage.Sets/src/mage/cards/k/KnightOfTheHolyNimbus.java
index 13a9c9cb136..4a1a474f311 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfTheHolyNimbus.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfTheHolyNimbus.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class KnightOfTheHolyNimbus extends CardImpl {
+public final class KnightOfTheHolyNimbus extends CardImpl {
public KnightOfTheHolyNimbus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfTheMists.java b/Mage.Sets/src/mage/cards/k/KnightOfTheMists.java
index 79d74f9de5f..83e49e45452 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfTheMists.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfTheMists.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class KnightOfTheMists extends CardImpl {
+public final class KnightOfTheMists extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Knight");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfThePilgrimsRoad.java b/Mage.Sets/src/mage/cards/k/KnightOfThePilgrimsRoad.java
index a024e9edeb1..c72118af12e 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfThePilgrimsRoad.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfThePilgrimsRoad.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class KnightOfThePilgrimsRoad extends CardImpl {
+public final class KnightOfThePilgrimsRoad extends CardImpl {
public KnightOfThePilgrimsRoad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfTheReliquary.java b/Mage.Sets/src/mage/cards/k/KnightOfTheReliquary.java
index 279f3ede778..13ce2528453 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfTheReliquary.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfTheReliquary.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class KnightOfTheReliquary extends CardImpl {
+public final class KnightOfTheReliquary extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("Forest or Plains");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfTheSkywardEye.java b/Mage.Sets/src/mage/cards/k/KnightOfTheSkywardEye.java
index b36d64cb66f..2c70797a07c 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfTheSkywardEye.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfTheSkywardEye.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Alvin
*/
-public class KnightOfTheSkywardEye extends CardImpl {
+public final class KnightOfTheSkywardEye extends CardImpl {
public KnightOfTheSkywardEye(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfTheStampede.java b/Mage.Sets/src/mage/cards/k/KnightOfTheStampede.java
index c53eb68dc6b..e9f3a31645b 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfTheStampede.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfTheStampede.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North & L_J
*/
-public class KnightOfTheStampede extends CardImpl {
+public final class KnightOfTheStampede extends CardImpl {
private static final FilterCard filter = new FilterCard("Dinosaur spells");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfTheTusk.java b/Mage.Sets/src/mage/cards/k/KnightOfTheTusk.java
new file mode 100644
index 00000000000..29583ef2e2b
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/k/KnightOfTheTusk.java
@@ -0,0 +1,65 @@
+/*
+ * 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.k;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.constants.SubType;
+import mage.abilities.keyword.VigilanceAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class KnightOfTheTusk extends CardImpl {
+
+ public KnightOfTheTusk(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.KNIGHT);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(7);
+
+ // Vigilance
+ this.addAbility(VigilanceAbility.getInstance());
+
+ }
+
+ public KnightOfTheTusk(final KnightOfTheTusk card) {
+ super(card);
+ }
+
+ @Override
+ public KnightOfTheTusk copy() {
+ return new KnightOfTheTusk(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java b/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java
index 3821226f3fe..30f16bc0ac8 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author BetaSteward_at_googlemail.com
*/
-public class KnightOfTheWhiteOrchid extends CardImpl {
+public final class KnightOfTheWhiteOrchid extends CardImpl {
public KnightOfTheWhiteOrchid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightOfValor.java b/Mage.Sets/src/mage/cards/k/KnightOfValor.java
index fd1fe4293ab..9408fa3a546 100644
--- a/Mage.Sets/src/mage/cards/k/KnightOfValor.java
+++ b/Mage.Sets/src/mage/cards/k/KnightOfValor.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.BlockingAttackerIdPredicate;
*
* @author LoneFox
*/
-public class KnightOfValor extends CardImpl {
+public final class KnightOfValor extends CardImpl {
public KnightOfValor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightWatch.java b/Mage.Sets/src/mage/cards/k/KnightWatch.java
index 749c036756a..5d674a54f89 100644
--- a/Mage.Sets/src/mage/cards/k/KnightWatch.java
+++ b/Mage.Sets/src/mage/cards/k/KnightWatch.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.KnightToken;
*
* @author LevelX2
*/
-public class KnightWatch extends CardImpl {
+public final class KnightWatch extends CardImpl {
public KnightWatch (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/Knighthood.java b/Mage.Sets/src/mage/cards/k/Knighthood.java
index 2279be201a3..8321760466b 100644
--- a/Mage.Sets/src/mage/cards/k/Knighthood.java
+++ b/Mage.Sets/src/mage/cards/k/Knighthood.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Plopman
*/
-public class Knighthood extends CardImpl {
+public final class Knighthood extends CardImpl {
public Knighthood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightlyValor.java b/Mage.Sets/src/mage/cards/k/KnightlyValor.java
index f259c6a2beb..b8af6d665fa 100644
--- a/Mage.Sets/src/mage/cards/k/KnightlyValor.java
+++ b/Mage.Sets/src/mage/cards/k/KnightlyValor.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KnightlyValor extends CardImpl {
+public final class KnightlyValor extends CardImpl {
public KnightlyValor (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java b/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java
index 48dbe1cf529..ffd394eda91 100644
--- a/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java
+++ b/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java
@@ -51,7 +51,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class KnightsOfTheBlackRose extends CardImpl {
+public final class KnightsOfTheBlackRose extends CardImpl {
public KnightsOfTheBlackRose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightsOfThorn.java b/Mage.Sets/src/mage/cards/k/KnightsOfThorn.java
index 50ce756de2e..d9109d541ec 100644
--- a/Mage.Sets/src/mage/cards/k/KnightsOfThorn.java
+++ b/Mage.Sets/src/mage/cards/k/KnightsOfThorn.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class KnightsOfThorn extends CardImpl {
+public final class KnightsOfThorn extends CardImpl {
public KnightsOfThorn (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightsPledge.java b/Mage.Sets/src/mage/cards/k/KnightsPledge.java
new file mode 100644
index 00000000000..241a8360f7e
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/k/KnightsPledge.java
@@ -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.k;
+
+import java.util.UUID;
+import mage.constants.SubType;
+import mage.target.common.TargetCreaturePermanent;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
+import mage.constants.Outcome;
+import mage.target.TargetPermanent;
+import mage.abilities.keyword.EnchantAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class KnightsPledge extends CardImpl {
+
+ public KnightsPledge(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
+
+ this.subtype.add(SubType.AURA);
+
+ // Enchant creature
+ TargetPermanent auraTarget = new TargetCreaturePermanent();
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
+ Ability ability = new EnchantAbility(auraTarget.getTargetName());
+ this.addAbility(ability);
+
+ // Enchanted creature gets +2/+2.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2)));
+ }
+
+ public KnightsPledge(final KnightsPledge card) {
+ super(card);
+ }
+
+ @Override
+ public KnightsPledge copy() {
+ return new KnightsPledge(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/k/KnollspineDragon.java b/Mage.Sets/src/mage/cards/k/KnollspineDragon.java
index 4062a034408..5e75e57b410 100644
--- a/Mage.Sets/src/mage/cards/k/KnollspineDragon.java
+++ b/Mage.Sets/src/mage/cards/k/KnollspineDragon.java
@@ -48,7 +48,7 @@ import mage.watchers.common.AmountOfDamageAPlayerReceivedThisTurnWatcher;
*
* @author jeffwadsworth
*/
-public class KnollspineDragon extends CardImpl {
+public final class KnollspineDragon extends CardImpl {
public KnollspineDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KnollspineInvocation.java b/Mage.Sets/src/mage/cards/k/KnollspineInvocation.java
index b111b3c32bd..1ff6f28390a 100644
--- a/Mage.Sets/src/mage/cards/k/KnollspineInvocation.java
+++ b/Mage.Sets/src/mage/cards/k/KnollspineInvocation.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author anonymous
*/
-public class KnollspineInvocation extends CardImpl {
+public final class KnollspineInvocation extends CardImpl {
private static final FilterCard filter = new FilterCard("a card with converted mana cost X");
diff --git a/Mage.Sets/src/mage/cards/k/KnotvineMystic.java b/Mage.Sets/src/mage/cards/k/KnotvineMystic.java
index baffd4ec25f..19bb1856f77 100644
--- a/Mage.Sets/src/mage/cards/k/KnotvineMystic.java
+++ b/Mage.Sets/src/mage/cards/k/KnotvineMystic.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class KnotvineMystic extends CardImpl {
+public final class KnotvineMystic extends CardImpl {
public KnotvineMystic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KnotvinePaladin.java b/Mage.Sets/src/mage/cards/k/KnotvinePaladin.java
index 76276d16a04..b3ef0c6c722 100644
--- a/Mage.Sets/src/mage/cards/k/KnotvinePaladin.java
+++ b/Mage.Sets/src/mage/cards/k/KnotvinePaladin.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author Loki
*/
-public class KnotvinePaladin extends CardImpl {
+public final class KnotvinePaladin extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/k/KnowledgeAndPower.java b/Mage.Sets/src/mage/cards/k/KnowledgeAndPower.java
index 8fe3fd8fd39..b0bd7d17230 100644
--- a/Mage.Sets/src/mage/cards/k/KnowledgeAndPower.java
+++ b/Mage.Sets/src/mage/cards/k/KnowledgeAndPower.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class KnowledgeAndPower extends CardImpl {
+public final class KnowledgeAndPower extends CardImpl {
public KnowledgeAndPower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KnowledgeExploitation.java b/Mage.Sets/src/mage/cards/k/KnowledgeExploitation.java
index 366397c5896..ba89c628d5f 100644
--- a/Mage.Sets/src/mage/cards/k/KnowledgeExploitation.java
+++ b/Mage.Sets/src/mage/cards/k/KnowledgeExploitation.java
@@ -28,6 +28,7 @@
package mage.cards.k;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.ProwlAbility;
@@ -35,8 +36,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.filter.common.FilterInstantOrSorceryCard;
import mage.game.Game;
import mage.players.Player;
@@ -47,15 +48,15 @@ import mage.target.common.TargetOpponent;
*
* @author emerald000
*/
-public class KnowledgeExploitation extends CardImpl {
+public final class KnowledgeExploitation extends CardImpl {
public KnowledgeExploitation(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{5}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.SORCERY}, "{5}{U}{U}");
this.subtype.add(SubType.ROGUE);
// Prowl {3}{U}
this.addAbility(new ProwlAbility(this, "{3}{U}"));
-
+
// Search target opponent's library for an instant or sorcery card. You may cast that card without paying its mana cost. Then that player shuffles their library.
this.getSpellAbility().addEffect(new KnowledgeExploitationEffect());
this.getSpellAbility().addTarget(new TargetOpponent());
@@ -72,21 +73,21 @@ public class KnowledgeExploitation extends CardImpl {
}
class KnowledgeExploitationEffect extends OneShotEffect {
-
+
KnowledgeExploitationEffect() {
super(Outcome.Benefit);
this.staticText = "Search target opponent's library for an instant or sorcery card. You may cast that card without paying its mana cost. Then that player shuffles their library";
}
-
+
KnowledgeExploitationEffect(final KnowledgeExploitationEffect effect) {
super(effect);
}
-
+
@Override
public KnowledgeExploitationEffect copy() {
return new KnowledgeExploitationEffect(this);
}
-
+
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
@@ -96,7 +97,7 @@ class KnowledgeExploitationEffect extends OneShotEffect {
if (controller.searchLibrary(target, game, opponent.getId())) {
Card card = opponent.getLibrary().remove(target.getFirstTarget(), game);
if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
opponent.shuffleLibrary(source, game);
diff --git a/Mage.Sets/src/mage/cards/k/KnowledgePool.java b/Mage.Sets/src/mage/cards/k/KnowledgePool.java
index 463766dc068..e74922ba31d 100644
--- a/Mage.Sets/src/mage/cards/k/KnowledgePool.java
+++ b/Mage.Sets/src/mage/cards/k/KnowledgePool.java
@@ -29,6 +29,7 @@ package mage.cards.k;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@@ -55,10 +56,10 @@ import mage.util.CardUtil;
*
* @author BetaSteward_at_googlemail.com
*/
-public class KnowledgePool extends CardImpl {
+public final class KnowledgePool extends CardImpl {
public KnowledgePool(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
// Imprint - When Knowledge Pool enters the battlefield, each player exiles the top three cards of their library
this.addAbility(new EntersBattlefieldTriggeredAbility(new KnowledgePoolEffect1(), false));
@@ -177,7 +178,7 @@ class KnowledgePoolEffect2 extends OneShotEffect {
while (player.choose(Outcome.PlayForFree, game.getExile().getExileZone(exileZoneId), target, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null && !card.getId().equals(spell.getSourceId())) {
- return player.cast(card.getSpellAbility(), game, true);
+ return player.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
target.clearChosen();
}
diff --git a/Mage.Sets/src/mage/cards/k/KnuckleboneWitch.java b/Mage.Sets/src/mage/cards/k/KnuckleboneWitch.java
index fe5f4646bed..45b1c7871bb 100644
--- a/Mage.Sets/src/mage/cards/k/KnuckleboneWitch.java
+++ b/Mage.Sets/src/mage/cards/k/KnuckleboneWitch.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author markedagain
*/
-public class KnuckleboneWitch extends CardImpl {
+public final class KnuckleboneWitch extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin you control");
diff --git a/Mage.Sets/src/mage/cards/k/KoboldDrillSergeant.java b/Mage.Sets/src/mage/cards/k/KoboldDrillSergeant.java
index 7626686c947..75c1357e1ec 100644
--- a/Mage.Sets/src/mage/cards/k/KoboldDrillSergeant.java
+++ b/Mage.Sets/src/mage/cards/k/KoboldDrillSergeant.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author ilcartographer
*/
-public class KoboldDrillSergeant extends CardImpl {
+public final class KoboldDrillSergeant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Kobold creatures");
diff --git a/Mage.Sets/src/mage/cards/k/KoboldOverlord.java b/Mage.Sets/src/mage/cards/k/KoboldOverlord.java
index b25ddf00754..c17cc7707a0 100644
--- a/Mage.Sets/src/mage/cards/k/KoboldOverlord.java
+++ b/Mage.Sets/src/mage/cards/k/KoboldOverlord.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author ilcartographer
*/
-public class KoboldOverlord extends CardImpl {
+public final class KoboldOverlord extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Kobold creatures");
diff --git a/Mage.Sets/src/mage/cards/k/KoboldTaskmaster.java b/Mage.Sets/src/mage/cards/k/KoboldTaskmaster.java
index aa8f85c2653..366908db85c 100644
--- a/Mage.Sets/src/mage/cards/k/KoboldTaskmaster.java
+++ b/Mage.Sets/src/mage/cards/k/KoboldTaskmaster.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author jeffwadsworth
*/
-public class KoboldTaskmaster extends CardImpl {
+public final class KoboldTaskmaster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Kobold creatures you control");
diff --git a/Mage.Sets/src/mage/cards/k/KoboldsOfKherKeep.java b/Mage.Sets/src/mage/cards/k/KoboldsOfKherKeep.java
index 284e3115641..382768871a2 100644
--- a/Mage.Sets/src/mage/cards/k/KoboldsOfKherKeep.java
+++ b/Mage.Sets/src/mage/cards/k/KoboldsOfKherKeep.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KoboldsOfKherKeep extends CardImpl {
+public final class KoboldsOfKherKeep extends CardImpl {
public KoboldsOfKherKeep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{0}");
diff --git a/Mage.Sets/src/mage/cards/k/KodamaOfTheCenterTree.java b/Mage.Sets/src/mage/cards/k/KodamaOfTheCenterTree.java
index 86305610ad2..d6e59ed7671 100644
--- a/Mage.Sets/src/mage/cards/k/KodamaOfTheCenterTree.java
+++ b/Mage.Sets/src/mage/cards/k/KodamaOfTheCenterTree.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class KodamaOfTheCenterTree extends CardImpl {
+public final class KodamaOfTheCenterTree extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Spirits you control");
diff --git a/Mage.Sets/src/mage/cards/k/KodamaOfTheNorthTree.java b/Mage.Sets/src/mage/cards/k/KodamaOfTheNorthTree.java
index 102ed34acaa..426106cd106 100644
--- a/Mage.Sets/src/mage/cards/k/KodamaOfTheNorthTree.java
+++ b/Mage.Sets/src/mage/cards/k/KodamaOfTheNorthTree.java
@@ -42,7 +42,7 @@ import mage.constants.SuperType;
*
* @author Loki
*/
-public class KodamaOfTheNorthTree extends CardImpl {
+public final class KodamaOfTheNorthTree extends CardImpl {
public KodamaOfTheNorthTree (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KodamaOfTheSouthTree.java b/Mage.Sets/src/mage/cards/k/KodamaOfTheSouthTree.java
index ace1fe57368..e4e209df749 100644
--- a/Mage.Sets/src/mage/cards/k/KodamaOfTheSouthTree.java
+++ b/Mage.Sets/src/mage/cards/k/KodamaOfTheSouthTree.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
/**
* @author Loki
*/
-public class KodamaOfTheSouthTree extends CardImpl {
+public final class KodamaOfTheSouthTree extends CardImpl {
public KodamaOfTheSouthTree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KodamasMight.java b/Mage.Sets/src/mage/cards/k/KodamasMight.java
index 59577d47088..b089a72f533 100644
--- a/Mage.Sets/src/mage/cards/k/KodamasMight.java
+++ b/Mage.Sets/src/mage/cards/k/KodamasMight.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KodamasMight extends CardImpl {
+public final class KodamasMight extends CardImpl {
public KodamasMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KodamasReach.java b/Mage.Sets/src/mage/cards/k/KodamasReach.java
index ae900512f9c..48de253a0e1 100644
--- a/Mage.Sets/src/mage/cards/k/KodamasReach.java
+++ b/Mage.Sets/src/mage/cards/k/KodamasReach.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class KodamasReach extends CardImpl {
+public final class KodamasReach extends CardImpl {
public KodamasReach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
@@ -93,7 +93,7 @@ class KodamasReachEffect extends OneShotEffect {
if (controller == null || sourceObject == null) {
return false;
}
- TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, game)) {
if (!target.getTargets().isEmpty()) {
Cards revealed = new CardsImpl();
diff --git a/Mage.Sets/src/mage/cards/k/KokushoTheEveningStar.java b/Mage.Sets/src/mage/cards/k/KokushoTheEveningStar.java
index 8cc3ac14d43..56d5326d8c5 100644
--- a/Mage.Sets/src/mage/cards/k/KokushoTheEveningStar.java
+++ b/Mage.Sets/src/mage/cards/k/KokushoTheEveningStar.java
@@ -45,7 +45,7 @@ import mage.game.Game;
/**
* @author Loki
*/
-public class KokushoTheEveningStar extends CardImpl {
+public final class KokushoTheEveningStar extends CardImpl {
public KokushoTheEveningStar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KolaghanAspirant.java b/Mage.Sets/src/mage/cards/k/KolaghanAspirant.java
index 65ef670bd07..8c2d89a3c99 100644
--- a/Mage.Sets/src/mage/cards/k/KolaghanAspirant.java
+++ b/Mage.Sets/src/mage/cards/k/KolaghanAspirant.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class KolaghanAspirant extends CardImpl {
+public final class KolaghanAspirant extends CardImpl {
public KolaghanAspirant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KolaghanForerunners.java b/Mage.Sets/src/mage/cards/k/KolaghanForerunners.java
index b5a1c8ac5fe..10a3eed1af2 100644
--- a/Mage.Sets/src/mage/cards/k/KolaghanForerunners.java
+++ b/Mage.Sets/src/mage/cards/k/KolaghanForerunners.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class KolaghanForerunners extends CardImpl {
+public final class KolaghanForerunners extends CardImpl {
public KolaghanForerunners(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KolaghanMonument.java b/Mage.Sets/src/mage/cards/k/KolaghanMonument.java
index b13ae43e639..21e6971ff48 100644
--- a/Mage.Sets/src/mage/cards/k/KolaghanMonument.java
+++ b/Mage.Sets/src/mage/cards/k/KolaghanMonument.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class KolaghanMonument extends CardImpl {
+public final class KolaghanMonument extends CardImpl {
public KolaghanMonument(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/k/KolaghanSkirmisher.java b/Mage.Sets/src/mage/cards/k/KolaghanSkirmisher.java
index f1ebe5d5c39..f59fe8b5774 100644
--- a/Mage.Sets/src/mage/cards/k/KolaghanSkirmisher.java
+++ b/Mage.Sets/src/mage/cards/k/KolaghanSkirmisher.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class KolaghanSkirmisher extends CardImpl {
+public final class KolaghanSkirmisher extends CardImpl {
public KolaghanSkirmisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KolaghanStormsinger.java b/Mage.Sets/src/mage/cards/k/KolaghanStormsinger.java
index 3c8b80bc065..9fa06c5c5e4 100644
--- a/Mage.Sets/src/mage/cards/k/KolaghanStormsinger.java
+++ b/Mage.Sets/src/mage/cards/k/KolaghanStormsinger.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KolaghanStormsinger extends CardImpl {
+public final class KolaghanStormsinger extends CardImpl {
public KolaghanStormsinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KolaghanTheStormsFury.java b/Mage.Sets/src/mage/cards/k/KolaghanTheStormsFury.java
index 1481d216ee7..56a34949bc7 100644
--- a/Mage.Sets/src/mage/cards/k/KolaghanTheStormsFury.java
+++ b/Mage.Sets/src/mage/cards/k/KolaghanTheStormsFury.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class KolaghanTheStormsFury extends CardImpl {
+public final class KolaghanTheStormsFury extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dragon you control");
diff --git a/Mage.Sets/src/mage/cards/k/KolaghansCommand.java b/Mage.Sets/src/mage/cards/k/KolaghansCommand.java
index cad8697fbfc..d37a9d5c1d4 100644
--- a/Mage.Sets/src/mage/cards/k/KolaghansCommand.java
+++ b/Mage.Sets/src/mage/cards/k/KolaghansCommand.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class KolaghansCommand extends CardImpl {
+public final class KolaghansCommand extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/k/KondaLordOfEiganjo.java b/Mage.Sets/src/mage/cards/k/KondaLordOfEiganjo.java
index a188f98baec..30b7e971e97 100644
--- a/Mage.Sets/src/mage/cards/k/KondaLordOfEiganjo.java
+++ b/Mage.Sets/src/mage/cards/k/KondaLordOfEiganjo.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
/**
* @author Loki
*/
-public class KondaLordOfEiganjo extends CardImpl {
+public final class KondaLordOfEiganjo extends CardImpl {
public KondaLordOfEiganjo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KondasBanner.java b/Mage.Sets/src/mage/cards/k/KondasBanner.java
index b0e4d987ed8..39ff2f9d87b 100644
--- a/Mage.Sets/src/mage/cards/k/KondasBanner.java
+++ b/Mage.Sets/src/mage/cards/k/KondasBanner.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX
*/
-public class KondasBanner extends CardImpl {
+public final class KondasBanner extends CardImpl {
private static final FilterControlledCreaturePermanent legendaryFilter = new FilterControlledCreaturePermanent("legendary creatures");
diff --git a/Mage.Sets/src/mage/cards/k/KondasHatamoto.java b/Mage.Sets/src/mage/cards/k/KondasHatamoto.java
index 6a05dbbc0f8..7597d39576d 100644
--- a/Mage.Sets/src/mage/cards/k/KondasHatamoto.java
+++ b/Mage.Sets/src/mage/cards/k/KondasHatamoto.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author LevelX
*/
-public class KondasHatamoto extends CardImpl {
+public final class KondasHatamoto extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Legendary Samurai");
private static final String rule1 = "As long as you control a legendary Samurai, {this} gets +1/+2";
diff --git a/Mage.Sets/src/mage/cards/k/KongmingSleepingDragon.java b/Mage.Sets/src/mage/cards/k/KongmingSleepingDragon.java
index 3e2ab77b32c..e8d054915f8 100644
--- a/Mage.Sets/src/mage/cards/k/KongmingSleepingDragon.java
+++ b/Mage.Sets/src/mage/cards/k/KongmingSleepingDragon.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class KongmingSleepingDragon extends CardImpl {
+public final class KongmingSleepingDragon extends CardImpl {
public KongmingSleepingDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KongmingsContraptions.java b/Mage.Sets/src/mage/cards/k/KongmingsContraptions.java
index d03db0bfd11..881eb059e4b 100644
--- a/Mage.Sets/src/mage/cards/k/KongmingsContraptions.java
+++ b/Mage.Sets/src/mage/cards/k/KongmingsContraptions.java
@@ -50,7 +50,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author L_J
*/
-public class KongmingsContraptions extends CardImpl {
+public final class KongmingsContraptions extends CardImpl {
public KongmingsContraptions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/Kookus.java b/Mage.Sets/src/mage/cards/k/Kookus.java
index f23bb68e141..354db52dcf9 100644
--- a/Mage.Sets/src/mage/cards/k/Kookus.java
+++ b/Mage.Sets/src/mage/cards/k/Kookus.java
@@ -55,7 +55,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author TheElk801
*/
-public class Kookus extends CardImpl {
+public final class Kookus extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/k/KopalaWardenOfWaves.java b/Mage.Sets/src/mage/cards/k/KopalaWardenOfWaves.java
index 6b58efb4777..428c065e97f 100644
--- a/Mage.Sets/src/mage/cards/k/KopalaWardenOfWaves.java
+++ b/Mage.Sets/src/mage/cards/k/KopalaWardenOfWaves.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author TheElk801
*/
-public class KopalaWardenOfWaves extends CardImpl {
+public final class KopalaWardenOfWaves extends CardImpl {
public KopalaWardenOfWaves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KorAeronaut.java b/Mage.Sets/src/mage/cards/k/KorAeronaut.java
index ae5c4bbb198..cf6543b7588 100644
--- a/Mage.Sets/src/mage/cards/k/KorAeronaut.java
+++ b/Mage.Sets/src/mage/cards/k/KorAeronaut.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class KorAeronaut extends CardImpl {
+public final class KorAeronaut extends CardImpl {
public KorAeronaut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KorBladewhirl.java b/Mage.Sets/src/mage/cards/k/KorBladewhirl.java
index 55079682084..c0649b61a9d 100644
--- a/Mage.Sets/src/mage/cards/k/KorBladewhirl.java
+++ b/Mage.Sets/src/mage/cards/k/KorBladewhirl.java
@@ -43,7 +43,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX2
*/
-public class KorBladewhirl extends CardImpl {
+public final class KorBladewhirl extends CardImpl {
public KorBladewhirl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KorCartographer.java b/Mage.Sets/src/mage/cards/k/KorCartographer.java
index 53c964802cd..52fb89c0816 100644
--- a/Mage.Sets/src/mage/cards/k/KorCartographer.java
+++ b/Mage.Sets/src/mage/cards/k/KorCartographer.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class KorCartographer extends CardImpl {
+public final class KorCartographer extends CardImpl {
public KorCartographer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KorCastigator.java b/Mage.Sets/src/mage/cards/k/KorCastigator.java
index 1a1a39fbbdb..2f3222f3091 100644
--- a/Mage.Sets/src/mage/cards/k/KorCastigator.java
+++ b/Mage.Sets/src/mage/cards/k/KorCastigator.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class KorCastigator extends CardImpl {
+public final class KorCastigator extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("Eldrazi Scions");
diff --git a/Mage.Sets/src/mage/cards/k/KorChant.java b/Mage.Sets/src/mage/cards/k/KorChant.java
index c43f7791aab..5c9fa1ec4f7 100644
--- a/Mage.Sets/src/mage/cards/k/KorChant.java
+++ b/Mage.Sets/src/mage/cards/k/KorChant.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class KorChant extends CardImpl {
+public final class KorChant extends CardImpl {
public KorChant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KorDirge.java b/Mage.Sets/src/mage/cards/k/KorDirge.java
index c3020420e90..e9a19b3f51b 100644
--- a/Mage.Sets/src/mage/cards/k/KorDirge.java
+++ b/Mage.Sets/src/mage/cards/k/KorDirge.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class KorDirge extends CardImpl {
+public final class KorDirge extends CardImpl {
public KorDirge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KorDuelist.java b/Mage.Sets/src/mage/cards/k/KorDuelist.java
index 3dad3f3d16a..a6bbec8ad11 100644
--- a/Mage.Sets/src/mage/cards/k/KorDuelist.java
+++ b/Mage.Sets/src/mage/cards/k/KorDuelist.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class KorDuelist extends CardImpl {
+public final class KorDuelist extends CardImpl {
private static final String ruleText = "As long as Kor Duelist is equipped, it has double strike";
diff --git a/Mage.Sets/src/mage/cards/k/KorEntanglers.java b/Mage.Sets/src/mage/cards/k/KorEntanglers.java
index c56629d60de..616397ba51b 100644
--- a/Mage.Sets/src/mage/cards/k/KorEntanglers.java
+++ b/Mage.Sets/src/mage/cards/k/KorEntanglers.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KorEntanglers extends CardImpl {
+public final class KorEntanglers extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/k/KorFirewalker.java b/Mage.Sets/src/mage/cards/k/KorFirewalker.java
index f4333c061a4..c40cc0a9b97 100644
--- a/Mage.Sets/src/mage/cards/k/KorFirewalker.java
+++ b/Mage.Sets/src/mage/cards/k/KorFirewalker.java
@@ -48,7 +48,7 @@ import mage.game.stack.Spell;
*
* @author Loki
*/
-public class KorFirewalker extends CardImpl {
+public final class KorFirewalker extends CardImpl {
public KorFirewalker (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KorHaven.java b/Mage.Sets/src/mage/cards/k/KorHaven.java
index b6261f4e603..77a3ef05f81 100644
--- a/Mage.Sets/src/mage/cards/k/KorHaven.java
+++ b/Mage.Sets/src/mage/cards/k/KorHaven.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author emerald000
*/
-public class KorHaven extends CardImpl {
+public final class KorHaven extends CardImpl {
public KorHaven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/k/KorHookmaster.java b/Mage.Sets/src/mage/cards/k/KorHookmaster.java
index adc42554b4f..b09ddb22457 100644
--- a/Mage.Sets/src/mage/cards/k/KorHookmaster.java
+++ b/Mage.Sets/src/mage/cards/k/KorHookmaster.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class KorHookmaster extends CardImpl {
+public final class KorHookmaster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/k/KorLineSlinger.java b/Mage.Sets/src/mage/cards/k/KorLineSlinger.java
index ea944e5c530..f5b6366aedd 100644
--- a/Mage.Sets/src/mage/cards/k/KorLineSlinger.java
+++ b/Mage.Sets/src/mage/cards/k/KorLineSlinger.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author North
*/
-public class KorLineSlinger extends CardImpl {
+public final class KorLineSlinger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 3 or less");
diff --git a/Mage.Sets/src/mage/cards/k/KorOutfitter.java b/Mage.Sets/src/mage/cards/k/KorOutfitter.java
index 8183066c071..3d6ded050b6 100644
--- a/Mage.Sets/src/mage/cards/k/KorOutfitter.java
+++ b/Mage.Sets/src/mage/cards/k/KorOutfitter.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class KorOutfitter extends CardImpl {
+public final class KorOutfitter extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Equipment you control");
diff --git a/Mage.Sets/src/mage/cards/k/KorSanctifiers.java b/Mage.Sets/src/mage/cards/k/KorSanctifiers.java
index db9ebb99801..2aa41fc0674 100644
--- a/Mage.Sets/src/mage/cards/k/KorSanctifiers.java
+++ b/Mage.Sets/src/mage/cards/k/KorSanctifiers.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class KorSanctifiers extends CardImpl {
+public final class KorSanctifiers extends CardImpl {
public KorSanctifiers (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KorScythemaster.java b/Mage.Sets/src/mage/cards/k/KorScythemaster.java
index 113cdae3f86..2b57f67d81a 100644
--- a/Mage.Sets/src/mage/cards/k/KorScythemaster.java
+++ b/Mage.Sets/src/mage/cards/k/KorScythemaster.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class KorScythemaster extends CardImpl {
+public final class KorScythemaster extends CardImpl {
public KorScythemaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KorSkyClimber.java b/Mage.Sets/src/mage/cards/k/KorSkyClimber.java
index 7f23dc99963..d8da5b428da 100644
--- a/Mage.Sets/src/mage/cards/k/KorSkyClimber.java
+++ b/Mage.Sets/src/mage/cards/k/KorSkyClimber.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class KorSkyClimber extends CardImpl {
+public final class KorSkyClimber extends CardImpl {
public KorSkyClimber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KorSkyfisher.java b/Mage.Sets/src/mage/cards/k/KorSkyfisher.java
index 476b26065da..2b8c2fdca30 100644
--- a/Mage.Sets/src/mage/cards/k/KorSkyfisher.java
+++ b/Mage.Sets/src/mage/cards/k/KorSkyfisher.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Loki
*/
-public class KorSkyfisher extends CardImpl {
+public final class KorSkyfisher extends CardImpl {
public KorSkyfisher (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KorSpiritdancer.java b/Mage.Sets/src/mage/cards/k/KorSpiritdancer.java
index 9b26a911292..9971bb5230e 100644
--- a/Mage.Sets/src/mage/cards/k/KorSpiritdancer.java
+++ b/Mage.Sets/src/mage/cards/k/KorSpiritdancer.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class KorSpiritdancer extends CardImpl {
+public final class KorSpiritdancer extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an Aura spell");
diff --git a/Mage.Sets/src/mage/cards/k/KorlashHeirToBlackblade.java b/Mage.Sets/src/mage/cards/k/KorlashHeirToBlackblade.java
index 283b3d1487e..2b46d696c62 100644
--- a/Mage.Sets/src/mage/cards/k/KorlashHeirToBlackblade.java
+++ b/Mage.Sets/src/mage/cards/k/KorlashHeirToBlackblade.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class KorlashHeirToBlackblade extends CardImpl {
+public final class KorlashHeirToBlackblade extends CardImpl {
private static final FilterControlledPermanent filterPermanent = new FilterControlledPermanent("Swamps you control");
private static final FilterCard filterCard = new FilterLandCard("Swamp cards");
diff --git a/Mage.Sets/src/mage/cards/k/KormusBell.java b/Mage.Sets/src/mage/cards/k/KormusBell.java
index df3b4a5520f..9066b52a75f 100644
--- a/Mage.Sets/src/mage/cards/k/KormusBell.java
+++ b/Mage.Sets/src/mage/cards/k/KormusBell.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.custom.CreatureToken;
* @author KholdFuzion
*
*/
-public class KormusBell extends CardImpl {
+public final class KormusBell extends CardImpl {
public KormusBell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/k/KorozdaGorgon.java b/Mage.Sets/src/mage/cards/k/KorozdaGorgon.java
index fbc2acde25c..b69c2b25c10 100644
--- a/Mage.Sets/src/mage/cards/k/KorozdaGorgon.java
+++ b/Mage.Sets/src/mage/cards/k/KorozdaGorgon.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KorozdaGorgon extends CardImpl {
+public final class KorozdaGorgon extends CardImpl {
public KorozdaGorgon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KorozdaGuildmage.java b/Mage.Sets/src/mage/cards/k/KorozdaGuildmage.java
index bd806262608..d5561a1d4dc 100644
--- a/Mage.Sets/src/mage/cards/k/KorozdaGuildmage.java
+++ b/Mage.Sets/src/mage/cards/k/KorozdaGuildmage.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KorozdaGuildmage extends CardImpl {
+public final class KorozdaGuildmage extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/k/KorozdaMonitor.java b/Mage.Sets/src/mage/cards/k/KorozdaMonitor.java
index 424577e09c4..1184bdeeb4d 100644
--- a/Mage.Sets/src/mage/cards/k/KorozdaMonitor.java
+++ b/Mage.Sets/src/mage/cards/k/KorozdaMonitor.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class KorozdaMonitor extends CardImpl {
+public final class KorozdaMonitor extends CardImpl {
public KorozdaMonitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KoskunFalls.java b/Mage.Sets/src/mage/cards/k/KoskunFalls.java
index bc3bd3971d9..b4bfe55e8de 100644
--- a/Mage.Sets/src/mage/cards/k/KoskunFalls.java
+++ b/Mage.Sets/src/mage/cards/k/KoskunFalls.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class KoskunFalls extends CardImpl {
+public final class KoskunFalls extends CardImpl {
private static final FilterControlledCreaturePermanent filterCreature = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/k/KoskunKeep.java b/Mage.Sets/src/mage/cards/k/KoskunKeep.java
index f2154ba98ec..caa499f16a3 100644
--- a/Mage.Sets/src/mage/cards/k/KoskunKeep.java
+++ b/Mage.Sets/src/mage/cards/k/KoskunKeep.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class KoskunKeep extends CardImpl {
+public final class KoskunKeep extends CardImpl {
public KoskunKeep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java b/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java
index 59e3b3ea7c1..b4c94089bf8 100644
--- a/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java
+++ b/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki, North
*/
-public class KothOfTheHammer extends CardImpl {
+public final class KothOfTheHammer extends CardImpl {
static final FilterLandPermanent filter = new FilterLandPermanent(SubType.MOUNTAIN, "Mountain");
static final FilterLandPermanent filterCount = new FilterLandPermanent("Mountain you control");
diff --git a/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java b/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java
index f6752c0ed81..46c54a15763 100644
--- a/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java
+++ b/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class KothophedSoulHoarder extends CardImpl {
+public final class KothophedSoulHoarder extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/k/KothsCourier.java b/Mage.Sets/src/mage/cards/k/KothsCourier.java
index d588a1a4f73..af44ad59b9b 100644
--- a/Mage.Sets/src/mage/cards/k/KothsCourier.java
+++ b/Mage.Sets/src/mage/cards/k/KothsCourier.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class KothsCourier extends CardImpl {
+public final class KothsCourier extends CardImpl {
public KothsCourier (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KozilekButcherOfTruth.java b/Mage.Sets/src/mage/cards/k/KozilekButcherOfTruth.java
index 1ba29a5b142..0c2b6369185 100644
--- a/Mage.Sets/src/mage/cards/k/KozilekButcherOfTruth.java
+++ b/Mage.Sets/src/mage/cards/k/KozilekButcherOfTruth.java
@@ -44,7 +44,7 @@ import mage.constants.SuperType;
*
* @author Loki
*/
-public class KozilekButcherOfTruth extends CardImpl {
+public final class KozilekButcherOfTruth extends CardImpl {
public KozilekButcherOfTruth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{10}");
diff --git a/Mage.Sets/src/mage/cards/k/KozilekTheGreatDistortion.java b/Mage.Sets/src/mage/cards/k/KozilekTheGreatDistortion.java
index 31db10e3dc2..0c8f46a9f5d 100644
--- a/Mage.Sets/src/mage/cards/k/KozilekTheGreatDistortion.java
+++ b/Mage.Sets/src/mage/cards/k/KozilekTheGreatDistortion.java
@@ -64,7 +64,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class KozilekTheGreatDistortion extends CardImpl {
+public final class KozilekTheGreatDistortion extends CardImpl {
public KozilekTheGreatDistortion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}{C}{C}");
diff --git a/Mage.Sets/src/mage/cards/k/KozileksChanneler.java b/Mage.Sets/src/mage/cards/k/KozileksChanneler.java
index b2b13c8e26e..0d10af7d286 100644
--- a/Mage.Sets/src/mage/cards/k/KozileksChanneler.java
+++ b/Mage.Sets/src/mage/cards/k/KozileksChanneler.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class KozileksChanneler extends CardImpl {
+public final class KozileksChanneler extends CardImpl {
public KozileksChanneler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/k/KozileksPathfinder.java b/Mage.Sets/src/mage/cards/k/KozileksPathfinder.java
index 743231782cb..a847439e712 100644
--- a/Mage.Sets/src/mage/cards/k/KozileksPathfinder.java
+++ b/Mage.Sets/src/mage/cards/k/KozileksPathfinder.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KozileksPathfinder extends CardImpl {
+public final class KozileksPathfinder extends CardImpl {
public KozileksPathfinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/k/KozileksPredator.java b/Mage.Sets/src/mage/cards/k/KozileksPredator.java
index c7be307c3fe..b74f359c9ef 100644
--- a/Mage.Sets/src/mage/cards/k/KozileksPredator.java
+++ b/Mage.Sets/src/mage/cards/k/KozileksPredator.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.EldraziSpawnToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class KozileksPredator extends CardImpl {
+public final class KozileksPredator extends CardImpl {
public KozileksPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KozileksReturn.java b/Mage.Sets/src/mage/cards/k/KozileksReturn.java
index 762fcbbfde6..afe7603469d 100644
--- a/Mage.Sets/src/mage/cards/k/KozileksReturn.java
+++ b/Mage.Sets/src/mage/cards/k/KozileksReturn.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class KozileksReturn extends CardImpl {
+public final class KozileksReturn extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an Eldrazi creature spell with converted mana cost 7 or greater");
diff --git a/Mage.Sets/src/mage/cards/k/KozileksSentinel.java b/Mage.Sets/src/mage/cards/k/KozileksSentinel.java
index 2a7f269e631..9d2e39f42c7 100644
--- a/Mage.Sets/src/mage/cards/k/KozileksSentinel.java
+++ b/Mage.Sets/src/mage/cards/k/KozileksSentinel.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
*
* @author LevelX2
*/
-public class KozileksSentinel extends CardImpl {
+public final class KozileksSentinel extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a colorless spell");
diff --git a/Mage.Sets/src/mage/cards/k/KozileksShrieker.java b/Mage.Sets/src/mage/cards/k/KozileksShrieker.java
index ef2a66100c4..1e3eb711a6e 100644
--- a/Mage.Sets/src/mage/cards/k/KozileksShrieker.java
+++ b/Mage.Sets/src/mage/cards/k/KozileksShrieker.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class KozileksShrieker extends CardImpl {
+public final class KozileksShrieker extends CardImpl {
public KozileksShrieker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KozileksTranslator.java b/Mage.Sets/src/mage/cards/k/KozileksTranslator.java
index 38c84f83502..5bf202dcf45 100644
--- a/Mage.Sets/src/mage/cards/k/KozileksTranslator.java
+++ b/Mage.Sets/src/mage/cards/k/KozileksTranslator.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class KozileksTranslator extends CardImpl {
+public final class KozileksTranslator extends CardImpl {
public KozileksTranslator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KragmaButcher.java b/Mage.Sets/src/mage/cards/k/KragmaButcher.java
index 0506b4be931..9e0c5b7d284 100644
--- a/Mage.Sets/src/mage/cards/k/KragmaButcher.java
+++ b/Mage.Sets/src/mage/cards/k/KragmaButcher.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class KragmaButcher extends CardImpl {
+public final class KragmaButcher extends CardImpl {
public KragmaButcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KragmaWarcaller.java b/Mage.Sets/src/mage/cards/k/KragmaWarcaller.java
index 75966a015da..7734df610c0 100644
--- a/Mage.Sets/src/mage/cards/k/KragmaWarcaller.java
+++ b/Mage.Sets/src/mage/cards/k/KragmaWarcaller.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class KragmaWarcaller extends CardImpl {
+public final class KragmaWarcaller extends CardImpl {
private static final FilterControlledCreaturePermanent filter1 = new FilterControlledCreaturePermanent("Minotaur creatures you control");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Minotaur you control");
diff --git a/Mage.Sets/src/mage/cards/k/KrakenHatchling.java b/Mage.Sets/src/mage/cards/k/KrakenHatchling.java
index d6e4663d7e3..2f02d55bf2a 100644
--- a/Mage.Sets/src/mage/cards/k/KrakenHatchling.java
+++ b/Mage.Sets/src/mage/cards/k/KrakenHatchling.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class KrakenHatchling extends CardImpl {
+public final class KrakenHatchling extends CardImpl {
public KrakenHatchling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.java b/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.java
index bfaffa6121e..2b40c3f48c8 100644
--- a/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.java
+++ b/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class KrakenOfTheStraits extends CardImpl {
+public final class KrakenOfTheStraits extends CardImpl {
public KrakenOfTheStraits(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KrakensEye.java b/Mage.Sets/src/mage/cards/k/KrakensEye.java
index 8cd832594c1..e43abec8c13 100644
--- a/Mage.Sets/src/mage/cards/k/KrakensEye.java
+++ b/Mage.Sets/src/mage/cards/k/KrakensEye.java
@@ -44,7 +44,7 @@ import mage.game.stack.Spell;
*
* @author BetaSteward_at_googlemail.com
*/
-public class KrakensEye extends CardImpl {
+public final class KrakensEye extends CardImpl {
public KrakensEye(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/k/Krakilin.java b/Mage.Sets/src/mage/cards/k/Krakilin.java
index e7ea1123b1c..62705bbba88 100644
--- a/Mage.Sets/src/mage/cards/k/Krakilin.java
+++ b/Mage.Sets/src/mage/cards/k/Krakilin.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class Krakilin extends CardImpl {
+public final class Krakilin extends CardImpl {
public Krakilin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrallenhordeHowler.java b/Mage.Sets/src/mage/cards/k/KrallenhordeHowler.java
index d47960b3583..73d98c749d1 100644
--- a/Mage.Sets/src/mage/cards/k/KrallenhordeHowler.java
+++ b/Mage.Sets/src/mage/cards/k/KrallenhordeHowler.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class KrallenhordeHowler extends CardImpl {
+public final class KrallenhordeHowler extends CardImpl {
private static final FilterCard FILTER = new FilterCard("Creature spells");
diff --git a/Mage.Sets/src/mage/cards/k/KrallenhordeKiller.java b/Mage.Sets/src/mage/cards/k/KrallenhordeKiller.java
index d3d5eb34700..f4330662ae8 100644
--- a/Mage.Sets/src/mage/cards/k/KrallenhordeKiller.java
+++ b/Mage.Sets/src/mage/cards/k/KrallenhordeKiller.java
@@ -46,7 +46,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class KrallenhordeKiller extends CardImpl {
+public final class KrallenhordeKiller extends CardImpl {
public KrallenhordeKiller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/k/KrallenhordeWantons.java b/Mage.Sets/src/mage/cards/k/KrallenhordeWantons.java
index bf769ffb876..1ef9cb18e0a 100644
--- a/Mage.Sets/src/mage/cards/k/KrallenhordeWantons.java
+++ b/Mage.Sets/src/mage/cards/k/KrallenhordeWantons.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class KrallenhordeWantons extends CardImpl {
+public final class KrallenhordeWantons extends CardImpl {
public KrallenhordeWantons(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/k/Kranioceros.java b/Mage.Sets/src/mage/cards/k/Kranioceros.java
index 9f03289ffc8..f24a894b338 100644
--- a/Mage.Sets/src/mage/cards/k/Kranioceros.java
+++ b/Mage.Sets/src/mage/cards/k/Kranioceros.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Kranioceros extends CardImpl {
+public final class Kranioceros extends CardImpl {
public Kranioceros(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KrarkClanEngineers.java b/Mage.Sets/src/mage/cards/k/KrarkClanEngineers.java
index 49f64a4eb53..bc3ad614ade 100644
--- a/Mage.Sets/src/mage/cards/k/KrarkClanEngineers.java
+++ b/Mage.Sets/src/mage/cards/k/KrarkClanEngineers.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class KrarkClanEngineers extends CardImpl {
+public final class KrarkClanEngineers extends CardImpl {
public KrarkClanEngineers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KrarkClanGrunt.java b/Mage.Sets/src/mage/cards/k/KrarkClanGrunt.java
index 2c448134443..b053b265204 100644
--- a/Mage.Sets/src/mage/cards/k/KrarkClanGrunt.java
+++ b/Mage.Sets/src/mage/cards/k/KrarkClanGrunt.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class KrarkClanGrunt extends CardImpl {
+public final class KrarkClanGrunt extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/k/KrarkClanIronworks.java b/Mage.Sets/src/mage/cards/k/KrarkClanIronworks.java
index 959d0da610a..0d9b5ff165e 100644
--- a/Mage.Sets/src/mage/cards/k/KrarkClanIronworks.java
+++ b/Mage.Sets/src/mage/cards/k/KrarkClanIronworks.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class KrarkClanIronworks extends CardImpl {
+public final class KrarkClanIronworks extends CardImpl {
public KrarkClanIronworks(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/k/KrarkClanOgre.java b/Mage.Sets/src/mage/cards/k/KrarkClanOgre.java
index 868a0009039..587a11ca682 100644
--- a/Mage.Sets/src/mage/cards/k/KrarkClanOgre.java
+++ b/Mage.Sets/src/mage/cards/k/KrarkClanOgre.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class KrarkClanOgre extends CardImpl {
+public final class KrarkClanOgre extends CardImpl {
public KrarkClanOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KrarkClanShaman.java b/Mage.Sets/src/mage/cards/k/KrarkClanShaman.java
index b3f29c1107e..4c41bd4e18f 100644
--- a/Mage.Sets/src/mage/cards/k/KrarkClanShaman.java
+++ b/Mage.Sets/src/mage/cards/k/KrarkClanShaman.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class KrarkClanShaman extends CardImpl {
+public final class KrarkClanShaman extends CardImpl {
private static final FilterControlledPermanent filterSacrificed = new FilterControlledPermanent("an artifact");
private static final FilterCreaturePermanent filterTargetedCreatures = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/k/KrarkClanStoker.java b/Mage.Sets/src/mage/cards/k/KrarkClanStoker.java
index d4bd56233f2..e5c19796bea 100644
--- a/Mage.Sets/src/mage/cards/k/KrarkClanStoker.java
+++ b/Mage.Sets/src/mage/cards/k/KrarkClanStoker.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class KrarkClanStoker extends CardImpl {
+public final class KrarkClanStoker extends CardImpl {
public KrarkClanStoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KrarksOtherThumb.java b/Mage.Sets/src/mage/cards/k/KrarksOtherThumb.java
index b37ef0e660e..270f83d20da 100644
--- a/Mage.Sets/src/mage/cards/k/KrarksOtherThumb.java
+++ b/Mage.Sets/src/mage/cards/k/KrarksOtherThumb.java
@@ -47,7 +47,7 @@ import mage.util.RandomUtil;
*
* @author spjspj
*/
-public class KrarksOtherThumb extends CardImpl {
+public final class KrarksOtherThumb extends CardImpl {
public KrarksOtherThumb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/k/KrarksThumb.java b/Mage.Sets/src/mage/cards/k/KrarksThumb.java
index f3e32dab75a..64002241495 100644
--- a/Mage.Sets/src/mage/cards/k/KrarksThumb.java
+++ b/Mage.Sets/src/mage/cards/k/KrarksThumb.java
@@ -43,7 +43,7 @@ import mage.util.RandomUtil;
*
* @author LevelX2
*/
-public class KrarksThumb extends CardImpl {
+public final class KrarksThumb extends CardImpl {
public KrarksThumb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/k/KrasisIncubation.java b/Mage.Sets/src/mage/cards/k/KrasisIncubation.java
index eb7d2035ce6..423c2b3ccfa 100644
--- a/Mage.Sets/src/mage/cards/k/KrasisIncubation.java
+++ b/Mage.Sets/src/mage/cards/k/KrasisIncubation.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class KrasisIncubation extends CardImpl {
+public final class KrasisIncubation extends CardImpl {
public KrasisIncubation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KraulWarrior.java b/Mage.Sets/src/mage/cards/k/KraulWarrior.java
index fab7a541dd4..fa89f10a811 100644
--- a/Mage.Sets/src/mage/cards/k/KraulWarrior.java
+++ b/Mage.Sets/src/mage/cards/k/KraulWarrior.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*/
-public class KraulWarrior extends CardImpl {
+public final class KraulWarrior extends CardImpl {
public KraulWarrior (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KraumLudevicsOpus.java b/Mage.Sets/src/mage/cards/k/KraumLudevicsOpus.java
index 595432dabde..1fa2dcbb10e 100644
--- a/Mage.Sets/src/mage/cards/k/KraumLudevicsOpus.java
+++ b/Mage.Sets/src/mage/cards/k/KraumLudevicsOpus.java
@@ -49,7 +49,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author Styxo
*/
-public class KraumLudevicsOpus extends CardImpl {
+public final class KraumLudevicsOpus extends CardImpl {
public KraumLudevicsOpus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KravTheUnredeemed.java b/Mage.Sets/src/mage/cards/k/KravTheUnredeemed.java
new file mode 100644
index 00000000000..9e40adfc00b
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/k/KravTheUnredeemed.java
@@ -0,0 +1,111 @@
+/*
+ * 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.k;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeXTargetCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.dynamicvalue.common.GetXValue;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.DrawCardTargetEffect;
+import mage.abilities.effects.common.GainLifeTargetEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.counters.CounterType;
+import mage.filter.StaticFilters;
+import mage.game.Game;
+import mage.target.TargetPlayer;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class KravTheUnredeemed extends CardImpl {
+
+ public KravTheUnredeemed(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.DEMON);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Partner with Regna, the Redeemer (When this creature enters the battlefield, target player may put Regna into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Regna, the Redeemer", true));
+
+ // {B}, Sacrifice X creatures: Target player draws X cards and gains X life. Put X +1/+1 counters on Krav, the Unredeemed.
+ Ability ability = new SimpleActivatedAbility(new KravTheUnredeemedEffect(), new ManaCostsImpl("{B}"));
+ ability.addTarget(new TargetPlayer());
+ ability.addCost(new SacrificeXTargetCost(StaticFilters.FILTER_CONTROLLED_CREATURE));
+ this.addAbility(ability);
+ }
+
+ public KravTheUnredeemed(final KravTheUnredeemed card) {
+ super(card);
+ }
+
+ @Override
+ public KravTheUnredeemed copy() {
+ return new KravTheUnredeemed(this);
+ }
+}
+
+class KravTheUnredeemedEffect extends OneShotEffect {
+
+ KravTheUnredeemedEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Target player draws X cards and gains X life. Put X +1/+1 counters on {this}";
+ }
+
+ KravTheUnredeemedEffect(final KravTheUnredeemedEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public KravTheUnredeemedEffect copy() {
+ return new KravTheUnredeemedEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ int xValue = new GetXValue().calculate(game, source, this);
+ new DrawCardTargetEffect(xValue).apply(game, source);
+ new GainLifeTargetEffect(xValue).apply(game, source);
+ new AddCountersSourceEffect(CounterType.P1P1.createInstance(xValue)).apply(game, source);
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/k/KrazyKow.java b/Mage.Sets/src/mage/cards/k/KrazyKow.java
index 3fa78b45e27..f8a8507e726 100644
--- a/Mage.Sets/src/mage/cards/k/KrazyKow.java
+++ b/Mage.Sets/src/mage/cards/k/KrazyKow.java
@@ -49,7 +49,7 @@ import java.util.UUID;
* @author ciaccona007
*/
-public class KrazyKow extends CardImpl {
+public final class KrazyKow extends CardImpl {
public KrazyKow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KrenkoMobBoss.java b/Mage.Sets/src/mage/cards/k/KrenkoMobBoss.java
index 835c919e169..02e9f0c05f2 100644
--- a/Mage.Sets/src/mage/cards/k/KrenkoMobBoss.java
+++ b/Mage.Sets/src/mage/cards/k/KrenkoMobBoss.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author North
*/
-public class KrenkoMobBoss extends CardImpl {
+public final class KrenkoMobBoss extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("the number of Goblins you control");
diff --git a/Mage.Sets/src/mage/cards/k/KrenkosCommand.java b/Mage.Sets/src/mage/cards/k/KrenkosCommand.java
index 808966ca02d..48da10baa1a 100644
--- a/Mage.Sets/src/mage/cards/k/KrenkosCommand.java
+++ b/Mage.Sets/src/mage/cards/k/KrenkosCommand.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author North
*/
-public class KrenkosCommand extends CardImpl {
+public final class KrenkosCommand extends CardImpl {
public KrenkosCommand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KrenkosEnforcer.java b/Mage.Sets/src/mage/cards/k/KrenkosEnforcer.java
index de9bec86994..cf9ce0873cd 100644
--- a/Mage.Sets/src/mage/cards/k/KrenkosEnforcer.java
+++ b/Mage.Sets/src/mage/cards/k/KrenkosEnforcer.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Quercitron
*/
-public class KrenkosEnforcer extends CardImpl {
+public final class KrenkosEnforcer extends CardImpl {
public KrenkosEnforcer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KreshTheBloodbraided.java b/Mage.Sets/src/mage/cards/k/KreshTheBloodbraided.java
index 22bf665e988..6348d563fa8 100644
--- a/Mage.Sets/src/mage/cards/k/KreshTheBloodbraided.java
+++ b/Mage.Sets/src/mage/cards/k/KreshTheBloodbraided.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class KreshTheBloodbraided extends CardImpl {
+public final class KreshTheBloodbraided extends CardImpl {
public KreshTheBloodbraided(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrisMage.java b/Mage.Sets/src/mage/cards/k/KrisMage.java
index da30a393c52..6d3ef4ab4a6 100644
--- a/Mage.Sets/src/mage/cards/k/KrisMage.java
+++ b/Mage.Sets/src/mage/cards/k/KrisMage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class KrisMage extends CardImpl {
+public final class KrisMage extends CardImpl {
public KrisMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KrondTheDawnClad.java b/Mage.Sets/src/mage/cards/k/KrondTheDawnClad.java
index 2f581caa992..92282672824 100644
--- a/Mage.Sets/src/mage/cards/k/KrondTheDawnClad.java
+++ b/Mage.Sets/src/mage/cards/k/KrondTheDawnClad.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class KrondTheDawnClad extends CardImpl {
+public final class KrondTheDawnClad extends CardImpl {
public KrondTheDawnClad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{G}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanArcher.java b/Mage.Sets/src/mage/cards/k/KrosanArcher.java
index 6067977d1f5..4e23687f4dc 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanArcher.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanArcher.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class KrosanArcher extends CardImpl {
+public final class KrosanArcher extends CardImpl {
public KrosanArcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanAvenger.java b/Mage.Sets/src/mage/cards/k/KrosanAvenger.java
index e73922a908c..5285af4ae33 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanAvenger.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanAvenger.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class KrosanAvenger extends CardImpl {
+public final class KrosanAvenger extends CardImpl {
public KrosanAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanBeast.java b/Mage.Sets/src/mage/cards/k/KrosanBeast.java
index e9b4631037e..9a2ee23d623 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanBeast.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanBeast.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class KrosanBeast extends CardImpl {
+public final class KrosanBeast extends CardImpl {
public KrosanBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanCloudscraper.java b/Mage.Sets/src/mage/cards/k/KrosanCloudscraper.java
index 987ffb97d90..c857967e9fa 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanCloudscraper.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanCloudscraper.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class KrosanCloudscraper extends CardImpl {
+public final class KrosanCloudscraper extends CardImpl {
public KrosanCloudscraper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanColossus.java b/Mage.Sets/src/mage/cards/k/KrosanColossus.java
index eef57eca2ca..a427aed5636 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanColossus.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanColossus.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class KrosanColossus extends CardImpl {
+public final class KrosanColossus extends CardImpl {
public KrosanColossus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanConstrictor.java b/Mage.Sets/src/mage/cards/k/KrosanConstrictor.java
index 4760153f6da..2595e85ef66 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanConstrictor.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanConstrictor.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class KrosanConstrictor extends CardImpl {
+public final class KrosanConstrictor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanDrover.java b/Mage.Sets/src/mage/cards/k/KrosanDrover.java
index 7bd3c7d3411..c0349c81cf9 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanDrover.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanDrover.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
*
* @author Eirkei
*/
-public class KrosanDrover extends CardImpl {
+public final class KrosanDrover extends CardImpl {
private static final FilterCard filter = new FilterCard("Creature spells with converted mana cost 6 or greater");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanDruid.java b/Mage.Sets/src/mage/cards/k/KrosanDruid.java
index 53a60994496..561003a8348 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanDruid.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanDruid.java
@@ -43,7 +43,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class KrosanDruid extends CardImpl {
+public final class KrosanDruid extends CardImpl {
public KrosanDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanGrip.java b/Mage.Sets/src/mage/cards/k/KrosanGrip.java
index 075117af38a..765dbd3c126 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanGrip.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanGrip.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author jonubuu
*/
-public class KrosanGrip extends CardImpl {
+public final class KrosanGrip extends CardImpl {
public KrosanGrip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java b/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java
index f9f5c6acbb6..c375621d959 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class KrosanGroundshaker extends CardImpl {
+public final class KrosanGroundshaker extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Beast creature");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanReclamation.java b/Mage.Sets/src/mage/cards/k/KrosanReclamation.java
index 6b2a2ecd022..cae39db78f1 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanReclamation.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanReclamation.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class KrosanReclamation extends CardImpl {
+public final class KrosanReclamation extends CardImpl {
public KrosanReclamation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanRestorer.java b/Mage.Sets/src/mage/cards/k/KrosanRestorer.java
index c70b9eff3f8..089921bd215 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanRestorer.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanRestorer.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class KrosanRestorer extends CardImpl {
+public final class KrosanRestorer extends CardImpl {
public KrosanRestorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanTusker.java b/Mage.Sets/src/mage/cards/k/KrosanTusker.java
index 8bfa0b8f7ad..519a9e3603a 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanTusker.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanTusker.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class KrosanTusker extends CardImpl {
+public final class KrosanTusker extends CardImpl {
public KrosanTusker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
@@ -59,7 +59,7 @@ public class KrosanTusker extends CardImpl {
this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}{G}")));
// When you cycle Krosan Tusker, you may search your library for a basic land card, reveal that card, put it into your hand, then shuffle your library.
this.addAbility(new CycleTriggeredAbility(
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
true));
}
diff --git a/Mage.Sets/src/mage/cards/k/KrosanVerge.java b/Mage.Sets/src/mage/cards/k/KrosanVerge.java
index 565dd22262d..b943e105929 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanVerge.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanVerge.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class KrosanVerge extends CardImpl {
+public final class KrosanVerge extends CardImpl {
private static final FilterCard filterForest = new FilterCard("a Forest");
private static final FilterCard filterPlains = new FilterCard("a Plains");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanVorine.java b/Mage.Sets/src/mage/cards/k/KrosanVorine.java
index 2caacffd4a6..186e21c7e2e 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanVorine.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanVorine.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class KrosanVorine extends CardImpl {
+public final class KrosanVorine extends CardImpl {
public KrosanVorine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanWarchief.java b/Mage.Sets/src/mage/cards/k/KrosanWarchief.java
index cd69b12c51d..81e44974147 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanWarchief.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanWarchief.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class KrosanWarchief extends CardImpl {
+public final class KrosanWarchief extends CardImpl {
private static final FilterCard filter = new FilterCard("Beast spells");
private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("Beast");
diff --git a/Mage.Sets/src/mage/cards/k/KrosanWayfarer.java b/Mage.Sets/src/mage/cards/k/KrosanWayfarer.java
index 2d8ff4b3916..e905fbbaf11 100644
--- a/Mage.Sets/src/mage/cards/k/KrosanWayfarer.java
+++ b/Mage.Sets/src/mage/cards/k/KrosanWayfarer.java
@@ -31,28 +31,30 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
+import mage.filter.StaticFilters;
/**
*
* @author fireshoes
*/
-public class KrosanWayfarer extends CardImpl {
+public final class KrosanWayfarer extends CardImpl {
public KrosanWayfarer(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.DRUID);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// Sacrifice Krosan Wayfarer: You may put a land card from your hand onto the battlefield.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutLandFromHandOntoBattlefieldEffect(), new SacrificeSourceCost()));
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_BASIC_LAND_A), new SacrificeSourceCost()));
}
public KrosanWayfarer(final KrosanWayfarer card) {
diff --git a/Mage.Sets/src/mage/cards/k/KrovikanFetish.java b/Mage.Sets/src/mage/cards/k/KrovikanFetish.java
index 16f946c035e..b9be229ddca 100644
--- a/Mage.Sets/src/mage/cards/k/KrovikanFetish.java
+++ b/Mage.Sets/src/mage/cards/k/KrovikanFetish.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class KrovikanFetish extends CardImpl {
+public final class KrovikanFetish extends CardImpl {
public KrovikanFetish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KrovikanHorror.java b/Mage.Sets/src/mage/cards/k/KrovikanHorror.java
index ff2063899d9..6d56883ff32 100644
--- a/Mage.Sets/src/mage/cards/k/KrovikanHorror.java
+++ b/Mage.Sets/src/mage/cards/k/KrovikanHorror.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author TheElk801
*/
-public class KrovikanHorror extends CardImpl {
+public final class KrovikanHorror extends CardImpl {
public KrovikanHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KrovikanMist.java b/Mage.Sets/src/mage/cards/k/KrovikanMist.java
index e937c2d8db2..28f894cfd01 100644
--- a/Mage.Sets/src/mage/cards/k/KrovikanMist.java
+++ b/Mage.Sets/src/mage/cards/k/KrovikanMist.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class KrovikanMist extends CardImpl {
+public final class KrovikanMist extends CardImpl {
private static final FilterPermanent illusionsFilter = new FilterPermanent("Illusions on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/k/KrovikanPlague.java b/Mage.Sets/src/mage/cards/k/KrovikanPlague.java
index fc864282239..01ef1939df0 100644
--- a/Mage.Sets/src/mage/cards/k/KrovikanPlague.java
+++ b/Mage.Sets/src/mage/cards/k/KrovikanPlague.java
@@ -61,7 +61,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author L_J
*/
-public class KrovikanPlague extends CardImpl {
+public final class KrovikanPlague extends CardImpl {
private static final FilterControlledCreaturePermanent filterNonWall = new FilterControlledCreaturePermanent("non-Wall creature you control");
diff --git a/Mage.Sets/src/mage/cards/k/KrovikanRot.java b/Mage.Sets/src/mage/cards/k/KrovikanRot.java
index 8eb7e624dd1..dc007c2bb71 100644
--- a/Mage.Sets/src/mage/cards/k/KrovikanRot.java
+++ b/Mage.Sets/src/mage/cards/k/KrovikanRot.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class KrovikanRot extends CardImpl {
+public final class KrovikanRot extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/k/KrovikanScoundrel.java b/Mage.Sets/src/mage/cards/k/KrovikanScoundrel.java
index 9c3799b6f39..80796eadc73 100644
--- a/Mage.Sets/src/mage/cards/k/KrovikanScoundrel.java
+++ b/Mage.Sets/src/mage/cards/k/KrovikanScoundrel.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class KrovikanScoundrel extends CardImpl {
+public final class KrovikanScoundrel extends CardImpl {
public KrovikanScoundrel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KrovikanSorcerer.java b/Mage.Sets/src/mage/cards/k/KrovikanSorcerer.java
index c7e3ac950b0..45e7304bb6c 100644
--- a/Mage.Sets/src/mage/cards/k/KrovikanSorcerer.java
+++ b/Mage.Sets/src/mage/cards/k/KrovikanSorcerer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class KrovikanSorcerer extends CardImpl {
+public final class KrovikanSorcerer extends CardImpl {
private static final FilterCard filterNonBlack = new FilterCard("a nonblack card");
private static final FilterCard filterBlack = new FilterCard("a black card");
diff --git a/Mage.Sets/src/mage/cards/k/KrovikanWhispers.java b/Mage.Sets/src/mage/cards/k/KrovikanWhispers.java
index 2aee7e8829f..d907e8fa64b 100644
--- a/Mage.Sets/src/mage/cards/k/KrovikanWhispers.java
+++ b/Mage.Sets/src/mage/cards/k/KrovikanWhispers.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class KrovikanWhispers extends CardImpl {
+public final class KrovikanWhispers extends CardImpl {
public KrovikanWhispers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KruinOutlaw.java b/Mage.Sets/src/mage/cards/k/KruinOutlaw.java
index 2a6b12b34ae..7baebc63b96 100644
--- a/Mage.Sets/src/mage/cards/k/KruinOutlaw.java
+++ b/Mage.Sets/src/mage/cards/k/KruinOutlaw.java
@@ -47,7 +47,7 @@ import mage.constants.TargetController;
*
* @author North
*/
-public class KruinOutlaw extends CardImpl {
+public final class KruinOutlaw extends CardImpl {
public KruinOutlaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KruinStriker.java b/Mage.Sets/src/mage/cards/k/KruinStriker.java
index e93d5ca133e..6395f8b5444 100644
--- a/Mage.Sets/src/mage/cards/k/KruinStriker.java
+++ b/Mage.Sets/src/mage/cards/k/KruinStriker.java
@@ -45,7 +45,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class KruinStriker extends CardImpl {
+public final class KruinStriker extends CardImpl {
public KruinStriker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KrumarBondKin.java b/Mage.Sets/src/mage/cards/k/KrumarBondKin.java
index 3712a5ea94f..6df0b073baf 100644
--- a/Mage.Sets/src/mage/cards/k/KrumarBondKin.java
+++ b/Mage.Sets/src/mage/cards/k/KrumarBondKin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class KrumarBondKin extends CardImpl {
+public final class KrumarBondKin extends CardImpl {
public KrumarBondKin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KruphixGodOfHorizons.java b/Mage.Sets/src/mage/cards/k/KruphixGodOfHorizons.java
index c2cd7c15a77..702b224ca9b 100644
--- a/Mage.Sets/src/mage/cards/k/KruphixGodOfHorizons.java
+++ b/Mage.Sets/src/mage/cards/k/KruphixGodOfHorizons.java
@@ -47,10 +47,10 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class KruphixGodOfHorizons extends CardImpl {
+public final class KruphixGodOfHorizons extends CardImpl {
public KruphixGodOfHorizons(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{G}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{3}{G}{U}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.GOD);
@@ -86,7 +86,7 @@ class KruphixGodOfHorizonsEffect extends ReplacementEffectImpl {
public KruphixGodOfHorizonsEffect() {
super(Duration.WhileOnBattlefield, Outcome.Benefit);
- staticText = "If unused mana would empty from your mana pool, that mana becomes colorless instead";
+ staticText = "If you would lose unspent mana, that mana becomes colorless instead.";
}
public KruphixGodOfHorizonsEffect(final KruphixGodOfHorizonsEffect effect) {
@@ -108,13 +108,13 @@ class KruphixGodOfHorizonsEffect extends ReplacementEffectImpl {
return true;
}
- @Override
+ @Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.EMPTY_MANA_POOL;
}
-
+
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
return event.getPlayerId().equals(source.getControllerId());
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/k/KruphixsInsight.java b/Mage.Sets/src/mage/cards/k/KruphixsInsight.java
index 7a649f1f683..1a443f5d812 100644
--- a/Mage.Sets/src/mage/cards/k/KruphixsInsight.java
+++ b/Mage.Sets/src/mage/cards/k/KruphixsInsight.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class KruphixsInsight extends CardImpl {
+public final class KruphixsInsight extends CardImpl {
private static final FilterCard filter = new FilterCard("up to three enchantment cards");
diff --git a/Mage.Sets/src/mage/cards/k/Kudzu.java b/Mage.Sets/src/mage/cards/k/Kudzu.java
index 398a081c933..350f9aa128c 100644
--- a/Mage.Sets/src/mage/cards/k/Kudzu.java
+++ b/Mage.Sets/src/mage/cards/k/Kudzu.java
@@ -37,10 +37,9 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.Filter;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
@@ -52,7 +51,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class Kudzu extends CardImpl {
+public final class Kudzu extends CardImpl {
public Kudzu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{G}");
@@ -120,22 +119,18 @@ class KudzuEffect extends OneShotEffect {
Permanent landChosen = game.getPermanent(target.getFirstTarget());
if (landChosen != null) {
for (Target targetTest : kudzuCard.getSpellAbility().getTargets()) {
- Filter filterTest = targetTest.getFilter();
- if (filterTest.match(landChosen, game)) {
- if (game.getBattlefield().containsPermanent(landChosen.getId())) { //verify that it is still on the battlefield
- game.getState().setValue("attachTo:" + kudzuCard.getId(), landChosen);
- Zone zone = game.getState().getZone(kudzuCard.getId());
- kudzuCard.putOntoBattlefield(game, zone, source.getSourceId(), controller.getId());
- return landChosen.addAttachment(kudzuCard.getId(), game);
- }
+ if (targetTest.getFilter().match(landChosen, game)) {
+ landChosen.addAttachment(kudzu.getId(), game);
}
}
}
}
}
}
+
}
}
+ return true;
}
return false;
}
diff --git a/Mage.Sets/src/mage/cards/k/KujarSeedsculptor.java b/Mage.Sets/src/mage/cards/k/KujarSeedsculptor.java
index 2f5a31646fc..ea4f8e43056 100644
--- a/Mage.Sets/src/mage/cards/k/KujarSeedsculptor.java
+++ b/Mage.Sets/src/mage/cards/k/KujarSeedsculptor.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author spjspj
*/
-public class KujarSeedsculptor extends CardImpl {
+public final class KujarSeedsculptor extends CardImpl {
public KujarSeedsculptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/k/KukemssaPirates.java b/Mage.Sets/src/mage/cards/k/KukemssaPirates.java
index f7d123c64ad..d1ad40a2cd5 100644
--- a/Mage.Sets/src/mage/cards/k/KukemssaPirates.java
+++ b/Mage.Sets/src/mage/cards/k/KukemssaPirates.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author TheElk801
*/
-public class KukemssaPirates extends CardImpl {
+public final class KukemssaPirates extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/k/KukemssaSerpent.java b/Mage.Sets/src/mage/cards/k/KukemssaSerpent.java
index 510632ae0b4..81dae51998a 100644
--- a/Mage.Sets/src/mage/cards/k/KukemssaSerpent.java
+++ b/Mage.Sets/src/mage/cards/k/KukemssaSerpent.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class KukemssaSerpent extends CardImpl {
+public final class KukemssaSerpent extends CardImpl {
private static final FilterLandPermanent filterOpponentLand = new FilterLandPermanent("land an opponent controls");
private static final FilterControlledLandPermanent filterControlledLand = new FilterControlledLandPermanent("an Island");
diff --git a/Mage.Sets/src/mage/cards/k/KuldothaFlamefiend.java b/Mage.Sets/src/mage/cards/k/KuldothaFlamefiend.java
index 9651265d279..42627cbdb24 100644
--- a/Mage.Sets/src/mage/cards/k/KuldothaFlamefiend.java
+++ b/Mage.Sets/src/mage/cards/k/KuldothaFlamefiend.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author North
*/
-public class KuldothaFlamefiend extends CardImpl {
+public final class KuldothaFlamefiend extends CardImpl {
public KuldothaFlamefiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KuldothaForgemaster.java b/Mage.Sets/src/mage/cards/k/KuldothaForgemaster.java
index 3de628d96b3..e2037611626 100644
--- a/Mage.Sets/src/mage/cards/k/KuldothaForgemaster.java
+++ b/Mage.Sets/src/mage/cards/k/KuldothaForgemaster.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class KuldothaForgemaster extends CardImpl {
+public final class KuldothaForgemaster extends CardImpl {
public KuldothaForgemaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java b/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java
index f75373f3ecc..23a19ea6e89 100644
--- a/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java
+++ b/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class KuldothaPhoenix extends CardImpl {
+public final class KuldothaPhoenix extends CardImpl {
public KuldothaPhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KuldothaRebirth.java b/Mage.Sets/src/mage/cards/k/KuldothaRebirth.java
index 9f7ecd1a61b..12d11d13e44 100644
--- a/Mage.Sets/src/mage/cards/k/KuldothaRebirth.java
+++ b/Mage.Sets/src/mage/cards/k/KuldothaRebirth.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class KuldothaRebirth extends CardImpl {
+public final class KuldothaRebirth extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/k/KuldothaRingleader.java b/Mage.Sets/src/mage/cards/k/KuldothaRingleader.java
index f73b70b5ad5..bce7806c673 100644
--- a/Mage.Sets/src/mage/cards/k/KuldothaRingleader.java
+++ b/Mage.Sets/src/mage/cards/k/KuldothaRingleader.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author ayratn
*/
-public class KuldothaRingleader extends CardImpl {
+public final class KuldothaRingleader extends CardImpl {
public KuldothaRingleader (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KulrathKnight.java b/Mage.Sets/src/mage/cards/k/KulrathKnight.java
index 134d82686f1..a114a5a2614 100644
--- a/Mage.Sets/src/mage/cards/k/KulrathKnight.java
+++ b/Mage.Sets/src/mage/cards/k/KulrathKnight.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class KulrathKnight extends CardImpl {
+public final class KulrathKnight extends CardImpl {
public KulrathKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B/R}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/k/KumanoMasterYamabushi.java b/Mage.Sets/src/mage/cards/k/KumanoMasterYamabushi.java
index e90a65f1927..d7ee89ce657 100644
--- a/Mage.Sets/src/mage/cards/k/KumanoMasterYamabushi.java
+++ b/Mage.Sets/src/mage/cards/k/KumanoMasterYamabushi.java
@@ -51,7 +51,7 @@ import mage.watchers.common.DamagedByWatcher;
/**
* @author LevelX
*/
-public class KumanoMasterYamabushi extends CardImpl {
+public final class KumanoMasterYamabushi extends CardImpl {
public KumanoMasterYamabushi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KumanosBlessing.java b/Mage.Sets/src/mage/cards/k/KumanosBlessing.java
index 9f28b29f3bd..932488250fe 100644
--- a/Mage.Sets/src/mage/cards/k/KumanosBlessing.java
+++ b/Mage.Sets/src/mage/cards/k/KumanosBlessing.java
@@ -55,7 +55,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class KumanosBlessing extends CardImpl {
+public final class KumanosBlessing extends CardImpl {
public KumanosBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KumanosPupils.java b/Mage.Sets/src/mage/cards/k/KumanosPupils.java
index 9f58cf9a744..a5d10604d0d 100644
--- a/Mage.Sets/src/mage/cards/k/KumanosPupils.java
+++ b/Mage.Sets/src/mage/cards/k/KumanosPupils.java
@@ -43,7 +43,7 @@ import mage.watchers.common.DamagedByWatcher;
/**
* @author LevelX
*/
-public class KumanosPupils extends CardImpl {
+public final class KumanosPupils extends CardImpl {
public KumanosPupils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KumenaTyrantOfOrazca.java b/Mage.Sets/src/mage/cards/k/KumenaTyrantOfOrazca.java
index e01e24b0ea4..bfbbd0449aa 100644
--- a/Mage.Sets/src/mage/cards/k/KumenaTyrantOfOrazca.java
+++ b/Mage.Sets/src/mage/cards/k/KumenaTyrantOfOrazca.java
@@ -1,107 +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.k;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.TapTargetCost;
-import mage.abilities.effects.common.DrawCardSourceControllerEffect;
-import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect;
-import mage.abilities.effects.common.counter.AddCountersAllEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.SubType;
-import mage.constants.SuperType;
-import mage.constants.Zone;
-import mage.counters.CounterType;
-import mage.filter.common.FilterControlledPermanent;
-import mage.filter.predicate.Predicates;
-import mage.filter.predicate.mageobject.SubtypePredicate;
-import mage.filter.predicate.permanent.AnotherPredicate;
-import mage.filter.predicate.permanent.TappedPredicate;
-import mage.target.common.TargetControlledPermanent;
-
-/**
- *
- * @author LevelX2
- */
-public class KumenaTyrantOfOrazca extends CardImpl {
-
- private static final FilterControlledPermanent filterAnotherNotTapped = new FilterControlledPermanent("another untapped Merfolk you control");
- private static final FilterControlledPermanent filterNotTapped = new FilterControlledPermanent("untapped Merfolk you control");
- private static final FilterControlledPermanent filterAll = new FilterControlledPermanent("Merfolk you control");
-
- static {
- filterAnotherNotTapped.add(new AnotherPredicate());
- filterAnotherNotTapped.add(new SubtypePredicate(SubType.MERFOLK));
- filterAnotherNotTapped.add(Predicates.not(new TappedPredicate()));
-
- filterNotTapped.add(new SubtypePredicate(SubType.MERFOLK));
- filterNotTapped.add(Predicates.not(new TappedPredicate()));
-
- filterAll.add(new SubtypePredicate(SubType.MERFOLK));
- }
-
- public KumenaTyrantOfOrazca(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{U}");
-
- this.addSuperType(SuperType.LEGENDARY);
- this.subtype.add(SubType.MERFOLK);
- this.subtype.add(SubType.SHAMAN);
- this.power = new MageInt(2);
- this.toughness = new MageInt(4);
-
- // Tap another untapped Merfolk you control: Kumena, Tyrant of Orzca can't be blocked this turn.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new CantBeBlockedSourceEffect(Duration.EndOfTurn),
- new TapTargetCost(new TargetControlledPermanent(1, 1, filterAnotherNotTapped, true))));
-
- // Tap three untapped Merfolk you control: Draw a card.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new DrawCardSourceControllerEffect(1),
- new TapTargetCost(new TargetControlledPermanent(3, 3, filterNotTapped, true))));
-
- // Tap five untapped Merfolk you control: Put a +1/+1 counter on each Merfolk you control.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new AddCountersAllEffect(CounterType.P1P1.createInstance(), filterAll),
- new TapTargetCost(new TargetControlledPermanent(5, 5, filterNotTapped, true))));
-
- }
-
- public KumenaTyrantOfOrazca(final KumenaTyrantOfOrazca card) {
- super(card);
- }
-
- @Override
- public KumenaTyrantOfOrazca copy() {
- return new KumenaTyrantOfOrazca(this);
- }
-}
+/*
+ * 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.k;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapTargetCost;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect;
+import mage.abilities.effects.common.counter.AddCountersAllEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.filter.common.FilterControlledPermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.filter.predicate.permanent.AnotherPredicate;
+import mage.filter.predicate.permanent.TappedPredicate;
+import mage.target.common.TargetControlledPermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class KumenaTyrantOfOrazca extends CardImpl {
+
+ private static final FilterControlledPermanent filterAnotherNotTapped = new FilterControlledPermanent("another untapped Merfolk you control");
+ private static final FilterControlledPermanent filterNotTapped = new FilterControlledPermanent("untapped Merfolk you control");
+ private static final FilterControlledPermanent filterAll = new FilterControlledPermanent("Merfolk you control");
+
+ static {
+ filterAnotherNotTapped.add(new AnotherPredicate());
+ filterAnotherNotTapped.add(new SubtypePredicate(SubType.MERFOLK));
+ filterAnotherNotTapped.add(Predicates.not(new TappedPredicate()));
+
+ filterNotTapped.add(new SubtypePredicate(SubType.MERFOLK));
+ filterNotTapped.add(Predicates.not(new TappedPredicate()));
+
+ filterAll.add(new SubtypePredicate(SubType.MERFOLK));
+ }
+
+ public KumenaTyrantOfOrazca(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{U}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.MERFOLK);
+ this.subtype.add(SubType.SHAMAN);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(4);
+
+ // Tap another untapped Merfolk you control: Kumena, Tyrant of Orzca can't be blocked this turn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new CantBeBlockedSourceEffect(Duration.EndOfTurn),
+ new TapTargetCost(new TargetControlledPermanent(1, 1, filterAnotherNotTapped, true))));
+
+ // Tap three untapped Merfolk you control: Draw a card.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new DrawCardSourceControllerEffect(1),
+ new TapTargetCost(new TargetControlledPermanent(3, 3, filterNotTapped, true))));
+
+ // Tap five untapped Merfolk you control: Put a +1/+1 counter on each Merfolk you control.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new AddCountersAllEffect(CounterType.P1P1.createInstance(), filterAll),
+ new TapTargetCost(new TargetControlledPermanent(5, 5, filterNotTapped, true))));
+
+ }
+
+ public KumenaTyrantOfOrazca(final KumenaTyrantOfOrazca card) {
+ super(card);
+ }
+
+ @Override
+ public KumenaTyrantOfOrazca copy() {
+ return new KumenaTyrantOfOrazca(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/k/KumenasAwakening.java b/Mage.Sets/src/mage/cards/k/KumenasAwakening.java
index eb49b0f20df..c43f2d4cb60 100644
--- a/Mage.Sets/src/mage/cards/k/KumenasAwakening.java
+++ b/Mage.Sets/src/mage/cards/k/KumenasAwakening.java
@@ -1,69 +1,69 @@
-/*
- * 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.k;
-
-import java.util.UUID;
-import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
-import mage.abilities.condition.common.CitysBlessingCondition;
-import mage.abilities.decorator.ConditionalOneShotEffect;
-import mage.abilities.effects.common.DrawCardAllEffect;
-import mage.abilities.effects.common.DrawCardSourceControllerEffect;
-import mage.abilities.keyword.AscendAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.TargetController;
-
-/**
- *
- * @author LevelX2
- */
-public class KumenasAwakening extends CardImpl {
-
- public KumenasAwakening(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
-
- // Ascend (If you control ten or more permenants, you get the city's blessing for the rest of the game.)
- this.addAbility(new AscendAbility());
-
- // At the beginning of your upkeep, each player draws a card. If you have the city's blessing, instead only you draw a card.
- this.addAbility(new BeginningOfUpkeepTriggeredAbility(
- new ConditionalOneShotEffect(new DrawCardSourceControllerEffect(1), new DrawCardAllEffect(1), CitysBlessingCondition.instance,
- "each player draws a card. If you have the city's blessing, instead only you draw a card"),
- TargetController.YOU, false));
- }
-
- public KumenasAwakening(final KumenasAwakening card) {
- super(card);
- }
-
- @Override
- public KumenasAwakening copy() {
- return new KumenasAwakening(this);
- }
-}
+/*
+ * 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.k;
+
+import java.util.UUID;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.condition.common.CitysBlessingCondition;
+import mage.abilities.decorator.ConditionalOneShotEffect;
+import mage.abilities.effects.common.DrawCardAllEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.keyword.AscendAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.TargetController;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class KumenasAwakening extends CardImpl {
+
+ public KumenasAwakening(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
+
+ // Ascend (If you control ten or more permenants, you get the city's blessing for the rest of the game.)
+ this.addAbility(new AscendAbility());
+
+ // At the beginning of your upkeep, each player draws a card. If you have the city's blessing, instead only you draw a card.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(
+ new ConditionalOneShotEffect(new DrawCardSourceControllerEffect(1), new DrawCardAllEffect(1), CitysBlessingCondition.instance,
+ "each player draws a card. If you have the city's blessing, instead only you draw a card"),
+ TargetController.YOU, false));
+ }
+
+ public KumenasAwakening(final KumenasAwakening card) {
+ super(card);
+ }
+
+ @Override
+ public KumenasAwakening copy() {
+ return new KumenasAwakening(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/k/KumenasSpeaker.java b/Mage.Sets/src/mage/cards/k/KumenasSpeaker.java
index efc7441604c..61150b17ff3 100644
--- a/Mage.Sets/src/mage/cards/k/KumenasSpeaker.java
+++ b/Mage.Sets/src/mage/cards/k/KumenasSpeaker.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author TheElk801
*/
-public class KumenasSpeaker extends CardImpl {
+public final class KumenasSpeaker extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another Merfolk or an Island");
diff --git a/Mage.Sets/src/mage/cards/k/KuonOgreAscendant.java b/Mage.Sets/src/mage/cards/k/KuonOgreAscendant.java
index 355f199d46e..b5a5414ccbb 100644
--- a/Mage.Sets/src/mage/cards/k/KuonOgreAscendant.java
+++ b/Mage.Sets/src/mage/cards/k/KuonOgreAscendant.java
@@ -52,7 +52,7 @@ import mage.watchers.common.CreaturesDiedWatcher;
*
* @author LevelX2
*/
-public class KuonOgreAscendant extends CardImpl {
+public final class KuonOgreAscendant extends CardImpl {
public KuonOgreAscendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/Kurgadon.java b/Mage.Sets/src/mage/cards/k/Kurgadon.java
index dd8f6954b80..b0655bb82dc 100644
--- a/Mage.Sets/src/mage/cards/k/Kurgadon.java
+++ b/Mage.Sets/src/mage/cards/k/Kurgadon.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
*
* @author Backfir3
*/
-public class Kurgadon extends CardImpl {
+public final class Kurgadon extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a creature spell with converted mana cost 6 or greater");
diff --git a/Mage.Sets/src/mage/cards/k/KurkeshOnakkeAncient.java b/Mage.Sets/src/mage/cards/k/KurkeshOnakkeAncient.java
index 5178e6ba44c..9f407451c62 100644
--- a/Mage.Sets/src/mage/cards/k/KurkeshOnakkeAncient.java
+++ b/Mage.Sets/src/mage/cards/k/KurkeshOnakkeAncient.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class KurkeshOnakkeAncient extends CardImpl {
+public final class KurkeshOnakkeAncient extends CardImpl {
public KurkeshOnakkeAncient(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KuroPitlord.java b/Mage.Sets/src/mage/cards/k/KuroPitlord.java
index d4bddfa72a6..7695b5dee08 100644
--- a/Mage.Sets/src/mage/cards/k/KuroPitlord.java
+++ b/Mage.Sets/src/mage/cards/k/KuroPitlord.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class KuroPitlord extends CardImpl {
+public final class KuroPitlord extends CardImpl {
public KuroPitlord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KurosTaken.java b/Mage.Sets/src/mage/cards/k/KurosTaken.java
index 3940c781e85..b407d57d774 100644
--- a/Mage.Sets/src/mage/cards/k/KurosTaken.java
+++ b/Mage.Sets/src/mage/cards/k/KurosTaken.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class KurosTaken extends CardImpl {
+public final class KurosTaken extends CardImpl {
public KurosTaken(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KusariGama.java b/Mage.Sets/src/mage/cards/k/KusariGama.java
index 201505ec31e..161697a5c3e 100644
--- a/Mage.Sets/src/mage/cards/k/KusariGama.java
+++ b/Mage.Sets/src/mage/cards/k/KusariGama.java
@@ -58,7 +58,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class KusariGama extends CardImpl {
+public final class KusariGama extends CardImpl {
public KusariGama(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/k/KwendePrideOfFemeref.java b/Mage.Sets/src/mage/cards/k/KwendePrideOfFemeref.java
index dfa5f738240..228c432d457 100644
--- a/Mage.Sets/src/mage/cards/k/KwendePrideOfFemeref.java
+++ b/Mage.Sets/src/mage/cards/k/KwendePrideOfFemeref.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author TheElk801
*/
-public class KwendePrideOfFemeref extends CardImpl {
+public final class KwendePrideOfFemeref extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control with first strike");
diff --git a/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java b/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java
index 4c45e9a3417..faa549ee62f 100644
--- a/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java
+++ b/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java
@@ -50,7 +50,7 @@ import mage.watchers.Watcher;
*
* @author spjspj
*/
-public class KydeleChosenOfKruphix extends CardImpl {
+public final class KydeleChosenOfKruphix extends CardImpl {
public KydeleChosenOfKruphix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java b/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java
index 5d2a8c4684e..026073561e4 100644
--- a/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java
+++ b/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java
@@ -51,7 +51,7 @@ import java.util.UUID;
/**
* @author spjspj
*/
-public class KynaiosAndTiroOfMeletis extends CardImpl {
+public final class KynaiosAndTiroOfMeletis extends CardImpl {
public KynaiosAndTiroOfMeletis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/k/KyokiSanitysEclipse.java b/Mage.Sets/src/mage/cards/k/KyokiSanitysEclipse.java
index d6fc9e8d2c2..236556f86a6 100644
--- a/Mage.Sets/src/mage/cards/k/KyokiSanitysEclipse.java
+++ b/Mage.Sets/src/mage/cards/k/KyokiSanitysEclipse.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class KyokiSanitysEclipse extends CardImpl {
+public final class KyokiSanitysEclipse extends CardImpl {
public KyokiSanitysEclipse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KyrenArchive.java b/Mage.Sets/src/mage/cards/k/KyrenArchive.java
new file mode 100644
index 00000000000..735e4bba09a
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/k/KyrenArchive.java
@@ -0,0 +1,146 @@
+/*
+ * 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.k;
+
+import java.util.UUID;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.DiscardHandCost;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.OneShotEffect;
+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.game.ExileZone;
+import mage.game.Game;
+import mage.players.Player;
+import mage.util.CardUtil;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class KyrenArchive extends CardImpl {
+
+ public KyrenArchive(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
+
+ // At the beginning of your upkeep, you may exile the top card of your library face down.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new KyrenArchiveExileEffect(), TargetController.YOU, true));
+
+ // {5}, Discard your hand, Sacrifice Kyren Archive: Put all cards exiled with Kyren Archive into their owner's hand.
+ Ability ability = new SimpleActivatedAbility(
+ Zone.BATTLEFIELD,
+ new KyrenArchiveReturnEffect(),
+ new GenericManaCost(5)
+ );
+ ability.addCost(new DiscardHandCost());
+ ability.addCost(new SacrificeSourceCost());
+ this.addAbility(ability);
+ }
+
+ public KyrenArchive(final KyrenArchive card) {
+ super(card);
+ }
+
+ @Override
+ public KyrenArchive copy() {
+ return new KyrenArchive(this);
+ }
+}
+
+class KyrenArchiveExileEffect extends OneShotEffect {
+
+ KyrenArchiveExileEffect() {
+ super(Outcome.Exile);
+ this.staticText = "exile the top card of your library face down";
+ }
+
+ KyrenArchiveExileEffect(final KyrenArchiveExileEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public KyrenArchiveExileEffect copy() {
+ return new KyrenArchiveExileEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ MageObject sourceObject = source.getSourceObject(game);
+ if (controller != null && sourceObject != null) {
+ Card card = controller.getLibrary().getFromTop(game);
+ if (card != null) {
+ UUID exileZoneId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter());
+ card.setFaceDown(true, game);
+ controller.moveCardsToExile(card, source, game, false, exileZoneId, sourceObject.getIdName());
+ card.setFaceDown(true, game);
+ return true;
+ }
+ }
+ return false;
+ }
+}
+
+class KyrenArchiveReturnEffect extends OneShotEffect {
+
+ KyrenArchiveReturnEffect() {
+ super(Outcome.DrawCard);
+ this.staticText = "Put all cards exiled with {this} into their owners' hands";
+ }
+
+ KyrenArchiveReturnEffect(final KyrenArchiveReturnEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public KyrenArchiveReturnEffect copy() {
+ return new KyrenArchiveReturnEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ ExileZone exileZone = game.getExile().getExileZone(CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()));
+ if (exileZone != null) {
+ controller.moveCards(exileZone, Zone.HAND, source, game);
+ }
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/k/KyrenGlider.java b/Mage.Sets/src/mage/cards/k/KyrenGlider.java
index 6294c3b1c0b..fe7fffc6b27 100644
--- a/Mage.Sets/src/mage/cards/k/KyrenGlider.java
+++ b/Mage.Sets/src/mage/cards/k/KyrenGlider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author BursegSardaukar
*/
-public class KyrenGlider extends CardImpl {
+public final class KyrenGlider extends CardImpl {
public KyrenGlider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KyrenLegate.java b/Mage.Sets/src/mage/cards/k/KyrenLegate.java
index 40d81148abe..d43602f54fd 100644
--- a/Mage.Sets/src/mage/cards/k/KyrenLegate.java
+++ b/Mage.Sets/src/mage/cards/k/KyrenLegate.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class KyrenLegate extends CardImpl {
+public final class KyrenLegate extends CardImpl {
private static final FilterPermanent filterPlains = new FilterPermanent();
private static final FilterPermanent filterMountain = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/k/KyrenNegotiations.java b/Mage.Sets/src/mage/cards/k/KyrenNegotiations.java
index 936615d90e8..f21e9a828ea 100644
--- a/Mage.Sets/src/mage/cards/k/KyrenNegotiations.java
+++ b/Mage.Sets/src/mage/cards/k/KyrenNegotiations.java
@@ -19,7 +19,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author ingmargoudt
*/
-public class KyrenNegotiations extends CardImpl {
+public final class KyrenNegotiations extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/k/KyrenSniper.java b/Mage.Sets/src/mage/cards/k/KyrenSniper.java
index 627a07c37e9..df1c6b6f1be 100644
--- a/Mage.Sets/src/mage/cards/k/KyrenSniper.java
+++ b/Mage.Sets/src/mage/cards/k/KyrenSniper.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
/**
* @author BursegSardaukar
*/
-public class KyrenSniper extends CardImpl {
+public final class KyrenSniper extends CardImpl {
public KyrenSniper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KyrenToy.java b/Mage.Sets/src/mage/cards/k/KyrenToy.java
index 16474e4457d..276e68c9c01 100644
--- a/Mage.Sets/src/mage/cards/k/KyrenToy.java
+++ b/Mage.Sets/src/mage/cards/k/KyrenToy.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class KyrenToy extends CardImpl {
+public final class KyrenToy extends CardImpl {
public KyrenToy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/k/KytheonHeroOfAkros.java b/Mage.Sets/src/mage/cards/k/KytheonHeroOfAkros.java
index 098a8013f0e..faa57f04270 100644
--- a/Mage.Sets/src/mage/cards/k/KytheonHeroOfAkros.java
+++ b/Mage.Sets/src/mage/cards/k/KytheonHeroOfAkros.java
@@ -57,7 +57,7 @@ import mage.watchers.common.AttackedOrBlockedThisCombatWatcher;
*
* @author LevelX2
*/
-public class KytheonHeroOfAkros extends CardImpl {
+public final class KytheonHeroOfAkros extends CardImpl {
public KytheonHeroOfAkros(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KytheonsIrregulars.java b/Mage.Sets/src/mage/cards/k/KytheonsIrregulars.java
index 1ce60661596..f78c6d52057 100644
--- a/Mage.Sets/src/mage/cards/k/KytheonsIrregulars.java
+++ b/Mage.Sets/src/mage/cards/k/KytheonsIrregulars.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class KytheonsIrregulars extends CardImpl {
+public final class KytheonsIrregulars extends CardImpl {
public KytheonsIrregulars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/k/KytheonsTactics.java b/Mage.Sets/src/mage/cards/k/KytheonsTactics.java
index 4630fd26c0c..a3ab0bd4301 100644
--- a/Mage.Sets/src/mage/cards/k/KytheonsTactics.java
+++ b/Mage.Sets/src/mage/cards/k/KytheonsTactics.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class KytheonsTactics extends CardImpl {
+public final class KytheonsTactics extends CardImpl {
public KytheonsTactics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LAATGunship.java b/Mage.Sets/src/mage/cards/l/LAATGunship.java
index 34f7cccc31f..a3eb7b44117 100644
--- a/Mage.Sets/src/mage/cards/l/LAATGunship.java
+++ b/Mage.Sets/src/mage/cards/l/LAATGunship.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.TrooperToken;
*
* @author Styxo
*/
-public class LAATGunship extends CardImpl {
+public final class LAATGunship extends CardImpl {
public LAATGunship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LabRats.java b/Mage.Sets/src/mage/cards/l/LabRats.java
index 4688760d3fe..d410a23c6ec 100644
--- a/Mage.Sets/src/mage/cards/l/LabRats.java
+++ b/Mage.Sets/src/mage/cards/l/LabRats.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.RatToken;
*
* @author North
*/
-public class LabRats extends CardImpl {
+public final class LabRats extends CardImpl {
public LabRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LaboratoryBrute.java b/Mage.Sets/src/mage/cards/l/LaboratoryBrute.java
index d690c70db89..de5c8924a01 100644
--- a/Mage.Sets/src/mage/cards/l/LaboratoryBrute.java
+++ b/Mage.Sets/src/mage/cards/l/LaboratoryBrute.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class LaboratoryBrute extends CardImpl {
+public final class LaboratoryBrute extends CardImpl {
public LaboratoryBrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LaboratoryManiac.java b/Mage.Sets/src/mage/cards/l/LaboratoryManiac.java
index e22b1910938..d6c0f0b6ace 100644
--- a/Mage.Sets/src/mage/cards/l/LaboratoryManiac.java
+++ b/Mage.Sets/src/mage/cards/l/LaboratoryManiac.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class LaboratoryManiac extends CardImpl {
+public final class LaboratoryManiac extends CardImpl {
public LaboratoryManiac(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LabyrinthChampion.java b/Mage.Sets/src/mage/cards/l/LabyrinthChampion.java
index 8927db44096..f1006c5aa06 100644
--- a/Mage.Sets/src/mage/cards/l/LabyrinthChampion.java
+++ b/Mage.Sets/src/mage/cards/l/LabyrinthChampion.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class LabyrinthChampion extends CardImpl {
+public final class LabyrinthChampion extends CardImpl {
public LabyrinthChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LabyrinthGuardian.java b/Mage.Sets/src/mage/cards/l/LabyrinthGuardian.java
index 819afa3c267..c2aa5afe553 100644
--- a/Mage.Sets/src/mage/cards/l/LabyrinthGuardian.java
+++ b/Mage.Sets/src/mage/cards/l/LabyrinthGuardian.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class LabyrinthGuardian extends CardImpl {
+public final class LabyrinthGuardian extends CardImpl {
public LabyrinthGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LabyrinthMinotaur.java b/Mage.Sets/src/mage/cards/l/LabyrinthMinotaur.java
index bb0eddadc43..51302217377 100644
--- a/Mage.Sets/src/mage/cards/l/LabyrinthMinotaur.java
+++ b/Mage.Sets/src/mage/cards/l/LabyrinthMinotaur.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class LabyrinthMinotaur extends CardImpl {
+public final class LabyrinthMinotaur extends CardImpl {
public LabyrinthMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LaccolithGrunt.java b/Mage.Sets/src/mage/cards/l/LaccolithGrunt.java
index 78edd56552e..cb22ca4c458 100644
--- a/Mage.Sets/src/mage/cards/l/LaccolithGrunt.java
+++ b/Mage.Sets/src/mage/cards/l/LaccolithGrunt.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class LaccolithGrunt extends CardImpl {
+public final class LaccolithGrunt extends CardImpl {
public LaccolithGrunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LaccolithRig.java b/Mage.Sets/src/mage/cards/l/LaccolithRig.java
index 179bacb096b..5b5452abe41 100644
--- a/Mage.Sets/src/mage/cards/l/LaccolithRig.java
+++ b/Mage.Sets/src/mage/cards/l/LaccolithRig.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class LaccolithRig extends CardImpl {
+public final class LaccolithRig extends CardImpl {
public LaccolithRig(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LaccolithTitan.java b/Mage.Sets/src/mage/cards/l/LaccolithTitan.java
index 8e92108948b..114cca570a3 100644
--- a/Mage.Sets/src/mage/cards/l/LaccolithTitan.java
+++ b/Mage.Sets/src/mage/cards/l/LaccolithTitan.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class LaccolithTitan extends CardImpl {
+public final class LaccolithTitan extends CardImpl {
public LaccolithTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LaccolithWarrior.java b/Mage.Sets/src/mage/cards/l/LaccolithWarrior.java
index 492d9a50e86..7d96169d5ec 100644
--- a/Mage.Sets/src/mage/cards/l/LaccolithWarrior.java
+++ b/Mage.Sets/src/mage/cards/l/LaccolithWarrior.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class LaccolithWarrior extends CardImpl {
+public final class LaccolithWarrior extends CardImpl {
public LaccolithWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LaccolithWhelp.java b/Mage.Sets/src/mage/cards/l/LaccolithWhelp.java
index 0d9b1553872..e7205b40748 100644
--- a/Mage.Sets/src/mage/cards/l/LaccolithWhelp.java
+++ b/Mage.Sets/src/mage/cards/l/LaccolithWhelp.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class LaccolithWhelp extends CardImpl {
+public final class LaccolithWhelp extends CardImpl {
public LaccolithWhelp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LaceWithMoonglove.java b/Mage.Sets/src/mage/cards/l/LaceWithMoonglove.java
index f3bcf443b49..09d24a4e09a 100644
--- a/Mage.Sets/src/mage/cards/l/LaceWithMoonglove.java
+++ b/Mage.Sets/src/mage/cards/l/LaceWithMoonglove.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class LaceWithMoonglove extends CardImpl {
+public final class LaceWithMoonglove extends CardImpl {
public LaceWithMoonglove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LadyCaleria.java b/Mage.Sets/src/mage/cards/l/LadyCaleria.java
index fc5aa91a672..e5a8468c07b 100644
--- a/Mage.Sets/src/mage/cards/l/LadyCaleria.java
+++ b/Mage.Sets/src/mage/cards/l/LadyCaleria.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author LoneFox
*/
-public class LadyCaleria extends CardImpl {
+public final class LadyCaleria extends CardImpl {
public LadyCaleria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LadyEvangela.java b/Mage.Sets/src/mage/cards/l/LadyEvangela.java
index d58acea8ae7..c02118fcf61 100644
--- a/Mage.Sets/src/mage/cards/l/LadyEvangela.java
+++ b/Mage.Sets/src/mage/cards/l/LadyEvangela.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LadyEvangela extends CardImpl {
+public final class LadyEvangela extends CardImpl {
public LadyEvangela(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LadyOrca.java b/Mage.Sets/src/mage/cards/l/LadyOrca.java
index 4844ebd5319..3c95b3f56f2 100644
--- a/Mage.Sets/src/mage/cards/l/LadyOrca.java
+++ b/Mage.Sets/src/mage/cards/l/LadyOrca.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class LadyOrca extends CardImpl {
+public final class LadyOrca extends CardImpl {
public LadyOrca(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LadySun.java b/Mage.Sets/src/mage/cards/l/LadySun.java
index 25643ba4cdc..33de7ea87db 100644
--- a/Mage.Sets/src/mage/cards/l/LadySun.java
+++ b/Mage.Sets/src/mage/cards/l/LadySun.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LadySun extends CardImpl {
+public final class LadySun extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LadyZhurongWarriorQueen.java b/Mage.Sets/src/mage/cards/l/LadyZhurongWarriorQueen.java
index b50046a68a2..1c0e97dd923 100644
--- a/Mage.Sets/src/mage/cards/l/LadyZhurongWarriorQueen.java
+++ b/Mage.Sets/src/mage/cards/l/LadyZhurongWarriorQueen.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class LadyZhurongWarriorQueen extends CardImpl {
+public final class LadyZhurongWarriorQueen extends CardImpl {
public LadyZhurongWarriorQueen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LagacLizard.java b/Mage.Sets/src/mage/cards/l/LagacLizard.java
index bdd86b56c2b..1981da44665 100644
--- a/Mage.Sets/src/mage/cards/l/LagacLizard.java
+++ b/Mage.Sets/src/mage/cards/l/LagacLizard.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LagacLizard extends CardImpl {
+public final class LagacLizard extends CardImpl {
public LagacLizard (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LagonnaBandElder.java b/Mage.Sets/src/mage/cards/l/LagonnaBandElder.java
index 17c73cc36eb..a6247c4dbd0 100644
--- a/Mage.Sets/src/mage/cards/l/LagonnaBandElder.java
+++ b/Mage.Sets/src/mage/cards/l/LagonnaBandElder.java
@@ -44,7 +44,7 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class LagonnaBandElder extends CardImpl {
+public final class LagonnaBandElder extends CardImpl {
public LagonnaBandElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LagonnaBandTrailblazer.java b/Mage.Sets/src/mage/cards/l/LagonnaBandTrailblazer.java
index af66fb97138..bc9c531f3d1 100644
--- a/Mage.Sets/src/mage/cards/l/LagonnaBandTrailblazer.java
+++ b/Mage.Sets/src/mage/cards/l/LagonnaBandTrailblazer.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class LagonnaBandTrailblazer extends CardImpl {
+public final class LagonnaBandTrailblazer extends CardImpl {
public LagonnaBandTrailblazer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LairDelve.java b/Mage.Sets/src/mage/cards/l/LairDelve.java
index 49ccbd2583a..ff27d9a133e 100644
--- a/Mage.Sets/src/mage/cards/l/LairDelve.java
+++ b/Mage.Sets/src/mage/cards/l/LairDelve.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author North
*/
-public class LairDelve extends CardImpl {
+public final class LairDelve extends CardImpl {
private static final FilterCard filter = new FilterCard("all creature and land cards");
diff --git a/Mage.Sets/src/mage/cards/l/LairwatchGiant.java b/Mage.Sets/src/mage/cards/l/LairwatchGiant.java
index b3c70d4e529..f436e9eb954 100644
--- a/Mage.Sets/src/mage/cards/l/LairwatchGiant.java
+++ b/Mage.Sets/src/mage/cards/l/LairwatchGiant.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author Styxo
*/
-public class LairwatchGiant extends CardImpl {
+public final class LairwatchGiant extends CardImpl {
public LairwatchGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LakeOfTheDead.java b/Mage.Sets/src/mage/cards/l/LakeOfTheDead.java
index af9b5305149..80da42c72fe 100644
--- a/Mage.Sets/src/mage/cards/l/LakeOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/l/LakeOfTheDead.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class LakeOfTheDead extends CardImpl {
+public final class LakeOfTheDead extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Swamp");
diff --git a/Mage.Sets/src/mage/cards/l/LambholtButcher.java b/Mage.Sets/src/mage/cards/l/LambholtButcher.java
index 70d5cc8998f..a2478e0ac1b 100644
--- a/Mage.Sets/src/mage/cards/l/LambholtButcher.java
+++ b/Mage.Sets/src/mage/cards/l/LambholtButcher.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class LambholtButcher extends CardImpl {
+public final class LambholtButcher extends CardImpl {
public LambholtButcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/l/LambholtElder.java b/Mage.Sets/src/mage/cards/l/LambholtElder.java
index 62f8cc4b7ef..e3499d494af 100644
--- a/Mage.Sets/src/mage/cards/l/LambholtElder.java
+++ b/Mage.Sets/src/mage/cards/l/LambholtElder.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author Loki
*/
-public class LambholtElder extends CardImpl {
+public final class LambholtElder extends CardImpl {
public LambholtElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LambholtPacifist.java b/Mage.Sets/src/mage/cards/l/LambholtPacifist.java
index 5cbd8b807ad..ec0516afec3 100644
--- a/Mage.Sets/src/mage/cards/l/LambholtPacifist.java
+++ b/Mage.Sets/src/mage/cards/l/LambholtPacifist.java
@@ -55,7 +55,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class LambholtPacifist extends CardImpl {
+public final class LambholtPacifist extends CardImpl {
public LambholtPacifist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LammastideWeave.java b/Mage.Sets/src/mage/cards/l/LammastideWeave.java
index a228d6e407d..f7104db87af 100644
--- a/Mage.Sets/src/mage/cards/l/LammastideWeave.java
+++ b/Mage.Sets/src/mage/cards/l/LammastideWeave.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class LammastideWeave extends CardImpl {
+public final class LammastideWeave extends CardImpl {
public LammastideWeave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LamplighterOfSelhoff.java b/Mage.Sets/src/mage/cards/l/LamplighterOfSelhoff.java
index e7fa70d4d46..d46d3e79365 100644
--- a/Mage.Sets/src/mage/cards/l/LamplighterOfSelhoff.java
+++ b/Mage.Sets/src/mage/cards/l/LamplighterOfSelhoff.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class LamplighterOfSelhoff extends CardImpl {
+public final class LamplighterOfSelhoff extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Zombie");
diff --git a/Mage.Sets/src/mage/cards/l/Lance.java b/Mage.Sets/src/mage/cards/l/Lance.java
index 0679d9551bf..415c7d15a08 100644
--- a/Mage.Sets/src/mage/cards/l/Lance.java
+++ b/Mage.Sets/src/mage/cards/l/Lance.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Lance extends CardImpl {
+public final class Lance extends CardImpl {
public Lance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LancersEnKor.java b/Mage.Sets/src/mage/cards/l/LancersEnKor.java
index 37e826cbad3..b25dec33b26 100644
--- a/Mage.Sets/src/mage/cards/l/LancersEnKor.java
+++ b/Mage.Sets/src/mage/cards/l/LancersEnKor.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class LancersEnKor extends CardImpl {
+public final class LancersEnKor extends CardImpl {
public LancersEnKor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LandCap.java b/Mage.Sets/src/mage/cards/l/LandCap.java
index 21bfa02db4a..49ac3687882 100644
--- a/Mage.Sets/src/mage/cards/l/LandCap.java
+++ b/Mage.Sets/src/mage/cards/l/LandCap.java
@@ -51,7 +51,7 @@ import mage.counters.CounterType;
*
* @author Luna Skyrise
*/
-public class LandCap extends CardImpl {
+public final class LandCap extends CardImpl {
public LandCap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/l/LandEquilibrium.java b/Mage.Sets/src/mage/cards/l/LandEquilibrium.java
index 871f7d49bf9..23733eee267 100644
--- a/Mage.Sets/src/mage/cards/l/LandEquilibrium.java
+++ b/Mage.Sets/src/mage/cards/l/LandEquilibrium.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class LandEquilibrium extends CardImpl {
+public final class LandEquilibrium extends CardImpl {
public LandEquilibrium(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LandGrant.java b/Mage.Sets/src/mage/cards/l/LandGrant.java
index 385d5d6b23c..9a5e2759f3d 100644
--- a/Mage.Sets/src/mage/cards/l/LandGrant.java
+++ b/Mage.Sets/src/mage/cards/l/LandGrant.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class LandGrant extends CardImpl {
+public final class LandGrant extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("Forest card");
diff --git a/Mage.Sets/src/mage/cards/l/LandLeeches.java b/Mage.Sets/src/mage/cards/l/LandLeeches.java
index 113479378ec..5ba4b1752d9 100644
--- a/Mage.Sets/src/mage/cards/l/LandLeeches.java
+++ b/Mage.Sets/src/mage/cards/l/LandLeeches.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LandLeeches extends CardImpl {
+public final class LandLeeches extends CardImpl {
public LandLeeches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LandTax.java b/Mage.Sets/src/mage/cards/l/LandTax.java
index f89e94e6b29..a3399ae6b54 100644
--- a/Mage.Sets/src/mage/cards/l/LandTax.java
+++ b/Mage.Sets/src/mage/cards/l/LandTax.java
@@ -44,14 +44,14 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class LandTax extends CardImpl {
+public final class LandTax extends CardImpl {
public LandTax(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
// At the beginning of your upkeep, if an opponent controls more lands than you, you may search your library for up to three basic land cards, reveal them, and put them into your hand. If you do, shuffle your library.
this.addAbility(new ConditionalTriggeredAbility(
- new BeginningOfUpkeepTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_BASIC_LAND_CARD), true), TargetController.YOU, true),
+ new BeginningOfUpkeepTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_CARD_BASIC_LAND), true), TargetController.YOU, true),
new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS),
"At the beginning of your upkeep, if an opponent controls more lands than you, you may search your library for up to three basic land cards, reveal them, and put them into your hand. If you do, shuffle your library"
));
diff --git a/Mage.Sets/src/mage/cards/l/LandbindRitual.java b/Mage.Sets/src/mage/cards/l/LandbindRitual.java
index 189a3ff7fbd..5de59c1a69a 100644
--- a/Mage.Sets/src/mage/cards/l/LandbindRitual.java
+++ b/Mage.Sets/src/mage/cards/l/LandbindRitual.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class LandbindRitual extends CardImpl {
+public final class LandbindRitual extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Plains you control");
diff --git a/Mage.Sets/src/mage/cards/l/LandoCalrissian.java b/Mage.Sets/src/mage/cards/l/LandoCalrissian.java
index 3742d8ed729..614f77eb52a 100644
--- a/Mage.Sets/src/mage/cards/l/LandoCalrissian.java
+++ b/Mage.Sets/src/mage/cards/l/LandoCalrissian.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class LandoCalrissian extends CardImpl {
+public final class LandoCalrissian extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Starship you control");
diff --git a/Mage.Sets/src/mage/cards/l/LandsEdge.java b/Mage.Sets/src/mage/cards/l/LandsEdge.java
index 16014035b01..b02435fd4f5 100644
--- a/Mage.Sets/src/mage/cards/l/LandsEdge.java
+++ b/Mage.Sets/src/mage/cards/l/LandsEdge.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
/**
* @author L_J
*/
-public class LandsEdge extends CardImpl {
+public final class LandsEdge extends CardImpl {
public LandsEdge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/Landslide.java b/Mage.Sets/src/mage/cards/l/Landslide.java
index ec41463b3eb..ba1d96d73d2 100644
--- a/Mage.Sets/src/mage/cards/l/Landslide.java
+++ b/Mage.Sets/src/mage/cards/l/Landslide.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author L_J
*/
-public class Landslide extends CardImpl {
+public final class Landslide extends CardImpl {
public Landslide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/l/Languish.java b/Mage.Sets/src/mage/cards/l/Languish.java
index f66030143c7..db70a701e98 100644
--- a/Mage.Sets/src/mage/cards/l/Languish.java
+++ b/Mage.Sets/src/mage/cards/l/Languish.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class Languish extends CardImpl {
+public final class Languish extends CardImpl {
public Languish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LanternKami.java b/Mage.Sets/src/mage/cards/l/LanternKami.java
index 4f4ae65d97d..59a1d18e806 100644
--- a/Mage.Sets/src/mage/cards/l/LanternKami.java
+++ b/Mage.Sets/src/mage/cards/l/LanternKami.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LanternKami extends CardImpl {
+public final class LanternKami extends CardImpl {
public LanternKami (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LanternLitGraveyard.java b/Mage.Sets/src/mage/cards/l/LanternLitGraveyard.java
index d2eea581c3d..7f992ac201b 100644
--- a/Mage.Sets/src/mage/cards/l/LanternLitGraveyard.java
+++ b/Mage.Sets/src/mage/cards/l/LanternLitGraveyard.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class LanternLitGraveyard extends CardImpl {
+public final class LanternLitGraveyard extends CardImpl {
public LanternLitGraveyard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/l/LanternOfInsight.java b/Mage.Sets/src/mage/cards/l/LanternOfInsight.java
index 2fef3b10056..b276ff26015 100644
--- a/Mage.Sets/src/mage/cards/l/LanternOfInsight.java
+++ b/Mage.Sets/src/mage/cards/l/LanternOfInsight.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author emerald000
*/
-public class LanternOfInsight extends CardImpl {
+public final class LanternOfInsight extends CardImpl {
public LanternOfInsight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/l/LanternScout.java b/Mage.Sets/src/mage/cards/l/LanternScout.java
index 83d22abe0dc..5c2ed213150 100644
--- a/Mage.Sets/src/mage/cards/l/LanternScout.java
+++ b/Mage.Sets/src/mage/cards/l/LanternScout.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class LanternScout extends CardImpl {
+public final class LanternScout extends CardImpl {
public LanternScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LanternSpirit.java b/Mage.Sets/src/mage/cards/l/LanternSpirit.java
index 131a97a5320..b573f9a07d9 100644
--- a/Mage.Sets/src/mage/cards/l/LanternSpirit.java
+++ b/Mage.Sets/src/mage/cards/l/LanternSpirit.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class LanternSpirit extends CardImpl {
+public final class LanternSpirit extends CardImpl {
public LanternSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LapisLazuliTalisman.java b/Mage.Sets/src/mage/cards/l/LapisLazuliTalisman.java
index 0f1014b9f55..9d649f1f027 100644
--- a/Mage.Sets/src/mage/cards/l/LapisLazuliTalisman.java
+++ b/Mage.Sets/src/mage/cards/l/LapisLazuliTalisman.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class LapisLazuliTalisman extends CardImpl {
+public final class LapisLazuliTalisman extends CardImpl {
private final static FilterSpell filter = new FilterSpell("a blue spell");
diff --git a/Mage.Sets/src/mage/cards/l/LapseOfCertainty.java b/Mage.Sets/src/mage/cards/l/LapseOfCertainty.java
index b3c96382bcd..0e25c35de4d 100644
--- a/Mage.Sets/src/mage/cards/l/LapseOfCertainty.java
+++ b/Mage.Sets/src/mage/cards/l/LapseOfCertainty.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class LapseOfCertainty extends CardImpl {
+public final class LapseOfCertainty extends CardImpl {
public LapseOfCertainty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LaquatussChampion.java b/Mage.Sets/src/mage/cards/l/LaquatussChampion.java
index 909d6a62314..28a41f26130 100644
--- a/Mage.Sets/src/mage/cards/l/LaquatussChampion.java
+++ b/Mage.Sets/src/mage/cards/l/LaquatussChampion.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class LaquatussChampion extends CardImpl {
+public final class LaquatussChampion extends CardImpl {
public LaquatussChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LaquatussCreativity.java b/Mage.Sets/src/mage/cards/l/LaquatussCreativity.java
index a8c7b4bad48..c10eeed6e37 100644
--- a/Mage.Sets/src/mage/cards/l/LaquatussCreativity.java
+++ b/Mage.Sets/src/mage/cards/l/LaquatussCreativity.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author cbt33
*/
-public class LaquatussCreativity extends CardImpl {
+public final class LaquatussCreativity extends CardImpl {
public LaquatussCreativity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LaquatussDisdain.java b/Mage.Sets/src/mage/cards/l/LaquatussDisdain.java
index f256da53ac3..50f1ed7f6f4 100644
--- a/Mage.Sets/src/mage/cards/l/LaquatussDisdain.java
+++ b/Mage.Sets/src/mage/cards/l/LaquatussDisdain.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author TheElk801
*/
-public class LaquatussDisdain extends CardImpl {
+public final class LaquatussDisdain extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell cast from a graveyard");
diff --git a/Mage.Sets/src/mage/cards/l/Larceny.java b/Mage.Sets/src/mage/cards/l/Larceny.java
index dcea8a9c6fc..7760015abdb 100644
--- a/Mage.Sets/src/mage/cards/l/Larceny.java
+++ b/Mage.Sets/src/mage/cards/l/Larceny.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class Larceny extends CardImpl {
+public final class Larceny extends CardImpl {
public Larceny(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LargerThanLife.java b/Mage.Sets/src/mage/cards/l/LargerThanLife.java
index 21494eba83f..e76e9be47db 100644
--- a/Mage.Sets/src/mage/cards/l/LargerThanLife.java
+++ b/Mage.Sets/src/mage/cards/l/LargerThanLife.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LargerThanLife extends CardImpl {
+public final class LargerThanLife extends CardImpl {
public LargerThanLife(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LashOfTheWhip.java b/Mage.Sets/src/mage/cards/l/LashOfTheWhip.java
index 463ca29ee4e..6983d583150 100644
--- a/Mage.Sets/src/mage/cards/l/LashOfTheWhip.java
+++ b/Mage.Sets/src/mage/cards/l/LashOfTheWhip.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LashOfTheWhip extends CardImpl {
+public final class LashOfTheWhip extends CardImpl {
public LashOfTheWhip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LashOut.java b/Mage.Sets/src/mage/cards/l/LashOut.java
index 61f8abd1b4d..1a2e13e010e 100644
--- a/Mage.Sets/src/mage/cards/l/LashOut.java
+++ b/Mage.Sets/src/mage/cards/l/LashOut.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LashOut extends CardImpl {
+public final class LashOut extends CardImpl {
public LashOut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/Lashknife.java b/Mage.Sets/src/mage/cards/l/Lashknife.java
index ef4128341c5..d99eb07c6cf 100644
--- a/Mage.Sets/src/mage/cards/l/Lashknife.java
+++ b/Mage.Sets/src/mage/cards/l/Lashknife.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class Lashknife extends CardImpl {
+public final class Lashknife extends CardImpl {
private static final FilterControlledPermanent plainsFilter = new FilterControlledPermanent("If you control a Plains");
private static final FilterControlledCreaturePermanent creatureFilter = new FilterControlledCreaturePermanent("an untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/l/LashknifeBarrier.java b/Mage.Sets/src/mage/cards/l/LashknifeBarrier.java
index 3f63e333079..7b61b36996b 100644
--- a/Mage.Sets/src/mage/cards/l/LashknifeBarrier.java
+++ b/Mage.Sets/src/mage/cards/l/LashknifeBarrier.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
* @author LoneFox
*/
-public class LashknifeBarrier extends CardImpl {
+public final class LashknifeBarrier extends CardImpl {
public LashknifeBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LashweedLurker.java b/Mage.Sets/src/mage/cards/l/LashweedLurker.java
index c09868b1082..895dfd852be 100644
--- a/Mage.Sets/src/mage/cards/l/LashweedLurker.java
+++ b/Mage.Sets/src/mage/cards/l/LashweedLurker.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class LashweedLurker extends CardImpl {
+public final class LashweedLurker extends CardImpl {
public LashweedLurker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/l/Lashwrithe.java b/Mage.Sets/src/mage/cards/l/Lashwrithe.java
index 3fb138d5f9e..6934ce25027 100644
--- a/Mage.Sets/src/mage/cards/l/Lashwrithe.java
+++ b/Mage.Sets/src/mage/cards/l/Lashwrithe.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class Lashwrithe extends CardImpl {
+public final class Lashwrithe extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control");
diff --git a/Mage.Sets/src/mage/cards/l/LastBreath.java b/Mage.Sets/src/mage/cards/l/LastBreath.java
index d77e4fac6d2..1ed47a2eef5 100644
--- a/Mage.Sets/src/mage/cards/l/LastBreath.java
+++ b/Mage.Sets/src/mage/cards/l/LastBreath.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class LastBreath extends CardImpl {
+public final class LastBreath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LastCaress.java b/Mage.Sets/src/mage/cards/l/LastCaress.java
index e4652239ec5..69f60f831fe 100644
--- a/Mage.Sets/src/mage/cards/l/LastCaress.java
+++ b/Mage.Sets/src/mage/cards/l/LastCaress.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class LastCaress extends CardImpl {
+public final class LastCaress extends CardImpl {
public LastCaress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LastChance.java b/Mage.Sets/src/mage/cards/l/LastChance.java
index 2b49a5040c3..67529a4f180 100644
--- a/Mage.Sets/src/mage/cards/l/LastChance.java
+++ b/Mage.Sets/src/mage/cards/l/LastChance.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LoneFox
*/
-public class LastChance extends CardImpl {
+public final class LastChance extends CardImpl {
public LastChance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LastDitchEffort.java b/Mage.Sets/src/mage/cards/l/LastDitchEffort.java
index e5a9aaf187d..9a80418346a 100644
--- a/Mage.Sets/src/mage/cards/l/LastDitchEffort.java
+++ b/Mage.Sets/src/mage/cards/l/LastDitchEffort.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BursegSardaukar
*/
-public class LastDitchEffort extends CardImpl {
+public final class LastDitchEffort extends CardImpl {
public LastDitchEffort(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LastGasp.java b/Mage.Sets/src/mage/cards/l/LastGasp.java
index acd303a0276..bc72317a3df 100644
--- a/Mage.Sets/src/mage/cards/l/LastGasp.java
+++ b/Mage.Sets/src/mage/cards/l/LastGasp.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class LastGasp extends CardImpl {
+public final class LastGasp extends CardImpl {
public LastGasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LastKiss.java b/Mage.Sets/src/mage/cards/l/LastKiss.java
index 5624c30f473..96dad8b9b92 100644
--- a/Mage.Sets/src/mage/cards/l/LastKiss.java
+++ b/Mage.Sets/src/mage/cards/l/LastKiss.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class LastKiss extends CardImpl {
+public final class LastKiss extends CardImpl {
public LastKiss (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LastLaugh.java b/Mage.Sets/src/mage/cards/l/LastLaugh.java
index 2a2c1238d55..2b26c3233e1 100644
--- a/Mage.Sets/src/mage/cards/l/LastLaugh.java
+++ b/Mage.Sets/src/mage/cards/l/LastLaugh.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class LastLaugh extends CardImpl {
+public final class LastLaugh extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a permanent other than Last Laugh");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LastOneStanding.java b/Mage.Sets/src/mage/cards/l/LastOneStanding.java
new file mode 100644
index 00000000000..5d1bd7d9800
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/l/LastOneStanding.java
@@ -0,0 +1,97 @@
+/*
+ * 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.List;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.DestroyAllEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.filter.StaticFilters;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.permanent.PermanentIdPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.util.RandomUtil;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class LastOneStanding extends CardImpl {
+
+ public LastOneStanding(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{R}");
+
+ // Choose a creature at random, then destroy the rest.
+ this.getSpellAbility().addEffect(new LastOneStandingEffect());
+ }
+
+ public LastOneStanding(final LastOneStanding card) {
+ super(card);
+ }
+
+ @Override
+ public LastOneStanding copy() {
+ return new LastOneStanding(this);
+ }
+}
+
+class LastOneStandingEffect extends OneShotEffect {
+
+ LastOneStandingEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Choose a creature at random, then destroy the rest.";
+ }
+
+ LastOneStandingEffect(final LastOneStandingEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public LastOneStandingEffect copy() {
+ return new LastOneStandingEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ List creatureList = game.getBattlefield().getActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, source.getControllerId(), game);
+ if (creatureList.size() < 2) {
+ return true;
+ }
+ int toSave = RandomUtil.nextInt(creatureList.size());
+ FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ filter.add(Predicates.not(new PermanentIdPredicate(creatureList.get(toSave).getId())));
+ return new DestroyAllEffect(filter).apply(game, source);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/l/LastRites.java b/Mage.Sets/src/mage/cards/l/LastRites.java
index 430774a983a..fe7147cbf8d 100644
--- a/Mage.Sets/src/mage/cards/l/LastRites.java
+++ b/Mage.Sets/src/mage/cards/l/LastRites.java
@@ -54,10 +54,10 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class LastRites extends CardImpl {
+public final class LastRites extends CardImpl {
public LastRites(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
// Discard any number of cards. Target player reveals their hand, then you choose a nonland card from it for each card discarded this way. That player discards those cards.
this.getSpellAbility().addEffect(new LastRitesEffect());
@@ -107,16 +107,12 @@ class LastRitesEffect extends OneShotEffect {
controller.discard(card, source, game);
}
}
- if (targetPlayer != null) {
- FilterCard filter = new FilterCard((discardCount > 1 ? "" : "a") + " nonland card" + (discardCount > 1 ? "s" : ""));
- filter.add(Predicates.not(new CardTypePredicate(CardType.LAND)));
- StaticValue discardValue = new StaticValue(discardCount);
- Effect effect = new DiscardCardYouChooseTargetEffect(discardValue, filter, TargetController.ANY);
- effect.setTargetPointer(new FixedTarget(targetPlayer.getId()));
- effect.apply(game, source);
- } else {
- return false;
- }
+ FilterCard filter = new FilterCard((discardCount > 1 ? "" : "a") + " nonland card" + (discardCount > 1 ? "s" : ""));
+ filter.add(Predicates.not(new CardTypePredicate(CardType.LAND)));
+ StaticValue discardValue = new StaticValue(discardCount);
+ Effect effect = new DiscardCardYouChooseTargetEffect(discardValue, filter, TargetController.ANY);
+ effect.setTargetPointer(new FixedTarget(targetPlayer.getId()));
+ effect.apply(game, source);
}
return true;
}
diff --git a/Mage.Sets/src/mage/cards/l/LastStand.java b/Mage.Sets/src/mage/cards/l/LastStand.java
index 88a180260fa..410df4a97e1 100644
--- a/Mage.Sets/src/mage/cards/l/LastStand.java
+++ b/Mage.Sets/src/mage/cards/l/LastStand.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class LastStand extends CardImpl {
+public final class LastStand extends CardImpl {
public LastStand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LastThoughts.java b/Mage.Sets/src/mage/cards/l/LastThoughts.java
index 9aa38076fac..3312ea204ed 100644
--- a/Mage.Sets/src/mage/cards/l/LastThoughts.java
+++ b/Mage.Sets/src/mage/cards/l/LastThoughts.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class LastThoughts extends CardImpl {
+public final class LastThoughts extends CardImpl {
public LastThoughts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LastWord.java b/Mage.Sets/src/mage/cards/l/LastWord.java
index 8e6fbab3ae9..7521721dc09 100644
--- a/Mage.Sets/src/mage/cards/l/LastWord.java
+++ b/Mage.Sets/src/mage/cards/l/LastWord.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class LastWord extends CardImpl {
+public final class LastWord extends CardImpl {
public LastWord (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LatNamsLegacy.java b/Mage.Sets/src/mage/cards/l/LatNamsLegacy.java
index a4305791499..72e5d0c757e 100644
--- a/Mage.Sets/src/mage/cards/l/LatNamsLegacy.java
+++ b/Mage.Sets/src/mage/cards/l/LatNamsLegacy.java
@@ -48,7 +48,7 @@ import mage.target.TargetCard;
*
* @author TheElk801
*/
-public class LatNamsLegacy extends CardImpl {
+public final class LatNamsLegacy extends CardImpl {
public LatNamsLegacy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LatchSeeker.java b/Mage.Sets/src/mage/cards/l/LatchSeeker.java
index 56bba3577b9..6f57ede7b21 100644
--- a/Mage.Sets/src/mage/cards/l/LatchSeeker.java
+++ b/Mage.Sets/src/mage/cards/l/LatchSeeker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LatchSeeker extends CardImpl {
+public final class LatchSeeker extends CardImpl {
public LatchSeeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LatchkeyFaerie.java b/Mage.Sets/src/mage/cards/l/LatchkeyFaerie.java
index 31fb055fd20..8b6bf083693 100644
--- a/Mage.Sets/src/mage/cards/l/LatchkeyFaerie.java
+++ b/Mage.Sets/src/mage/cards/l/LatchkeyFaerie.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class LatchkeyFaerie extends CardImpl {
+public final class LatchkeyFaerie extends CardImpl {
public LatchkeyFaerie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LathnuHellion.java b/Mage.Sets/src/mage/cards/l/LathnuHellion.java
index 8ad0b510791..52680dbea3a 100644
--- a/Mage.Sets/src/mage/cards/l/LathnuHellion.java
+++ b/Mage.Sets/src/mage/cards/l/LathnuHellion.java
@@ -47,7 +47,7 @@ import mage.constants.TargetController;
*
* @author cg5
*/
-public class LathnuHellion extends CardImpl {
+public final class LathnuHellion extends CardImpl {
public LathnuHellion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LathnuSailback.java b/Mage.Sets/src/mage/cards/l/LathnuSailback.java
index 8f8a2e70dc2..a1478b14c2c 100644
--- a/Mage.Sets/src/mage/cards/l/LathnuSailback.java
+++ b/Mage.Sets/src/mage/cards/l/LathnuSailback.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class LathnuSailback extends CardImpl {
+public final class LathnuSailback extends CardImpl {
public LathnuSailback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LatullaKeldonOverseer.java b/Mage.Sets/src/mage/cards/l/LatullaKeldonOverseer.java
index 71fb2cc768d..29be676cf43 100644
--- a/Mage.Sets/src/mage/cards/l/LatullaKeldonOverseer.java
+++ b/Mage.Sets/src/mage/cards/l/LatullaKeldonOverseer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class LatullaKeldonOverseer extends CardImpl {
+public final class LatullaKeldonOverseer extends CardImpl {
public LatullaKeldonOverseer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LatullasOrders.java b/Mage.Sets/src/mage/cards/l/LatullasOrders.java
index d11ef2b5124..9a3394b02a6 100644
--- a/Mage.Sets/src/mage/cards/l/LatullasOrders.java
+++ b/Mage.Sets/src/mage/cards/l/LatullasOrders.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class LatullasOrders extends CardImpl {
+public final class LatullasOrders extends CardImpl {
public LatullasOrders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/Launch.java b/Mage.Sets/src/mage/cards/l/Launch.java
index dfd5e0e47e6..d56a12597fc 100644
--- a/Mage.Sets/src/mage/cards/l/Launch.java
+++ b/Mage.Sets/src/mage/cards/l/Launch.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Derpthemeus
*/
-public class Launch extends CardImpl {
+public final class Launch extends CardImpl {
public Launch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LaunchParty.java b/Mage.Sets/src/mage/cards/l/LaunchParty.java
index b38c16c8ffc..195f9e219c8 100644
--- a/Mage.Sets/src/mage/cards/l/LaunchParty.java
+++ b/Mage.Sets/src/mage/cards/l/LaunchParty.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LaunchParty extends CardImpl {
+public final class LaunchParty extends CardImpl {
public LaunchParty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LaunchTheFleet.java b/Mage.Sets/src/mage/cards/l/LaunchTheFleet.java
index 8a19cbb2d2a..349f15176a0 100644
--- a/Mage.Sets/src/mage/cards/l/LaunchTheFleet.java
+++ b/Mage.Sets/src/mage/cards/l/LaunchTheFleet.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LaunchTheFleet extends CardImpl {
+public final class LaunchTheFleet extends CardImpl {
public LaunchTheFleet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LavaAxe.java b/Mage.Sets/src/mage/cards/l/LavaAxe.java
index 11a3b5f4997..4bb3b5301b7 100644
--- a/Mage.Sets/src/mage/cards/l/LavaAxe.java
+++ b/Mage.Sets/src/mage/cards/l/LavaAxe.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LavaAxe extends CardImpl {
+public final class LavaAxe extends CardImpl {
public LavaAxe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LavaBlister.java b/Mage.Sets/src/mage/cards/l/LavaBlister.java
index f5130d1ff18..8972760952a 100644
--- a/Mage.Sets/src/mage/cards/l/LavaBlister.java
+++ b/Mage.Sets/src/mage/cards/l/LavaBlister.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author Styxo
*/
-public class LavaBlister extends CardImpl {
+public final class LavaBlister extends CardImpl {
public LavaBlister(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LavaDart.java b/Mage.Sets/src/mage/cards/l/LavaDart.java
index c191d8abe40..1a565bb8ee5 100644
--- a/Mage.Sets/src/mage/cards/l/LavaDart.java
+++ b/Mage.Sets/src/mage/cards/l/LavaDart.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class LavaDart extends CardImpl {
+public final class LavaDart extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Mountain");
diff --git a/Mage.Sets/src/mage/cards/l/LavaFieldOverlord.java b/Mage.Sets/src/mage/cards/l/LavaFieldOverlord.java
new file mode 100644
index 00000000000..f78ff1a9ac1
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/l/LavaFieldOverlord.java
@@ -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.l;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.AssistAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.filter.StaticFilters;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class LavaFieldOverlord extends CardImpl {
+
+ public LavaFieldOverlord(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{7}{R}{R}");
+
+ this.subtype.add(SubType.DRAGON);
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(4);
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // When Lava-Field Overlord enters the battlefield, it deals 4 damage to target creature an opponent controls.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(4), false);
+ ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
+ this.addAbility(ability);
+ }
+
+ public LavaFieldOverlord(final LavaFieldOverlord card) {
+ super(card);
+ }
+
+ @Override
+ public LavaFieldOverlord copy() {
+ return new LavaFieldOverlord(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/l/LavaFlow.java b/Mage.Sets/src/mage/cards/l/LavaFlow.java
index ec065d31445..c228d9e236f 100644
--- a/Mage.Sets/src/mage/cards/l/LavaFlow.java
+++ b/Mage.Sets/src/mage/cards/l/LavaFlow.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author ilcartographer
*/
-public class LavaFlow extends CardImpl {
+public final class LavaFlow extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or land");
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), new CardTypePredicate(CardType.LAND)));
diff --git a/Mage.Sets/src/mage/cards/l/LavaHounds.java b/Mage.Sets/src/mage/cards/l/LavaHounds.java
index 23f20e2b587..e219435a9e7 100644
--- a/Mage.Sets/src/mage/cards/l/LavaHounds.java
+++ b/Mage.Sets/src/mage/cards/l/LavaHounds.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class LavaHounds extends CardImpl {
+public final class LavaHounds extends CardImpl {
public LavaHounds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LavaRunner.java b/Mage.Sets/src/mage/cards/l/LavaRunner.java
index 128ab9a560d..f9eac4bd0c8 100644
--- a/Mage.Sets/src/mage/cards/l/LavaRunner.java
+++ b/Mage.Sets/src/mage/cards/l/LavaRunner.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
* @author LoneFox
*/
-public class LavaRunner extends CardImpl {
+public final class LavaRunner extends CardImpl {
public LavaRunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LavaSpike.java b/Mage.Sets/src/mage/cards/l/LavaSpike.java
index 68cd5405815..7a1a1760022 100644
--- a/Mage.Sets/src/mage/cards/l/LavaSpike.java
+++ b/Mage.Sets/src/mage/cards/l/LavaSpike.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class LavaSpike extends CardImpl {
+public final class LavaSpike extends CardImpl {
public LavaSpike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LavaTubes.java b/Mage.Sets/src/mage/cards/l/LavaTubes.java
index d90e070820a..c8f00158377 100644
--- a/Mage.Sets/src/mage/cards/l/LavaTubes.java
+++ b/Mage.Sets/src/mage/cards/l/LavaTubes.java
@@ -51,7 +51,7 @@ import mage.counters.CounterType;
*
* @author Luna Skyrise
*/
-public class LavaTubes extends CardImpl {
+public final class LavaTubes extends CardImpl {
public LavaTubes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/l/LavaZombie.java b/Mage.Sets/src/mage/cards/l/LavaZombie.java
index 560484b26ef..ec12adbf46a 100644
--- a/Mage.Sets/src/mage/cards/l/LavaZombie.java
+++ b/Mage.Sets/src/mage/cards/l/LavaZombie.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*/
-public class LavaZombie extends CardImpl {
+public final class LavaZombie extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black or red creature you control");
diff --git a/Mage.Sets/src/mage/cards/l/LavaballTrap.java b/Mage.Sets/src/mage/cards/l/LavaballTrap.java
index 1074b49c8cb..bbc92d738b8 100644
--- a/Mage.Sets/src/mage/cards/l/LavaballTrap.java
+++ b/Mage.Sets/src/mage/cards/l/LavaballTrap.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class LavaballTrap extends CardImpl {
+public final class LavaballTrap extends CardImpl {
public LavaballTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{6}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LavabornMuse.java b/Mage.Sets/src/mage/cards/l/LavabornMuse.java
index 5e24a521657..dd87b312c80 100644
--- a/Mage.Sets/src/mage/cards/l/LavabornMuse.java
+++ b/Mage.Sets/src/mage/cards/l/LavabornMuse.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author ilcartographer
*/
-public class LavabornMuse extends CardImpl {
+public final class LavabornMuse extends CardImpl {
public LavabornMuse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LavaclawReaches.java b/Mage.Sets/src/mage/cards/l/LavaclawReaches.java
index 7fe77f55445..282c23e501b 100644
--- a/Mage.Sets/src/mage/cards/l/LavaclawReaches.java
+++ b/Mage.Sets/src/mage/cards/l/LavaclawReaches.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.Token;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LavaclawReaches extends CardImpl {
+public final class LavaclawReaches extends CardImpl {
public LavaclawReaches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/l/LavacoreElemental.java b/Mage.Sets/src/mage/cards/l/LavacoreElemental.java
index ad655f95007..a127ccbe85a 100644
--- a/Mage.Sets/src/mage/cards/l/LavacoreElemental.java
+++ b/Mage.Sets/src/mage/cards/l/LavacoreElemental.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class LavacoreElemental extends CardImpl {
+public final class LavacoreElemental extends CardImpl {
public LavacoreElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LavafumeInvoker.java b/Mage.Sets/src/mage/cards/l/LavafumeInvoker.java
index d17b802a35f..9bf358807a1 100644
--- a/Mage.Sets/src/mage/cards/l/LavafumeInvoker.java
+++ b/Mage.Sets/src/mage/cards/l/LavafumeInvoker.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class LavafumeInvoker extends CardImpl {
+public final class LavafumeInvoker extends CardImpl {
public LavafumeInvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/Lavalanche.java b/Mage.Sets/src/mage/cards/l/Lavalanche.java
index c9ba9c8874c..357ab02748d 100644
--- a/Mage.Sets/src/mage/cards/l/Lavalanche.java
+++ b/Mage.Sets/src/mage/cards/l/Lavalanche.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author jeffwadsworth
*/
-public class Lavalanche extends CardImpl {
+public final class Lavalanche extends CardImpl {
public Lavalanche(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LavamancersSkill.java b/Mage.Sets/src/mage/cards/l/LavamancersSkill.java
index 3905a7dc75e..a90953f28da 100644
--- a/Mage.Sets/src/mage/cards/l/LavamancersSkill.java
+++ b/Mage.Sets/src/mage/cards/l/LavamancersSkill.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author HanClinto
*/
-public class LavamancersSkill extends CardImpl {
+public final class LavamancersSkill extends CardImpl {
public LavamancersSkill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LavastepRaider.java b/Mage.Sets/src/mage/cards/l/LavastepRaider.java
index 957e8c93c4c..6c66863aa61 100644
--- a/Mage.Sets/src/mage/cards/l/LavastepRaider.java
+++ b/Mage.Sets/src/mage/cards/l/LavastepRaider.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class LavastepRaider extends CardImpl {
+public final class LavastepRaider extends CardImpl {
public LavastepRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LaviniaOfTheTenth.java b/Mage.Sets/src/mage/cards/l/LaviniaOfTheTenth.java
index 01a3c04799b..efc6c2e03ff 100644
--- a/Mage.Sets/src/mage/cards/l/LaviniaOfTheTenth.java
+++ b/Mage.Sets/src/mage/cards/l/LaviniaOfTheTenth.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class LaviniaOfTheTenth extends CardImpl {
+public final class LaviniaOfTheTenth extends CardImpl {
private static final FilterPermanent filterDetain = new FilterPermanent("each nonland permanent your opponents control with converted mana cost 4 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/l/Lawbringer.java b/Mage.Sets/src/mage/cards/l/Lawbringer.java
index 8c0fffa79af..ffda6a5049f 100644
--- a/Mage.Sets/src/mage/cards/l/Lawbringer.java
+++ b/Mage.Sets/src/mage/cards/l/Lawbringer.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Lawbringer extends CardImpl {
+public final class Lawbringer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red creature");
diff --git a/Mage.Sets/src/mage/cards/l/LawlessBroker.java b/Mage.Sets/src/mage/cards/l/LawlessBroker.java
index 16c0ea911e8..33c77ab39cf 100644
--- a/Mage.Sets/src/mage/cards/l/LawlessBroker.java
+++ b/Mage.Sets/src/mage/cards/l/LawlessBroker.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class LawlessBroker extends CardImpl {
+public final class LawlessBroker extends CardImpl {
public LawlessBroker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LayBare.java b/Mage.Sets/src/mage/cards/l/LayBare.java
index 1adc09c0a5d..07c7be66157 100644
--- a/Mage.Sets/src/mage/cards/l/LayBare.java
+++ b/Mage.Sets/src/mage/cards/l/LayBare.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class LayBare extends CardImpl {
+public final class LayBare extends CardImpl {
public LayBare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LayBareTheHeart.java b/Mage.Sets/src/mage/cards/l/LayBareTheHeart.java
index 7c4c63a577e..1215eff6f1c 100644
--- a/Mage.Sets/src/mage/cards/l/LayBareTheHeart.java
+++ b/Mage.Sets/src/mage/cards/l/LayBareTheHeart.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class LayBareTheHeart extends CardImpl {
+public final class LayBareTheHeart extends CardImpl {
private static final FilterCard filter = new FilterCard("nonlegendary, nonland card");
diff --git a/Mage.Sets/src/mage/cards/l/LayClaim.java b/Mage.Sets/src/mage/cards/l/LayClaim.java
index dd843b55e4b..dc1506e8f4c 100644
--- a/Mage.Sets/src/mage/cards/l/LayClaim.java
+++ b/Mage.Sets/src/mage/cards/l/LayClaim.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class LayClaim extends CardImpl {
+public final class LayClaim extends CardImpl {
public LayClaim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LayOfTheLand.java b/Mage.Sets/src/mage/cards/l/LayOfTheLand.java
index deb608fa063..219870d9444 100644
--- a/Mage.Sets/src/mage/cards/l/LayOfTheLand.java
+++ b/Mage.Sets/src/mage/cards/l/LayOfTheLand.java
@@ -39,7 +39,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class LayOfTheLand extends CardImpl {
+public final class LayOfTheLand extends CardImpl {
public LayOfTheLand(UUID ownerId, CardSetInfo setInfo) {
@@ -47,7 +47,7 @@ public class LayOfTheLand extends CardImpl {
// Search your library for a basic land card, reveal that card, and put it into your hand. Then shuffle your library.
- this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true));
}
public LayOfTheLand(final LayOfTheLand card) {
diff --git a/Mage.Sets/src/mage/cards/l/LayWaste.java b/Mage.Sets/src/mage/cards/l/LayWaste.java
index 528e3c98934..9b5129dcc89 100644
--- a/Mage.Sets/src/mage/cards/l/LayWaste.java
+++ b/Mage.Sets/src/mage/cards/l/LayWaste.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Backfir3
*/
-public class LayWaste extends CardImpl {
+public final class LayWaste extends CardImpl {
public LayWaste(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LazavDimirMastermind.java b/Mage.Sets/src/mage/cards/l/LazavDimirMastermind.java
index 57176ba918e..9a72a9e05da 100644
--- a/Mage.Sets/src/mage/cards/l/LazavDimirMastermind.java
+++ b/Mage.Sets/src/mage/cards/l/LazavDimirMastermind.java
@@ -51,7 +51,7 @@ import mage.util.functions.ApplyToPermanent;
*
* @author jeffwadsworth
*/
-public class LazavDimirMastermind extends CardImpl {
+public final class LazavDimirMastermind extends CardImpl {
public LazavDimirMastermind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{U}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LeadAstray.java b/Mage.Sets/src/mage/cards/l/LeadAstray.java
index 98fa6c26b79..959103be9e9 100644
--- a/Mage.Sets/src/mage/cards/l/LeadAstray.java
+++ b/Mage.Sets/src/mage/cards/l/LeadAstray.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LeadAstray extends CardImpl {
+public final class LeadAstray extends CardImpl {
public LeadAstray(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java b/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java
index 765c67ef8f8..355b123fca7 100644
--- a/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java
+++ b/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class LeadBellyChimera extends CardImpl {
+public final class LeadBellyChimera extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature");
diff --git a/Mage.Sets/src/mage/cards/l/LeadByExample.java b/Mage.Sets/src/mage/cards/l/LeadByExample.java
index 170f94440a4..ea6c4571a25 100644
--- a/Mage.Sets/src/mage/cards/l/LeadByExample.java
+++ b/Mage.Sets/src/mage/cards/l/LeadByExample.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class LeadByExample extends CardImpl {
+public final class LeadByExample extends CardImpl {
public LeadByExample(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LeadGolem.java b/Mage.Sets/src/mage/cards/l/LeadGolem.java
index 1bc33273abf..3f1270f9968 100644
--- a/Mage.Sets/src/mage/cards/l/LeadGolem.java
+++ b/Mage.Sets/src/mage/cards/l/LeadGolem.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Quercitron
*/
-public class LeadGolem extends CardImpl {
+public final class LeadGolem extends CardImpl {
public LeadGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/l/LeadTheStampede.java b/Mage.Sets/src/mage/cards/l/LeadTheStampede.java
index 9e38e77c78f..87f649ab092 100644
--- a/Mage.Sets/src/mage/cards/l/LeadTheStampede.java
+++ b/Mage.Sets/src/mage/cards/l/LeadTheStampede.java
@@ -39,7 +39,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author North
*/
-public class LeadTheStampede extends CardImpl {
+public final class LeadTheStampede extends CardImpl {
private static final FilterCard filter = new FilterCard("any number of creature cards");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LeadenFists.java b/Mage.Sets/src/mage/cards/l/LeadenFists.java
index 209051ae981..6833471082c 100644
--- a/Mage.Sets/src/mage/cards/l/LeadenFists.java
+++ b/Mage.Sets/src/mage/cards/l/LeadenFists.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LeadenFists extends CardImpl {
+public final class LeadenFists extends CardImpl {
public LeadenFists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LeadenMyr.java b/Mage.Sets/src/mage/cards/l/LeadenMyr.java
index 1bd9d44b92b..7909dd4dd21 100644
--- a/Mage.Sets/src/mage/cards/l/LeadenMyr.java
+++ b/Mage.Sets/src/mage/cards/l/LeadenMyr.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LeadenMyr extends CardImpl {
+public final class LeadenMyr extends CardImpl {
public LeadenMyr (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/l/LeafArrow.java b/Mage.Sets/src/mage/cards/l/LeafArrow.java
index ca6869be926..b83e6413280 100644
--- a/Mage.Sets/src/mage/cards/l/LeafArrow.java
+++ b/Mage.Sets/src/mage/cards/l/LeafArrow.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class LeafArrow extends CardImpl {
+public final class LeafArrow extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/l/LeafCrownedElder.java b/Mage.Sets/src/mage/cards/l/LeafCrownedElder.java
index 0680363bb10..ec919c375ec 100644
--- a/Mage.Sets/src/mage/cards/l/LeafCrownedElder.java
+++ b/Mage.Sets/src/mage/cards/l/LeafCrownedElder.java
@@ -29,6 +29,7 @@ package mage.cards.l;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.abilityword.KinshipAbility;
import mage.abilities.effects.OneShotEffect;
@@ -36,8 +37,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.game.Game;
import mage.players.Player;
@@ -45,10 +46,10 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class LeafCrownedElder extends CardImpl {
+public final class LeafCrownedElder extends CardImpl {
public LeafCrownedElder(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
this.subtype.add(SubType.TREEFOLK);
this.subtype.add(SubType.SHAMAN);
@@ -88,7 +89,7 @@ class LeafCrownedElderPlayEffect extends OneShotEffect {
Card card = game.getCard(getTargetPointer().getFirst(game, source));
if (controller != null && card != null) {
if (controller.chooseUse(Outcome.PlayForFree, "Play " + card.getIdName() + " without paying its mana cost?", source, game)) {
- controller.playCard(card, game, true, true);
+ controller.playCard(card, game, true, true, new MageObjectReference(source.getSourceObject(game), game));
}
return true;
}
diff --git a/Mage.Sets/src/mage/cards/l/LeafDancer.java b/Mage.Sets/src/mage/cards/l/LeafDancer.java
index 6b41c5d50ff..67205961c36 100644
--- a/Mage.Sets/src/mage/cards/l/LeafDancer.java
+++ b/Mage.Sets/src/mage/cards/l/LeafDancer.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LeafDancer extends CardImpl {
+public final class LeafDancer extends CardImpl {
public LeafDancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LeafGilder.java b/Mage.Sets/src/mage/cards/l/LeafGilder.java
index 201d5d5c080..4da65103ec9 100644
--- a/Mage.Sets/src/mage/cards/l/LeafGilder.java
+++ b/Mage.Sets/src/mage/cards/l/LeafGilder.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LeafGilder extends CardImpl {
+public final class LeafGilder extends CardImpl {
public LeafGilder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LeafcrownDryad.java b/Mage.Sets/src/mage/cards/l/LeafcrownDryad.java
index c9368e54add..c94b012a281 100644
--- a/Mage.Sets/src/mage/cards/l/LeafcrownDryad.java
+++ b/Mage.Sets/src/mage/cards/l/LeafcrownDryad.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class LeafcrownDryad extends CardImpl {
+public final class LeafcrownDryad extends CardImpl {
public LeafcrownDryad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LeafdrakeRoost.java b/Mage.Sets/src/mage/cards/l/LeafdrakeRoost.java
index 288bfb792a2..70c68d92a8b 100644
--- a/Mage.Sets/src/mage/cards/l/LeafdrakeRoost.java
+++ b/Mage.Sets/src/mage/cards/l/LeafdrakeRoost.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class LeafdrakeRoost extends CardImpl {
+public final class LeafdrakeRoost extends CardImpl {
public LeafdrakeRoost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/Leap.java b/Mage.Sets/src/mage/cards/l/Leap.java
index 30166aa4ad6..4729aebc258 100644
--- a/Mage.Sets/src/mage/cards/l/Leap.java
+++ b/Mage.Sets/src/mage/cards/l/Leap.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Leap extends CardImpl {
+public final class Leap extends CardImpl {
public Leap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LeapOfFaith.java b/Mage.Sets/src/mage/cards/l/LeapOfFaith.java
index 0efadbb558c..04161152e77 100644
--- a/Mage.Sets/src/mage/cards/l/LeapOfFaith.java
+++ b/Mage.Sets/src/mage/cards/l/LeapOfFaith.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author noxx
*/
-public class LeapOfFaith extends CardImpl {
+public final class LeapOfFaith extends CardImpl {
public LeapOfFaith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LeapOfFlame.java b/Mage.Sets/src/mage/cards/l/LeapOfFlame.java
index 90d3296bae4..644dfcd5b3b 100644
--- a/Mage.Sets/src/mage/cards/l/LeapOfFlame.java
+++ b/Mage.Sets/src/mage/cards/l/LeapOfFlame.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LeapOfFlame extends CardImpl {
+public final class LeapOfFlame extends CardImpl {
public LeapOfFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LeapingLizard.java b/Mage.Sets/src/mage/cards/l/LeapingLizard.java
index 04d857dcce5..34c2083caf3 100644
--- a/Mage.Sets/src/mage/cards/l/LeapingLizard.java
+++ b/Mage.Sets/src/mage/cards/l/LeapingLizard.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class LeapingLizard extends CardImpl {
+public final class LeapingLizard extends CardImpl {
public LeapingLizard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LeapingMaster.java b/Mage.Sets/src/mage/cards/l/LeapingMaster.java
index 1ec4f4c9f42..75fcf7f536f 100644
--- a/Mage.Sets/src/mage/cards/l/LeapingMaster.java
+++ b/Mage.Sets/src/mage/cards/l/LeapingMaster.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class LeapingMaster extends CardImpl {
+public final class LeapingMaster extends CardImpl {
public LeapingMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LearnFromThePast.java b/Mage.Sets/src/mage/cards/l/LearnFromThePast.java
index fea5967e705..8a301a02407 100644
--- a/Mage.Sets/src/mage/cards/l/LearnFromThePast.java
+++ b/Mage.Sets/src/mage/cards/l/LearnFromThePast.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class LearnFromThePast extends CardImpl {
+public final class LearnFromThePast extends CardImpl {
public LearnFromThePast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/Leashling.java b/Mage.Sets/src/mage/cards/l/Leashling.java
index 7f9d242fe31..35222d81ba6 100644
--- a/Mage.Sets/src/mage/cards/l/Leashling.java
+++ b/Mage.Sets/src/mage/cards/l/Leashling.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Quercitron
*/
-public class Leashling extends CardImpl {
+public final class Leashling extends CardImpl {
public Leashling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/l/LeatherbackBaloth.java b/Mage.Sets/src/mage/cards/l/LeatherbackBaloth.java
index 53206255677..624b56a10c5 100644
--- a/Mage.Sets/src/mage/cards/l/LeatherbackBaloth.java
+++ b/Mage.Sets/src/mage/cards/l/LeatherbackBaloth.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LeatherbackBaloth extends CardImpl {
+public final class LeatherbackBaloth extends CardImpl {
public LeatherbackBaloth (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LeaveChance.java b/Mage.Sets/src/mage/cards/l/LeaveChance.java
index c90da7714b3..4ea4f14298a 100644
--- a/Mage.Sets/src/mage/cards/l/LeaveChance.java
+++ b/Mage.Sets/src/mage/cards/l/LeaveChance.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class LeaveChance extends SplitCard {
+public final class LeaveChance extends SplitCard {
public LeaveChance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{1}{W}", "{3}{R}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/l/LeaveInTheDust.java b/Mage.Sets/src/mage/cards/l/LeaveInTheDust.java
index 3bc7e01ceb0..e0dfd9b0023 100644
--- a/Mage.Sets/src/mage/cards/l/LeaveInTheDust.java
+++ b/Mage.Sets/src/mage/cards/l/LeaveInTheDust.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author Styxo
*/
-public class LeaveInTheDust extends CardImpl {
+public final class LeaveInTheDust extends CardImpl {
public LeaveInTheDust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LeaveNoTrace.java b/Mage.Sets/src/mage/cards/l/LeaveNoTrace.java
index 4d6008a1c30..49f64118d04 100644
--- a/Mage.Sets/src/mage/cards/l/LeaveNoTrace.java
+++ b/Mage.Sets/src/mage/cards/l/LeaveNoTrace.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetEnchantmentPermanent;
/**
* @author Loki
*/
-public class LeaveNoTrace extends CardImpl {
+public final class LeaveNoTrace extends CardImpl {
static final FilterPermanent filter = new FilterPermanent("enchantment");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LeechBonder.java b/Mage.Sets/src/mage/cards/l/LeechBonder.java
index 06af283385c..70209847aae 100644
--- a/Mage.Sets/src/mage/cards/l/LeechBonder.java
+++ b/Mage.Sets/src/mage/cards/l/LeechBonder.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*
*/
-public class LeechBonder extends CardImpl {
+public final class LeechBonder extends CardImpl {
public LeechBonder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/Leeches.java b/Mage.Sets/src/mage/cards/l/Leeches.java
index af4fc519c17..6a4a30a5ca5 100644
--- a/Mage.Sets/src/mage/cards/l/Leeches.java
+++ b/Mage.Sets/src/mage/cards/l/Leeches.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author spjspj
*/
-public class Leeches extends CardImpl {
+public final class Leeches extends CardImpl {
public Leeches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LeechingBite.java b/Mage.Sets/src/mage/cards/l/LeechingBite.java
index e2ba83cf356..c39d1b20a2a 100644
--- a/Mage.Sets/src/mage/cards/l/LeechingBite.java
+++ b/Mage.Sets/src/mage/cards/l/LeechingBite.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class LeechingBite extends CardImpl {
+public final class LeechingBite extends CardImpl {
public LeechingBite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LeechingLicid.java b/Mage.Sets/src/mage/cards/l/LeechingLicid.java
index 8f4b8fcb243..b40a95e153d 100644
--- a/Mage.Sets/src/mage/cards/l/LeechingLicid.java
+++ b/Mage.Sets/src/mage/cards/l/LeechingLicid.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class LeechingLicid extends CardImpl {
+public final class LeechingLicid extends CardImpl {
public LeechingLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LeechingSliver.java b/Mage.Sets/src/mage/cards/l/LeechingSliver.java
index b05715f373b..066b6f26ab0 100644
--- a/Mage.Sets/src/mage/cards/l/LeechingSliver.java
+++ b/Mage.Sets/src/mage/cards/l/LeechingSliver.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
/**
* @author noxx
*/
-public class LeechingSliver extends CardImpl {
+public final class LeechingSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver you control");
diff --git a/Mage.Sets/src/mage/cards/l/LeechriddenSwamp.java b/Mage.Sets/src/mage/cards/l/LeechriddenSwamp.java
index b470d25404a..54e6e6dcbe4 100644
--- a/Mage.Sets/src/mage/cards/l/LeechriddenSwamp.java
+++ b/Mage.Sets/src/mage/cards/l/LeechriddenSwamp.java
@@ -55,7 +55,7 @@ import mage.players.Players;
*
* @author jeffwadsworth
*/
-public class LeechriddenSwamp extends CardImpl {
+public final class LeechriddenSwamp extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control two or more black permanents");
diff --git a/Mage.Sets/src/mage/cards/l/LeeringEmblem.java b/Mage.Sets/src/mage/cards/l/LeeringEmblem.java
index abed3ffa43e..ca306c36120 100644
--- a/Mage.Sets/src/mage/cards/l/LeeringEmblem.java
+++ b/Mage.Sets/src/mage/cards/l/LeeringEmblem.java
@@ -43,7 +43,7 @@ import mage.constants.Outcome;
*
* @author Loki
*/
-public class LeeringEmblem extends CardImpl {
+public final class LeeringEmblem extends CardImpl {
public LeeringEmblem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/l/LeeringGargoyle.java b/Mage.Sets/src/mage/cards/l/LeeringGargoyle.java
index cd481a86978..a5c24671913 100644
--- a/Mage.Sets/src/mage/cards/l/LeeringGargoyle.java
+++ b/Mage.Sets/src/mage/cards/l/LeeringGargoyle.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author TheElk801
*/
-public class LeeringGargoyle extends CardImpl {
+public final class LeeringGargoyle extends CardImpl {
public LeeringGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LeeryFogbeast.java b/Mage.Sets/src/mage/cards/l/LeeryFogbeast.java
index d52cc61e44d..6f505a1aa28 100644
--- a/Mage.Sets/src/mage/cards/l/LeeryFogbeast.java
+++ b/Mage.Sets/src/mage/cards/l/LeeryFogbeast.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class LeeryFogbeast extends CardImpl {
+public final class LeeryFogbeast extends CardImpl {
public LeeryFogbeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LegacyOfTheBeloved.java b/Mage.Sets/src/mage/cards/l/LegacyOfTheBeloved.java
index 8e0fd5eb5fb..26a63e39bb1 100644
--- a/Mage.Sets/src/mage/cards/l/LegacyOfTheBeloved.java
+++ b/Mage.Sets/src/mage/cards/l/LegacyOfTheBeloved.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Styxo
*/
-public class LegacyOfTheBeloved extends CardImpl {
+public final class LegacyOfTheBeloved extends CardImpl {
public LegacyOfTheBeloved(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LegacyWeapon.java b/Mage.Sets/src/mage/cards/l/LegacyWeapon.java
index 9e9a20c9554..053c3bf94ea 100644
--- a/Mage.Sets/src/mage/cards/l/LegacyWeapon.java
+++ b/Mage.Sets/src/mage/cards/l/LegacyWeapon.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class LegacyWeapon extends CardImpl {
+public final class LegacyWeapon extends CardImpl {
public LegacyWeapon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{7}");
diff --git a/Mage.Sets/src/mage/cards/l/LegacysAllure.java b/Mage.Sets/src/mage/cards/l/LegacysAllure.java
index 6d58e0cdfcd..e9d565cde75 100644
--- a/Mage.Sets/src/mage/cards/l/LegacysAllure.java
+++ b/Mage.Sets/src/mage/cards/l/LegacysAllure.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX2
*/
-public class LegacysAllure extends CardImpl {
+public final class LegacysAllure extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power less than or equal to the number of treasure counters on {this}");
diff --git a/Mage.Sets/src/mage/cards/l/Legerdemain.java b/Mage.Sets/src/mage/cards/l/Legerdemain.java
index 4288fef1146..2d184221751 100644
--- a/Mage.Sets/src/mage/cards/l/Legerdemain.java
+++ b/Mage.Sets/src/mage/cards/l/Legerdemain.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author emerald000
*/
-public class Legerdemain extends CardImpl {
+public final class Legerdemain extends CardImpl {
private static final FilterPermanent firstFilter = new FilterPermanent("artifact or creature");
private static final FilterPermanent secondFilter = new FilterPermanent("another permanent that shares the type of artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/l/LegionConquistador.java b/Mage.Sets/src/mage/cards/l/LegionConquistador.java
index 0ccad7c76e4..8d4ac9d283b 100644
--- a/Mage.Sets/src/mage/cards/l/LegionConquistador.java
+++ b/Mage.Sets/src/mage/cards/l/LegionConquistador.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class LegionConquistador extends CardImpl {
+public final class LegionConquistador extends CardImpl {
private static final FilterCard filter = new FilterCard("cards named Legion Conquistador");
diff --git a/Mage.Sets/src/mage/cards/l/LegionLieutenant.java b/Mage.Sets/src/mage/cards/l/LegionLieutenant.java
index 455b5e4d697..c28d4e357c6 100644
--- a/Mage.Sets/src/mage/cards/l/LegionLieutenant.java
+++ b/Mage.Sets/src/mage/cards/l/LegionLieutenant.java
@@ -1,78 +1,78 @@
-/*
- * 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.MageInt;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.effects.common.continuous.BoostAllEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.SubType;
-import mage.constants.TargetController;
-import mage.constants.Zone;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.mageobject.SubtypePredicate;
-import mage.filter.predicate.permanent.ControllerPredicate;
-
-/**
- *
- * @author LevelX2
- */
-public class LegionLieutenant extends CardImpl {
-
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampires you control");
-
- static {
- filter.add(new SubtypePredicate(SubType.VAMPIRE));
- filter.add(new ControllerPredicate(TargetController.YOU));
- }
-
- public LegionLieutenant(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{B}");
-
- this.subtype.add(SubType.VAMPIRE);
- this.subtype.add(SubType.KNIGHT);
- this.power = new MageInt(2);
- this.toughness = new MageInt(2);
-
- // Other Vampires you control get +1/+1.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
- }
-
- public LegionLieutenant(final LegionLieutenant card) {
- super(card);
- }
-
- @Override
- public LegionLieutenant copy() {
- return new LegionLieutenant(this);
- }
-}
+/*
+ * 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.MageInt;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.continuous.BoostAllEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.filter.predicate.permanent.ControllerPredicate;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class LegionLieutenant extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampires you control");
+
+ static {
+ filter.add(new SubtypePredicate(SubType.VAMPIRE));
+ filter.add(new ControllerPredicate(TargetController.YOU));
+ }
+
+ public LegionLieutenant(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{B}");
+
+ this.subtype.add(SubType.VAMPIRE);
+ this.subtype.add(SubType.KNIGHT);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Other Vampires you control get +1/+1.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
+ }
+
+ public LegionLieutenant(final LegionLieutenant card) {
+ super(card);
+ }
+
+ @Override
+ public LegionLieutenant copy() {
+ return new LegionLieutenant(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/l/LegionLoyalist.java b/Mage.Sets/src/mage/cards/l/LegionLoyalist.java
index 5cce67e5562..9dc37bc431b 100644
--- a/Mage.Sets/src/mage/cards/l/LegionLoyalist.java
+++ b/Mage.Sets/src/mage/cards/l/LegionLoyalist.java
@@ -52,7 +52,7 @@ import mage.game.permanent.PermanentToken;
*
* @author Plopman
*/
-public class LegionLoyalist extends CardImpl {
+public final class LegionLoyalist extends CardImpl {
public LegionLoyalist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LegionsInitiative.java b/Mage.Sets/src/mage/cards/l/LegionsInitiative.java
index e20c35f1dcc..08e57b21b76 100644
--- a/Mage.Sets/src/mage/cards/l/LegionsInitiative.java
+++ b/Mage.Sets/src/mage/cards/l/LegionsInitiative.java
@@ -62,7 +62,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class LegionsInitiative extends CardImpl {
+public final class LegionsInitiative extends CardImpl {
private static final FilterCreaturePermanent filterRedCreature = new FilterCreaturePermanent("Red creatures");
private static final FilterCreaturePermanent filterWhiteCreature = new FilterCreaturePermanent("White creatures");
diff --git a/Mage.Sets/src/mage/cards/l/LegionsJudgment.java b/Mage.Sets/src/mage/cards/l/LegionsJudgment.java
index 2f39c6af53b..ab1bc515aed 100644
--- a/Mage.Sets/src/mage/cards/l/LegionsJudgment.java
+++ b/Mage.Sets/src/mage/cards/l/LegionsJudgment.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class LegionsJudgment extends CardImpl {
+public final class LegionsJudgment extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/l/LegionsLanding.java b/Mage.Sets/src/mage/cards/l/LegionsLanding.java
index 426e28a9369..6861aada8ff 100644
--- a/Mage.Sets/src/mage/cards/l/LegionsLanding.java
+++ b/Mage.Sets/src/mage/cards/l/LegionsLanding.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.IxalanVampireToken;
*
* @author TheElk801
*/
-public class LegionsLanding extends CardImpl {
+public final class LegionsLanding extends CardImpl {
public LegionsLanding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java b/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java
index 56ffa6a5abf..277f12c5225 100644
--- a/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java
+++ b/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author fireshoes
*/
-public class LegionsOfLimDul extends CardImpl {
+public final class LegionsOfLimDul extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("snow swamp");
diff --git a/Mage.Sets/src/mage/cards/l/LensOfClarity.java b/Mage.Sets/src/mage/cards/l/LensOfClarity.java
index 391f85231bf..60fd92a4d35 100644
--- a/Mage.Sets/src/mage/cards/l/LensOfClarity.java
+++ b/Mage.Sets/src/mage/cards/l/LensOfClarity.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LensOfClarity extends CardImpl {
+public final class LensOfClarity extends CardImpl {
public LensOfClarity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninAbunas.java b/Mage.Sets/src/mage/cards/l/LeoninAbunas.java
index 7ed9975cc26..2a3d4c538d5 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninAbunas.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninAbunas.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterArtifactPermanent;
/**
* @author Loki
*/
-public class LeoninAbunas extends CardImpl {
+public final class LeoninAbunas extends CardImpl {
public LeoninAbunas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninArbiter.java b/Mage.Sets/src/mage/cards/l/LeoninArbiter.java
index 5ac928bdda0..280aea9806b 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninArbiter.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninArbiter.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author maurer.it_at_gmail.com, dustinconrad
*/
-public class LeoninArbiter extends CardImpl {
+public final class LeoninArbiter extends CardImpl {
private static final String KEY_STRING = "_ignoreEffectForTurn";
diff --git a/Mage.Sets/src/mage/cards/l/LeoninArmorguard.java b/Mage.Sets/src/mage/cards/l/LeoninArmorguard.java
index ad068bb04c6..073553225d8 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninArmorguard.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninArmorguard.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author jeffwadsworth
*/
-public class LeoninArmorguard extends CardImpl {
+public final class LeoninArmorguard extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninBattlemage.java b/Mage.Sets/src/mage/cards/l/LeoninBattlemage.java
index 4489cf6403b..b0d1eb1292e 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninBattlemage.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninBattlemage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class LeoninBattlemage extends CardImpl {
+public final class LeoninBattlemage extends CardImpl {
public LeoninBattlemage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninBladetrap.java b/Mage.Sets/src/mage/cards/l/LeoninBladetrap.java
index cf40a3852e1..d7cc8ffd9c8 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninBladetrap.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninBladetrap.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AttackingPredicate;
*
* @author LevelX2
*/
-public class LeoninBladetrap extends CardImpl {
+public final class LeoninBladetrap extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creature without flying");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LeoninBola.java b/Mage.Sets/src/mage/cards/l/LeoninBola.java
index f5c28fc0736..ad12c353a1d 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninBola.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninBola.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class LeoninBola extends CardImpl {
+public final class LeoninBola extends CardImpl {
public LeoninBola(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninDenGuard.java b/Mage.Sets/src/mage/cards/l/LeoninDenGuard.java
index dd7c35cf1e9..de12d4dcae3 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninDenGuard.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninDenGuard.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class LeoninDenGuard extends CardImpl {
+public final class LeoninDenGuard extends CardImpl {
private static final String rule1 = "As long as {this} is equipped, it gets +1/+1";
private static final String rule2 = "As long as {this} is equipped, it has vigilance";
diff --git a/Mage.Sets/src/mage/cards/l/LeoninElder.java b/Mage.Sets/src/mage/cards/l/LeoninElder.java
index 4b070022fd1..70915c42783 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninElder.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninElder.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author dustinconrad
*/
-public class LeoninElder extends CardImpl {
+public final class LeoninElder extends CardImpl {
public LeoninElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninIconoclast.java b/Mage.Sets/src/mage/cards/l/LeoninIconoclast.java
index b0dd4681c7f..62810c906e8 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninIconoclast.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninIconoclast.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class LeoninIconoclast extends CardImpl {
+public final class LeoninIconoclast extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("enchantment creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninRelicWarder.java b/Mage.Sets/src/mage/cards/l/LeoninRelicWarder.java
index 66f2021f38f..595ca82c150 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninRelicWarder.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninRelicWarder.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class LeoninRelicWarder extends CardImpl {
+public final class LeoninRelicWarder extends CardImpl {
public LeoninRelicWarder (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninScimitar.java b/Mage.Sets/src/mage/cards/l/LeoninScimitar.java
index f4e4633b8e7..0d44bd23428 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninScimitar.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninScimitar.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class LeoninScimitar extends CardImpl {
+public final class LeoninScimitar extends CardImpl {
public LeoninScimitar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninShikari.java b/Mage.Sets/src/mage/cards/l/LeoninShikari.java
index 4231cf6d650..5d7f9eb2e96 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninShikari.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninShikari.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class LeoninShikari extends CardImpl {
+public final class LeoninShikari extends CardImpl {
public LeoninShikari(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninSkyhunter.java b/Mage.Sets/src/mage/cards/l/LeoninSkyhunter.java
index 34c19b2035b..478288d479f 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninSkyhunter.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninSkyhunter.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LeoninSkyhunter extends CardImpl {
+public final class LeoninSkyhunter extends CardImpl {
public LeoninSkyhunter (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninSnarecaster.java b/Mage.Sets/src/mage/cards/l/LeoninSnarecaster.java
index a67bf103c3b..4b2f89e996d 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninSnarecaster.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninSnarecaster.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LeoninSnarecaster extends CardImpl {
+public final class LeoninSnarecaster extends CardImpl {
public LeoninSnarecaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LeoninSquire.java b/Mage.Sets/src/mage/cards/l/LeoninSquire.java
index d96733bf63b..790cba2fc82 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninSquire.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninSquire.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class LeoninSquire extends CardImpl {
+public final class LeoninSquire extends CardImpl {
private static final FilterArtifactCard filter = new FilterArtifactCard("target artifact card with converted mana cost 1 or less from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LeoninSunStandard.java b/Mage.Sets/src/mage/cards/l/LeoninSunStandard.java
index b8ccaad7228..ec0acbfb93e 100644
--- a/Mage.Sets/src/mage/cards/l/LeoninSunStandard.java
+++ b/Mage.Sets/src/mage/cards/l/LeoninSunStandard.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class LeoninSunStandard extends CardImpl {
+public final class LeoninSunStandard extends CardImpl {
public LeoninSunStandard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/l/LeovoldEmissaryOfTrest.java b/Mage.Sets/src/mage/cards/l/LeovoldEmissaryOfTrest.java
index 5cf3169c093..1869a92cc5b 100644
--- a/Mage.Sets/src/mage/cards/l/LeovoldEmissaryOfTrest.java
+++ b/Mage.Sets/src/mage/cards/l/LeovoldEmissaryOfTrest.java
@@ -47,7 +47,7 @@ import mage.watchers.common.CardsAmountDrawnThisTurnWatcher;
*
* @author maxlebedev
*/
-public class LeovoldEmissaryOfTrest extends CardImpl {
+public final class LeovoldEmissaryOfTrest extends CardImpl {
public LeovoldEmissaryOfTrest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LeshracsRite.java b/Mage.Sets/src/mage/cards/l/LeshracsRite.java
index dde98d3b549..293080e5d3b 100644
--- a/Mage.Sets/src/mage/cards/l/LeshracsRite.java
+++ b/Mage.Sets/src/mage/cards/l/LeshracsRite.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class LeshracsRite extends CardImpl {
+public final class LeshracsRite extends CardImpl {
public LeshracsRite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LeshracsSigil.java b/Mage.Sets/src/mage/cards/l/LeshracsSigil.java
index 26d09af2acb..5534f268057 100644
--- a/Mage.Sets/src/mage/cards/l/LeshracsSigil.java
+++ b/Mage.Sets/src/mage/cards/l/LeshracsSigil.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author TheElk801 & L_J
*/
-public class LeshracsSigil extends CardImpl {
+public final class LeshracsSigil extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a green spell");
diff --git a/Mage.Sets/src/mage/cards/l/LesserGargadon.java b/Mage.Sets/src/mage/cards/l/LesserGargadon.java
index f0cd4aba192..d2af3b61c01 100644
--- a/Mage.Sets/src/mage/cards/l/LesserGargadon.java
+++ b/Mage.Sets/src/mage/cards/l/LesserGargadon.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author Plopman
*/
-public class LesserGargadon extends CardImpl {
+public final class LesserGargadon extends CardImpl {
public LesserGargadon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LethalSting.java b/Mage.Sets/src/mage/cards/l/LethalSting.java
index e0a74b6d1e3..e1539e9a1f0 100644
--- a/Mage.Sets/src/mage/cards/l/LethalSting.java
+++ b/Mage.Sets/src/mage/cards/l/LethalSting.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LethalSting extends CardImpl {
+public final class LethalSting extends CardImpl {
public LethalSting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LethalVapors.java b/Mage.Sets/src/mage/cards/l/LethalVapors.java
index 0ccc08e888f..0082b4005b7 100644
--- a/Mage.Sets/src/mage/cards/l/LethalVapors.java
+++ b/Mage.Sets/src/mage/cards/l/LethalVapors.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class LethalVapors extends CardImpl {
+public final class LethalVapors extends CardImpl {
public LethalVapors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LethargyTrap.java b/Mage.Sets/src/mage/cards/l/LethargyTrap.java
index 6b927be0111..17e7eef933c 100644
--- a/Mage.Sets/src/mage/cards/l/LethargyTrap.java
+++ b/Mage.Sets/src/mage/cards/l/LethargyTrap.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class LethargyTrap extends CardImpl {
+public final class LethargyTrap extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creatures");
diff --git a/Mage.Sets/src/mage/cards/l/Leveler.java b/Mage.Sets/src/mage/cards/l/Leveler.java
index ebf4a4ca55f..c8ef448052f 100644
--- a/Mage.Sets/src/mage/cards/l/Leveler.java
+++ b/Mage.Sets/src/mage/cards/l/Leveler.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class Leveler extends CardImpl {
+public final class Leveler extends CardImpl {
public Leveler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/l/Leviathan.java b/Mage.Sets/src/mage/cards/l/Leviathan.java
index 7f5d4b1cb2f..c13f9ef7424 100644
--- a/Mage.Sets/src/mage/cards/l/Leviathan.java
+++ b/Mage.Sets/src/mage/cards/l/Leviathan.java
@@ -61,7 +61,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author L_J
*/
-public class Leviathan extends CardImpl {
+public final class Leviathan extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Islands");
static {
diff --git a/Mage.Sets/src/mage/cards/l/Levitation.java b/Mage.Sets/src/mage/cards/l/Levitation.java
index 9fd7dea9cad..08037e1d207 100644
--- a/Mage.Sets/src/mage/cards/l/Levitation.java
+++ b/Mage.Sets/src/mage/cards/l/Levitation.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Loki
*/
-public class Levitation extends CardImpl {
+public final class Levitation extends CardImpl {
public Levitation (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LeyDruid.java b/Mage.Sets/src/mage/cards/l/LeyDruid.java
index 90328786d0b..618032e09af 100644
--- a/Mage.Sets/src/mage/cards/l/LeyDruid.java
+++ b/Mage.Sets/src/mage/cards/l/LeyDruid.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetLandPermanent;
* @author KholdFuzion
*/
-public class LeyDruid extends CardImpl {
+public final class LeyDruid extends CardImpl {
public LeyDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LeyWeaver.java b/Mage.Sets/src/mage/cards/l/LeyWeaver.java
new file mode 100644
index 00000000000..7efb2b10e12
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/l/LeyWeaver.java
@@ -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.l;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.UntapTargetEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.target.common.TargetLandPermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class LeyWeaver extends CardImpl {
+
+ public LeyWeaver(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.DRUID);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Partner with Lore Weaver (When this creature enters the battlefield, target player may put Lore Weaver into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Lore Weaver"));
+
+ // {T}: Untap two target lands.
+ Ability ability = new SimpleActivatedAbility(new UntapTargetEffect(), new TapSourceCost());
+ ability.addTarget(new TargetLandPermanent(2));
+ this.addAbility(ability);
+ }
+
+ public LeyWeaver(final LeyWeaver card) {
+ super(card);
+ }
+
+ @Override
+ public LeyWeaver copy() {
+ return new LeyWeaver(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/l/LeylineOfAnticipation.java b/Mage.Sets/src/mage/cards/l/LeylineOfAnticipation.java
index 1b24915734f..96e5adf3da5 100644
--- a/Mage.Sets/src/mage/cards/l/LeylineOfAnticipation.java
+++ b/Mage.Sets/src/mage/cards/l/LeylineOfAnticipation.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LeylineOfAnticipation extends CardImpl {
+public final class LeylineOfAnticipation extends CardImpl {
private static final FilterCard filter = new FilterCard("spells");
diff --git a/Mage.Sets/src/mage/cards/l/LeylineOfLifeforce.java b/Mage.Sets/src/mage/cards/l/LeylineOfLifeforce.java
index ae4fa592126..dae8be441f0 100644
--- a/Mage.Sets/src/mage/cards/l/LeylineOfLifeforce.java
+++ b/Mage.Sets/src/mage/cards/l/LeylineOfLifeforce.java
@@ -47,7 +47,7 @@ import mage.game.stack.Spell;
*
* @author emerald000
*/
-public class LeylineOfLifeforce extends CardImpl {
+public final class LeylineOfLifeforce extends CardImpl {
public LeylineOfLifeforce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LeylineOfLightning.java b/Mage.Sets/src/mage/cards/l/LeylineOfLightning.java
index 596bf17551c..30a3696a608 100644
--- a/Mage.Sets/src/mage/cards/l/LeylineOfLightning.java
+++ b/Mage.Sets/src/mage/cards/l/LeylineOfLightning.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author emerald000
*/
-public class LeylineOfLightning extends CardImpl {
+public final class LeylineOfLightning extends CardImpl {
public LeylineOfLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LeylineOfPunishment.java b/Mage.Sets/src/mage/cards/l/LeylineOfPunishment.java
index 0e917963bd0..aa888208bdd 100644
--- a/Mage.Sets/src/mage/cards/l/LeylineOfPunishment.java
+++ b/Mage.Sets/src/mage/cards/l/LeylineOfPunishment.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LeylineOfPunishment extends CardImpl {
+public final class LeylineOfPunishment extends CardImpl {
public LeylineOfPunishment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LeylineOfSanctity.java b/Mage.Sets/src/mage/cards/l/LeylineOfSanctity.java
index 96b93024c7d..e59f44517f1 100644
--- a/Mage.Sets/src/mage/cards/l/LeylineOfSanctity.java
+++ b/Mage.Sets/src/mage/cards/l/LeylineOfSanctity.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LeylineOfSanctity extends CardImpl {
+public final class LeylineOfSanctity extends CardImpl {
private static final FilterStackObject filter = new FilterStackObject("spells or abilities your opponents control");
diff --git a/Mage.Sets/src/mage/cards/l/LeylineOfSingularity.java b/Mage.Sets/src/mage/cards/l/LeylineOfSingularity.java
index 4c30b1554f3..4c2bf213947 100644
--- a/Mage.Sets/src/mage/cards/l/LeylineOfSingularity.java
+++ b/Mage.Sets/src/mage/cards/l/LeylineOfSingularity.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class LeylineOfSingularity extends CardImpl {
+public final class LeylineOfSingularity extends CardImpl {
public LeylineOfSingularity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LeylineOfTheMeek.java b/Mage.Sets/src/mage/cards/l/LeylineOfTheMeek.java
index ba417bb857e..fc95d667768 100644
--- a/Mage.Sets/src/mage/cards/l/LeylineOfTheMeek.java
+++ b/Mage.Sets/src/mage/cards/l/LeylineOfTheMeek.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author emerald000
*/
-public class LeylineOfTheMeek extends CardImpl {
+public final class LeylineOfTheMeek extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LeylineOfTheVoid.java b/Mage.Sets/src/mage/cards/l/LeylineOfTheVoid.java
index 59e4da1bb67..e803e08e6b9 100644
--- a/Mage.Sets/src/mage/cards/l/LeylineOfTheVoid.java
+++ b/Mage.Sets/src/mage/cards/l/LeylineOfTheVoid.java
@@ -50,7 +50,7 @@ import mage.players.Player;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class LeylineOfTheVoid extends CardImpl {
+public final class LeylineOfTheVoid extends CardImpl {
public LeylineOfTheVoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LeylineOfVitality.java b/Mage.Sets/src/mage/cards/l/LeylineOfVitality.java
index b9c7c1ac203..88aa98111f9 100644
--- a/Mage.Sets/src/mage/cards/l/LeylineOfVitality.java
+++ b/Mage.Sets/src/mage/cards/l/LeylineOfVitality.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LeylineOfVitality extends CardImpl {
+public final class LeylineOfVitality extends CardImpl {
public LeylineOfVitality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LeylinePhantom.java b/Mage.Sets/src/mage/cards/l/LeylinePhantom.java
index dc78632914e..d3bcd3c0360 100644
--- a/Mage.Sets/src/mage/cards/l/LeylinePhantom.java
+++ b/Mage.Sets/src/mage/cards/l/LeylinePhantom.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Plopman
*/
-public class LeylinePhantom extends CardImpl {
+public final class LeylinePhantom extends CardImpl {
public LeylinePhantom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/Lhurgoyf.java b/Mage.Sets/src/mage/cards/l/Lhurgoyf.java
index cd6871737ae..7e6deb6e4ea 100644
--- a/Mage.Sets/src/mage/cards/l/Lhurgoyf.java
+++ b/Mage.Sets/src/mage/cards/l/Lhurgoyf.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class Lhurgoyf extends CardImpl {
+public final class Lhurgoyf extends CardImpl {
public Lhurgoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/Liability.java b/Mage.Sets/src/mage/cards/l/Liability.java
index 5ced06a4148..13259225fc0 100644
--- a/Mage.Sets/src/mage/cards/l/Liability.java
+++ b/Mage.Sets/src/mage/cards/l/Liability.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class Liability extends CardImpl {
+public final class Liability extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a nontoken permanent");
diff --git a/Mage.Sets/src/mage/cards/l/LiarsPendulum.java b/Mage.Sets/src/mage/cards/l/LiarsPendulum.java
index f3280ad7d4d..2220af1ee1a 100644
--- a/Mage.Sets/src/mage/cards/l/LiarsPendulum.java
+++ b/Mage.Sets/src/mage/cards/l/LiarsPendulum.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author L_J
*/
-public class LiarsPendulum extends CardImpl {
+public final class LiarsPendulum extends CardImpl {
public LiarsPendulum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/l/Liberate.java b/Mage.Sets/src/mage/cards/l/Liberate.java
index 5ed9c9e7088..3edf87a6add 100644
--- a/Mage.Sets/src/mage/cards/l/Liberate.java
+++ b/Mage.Sets/src/mage/cards/l/Liberate.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
* @author LoneFox
*
*/
-public class Liberate extends CardImpl {
+public final class Liberate extends CardImpl {
public Liberate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LiberatedDwarf.java b/Mage.Sets/src/mage/cards/l/LiberatedDwarf.java
index 1c3dc666656..9fe58ffb445 100644
--- a/Mage.Sets/src/mage/cards/l/LiberatedDwarf.java
+++ b/Mage.Sets/src/mage/cards/l/LiberatedDwarf.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class LiberatedDwarf extends CardImpl {
+public final class LiberatedDwarf extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/l/LiberatingCombustion.java b/Mage.Sets/src/mage/cards/l/LiberatingCombustion.java
index 5e277de6085..06ac09cc9e8 100644
--- a/Mage.Sets/src/mage/cards/l/LiberatingCombustion.java
+++ b/Mage.Sets/src/mage/cards/l/LiberatingCombustion.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LiberatingCombustion extends CardImpl {
+public final class LiberatingCombustion extends CardImpl {
private final static FilterCard filter = new FilterCard("Chandra, Pyrogenius");
diff --git a/Mage.Sets/src/mage/cards/l/LibraryOfAlexandria.java b/Mage.Sets/src/mage/cards/l/LibraryOfAlexandria.java
index 38ec6aab904..3127a467575 100644
--- a/Mage.Sets/src/mage/cards/l/LibraryOfAlexandria.java
+++ b/Mage.Sets/src/mage/cards/l/LibraryOfAlexandria.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author LevelX2
*/
-public class LibraryOfAlexandria extends CardImpl {
+public final class LibraryOfAlexandria extends CardImpl {
public LibraryOfAlexandria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/l/LibraryOfLatNam.java b/Mage.Sets/src/mage/cards/l/LibraryOfLatNam.java
index 23aea45996b..9651dd71b36 100644
--- a/Mage.Sets/src/mage/cards/l/LibraryOfLatNam.java
+++ b/Mage.Sets/src/mage/cards/l/LibraryOfLatNam.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Quercitron
*/
-public class LibraryOfLatNam extends CardImpl {
+public final class LibraryOfLatNam extends CardImpl {
public LibraryOfLatNam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LibraryOfLeng.java b/Mage.Sets/src/mage/cards/l/LibraryOfLeng.java
index 7a9dfe0c2bb..69f1f449067 100644
--- a/Mage.Sets/src/mage/cards/l/LibraryOfLeng.java
+++ b/Mage.Sets/src/mage/cards/l/LibraryOfLeng.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class LibraryOfLeng extends CardImpl {
+public final class LibraryOfLeng extends CardImpl {
public LibraryOfLeng(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/l/Lich.java b/Mage.Sets/src/mage/cards/l/Lich.java
index eb03dd6a216..a5ebd18b6cf 100644
--- a/Mage.Sets/src/mage/cards/l/Lich.java
+++ b/Mage.Sets/src/mage/cards/l/Lich.java
@@ -61,7 +61,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class Lich extends CardImpl {
+public final class Lich extends CardImpl {
public Lich(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LichLordOfUnx.java b/Mage.Sets/src/mage/cards/l/LichLordOfUnx.java
index fe10e1bb909..908b45abf91 100644
--- a/Mage.Sets/src/mage/cards/l/LichLordOfUnx.java
+++ b/Mage.Sets/src/mage/cards/l/LichLordOfUnx.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class LichLordOfUnx extends CardImpl {
+public final class LichLordOfUnx extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Zombies you control");
diff --git a/Mage.Sets/src/mage/cards/l/Lichenthrope.java b/Mage.Sets/src/mage/cards/l/Lichenthrope.java
index d0fad871162..d9464766af4 100644
--- a/Mage.Sets/src/mage/cards/l/Lichenthrope.java
+++ b/Mage.Sets/src/mage/cards/l/Lichenthrope.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class Lichenthrope extends CardImpl {
+public final class Lichenthrope extends CardImpl {
public Lichenthrope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LichsMastery.java b/Mage.Sets/src/mage/cards/l/LichsMastery.java
index 1abafd5a67c..afba5305133 100644
--- a/Mage.Sets/src/mage/cards/l/LichsMastery.java
+++ b/Mage.Sets/src/mage/cards/l/LichsMastery.java
@@ -65,7 +65,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class LichsMastery extends CardImpl {
+public final class LichsMastery extends CardImpl {
public LichsMastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LichsMirror.java b/Mage.Sets/src/mage/cards/l/LichsMirror.java
index 7aea9ed443a..d80666fa8c0 100644
--- a/Mage.Sets/src/mage/cards/l/LichsMirror.java
+++ b/Mage.Sets/src/mage/cards/l/LichsMirror.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class LichsMirror extends CardImpl {
+public final class LichsMirror extends CardImpl {
public LichsMirror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/l/LichsTomb.java b/Mage.Sets/src/mage/cards/l/LichsTomb.java
index 10c8d5f8e0e..e779ca2f578 100644
--- a/Mage.Sets/src/mage/cards/l/LichsTomb.java
+++ b/Mage.Sets/src/mage/cards/l/LichsTomb.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author emerald000
*/
-public class LichsTomb extends CardImpl {
+public final class LichsTomb extends CardImpl {
public LichsTomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/l/LiciaSanguineTribune.java b/Mage.Sets/src/mage/cards/l/LiciaSanguineTribune.java
index 29a453b0be1..adad450577b 100644
--- a/Mage.Sets/src/mage/cards/l/LiciaSanguineTribune.java
+++ b/Mage.Sets/src/mage/cards/l/LiciaSanguineTribune.java
@@ -60,7 +60,7 @@ import mage.watchers.common.PlayerGainedLifeWatcher;
*
* @author TheElk801
*/
-public class LiciaSanguineTribune extends CardImpl {
+public final class LiciaSanguineTribune extends CardImpl {
public LiciaSanguineTribune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LiegeOfTheAxe.java b/Mage.Sets/src/mage/cards/l/LiegeOfTheAxe.java
index d41c06831ce..8949cb027f7 100644
--- a/Mage.Sets/src/mage/cards/l/LiegeOfTheAxe.java
+++ b/Mage.Sets/src/mage/cards/l/LiegeOfTheAxe.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class LiegeOfTheAxe extends CardImpl {
+public final class LiegeOfTheAxe extends CardImpl {
public LiegeOfTheAxe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LiegeOfThePit.java b/Mage.Sets/src/mage/cards/l/LiegeOfThePit.java
index 10463ec4a9c..b1a213c593d 100644
--- a/Mage.Sets/src/mage/cards/l/LiegeOfThePit.java
+++ b/Mage.Sets/src/mage/cards/l/LiegeOfThePit.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author djbrez
*/
-public class LiegeOfThePit extends CardImpl {
+public final class LiegeOfThePit extends CardImpl {
public LiegeOfThePit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LiegeOfTheTangle.java b/Mage.Sets/src/mage/cards/l/LiegeOfTheTangle.java
index 28278fe0f98..0f701f138af 100644
--- a/Mage.Sets/src/mage/cards/l/LiegeOfTheTangle.java
+++ b/Mage.Sets/src/mage/cards/l/LiegeOfTheTangle.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki
*/
-public class LiegeOfTheTangle extends CardImpl {
+public final class LiegeOfTheTangle extends CardImpl {
public LiegeOfTheTangle (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LieutenantKirtar.java b/Mage.Sets/src/mage/cards/l/LieutenantKirtar.java
index 59ee8fbd7a8..17104a57f1c 100644
--- a/Mage.Sets/src/mage/cards/l/LieutenantKirtar.java
+++ b/Mage.Sets/src/mage/cards/l/LieutenantKirtar.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author cbt33
*/
-public class LieutenantKirtar extends CardImpl {
+public final class LieutenantKirtar extends CardImpl {
public LieutenantKirtar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LieutenantsOfTheGuard.java b/Mage.Sets/src/mage/cards/l/LieutenantsOfTheGuard.java
index ecf1b453853..a329474d649 100644
--- a/Mage.Sets/src/mage/cards/l/LieutenantsOfTheGuard.java
+++ b/Mage.Sets/src/mage/cards/l/LieutenantsOfTheGuard.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author JRHerlehy
*/
-public class LieutenantsOfTheGuard extends CardImpl {
+public final class LieutenantsOfTheGuard extends CardImpl {
public LieutenantsOfTheGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LifeAndLimb.java b/Mage.Sets/src/mage/cards/l/LifeAndLimb.java
index 10c41135f3f..e5f9df616e9 100644
--- a/Mage.Sets/src/mage/cards/l/LifeAndLimb.java
+++ b/Mage.Sets/src/mage/cards/l/LifeAndLimb.java
@@ -47,7 +47,7 @@ import java.util.UUID;
/**
* @author emerald000
*/
-public class LifeAndLimb extends CardImpl {
+public final class LifeAndLimb extends CardImpl {
public LifeAndLimb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LifeBurst.java b/Mage.Sets/src/mage/cards/l/LifeBurst.java
index 2c86afebfaf..bdd0d85db0f 100644
--- a/Mage.Sets/src/mage/cards/l/LifeBurst.java
+++ b/Mage.Sets/src/mage/cards/l/LifeBurst.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class LifeBurst extends CardImpl {
+public final class LifeBurst extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Life Burst");
diff --git a/Mage.Sets/src/mage/cards/l/LifeChisel.java b/Mage.Sets/src/mage/cards/l/LifeChisel.java
index 03c5bbb7989..f017bfd3e47 100644
--- a/Mage.Sets/src/mage/cards/l/LifeChisel.java
+++ b/Mage.Sets/src/mage/cards/l/LifeChisel.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class LifeChisel extends CardImpl {
+public final class LifeChisel extends CardImpl {
public LifeChisel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/l/LifeDeath.java b/Mage.Sets/src/mage/cards/l/LifeDeath.java
index 6e8c8018e25..44673d3bbe8 100644
--- a/Mage.Sets/src/mage/cards/l/LifeDeath.java
+++ b/Mage.Sets/src/mage/cards/l/LifeDeath.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class LifeDeath extends SplitCard {
+public final class LifeDeath extends SplitCard {
public LifeDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}", "{1}{B}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/l/LifeFromTheLoam.java b/Mage.Sets/src/mage/cards/l/LifeFromTheLoam.java
index e949f9d8d1a..93a3dd7d386 100644
--- a/Mage.Sets/src/mage/cards/l/LifeFromTheLoam.java
+++ b/Mage.Sets/src/mage/cards/l/LifeFromTheLoam.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jonubuu
*/
-public class LifeFromTheLoam extends CardImpl {
+public final class LifeFromTheLoam extends CardImpl {
public LifeFromTheLoam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LifeGoesOn.java b/Mage.Sets/src/mage/cards/l/LifeGoesOn.java
index 45360e2f7bf..0885844a8e1 100644
--- a/Mage.Sets/src/mage/cards/l/LifeGoesOn.java
+++ b/Mage.Sets/src/mage/cards/l/LifeGoesOn.java
@@ -40,7 +40,7 @@ import mage.watchers.common.MorbidWatcher;
*
* @author ciaccona007
*/
-public class LifeGoesOn extends CardImpl {
+public final class LifeGoesOn extends CardImpl {
public LifeGoesOn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LifebaneZombie.java b/Mage.Sets/src/mage/cards/l/LifebaneZombie.java
index c3932fd25dd..51eb1f72d43 100644
--- a/Mage.Sets/src/mage/cards/l/LifebaneZombie.java
+++ b/Mage.Sets/src/mage/cards/l/LifebaneZombie.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class LifebaneZombie extends CardImpl {
+public final class LifebaneZombie extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a green or white creature card");
static {
diff --git a/Mage.Sets/src/mage/cards/l/Lifeblood.java b/Mage.Sets/src/mage/cards/l/Lifeblood.java
index 702af6c26b2..dc8442b9c02 100644
--- a/Mage.Sets/src/mage/cards/l/Lifeblood.java
+++ b/Mage.Sets/src/mage/cards/l/Lifeblood.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class Lifeblood extends CardImpl {
+public final class Lifeblood extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Mountain an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/l/LifebloodHydra.java b/Mage.Sets/src/mage/cards/l/LifebloodHydra.java
index 6393489f3f8..3148bd6af17 100644
--- a/Mage.Sets/src/mage/cards/l/LifebloodHydra.java
+++ b/Mage.Sets/src/mage/cards/l/LifebloodHydra.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class LifebloodHydra extends CardImpl {
+public final class LifebloodHydra extends CardImpl {
public LifebloodHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LifecraftAwakening.java b/Mage.Sets/src/mage/cards/l/LifecraftAwakening.java
index 771b5329890..b063eafaf35 100644
--- a/Mage.Sets/src/mage/cards/l/LifecraftAwakening.java
+++ b/Mage.Sets/src/mage/cards/l/LifecraftAwakening.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class LifecraftAwakening extends CardImpl {
+public final class LifecraftAwakening extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifact you control");
diff --git a/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java b/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java
index 8d0a1ccfd0a..632bb8e4ab3 100644
--- a/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java
+++ b/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java
@@ -44,7 +44,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author fireshoes
*/
-public class LifecraftCavalry extends CardImpl {
+public final class LifecraftCavalry extends CardImpl {
public LifecraftCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LifecraftersBestiary.java b/Mage.Sets/src/mage/cards/l/LifecraftersBestiary.java
index c1f165b987d..b95867af454 100644
--- a/Mage.Sets/src/mage/cards/l/LifecraftersBestiary.java
+++ b/Mage.Sets/src/mage/cards/l/LifecraftersBestiary.java
@@ -45,7 +45,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class LifecraftersBestiary extends CardImpl {
+public final class LifecraftersBestiary extends CardImpl {
public LifecraftersBestiary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/l/LifecraftersGift.java b/Mage.Sets/src/mage/cards/l/LifecraftersGift.java
index 6383f75bdf7..825b00edb6e 100644
--- a/Mage.Sets/src/mage/cards/l/LifecraftersGift.java
+++ b/Mage.Sets/src/mage/cards/l/LifecraftersGift.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LifecraftersGift extends CardImpl {
+public final class LifecraftersGift extends CardImpl {
public LifecraftersGift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/Lifeforce.java b/Mage.Sets/src/mage/cards/l/Lifeforce.java
index b54817b98df..a39bc05f634 100644
--- a/Mage.Sets/src/mage/cards/l/Lifeforce.java
+++ b/Mage.Sets/src/mage/cards/l/Lifeforce.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author anonymous
*/
-public class Lifeforce extends CardImpl {
+public final class Lifeforce extends CardImpl {
private static final FilterSpell filter = new FilterSpell("black spell");
diff --git a/Mage.Sets/src/mage/cards/l/Lifegift.java b/Mage.Sets/src/mage/cards/l/Lifegift.java
index 199248aa527..f8a59b3a3ae 100644
--- a/Mage.Sets/src/mage/cards/l/Lifegift.java
+++ b/Mage.Sets/src/mage/cards/l/Lifegift.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author LevelX2
*/
-public class Lifegift extends CardImpl {
+public final class Lifegift extends CardImpl {
public Lifegift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/Lifelace.java b/Mage.Sets/src/mage/cards/l/Lifelace.java
index 8972ba5e931..a0e4567bb93 100644
--- a/Mage.Sets/src/mage/cards/l/Lifelace.java
+++ b/Mage.Sets/src/mage/cards/l/Lifelace.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author AlumiuN
*/
-public class Lifelace extends CardImpl {
+public final class Lifelace extends CardImpl {
public Lifelace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/l/Lifeline.java b/Mage.Sets/src/mage/cards/l/Lifeline.java
index 49e32053313..b32c1b84f05 100644
--- a/Mage.Sets/src/mage/cards/l/Lifeline.java
+++ b/Mage.Sets/src/mage/cards/l/Lifeline.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author HCrescent
*/
-public class Lifeline extends CardImpl {
+public final class Lifeline extends CardImpl {
public Lifeline(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/l/Lifelink.java b/Mage.Sets/src/mage/cards/l/Lifelink.java
index 1dd44832263..a12eeb5e978 100644
--- a/Mage.Sets/src/mage/cards/l/Lifelink.java
+++ b/Mage.Sets/src/mage/cards/l/Lifelink.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Lifelink extends CardImpl {
+public final class Lifelink extends CardImpl {
public Lifelink (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LifesFinale.java b/Mage.Sets/src/mage/cards/l/LifesFinale.java
index af8f8d9749c..0a4e912a3bc 100644
--- a/Mage.Sets/src/mage/cards/l/LifesFinale.java
+++ b/Mage.Sets/src/mage/cards/l/LifesFinale.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author North
*/
-public class LifesFinale extends CardImpl {
+public final class LifesFinale extends CardImpl {
public LifesFinale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LifesLegacy.java b/Mage.Sets/src/mage/cards/l/LifesLegacy.java
index 1caf18c8f85..5c4c8f388e2 100644
--- a/Mage.Sets/src/mage/cards/l/LifesLegacy.java
+++ b/Mage.Sets/src/mage/cards/l/LifesLegacy.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class LifesLegacy extends CardImpl {
+public final class LifesLegacy extends CardImpl {
public LifesLegacy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/Lifesmith.java b/Mage.Sets/src/mage/cards/l/Lifesmith.java
index cdd0914f3fb..acc56a2bad4 100644
--- a/Mage.Sets/src/mage/cards/l/Lifesmith.java
+++ b/Mage.Sets/src/mage/cards/l/Lifesmith.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class Lifesmith extends CardImpl {
+public final class Lifesmith extends CardImpl {
public Lifesmith (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
this.subtype.add(SubType.HUMAN);
diff --git a/Mage.Sets/src/mage/cards/l/LifesparkSpellbomb.java b/Mage.Sets/src/mage/cards/l/LifesparkSpellbomb.java
index f5482a23dad..237c95b4072 100644
--- a/Mage.Sets/src/mage/cards/l/LifesparkSpellbomb.java
+++ b/Mage.Sets/src/mage/cards/l/LifesparkSpellbomb.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki
*/
-public class LifesparkSpellbomb extends CardImpl {
+public final class LifesparkSpellbomb extends CardImpl {
public LifesparkSpellbomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/l/Lifespinner.java b/Mage.Sets/src/mage/cards/l/Lifespinner.java
index 36f280cd55e..05c86905140 100644
--- a/Mage.Sets/src/mage/cards/l/Lifespinner.java
+++ b/Mage.Sets/src/mage/cards/l/Lifespinner.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class Lifespinner extends CardImpl {
+public final class Lifespinner extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("legendary Spirit permanent card");
diff --git a/Mage.Sets/src/mage/cards/l/LifespringDruid.java b/Mage.Sets/src/mage/cards/l/LifespringDruid.java
index c909242ba8e..a51f3a3782a 100644
--- a/Mage.Sets/src/mage/cards/l/LifespringDruid.java
+++ b/Mage.Sets/src/mage/cards/l/LifespringDruid.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class LifespringDruid extends CardImpl {
+public final class LifespringDruid extends CardImpl {
public LifespringDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/Lifetap.java b/Mage.Sets/src/mage/cards/l/Lifetap.java
index 9029273a891..82dc15c3078 100644
--- a/Mage.Sets/src/mage/cards/l/Lifetap.java
+++ b/Mage.Sets/src/mage/cards/l/Lifetap.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class Lifetap extends CardImpl {
+public final class Lifetap extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Forest an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/l/LiftedByClouds.java b/Mage.Sets/src/mage/cards/l/LiftedByClouds.java
index cca5bc435fd..353f7b2bf50 100644
--- a/Mage.Sets/src/mage/cards/l/LiftedByClouds.java
+++ b/Mage.Sets/src/mage/cards/l/LiftedByClouds.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class LiftedByClouds extends CardImpl {
+public final class LiftedByClouds extends CardImpl {
public LiftedByClouds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LightFromWithin.java b/Mage.Sets/src/mage/cards/l/LightFromWithin.java
index b394c05f10e..e6c18a1f38b 100644
--- a/Mage.Sets/src/mage/cards/l/LightFromWithin.java
+++ b/Mage.Sets/src/mage/cards/l/LightFromWithin.java
@@ -54,7 +54,7 @@ import mage.players.Player;
* @author jeffwadsworth
*
*/
-public class LightFromWithin extends CardImpl {
+public final class LightFromWithin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
diff --git a/Mage.Sets/src/mage/cards/l/LightOfDay.java b/Mage.Sets/src/mage/cards/l/LightOfDay.java
index d7c7c6d6a76..b4ed5218250 100644
--- a/Mage.Sets/src/mage/cards/l/LightOfDay.java
+++ b/Mage.Sets/src/mage/cards/l/LightOfDay.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Quercitron
*/
-public class LightOfDay extends CardImpl {
+public final class LightOfDay extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Black creatures");
diff --git a/Mage.Sets/src/mage/cards/l/LightOfSanction.java b/Mage.Sets/src/mage/cards/l/LightOfSanction.java
index 9f84c71fe86..f2049b1d7eb 100644
--- a/Mage.Sets/src/mage/cards/l/LightOfSanction.java
+++ b/Mage.Sets/src/mage/cards/l/LightOfSanction.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author Dilnu
*/
-public class LightOfSanction extends CardImpl {
+public final class LightOfSanction extends CardImpl {
public LightOfSanction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/Lightbringer.java b/Mage.Sets/src/mage/cards/l/Lightbringer.java
index 52f696dcbd0..a4a911043fa 100644
--- a/Mage.Sets/src/mage/cards/l/Lightbringer.java
+++ b/Mage.Sets/src/mage/cards/l/Lightbringer.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Lightbringer extends CardImpl {
+public final class Lightbringer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature");
diff --git a/Mage.Sets/src/mage/cards/l/Lightform.java b/Mage.Sets/src/mage/cards/l/Lightform.java
index f62da115052..6139606753b 100644
--- a/Mage.Sets/src/mage/cards/l/Lightform.java
+++ b/Mage.Sets/src/mage/cards/l/Lightform.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class Lightform extends CardImpl {
+public final class Lightform extends CardImpl {
public Lightform(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LighthouseChronologist.java b/Mage.Sets/src/mage/cards/l/LighthouseChronologist.java
index 9e21797c8f4..945b31b2c23 100644
--- a/Mage.Sets/src/mage/cards/l/LighthouseChronologist.java
+++ b/Mage.Sets/src/mage/cards/l/LighthouseChronologist.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com, noxx
*/
-public class LighthouseChronologist extends LevelerCard {
+public final class LighthouseChronologist extends LevelerCard {
public LighthouseChronologist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LightkeeperOfEmeria.java b/Mage.Sets/src/mage/cards/l/LightkeeperOfEmeria.java
index fa2f7f2d7ed..1bffd9dd544 100644
--- a/Mage.Sets/src/mage/cards/l/LightkeeperOfEmeria.java
+++ b/Mage.Sets/src/mage/cards/l/LightkeeperOfEmeria.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LightkeeperOfEmeria extends CardImpl {
+public final class LightkeeperOfEmeria extends CardImpl {
public LightkeeperOfEmeria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LightmineField.java b/Mage.Sets/src/mage/cards/l/LightmineField.java
index 7f9e081f62b..17f7558e8fa 100644
--- a/Mage.Sets/src/mage/cards/l/LightmineField.java
+++ b/Mage.Sets/src/mage/cards/l/LightmineField.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class LightmineField extends CardImpl {
+public final class LightmineField extends CardImpl {
public LightmineField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningAngel.java b/Mage.Sets/src/mage/cards/l/LightningAngel.java
index 4a39c337fd3..648198bcf06 100644
--- a/Mage.Sets/src/mage/cards/l/LightningAngel.java
+++ b/Mage.Sets/src/mage/cards/l/LightningAngel.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LightningAngel extends CardImpl {
+public final class LightningAngel extends CardImpl {
public LightningAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningAxe.java b/Mage.Sets/src/mage/cards/l/LightningAxe.java
index 11cbdf6c38c..d0e49975c49 100644
--- a/Mage.Sets/src/mage/cards/l/LightningAxe.java
+++ b/Mage.Sets/src/mage/cards/l/LightningAxe.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LightningAxe extends CardImpl {
+public final class LightningAxe extends CardImpl {
public LightningAxe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningBerserker.java b/Mage.Sets/src/mage/cards/l/LightningBerserker.java
index fc062a1edbe..1cf1ef5b32a 100644
--- a/Mage.Sets/src/mage/cards/l/LightningBerserker.java
+++ b/Mage.Sets/src/mage/cards/l/LightningBerserker.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class LightningBerserker extends CardImpl {
+public final class LightningBerserker extends CardImpl {
public LightningBerserker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningBlast.java b/Mage.Sets/src/mage/cards/l/LightningBlast.java
index e9bef092988..ac3d135b2c8 100644
--- a/Mage.Sets/src/mage/cards/l/LightningBlast.java
+++ b/Mage.Sets/src/mage/cards/l/LightningBlast.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class LightningBlast extends CardImpl {
+public final class LightningBlast extends CardImpl {
public LightningBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningBlow.java b/Mage.Sets/src/mage/cards/l/LightningBlow.java
index acde4a797de..0dc7aaf7a05 100644
--- a/Mage.Sets/src/mage/cards/l/LightningBlow.java
+++ b/Mage.Sets/src/mage/cards/l/LightningBlow.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LightningBlow extends CardImpl {
+public final class LightningBlow extends CardImpl {
public LightningBlow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningBolt.java b/Mage.Sets/src/mage/cards/l/LightningBolt.java
index 4856671061c..63c27b645c1 100644
--- a/Mage.Sets/src/mage/cards/l/LightningBolt.java
+++ b/Mage.Sets/src/mage/cards/l/LightningBolt.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LightningBolt extends CardImpl {
+public final class LightningBolt extends CardImpl {
public LightningBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningCloud.java b/Mage.Sets/src/mage/cards/l/LightningCloud.java
index a696e4b2cd3..72ca836fc56 100644
--- a/Mage.Sets/src/mage/cards/l/LightningCloud.java
+++ b/Mage.Sets/src/mage/cards/l/LightningCloud.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class LightningCloud extends CardImpl {
+public final class LightningCloud extends CardImpl {
private final static FilterSpell filter = new FilterSpell("a red spell");
diff --git a/Mage.Sets/src/mage/cards/l/LightningCoils.java b/Mage.Sets/src/mage/cards/l/LightningCoils.java
index c0b56441fd3..2f6af2e2e8f 100644
--- a/Mage.Sets/src/mage/cards/l/LightningCoils.java
+++ b/Mage.Sets/src/mage/cards/l/LightningCoils.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author escplan9 - Derek Monturo
*/
-public class LightningCoils extends CardImpl {
+public final class LightningCoils extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a nontoken creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LightningCrafter.java b/Mage.Sets/src/mage/cards/l/LightningCrafter.java
index 7b18190c2a8..a46a9674e63 100644
--- a/Mage.Sets/src/mage/cards/l/LightningCrafter.java
+++ b/Mage.Sets/src/mage/cards/l/LightningCrafter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class LightningCrafter extends CardImpl {
+public final class LightningCrafter extends CardImpl {
public LightningCrafter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningDart.java b/Mage.Sets/src/mage/cards/l/LightningDart.java
index 318b1403e46..39a03cd9a24 100644
--- a/Mage.Sets/src/mage/cards/l/LightningDart.java
+++ b/Mage.Sets/src/mage/cards/l/LightningDart.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Derpthemeus
*/
-public class LightningDart extends CardImpl {
+public final class LightningDart extends CardImpl {
public LightningDart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningDiadem.java b/Mage.Sets/src/mage/cards/l/LightningDiadem.java
index e87e16105dd..7370bf0ec74 100644
--- a/Mage.Sets/src/mage/cards/l/LightningDiadem.java
+++ b/Mage.Sets/src/mage/cards/l/LightningDiadem.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LightningDiadem extends CardImpl {
+public final class LightningDiadem extends CardImpl {
public LightningDiadem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningDragon.java b/Mage.Sets/src/mage/cards/l/LightningDragon.java
index a59b548d591..44567ad46f5 100644
--- a/Mage.Sets/src/mage/cards/l/LightningDragon.java
+++ b/Mage.Sets/src/mage/cards/l/LightningDragon.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class LightningDragon extends CardImpl {
+public final class LightningDragon extends CardImpl {
public LightningDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningElemental.java b/Mage.Sets/src/mage/cards/l/LightningElemental.java
index 8237fcdff7b..53d78ac4d3f 100644
--- a/Mage.Sets/src/mage/cards/l/LightningElemental.java
+++ b/Mage.Sets/src/mage/cards/l/LightningElemental.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LightningElemental extends CardImpl {
+public final class LightningElemental extends CardImpl {
public LightningElemental (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningGreaves.java b/Mage.Sets/src/mage/cards/l/LightningGreaves.java
index 5528ca760ca..63d8fecf97a 100644
--- a/Mage.Sets/src/mage/cards/l/LightningGreaves.java
+++ b/Mage.Sets/src/mage/cards/l/LightningGreaves.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class LightningGreaves extends CardImpl {
+public final class LightningGreaves extends CardImpl {
public LightningGreaves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningHelix.java b/Mage.Sets/src/mage/cards/l/LightningHelix.java
index ac086bdf16e..7fad5d020ef 100644
--- a/Mage.Sets/src/mage/cards/l/LightningHelix.java
+++ b/Mage.Sets/src/mage/cards/l/LightningHelix.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class LightningHelix extends CardImpl {
+public final class LightningHelix extends CardImpl {
public LightningHelix (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningHounds.java b/Mage.Sets/src/mage/cards/l/LightningHounds.java
index bcfb9deca92..a46079af18e 100644
--- a/Mage.Sets/src/mage/cards/l/LightningHounds.java
+++ b/Mage.Sets/src/mage/cards/l/LightningHounds.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LightningHounds extends CardImpl {
+public final class LightningHounds extends CardImpl {
public LightningHounds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningJavelin.java b/Mage.Sets/src/mage/cards/l/LightningJavelin.java
index b48cc3257b8..a9f915e7f23 100644
--- a/Mage.Sets/src/mage/cards/l/LightningJavelin.java
+++ b/Mage.Sets/src/mage/cards/l/LightningJavelin.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class LightningJavelin extends CardImpl {
+public final class LightningJavelin extends CardImpl {
public LightningJavelin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningMauler.java b/Mage.Sets/src/mage/cards/l/LightningMauler.java
index 346dfe95d33..f66024312f2 100644
--- a/Mage.Sets/src/mage/cards/l/LightningMauler.java
+++ b/Mage.Sets/src/mage/cards/l/LightningMauler.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
* @author noxx
*/
-public class LightningMauler extends CardImpl {
+public final class LightningMauler extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, both creatures have haste";
diff --git a/Mage.Sets/src/mage/cards/l/LightningProwess.java b/Mage.Sets/src/mage/cards/l/LightningProwess.java
index a93cc2e7fd5..2356c918a0b 100644
--- a/Mage.Sets/src/mage/cards/l/LightningProwess.java
+++ b/Mage.Sets/src/mage/cards/l/LightningProwess.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class LightningProwess extends CardImpl {
+public final class LightningProwess extends CardImpl {
public LightningProwess(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningReaver.java b/Mage.Sets/src/mage/cards/l/LightningReaver.java
index 494cf7797a2..691d4b036c4 100644
--- a/Mage.Sets/src/mage/cards/l/LightningReaver.java
+++ b/Mage.Sets/src/mage/cards/l/LightningReaver.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class LightningReaver extends CardImpl {
+public final class LightningReaver extends CardImpl {
public LightningReaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningReflexes.java b/Mage.Sets/src/mage/cards/l/LightningReflexes.java
index 96270e24927..fe081df0454 100644
--- a/Mage.Sets/src/mage/cards/l/LightningReflexes.java
+++ b/Mage.Sets/src/mage/cards/l/LightningReflexes.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class LightningReflexes extends CardImpl {
+public final class LightningReflexes extends CardImpl {
public LightningReflexes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningRift.java b/Mage.Sets/src/mage/cards/l/LightningRift.java
index 5f65beabfc4..db098871f07 100644
--- a/Mage.Sets/src/mage/cards/l/LightningRift.java
+++ b/Mage.Sets/src/mage/cards/l/LightningRift.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class LightningRift extends CardImpl {
+public final class LightningRift extends CardImpl {
public LightningRift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningRigCrew.java b/Mage.Sets/src/mage/cards/l/LightningRigCrew.java
index 9afcd776e5f..44256f5ed03 100644
--- a/Mage.Sets/src/mage/cards/l/LightningRigCrew.java
+++ b/Mage.Sets/src/mage/cards/l/LightningRigCrew.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class LightningRigCrew extends CardImpl {
+public final class LightningRigCrew extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a Pirate spell");
diff --git a/Mage.Sets/src/mage/cards/l/LightningRunner.java b/Mage.Sets/src/mage/cards/l/LightningRunner.java
index fe7bb2f5d1f..6d2482e4973 100644
--- a/Mage.Sets/src/mage/cards/l/LightningRunner.java
+++ b/Mage.Sets/src/mage/cards/l/LightningRunner.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class LightningRunner extends CardImpl {
+public final class LightningRunner extends CardImpl {
public LightningRunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningSerpent.java b/Mage.Sets/src/mage/cards/l/LightningSerpent.java
index c567141b31c..30d542627f5 100644
--- a/Mage.Sets/src/mage/cards/l/LightningSerpent.java
+++ b/Mage.Sets/src/mage/cards/l/LightningSerpent.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent;
*
* @author LoneFox
*/
-public class LightningSerpent extends CardImpl {
+public final class LightningSerpent extends CardImpl {
public LightningSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningShrieker.java b/Mage.Sets/src/mage/cards/l/LightningShrieker.java
index b48034df1f0..91748245b57 100644
--- a/Mage.Sets/src/mage/cards/l/LightningShrieker.java
+++ b/Mage.Sets/src/mage/cards/l/LightningShrieker.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class LightningShrieker extends CardImpl {
+public final class LightningShrieker extends CardImpl {
public LightningShrieker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningStorm.java b/Mage.Sets/src/mage/cards/l/LightningStorm.java
index f92a98d28cf..3ebf04bd586 100644
--- a/Mage.Sets/src/mage/cards/l/LightningStorm.java
+++ b/Mage.Sets/src/mage/cards/l/LightningStorm.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class LightningStorm extends CardImpl {
+public final class LightningStorm extends CardImpl {
public LightningStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningStrike.java b/Mage.Sets/src/mage/cards/l/LightningStrike.java
index c95bfc80052..e6f6e92ba17 100644
--- a/Mage.Sets/src/mage/cards/l/LightningStrike.java
+++ b/Mage.Sets/src/mage/cards/l/LightningStrike.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class LightningStrike extends CardImpl {
+public final class LightningStrike extends CardImpl {
public LightningStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningSurge.java b/Mage.Sets/src/mage/cards/l/LightningSurge.java
index c5697dfa6d0..18e4396d6ed 100644
--- a/Mage.Sets/src/mage/cards/l/LightningSurge.java
+++ b/Mage.Sets/src/mage/cards/l/LightningSurge.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class LightningSurge extends CardImpl {
+public final class LightningSurge extends CardImpl {
public LightningSurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningTalons.java b/Mage.Sets/src/mage/cards/l/LightningTalons.java
index ebac4d2c23b..32f2124ee20 100644
--- a/Mage.Sets/src/mage/cards/l/LightningTalons.java
+++ b/Mage.Sets/src/mage/cards/l/LightningTalons.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class LightningTalons extends CardImpl {
+public final class LightningTalons extends CardImpl {
public LightningTalons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LightningVolley.java b/Mage.Sets/src/mage/cards/l/LightningVolley.java
index 4dc55953ebc..a1ca96a9175 100644
--- a/Mage.Sets/src/mage/cards/l/LightningVolley.java
+++ b/Mage.Sets/src/mage/cards/l/LightningVolley.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class LightningVolley extends CardImpl {
+public final class LightningVolley extends CardImpl {
public LightningVolley(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/Lightsaber.java b/Mage.Sets/src/mage/cards/l/Lightsaber.java
index 210cb571292..a436712c5d7 100644
--- a/Mage.Sets/src/mage/cards/l/Lightsaber.java
+++ b/Mage.Sets/src/mage/cards/l/Lightsaber.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class Lightsaber extends CardImpl {
+public final class Lightsaber extends CardImpl {
public Lightsaber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/l/Lightwalker.java b/Mage.Sets/src/mage/cards/l/Lightwalker.java
index 5b47f648baa..0032af09fc3 100644
--- a/Mage.Sets/src/mage/cards/l/Lightwalker.java
+++ b/Mage.Sets/src/mage/cards/l/Lightwalker.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class Lightwalker extends CardImpl {
+public final class Lightwalker extends CardImpl {
public Lightwalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LightwielderPaladin.java b/Mage.Sets/src/mage/cards/l/LightwielderPaladin.java
index 1d56ead8951..6ec41ab56e9 100644
--- a/Mage.Sets/src/mage/cards/l/LightwielderPaladin.java
+++ b/Mage.Sets/src/mage/cards/l/LightwielderPaladin.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class LightwielderPaladin extends CardImpl {
+public final class LightwielderPaladin extends CardImpl {
public LightwielderPaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/Lignify.java b/Mage.Sets/src/mage/cards/l/Lignify.java
index 788b26ab5e6..aeef713423c 100644
--- a/Mage.Sets/src/mage/cards/l/Lignify.java
+++ b/Mage.Sets/src/mage/cards/l/Lignify.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Lignify extends CardImpl {
+public final class Lignify extends CardImpl {
public Lignify(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java b/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java
index 93bf9c481e4..b66c29a21be 100644
--- a/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java
+++ b/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java
@@ -34,7 +34,6 @@ import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
-import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -43,7 +42,7 @@ import mage.constants.Outcome;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.counters.CounterType;
-import mage.filter.common.FilterCreatureCard;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.CounterPredicate;
import mage.game.Game;
@@ -54,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LilianaDeathWielder extends CardImpl {
+public final class LilianaDeathWielder extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with a -1/-1 counter on it");
@@ -111,11 +110,9 @@ class LilianaDeathWielderEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- if (player != null){
- for (Card card : player.getGraveyard().getCards(new FilterCreatureCard(), game)) {
- card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId());
- }
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ controller.moveCards(controller.getGraveyard().getCards(StaticFilters.FILTER_CARD_CREATURE, game), Zone.BATTLEFIELD, source, game);
}
return true;
}
diff --git a/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java b/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java
index 8251450c58e..7a555c43530 100644
--- a/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java
+++ b/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author JRHerlehy
*/
-public class LilianaDeathsMajesty extends CardImpl {
+public final class LilianaDeathsMajesty extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Zombie creatures");
diff --git a/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java b/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java
index be62977d53c..3920a931b40 100644
--- a/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java
+++ b/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class LilianaDefiantNecromancer extends CardImpl {
+public final class LilianaDefiantNecromancer extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("nonlegendary creature with converted mana cost X from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/l/LilianaHereticalHealer.java b/Mage.Sets/src/mage/cards/l/LilianaHereticalHealer.java
index 61299397959..c6cfa4d209a 100644
--- a/Mage.Sets/src/mage/cards/l/LilianaHereticalHealer.java
+++ b/Mage.Sets/src/mage/cards/l/LilianaHereticalHealer.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author LevelX2
*/
-public class LilianaHereticalHealer extends CardImpl {
+public final class LilianaHereticalHealer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another nontoken creature you control");
diff --git a/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java b/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java
index 4aeaeb48ff7..24fcd0db6c6 100644
--- a/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java
+++ b/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class LilianaOfTheDarkRealms extends CardImpl {
+public final class LilianaOfTheDarkRealms extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("Swamp card");
diff --git a/Mage.Sets/src/mage/cards/l/LilianaOfTheVeil.java b/Mage.Sets/src/mage/cards/l/LilianaOfTheVeil.java
index 9fb009ef337..8302f668d06 100644
--- a/Mage.Sets/src/mage/cards/l/LilianaOfTheVeil.java
+++ b/Mage.Sets/src/mage/cards/l/LilianaOfTheVeil.java
@@ -54,7 +54,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class LilianaOfTheVeil extends CardImpl {
+public final class LilianaOfTheVeil extends CardImpl {
public LilianaOfTheVeil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java b/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java
index e0f786e2fd5..d7d55c5c159 100644
--- a/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java
+++ b/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LilianaTheLastHope extends CardImpl {
+public final class LilianaTheLastHope extends CardImpl {
public LilianaTheLastHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LilianaVess.java b/Mage.Sets/src/mage/cards/l/LilianaVess.java
index a6b2c7d4e67..6156002a1dd 100644
--- a/Mage.Sets/src/mage/cards/l/LilianaVess.java
+++ b/Mage.Sets/src/mage/cards/l/LilianaVess.java
@@ -55,7 +55,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LilianaVess extends CardImpl {
+public final class LilianaVess extends CardImpl {
public LilianaVess(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LilianasCaress.java b/Mage.Sets/src/mage/cards/l/LilianasCaress.java
index ec875952fbd..2e73a5d0a02 100644
--- a/Mage.Sets/src/mage/cards/l/LilianasCaress.java
+++ b/Mage.Sets/src/mage/cards/l/LilianasCaress.java
@@ -39,7 +39,7 @@ import mage.constants.SetTargetPointer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LilianasCaress extends CardImpl {
+public final class LilianasCaress extends CardImpl {
public LilianasCaress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LilianasDefeat.java b/Mage.Sets/src/mage/cards/l/LilianasDefeat.java
index 081350eade2..59e6224072b 100644
--- a/Mage.Sets/src/mage/cards/l/LilianasDefeat.java
+++ b/Mage.Sets/src/mage/cards/l/LilianasDefeat.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class LilianasDefeat extends CardImpl {
+public final class LilianasDefeat extends CardImpl {
public LilianasDefeat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LilianasElite.java b/Mage.Sets/src/mage/cards/l/LilianasElite.java
index d0bcc9ff505..5a4032f7769 100644
--- a/Mage.Sets/src/mage/cards/l/LilianasElite.java
+++ b/Mage.Sets/src/mage/cards/l/LilianasElite.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LevelX2
*/
-public class LilianasElite extends CardImpl {
+public final class LilianasElite extends CardImpl {
public LilianasElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LilianasIndignation.java b/Mage.Sets/src/mage/cards/l/LilianasIndignation.java
index 0ce751a6a67..430c2c140cd 100644
--- a/Mage.Sets/src/mage/cards/l/LilianasIndignation.java
+++ b/Mage.Sets/src/mage/cards/l/LilianasIndignation.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class LilianasIndignation extends CardImpl {
+public final class LilianasIndignation extends CardImpl {
public LilianasIndignation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LilianasInfluence.java b/Mage.Sets/src/mage/cards/l/LilianasInfluence.java
index a72273df415..179d45065ec 100644
--- a/Mage.Sets/src/mage/cards/l/LilianasInfluence.java
+++ b/Mage.Sets/src/mage/cards/l/LilianasInfluence.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class LilianasInfluence extends CardImpl {
+public final class LilianasInfluence extends CardImpl {
private final static FilterCard filter = new FilterCard("Liliana, Death Wielder");
private final static FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/l/LilianasMastery.java b/Mage.Sets/src/mage/cards/l/LilianasMastery.java
index 9086de754fd..62b0d47de09 100644
--- a/Mage.Sets/src/mage/cards/l/LilianasMastery.java
+++ b/Mage.Sets/src/mage/cards/l/LilianasMastery.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author fireshoes
*/
-public class LilianasMastery extends CardImpl {
+public final class LilianasMastery extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures");
diff --git a/Mage.Sets/src/mage/cards/l/LilianasReaver.java b/Mage.Sets/src/mage/cards/l/LilianasReaver.java
index 9f6a7b43c07..98314cd4f34 100644
--- a/Mage.Sets/src/mage/cards/l/LilianasReaver.java
+++ b/Mage.Sets/src/mage/cards/l/LilianasReaver.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author LevelX2
*/
-public class LilianasReaver extends CardImpl {
+public final class LilianasReaver extends CardImpl {
public LilianasReaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LilianasShade.java b/Mage.Sets/src/mage/cards/l/LilianasShade.java
index 10b271690aa..e852a4e5ea3 100644
--- a/Mage.Sets/src/mage/cards/l/LilianasShade.java
+++ b/Mage.Sets/src/mage/cards/l/LilianasShade.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class LilianasShade extends CardImpl {
+public final class LilianasShade extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("Swamp");
diff --git a/Mage.Sets/src/mage/cards/l/LilianasSpecter.java b/Mage.Sets/src/mage/cards/l/LilianasSpecter.java
index 94084fcabad..ccbd1f5ab59 100644
--- a/Mage.Sets/src/mage/cards/l/LilianasSpecter.java
+++ b/Mage.Sets/src/mage/cards/l/LilianasSpecter.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LilianasSpecter extends CardImpl {
+public final class LilianasSpecter extends CardImpl {
public LilianasSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LiltingRefrain.java b/Mage.Sets/src/mage/cards/l/LiltingRefrain.java
index f28590cbebe..9ba1f1b6cd2 100644
--- a/Mage.Sets/src/mage/cards/l/LiltingRefrain.java
+++ b/Mage.Sets/src/mage/cards/l/LiltingRefrain.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class LiltingRefrain extends CardImpl {
+public final class LiltingRefrain extends CardImpl {
public LiltingRefrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LimDulTheNecromancer.java b/Mage.Sets/src/mage/cards/l/LimDulTheNecromancer.java
index c04355a0baf..8e538444fa5 100644
--- a/Mage.Sets/src/mage/cards/l/LimDulTheNecromancer.java
+++ b/Mage.Sets/src/mage/cards/l/LimDulTheNecromancer.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class LimDulTheNecromancer extends CardImpl {
+public final class LimDulTheNecromancer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature an opponent controls");
private static final FilterPermanent filter2 = new FilterPermanent("Zombie");
diff --git a/Mage.Sets/src/mage/cards/l/LimDulsHex.java b/Mage.Sets/src/mage/cards/l/LimDulsHex.java
index daa6d3fd465..e5a90b2031a 100644
--- a/Mage.Sets/src/mage/cards/l/LimDulsHex.java
+++ b/Mage.Sets/src/mage/cards/l/LimDulsHex.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class LimDulsHex extends CardImpl {
+public final class LimDulsHex extends CardImpl {
public LimDulsHex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LimDulsHighGuard.java b/Mage.Sets/src/mage/cards/l/LimDulsHighGuard.java
index 60e628c343d..c4f0ee71786 100644
--- a/Mage.Sets/src/mage/cards/l/LimDulsHighGuard.java
+++ b/Mage.Sets/src/mage/cards/l/LimDulsHighGuard.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class LimDulsHighGuard extends CardImpl {
+public final class LimDulsHighGuard extends CardImpl {
public LimDulsHighGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LimDulsPaladin.java b/Mage.Sets/src/mage/cards/l/LimDulsPaladin.java
index c363f1d2d41..4ef6be32ff2 100644
--- a/Mage.Sets/src/mage/cards/l/LimDulsPaladin.java
+++ b/Mage.Sets/src/mage/cards/l/LimDulsPaladin.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LoneFox
*/
-public class LimDulsPaladin extends CardImpl {
+public final class LimDulsPaladin extends CardImpl {
public LimDulsPaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LimDulsVault.java b/Mage.Sets/src/mage/cards/l/LimDulsVault.java
index e930d9f1cd2..70e00054406 100644
--- a/Mage.Sets/src/mage/cards/l/LimDulsVault.java
+++ b/Mage.Sets/src/mage/cards/l/LimDulsVault.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class LimDulsVault extends CardImpl {
+public final class LimDulsVault extends CardImpl {
public LimDulsVault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LimestoneGolem.java b/Mage.Sets/src/mage/cards/l/LimestoneGolem.java
index 9362b44004d..40680b6a77f 100644
--- a/Mage.Sets/src/mage/cards/l/LimestoneGolem.java
+++ b/Mage.Sets/src/mage/cards/l/LimestoneGolem.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class LimestoneGolem extends CardImpl {
+public final class LimestoneGolem extends CardImpl {
public LimestoneGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/l/LimitsOfSolidarity.java b/Mage.Sets/src/mage/cards/l/LimitsOfSolidarity.java
index f5a4aa8f27a..a25021d3c9c 100644
--- a/Mage.Sets/src/mage/cards/l/LimitsOfSolidarity.java
+++ b/Mage.Sets/src/mage/cards/l/LimitsOfSolidarity.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LimitsOfSolidarity extends CardImpl {
+public final class LimitsOfSolidarity extends CardImpl {
public LimitsOfSolidarity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java b/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java
index dffe54e9642..9454da12d1c 100644
--- a/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java
+++ b/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class LinSivviDefiantHero extends CardImpl {
+public final class LinSivviDefiantHero extends CardImpl {
private static final FilterCard filter = new FilterCard("Rebel card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/l/LinessaZephyrMage.java b/Mage.Sets/src/mage/cards/l/LinessaZephyrMage.java
index 097b5f3210a..b088f3500e4 100644
--- a/Mage.Sets/src/mage/cards/l/LinessaZephyrMage.java
+++ b/Mage.Sets/src/mage/cards/l/LinessaZephyrMage.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class LinessaZephyrMage extends CardImpl {
+public final class LinessaZephyrMage extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature with converted mana cost X");
diff --git a/Mage.Sets/src/mage/cards/l/LingeringDeath.java b/Mage.Sets/src/mage/cards/l/LingeringDeath.java
index 705c53e3821..239d238298f 100644
--- a/Mage.Sets/src/mage/cards/l/LingeringDeath.java
+++ b/Mage.Sets/src/mage/cards/l/LingeringDeath.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class LingeringDeath extends CardImpl {
+public final class LingeringDeath extends CardImpl {
public LingeringDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LingeringMirage.java b/Mage.Sets/src/mage/cards/l/LingeringMirage.java
index 225a327e5be..7bc089dde14 100644
--- a/Mage.Sets/src/mage/cards/l/LingeringMirage.java
+++ b/Mage.Sets/src/mage/cards/l/LingeringMirage.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class LingeringMirage extends CardImpl {
+public final class LingeringMirage extends CardImpl {
public LingeringMirage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LingeringPhantom.java b/Mage.Sets/src/mage/cards/l/LingeringPhantom.java
index 1b671ec374d..263f97b66bd 100644
--- a/Mage.Sets/src/mage/cards/l/LingeringPhantom.java
+++ b/Mage.Sets/src/mage/cards/l/LingeringPhantom.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.HistoricPredicate;
*
* @author TheElk801
*/
-public class LingeringPhantom extends CardImpl {
+public final class LingeringPhantom extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a historic spell");
diff --git a/Mage.Sets/src/mage/cards/l/LingeringSouls.java b/Mage.Sets/src/mage/cards/l/LingeringSouls.java
index 28399c54b8c..1c682cf7f10 100644
--- a/Mage.Sets/src/mage/cards/l/LingeringSouls.java
+++ b/Mage.Sets/src/mage/cards/l/LingeringSouls.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author Loki
*/
-public class LingeringSouls extends CardImpl {
+public final class LingeringSouls extends CardImpl {
public LingeringSouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LingeringTormentor.java b/Mage.Sets/src/mage/cards/l/LingeringTormentor.java
index 04d1c14cef8..954400ff476 100644
--- a/Mage.Sets/src/mage/cards/l/LingeringTormentor.java
+++ b/Mage.Sets/src/mage/cards/l/LingeringTormentor.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LingeringTormentor extends CardImpl {
+public final class LingeringTormentor extends CardImpl {
public LingeringTormentor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LinvalaKeeperOfSilence.java b/Mage.Sets/src/mage/cards/l/LinvalaKeeperOfSilence.java
index cf92b3e21df..13fab70a4ca 100644
--- a/Mage.Sets/src/mage/cards/l/LinvalaKeeperOfSilence.java
+++ b/Mage.Sets/src/mage/cards/l/LinvalaKeeperOfSilence.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class LinvalaKeeperOfSilence extends CardImpl {
+public final class LinvalaKeeperOfSilence extends CardImpl {
public LinvalaKeeperOfSilence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LinvalaThePreserver.java b/Mage.Sets/src/mage/cards/l/LinvalaThePreserver.java
index 5c7449909f2..71c237cb8ba 100644
--- a/Mage.Sets/src/mage/cards/l/LinvalaThePreserver.java
+++ b/Mage.Sets/src/mage/cards/l/LinvalaThePreserver.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.LinvalaAngelToken;
*
* @author fireshoes
*/
-public class LinvalaThePreserver extends CardImpl {
+public final class LinvalaThePreserver extends CardImpl {
public LinvalaThePreserver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LionheartMaverick.java b/Mage.Sets/src/mage/cards/l/LionheartMaverick.java
index 3ffcd7fc717..3b2778b1b9d 100644
--- a/Mage.Sets/src/mage/cards/l/LionheartMaverick.java
+++ b/Mage.Sets/src/mage/cards/l/LionheartMaverick.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class LionheartMaverick extends CardImpl {
+public final class LionheartMaverick extends CardImpl {
public LionheartMaverick(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LionsEyeDiamond.java b/Mage.Sets/src/mage/cards/l/LionsEyeDiamond.java
index d979ec7ba12..a9ef6f4b48c 100644
--- a/Mage.Sets/src/mage/cards/l/LionsEyeDiamond.java
+++ b/Mage.Sets/src/mage/cards/l/LionsEyeDiamond.java
@@ -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
@@ -46,10 +46,10 @@ import mage.players.Player;
*
* @author North
*/
-public class LionsEyeDiamond extends CardImpl {
+public final class LionsEyeDiamond extends CardImpl {
public LionsEyeDiamond(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{0}");
// Sacrifice Lion's Eye Diamond, Discard your hand: Add three mana of any one color. Activate this ability only any time you could cast an instant.
this.addAbility(new LionsEyeDiamondAbility());
@@ -65,18 +65,17 @@ public class LionsEyeDiamond extends CardImpl {
}
}
-
class LionsEyeDiamondAbility extends ActivatedManaAbilityImpl {
public LionsEyeDiamondAbility() {
super(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(3), new SacrificeSourceCost());
this.addCost(new DiscardHandCost());
- this.netMana.add(new Mana(0,0,0,0,0,0,3, 0));
+ this.netMana.add(new Mana(0, 0, 0, 0, 0, 0, 3, 0));
}
public LionsEyeDiamondAbility(Zone zone, Mana mana, Cost cost) {
super(zone, new BasicManaEffect(mana), cost);
-
+
}
public LionsEyeDiamondAbility(final LionsEyeDiamondAbility ability) {
@@ -84,12 +83,12 @@ class LionsEyeDiamondAbility extends ActivatedManaAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
Player player = game.getPlayer(playerId);
if (player != null && !player.isInPayManaMode()) {
return super.canActivate(playerId, game);
}
- return false;
+ return ActivationStatus.getFalse();
}
@Override
@@ -102,4 +101,3 @@ class LionsEyeDiamondAbility extends ActivatedManaAbilityImpl {
return super.getRule() + " Activate this ability only any time you could cast an instant.";
}
}
-
diff --git a/Mage.Sets/src/mage/cards/l/LiquidFire.java b/Mage.Sets/src/mage/cards/l/LiquidFire.java
index 39f4ff9bc24..cc2bfc424dc 100644
--- a/Mage.Sets/src/mage/cards/l/LiquidFire.java
+++ b/Mage.Sets/src/mage/cards/l/LiquidFire.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Dilnu
*/
-public class LiquidFire extends CardImpl {
+public final class LiquidFire extends CardImpl {
public LiquidFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/Liquify.java b/Mage.Sets/src/mage/cards/l/Liquify.java
index 84b735c3fe3..4ed6666a85a 100644
--- a/Mage.Sets/src/mage/cards/l/Liquify.java
+++ b/Mage.Sets/src/mage/cards/l/Liquify.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class Liquify extends CardImpl {
+public final class Liquify extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/l/LiquimetalCoating.java b/Mage.Sets/src/mage/cards/l/LiquimetalCoating.java
index 844e2c7cf05..2d3be64a7fd 100644
--- a/Mage.Sets/src/mage/cards/l/LiquimetalCoating.java
+++ b/Mage.Sets/src/mage/cards/l/LiquimetalCoating.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class LiquimetalCoating extends CardImpl {
+public final class LiquimetalCoating extends CardImpl {
public LiquimetalCoating (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/l/Lithatog.java b/Mage.Sets/src/mage/cards/l/Lithatog.java
index 4bd4d5c01c8..7e055d82601 100644
--- a/Mage.Sets/src/mage/cards/l/Lithatog.java
+++ b/Mage.Sets/src/mage/cards/l/Lithatog.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class Lithatog extends CardImpl {
+public final class Lithatog extends CardImpl {
public Lithatog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LithomancersFocus.java b/Mage.Sets/src/mage/cards/l/LithomancersFocus.java
index 8123ccc0165..c9cf289571e 100644
--- a/Mage.Sets/src/mage/cards/l/LithomancersFocus.java
+++ b/Mage.Sets/src/mage/cards/l/LithomancersFocus.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LithomancersFocus extends CardImpl {
+public final class LithomancersFocus extends CardImpl {
public LithomancersFocus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/l/Lithophage.java b/Mage.Sets/src/mage/cards/l/Lithophage.java
index db6a9440705..800da8e1ca7 100644
--- a/Mage.Sets/src/mage/cards/l/Lithophage.java
+++ b/Mage.Sets/src/mage/cards/l/Lithophage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class Lithophage extends CardImpl {
+public final class Lithophage extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a Mountain");
diff --git a/Mage.Sets/src/mage/cards/l/LiturgyOfBlood.java b/Mage.Sets/src/mage/cards/l/LiturgyOfBlood.java
index 16beeb18e4c..9a6f8c9f816 100644
--- a/Mage.Sets/src/mage/cards/l/LiturgyOfBlood.java
+++ b/Mage.Sets/src/mage/cards/l/LiturgyOfBlood.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LiturgyOfBlood extends CardImpl {
+public final class LiturgyOfBlood extends CardImpl {
public LiturgyOfBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LiuBeiLordOfShu.java b/Mage.Sets/src/mage/cards/l/LiuBeiLordOfShu.java
index 0f4b327f3f2..e23ca6dcd32 100644
--- a/Mage.Sets/src/mage/cards/l/LiuBeiLordOfShu.java
+++ b/Mage.Sets/src/mage/cards/l/LiuBeiLordOfShu.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author LoneFox
*/
-public class LiuBeiLordOfShu extends CardImpl {
+public final class LiuBeiLordOfShu extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/l/LiveFast.java b/Mage.Sets/src/mage/cards/l/LiveFast.java
index f0588b13219..7a5864e5fa7 100644
--- a/Mage.Sets/src/mage/cards/l/LiveFast.java
+++ b/Mage.Sets/src/mage/cards/l/LiveFast.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class LiveFast extends CardImpl {
+public final class LiveFast extends CardImpl {
public LiveFast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LivewireLash.java b/Mage.Sets/src/mage/cards/l/LivewireLash.java
index 8b66b737fc2..54570e0e3a5 100644
--- a/Mage.Sets/src/mage/cards/l/LivewireLash.java
+++ b/Mage.Sets/src/mage/cards/l/LivewireLash.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class LivewireLash extends CardImpl {
+public final class LivewireLash extends CardImpl {
public LivewireLash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/l/LivingAirship.java b/Mage.Sets/src/mage/cards/l/LivingAirship.java
index bd59195e159..6c87e3d674f 100644
--- a/Mage.Sets/src/mage/cards/l/LivingAirship.java
+++ b/Mage.Sets/src/mage/cards/l/LivingAirship.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class LivingAirship extends CardImpl {
+public final class LivingAirship extends CardImpl {
public LivingAirship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LivingArmor.java b/Mage.Sets/src/mage/cards/l/LivingArmor.java
index b87a3f3e8d1..6896c4d90c7 100644
--- a/Mage.Sets/src/mage/cards/l/LivingArmor.java
+++ b/Mage.Sets/src/mage/cards/l/LivingArmor.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Derpthemeus
*/
-public class LivingArmor extends CardImpl {
+public final class LivingArmor extends CardImpl {
public LivingArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/l/LivingArtifact.java b/Mage.Sets/src/mage/cards/l/LivingArtifact.java
index 815d64e9503..c10b4eeb3df 100644
--- a/Mage.Sets/src/mage/cards/l/LivingArtifact.java
+++ b/Mage.Sets/src/mage/cards/l/LivingArtifact.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LoneFox
*/
-public class LivingArtifact extends CardImpl {
+public final class LivingArtifact extends CardImpl {
public LivingArtifact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LivingDeath.java b/Mage.Sets/src/mage/cards/l/LivingDeath.java
index 968aa9f8973..0f590c951a9 100644
--- a/Mage.Sets/src/mage/cards/l/LivingDeath.java
+++ b/Mage.Sets/src/mage/cards/l/LivingDeath.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class LivingDeath extends CardImpl {
+public final class LivingDeath extends CardImpl {
public LivingDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LivingDestiny.java b/Mage.Sets/src/mage/cards/l/LivingDestiny.java
index 7225d16916d..0c2d12820e8 100644
--- a/Mage.Sets/src/mage/cards/l/LivingDestiny.java
+++ b/Mage.Sets/src/mage/cards/l/LivingDestiny.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class LivingDestiny extends CardImpl {
+public final class LivingDestiny extends CardImpl {
public LivingDestiny(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LivingEnd.java b/Mage.Sets/src/mage/cards/l/LivingEnd.java
index cb3419298a7..4b5c7479bbe 100644
--- a/Mage.Sets/src/mage/cards/l/LivingEnd.java
+++ b/Mage.Sets/src/mage/cards/l/LivingEnd.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class LivingEnd extends CardImpl {
+public final class LivingEnd extends CardImpl {
public LivingEnd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "");
diff --git a/Mage.Sets/src/mage/cards/l/LivingHive.java b/Mage.Sets/src/mage/cards/l/LivingHive.java
index 92df689154f..c24037a705b 100644
--- a/Mage.Sets/src/mage/cards/l/LivingHive.java
+++ b/Mage.Sets/src/mage/cards/l/LivingHive.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author ilcartographer
*/
-public class LivingHive extends CardImpl {
+public final class LivingHive extends CardImpl {
public LivingHive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LivingInferno.java b/Mage.Sets/src/mage/cards/l/LivingInferno.java
index aaa17b732e4..79aa27ff575 100644
--- a/Mage.Sets/src/mage/cards/l/LivingInferno.java
+++ b/Mage.Sets/src/mage/cards/l/LivingInferno.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LevelX2 & L_J
*/
-public class LivingInferno extends CardImpl {
+public final class LivingInferno extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/l/LivingLands.java b/Mage.Sets/src/mage/cards/l/LivingLands.java
index 08b25821847..0b20c1ebdf9 100644
--- a/Mage.Sets/src/mage/cards/l/LivingLands.java
+++ b/Mage.Sets/src/mage/cards/l/LivingLands.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author Quercitron
*/
-public class LivingLands extends CardImpl {
+public final class LivingLands extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Forests");
diff --git a/Mage.Sets/src/mage/cards/l/LivingLore.java b/Mage.Sets/src/mage/cards/l/LivingLore.java
index f9ae3d30e3f..4c058d1fe49 100644
--- a/Mage.Sets/src/mage/cards/l/LivingLore.java
+++ b/Mage.Sets/src/mage/cards/l/LivingLore.java
@@ -41,7 +41,6 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Layer;
import mage.constants.Outcome;
@@ -59,7 +58,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class LivingLore extends CardImpl {
+public final class LivingLore extends CardImpl {
public LivingLore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
@@ -207,7 +206,7 @@ class LivingLoreSacrificeEffect extends OneShotEffect {
}
if (exiledCard != null) {
if (exiledCard.getSpellAbility().canChooseTarget(game)) {
- controller.cast(exiledCard.getSpellAbility(), game, true);
+ controller.cast(exiledCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/l/LivingPlane.java b/Mage.Sets/src/mage/cards/l/LivingPlane.java
index 86694ca1811..22ec4430004 100644
--- a/Mage.Sets/src/mage/cards/l/LivingPlane.java
+++ b/Mage.Sets/src/mage/cards/l/LivingPlane.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.custom.CreatureToken;
*
* @author fireshoes
*/
-public class LivingPlane extends CardImpl {
+public final class LivingPlane extends CardImpl {
public LivingPlane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LivingTerrain.java b/Mage.Sets/src/mage/cards/l/LivingTerrain.java
index 21c05cb2931..dd3f2c747ce 100644
--- a/Mage.Sets/src/mage/cards/l/LivingTerrain.java
+++ b/Mage.Sets/src/mage/cards/l/LivingTerrain.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class LivingTerrain extends CardImpl {
+public final class LivingTerrain extends CardImpl {
public LivingTerrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LivingTotem.java b/Mage.Sets/src/mage/cards/l/LivingTotem.java
index 534e4ce6961..7a28b3a8866 100644
--- a/Mage.Sets/src/mage/cards/l/LivingTotem.java
+++ b/Mage.Sets/src/mage/cards/l/LivingTotem.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LivingTotem extends CardImpl {
+public final class LivingTotem extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/l/LivingTsunami.java b/Mage.Sets/src/mage/cards/l/LivingTsunami.java
index b9d6e8efc38..1ba817d69e3 100644
--- a/Mage.Sets/src/mage/cards/l/LivingTsunami.java
+++ b/Mage.Sets/src/mage/cards/l/LivingTsunami.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class LivingTsunami extends CardImpl {
+public final class LivingTsunami extends CardImpl {
static final private FilterControlledPermanent filter = new FilterControlledPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/l/LivingWall.java b/Mage.Sets/src/mage/cards/l/LivingWall.java
index da50c0c62b3..859c3326302 100644
--- a/Mage.Sets/src/mage/cards/l/LivingWall.java
+++ b/Mage.Sets/src/mage/cards/l/LivingWall.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class LivingWall extends CardImpl {
+public final class LivingWall extends CardImpl {
public LivingWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/l/LivingWish.java b/Mage.Sets/src/mage/cards/l/LivingWish.java
index 1e3bc15a4c3..707888b17c1 100644
--- a/Mage.Sets/src/mage/cards/l/LivingWish.java
+++ b/Mage.Sets/src/mage/cards/l/LivingWish.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class LivingWish extends CardImpl {
+public final class LivingWish extends CardImpl {
private static final FilterCard filter = new FilterCard("creature or land card");
diff --git a/Mage.Sets/src/mage/cards/l/LivonyaSilone.java b/Mage.Sets/src/mage/cards/l/LivonyaSilone.java
index 17774439144..52bb7a0dd2a 100644
--- a/Mage.Sets/src/mage/cards/l/LivonyaSilone.java
+++ b/Mage.Sets/src/mage/cards/l/LivonyaSilone.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author LoneFox
*/
-public class LivonyaSilone extends CardImpl {
+public final class LivonyaSilone extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Legendary land");
diff --git a/Mage.Sets/src/mage/cards/l/LizardWarrior.java b/Mage.Sets/src/mage/cards/l/LizardWarrior.java
index 547dc1a64a1..86e0ad4e349 100644
--- a/Mage.Sets/src/mage/cards/l/LizardWarrior.java
+++ b/Mage.Sets/src/mage/cards/l/LizardWarrior.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class LizardWarrior extends CardImpl {
+public final class LizardWarrior extends CardImpl {
public LizardWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarAugur.java b/Mage.Sets/src/mage/cards/l/LlanowarAugur.java
index fdd3ae1b8c0..600263c0ec2 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarAugur.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarAugur.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class LlanowarAugur extends CardImpl {
+public final class LlanowarAugur extends CardImpl {
public LlanowarAugur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarBehemoth.java b/Mage.Sets/src/mage/cards/l/LlanowarBehemoth.java
index a8e8fe870d8..9c30591d250 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarBehemoth.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarBehemoth.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class LlanowarBehemoth extends CardImpl {
+public final class LlanowarBehemoth extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarCavalry.java b/Mage.Sets/src/mage/cards/l/LlanowarCavalry.java
index ca6f1f6cb24..df49638e454 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarCavalry.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarCavalry.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author michael.napoleon@gmail.com
*/
-public class LlanowarCavalry extends CardImpl {
+public final class LlanowarCavalry extends CardImpl {
public LlanowarCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarDead.java b/Mage.Sets/src/mage/cards/l/LlanowarDead.java
index 2698ba2e16b..77403a30ed4 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarDead.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarDead.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LlanowarDead extends CardImpl {
+public final class LlanowarDead extends CardImpl {
public LlanowarDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarDruid.java b/Mage.Sets/src/mage/cards/l/LlanowarDruid.java
index c4b98bd94fc..9eefeaad814 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarDruid.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarDruid.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author North
*/
-public class LlanowarDruid extends CardImpl {
+public final class LlanowarDruid extends CardImpl {
public LlanowarDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarElite.java b/Mage.Sets/src/mage/cards/l/LlanowarElite.java
index 100b4b63770..af25db90585 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarElite.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarElite.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author michael.napoleon@gmail.com
*/
-public class LlanowarElite extends CardImpl {
+public final class LlanowarElite extends CardImpl {
public LlanowarElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarElves.java b/Mage.Sets/src/mage/cards/l/LlanowarElves.java
index 9cc0f6d8d6d..e83e18a1719 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarElves.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarElves.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LlanowarElves extends CardImpl {
+public final class LlanowarElves extends CardImpl {
public LlanowarElves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarEmpath.java b/Mage.Sets/src/mage/cards/l/LlanowarEmpath.java
index 881dfabd2a4..8784b94c91f 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarEmpath.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarEmpath.java
@@ -51,7 +51,7 @@ import mage.players.Player;
* @author LoneFox
*
*/
-public class LlanowarEmpath extends CardImpl {
+public final class LlanowarEmpath extends CardImpl {
public LlanowarEmpath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarEnvoy.java b/Mage.Sets/src/mage/cards/l/LlanowarEnvoy.java
index 4b338590428..59d7ab5d48c 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarEnvoy.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarEnvoy.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class LlanowarEnvoy extends CardImpl {
+public final class LlanowarEnvoy extends CardImpl {
public LlanowarEnvoy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarKnight.java b/Mage.Sets/src/mage/cards/l/LlanowarKnight.java
index 73d28c83c0b..e181bc21a45 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarKnight.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarKnight.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author michael.napoleon@gmail.com
*/
-public class LlanowarKnight extends CardImpl {
+public final class LlanowarKnight extends CardImpl {
public LlanowarKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarMentor.java b/Mage.Sets/src/mage/cards/l/LlanowarMentor.java
index 3336f02a31a..f595a54f360 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarMentor.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarMentor.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.LlanowarElvesToken;
*
* @author LoneFox
*/
-public class LlanowarMentor extends CardImpl {
+public final class LlanowarMentor extends CardImpl {
public LlanowarMentor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarReborn.java b/Mage.Sets/src/mage/cards/l/LlanowarReborn.java
index 2889f353b3b..24f842c34cf 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarReborn.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarReborn.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class LlanowarReborn extends CardImpl {
+public final class LlanowarReborn extends CardImpl {
public LlanowarReborn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarScout.java b/Mage.Sets/src/mage/cards/l/LlanowarScout.java
index abd1722d943..88fec8247e7 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarScout.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarScout.java
@@ -31,18 +31,19 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
+import mage.filter.StaticFilters;
/**
*
* @author TheElk801
*/
-public class LlanowarScout extends CardImpl {
+public final class LlanowarScout extends CardImpl {
public LlanowarScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
@@ -53,7 +54,8 @@ public class LlanowarScout extends CardImpl {
this.toughness = new MageInt(3);
// {T}: You may put a land card from your hand onto the battlefield.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutLandFromHandOntoBattlefieldEffect(), new TapSourceCost()));
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_BASIC_LAND_A), new TapSourceCost()));
}
public LlanowarScout(final LlanowarScout card) {
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarSentinel.java b/Mage.Sets/src/mage/cards/l/LlanowarSentinel.java
index 704d43c4d1e..1ab849665f1 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarSentinel.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarSentinel.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
* @author LoneFox
*/
-public class LlanowarSentinel extends CardImpl {
+public final class LlanowarSentinel extends CardImpl {
public LlanowarSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarVanguard.java b/Mage.Sets/src/mage/cards/l/LlanowarVanguard.java
index 5eb813e1c40..eb832c366f5 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarVanguard.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarVanguard.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class LlanowarVanguard extends CardImpl {
+public final class LlanowarVanguard extends CardImpl {
public LlanowarVanguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarWastes.java b/Mage.Sets/src/mage/cards/l/LlanowarWastes.java
index 67f9bb98f1f..a178cfc5ff8 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarWastes.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarWastes.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class LlanowarWastes extends CardImpl {
+public final class LlanowarWastes extends CardImpl {
public LlanowarWastes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/l/LlawanCephalidEmpress.java b/Mage.Sets/src/mage/cards/l/LlawanCephalidEmpress.java
index bec6ee85515..1d97d2328a3 100644
--- a/Mage.Sets/src/mage/cards/l/LlawanCephalidEmpress.java
+++ b/Mage.Sets/src/mage/cards/l/LlawanCephalidEmpress.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class LlawanCephalidEmpress extends CardImpl {
+public final class LlawanCephalidEmpress extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/l/LoamDryad.java b/Mage.Sets/src/mage/cards/l/LoamDryad.java
index a7e308ed9a7..7b1f1dc190b 100644
--- a/Mage.Sets/src/mage/cards/l/LoamDryad.java
+++ b/Mage.Sets/src/mage/cards/l/LoamDryad.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class LoamDryad extends CardImpl {
+public final class LoamDryad extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/l/LoamDweller.java b/Mage.Sets/src/mage/cards/l/LoamDweller.java
index 2f338e36cc7..cc0d8786068 100644
--- a/Mage.Sets/src/mage/cards/l/LoamDweller.java
+++ b/Mage.Sets/src/mage/cards/l/LoamDweller.java
@@ -30,7 +30,7 @@ package mage.cards.l;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -41,17 +41,19 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class LoamDweller extends CardImpl {
+public final class LoamDweller extends CardImpl {
public LoamDweller(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
this.subtype.add(SubType.SPIRIT);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Whenever you cast a Spirit or Arcane spell, you may put a land card from your hand onto the battlefield tapped.
- this.addAbility(new SpellCastControllerTriggeredAbility(new PutLandFromHandOntoBattlefieldEffect(true), StaticFilters.SPIRIT_OR_ARCANE_CARD, true));
+ this.addAbility(new SpellCastControllerTriggeredAbility(
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A, false, true),
+ StaticFilters.SPIRIT_OR_ARCANE_CARD, true));
}
public LoamDweller(final LoamDweller card) {
diff --git a/Mage.Sets/src/mage/cards/l/LoamLarva.java b/Mage.Sets/src/mage/cards/l/LoamLarva.java
index 38e0791954b..5ac5445dc4f 100644
--- a/Mage.Sets/src/mage/cards/l/LoamLarva.java
+++ b/Mage.Sets/src/mage/cards/l/LoamLarva.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class LoamLarva extends CardImpl {
+public final class LoamLarva extends CardImpl {
public LoamLarva(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
@@ -52,7 +52,7 @@ public class LoamLarva extends CardImpl {
this.toughness = new MageInt(3);
// When Loam Larva enters the battlefield, you may search your library for a basic land card, reveal it, then shuffle your library and put that card on top of it.
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutOnLibraryEffect(target, true, true), true));
}
diff --git a/Mage.Sets/src/mage/cards/l/LoamLion.java b/Mage.Sets/src/mage/cards/l/LoamLion.java
index cdb4f3bf698..3efe84696fb 100644
--- a/Mage.Sets/src/mage/cards/l/LoamLion.java
+++ b/Mage.Sets/src/mage/cards/l/LoamLion.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class LoamLion extends CardImpl {
+public final class LoamLion extends CardImpl {
private static final String rule = "{this} gets +1/+2 as long as you control a Forest";
private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/l/LoamdraggerGiant.java b/Mage.Sets/src/mage/cards/l/LoamdraggerGiant.java
index d8561e17c3a..9c0eeeed639 100644
--- a/Mage.Sets/src/mage/cards/l/LoamdraggerGiant.java
+++ b/Mage.Sets/src/mage/cards/l/LoamdraggerGiant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LoamdraggerGiant extends CardImpl {
+public final class LoamdraggerGiant extends CardImpl {
public LoamdraggerGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R/G}{R/G}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/l/LoamingShaman.java b/Mage.Sets/src/mage/cards/l/LoamingShaman.java
index 0e204897b7d..4ce7eddb60f 100644
--- a/Mage.Sets/src/mage/cards/l/LoamingShaman.java
+++ b/Mage.Sets/src/mage/cards/l/LoamingShaman.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class LoamingShaman extends CardImpl {
+public final class LoamingShaman extends CardImpl {
public LoamingShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LoathsomeCatoblepas.java b/Mage.Sets/src/mage/cards/l/LoathsomeCatoblepas.java
index ac83543e0e7..c6e0b8f6ef6 100644
--- a/Mage.Sets/src/mage/cards/l/LoathsomeCatoblepas.java
+++ b/Mage.Sets/src/mage/cards/l/LoathsomeCatoblepas.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LoathsomeCatoblepas extends CardImpl {
+public final class LoathsomeCatoblepas extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LobberCrew.java b/Mage.Sets/src/mage/cards/l/LobberCrew.java
index 09d298e3c61..80338c2ca1b 100644
--- a/Mage.Sets/src/mage/cards/l/LobberCrew.java
+++ b/Mage.Sets/src/mage/cards/l/LobberCrew.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class LobberCrew extends CardImpl {
+public final class LobberCrew extends CardImpl {
public LobberCrew(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LobeLobber.java b/Mage.Sets/src/mage/cards/l/LobeLobber.java
index d720b96565b..b53af936932 100644
--- a/Mage.Sets/src/mage/cards/l/LobeLobber.java
+++ b/Mage.Sets/src/mage/cards/l/LobeLobber.java
@@ -54,7 +54,7 @@ import mage.target.TargetPlayer;
*
* @author spjspj
*/
-public class LobeLobber extends CardImpl {
+public final class LobeLobber extends CardImpl {
public LobeLobber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/l/Lobotomy.java b/Mage.Sets/src/mage/cards/l/Lobotomy.java
index 26bdd6e6cbf..47f101348fd 100644
--- a/Mage.Sets/src/mage/cards/l/Lobotomy.java
+++ b/Mage.Sets/src/mage/cards/l/Lobotomy.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class Lobotomy extends CardImpl {
+public final class Lobotomy extends CardImpl {
public Lobotomy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LochKorrigan.java b/Mage.Sets/src/mage/cards/l/LochKorrigan.java
index ced24dbc37b..d5a8e0e0e67 100644
--- a/Mage.Sets/src/mage/cards/l/LochKorrigan.java
+++ b/Mage.Sets/src/mage/cards/l/LochKorrigan.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class LochKorrigan extends CardImpl {
+public final class LochKorrigan extends CardImpl {
public LochKorrigan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LocketOfYesterdays.java b/Mage.Sets/src/mage/cards/l/LocketOfYesterdays.java
index c9ea2cb4ed7..75fda6537e1 100644
--- a/Mage.Sets/src/mage/cards/l/LocketOfYesterdays.java
+++ b/Mage.Sets/src/mage/cards/l/LocketOfYesterdays.java
@@ -44,7 +44,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class LocketOfYesterdays extends CardImpl {
+public final class LocketOfYesterdays extends CardImpl {
public LocketOfYesterdays(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/l/LockjawSnapper.java b/Mage.Sets/src/mage/cards/l/LockjawSnapper.java
index 846870ecf1f..5798fdc4e57 100644
--- a/Mage.Sets/src/mage/cards/l/LockjawSnapper.java
+++ b/Mage.Sets/src/mage/cards/l/LockjawSnapper.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class LockjawSnapper extends CardImpl {
+public final class LockjawSnapper extends CardImpl {
public LockjawSnapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/l/LocustMiser.java b/Mage.Sets/src/mage/cards/l/LocustMiser.java
index da93f5b00a5..289ebdd6ef2 100644
--- a/Mage.Sets/src/mage/cards/l/LocustMiser.java
+++ b/Mage.Sets/src/mage/cards/l/LocustMiser.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class LocustMiser extends CardImpl {
+public final class LocustMiser extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("blue creature");
diff --git a/Mage.Sets/src/mage/cards/l/LocustSwarm.java b/Mage.Sets/src/mage/cards/l/LocustSwarm.java
index c594f9b283b..249452d5078 100644
--- a/Mage.Sets/src/mage/cards/l/LocustSwarm.java
+++ b/Mage.Sets/src/mage/cards/l/LocustSwarm.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class LocustSwarm extends CardImpl {
+public final class LocustSwarm extends CardImpl {
public LocustSwarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LodestoneBauble.java b/Mage.Sets/src/mage/cards/l/LodestoneBauble.java
index 60fa3ff2961..98ebf0c1bbc 100644
--- a/Mage.Sets/src/mage/cards/l/LodestoneBauble.java
+++ b/Mage.Sets/src/mage/cards/l/LodestoneBauble.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author ThomasLerner, LevelX2 & L_J
*/
-public class LodestoneBauble extends CardImpl {
+public final class LodestoneBauble extends CardImpl {
public LodestoneBauble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{0}");
diff --git a/Mage.Sets/src/mage/cards/l/LodestoneGolem.java b/Mage.Sets/src/mage/cards/l/LodestoneGolem.java
index 1602273f3d6..b475cdd0cf0 100644
--- a/Mage.Sets/src/mage/cards/l/LodestoneGolem.java
+++ b/Mage.Sets/src/mage/cards/l/LodestoneGolem.java
@@ -49,7 +49,7 @@ import mage.game.Game;
*
* @author jeffwadsworth
*/
-public class LodestoneGolem extends CardImpl {
+public final class LodestoneGolem extends CardImpl {
public LodestoneGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/l/LodestoneMyr.java b/Mage.Sets/src/mage/cards/l/LodestoneMyr.java
index a0e5730da85..e6d95b354b2 100644
--- a/Mage.Sets/src/mage/cards/l/LodestoneMyr.java
+++ b/Mage.Sets/src/mage/cards/l/LodestoneMyr.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class LodestoneMyr extends CardImpl {
+public final class LodestoneMyr extends CardImpl {
private static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("untapped artifact you control");
diff --git a/Mage.Sets/src/mage/cards/l/LogicKnot.java b/Mage.Sets/src/mage/cards/l/LogicKnot.java
index 56e686c1c9a..c2db00b0ec8 100644
--- a/Mage.Sets/src/mage/cards/l/LogicKnot.java
+++ b/Mage.Sets/src/mage/cards/l/LogicKnot.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class LogicKnot extends CardImpl {
+public final class LogicKnot extends CardImpl {
public LogicKnot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LoneMissionary.java b/Mage.Sets/src/mage/cards/l/LoneMissionary.java
index cdfb5d019fe..b4803f444de 100644
--- a/Mage.Sets/src/mage/cards/l/LoneMissionary.java
+++ b/Mage.Sets/src/mage/cards/l/LoneMissionary.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LoneMissionary extends CardImpl {
+public final class LoneMissionary extends CardImpl {
public LoneMissionary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoneRevenant.java b/Mage.Sets/src/mage/cards/l/LoneRevenant.java
index 998fdf4f4c9..80bd87698ce 100644
--- a/Mage.Sets/src/mage/cards/l/LoneRevenant.java
+++ b/Mage.Sets/src/mage/cards/l/LoneRevenant.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class LoneRevenant extends CardImpl {
+public final class LoneRevenant extends CardImpl {
public LoneRevenant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LoneRider.java b/Mage.Sets/src/mage/cards/l/LoneRider.java
index 9b092ecf883..9ac8b9efa54 100644
--- a/Mage.Sets/src/mage/cards/l/LoneRider.java
+++ b/Mage.Sets/src/mage/cards/l/LoneRider.java
@@ -50,7 +50,7 @@ import mage.watchers.common.PlayerGainedLifeWatcher;
*
* @author fireshoes
*/
-public class LoneRider extends CardImpl {
+public final class LoneRider extends CardImpl {
private static final String ruleText = "At the beginning of the end step, if you gained 3 or more life this turn, transform {this}";
diff --git a/Mage.Sets/src/mage/cards/l/LoneWolf.java b/Mage.Sets/src/mage/cards/l/LoneWolf.java
index 51dc9fb0e78..ca6e0dab220 100644
--- a/Mage.Sets/src/mage/cards/l/LoneWolf.java
+++ b/Mage.Sets/src/mage/cards/l/LoneWolf.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class LoneWolf extends CardImpl {
+public final class LoneWolf extends CardImpl {
public LoneWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LoneWolfOfTheNatterknolls.java b/Mage.Sets/src/mage/cards/l/LoneWolfOfTheNatterknolls.java
index 74f9e155791..2dcebe373c6 100644
--- a/Mage.Sets/src/mage/cards/l/LoneWolfOfTheNatterknolls.java
+++ b/Mage.Sets/src/mage/cards/l/LoneWolfOfTheNatterknolls.java
@@ -49,7 +49,7 @@ import mage.filter.FilterSpell;
*
* @author LevelX2
*/
-public class LoneWolfOfTheNatterknolls extends CardImpl {
+public final class LoneWolfOfTheNatterknolls extends CardImpl {
public LoneWolfOfTheNatterknolls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/l/LonelySandbar.java b/Mage.Sets/src/mage/cards/l/LonelySandbar.java
index 0caf2378902..21499d381e4 100644
--- a/Mage.Sets/src/mage/cards/l/LonelySandbar.java
+++ b/Mage.Sets/src/mage/cards/l/LonelySandbar.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class LonelySandbar extends CardImpl {
+public final class LonelySandbar extends CardImpl {
public LonelySandbar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/l/LongFinnedSkywhale.java b/Mage.Sets/src/mage/cards/l/LongFinnedSkywhale.java
index 139c356889d..1da5a5e76d2 100644
--- a/Mage.Sets/src/mage/cards/l/LongFinnedSkywhale.java
+++ b/Mage.Sets/src/mage/cards/l/LongFinnedSkywhale.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class LongFinnedSkywhale extends CardImpl {
+public final class LongFinnedSkywhale extends CardImpl {
public LongFinnedSkywhale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LongForgottenGohei.java b/Mage.Sets/src/mage/cards/l/LongForgottenGohei.java
index 5518e908d63..151a4fa361c 100644
--- a/Mage.Sets/src/mage/cards/l/LongForgottenGohei.java
+++ b/Mage.Sets/src/mage/cards/l/LongForgottenGohei.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
* @author LevelX2
*/
-public class LongForgottenGohei extends CardImpl {
+public final class LongForgottenGohei extends CardImpl {
private static final FilterCard arcaneFilter = new FilterCard("Arcane spells");
private static final FilterCreaturePermanent spiritFilter = new FilterCreaturePermanent("Spirit creatures");
diff --git a/Mage.Sets/src/mage/cards/l/LongRoadHome.java b/Mage.Sets/src/mage/cards/l/LongRoadHome.java
index 43a94cfd71e..e0723f16b63 100644
--- a/Mage.Sets/src/mage/cards/l/LongRoadHome.java
+++ b/Mage.Sets/src/mage/cards/l/LongRoadHome.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LongRoadHome extends CardImpl {
+public final class LongRoadHome extends CardImpl {
public LongRoadHome(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LongTermPlans.java b/Mage.Sets/src/mage/cards/l/LongTermPlans.java
index d99d9c781a2..b946ed36d3c 100644
--- a/Mage.Sets/src/mage/cards/l/LongTermPlans.java
+++ b/Mage.Sets/src/mage/cards/l/LongTermPlans.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class LongTermPlans extends CardImpl {
+public final class LongTermPlans extends CardImpl {
public LongTermPlans(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LongbowArcher.java b/Mage.Sets/src/mage/cards/l/LongbowArcher.java
index baf98372dde..268b57c8a4e 100644
--- a/Mage.Sets/src/mage/cards/l/LongbowArcher.java
+++ b/Mage.Sets/src/mage/cards/l/LongbowArcher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Quercitron
*/
-public class LongbowArcher extends CardImpl {
+public final class LongbowArcher extends CardImpl {
public LongbowArcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LonghornFirebeast.java b/Mage.Sets/src/mage/cards/l/LonghornFirebeast.java
index fb0ccd56b02..28ea706d747 100644
--- a/Mage.Sets/src/mage/cards/l/LonghornFirebeast.java
+++ b/Mage.Sets/src/mage/cards/l/LonghornFirebeast.java
@@ -46,7 +46,7 @@ import mage.players.Player;
* @author noxx & L_J
*/
-public class LonghornFirebeast extends CardImpl {
+public final class LonghornFirebeast extends CardImpl {
public LonghornFirebeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LongshotSquad.java b/Mage.Sets/src/mage/cards/l/LongshotSquad.java
index e0c0c7b42bd..39c5742de1e 100644
--- a/Mage.Sets/src/mage/cards/l/LongshotSquad.java
+++ b/Mage.Sets/src/mage/cards/l/LongshotSquad.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author LevelX2
*/
-public class LongshotSquad extends CardImpl {
+public final class LongshotSquad extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/l/LongtuskCub.java b/Mage.Sets/src/mage/cards/l/LongtuskCub.java
index 10d33055510..3a7e73f80b1 100644
--- a/Mage.Sets/src/mage/cards/l/LongtuskCub.java
+++ b/Mage.Sets/src/mage/cards/l/LongtuskCub.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class LongtuskCub extends CardImpl {
+public final class LongtuskCub extends CardImpl {
public LongtuskCub(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LookoutsDispersal.java b/Mage.Sets/src/mage/cards/l/LookoutsDispersal.java
index 2aa8d97464f..d3d8b5d8108 100644
--- a/Mage.Sets/src/mage/cards/l/LookoutsDispersal.java
+++ b/Mage.Sets/src/mage/cards/l/LookoutsDispersal.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author TheElk801
*/
-public class LookoutsDispersal extends CardImpl {
+public final class LookoutsDispersal extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Pirate");
diff --git a/Mage.Sets/src/mage/cards/l/LoomingAltisaur.java b/Mage.Sets/src/mage/cards/l/LoomingAltisaur.java
index 78a6135a426..8e6b866c161 100644
--- a/Mage.Sets/src/mage/cards/l/LoomingAltisaur.java
+++ b/Mage.Sets/src/mage/cards/l/LoomingAltisaur.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class LoomingAltisaur extends CardImpl {
+public final class LoomingAltisaur extends CardImpl {
public LoomingAltisaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoomingHoverguard.java b/Mage.Sets/src/mage/cards/l/LoomingHoverguard.java
index 52fa0f709c2..bf209659b5e 100644
--- a/Mage.Sets/src/mage/cards/l/LoomingHoverguard.java
+++ b/Mage.Sets/src/mage/cards/l/LoomingHoverguard.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class LoomingHoverguard extends CardImpl {
+public final class LoomingHoverguard extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/l/LoomingShade.java b/Mage.Sets/src/mage/cards/l/LoomingShade.java
index b8feb2a16c5..f5010615efe 100644
--- a/Mage.Sets/src/mage/cards/l/LoomingShade.java
+++ b/Mage.Sets/src/mage/cards/l/LoomingShade.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class LoomingShade extends CardImpl {
+public final class LoomingShade extends CardImpl {
public LoomingShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LoomingSpires.java b/Mage.Sets/src/mage/cards/l/LoomingSpires.java
index 1bca5a79280..43ba6253c35 100644
--- a/Mage.Sets/src/mage/cards/l/LoomingSpires.java
+++ b/Mage.Sets/src/mage/cards/l/LoomingSpires.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class LoomingSpires extends CardImpl {
+public final class LoomingSpires extends CardImpl {
public LoomingSpires(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/l/LooterIlKor.java b/Mage.Sets/src/mage/cards/l/LooterIlKor.java
index d28cab33fee..8d2888ea281 100644
--- a/Mage.Sets/src/mage/cards/l/LooterIlKor.java
+++ b/Mage.Sets/src/mage/cards/l/LooterIlKor.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LooterIlKor extends CardImpl {
+public final class LooterIlKor extends CardImpl {
public LooterIlKor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LordMagnus.java b/Mage.Sets/src/mage/cards/l/LordMagnus.java
index b0400022a74..3dd3604fe04 100644
--- a/Mage.Sets/src/mage/cards/l/LordMagnus.java
+++ b/Mage.Sets/src/mage/cards/l/LordMagnus.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class LordMagnus extends CardImpl {
+public final class LordMagnus extends CardImpl {
public LordMagnus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LordOfAtlantis.java b/Mage.Sets/src/mage/cards/l/LordOfAtlantis.java
index 4bd200e3e96..9759c41756d 100644
--- a/Mage.Sets/src/mage/cards/l/LordOfAtlantis.java
+++ b/Mage.Sets/src/mage/cards/l/LordOfAtlantis.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jonubuu
*/
-public class LordOfAtlantis extends CardImpl {
+public final class LordOfAtlantis extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk creatures");
diff --git a/Mage.Sets/src/mage/cards/l/LordOfExtinction.java b/Mage.Sets/src/mage/cards/l/LordOfExtinction.java
index 6cbdc095cb8..f625fa43194 100644
--- a/Mage.Sets/src/mage/cards/l/LordOfExtinction.java
+++ b/Mage.Sets/src/mage/cards/l/LordOfExtinction.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class LordOfExtinction extends CardImpl {
+public final class LordOfExtinction extends CardImpl {
public LordOfExtinction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LordOfLineage.java b/Mage.Sets/src/mage/cards/l/LordOfLineage.java
index 1b4e4ddb05d..6e1b3be302c 100644
--- a/Mage.Sets/src/mage/cards/l/LordOfLineage.java
+++ b/Mage.Sets/src/mage/cards/l/LordOfLineage.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.VampireToken;
*
* @author Loki
*/
-public class LordOfLineage extends CardImpl {
+public final class LordOfLineage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other Vampire creatures");
diff --git a/Mage.Sets/src/mage/cards/l/LordOfShatterskullPass.java b/Mage.Sets/src/mage/cards/l/LordOfShatterskullPass.java
index 6a9f5ede9dd..13659a0631c 100644
--- a/Mage.Sets/src/mage/cards/l/LordOfShatterskullPass.java
+++ b/Mage.Sets/src/mage/cards/l/LordOfShatterskullPass.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class LordOfShatterskullPass extends LevelerCard {
+public final class LordOfShatterskullPass extends LevelerCard {
public LordOfShatterskullPass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java b/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java
index 7ba04117a0b..c163bfb9a4b 100644
--- a/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java
+++ b/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java
@@ -49,7 +49,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author jonubuu
*/
-public class LordOfTheAccursed extends CardImpl {
+public final class LordOfTheAccursed extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.ZOMBIE, "Zombie creatures");
diff --git a/Mage.Sets/src/mage/cards/l/LordOfThePit.java b/Mage.Sets/src/mage/cards/l/LordOfThePit.java
index 3e2a945520c..aa8078c6914 100644
--- a/Mage.Sets/src/mage/cards/l/LordOfThePit.java
+++ b/Mage.Sets/src/mage/cards/l/LordOfThePit.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author dustinconrad
*/
-public class LordOfThePit extends CardImpl {
+public final class LordOfThePit extends CardImpl {
public LordOfThePit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LordOfTheUndead.java b/Mage.Sets/src/mage/cards/l/LordOfTheUndead.java
index 9be024a3e7c..8160ff3748e 100644
--- a/Mage.Sets/src/mage/cards/l/LordOfTheUndead.java
+++ b/Mage.Sets/src/mage/cards/l/LordOfTheUndead.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class LordOfTheUndead extends CardImpl {
+public final class LordOfTheUndead extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures");
private static final FilterCard filterCard = new FilterCard("Zombie card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java b/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java
index a6b810996d6..eb99e21fe57 100644
--- a/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java
+++ b/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class LordOfTheUnreal extends CardImpl {
+public final class LordOfTheUnreal extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Illusion creatures");
diff --git a/Mage.Sets/src/mage/cards/l/LordOfTheVoid.java b/Mage.Sets/src/mage/cards/l/LordOfTheVoid.java
index 77883b2f39f..5eaacbcfc4d 100644
--- a/Mage.Sets/src/mage/cards/l/LordOfTheVoid.java
+++ b/Mage.Sets/src/mage/cards/l/LordOfTheVoid.java
@@ -52,7 +52,7 @@ import mage.target.TargetCard;
*
* @author Plopman
*/
-public class LordOfTheVoid extends CardImpl {
+public final class LordOfTheVoid extends CardImpl {
public LordOfTheVoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LordOfTresserhorn.java b/Mage.Sets/src/mage/cards/l/LordOfTresserhorn.java
index 7d413eb0a33..22469d2d85a 100644
--- a/Mage.Sets/src/mage/cards/l/LordOfTresserhorn.java
+++ b/Mage.Sets/src/mage/cards/l/LordOfTresserhorn.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class LordOfTresserhorn extends CardImpl {
+public final class LordOfTresserhorn extends CardImpl {
public LordOfTresserhorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LoreBroker.java b/Mage.Sets/src/mage/cards/l/LoreBroker.java
index b0ef0260917..9c960a7711e 100644
--- a/Mage.Sets/src/mage/cards/l/LoreBroker.java
+++ b/Mage.Sets/src/mage/cards/l/LoreBroker.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class LoreBroker extends CardImpl {
+public final class LoreBroker extends CardImpl {
public LoreBroker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LoreWeaver.java b/Mage.Sets/src/mage/cards/l/LoreWeaver.java
new file mode 100644
index 00000000000..0c9dd28507d
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/l/LoreWeaver.java
@@ -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.l;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DrawCardTargetEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+import mage.target.TargetPlayer;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class LoreWeaver extends CardImpl {
+
+ public LoreWeaver(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.WIZARD);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Partner with Ley Weaver (When this creature enters the battlefield, target player may put Ley Weaver into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Ley Weaver"));
+
+ // {5}{U}{U}: Target player draws two cards.
+ Ability ability = new SimpleActivatedAbility(new DrawCardTargetEffect(2), new ManaCostsImpl("{5}{U}{U}"));
+ ability.addTarget(new TargetPlayer());
+ this.addAbility(ability);
+ }
+
+ public LoreWeaver(final LoreWeaver card) {
+ super(card);
+ }
+
+ @Override
+ public LoreWeaver copy() {
+ return new LoreWeaver(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/l/LorescaleCoatl.java b/Mage.Sets/src/mage/cards/l/LorescaleCoatl.java
index 9576862cc82..07c3d6908cb 100644
--- a/Mage.Sets/src/mage/cards/l/LorescaleCoatl.java
+++ b/Mage.Sets/src/mage/cards/l/LorescaleCoatl.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class LorescaleCoatl extends CardImpl {
+public final class LorescaleCoatl extends CardImpl {
public LorescaleCoatl (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LoreseekersStone.java b/Mage.Sets/src/mage/cards/l/LoreseekersStone.java
index 4c8ee8daf39..04b49f4b59f 100644
--- a/Mage.Sets/src/mage/cards/l/LoreseekersStone.java
+++ b/Mage.Sets/src/mage/cards/l/LoreseekersStone.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class LoreseekersStone extends CardImpl {
+public final class LoreseekersStone extends CardImpl {
public LoreseekersStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/l/LorthosTheTidemaker.java b/Mage.Sets/src/mage/cards/l/LorthosTheTidemaker.java
index 527e466176c..53aadd01250 100644
--- a/Mage.Sets/src/mage/cards/l/LorthosTheTidemaker.java
+++ b/Mage.Sets/src/mage/cards/l/LorthosTheTidemaker.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class LorthosTheTidemaker extends CardImpl {
+public final class LorthosTheTidemaker extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/l/LoseCalm.java b/Mage.Sets/src/mage/cards/l/LoseCalm.java
index d64891833cc..1239809da66 100644
--- a/Mage.Sets/src/mage/cards/l/LoseCalm.java
+++ b/Mage.Sets/src/mage/cards/l/LoseCalm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LoseCalm extends CardImpl {
+public final class LoseCalm extends CardImpl {
public LoseCalm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LoseHope.java b/Mage.Sets/src/mage/cards/l/LoseHope.java
index a309f576f36..0684c404c8b 100644
--- a/Mage.Sets/src/mage/cards/l/LoseHope.java
+++ b/Mage.Sets/src/mage/cards/l/LoseHope.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class LoseHope extends CardImpl {
+public final class LoseHope extends CardImpl {
public LoseHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LostAuramancers.java b/Mage.Sets/src/mage/cards/l/LostAuramancers.java
index cb5133a1f59..3ce3ac5c393 100644
--- a/Mage.Sets/src/mage/cards/l/LostAuramancers.java
+++ b/Mage.Sets/src/mage/cards/l/LostAuramancers.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Quercitron
*/
-public class LostAuramancers extends CardImpl {
+public final class LostAuramancers extends CardImpl {
public LostAuramancers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LostHours.java b/Mage.Sets/src/mage/cards/l/LostHours.java
index c06d84c38d3..2034f3e92f3 100644
--- a/Mage.Sets/src/mage/cards/l/LostHours.java
+++ b/Mage.Sets/src/mage/cards/l/LostHours.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author L_J
*/
-public class LostHours extends CardImpl {
+public final class LostHours extends CardImpl {
public LostHours(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LostInALabyrinth.java b/Mage.Sets/src/mage/cards/l/LostInALabyrinth.java
index 694ea4c7b81..172fd8c3372 100644
--- a/Mage.Sets/src/mage/cards/l/LostInALabyrinth.java
+++ b/Mage.Sets/src/mage/cards/l/LostInALabyrinth.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LostInALabyrinth extends CardImpl {
+public final class LostInALabyrinth extends CardImpl {
public LostInALabyrinth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LostInTheMist.java b/Mage.Sets/src/mage/cards/l/LostInTheMist.java
index 950c2cbbd64..c86b33f8bd9 100644
--- a/Mage.Sets/src/mage/cards/l/LostInTheMist.java
+++ b/Mage.Sets/src/mage/cards/l/LostInTheMist.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class LostInTheMist extends CardImpl {
+public final class LostInTheMist extends CardImpl {
public LostInTheMist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LostInTheWoods.java b/Mage.Sets/src/mage/cards/l/LostInTheWoods.java
index 849c4c7c98e..410c8b38308 100644
--- a/Mage.Sets/src/mage/cards/l/LostInTheWoods.java
+++ b/Mage.Sets/src/mage/cards/l/LostInTheWoods.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author BetaSteward
*/
-public class LostInTheWoods extends CardImpl {
+public final class LostInTheWoods extends CardImpl {
public LostInTheWoods(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LostLegacy.java b/Mage.Sets/src/mage/cards/l/LostLegacy.java
index 9a6adc47f87..980e38588c7 100644
--- a/Mage.Sets/src/mage/cards/l/LostLegacy.java
+++ b/Mage.Sets/src/mage/cards/l/LostLegacy.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class LostLegacy extends CardImpl {
+public final class LostLegacy extends CardImpl {
public LostLegacy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LostLeonin.java b/Mage.Sets/src/mage/cards/l/LostLeonin.java
index 8ece0f23536..c2e962bb7de 100644
--- a/Mage.Sets/src/mage/cards/l/LostLeonin.java
+++ b/Mage.Sets/src/mage/cards/l/LostLeonin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LostLeonin extends CardImpl {
+public final class LostLeonin extends CardImpl {
public LostLeonin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LostSoul.java b/Mage.Sets/src/mage/cards/l/LostSoul.java
index 8366968d5d8..22db051f446 100644
--- a/Mage.Sets/src/mage/cards/l/LostSoul.java
+++ b/Mage.Sets/src/mage/cards/l/LostSoul.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LostSoul extends CardImpl {
+public final class LostSoul extends CardImpl {
public LostSoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LostVale.java b/Mage.Sets/src/mage/cards/l/LostVale.java
index 722e02ea3f2..47b677fe5f7 100644
--- a/Mage.Sets/src/mage/cards/l/LostVale.java
+++ b/Mage.Sets/src/mage/cards/l/LostVale.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class LostVale extends CardImpl {
+public final class LostVale extends CardImpl {
public LostVale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/l/LotlethTroll.java b/Mage.Sets/src/mage/cards/l/LotlethTroll.java
index 634a17d8c80..fa2061b8dbc 100644
--- a/Mage.Sets/src/mage/cards/l/LotlethTroll.java
+++ b/Mage.Sets/src/mage/cards/l/LotlethTroll.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class LotlethTroll extends CardImpl {
+public final class LotlethTroll extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card in your hand");
diff --git a/Mage.Sets/src/mage/cards/l/LotusBloom.java b/Mage.Sets/src/mage/cards/l/LotusBloom.java
index c0eeb44a7c2..004ce4a1536 100644
--- a/Mage.Sets/src/mage/cards/l/LotusBloom.java
+++ b/Mage.Sets/src/mage/cards/l/LotusBloom.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class LotusBloom extends CardImpl {
+public final class LotusBloom extends CardImpl {
public LotusBloom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"");
diff --git a/Mage.Sets/src/mage/cards/l/LotusBlossom.java b/Mage.Sets/src/mage/cards/l/LotusBlossom.java
index 55ce22b07db..b82f9b71520 100644
--- a/Mage.Sets/src/mage/cards/l/LotusBlossom.java
+++ b/Mage.Sets/src/mage/cards/l/LotusBlossom.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
/**
* @author JRHerlehy
*/
-public class LotusBlossom extends CardImpl {
+public final class LotusBlossom extends CardImpl {
public LotusBlossom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/l/LotusCobra.java b/Mage.Sets/src/mage/cards/l/LotusCobra.java
index 5e68ed4261f..812c70e073d 100644
--- a/Mage.Sets/src/mage/cards/l/LotusCobra.java
+++ b/Mage.Sets/src/mage/cards/l/LotusCobra.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class LotusCobra extends CardImpl {
+public final class LotusCobra extends CardImpl {
public LotusCobra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LotusEyeMystics.java b/Mage.Sets/src/mage/cards/l/LotusEyeMystics.java
index a1226aacd5a..354e7b6b094 100644
--- a/Mage.Sets/src/mage/cards/l/LotusEyeMystics.java
+++ b/Mage.Sets/src/mage/cards/l/LotusEyeMystics.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class LotusEyeMystics extends CardImpl {
+public final class LotusEyeMystics extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantment card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/l/LotusGuardian.java b/Mage.Sets/src/mage/cards/l/LotusGuardian.java
index 5d8c2eb2dc4..ba9295361ea 100644
--- a/Mage.Sets/src/mage/cards/l/LotusGuardian.java
+++ b/Mage.Sets/src/mage/cards/l/LotusGuardian.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class LotusGuardian extends CardImpl {
+public final class LotusGuardian extends CardImpl {
public LotusGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/l/LotusPathDjinn.java b/Mage.Sets/src/mage/cards/l/LotusPathDjinn.java
index 148a312cb98..1affd5146a0 100644
--- a/Mage.Sets/src/mage/cards/l/LotusPathDjinn.java
+++ b/Mage.Sets/src/mage/cards/l/LotusPathDjinn.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class LotusPathDjinn extends CardImpl {
+public final class LotusPathDjinn extends CardImpl {
public LotusPathDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LotusPetal.java b/Mage.Sets/src/mage/cards/l/LotusPetal.java
index 25717e43310..edb1733c25f 100644
--- a/Mage.Sets/src/mage/cards/l/LotusPetal.java
+++ b/Mage.Sets/src/mage/cards/l/LotusPetal.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class LotusPetal extends CardImpl {
+public final class LotusPetal extends CardImpl {
public LotusPetal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/l/LotusVale.java b/Mage.Sets/src/mage/cards/l/LotusVale.java
index 55bb1180429..3b15de88e4d 100644
--- a/Mage.Sets/src/mage/cards/l/LotusVale.java
+++ b/Mage.Sets/src/mage/cards/l/LotusVale.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Luna Skyrise
*/
-public class LotusVale extends CardImpl {
+public final class LotusVale extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("two untapped lands");
diff --git a/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java b/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java
index da45ba4a980..8daac1d21dc 100644
--- a/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java
+++ b/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class LovisaColdeyes extends CardImpl {
+public final class LovisaColdeyes extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that's a Barbarian, a Warrior, or a Berserker");
diff --git a/Mage.Sets/src/mage/cards/l/LowlandBasilisk.java b/Mage.Sets/src/mage/cards/l/LowlandBasilisk.java
index b55f6acf14f..e0ddb6410a7 100644
--- a/Mage.Sets/src/mage/cards/l/LowlandBasilisk.java
+++ b/Mage.Sets/src/mage/cards/l/LowlandBasilisk.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class LowlandBasilisk extends CardImpl {
+public final class LowlandBasilisk extends CardImpl {
public LowlandBasilisk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LowlandGiant.java b/Mage.Sets/src/mage/cards/l/LowlandGiant.java
index 6bcfc47790c..fb132fe5d10 100644
--- a/Mage.Sets/src/mage/cards/l/LowlandGiant.java
+++ b/Mage.Sets/src/mage/cards/l/LowlandGiant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LowlandGiant extends CardImpl {
+public final class LowlandGiant extends CardImpl {
public LowlandGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LowlandOaf.java b/Mage.Sets/src/mage/cards/l/LowlandOaf.java
index 76e272edeb8..1a3dfbb024d 100644
--- a/Mage.Sets/src/mage/cards/l/LowlandOaf.java
+++ b/Mage.Sets/src/mage/cards/l/LowlandOaf.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class LowlandOaf extends CardImpl {
+public final class LowlandOaf extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin creature you control");
diff --git a/Mage.Sets/src/mage/cards/l/LowlandTracker.java b/Mage.Sets/src/mage/cards/l/LowlandTracker.java
index 100afab5cbd..2717ddc3eaa 100644
--- a/Mage.Sets/src/mage/cards/l/LowlandTracker.java
+++ b/Mage.Sets/src/mage/cards/l/LowlandTracker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Temba21
*/
-public class LowlandTracker extends CardImpl {
+public final class LowlandTracker extends CardImpl {
public LowlandTracker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonAnchorite.java b/Mage.Sets/src/mage/cards/l/LoxodonAnchorite.java
index 28d03093441..c4787a31b6c 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonAnchorite.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonAnchorite.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class LoxodonAnchorite extends CardImpl {
+public final class LoxodonAnchorite extends CardImpl {
public LoxodonAnchorite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonConvert.java b/Mage.Sets/src/mage/cards/l/LoxodonConvert.java
index 3ef2cec0832..b74dd6212ad 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonConvert.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonConvert.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LoxodonConvert extends CardImpl {
+public final class LoxodonConvert extends CardImpl {
public LoxodonConvert(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonGatekeeper.java b/Mage.Sets/src/mage/cards/l/LoxodonGatekeeper.java
index b7a8f657f78..f760da4b911 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonGatekeeper.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonGatekeeper.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class LoxodonGatekeeper extends CardImpl {
+public final class LoxodonGatekeeper extends CardImpl {
public LoxodonGatekeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonHierarch.java b/Mage.Sets/src/mage/cards/l/LoxodonHierarch.java
index d263554ba6e..17d5f211023 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonHierarch.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonHierarch.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author dustinconrad
*/
-public class LoxodonHierarch extends CardImpl {
+public final class LoxodonHierarch extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonLineBreaker.java b/Mage.Sets/src/mage/cards/l/LoxodonLineBreaker.java
new file mode 100644
index 00000000000..3a97f4ec37b
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/l/LoxodonLineBreaker.java
@@ -0,0 +1,60 @@
+/*
+ * 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.MageInt;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class LoxodonLineBreaker extends CardImpl {
+
+ public LoxodonLineBreaker(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
+
+ this.subtype.add(SubType.ELEPHANT);
+ this.subtype.add(SubType.SOLDIER);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(2);
+ }
+
+ public LoxodonLineBreaker(final LoxodonLineBreaker card) {
+ super(card);
+ }
+
+ @Override
+ public LoxodonLineBreaker copy() {
+ return new LoxodonLineBreaker(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonMender.java b/Mage.Sets/src/mage/cards/l/LoxodonMender.java
index 60ec54f776f..e8386755f81 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonMender.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonMender.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class LoxodonMender extends CardImpl {
+public final class LoxodonMender extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonMystic.java b/Mage.Sets/src/mage/cards/l/LoxodonMystic.java
index 02af4fca6d5..f41c837f830 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonMystic.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonMystic.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class LoxodonMystic extends CardImpl {
+public final class LoxodonMystic extends CardImpl {
public LoxodonMystic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonPartisan.java b/Mage.Sets/src/mage/cards/l/LoxodonPartisan.java
index cdf8482c279..7dc365895fa 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonPartisan.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonPartisan.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LoxodonPartisan extends CardImpl {
+public final class LoxodonPartisan extends CardImpl {
public LoxodonPartisan (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonPeacekeeper.java b/Mage.Sets/src/mage/cards/l/LoxodonPeacekeeper.java
index c06d39dea45..09f0547fa3a 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonPeacekeeper.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonPeacekeeper.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class LoxodonPeacekeeper extends CardImpl {
+public final class LoxodonPeacekeeper extends CardImpl {
public LoxodonPeacekeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonPunisher.java b/Mage.Sets/src/mage/cards/l/LoxodonPunisher.java
index 0f3cbfe59e4..cb7bebd3847 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonPunisher.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonPunisher.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class LoxodonPunisher extends CardImpl {
+public final class LoxodonPunisher extends CardImpl {
public LoxodonPunisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonSmiter.java b/Mage.Sets/src/mage/cards/l/LoxodonSmiter.java
index 28cd9e041e0..189ca8b113e 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonSmiter.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonSmiter.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class LoxodonSmiter extends CardImpl {
+public final class LoxodonSmiter extends CardImpl {
public LoxodonSmiter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonStalwart.java b/Mage.Sets/src/mage/cards/l/LoxodonStalwart.java
index ace74674e74..92ada21e7dc 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonStalwart.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonStalwart.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class LoxodonStalwart extends CardImpl {
+public final class LoxodonStalwart extends CardImpl {
public LoxodonStalwart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonWarhammer.java b/Mage.Sets/src/mage/cards/l/LoxodonWarhammer.java
index 0208d39708c..d129e613a21 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonWarhammer.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonWarhammer.java
@@ -45,7 +45,7 @@ import mage.constants.*;
*
* @author anonymous
*/
-public class LoxodonWarhammer extends CardImpl {
+public final class LoxodonWarhammer extends CardImpl {
public LoxodonWarhammer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/l/LoxodonWayfarer.java b/Mage.Sets/src/mage/cards/l/LoxodonWayfarer.java
index 2ebeab069e6..42f99f931d4 100644
--- a/Mage.Sets/src/mage/cards/l/LoxodonWayfarer.java
+++ b/Mage.Sets/src/mage/cards/l/LoxodonWayfarer.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LoxodonWayfarer extends CardImpl {
+public final class LoxodonWayfarer extends CardImpl {
public LoxodonWayfarer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoyalCathar.java b/Mage.Sets/src/mage/cards/l/LoyalCathar.java
index e0805cb1458..ab74646c42e 100644
--- a/Mage.Sets/src/mage/cards/l/LoyalCathar.java
+++ b/Mage.Sets/src/mage/cards/l/LoyalCathar.java
@@ -32,6 +32,7 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DiesTriggeredAbility;
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
+import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.TransformAbility;
import mage.abilities.keyword.VigilanceAbility;
@@ -40,20 +41,21 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.u.UnhallowedCathar;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.Game;
-import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.targetpointer.FixedTarget;
/**
*
* @author BetaSteward
*/
-public class LoyalCathar extends CardImpl {
+public final class LoyalCathar extends CardImpl {
public LoyalCathar(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SOLDIER);
@@ -96,8 +98,11 @@ class LoyalCatharEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
//create delayed triggered ability
- AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnLoyalCatharEffect(source.getSourceId()));
- game.addDelayedTriggeredAbility(delayedAbility, source);
+ if (Zone.GRAVEYARD == game.getState().getZone(source.getSourceId())) {
+ Effect effect = new ReturnLoyalCatharEffect();
+ effect.setTargetPointer(new FixedTarget(source.getSourceId(), game.getState().getZoneChangeCounter(source.getSourceId())));
+ game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect), source);
+ }
return true;
}
@@ -110,17 +115,13 @@ class LoyalCatharEffect extends OneShotEffect {
class ReturnLoyalCatharEffect extends OneShotEffect {
- private UUID cardId;
-
- public ReturnLoyalCatharEffect(UUID cardId) {
+ public ReturnLoyalCatharEffect() {
super(Outcome.PutCardInPlay);
- this.cardId = cardId;
this.staticText = "return it to the battlefield transformed under your control";
}
public ReturnLoyalCatharEffect(final ReturnLoyalCatharEffect effect) {
super(effect);
- this.cardId = effect.cardId;
}
@Override
@@ -130,16 +131,16 @@ class ReturnLoyalCatharEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- Card card = game.getCard(cardId);
- if (card != null) {
- card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId());
- Permanent perm = game.getPermanent(cardId);
- if (perm != null && perm.isTransformable()) {
- perm.transform(game);
- return true;
- }
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
}
- return false;
+ Card card = game.getCard(getTargetPointer().getFirst(game, source));
+ if (card != null) {
+ game.getState().setValue(TransformAbility.VALUE_KEY_ENTER_TRANSFORMED + card.getId(), Boolean.TRUE);
+ controller.moveCards(card, Zone.BATTLEFIELD, source, game);
+ }
+ return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/l/LoyalGyrfalcon.java b/Mage.Sets/src/mage/cards/l/LoyalGyrfalcon.java
index 0ccdcac699c..cd1cdfc2600 100644
--- a/Mage.Sets/src/mage/cards/l/LoyalGyrfalcon.java
+++ b/Mage.Sets/src/mage/cards/l/LoyalGyrfalcon.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author jeffwadsworth
*/
-public class LoyalGyrfalcon extends CardImpl {
+public final class LoyalGyrfalcon extends CardImpl {
private static final FilterSpell filter = new FilterSpell("white spell");
diff --git a/Mage.Sets/src/mage/cards/l/LoyalPegasus.java b/Mage.Sets/src/mage/cards/l/LoyalPegasus.java
index 94e3f8839b0..cfb4c810561 100644
--- a/Mage.Sets/src/mage/cards/l/LoyalPegasus.java
+++ b/Mage.Sets/src/mage/cards/l/LoyalPegasus.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class LoyalPegasus extends CardImpl {
+public final class LoyalPegasus extends CardImpl {
public LoyalPegasus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoyalRetainers.java b/Mage.Sets/src/mage/cards/l/LoyalRetainers.java
index 2dd42d1a941..7d76c67bd66 100644
--- a/Mage.Sets/src/mage/cards/l/LoyalRetainers.java
+++ b/Mage.Sets/src/mage/cards/l/LoyalRetainers.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class LoyalRetainers extends CardImpl {
+public final class LoyalRetainers extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("legendary creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/l/LoyalSentry.java b/Mage.Sets/src/mage/cards/l/LoyalSentry.java
index d7ba486a57c..b19a1c7c1aa 100644
--- a/Mage.Sets/src/mage/cards/l/LoyalSentry.java
+++ b/Mage.Sets/src/mage/cards/l/LoyalSentry.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LoyalSentry extends CardImpl {
+public final class LoyalSentry extends CardImpl {
public LoyalSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LoyalTauntaun.java b/Mage.Sets/src/mage/cards/l/LoyalTauntaun.java
index 414a203125e..82df0eda2e7 100644
--- a/Mage.Sets/src/mage/cards/l/LoyalTauntaun.java
+++ b/Mage.Sets/src/mage/cards/l/LoyalTauntaun.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class LoyalTauntaun extends CardImpl {
+public final class LoyalTauntaun extends CardImpl {
public LoyalTauntaun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LuBuMasterAtArms.java b/Mage.Sets/src/mage/cards/l/LuBuMasterAtArms.java
index 5020773d0cb..e63d9513442 100644
--- a/Mage.Sets/src/mage/cards/l/LuBuMasterAtArms.java
+++ b/Mage.Sets/src/mage/cards/l/LuBuMasterAtArms.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
*
* @author ilcartographer
*/
-public class LuBuMasterAtArms extends CardImpl {
+public final class LuBuMasterAtArms extends CardImpl {
public LuBuMasterAtArms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LuMengWuGeneral.java b/Mage.Sets/src/mage/cards/l/LuMengWuGeneral.java
index abb1406ee5f..90d4d925375 100644
--- a/Mage.Sets/src/mage/cards/l/LuMengWuGeneral.java
+++ b/Mage.Sets/src/mage/cards/l/LuMengWuGeneral.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class LuMengWuGeneral extends CardImpl {
+public final class LuMengWuGeneral extends CardImpl {
public LuMengWuGeneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LuSuWuAdvisor.java b/Mage.Sets/src/mage/cards/l/LuSuWuAdvisor.java
index 267fb23fd8b..8397859fccf 100644
--- a/Mage.Sets/src/mage/cards/l/LuSuWuAdvisor.java
+++ b/Mage.Sets/src/mage/cards/l/LuSuWuAdvisor.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class LuSuWuAdvisor extends CardImpl {
+public final class LuSuWuAdvisor extends CardImpl {
public LuSuWuAdvisor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LuXunScholarGeneral.java b/Mage.Sets/src/mage/cards/l/LuXunScholarGeneral.java
index 7de1996ae17..fa749d4b6db 100644
--- a/Mage.Sets/src/mage/cards/l/LuXunScholarGeneral.java
+++ b/Mage.Sets/src/mage/cards/l/LuXunScholarGeneral.java
@@ -42,7 +42,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class LuXunScholarGeneral extends CardImpl {
+public final class LuXunScholarGeneral extends CardImpl {
public LuXunScholarGeneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LucentLiminid.java b/Mage.Sets/src/mage/cards/l/LucentLiminid.java
index 79bceea88cb..68f4517894d 100644
--- a/Mage.Sets/src/mage/cards/l/LucentLiminid.java
+++ b/Mage.Sets/src/mage/cards/l/LucentLiminid.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LucentLiminid extends CardImpl {
+public final class LucentLiminid extends CardImpl {
public LucentLiminid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LudevicNecroAlchemist.java b/Mage.Sets/src/mage/cards/l/LudevicNecroAlchemist.java
index 2cdc2facce5..9fa197a2a87 100644
--- a/Mage.Sets/src/mage/cards/l/LudevicNecroAlchemist.java
+++ b/Mage.Sets/src/mage/cards/l/LudevicNecroAlchemist.java
@@ -47,7 +47,7 @@ import mage.watchers.common.PlayerLostLifeWatcher;
*
* @author spjspj
*/
-public class LudevicNecroAlchemist extends CardImpl {
+public final class LudevicNecroAlchemist extends CardImpl {
public LudevicNecroAlchemist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}");
@@ -76,7 +76,7 @@ public class LudevicNecroAlchemist extends CardImpl {
}
class LudevicNecroAlchemistCondition implements Condition {
-
+
@Override
public boolean apply(Game game, Ability source) {
PlayerLostLifeWatcher watcher = (PlayerLostLifeWatcher) game.getState().getWatchers().get(PlayerLostLifeWatcher.class.getSimpleName());
@@ -85,13 +85,14 @@ class LudevicNecroAlchemistCondition implements Condition {
Player currentPlayer = null;
UUID sourcePlayerId = source.getControllerId();
Player firstPlayer = null;
- if (playerList != null) {
- firstPlayer = playerList.getCurrent(game);
- currentPlayer = playerList.getNext(game);
+ if (playerList == null) {
+ return false;
}
+ firstPlayer = playerList.getCurrent(game);
+ currentPlayer = playerList.getNext(game);
while (watcher != null && currentPlayer != null) {
- if (currentPlayer != null && !Objects.equals(currentPlayer.getId(), sourcePlayerId) && watcher.getLiveLost(currentPlayer.getId()) > 0) {
+ if (!Objects.equals(currentPlayer.getId(), sourcePlayerId) && watcher.getLiveLost(currentPlayer.getId()) > 0) {
return true;
}
if (Objects.equals(currentPlayer, firstPlayer)) {
diff --git a/Mage.Sets/src/mage/cards/l/LudevicsAbomination.java b/Mage.Sets/src/mage/cards/l/LudevicsAbomination.java
index de40cec9fc5..c562c0c493b 100644
--- a/Mage.Sets/src/mage/cards/l/LudevicsAbomination.java
+++ b/Mage.Sets/src/mage/cards/l/LudevicsAbomination.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LudevicsAbomination extends CardImpl {
+public final class LudevicsAbomination extends CardImpl {
public LudevicsAbomination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/l/LudevicsTestSubject.java b/Mage.Sets/src/mage/cards/l/LudevicsTestSubject.java
index 941692c0937..c8ba168bd2f 100644
--- a/Mage.Sets/src/mage/cards/l/LudevicsTestSubject.java
+++ b/Mage.Sets/src/mage/cards/l/LudevicsTestSubject.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class LudevicsTestSubject extends CardImpl {
+public final class LudevicsTestSubject extends CardImpl {
public LudevicsTestSubject(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LukeSkywalker.java b/Mage.Sets/src/mage/cards/l/LukeSkywalker.java
index be07999a2a8..6606c4549a2 100644
--- a/Mage.Sets/src/mage/cards/l/LukeSkywalker.java
+++ b/Mage.Sets/src/mage/cards/l/LukeSkywalker.java
@@ -56,7 +56,7 @@ import mage.game.permanent.Permanent;
*
* @author Styxo
*/
-public class LukeSkywalker extends CardImpl {
+public final class LukeSkywalker extends CardImpl {
public LukeSkywalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/Lull.java b/Mage.Sets/src/mage/cards/l/Lull.java
index 865178adb58..ead18c3e901 100644
--- a/Mage.Sets/src/mage/cards/l/Lull.java
+++ b/Mage.Sets/src/mage/cards/l/Lull.java
@@ -40,7 +40,7 @@ import mage.constants.Duration;
*
* @author Backfir3
*/
-public class Lull extends CardImpl {
+public final class Lull extends CardImpl {
public Lull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LullmageMentor.java b/Mage.Sets/src/mage/cards/l/LullmageMentor.java
index 495396d8cd2..63267c63535 100644
--- a/Mage.Sets/src/mage/cards/l/LullmageMentor.java
+++ b/Mage.Sets/src/mage/cards/l/LullmageMentor.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class LullmageMentor extends CardImpl {
+public final class LullmageMentor extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Merfolk you control");
diff --git a/Mage.Sets/src/mage/cards/l/LumberingFalls.java b/Mage.Sets/src/mage/cards/l/LumberingFalls.java
index b32e1f27521..e38e9ffb264 100644
--- a/Mage.Sets/src/mage/cards/l/LumberingFalls.java
+++ b/Mage.Sets/src/mage/cards/l/LumberingFalls.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class LumberingFalls extends CardImpl {
+public final class LumberingFalls extends CardImpl {
public LumberingFalls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/l/LumberingSatyr.java b/Mage.Sets/src/mage/cards/l/LumberingSatyr.java
index b2483f53f9a..2680bb80e46 100644
--- a/Mage.Sets/src/mage/cards/l/LumberingSatyr.java
+++ b/Mage.Sets/src/mage/cards/l/LumberingSatyr.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author fireshoes
*/
-public class LumberingSatyr extends CardImpl {
+public final class LumberingSatyr extends CardImpl {
public LumberingSatyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/Lumberknot.java b/Mage.Sets/src/mage/cards/l/Lumberknot.java
index 94e374aada9..f818ddddb80 100644
--- a/Mage.Sets/src/mage/cards/l/Lumberknot.java
+++ b/Mage.Sets/src/mage/cards/l/Lumberknot.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class Lumberknot extends CardImpl {
+public final class Lumberknot extends CardImpl {
public Lumberknot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LumengridAugur.java b/Mage.Sets/src/mage/cards/l/LumengridAugur.java
index 10c15e651c8..cb54e3e9204 100644
--- a/Mage.Sets/src/mage/cards/l/LumengridAugur.java
+++ b/Mage.Sets/src/mage/cards/l/LumengridAugur.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
*
* @author L_J
*/
-public class LumengridAugur extends CardImpl {
+public final class LumengridAugur extends CardImpl {
public LumengridAugur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LumengridDrake.java b/Mage.Sets/src/mage/cards/l/LumengridDrake.java
index d509b645ded..a92f93e1d37 100644
--- a/Mage.Sets/src/mage/cards/l/LumengridDrake.java
+++ b/Mage.Sets/src/mage/cards/l/LumengridDrake.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author ayrat
*/
-public class LumengridDrake extends CardImpl {
+public final class LumengridDrake extends CardImpl {
private static final String ruleText = "Metalcraft - When {this} enters the battlefield, if you control three or more artifacts, return target creature to its owner's hand.";
diff --git a/Mage.Sets/src/mage/cards/l/LumengridGargoyle.java b/Mage.Sets/src/mage/cards/l/LumengridGargoyle.java
index aed93ba64c1..fa953148c65 100644
--- a/Mage.Sets/src/mage/cards/l/LumengridGargoyle.java
+++ b/Mage.Sets/src/mage/cards/l/LumengridGargoyle.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class LumengridGargoyle extends CardImpl {
+public final class LumengridGargoyle extends CardImpl {
public LumengridGargoyle (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/l/LumengridSentinel.java b/Mage.Sets/src/mage/cards/l/LumengridSentinel.java
index 59ea5716494..c73c09425e0 100644
--- a/Mage.Sets/src/mage/cards/l/LumengridSentinel.java
+++ b/Mage.Sets/src/mage/cards/l/LumengridSentinel.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class LumengridSentinel extends CardImpl {
+public final class LumengridSentinel extends CardImpl {
public LumengridSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LumengridWarden.java b/Mage.Sets/src/mage/cards/l/LumengridWarden.java
index 4833878ea09..a30c9623820 100644
--- a/Mage.Sets/src/mage/cards/l/LumengridWarden.java
+++ b/Mage.Sets/src/mage/cards/l/LumengridWarden.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LumengridWarden extends CardImpl {
+public final class LumengridWarden extends CardImpl {
public LumengridWarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LuminarchAscension.java b/Mage.Sets/src/mage/cards/l/LuminarchAscension.java
index 159500f0202..f0ac4282f73 100644
--- a/Mage.Sets/src/mage/cards/l/LuminarchAscension.java
+++ b/Mage.Sets/src/mage/cards/l/LuminarchAscension.java
@@ -53,7 +53,7 @@ import mage.watchers.common.PlayerLostLifeWatcher;
*
* @author jeffwadsworth
*/
-public class LuminarchAscension extends CardImpl {
+public final class LuminarchAscension extends CardImpl {
private String rule = "At the beginning of each opponent's end step, if you didn't lose life this turn, you may put a quest counter on {this}. (Damage causes loss of life.)";
diff --git a/Mage.Sets/src/mage/cards/l/LuminatePrimordial.java b/Mage.Sets/src/mage/cards/l/LuminatePrimordial.java
index d7a39276390..625303c05b0 100644
--- a/Mage.Sets/src/mage/cards/l/LuminatePrimordial.java
+++ b/Mage.Sets/src/mage/cards/l/LuminatePrimordial.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LuminatePrimordial extends CardImpl {
+public final class LuminatePrimordial extends CardImpl {
public LuminatePrimordial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/Luminesce.java b/Mage.Sets/src/mage/cards/l/Luminesce.java
index fb8116cb487..7b7cc7f43a8 100644
--- a/Mage.Sets/src/mage/cards/l/Luminesce.java
+++ b/Mage.Sets/src/mage/cards/l/Luminesce.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent;
*
* @author Styxo
*/
-public class Luminesce extends CardImpl {
+public final class Luminesce extends CardImpl {
public Luminesce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LuminescentRain.java b/Mage.Sets/src/mage/cards/l/LuminescentRain.java
index eae4bce6767..e8898d28bdd 100644
--- a/Mage.Sets/src/mage/cards/l/LuminescentRain.java
+++ b/Mage.Sets/src/mage/cards/l/LuminescentRain.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author michael.napoleon@gmail.com
*/
-public class LuminescentRain extends CardImpl {
+public final class LuminescentRain extends CardImpl {
public LuminescentRain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LuminousAngel.java b/Mage.Sets/src/mage/cards/l/LuminousAngel.java
index a7c77048d77..d736d66f943 100644
--- a/Mage.Sets/src/mage/cards/l/LuminousAngel.java
+++ b/Mage.Sets/src/mage/cards/l/LuminousAngel.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author Loki
*/
-public class LuminousAngel extends CardImpl {
+public final class LuminousAngel extends CardImpl {
public LuminousAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LuminousBonds.java b/Mage.Sets/src/mage/cards/l/LuminousBonds.java
index 37791eb2273..393c7c224ba 100644
--- a/Mage.Sets/src/mage/cards/l/LuminousBonds.java
+++ b/Mage.Sets/src/mage/cards/l/LuminousBonds.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com & L_J
*/
-public class LuminousBonds extends CardImpl {
+public final class LuminousBonds extends CardImpl {
public LuminousBonds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LuminousGuardian.java b/Mage.Sets/src/mage/cards/l/LuminousGuardian.java
index 5402f0e5570..e28bd184a10 100644
--- a/Mage.Sets/src/mage/cards/l/LuminousGuardian.java
+++ b/Mage.Sets/src/mage/cards/l/LuminousGuardian.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class LuminousGuardian extends CardImpl {
+public final class LuminousGuardian extends CardImpl {
public LuminousGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LuminousWake.java b/Mage.Sets/src/mage/cards/l/LuminousWake.java
index 052164363ac..5394827e18f 100644
--- a/Mage.Sets/src/mage/cards/l/LuminousWake.java
+++ b/Mage.Sets/src/mage/cards/l/LuminousWake.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class LuminousWake extends CardImpl {
+public final class LuminousWake extends CardImpl {
public LuminousWake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LumithreadField.java b/Mage.Sets/src/mage/cards/l/LumithreadField.java
index fa32a76b6d6..a2b6fe9c7ab 100644
--- a/Mage.Sets/src/mage/cards/l/LumithreadField.java
+++ b/Mage.Sets/src/mage/cards/l/LumithreadField.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class LumithreadField extends CardImpl {
+public final class LumithreadField extends CardImpl {
public LumithreadField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/l/LunarAvenger.java b/Mage.Sets/src/mage/cards/l/LunarAvenger.java
index 6fdd9c75e92..07b2aa38952 100644
--- a/Mage.Sets/src/mage/cards/l/LunarAvenger.java
+++ b/Mage.Sets/src/mage/cards/l/LunarAvenger.java
@@ -57,7 +57,7 @@ import mage.players.Player;
*
* @author LoneFox
*/
-public class LunarAvenger extends CardImpl {
+public final class LunarAvenger extends CardImpl {
public LunarAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/l/LunarForce.java b/Mage.Sets/src/mage/cards/l/LunarForce.java
index d120548b667..30c1755a027 100644
--- a/Mage.Sets/src/mage/cards/l/LunarForce.java
+++ b/Mage.Sets/src/mage/cards/l/LunarForce.java
@@ -44,7 +44,7 @@ import mage.filter.FilterSpell;
*
* @author LevelX2
*/
-public class LunarForce extends CardImpl {
+public final class LunarForce extends CardImpl {
public LunarForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/l/LunarMystic.java b/Mage.Sets/src/mage/cards/l/LunarMystic.java
index 9ea63d92736..a453c176dd8 100644
--- a/Mage.Sets/src/mage/cards/l/LunarMystic.java
+++ b/Mage.Sets/src/mage/cards/l/LunarMystic.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author noxx
*/
-public class LunarMystic extends CardImpl {
+public final class LunarMystic extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant spell");
diff --git a/Mage.Sets/src/mage/cards/l/LunarchInquisitors.java b/Mage.Sets/src/mage/cards/l/LunarchInquisitors.java
index 6ffb7ea5c69..499a99682ca 100644
--- a/Mage.Sets/src/mage/cards/l/LunarchInquisitors.java
+++ b/Mage.Sets/src/mage/cards/l/LunarchInquisitors.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class LunarchInquisitors extends CardImpl {
+public final class LunarchInquisitors extends CardImpl {
private static final String rule = "Whenever this creature transforms into Lunarch Inquisitors, you may exile another target creature until Lunarch Inquisitors leaves the battlefield";
diff --git a/Mage.Sets/src/mage/cards/l/LunarchMantle.java b/Mage.Sets/src/mage/cards/l/LunarchMantle.java
index 45f8820ccb9..91630cc9683 100644
--- a/Mage.Sets/src/mage/cards/l/LunarchMantle.java
+++ b/Mage.Sets/src/mage/cards/l/LunarchMantle.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LunarchMantle extends CardImpl {
+public final class LunarchMantle extends CardImpl {
static final String rule = "and has \"{1}, Sacrifice a permanent: This creature gains flying until end of turn.\"";
diff --git a/Mage.Sets/src/mage/cards/l/Lunge.java b/Mage.Sets/src/mage/cards/l/Lunge.java
index cad56254bba..4c08d77dad2 100644
--- a/Mage.Sets/src/mage/cards/l/Lunge.java
+++ b/Mage.Sets/src/mage/cards/l/Lunge.java
@@ -41,7 +41,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class Lunge extends CardImpl {
+public final class Lunge extends CardImpl {
public Lunge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LunkErrant.java b/Mage.Sets/src/mage/cards/l/LunkErrant.java
index bc4ce508a8b..324e1078392 100644
--- a/Mage.Sets/src/mage/cards/l/LunkErrant.java
+++ b/Mage.Sets/src/mage/cards/l/LunkErrant.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class LunkErrant extends CardImpl {
+public final class LunkErrant extends CardImpl {
public LunkErrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LupinePrototype.java b/Mage.Sets/src/mage/cards/l/LupinePrototype.java
index 9bb3a39acbd..009ff24ca47 100644
--- a/Mage.Sets/src/mage/cards/l/LupinePrototype.java
+++ b/Mage.Sets/src/mage/cards/l/LupinePrototype.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class LupinePrototype extends CardImpl {
+public final class LupinePrototype extends CardImpl {
public LupinePrototype(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/l/LurchingRotbeast.java b/Mage.Sets/src/mage/cards/l/LurchingRotbeast.java
index ad9bf59bc25..efb1b3791ca 100644
--- a/Mage.Sets/src/mage/cards/l/LurchingRotbeast.java
+++ b/Mage.Sets/src/mage/cards/l/LurchingRotbeast.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author nickymikail
*/
-public class LurchingRotbeast extends CardImpl {
+public final class LurchingRotbeast extends CardImpl {
public LurchingRotbeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/Lure.java b/Mage.Sets/src/mage/cards/l/Lure.java
index 11822bcce48..0ff67e8d830 100644
--- a/Mage.Sets/src/mage/cards/l/Lure.java
+++ b/Mage.Sets/src/mage/cards/l/Lure.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Lure extends CardImpl {
+public final class Lure extends CardImpl {
public Lure (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LureboundScarecrow.java b/Mage.Sets/src/mage/cards/l/LureboundScarecrow.java
index fe4b9f5b67d..8417a41dfc8 100644
--- a/Mage.Sets/src/mage/cards/l/LureboundScarecrow.java
+++ b/Mage.Sets/src/mage/cards/l/LureboundScarecrow.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class LureboundScarecrow extends CardImpl {
+public final class LureboundScarecrow extends CardImpl {
public LureboundScarecrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/l/Lurker.java b/Mage.Sets/src/mage/cards/l/Lurker.java
index 99e0b85d0d8..e113ae683b1 100644
--- a/Mage.Sets/src/mage/cards/l/Lurker.java
+++ b/Mage.Sets/src/mage/cards/l/Lurker.java
@@ -52,7 +52,7 @@ import mage.watchers.common.BlockedThisTurnWatcher;
*
* @author L_J
*/
-public class Lurker extends CardImpl {
+public final class Lurker extends CardImpl {
public Lurker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LurkingArynx.java b/Mage.Sets/src/mage/cards/l/LurkingArynx.java
index 3edc5c1daf1..e04f3ea787e 100644
--- a/Mage.Sets/src/mage/cards/l/LurkingArynx.java
+++ b/Mage.Sets/src/mage/cards/l/LurkingArynx.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class LurkingArynx extends CardImpl {
+public final class LurkingArynx extends CardImpl {
public LurkingArynx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LurkingChupacabra.java b/Mage.Sets/src/mage/cards/l/LurkingChupacabra.java
index 8740ed771a5..1ee3360dd2d 100644
--- a/Mage.Sets/src/mage/cards/l/LurkingChupacabra.java
+++ b/Mage.Sets/src/mage/cards/l/LurkingChupacabra.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class LurkingChupacabra extends CardImpl {
+public final class LurkingChupacabra extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/l/LurkingCrocodile.java b/Mage.Sets/src/mage/cards/l/LurkingCrocodile.java
index 2d144c1c0ae..382f6896495 100644
--- a/Mage.Sets/src/mage/cards/l/LurkingCrocodile.java
+++ b/Mage.Sets/src/mage/cards/l/LurkingCrocodile.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class LurkingCrocodile extends CardImpl {
+public final class LurkingCrocodile extends CardImpl {
public LurkingCrocodile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LurkingEvil.java b/Mage.Sets/src/mage/cards/l/LurkingEvil.java
index 8cfb3f8aa13..e71c2e87777 100644
--- a/Mage.Sets/src/mage/cards/l/LurkingEvil.java
+++ b/Mage.Sets/src/mage/cards/l/LurkingEvil.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class LurkingEvil extends CardImpl {
+public final class LurkingEvil extends CardImpl {
public LurkingEvil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LurkingInformant.java b/Mage.Sets/src/mage/cards/l/LurkingInformant.java
index 406d773d98a..678d63038c7 100644
--- a/Mage.Sets/src/mage/cards/l/LurkingInformant.java
+++ b/Mage.Sets/src/mage/cards/l/LurkingInformant.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class LurkingInformant extends CardImpl {
+public final class LurkingInformant extends CardImpl {
public LurkingInformant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/l/LurkingNightstalker.java b/Mage.Sets/src/mage/cards/l/LurkingNightstalker.java
index ca75d090ccf..105a1cd86e8 100644
--- a/Mage.Sets/src/mage/cards/l/LurkingNightstalker.java
+++ b/Mage.Sets/src/mage/cards/l/LurkingNightstalker.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class LurkingNightstalker extends CardImpl {
+public final class LurkingNightstalker extends CardImpl {
public LurkingNightstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/l/LurkingPredators.java b/Mage.Sets/src/mage/cards/l/LurkingPredators.java
index 7139ed67f35..a0bdf744b04 100644
--- a/Mage.Sets/src/mage/cards/l/LurkingPredators.java
+++ b/Mage.Sets/src/mage/cards/l/LurkingPredators.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author North
*/
-public class LurkingPredators extends CardImpl {
+public final class LurkingPredators extends CardImpl {
public LurkingPredators(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LushGrowth.java b/Mage.Sets/src/mage/cards/l/LushGrowth.java
index 5e504d4f147..629f5e8f28b 100644
--- a/Mage.Sets/src/mage/cards/l/LushGrowth.java
+++ b/Mage.Sets/src/mage/cards/l/LushGrowth.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class LushGrowth extends CardImpl {
+public final class LushGrowth extends CardImpl {
public LushGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LustForWar.java b/Mage.Sets/src/mage/cards/l/LustForWar.java
index ea575a26b9d..8acddfd3cc7 100644
--- a/Mage.Sets/src/mage/cards/l/LustForWar.java
+++ b/Mage.Sets/src/mage/cards/l/LustForWar.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class LustForWar extends CardImpl {
+public final class LustForWar extends CardImpl {
public LustForWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/l/LuxCannon.java b/Mage.Sets/src/mage/cards/l/LuxCannon.java
index a3e38307479..45592df06b6 100644
--- a/Mage.Sets/src/mage/cards/l/LuxCannon.java
+++ b/Mage.Sets/src/mage/cards/l/LuxCannon.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class LuxCannon extends CardImpl {
+public final class LuxCannon extends CardImpl {
public LuxCannon (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/l/LuxaRiverShrine.java b/Mage.Sets/src/mage/cards/l/LuxaRiverShrine.java
index 1bca72cf265..890b0f60cce 100644
--- a/Mage.Sets/src/mage/cards/l/LuxaRiverShrine.java
+++ b/Mage.Sets/src/mage/cards/l/LuxaRiverShrine.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author jeffwadsworth
*/
-public class LuxaRiverShrine extends CardImpl {
+public final class LuxaRiverShrine extends CardImpl {
private static final String rule = "{T}: You gain 2 life. Activate this ability only if there are three or more brick counters on {this}.";
diff --git a/Mage.Sets/src/mage/cards/l/LuxurySuite.java b/Mage.Sets/src/mage/cards/l/LuxurySuite.java
index fb553aafd3c..9ecbdf1afa7 100644
--- a/Mage.Sets/src/mage/cards/l/LuxurySuite.java
+++ b/Mage.Sets/src/mage/cards/l/LuxurySuite.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class LuxurySuite extends CardImpl {
+public final class LuxurySuite extends CardImpl {
public LuxurySuite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/l/LyevDecree.java b/Mage.Sets/src/mage/cards/l/LyevDecree.java
index 70326ded261..5fd022d4ad4 100644
--- a/Mage.Sets/src/mage/cards/l/LyevDecree.java
+++ b/Mage.Sets/src/mage/cards/l/LyevDecree.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
-public class LyevDecree extends CardImpl {
+public final class LyevDecree extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control");
static {
diff --git a/Mage.Sets/src/mage/cards/l/LyevSkyknight.java b/Mage.Sets/src/mage/cards/l/LyevSkyknight.java
index e81d3f62284..5ac97c5c245 100644
--- a/Mage.Sets/src/mage/cards/l/LyevSkyknight.java
+++ b/Mage.Sets/src/mage/cards/l/LyevSkyknight.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class LyevSkyknight extends CardImpl {
+public final class LyevSkyknight extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanent an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/l/LymphSliver.java b/Mage.Sets/src/mage/cards/l/LymphSliver.java
index a8789cf76b5..8a09d138142 100644
--- a/Mage.Sets/src/mage/cards/l/LymphSliver.java
+++ b/Mage.Sets/src/mage/cards/l/LymphSliver.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author Luna Skyrise
*/
-public class LymphSliver extends CardImpl {
+public final class LymphSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/l/Lynx.java b/Mage.Sets/src/mage/cards/l/Lynx.java
index 59a09ddea7a..d8e1ced9862 100644
--- a/Mage.Sets/src/mage/cards/l/Lynx.java
+++ b/Mage.Sets/src/mage/cards/l/Lynx.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class Lynx extends CardImpl {
+public final class Lynx extends CardImpl {
public Lynx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/l/LyraDawnbringer.java b/Mage.Sets/src/mage/cards/l/LyraDawnbringer.java
index bd53db6f2d5..389e40ee32e 100644
--- a/Mage.Sets/src/mage/cards/l/LyraDawnbringer.java
+++ b/Mage.Sets/src/mage/cards/l/LyraDawnbringer.java
@@ -19,7 +19,7 @@ import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
-public class LyraDawnbringer extends CardImpl {
+public final class LyraDawnbringer extends CardImpl {
private static final FilterCreaturePermanent AngelFilter = new FilterCreaturePermanent(SubType.ANGEL, "Angels");
diff --git a/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java b/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java
index 1775d4844bd..f1ce7f7bbeb 100644
--- a/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java
+++ b/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class LysAlanaBowmaster extends CardImpl {
+public final class LysAlanaBowmaster extends CardImpl {
private static final FilterSpell filterElf = new FilterSpell("Elf");
private static final FilterCreaturePermanent filterFlying = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/l/LysAlanaHuntmaster.java b/Mage.Sets/src/mage/cards/l/LysAlanaHuntmaster.java
index fd13e010144..44c02ceef7a 100644
--- a/Mage.Sets/src/mage/cards/l/LysAlanaHuntmaster.java
+++ b/Mage.Sets/src/mage/cards/l/LysAlanaHuntmaster.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.ElfToken;
*
* @author Loki
*/
-public class LysAlanaHuntmaster extends CardImpl {
+public final class LysAlanaHuntmaster extends CardImpl {
private static final FilterSpell filter = new FilterSpell("Elf spell");
diff --git a/Mage.Sets/src/mage/cards/l/LysAlanaScarblade.java b/Mage.Sets/src/mage/cards/l/LysAlanaScarblade.java
index c6075c10d7f..5d36ded3887 100644
--- a/Mage.Sets/src/mage/cards/l/LysAlanaScarblade.java
+++ b/Mage.Sets/src/mage/cards/l/LysAlanaScarblade.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class LysAlanaScarblade extends CardImpl {
+public final class LysAlanaScarblade extends CardImpl {
private static final FilterControlledPermanent filter1 = new FilterControlledPermanent();
private static final FilterCard filter2 = new FilterCard("an Elf card");
diff --git a/Mage.Sets/src/mage/cards/l/LyzoldaTheBloodWitch.java b/Mage.Sets/src/mage/cards/l/LyzoldaTheBloodWitch.java
index 21dbc764139..9d0f816320a 100644
--- a/Mage.Sets/src/mage/cards/l/LyzoldaTheBloodWitch.java
+++ b/Mage.Sets/src/mage/cards/l/LyzoldaTheBloodWitch.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Quercitron
*/
-public class LyzoldaTheBloodWitch extends CardImpl {
+public final class LyzoldaTheBloodWitch extends CardImpl {
private static final FilterPermanent redFilter = new FilterPermanent();
private static final FilterPermanent blackFilter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/m/MaChaoWesternWarrior.java b/Mage.Sets/src/mage/cards/m/MaChaoWesternWarrior.java
index 908f47311e2..dc37eeac4fe 100644
--- a/Mage.Sets/src/mage/cards/m/MaChaoWesternWarrior.java
+++ b/Mage.Sets/src/mage/cards/m/MaChaoWesternWarrior.java
@@ -44,7 +44,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class MaChaoWesternWarrior extends CardImpl {
+public final class MaChaoWesternWarrior extends CardImpl {
public MaChaoWesternWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MaalfeldTwins.java b/Mage.Sets/src/mage/cards/m/MaalfeldTwins.java
index 2bbea9ef2f5..3924644e3a3 100644
--- a/Mage.Sets/src/mage/cards/m/MaalfeldTwins.java
+++ b/Mage.Sets/src/mage/cards/m/MaalfeldTwins.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author Loki
*/
-public class MaalfeldTwins extends CardImpl {
+public final class MaalfeldTwins extends CardImpl {
public MaalfeldTwins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MacabreWaltz.java b/Mage.Sets/src/mage/cards/m/MacabreWaltz.java
index faaa339d76e..49818808ee8 100644
--- a/Mage.Sets/src/mage/cards/m/MacabreWaltz.java
+++ b/Mage.Sets/src/mage/cards/m/MacabreWaltz.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
* @author LoneFox
*/
-public class MacabreWaltz extends CardImpl {
+public final class MacabreWaltz extends CardImpl {
public MacabreWaltz(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MaceWindu.java b/Mage.Sets/src/mage/cards/m/MaceWindu.java
index 3c088a14592..9427157657c 100644
--- a/Mage.Sets/src/mage/cards/m/MaceWindu.java
+++ b/Mage.Sets/src/mage/cards/m/MaceWindu.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author Styxo
*/
-public class MaceWindu extends CardImpl {
+public final class MaceWindu extends CardImpl {
private static final FilterSpellOrPermanent filter = new FilterSpellOrPermanent("spell or creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/m/MacetailHystrodon.java b/Mage.Sets/src/mage/cards/m/MacetailHystrodon.java
index df688fe414b..6ffc08bcb71 100644
--- a/Mage.Sets/src/mage/cards/m/MacetailHystrodon.java
+++ b/Mage.Sets/src/mage/cards/m/MacetailHystrodon.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MacetailHystrodon extends CardImpl {
+public final class MacetailHystrodon extends CardImpl {
public MacetailHystrodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Machinate.java b/Mage.Sets/src/mage/cards/m/Machinate.java
index 318e93dc702..2539c46f0ec 100644
--- a/Mage.Sets/src/mage/cards/m/Machinate.java
+++ b/Mage.Sets/src/mage/cards/m/Machinate.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Alexsandr0x
*/
-public class Machinate extends CardImpl {
+public final class Machinate extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifacts you control");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MadAuntie.java b/Mage.Sets/src/mage/cards/m/MadAuntie.java
index dfedd9644c0..e07ce8708a8 100644
--- a/Mage.Sets/src/mage/cards/m/MadAuntie.java
+++ b/Mage.Sets/src/mage/cards/m/MadAuntie.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MadAuntie extends CardImpl {
+public final class MadAuntie extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("another target Goblin");
diff --git a/Mage.Sets/src/mage/cards/m/MadDog.java b/Mage.Sets/src/mage/cards/m/MadDog.java
index dbf59544790..1a02a06b915 100644
--- a/Mage.Sets/src/mage/cards/m/MadDog.java
+++ b/Mage.Sets/src/mage/cards/m/MadDog.java
@@ -1,105 +1,105 @@
-/*
- * 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.List;
-import java.util.Set;
-import java.util.UUID;
-import mage.MageInt;
-import mage.MageObjectReference;
-import mage.abilities.Ability;
-import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
-import mage.abilities.condition.Condition;
-import mage.abilities.decorator.ConditionalTriggeredAbility;
-import mage.abilities.effects.common.SacrificeSourceEffect;
-import mage.constants.SubType;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.TargetController;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.watchers.common.AttackedThisTurnWatcher;
-import mage.watchers.common.PermanentsEnteredBattlefieldWatcher;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class MadDog extends CardImpl {
-
- public MadDog(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
-
- this.subtype.add(SubType.HOUND);
- this.power = new MageInt(2);
- this.toughness = new MageInt(2);
-
- // At the beginning of your end step, if Mad Dog didn't attack or come under your control this turn, sacrifice it.
- Ability ability = new ConditionalTriggeredAbility(new BeginningOfEndStepTriggeredAbility(new SacrificeSourceEffect(), TargetController.YOU, false), MadDogCondition.instance, "At the beginning of your end step, if {this} didn't attack or come under your control this turn, sacrifice it");
- ability.addWatcher(new AttackedThisTurnWatcher());
- ability.addWatcher(new PermanentsEnteredBattlefieldWatcher());
- this.addAbility(ability);
-
- }
-
- public MadDog(final MadDog card) {
- super(card);
- }
-
- @Override
- public MadDog copy() {
- return new MadDog(this);
- }
-}
-
-enum MadDogCondition implements Condition {
- instance;
-
- @Override
- public boolean apply(Game game, Ability source) {
- Permanent madDog = game.getPermanent(source.getSourceId());
- PermanentsEnteredBattlefieldWatcher watcher = (PermanentsEnteredBattlefieldWatcher) game.getState().getWatchers().get(PermanentsEnteredBattlefieldWatcher.class.getSimpleName());
- AttackedThisTurnWatcher watcher2 = (AttackedThisTurnWatcher) game.getState().getWatchers().get(AttackedThisTurnWatcher.class.getSimpleName());
- if (watcher != null
- && watcher2 != null
- && madDog != null) {
- // For some reason, compare did not work when checking the lists. Thus the interation.
- List permanents = watcher.getThisTurnEnteringPermanents(source.getControllerId());
- if (!permanents.stream().noneMatch((p) -> (p.getId().equals(madDog.getId())))) {
- return false;
- }
- Set mor = watcher2.getAttackedThisTurnCreatures();
- if (!mor.stream().noneMatch((m) -> (m.getPermanent(game).equals(madDog)))) {
- return false;
- }
- return true; // Mad Dog did not come into play this turn nor did he attack this turn. Sacrifice the hound.
- }
- return false;
- }
-}
+/*
+ * 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.List;
+import java.util.Set;
+import java.util.UUID;
+import mage.MageInt;
+import mage.MageObjectReference;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
+import mage.abilities.condition.Condition;
+import mage.abilities.decorator.ConditionalTriggeredAbility;
+import mage.abilities.effects.common.SacrificeSourceEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.TargetController;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.watchers.common.AttackedThisTurnWatcher;
+import mage.watchers.common.PermanentsEnteredBattlefieldWatcher;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class MadDog extends CardImpl {
+
+ public MadDog(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
+
+ this.subtype.add(SubType.HOUND);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // At the beginning of your end step, if Mad Dog didn't attack or come under your control this turn, sacrifice it.
+ Ability ability = new ConditionalTriggeredAbility(new BeginningOfEndStepTriggeredAbility(new SacrificeSourceEffect(), TargetController.YOU, false), MadDogCondition.instance, "At the beginning of your end step, if {this} didn't attack or come under your control this turn, sacrifice it");
+ ability.addWatcher(new AttackedThisTurnWatcher());
+ ability.addWatcher(new PermanentsEnteredBattlefieldWatcher());
+ this.addAbility(ability);
+
+ }
+
+ public MadDog(final MadDog card) {
+ super(card);
+ }
+
+ @Override
+ public MadDog copy() {
+ return new MadDog(this);
+ }
+}
+
+enum MadDogCondition implements Condition {
+ instance;
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent madDog = game.getPermanent(source.getSourceId());
+ PermanentsEnteredBattlefieldWatcher watcher = (PermanentsEnteredBattlefieldWatcher) game.getState().getWatchers().get(PermanentsEnteredBattlefieldWatcher.class.getSimpleName());
+ AttackedThisTurnWatcher watcher2 = (AttackedThisTurnWatcher) game.getState().getWatchers().get(AttackedThisTurnWatcher.class.getSimpleName());
+ if (watcher != null
+ && watcher2 != null
+ && madDog != null) {
+ // For some reason, compare did not work when checking the lists. Thus the interation.
+ List permanents = watcher.getThisTurnEnteringPermanents(source.getControllerId());
+ if (!permanents.stream().noneMatch((p) -> (p.getId().equals(madDog.getId())))) {
+ return false;
+ }
+ Set mor = watcher2.getAttackedThisTurnCreatures();
+ if (!mor.stream().noneMatch((m) -> (m.getPermanent(game).equals(madDog)))) {
+ return false;
+ }
+ return true; // Mad Dog did not come into play this turn nor did he attack this turn. Sacrifice the hound.
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/m/MadProphet.java b/Mage.Sets/src/mage/cards/m/MadProphet.java
index 7427d12c56b..66781f247c3 100644
--- a/Mage.Sets/src/mage/cards/m/MadProphet.java
+++ b/Mage.Sets/src/mage/cards/m/MadProphet.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Loki
*/
-public class MadProphet extends CardImpl {
+public final class MadProphet extends CardImpl {
public MadProphet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MadScienceFairProject.java b/Mage.Sets/src/mage/cards/m/MadScienceFairProject.java
index bc79e82ec01..283565017cb 100644
--- a/Mage.Sets/src/mage/cards/m/MadScienceFairProject.java
+++ b/Mage.Sets/src/mage/cards/m/MadScienceFairProject.java
@@ -46,12 +46,12 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class MadScienceFairProject extends CardImpl {
+public final class MadScienceFairProject extends CardImpl {
public MadScienceFairProject(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
- // {tap}: Roll a six-sided die. On a 3 or lower, target player adds {C} to their mana pool. Otherwise, that player adds one mana of any color he or she chooses to their mana pool.
+ // {tap}: Roll a six-sided die. On a 3 or lower, target player adds {C}. Otherwise, that player adds one mana of any color he or she chooses.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new MadScienceFairManaEffect(), new TapSourceCost()));
}
@@ -69,7 +69,7 @@ class MadScienceFairManaEffect extends ManaEffect {
public MadScienceFairManaEffect() {
super();
- this.staticText = "Roll a six-sided die. On a 3 or lower, target player adds {C} to their mana pool. Otherwise, that player adds one mana of any color he or she chooses to their mana pool";
+ this.staticText = "Roll a six-sided die. On a 3 or lower, target player adds {C}. Otherwise, that player adds one mana of any color he or she chooses";
}
public MadScienceFairManaEffect(final MadScienceFairManaEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/m/MadblindMountain.java b/Mage.Sets/src/mage/cards/m/MadblindMountain.java
index aa22ac07a8c..daa65455cc6 100644
--- a/Mage.Sets/src/mage/cards/m/MadblindMountain.java
+++ b/Mage.Sets/src/mage/cards/m/MadblindMountain.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class MadblindMountain extends CardImpl {
+public final class MadblindMountain extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("if you control two or more red permanents");
diff --git a/Mage.Sets/src/mage/cards/m/MadcapExperiment.java b/Mage.Sets/src/mage/cards/m/MadcapExperiment.java
index 049759a9b79..e6ef95b38e8 100644
--- a/Mage.Sets/src/mage/cards/m/MadcapExperiment.java
+++ b/Mage.Sets/src/mage/cards/m/MadcapExperiment.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MadcapExperiment extends CardImpl {
+public final class MadcapExperiment extends CardImpl {
public MadcapExperiment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MadcapSkills.java b/Mage.Sets/src/mage/cards/m/MadcapSkills.java
index b3c89573c6c..b853107efc5 100644
--- a/Mage.Sets/src/mage/cards/m/MadcapSkills.java
+++ b/Mage.Sets/src/mage/cards/m/MadcapSkills.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class MadcapSkills extends CardImpl {
+public final class MadcapSkills extends CardImpl {
public MadcapSkills(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MaddeningImp.java b/Mage.Sets/src/mage/cards/m/MaddeningImp.java
index e56010487fa..3851edef515 100644
--- a/Mage.Sets/src/mage/cards/m/MaddeningImp.java
+++ b/Mage.Sets/src/mage/cards/m/MaddeningImp.java
@@ -58,7 +58,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author L_J
*/
-public class MaddeningImp extends CardImpl {
+public final class MaddeningImp extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MadrushCyclops.java b/Mage.Sets/src/mage/cards/m/MadrushCyclops.java
index b85a0e01a60..f8cb148fa53 100644
--- a/Mage.Sets/src/mage/cards/m/MadrushCyclops.java
+++ b/Mage.Sets/src/mage/cards/m/MadrushCyclops.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Loki
*/
-public class MadrushCyclops extends CardImpl {
+public final class MadrushCyclops extends CardImpl {
public MadrushCyclops (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MaelstromArchangel.java b/Mage.Sets/src/mage/cards/m/MaelstromArchangel.java
index 1c644aab712..3e3c71bd740 100644
--- a/Mage.Sets/src/mage/cards/m/MaelstromArchangel.java
+++ b/Mage.Sets/src/mage/cards/m/MaelstromArchangel.java
@@ -29,6 +29,7 @@ package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -37,8 +38,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.filter.FilterCard;
import mage.filter.common.FilterNonlandCard;
import mage.game.Game;
@@ -50,10 +51,10 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class MaelstromArchangel extends CardImpl {
+public final class MaelstromArchangel extends CardImpl {
public MaelstromArchangel(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}{B}{R}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}{B}{R}{G}");
this.subtype.add(SubType.ANGEL);
this.power = new MageInt(5);
@@ -61,10 +62,10 @@ public class MaelstromArchangel extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
-
+
// Whenever Maelstrom Archangel deals combat damage to a player, you may cast a nonland card from your hand without paying its mana cost.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new MaelstromArchangelCastEffect(), false));
-
+
}
public MaelstromArchangel(final MaelstromArchangel card) {
@@ -100,8 +101,8 @@ class MaelstromArchangelCastEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
Target target = new TargetCardInHand(filter);
- if (target.canChoose(source.getSourceId(), controller.getId(), game) &&
- controller.chooseUse(outcome, "Cast a nonland card from your hand without paying its mana cost?", source, game)) {
+ if (target.canChoose(source.getSourceId(), controller.getId(), game)
+ && controller.chooseUse(outcome, "Cast a nonland card from your hand without paying its mana cost?", source, game)) {
Card cardToCast = null;
boolean cancel = false;
while (controller.canRespond() && !cancel) {
@@ -115,7 +116,7 @@ class MaelstromArchangelCastEffect extends OneShotEffect {
}
}
if (cardToCast != null) {
- controller.cast(cardToCast.getSpellAbility(), game, true);
+ controller.cast(cardToCast.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/m/MaelstromDjinn.java b/Mage.Sets/src/mage/cards/m/MaelstromDjinn.java
index 25ed49bda19..51427e5a085 100644
--- a/Mage.Sets/src/mage/cards/m/MaelstromDjinn.java
+++ b/Mage.Sets/src/mage/cards/m/MaelstromDjinn.java
@@ -50,7 +50,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class MaelstromDjinn extends CardImpl {
+public final class MaelstromDjinn extends CardImpl {
public MaelstromDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MaelstromNexus.java b/Mage.Sets/src/mage/cards/m/MaelstromNexus.java
index f925d5efded..4a641959d65 100644
--- a/Mage.Sets/src/mage/cards/m/MaelstromNexus.java
+++ b/Mage.Sets/src/mage/cards/m/MaelstromNexus.java
@@ -50,7 +50,7 @@ import mage.watchers.common.FirstSpellCastThisTurnWatcher;
*
* @author jeffwadsworth
*/
-public class MaelstromNexus extends CardImpl {
+public final class MaelstromNexus extends CardImpl {
public MaelstromNexus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MaelstromPulse.java b/Mage.Sets/src/mage/cards/m/MaelstromPulse.java
index cc2628b85a2..38d8350ee9c 100644
--- a/Mage.Sets/src/mage/cards/m/MaelstromPulse.java
+++ b/Mage.Sets/src/mage/cards/m/MaelstromPulse.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MaelstromPulse extends CardImpl {
+public final class MaelstromPulse extends CardImpl {
public MaelstromPulse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MaelstromWanderer.java b/Mage.Sets/src/mage/cards/m/MaelstromWanderer.java
index c5fbf20bf2b..dbd7f690699 100644
--- a/Mage.Sets/src/mage/cards/m/MaelstromWanderer.java
+++ b/Mage.Sets/src/mage/cards/m/MaelstromWanderer.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class MaelstromWanderer extends CardImpl {
+public final class MaelstromWanderer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
diff --git a/Mage.Sets/src/mage/cards/m/MagaTraitorToMortals.java b/Mage.Sets/src/mage/cards/m/MagaTraitorToMortals.java
index 54b1e4f4dd2..5d0cdecf723 100644
--- a/Mage.Sets/src/mage/cards/m/MagaTraitorToMortals.java
+++ b/Mage.Sets/src/mage/cards/m/MagaTraitorToMortals.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class MagaTraitorToMortals extends CardImpl {
+public final class MagaTraitorToMortals extends CardImpl {
public MagaTraitorToMortals(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MageIlVec.java b/Mage.Sets/src/mage/cards/m/MageIlVec.java
index 51896df1a08..ae3477f51a2 100644
--- a/Mage.Sets/src/mage/cards/m/MageIlVec.java
+++ b/Mage.Sets/src/mage/cards/m/MageIlVec.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class MageIlVec extends CardImpl {
+public final class MageIlVec extends CardImpl {
public MageIlVec(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MageRingBully.java b/Mage.Sets/src/mage/cards/m/MageRingBully.java
index 9f919f78693..48d5378d6be 100644
--- a/Mage.Sets/src/mage/cards/m/MageRingBully.java
+++ b/Mage.Sets/src/mage/cards/m/MageRingBully.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Wehk
*/
-public class MageRingBully extends CardImpl {
+public final class MageRingBully extends CardImpl {
public MageRingBully(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MageRingNetwork.java b/Mage.Sets/src/mage/cards/m/MageRingNetwork.java
index 5ca44fb5c31..b745fc6da9f 100644
--- a/Mage.Sets/src/mage/cards/m/MageRingNetwork.java
+++ b/Mage.Sets/src/mage/cards/m/MageRingNetwork.java
@@ -50,7 +50,7 @@ import mage.counters.CounterType;
* @author LoneFox
*
*/
-public class MageRingNetwork extends CardImpl {
+public final class MageRingNetwork extends CardImpl {
public MageRingNetwork(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MageRingResponder.java b/Mage.Sets/src/mage/cards/m/MageRingResponder.java
index 2c35ab315f7..86fbfd1b722 100644
--- a/Mage.Sets/src/mage/cards/m/MageRingResponder.java
+++ b/Mage.Sets/src/mage/cards/m/MageRingResponder.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class MageRingResponder extends CardImpl {
+public final class MageRingResponder extends CardImpl {
public MageRingResponder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/m/MageSlayer.java b/Mage.Sets/src/mage/cards/m/MageSlayer.java
index 1d4e1c3a7c5..44f455e440c 100644
--- a/Mage.Sets/src/mage/cards/m/MageSlayer.java
+++ b/Mage.Sets/src/mage/cards/m/MageSlayer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class MageSlayer extends CardImpl {
+public final class MageSlayer extends CardImpl {
public MageSlayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MagebaneArmor.java b/Mage.Sets/src/mage/cards/m/MagebaneArmor.java
index 74ed3cdbd54..fc38519f58e 100644
--- a/Mage.Sets/src/mage/cards/m/MagebaneArmor.java
+++ b/Mage.Sets/src/mage/cards/m/MagebaneArmor.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class MagebaneArmor extends CardImpl {
+public final class MagebaneArmor extends CardImpl {
public MagebaneArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MagefireWings.java b/Mage.Sets/src/mage/cards/m/MagefireWings.java
index 4ba11539c1d..58bb8f1eaec 100644
--- a/Mage.Sets/src/mage/cards/m/MagefireWings.java
+++ b/Mage.Sets/src/mage/cards/m/MagefireWings.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MagefireWings extends CardImpl {
+public final class MagefireWings extends CardImpl {
public MagefireWings (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagesGuile.java b/Mage.Sets/src/mage/cards/m/MagesGuile.java
index 656fb85d659..1f8bb368432 100644
--- a/Mage.Sets/src/mage/cards/m/MagesGuile.java
+++ b/Mage.Sets/src/mage/cards/m/MagesGuile.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class MagesGuile extends CardImpl {
+public final class MagesGuile extends CardImpl {
public MagesGuile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MagetaTheLion.java b/Mage.Sets/src/mage/cards/m/MagetaTheLion.java
index cc06630f48c..2491694b114 100644
--- a/Mage.Sets/src/mage/cards/m/MagetaTheLion.java
+++ b/Mage.Sets/src/mage/cards/m/MagetaTheLion.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class MagetaTheLion extends CardImpl {
+public final class MagetaTheLion extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creatures except for {this}");
diff --git a/Mage.Sets/src/mage/cards/m/MagetasBoon.java b/Mage.Sets/src/mage/cards/m/MagetasBoon.java
index 16699415444..5041ef225b6 100644
--- a/Mage.Sets/src/mage/cards/m/MagetasBoon.java
+++ b/Mage.Sets/src/mage/cards/m/MagetasBoon.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MagetasBoon extends CardImpl {
+public final class MagetasBoon extends CardImpl {
public MagetasBoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MagewrightsStone.java b/Mage.Sets/src/mage/cards/m/MagewrightsStone.java
index 77ebf02c953..f11f11406cc 100644
--- a/Mage.Sets/src/mage/cards/m/MagewrightsStone.java
+++ b/Mage.Sets/src/mage/cards/m/MagewrightsStone.java
@@ -51,7 +51,7 @@ import java.util.UUID;
/**
* @author BursegSardaukar
*/
-public class MagewrightsStone extends CardImpl {
+public final class MagewrightsStone extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that has an activated ability with {T} in its cost");
diff --git a/Mage.Sets/src/mage/cards/m/MaggotCarrier.java b/Mage.Sets/src/mage/cards/m/MaggotCarrier.java
index 20fdc9b3dd4..db1ae2b2d35 100644
--- a/Mage.Sets/src/mage/cards/m/MaggotCarrier.java
+++ b/Mage.Sets/src/mage/cards/m/MaggotCarrier.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author dustinconrad
*/
-public class MaggotCarrier extends CardImpl {
+public final class MaggotCarrier extends CardImpl {
public MaggotCarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MaggotTherapy.java b/Mage.Sets/src/mage/cards/m/MaggotTherapy.java
index 6c7f57fdb64..e6e277ea092 100644
--- a/Mage.Sets/src/mage/cards/m/MaggotTherapy.java
+++ b/Mage.Sets/src/mage/cards/m/MaggotTherapy.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class MaggotTherapy extends CardImpl {
+public final class MaggotTherapy extends CardImpl {
public MaggotTherapy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MagisterOfWorth.java b/Mage.Sets/src/mage/cards/m/MagisterOfWorth.java
index fdf4899bbee..7ea2446c9a5 100644
--- a/Mage.Sets/src/mage/cards/m/MagisterOfWorth.java
+++ b/Mage.Sets/src/mage/cards/m/MagisterOfWorth.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class MagisterOfWorth extends CardImpl {
+public final class MagisterOfWorth extends CardImpl {
public MagisterOfWorth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MagisterSphinx.java b/Mage.Sets/src/mage/cards/m/MagisterSphinx.java
index 0288bfd068c..0f9cb842f8e 100644
--- a/Mage.Sets/src/mage/cards/m/MagisterSphinx.java
+++ b/Mage.Sets/src/mage/cards/m/MagisterSphinx.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class MagisterSphinx extends CardImpl {
+public final class MagisterSphinx extends CardImpl {
public MagisterSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MagistratesScepter.java b/Mage.Sets/src/mage/cards/m/MagistratesScepter.java
index e437843c408..e57b75a382c 100644
--- a/Mage.Sets/src/mage/cards/m/MagistratesScepter.java
+++ b/Mage.Sets/src/mage/cards/m/MagistratesScepter.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class MagistratesScepter extends CardImpl {
+public final class MagistratesScepter extends CardImpl {
public MagistratesScepter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MagistratesVeto.java b/Mage.Sets/src/mage/cards/m/MagistratesVeto.java
index 930d2fc5bfd..5406a0027ad 100644
--- a/Mage.Sets/src/mage/cards/m/MagistratesVeto.java
+++ b/Mage.Sets/src/mage/cards/m/MagistratesVeto.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class MagistratesVeto extends CardImpl {
+public final class MagistratesVeto extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures and blue creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaBurst.java b/Mage.Sets/src/mage/cards/m/MagmaBurst.java
index 908e644a5b2..a0ac5b8d4a0 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaBurst.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaBurst.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*
*/
-public class MagmaBurst extends CardImpl {
+public final class MagmaBurst extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/m/MagmaGiant.java b/Mage.Sets/src/mage/cards/m/MagmaGiant.java
index 78bca9c1fb3..7eba20d5002 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaGiant.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaGiant.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class MagmaGiant extends CardImpl {
+public final class MagmaGiant extends CardImpl {
public MagmaGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaHellion.java b/Mage.Sets/src/mage/cards/m/MagmaHellion.java
new file mode 100644
index 00000000000..127c73b6ff6
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/m/MagmaHellion.java
@@ -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.m;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.constants.SubType;
+import mage.abilities.keyword.AssistAbility;
+import mage.abilities.keyword.TrampleAbility;
+import mage.abilities.keyword.HasteAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class MagmaHellion extends CardImpl {
+
+ public MagmaHellion(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{R}");
+
+ this.subtype.add(SubType.HELLION);
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(4);
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // Trample
+ this.addAbility(TrampleAbility.getInstance());
+
+ // Haste
+ this.addAbility(HasteAbility.getInstance());
+
+ }
+
+ public MagmaHellion(final MagmaHellion card) {
+ super(card);
+ }
+
+ @Override
+ public MagmaHellion copy() {
+ return new MagmaHellion(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/m/MagmaJet.java b/Mage.Sets/src/mage/cards/m/MagmaJet.java
index 90d6e5a1ea2..25a611fbe14 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaJet.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaJet.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jonubuu
*/
-public class MagmaJet extends CardImpl {
+public final class MagmaJet extends CardImpl {
public MagmaJet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaMine.java b/Mage.Sets/src/mage/cards/m/MagmaMine.java
index 1704cd2fc7e..af701c15b5f 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaMine.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaMine.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class MagmaMine extends CardImpl {
+public final class MagmaMine extends CardImpl {
public MagmaMine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaPhoenix.java b/Mage.Sets/src/mage/cards/m/MagmaPhoenix.java
index 056ed4c24dc..e7fc00ff481 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaPhoenix.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaPhoenix.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MagmaPhoenix extends CardImpl {
+public final class MagmaPhoenix extends CardImpl {
public MagmaPhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaRift.java b/Mage.Sets/src/mage/cards/m/MagmaRift.java
index 843815a4f74..68e82526167 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaRift.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaRift.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MagmaRift extends CardImpl {
+public final class MagmaRift extends CardImpl {
public MagmaRift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaSliver.java b/Mage.Sets/src/mage/cards/m/MagmaSliver.java
index 01ad8dd8283..dbdbed3dbf1 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaSliver.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaSliver.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class MagmaSliver extends CardImpl {
+public final class MagmaSliver extends CardImpl {
public MagmaSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaSpray.java b/Mage.Sets/src/mage/cards/m/MagmaSpray.java
index 3fc5af518e7..e60bef3bbb3 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaSpray.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaSpray.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MagmaSpray extends CardImpl {
+public final class MagmaSpray extends CardImpl {
public MagmaSpray(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaVein.java b/Mage.Sets/src/mage/cards/m/MagmaVein.java
index 880330e1bb2..4c2836b0a80 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaVein.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaVein.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author cbt33
*/
-public class MagmaVein extends CardImpl {
+public final class MagmaVein extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature without flying");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/m/Magmaquake.java b/Mage.Sets/src/mage/cards/m/Magmaquake.java
index 5c43e70cfb2..87e8cec7b83 100644
--- a/Mage.Sets/src/mage/cards/m/Magmaquake.java
+++ b/Mage.Sets/src/mage/cards/m/Magmaquake.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author North
*/
-public class Magmaquake extends CardImpl {
+public final class Magmaquake extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature without flying and each planeswalker");
diff --git a/Mage.Sets/src/mage/cards/m/Magmaroth.java b/Mage.Sets/src/mage/cards/m/Magmaroth.java
index a6821c005ae..824712cfbc0 100644
--- a/Mage.Sets/src/mage/cards/m/Magmaroth.java
+++ b/Mage.Sets/src/mage/cards/m/Magmaroth.java
@@ -16,7 +16,7 @@ import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
-public class Magmaroth extends CardImpl{
+public final class Magmaroth extends CardImpl{
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/m/Magmasaur.java b/Mage.Sets/src/mage/cards/m/Magmasaur.java
index 5878c29ca65..fcfaf94d785 100644
--- a/Mage.Sets/src/mage/cards/m/Magmasaur.java
+++ b/Mage.Sets/src/mage/cards/m/Magmasaur.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class Magmasaur extends CardImpl {
+public final class Magmasaur extends CardImpl {
public Magmasaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaticChasm.java b/Mage.Sets/src/mage/cards/m/MagmaticChasm.java
index f361e012a1f..df99f7d45cb 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaticChasm.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaticChasm.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class MagmaticChasm extends CardImpl {
+public final class MagmaticChasm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaticCore.java b/Mage.Sets/src/mage/cards/m/MagmaticCore.java
index 7cd7f3afcbe..6ff998ff6cc 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaticCore.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaticCore.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author TheElk801
*/
-public class MagmaticCore extends CardImpl {
+public final class MagmaticCore extends CardImpl {
public MagmaticCore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaticForce.java b/Mage.Sets/src/mage/cards/m/MagmaticForce.java
index bf05ff7fc7a..3b6d5ea6cf6 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaticForce.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaticForce.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class MagmaticForce extends CardImpl {
+public final class MagmaticForce extends CardImpl {
public MagmaticForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagmaticInsight.java b/Mage.Sets/src/mage/cards/m/MagmaticInsight.java
index 29540c2e449..f4ff19431b4 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaticInsight.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaticInsight.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class MagmaticInsight extends CardImpl {
+public final class MagmaticInsight extends CardImpl {
public MagmaticInsight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Magmaw.java b/Mage.Sets/src/mage/cards/m/Magmaw.java
index 865025bd8ca..abddfcf3d7c 100644
--- a/Mage.Sets/src/mage/cards/m/Magmaw.java
+++ b/Mage.Sets/src/mage/cards/m/Magmaw.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class Magmaw extends CardImpl {
+public final class Magmaw extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("nonland permanent");
diff --git a/Mage.Sets/src/mage/cards/m/MagneticFlux.java b/Mage.Sets/src/mage/cards/m/MagneticFlux.java
index 5df76bb3df7..357afdfd649 100644
--- a/Mage.Sets/src/mage/cards/m/MagneticFlux.java
+++ b/Mage.Sets/src/mage/cards/m/MagneticFlux.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
/**
* @author Loki
*/
-public class MagneticFlux extends CardImpl {
+public final class MagneticFlux extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Artifact creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MagneticMine.java b/Mage.Sets/src/mage/cards/m/MagneticMine.java
index 12946699d34..570eadc8973 100644
--- a/Mage.Sets/src/mage/cards/m/MagneticMine.java
+++ b/Mage.Sets/src/mage/cards/m/MagneticMine.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class MagneticMine extends CardImpl {
+public final class MagneticMine extends CardImpl {
public MagneticMine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/m/MagneticMountain.java b/Mage.Sets/src/mage/cards/m/MagneticMountain.java
index 2d637afb763..238797928bd 100644
--- a/Mage.Sets/src/mage/cards/m/MagneticMountain.java
+++ b/Mage.Sets/src/mage/cards/m/MagneticMountain.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author MarcoMarin
*/
-public class MagneticMountain extends CardImpl {
+public final class MagneticMountain extends CardImpl {
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MagneticTheft.java b/Mage.Sets/src/mage/cards/m/MagneticTheft.java
index ebeaea53d43..1ee83caa266 100644
--- a/Mage.Sets/src/mage/cards/m/MagneticTheft.java
+++ b/Mage.Sets/src/mage/cards/m/MagneticTheft.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class MagneticTheft extends CardImpl {
+public final class MagneticTheft extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Equipment");
diff --git a/Mage.Sets/src/mage/cards/m/Magnify.java b/Mage.Sets/src/mage/cards/m/Magnify.java
index 4a46d6927bb..b2beac6c132 100644
--- a/Mage.Sets/src/mage/cards/m/Magnify.java
+++ b/Mage.Sets/src/mage/cards/m/Magnify.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class Magnify extends CardImpl {
+public final class Magnify extends CardImpl {
public Magnify(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MagnifyingGlass.java b/Mage.Sets/src/mage/cards/m/MagnifyingGlass.java
index e8b6c2540f3..e85a4aff59d 100644
--- a/Mage.Sets/src/mage/cards/m/MagnifyingGlass.java
+++ b/Mage.Sets/src/mage/cards/m/MagnifyingGlass.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MagnifyingGlass extends CardImpl {
+public final class MagnifyingGlass extends CardImpl {
public MagnifyingGlass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MagnigothTreefolk.java b/Mage.Sets/src/mage/cards/m/MagnigothTreefolk.java
index e1d470b1eb5..0ecbaf71923 100644
--- a/Mage.Sets/src/mage/cards/m/MagnigothTreefolk.java
+++ b/Mage.Sets/src/mage/cards/m/MagnigothTreefolk.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author emerald000
*/
-public class MagnigothTreefolk extends CardImpl {
+public final class MagnigothTreefolk extends CardImpl {
private static final FilterLandPermanent filterPlains = new FilterLandPermanent(SubType.PLAINS, "Plains");
private static final FilterLandPermanent filterIsland = new FilterLandPermanent(SubType.ISLAND, "Island");
diff --git a/Mage.Sets/src/mage/cards/m/Magnivore.java b/Mage.Sets/src/mage/cards/m/Magnivore.java
index 550708147ff..365e11ccfc5 100644
--- a/Mage.Sets/src/mage/cards/m/Magnivore.java
+++ b/Mage.Sets/src/mage/cards/m/Magnivore.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class Magnivore extends CardImpl {
+public final class Magnivore extends CardImpl {
private static final FilterCard filter = new FilterCard("sorcery cards");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MagosiTheWaterveil.java b/Mage.Sets/src/mage/cards/m/MagosiTheWaterveil.java
index 05d30af4bc1..efc98c48a44 100644
--- a/Mage.Sets/src/mage/cards/m/MagosiTheWaterveil.java
+++ b/Mage.Sets/src/mage/cards/m/MagosiTheWaterveil.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author jeffwadsworth
*/
-public class MagosiTheWaterveil extends CardImpl {
+public final class MagosiTheWaterveil extends CardImpl {
public MagosiTheWaterveil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheAbyss.java b/Mage.Sets/src/mage/cards/m/MagusOfTheAbyss.java
index ce3e0684674..d98d84f08e6 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheAbyss.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheAbyss.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class MagusOfTheAbyss extends CardImpl {
+public final class MagusOfTheAbyss extends CardImpl {
public MagusOfTheAbyss(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheArena.java b/Mage.Sets/src/mage/cards/m/MagusOfTheArena.java
index 170d16e373a..e095c09f344 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheArena.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheArena.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponentsChoicePermanent;
*
* @author LevelX2
*/
-public class MagusOfTheArena extends CardImpl {
+public final class MagusOfTheArena extends CardImpl {
public MagusOfTheArena(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheBazaar.java b/Mage.Sets/src/mage/cards/m/MagusOfTheBazaar.java
index 6f13d313d31..70ed11a57b7 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheBazaar.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheBazaar.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class MagusOfTheBazaar extends CardImpl {
+public final class MagusOfTheBazaar extends CardImpl {
public MagusOfTheBazaar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java b/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java
index d1a5c93b323..086adb1f433 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
/**
* @author duncant
*/
-public class MagusOfTheCandelabra extends CardImpl {
+public final class MagusOfTheCandelabra extends CardImpl {
public MagusOfTheCandelabra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheCoffers.java b/Mage.Sets/src/mage/cards/m/MagusOfTheCoffers.java
index 5bd058777b4..d56d554f67c 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheCoffers.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheCoffers.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class MagusOfTheCoffers extends CardImpl {
+public final class MagusOfTheCoffers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Swamp you control");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheDisk.java b/Mage.Sets/src/mage/cards/m/MagusOfTheDisk.java
index abfea2f3a58..35acfe47418 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheDisk.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheDisk.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author daagar
*/
-public class MagusOfTheDisk extends CardImpl {
+public final class MagusOfTheDisk extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts, creatures, and enchantments");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheFuture.java b/Mage.Sets/src/mage/cards/m/MagusOfTheFuture.java
index dbe0b871bdc..853f1ef97cb 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheFuture.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheFuture.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class MagusOfTheFuture extends CardImpl {
+public final class MagusOfTheFuture extends CardImpl {
public MagusOfTheFuture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheJar.java b/Mage.Sets/src/mage/cards/m/MagusOfTheJar.java
index ca6d9073e4b..6727546dfa3 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheJar.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheJar.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author HCrescent
*/
-public class MagusOfTheJar extends CardImpl {
+public final class MagusOfTheJar extends CardImpl {
public MagusOfTheJar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheLibrary.java b/Mage.Sets/src/mage/cards/m/MagusOfTheLibrary.java
index 5877e38117a..60aba7d916d 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheLibrary.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheLibrary.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MagusOfTheLibrary extends CardImpl {
+public final class MagusOfTheLibrary extends CardImpl {
public MagusOfTheLibrary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheMind.java b/Mage.Sets/src/mage/cards/m/MagusOfTheMind.java
index 69594e1e54a..9f5e1a9f3ef 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheMind.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheMind.java
@@ -57,7 +57,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author TheElk801
*/
-public class MagusOfTheMind extends CardImpl {
+public final class MagusOfTheMind extends CardImpl {
public MagusOfTheMind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheMirror.java b/Mage.Sets/src/mage/cards/m/MagusOfTheMirror.java
index 13baec75148..033b157be66 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheMirror.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheMirror.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class MagusOfTheMirror extends CardImpl {
+public final class MagusOfTheMirror extends CardImpl {
public MagusOfTheMirror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheMoat.java b/Mage.Sets/src/mage/cards/m/MagusOfTheMoat.java
index 8e6915977f0..3868ee76dd7 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheMoat.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheMoat.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
/**
* @author duncant
*/
-public class MagusOfTheMoat extends CardImpl {
+public final class MagusOfTheMoat extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheMoon.java b/Mage.Sets/src/mage/cards/m/MagusOfTheMoon.java
index 6d358863fba..65e3f7f0a5d 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheMoon.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheMoon.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class MagusOfTheMoon extends CardImpl {
+public final class MagusOfTheMoon extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheScroll.java b/Mage.Sets/src/mage/cards/m/MagusOfTheScroll.java
index 346c2b418e4..8059e123f50 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheScroll.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheScroll.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class MagusOfTheScroll extends CardImpl {
+public final class MagusOfTheScroll extends CardImpl {
public MagusOfTheScroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheTabernacle.java b/Mage.Sets/src/mage/cards/m/MagusOfTheTabernacle.java
index 0fdd344d1e7..436c40deaaa 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheTabernacle.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheTabernacle.java
@@ -48,7 +48,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class MagusOfTheTabernacle extends CardImpl {
+public final class MagusOfTheTabernacle extends CardImpl {
static private final String rule = "All creatures have \"At the beginning of your upkeep, sacrifice this creature unless you pay {1}.\"";
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheUnseen.java b/Mage.Sets/src/mage/cards/m/MagusOfTheUnseen.java
index bb561dd1d9c..a0d92ee8523 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheUnseen.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheUnseen.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author emerald000
*/
-public class MagusOfTheUnseen extends CardImpl {
+public final class MagusOfTheUnseen extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifact an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheVineyard.java b/Mage.Sets/src/mage/cards/m/MagusOfTheVineyard.java
index 903f92c9f77..8c43e6fc31a 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheVineyard.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheVineyard.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class MagusOfTheVineyard extends CardImpl {
+public final class MagusOfTheVineyard extends CardImpl {
public MagusOfTheVineyard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheWheel.java b/Mage.Sets/src/mage/cards/m/MagusOfTheWheel.java
index 01da724ec05..951ef482045 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheWheel.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheWheel.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MagusOfTheWheel extends CardImpl {
+public final class MagusOfTheWheel extends CardImpl {
public MagusOfTheWheel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheWill.java b/Mage.Sets/src/mage/cards/m/MagusOfTheWill.java
index 93661d6a645..49ecf335891 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheWill.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheWill.java
@@ -57,7 +57,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class MagusOfTheWill extends CardImpl {
+public final class MagusOfTheWill extends CardImpl {
public MagusOfTheWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MahamotiDjinn.java b/Mage.Sets/src/mage/cards/m/MahamotiDjinn.java
index d7ec3717f89..7dcd2c6549d 100644
--- a/Mage.Sets/src/mage/cards/m/MahamotiDjinn.java
+++ b/Mage.Sets/src/mage/cards/m/MahamotiDjinn.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MahamotiDjinn extends CardImpl {
+public final class MahamotiDjinn extends CardImpl {
public MahamotiDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MaintenanceDroid.java b/Mage.Sets/src/mage/cards/m/MaintenanceDroid.java
index f582734bcb2..6fa6e066174 100644
--- a/Mage.Sets/src/mage/cards/m/MaintenanceDroid.java
+++ b/Mage.Sets/src/mage/cards/m/MaintenanceDroid.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Styxo
*/
-public class MaintenanceDroid extends CardImpl {
+public final class MaintenanceDroid extends CardImpl {
private static final FilterCard filter = new FilterCard("target card you own with a repair counter on it");
diff --git a/Mage.Sets/src/mage/cards/m/MaintenanceHangar.java b/Mage.Sets/src/mage/cards/m/MaintenanceHangar.java
index c22a64b03b7..6e4c980dc7c 100644
--- a/Mage.Sets/src/mage/cards/m/MaintenanceHangar.java
+++ b/Mage.Sets/src/mage/cards/m/MaintenanceHangar.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class MaintenanceHangar extends CardImpl {
+public final class MaintenanceHangar extends CardImpl {
private static final FilterCreaturePermanent filterPermanent = new FilterCreaturePermanent("Starship creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MairsilThePretender.java b/Mage.Sets/src/mage/cards/m/MairsilThePretender.java
index f0e955abb11..4a5bd23629f 100644
--- a/Mage.Sets/src/mage/cards/m/MairsilThePretender.java
+++ b/Mage.Sets/src/mage/cards/m/MairsilThePretender.java
@@ -32,7 +32,6 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.ActivatedAbility;
-import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.ContinuousEffectImpl;
@@ -64,7 +63,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class MairsilThePretender extends CardImpl {
+public final class MairsilThePretender extends CardImpl {
public MairsilThePretender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{B}{R}");
@@ -169,9 +168,9 @@ class MairsilThePretenderGainAbilitiesEffect extends ContinuousEffectImpl {
if (filter.match(card, game) && Objects.equals(card.getOwnerId(), perm.getControllerId())) {
for (Ability ability : card.getAbilities()) {
if (ability instanceof ActivatedAbility) {
- ActivatedAbilityImpl copyAbility = (ActivatedAbilityImpl) ability.copy();
+ ActivatedAbility copyAbility = (ActivatedAbility) ability.copy();
copyAbility.setMaxActivationsPerTurn(1);
- perm.addAbility(copyAbility, card.getId(), game);
+ perm.addAbility(copyAbility, source.getSourceId(), game);
}
}
}
diff --git a/Mage.Sets/src/mage/cards/m/MajesticHeliopterus.java b/Mage.Sets/src/mage/cards/m/MajesticHeliopterus.java
index be37a60d1fc..3a2f125e973 100644
--- a/Mage.Sets/src/mage/cards/m/MajesticHeliopterus.java
+++ b/Mage.Sets/src/mage/cards/m/MajesticHeliopterus.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class MajesticHeliopterus extends CardImpl {
+public final class MajesticHeliopterus extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target Dinosaur you control");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java b/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java
index eb20db682b9..c7ed2cb5ed4 100644
--- a/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java
+++ b/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java
@@ -67,7 +67,7 @@ import mage.game.Game;
*
* @author fireshoes
*/
-public class MajesticMyriarch extends CardImpl {
+public final class MajesticMyriarch extends CardImpl {
public MajesticMyriarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MajorTeroh.java b/Mage.Sets/src/mage/cards/m/MajorTeroh.java
index a917efc3c58..bdcb1b4f135 100644
--- a/Mage.Sets/src/mage/cards/m/MajorTeroh.java
+++ b/Mage.Sets/src/mage/cards/m/MajorTeroh.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class MajorTeroh extends CardImpl {
+public final class MajorTeroh extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MakeAStand.java b/Mage.Sets/src/mage/cards/m/MakeAStand.java
index 63203aff8d9..38fedb42a90 100644
--- a/Mage.Sets/src/mage/cards/m/MakeAStand.java
+++ b/Mage.Sets/src/mage/cards/m/MakeAStand.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class MakeAStand extends CardImpl {
+public final class MakeAStand extends CardImpl {
public MakeAStand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MakeAWish.java b/Mage.Sets/src/mage/cards/m/MakeAWish.java
index 990a655b9b0..b603c177800 100644
--- a/Mage.Sets/src/mage/cards/m/MakeAWish.java
+++ b/Mage.Sets/src/mage/cards/m/MakeAWish.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author North
*/
-public class MakeAWish extends CardImpl {
+public final class MakeAWish extends CardImpl {
public MakeAWish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MakeMischief.java b/Mage.Sets/src/mage/cards/m/MakeMischief.java
index 05da556bde7..908b346e6f3 100644
--- a/Mage.Sets/src/mage/cards/m/MakeMischief.java
+++ b/Mage.Sets/src/mage/cards/m/MakeMischief.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class MakeMischief extends CardImpl {
+public final class MakeMischief extends CardImpl {
public MakeMischief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MakeObsolete.java b/Mage.Sets/src/mage/cards/m/MakeObsolete.java
index 462854b4c03..7a1bcdbad76 100644
--- a/Mage.Sets/src/mage/cards/m/MakeObsolete.java
+++ b/Mage.Sets/src/mage/cards/m/MakeObsolete.java
@@ -10,7 +10,7 @@ import mage.constants.Duration;
/**
* @author royk
*/
-public class MakeObsolete extends CardImpl {
+public final class MakeObsolete extends CardImpl {
public MakeObsolete(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MakeshiftMannequin.java b/Mage.Sets/src/mage/cards/m/MakeshiftMannequin.java
index 0854b7f7943..6228e09db74 100644
--- a/Mage.Sets/src/mage/cards/m/MakeshiftMannequin.java
+++ b/Mage.Sets/src/mage/cards/m/MakeshiftMannequin.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class MakeshiftMannequin extends CardImpl {
+public final class MakeshiftMannequin extends CardImpl {
public MakeshiftMannequin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MakeshiftMauler.java b/Mage.Sets/src/mage/cards/m/MakeshiftMauler.java
index 02fe0401345..6833af811f1 100644
--- a/Mage.Sets/src/mage/cards/m/MakeshiftMauler.java
+++ b/Mage.Sets/src/mage/cards/m/MakeshiftMauler.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class MakeshiftMauler extends CardImpl {
+public final class MakeshiftMauler extends CardImpl {
public MakeshiftMauler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MakeshiftMunitions.java b/Mage.Sets/src/mage/cards/m/MakeshiftMunitions.java
index bd98c7f7751..f76d52d3236 100644
--- a/Mage.Sets/src/mage/cards/m/MakeshiftMunitions.java
+++ b/Mage.Sets/src/mage/cards/m/MakeshiftMunitions.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class MakeshiftMunitions extends CardImpl {
+public final class MakeshiftMunitions extends CardImpl {
diff --git a/Mage.Sets/src/mage/cards/m/MakindiAeronaut.java b/Mage.Sets/src/mage/cards/m/MakindiAeronaut.java
index e84f5a9856d..f5a2eb95125 100644
--- a/Mage.Sets/src/mage/cards/m/MakindiAeronaut.java
+++ b/Mage.Sets/src/mage/cards/m/MakindiAeronaut.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class MakindiAeronaut extends CardImpl {
+public final class MakindiAeronaut extends CardImpl {
public MakindiAeronaut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MakindiGriffin.java b/Mage.Sets/src/mage/cards/m/MakindiGriffin.java
index bee6220a801..55169f4ad16 100644
--- a/Mage.Sets/src/mage/cards/m/MakindiGriffin.java
+++ b/Mage.Sets/src/mage/cards/m/MakindiGriffin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class MakindiGriffin extends CardImpl {
+public final class MakindiGriffin extends CardImpl {
public MakindiGriffin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MakindiPatrol.java b/Mage.Sets/src/mage/cards/m/MakindiPatrol.java
index b1d7a40aef3..40d723b7378 100644
--- a/Mage.Sets/src/mage/cards/m/MakindiPatrol.java
+++ b/Mage.Sets/src/mage/cards/m/MakindiPatrol.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class MakindiPatrol extends CardImpl {
+public final class MakindiPatrol extends CardImpl {
public MakindiPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MakindiShieldmate.java b/Mage.Sets/src/mage/cards/m/MakindiShieldmate.java
index c6f9212e31f..02af00a133a 100644
--- a/Mage.Sets/src/mage/cards/m/MakindiShieldmate.java
+++ b/Mage.Sets/src/mage/cards/m/MakindiShieldmate.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class MakindiShieldmate extends CardImpl {
+public final class MakindiShieldmate extends CardImpl {
public MakindiShieldmate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MakindiSliderunner.java b/Mage.Sets/src/mage/cards/m/MakindiSliderunner.java
index 051715953bd..93d45d8c39b 100644
--- a/Mage.Sets/src/mage/cards/m/MakindiSliderunner.java
+++ b/Mage.Sets/src/mage/cards/m/MakindiSliderunner.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class MakindiSliderunner extends CardImpl {
+public final class MakindiSliderunner extends CardImpl {
public MakindiSliderunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MalachOfTheDawn.java b/Mage.Sets/src/mage/cards/m/MalachOfTheDawn.java
index e21480e46e3..2114406914e 100644
--- a/Mage.Sets/src/mage/cards/m/MalachOfTheDawn.java
+++ b/Mage.Sets/src/mage/cards/m/MalachOfTheDawn.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class MalachOfTheDawn extends CardImpl {
+public final class MalachOfTheDawn extends CardImpl {
public MalachOfTheDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MalachiteGolem.java b/Mage.Sets/src/mage/cards/m/MalachiteGolem.java
index 406e925c1d1..9f791e2a289 100644
--- a/Mage.Sets/src/mage/cards/m/MalachiteGolem.java
+++ b/Mage.Sets/src/mage/cards/m/MalachiteGolem.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class MalachiteGolem extends CardImpl {
+public final class MalachiteGolem extends CardImpl {
public MalachiteGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/m/MalachiteTalisman.java b/Mage.Sets/src/mage/cards/m/MalachiteTalisman.java
index e3295bd929b..668a530023a 100644
--- a/Mage.Sets/src/mage/cards/m/MalachiteTalisman.java
+++ b/Mage.Sets/src/mage/cards/m/MalachiteTalisman.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class MalachiteTalisman extends CardImpl {
+public final class MalachiteTalisman extends CardImpl {
private final static FilterSpell filter = new FilterSpell("a green spell");
diff --git a/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java b/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java
index 7ba73a3e031..120caa8049c 100644
--- a/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java
+++ b/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author North
*/
-public class MalakirBloodwitch extends CardImpl {
+public final class MalakirBloodwitch extends CardImpl {
public MalakirBloodwitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MalakirCullblade.java b/Mage.Sets/src/mage/cards/m/MalakirCullblade.java
index e9eb7979ce3..3ab2f6c225a 100644
--- a/Mage.Sets/src/mage/cards/m/MalakirCullblade.java
+++ b/Mage.Sets/src/mage/cards/m/MalakirCullblade.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class MalakirCullblade extends CardImpl {
+public final class MalakirCullblade extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/m/MalakirFamiliar.java b/Mage.Sets/src/mage/cards/m/MalakirFamiliar.java
index d40fc586786..39828d56d32 100644
--- a/Mage.Sets/src/mage/cards/m/MalakirFamiliar.java
+++ b/Mage.Sets/src/mage/cards/m/MalakirFamiliar.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class MalakirFamiliar extends CardImpl {
+public final class MalakirFamiliar extends CardImpl {
public MalakirFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java
index 457a9862d46..25bff86fca8 100644
--- a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java
+++ b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class MalakirSoothsayer extends CardImpl {
+public final class MalakirSoothsayer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Ally you control");
diff --git a/Mage.Sets/src/mage/cards/m/MalevolentAwakening.java b/Mage.Sets/src/mage/cards/m/MalevolentAwakening.java
index 5b9b7c50824..1ce697892ba 100644
--- a/Mage.Sets/src/mage/cards/m/MalevolentAwakening.java
+++ b/Mage.Sets/src/mage/cards/m/MalevolentAwakening.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author cbt33
*/
-public class MalevolentAwakening extends CardImpl {
+public final class MalevolentAwakening extends CardImpl {
private static final FilterCard filter = new FilterCard("creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MalevolentWhispers.java b/Mage.Sets/src/mage/cards/m/MalevolentWhispers.java
index 448bdd8e84f..f94d7af2e08 100644
--- a/Mage.Sets/src/mage/cards/m/MalevolentWhispers.java
+++ b/Mage.Sets/src/mage/cards/m/MalevolentWhispers.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MalevolentWhispers extends CardImpl {
+public final class MalevolentWhispers extends CardImpl {
public MalevolentWhispers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Malfegor.java b/Mage.Sets/src/mage/cards/m/Malfegor.java
index 999ca60a96b..959d8a24c5f 100644
--- a/Mage.Sets/src/mage/cards/m/Malfegor.java
+++ b/Mage.Sets/src/mage/cards/m/Malfegor.java
@@ -32,6 +32,8 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.SacrificeOpponentsEffect;
+import mage.abilities.effects.common.discard.DiscardHandControllerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -39,25 +41,22 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.constants.SuperType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
-import mage.game.permanent.Permanent;
import mage.players.Player;
-import mage.target.Target;
-import mage.target.common.TargetControlledPermanent;
/**
*
* @author jeffwadsworth
*/
-public class Malfegor extends CardImpl {
+public final class Malfegor extends CardImpl {
public Malfegor(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}{R}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}{R}{R}");
+
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.DEMON);
this.subtype.add(SubType.DRAGON);
-
this.power = new MageInt(6);
this.toughness = new MageInt(6);
@@ -93,35 +92,19 @@ class MalfegorEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
- if (controller != null) {
- int sacrificeNumber = controller.getHand().size();
- if (sacrificeNumber > 0) {
- controller.discard(sacrificeNumber, source, game);
- for (UUID opponentId : game.getOpponents(controller.getId())) {
- Player opponent = game.getPlayer(opponentId);
- if (opponent != null) {
- for (int i = 0; i < sacrificeNumber; i++) {
- Target target = new TargetControlledPermanent(new FilterControlledCreaturePermanent());
- if (target.canChoose(opponentId, game)) {
- if (opponent.choose(Outcome.Sacrifice, target, source.getSourceId(), game)) {
- Permanent permanent = game.getPermanent(target.getFirstTarget());
- if (permanent != null) {
- permanent.sacrifice(source.getSourceId(), game);
- }
- }
- }
- }
- }
- }
- }
+ if (controller == null) {
+ return false;
+ }
+ int sacrificeNumber = controller.getHand().size();
+ if (sacrificeNumber == 0) {
return true;
}
- return false;
-
+ new DiscardHandControllerEffect().apply(game, source);
+ return new SacrificeOpponentsEffect(sacrificeNumber, StaticFilters.FILTER_PERMANENT_CREATURE).apply(game, source);
}
@Override
public MalfegorEffect copy() {
return new MalfegorEffect(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/m/Malfunction.java b/Mage.Sets/src/mage/cards/m/Malfunction.java
index fc286bf2cb6..db432eced2c 100644
--- a/Mage.Sets/src/mage/cards/m/Malfunction.java
+++ b/Mage.Sets/src/mage/cards/m/Malfunction.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class Malfunction extends CardImpl {
+public final class Malfunction extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/m/MaliciousAdvice.java b/Mage.Sets/src/mage/cards/m/MaliciousAdvice.java
index 05479e10072..7014a8c28b9 100644
--- a/Mage.Sets/src/mage/cards/m/MaliciousAdvice.java
+++ b/Mage.Sets/src/mage/cards/m/MaliciousAdvice.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class MaliciousAdvice extends CardImpl {
+public final class MaliciousAdvice extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts, creatures, and/or lands");
diff --git a/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java b/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java
index c626237b6fe..25fa6a47330 100644
--- a/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java
+++ b/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MaliciousAffliction extends CardImpl {
+public final class MaliciousAffliction extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MaliciousIntent.java b/Mage.Sets/src/mage/cards/m/MaliciousIntent.java
index f3ce97a07ef..ab9cfbc5fca 100644
--- a/Mage.Sets/src/mage/cards/m/MaliciousIntent.java
+++ b/Mage.Sets/src/mage/cards/m/MaliciousIntent.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author noxx
*/
-public class MaliciousIntent extends CardImpl {
+public final class MaliciousIntent extends CardImpl {
public MaliciousIntent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Malignus.java b/Mage.Sets/src/mage/cards/m/Malignus.java
index 06598dbba93..4a879da7c96 100644
--- a/Mage.Sets/src/mage/cards/m/Malignus.java
+++ b/Mage.Sets/src/mage/cards/m/Malignus.java
@@ -50,7 +50,7 @@ import mage.players.Player;
/**
* @author noxx
*/
-public class Malignus extends CardImpl {
+public final class Malignus extends CardImpl {
public Malignus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MammothHarness.java b/Mage.Sets/src/mage/cards/m/MammothHarness.java
index d17c63e4d9d..49b5c70485b 100644
--- a/Mage.Sets/src/mage/cards/m/MammothHarness.java
+++ b/Mage.Sets/src/mage/cards/m/MammothHarness.java
@@ -57,10 +57,10 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class MammothHarness extends CardImpl {
+public final class MammothHarness extends CardImpl {
public MammothHarness(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
this.subtype.add(SubType.AURA);
// Enchant creature
@@ -69,7 +69,7 @@ public class MammothHarness extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.LoseAbility));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
-
+
// Enchanted creature loses flying.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new LoseAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA)));
@@ -103,20 +103,18 @@ class MammothHarnessTriggeredAbility extends BlocksOrBecomesBlockedTriggeredAbil
Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(this.getSourceId());
if (sourcePermanent != null) {
Permanent attachedTo = game.getPermanentOrLKIBattlefield(sourcePermanent.getAttachedTo());
- if (sourcePermanent != null) {
- if (event.getSourceId().equals(attachedTo.getId())) {
- Permanent blocked = game.getPermanent(event.getTargetId());
- if (blocked != null && filter.match(blocked, game)) {
- this.getEffects().setTargetPointer(new FixedTarget(event.getTargetId()));
- return true;
- }
+ if (event.getSourceId().equals(attachedTo.getId())) {
+ Permanent blocked = game.getPermanent(event.getTargetId());
+ if (blocked != null && filter.match(blocked, game)) {
+ this.getEffects().setTargetPointer(new FixedTarget(event.getTargetId()));
+ return true;
}
- if (event.getTargetId().equals(attachedTo.getId())) {
- Permanent blocker = game.getPermanent(event.getSourceId());
- if (blocker != null) {
- this.getEffects().setTargetPointer(new FixedTarget(event.getSourceId()));
- return true;
- }
+ }
+ if (event.getTargetId().equals(attachedTo.getId())) {
+ Permanent blocker = game.getPermanent(event.getSourceId());
+ if (blocker != null) {
+ this.getEffects().setTargetPointer(new FixedTarget(event.getSourceId()));
+ return true;
}
}
}
diff --git a/Mage.Sets/src/mage/cards/m/MammothSpider.java b/Mage.Sets/src/mage/cards/m/MammothSpider.java
index 05d94921b29..27531ffe202 100644
--- a/Mage.Sets/src/mage/cards/m/MammothSpider.java
+++ b/Mage.Sets/src/mage/cards/m/MammothSpider.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class MammothSpider extends CardImpl {
+public final class MammothSpider extends CardImpl {
public MammothSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MammothUmbra.java b/Mage.Sets/src/mage/cards/m/MammothUmbra.java
index 922a9e704aa..09be148427d 100644
--- a/Mage.Sets/src/mage/cards/m/MammothUmbra.java
+++ b/Mage.Sets/src/mage/cards/m/MammothUmbra.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MammothUmbra extends CardImpl {
+public final class MammothUmbra extends CardImpl {
public MammothUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/ManOWar.java b/Mage.Sets/src/mage/cards/m/ManOWar.java
index 58fa9372d95..2e4c6014ff1 100644
--- a/Mage.Sets/src/mage/cards/m/ManOWar.java
+++ b/Mage.Sets/src/mage/cards/m/ManOWar.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ManOWar extends CardImpl {
+public final class ManOWar extends CardImpl {
public ManOWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaBloom.java b/Mage.Sets/src/mage/cards/m/ManaBloom.java
index 7494cc4a0c2..bce5d005852 100644
--- a/Mage.Sets/src/mage/cards/m/ManaBloom.java
+++ b/Mage.Sets/src/mage/cards/m/ManaBloom.java
@@ -50,7 +50,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class ManaBloom extends CardImpl {
+public final class ManaBloom extends CardImpl {
static final String rule = "with X charge counters on it";
diff --git a/Mage.Sets/src/mage/cards/m/ManaBreach.java b/Mage.Sets/src/mage/cards/m/ManaBreach.java
index e624fb7d6d9..383608e4534 100644
--- a/Mage.Sets/src/mage/cards/m/ManaBreach.java
+++ b/Mage.Sets/src/mage/cards/m/ManaBreach.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetLandPermanent;
* @author LoneFox
*/
-public class ManaBreach extends CardImpl {
+public final class ManaBreach extends CardImpl {
public ManaBreach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaCache.java b/Mage.Sets/src/mage/cards/m/ManaCache.java
index de03d528f3a..c66db0497e8 100644
--- a/Mage.Sets/src/mage/cards/m/ManaCache.java
+++ b/Mage.Sets/src/mage/cards/m/ManaCache.java
@@ -57,7 +57,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class ManaCache extends CardImpl {
+public final class ManaCache extends CardImpl {
public ManaCache(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
@@ -65,7 +65,7 @@ public class ManaCache extends CardImpl {
// At the beginning of each player's end step, put a charge counter on Mana Cache for each untapped land that player controls.
TriggeredAbility ability = new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of each player's end step", true, new ManaCacheEffect());
this.addAbility(ability);
-
+
// Remove a charge counter from Mana Cache: Add {C}. Any player may activate this ability but only during their turn before the end step.
this.addAbility(new ManaCacheManaAbility());
}
@@ -83,6 +83,7 @@ public class ManaCache extends CardImpl {
class ManaCacheEffect extends OneShotEffect {
private static final FilterPermanent filter = new FilterControlledLandPermanent();
+
static {
filter.add(Predicates.not(new TappedPredicate()));
}
@@ -114,7 +115,7 @@ class ManaCacheManaAbility extends ActivatedManaAbilityImpl {
public ManaCacheManaAbility() {
super(Zone.BATTLEFIELD, new BasicManaEffect(Mana.ColorlessMana(1)), new RemoveCountersSourceCost(CounterType.CHARGE.createInstance(1)));
- this.netMana.add(new Mana(0,0,0,0,0,0,0,1));
+ this.netMana.add(new Mana(0, 0, 0, 0, 0, 0, 0, 1));
}
public ManaCacheManaAbility(final ManaCacheManaAbility ability) {
@@ -122,18 +123,18 @@ class ManaCacheManaAbility extends ActivatedManaAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
if (!super.hasMoreActivationsThisTurn(game) || !(condition == null || condition.apply(game, this))) {
- return false;
+ return ActivationStatus.getFalse();
}
Player player = game.getPlayer(playerId);
if (player != null && playerId.equals(game.getActivePlayerId()) && game.getStep().getType().isBefore(PhaseStep.END_TURN)) {
if (costs.canPay(this, sourceId, playerId, game)) {
this.setControllerId(playerId);
- return true;
+ return ActivationStatus.getTrue();
}
}
- return false;
+ return ActivationStatus.getFalse();
}
@Override
diff --git a/Mage.Sets/src/mage/cards/m/ManaChains.java b/Mage.Sets/src/mage/cards/m/ManaChains.java
index 20472b3ca3b..b472a39175e 100644
--- a/Mage.Sets/src/mage/cards/m/ManaChains.java
+++ b/Mage.Sets/src/mage/cards/m/ManaChains.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ManaChains extends CardImpl {
+public final class ManaChains extends CardImpl {
public ManaChains(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaChargedDragon.java b/Mage.Sets/src/mage/cards/m/ManaChargedDragon.java
index 2b5f9c42019..403e893cd7e 100644
--- a/Mage.Sets/src/mage/cards/m/ManaChargedDragon.java
+++ b/Mage.Sets/src/mage/cards/m/ManaChargedDragon.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class ManaChargedDragon extends CardImpl {
+public final class ManaChargedDragon extends CardImpl {
public ManaChargedDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaClash.java b/Mage.Sets/src/mage/cards/m/ManaClash.java
index 26ffeed9022..a7262d1c78d 100644
--- a/Mage.Sets/src/mage/cards/m/ManaClash.java
+++ b/Mage.Sets/src/mage/cards/m/ManaClash.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class ManaClash extends CardImpl {
+public final class ManaClash extends CardImpl {
public ManaClash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaConfluence.java b/Mage.Sets/src/mage/cards/m/ManaConfluence.java
index 5f82d4b4592..9740fa1a207 100644
--- a/Mage.Sets/src/mage/cards/m/ManaConfluence.java
+++ b/Mage.Sets/src/mage/cards/m/ManaConfluence.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class ManaConfluence extends CardImpl {
+public final class ManaConfluence extends CardImpl {
public ManaConfluence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/ManaCrypt.java b/Mage.Sets/src/mage/cards/m/ManaCrypt.java
index cb45d46d1a5..587ecf1f4be 100644
--- a/Mage.Sets/src/mage/cards/m/ManaCrypt.java
+++ b/Mage.Sets/src/mage/cards/m/ManaCrypt.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ManaCrypt extends CardImpl {
+public final class ManaCrypt extends CardImpl {
public ManaCrypt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaCylix.java b/Mage.Sets/src/mage/cards/m/ManaCylix.java
index 2646219049b..0788990ca83 100644
--- a/Mage.Sets/src/mage/cards/m/ManaCylix.java
+++ b/Mage.Sets/src/mage/cards/m/ManaCylix.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author North, Loki
*/
-public class ManaCylix extends CardImpl {
+public final class ManaCylix extends CardImpl {
public ManaCylix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaDrain.java b/Mage.Sets/src/mage/cards/m/ManaDrain.java
index 69008e49cd3..1025c38a308 100644
--- a/Mage.Sets/src/mage/cards/m/ManaDrain.java
+++ b/Mage.Sets/src/mage/cards/m/ManaDrain.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ManaDrain extends CardImpl {
+public final class ManaDrain extends CardImpl {
public ManaDrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaEchoes.java b/Mage.Sets/src/mage/cards/m/ManaEchoes.java
index b40b9881051..96a3ca5a4cd 100644
--- a/Mage.Sets/src/mage/cards/m/ManaEchoes.java
+++ b/Mage.Sets/src/mage/cards/m/ManaEchoes.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ManaEchoes extends CardImpl {
+public final class ManaEchoes extends CardImpl {
public ManaEchoes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaFlare.java b/Mage.Sets/src/mage/cards/m/ManaFlare.java
index ecaa9aa01b7..643a387e8cd 100644
--- a/Mage.Sets/src/mage/cards/m/ManaFlare.java
+++ b/Mage.Sets/src/mage/cards/m/ManaFlare.java
@@ -40,12 +40,12 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class ManaFlare extends CardImpl {
+public final class ManaFlare extends CardImpl {
public ManaFlare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
- // Whenever a player taps a land for mana, that player adds one mana to their mana pool of any type that land produced.
+ // Whenever a player taps a land for mana, that player adds one mana of any type that land produced.
this.addAbility(new TapForManaAllTriggeredManaAbility(
new AddManaOfAnyTypeProducedEffect(),
new FilterLandPermanent("a player taps a land"),
diff --git a/Mage.Sets/src/mage/cards/m/ManaGeyser.java b/Mage.Sets/src/mage/cards/m/ManaGeyser.java
index 8ca66243bc5..e3ccb4042af 100644
--- a/Mage.Sets/src/mage/cards/m/ManaGeyser.java
+++ b/Mage.Sets/src/mage/cards/m/ManaGeyser.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author Plopman
*/
-public class ManaGeyser extends CardImpl {
+public final class ManaGeyser extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("tapped land your opponents control");
static {
diff --git a/Mage.Sets/src/mage/cards/m/ManaLeak.java b/Mage.Sets/src/mage/cards/m/ManaLeak.java
index bd8ed1b2bf7..1f8aa728bb4 100644
--- a/Mage.Sets/src/mage/cards/m/ManaLeak.java
+++ b/Mage.Sets/src/mage/cards/m/ManaLeak.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ManaLeak extends CardImpl {
+public final class ManaLeak extends CardImpl {
public ManaLeak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaLeech.java b/Mage.Sets/src/mage/cards/m/ManaLeech.java
index e8a855b9e17..5cd9ef706fa 100644
--- a/Mage.Sets/src/mage/cards/m/ManaLeech.java
+++ b/Mage.Sets/src/mage/cards/m/ManaLeech.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class ManaLeech extends CardImpl {
+public final class ManaLeech extends CardImpl {
public ManaLeech(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaMatrix.java b/Mage.Sets/src/mage/cards/m/ManaMatrix.java
index 1777b831fd3..daa0765d488 100644
--- a/Mage.Sets/src/mage/cards/m/ManaMatrix.java
+++ b/Mage.Sets/src/mage/cards/m/ManaMatrix.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class ManaMatrix extends CardImpl {
+public final class ManaMatrix extends CardImpl {
private static final FilterCard filter = new FilterCard("Instant and enchantment spells");
diff --git a/Mage.Sets/src/mage/cards/m/ManaMaze.java b/Mage.Sets/src/mage/cards/m/ManaMaze.java
index 02038f0e618..5dc2832dc73 100644
--- a/Mage.Sets/src/mage/cards/m/ManaMaze.java
+++ b/Mage.Sets/src/mage/cards/m/ManaMaze.java
@@ -50,7 +50,7 @@ import mage.watchers.Watcher;
*
* @author jeffwadsworth
*/
-public class ManaMaze extends CardImpl {
+public final class ManaMaze extends CardImpl {
public ManaMaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaPrism.java b/Mage.Sets/src/mage/cards/m/ManaPrism.java
index fbc1b01ea4c..fcb42ff4a97 100644
--- a/Mage.Sets/src/mage/cards/m/ManaPrism.java
+++ b/Mage.Sets/src/mage/cards/m/ManaPrism.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class ManaPrism extends CardImpl {
+public final class ManaPrism extends CardImpl {
public ManaPrism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaReflection.java b/Mage.Sets/src/mage/cards/m/ManaReflection.java
index 1e141def738..3faa5c01f14 100644
--- a/Mage.Sets/src/mage/cards/m/ManaReflection.java
+++ b/Mage.Sets/src/mage/cards/m/ManaReflection.java
@@ -47,7 +47,7 @@ import mage.game.events.ManaEvent;
*
* @author jeffwadsworth
*/
-public class ManaReflection extends CardImpl {
+public final class ManaReflection extends CardImpl {
public ManaReflection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaSeism.java b/Mage.Sets/src/mage/cards/m/ManaSeism.java
index e4ed8f879b9..315cf5dfb5b 100644
--- a/Mage.Sets/src/mage/cards/m/ManaSeism.java
+++ b/Mage.Sets/src/mage/cards/m/ManaSeism.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class ManaSeism extends CardImpl {
+public final class ManaSeism extends CardImpl {
public ManaSeism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaSeverance.java b/Mage.Sets/src/mage/cards/m/ManaSeverance.java
index a923481dff8..df991bad93b 100644
--- a/Mage.Sets/src/mage/cards/m/ManaSeverance.java
+++ b/Mage.Sets/src/mage/cards/m/ManaSeverance.java
@@ -23,7 +23,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author nick.myers
*/
-public class ManaSeverance extends CardImpl {
+public final class ManaSeverance extends CardImpl {
public ManaSeverance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaShort.java b/Mage.Sets/src/mage/cards/m/ManaShort.java
index 701ebe6c831..2051fe69171 100644
--- a/Mage.Sets/src/mage/cards/m/ManaShort.java
+++ b/Mage.Sets/src/mage/cards/m/ManaShort.java
@@ -42,10 +42,10 @@ import mage.target.TargetPlayer;
*
* @author Quercitron
*/
-public class ManaShort extends CardImpl {
+public final class ManaShort extends CardImpl {
public ManaShort(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
// Tap all lands target player controls and empty their mana pool.
this.getSpellAbility().addEffect(new ManaShortEffect());
@@ -66,7 +66,7 @@ class ManaShortEffect extends TapAllTargetPlayerControlsEffect {
public ManaShortEffect() {
super(new FilterLandPermanent());
- staticText = "Tap all lands target player controls and empty their mana pool";
+ staticText = "Tap all lands target player controls and that player loses all unspent mana";
}
public ManaShortEffect(final ManaShortEffect effect) {
@@ -81,7 +81,7 @@ class ManaShortEffect extends TapAllTargetPlayerControlsEffect {
@Override
public boolean apply(Game game, Ability source) {
Player targetPlayer = game.getPlayer(source.getFirstTarget());
- if(targetPlayer != null) {
+ if (targetPlayer != null) {
super.apply(game, source);
targetPlayer.getManaPool().emptyPool(game);
return true;
diff --git a/Mage.Sets/src/mage/cards/m/ManaSkimmer.java b/Mage.Sets/src/mage/cards/m/ManaSkimmer.java
index 03da8f58961..18c6507c414 100644
--- a/Mage.Sets/src/mage/cards/m/ManaSkimmer.java
+++ b/Mage.Sets/src/mage/cards/m/ManaSkimmer.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author nigelzor
*/
-public class ManaSkimmer extends CardImpl {
+public final class ManaSkimmer extends CardImpl {
public ManaSkimmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaTithe.java b/Mage.Sets/src/mage/cards/m/ManaTithe.java
index 2ca1974360a..9e601b4e40f 100644
--- a/Mage.Sets/src/mage/cards/m/ManaTithe.java
+++ b/Mage.Sets/src/mage/cards/m/ManaTithe.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class ManaTithe extends CardImpl {
+public final class ManaTithe extends CardImpl {
public ManaTithe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaVapors.java b/Mage.Sets/src/mage/cards/m/ManaVapors.java
index 58d04a2dd5f..9a7be7fda40 100644
--- a/Mage.Sets/src/mage/cards/m/ManaVapors.java
+++ b/Mage.Sets/src/mage/cards/m/ManaVapors.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author ciaccona007
*/
-public class ManaVapors extends CardImpl {
+public final class ManaVapors extends CardImpl {
public ManaVapors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaVault.java b/Mage.Sets/src/mage/cards/m/ManaVault.java
index c3350a89d5b..b7d6293a316 100644
--- a/Mage.Sets/src/mage/cards/m/ManaVault.java
+++ b/Mage.Sets/src/mage/cards/m/ManaVault.java
@@ -51,7 +51,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ManaVault extends CardImpl {
+public final class ManaVault extends CardImpl {
public ManaVault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaVortex.java b/Mage.Sets/src/mage/cards/m/ManaVortex.java
index b303accea75..3a9a2168cb9 100644
--- a/Mage.Sets/src/mage/cards/m/ManaVortex.java
+++ b/Mage.Sets/src/mage/cards/m/ManaVortex.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class ManaVortex extends CardImpl {
+public final class ManaVortex extends CardImpl {
public ManaVortex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaWeb.java b/Mage.Sets/src/mage/cards/m/ManaWeb.java
index 094c86bbbad..c6676a30d29 100644
--- a/Mage.Sets/src/mage/cards/m/ManaWeb.java
+++ b/Mage.Sets/src/mage/cards/m/ManaWeb.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author spjspj
*/
-public class ManaWeb extends CardImpl {
+public final class ManaWeb extends CardImpl {
public ManaWeb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/m/Manabarbs.java b/Mage.Sets/src/mage/cards/m/Manabarbs.java
index 809ac3b0194..fbcd4fce76b 100644
--- a/Mage.Sets/src/mage/cards/m/Manabarbs.java
+++ b/Mage.Sets/src/mage/cards/m/Manabarbs.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author nantuko
*/
-public class Manabarbs extends CardImpl {
+public final class Manabarbs extends CardImpl {
public Manabarbs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Manabond.java b/Mage.Sets/src/mage/cards/m/Manabond.java
index de9097f4f7e..56fba7e64dc 100644
--- a/Mage.Sets/src/mage/cards/m/Manabond.java
+++ b/Mage.Sets/src/mage/cards/m/Manabond.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class Manabond extends CardImpl {
+public final class Manabond extends CardImpl {
public Manabond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaclesOfDecay.java b/Mage.Sets/src/mage/cards/m/ManaclesOfDecay.java
index ea85d17521d..224a25f038f 100644
--- a/Mage.Sets/src/mage/cards/m/ManaclesOfDecay.java
+++ b/Mage.Sets/src/mage/cards/m/ManaclesOfDecay.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class ManaclesOfDecay extends CardImpl {
+public final class ManaclesOfDecay extends CardImpl {
public ManaclesOfDecay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaforceMace.java b/Mage.Sets/src/mage/cards/m/ManaforceMace.java
index 8892ae127f3..c692be92926 100644
--- a/Mage.Sets/src/mage/cards/m/ManaforceMace.java
+++ b/Mage.Sets/src/mage/cards/m/ManaforceMace.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class ManaforceMace extends CardImpl {
+public final class ManaforceMace extends CardImpl {
public ManaforceMace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaforgeCinder.java b/Mage.Sets/src/mage/cards/m/ManaforgeCinder.java
index 5a76b3d44d8..1af50cba225 100644
--- a/Mage.Sets/src/mage/cards/m/ManaforgeCinder.java
+++ b/Mage.Sets/src/mage/cards/m/ManaforgeCinder.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class ManaforgeCinder extends CardImpl {
+public final class ManaforgeCinder extends CardImpl {
public ManaforgeCinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B/R}");
diff --git a/Mage.Sets/src/mage/cards/m/ManagorgerHydra.java b/Mage.Sets/src/mage/cards/m/ManagorgerHydra.java
index 09ebc8307a4..caa49a817cb 100644
--- a/Mage.Sets/src/mage/cards/m/ManagorgerHydra.java
+++ b/Mage.Sets/src/mage/cards/m/ManagorgerHydra.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class ManagorgerHydra extends CardImpl {
+public final class ManagorgerHydra extends CardImpl {
public ManagorgerHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/Manakin.java b/Mage.Sets/src/mage/cards/m/Manakin.java
index 2f33000a144..344dee3e250 100644
--- a/Mage.Sets/src/mage/cards/m/Manakin.java
+++ b/Mage.Sets/src/mage/cards/m/Manakin.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author loki
*/
-public class Manakin extends CardImpl {
+public final class Manakin extends CardImpl {
public Manakin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/Manalith.java b/Mage.Sets/src/mage/cards/m/Manalith.java
index 7ab8a8ba88d..466d16b9492 100644
--- a/Mage.Sets/src/mage/cards/m/Manalith.java
+++ b/Mage.Sets/src/mage/cards/m/Manalith.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class Manalith extends CardImpl {
+public final class Manalith extends CardImpl {
public Manalith (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/Manamorphose.java b/Mage.Sets/src/mage/cards/m/Manamorphose.java
index 3b85630a60b..ad6b69101fb 100644
--- a/Mage.Sets/src/mage/cards/m/Manamorphose.java
+++ b/Mage.Sets/src/mage/cards/m/Manamorphose.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class Manamorphose extends CardImpl {
+public final class Manamorphose extends CardImpl {
public Manamorphose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/m/Manaplasm.java b/Mage.Sets/src/mage/cards/m/Manaplasm.java
index 09417365762..eaa3aa13b92 100644
--- a/Mage.Sets/src/mage/cards/m/Manaplasm.java
+++ b/Mage.Sets/src/mage/cards/m/Manaplasm.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class Manaplasm extends CardImpl {
+public final class Manaplasm extends CardImpl {
public Manaplasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/ManaweftSliver.java b/Mage.Sets/src/mage/cards/m/ManaweftSliver.java
index 6214d6e5a82..ff09a011238 100644
--- a/Mage.Sets/src/mage/cards/m/ManaweftSliver.java
+++ b/Mage.Sets/src/mage/cards/m/ManaweftSliver.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class ManaweftSliver extends CardImpl {
+public final class ManaweftSliver extends CardImpl {
public static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MangaraOfCorondor.java b/Mage.Sets/src/mage/cards/m/MangaraOfCorondor.java
index 3decdc220e5..24e00ff6329 100644
--- a/Mage.Sets/src/mage/cards/m/MangaraOfCorondor.java
+++ b/Mage.Sets/src/mage/cards/m/MangaraOfCorondor.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class MangaraOfCorondor extends CardImpl {
+public final class MangaraOfCorondor extends CardImpl {
public MangaraOfCorondor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MangarasTome.java b/Mage.Sets/src/mage/cards/m/MangarasTome.java
index 3629adb933d..8976cb640aa 100644
--- a/Mage.Sets/src/mage/cards/m/MangarasTome.java
+++ b/Mage.Sets/src/mage/cards/m/MangarasTome.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class MangarasTome extends CardImpl {
+public final class MangarasTome extends CardImpl {
public MangarasTome(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/m/Manglehorn.java b/Mage.Sets/src/mage/cards/m/Manglehorn.java
index 3f35fc0f36c..a099bd75eb9 100644
--- a/Mage.Sets/src/mage/cards/m/Manglehorn.java
+++ b/Mage.Sets/src/mage/cards/m/Manglehorn.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author fireshoes
*/
-public class Manglehorn extends CardImpl {
+public final class Manglehorn extends CardImpl {
public Manglehorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/ManiacalRage.java b/Mage.Sets/src/mage/cards/m/ManiacalRage.java
index 8f1eae9024c..2a50c8a548f 100644
--- a/Mage.Sets/src/mage/cards/m/ManiacalRage.java
+++ b/Mage.Sets/src/mage/cards/m/ManiacalRage.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ManiacalRage extends CardImpl {
+public final class ManiacalRage extends CardImpl {
public ManiacalRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/ManicScribe.java b/Mage.Sets/src/mage/cards/m/ManicScribe.java
index 621a1976c27..8d860be5ac3 100644
--- a/Mage.Sets/src/mage/cards/m/ManicScribe.java
+++ b/Mage.Sets/src/mage/cards/m/ManicScribe.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ManicScribe extends CardImpl {
+public final class ManicScribe extends CardImpl {
public ManicScribe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/ManicVandal.java b/Mage.Sets/src/mage/cards/m/ManicVandal.java
index f5b374a3050..d14e3562178 100644
--- a/Mage.Sets/src/mage/cards/m/ManicVandal.java
+++ b/Mage.Sets/src/mage/cards/m/ManicVandal.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ManicVandal extends CardImpl {
+public final class ManicVandal extends CardImpl {
public ManicVandal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/ManifoldInsights.java b/Mage.Sets/src/mage/cards/m/ManifoldInsights.java
index 0e1ac70ef06..51af225b748 100644
--- a/Mage.Sets/src/mage/cards/m/ManifoldInsights.java
+++ b/Mage.Sets/src/mage/cards/m/ManifoldInsights.java
@@ -48,7 +48,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class ManifoldInsights extends CardImpl {
+public final class ManifoldInsights extends CardImpl {
public ManifoldInsights(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/ManipulateFate.java b/Mage.Sets/src/mage/cards/m/ManipulateFate.java
index fa5187dc472..b44c3b4d540 100644
--- a/Mage.Sets/src/mage/cards/m/ManipulateFate.java
+++ b/Mage.Sets/src/mage/cards/m/ManipulateFate.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class ManipulateFate extends CardImpl {
+public final class ManipulateFate extends CardImpl {
public ManipulateFate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MannichiTheFeveredDream.java b/Mage.Sets/src/mage/cards/m/MannichiTheFeveredDream.java
index 67cd74e9bdf..b39329239b4 100644
--- a/Mage.Sets/src/mage/cards/m/MannichiTheFeveredDream.java
+++ b/Mage.Sets/src/mage/cards/m/MannichiTheFeveredDream.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class MannichiTheFeveredDream extends CardImpl {
+public final class MannichiTheFeveredDream extends CardImpl {
public MannichiTheFeveredDream(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/ManorGargoyle.java b/Mage.Sets/src/mage/cards/m/ManorGargoyle.java
index b65fa090746..cb6295cab5c 100644
--- a/Mage.Sets/src/mage/cards/m/ManorGargoyle.java
+++ b/Mage.Sets/src/mage/cards/m/ManorGargoyle.java
@@ -56,7 +56,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class ManorGargoyle extends CardImpl {
+public final class ManorGargoyle extends CardImpl {
private static final String rule = "{this} is indestructible as long as it has defender.";
diff --git a/Mage.Sets/src/mage/cards/m/ManorSkeleton.java b/Mage.Sets/src/mage/cards/m/ManorSkeleton.java
index 454d3670c75..d21ef7c5fed 100644
--- a/Mage.Sets/src/mage/cards/m/ManorSkeleton.java
+++ b/Mage.Sets/src/mage/cards/m/ManorSkeleton.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class ManorSkeleton extends CardImpl {
+public final class ManorSkeleton extends CardImpl {
public ManorSkeleton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/ManrikiGusari.java b/Mage.Sets/src/mage/cards/m/ManrikiGusari.java
index 5f8311298cf..0b33111ad60 100644
--- a/Mage.Sets/src/mage/cards/m/ManrikiGusari.java
+++ b/Mage.Sets/src/mage/cards/m/ManrikiGusari.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class ManrikiGusari extends CardImpl {
+public final class ManrikiGusari extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Equipment");
diff --git a/Mage.Sets/src/mage/cards/m/MantaRay.java b/Mage.Sets/src/mage/cards/m/MantaRay.java
index f2707d1fda7..515a82247b3 100644
--- a/Mage.Sets/src/mage/cards/m/MantaRay.java
+++ b/Mage.Sets/src/mage/cards/m/MantaRay.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class MantaRay extends CardImpl {
+public final class MantaRay extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by blue creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MantaRiders.java b/Mage.Sets/src/mage/cards/m/MantaRiders.java
index 37468f51d80..98daf53edfe 100644
--- a/Mage.Sets/src/mage/cards/m/MantaRiders.java
+++ b/Mage.Sets/src/mage/cards/m/MantaRiders.java
@@ -41,7 +41,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class MantaRiders extends CardImpl {
+public final class MantaRiders extends CardImpl {
public MantaRiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MantellianSavrip.java b/Mage.Sets/src/mage/cards/m/MantellianSavrip.java
index 5f472fc18ae..daa9fb37b61 100644
--- a/Mage.Sets/src/mage/cards/m/MantellianSavrip.java
+++ b/Mage.Sets/src/mage/cards/m/MantellianSavrip.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author Styxo
*/
-public class MantellianSavrip extends CardImpl {
+public final class MantellianSavrip extends CardImpl {
public MantellianSavrip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/ManticoreEternal.java b/Mage.Sets/src/mage/cards/m/ManticoreEternal.java
index a90daf0fa38..a574ef056df 100644
--- a/Mage.Sets/src/mage/cards/m/ManticoreEternal.java
+++ b/Mage.Sets/src/mage/cards/m/ManticoreEternal.java
@@ -9,7 +9,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-public class ManticoreEternal extends CardImpl {
+public final class ManticoreEternal extends CardImpl {
public ManticoreEternal(UUID ownerId, CardSetInfo cardSetInfo) {
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/ManticoreOfTheGauntlet.java b/Mage.Sets/src/mage/cards/m/ManticoreOfTheGauntlet.java
index 9afcd0584d5..d672fad3884 100644
--- a/Mage.Sets/src/mage/cards/m/ManticoreOfTheGauntlet.java
+++ b/Mage.Sets/src/mage/cards/m/ManticoreOfTheGauntlet.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author stravant
*/
-public class ManticoreOfTheGauntlet extends CardImpl {
+public final class ManticoreOfTheGauntlet extends CardImpl {
public ManticoreOfTheGauntlet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MantisEngine.java b/Mage.Sets/src/mage/cards/m/MantisEngine.java
index d5a2739917d..76f8953d064 100644
--- a/Mage.Sets/src/mage/cards/m/MantisEngine.java
+++ b/Mage.Sets/src/mage/cards/m/MantisEngine.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class MantisEngine extends CardImpl {
+public final class MantisEngine extends CardImpl {
public MantisEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/m/MantisRider.java b/Mage.Sets/src/mage/cards/m/MantisRider.java
index 994216da121..0ea34162b94 100644
--- a/Mage.Sets/src/mage/cards/m/MantisRider.java
+++ b/Mage.Sets/src/mage/cards/m/MantisRider.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MantisRider extends CardImpl {
+public final class MantisRider extends CardImpl {
public MantisRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MantleOfLeadership.java b/Mage.Sets/src/mage/cards/m/MantleOfLeadership.java
index 32846764b8d..da4f745fde0 100644
--- a/Mage.Sets/src/mage/cards/m/MantleOfLeadership.java
+++ b/Mage.Sets/src/mage/cards/m/MantleOfLeadership.java
@@ -48,7 +48,7 @@ import mage.filter.StaticFilters;
*
* @author TheElk801
*/
-public class MantleOfLeadership extends CardImpl {
+public final class MantleOfLeadership extends CardImpl {
public MantleOfLeadership(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MantleOfWebs.java b/Mage.Sets/src/mage/cards/m/MantleOfWebs.java
index 1a1163d22cc..f28a998c1e0 100644
--- a/Mage.Sets/src/mage/cards/m/MantleOfWebs.java
+++ b/Mage.Sets/src/mage/cards/m/MantleOfWebs.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class MantleOfWebs extends CardImpl {
+public final class MantleOfWebs extends CardImpl {
public MantleOfWebs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MapTheWastes.java b/Mage.Sets/src/mage/cards/m/MapTheWastes.java
index 463fdb0b46e..f416c5f1dc3 100644
--- a/Mage.Sets/src/mage/cards/m/MapTheWastes.java
+++ b/Mage.Sets/src/mage/cards/m/MapTheWastes.java
@@ -41,13 +41,13 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class MapTheWastes extends CardImpl {
+public final class MapTheWastes extends CardImpl {
public MapTheWastes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(target, true));
// Bolster 1.
diff --git a/Mage.Sets/src/mage/cards/m/MaralenOfTheMornsong.java b/Mage.Sets/src/mage/cards/m/MaralenOfTheMornsong.java
index 79ecad79ce4..04a7c3d641b 100644
--- a/Mage.Sets/src/mage/cards/m/MaralenOfTheMornsong.java
+++ b/Mage.Sets/src/mage/cards/m/MaralenOfTheMornsong.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author andyfries
*/
-public class MaralenOfTheMornsong extends CardImpl {
+public final class MaralenOfTheMornsong extends CardImpl {
public MaralenOfTheMornsong(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
@@ -125,14 +125,12 @@ class MaralenOfTheMornsongEffect2 extends OneShotEffect {
Player player = game.getPlayer(activePlayerId);
if (player != null) {
player.loseLife(3, game, false);
- if (player != null) {
- TargetCardInLibrary target = new TargetCardInLibrary();
- if (player.searchLibrary(target, game)) {
- player.moveCards(new CardsImpl(target.getTargets()), Zone.HAND, source, game);
- }
- player.shuffleLibrary(source, game);
- return true;
+ TargetCardInLibrary target = new TargetCardInLibrary();
+ if (player.searchLibrary(target, game)) {
+ player.moveCards(new CardsImpl(target.getTargets()), Zone.HAND, source, game);
}
+ player.shuffleLibrary(source, game);
+ return true;
}
return false;
}
diff --git a/Mage.Sets/src/mage/cards/m/MarangRiverProwler.java b/Mage.Sets/src/mage/cards/m/MarangRiverProwler.java
index 016ffa97651..a647546aea8 100644
--- a/Mage.Sets/src/mage/cards/m/MarangRiverProwler.java
+++ b/Mage.Sets/src/mage/cards/m/MarangRiverProwler.java
@@ -54,7 +54,7 @@ import mage.game.Game;
*
* @author emerald000
*/
-public class MarangRiverProwler extends CardImpl {
+public final class MarangRiverProwler extends CardImpl {
public MarangRiverProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MarangRiverSkeleton.java b/Mage.Sets/src/mage/cards/m/MarangRiverSkeleton.java
index 3a1f983371d..758a3b38e32 100644
--- a/Mage.Sets/src/mage/cards/m/MarangRiverSkeleton.java
+++ b/Mage.Sets/src/mage/cards/m/MarangRiverSkeleton.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MarangRiverSkeleton extends CardImpl {
+public final class MarangRiverSkeleton extends CardImpl {
public MarangRiverSkeleton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarathWillOfTheWild.java b/Mage.Sets/src/mage/cards/m/MarathWillOfTheWild.java
index 83919abce59..481dd37b83a 100644
--- a/Mage.Sets/src/mage/cards/m/MarathWillOfTheWild.java
+++ b/Mage.Sets/src/mage/cards/m/MarathWillOfTheWild.java
@@ -66,7 +66,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MarathWillOfTheWild extends CardImpl {
+public final class MarathWillOfTheWild extends CardImpl {
public MarathWillOfTheWild(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MaraudingBoneslasher.java b/Mage.Sets/src/mage/cards/m/MaraudingBoneslasher.java
index 4b885df2907..0eae4b1b0de 100644
--- a/Mage.Sets/src/mage/cards/m/MaraudingBoneslasher.java
+++ b/Mage.Sets/src/mage/cards/m/MaraudingBoneslasher.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class MaraudingBoneslasher extends CardImpl {
+public final class MaraudingBoneslasher extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Zombie");
diff --git a/Mage.Sets/src/mage/cards/m/MaraudingKnight.java b/Mage.Sets/src/mage/cards/m/MaraudingKnight.java
index 1206ab6369d..e5947611e77 100644
--- a/Mage.Sets/src/mage/cards/m/MaraudingKnight.java
+++ b/Mage.Sets/src/mage/cards/m/MaraudingKnight.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author michael.napoleon@gmail.com
*/
-public class MaraudingKnight extends CardImpl {
+public final class MaraudingKnight extends CardImpl {
private static final FilterLandPermanent plainsFilter = new FilterLandPermanent("Plains your opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MaraudingLooter.java b/Mage.Sets/src/mage/cards/m/MaraudingLooter.java
index 609f05cdab5..87926204514 100644
--- a/Mage.Sets/src/mage/cards/m/MaraudingLooter.java
+++ b/Mage.Sets/src/mage/cards/m/MaraudingLooter.java
@@ -45,7 +45,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author TheElk801
*/
-public class MaraudingLooter extends CardImpl {
+public final class MaraudingLooter extends CardImpl {
public MaraudingLooter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MaraudingMaulhorn.java b/Mage.Sets/src/mage/cards/m/MaraudingMaulhorn.java
index ed9afee0d0a..52dbf2ab306 100644
--- a/Mage.Sets/src/mage/cards/m/MaraudingMaulhorn.java
+++ b/Mage.Sets/src/mage/cards/m/MaraudingMaulhorn.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author jeffwadsworth
*/
-public class MaraudingMaulhorn extends CardImpl {
+public final class MaraudingMaulhorn extends CardImpl {
private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature named Advocate of the Beast");
diff --git a/Mage.Sets/src/mage/cards/m/MaraxusOfKeld.java b/Mage.Sets/src/mage/cards/m/MaraxusOfKeld.java
index 90b5e462b44..fb7538c7596 100644
--- a/Mage.Sets/src/mage/cards/m/MaraxusOfKeld.java
+++ b/Mage.Sets/src/mage/cards/m/MaraxusOfKeld.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author noxx
*/
-public class MaraxusOfKeld extends CardImpl {
+public final class MaraxusOfKeld extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped artifacts, creatures, and lands you control");
diff --git a/Mage.Sets/src/mage/cards/m/MarbleChalice.java b/Mage.Sets/src/mage/cards/m/MarbleChalice.java
index 8715f3dba9d..a12fdf50617 100644
--- a/Mage.Sets/src/mage/cards/m/MarbleChalice.java
+++ b/Mage.Sets/src/mage/cards/m/MarbleChalice.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class MarbleChalice extends CardImpl {
+public final class MarbleChalice extends CardImpl {
public MarbleChalice (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MarbleDiamond.java b/Mage.Sets/src/mage/cards/m/MarbleDiamond.java
index 210dd814899..9ffb3f41710 100644
--- a/Mage.Sets/src/mage/cards/m/MarbleDiamond.java
+++ b/Mage.Sets/src/mage/cards/m/MarbleDiamond.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Quercitron
*/
-public class MarbleDiamond extends CardImpl {
+public final class MarbleDiamond extends CardImpl {
public MarbleDiamond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MarbleTitan.java b/Mage.Sets/src/mage/cards/m/MarbleTitan.java
index ce78a645de9..93229ee831e 100644
--- a/Mage.Sets/src/mage/cards/m/MarbleTitan.java
+++ b/Mage.Sets/src/mage/cards/m/MarbleTitan.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author LoneFox
*/
-public class MarbleTitan extends CardImpl {
+public final class MarbleTitan extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures with power 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/m/MarchFromTheTomb.java b/Mage.Sets/src/mage/cards/m/MarchFromTheTomb.java
index 91c42ab0bc6..bc07e4d8f58 100644
--- a/Mage.Sets/src/mage/cards/m/MarchFromTheTomb.java
+++ b/Mage.Sets/src/mage/cards/m/MarchFromTheTomb.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class MarchFromTheTomb extends CardImpl {
+public final class MarchFromTheTomb extends CardImpl {
public MarchFromTheTomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarchOfSouls.java b/Mage.Sets/src/mage/cards/m/MarchOfSouls.java
index 85c5f0b9224..2ddebe3d5d8 100644
--- a/Mage.Sets/src/mage/cards/m/MarchOfSouls.java
+++ b/Mage.Sets/src/mage/cards/m/MarchOfSouls.java
@@ -48,7 +48,7 @@ import java.util.UUID;
* @author LoneFox
*/
-public class MarchOfSouls extends CardImpl {
+public final class MarchOfSouls extends CardImpl {
public MarchOfSouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MarchOfTheDroids.java b/Mage.Sets/src/mage/cards/m/MarchOfTheDroids.java
index 60b1d2dfd54..9d0874e6c42 100644
--- a/Mage.Sets/src/mage/cards/m/MarchOfTheDroids.java
+++ b/Mage.Sets/src/mage/cards/m/MarchOfTheDroids.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class MarchOfTheDroids extends CardImpl {
+public final class MarchOfTheDroids extends CardImpl {
public MarchOfTheDroids(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarchOfTheDrowned.java b/Mage.Sets/src/mage/cards/m/MarchOfTheDrowned.java
index 7074ea10795..e5c9c1240b6 100644
--- a/Mage.Sets/src/mage/cards/m/MarchOfTheDrowned.java
+++ b/Mage.Sets/src/mage/cards/m/MarchOfTheDrowned.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class MarchOfTheDrowned extends CardImpl {
+public final class MarchOfTheDrowned extends CardImpl {
private static final FilterCard filter = new FilterCard("Pirate cards from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MarchOfTheMachines.java b/Mage.Sets/src/mage/cards/m/MarchOfTheMachines.java
index 56ef8afecfb..087c34bbe73 100644
--- a/Mage.Sets/src/mage/cards/m/MarchOfTheMachines.java
+++ b/Mage.Sets/src/mage/cards/m/MarchOfTheMachines.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class MarchOfTheMachines extends CardImpl {
+public final class MarchOfTheMachines extends CardImpl {
public MarchOfTheMachines(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MarchOfTheReturned.java b/Mage.Sets/src/mage/cards/m/MarchOfTheReturned.java
index 403dde25d73..95b64aabf31 100644
--- a/Mage.Sets/src/mage/cards/m/MarchOfTheReturned.java
+++ b/Mage.Sets/src/mage/cards/m/MarchOfTheReturned.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class MarchOfTheReturned extends CardImpl {
+public final class MarchOfTheReturned extends CardImpl {
public MarchOfTheReturned(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarchesaTheBlackRose.java b/Mage.Sets/src/mage/cards/m/MarchesaTheBlackRose.java
index 15f0cdff9b3..ed05d4bf692 100644
--- a/Mage.Sets/src/mage/cards/m/MarchesaTheBlackRose.java
+++ b/Mage.Sets/src/mage/cards/m/MarchesaTheBlackRose.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class MarchesaTheBlackRose extends CardImpl {
+public final class MarchesaTheBlackRose extends CardImpl {
public MarchesaTheBlackRose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MarchesasDecree.java b/Mage.Sets/src/mage/cards/m/MarchesasDecree.java
index 83e5cef320e..e232799ec47 100644
--- a/Mage.Sets/src/mage/cards/m/MarchesasDecree.java
+++ b/Mage.Sets/src/mage/cards/m/MarchesasDecree.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class MarchesasDecree extends CardImpl {
+public final class MarchesasDecree extends CardImpl {
public MarchesasDecree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarchesasEmissary.java b/Mage.Sets/src/mage/cards/m/MarchesasEmissary.java
index d6242a1194a..4442edf1521 100644
--- a/Mage.Sets/src/mage/cards/m/MarchesasEmissary.java
+++ b/Mage.Sets/src/mage/cards/m/MarchesasEmissary.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MarchesasEmissary extends CardImpl {
+public final class MarchesasEmissary extends CardImpl {
public MarchesasEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MarchesasInfiltrator.java b/Mage.Sets/src/mage/cards/m/MarchesasInfiltrator.java
index d520c8a7a9d..b5d03ca0c3b 100644
--- a/Mage.Sets/src/mage/cards/m/MarchesasInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/m/MarchesasInfiltrator.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MarchesasInfiltrator extends CardImpl {
+public final class MarchesasInfiltrator extends CardImpl {
public MarchesasInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MarchesasSmuggler.java b/Mage.Sets/src/mage/cards/m/MarchesasSmuggler.java
index c719c7480f6..8f4b7e3a6f7 100644
--- a/Mage.Sets/src/mage/cards/m/MarchesasSmuggler.java
+++ b/Mage.Sets/src/mage/cards/m/MarchesasSmuggler.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class MarchesasSmuggler extends CardImpl {
+public final class MarchesasSmuggler extends CardImpl {
public MarchesasSmuggler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduAscendancy.java b/Mage.Sets/src/mage/cards/m/MarduAscendancy.java
index 02c7a61c85b..37d1a9a3de1 100644
--- a/Mage.Sets/src/mage/cards/m/MarduAscendancy.java
+++ b/Mage.Sets/src/mage/cards/m/MarduAscendancy.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author LevelX2
*/
-public class MarduAscendancy extends CardImpl {
+public final class MarduAscendancy extends CardImpl {
private static final FilterControlledCreaturePermanent attackFilter = new FilterControlledCreaturePermanent("nontoken creature you control");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
diff --git a/Mage.Sets/src/mage/cards/m/MarduBanner.java b/Mage.Sets/src/mage/cards/m/MarduBanner.java
index 95b5576f029..7f3785f06b6 100644
--- a/Mage.Sets/src/mage/cards/m/MarduBanner.java
+++ b/Mage.Sets/src/mage/cards/m/MarduBanner.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class MarduBanner extends CardImpl {
+public final class MarduBanner extends CardImpl {
public MarduBanner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduBlazebringer.java b/Mage.Sets/src/mage/cards/m/MarduBlazebringer.java
index 03d61427ddc..15d41d29ea1 100644
--- a/Mage.Sets/src/mage/cards/m/MarduBlazebringer.java
+++ b/Mage.Sets/src/mage/cards/m/MarduBlazebringer.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MarduBlazebringer extends CardImpl {
+public final class MarduBlazebringer extends CardImpl {
public MarduBlazebringer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduCharm.java b/Mage.Sets/src/mage/cards/m/MarduCharm.java
index 748f2d3676b..bef127376e7 100644
--- a/Mage.Sets/src/mage/cards/m/MarduCharm.java
+++ b/Mage.Sets/src/mage/cards/m/MarduCharm.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class MarduCharm extends CardImpl {
+public final class MarduCharm extends CardImpl {
private static final FilterCard filter = new FilterCard("a noncreature, nonland card");
diff --git a/Mage.Sets/src/mage/cards/m/MarduHateblade.java b/Mage.Sets/src/mage/cards/m/MarduHateblade.java
index 00c35691003..31300ac2bb2 100644
--- a/Mage.Sets/src/mage/cards/m/MarduHateblade.java
+++ b/Mage.Sets/src/mage/cards/m/MarduHateblade.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class MarduHateblade extends CardImpl {
+public final class MarduHateblade extends CardImpl {
public MarduHateblade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduHeartPiercer.java b/Mage.Sets/src/mage/cards/m/MarduHeartPiercer.java
index 57ec3fab09d..0de299e3e5d 100644
--- a/Mage.Sets/src/mage/cards/m/MarduHeartPiercer.java
+++ b/Mage.Sets/src/mage/cards/m/MarduHeartPiercer.java
@@ -45,7 +45,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class MarduHeartPiercer extends CardImpl {
+public final class MarduHeartPiercer extends CardImpl {
public MarduHeartPiercer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduHordechief.java b/Mage.Sets/src/mage/cards/m/MarduHordechief.java
index b36e97d1ee2..b4f23b0545a 100644
--- a/Mage.Sets/src/mage/cards/m/MarduHordechief.java
+++ b/Mage.Sets/src/mage/cards/m/MarduHordechief.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author emerald000
*/
-public class MarduHordechief extends CardImpl {
+public final class MarduHordechief extends CardImpl {
public MarduHordechief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduRoughrider.java b/Mage.Sets/src/mage/cards/m/MarduRoughrider.java
index f674be5b397..8323c6cde50 100644
--- a/Mage.Sets/src/mage/cards/m/MarduRoughrider.java
+++ b/Mage.Sets/src/mage/cards/m/MarduRoughrider.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MarduRoughrider extends CardImpl {
+public final class MarduRoughrider extends CardImpl {
public MarduRoughrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduRunemark.java b/Mage.Sets/src/mage/cards/m/MarduRunemark.java
index 3e44bdaadd4..93422badc5f 100644
--- a/Mage.Sets/src/mage/cards/m/MarduRunemark.java
+++ b/Mage.Sets/src/mage/cards/m/MarduRunemark.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class MarduRunemark extends CardImpl {
+public final class MarduRunemark extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("as long as you control a white or black permanent");
diff --git a/Mage.Sets/src/mage/cards/m/MarduScout.java b/Mage.Sets/src/mage/cards/m/MarduScout.java
index 814f2c2af2b..a195a26eb17 100644
--- a/Mage.Sets/src/mage/cards/m/MarduScout.java
+++ b/Mage.Sets/src/mage/cards/m/MarduScout.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class MarduScout extends CardImpl {
+public final class MarduScout extends CardImpl {
public MarduScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduShadowspear.java b/Mage.Sets/src/mage/cards/m/MarduShadowspear.java
index 3e66278bfbc..4c80f118991 100644
--- a/Mage.Sets/src/mage/cards/m/MarduShadowspear.java
+++ b/Mage.Sets/src/mage/cards/m/MarduShadowspear.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class MarduShadowspear extends CardImpl {
+public final class MarduShadowspear extends CardImpl {
public MarduShadowspear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduSkullhunter.java b/Mage.Sets/src/mage/cards/m/MarduSkullhunter.java
index 16e2b5a3711..8df861dee9b 100644
--- a/Mage.Sets/src/mage/cards/m/MarduSkullhunter.java
+++ b/Mage.Sets/src/mage/cards/m/MarduSkullhunter.java
@@ -46,7 +46,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class MarduSkullhunter extends CardImpl {
+public final class MarduSkullhunter extends CardImpl {
public MarduSkullhunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduStrikeLeader.java b/Mage.Sets/src/mage/cards/m/MarduStrikeLeader.java
index 95f0888c582..4790786d325 100644
--- a/Mage.Sets/src/mage/cards/m/MarduStrikeLeader.java
+++ b/Mage.Sets/src/mage/cards/m/MarduStrikeLeader.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.MarduStrikeLeaderWarriorToken;
*
* @author LevelX2
*/
-public class MarduStrikeLeader extends CardImpl {
+public final class MarduStrikeLeader extends CardImpl {
public MarduStrikeLeader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduWarshrieker.java b/Mage.Sets/src/mage/cards/m/MarduWarshrieker.java
index c36018fa529..f0500b5d13b 100644
--- a/Mage.Sets/src/mage/cards/m/MarduWarshrieker.java
+++ b/Mage.Sets/src/mage/cards/m/MarduWarshrieker.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class MarduWarshrieker extends CardImpl {
+public final class MarduWarshrieker extends CardImpl {
public MarduWarshrieker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MarduWoeReaper.java b/Mage.Sets/src/mage/cards/m/MarduWoeReaper.java
index d1839e719ba..26825dd2c8f 100644
--- a/Mage.Sets/src/mage/cards/m/MarduWoeReaper.java
+++ b/Mage.Sets/src/mage/cards/m/MarduWoeReaper.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author emerald000
*/
-public class MarduWoeReaper extends CardImpl {
+public final class MarduWoeReaper extends CardImpl {
public MarduWoeReaper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MarhaultElsdragon.java b/Mage.Sets/src/mage/cards/m/MarhaultElsdragon.java
index 4a6308b9470..9dcc78af704 100644
--- a/Mage.Sets/src/mage/cards/m/MarhaultElsdragon.java
+++ b/Mage.Sets/src/mage/cards/m/MarhaultElsdragon.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class MarhaultElsdragon extends CardImpl {
+public final class MarhaultElsdragon extends CardImpl {
public MarhaultElsdragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MarionetteMaster.java b/Mage.Sets/src/mage/cards/m/MarionetteMaster.java
index 09462846592..df0c7c6352b 100644
--- a/Mage.Sets/src/mage/cards/m/MarionetteMaster.java
+++ b/Mage.Sets/src/mage/cards/m/MarionetteMaster.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class MarionetteMaster extends CardImpl {
+public final class MarionetteMaster extends CardImpl {
public MarionetteMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarisisTwinclaws.java b/Mage.Sets/src/mage/cards/m/MarisisTwinclaws.java
index 858af431a70..68ce1f220c3 100644
--- a/Mage.Sets/src/mage/cards/m/MarisisTwinclaws.java
+++ b/Mage.Sets/src/mage/cards/m/MarisisTwinclaws.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class MarisisTwinclaws extends CardImpl {
+public final class MarisisTwinclaws extends CardImpl {
public MarisisTwinclaws (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R/W}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MaritimeGuard.java b/Mage.Sets/src/mage/cards/m/MaritimeGuard.java
index 42454fe01d3..ddb64498470 100644
--- a/Mage.Sets/src/mage/cards/m/MaritimeGuard.java
+++ b/Mage.Sets/src/mage/cards/m/MaritimeGuard.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MaritimeGuard extends CardImpl {
+public final class MaritimeGuard extends CardImpl {
public MaritimeGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/Marjhan.java b/Mage.Sets/src/mage/cards/m/Marjhan.java
index bb11fa15fd8..a2037bb66e8 100644
--- a/Mage.Sets/src/mage/cards/m/Marjhan.java
+++ b/Mage.Sets/src/mage/cards/m/Marjhan.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Marjhan extends CardImpl {
+public final class Marjhan extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature without flying");
diff --git a/Mage.Sets/src/mage/cards/m/MarkForDeath.java b/Mage.Sets/src/mage/cards/m/MarkForDeath.java
index 715c59ce030..5e31e93c1c2 100644
--- a/Mage.Sets/src/mage/cards/m/MarkForDeath.java
+++ b/Mage.Sets/src/mage/cards/m/MarkForDeath.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class MarkForDeath extends CardImpl {
+public final class MarkForDeath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/m/MarkOfAsylum.java b/Mage.Sets/src/mage/cards/m/MarkOfAsylum.java
index 3a87cc1e385..d310aa4f011 100644
--- a/Mage.Sets/src/mage/cards/m/MarkOfAsylum.java
+++ b/Mage.Sets/src/mage/cards/m/MarkOfAsylum.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreatureInPlay;
*
* @author jeffwadsworth
*/
-public class MarkOfAsylum extends CardImpl {
+public final class MarkOfAsylum extends CardImpl {
private static final FilterControlledCreatureInPlay filter = new FilterControlledCreatureInPlay("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/m/MarkOfEviction.java b/Mage.Sets/src/mage/cards/m/MarkOfEviction.java
index 3cae0645893..be47d4f7474 100644
--- a/Mage.Sets/src/mage/cards/m/MarkOfEviction.java
+++ b/Mage.Sets/src/mage/cards/m/MarkOfEviction.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MarkOfEviction extends CardImpl {
+public final class MarkOfEviction extends CardImpl {
public MarkOfEviction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MarkOfFury.java b/Mage.Sets/src/mage/cards/m/MarkOfFury.java
index 9b940774f2f..93d8fbf80cb 100644
--- a/Mage.Sets/src/mage/cards/m/MarkOfFury.java
+++ b/Mage.Sets/src/mage/cards/m/MarkOfFury.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MarkOfFury extends CardImpl {
+public final class MarkOfFury extends CardImpl {
public MarkOfFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MarkOfMutiny.java b/Mage.Sets/src/mage/cards/m/MarkOfMutiny.java
index baf1d902dde..6f3dab1fda8 100644
--- a/Mage.Sets/src/mage/cards/m/MarkOfMutiny.java
+++ b/Mage.Sets/src/mage/cards/m/MarkOfMutiny.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author maurer.it_at_gmail.com
*/
-public class MarkOfMutiny extends CardImpl {
+public final class MarkOfMutiny extends CardImpl {
public MarkOfMutiny(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MarkOfSakiko.java b/Mage.Sets/src/mage/cards/m/MarkOfSakiko.java
index d68731b7ec8..453cf8195db 100644
--- a/Mage.Sets/src/mage/cards/m/MarkOfSakiko.java
+++ b/Mage.Sets/src/mage/cards/m/MarkOfSakiko.java
@@ -56,25 +56,24 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class MarkOfSakiko extends CardImpl {
+public final class MarkOfSakiko extends CardImpl {
public MarkOfSakiko(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
this.subtype.add(SubType.AURA);
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
-
+
// Enchanted creature has "Whenever this creature deals combat damage to a player, add that much {G}. Until end of turn, you don’t lose this mana as steps and phases end."
- Effect effect = new GainAbilityAttachedEffect(new MarkOfSakikoTriggeredAbility(), AttachmentType.AURA);
+ Effect effect = new GainAbilityAttachedEffect(new MarkOfSakikoTriggeredAbility(), AttachmentType.AURA);
effect.setText("Enchanted creature has \"Whenever this creature deals combat damage to a player, add that much {G}. Until end of turn, you don’t lose this mana as steps and phases end.\"");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
-
+
}
public MarkOfSakiko(final MarkOfSakiko card) {
@@ -114,7 +113,7 @@ class MarkOfSakikoTriggeredAbility extends TriggeredAbilityImpl {
this.getEffects().clear();
Effect effect = new AddManaToManaPoolTargetControllerEffect(Mana.GreenMana(event.getAmount()), "that player", true);
effect.setTargetPointer(new FixedTarget(getControllerId()));
- effect.setText("add that much {G}. Until end of turn, this mana doesn't empty from your mana pool as steps and phases end");
+ effect.setText("add that much {G}. Until end of turn, you don’t lose this mana as steps and phases end");
this.addEffect(effect);
return true;
}
@@ -127,4 +126,4 @@ class MarkOfSakikoTriggeredAbility extends TriggeredAbilityImpl {
return "Whenever this creature deals combat damage to a player, add that much {G}. "
+ "Until end of turn, you don’t lose this mana as steps and phases end.";
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java b/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java
index 6e4985da0a1..20a2b666263 100644
--- a/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java
+++ b/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MarkOfTheOni extends CardImpl {
+public final class MarkOfTheOni extends CardImpl {
public MarkOfTheOni(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarkOfTheVampire.java b/Mage.Sets/src/mage/cards/m/MarkOfTheVampire.java
index 1e192063002..4bace89b787 100644
--- a/Mage.Sets/src/mage/cards/m/MarkOfTheVampire.java
+++ b/Mage.Sets/src/mage/cards/m/MarkOfTheVampire.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MarkOfTheVampire extends CardImpl {
+public final class MarkOfTheVampire extends CardImpl {
public MarkOfTheVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarkedByHonor.java b/Mage.Sets/src/mage/cards/m/MarkedByHonor.java
index 4771ec5a020..e7d59f3e2f3 100644
--- a/Mage.Sets/src/mage/cards/m/MarkedByHonor.java
+++ b/Mage.Sets/src/mage/cards/m/MarkedByHonor.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MarkedByHonor extends CardImpl {
+public final class MarkedByHonor extends CardImpl {
public MarkedByHonor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MarkerBeetles.java b/Mage.Sets/src/mage/cards/m/MarkerBeetles.java
index 70c223a07c1..6b5e65c156a 100644
--- a/Mage.Sets/src/mage/cards/m/MarkerBeetles.java
+++ b/Mage.Sets/src/mage/cards/m/MarkerBeetles.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MarkerBeetles extends CardImpl {
+public final class MarkerBeetles extends CardImpl {
public MarkerBeetles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MarketFestival.java b/Mage.Sets/src/mage/cards/m/MarketFestival.java
index 441c57cff81..20e4f460969 100644
--- a/Mage.Sets/src/mage/cards/m/MarketFestival.java
+++ b/Mage.Sets/src/mage/cards/m/MarketFestival.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class MarketFestival extends CardImpl {
+public final class MarketFestival extends CardImpl {
public MarketFestival(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
@@ -67,7 +67,7 @@ public class MarketFestival extends CardImpl {
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
- // Whenever enchanted land is tapped for mana, its controller adds two mana in any combination of colors to their mana pool (in addition to the mana the land produces).
+ // Whenever enchanted land is tapped for mana, its controller adds two mana in any combination of colors (in addition to the mana the land produces).
this.addAbility(new MarketFestivalTriggeredAbility());
}
@@ -109,7 +109,7 @@ class MarketFestivalTriggeredAbility extends TriggeredManaAbility {
@Override
public String getRule() {
- return "Whenever enchanted land is tapped for mana, its controller adds two mana in any combination of colors to their mana pool (in addition to the mana the land produces).";
+ return "Whenever enchanted land is tapped for mana, its controller adds two mana in any combination of colors (in addition to the mana the land produces).";
}
}
@@ -117,7 +117,7 @@ class MarketFestivalManaEffect extends ManaEffect {
public MarketFestivalManaEffect() {
super();
- this.staticText = "its controller adds two mana in any combination of colors to their mana pool";
+ this.staticText = "its controller adds two mana in any combination of colors";
}
public MarketFestivalManaEffect(final MarketFestivalManaEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/m/MarkovBlademaster.java b/Mage.Sets/src/mage/cards/m/MarkovBlademaster.java
index 8ed744684a4..14b25923c0e 100644
--- a/Mage.Sets/src/mage/cards/m/MarkovBlademaster.java
+++ b/Mage.Sets/src/mage/cards/m/MarkovBlademaster.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class MarkovBlademaster extends CardImpl {
+public final class MarkovBlademaster extends CardImpl {
public MarkovBlademaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MarkovCrusader.java b/Mage.Sets/src/mage/cards/m/MarkovCrusader.java
index 83f256a1221..68a6008a350 100644
--- a/Mage.Sets/src/mage/cards/m/MarkovCrusader.java
+++ b/Mage.Sets/src/mage/cards/m/MarkovCrusader.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class MarkovCrusader extends CardImpl {
+public final class MarkovCrusader extends CardImpl {
private static final String rule = "{this} has haste as long as you control another Vampire";
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Vampire");
diff --git a/Mage.Sets/src/mage/cards/m/MarkovDreadknight.java b/Mage.Sets/src/mage/cards/m/MarkovDreadknight.java
index 27f81163a85..9b28da1841c 100644
--- a/Mage.Sets/src/mage/cards/m/MarkovDreadknight.java
+++ b/Mage.Sets/src/mage/cards/m/MarkovDreadknight.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class MarkovDreadknight extends CardImpl {
+public final class MarkovDreadknight extends CardImpl {
public MarkovDreadknight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarkovPatrician.java b/Mage.Sets/src/mage/cards/m/MarkovPatrician.java
index 8a03e5f4c08..f244f55578c 100644
--- a/Mage.Sets/src/mage/cards/m/MarkovPatrician.java
+++ b/Mage.Sets/src/mage/cards/m/MarkovPatrician.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MarkovPatrician extends CardImpl {
+public final class MarkovPatrician extends CardImpl {
public MarkovPatrician(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarkovWarlord.java b/Mage.Sets/src/mage/cards/m/MarkovWarlord.java
index dc0fb78d411..c3d21a156bc 100644
--- a/Mage.Sets/src/mage/cards/m/MarkovWarlord.java
+++ b/Mage.Sets/src/mage/cards/m/MarkovWarlord.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MarkovWarlord extends CardImpl {
+public final class MarkovWarlord extends CardImpl {
public MarkovWarlord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MarkovsServant.java b/Mage.Sets/src/mage/cards/m/MarkovsServant.java
index 9310330be18..5c8d8c9f432 100644
--- a/Mage.Sets/src/mage/cards/m/MarkovsServant.java
+++ b/Mage.Sets/src/mage/cards/m/MarkovsServant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class MarkovsServant extends CardImpl {
+public final class MarkovsServant extends CardImpl {
public MarkovsServant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},null);
diff --git a/Mage.Sets/src/mage/cards/m/Maro.java b/Mage.Sets/src/mage/cards/m/Maro.java
index ae80d60da9a..ebab2a10d2a 100644
--- a/Mage.Sets/src/mage/cards/m/Maro.java
+++ b/Mage.Sets/src/mage/cards/m/Maro.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class Maro extends CardImpl {
+public final class Maro extends CardImpl {
public Maro(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MarrowBats.java b/Mage.Sets/src/mage/cards/m/MarrowBats.java
index 7a5b89a8dc2..9eaed85a935 100644
--- a/Mage.Sets/src/mage/cards/m/MarrowBats.java
+++ b/Mage.Sets/src/mage/cards/m/MarrowBats.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class MarrowBats extends CardImpl {
+public final class MarrowBats extends CardImpl {
public MarrowBats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarrowChomper.java b/Mage.Sets/src/mage/cards/m/MarrowChomper.java
index 55e400aa9da..b9659859b8a 100644
--- a/Mage.Sets/src/mage/cards/m/MarrowChomper.java
+++ b/Mage.Sets/src/mage/cards/m/MarrowChomper.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MarrowChomper extends CardImpl {
+public final class MarrowChomper extends CardImpl {
public MarrowChomper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MarrowGnawer.java b/Mage.Sets/src/mage/cards/m/MarrowGnawer.java
index 14c7678c984..c677094f270 100644
--- a/Mage.Sets/src/mage/cards/m/MarrowGnawer.java
+++ b/Mage.Sets/src/mage/cards/m/MarrowGnawer.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX
*/
-public class MarrowGnawer extends CardImpl {
+public final class MarrowGnawer extends CardImpl {
private static final FilterCreaturePermanent filterFear = new FilterCreaturePermanent("Rat creatures");
private static final FilterControlledCreaturePermanent filterSacrifice = new FilterControlledCreaturePermanent("a Rat");
diff --git a/Mage.Sets/src/mage/cards/m/MarrowShards.java b/Mage.Sets/src/mage/cards/m/MarrowShards.java
index 56f34970a7b..665f4540f36 100644
--- a/Mage.Sets/src/mage/cards/m/MarrowShards.java
+++ b/Mage.Sets/src/mage/cards/m/MarrowShards.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author North
*/
-public class MarrowShards extends CardImpl {
+public final class MarrowShards extends CardImpl {
public MarrowShards(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W/P}");
diff --git a/Mage.Sets/src/mage/cards/m/MarshBoa.java b/Mage.Sets/src/mage/cards/m/MarshBoa.java
index c0ac88ad43b..25700243f15 100644
--- a/Mage.Sets/src/mage/cards/m/MarshBoa.java
+++ b/Mage.Sets/src/mage/cards/m/MarshBoa.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MarshBoa extends CardImpl {
+public final class MarshBoa extends CardImpl {
public MarshBoa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MarshCasualties.java b/Mage.Sets/src/mage/cards/m/MarshCasualties.java
index 4f4ab91f989..41c3a42700d 100644
--- a/Mage.Sets/src/mage/cards/m/MarshCasualties.java
+++ b/Mage.Sets/src/mage/cards/m/MarshCasualties.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class MarshCasualties extends CardImpl {
+public final class MarshCasualties extends CardImpl {
private static final String ruleText = "Creatures target player controls get -1/-1 until end of turn. if this spell was kicked, those creatures get -2/-2 until end of turn instead";
diff --git a/Mage.Sets/src/mage/cards/m/MarshCrocodile.java b/Mage.Sets/src/mage/cards/m/MarshCrocodile.java
index 05e8ab7af7e..2518140ea96 100644
--- a/Mage.Sets/src/mage/cards/m/MarshCrocodile.java
+++ b/Mage.Sets/src/mage/cards/m/MarshCrocodile.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*/
-public class MarshCrocodile extends CardImpl {
+public final class MarshCrocodile extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("blue or black creature you control");
diff --git a/Mage.Sets/src/mage/cards/m/MarshFlats.java b/Mage.Sets/src/mage/cards/m/MarshFlats.java
index 102aa525eea..4c162ae5c8a 100644
--- a/Mage.Sets/src/mage/cards/m/MarshFlats.java
+++ b/Mage.Sets/src/mage/cards/m/MarshFlats.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MarshFlats extends CardImpl {
+public final class MarshFlats extends CardImpl {
public MarshFlats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/m/MarshFlitter.java b/Mage.Sets/src/mage/cards/m/MarshFlitter.java
index 63469b07b57..225f323c9e0 100644
--- a/Mage.Sets/src/mage/cards/m/MarshFlitter.java
+++ b/Mage.Sets/src/mage/cards/m/MarshFlitter.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class MarshFlitter extends CardImpl {
+public final class MarshFlitter extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin");
diff --git a/Mage.Sets/src/mage/cards/m/MarshGas.java b/Mage.Sets/src/mage/cards/m/MarshGas.java
index 6a2146a520b..d5dbefe7329 100644
--- a/Mage.Sets/src/mage/cards/m/MarshGas.java
+++ b/Mage.Sets/src/mage/cards/m/MarshGas.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author anonymous
*/
-public class MarshGas extends CardImpl {
+public final class MarshGas extends CardImpl {
public MarshGas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarshGoblins.java b/Mage.Sets/src/mage/cards/m/MarshGoblins.java
index ece9e86905a..234961abd85 100644
--- a/Mage.Sets/src/mage/cards/m/MarshGoblins.java
+++ b/Mage.Sets/src/mage/cards/m/MarshGoblins.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MarshGoblins extends CardImpl {
+public final class MarshGoblins extends CardImpl {
public MarshGoblins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MarshHulk.java b/Mage.Sets/src/mage/cards/m/MarshHulk.java
index 6681f1c9399..f20a6681b68 100644
--- a/Mage.Sets/src/mage/cards/m/MarshHulk.java
+++ b/Mage.Sets/src/mage/cards/m/MarshHulk.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MarshHulk extends CardImpl {
+public final class MarshHulk extends CardImpl {
public MarshHulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarshLurker.java b/Mage.Sets/src/mage/cards/m/MarshLurker.java
index f57c232265e..941f8230de8 100644
--- a/Mage.Sets/src/mage/cards/m/MarshLurker.java
+++ b/Mage.Sets/src/mage/cards/m/MarshLurker.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class MarshLurker extends CardImpl {
+public final class MarshLurker extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Swamp");
diff --git a/Mage.Sets/src/mage/cards/m/MarshThreader.java b/Mage.Sets/src/mage/cards/m/MarshThreader.java
index c27772f6bef..e206e9f7f87 100644
--- a/Mage.Sets/src/mage/cards/m/MarshThreader.java
+++ b/Mage.Sets/src/mage/cards/m/MarshThreader.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class MarshThreader extends CardImpl {
+public final class MarshThreader extends CardImpl {
public MarshThreader (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MarshViper.java b/Mage.Sets/src/mage/cards/m/MarshViper.java
index 0f7a48f5e07..641efa80d78 100644
--- a/Mage.Sets/src/mage/cards/m/MarshViper.java
+++ b/Mage.Sets/src/mage/cards/m/MarshViper.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class MarshViper extends CardImpl {
+public final class MarshViper extends CardImpl {
public MarshViper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MarshalingCry.java b/Mage.Sets/src/mage/cards/m/MarshalingCry.java
index 0b1e8b47420..4c7a806873a 100644
--- a/Mage.Sets/src/mage/cards/m/MarshalingCry.java
+++ b/Mage.Sets/src/mage/cards/m/MarshalingCry.java
@@ -45,7 +45,7 @@ import mage.constants.TimingRule;
*
* @author fireshoes
*/
-public class MarshalingCry extends CardImpl {
+public final class MarshalingCry extends CardImpl {
public MarshalingCry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MarshalingTheTroops.java b/Mage.Sets/src/mage/cards/m/MarshalingTheTroops.java
index 0f17f3d80e1..6483390f8c6 100644
--- a/Mage.Sets/src/mage/cards/m/MarshalingTheTroops.java
+++ b/Mage.Sets/src/mage/cards/m/MarshalingTheTroops.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class MarshalingTheTroops extends CardImpl {
+public final class MarshalingTheTroops extends CardImpl {
public MarshalingTheTroops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MarshalsAnthem.java b/Mage.Sets/src/mage/cards/m/MarshalsAnthem.java
index efbc674962a..b4cf798e2ce 100644
--- a/Mage.Sets/src/mage/cards/m/MarshalsAnthem.java
+++ b/Mage.Sets/src/mage/cards/m/MarshalsAnthem.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInYourGraveyard;
* @author jeffwadsworth
*
*/
-public class MarshalsAnthem extends CardImpl {
+public final class MarshalsAnthem extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
private static final FilterCard filterCard = new FilterCard("creature card in your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MarshdrinkerGiant.java b/Mage.Sets/src/mage/cards/m/MarshdrinkerGiant.java
index 05f6cbed93c..98546d7a15d 100644
--- a/Mage.Sets/src/mage/cards/m/MarshdrinkerGiant.java
+++ b/Mage.Sets/src/mage/cards/m/MarshdrinkerGiant.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class MarshdrinkerGiant extends CardImpl {
+public final class MarshdrinkerGiant extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Island or Swamp an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/m/MarshmistTitan.java b/Mage.Sets/src/mage/cards/m/MarshmistTitan.java
index d623f3dfbc4..1bc6dd175f8 100644
--- a/Mage.Sets/src/mage/cards/m/MarshmistTitan.java
+++ b/Mage.Sets/src/mage/cards/m/MarshmistTitan.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class MarshmistTitan extends CardImpl {
+public final class MarshmistTitan extends CardImpl {
public MarshmistTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MartialCoup.java b/Mage.Sets/src/mage/cards/m/MartialCoup.java
index 10453119e2e..ebcc569b332 100644
--- a/Mage.Sets/src/mage/cards/m/MartialCoup.java
+++ b/Mage.Sets/src/mage/cards/m/MartialCoup.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MartialCoup extends CardImpl {
+public final class MartialCoup extends CardImpl {
public MartialCoup(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MartialGlory.java b/Mage.Sets/src/mage/cards/m/MartialGlory.java
index cee68eb5cbd..8de7496d328 100644
--- a/Mage.Sets/src/mage/cards/m/MartialGlory.java
+++ b/Mage.Sets/src/mage/cards/m/MartialGlory.java
@@ -43,7 +43,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class MartialGlory extends CardImpl {
+public final class MartialGlory extends CardImpl {
public MartialGlory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MartialLaw.java b/Mage.Sets/src/mage/cards/m/MartialLaw.java
index 6e1eded49d0..a1e9c67969c 100644
--- a/Mage.Sets/src/mage/cards/m/MartialLaw.java
+++ b/Mage.Sets/src/mage/cards/m/MartialLaw.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX2
*/
-public class MartialLaw extends CardImpl {
+public final class MartialLaw extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/m/MartonStromgald.java b/Mage.Sets/src/mage/cards/m/MartonStromgald.java
index 4716cb90042..5ee97c91003 100644
--- a/Mage.Sets/src/mage/cards/m/MartonStromgald.java
+++ b/Mage.Sets/src/mage/cards/m/MartonStromgald.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author Eirkei
*/
-public class MartonStromgald extends CardImpl {
+public final class MartonStromgald extends CardImpl {
private static final FilterAttackingCreature attackingFilter = new FilterAttackingCreature("attacking creature other than {this}");
private static final FilterBlockingCreature blockingFilter = new FilterBlockingCreature("blocking creature other than {this}");
diff --git a/Mage.Sets/src/mage/cards/m/MartyrOfAshes.java b/Mage.Sets/src/mage/cards/m/MartyrOfAshes.java
index 13a8b52c9d9..f3fbc3936cc 100644
--- a/Mage.Sets/src/mage/cards/m/MartyrOfAshes.java
+++ b/Mage.Sets/src/mage/cards/m/MartyrOfAshes.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class MartyrOfAshes extends CardImpl {
+public final class MartyrOfAshes extends CardImpl {
private static final FilterCard filterHand = new FilterCard("X red cards from your hand");
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/m/MartyrOfBones.java b/Mage.Sets/src/mage/cards/m/MartyrOfBones.java
index ef14fb0c7c8..4bef7f97f3c 100644
--- a/Mage.Sets/src/mage/cards/m/MartyrOfBones.java
+++ b/Mage.Sets/src/mage/cards/m/MartyrOfBones.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class MartyrOfBones extends CardImpl {
+public final class MartyrOfBones extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/m/MartyrOfDusk.java b/Mage.Sets/src/mage/cards/m/MartyrOfDusk.java
index ae521ac496f..40e23ad7806 100644
--- a/Mage.Sets/src/mage/cards/m/MartyrOfDusk.java
+++ b/Mage.Sets/src/mage/cards/m/MartyrOfDusk.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.IxalanVampireToken;
*
* @author L_J
*/
-public class MartyrOfDusk extends CardImpl {
+public final class MartyrOfDusk extends CardImpl {
public MartyrOfDusk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MartyrOfFrost.java b/Mage.Sets/src/mage/cards/m/MartyrOfFrost.java
index d9de1dbe9fe..459bee250bd 100644
--- a/Mage.Sets/src/mage/cards/m/MartyrOfFrost.java
+++ b/Mage.Sets/src/mage/cards/m/MartyrOfFrost.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class MartyrOfFrost extends CardImpl {
+public final class MartyrOfFrost extends CardImpl {
private static final FilterCard filter = new FilterCard("X blue cards from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MartyrOfSands.java b/Mage.Sets/src/mage/cards/m/MartyrOfSands.java
index b215a69bd51..62f0e7c78b3 100644
--- a/Mage.Sets/src/mage/cards/m/MartyrOfSands.java
+++ b/Mage.Sets/src/mage/cards/m/MartyrOfSands.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class MartyrOfSands extends CardImpl {
+public final class MartyrOfSands extends CardImpl {
private static final FilterCard filter = new FilterCard("X white cards from your hand");
diff --git a/Mage.Sets/src/mage/cards/m/MartyrOfSpores.java b/Mage.Sets/src/mage/cards/m/MartyrOfSpores.java
index bfa15bc6cd5..159e4c83e0d 100644
--- a/Mage.Sets/src/mage/cards/m/MartyrOfSpores.java
+++ b/Mage.Sets/src/mage/cards/m/MartyrOfSpores.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class MartyrOfSpores extends CardImpl {
+public final class MartyrOfSpores extends CardImpl {
private static final FilterCard filter = new FilterCard("X green cards from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/m/Martyrdom.java b/Mage.Sets/src/mage/cards/m/Martyrdom.java
index d57ed53505a..069cea32628 100644
--- a/Mage.Sets/src/mage/cards/m/Martyrdom.java
+++ b/Mage.Sets/src/mage/cards/m/Martyrdom.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class Martyrdom extends CardImpl {
+public final class Martyrdom extends CardImpl {
public Martyrdom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}{W}");
@@ -126,7 +126,7 @@ class MartyrdomActivatedAbility extends ActivatedAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
if (playerId.equals(caster)) {
Permanent permanent = game.getBattlefield().getPermanent(this.getSourceId());
if (permanent != null) {
@@ -135,7 +135,7 @@ class MartyrdomActivatedAbility extends ActivatedAbilityImpl {
}
}
}
- return false;
+ return ActivationStatus.getFalse();
}
@Override
diff --git a/Mage.Sets/src/mage/cards/m/MartyredRusalka.java b/Mage.Sets/src/mage/cards/m/MartyredRusalka.java
index e09f9a8f535..1346f4ef9e3 100644
--- a/Mage.Sets/src/mage/cards/m/MartyredRusalka.java
+++ b/Mage.Sets/src/mage/cards/m/MartyredRusalka.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class MartyredRusalka extends CardImpl {
+public final class MartyredRusalka extends CardImpl {
public MartyredRusalka(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MartyrsBond.java b/Mage.Sets/src/mage/cards/m/MartyrsBond.java
index a453d4c548a..ba7103476c2 100644
--- a/Mage.Sets/src/mage/cards/m/MartyrsBond.java
+++ b/Mage.Sets/src/mage/cards/m/MartyrsBond.java
@@ -56,7 +56,7 @@ import java.util.UUID;
*
* @author spjspj
*/
-public class MartyrsBond extends CardImpl {
+public final class MartyrsBond extends CardImpl {
public MartyrsBond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MartyrsCause.java b/Mage.Sets/src/mage/cards/m/MartyrsCause.java
index 24e166b007b..b9c39e01d35 100644
--- a/Mage.Sets/src/mage/cards/m/MartyrsCause.java
+++ b/Mage.Sets/src/mage/cards/m/MartyrsCause.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class MartyrsCause extends CardImpl {
+public final class MartyrsCause extends CardImpl {
public MartyrsCause(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MartyrsCry.java b/Mage.Sets/src/mage/cards/m/MartyrsCry.java
index 0441ab4f5b3..88f0d7cabed 100644
--- a/Mage.Sets/src/mage/cards/m/MartyrsCry.java
+++ b/Mage.Sets/src/mage/cards/m/MartyrsCry.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class MartyrsCry extends CardImpl {
+public final class MartyrsCry extends CardImpl {
public MartyrsCry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MartyrsOfKorlis.java b/Mage.Sets/src/mage/cards/m/MartyrsOfKorlis.java
index 24821e4f554..cf02eecc077 100644
--- a/Mage.Sets/src/mage/cards/m/MartyrsOfKorlis.java
+++ b/Mage.Sets/src/mage/cards/m/MartyrsOfKorlis.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent;
*
* @author MarcoMarin
*/
-public class MartyrsOfKorlis extends CardImpl {
+public final class MartyrsOfKorlis extends CardImpl {
public MartyrsOfKorlis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MartyrsTomb.java b/Mage.Sets/src/mage/cards/m/MartyrsTomb.java
index 7ae99f39069..d60c659bdf9 100644
--- a/Mage.Sets/src/mage/cards/m/MartyrsTomb.java
+++ b/Mage.Sets/src/mage/cards/m/MartyrsTomb.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MartyrsTomb extends CardImpl {
+public final class MartyrsTomb extends CardImpl {
public MartyrsTomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MarwynTheNurturer.java b/Mage.Sets/src/mage/cards/m/MarwynTheNurturer.java
index e5d7b6313b2..ba482b84461 100644
--- a/Mage.Sets/src/mage/cards/m/MarwynTheNurturer.java
+++ b/Mage.Sets/src/mage/cards/m/MarwynTheNurturer.java
@@ -20,7 +20,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
/**
* @author JRHerlehy Created on 4/7/18.
*/
-public class MarwynTheNurturer extends CardImpl {
+public final class MarwynTheNurturer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Elf");
diff --git a/Mage.Sets/src/mage/cards/m/MasakoTheHumorless.java b/Mage.Sets/src/mage/cards/m/MasakoTheHumorless.java
index 9f1f9402f73..1d55715599f 100644
--- a/Mage.Sets/src/mage/cards/m/MasakoTheHumorless.java
+++ b/Mage.Sets/src/mage/cards/m/MasakoTheHumorless.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class MasakoTheHumorless extends CardImpl {
+public final class MasakoTheHumorless extends CardImpl {
public MasakoTheHumorless(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MaskOfAvacyn.java b/Mage.Sets/src/mage/cards/m/MaskOfAvacyn.java
index 3dcde06944d..2b42a756bff 100644
--- a/Mage.Sets/src/mage/cards/m/MaskOfAvacyn.java
+++ b/Mage.Sets/src/mage/cards/m/MaskOfAvacyn.java
@@ -43,7 +43,7 @@ import mage.constants.*;
/**
* @author nantuko
*/
-public class MaskOfAvacyn extends CardImpl {
+public final class MaskOfAvacyn extends CardImpl {
public MaskOfAvacyn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java b/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java
index e78b2ebb788..64cbade283f 100644
--- a/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java
+++ b/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java
@@ -47,7 +47,7 @@ import mage.game.Game;
*
* @author LoneFox
*/
-public class MaskOfIntolerance extends CardImpl {
+public final class MaskOfIntolerance extends CardImpl {
public MaskOfIntolerance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MaskOfLawAndGrace.java b/Mage.Sets/src/mage/cards/m/MaskOfLawAndGrace.java
index 5f413cfaf0f..114d98b531f 100644
--- a/Mage.Sets/src/mage/cards/m/MaskOfLawAndGrace.java
+++ b/Mage.Sets/src/mage/cards/m/MaskOfLawAndGrace.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MaskOfLawAndGrace extends CardImpl {
+public final class MaskOfLawAndGrace extends CardImpl {
public MaskOfLawAndGrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MaskOfMemory.java b/Mage.Sets/src/mage/cards/m/MaskOfMemory.java
index 1bc255a504d..5b50692a05d 100644
--- a/Mage.Sets/src/mage/cards/m/MaskOfMemory.java
+++ b/Mage.Sets/src/mage/cards/m/MaskOfMemory.java
@@ -45,7 +45,7 @@ import mage.constants.Outcome;
*
* @author Quercitron
*/
-public class MaskOfMemory extends CardImpl {
+public final class MaskOfMemory extends CardImpl {
public MaskOfMemory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MaskOfRiddles.java b/Mage.Sets/src/mage/cards/m/MaskOfRiddles.java
index a1363419a67..0e5065e484d 100644
--- a/Mage.Sets/src/mage/cards/m/MaskOfRiddles.java
+++ b/Mage.Sets/src/mage/cards/m/MaskOfRiddles.java
@@ -43,7 +43,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class MaskOfRiddles extends CardImpl {
+public final class MaskOfRiddles extends CardImpl {
public MaskOfRiddles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java b/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java
index f2359367374..d014783f3b6 100644
--- a/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java
+++ b/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class MaskOfTheMimic extends CardImpl {
+public final class MaskOfTheMimic extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/m/MaskedAdmirers.java b/Mage.Sets/src/mage/cards/m/MaskedAdmirers.java
index 812374358a0..e7b30034c4c 100644
--- a/Mage.Sets/src/mage/cards/m/MaskedAdmirers.java
+++ b/Mage.Sets/src/mage/cards/m/MaskedAdmirers.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class MaskedAdmirers extends CardImpl {
+public final class MaskedAdmirers extends CardImpl {
public MaskedAdmirers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MaskedGorgon.java b/Mage.Sets/src/mage/cards/m/MaskedGorgon.java
index 1cdd22d09b3..db50e2e9276 100644
--- a/Mage.Sets/src/mage/cards/m/MaskedGorgon.java
+++ b/Mage.Sets/src/mage/cards/m/MaskedGorgon.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class MaskedGorgon extends CardImpl {
+public final class MaskedGorgon extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("green creatures and white creatures");
private static final FilterCard filter2 = new FilterCard("Gorgons");
diff --git a/Mage.Sets/src/mage/cards/m/MassAppeal.java b/Mage.Sets/src/mage/cards/m/MassAppeal.java
index aa08013d0eb..f7ae0c34633 100644
--- a/Mage.Sets/src/mage/cards/m/MassAppeal.java
+++ b/Mage.Sets/src/mage/cards/m/MassAppeal.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author noxx
*/
-public class MassAppeal extends CardImpl {
+public final class MassAppeal extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Human you control");
diff --git a/Mage.Sets/src/mage/cards/m/MassCalcify.java b/Mage.Sets/src/mage/cards/m/MassCalcify.java
index bd18b7f2a9d..7164f87bb51 100644
--- a/Mage.Sets/src/mage/cards/m/MassCalcify.java
+++ b/Mage.Sets/src/mage/cards/m/MassCalcify.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class MassCalcify extends CardImpl {
+public final class MassCalcify extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonwhite creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MassHysteria.java b/Mage.Sets/src/mage/cards/m/MassHysteria.java
index 5f858a1b2d6..b5567a37dd0 100644
--- a/Mage.Sets/src/mage/cards/m/MassHysteria.java
+++ b/Mage.Sets/src/mage/cards/m/MassHysteria.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class MassHysteria extends CardImpl {
+public final class MassHysteria extends CardImpl {
public MassHysteria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MassMutiny.java b/Mage.Sets/src/mage/cards/m/MassMutiny.java
index fd825fa987c..8a60036376f 100644
--- a/Mage.Sets/src/mage/cards/m/MassMutiny.java
+++ b/Mage.Sets/src/mage/cards/m/MassMutiny.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class MassMutiny extends CardImpl {
+public final class MassMutiny extends CardImpl {
public MassMutiny(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MassOfGhouls.java b/Mage.Sets/src/mage/cards/m/MassOfGhouls.java
index 801b8bc6d43..e737d1b488c 100644
--- a/Mage.Sets/src/mage/cards/m/MassOfGhouls.java
+++ b/Mage.Sets/src/mage/cards/m/MassOfGhouls.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MassOfGhouls extends CardImpl {
+public final class MassOfGhouls extends CardImpl {
public MassOfGhouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MassPolymorph.java b/Mage.Sets/src/mage/cards/m/MassPolymorph.java
index 5b160012e05..2f992584981 100644
--- a/Mage.Sets/src/mage/cards/m/MassPolymorph.java
+++ b/Mage.Sets/src/mage/cards/m/MassPolymorph.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MassPolymorph extends CardImpl {
+public final class MassPolymorph extends CardImpl {
public MassPolymorph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/Massacre.java b/Mage.Sets/src/mage/cards/m/Massacre.java
index 9da22dba6c0..c9cb2b0dd08 100644
--- a/Mage.Sets/src/mage/cards/m/Massacre.java
+++ b/Mage.Sets/src/mage/cards/m/Massacre.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class Massacre extends CardImpl {
+public final class Massacre extends CardImpl {
private static final FilterPermanent filterPlains = new FilterPermanent();
private static final FilterPermanent filterSwamp = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/m/MassacreWurm.java b/Mage.Sets/src/mage/cards/m/MassacreWurm.java
index adaac2f4fa8..0d133bd3f8d 100644
--- a/Mage.Sets/src/mage/cards/m/MassacreWurm.java
+++ b/Mage.Sets/src/mage/cards/m/MassacreWurm.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class MassacreWurm extends CardImpl {
+public final class MassacreWurm extends CardImpl {
public MassacreWurm (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MassiffSwarm.java b/Mage.Sets/src/mage/cards/m/MassiffSwarm.java
index 75058565a00..177f0139bb6 100644
--- a/Mage.Sets/src/mage/cards/m/MassiffSwarm.java
+++ b/Mage.Sets/src/mage/cards/m/MassiffSwarm.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class MassiffSwarm extends CardImpl {
+public final class MassiffSwarm extends CardImpl {
public MassiffSwarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MassiveRaid.java b/Mage.Sets/src/mage/cards/m/MassiveRaid.java
index 0d865fc1dfe..989853fac35 100644
--- a/Mage.Sets/src/mage/cards/m/MassiveRaid.java
+++ b/Mage.Sets/src/mage/cards/m/MassiveRaid.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class MassiveRaid extends CardImpl {
+public final class MassiveRaid extends CardImpl {
public MassiveRaid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MasterApothecary.java b/Mage.Sets/src/mage/cards/m/MasterApothecary.java
index c8ecf3fb9c0..a4af915bb40 100644
--- a/Mage.Sets/src/mage/cards/m/MasterApothecary.java
+++ b/Mage.Sets/src/mage/cards/m/MasterApothecary.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author cbt33
*/
-public class MasterApothecary extends CardImpl {
+public final class MasterApothecary extends CardImpl {
static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an untapped Cleric you control");
diff --git a/Mage.Sets/src/mage/cards/m/MasterBiomancer.java b/Mage.Sets/src/mage/cards/m/MasterBiomancer.java
index 60036c66d9c..41c428cd7da 100644
--- a/Mage.Sets/src/mage/cards/m/MasterBiomancer.java
+++ b/Mage.Sets/src/mage/cards/m/MasterBiomancer.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class MasterBiomancer extends CardImpl {
+public final class MasterBiomancer extends CardImpl {
public MasterBiomancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MasterDecoy.java b/Mage.Sets/src/mage/cards/m/MasterDecoy.java
index 0e69f8ed03b..5d04d110219 100644
--- a/Mage.Sets/src/mage/cards/m/MasterDecoy.java
+++ b/Mage.Sets/src/mage/cards/m/MasterDecoy.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MasterDecoy extends CardImpl {
+public final class MasterDecoy extends CardImpl {
public MasterDecoy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MasterHealer.java b/Mage.Sets/src/mage/cards/m/MasterHealer.java
index dcd71c35576..ff8fc54faa5 100644
--- a/Mage.Sets/src/mage/cards/m/MasterHealer.java
+++ b/Mage.Sets/src/mage/cards/m/MasterHealer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class MasterHealer extends CardImpl {
+public final class MasterHealer extends CardImpl {
public MasterHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MasterOfArms.java b/Mage.Sets/src/mage/cards/m/MasterOfArms.java
index 898a49171bb..52d61a2b68c 100644
--- a/Mage.Sets/src/mage/cards/m/MasterOfArms.java
+++ b/Mage.Sets/src/mage/cards/m/MasterOfArms.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MasterOfArms extends CardImpl {
+public final class MasterOfArms extends CardImpl {
public MasterOfArms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MasterOfCruelties.java b/Mage.Sets/src/mage/cards/m/MasterOfCruelties.java
index 8b903162000..c2e5d054206 100644
--- a/Mage.Sets/src/mage/cards/m/MasterOfCruelties.java
+++ b/Mage.Sets/src/mage/cards/m/MasterOfCruelties.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MasterOfCruelties extends CardImpl {
+public final class MasterOfCruelties extends CardImpl {
public MasterOfCruelties(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MasterOfDiversion.java b/Mage.Sets/src/mage/cards/m/MasterOfDiversion.java
index ccde73ad0d1..d40e3662192 100644
--- a/Mage.Sets/src/mage/cards/m/MasterOfDiversion.java
+++ b/Mage.Sets/src/mage/cards/m/MasterOfDiversion.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class MasterOfDiversion extends CardImpl {
+public final class MasterOfDiversion extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/m/MasterOfEtherium.java b/Mage.Sets/src/mage/cards/m/MasterOfEtherium.java
index f1493ae15e9..1d9e80ef2e9 100644
--- a/Mage.Sets/src/mage/cards/m/MasterOfEtherium.java
+++ b/Mage.Sets/src/mage/cards/m/MasterOfEtherium.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Loki
*/
-public class MasterOfEtherium extends CardImpl {
+public final class MasterOfEtherium extends CardImpl {
private static final FilterControlledPermanent filterCounted = new FilterControlledPermanent("artifacts you control");
private static final FilterCreaturePermanent filterBoosted = new FilterCreaturePermanent("artifact creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MasterOfPearls.java b/Mage.Sets/src/mage/cards/m/MasterOfPearls.java
index 1b4e2a77dfe..26b1fbaa7a5 100644
--- a/Mage.Sets/src/mage/cards/m/MasterOfPearls.java
+++ b/Mage.Sets/src/mage/cards/m/MasterOfPearls.java
@@ -44,7 +44,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX2
*/
-public class MasterOfPearls extends CardImpl {
+public final class MasterOfPearls extends CardImpl {
public MasterOfPearls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MasterOfPredicaments.java b/Mage.Sets/src/mage/cards/m/MasterOfPredicaments.java
index 67edf0fb6e3..115c9d85a3c 100644
--- a/Mage.Sets/src/mage/cards/m/MasterOfPredicaments.java
+++ b/Mage.Sets/src/mage/cards/m/MasterOfPredicaments.java
@@ -29,6 +29,7 @@ package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -37,8 +38,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.filter.FilterCard;
import mage.game.Game;
import mage.players.Player;
@@ -49,10 +50,10 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class MasterOfPredicaments extends CardImpl {
+public final class MasterOfPredicaments extends CardImpl {
public MasterOfPredicaments(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
this.subtype.add(SubType.SPHINX);
this.power = new MageInt(4);
@@ -125,7 +126,7 @@ class MasterOfPredicamentsEffect extends OneShotEffect {
// If the revealed card is a land, you can't cast it. So nothing happens
} else {
if (controller.chooseUse(outcome, "Cast " + cardFromHand.getName() + " without paying its mana cost?", source, game)) {
- controller.cast(cardFromHand.getSpellAbility(), game, true);
+ controller.cast(cardFromHand.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
diff --git a/Mage.Sets/src/mage/cards/m/MasterOfTheFeast.java b/Mage.Sets/src/mage/cards/m/MasterOfTheFeast.java
index d7c1e7d6849..be4095fc7ca 100644
--- a/Mage.Sets/src/mage/cards/m/MasterOfTheFeast.java
+++ b/Mage.Sets/src/mage/cards/m/MasterOfTheFeast.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class MasterOfTheFeast extends CardImpl {
+public final class MasterOfTheFeast extends CardImpl {
public MasterOfTheFeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MasterOfThePearlTrident.java b/Mage.Sets/src/mage/cards/m/MasterOfThePearlTrident.java
index ddd4e234643..37684913ae8 100644
--- a/Mage.Sets/src/mage/cards/m/MasterOfThePearlTrident.java
+++ b/Mage.Sets/src/mage/cards/m/MasterOfThePearlTrident.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class MasterOfThePearlTrident extends CardImpl {
+public final class MasterOfThePearlTrident extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MasterOfTheVeil.java b/Mage.Sets/src/mage/cards/m/MasterOfTheVeil.java
index 47969292318..5c9ba8708f3 100644
--- a/Mage.Sets/src/mage/cards/m/MasterOfTheVeil.java
+++ b/Mage.Sets/src/mage/cards/m/MasterOfTheVeil.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class MasterOfTheVeil extends CardImpl {
+public final class MasterOfTheVeil extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with a morph ability");
diff --git a/Mage.Sets/src/mage/cards/m/MasterOfTheWildHunt.java b/Mage.Sets/src/mage/cards/m/MasterOfTheWildHunt.java
index 943fa398efd..c6651cb91dd 100644
--- a/Mage.Sets/src/mage/cards/m/MasterOfTheWildHunt.java
+++ b/Mage.Sets/src/mage/cards/m/MasterOfTheWildHunt.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MasterOfTheWildHunt extends CardImpl {
+public final class MasterOfTheWildHunt extends CardImpl {
private static WolfToken wolfToken = new WolfToken();
diff --git a/Mage.Sets/src/mage/cards/m/MasterOfWaves.java b/Mage.Sets/src/mage/cards/m/MasterOfWaves.java
index 336583b0515..346bdc5437f 100644
--- a/Mage.Sets/src/mage/cards/m/MasterOfWaves.java
+++ b/Mage.Sets/src/mage/cards/m/MasterOfWaves.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.MasterOfWavesElementalToken;
*
* @author LevelX2
*/
-public class MasterOfWaves extends CardImpl {
+public final class MasterOfWaves extends CardImpl {
private static final FilterCreaturePermanent filterBoost = new FilterCreaturePermanent("Elemental creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MasterSplicer.java b/Mage.Sets/src/mage/cards/m/MasterSplicer.java
index 2d162a219ff..60d7af7484c 100644
--- a/Mage.Sets/src/mage/cards/m/MasterSplicer.java
+++ b/Mage.Sets/src/mage/cards/m/MasterSplicer.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.GolemToken;
*
* @author North, Loki
*/
-public class MasterSplicer extends CardImpl {
+public final class MasterSplicer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Golem creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MasterTheWay.java b/Mage.Sets/src/mage/cards/m/MasterTheWay.java
index 93573959a56..ec66f2a112e 100644
--- a/Mage.Sets/src/mage/cards/m/MasterTheWay.java
+++ b/Mage.Sets/src/mage/cards/m/MasterTheWay.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class MasterTheWay extends CardImpl {
+public final class MasterTheWay extends CardImpl {
public MasterTheWay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MasterThief.java b/Mage.Sets/src/mage/cards/m/MasterThief.java
index 897ed4d4c74..a61ab396bd8 100644
--- a/Mage.Sets/src/mage/cards/m/MasterThief.java
+++ b/Mage.Sets/src/mage/cards/m/MasterThief.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetArtifactPermanent;
/**
* @author Loki, JayDi85
*/
-public class MasterThief extends CardImpl {
+public final class MasterThief extends CardImpl {
public MasterThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MasterTransmuter.java b/Mage.Sets/src/mage/cards/m/MasterTransmuter.java
index c9e2b9359bf..c335ad0ad90 100644
--- a/Mage.Sets/src/mage/cards/m/MasterTransmuter.java
+++ b/Mage.Sets/src/mage/cards/m/MasterTransmuter.java
@@ -34,7 +34,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.ReturnToHandChosenControlledPermanentCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class MasterTransmuter extends CardImpl {
+public final class MasterTransmuter extends CardImpl {
public MasterTransmuter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{U}");
@@ -59,7 +59,7 @@ public class MasterTransmuter extends CardImpl {
this.toughness = new MageInt(2);
// {U}, {tap}, Return an artifact you control to its owner's hand: You may put an artifact card from your hand onto the battlefield.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutPermanentOnBattlefieldEffect(new FilterArtifactCard("an artifact card")), new ManaCostsImpl("{U}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutCardFromHandOntoBattlefieldEffect(new FilterArtifactCard("an artifact card")), new ManaCostsImpl("{U}"));
ability.addCost(new TapSourceCost());
ability.addCost(new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(new FilterControlledArtifactPermanent("an artifact"))));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/m/MasterTrinketeer.java b/Mage.Sets/src/mage/cards/m/MasterTrinketeer.java
index e91391e8b30..519f34001d7 100644
--- a/Mage.Sets/src/mage/cards/m/MasterTrinketeer.java
+++ b/Mage.Sets/src/mage/cards/m/MasterTrinketeer.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.ServoToken;
*
* @author fireshoes
*/
-public class MasterTrinketeer extends CardImpl {
+public final class MasterTrinketeer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Servo and Thopter creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MasterWarcraft.java b/Mage.Sets/src/mage/cards/m/MasterWarcraft.java
index a825bbebd2a..c1bd55883df 100644
--- a/Mage.Sets/src/mage/cards/m/MasterWarcraft.java
+++ b/Mage.Sets/src/mage/cards/m/MasterWarcraft.java
@@ -62,7 +62,7 @@ import mage.watchers.common.ChooseBlockersRedundancyWatcher;
*
* @author L_J
*/
-public class MasterWarcraft extends CardImpl {
+public final class MasterWarcraft extends CardImpl {
public MasterWarcraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R/W}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/m/MastermindsAcquisition.java b/Mage.Sets/src/mage/cards/m/MastermindsAcquisition.java
index a87eb4008e4..efbe3c9bcd8 100644
--- a/Mage.Sets/src/mage/cards/m/MastermindsAcquisition.java
+++ b/Mage.Sets/src/mage/cards/m/MastermindsAcquisition.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author L_J
*/
-public class MastermindsAcquisition extends CardImpl {
+public final class MastermindsAcquisition extends CardImpl {
public MastermindsAcquisition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MastersCall.java b/Mage.Sets/src/mage/cards/m/MastersCall.java
index 93458ac7484..b21054bd903 100644
--- a/Mage.Sets/src/mage/cards/m/MastersCall.java
+++ b/Mage.Sets/src/mage/cards/m/MastersCall.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.MyrToken;
*
* @author Loki
*/
-public class MastersCall extends CardImpl {
+public final class MastersCall extends CardImpl {
public MastersCall (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MasterworkOfIngenuity.java b/Mage.Sets/src/mage/cards/m/MasterworkOfIngenuity.java
index 7071b7734bf..387bd632a31 100644
--- a/Mage.Sets/src/mage/cards/m/MasterworkOfIngenuity.java
+++ b/Mage.Sets/src/mage/cards/m/MasterworkOfIngenuity.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class MasterworkOfIngenuity extends CardImpl {
+public final class MasterworkOfIngenuity extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("equipment");
diff --git a/Mage.Sets/src/mage/cards/m/MasteryOfTheUnseen.java b/Mage.Sets/src/mage/cards/m/MasteryOfTheUnseen.java
index 05fa9fc98b0..8cc1453a19b 100644
--- a/Mage.Sets/src/mage/cards/m/MasteryOfTheUnseen.java
+++ b/Mage.Sets/src/mage/cards/m/MasteryOfTheUnseen.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author LevelX2
*/
-public class MasteryOfTheUnseen extends CardImpl {
+public final class MasteryOfTheUnseen extends CardImpl {
public MasteryOfTheUnseen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/Masticore.java b/Mage.Sets/src/mage/cards/m/Masticore.java
index 313797ae404..0e63bcb24cd 100644
--- a/Mage.Sets/src/mage/cards/m/Masticore.java
+++ b/Mage.Sets/src/mage/cards/m/Masticore.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Masticore extends CardImpl {
+public final class Masticore extends CardImpl {
public Masticore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/m/MasumaroFirstToLive.java b/Mage.Sets/src/mage/cards/m/MasumaroFirstToLive.java
index ab9c354b35c..ab696f74ed2 100644
--- a/Mage.Sets/src/mage/cards/m/MasumaroFirstToLive.java
+++ b/Mage.Sets/src/mage/cards/m/MasumaroFirstToLive.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class MasumaroFirstToLive extends CardImpl {
+public final class MasumaroFirstToLive extends CardImpl {
public MasumaroFirstToLive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MatcaRioters.java b/Mage.Sets/src/mage/cards/m/MatcaRioters.java
index deea6569788..d0930972ba6 100644
--- a/Mage.Sets/src/mage/cards/m/MatcaRioters.java
+++ b/Mage.Sets/src/mage/cards/m/MatcaRioters.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class MatcaRioters extends CardImpl {
+public final class MatcaRioters extends CardImpl {
public MatcaRioters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java b/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java
index 2d403c01bd8..86a89577c7c 100644
--- a/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java
+++ b/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class MathasFiendSeeker extends CardImpl {
+public final class MathasFiendSeeker extends CardImpl {
private static final String rule = "For as long as that creature has a bounty counter on it, it has \"When this creature dies, each opponent draws a card and gains 2 life.\"";
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/m/MatsuTribeBirdstalker.java b/Mage.Sets/src/mage/cards/m/MatsuTribeBirdstalker.java
index 89f576e0b13..dc5a41ee497 100644
--- a/Mage.Sets/src/mage/cards/m/MatsuTribeBirdstalker.java
+++ b/Mage.Sets/src/mage/cards/m/MatsuTribeBirdstalker.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX
*/
-public class MatsuTribeBirdstalker extends CardImpl {
+public final class MatsuTribeBirdstalker extends CardImpl {
public MatsuTribeBirdstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MatsuTribeDecoy.java b/Mage.Sets/src/mage/cards/m/MatsuTribeDecoy.java
index 4a94eac3985..2be1c3a4ce3 100644
--- a/Mage.Sets/src/mage/cards/m/MatsuTribeDecoy.java
+++ b/Mage.Sets/src/mage/cards/m/MatsuTribeDecoy.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class MatsuTribeDecoy extends CardImpl {
+public final class MatsuTribeDecoy extends CardImpl {
public MatsuTribeDecoy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MatsuTribeSniper.java b/Mage.Sets/src/mage/cards/m/MatsuTribeSniper.java
index ec3a913052e..41e8b75c4df 100644
--- a/Mage.Sets/src/mage/cards/m/MatsuTribeSniper.java
+++ b/Mage.Sets/src/mage/cards/m/MatsuTribeSniper.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MatsuTribeSniper extends CardImpl {
+public final class MatsuTribeSniper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/m/MatterReshaper.java b/Mage.Sets/src/mage/cards/m/MatterReshaper.java
index 8a7f6aef6cb..ee99d0a1e89 100644
--- a/Mage.Sets/src/mage/cards/m/MatterReshaper.java
+++ b/Mage.Sets/src/mage/cards/m/MatterReshaper.java
@@ -29,7 +29,6 @@ package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
-import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.DiesTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -38,9 +37,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.CardsImpl;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.ComparisonType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterPermanentCard;
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
@@ -51,10 +50,10 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class MatterReshaper extends CardImpl {
+public final class MatterReshaper extends CardImpl {
public MatterReshaper(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{C}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{C}");
this.subtype.add(SubType.ELDRAZI);
this.power = new MageInt(3);
this.toughness = new MageInt(2);
@@ -89,22 +88,21 @@ class MatterReshaperEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
- MageObject sourceObject = game.getObject(source.getSourceId());
- if (controller != null && sourceObject != null && controller.getLibrary().hasCards()) {
+ if (controller != null) {
Card card = controller.getLibrary().getFromTop(game);
if (card == null) {
return false;
}
- controller.revealCards(sourceObject.getIdName(), new CardsImpl(card), game);
+ controller.revealCards(source, new CardsImpl(card), game);
FilterPermanentCard filter = new FilterPermanentCard("permanent card with converted mana cost 3 or less");
filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 4));
if (filter.match(card, game)) {
if (controller.chooseUse(Outcome.PutCardInPlay, "Put " + card.getName() + " onto the battlefield (otherwise put in hand)?", source, game)) {
- card.putOntoBattlefield(game, Zone.LIBRARY, source.getSourceId(), source.getControllerId(), false);
+ controller.moveCards(card, Zone.BATTLEFIELD, source, game);
return true;
}
}
- card.moveToZone(Zone.HAND, source.getSourceId(), game, false);
+ controller.moveCards(card, Zone.HAND, source, game);
return true;
}
return false;
diff --git a/Mage.Sets/src/mage/cards/m/MaulSplicer.java b/Mage.Sets/src/mage/cards/m/MaulSplicer.java
index 7477090f03d..23a9a8ab5d8 100644
--- a/Mage.Sets/src/mage/cards/m/MaulSplicer.java
+++ b/Mage.Sets/src/mage/cards/m/MaulSplicer.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.GolemToken;
*
* @author North
*/
-public class MaulSplicer extends CardImpl {
+public final class MaulSplicer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Golem creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MaulfistDoorbuster.java b/Mage.Sets/src/mage/cards/m/MaulfistDoorbuster.java
index 34fdba8e85e..9aed319f8fb 100644
--- a/Mage.Sets/src/mage/cards/m/MaulfistDoorbuster.java
+++ b/Mage.Sets/src/mage/cards/m/MaulfistDoorbuster.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MaulfistDoorbuster extends CardImpl {
+public final class MaulfistDoorbuster extends CardImpl {
public MaulfistDoorbuster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MaulfistRevolutionary.java b/Mage.Sets/src/mage/cards/m/MaulfistRevolutionary.java
index b580ca2f33f..8d51114f089 100644
--- a/Mage.Sets/src/mage/cards/m/MaulfistRevolutionary.java
+++ b/Mage.Sets/src/mage/cards/m/MaulfistRevolutionary.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetPermanentOrPlayer;
*
* @author fireshoes
*/
-public class MaulfistRevolutionary extends CardImpl {
+public final class MaulfistRevolutionary extends CardImpl {
public MaulfistRevolutionary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MaulfistSquad.java b/Mage.Sets/src/mage/cards/m/MaulfistSquad.java
index 21ba08c1b11..e9b67f720e8 100644
--- a/Mage.Sets/src/mage/cards/m/MaulfistSquad.java
+++ b/Mage.Sets/src/mage/cards/m/MaulfistSquad.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class MaulfistSquad extends CardImpl {
+public final class MaulfistSquad extends CardImpl {
public MaulfistSquad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MausoleumGuard.java b/Mage.Sets/src/mage/cards/m/MausoleumGuard.java
index c9534096cdb..8786c94ec12 100644
--- a/Mage.Sets/src/mage/cards/m/MausoleumGuard.java
+++ b/Mage.Sets/src/mage/cards/m/MausoleumGuard.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
/**
* @author nantuko
*/
-public class MausoleumGuard extends CardImpl {
+public final class MausoleumGuard extends CardImpl {
public MausoleumGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MausoleumHarpy.java b/Mage.Sets/src/mage/cards/m/MausoleumHarpy.java
index 58704cd78c9..1774d19fb3e 100644
--- a/Mage.Sets/src/mage/cards/m/MausoleumHarpy.java
+++ b/Mage.Sets/src/mage/cards/m/MausoleumHarpy.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class MausoleumHarpy extends CardImpl {
+public final class MausoleumHarpy extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/m/MausoleumTurnkey.java b/Mage.Sets/src/mage/cards/m/MausoleumTurnkey.java
index d703318cc36..0e9d579fcdc 100644
--- a/Mage.Sets/src/mage/cards/m/MausoleumTurnkey.java
+++ b/Mage.Sets/src/mage/cards/m/MausoleumTurnkey.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class MausoleumTurnkey extends CardImpl {
+public final class MausoleumTurnkey extends CardImpl {
public MausoleumTurnkey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java b/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java
index ccac2ee2810..bcecec8dd06 100644
--- a/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java
+++ b/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java
@@ -51,7 +51,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class MausoleumWanderer extends CardImpl {
+public final class MausoleumWanderer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another Spirit");
diff --git a/Mage.Sets/src/mage/cards/m/MaverickThopterist.java b/Mage.Sets/src/mage/cards/m/MaverickThopterist.java
index c405cc22886..9e7f49807ac 100644
--- a/Mage.Sets/src/mage/cards/m/MaverickThopterist.java
+++ b/Mage.Sets/src/mage/cards/m/MaverickThopterist.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author fireshoes
*/
-public class MaverickThopterist extends CardImpl {
+public final class MaverickThopterist extends CardImpl {
public MaverickThopterist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MavrenFeinDuskApostle.java b/Mage.Sets/src/mage/cards/m/MavrenFeinDuskApostle.java
index 5f0834f82b2..98597162bda 100644
--- a/Mage.Sets/src/mage/cards/m/MavrenFeinDuskApostle.java
+++ b/Mage.Sets/src/mage/cards/m/MavrenFeinDuskApostle.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.IxalanVampireToken;
*
* @author TheElk801
*/
-public class MavrenFeinDuskApostle extends CardImpl {
+public final class MavrenFeinDuskApostle extends CardImpl {
public MavrenFeinDuskApostle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MawOfKozilek.java b/Mage.Sets/src/mage/cards/m/MawOfKozilek.java
index 91cb05bedd0..69fdcd6cd68 100644
--- a/Mage.Sets/src/mage/cards/m/MawOfKozilek.java
+++ b/Mage.Sets/src/mage/cards/m/MawOfKozilek.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MawOfKozilek extends CardImpl {
+public final class MawOfKozilek extends CardImpl {
public MawOfKozilek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MawOfTheMire.java b/Mage.Sets/src/mage/cards/m/MawOfTheMire.java
index 80066c4ca32..a4491444d5c 100644
--- a/Mage.Sets/src/mage/cards/m/MawOfTheMire.java
+++ b/Mage.Sets/src/mage/cards/m/MawOfTheMire.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author North
*/
-public class MawOfTheMire extends CardImpl {
+public final class MawOfTheMire extends CardImpl {
public MawOfTheMire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MawOfTheObzedat.java b/Mage.Sets/src/mage/cards/m/MawOfTheObzedat.java
index 363a659746f..2a14cdad72b 100644
--- a/Mage.Sets/src/mage/cards/m/MawOfTheObzedat.java
+++ b/Mage.Sets/src/mage/cards/m/MawOfTheObzedat.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class MawOfTheObzedat extends CardImpl {
+public final class MawOfTheObzedat extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
diff --git a/Mage.Sets/src/mage/cards/m/Mawcor.java b/Mage.Sets/src/mage/cards/m/Mawcor.java
index 3c4a8311a12..4bc2aa4d47c 100644
--- a/Mage.Sets/src/mage/cards/m/Mawcor.java
+++ b/Mage.Sets/src/mage/cards/m/Mawcor.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class Mawcor extends CardImpl {
+public final class Mawcor extends CardImpl {
public Mawcor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MayaelTheAnima.java b/Mage.Sets/src/mage/cards/m/MayaelTheAnima.java
index 67b21639b51..d437004684a 100644
--- a/Mage.Sets/src/mage/cards/m/MayaelTheAnima.java
+++ b/Mage.Sets/src/mage/cards/m/MayaelTheAnima.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author North
*/
-public class MayaelTheAnima extends CardImpl {
+public final class MayaelTheAnima extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a creature card with power 5 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MayaelsAria.java b/Mage.Sets/src/mage/cards/m/MayaelsAria.java
index a107502ec4e..98f8ce4d1b6 100644
--- a/Mage.Sets/src/mage/cards/m/MayaelsAria.java
+++ b/Mage.Sets/src/mage/cards/m/MayaelsAria.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class MayaelsAria extends CardImpl {
+public final class MayaelsAria extends CardImpl {
public MayaelsAria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MayorOfAvabruck.java b/Mage.Sets/src/mage/cards/m/MayorOfAvabruck.java
index 4421d2dd961..129b1de2e77 100644
--- a/Mage.Sets/src/mage/cards/m/MayorOfAvabruck.java
+++ b/Mage.Sets/src/mage/cards/m/MayorOfAvabruck.java
@@ -52,7 +52,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North, noxx
*/
-public class MayorOfAvabruck extends CardImpl {
+public final class MayorOfAvabruck extends CardImpl {
private static final String ruleText = "Other Human creatures you control get +1/+1";
diff --git a/Mage.Sets/src/mage/cards/m/MazeAbomination.java b/Mage.Sets/src/mage/cards/m/MazeAbomination.java
index e32d4b53721..2264d6ffdda 100644
--- a/Mage.Sets/src/mage/cards/m/MazeAbomination.java
+++ b/Mage.Sets/src/mage/cards/m/MazeAbomination.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*/
-public class MazeAbomination extends CardImpl {
+public final class MazeAbomination extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Multicolored creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MazeBehemoth.java b/Mage.Sets/src/mage/cards/m/MazeBehemoth.java
index 4bd819dd2f9..83b6139b80a 100644
--- a/Mage.Sets/src/mage/cards/m/MazeBehemoth.java
+++ b/Mage.Sets/src/mage/cards/m/MazeBehemoth.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*/
-public class MazeBehemoth extends CardImpl {
+public final class MazeBehemoth extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Multicolored creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MazeGlider.java b/Mage.Sets/src/mage/cards/m/MazeGlider.java
index 485adfde53e..17a080e7180 100644
--- a/Mage.Sets/src/mage/cards/m/MazeGlider.java
+++ b/Mage.Sets/src/mage/cards/m/MazeGlider.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*/
-public class MazeGlider extends CardImpl {
+public final class MazeGlider extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Multicolored creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MazeOfIth.java b/Mage.Sets/src/mage/cards/m/MazeOfIth.java
index 218ad68f28e..509dcd6c975 100644
--- a/Mage.Sets/src/mage/cards/m/MazeOfIth.java
+++ b/Mage.Sets/src/mage/cards/m/MazeOfIth.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author Plopman
*/
-public class MazeOfIth extends CardImpl {
+public final class MazeOfIth extends CardImpl {
public MazeOfIth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MazeOfShadows.java b/Mage.Sets/src/mage/cards/m/MazeOfShadows.java
index bf79a397646..568fa807bdf 100644
--- a/Mage.Sets/src/mage/cards/m/MazeOfShadows.java
+++ b/Mage.Sets/src/mage/cards/m/MazeOfShadows.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author emerald000
*/
-public class MazeOfShadows extends CardImpl {
+public final class MazeOfShadows extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature with shadow");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MazeRusher.java b/Mage.Sets/src/mage/cards/m/MazeRusher.java
index fdffb934e00..bf2aec83220 100644
--- a/Mage.Sets/src/mage/cards/m/MazeRusher.java
+++ b/Mage.Sets/src/mage/cards/m/MazeRusher.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*/
-public class MazeRusher extends CardImpl {
+public final class MazeRusher extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Multicolored creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MazeSentinel.java b/Mage.Sets/src/mage/cards/m/MazeSentinel.java
index f3b2791b8e4..b63e5437250 100644
--- a/Mage.Sets/src/mage/cards/m/MazeSentinel.java
+++ b/Mage.Sets/src/mage/cards/m/MazeSentinel.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*/
-public class MazeSentinel extends CardImpl {
+public final class MazeSentinel extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Multicolored creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MazesEnd.java b/Mage.Sets/src/mage/cards/m/MazesEnd.java
index 456023057a0..67693adda80 100644
--- a/Mage.Sets/src/mage/cards/m/MazesEnd.java
+++ b/Mage.Sets/src/mage/cards/m/MazesEnd.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCardInLibrary;
* @author LevelX2
*/
-public class MazesEnd extends CardImpl {
+public final class MazesEnd extends CardImpl {
private static final FilterCard filterCard = new FilterCard("Gate card");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MazirekKraulDeathPriest.java b/Mage.Sets/src/mage/cards/m/MazirekKraulDeathPriest.java
index 1478de1d2e5..4cd787812e5 100644
--- a/Mage.Sets/src/mage/cards/m/MazirekKraulDeathPriest.java
+++ b/Mage.Sets/src/mage/cards/m/MazirekKraulDeathPriest.java
@@ -50,7 +50,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes
*/
-public class MazirekKraulDeathPriest extends CardImpl {
+public final class MazirekKraulDeathPriest extends CardImpl {
public MazirekKraulDeathPriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/Meadowboon.java b/Mage.Sets/src/mage/cards/m/Meadowboon.java
index 6579404a7db..e0fe96cab36 100644
--- a/Mage.Sets/src/mage/cards/m/Meadowboon.java
+++ b/Mage.Sets/src/mage/cards/m/Meadowboon.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class Meadowboon extends CardImpl {
+public final class Meadowboon extends CardImpl {
public Meadowboon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MeanderingRiver.java b/Mage.Sets/src/mage/cards/m/MeanderingRiver.java
index c7617c306ee..5d60a905a88 100644
--- a/Mage.Sets/src/mage/cards/m/MeanderingRiver.java
+++ b/Mage.Sets/src/mage/cards/m/MeanderingRiver.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class MeanderingRiver extends CardImpl {
+public final class MeanderingRiver extends CardImpl {
public MeanderingRiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MeanderingTowershell.java b/Mage.Sets/src/mage/cards/m/MeanderingTowershell.java
index 022073192cb..f071cb5628b 100644
--- a/Mage.Sets/src/mage/cards/m/MeanderingTowershell.java
+++ b/Mage.Sets/src/mage/cards/m/MeanderingTowershell.java
@@ -65,7 +65,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MeanderingTowershell extends CardImpl {
+public final class MeanderingTowershell extends CardImpl {
public MeanderingTowershell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MeasureOfWickedness.java b/Mage.Sets/src/mage/cards/m/MeasureOfWickedness.java
index bf76c20b51c..891f037fd16 100644
--- a/Mage.Sets/src/mage/cards/m/MeasureOfWickedness.java
+++ b/Mage.Sets/src/mage/cards/m/MeasureOfWickedness.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class MeasureOfWickedness extends CardImpl {
+public final class MeasureOfWickedness extends CardImpl {
private static final FilterCard filter = new FilterCard("another card");
diff --git a/Mage.Sets/src/mage/cards/m/MechanizedProduction.java b/Mage.Sets/src/mage/cards/m/MechanizedProduction.java
index a768b685b6f..2347204f2c3 100644
--- a/Mage.Sets/src/mage/cards/m/MechanizedProduction.java
+++ b/Mage.Sets/src/mage/cards/m/MechanizedProduction.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class MechanizedProduction extends CardImpl {
+public final class MechanizedProduction extends CardImpl {
public MechanizedProduction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MeddlingMage.java b/Mage.Sets/src/mage/cards/m/MeddlingMage.java
index 950f6f544d5..8238c49748f 100644
--- a/Mage.Sets/src/mage/cards/m/MeddlingMage.java
+++ b/Mage.Sets/src/mage/cards/m/MeddlingMage.java
@@ -50,7 +50,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Plopman
*/
-public class MeddlingMage extends CardImpl {
+public final class MeddlingMage extends CardImpl {
public MeddlingMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MedicineBag.java b/Mage.Sets/src/mage/cards/m/MedicineBag.java
index 34db6ffbc63..ef97492e974 100644
--- a/Mage.Sets/src/mage/cards/m/MedicineBag.java
+++ b/Mage.Sets/src/mage/cards/m/MedicineBag.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MedicineBag extends CardImpl {
+public final class MedicineBag extends CardImpl {
public MedicineBag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MedicineRunner.java b/Mage.Sets/src/mage/cards/m/MedicineRunner.java
index 2d1af0b1d1d..182c02066df 100644
--- a/Mage.Sets/src/mage/cards/m/MedicineRunner.java
+++ b/Mage.Sets/src/mage/cards/m/MedicineRunner.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class MedicineRunner extends CardImpl {
+public final class MedicineRunner extends CardImpl {
public MedicineRunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/m/Meditate.java b/Mage.Sets/src/mage/cards/m/Meditate.java
index b0e460e2858..136aa0561f2 100644
--- a/Mage.Sets/src/mage/cards/m/Meditate.java
+++ b/Mage.Sets/src/mage/cards/m/Meditate.java
@@ -42,7 +42,7 @@ import mage.game.turn.TurnMod;
*
* @author Plopman
*/
-public class Meditate extends CardImpl {
+public final class Meditate extends CardImpl {
public Meditate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MeditationPuzzle.java b/Mage.Sets/src/mage/cards/m/MeditationPuzzle.java
index fbb093144a1..6af38db890f 100644
--- a/Mage.Sets/src/mage/cards/m/MeditationPuzzle.java
+++ b/Mage.Sets/src/mage/cards/m/MeditationPuzzle.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class MeditationPuzzle extends CardImpl {
+public final class MeditationPuzzle extends CardImpl {
public MeditationPuzzle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MedomaiTheAgeless.java b/Mage.Sets/src/mage/cards/m/MedomaiTheAgeless.java
index 149db52cd17..dd8a7517cab 100644
--- a/Mage.Sets/src/mage/cards/m/MedomaiTheAgeless.java
+++ b/Mage.Sets/src/mage/cards/m/MedomaiTheAgeless.java
@@ -51,7 +51,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class MedomaiTheAgeless extends CardImpl {
+public final class MedomaiTheAgeless extends CardImpl {
public MedomaiTheAgeless(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/Meekstone.java b/Mage.Sets/src/mage/cards/m/Meekstone.java
index e04b460db7e..07e0718df75 100644
--- a/Mage.Sets/src/mage/cards/m/Meekstone.java
+++ b/Mage.Sets/src/mage/cards/m/Meekstone.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author Quercitron
*/
-public class Meekstone extends CardImpl {
+public final class Meekstone extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures with power 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/m/MeganticSliver.java b/Mage.Sets/src/mage/cards/m/MeganticSliver.java
index 959b101d214..0cabe733a32 100644
--- a/Mage.Sets/src/mage/cards/m/MeganticSliver.java
+++ b/Mage.Sets/src/mage/cards/m/MeganticSliver.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class MeganticSliver extends CardImpl {
+public final class MeganticSliver extends CardImpl {
public MeganticSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/Megatog.java b/Mage.Sets/src/mage/cards/m/Megatog.java
index 465793ce300..49a8054bdcb 100644
--- a/Mage.Sets/src/mage/cards/m/Megatog.java
+++ b/Mage.Sets/src/mage/cards/m/Megatog.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class Megatog extends CardImpl {
+public final class Megatog extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/m/Meglonoth.java b/Mage.Sets/src/mage/cards/m/Meglonoth.java
index f066f741e14..211caf3d24f 100644
--- a/Mage.Sets/src/mage/cards/m/Meglonoth.java
+++ b/Mage.Sets/src/mage/cards/m/Meglonoth.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class Meglonoth extends CardImpl {
+public final class Meglonoth extends CardImpl {
public Meglonoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/Megrim.java b/Mage.Sets/src/mage/cards/m/Megrim.java
index 3bcde5d89e3..1108d8d7287 100644
--- a/Mage.Sets/src/mage/cards/m/Megrim.java
+++ b/Mage.Sets/src/mage/cards/m/Megrim.java
@@ -39,7 +39,7 @@ import mage.constants.SetTargetPointer;
*
* @author Loki
*/
-public class Megrim extends CardImpl {
+public final class Megrim extends CardImpl {
public Megrim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MeishinTheMindCage.java b/Mage.Sets/src/mage/cards/m/MeishinTheMindCage.java
index 9a519ff7c9e..4452973a017 100644
--- a/Mage.Sets/src/mage/cards/m/MeishinTheMindCage.java
+++ b/Mage.Sets/src/mage/cards/m/MeishinTheMindCage.java
@@ -45,7 +45,7 @@ import mage.filter.StaticFilters;
*
* @author emerald000
*/
-public class MeishinTheMindCage extends CardImpl {
+public final class MeishinTheMindCage extends CardImpl {
public MeishinTheMindCage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/Melancholy.java b/Mage.Sets/src/mage/cards/m/Melancholy.java
index 069dbe20677..73301d6ab91 100644
--- a/Mage.Sets/src/mage/cards/m/Melancholy.java
+++ b/Mage.Sets/src/mage/cards/m/Melancholy.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Melancholy extends CardImpl {
+public final class Melancholy extends CardImpl {
public Melancholy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Melee.java b/Mage.Sets/src/mage/cards/m/Melee.java
index ac152d93f06..f28eba6c753 100644
--- a/Mage.Sets/src/mage/cards/m/Melee.java
+++ b/Mage.Sets/src/mage/cards/m/Melee.java
@@ -58,7 +58,7 @@ import mage.watchers.common.ChooseBlockersRedundancyWatcher;
*
* @author L_J
*/
-public class Melee extends CardImpl {
+public final class Melee extends CardImpl {
public Melee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MelekIzzetParagon.java b/Mage.Sets/src/mage/cards/m/MelekIzzetParagon.java
index 20be0a0c0b5..db0860935a9 100644
--- a/Mage.Sets/src/mage/cards/m/MelekIzzetParagon.java
+++ b/Mage.Sets/src/mage/cards/m/MelekIzzetParagon.java
@@ -55,7 +55,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class MelekIzzetParagon extends CardImpl {
+public final class MelekIzzetParagon extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card");
diff --git a/Mage.Sets/src/mage/cards/m/MelesseSpirit.java b/Mage.Sets/src/mage/cards/m/MelesseSpirit.java
index 5c30eaedfc4..58a9e6b67f1 100644
--- a/Mage.Sets/src/mage/cards/m/MelesseSpirit.java
+++ b/Mage.Sets/src/mage/cards/m/MelesseSpirit.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class MelesseSpirit extends CardImpl {
+public final class MelesseSpirit extends CardImpl {
public MelesseSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MeletisAstronomer.java b/Mage.Sets/src/mage/cards/m/MeletisAstronomer.java
index be245129c54..aad07aeddb2 100644
--- a/Mage.Sets/src/mage/cards/m/MeletisAstronomer.java
+++ b/Mage.Sets/src/mage/cards/m/MeletisAstronomer.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class MeletisAstronomer extends CardImpl {
+public final class MeletisAstronomer extends CardImpl {
private static final FilterCard filter = new FilterCard("an enchantment card");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MeletisCharlatan.java b/Mage.Sets/src/mage/cards/m/MeletisCharlatan.java
index 3e2491306ac..0a2bd9bf814 100644
--- a/Mage.Sets/src/mage/cards/m/MeletisCharlatan.java
+++ b/Mage.Sets/src/mage/cards/m/MeletisCharlatan.java
@@ -52,7 +52,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class MeletisCharlatan extends CardImpl {
+public final class MeletisCharlatan extends CardImpl {
public MeletisCharlatan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MeliraSylvokOutcast.java b/Mage.Sets/src/mage/cards/m/MeliraSylvokOutcast.java
index 9797459684f..9ecff9d59b0 100644
--- a/Mage.Sets/src/mage/cards/m/MeliraSylvokOutcast.java
+++ b/Mage.Sets/src/mage/cards/m/MeliraSylvokOutcast.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward
*/
-public class MeliraSylvokOutcast extends CardImpl {
+public final class MeliraSylvokOutcast extends CardImpl {
public MeliraSylvokOutcast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MelirasKeepers.java b/Mage.Sets/src/mage/cards/m/MelirasKeepers.java
index aab2edfbbcc..5750da54278 100644
--- a/Mage.Sets/src/mage/cards/m/MelirasKeepers.java
+++ b/Mage.Sets/src/mage/cards/m/MelirasKeepers.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MelirasKeepers extends CardImpl {
+public final class MelirasKeepers extends CardImpl {
public MelirasKeepers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MelokuTheCloudedMirror.java b/Mage.Sets/src/mage/cards/m/MelokuTheCloudedMirror.java
index 8267b1c40e0..f7a4f37ae76 100644
--- a/Mage.Sets/src/mage/cards/m/MelokuTheCloudedMirror.java
+++ b/Mage.Sets/src/mage/cards/m/MelokuTheCloudedMirror.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class MelokuTheCloudedMirror extends CardImpl {
+public final class MelokuTheCloudedMirror extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("land");
diff --git a/Mage.Sets/src/mage/cards/m/MeltTerrain.java b/Mage.Sets/src/mage/cards/m/MeltTerrain.java
index 59ec82d6a0e..c388497996f 100644
--- a/Mage.Sets/src/mage/cards/m/MeltTerrain.java
+++ b/Mage.Sets/src/mage/cards/m/MeltTerrain.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki
*/
-public class MeltTerrain extends CardImpl {
+public final class MeltTerrain extends CardImpl {
public MeltTerrain (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Meltdown.java b/Mage.Sets/src/mage/cards/m/Meltdown.java
index 64a0735658b..9d88e229ad5 100644
--- a/Mage.Sets/src/mage/cards/m/Meltdown.java
+++ b/Mage.Sets/src/mage/cards/m/Meltdown.java
@@ -41,7 +41,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class Meltdown extends CardImpl {
+public final class Meltdown extends CardImpl {
public Meltdown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Melting.java b/Mage.Sets/src/mage/cards/m/Melting.java
index c10d6610fa6..1a77a7ee688 100644
--- a/Mage.Sets/src/mage/cards/m/Melting.java
+++ b/Mage.Sets/src/mage/cards/m/Melting.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class Melting extends CardImpl {
+public final class Melting extends CardImpl {
public Melting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Memnarch.java b/Mage.Sets/src/mage/cards/m/Memnarch.java
index 504671d340b..be4dfc4acf1 100644
--- a/Mage.Sets/src/mage/cards/m/Memnarch.java
+++ b/Mage.Sets/src/mage/cards/m/Memnarch.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Algid
*/
-public class Memnarch extends CardImpl {
+public final class Memnarch extends CardImpl {
public Memnarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/m/Memnite.java b/Mage.Sets/src/mage/cards/m/Memnite.java
index 08d3fe32309..329b58fe274 100644
--- a/Mage.Sets/src/mage/cards/m/Memnite.java
+++ b/Mage.Sets/src/mage/cards/m/Memnite.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class Memnite extends CardImpl {
+public final class Memnite extends CardImpl {
public Memnite (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{0}");
diff --git a/Mage.Sets/src/mage/cards/m/MemorialToFolly.java b/Mage.Sets/src/mage/cards/m/MemorialToFolly.java
index be06bf802b7..a6309deb30c 100644
--- a/Mage.Sets/src/mage/cards/m/MemorialToFolly.java
+++ b/Mage.Sets/src/mage/cards/m/MemorialToFolly.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author Rystan
*/
-public class MemorialToFolly extends CardImpl {
+public final class MemorialToFolly extends CardImpl {
public MemorialToFolly(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/m/MemorialToGenius.java b/Mage.Sets/src/mage/cards/m/MemorialToGenius.java
index 116fff08771..219b3934b75 100644
--- a/Mage.Sets/src/mage/cards/m/MemorialToGenius.java
+++ b/Mage.Sets/src/mage/cards/m/MemorialToGenius.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
/**
* @author Rystan
*/
-public class MemorialToGenius extends CardImpl {
+public final class MemorialToGenius extends CardImpl {
public MemorialToGenius(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/m/MemorialToGlory.java b/Mage.Sets/src/mage/cards/m/MemorialToGlory.java
index fad86d99004..e384e556270 100644
--- a/Mage.Sets/src/mage/cards/m/MemorialToGlory.java
+++ b/Mage.Sets/src/mage/cards/m/MemorialToGlory.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.SoldierToken;
/**
* @author Rystan
*/
-public class MemorialToGlory extends CardImpl {
+public final class MemorialToGlory extends CardImpl {
public MemorialToGlory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/m/MemorialToUnity.java b/Mage.Sets/src/mage/cards/m/MemorialToUnity.java
index c84808ea2ae..c28c5581817 100644
--- a/Mage.Sets/src/mage/cards/m/MemorialToUnity.java
+++ b/Mage.Sets/src/mage/cards/m/MemorialToUnity.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterCreatureCard;
/**
* @author Rystan
*/
-public class MemorialToUnity extends CardImpl {
+public final class MemorialToUnity extends CardImpl {
public MemorialToUnity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/m/MemorialToWar.java b/Mage.Sets/src/mage/cards/m/MemorialToWar.java
index 11080da7e55..cd5a3c7eceb 100644
--- a/Mage.Sets/src/mage/cards/m/MemorialToWar.java
+++ b/Mage.Sets/src/mage/cards/m/MemorialToWar.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
/**
* @author Rystan
*/
-public class MemorialToWar extends CardImpl {
+public final class MemorialToWar extends CardImpl {
public MemorialToWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/m/Memoricide.java b/Mage.Sets/src/mage/cards/m/Memoricide.java
index 8b054b8c26f..8c9dc57c9c1 100644
--- a/Mage.Sets/src/mage/cards/m/Memoricide.java
+++ b/Mage.Sets/src/mage/cards/m/Memoricide.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Memoricide extends CardImpl {
+public final class Memoricide extends CardImpl {
public Memoricide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MemoryCrystal.java b/Mage.Sets/src/mage/cards/m/MemoryCrystal.java
index a1a0c9975ce..4989489fc06 100644
--- a/Mage.Sets/src/mage/cards/m/MemoryCrystal.java
+++ b/Mage.Sets/src/mage/cards/m/MemoryCrystal.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author spjspj
*/
-public class MemoryCrystal extends CardImpl {
+public final class MemoryCrystal extends CardImpl {
public MemoryCrystal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MemoryErosion.java b/Mage.Sets/src/mage/cards/m/MemoryErosion.java
index 041aebd6558..a9ed4f6a7b7 100644
--- a/Mage.Sets/src/mage/cards/m/MemoryErosion.java
+++ b/Mage.Sets/src/mage/cards/m/MemoryErosion.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class MemoryErosion extends CardImpl {
+public final class MemoryErosion extends CardImpl {
public MemoryErosion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MemoryJar.java b/Mage.Sets/src/mage/cards/m/MemoryJar.java
index 6fed56a6786..7281772c046 100644
--- a/Mage.Sets/src/mage/cards/m/MemoryJar.java
+++ b/Mage.Sets/src/mage/cards/m/MemoryJar.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class MemoryJar extends CardImpl {
+public final class MemoryJar extends CardImpl {
public MemoryJar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/m/MemoryLapse.java b/Mage.Sets/src/mage/cards/m/MemoryLapse.java
index 53cd6af16eb..dd9b0cf567b 100644
--- a/Mage.Sets/src/mage/cards/m/MemoryLapse.java
+++ b/Mage.Sets/src/mage/cards/m/MemoryLapse.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author magenoxx_at_gmail.com
*/
-public class MemoryLapse extends CardImpl {
+public final class MemoryLapse extends CardImpl {
public MemoryLapse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MemoryPlunder.java b/Mage.Sets/src/mage/cards/m/MemoryPlunder.java
index 7eea6a6dc00..fb1a87d3e7f 100644
--- a/Mage.Sets/src/mage/cards/m/MemoryPlunder.java
+++ b/Mage.Sets/src/mage/cards/m/MemoryPlunder.java
@@ -28,6 +28,7 @@
package mage.cards.m;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
@@ -46,9 +47,10 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
*
* @author LevelX2
*/
-public class MemoryPlunder extends CardImpl {
+public final class MemoryPlunder extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card from an opponent's graveyard");
+
static {
filter.add(Predicates.or(
new CardTypePredicate(CardType.INSTANT),
@@ -56,8 +58,7 @@ public class MemoryPlunder extends CardImpl {
}
public MemoryPlunder(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U/B}{U/B}{U/B}{U/B}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U/B}{U/B}{U/B}{U/B}");
// You may cast target instant or sorcery card from an opponent's graveyard without paying its mana cost.
this.getSpellAbility().addEffect(new MemoryPlunderEffect());
@@ -96,8 +97,8 @@ class MemoryPlunderEffect extends OneShotEffect {
Card card = game.getCard(getTargetPointer().getFirst(game, source));
if (card != null) {
Player player = game.getPlayer(source.getControllerId());
- if (player != null && player.chooseUse(Outcome.Benefit, "Cast " + card.getName() +" without paying cost?", source, game)) {
- player.cast(card.getSpellAbility(), game, true);
+ if (player != null && player.chooseUse(Outcome.Benefit, "Cast " + card.getName() + " without paying cost?", source, game)) {
+ player.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
return false;
diff --git a/Mage.Sets/src/mage/cards/m/MemorySluice.java b/Mage.Sets/src/mage/cards/m/MemorySluice.java
index 91749850180..f450f5d432c 100644
--- a/Mage.Sets/src/mage/cards/m/MemorySluice.java
+++ b/Mage.Sets/src/mage/cards/m/MemorySluice.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class MemorySluice extends CardImpl {
+public final class MemorySluice extends CardImpl {
public MemorySluice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U/B}");
diff --git a/Mage.Sets/src/mage/cards/m/MemorysJourney.java b/Mage.Sets/src/mage/cards/m/MemorysJourney.java
index 7ad033d924a..4baa330b60f 100644
--- a/Mage.Sets/src/mage/cards/m/MemorysJourney.java
+++ b/Mage.Sets/src/mage/cards/m/MemorysJourney.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author North
*/
-public class MemorysJourney extends CardImpl {
+public final class MemorysJourney extends CardImpl {
public MemorysJourney(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MenacingOgre.java b/Mage.Sets/src/mage/cards/m/MenacingOgre.java
index 09c4bb28ab6..eb151792781 100644
--- a/Mage.Sets/src/mage/cards/m/MenacingOgre.java
+++ b/Mage.Sets/src/mage/cards/m/MenacingOgre.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class MenacingOgre extends CardImpl {
+public final class MenacingOgre extends CardImpl {
public MenacingOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MenagerieLiberator.java b/Mage.Sets/src/mage/cards/m/MenagerieLiberator.java
index 51cdc5d9715..9bae200959e 100644
--- a/Mage.Sets/src/mage/cards/m/MenagerieLiberator.java
+++ b/Mage.Sets/src/mage/cards/m/MenagerieLiberator.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class MenagerieLiberator extends CardImpl {
+public final class MenagerieLiberator extends CardImpl {
public MenagerieLiberator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MendingHands.java b/Mage.Sets/src/mage/cards/m/MendingHands.java
index bc73ccb652d..0d4fabe26ba 100644
--- a/Mage.Sets/src/mage/cards/m/MendingHands.java
+++ b/Mage.Sets/src/mage/cards/m/MendingHands.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class MendingHands extends CardImpl {
+public final class MendingHands extends CardImpl {
public MendingHands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MendingTouch.java b/Mage.Sets/src/mage/cards/m/MendingTouch.java
index d2fde67c1cd..95e7cd5a10a 100644
--- a/Mage.Sets/src/mage/cards/m/MendingTouch.java
+++ b/Mage.Sets/src/mage/cards/m/MendingTouch.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
-public class MendingTouch extends CardImpl {
+public final class MendingTouch extends CardImpl {
public MendingTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MengHuoBarbarianKing.java b/Mage.Sets/src/mage/cards/m/MengHuoBarbarianKing.java
index 897d5f4ca42..a7e910bc5c1 100644
--- a/Mage.Sets/src/mage/cards/m/MengHuoBarbarianKing.java
+++ b/Mage.Sets/src/mage/cards/m/MengHuoBarbarianKing.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class MengHuoBarbarianKing extends CardImpl {
+public final class MengHuoBarbarianKing extends CardImpl {
private static final FilterCreaturePermanent filterGreen = new FilterCreaturePermanent("green creatures you control");
diff --git a/Mage.Sets/src/mage/cards/m/MengHuosHorde.java b/Mage.Sets/src/mage/cards/m/MengHuosHorde.java
index e5f5f4d578a..bb14caf56f4 100644
--- a/Mage.Sets/src/mage/cards/m/MengHuosHorde.java
+++ b/Mage.Sets/src/mage/cards/m/MengHuosHorde.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MengHuosHorde extends CardImpl {
+public final class MengHuosHorde extends CardImpl {
public MengHuosHorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MentalAgony.java b/Mage.Sets/src/mage/cards/m/MentalAgony.java
index 8755467b872..53993bb644b 100644
--- a/Mage.Sets/src/mage/cards/m/MentalAgony.java
+++ b/Mage.Sets/src/mage/cards/m/MentalAgony.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class MentalAgony extends CardImpl {
+public final class MentalAgony extends CardImpl {
public MentalAgony(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MentalDiscipline.java b/Mage.Sets/src/mage/cards/m/MentalDiscipline.java
index ac2a638baf4..743704ecff9 100644
--- a/Mage.Sets/src/mage/cards/m/MentalDiscipline.java
+++ b/Mage.Sets/src/mage/cards/m/MentalDiscipline.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class MentalDiscipline extends CardImpl {
+public final class MentalDiscipline extends CardImpl {
public MentalDiscipline(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MentalMisstep.java b/Mage.Sets/src/mage/cards/m/MentalMisstep.java
index 3cc65c185d3..45d54a2a58f 100644
--- a/Mage.Sets/src/mage/cards/m/MentalMisstep.java
+++ b/Mage.Sets/src/mage/cards/m/MentalMisstep.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class MentalMisstep extends CardImpl {
+public final class MentalMisstep extends CardImpl {
private static final FilterSpell FILTER = new FilterSpell("spell with converted mana cost 1");
diff --git a/Mage.Sets/src/mage/cards/m/MentalNote.java b/Mage.Sets/src/mage/cards/m/MentalNote.java
index 89678066451..876535ccb1d 100644
--- a/Mage.Sets/src/mage/cards/m/MentalNote.java
+++ b/Mage.Sets/src/mage/cards/m/MentalNote.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Quercitron
*/
-public class MentalNote extends CardImpl {
+public final class MentalNote extends CardImpl {
public MentalNote(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MentalVapors.java b/Mage.Sets/src/mage/cards/m/MentalVapors.java
index 96470e67328..1f35b59efe9 100644
--- a/Mage.Sets/src/mage/cards/m/MentalVapors.java
+++ b/Mage.Sets/src/mage/cards/m/MentalVapors.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class MentalVapors extends CardImpl {
+public final class MentalVapors extends CardImpl {
public MentalVapors (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MentorOfTheMeek.java b/Mage.Sets/src/mage/cards/m/MentorOfTheMeek.java
index eb781ffaaf0..70650ee4cdd 100644
--- a/Mage.Sets/src/mage/cards/m/MentorOfTheMeek.java
+++ b/Mage.Sets/src/mage/cards/m/MentorOfTheMeek.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
/**
* @author Loki
*/
-public class MentorOfTheMeek extends CardImpl {
+public final class MentorOfTheMeek extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/m/MephidrossVampire.java b/Mage.Sets/src/mage/cards/m/MephidrossVampire.java
index 0b0f9a53099..504e68bc528 100644
--- a/Mage.Sets/src/mage/cards/m/MephidrossVampire.java
+++ b/Mage.Sets/src/mage/cards/m/MephidrossVampire.java
@@ -48,7 +48,7 @@ import java.util.UUID;
/**
* @author jeffwadsworth
*/
-public class MephidrossVampire extends CardImpl {
+public final class MephidrossVampire extends CardImpl {
public MephidrossVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MephiticOoze.java b/Mage.Sets/src/mage/cards/m/MephiticOoze.java
index 80bb6e8de99..6318d492724 100644
--- a/Mage.Sets/src/mage/cards/m/MephiticOoze.java
+++ b/Mage.Sets/src/mage/cards/m/MephiticOoze.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class MephiticOoze extends CardImpl {
+public final class MephiticOoze extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
diff --git a/Mage.Sets/src/mage/cards/m/MerEkNightblade.java b/Mage.Sets/src/mage/cards/m/MerEkNightblade.java
index 0f7976eee82..8d7f922b0a4 100644
--- a/Mage.Sets/src/mage/cards/m/MerEkNightblade.java
+++ b/Mage.Sets/src/mage/cards/m/MerEkNightblade.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author emerald000
*/
-public class MerEkNightblade extends CardImpl {
+public final class MerEkNightblade extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/m/MercadianAtlas.java b/Mage.Sets/src/mage/cards/m/MercadianAtlas.java
new file mode 100644
index 00000000000..ebd0a9b9941
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/m/MercadianAtlas.java
@@ -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.m;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
+import mage.abilities.condition.Condition;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.watchers.common.PlayLandWatcher;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class MercadianAtlas extends CardImpl {
+
+ public MercadianAtlas(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
+
+ // At the beginning of your end step, if you didn't play a land this turn, you may draw a card.
+ this.addAbility(new BeginningOfEndStepTriggeredAbility(
+ Zone.BATTLEFIELD,
+ new DrawCardSourceControllerEffect(1),
+ TargetController.YOU,
+ MercadianAtlasCondition.instance,
+ true
+ ), new PlayLandWatcher());
+ }
+
+ public MercadianAtlas(final MercadianAtlas card) {
+ super(card);
+ }
+
+ @Override
+ public MercadianAtlas copy() {
+ return new MercadianAtlas(this);
+ }
+}
+
+enum MercadianAtlasCondition implements Condition {
+
+ instance;
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ PlayLandWatcher watcher = (PlayLandWatcher) game.getState().getWatchers().get(PlayLandWatcher.class.getSimpleName());
+ if (watcher != null) {
+ return !watcher.landPlayed(source.getControllerId());
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return "{this} is attacking";
+ }
+
+}
diff --git a/Mage.Sets/src/mage/cards/m/MercadianBazaar.java b/Mage.Sets/src/mage/cards/m/MercadianBazaar.java
index 6df8ce0ee45..559725bd7cf 100644
--- a/Mage.Sets/src/mage/cards/m/MercadianBazaar.java
+++ b/Mage.Sets/src/mage/cards/m/MercadianBazaar.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author anonymous
*/
-public class MercadianBazaar extends CardImpl {
+public final class MercadianBazaar extends CardImpl {
public MercadianBazaar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MercadiasDownfall.java b/Mage.Sets/src/mage/cards/m/MercadiasDownfall.java
index c905d973c03..ba06311cab1 100644
--- a/Mage.Sets/src/mage/cards/m/MercadiasDownfall.java
+++ b/Mage.Sets/src/mage/cards/m/MercadiasDownfall.java
@@ -1,112 +1,112 @@
-/*
- * 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.dynamicvalue.DynamicValue;
-import mage.abilities.dynamicvalue.common.StaticValue;
-import mage.abilities.effects.Effect;
-import mage.abilities.effects.common.continuous.BoostAllEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.SuperType;
-import mage.filter.common.FilterAttackingCreature;
-import mage.filter.common.FilterLandPermanent;
-import mage.filter.predicate.Predicates;
-import mage.filter.predicate.mageobject.SupertypePredicate;
-import mage.game.Game;
-import mage.game.combat.CombatGroup;
-import mage.game.permanent.Permanent;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class MercadiasDownfall extends CardImpl {
-
- private static String rule = "Each attacking creature gets +1/+0 until end of turn for each nonbasic land defending player controls";
-
- public MercadiasDownfall(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
-
- // Each attacking creature gets +1/+0 until end of turn for each nonbasic land defending player controls.
- this.getSpellAbility().addEffect(new BoostAllEffect(new DefendersNonBasicLandCount(), new StaticValue(0), Duration.EndOfTurn, new FilterAttackingCreature(), true, rule));
-
- }
-
- public MercadiasDownfall(final MercadiasDownfall card) {
- super(card);
- }
-
- @Override
- public MercadiasDownfall copy() {
- return new MercadiasDownfall(this);
- }
-
- class DefendersNonBasicLandCount implements DynamicValue {
-
- UUID defenderId;
-
- @Override
- public int calculate(Game game, Ability sourceAbility, Effect effect) {
- for (CombatGroup group : game.getCombat().getGroups()) {
- defenderId = group.getDefenderId();
- if (group.isDefenderIsPlaneswalker()) {
- Permanent permanent = game.getPermanent(defenderId);
- if (permanent != null) {
- defenderId = permanent.getControllerId();
- }
- }
- FilterLandPermanent filter = new FilterLandPermanent("nonbasic land");
- filter.add(Predicates.not(new SupertypePredicate(SuperType.BASIC)));
- System.out.println("The number of nonbasic lands is " + game.getBattlefield().countAll(filter, defenderId, game));
- return game.getBattlefield().countAll(filter, defenderId, game);
- }
- return 0;
- }
-
- @Override
- public DynamicValue copy() {
- return new DefendersNonBasicLandCount();
- }
-
- @Override
- public String toString() {
- return "X";
- }
-
- @Override
- public String getMessage() {
- return "the number of nonbasic lands defending player controls";
- }
- }
-
-}
+/*
+ * 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.dynamicvalue.DynamicValue;
+import mage.abilities.dynamicvalue.common.StaticValue;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.continuous.BoostAllEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SuperType;
+import mage.filter.common.FilterAttackingCreature;
+import mage.filter.common.FilterLandPermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.SupertypePredicate;
+import mage.game.Game;
+import mage.game.combat.CombatGroup;
+import mage.game.permanent.Permanent;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class MercadiasDownfall extends CardImpl {
+
+ private static String rule = "Each attacking creature gets +1/+0 until end of turn for each nonbasic land defending player controls";
+
+ public MercadiasDownfall(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
+
+ // Each attacking creature gets +1/+0 until end of turn for each nonbasic land defending player controls.
+ this.getSpellAbility().addEffect(new BoostAllEffect(new DefendersNonBasicLandCount(), new StaticValue(0), Duration.EndOfTurn, new FilterAttackingCreature(), true, rule));
+
+ }
+
+ public MercadiasDownfall(final MercadiasDownfall card) {
+ super(card);
+ }
+
+ @Override
+ public MercadiasDownfall copy() {
+ return new MercadiasDownfall(this);
+ }
+
+ class DefendersNonBasicLandCount implements DynamicValue {
+
+ UUID defenderId;
+
+ @Override
+ public int calculate(Game game, Ability sourceAbility, Effect effect) {
+ for (CombatGroup group : game.getCombat().getGroups()) {
+ defenderId = group.getDefenderId();
+ if (group.isDefenderIsPlaneswalker()) {
+ Permanent permanent = game.getPermanent(defenderId);
+ if (permanent != null) {
+ defenderId = permanent.getControllerId();
+ }
+ }
+ FilterLandPermanent filter = new FilterLandPermanent("nonbasic land");
+ filter.add(Predicates.not(new SupertypePredicate(SuperType.BASIC)));
+ System.out.println("The number of nonbasic lands is " + game.getBattlefield().countAll(filter, defenderId, game));
+ return game.getBattlefield().countAll(filter, defenderId, game);
+ }
+ return 0;
+ }
+
+ @Override
+ public DynamicValue copy() {
+ return new DefendersNonBasicLandCount();
+ }
+
+ @Override
+ public String toString() {
+ return "X";
+ }
+
+ @Override
+ public String getMessage() {
+ return "the number of nonbasic lands defending player controls";
+ }
+ }
+
+}
diff --git a/Mage.Sets/src/mage/cards/m/MercenaryInformer.java b/Mage.Sets/src/mage/cards/m/MercenaryInformer.java
index c2dbd980d7f..cea3ebb35d8 100644
--- a/Mage.Sets/src/mage/cards/m/MercenaryInformer.java
+++ b/Mage.Sets/src/mage/cards/m/MercenaryInformer.java
@@ -55,7 +55,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class MercenaryInformer extends CardImpl {
+public final class MercenaryInformer extends CardImpl {
private static final FilterObject filterBlack = new FilterStackObject("black spells or abilities from black sources");
private static final FilterPermanent filterMercenary = new FilterPermanent("nontoken Mercenary");
diff --git a/Mage.Sets/src/mage/cards/m/MercenaryKnight.java b/Mage.Sets/src/mage/cards/m/MercenaryKnight.java
index 38bcf0468d1..3d5e16d312a 100644
--- a/Mage.Sets/src/mage/cards/m/MercenaryKnight.java
+++ b/Mage.Sets/src/mage/cards/m/MercenaryKnight.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
* @author LoneFox
*/
-public class MercenaryKnight extends CardImpl {
+public final class MercenaryKnight extends CardImpl {
public MercenaryKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MerchantOfSecrets.java b/Mage.Sets/src/mage/cards/m/MerchantOfSecrets.java
index 82334ff2de3..242b682a1d8 100644
--- a/Mage.Sets/src/mage/cards/m/MerchantOfSecrets.java
+++ b/Mage.Sets/src/mage/cards/m/MerchantOfSecrets.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class MerchantOfSecrets extends CardImpl {
+public final class MerchantOfSecrets extends CardImpl {
public MerchantOfSecrets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerchantScroll.java b/Mage.Sets/src/mage/cards/m/MerchantScroll.java
index 3b161bc4a9a..4c62c1fdc92 100644
--- a/Mage.Sets/src/mage/cards/m/MerchantScroll.java
+++ b/Mage.Sets/src/mage/cards/m/MerchantScroll.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class MerchantScroll extends CardImpl {
+public final class MerchantScroll extends CardImpl {
private static final FilterCard filter = new FilterCard("blue instant card");
diff --git a/Mage.Sets/src/mage/cards/m/MerchantShip.java b/Mage.Sets/src/mage/cards/m/MerchantShip.java
index 9eeffdf3582..79b57199edd 100644
--- a/Mage.Sets/src/mage/cards/m/MerchantShip.java
+++ b/Mage.Sets/src/mage/cards/m/MerchantShip.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author LoneFox
*/
-public class MerchantShip extends CardImpl {
+public final class MerchantShip extends CardImpl {
public MerchantShip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerchantsDockhand.java b/Mage.Sets/src/mage/cards/m/MerchantsDockhand.java
index 16dde61bb96..4fdadade1a4 100644
--- a/Mage.Sets/src/mage/cards/m/MerchantsDockhand.java
+++ b/Mage.Sets/src/mage/cards/m/MerchantsDockhand.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class MerchantsDockhand extends CardImpl {
+public final class MerchantsDockhand extends CardImpl {
public MerchantsDockhand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/m/MercilessEternal.java b/Mage.Sets/src/mage/cards/m/MercilessEternal.java
index 1cbe44f6bdf..77463cdba46 100644
--- a/Mage.Sets/src/mage/cards/m/MercilessEternal.java
+++ b/Mage.Sets/src/mage/cards/m/MercilessEternal.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MercilessEternal extends CardImpl {
+public final class MercilessEternal extends CardImpl {
public MercilessEternal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MercilessEviction.java b/Mage.Sets/src/mage/cards/m/MercilessEviction.java
index bedb27519bc..c94612a38e8 100644
--- a/Mage.Sets/src/mage/cards/m/MercilessEviction.java
+++ b/Mage.Sets/src/mage/cards/m/MercilessEviction.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterPlaneswalkerPermanent;
*
* @author LevelX2
*/
-public class MercilessEviction extends CardImpl {
+public final class MercilessEviction extends CardImpl {
public MercilessEviction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MercilessExecutioner.java b/Mage.Sets/src/mage/cards/m/MercilessExecutioner.java
index 4c69f745604..bd88fc5e9e9 100644
--- a/Mage.Sets/src/mage/cards/m/MercilessExecutioner.java
+++ b/Mage.Sets/src/mage/cards/m/MercilessExecutioner.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class MercilessExecutioner extends CardImpl {
+public final class MercilessExecutioner extends CardImpl {
public MercilessExecutioner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MercilessJavelineer.java b/Mage.Sets/src/mage/cards/m/MercilessJavelineer.java
index b88554face4..ada6cde61ab 100644
--- a/Mage.Sets/src/mage/cards/m/MercilessJavelineer.java
+++ b/Mage.Sets/src/mage/cards/m/MercilessJavelineer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class MercilessJavelineer extends CardImpl {
+public final class MercilessJavelineer extends CardImpl {
public MercilessJavelineer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MercilessPredator.java b/Mage.Sets/src/mage/cards/m/MercilessPredator.java
index d2a9c9e57d9..0405faeabb0 100644
--- a/Mage.Sets/src/mage/cards/m/MercilessPredator.java
+++ b/Mage.Sets/src/mage/cards/m/MercilessPredator.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class MercilessPredator extends CardImpl {
+public final class MercilessPredator extends CardImpl {
public MercilessPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/m/MercilessResolve.java b/Mage.Sets/src/mage/cards/m/MercilessResolve.java
index 92650029dc1..19668c9b506 100644
--- a/Mage.Sets/src/mage/cards/m/MercilessResolve.java
+++ b/Mage.Sets/src/mage/cards/m/MercilessResolve.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class MercilessResolve extends CardImpl {
+public final class MercilessResolve extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a creature or land");
diff --git a/Mage.Sets/src/mage/cards/m/MercurialChemister.java b/Mage.Sets/src/mage/cards/m/MercurialChemister.java
index 0e3963e2990..2b8e9dc7eaa 100644
--- a/Mage.Sets/src/mage/cards/m/MercurialChemister.java
+++ b/Mage.Sets/src/mage/cards/m/MercurialChemister.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MercurialChemister extends CardImpl {
+public final class MercurialChemister extends CardImpl {
public MercurialChemister(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MercurialGeists.java b/Mage.Sets/src/mage/cards/m/MercurialGeists.java
index 56881522c5c..510b55bab81 100644
--- a/Mage.Sets/src/mage/cards/m/MercurialGeists.java
+++ b/Mage.Sets/src/mage/cards/m/MercurialGeists.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class MercurialGeists extends CardImpl {
+public final class MercurialGeists extends CardImpl {
public MercurialGeists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MercurialKite.java b/Mage.Sets/src/mage/cards/m/MercurialKite.java
index c359ce3197c..664626ae369 100644
--- a/Mage.Sets/src/mage/cards/m/MercurialKite.java
+++ b/Mage.Sets/src/mage/cards/m/MercurialKite.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Poddo
*/
-public class MercurialKite extends CardImpl {
+public final class MercurialKite extends CardImpl {
public MercurialKite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MercurialPretender.java b/Mage.Sets/src/mage/cards/m/MercurialPretender.java
index c6a27793f5f..80fe94e5ec3 100644
--- a/Mage.Sets/src/mage/cards/m/MercurialPretender.java
+++ b/Mage.Sets/src/mage/cards/m/MercurialPretender.java
@@ -47,7 +47,7 @@ import mage.util.functions.AbilityApplier;
*
* @author LevelX2
*/
-public class MercurialPretender extends CardImpl {
+public final class MercurialPretender extends CardImpl {
private static final String effectText = "as a copy of any creature you control except it gains \"{2}{U}{U}: Return this creature to its owner's hand.\"";
diff --git a/Mage.Sets/src/mage/cards/m/MercyKilling.java b/Mage.Sets/src/mage/cards/m/MercyKilling.java
index e1c5686fa65..137a115ed9e 100644
--- a/Mage.Sets/src/mage/cards/m/MercyKilling.java
+++ b/Mage.Sets/src/mage/cards/m/MercyKilling.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author duncant
*/
-public class MercyKilling extends CardImpl {
+public final class MercyKilling extends CardImpl {
public MercyKilling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/m/MerenOfClanNelToth.java b/Mage.Sets/src/mage/cards/m/MerenOfClanNelToth.java
index 2cf595f639b..d91b240e437 100644
--- a/Mage.Sets/src/mage/cards/m/MerenOfClanNelToth.java
+++ b/Mage.Sets/src/mage/cards/m/MerenOfClanNelToth.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class MerenOfClanNelToth extends CardImpl {
+public final class MerenOfClanNelToth extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkAssassin.java b/Mage.Sets/src/mage/cards/m/MerfolkAssassin.java
index 55d8aa9907e..e91dbca841c 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkAssassin.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkAssassin.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class MerfolkAssassin extends CardImpl {
+public final class MerfolkAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with islandwalk");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkBranchwalker.java b/Mage.Sets/src/mage/cards/m/MerfolkBranchwalker.java
index 320bf1fe585..8664a21aced 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkBranchwalker.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkBranchwalker.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class MerfolkBranchwalker extends CardImpl {
+public final class MerfolkBranchwalker extends CardImpl {
public MerfolkBranchwalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkLooter.java b/Mage.Sets/src/mage/cards/m/MerfolkLooter.java
index 1021632cb2b..d1192113e95 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkLooter.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkLooter.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class MerfolkLooter extends CardImpl {
+public final class MerfolkLooter extends CardImpl {
public MerfolkLooter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkMesmerist.java b/Mage.Sets/src/mage/cards/m/MerfolkMesmerist.java
index ebdee8fb46e..a2dfaef4970 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkMesmerist.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkMesmerist.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
/**
* @author Loki
*/
-public class MerfolkMesmerist extends CardImpl {
+public final class MerfolkMesmerist extends CardImpl {
public MerfolkMesmerist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkMistbinder.java b/Mage.Sets/src/mage/cards/m/MerfolkMistbinder.java
index 9b58c8dc889..14337b9e7f7 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkMistbinder.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkMistbinder.java
@@ -1,78 +1,78 @@
-/*
- * 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.MageInt;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.effects.common.continuous.BoostAllEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.SubType;
-import mage.constants.TargetController;
-import mage.constants.Zone;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.mageobject.SubtypePredicate;
-import mage.filter.predicate.permanent.ControllerPredicate;
-
-/**
- *
- * @author LevelX2
- */
-public class MerfolkMistbinder extends CardImpl {
-
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk you control");
-
- static {
- filter.add(new SubtypePredicate(SubType.MERFOLK));
- filter.add(new ControllerPredicate(TargetController.YOU));
- }
-
- public MerfolkMistbinder(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{U}");
-
- this.subtype.add(SubType.MERFOLK);
- this.subtype.add(SubType.SHAMAN);
- this.power = new MageInt(2);
- this.toughness = new MageInt(2);
-
- // Other Merfolk you control get +1/+1.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
- }
-
- public MerfolkMistbinder(final MerfolkMistbinder card) {
- super(card);
- }
-
- @Override
- public MerfolkMistbinder copy() {
- return new MerfolkMistbinder(this);
- }
-}
+/*
+ * 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.MageInt;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.continuous.BoostAllEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.filter.predicate.permanent.ControllerPredicate;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class MerfolkMistbinder extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk you control");
+
+ static {
+ filter.add(new SubtypePredicate(SubType.MERFOLK));
+ filter.add(new ControllerPredicate(TargetController.YOU));
+ }
+
+ public MerfolkMistbinder(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{U}");
+
+ this.subtype.add(SubType.MERFOLK);
+ this.subtype.add(SubType.SHAMAN);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Other Merfolk you control get +1/+1.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
+ }
+
+ public MerfolkMistbinder(final MerfolkMistbinder card) {
+ super(card);
+ }
+
+ @Override
+ public MerfolkMistbinder copy() {
+ return new MerfolkMistbinder(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkObserver.java b/Mage.Sets/src/mage/cards/m/MerfolkObserver.java
index 09e49ff9dc3..f45c4bb6d32 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkObserver.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkObserver.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class MerfolkObserver extends CardImpl {
+public final class MerfolkObserver extends CardImpl {
public MerfolkObserver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkOfTheDepths.java b/Mage.Sets/src/mage/cards/m/MerfolkOfTheDepths.java
index f477278b988..28d6bc9634f 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkOfTheDepths.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkOfTheDepths.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class MerfolkOfTheDepths extends CardImpl {
+public final class MerfolkOfTheDepths extends CardImpl {
public MerfolkOfTheDepths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G/U}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkOfThePearlTrident.java b/Mage.Sets/src/mage/cards/m/MerfolkOfThePearlTrident.java
index 65d0fa53ae8..2b121859bf2 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkOfThePearlTrident.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkOfThePearlTrident.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MerfolkOfThePearlTrident extends CardImpl {
+public final class MerfolkOfThePearlTrident extends CardImpl {
public MerfolkOfThePearlTrident(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkRaiders.java b/Mage.Sets/src/mage/cards/m/MerfolkRaiders.java
index 09e408b51b5..8aa12e06aa6 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkRaiders.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkRaiders.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MerfolkRaiders extends CardImpl {
+public final class MerfolkRaiders extends CardImpl {
public MerfolkRaiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkSeastalkers.java b/Mage.Sets/src/mage/cards/m/MerfolkSeastalkers.java
index c196bd64ffb..9bb737b52dd 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkSeastalkers.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkSeastalkers.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MerfolkSeastalkers extends CardImpl {
+public final class MerfolkSeastalkers extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkSeer.java b/Mage.Sets/src/mage/cards/m/MerfolkSeer.java
index 7dffc90a663..6830bdc4877 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkSeer.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkSeer.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class MerfolkSeer extends CardImpl {
+public final class MerfolkSeer extends CardImpl {
public MerfolkSeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkSkyscout.java b/Mage.Sets/src/mage/cards/m/MerfolkSkyscout.java
index d803753ff8a..ce59c225a0f 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkSkyscout.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkSkyscout.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class MerfolkSkyscout extends CardImpl {
+public final class MerfolkSkyscout extends CardImpl {
public MerfolkSkyscout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java b/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java
index 7b21cbf33a6..9da677f0356 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MerfolkSovereign extends CardImpl {
+public final class MerfolkSovereign extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Merfolk creatures");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Merfolk creature");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkSpy.java b/Mage.Sets/src/mage/cards/m/MerfolkSpy.java
index 30a61f7748f..1871fa1cf36 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkSpy.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkSpy.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MerfolkSpy extends CardImpl {
+public final class MerfolkSpy extends CardImpl {
public MerfolkSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkThaumaturgist.java b/Mage.Sets/src/mage/cards/m/MerfolkThaumaturgist.java
index 7b6c0335683..0d12d490ed2 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkThaumaturgist.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkThaumaturgist.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class MerfolkThaumaturgist extends CardImpl {
+public final class MerfolkThaumaturgist extends CardImpl {
public MerfolkThaumaturgist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkTraders.java b/Mage.Sets/src/mage/cards/m/MerfolkTraders.java
index 394e3dfdd59..5e794fb7641 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkTraders.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkTraders.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class MerfolkTraders extends CardImpl {
+public final class MerfolkTraders extends CardImpl {
public MerfolkTraders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkTrickster.java b/Mage.Sets/src/mage/cards/m/MerfolkTrickster.java
index 25fd7a9186b..2b5e28f651e 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkTrickster.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkTrickster.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author TheElk801
*/
-public class MerfolkTrickster extends CardImpl {
+public final class MerfolkTrickster extends CardImpl {
public MerfolkTrickster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkWayfinder.java b/Mage.Sets/src/mage/cards/m/MerfolkWayfinder.java
index 0c5561d7c53..ac103ac0109 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkWayfinder.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkWayfinder.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class MerfolkWayfinder extends CardImpl {
+public final class MerfolkWayfinder extends CardImpl {
private static final FilterCard filter = new FilterCard("all Island cards");
diff --git a/Mage.Sets/src/mage/cards/m/MeriekeRiBerit.java b/Mage.Sets/src/mage/cards/m/MeriekeRiBerit.java
index 5e9ead3e467..0e7e9333f12 100644
--- a/Mage.Sets/src/mage/cards/m/MeriekeRiBerit.java
+++ b/Mage.Sets/src/mage/cards/m/MeriekeRiBerit.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class MeriekeRiBerit extends CardImpl {
+public final class MeriekeRiBerit extends CardImpl {
public MeriekeRiBerit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MerrowBonegnawer.java b/Mage.Sets/src/mage/cards/m/MerrowBonegnawer.java
index ed50927b511..714e10bd923 100644
--- a/Mage.Sets/src/mage/cards/m/MerrowBonegnawer.java
+++ b/Mage.Sets/src/mage/cards/m/MerrowBonegnawer.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class MerrowBonegnawer extends CardImpl {
+public final class MerrowBonegnawer extends CardImpl {
private UUID exileId = UUID.randomUUID();
diff --git a/Mage.Sets/src/mage/cards/m/MerrowCommerce.java b/Mage.Sets/src/mage/cards/m/MerrowCommerce.java
index 6bd4989dbe8..f8592cd9f95 100644
--- a/Mage.Sets/src/mage/cards/m/MerrowCommerce.java
+++ b/Mage.Sets/src/mage/cards/m/MerrowCommerce.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class MerrowCommerce extends CardImpl {
+public final class MerrowCommerce extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Merfolk you control");
diff --git a/Mage.Sets/src/mage/cards/m/MerrowGrimeblotter.java b/Mage.Sets/src/mage/cards/m/MerrowGrimeblotter.java
index 268d6a58f4a..7e18efa0d3a 100644
--- a/Mage.Sets/src/mage/cards/m/MerrowGrimeblotter.java
+++ b/Mage.Sets/src/mage/cards/m/MerrowGrimeblotter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class MerrowGrimeblotter extends CardImpl {
+public final class MerrowGrimeblotter extends CardImpl {
public MerrowGrimeblotter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/m/MerrowHarbinger.java b/Mage.Sets/src/mage/cards/m/MerrowHarbinger.java
index ca4fb5ddf9f..3621c999d5f 100644
--- a/Mage.Sets/src/mage/cards/m/MerrowHarbinger.java
+++ b/Mage.Sets/src/mage/cards/m/MerrowHarbinger.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
* @author LoneFox
*/
-public class MerrowHarbinger extends CardImpl {
+public final class MerrowHarbinger extends CardImpl {
static final FilterCard filter = new FilterCard("Merfolk card");
diff --git a/Mage.Sets/src/mage/cards/m/MerrowLevitator.java b/Mage.Sets/src/mage/cards/m/MerrowLevitator.java
index aff356768db..7a790c57893 100644
--- a/Mage.Sets/src/mage/cards/m/MerrowLevitator.java
+++ b/Mage.Sets/src/mage/cards/m/MerrowLevitator.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MerrowLevitator extends CardImpl {
+public final class MerrowLevitator extends CardImpl {
private static final FilterSpell filterBlueSpell = new FilterSpell("a blue spell");
diff --git a/Mage.Sets/src/mage/cards/m/MerrowReejerey.java b/Mage.Sets/src/mage/cards/m/MerrowReejerey.java
index c08ec64252a..f624a7348cd 100644
--- a/Mage.Sets/src/mage/cards/m/MerrowReejerey.java
+++ b/Mage.Sets/src/mage/cards/m/MerrowReejerey.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author jonubuu
*/
-public class MerrowReejerey extends CardImpl {
+public final class MerrowReejerey extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Merfolk creatures you control");
private static final FilterSpell filter2 = new FilterSpell("Merfolk spell");
diff --git a/Mage.Sets/src/mage/cards/m/MerrowWavebreakers.java b/Mage.Sets/src/mage/cards/m/MerrowWavebreakers.java
index f891255496b..486bf93674e 100644
--- a/Mage.Sets/src/mage/cards/m/MerrowWavebreakers.java
+++ b/Mage.Sets/src/mage/cards/m/MerrowWavebreakers.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
* @author jeffwadsworth
*/
-public class MerrowWavebreakers extends CardImpl {
+public final class MerrowWavebreakers extends CardImpl {
public MerrowWavebreakers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MerrowWitsniper.java b/Mage.Sets/src/mage/cards/m/MerrowWitsniper.java
index ba984228c47..956bfcd577e 100644
--- a/Mage.Sets/src/mage/cards/m/MerrowWitsniper.java
+++ b/Mage.Sets/src/mage/cards/m/MerrowWitsniper.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class MerrowWitsniper extends CardImpl {
+public final class MerrowWitsniper extends CardImpl {
public MerrowWitsniper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/Merseine.java b/Mage.Sets/src/mage/cards/m/Merseine.java
index f9a7ffb438c..a9201617552 100644
--- a/Mage.Sets/src/mage/cards/m/Merseine.java
+++ b/Mage.Sets/src/mage/cards/m/Merseine.java
@@ -33,9 +33,9 @@ import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.SourceHasCounterCondition;
-import mage.abilities.decorator.ConditionalContinuousRuleModifyingEffect;
import mage.abilities.costs.Cost;
import mage.abilities.costs.CostImpl;
+import mage.abilities.decorator.ConditionalContinuousRuleModifyingEffect;
import mage.abilities.effects.Effect;
import mage.abilities.effects.Effects;
import mage.abilities.effects.common.AttachEffect;
@@ -53,13 +53,13 @@ import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
/**
- *
+ *
* @author L_J
*/
-public class Merseine extends CardImpl {
+public final class Merseine extends CardImpl {
public Merseine(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
this.subtype.add(SubType.AURA);
// Enchant creature
@@ -74,9 +74,9 @@ public class Merseine extends CardImpl {
this.addAbility(new EntersBattlefieldAbility(effect));
// Enchanted creature doesn't untap during its controller's untap step if Merseine has a net counter on it.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousRuleModifyingEffect(new DontUntapInControllersUntapStepEnchantedEffect(),
- new SourceHasCounterCondition(CounterType.NET)).setText("Enchanted creature doesn't untap during its controller's untap step if Merseine has a net counter on it")));
-
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousRuleModifyingEffect(new DontUntapInControllersUntapStepEnchantedEffect(),
+ new SourceHasCounterCondition(CounterType.NET)).setText("Enchanted creature doesn't untap during its controller's untap step if Merseine has a net counter on it")));
+
// Pay enchanted creature's mana cost: Remove a net counter from Merseine. Any player may activate this ability, but only if he or she controls the enchanted creature.
SimpleActivatedAbility ability = new MerseineActivatedAbility();
ability.setMayActivate(TargetController.ANY);
@@ -94,7 +94,7 @@ public class Merseine extends CardImpl {
}
class MerseineActivatedAbility extends SimpleActivatedAbility {
-
+
public MerseineActivatedAbility() {
super(Zone.BATTLEFIELD, new RemoveCounterSourceEffect(CounterType.NET.createInstance()), new MerseineCost());
}
@@ -109,7 +109,7 @@ class MerseineActivatedAbility extends SimpleActivatedAbility {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
Permanent sourcePermanent = game.getBattlefield().getPermanent(this.getSourceId());
if (sourcePermanent != null) {
Permanent attachedTo = game.getPermanent(sourcePermanent.getAttachedTo());
@@ -117,7 +117,7 @@ class MerseineActivatedAbility extends SimpleActivatedAbility {
return super.canActivate(attachedTo.getControllerId(), game);
}
}
- return false;
+ return ActivationStatus.getFalse();
}
@Override
diff --git a/Mage.Sets/src/mage/cards/m/MesaEnchantress.java b/Mage.Sets/src/mage/cards/m/MesaEnchantress.java
index 36b50680fd3..97f07d0eb49 100644
--- a/Mage.Sets/src/mage/cards/m/MesaEnchantress.java
+++ b/Mage.Sets/src/mage/cards/m/MesaEnchantress.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author North
*/
-public class MesaEnchantress extends CardImpl {
+public final class MesaEnchantress extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/m/MesaFalcon.java b/Mage.Sets/src/mage/cards/m/MesaFalcon.java
index 0cf71e97af1..7f1a7d2753d 100644
--- a/Mage.Sets/src/mage/cards/m/MesaFalcon.java
+++ b/Mage.Sets/src/mage/cards/m/MesaFalcon.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class MesaFalcon extends CardImpl {
+public final class MesaFalcon extends CardImpl {
public MesaFalcon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MesaPegasus.java b/Mage.Sets/src/mage/cards/m/MesaPegasus.java
index f7cfb97564f..0656991c11a 100644
--- a/Mage.Sets/src/mage/cards/m/MesaPegasus.java
+++ b/Mage.Sets/src/mage/cards/m/MesaPegasus.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class MesaPegasus extends CardImpl {
+public final class MesaPegasus extends CardImpl {
public MesaPegasus (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MesaUnicorn.java b/Mage.Sets/src/mage/cards/m/MesaUnicorn.java
index 13acadd65a7..9808a648017 100644
--- a/Mage.Sets/src/mage/cards/m/MesaUnicorn.java
+++ b/Mage.Sets/src/mage/cards/m/MesaUnicorn.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class MesaUnicorn extends CardImpl {
+public final class MesaUnicorn extends CardImpl {
public MesaUnicorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MesmericFiend.java b/Mage.Sets/src/mage/cards/m/MesmericFiend.java
index 17d7cc9c73e..6d1134a3b20 100644
--- a/Mage.Sets/src/mage/cards/m/MesmericFiend.java
+++ b/Mage.Sets/src/mage/cards/m/MesmericFiend.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class MesmericFiend extends CardImpl {
+public final class MesmericFiend extends CardImpl {
public MesmericFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MesmericOrb.java b/Mage.Sets/src/mage/cards/m/MesmericOrb.java
index 274c8689499..6a66f988259 100644
--- a/Mage.Sets/src/mage/cards/m/MesmericOrb.java
+++ b/Mage.Sets/src/mage/cards/m/MesmericOrb.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class MesmericOrb extends CardImpl {
+public final class MesmericOrb extends CardImpl {
public MesmericOrb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MesmericSliver.java b/Mage.Sets/src/mage/cards/m/MesmericSliver.java
index a6e48a72d5b..fb0c39d20a5 100644
--- a/Mage.Sets/src/mage/cards/m/MesmericSliver.java
+++ b/Mage.Sets/src/mage/cards/m/MesmericSliver.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class MesmericSliver extends CardImpl {
+public final class MesmericSliver extends CardImpl {
private static final FilterCreaturePermanent filterSliver = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/m/MesmericTrance.java b/Mage.Sets/src/mage/cards/m/MesmericTrance.java
index e05e6b9683b..38d655c95ed 100644
--- a/Mage.Sets/src/mage/cards/m/MesmericTrance.java
+++ b/Mage.Sets/src/mage/cards/m/MesmericTrance.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class MesmericTrance extends CardImpl {
+public final class MesmericTrance extends CardImpl {
public MesmericTrance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MessengerDrake.java b/Mage.Sets/src/mage/cards/m/MessengerDrake.java
index b997433eb69..92d17df0432 100644
--- a/Mage.Sets/src/mage/cards/m/MessengerDrake.java
+++ b/Mage.Sets/src/mage/cards/m/MessengerDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MessengerDrake extends CardImpl {
+public final class MessengerDrake extends CardImpl {
public MessengerDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MessengerFalcons.java b/Mage.Sets/src/mage/cards/m/MessengerFalcons.java
index efdcbb84b93..fe27bfd0821 100644
--- a/Mage.Sets/src/mage/cards/m/MessengerFalcons.java
+++ b/Mage.Sets/src/mage/cards/m/MessengerFalcons.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class MessengerFalcons extends CardImpl {
+public final class MessengerFalcons extends CardImpl {
public MessengerFalcons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G/U}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MessengerJays.java b/Mage.Sets/src/mage/cards/m/MessengerJays.java
index 26090e4ba5d..d7a7e7ceeeb 100644
--- a/Mage.Sets/src/mage/cards/m/MessengerJays.java
+++ b/Mage.Sets/src/mage/cards/m/MessengerJays.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author JRHerlehy
*/
-public class MessengerJays extends CardImpl {
+public final class MessengerJays extends CardImpl {
public MessengerJays(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MessengersSpeed.java b/Mage.Sets/src/mage/cards/m/MessengersSpeed.java
index aa260288104..03bb44073be 100644
--- a/Mage.Sets/src/mage/cards/m/MessengersSpeed.java
+++ b/Mage.Sets/src/mage/cards/m/MessengersSpeed.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MessengersSpeed extends CardImpl {
+public final class MessengersSpeed extends CardImpl {
public MessengersSpeed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MetalFatigue.java b/Mage.Sets/src/mage/cards/m/MetalFatigue.java
index 686a707d924..339e95e3030 100644
--- a/Mage.Sets/src/mage/cards/m/MetalFatigue.java
+++ b/Mage.Sets/src/mage/cards/m/MetalFatigue.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author djbrez
*/
-public class MetalFatigue extends CardImpl {
+public final class MetalFatigue extends CardImpl {
public MetalFatigue(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/m/MetallicMastery.java b/Mage.Sets/src/mage/cards/m/MetallicMastery.java
index a6e3dc76e1d..1f2f96742fc 100644
--- a/Mage.Sets/src/mage/cards/m/MetallicMastery.java
+++ b/Mage.Sets/src/mage/cards/m/MetallicMastery.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author North
*/
-public class MetallicMastery extends CardImpl {
+public final class MetallicMastery extends CardImpl {
public MetallicMastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MetallicMimic.java b/Mage.Sets/src/mage/cards/m/MetallicMimic.java
index e118aaf4fd6..78b5116b4f6 100644
--- a/Mage.Sets/src/mage/cards/m/MetallicMimic.java
+++ b/Mage.Sets/src/mage/cards/m/MetallicMimic.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author Styxo
*/
-public class MetallicMimic extends CardImpl {
+public final class MetallicMimic extends CardImpl {
public MetallicMimic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MetallicRebuke.java b/Mage.Sets/src/mage/cards/m/MetallicRebuke.java
index 9a717c9416e..68eb436708d 100644
--- a/Mage.Sets/src/mage/cards/m/MetallicRebuke.java
+++ b/Mage.Sets/src/mage/cards/m/MetallicRebuke.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class MetallicRebuke extends CardImpl {
+public final class MetallicRebuke extends CardImpl {
public MetallicRebuke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MetallicSliver.java b/Mage.Sets/src/mage/cards/m/MetallicSliver.java
index 75e098dee26..21588322927 100644
--- a/Mage.Sets/src/mage/cards/m/MetallicSliver.java
+++ b/Mage.Sets/src/mage/cards/m/MetallicSliver.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MetallicSliver extends CardImpl {
+public final class MetallicSliver extends CardImpl {
public MetallicSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/m/Metallurgeon.java b/Mage.Sets/src/mage/cards/m/Metallurgeon.java
index cf7fe0e611f..293ee22ca4a 100644
--- a/Mage.Sets/src/mage/cards/m/Metallurgeon.java
+++ b/Mage.Sets/src/mage/cards/m/Metallurgeon.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author North
*/
-public class Metallurgeon extends CardImpl {
+public final class Metallurgeon extends CardImpl {
public Metallurgeon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MetallurgicSummonings.java b/Mage.Sets/src/mage/cards/m/MetallurgicSummonings.java
index cdd7b429e61..f995be5032f 100644
--- a/Mage.Sets/src/mage/cards/m/MetallurgicSummonings.java
+++ b/Mage.Sets/src/mage/cards/m/MetallurgicSummonings.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class MetallurgicSummonings extends CardImpl {
+public final class MetallurgicSummonings extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/m/MetalspinnersPuzzleknot.java b/Mage.Sets/src/mage/cards/m/MetalspinnersPuzzleknot.java
index f33e2e3d5de..3cbd5b942a4 100644
--- a/Mage.Sets/src/mage/cards/m/MetalspinnersPuzzleknot.java
+++ b/Mage.Sets/src/mage/cards/m/MetalspinnersPuzzleknot.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class MetalspinnersPuzzleknot extends CardImpl {
+public final class MetalspinnersPuzzleknot extends CardImpl {
public MetalspinnersPuzzleknot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MetalworkColossus.java b/Mage.Sets/src/mage/cards/m/MetalworkColossus.java
index 7eace2db31d..53bd7e2d0c1 100644
--- a/Mage.Sets/src/mage/cards/m/MetalworkColossus.java
+++ b/Mage.Sets/src/mage/cards/m/MetalworkColossus.java
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class MetalworkColossus extends CardImpl {
+public final class MetalworkColossus extends CardImpl {
public MetalworkColossus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{11}");
diff --git a/Mage.Sets/src/mage/cards/m/Metalworker.java b/Mage.Sets/src/mage/cards/m/Metalworker.java
index a164ed76302..27be96dd5be 100644
--- a/Mage.Sets/src/mage/cards/m/Metalworker.java
+++ b/Mage.Sets/src/mage/cards/m/Metalworker.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInHand;
*
* @author anonymous
*/
-public class Metalworker extends CardImpl {
+public final class Metalworker extends CardImpl {
public Metalworker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MetamorphicWurm.java b/Mage.Sets/src/mage/cards/m/MetamorphicWurm.java
index ab74ff6e369..fb0d81e12cc 100644
--- a/Mage.Sets/src/mage/cards/m/MetamorphicWurm.java
+++ b/Mage.Sets/src/mage/cards/m/MetamorphicWurm.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class MetamorphicWurm extends CardImpl {
+public final class MetamorphicWurm extends CardImpl {
public MetamorphicWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/Metamorphose.java b/Mage.Sets/src/mage/cards/m/Metamorphose.java
index 4016d69df5a..2daa7e3f36c 100644
--- a/Mage.Sets/src/mage/cards/m/Metamorphose.java
+++ b/Mage.Sets/src/mage/cards/m/Metamorphose.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInHand;
*
* @author JRHerlehy
*/
-public class Metamorphose extends CardImpl {
+public final class Metamorphose extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/m/Metamorphosis.java b/Mage.Sets/src/mage/cards/m/Metamorphosis.java
index 39f3000092d..403adc42015 100644
--- a/Mage.Sets/src/mage/cards/m/Metamorphosis.java
+++ b/Mage.Sets/src/mage/cards/m/Metamorphosis.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author MarcoMarin
*/
-public class Metamorphosis extends CardImpl {
+public final class Metamorphosis extends CardImpl {
public Metamorphosis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MetathranSoldier.java b/Mage.Sets/src/mage/cards/m/MetathranSoldier.java
index 13c63b85e6a..5fac7c6281c 100644
--- a/Mage.Sets/src/mage/cards/m/MetathranSoldier.java
+++ b/Mage.Sets/src/mage/cards/m/MetathranSoldier.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class MetathranSoldier extends CardImpl {
+public final class MetathranSoldier extends CardImpl {
public MetathranSoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MetathranTransport.java b/Mage.Sets/src/mage/cards/m/MetathranTransport.java
index b79ee1bcbe8..5089e5103bf 100644
--- a/Mage.Sets/src/mage/cards/m/MetathranTransport.java
+++ b/Mage.Sets/src/mage/cards/m/MetathranTransport.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MetathranTransport extends CardImpl {
+public final class MetathranTransport extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MetathranZombie.java b/Mage.Sets/src/mage/cards/m/MetathranZombie.java
index 2947cb4719e..c5cd08d16d2 100644
--- a/Mage.Sets/src/mage/cards/m/MetathranZombie.java
+++ b/Mage.Sets/src/mage/cards/m/MetathranZombie.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class MetathranZombie extends CardImpl {
+public final class MetathranZombie extends CardImpl {
public MetathranZombie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MeteorBlast.java b/Mage.Sets/src/mage/cards/m/MeteorBlast.java
index 51309b02240..564e808e669 100644
--- a/Mage.Sets/src/mage/cards/m/MeteorBlast.java
+++ b/Mage.Sets/src/mage/cards/m/MeteorBlast.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class MeteorBlast extends CardImpl {
+public final class MeteorBlast extends CardImpl {
public MeteorBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MeteorCrater.java b/Mage.Sets/src/mage/cards/m/MeteorCrater.java
index fc148cc6397..0c414a0ce02 100644
--- a/Mage.Sets/src/mage/cards/m/MeteorCrater.java
+++ b/Mage.Sets/src/mage/cards/m/MeteorCrater.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author anonymous
*/
-public class MeteorCrater extends CardImpl {
+public final class MeteorCrater extends CardImpl {
public MeteorCrater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/m/MeteorShower.java b/Mage.Sets/src/mage/cards/m/MeteorShower.java
index a692161140a..5bad2fae0a0 100644
--- a/Mage.Sets/src/mage/cards/m/MeteorShower.java
+++ b/Mage.Sets/src/mage/cards/m/MeteorShower.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author TheElk801
*/
-public class MeteorShower extends CardImpl {
+public final class MeteorShower extends CardImpl {
public MeteorShower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MeteorStorm.java b/Mage.Sets/src/mage/cards/m/MeteorStorm.java
index 04fcaeed3a5..cf685f91273 100644
--- a/Mage.Sets/src/mage/cards/m/MeteorStorm.java
+++ b/Mage.Sets/src/mage/cards/m/MeteorStorm.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*/
-public class MeteorStorm extends CardImpl {
+public final class MeteorStorm extends CardImpl {
public MeteorStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/Meteorite.java b/Mage.Sets/src/mage/cards/m/Meteorite.java
index 5c28c5ffd56..fef5137abb7 100644
--- a/Mage.Sets/src/mage/cards/m/Meteorite.java
+++ b/Mage.Sets/src/mage/cards/m/Meteorite.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class Meteorite extends CardImpl {
+public final class Meteorite extends CardImpl {
public Meteorite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/m/Metrognome.java b/Mage.Sets/src/mage/cards/m/Metrognome.java
index 82aacf0decd..78ebf5edb46 100644
--- a/Mage.Sets/src/mage/cards/m/Metrognome.java
+++ b/Mage.Sets/src/mage/cards/m/Metrognome.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.GnomeToken;
*
* @author LoneFox
*/
-public class Metrognome extends CardImpl {
+public final class Metrognome extends CardImpl {
public Metrognome(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/m/MetropolisSprite.java b/Mage.Sets/src/mage/cards/m/MetropolisSprite.java
index 6e6497a4d2a..275554f48eb 100644
--- a/Mage.Sets/src/mage/cards/m/MetropolisSprite.java
+++ b/Mage.Sets/src/mage/cards/m/MetropolisSprite.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class MetropolisSprite extends CardImpl {
+public final class MetropolisSprite extends CardImpl {
public MetropolisSprite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MetzaliTowerOfTriumph.java b/Mage.Sets/src/mage/cards/m/MetzaliTowerOfTriumph.java
index 2d1eb7bbf38..d8f79297912 100644
--- a/Mage.Sets/src/mage/cards/m/MetzaliTowerOfTriumph.java
+++ b/Mage.Sets/src/mage/cards/m/MetzaliTowerOfTriumph.java
@@ -58,7 +58,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author LevelX2
*/
-public class MetzaliTowerOfTriumph extends CardImpl {
+public final class MetzaliTowerOfTriumph extends CardImpl {
public MetzaliTowerOfTriumph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/m/MiasmicMummy.java b/Mage.Sets/src/mage/cards/m/MiasmicMummy.java
index 0fb753fe79b..7fcb9256fb6 100644
--- a/Mage.Sets/src/mage/cards/m/MiasmicMummy.java
+++ b/Mage.Sets/src/mage/cards/m/MiasmicMummy.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class MiasmicMummy extends CardImpl {
+public final class MiasmicMummy extends CardImpl {
public MiasmicMummy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MichikoKondaTruthSeeker.java b/Mage.Sets/src/mage/cards/m/MichikoKondaTruthSeeker.java
index 0de609dd1e8..ef6861d7118 100644
--- a/Mage.Sets/src/mage/cards/m/MichikoKondaTruthSeeker.java
+++ b/Mage.Sets/src/mage/cards/m/MichikoKondaTruthSeeker.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class MichikoKondaTruthSeeker extends CardImpl {
+public final class MichikoKondaTruthSeeker extends CardImpl {
public MichikoKondaTruthSeeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MidnightBanshee.java b/Mage.Sets/src/mage/cards/m/MidnightBanshee.java
index 050d97c2b06..c49aba1b9f9 100644
--- a/Mage.Sets/src/mage/cards/m/MidnightBanshee.java
+++ b/Mage.Sets/src/mage/cards/m/MidnightBanshee.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class MidnightBanshee extends CardImpl {
+public final class MidnightBanshee extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/m/MidnightCharm.java b/Mage.Sets/src/mage/cards/m/MidnightCharm.java
index f4e9be58d95..38712ff7a20 100644
--- a/Mage.Sets/src/mage/cards/m/MidnightCharm.java
+++ b/Mage.Sets/src/mage/cards/m/MidnightCharm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MidnightCharm extends CardImpl {
+public final class MidnightCharm extends CardImpl {
public MidnightCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MidnightCovenant.java b/Mage.Sets/src/mage/cards/m/MidnightCovenant.java
index caff4ffb048..c5ce6a438f8 100644
--- a/Mage.Sets/src/mage/cards/m/MidnightCovenant.java
+++ b/Mage.Sets/src/mage/cards/m/MidnightCovenant.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MidnightCovenant extends CardImpl {
+public final class MidnightCovenant extends CardImpl {
public MidnightCovenant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MidnightDuelist.java b/Mage.Sets/src/mage/cards/m/MidnightDuelist.java
index 7b0ea330a91..41129df6cc3 100644
--- a/Mage.Sets/src/mage/cards/m/MidnightDuelist.java
+++ b/Mage.Sets/src/mage/cards/m/MidnightDuelist.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
* @author noxx
*/
-public class MidnightDuelist extends CardImpl {
+public final class MidnightDuelist extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("Vampires");
diff --git a/Mage.Sets/src/mage/cards/m/MidnightEntourage.java b/Mage.Sets/src/mage/cards/m/MidnightEntourage.java
index f2fac94f850..39b8132aaec 100644
--- a/Mage.Sets/src/mage/cards/m/MidnightEntourage.java
+++ b/Mage.Sets/src/mage/cards/m/MidnightEntourage.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Styxo
*/
-public class MidnightEntourage extends CardImpl {
+public final class MidnightEntourage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Aetherborn you control");
diff --git a/Mage.Sets/src/mage/cards/m/MidnightGuard.java b/Mage.Sets/src/mage/cards/m/MidnightGuard.java
index 6b00c054c1b..5154e525c26 100644
--- a/Mage.Sets/src/mage/cards/m/MidnightGuard.java
+++ b/Mage.Sets/src/mage/cards/m/MidnightGuard.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author North
*/
-public class MidnightGuard extends CardImpl {
+public final class MidnightGuard extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another creature");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MidnightHaunting.java b/Mage.Sets/src/mage/cards/m/MidnightHaunting.java
index 8efd5389217..707885b97a6 100644
--- a/Mage.Sets/src/mage/cards/m/MidnightHaunting.java
+++ b/Mage.Sets/src/mage/cards/m/MidnightHaunting.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author nantuko
*/
-public class MidnightHaunting extends CardImpl {
+public final class MidnightHaunting extends CardImpl {
public MidnightHaunting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MidnightOil.java b/Mage.Sets/src/mage/cards/m/MidnightOil.java
index 31d56556198..17ef7ed65da 100644
--- a/Mage.Sets/src/mage/cards/m/MidnightOil.java
+++ b/Mage.Sets/src/mage/cards/m/MidnightOil.java
@@ -57,7 +57,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class MidnightOil extends CardImpl {
+public final class MidnightOil extends CardImpl {
public MidnightOil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MidnightRecovery.java b/Mage.Sets/src/mage/cards/m/MidnightRecovery.java
index 11ef4fba31a..0e33d092924 100644
--- a/Mage.Sets/src/mage/cards/m/MidnightRecovery.java
+++ b/Mage.Sets/src/mage/cards/m/MidnightRecovery.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class MidnightRecovery extends CardImpl {
+public final class MidnightRecovery extends CardImpl {
public MidnightRecovery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MidnightRitual.java b/Mage.Sets/src/mage/cards/m/MidnightRitual.java
index 042dc6a37d9..c1c516a8afe 100644
--- a/Mage.Sets/src/mage/cards/m/MidnightRitual.java
+++ b/Mage.Sets/src/mage/cards/m/MidnightRitual.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Skyler Sell
*/
-public class MidnightRitual extends CardImpl {
+public final class MidnightRitual extends CardImpl {
public MidnightRitual(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MidnightScavengers.java b/Mage.Sets/src/mage/cards/m/MidnightScavengers.java
index 8d8d3d8138e..60081d875e8 100644
--- a/Mage.Sets/src/mage/cards/m/MidnightScavengers.java
+++ b/Mage.Sets/src/mage/cards/m/MidnightScavengers.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class MidnightScavengers extends CardImpl {
+public final class MidnightScavengers extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with converted mana cost 3 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MidsummerRevel.java b/Mage.Sets/src/mage/cards/m/MidsummerRevel.java
index 7989630eb6f..b584804c7c1 100644
--- a/Mage.Sets/src/mage/cards/m/MidsummerRevel.java
+++ b/Mage.Sets/src/mage/cards/m/MidsummerRevel.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.BeastToken;
*
* @author LoneFox
*/
-public class MidsummerRevel extends CardImpl {
+public final class MidsummerRevel extends CardImpl {
public MidsummerRevel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MidvastProtector.java b/Mage.Sets/src/mage/cards/m/MidvastProtector.java
index c7ac4030ee4..629a33af6a6 100644
--- a/Mage.Sets/src/mage/cards/m/MidvastProtector.java
+++ b/Mage.Sets/src/mage/cards/m/MidvastProtector.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class MidvastProtector extends CardImpl {
+public final class MidvastProtector extends CardImpl {
public MidvastProtector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MightBeyondReason.java b/Mage.Sets/src/mage/cards/m/MightBeyondReason.java
index b3ea858897d..fcd0379b864 100644
--- a/Mage.Sets/src/mage/cards/m/MightBeyondReason.java
+++ b/Mage.Sets/src/mage/cards/m/MightBeyondReason.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MightBeyondReason extends CardImpl {
+public final class MightBeyondReason extends CardImpl {
public MightBeyondReason(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MightMakesRight.java b/Mage.Sets/src/mage/cards/m/MightMakesRight.java
index 8758925a6f2..daa51ad2f2e 100644
--- a/Mage.Sets/src/mage/cards/m/MightMakesRight.java
+++ b/Mage.Sets/src/mage/cards/m/MightMakesRight.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Quercitron
*/
-public class MightMakesRight extends CardImpl {
+public final class MightMakesRight extends CardImpl {
private static final String ruleText = "At the beginning of combat on your turn, if you control each creature on the battlefield with the greatest power, "
+ "gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn.";
diff --git a/Mage.Sets/src/mage/cards/m/MightOfAlara.java b/Mage.Sets/src/mage/cards/m/MightOfAlara.java
index eaf219b5b6b..6bfdee8f101 100644
--- a/Mage.Sets/src/mage/cards/m/MightOfAlara.java
+++ b/Mage.Sets/src/mage/cards/m/MightOfAlara.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MightOfAlara extends CardImpl {
+public final class MightOfAlara extends CardImpl {
public MightOfAlara(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MightOfOaks.java b/Mage.Sets/src/mage/cards/m/MightOfOaks.java
index a6426350a7e..a4818615aec 100644
--- a/Mage.Sets/src/mage/cards/m/MightOfOaks.java
+++ b/Mage.Sets/src/mage/cards/m/MightOfOaks.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LokiX
*/
-public class MightOfOaks extends CardImpl {
+public final class MightOfOaks extends CardImpl {
public MightOfOaks(UUID ownerId, CardSetInfo setInfo){
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MightOfOldKrosa.java b/Mage.Sets/src/mage/cards/m/MightOfOldKrosa.java
index d6bcebaeb3f..67b51fe1b08 100644
--- a/Mage.Sets/src/mage/cards/m/MightOfOldKrosa.java
+++ b/Mage.Sets/src/mage/cards/m/MightOfOldKrosa.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MightOfOldKrosa extends CardImpl {
+public final class MightOfOldKrosa extends CardImpl {
public MightOfOldKrosa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MightOfTheMasses.java b/Mage.Sets/src/mage/cards/m/MightOfTheMasses.java
index dfc30d6ee5e..4a49dac8066 100644
--- a/Mage.Sets/src/mage/cards/m/MightOfTheMasses.java
+++ b/Mage.Sets/src/mage/cards/m/MightOfTheMasses.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MightOfTheMasses extends CardImpl {
+public final class MightOfTheMasses extends CardImpl {
public MightOfTheMasses(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MightOfTheNephilim.java b/Mage.Sets/src/mage/cards/m/MightOfTheNephilim.java
index 0e4015e7af5..9cecc1beaaf 100644
--- a/Mage.Sets/src/mage/cards/m/MightOfTheNephilim.java
+++ b/Mage.Sets/src/mage/cards/m/MightOfTheNephilim.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class MightOfTheNephilim extends CardImpl {
+public final class MightOfTheNephilim extends CardImpl {
public MightOfTheNephilim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MightOfTheWild.java b/Mage.Sets/src/mage/cards/m/MightOfTheWild.java
index e111021cd8d..4670dc5146c 100644
--- a/Mage.Sets/src/mage/cards/m/MightOfTheWild.java
+++ b/Mage.Sets/src/mage/cards/m/MightOfTheWild.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author Styxo
*/
-public class MightOfTheWild extends CardImpl {
+public final class MightOfTheWild extends CardImpl {
private static final FilterCreaturePermanent filterMode1 = new FilterCreaturePermanent("Creatures with power 3 or less");
private static final FilterPermanent filterMode2 = new FilterPermanent("artifact or enchantment");
diff --git a/Mage.Sets/src/mage/cards/m/MightSliver.java b/Mage.Sets/src/mage/cards/m/MightSliver.java
index 639aa85209d..f5bd223a175 100644
--- a/Mage.Sets/src/mage/cards/m/MightSliver.java
+++ b/Mage.Sets/src/mage/cards/m/MightSliver.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author KholdFuzion
*/
-public class MightSliver extends CardImpl {
+public final class MightSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MightWeaver.java b/Mage.Sets/src/mage/cards/m/MightWeaver.java
index c1abff9f3e7..272b09f4be6 100644
--- a/Mage.Sets/src/mage/cards/m/MightWeaver.java
+++ b/Mage.Sets/src/mage/cards/m/MightWeaver.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MightWeaver extends CardImpl {
+public final class MightWeaver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red or white creature");
diff --git a/Mage.Sets/src/mage/cards/m/Mightstone.java b/Mage.Sets/src/mage/cards/m/Mightstone.java
index c143634ca74..898dd56c7d0 100644
--- a/Mage.Sets/src/mage/cards/m/Mightstone.java
+++ b/Mage.Sets/src/mage/cards/m/Mightstone.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.AttackingPredicate;
*
* @author anonymous
*/
-public class Mightstone extends CardImpl {
+public final class Mightstone extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MightyEmergence.java b/Mage.Sets/src/mage/cards/m/MightyEmergence.java
index 0f8cec3f934..2c5b4fd9543 100644
--- a/Mage.Sets/src/mage/cards/m/MightyEmergence.java
+++ b/Mage.Sets/src/mage/cards/m/MightyEmergence.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author Plopman
*/
-public class MightyEmergence extends CardImpl {
+public final class MightyEmergence extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a creature with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/m/MightyLeap.java b/Mage.Sets/src/mage/cards/m/MightyLeap.java
index 1be191e78bd..87cf07d4efc 100644
--- a/Mage.Sets/src/mage/cards/m/MightyLeap.java
+++ b/Mage.Sets/src/mage/cards/m/MightyLeap.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MightyLeap extends CardImpl {
+public final class MightyLeap extends CardImpl {
public MightyLeap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MigratoryRoute.java b/Mage.Sets/src/mage/cards/m/MigratoryRoute.java
index 284d4f666d9..fa9848347e9 100644
--- a/Mage.Sets/src/mage/cards/m/MigratoryRoute.java
+++ b/Mage.Sets/src/mage/cards/m/MigratoryRoute.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.BirdToken;
*
* @author fireshoes
*/
-public class MigratoryRoute extends CardImpl {
+public final class MigratoryRoute extends CardImpl {
public MigratoryRoute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MijaeDjinn.java b/Mage.Sets/src/mage/cards/m/MijaeDjinn.java
index 79d61fee1e5..cc6cb56f0f3 100644
--- a/Mage.Sets/src/mage/cards/m/MijaeDjinn.java
+++ b/Mage.Sets/src/mage/cards/m/MijaeDjinn.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class MijaeDjinn extends CardImpl {
+public final class MijaeDjinn extends CardImpl {
public MijaeDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MikaeusTheLunarch.java b/Mage.Sets/src/mage/cards/m/MikaeusTheLunarch.java
index 09390ad4fc8..94c08e9d0c5 100644
--- a/Mage.Sets/src/mage/cards/m/MikaeusTheLunarch.java
+++ b/Mage.Sets/src/mage/cards/m/MikaeusTheLunarch.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
/**
* @author nantuko
*/
-public class MikaeusTheLunarch extends CardImpl {
+public final class MikaeusTheLunarch extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/m/MikaeusTheUnhallowed.java b/Mage.Sets/src/mage/cards/m/MikaeusTheUnhallowed.java
index af0f12dc210..39d06e6e390 100644
--- a/Mage.Sets/src/mage/cards/m/MikaeusTheUnhallowed.java
+++ b/Mage.Sets/src/mage/cards/m/MikaeusTheUnhallowed.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author North
*/
-public class MikaeusTheUnhallowed extends CardImpl {
+public final class MikaeusTheUnhallowed extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Human creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MikokoroCenterOfTheSea.java b/Mage.Sets/src/mage/cards/m/MikokoroCenterOfTheSea.java
index bb415fda4f7..3c195f5a115 100644
--- a/Mage.Sets/src/mage/cards/m/MikokoroCenterOfTheSea.java
+++ b/Mage.Sets/src/mage/cards/m/MikokoroCenterOfTheSea.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class MikokoroCenterOfTheSea extends CardImpl {
+public final class MikokoroCenterOfTheSea extends CardImpl {
public MikokoroCenterOfTheSea(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MilitantInquisitor.java b/Mage.Sets/src/mage/cards/m/MilitantInquisitor.java
index 9b3e8127988..86eeb24114d 100644
--- a/Mage.Sets/src/mage/cards/m/MilitantInquisitor.java
+++ b/Mage.Sets/src/mage/cards/m/MilitantInquisitor.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class MilitantInquisitor extends CardImpl {
+public final class MilitantInquisitor extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Equipment you control");
diff --git a/Mage.Sets/src/mage/cards/m/MilitantMonk.java b/Mage.Sets/src/mage/cards/m/MilitantMonk.java
index 1f98a9396e0..23c21d34eed 100644
--- a/Mage.Sets/src/mage/cards/m/MilitantMonk.java
+++ b/Mage.Sets/src/mage/cards/m/MilitantMonk.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class MilitantMonk extends CardImpl {
+public final class MilitantMonk extends CardImpl {
public MilitantMonk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MilitaryIntelligence.java b/Mage.Sets/src/mage/cards/m/MilitaryIntelligence.java
index 068577beba7..c9147037947 100644
--- a/Mage.Sets/src/mage/cards/m/MilitaryIntelligence.java
+++ b/Mage.Sets/src/mage/cards/m/MilitaryIntelligence.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class MilitaryIntelligence extends CardImpl {
+public final class MilitaryIntelligence extends CardImpl {
public MilitaryIntelligence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MilitiasPride.java b/Mage.Sets/src/mage/cards/m/MilitiasPride.java
index 58b1a6a10df..f446ed1824e 100644
--- a/Mage.Sets/src/mage/cards/m/MilitiasPride.java
+++ b/Mage.Sets/src/mage/cards/m/MilitiasPride.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.KithkinToken;
*
* @author Styxo
*/
-public class MilitiasPride extends CardImpl {
+public final class MilitiasPride extends CardImpl {
public MilitiasPride(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MillennialGargoyle.java b/Mage.Sets/src/mage/cards/m/MillennialGargoyle.java
index 186399e98e6..66afe86df0a 100644
--- a/Mage.Sets/src/mage/cards/m/MillennialGargoyle.java
+++ b/Mage.Sets/src/mage/cards/m/MillennialGargoyle.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class MillennialGargoyle extends CardImpl {
+public final class MillennialGargoyle extends CardImpl {
public MillennialGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/m/MillenniumFalcon.java b/Mage.Sets/src/mage/cards/m/MillenniumFalcon.java
index d82b39f63a9..462225675f7 100644
--- a/Mage.Sets/src/mage/cards/m/MillenniumFalcon.java
+++ b/Mage.Sets/src/mage/cards/m/MillenniumFalcon.java
@@ -46,7 +46,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author Styxo
*/
-public class MillenniumFalcon extends CardImpl {
+public final class MillenniumFalcon extends CardImpl {
public MillenniumFalcon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/Millikin.java b/Mage.Sets/src/mage/cards/m/Millikin.java
index 9274c69d49b..4931b80b96c 100644
--- a/Mage.Sets/src/mage/cards/m/Millikin.java
+++ b/Mage.Sets/src/mage/cards/m/Millikin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class Millikin extends CardImpl {
+public final class Millikin extends CardImpl {
public Millikin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/Millstone.java b/Mage.Sets/src/mage/cards/m/Millstone.java
index d274c482fe2..cdec393d1c6 100644
--- a/Mage.Sets/src/mage/cards/m/Millstone.java
+++ b/Mage.Sets/src/mage/cards/m/Millstone.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class Millstone extends CardImpl {
+public final class Millstone extends CardImpl {
public Millstone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/Mimeofacture.java b/Mage.Sets/src/mage/cards/m/Mimeofacture.java
index 85354fdba8e..660dffbc646 100644
--- a/Mage.Sets/src/mage/cards/m/Mimeofacture.java
+++ b/Mage.Sets/src/mage/cards/m/Mimeofacture.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class Mimeofacture extends CardImpl {
+public final class Mimeofacture extends CardImpl {
public Mimeofacture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MimicVat.java b/Mage.Sets/src/mage/cards/m/MimicVat.java
index 9f5b5636112..c782f7cf367 100644
--- a/Mage.Sets/src/mage/cards/m/MimicVat.java
+++ b/Mage.Sets/src/mage/cards/m/MimicVat.java
@@ -58,7 +58,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author nantuko
*/
-public class MimicVat extends CardImpl {
+public final class MimicVat extends CardImpl {
public MimicVat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MimingSlime.java b/Mage.Sets/src/mage/cards/m/MimingSlime.java
index 96ee1ac220f..964e891754a 100644
--- a/Mage.Sets/src/mage/cards/m/MimingSlime.java
+++ b/Mage.Sets/src/mage/cards/m/MimingSlime.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MimingSlime extends CardImpl {
+public final class MimingSlime extends CardImpl {
public MimingSlime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MinaAndDennWildborn.java b/Mage.Sets/src/mage/cards/m/MinaAndDennWildborn.java
index 3bb5070c894..0f8c6399710 100644
--- a/Mage.Sets/src/mage/cards/m/MinaAndDennWildborn.java
+++ b/Mage.Sets/src/mage/cards/m/MinaAndDennWildborn.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class MinaAndDennWildborn extends CardImpl {
+public final class MinaAndDennWildborn extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/m/MinamoSchoolAtWatersEdge.java b/Mage.Sets/src/mage/cards/m/MinamoSchoolAtWatersEdge.java
index db051ecbc53..b1c81e506f4 100644
--- a/Mage.Sets/src/mage/cards/m/MinamoSchoolAtWatersEdge.java
+++ b/Mage.Sets/src/mage/cards/m/MinamoSchoolAtWatersEdge.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class MinamoSchoolAtWatersEdge extends CardImpl {
+public final class MinamoSchoolAtWatersEdge extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("legendary permanent");
diff --git a/Mage.Sets/src/mage/cards/m/MinamoScrollkeeper.java b/Mage.Sets/src/mage/cards/m/MinamoScrollkeeper.java
index 58876083fc0..531524a3941 100644
--- a/Mage.Sets/src/mage/cards/m/MinamoScrollkeeper.java
+++ b/Mage.Sets/src/mage/cards/m/MinamoScrollkeeper.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class MinamoScrollkeeper extends CardImpl {
+public final class MinamoScrollkeeper extends CardImpl {
public MinamoScrollkeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MinamoSightbender.java b/Mage.Sets/src/mage/cards/m/MinamoSightbender.java
index a856679fa7e..d7952d4b363 100644
--- a/Mage.Sets/src/mage/cards/m/MinamoSightbender.java
+++ b/Mage.Sets/src/mage/cards/m/MinamoSightbender.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class MinamoSightbender extends CardImpl {
+public final class MinamoSightbender extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature with power X or less");
diff --git a/Mage.Sets/src/mage/cards/m/MinamosMeddling.java b/Mage.Sets/src/mage/cards/m/MinamosMeddling.java
index 2f8da691965..c1e4d3aef3f 100644
--- a/Mage.Sets/src/mage/cards/m/MinamosMeddling.java
+++ b/Mage.Sets/src/mage/cards/m/MinamosMeddling.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class MinamosMeddling extends CardImpl {
+public final class MinamosMeddling extends CardImpl {
public MinamosMeddling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindBomb.java b/Mage.Sets/src/mage/cards/m/MindBomb.java
index c82d0078b37..7bb43ab48be 100644
--- a/Mage.Sets/src/mage/cards/m/MindBomb.java
+++ b/Mage.Sets/src/mage/cards/m/MindBomb.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetDiscard;
*
* @author TheElk801
*/
-public class MindBomb extends CardImpl {
+public final class MindBomb extends CardImpl {
public MindBomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindBurst.java b/Mage.Sets/src/mage/cards/m/MindBurst.java
index e49b1b8c95d..58dfcfe672a 100644
--- a/Mage.Sets/src/mage/cards/m/MindBurst.java
+++ b/Mage.Sets/src/mage/cards/m/MindBurst.java
@@ -1,76 +1,76 @@
-/*
- * 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.dynamicvalue.DynamicValue;
-import mage.abilities.dynamicvalue.IntPlusDynamicValue;
-import mage.abilities.dynamicvalue.common.CardsInAllGraveyardsCount;
-import mage.abilities.effects.Effect;
-import mage.abilities.effects.common.discard.DiscardTargetEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.filter.FilterCard;
-import mage.filter.predicate.mageobject.NamePredicate;
-import mage.target.TargetPlayer;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class MindBurst extends CardImpl {
-
- private static final FilterCard filter = new FilterCard();
-
- static {
- filter.add(new NamePredicate("Mind Burst"));
- }
-
- public MindBurst(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
-
-
- // Target player discards X cards, where X is one plus the number of cards named Mind Burst in all graveyards.
- DynamicValue numberOfCardsNamedMindBurst = new IntPlusDynamicValue(1, new CardsInAllGraveyardsCount(filter));
- Effect effect = new DiscardTargetEffect(numberOfCardsNamedMindBurst);
- effect.setText("Target player discards X cards, where X is one plus the number of cards named Mind Burst in all graveyards.");
- this.getSpellAbility().addEffect(effect);
- this.getSpellAbility().addTarget(new TargetPlayer());
-
- }
-
- public MindBurst(final MindBurst card) {
- super(card);
- }
-
- @Override
- public MindBurst copy() {
- return new MindBurst(this);
- }
-}
+/*
+ * 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.dynamicvalue.DynamicValue;
+import mage.abilities.dynamicvalue.IntPlusDynamicValue;
+import mage.abilities.dynamicvalue.common.CardsInAllGraveyardsCount;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.discard.DiscardTargetEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.filter.FilterCard;
+import mage.filter.predicate.mageobject.NamePredicate;
+import mage.target.TargetPlayer;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class MindBurst extends CardImpl {
+
+ private static final FilterCard filter = new FilterCard();
+
+ static {
+ filter.add(new NamePredicate("Mind Burst"));
+ }
+
+ public MindBurst(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
+
+
+ // Target player discards X cards, where X is one plus the number of cards named Mind Burst in all graveyards.
+ DynamicValue numberOfCardsNamedMindBurst = new IntPlusDynamicValue(1, new CardsInAllGraveyardsCount(filter));
+ Effect effect = new DiscardTargetEffect(numberOfCardsNamedMindBurst);
+ effect.setText("Target player discards X cards, where X is one plus the number of cards named Mind Burst in all graveyards.");
+ this.getSpellAbility().addEffect(effect);
+ this.getSpellAbility().addTarget(new TargetPlayer());
+
+ }
+
+ public MindBurst(final MindBurst card) {
+ super(card);
+ }
+
+ @Override
+ public MindBurst copy() {
+ return new MindBurst(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/m/MindControl.java b/Mage.Sets/src/mage/cards/m/MindControl.java
index 7e5925cb1c3..802c1c52bdd 100644
--- a/Mage.Sets/src/mage/cards/m/MindControl.java
+++ b/Mage.Sets/src/mage/cards/m/MindControl.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MindControl extends CardImpl {
+public final class MindControl extends CardImpl {
public MindControl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindFuneral.java b/Mage.Sets/src/mage/cards/m/MindFuneral.java
index ce58aaa1d8b..2a3f418d181 100644
--- a/Mage.Sets/src/mage/cards/m/MindFuneral.java
+++ b/Mage.Sets/src/mage/cards/m/MindFuneral.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class MindFuneral extends CardImpl {
+public final class MindFuneral extends CardImpl {
public MindFuneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindGames.java b/Mage.Sets/src/mage/cards/m/MindGames.java
index 3f816185e84..8e67f19f818 100644
--- a/Mage.Sets/src/mage/cards/m/MindGames.java
+++ b/Mage.Sets/src/mage/cards/m/MindGames.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class MindGames extends CardImpl {
+public final class MindGames extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/m/MindGrind.java b/Mage.Sets/src/mage/cards/m/MindGrind.java
index e72d436e20b..e907c1fba80 100644
--- a/Mage.Sets/src/mage/cards/m/MindGrind.java
+++ b/Mage.Sets/src/mage/cards/m/MindGrind.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MindGrind extends CardImpl {
+public final class MindGrind extends CardImpl {
public MindGrind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindHarness.java b/Mage.Sets/src/mage/cards/m/MindHarness.java
index a0ef54b12ab..e4052a888df 100644
--- a/Mage.Sets/src/mage/cards/m/MindHarness.java
+++ b/Mage.Sets/src/mage/cards/m/MindHarness.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author TheElk801
*/
-public class MindHarness extends CardImpl {
+public final class MindHarness extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red or green creature");
diff --git a/Mage.Sets/src/mage/cards/m/MindKnives.java b/Mage.Sets/src/mage/cards/m/MindKnives.java
index 54c31bb54fc..197953eaced 100644
--- a/Mage.Sets/src/mage/cards/m/MindKnives.java
+++ b/Mage.Sets/src/mage/cards/m/MindKnives.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class MindKnives extends CardImpl {
+public final class MindKnives extends CardImpl {
public MindKnives(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindOverMatter.java b/Mage.Sets/src/mage/cards/m/MindOverMatter.java
index 84df87276e5..6d13e6bb5b6 100644
--- a/Mage.Sets/src/mage/cards/m/MindOverMatter.java
+++ b/Mage.Sets/src/mage/cards/m/MindOverMatter.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author emerald000
*/
-public class MindOverMatter extends CardImpl {
+public final class MindOverMatter extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MindPeel.java b/Mage.Sets/src/mage/cards/m/MindPeel.java
index ea9f602b387..33a93a85752 100644
--- a/Mage.Sets/src/mage/cards/m/MindPeel.java
+++ b/Mage.Sets/src/mage/cards/m/MindPeel.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author EvilGeek
*/
-public class MindPeel extends CardImpl {
+public final class MindPeel extends CardImpl {
public MindPeel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindRaker.java b/Mage.Sets/src/mage/cards/m/MindRaker.java
index d04c739577f..787cf59dd17 100644
--- a/Mage.Sets/src/mage/cards/m/MindRaker.java
+++ b/Mage.Sets/src/mage/cards/m/MindRaker.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class MindRaker extends CardImpl {
+public final class MindRaker extends CardImpl {
public MindRaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindRavel.java b/Mage.Sets/src/mage/cards/m/MindRavel.java
index 602142a6c4b..9511a61d8c6 100644
--- a/Mage.Sets/src/mage/cards/m/MindRavel.java
+++ b/Mage.Sets/src/mage/cards/m/MindRavel.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class MindRavel extends CardImpl {
+public final class MindRavel extends CardImpl {
public MindRavel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindRot.java b/Mage.Sets/src/mage/cards/m/MindRot.java
index e94b5410f28..a838796338a 100644
--- a/Mage.Sets/src/mage/cards/m/MindRot.java
+++ b/Mage.Sets/src/mage/cards/m/MindRot.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author LokiX
*/
-public class MindRot extends CardImpl {
+public final class MindRot extends CardImpl {
public MindRot(UUID ownerId, CardSetInfo setInfo){
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindSculpt.java b/Mage.Sets/src/mage/cards/m/MindSculpt.java
index 42e3055d60e..a0d38fc7496 100644
--- a/Mage.Sets/src/mage/cards/m/MindSculpt.java
+++ b/Mage.Sets/src/mage/cards/m/MindSculpt.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetOpponent;
*
* @author North
*/
-public class MindSculpt extends CardImpl {
+public final class MindSculpt extends CardImpl {
public MindSculpt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindShatter.java b/Mage.Sets/src/mage/cards/m/MindShatter.java
index fbd25a35846..31e3980d624 100644
--- a/Mage.Sets/src/mage/cards/m/MindShatter.java
+++ b/Mage.Sets/src/mage/cards/m/MindShatter.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class MindShatter extends CardImpl {
+public final class MindShatter extends CardImpl {
public MindShatter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindSlash.java b/Mage.Sets/src/mage/cards/m/MindSlash.java
index 92c275cfb9f..e182bd3b75f 100644
--- a/Mage.Sets/src/mage/cards/m/MindSlash.java
+++ b/Mage.Sets/src/mage/cards/m/MindSlash.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author dustinconrad
*/
-public class MindSlash extends CardImpl {
+public final class MindSlash extends CardImpl {
public MindSlash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindSludge.java b/Mage.Sets/src/mage/cards/m/MindSludge.java
index c037fa1ee73..d344d3cd79a 100644
--- a/Mage.Sets/src/mage/cards/m/MindSludge.java
+++ b/Mage.Sets/src/mage/cards/m/MindSludge.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class MindSludge extends CardImpl {
+public final class MindSludge extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control");
diff --git a/Mage.Sets/src/mage/cards/m/MindSpring.java b/Mage.Sets/src/mage/cards/m/MindSpring.java
index 5bf6a0631e8..363f6b27c36 100644
--- a/Mage.Sets/src/mage/cards/m/MindSpring.java
+++ b/Mage.Sets/src/mage/cards/m/MindSpring.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MindSpring extends CardImpl {
+public final class MindSpring extends CardImpl {
public MindSpring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindStone.java b/Mage.Sets/src/mage/cards/m/MindStone.java
index 06def580842..93c1670f2f9 100644
--- a/Mage.Sets/src/mage/cards/m/MindStone.java
+++ b/Mage.Sets/src/mage/cards/m/MindStone.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class MindStone extends CardImpl {
+public final class MindStone extends CardImpl {
public MindStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MindSwords.java b/Mage.Sets/src/mage/cards/m/MindSwords.java
index 3725c851f74..78e72fb46e8 100644
--- a/Mage.Sets/src/mage/cards/m/MindSwords.java
+++ b/Mage.Sets/src/mage/cards/m/MindSwords.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class MindSwords extends CardImpl {
+public final class MindSwords extends CardImpl {
private static final FilterLandPermanent filterSwamp = new FilterLandPermanent("If you control a Swamp");
diff --git a/Mage.Sets/src/mage/cards/m/MindTwist.java b/Mage.Sets/src/mage/cards/m/MindTwist.java
index c4b43d12320..8f44b3d1507 100644
--- a/Mage.Sets/src/mage/cards/m/MindTwist.java
+++ b/Mage.Sets/src/mage/cards/m/MindTwist.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class MindTwist extends CardImpl {
+public final class MindTwist extends CardImpl {
public MindTwist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindUnbound.java b/Mage.Sets/src/mage/cards/m/MindUnbound.java
index 131844ab69d..e19478b46b1 100644
--- a/Mage.Sets/src/mage/cards/m/MindUnbound.java
+++ b/Mage.Sets/src/mage/cards/m/MindUnbound.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class MindUnbound extends CardImpl {
+public final class MindUnbound extends CardImpl {
public MindUnbound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindWarp.java b/Mage.Sets/src/mage/cards/m/MindWarp.java
index be07dd9f3c0..a3fce302457 100644
--- a/Mage.Sets/src/mage/cards/m/MindWarp.java
+++ b/Mage.Sets/src/mage/cards/m/MindWarp.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author Quercitron
*/
-public class MindWarp extends CardImpl {
+public final class MindWarp extends CardImpl {
public MindWarp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindbladeRender.java b/Mage.Sets/src/mage/cards/m/MindbladeRender.java
new file mode 100644
index 00000000000..fc56f621df9
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/m/MindbladeRender.java
@@ -0,0 +1,126 @@
+/*
+ * 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.MageInt;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
+import mage.constants.SubType;
+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;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class MindbladeRender extends CardImpl {
+
+ public MindbladeRender(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
+
+ this.subtype.add(SubType.AZRA);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(3);
+
+ // Whenever your opponents are dealt combat damage, if any of that damage was dealt by a Warrior, you draw a card and you lose 1 life.
+ this.addAbility(new MindbladeRenderTriggeredAbility());
+ }
+
+ public MindbladeRender(final MindbladeRender card) {
+ super(card);
+ }
+
+ @Override
+ public MindbladeRender copy() {
+ return new MindbladeRender(this);
+ }
+}
+
+class MindbladeRenderTriggeredAbility extends TriggeredAbilityImpl {
+
+ private boolean usedForCombatDamageStep;
+
+ MindbladeRenderTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1));
+ this.addEffect(new LoseLifeSourceControllerEffect(1));
+ this.usedForCombatDamageStep = false;
+ }
+
+ MindbladeRenderTriggeredAbility(final MindbladeRenderTriggeredAbility effect) {
+ super(effect);
+ this.usedForCombatDamageStep = effect.usedForCombatDamageStep;
+ }
+
+ @Override
+ public MindbladeRenderTriggeredAbility copy() {
+ return new MindbladeRenderTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.DAMAGED_PLAYER || event.getType() == GameEvent.EventType.COMBAT_DAMAGE_STEP_POST;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ Player controller = game.getPlayer(getControllerId());
+ if (controller == null) {
+ return false;
+ }
+ Permanent damager = game.getPermanentOrLKIBattlefield(event.getSourceId());
+ if (damager == null) {
+ return false;
+ }
+ if (event.getType() == GameEvent.EventType.DAMAGED_PLAYER
+ && event.getFlag()
+ && controller.hasOpponent(event.getTargetId(), game)
+ && damager.hasSubtype(SubType.WARRIOR, game)
+ && !usedForCombatDamageStep) {
+ usedForCombatDamageStep = true;
+ return true;
+ }
+ if (event.getType() == GameEvent.EventType.COMBAT_DAMAGE_STEP_POST) {
+ usedForCombatDamageStep = false;
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever your opponents are dealt combat damage, if any of that damage was dealt by a Warrior, you draw a card and you lose 1 life.";
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/m/Mindblaze.java b/Mage.Sets/src/mage/cards/m/Mindblaze.java
index 0e3eac4e7fc..96f6f0fc660 100644
--- a/Mage.Sets/src/mage/cards/m/Mindblaze.java
+++ b/Mage.Sets/src/mage/cards/m/Mindblaze.java
@@ -52,7 +52,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class Mindblaze extends CardImpl {
+public final class Mindblaze extends CardImpl {
public Mindblaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MindbreakTrap.java b/Mage.Sets/src/mage/cards/m/MindbreakTrap.java
index 73421b69954..6a174f83142 100644
--- a/Mage.Sets/src/mage/cards/m/MindbreakTrap.java
+++ b/Mage.Sets/src/mage/cards/m/MindbreakTrap.java
@@ -46,7 +46,7 @@ import java.util.UUID;
/**
* @author Rafbill
*/
-public class MindbreakTrap extends CardImpl {
+public final class MindbreakTrap extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell to exile");
diff --git a/Mage.Sets/src/mage/cards/m/MindclawShaman.java b/Mage.Sets/src/mage/cards/m/MindclawShaman.java
index 343c7be3058..cb4e71c89a5 100644
--- a/Mage.Sets/src/mage/cards/m/MindclawShaman.java
+++ b/Mage.Sets/src/mage/cards/m/MindclawShaman.java
@@ -30,6 +30,7 @@ package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -37,8 +38,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.Predicates;
@@ -52,10 +53,10 @@ import mage.target.common.TargetOpponent;
*
* @author jeffwadsworth
*/
-public class MindclawShaman extends CardImpl {
+public final class MindclawShaman extends CardImpl {
public MindclawShaman(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
this.subtype.add(SubType.VIASHINO);
this.subtype.add(SubType.SHAMAN);
@@ -81,13 +82,13 @@ public class MindclawShaman extends CardImpl {
class MindclawShamanEffect extends OneShotEffect {
private static final FilterCard filter = new FilterCard("instant or sorcery card");
-
+
static {
filter.add(Predicates.or(
- new CardTypePredicate(CardType.INSTANT),
- new CardTypePredicate(CardType.SORCERY)));
+ new CardTypePredicate(CardType.INSTANT),
+ new CardTypePredicate(CardType.SORCERY)));
}
-
+
public MindclawShamanEffect() {
super(Outcome.Discard);
this.staticText = "target opponent reveals their hand. You may cast an instant or sorcery card from it without paying its mana cost";
@@ -106,7 +107,7 @@ class MindclawShamanEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player targetOpponent = game.getPlayer(source.getFirstTarget());
MageObject sourceObject = source.getSourceObject(game);
- if (targetOpponent != null && sourceObject != null) {
+ if (targetOpponent != null && sourceObject != null) {
if (!targetOpponent.getHand().isEmpty()) {
targetOpponent.revealCards(sourceObject.getName(), targetOpponent.getHand(), game);
Player controller = game.getPlayer(source.getControllerId());
@@ -117,9 +118,9 @@ class MindclawShamanEffect extends OneShotEffect {
Card chosenCard = targetOpponent.getHand().get(target.getFirstTarget(), game);
if (chosenCard != null) {
if (controller.chooseUse(Outcome.Benefit, "Cast the chosen card?", source, game)) {
- controller.cast(chosenCard.getSpellAbility(), game, true);
+ controller.cast(chosenCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
} else {
- game.informPlayers(sourceObject.getLogName() +": " + controller.getLogName() + " canceled casting the card.");
+ game.informPlayers(sourceObject.getLogName() + ": " + controller.getLogName() + " canceled casting the card.");
}
}
}
@@ -129,4 +130,4 @@ class MindclawShamanEffect extends OneShotEffect {
}
return false;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/m/Mindcrank.java b/Mage.Sets/src/mage/cards/m/Mindcrank.java
index ad413d1f592..d036fee531b 100644
--- a/Mage.Sets/src/mage/cards/m/Mindcrank.java
+++ b/Mage.Sets/src/mage/cards/m/Mindcrank.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class Mindcrank extends CardImpl {
+public final class Mindcrank extends CardImpl {
public Mindcrank(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/Mindculling.java b/Mage.Sets/src/mage/cards/m/Mindculling.java
index 005711e3288..0fe293aeee0 100644
--- a/Mage.Sets/src/mage/cards/m/Mindculling.java
+++ b/Mage.Sets/src/mage/cards/m/Mindculling.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponent;
*
* @author North
*/
-public class Mindculling extends CardImpl {
+public final class Mindculling extends CardImpl {
public Mindculling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindeyeDrake.java b/Mage.Sets/src/mage/cards/m/MindeyeDrake.java
index b75839382e7..1d435be8524 100644
--- a/Mage.Sets/src/mage/cards/m/MindeyeDrake.java
+++ b/Mage.Sets/src/mage/cards/m/MindeyeDrake.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class MindeyeDrake extends CardImpl {
+public final class MindeyeDrake extends CardImpl {
public MindeyeDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindlashSliver.java b/Mage.Sets/src/mage/cards/m/MindlashSliver.java
index 2c20cd999ca..becf7dcd7f9 100644
--- a/Mage.Sets/src/mage/cards/m/MindlashSliver.java
+++ b/Mage.Sets/src/mage/cards/m/MindlashSliver.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class MindlashSliver extends CardImpl {
+public final class MindlashSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/m/MindleechMass.java b/Mage.Sets/src/mage/cards/m/MindleechMass.java
index a604d7764aa..ba93dcbdd96 100644
--- a/Mage.Sets/src/mage/cards/m/MindleechMass.java
+++ b/Mage.Sets/src/mage/cards/m/MindleechMass.java
@@ -29,6 +29,7 @@ package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -39,8 +40,8 @@ import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterNonlandCard;
import mage.game.Game;
@@ -51,10 +52,10 @@ import mage.target.TargetCard;
*
* @author jeffwadsworth
*/
-public class MindleechMass extends CardImpl {
+public final class MindleechMass extends CardImpl {
public MindleechMass(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{B}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{B}{B}");
this.subtype.add(SubType.HORROR);
this.power = new MageInt(6);
@@ -62,7 +63,7 @@ public class MindleechMass extends CardImpl {
// Trample
this.addAbility(TrampleAbility.getInstance());
-
+
// Whenever Mindleech Mass deals combat damage to a player, you may look at that player's hand. If you do, you may cast a nonland card in it without paying that card's mana cost.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new MindleechMassEffect(), true, true));
}
@@ -96,18 +97,18 @@ class MindleechMassEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player opponent = game.getPlayer(getTargetPointer().getFirst(game, source));
- Player you = game.getPlayer(source.getControllerId());
- if (opponent != null && you != null) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (opponent != null && controller != null) {
Cards cardsInHand = new CardsImpl();
cardsInHand.addAll(opponent.getHand());
opponent.revealCards("Opponents hand", cardsInHand, game);
if (!cardsInHand.isEmpty()
&& !cardsInHand.getCards(new FilterNonlandCard(), game).isEmpty()) {
TargetCard target = new TargetCard(1, Zone.HAND, new FilterNonlandCard());
- if (you.chooseTarget(Outcome.PlayForFree, cardsInHand, target, source, game)) {
+ if (controller.chooseTarget(Outcome.PlayForFree, cardsInHand, target, source, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- you.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/m/MindlessAutomaton.java b/Mage.Sets/src/mage/cards/m/MindlessAutomaton.java
index 8605e6e288b..718c9d18992 100644
--- a/Mage.Sets/src/mage/cards/m/MindlessAutomaton.java
+++ b/Mage.Sets/src/mage/cards/m/MindlessAutomaton.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author emerald000
*/
-public class MindlessAutomaton extends CardImpl {
+public final class MindlessAutomaton extends CardImpl {
public MindlessAutomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/m/MindlessNull.java b/Mage.Sets/src/mage/cards/m/MindlessNull.java
index 08189364171..502cf3ce97c 100644
--- a/Mage.Sets/src/mage/cards/m/MindlessNull.java
+++ b/Mage.Sets/src/mage/cards/m/MindlessNull.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class MindlessNull extends CardImpl {
+public final class MindlessNull extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Vampire");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MindlockOrb.java b/Mage.Sets/src/mage/cards/m/MindlockOrb.java
index 5de20d19161..9e5a6dce944 100644
--- a/Mage.Sets/src/mage/cards/m/MindlockOrb.java
+++ b/Mage.Sets/src/mage/cards/m/MindlockOrb.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Plopman
*/
-public class MindlockOrb extends CardImpl {
+public final class MindlockOrb extends CardImpl {
public MindlockOrb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/Mindmelter.java b/Mage.Sets/src/mage/cards/m/Mindmelter.java
index cd62ecbc9c1..9043f7ed617 100644
--- a/Mage.Sets/src/mage/cards/m/Mindmelter.java
+++ b/Mage.Sets/src/mage/cards/m/Mindmelter.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class Mindmelter extends CardImpl {
+public final class Mindmelter extends CardImpl {
public Mindmelter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Mindmoil.java b/Mage.Sets/src/mage/cards/m/Mindmoil.java
index d8aab07ef1d..64b29227243 100644
--- a/Mage.Sets/src/mage/cards/m/Mindmoil.java
+++ b/Mage.Sets/src/mage/cards/m/Mindmoil.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class Mindmoil extends CardImpl {
+public final class Mindmoil extends CardImpl {
public Mindmoil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Mindreaver.java b/Mage.Sets/src/mage/cards/m/Mindreaver.java
index 24370b26641..cfbd7a2eae1 100644
--- a/Mage.Sets/src/mage/cards/m/Mindreaver.java
+++ b/Mage.Sets/src/mage/cards/m/Mindreaver.java
@@ -62,7 +62,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class Mindreaver extends CardImpl {
+public final class Mindreaver extends CardImpl {
public Mindreaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindsAglow.java b/Mage.Sets/src/mage/cards/m/MindsAglow.java
index 2f2137d1f8d..21b9828b161 100644
--- a/Mage.Sets/src/mage/cards/m/MindsAglow.java
+++ b/Mage.Sets/src/mage/cards/m/MindsAglow.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MindsAglow extends CardImpl {
+public final class MindsAglow extends CardImpl {
public MindsAglow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindsDesire.java b/Mage.Sets/src/mage/cards/m/MindsDesire.java
index e6a209d4f7b..4f9ed548974 100644
--- a/Mage.Sets/src/mage/cards/m/MindsDesire.java
+++ b/Mage.Sets/src/mage/cards/m/MindsDesire.java
@@ -49,7 +49,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class MindsDesire extends CardImpl {
+public final class MindsDesire extends CardImpl {
public MindsDesire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindsDilation.java b/Mage.Sets/src/mage/cards/m/MindsDilation.java
index e19befd169b..44d369d4146 100644
--- a/Mage.Sets/src/mage/cards/m/MindsDilation.java
+++ b/Mage.Sets/src/mage/cards/m/MindsDilation.java
@@ -30,6 +30,7 @@ package mage.cards.m;
import java.util.List;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastOpponentTriggeredAbility;
import mage.abilities.effects.Effect;
@@ -52,10 +53,10 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author fireshoes
*/
-public class MindsDilation extends CardImpl {
+public final class MindsDilation extends CardImpl {
public MindsDilation(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{U}{U}");
// Whenever an opponent casts their first spell each turn, that player exiles the top card of their library. If it's a nonland card,
// you may cast it without paying its mana cost.
@@ -138,7 +139,7 @@ class MindsDilationEffect extends OneShotEffect {
if (card != null && opponent.moveCards(card, Zone.EXILED, source, game)) {
if (!card.isLand()) {
if (controller.chooseUse(outcome, "Cast " + card.getLogName() + " without paying its mana cost from exile?", source, game)) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/m/MindsEye.java b/Mage.Sets/src/mage/cards/m/MindsEye.java
index 55ac81c5ca7..3eb4eda768b 100644
--- a/Mage.Sets/src/mage/cards/m/MindsEye.java
+++ b/Mage.Sets/src/mage/cards/m/MindsEye.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class MindsEye extends CardImpl {
+public final class MindsEye extends CardImpl {
public MindsEye(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/m/MindscourDragon.java b/Mage.Sets/src/mage/cards/m/MindscourDragon.java
index b94d8c701d6..2a1318df415 100644
--- a/Mage.Sets/src/mage/cards/m/MindscourDragon.java
+++ b/Mage.Sets/src/mage/cards/m/MindscourDragon.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author emerald000
*/
-public class MindscourDragon extends CardImpl {
+public final class MindscourDragon extends CardImpl {
public MindscourDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/Mindshrieker.java b/Mage.Sets/src/mage/cards/m/Mindshrieker.java
index f07786d3b5b..83093e12627 100644
--- a/Mage.Sets/src/mage/cards/m/Mindshrieker.java
+++ b/Mage.Sets/src/mage/cards/m/Mindshrieker.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward
*/
-public class Mindshrieker extends CardImpl {
+public final class Mindshrieker extends CardImpl {
public Mindshrieker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/Mindslaver.java b/Mage.Sets/src/mage/cards/m/Mindslaver.java
index 5d107817067..822b1626bda 100644
--- a/Mage.Sets/src/mage/cards/m/Mindslaver.java
+++ b/Mage.Sets/src/mage/cards/m/Mindslaver.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author nantuko
*/
-public class Mindslaver extends CardImpl {
+public final class Mindslaver extends CardImpl {
public Mindslaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/m/Mindslicer.java b/Mage.Sets/src/mage/cards/m/Mindslicer.java
index d3a33297253..28e55d23335 100644
--- a/Mage.Sets/src/mage/cards/m/Mindslicer.java
+++ b/Mage.Sets/src/mage/cards/m/Mindslicer.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author cbt33
*/
-public class Mindslicer extends CardImpl {
+public final class Mindslicer extends CardImpl {
public Mindslicer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Mindsparker.java b/Mage.Sets/src/mage/cards/m/Mindsparker.java
index 00e98de566c..20105daa4ed 100644
--- a/Mage.Sets/src/mage/cards/m/Mindsparker.java
+++ b/Mage.Sets/src/mage/cards/m/Mindsparker.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class Mindsparker extends CardImpl {
+public final class Mindsparker extends CardImpl {
private static final FilterSpell filter = new FilterSpell("white or blue instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/m/Mindstab.java b/Mage.Sets/src/mage/cards/m/Mindstab.java
index ad7095ed8de..a8566b34d97 100644
--- a/Mage.Sets/src/mage/cards/m/Mindstab.java
+++ b/Mage.Sets/src/mage/cards/m/Mindstab.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class Mindstab extends CardImpl {
+public final class Mindstab extends CardImpl {
public Mindstab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindstabThrull.java b/Mage.Sets/src/mage/cards/m/MindstabThrull.java
index c899b31b3a2..a20da939011 100644
--- a/Mage.Sets/src/mage/cards/m/MindstabThrull.java
+++ b/Mage.Sets/src/mage/cards/m/MindstabThrull.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class MindstabThrull extends CardImpl {
+public final class MindstabThrull extends CardImpl {
public MindstabThrull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Mindstatic.java b/Mage.Sets/src/mage/cards/m/Mindstatic.java
index bb3a0c36bce..ff57a9709e6 100644
--- a/Mage.Sets/src/mage/cards/m/Mindstatic.java
+++ b/Mage.Sets/src/mage/cards/m/Mindstatic.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*/
-public class Mindstatic extends CardImpl {
+public final class Mindstatic extends CardImpl {
public Mindstatic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MindstormCrown.java b/Mage.Sets/src/mage/cards/m/MindstormCrown.java
index 4170b7a6cdd..a20397fc5ff 100644
--- a/Mage.Sets/src/mage/cards/m/MindstormCrown.java
+++ b/Mage.Sets/src/mage/cards/m/MindstormCrown.java
@@ -47,7 +47,7 @@ import mage.watchers.Watcher;
*
* @author TheElk801
*/
-public class MindstormCrown extends CardImpl {
+public final class MindstormCrown extends CardImpl {
public MindstormCrown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/m/Mindswipe.java b/Mage.Sets/src/mage/cards/m/Mindswipe.java
index b96ac13f985..07e59264066 100644
--- a/Mage.Sets/src/mage/cards/m/Mindswipe.java
+++ b/Mage.Sets/src/mage/cards/m/Mindswipe.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Mindswipe extends CardImpl {
+public final class Mindswipe extends CardImpl {
public Mindswipe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Mindwarper.java b/Mage.Sets/src/mage/cards/m/Mindwarper.java
index ce03d5ded02..7e8d1b132f1 100644
--- a/Mage.Sets/src/mage/cards/m/Mindwarper.java
+++ b/Mage.Sets/src/mage/cards/m/Mindwarper.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class Mindwarper extends CardImpl {
+public final class Mindwarper extends CardImpl {
public Mindwarper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindwhipSliver.java b/Mage.Sets/src/mage/cards/m/MindwhipSliver.java
index 9e97ef8ec8d..2dae83a062c 100644
--- a/Mage.Sets/src/mage/cards/m/MindwhipSliver.java
+++ b/Mage.Sets/src/mage/cards/m/MindwhipSliver.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author anonymous
*/
-public class MindwhipSliver extends CardImpl {
+public final class MindwhipSliver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("All Slivers");
diff --git a/Mage.Sets/src/mage/cards/m/MindwrackDemon.java b/Mage.Sets/src/mage/cards/m/MindwrackDemon.java
index cf471b1310f..224b87854a3 100644
--- a/Mage.Sets/src/mage/cards/m/MindwrackDemon.java
+++ b/Mage.Sets/src/mage/cards/m/MindwrackDemon.java
@@ -49,7 +49,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class MindwrackDemon extends CardImpl {
+public final class MindwrackDemon extends CardImpl {
public MindwrackDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MindwrackLiege.java b/Mage.Sets/src/mage/cards/m/MindwrackLiege.java
index e2deb019e07..231f80e52b7 100644
--- a/Mage.Sets/src/mage/cards/m/MindwrackLiege.java
+++ b/Mage.Sets/src/mage/cards/m/MindwrackLiege.java
@@ -33,7 +33,7 @@ import mage.ObjectColor;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -53,7 +53,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
* @author jeffwadsworth
*/
-public class MindwrackLiege extends CardImpl {
+public final class MindwrackLiege extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creatures you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("red creatures you control");
@@ -81,7 +81,7 @@ public class MindwrackLiege extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter2, true)));
// {UR}{UR}{UR}{UR}: You may put a blue or red creature card from your hand onto the battlefield.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutPermanentOnBattlefieldEffect(filter3), new ManaCostsImpl("{U/R}{U/R}{U/R}{U/R}")));
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutCardFromHandOntoBattlefieldEffect(filter3), new ManaCostsImpl("{U/R}{U/R}{U/R}{U/R}")));
}
public MindwrackLiege(final MindwrackLiege card) {
diff --git a/Mage.Sets/src/mage/cards/m/MineBearer.java b/Mage.Sets/src/mage/cards/m/MineBearer.java
index c27e9623a39..b2e7896029d 100644
--- a/Mage.Sets/src/mage/cards/m/MineBearer.java
+++ b/Mage.Sets/src/mage/cards/m/MineBearer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author LoneFox
*/
-public class MineBearer extends CardImpl {
+public final class MineBearer extends CardImpl {
public MineBearer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MineExcavation.java b/Mage.Sets/src/mage/cards/m/MineExcavation.java
index f28c15c9787..64156c89285 100644
--- a/Mage.Sets/src/mage/cards/m/MineExcavation.java
+++ b/Mage.Sets/src/mage/cards/m/MineExcavation.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author jeffwadsworth
*/
-public class MineExcavation extends CardImpl {
+public final class MineExcavation extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact or enchantment card in a graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MineLayer.java b/Mage.Sets/src/mage/cards/m/MineLayer.java
index 1c2342f6294..86be4a89976 100644
--- a/Mage.Sets/src/mage/cards/m/MineLayer.java
+++ b/Mage.Sets/src/mage/cards/m/MineLayer.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author TheElk801
*/
-public class MineLayer extends CardImpl {
+public final class MineLayer extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("land with a mine counter on it");
diff --git a/Mage.Sets/src/mage/cards/m/MineMineMine.java b/Mage.Sets/src/mage/cards/m/MineMineMine.java
index e5b7648e21b..c741fb9e203 100644
--- a/Mage.Sets/src/mage/cards/m/MineMineMine.java
+++ b/Mage.Sets/src/mage/cards/m/MineMineMine.java
@@ -34,6 +34,7 @@ import mage.abilities.common.LeavesBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.ReplacementEffectImpl;
+import mage.abilities.effects.common.ShuffleHandGraveyardAllEffect;
import mage.abilities.effects.common.continuous.CantCastMoreThanOneSpellEffect;
import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect;
import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect.HandSizeModification;
@@ -53,25 +54,25 @@ import mage.players.Player;
*
* @author L_J
*/
-public class MineMineMine extends CardImpl {
+public final class MineMineMine extends CardImpl {
public MineMineMine(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{G}{G}");
// When Mine, Mine, Mine enters the battlefield, each player puts his or her library into his or her hand.
this.addAbility(new EntersBattlefieldTriggeredAbility(new MineMineMineDrawEffect()));
// Players have no maximum hand size and don't lose the game for drawing from an empty library.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new MaximumHandSizeControllerEffect(Integer.MAX_VALUE, Duration.WhileOnBattlefield, HandSizeModification.SET, TargetController.ANY)
- .setText("Players have no maximum hand size and don't lose the game for drawing from an empty library")));
+ .setText("Players have no maximum hand size and don't lose the game for drawing from an empty library")));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new MineMineMineDontLoseEffect()));
// Each player can't cast more than one spell each turn.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantCastMoreThanOneSpellEffect(TargetController.ANY)));
-
+
// When Mine, Mine, Mine leaves the battlefield, each player shuffles his or her hand and graveyard into his or her library.
- this.addAbility(new LeavesBattlefieldTriggeredAbility(new MineMineMineShuffleEffect(), false));
+ this.addAbility(new LeavesBattlefieldTriggeredAbility(new ShuffleHandGraveyardAllEffect(), false));
}
public MineMineMine(final MineMineMine card) {
@@ -133,7 +134,7 @@ class MineMineMineDontLoseEffect extends ReplacementEffectImpl {
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
return true;
}
-
+
@Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DRAW_CARD;
@@ -148,33 +149,3 @@ class MineMineMineDontLoseEffect extends ReplacementEffectImpl {
return false;
}
}
-
-class MineMineMineShuffleEffect extends OneShotEffect {
-
- public MineMineMineShuffleEffect() {
- super(Outcome.Neutral);
- staticText = "each player shuffles his or her hand and graveyard into his or her library";
- }
-
- public MineMineMineShuffleEffect(final MineMineMineShuffleEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- player.moveCards(player.getHand(), Zone.LIBRARY, source, game);
- player.moveCards(player.getGraveyard(), Zone.LIBRARY, source, game);
- player.shuffleLibrary(source, game);
- }
- }
- return true;
- }
-
- @Override
- public MineMineMineShuffleEffect copy() {
- return new MineMineMineShuffleEffect(this);
- }
-}
diff --git a/Mage.Sets/src/mage/cards/m/MinersBane.java b/Mage.Sets/src/mage/cards/m/MinersBane.java
index 1e8f00fda60..f354ba41861 100644
--- a/Mage.Sets/src/mage/cards/m/MinersBane.java
+++ b/Mage.Sets/src/mage/cards/m/MinersBane.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class MinersBane extends CardImpl {
+public final class MinersBane extends CardImpl {
public MinersBane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MinionOfLeshrac.java b/Mage.Sets/src/mage/cards/m/MinionOfLeshrac.java
index 823f253169c..5adabb8a656 100644
--- a/Mage.Sets/src/mage/cards/m/MinionOfLeshrac.java
+++ b/Mage.Sets/src/mage/cards/m/MinionOfLeshrac.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class MinionOfLeshrac extends CardImpl {
+public final class MinionOfLeshrac extends CardImpl {
private static final FilterPermanent filterCreatureOrLand = new FilterPermanent("creature or land");
diff --git a/Mage.Sets/src/mage/cards/m/MinionOfTeveshSzat.java b/Mage.Sets/src/mage/cards/m/MinionOfTeveshSzat.java
index e55d431936d..83a85660730 100644
--- a/Mage.Sets/src/mage/cards/m/MinionOfTeveshSzat.java
+++ b/Mage.Sets/src/mage/cards/m/MinionOfTeveshSzat.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class MinionOfTeveshSzat extends CardImpl {
+public final class MinionOfTeveshSzat extends CardImpl {
public MinionOfTeveshSzat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MinionOfTheWastes.java b/Mage.Sets/src/mage/cards/m/MinionOfTheWastes.java
index 2714adcea44..31323193724 100644
--- a/Mage.Sets/src/mage/cards/m/MinionOfTheWastes.java
+++ b/Mage.Sets/src/mage/cards/m/MinionOfTheWastes.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class MinionOfTheWastes extends CardImpl {
+public final class MinionOfTheWastes extends CardImpl {
public MinionOfTheWastes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MinionReflector.java b/Mage.Sets/src/mage/cards/m/MinionReflector.java
index ffbd54acda0..bfb38e14d4e 100644
--- a/Mage.Sets/src/mage/cards/m/MinionReflector.java
+++ b/Mage.Sets/src/mage/cards/m/MinionReflector.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class MinionReflector extends CardImpl {
+public final class MinionReflector extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/m/MinionsMurmurs.java b/Mage.Sets/src/mage/cards/m/MinionsMurmurs.java
index 0d0ea997b30..7b753bd5a40 100644
--- a/Mage.Sets/src/mage/cards/m/MinionsMurmurs.java
+++ b/Mage.Sets/src/mage/cards/m/MinionsMurmurs.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author Derpthemeus
*/
-public class MinionsMurmurs extends CardImpl {
+public final class MinionsMurmurs extends CardImpl {
public MinionsMurmurs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MinisterOfImpediments.java b/Mage.Sets/src/mage/cards/m/MinisterOfImpediments.java
index 3b1169fb068..cc23ac348f4 100644
--- a/Mage.Sets/src/mage/cards/m/MinisterOfImpediments.java
+++ b/Mage.Sets/src/mage/cards/m/MinisterOfImpediments.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MinisterOfImpediments extends CardImpl {
+public final class MinisterOfImpediments extends CardImpl {
public MinisterOfImpediments(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/m/MinisterOfInquiries.java b/Mage.Sets/src/mage/cards/m/MinisterOfInquiries.java
index c75ee03f19d..21af9c77cca 100644
--- a/Mage.Sets/src/mage/cards/m/MinisterOfInquiries.java
+++ b/Mage.Sets/src/mage/cards/m/MinisterOfInquiries.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class MinisterOfInquiries extends CardImpl {
+public final class MinisterOfInquiries extends CardImpl {
public MinisterOfInquiries(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MinisterOfPain.java b/Mage.Sets/src/mage/cards/m/MinisterOfPain.java
index b69c053322e..cd04792ca0f 100644
--- a/Mage.Sets/src/mage/cards/m/MinisterOfPain.java
+++ b/Mage.Sets/src/mage/cards/m/MinisterOfPain.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class MinisterOfPain extends CardImpl {
+public final class MinisterOfPain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/m/MinotaurAbomination.java b/Mage.Sets/src/mage/cards/m/MinotaurAbomination.java
index bb675c68f67..44feaee4476 100644
--- a/Mage.Sets/src/mage/cards/m/MinotaurAbomination.java
+++ b/Mage.Sets/src/mage/cards/m/MinotaurAbomination.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MinotaurAbomination extends CardImpl {
+public final class MinotaurAbomination extends CardImpl {
public MinotaurAbomination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MinotaurAggressor.java b/Mage.Sets/src/mage/cards/m/MinotaurAggressor.java
index 3c361a06f05..3be1ffc86ff 100644
--- a/Mage.Sets/src/mage/cards/m/MinotaurAggressor.java
+++ b/Mage.Sets/src/mage/cards/m/MinotaurAggressor.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MinotaurAggressor extends CardImpl {
+public final class MinotaurAggressor extends CardImpl {
public MinotaurAggressor (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MinotaurExplorer.java b/Mage.Sets/src/mage/cards/m/MinotaurExplorer.java
index 9703d31a23f..bbae390c088 100644
--- a/Mage.Sets/src/mage/cards/m/MinotaurExplorer.java
+++ b/Mage.Sets/src/mage/cards/m/MinotaurExplorer.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author cbt33
*/
-public class MinotaurExplorer extends CardImpl {
+public final class MinotaurExplorer extends CardImpl {
public MinotaurExplorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MinotaurIllusionist.java b/Mage.Sets/src/mage/cards/m/MinotaurIllusionist.java
index fcb963fe982..079c7059286 100644
--- a/Mage.Sets/src/mage/cards/m/MinotaurIllusionist.java
+++ b/Mage.Sets/src/mage/cards/m/MinotaurIllusionist.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class MinotaurIllusionist extends CardImpl {
+public final class MinotaurIllusionist extends CardImpl {
public MinotaurIllusionist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MinotaurSkullcleaver.java b/Mage.Sets/src/mage/cards/m/MinotaurSkullcleaver.java
index 8a844c2561b..959a3d2fbea 100644
--- a/Mage.Sets/src/mage/cards/m/MinotaurSkullcleaver.java
+++ b/Mage.Sets/src/mage/cards/m/MinotaurSkullcleaver.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class MinotaurSkullcleaver extends CardImpl {
+public final class MinotaurSkullcleaver extends CardImpl {
public MinotaurSkullcleaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MinotaurSureshot.java b/Mage.Sets/src/mage/cards/m/MinotaurSureshot.java
index f49ae29b102..2ed5145b308 100644
--- a/Mage.Sets/src/mage/cards/m/MinotaurSureshot.java
+++ b/Mage.Sets/src/mage/cards/m/MinotaurSureshot.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MinotaurSureshot extends CardImpl {
+public final class MinotaurSureshot extends CardImpl {
public MinotaurSureshot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MinotaurTactician.java b/Mage.Sets/src/mage/cards/m/MinotaurTactician.java
index b9203d82880..823fbbf036f 100644
--- a/Mage.Sets/src/mage/cards/m/MinotaurTactician.java
+++ b/Mage.Sets/src/mage/cards/m/MinotaurTactician.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class MinotaurTactician extends CardImpl {
+public final class MinotaurTactician extends CardImpl {
private static final FilterControlledCreaturePermanent filterWhite = new FilterControlledCreaturePermanent();
private static final FilterControlledCreaturePermanent filterBlue = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/m/MinotaurWarrior.java b/Mage.Sets/src/mage/cards/m/MinotaurWarrior.java
index beb51ae13bf..c371bc19016 100644
--- a/Mage.Sets/src/mage/cards/m/MinotaurWarrior.java
+++ b/Mage.Sets/src/mage/cards/m/MinotaurWarrior.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class MinotaurWarrior extends CardImpl {
+public final class MinotaurWarrior extends CardImpl {
public MinotaurWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MiracleWorker.java b/Mage.Sets/src/mage/cards/m/MiracleWorker.java
index 9c336e1c8cc..124bfa77de2 100644
--- a/Mage.Sets/src/mage/cards/m/MiracleWorker.java
+++ b/Mage.Sets/src/mage/cards/m/MiracleWorker.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class MiracleWorker extends CardImpl {
+public final class MiracleWorker extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Aura attached to a creature you control");
diff --git a/Mage.Sets/src/mage/cards/m/MiraculousRecovery.java b/Mage.Sets/src/mage/cards/m/MiraculousRecovery.java
index 900e9535133..1b002108808 100644
--- a/Mage.Sets/src/mage/cards/m/MiraculousRecovery.java
+++ b/Mage.Sets/src/mage/cards/m/MiraculousRecovery.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class MiraculousRecovery extends CardImpl {
+public final class MiraculousRecovery extends CardImpl {
public MiraculousRecovery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MirageMirror.java b/Mage.Sets/src/mage/cards/m/MirageMirror.java
index a7639eabdd1..396384b0d24 100644
--- a/Mage.Sets/src/mage/cards/m/MirageMirror.java
+++ b/Mage.Sets/src/mage/cards/m/MirageMirror.java
@@ -48,7 +48,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author fireshoes
*/
-public class MirageMirror extends CardImpl {
+public final class MirageMirror extends CardImpl {
diff --git a/Mage.Sets/src/mage/cards/m/Mirari.java b/Mage.Sets/src/mage/cards/m/Mirari.java
index f9732899095..2221841a754 100644
--- a/Mage.Sets/src/mage/cards/m/Mirari.java
+++ b/Mage.Sets/src/mage/cards/m/Mirari.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class Mirari extends CardImpl {
+public final class Mirari extends CardImpl {
public Mirari(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/m/MirarisWake.java b/Mage.Sets/src/mage/cards/m/MirarisWake.java
index b88540e0747..287f7d563f7 100644
--- a/Mage.Sets/src/mage/cards/m/MirarisWake.java
+++ b/Mage.Sets/src/mage/cards/m/MirarisWake.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author LevelX2
*/
-public class MirarisWake extends CardImpl {
+public final class MirarisWake extends CardImpl {
public MirarisWake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MireBlight.java b/Mage.Sets/src/mage/cards/m/MireBlight.java
index 96975c082c9..b7f457e08fb 100644
--- a/Mage.Sets/src/mage/cards/m/MireBlight.java
+++ b/Mage.Sets/src/mage/cards/m/MireBlight.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MireBlight extends CardImpl {
+public final class MireBlight extends CardImpl {
public MireBlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MireBoa.java b/Mage.Sets/src/mage/cards/m/MireBoa.java
index 1c9a78f9956..ab1b3bd382b 100644
--- a/Mage.Sets/src/mage/cards/m/MireBoa.java
+++ b/Mage.Sets/src/mage/cards/m/MireBoa.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MireBoa extends CardImpl {
+public final class MireBoa extends CardImpl {
public MireBoa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MireKavu.java b/Mage.Sets/src/mage/cards/m/MireKavu.java
index 8085d61637b..87347a1dbd4 100644
--- a/Mage.Sets/src/mage/cards/m/MireKavu.java
+++ b/Mage.Sets/src/mage/cards/m/MireKavu.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class MireKavu extends CardImpl {
+public final class MireKavu extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Swamp");
diff --git a/Mage.Sets/src/mage/cards/m/MireShade.java b/Mage.Sets/src/mage/cards/m/MireShade.java
index 4532401bc4a..7b4e7d94e90 100644
--- a/Mage.Sets/src/mage/cards/m/MireShade.java
+++ b/Mage.Sets/src/mage/cards/m/MireShade.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class MireShade extends CardImpl {
+public final class MireShade extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Swamp");
diff --git a/Mage.Sets/src/mage/cards/m/MirenTheMoaningWell.java b/Mage.Sets/src/mage/cards/m/MirenTheMoaningWell.java
index 4bf73bf3b5b..1c970603c27 100644
--- a/Mage.Sets/src/mage/cards/m/MirenTheMoaningWell.java
+++ b/Mage.Sets/src/mage/cards/m/MirenTheMoaningWell.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class MirenTheMoaningWell extends CardImpl {
+public final class MirenTheMoaningWell extends CardImpl {
public MirenTheMoaningWell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/m/MiresMalice.java b/Mage.Sets/src/mage/cards/m/MiresMalice.java
index 3717373cd1b..e52f37abf13 100644
--- a/Mage.Sets/src/mage/cards/m/MiresMalice.java
+++ b/Mage.Sets/src/mage/cards/m/MiresMalice.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class MiresMalice extends CardImpl {
+public final class MiresMalice extends CardImpl {
public MiresMalice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MiresToll.java b/Mage.Sets/src/mage/cards/m/MiresToll.java
index eb573464c15..0cc89c5c97c 100644
--- a/Mage.Sets/src/mage/cards/m/MiresToll.java
+++ b/Mage.Sets/src/mage/cards/m/MiresToll.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class MiresToll extends CardImpl {
+public final class MiresToll extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("the number of Swamps you control");
diff --git a/Mage.Sets/src/mage/cards/m/MirkoVoskMindDrinker.java b/Mage.Sets/src/mage/cards/m/MirkoVoskMindDrinker.java
index 107202de6df..a180b105673 100644
--- a/Mage.Sets/src/mage/cards/m/MirkoVoskMindDrinker.java
+++ b/Mage.Sets/src/mage/cards/m/MirkoVoskMindDrinker.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MirkoVoskMindDrinker extends CardImpl {
+public final class MirkoVoskMindDrinker extends CardImpl {
public MirkoVoskMindDrinker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Mirozel.java b/Mage.Sets/src/mage/cards/m/Mirozel.java
index aaa37d9a074..f80a5c3a365 100644
--- a/Mage.Sets/src/mage/cards/m/Mirozel.java
+++ b/Mage.Sets/src/mage/cards/m/Mirozel.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class Mirozel extends CardImpl {
+public final class Mirozel extends CardImpl {
public Mirozel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MirranCrusader.java b/Mage.Sets/src/mage/cards/m/MirranCrusader.java
index f09eef8a8a2..68c0af83d8e 100644
--- a/Mage.Sets/src/mage/cards/m/MirranCrusader.java
+++ b/Mage.Sets/src/mage/cards/m/MirranCrusader.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author ayratn
*/
-public class MirranCrusader extends CardImpl {
+public final class MirranCrusader extends CardImpl {
public MirranCrusader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MirranMettle.java b/Mage.Sets/src/mage/cards/m/MirranMettle.java
index fc9930636b7..53046212fde 100644
--- a/Mage.Sets/src/mage/cards/m/MirranMettle.java
+++ b/Mage.Sets/src/mage/cards/m/MirranMettle.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MirranMettle extends CardImpl {
+public final class MirranMettle extends CardImpl {
private static final String effectText = "Metalcraft - That creature gets +4/+4 until end of turn instead if you control three or more artifacts.";
diff --git a/Mage.Sets/src/mage/cards/m/MirranSpy.java b/Mage.Sets/src/mage/cards/m/MirranSpy.java
index 7e2337edb1c..321139fe6a9 100644
--- a/Mage.Sets/src/mage/cards/m/MirranSpy.java
+++ b/Mage.Sets/src/mage/cards/m/MirranSpy.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MirranSpy extends CardImpl {
+public final class MirranSpy extends CardImpl {
public MirranSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MirriCatWarrior.java b/Mage.Sets/src/mage/cards/m/MirriCatWarrior.java
index 0700630a7c4..7af87b27b41 100644
--- a/Mage.Sets/src/mage/cards/m/MirriCatWarrior.java
+++ b/Mage.Sets/src/mage/cards/m/MirriCatWarrior.java
@@ -42,7 +42,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class MirriCatWarrior extends CardImpl {
+public final class MirriCatWarrior extends CardImpl {
public MirriCatWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MirriTheCursed.java b/Mage.Sets/src/mage/cards/m/MirriTheCursed.java
index f13dd0b46e0..becf18623df 100644
--- a/Mage.Sets/src/mage/cards/m/MirriTheCursed.java
+++ b/Mage.Sets/src/mage/cards/m/MirriTheCursed.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class MirriTheCursed extends CardImpl {
+public final class MirriTheCursed extends CardImpl {
public MirriTheCursed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MirriWeatherlightDuelist.java b/Mage.Sets/src/mage/cards/m/MirriWeatherlightDuelist.java
index dfc24131c17..561fda1d60a 100644
--- a/Mage.Sets/src/mage/cards/m/MirriWeatherlightDuelist.java
+++ b/Mage.Sets/src/mage/cards/m/MirriWeatherlightDuelist.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class MirriWeatherlightDuelist extends CardImpl {
+public final class MirriWeatherlightDuelist extends CardImpl {
public MirriWeatherlightDuelist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MirrisGuile.java b/Mage.Sets/src/mage/cards/m/MirrisGuile.java
index d9b45123e68..d3edb18cfee 100644
--- a/Mage.Sets/src/mage/cards/m/MirrisGuile.java
+++ b/Mage.Sets/src/mage/cards/m/MirrisGuile.java
@@ -39,7 +39,7 @@ import mage.constants.TargetController;
*
* @author emerald000
*/
-public class MirrisGuile extends CardImpl {
+public final class MirrisGuile extends CardImpl {
public MirrisGuile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MirrodinsCore.java b/Mage.Sets/src/mage/cards/m/MirrodinsCore.java
index cbb14cda003..975ba615539 100644
--- a/Mage.Sets/src/mage/cards/m/MirrodinsCore.java
+++ b/Mage.Sets/src/mage/cards/m/MirrodinsCore.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class MirrodinsCore extends CardImpl {
+public final class MirrodinsCore extends CardImpl {
public MirrodinsCore (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorEntity.java b/Mage.Sets/src/mage/cards/m/MirrorEntity.java
index 10b35cd416a..3dc208156b6 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorEntity.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorEntity.java
@@ -52,7 +52,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Plopman
*/
-public class MirrorEntity extends CardImpl {
+public final class MirrorEntity extends CardImpl {
static private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Creatures you control");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorGallery.java b/Mage.Sets/src/mage/cards/m/MirrorGallery.java
index ef27e2224fe..04afd78c95e 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorGallery.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorGallery.java
@@ -45,7 +45,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class MirrorGallery extends CardImpl {
+public final class MirrorGallery extends CardImpl {
public MirrorGallery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorMadPhantasm.java b/Mage.Sets/src/mage/cards/m/MirrorMadPhantasm.java
index f2f478fd50b..f5c5de77b02 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorMadPhantasm.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorMadPhantasm.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class MirrorMadPhantasm extends CardImpl {
+public final class MirrorMadPhantasm extends CardImpl {
public MirrorMadPhantasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorMatch.java b/Mage.Sets/src/mage/cards/m/MirrorMatch.java
index d5d3f8d584b..4ab61e8436c 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorMatch.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorMatch.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author LevelX2
*/
-public class MirrorMatch extends CardImpl {
+public final class MirrorMatch extends CardImpl {
public MirrorMatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorMockery.java b/Mage.Sets/src/mage/cards/m/MirrorMockery.java
index b0572190fbf..5e0b8e1f9ab 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorMockery.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorMockery.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class MirrorMockery extends CardImpl {
+public final class MirrorMockery extends CardImpl {
public MirrorMockery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorOfFate.java b/Mage.Sets/src/mage/cards/m/MirrorOfFate.java
index d3109aa4b7e..a1ae7e1bb82 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorOfFate.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorOfFate.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInExile;
*
* @author North
*/
-public class MirrorOfFate extends CardImpl {
+public final class MirrorOfFate extends CardImpl {
public MirrorOfFate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorOfTheForebears.java b/Mage.Sets/src/mage/cards/m/MirrorOfTheForebears.java
index ca3972d3992..79684171e84 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorOfTheForebears.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorOfTheForebears.java
@@ -54,7 +54,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author TheElk801
*/
-public class MirrorOfTheForebears extends CardImpl {
+public final class MirrorOfTheForebears extends CardImpl {
public MirrorOfTheForebears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorSheen.java b/Mage.Sets/src/mage/cards/m/MirrorSheen.java
index 63d23dae827..4a8617c31e3 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorSheen.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorSheen.java
@@ -51,7 +51,7 @@ import mage.target.TargetSpell;
* @author jeffwadsworth
*
*/
-public class MirrorSheen extends CardImpl {
+public final class MirrorSheen extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery spell that targets you");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorSigilSergeant.java b/Mage.Sets/src/mage/cards/m/MirrorSigilSergeant.java
index f3154577633..3ce4f2ff993 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorSigilSergeant.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorSigilSergeant.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class MirrorSigilSergeant extends CardImpl {
+public final class MirrorSigilSergeant extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("blue permanent");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorStrike.java b/Mage.Sets/src/mage/cards/m/MirrorStrike.java
index 9292fbd1827..944e12aa13d 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorStrike.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorStrike.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class MirrorStrike extends CardImpl {
+public final class MirrorStrike extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("unblocked creature");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorUniverse.java b/Mage.Sets/src/mage/cards/m/MirrorUniverse.java
index aae1fd8ea1e..7218be4fb69 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorUniverse.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorUniverse.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author Styxo
*/
-public class MirrorUniverse extends CardImpl {
+public final class MirrorUniverse extends CardImpl {
public MirrorUniverse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorWall.java b/Mage.Sets/src/mage/cards/m/MirrorWall.java
index 1af430c8a3f..70246aded09 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorWall.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorWall.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MirrorWall extends CardImpl {
+public final class MirrorWall extends CardImpl {
public MirrorWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/Mirrorpool.java b/Mage.Sets/src/mage/cards/m/Mirrorpool.java
index d334b010373..5373c9570dd 100644
--- a/Mage.Sets/src/mage/cards/m/Mirrorpool.java
+++ b/Mage.Sets/src/mage/cards/m/Mirrorpool.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class Mirrorpool extends CardImpl {
+public final class Mirrorpool extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery spell you control");
diff --git a/Mage.Sets/src/mage/cards/m/Mirrorweave.java b/Mage.Sets/src/mage/cards/m/Mirrorweave.java
index 66e0310ed0e..17f6404081e 100644
--- a/Mage.Sets/src/mage/cards/m/Mirrorweave.java
+++ b/Mage.Sets/src/mage/cards/m/Mirrorweave.java
@@ -50,7 +50,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author jeffwadsworth
*/
-public class Mirrorweave extends CardImpl {
+public final class Mirrorweave extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonlegendary creature");
diff --git a/Mage.Sets/src/mage/cards/m/MirrorwingDragon.java b/Mage.Sets/src/mage/cards/m/MirrorwingDragon.java
index 8c4e05b48d4..9762a58cdfa 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorwingDragon.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorwingDragon.java
@@ -53,7 +53,7 @@ import mage.util.TargetAddress;
*
* @author LevelX2
*/
-public class MirrorwingDragon extends CardImpl {
+public final class MirrorwingDragon extends CardImpl {
public MirrorwingDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Mirrorworks.java b/Mage.Sets/src/mage/cards/m/Mirrorworks.java
index d461aebcc82..dc1cd60e989 100644
--- a/Mage.Sets/src/mage/cards/m/Mirrorworks.java
+++ b/Mage.Sets/src/mage/cards/m/Mirrorworks.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Mirrorworks extends CardImpl {
+public final class Mirrorworks extends CardImpl {
private final static FilterArtifactPermanent filter = new FilterArtifactPermanent("another nontoken artifact");
diff --git a/Mage.Sets/src/mage/cards/m/Miscalculation.java b/Mage.Sets/src/mage/cards/m/Miscalculation.java
index 0f0262e9be7..cf618eabaff 100644
--- a/Mage.Sets/src/mage/cards/m/Miscalculation.java
+++ b/Mage.Sets/src/mage/cards/m/Miscalculation.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author Plopman
*/
-public class Miscalculation extends CardImpl {
+public final class Miscalculation extends CardImpl {
public Miscalculation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MischiefAndMayhem.java b/Mage.Sets/src/mage/cards/m/MischiefAndMayhem.java
index bdbc676c646..195c402b9b5 100644
--- a/Mage.Sets/src/mage/cards/m/MischiefAndMayhem.java
+++ b/Mage.Sets/src/mage/cards/m/MischiefAndMayhem.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MischiefAndMayhem extends CardImpl {
+public final class MischiefAndMayhem extends CardImpl {
public MischiefAndMayhem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MischievousPoltergeist.java b/Mage.Sets/src/mage/cards/m/MischievousPoltergeist.java
index 62f6361e7ce..fb15a4e3766 100644
--- a/Mage.Sets/src/mage/cards/m/MischievousPoltergeist.java
+++ b/Mage.Sets/src/mage/cards/m/MischievousPoltergeist.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class MischievousPoltergeist extends CardImpl {
+public final class MischievousPoltergeist extends CardImpl {
public MischievousPoltergeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MischievousQuanar.java b/Mage.Sets/src/mage/cards/m/MischievousQuanar.java
index 646992201e8..235d4505562 100644
--- a/Mage.Sets/src/mage/cards/m/MischievousQuanar.java
+++ b/Mage.Sets/src/mage/cards/m/MischievousQuanar.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class MischievousQuanar extends CardImpl {
+public final class MischievousQuanar extends CardImpl {
public MischievousQuanar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/Misdirection.java b/Mage.Sets/src/mage/cards/m/Misdirection.java
index f4560e65c44..ac932987a7a 100644
--- a/Mage.Sets/src/mage/cards/m/Misdirection.java
+++ b/Mage.Sets/src/mage/cards/m/Misdirection.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author jonubuu
*/
-public class Misdirection extends CardImpl {
+public final class Misdirection extends CardImpl {
private static final FilterSpell filter2 = new FilterSpell("spell with a single target");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MiseryCharm.java b/Mage.Sets/src/mage/cards/m/MiseryCharm.java
index 223878d79a4..f000fb59073 100644
--- a/Mage.Sets/src/mage/cards/m/MiseryCharm.java
+++ b/Mage.Sets/src/mage/cards/m/MiseryCharm.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LoneFox
*/
-public class MiseryCharm extends CardImpl {
+public final class MiseryCharm extends CardImpl {
private static final FilterPermanent filter1 = new FilterPermanent("Cleric");
private static final FilterCard filter2 = new FilterCard("Cleric card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MisfortunesGain.java b/Mage.Sets/src/mage/cards/m/MisfortunesGain.java
index f76e3d47f8b..cc6cc415c77 100644
--- a/Mage.Sets/src/mage/cards/m/MisfortunesGain.java
+++ b/Mage.Sets/src/mage/cards/m/MisfortunesGain.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Scott-Crawford
*/
-public class MisfortunesGain extends CardImpl {
+public final class MisfortunesGain extends CardImpl {
public MisfortunesGain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MisguidedRage.java b/Mage.Sets/src/mage/cards/m/MisguidedRage.java
index b43f19089a6..c8de02f9850 100644
--- a/Mage.Sets/src/mage/cards/m/MisguidedRage.java
+++ b/Mage.Sets/src/mage/cards/m/MisguidedRage.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class MisguidedRage extends CardImpl {
+public final class MisguidedRage extends CardImpl {
public MisguidedRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MishraArtificerProdigy.java b/Mage.Sets/src/mage/cards/m/MishraArtificerProdigy.java
index b04b94e3efb..f4560a19cc9 100644
--- a/Mage.Sets/src/mage/cards/m/MishraArtificerProdigy.java
+++ b/Mage.Sets/src/mage/cards/m/MishraArtificerProdigy.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class MishraArtificerProdigy extends CardImpl {
+public final class MishraArtificerProdigy extends CardImpl {
public MishraArtificerProdigy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MishrasBauble.java b/Mage.Sets/src/mage/cards/m/MishrasBauble.java
index 5abaac709bd..24fdcf3c62c 100644
--- a/Mage.Sets/src/mage/cards/m/MishrasBauble.java
+++ b/Mage.Sets/src/mage/cards/m/MishrasBauble.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class MishrasBauble extends CardImpl {
+public final class MishrasBauble extends CardImpl {
public MishrasBauble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/m/MishrasFactory.java b/Mage.Sets/src/mage/cards/m/MishrasFactory.java
index 08d3375b125..217d7b2c731 100644
--- a/Mage.Sets/src/mage/cards/m/MishrasFactory.java
+++ b/Mage.Sets/src/mage/cards/m/MishrasFactory.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MishrasFactory extends CardImpl {
+public final class MishrasFactory extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Assembly-Worker creature");
diff --git a/Mage.Sets/src/mage/cards/m/MishrasGroundbreaker.java b/Mage.Sets/src/mage/cards/m/MishrasGroundbreaker.java
index 4df644afc6b..5a4187af959 100644
--- a/Mage.Sets/src/mage/cards/m/MishrasGroundbreaker.java
+++ b/Mage.Sets/src/mage/cards/m/MishrasGroundbreaker.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author L_J
*/
-public class MishrasGroundbreaker extends CardImpl {
+public final class MishrasGroundbreaker extends CardImpl {
public MishrasGroundbreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/m/MishrasHelix.java b/Mage.Sets/src/mage/cards/m/MishrasHelix.java
index 8d3446a0396..e1fb5e6674a 100644
--- a/Mage.Sets/src/mage/cards/m/MishrasHelix.java
+++ b/Mage.Sets/src/mage/cards/m/MishrasHelix.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class MishrasHelix extends CardImpl {
+public final class MishrasHelix extends CardImpl {
public MishrasHelix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/m/MishrasSelfReplicator.java b/Mage.Sets/src/mage/cards/m/MishrasSelfReplicator.java
index 0b63e94c38e..b259424ed40 100644
--- a/Mage.Sets/src/mage/cards/m/MishrasSelfReplicator.java
+++ b/Mage.Sets/src/mage/cards/m/MishrasSelfReplicator.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.HistoricPredicate;
*
* @author TheElk801
*/
-public class MishrasSelfReplicator extends CardImpl {
+public final class MishrasSelfReplicator extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a historic spell");
diff --git a/Mage.Sets/src/mage/cards/m/MishrasWarMachine.java b/Mage.Sets/src/mage/cards/m/MishrasWarMachine.java
index 8b36cf97ffc..e8a270baef3 100644
--- a/Mage.Sets/src/mage/cards/m/MishrasWarMachine.java
+++ b/Mage.Sets/src/mage/cards/m/MishrasWarMachine.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author jeffwadsworth & L_J
*/
-public class MishrasWarMachine extends CardImpl {
+public final class MishrasWarMachine extends CardImpl {
public MishrasWarMachine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/m/MishrasWorkshop.java b/Mage.Sets/src/mage/cards/m/MishrasWorkshop.java
index 6be6e5073c7..d439c96915e 100644
--- a/Mage.Sets/src/mage/cards/m/MishrasWorkshop.java
+++ b/Mage.Sets/src/mage/cards/m/MishrasWorkshop.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterArtifactSpell;
*
* @author LevelX2
*/
-public class MishrasWorkshop extends CardImpl {
+public final class MishrasWorkshop extends CardImpl {
public MishrasWorkshop(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/Misinformation.java b/Mage.Sets/src/mage/cards/m/Misinformation.java
index f5cc7d8fca4..79a35d38ec3 100644
--- a/Mage.Sets/src/mage/cards/m/Misinformation.java
+++ b/Mage.Sets/src/mage/cards/m/Misinformation.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
*
* @author L_J
*/
-public class Misinformation extends CardImpl {
+public final class Misinformation extends CardImpl {
public Misinformation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MisshapenFiend.java b/Mage.Sets/src/mage/cards/m/MisshapenFiend.java
index d6fdbd76f53..325a3516e0a 100644
--- a/Mage.Sets/src/mage/cards/m/MisshapenFiend.java
+++ b/Mage.Sets/src/mage/cards/m/MisshapenFiend.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MisshapenFiend extends CardImpl {
+public final class MisshapenFiend extends CardImpl {
public MisshapenFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Misstep.java b/Mage.Sets/src/mage/cards/m/Misstep.java
index efb61441b81..f28d4a31dd6 100644
--- a/Mage.Sets/src/mage/cards/m/Misstep.java
+++ b/Mage.Sets/src/mage/cards/m/Misstep.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author djbrez
*/
-public class Misstep extends CardImpl {
+public final class Misstep extends CardImpl {
public Misstep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistCloakedHerald.java b/Mage.Sets/src/mage/cards/m/MistCloakedHerald.java
index 9e9c16d49a9..64bc69be918 100644
--- a/Mage.Sets/src/mage/cards/m/MistCloakedHerald.java
+++ b/Mage.Sets/src/mage/cards/m/MistCloakedHerald.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class MistCloakedHerald extends CardImpl {
+public final class MistCloakedHerald extends CardImpl {
public MistCloakedHerald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistDragon.java b/Mage.Sets/src/mage/cards/m/MistDragon.java
index 748680e6fa5..e2b01d2a87a 100644
--- a/Mage.Sets/src/mage/cards/m/MistDragon.java
+++ b/Mage.Sets/src/mage/cards/m/MistDragon.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MistDragon extends CardImpl {
+public final class MistDragon extends CardImpl {
public MistDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistIntruder.java b/Mage.Sets/src/mage/cards/m/MistIntruder.java
index 6f25e9c6eab..836f1357316 100644
--- a/Mage.Sets/src/mage/cards/m/MistIntruder.java
+++ b/Mage.Sets/src/mage/cards/m/MistIntruder.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class MistIntruder extends CardImpl {
+public final class MistIntruder extends CardImpl {
public MistIntruder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistLeopard.java b/Mage.Sets/src/mage/cards/m/MistLeopard.java
index 3629ee488e7..8dfe76c2c36 100644
--- a/Mage.Sets/src/mage/cards/m/MistLeopard.java
+++ b/Mage.Sets/src/mage/cards/m/MistLeopard.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class MistLeopard extends CardImpl {
+public final class MistLeopard extends CardImpl {
public MistLeopard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MistOfStagnation.java b/Mage.Sets/src/mage/cards/m/MistOfStagnation.java
index b4f7823995f..e1f9807201b 100644
--- a/Mage.Sets/src/mage/cards/m/MistOfStagnation.java
+++ b/Mage.Sets/src/mage/cards/m/MistOfStagnation.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class MistOfStagnation extends CardImpl {
+public final class MistOfStagnation extends CardImpl {
public MistOfStagnation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistRaven.java b/Mage.Sets/src/mage/cards/m/MistRaven.java
index e9ac4193899..5f1f665d077 100644
--- a/Mage.Sets/src/mage/cards/m/MistRaven.java
+++ b/Mage.Sets/src/mage/cards/m/MistRaven.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author noxx
*/
-public class MistRaven extends CardImpl {
+public final class MistRaven extends CardImpl {
public MistRaven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistbindClique.java b/Mage.Sets/src/mage/cards/m/MistbindClique.java
index 2081aa056bc..6df2d94280c 100644
--- a/Mage.Sets/src/mage/cards/m/MistbindClique.java
+++ b/Mage.Sets/src/mage/cards/m/MistbindClique.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class MistbindClique extends CardImpl {
+public final class MistbindClique extends CardImpl {
public MistbindClique(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistbladeShinobi.java b/Mage.Sets/src/mage/cards/m/MistbladeShinobi.java
index 09a12037049..5437c18c756 100644
--- a/Mage.Sets/src/mage/cards/m/MistbladeShinobi.java
+++ b/Mage.Sets/src/mage/cards/m/MistbladeShinobi.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MistbladeShinobi extends CardImpl {
+public final class MistbladeShinobi extends CardImpl {
public MistbladeShinobi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistcutterHydra.java b/Mage.Sets/src/mage/cards/m/MistcutterHydra.java
index 43ad027d5e3..79b706a33f8 100644
--- a/Mage.Sets/src/mage/cards/m/MistcutterHydra.java
+++ b/Mage.Sets/src/mage/cards/m/MistcutterHydra.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class MistcutterHydra extends CardImpl {
+public final class MistcutterHydra extends CardImpl {
public MistcutterHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MistfireAdept.java b/Mage.Sets/src/mage/cards/m/MistfireAdept.java
index bb381593643..096df480f09 100644
--- a/Mage.Sets/src/mage/cards/m/MistfireAdept.java
+++ b/Mage.Sets/src/mage/cards/m/MistfireAdept.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class MistfireAdept extends CardImpl {
+public final class MistfireAdept extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MistfireWeaver.java b/Mage.Sets/src/mage/cards/m/MistfireWeaver.java
index 711efb031a3..ebec26415eb 100644
--- a/Mage.Sets/src/mage/cards/m/MistfireWeaver.java
+++ b/Mage.Sets/src/mage/cards/m/MistfireWeaver.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class MistfireWeaver extends CardImpl {
+public final class MistfireWeaver extends CardImpl {
public MistfireWeaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformDreamer.java b/Mage.Sets/src/mage/cards/m/MistformDreamer.java
index 60cbef0aee3..53154974a0e 100644
--- a/Mage.Sets/src/mage/cards/m/MistformDreamer.java
+++ b/Mage.Sets/src/mage/cards/m/MistformDreamer.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class MistformDreamer extends CardImpl {
+public final class MistformDreamer extends CardImpl {
public MistformDreamer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformMask.java b/Mage.Sets/src/mage/cards/m/MistformMask.java
index 3f5c9722ec9..aaf691f75b4 100644
--- a/Mage.Sets/src/mage/cards/m/MistformMask.java
+++ b/Mage.Sets/src/mage/cards/m/MistformMask.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class MistformMask extends CardImpl {
+public final class MistformMask extends CardImpl {
public MistformMask(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformMutant.java b/Mage.Sets/src/mage/cards/m/MistformMutant.java
index 7ddb52b952f..fa6348452a6 100644
--- a/Mage.Sets/src/mage/cards/m/MistformMutant.java
+++ b/Mage.Sets/src/mage/cards/m/MistformMutant.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author EvilGeek
*/
-public class MistformMutant extends CardImpl {
+public final class MistformMutant extends CardImpl {
public MistformMutant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformSeaswift.java b/Mage.Sets/src/mage/cards/m/MistformSeaswift.java
index 94de6700c7b..f66ae051c18 100644
--- a/Mage.Sets/src/mage/cards/m/MistformSeaswift.java
+++ b/Mage.Sets/src/mage/cards/m/MistformSeaswift.java
@@ -44,7 +44,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class MistformSeaswift extends CardImpl {
+public final class MistformSeaswift extends CardImpl {
public MistformSeaswift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformShrieker.java b/Mage.Sets/src/mage/cards/m/MistformShrieker.java
index 6be237c1537..c8e2988ac7b 100644
--- a/Mage.Sets/src/mage/cards/m/MistformShrieker.java
+++ b/Mage.Sets/src/mage/cards/m/MistformShrieker.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class MistformShrieker extends CardImpl {
+public final class MistformShrieker extends CardImpl {
public MistformShrieker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformSkyreaver.java b/Mage.Sets/src/mage/cards/m/MistformSkyreaver.java
index ae74c23aecf..52ca0a578a1 100644
--- a/Mage.Sets/src/mage/cards/m/MistformSkyreaver.java
+++ b/Mage.Sets/src/mage/cards/m/MistformSkyreaver.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class MistformSkyreaver extends CardImpl {
+public final class MistformSkyreaver extends CardImpl {
public MistformSkyreaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformSliver.java b/Mage.Sets/src/mage/cards/m/MistformSliver.java
index 2e66d7d1603..3935f898100 100644
--- a/Mage.Sets/src/mage/cards/m/MistformSliver.java
+++ b/Mage.Sets/src/mage/cards/m/MistformSliver.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author cbt33, Plopman (Engineered Plague)
*/
-public class MistformSliver extends CardImpl {
+public final class MistformSliver extends CardImpl {
public MistformSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformStalker.java b/Mage.Sets/src/mage/cards/m/MistformStalker.java
index e4f8a0ae7d1..e263586d6f2 100644
--- a/Mage.Sets/src/mage/cards/m/MistformStalker.java
+++ b/Mage.Sets/src/mage/cards/m/MistformStalker.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class MistformStalker extends CardImpl {
+public final class MistformStalker extends CardImpl {
public MistformStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformUltimus.java b/Mage.Sets/src/mage/cards/m/MistformUltimus.java
index 941f2418cd8..4e7a4adf4ae 100644
--- a/Mage.Sets/src/mage/cards/m/MistformUltimus.java
+++ b/Mage.Sets/src/mage/cards/m/MistformUltimus.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author vereena42
*/
-public class MistformUltimus extends CardImpl {
+public final class MistformUltimus extends CardImpl {
public MistformUltimus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformWakecaster.java b/Mage.Sets/src/mage/cards/m/MistformWakecaster.java
index 2bf1bfe4abb..05bf97b369f 100644
--- a/Mage.Sets/src/mage/cards/m/MistformWakecaster.java
+++ b/Mage.Sets/src/mage/cards/m/MistformWakecaster.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class MistformWakecaster extends CardImpl {
+public final class MistformWakecaster extends CardImpl {
public MistformWakecaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformWall.java b/Mage.Sets/src/mage/cards/m/MistformWall.java
index d12d35becdb..ae89365c0e7 100644
--- a/Mage.Sets/src/mage/cards/m/MistformWall.java
+++ b/Mage.Sets/src/mage/cards/m/MistformWall.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class MistformWall extends CardImpl {
+public final class MistformWall extends CardImpl {
public MistformWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistformWarchief.java b/Mage.Sets/src/mage/cards/m/MistformWarchief.java
index 369e75feaa4..25393af828d 100644
--- a/Mage.Sets/src/mage/cards/m/MistformWarchief.java
+++ b/Mage.Sets/src/mage/cards/m/MistformWarchief.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author TheElk801
*/
-public class MistformWarchief extends CardImpl {
+public final class MistformWarchief extends CardImpl {
private static final FilterCard filter = new FilterCard("Creature spells you cast that share a creature type with {this}");
diff --git a/Mage.Sets/src/mage/cards/m/MisthollowGriffin.java b/Mage.Sets/src/mage/cards/m/MisthollowGriffin.java
index 3dad3e00b2a..757061627b9 100644
--- a/Mage.Sets/src/mage/cards/m/MisthollowGriffin.java
+++ b/Mage.Sets/src/mage/cards/m/MisthollowGriffin.java
@@ -48,7 +48,7 @@ import mage.game.Game;
*
* @author jeffwadsworth
*/
-public class MisthollowGriffin extends CardImpl {
+public final class MisthollowGriffin extends CardImpl {
public MisthollowGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MisthoofKirin.java b/Mage.Sets/src/mage/cards/m/MisthoofKirin.java
index 03aef4bae93..596e99fa23d 100644
--- a/Mage.Sets/src/mage/cards/m/MisthoofKirin.java
+++ b/Mage.Sets/src/mage/cards/m/MisthoofKirin.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class MisthoofKirin extends CardImpl {
+public final class MisthoofKirin extends CardImpl {
public MisthoofKirin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MistmeadowSkulk.java b/Mage.Sets/src/mage/cards/m/MistmeadowSkulk.java
index b12ca5e9172..869cb0086c6 100644
--- a/Mage.Sets/src/mage/cards/m/MistmeadowSkulk.java
+++ b/Mage.Sets/src/mage/cards/m/MistmeadowSkulk.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
*
* @author North
*/
-public class MistmeadowSkulk extends CardImpl {
+public final class MistmeadowSkulk extends CardImpl {
private static final FilterCard filter = new FilterCard("converted mana cost 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/m/MistmeadowWitch.java b/Mage.Sets/src/mage/cards/m/MistmeadowWitch.java
index 06c2312b5ad..cd6c6c2e834 100644
--- a/Mage.Sets/src/mage/cards/m/MistmeadowWitch.java
+++ b/Mage.Sets/src/mage/cards/m/MistmeadowWitch.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MistmeadowWitch extends CardImpl {
+public final class MistmeadowWitch extends CardImpl {
public MistmeadowWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/m/MistmoonGriffin.java b/Mage.Sets/src/mage/cards/m/MistmoonGriffin.java
index 6cb549edb37..1f922e25845 100644
--- a/Mage.Sets/src/mage/cards/m/MistmoonGriffin.java
+++ b/Mage.Sets/src/mage/cards/m/MistmoonGriffin.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MistmoonGriffin extends CardImpl {
+public final class MistmoonGriffin extends CardImpl {
public MistmoonGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MistralCharger.java b/Mage.Sets/src/mage/cards/m/MistralCharger.java
index 67895a74df0..3f50a5aeaed 100644
--- a/Mage.Sets/src/mage/cards/m/MistralCharger.java
+++ b/Mage.Sets/src/mage/cards/m/MistralCharger.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MistralCharger extends CardImpl {
+public final class MistralCharger extends CardImpl {
public MistralCharger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MistveilPlains.java b/Mage.Sets/src/mage/cards/m/MistveilPlains.java
index 6ffbbc5b1a4..2c0fd1ab16d 100644
--- a/Mage.Sets/src/mage/cards/m/MistveilPlains.java
+++ b/Mage.Sets/src/mage/cards/m/MistveilPlains.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class MistveilPlains extends CardImpl {
+public final class MistveilPlains extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control two or more white permanents");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MistveinBorderpost.java b/Mage.Sets/src/mage/cards/m/MistveinBorderpost.java
index 60bd7b87480..abebaf237c3 100644
--- a/Mage.Sets/src/mage/cards/m/MistveinBorderpost.java
+++ b/Mage.Sets/src/mage/cards/m/MistveinBorderpost.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class MistveinBorderpost extends CardImpl {
+public final class MistveinBorderpost extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a basic land");
diff --git a/Mage.Sets/src/mage/cards/m/MistyRainforest.java b/Mage.Sets/src/mage/cards/m/MistyRainforest.java
index 00dd89527c5..d46a574a257 100644
--- a/Mage.Sets/src/mage/cards/m/MistyRainforest.java
+++ b/Mage.Sets/src/mage/cards/m/MistyRainforest.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MistyRainforest extends CardImpl {
+public final class MistyRainforest extends CardImpl {
public MistyRainforest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/m/MitoticManipulation.java b/Mage.Sets/src/mage/cards/m/MitoticManipulation.java
index b0fdb681e24..0ef7c77618f 100644
--- a/Mage.Sets/src/mage/cards/m/MitoticManipulation.java
+++ b/Mage.Sets/src/mage/cards/m/MitoticManipulation.java
@@ -51,7 +51,7 @@ import mage.target.TargetCard;
*
* @author North
*/
-public class MitoticManipulation extends CardImpl {
+public final class MitoticManipulation extends CardImpl {
public MitoticManipulation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MitoticSlime.java b/Mage.Sets/src/mage/cards/m/MitoticSlime.java
index 54b7140266b..253180fc617 100644
--- a/Mage.Sets/src/mage/cards/m/MitoticSlime.java
+++ b/Mage.Sets/src/mage/cards/m/MitoticSlime.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.Ooze2Token;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MitoticSlime extends CardImpl {
+public final class MitoticSlime extends CardImpl {
public MitoticSlime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MizziumMeddler.java b/Mage.Sets/src/mage/cards/m/MizziumMeddler.java
index 41f360f453f..54b5b38a60a 100644
--- a/Mage.Sets/src/mage/cards/m/MizziumMeddler.java
+++ b/Mage.Sets/src/mage/cards/m/MizziumMeddler.java
@@ -43,7 +43,7 @@ import mage.target.TargetStackObject;
*
* @author fireshoes
*/
-public class MizziumMeddler extends CardImpl {
+public final class MizziumMeddler extends CardImpl {
public MizziumMeddler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MizziumMortars.java b/Mage.Sets/src/mage/cards/m/MizziumMortars.java
index 43ca6bc12bb..caf11c0fbbc 100644
--- a/Mage.Sets/src/mage/cards/m/MizziumMortars.java
+++ b/Mage.Sets/src/mage/cards/m/MizziumMortars.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MizziumMortars extends CardImpl {
+public final class MizziumMortars extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/m/MizziumSkin.java b/Mage.Sets/src/mage/cards/m/MizziumSkin.java
index 7efdd8b0bfe..547af426344 100644
--- a/Mage.Sets/src/mage/cards/m/MizziumSkin.java
+++ b/Mage.Sets/src/mage/cards/m/MizziumSkin.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MizziumSkin extends CardImpl {
+public final class MizziumSkin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
diff --git a/Mage.Sets/src/mage/cards/m/MizziumTransreliquat.java b/Mage.Sets/src/mage/cards/m/MizziumTransreliquat.java
index 29cbc689270..6948131e967 100644
--- a/Mage.Sets/src/mage/cards/m/MizziumTransreliquat.java
+++ b/Mage.Sets/src/mage/cards/m/MizziumTransreliquat.java
@@ -47,7 +47,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author fireshoes
*/
-public class MizziumTransreliquat extends CardImpl {
+public final class MizziumTransreliquat extends CardImpl {
public MizziumTransreliquat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MizzixOfTheIzmagnus.java b/Mage.Sets/src/mage/cards/m/MizzixOfTheIzmagnus.java
index ce9a178b8d1..9d9838733e0 100644
--- a/Mage.Sets/src/mage/cards/m/MizzixOfTheIzmagnus.java
+++ b/Mage.Sets/src/mage/cards/m/MizzixOfTheIzmagnus.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class MizzixOfTheIzmagnus extends CardImpl {
+public final class MizzixOfTheIzmagnus extends CardImpl {
private static final FilterInstantOrSorcerySpell filter = new FilterInstantOrSorcerySpell("an instant or sorcery spell with converted mana cost greater than the number of experience counters you have");
diff --git a/Mage.Sets/src/mage/cards/m/MizzixsMastery.java b/Mage.Sets/src/mage/cards/m/MizzixsMastery.java
index fd3b892bd84..06b29c88536 100644
--- a/Mage.Sets/src/mage/cards/m/MizzixsMastery.java
+++ b/Mage.Sets/src/mage/cards/m/MizzixsMastery.java
@@ -29,6 +29,7 @@ package mage.cards.m;
import java.util.Set;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
@@ -54,7 +55,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class MizzixsMastery extends CardImpl {
+public final class MizzixsMastery extends CardImpl {
public MizzixsMastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
@@ -106,7 +107,7 @@ class MizzixsMasteryEffect extends OneShotEffect {
Card cardCopy = game.copyCard(card, source, source.getControllerId());
if (cardCopy.getSpellAbility().canChooseTarget(game)
&& controller.chooseUse(outcome, "Cast copy of " + card.getName() + " without paying its mana cost?", source, game)) {
- controller.cast(cardCopy.getSpellAbility(), game, true);
+ controller.cast(cardCopy.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
@@ -150,7 +151,7 @@ class MizzixsMasteryOverloadEffect extends OneShotEffect {
if (controller.choose(outcome, copiedCards, targetCard, game)) {
Card selectedCard = game.getCard(targetCard.getFirstTarget());
if (selectedCard != null && selectedCard.getSpellAbility().canChooseTarget(game)) {
- if (controller.cast(selectedCard.getSpellAbility(), game, true)) {
+ if (controller.cast(selectedCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
copiedCards.remove(selectedCard);
}
}
diff --git a/Mage.Sets/src/mage/cards/m/MnemonicNexus.java b/Mage.Sets/src/mage/cards/m/MnemonicNexus.java
index eae49dbd195..92856beda8d 100644
--- a/Mage.Sets/src/mage/cards/m/MnemonicNexus.java
+++ b/Mage.Sets/src/mage/cards/m/MnemonicNexus.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class MnemonicNexus extends CardImpl {
+public final class MnemonicNexus extends CardImpl {
public MnemonicNexus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MnemonicSliver.java b/Mage.Sets/src/mage/cards/m/MnemonicSliver.java
index 938e7c20b48..191e59ff4e1 100644
--- a/Mage.Sets/src/mage/cards/m/MnemonicSliver.java
+++ b/Mage.Sets/src/mage/cards/m/MnemonicSliver.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
/**
* @author Loki
*/
-public class MnemonicSliver extends CardImpl {
+public final class MnemonicSliver extends CardImpl {
public MnemonicSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MnemonicWall.java b/Mage.Sets/src/mage/cards/m/MnemonicWall.java
index a2ad47f2b3b..e6c0830389c 100644
--- a/Mage.Sets/src/mage/cards/m/MnemonicWall.java
+++ b/Mage.Sets/src/mage/cards/m/MnemonicWall.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class MnemonicWall extends CardImpl {
+public final class MnemonicWall extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MoanOfTheUnhallowed.java b/Mage.Sets/src/mage/cards/m/MoanOfTheUnhallowed.java
index f122a3c8ec0..c1b75c1de7a 100644
--- a/Mage.Sets/src/mage/cards/m/MoanOfTheUnhallowed.java
+++ b/Mage.Sets/src/mage/cards/m/MoanOfTheUnhallowed.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author nantuko
*/
-public class MoanOfTheUnhallowed extends CardImpl {
+public final class MoanOfTheUnhallowed extends CardImpl {
public MoanOfTheUnhallowed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MoaningSpirit.java b/Mage.Sets/src/mage/cards/m/MoaningSpirit.java
index d05c8caca1b..76f0e145062 100644
--- a/Mage.Sets/src/mage/cards/m/MoaningSpirit.java
+++ b/Mage.Sets/src/mage/cards/m/MoaningSpirit.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class MoaningSpirit extends CardImpl {
+public final class MoaningSpirit extends CardImpl {
public MoaningSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MoaningWall.java b/Mage.Sets/src/mage/cards/m/MoaningWall.java
index c363ed5028b..8ab815a827c 100644
--- a/Mage.Sets/src/mage/cards/m/MoaningWall.java
+++ b/Mage.Sets/src/mage/cards/m/MoaningWall.java
@@ -10,7 +10,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-public class MoaningWall extends CardImpl {
+public final class MoaningWall extends CardImpl {
public MoaningWall(UUID ownerId, CardSetInfo cardSetInfo){
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Moat.java b/Mage.Sets/src/mage/cards/m/Moat.java
index 35ce73cb8d1..c351c9baf94 100644
--- a/Mage.Sets/src/mage/cards/m/Moat.java
+++ b/Mage.Sets/src/mage/cards/m/Moat.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class Moat extends CardImpl {
+public final class Moat extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/m/MobJustice.java b/Mage.Sets/src/mage/cards/m/MobJustice.java
index c733e5397be..2f50cfefea5 100644
--- a/Mage.Sets/src/mage/cards/m/MobJustice.java
+++ b/Mage.Sets/src/mage/cards/m/MobJustice.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LoneFox
*/
-public class MobJustice extends CardImpl {
+public final class MobJustice extends CardImpl {
public MobJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MobRule.java b/Mage.Sets/src/mage/cards/m/MobRule.java
index d85078450e1..9e5ca6f4295 100644
--- a/Mage.Sets/src/mage/cards/m/MobRule.java
+++ b/Mage.Sets/src/mage/cards/m/MobRule.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class MobRule extends CardImpl {
+public final class MobRule extends CardImpl {
public MobRule(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MobileFort.java b/Mage.Sets/src/mage/cards/m/MobileFort.java
index 41c3d23d380..315baa5058d 100644
--- a/Mage.Sets/src/mage/cards/m/MobileFort.java
+++ b/Mage.Sets/src/mage/cards/m/MobileFort.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MobileFort extends CardImpl {
+public final class MobileFort extends CardImpl {
public MobileFort(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/m/MobileGarrison.java b/Mage.Sets/src/mage/cards/m/MobileGarrison.java
index 0c2ca731e9b..7b21b27041c 100644
--- a/Mage.Sets/src/mage/cards/m/MobileGarrison.java
+++ b/Mage.Sets/src/mage/cards/m/MobileGarrison.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class MobileGarrison extends CardImpl {
+public final class MobileGarrison extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another target artifact or creature you control");
diff --git a/Mage.Sets/src/mage/cards/m/Mobilization.java b/Mage.Sets/src/mage/cards/m/Mobilization.java
index a2008ee4777..63a2bbf373b 100644
--- a/Mage.Sets/src/mage/cards/m/Mobilization.java
+++ b/Mage.Sets/src/mage/cards/m/Mobilization.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author Loki
*/
-public class Mobilization extends CardImpl {
+public final class Mobilization extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures");
diff --git a/Mage.Sets/src/mage/cards/m/Mobilize.java b/Mage.Sets/src/mage/cards/m/Mobilize.java
index 1fd21753f13..f72e7544359 100644
--- a/Mage.Sets/src/mage/cards/m/Mobilize.java
+++ b/Mage.Sets/src/mage/cards/m/Mobilize.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class Mobilize extends CardImpl {
+public final class Mobilize extends CardImpl {
private static final String rule = "untap all creatures you control";
diff --git a/Mage.Sets/src/mage/cards/m/MockeryOfNature.java b/Mage.Sets/src/mage/cards/m/MockeryOfNature.java
index 8abaa2b4edc..9d520752789 100644
--- a/Mage.Sets/src/mage/cards/m/MockeryOfNature.java
+++ b/Mage.Sets/src/mage/cards/m/MockeryOfNature.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class MockeryOfNature extends CardImpl {
+public final class MockeryOfNature extends CardImpl {
public MockeryOfNature(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{9}");
diff --git a/Mage.Sets/src/mage/cards/m/MoggAlarm.java b/Mage.Sets/src/mage/cards/m/MoggAlarm.java
index f6f52d3afd4..42a4411398a 100644
--- a/Mage.Sets/src/mage/cards/m/MoggAlarm.java
+++ b/Mage.Sets/src/mage/cards/m/MoggAlarm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author markedagain
*/
-public class MoggAlarm extends CardImpl {
+public final class MoggAlarm extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Mountains");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MoggAssassin.java b/Mage.Sets/src/mage/cards/m/MoggAssassin.java
index 18cfb3c453b..1d821adf462 100644
--- a/Mage.Sets/src/mage/cards/m/MoggAssassin.java
+++ b/Mage.Sets/src/mage/cards/m/MoggAssassin.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author L_J
*/
-public class MoggAssassin extends CardImpl {
+public final class MoggAssassin extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/m/MoggCannon.java b/Mage.Sets/src/mage/cards/m/MoggCannon.java
index 30f8305b033..d7c220dce2f 100644
--- a/Mage.Sets/src/mage/cards/m/MoggCannon.java
+++ b/Mage.Sets/src/mage/cards/m/MoggCannon.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class MoggCannon extends CardImpl {
+public final class MoggCannon extends CardImpl {
public MoggCannon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MoggConscripts.java b/Mage.Sets/src/mage/cards/m/MoggConscripts.java
index b18424531b6..203d8cb2cde 100644
--- a/Mage.Sets/src/mage/cards/m/MoggConscripts.java
+++ b/Mage.Sets/src/mage/cards/m/MoggConscripts.java
@@ -46,7 +46,7 @@ import mage.watchers.common.PlayerCastCreatureWatcher;
*
* @author fireshoes
*/
-public class MoggConscripts extends CardImpl {
+public final class MoggConscripts extends CardImpl {
public MoggConscripts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoggFanatic.java b/Mage.Sets/src/mage/cards/m/MoggFanatic.java
index 34b68e41d65..732ad873aff 100644
--- a/Mage.Sets/src/mage/cards/m/MoggFanatic.java
+++ b/Mage.Sets/src/mage/cards/m/MoggFanatic.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class MoggFanatic extends CardImpl {
+public final class MoggFanatic extends CardImpl {
public MoggFanatic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoggFlunkies.java b/Mage.Sets/src/mage/cards/m/MoggFlunkies.java
index 5ed746b6c8d..1bc74350103 100644
--- a/Mage.Sets/src/mage/cards/m/MoggFlunkies.java
+++ b/Mage.Sets/src/mage/cards/m/MoggFlunkies.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author magenoxx_at_gmail.com
*/
-public class MoggFlunkies extends CardImpl {
+public final class MoggFlunkies extends CardImpl {
public MoggFlunkies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoggHollows.java b/Mage.Sets/src/mage/cards/m/MoggHollows.java
index eda9e7d4468..a13ee63da81 100644
--- a/Mage.Sets/src/mage/cards/m/MoggHollows.java
+++ b/Mage.Sets/src/mage/cards/m/MoggHollows.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class MoggHollows extends CardImpl {
+public final class MoggHollows extends CardImpl {
public MoggHollows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/m/MoggInfestation.java b/Mage.Sets/src/mage/cards/m/MoggInfestation.java
index 2e0d243d4ff..184883a422e 100644
--- a/Mage.Sets/src/mage/cards/m/MoggInfestation.java
+++ b/Mage.Sets/src/mage/cards/m/MoggInfestation.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class MoggInfestation extends CardImpl {
+public final class MoggInfestation extends CardImpl {
public MoggInfestation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoggJailer.java b/Mage.Sets/src/mage/cards/m/MoggJailer.java
index a6ff5a0803b..99880b578a6 100644
--- a/Mage.Sets/src/mage/cards/m/MoggJailer.java
+++ b/Mage.Sets/src/mage/cards/m/MoggJailer.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
/**
* @author BursegSardaukar
*/
-public class MoggJailer extends CardImpl {
+public final class MoggJailer extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/m/MoggManiac.java b/Mage.Sets/src/mage/cards/m/MoggManiac.java
index 6a7e790fe15..1ca66f5e9f8 100644
--- a/Mage.Sets/src/mage/cards/m/MoggManiac.java
+++ b/Mage.Sets/src/mage/cards/m/MoggManiac.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author fireshoes
*/
-public class MoggManiac extends CardImpl {
+public final class MoggManiac extends CardImpl {
public MoggManiac(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoggRaider.java b/Mage.Sets/src/mage/cards/m/MoggRaider.java
index 1d6e8d9593f..2f32b493a46 100644
--- a/Mage.Sets/src/mage/cards/m/MoggRaider.java
+++ b/Mage.Sets/src/mage/cards/m/MoggRaider.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MoggRaider extends CardImpl {
+public final class MoggRaider extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin");
diff --git a/Mage.Sets/src/mage/cards/m/MoggSalvage.java b/Mage.Sets/src/mage/cards/m/MoggSalvage.java
index 8ec4a4d5544..ff4de77bfc8 100644
--- a/Mage.Sets/src/mage/cards/m/MoggSalvage.java
+++ b/Mage.Sets/src/mage/cards/m/MoggSalvage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author fireshoes
*/
-public class MoggSalvage extends CardImpl {
+public final class MoggSalvage extends CardImpl {
private static final FilterPermanent filterMountain = new FilterPermanent();
private static final FilterPermanent filterIsland = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/m/MoggSentry.java b/Mage.Sets/src/mage/cards/m/MoggSentry.java
index b741b50ea26..3321c164ac4 100644
--- a/Mage.Sets/src/mage/cards/m/MoggSentry.java
+++ b/Mage.Sets/src/mage/cards/m/MoggSentry.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
* @author LoneFox
*/
-public class MoggSentry extends CardImpl {
+public final class MoggSentry extends CardImpl {
public MoggSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoggSquad.java b/Mage.Sets/src/mage/cards/m/MoggSquad.java
index 7c50bf0d630..67277a8238b 100644
--- a/Mage.Sets/src/mage/cards/m/MoggSquad.java
+++ b/Mage.Sets/src/mage/cards/m/MoggSquad.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author BursegSardaukar
*/
-public class MoggSquad extends CardImpl {
+public final class MoggSquad extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each other creature on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/m/MoggToady.java b/Mage.Sets/src/mage/cards/m/MoggToady.java
index be59454a951..818cab6b4ae 100644
--- a/Mage.Sets/src/mage/cards/m/MoggToady.java
+++ b/Mage.Sets/src/mage/cards/m/MoggToady.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author emerald000 & L_J
*/
-public class MoggToady extends CardImpl {
+public final class MoggToady extends CardImpl {
public MoggToady(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoggWarMarshal.java b/Mage.Sets/src/mage/cards/m/MoggWarMarshal.java
index d912be109d8..17d0f5f486f 100644
--- a/Mage.Sets/src/mage/cards/m/MoggWarMarshal.java
+++ b/Mage.Sets/src/mage/cards/m/MoggWarMarshal.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author jonubuu
*/
-public class MoggWarMarshal extends CardImpl {
+public final class MoggWarMarshal extends CardImpl {
public MoggWarMarshal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Moggcatcher.java b/Mage.Sets/src/mage/cards/m/Moggcatcher.java
index 54cf58d29de..e33d45c473c 100644
--- a/Mage.Sets/src/mage/cards/m/Moggcatcher.java
+++ b/Mage.Sets/src/mage/cards/m/Moggcatcher.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class Moggcatcher extends CardImpl {
+public final class Moggcatcher extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Goblin permanent card");
diff --git a/Mage.Sets/src/mage/cards/m/MogisGodOfSlaughter.java b/Mage.Sets/src/mage/cards/m/MogisGodOfSlaughter.java
index 7d47a8c1eee..294b8b97397 100644
--- a/Mage.Sets/src/mage/cards/m/MogisGodOfSlaughter.java
+++ b/Mage.Sets/src/mage/cards/m/MogisGodOfSlaughter.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class MogisGodOfSlaughter extends CardImpl {
+public final class MogisGodOfSlaughter extends CardImpl {
public MogisGodOfSlaughter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MogissMarauder.java b/Mage.Sets/src/mage/cards/m/MogissMarauder.java
index d10b145e457..95aab4c1de9 100644
--- a/Mage.Sets/src/mage/cards/m/MogissMarauder.java
+++ b/Mage.Sets/src/mage/cards/m/MogissMarauder.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MogissMarauder extends CardImpl {
+public final class MogissMarauder extends CardImpl {
public MogissMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MogissWarhound.java b/Mage.Sets/src/mage/cards/m/MogissWarhound.java
index 1d5ce89a0a0..936946ffe15 100644
--- a/Mage.Sets/src/mage/cards/m/MogissWarhound.java
+++ b/Mage.Sets/src/mage/cards/m/MogissWarhound.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class MogissWarhound extends CardImpl {
+public final class MogissWarhound extends CardImpl {
public MogissWarhound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoistureFarm.java b/Mage.Sets/src/mage/cards/m/MoistureFarm.java
index 8d5d20d448c..4169d700cf3 100644
--- a/Mage.Sets/src/mage/cards/m/MoistureFarm.java
+++ b/Mage.Sets/src/mage/cards/m/MoistureFarm.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class MoistureFarm extends CardImpl {
+public final class MoistureFarm extends CardImpl {
public MoistureFarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MoldAdder.java b/Mage.Sets/src/mage/cards/m/MoldAdder.java
index e3bcb437ee5..6efe99eef69 100644
--- a/Mage.Sets/src/mage/cards/m/MoldAdder.java
+++ b/Mage.Sets/src/mage/cards/m/MoldAdder.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class MoldAdder extends CardImpl {
+public final class MoldAdder extends CardImpl {
private static final FilterSpell filter = new FilterSpell("blue or black spell");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MoldDemon.java b/Mage.Sets/src/mage/cards/m/MoldDemon.java
index 1f2b0aca85d..38518470f65 100644
--- a/Mage.Sets/src/mage/cards/m/MoldDemon.java
+++ b/Mage.Sets/src/mage/cards/m/MoldDemon.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class MoldDemon extends CardImpl {
+public final class MoldDemon extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("two Swamps");
diff --git a/Mage.Sets/src/mage/cards/m/MoldShambler.java b/Mage.Sets/src/mage/cards/m/MoldShambler.java
index 4aa7e25b7ec..7b8a2c51342 100644
--- a/Mage.Sets/src/mage/cards/m/MoldShambler.java
+++ b/Mage.Sets/src/mage/cards/m/MoldShambler.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class MoldShambler extends CardImpl {
+public final class MoldShambler extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature permanent");
diff --git a/Mage.Sets/src/mage/cards/m/Molder.java b/Mage.Sets/src/mage/cards/m/Molder.java
index 303dd0f33c6..8eacf076a58 100644
--- a/Mage.Sets/src/mage/cards/m/Molder.java
+++ b/Mage.Sets/src/mage/cards/m/Molder.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class Molder extends CardImpl {
+public final class Molder extends CardImpl {
public Molder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MolderBeast.java b/Mage.Sets/src/mage/cards/m/MolderBeast.java
index 7b44c6e370f..63e510b1b8c 100644
--- a/Mage.Sets/src/mage/cards/m/MolderBeast.java
+++ b/Mage.Sets/src/mage/cards/m/MolderBeast.java
@@ -47,7 +47,7 @@ import mage.game.events.ZoneChangeEvent;
*
* @author Loki, North
*/
-public class MolderBeast extends CardImpl {
+public final class MolderBeast extends CardImpl {
public MolderBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MolderSlug.java b/Mage.Sets/src/mage/cards/m/MolderSlug.java
index a2a19360453..a1f18aebdde 100644
--- a/Mage.Sets/src/mage/cards/m/MolderSlug.java
+++ b/Mage.Sets/src/mage/cards/m/MolderSlug.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
/**
* @author Loki
*/
-public class MolderSlug extends CardImpl {
+public final class MolderSlug extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/m/MoldervineCloak.java b/Mage.Sets/src/mage/cards/m/MoldervineCloak.java
index e844ff663eb..7a4f6fb08bd 100644
--- a/Mage.Sets/src/mage/cards/m/MoldervineCloak.java
+++ b/Mage.Sets/src/mage/cards/m/MoldervineCloak.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jonubuu
*/
-public class MoldervineCloak extends CardImpl {
+public final class MoldervineCloak extends CardImpl {
public MoldervineCloak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MoldgrafMonstrosity.java b/Mage.Sets/src/mage/cards/m/MoldgrafMonstrosity.java
index 4eaef9de47c..c7c30e782e6 100644
--- a/Mage.Sets/src/mage/cards/m/MoldgrafMonstrosity.java
+++ b/Mage.Sets/src/mage/cards/m/MoldgrafMonstrosity.java
@@ -27,7 +27,6 @@
*/
package mage.cards.m;
-import java.util.Set;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
@@ -39,20 +38,21 @@ import mage.abilities.keyword.TrampleAbility;
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.SubType;
import mage.constants.Outcome;
import mage.constants.Zone;
-import mage.filter.common.FilterCreatureCard;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
-import mage.util.RandomUtil;
/**
*
* @author North
*/
-public class MoldgrafMonstrosity extends CardImpl {
+public final class MoldgrafMonstrosity extends CardImpl {
public MoldgrafMonstrosity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}{G}");
@@ -98,34 +98,21 @@ class MoldgrafMonstrosityEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- boolean returned = false;
- Player player = game.getPlayer(source.getControllerId());
- if (player != null) {
- Set cards = player.getGraveyard().getCards(new FilterCreatureCard("creature cards"), game);
-
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ Cards possibleCards = new CardsImpl(controller.getGraveyard().getCards(StaticFilters.FILTER_CARD_CREATURE, game));
+ // Set cards = controller.getGraveyard().getCards(StaticFilters.FILTER_CARD_CREATURE, game);
+ Cards toBattlefield = new CardsImpl();
for (int i = 0; i < 2; i++) {
- Card card = getRandomCard(cards);
+ Card card = possibleCards.getRandom(game);
if (card != null) {
- returned |= card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId());
- cards.remove(card);
+ toBattlefield.add(card);
+ possibleCards.remove(card);
}
}
+ controller.moveCards(toBattlefield, Zone.BATTLEFIELD, source, game);
+ return true;
}
- return returned;
- }
-
- private Card getRandomCard(Set cards) {
- if (cards == null || cards.size() < 1) {
- return null;
- }
- int i = 0;
- int pick = RandomUtil.nextInt(cards.size());
- for (Card card : cards) {
- if (i == pick) {
- return card;
- }
- i = i + 1;
- }
- return null;
+ return false;
}
}
diff --git a/Mage.Sets/src/mage/cards/m/MoldgrafScavenger.java b/Mage.Sets/src/mage/cards/m/MoldgrafScavenger.java
index dfa37d0f0a7..ddc3b7ca208 100644
--- a/Mage.Sets/src/mage/cards/m/MoldgrafScavenger.java
+++ b/Mage.Sets/src/mage/cards/m/MoldgrafScavenger.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class MoldgrafScavenger extends CardImpl {
+public final class MoldgrafScavenger extends CardImpl {
public MoldgrafScavenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MoleWorms.java b/Mage.Sets/src/mage/cards/m/MoleWorms.java
index cec1c5e7aa9..7c89ba40ba2 100644
--- a/Mage.Sets/src/mage/cards/m/MoleWorms.java
+++ b/Mage.Sets/src/mage/cards/m/MoleWorms.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class MoleWorms extends CardImpl {
+public final class MoleWorms extends CardImpl {
public MoleWorms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MolimoMaroSorcerer.java b/Mage.Sets/src/mage/cards/m/MolimoMaroSorcerer.java
index 946ee2e7052..1bdc5d5be04 100644
--- a/Mage.Sets/src/mage/cards/m/MolimoMaroSorcerer.java
+++ b/Mage.Sets/src/mage/cards/m/MolimoMaroSorcerer.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Loki
*/
-public class MolimoMaroSorcerer extends CardImpl {
+public final class MolimoMaroSorcerer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("lands you control");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenBirth.java b/Mage.Sets/src/mage/cards/m/MoltenBirth.java
index 3d70db0334c..0371ba3228c 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenBirth.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenBirth.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class MoltenBirth extends CardImpl {
+public final class MoltenBirth extends CardImpl {
public MoltenBirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenDisaster.java b/Mage.Sets/src/mage/cards/m/MoltenDisaster.java
index 56332dc23e1..4d70be9df40 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenDisaster.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenDisaster.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MoltenDisaster extends CardImpl {
+public final class MoltenDisaster extends CardImpl {
public MoltenDisaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenFrame.java b/Mage.Sets/src/mage/cards/m/MoltenFrame.java
index 6fceafcf48c..2b4a1e93fcd 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenFrame.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenFrame.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MoltenFrame extends CardImpl {
+public final class MoltenFrame extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenHydra.java b/Mage.Sets/src/mage/cards/m/MoltenHydra.java
index 8ff157ed211..7045f9f9f73 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenHydra.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenHydra.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class MoltenHydra extends CardImpl {
+public final class MoltenHydra extends CardImpl {
diff --git a/Mage.Sets/src/mage/cards/m/MoltenInfluence.java b/Mage.Sets/src/mage/cards/m/MoltenInfluence.java
index 8c0dadc9a6f..dba7d5f2331 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenInfluence.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenInfluence.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author cbt33, LevelX2 (Quash)
*/
-public class MoltenInfluence extends CardImpl {
+public final class MoltenInfluence extends CardImpl {
public MoltenInfluence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenNursery.java b/Mage.Sets/src/mage/cards/m/MoltenNursery.java
index c991f71ecc5..c3f876c0744 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenNursery.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenNursery.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class MoltenNursery extends CardImpl {
+public final class MoltenNursery extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a colorless spell");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenPrimordial.java b/Mage.Sets/src/mage/cards/m/MoltenPrimordial.java
index 1f79a82c075..d8b47562778 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenPrimordial.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenPrimordial.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class MoltenPrimordial extends CardImpl {
+public final class MoltenPrimordial extends CardImpl {
public MoltenPrimordial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenPsyche.java b/Mage.Sets/src/mage/cards/m/MoltenPsyche.java
index 57007c38199..222bbc3e953 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenPsyche.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenPsyche.java
@@ -49,7 +49,7 @@ import mage.watchers.Watcher;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MoltenPsyche extends CardImpl {
+public final class MoltenPsyche extends CardImpl {
public MoltenPsyche(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenRain.java b/Mage.Sets/src/mage/cards/m/MoltenRain.java
index e180c5d39e4..c73c0849e1a 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenRain.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenRain.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author North
*/
-public class MoltenRain extends CardImpl {
+public final class MoltenRain extends CardImpl {
public MoltenRain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenRavager.java b/Mage.Sets/src/mage/cards/m/MoltenRavager.java
index 743fe35e29b..573b92a9e39 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenRavager.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenRavager.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class MoltenRavager extends CardImpl {
+public final class MoltenRavager extends CardImpl {
public MoltenRavager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenSentry.java b/Mage.Sets/src/mage/cards/m/MoltenSentry.java
index c54b3c81715..e8c7b4430bc 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenSentry.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenSentry.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class MoltenSentry extends CardImpl {
+public final class MoltenSentry extends CardImpl {
private final static String rule = "As {this} enters the battlefield, flip a coin. If the coin comes up heads, {this} enters the battlefield as a "
+ "5/2 creature with haste. If it comes up tails, {this} enters the battlefield as a 2/5 creature with defender.";
diff --git a/Mage.Sets/src/mage/cards/m/MoltenSlagheap.java b/Mage.Sets/src/mage/cards/m/MoltenSlagheap.java
index 2b6e998f516..cf1a89a0f79 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenSlagheap.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenSlagheap.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class MoltenSlagheap extends CardImpl {
+public final class MoltenSlagheap extends CardImpl {
public MoltenSlagheap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenTailMasticore.java b/Mage.Sets/src/mage/cards/m/MoltenTailMasticore.java
index f5f846e9e77..2915db57314 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenTailMasticore.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenTailMasticore.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class MoltenTailMasticore extends CardImpl {
+public final class MoltenTailMasticore extends CardImpl {
public MoltenTailMasticore (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltenVortex.java b/Mage.Sets/src/mage/cards/m/MoltenVortex.java
index caa6795fee3..34f30c4c68d 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenVortex.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenVortex.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class MoltenVortex extends CardImpl {
+public final class MoltenVortex extends CardImpl {
public MoltenVortex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltensteelDragon.java b/Mage.Sets/src/mage/cards/m/MoltensteelDragon.java
index 85cd2bf5442..8eb23b583ed 100644
--- a/Mage.Sets/src/mage/cards/m/MoltensteelDragon.java
+++ b/Mage.Sets/src/mage/cards/m/MoltensteelDragon.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class MoltensteelDragon extends CardImpl {
+public final class MoltensteelDragon extends CardImpl {
public MoltensteelDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{R/P}{R/P}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltingHarpy.java b/Mage.Sets/src/mage/cards/m/MoltingHarpy.java
index 77440d06270..bdc7df573e1 100644
--- a/Mage.Sets/src/mage/cards/m/MoltingHarpy.java
+++ b/Mage.Sets/src/mage/cards/m/MoltingHarpy.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
*
* @author Backfir3
*/
-public class MoltingHarpy extends CardImpl {
+public final class MoltingHarpy extends CardImpl {
public MoltingHarpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltingSkin.java b/Mage.Sets/src/mage/cards/m/MoltingSkin.java
index a627c82281b..d058c749e2c 100644
--- a/Mage.Sets/src/mage/cards/m/MoltingSkin.java
+++ b/Mage.Sets/src/mage/cards/m/MoltingSkin.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class MoltingSkin extends CardImpl {
+public final class MoltingSkin extends CardImpl {
public MoltingSkin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MoltingSnakeskin.java b/Mage.Sets/src/mage/cards/m/MoltingSnakeskin.java
index 542f4d574d1..abaa1a2d8ad 100644
--- a/Mage.Sets/src/mage/cards/m/MoltingSnakeskin.java
+++ b/Mage.Sets/src/mage/cards/m/MoltingSnakeskin.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class MoltingSnakeskin extends CardImpl {
+public final class MoltingSnakeskin extends CardImpl {
public MoltingSnakeskin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MomentOfCraving.java b/Mage.Sets/src/mage/cards/m/MomentOfCraving.java
index 76024ae007c..8cfc5f713d0 100644
--- a/Mage.Sets/src/mage/cards/m/MomentOfCraving.java
+++ b/Mage.Sets/src/mage/cards/m/MomentOfCraving.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class MomentOfCraving extends CardImpl {
+public final class MomentOfCraving extends CardImpl {
public MomentOfCraving(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MomentOfHeroism.java b/Mage.Sets/src/mage/cards/m/MomentOfHeroism.java
index 99bdfea7934..549b4d43232 100644
--- a/Mage.Sets/src/mage/cards/m/MomentOfHeroism.java
+++ b/Mage.Sets/src/mage/cards/m/MomentOfHeroism.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author nantuko
*/
-public class MomentOfHeroism extends CardImpl {
+public final class MomentOfHeroism extends CardImpl {
public MomentOfHeroism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MomentOfSilence.java b/Mage.Sets/src/mage/cards/m/MomentOfSilence.java
index 617eb94a570..ae0f6223c08 100644
--- a/Mage.Sets/src/mage/cards/m/MomentOfSilence.java
+++ b/Mage.Sets/src/mage/cards/m/MomentOfSilence.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class MomentOfSilence extends CardImpl {
+public final class MomentOfSilence extends CardImpl {
public MomentOfSilence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MomentOfTriumph.java b/Mage.Sets/src/mage/cards/m/MomentOfTriumph.java
index fb48519220b..dc0585c5e2a 100644
--- a/Mage.Sets/src/mage/cards/m/MomentOfTriumph.java
+++ b/Mage.Sets/src/mage/cards/m/MomentOfTriumph.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class MomentOfTriumph extends CardImpl {
+public final class MomentOfTriumph extends CardImpl {
public MomentOfTriumph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MomentaryBlink.java b/Mage.Sets/src/mage/cards/m/MomentaryBlink.java
index a1087e26552..25de93afcd6 100644
--- a/Mage.Sets/src/mage/cards/m/MomentaryBlink.java
+++ b/Mage.Sets/src/mage/cards/m/MomentaryBlink.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author noxx
*/
-public class MomentaryBlink extends CardImpl {
+public final class MomentaryBlink extends CardImpl {
public MomentaryBlink(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MomentousFall.java b/Mage.Sets/src/mage/cards/m/MomentousFall.java
index f0c18aa3e51..969526c591a 100644
--- a/Mage.Sets/src/mage/cards/m/MomentousFall.java
+++ b/Mage.Sets/src/mage/cards/m/MomentousFall.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class MomentousFall extends CardImpl {
+public final class MomentousFall extends CardImpl {
public MomentousFall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MomentsPeace.java b/Mage.Sets/src/mage/cards/m/MomentsPeace.java
index 17f1ba265bf..64a1e6680c6 100644
--- a/Mage.Sets/src/mage/cards/m/MomentsPeace.java
+++ b/Mage.Sets/src/mage/cards/m/MomentsPeace.java
@@ -41,7 +41,7 @@ import mage.constants.TimingRule;
*
* @author Plopman
*/
-public class MomentsPeace extends CardImpl {
+public final class MomentsPeace extends CardImpl {
public MomentsPeace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/Momentum.java b/Mage.Sets/src/mage/cards/m/Momentum.java
index 4d54ffdf882..8d9d61df5c1 100644
--- a/Mage.Sets/src/mage/cards/m/Momentum.java
+++ b/Mage.Sets/src/mage/cards/m/Momentum.java
@@ -51,7 +51,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class Momentum extends CardImpl {
+public final class Momentum extends CardImpl {
public Momentum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java b/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java
index f4669478774..9fd7e8fa526 100644
--- a/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java
+++ b/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInLibrary;
* @author jeffwadsworth
*
*/
-public class MomirVigSimicVisionary extends CardImpl {
+public final class MomirVigSimicVisionary extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a green creature spell");
private static final FilterSpell filter2 = new FilterSpell("a blue creature spell");
diff --git a/Mage.Sets/src/mage/cards/m/MonCalamariCruiser.java b/Mage.Sets/src/mage/cards/m/MonCalamariCruiser.java
index 5ddc5a55ba7..4173da75999 100644
--- a/Mage.Sets/src/mage/cards/m/MonCalamariCruiser.java
+++ b/Mage.Sets/src/mage/cards/m/MonCalamariCruiser.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class MonCalamariCruiser extends CardImpl {
+public final class MonCalamariCruiser extends CardImpl {
public MonCalamariCruiser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MonCalamariInitiate.java b/Mage.Sets/src/mage/cards/m/MonCalamariInitiate.java
index 5f6e8ed4f06..38fb045ee1a 100644
--- a/Mage.Sets/src/mage/cards/m/MonCalamariInitiate.java
+++ b/Mage.Sets/src/mage/cards/m/MonCalamariInitiate.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class MonCalamariInitiate extends CardImpl {
+public final class MonCalamariInitiate extends CardImpl {
public MonCalamariInitiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MonasteryFlock.java b/Mage.Sets/src/mage/cards/m/MonasteryFlock.java
index 5940f228111..a8e56e33c4e 100644
--- a/Mage.Sets/src/mage/cards/m/MonasteryFlock.java
+++ b/Mage.Sets/src/mage/cards/m/MonasteryFlock.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MonasteryFlock extends CardImpl {
+public final class MonasteryFlock extends CardImpl {
public MonasteryFlock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MonasteryLoremaster.java b/Mage.Sets/src/mage/cards/m/MonasteryLoremaster.java
index cf1afff699a..5df5776d9d8 100644
--- a/Mage.Sets/src/mage/cards/m/MonasteryLoremaster.java
+++ b/Mage.Sets/src/mage/cards/m/MonasteryLoremaster.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class MonasteryLoremaster extends CardImpl {
+public final class MonasteryLoremaster extends CardImpl {
private static final FilterCard filter = new FilterCard("noncreature, nonland card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MonasteryMentor.java b/Mage.Sets/src/mage/cards/m/MonasteryMentor.java
index 57fe1d7625f..f39978b6920 100644
--- a/Mage.Sets/src/mage/cards/m/MonasteryMentor.java
+++ b/Mage.Sets/src/mage/cards/m/MonasteryMentor.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.MonasteryMentorToken;
*
* @author fireshoes
*/
-public class MonasteryMentor extends CardImpl {
+public final class MonasteryMentor extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/m/MonasterySiege.java b/Mage.Sets/src/mage/cards/m/MonasterySiege.java
index 444d7679fac..2efe2296fc7 100644
--- a/Mage.Sets/src/mage/cards/m/MonasterySiege.java
+++ b/Mage.Sets/src/mage/cards/m/MonasterySiege.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class MonasterySiege extends CardImpl {
+public final class MonasterySiege extends CardImpl {
public MonasterySiege(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MonasterySwiftspear.java b/Mage.Sets/src/mage/cards/m/MonasterySwiftspear.java
index d90fcc17988..5933c75398d 100644
--- a/Mage.Sets/src/mage/cards/m/MonasterySwiftspear.java
+++ b/Mage.Sets/src/mage/cards/m/MonasterySwiftspear.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MonasterySwiftspear extends CardImpl {
+public final class MonasterySwiftspear extends CardImpl {
public MonasterySwiftspear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MondronenShaman.java b/Mage.Sets/src/mage/cards/m/MondronenShaman.java
index c84a04a278c..cd12649a716 100644
--- a/Mage.Sets/src/mage/cards/m/MondronenShaman.java
+++ b/Mage.Sets/src/mage/cards/m/MondronenShaman.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author North
*/
-public class MondronenShaman extends CardImpl {
+public final class MondronenShaman extends CardImpl {
public MondronenShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MongrelPack.java b/Mage.Sets/src/mage/cards/m/MongrelPack.java
index 210a778217e..1cda9e7c65d 100644
--- a/Mage.Sets/src/mage/cards/m/MongrelPack.java
+++ b/Mage.Sets/src/mage/cards/m/MongrelPack.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.Token;
*
* @author North
*/
-public class MongrelPack extends CardImpl {
+public final class MongrelPack extends CardImpl {
public MongrelPack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MonkIdealist.java b/Mage.Sets/src/mage/cards/m/MonkIdealist.java
index f3ba77c9688..895bac0aeb2 100644
--- a/Mage.Sets/src/mage/cards/m/MonkIdealist.java
+++ b/Mage.Sets/src/mage/cards/m/MonkIdealist.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author hanasu
*/
-public class MonkIdealist extends CardImpl {
+public final class MonkIdealist extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantment card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MonkRealist.java b/Mage.Sets/src/mage/cards/m/MonkRealist.java
index 052ef2841ee..63644505e9e 100644
--- a/Mage.Sets/src/mage/cards/m/MonkRealist.java
+++ b/Mage.Sets/src/mage/cards/m/MonkRealist.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author fireshoes
*/
-public class MonkRealist extends CardImpl {
+public final class MonkRealist extends CardImpl {
public MonkRealist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MonkeyCage.java b/Mage.Sets/src/mage/cards/m/MonkeyCage.java
index 3f8b29dc918..1225855e8b6 100644
--- a/Mage.Sets/src/mage/cards/m/MonkeyCage.java
+++ b/Mage.Sets/src/mage/cards/m/MonkeyCage.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.ApeToken;
*
* @author LoneFox
*/
-public class MonkeyCage extends CardImpl {
+public final class MonkeyCage extends CardImpl {
public MonkeyCage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/m/Monomania.java b/Mage.Sets/src/mage/cards/m/Monomania.java
index 837f0fcb4ad..136972caf3e 100644
--- a/Mage.Sets/src/mage/cards/m/Monomania.java
+++ b/Mage.Sets/src/mage/cards/m/Monomania.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author nantuko
*/
-public class Monomania extends CardImpl {
+public final class Monomania extends CardImpl {
public Monomania(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Monsoon.java b/Mage.Sets/src/mage/cards/m/Monsoon.java
index 19b58b8a544..4cbb3f7c155 100644
--- a/Mage.Sets/src/mage/cards/m/Monsoon.java
+++ b/Mage.Sets/src/mage/cards/m/Monsoon.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class Monsoon extends CardImpl {
+public final class Monsoon extends CardImpl {
public Monsoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MonssGoblinRaiders.java b/Mage.Sets/src/mage/cards/m/MonssGoblinRaiders.java
index 55969db7d5e..a396c054d30 100644
--- a/Mage.Sets/src/mage/cards/m/MonssGoblinRaiders.java
+++ b/Mage.Sets/src/mage/cards/m/MonssGoblinRaiders.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MonssGoblinRaiders extends CardImpl {
+public final class MonssGoblinRaiders extends CardImpl {
public MonssGoblinRaiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Monstrify.java b/Mage.Sets/src/mage/cards/m/Monstrify.java
index 4621d2bdc56..d18dee53e42 100644
--- a/Mage.Sets/src/mage/cards/m/Monstrify.java
+++ b/Mage.Sets/src/mage/cards/m/Monstrify.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Monstrify extends CardImpl {
+public final class Monstrify extends CardImpl {
public Monstrify(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MonstrousCarabid.java b/Mage.Sets/src/mage/cards/m/MonstrousCarabid.java
index 31e48a94d5a..2b7c9ef7d62 100644
--- a/Mage.Sets/src/mage/cards/m/MonstrousCarabid.java
+++ b/Mage.Sets/src/mage/cards/m/MonstrousCarabid.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class MonstrousCarabid extends CardImpl {
+public final class MonstrousCarabid extends CardImpl {
public MonstrousCarabid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MonstrousGrowth.java b/Mage.Sets/src/mage/cards/m/MonstrousGrowth.java
index 642b3d4d569..0d3380605a1 100644
--- a/Mage.Sets/src/mage/cards/m/MonstrousGrowth.java
+++ b/Mage.Sets/src/mage/cards/m/MonstrousGrowth.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class MonstrousGrowth extends CardImpl {
+public final class MonstrousGrowth extends CardImpl {
public MonstrousGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MonstrousOnslaught.java b/Mage.Sets/src/mage/cards/m/MonstrousOnslaught.java
index 4e8b0908ede..ca2f1df45f2 100644
--- a/Mage.Sets/src/mage/cards/m/MonstrousOnslaught.java
+++ b/Mage.Sets/src/mage/cards/m/MonstrousOnslaught.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author Styxo
*/
-public class MonstrousOnslaught extends CardImpl {
+public final class MonstrousOnslaught extends CardImpl {
public MonstrousOnslaught(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MoonHeron.java b/Mage.Sets/src/mage/cards/m/MoonHeron.java
index 2efa72ddaa9..d997ed38a91 100644
--- a/Mage.Sets/src/mage/cards/m/MoonHeron.java
+++ b/Mage.Sets/src/mage/cards/m/MoonHeron.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MoonHeron extends CardImpl {
+public final class MoonHeron extends CardImpl {
public MoonHeron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MoonSprite.java b/Mage.Sets/src/mage/cards/m/MoonSprite.java
index 3337048b96f..8b2eefab4ac 100644
--- a/Mage.Sets/src/mage/cards/m/MoonSprite.java
+++ b/Mage.Sets/src/mage/cards/m/MoonSprite.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class MoonSprite extends CardImpl {
+public final class MoonSprite extends CardImpl {
public MoonSprite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MoonbowIllusionist.java b/Mage.Sets/src/mage/cards/m/MoonbowIllusionist.java
index ee2332a1a24..122e09aacaa 100644
--- a/Mage.Sets/src/mage/cards/m/MoonbowIllusionist.java
+++ b/Mage.Sets/src/mage/cards/m/MoonbowIllusionist.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class MoonbowIllusionist extends CardImpl {
+public final class MoonbowIllusionist extends CardImpl {
public MoonbowIllusionist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MoongloveChangeling.java b/Mage.Sets/src/mage/cards/m/MoongloveChangeling.java
index 94ef723e226..3bcd1f405ca 100644
--- a/Mage.Sets/src/mage/cards/m/MoongloveChangeling.java
+++ b/Mage.Sets/src/mage/cards/m/MoongloveChangeling.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class MoongloveChangeling extends CardImpl {
+public final class MoongloveChangeling extends CardImpl {
public MoongloveChangeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MoongloveExtract.java b/Mage.Sets/src/mage/cards/m/MoongloveExtract.java
index e0eb06c8c86..49db06b4fc1 100644
--- a/Mage.Sets/src/mage/cards/m/MoongloveExtract.java
+++ b/Mage.Sets/src/mage/cards/m/MoongloveExtract.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class MoongloveExtract extends CardImpl {
+public final class MoongloveExtract extends CardImpl {
public MoongloveExtract(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MoongloveWinnower.java b/Mage.Sets/src/mage/cards/m/MoongloveWinnower.java
index 0472c0a265f..11b64afdac9 100644
--- a/Mage.Sets/src/mage/cards/m/MoongloveWinnower.java
+++ b/Mage.Sets/src/mage/cards/m/MoongloveWinnower.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MoongloveWinnower extends CardImpl {
+public final class MoongloveWinnower extends CardImpl {
public MoongloveWinnower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Moonhold.java b/Mage.Sets/src/mage/cards/m/Moonhold.java
index 1c10f6a44a9..e8917d1f534 100644
--- a/Mage.Sets/src/mage/cards/m/Moonhold.java
+++ b/Mage.Sets/src/mage/cards/m/Moonhold.java
@@ -52,7 +52,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author jeffwadsworth
*/
-public class Moonhold extends CardImpl {
+public final class Moonhold extends CardImpl {
public Moonhold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/m/Moonlace.java b/Mage.Sets/src/mage/cards/m/Moonlace.java
index 16a04d4c782..80e77886c1c 100644
--- a/Mage.Sets/src/mage/cards/m/Moonlace.java
+++ b/Mage.Sets/src/mage/cards/m/Moonlace.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author AlumiuN
*/
-public class Moonlace extends CardImpl {
+public final class Moonlace extends CardImpl {
public Moonlace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MoonlightBargain.java b/Mage.Sets/src/mage/cards/m/MoonlightBargain.java
index e001bba5d32..4af6c34c600 100644
--- a/Mage.Sets/src/mage/cards/m/MoonlightBargain.java
+++ b/Mage.Sets/src/mage/cards/m/MoonlightBargain.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MoonlightBargain extends CardImpl {
+public final class MoonlightBargain extends CardImpl {
public MoonlightBargain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MoonlightGeist.java b/Mage.Sets/src/mage/cards/m/MoonlightGeist.java
index d1dcfbb35b0..7a10f7676fe 100644
--- a/Mage.Sets/src/mage/cards/m/MoonlightGeist.java
+++ b/Mage.Sets/src/mage/cards/m/MoonlightGeist.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class MoonlightGeist extends CardImpl {
+public final class MoonlightGeist extends CardImpl {
public MoonlightGeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MoonlightHunt.java b/Mage.Sets/src/mage/cards/m/MoonlightHunt.java
index 1eecf5b0ac2..96f85d0c1c2 100644
--- a/Mage.Sets/src/mage/cards/m/MoonlightHunt.java
+++ b/Mage.Sets/src/mage/cards/m/MoonlightHunt.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MoonlightHunt extends CardImpl {
+public final class MoonlightHunt extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/m/MoonlitStrider.java b/Mage.Sets/src/mage/cards/m/MoonlitStrider.java
index 8be3996ca28..4971556b1de 100644
--- a/Mage.Sets/src/mage/cards/m/MoonlitStrider.java
+++ b/Mage.Sets/src/mage/cards/m/MoonlitStrider.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class MoonlitStrider extends CardImpl {
+public final class MoonlitStrider extends CardImpl {
public MoonlitStrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MoonlitWake.java b/Mage.Sets/src/mage/cards/m/MoonlitWake.java
index 6f9ebc8f363..c02033e59ed 100644
--- a/Mage.Sets/src/mage/cards/m/MoonlitWake.java
+++ b/Mage.Sets/src/mage/cards/m/MoonlitWake.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Derpthemeus
*/
-public class MoonlitWake extends CardImpl {
+public final class MoonlitWake extends CardImpl {
public MoonlitWake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/Moonmist.java b/Mage.Sets/src/mage/cards/m/Moonmist.java
index cf2c5517d18..b3568a98556 100644
--- a/Mage.Sets/src/mage/cards/m/Moonmist.java
+++ b/Mage.Sets/src/mage/cards/m/Moonmist.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward
*/
-public class Moonmist extends CardImpl {
+public final class Moonmist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures other than Werewolves and Wolves");
diff --git a/Mage.Sets/src/mage/cards/m/MoonringIsland.java b/Mage.Sets/src/mage/cards/m/MoonringIsland.java
index 9a9a703422a..7832e0eac58 100644
--- a/Mage.Sets/src/mage/cards/m/MoonringIsland.java
+++ b/Mage.Sets/src/mage/cards/m/MoonringIsland.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class MoonringIsland extends CardImpl {
+public final class MoonringIsland extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("if you control two or more blue permanents");
diff --git a/Mage.Sets/src/mage/cards/m/MoonringMirror.java b/Mage.Sets/src/mage/cards/m/MoonringMirror.java
index 6f0c7f78ff8..6ecc517ea5e 100644
--- a/Mage.Sets/src/mage/cards/m/MoonringMirror.java
+++ b/Mage.Sets/src/mage/cards/m/MoonringMirror.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class MoonringMirror extends CardImpl {
+public final class MoonringMirror extends CardImpl {
protected static final String VALUE_PREFIX = "ExileZones";
diff --git a/Mage.Sets/src/mage/cards/m/MoonriseIntruder.java b/Mage.Sets/src/mage/cards/m/MoonriseIntruder.java
index 52451801a1e..cdfd92338ea 100644
--- a/Mage.Sets/src/mage/cards/m/MoonriseIntruder.java
+++ b/Mage.Sets/src/mage/cards/m/MoonriseIntruder.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class MoonriseIntruder extends CardImpl {
+public final class MoonriseIntruder extends CardImpl {
public MoonriseIntruder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/m/MoonscarredWerewolf.java b/Mage.Sets/src/mage/cards/m/MoonscarredWerewolf.java
index 244e9734c25..fd8f4089950 100644
--- a/Mage.Sets/src/mage/cards/m/MoonscarredWerewolf.java
+++ b/Mage.Sets/src/mage/cards/m/MoonscarredWerewolf.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class MoonscarredWerewolf extends CardImpl {
+public final class MoonscarredWerewolf extends CardImpl {
public MoonscarredWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/m/MoonsilverSpear.java b/Mage.Sets/src/mage/cards/m/MoonsilverSpear.java
index c65f856bbde..294c221377f 100644
--- a/Mage.Sets/src/mage/cards/m/MoonsilverSpear.java
+++ b/Mage.Sets/src/mage/cards/m/MoonsilverSpear.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.AngelToken;
*
* @author Loki
*/
-public class MoonsilverSpear extends CardImpl {
+public final class MoonsilverSpear extends CardImpl {
public MoonsilverSpear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/m/MoonveilDragon.java b/Mage.Sets/src/mage/cards/m/MoonveilDragon.java
index 4a801474e67..194abbe22a5 100644
--- a/Mage.Sets/src/mage/cards/m/MoonveilDragon.java
+++ b/Mage.Sets/src/mage/cards/m/MoonveilDragon.java
@@ -41,7 +41,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class MoonveilDragon extends CardImpl {
+public final class MoonveilDragon extends CardImpl {
public MoonveilDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MoonwingMoth.java b/Mage.Sets/src/mage/cards/m/MoonwingMoth.java
index 1254dda9cf4..718a03710ff 100644
--- a/Mage.Sets/src/mage/cards/m/MoonwingMoth.java
+++ b/Mage.Sets/src/mage/cards/m/MoonwingMoth.java
@@ -41,7 +41,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class MoonwingMoth extends CardImpl {
+public final class MoonwingMoth extends CardImpl {
public MoonwingMoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MoorFiend.java b/Mage.Sets/src/mage/cards/m/MoorFiend.java
index 9ef08192956..fc7ae214c84 100644
--- a/Mage.Sets/src/mage/cards/m/MoorFiend.java
+++ b/Mage.Sets/src/mage/cards/m/MoorFiend.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MoorFiend extends CardImpl {
+public final class MoorFiend extends CardImpl {
public MoorFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MoorishCavalry.java b/Mage.Sets/src/mage/cards/m/MoorishCavalry.java
index 45607f6d793..18c6e6bef3b 100644
--- a/Mage.Sets/src/mage/cards/m/MoorishCavalry.java
+++ b/Mage.Sets/src/mage/cards/m/MoorishCavalry.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MoorishCavalry extends CardImpl {
+public final class MoorishCavalry extends CardImpl {
public MoorishCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MoorlandDrifter.java b/Mage.Sets/src/mage/cards/m/MoorlandDrifter.java
index 0e59249dff0..ebf2cc81970 100644
--- a/Mage.Sets/src/mage/cards/m/MoorlandDrifter.java
+++ b/Mage.Sets/src/mage/cards/m/MoorlandDrifter.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class MoorlandDrifter extends CardImpl {
+public final class MoorlandDrifter extends CardImpl {
public MoorlandDrifter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MoorlandHaunt.java b/Mage.Sets/src/mage/cards/m/MoorlandHaunt.java
index ad9d58e6046..2440a911211 100644
--- a/Mage.Sets/src/mage/cards/m/MoorlandHaunt.java
+++ b/Mage.Sets/src/mage/cards/m/MoorlandHaunt.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class MoorlandHaunt extends CardImpl {
+public final class MoorlandHaunt extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MoorlandInquisitor.java b/Mage.Sets/src/mage/cards/m/MoorlandInquisitor.java
index b525047c8a7..bd77805e2f9 100644
--- a/Mage.Sets/src/mage/cards/m/MoorlandInquisitor.java
+++ b/Mage.Sets/src/mage/cards/m/MoorlandInquisitor.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class MoorlandInquisitor extends CardImpl {
+public final class MoorlandInquisitor extends CardImpl {
public MoorlandInquisitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/Morale.java b/Mage.Sets/src/mage/cards/m/Morale.java
index b08fb4e2334..0589318c6aa 100644
--- a/Mage.Sets/src/mage/cards/m/Morale.java
+++ b/Mage.Sets/src/mage/cards/m/Morale.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author Galatolol
*/
-public class Morale extends CardImpl {
+public final class Morale extends CardImpl {
public Morale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MoralityShift.java b/Mage.Sets/src/mage/cards/m/MoralityShift.java
index be63fc0307b..f50351e7abd 100644
--- a/Mage.Sets/src/mage/cards/m/MoralityShift.java
+++ b/Mage.Sets/src/mage/cards/m/MoralityShift.java
@@ -1,105 +1,105 @@
-/*
- * 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.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.effects.OneShotEffect;
-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.game.Game;
-import mage.players.Player;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class MoralityShift extends CardImpl {
-
- public MoralityShift(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{B}{B}");
-
-
- // Exchange your graveyard and library. Then shuffle your library.
- this.getSpellAbility().addEffect(new MoralityShiftEffect());
-
- }
-
- public MoralityShift(final MoralityShift card) {
- super(card);
- }
-
- @Override
- public MoralityShift copy() {
- return new MoralityShift(this);
- }
-}
-
-class MoralityShiftEffect extends OneShotEffect {
-
- MoralityShiftEffect() {
- super(Outcome.AIDontUseIt);
- staticText = "Exchange your graveyard and library. Then shuffle your library.";
- }
-
- MoralityShiftEffect(MoralityShiftEffect effect) {
- super(effect);
- }
-
- @Override
- public MoralityShiftEffect copy() {
- return new MoralityShiftEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player controller = game.getPlayer(source.getControllerId());
- if (controller != null) {
- Set copyLibrary = new HashSet<>();
- List listCopyLibrary = controller.getLibrary().getCards(game);
- listCopyLibrary.forEach((card) -> {
- copyLibrary.add(card);
- });
- Set copyGraveyard = controller.getGraveyard().getCards(game);
- controller.getLibrary().clear();
- controller.getGraveyard().clear();
- controller.moveCards(copyLibrary, Zone.GRAVEYARD, source, game);
- controller.moveCards(copyGraveyard, Zone.LIBRARY, source, game);
- controller.shuffleLibrary(source, game);
- return true;
- }
- return false;
- }
-}
+/*
+ * 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.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+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.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class MoralityShift extends CardImpl {
+
+ public MoralityShift(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{B}{B}");
+
+
+ // Exchange your graveyard and library. Then shuffle your library.
+ this.getSpellAbility().addEffect(new MoralityShiftEffect());
+
+ }
+
+ public MoralityShift(final MoralityShift card) {
+ super(card);
+ }
+
+ @Override
+ public MoralityShift copy() {
+ return new MoralityShift(this);
+ }
+}
+
+class MoralityShiftEffect extends OneShotEffect {
+
+ MoralityShiftEffect() {
+ super(Outcome.AIDontUseIt);
+ staticText = "Exchange your graveyard and library. Then shuffle your library.";
+ }
+
+ MoralityShiftEffect(MoralityShiftEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public MoralityShiftEffect copy() {
+ return new MoralityShiftEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ Set copyLibrary = new HashSet<>();
+ List listCopyLibrary = controller.getLibrary().getCards(game);
+ listCopyLibrary.forEach((card) -> {
+ copyLibrary.add(card);
+ });
+ Set copyGraveyard = controller.getGraveyard().getCards(game);
+ controller.getLibrary().clear();
+ controller.getGraveyard().clear();
+ controller.moveCards(copyLibrary, Zone.GRAVEYARD, source, game);
+ controller.moveCards(copyGraveyard, Zone.LIBRARY, source, game);
+ controller.shuffleLibrary(source, game);
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/m/MoratoriumStone.java b/Mage.Sets/src/mage/cards/m/MoratoriumStone.java
index ea1620973e5..c9efdb803a7 100644
--- a/Mage.Sets/src/mage/cards/m/MoratoriumStone.java
+++ b/Mage.Sets/src/mage/cards/m/MoratoriumStone.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author TheElk801
*/
-public class MoratoriumStone extends CardImpl {
+public final class MoratoriumStone extends CardImpl {
private static final FilterCard filter = new FilterCard("nonland card from a graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MorbidBloom.java b/Mage.Sets/src/mage/cards/m/MorbidBloom.java
index d46dde9ede6..550ec855f43 100644
--- a/Mage.Sets/src/mage/cards/m/MorbidBloom.java
+++ b/Mage.Sets/src/mage/cards/m/MorbidBloom.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author jeffwadsworth
*/
-public class MorbidBloom extends CardImpl {
+public final class MorbidBloom extends CardImpl {
public MorbidBloom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MorbidCuriosity.java b/Mage.Sets/src/mage/cards/m/MorbidCuriosity.java
index 1b01264caa2..cce124ded54 100644
--- a/Mage.Sets/src/mage/cards/m/MorbidCuriosity.java
+++ b/Mage.Sets/src/mage/cards/m/MorbidCuriosity.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class MorbidCuriosity extends CardImpl {
+public final class MorbidCuriosity extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/m/MorbidHunger.java b/Mage.Sets/src/mage/cards/m/MorbidHunger.java
index c4e0ad3fbb3..e4f9671be4b 100644
--- a/Mage.Sets/src/mage/cards/m/MorbidHunger.java
+++ b/Mage.Sets/src/mage/cards/m/MorbidHunger.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author cbt33
*/
-public class MorbidHunger extends CardImpl {
+public final class MorbidHunger extends CardImpl {
public MorbidHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MorbidPlunder.java b/Mage.Sets/src/mage/cards/m/MorbidPlunder.java
index cd849cb0d15..943b95bbd1b 100644
--- a/Mage.Sets/src/mage/cards/m/MorbidPlunder.java
+++ b/Mage.Sets/src/mage/cards/m/MorbidPlunder.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class MorbidPlunder extends CardImpl {
+public final class MorbidPlunder extends CardImpl {
public MorbidPlunder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MordantDragon.java b/Mage.Sets/src/mage/cards/m/MordantDragon.java
index 51445412643..ccfb5583106 100644
--- a/Mage.Sets/src/mage/cards/m/MordantDragon.java
+++ b/Mage.Sets/src/mage/cards/m/MordantDragon.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class MordantDragon extends CardImpl {
+public final class MordantDragon extends CardImpl {
public MordantDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MorgueBurst.java b/Mage.Sets/src/mage/cards/m/MorgueBurst.java
index 94ca706440d..000d7830dfc 100644
--- a/Mage.Sets/src/mage/cards/m/MorgueBurst.java
+++ b/Mage.Sets/src/mage/cards/m/MorgueBurst.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class MorgueBurst extends CardImpl {
+public final class MorgueBurst extends CardImpl {
public MorgueBurst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MorgueTheft.java b/Mage.Sets/src/mage/cards/m/MorgueTheft.java
index 61402ea648d..5b6403503ac 100644
--- a/Mage.Sets/src/mage/cards/m/MorgueTheft.java
+++ b/Mage.Sets/src/mage/cards/m/MorgueTheft.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author cbt33
*/
-public class MorgueTheft extends CardImpl {
+public final class MorgueTheft extends CardImpl {
public MorgueTheft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MorgueThrull.java b/Mage.Sets/src/mage/cards/m/MorgueThrull.java
index a689c549e2e..3ff97211bf2 100644
--- a/Mage.Sets/src/mage/cards/m/MorgueThrull.java
+++ b/Mage.Sets/src/mage/cards/m/MorgueThrull.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MorgueThrull extends CardImpl {
+public final class MorgueThrull extends CardImpl {
public MorgueThrull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MorgueToad.java b/Mage.Sets/src/mage/cards/m/MorgueToad.java
index cc83123aa45..0d9a946d2d3 100644
--- a/Mage.Sets/src/mage/cards/m/MorgueToad.java
+++ b/Mage.Sets/src/mage/cards/m/MorgueToad.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author FenrisulfrX
*/
-public class MorgueToad extends CardImpl {
+public final class MorgueToad extends CardImpl {
public MorgueToad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Morinfen.java b/Mage.Sets/src/mage/cards/m/Morinfen.java
index 73f88495186..6b598ff0120 100644
--- a/Mage.Sets/src/mage/cards/m/Morinfen.java
+++ b/Mage.Sets/src/mage/cards/m/Morinfen.java
@@ -42,7 +42,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class Morinfen extends CardImpl {
+public final class Morinfen extends CardImpl {
public Morinfen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MoriokReaver.java b/Mage.Sets/src/mage/cards/m/MoriokReaver.java
index 1471ec027ac..6a5e912c440 100644
--- a/Mage.Sets/src/mage/cards/m/MoriokReaver.java
+++ b/Mage.Sets/src/mage/cards/m/MoriokReaver.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class MoriokReaver extends CardImpl {
+public final class MoriokReaver extends CardImpl {
public MoriokReaver (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MoriokReplica.java b/Mage.Sets/src/mage/cards/m/MoriokReplica.java
index d2ac4f37f4b..59bd3116f34 100644
--- a/Mage.Sets/src/mage/cards/m/MoriokReplica.java
+++ b/Mage.Sets/src/mage/cards/m/MoriokReplica.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class MoriokReplica extends CardImpl {
+public final class MoriokReplica extends CardImpl {
public MoriokReplica (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MoriokRigger.java b/Mage.Sets/src/mage/cards/m/MoriokRigger.java
index 2a226789b4c..b7dfa3c44a5 100644
--- a/Mage.Sets/src/mage/cards/m/MoriokRigger.java
+++ b/Mage.Sets/src/mage/cards/m/MoriokRigger.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author Plopman
*/
-public class MoriokRigger extends CardImpl {
+public final class MoriokRigger extends CardImpl {
public MoriokRigger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MoriokScavenger.java b/Mage.Sets/src/mage/cards/m/MoriokScavenger.java
index 76c3b529639..e775a617803 100644
--- a/Mage.Sets/src/mage/cards/m/MoriokScavenger.java
+++ b/Mage.Sets/src/mage/cards/m/MoriokScavenger.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LoneFox
*/
-public class MoriokScavenger extends CardImpl {
+public final class MoriokScavenger extends CardImpl {
final static FilterCreatureCard filter = new FilterCreatureCard("artifact creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MorkrutBanshee.java b/Mage.Sets/src/mage/cards/m/MorkrutBanshee.java
index 52012075869..ca54ee4d812 100644
--- a/Mage.Sets/src/mage/cards/m/MorkrutBanshee.java
+++ b/Mage.Sets/src/mage/cards/m/MorkrutBanshee.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author nantuko
*/
-public class MorkrutBanshee extends CardImpl {
+public final class MorkrutBanshee extends CardImpl {
private static final String staticText = "Morbid - When {this} enters the battlefield, if a creature died this turn, target creature gets -4/-4 until end of turn.";
diff --git a/Mage.Sets/src/mage/cards/m/MorkrutNecropod.java b/Mage.Sets/src/mage/cards/m/MorkrutNecropod.java
index af45b60e8ed..3b73351a3b1 100644
--- a/Mage.Sets/src/mage/cards/m/MorkrutNecropod.java
+++ b/Mage.Sets/src/mage/cards/m/MorkrutNecropod.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class MorkrutNecropod extends CardImpl {
+public final class MorkrutNecropod extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another creature or land");
diff --git a/Mage.Sets/src/mage/cards/m/Morningtide.java b/Mage.Sets/src/mage/cards/m/Morningtide.java
index a5b39a6a3bd..36252b1ffd6 100644
--- a/Mage.Sets/src/mage/cards/m/Morningtide.java
+++ b/Mage.Sets/src/mage/cards/m/Morningtide.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Jgod
*/
-public class Morningtide extends CardImpl {
+public final class Morningtide extends CardImpl {
public Morningtide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/Moroii.java b/Mage.Sets/src/mage/cards/m/Moroii.java
index 3fd93ffbc87..c284326b472 100644
--- a/Mage.Sets/src/mage/cards/m/Moroii.java
+++ b/Mage.Sets/src/mage/cards/m/Moroii.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author Loki
*/
-public class Moroii extends CardImpl {
+public final class Moroii extends CardImpl {
public Moroii(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MorphicPool.java b/Mage.Sets/src/mage/cards/m/MorphicPool.java
index 40b34708091..92fafa4d464 100644
--- a/Mage.Sets/src/mage/cards/m/MorphicPool.java
+++ b/Mage.Sets/src/mage/cards/m/MorphicPool.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class MorphicPool extends CardImpl {
+public final class MorphicPool extends CardImpl {
public MorphicPool(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/m/Morphling.java b/Mage.Sets/src/mage/cards/m/Morphling.java
index ad4a372cf5f..88b3e4e14ee 100644
--- a/Mage.Sets/src/mage/cards/m/Morphling.java
+++ b/Mage.Sets/src/mage/cards/m/Morphling.java
@@ -45,7 +45,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class Morphling extends CardImpl {
+public final class Morphling extends CardImpl {
public Morphling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MorselTheft.java b/Mage.Sets/src/mage/cards/m/MorselTheft.java
index dcbbebcf0c5..802d32cbead 100644
--- a/Mage.Sets/src/mage/cards/m/MorselTheft.java
+++ b/Mage.Sets/src/mage/cards/m/MorselTheft.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class MorselTheft extends CardImpl {
+public final class MorselTheft extends CardImpl {
public MorselTheft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Morselhoarder.java b/Mage.Sets/src/mage/cards/m/Morselhoarder.java
index 712f76898de..5872095dc65 100644
--- a/Mage.Sets/src/mage/cards/m/Morselhoarder.java
+++ b/Mage.Sets/src/mage/cards/m/Morselhoarder.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author jeffwadsworth
*/
-public class Morselhoarder extends CardImpl {
+public final class Morselhoarder extends CardImpl {
public Morselhoarder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R/G}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/m/MortalCombat.java b/Mage.Sets/src/mage/cards/m/MortalCombat.java
index 5982a2f3201..b0f72a76a12 100644
--- a/Mage.Sets/src/mage/cards/m/MortalCombat.java
+++ b/Mage.Sets/src/mage/cards/m/MortalCombat.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author daagar
*/
-public class MortalCombat extends CardImpl {
+public final class MortalCombat extends CardImpl {
public MortalCombat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MortalObstinacy.java b/Mage.Sets/src/mage/cards/m/MortalObstinacy.java
index c796b174928..6b0c561efc9 100644
--- a/Mage.Sets/src/mage/cards/m/MortalObstinacy.java
+++ b/Mage.Sets/src/mage/cards/m/MortalObstinacy.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class MortalObstinacy extends CardImpl {
+public final class MortalObstinacy extends CardImpl {
public MortalObstinacy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MortalWound.java b/Mage.Sets/src/mage/cards/m/MortalWound.java
index 9264b2cfb23..9baec28873f 100644
--- a/Mage.Sets/src/mage/cards/m/MortalWound.java
+++ b/Mage.Sets/src/mage/cards/m/MortalWound.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MortalWound extends CardImpl {
+public final class MortalWound extends CardImpl {
public MortalWound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MortalsArdor.java b/Mage.Sets/src/mage/cards/m/MortalsArdor.java
index 6bbaf38c3a0..37de7da43ff 100644
--- a/Mage.Sets/src/mage/cards/m/MortalsArdor.java
+++ b/Mage.Sets/src/mage/cards/m/MortalsArdor.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MortalsArdor extends CardImpl {
+public final class MortalsArdor extends CardImpl {
public MortalsArdor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MortalsResolve.java b/Mage.Sets/src/mage/cards/m/MortalsResolve.java
index 04b69f8119b..72a91f78bce 100644
--- a/Mage.Sets/src/mage/cards/m/MortalsResolve.java
+++ b/Mage.Sets/src/mage/cards/m/MortalsResolve.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class MortalsResolve extends CardImpl {
+public final class MortalsResolve extends CardImpl {
public MortalsResolve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/Mortarpod.java b/Mage.Sets/src/mage/cards/m/Mortarpod.java
index 378e8927427..ea728597f1d 100644
--- a/Mage.Sets/src/mage/cards/m/Mortarpod.java
+++ b/Mage.Sets/src/mage/cards/m/Mortarpod.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class Mortarpod extends CardImpl {
+public final class Mortarpod extends CardImpl {
public Mortarpod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MorticianBeetle.java b/Mage.Sets/src/mage/cards/m/MorticianBeetle.java
index 32a77a6fb0b..59eb98b22e7 100644
--- a/Mage.Sets/src/mage/cards/m/MorticianBeetle.java
+++ b/Mage.Sets/src/mage/cards/m/MorticianBeetle.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author North
*/
-public class MorticianBeetle extends CardImpl {
+public final class MorticianBeetle extends CardImpl {
public MorticianBeetle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Mortify.java b/Mage.Sets/src/mage/cards/m/Mortify.java
index e9c79ddcba2..c9f38aedf79 100644
--- a/Mage.Sets/src/mage/cards/m/Mortify.java
+++ b/Mage.Sets/src/mage/cards/m/Mortify.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class Mortify extends CardImpl {
+public final class Mortify extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or enchantment");
diff --git a/Mage.Sets/src/mage/cards/m/Mortipede.java b/Mage.Sets/src/mage/cards/m/Mortipede.java
index 1b920145ae0..e322fb688eb 100644
--- a/Mage.Sets/src/mage/cards/m/Mortipede.java
+++ b/Mage.Sets/src/mage/cards/m/Mortipede.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class Mortipede extends CardImpl {
+public final class Mortipede extends CardImpl {
public Mortipede(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Mortiphobia.java b/Mage.Sets/src/mage/cards/m/Mortiphobia.java
index 4f8f7ee2782..244fa66a85a 100644
--- a/Mage.Sets/src/mage/cards/m/Mortiphobia.java
+++ b/Mage.Sets/src/mage/cards/m/Mortiphobia.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LoneFox
*/
-public class Mortiphobia extends CardImpl {
+public final class Mortiphobia extends CardImpl {
public Mortiphobia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MortisDogs.java b/Mage.Sets/src/mage/cards/m/MortisDogs.java
index 14c837d0084..1cc949ed05f 100644
--- a/Mage.Sets/src/mage/cards/m/MortisDogs.java
+++ b/Mage.Sets/src/mage/cards/m/MortisDogs.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class MortisDogs extends CardImpl {
+public final class MortisDogs extends CardImpl {
public MortisDogs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Mortivore.java b/Mage.Sets/src/mage/cards/m/Mortivore.java
index fef595f9407..0fe8a558fcf 100644
--- a/Mage.Sets/src/mage/cards/m/Mortivore.java
+++ b/Mage.Sets/src/mage/cards/m/Mortivore.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author Loki
*/
-public class Mortivore extends CardImpl {
+public final class Mortivore extends CardImpl {
public Mortivore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Mortuary.java b/Mage.Sets/src/mage/cards/m/Mortuary.java
index cc2d803cb31..967589c1525 100644
--- a/Mage.Sets/src/mage/cards/m/Mortuary.java
+++ b/Mage.Sets/src/mage/cards/m/Mortuary.java
@@ -40,7 +40,7 @@ import mage.filter.StaticFilters;
*
* @author HCrescent
*/
-public class Mortuary extends CardImpl {
+public final class Mortuary extends CardImpl {
public Mortuary(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/m/MortuaryMire.java b/Mage.Sets/src/mage/cards/m/MortuaryMire.java
index cf3fc94fd1c..b75335177cb 100644
--- a/Mage.Sets/src/mage/cards/m/MortuaryMire.java
+++ b/Mage.Sets/src/mage/cards/m/MortuaryMire.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class MortuaryMire extends CardImpl {
+public final class MortuaryMire extends CardImpl {
public MortuaryMire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/m/MortusStrider.java b/Mage.Sets/src/mage/cards/m/MortusStrider.java
index 1a503154340..135a8be7509 100644
--- a/Mage.Sets/src/mage/cards/m/MortusStrider.java
+++ b/Mage.Sets/src/mage/cards/m/MortusStrider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MortusStrider extends CardImpl {
+public final class MortusStrider extends CardImpl {
public MortusStrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MosquitoGuard.java b/Mage.Sets/src/mage/cards/m/MosquitoGuard.java
index a7b5c635406..63b04cdc942 100644
--- a/Mage.Sets/src/mage/cards/m/MosquitoGuard.java
+++ b/Mage.Sets/src/mage/cards/m/MosquitoGuard.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class MosquitoGuard extends CardImpl {
+public final class MosquitoGuard extends CardImpl {
public MosquitoGuard (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MossDiamond.java b/Mage.Sets/src/mage/cards/m/MossDiamond.java
index 4ac7a64ddf6..4ba1771d5b4 100644
--- a/Mage.Sets/src/mage/cards/m/MossDiamond.java
+++ b/Mage.Sets/src/mage/cards/m/MossDiamond.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Quercitron
*/
-public class MossDiamond extends CardImpl {
+public final class MossDiamond extends CardImpl {
public MossDiamond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MossKami.java b/Mage.Sets/src/mage/cards/m/MossKami.java
index 68c2ff669e2..29cde95e680 100644
--- a/Mage.Sets/src/mage/cards/m/MossKami.java
+++ b/Mage.Sets/src/mage/cards/m/MossKami.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class MossKami extends CardImpl {
+public final class MossKami extends CardImpl {
public MossKami (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MossMonster.java b/Mage.Sets/src/mage/cards/m/MossMonster.java
index 5cf89fbd3df..4bbfd19e963 100644
--- a/Mage.Sets/src/mage/cards/m/MossMonster.java
+++ b/Mage.Sets/src/mage/cards/m/MossMonster.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MossMonster extends CardImpl {
+public final class MossMonster extends CardImpl {
public MossMonster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MossbridgeTroll.java b/Mage.Sets/src/mage/cards/m/MossbridgeTroll.java
index 2f4c5ce295b..e44d53f4de2 100644
--- a/Mage.Sets/src/mage/cards/m/MossbridgeTroll.java
+++ b/Mage.Sets/src/mage/cards/m/MossbridgeTroll.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class MossbridgeTroll extends CardImpl {
+public final class MossbridgeTroll extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/m/Mossdog.java b/Mage.Sets/src/mage/cards/m/Mossdog.java
index 728b242230e..78c1d2c1661 100644
--- a/Mage.Sets/src/mage/cards/m/Mossdog.java
+++ b/Mage.Sets/src/mage/cards/m/Mossdog.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes & L_J
*/
-public class Mossdog extends CardImpl {
+public final class Mossdog extends CardImpl {
public Mossdog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MossfireEgg.java b/Mage.Sets/src/mage/cards/m/MossfireEgg.java
index 64dad5591fd..c6ea25d0e1c 100644
--- a/Mage.Sets/src/mage/cards/m/MossfireEgg.java
+++ b/Mage.Sets/src/mage/cards/m/MossfireEgg.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MossfireEgg extends CardImpl {
+public final class MossfireEgg extends CardImpl {
public MossfireEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/m/MossfireValley.java b/Mage.Sets/src/mage/cards/m/MossfireValley.java
index 0ebaf9f9b97..fd51bde037e 100644
--- a/Mage.Sets/src/mage/cards/m/MossfireValley.java
+++ b/Mage.Sets/src/mage/cards/m/MossfireValley.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class MossfireValley extends CardImpl {
+public final class MossfireValley extends CardImpl {
public MossfireValley(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/Mosstodon.java b/Mage.Sets/src/mage/cards/m/Mosstodon.java
index d006cf05368..803d9853aee 100644
--- a/Mage.Sets/src/mage/cards/m/Mosstodon.java
+++ b/Mage.Sets/src/mage/cards/m/Mosstodon.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Mosstodon extends CardImpl {
+public final class Mosstodon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/m/MosswortBridge.java b/Mage.Sets/src/mage/cards/m/MosswortBridge.java
index d2c6098e5c8..e3303e61522 100644
--- a/Mage.Sets/src/mage/cards/m/MosswortBridge.java
+++ b/Mage.Sets/src/mage/cards/m/MosswortBridge.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class MosswortBridge extends CardImpl {
+public final class MosswortBridge extends CardImpl {
public MosswortBridge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MothdustChangeling.java b/Mage.Sets/src/mage/cards/m/MothdustChangeling.java
index 874bb0292b2..a46133edaa1 100644
--- a/Mage.Sets/src/mage/cards/m/MothdustChangeling.java
+++ b/Mage.Sets/src/mage/cards/m/MothdustChangeling.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class MothdustChangeling extends CardImpl {
+public final class MothdustChangeling extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/m/MotherOfRunes.java b/Mage.Sets/src/mage/cards/m/MotherOfRunes.java
index 489408269a9..ea463369c13 100644
--- a/Mage.Sets/src/mage/cards/m/MotherOfRunes.java
+++ b/Mage.Sets/src/mage/cards/m/MotherOfRunes.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class MotherOfRunes extends CardImpl {
+public final class MotherOfRunes extends CardImpl {
public MotherOfRunes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MothriderSamurai.java b/Mage.Sets/src/mage/cards/m/MothriderSamurai.java
index 8ec02527ced..1bd98d08a44 100644
--- a/Mage.Sets/src/mage/cards/m/MothriderSamurai.java
+++ b/Mage.Sets/src/mage/cards/m/MothriderSamurai.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class MothriderSamurai extends CardImpl {
+public final class MothriderSamurai extends CardImpl {
public MothriderSamurai (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MountainBandit.java b/Mage.Sets/src/mage/cards/m/MountainBandit.java
index 19dfe556b75..ee1f9c79a6b 100644
--- a/Mage.Sets/src/mage/cards/m/MountainBandit.java
+++ b/Mage.Sets/src/mage/cards/m/MountainBandit.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MountainBandit extends CardImpl {
+public final class MountainBandit extends CardImpl {
public MountainBandit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MountainGoat.java b/Mage.Sets/src/mage/cards/m/MountainGoat.java
index 7400d4838dd..66dd8bbdc72 100644
--- a/Mage.Sets/src/mage/cards/m/MountainGoat.java
+++ b/Mage.Sets/src/mage/cards/m/MountainGoat.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MountainGoat extends CardImpl {
+public final class MountainGoat extends CardImpl {
public MountainGoat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MountainValley.java b/Mage.Sets/src/mage/cards/m/MountainValley.java
index fd8a9cc334e..dfbdb636c54 100644
--- a/Mage.Sets/src/mage/cards/m/MountainValley.java
+++ b/Mage.Sets/src/mage/cards/m/MountainValley.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MountainValley extends CardImpl {
+public final class MountainValley extends CardImpl {
public MountainValley(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MountainYeti.java b/Mage.Sets/src/mage/cards/m/MountainYeti.java
index be982aa9be2..e0827098a5a 100644
--- a/Mage.Sets/src/mage/cards/m/MountainYeti.java
+++ b/Mage.Sets/src/mage/cards/m/MountainYeti.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class MountainYeti extends CardImpl {
+public final class MountainYeti extends CardImpl {
public MountainYeti(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MountedArchers.java b/Mage.Sets/src/mage/cards/m/MountedArchers.java
index cfb4b746ae7..bb98fa94bad 100644
--- a/Mage.Sets/src/mage/cards/m/MountedArchers.java
+++ b/Mage.Sets/src/mage/cards/m/MountedArchers.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MountedArchers extends CardImpl {
+public final class MountedArchers extends CardImpl {
public MountedArchers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MournfulZombie.java b/Mage.Sets/src/mage/cards/m/MournfulZombie.java
index 0586dc2e8f7..cd8b50733ff 100644
--- a/Mage.Sets/src/mage/cards/m/MournfulZombie.java
+++ b/Mage.Sets/src/mage/cards/m/MournfulZombie.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class MournfulZombie extends CardImpl {
+public final class MournfulZombie extends CardImpl {
public MournfulZombie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Mourning.java b/Mage.Sets/src/mage/cards/m/Mourning.java
index 3384b93b97f..e020d34d233 100644
--- a/Mage.Sets/src/mage/cards/m/Mourning.java
+++ b/Mage.Sets/src/mage/cards/m/Mourning.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author michael.napoleon@gmail.com
*/
-public class Mourning extends CardImpl {
+public final class Mourning extends CardImpl {
public Mourning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MourningThrull.java b/Mage.Sets/src/mage/cards/m/MourningThrull.java
index 15f64457135..7fc294c6da6 100644
--- a/Mage.Sets/src/mage/cards/m/MourningThrull.java
+++ b/Mage.Sets/src/mage/cards/m/MourningThrull.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class MourningThrull extends CardImpl {
+public final class MourningThrull extends CardImpl {
public MourningThrull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/m/Mournwhelk.java b/Mage.Sets/src/mage/cards/m/Mournwhelk.java
index 63a1df74c76..a2f8d199f69 100644
--- a/Mage.Sets/src/mage/cards/m/Mournwhelk.java
+++ b/Mage.Sets/src/mage/cards/m/Mournwhelk.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class Mournwhelk extends CardImpl {
+public final class Mournwhelk extends CardImpl {
public Mournwhelk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/Mournwillow.java b/Mage.Sets/src/mage/cards/m/Mournwillow.java
index cff2cf04b16..a7bfa1bdfeb 100644
--- a/Mage.Sets/src/mage/cards/m/Mournwillow.java
+++ b/Mage.Sets/src/mage/cards/m/Mournwillow.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class Mournwillow extends CardImpl {
+public final class Mournwillow extends CardImpl {
public Mournwillow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MouthFeed.java b/Mage.Sets/src/mage/cards/m/MouthFeed.java
index e316d403229..17fabe507f6 100644
--- a/Mage.Sets/src/mage/cards/m/MouthFeed.java
+++ b/Mage.Sets/src/mage/cards/m/MouthFeed.java
@@ -19,7 +19,7 @@ import mage.game.permanent.token.HippoToken2;
/**
* @author Stravant
*/
-public class MouthFeed extends SplitCard {
+public final class MouthFeed extends SplitCard {
private static final FilterControlledCreaturePermanent filterCreaturesYouControlPower3orGreater
= new FilterControlledCreaturePermanent("creature you control with power 3 or greater.");
diff --git a/Mage.Sets/src/mage/cards/m/MouthOfRonom.java b/Mage.Sets/src/mage/cards/m/MouthOfRonom.java
index 3842df68674..81f98f9aab9 100644
--- a/Mage.Sets/src/mage/cards/m/MouthOfRonom.java
+++ b/Mage.Sets/src/mage/cards/m/MouthOfRonom.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class MouthOfRonom extends CardImpl {
+public final class MouthOfRonom extends CardImpl {
public MouthOfRonom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MoxAmber.java b/Mage.Sets/src/mage/cards/m/MoxAmber.java
index 9da1579a0e5..84c7ac8fa1f 100644
--- a/Mage.Sets/src/mage/cards/m/MoxAmber.java
+++ b/Mage.Sets/src/mage/cards/m/MoxAmber.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author CountAndromalius
*/
-public class MoxAmber extends CardImpl {
+public final class MoxAmber extends CardImpl {
public MoxAmber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/m/MoxDiamond.java b/Mage.Sets/src/mage/cards/m/MoxDiamond.java
index 1359c72e580..61f739f8aa9 100644
--- a/Mage.Sets/src/mage/cards/m/MoxDiamond.java
+++ b/Mage.Sets/src/mage/cards/m/MoxDiamond.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Plopman
*/
-public class MoxDiamond extends CardImpl {
+public final class MoxDiamond extends CardImpl {
public MoxDiamond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{0}");
diff --git a/Mage.Sets/src/mage/cards/m/MoxEmerald.java b/Mage.Sets/src/mage/cards/m/MoxEmerald.java
index 9d81a5a28af..73c25763dbc 100644
--- a/Mage.Sets/src/mage/cards/m/MoxEmerald.java
+++ b/Mage.Sets/src/mage/cards/m/MoxEmerald.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class MoxEmerald extends CardImpl {
+public final class MoxEmerald extends CardImpl {
public MoxEmerald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/m/MoxJet.java b/Mage.Sets/src/mage/cards/m/MoxJet.java
index b027b907184..56fa1cb35ed 100644
--- a/Mage.Sets/src/mage/cards/m/MoxJet.java
+++ b/Mage.Sets/src/mage/cards/m/MoxJet.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class MoxJet extends CardImpl {
+public final class MoxJet extends CardImpl {
public MoxJet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/m/MoxLotus.java b/Mage.Sets/src/mage/cards/m/MoxLotus.java
index 643c0c2dc2a..6d5add21bbd 100644
--- a/Mage.Sets/src/mage/cards/m/MoxLotus.java
+++ b/Mage.Sets/src/mage/cards/m/MoxLotus.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author spjspj/psjpsj
*/
-public class MoxLotus extends CardImpl {
+public final class MoxLotus extends CardImpl {
public MoxLotus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{15}");
diff --git a/Mage.Sets/src/mage/cards/m/MoxOpal.java b/Mage.Sets/src/mage/cards/m/MoxOpal.java
index c24b6c225ce..a9faf4e860e 100644
--- a/Mage.Sets/src/mage/cards/m/MoxOpal.java
+++ b/Mage.Sets/src/mage/cards/m/MoxOpal.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com, Loki
*/
-public class MoxOpal extends CardImpl {
+public final class MoxOpal extends CardImpl {
public MoxOpal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/m/MoxPearl.java b/Mage.Sets/src/mage/cards/m/MoxPearl.java
index fab2063e8c3..9df472f12c5 100644
--- a/Mage.Sets/src/mage/cards/m/MoxPearl.java
+++ b/Mage.Sets/src/mage/cards/m/MoxPearl.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class MoxPearl extends CardImpl {
+public final class MoxPearl extends CardImpl {
public MoxPearl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/m/MoxRuby.java b/Mage.Sets/src/mage/cards/m/MoxRuby.java
index 7b6c2467d15..d0b9e8e976c 100644
--- a/Mage.Sets/src/mage/cards/m/MoxRuby.java
+++ b/Mage.Sets/src/mage/cards/m/MoxRuby.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class MoxRuby extends CardImpl {
+public final class MoxRuby extends CardImpl {
public MoxRuby(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/m/MoxSapphire.java b/Mage.Sets/src/mage/cards/m/MoxSapphire.java
index 57cd1d9edae..360eb2acf9f 100644
--- a/Mage.Sets/src/mage/cards/m/MoxSapphire.java
+++ b/Mage.Sets/src/mage/cards/m/MoxSapphire.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class MoxSapphire extends CardImpl {
+public final class MoxSapphire extends CardImpl {
public MoxSapphire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/m/MtendaGriffin.java b/Mage.Sets/src/mage/cards/m/MtendaGriffin.java
index 70ba608ca61..f1f0af2a4d2 100644
--- a/Mage.Sets/src/mage/cards/m/MtendaGriffin.java
+++ b/Mage.Sets/src/mage/cards/m/MtendaGriffin.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class MtendaGriffin extends CardImpl {
+public final class MtendaGriffin extends CardImpl {
private static final FilterCard filter = new FilterCard("Griffin card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MtendaHerder.java b/Mage.Sets/src/mage/cards/m/MtendaHerder.java
index e5af1f25d87..28a1c472bd3 100644
--- a/Mage.Sets/src/mage/cards/m/MtendaHerder.java
+++ b/Mage.Sets/src/mage/cards/m/MtendaHerder.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class MtendaHerder extends CardImpl {
+public final class MtendaHerder extends CardImpl {
public MtendaHerder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MuYanling.java b/Mage.Sets/src/mage/cards/m/MuYanling.java
index 99dc60243ca..ed2c63e18b2 100644
--- a/Mage.Sets/src/mage/cards/m/MuYanling.java
+++ b/Mage.Sets/src/mage/cards/m/MuYanling.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class MuYanling extends CardImpl {
+public final class MuYanling extends CardImpl {
public MuYanling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MuckDrubb.java b/Mage.Sets/src/mage/cards/m/MuckDrubb.java
index ada1f2012be..2bc6fa0862c 100644
--- a/Mage.Sets/src/mage/cards/m/MuckDrubb.java
+++ b/Mage.Sets/src/mage/cards/m/MuckDrubb.java
@@ -56,7 +56,7 @@ import mage.util.TargetAddress;
*
* @author L_J
*/
-public class MuckDrubb extends CardImpl {
+public final class MuckDrubb extends CardImpl {
protected static final FilterSpell filter = new FilterSpell("spell that targets only a single creature");
diff --git a/Mage.Sets/src/mage/cards/m/MuckRats.java b/Mage.Sets/src/mage/cards/m/MuckRats.java
index 908e72eb880..2387e1d921c 100644
--- a/Mage.Sets/src/mage/cards/m/MuckRats.java
+++ b/Mage.Sets/src/mage/cards/m/MuckRats.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class MuckRats extends CardImpl {
+public final class MuckRats extends CardImpl {
public MuckRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MudbrawlerCohort.java b/Mage.Sets/src/mage/cards/m/MudbrawlerCohort.java
index 5aa2ce6cf94..d7e673a8042 100644
--- a/Mage.Sets/src/mage/cards/m/MudbrawlerCohort.java
+++ b/Mage.Sets/src/mage/cards/m/MudbrawlerCohort.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author North
*/
-public class MudbrawlerCohort extends CardImpl {
+public final class MudbrawlerCohort extends CardImpl {
private static final String rule = "{this} gets +1/+1 as long as you control another red creature";
diff --git a/Mage.Sets/src/mage/cards/m/MudbrawlerRaiders.java b/Mage.Sets/src/mage/cards/m/MudbrawlerRaiders.java
index 2c7a93a256f..8a7b9212ec8 100644
--- a/Mage.Sets/src/mage/cards/m/MudbrawlerRaiders.java
+++ b/Mage.Sets/src/mage/cards/m/MudbrawlerRaiders.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class MudbrawlerRaiders extends CardImpl {
+public final class MudbrawlerRaiders extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MudbuttonClanger.java b/Mage.Sets/src/mage/cards/m/MudbuttonClanger.java
index cd9033f43b0..4a0d15e7550 100644
--- a/Mage.Sets/src/mage/cards/m/MudbuttonClanger.java
+++ b/Mage.Sets/src/mage/cards/m/MudbuttonClanger.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class MudbuttonClanger extends CardImpl {
+public final class MudbuttonClanger extends CardImpl {
public MudbuttonClanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MudbuttonTorchrunner.java b/Mage.Sets/src/mage/cards/m/MudbuttonTorchrunner.java
index 093b1ba7a64..62273aa5632 100644
--- a/Mage.Sets/src/mage/cards/m/MudbuttonTorchrunner.java
+++ b/Mage.Sets/src/mage/cards/m/MudbuttonTorchrunner.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class MudbuttonTorchrunner extends CardImpl {
+public final class MudbuttonTorchrunner extends CardImpl {
public MudbuttonTorchrunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MuddleTheMixture.java b/Mage.Sets/src/mage/cards/m/MuddleTheMixture.java
index dafdec7808b..5b8e5b07ec7 100644
--- a/Mage.Sets/src/mage/cards/m/MuddleTheMixture.java
+++ b/Mage.Sets/src/mage/cards/m/MuddleTheMixture.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class MuddleTheMixture extends CardImpl {
+public final class MuddleTheMixture extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery spell");
static {
diff --git a/Mage.Sets/src/mage/cards/m/Mudhole.java b/Mage.Sets/src/mage/cards/m/Mudhole.java
index 0b4270f3ebb..85cc9bca26f 100644
--- a/Mage.Sets/src/mage/cards/m/Mudhole.java
+++ b/Mage.Sets/src/mage/cards/m/Mudhole.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author cbt33
*/
-public class Mudhole extends CardImpl {
+public final class Mudhole extends CardImpl {
public Mudhole(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/Mudslide.java b/Mage.Sets/src/mage/cards/m/Mudslide.java
index 68b7b1e0a96..89a659fe175 100644
--- a/Mage.Sets/src/mage/cards/m/Mudslide.java
+++ b/Mage.Sets/src/mage/cards/m/Mudslide.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author spjspj
*/
-public class Mudslide extends CardImpl {
+public final class Mudslide extends CardImpl {
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/m/Mugging.java b/Mage.Sets/src/mage/cards/m/Mugging.java
index cb26e03db85..58a6b6007ef 100644
--- a/Mage.Sets/src/mage/cards/m/Mugging.java
+++ b/Mage.Sets/src/mage/cards/m/Mugging.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Mugging extends CardImpl {
+public final class Mugging extends CardImpl {
public Mugging(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MulDayaChannelers.java b/Mage.Sets/src/mage/cards/m/MulDayaChannelers.java
index ad2691af71c..a8de64be320 100644
--- a/Mage.Sets/src/mage/cards/m/MulDayaChannelers.java
+++ b/Mage.Sets/src/mage/cards/m/MulDayaChannelers.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class MulDayaChannelers extends CardImpl {
+public final class MulDayaChannelers extends CardImpl {
private static final String rule1 = "As long as the top card of your library is a creature card, {this} gets +3/+3";
diff --git a/Mage.Sets/src/mage/cards/m/Mulch.java b/Mage.Sets/src/mage/cards/m/Mulch.java
index e09da43dca1..4cc56367593 100644
--- a/Mage.Sets/src/mage/cards/m/Mulch.java
+++ b/Mage.Sets/src/mage/cards/m/Mulch.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterLandCard;
*
* @author North
*/
-public class Mulch extends CardImpl {
+public final class Mulch extends CardImpl {
public Mulch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MuldrothaTheGravetide.java b/Mage.Sets/src/mage/cards/m/MuldrothaTheGravetide.java
index 1a74f79d8b6..21eb1cceee7 100644
--- a/Mage.Sets/src/mage/cards/m/MuldrothaTheGravetide.java
+++ b/Mage.Sets/src/mage/cards/m/MuldrothaTheGravetide.java
@@ -33,6 +33,7 @@ import java.util.Set;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.AsThoughEffectImpl;
@@ -60,7 +61,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class MuldrothaTheGravetide extends CardImpl {
+public final class MuldrothaTheGravetide extends CardImpl {
public MuldrothaTheGravetide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{G}{U}");
@@ -118,7 +119,8 @@ class MuldrothaTheGravetideCastFromGraveyardEffect extends AsThoughEffectImpl {
if (mageObject != null && watcher != null) {
for (CardType cardType : mageObject.getCardType()) {
if (cardType.isPermanentType()) {
- if (!watcher.permanentTypePlayedFromGraveyard(affectedControllerId, cardType)) {
+ MageObjectReference mor = new MageObjectReference(source.getSourceObject(game), game);
+ if (!watcher.permanentTypePlayedFromGraveyard(mor, cardType)) {
return true;
}
}
@@ -136,10 +138,12 @@ class MuldrothaTheGravetideCastFromGraveyardEffect extends AsThoughEffectImpl {
*/
class MuldrothaTheGravetideWatcher extends Watcher {
- // final HashMap> playerPlayedPermanentTypes = new HashMap<>(); // source that played permanent types from graveyard
- final HashMap> playerPlayedPermanentTypes = new HashMap<>(); // player that played permanent types from graveyard
+ final HashMap> sourcePlayedPermanentTypes = new HashMap<>(); // source that played permanent types from graveyard
+ // final HashMap> playerPlayedPermanentTypes = new HashMap<>(); // player that played permanent types from graveyard
// 4/27/2018 If multiple effects allow you to play a card from your graveyard, such as those of Gisa and Geralf and Karador,
// Ghost Chieftain, you must announce which permission you’re using as you begin to play the card.
+ // 4/27/2018: If you play a card from your graveyard and then have a new Muldrotha come under your control in the same turn,
+ // you may play another card of that type from your graveyard that turn.
private Zone fromZone;
public MuldrothaTheGravetideWatcher() {
@@ -148,7 +152,7 @@ class MuldrothaTheGravetideWatcher extends Watcher {
public MuldrothaTheGravetideWatcher(final MuldrothaTheGravetideWatcher watcher) {
super(watcher);
- playerPlayedPermanentTypes.putAll(watcher.playerPlayedPermanentTypes);
+ sourcePlayedPermanentTypes.putAll(watcher.sourcePlayedPermanentTypes);
}
@Override
@@ -174,7 +178,7 @@ class MuldrothaTheGravetideWatcher extends Watcher {
}
private void addPermanentTypes(GameEvent event, Card mageObject, Game game) {
- if (mageObject != null) {
+ if (mageObject != null && event.getAdditionalReference() != null) {
UUID playerId = null;
if (mageObject instanceof Spell) {
playerId = ((Spell) mageObject).getControllerId();
@@ -182,10 +186,10 @@ class MuldrothaTheGravetideWatcher extends Watcher {
playerId = ((Permanent) mageObject).getControllerId();
}
if (playerId != null) {
- Set permanentTypes = playerPlayedPermanentTypes.get(playerId);
+ Set permanentTypes = sourcePlayedPermanentTypes.get(event.getAdditionalReference());
if (permanentTypes == null) {
permanentTypes = EnumSet.noneOf(CardType.class);
- playerPlayedPermanentTypes.put(playerId, permanentTypes);
+ sourcePlayedPermanentTypes.put(event.getAdditionalReference(), permanentTypes);
}
Set typesNotCast = EnumSet.noneOf(CardType.class);
for (CardType cardType : mageObject.getCardType()) {
@@ -226,12 +230,12 @@ class MuldrothaTheGravetideWatcher extends Watcher {
@Override
public void reset() {
- playerPlayedPermanentTypes.clear();
+ sourcePlayedPermanentTypes.clear();
super.reset();
}
- public boolean permanentTypePlayedFromGraveyard(UUID playerId, CardType cardType) {
- Set permanentTypes = playerPlayedPermanentTypes.get(playerId);
+ public boolean permanentTypePlayedFromGraveyard(MageObjectReference sourceMor, CardType cardType) {
+ Set permanentTypes = sourcePlayedPermanentTypes.get(sourceMor);
if (permanentTypes != null) {
return permanentTypes.contains(cardType);
}
diff --git a/Mage.Sets/src/mage/cards/m/Mulldrifter.java b/Mage.Sets/src/mage/cards/m/Mulldrifter.java
index 71fde92e862..3a4d419e18a 100644
--- a/Mage.Sets/src/mage/cards/m/Mulldrifter.java
+++ b/Mage.Sets/src/mage/cards/m/Mulldrifter.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Mulldrifter extends CardImpl {
+public final class Mulldrifter extends CardImpl {
public Mulldrifter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MultaniMaroSorcerer.java b/Mage.Sets/src/mage/cards/m/MultaniMaroSorcerer.java
index 4ae9f6c4b5b..bf23d4f24e2 100644
--- a/Mage.Sets/src/mage/cards/m/MultaniMaroSorcerer.java
+++ b/Mage.Sets/src/mage/cards/m/MultaniMaroSorcerer.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class MultaniMaroSorcerer extends CardImpl {
+public final class MultaniMaroSorcerer extends CardImpl {
public MultaniMaroSorcerer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MultaniYavimayasAvatar.java b/Mage.Sets/src/mage/cards/m/MultaniYavimayasAvatar.java
index ddfa8c755da..6859321659a 100644
--- a/Mage.Sets/src/mage/cards/m/MultaniYavimayasAvatar.java
+++ b/Mage.Sets/src/mage/cards/m/MultaniYavimayasAvatar.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author jpgunter
*/
-public class MultaniYavimayasAvatar extends CardImpl {
+public final class MultaniYavimayasAvatar extends CardImpl {
private static final FilterControlledLandPermanent LANDS_YOU_CONTROL_FILTER = new FilterControlledLandPermanent();
private static final FilterLandCard LAND_FILTER = new FilterLandCard();
diff --git a/Mage.Sets/src/mage/cards/m/MultanisAcolyte.java b/Mage.Sets/src/mage/cards/m/MultanisAcolyte.java
index ed229a85dca..82eab8adefd 100644
--- a/Mage.Sets/src/mage/cards/m/MultanisAcolyte.java
+++ b/Mage.Sets/src/mage/cards/m/MultanisAcolyte.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class MultanisAcolyte extends CardImpl {
+public final class MultanisAcolyte extends CardImpl {
public MultanisAcolyte(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MultanisDecree.java b/Mage.Sets/src/mage/cards/m/MultanisDecree.java
index cb1c2584333..ded7eee3069 100644
--- a/Mage.Sets/src/mage/cards/m/MultanisDecree.java
+++ b/Mage.Sets/src/mage/cards/m/MultanisDecree.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author Backfir3
*/
-public class MultanisDecree extends CardImpl {
+public final class MultanisDecree extends CardImpl {
public MultanisDecree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MultanisHarmony.java b/Mage.Sets/src/mage/cards/m/MultanisHarmony.java
index 1c10e4c0007..111b33aadcf 100644
--- a/Mage.Sets/src/mage/cards/m/MultanisHarmony.java
+++ b/Mage.Sets/src/mage/cards/m/MultanisHarmony.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class MultanisHarmony extends CardImpl {
+public final class MultanisHarmony extends CardImpl {
public MultanisHarmony(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MultanisPresence.java b/Mage.Sets/src/mage/cards/m/MultanisPresence.java
index d80bfca47f3..2bd649ef619 100644
--- a/Mage.Sets/src/mage/cards/m/MultanisPresence.java
+++ b/Mage.Sets/src/mage/cards/m/MultanisPresence.java
@@ -47,7 +47,7 @@ import mage.watchers.Watcher;
*
* @author TheElk801
*/
-public class MultanisPresence extends CardImpl {
+public final class MultanisPresence extends CardImpl {
public MultanisPresence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MultiformWonder.java b/Mage.Sets/src/mage/cards/m/MultiformWonder.java
index 6e663d14919..d825c729872 100644
--- a/Mage.Sets/src/mage/cards/m/MultiformWonder.java
+++ b/Mage.Sets/src/mage/cards/m/MultiformWonder.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MultiformWonder extends CardImpl {
+public final class MultiformWonder extends CardImpl {
public MultiformWonder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/m/MummyParamount.java b/Mage.Sets/src/mage/cards/m/MummyParamount.java
index 5bca13317f0..7fd50cc3fa9 100644
--- a/Mage.Sets/src/mage/cards/m/MummyParamount.java
+++ b/Mage.Sets/src/mage/cards/m/MummyParamount.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author emerald000
*/
-public class MummyParamount extends CardImpl {
+public final class MummyParamount extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Zombie");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MundaAmbushLeader.java b/Mage.Sets/src/mage/cards/m/MundaAmbushLeader.java
index f1fc6db2970..5c453d111f6 100644
--- a/Mage.Sets/src/mage/cards/m/MundaAmbushLeader.java
+++ b/Mage.Sets/src/mage/cards/m/MundaAmbushLeader.java
@@ -49,7 +49,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class MundaAmbushLeader extends CardImpl {
+public final class MundaAmbushLeader extends CardImpl {
public MundaAmbushLeader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MundasVanguard.java b/Mage.Sets/src/mage/cards/m/MundasVanguard.java
index 07ab71a581b..dda7a341e4d 100644
--- a/Mage.Sets/src/mage/cards/m/MundasVanguard.java
+++ b/Mage.Sets/src/mage/cards/m/MundasVanguard.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class MundasVanguard extends CardImpl {
+public final class MundasVanguard extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control");
diff --git a/Mage.Sets/src/mage/cards/m/Mundungu.java b/Mage.Sets/src/mage/cards/m/Mundungu.java
index 63e2aba6404..a03e0dc4e9a 100644
--- a/Mage.Sets/src/mage/cards/m/Mundungu.java
+++ b/Mage.Sets/src/mage/cards/m/Mundungu.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
*
* @author nigelzor
*/
-public class Mundungu extends CardImpl {
+public final class Mundungu extends CardImpl {
public Mundungu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MunghaWurm.java b/Mage.Sets/src/mage/cards/m/MunghaWurm.java
index 0e26793d501..7974d75e9f6 100644
--- a/Mage.Sets/src/mage/cards/m/MunghaWurm.java
+++ b/Mage.Sets/src/mage/cards/m/MunghaWurm.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MunghaWurm extends CardImpl {
+public final class MunghaWurm extends CardImpl {
public MunghaWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MuragandaPetroglyphs.java b/Mage.Sets/src/mage/cards/m/MuragandaPetroglyphs.java
index 8a9471676d0..76ec9932c40 100644
--- a/Mage.Sets/src/mage/cards/m/MuragandaPetroglyphs.java
+++ b/Mage.Sets/src/mage/cards/m/MuragandaPetroglyphs.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author anonymous
*/
-public class MuragandaPetroglyphs extends CardImpl {
+public final class MuragandaPetroglyphs extends CardImpl {
private static final FilterCreaturePermanent filterNoAbilities
= new FilterCreaturePermanent("Creatures with no ability");
diff --git a/Mage.Sets/src/mage/cards/m/MurasaPyromancer.java b/Mage.Sets/src/mage/cards/m/MurasaPyromancer.java
index d230d127fe5..51dca345eee 100644
--- a/Mage.Sets/src/mage/cards/m/MurasaPyromancer.java
+++ b/Mage.Sets/src/mage/cards/m/MurasaPyromancer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class MurasaPyromancer extends CardImpl {
+public final class MurasaPyromancer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Ally you control");
diff --git a/Mage.Sets/src/mage/cards/m/MurasaRanger.java b/Mage.Sets/src/mage/cards/m/MurasaRanger.java
index 0f1c5584894..4577fe8f500 100644
--- a/Mage.Sets/src/mage/cards/m/MurasaRanger.java
+++ b/Mage.Sets/src/mage/cards/m/MurasaRanger.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class MurasaRanger extends CardImpl {
+public final class MurasaRanger extends CardImpl {
public MurasaRanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/Murder.java b/Mage.Sets/src/mage/cards/m/Murder.java
index 14a15c9b783..4a5332593ad 100644
--- a/Mage.Sets/src/mage/cards/m/Murder.java
+++ b/Mage.Sets/src/mage/cards/m/Murder.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Murder extends CardImpl {
+public final class Murder extends CardImpl {
public Murder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MurderInvestigation.java b/Mage.Sets/src/mage/cards/m/MurderInvestigation.java
index 969d81fbfb4..0a1c46fd921 100644
--- a/Mage.Sets/src/mage/cards/m/MurderInvestigation.java
+++ b/Mage.Sets/src/mage/cards/m/MurderInvestigation.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class MurderInvestigation extends CardImpl {
+public final class MurderInvestigation extends CardImpl {
public MurderInvestigation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MurderOfCrows.java b/Mage.Sets/src/mage/cards/m/MurderOfCrows.java
index 39e69cc9e87..840fdea53c9 100644
--- a/Mage.Sets/src/mage/cards/m/MurderOfCrows.java
+++ b/Mage.Sets/src/mage/cards/m/MurderOfCrows.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author North
*/
-public class MurderOfCrows extends CardImpl {
+public final class MurderOfCrows extends CardImpl {
public MurderOfCrows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MurderersAxe.java b/Mage.Sets/src/mage/cards/m/MurderersAxe.java
index 4623adbb6d9..bd927536df8 100644
--- a/Mage.Sets/src/mage/cards/m/MurderersAxe.java
+++ b/Mage.Sets/src/mage/cards/m/MurderersAxe.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class MurderersAxe extends CardImpl {
+public final class MurderersAxe extends CardImpl {
public MurderersAxe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/m/MurderousBetrayal.java b/Mage.Sets/src/mage/cards/m/MurderousBetrayal.java
index 5916cdf95f1..7df6d31c84e 100644
--- a/Mage.Sets/src/mage/cards/m/MurderousBetrayal.java
+++ b/Mage.Sets/src/mage/cards/m/MurderousBetrayal.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author choiseul11
*/
-public class MurderousBetrayal extends CardImpl {
+public final class MurderousBetrayal extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java b/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java
index 3e8d710ac43..495cf7a449d 100644
--- a/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java
+++ b/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class MurderousCompulsion extends CardImpl {
+public final class MurderousCompulsion extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/m/MurderousCut.java b/Mage.Sets/src/mage/cards/m/MurderousCut.java
index dbdfd8f41c0..12ed83a91fb 100644
--- a/Mage.Sets/src/mage/cards/m/MurderousCut.java
+++ b/Mage.Sets/src/mage/cards/m/MurderousCut.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class MurderousCut extends CardImpl {
+public final class MurderousCut extends CardImpl {
public MurderousCut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MurderousRedcap.java b/Mage.Sets/src/mage/cards/m/MurderousRedcap.java
index d3a21b57aea..27ddb90ef2e 100644
--- a/Mage.Sets/src/mage/cards/m/MurderousRedcap.java
+++ b/Mage.Sets/src/mage/cards/m/MurderousRedcap.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jonubuu
*/
-public class MurderousRedcap extends CardImpl {
+public final class MurderousRedcap extends CardImpl {
public MurderousRedcap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B/R}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/m/MurderousSpoils.java b/Mage.Sets/src/mage/cards/m/MurderousSpoils.java
index 42a7abd4d22..2e8d6dd30ca 100644
--- a/Mage.Sets/src/mage/cards/m/MurderousSpoils.java
+++ b/Mage.Sets/src/mage/cards/m/MurderousSpoils.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author wetterlicht
*/
-public class MurderousSpoils extends CardImpl {
+public final class MurderousSpoils extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/m/MurkDwellers.java b/Mage.Sets/src/mage/cards/m/MurkDwellers.java
index db8ee6fdae7..078ead8b0ae 100644
--- a/Mage.Sets/src/mage/cards/m/MurkDwellers.java
+++ b/Mage.Sets/src/mage/cards/m/MurkDwellers.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class MurkDwellers extends CardImpl {
+public final class MurkDwellers extends CardImpl {
public MurkDwellers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MurkStrider.java b/Mage.Sets/src/mage/cards/m/MurkStrider.java
index 94b539b512d..e332ba9a140 100644
--- a/Mage.Sets/src/mage/cards/m/MurkStrider.java
+++ b/Mage.Sets/src/mage/cards/m/MurkStrider.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class MurkStrider extends CardImpl {
+public final class MurkStrider extends CardImpl {
public MurkStrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MurkfiendLiege.java b/Mage.Sets/src/mage/cards/m/MurkfiendLiege.java
index 3d38b2c6d88..e5fe8e087c8 100644
--- a/Mage.Sets/src/mage/cards/m/MurkfiendLiege.java
+++ b/Mage.Sets/src/mage/cards/m/MurkfiendLiege.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class MurkfiendLiege extends CardImpl {
+public final class MurkfiendLiege extends CardImpl {
private static final FilterCreaturePermanent filterGreen = new FilterCreaturePermanent("green creatures");
private static final FilterCreaturePermanent filterBlue = new FilterCreaturePermanent("blue creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MurmuringBosk.java b/Mage.Sets/src/mage/cards/m/MurmuringBosk.java
index e77e7f13da2..a7a07bd7c52 100644
--- a/Mage.Sets/src/mage/cards/m/MurmuringBosk.java
+++ b/Mage.Sets/src/mage/cards/m/MurmuringBosk.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class MurmuringBosk extends CardImpl {
+public final class MurmuringBosk extends CardImpl {
private static final FilterCard filter = new FilterCard("a Treefolk card from your hand");
diff --git a/Mage.Sets/src/mage/cards/m/MurmuringPhantasm.java b/Mage.Sets/src/mage/cards/m/MurmuringPhantasm.java
index e92ba98abe1..d3df335713c 100644
--- a/Mage.Sets/src/mage/cards/m/MurmuringPhantasm.java
+++ b/Mage.Sets/src/mage/cards/m/MurmuringPhantasm.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*/
-public class MurmuringPhantasm extends CardImpl {
+public final class MurmuringPhantasm extends CardImpl {
public MurmuringPhantasm (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MurmursFromBeyond.java b/Mage.Sets/src/mage/cards/m/MurmursFromBeyond.java
index 1b8f7f59e64..8a6149b7795 100644
--- a/Mage.Sets/src/mage/cards/m/MurmursFromBeyond.java
+++ b/Mage.Sets/src/mage/cards/m/MurmursFromBeyond.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class MurmursFromBeyond extends CardImpl {
+public final class MurmursFromBeyond extends CardImpl {
public MurmursFromBeyond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MuscleBurst.java b/Mage.Sets/src/mage/cards/m/MuscleBurst.java
index 8847d6122de..1c38ad89c12 100644
--- a/Mage.Sets/src/mage/cards/m/MuscleBurst.java
+++ b/Mage.Sets/src/mage/cards/m/MuscleBurst.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MuscleBurst extends CardImpl {
+public final class MuscleBurst extends CardImpl {
private static final FilterCard filter = new FilterCard();
diff --git a/Mage.Sets/src/mage/cards/m/MuscleSliver.java b/Mage.Sets/src/mage/cards/m/MuscleSliver.java
index b7997a190e8..5e416ba0b9a 100644
--- a/Mage.Sets/src/mage/cards/m/MuscleSliver.java
+++ b/Mage.Sets/src/mage/cards/m/MuscleSliver.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class MuscleSliver extends CardImpl {
+public final class MuscleSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/m/MutagenicGrowth.java b/Mage.Sets/src/mage/cards/m/MutagenicGrowth.java
index 213fc1c79b4..96b8b2ab3d8 100644
--- a/Mage.Sets/src/mage/cards/m/MutagenicGrowth.java
+++ b/Mage.Sets/src/mage/cards/m/MutagenicGrowth.java
@@ -25,7 +25,6 @@
* 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;
@@ -40,16 +39,18 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class MutagenicGrowth extends CardImpl {
+public final class MutagenicGrowth extends CardImpl {
- public MutagenicGrowth (UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G/P}");
+ public MutagenicGrowth(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G/P}");
+ // ({GP} can be paid with either {G} or 2 life.)
+ // Target creature gets +2/+2 until end of turn.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn));
}
- public MutagenicGrowth (final MutagenicGrowth card) {
+ public MutagenicGrowth(final MutagenicGrowth card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/m/MutantsPrey.java b/Mage.Sets/src/mage/cards/m/MutantsPrey.java
index 0cbd44d06c3..a8c7fa53eaf 100644
--- a/Mage.Sets/src/mage/cards/m/MutantsPrey.java
+++ b/Mage.Sets/src/mage/cards/m/MutantsPrey.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
-public class MutantsPrey extends CardImpl {
+public final class MutantsPrey extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature you control with a +1/+1 counter on it");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/m/Mutavault.java b/Mage.Sets/src/mage/cards/m/Mutavault.java
index 1715440b130..9f023950e73 100644
--- a/Mage.Sets/src/mage/cards/m/Mutavault.java
+++ b/Mage.Sets/src/mage/cards/m/Mutavault.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.Token;
*
* @author jonubuu
*/
-public class Mutavault extends CardImpl {
+public final class Mutavault extends CardImpl {
public Mutavault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/Mutilate.java b/Mage.Sets/src/mage/cards/m/Mutilate.java
index 3b2d82cf787..2f3a7766ed5 100644
--- a/Mage.Sets/src/mage/cards/m/Mutilate.java
+++ b/Mage.Sets/src/mage/cards/m/Mutilate.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class Mutilate extends CardImpl {
+public final class Mutilate extends CardImpl {
private static final String ruleText = "All creatures get -1/-1 until end of turn for each Swamp you control";
diff --git a/Mage.Sets/src/mage/cards/m/Mutiny.java b/Mage.Sets/src/mage/cards/m/Mutiny.java
index 3f53a0f168a..d09bd49f279 100644
--- a/Mage.Sets/src/mage/cards/m/Mutiny.java
+++ b/Mage.Sets/src/mage/cards/m/Mutiny.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Mutiny extends CardImpl {
+public final class Mutiny extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/m/MuzzioVisionaryArchitect.java b/Mage.Sets/src/mage/cards/m/MuzzioVisionaryArchitect.java
index 89e91c106d6..d0dd529c16d 100644
--- a/Mage.Sets/src/mage/cards/m/MuzzioVisionaryArchitect.java
+++ b/Mage.Sets/src/mage/cards/m/MuzzioVisionaryArchitect.java
@@ -52,7 +52,7 @@ import mage.target.TargetCard;
*
* @author fireshoes
*/
-public class MuzzioVisionaryArchitect extends CardImpl {
+public final class MuzzioVisionaryArchitect extends CardImpl {
public MuzzioVisionaryArchitect(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/Muzzle.java b/Mage.Sets/src/mage/cards/m/Muzzle.java
index cecffa696a6..bb28ddd61e6 100644
--- a/Mage.Sets/src/mage/cards/m/Muzzle.java
+++ b/Mage.Sets/src/mage/cards/m/Muzzle.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Muzzle extends CardImpl {
+public final class Muzzle extends CardImpl {
public Muzzle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MwonvuliAcidMoss.java b/Mage.Sets/src/mage/cards/m/MwonvuliAcidMoss.java
index e4d18bdc96e..732792d528f 100644
--- a/Mage.Sets/src/mage/cards/m/MwonvuliAcidMoss.java
+++ b/Mage.Sets/src/mage/cards/m/MwonvuliAcidMoss.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author markedagain
*/
-public class MwonvuliAcidMoss extends CardImpl {
+public final class MwonvuliAcidMoss extends CardImpl {
private static final FilterLandCard filterForest = new FilterLandCard("Forest card");
diff --git a/Mage.Sets/src/mage/cards/m/MwonvuliBeastTracker.java b/Mage.Sets/src/mage/cards/m/MwonvuliBeastTracker.java
index c897bc2b2e3..c7afbff842f 100644
--- a/Mage.Sets/src/mage/cards/m/MwonvuliBeastTracker.java
+++ b/Mage.Sets/src/mage/cards/m/MwonvuliBeastTracker.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class MwonvuliBeastTracker extends CardImpl {
+public final class MwonvuliBeastTracker extends CardImpl {
private static final FilterCard filter = new FilterCard("creature card with deathtouch, hexproof, reach, or trample in your library");
diff --git a/Mage.Sets/src/mage/cards/m/MwonvuliOoze.java b/Mage.Sets/src/mage/cards/m/MwonvuliOoze.java
index 36bc7151119..c3eb3185417 100644
--- a/Mage.Sets/src/mage/cards/m/MwonvuliOoze.java
+++ b/Mage.Sets/src/mage/cards/m/MwonvuliOoze.java
@@ -49,7 +49,7 @@ import mage.game.Game;
*
* @author LoneFox
*/
-public class MwonvuliOoze extends CardImpl {
+public final class MwonvuliOoze extends CardImpl {
public MwonvuliOoze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MycoidShepherd.java b/Mage.Sets/src/mage/cards/m/MycoidShepherd.java
index 51058d58604..9e763e383b2 100644
--- a/Mage.Sets/src/mage/cards/m/MycoidShepherd.java
+++ b/Mage.Sets/src/mage/cards/m/MycoidShepherd.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class MycoidShepherd extends CardImpl {
+public final class MycoidShepherd extends CardImpl {
public MycoidShepherd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/Mycologist.java b/Mage.Sets/src/mage/cards/m/Mycologist.java
index 4eb63fd55ba..76cd17fcdef 100644
--- a/Mage.Sets/src/mage/cards/m/Mycologist.java
+++ b/Mage.Sets/src/mage/cards/m/Mycologist.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class Mycologist extends CardImpl {
+public final class Mycologist extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Saproling");
diff --git a/Mage.Sets/src/mage/cards/m/Mycoloth.java b/Mage.Sets/src/mage/cards/m/Mycoloth.java
index 1c5ffa24239..890a629af12 100644
--- a/Mage.Sets/src/mage/cards/m/Mycoloth.java
+++ b/Mage.Sets/src/mage/cards/m/Mycoloth.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author LevelX2
*/
-public class Mycoloth extends CardImpl {
+public final class Mycoloth extends CardImpl {
public Mycoloth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MycosynthFiend.java b/Mage.Sets/src/mage/cards/m/MycosynthFiend.java
index 5ea9bf19e2c..e13b4339573 100644
--- a/Mage.Sets/src/mage/cards/m/MycosynthFiend.java
+++ b/Mage.Sets/src/mage/cards/m/MycosynthFiend.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class MycosynthFiend extends CardImpl {
+public final class MycosynthFiend extends CardImpl {
public MycosynthFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MycosynthGolem.java b/Mage.Sets/src/mage/cards/m/MycosynthGolem.java
index 3b7744b5821..c9e8859246a 100644
--- a/Mage.Sets/src/mage/cards/m/MycosynthGolem.java
+++ b/Mage.Sets/src/mage/cards/m/MycosynthGolem.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author jeffwadsworth
*/
-public class MycosynthGolem extends CardImpl {
+public final class MycosynthGolem extends CardImpl {
private static final FilterSpell filter = new FilterSpell("Artifact creature spells");
diff --git a/Mage.Sets/src/mage/cards/m/MycosynthLattice.java b/Mage.Sets/src/mage/cards/m/MycosynthLattice.java
index c8470e1bbcd..185be79eb2b 100644
--- a/Mage.Sets/src/mage/cards/m/MycosynthLattice.java
+++ b/Mage.Sets/src/mage/cards/m/MycosynthLattice.java
@@ -49,7 +49,7 @@ import mage.players.Player;
/**
* @author duncant
*/
-public class MycosynthLattice extends CardImpl {
+public final class MycosynthLattice extends CardImpl {
public MycosynthLattice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/m/MycosynthWellspring.java b/Mage.Sets/src/mage/cards/m/MycosynthWellspring.java
index ea6f5545a52..93f54352510 100644
--- a/Mage.Sets/src/mage/cards/m/MycosynthWellspring.java
+++ b/Mage.Sets/src/mage/cards/m/MycosynthWellspring.java
@@ -42,15 +42,15 @@ import java.util.UUID;
*
* @author North
*/
-public class MycosynthWellspring extends CardImpl {
+public final class MycosynthWellspring extends CardImpl {
public MycosynthWellspring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
// When Mycosynth Wellspring enters the battlefield or is put into a graveyard from the battlefield,
// you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true), true));
- this.addAbility(new DiesTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
+ this.addAbility(new DiesTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
}
public MycosynthWellspring(final MycosynthWellspring card) {
diff --git a/Mage.Sets/src/mage/cards/m/MyojinOfCleansingFire.java b/Mage.Sets/src/mage/cards/m/MyojinOfCleansingFire.java
index 67d85427cdc..36ba7a6fcec 100644
--- a/Mage.Sets/src/mage/cards/m/MyojinOfCleansingFire.java
+++ b/Mage.Sets/src/mage/cards/m/MyojinOfCleansingFire.java
@@ -56,7 +56,7 @@ import mage.watchers.common.CastFromHandWatcher;
/**
* @author Loki
*/
-public class MyojinOfCleansingFire extends CardImpl {
+public final class MyojinOfCleansingFire extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java b/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java
index 8d7379169fe..8b23fe3c366 100644
--- a/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java
+++ b/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java
@@ -55,7 +55,7 @@ import mage.watchers.common.CastFromHandWatcher;
/**
* @author LevelX
*/
-public class MyojinOfInfiniteRage extends CardImpl {
+public final class MyojinOfInfiniteRage extends CardImpl {
public MyojinOfInfiniteRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MyojinOfLifesWeb.java b/Mage.Sets/src/mage/cards/m/MyojinOfLifesWeb.java
index f804c301723..9ab1a3aa3fb 100644
--- a/Mage.Sets/src/mage/cards/m/MyojinOfLifesWeb.java
+++ b/Mage.Sets/src/mage/cards/m/MyojinOfLifesWeb.java
@@ -56,7 +56,7 @@ import mage.watchers.common.CastFromHandWatcher;
/**
* @author LevelX
*/
-public class MyojinOfLifesWeb extends CardImpl {
+public final class MyojinOfLifesWeb extends CardImpl {
public MyojinOfLifesWeb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MyojinOfNightsReach.java b/Mage.Sets/src/mage/cards/m/MyojinOfNightsReach.java
index ba0285e5c59..24814118059 100644
--- a/Mage.Sets/src/mage/cards/m/MyojinOfNightsReach.java
+++ b/Mage.Sets/src/mage/cards/m/MyojinOfNightsReach.java
@@ -54,7 +54,7 @@ import mage.watchers.common.CastFromHandWatcher;
/**
* @author LevelX
*/
-public class MyojinOfNightsReach extends CardImpl {
+public final class MyojinOfNightsReach extends CardImpl {
public MyojinOfNightsReach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/m/MyojinOfSeeingWinds.java b/Mage.Sets/src/mage/cards/m/MyojinOfSeeingWinds.java
index 2f33f93c205..0776539064d 100644
--- a/Mage.Sets/src/mage/cards/m/MyojinOfSeeingWinds.java
+++ b/Mage.Sets/src/mage/cards/m/MyojinOfSeeingWinds.java
@@ -54,7 +54,7 @@ import mage.watchers.common.CastFromHandWatcher;
/**
* @author LevelX
*/
-public class MyojinOfSeeingWinds extends CardImpl {
+public final class MyojinOfSeeingWinds extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent you control");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MyrAdapter.java b/Mage.Sets/src/mage/cards/m/MyrAdapter.java
index 3ae3e6d434d..ca6538c39db 100644
--- a/Mage.Sets/src/mage/cards/m/MyrAdapter.java
+++ b/Mage.Sets/src/mage/cards/m/MyrAdapter.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class MyrAdapter extends CardImpl {
+public final class MyrAdapter extends CardImpl {
public MyrAdapter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java b/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java
index cade2aa34f9..eeff366ec25 100644
--- a/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java
+++ b/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java
@@ -61,7 +61,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MyrBattlesphere extends CardImpl {
+public final class MyrBattlesphere extends CardImpl {
public MyrBattlesphere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrEnforcer.java b/Mage.Sets/src/mage/cards/m/MyrEnforcer.java
index 9d1cd494ce8..70b5a733a5f 100644
--- a/Mage.Sets/src/mage/cards/m/MyrEnforcer.java
+++ b/Mage.Sets/src/mage/cards/m/MyrEnforcer.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class MyrEnforcer extends CardImpl {
+public final class MyrEnforcer extends CardImpl {
public MyrEnforcer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrGalvanizer.java b/Mage.Sets/src/mage/cards/m/MyrGalvanizer.java
index 9253ff1dd37..37665273e68 100644
--- a/Mage.Sets/src/mage/cards/m/MyrGalvanizer.java
+++ b/Mage.Sets/src/mage/cards/m/MyrGalvanizer.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class MyrGalvanizer extends CardImpl {
+public final class MyrGalvanizer extends CardImpl {
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Myr creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MyrIncubator.java b/Mage.Sets/src/mage/cards/m/MyrIncubator.java
index 498af27e1a7..e4b1e04045c 100644
--- a/Mage.Sets/src/mage/cards/m/MyrIncubator.java
+++ b/Mage.Sets/src/mage/cards/m/MyrIncubator.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class MyrIncubator extends CardImpl {
+public final class MyrIncubator extends CardImpl {
public MyrIncubator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrLandshaper.java b/Mage.Sets/src/mage/cards/m/MyrLandshaper.java
index 09eff4a6220..ff915de64c3 100644
--- a/Mage.Sets/src/mage/cards/m/MyrLandshaper.java
+++ b/Mage.Sets/src/mage/cards/m/MyrLandshaper.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author daagar
*/
-public class MyrLandshaper extends CardImpl {
+public final class MyrLandshaper extends CardImpl {
public MyrLandshaper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrMatrix.java b/Mage.Sets/src/mage/cards/m/MyrMatrix.java
index e495044396e..67f347b87cf 100644
--- a/Mage.Sets/src/mage/cards/m/MyrMatrix.java
+++ b/Mage.Sets/src/mage/cards/m/MyrMatrix.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.MyrToken;
*
* @author Loki
*/
-public class MyrMatrix extends CardImpl {
+public final class MyrMatrix extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Myr");
diff --git a/Mage.Sets/src/mage/cards/m/MyrMindservant.java b/Mage.Sets/src/mage/cards/m/MyrMindservant.java
index a188d848f5d..c71e5b8f13a 100644
--- a/Mage.Sets/src/mage/cards/m/MyrMindservant.java
+++ b/Mage.Sets/src/mage/cards/m/MyrMindservant.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class MyrMindservant extends CardImpl {
+public final class MyrMindservant extends CardImpl {
public MyrMindservant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrMoonvessel.java b/Mage.Sets/src/mage/cards/m/MyrMoonvessel.java
index d40b2812464..24acd57a301 100644
--- a/Mage.Sets/src/mage/cards/m/MyrMoonvessel.java
+++ b/Mage.Sets/src/mage/cards/m/MyrMoonvessel.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class MyrMoonvessel extends CardImpl {
+public final class MyrMoonvessel extends CardImpl {
public MyrMoonvessel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrPropagator.java b/Mage.Sets/src/mage/cards/m/MyrPropagator.java
index d7304695f01..59dd5b16444 100644
--- a/Mage.Sets/src/mage/cards/m/MyrPropagator.java
+++ b/Mage.Sets/src/mage/cards/m/MyrPropagator.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author nantuko
*/
-public class MyrPropagator extends CardImpl {
+public final class MyrPropagator extends CardImpl {
public MyrPropagator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrPrototype.java b/Mage.Sets/src/mage/cards/m/MyrPrototype.java
index 0a451bb2931..243515d0c49 100644
--- a/Mage.Sets/src/mage/cards/m/MyrPrototype.java
+++ b/Mage.Sets/src/mage/cards/m/MyrPrototype.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000 & L_J
*/
-public class MyrPrototype extends CardImpl {
+public final class MyrPrototype extends CardImpl {
public MyrPrototype(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrQuadropod.java b/Mage.Sets/src/mage/cards/m/MyrQuadropod.java
index 763e9db1b9c..3c7822642c3 100644
--- a/Mage.Sets/src/mage/cards/m/MyrQuadropod.java
+++ b/Mage.Sets/src/mage/cards/m/MyrQuadropod.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class MyrQuadropod extends CardImpl {
+public final class MyrQuadropod extends CardImpl {
public MyrQuadropod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrReservoir.java b/Mage.Sets/src/mage/cards/m/MyrReservoir.java
index 5d4c37b95e7..89a82bcb114 100644
--- a/Mage.Sets/src/mage/cards/m/MyrReservoir.java
+++ b/Mage.Sets/src/mage/cards/m/MyrReservoir.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author nantuko
*/
-public class MyrReservoir extends CardImpl {
+public final class MyrReservoir extends CardImpl {
private static final FilterCard myrCardFilter = new FilterCard("Myr card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/m/MyrRetriever.java b/Mage.Sets/src/mage/cards/m/MyrRetriever.java
index 22a5ec47fcf..5a6d3442c1d 100644
--- a/Mage.Sets/src/mage/cards/m/MyrRetriever.java
+++ b/Mage.Sets/src/mage/cards/m/MyrRetriever.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class MyrRetriever extends CardImpl {
+public final class MyrRetriever extends CardImpl {
private static final FilterArtifactCard filter = new FilterArtifactCard("another target artifact card from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MyrServitor.java b/Mage.Sets/src/mage/cards/m/MyrServitor.java
index 5a51f1e2f93..9931f79c191 100644
--- a/Mage.Sets/src/mage/cards/m/MyrServitor.java
+++ b/Mage.Sets/src/mage/cards/m/MyrServitor.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MyrServitor extends CardImpl {
+public final class MyrServitor extends CardImpl {
public MyrServitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrSire.java b/Mage.Sets/src/mage/cards/m/MyrSire.java
index 96a30bb4f1b..aae2f873f9f 100644
--- a/Mage.Sets/src/mage/cards/m/MyrSire.java
+++ b/Mage.Sets/src/mage/cards/m/MyrSire.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.MyrToken;
*
* @author Loki
*/
-public class MyrSire extends CardImpl {
+public final class MyrSire extends CardImpl {
public MyrSire (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrSuperion.java b/Mage.Sets/src/mage/cards/m/MyrSuperion.java
index 1db95392432..c9e9c6646b1 100644
--- a/Mage.Sets/src/mage/cards/m/MyrSuperion.java
+++ b/Mage.Sets/src/mage/cards/m/MyrSuperion.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author BetaSteward
*/
-public class MyrSuperion extends CardImpl {
+public final class MyrSuperion extends CardImpl {
public MyrSuperion(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/m/MyrTurbine.java b/Mage.Sets/src/mage/cards/m/MyrTurbine.java
index 4dd5eaa4ae5..bb47d38d1a3 100644
--- a/Mage.Sets/src/mage/cards/m/MyrTurbine.java
+++ b/Mage.Sets/src/mage/cards/m/MyrTurbine.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class MyrTurbine extends CardImpl {
+public final class MyrTurbine extends CardImpl {
private static final FilterCreatureCard filterCard = new FilterCreatureCard("Myr creature card");
private static final FilterControlledPermanent filterMyr = new FilterControlledPermanent("Myr you control");
diff --git a/Mage.Sets/src/mage/cards/m/MyrWelder.java b/Mage.Sets/src/mage/cards/m/MyrWelder.java
index d2eef6d2edc..4e1b1140585 100644
--- a/Mage.Sets/src/mage/cards/m/MyrWelder.java
+++ b/Mage.Sets/src/mage/cards/m/MyrWelder.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MyrWelder extends CardImpl {
+public final class MyrWelder extends CardImpl {
public MyrWelder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/m/MyriadLandscape.java b/Mage.Sets/src/mage/cards/m/MyriadLandscape.java
index 0081bcd4e28..90275bf94bb 100644
--- a/Mage.Sets/src/mage/cards/m/MyriadLandscape.java
+++ b/Mage.Sets/src/mage/cards/m/MyriadLandscape.java
@@ -63,7 +63,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author LevelX2
*/
-public class MyriadLandscape extends CardImpl {
+public final class MyriadLandscape extends CardImpl {
public MyriadLandscape(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/m/Myrsmith.java b/Mage.Sets/src/mage/cards/m/Myrsmith.java
index e0c709f1f82..24d8153ad82 100644
--- a/Mage.Sets/src/mage/cards/m/Myrsmith.java
+++ b/Mage.Sets/src/mage/cards/m/Myrsmith.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.MyrToken;
*
* @author Loki, North
*/
-public class Myrsmith extends CardImpl {
+public final class Myrsmith extends CardImpl {
public Myrsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MysteriesOfTheDeep.java b/Mage.Sets/src/mage/cards/m/MysteriesOfTheDeep.java
index 73135d022fd..a7d0ce3700e 100644
--- a/Mage.Sets/src/mage/cards/m/MysteriesOfTheDeep.java
+++ b/Mage.Sets/src/mage/cards/m/MysteriesOfTheDeep.java
@@ -40,7 +40,7 @@ import mage.watchers.common.LandfallWatcher;
*
* @author jeffwadsworth
*/
-public class MysteriesOfTheDeep extends CardImpl {
+public final class MysteriesOfTheDeep extends CardImpl {
public MysteriesOfTheDeep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticBarrier.java b/Mage.Sets/src/mage/cards/m/MysticBarrier.java
index 6abe083ef71..55d36930f49 100644
--- a/Mage.Sets/src/mage/cards/m/MysticBarrier.java
+++ b/Mage.Sets/src/mage/cards/m/MysticBarrier.java
@@ -55,7 +55,7 @@ import mage.players.PlayerList;
*
* @author LevelX2
*/
-public class MysticBarrier extends CardImpl {
+public final class MysticBarrier extends CardImpl {
static final String ALLOW_ATTACKING_LEFT = "Allow attacking left";
static final String ALLOW_ATTACKING_RIGHT = "Allow attacking right";
diff --git a/Mage.Sets/src/mage/cards/m/MysticCompass.java b/Mage.Sets/src/mage/cards/m/MysticCompass.java
index b71396d0306..2defe7bbae5 100644
--- a/Mage.Sets/src/mage/cards/m/MysticCompass.java
+++ b/Mage.Sets/src/mage/cards/m/MysticCompass.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Quercitron
*/
-public class MysticCompass extends CardImpl {
+public final class MysticCompass extends CardImpl {
public MysticCompass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticConfluence.java b/Mage.Sets/src/mage/cards/m/MysticConfluence.java
index 3f42c748bee..a11fc4b6901 100644
--- a/Mage.Sets/src/mage/cards/m/MysticConfluence.java
+++ b/Mage.Sets/src/mage/cards/m/MysticConfluence.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class MysticConfluence extends CardImpl {
+public final class MysticConfluence extends CardImpl {
public MysticConfluence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticCrusader.java b/Mage.Sets/src/mage/cards/m/MysticCrusader.java
index 0ca52c27afc..2c022b8d511 100644
--- a/Mage.Sets/src/mage/cards/m/MysticCrusader.java
+++ b/Mage.Sets/src/mage/cards/m/MysticCrusader.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class MysticCrusader extends CardImpl {
+public final class MysticCrusader extends CardImpl {
public MysticCrusader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticDecree.java b/Mage.Sets/src/mage/cards/m/MysticDecree.java
index ec92f263fa6..8fb22bb4fd4 100644
--- a/Mage.Sets/src/mage/cards/m/MysticDecree.java
+++ b/Mage.Sets/src/mage/cards/m/MysticDecree.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author fireshoes
*/
-public class MysticDecree extends CardImpl {
+public final class MysticDecree extends CardImpl {
public MysticDecree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticDenial.java b/Mage.Sets/src/mage/cards/m/MysticDenial.java
index 79e36f11755..12b85256f83 100644
--- a/Mage.Sets/src/mage/cards/m/MysticDenial.java
+++ b/Mage.Sets/src/mage/cards/m/MysticDenial.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class MysticDenial extends CardImpl {
+public final class MysticDenial extends CardImpl {
private static final FilterSpell filter = new FilterSpell("creature or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/m/MysticEnforcer.java b/Mage.Sets/src/mage/cards/m/MysticEnforcer.java
index e4892dfabad..220e96b62a8 100644
--- a/Mage.Sets/src/mage/cards/m/MysticEnforcer.java
+++ b/Mage.Sets/src/mage/cards/m/MysticEnforcer.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class MysticEnforcer extends CardImpl {
+public final class MysticEnforcer extends CardImpl {
public MysticEnforcer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticFamiliar.java b/Mage.Sets/src/mage/cards/m/MysticFamiliar.java
index 0ede4249fb3..83d40b5e2ed 100644
--- a/Mage.Sets/src/mage/cards/m/MysticFamiliar.java
+++ b/Mage.Sets/src/mage/cards/m/MysticFamiliar.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class MysticFamiliar extends CardImpl {
+public final class MysticFamiliar extends CardImpl {
public MysticFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticGate.java b/Mage.Sets/src/mage/cards/m/MysticGate.java
index 3b26f8336e9..f350873d6f7 100644
--- a/Mage.Sets/src/mage/cards/m/MysticGate.java
+++ b/Mage.Sets/src/mage/cards/m/MysticGate.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jonubuu
*/
-public class MysticGate extends CardImpl {
+public final class MysticGate extends CardImpl {
public MysticGate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MysticGenesis.java b/Mage.Sets/src/mage/cards/m/MysticGenesis.java
index 51216b1973a..3ce529c4f2c 100644
--- a/Mage.Sets/src/mage/cards/m/MysticGenesis.java
+++ b/Mage.Sets/src/mage/cards/m/MysticGenesis.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class MysticGenesis extends CardImpl {
+public final class MysticGenesis extends CardImpl {
public MysticGenesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticMeditation.java b/Mage.Sets/src/mage/cards/m/MysticMeditation.java
index 0db00ac1486..c778d8c9c66 100644
--- a/Mage.Sets/src/mage/cards/m/MysticMeditation.java
+++ b/Mage.Sets/src/mage/cards/m/MysticMeditation.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class MysticMeditation extends CardImpl {
+public final class MysticMeditation extends CardImpl {
public MysticMeditation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticMelting.java b/Mage.Sets/src/mage/cards/m/MysticMelting.java
index 06f2d597a50..1d2d9f9cb61 100644
--- a/Mage.Sets/src/mage/cards/m/MysticMelting.java
+++ b/Mage.Sets/src/mage/cards/m/MysticMelting.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class MysticMelting extends CardImpl {
+public final class MysticMelting extends CardImpl {
public MysticMelting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticMight.java b/Mage.Sets/src/mage/cards/m/MysticMight.java
index de75a16bc7c..46ee7fff51f 100644
--- a/Mage.Sets/src/mage/cards/m/MysticMight.java
+++ b/Mage.Sets/src/mage/cards/m/MysticMight.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MysticMight extends CardImpl {
+public final class MysticMight extends CardImpl {
public MysticMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticMonastery.java b/Mage.Sets/src/mage/cards/m/MysticMonastery.java
index cb5e02beb4c..14e0ad65cac 100644
--- a/Mage.Sets/src/mage/cards/m/MysticMonastery.java
+++ b/Mage.Sets/src/mage/cards/m/MysticMonastery.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class MysticMonastery extends CardImpl {
+public final class MysticMonastery extends CardImpl {
public MysticMonastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/m/MysticOfTheHiddenWay.java b/Mage.Sets/src/mage/cards/m/MysticOfTheHiddenWay.java
index d2c858757cc..a174c22d0a6 100644
--- a/Mage.Sets/src/mage/cards/m/MysticOfTheHiddenWay.java
+++ b/Mage.Sets/src/mage/cards/m/MysticOfTheHiddenWay.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class MysticOfTheHiddenWay extends CardImpl {
+public final class MysticOfTheHiddenWay extends CardImpl {
public MysticOfTheHiddenWay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticPenitent.java b/Mage.Sets/src/mage/cards/m/MysticPenitent.java
index 46303145ecf..4f8cc3b2613 100644
--- a/Mage.Sets/src/mage/cards/m/MysticPenitent.java
+++ b/Mage.Sets/src/mage/cards/m/MysticPenitent.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class MysticPenitent extends CardImpl {
+public final class MysticPenitent extends CardImpl {
public MysticPenitent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticRemora.java b/Mage.Sets/src/mage/cards/m/MysticRemora.java
index bf1c3293368..6434c07f948 100644
--- a/Mage.Sets/src/mage/cards/m/MysticRemora.java
+++ b/Mage.Sets/src/mage/cards/m/MysticRemora.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TGower
*/
-public class MysticRemora extends CardImpl {
+public final class MysticRemora extends CardImpl {
public MysticRemora(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticRestraints.java b/Mage.Sets/src/mage/cards/m/MysticRestraints.java
index 346910c92bf..2d73564e03f 100644
--- a/Mage.Sets/src/mage/cards/m/MysticRestraints.java
+++ b/Mage.Sets/src/mage/cards/m/MysticRestraints.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX
*/
-public class MysticRestraints extends CardImpl {
+public final class MysticRestraints extends CardImpl {
public MysticRestraints(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticRetrieval.java b/Mage.Sets/src/mage/cards/m/MysticRetrieval.java
index 1734e6bfd40..85834dd00b4 100644
--- a/Mage.Sets/src/mage/cards/m/MysticRetrieval.java
+++ b/Mage.Sets/src/mage/cards/m/MysticRetrieval.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class MysticRetrieval extends CardImpl {
+public final class MysticRetrieval extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/m/MysticSnake.java b/Mage.Sets/src/mage/cards/m/MysticSnake.java
index 8b4af7c6b49..1c5ca637aa0 100644
--- a/Mage.Sets/src/mage/cards/m/MysticSnake.java
+++ b/Mage.Sets/src/mage/cards/m/MysticSnake.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
/**
* @author Loki
*/
-public class MysticSnake extends CardImpl {
+public final class MysticSnake extends CardImpl {
public MysticSnake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticSpeculation.java b/Mage.Sets/src/mage/cards/m/MysticSpeculation.java
index f9c6b99e553..47c14f554e0 100644
--- a/Mage.Sets/src/mage/cards/m/MysticSpeculation.java
+++ b/Mage.Sets/src/mage/cards/m/MysticSpeculation.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class MysticSpeculation extends CardImpl {
+public final class MysticSpeculation extends CardImpl {
public MysticSpeculation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticVeil.java b/Mage.Sets/src/mage/cards/m/MysticVeil.java
index c57e7841eac..6adff2cf541 100644
--- a/Mage.Sets/src/mage/cards/m/MysticVeil.java
+++ b/Mage.Sets/src/mage/cards/m/MysticVeil.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class MysticVeil extends CardImpl {
+public final class MysticVeil extends CardImpl {
public MysticVeil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticVisionary.java b/Mage.Sets/src/mage/cards/m/MysticVisionary.java
index 2f3e1e6807b..f2ac34845f9 100644
--- a/Mage.Sets/src/mage/cards/m/MysticVisionary.java
+++ b/Mage.Sets/src/mage/cards/m/MysticVisionary.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class MysticVisionary extends CardImpl {
+public final class MysticVisionary extends CardImpl {
public MysticVisionary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticZealot.java b/Mage.Sets/src/mage/cards/m/MysticZealot.java
index 0b35f6330f1..4e8984f8a6b 100644
--- a/Mage.Sets/src/mage/cards/m/MysticZealot.java
+++ b/Mage.Sets/src/mage/cards/m/MysticZealot.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class MysticZealot extends CardImpl {
+public final class MysticZealot extends CardImpl {
public MysticZealot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/m/MysticalTeachings.java b/Mage.Sets/src/mage/cards/m/MysticalTeachings.java
index 338738e77e1..c2d08981627 100644
--- a/Mage.Sets/src/mage/cards/m/MysticalTeachings.java
+++ b/Mage.Sets/src/mage/cards/m/MysticalTeachings.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class MysticalTeachings extends CardImpl {
+public final class MysticalTeachings extends CardImpl {
private static final FilterCard filter = new FilterCard("an instant card or a card with flash");
diff --git a/Mage.Sets/src/mage/cards/m/MysticalTutor.java b/Mage.Sets/src/mage/cards/m/MysticalTutor.java
index 69bf2b5b78d..bc72f8d75c3 100644
--- a/Mage.Sets/src/mage/cards/m/MysticalTutor.java
+++ b/Mage.Sets/src/mage/cards/m/MysticalTutor.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class MysticalTutor extends CardImpl {
+public final class MysticalTutor extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card");
static{
diff --git a/Mage.Sets/src/mage/cards/m/MystifyingMaze.java b/Mage.Sets/src/mage/cards/m/MystifyingMaze.java
index 83aa218d830..743329c4ae7 100644
--- a/Mage.Sets/src/mage/cards/m/MystifyingMaze.java
+++ b/Mage.Sets/src/mage/cards/m/MystifyingMaze.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class MystifyingMaze extends CardImpl {
+public final class MystifyingMaze extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/m/MythRealized.java b/Mage.Sets/src/mage/cards/m/MythRealized.java
index 95f4162b134..9290aaa7673 100644
--- a/Mage.Sets/src/mage/cards/m/MythRealized.java
+++ b/Mage.Sets/src/mage/cards/m/MythRealized.java
@@ -61,7 +61,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class MythRealized extends CardImpl {
+public final class MythRealized extends CardImpl {
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/m/MythicProportions.java b/Mage.Sets/src/mage/cards/m/MythicProportions.java
index 51682a4c5f1..579e141be50 100644
--- a/Mage.Sets/src/mage/cards/m/MythicProportions.java
+++ b/Mage.Sets/src/mage/cards/m/MythicProportions.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Jgod
*/
-public class MythicProportions extends CardImpl {
+public final class MythicProportions extends CardImpl {
public MythicProportions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/N1Starfighter.java b/Mage.Sets/src/mage/cards/n/N1Starfighter.java
index f3995d2b987..63ec8e9985a 100644
--- a/Mage.Sets/src/mage/cards/n/N1Starfighter.java
+++ b/Mage.Sets/src/mage/cards/n/N1Starfighter.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Styxo
*/
-public class N1Starfighter extends CardImpl {
+public final class N1Starfighter extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/n/NabanDeanOfIteration.java b/Mage.Sets/src/mage/cards/n/NabanDeanOfIteration.java
index 55b483022f0..841a881a350 100644
--- a/Mage.Sets/src/mage/cards/n/NabanDeanOfIteration.java
+++ b/Mage.Sets/src/mage/cards/n/NabanDeanOfIteration.java
@@ -49,7 +49,7 @@ import mage.game.events.NumberOfTriggersEvent;
*
* @author TheElk801
*/
-public class NabanDeanOfIteration extends CardImpl {
+public final class NabanDeanOfIteration extends CardImpl {
public NabanDeanOfIteration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NacatlHuntPride.java b/Mage.Sets/src/mage/cards/n/NacatlHuntPride.java
index 18983619a93..4923bdd758e 100644
--- a/Mage.Sets/src/mage/cards/n/NacatlHuntPride.java
+++ b/Mage.Sets/src/mage/cards/n/NacatlHuntPride.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class NacatlHuntPride extends CardImpl {
+public final class NacatlHuntPride extends CardImpl {
public NacatlHuntPride(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NacatlOutlander.java b/Mage.Sets/src/mage/cards/n/NacatlOutlander.java
index 851b0dc6828..01599342ebb 100644
--- a/Mage.Sets/src/mage/cards/n/NacatlOutlander.java
+++ b/Mage.Sets/src/mage/cards/n/NacatlOutlander.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class NacatlOutlander extends CardImpl {
+public final class NacatlOutlander extends CardImpl {
public NacatlOutlander(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NacatlSavage.java b/Mage.Sets/src/mage/cards/n/NacatlSavage.java
index ad636291689..0445a3aa8d3 100644
--- a/Mage.Sets/src/mage/cards/n/NacatlSavage.java
+++ b/Mage.Sets/src/mage/cards/n/NacatlSavage.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author jonubuu
*/
-public class NacatlSavage extends CardImpl {
+public final class NacatlSavage extends CardImpl {
public NacatlSavage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NacatlWarPride.java b/Mage.Sets/src/mage/cards/n/NacatlWarPride.java
index a96bafb2596..ea67c20e119 100644
--- a/Mage.Sets/src/mage/cards/n/NacatlWarPride.java
+++ b/Mage.Sets/src/mage/cards/n/NacatlWarPride.java
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author spjspj
*/
-public class NacatlWarPride extends CardImpl {
+public final class NacatlWarPride extends CardImpl {
public NacatlWarPride(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NacreTalisman.java b/Mage.Sets/src/mage/cards/n/NacreTalisman.java
index 25eabed9d0a..986da4aef14 100644
--- a/Mage.Sets/src/mage/cards/n/NacreTalisman.java
+++ b/Mage.Sets/src/mage/cards/n/NacreTalisman.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class NacreTalisman extends CardImpl {
+public final class NacreTalisman extends CardImpl {
private final static FilterSpell filter = new FilterSpell("a white spell");
diff --git a/Mage.Sets/src/mage/cards/n/NafsAsp.java b/Mage.Sets/src/mage/cards/n/NafsAsp.java
index cf8a66a6b37..1a4c01b5920 100644
--- a/Mage.Sets/src/mage/cards/n/NafsAsp.java
+++ b/Mage.Sets/src/mage/cards/n/NafsAsp.java
@@ -43,7 +43,7 @@ import mage.constants.PhaseStep;
*
* @author LoneFox
*/
-public class NafsAsp extends CardImpl {
+public final class NafsAsp extends CardImpl {
public NafsAsp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NagaOracle.java b/Mage.Sets/src/mage/cards/n/NagaOracle.java
index 9663c39383e..e8db2f3de43 100644
--- a/Mage.Sets/src/mage/cards/n/NagaOracle.java
+++ b/Mage.Sets/src/mage/cards/n/NagaOracle.java
@@ -44,7 +44,7 @@ import mage.filter.FilterCard;
*
* @author stravant
*/
-public class NagaOracle extends CardImpl {
+public final class NagaOracle extends CardImpl {
public NagaOracle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NagaVitalist.java b/Mage.Sets/src/mage/cards/n/NagaVitalist.java
index 07d2ec806c1..346c855977b 100644
--- a/Mage.Sets/src/mage/cards/n/NagaVitalist.java
+++ b/Mage.Sets/src/mage/cards/n/NagaVitalist.java
@@ -40,7 +40,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class NagaVitalist extends CardImpl {
+public final class NagaVitalist extends CardImpl {
public NagaVitalist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NagaoBoundByHonor.java b/Mage.Sets/src/mage/cards/n/NagaoBoundByHonor.java
index 6737dedffa1..bf2f02df622 100644
--- a/Mage.Sets/src/mage/cards/n/NagaoBoundByHonor.java
+++ b/Mage.Sets/src/mage/cards/n/NagaoBoundByHonor.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class NagaoBoundByHonor extends CardImpl {
+public final class NagaoBoundByHonor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Samurai creatures");
diff --git a/Mage.Sets/src/mage/cards/n/NaggingThoughts.java b/Mage.Sets/src/mage/cards/n/NaggingThoughts.java
index 90de4fdc872..464bb1a9b9d 100644
--- a/Mage.Sets/src/mage/cards/n/NaggingThoughts.java
+++ b/Mage.Sets/src/mage/cards/n/NaggingThoughts.java
@@ -42,7 +42,7 @@ import mage.filter.FilterCard;
*
* @author LevelX2
*/
-public class NaggingThoughts extends CardImpl {
+public final class NaggingThoughts extends CardImpl {
public NaggingThoughts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java b/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java
index 1749c787bb8..0d6aea8d444 100644
--- a/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java
+++ b/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java
@@ -68,7 +68,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class NahiriTheHarbinger extends CardImpl {
+public final class NahiriTheHarbinger extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("enchantment, tapped artifact, or tapped creature");
diff --git a/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.java b/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.java
index 86ede39fe1f..c5f59763035 100644
--- a/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.java
+++ b/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.java
@@ -62,7 +62,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class NahiriTheLithomancer extends CardImpl {
+public final class NahiriTheLithomancer extends CardImpl {
public NahiriTheLithomancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NahirisMachinations.java b/Mage.Sets/src/mage/cards/n/NahirisMachinations.java
index d7f24afc708..c90f68017a1 100644
--- a/Mage.Sets/src/mage/cards/n/NahirisMachinations.java
+++ b/Mage.Sets/src/mage/cards/n/NahirisMachinations.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class NahirisMachinations extends CardImpl {
+public final class NahirisMachinations extends CardImpl {
public NahirisMachinations(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NahirisWrath.java b/Mage.Sets/src/mage/cards/n/NahirisWrath.java
index 441e44cdbdc..a619bc160a3 100644
--- a/Mage.Sets/src/mage/cards/n/NahirisWrath.java
+++ b/Mage.Sets/src/mage/cards/n/NahirisWrath.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
*
* @author LevelX2
*/
-public class NahirisWrath extends CardImpl {
+public final class NahirisWrath extends CardImpl {
public NahirisWrath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NajeelaTheBladeBlossom.java b/Mage.Sets/src/mage/cards/n/NajeelaTheBladeBlossom.java
new file mode 100644
index 00000000000..e7af547f580
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/n/NajeelaTheBladeBlossom.java
@@ -0,0 +1,116 @@
+/*
+ * 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.n;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.AttacksAllTriggeredAbility;
+import mage.abilities.condition.common.IsPhaseCondition;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.decorator.ConditionalActivatedAbility;
+import mage.abilities.dynamicvalue.common.StaticValue;
+import mage.abilities.effects.common.AdditionalCombatPhaseEffect;
+import mage.abilities.effects.common.CreateTokenTargetEffect;
+import mage.abilities.effects.common.UntapAllEffect;
+import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.abilities.keyword.HasteAbility;
+import mage.abilities.keyword.LifelinkAbility;
+import mage.abilities.keyword.TrampleAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SetTargetPointer;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.constants.TurnPhase;
+import mage.constants.Zone;
+import mage.filter.StaticFilters;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.game.permanent.token.WarriorToken;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class NajeelaTheBladeBlossom extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.WARRIOR, "a Warrior");
+
+ public NajeelaTheBladeBlossom(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(2);
+
+ // Whenever a Warrior attacks, you may have its controller create a 1/1 white Warrior creature token that's tapped and attacking.
+ this.addAbility(new AttacksAllTriggeredAbility(
+ new CreateTokenTargetEffect(new WarriorToken(), new StaticValue(1), true, true)
+ .setText("you may have its controller create a 1/1 white Warrior creature token that's tapped and attacking"),
+ true, filter, SetTargetPointer.PLAYER, false, true
+ ));
+
+ // {W}{U}{B}{R}{G}: Untap all attacking creatures. They gain trample, lifelink, and haste until end of turn. After this phase, there is an additional combat phase. Activate this ability only during combat.
+ Ability ability = new ConditionalActivatedAbility(
+ Zone.BATTLEFIELD,
+ new UntapAllEffect(StaticFilters.FILTER_ATTACKING_CREATURES),
+ new ManaCostsImpl("{W}{U}{B}{R}{G}"),
+ new IsPhaseCondition(TurnPhase.COMBAT)
+ );
+ ability.addEffect(new GainAbilityAllEffect(
+ TrampleAbility.getInstance(),
+ Duration.EndOfTurn,
+ StaticFilters.FILTER_ATTACKING_CREATURES
+ ).setText("They gain trample,"));
+ ability.addEffect(new GainAbilityAllEffect(
+ LifelinkAbility.getInstance(),
+ Duration.EndOfTurn,
+ StaticFilters.FILTER_ATTACKING_CREATURES
+ ).setText("lifelink,"));
+ ability.addEffect(new GainAbilityAllEffect(
+ HasteAbility.getInstance(),
+ Duration.EndOfTurn,
+ StaticFilters.FILTER_ATTACKING_CREATURES
+ ).setText("and haste until end of turn."));
+ ability.addEffect(new AdditionalCombatPhaseEffect());
+ this.addAbility(ability);
+ }
+
+ public NajeelaTheBladeBlossom(final NajeelaTheBladeBlossom card) {
+ super(card);
+ }
+
+ @Override
+ public NajeelaTheBladeBlossom copy() {
+ return new NajeelaTheBladeBlossom(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/n/NakayaShade.java b/Mage.Sets/src/mage/cards/n/NakayaShade.java
index 290bbb85402..b25950f4bdc 100644
--- a/Mage.Sets/src/mage/cards/n/NakayaShade.java
+++ b/Mage.Sets/src/mage/cards/n/NakayaShade.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class NakayaShade extends CardImpl {
+public final class NakayaShade extends CardImpl {
public NakayaShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NakedSingularity.java b/Mage.Sets/src/mage/cards/n/NakedSingularity.java
index e845fe6181f..749a391fb8e 100644
--- a/Mage.Sets/src/mage/cards/n/NakedSingularity.java
+++ b/Mage.Sets/src/mage/cards/n/NakedSingularity.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class NakedSingularity extends CardImpl {
+public final class NakedSingularity extends CardImpl {
public NakedSingularity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/n/NalathniDragon.java b/Mage.Sets/src/mage/cards/n/NalathniDragon.java
index 311e65302b2..db4870cf5f2 100644
--- a/Mage.Sets/src/mage/cards/n/NalathniDragon.java
+++ b/Mage.Sets/src/mage/cards/n/NalathniDragon.java
@@ -53,7 +53,7 @@ import mage.game.Game;
*
* @author North & L_J
*/
-public class NalathniDragon extends CardImpl {
+public final class NalathniDragon extends CardImpl {
public NalathniDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NamelessInversion.java b/Mage.Sets/src/mage/cards/n/NamelessInversion.java
index f5bff8b9e29..2492515ad9e 100644
--- a/Mage.Sets/src/mage/cards/n/NamelessInversion.java
+++ b/Mage.Sets/src/mage/cards/n/NamelessInversion.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class NamelessInversion extends CardImpl {
+public final class NamelessInversion extends CardImpl {
public NamelessInversion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NamelessOne.java b/Mage.Sets/src/mage/cards/n/NamelessOne.java
index 6f6dd0c5434..03b63baeffc 100644
--- a/Mage.Sets/src/mage/cards/n/NamelessOne.java
+++ b/Mage.Sets/src/mage/cards/n/NamelessOne.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class NamelessOne extends CardImpl {
+public final class NamelessOne extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wizards on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/n/NamelessRace.java b/Mage.Sets/src/mage/cards/n/NamelessRace.java
index 615f1a48fc4..557342f2875 100644
--- a/Mage.Sets/src/mage/cards/n/NamelessRace.java
+++ b/Mage.Sets/src/mage/cards/n/NamelessRace.java
@@ -62,7 +62,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class NamelessRace extends CardImpl {
+public final class NamelessRace extends CardImpl {
public NamelessRace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NantukoBlightcutter.java b/Mage.Sets/src/mage/cards/n/NantukoBlightcutter.java
index aefdd38c859..60f9c702565 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoBlightcutter.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoBlightcutter.java
@@ -53,7 +53,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class NantukoBlightcutter extends CardImpl {
+public final class NantukoBlightcutter extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/n/NantukoCalmer.java b/Mage.Sets/src/mage/cards/n/NantukoCalmer.java
index 74107a674c2..d180927d982 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoCalmer.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoCalmer.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LoneFox
*/
-public class NantukoCalmer extends CardImpl {
+public final class NantukoCalmer extends CardImpl {
public NantukoCalmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NantukoCultivator.java b/Mage.Sets/src/mage/cards/n/NantukoCultivator.java
index 1e33cd40a31..e5f5ce58a2b 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoCultivator.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoCultivator.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInHand;
* @author LoneFox
*/
-public class NantukoCultivator extends CardImpl {
+public final class NantukoCultivator extends CardImpl {
public NantukoCultivator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NantukoDisciple.java b/Mage.Sets/src/mage/cards/n/NantukoDisciple.java
index 5f2e6550a51..08c4149a7a5 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoDisciple.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoDisciple.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class NantukoDisciple extends CardImpl {
+public final class NantukoDisciple extends CardImpl {
public NantukoDisciple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NantukoElder.java b/Mage.Sets/src/mage/cards/n/NantukoElder.java
index bb6fbe18fd2..12780b90a0e 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoElder.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoElder.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class NantukoElder extends CardImpl {
+public final class NantukoElder extends CardImpl {
public NantukoElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NantukoHusk.java b/Mage.Sets/src/mage/cards/n/NantukoHusk.java
index a6588441f89..b90d7259b81 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoHusk.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoHusk.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class NantukoHusk extends CardImpl {
+public final class NantukoHusk extends CardImpl {
public NantukoHusk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NantukoMentor.java b/Mage.Sets/src/mage/cards/n/NantukoMentor.java
index c172f2c4433..4b2e10ea6c5 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoMentor.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoMentor.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author cbt33
*/
-public class NantukoMentor extends CardImpl {
+public final class NantukoMentor extends CardImpl {
public NantukoMentor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NantukoMonastery.java b/Mage.Sets/src/mage/cards/n/NantukoMonastery.java
index eb7cec71228..fbdab8d8a0f 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoMonastery.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoMonastery.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.Token;
*
* @author anonymous
*/
-public class NantukoMonastery extends CardImpl {
+public final class NantukoMonastery extends CardImpl {
public NantukoMonastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/n/NantukoShade.java b/Mage.Sets/src/mage/cards/n/NantukoShade.java
index d9e09c78f01..44f5545a89d 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoShade.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoShade.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class NantukoShade extends CardImpl {
+public final class NantukoShade extends CardImpl {
public NantukoShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NantukoShaman.java b/Mage.Sets/src/mage/cards/n/NantukoShaman.java
index 54f73d58a98..2e3137cff7c 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoShaman.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoShaman.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LevelX2
*/
-public class NantukoShaman extends CardImpl {
+public final class NantukoShaman extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/n/NantukoShrine.java b/Mage.Sets/src/mage/cards/n/NantukoShrine.java
index 293aae002f7..1e52f349206 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoShrine.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoShrine.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class NantukoShrine extends CardImpl {
+public final class NantukoShrine extends CardImpl {
public NantukoShrine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NantukoTracer.java b/Mage.Sets/src/mage/cards/n/NantukoTracer.java
index efefb017ce6..39c112784be 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoTracer.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoTracer.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class NantukoTracer extends CardImpl {
+public final class NantukoTracer extends CardImpl {
public NantukoTracer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NantukoVigilante.java b/Mage.Sets/src/mage/cards/n/NantukoVigilante.java
index 73b5e6d01e4..db078ae38e9 100644
--- a/Mage.Sets/src/mage/cards/n/NantukoVigilante.java
+++ b/Mage.Sets/src/mage/cards/n/NantukoVigilante.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class NantukoVigilante extends CardImpl {
+public final class NantukoVigilante extends CardImpl {
public NantukoVigilante(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/Narcissism.java b/Mage.Sets/src/mage/cards/n/Narcissism.java
index aa351b25bd9..9c7030c10bb 100644
--- a/Mage.Sets/src/mage/cards/n/Narcissism.java
+++ b/Mage.Sets/src/mage/cards/n/Narcissism.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Narcissism extends CardImpl {
+public final class Narcissism extends CardImpl {
public Narcissism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/Narcolepsy.java b/Mage.Sets/src/mage/cards/n/Narcolepsy.java
index af1700e0277..66a7cdca542 100644
--- a/Mage.Sets/src/mage/cards/n/Narcolepsy.java
+++ b/Mage.Sets/src/mage/cards/n/Narcolepsy.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class Narcolepsy extends CardImpl {
+public final class Narcolepsy extends CardImpl {
public Narcolepsy(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/n/Narcomoeba.java b/Mage.Sets/src/mage/cards/n/Narcomoeba.java
index 92efa1d7479..9fc17b689d5 100644
--- a/Mage.Sets/src/mage/cards/n/Narcomoeba.java
+++ b/Mage.Sets/src/mage/cards/n/Narcomoeba.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class Narcomoeba extends CardImpl {
+public final class Narcomoeba extends CardImpl {
public Narcomoeba(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NarnamCobra.java b/Mage.Sets/src/mage/cards/n/NarnamCobra.java
index e1016b3ac6c..867eac2e8a6 100644
--- a/Mage.Sets/src/mage/cards/n/NarnamCobra.java
+++ b/Mage.Sets/src/mage/cards/n/NarnamCobra.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class NarnamCobra extends CardImpl {
+public final class NarnamCobra extends CardImpl {
public NarnamCobra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/n/NarnamRenegade.java b/Mage.Sets/src/mage/cards/n/NarnamRenegade.java
index 49de350e9a1..7abc0d45dd1 100644
--- a/Mage.Sets/src/mage/cards/n/NarnamRenegade.java
+++ b/Mage.Sets/src/mage/cards/n/NarnamRenegade.java
@@ -44,7 +44,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author fireshoes
*/
-public class NarnamRenegade extends CardImpl {
+public final class NarnamRenegade extends CardImpl {
public NarnamRenegade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NarrowEscape.java b/Mage.Sets/src/mage/cards/n/NarrowEscape.java
index ef271dc6717..a2fd4f44c85 100644
--- a/Mage.Sets/src/mage/cards/n/NarrowEscape.java
+++ b/Mage.Sets/src/mage/cards/n/NarrowEscape.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class NarrowEscape extends CardImpl {
+public final class NarrowEscape extends CardImpl {
public NarrowEscape (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NarsetEnlightenedMaster.java b/Mage.Sets/src/mage/cards/n/NarsetEnlightenedMaster.java
index 87331acc407..4248188c9eb 100644
--- a/Mage.Sets/src/mage/cards/n/NarsetEnlightenedMaster.java
+++ b/Mage.Sets/src/mage/cards/n/NarsetEnlightenedMaster.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class NarsetEnlightenedMaster extends CardImpl {
+public final class NarsetEnlightenedMaster extends CardImpl {
public NarsetEnlightenedMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NarsetTranscendent.java b/Mage.Sets/src/mage/cards/n/NarsetTranscendent.java
index 7303aba1b5f..b4b5d7fc0a1 100644
--- a/Mage.Sets/src/mage/cards/n/NarsetTranscendent.java
+++ b/Mage.Sets/src/mage/cards/n/NarsetTranscendent.java
@@ -62,7 +62,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class NarsetTranscendent extends CardImpl {
+public final class NarsetTranscendent extends CardImpl {
public NarsetTranscendent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NarstadScrapper.java b/Mage.Sets/src/mage/cards/n/NarstadScrapper.java
index 3867ffe595d..a8133e8bea9 100644
--- a/Mage.Sets/src/mage/cards/n/NarstadScrapper.java
+++ b/Mage.Sets/src/mage/cards/n/NarstadScrapper.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class NarstadScrapper extends CardImpl {
+public final class NarstadScrapper extends CardImpl {
public NarstadScrapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/n/NaruMehaMasterWizard.java b/Mage.Sets/src/mage/cards/n/NaruMehaMasterWizard.java
index fc8688dd136..81339510800 100644
--- a/Mage.Sets/src/mage/cards/n/NaruMehaMasterWizard.java
+++ b/Mage.Sets/src/mage/cards/n/NaruMehaMasterWizard.java
@@ -55,7 +55,7 @@ import mage.target.TargetSpell;
* @author JRHerlehy
* Created on 4/5/18.
*/
-public class NaruMehaMasterWizard extends CardImpl {
+public final class NaruMehaMasterWizard extends CardImpl {
private static final FilterSpell spellFilter = new FilterSpell("instant or sorcery spell you control");
private static final FilterCreaturePermanent wizardFilter = new FilterCreaturePermanent(SubType.WIZARD, "Wizards");
diff --git a/Mage.Sets/src/mage/cards/n/Narwhal.java b/Mage.Sets/src/mage/cards/n/Narwhal.java
index d89dc11e663..69525a12102 100644
--- a/Mage.Sets/src/mage/cards/n/Narwhal.java
+++ b/Mage.Sets/src/mage/cards/n/Narwhal.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class Narwhal extends CardImpl {
+public final class Narwhal extends CardImpl {
public Narwhal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NathOfTheGiltLeaf.java b/Mage.Sets/src/mage/cards/n/NathOfTheGiltLeaf.java
index 523e575f48a..c919d88d876 100644
--- a/Mage.Sets/src/mage/cards/n/NathOfTheGiltLeaf.java
+++ b/Mage.Sets/src/mage/cards/n/NathOfTheGiltLeaf.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
* @author jeffwadsworth
*
*/
-public class NathOfTheGiltLeaf extends CardImpl {
+public final class NathOfTheGiltLeaf extends CardImpl {
public NathOfTheGiltLeaf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NathsBuffoon.java b/Mage.Sets/src/mage/cards/n/NathsBuffoon.java
index 094d3583bfd..d06508860a5 100644
--- a/Mage.Sets/src/mage/cards/n/NathsBuffoon.java
+++ b/Mage.Sets/src/mage/cards/n/NathsBuffoon.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class NathsBuffoon extends CardImpl {
+public final class NathsBuffoon extends CardImpl {
private static final FilterCard filter = new FilterCard("Elves");
diff --git a/Mage.Sets/src/mage/cards/n/NathsElite.java b/Mage.Sets/src/mage/cards/n/NathsElite.java
index c9ec7bfec9e..b00f1ace499 100644
--- a/Mage.Sets/src/mage/cards/n/NathsElite.java
+++ b/Mage.Sets/src/mage/cards/n/NathsElite.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class NathsElite extends CardImpl {
+public final class NathsElite extends CardImpl {
public NathsElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturalAffinity.java b/Mage.Sets/src/mage/cards/n/NaturalAffinity.java
index ab338324804..1a98cc28d23 100644
--- a/Mage.Sets/src/mage/cards/n/NaturalAffinity.java
+++ b/Mage.Sets/src/mage/cards/n/NaturalAffinity.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.custom.CreatureToken;
*
* @author Plopman
*/
-public class NaturalAffinity extends CardImpl {
+public final class NaturalAffinity extends CardImpl {
public NaturalAffinity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturalBalance.java b/Mage.Sets/src/mage/cards/n/NaturalBalance.java
index 834c375146c..2916c01fc4a 100644
--- a/Mage.Sets/src/mage/cards/n/NaturalBalance.java
+++ b/Mage.Sets/src/mage/cards/n/NaturalBalance.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author Rene - bugisemail at gmail dot com
*/
-public class NaturalBalance extends CardImpl {
+public final class NaturalBalance extends CardImpl {
public NaturalBalance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}{G}");
@@ -117,7 +117,7 @@ public class NaturalBalance extends CardImpl {
int amount = 5 - landCount;
if (landCount < 5 && player.chooseUse(outcome, "Search your library for up to " + amount + " basic land cards and put them onto the battlefield?", source, game)) {
// Select lands and put them onto battlefield
- TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_CARD_BASIC_LAND);
if (player.searchLibrary(target, game)) {
player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game);
}
diff --git a/Mage.Sets/src/mage/cards/n/NaturalConnection.java b/Mage.Sets/src/mage/cards/n/NaturalConnection.java
index 8ab4262067d..38c62e0a7bb 100644
--- a/Mage.Sets/src/mage/cards/n/NaturalConnection.java
+++ b/Mage.Sets/src/mage/cards/n/NaturalConnection.java
@@ -40,13 +40,13 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class NaturalConnection extends CardImpl {
+public final class NaturalConnection extends CardImpl {
public NaturalConnection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(target, true));
}
diff --git a/Mage.Sets/src/mage/cards/n/NaturalEmergence.java b/Mage.Sets/src/mage/cards/n/NaturalEmergence.java
index 691a110888c..97f6168d6ef 100644
--- a/Mage.Sets/src/mage/cards/n/NaturalEmergence.java
+++ b/Mage.Sets/src/mage/cards/n/NaturalEmergence.java
@@ -54,7 +54,7 @@ import mage.game.permanent.token.custom.CreatureToken;
* @author LoneFox
*
*/
-public class NaturalEmergence extends CardImpl {
+public final class NaturalEmergence extends CardImpl {
static final private FilterControlledEnchantmentPermanent filter = new FilterControlledEnchantmentPermanent("red or green creature you control");
diff --git a/Mage.Sets/src/mage/cards/n/NaturalEnd.java b/Mage.Sets/src/mage/cards/n/NaturalEnd.java
index dcac13e8677..b8719891785 100644
--- a/Mage.Sets/src/mage/cards/n/NaturalEnd.java
+++ b/Mage.Sets/src/mage/cards/n/NaturalEnd.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author North
*/
-public class NaturalEnd extends CardImpl {
+public final class NaturalEnd extends CardImpl {
public NaturalEnd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturalObsolescence.java b/Mage.Sets/src/mage/cards/n/NaturalObsolescence.java
index 7c00b11949f..b608ba1b53a 100644
--- a/Mage.Sets/src/mage/cards/n/NaturalObsolescence.java
+++ b/Mage.Sets/src/mage/cards/n/NaturalObsolescence.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author fireshoes
*/
-public class NaturalObsolescence extends CardImpl {
+public final class NaturalObsolescence extends CardImpl {
public NaturalObsolescence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturalOrder.java b/Mage.Sets/src/mage/cards/n/NaturalOrder.java
index 2662c22607c..e0ff0773149 100644
--- a/Mage.Sets/src/mage/cards/n/NaturalOrder.java
+++ b/Mage.Sets/src/mage/cards/n/NaturalOrder.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class NaturalOrder extends CardImpl {
+public final class NaturalOrder extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a green creature");
private static final FilterCreatureCard filterCard = new FilterCreatureCard("green creature card");
diff --git a/Mage.Sets/src/mage/cards/n/NaturalSelection.java b/Mage.Sets/src/mage/cards/n/NaturalSelection.java
index 6235b9a7ef7..12ed70d950f 100644
--- a/Mage.Sets/src/mage/cards/n/NaturalSelection.java
+++ b/Mage.Sets/src/mage/cards/n/NaturalSelection.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
* @author KholdFuzion
*
*/
-public class NaturalSelection extends CardImpl {
+public final class NaturalSelection extends CardImpl {
public NaturalSelection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturalSpring.java b/Mage.Sets/src/mage/cards/n/NaturalSpring.java
index 1e0e04c143f..a25006350ea 100644
--- a/Mage.Sets/src/mage/cards/n/NaturalSpring.java
+++ b/Mage.Sets/src/mage/cards/n/NaturalSpring.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class NaturalSpring extends CardImpl {
+public final class NaturalSpring extends CardImpl {
public NaturalSpring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturalState.java b/Mage.Sets/src/mage/cards/n/NaturalState.java
index 7fc264f0cfa..3e3b21b797a 100644
--- a/Mage.Sets/src/mage/cards/n/NaturalState.java
+++ b/Mage.Sets/src/mage/cards/n/NaturalState.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class NaturalState extends CardImpl {
+public final class NaturalState extends CardImpl {
private static final FilterArtifactOrEnchantmentPermanent filter = new FilterArtifactOrEnchantmentPermanent("artifact or enchantment with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/n/Naturalize.java b/Mage.Sets/src/mage/cards/n/Naturalize.java
index 3d92f3ef64e..a93cf8d8d6f 100644
--- a/Mage.Sets/src/mage/cards/n/Naturalize.java
+++ b/Mage.Sets/src/mage/cards/n/Naturalize.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author LokiX
*/
-public class Naturalize extends CardImpl {
+public final class Naturalize extends CardImpl {
public Naturalize(UUID ownerId, CardSetInfo setInfo){
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesBlessing.java b/Mage.Sets/src/mage/cards/n/NaturesBlessing.java
index 924d9c01b53..ff10a56ea2a 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesBlessing.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesBlessing.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class NaturesBlessing extends CardImpl {
+public final class NaturesBlessing extends CardImpl {
public NaturesBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesChosen.java b/Mage.Sets/src/mage/cards/n/NaturesChosen.java
index a88eb214577..1ac4dd48ce4 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesChosen.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesChosen.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class NaturesChosen extends CardImpl {
+public final class NaturesChosen extends CardImpl {
private static final FilterPermanent filterPermanent = new FilterPermanent("artifact, creature or land");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesClaim.java b/Mage.Sets/src/mage/cards/n/NaturesClaim.java
index 5605a540da8..1be9b311f12 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesClaim.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesClaim.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class NaturesClaim extends CardImpl {
+public final class NaturesClaim extends CardImpl {
public NaturesClaim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesCloak.java b/Mage.Sets/src/mage/cards/n/NaturesCloak.java
index 1867a4425f4..1926481213e 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesCloak.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesCloak.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class NaturesCloak extends CardImpl {
+public final class NaturesCloak extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Green creatures");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesKiss.java b/Mage.Sets/src/mage/cards/n/NaturesKiss.java
index ee3df19b017..6f913d72fa0 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesKiss.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesKiss.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class NaturesKiss extends CardImpl {
+public final class NaturesKiss extends CardImpl {
public NaturesKiss(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesLore.java b/Mage.Sets/src/mage/cards/n/NaturesLore.java
index 1f73d2deaaa..6ae5d74ad0c 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesLore.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesLore.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class NaturesLore extends CardImpl {
+public final class NaturesLore extends CardImpl {
private static final FilterCard filter = new FilterCard("Forest card");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesPanoply.java b/Mage.Sets/src/mage/cards/n/NaturesPanoply.java
index 263b5ea32ba..08b35499146 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesPanoply.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesPanoply.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NaturesPanoply extends CardImpl {
+public final class NaturesPanoply extends CardImpl {
public NaturesPanoply(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesResurgence.java b/Mage.Sets/src/mage/cards/n/NaturesResurgence.java
index b0dd96ec0bc..7d411dca432 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesResurgence.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesResurgence.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author Quercitron
*/
-public class NaturesResurgence extends CardImpl {
+public final class NaturesResurgence extends CardImpl {
public NaturesResurgence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesRevolt.java b/Mage.Sets/src/mage/cards/n/NaturesRevolt.java
index 510992dce1a..f5a4fe8c40a 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesRevolt.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesRevolt.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.custom.CreatureToken;
* @author LoneFox
*
*/
-public class NaturesRevolt extends CardImpl {
+public final class NaturesRevolt extends CardImpl {
public NaturesRevolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesRuin.java b/Mage.Sets/src/mage/cards/n/NaturesRuin.java
index 3be68db7481..cfb2eb6d961 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesRuin.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesRuin.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author dustinconrad
*/
-public class NaturesRuin extends CardImpl {
+public final class NaturesRuin extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("green creatures");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesSpiral.java b/Mage.Sets/src/mage/cards/n/NaturesSpiral.java
index 07f4fe601f6..e92fb758f14 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesSpiral.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesSpiral.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author BetaSteward_at_googlemail.com
*/
-public class NaturesSpiral extends CardImpl {
+public final class NaturesSpiral extends CardImpl {
public NaturesSpiral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesWay.java b/Mage.Sets/src/mage/cards/n/NaturesWay.java
index 485d1425488..426c69fe39f 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesWay.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesWay.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NaturesWay extends CardImpl {
+public final class NaturesWay extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesWill.java b/Mage.Sets/src/mage/cards/n/NaturesWill.java
index 491f83febf4..2f40d6cbf59 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesWill.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesWill.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class NaturesWill extends CardImpl {
+public final class NaturesWill extends CardImpl {
public NaturesWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NaturesWrath.java b/Mage.Sets/src/mage/cards/n/NaturesWrath.java
index 7c494d45180..4274f1b0b97 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesWrath.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesWrath.java
@@ -52,7 +52,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author L_J
*/
-public class NaturesWrath extends CardImpl {
+public final class NaturesWrath extends CardImpl {
private static final FilterPermanent filterBlue = new FilterPermanent("an Island or blue permanent");
static{
filterBlue.add(Predicates.or(new ColorPredicate(ObjectColor.BLUE), new SubtypePredicate(SubType.ISLAND)));
diff --git a/Mage.Sets/src/mage/cards/n/Nausea.java b/Mage.Sets/src/mage/cards/n/Nausea.java
index c5063156b46..27257dae7ea 100644
--- a/Mage.Sets/src/mage/cards/n/Nausea.java
+++ b/Mage.Sets/src/mage/cards/n/Nausea.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class Nausea extends CardImpl {
+public final class Nausea extends CardImpl {
public Nausea(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NavSquadCommandos.java b/Mage.Sets/src/mage/cards/n/NavSquadCommandos.java
index cc5704aa067..40d4d43af6e 100644
--- a/Mage.Sets/src/mage/cards/n/NavSquadCommandos.java
+++ b/Mage.Sets/src/mage/cards/n/NavSquadCommandos.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class NavSquadCommandos extends CardImpl {
+public final class NavSquadCommandos extends CardImpl {
public NavSquadCommandos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NavigatorsCompass.java b/Mage.Sets/src/mage/cards/n/NavigatorsCompass.java
index aaf8e041c34..ba392ee1552 100644
--- a/Mage.Sets/src/mage/cards/n/NavigatorsCompass.java
+++ b/Mage.Sets/src/mage/cards/n/NavigatorsCompass.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class NavigatorsCompass extends CardImpl {
+public final class NavigatorsCompass extends CardImpl {
public NavigatorsCompass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/n/NavigatorsRuin.java b/Mage.Sets/src/mage/cards/n/NavigatorsRuin.java
index 6c271933647..3612570e1f7 100644
--- a/Mage.Sets/src/mage/cards/n/NavigatorsRuin.java
+++ b/Mage.Sets/src/mage/cards/n/NavigatorsRuin.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author TheElk801
*/
-public class NavigatorsRuin extends CardImpl {
+public final class NavigatorsRuin extends CardImpl {
public NavigatorsRuin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NayaBattlemage.java b/Mage.Sets/src/mage/cards/n/NayaBattlemage.java
index 1e438ed4e4c..3f02a5baa54 100644
--- a/Mage.Sets/src/mage/cards/n/NayaBattlemage.java
+++ b/Mage.Sets/src/mage/cards/n/NayaBattlemage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class NayaBattlemage extends CardImpl {
+public final class NayaBattlemage extends CardImpl {
public NayaBattlemage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NayaCharm.java b/Mage.Sets/src/mage/cards/n/NayaCharm.java
index d71fca71253..9a18512f00a 100644
--- a/Mage.Sets/src/mage/cards/n/NayaCharm.java
+++ b/Mage.Sets/src/mage/cards/n/NayaCharm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class NayaCharm extends CardImpl {
+public final class NayaCharm extends CardImpl {
public NayaCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NayaHushblade.java b/Mage.Sets/src/mage/cards/n/NayaHushblade.java
index db2f1f6d81d..d2c04db2f3a 100644
--- a/Mage.Sets/src/mage/cards/n/NayaHushblade.java
+++ b/Mage.Sets/src/mage/cards/n/NayaHushblade.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author jeffwadsworth
*/
-public class NayaHushblade extends CardImpl {
+public final class NayaHushblade extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another multicolor permanent");
diff --git a/Mage.Sets/src/mage/cards/n/NayaPanorama.java b/Mage.Sets/src/mage/cards/n/NayaPanorama.java
index d3dda8ef9b8..00a04ffb3dc 100644
--- a/Mage.Sets/src/mage/cards/n/NayaPanorama.java
+++ b/Mage.Sets/src/mage/cards/n/NayaPanorama.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
* @author North
*/
@SuppressWarnings("unchecked")
-public class NayaPanorama extends CardImpl {
+public final class NayaPanorama extends CardImpl {
private static final FilterCard filter = new FilterCard("a basic Mountain, Forest, or Plains card");
diff --git a/Mage.Sets/src/mage/cards/n/NayaSojourners.java b/Mage.Sets/src/mage/cards/n/NayaSojourners.java
index 909413728e3..c99e085f4d0 100644
--- a/Mage.Sets/src/mage/cards/n/NayaSojourners.java
+++ b/Mage.Sets/src/mage/cards/n/NayaSojourners.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class NayaSojourners extends CardImpl {
+public final class NayaSojourners extends CardImpl {
public NayaSojourners(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NayaSoulbeast.java b/Mage.Sets/src/mage/cards/n/NayaSoulbeast.java
index da4ca8cfe3f..4e6fc4285a8 100644
--- a/Mage.Sets/src/mage/cards/n/NayaSoulbeast.java
+++ b/Mage.Sets/src/mage/cards/n/NayaSoulbeast.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class NayaSoulbeast extends CardImpl {
+public final class NayaSoulbeast extends CardImpl {
public NayaSoulbeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NazahnReveredBladesmith.java b/Mage.Sets/src/mage/cards/n/NazahnReveredBladesmith.java
index b3d57ed6bcd..9f33cbeeebb 100644
--- a/Mage.Sets/src/mage/cards/n/NazahnReveredBladesmith.java
+++ b/Mage.Sets/src/mage/cards/n/NazahnReveredBladesmith.java
@@ -59,7 +59,7 @@ import java.util.UUID;
*
* @author spjspj
*/
-public class NazahnReveredBladesmith extends CardImpl {
+public final class NazahnReveredBladesmith extends CardImpl {
private static final FilterControlledCreaturePermanent equippedFilter = new FilterControlledCreaturePermanent("equipped creature you control");
diff --git a/Mage.Sets/src/mage/cards/n/NearDeathExperience.java b/Mage.Sets/src/mage/cards/n/NearDeathExperience.java
index 26e868a8540..ee3ff10cf8d 100644
--- a/Mage.Sets/src/mage/cards/n/NearDeathExperience.java
+++ b/Mage.Sets/src/mage/cards/n/NearDeathExperience.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author jeffwadsworth
*/
-public class NearDeathExperience extends CardImpl {
+public final class NearDeathExperience extends CardImpl {
public NearDeathExperience(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NearheathChaplain.java b/Mage.Sets/src/mage/cards/n/NearheathChaplain.java
index e15bd9e59d5..a2cbff1535f 100644
--- a/Mage.Sets/src/mage/cards/n/NearheathChaplain.java
+++ b/Mage.Sets/src/mage/cards/n/NearheathChaplain.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class NearheathChaplain extends CardImpl {
+public final class NearheathChaplain extends CardImpl {
public NearheathChaplain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NearheathPilgrim.java b/Mage.Sets/src/mage/cards/n/NearheathPilgrim.java
index bd7fadf466c..20c88b01d38 100644
--- a/Mage.Sets/src/mage/cards/n/NearheathPilgrim.java
+++ b/Mage.Sets/src/mage/cards/n/NearheathPilgrim.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class NearheathPilgrim extends CardImpl {
+public final class NearheathPilgrim extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, both creatures have lifelink";
diff --git a/Mage.Sets/src/mage/cards/n/NearheathStalker.java b/Mage.Sets/src/mage/cards/n/NearheathStalker.java
index e87d4cc5d5e..70a3f8532f5 100644
--- a/Mage.Sets/src/mage/cards/n/NearheathStalker.java
+++ b/Mage.Sets/src/mage/cards/n/NearheathStalker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class NearheathStalker extends CardImpl {
+public final class NearheathStalker extends CardImpl {
public NearheathStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NebelgastHerald.java b/Mage.Sets/src/mage/cards/n/NebelgastHerald.java
index c887c7595ba..165d9efdb34 100644
--- a/Mage.Sets/src/mage/cards/n/NebelgastHerald.java
+++ b/Mage.Sets/src/mage/cards/n/NebelgastHerald.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NebelgastHerald extends CardImpl {
+public final class NebelgastHerald extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("{this} or another Spirit");
private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/n/Nebuchadnezzar.java b/Mage.Sets/src/mage/cards/n/Nebuchadnezzar.java
index bf7ba4b3cde..ea554aa9c74 100644
--- a/Mage.Sets/src/mage/cards/n/Nebuchadnezzar.java
+++ b/Mage.Sets/src/mage/cards/n/Nebuchadnezzar.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes & L_J
*/
-public class Nebuchadnezzar extends CardImpl {
+public final class Nebuchadnezzar extends CardImpl {
public Nebuchadnezzar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NebulonBFrigate.java b/Mage.Sets/src/mage/cards/n/NebulonBFrigate.java
index c2161dd70bd..e0d8ec31873 100644
--- a/Mage.Sets/src/mage/cards/n/NebulonBFrigate.java
+++ b/Mage.Sets/src/mage/cards/n/NebulonBFrigate.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author Styxo
*/
-public class NebulonBFrigate extends CardImpl {
+public final class NebulonBFrigate extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/n/NeckBreaker.java b/Mage.Sets/src/mage/cards/n/NeckBreaker.java
index 330424ac151..7b5197a1d61 100644
--- a/Mage.Sets/src/mage/cards/n/NeckBreaker.java
+++ b/Mage.Sets/src/mage/cards/n/NeckBreaker.java
@@ -54,7 +54,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author fireshoes
*/
-public class NeckBreaker extends CardImpl {
+public final class NeckBreaker extends CardImpl {
public NeckBreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/n/NeckSnap.java b/Mage.Sets/src/mage/cards/n/NeckSnap.java
index d76dba60104..a165840f4a3 100644
--- a/Mage.Sets/src/mage/cards/n/NeckSnap.java
+++ b/Mage.Sets/src/mage/cards/n/NeckSnap.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author Loki
*/
-public class NeckSnap extends CardImpl {
+public final class NeckSnap extends CardImpl {
public NeckSnap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NecraDisciple.java b/Mage.Sets/src/mage/cards/n/NecraDisciple.java
index b234a9ff800..7e207af3fc3 100644
--- a/Mage.Sets/src/mage/cards/n/NecraDisciple.java
+++ b/Mage.Sets/src/mage/cards/n/NecraDisciple.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class NecraDisciple extends CardImpl {
+public final class NecraDisciple extends CardImpl {
public NecraDisciple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecraSanctuary.java b/Mage.Sets/src/mage/cards/n/NecraSanctuary.java
index 0658d639c77..e923a925375 100644
--- a/Mage.Sets/src/mage/cards/n/NecraSanctuary.java
+++ b/Mage.Sets/src/mage/cards/n/NecraSanctuary.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class NecraSanctuary extends CardImpl {
+public final class NecraSanctuary extends CardImpl {
public NecraSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Necratog.java b/Mage.Sets/src/mage/cards/n/Necratog.java
index fabe1673160..ed6b86c1ad4 100644
--- a/Mage.Sets/src/mage/cards/n/Necratog.java
+++ b/Mage.Sets/src/mage/cards/n/Necratog.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class Necratog extends CardImpl {
+public final class Necratog extends CardImpl {
public Necratog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Necravolver.java b/Mage.Sets/src/mage/cards/n/Necravolver.java
index 9abe85898f6..06937b307a3 100644
--- a/Mage.Sets/src/mage/cards/n/Necravolver.java
+++ b/Mage.Sets/src/mage/cards/n/Necravolver.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
* @author LoneFox
*/
-public class Necravolver extends CardImpl {
+public final class Necravolver extends CardImpl {
public Necravolver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Necrite.java b/Mage.Sets/src/mage/cards/n/Necrite.java
index cbff52f0845..4112bc69d2c 100644
--- a/Mage.Sets/src/mage/cards/n/Necrite.java
+++ b/Mage.Sets/src/mage/cards/n/Necrite.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author MarcoMarin
*/
-public class Necrite extends CardImpl {
+public final class Necrite extends CardImpl {
public Necrite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Necrobite.java b/Mage.Sets/src/mage/cards/n/Necrobite.java
index 45759f96dfa..990ceaa552b 100644
--- a/Mage.Sets/src/mage/cards/n/Necrobite.java
+++ b/Mage.Sets/src/mage/cards/n/Necrobite.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author noxx
*/
-public class Necrobite extends CardImpl {
+public final class Necrobite extends CardImpl {
public Necrobite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecrogenCenser.java b/Mage.Sets/src/mage/cards/n/NecrogenCenser.java
index 11dc2cbe3e7..5319ec3c0a9 100644
--- a/Mage.Sets/src/mage/cards/n/NecrogenCenser.java
+++ b/Mage.Sets/src/mage/cards/n/NecrogenCenser.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class NecrogenCenser extends CardImpl {
+public final class NecrogenCenser extends CardImpl {
public NecrogenCenser (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/n/NecrogenMists.java b/Mage.Sets/src/mage/cards/n/NecrogenMists.java
index 7599454f8ef..2eec1d456f7 100644
--- a/Mage.Sets/src/mage/cards/n/NecrogenMists.java
+++ b/Mage.Sets/src/mage/cards/n/NecrogenMists.java
@@ -39,7 +39,7 @@ import mage.constants.TargetController;
*
* @author dustinconrad
*/
-public class NecrogenMists extends CardImpl {
+public final class NecrogenMists extends CardImpl {
public NecrogenMists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecrogenScudder.java b/Mage.Sets/src/mage/cards/n/NecrogenScudder.java
index 180efc2a509..ad70ff85319 100644
--- a/Mage.Sets/src/mage/cards/n/NecrogenScudder.java
+++ b/Mage.Sets/src/mage/cards/n/NecrogenScudder.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class NecrogenScudder extends CardImpl {
+public final class NecrogenScudder extends CardImpl {
public NecrogenScudder (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecrogenSpellbomb.java b/Mage.Sets/src/mage/cards/n/NecrogenSpellbomb.java
index a8b8c98dab1..d55fc54f5a3 100644
--- a/Mage.Sets/src/mage/cards/n/NecrogenSpellbomb.java
+++ b/Mage.Sets/src/mage/cards/n/NecrogenSpellbomb.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class NecrogenSpellbomb extends CardImpl {
+public final class NecrogenSpellbomb extends CardImpl {
public NecrogenSpellbomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/n/Necrogenesis.java b/Mage.Sets/src/mage/cards/n/Necrogenesis.java
index 6e8709186ea..fa0c6628569 100644
--- a/Mage.Sets/src/mage/cards/n/Necrogenesis.java
+++ b/Mage.Sets/src/mage/cards/n/Necrogenesis.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class Necrogenesis extends CardImpl {
+public final class Necrogenesis extends CardImpl {
public Necrogenesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/Necrologia.java b/Mage.Sets/src/mage/cards/n/Necrologia.java
index 3043fdbbe2e..234a6c30048 100644
--- a/Mage.Sets/src/mage/cards/n/Necrologia.java
+++ b/Mage.Sets/src/mage/cards/n/Necrologia.java
@@ -42,7 +42,7 @@ import mage.constants.PhaseStep;
*
* @author LevelX2
*/
-public class Necrologia extends CardImpl {
+public final class Necrologia extends CardImpl {
public Necrologia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecromancersAssistant.java b/Mage.Sets/src/mage/cards/n/NecromancersAssistant.java
index bf5566db3fa..0adb841c996 100644
--- a/Mage.Sets/src/mage/cards/n/NecromancersAssistant.java
+++ b/Mage.Sets/src/mage/cards/n/NecromancersAssistant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author noxx
*/
-public class NecromancersAssistant extends CardImpl {
+public final class NecromancersAssistant extends CardImpl {
public NecromancersAssistant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecromancersCovenant.java b/Mage.Sets/src/mage/cards/n/NecromancersCovenant.java
index 1a70f7526d0..d4cccacf024 100644
--- a/Mage.Sets/src/mage/cards/n/NecromancersCovenant.java
+++ b/Mage.Sets/src/mage/cards/n/NecromancersCovenant.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class NecromancersCovenant extends CardImpl {
+public final class NecromancersCovenant extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Zombies you control");
diff --git a/Mage.Sets/src/mage/cards/n/NecromancersMagemark.java b/Mage.Sets/src/mage/cards/n/NecromancersMagemark.java
index 222513369a9..f7d3e9da45b 100644
--- a/Mage.Sets/src/mage/cards/n/NecromancersMagemark.java
+++ b/Mage.Sets/src/mage/cards/n/NecromancersMagemark.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Markedagain
*/
-public class NecromancersMagemark extends CardImpl {
+public final class NecromancersMagemark extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control that are enchanted");
diff --git a/Mage.Sets/src/mage/cards/n/NecromancersStockpile.java b/Mage.Sets/src/mage/cards/n/NecromancersStockpile.java
index 75fc76e9f3d..d0e1c214595 100644
--- a/Mage.Sets/src/mage/cards/n/NecromancersStockpile.java
+++ b/Mage.Sets/src/mage/cards/n/NecromancersStockpile.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInHand;
/**
* @author noxx
*/
-public class NecromancersStockpile extends CardImpl {
+public final class NecromancersStockpile extends CardImpl {
public NecromancersStockpile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Necromancy.java b/Mage.Sets/src/mage/cards/n/Necromancy.java
index 046edff18ac..6bd985b2664 100644
--- a/Mage.Sets/src/mage/cards/n/Necromancy.java
+++ b/Mage.Sets/src/mage/cards/n/Necromancy.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Necromancy extends CardImpl {
+public final class Necromancy extends CardImpl {
public Necromancy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecromanticSelection.java b/Mage.Sets/src/mage/cards/n/NecromanticSelection.java
index 028bb54964b..54f5b2efe5c 100644
--- a/Mage.Sets/src/mage/cards/n/NecromanticSelection.java
+++ b/Mage.Sets/src/mage/cards/n/NecromanticSelection.java
@@ -58,7 +58,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class NecromanticSelection extends CardImpl {
+public final class NecromanticSelection extends CardImpl {
public NecromanticSelection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecromanticSummons.java b/Mage.Sets/src/mage/cards/n/NecromanticSummons.java
index 7a9924e71b7..03f5eaa564c 100644
--- a/Mage.Sets/src/mage/cards/n/NecromanticSummons.java
+++ b/Mage.Sets/src/mage/cards/n/NecromanticSummons.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class NecromanticSummons extends CardImpl {
+public final class NecromanticSummons extends CardImpl {
public NecromanticSummons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecromanticThirst.java b/Mage.Sets/src/mage/cards/n/NecromanticThirst.java
index 49a6941e0fe..0d4dcf9b27d 100644
--- a/Mage.Sets/src/mage/cards/n/NecromanticThirst.java
+++ b/Mage.Sets/src/mage/cards/n/NecromanticThirst.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class NecromanticThirst extends CardImpl {
+public final class NecromanticThirst extends CardImpl {
public NecromanticThirst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecromasterDragon.java b/Mage.Sets/src/mage/cards/n/NecromasterDragon.java
index f7abcdf79ae..53f98454774 100644
--- a/Mage.Sets/src/mage/cards/n/NecromasterDragon.java
+++ b/Mage.Sets/src/mage/cards/n/NecromasterDragon.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author fireshoes
*/
-public class NecromasterDragon extends CardImpl {
+public final class NecromasterDragon extends CardImpl {
public NecromasterDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Necropede.java b/Mage.Sets/src/mage/cards/n/Necropede.java
index 733c0f48fbe..d239e071073 100644
--- a/Mage.Sets/src/mage/cards/n/Necropede.java
+++ b/Mage.Sets/src/mage/cards/n/Necropede.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Necropede extends CardImpl {
+public final class Necropede extends CardImpl {
public Necropede (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/n/Necroplasm.java b/Mage.Sets/src/mage/cards/n/Necroplasm.java
index 9db7c55ae54..79a86230abe 100644
--- a/Mage.Sets/src/mage/cards/n/Necroplasm.java
+++ b/Mage.Sets/src/mage/cards/n/Necroplasm.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class Necroplasm extends CardImpl {
+public final class Necroplasm extends CardImpl {
public Necroplasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Necropolis.java b/Mage.Sets/src/mage/cards/n/Necropolis.java
index a280a1168f5..58a424dfe67 100644
--- a/Mage.Sets/src/mage/cards/n/Necropolis.java
+++ b/Mage.Sets/src/mage/cards/n/Necropolis.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author L_J
*/
-public class Necropolis extends CardImpl {
+public final class Necropolis extends CardImpl {
public Necropolis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/n/NecropolisFiend.java b/Mage.Sets/src/mage/cards/n/NecropolisFiend.java
index 6ddb06b9ed0..d39fc1e7fc8 100644
--- a/Mage.Sets/src/mage/cards/n/NecropolisFiend.java
+++ b/Mage.Sets/src/mage/cards/n/NecropolisFiend.java
@@ -61,7 +61,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NecropolisFiend extends CardImpl {
+public final class NecropolisFiend extends CardImpl {
public NecropolisFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecropolisRegent.java b/Mage.Sets/src/mage/cards/n/NecropolisRegent.java
index 70df0f26652..e91855d403a 100644
--- a/Mage.Sets/src/mage/cards/n/NecropolisRegent.java
+++ b/Mage.Sets/src/mage/cards/n/NecropolisRegent.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class NecropolisRegent extends CardImpl {
+public final class NecropolisRegent extends CardImpl {
public NecropolisRegent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Necropotence.java b/Mage.Sets/src/mage/cards/n/Necropotence.java
index c5df8339320..d06df69613c 100644
--- a/Mage.Sets/src/mage/cards/n/Necropotence.java
+++ b/Mage.Sets/src/mage/cards/n/Necropotence.java
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class Necropotence extends CardImpl {
+public final class Necropotence extends CardImpl {
public Necropotence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Necropouncer.java b/Mage.Sets/src/mage/cards/n/Necropouncer.java
index 7ec3a5e34c5..2a031926e90 100644
--- a/Mage.Sets/src/mage/cards/n/Necropouncer.java
+++ b/Mage.Sets/src/mage/cards/n/Necropouncer.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class Necropouncer extends CardImpl {
+public final class Necropouncer extends CardImpl {
public Necropouncer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/n/Necrosavant.java b/Mage.Sets/src/mage/cards/n/Necrosavant.java
index c7c4d4b2430..c15532e9bfc 100644
--- a/Mage.Sets/src/mage/cards/n/Necrosavant.java
+++ b/Mage.Sets/src/mage/cards/n/Necrosavant.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Quercitron
*/
-public class Necrosavant extends CardImpl {
+public final class Necrosavant extends CardImpl {
public Necrosavant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Necroskitter.java b/Mage.Sets/src/mage/cards/n/Necroskitter.java
index 168d515d5e7..a92430b0359 100644
--- a/Mage.Sets/src/mage/cards/n/Necroskitter.java
+++ b/Mage.Sets/src/mage/cards/n/Necroskitter.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class Necroskitter extends CardImpl {
+public final class Necroskitter extends CardImpl {
public Necroskitter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecroticOoze.java b/Mage.Sets/src/mage/cards/n/NecroticOoze.java
index 97a284e3697..8aa8c527522 100644
--- a/Mage.Sets/src/mage/cards/n/NecroticOoze.java
+++ b/Mage.Sets/src/mage/cards/n/NecroticOoze.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author BetaSteward_at_googlemail.com
*/
-public class NecroticOoze extends CardImpl {
+public final class NecroticOoze extends CardImpl {
public NecroticOoze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NecroticPlague.java b/Mage.Sets/src/mage/cards/n/NecroticPlague.java
index f4601bb5b1a..def7f776342 100644
--- a/Mage.Sets/src/mage/cards/n/NecroticPlague.java
+++ b/Mage.Sets/src/mage/cards/n/NecroticPlague.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class NecroticPlague extends CardImpl {
+public final class NecroticPlague extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/n/NecroticSliver.java b/Mage.Sets/src/mage/cards/n/NecroticSliver.java
index 3b54de08c8b..a4248aaa257 100644
--- a/Mage.Sets/src/mage/cards/n/NecroticSliver.java
+++ b/Mage.Sets/src/mage/cards/n/NecroticSliver.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author KholdFuzion
*/
-public class NecroticSliver extends CardImpl {
+public final class NecroticSliver extends CardImpl {
public NecroticSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NectarFaerie.java b/Mage.Sets/src/mage/cards/n/NectarFaerie.java
index 60e8a138153..af7dd7431c7 100644
--- a/Mage.Sets/src/mage/cards/n/NectarFaerie.java
+++ b/Mage.Sets/src/mage/cards/n/NectarFaerie.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class NectarFaerie extends CardImpl {
+public final class NectarFaerie extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Faerie or Elf");
diff --git a/Mage.Sets/src/mage/cards/n/NeedForSpeed.java b/Mage.Sets/src/mage/cards/n/NeedForSpeed.java
index ad884de72f3..1e3a571258e 100644
--- a/Mage.Sets/src/mage/cards/n/NeedForSpeed.java
+++ b/Mage.Sets/src/mage/cards/n/NeedForSpeed.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class NeedForSpeed extends CardImpl {
+public final class NeedForSpeed extends CardImpl {
diff --git a/Mage.Sets/src/mage/cards/n/NeedleDrop.java b/Mage.Sets/src/mage/cards/n/NeedleDrop.java
index 946cd232be4..4560e1dbd28 100644
--- a/Mage.Sets/src/mage/cards/n/NeedleDrop.java
+++ b/Mage.Sets/src/mage/cards/n/NeedleDrop.java
@@ -47,7 +47,7 @@ import mage.watchers.common.DamageDoneWatcher;
*
* @author Quercitron
*/
-public class NeedleDrop extends CardImpl {
+public final class NeedleDrop extends CardImpl {
private static final FilterCreaturePlayerOrPlaneswalker FILTER = new FilterCreaturePlayerOrPlaneswalker();
diff --git a/Mage.Sets/src/mage/cards/n/NeedleSpecter.java b/Mage.Sets/src/mage/cards/n/NeedleSpecter.java
index f5eb5f0a2dd..5fbb6dac619 100644
--- a/Mage.Sets/src/mage/cards/n/NeedleSpecter.java
+++ b/Mage.Sets/src/mage/cards/n/NeedleSpecter.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class NeedleSpecter extends CardImpl {
+public final class NeedleSpecter extends CardImpl {
public NeedleSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NeedleSpires.java b/Mage.Sets/src/mage/cards/n/NeedleSpires.java
index da5b729ff94..f507af53611 100644
--- a/Mage.Sets/src/mage/cards/n/NeedleSpires.java
+++ b/Mage.Sets/src/mage/cards/n/NeedleSpires.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class NeedleSpires extends CardImpl {
+public final class NeedleSpires extends CardImpl {
public NeedleSpires(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/n/NeedleStorm.java b/Mage.Sets/src/mage/cards/n/NeedleStorm.java
index d763ceea3dd..e2a5c7f2d72 100644
--- a/Mage.Sets/src/mage/cards/n/NeedleStorm.java
+++ b/Mage.Sets/src/mage/cards/n/NeedleStorm.java
@@ -39,7 +39,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
/**
* @author Loki
*/
-public class NeedleStorm extends CardImpl {
+public final class NeedleStorm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/n/NeedlebiteTrap.java b/Mage.Sets/src/mage/cards/n/NeedlebiteTrap.java
index a192a0e5c76..69c4c05fe74 100644
--- a/Mage.Sets/src/mage/cards/n/NeedlebiteTrap.java
+++ b/Mage.Sets/src/mage/cards/n/NeedlebiteTrap.java
@@ -46,7 +46,7 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class NeedlebiteTrap extends CardImpl {
+public final class NeedlebiteTrap extends CardImpl {
public NeedlebiteTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Needlebug.java b/Mage.Sets/src/mage/cards/n/Needlebug.java
index 7928fe545ab..4e878c6cb64 100644
--- a/Mage.Sets/src/mage/cards/n/Needlebug.java
+++ b/Mage.Sets/src/mage/cards/n/Needlebug.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author Loki
*/
-public class Needlebug extends CardImpl {
+public final class Needlebug extends CardImpl {
public Needlebug(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/n/NeedlepeakSpider.java b/Mage.Sets/src/mage/cards/n/NeedlepeakSpider.java
index e243d1b504a..ff6df717122 100644
--- a/Mage.Sets/src/mage/cards/n/NeedlepeakSpider.java
+++ b/Mage.Sets/src/mage/cards/n/NeedlepeakSpider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class NeedlepeakSpider extends CardImpl {
+public final class NeedlepeakSpider extends CardImpl {
public NeedlepeakSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NeedleshotGourna.java b/Mage.Sets/src/mage/cards/n/NeedleshotGourna.java
index bc106b72564..9f393d9c325 100644
--- a/Mage.Sets/src/mage/cards/n/NeedleshotGourna.java
+++ b/Mage.Sets/src/mage/cards/n/NeedleshotGourna.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class NeedleshotGourna extends CardImpl {
+public final class NeedleshotGourna extends CardImpl {
public NeedleshotGourna(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NeedletoothRaptor.java b/Mage.Sets/src/mage/cards/n/NeedletoothRaptor.java
index c45affc70bc..7dbf7a25488 100644
--- a/Mage.Sets/src/mage/cards/n/NeedletoothRaptor.java
+++ b/Mage.Sets/src/mage/cards/n/NeedletoothRaptor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class NeedletoothRaptor extends CardImpl {
+public final class NeedletoothRaptor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/n/NefCropEntangler.java b/Mage.Sets/src/mage/cards/n/NefCropEntangler.java
index 4fd1976f25f..71ad4555a92 100644
--- a/Mage.Sets/src/mage/cards/n/NefCropEntangler.java
+++ b/Mage.Sets/src/mage/cards/n/NefCropEntangler.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class NefCropEntangler extends CardImpl {
+public final class NefCropEntangler extends CardImpl {
public NefCropEntangler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NefariousLich.java b/Mage.Sets/src/mage/cards/n/NefariousLich.java
index 9789037b8aa..13060d7064a 100644
--- a/Mage.Sets/src/mage/cards/n/NefariousLich.java
+++ b/Mage.Sets/src/mage/cards/n/NefariousLich.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class NefariousLich extends CardImpl {
+public final class NefariousLich extends CardImpl {
public NefariousLich(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NefaroxOverlordOfGrixis.java b/Mage.Sets/src/mage/cards/n/NefaroxOverlordOfGrixis.java
index ad7b9191ea9..e56f1e0446d 100644
--- a/Mage.Sets/src/mage/cards/n/NefaroxOverlordOfGrixis.java
+++ b/Mage.Sets/src/mage/cards/n/NefaroxOverlordOfGrixis.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class NefaroxOverlordOfGrixis extends CardImpl {
+public final class NefaroxOverlordOfGrixis extends CardImpl {
public NefaroxOverlordOfGrixis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Nefashu.java b/Mage.Sets/src/mage/cards/n/Nefashu.java
index 01166d92d18..95dae81e0af 100644
--- a/Mage.Sets/src/mage/cards/n/Nefashu.java
+++ b/Mage.Sets/src/mage/cards/n/Nefashu.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class Nefashu extends CardImpl {
+public final class Nefashu extends CardImpl {
static final String rule = "Whenever Nefashu attacks, up to five target creatures each get -1/-1 until end of turn.";
diff --git a/Mage.Sets/src/mage/cards/n/Negate.java b/Mage.Sets/src/mage/cards/n/Negate.java
index 840153cf85b..7008a725835 100644
--- a/Mage.Sets/src/mage/cards/n/Negate.java
+++ b/Mage.Sets/src/mage/cards/n/Negate.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class Negate extends CardImpl {
+public final class Negate extends CardImpl {
public Negate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NeglectedHeirloom.java b/Mage.Sets/src/mage/cards/n/NeglectedHeirloom.java
index b1781f7e26f..1aa2c5be216 100644
--- a/Mage.Sets/src/mage/cards/n/NeglectedHeirloom.java
+++ b/Mage.Sets/src/mage/cards/n/NeglectedHeirloom.java
@@ -49,7 +49,7 @@ import mage.game.events.GameEvent;
*
* @author halljared
*/
-public class NeglectedHeirloom extends CardImpl {
+public final class NeglectedHeirloom extends CardImpl {
public NeglectedHeirloom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/n/NehebTheEternal.java b/Mage.Sets/src/mage/cards/n/NehebTheEternal.java
index 92dfef4f598..e4f2814a240 100644
--- a/Mage.Sets/src/mage/cards/n/NehebTheEternal.java
+++ b/Mage.Sets/src/mage/cards/n/NehebTheEternal.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class NehebTheEternal extends CardImpl {
+public final class NehebTheEternal extends CardImpl {
public NehebTheEternal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NehebTheWorthy.java b/Mage.Sets/src/mage/cards/n/NehebTheWorthy.java
index 665fcbe2838..d0bcdcb042b 100644
--- a/Mage.Sets/src/mage/cards/n/NehebTheWorthy.java
+++ b/Mage.Sets/src/mage/cards/n/NehebTheWorthy.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class NehebTheWorthy extends CardImpl {
+public final class NehebTheWorthy extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Minotaurs");
diff --git a/Mage.Sets/src/mage/cards/n/NekoTe.java b/Mage.Sets/src/mage/cards/n/NekoTe.java
index c1bb826f287..40ea9afdd01 100644
--- a/Mage.Sets/src/mage/cards/n/NekoTe.java
+++ b/Mage.Sets/src/mage/cards/n/NekoTe.java
@@ -50,7 +50,7 @@ import mage.constants.Outcome;
*
* @author LevelX2
*/
-public class NekoTe extends CardImpl {
+public final class NekoTe extends CardImpl {
public NekoTe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/n/Nekrataal.java b/Mage.Sets/src/mage/cards/n/Nekrataal.java
index 6b0f09afb33..d35da45b5d2 100644
--- a/Mage.Sets/src/mage/cards/n/Nekrataal.java
+++ b/Mage.Sets/src/mage/cards/n/Nekrataal.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*
*/
-public class Nekrataal extends CardImpl {
+public final class Nekrataal extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact, nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/n/NekusarTheMindrazer.java b/Mage.Sets/src/mage/cards/n/NekusarTheMindrazer.java
index f06fa2df4ae..28b938fc075 100644
--- a/Mage.Sets/src/mage/cards/n/NekusarTheMindrazer.java
+++ b/Mage.Sets/src/mage/cards/n/NekusarTheMindrazer.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class NekusarTheMindrazer extends CardImpl {
+public final class NekusarTheMindrazer extends CardImpl {
public NekusarTheMindrazer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NemaSiltlurker.java b/Mage.Sets/src/mage/cards/n/NemaSiltlurker.java
index 2095a03d99e..efddc97f940 100644
--- a/Mage.Sets/src/mage/cards/n/NemaSiltlurker.java
+++ b/Mage.Sets/src/mage/cards/n/NemaSiltlurker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class NemaSiltlurker extends CardImpl {
+public final class NemaSiltlurker extends CardImpl {
public NemaSiltlurker (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NemataGroveGuardian.java b/Mage.Sets/src/mage/cards/n/NemataGroveGuardian.java
index 47abe5176af..ce2eecc9043 100644
--- a/Mage.Sets/src/mage/cards/n/NemataGroveGuardian.java
+++ b/Mage.Sets/src/mage/cards/n/NemataGroveGuardian.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class NemataGroveGuardian extends CardImpl {
+public final class NemataGroveGuardian extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Saproling creatures");
private static final FilterControlledPermanent filter1 = new FilterControlledPermanent("Saproling");
diff --git a/Mage.Sets/src/mage/cards/n/NemesisMask.java b/Mage.Sets/src/mage/cards/n/NemesisMask.java
index dee1f192039..59436324b5c 100644
--- a/Mage.Sets/src/mage/cards/n/NemesisMask.java
+++ b/Mage.Sets/src/mage/cards/n/NemesisMask.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class NemesisMask extends CardImpl {
+public final class NemesisMask extends CardImpl {
public NemesisMask(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/n/NemesisOfMortals.java b/Mage.Sets/src/mage/cards/n/NemesisOfMortals.java
index 3fe0b24d48b..54163b0a80c 100644
--- a/Mage.Sets/src/mage/cards/n/NemesisOfMortals.java
+++ b/Mage.Sets/src/mage/cards/n/NemesisOfMortals.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class NemesisOfMortals extends CardImpl {
+public final class NemesisOfMortals extends CardImpl {
public NemesisOfMortals(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NemesisOfReason.java b/Mage.Sets/src/mage/cards/n/NemesisOfReason.java
index 4dd5109451e..e0cbebbaff1 100644
--- a/Mage.Sets/src/mage/cards/n/NemesisOfReason.java
+++ b/Mage.Sets/src/mage/cards/n/NemesisOfReason.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class NemesisOfReason extends CardImpl {
+public final class NemesisOfReason extends CardImpl {
public NemesisOfReason (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NemesisTrap.java b/Mage.Sets/src/mage/cards/n/NemesisTrap.java
index 1a28e4260dc..795f6a2511c 100644
--- a/Mage.Sets/src/mage/cards/n/NemesisTrap.java
+++ b/Mage.Sets/src/mage/cards/n/NemesisTrap.java
@@ -56,7 +56,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class NemesisTrap extends CardImpl {
+public final class NemesisTrap extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("If a white creature is attacking");
diff --git a/Mage.Sets/src/mage/cards/n/NeophyteHateflayer.java b/Mage.Sets/src/mage/cards/n/NeophyteHateflayer.java
index c3dab477a4e..37cf349dc41 100644
--- a/Mage.Sets/src/mage/cards/n/NeophyteHateflayer.java
+++ b/Mage.Sets/src/mage/cards/n/NeophyteHateflayer.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class NeophyteHateflayer extends CardImpl {
+public final class NeophyteHateflayer extends CardImpl {
public NeophyteHateflayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NephaliaAcademy.java b/Mage.Sets/src/mage/cards/n/NephaliaAcademy.java
index b05d0f5044f..36d9ed4266d 100644
--- a/Mage.Sets/src/mage/cards/n/NephaliaAcademy.java
+++ b/Mage.Sets/src/mage/cards/n/NephaliaAcademy.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class NephaliaAcademy extends CardImpl {
+public final class NephaliaAcademy extends CardImpl {
public NephaliaAcademy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/n/NephaliaDrownyard.java b/Mage.Sets/src/mage/cards/n/NephaliaDrownyard.java
index db884b1f9af..b6e13dbf00a 100644
--- a/Mage.Sets/src/mage/cards/n/NephaliaDrownyard.java
+++ b/Mage.Sets/src/mage/cards/n/NephaliaDrownyard.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
/**
* @author nantuko
*/
-public class NephaliaDrownyard extends CardImpl {
+public final class NephaliaDrownyard extends CardImpl {
public NephaliaDrownyard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/n/NephaliaMoondrakes.java b/Mage.Sets/src/mage/cards/n/NephaliaMoondrakes.java
index 4c35caed072..6d38230d626 100644
--- a/Mage.Sets/src/mage/cards/n/NephaliaMoondrakes.java
+++ b/Mage.Sets/src/mage/cards/n/NephaliaMoondrakes.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class NephaliaMoondrakes extends CardImpl {
+public final class NephaliaMoondrakes extends CardImpl {
public NephaliaMoondrakes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NephaliaSeakite.java b/Mage.Sets/src/mage/cards/n/NephaliaSeakite.java
index 2010caed192..0abe548be5d 100644
--- a/Mage.Sets/src/mage/cards/n/NephaliaSeakite.java
+++ b/Mage.Sets/src/mage/cards/n/NephaliaSeakite.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class NephaliaSeakite extends CardImpl {
+public final class NephaliaSeakite extends CardImpl {
public NephaliaSeakite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NephaliaSmuggler.java b/Mage.Sets/src/mage/cards/n/NephaliaSmuggler.java
index e16b67f8260..96a728f983d 100644
--- a/Mage.Sets/src/mage/cards/n/NephaliaSmuggler.java
+++ b/Mage.Sets/src/mage/cards/n/NephaliaSmuggler.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author noxx
*/
-public class NephaliaSmuggler extends CardImpl {
+public final class NephaliaSmuggler extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/n/NerfHerder.java b/Mage.Sets/src/mage/cards/n/NerfHerder.java
index 3f41b1198d7..2f3a068fc32 100644
--- a/Mage.Sets/src/mage/cards/n/NerfHerder.java
+++ b/Mage.Sets/src/mage/cards/n/NerfHerder.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author Styxo
*/
-public class NerfHerder extends CardImpl {
+public final class NerfHerder extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/n/NessianAsp.java b/Mage.Sets/src/mage/cards/n/NessianAsp.java
index 76a24ef53bd..dc82d30d47a 100644
--- a/Mage.Sets/src/mage/cards/n/NessianAsp.java
+++ b/Mage.Sets/src/mage/cards/n/NessianAsp.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class NessianAsp extends CardImpl {
+public final class NessianAsp extends CardImpl {
public NessianAsp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NessianCourser.java b/Mage.Sets/src/mage/cards/n/NessianCourser.java
index 406ceeb4390..664bb473ef1 100644
--- a/Mage.Sets/src/mage/cards/n/NessianCourser.java
+++ b/Mage.Sets/src/mage/cards/n/NessianCourser.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class NessianCourser extends CardImpl {
+public final class NessianCourser extends CardImpl {
public NessianCourser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NessianDemolok.java b/Mage.Sets/src/mage/cards/n/NessianDemolok.java
index 8e6d5f83222..e7738b84030 100644
--- a/Mage.Sets/src/mage/cards/n/NessianDemolok.java
+++ b/Mage.Sets/src/mage/cards/n/NessianDemolok.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class NessianDemolok extends CardImpl {
+public final class NessianDemolok extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature permanent");
diff --git a/Mage.Sets/src/mage/cards/n/NessianGameWarden.java b/Mage.Sets/src/mage/cards/n/NessianGameWarden.java
index 9f6511ef2c2..f54ad793a48 100644
--- a/Mage.Sets/src/mage/cards/n/NessianGameWarden.java
+++ b/Mage.Sets/src/mage/cards/n/NessianGameWarden.java
@@ -54,7 +54,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class NessianGameWarden extends CardImpl {
+public final class NessianGameWarden extends CardImpl {
public NessianGameWarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NessianWildsRavager.java b/Mage.Sets/src/mage/cards/n/NessianWildsRavager.java
index f95b91bb9fe..4675287aea3 100644
--- a/Mage.Sets/src/mage/cards/n/NessianWildsRavager.java
+++ b/Mage.Sets/src/mage/cards/n/NessianWildsRavager.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NessianWildsRavager extends CardImpl {
+public final class NessianWildsRavager extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
static {
diff --git a/Mage.Sets/src/mage/cards/n/NestInvader.java b/Mage.Sets/src/mage/cards/n/NestInvader.java
index d46400f1a9c..d7ba3687c4b 100644
--- a/Mage.Sets/src/mage/cards/n/NestInvader.java
+++ b/Mage.Sets/src/mage/cards/n/NestInvader.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.EldraziSpawnToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class NestInvader extends CardImpl {
+public final class NestInvader extends CardImpl {
public NestInvader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NestOfScarabs.java b/Mage.Sets/src/mage/cards/n/NestOfScarabs.java
index 33258e5344c..58f59d8e161 100644
--- a/Mage.Sets/src/mage/cards/n/NestOfScarabs.java
+++ b/Mage.Sets/src/mage/cards/n/NestOfScarabs.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.NestOfScarabsBlackInsectToken;
*
* @author stravant
*/
-public class NestOfScarabs extends CardImpl {
+public final class NestOfScarabs extends CardImpl {
public NestOfScarabs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NestRobber.java b/Mage.Sets/src/mage/cards/n/NestRobber.java
index e768562b983..5fbf082e45b 100644
--- a/Mage.Sets/src/mage/cards/n/NestRobber.java
+++ b/Mage.Sets/src/mage/cards/n/NestRobber.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class NestRobber extends CardImpl {
+public final class NestRobber extends CardImpl {
public NestRobber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NestedGhoul.java b/Mage.Sets/src/mage/cards/n/NestedGhoul.java
index ed6721e6ad6..0437722bba7 100644
--- a/Mage.Sets/src/mage/cards/n/NestedGhoul.java
+++ b/Mage.Sets/src/mage/cards/n/NestedGhoul.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author Loki
*/
-public class NestedGhoul extends CardImpl {
+public final class NestedGhoul extends CardImpl {
public NestedGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NestingWurm.java b/Mage.Sets/src/mage/cards/n/NestingWurm.java
index fad687d2e78..98fd0bd38ba 100644
--- a/Mage.Sets/src/mage/cards/n/NestingWurm.java
+++ b/Mage.Sets/src/mage/cards/n/NestingWurm.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author L_J (based on BetaSteward_at_googlemail.com)
*/
-public class NestingWurm extends CardImpl {
+public final class NestingWurm extends CardImpl {
private static final FilterCard filter = new FilterCard("cards named Nesting Wurm");
diff --git a/Mage.Sets/src/mage/cards/n/NetcasterSpider.java b/Mage.Sets/src/mage/cards/n/NetcasterSpider.java
index 426c8ce6431..f6e44e6b090 100644
--- a/Mage.Sets/src/mage/cards/n/NetcasterSpider.java
+++ b/Mage.Sets/src/mage/cards/n/NetcasterSpider.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class NetcasterSpider extends CardImpl {
+public final class NetcasterSpider extends CardImpl {
public NetcasterSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NetherHorror.java b/Mage.Sets/src/mage/cards/n/NetherHorror.java
index d3f20c8221c..3778aa0cbe8 100644
--- a/Mage.Sets/src/mage/cards/n/NetherHorror.java
+++ b/Mage.Sets/src/mage/cards/n/NetherHorror.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class NetherHorror extends CardImpl {
+public final class NetherHorror extends CardImpl {
public NetherHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NetherShadow.java b/Mage.Sets/src/mage/cards/n/NetherShadow.java
index 1a9fea349e1..89cfc9355bc 100644
--- a/Mage.Sets/src/mage/cards/n/NetherShadow.java
+++ b/Mage.Sets/src/mage/cards/n/NetherShadow.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class NetherShadow extends CardImpl {
+public final class NetherShadow extends CardImpl {
public NetherShadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NetherSpirit.java b/Mage.Sets/src/mage/cards/n/NetherSpirit.java
index 6fffe309264..318f4373242 100644
--- a/Mage.Sets/src/mage/cards/n/NetherSpirit.java
+++ b/Mage.Sets/src/mage/cards/n/NetherSpirit.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class NetherSpirit extends CardImpl {
+public final class NetherSpirit extends CardImpl {
public NetherSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NetherTraitor.java b/Mage.Sets/src/mage/cards/n/NetherTraitor.java
index c3a4a54c151..b0026dafb2d 100644
--- a/Mage.Sets/src/mage/cards/n/NetherTraitor.java
+++ b/Mage.Sets/src/mage/cards/n/NetherTraitor.java
@@ -49,7 +49,7 @@ import mage.game.events.ZoneChangeEvent;
*
* @author emerald000
*/
-public class NetherTraitor extends CardImpl {
+public final class NetherTraitor extends CardImpl {
public NetherTraitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NetherVoid.java b/Mage.Sets/src/mage/cards/n/NetherVoid.java
index 2e271a8043b..d9363d04777 100644
--- a/Mage.Sets/src/mage/cards/n/NetherVoid.java
+++ b/Mage.Sets/src/mage/cards/n/NetherVoid.java
@@ -42,7 +42,7 @@ import mage.filter.FilterSpell;
*
* @author emerald000
*/
-public class NetherVoid extends CardImpl {
+public final class NetherVoid extends CardImpl {
public NetherVoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NetherbornPhalanx.java b/Mage.Sets/src/mage/cards/n/NetherbornPhalanx.java
index 8e56033d624..7992f86aaf5 100644
--- a/Mage.Sets/src/mage/cards/n/NetherbornPhalanx.java
+++ b/Mage.Sets/src/mage/cards/n/NetherbornPhalanx.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class NetherbornPhalanx extends CardImpl {
+public final class NetherbornPhalanx extends CardImpl {
public NetherbornPhalanx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NetterEnDal.java b/Mage.Sets/src/mage/cards/n/NetterEnDal.java
index c0a5827744c..192d6c6bf68 100644
--- a/Mage.Sets/src/mage/cards/n/NetterEnDal.java
+++ b/Mage.Sets/src/mage/cards/n/NetterEnDal.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class NetterEnDal extends CardImpl {
+public final class NetterEnDal extends CardImpl {
public NetterEnDal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NettleDrone.java b/Mage.Sets/src/mage/cards/n/NettleDrone.java
index 42a2298bd29..68d945e7047 100644
--- a/Mage.Sets/src/mage/cards/n/NettleDrone.java
+++ b/Mage.Sets/src/mage/cards/n/NettleDrone.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
*
* @author LevelX2
*/
-public class NettleDrone extends CardImpl {
+public final class NettleDrone extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a colorless spell");
diff --git a/Mage.Sets/src/mage/cards/n/NettleSentinel.java b/Mage.Sets/src/mage/cards/n/NettleSentinel.java
index 1089d4de1a3..a26efd38f48 100644
--- a/Mage.Sets/src/mage/cards/n/NettleSentinel.java
+++ b/Mage.Sets/src/mage/cards/n/NettleSentinel.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jonubuu
*/
-public class NettleSentinel extends CardImpl {
+public final class NettleSentinel extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a green spell");
diff --git a/Mage.Sets/src/mage/cards/n/NettleSwine.java b/Mage.Sets/src/mage/cards/n/NettleSwine.java
index c37a5ef1535..07d2941fe26 100644
--- a/Mage.Sets/src/mage/cards/n/NettleSwine.java
+++ b/Mage.Sets/src/mage/cards/n/NettleSwine.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class NettleSwine extends CardImpl {
+public final class NettleSwine extends CardImpl {
public NettleSwine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NettletoothDjinn.java b/Mage.Sets/src/mage/cards/n/NettletoothDjinn.java
index fa949cb2c87..615688957fc 100644
--- a/Mage.Sets/src/mage/cards/n/NettletoothDjinn.java
+++ b/Mage.Sets/src/mage/cards/n/NettletoothDjinn.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class NettletoothDjinn extends CardImpl {
+public final class NettletoothDjinn extends CardImpl {
public NettletoothDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NettlevineBlight.java b/Mage.Sets/src/mage/cards/n/NettlevineBlight.java
index 23a52cc2af3..14d6e9d3912 100644
--- a/Mage.Sets/src/mage/cards/n/NettlevineBlight.java
+++ b/Mage.Sets/src/mage/cards/n/NettlevineBlight.java
@@ -40,7 +40,6 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.constants.TargetController;
-import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
@@ -56,7 +55,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class NettlevineBlight extends CardImpl {
+public final class NettlevineBlight extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or land permanent");
@@ -134,10 +133,7 @@ class NettlevineBlightEffect extends OneShotEffect {
if (chosenPermanent != null) {
Card nettlevineBlightCard = game.getCard(source.getSourceId());
if (nettlevineBlightCard != null) {
- Zone zone = game.getState().getZone(nettlevineBlightCard.getId());
- nettlevineBlightCard.putOntoBattlefield(game, zone, source.getSourceId(), newController.getId());
- game.getState().setValue("attachTo:" + nettlevineBlight.getId(), chosenPermanent);
- chosenPermanent.addAttachment(nettlevineBlight.getId(), game);
+ nettlevineBlight.attachTo(chosenPermanent.getId(), game);
return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/n/NettlingImp.java b/Mage.Sets/src/mage/cards/n/NettlingImp.java
index 7e410528d8b..98b5b552a50 100644
--- a/Mage.Sets/src/mage/cards/n/NettlingImp.java
+++ b/Mage.Sets/src/mage/cards/n/NettlingImp.java
@@ -57,7 +57,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author MTGfan
*/
-public class NettlingImp extends CardImpl {
+public final class NettlingImp extends CardImpl {
final static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall");
diff --git a/Mage.Sets/src/mage/cards/n/NeurokCommando.java b/Mage.Sets/src/mage/cards/n/NeurokCommando.java
index ce899b1b1a7..a5a8f8f6cf6 100644
--- a/Mage.Sets/src/mage/cards/n/NeurokCommando.java
+++ b/Mage.Sets/src/mage/cards/n/NeurokCommando.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class NeurokCommando extends CardImpl {
+public final class NeurokCommando extends CardImpl {
public NeurokCommando(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NeurokFamiliar.java b/Mage.Sets/src/mage/cards/n/NeurokFamiliar.java
index 0a5f69667a4..0293fe00705 100644
--- a/Mage.Sets/src/mage/cards/n/NeurokFamiliar.java
+++ b/Mage.Sets/src/mage/cards/n/NeurokFamiliar.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author rollergo11
*/
-public class NeurokFamiliar extends CardImpl {
+public final class NeurokFamiliar extends CardImpl {
public NeurokFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NeurokHoversail.java b/Mage.Sets/src/mage/cards/n/NeurokHoversail.java
index 9e551f43d1d..5fc1807bea2 100644
--- a/Mage.Sets/src/mage/cards/n/NeurokHoversail.java
+++ b/Mage.Sets/src/mage/cards/n/NeurokHoversail.java
@@ -41,7 +41,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class NeurokHoversail extends CardImpl {
+public final class NeurokHoversail extends CardImpl {
public NeurokHoversail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/n/NeurokInvisimancer.java b/Mage.Sets/src/mage/cards/n/NeurokInvisimancer.java
index 3a71bd5f22b..53f237d2ba9 100644
--- a/Mage.Sets/src/mage/cards/n/NeurokInvisimancer.java
+++ b/Mage.Sets/src/mage/cards/n/NeurokInvisimancer.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class NeurokInvisimancer extends CardImpl {
+public final class NeurokInvisimancer extends CardImpl {
public NeurokInvisimancer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NeurokProdigy.java b/Mage.Sets/src/mage/cards/n/NeurokProdigy.java
index 3749ad7fb05..8e06aae3e57 100644
--- a/Mage.Sets/src/mage/cards/n/NeurokProdigy.java
+++ b/Mage.Sets/src/mage/cards/n/NeurokProdigy.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
/**
* @author Loki
*/
-public class NeurokProdigy extends CardImpl {
+public final class NeurokProdigy extends CardImpl {
private static final FilterCard filter = new FilterCard("an artifact card");
diff --git a/Mage.Sets/src/mage/cards/n/NeurokReplica.java b/Mage.Sets/src/mage/cards/n/NeurokReplica.java
index 26fe0ea2b76..b243cdee4f2 100644
--- a/Mage.Sets/src/mage/cards/n/NeurokReplica.java
+++ b/Mage.Sets/src/mage/cards/n/NeurokReplica.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class NeurokReplica extends CardImpl {
+public final class NeurokReplica extends CardImpl {
public NeurokReplica (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/n/NeurokSpy.java b/Mage.Sets/src/mage/cards/n/NeurokSpy.java
index aafcb7719e2..5b044b47256 100644
--- a/Mage.Sets/src/mage/cards/n/NeurokSpy.java
+++ b/Mage.Sets/src/mage/cards/n/NeurokSpy.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author Backfir3
*/
-public class NeurokSpy extends CardImpl {
+public final class NeurokSpy extends CardImpl {
public NeurokSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NeurokStealthsuit.java b/Mage.Sets/src/mage/cards/n/NeurokStealthsuit.java
index 6c519204631..3893cde7b90 100644
--- a/Mage.Sets/src/mage/cards/n/NeurokStealthsuit.java
+++ b/Mage.Sets/src/mage/cards/n/NeurokStealthsuit.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class NeurokStealthsuit extends CardImpl {
+public final class NeurokStealthsuit extends CardImpl {
public NeurokStealthsuit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/n/NeutralizingBlast.java b/Mage.Sets/src/mage/cards/n/NeutralizingBlast.java
index bff7a9ada3a..f1826e53e1a 100644
--- a/Mage.Sets/src/mage/cards/n/NeutralizingBlast.java
+++ b/Mage.Sets/src/mage/cards/n/NeutralizingBlast.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author emerald000
*/
-public class NeutralizingBlast extends CardImpl {
+public final class NeutralizingBlast extends CardImpl {
private static final FilterSpell filter = new FilterSpell("multicolored spell");
static {
diff --git a/Mage.Sets/src/mage/cards/n/NeverReturn.java b/Mage.Sets/src/mage/cards/n/NeverReturn.java
index fdcd525b9f0..73a83ece448 100644
--- a/Mage.Sets/src/mage/cards/n/NeverReturn.java
+++ b/Mage.Sets/src/mage/cards/n/NeverReturn.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
*
* @author fireshoes
*/
-public class NeverReturn extends SplitCard {
+public final class NeverReturn extends SplitCard {
public NeverReturn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{1}{B}{B}", "{3}{B}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/n/NeverendingTorment.java b/Mage.Sets/src/mage/cards/n/NeverendingTorment.java
index 9dcd9b78eab..83c48c136c8 100644
--- a/Mage.Sets/src/mage/cards/n/NeverendingTorment.java
+++ b/Mage.Sets/src/mage/cards/n/NeverendingTorment.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
* @author jeffwadsworth
*
*/
-public class NeverendingTorment extends CardImpl {
+public final class NeverendingTorment extends CardImpl {
public NeverendingTorment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Nevermaker.java b/Mage.Sets/src/mage/cards/n/Nevermaker.java
index a7bfbe03519..2896ad8acd6 100644
--- a/Mage.Sets/src/mage/cards/n/Nevermaker.java
+++ b/Mage.Sets/src/mage/cards/n/Nevermaker.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class Nevermaker extends CardImpl {
+public final class Nevermaker extends CardImpl {
public Nevermaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/Nevermore.java b/Mage.Sets/src/mage/cards/n/Nevermore.java
index 2f453942460..3a29dc34d88 100644
--- a/Mage.Sets/src/mage/cards/n/Nevermore.java
+++ b/Mage.Sets/src/mage/cards/n/Nevermore.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Nevermore extends CardImpl {
+public final class Nevermore extends CardImpl {
public Nevermore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NevinyrralsDisk.java b/Mage.Sets/src/mage/cards/n/NevinyrralsDisk.java
index b87d3e919f1..40e3d8d95ac 100644
--- a/Mage.Sets/src/mage/cards/n/NevinyrralsDisk.java
+++ b/Mage.Sets/src/mage/cards/n/NevinyrralsDisk.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
* @author jeffwadsworth
*/
-public class NevinyrralsDisk extends CardImpl {
+public final class NevinyrralsDisk extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts, creatures, and enchantments");
diff --git a/Mage.Sets/src/mage/cards/n/NewBenalia.java b/Mage.Sets/src/mage/cards/n/NewBenalia.java
index 6471ae5de8f..b16fc2d5165 100644
--- a/Mage.Sets/src/mage/cards/n/NewBenalia.java
+++ b/Mage.Sets/src/mage/cards/n/NewBenalia.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author jonubuu
*/
-public class NewBenalia extends CardImpl {
+public final class NewBenalia extends CardImpl {
public NewBenalia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/n/NewBlood.java b/Mage.Sets/src/mage/cards/n/NewBlood.java
index 7093594edf3..2138108e770 100644
--- a/Mage.Sets/src/mage/cards/n/NewBlood.java
+++ b/Mage.Sets/src/mage/cards/n/NewBlood.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class NewBlood extends CardImpl {
+public final class NewBlood extends CardImpl {
public NewBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NewFrontiers.java b/Mage.Sets/src/mage/cards/n/NewFrontiers.java
index 246b24e817a..a0868b040d0 100644
--- a/Mage.Sets/src/mage/cards/n/NewFrontiers.java
+++ b/Mage.Sets/src/mage/cards/n/NewFrontiers.java
@@ -29,7 +29,6 @@ package mage.cards.n;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
-import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -41,12 +40,13 @@ import mage.players.Player;
import mage.target.common.TargetCardInLibrary;
import java.util.UUID;
+import mage.cards.CardsImpl;
/**
*
* @author spjspj
*/
-public class NewFrontiers extends CardImpl {
+public final class NewFrontiers extends CardImpl {
public NewFrontiers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}");
@@ -86,18 +86,12 @@ class NewFrontiersEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
int amount = source.getManaCostsToPay().getX();
-
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
- if (player != null) {
- TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_BASIC_LAND_CARD);
+ if (player != null && player.chooseUse(outcome, "Search your library for up to " + amount + " basic lands?", source, game)) {
+ TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_CARD_BASIC_LAND);
if (player.searchLibrary(target, game)) {
- for (UUID cardId : target.getTargets()) {
- Card card = player.getLibrary().getCard(cardId, game);
- if (card != null) {
- card.putOntoBattlefield(game, Zone.LIBRARY, source.getSourceId(), player.getId(), true);
- }
- }
+ player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null);
player.shuffleLibrary(source, game);
}
diff --git a/Mage.Sets/src/mage/cards/n/NewHorizons.java b/Mage.Sets/src/mage/cards/n/NewHorizons.java
index 5193c4876d9..1731a05cafe 100644
--- a/Mage.Sets/src/mage/cards/n/NewHorizons.java
+++ b/Mage.Sets/src/mage/cards/n/NewHorizons.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class NewHorizons extends CardImpl {
+public final class NewHorizons extends CardImpl {
public NewHorizons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NewPerspectives.java b/Mage.Sets/src/mage/cards/n/NewPerspectives.java
index 0ddda380cfb..37e4f3831b2 100644
--- a/Mage.Sets/src/mage/cards/n/NewPerspectives.java
+++ b/Mage.Sets/src/mage/cards/n/NewPerspectives.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class NewPerspectives extends CardImpl {
+public final class NewPerspectives extends CardImpl {
public NewPerspectives(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NewPrahvGuildmage.java b/Mage.Sets/src/mage/cards/n/NewPrahvGuildmage.java
index c18c85c3bf8..e71e30b7763 100644
--- a/Mage.Sets/src/mage/cards/n/NewPrahvGuildmage.java
+++ b/Mage.Sets/src/mage/cards/n/NewPrahvGuildmage.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class NewPrahvGuildmage extends CardImpl {
+public final class NewPrahvGuildmage extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanent an opponent control");
diff --git a/Mage.Sets/src/mage/cards/n/NexuStalker.java b/Mage.Sets/src/mage/cards/n/NexuStalker.java
index 92b645cc434..e6ea14fa00f 100644
--- a/Mage.Sets/src/mage/cards/n/NexuStalker.java
+++ b/Mage.Sets/src/mage/cards/n/NexuStalker.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class NexuStalker extends CardImpl {
+public final class NexuStalker extends CardImpl {
public NexuStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NezahalPrimalTide.java b/Mage.Sets/src/mage/cards/n/NezahalPrimalTide.java
index 8bb90ce8cf2..c6b34df21b1 100644
--- a/Mage.Sets/src/mage/cards/n/NezahalPrimalTide.java
+++ b/Mage.Sets/src/mage/cards/n/NezahalPrimalTide.java
@@ -1,101 +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.n;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.common.CantBeCounteredAbility;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.common.SpellCastOpponentTriggeredAbility;
-import mage.abilities.costs.common.DiscardTargetCost;
-import mage.abilities.effects.Effect;
-import mage.abilities.effects.common.DrawCardSourceControllerEffect;
-import mage.abilities.effects.common.ExileReturnBattlefieldOwnerNextEndStepSourceEffect;
-import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.SetTargetPointer;
-import mage.constants.SubType;
-import mage.constants.SuperType;
-import mage.constants.Zone;
-import mage.filter.FilterCard;
-import mage.filter.FilterSpell;
-import mage.filter.predicate.Predicates;
-import mage.filter.predicate.mageobject.CardTypePredicate;
-import mage.target.common.TargetCardInHand;
-
-/**
- *
- * @author LevelX2
- */
-public class NezahalPrimalTide extends CardImpl {
-
- private static final FilterSpell filter = new FilterSpell("a noncreature spell");
-
- static {
- filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE)));
- }
-
- public NezahalPrimalTide(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
-
- this.addSuperType(SuperType.LEGENDARY);
- this.subtype.add(SubType.ELDER);
- this.subtype.add(SubType.DINOSAUR);
- this.power = new MageInt(7);
- this.toughness = new MageInt(7);
-
- // Nezahal, Primal Tide can't be countered.
- this.addAbility(new CantBeCounteredAbility());
-
- // You have no maximum hand size.
- Effect effect = new MaximumHandSizeControllerEffect(Integer.MAX_VALUE, Duration.WhileOnBattlefield, MaximumHandSizeControllerEffect.HandSizeModification.SET);
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
-
- // Whenever an opponent casts a noncreature spell, draw a card.
- this.addAbility(new SpellCastOpponentTriggeredAbility(Zone.BATTLEFIELD,
- new DrawCardSourceControllerEffect(1), filter, false, SetTargetPointer.NONE));
-
- // Discard three cards: Exile Nezahal. Return it to the battlefield tapped under its owner's control at the beginning of the next end step.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileReturnBattlefieldOwnerNextEndStepSourceEffect(true, true),
- new DiscardTargetCost(new TargetCardInHand(3, new FilterCard("three cards")))));
-
- }
-
- public NezahalPrimalTide(final NezahalPrimalTide card) {
- super(card);
- }
-
- @Override
- public NezahalPrimalTide copy() {
- return new NezahalPrimalTide(this);
- }
-}
+/*
+ * 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.n;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.CantBeCounteredAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.common.SpellCastOpponentTriggeredAbility;
+import mage.abilities.costs.common.DiscardTargetCost;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.ExileReturnBattlefieldOwnerNextEndStepSourceEffect;
+import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SetTargetPointer;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.filter.FilterSpell;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.target.common.TargetCardInHand;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class NezahalPrimalTide extends CardImpl {
+
+ private static final FilterSpell filter = new FilterSpell("a noncreature spell");
+
+ static {
+ filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE)));
+ }
+
+ public NezahalPrimalTide(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.ELDER);
+ this.subtype.add(SubType.DINOSAUR);
+ this.power = new MageInt(7);
+ this.toughness = new MageInt(7);
+
+ // Nezahal, Primal Tide can't be countered.
+ this.addAbility(new CantBeCounteredAbility());
+
+ // You have no maximum hand size.
+ Effect effect = new MaximumHandSizeControllerEffect(Integer.MAX_VALUE, Duration.WhileOnBattlefield, MaximumHandSizeControllerEffect.HandSizeModification.SET);
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
+
+ // Whenever an opponent casts a noncreature spell, draw a card.
+ this.addAbility(new SpellCastOpponentTriggeredAbility(Zone.BATTLEFIELD,
+ new DrawCardSourceControllerEffect(1), filter, false, SetTargetPointer.NONE));
+
+ // Discard three cards: Exile Nezahal. Return it to the battlefield tapped under its owner's control at the beginning of the next end step.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileReturnBattlefieldOwnerNextEndStepSourceEffect(true, true),
+ new DiscardTargetCost(new TargetCardInHand(3, new FilterCard("three cards")))));
+
+ }
+
+ public NezahalPrimalTide(final NezahalPrimalTide card) {
+ super(card);
+ }
+
+ @Override
+ public NezahalPrimalTide copy() {
+ return new NezahalPrimalTide(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/n/NezumiBoneReader.java b/Mage.Sets/src/mage/cards/n/NezumiBoneReader.java
index dda7397e9c8..03c15fa5dce 100644
--- a/Mage.Sets/src/mage/cards/n/NezumiBoneReader.java
+++ b/Mage.Sets/src/mage/cards/n/NezumiBoneReader.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX
*/
-public class NezumiBoneReader extends CardImpl {
+public final class NezumiBoneReader extends CardImpl {
public NezumiBoneReader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NezumiCutthroat.java b/Mage.Sets/src/mage/cards/n/NezumiCutthroat.java
index 0b6240253b4..29969a09082 100644
--- a/Mage.Sets/src/mage/cards/n/NezumiCutthroat.java
+++ b/Mage.Sets/src/mage/cards/n/NezumiCutthroat.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class NezumiCutthroat extends CardImpl {
+public final class NezumiCutthroat extends CardImpl {
public NezumiCutthroat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NezumiGraverobber.java b/Mage.Sets/src/mage/cards/n/NezumiGraverobber.java
index c4a12bc7e24..04a29c488f1 100644
--- a/Mage.Sets/src/mage/cards/n/NezumiGraverobber.java
+++ b/Mage.Sets/src/mage/cards/n/NezumiGraverobber.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
/**
* @author Loki
*/
-public class NezumiGraverobber extends CardImpl {
+public final class NezumiGraverobber extends CardImpl {
public NezumiGraverobber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NezumiRonin.java b/Mage.Sets/src/mage/cards/n/NezumiRonin.java
index cd715b17499..100100f0c30 100644
--- a/Mage.Sets/src/mage/cards/n/NezumiRonin.java
+++ b/Mage.Sets/src/mage/cards/n/NezumiRonin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class NezumiRonin extends CardImpl {
+public final class NezumiRonin extends CardImpl {
public NezumiRonin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NezumiShadowWatcher.java b/Mage.Sets/src/mage/cards/n/NezumiShadowWatcher.java
index f9bbf31370e..a162c524d5e 100644
--- a/Mage.Sets/src/mage/cards/n/NezumiShadowWatcher.java
+++ b/Mage.Sets/src/mage/cards/n/NezumiShadowWatcher.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class NezumiShadowWatcher extends CardImpl {
+public final class NezumiShadowWatcher extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Ninja");
diff --git a/Mage.Sets/src/mage/cards/n/NezumiShortfang.java b/Mage.Sets/src/mage/cards/n/NezumiShortfang.java
index 211c19ffda3..a4c5333b622 100644
--- a/Mage.Sets/src/mage/cards/n/NezumiShortfang.java
+++ b/Mage.Sets/src/mage/cards/n/NezumiShortfang.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
/**
* @author LevelX2
*/
-public class NezumiShortfang extends CardImpl {
+public final class NezumiShortfang extends CardImpl {
public NezumiShortfang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NiallSilvain.java b/Mage.Sets/src/mage/cards/n/NiallSilvain.java
index 675539cdfc2..4acd5d0c7e9 100644
--- a/Mage.Sets/src/mage/cards/n/NiallSilvain.java
+++ b/Mage.Sets/src/mage/cards/n/NiallSilvain.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class NiallSilvain extends CardImpl {
+public final class NiallSilvain extends CardImpl {
public NiallSilvain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NiambiFaithfulHealer.java b/Mage.Sets/src/mage/cards/n/NiambiFaithfulHealer.java
index 03665920cdc..01f98d7e4fa 100644
--- a/Mage.Sets/src/mage/cards/n/NiambiFaithfulHealer.java
+++ b/Mage.Sets/src/mage/cards/n/NiambiFaithfulHealer.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author TheElk801
*/
-public class NiambiFaithfulHealer extends CardImpl {
+public final class NiambiFaithfulHealer extends CardImpl {
private final static FilterCard filter = new FilterCard("Teferi, Timebender");
diff --git a/Mage.Sets/src/mage/cards/n/NiblisOfDusk.java b/Mage.Sets/src/mage/cards/n/NiblisOfDusk.java
index d691c9f9588..9d573c5d4c8 100644
--- a/Mage.Sets/src/mage/cards/n/NiblisOfDusk.java
+++ b/Mage.Sets/src/mage/cards/n/NiblisOfDusk.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class NiblisOfDusk extends CardImpl {
+public final class NiblisOfDusk extends CardImpl {
public NiblisOfDusk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NiblisOfFrost.java b/Mage.Sets/src/mage/cards/n/NiblisOfFrost.java
index cfa61dc3511..ac6869cd50a 100644
--- a/Mage.Sets/src/mage/cards/n/NiblisOfFrost.java
+++ b/Mage.Sets/src/mage/cards/n/NiblisOfFrost.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class NiblisOfFrost extends CardImpl {
+public final class NiblisOfFrost extends CardImpl {
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creature an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/n/NiblisOfTheBreath.java b/Mage.Sets/src/mage/cards/n/NiblisOfTheBreath.java
index 8bac56bf589..fa2ad800ccb 100644
--- a/Mage.Sets/src/mage/cards/n/NiblisOfTheBreath.java
+++ b/Mage.Sets/src/mage/cards/n/NiblisOfTheBreath.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class NiblisOfTheBreath extends CardImpl {
+public final class NiblisOfTheBreath extends CardImpl {
public NiblisOfTheBreath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NiblisOfTheMist.java b/Mage.Sets/src/mage/cards/n/NiblisOfTheMist.java
index 11597f491c9..e073cb532de 100644
--- a/Mage.Sets/src/mage/cards/n/NiblisOfTheMist.java
+++ b/Mage.Sets/src/mage/cards/n/NiblisOfTheMist.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class NiblisOfTheMist extends CardImpl {
+public final class NiblisOfTheMist extends CardImpl {
public NiblisOfTheMist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NiblisOfTheUrn.java b/Mage.Sets/src/mage/cards/n/NiblisOfTheUrn.java
index 86c93e8796b..f455a37ccde 100644
--- a/Mage.Sets/src/mage/cards/n/NiblisOfTheUrn.java
+++ b/Mage.Sets/src/mage/cards/n/NiblisOfTheUrn.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class NiblisOfTheUrn extends CardImpl {
+public final class NiblisOfTheUrn extends CardImpl {
public NiblisOfTheUrn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NicolBolas.java b/Mage.Sets/src/mage/cards/n/NicolBolas.java
index 32cc0440753..b965054c120 100644
--- a/Mage.Sets/src/mage/cards/n/NicolBolas.java
+++ b/Mage.Sets/src/mage/cards/n/NicolBolas.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class NicolBolas extends CardImpl {
+public final class NicolBolas extends CardImpl {
public NicolBolas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}{B}{B}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java b/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java
index 5bd3a375aab..95ba9babc62 100644
--- a/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java
+++ b/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Will
*/
-public class NicolBolasGodPharaoh extends CardImpl {
+public final class NicolBolasGodPharaoh extends CardImpl {
private static final FilterPermanent opponentsNonlandPermanentsFilter = new FilterNonlandPermanent("non-land permanents your opponents control");
diff --git a/Mage.Sets/src/mage/cards/n/NicolBolasPlaneswalker.java b/Mage.Sets/src/mage/cards/n/NicolBolasPlaneswalker.java
index ddcb0d0ca90..6e57e1d4d4e 100644
--- a/Mage.Sets/src/mage/cards/n/NicolBolasPlaneswalker.java
+++ b/Mage.Sets/src/mage/cards/n/NicolBolasPlaneswalker.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author North
*/
-public class NicolBolasPlaneswalker extends CardImpl {
+public final class NicolBolasPlaneswalker extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature permanent");
diff --git a/Mage.Sets/src/mage/cards/n/NicolBolasTheDeceiver.java b/Mage.Sets/src/mage/cards/n/NicolBolasTheDeceiver.java
index f41f84cb8e5..319186de04a 100644
--- a/Mage.Sets/src/mage/cards/n/NicolBolasTheDeceiver.java
+++ b/Mage.Sets/src/mage/cards/n/NicolBolasTheDeceiver.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NicolBolasTheDeceiver extends CardImpl {
+public final class NicolBolasTheDeceiver extends CardImpl {
public NicolBolasTheDeceiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{5}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NightDay.java b/Mage.Sets/src/mage/cards/n/NightDay.java
index bcd4e8193b1..4372fd32557 100644
--- a/Mage.Sets/src/mage/cards/n/NightDay.java
+++ b/Mage.Sets/src/mage/cards/n/NightDay.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NightDay extends SplitCard {
+public final class NightDay extends SplitCard {
public NightDay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}", "{2}{W}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/n/NightDealings.java b/Mage.Sets/src/mage/cards/n/NightDealings.java
index af346496c5f..935573e2558 100644
--- a/Mage.Sets/src/mage/cards/n/NightDealings.java
+++ b/Mage.Sets/src/mage/cards/n/NightDealings.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author Loki
*/
-public class NightDealings extends CardImpl {
+public final class NightDealings extends CardImpl {
public NightDealings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightMarketAeronaut.java b/Mage.Sets/src/mage/cards/n/NightMarketAeronaut.java
index 74919d742c4..262783b981a 100644
--- a/Mage.Sets/src/mage/cards/n/NightMarketAeronaut.java
+++ b/Mage.Sets/src/mage/cards/n/NightMarketAeronaut.java
@@ -45,7 +45,7 @@ import mage.watchers.common.RevoltWatcher;
/**
* @author JRHerlehy
*/
-public class NightMarketAeronaut extends CardImpl {
+public final class NightMarketAeronaut extends CardImpl {
public NightMarketAeronaut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightMarketGuard.java b/Mage.Sets/src/mage/cards/n/NightMarketGuard.java
index 449ed5ea2d0..44f7ad93e5c 100644
--- a/Mage.Sets/src/mage/cards/n/NightMarketGuard.java
+++ b/Mage.Sets/src/mage/cards/n/NightMarketGuard.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class NightMarketGuard extends CardImpl {
+public final class NightMarketGuard extends CardImpl {
public NightMarketGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/n/NightMarketLookout.java b/Mage.Sets/src/mage/cards/n/NightMarketLookout.java
index 40794dd3440..dce149e4f09 100644
--- a/Mage.Sets/src/mage/cards/n/NightMarketLookout.java
+++ b/Mage.Sets/src/mage/cards/n/NightMarketLookout.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class NightMarketLookout extends CardImpl {
+public final class NightMarketLookout extends CardImpl {
public NightMarketLookout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightOfSoulsBetrayal.java b/Mage.Sets/src/mage/cards/n/NightOfSoulsBetrayal.java
index 702e4ee27af..b1cb9acbe83 100644
--- a/Mage.Sets/src/mage/cards/n/NightOfSoulsBetrayal.java
+++ b/Mage.Sets/src/mage/cards/n/NightOfSoulsBetrayal.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Loki
*/
-public class NightOfSoulsBetrayal extends CardImpl {
+public final class NightOfSoulsBetrayal extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("All creatures");
public NightOfSoulsBetrayal (UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/n/NightRevelers.java b/Mage.Sets/src/mage/cards/n/NightRevelers.java
index 4a0715383a2..e3b73628b35 100644
--- a/Mage.Sets/src/mage/cards/n/NightRevelers.java
+++ b/Mage.Sets/src/mage/cards/n/NightRevelers.java
@@ -45,7 +45,7 @@ import mage.filter.FilterPermanent;
*
* @author North
*/
-public class NightRevelers extends CardImpl {
+public final class NightRevelers extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.HUMAN, "Human");
diff --git a/Mage.Sets/src/mage/cards/n/NightSoil.java b/Mage.Sets/src/mage/cards/n/NightSoil.java
index abedc726f3b..6a49d8ecc3d 100644
--- a/Mage.Sets/src/mage/cards/n/NightSoil.java
+++ b/Mage.Sets/src/mage/cards/n/NightSoil.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author LevelX2
*/
-public class NightSoil extends CardImpl {
+public final class NightSoil extends CardImpl {
public NightSoil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NightTerrors.java b/Mage.Sets/src/mage/cards/n/NightTerrors.java
index b4092b3f7de..1d48917c451 100644
--- a/Mage.Sets/src/mage/cards/n/NightTerrors.java
+++ b/Mage.Sets/src/mage/cards/n/NightTerrors.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class NightTerrors extends CardImpl {
+public final class NightTerrors extends CardImpl {
public NightTerrors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightbirdsClutches.java b/Mage.Sets/src/mage/cards/n/NightbirdsClutches.java
index 0e40b144a2b..da871b78127 100644
--- a/Mage.Sets/src/mage/cards/n/NightbirdsClutches.java
+++ b/Mage.Sets/src/mage/cards/n/NightbirdsClutches.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class NightbirdsClutches extends CardImpl {
+public final class NightbirdsClutches extends CardImpl {
public NightbirdsClutches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NightfallPredator.java b/Mage.Sets/src/mage/cards/n/NightfallPredator.java
index e64a86bce8b..204ee41a6c7 100644
--- a/Mage.Sets/src/mage/cards/n/NightfallPredator.java
+++ b/Mage.Sets/src/mage/cards/n/NightfallPredator.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class NightfallPredator extends CardImpl {
+public final class NightfallPredator extends CardImpl {
public NightfallPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/n/NightfireGiant.java b/Mage.Sets/src/mage/cards/n/NightfireGiant.java
index 1e3a74cf8d1..3a563a0b2da 100644
--- a/Mage.Sets/src/mage/cards/n/NightfireGiant.java
+++ b/Mage.Sets/src/mage/cards/n/NightfireGiant.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class NightfireGiant extends CardImpl {
+public final class NightfireGiant extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Mountain");
diff --git a/Mage.Sets/src/mage/cards/n/NightguardPatrol.java b/Mage.Sets/src/mage/cards/n/NightguardPatrol.java
index dd0d8ec311f..75b0f0f96f3 100644
--- a/Mage.Sets/src/mage/cards/n/NightguardPatrol.java
+++ b/Mage.Sets/src/mage/cards/n/NightguardPatrol.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class NightguardPatrol extends CardImpl {
+public final class NightguardPatrol extends CardImpl {
public NightguardPatrol (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/Nighthaze.java b/Mage.Sets/src/mage/cards/n/Nighthaze.java
index b4d13cbf6af..f4a1d271f3a 100644
--- a/Mage.Sets/src/mage/cards/n/Nighthaze.java
+++ b/Mage.Sets/src/mage/cards/n/Nighthaze.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Nighthaze extends CardImpl {
+public final class Nighthaze extends CardImpl {
public Nighthaze (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Nighthowler.java b/Mage.Sets/src/mage/cards/n/Nighthowler.java
index b3ec05b9864..fce7315fe93 100644
--- a/Mage.Sets/src/mage/cards/n/Nighthowler.java
+++ b/Mage.Sets/src/mage/cards/n/Nighthowler.java
@@ -49,7 +49,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LevelX2
*/
-public class Nighthowler extends CardImpl {
+public final class Nighthowler extends CardImpl {
public Nighthowler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/Nightmare.java b/Mage.Sets/src/mage/cards/n/Nightmare.java
index 2eaf737afe2..1e3571a0979 100644
--- a/Mage.Sets/src/mage/cards/n/Nightmare.java
+++ b/Mage.Sets/src/mage/cards/n/Nightmare.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class Nightmare extends CardImpl {
+public final class Nightmare extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Swamps you control");
diff --git a/Mage.Sets/src/mage/cards/n/NightmareIncursion.java b/Mage.Sets/src/mage/cards/n/NightmareIncursion.java
index 689ce01e66d..0ad6dcf7cdc 100644
--- a/Mage.Sets/src/mage/cards/n/NightmareIncursion.java
+++ b/Mage.Sets/src/mage/cards/n/NightmareIncursion.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class NightmareIncursion extends CardImpl {
+public final class NightmareIncursion extends CardImpl {
public NightmareIncursion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightmareLash.java b/Mage.Sets/src/mage/cards/n/NightmareLash.java
index d433c431b67..a1fd58d3747 100644
--- a/Mage.Sets/src/mage/cards/n/NightmareLash.java
+++ b/Mage.Sets/src/mage/cards/n/NightmareLash.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Loki
*/
-public class NightmareLash extends CardImpl {
+public final class NightmareLash extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control");
static {
diff --git a/Mage.Sets/src/mage/cards/n/NightmareVoid.java b/Mage.Sets/src/mage/cards/n/NightmareVoid.java
index 40d01d33177..78b83d0d213 100644
--- a/Mage.Sets/src/mage/cards/n/NightmareVoid.java
+++ b/Mage.Sets/src/mage/cards/n/NightmareVoid.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author jonubuu
*/
-public class NightmareVoid extends CardImpl {
+public final class NightmareVoid extends CardImpl {
public NightmareVoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightmarishEnd.java b/Mage.Sets/src/mage/cards/n/NightmarishEnd.java
index a0ac09afa18..b2818c1a0d0 100644
--- a/Mage.Sets/src/mage/cards/n/NightmarishEnd.java
+++ b/Mage.Sets/src/mage/cards/n/NightmarishEnd.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NightmarishEnd extends CardImpl {
+public final class NightmarishEnd extends CardImpl {
public NightmarishEnd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightsWhisper.java b/Mage.Sets/src/mage/cards/n/NightsWhisper.java
index 5b1ed7abfc7..61a5abea934 100644
--- a/Mage.Sets/src/mage/cards/n/NightsWhisper.java
+++ b/Mage.Sets/src/mage/cards/n/NightsWhisper.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author jonubuu
*/
-public class NightsWhisper extends CardImpl {
+public final class NightsWhisper extends CardImpl {
public NightsWhisper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightscapeApprentice.java b/Mage.Sets/src/mage/cards/n/NightscapeApprentice.java
index f8224777de7..5432206e13a 100644
--- a/Mage.Sets/src/mage/cards/n/NightscapeApprentice.java
+++ b/Mage.Sets/src/mage/cards/n/NightscapeApprentice.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class NightscapeApprentice extends CardImpl {
+public final class NightscapeApprentice extends CardImpl {
public NightscapeApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightscapeBattlemage.java b/Mage.Sets/src/mage/cards/n/NightscapeBattlemage.java
index 0fefb009c1a..fc4b1ae174a 100644
--- a/Mage.Sets/src/mage/cards/n/NightscapeBattlemage.java
+++ b/Mage.Sets/src/mage/cards/n/NightscapeBattlemage.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetLandPermanent;
* @author LoneFox
*/
-public class NightscapeBattlemage extends CardImpl {
+public final class NightscapeBattlemage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("up to two nonblack creatures");
diff --git a/Mage.Sets/src/mage/cards/n/NightscapeFamiliar.java b/Mage.Sets/src/mage/cards/n/NightscapeFamiliar.java
index fa23d42ccf6..8fa2a624d8f 100644
--- a/Mage.Sets/src/mage/cards/n/NightscapeFamiliar.java
+++ b/Mage.Sets/src/mage/cards/n/NightscapeFamiliar.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class NightscapeFamiliar extends CardImpl {
+public final class NightscapeFamiliar extends CardImpl {
private static final FilterCard filter = new FilterCard("Blue spells and red spells");
diff --git a/Mage.Sets/src/mage/cards/n/NightscapeMaster.java b/Mage.Sets/src/mage/cards/n/NightscapeMaster.java
index 68c9f47c58f..24c4742a393 100644
--- a/Mage.Sets/src/mage/cards/n/NightscapeMaster.java
+++ b/Mage.Sets/src/mage/cards/n/NightscapeMaster.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author michael.napoleon@gmail.com
*/
-public class NightscapeMaster extends CardImpl {
+public final class NightscapeMaster extends CardImpl {
public NightscapeMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightshadeAssassin.java b/Mage.Sets/src/mage/cards/n/NightshadeAssassin.java
index 7ea30e38b53..26ce0cf720a 100644
--- a/Mage.Sets/src/mage/cards/n/NightshadeAssassin.java
+++ b/Mage.Sets/src/mage/cards/n/NightshadeAssassin.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NightshadeAssassin extends CardImpl {
+public final class NightshadeAssassin extends CardImpl {
public NightshadeAssassin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightshadePeddler.java b/Mage.Sets/src/mage/cards/n/NightshadePeddler.java
index 3c39d39a3c8..be0e3d12008 100644
--- a/Mage.Sets/src/mage/cards/n/NightshadePeddler.java
+++ b/Mage.Sets/src/mage/cards/n/NightshadePeddler.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class NightshadePeddler extends CardImpl {
+public final class NightshadePeddler extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, both creatures have deathtouch";
diff --git a/Mage.Sets/src/mage/cards/n/NightshadeSchemers.java b/Mage.Sets/src/mage/cards/n/NightshadeSchemers.java
index 5f3302c3dfe..43873550413 100644
--- a/Mage.Sets/src/mage/cards/n/NightshadeSchemers.java
+++ b/Mage.Sets/src/mage/cards/n/NightshadeSchemers.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class NightshadeSchemers extends CardImpl {
+public final class NightshadeSchemers extends CardImpl {
public NightshadeSchemers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightshadeStinger.java b/Mage.Sets/src/mage/cards/n/NightshadeStinger.java
index 7662547c982..6a6e1c5c358 100644
--- a/Mage.Sets/src/mage/cards/n/NightshadeStinger.java
+++ b/Mage.Sets/src/mage/cards/n/NightshadeStinger.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class NightshadeStinger extends CardImpl {
+public final class NightshadeStinger extends CardImpl {
public NightshadeStinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightskyMimic.java b/Mage.Sets/src/mage/cards/n/NightskyMimic.java
index 268d86b9aef..a0cc151da8b 100644
--- a/Mage.Sets/src/mage/cards/n/NightskyMimic.java
+++ b/Mage.Sets/src/mage/cards/n/NightskyMimic.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author jeffwadsworth
*
*/
-public class NightskyMimic extends CardImpl {
+public final class NightskyMimic extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a spell that's both black and green");
diff --git a/Mage.Sets/src/mage/cards/n/Nightsnare.java b/Mage.Sets/src/mage/cards/n/Nightsnare.java
index d818efae858..c9a1f6eef2e 100644
--- a/Mage.Sets/src/mage/cards/n/Nightsnare.java
+++ b/Mage.Sets/src/mage/cards/n/Nightsnare.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class Nightsnare extends CardImpl {
+public final class Nightsnare extends CardImpl {
public Nightsnare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightsoilKami.java b/Mage.Sets/src/mage/cards/n/NightsoilKami.java
index 0348984f979..68d9298943f 100644
--- a/Mage.Sets/src/mage/cards/n/NightsoilKami.java
+++ b/Mage.Sets/src/mage/cards/n/NightsoilKami.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class NightsoilKami extends CardImpl {
+public final class NightsoilKami extends CardImpl {
public NightsoilKami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/Nightspider.java b/Mage.Sets/src/mage/cards/n/Nightspider.java
index 5d0babd94a6..43c7319f22e 100644
--- a/Mage.Sets/src/mage/cards/n/Nightspider.java
+++ b/Mage.Sets/src/mage/cards/n/Nightspider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class Nightspider extends CardImpl {
+public final class Nightspider extends CardImpl {
public Nightspider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NightstalkerEngine.java b/Mage.Sets/src/mage/cards/n/NightstalkerEngine.java
index 923dfb23b6a..39670b7fc2b 100644
--- a/Mage.Sets/src/mage/cards/n/NightstalkerEngine.java
+++ b/Mage.Sets/src/mage/cards/n/NightstalkerEngine.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author fireshoes
*/
-public class NightstalkerEngine extends CardImpl {
+public final class NightstalkerEngine extends CardImpl {
public NightstalkerEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightveilSpecter.java b/Mage.Sets/src/mage/cards/n/NightveilSpecter.java
index 42061a3773d..9ff5b2f25a5 100644
--- a/Mage.Sets/src/mage/cards/n/NightveilSpecter.java
+++ b/Mage.Sets/src/mage/cards/n/NightveilSpecter.java
@@ -63,7 +63,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class NightveilSpecter extends CardImpl {
+public final class NightveilSpecter extends CardImpl {
public NightveilSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U/B}{U/B}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/n/NightwindGlider.java b/Mage.Sets/src/mage/cards/n/NightwindGlider.java
index f50796f37ee..19b363bdedb 100644
--- a/Mage.Sets/src/mage/cards/n/NightwindGlider.java
+++ b/Mage.Sets/src/mage/cards/n/NightwindGlider.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class NightwindGlider extends CardImpl {
+public final class NightwindGlider extends CardImpl {
public NightwindGlider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NightwingShade.java b/Mage.Sets/src/mage/cards/n/NightwingShade.java
index a776536e85b..b62a00340c4 100644
--- a/Mage.Sets/src/mage/cards/n/NightwingShade.java
+++ b/Mage.Sets/src/mage/cards/n/NightwingShade.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class NightwingShade extends CardImpl {
+public final class NightwingShade extends CardImpl {
public NightwingShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NihilSpellbomb.java b/Mage.Sets/src/mage/cards/n/NihilSpellbomb.java
index 58d4cf794ed..ac8fdb50d61 100644
--- a/Mage.Sets/src/mage/cards/n/NihilSpellbomb.java
+++ b/Mage.Sets/src/mage/cards/n/NihilSpellbomb.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class NihilSpellbomb extends CardImpl {
+public final class NihilSpellbomb extends CardImpl {
public NihilSpellbomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/n/NihilisticGlee.java b/Mage.Sets/src/mage/cards/n/NihilisticGlee.java
new file mode 100644
index 00000000000..56f39219901
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/n/NihilisticGlee.java
@@ -0,0 +1,88 @@
+/*
+ * 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.n;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.condition.common.HellbentCondition;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.costs.common.PayLifeCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.decorator.ConditionalActivatedAbility;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.abilities.effects.common.LoseLifeTargetEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.AbilityWord;
+import mage.constants.CardType;
+import mage.constants.Zone;
+import mage.target.common.TargetOpponent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class NihilisticGlee extends CardImpl {
+
+ public NihilisticGlee(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
+
+ // {2}{B}, Discard a card: Target opponent loses 1 life and you gain 1 life.
+ Ability ability = new SimpleActivatedAbility(
+ new LoseLifeTargetEffect(1),
+ new ManaCostsImpl("{2}{B}")
+ );
+ ability.addEffect(new GainLifeEffect(1).setText("and you gain 1 life"));
+ ability.addCost(new DiscardCardCost());
+ ability.addTarget(new TargetOpponent());
+ this.addAbility(ability);
+
+ // Hellbent - {1}, Pay 2 life: Draw a card. Activate this ability only if you have no cards in hand.
+ ability = new ConditionalActivatedAbility(
+ Zone.BATTLEFIELD,
+ new DrawCardSourceControllerEffect(1),
+ new GenericManaCost(1),
+ HellbentCondition.instance
+ );
+ ability.addCost(new PayLifeCost(2));
+ ability.setAbilityWord(AbilityWord.HELLBENT);
+ this.addAbility(ability);
+ }
+
+ public NihilisticGlee(final NihilisticGlee card) {
+ super(card);
+ }
+
+ @Override
+ public NihilisticGlee copy() {
+ return new NihilisticGlee(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/n/Nihilith.java b/Mage.Sets/src/mage/cards/n/Nihilith.java
index beafa47526d..8e685cf72d1 100644
--- a/Mage.Sets/src/mage/cards/n/Nihilith.java
+++ b/Mage.Sets/src/mage/cards/n/Nihilith.java
@@ -50,7 +50,7 @@ import mage.filter.FilterCard;
*
* @author LevelX2
*/
-public class Nihilith extends CardImpl {
+public final class Nihilith extends CardImpl {
public Nihilith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NikkoOnna.java b/Mage.Sets/src/mage/cards/n/NikkoOnna.java
index ce44cf4578c..fe47c717d58 100644
--- a/Mage.Sets/src/mage/cards/n/NikkoOnna.java
+++ b/Mage.Sets/src/mage/cards/n/NikkoOnna.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetEnchantmentPermanent;
/**
* @author Loki
*/
-public class NikkoOnna extends CardImpl {
+public final class NikkoOnna extends CardImpl {
public NikkoOnna(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NimAbomination.java b/Mage.Sets/src/mage/cards/n/NimAbomination.java
index 43db9897396..6272b8a3c70 100644
--- a/Mage.Sets/src/mage/cards/n/NimAbomination.java
+++ b/Mage.Sets/src/mage/cards/n/NimAbomination.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
* @author LoneFox
*
*/
-public class NimAbomination extends CardImpl {
+public final class NimAbomination extends CardImpl {
public NimAbomination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NimDeathmantle.java b/Mage.Sets/src/mage/cards/n/NimDeathmantle.java
index 968ba661594..206af3c196c 100644
--- a/Mage.Sets/src/mage/cards/n/NimDeathmantle.java
+++ b/Mage.Sets/src/mage/cards/n/NimDeathmantle.java
@@ -64,7 +64,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author nantuko
*/
-public class NimDeathmantle extends CardImpl {
+public final class NimDeathmantle extends CardImpl {
public NimDeathmantle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/n/NimDevourer.java b/Mage.Sets/src/mage/cards/n/NimDevourer.java
index 6320b7ab3ae..1977b1358af 100644
--- a/Mage.Sets/src/mage/cards/n/NimDevourer.java
+++ b/Mage.Sets/src/mage/cards/n/NimDevourer.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class NimDevourer extends CardImpl {
+public final class NimDevourer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
diff --git a/Mage.Sets/src/mage/cards/n/NimGrotesque.java b/Mage.Sets/src/mage/cards/n/NimGrotesque.java
index 4cd061ab357..289f264864e 100644
--- a/Mage.Sets/src/mage/cards/n/NimGrotesque.java
+++ b/Mage.Sets/src/mage/cards/n/NimGrotesque.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author Plopman
*/
-public class NimGrotesque extends CardImpl {
+public final class NimGrotesque extends CardImpl {
public NimGrotesque(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NimLasher.java b/Mage.Sets/src/mage/cards/n/NimLasher.java
index 23771cdbaf2..326b333e7f7 100644
--- a/Mage.Sets/src/mage/cards/n/NimLasher.java
+++ b/Mage.Sets/src/mage/cards/n/NimLasher.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
/**
* @author Loki
*/
-public class NimLasher extends CardImpl {
+public final class NimLasher extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
diff --git a/Mage.Sets/src/mage/cards/n/NimReplica.java b/Mage.Sets/src/mage/cards/n/NimReplica.java
index 18000a8764a..37a07f8d21f 100644
--- a/Mage.Sets/src/mage/cards/n/NimReplica.java
+++ b/Mage.Sets/src/mage/cards/n/NimReplica.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class NimReplica extends CardImpl {
+public final class NimReplica extends CardImpl {
public NimReplica(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/n/NimShambler.java b/Mage.Sets/src/mage/cards/n/NimShambler.java
index 76d986f8d4c..0e20e0a4471 100644
--- a/Mage.Sets/src/mage/cards/n/NimShambler.java
+++ b/Mage.Sets/src/mage/cards/n/NimShambler.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class NimShambler extends CardImpl {
+public final class NimShambler extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
diff --git a/Mage.Sets/src/mage/cards/n/NimShrieker.java b/Mage.Sets/src/mage/cards/n/NimShrieker.java
index 4dd205a1031..af9f01734a0 100644
--- a/Mage.Sets/src/mage/cards/n/NimShrieker.java
+++ b/Mage.Sets/src/mage/cards/n/NimShrieker.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
/**
* @author Loki
*/
-public class NimShrieker extends CardImpl {
+public final class NimShrieker extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
diff --git a/Mage.Sets/src/mage/cards/n/NimanaSellSword.java b/Mage.Sets/src/mage/cards/n/NimanaSellSword.java
index 623aa906da7..cd879375491 100644
--- a/Mage.Sets/src/mage/cards/n/NimanaSellSword.java
+++ b/Mage.Sets/src/mage/cards/n/NimanaSellSword.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class NimanaSellSword extends CardImpl {
+public final class NimanaSellSword extends CardImpl {
public NimanaSellSword(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NimbleBladeKhenra.java b/Mage.Sets/src/mage/cards/n/NimbleBladeKhenra.java
index 92a1181dbac..d6ca19439e2 100644
--- a/Mage.Sets/src/mage/cards/n/NimbleBladeKhenra.java
+++ b/Mage.Sets/src/mage/cards/n/NimbleBladeKhenra.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class NimbleBladeKhenra extends CardImpl {
+public final class NimbleBladeKhenra extends CardImpl {
public NimbleBladeKhenra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NimbleInnovator.java b/Mage.Sets/src/mage/cards/n/NimbleInnovator.java
index c39c8521637..8c53c657d60 100644
--- a/Mage.Sets/src/mage/cards/n/NimbleInnovator.java
+++ b/Mage.Sets/src/mage/cards/n/NimbleInnovator.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class NimbleInnovator extends CardImpl {
+public final class NimbleInnovator extends CardImpl {
public NimbleInnovator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NimbleMongoose.java b/Mage.Sets/src/mage/cards/n/NimbleMongoose.java
index 04beb8864b8..6e3c569744b 100644
--- a/Mage.Sets/src/mage/cards/n/NimbleMongoose.java
+++ b/Mage.Sets/src/mage/cards/n/NimbleMongoose.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author jonubuu
*/
-public class NimbleMongoose extends CardImpl {
+public final class NimbleMongoose extends CardImpl {
public NimbleMongoose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NimbleObstructionist.java b/Mage.Sets/src/mage/cards/n/NimbleObstructionist.java
index d8ed5a0962e..83022193fe2 100644
--- a/Mage.Sets/src/mage/cards/n/NimbleObstructionist.java
+++ b/Mage.Sets/src/mage/cards/n/NimbleObstructionist.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetActivatedOrTriggeredAbility;
*
* @author caldover
*/
-public class NimbleObstructionist extends CardImpl {
+public final class NimbleObstructionist extends CardImpl {
private static final FilterStackObject filter = new FilterStackObject("activated or triggered ability you don't control");
static {
diff --git a/Mage.Sets/src/mage/cards/n/NimbusChampion.java b/Mage.Sets/src/mage/cards/n/NimbusChampion.java
new file mode 100644
index 00000000000..ad3ce93b0a4
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/n/NimbusChampion.java
@@ -0,0 +1,110 @@
+/*
+ * 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.n;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.AttacksTriggeredAbility;
+import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.ReturnToHandTargetEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.filter.common.FilterTeamPermanent;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class NimbusChampion extends CardImpl {
+
+ public NimbusChampion(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}");
+
+ this.subtype.add(SubType.AVATAR);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(4);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // Whenever Nimbus Champion attacks, you may return target creature to its owner's hand if that creature's power is less than or equal to the number of Warriors your team control.
+ Ability ability = new AttacksTriggeredAbility(new NimbusChampionEffect(), true);
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public NimbusChampion(final NimbusChampion card) {
+ super(card);
+ }
+
+ @Override
+ public NimbusChampion copy() {
+ return new NimbusChampion(this);
+ }
+}
+
+class NimbusChampionEffect extends OneShotEffect {
+
+ private static final FilterTeamPermanent filter = new FilterTeamPermanent(SubType.WARRIOR, "Warriors your team controls");
+
+ NimbusChampionEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "return target creature to its owner's hand if "
+ + "that creature's power is less than or equal to "
+ + "the number of Warriors your team control.";
+ }
+
+ NimbusChampionEffect(final NimbusChampionEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public NimbusChampionEffect copy() {
+ return new NimbusChampionEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent creature = game.getPermanent(source.getFirstTarget());
+ if (creature == null || creature.getPower().getValue()
+ > new PermanentsOnBattlefieldCount(filter).calculate(game, source, this)) {
+ return false;
+ }
+ return new ReturnToHandTargetEffect().apply(game, source);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/n/NimbusMaze.java b/Mage.Sets/src/mage/cards/n/NimbusMaze.java
index 790d6c886dc..6f6a816b059 100644
--- a/Mage.Sets/src/mage/cards/n/NimbusMaze.java
+++ b/Mage.Sets/src/mage/cards/n/NimbusMaze.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author dustinconrad
*/
-public class NimbusMaze extends CardImpl {
+public final class NimbusMaze extends CardImpl {
private static final FilterControlledPermanent controlIsland = new FilterControlledPermanent("you control an Island");
private static final FilterControlledPermanent controlPlains = new FilterControlledPermanent("you control a Plains");
diff --git a/Mage.Sets/src/mage/cards/n/NimbusNaiad.java b/Mage.Sets/src/mage/cards/n/NimbusNaiad.java
index ddc52b279d6..6c8f25d4879 100644
--- a/Mage.Sets/src/mage/cards/n/NimbusNaiad.java
+++ b/Mage.Sets/src/mage/cards/n/NimbusNaiad.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class NimbusNaiad extends CardImpl {
+public final class NimbusNaiad extends CardImpl {
public NimbusNaiad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NimbusOfTheIsles.java b/Mage.Sets/src/mage/cards/n/NimbusOfTheIsles.java
index e39867b2e14..3a5715ebc24 100644
--- a/Mage.Sets/src/mage/cards/n/NimbusOfTheIsles.java
+++ b/Mage.Sets/src/mage/cards/n/NimbusOfTheIsles.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class NimbusOfTheIsles extends CardImpl {
+public final class NimbusOfTheIsles extends CardImpl {
public NimbusOfTheIsles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NimbusSwimmer.java b/Mage.Sets/src/mage/cards/n/NimbusSwimmer.java
index 5e67b928ec1..d85606cb56d 100644
--- a/Mage.Sets/src/mage/cards/n/NimbusSwimmer.java
+++ b/Mage.Sets/src/mage/cards/n/NimbusSwimmer.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class NimbusSwimmer extends CardImpl {
+public final class NimbusSwimmer extends CardImpl {
public NimbusSwimmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NimbusWings.java b/Mage.Sets/src/mage/cards/n/NimbusWings.java
index bd67b9204a8..2bd683b7282 100644
--- a/Mage.Sets/src/mage/cards/n/NimbusWings.java
+++ b/Mage.Sets/src/mage/cards/n/NimbusWings.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class NimbusWings extends CardImpl {
+public final class NimbusWings extends CardImpl {
public NimbusWings (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NinThePainArtist.java b/Mage.Sets/src/mage/cards/n/NinThePainArtist.java
index 98c81d51a5a..587a81afee0 100644
--- a/Mage.Sets/src/mage/cards/n/NinThePainArtist.java
+++ b/Mage.Sets/src/mage/cards/n/NinThePainArtist.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class NinThePainArtist extends CardImpl {
+public final class NinThePainArtist extends CardImpl {
public NinThePainArtist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NineRingedBo.java b/Mage.Sets/src/mage/cards/n/NineRingedBo.java
index 66a20e22ad8..0359b8640d4 100644
--- a/Mage.Sets/src/mage/cards/n/NineRingedBo.java
+++ b/Mage.Sets/src/mage/cards/n/NineRingedBo.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class NineRingedBo extends CardImpl {
+public final class NineRingedBo extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("spirit");
diff --git a/Mage.Sets/src/mage/cards/n/NinjaOfTheDeepHours.java b/Mage.Sets/src/mage/cards/n/NinjaOfTheDeepHours.java
index 144963ae7aa..a38fffca0ea 100644
--- a/Mage.Sets/src/mage/cards/n/NinjaOfTheDeepHours.java
+++ b/Mage.Sets/src/mage/cards/n/NinjaOfTheDeepHours.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class NinjaOfTheDeepHours extends CardImpl {
+public final class NinjaOfTheDeepHours extends CardImpl {
public NinjaOfTheDeepHours(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NinthBridgePatrol.java b/Mage.Sets/src/mage/cards/n/NinthBridgePatrol.java
index 09928a8c67a..469418fe42b 100644
--- a/Mage.Sets/src/mage/cards/n/NinthBridgePatrol.java
+++ b/Mage.Sets/src/mage/cards/n/NinthBridgePatrol.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class NinthBridgePatrol extends CardImpl {
+public final class NinthBridgePatrol extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/n/NipGwyllion.java b/Mage.Sets/src/mage/cards/n/NipGwyllion.java
index 6a075621e83..e0917122ca2 100644
--- a/Mage.Sets/src/mage/cards/n/NipGwyllion.java
+++ b/Mage.Sets/src/mage/cards/n/NipGwyllion.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class NipGwyllion extends CardImpl {
+public final class NipGwyllion extends CardImpl {
public NipGwyllion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W/B}");
diff --git a/Mage.Sets/src/mage/cards/n/NirkanaAssassin.java b/Mage.Sets/src/mage/cards/n/NirkanaAssassin.java
index 130797b6dc4..c4daa676049 100644
--- a/Mage.Sets/src/mage/cards/n/NirkanaAssassin.java
+++ b/Mage.Sets/src/mage/cards/n/NirkanaAssassin.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class NirkanaAssassin extends CardImpl {
+public final class NirkanaAssassin extends CardImpl {
public NirkanaAssassin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NirkanaCutthroat.java b/Mage.Sets/src/mage/cards/n/NirkanaCutthroat.java
index a3f4d2530a0..b1c8aa9a337 100644
--- a/Mage.Sets/src/mage/cards/n/NirkanaCutthroat.java
+++ b/Mage.Sets/src/mage/cards/n/NirkanaCutthroat.java
@@ -47,7 +47,7 @@ import mage.constants.SubType;
*
* @author Loki, noxx
*/
-public class NirkanaCutthroat extends LevelerCard {
+public final class NirkanaCutthroat extends LevelerCard {
public NirkanaCutthroat (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NirkanaRevenant.java b/Mage.Sets/src/mage/cards/n/NirkanaRevenant.java
index 2e16ec36568..26f2197f07c 100644
--- a/Mage.Sets/src/mage/cards/n/NirkanaRevenant.java
+++ b/Mage.Sets/src/mage/cards/n/NirkanaRevenant.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class NirkanaRevenant extends CardImpl {
+public final class NirkanaRevenant extends CardImpl {
public NirkanaRevenant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NissaGenesisMage.java b/Mage.Sets/src/mage/cards/n/NissaGenesisMage.java
index a6417b66d6e..3d260e7fd06 100644
--- a/Mage.Sets/src/mage/cards/n/NissaGenesisMage.java
+++ b/Mage.Sets/src/mage/cards/n/NissaGenesisMage.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class NissaGenesisMage extends CardImpl {
+public final class NissaGenesisMage extends CardImpl {
private static final FilterCard filter = new FilterCard("any number of creature and/or land cards");
diff --git a/Mage.Sets/src/mage/cards/n/NissaNaturesArtisan.java b/Mage.Sets/src/mage/cards/n/NissaNaturesArtisan.java
index 9611d76125d..346629ba230 100644
--- a/Mage.Sets/src/mage/cards/n/NissaNaturesArtisan.java
+++ b/Mage.Sets/src/mage/cards/n/NissaNaturesArtisan.java
@@ -59,7 +59,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class NissaNaturesArtisan extends CardImpl {
+public final class NissaNaturesArtisan extends CardImpl {
public NissaNaturesArtisan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NissaRevane.java b/Mage.Sets/src/mage/cards/n/NissaRevane.java
index 71214d355a3..553272b40f5 100644
--- a/Mage.Sets/src/mage/cards/n/NissaRevane.java
+++ b/Mage.Sets/src/mage/cards/n/NissaRevane.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author maurer.it_at_gmail.com
*/
-public class NissaRevane extends CardImpl {
+public final class NissaRevane extends CardImpl {
private static final FilterCard nissasChosenFilter = new FilterCard("card named Nissa's Chosen");
private static final FilterCard elfFilter = new FilterCard("Elf creature cards");
diff --git a/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java b/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java
index 99b5bbf9310..27ceb9f3676 100644
--- a/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java
+++ b/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class NissaSageAnimist extends CardImpl {
+public final class NissaSageAnimist extends CardImpl {
public NissaSageAnimist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "");
diff --git a/Mage.Sets/src/mage/cards/n/NissaStewardOfElements.java b/Mage.Sets/src/mage/cards/n/NissaStewardOfElements.java
index 1b827c9bdbc..65053cdcec2 100644
--- a/Mage.Sets/src/mage/cards/n/NissaStewardOfElements.java
+++ b/Mage.Sets/src/mage/cards/n/NissaStewardOfElements.java
@@ -51,7 +51,6 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
import mage.game.Game;
import mage.game.permanent.token.TokenImpl;
-import mage.game.permanent.token.Token;
import mage.players.Player;
import mage.target.TargetPermanent;
@@ -59,7 +58,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class NissaStewardOfElements extends CardImpl {
+public final class NissaStewardOfElements extends CardImpl {
public NissaStewardOfElements(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{X}{G}{U}");
@@ -117,8 +116,8 @@ class NissaStewardOfElementsEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- if (player == null) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
return false;
}
int count = 1 + new CountersSourceCount(CounterType.LOYALTY).calculate(game, source, this);
@@ -126,15 +125,12 @@ class NissaStewardOfElementsEffect extends OneShotEffect {
filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE),
new CardTypePredicate(CardType.LAND)));
filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, count));
- Card card = player.getLibrary().getFromTop(game);
+ Card card = controller.getLibrary().getFromTop(game);
if (card != null) {
- Cards cards = new CardsImpl();
- cards.add(card);
- player.lookAtCards("Nissa, Steward of Elements", cards, game);
+ controller.lookAtCards(source, null, new CardsImpl(card), game);
if (filter.match(card, game)) {
- String message = "Put " + card.getName() + " onto the battlefield?";
- if (player.chooseUse(outcome, message, source, game)) {
- return card.putOntoBattlefield(game, Zone.LIBRARY, source.getSourceId(), source.getControllerId(), false);
+ if (controller.chooseUse(outcome, "Put " + card.getName() + " onto the battlefield?", source, game)) {
+ controller.moveCards(card, Zone.BATTLEFIELD, source, game);
}
}
}
@@ -153,6 +149,7 @@ class NissaStewardOfElementsToken extends TokenImpl {
this.addAbility(FlyingAbility.getInstance());
this.addAbility(HasteAbility.getInstance());
}
+
public NissaStewardOfElementsToken(final NissaStewardOfElementsToken token) {
super(token);
}
diff --git a/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java b/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java
index f65be76d662..8108f16aad6 100644
--- a/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java
+++ b/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class NissaVastwoodSeer extends CardImpl {
+public final class NissaVastwoodSeer extends CardImpl {
private static final FilterCard filter = new FilterCard("basic Forest card");
static {
diff --git a/Mage.Sets/src/mage/cards/n/NissaVitalForce.java b/Mage.Sets/src/mage/cards/n/NissaVitalForce.java
index 1871a59af5d..d583081640e 100644
--- a/Mage.Sets/src/mage/cards/n/NissaVitalForce.java
+++ b/Mage.Sets/src/mage/cards/n/NissaVitalForce.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class NissaVitalForce extends CardImpl {
+public final class NissaVitalForce extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("land you control");
diff --git a/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java b/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java
index 4e30071d2b0..abd9db1947b 100644
--- a/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java
+++ b/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.PlantToken;
*
* @author fireshoes
*/
-public class NissaVoiceOfZendikar extends CardImpl {
+public final class NissaVoiceOfZendikar extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("lands you control");
diff --git a/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java
index 2962d44c1c4..259623b02b5 100644
--- a/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java
+++ b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java
@@ -58,7 +58,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class NissaWorldwaker extends CardImpl {
+public final class NissaWorldwaker extends CardImpl {
private static final FilterPermanent filterForest = new FilterPermanent(SubType.FOREST, "Forest");
@@ -115,7 +115,7 @@ class NissaWorldwakerSearchEffect extends OneShotEffect {
if (controller == null) {
return false;
}
- TargetCardInLibrary target = new TargetCardInLibrary(0, Integer.MAX_VALUE, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, game)) {
if (!target.getTargets().isEmpty()) {
for (UUID cardId : target.getTargets()) {
diff --git a/Mage.Sets/src/mage/cards/n/NissasChosen.java b/Mage.Sets/src/mage/cards/n/NissasChosen.java
index 729e7949328..e2f3036acee 100644
--- a/Mage.Sets/src/mage/cards/n/NissasChosen.java
+++ b/Mage.Sets/src/mage/cards/n/NissasChosen.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author maurer.it_at_gmail.com
*/
-public class NissasChosen extends CardImpl {
+public final class NissasChosen extends CardImpl {
public NissasChosen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NissasDefeat.java b/Mage.Sets/src/mage/cards/n/NissasDefeat.java
index ba0ab90e5a3..1dcefb80602 100644
--- a/Mage.Sets/src/mage/cards/n/NissasDefeat.java
+++ b/Mage.Sets/src/mage/cards/n/NissasDefeat.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class NissasDefeat extends CardImpl {
+public final class NissasDefeat extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent("Forest, green enchantment, or green planeswalker");
diff --git a/Mage.Sets/src/mage/cards/n/NissasEncouragement.java b/Mage.Sets/src/mage/cards/n/NissasEncouragement.java
index 3f902d16d49..c7966eff12f 100644
--- a/Mage.Sets/src/mage/cards/n/NissasEncouragement.java
+++ b/Mage.Sets/src/mage/cards/n/NissasEncouragement.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author spjspj
*/
-public class NissasEncouragement extends CardImpl {
+public final class NissasEncouragement extends CardImpl {
public NissasEncouragement(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NissasExpedition.java b/Mage.Sets/src/mage/cards/n/NissasExpedition.java
index c37b21c72a5..070884bd631 100644
--- a/Mage.Sets/src/mage/cards/n/NissasExpedition.java
+++ b/Mage.Sets/src/mage/cards/n/NissasExpedition.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class NissasExpedition extends CardImpl {
+public final class NissasExpedition extends CardImpl {
public NissasExpedition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}");
@@ -50,7 +50,7 @@ public class NissasExpedition extends CardImpl {
// Convoke
this.addAbility(new ConvokeAbility());
// Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library.
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_BASIC_LAND_CARD), true, true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LAND), true, true));
}
public NissasExpedition(final NissasExpedition card) {
diff --git a/Mage.Sets/src/mage/cards/n/NissasJudgment.java b/Mage.Sets/src/mage/cards/n/NissasJudgment.java
index f0c9807ad18..c07739a8ef2 100644
--- a/Mage.Sets/src/mage/cards/n/NissasJudgment.java
+++ b/Mage.Sets/src/mage/cards/n/NissasJudgment.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class NissasJudgment extends CardImpl {
+public final class NissasJudgment extends CardImpl {
private final static FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java
index 9b6ba2b1dc5..346022f4bdd 100644
--- a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java
+++ b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java
@@ -40,10 +40,11 @@ import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
+import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.FilterCard;
-import mage.filter.common.FilterBasicLandCard;
import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.filter.predicate.mageobject.SupertypePredicate;
import mage.game.Game;
import mage.players.Player;
import mage.target.common.TargetCardInLibrary;
@@ -52,10 +53,10 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class NissasPilgrimage extends CardImpl {
+public final class NissasPilgrimage extends CardImpl {
public NissasPilgrimage(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
// Search your library for up to two basic Forest cards, reveal those cards, and put one onto the battlefield tapped and the rest into your hand. Then shuffle your library.
// Spell Mastery — If there are two or more instant and/or sorcery cards in your graveyard, search your library for up to three basic Forest cards instead of two.
@@ -74,9 +75,10 @@ public class NissasPilgrimage extends CardImpl {
class NissasPilgrimageEffect extends OneShotEffect {
- private static final FilterCard filter = new FilterBasicLandCard("basic Forest");
+ private static final FilterCard filter = new FilterCard("basic Forest card");
static {
+ filter.add(new SupertypePredicate(SuperType.BASIC));
filter.add(new SubtypePredicate(SubType.FOREST));
}
diff --git a/Mage.Sets/src/mage/cards/n/NissasRenewal.java b/Mage.Sets/src/mage/cards/n/NissasRenewal.java
index 1d03a039ae5..b8f45adefed 100644
--- a/Mage.Sets/src/mage/cards/n/NissasRenewal.java
+++ b/Mage.Sets/src/mage/cards/n/NissasRenewal.java
@@ -41,13 +41,13 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class NissasRenewal extends CardImpl {
+public final class NissasRenewal extends CardImpl {
public NissasRenewal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{G}");
// Search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library. You gain 7 life.
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_BASIC_LAND_CARD), true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_CARD_BASIC_LAND), true));
this.getSpellAbility().addEffect(new GainLifeEffect(7));
}
diff --git a/Mage.Sets/src/mage/cards/n/NissasRevelation.java b/Mage.Sets/src/mage/cards/n/NissasRevelation.java
index 8fd50a7629b..a15623ee2bc 100644
--- a/Mage.Sets/src/mage/cards/n/NissasRevelation.java
+++ b/Mage.Sets/src/mage/cards/n/NissasRevelation.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class NissasRevelation extends CardImpl {
+public final class NissasRevelation extends CardImpl {
public NissasRevelation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NivMizzetDracogenius.java b/Mage.Sets/src/mage/cards/n/NivMizzetDracogenius.java
index ae97dd82a50..2bae46dfe07 100644
--- a/Mage.Sets/src/mage/cards/n/NivMizzetDracogenius.java
+++ b/Mage.Sets/src/mage/cards/n/NivMizzetDracogenius.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class NivMizzetDracogenius extends CardImpl {
+public final class NivMizzetDracogenius extends CardImpl {
public NivMizzetDracogenius(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NivMizzetTheFiremind.java b/Mage.Sets/src/mage/cards/n/NivMizzetTheFiremind.java
index aea62de3b4a..6b04c03c5b3 100644
--- a/Mage.Sets/src/mage/cards/n/NivMizzetTheFiremind.java
+++ b/Mage.Sets/src/mage/cards/n/NivMizzetTheFiremind.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class NivMizzetTheFiremind extends CardImpl {
+public final class NivMizzetTheFiremind extends CardImpl {
public NivMizzetTheFiremind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NiveousWisps.java b/Mage.Sets/src/mage/cards/n/NiveousWisps.java
index 1f68b238164..1145676f575 100644
--- a/Mage.Sets/src/mage/cards/n/NiveousWisps.java
+++ b/Mage.Sets/src/mage/cards/n/NiveousWisps.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class NiveousWisps extends CardImpl {
+public final class NiveousWisps extends CardImpl {
public NiveousWisps (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NivixAerieOfTheFiremind.java b/Mage.Sets/src/mage/cards/n/NivixAerieOfTheFiremind.java
index dd0524d304d..d85ba59f78e 100644
--- a/Mage.Sets/src/mage/cards/n/NivixAerieOfTheFiremind.java
+++ b/Mage.Sets/src/mage/cards/n/NivixAerieOfTheFiremind.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class NivixAerieOfTheFiremind extends CardImpl {
+public final class NivixAerieOfTheFiremind extends CardImpl {
public NivixAerieOfTheFiremind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/n/NivixBarrier.java b/Mage.Sets/src/mage/cards/n/NivixBarrier.java
index a01cfa468ff..9e6d79220c3 100644
--- a/Mage.Sets/src/mage/cards/n/NivixBarrier.java
+++ b/Mage.Sets/src/mage/cards/n/NivixBarrier.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author LevelX2
*/
-public class NivixBarrier extends CardImpl {
+public final class NivixBarrier extends CardImpl {
public NivixBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NivixCyclops.java b/Mage.Sets/src/mage/cards/n/NivixCyclops.java
index 183432baa6c..cbbc9eed603 100644
--- a/Mage.Sets/src/mage/cards/n/NivixCyclops.java
+++ b/Mage.Sets/src/mage/cards/n/NivixCyclops.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class NivixCyclops extends CardImpl {
+public final class NivixCyclops extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/n/NivixGuildmage.java b/Mage.Sets/src/mage/cards/n/NivixGuildmage.java
index ec7ad76f76b..cc80612b323 100644
--- a/Mage.Sets/src/mage/cards/n/NivixGuildmage.java
+++ b/Mage.Sets/src/mage/cards/n/NivixGuildmage.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class NivixGuildmage extends CardImpl {
+public final class NivixGuildmage extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/n/NivmagusElemental.java b/Mage.Sets/src/mage/cards/n/NivmagusElemental.java
index 946b574a2ae..cb0cbf3dcaa 100644
--- a/Mage.Sets/src/mage/cards/n/NivmagusElemental.java
+++ b/Mage.Sets/src/mage/cards/n/NivmagusElemental.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class NivmagusElemental extends CardImpl {
+public final class NivmagusElemental extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell you control");
diff --git a/Mage.Sets/src/mage/cards/n/Nix.java b/Mage.Sets/src/mage/cards/n/Nix.java
index 093753ca048..7f2b5d9a6d6 100644
--- a/Mage.Sets/src/mage/cards/n/Nix.java
+++ b/Mage.Sets/src/mage/cards/n/Nix.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class Nix extends CardImpl {
+public final class Nix extends CardImpl {
public Nix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NoContest.java b/Mage.Sets/src/mage/cards/n/NoContest.java
index 6eab0a811c7..a126e9033ad 100644
--- a/Mage.Sets/src/mage/cards/n/NoContest.java
+++ b/Mage.Sets/src/mage/cards/n/NoContest.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Styxo
*/
-public class NoContest extends CardImpl {
+public final class NoContest extends CardImpl {
public NoContest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NoDachi.java b/Mage.Sets/src/mage/cards/n/NoDachi.java
index 8309249a8fd..81cc69efe21 100644
--- a/Mage.Sets/src/mage/cards/n/NoDachi.java
+++ b/Mage.Sets/src/mage/cards/n/NoDachi.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class NoDachi extends CardImpl {
+public final class NoDachi extends CardImpl {
public NoDachi (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/n/NoMercy.java b/Mage.Sets/src/mage/cards/n/NoMercy.java
index 7c4d0079f44..2fd693430c5 100644
--- a/Mage.Sets/src/mage/cards/n/NoMercy.java
+++ b/Mage.Sets/src/mage/cards/n/NoMercy.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class NoMercy extends CardImpl {
+public final class NoMercy extends CardImpl {
public NoMercy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java b/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java
index f51889150a8..251402356ce 100644
--- a/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java
+++ b/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author anonymous
*/
-public class NoRestForTheWicked extends CardImpl {
+public final class NoRestForTheWicked extends CardImpl {
public NoRestForTheWicked(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NobilisOfWar.java b/Mage.Sets/src/mage/cards/n/NobilisOfWar.java
index fcd2b65ccf2..127972465e5 100644
--- a/Mage.Sets/src/mage/cards/n/NobilisOfWar.java
+++ b/Mage.Sets/src/mage/cards/n/NobilisOfWar.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author North
*/
-public class NobilisOfWar extends CardImpl {
+public final class NobilisOfWar extends CardImpl {
public NobilisOfWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/W}{R/W}{R/W}{R/W}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/n/NobleBenefactor.java b/Mage.Sets/src/mage/cards/n/NobleBenefactor.java
index c39d414af5d..3fdd6e1cc92 100644
--- a/Mage.Sets/src/mage/cards/n/NobleBenefactor.java
+++ b/Mage.Sets/src/mage/cards/n/NobleBenefactor.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author ciaccona007
*/
-public class NobleBenefactor extends CardImpl {
+public final class NobleBenefactor extends CardImpl {
public NobleBenefactor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NobleElephant.java b/Mage.Sets/src/mage/cards/n/NobleElephant.java
index 8df238acd35..50ed9975256 100644
--- a/Mage.Sets/src/mage/cards/n/NobleElephant.java
+++ b/Mage.Sets/src/mage/cards/n/NobleElephant.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class NobleElephant extends CardImpl {
+public final class NobleElephant extends CardImpl {
public NobleElephant (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NobleHierarch.java b/Mage.Sets/src/mage/cards/n/NobleHierarch.java
index 353ee394764..f4a9e32d810 100644
--- a/Mage.Sets/src/mage/cards/n/NobleHierarch.java
+++ b/Mage.Sets/src/mage/cards/n/NobleHierarch.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class NobleHierarch extends CardImpl {
+public final class NobleHierarch extends CardImpl {
public NobleHierarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NoblePanther.java b/Mage.Sets/src/mage/cards/n/NoblePanther.java
index f6e9f703dc6..af09c35e746 100644
--- a/Mage.Sets/src/mage/cards/n/NoblePanther.java
+++ b/Mage.Sets/src/mage/cards/n/NoblePanther.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class NoblePanther extends CardImpl {
+public final class NoblePanther extends CardImpl {
public NoblePanther(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NoblePurpose.java b/Mage.Sets/src/mage/cards/n/NoblePurpose.java
index 93a4b7dfe66..72631ceab62 100644
--- a/Mage.Sets/src/mage/cards/n/NoblePurpose.java
+++ b/Mage.Sets/src/mage/cards/n/NoblePurpose.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author Quercitron
*/
-public class NoblePurpose extends CardImpl {
+public final class NoblePurpose extends CardImpl {
public NoblePurpose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NobleQuarry.java b/Mage.Sets/src/mage/cards/n/NobleQuarry.java
index e2a927da8f2..99d6bedc382 100644
--- a/Mage.Sets/src/mage/cards/n/NobleQuarry.java
+++ b/Mage.Sets/src/mage/cards/n/NobleQuarry.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class NobleQuarry extends CardImpl {
+public final class NobleQuarry extends CardImpl {
public NobleQuarry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NobleStand.java b/Mage.Sets/src/mage/cards/n/NobleStand.java
index 0300e66b0e3..4d3f95c2a01 100644
--- a/Mage.Sets/src/mage/cards/n/NobleStand.java
+++ b/Mage.Sets/src/mage/cards/n/NobleStand.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author Galatolol
*/
-public class NobleStand extends CardImpl {
+public final class NobleStand extends CardImpl {
public NobleStand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NobleSteeds.java b/Mage.Sets/src/mage/cards/n/NobleSteeds.java
index c7a748569f4..1fcd1cbe4fa 100644
--- a/Mage.Sets/src/mage/cards/n/NobleSteeds.java
+++ b/Mage.Sets/src/mage/cards/n/NobleSteeds.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class NobleSteeds extends CardImpl {
+public final class NobleSteeds extends CardImpl {
public NobleSteeds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NobleTemplar.java b/Mage.Sets/src/mage/cards/n/NobleTemplar.java
index b9eb8f43148..49d5ab8e761 100644
--- a/Mage.Sets/src/mage/cards/n/NobleTemplar.java
+++ b/Mage.Sets/src/mage/cards/n/NobleTemplar.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class NobleTemplar extends CardImpl {
+public final class NobleTemplar extends CardImpl {
public NobleTemplar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NobleVestige.java b/Mage.Sets/src/mage/cards/n/NobleVestige.java
index f5b711993be..21742cf4226 100644
--- a/Mage.Sets/src/mage/cards/n/NobleVestige.java
+++ b/Mage.Sets/src/mage/cards/n/NobleVestige.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author North
*/
-public class NobleVestige extends CardImpl {
+public final class NobleVestige extends CardImpl {
public NobleVestige(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NocturnalRaid.java b/Mage.Sets/src/mage/cards/n/NocturnalRaid.java
index dcb7dbe40e0..be929eba79e 100644
--- a/Mage.Sets/src/mage/cards/n/NocturnalRaid.java
+++ b/Mage.Sets/src/mage/cards/n/NocturnalRaid.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*/
-public class NocturnalRaid extends CardImpl {
+public final class NocturnalRaid extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/n/NoeticScales.java b/Mage.Sets/src/mage/cards/n/NoeticScales.java
index 646b284af17..8f2ac090538 100644
--- a/Mage.Sets/src/mage/cards/n/NoeticScales.java
+++ b/Mage.Sets/src/mage/cards/n/NoeticScales.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class NoeticScales extends CardImpl {
+public final class NoeticScales extends CardImpl {
public NoeticScales(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/n/NogginWhack.java b/Mage.Sets/src/mage/cards/n/NogginWhack.java
index 1152e7deff0..901233cb6f9 100644
--- a/Mage.Sets/src/mage/cards/n/NogginWhack.java
+++ b/Mage.Sets/src/mage/cards/n/NogginWhack.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class NogginWhack extends CardImpl {
+public final class NogginWhack extends CardImpl {
public NogginWhack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NoggleBandit.java b/Mage.Sets/src/mage/cards/n/NoggleBandit.java
index 4b140fb73cb..619472592a2 100644
--- a/Mage.Sets/src/mage/cards/n/NoggleBandit.java
+++ b/Mage.Sets/src/mage/cards/n/NoggleBandit.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
* @author jeffwadsworth
*
*/
-public class NoggleBandit extends CardImpl {
+public final class NoggleBandit extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by creatures with defender");
diff --git a/Mage.Sets/src/mage/cards/n/NoggleBridgebreaker.java b/Mage.Sets/src/mage/cards/n/NoggleBridgebreaker.java
index a57d1f143a5..9f687405519 100644
--- a/Mage.Sets/src/mage/cards/n/NoggleBridgebreaker.java
+++ b/Mage.Sets/src/mage/cards/n/NoggleBridgebreaker.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledPermanent;
/**
* @author Loki
*/
-public class NoggleBridgebreaker extends CardImpl {
+public final class NoggleBridgebreaker extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java b/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java
index abdebf482ff..d07a3a589c2 100644
--- a/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java
+++ b/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
* @author jeffwadsworth
*
*/
-public class NoggleHedgeMage extends CardImpl {
+public final class NoggleHedgeMage extends CardImpl {
private final static FilterLandPermanent filter = new FilterLandPermanent();
private final static FilterLandPermanent filter2 = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/n/NoggleRansacker.java b/Mage.Sets/src/mage/cards/n/NoggleRansacker.java
index 71ff00e55b4..dba6fddcbca 100644
--- a/Mage.Sets/src/mage/cards/n/NoggleRansacker.java
+++ b/Mage.Sets/src/mage/cards/n/NoggleRansacker.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class NoggleRansacker extends CardImpl {
+public final class NoggleRansacker extends CardImpl {
public NoggleRansacker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U/R}");
diff --git a/Mage.Sets/src/mage/cards/n/NomadDecoy.java b/Mage.Sets/src/mage/cards/n/NomadDecoy.java
index e1d40eb3a5c..b863a766748 100644
--- a/Mage.Sets/src/mage/cards/n/NomadDecoy.java
+++ b/Mage.Sets/src/mage/cards/n/NomadDecoy.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class NomadDecoy extends CardImpl {
+public final class NomadDecoy extends CardImpl {
public NomadDecoy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NomadMythmaker.java b/Mage.Sets/src/mage/cards/n/NomadMythmaker.java
index 70540ac8fb0..e88bc690742 100644
--- a/Mage.Sets/src/mage/cards/n/NomadMythmaker.java
+++ b/Mage.Sets/src/mage/cards/n/NomadMythmaker.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class NomadMythmaker extends CardImpl {
+public final class NomadMythmaker extends CardImpl {
private static final FilterCard FILTER = new FilterCard("Aura card from a graveyard");
@@ -110,8 +110,7 @@ class NomadMythmakerEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Card aura = game.getCard(source.getFirstTarget());
- if (controller == null
- || aura == null) {
+ if (controller == null || aura == null) {
return false;
}
FilterControlledCreaturePermanent FILTER = new FilterControlledCreaturePermanent("Choose a creature you control");
@@ -122,7 +121,7 @@ class NomadMythmakerEffect extends OneShotEffect {
if (permanent != null
&& !permanent.cantBeAttachedBy(aura, game)) {
game.getState().setValue("attachTo:" + aura.getId(), permanent);
- aura.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), controller.getId());
+ controller.moveCards(aura, Zone.BATTLEFIELD, source, game);
return permanent.addAttachment(aura.getId(), game);
}
}
diff --git a/Mage.Sets/src/mage/cards/n/NomadOutpost.java b/Mage.Sets/src/mage/cards/n/NomadOutpost.java
index f8a4800f194..9a17b1de527 100644
--- a/Mage.Sets/src/mage/cards/n/NomadOutpost.java
+++ b/Mage.Sets/src/mage/cards/n/NomadOutpost.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class NomadOutpost extends CardImpl {
+public final class NomadOutpost extends CardImpl {
public NomadOutpost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/n/NomadStadium.java b/Mage.Sets/src/mage/cards/n/NomadStadium.java
index 7234f1dab03..1392144a070 100644
--- a/Mage.Sets/src/mage/cards/n/NomadStadium.java
+++ b/Mage.Sets/src/mage/cards/n/NomadStadium.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class NomadStadium extends CardImpl {
+public final class NomadStadium extends CardImpl {
public NomadStadium(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/n/NomadicElf.java b/Mage.Sets/src/mage/cards/n/NomadicElf.java
index 2492f7e44d6..632acd8e559 100644
--- a/Mage.Sets/src/mage/cards/n/NomadicElf.java
+++ b/Mage.Sets/src/mage/cards/n/NomadicElf.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class NomadicElf extends CardImpl {
+public final class NomadicElf extends CardImpl {
public NomadicElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NomadsAssembly.java b/Mage.Sets/src/mage/cards/n/NomadsAssembly.java
index 0a60e435bfb..3d3f97e2cd5 100644
--- a/Mage.Sets/src/mage/cards/n/NomadsAssembly.java
+++ b/Mage.Sets/src/mage/cards/n/NomadsAssembly.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.KorSoldierToken;
*
* @author North
*/
-public class NomadsAssembly extends CardImpl {
+public final class NomadsAssembly extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/n/NomadsEnKor.java b/Mage.Sets/src/mage/cards/n/NomadsEnKor.java
index 11947abb50a..2f718c80b27 100644
--- a/Mage.Sets/src/mage/cards/n/NomadsEnKor.java
+++ b/Mage.Sets/src/mage/cards/n/NomadsEnKor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class NomadsEnKor extends CardImpl {
+public final class NomadsEnKor extends CardImpl {
public NomadsEnKor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NooseConstrictor.java b/Mage.Sets/src/mage/cards/n/NooseConstrictor.java
index c2e746224a2..98a38ca7059 100644
--- a/Mage.Sets/src/mage/cards/n/NooseConstrictor.java
+++ b/Mage.Sets/src/mage/cards/n/NooseConstrictor.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class NooseConstrictor extends CardImpl {
+public final class NooseConstrictor extends CardImpl {
public NooseConstrictor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NoosegrafMob.java b/Mage.Sets/src/mage/cards/n/NoosegrafMob.java
index d4aaa3a8bc0..b98fb292682 100644
--- a/Mage.Sets/src/mage/cards/n/NoosegrafMob.java
+++ b/Mage.Sets/src/mage/cards/n/NoosegrafMob.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class NoosegrafMob extends CardImpl {
+public final class NoosegrafMob extends CardImpl {
public NoosegrafMob(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NorinTheWary.java b/Mage.Sets/src/mage/cards/n/NorinTheWary.java
index 137003d4635..a838c7a6e37 100644
--- a/Mage.Sets/src/mage/cards/n/NorinTheWary.java
+++ b/Mage.Sets/src/mage/cards/n/NorinTheWary.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class NorinTheWary extends CardImpl {
+public final class NorinTheWary extends CardImpl {
public NorinTheWary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NornsAnnex.java b/Mage.Sets/src/mage/cards/n/NornsAnnex.java
index 0a72b7b9f8a..851898cebcf 100644
--- a/Mage.Sets/src/mage/cards/n/NornsAnnex.java
+++ b/Mage.Sets/src/mage/cards/n/NornsAnnex.java
@@ -39,7 +39,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class NornsAnnex extends CardImpl {
+public final class NornsAnnex extends CardImpl {
public NornsAnnex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}{W/P}{W/P}");
diff --git a/Mage.Sets/src/mage/cards/n/Norritt.java b/Mage.Sets/src/mage/cards/n/Norritt.java
index 3d1b0efecfe..637f84d9c24 100644
--- a/Mage.Sets/src/mage/cards/n/Norritt.java
+++ b/Mage.Sets/src/mage/cards/n/Norritt.java
@@ -60,7 +60,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author MTGfan & L_J
*/
-public class Norritt extends CardImpl {
+public final class Norritt extends CardImpl {
private static final FilterCreaturePermanent filterBlue = new FilterCreaturePermanent("blue creature");
diff --git a/Mage.Sets/src/mage/cards/n/NorthernPaladin.java b/Mage.Sets/src/mage/cards/n/NorthernPaladin.java
index aafc4b4c36e..0c47e3030cf 100644
--- a/Mage.Sets/src/mage/cards/n/NorthernPaladin.java
+++ b/Mage.Sets/src/mage/cards/n/NorthernPaladin.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class NorthernPaladin extends CardImpl {
+public final class NorthernPaladin extends CardImpl {
private static FilterPermanent filter = new FilterPermanent("black permanent");
static {
diff --git a/Mage.Sets/src/mage/cards/n/NorwoodArchers.java b/Mage.Sets/src/mage/cards/n/NorwoodArchers.java
index e4f44b5060f..22b948eea3e 100644
--- a/Mage.Sets/src/mage/cards/n/NorwoodArchers.java
+++ b/Mage.Sets/src/mage/cards/n/NorwoodArchers.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class NorwoodArchers extends CardImpl {
+public final class NorwoodArchers extends CardImpl {
public NorwoodArchers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NorwoodPriestess.java b/Mage.Sets/src/mage/cards/n/NorwoodPriestess.java
index 50e5f254415..0eabcd6df09 100644
--- a/Mage.Sets/src/mage/cards/n/NorwoodPriestess.java
+++ b/Mage.Sets/src/mage/cards/n/NorwoodPriestess.java
@@ -33,7 +33,7 @@ import mage.ObjectColor;
import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class NorwoodPriestess extends CardImpl {
+public final class NorwoodPriestess extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a green creature card");
@@ -64,7 +64,7 @@ public class NorwoodPriestess extends CardImpl {
// {tap}: You may put a green creature card from your hand onto the battlefield. Activate this ability only during your turn, before attackers are declared.
this.addAbility(new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD,
- new PutPermanentOnBattlefieldEffect(filter),
+ new PutCardFromHandOntoBattlefieldEffect(filter),
new TapSourceCost(),
MyTurnBeforeAttackersDeclaredCondition.instance
));
diff --git a/Mage.Sets/src/mage/cards/n/NorwoodRanger.java b/Mage.Sets/src/mage/cards/n/NorwoodRanger.java
index 85cc05e9df7..ff58ac1baed 100644
--- a/Mage.Sets/src/mage/cards/n/NorwoodRanger.java
+++ b/Mage.Sets/src/mage/cards/n/NorwoodRanger.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class NorwoodRanger extends CardImpl {
+public final class NorwoodRanger extends CardImpl {
public NorwoodRanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NorwoodRiders.java b/Mage.Sets/src/mage/cards/n/NorwoodRiders.java
index 9e27515cab3..33b22b260ae 100644
--- a/Mage.Sets/src/mage/cards/n/NorwoodRiders.java
+++ b/Mage.Sets/src/mage/cards/n/NorwoodRiders.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class NorwoodRiders extends CardImpl {
+public final class NorwoodRiders extends CardImpl {
public NorwoodRiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NorwoodWarrior.java b/Mage.Sets/src/mage/cards/n/NorwoodWarrior.java
index b84c8e53139..d7f37af95e8 100644
--- a/Mage.Sets/src/mage/cards/n/NorwoodWarrior.java
+++ b/Mage.Sets/src/mage/cards/n/NorwoodWarrior.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class NorwoodWarrior extends CardImpl {
+public final class NorwoodWarrior extends CardImpl {
public NorwoodWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NostalgicDreams.java b/Mage.Sets/src/mage/cards/n/NostalgicDreams.java
index 4799c0dad2b..ac0410a56af 100644
--- a/Mage.Sets/src/mage/cards/n/NostalgicDreams.java
+++ b/Mage.Sets/src/mage/cards/n/NostalgicDreams.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class NostalgicDreams extends CardImpl {
+public final class NostalgicDreams extends CardImpl {
public NostalgicDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NosyGoblin.java b/Mage.Sets/src/mage/cards/n/NosyGoblin.java
index 2d6e96a832b..a1e96c1d883 100644
--- a/Mage.Sets/src/mage/cards/n/NosyGoblin.java
+++ b/Mage.Sets/src/mage/cards/n/NosyGoblin.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class NosyGoblin extends CardImpl {
+public final class NosyGoblin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face down creature");
diff --git a/Mage.Sets/src/mage/cards/n/NotForgotten.java b/Mage.Sets/src/mage/cards/n/NotForgotten.java
index 7d59f97a5bc..c1d80278c9c 100644
--- a/Mage.Sets/src/mage/cards/n/NotForgotten.java
+++ b/Mage.Sets/src/mage/cards/n/NotForgotten.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class NotForgotten extends CardImpl {
+public final class NotForgotten extends CardImpl {
public NotForgotten(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NotOfThisWorld.java b/Mage.Sets/src/mage/cards/n/NotOfThisWorld.java
index 771655276bb..38883645e48 100644
--- a/Mage.Sets/src/mage/cards/n/NotOfThisWorld.java
+++ b/Mage.Sets/src/mage/cards/n/NotOfThisWorld.java
@@ -58,7 +58,7 @@ import mage.target.Targets;
/**
* @author Rafbill
*/
-public class NotOfThisWorld extends CardImpl {
+public final class NotOfThisWorld extends CardImpl {
public NotOfThisWorld(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.INSTANT}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/n/NotionThief.java b/Mage.Sets/src/mage/cards/n/NotionThief.java
index f093f6c9578..a45c9b12aaa 100644
--- a/Mage.Sets/src/mage/cards/n/NotionThief.java
+++ b/Mage.Sets/src/mage/cards/n/NotionThief.java
@@ -50,7 +50,7 @@ import mage.watchers.common.CardsDrawnDuringDrawStepWatcher;
*
* @author LevelX2
*/
-public class NotionThief extends CardImpl {
+public final class NotionThief extends CardImpl {
public NotionThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NotoriousAssassin.java b/Mage.Sets/src/mage/cards/n/NotoriousAssassin.java
index 7ba3acb468a..345c20294f9 100644
--- a/Mage.Sets/src/mage/cards/n/NotoriousAssassin.java
+++ b/Mage.Sets/src/mage/cards/n/NotoriousAssassin.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class NotoriousAssassin extends CardImpl {
+public final class NotoriousAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/n/NotoriousThrong.java b/Mage.Sets/src/mage/cards/n/NotoriousThrong.java
index 36c596475b8..6b8222f1208 100644
--- a/Mage.Sets/src/mage/cards/n/NotoriousThrong.java
+++ b/Mage.Sets/src/mage/cards/n/NotoriousThrong.java
@@ -50,7 +50,7 @@ import mage.watchers.common.AmountOfDamageAPlayerReceivedThisTurnWatcher;
*
* @author LoneFox
*/
-public class NotoriousThrong extends CardImpl {
+public final class NotoriousThrong extends CardImpl {
public NotoriousThrong(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/Nourish.java b/Mage.Sets/src/mage/cards/n/Nourish.java
index 7c516e7fc6a..dff11ac4554 100644
--- a/Mage.Sets/src/mage/cards/n/Nourish.java
+++ b/Mage.Sets/src/mage/cards/n/Nourish.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class Nourish extends CardImpl {
+public final class Nourish extends CardImpl {
public Nourish (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NourishingShoal.java b/Mage.Sets/src/mage/cards/n/NourishingShoal.java
index 32c5d6b2d84..43c98b00181 100644
--- a/Mage.Sets/src/mage/cards/n/NourishingShoal.java
+++ b/Mage.Sets/src/mage/cards/n/NourishingShoal.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class NourishingShoal extends CardImpl {
+public final class NourishingShoal extends CardImpl {
public NourishingShoal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NovaChaser.java b/Mage.Sets/src/mage/cards/n/NovaChaser.java
index b8297814f32..1f51ee4971e 100644
--- a/Mage.Sets/src/mage/cards/n/NovaChaser.java
+++ b/Mage.Sets/src/mage/cards/n/NovaChaser.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class NovaChaser extends CardImpl {
+public final class NovaChaser extends CardImpl {
public NovaChaser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NovaCleric.java b/Mage.Sets/src/mage/cards/n/NovaCleric.java
index 42c0830ad32..58b84e58172 100644
--- a/Mage.Sets/src/mage/cards/n/NovaCleric.java
+++ b/Mage.Sets/src/mage/cards/n/NovaCleric.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterEnchantmentPermanent;
*
* @author Derpthemeus
*/
-public class NovaCleric extends CardImpl {
+public final class NovaCleric extends CardImpl {
public NovaCleric(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NovaPentacle.java b/Mage.Sets/src/mage/cards/n/NovaPentacle.java
index 356282523c7..6ea1c40c14e 100644
--- a/Mage.Sets/src/mage/cards/n/NovaPentacle.java
+++ b/Mage.Sets/src/mage/cards/n/NovaPentacle.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponentsChoicePermanent;
*
* @author L_J
*/
-public class NovaPentacle extends CardImpl {
+public final class NovaPentacle extends CardImpl {
public NovaPentacle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/n/NovablastWurm.java b/Mage.Sets/src/mage/cards/n/NovablastWurm.java
index 146aa04728e..be5e2e02906 100644
--- a/Mage.Sets/src/mage/cards/n/NovablastWurm.java
+++ b/Mage.Sets/src/mage/cards/n/NovablastWurm.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author jeffwadsworth
*/
-public class NovablastWurm extends CardImpl {
+public final class NovablastWurm extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("other creatures");
diff --git a/Mage.Sets/src/mage/cards/n/NoviceBountyHunter.java b/Mage.Sets/src/mage/cards/n/NoviceBountyHunter.java
index 04aa264ec8d..37d8586f5be 100644
--- a/Mage.Sets/src/mage/cards/n/NoviceBountyHunter.java
+++ b/Mage.Sets/src/mage/cards/n/NoviceBountyHunter.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class NoviceBountyHunter extends CardImpl {
+public final class NoviceBountyHunter extends CardImpl {
public NoviceBountyHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NovijenHeartOfProgress.java b/Mage.Sets/src/mage/cards/n/NovijenHeartOfProgress.java
index e3adeaf7a72..b4ebc34c393 100644
--- a/Mage.Sets/src/mage/cards/n/NovijenHeartOfProgress.java
+++ b/Mage.Sets/src/mage/cards/n/NovijenHeartOfProgress.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author someoneseth@gmail.com
*/
-public class NovijenHeartOfProgress extends CardImpl {
+public final class NovijenHeartOfProgress extends CardImpl {
public NovijenHeartOfProgress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/n/NovijenSages.java b/Mage.Sets/src/mage/cards/n/NovijenSages.java
index 8185ed09f6f..aba87f4d583 100644
--- a/Mage.Sets/src/mage/cards/n/NovijenSages.java
+++ b/Mage.Sets/src/mage/cards/n/NovijenSages.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author JotaPeRL
*/
-public class NovijenSages extends CardImpl {
+public final class NovijenSages extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/n/NoxiousDragon.java b/Mage.Sets/src/mage/cards/n/NoxiousDragon.java
index 8c5653d9b49..190cf2a806e 100644
--- a/Mage.Sets/src/mage/cards/n/NoxiousDragon.java
+++ b/Mage.Sets/src/mage/cards/n/NoxiousDragon.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NoxiousDragon extends CardImpl {
+public final class NoxiousDragon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/n/NoxiousField.java b/Mage.Sets/src/mage/cards/n/NoxiousField.java
index aaf8ac65b8f..0f7db1eea1d 100644
--- a/Mage.Sets/src/mage/cards/n/NoxiousField.java
+++ b/Mage.Sets/src/mage/cards/n/NoxiousField.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class NoxiousField extends CardImpl {
+public final class NoxiousField extends CardImpl {
public NoxiousField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java b/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java
index 29a829fc2f7..b30548b1ca6 100644
--- a/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java
+++ b/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class NoxiousGearhulk extends CardImpl {
+public final class NoxiousGearhulk extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java b/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java
index fc13c8bca38..a36cbab8225 100644
--- a/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java
+++ b/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jeffwadsworth
*/
-public class NoxiousGhoul extends CardImpl {
+public final class NoxiousGhoul extends CardImpl {
final FilterPermanent filter = new FilterPermanent("Noxious Ghoul or another Zombie");
final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("non-Zombie");
diff --git a/Mage.Sets/src/mage/cards/n/NoxiousHatchling.java b/Mage.Sets/src/mage/cards/n/NoxiousHatchling.java
index 285710e1ddc..61012efe13c 100644
--- a/Mage.Sets/src/mage/cards/n/NoxiousHatchling.java
+++ b/Mage.Sets/src/mage/cards/n/NoxiousHatchling.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class NoxiousHatchling extends CardImpl {
+public final class NoxiousHatchling extends CardImpl {
private static final FilterSpell filterBlackSpell = new FilterSpell("a black spell");
private static final FilterSpell filterGreenSpell = new FilterSpell("a green spell");
diff --git a/Mage.Sets/src/mage/cards/n/NoxiousRevival.java b/Mage.Sets/src/mage/cards/n/NoxiousRevival.java
index 6b3a03d2041..b0123c62538 100644
--- a/Mage.Sets/src/mage/cards/n/NoxiousRevival.java
+++ b/Mage.Sets/src/mage/cards/n/NoxiousRevival.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Loki
*/
-public class NoxiousRevival extends CardImpl {
+public final class NoxiousRevival extends CardImpl {
public NoxiousRevival (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G/P}");
diff --git a/Mage.Sets/src/mage/cards/n/NoxiousToad.java b/Mage.Sets/src/mage/cards/n/NoxiousToad.java
index 08837fa5956..db9cac01c3c 100644
--- a/Mage.Sets/src/mage/cards/n/NoxiousToad.java
+++ b/Mage.Sets/src/mage/cards/n/NoxiousToad.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class NoxiousToad extends CardImpl {
+public final class NoxiousToad extends CardImpl {
public NoxiousToad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NoyanDarRoilShaper.java b/Mage.Sets/src/mage/cards/n/NoyanDarRoilShaper.java
index 7a9586a7614..75cb9d0aeca 100644
--- a/Mage.Sets/src/mage/cards/n/NoyanDarRoilShaper.java
+++ b/Mage.Sets/src/mage/cards/n/NoyanDarRoilShaper.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class NoyanDarRoilShaper extends CardImpl {
+public final class NoyanDarRoilShaper extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery card");
diff --git a/Mage.Sets/src/mage/cards/n/Nucklavee.java b/Mage.Sets/src/mage/cards/n/Nucklavee.java
index 13c536996f7..c7dbc18fbe6 100644
--- a/Mage.Sets/src/mage/cards/n/Nucklavee.java
+++ b/Mage.Sets/src/mage/cards/n/Nucklavee.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class Nucklavee extends CardImpl {
+public final class Nucklavee extends CardImpl {
private static final FilterCard filterRed = new FilterCard("red sorcery card from your graveyard");
private static final FilterCard filterBlue = new FilterCard("blue instant card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/n/NuisanceEngine.java b/Mage.Sets/src/mage/cards/n/NuisanceEngine.java
index 3da02be53cd..52329044a5a 100644
--- a/Mage.Sets/src/mage/cards/n/NuisanceEngine.java
+++ b/Mage.Sets/src/mage/cards/n/NuisanceEngine.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.PestToken;
/**
* @author Loki
*/
-public class NuisanceEngine extends CardImpl {
+public final class NuisanceEngine extends CardImpl {
public NuisanceEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/n/NullBrooch.java b/Mage.Sets/src/mage/cards/n/NullBrooch.java
index 67347823481..0298ec82699 100644
--- a/Mage.Sets/src/mage/cards/n/NullBrooch.java
+++ b/Mage.Sets/src/mage/cards/n/NullBrooch.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class NullBrooch extends CardImpl {
+public final class NullBrooch extends CardImpl {
private static final FilterSpell filter = new FilterSpell("noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/n/NullCaller.java b/Mage.Sets/src/mage/cards/n/NullCaller.java
index 8cd0d456db8..813be2274b7 100644
--- a/Mage.Sets/src/mage/cards/n/NullCaller.java
+++ b/Mage.Sets/src/mage/cards/n/NullCaller.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class NullCaller extends CardImpl {
+public final class NullCaller extends CardImpl {
public NullCaller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NullChampion.java b/Mage.Sets/src/mage/cards/n/NullChampion.java
index 0ce4199dd36..6c410ae171f 100644
--- a/Mage.Sets/src/mage/cards/n/NullChampion.java
+++ b/Mage.Sets/src/mage/cards/n/NullChampion.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author Loki, noxx
*/
-public class NullChampion extends LevelerCard {
+public final class NullChampion extends LevelerCard {
public NullChampion (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NullProfusion.java b/Mage.Sets/src/mage/cards/n/NullProfusion.java
index d319c62a118..854e4bce505 100644
--- a/Mage.Sets/src/mage/cards/n/NullProfusion.java
+++ b/Mage.Sets/src/mage/cards/n/NullProfusion.java
@@ -49,7 +49,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author emerald000
*/
-public class NullProfusion extends CardImpl {
+public final class NullProfusion extends CardImpl {
public NullProfusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NullRod.java b/Mage.Sets/src/mage/cards/n/NullRod.java
index 7e51755f5b9..d955e3d660f 100644
--- a/Mage.Sets/src/mage/cards/n/NullRod.java
+++ b/Mage.Sets/src/mage/cards/n/NullRod.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class NullRod extends CardImpl {
+public final class NullRod extends CardImpl {
public NullRod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/n/Nullify.java b/Mage.Sets/src/mage/cards/n/Nullify.java
index d41b992eca3..0bbe55d8121 100644
--- a/Mage.Sets/src/mage/cards/n/Nullify.java
+++ b/Mage.Sets/src/mage/cards/n/Nullify.java
@@ -43,7 +43,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Nullify extends CardImpl {
+public final class Nullify extends CardImpl {
private static final FilterSpell filter = new FilterSpell("creature or Aura spell");
diff --git a/Mage.Sets/src/mage/cards/n/NullmageAdvocate.java b/Mage.Sets/src/mage/cards/n/NullmageAdvocate.java
index f325dc6bafe..f9bcb44424f 100644
--- a/Mage.Sets/src/mage/cards/n/NullmageAdvocate.java
+++ b/Mage.Sets/src/mage/cards/n/NullmageAdvocate.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class NullmageAdvocate extends CardImpl {
+public final class NullmageAdvocate extends CardImpl {
public NullmageAdvocate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NullmageShepherd.java b/Mage.Sets/src/mage/cards/n/NullmageShepherd.java
index c356a165327..bb121ba8195 100644
--- a/Mage.Sets/src/mage/cards/n/NullmageShepherd.java
+++ b/Mage.Sets/src/mage/cards/n/NullmageShepherd.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class NullmageShepherd extends CardImpl {
+public final class NullmageShepherd extends CardImpl {
private static final FilterControlledCreaturePermanent filterCost = new FilterControlledCreaturePermanent("untapped creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/n/NullstoneGargoyle.java b/Mage.Sets/src/mage/cards/n/NullstoneGargoyle.java
index 8c8c6b1bc8c..e4599204f9e 100644
--- a/Mage.Sets/src/mage/cards/n/NullstoneGargoyle.java
+++ b/Mage.Sets/src/mage/cards/n/NullstoneGargoyle.java
@@ -47,7 +47,7 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author LevelX2
*/
-public class NullstoneGargoyle extends CardImpl {
+public final class NullstoneGargoyle extends CardImpl {
public NullstoneGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{9}");
diff --git a/Mage.Sets/src/mage/cards/n/NulltreadGargantuan.java b/Mage.Sets/src/mage/cards/n/NulltreadGargantuan.java
index db63e9456b8..dffaf59d71d 100644
--- a/Mage.Sets/src/mage/cards/n/NulltreadGargantuan.java
+++ b/Mage.Sets/src/mage/cards/n/NulltreadGargantuan.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class NulltreadGargantuan extends CardImpl {
+public final class NulltreadGargantuan extends CardImpl {
public NulltreadGargantuan (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NumaiOutcast.java b/Mage.Sets/src/mage/cards/n/NumaiOutcast.java
index 7b71b1a2d71..e3e9d51ae40 100644
--- a/Mage.Sets/src/mage/cards/n/NumaiOutcast.java
+++ b/Mage.Sets/src/mage/cards/n/NumaiOutcast.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class NumaiOutcast extends CardImpl {
+public final class NumaiOutcast extends CardImpl {
public NumaiOutcast (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NumbingDose.java b/Mage.Sets/src/mage/cards/n/NumbingDose.java
index ba47ca9f8af..ff2ca9d1320 100644
--- a/Mage.Sets/src/mage/cards/n/NumbingDose.java
+++ b/Mage.Sets/src/mage/cards/n/NumbingDose.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class NumbingDose extends CardImpl {
+public final class NumbingDose extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/n/NumotTheDevastator.java b/Mage.Sets/src/mage/cards/n/NumotTheDevastator.java
index 815ab40e77a..13b0f564a33 100644
--- a/Mage.Sets/src/mage/cards/n/NumotTheDevastator.java
+++ b/Mage.Sets/src/mage/cards/n/NumotTheDevastator.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class NumotTheDevastator extends CardImpl {
+public final class NumotTheDevastator extends CardImpl {
public NumotTheDevastator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NurturerInitiate.java b/Mage.Sets/src/mage/cards/n/NurturerInitiate.java
index b0e3f407ea5..ec86bf1ae71 100644
--- a/Mage.Sets/src/mage/cards/n/NurturerInitiate.java
+++ b/Mage.Sets/src/mage/cards/n/NurturerInitiate.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class NurturerInitiate extends CardImpl {
+public final class NurturerInitiate extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a green spell");
diff --git a/Mage.Sets/src/mage/cards/n/NurturingLicid.java b/Mage.Sets/src/mage/cards/n/NurturingLicid.java
index fb55c321d50..192caf26b79 100644
--- a/Mage.Sets/src/mage/cards/n/NurturingLicid.java
+++ b/Mage.Sets/src/mage/cards/n/NurturingLicid.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class NurturingLicid extends CardImpl {
+public final class NurturingLicid extends CardImpl {
public NurturingLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NutCollector.java b/Mage.Sets/src/mage/cards/n/NutCollector.java
index fc54adb273f..4f3ec783cb1 100644
--- a/Mage.Sets/src/mage/cards/n/NutCollector.java
+++ b/Mage.Sets/src/mage/cards/n/NutCollector.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.SquirrelToken;
*
* @author cbt33
*/
-public class NutCollector extends CardImpl {
+public final class NutCollector extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("squirrel");
diff --git a/Mage.Sets/src/mage/cards/n/NuteGunray.java b/Mage.Sets/src/mage/cards/n/NuteGunray.java
index deac0f7f477..9c54d4952c2 100644
--- a/Mage.Sets/src/mage/cards/n/NuteGunray.java
+++ b/Mage.Sets/src/mage/cards/n/NuteGunray.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Styxo
*/
-public class NuteGunray extends CardImpl {
+public final class NuteGunray extends CardImpl {
private static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("non-token artifact");
diff --git a/Mage.Sets/src/mage/cards/n/NykthosShrineToNyx.java b/Mage.Sets/src/mage/cards/n/NykthosShrineToNyx.java
index b652f688ea8..4d8b0cd39ae 100644
--- a/Mage.Sets/src/mage/cards/n/NykthosShrineToNyx.java
+++ b/Mage.Sets/src/mage/cards/n/NykthosShrineToNyx.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class NykthosShrineToNyx extends CardImpl {
+public final class NykthosShrineToNyx extends CardImpl {
public NykthosShrineToNyx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/n/NyleaGodOfTheHunt.java b/Mage.Sets/src/mage/cards/n/NyleaGodOfTheHunt.java
index ea97068bfed..a4c24f989f5 100644
--- a/Mage.Sets/src/mage/cards/n/NyleaGodOfTheHunt.java
+++ b/Mage.Sets/src/mage/cards/n/NyleaGodOfTheHunt.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NyleaGodOfTheHunt extends CardImpl {
+public final class NyleaGodOfTheHunt extends CardImpl {
public NyleaGodOfTheHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NyleasDisciple.java b/Mage.Sets/src/mage/cards/n/NyleasDisciple.java
index 32e66931856..7746cbcac9b 100644
--- a/Mage.Sets/src/mage/cards/n/NyleasDisciple.java
+++ b/Mage.Sets/src/mage/cards/n/NyleasDisciple.java
@@ -43,7 +43,7 @@ import mage.constants.ColoredManaSymbol;
*
* @author LevelX2
*/
-public class NyleasDisciple extends CardImpl {
+public final class NyleasDisciple extends CardImpl {
public NyleasDisciple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NyleasEmissary.java b/Mage.Sets/src/mage/cards/n/NyleasEmissary.java
index 50271013b2f..c856e1b26d8 100644
--- a/Mage.Sets/src/mage/cards/n/NyleasEmissary.java
+++ b/Mage.Sets/src/mage/cards/n/NyleasEmissary.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class NyleasEmissary extends CardImpl {
+public final class NyleasEmissary extends CardImpl {
public NyleasEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NyleasPresence.java b/Mage.Sets/src/mage/cards/n/NyleasPresence.java
index a56ede95586..d42ad72e2fc 100644
--- a/Mage.Sets/src/mage/cards/n/NyleasPresence.java
+++ b/Mage.Sets/src/mage/cards/n/NyleasPresence.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class NyleasPresence extends CardImpl {
+public final class NyleasPresence extends CardImpl {
public NyleasPresence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/NyxFleeceRam.java b/Mage.Sets/src/mage/cards/n/NyxFleeceRam.java
index c280b9a26ea..f4f63e59316 100644
--- a/Mage.Sets/src/mage/cards/n/NyxFleeceRam.java
+++ b/Mage.Sets/src/mage/cards/n/NyxFleeceRam.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class NyxFleeceRam extends CardImpl {
+public final class NyxFleeceRam extends CardImpl {
public NyxFleeceRam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NyxInfusion.java b/Mage.Sets/src/mage/cards/n/NyxInfusion.java
index 59b87064523..012b3a4499f 100644
--- a/Mage.Sets/src/mage/cards/n/NyxInfusion.java
+++ b/Mage.Sets/src/mage/cards/n/NyxInfusion.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class NyxInfusion extends CardImpl {
+public final class NyxInfusion extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("enchantment");
diff --git a/Mage.Sets/src/mage/cards/n/NyxWeaver.java b/Mage.Sets/src/mage/cards/n/NyxWeaver.java
index 5bdde934ebd..5d5f7af3ede 100644
--- a/Mage.Sets/src/mage/cards/n/NyxWeaver.java
+++ b/Mage.Sets/src/mage/cards/n/NyxWeaver.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class NyxWeaver extends CardImpl {
+public final class NyxWeaver extends CardImpl {
public NyxWeaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/n/Nyxathid.java b/Mage.Sets/src/mage/cards/n/Nyxathid.java
index ebba5c08b4b..332ab7e2665 100644
--- a/Mage.Sets/src/mage/cards/n/Nyxathid.java
+++ b/Mage.Sets/src/mage/cards/n/Nyxathid.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class Nyxathid extends CardImpl {
+public final class Nyxathid extends CardImpl {
public Nyxathid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NyxbornEidolon.java b/Mage.Sets/src/mage/cards/n/NyxbornEidolon.java
index 09197076e52..b9fc600c8e7 100644
--- a/Mage.Sets/src/mage/cards/n/NyxbornEidolon.java
+++ b/Mage.Sets/src/mage/cards/n/NyxbornEidolon.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class NyxbornEidolon extends CardImpl {
+public final class NyxbornEidolon extends CardImpl {
public NyxbornEidolon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/n/NyxbornRollicker.java b/Mage.Sets/src/mage/cards/n/NyxbornRollicker.java
index 0e633a0220a..76974c44bf5 100644
--- a/Mage.Sets/src/mage/cards/n/NyxbornRollicker.java
+++ b/Mage.Sets/src/mage/cards/n/NyxbornRollicker.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class NyxbornRollicker extends CardImpl {
+public final class NyxbornRollicker extends CardImpl {
public NyxbornRollicker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/n/NyxbornShieldmate.java b/Mage.Sets/src/mage/cards/n/NyxbornShieldmate.java
index d5107e6ffdd..0153b75493f 100644
--- a/Mage.Sets/src/mage/cards/n/NyxbornShieldmate.java
+++ b/Mage.Sets/src/mage/cards/n/NyxbornShieldmate.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class NyxbornShieldmate extends CardImpl {
+public final class NyxbornShieldmate extends CardImpl {
public NyxbornShieldmate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/n/NyxbornTriton.java b/Mage.Sets/src/mage/cards/n/NyxbornTriton.java
index 8b56c1fdca7..3e3acd471c2 100644
--- a/Mage.Sets/src/mage/cards/n/NyxbornTriton.java
+++ b/Mage.Sets/src/mage/cards/n/NyxbornTriton.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class NyxbornTriton extends CardImpl {
+public final class NyxbornTriton extends CardImpl {
public NyxbornTriton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/n/NyxbornWolf.java b/Mage.Sets/src/mage/cards/n/NyxbornWolf.java
index 9393a92ce6f..bc29a43d609 100644
--- a/Mage.Sets/src/mage/cards/n/NyxbornWolf.java
+++ b/Mage.Sets/src/mage/cards/n/NyxbornWolf.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class NyxbornWolf extends CardImpl {
+public final class NyxbornWolf extends CardImpl {
public NyxbornWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OKagachiVengefulKami.java b/Mage.Sets/src/mage/cards/o/OKagachiVengefulKami.java
index 7fc8769ba37..ffcbbe77e88 100644
--- a/Mage.Sets/src/mage/cards/o/OKagachiVengefulKami.java
+++ b/Mage.Sets/src/mage/cards/o/OKagachiVengefulKami.java
@@ -58,7 +58,7 @@ import mage.watchers.common.PlayersAttackedLastTurnWatcher;
*
* @author spjspj
*/
-public class OKagachiVengefulKami extends CardImpl {
+public final class OKagachiVengefulKami extends CardImpl {
public OKagachiVengefulKami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/ONaginata.java b/Mage.Sets/src/mage/cards/o/ONaginata.java
index f617aeef314..cfbebac1f2e 100644
--- a/Mage.Sets/src/mage/cards/o/ONaginata.java
+++ b/Mage.Sets/src/mage/cards/o/ONaginata.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ONaginata extends CardImpl {
+public final class ONaginata extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature with 3 or more power");
diff --git a/Mage.Sets/src/mage/cards/o/OakStreetInnkeeper.java b/Mage.Sets/src/mage/cards/o/OakStreetInnkeeper.java
index 2f723a2e2c8..f94c7e2df07 100644
--- a/Mage.Sets/src/mage/cards/o/OakStreetInnkeeper.java
+++ b/Mage.Sets/src/mage/cards/o/OakStreetInnkeeper.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LevelX2
*/
-public class OakStreetInnkeeper extends CardImpl {
+public final class OakStreetInnkeeper extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("tapped creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/o/OakenBrawler.java b/Mage.Sets/src/mage/cards/o/OakenBrawler.java
index 28a607817d4..a043706de64 100644
--- a/Mage.Sets/src/mage/cards/o/OakenBrawler.java
+++ b/Mage.Sets/src/mage/cards/o/OakenBrawler.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class OakenBrawler extends CardImpl {
+public final class OakenBrawler extends CardImpl {
public OakenBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/Oakenform.java b/Mage.Sets/src/mage/cards/o/Oakenform.java
index 1c9336552cd..d930c7ae4a9 100644
--- a/Mage.Sets/src/mage/cards/o/Oakenform.java
+++ b/Mage.Sets/src/mage/cards/o/Oakenform.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Oakenform extends CardImpl {
+public final class Oakenform extends CardImpl {
public Oakenform(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OakgnarlWarrior.java b/Mage.Sets/src/mage/cards/o/OakgnarlWarrior.java
index ea3ef96b91c..6783e0060c1 100644
--- a/Mage.Sets/src/mage/cards/o/OakgnarlWarrior.java
+++ b/Mage.Sets/src/mage/cards/o/OakgnarlWarrior.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class OakgnarlWarrior extends CardImpl {
+public final class OakgnarlWarrior extends CardImpl {
public OakgnarlWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OakheartDryads.java b/Mage.Sets/src/mage/cards/o/OakheartDryads.java
index 890f28738fd..a464cfcaee5 100644
--- a/Mage.Sets/src/mage/cards/o/OakheartDryads.java
+++ b/Mage.Sets/src/mage/cards/o/OakheartDryads.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OakheartDryads extends CardImpl {
+public final class OakheartDryads extends CardImpl {
public OakheartDryads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OashraCultivator.java b/Mage.Sets/src/mage/cards/o/OashraCultivator.java
index e488ab21e1e..160151db9f4 100644
--- a/Mage.Sets/src/mage/cards/o/OashraCultivator.java
+++ b/Mage.Sets/src/mage/cards/o/OashraCultivator.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class OashraCultivator extends CardImpl {
+public final class OashraCultivator extends CardImpl {
public OashraCultivator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
@@ -61,7 +61,7 @@ public class OashraCultivator extends CardImpl {
// {2}{G}, {T}, Sacrifice Oashra Cultivator: Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new ManaCostsImpl("{2}{G}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/o/Oasis.java b/Mage.Sets/src/mage/cards/o/Oasis.java
index 0a35b4ed4e3..0c1f95b52e3 100644
--- a/Mage.Sets/src/mage/cards/o/Oasis.java
+++ b/Mage.Sets/src/mage/cards/o/Oasis.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author daagar
*/
-public class Oasis extends CardImpl {
+public final class Oasis extends CardImpl {
public Oasis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/o/OasisRitualist.java b/Mage.Sets/src/mage/cards/o/OasisRitualist.java
index ab1e9d509ed..34936daf74f 100644
--- a/Mage.Sets/src/mage/cards/o/OasisRitualist.java
+++ b/Mage.Sets/src/mage/cards/o/OasisRitualist.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class OasisRitualist extends CardImpl {
+public final class OasisRitualist extends CardImpl {
public OasisRitualist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OathOfAjani.java b/Mage.Sets/src/mage/cards/o/OathOfAjani.java
index 22b279999c6..f69bf7dcd66 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfAjani.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfAjani.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterPlaneswalkerCard;
/**
* @author JRHerlehy
*/
-public class OathOfAjani extends CardImpl {
+public final class OathOfAjani extends CardImpl {
public OathOfAjani(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OathOfChandra.java b/Mage.Sets/src/mage/cards/o/OathOfChandra.java
index 0278925095d..dda29eab3a7 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfChandra.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfChandra.java
@@ -54,7 +54,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class OathOfChandra extends CardImpl {
+public final class OathOfChandra extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/o/OathOfDruids.java b/Mage.Sets/src/mage/cards/o/OathOfDruids.java
index 804b8043e53..bf504277a7a 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfDruids.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfDruids.java
@@ -52,7 +52,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class OathOfDruids extends CardImpl {
+public final class OathOfDruids extends CardImpl {
private final UUID originalId;
private static final FilterPlayer filter = new FilterPlayer();
diff --git a/Mage.Sets/src/mage/cards/o/OathOfGhouls.java b/Mage.Sets/src/mage/cards/o/OathOfGhouls.java
index 23df2de0545..b76852dba24 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfGhouls.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfGhouls.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author TheElk801
*/
-public class OathOfGhouls extends CardImpl {
+public final class OathOfGhouls extends CardImpl {
private final UUID originalId;
private static final FilterPlayer filter = new FilterPlayer();
diff --git a/Mage.Sets/src/mage/cards/o/OathOfGideon.java b/Mage.Sets/src/mage/cards/o/OathOfGideon.java
index 420923e6372..a288fe286ea 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfGideon.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfGideon.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.KorAllyToken;
*
* @author LevelX2
*/
-public class OathOfGideon extends CardImpl {
+public final class OathOfGideon extends CardImpl {
public OathOfGideon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OathOfJace.java b/Mage.Sets/src/mage/cards/o/OathOfJace.java
index 5e17e2e9b1e..a9d8157071d 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfJace.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfJace.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class OathOfJace extends CardImpl {
+public final class OathOfJace extends CardImpl {
public OathOfJace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OathOfLieges.java b/Mage.Sets/src/mage/cards/o/OathOfLieges.java
index c8d6524d4bd..f6383ddd232 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfLieges.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfLieges.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class OathOfLieges extends CardImpl {
+public final class OathOfLieges extends CardImpl {
private final UUID originalId;
private static final FilterPlayer FILTER = new FilterPlayer("player who controls more lands than you do and is your opponent");
@@ -119,7 +119,7 @@ class OathOfLiegesEffect extends OneShotEffect {
Player activePlayer = game.getPlayer(game.getActivePlayerId());
if (activePlayer != null) {
if (activePlayer.chooseUse(outcome, "Search your library for a basic land card, put that card onto the battlefield, then shuffle your library?", source, game)) {
- Effect effect = new SearchLibraryPutInPlayTargetPlayerEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), false, true, Outcome.PutLandInPlay, true);
+ Effect effect = new SearchLibraryPutInPlayTargetPlayerEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), false, true, Outcome.PutLandInPlay, true);
effect.setTargetPointer(new FixedTarget(game.getActivePlayerId()));
return effect.apply(game, source);
}
diff --git a/Mage.Sets/src/mage/cards/o/OathOfLiliana.java b/Mage.Sets/src/mage/cards/o/OathOfLiliana.java
index 79f6a39a980..9880cffb465 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfLiliana.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfLiliana.java
@@ -50,7 +50,7 @@ import mage.watchers.Watcher;
/**
* @author fireshoes
*/
-public class OathOfLiliana extends CardImpl {
+public final class OathOfLiliana extends CardImpl {
public OathOfLiliana(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OathOfMages.java b/Mage.Sets/src/mage/cards/o/OathOfMages.java
index 728cb6abf67..218d95e9b2e 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfMages.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfMages.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class OathOfMages extends CardImpl {
+public final class OathOfMages extends CardImpl {
private final UUID originalId;
private static final FilterPlayer filter = new FilterPlayer();
diff --git a/Mage.Sets/src/mage/cards/o/OathOfNissa.java b/Mage.Sets/src/mage/cards/o/OathOfNissa.java
index dc82ce4dd46..559d4a26413 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfNissa.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfNissa.java
@@ -49,7 +49,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class OathOfNissa extends CardImpl {
+public final class OathOfNissa extends CardImpl {
public OathOfNissa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OathOfScholars.java b/Mage.Sets/src/mage/cards/o/OathOfScholars.java
index f463d2e3b91..1d8ef99eefd 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfScholars.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfScholars.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class OathOfScholars extends CardImpl {
+public final class OathOfScholars extends CardImpl {
private final UUID originalId;
private static final FilterPlayer filter = new FilterPlayer();
diff --git a/Mage.Sets/src/mage/cards/o/OathOfTeferi.java b/Mage.Sets/src/mage/cards/o/OathOfTeferi.java
index 045df425918..fc34d4a9390 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfTeferi.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfTeferi.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class OathOfTeferi extends CardImpl {
+public final class OathOfTeferi extends CardImpl {
private final static FilterControlledPermanent filter = new FilterControlledPermanent("another target permanent you control");
diff --git a/Mage.Sets/src/mage/cards/o/OathOfTheAncientWood.java b/Mage.Sets/src/mage/cards/o/OathOfTheAncientWood.java
index c779e2d6f41..dd3c5242aa7 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfTheAncientWood.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfTheAncientWood.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OathOfTheAncientWood extends CardImpl {
+public final class OathOfTheAncientWood extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Oath of the Ancient Wood or another enchantment");
diff --git a/Mage.Sets/src/mage/cards/o/OathkeeperTakenosDaisho.java b/Mage.Sets/src/mage/cards/o/OathkeeperTakenosDaisho.java
index 339d9827393..37daa2fa4da 100644
--- a/Mage.Sets/src/mage/cards/o/OathkeeperTakenosDaisho.java
+++ b/Mage.Sets/src/mage/cards/o/OathkeeperTakenosDaisho.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class OathkeeperTakenosDaisho extends CardImpl {
+public final class OathkeeperTakenosDaisho extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("it's a Samurai card");
static {
diff --git a/Mage.Sets/src/mage/cards/o/OathswornGiant.java b/Mage.Sets/src/mage/cards/o/OathswornGiant.java
index 9ccabc351f7..d05d1aeab38 100644
--- a/Mage.Sets/src/mage/cards/o/OathswornGiant.java
+++ b/Mage.Sets/src/mage/cards/o/OathswornGiant.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class OathswornGiant extends CardImpl {
+public final class OathswornGiant extends CardImpl {
public OathswornGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OathswornVampire.java b/Mage.Sets/src/mage/cards/o/OathswornVampire.java
index 0489e1449d7..9136c981424 100644
--- a/Mage.Sets/src/mage/cards/o/OathswornVampire.java
+++ b/Mage.Sets/src/mage/cards/o/OathswornVampire.java
@@ -52,7 +52,7 @@ import mage.watchers.common.PlayerGainedLifeWatcher;
*
* @author LevelX2
*/
-public class OathswornVampire extends CardImpl {
+public final class OathswornVampire extends CardImpl {
public OathswornVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/ObNixilisOfTheBlackOath.java b/Mage.Sets/src/mage/cards/o/ObNixilisOfTheBlackOath.java
index 23b3dcea23d..ed03ed05d18 100644
--- a/Mage.Sets/src/mage/cards/o/ObNixilisOfTheBlackOath.java
+++ b/Mage.Sets/src/mage/cards/o/ObNixilisOfTheBlackOath.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ObNixilisOfTheBlackOath extends CardImpl {
+public final class ObNixilisOfTheBlackOath extends CardImpl {
public ObNixilisOfTheBlackOath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/ObNixilisReignited.java b/Mage.Sets/src/mage/cards/o/ObNixilisReignited.java
index a6719e314a0..85ffc933fbd 100644
--- a/Mage.Sets/src/mage/cards/o/ObNixilisReignited.java
+++ b/Mage.Sets/src/mage/cards/o/ObNixilisReignited.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class ObNixilisReignited extends CardImpl {
+public final class ObNixilisReignited extends CardImpl {
public ObNixilisReignited(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/ObNixilisTheFallen.java b/Mage.Sets/src/mage/cards/o/ObNixilisTheFallen.java
index a7a39a5174b..71c42e69ccb 100644
--- a/Mage.Sets/src/mage/cards/o/ObNixilisTheFallen.java
+++ b/Mage.Sets/src/mage/cards/o/ObNixilisTheFallen.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class ObNixilisTheFallen extends CardImpl {
+public final class ObNixilisTheFallen extends CardImpl {
public ObNixilisTheFallen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/ObNixilisUnshackled.java b/Mage.Sets/src/mage/cards/o/ObNixilisUnshackled.java
index 20ef8ac2e4c..bfc5d811b23 100644
--- a/Mage.Sets/src/mage/cards/o/ObNixilisUnshackled.java
+++ b/Mage.Sets/src/mage/cards/o/ObNixilisUnshackled.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class ObNixilisUnshackled extends CardImpl {
+public final class ObNixilisUnshackled extends CardImpl {
public ObNixilisUnshackled(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/ObeliskOfAlara.java b/Mage.Sets/src/mage/cards/o/ObeliskOfAlara.java
index 384a5b00eaa..4b5f6f93eb9 100644
--- a/Mage.Sets/src/mage/cards/o/ObeliskOfAlara.java
+++ b/Mage.Sets/src/mage/cards/o/ObeliskOfAlara.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author North
*/
-public class ObeliskOfAlara extends CardImpl {
+public final class ObeliskOfAlara extends CardImpl {
public ObeliskOfAlara(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/o/ObeliskOfBant.java b/Mage.Sets/src/mage/cards/o/ObeliskOfBant.java
index 02b9bded263..fee3f3d606f 100644
--- a/Mage.Sets/src/mage/cards/o/ObeliskOfBant.java
+++ b/Mage.Sets/src/mage/cards/o/ObeliskOfBant.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ObeliskOfBant extends CardImpl {
+public final class ObeliskOfBant extends CardImpl {
public ObeliskOfBant (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/ObeliskOfEsper.java b/Mage.Sets/src/mage/cards/o/ObeliskOfEsper.java
index fbf4ea964a6..65fa29f6f82 100644
--- a/Mage.Sets/src/mage/cards/o/ObeliskOfEsper.java
+++ b/Mage.Sets/src/mage/cards/o/ObeliskOfEsper.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ObeliskOfEsper extends CardImpl {
+public final class ObeliskOfEsper extends CardImpl {
public ObeliskOfEsper (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/ObeliskOfGrixis.java b/Mage.Sets/src/mage/cards/o/ObeliskOfGrixis.java
index b4cfc373696..8bef5f0fe82 100644
--- a/Mage.Sets/src/mage/cards/o/ObeliskOfGrixis.java
+++ b/Mage.Sets/src/mage/cards/o/ObeliskOfGrixis.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ObeliskOfGrixis extends CardImpl {
+public final class ObeliskOfGrixis extends CardImpl {
public ObeliskOfGrixis (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/ObeliskOfJund.java b/Mage.Sets/src/mage/cards/o/ObeliskOfJund.java
index 9df50db659b..2620111c8d5 100644
--- a/Mage.Sets/src/mage/cards/o/ObeliskOfJund.java
+++ b/Mage.Sets/src/mage/cards/o/ObeliskOfJund.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ObeliskOfJund extends CardImpl {
+public final class ObeliskOfJund extends CardImpl {
public ObeliskOfJund (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/ObeliskOfNaya.java b/Mage.Sets/src/mage/cards/o/ObeliskOfNaya.java
index a5f62f7a3e1..ef1cd599f1a 100644
--- a/Mage.Sets/src/mage/cards/o/ObeliskOfNaya.java
+++ b/Mage.Sets/src/mage/cards/o/ObeliskOfNaya.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ObeliskOfNaya extends CardImpl {
+public final class ObeliskOfNaya extends CardImpl {
public ObeliskOfNaya (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/ObeliskOfUndoing.java b/Mage.Sets/src/mage/cards/o/ObeliskOfUndoing.java
index da1b54b6cb9..b38b1bae669 100644
--- a/Mage.Sets/src/mage/cards/o/ObeliskOfUndoing.java
+++ b/Mage.Sets/src/mage/cards/o/ObeliskOfUndoing.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author MarcoMarin
*/
-public class ObeliskOfUndoing extends CardImpl {
+public final class ObeliskOfUndoing extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/o/ObeliskOfUrd.java b/Mage.Sets/src/mage/cards/o/ObeliskOfUrd.java
index 8c6e9863634..7472dc3ba55 100644
--- a/Mage.Sets/src/mage/cards/o/ObeliskOfUrd.java
+++ b/Mage.Sets/src/mage/cards/o/ObeliskOfUrd.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class ObeliskOfUrd extends CardImpl {
+public final class ObeliskOfUrd extends CardImpl {
public ObeliskOfUrd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/o/ObeliskSpider.java b/Mage.Sets/src/mage/cards/o/ObeliskSpider.java
index 9d4d9a75e83..4689926dc1a 100644
--- a/Mage.Sets/src/mage/cards/o/ObeliskSpider.java
+++ b/Mage.Sets/src/mage/cards/o/ObeliskSpider.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class ObeliskSpider extends CardImpl {
+public final class ObeliskSpider extends CardImpl {
public ObeliskSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/ObiWanKenobi.java b/Mage.Sets/src/mage/cards/o/ObiWanKenobi.java
index c215ee15cca..ac43450ebf6 100644
--- a/Mage.Sets/src/mage/cards/o/ObiWanKenobi.java
+++ b/Mage.Sets/src/mage/cards/o/ObiWanKenobi.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo import mage.game.command.emblems.ObiWanKenobiEmblem;
*/
-public class ObiWanKenobi extends CardImpl {
+public final class ObiWanKenobi extends CardImpl {
public ObiWanKenobi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Oblation.java b/Mage.Sets/src/mage/cards/o/Oblation.java
index fef4b582dc9..5020ee19623 100644
--- a/Mage.Sets/src/mage/cards/o/Oblation.java
+++ b/Mage.Sets/src/mage/cards/o/Oblation.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author emerald000
*/
-public class Oblation extends CardImpl {
+public final class Oblation extends CardImpl {
public Oblation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/Obliterate.java b/Mage.Sets/src/mage/cards/o/Obliterate.java
index 971a2fcbd02..290553a2b21 100644
--- a/Mage.Sets/src/mage/cards/o/Obliterate.java
+++ b/Mage.Sets/src/mage/cards/o/Obliterate.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class Obliterate extends CardImpl {
+public final class Obliterate extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts, creatures, and lands");
diff --git a/Mage.Sets/src/mage/cards/o/OblivionCrown.java b/Mage.Sets/src/mage/cards/o/OblivionCrown.java
index d92926b1f2d..199a4a98127 100644
--- a/Mage.Sets/src/mage/cards/o/OblivionCrown.java
+++ b/Mage.Sets/src/mage/cards/o/OblivionCrown.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author djbrez
*/
-public class OblivionCrown extends CardImpl {
+public final class OblivionCrown extends CardImpl {
public OblivionCrown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OblivionRing.java b/Mage.Sets/src/mage/cards/o/OblivionRing.java
index 9e5c6a51fc6..bcf08973f5b 100644
--- a/Mage.Sets/src/mage/cards/o/OblivionRing.java
+++ b/Mage.Sets/src/mage/cards/o/OblivionRing.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class OblivionRing extends CardImpl {
+public final class OblivionRing extends CardImpl {
private static final FilterNonlandPermanent anotherNonlandPermanent = new FilterNonlandPermanent("another target nonland permanent");
diff --git a/Mage.Sets/src/mage/cards/o/OblivionSower.java b/Mage.Sets/src/mage/cards/o/OblivionSower.java
index 98b41acdfbc..f4b5977bf11 100644
--- a/Mage.Sets/src/mage/cards/o/OblivionSower.java
+++ b/Mage.Sets/src/mage/cards/o/OblivionSower.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class OblivionSower extends CardImpl {
+public final class OblivionSower extends CardImpl {
public OblivionSower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/o/OblivionStone.java b/Mage.Sets/src/mage/cards/o/OblivionStone.java
index b7ddb74b8a0..d7d6d83e2d2 100644
--- a/Mage.Sets/src/mage/cards/o/OblivionStone.java
+++ b/Mage.Sets/src/mage/cards/o/OblivionStone.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class OblivionStone extends CardImpl {
+public final class OblivionStone extends CardImpl {
public OblivionStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/OblivionStrike.java b/Mage.Sets/src/mage/cards/o/OblivionStrike.java
index 83111867693..55eff116711 100644
--- a/Mage.Sets/src/mage/cards/o/OblivionStrike.java
+++ b/Mage.Sets/src/mage/cards/o/OblivionStrike.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OblivionStrike extends CardImpl {
+public final class OblivionStrike extends CardImpl {
public OblivionStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OboroBreezecaller.java b/Mage.Sets/src/mage/cards/o/OboroBreezecaller.java
index d09655e4e9f..bb8c3383cfe 100644
--- a/Mage.Sets/src/mage/cards/o/OboroBreezecaller.java
+++ b/Mage.Sets/src/mage/cards/o/OboroBreezecaller.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki
*/
-public class OboroBreezecaller extends CardImpl {
+public final class OboroBreezecaller extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("land");
diff --git a/Mage.Sets/src/mage/cards/o/OboroEnvoy.java b/Mage.Sets/src/mage/cards/o/OboroEnvoy.java
index b29d98c9fb2..3dd01d1c0ff 100644
--- a/Mage.Sets/src/mage/cards/o/OboroEnvoy.java
+++ b/Mage.Sets/src/mage/cards/o/OboroEnvoy.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OboroEnvoy extends CardImpl {
+public final class OboroEnvoy extends CardImpl {
public OboroEnvoy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OboroPalaceInTheClouds.java b/Mage.Sets/src/mage/cards/o/OboroPalaceInTheClouds.java
index ef7160833c7..cb4d4438359 100644
--- a/Mage.Sets/src/mage/cards/o/OboroPalaceInTheClouds.java
+++ b/Mage.Sets/src/mage/cards/o/OboroPalaceInTheClouds.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class OboroPalaceInTheClouds extends CardImpl {
+public final class OboroPalaceInTheClouds extends CardImpl {
public OboroPalaceInTheClouds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/o/ObscuringAether.java b/Mage.Sets/src/mage/cards/o/ObscuringAether.java
index 5cbc3d93ee0..61bbb94dedd 100644
--- a/Mage.Sets/src/mage/cards/o/ObscuringAether.java
+++ b/Mage.Sets/src/mage/cards/o/ObscuringAether.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.other.FaceDownPredicate;
*
* @author LevelX2
*/
-public class ObscuringAether extends CardImpl {
+public final class ObscuringAether extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("Face-down creature spells");
diff --git a/Mage.Sets/src/mage/cards/o/ObservantAlseid.java b/Mage.Sets/src/mage/cards/o/ObservantAlseid.java
index 510c0adc7a5..0dbab595aae 100644
--- a/Mage.Sets/src/mage/cards/o/ObservantAlseid.java
+++ b/Mage.Sets/src/mage/cards/o/ObservantAlseid.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ObservantAlseid extends CardImpl {
+public final class ObservantAlseid extends CardImpl {
public ObservantAlseid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/ObsessiveSearch.java b/Mage.Sets/src/mage/cards/o/ObsessiveSearch.java
index 69a64792928..80763f79b20 100644
--- a/Mage.Sets/src/mage/cards/o/ObsessiveSearch.java
+++ b/Mage.Sets/src/mage/cards/o/ObsessiveSearch.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author magenoxx_at_gmail.com
*/
-public class ObsessiveSearch extends CardImpl {
+public final class ObsessiveSearch extends CardImpl {
public ObsessiveSearch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/o/ObsessiveSkinner.java b/Mage.Sets/src/mage/cards/o/ObsessiveSkinner.java
index 57da183c864..0df22abe329 100644
--- a/Mage.Sets/src/mage/cards/o/ObsessiveSkinner.java
+++ b/Mage.Sets/src/mage/cards/o/ObsessiveSkinner.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ObsessiveSkinner extends CardImpl {
+public final class ObsessiveSkinner extends CardImpl {
public ObsessiveSkinner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/ObsianusGolem.java b/Mage.Sets/src/mage/cards/o/ObsianusGolem.java
index 82fea9b3b5b..f055c96fc44 100644
--- a/Mage.Sets/src/mage/cards/o/ObsianusGolem.java
+++ b/Mage.Sets/src/mage/cards/o/ObsianusGolem.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ObsianusGolem extends CardImpl {
+public final class ObsianusGolem extends CardImpl {
public ObsianusGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/o/ObsidianAcolyte.java b/Mage.Sets/src/mage/cards/o/ObsidianAcolyte.java
index 61582498801..9d9e53ce1cd 100644
--- a/Mage.Sets/src/mage/cards/o/ObsidianAcolyte.java
+++ b/Mage.Sets/src/mage/cards/o/ObsidianAcolyte.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ObsidianAcolyte extends CardImpl {
+public final class ObsidianAcolyte extends CardImpl {
public ObsidianAcolyte(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/ObsidianBattleAxe.java b/Mage.Sets/src/mage/cards/o/ObsidianBattleAxe.java
index d1b0124c828..29cb23b3b53 100644
--- a/Mage.Sets/src/mage/cards/o/ObsidianBattleAxe.java
+++ b/Mage.Sets/src/mage/cards/o/ObsidianBattleAxe.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class ObsidianBattleAxe extends CardImpl {
+public final class ObsidianBattleAxe extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a Warrior creature");
static {
diff --git a/Mage.Sets/src/mage/cards/o/ObsidianFireheart.java b/Mage.Sets/src/mage/cards/o/ObsidianFireheart.java
index b8d0aabb7ab..8f03d5dbfa2 100644
--- a/Mage.Sets/src/mage/cards/o/ObsidianFireheart.java
+++ b/Mage.Sets/src/mage/cards/o/ObsidianFireheart.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class ObsidianFireheart extends CardImpl {
+public final class ObsidianFireheart extends CardImpl {
private static final String rule = "For as long as that land has a blaze counter on it, it has \"At the beginning of your upkeep, this land deals 1 damage to you.\" (The land continues to burn after Obsidian Fireheart has left the battlefield.)";
private static final FilterLandPermanent filter = new FilterLandPermanent("land without a blaze counter on it");
diff --git a/Mage.Sets/src/mage/cards/o/ObsidianGiant.java b/Mage.Sets/src/mage/cards/o/ObsidianGiant.java
index 7a1f8aefecc..cbf52042a4f 100644
--- a/Mage.Sets/src/mage/cards/o/ObsidianGiant.java
+++ b/Mage.Sets/src/mage/cards/o/ObsidianGiant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class ObsidianGiant extends CardImpl {
+public final class ObsidianGiant extends CardImpl {
public ObsidianGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/ObstinateBaloth.java b/Mage.Sets/src/mage/cards/o/ObstinateBaloth.java
index 442cbab0c3d..e394f169dae 100644
--- a/Mage.Sets/src/mage/cards/o/ObstinateBaloth.java
+++ b/Mage.Sets/src/mage/cards/o/ObstinateBaloth.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ObstinateBaloth extends CardImpl {
+public final class ObstinateBaloth extends CardImpl {
public ObstinateBaloth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/ObstinateFamiliar.java b/Mage.Sets/src/mage/cards/o/ObstinateFamiliar.java
index 05724f4a51a..a66b1ac44af 100644
--- a/Mage.Sets/src/mage/cards/o/ObstinateFamiliar.java
+++ b/Mage.Sets/src/mage/cards/o/ObstinateFamiliar.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author cbt33, jeffwadsworth (Archmage Ascension)
*/
-public class ObstinateFamiliar extends CardImpl {
+public final class ObstinateFamiliar extends CardImpl {
public ObstinateFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/o/ObzedatGhostCouncil.java b/Mage.Sets/src/mage/cards/o/ObzedatGhostCouncil.java
index c0c17aab269..156269ce6a5 100644
--- a/Mage.Sets/src/mage/cards/o/ObzedatGhostCouncil.java
+++ b/Mage.Sets/src/mage/cards/o/ObzedatGhostCouncil.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class ObzedatGhostCouncil extends CardImpl {
+public final class ObzedatGhostCouncil extends CardImpl {
public ObzedatGhostCouncil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}{B}{B}");
@@ -69,10 +69,10 @@ public class ObzedatGhostCouncil extends CardImpl {
//When Obzedat, Ghost Council enters the battlefield, target opponent loses 2 life and you gain 2 life.
Ability ability = new EntersBattlefieldTriggeredAbility(new LoseLifeTargetEffect(2));
- ability.addEffect(new GainLifeEffect(2));
+ ability.addEffect(new GainLifeEffect(2).setText("and you gain 2 life"));
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
- //At the beginning of your end step you may exile Obzedat. If you do, return it to the battlefield under it's owner's control at the beginning of your next upkeep. It gains haste.
+ //At the beginning of your end step you may exile Obzedat. If you do, return it to the battlefield under its owner's control at the beginning of your next upkeep. It gains haste.
Ability ability2 = new BeginningOfYourEndStepTriggeredAbility(new ObzedatGhostCouncilExileSourceEffect(), true);
ability2.addEffect(new CreateDelayedTriggeredAbilityEffect(new BeginningOfYourUpkeepdelayTriggeredAbility()));
this.addAbility(ability2);
@@ -92,7 +92,7 @@ class ObzedatGhostCouncilExileSourceEffect extends OneShotEffect {
public ObzedatGhostCouncilExileSourceEffect() {
super(Outcome.Exile);
- staticText = "Exile {this}";
+ staticText = "exile {this}";
}
public ObzedatGhostCouncilExileSourceEffect(final ObzedatGhostCouncilExileSourceEffect effect) {
@@ -147,7 +147,7 @@ class BeginningOfYourUpkeepdelayTriggeredAbility extends DelayedTriggeredAbility
@Override
public String getRule() {
- return "If you do, return it to the battlefield under it's owner's control at the beginning of your next upkeep. It gains haste";
+ return "If you do, return it to the battlefield under its owner's control at the beginning of your next upkeep. It gains haste";
}
}
diff --git a/Mage.Sets/src/mage/cards/o/ObzedatsAid.java b/Mage.Sets/src/mage/cards/o/ObzedatsAid.java
index 42126ab8526..ad3ed0827ef 100644
--- a/Mage.Sets/src/mage/cards/o/ObzedatsAid.java
+++ b/Mage.Sets/src/mage/cards/o/ObzedatsAid.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jeffwadsworth
*/
-public class ObzedatsAid extends CardImpl {
+public final class ObzedatsAid extends CardImpl {
private static final FilterCard filter = new FilterCard("permanent card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/o/OcularHalo.java b/Mage.Sets/src/mage/cards/o/OcularHalo.java
index 99a4816d9af..629e4ee5441 100644
--- a/Mage.Sets/src/mage/cards/o/OcularHalo.java
+++ b/Mage.Sets/src/mage/cards/o/OcularHalo.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class OcularHalo extends CardImpl {
+public final class OcularHalo extends CardImpl {
public OcularHalo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Oculus.java b/Mage.Sets/src/mage/cards/o/Oculus.java
index ad8b32ab840..2fc58c4dd15 100644
--- a/Mage.Sets/src/mage/cards/o/Oculus.java
+++ b/Mage.Sets/src/mage/cards/o/Oculus.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class Oculus extends CardImpl {
+public final class Oculus extends CardImpl {
public Oculus (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OddlyUneven.java b/Mage.Sets/src/mage/cards/o/OddlyUneven.java
index 62ca1babcb5..01255f55730 100644
--- a/Mage.Sets/src/mage/cards/o/OddlyUneven.java
+++ b/Mage.Sets/src/mage/cards/o/OddlyUneven.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class OddlyUneven extends CardImpl {
+public final class OddlyUneven extends CardImpl {
public OddlyUneven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OddsEnds.java b/Mage.Sets/src/mage/cards/o/OddsEnds.java
index 60d6885637b..e867c85f617 100644
--- a/Mage.Sets/src/mage/cards/o/OddsEnds.java
+++ b/Mage.Sets/src/mage/cards/o/OddsEnds.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
import java.util.UUID;
-public class OddsEnds extends SplitCard {
+public final class OddsEnds extends SplitCard {
public OddsEnds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{R}", "{3}{R}{W}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/o/OdiousTrow.java b/Mage.Sets/src/mage/cards/o/OdiousTrow.java
index 61c801ed42c..786fab9ce44 100644
--- a/Mage.Sets/src/mage/cards/o/OdiousTrow.java
+++ b/Mage.Sets/src/mage/cards/o/OdiousTrow.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class OdiousTrow extends CardImpl {
+public final class OdiousTrow extends CardImpl {
public OdiousTrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B/G}");
diff --git a/Mage.Sets/src/mage/cards/o/OdricLunarchMarshal.java b/Mage.Sets/src/mage/cards/o/OdricLunarchMarshal.java
index a88797dcdc9..202122e22d1 100644
--- a/Mage.Sets/src/mage/cards/o/OdricLunarchMarshal.java
+++ b/Mage.Sets/src/mage/cards/o/OdricLunarchMarshal.java
@@ -45,7 +45,7 @@ import mage.game.Game;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class OdricLunarchMarshal extends CardImpl {
+public final class OdricLunarchMarshal extends CardImpl {
public OdricLunarchMarshal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OdricMasterTactician.java b/Mage.Sets/src/mage/cards/o/OdricMasterTactician.java
index 69b5f7aa669..f5474d31c9a 100644
--- a/Mage.Sets/src/mage/cards/o/OdricMasterTactician.java
+++ b/Mage.Sets/src/mage/cards/o/OdricMasterTactician.java
@@ -46,7 +46,7 @@ import mage.watchers.common.ChooseBlockersRedundancyWatcher;
/**
* @author noxx
*/
-public class OdricMasterTactician extends CardImpl {
+public final class OdricMasterTactician extends CardImpl {
public OdricMasterTactician(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OdunosRiverTrawler.java b/Mage.Sets/src/mage/cards/o/OdunosRiverTrawler.java
index bbe6c28d69f..cfe8f4464bd 100644
--- a/Mage.Sets/src/mage/cards/o/OdunosRiverTrawler.java
+++ b/Mage.Sets/src/mage/cards/o/OdunosRiverTrawler.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class OdunosRiverTrawler extends CardImpl {
+public final class OdunosRiverTrawler extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantment creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/o/OdylicWraith.java b/Mage.Sets/src/mage/cards/o/OdylicWraith.java
index 50bff509b65..176856660a6 100644
--- a/Mage.Sets/src/mage/cards/o/OdylicWraith.java
+++ b/Mage.Sets/src/mage/cards/o/OdylicWraith.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class OdylicWraith extends CardImpl {
+public final class OdylicWraith extends CardImpl {
public OdylicWraith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OffBalance.java b/Mage.Sets/src/mage/cards/o/OffBalance.java
index 12dac38f2a6..a3f0ff90698 100644
--- a/Mage.Sets/src/mage/cards/o/OffBalance.java
+++ b/Mage.Sets/src/mage/cards/o/OffBalance.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class OffBalance extends CardImpl {
+public final class OffBalance extends CardImpl {
public OffBalance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/o/Offalsnout.java b/Mage.Sets/src/mage/cards/o/Offalsnout.java
index 9e941443cce..29eada2371a 100644
--- a/Mage.Sets/src/mage/cards/o/Offalsnout.java
+++ b/Mage.Sets/src/mage/cards/o/Offalsnout.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class Offalsnout extends CardImpl {
+public final class Offalsnout extends CardImpl {
public Offalsnout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OfferingToAsha.java b/Mage.Sets/src/mage/cards/o/OfferingToAsha.java
index e935ba8b48e..e5fc28c7a11 100644
--- a/Mage.Sets/src/mage/cards/o/OfferingToAsha.java
+++ b/Mage.Sets/src/mage/cards/o/OfferingToAsha.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class OfferingToAsha extends CardImpl {
+public final class OfferingToAsha extends CardImpl {
public OfferingToAsha(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreArsonist.java b/Mage.Sets/src/mage/cards/o/OgreArsonist.java
index 67d682a8430..61c4e390e7d 100644
--- a/Mage.Sets/src/mage/cards/o/OgreArsonist.java
+++ b/Mage.Sets/src/mage/cards/o/OgreArsonist.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetLandPermanent;
* @author LoneFox
*/
-public class OgreArsonist extends CardImpl {
+public final class OgreArsonist extends CardImpl {
public OgreArsonist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreBattledriver.java b/Mage.Sets/src/mage/cards/o/OgreBattledriver.java
index e14fcc3d5f1..7e19ecc2bfd 100644
--- a/Mage.Sets/src/mage/cards/o/OgreBattledriver.java
+++ b/Mage.Sets/src/mage/cards/o/OgreBattledriver.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author jeffwadsworth
*/
-public class OgreBattledriver extends CardImpl {
+public final class OgreBattledriver extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/o/OgreBerserker.java b/Mage.Sets/src/mage/cards/o/OgreBerserker.java
index 646791ceccb..4fa6ecceb77 100644
--- a/Mage.Sets/src/mage/cards/o/OgreBerserker.java
+++ b/Mage.Sets/src/mage/cards/o/OgreBerserker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class OgreBerserker extends CardImpl {
+public final class OgreBerserker extends CardImpl {
public OgreBerserker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreGatecrasher.java b/Mage.Sets/src/mage/cards/o/OgreGatecrasher.java
index 954a46226ff..c02a24f0345 100644
--- a/Mage.Sets/src/mage/cards/o/OgreGatecrasher.java
+++ b/Mage.Sets/src/mage/cards/o/OgreGatecrasher.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class OgreGatecrasher extends CardImpl {
+public final class OgreGatecrasher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with defender");
diff --git a/Mage.Sets/src/mage/cards/o/OgreGeargrabber.java b/Mage.Sets/src/mage/cards/o/OgreGeargrabber.java
index ab624558fc9..991d1f208fc 100644
--- a/Mage.Sets/src/mage/cards/o/OgreGeargrabber.java
+++ b/Mage.Sets/src/mage/cards/o/OgreGeargrabber.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class OgreGeargrabber extends CardImpl {
+public final class OgreGeargrabber extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Equipment an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/o/OgreJailbreaker.java b/Mage.Sets/src/mage/cards/o/OgreJailbreaker.java
index 3e21dad937a..a4782c3cee1 100644
--- a/Mage.Sets/src/mage/cards/o/OgreJailbreaker.java
+++ b/Mage.Sets/src/mage/cards/o/OgreJailbreaker.java
@@ -45,7 +45,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class OgreJailbreaker extends CardImpl {
+public final class OgreJailbreaker extends CardImpl {
public OgreJailbreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreLeadfoot.java b/Mage.Sets/src/mage/cards/o/OgreLeadfoot.java
index 29fc3d256de..db5c2e898b9 100644
--- a/Mage.Sets/src/mage/cards/o/OgreLeadfoot.java
+++ b/Mage.Sets/src/mage/cards/o/OgreLeadfoot.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterArtifactCreaturePermanent;
*
* @author LevelX2
*/
-public class OgreLeadfoot extends CardImpl {
+public final class OgreLeadfoot extends CardImpl {
public OgreLeadfoot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreMarauder.java b/Mage.Sets/src/mage/cards/o/OgreMarauder.java
index aa76539c7fd..028e208a997 100644
--- a/Mage.Sets/src/mage/cards/o/OgreMarauder.java
+++ b/Mage.Sets/src/mage/cards/o/OgreMarauder.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class OgreMarauder extends CardImpl {
+public final class OgreMarauder extends CardImpl {
public OgreMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreMenial.java b/Mage.Sets/src/mage/cards/o/OgreMenial.java
index f1153ea62fd..0173c8e844f 100644
--- a/Mage.Sets/src/mage/cards/o/OgreMenial.java
+++ b/Mage.Sets/src/mage/cards/o/OgreMenial.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class OgreMenial extends CardImpl {
+public final class OgreMenial extends CardImpl {
public OgreMenial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreRecluse.java b/Mage.Sets/src/mage/cards/o/OgreRecluse.java
index 15e225fdf7b..475eab3a330 100644
--- a/Mage.Sets/src/mage/cards/o/OgreRecluse.java
+++ b/Mage.Sets/src/mage/cards/o/OgreRecluse.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class OgreRecluse extends CardImpl {
+public final class OgreRecluse extends CardImpl {
public OgreRecluse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreResister.java b/Mage.Sets/src/mage/cards/o/OgreResister.java
index 65962707ed7..abb8eb29799 100644
--- a/Mage.Sets/src/mage/cards/o/OgreResister.java
+++ b/Mage.Sets/src/mage/cards/o/OgreResister.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class OgreResister extends CardImpl {
+public final class OgreResister extends CardImpl {
public OgreResister (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreSavant.java b/Mage.Sets/src/mage/cards/o/OgreSavant.java
index 7fa9b62706d..70770aea852 100644
--- a/Mage.Sets/src/mage/cards/o/OgreSavant.java
+++ b/Mage.Sets/src/mage/cards/o/OgreSavant.java
@@ -46,7 +46,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author FenrisulfrX
*/
-public class OgreSavant extends CardImpl {
+public final class OgreSavant extends CardImpl {
public OgreSavant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreSentry.java b/Mage.Sets/src/mage/cards/o/OgreSentry.java
index 882c94beee9..efebc4a1e28 100644
--- a/Mage.Sets/src/mage/cards/o/OgreSentry.java
+++ b/Mage.Sets/src/mage/cards/o/OgreSentry.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class OgreSentry extends CardImpl {
+public final class OgreSentry extends CardImpl {
public OgreSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreShaman.java b/Mage.Sets/src/mage/cards/o/OgreShaman.java
index 97f1c983213..d0b8f35c3a6 100644
--- a/Mage.Sets/src/mage/cards/o/OgreShaman.java
+++ b/Mage.Sets/src/mage/cards/o/OgreShaman.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class OgreShaman extends CardImpl {
+public final class OgreShaman extends CardImpl {
public OgreShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreSlumlord.java b/Mage.Sets/src/mage/cards/o/OgreSlumlord.java
index 99b6502945c..3239e7810a5 100644
--- a/Mage.Sets/src/mage/cards/o/OgreSlumlord.java
+++ b/Mage.Sets/src/mage/cards/o/OgreSlumlord.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.RatToken;
*
* @author LevelX2
*/
-public class OgreSlumlord extends CardImpl {
+public final class OgreSlumlord extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another nontoken creature");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("Rats you control");
diff --git a/Mage.Sets/src/mage/cards/o/OgreTaskmaster.java b/Mage.Sets/src/mage/cards/o/OgreTaskmaster.java
index cf3972a1649..27ae787ac95 100644
--- a/Mage.Sets/src/mage/cards/o/OgreTaskmaster.java
+++ b/Mage.Sets/src/mage/cards/o/OgreTaskmaster.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class OgreTaskmaster extends CardImpl {
+public final class OgreTaskmaster extends CardImpl {
public OgreTaskmaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OgreWarrior.java b/Mage.Sets/src/mage/cards/o/OgreWarrior.java
index 160085ece8d..3d360074cb4 100644
--- a/Mage.Sets/src/mage/cards/o/OgreWarrior.java
+++ b/Mage.Sets/src/mage/cards/o/OgreWarrior.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class OgreWarrior extends CardImpl {
+public final class OgreWarrior extends CardImpl {
public OgreWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OgresCleaver.java b/Mage.Sets/src/mage/cards/o/OgresCleaver.java
index 34aca6814e2..0100546202a 100644
--- a/Mage.Sets/src/mage/cards/o/OgresCleaver.java
+++ b/Mage.Sets/src/mage/cards/o/OgresCleaver.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class OgresCleaver extends CardImpl {
+public final class OgresCleaver extends CardImpl {
public OgresCleaver (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/o/OhranViper.java b/Mage.Sets/src/mage/cards/o/OhranViper.java
index 4b4eecc5e27..f3e677cced6 100644
--- a/Mage.Sets/src/mage/cards/o/OhranViper.java
+++ b/Mage.Sets/src/mage/cards/o/OhranViper.java
@@ -45,7 +45,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class OhranViper extends CardImpl {
+public final class OhranViper extends CardImpl {
public OhranViper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OhranYeti.java b/Mage.Sets/src/mage/cards/o/OhranYeti.java
index dfcfe48500c..f8adaea8059 100644
--- a/Mage.Sets/src/mage/cards/o/OhranYeti.java
+++ b/Mage.Sets/src/mage/cards/o/OhranYeti.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class OhranYeti extends CardImpl {
+public final class OhranYeti extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("snow creature");
diff --git a/Mage.Sets/src/mage/cards/o/OjutaiExemplars.java b/Mage.Sets/src/mage/cards/o/OjutaiExemplars.java
index 49a334ddfdc..3a568d52f6f 100644
--- a/Mage.Sets/src/mage/cards/o/OjutaiExemplars.java
+++ b/Mage.Sets/src/mage/cards/o/OjutaiExemplars.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class OjutaiExemplars extends CardImpl {
+public final class OjutaiExemplars extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/o/OjutaiInterceptor.java b/Mage.Sets/src/mage/cards/o/OjutaiInterceptor.java
index 4b8d1493531..1278aab8b26 100644
--- a/Mage.Sets/src/mage/cards/o/OjutaiInterceptor.java
+++ b/Mage.Sets/src/mage/cards/o/OjutaiInterceptor.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class OjutaiInterceptor extends CardImpl {
+public final class OjutaiInterceptor extends CardImpl {
public OjutaiInterceptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OjutaiMonument.java b/Mage.Sets/src/mage/cards/o/OjutaiMonument.java
index 7d525bee731..45cf9a0e92e 100644
--- a/Mage.Sets/src/mage/cards/o/OjutaiMonument.java
+++ b/Mage.Sets/src/mage/cards/o/OjutaiMonument.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class OjutaiMonument extends CardImpl {
+public final class OjutaiMonument extends CardImpl {
public OjutaiMonument(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/OjutaiSoulOfWinter.java b/Mage.Sets/src/mage/cards/o/OjutaiSoulOfWinter.java
index 0c2f1ac3120..8701ee22f63 100644
--- a/Mage.Sets/src/mage/cards/o/OjutaiSoulOfWinter.java
+++ b/Mage.Sets/src/mage/cards/o/OjutaiSoulOfWinter.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class OjutaiSoulOfWinter extends CardImpl {
+public final class OjutaiSoulOfWinter extends CardImpl {
private static final FilterCreaturePermanent filterDragon = new FilterCreaturePermanent("Dragon you control");
private static final FilterPermanent filterNonlandPermanent = new FilterNonlandPermanent("nonland permanent an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/o/OjutaisBreath.java b/Mage.Sets/src/mage/cards/o/OjutaisBreath.java
index db30bc5bd93..6c165a481af 100644
--- a/Mage.Sets/src/mage/cards/o/OjutaisBreath.java
+++ b/Mage.Sets/src/mage/cards/o/OjutaisBreath.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OjutaisBreath extends CardImpl {
+public final class OjutaisBreath extends CardImpl {
public OjutaisBreath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OjutaisCommand.java b/Mage.Sets/src/mage/cards/o/OjutaisCommand.java
index 7bc186227d5..aed415a6337 100644
--- a/Mage.Sets/src/mage/cards/o/OjutaisCommand.java
+++ b/Mage.Sets/src/mage/cards/o/OjutaisCommand.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class OjutaisCommand extends CardImpl {
+public final class OjutaisCommand extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("creature card with converted mana cost 2 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/o/OjutaisSummons.java b/Mage.Sets/src/mage/cards/o/OjutaisSummons.java
index 65895b46837..ed2c4341bdc 100644
--- a/Mage.Sets/src/mage/cards/o/OjutaisSummons.java
+++ b/Mage.Sets/src/mage/cards/o/OjutaisSummons.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.DjinnMonkToken;
*
* @author fireshoes
*/
-public class OjutaisSummons extends CardImpl {
+public final class OjutaisSummons extends CardImpl {
public OjutaisSummons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OkaunEyeOfChaos.java b/Mage.Sets/src/mage/cards/o/OkaunEyeOfChaos.java
new file mode 100644
index 00000000000..08e925adb0d
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/o/OkaunEyeOfChaos.java
@@ -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.o;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.BeginningOfCombatTriggeredAbility;
+import mage.abilities.common.WinsCoinFlipTriggeredAbility;
+import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount;
+import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue;
+import mage.abilities.effects.common.FlipUntilLoseEffect;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.constants.TargetController;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class OkaunEyeOfChaos extends CardImpl {
+
+ public OkaunEyeOfChaos(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.CYCLOPS);
+ this.subtype.add(SubType.BERSERKER);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Partner with Zndrsplt, Eye of Wisdom (When this creature enters the battlefield, target player may put Zndrsplt into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Zndrsplt, Eye of Wisdom", true));
+
+ // At the beginning of combat on your turn, flip a coin until you lose a flip.
+ this.addAbility(new BeginningOfCombatTriggeredAbility(new FlipUntilLoseEffect(), TargetController.YOU, false));
+
+ // Whenever a player wins a coin flip, double Okaun's power and toughness until end of turn.
+ DynamicValue sourcePower = new SourcePermanentPowerCount();
+ DynamicValue sourceToughness = new SourcePermanentToughnessValue();
+ this.addAbility(new WinsCoinFlipTriggeredAbility(
+ new BoostSourceEffect(
+ sourcePower,
+ sourceToughness,
+ Duration.EndOfTurn,
+ true
+ ).setText("double {this}'s power and toughness until end of turn")
+ ));
+ }
+
+ public OkaunEyeOfChaos(final OkaunEyeOfChaos card) {
+ super(card);
+ }
+
+ @Override
+ public OkaunEyeOfChaos copy() {
+ return new OkaunEyeOfChaos(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/o/OketraTheTrue.java b/Mage.Sets/src/mage/cards/o/OketraTheTrue.java
index 97caef153d6..14b8b3dfee1 100644
--- a/Mage.Sets/src/mage/cards/o/OketraTheTrue.java
+++ b/Mage.Sets/src/mage/cards/o/OketraTheTrue.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class OketraTheTrue extends CardImpl {
+public final class OketraTheTrue extends CardImpl {
public OketraTheTrue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OketrasAttendant.java b/Mage.Sets/src/mage/cards/o/OketrasAttendant.java
index 3358fb24323..53a22e5144d 100644
--- a/Mage.Sets/src/mage/cards/o/OketrasAttendant.java
+++ b/Mage.Sets/src/mage/cards/o/OketrasAttendant.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class OketrasAttendant extends CardImpl {
+public final class OketrasAttendant extends CardImpl {
public OketrasAttendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OketrasAvenger.java b/Mage.Sets/src/mage/cards/o/OketrasAvenger.java
index ab21e2d9054..2c1a5cdd348 100644
--- a/Mage.Sets/src/mage/cards/o/OketrasAvenger.java
+++ b/Mage.Sets/src/mage/cards/o/OketrasAvenger.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author nickymikail
*/
-public class OketrasAvenger extends CardImpl {
+public final class OketrasAvenger extends CardImpl {
public OketrasAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java b/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java
index 39a15267d35..df8630b95e8 100644
--- a/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java
+++ b/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class OketrasLastMercy extends CardImpl {
+public final class OketrasLastMercy extends CardImpl {
public OketrasLastMercy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OketrasMonument.java b/Mage.Sets/src/mage/cards/o/OketrasMonument.java
index 725afe8a48e..da3a76bc331 100644
--- a/Mage.Sets/src/mage/cards/o/OketrasMonument.java
+++ b/Mage.Sets/src/mage/cards/o/OketrasMonument.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.WarriorVigilantToken;
*
* @author fireshoes
*/
-public class OketrasMonument extends CardImpl {
+public final class OketrasMonument extends CardImpl {
private static final FilterCard filter = new FilterCard("White creature spells");
private static final FilterSpell filter2 = new FilterSpell("a creature spell");
diff --git a/Mage.Sets/src/mage/cards/o/OkibaGangShinobi.java b/Mage.Sets/src/mage/cards/o/OkibaGangShinobi.java
index e4fb49fe084..816de5d3f1b 100644
--- a/Mage.Sets/src/mage/cards/o/OkibaGangShinobi.java
+++ b/Mage.Sets/src/mage/cards/o/OkibaGangShinobi.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class OkibaGangShinobi extends CardImpl {
+public final class OkibaGangShinobi extends CardImpl {
public OkibaGangShinobi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OkinaNightwatch.java b/Mage.Sets/src/mage/cards/o/OkinaNightwatch.java
index 822f17ef0a6..6fef614875b 100644
--- a/Mage.Sets/src/mage/cards/o/OkinaNightwatch.java
+++ b/Mage.Sets/src/mage/cards/o/OkinaNightwatch.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class OkinaNightwatch extends CardImpl {
+public final class OkinaNightwatch extends CardImpl {
public OkinaNightwatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OkinaTempleToTheGrandfathers.java b/Mage.Sets/src/mage/cards/o/OkinaTempleToTheGrandfathers.java
index 5fcbf1b68bc..7a16a6963a3 100644
--- a/Mage.Sets/src/mage/cards/o/OkinaTempleToTheGrandfathers.java
+++ b/Mage.Sets/src/mage/cards/o/OkinaTempleToTheGrandfathers.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class OkinaTempleToTheGrandfathers extends CardImpl {
+public final class OkinaTempleToTheGrandfathers extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature");
diff --git a/Mage.Sets/src/mage/cards/o/Okk.java b/Mage.Sets/src/mage/cards/o/Okk.java
index 904a3296dba..58f9c8462c4 100644
--- a/Mage.Sets/src/mage/cards/o/Okk.java
+++ b/Mage.Sets/src/mage/cards/o/Okk.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author icetc
*/
-public class Okk extends CardImpl {
+public final class Okk extends CardImpl {
public Okk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OldGhastbark.java b/Mage.Sets/src/mage/cards/o/OldGhastbark.java
index 181499bc0f1..e63addea911 100644
--- a/Mage.Sets/src/mage/cards/o/OldGhastbark.java
+++ b/Mage.Sets/src/mage/cards/o/OldGhastbark.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class OldGhastbark extends CardImpl {
+public final class OldGhastbark extends CardImpl {
public OldGhastbark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G/W}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java b/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java
index ab50ffac64f..42006c4cda0 100644
--- a/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java
+++ b/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class OldGrowthDryads extends CardImpl {
+public final class OldGrowthDryads extends CardImpl {
public OldGrowthDryads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OldManOfTheSea.java b/Mage.Sets/src/mage/cards/o/OldManOfTheSea.java
index 21557b3d9a5..241cbc9ad9b 100644
--- a/Mage.Sets/src/mage/cards/o/OldManOfTheSea.java
+++ b/Mage.Sets/src/mage/cards/o/OldManOfTheSea.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OldManOfTheSea extends CardImpl {
+public final class OldManOfTheSea extends CardImpl {
public OldManOfTheSea(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OliviaMobilizedForWar.java b/Mage.Sets/src/mage/cards/o/OliviaMobilizedForWar.java
index 1575ef488ba..dbe66d0dd65 100644
--- a/Mage.Sets/src/mage/cards/o/OliviaMobilizedForWar.java
+++ b/Mage.Sets/src/mage/cards/o/OliviaMobilizedForWar.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
/**
* @author fireshoes
*/
-public class OliviaMobilizedForWar extends CardImpl {
+public final class OliviaMobilizedForWar extends CardImpl {
public OliviaMobilizedForWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java b/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java
index 8dbdf0c849c..05764ad8d56 100644
--- a/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java
+++ b/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class OliviaVoldaren extends CardImpl {
+public final class OliviaVoldaren extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
private static final FilterCreaturePermanent vampireFilter = new FilterCreaturePermanent("Vampire");
diff --git a/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.java b/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.java
index 87d5f5fec73..1df33ae5bae 100644
--- a/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.java
+++ b/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class OliviasBloodsworn extends CardImpl {
+public final class OliviasBloodsworn extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampire");
diff --git a/Mage.Sets/src/mage/cards/o/OliviasDragoon.java b/Mage.Sets/src/mage/cards/o/OliviasDragoon.java
index e3f86fb80f5..cd809f6c982 100644
--- a/Mage.Sets/src/mage/cards/o/OliviasDragoon.java
+++ b/Mage.Sets/src/mage/cards/o/OliviasDragoon.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class OliviasDragoon extends CardImpl {
+public final class OliviasDragoon extends CardImpl {
public OliviasDragoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OloroAgelessAscetic.java b/Mage.Sets/src/mage/cards/o/OloroAgelessAscetic.java
index 4b1905ccc23..d0e244e59dc 100644
--- a/Mage.Sets/src/mage/cards/o/OloroAgelessAscetic.java
+++ b/Mage.Sets/src/mage/cards/o/OloroAgelessAscetic.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class OloroAgelessAscetic extends CardImpl {
+public final class OloroAgelessAscetic extends CardImpl {
public OloroAgelessAscetic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OmegaMyr.java b/Mage.Sets/src/mage/cards/o/OmegaMyr.java
index 3d5346b60e3..a1ba2a3fc65 100644
--- a/Mage.Sets/src/mage/cards/o/OmegaMyr.java
+++ b/Mage.Sets/src/mage/cards/o/OmegaMyr.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class OmegaMyr extends CardImpl {
+public final class OmegaMyr extends CardImpl {
public OmegaMyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/o/Omen.java b/Mage.Sets/src/mage/cards/o/Omen.java
index 9d543afd9b9..638ec0dc6db 100644
--- a/Mage.Sets/src/mage/cards/o/Omen.java
+++ b/Mage.Sets/src/mage/cards/o/Omen.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class Omen extends CardImpl {
+public final class Omen extends CardImpl {
public Omen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OmenMachine.java b/Mage.Sets/src/mage/cards/o/OmenMachine.java
index c8928fce4a7..5c0c6ee8250 100644
--- a/Mage.Sets/src/mage/cards/o/OmenMachine.java
+++ b/Mage.Sets/src/mage/cards/o/OmenMachine.java
@@ -28,6 +28,7 @@
package mage.cards.o;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfDrawTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
@@ -50,7 +51,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class OmenMachine extends CardImpl {
+public final class OmenMachine extends CardImpl {
public OmenMachine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
@@ -126,7 +127,7 @@ class OmenMachineEffect2 extends OneShotEffect {
if (card.isLand()) {
player.moveCards(card, Zone.BATTLEFIELD, source, game);
} else {
- player.cast(card.getSpellAbility(), game, true);
+ player.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/o/OmenOfFire.java b/Mage.Sets/src/mage/cards/o/OmenOfFire.java
index 298366f46d2..40acc1b5b92 100644
--- a/Mage.Sets/src/mage/cards/o/OmenOfFire.java
+++ b/Mage.Sets/src/mage/cards/o/OmenOfFire.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class OmenOfFire extends CardImpl {
+public final class OmenOfFire extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Islands");
static {
diff --git a/Mage.Sets/src/mage/cards/o/Omenspeaker.java b/Mage.Sets/src/mage/cards/o/Omenspeaker.java
index 0b3c44945e4..5ec301b8fea 100644
--- a/Mage.Sets/src/mage/cards/o/Omenspeaker.java
+++ b/Mage.Sets/src/mage/cards/o/Omenspeaker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Omenspeaker extends CardImpl {
+public final class Omenspeaker extends CardImpl {
public Omenspeaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OminousSphinx.java b/Mage.Sets/src/mage/cards/o/OminousSphinx.java
index 4bddcf67055..e8a6681446b 100644
--- a/Mage.Sets/src/mage/cards/o/OminousSphinx.java
+++ b/Mage.Sets/src/mage/cards/o/OminousSphinx.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class OminousSphinx extends CardImpl {
+public final class OminousSphinx extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/o/OmnathLocusOfMana.java b/Mage.Sets/src/mage/cards/o/OmnathLocusOfMana.java
index 4b87eb887b0..75e49565e85 100644
--- a/Mage.Sets/src/mage/cards/o/OmnathLocusOfMana.java
+++ b/Mage.Sets/src/mage/cards/o/OmnathLocusOfMana.java
@@ -45,10 +45,10 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class OmnathLocusOfMana extends CardImpl {
+public final class OmnathLocusOfMana extends CardImpl {
public OmnathLocusOfMana(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.ELEMENTAL);
@@ -78,7 +78,7 @@ class OmnathRuleEffect extends ContinuousEffectImpl {
public OmnathRuleEffect() {
super(Duration.WhileOnBattlefield, Outcome.Detriment);
- staticText = "Green mana doesn't empty from your mana pool as steps and phases end";
+ staticText = "You don’t lose unspent green mana as steps and phases end";
}
public OmnathRuleEffect(final OmnathRuleEffect effect) {
@@ -93,10 +93,11 @@ class OmnathRuleEffect extends ContinuousEffectImpl {
@Override
public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) {
Player player = game.getPlayer(source.getControllerId());
- if (player != null){
+ if (player != null) {
player.getManaPool().addDoNotEmptyManaType(ManaType.GREEN);
}
- return false; }
+ return false;
+ }
@Override
public boolean apply(Game game, Ability source) {
diff --git a/Mage.Sets/src/mage/cards/o/OmnathLocusOfRage.java b/Mage.Sets/src/mage/cards/o/OmnathLocusOfRage.java
index 1d678ffe5c0..e2f2446aafe 100644
--- a/Mage.Sets/src/mage/cards/o/OmnathLocusOfRage.java
+++ b/Mage.Sets/src/mage/cards/o/OmnathLocusOfRage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class OmnathLocusOfRage extends CardImpl {
+public final class OmnathLocusOfRage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elemental you control");
diff --git a/Mage.Sets/src/mage/cards/o/Omnibian.java b/Mage.Sets/src/mage/cards/o/Omnibian.java
index 04c91e69c7a..9776815c337 100644
--- a/Mage.Sets/src/mage/cards/o/Omnibian.java
+++ b/Mage.Sets/src/mage/cards/o/Omnibian.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Omnibian extends CardImpl {
+public final class Omnibian extends CardImpl {
public Omnibian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Omniscience.java b/Mage.Sets/src/mage/cards/o/Omniscience.java
index 35f97c6479d..0758ef6ba33 100644
--- a/Mage.Sets/src/mage/cards/o/Omniscience.java
+++ b/Mage.Sets/src/mage/cards/o/Omniscience.java
@@ -39,7 +39,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class Omniscience extends CardImpl {
+public final class Omniscience extends CardImpl {
public Omniscience(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{7}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OnSerrasWings.java b/Mage.Sets/src/mage/cards/o/OnSerrasWings.java
index 127b8f2e568..35b8026a042 100644
--- a/Mage.Sets/src/mage/cards/o/OnSerrasWings.java
+++ b/Mage.Sets/src/mage/cards/o/OnSerrasWings.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class OnSerrasWings extends CardImpl {
+public final class OnSerrasWings extends CardImpl {
public OnSerrasWings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OnakkeOgre.java b/Mage.Sets/src/mage/cards/o/OnakkeOgre.java
new file mode 100644
index 00000000000..9845c52277b
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/o/OnakkeOgre.java
@@ -0,0 +1,60 @@
+/*
+ * 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.o;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class OnakkeOgre extends CardImpl {
+
+ public OnakkeOgre(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
+
+ this.subtype.add(SubType.OGRE);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(2);
+ }
+
+ public OnakkeOgre(final OnakkeOgre card) {
+ super(card);
+ }
+
+ @Override
+ public OnakkeOgre copy() {
+ return new OnakkeOgre(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/o/OnceMoreWithFeeling.java b/Mage.Sets/src/mage/cards/o/OnceMoreWithFeeling.java
index 915d5840885..80946202df5 100644
--- a/Mage.Sets/src/mage/cards/o/OnceMoreWithFeeling.java
+++ b/Mage.Sets/src/mage/cards/o/OnceMoreWithFeeling.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class OnceMoreWithFeeling extends CardImpl {
+public final class OnceMoreWithFeeling extends CardImpl {
public OnceMoreWithFeeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{W}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OnduChampion.java b/Mage.Sets/src/mage/cards/o/OnduChampion.java
index bf3e653157b..f5e4718f059 100644
--- a/Mage.Sets/src/mage/cards/o/OnduChampion.java
+++ b/Mage.Sets/src/mage/cards/o/OnduChampion.java
@@ -43,7 +43,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX2
*/
-public class OnduChampion extends CardImpl {
+public final class OnduChampion extends CardImpl {
public OnduChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OnduCleric.java b/Mage.Sets/src/mage/cards/o/OnduCleric.java
index 4da89aa6811..28ba86e10de 100644
--- a/Mage.Sets/src/mage/cards/o/OnduCleric.java
+++ b/Mage.Sets/src/mage/cards/o/OnduCleric.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class OnduCleric extends CardImpl {
+public final class OnduCleric extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Allies you control");
diff --git a/Mage.Sets/src/mage/cards/o/OnduGiant.java b/Mage.Sets/src/mage/cards/o/OnduGiant.java
index c4704c1f78d..1ece7b0347d 100644
--- a/Mage.Sets/src/mage/cards/o/OnduGiant.java
+++ b/Mage.Sets/src/mage/cards/o/OnduGiant.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class OnduGiant extends CardImpl {
+public final class OnduGiant extends CardImpl {
public OnduGiant(UUID ownerId, CardSetInfo setInfo) {
@@ -54,7 +54,7 @@ public class OnduGiant extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(4);
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
}
public OnduGiant(final OnduGiant card) {
diff --git a/Mage.Sets/src/mage/cards/o/OnduGreathorn.java b/Mage.Sets/src/mage/cards/o/OnduGreathorn.java
index ad2af20702e..2b58deace2b 100644
--- a/Mage.Sets/src/mage/cards/o/OnduGreathorn.java
+++ b/Mage.Sets/src/mage/cards/o/OnduGreathorn.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class OnduGreathorn extends CardImpl {
+public final class OnduGreathorn extends CardImpl {
public OnduGreathorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OnduRising.java b/Mage.Sets/src/mage/cards/o/OnduRising.java
index 501b49f0c4e..fdafe9892ab 100644
--- a/Mage.Sets/src/mage/cards/o/OnduRising.java
+++ b/Mage.Sets/src/mage/cards/o/OnduRising.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class OnduRising extends CardImpl {
+public final class OnduRising extends CardImpl {
public OnduRising(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OnduWarCleric.java b/Mage.Sets/src/mage/cards/o/OnduWarCleric.java
index abba03ba208..75793ce1ffe 100644
--- a/Mage.Sets/src/mage/cards/o/OnduWarCleric.java
+++ b/Mage.Sets/src/mage/cards/o/OnduWarCleric.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class OnduWarCleric extends CardImpl {
+public final class OnduWarCleric extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control");
diff --git a/Mage.Sets/src/mage/cards/o/OneDozenEyes.java b/Mage.Sets/src/mage/cards/o/OneDozenEyes.java
index 7157684dd4a..155c774177f 100644
--- a/Mage.Sets/src/mage/cards/o/OneDozenEyes.java
+++ b/Mage.Sets/src/mage/cards/o/OneDozenEyes.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.OneDozenEyesBeastToken;
*
* @author LevelX2
*/
-public class OneDozenEyes extends CardImpl {
+public final class OneDozenEyes extends CardImpl {
public OneDozenEyes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OneEyedScarecrow.java b/Mage.Sets/src/mage/cards/o/OneEyedScarecrow.java
index 27e6a1029e6..5bce4f7d337 100644
--- a/Mage.Sets/src/mage/cards/o/OneEyedScarecrow.java
+++ b/Mage.Sets/src/mage/cards/o/OneEyedScarecrow.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class OneEyedScarecrow extends CardImpl {
+public final class OneEyedScarecrow extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures with flying your opponents control");
diff --git a/Mage.Sets/src/mage/cards/o/OneOfThePack.java b/Mage.Sets/src/mage/cards/o/OneOfThePack.java
index 30a44946f5d..c5c59b310dd 100644
--- a/Mage.Sets/src/mage/cards/o/OneOfThePack.java
+++ b/Mage.Sets/src/mage/cards/o/OneOfThePack.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class OneOfThePack extends CardImpl {
+public final class OneOfThePack extends CardImpl {
public OneOfThePack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/o/OneThousandLashes.java b/Mage.Sets/src/mage/cards/o/OneThousandLashes.java
index 7bc10e608f0..85ed0fd7ddf 100644
--- a/Mage.Sets/src/mage/cards/o/OneThousandLashes.java
+++ b/Mage.Sets/src/mage/cards/o/OneThousandLashes.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OneThousandLashes extends CardImpl {
+public final class OneThousandLashes extends CardImpl {
public OneThousandLashes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OneWithNature.java b/Mage.Sets/src/mage/cards/o/OneWithNature.java
index 6f4e7097f9e..8438242b818 100644
--- a/Mage.Sets/src/mage/cards/o/OneWithNature.java
+++ b/Mage.Sets/src/mage/cards/o/OneWithNature.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class OneWithNature extends CardImpl {
+public final class OneWithNature extends CardImpl {
public OneWithNature(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
@@ -64,7 +64,7 @@ public class OneWithNature extends CardImpl {
// Whenever enchanted creature deals combat damage to a player, you may search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library.
ability = new DealsDamageToAPlayerAttachedTriggeredAbility(
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, Outcome.PutLandInPlay)
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, Outcome.PutLandInPlay)
.setText("you may search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library."),
"enchanted creature", true, false, true, TargetController.ANY);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/o/OneWithNothing.java b/Mage.Sets/src/mage/cards/o/OneWithNothing.java
index 6917befb78d..cbd80fcf95f 100644
--- a/Mage.Sets/src/mage/cards/o/OneWithNothing.java
+++ b/Mage.Sets/src/mage/cards/o/OneWithNothing.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
/**
* @author LevelX2
*/
-public class OneWithNothing extends CardImpl {
+public final class OneWithNothing extends CardImpl {
public OneWithNothing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OneWithTheWind.java b/Mage.Sets/src/mage/cards/o/OneWithTheWind.java
index 487892e8eb9..bfc4b65231d 100644
--- a/Mage.Sets/src/mage/cards/o/OneWithTheWind.java
+++ b/Mage.Sets/src/mage/cards/o/OneWithTheWind.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class OneWithTheWind extends CardImpl {
+public final class OneWithTheWind extends CardImpl {
public OneWithTheWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OngoingInvestigation.java b/Mage.Sets/src/mage/cards/o/OngoingInvestigation.java
index fcf6569d42f..5add3fdbf9f 100644
--- a/Mage.Sets/src/mage/cards/o/OngoingInvestigation.java
+++ b/Mage.Sets/src/mage/cards/o/OngoingInvestigation.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class OngoingInvestigation extends CardImpl {
+public final class OngoingInvestigation extends CardImpl {
public OngoingInvestigation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OniOfWildPlaces.java b/Mage.Sets/src/mage/cards/o/OniOfWildPlaces.java
index d17db1263fc..24e33222942 100644
--- a/Mage.Sets/src/mage/cards/o/OniOfWildPlaces.java
+++ b/Mage.Sets/src/mage/cards/o/OniOfWildPlaces.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class OniOfWildPlaces extends CardImpl {
+public final class OniOfWildPlaces extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("red creature you control");
diff --git a/Mage.Sets/src/mage/cards/o/OniPossession.java b/Mage.Sets/src/mage/cards/o/OniPossession.java
index 1a98371e40f..77187d0079c 100644
--- a/Mage.Sets/src/mage/cards/o/OniPossession.java
+++ b/Mage.Sets/src/mage/cards/o/OniPossession.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class OniPossession extends CardImpl {
+public final class OniPossession extends CardImpl {
public OniPossession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/Onslaught.java b/Mage.Sets/src/mage/cards/o/Onslaught.java
index a236ea081d6..e057efdc3f5 100644
--- a/Mage.Sets/src/mage/cards/o/Onslaught.java
+++ b/Mage.Sets/src/mage/cards/o/Onslaught.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Onslaught extends CardImpl {
+public final class Onslaught extends CardImpl {
public Onslaught(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/o/Onulet.java b/Mage.Sets/src/mage/cards/o/Onulet.java
index 26f482c5457..bc24abbeb89 100644
--- a/Mage.Sets/src/mage/cards/o/Onulet.java
+++ b/Mage.Sets/src/mage/cards/o/Onulet.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author ilcartographer
*/
-public class Onulet extends CardImpl {
+public final class Onulet extends CardImpl {
public Onulet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/OnwardVictory.java b/Mage.Sets/src/mage/cards/o/OnwardVictory.java
index 51aa05a0aab..d91cc3f6ff6 100644
--- a/Mage.Sets/src/mage/cards/o/OnwardVictory.java
+++ b/Mage.Sets/src/mage/cards/o/OnwardVictory.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
import mage.constants.SpellAbilityType;
import mage.target.common.TargetCreaturePermanent;
-public class OnwardVictory extends SplitCard {
+public final class OnwardVictory extends SplitCard {
public OnwardVictory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{2}{R}", "{2}{W}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/o/OnyxGoblet.java b/Mage.Sets/src/mage/cards/o/OnyxGoblet.java
index f15ad2f7552..4c51b707ad8 100644
--- a/Mage.Sets/src/mage/cards/o/OnyxGoblet.java
+++ b/Mage.Sets/src/mage/cards/o/OnyxGoblet.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class OnyxGoblet extends CardImpl {
+public final class OnyxGoblet extends CardImpl {
public OnyxGoblet (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OnyxMage.java b/Mage.Sets/src/mage/cards/o/OnyxMage.java
index 0eb8cfb6609..7895a591abe 100644
--- a/Mage.Sets/src/mage/cards/o/OnyxMage.java
+++ b/Mage.Sets/src/mage/cards/o/OnyxMage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class OnyxMage extends CardImpl {
+public final class OnyxMage extends CardImpl {
public OnyxMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OnyxTalisman.java b/Mage.Sets/src/mage/cards/o/OnyxTalisman.java
index ed434150679..267e5a224cc 100644
--- a/Mage.Sets/src/mage/cards/o/OnyxTalisman.java
+++ b/Mage.Sets/src/mage/cards/o/OnyxTalisman.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class OnyxTalisman extends CardImpl {
+public final class OnyxTalisman extends CardImpl {
private final static FilterSpell filter = new FilterSpell("a black spell");
diff --git a/Mage.Sets/src/mage/cards/o/OonaQueenOfTheFae.java b/Mage.Sets/src/mage/cards/o/OonaQueenOfTheFae.java
index 687958b8907..42a16745048 100644
--- a/Mage.Sets/src/mage/cards/o/OonaQueenOfTheFae.java
+++ b/Mage.Sets/src/mage/cards/o/OonaQueenOfTheFae.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class OonaQueenOfTheFae extends CardImpl {
+public final class OonaQueenOfTheFae extends CardImpl {
public OonaQueenOfTheFae(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U/B}{U/B}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/o/OonasBlackguard.java b/Mage.Sets/src/mage/cards/o/OonasBlackguard.java
index 828c2a53be9..4f60ec403a3 100644
--- a/Mage.Sets/src/mage/cards/o/OonasBlackguard.java
+++ b/Mage.Sets/src/mage/cards/o/OonasBlackguard.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class OonasBlackguard extends CardImpl {
+public final class OonasBlackguard extends CardImpl {
public OonasBlackguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OonasGatewarden.java b/Mage.Sets/src/mage/cards/o/OonasGatewarden.java
index 98cda6360a0..7abf98901f3 100644
--- a/Mage.Sets/src/mage/cards/o/OonasGatewarden.java
+++ b/Mage.Sets/src/mage/cards/o/OonasGatewarden.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class OonasGatewarden extends CardImpl {
+public final class OonasGatewarden extends CardImpl {
public OonasGatewarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U/B}");
diff --git a/Mage.Sets/src/mage/cards/o/OonasGrace.java b/Mage.Sets/src/mage/cards/o/OonasGrace.java
index 71661c19727..c9a3356a688 100644
--- a/Mage.Sets/src/mage/cards/o/OonasGrace.java
+++ b/Mage.Sets/src/mage/cards/o/OonasGrace.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class OonasGrace extends CardImpl {
+public final class OonasGrace extends CardImpl {
public OonasGrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OonasProwler.java b/Mage.Sets/src/mage/cards/o/OonasProwler.java
index ed5d019557a..ac87cdd5c80 100644
--- a/Mage.Sets/src/mage/cards/o/OonasProwler.java
+++ b/Mage.Sets/src/mage/cards/o/OonasProwler.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class OonasProwler extends CardImpl {
+public final class OonasProwler extends CardImpl {
public OonasProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OozeFlux.java b/Mage.Sets/src/mage/cards/o/OozeFlux.java
index 194779d7357..3505c147d55 100644
--- a/Mage.Sets/src/mage/cards/o/OozeFlux.java
+++ b/Mage.Sets/src/mage/cards/o/OozeFlux.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.Token;
*
* @author LevelX2
*/
-public class OozeFlux extends CardImpl {
+public final class OozeFlux extends CardImpl {
public OozeFlux(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OozeGarden.java b/Mage.Sets/src/mage/cards/o/OozeGarden.java
index e099dacc106..90d8c7e62b3 100644
--- a/Mage.Sets/src/mage/cards/o/OozeGarden.java
+++ b/Mage.Sets/src/mage/cards/o/OozeGarden.java
@@ -58,7 +58,7 @@ import mage.util.SubTypeList;
*
* @author Plopman
*/
-public class OozeGarden extends CardImpl {
+public final class OozeGarden extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Ooze creature");
static{
diff --git a/Mage.Sets/src/mage/cards/o/OpalArchangel.java b/Mage.Sets/src/mage/cards/o/OpalArchangel.java
index 6a9f6ee042b..76bb149b2b3 100644
--- a/Mage.Sets/src/mage/cards/o/OpalArchangel.java
+++ b/Mage.Sets/src/mage/cards/o/OpalArchangel.java
@@ -52,7 +52,7 @@ import java.util.UUID;
* @author LoneFox
*
*/
-public class OpalArchangel extends CardImpl {
+public final class OpalArchangel extends CardImpl {
public OpalArchangel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OpalCaryatid.java b/Mage.Sets/src/mage/cards/o/OpalCaryatid.java
index 05e7af6b31d..344a4aa021e 100644
--- a/Mage.Sets/src/mage/cards/o/OpalCaryatid.java
+++ b/Mage.Sets/src/mage/cards/o/OpalCaryatid.java
@@ -49,7 +49,7 @@ import java.util.UUID;
* @author LoneFox
*
*/
-public class OpalCaryatid extends CardImpl {
+public final class OpalCaryatid extends CardImpl {
public OpalCaryatid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OpalChampion.java b/Mage.Sets/src/mage/cards/o/OpalChampion.java
index 012ba7d1841..2308abb45f7 100644
--- a/Mage.Sets/src/mage/cards/o/OpalChampion.java
+++ b/Mage.Sets/src/mage/cards/o/OpalChampion.java
@@ -51,7 +51,7 @@ import java.util.UUID;
* @author LoneFox
*
*/
-public class OpalChampion extends CardImpl {
+public final class OpalChampion extends CardImpl {
public OpalChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OpalEyeKondasYojimbo.java b/Mage.Sets/src/mage/cards/o/OpalEyeKondasYojimbo.java
index 971e38c0d85..a8e34652d7f 100644
--- a/Mage.Sets/src/mage/cards/o/OpalEyeKondasYojimbo.java
+++ b/Mage.Sets/src/mage/cards/o/OpalEyeKondasYojimbo.java
@@ -51,7 +51,7 @@ import mage.target.TargetSource;
/**
* @author LevelX2
*/
-public class OpalEyeKondasYojimbo extends CardImpl {
+public final class OpalEyeKondasYojimbo extends CardImpl {
public OpalEyeKondasYojimbo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OpalGargoyle.java b/Mage.Sets/src/mage/cards/o/OpalGargoyle.java
index 048ebd360a8..ac038ba3a51 100644
--- a/Mage.Sets/src/mage/cards/o/OpalGargoyle.java
+++ b/Mage.Sets/src/mage/cards/o/OpalGargoyle.java
@@ -51,7 +51,7 @@ import java.util.UUID;
* @author LoneFox
*
*/
-public class OpalGargoyle extends CardImpl {
+public final class OpalGargoyle extends CardImpl {
public OpalGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OpalGuardian.java b/Mage.Sets/src/mage/cards/o/OpalGuardian.java
index 54f3c861f16..b7d9699b02d 100644
--- a/Mage.Sets/src/mage/cards/o/OpalGuardian.java
+++ b/Mage.Sets/src/mage/cards/o/OpalGuardian.java
@@ -53,7 +53,7 @@ import java.util.UUID;
* @author LoneFox
*
*/
-public class OpalGuardian extends CardImpl {
+public final class OpalGuardian extends CardImpl {
public OpalGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OpalLakeGatekeepers.java b/Mage.Sets/src/mage/cards/o/OpalLakeGatekeepers.java
index a6c71973691..ac6673b543e 100644
--- a/Mage.Sets/src/mage/cards/o/OpalLakeGatekeepers.java
+++ b/Mage.Sets/src/mage/cards/o/OpalLakeGatekeepers.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
-public class OpalLakeGatekeepers extends CardImpl {
+public final class OpalLakeGatekeepers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/o/OpalPalace.java b/Mage.Sets/src/mage/cards/o/OpalPalace.java
index 03e43c168bb..970cd15b22b 100644
--- a/Mage.Sets/src/mage/cards/o/OpalPalace.java
+++ b/Mage.Sets/src/mage/cards/o/OpalPalace.java
@@ -59,7 +59,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class OpalPalace extends CardImpl {
+public final class OpalPalace extends CardImpl {
public OpalPalace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/o/Opalescence.java b/Mage.Sets/src/mage/cards/o/Opalescence.java
index 519185fec76..d9b863c2b4b 100644
--- a/Mage.Sets/src/mage/cards/o/Opalescence.java
+++ b/Mage.Sets/src/mage/cards/o/Opalescence.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author Mitchel Stein
*/
-public class Opalescence extends CardImpl {
+public final class Opalescence extends CardImpl {
public Opalescence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OpalineBracers.java b/Mage.Sets/src/mage/cards/o/OpalineBracers.java
index c155c9d371c..d1cf1a453a4 100644
--- a/Mage.Sets/src/mage/cards/o/OpalineBracers.java
+++ b/Mage.Sets/src/mage/cards/o/OpalineBracers.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class OpalineBracers extends CardImpl {
+public final class OpalineBracers extends CardImpl {
public OpalineBracers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/o/OpalineSliver.java b/Mage.Sets/src/mage/cards/o/OpalineSliver.java
index 1eced72c6d8..e02c89e1daf 100644
--- a/Mage.Sets/src/mage/cards/o/OpalineSliver.java
+++ b/Mage.Sets/src/mage/cards/o/OpalineSliver.java
@@ -51,7 +51,7 @@ import mage.game.stack.StackObject;
*
* @author anonymous
*/
-public class OpalineSliver extends CardImpl {
+public final class OpalineSliver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("All Slivers");
diff --git a/Mage.Sets/src/mage/cards/o/OpalineUnicorn.java b/Mage.Sets/src/mage/cards/o/OpalineUnicorn.java
index 3da8495e7d0..1eee0a88188 100644
--- a/Mage.Sets/src/mage/cards/o/OpalineUnicorn.java
+++ b/Mage.Sets/src/mage/cards/o/OpalineUnicorn.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class OpalineUnicorn extends CardImpl {
+public final class OpalineUnicorn extends CardImpl {
public OpalineUnicorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/OpenFire.java b/Mage.Sets/src/mage/cards/o/OpenFire.java
index 987f88072c1..6cc10d0cfbf 100644
--- a/Mage.Sets/src/mage/cards/o/OpenFire.java
+++ b/Mage.Sets/src/mage/cards/o/OpenFire.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class OpenFire extends CardImpl {
+public final class OpenFire extends CardImpl {
public OpenFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OpenIntoWonder.java b/Mage.Sets/src/mage/cards/o/OpenIntoWonder.java
index 2447977eaf3..bd6628e91f6 100644
--- a/Mage.Sets/src/mage/cards/o/OpenIntoWonder.java
+++ b/Mage.Sets/src/mage/cards/o/OpenIntoWonder.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OpenIntoWonder extends CardImpl {
+public final class OpenIntoWonder extends CardImpl {
public OpenIntoWonder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OpenSeason.java b/Mage.Sets/src/mage/cards/o/OpenSeason.java
index 0f21cb56b7c..d7daf804eae 100644
--- a/Mage.Sets/src/mage/cards/o/OpenSeason.java
+++ b/Mage.Sets/src/mage/cards/o/OpenSeason.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class OpenSeason extends CardImpl {
+public final class OpenSeason extends CardImpl {
public OpenSeason(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OpenTheArmory.java b/Mage.Sets/src/mage/cards/o/OpenTheArmory.java
index ced3aff6b70..ad20fa6fe51 100644
--- a/Mage.Sets/src/mage/cards/o/OpenTheArmory.java
+++ b/Mage.Sets/src/mage/cards/o/OpenTheArmory.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class OpenTheArmory extends CardImpl {
+public final class OpenTheArmory extends CardImpl {
public OpenTheArmory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OpenTheVaults.java b/Mage.Sets/src/mage/cards/o/OpenTheVaults.java
index 462fbd0e23c..147accd267f 100644
--- a/Mage.Sets/src/mage/cards/o/OpenTheVaults.java
+++ b/Mage.Sets/src/mage/cards/o/OpenTheVaults.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author North
*/
-public class OpenTheVaults extends CardImpl {
+public final class OpenTheVaults extends CardImpl {
public OpenTheVaults(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/Ophidian.java b/Mage.Sets/src/mage/cards/o/Ophidian.java
index 357410c3b60..30ddac4d70f 100644
--- a/Mage.Sets/src/mage/cards/o/Ophidian.java
+++ b/Mage.Sets/src/mage/cards/o/Ophidian.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class Ophidian extends CardImpl {
+public final class Ophidian extends CardImpl {
public Ophidian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OphidianEye.java b/Mage.Sets/src/mage/cards/o/OphidianEye.java
index 2572140bb72..3d575c48c11 100644
--- a/Mage.Sets/src/mage/cards/o/OphidianEye.java
+++ b/Mage.Sets/src/mage/cards/o/OphidianEye.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class OphidianEye extends CardImpl {
+public final class OphidianEye extends CardImpl {
public OphidianEye(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Ophiomancer.java b/Mage.Sets/src/mage/cards/o/Ophiomancer.java
index 1b3dd1221dd..a8a4abb86f1 100644
--- a/Mage.Sets/src/mage/cards/o/Ophiomancer.java
+++ b/Mage.Sets/src/mage/cards/o/Ophiomancer.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.OphiomancerSnakeToken;
*
* @author LevelX2
*/
-public class Ophiomancer extends CardImpl {
+public final class Ophiomancer extends CardImpl {
public Ophiomancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/Opportunist.java b/Mage.Sets/src/mage/cards/o/Opportunist.java
index 6b7cdad4ca9..7fe262b4667 100644
--- a/Mage.Sets/src/mage/cards/o/Opportunist.java
+++ b/Mage.Sets/src/mage/cards/o/Opportunist.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX
*/
-public class Opportunist extends CardImpl {
+public final class Opportunist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn");
diff --git a/Mage.Sets/src/mage/cards/o/Opportunity.java b/Mage.Sets/src/mage/cards/o/Opportunity.java
index 02c6e5e774f..c1a664538d8 100644
--- a/Mage.Sets/src/mage/cards/o/Opportunity.java
+++ b/Mage.Sets/src/mage/cards/o/Opportunity.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class Opportunity extends CardImpl {
+public final class Opportunity extends CardImpl {
public Opportunity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Opposition.java b/Mage.Sets/src/mage/cards/o/Opposition.java
index 712923c90b0..199ecc5b0dc 100644
--- a/Mage.Sets/src/mage/cards/o/Opposition.java
+++ b/Mage.Sets/src/mage/cards/o/Opposition.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author KholdFuzion
*/
-public class Opposition extends CardImpl {
+public final class Opposition extends CardImpl {
private static final FilterPermanent artifactcreatureorland = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/o/Oppression.java b/Mage.Sets/src/mage/cards/o/Oppression.java
index e95d59425f4..e535361ffce 100644
--- a/Mage.Sets/src/mage/cards/o/Oppression.java
+++ b/Mage.Sets/src/mage/cards/o/Oppression.java
@@ -42,7 +42,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author dustinconrad
*/
-public class Oppression extends CardImpl {
+public final class Oppression extends CardImpl {
public Oppression(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OppressiveRays.java b/Mage.Sets/src/mage/cards/o/OppressiveRays.java
index 1094dc68e0f..9ffe4e83282 100644
--- a/Mage.Sets/src/mage/cards/o/OppressiveRays.java
+++ b/Mage.Sets/src/mage/cards/o/OppressiveRays.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class OppressiveRays extends CardImpl {
+public final class OppressiveRays extends CardImpl {
public OppressiveRays(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OppressiveWill.java b/Mage.Sets/src/mage/cards/o/OppressiveWill.java
index aa95f84d4f4..c28b66468e5 100644
--- a/Mage.Sets/src/mage/cards/o/OppressiveWill.java
+++ b/Mage.Sets/src/mage/cards/o/OppressiveWill.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class OppressiveWill extends CardImpl {
+public final class OppressiveWill extends CardImpl {
public OppressiveWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Opt.java b/Mage.Sets/src/mage/cards/o/Opt.java
index 587455c79e5..2972fcca802 100644
--- a/Mage.Sets/src/mage/cards/o/Opt.java
+++ b/Mage.Sets/src/mage/cards/o/Opt.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author KholdFuzion
*/
-public class Opt extends CardImpl {
+public final class Opt extends CardImpl {
public Opt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OpulentPalace.java b/Mage.Sets/src/mage/cards/o/OpulentPalace.java
index 5f87c22acd7..031b4261d89 100644
--- a/Mage.Sets/src/mage/cards/o/OpulentPalace.java
+++ b/Mage.Sets/src/mage/cards/o/OpulentPalace.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class OpulentPalace extends CardImpl {
+public final class OpulentPalace extends CardImpl {
public OpulentPalace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/o/OracleEnVec.java b/Mage.Sets/src/mage/cards/o/OracleEnVec.java
index d92dbe8d680..8ad9acdf78a 100644
--- a/Mage.Sets/src/mage/cards/o/OracleEnVec.java
+++ b/Mage.Sets/src/mage/cards/o/OracleEnVec.java
@@ -65,7 +65,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author emerald000
*/
-public class OracleEnVec extends CardImpl {
+public final class OracleEnVec extends CardImpl {
public OracleEnVec(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OracleOfBones.java b/Mage.Sets/src/mage/cards/o/OracleOfBones.java
index 607b7d4ae2b..ee837d9de90 100644
--- a/Mage.Sets/src/mage/cards/o/OracleOfBones.java
+++ b/Mage.Sets/src/mage/cards/o/OracleOfBones.java
@@ -29,6 +29,7 @@ package mage.cards.o;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@@ -41,8 +42,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.filter.FilterCard;
import mage.filter.common.FilterInstantOrSorceryCard;
import mage.game.Game;
@@ -54,10 +55,10 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class OracleOfBones extends CardImpl {
+public final class OracleOfBones extends CardImpl {
public OracleOfBones(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
this.subtype.add(SubType.MINOTAUR);
this.subtype.add(SubType.SHAMAN);
@@ -107,8 +108,8 @@ class OracleOfBonesCastEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
Target target = new TargetCardInHand(filter);
- if (target.canChoose(source.getSourceId(), controller.getId(), game) &&
- controller.chooseUse(outcome, "Cast an instant or sorcery card from your hand without paying its mana cost?", source, game)) {
+ if (target.canChoose(source.getSourceId(), controller.getId(), game)
+ && controller.chooseUse(outcome, "Cast an instant or sorcery card from your hand without paying its mana cost?", source, game)) {
Card cardToCast = null;
boolean cancel = false;
while (controller.canRespond() && !cancel) {
@@ -122,7 +123,7 @@ class OracleOfBonesCastEffect extends OneShotEffect {
}
}
if (cardToCast != null) {
- controller.cast(cardToCast.getSpellAbility(), game, true);
+ controller.cast(cardToCast.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/o/OracleOfDust.java b/Mage.Sets/src/mage/cards/o/OracleOfDust.java
index eedc7ff67d4..080d28a2aa5 100644
--- a/Mage.Sets/src/mage/cards/o/OracleOfDust.java
+++ b/Mage.Sets/src/mage/cards/o/OracleOfDust.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class OracleOfDust extends CardImpl {
+public final class OracleOfDust extends CardImpl {
public OracleOfDust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OracleOfMulDaya.java b/Mage.Sets/src/mage/cards/o/OracleOfMulDaya.java
index ed3c2734b5d..89649aafb5f 100644
--- a/Mage.Sets/src/mage/cards/o/OracleOfMulDaya.java
+++ b/Mage.Sets/src/mage/cards/o/OracleOfMulDaya.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterLandCard;
*
* @author nantuko, BetaSteward_at_googlemail.com
*/
-public class OracleOfMulDaya extends CardImpl {
+public final class OracleOfMulDaya extends CardImpl {
public OracleOfMulDaya(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OracleOfNectars.java b/Mage.Sets/src/mage/cards/o/OracleOfNectars.java
index a2d2ea07f2e..93563fb55b3 100644
--- a/Mage.Sets/src/mage/cards/o/OracleOfNectars.java
+++ b/Mage.Sets/src/mage/cards/o/OracleOfNectars.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author nantuko
*/
-public class OracleOfNectars extends CardImpl {
+public final class OracleOfNectars extends CardImpl {
public OracleOfNectars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/o/OraclesAttendants.java b/Mage.Sets/src/mage/cards/o/OraclesAttendants.java
index 0be25e18f9d..be0a5b2133a 100644
--- a/Mage.Sets/src/mage/cards/o/OraclesAttendants.java
+++ b/Mage.Sets/src/mage/cards/o/OraclesAttendants.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class OraclesAttendants extends CardImpl {
+public final class OraclesAttendants extends CardImpl {
public OraclesAttendants(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OraclesInsight.java b/Mage.Sets/src/mage/cards/o/OraclesInsight.java
index 33fb32bd9fe..e5096d11e40 100644
--- a/Mage.Sets/src/mage/cards/o/OraclesInsight.java
+++ b/Mage.Sets/src/mage/cards/o/OraclesInsight.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OraclesInsight extends CardImpl {
+public final class OraclesInsight extends CardImpl {
public OraclesInsight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OraclesVault.java b/Mage.Sets/src/mage/cards/o/OraclesVault.java
index 10d66e9a517..2089edb66bd 100644
--- a/Mage.Sets/src/mage/cards/o/OraclesVault.java
+++ b/Mage.Sets/src/mage/cards/o/OraclesVault.java
@@ -58,7 +58,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class OraclesVault extends CardImpl {
+public final class OraclesVault extends CardImpl {
public OraclesVault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/o/OranRiefHydra.java b/Mage.Sets/src/mage/cards/o/OranRiefHydra.java
index e80023a5149..ee7f3f10de0 100644
--- a/Mage.Sets/src/mage/cards/o/OranRiefHydra.java
+++ b/Mage.Sets/src/mage/cards/o/OranRiefHydra.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class OranRiefHydra extends CardImpl {
+public final class OranRiefHydra extends CardImpl {
public OranRiefHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OranRiefInvoker.java b/Mage.Sets/src/mage/cards/o/OranRiefInvoker.java
index 63943b19664..b1f1658c824 100644
--- a/Mage.Sets/src/mage/cards/o/OranRiefInvoker.java
+++ b/Mage.Sets/src/mage/cards/o/OranRiefInvoker.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class OranRiefInvoker extends CardImpl {
+public final class OranRiefInvoker extends CardImpl {
public OranRiefInvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OranRiefRecluse.java b/Mage.Sets/src/mage/cards/o/OranRiefRecluse.java
index 4d68c74ed09..f7b2640afd8 100644
--- a/Mage.Sets/src/mage/cards/o/OranRiefRecluse.java
+++ b/Mage.Sets/src/mage/cards/o/OranRiefRecluse.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class OranRiefRecluse extends CardImpl {
+public final class OranRiefRecluse extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/o/OranRiefSurvivalist.java b/Mage.Sets/src/mage/cards/o/OranRiefSurvivalist.java
index 93a4b07d3c2..2af59da26ec 100644
--- a/Mage.Sets/src/mage/cards/o/OranRiefSurvivalist.java
+++ b/Mage.Sets/src/mage/cards/o/OranRiefSurvivalist.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class OranRiefSurvivalist extends CardImpl {
+public final class OranRiefSurvivalist extends CardImpl {
public OranRiefSurvivalist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OranRiefTheVastwood.java b/Mage.Sets/src/mage/cards/o/OranRiefTheVastwood.java
index 1af548d81c9..0fdb2a262f4 100644
--- a/Mage.Sets/src/mage/cards/o/OranRiefTheVastwood.java
+++ b/Mage.Sets/src/mage/cards/o/OranRiefTheVastwood.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class OranRiefTheVastwood extends CardImpl {
+public final class OranRiefTheVastwood extends CardImpl {
public OranRiefTheVastwood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/o/OratorOfOjutai.java b/Mage.Sets/src/mage/cards/o/OratorOfOjutai.java
index 81410a45d4e..c76a1c75fc6 100644
--- a/Mage.Sets/src/mage/cards/o/OratorOfOjutai.java
+++ b/Mage.Sets/src/mage/cards/o/OratorOfOjutai.java
@@ -54,7 +54,7 @@ import mage.watchers.common.DragonOnTheBattlefieldWhileSpellWasCastWatcher;
*
* @author LevelX2
*/
-public class OratorOfOjutai extends CardImpl {
+public final class OratorOfOjutai extends CardImpl {
private static final FilterCard filter = new FilterCard("a Dragon card from your hand (you don't have to)");
diff --git a/Mage.Sets/src/mage/cards/o/Oraxid.java b/Mage.Sets/src/mage/cards/o/Oraxid.java
index c55caa8c0ce..2f8dacf6c4e 100644
--- a/Mage.Sets/src/mage/cards/o/Oraxid.java
+++ b/Mage.Sets/src/mage/cards/o/Oraxid.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class Oraxid extends CardImpl {
+public final class Oraxid extends CardImpl {
public Oraxid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OrazcaFrillback.java b/Mage.Sets/src/mage/cards/o/OrazcaFrillback.java
index f45dd7bdea5..c1a14076a92 100644
--- a/Mage.Sets/src/mage/cards/o/OrazcaFrillback.java
+++ b/Mage.Sets/src/mage/cards/o/OrazcaFrillback.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author JayDi85
*/
-public class OrazcaFrillback extends CardImpl {
+public final class OrazcaFrillback extends CardImpl {
public OrazcaFrillback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OrazcaRaptor.java b/Mage.Sets/src/mage/cards/o/OrazcaRaptor.java
index 7e85a6fcf7b..415718c5045 100644
--- a/Mage.Sets/src/mage/cards/o/OrazcaRaptor.java
+++ b/Mage.Sets/src/mage/cards/o/OrazcaRaptor.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class OrazcaRaptor extends CardImpl {
+public final class OrazcaRaptor extends CardImpl {
public OrazcaRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrazcaRelic.java b/Mage.Sets/src/mage/cards/o/OrazcaRelic.java
index 7199f74ec85..64c3ff474fa 100644
--- a/Mage.Sets/src/mage/cards/o/OrazcaRelic.java
+++ b/Mage.Sets/src/mage/cards/o/OrazcaRelic.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class OrazcaRelic extends CardImpl {
+public final class OrazcaRelic extends CardImpl {
public OrazcaRelic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/o/OrbOfDreams.java b/Mage.Sets/src/mage/cards/o/OrbOfDreams.java
index a3a429f90f3..6cbdb5a684f 100644
--- a/Mage.Sets/src/mage/cards/o/OrbOfDreams.java
+++ b/Mage.Sets/src/mage/cards/o/OrbOfDreams.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class OrbOfDreams extends CardImpl {
+public final class OrbOfDreams extends CardImpl {
public OrbOfDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/OrbitalBombardment.java b/Mage.Sets/src/mage/cards/o/OrbitalBombardment.java
index 4d8086ebe57..970b6fdb0b3 100644
--- a/Mage.Sets/src/mage/cards/o/OrbitalBombardment.java
+++ b/Mage.Sets/src/mage/cards/o/OrbitalBombardment.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class OrbitalBombardment extends CardImpl {
+public final class OrbitalBombardment extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Starship creatures");
diff --git a/Mage.Sets/src/mage/cards/o/OrbsOfWarding.java b/Mage.Sets/src/mage/cards/o/OrbsOfWarding.java
index ddd6a5810e4..6ca0e95ec70 100644
--- a/Mage.Sets/src/mage/cards/o/OrbsOfWarding.java
+++ b/Mage.Sets/src/mage/cards/o/OrbsOfWarding.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class OrbsOfWarding extends CardImpl {
+public final class OrbsOfWarding extends CardImpl {
public OrbsOfWarding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/o/OrbweaverKumo.java b/Mage.Sets/src/mage/cards/o/OrbweaverKumo.java
index 5717ad7bc29..076205512df 100644
--- a/Mage.Sets/src/mage/cards/o/OrbweaverKumo.java
+++ b/Mage.Sets/src/mage/cards/o/OrbweaverKumo.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
/**
* @author Loki
*/
-public class OrbweaverKumo extends CardImpl {
+public final class OrbweaverKumo extends CardImpl {
public OrbweaverKumo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OrcGeneral.java b/Mage.Sets/src/mage/cards/o/OrcGeneral.java
index 836ddd87f12..f70d3a30b24 100644
--- a/Mage.Sets/src/mage/cards/o/OrcGeneral.java
+++ b/Mage.Sets/src/mage/cards/o/OrcGeneral.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class OrcGeneral extends CardImpl {
+public final class OrcGeneral extends CardImpl {
private static final FilterControlledPermanent filterOrcOrGoblin = new FilterControlledPermanent("another Orc or Goblin");
private static final FilterCreaturePermanent filterOrc = new FilterCreaturePermanent("Other Orc creatures");
diff --git a/Mage.Sets/src/mage/cards/o/OrcSureshot.java b/Mage.Sets/src/mage/cards/o/OrcSureshot.java
index a6a0bf42a8e..a6b35d3d7c4 100644
--- a/Mage.Sets/src/mage/cards/o/OrcSureshot.java
+++ b/Mage.Sets/src/mage/cards/o/OrcSureshot.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OrcSureshot extends CardImpl {
+public final class OrcSureshot extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature under your control");
private static final FilterCreaturePermanent filterOpponentCreature = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/o/OrchardElemental.java b/Mage.Sets/src/mage/cards/o/OrchardElemental.java
index b97b263e7fc..be97c4ccaa3 100644
--- a/Mage.Sets/src/mage/cards/o/OrchardElemental.java
+++ b/Mage.Sets/src/mage/cards/o/OrchardElemental.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author JRHerlehy
*/
-public class OrchardElemental extends CardImpl {
+public final class OrchardElemental extends CardImpl {
public OrchardElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OrchardSpirit.java b/Mage.Sets/src/mage/cards/o/OrchardSpirit.java
index 191b90c12d9..5cd050c1ba3 100644
--- a/Mage.Sets/src/mage/cards/o/OrchardSpirit.java
+++ b/Mage.Sets/src/mage/cards/o/OrchardSpirit.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author North
*/
-public class OrchardSpirit extends CardImpl {
+public final class OrchardSpirit extends CardImpl {
private final static FilterCreaturePermanent notFlyingorReachCreatures = new FilterCreaturePermanent("except by creatures with flying or reach");
diff --git a/Mage.Sets/src/mage/cards/o/OrchardWarden.java b/Mage.Sets/src/mage/cards/o/OrchardWarden.java
index 15b139dc83a..939e1996f35 100644
--- a/Mage.Sets/src/mage/cards/o/OrchardWarden.java
+++ b/Mage.Sets/src/mage/cards/o/OrchardWarden.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class OrchardWarden extends CardImpl {
+public final class OrchardWarden extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another Treefolk creature");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishArtillery.java b/Mage.Sets/src/mage/cards/o/OrcishArtillery.java
index 8c0f30dcd5e..a65148e0b5c 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishArtillery.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishArtillery.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class OrcishArtillery extends CardImpl {
+public final class OrcishArtillery extends CardImpl {
public OrcishArtillery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishBloodpainter.java b/Mage.Sets/src/mage/cards/o/OrcishBloodpainter.java
index b4c5c87b8d8..dcbedb04d04 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishBloodpainter.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishBloodpainter.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class OrcishBloodpainter extends CardImpl {
+public final class OrcishBloodpainter extends CardImpl {
public OrcishBloodpainter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishCannonade.java b/Mage.Sets/src/mage/cards/o/OrcishCannonade.java
index 0659bb8b9b5..41d27ee6808 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishCannonade.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishCannonade.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class OrcishCannonade extends CardImpl {
+public final class OrcishCannonade extends CardImpl {
public OrcishCannonade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishCannoneers.java b/Mage.Sets/src/mage/cards/o/OrcishCannoneers.java
index 6cf13f0bd1d..87d1fcf2697 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishCannoneers.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishCannoneers.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*/
-public class OrcishCannoneers extends CardImpl {
+public final class OrcishCannoneers extends CardImpl {
public OrcishCannoneers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishCaptain.java b/Mage.Sets/src/mage/cards/o/OrcishCaptain.java
index ed71e1879e2..19d79c17c35 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishCaptain.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishCaptain.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class OrcishCaptain extends CardImpl {
+public final class OrcishCaptain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Orc creature");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishHealer.java b/Mage.Sets/src/mage/cards/o/OrcishHealer.java
index 85bec9db1ef..79984cd63e7 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishHealer.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishHealer.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class OrcishHealer extends CardImpl {
+public final class OrcishHealer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black or green creature");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishLibrarian.java b/Mage.Sets/src/mage/cards/o/OrcishLibrarian.java
index 66b17cf1273..d304cedcaa9 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishLibrarian.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishLibrarian.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author Mitchel Stein
*/
-public class OrcishLibrarian extends CardImpl {
+public final class OrcishLibrarian extends CardImpl {
public OrcishLibrarian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishLumberjack.java b/Mage.Sets/src/mage/cards/o/OrcishLumberjack.java
index 8f64a5bd9ef..87d5a0e9250 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishLumberjack.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishLumberjack.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class OrcishLumberjack extends CardImpl {
+public final class OrcishLumberjack extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishMechanics.java b/Mage.Sets/src/mage/cards/o/OrcishMechanics.java
index be1bd9158e2..fb3b351d678 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishMechanics.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishMechanics.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class OrcishMechanics extends CardImpl {
+public final class OrcishMechanics extends CardImpl {
public OrcishMechanics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishOriflamme.java b/Mage.Sets/src/mage/cards/o/OrcishOriflamme.java
index 0eecf9594fa..79716886ad0 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishOriflamme.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishOriflamme.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author North
*/
-public class OrcishOriflamme extends CardImpl {
+public final class OrcishOriflamme extends CardImpl {
public OrcishOriflamme(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishSettlers.java b/Mage.Sets/src/mage/cards/o/OrcishSettlers.java
index 3f448505ed3..36a667e8a1b 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishSettlers.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishSettlers.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
* @author jeffwadsworth
*
*/
-public class OrcishSettlers extends CardImpl {
+public final class OrcishSettlers extends CardImpl {
public OrcishSettlers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishSpy.java b/Mage.Sets/src/mage/cards/o/OrcishSpy.java
index c61b09b45b2..c954882279a 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishSpy.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishSpy.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author anonymous
*/
-public class OrcishSpy extends CardImpl {
+public final class OrcishSpy extends CardImpl {
public OrcishSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishSquatters.java b/Mage.Sets/src/mage/cards/o/OrcishSquatters.java
index ef0d26dd3ef..78ed5d6e62f 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishSquatters.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishSquatters.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class OrcishSquatters extends CardImpl {
+public final class OrcishSquatters extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("land defending player controls");
diff --git a/Mage.Sets/src/mage/cards/o/OrcishVandal.java b/Mage.Sets/src/mage/cards/o/OrcishVandal.java
index 96e9400b6c3..625742b3bfd 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishVandal.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishVandal.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author themattfiles
*/
-public class OrcishVandal extends CardImpl {
+public final class OrcishVandal extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
static {
diff --git a/Mage.Sets/src/mage/cards/o/OrcishVeteran.java b/Mage.Sets/src/mage/cards/o/OrcishVeteran.java
index 3abb61687c1..5016179ffbf 100644
--- a/Mage.Sets/src/mage/cards/o/OrcishVeteran.java
+++ b/Mage.Sets/src/mage/cards/o/OrcishVeteran.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author fireshoes
*/
-public class OrcishVeteran extends CardImpl {
+public final class OrcishVeteran extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures with power 2 or greater");
diff --git a/Mage.Sets/src/mage/cards/o/OrdealOfErebos.java b/Mage.Sets/src/mage/cards/o/OrdealOfErebos.java
index e62729dafc0..2623b133826 100644
--- a/Mage.Sets/src/mage/cards/o/OrdealOfErebos.java
+++ b/Mage.Sets/src/mage/cards/o/OrdealOfErebos.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OrdealOfErebos extends CardImpl {
+public final class OrdealOfErebos extends CardImpl {
public OrdealOfErebos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OrdealOfHeliod.java b/Mage.Sets/src/mage/cards/o/OrdealOfHeliod.java
index 65d3a347127..df3b9768dc6 100644
--- a/Mage.Sets/src/mage/cards/o/OrdealOfHeliod.java
+++ b/Mage.Sets/src/mage/cards/o/OrdealOfHeliod.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OrdealOfHeliod extends CardImpl {
+public final class OrdealOfHeliod extends CardImpl {
public OrdealOfHeliod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrdealOfNylea.java b/Mage.Sets/src/mage/cards/o/OrdealOfNylea.java
index dbae6b1ee91..bf99945535f 100644
--- a/Mage.Sets/src/mage/cards/o/OrdealOfNylea.java
+++ b/Mage.Sets/src/mage/cards/o/OrdealOfNylea.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OrdealOfNylea extends CardImpl {
+public final class OrdealOfNylea extends CardImpl {
public OrdealOfNylea(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
@@ -76,7 +76,7 @@ public class OrdealOfNylea extends CardImpl {
this.addAbility(ability);
// When you sacrifice Ordeal of Nylea, search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library.
ability = new SacrificeSourceTriggeredAbility(
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_BASIC_LAND_CARD),true, true),false);
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LAND),true, true),false);
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/o/OrdealOfPurphoros.java b/Mage.Sets/src/mage/cards/o/OrdealOfPurphoros.java
index 9382b1d141f..9d78af1a72d 100644
--- a/Mage.Sets/src/mage/cards/o/OrdealOfPurphoros.java
+++ b/Mage.Sets/src/mage/cards/o/OrdealOfPurphoros.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class OrdealOfPurphoros extends CardImpl {
+public final class OrdealOfPurphoros extends CardImpl {
public OrdealOfPurphoros(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrdealOfThassa.java b/Mage.Sets/src/mage/cards/o/OrdealOfThassa.java
index 945bd8a9319..f30872d7966 100644
--- a/Mage.Sets/src/mage/cards/o/OrdealOfThassa.java
+++ b/Mage.Sets/src/mage/cards/o/OrdealOfThassa.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OrdealOfThassa extends CardImpl {
+public final class OrdealOfThassa extends CardImpl {
public OrdealOfThassa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Order66.java b/Mage.Sets/src/mage/cards/o/Order66.java
index 11debd2f4bf..d0df99c3507 100644
--- a/Mage.Sets/src/mage/cards/o/Order66.java
+++ b/Mage.Sets/src/mage/cards/o/Order66.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Styxo
*/
-public class Order66 extends CardImpl {
+public final class Order66 extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/o/OrderChaos.java b/Mage.Sets/src/mage/cards/o/OrderChaos.java
index a3de2b54abf..4dcea29d5d9 100644
--- a/Mage.Sets/src/mage/cards/o/OrderChaos.java
+++ b/Mage.Sets/src/mage/cards/o/OrderChaos.java
@@ -39,7 +39,7 @@ import mage.filter.StaticFilters;
import mage.target.Target;
import mage.target.common.TargetAttackingCreature;
-public class OrderChaos extends SplitCard {
+public final class OrderChaos extends SplitCard {
public OrderChaos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}", "{2}{R}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/o/OrderOfLeitbur.java b/Mage.Sets/src/mage/cards/o/OrderOfLeitbur.java
index 54fc2981873..87ae89277bb 100644
--- a/Mage.Sets/src/mage/cards/o/OrderOfLeitbur.java
+++ b/Mage.Sets/src/mage/cards/o/OrderOfLeitbur.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class OrderOfLeitbur extends CardImpl {
+public final class OrderOfLeitbur extends CardImpl {
public OrderOfLeitbur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrderOfSuccession.java b/Mage.Sets/src/mage/cards/o/OrderOfSuccession.java
index 9a0b89c5d4a..a0d51d017b4 100644
--- a/Mage.Sets/src/mage/cards/o/OrderOfSuccession.java
+++ b/Mage.Sets/src/mage/cards/o/OrderOfSuccession.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class OrderOfSuccession extends CardImpl {
+public final class OrderOfSuccession extends CardImpl {
public OrderOfSuccession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OrderOfTheEbonHand.java b/Mage.Sets/src/mage/cards/o/OrderOfTheEbonHand.java
index c6b58a81183..5b4e9d46118 100644
--- a/Mage.Sets/src/mage/cards/o/OrderOfTheEbonHand.java
+++ b/Mage.Sets/src/mage/cards/o/OrderOfTheEbonHand.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class OrderOfTheEbonHand extends CardImpl {
+public final class OrderOfTheEbonHand extends CardImpl {
public OrderOfTheEbonHand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OrderOfTheGoldenCricket.java b/Mage.Sets/src/mage/cards/o/OrderOfTheGoldenCricket.java
index efbb6b9b606..391529cb9b2 100644
--- a/Mage.Sets/src/mage/cards/o/OrderOfTheGoldenCricket.java
+++ b/Mage.Sets/src/mage/cards/o/OrderOfTheGoldenCricket.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class OrderOfTheGoldenCricket extends CardImpl {
+public final class OrderOfTheGoldenCricket extends CardImpl {
public OrderOfTheGoldenCricket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrderOfTheSacredBell.java b/Mage.Sets/src/mage/cards/o/OrderOfTheSacredBell.java
index 6a0fd5dc544..c1804d47685 100644
--- a/Mage.Sets/src/mage/cards/o/OrderOfTheSacredBell.java
+++ b/Mage.Sets/src/mage/cards/o/OrderOfTheSacredBell.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class OrderOfTheSacredBell extends CardImpl {
+public final class OrderOfTheSacredBell extends CardImpl {
public OrderOfTheSacredBell (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OrderOfTheSacredTorch.java b/Mage.Sets/src/mage/cards/o/OrderOfTheSacredTorch.java
index 6c4f1bb258f..7e7cf149568 100644
--- a/Mage.Sets/src/mage/cards/o/OrderOfTheSacredTorch.java
+++ b/Mage.Sets/src/mage/cards/o/OrderOfTheSacredTorch.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author Quercitron
*/
-public class OrderOfTheSacredTorch extends CardImpl {
+public final class OrderOfTheSacredTorch extends CardImpl {
private static final FilterSpell filter = new FilterSpell("black spell");
diff --git a/Mage.Sets/src/mage/cards/o/OrderOfTheStars.java b/Mage.Sets/src/mage/cards/o/OrderOfTheStars.java
index 6d6d5d6171e..794b0160d31 100644
--- a/Mage.Sets/src/mage/cards/o/OrderOfTheStars.java
+++ b/Mage.Sets/src/mage/cards/o/OrderOfTheStars.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class OrderOfTheStars extends CardImpl {
+public final class OrderOfTheStars extends CardImpl {
public OrderOfTheStars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrderOfTheWhiteShield.java b/Mage.Sets/src/mage/cards/o/OrderOfTheWhiteShield.java
index b26457cb00a..a0d81f361df 100644
--- a/Mage.Sets/src/mage/cards/o/OrderOfTheWhiteShield.java
+++ b/Mage.Sets/src/mage/cards/o/OrderOfTheWhiteShield.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class OrderOfTheWhiteShield extends CardImpl {
+public final class OrderOfTheWhiteShield extends CardImpl {
public OrderOfTheWhiteShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrderOfWhiteclay.java b/Mage.Sets/src/mage/cards/o/OrderOfWhiteclay.java
index 453bc32a6ac..b5454b38acd 100644
--- a/Mage.Sets/src/mage/cards/o/OrderOfWhiteclay.java
+++ b/Mage.Sets/src/mage/cards/o/OrderOfWhiteclay.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
* @author jeffwadsworth
*/
-public class OrderOfWhiteclay extends CardImpl {
+public final class OrderOfWhiteclay extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with converted mana cost 3 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/o/OrderOfYawgmoth.java b/Mage.Sets/src/mage/cards/o/OrderOfYawgmoth.java
index 6660ef32d1e..9b15e0ac598 100644
--- a/Mage.Sets/src/mage/cards/o/OrderOfYawgmoth.java
+++ b/Mage.Sets/src/mage/cards/o/OrderOfYawgmoth.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class OrderOfYawgmoth extends CardImpl {
+public final class OrderOfYawgmoth extends CardImpl {
public OrderOfYawgmoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OrderedMigration.java b/Mage.Sets/src/mage/cards/o/OrderedMigration.java
index ee18b8acf76..cf966210f74 100644
--- a/Mage.Sets/src/mage/cards/o/OrderedMigration.java
+++ b/Mage.Sets/src/mage/cards/o/OrderedMigration.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.OrderedMigrationBirdToken;
* @author LoneFox
*
*/
-public class OrderedMigration extends CardImpl {
+public final class OrderedMigration extends CardImpl {
public OrderedMigration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OrdruunCommando.java b/Mage.Sets/src/mage/cards/o/OrdruunCommando.java
index 504c872482b..39bc0d2f39a 100644
--- a/Mage.Sets/src/mage/cards/o/OrdruunCommando.java
+++ b/Mage.Sets/src/mage/cards/o/OrdruunCommando.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author djbrez
*/
-public class OrdruunCommando extends CardImpl {
+public final class OrdruunCommando extends CardImpl {
public OrdruunCommando(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OrdruunVeteran.java b/Mage.Sets/src/mage/cards/o/OrdruunVeteran.java
index 7e15062ea54..a8b26521e2a 100644
--- a/Mage.Sets/src/mage/cards/o/OrdruunVeteran.java
+++ b/Mage.Sets/src/mage/cards/o/OrdruunVeteran.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class OrdruunVeteran extends CardImpl {
+public final class OrdruunVeteran extends CardImpl {
public OrdruunVeteran(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OreGorger.java b/Mage.Sets/src/mage/cards/o/OreGorger.java
index 4a6dbe56a30..df8ed3ba5c0 100644
--- a/Mage.Sets/src/mage/cards/o/OreGorger.java
+++ b/Mage.Sets/src/mage/cards/o/OreGorger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
/**
* @author Loki
*/
-public class OreGorger extends CardImpl {
+public final class OreGorger extends CardImpl {
public OreGorger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OreskosExplorer.java b/Mage.Sets/src/mage/cards/o/OreskosExplorer.java
index 978bdb5d9bc..7d8bf4544d6 100644
--- a/Mage.Sets/src/mage/cards/o/OreskosExplorer.java
+++ b/Mage.Sets/src/mage/cards/o/OreskosExplorer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class OreskosExplorer extends CardImpl {
+public final class OreskosExplorer extends CardImpl {
public OreskosExplorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OreskosSunGuide.java b/Mage.Sets/src/mage/cards/o/OreskosSunGuide.java
index e501dbd603b..7c5ee009035 100644
--- a/Mage.Sets/src/mage/cards/o/OreskosSunGuide.java
+++ b/Mage.Sets/src/mage/cards/o/OreskosSunGuide.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class OreskosSunGuide extends CardImpl {
+public final class OreskosSunGuide extends CardImpl {
public OreskosSunGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OreskosSwiftclaw.java b/Mage.Sets/src/mage/cards/o/OreskosSwiftclaw.java
index 3842061dd12..35c4bf9b178 100644
--- a/Mage.Sets/src/mage/cards/o/OreskosSwiftclaw.java
+++ b/Mage.Sets/src/mage/cards/o/OreskosSwiftclaw.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class OreskosSwiftclaw extends CardImpl {
+public final class OreskosSwiftclaw extends CardImpl {
public OreskosSwiftclaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrganGrinder.java b/Mage.Sets/src/mage/cards/o/OrganGrinder.java
index cd83aa866c6..114ba6aa6bb 100644
--- a/Mage.Sets/src/mage/cards/o/OrganGrinder.java
+++ b/Mage.Sets/src/mage/cards/o/OrganGrinder.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LoneFox
*/
-public class OrganGrinder extends CardImpl {
+public final class OrganGrinder extends CardImpl {
public OrganGrinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/Orgg.java b/Mage.Sets/src/mage/cards/o/Orgg.java
index 92074e731f6..49552b30958 100644
--- a/Mage.Sets/src/mage/cards/o/Orgg.java
+++ b/Mage.Sets/src/mage/cards/o/Orgg.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author MarcoMarin
*/
-public class Orgg extends CardImpl {
+public final class Orgg extends CardImpl {
static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creature with power 3 or greater");
static final private FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creatures with power 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/o/OriginSpellbomb.java b/Mage.Sets/src/mage/cards/o/OriginSpellbomb.java
index eb64fa2d9c0..bbb10eb2508 100644
--- a/Mage.Sets/src/mage/cards/o/OriginSpellbomb.java
+++ b/Mage.Sets/src/mage/cards/o/OriginSpellbomb.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.MyrToken;
*
* @author Loki
*/
-public class OriginSpellbomb extends CardImpl {
+public final class OriginSpellbomb extends CardImpl {
public OriginSpellbomb (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/o/OrimSamiteHealer.java b/Mage.Sets/src/mage/cards/o/OrimSamiteHealer.java
index 0f8b6b77edf..311866a2543 100644
--- a/Mage.Sets/src/mage/cards/o/OrimSamiteHealer.java
+++ b/Mage.Sets/src/mage/cards/o/OrimSamiteHealer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class OrimSamiteHealer extends CardImpl {
+public final class OrimSamiteHealer extends CardImpl {
public OrimSamiteHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrimsChant.java b/Mage.Sets/src/mage/cards/o/OrimsChant.java
index b32abc61a57..a42fbb976a1 100644
--- a/Mage.Sets/src/mage/cards/o/OrimsChant.java
+++ b/Mage.Sets/src/mage/cards/o/OrimsChant.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class OrimsChant extends CardImpl {
+public final class OrimsChant extends CardImpl {
public OrimsChant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrimsCure.java b/Mage.Sets/src/mage/cards/o/OrimsCure.java
index dfb9875c882..6d69e1a1e57 100644
--- a/Mage.Sets/src/mage/cards/o/OrimsCure.java
+++ b/Mage.Sets/src/mage/cards/o/OrimsCure.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author L_J
*/
-public class OrimsCure extends CardImpl {
+public final class OrimsCure extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("If you control a Plains");
private static final FilterControlledCreaturePermanent filterCreature = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/o/OrimsPrayer.java b/Mage.Sets/src/mage/cards/o/OrimsPrayer.java
index 4ad6e297a70..a02faf86b9b 100644
--- a/Mage.Sets/src/mage/cards/o/OrimsPrayer.java
+++ b/Mage.Sets/src/mage/cards/o/OrimsPrayer.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author L_J
*/
-public class OrimsPrayer extends CardImpl {
+public final class OrimsPrayer extends CardImpl {
public OrimsPrayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrimsThunder.java b/Mage.Sets/src/mage/cards/o/OrimsThunder.java
index bc4ac2f117d..c4b4d324121 100644
--- a/Mage.Sets/src/mage/cards/o/OrimsThunder.java
+++ b/Mage.Sets/src/mage/cards/o/OrimsThunder.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class OrimsThunder extends CardImpl {
+public final class OrimsThunder extends CardImpl {
public OrimsThunder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrimsTouch.java b/Mage.Sets/src/mage/cards/o/OrimsTouch.java
index 27020d9cd7d..d01177a8365 100644
--- a/Mage.Sets/src/mage/cards/o/OrimsTouch.java
+++ b/Mage.Sets/src/mage/cards/o/OrimsTouch.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class OrimsTouch extends CardImpl {
+public final class OrimsTouch extends CardImpl {
public OrimsTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrissSamiteGuardian.java b/Mage.Sets/src/mage/cards/o/OrissSamiteGuardian.java
index f469f88613c..eec687ecffb 100644
--- a/Mage.Sets/src/mage/cards/o/OrissSamiteGuardian.java
+++ b/Mage.Sets/src/mage/cards/o/OrissSamiteGuardian.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class OrissSamiteGuardian extends CardImpl {
+public final class OrissSamiteGuardian extends CardImpl {
public OrissSamiteGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrmendahlProfanePrince.java b/Mage.Sets/src/mage/cards/o/OrmendahlProfanePrince.java
index cf9cca1c698..3f31e315331 100644
--- a/Mage.Sets/src/mage/cards/o/OrmendahlProfanePrince.java
+++ b/Mage.Sets/src/mage/cards/o/OrmendahlProfanePrince.java
@@ -43,7 +43,7 @@ import mage.constants.SuperType;
*
* @author fireshoes
*/
-public class OrmendahlProfanePrince extends CardImpl {
+public final class OrmendahlProfanePrince extends CardImpl {
public OrmendahlProfanePrince(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/o/OrnamentalCourage.java b/Mage.Sets/src/mage/cards/o/OrnamentalCourage.java
index c57b6f93583..7379be89ced 100644
--- a/Mage.Sets/src/mage/cards/o/OrnamentalCourage.java
+++ b/Mage.Sets/src/mage/cards/o/OrnamentalCourage.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OrnamentalCourage extends CardImpl {
+public final class OrnamentalCourage extends CardImpl {
public OrnamentalCourage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OrnateKanzashi.java b/Mage.Sets/src/mage/cards/o/OrnateKanzashi.java
index d2970bef0ae..6f7eb0dcbe9 100644
--- a/Mage.Sets/src/mage/cards/o/OrnateKanzashi.java
+++ b/Mage.Sets/src/mage/cards/o/OrnateKanzashi.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class OrnateKanzashi extends CardImpl {
+public final class OrnateKanzashi extends CardImpl {
public OrnateKanzashi(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/o/OrneryKudu.java b/Mage.Sets/src/mage/cards/o/OrneryKudu.java
index ce5041fcd1b..7827ff39d1c 100644
--- a/Mage.Sets/src/mage/cards/o/OrneryKudu.java
+++ b/Mage.Sets/src/mage/cards/o/OrneryKudu.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class OrneryKudu extends CardImpl {
+public final class OrneryKudu extends CardImpl {
public OrneryKudu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/Ornitharch.java b/Mage.Sets/src/mage/cards/o/Ornitharch.java
index f77205a3e6f..4e0c00760b3 100644
--- a/Mage.Sets/src/mage/cards/o/Ornitharch.java
+++ b/Mage.Sets/src/mage/cards/o/Ornitharch.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.BirdToken;
*
* @author LevelX2
*/
-public class Ornitharch extends CardImpl {
+public final class Ornitharch extends CardImpl {
public Ornitharch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/Ornithopter.java b/Mage.Sets/src/mage/cards/o/Ornithopter.java
index e65edcc8ad7..7f673491970 100644
--- a/Mage.Sets/src/mage/cards/o/Ornithopter.java
+++ b/Mage.Sets/src/mage/cards/o/Ornithopter.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Ornithopter extends CardImpl {
+public final class Ornithopter extends CardImpl {
public Ornithopter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE,CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/o/OrochiEggwatcher.java b/Mage.Sets/src/mage/cards/o/OrochiEggwatcher.java
index a9b5d91b226..6769d4c6ec7 100644
--- a/Mage.Sets/src/mage/cards/o/OrochiEggwatcher.java
+++ b/Mage.Sets/src/mage/cards/o/OrochiEggwatcher.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX
*/
-public class OrochiEggwatcher extends CardImpl {
+public final class OrochiEggwatcher extends CardImpl {
public OrochiEggwatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OrochiHatchery.java b/Mage.Sets/src/mage/cards/o/OrochiHatchery.java
index f22b12476eb..feec4050b22 100644
--- a/Mage.Sets/src/mage/cards/o/OrochiHatchery.java
+++ b/Mage.Sets/src/mage/cards/o/OrochiHatchery.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.SnakeToken;
/**
* @author LevelX2
*/
-public class OrochiHatchery extends CardImpl {
+public final class OrochiHatchery extends CardImpl {
public OrochiHatchery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{X}{X}");
diff --git a/Mage.Sets/src/mage/cards/o/OrochiLeafcaller.java b/Mage.Sets/src/mage/cards/o/OrochiLeafcaller.java
index 351c2d21e04..2c7bcea67ea 100644
--- a/Mage.Sets/src/mage/cards/o/OrochiLeafcaller.java
+++ b/Mage.Sets/src/mage/cards/o/OrochiLeafcaller.java
@@ -42,7 +42,7 @@ import mage.constants.ColoredManaSymbol;
*
* @author Loki
*/
-public class OrochiLeafcaller extends CardImpl {
+public final class OrochiLeafcaller extends CardImpl {
public OrochiLeafcaller (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OrochiRanger.java b/Mage.Sets/src/mage/cards/o/OrochiRanger.java
index d51966f988d..639eb6fd12b 100644
--- a/Mage.Sets/src/mage/cards/o/OrochiRanger.java
+++ b/Mage.Sets/src/mage/cards/o/OrochiRanger.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX
*/
-public class OrochiRanger extends CardImpl {
+public final class OrochiRanger extends CardImpl {
public OrochiRanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OrochiSustainer.java b/Mage.Sets/src/mage/cards/o/OrochiSustainer.java
index 0358c117fa5..03c1435bbae 100644
--- a/Mage.Sets/src/mage/cards/o/OrochiSustainer.java
+++ b/Mage.Sets/src/mage/cards/o/OrochiSustainer.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class OrochiSustainer extends CardImpl {
+public final class OrochiSustainer extends CardImpl {
public OrochiSustainer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OrosTheAvenger.java b/Mage.Sets/src/mage/cards/o/OrosTheAvenger.java
index 70c6e167baf..ac1516c47df 100644
--- a/Mage.Sets/src/mage/cards/o/OrosTheAvenger.java
+++ b/Mage.Sets/src/mage/cards/o/OrosTheAvenger.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class OrosTheAvenger extends CardImpl {
+public final class OrosTheAvenger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonwhite creature");
diff --git a/Mage.Sets/src/mage/cards/o/OrtolanKeyboardist.java b/Mage.Sets/src/mage/cards/o/OrtolanKeyboardist.java
index 6520ea85e51..94d167cd242 100644
--- a/Mage.Sets/src/mage/cards/o/OrtolanKeyboardist.java
+++ b/Mage.Sets/src/mage/cards/o/OrtolanKeyboardist.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class OrtolanKeyboardist extends CardImpl {
+public final class OrtolanKeyboardist extends CardImpl {
public OrtolanKeyboardist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OrzhovAdvokist.java b/Mage.Sets/src/mage/cards/o/OrzhovAdvokist.java
index 72ab986f6d9..fd54dec703e 100644
--- a/Mage.Sets/src/mage/cards/o/OrzhovAdvokist.java
+++ b/Mage.Sets/src/mage/cards/o/OrzhovAdvokist.java
@@ -58,7 +58,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class OrzhovAdvokist extends CardImpl {
+public final class OrzhovAdvokist extends CardImpl {
public OrzhovAdvokist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OrzhovBasilica.java b/Mage.Sets/src/mage/cards/o/OrzhovBasilica.java
index ca4de783d54..8595a99cc2c 100644
--- a/Mage.Sets/src/mage/cards/o/OrzhovBasilica.java
+++ b/Mage.Sets/src/mage/cards/o/OrzhovBasilica.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Loki
*/
-public class OrzhovBasilica extends CardImpl {
+public final class OrzhovBasilica extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/o/OrzhovCharm.java b/Mage.Sets/src/mage/cards/o/OrzhovCharm.java
index d6c41b44c50..b8a4d7133e3 100644
--- a/Mage.Sets/src/mage/cards/o/OrzhovCharm.java
+++ b/Mage.Sets/src/mage/cards/o/OrzhovCharm.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OrzhovCharm extends CardImpl {
+public final class OrzhovCharm extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("creature card with converted mana cost 1 or less from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/o/OrzhovCluestone.java b/Mage.Sets/src/mage/cards/o/OrzhovCluestone.java
index 470ed06af04..385f6b930f8 100644
--- a/Mage.Sets/src/mage/cards/o/OrzhovCluestone.java
+++ b/Mage.Sets/src/mage/cards/o/OrzhovCluestone.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*/
-public class OrzhovCluestone extends CardImpl {
+public final class OrzhovCluestone extends CardImpl {
public OrzhovCluestone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/OrzhovEuthanist.java b/Mage.Sets/src/mage/cards/o/OrzhovEuthanist.java
index 86774c0d5a6..7b987098177 100644
--- a/Mage.Sets/src/mage/cards/o/OrzhovEuthanist.java
+++ b/Mage.Sets/src/mage/cards/o/OrzhovEuthanist.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OrzhovEuthanist extends CardImpl {
+public final class OrzhovEuthanist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn");
static {
diff --git a/Mage.Sets/src/mage/cards/o/OrzhovGuildgate.java b/Mage.Sets/src/mage/cards/o/OrzhovGuildgate.java
index bc655ff0e69..d9fcac8f7c7 100644
--- a/Mage.Sets/src/mage/cards/o/OrzhovGuildgate.java
+++ b/Mage.Sets/src/mage/cards/o/OrzhovGuildgate.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class OrzhovGuildgate extends CardImpl {
+public final class OrzhovGuildgate extends CardImpl {
public OrzhovGuildgate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/o/OrzhovGuildmage.java b/Mage.Sets/src/mage/cards/o/OrzhovGuildmage.java
index 963eb239da5..26c3ccfe407 100644
--- a/Mage.Sets/src/mage/cards/o/OrzhovGuildmage.java
+++ b/Mage.Sets/src/mage/cards/o/OrzhovGuildmage.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class OrzhovGuildmage extends CardImpl {
+public final class OrzhovGuildmage extends CardImpl {
public OrzhovGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W/B}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/o/OrzhovKeyrune.java b/Mage.Sets/src/mage/cards/o/OrzhovKeyrune.java
index 348c0e0938d..ea41a9044de 100644
--- a/Mage.Sets/src/mage/cards/o/OrzhovKeyrune.java
+++ b/Mage.Sets/src/mage/cards/o/OrzhovKeyrune.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author LevelX2
*/
-public class OrzhovKeyrune extends CardImpl {
+public final class OrzhovKeyrune extends CardImpl {
public OrzhovKeyrune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/o/OrzhovPontiff.java b/Mage.Sets/src/mage/cards/o/OrzhovPontiff.java
index 132aacc28f8..ae4acf3ee8e 100644
--- a/Mage.Sets/src/mage/cards/o/OrzhovPontiff.java
+++ b/Mage.Sets/src/mage/cards/o/OrzhovPontiff.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class OrzhovPontiff extends CardImpl {
+public final class OrzhovPontiff extends CardImpl {
private static final FilterCreaturePermanent filterControlled = new FilterCreaturePermanent("Creatures you control");
private static final FilterCreaturePermanent filterNotControlled = new FilterCreaturePermanent("creatures you don't control");
diff --git a/Mage.Sets/src/mage/cards/o/OrzhovSignet.java b/Mage.Sets/src/mage/cards/o/OrzhovSignet.java
index 75cf1c89723..4516406a5ff 100644
--- a/Mage.Sets/src/mage/cards/o/OrzhovSignet.java
+++ b/Mage.Sets/src/mage/cards/o/OrzhovSignet.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class OrzhovSignet extends CardImpl {
+public final class OrzhovSignet extends CardImpl {
public OrzhovSignet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/o/OrzhovaTheChurchOfDeals.java b/Mage.Sets/src/mage/cards/o/OrzhovaTheChurchOfDeals.java
index 7df77b77e9d..7ded1dd37a1 100644
--- a/Mage.Sets/src/mage/cards/o/OrzhovaTheChurchOfDeals.java
+++ b/Mage.Sets/src/mage/cards/o/OrzhovaTheChurchOfDeals.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class OrzhovaTheChurchOfDeals extends CardImpl {
+public final class OrzhovaTheChurchOfDeals extends CardImpl {
public OrzhovaTheChurchOfDeals(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/o/OsaiVultures.java b/Mage.Sets/src/mage/cards/o/OsaiVultures.java
index c8c9fe363e2..815f252497e 100644
--- a/Mage.Sets/src/mage/cards/o/OsaiVultures.java
+++ b/Mage.Sets/src/mage/cards/o/OsaiVultures.java
@@ -50,7 +50,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class OsaiVultures extends CardImpl {
+public final class OsaiVultures extends CardImpl {
public OsaiVultures(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OstiaryThrull.java b/Mage.Sets/src/mage/cards/o/OstiaryThrull.java
index d71be4cbcf4..78f2649b6d8 100644
--- a/Mage.Sets/src/mage/cards/o/OstiaryThrull.java
+++ b/Mage.Sets/src/mage/cards/o/OstiaryThrull.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class OstiaryThrull extends CardImpl {
+public final class OstiaryThrull extends CardImpl {
public OstiaryThrull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/Ostracize.java b/Mage.Sets/src/mage/cards/o/Ostracize.java
index 726b4682a83..1ad6b047047 100644
--- a/Mage.Sets/src/mage/cards/o/Ostracize.java
+++ b/Mage.Sets/src/mage/cards/o/Ostracize.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class Ostracize extends CardImpl {
+public final class Ostracize extends CardImpl {
public Ostracize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OtarianJuggernaut.java b/Mage.Sets/src/mage/cards/o/OtarianJuggernaut.java
index ac839865425..5920032089b 100644
--- a/Mage.Sets/src/mage/cards/o/OtarianJuggernaut.java
+++ b/Mage.Sets/src/mage/cards/o/OtarianJuggernaut.java
@@ -52,7 +52,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class OtarianJuggernaut extends CardImpl {
+public final class OtarianJuggernaut extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls");
diff --git a/Mage.Sets/src/mage/cards/o/OtepecHuntmaster.java b/Mage.Sets/src/mage/cards/o/OtepecHuntmaster.java
index bb12dd7fb42..848ca1dd06a 100644
--- a/Mage.Sets/src/mage/cards/o/OtepecHuntmaster.java
+++ b/Mage.Sets/src/mage/cards/o/OtepecHuntmaster.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class OtepecHuntmaster extends CardImpl {
+public final class OtepecHuntmaster extends CardImpl {
private static final FilterCard filter = new FilterCard("Dinosaur spells");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Dinosaur");
diff --git a/Mage.Sets/src/mage/cards/o/OtherworldAtlas.java b/Mage.Sets/src/mage/cards/o/OtherworldAtlas.java
index 52e726fc44b..29ac9fe42c5 100644
--- a/Mage.Sets/src/mage/cards/o/OtherworldAtlas.java
+++ b/Mage.Sets/src/mage/cards/o/OtherworldAtlas.java
@@ -46,7 +46,7 @@ import mage.players.Player;
/**
* @author noxx
*/
-public class OtherworldAtlas extends CardImpl {
+public final class OtherworldAtlas extends CardImpl {
public OtherworldAtlas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/o/OtherworldlyJourney.java b/Mage.Sets/src/mage/cards/o/OtherworldlyJourney.java
index ee69afe6582..fa2eea11745 100644
--- a/Mage.Sets/src/mage/cards/o/OtherworldlyJourney.java
+++ b/Mage.Sets/src/mage/cards/o/OtherworldlyJourney.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX
*/
-public class OtherworldlyJourney extends CardImpl {
+public final class OtherworldlyJourney extends CardImpl {
public OtherworldlyJourney(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OtherworldlyOutburst.java b/Mage.Sets/src/mage/cards/o/OtherworldlyOutburst.java
index 1681d85c027..d1c8d2a36ab 100644
--- a/Mage.Sets/src/mage/cards/o/OtherworldlyOutburst.java
+++ b/Mage.Sets/src/mage/cards/o/OtherworldlyOutburst.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OtherworldlyOutburst extends CardImpl {
+public final class OtherworldlyOutburst extends CardImpl {
public OtherworldlyOutburst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/o/Oubliette.java b/Mage.Sets/src/mage/cards/o/Oubliette.java
index af14b201aca..1964531734f 100644
--- a/Mage.Sets/src/mage/cards/o/Oubliette.java
+++ b/Mage.Sets/src/mage/cards/o/Oubliette.java
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author MarcoMarin
*/
-public class Oubliette extends CardImpl {
+public final class Oubliette extends CardImpl {
public Oubliette(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OupheVandals.java b/Mage.Sets/src/mage/cards/o/OupheVandals.java
index 5c2fb1fc371..f2544c5c560 100644
--- a/Mage.Sets/src/mage/cards/o/OupheVandals.java
+++ b/Mage.Sets/src/mage/cards/o/OupheVandals.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetActivatedOrTriggeredAbility;
*
* @author TheElk801
*/
-public class OupheVandals extends CardImpl {
+public final class OupheVandals extends CardImpl {
private final static FilterStackObject filter = new FilterStackObject("ability from an artifact source");
diff --git a/Mage.Sets/src/mage/cards/o/Oust.java b/Mage.Sets/src/mage/cards/o/Oust.java
index 31d5190f069..dd3fb60c805 100644
--- a/Mage.Sets/src/mage/cards/o/Oust.java
+++ b/Mage.Sets/src/mage/cards/o/Oust.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Oust extends CardImpl {
+public final class Oust extends CardImpl {
public Oust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OutOfBounds.java b/Mage.Sets/src/mage/cards/o/OutOfBounds.java
new file mode 100644
index 00000000000..a741f731531
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/o/OutOfBounds.java
@@ -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.o;
+
+import java.util.UUID;
+import mage.abilities.effects.common.CounterTargetEffect;
+import mage.abilities.keyword.AssistAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.target.TargetSpell;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class OutOfBounds extends CardImpl {
+
+ public OutOfBounds(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}");
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // Counter target spell.
+ this.getSpellAbility().addEffect(new CounterTargetEffect());
+ this.getSpellAbility().addTarget(new TargetSpell());
+ }
+
+ public OutOfBounds(final OutOfBounds card) {
+ super(card);
+ }
+
+ @Override
+ public OutOfBounds copy() {
+ return new OutOfBounds(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/o/Outbreak.java b/Mage.Sets/src/mage/cards/o/Outbreak.java
index fdc3916df23..c8a3a26da11 100644
--- a/Mage.Sets/src/mage/cards/o/Outbreak.java
+++ b/Mage.Sets/src/mage/cards/o/Outbreak.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInHand;
/**
* @author fireshoes
*/
-public class Outbreak extends CardImpl {
+public final class Outbreak extends CardImpl {
private static final FilterCard filterLand = new FilterCard("a Swamp card");
diff --git a/Mage.Sets/src/mage/cards/o/OuterRimSlaver.java b/Mage.Sets/src/mage/cards/o/OuterRimSlaver.java
index 15bcc4f4dae..ee84c099fe1 100644
--- a/Mage.Sets/src/mage/cards/o/OuterRimSlaver.java
+++ b/Mage.Sets/src/mage/cards/o/OuterRimSlaver.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class OuterRimSlaver extends CardImpl {
+public final class OuterRimSlaver extends CardImpl {
public OuterRimSlaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OutlandBoar.java b/Mage.Sets/src/mage/cards/o/OutlandBoar.java
index fce4dc4655f..a9bce0ce4b6 100644
--- a/Mage.Sets/src/mage/cards/o/OutlandBoar.java
+++ b/Mage.Sets/src/mage/cards/o/OutlandBoar.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author fireshoes
*/
-public class OutlandBoar extends CardImpl {
+public final class OutlandBoar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/o/OutlandColossus.java b/Mage.Sets/src/mage/cards/o/OutlandColossus.java
index dc85a505cdc..c39c7b0a168 100644
--- a/Mage.Sets/src/mage/cards/o/OutlandColossus.java
+++ b/Mage.Sets/src/mage/cards/o/OutlandColossus.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class OutlandColossus extends CardImpl {
+public final class OutlandColossus extends CardImpl {
public OutlandColossus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OutlawHolocron.java b/Mage.Sets/src/mage/cards/o/OutlawHolocron.java
index d6ced7c0804..3fc479f3792 100644
--- a/Mage.Sets/src/mage/cards/o/OutlawHolocron.java
+++ b/Mage.Sets/src/mage/cards/o/OutlawHolocron.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class OutlawHolocron extends CardImpl {
+public final class OutlawHolocron extends CardImpl {
public OutlawHolocron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/o/Outnumber.java b/Mage.Sets/src/mage/cards/o/Outnumber.java
index 9989ea37536..267aac7cf6a 100644
--- a/Mage.Sets/src/mage/cards/o/Outnumber.java
+++ b/Mage.Sets/src/mage/cards/o/Outnumber.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Outnumber extends CardImpl {
+public final class Outnumber extends CardImpl {
public Outnumber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OutpostSiege.java b/Mage.Sets/src/mage/cards/o/OutpostSiege.java
index 7887d55754a..8ed8c719074 100644
--- a/Mage.Sets/src/mage/cards/o/OutpostSiege.java
+++ b/Mage.Sets/src/mage/cards/o/OutpostSiege.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class OutpostSiege extends CardImpl {
+public final class OutpostSiege extends CardImpl {
private final static String ruleTrigger1 = "&bull Khans — At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card.";
private final static String ruleTrigger2 = "&bull Dragons — Whenever a creature you control leaves the battlefield, {this} deals 1 damage to any target.";
diff --git a/Mage.Sets/src/mage/cards/o/OutrageShaman.java b/Mage.Sets/src/mage/cards/o/OutrageShaman.java
index 405a8ab90b0..92de7acd538 100644
--- a/Mage.Sets/src/mage/cards/o/OutrageShaman.java
+++ b/Mage.Sets/src/mage/cards/o/OutrageShaman.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*/
-public class OutrageShaman extends CardImpl {
+public final class OutrageShaman extends CardImpl {
public OutrageShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OutriderEnKor.java b/Mage.Sets/src/mage/cards/o/OutriderEnKor.java
index 4c249e1e51a..57b5c1fe28e 100644
--- a/Mage.Sets/src/mage/cards/o/OutriderEnKor.java
+++ b/Mage.Sets/src/mage/cards/o/OutriderEnKor.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class OutriderEnKor extends CardImpl {
+public final class OutriderEnKor extends CardImpl {
public OutriderEnKor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OutriderOfJhess.java b/Mage.Sets/src/mage/cards/o/OutriderOfJhess.java
index a720c350949..698593cd9f3 100644
--- a/Mage.Sets/src/mage/cards/o/OutriderOfJhess.java
+++ b/Mage.Sets/src/mage/cards/o/OutriderOfJhess.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class OutriderOfJhess extends CardImpl {
+public final class OutriderOfJhess extends CardImpl {
public OutriderOfJhess (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Outwit.java b/Mage.Sets/src/mage/cards/o/Outwit.java
index 772e8ec5c28..5bf579997c5 100644
--- a/Mage.Sets/src/mage/cards/o/Outwit.java
+++ b/Mage.Sets/src/mage/cards/o/Outwit.java
@@ -52,7 +52,7 @@ import mage.target.TargetObject;
*
* @author jeffwadsworth
*/
-public class Outwit extends CardImpl {
+public final class Outwit extends CardImpl {
private static FilterSpell filter = new FilterSpell("spell that targets a player");
diff --git a/Mage.Sets/src/mage/cards/o/OvalchaseDaredevil.java b/Mage.Sets/src/mage/cards/o/OvalchaseDaredevil.java
index 8b704291ce1..5e0344105ab 100644
--- a/Mage.Sets/src/mage/cards/o/OvalchaseDaredevil.java
+++ b/Mage.Sets/src/mage/cards/o/OvalchaseDaredevil.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class OvalchaseDaredevil extends CardImpl {
+public final class OvalchaseDaredevil extends CardImpl {
private static final FilterPermanent filter = new FilterArtifactPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/o/OvalchaseDragster.java b/Mage.Sets/src/mage/cards/o/OvalchaseDragster.java
index e8acbec3528..279fa8f0d8d 100644
--- a/Mage.Sets/src/mage/cards/o/OvalchaseDragster.java
+++ b/Mage.Sets/src/mage/cards/o/OvalchaseDragster.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class OvalchaseDragster extends CardImpl {
+public final class OvalchaseDragster extends CardImpl {
public OvalchaseDragster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/o/Overabundance.java b/Mage.Sets/src/mage/cards/o/Overabundance.java
index b6fb9b281d6..4e5e3d6ead4 100644
--- a/Mage.Sets/src/mage/cards/o/Overabundance.java
+++ b/Mage.Sets/src/mage/cards/o/Overabundance.java
@@ -42,13 +42,13 @@ import mage.filter.common.FilterLandPermanent;
*
* @author elliott-king
*/
-public class Overabundance extends CardImpl {
+public final class Overabundance extends CardImpl {
public Overabundance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{G}");
- // Whenever a player taps a land for mana, that player adds one mana to their mana pool of any type that land produced, and Overabundance deals 1 damage to him or her.
+ // Whenever a player taps a land for mana, that player adds one mana of any type that land produced, and Overabundance deals 1 damage to him or her.
this.addAbility(new TapForManaAllTriggeredManaAbility(
new AddManaOfAnyTypeProducedEffect(),
new FilterLandPermanent( "a player taps a land"),
diff --git a/Mage.Sets/src/mage/cards/o/OverbeingOfMyth.java b/Mage.Sets/src/mage/cards/o/OverbeingOfMyth.java
index 4d00a37f8f8..7d263883208 100644
--- a/Mage.Sets/src/mage/cards/o/OverbeingOfMyth.java
+++ b/Mage.Sets/src/mage/cards/o/OverbeingOfMyth.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
* @author jeffwadsworth
*
*/
-public class OverbeingOfMyth extends CardImpl {
+public final class OverbeingOfMyth extends CardImpl {
public OverbeingOfMyth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G/U}{G/U}{G/U}{G/U}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/o/Overblaze.java b/Mage.Sets/src/mage/cards/o/Overblaze.java
index 98230d948b2..600e268efbf 100644
--- a/Mage.Sets/src/mage/cards/o/Overblaze.java
+++ b/Mage.Sets/src/mage/cards/o/Overblaze.java
@@ -46,7 +46,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class Overblaze extends CardImpl {
+public final class Overblaze extends CardImpl {
public Overblaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/Overburden.java b/Mage.Sets/src/mage/cards/o/Overburden.java
index 8c963aec68b..2cad0191271 100644
--- a/Mage.Sets/src/mage/cards/o/Overburden.java
+++ b/Mage.Sets/src/mage/cards/o/Overburden.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author Quercitron
*/
-public class Overburden extends CardImpl {
+public final class Overburden extends CardImpl {
private static final FilterCreaturePermanent ENTERS_BATTLEFIELD_FILTER = new FilterCreaturePermanent("a nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/o/Overcome.java b/Mage.Sets/src/mage/cards/o/Overcome.java
index 9222685358f..718ca1222fb 100644
--- a/Mage.Sets/src/mage/cards/o/Overcome.java
+++ b/Mage.Sets/src/mage/cards/o/Overcome.java
@@ -11,7 +11,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.filter.common.FilterCreaturePermanent;
-public class Overcome extends CardImpl {
+public final class Overcome extends CardImpl {
public Overcome(UUID ownerId, CardSetInfo cardSetInfo){
super(ownerId, cardSetInfo, new CardType[]{CardType.SORCERY}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OvereagerApprentice.java b/Mage.Sets/src/mage/cards/o/OvereagerApprentice.java
index 3d7d8b9063d..e64aafdcfa1 100644
--- a/Mage.Sets/src/mage/cards/o/OvereagerApprentice.java
+++ b/Mage.Sets/src/mage/cards/o/OvereagerApprentice.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author cbt33, Loki (Dark Ritual)
*/
-public class OvereagerApprentice extends CardImpl {
+public final class OvereagerApprentice extends CardImpl {
public OvereagerApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OverflowingInsight.java b/Mage.Sets/src/mage/cards/o/OverflowingInsight.java
index 8a0f2d805ba..cd156be47b6 100644
--- a/Mage.Sets/src/mage/cards/o/OverflowingInsight.java
+++ b/Mage.Sets/src/mage/cards/o/OverflowingInsight.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class OverflowingInsight extends CardImpl {
+public final class OverflowingInsight extends CardImpl {
public OverflowingInsight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OvergrownArmasaur.java b/Mage.Sets/src/mage/cards/o/OvergrownArmasaur.java
index a3ed552f9d2..1e8434cb3c0 100644
--- a/Mage.Sets/src/mage/cards/o/OvergrownArmasaur.java
+++ b/Mage.Sets/src/mage/cards/o/OvergrownArmasaur.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author JayDi85
*/
-public class OvergrownArmasaur extends CardImpl {
+public final class OvergrownArmasaur extends CardImpl {
public OvergrownArmasaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OvergrownBattlement.java b/Mage.Sets/src/mage/cards/o/OvergrownBattlement.java
index ab4770dc48b..7ae797f4fe1 100644
--- a/Mage.Sets/src/mage/cards/o/OvergrownBattlement.java
+++ b/Mage.Sets/src/mage/cards/o/OvergrownBattlement.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author North
*/
-public class OvergrownBattlement extends CardImpl {
+public final class OvergrownBattlement extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature with defender you control");
diff --git a/Mage.Sets/src/mage/cards/o/OvergrownEstate.java b/Mage.Sets/src/mage/cards/o/OvergrownEstate.java
index 233105c0747..f247d93f47b 100644
--- a/Mage.Sets/src/mage/cards/o/OvergrownEstate.java
+++ b/Mage.Sets/src/mage/cards/o/OvergrownEstate.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class OvergrownEstate extends CardImpl {
+public final class OvergrownEstate extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/o/OvergrownTomb.java b/Mage.Sets/src/mage/cards/o/OvergrownTomb.java
index 0874001f2a2..f626fcd6308 100644
--- a/Mage.Sets/src/mage/cards/o/OvergrownTomb.java
+++ b/Mage.Sets/src/mage/cards/o/OvergrownTomb.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class OvergrownTomb extends CardImpl {
+public final class OvergrownTomb extends CardImpl {
public OvergrownTomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/o/Overgrowth.java b/Mage.Sets/src/mage/cards/o/Overgrowth.java
index 26bf28bb892..5ada88f2494 100644
--- a/Mage.Sets/src/mage/cards/o/Overgrowth.java
+++ b/Mage.Sets/src/mage/cards/o/Overgrowth.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class Overgrowth extends CardImpl {
+public final class Overgrowth extends CardImpl {
public Overgrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
@@ -65,7 +65,7 @@ public class Overgrowth extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
- // Whenever enchanted land is tapped for mana, its controller adds {G}{G} to their mana pool.
+ // Whenever enchanted land is tapped for mana, its controller adds {G}{G}.
this.addAbility(new OvergrowthTriggeredAbility());
}
@@ -116,6 +116,6 @@ class OvergrowthTriggeredAbility extends TriggeredManaAbility {
@Override
public String getRule() {
- return "Whenever enchanted land is tapped for mana, its controller adds {G}{G} to their mana pool";
+ return "Whenever enchanted land is tapped for mana, its controller adds {G}{G}";
}
}
diff --git a/Mage.Sets/src/mage/cards/o/OverlaidTerrain.java b/Mage.Sets/src/mage/cards/o/OverlaidTerrain.java
index 6b78d6f8a13..0f515aff288 100644
--- a/Mage.Sets/src/mage/cards/o/OverlaidTerrain.java
+++ b/Mage.Sets/src/mage/cards/o/OverlaidTerrain.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class OverlaidTerrain extends CardImpl {
+public final class OverlaidTerrain extends CardImpl {
public OverlaidTerrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/Overload.java b/Mage.Sets/src/mage/cards/o/Overload.java
index 7c995a55e13..9795b74ffcf 100644
--- a/Mage.Sets/src/mage/cards/o/Overload.java
+++ b/Mage.Sets/src/mage/cards/o/Overload.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LoneFox
*/
-public class Overload extends CardImpl {
+public final class Overload extends CardImpl {
public Overload(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/o/Overmaster.java b/Mage.Sets/src/mage/cards/o/Overmaster.java
index c74d0f3a834..4631e4de5db 100644
--- a/Mage.Sets/src/mage/cards/o/Overmaster.java
+++ b/Mage.Sets/src/mage/cards/o/Overmaster.java
@@ -48,7 +48,7 @@ import mage.watchers.Watcher;
*
* @author emerald000
*/
-public class Overmaster extends CardImpl {
+public final class Overmaster extends CardImpl {
public Overmaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/o/OverrideCard.java b/Mage.Sets/src/mage/cards/o/OverrideCard.java
index 79ff1744a12..e573c2737fb 100644
--- a/Mage.Sets/src/mage/cards/o/OverrideCard.java
+++ b/Mage.Sets/src/mage/cards/o/OverrideCard.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class OverrideCard extends CardImpl {
+public final class OverrideCard extends CardImpl {
public OverrideCard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Overrule.java b/Mage.Sets/src/mage/cards/o/Overrule.java
index 404fc11665e..f0b71983ea1 100644
--- a/Mage.Sets/src/mage/cards/o/Overrule.java
+++ b/Mage.Sets/src/mage/cards/o/Overrule.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author FenrisulfrX
*/
-public class Overrule extends CardImpl {
+public final class Overrule extends CardImpl {
public Overrule(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Overrun.java b/Mage.Sets/src/mage/cards/o/Overrun.java
index c3b61419875..644fdbb2646 100644
--- a/Mage.Sets/src/mage/cards/o/Overrun.java
+++ b/Mage.Sets/src/mage/cards/o/Overrun.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LokiX
*/
-public class Overrun extends CardImpl {
+public final class Overrun extends CardImpl {
public Overrun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OverseerOfTheDamned.java b/Mage.Sets/src/mage/cards/o/OverseerOfTheDamned.java
index 572d1f38248..2ad1861e51a 100644
--- a/Mage.Sets/src/mage/cards/o/OverseerOfTheDamned.java
+++ b/Mage.Sets/src/mage/cards/o/OverseerOfTheDamned.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class OverseerOfTheDamned extends CardImpl {
+public final class OverseerOfTheDamned extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/o/OversoldCemetery.java b/Mage.Sets/src/mage/cards/o/OversoldCemetery.java
index 8a059f26f7b..ebbbf8ccadf 100644
--- a/Mage.Sets/src/mage/cards/o/OversoldCemetery.java
+++ b/Mage.Sets/src/mage/cards/o/OversoldCemetery.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class OversoldCemetery extends CardImpl {
+public final class OversoldCemetery extends CardImpl {
public OversoldCemetery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OversoulOfDusk.java b/Mage.Sets/src/mage/cards/o/OversoulOfDusk.java
index adbf16de2f0..a90e593327a 100644
--- a/Mage.Sets/src/mage/cards/o/OversoulOfDusk.java
+++ b/Mage.Sets/src/mage/cards/o/OversoulOfDusk.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class OversoulOfDusk extends CardImpl {
+public final class OversoulOfDusk extends CardImpl {
private static final FilterCard filter = new FilterCard("blue, from black, and from red");
diff --git a/Mage.Sets/src/mage/cards/o/Overtaker.java b/Mage.Sets/src/mage/cards/o/Overtaker.java
index 048d0cea663..0eeaa30ab48 100644
--- a/Mage.Sets/src/mage/cards/o/Overtaker.java
+++ b/Mage.Sets/src/mage/cards/o/Overtaker.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Overtaker extends CardImpl {
+public final class Overtaker extends CardImpl {
public Overtaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Overwhelm.java b/Mage.Sets/src/mage/cards/o/Overwhelm.java
index f8f2a83dd2a..d0c8fd8f0e7 100644
--- a/Mage.Sets/src/mage/cards/o/Overwhelm.java
+++ b/Mage.Sets/src/mage/cards/o/Overwhelm.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class Overwhelm extends CardImpl {
+public final class Overwhelm extends CardImpl {
public Overwhelm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OverwhelmingDenial.java b/Mage.Sets/src/mage/cards/o/OverwhelmingDenial.java
index b4bf99f1b8b..b21f19272b6 100644
--- a/Mage.Sets/src/mage/cards/o/OverwhelmingDenial.java
+++ b/Mage.Sets/src/mage/cards/o/OverwhelmingDenial.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class OverwhelmingDenial extends CardImpl {
+public final class OverwhelmingDenial extends CardImpl {
public OverwhelmingDenial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OverwhelmingForces.java b/Mage.Sets/src/mage/cards/o/OverwhelmingForces.java
index cea9fa270dc..c84b71e86c6 100644
--- a/Mage.Sets/src/mage/cards/o/OverwhelmingForces.java
+++ b/Mage.Sets/src/mage/cards/o/OverwhelmingForces.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class OverwhelmingForces extends CardImpl {
+public final class OverwhelmingForces extends CardImpl {
public OverwhelmingForces(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/o/OverwhelmingInstinct.java b/Mage.Sets/src/mage/cards/o/OverwhelmingInstinct.java
index 3a185d8f95d..d23e96b9076 100644
--- a/Mage.Sets/src/mage/cards/o/OverwhelmingInstinct.java
+++ b/Mage.Sets/src/mage/cards/o/OverwhelmingInstinct.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent;
*
* @author Wehk
*/
-public class OverwhelmingInstinct extends CardImpl {
+public final class OverwhelmingInstinct extends CardImpl {
public OverwhelmingInstinct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OverwhelmingIntellect.java b/Mage.Sets/src/mage/cards/o/OverwhelmingIntellect.java
index ca6b52d1e34..20b3e6d59b1 100644
--- a/Mage.Sets/src/mage/cards/o/OverwhelmingIntellect.java
+++ b/Mage.Sets/src/mage/cards/o/OverwhelmingIntellect.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class OverwhelmingIntellect extends CardImpl {
+public final class OverwhelmingIntellect extends CardImpl {
public OverwhelmingIntellect(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OverwhelmingSplendor.java b/Mage.Sets/src/mage/cards/o/OverwhelmingSplendor.java
index 218a32fecab..e88d9e29905 100644
--- a/Mage.Sets/src/mage/cards/o/OverwhelmingSplendor.java
+++ b/Mage.Sets/src/mage/cards/o/OverwhelmingSplendor.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class OverwhelmingSplendor extends CardImpl {
+public final class OverwhelmingSplendor extends CardImpl {
public OverwhelmingSplendor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{6}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OverwhelmingStampede.java b/Mage.Sets/src/mage/cards/o/OverwhelmingStampede.java
index 29dec1777f3..e1eae8df42f 100644
--- a/Mage.Sets/src/mage/cards/o/OverwhelmingStampede.java
+++ b/Mage.Sets/src/mage/cards/o/OverwhelmingStampede.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class OverwhelmingStampede extends CardImpl {
+public final class OverwhelmingStampede extends CardImpl {
public OverwhelmingStampede(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/o/Ovinize.java b/Mage.Sets/src/mage/cards/o/Ovinize.java
index 6c9af1d7dc5..8e4cc02ab36 100644
--- a/Mage.Sets/src/mage/cards/o/Ovinize.java
+++ b/Mage.Sets/src/mage/cards/o/Ovinize.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*
*/
-public class Ovinize extends CardImpl {
+public final class Ovinize extends CardImpl {
public Ovinize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/Ovinomancer.java b/Mage.Sets/src/mage/cards/o/Ovinomancer.java
index e712246b3ef..01279f4a481 100644
--- a/Mage.Sets/src/mage/cards/o/Ovinomancer.java
+++ b/Mage.Sets/src/mage/cards/o/Ovinomancer.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Ovinomancer extends CardImpl {
+public final class Ovinomancer extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("basic lands");
diff --git a/Mage.Sets/src/mage/cards/o/OviyaPashiriSageLifecrafter.java b/Mage.Sets/src/mage/cards/o/OviyaPashiriSageLifecrafter.java
index 3e68b98e6e7..5fe48b61eab 100644
--- a/Mage.Sets/src/mage/cards/o/OviyaPashiriSageLifecrafter.java
+++ b/Mage.Sets/src/mage/cards/o/OviyaPashiriSageLifecrafter.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class OviyaPashiriSageLifecrafter extends CardImpl {
+public final class OviyaPashiriSageLifecrafter extends CardImpl {
public OviyaPashiriSageLifecrafter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OwlFamiliar.java b/Mage.Sets/src/mage/cards/o/OwlFamiliar.java
index af536880bc3..cdac89780c0 100644
--- a/Mage.Sets/src/mage/cards/o/OwlFamiliar.java
+++ b/Mage.Sets/src/mage/cards/o/OwlFamiliar.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class OwlFamiliar extends CardImpl {
+public final class OwlFamiliar extends CardImpl {
public OwlFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/o/OxiddaDaredevil.java b/Mage.Sets/src/mage/cards/o/OxiddaDaredevil.java
index 0b80ced99b1..56457ad98be 100644
--- a/Mage.Sets/src/mage/cards/o/OxiddaDaredevil.java
+++ b/Mage.Sets/src/mage/cards/o/OxiddaDaredevil.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class OxiddaDaredevil extends CardImpl {
+public final class OxiddaDaredevil extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
static {
diff --git a/Mage.Sets/src/mage/cards/o/OxiddaGolem.java b/Mage.Sets/src/mage/cards/o/OxiddaGolem.java
index 4ab3a39b276..c671072321a 100644
--- a/Mage.Sets/src/mage/cards/o/OxiddaGolem.java
+++ b/Mage.Sets/src/mage/cards/o/OxiddaGolem.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class OxiddaGolem extends CardImpl {
+public final class OxiddaGolem extends CardImpl {
public OxiddaGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/o/OxiddaScrapmelter.java b/Mage.Sets/src/mage/cards/o/OxiddaScrapmelter.java
index 4d93b5f17b6..e529adab63b 100644
--- a/Mage.Sets/src/mage/cards/o/OxiddaScrapmelter.java
+++ b/Mage.Sets/src/mage/cards/o/OxiddaScrapmelter.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author Loki, North
*/
-public class OxiddaScrapmelter extends CardImpl {
+public final class OxiddaScrapmelter extends CardImpl {
public OxiddaScrapmelter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/o/Oxidize.java b/Mage.Sets/src/mage/cards/o/Oxidize.java
index 694bd094493..0ed4f9275da 100644
--- a/Mage.Sets/src/mage/cards/o/Oxidize.java
+++ b/Mage.Sets/src/mage/cards/o/Oxidize.java
@@ -37,7 +37,7 @@ import mage.target.common.TargetArtifactPermanent;
/**
* @author Loki
*/
-public class Oxidize extends CardImpl {
+public final class Oxidize extends CardImpl {
public Oxidize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/o/OyobiWhoSplitTheHeavens.java b/Mage.Sets/src/mage/cards/o/OyobiWhoSplitTheHeavens.java
index 7917bb9fa30..09d3940f01c 100644
--- a/Mage.Sets/src/mage/cards/o/OyobiWhoSplitTheHeavens.java
+++ b/Mage.Sets/src/mage/cards/o/OyobiWhoSplitTheHeavens.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.AnotherSpiritToken;
/**
* @author Loki
*/
-public class OyobiWhoSplitTheHeavens extends CardImpl {
+public final class OyobiWhoSplitTheHeavens extends CardImpl {
public OyobiWhoSplitTheHeavens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PacificationArray.java b/Mage.Sets/src/mage/cards/p/PacificationArray.java
index 66b61e85653..ab01560aa9b 100644
--- a/Mage.Sets/src/mage/cards/p/PacificationArray.java
+++ b/Mage.Sets/src/mage/cards/p/PacificationArray.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
/**
* @author JRHerlehy
*/
-public class PacificationArray extends CardImpl {
+public final class PacificationArray extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/p/Pacifism.java b/Mage.Sets/src/mage/cards/p/Pacifism.java
index ea19abed04b..cfa9da5dffe 100644
--- a/Mage.Sets/src/mage/cards/p/Pacifism.java
+++ b/Mage.Sets/src/mage/cards/p/Pacifism.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Pacifism extends CardImpl {
+public final class Pacifism extends CardImpl {
public Pacifism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PackGuardian.java b/Mage.Sets/src/mage/cards/p/PackGuardian.java
index 1a9849c0611..8c96b105368 100644
--- a/Mage.Sets/src/mage/cards/p/PackGuardian.java
+++ b/Mage.Sets/src/mage/cards/p/PackGuardian.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.WolfToken;
*
* @author fireshoes
*/
-public class PackGuardian extends CardImpl {
+public final class PackGuardian extends CardImpl {
public PackGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PackHunt.java b/Mage.Sets/src/mage/cards/p/PackHunt.java
index 5425daadfb6..eed97b50b5b 100644
--- a/Mage.Sets/src/mage/cards/p/PackHunt.java
+++ b/Mage.Sets/src/mage/cards/p/PackHunt.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author ciaccona007
*/
-public class PackHunt extends CardImpl {
+public final class PackHunt extends CardImpl {
public PackHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PackRat.java b/Mage.Sets/src/mage/cards/p/PackRat.java
index cbda4cfa414..eaacca99ed1 100644
--- a/Mage.Sets/src/mage/cards/p/PackRat.java
+++ b/Mage.Sets/src/mage/cards/p/PackRat.java
@@ -65,7 +65,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class PackRat extends CardImpl {
+public final class PackRat extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Rats you control");
diff --git a/Mage.Sets/src/mage/cards/p/PacksDisdain.java b/Mage.Sets/src/mage/cards/p/PacksDisdain.java
index 0114364c870..a048b405bf0 100644
--- a/Mage.Sets/src/mage/cards/p/PacksDisdain.java
+++ b/Mage.Sets/src/mage/cards/p/PacksDisdain.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fenhl
*/
-public class PacksDisdain extends CardImpl {
+public final class PacksDisdain extends CardImpl {
public PacksDisdain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PactOfNegation.java b/Mage.Sets/src/mage/cards/p/PactOfNegation.java
index 7c55b0f45c1..40eaaafc703 100644
--- a/Mage.Sets/src/mage/cards/p/PactOfNegation.java
+++ b/Mage.Sets/src/mage/cards/p/PactOfNegation.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author Plopman
*/
-public class PactOfNegation extends CardImpl {
+public final class PactOfNegation extends CardImpl {
public PactOfNegation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/p/PactOfTheTitan.java b/Mage.Sets/src/mage/cards/p/PactOfTheTitan.java
index ce195f1a0e9..33bfc82def1 100644
--- a/Mage.Sets/src/mage/cards/p/PactOfTheTitan.java
+++ b/Mage.Sets/src/mage/cards/p/PactOfTheTitan.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.GiantToken;
*
* @author Plopman
*/
-public class PactOfTheTitan extends CardImpl {
+public final class PactOfTheTitan extends CardImpl {
public PactOfTheTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{0}");
diff --git a/Mage.Sets/src/mage/cards/p/PadeemConsulOfInnovation.java b/Mage.Sets/src/mage/cards/p/PadeemConsulOfInnovation.java
index d53d9ff3a67..e75e218ca29 100644
--- a/Mage.Sets/src/mage/cards/p/PadeemConsulOfInnovation.java
+++ b/Mage.Sets/src/mage/cards/p/PadeemConsulOfInnovation.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author LevelX2
*/
-public class PadeemConsulOfInnovation extends CardImpl {
+public final class PadeemConsulOfInnovation extends CardImpl {
public PadeemConsulOfInnovation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PainKami.java b/Mage.Sets/src/mage/cards/p/PainKami.java
index fd1ed19d173..426d032ea84 100644
--- a/Mage.Sets/src/mage/cards/p/PainKami.java
+++ b/Mage.Sets/src/mage/cards/p/PainKami.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class PainKami extends CardImpl {
+public final class PainKami extends CardImpl {
public PainKami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PainMagnification.java b/Mage.Sets/src/mage/cards/p/PainMagnification.java
index 7a73ebb58de..888445f06fb 100644
--- a/Mage.Sets/src/mage/cards/p/PainMagnification.java
+++ b/Mage.Sets/src/mage/cards/p/PainMagnification.java
@@ -43,7 +43,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author ilcartographer
*/
-public class PainMagnification extends CardImpl {
+public final class PainMagnification extends CardImpl {
public PainMagnification(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PainSeer.java b/Mage.Sets/src/mage/cards/p/PainSeer.java
index f14ac0d4b75..2696ad4580f 100644
--- a/Mage.Sets/src/mage/cards/p/PainSeer.java
+++ b/Mage.Sets/src/mage/cards/p/PainSeer.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class PainSeer extends CardImpl {
+public final class PainSeer extends CardImpl {
public PainSeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PainSuffering.java b/Mage.Sets/src/mage/cards/p/PainSuffering.java
index 389e5e15f15..a8595ec0a64 100644
--- a/Mage.Sets/src/mage/cards/p/PainSuffering.java
+++ b/Mage.Sets/src/mage/cards/p/PainSuffering.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author FenrisulfrX
*/
-public class PainSuffering extends SplitCard {
+public final class PainSuffering extends SplitCard {
public PainSuffering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}", "{3}{R}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/p/Painbringer.java b/Mage.Sets/src/mage/cards/p/Painbringer.java
index 6a4cf13f138..7e67d48901b 100644
--- a/Mage.Sets/src/mage/cards/p/Painbringer.java
+++ b/Mage.Sets/src/mage/cards/p/Painbringer.java
@@ -1,82 +1,82 @@
-/*
- * 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.p;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.ExileXFromYourGraveCost;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.dynamicvalue.DynamicValue;
-import mage.abilities.dynamicvalue.common.GetXValue;
-import mage.abilities.dynamicvalue.common.SignInversionDynamicValue;
-import mage.abilities.effects.Effect;
-import mage.abilities.effects.common.continuous.BoostTargetEffect;
-import mage.constants.SubType;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.filter.FilterCard;
-import mage.target.common.TargetCreaturePermanent;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class Painbringer extends CardImpl {
-
- public Painbringer(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
-
- this.subtype.add(SubType.HUMAN);
- this.subtype.add(SubType.MINION);
- this.power = new MageInt(1);
- this.toughness = new MageInt(1);
-
- // {tap}, Exile any number of cards from your graveyard: Target creature gets -X/-X until end of turn, where X is the number of cards exiled this way.
- DynamicValue X = new SignInversionDynamicValue(new GetXValue());
- Effect effect = new BoostTargetEffect(X, X, Duration.EndOfTurn);
- effect.setText("Target creature gets -X/-X until end of turn, where X is the number of cards exiled this way");
- Ability ability = new SimpleActivatedAbility(effect, new TapSourceCost());
- ability.addCost(new ExileXFromYourGraveCost(new FilterCard("any number of cards from your graveyard")));
- ability.addTarget(new TargetCreaturePermanent());
- this.addAbility(ability);
-
- }
-
- public Painbringer(final Painbringer card) {
- super(card);
- }
-
- @Override
- public Painbringer copy() {
- return new Painbringer(this);
- }
-}
+/*
+ * 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.p;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.ExileXFromYourGraveCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.dynamicvalue.common.GetXValue;
+import mage.abilities.dynamicvalue.common.SignInversionDynamicValue;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.filter.FilterCard;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class Painbringer extends CardImpl {
+
+ public Painbringer(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.MINION);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}, Exile any number of cards from your graveyard: Target creature gets -X/-X until end of turn, where X is the number of cards exiled this way.
+ DynamicValue X = new SignInversionDynamicValue(new GetXValue());
+ Effect effect = new BoostTargetEffect(X, X, Duration.EndOfTurn);
+ effect.setText("Target creature gets -X/-X until end of turn, where X is the number of cards exiled this way");
+ Ability ability = new SimpleActivatedAbility(effect, new TapSourceCost());
+ ability.addCost(new ExileXFromYourGraveCost(new FilterCard("any number of cards from your graveyard")));
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+
+ }
+
+ public Painbringer(final Painbringer card) {
+ super(card);
+ }
+
+ @Override
+ public Painbringer copy() {
+ return new Painbringer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/PainfulLesson.java b/Mage.Sets/src/mage/cards/p/PainfulLesson.java
index c41e67a2b68..fe0cd8749a8 100644
--- a/Mage.Sets/src/mage/cards/p/PainfulLesson.java
+++ b/Mage.Sets/src/mage/cards/p/PainfulLesson.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class PainfulLesson extends CardImpl {
+public final class PainfulLesson extends CardImpl {
public PainfulLesson(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PainfulMemories.java b/Mage.Sets/src/mage/cards/p/PainfulMemories.java
index f4d91414b55..27e4c242fff 100644
--- a/Mage.Sets/src/mage/cards/p/PainfulMemories.java
+++ b/Mage.Sets/src/mage/cards/p/PainfulMemories.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author Quercitron
*/
-public class PainfulMemories extends CardImpl {
+public final class PainfulMemories extends CardImpl {
public PainfulMemories(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PainfulQuandary.java b/Mage.Sets/src/mage/cards/p/PainfulQuandary.java
index ab38f84d9d9..e1fc784be76 100644
--- a/Mage.Sets/src/mage/cards/p/PainfulQuandary.java
+++ b/Mage.Sets/src/mage/cards/p/PainfulQuandary.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PainfulQuandary extends CardImpl {
+public final class PainfulQuandary extends CardImpl {
public PainfulQuandary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PainfulTruths.java b/Mage.Sets/src/mage/cards/p/PainfulTruths.java
index 52de989f2a3..9b02162959c 100644
--- a/Mage.Sets/src/mage/cards/p/PainfulTruths.java
+++ b/Mage.Sets/src/mage/cards/p/PainfulTruths.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class PainfulTruths extends CardImpl {
+public final class PainfulTruths extends CardImpl {
public PainfulTruths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/Painiac.java b/Mage.Sets/src/mage/cards/p/Painiac.java
index 44d005f6784..65567b67f24 100644
--- a/Mage.Sets/src/mage/cards/p/Painiac.java
+++ b/Mage.Sets/src/mage/cards/p/Painiac.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class Painiac extends CardImpl {
+public final class Painiac extends CardImpl {
public Painiac(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PainsReward.java b/Mage.Sets/src/mage/cards/p/PainsReward.java
index eed733fb6e9..b55be8b1eaa 100644
--- a/Mage.Sets/src/mage/cards/p/PainsReward.java
+++ b/Mage.Sets/src/mage/cards/p/PainsReward.java
@@ -43,7 +43,7 @@ import mage.players.PlayerList;
*
* @author LevelX2
*/
-public class PainsReward extends CardImpl {
+public final class PainsReward extends CardImpl {
public PainsReward(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/Painsmith.java b/Mage.Sets/src/mage/cards/p/Painsmith.java
index 34a1c007539..dc44f7b90bd 100644
--- a/Mage.Sets/src/mage/cards/p/Painsmith.java
+++ b/Mage.Sets/src/mage/cards/p/Painsmith.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki, North
*/
-public class Painsmith extends CardImpl {
+public final class Painsmith extends CardImpl {
public Painsmith (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
this.subtype.add(SubType.HUMAN);
diff --git a/Mage.Sets/src/mage/cards/p/PaintedBluffs.java b/Mage.Sets/src/mage/cards/p/PaintedBluffs.java
index c6b931f60eb..ad01a59aaf1 100644
--- a/Mage.Sets/src/mage/cards/p/PaintedBluffs.java
+++ b/Mage.Sets/src/mage/cards/p/PaintedBluffs.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class PaintedBluffs extends CardImpl {
+public final class PaintedBluffs extends CardImpl {
public PaintedBluffs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/p/PaintersServant.java b/Mage.Sets/src/mage/cards/p/PaintersServant.java
index cabb7f43a8b..cc90b2846a1 100644
--- a/Mage.Sets/src/mage/cards/p/PaintersServant.java
+++ b/Mage.Sets/src/mage/cards/p/PaintersServant.java
@@ -51,13 +51,13 @@ import mage.game.command.CommandObject;
import mage.game.permanent.Permanent;
import mage.game.stack.Spell;
import mage.players.Player;
-import mage.sets.Commander;
+import mage.game.command.Commander;
/**
*
* @author LevelX2
*/
-public class PaintersServant extends CardImpl {
+public final class PaintersServant extends CardImpl {
public PaintersServant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PainwrackerOni.java b/Mage.Sets/src/mage/cards/p/PainwrackerOni.java
index c7032f4424f..a98868cf1c9 100644
--- a/Mage.Sets/src/mage/cards/p/PainwrackerOni.java
+++ b/Mage.Sets/src/mage/cards/p/PainwrackerOni.java
@@ -48,7 +48,7 @@ import mage.game.Game;
*
* @author LevelX
*/
-public class PainwrackerOni extends CardImpl {
+public final class PainwrackerOni extends CardImpl {
public PainwrackerOni (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PalaceFamiliar.java b/Mage.Sets/src/mage/cards/p/PalaceFamiliar.java
index 51be72973b8..b438c0c2044 100644
--- a/Mage.Sets/src/mage/cards/p/PalaceFamiliar.java
+++ b/Mage.Sets/src/mage/cards/p/PalaceFamiliar.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class PalaceFamiliar extends CardImpl {
+public final class PalaceFamiliar extends CardImpl {
public PalaceFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PalaceGuard.java b/Mage.Sets/src/mage/cards/p/PalaceGuard.java
index b274f08ee48..c6c590eacd5 100644
--- a/Mage.Sets/src/mage/cards/p/PalaceGuard.java
+++ b/Mage.Sets/src/mage/cards/p/PalaceGuard.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PalaceGuard extends CardImpl {
+public final class PalaceGuard extends CardImpl {
public PalaceGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PalaceJailer.java b/Mage.Sets/src/mage/cards/p/PalaceJailer.java
index ad7c0abcf37..5f4c222d2ad 100644
--- a/Mage.Sets/src/mage/cards/p/PalaceJailer.java
+++ b/Mage.Sets/src/mage/cards/p/PalaceJailer.java
@@ -59,7 +59,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class PalaceJailer extends CardImpl {
+public final class PalaceJailer extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/p/PalaceSentinels.java b/Mage.Sets/src/mage/cards/p/PalaceSentinels.java
index 9429a57550d..b1e16535066 100644
--- a/Mage.Sets/src/mage/cards/p/PalaceSentinels.java
+++ b/Mage.Sets/src/mage/cards/p/PalaceSentinels.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class PalaceSentinels extends CardImpl {
+public final class PalaceSentinels extends CardImpl {
public PalaceSentinels(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PalaceSiege.java b/Mage.Sets/src/mage/cards/p/PalaceSiege.java
index cc3d3f85cb3..c6f741a9090 100644
--- a/Mage.Sets/src/mage/cards/p/PalaceSiege.java
+++ b/Mage.Sets/src/mage/cards/p/PalaceSiege.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class PalaceSiege extends CardImpl {
+public final class PalaceSiege extends CardImpl {
private final static String ruleTrigger1 = "&bull Khans — At the beginning of your upkeep, return target creature card from your graveyard to your hand.";
private final static String ruleTrigger2 = "&bull Dragons — At the beginning of your upkeep, each opponent loses 2 life and you gain 2 life.";
diff --git a/Mage.Sets/src/mage/cards/p/PaladinEnVec.java b/Mage.Sets/src/mage/cards/p/PaladinEnVec.java
index 5de1d8fee13..8c39ac330cf 100644
--- a/Mage.Sets/src/mage/cards/p/PaladinEnVec.java
+++ b/Mage.Sets/src/mage/cards/p/PaladinEnVec.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PaladinEnVec extends CardImpl {
+public final class PaladinEnVec extends CardImpl {
public PaladinEnVec(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PaladinOfAtonement.java b/Mage.Sets/src/mage/cards/p/PaladinOfAtonement.java
index 941c0495abe..eb85083b2ea 100644
--- a/Mage.Sets/src/mage/cards/p/PaladinOfAtonement.java
+++ b/Mage.Sets/src/mage/cards/p/PaladinOfAtonement.java
@@ -1,79 +1,79 @@
-/*
- * 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.p;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
-import mage.abilities.common.DiesTriggeredAbility;
-import mage.abilities.condition.common.LiveLostLastTurnCondition;
-import mage.abilities.decorator.ConditionalTriggeredAbility;
-import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue;
-import mage.abilities.effects.common.GainLifeEffect;
-import mage.abilities.effects.common.counter.AddCountersSourceEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.SubType;
-import mage.constants.TargetController;
-import mage.counters.CounterType;
-
-/**
- *
- * @author LevelX2
- */
-public class PaladinOfAtonement extends CardImpl {
-
- public PaladinOfAtonement(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
-
- this.subtype.add(SubType.VAMPIRE);
- this.subtype.add(SubType.KNIGHT);
- this.power = new MageInt(1);
- this.toughness = new MageInt(1);
-
- // At the beginning of each upkeep, if you lost life last turn, put a +1/+1 counter on Paladin of Atonement.
- this.addAbility(new ConditionalTriggeredAbility(
- new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), TargetController.ANY, false),
- LiveLostLastTurnCondition.instance,
- "At the beginning of each upkeep, if you lost life last turn, put a +1/+1 counter on {this}"));
-
- // When Paladin of Atonement dies, you gain life equal to it's toughness.
- this.addAbility(new DiesTriggeredAbility(new GainLifeEffect(SourcePermanentToughnessValue.getInstance(),
- "you gain life equal to it's toughness")));
- }
-
- public PaladinOfAtonement(final PaladinOfAtonement card) {
- super(card);
- }
-
- @Override
- public PaladinOfAtonement copy() {
- return new PaladinOfAtonement(this);
- }
-}
+/*
+ * 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.p;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.DiesTriggeredAbility;
+import mage.abilities.condition.common.LiveLostLastTurnCondition;
+import mage.abilities.decorator.ConditionalTriggeredAbility;
+import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+import mage.constants.TargetController;
+import mage.counters.CounterType;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class PaladinOfAtonement extends CardImpl {
+
+ public PaladinOfAtonement(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
+
+ this.subtype.add(SubType.VAMPIRE);
+ this.subtype.add(SubType.KNIGHT);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // At the beginning of each upkeep, if you lost life last turn, put a +1/+1 counter on Paladin of Atonement.
+ this.addAbility(new ConditionalTriggeredAbility(
+ new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), TargetController.ANY, false),
+ LiveLostLastTurnCondition.instance,
+ "At the beginning of each upkeep, if you lost life last turn, put a +1/+1 counter on {this}"));
+
+ // When Paladin of Atonement dies, you gain life equal to it's toughness.
+ this.addAbility(new DiesTriggeredAbility(new GainLifeEffect(SourcePermanentToughnessValue.getInstance(),
+ "you gain life equal to it's toughness")));
+ }
+
+ public PaladinOfAtonement(final PaladinOfAtonement card) {
+ super(card);
+ }
+
+ @Override
+ public PaladinOfAtonement copy() {
+ return new PaladinOfAtonement(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/PaladinOfPrahv.java b/Mage.Sets/src/mage/cards/p/PaladinOfPrahv.java
index d2f5ab72316..1e407df817a 100644
--- a/Mage.Sets/src/mage/cards/p/PaladinOfPrahv.java
+++ b/Mage.Sets/src/mage/cards/p/PaladinOfPrahv.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author FenrisulfrX
*/
-public class PaladinOfPrahv extends CardImpl {
+public final class PaladinOfPrahv extends CardImpl {
public PaladinOfPrahv(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PaladinOfTheBloodstained.java b/Mage.Sets/src/mage/cards/p/PaladinOfTheBloodstained.java
index 00bf68a71da..21cb9d8cc28 100644
--- a/Mage.Sets/src/mage/cards/p/PaladinOfTheBloodstained.java
+++ b/Mage.Sets/src/mage/cards/p/PaladinOfTheBloodstained.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.IxalanVampireToken;
*
* @author TheElk801
*/
-public class PaladinOfTheBloodstained extends CardImpl {
+public final class PaladinOfTheBloodstained extends CardImpl {
public PaladinOfTheBloodstained(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PaleBears.java b/Mage.Sets/src/mage/cards/p/PaleBears.java
index af933348fd1..34e36fde0fe 100644
--- a/Mage.Sets/src/mage/cards/p/PaleBears.java
+++ b/Mage.Sets/src/mage/cards/p/PaleBears.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PaleBears extends CardImpl {
+public final class PaleBears extends CardImpl {
public PaleBears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PaleMoon.java b/Mage.Sets/src/mage/cards/p/PaleMoon.java
index 70548af74f0..b87e6177eef 100644
--- a/Mage.Sets/src/mage/cards/p/PaleMoon.java
+++ b/Mage.Sets/src/mage/cards/p/PaleMoon.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class PaleMoon extends CardImpl {
+public final class PaleMoon extends CardImpl {
public PaleMoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PaleRecluse.java b/Mage.Sets/src/mage/cards/p/PaleRecluse.java
index a3c4eb920e0..8a05cfb9fa3 100644
--- a/Mage.Sets/src/mage/cards/p/PaleRecluse.java
+++ b/Mage.Sets/src/mage/cards/p/PaleRecluse.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class PaleRecluse extends CardImpl {
+public final class PaleRecluse extends CardImpl {
public PaleRecluse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PaleRiderOfTrostad.java b/Mage.Sets/src/mage/cards/p/PaleRiderOfTrostad.java
index f09cf4f27b8..35813383fd7 100644
--- a/Mage.Sets/src/mage/cards/p/PaleRiderOfTrostad.java
+++ b/Mage.Sets/src/mage/cards/p/PaleRiderOfTrostad.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class PaleRiderOfTrostad extends CardImpl {
+public final class PaleRiderOfTrostad extends CardImpl {
public PaleRiderOfTrostad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PaleWayfarer.java b/Mage.Sets/src/mage/cards/p/PaleWayfarer.java
index 658a55291f3..9ce66639182 100644
--- a/Mage.Sets/src/mage/cards/p/PaleWayfarer.java
+++ b/Mage.Sets/src/mage/cards/p/PaleWayfarer.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth & L_J
*/
-public class PaleWayfarer extends CardImpl {
+public final class PaleWayfarer extends CardImpl {
public PaleWayfarer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/Paleoloth.java b/Mage.Sets/src/mage/cards/p/Paleoloth.java
index 395f5e52508..c7a410ae055 100644
--- a/Mage.Sets/src/mage/cards/p/Paleoloth.java
+++ b/Mage.Sets/src/mage/cards/p/Paleoloth.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jeffwadsworth
*/
-public class Paleoloth extends CardImpl {
+public final class Paleoloth extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/p/Palinchron.java b/Mage.Sets/src/mage/cards/p/Palinchron.java
index 76a82549b7c..0c563bab2c7 100644
--- a/Mage.Sets/src/mage/cards/p/Palinchron.java
+++ b/Mage.Sets/src/mage/cards/p/Palinchron.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class Palinchron extends CardImpl {
+public final class Palinchron extends CardImpl {
public Palinchron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PalisadeGiant.java b/Mage.Sets/src/mage/cards/p/PalisadeGiant.java
index 86c523f732f..d8c2e236821 100644
--- a/Mage.Sets/src/mage/cards/p/PalisadeGiant.java
+++ b/Mage.Sets/src/mage/cards/p/PalisadeGiant.java
@@ -66,7 +66,7 @@ import mage.players.Player;
-public class PalisadeGiant extends CardImpl {
+public final class PalisadeGiant extends CardImpl {
public PalisadeGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PalladiaMors.java b/Mage.Sets/src/mage/cards/p/PalladiaMors.java
index c5ba975afe2..9e2aadf8be7 100644
--- a/Mage.Sets/src/mage/cards/p/PalladiaMors.java
+++ b/Mage.Sets/src/mage/cards/p/PalladiaMors.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class PalladiaMors extends CardImpl {
+public final class PalladiaMors extends CardImpl {
public PalladiaMors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}{G}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PalladiumMyr.java b/Mage.Sets/src/mage/cards/p/PalladiumMyr.java
index 81f05a4a427..53a600c6a2e 100644
--- a/Mage.Sets/src/mage/cards/p/PalladiumMyr.java
+++ b/Mage.Sets/src/mage/cards/p/PalladiumMyr.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class PalladiumMyr extends CardImpl {
+public final class PalladiumMyr extends CardImpl {
public PalladiumMyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PalliationAccord.java b/Mage.Sets/src/mage/cards/p/PalliationAccord.java
index a9280631035..8df894afe32 100644
--- a/Mage.Sets/src/mage/cards/p/PalliationAccord.java
+++ b/Mage.Sets/src/mage/cards/p/PalliationAccord.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class PalliationAccord extends CardImpl {
+public final class PalliationAccord extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/p/PallidMycoderm.java b/Mage.Sets/src/mage/cards/p/PallidMycoderm.java
index d9196f89c10..fa0fb2231a9 100644
--- a/Mage.Sets/src/mage/cards/p/PallidMycoderm.java
+++ b/Mage.Sets/src/mage/cards/p/PallidMycoderm.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class PallidMycoderm extends CardImpl {
+public final class PallidMycoderm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature you control that's a Fungus or a Saproling");
private static final FilterControlledCreaturePermanent filterSaproling = new FilterControlledCreaturePermanent("a Saproling");
diff --git a/Mage.Sets/src/mage/cards/p/Pallimud.java b/Mage.Sets/src/mage/cards/p/Pallimud.java
index 74d375aa0df..27c365bbeba 100644
--- a/Mage.Sets/src/mage/cards/p/Pallimud.java
+++ b/Mage.Sets/src/mage/cards/p/Pallimud.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class Pallimud extends CardImpl {
+public final class Pallimud extends CardImpl {
public Pallimud(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Panacea.java b/Mage.Sets/src/mage/cards/p/Panacea.java
index 260a564addb..566b96cb5a1 100644
--- a/Mage.Sets/src/mage/cards/p/Panacea.java
+++ b/Mage.Sets/src/mage/cards/p/Panacea.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author TheElk801
*/
-public class Panacea extends CardImpl {
+public final class Panacea extends CardImpl {
public Panacea(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/p/Pandemonium.java b/Mage.Sets/src/mage/cards/p/Pandemonium.java
index 75b58d14b07..d8a5aee94dd 100644
--- a/Mage.Sets/src/mage/cards/p/Pandemonium.java
+++ b/Mage.Sets/src/mage/cards/p/Pandemonium.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Pandemonium extends CardImpl {
+public final class Pandemonium extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/p/PangTongYoungPhoenix.java b/Mage.Sets/src/mage/cards/p/PangTongYoungPhoenix.java
index 4ed1a5a1293..093d7bc32ef 100644
--- a/Mage.Sets/src/mage/cards/p/PangTongYoungPhoenix.java
+++ b/Mage.Sets/src/mage/cards/p/PangTongYoungPhoenix.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class PangTongYoungPhoenix extends CardImpl {
+public final class PangTongYoungPhoenix extends CardImpl {
public PangTongYoungPhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PanglacialWurm.java b/Mage.Sets/src/mage/cards/p/PanglacialWurm.java
index 889eba921a5..7bf15fa2852 100644
--- a/Mage.Sets/src/mage/cards/p/PanglacialWurm.java
+++ b/Mage.Sets/src/mage/cards/p/PanglacialWurm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class PanglacialWurm extends CardImpl {
+public final class PanglacialWurm extends CardImpl {
public PanglacialWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/Pangosaur.java b/Mage.Sets/src/mage/cards/p/Pangosaur.java
index 8f4c448081f..9f67288eed3 100644
--- a/Mage.Sets/src/mage/cards/p/Pangosaur.java
+++ b/Mage.Sets/src/mage/cards/p/Pangosaur.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes
*/
-public class Pangosaur extends CardImpl {
+public final class Pangosaur extends CardImpl {
public Pangosaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/Panharmonicon.java b/Mage.Sets/src/mage/cards/p/Panharmonicon.java
index 26dfcafdf5e..3acbe077edf 100644
--- a/Mage.Sets/src/mage/cards/p/Panharmonicon.java
+++ b/Mage.Sets/src/mage/cards/p/Panharmonicon.java
@@ -47,7 +47,7 @@ import mage.game.events.NumberOfTriggersEvent;
*
* @author emerald000
*/
-public class Panharmonicon extends CardImpl {
+public final class Panharmonicon extends CardImpl {
public Panharmonicon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/p/Panic.java b/Mage.Sets/src/mage/cards/p/Panic.java
index f4925661ab0..17f7a6f7599 100644
--- a/Mage.Sets/src/mage/cards/p/Panic.java
+++ b/Mage.Sets/src/mage/cards/p/Panic.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Panic extends CardImpl {
+public final class Panic extends CardImpl {
public Panic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PanicAttack.java b/Mage.Sets/src/mage/cards/p/PanicAttack.java
index 8a64140e911..699f2e7b712 100644
--- a/Mage.Sets/src/mage/cards/p/PanicAttack.java
+++ b/Mage.Sets/src/mage/cards/p/PanicAttack.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class PanicAttack extends CardImpl {
+public final class PanicAttack extends CardImpl {
public PanicAttack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PanicSpellbomb.java b/Mage.Sets/src/mage/cards/p/PanicSpellbomb.java
index abe4822db14..1ebb64ea99d 100644
--- a/Mage.Sets/src/mage/cards/p/PanicSpellbomb.java
+++ b/Mage.Sets/src/mage/cards/p/PanicSpellbomb.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class PanicSpellbomb extends CardImpl {
+public final class PanicSpellbomb extends CardImpl {
public PanicSpellbomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/p/PanopticMirror.java b/Mage.Sets/src/mage/cards/p/PanopticMirror.java
index c259a2c7bd9..e14e568bd01 100644
--- a/Mage.Sets/src/mage/cards/p/PanopticMirror.java
+++ b/Mage.Sets/src/mage/cards/p/PanopticMirror.java
@@ -28,6 +28,7 @@
package mage.cards.p;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
@@ -54,10 +55,10 @@ import mage.util.CardUtil;
*
* @author Plopman
*/
-public class PanopticMirror extends CardImpl {
+public final class PanopticMirror extends CardImpl {
public PanopticMirror(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
// Imprint - {X}, {tap}: You may exile an instant or sorcery card with converted mana cost X from your hand.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PanopticMirrorExileEffect(), new VariableManaCost());
@@ -114,7 +115,7 @@ class PanopticMirrorExileEffect extends OneShotEffect {
if (card != null) {
card.moveToExile(CardUtil.getCardExileZoneId(game, source), "Panoptic Mirror", source.getSourceId(), game);
Permanent PanopticMirror = game.getPermanent(source.getSourceId());
- if(PanopticMirror != null){
+ if (PanopticMirror != null) {
PanopticMirror.imprint(card.getId(), game);
}
return true;
@@ -149,31 +150,29 @@ class PanopticMirrorCastEffect extends OneShotEffect {
}
if (PanopticMirror != null && PanopticMirror.getImprinted() != null && !PanopticMirror.getImprinted().isEmpty() && controller != null) {
CardsImpl cards = new CardsImpl();
- for(UUID uuid : PanopticMirror.getImprinted()){
+ for (UUID uuid : PanopticMirror.getImprinted()) {
Card card = game.getCard(uuid);
- if(card != null){
- if(card.isSplitCard()){
- cards.add(((SplitCard)card).getLeftHalfCard());
- cards.add(((SplitCard)card).getRightHalfCard());
- }
- else{
+ if (card != null) {
+ if (card.isSplitCard()) {
+ cards.add(((SplitCard) card).getLeftHalfCard());
+ cards.add(((SplitCard) card).getRightHalfCard());
+ } else {
cards.add(card);
}
}
}
Card cardToCopy;
- if(cards.size() == 1){
+ if (cards.size() == 1) {
cardToCopy = cards.getCards(game).iterator().next();
- }
- else{
+ } else {
TargetCard target = new TargetCard(1, Zone.EXILED, new FilterCard("card to copy"));
controller.choose(Outcome.Copy, cards, target, game);
cardToCopy = cards.get(target.getFirstTarget(), game);
}
- if(cardToCopy != null){
+ if (cardToCopy != null) {
Card copy = game.copyCard(cardToCopy, source, source.getControllerId());
if (controller.chooseUse(outcome, "Cast the copied card without paying mana cost?", source, game)) {
- return controller.cast(copy.getSpellAbility(), game, true);
+ return controller.cast(copy.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/p/PantherWarriors.java b/Mage.Sets/src/mage/cards/p/PantherWarriors.java
index 8038e3e126b..a87153b0546 100644
--- a/Mage.Sets/src/mage/cards/p/PantherWarriors.java
+++ b/Mage.Sets/src/mage/cards/p/PantherWarriors.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PantherWarriors extends CardImpl {
+public final class PantherWarriors extends CardImpl {
public PantherWarriors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PaperTiger.java b/Mage.Sets/src/mage/cards/p/PaperTiger.java
index 000fd9a900e..f46819707cf 100644
--- a/Mage.Sets/src/mage/cards/p/PaperTiger.java
+++ b/Mage.Sets/src/mage/cards/p/PaperTiger.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author spjspj
*/
-public class PaperTiger extends CardImpl {
+public final class PaperTiger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures named Rock Lobster");
diff --git a/Mage.Sets/src/mage/cards/p/PaperfinRascal.java b/Mage.Sets/src/mage/cards/p/PaperfinRascal.java
index 0dec7c1dadf..17f0aab463b 100644
--- a/Mage.Sets/src/mage/cards/p/PaperfinRascal.java
+++ b/Mage.Sets/src/mage/cards/p/PaperfinRascal.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class PaperfinRascal extends CardImpl {
+public final class PaperfinRascal extends CardImpl {
public PaperfinRascal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ParadigmShift.java b/Mage.Sets/src/mage/cards/p/ParadigmShift.java
index c1fedd9d634..927b9ee8e2e 100644
--- a/Mage.Sets/src/mage/cards/p/ParadigmShift.java
+++ b/Mage.Sets/src/mage/cards/p/ParadigmShift.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class ParadigmShift extends CardImpl {
+public final class ParadigmShift extends CardImpl {
public ParadigmShift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ParadiseMantle.java b/Mage.Sets/src/mage/cards/p/ParadiseMantle.java
index c69cefed324..c79cfcd0121 100644
--- a/Mage.Sets/src/mage/cards/p/ParadiseMantle.java
+++ b/Mage.Sets/src/mage/cards/p/ParadiseMantle.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ParadiseMantle extends CardImpl {
+public final class ParadiseMantle extends CardImpl {
public ParadiseMantle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/p/ParadisePlume.java b/Mage.Sets/src/mage/cards/p/ParadisePlume.java
index 6aba1aaa379..d0646ddbb77 100644
--- a/Mage.Sets/src/mage/cards/p/ParadisePlume.java
+++ b/Mage.Sets/src/mage/cards/p/ParadisePlume.java
@@ -51,7 +51,7 @@ import mage.game.stack.Spell;
*
* @author jeffwadsworth
*/
-public class ParadisePlume extends CardImpl {
+public final class ParadisePlume extends CardImpl {
public ParadisePlume(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/p/ParadoxEngine.java b/Mage.Sets/src/mage/cards/p/ParadoxEngine.java
index 45cc18a2185..7055caf7eae 100644
--- a/Mage.Sets/src/mage/cards/p/ParadoxEngine.java
+++ b/Mage.Sets/src/mage/cards/p/ParadoxEngine.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterNonlandPermanent;
*
* @author fireshoes
*/
-public class ParadoxEngine extends CardImpl {
+public final class ParadoxEngine extends CardImpl {
public ParadoxEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/p/ParadoxHaze.java b/Mage.Sets/src/mage/cards/p/ParadoxHaze.java
index e54902f0d6c..d2d87d1db20 100644
--- a/Mage.Sets/src/mage/cards/p/ParadoxHaze.java
+++ b/Mage.Sets/src/mage/cards/p/ParadoxHaze.java
@@ -54,7 +54,7 @@ import mage.watchers.common.FirstTimeStepWatcher;
*
* @author emerald000
*/
-public class ParadoxHaze extends CardImpl {
+public final class ParadoxHaze extends CardImpl {
public ParadoxHaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ParadoxicalOutcome.java b/Mage.Sets/src/mage/cards/p/ParadoxicalOutcome.java
index 525a451ac4d..cc1c7b78e8c 100644
--- a/Mage.Sets/src/mage/cards/p/ParadoxicalOutcome.java
+++ b/Mage.Sets/src/mage/cards/p/ParadoxicalOutcome.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author spjspj
*/
-public class ParadoxicalOutcome extends CardImpl {
+public final class ParadoxicalOutcome extends CardImpl {
private static FilterControlledPermanent filter = new FilterControlledPermanent(new StringBuilder("any number of of target nonland, nontoken permanents you control").toString());
diff --git a/Mage.Sets/src/mage/cards/p/ParagonOfEternalWilds.java b/Mage.Sets/src/mage/cards/p/ParagonOfEternalWilds.java
index b4b125be739..65cbad6e0ec 100644
--- a/Mage.Sets/src/mage/cards/p/ParagonOfEternalWilds.java
+++ b/Mage.Sets/src/mage/cards/p/ParagonOfEternalWilds.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ParagonOfEternalWilds extends CardImpl {
+public final class ParagonOfEternalWilds extends CardImpl {
private static final FilterCreaturePermanent filterGreen = new FilterCreaturePermanent("green creatures you control");
private static final FilterControlledCreaturePermanent filterGreen2 = new FilterControlledCreaturePermanent("another target green creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/ParagonOfFierceDefiance.java b/Mage.Sets/src/mage/cards/p/ParagonOfFierceDefiance.java
index d676170c0ea..0520e62036a 100644
--- a/Mage.Sets/src/mage/cards/p/ParagonOfFierceDefiance.java
+++ b/Mage.Sets/src/mage/cards/p/ParagonOfFierceDefiance.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Quercitron
*/
-public class ParagonOfFierceDefiance extends CardImpl {
+public final class ParagonOfFierceDefiance extends CardImpl {
private static final FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("red creatures");
private static final FilterControlledCreaturePermanent filterCreature = new FilterControlledCreaturePermanent("another target red creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/ParagonOfGatheringMists.java b/Mage.Sets/src/mage/cards/p/ParagonOfGatheringMists.java
index a59e81f3a50..7ae4a7e3f29 100644
--- a/Mage.Sets/src/mage/cards/p/ParagonOfGatheringMists.java
+++ b/Mage.Sets/src/mage/cards/p/ParagonOfGatheringMists.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ParagonOfGatheringMists extends CardImpl {
+public final class ParagonOfGatheringMists extends CardImpl {
private static final FilterCreaturePermanent filterBlue = new FilterCreaturePermanent("blue creatures you control");
private static final FilterControlledCreaturePermanent filterBlue2 = new FilterControlledCreaturePermanent("another target blue creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java b/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java
index 99d86f412a5..e96995488b6 100644
--- a/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java
+++ b/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ParagonOfNewDawns extends CardImpl {
+public final class ParagonOfNewDawns extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Another white creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/ParagonOfOpenGraves.java b/Mage.Sets/src/mage/cards/p/ParagonOfOpenGraves.java
index 4071d900908..2abc7e12149 100644
--- a/Mage.Sets/src/mage/cards/p/ParagonOfOpenGraves.java
+++ b/Mage.Sets/src/mage/cards/p/ParagonOfOpenGraves.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ParagonOfOpenGraves extends CardImpl {
+public final class ParagonOfOpenGraves extends CardImpl {
private static final FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("black creatures");
private static final FilterControlledCreaturePermanent filterCreature = new FilterControlledCreaturePermanent("another target black creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/ParagonOfTheAmesha.java b/Mage.Sets/src/mage/cards/p/ParagonOfTheAmesha.java
index 15269287f1f..69974e80102 100644
--- a/Mage.Sets/src/mage/cards/p/ParagonOfTheAmesha.java
+++ b/Mage.Sets/src/mage/cards/p/ParagonOfTheAmesha.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class ParagonOfTheAmesha extends CardImpl {
+public final class ParagonOfTheAmesha extends CardImpl {
public ParagonOfTheAmesha(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/ParallaxDementia.java b/Mage.Sets/src/mage/cards/p/ParallaxDementia.java
index ce9d48eabe3..d48f49fb975 100644
--- a/Mage.Sets/src/mage/cards/p/ParallaxDementia.java
+++ b/Mage.Sets/src/mage/cards/p/ParallaxDementia.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ParallaxDementia extends CardImpl {
+public final class ParallaxDementia extends CardImpl {
public ParallaxDementia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/ParallaxInhibitor.java b/Mage.Sets/src/mage/cards/p/ParallaxInhibitor.java
index ac8ff3b17dc..4370afa849d 100644
--- a/Mage.Sets/src/mage/cards/p/ParallaxInhibitor.java
+++ b/Mage.Sets/src/mage/cards/p/ParallaxInhibitor.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LoneFox
*/
-public class ParallaxInhibitor extends CardImpl {
+public final class ParallaxInhibitor extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("permanent with fading you control");
diff --git a/Mage.Sets/src/mage/cards/p/ParallaxNexus.java b/Mage.Sets/src/mage/cards/p/ParallaxNexus.java
index 39f4dc1f0c0..fe1929add50 100644
--- a/Mage.Sets/src/mage/cards/p/ParallaxNexus.java
+++ b/Mage.Sets/src/mage/cards/p/ParallaxNexus.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author spjspj
*/
-public class ParallaxNexus extends CardImpl {
+public final class ParallaxNexus extends CardImpl {
private UUID exileId = UUID.randomUUID();
diff --git a/Mage.Sets/src/mage/cards/p/ParallaxTide.java b/Mage.Sets/src/mage/cards/p/ParallaxTide.java
index 907cc11a30c..6fc1097bce6 100644
--- a/Mage.Sets/src/mage/cards/p/ParallaxTide.java
+++ b/Mage.Sets/src/mage/cards/p/ParallaxTide.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class ParallaxTide extends CardImpl {
+public final class ParallaxTide extends CardImpl {
public ParallaxTide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ParallaxWave.java b/Mage.Sets/src/mage/cards/p/ParallaxWave.java
index 95ce71d37d7..925033fac84 100644
--- a/Mage.Sets/src/mage/cards/p/ParallaxWave.java
+++ b/Mage.Sets/src/mage/cards/p/ParallaxWave.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class ParallaxWave extends CardImpl {
+public final class ParallaxWave extends CardImpl {
public ParallaxWave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/ParallectricFeedback.java b/Mage.Sets/src/mage/cards/p/ParallectricFeedback.java
index be6e074110e..ea94d0bca62 100644
--- a/Mage.Sets/src/mage/cards/p/ParallectricFeedback.java
+++ b/Mage.Sets/src/mage/cards/p/ParallectricFeedback.java
@@ -43,7 +43,7 @@ import mage.target.TargetSpell;
*
* @author Styxo
*/
-public class ParallectricFeedback extends CardImpl {
+public final class ParallectricFeedback extends CardImpl {
public ParallectricFeedback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/ParallelEvolution.java b/Mage.Sets/src/mage/cards/p/ParallelEvolution.java
index ae1fba42472..09475837229 100644
--- a/Mage.Sets/src/mage/cards/p/ParallelEvolution.java
+++ b/Mage.Sets/src/mage/cards/p/ParallelEvolution.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fenhl
*/
-public class ParallelEvolution extends CardImpl {
+public final class ParallelEvolution extends CardImpl {
public ParallelEvolution(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/ParallelLives.java b/Mage.Sets/src/mage/cards/p/ParallelLives.java
index 40108f74544..5ea1aef3b10 100644
--- a/Mage.Sets/src/mage/cards/p/ParallelLives.java
+++ b/Mage.Sets/src/mage/cards/p/ParallelLives.java
@@ -39,7 +39,7 @@ import mage.constants.Zone;
*
* @author BetaSteward
*/
-public class ParallelLives extends CardImpl {
+public final class ParallelLives extends CardImpl {
public ParallelLives(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/ParallelThoughts.java b/Mage.Sets/src/mage/cards/p/ParallelThoughts.java
index 8a803ed86ff..91f82615a8d 100644
--- a/Mage.Sets/src/mage/cards/p/ParallelThoughts.java
+++ b/Mage.Sets/src/mage/cards/p/ParallelThoughts.java
@@ -1,181 +1,181 @@
-/*
- * 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.p;
-
-import java.util.Arrays;
-import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.ReplacementEffectImpl;
-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.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;
-import mage.util.RandomUtil;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class ParallelThoughts extends CardImpl {
-
- public ParallelThoughts(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
-
- // When Parallel Thoughts enters the battlefield, search your library for seven cards, exile them in a face-down pile, and shuffle that pile. Then shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new ParallelThoughtsSearchEffect()));
-
- // If you would draw a card, you may instead put the top card of the pile you exiled into your hand.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ParallelThoughtsReplacementEffect()));
-
- }
-
- public ParallelThoughts(final ParallelThoughts card) {
- super(card);
- }
-
- @Override
- public ParallelThoughts copy() {
- return new ParallelThoughts(this);
- }
-}
-
-class ParallelThoughtsSearchEffect extends OneShotEffect {
-
- ParallelThoughtsSearchEffect() {
- super(Outcome.Neutral);
- this.staticText = "search your library for seven cards, exile them in a face-down pile, and shuffle that pile. Then shuffle your library";
- }
-
- ParallelThoughtsSearchEffect(final ParallelThoughtsSearchEffect effect) {
- super(effect);
- }
-
- @Override
- public ParallelThoughtsSearchEffect copy() {
- return new ParallelThoughtsSearchEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player controller = game.getPlayer(source.getControllerId());
- Permanent permanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
- Cards cardsInExilePile = new CardsImpl();
- if (controller != null
- && permanent != null) {
- TargetCardInLibrary target = new TargetCardInLibrary(7, new FilterCard());
- if (controller.searchLibrary(target, game)) {
- for (UUID targetId : target.getTargets()) {
- Card card = controller.getLibrary().getCard(targetId, game);
- if (card != null) {
- cardsInExilePile.add(card);
- }
- }
- // shuffle that exiled pile
-
- UUID[] shuffled = cardsInExilePile.toArray(new UUID[0]);
- for (int n = shuffled.length - 1; n > 0; n--) {
- int r = RandomUtil.nextInt(n + 1);
- UUID temp = shuffled[n];
- shuffled[n] = shuffled[r];
- shuffled[r] = temp;
- }
- cardsInExilePile.clear();
- cardsInExilePile.addAll(Arrays.asList(shuffled));
-
- // move to exile zone and turn face down
-
- for (Card card : cardsInExilePile.getCards(game)) {
- controller.moveCardsToExile(card, source, game, false, CardUtil.getCardExileZoneId(game, source), permanent.getLogName());
- card.setFaceDown(true, game);
- }
-
- // shuffle controller library
-
- controller.shuffleLibrary(source, game);
- }
- return true;
- }
- return false;
- }
-}
-
-class ParallelThoughtsReplacementEffect extends ReplacementEffectImpl {
-
- ParallelThoughtsReplacementEffect() {
- super(Duration.WhileOnBattlefield, Outcome.DrawCard);
- staticText = "If you would draw a card, you may instead put the top card of the pile you exiled with Parallel Thoughts into your hand";
- }
-
- ParallelThoughtsReplacementEffect(final ParallelThoughtsReplacementEffect effect) {
- super(effect);
- }
-
- @Override
- public ParallelThoughtsReplacementEffect copy() {
- return new ParallelThoughtsReplacementEffect(this);
- }
-
- @Override
- public boolean replaceEvent(GameEvent event, Ability source, Game game) {
- Player controller = game.getPlayer(source.getControllerId());
- if (controller != null
- && !game.getExile().getExileZone(CardUtil.getCardExileZoneId(game, source)).getCards(game).isEmpty()) {
- Card card = game.getExile().getExileZone(CardUtil.getCardExileZoneId(game, source)).getCards(game).iterator().next();
- 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());
- }
-}
+/*
+ * 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.p;
+
+import java.util.Arrays;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.ReplacementEffectImpl;
+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.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;
+import mage.util.RandomUtil;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class ParallelThoughts extends CardImpl {
+
+ public ParallelThoughts(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
+
+ // When Parallel Thoughts enters the battlefield, search your library for seven cards, exile them in a face-down pile, and shuffle that pile. Then shuffle your library.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new ParallelThoughtsSearchEffect()));
+
+ // If you would draw a card, you may instead put the top card of the pile you exiled into your hand.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ParallelThoughtsReplacementEffect()));
+
+ }
+
+ public ParallelThoughts(final ParallelThoughts card) {
+ super(card);
+ }
+
+ @Override
+ public ParallelThoughts copy() {
+ return new ParallelThoughts(this);
+ }
+}
+
+class ParallelThoughtsSearchEffect extends OneShotEffect {
+
+ ParallelThoughtsSearchEffect() {
+ super(Outcome.Neutral);
+ this.staticText = "search your library for seven cards, exile them in a face-down pile, and shuffle that pile. Then shuffle your library";
+ }
+
+ ParallelThoughtsSearchEffect(final ParallelThoughtsSearchEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ParallelThoughtsSearchEffect copy() {
+ return new ParallelThoughtsSearchEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ Permanent permanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
+ Cards cardsInExilePile = new CardsImpl();
+ if (controller != null
+ && permanent != null) {
+ TargetCardInLibrary target = new TargetCardInLibrary(7, new FilterCard());
+ if (controller.searchLibrary(target, game)) {
+ for (UUID targetId : target.getTargets()) {
+ Card card = controller.getLibrary().getCard(targetId, game);
+ if (card != null) {
+ cardsInExilePile.add(card);
+ }
+ }
+ // shuffle that exiled pile
+
+ UUID[] shuffled = cardsInExilePile.toArray(new UUID[0]);
+ for (int n = shuffled.length - 1; n > 0; n--) {
+ int r = RandomUtil.nextInt(n + 1);
+ UUID temp = shuffled[n];
+ shuffled[n] = shuffled[r];
+ shuffled[r] = temp;
+ }
+ cardsInExilePile.clear();
+ cardsInExilePile.addAll(Arrays.asList(shuffled));
+
+ // move to exile zone and turn face down
+
+ for (Card card : cardsInExilePile.getCards(game)) {
+ controller.moveCardsToExile(card, source, game, false, CardUtil.getCardExileZoneId(game, source), permanent.getLogName());
+ card.setFaceDown(true, game);
+ }
+
+ // shuffle controller library
+
+ controller.shuffleLibrary(source, game);
+ }
+ return true;
+ }
+ return false;
+ }
+}
+
+class ParallelThoughtsReplacementEffect extends ReplacementEffectImpl {
+
+ ParallelThoughtsReplacementEffect() {
+ super(Duration.WhileOnBattlefield, Outcome.DrawCard);
+ staticText = "If you would draw a card, you may instead put the top card of the pile you exiled with Parallel Thoughts into your hand";
+ }
+
+ ParallelThoughtsReplacementEffect(final ParallelThoughtsReplacementEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ParallelThoughtsReplacementEffect copy() {
+ return new ParallelThoughtsReplacementEffect(this);
+ }
+
+ @Override
+ public boolean replaceEvent(GameEvent event, Ability source, Game game) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null
+ && !game.getExile().getExileZone(CardUtil.getCardExileZoneId(game, source)).getCards(game).isEmpty()) {
+ Card card = game.getExile().getExileZone(CardUtil.getCardExileZoneId(game, source)).getCards(game).iterator().next();
+ 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());
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/Paralyze.java b/Mage.Sets/src/mage/cards/p/Paralyze.java
index 19f3a57a751..20198ddeb8f 100644
--- a/Mage.Sets/src/mage/cards/p/Paralyze.java
+++ b/Mage.Sets/src/mage/cards/p/Paralyze.java
@@ -49,13 +49,12 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author dustinconrad
*/
-public class Paralyze extends CardImpl {
+public final class Paralyze extends CardImpl {
public Paralyze(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
this.subtype.add(SubType.AURA);
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
@@ -96,14 +95,18 @@ class ParalyzeEffect extends DoIfCostPaid {
@Override
protected Player getPayingPlayer(Game game, Ability source) {
- Permanent attachment = game.getPermanent(source.getSourceId());
- Permanent attachedTo = game.getPermanent(attachment.getAttachedTo());
- return game.getPlayer(attachedTo.getControllerId());
+ Permanent attachment = game.getPermanentOrLKIBattlefield(source.getSourceId());
+ if (attachment != null && attachment.getAttachedTo() != null) {
+ Permanent attachedTo = game.getPermanent(attachment.getAttachedTo());
+ if (attachedTo != null) {
+ return game.getPlayer(attachedTo.getControllerId());
+ }
+ }
+ return null;
}
@Override
public String getText(Mode mode) {
- return new StringBuilder("that player may ").append(getCostText())
- .append(". If he or she does, ").append(executingEffects.getText(mode)).toString();
+ return "that player may " + getCostText() + ". If he or she does, " + executingEffects.getText(mode);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/p/ParalyzingGrasp.java b/Mage.Sets/src/mage/cards/p/ParalyzingGrasp.java
index e6b89e3e48c..389c64c33f4 100644
--- a/Mage.Sets/src/mage/cards/p/ParalyzingGrasp.java
+++ b/Mage.Sets/src/mage/cards/p/ParalyzingGrasp.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ParalyzingGrasp extends CardImpl {
+public final class ParalyzingGrasp extends CardImpl {
public ParalyzingGrasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ParanoidDelusions.java b/Mage.Sets/src/mage/cards/p/ParanoidDelusions.java
index f965517241a..705b54a11ea 100644
--- a/Mage.Sets/src/mage/cards/p/ParanoidDelusions.java
+++ b/Mage.Sets/src/mage/cards/p/ParanoidDelusions.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class ParanoidDelusions extends CardImpl {
+public final class ParanoidDelusions extends CardImpl {
public ParanoidDelusions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/ParanoidParishBlade.java b/Mage.Sets/src/mage/cards/p/ParanoidParishBlade.java
index 70cb0858711..2f723c7dffb 100644
--- a/Mage.Sets/src/mage/cards/p/ParanoidParishBlade.java
+++ b/Mage.Sets/src/mage/cards/p/ParanoidParishBlade.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ParanoidParishBlade extends CardImpl {
+public final class ParanoidParishBlade extends CardImpl {
public ParanoidParishBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/Parapet.java b/Mage.Sets/src/mage/cards/p/Parapet.java
index f0dbba1421a..b3a71fe1569 100644
--- a/Mage.Sets/src/mage/cards/p/Parapet.java
+++ b/Mage.Sets/src/mage/cards/p/Parapet.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class Parapet extends CardImpl {
+public final class Parapet extends CardImpl {
public Parapet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/ParapetWatchers.java b/Mage.Sets/src/mage/cards/p/ParapetWatchers.java
index d9b614b2f7a..22864d9e22b 100644
--- a/Mage.Sets/src/mage/cards/p/ParapetWatchers.java
+++ b/Mage.Sets/src/mage/cards/p/ParapetWatchers.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class ParapetWatchers extends CardImpl {
+public final class ParapetWatchers extends CardImpl {
public ParapetWatchers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Paraselene.java b/Mage.Sets/src/mage/cards/p/Paraselene.java
index e749bd86865..d057bda6f04 100644
--- a/Mage.Sets/src/mage/cards/p/Paraselene.java
+++ b/Mage.Sets/src/mage/cards/p/Paraselene.java
@@ -43,7 +43,7 @@ import java.util.UUID;
/**
* @author nantuko
*/
-public class Paraselene extends CardImpl {
+public final class Paraselene extends CardImpl {
public Paraselene(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/ParasiticBond.java b/Mage.Sets/src/mage/cards/p/ParasiticBond.java
index ced632e5b4f..53b6c15122a 100644
--- a/Mage.Sets/src/mage/cards/p/ParasiticBond.java
+++ b/Mage.Sets/src/mage/cards/p/ParasiticBond.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ParasiticBond extends CardImpl {
+public final class ParasiticBond extends CardImpl {
public ParasiticBond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/ParasiticImplant.java b/Mage.Sets/src/mage/cards/p/ParasiticImplant.java
index 265373bee3b..e8f5667fc8f 100644
--- a/Mage.Sets/src/mage/cards/p/ParasiticImplant.java
+++ b/Mage.Sets/src/mage/cards/p/ParasiticImplant.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ParasiticImplant extends CardImpl {
+public final class ParasiticImplant extends CardImpl {
public ParasiticImplant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/ParasiticStrix.java b/Mage.Sets/src/mage/cards/p/ParasiticStrix.java
index 8f7fa96f1e9..c8a4b313980 100644
--- a/Mage.Sets/src/mage/cards/p/ParasiticStrix.java
+++ b/Mage.Sets/src/mage/cards/p/ParasiticStrix.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
/**
* @author mluds
*/
-public class ParasiticStrix extends CardImpl {
+public final class ParasiticStrix extends CardImpl {
public ParasiticStrix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Parch.java b/Mage.Sets/src/mage/cards/p/Parch.java
index f965ee2504d..7492425ecba 100644
--- a/Mage.Sets/src/mage/cards/p/Parch.java
+++ b/Mage.Sets/src/mage/cards/p/Parch.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Parch extends CardImpl {
+public final class Parch extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creature");
diff --git a/Mage.Sets/src/mage/cards/p/PardicArsonist.java b/Mage.Sets/src/mage/cards/p/PardicArsonist.java
index 392fb2fb425..b7d0f9bf0be 100644
--- a/Mage.Sets/src/mage/cards/p/PardicArsonist.java
+++ b/Mage.Sets/src/mage/cards/p/PardicArsonist.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class PardicArsonist extends CardImpl {
+public final class PardicArsonist extends CardImpl {
public PardicArsonist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PardicCollaborator.java b/Mage.Sets/src/mage/cards/p/PardicCollaborator.java
index aa9eda38335..5ec4bececf9 100644
--- a/Mage.Sets/src/mage/cards/p/PardicCollaborator.java
+++ b/Mage.Sets/src/mage/cards/p/PardicCollaborator.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class PardicCollaborator extends CardImpl {
+public final class PardicCollaborator extends CardImpl {
public PardicCollaborator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PardicDragon.java b/Mage.Sets/src/mage/cards/p/PardicDragon.java
index e60483e1fe2..46b68997533 100644
--- a/Mage.Sets/src/mage/cards/p/PardicDragon.java
+++ b/Mage.Sets/src/mage/cards/p/PardicDragon.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class PardicDragon extends CardImpl {
+public final class PardicDragon extends CardImpl {
public PardicDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PardicFirecat.java b/Mage.Sets/src/mage/cards/p/PardicFirecat.java
index bda76400a94..ae39a272b39 100644
--- a/Mage.Sets/src/mage/cards/p/PardicFirecat.java
+++ b/Mage.Sets/src/mage/cards/p/PardicFirecat.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class PardicFirecat extends CardImpl {
+public final class PardicFirecat extends CardImpl {
public PardicFirecat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PardicLancer.java b/Mage.Sets/src/mage/cards/p/PardicLancer.java
index 4926fd238f6..38a469f26d2 100644
--- a/Mage.Sets/src/mage/cards/p/PardicLancer.java
+++ b/Mage.Sets/src/mage/cards/p/PardicLancer.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author tomd1990
*/
-public class PardicLancer extends CardImpl {
+public final class PardicLancer extends CardImpl {
public PardicLancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PardicMiner.java b/Mage.Sets/src/mage/cards/p/PardicMiner.java
index 1b8d12ece32..d0e65787b7e 100644
--- a/Mage.Sets/src/mage/cards/p/PardicMiner.java
+++ b/Mage.Sets/src/mage/cards/p/PardicMiner.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author cbt33
*/
-public class PardicMiner extends CardImpl {
+public final class PardicMiner extends CardImpl {
public PardicMiner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PardicSwordsmith.java b/Mage.Sets/src/mage/cards/p/PardicSwordsmith.java
index 0eb9d51f178..985ee06f7cf 100644
--- a/Mage.Sets/src/mage/cards/p/PardicSwordsmith.java
+++ b/Mage.Sets/src/mage/cards/p/PardicSwordsmith.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class PardicSwordsmith extends CardImpl {
+public final class PardicSwordsmith extends CardImpl {
public PardicSwordsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PardicWanderer.java b/Mage.Sets/src/mage/cards/p/PardicWanderer.java
index 2aeb76fc954..dd193141d83 100644
--- a/Mage.Sets/src/mage/cards/p/PardicWanderer.java
+++ b/Mage.Sets/src/mage/cards/p/PardicWanderer.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class PardicWanderer extends CardImpl {
+public final class PardicWanderer extends CardImpl {
public PardicWanderer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/p/Pariah.java b/Mage.Sets/src/mage/cards/p/Pariah.java
index 4188939bee8..5f89802cf6c 100644
--- a/Mage.Sets/src/mage/cards/p/Pariah.java
+++ b/Mage.Sets/src/mage/cards/p/Pariah.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class Pariah extends CardImpl {
+public final class Pariah extends CardImpl {
public Pariah(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PariahsShield.java b/Mage.Sets/src/mage/cards/p/PariahsShield.java
index b51baacbc2d..5bd3a9d0785 100644
--- a/Mage.Sets/src/mage/cards/p/PariahsShield.java
+++ b/Mage.Sets/src/mage/cards/p/PariahsShield.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class PariahsShield extends CardImpl {
+public final class PariahsShield extends CardImpl {
public PariahsShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/p/PartTheVeil.java b/Mage.Sets/src/mage/cards/p/PartTheVeil.java
index 4fbb462bc69..d7cfd7b9783 100644
--- a/Mage.Sets/src/mage/cards/p/PartTheVeil.java
+++ b/Mage.Sets/src/mage/cards/p/PartTheVeil.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
/**
* @author Loki
*/
-public class PartTheVeil extends CardImpl {
+public final class PartTheVeil extends CardImpl {
public PartTheVeil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PartTheWaterveil.java b/Mage.Sets/src/mage/cards/p/PartTheWaterveil.java
index 5971d43ea87..93f49f44eba 100644
--- a/Mage.Sets/src/mage/cards/p/PartTheWaterveil.java
+++ b/Mage.Sets/src/mage/cards/p/PartTheWaterveil.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class PartTheWaterveil extends CardImpl {
+public final class PartTheWaterveil extends CardImpl {
public PartTheWaterveil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PartWater.java b/Mage.Sets/src/mage/cards/p/PartWater.java
index 07e1acc9314..86c2b824e24 100644
--- a/Mage.Sets/src/mage/cards/p/PartWater.java
+++ b/Mage.Sets/src/mage/cards/p/PartWater.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class PartWater extends CardImpl {
+public final class PartWater extends CardImpl {
public PartWater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PartingThoughts.java b/Mage.Sets/src/mage/cards/p/PartingThoughts.java
index 8505c267230..d97461b8b0f 100644
--- a/Mage.Sets/src/mage/cards/p/PartingThoughts.java
+++ b/Mage.Sets/src/mage/cards/p/PartingThoughts.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PartingThoughts extends CardImpl {
+public final class PartingThoughts extends CardImpl {
public PartingThoughts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PastInFlames.java b/Mage.Sets/src/mage/cards/p/PastInFlames.java
index 0ee62a1db92..d54db63b32d 100644
--- a/Mage.Sets/src/mage/cards/p/PastInFlames.java
+++ b/Mage.Sets/src/mage/cards/p/PastInFlames.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class PastInFlames extends CardImpl {
+public final class PastInFlames extends CardImpl {
public PastInFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PatagiaGolem.java b/Mage.Sets/src/mage/cards/p/PatagiaGolem.java
index 88ecaf52c51..c2b39df3412 100644
--- a/Mage.Sets/src/mage/cards/p/PatagiaGolem.java
+++ b/Mage.Sets/src/mage/cards/p/PatagiaGolem.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class PatagiaGolem extends CardImpl {
+public final class PatagiaGolem extends CardImpl {
public PatagiaGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/p/PatagiaViper.java b/Mage.Sets/src/mage/cards/p/PatagiaViper.java
index bef41e88c75..850d3ebe050 100644
--- a/Mage.Sets/src/mage/cards/p/PatagiaViper.java
+++ b/Mage.Sets/src/mage/cards/p/PatagiaViper.java
@@ -46,7 +46,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author emerald000
*/
-public class PatagiaViper extends CardImpl {
+public final class PatagiaViper extends CardImpl {
public PatagiaViper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PatchworkGnomes.java b/Mage.Sets/src/mage/cards/p/PatchworkGnomes.java
index d49390c66c7..42deeb64ac5 100644
--- a/Mage.Sets/src/mage/cards/p/PatchworkGnomes.java
+++ b/Mage.Sets/src/mage/cards/p/PatchworkGnomes.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Loki
*/
-public class PatchworkGnomes extends CardImpl {
+public final class PatchworkGnomes extends CardImpl {
public PatchworkGnomes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PathOfAncestry.java b/Mage.Sets/src/mage/cards/p/PathOfAncestry.java
index b6f5ebfa08f..fa7ad86fcef 100644
--- a/Mage.Sets/src/mage/cards/p/PathOfAncestry.java
+++ b/Mage.Sets/src/mage/cards/p/PathOfAncestry.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class PathOfAncestry extends CardImpl {
+public final class PathOfAncestry extends CardImpl {
public PathOfAncestry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/p/PathOfAngersFlame.java b/Mage.Sets/src/mage/cards/p/PathOfAngersFlame.java
index c28e976813b..f2f053b93f5 100644
--- a/Mage.Sets/src/mage/cards/p/PathOfAngersFlame.java
+++ b/Mage.Sets/src/mage/cards/p/PathOfAngersFlame.java
@@ -40,7 +40,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class PathOfAngersFlame extends CardImpl {
+public final class PathOfAngersFlame extends CardImpl {
public PathOfAngersFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PathOfBravery.java b/Mage.Sets/src/mage/cards/p/PathOfBravery.java
index 360a51315be..050e14297f1 100644
--- a/Mage.Sets/src/mage/cards/p/PathOfBravery.java
+++ b/Mage.Sets/src/mage/cards/p/PathOfBravery.java
@@ -50,7 +50,7 @@ import mage.players.Player;
/**
* @author jeffwadsworth
*/
-public class PathOfBravery extends CardImpl {
+public final class PathOfBravery extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/p/PathOfDiscovery.java b/Mage.Sets/src/mage/cards/p/PathOfDiscovery.java
index 63667dee7c8..72c37661f49 100644
--- a/Mage.Sets/src/mage/cards/p/PathOfDiscovery.java
+++ b/Mage.Sets/src/mage/cards/p/PathOfDiscovery.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class PathOfDiscovery extends CardImpl {
+public final class PathOfDiscovery extends CardImpl {
public PathOfDiscovery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PathOfMettle.java b/Mage.Sets/src/mage/cards/p/PathOfMettle.java
index 93bd1198ed2..e4e189705dd 100644
--- a/Mage.Sets/src/mage/cards/p/PathOfMettle.java
+++ b/Mage.Sets/src/mage/cards/p/PathOfMettle.java
@@ -53,7 +53,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class PathOfMettle extends CardImpl {
+public final class PathOfMettle extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that doesn't have first strike, double strike, vigilance, or haste");
diff --git a/Mage.Sets/src/mage/cards/p/PathOfPeace.java b/Mage.Sets/src/mage/cards/p/PathOfPeace.java
index 454a40f08e1..cbdba51b7ba 100644
--- a/Mage.Sets/src/mage/cards/p/PathOfPeace.java
+++ b/Mage.Sets/src/mage/cards/p/PathOfPeace.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Scott-Crawford
*/
-public class PathOfPeace extends CardImpl {
+public final class PathOfPeace extends CardImpl {
public PathOfPeace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PathToExile.java b/Mage.Sets/src/mage/cards/p/PathToExile.java
index 72969a02170..a377259a7ae 100644
--- a/Mage.Sets/src/mage/cards/p/PathToExile.java
+++ b/Mage.Sets/src/mage/cards/p/PathToExile.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PathToExile extends CardImpl {
+public final class PathToExile extends CardImpl {
public PathToExile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
@@ -94,7 +94,7 @@ class PathToExileEffect extends OneShotEffect {
// if the zone change to exile gets replaced does not prevent the target controller to be able to search
controller.moveCardToExileWithInfo(permanent, null, "", source.getSourceId(), game, Zone.BATTLEFIELD, true);
if (player.chooseUse(Outcome.PutCardInPlay, "Search your library for a basic land card?", source, game)) {
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
if (player.searchLibrary(target, game)) {
Card card = player.getLibrary().getCard(target.getFirstTarget(), game);
if (card != null) {
diff --git a/Mage.Sets/src/mage/cards/p/PathbreakerIbex.java b/Mage.Sets/src/mage/cards/p/PathbreakerIbex.java
index 4474aeb864c..7e85a2a62d7 100644
--- a/Mage.Sets/src/mage/cards/p/PathbreakerIbex.java
+++ b/Mage.Sets/src/mage/cards/p/PathbreakerIbex.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class PathbreakerIbex extends CardImpl {
+public final class PathbreakerIbex extends CardImpl {
public PathbreakerIbex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PathbreakerWurm.java b/Mage.Sets/src/mage/cards/p/PathbreakerWurm.java
index 38e8a0d5f02..da6d1584693 100644
--- a/Mage.Sets/src/mage/cards/p/PathbreakerWurm.java
+++ b/Mage.Sets/src/mage/cards/p/PathbreakerWurm.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class PathbreakerWurm extends CardImpl {
+public final class PathbreakerWurm extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, both creatures have trample";
diff --git a/Mage.Sets/src/mage/cards/p/PathmakerInitiate.java b/Mage.Sets/src/mage/cards/p/PathmakerInitiate.java
index d9fbdfd6165..bd9a3bd1e48 100644
--- a/Mage.Sets/src/mage/cards/p/PathmakerInitiate.java
+++ b/Mage.Sets/src/mage/cards/p/PathmakerInitiate.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author stravant
*/
-public class PathmakerInitiate extends CardImpl {
+public final class PathmakerInitiate extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/p/PathrazerOfUlamog.java b/Mage.Sets/src/mage/cards/p/PathrazerOfUlamog.java
index 5c3b541a319..bc67852d2dd 100644
--- a/Mage.Sets/src/mage/cards/p/PathrazerOfUlamog.java
+++ b/Mage.Sets/src/mage/cards/p/PathrazerOfUlamog.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class PathrazerOfUlamog extends CardImpl {
+public final class PathrazerOfUlamog extends CardImpl {
public PathrazerOfUlamog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{11}");
diff --git a/Mage.Sets/src/mage/cards/p/PathwayArrows.java b/Mage.Sets/src/mage/cards/p/PathwayArrows.java
index 126b4e13515..f58027724d7 100644
--- a/Mage.Sets/src/mage/cards/p/PathwayArrows.java
+++ b/Mage.Sets/src/mage/cards/p/PathwayArrows.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PathwayArrows extends CardImpl {
+public final class PathwayArrows extends CardImpl {
public PathwayArrows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/p/PatriarchsBidding.java b/Mage.Sets/src/mage/cards/p/PatriarchsBidding.java
index a0c18a8fb3f..ab834f253c1 100644
--- a/Mage.Sets/src/mage/cards/p/PatriarchsBidding.java
+++ b/Mage.Sets/src/mage/cards/p/PatriarchsBidding.java
@@ -49,7 +49,7 @@ import mage.players.Player;
/**
* @author duncant
*/
-public class PatriarchsBidding extends CardImpl {
+public final class PatriarchsBidding extends CardImpl {
public PatriarchsBidding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PatriarchsDesire.java b/Mage.Sets/src/mage/cards/p/PatriarchsDesire.java
index 456ed5423b0..bbdb8d7e510 100644
--- a/Mage.Sets/src/mage/cards/p/PatriarchsDesire.java
+++ b/Mage.Sets/src/mage/cards/p/PatriarchsDesire.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class PatriarchsDesire extends CardImpl {
+public final class PatriarchsDesire extends CardImpl {
public PatriarchsDesire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PatriciansScorn.java b/Mage.Sets/src/mage/cards/p/PatriciansScorn.java
index 7cd76978f57..c646125ef30 100644
--- a/Mage.Sets/src/mage/cards/p/PatriciansScorn.java
+++ b/Mage.Sets/src/mage/cards/p/PatriciansScorn.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class PatriciansScorn extends CardImpl {
+public final class PatriciansScorn extends CardImpl {
public PatriciansScorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PatrolHound.java b/Mage.Sets/src/mage/cards/p/PatrolHound.java
index 9eccc002fe6..c020f21a998 100644
--- a/Mage.Sets/src/mage/cards/p/PatrolHound.java
+++ b/Mage.Sets/src/mage/cards/p/PatrolHound.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class PatrolHound extends CardImpl {
+public final class PatrolHound extends CardImpl {
public PatrolHound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PatrolSignaler.java b/Mage.Sets/src/mage/cards/p/PatrolSignaler.java
index 0f12096a12a..750b2a0f935 100644
--- a/Mage.Sets/src/mage/cards/p/PatrolSignaler.java
+++ b/Mage.Sets/src/mage/cards/p/PatrolSignaler.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.KithkinToken;
*
* @author jeffwadsworth
*/
-public class PatrolSignaler extends CardImpl {
+public final class PatrolSignaler extends CardImpl {
public PatrolSignaler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java b/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java
index 47cd1fb699e..ebe0adbcd70 100644
--- a/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java
+++ b/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
/**
* @author LevelX2
*/
-public class PatronOfTheAkki extends CardImpl {
+public final class PatronOfTheAkki extends CardImpl {
public PatronOfTheAkki(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheKitsune.java b/Mage.Sets/src/mage/cards/p/PatronOfTheKitsune.java
index 1e1fc3c03eb..25dc0532344 100644
--- a/Mage.Sets/src/mage/cards/p/PatronOfTheKitsune.java
+++ b/Mage.Sets/src/mage/cards/p/PatronOfTheKitsune.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
/**
* @author LevelX2
*/
-public class PatronOfTheKitsune extends CardImpl {
+public final class PatronOfTheKitsune extends CardImpl {
public PatronOfTheKitsune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheMoon.java b/Mage.Sets/src/mage/cards/p/PatronOfTheMoon.java
index d14d4d7ea2f..b556d5febc0 100644
--- a/Mage.Sets/src/mage/cards/p/PatronOfTheMoon.java
+++ b/Mage.Sets/src/mage/cards/p/PatronOfTheMoon.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
/**
* @author LevelX2
*/
-public class PatronOfTheMoon extends CardImpl {
+public final class PatronOfTheMoon extends CardImpl {
public PatronOfTheMoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java b/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java
index 710bad43f7c..f1dd2354a75 100644
--- a/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java
+++ b/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author LevelX2
*/
-public class PatronOfTheNezumi extends CardImpl {
+public final class PatronOfTheNezumi extends CardImpl {
public PatronOfTheNezumi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheOrochi.java b/Mage.Sets/src/mage/cards/p/PatronOfTheOrochi.java
index 67662b719f8..9266fe24d6b 100644
--- a/Mage.Sets/src/mage/cards/p/PatronOfTheOrochi.java
+++ b/Mage.Sets/src/mage/cards/p/PatronOfTheOrochi.java
@@ -51,7 +51,7 @@ import mage.players.Player;
/**
* @author LevelX2
*/
-public class PatronOfTheOrochi extends CardImpl {
+public final class PatronOfTheOrochi extends CardImpl {
public PatronOfTheOrochi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheValiant.java b/Mage.Sets/src/mage/cards/p/PatronOfTheValiant.java
index 24687df5097..5d2a43869c0 100644
--- a/Mage.Sets/src/mage/cards/p/PatronOfTheValiant.java
+++ b/Mage.Sets/src/mage/cards/p/PatronOfTheValiant.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class PatronOfTheValiant extends CardImpl {
+public final class PatronOfTheValiant extends CardImpl {
public PatronOfTheValiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java b/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java
index 44f8d62f3a5..83118984bfe 100644
--- a/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java
+++ b/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java
@@ -64,7 +64,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class PatronOfTheVein extends CardImpl {
+public final class PatronOfTheVein extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheWild.java b/Mage.Sets/src/mage/cards/p/PatronOfTheWild.java
index db8afa7648b..d6b1b278cb2 100644
--- a/Mage.Sets/src/mage/cards/p/PatronOfTheWild.java
+++ b/Mage.Sets/src/mage/cards/p/PatronOfTheWild.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PatronOfTheWild extends CardImpl {
+public final class PatronOfTheWild extends CardImpl {
public PatronOfTheWild(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PatronWizard.java b/Mage.Sets/src/mage/cards/p/PatronWizard.java
index 350cd4f414e..1ebdb7bd1d9 100644
--- a/Mage.Sets/src/mage/cards/p/PatronWizard.java
+++ b/Mage.Sets/src/mage/cards/p/PatronWizard.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class PatronWizard extends CardImpl {
+public final class PatronWizard extends CardImpl {
static final private FilterControlledPermanent filter = new FilterControlledPermanent("untapped Wizard you control");
diff --git a/Mage.Sets/src/mage/cards/p/PatternOfRebirth.java b/Mage.Sets/src/mage/cards/p/PatternOfRebirth.java
index 4610720f696..620792b0be8 100644
--- a/Mage.Sets/src/mage/cards/p/PatternOfRebirth.java
+++ b/Mage.Sets/src/mage/cards/p/PatternOfRebirth.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PatternOfRebirth extends CardImpl {
+public final class PatternOfRebirth extends CardImpl {
public PatternOfRebirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PaupersCage.java b/Mage.Sets/src/mage/cards/p/PaupersCage.java
index 36c3a2d34e2..f02db7c6ede 100644
--- a/Mage.Sets/src/mage/cards/p/PaupersCage.java
+++ b/Mage.Sets/src/mage/cards/p/PaupersCage.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class PaupersCage extends CardImpl {
+public final class PaupersCage extends CardImpl {
public PaupersCage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PavelMaliki.java b/Mage.Sets/src/mage/cards/p/PavelMaliki.java
index bd9ad72fb5e..1c7936fb156 100644
--- a/Mage.Sets/src/mage/cards/p/PavelMaliki.java
+++ b/Mage.Sets/src/mage/cards/p/PavelMaliki.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author nigelzor
*/
-public class PavelMaliki extends CardImpl {
+public final class PavelMaliki extends CardImpl {
public PavelMaliki(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java b/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java
index 61c51868c8e..792930be320 100644
--- a/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java
+++ b/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.EldraziSpawnToken;
*
* @author North
*/
-public class PawnOfUlamog extends CardImpl {
+public final class PawnOfUlamog extends CardImpl {
public PawnOfUlamog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PayNoHeed.java b/Mage.Sets/src/mage/cards/p/PayNoHeed.java
index 82d7bc194e5..27356b691ad 100644
--- a/Mage.Sets/src/mage/cards/p/PayNoHeed.java
+++ b/Mage.Sets/src/mage/cards/p/PayNoHeed.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author jeffwadsworth
*/
-public class PayNoHeed extends CardImpl {
+public final class PayNoHeed extends CardImpl {
public PayNoHeed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PeaceAndQuiet.java b/Mage.Sets/src/mage/cards/p/PeaceAndQuiet.java
index 36a1f25e240..5b1d5b5a19f 100644
--- a/Mage.Sets/src/mage/cards/p/PeaceAndQuiet.java
+++ b/Mage.Sets/src/mage/cards/p/PeaceAndQuiet.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class PeaceAndQuiet extends CardImpl {
+public final class PeaceAndQuiet extends CardImpl {
public PeaceAndQuiet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PeaceOfMind.java b/Mage.Sets/src/mage/cards/p/PeaceOfMind.java
index 06100887ca3..1036710c0c6 100644
--- a/Mage.Sets/src/mage/cards/p/PeaceOfMind.java
+++ b/Mage.Sets/src/mage/cards/p/PeaceOfMind.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class PeaceOfMind extends CardImpl {
+public final class PeaceOfMind extends CardImpl {
public PeaceOfMind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PeaceStrider.java b/Mage.Sets/src/mage/cards/p/PeaceStrider.java
index 3bb1aeda30e..d5996dca1f9 100644
--- a/Mage.Sets/src/mage/cards/p/PeaceStrider.java
+++ b/Mage.Sets/src/mage/cards/p/PeaceStrider.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PeaceStrider extends CardImpl {
+public final class PeaceStrider extends CardImpl {
public PeaceStrider (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/p/Peacekeeper.java b/Mage.Sets/src/mage/cards/p/Peacekeeper.java
index 81a2b363d9e..904322e4c2c 100644
--- a/Mage.Sets/src/mage/cards/p/Peacekeeper.java
+++ b/Mage.Sets/src/mage/cards/p/Peacekeeper.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class Peacekeeper extends CardImpl {
+public final class Peacekeeper extends CardImpl {
public Peacekeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PeacewalkerColossus.java b/Mage.Sets/src/mage/cards/p/PeacewalkerColossus.java
index 0f8ac6c009a..74e32a28592 100644
--- a/Mage.Sets/src/mage/cards/p/PeacewalkerColossus.java
+++ b/Mage.Sets/src/mage/cards/p/PeacewalkerColossus.java
@@ -50,7 +50,7 @@ import java.util.UUID;
/**
* @author JRHerlehy
*/
-public class PeacewalkerColossus extends CardImpl {
+public final class PeacewalkerColossus extends CardImpl {
private static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("another target vehicle");
diff --git a/Mage.Sets/src/mage/cards/p/PeachGardenOath.java b/Mage.Sets/src/mage/cards/p/PeachGardenOath.java
index 6b974557bce..68429d1b0a6 100644
--- a/Mage.Sets/src/mage/cards/p/PeachGardenOath.java
+++ b/Mage.Sets/src/mage/cards/p/PeachGardenOath.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author North
*/
-public class PeachGardenOath extends CardImpl {
+public final class PeachGardenOath extends CardImpl {
public PeachGardenOath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PeakEruption.java b/Mage.Sets/src/mage/cards/p/PeakEruption.java
index 009397ca22d..8fb11b81d1b 100644
--- a/Mage.Sets/src/mage/cards/p/PeakEruption.java
+++ b/Mage.Sets/src/mage/cards/p/PeakEruption.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class PeakEruption extends CardImpl {
+public final class PeakEruption extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain");
diff --git a/Mage.Sets/src/mage/cards/p/PearlDragon.java b/Mage.Sets/src/mage/cards/p/PearlDragon.java
index dfcff147cce..161708b4942 100644
--- a/Mage.Sets/src/mage/cards/p/PearlDragon.java
+++ b/Mage.Sets/src/mage/cards/p/PearlDragon.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class PearlDragon extends CardImpl {
+public final class PearlDragon extends CardImpl {
public PearlDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PearlLakeAncient.java b/Mage.Sets/src/mage/cards/p/PearlLakeAncient.java
index 01c23b21d9b..b225f67c472 100644
--- a/Mage.Sets/src/mage/cards/p/PearlLakeAncient.java
+++ b/Mage.Sets/src/mage/cards/p/PearlLakeAncient.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class PearlLakeAncient extends CardImpl {
+public final class PearlLakeAncient extends CardImpl {
public PearlLakeAncient(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PearlMedallion.java b/Mage.Sets/src/mage/cards/p/PearlMedallion.java
index 27c24f005b0..94080130fbd 100644
--- a/Mage.Sets/src/mage/cards/p/PearlMedallion.java
+++ b/Mage.Sets/src/mage/cards/p/PearlMedallion.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author noxx
*/
-public class PearlMedallion extends CardImpl {
+public final class PearlMedallion extends CardImpl {
private static final FilterCard filter = new FilterCard("White spells");
diff --git a/Mage.Sets/src/mage/cards/p/PearlShard.java b/Mage.Sets/src/mage/cards/p/PearlShard.java
index 86ba2318464..96747b396a7 100644
--- a/Mage.Sets/src/mage/cards/p/PearlShard.java
+++ b/Mage.Sets/src/mage/cards/p/PearlShard.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class PearlShard extends CardImpl {
+public final class PearlShard extends CardImpl {
public PearlShard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PearledUnicorn.java b/Mage.Sets/src/mage/cards/p/PearledUnicorn.java
index 9241c736baf..0606b81628b 100644
--- a/Mage.Sets/src/mage/cards/p/PearledUnicorn.java
+++ b/Mage.Sets/src/mage/cards/p/PearledUnicorn.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PearledUnicorn extends CardImpl {
+public final class PearledUnicorn extends CardImpl {
public PearledUnicorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PearlspearCourier.java b/Mage.Sets/src/mage/cards/p/PearlspearCourier.java
index f90d9fa7f15..121b40196a7 100644
--- a/Mage.Sets/src/mage/cards/p/PearlspearCourier.java
+++ b/Mage.Sets/src/mage/cards/p/PearlspearCourier.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PearlspearCourier extends CardImpl {
+public final class PearlspearCourier extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creature");
diff --git a/Mage.Sets/src/mage/cards/p/PeatBog.java b/Mage.Sets/src/mage/cards/p/PeatBog.java
index bc27d2fe4ad..41ef0881ec5 100644
--- a/Mage.Sets/src/mage/cards/p/PeatBog.java
+++ b/Mage.Sets/src/mage/cards/p/PeatBog.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class PeatBog extends CardImpl {
+public final class PeatBog extends CardImpl {
public PeatBog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/p/PedanticLearning.java b/Mage.Sets/src/mage/cards/p/PedanticLearning.java
index 89001b48bd9..0d1b04225c7 100644
--- a/Mage.Sets/src/mage/cards/p/PedanticLearning.java
+++ b/Mage.Sets/src/mage/cards/p/PedanticLearning.java
@@ -46,7 +46,7 @@ import mage.game.events.ZoneChangeEvent;
*
* @author LevelX2 & L_J
*/
-public class PedanticLearning extends CardImpl {
+public final class PedanticLearning extends CardImpl {
public PedanticLearning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Peek.java b/Mage.Sets/src/mage/cards/p/Peek.java
index e46d17ea6fe..17aad5b0074 100644
--- a/Mage.Sets/src/mage/cards/p/Peek.java
+++ b/Mage.Sets/src/mage/cards/p/Peek.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class Peek extends CardImpl {
+public final class Peek extends CardImpl {
public Peek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PeelFromReality.java b/Mage.Sets/src/mage/cards/p/PeelFromReality.java
index 92f7a3ad6b2..e2b647a3d22 100644
--- a/Mage.Sets/src/mage/cards/p/PeelFromReality.java
+++ b/Mage.Sets/src/mage/cards/p/PeelFromReality.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class PeelFromReality extends CardImpl {
+public final class PeelFromReality extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/p/PeemaAetherSeer.java b/Mage.Sets/src/mage/cards/p/PeemaAetherSeer.java
index 47e11477992..51d46b9bd35 100644
--- a/Mage.Sets/src/mage/cards/p/PeemaAetherSeer.java
+++ b/Mage.Sets/src/mage/cards/p/PeemaAetherSeer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class PeemaAetherSeer extends CardImpl {
+public final class PeemaAetherSeer extends CardImpl {
public PeemaAetherSeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PeemaOutrider.java b/Mage.Sets/src/mage/cards/p/PeemaOutrider.java
index 70762c3385a..cc38f19b807 100644
--- a/Mage.Sets/src/mage/cards/p/PeemaOutrider.java
+++ b/Mage.Sets/src/mage/cards/p/PeemaOutrider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class PeemaOutrider extends CardImpl {
+public final class PeemaOutrider extends CardImpl {
public PeemaOutrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PeerPressure.java b/Mage.Sets/src/mage/cards/p/PeerPressure.java
index 169d74746f1..d715ff3ccff 100644
--- a/Mage.Sets/src/mage/cards/p/PeerPressure.java
+++ b/Mage.Sets/src/mage/cards/p/PeerPressure.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class PeerPressure extends CardImpl {
+public final class PeerPressure extends CardImpl {
public PeerPressure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PeerThroughDepths.java b/Mage.Sets/src/mage/cards/p/PeerThroughDepths.java
index a928f47da2d..05dc417cb68 100644
--- a/Mage.Sets/src/mage/cards/p/PeerThroughDepths.java
+++ b/Mage.Sets/src/mage/cards/p/PeerThroughDepths.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author LevelX
*/
-public class PeerThroughDepths extends CardImpl {
+public final class PeerThroughDepths extends CardImpl {
private static final FilterCard filter = new FilterCard("an instant or sorcery card");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PegasusCharger.java b/Mage.Sets/src/mage/cards/p/PegasusCharger.java
index 227a41e0541..6463b8c673e 100644
--- a/Mage.Sets/src/mage/cards/p/PegasusCharger.java
+++ b/Mage.Sets/src/mage/cards/p/PegasusCharger.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PegasusCharger extends CardImpl {
+public final class PegasusCharger extends CardImpl {
public PegasusCharger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PegasusCourser.java b/Mage.Sets/src/mage/cards/p/PegasusCourser.java
index 4e925261c66..7f90f30e77a 100644
--- a/Mage.Sets/src/mage/cards/p/PegasusCourser.java
+++ b/Mage.Sets/src/mage/cards/p/PegasusCourser.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author TheElk801
*/
-public class PegasusCourser extends CardImpl {
+public final class PegasusCourser extends CardImpl {
static final FilterAttackingCreature filter = new FilterAttackingCreature("another target attacking creature");
diff --git a/Mage.Sets/src/mage/cards/p/PegasusRefuge.java b/Mage.Sets/src/mage/cards/p/PegasusRefuge.java
index b3d49c25baa..5958748fab1 100644
--- a/Mage.Sets/src/mage/cards/p/PegasusRefuge.java
+++ b/Mage.Sets/src/mage/cards/p/PegasusRefuge.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.PegasusToken;
*
* @author LoneFox
*/
-public class PegasusRefuge extends CardImpl {
+public final class PegasusRefuge extends CardImpl {
public PegasusRefuge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PegasusStampede.java b/Mage.Sets/src/mage/cards/p/PegasusStampede.java
index 6453315cd90..0fde66f1b55 100644
--- a/Mage.Sets/src/mage/cards/p/PegasusStampede.java
+++ b/Mage.Sets/src/mage/cards/p/PegasusStampede.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class PegasusStampede extends CardImpl {
+public final class PegasusStampede extends CardImpl {
public PegasusStampede(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PelakkaWurm.java b/Mage.Sets/src/mage/cards/p/PelakkaWurm.java
index 3bd5ec915d8..516334820b6 100644
--- a/Mage.Sets/src/mage/cards/p/PelakkaWurm.java
+++ b/Mage.Sets/src/mage/cards/p/PelakkaWurm.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PelakkaWurm extends CardImpl {
+public final class PelakkaWurm extends CardImpl {
public PelakkaWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PemminsAura.java b/Mage.Sets/src/mage/cards/p/PemminsAura.java
index 83f8178b58d..6758bfd2904 100644
--- a/Mage.Sets/src/mage/cards/p/PemminsAura.java
+++ b/Mage.Sets/src/mage/cards/p/PemminsAura.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class PemminsAura extends CardImpl {
+public final class PemminsAura extends CardImpl {
public PemminsAura(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Penance.java b/Mage.Sets/src/mage/cards/p/Penance.java
index 45616fedf34..651507b6633 100644
--- a/Mage.Sets/src/mage/cards/p/Penance.java
+++ b/Mage.Sets/src/mage/cards/p/Penance.java
@@ -1,115 +1,115 @@
-/*
- * 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.p;
-
-import java.util.UUID;
-import mage.ObjectColor;
-import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.PutCardFromHandOnTopOfLibraryCost;
-import mage.abilities.effects.PreventionEffectImpl;
-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.game.Game;
-import mage.game.events.GameEvent;
-import mage.target.TargetSource;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class Penance extends CardImpl {
-
- public Penance(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
-
- // Put a card from your hand on top of your library: The next time a black or red source of your choice would deal damage this turn, prevent that damage.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PenanceEffect(), new PutCardFromHandOnTopOfLibraryCost()));
-
- }
-
- public Penance(final Penance card) {
- super(card);
- }
-
- @Override
- public Penance copy() {
- return new Penance(this);
- }
-}
-
-class PenanceEffect extends PreventionEffectImpl {
-
- private final TargetSource target;
-
- public PenanceEffect() {
- super(Duration.EndOfTurn, Integer.MAX_VALUE, false, false);
- this.staticText = "The next time a black or red source of your choice would deal damage to you this turn, prevent that damage.";
- this.target = new TargetSource();
- }
-
- public PenanceEffect(final PenanceEffect effect) {
- super(effect);
- this.target = effect.target.copy();
- }
-
- @Override
- public PenanceEffect copy() {
- return new PenanceEffect(this);
- }
-
- @Override
- public void init(Ability source, Game game) {
- this.target.choose(Outcome.PreventDamage, source.getControllerId(), source.getSourceId(), game);
- super.init(source, game);
- }
-
- @Override
- public boolean replaceEvent(GameEvent event, Ability source, Game game) {
- this.used = true;
- this.discard(); // only one use
- return true;
- }
-
- @Override
- public boolean applies(GameEvent event, Ability source, Game game) {
- if (!this.used
- && super.applies(event, source, game)) {
- if (event.getTargetId().equals(source.getControllerId())
- && event.getSourceId().equals(target.getFirstTarget())) {
- return (game.getObject(target.getFirstTarget()).getColor(game).contains(ObjectColor.BLACK)
- || game.getObject(target.getFirstTarget()).getColor(game).contains(ObjectColor.RED));
- }
- }
- return false;
- }
+/*
+ * 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.p;
+
+import java.util.UUID;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.PutCardFromHandOnTopOfLibraryCost;
+import mage.abilities.effects.PreventionEffectImpl;
+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.game.Game;
+import mage.game.events.GameEvent;
+import mage.target.TargetSource;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class Penance extends CardImpl {
+
+ public Penance(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
+
+ // Put a card from your hand on top of your library: The next time a black or red source of your choice would deal damage this turn, prevent that damage.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PenanceEffect(), new PutCardFromHandOnTopOfLibraryCost()));
+
+ }
+
+ public Penance(final Penance card) {
+ super(card);
+ }
+
+ @Override
+ public Penance copy() {
+ return new Penance(this);
+ }
+}
+
+class PenanceEffect extends PreventionEffectImpl {
+
+ private final TargetSource target;
+
+ public PenanceEffect() {
+ super(Duration.EndOfTurn, Integer.MAX_VALUE, false, false);
+ this.staticText = "The next time a black or red source of your choice would deal damage to you this turn, prevent that damage.";
+ this.target = new TargetSource();
+ }
+
+ public PenanceEffect(final PenanceEffect effect) {
+ super(effect);
+ this.target = effect.target.copy();
+ }
+
+ @Override
+ public PenanceEffect copy() {
+ return new PenanceEffect(this);
+ }
+
+ @Override
+ public void init(Ability source, Game game) {
+ this.target.choose(Outcome.PreventDamage, source.getControllerId(), source.getSourceId(), game);
+ super.init(source, game);
+ }
+
+ @Override
+ public boolean replaceEvent(GameEvent event, Ability source, Game game) {
+ this.used = true;
+ this.discard(); // only one use
+ return true;
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ if (!this.used
+ && super.applies(event, source, game)) {
+ if (event.getTargetId().equals(source.getControllerId())
+ && event.getSourceId().equals(target.getFirstTarget())) {
+ return (game.getObject(target.getFirstTarget()).getColor(game).contains(ObjectColor.BLACK)
+ || game.getObject(target.getFirstTarget()).getColor(game).contains(ObjectColor.RED));
+ }
+ }
+ return false;
+ }
}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/cards/p/Pendelhaven.java b/Mage.Sets/src/mage/cards/p/Pendelhaven.java
index 6d017c9525e..5ed1dbe4c0b 100644
--- a/Mage.Sets/src/mage/cards/p/Pendelhaven.java
+++ b/Mage.Sets/src/mage/cards/p/Pendelhaven.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class Pendelhaven extends CardImpl {
+public final class Pendelhaven extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("1/1 creature");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PendelhavenElder.java b/Mage.Sets/src/mage/cards/p/PendelhavenElder.java
index ea1ff6e889c..5389f51331e 100644
--- a/Mage.Sets/src/mage/cards/p/PendelhavenElder.java
+++ b/Mage.Sets/src/mage/cards/p/PendelhavenElder.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class PendelhavenElder extends CardImpl {
+public final class PendelhavenElder extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each 1/1 creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/PendrellDrake.java b/Mage.Sets/src/mage/cards/p/PendrellDrake.java
index 1aaf472d77a..153285a280f 100644
--- a/Mage.Sets/src/mage/cards/p/PendrellDrake.java
+++ b/Mage.Sets/src/mage/cards/p/PendrellDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PendrellDrake extends CardImpl {
+public final class PendrellDrake extends CardImpl {
public PendrellDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PendrellFlux.java b/Mage.Sets/src/mage/cards/p/PendrellFlux.java
index 9e13051e818..71f88646da3 100644
--- a/Mage.Sets/src/mage/cards/p/PendrellFlux.java
+++ b/Mage.Sets/src/mage/cards/p/PendrellFlux.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author Galatolol
*/
-public class PendrellFlux extends CardImpl {
+public final class PendrellFlux extends CardImpl {
public PendrellFlux(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PendrellMists.java b/Mage.Sets/src/mage/cards/p/PendrellMists.java
index e52173a217d..c6ce901967e 100644
--- a/Mage.Sets/src/mage/cards/p/PendrellMists.java
+++ b/Mage.Sets/src/mage/cards/p/PendrellMists.java
@@ -46,7 +46,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX2
*/
-public class PendrellMists extends CardImpl {
+public final class PendrellMists extends CardImpl {
public PendrellMists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PendulumOfPatterns.java b/Mage.Sets/src/mage/cards/p/PendulumOfPatterns.java
index ad3c532aec9..dadedf67aac 100644
--- a/Mage.Sets/src/mage/cards/p/PendulumOfPatterns.java
+++ b/Mage.Sets/src/mage/cards/p/PendulumOfPatterns.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class PendulumOfPatterns extends CardImpl {
+public final class PendulumOfPatterns extends CardImpl {
public PendulumOfPatterns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PennonBlade.java b/Mage.Sets/src/mage/cards/p/PennonBlade.java
index a71c8357862..a34fc3e426f 100644
--- a/Mage.Sets/src/mage/cards/p/PennonBlade.java
+++ b/Mage.Sets/src/mage/cards/p/PennonBlade.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author North
*/
-public class PennonBlade extends CardImpl {
+public final class PennonBlade extends CardImpl {
public PennonBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PensiveMinotaur.java b/Mage.Sets/src/mage/cards/p/PensiveMinotaur.java
index a72574382ed..b3cfa1e35a2 100644
--- a/Mage.Sets/src/mage/cards/p/PensiveMinotaur.java
+++ b/Mage.Sets/src/mage/cards/p/PensiveMinotaur.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class PensiveMinotaur extends CardImpl {
+public final class PensiveMinotaur extends CardImpl {
public PensiveMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PentadPrism.java b/Mage.Sets/src/mage/cards/p/PentadPrism.java
index 79c3e5ddb66..5927f12c956 100644
--- a/Mage.Sets/src/mage/cards/p/PentadPrism.java
+++ b/Mage.Sets/src/mage/cards/p/PentadPrism.java
@@ -40,7 +40,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class PentadPrism extends CardImpl {
+public final class PentadPrism extends CardImpl {
public PentadPrism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PentagramOfTheAges.java b/Mage.Sets/src/mage/cards/p/PentagramOfTheAges.java
index 5ad11abf22c..aa903c1d4fa 100644
--- a/Mage.Sets/src/mage/cards/p/PentagramOfTheAges.java
+++ b/Mage.Sets/src/mage/cards/p/PentagramOfTheAges.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class PentagramOfTheAges extends CardImpl {
+public final class PentagramOfTheAges extends CardImpl {
public PentagramOfTheAges(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/p/PentarchPaladin.java b/Mage.Sets/src/mage/cards/p/PentarchPaladin.java
index 86a28c5eb4b..b648e4d220a 100644
--- a/Mage.Sets/src/mage/cards/p/PentarchPaladin.java
+++ b/Mage.Sets/src/mage/cards/p/PentarchPaladin.java
@@ -51,7 +51,7 @@ import mage.constants.TargetAdjustment;
*
* @author jeffwadsworth
*/
-public class PentarchPaladin extends CardImpl {
+public final class PentarchPaladin extends CardImpl {
FilterPermanent filter = new FilterPermanent("permanent of the chosen color.");
diff --git a/Mage.Sets/src/mage/cards/p/PentarchWard.java b/Mage.Sets/src/mage/cards/p/PentarchWard.java
index 4e793c92726..7d662942744 100644
--- a/Mage.Sets/src/mage/cards/p/PentarchWard.java
+++ b/Mage.Sets/src/mage/cards/p/PentarchWard.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class PentarchWard extends CardImpl {
+public final class PentarchWard extends CardImpl {
public PentarchWard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/Pentavus.java b/Mage.Sets/src/mage/cards/p/Pentavus.java
index 95f8d141141..896d882c5a1 100644
--- a/Mage.Sets/src/mage/cards/p/Pentavus.java
+++ b/Mage.Sets/src/mage/cards/p/Pentavus.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class Pentavus extends CardImpl {
+public final class Pentavus extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Pentavite");
diff --git a/Mage.Sets/src/mage/cards/p/PenumbraBobcat.java b/Mage.Sets/src/mage/cards/p/PenumbraBobcat.java
index 110b7e64643..05918fe4387 100644
--- a/Mage.Sets/src/mage/cards/p/PenumbraBobcat.java
+++ b/Mage.Sets/src/mage/cards/p/PenumbraBobcat.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.PenumbraBobcatToken;
*
* @author Loki
*/
-public class PenumbraBobcat extends CardImpl {
+public final class PenumbraBobcat extends CardImpl {
public PenumbraBobcat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PenumbraKavu.java b/Mage.Sets/src/mage/cards/p/PenumbraKavu.java
index d12abf83525..1e54c645518 100644
--- a/Mage.Sets/src/mage/cards/p/PenumbraKavu.java
+++ b/Mage.Sets/src/mage/cards/p/PenumbraKavu.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.PenumbraKavuToken;
*
* @author Loki
*/
-public class PenumbraKavu extends CardImpl {
+public final class PenumbraKavu extends CardImpl {
public PenumbraKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PenumbraSpider.java b/Mage.Sets/src/mage/cards/p/PenumbraSpider.java
index a025bb49807..2039c0bbdd0 100644
--- a/Mage.Sets/src/mage/cards/p/PenumbraSpider.java
+++ b/Mage.Sets/src/mage/cards/p/PenumbraSpider.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.PenumbraSpiderToken;
*
* @author jonubuu
*/
-public class PenumbraSpider extends CardImpl {
+public final class PenumbraSpider extends CardImpl {
public PenumbraSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PenumbraWurm.java b/Mage.Sets/src/mage/cards/p/PenumbraWurm.java
index 04e0464ff86..9b48a09da8b 100644
--- a/Mage.Sets/src/mage/cards/p/PenumbraWurm.java
+++ b/Mage.Sets/src/mage/cards/p/PenumbraWurm.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.PenumbraWurmToken;
*
* @author Loki
*/
-public class PenumbraWurm extends CardImpl {
+public final class PenumbraWurm extends CardImpl {
public PenumbraWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java b/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java
index af375c7bb98..08fd1b8fa7e 100644
--- a/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java
+++ b/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class PeopleOfTheWoods extends CardImpl {
+public final class PeopleOfTheWoods extends CardImpl {
final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
diff --git a/Mage.Sets/src/mage/cards/p/Peppersmoke.java b/Mage.Sets/src/mage/cards/p/Peppersmoke.java
index 48d77f2d60a..c386fc9fbaf 100644
--- a/Mage.Sets/src/mage/cards/p/Peppersmoke.java
+++ b/Mage.Sets/src/mage/cards/p/Peppersmoke.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class Peppersmoke extends CardImpl {
+public final class Peppersmoke extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("If you control a Faerie,");
static {
diff --git a/Mage.Sets/src/mage/cards/p/Peregrination.java b/Mage.Sets/src/mage/cards/p/Peregrination.java
index a11a67e2e04..948c29f8b6f 100644
--- a/Mage.Sets/src/mage/cards/p/Peregrination.java
+++ b/Mage.Sets/src/mage/cards/p/Peregrination.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class Peregrination extends CardImpl {
+public final class Peregrination extends CardImpl {
public Peregrination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
@@ -96,7 +96,7 @@ class PeregrinationEffect extends OneShotEffect {
if (controller == null || sourceObject == null) {
return false;
}
- TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, game)) {
if (!target.getTargets().isEmpty()) {
Cards revealed = new CardsImpl();
diff --git a/Mage.Sets/src/mage/cards/p/PeregrineDrake.java b/Mage.Sets/src/mage/cards/p/PeregrineDrake.java
index c3ae00ae8c8..6288525e467 100644
--- a/Mage.Sets/src/mage/cards/p/PeregrineDrake.java
+++ b/Mage.Sets/src/mage/cards/p/PeregrineDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class PeregrineDrake extends CardImpl {
+public final class PeregrineDrake extends CardImpl {
public PeregrineDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PeregrineGriffin.java b/Mage.Sets/src/mage/cards/p/PeregrineGriffin.java
index b27f0279f00..a49e18dc4de 100644
--- a/Mage.Sets/src/mage/cards/p/PeregrineGriffin.java
+++ b/Mage.Sets/src/mage/cards/p/PeregrineGriffin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class PeregrineGriffin extends CardImpl {
+public final class PeregrineGriffin extends CardImpl {
public PeregrineGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PeregrineMask.java b/Mage.Sets/src/mage/cards/p/PeregrineMask.java
index 998430a3f7f..c2d8e9e090a 100644
--- a/Mage.Sets/src/mage/cards/p/PeregrineMask.java
+++ b/Mage.Sets/src/mage/cards/p/PeregrineMask.java
@@ -44,7 +44,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class PeregrineMask extends CardImpl {
+public final class PeregrineMask extends CardImpl {
public PeregrineMask(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/p/PerfectedForm.java b/Mage.Sets/src/mage/cards/p/PerfectedForm.java
index 48235b78699..f8a1f820d6d 100644
--- a/Mage.Sets/src/mage/cards/p/PerfectedForm.java
+++ b/Mage.Sets/src/mage/cards/p/PerfectedForm.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class PerfectedForm extends CardImpl {
+public final class PerfectedForm extends CardImpl {
public PerfectedForm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
diff --git a/Mage.Sets/src/mage/cards/p/PerilousForays.java b/Mage.Sets/src/mage/cards/p/PerilousForays.java
index 50f9c22cbea..8a9bd58aa50 100644
--- a/Mage.Sets/src/mage/cards/p/PerilousForays.java
+++ b/Mage.Sets/src/mage/cards/p/PerilousForays.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class PerilousForays extends CardImpl {
+public final class PerilousForays extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("land card with a basic land type");
diff --git a/Mage.Sets/src/mage/cards/p/PerilousMyr.java b/Mage.Sets/src/mage/cards/p/PerilousMyr.java
index 3f8d5a9b62e..8f0e9814fba 100644
--- a/Mage.Sets/src/mage/cards/p/PerilousMyr.java
+++ b/Mage.Sets/src/mage/cards/p/PerilousMyr.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class PerilousMyr extends CardImpl {
+public final class PerilousMyr extends CardImpl {
public PerilousMyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PerilousPredicament.java b/Mage.Sets/src/mage/cards/p/PerilousPredicament.java
index cc58fdfa98a..7c0787996c1 100644
--- a/Mage.Sets/src/mage/cards/p/PerilousPredicament.java
+++ b/Mage.Sets/src/mage/cards/p/PerilousPredicament.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class PerilousPredicament extends CardImpl {
+public final class PerilousPredicament extends CardImpl {
public PerilousPredicament(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PerilousResearch.java b/Mage.Sets/src/mage/cards/p/PerilousResearch.java
index 4ecf5b82233..292a9b8be42 100644
--- a/Mage.Sets/src/mage/cards/p/PerilousResearch.java
+++ b/Mage.Sets/src/mage/cards/p/PerilousResearch.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class PerilousResearch extends CardImpl {
+public final class PerilousResearch extends CardImpl {
public PerilousResearch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PerilousShadow.java b/Mage.Sets/src/mage/cards/p/PerilousShadow.java
index b59b2a7f493..723442edf5c 100644
--- a/Mage.Sets/src/mage/cards/p/PerilousShadow.java
+++ b/Mage.Sets/src/mage/cards/p/PerilousShadow.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class PerilousShadow extends CardImpl {
+public final class PerilousShadow extends CardImpl {
public PerilousShadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PerilousVault.java b/Mage.Sets/src/mage/cards/p/PerilousVault.java
index 22b7457e156..26ef8a9c071 100644
--- a/Mage.Sets/src/mage/cards/p/PerilousVault.java
+++ b/Mage.Sets/src/mage/cards/p/PerilousVault.java
@@ -33,29 +33,28 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.ExileSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
-import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.ExileAllEffect;
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.common.FilterNonlandPermanent;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
+import mage.filter.StaticFilters;
/**
*
* @author emerald000
*/
-public class PerilousVault extends CardImpl {
+public final class PerilousVault extends CardImpl {
public PerilousVault(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
// {5}, {T}, Exile Perilous Vault: Exile all nonland permanents.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PerilousVaultEffect(), new GenericManaCost(5));
+ Ability ability = new SimpleActivatedAbility(
+ Zone.BATTLEFIELD,
+ new ExileAllEffect(StaticFilters.FILTER_PERMANENTS_NON_LAND),
+ new GenericManaCost(5)
+ );
ability.addCost(new TapSourceCost());
ability.addCost(new ExileSourceCost());
this.addAbility(ability);
@@ -70,34 +69,3 @@ public class PerilousVault extends CardImpl {
return new PerilousVault(this);
}
}
-
-class PerilousVaultEffect extends OneShotEffect {
-
- private static final FilterPermanent filter = new FilterNonlandPermanent();
-
- PerilousVaultEffect() {
- super(Outcome.Exile);
- this.staticText = "Exile all nonland permanents";
- }
-
- PerilousVaultEffect(final PerilousVaultEffect effect) {
- super(effect);
- }
-
- @Override
- public PerilousVaultEffect copy() {
- return new PerilousVaultEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player controller = game.getPlayer(source.getControllerId());
- if (controller != null) {
- for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
- controller.moveCardToExileWithInfo(permanent, null, "", source.getSourceId(), game, Zone.HAND, true);
- }
- return true;
- }
- return false;
- }
-}
diff --git a/Mage.Sets/src/mage/cards/p/PerilousVoyage.java b/Mage.Sets/src/mage/cards/p/PerilousVoyage.java
index a20473e1ada..284db78c907 100644
--- a/Mage.Sets/src/mage/cards/p/PerilousVoyage.java
+++ b/Mage.Sets/src/mage/cards/p/PerilousVoyage.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class PerilousVoyage extends CardImpl {
+public final class PerilousVoyage extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanent you don't control");
diff --git a/Mage.Sets/src/mage/cards/p/PerimeterCaptain.java b/Mage.Sets/src/mage/cards/p/PerimeterCaptain.java
index 0872b0216d9..51e93986f83 100644
--- a/Mage.Sets/src/mage/cards/p/PerimeterCaptain.java
+++ b/Mage.Sets/src/mage/cards/p/PerimeterCaptain.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class PerimeterCaptain extends CardImpl {
+public final class PerimeterCaptain extends CardImpl {
public PerimeterCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/p/Perish.java b/Mage.Sets/src/mage/cards/p/Perish.java
index 4c67bcd0fc9..17602211914 100644
--- a/Mage.Sets/src/mage/cards/p/Perish.java
+++ b/Mage.Sets/src/mage/cards/p/Perish.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class Perish extends CardImpl {
+public final class Perish extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("green creatures");
diff --git a/Mage.Sets/src/mage/cards/p/PerishTheThought.java b/Mage.Sets/src/mage/cards/p/PerishTheThought.java
index aa21c9abb30..8dba84ad93c 100644
--- a/Mage.Sets/src/mage/cards/p/PerishTheThought.java
+++ b/Mage.Sets/src/mage/cards/p/PerishTheThought.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author jeffwadsworth
*/
-public class PerishTheThought extends CardImpl {
+public final class PerishTheThought extends CardImpl {
public PerishTheThought(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
@@ -97,10 +97,8 @@ class PerishTheThoughtEffect extends OneShotEffect {
if (you.choose(Outcome.Neutral, targetOpponent.getHand(), target, game)) {
Card chosenCard = targetOpponent.getHand().get(target.getFirstTarget(), game);
if (chosenCard != null) {
- if (targetOpponent != null) {
- chosenCard.moveToZone(Zone.LIBRARY, source.getSourceId(), game, false);
- targetOpponent.shuffleLibrary(source, game);
- }
+ chosenCard.moveToZone(Zone.LIBRARY, source.getSourceId(), game, false);
+ targetOpponent.shuffleLibrary(source, game);
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/p/PermafrostTrap.java b/Mage.Sets/src/mage/cards/p/PermafrostTrap.java
index a570418039a..2a2552ab4a2 100644
--- a/Mage.Sets/src/mage/cards/p/PermafrostTrap.java
+++ b/Mage.Sets/src/mage/cards/p/PermafrostTrap.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class PermafrostTrap extends CardImpl {
+public final class PermafrostTrap extends CardImpl {
public PermafrostTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PermeatingMass.java b/Mage.Sets/src/mage/cards/p/PermeatingMass.java
index b1eb13fdc40..e13a7ba1da0 100644
--- a/Mage.Sets/src/mage/cards/p/PermeatingMass.java
+++ b/Mage.Sets/src/mage/cards/p/PermeatingMass.java
@@ -46,7 +46,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author fireshoes
*/
-public class PermeatingMass extends CardImpl {
+public final class PermeatingMass extends CardImpl {
public PermeatingMass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PerniciousDeed.java b/Mage.Sets/src/mage/cards/p/PerniciousDeed.java
index 00c3650960f..bd990333d03 100644
--- a/Mage.Sets/src/mage/cards/p/PerniciousDeed.java
+++ b/Mage.Sets/src/mage/cards/p/PerniciousDeed.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
/**
* @author Plopman
*/
-public class PerniciousDeed extends CardImpl {
+public final class PerniciousDeed extends CardImpl {
public PerniciousDeed(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/p/PerpetualTimepiece.java b/Mage.Sets/src/mage/cards/p/PerpetualTimepiece.java
index 5176e459e3d..55ef9c62eb3 100644
--- a/Mage.Sets/src/mage/cards/p/PerpetualTimepiece.java
+++ b/Mage.Sets/src/mage/cards/p/PerpetualTimepiece.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class PerpetualTimepiece extends CardImpl {
+public final class PerpetualTimepiece extends CardImpl {
public PerpetualTimepiece(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/p/Perplex.java b/Mage.Sets/src/mage/cards/p/Perplex.java
index aa4122b14ab..8fe528a262c 100644
--- a/Mage.Sets/src/mage/cards/p/Perplex.java
+++ b/Mage.Sets/src/mage/cards/p/Perplex.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author Quercitron
*/
-public class Perplex extends CardImpl {
+public final class Perplex extends CardImpl {
public Perplex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PerplexingChimera.java b/Mage.Sets/src/mage/cards/p/PerplexingChimera.java
index e37a20b7685..afda799143a 100644
--- a/Mage.Sets/src/mage/cards/p/PerplexingChimera.java
+++ b/Mage.Sets/src/mage/cards/p/PerplexingChimera.java
@@ -98,7 +98,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class PerplexingChimera extends CardImpl {
+public final class PerplexingChimera extends CardImpl {
public PerplexingChimera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Persecute.java b/Mage.Sets/src/mage/cards/p/Persecute.java
index 089541d6d93..a5b19d93085 100644
--- a/Mage.Sets/src/mage/cards/p/Persecute.java
+++ b/Mage.Sets/src/mage/cards/p/Persecute.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class Persecute extends CardImpl {
+public final class Persecute extends CardImpl {
public Persecute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PersistentNightmare.java b/Mage.Sets/src/mage/cards/p/PersistentNightmare.java
index efaf3951a0e..2432560f67e 100644
--- a/Mage.Sets/src/mage/cards/p/PersistentNightmare.java
+++ b/Mage.Sets/src/mage/cards/p/PersistentNightmare.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class PersistentNightmare extends CardImpl {
+public final class PersistentNightmare extends CardImpl {
public PersistentNightmare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java b/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java
index e8f666f3ef7..2f584ff716a 100644
--- a/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java
+++ b/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author Styxo
*/
-public class PersonalEnergyShield extends CardImpl {
+public final class PersonalEnergyShield extends CardImpl {
private final static FilterSpell filter = new FilterSpell("spell that targets you or a permanent you control");
diff --git a/Mage.Sets/src/mage/cards/p/PersonalIncarnation.java b/Mage.Sets/src/mage/cards/p/PersonalIncarnation.java
index 5a6557cbb75..6da8a8a6767 100644
--- a/Mage.Sets/src/mage/cards/p/PersonalIncarnation.java
+++ b/Mage.Sets/src/mage/cards/p/PersonalIncarnation.java
@@ -52,7 +52,7 @@ import mage.target.TargetPlayer;
*
* @author MTGfan
*/
-public class PersonalIncarnation extends CardImpl {
+public final class PersonalIncarnation extends CardImpl {
public PersonalIncarnation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PersonalSanctuary.java b/Mage.Sets/src/mage/cards/p/PersonalSanctuary.java
index b1edbea3e37..61036c9f998 100644
--- a/Mage.Sets/src/mage/cards/p/PersonalSanctuary.java
+++ b/Mage.Sets/src/mage/cards/p/PersonalSanctuary.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent;
*
* @author nantuko
*/
-public class PersonalSanctuary extends CardImpl {
+public final class PersonalSanctuary extends CardImpl {
public PersonalSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PersonalTutor.java b/Mage.Sets/src/mage/cards/p/PersonalTutor.java
index a4c4bbd8b16..4fb779f2733 100644
--- a/Mage.Sets/src/mage/cards/p/PersonalTutor.java
+++ b/Mage.Sets/src/mage/cards/p/PersonalTutor.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class PersonalTutor extends CardImpl {
+public final class PersonalTutor extends CardImpl {
private static final FilterCard filter = new FilterCard("Sorcery card");
static{
filter.add(new CardTypePredicate(CardType.SORCERY));
diff --git a/Mage.Sets/src/mage/cards/p/Persuasion.java b/Mage.Sets/src/mage/cards/p/Persuasion.java
index 586a4091ac0..edf81a5f27f 100644
--- a/Mage.Sets/src/mage/cards/p/Persuasion.java
+++ b/Mage.Sets/src/mage/cards/p/Persuasion.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class Persuasion extends CardImpl {
+public final class Persuasion extends CardImpl {
public Persuasion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Pestermite.java b/Mage.Sets/src/mage/cards/p/Pestermite.java
index 2b1ef5c2d65..c6599a1f4ca 100644
--- a/Mage.Sets/src/mage/cards/p/Pestermite.java
+++ b/Mage.Sets/src/mage/cards/p/Pestermite.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class Pestermite extends CardImpl {
+public final class Pestermite extends CardImpl {
public Pestermite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Pestilence.java b/Mage.Sets/src/mage/cards/p/Pestilence.java
index 51264f7664a..e19c1049e78 100644
--- a/Mage.Sets/src/mage/cards/p/Pestilence.java
+++ b/Mage.Sets/src/mage/cards/p/Pestilence.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author Backfir3
*/
-public class Pestilence extends CardImpl {
+public final class Pestilence extends CardImpl {
private static final String ruleText = "At the beginning of the end step, if no creatures are on the battlefield, sacrifice {this}.";
diff --git a/Mage.Sets/src/mage/cards/p/PestilenceDemon.java b/Mage.Sets/src/mage/cards/p/PestilenceDemon.java
index 81e132409b7..08b94f0466a 100644
--- a/Mage.Sets/src/mage/cards/p/PestilenceDemon.java
+++ b/Mage.Sets/src/mage/cards/p/PestilenceDemon.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class PestilenceDemon extends CardImpl {
+public final class PestilenceDemon extends CardImpl {
public PestilenceDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PestilenceRats.java b/Mage.Sets/src/mage/cards/p/PestilenceRats.java
index e64880e61a5..6e2af44e51f 100644
--- a/Mage.Sets/src/mage/cards/p/PestilenceRats.java
+++ b/Mage.Sets/src/mage/cards/p/PestilenceRats.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class PestilenceRats extends CardImpl {
+public final class PestilenceRats extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other Rats on the battlefield");
static{
diff --git a/Mage.Sets/src/mage/cards/p/PestilentKathari.java b/Mage.Sets/src/mage/cards/p/PestilentKathari.java
index 333ab5c8dde..c822180fcbb 100644
--- a/Mage.Sets/src/mage/cards/p/PestilentKathari.java
+++ b/Mage.Sets/src/mage/cards/p/PestilentKathari.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class PestilentKathari extends CardImpl {
+public final class PestilentKathari extends CardImpl {
public PestilentKathari(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PestilentSouleater.java b/Mage.Sets/src/mage/cards/p/PestilentSouleater.java
index ee3e7a1fb61..c6b742b09e7 100644
--- a/Mage.Sets/src/mage/cards/p/PestilentSouleater.java
+++ b/Mage.Sets/src/mage/cards/p/PestilentSouleater.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class PestilentSouleater extends CardImpl {
+public final class PestilentSouleater extends CardImpl {
public PestilentSouleater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/p/PetalmaneBaku.java b/Mage.Sets/src/mage/cards/p/PetalmaneBaku.java
index 25adee233cd..72755dc5877 100644
--- a/Mage.Sets/src/mage/cards/p/PetalmaneBaku.java
+++ b/Mage.Sets/src/mage/cards/p/PetalmaneBaku.java
@@ -48,7 +48,7 @@ import mage.filter.StaticFilters;
/**
* @author LevelX2
*/
-public class PetalmaneBaku extends CardImpl {
+public final class PetalmaneBaku extends CardImpl {
public PetalmaneBaku(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PetalsOfInsight.java b/Mage.Sets/src/mage/cards/p/PetalsOfInsight.java
index f256922de2d..30bbab8c801 100644
--- a/Mage.Sets/src/mage/cards/p/PetalsOfInsight.java
+++ b/Mage.Sets/src/mage/cards/p/PetalsOfInsight.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class PetalsOfInsight extends CardImpl {
+public final class PetalsOfInsight extends CardImpl {
public PetalsOfInsight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PetraSphinx.java b/Mage.Sets/src/mage/cards/p/PetraSphinx.java
index 0ffe6be2ae5..9731713e598 100644
--- a/Mage.Sets/src/mage/cards/p/PetraSphinx.java
+++ b/Mage.Sets/src/mage/cards/p/PetraSphinx.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author BetaSteward_at_googlemail.com & L_J
*/
-public class PetraSphinx extends CardImpl {
+public final class PetraSphinx extends CardImpl {
public PetraSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/Petradon.java b/Mage.Sets/src/mage/cards/p/Petradon.java
index a56825ae87b..766f27b0f22 100644
--- a/Mage.Sets/src/mage/cards/p/Petradon.java
+++ b/Mage.Sets/src/mage/cards/p/Petradon.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class Petradon extends CardImpl {
+public final class Petradon extends CardImpl {
public Petradon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Petrahydrox.java b/Mage.Sets/src/mage/cards/p/Petrahydrox.java
index 65376c41264..373a22270ac 100644
--- a/Mage.Sets/src/mage/cards/p/Petrahydrox.java
+++ b/Mage.Sets/src/mage/cards/p/Petrahydrox.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Petrahydrox extends CardImpl {
+public final class Petrahydrox extends CardImpl {
public Petrahydrox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U/R}");
diff --git a/Mage.Sets/src/mage/cards/p/Petravark.java b/Mage.Sets/src/mage/cards/p/Petravark.java
index 515ec803080..6b319346bf6 100644
--- a/Mage.Sets/src/mage/cards/p/Petravark.java
+++ b/Mage.Sets/src/mage/cards/p/Petravark.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class Petravark extends CardImpl {
+public final class Petravark extends CardImpl {
public Petravark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PetrifiedField.java b/Mage.Sets/src/mage/cards/p/PetrifiedField.java
index ead93e0ecb9..808bac4f39b 100644
--- a/Mage.Sets/src/mage/cards/p/PetrifiedField.java
+++ b/Mage.Sets/src/mage/cards/p/PetrifiedField.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class PetrifiedField extends CardImpl {
+public final class PetrifiedField extends CardImpl {
public PetrifiedField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/p/PetrifiedPlating.java b/Mage.Sets/src/mage/cards/p/PetrifiedPlating.java
index 35e4619fe2f..fb9a0d2c0ef 100644
--- a/Mage.Sets/src/mage/cards/p/PetrifiedPlating.java
+++ b/Mage.Sets/src/mage/cards/p/PetrifiedPlating.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class PetrifiedPlating extends CardImpl {
+public final class PetrifiedPlating extends CardImpl {
public PetrifiedPlating(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PetrifiedWoodKin.java b/Mage.Sets/src/mage/cards/p/PetrifiedWoodKin.java
new file mode 100644
index 00000000000..23a5edc9a95
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/p/PetrifiedWoodKin.java
@@ -0,0 +1,130 @@
+/*
+ * 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.p;
+
+import java.util.ArrayList;
+import java.util.UUID;
+import mage.MageInt;
+import mage.MageObjectReference;
+import mage.abilities.Ability;
+import mage.abilities.common.CantBeCounteredAbility;
+import mage.abilities.common.EntersBattlefieldAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.ProtectionAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.counters.CounterType;
+import mage.filter.FilterCard;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.watchers.common.DamageDoneWatcher;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class PetrifiedWoodKin extends CardImpl {
+
+ private static final FilterCard filter = new FilterCard("instants");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.INSTANT));
+ }
+
+ public PetrifiedWoodKin(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{G}");
+
+ this.subtype.add(SubType.ELEMENTAL);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Petrified Wood-Kin can't be countered.
+ this.addAbility(new CantBeCounteredAbility());
+
+ // Bloodthirst X
+ this.addAbility(new EntersBattlefieldAbility(
+ new PetrifiedWoodKinEffect(),
+ "Bloodthirst X "
+ + "(This creature enters the battlefield with X +1/+1 counters on it, "
+ + "where X is the damage dealt to your opponents this turn.)"
+ ), new DamageDoneWatcher());
+
+ // Protection from instants
+ this.addAbility(new ProtectionAbility(filter));
+ }
+
+ public PetrifiedWoodKin(final PetrifiedWoodKin card) {
+ super(card);
+ }
+
+ @Override
+ public PetrifiedWoodKin copy() {
+ return new PetrifiedWoodKin(this);
+ }
+}
+
+class PetrifiedWoodKinEffect extends OneShotEffect {
+
+ PetrifiedWoodKinEffect() {
+ super(Outcome.BoostCreature);
+ staticText = "";
+ }
+
+ PetrifiedWoodKinEffect(final PetrifiedWoodKinEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getControllerId());
+ DamageDoneWatcher watcher = (DamageDoneWatcher) game.getState().getWatchers().get(DamageDoneWatcher.class.getSimpleName());
+ Permanent permanent = game.getPermanentEntering(source.getSourceId());
+ if (player == null || watcher == null || permanent == null) {
+ return false;
+ }
+ ArrayList appliedEffects = (ArrayList) this.getValue("appliedEffects"); // the basic event is the EntersBattlefieldEvent, so use already applied replacement effects from that event
+ int amount = 0;
+ for (UUID opponentId : game.getOpponents(player.getId())) {
+ MageObjectReference mor = new MageObjectReference(opponentId, game);
+ amount += watcher.damagedObjects.getOrDefault(mor, 0);
+ }
+ permanent.addCounters(CounterType.P1P1.createInstance(amount), source, game, appliedEffects);
+ return true;
+ }
+
+ @Override
+ public PetrifiedWoodKinEffect copy() {
+ return new PetrifiedWoodKinEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/PewterGolem.java b/Mage.Sets/src/mage/cards/p/PewterGolem.java
index 66e725c50a0..c1125e568ed 100644
--- a/Mage.Sets/src/mage/cards/p/PewterGolem.java
+++ b/Mage.Sets/src/mage/cards/p/PewterGolem.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class PewterGolem extends CardImpl {
+public final class PewterGolem extends CardImpl {
public PewterGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/p/PhageTheUntouchable.java b/Mage.Sets/src/mage/cards/p/PhageTheUntouchable.java
index d932fb09717..ece6aadd373 100644
--- a/Mage.Sets/src/mage/cards/p/PhageTheUntouchable.java
+++ b/Mage.Sets/src/mage/cards/p/PhageTheUntouchable.java
@@ -49,7 +49,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author LevelX2
*/
-public class PhageTheUntouchable extends CardImpl {
+public final class PhageTheUntouchable extends CardImpl {
public PhageTheUntouchable(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhalanxFormation.java b/Mage.Sets/src/mage/cards/p/PhalanxFormation.java
index 92a66a78833..64180c1de68 100644
--- a/Mage.Sets/src/mage/cards/p/PhalanxFormation.java
+++ b/Mage.Sets/src/mage/cards/p/PhalanxFormation.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PhalanxFormation extends CardImpl {
+public final class PhalanxFormation extends CardImpl {
public PhalanxFormation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PhalanxLeader.java b/Mage.Sets/src/mage/cards/p/PhalanxLeader.java
index 4a746dff1f6..df6d902ac1c 100644
--- a/Mage.Sets/src/mage/cards/p/PhalanxLeader.java
+++ b/Mage.Sets/src/mage/cards/p/PhalanxLeader.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class PhalanxLeader extends CardImpl {
+public final class PhalanxLeader extends CardImpl {
public PhalanxLeader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/Phantasmagorian.java b/Mage.Sets/src/mage/cards/p/Phantasmagorian.java
index 0f74b093bb7..324bbe58e22 100644
--- a/Mage.Sets/src/mage/cards/p/Phantasmagorian.java
+++ b/Mage.Sets/src/mage/cards/p/Phantasmagorian.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Plopman
*/
-public class Phantasmagorian extends CardImpl {
+public final class Phantasmagorian extends CardImpl {
public Phantasmagorian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantasmalAbomination.java b/Mage.Sets/src/mage/cards/p/PhantasmalAbomination.java
index d31c8480494..88e2ca765f4 100644
--- a/Mage.Sets/src/mage/cards/p/PhantasmalAbomination.java
+++ b/Mage.Sets/src/mage/cards/p/PhantasmalAbomination.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PhantasmalAbomination extends CardImpl {
+public final class PhantasmalAbomination extends CardImpl {
public PhantasmalAbomination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantasmalBear.java b/Mage.Sets/src/mage/cards/p/PhantasmalBear.java
index 50c2732e050..b332cd2be45 100644
--- a/Mage.Sets/src/mage/cards/p/PhantasmalBear.java
+++ b/Mage.Sets/src/mage/cards/p/PhantasmalBear.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PhantasmalBear extends CardImpl {
+public final class PhantasmalBear extends CardImpl {
public PhantasmalBear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantasmalDragon.java b/Mage.Sets/src/mage/cards/p/PhantasmalDragon.java
index 9d6e388158c..09df65f75cb 100644
--- a/Mage.Sets/src/mage/cards/p/PhantasmalDragon.java
+++ b/Mage.Sets/src/mage/cards/p/PhantasmalDragon.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PhantasmalDragon extends CardImpl {
+public final class PhantasmalDragon extends CardImpl {
public PhantasmalDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantasmalFiend.java b/Mage.Sets/src/mage/cards/p/PhantasmalFiend.java
index 9accaf657ac..979e39789be 100644
--- a/Mage.Sets/src/mage/cards/p/PhantasmalFiend.java
+++ b/Mage.Sets/src/mage/cards/p/PhantasmalFiend.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class PhantasmalFiend extends CardImpl {
+public final class PhantasmalFiend extends CardImpl {
public PhantasmalFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantasmalForces.java b/Mage.Sets/src/mage/cards/p/PhantasmalForces.java
index c28059ea49d..a07b7d77f01 100644
--- a/Mage.Sets/src/mage/cards/p/PhantasmalForces.java
+++ b/Mage.Sets/src/mage/cards/p/PhantasmalForces.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author ilcartographer
*/
-public class PhantasmalForces extends CardImpl {
+public final class PhantasmalForces extends CardImpl {
public PhantasmalForces(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantasmalImage.java b/Mage.Sets/src/mage/cards/p/PhantasmalImage.java
index 78cf8432bb0..16506b4c753 100644
--- a/Mage.Sets/src/mage/cards/p/PhantasmalImage.java
+++ b/Mage.Sets/src/mage/cards/p/PhantasmalImage.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author North
*/
-public class PhantasmalImage extends CardImpl {
+public final class PhantasmalImage extends CardImpl {
private static final String effectText = "a copy of any creature on the battlefield, except it's an Illusion in addition to its other types and it gains \"When this creature becomes the target of a spell or ability, sacrifice it.\"";
diff --git a/Mage.Sets/src/mage/cards/p/PhantasmalTerrain.java b/Mage.Sets/src/mage/cards/p/PhantasmalTerrain.java
index 08978c7c131..80155fc3b11 100644
--- a/Mage.Sets/src/mage/cards/p/PhantasmalTerrain.java
+++ b/Mage.Sets/src/mage/cards/p/PhantasmalTerrain.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Quercitron
*/
-public class PhantasmalTerrain extends CardImpl {
+public final class PhantasmalTerrain extends CardImpl {
public PhantasmalTerrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Phantatog.java b/Mage.Sets/src/mage/cards/p/Phantatog.java
index c9bc0e50d16..94880027993 100644
--- a/Mage.Sets/src/mage/cards/p/Phantatog.java
+++ b/Mage.Sets/src/mage/cards/p/Phantatog.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class Phantatog extends CardImpl {
+public final class Phantatog extends CardImpl {
public Phantatog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomBeast.java b/Mage.Sets/src/mage/cards/p/PhantomBeast.java
index f286768a1a1..3bb8d557a41 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomBeast.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomBeast.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
* @author BetaSteward_at_googlemail.com
* @author North
*/
-public class PhantomBeast extends CardImpl {
+public final class PhantomBeast extends CardImpl {
public PhantomBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomCentaur.java b/Mage.Sets/src/mage/cards/p/PhantomCentaur.java
index f2acd19fda3..1621a9a517e 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomCentaur.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomCentaur.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
/**
* @author LevelX2
*/
-public class PhantomCentaur extends CardImpl {
+public final class PhantomCentaur extends CardImpl {
public PhantomCentaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomFlock.java b/Mage.Sets/src/mage/cards/p/PhantomFlock.java
index 34956cf5c5d..839da812e73 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomFlock.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomFlock.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
/**
* @author emerald000
*/
-public class PhantomFlock extends CardImpl {
+public final class PhantomFlock extends CardImpl {
public PhantomFlock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomGeneral.java b/Mage.Sets/src/mage/cards/p/PhantomGeneral.java
index 3f3c130a147..f60ad134cd8 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomGeneral.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomGeneral.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
/**
* @author LevelX2
*/
-public class PhantomGeneral extends CardImpl {
+public final class PhantomGeneral extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens you control");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomMonster.java b/Mage.Sets/src/mage/cards/p/PhantomMonster.java
index b54fa7d4726..fec2b8d2517 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomMonster.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomMonster.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PhantomMonster extends CardImpl {
+public final class PhantomMonster extends CardImpl {
public PhantomMonster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomNantuko.java b/Mage.Sets/src/mage/cards/p/PhantomNantuko.java
index bb31bb88ccb..81ccc9b4e94 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomNantuko.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomNantuko.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class PhantomNantuko extends CardImpl {
+public final class PhantomNantuko extends CardImpl {
public PhantomNantuko(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomNishoba.java b/Mage.Sets/src/mage/cards/p/PhantomNishoba.java
index 755d43286bf..a4023788917 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomNishoba.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomNishoba.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
/**
* @author fireshoes
*/
-public class PhantomNishoba extends CardImpl {
+public final class PhantomNishoba extends CardImpl {
public PhantomNishoba(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomNomad.java b/Mage.Sets/src/mage/cards/p/PhantomNomad.java
index 863afd33c07..4788c212ab9 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomNomad.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomNomad.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class PhantomNomad extends CardImpl {
+public final class PhantomNomad extends CardImpl {
public PhantomNomad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomTiger.java b/Mage.Sets/src/mage/cards/p/PhantomTiger.java
index ae28d07554a..85efb0cd597 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomTiger.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomTiger.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
/**
* @author Temba
*/
-public class PhantomTiger extends CardImpl {
+public final class PhantomTiger extends CardImpl {
public PhantomTiger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomWarrior.java b/Mage.Sets/src/mage/cards/p/PhantomWarrior.java
index b58b4200290..f18aa6872c8 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomWarrior.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomWarrior.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PhantomWarrior extends CardImpl {
+public final class PhantomWarrior extends CardImpl {
public PhantomWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomWhelp.java b/Mage.Sets/src/mage/cards/p/PhantomWhelp.java
index ace645b93e0..29fcc544337 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomWhelp.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomWhelp.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author fireshoes & L_J
*/
-public class PhantomWhelp extends CardImpl {
+public final class PhantomWhelp extends CardImpl {
public PhantomWhelp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomWings.java b/Mage.Sets/src/mage/cards/p/PhantomWings.java
index 6b9e1609f49..295e9fb811d 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomWings.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomWings.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PhantomWings extends CardImpl {
+public final class PhantomWings extends CardImpl {
public PhantomWings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PhantomWurm.java b/Mage.Sets/src/mage/cards/p/PhantomWurm.java
index d38299de701..819aac7af60 100644
--- a/Mage.Sets/src/mage/cards/p/PhantomWurm.java
+++ b/Mage.Sets/src/mage/cards/p/PhantomWurm.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class PhantomWurm extends CardImpl {
+public final class PhantomWurm extends CardImpl {
public PhantomWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PharagaxGiant.java b/Mage.Sets/src/mage/cards/p/PharagaxGiant.java
index 093ac21ebc2..11072304b9f 100644
--- a/Mage.Sets/src/mage/cards/p/PharagaxGiant.java
+++ b/Mage.Sets/src/mage/cards/p/PharagaxGiant.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class PharagaxGiant extends CardImpl {
+public final class PharagaxGiant extends CardImpl {
public PharagaxGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PharikaGodOfAffliction.java b/Mage.Sets/src/mage/cards/p/PharikaGodOfAffliction.java
index 1314189669f..f5f31bd4fe4 100644
--- a/Mage.Sets/src/mage/cards/p/PharikaGodOfAffliction.java
+++ b/Mage.Sets/src/mage/cards/p/PharikaGodOfAffliction.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class PharikaGodOfAffliction extends CardImpl {
+public final class PharikaGodOfAffliction extends CardImpl {
public PharikaGodOfAffliction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PharikasChosen.java b/Mage.Sets/src/mage/cards/p/PharikasChosen.java
index 9b0f0090949..cce41a828e5 100644
--- a/Mage.Sets/src/mage/cards/p/PharikasChosen.java
+++ b/Mage.Sets/src/mage/cards/p/PharikasChosen.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class PharikasChosen extends CardImpl {
+public final class PharikasChosen extends CardImpl {
public PharikasChosen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PharikasCure.java b/Mage.Sets/src/mage/cards/p/PharikasCure.java
index 6abd1313060..230dd341642 100644
--- a/Mage.Sets/src/mage/cards/p/PharikasCure.java
+++ b/Mage.Sets/src/mage/cards/p/PharikasCure.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PharikasCure extends CardImpl {
+public final class PharikasCure extends CardImpl {
public PharikasCure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PharikasDisciple.java b/Mage.Sets/src/mage/cards/p/PharikasDisciple.java
index 94f8fc65ed3..ecd0deab4ee 100644
--- a/Mage.Sets/src/mage/cards/p/PharikasDisciple.java
+++ b/Mage.Sets/src/mage/cards/p/PharikasDisciple.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class PharikasDisciple extends CardImpl {
+public final class PharikasDisciple extends CardImpl {
public PharikasDisciple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PharikasMender.java b/Mage.Sets/src/mage/cards/p/PharikasMender.java
index b16989d41f6..6d4e36c5917 100644
--- a/Mage.Sets/src/mage/cards/p/PharikasMender.java
+++ b/Mage.Sets/src/mage/cards/p/PharikasMender.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class PharikasMender extends CardImpl {
+public final class PharikasMender extends CardImpl {
private static final FilterCard filter = new FilterCard("creature or enchantment card from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/p/Phelddagrif.java b/Mage.Sets/src/mage/cards/p/Phelddagrif.java
index cfeec77f40b..4346ddaa712 100644
--- a/Mage.Sets/src/mage/cards/p/Phelddagrif.java
+++ b/Mage.Sets/src/mage/cards/p/Phelddagrif.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class Phelddagrif extends CardImpl {
+public final class Phelddagrif extends CardImpl {
public Phelddagrif(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java b/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java
index 22e932cbf96..85f563abb7c 100644
--- a/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java
+++ b/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class PhenaxGodOfDeception extends CardImpl {
+public final class PhenaxGodOfDeception extends CardImpl {
public PhenaxGodOfDeception(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PheresBandCentaurs.java b/Mage.Sets/src/mage/cards/p/PheresBandCentaurs.java
index a53bdbc08e9..39242b75650 100644
--- a/Mage.Sets/src/mage/cards/p/PheresBandCentaurs.java
+++ b/Mage.Sets/src/mage/cards/p/PheresBandCentaurs.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class PheresBandCentaurs extends CardImpl {
+public final class PheresBandCentaurs extends CardImpl {
public PheresBandCentaurs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PheresBandRaiders.java b/Mage.Sets/src/mage/cards/p/PheresBandRaiders.java
index d01fa3ca098..939b2de5083 100644
--- a/Mage.Sets/src/mage/cards/p/PheresBandRaiders.java
+++ b/Mage.Sets/src/mage/cards/p/PheresBandRaiders.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.CentaurEnchantmentCreatureToken;
*
* @author LevelX2
*/
-public class PheresBandRaiders extends CardImpl {
+public final class PheresBandRaiders extends CardImpl {
public PheresBandRaiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PheresBandThunderhoof.java b/Mage.Sets/src/mage/cards/p/PheresBandThunderhoof.java
index 7b819cd8fc9..3400eedb204 100644
--- a/Mage.Sets/src/mage/cards/p/PheresBandThunderhoof.java
+++ b/Mage.Sets/src/mage/cards/p/PheresBandThunderhoof.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class PheresBandThunderhoof extends CardImpl {
+public final class PheresBandThunderhoof extends CardImpl {
public PheresBandThunderhoof(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PheresBandTromper.java b/Mage.Sets/src/mage/cards/p/PheresBandTromper.java
index a662f67e2df..b3335798bdc 100644
--- a/Mage.Sets/src/mage/cards/p/PheresBandTromper.java
+++ b/Mage.Sets/src/mage/cards/p/PheresBandTromper.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class PheresBandTromper extends CardImpl {
+public final class PheresBandTromper extends CardImpl {
public PheresBandTromper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PheresBandWarchief.java b/Mage.Sets/src/mage/cards/p/PheresBandWarchief.java
index 13c4209efb4..6f54f66ed4a 100644
--- a/Mage.Sets/src/mage/cards/p/PheresBandWarchief.java
+++ b/Mage.Sets/src/mage/cards/p/PheresBandWarchief.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class PheresBandWarchief extends CardImpl {
+public final class PheresBandWarchief extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other Centaur creatures you control");
diff --git a/Mage.Sets/src/mage/cards/p/PhobianPhantasm.java b/Mage.Sets/src/mage/cards/p/PhobianPhantasm.java
index 8cc584c737a..d9bf9036ca8 100644
--- a/Mage.Sets/src/mage/cards/p/PhobianPhantasm.java
+++ b/Mage.Sets/src/mage/cards/p/PhobianPhantasm.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class PhobianPhantasm extends CardImpl {
+public final class PhobianPhantasm extends CardImpl {
public PhobianPhantasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhosphorescentFeast.java b/Mage.Sets/src/mage/cards/p/PhosphorescentFeast.java
index fc421b28974..bc6e53bdc3f 100644
--- a/Mage.Sets/src/mage/cards/p/PhosphorescentFeast.java
+++ b/Mage.Sets/src/mage/cards/p/PhosphorescentFeast.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
* @author jeffwadsworth
*
*/
-public class PhosphorescentFeast extends CardImpl {
+public final class PhosphorescentFeast extends CardImpl {
public PhosphorescentFeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/Phthisis.java b/Mage.Sets/src/mage/cards/p/Phthisis.java
index c60f351223d..80c9694934e 100644
--- a/Mage.Sets/src/mage/cards/p/Phthisis.java
+++ b/Mage.Sets/src/mage/cards/p/Phthisis.java
@@ -46,7 +46,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class Phthisis extends CardImpl {
+public final class Phthisis extends CardImpl {
public Phthisis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhylacteryLich.java b/Mage.Sets/src/mage/cards/p/PhylacteryLich.java
index 259c524ee80..9b48b2614c8 100644
--- a/Mage.Sets/src/mage/cards/p/PhylacteryLich.java
+++ b/Mage.Sets/src/mage/cards/p/PhylacteryLich.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PhylacteryLich extends CardImpl {
+public final class PhylacteryLich extends CardImpl {
public PhylacteryLich(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/Phyresis.java b/Mage.Sets/src/mage/cards/p/Phyresis.java
index 25e1b179ac2..0481c144b57 100644
--- a/Mage.Sets/src/mage/cards/p/Phyresis.java
+++ b/Mage.Sets/src/mage/cards/p/Phyresis.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Phyresis extends CardImpl {
+public final class Phyresis extends CardImpl {
public Phyresis (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianAltar.java b/Mage.Sets/src/mage/cards/p/PhyrexianAltar.java
index 636149a8dac..bd15f560613 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianAltar.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianAltar.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class PhyrexianAltar extends CardImpl {
+public final class PhyrexianAltar extends CardImpl {
public PhyrexianAltar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianArena.java b/Mage.Sets/src/mage/cards/p/PhyrexianArena.java
index 873193cc400..1e5cd241ffe 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianArena.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianArena.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author Loki
*/
-public class PhyrexianArena extends CardImpl {
+public final class PhyrexianArena extends CardImpl {
public PhyrexianArena(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianBattleflies.java b/Mage.Sets/src/mage/cards/p/PhyrexianBattleflies.java
index bc958e550dd..399fedacebf 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianBattleflies.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianBattleflies.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author FenrisulfrX
*/
-public class PhyrexianBattleflies extends CardImpl {
+public final class PhyrexianBattleflies extends CardImpl {
public PhyrexianBattleflies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianBloodstock.java b/Mage.Sets/src/mage/cards/p/PhyrexianBloodstock.java
index 02bb0646d80..6bd1d7c50fb 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianBloodstock.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianBloodstock.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PhyrexianBloodstock extends CardImpl {
+public final class PhyrexianBloodstock extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creature");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianBoon.java b/Mage.Sets/src/mage/cards/p/PhyrexianBoon.java
index d5348966acf..270f42f8651 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianBoon.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianBoon.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class PhyrexianBoon extends CardImpl {
+public final class PhyrexianBoon extends CardImpl {
public PhyrexianBoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianBroodlings.java b/Mage.Sets/src/mage/cards/p/PhyrexianBroodlings.java
index b0779a2afcb..238865df75c 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianBroodlings.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianBroodlings.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class PhyrexianBroodlings extends CardImpl {
+public final class PhyrexianBroodlings extends CardImpl {
public PhyrexianBroodlings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianColossus.java b/Mage.Sets/src/mage/cards/p/PhyrexianColossus.java
index 5302f837af8..066cdc652ad 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianColossus.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianColossus.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author FenrisulfrX
*/
-public class PhyrexianColossus extends CardImpl {
+public final class PhyrexianColossus extends CardImpl {
public PhyrexianColossus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianCrusader.java b/Mage.Sets/src/mage/cards/p/PhyrexianCrusader.java
index 841d677efe9..18abc8f9ae6 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianCrusader.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianCrusader.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Viserion
*/
-public class PhyrexianCrusader extends CardImpl {
+public final class PhyrexianCrusader extends CardImpl {
public PhyrexianCrusader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianDebaser.java b/Mage.Sets/src/mage/cards/p/PhyrexianDebaser.java
index 0ce5bbdc430..1d3893e99e6 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianDebaser.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianDebaser.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class PhyrexianDebaser extends CardImpl {
+public final class PhyrexianDebaser extends CardImpl {
public PhyrexianDebaser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianDefiler.java b/Mage.Sets/src/mage/cards/p/PhyrexianDefiler.java
index 33d804fcbe3..6915528acd3 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianDefiler.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianDefiler.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class PhyrexianDefiler extends CardImpl {
+public final class PhyrexianDefiler extends CardImpl {
public PhyrexianDefiler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianDelver.java b/Mage.Sets/src/mage/cards/p/PhyrexianDelver.java
index 44eb2359ca6..eeff3ebdc5c 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianDelver.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianDelver.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class PhyrexianDelver extends CardImpl {
+public final class PhyrexianDelver extends CardImpl {
public PhyrexianDelver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianDenouncer.java b/Mage.Sets/src/mage/cards/p/PhyrexianDenouncer.java
index bb779836858..50df5bef300 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianDenouncer.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianDenouncer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class PhyrexianDenouncer extends CardImpl {
+public final class PhyrexianDenouncer extends CardImpl {
public PhyrexianDenouncer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianDevourer.java b/Mage.Sets/src/mage/cards/p/PhyrexianDevourer.java
index 4eff6c47d89..c868e257f06 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianDevourer.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianDevourer.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class PhyrexianDevourer extends CardImpl {
+public final class PhyrexianDevourer extends CardImpl {
public PhyrexianDevourer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianDigester.java b/Mage.Sets/src/mage/cards/p/PhyrexianDigester.java
index 9712b550d03..af793ab4cc6 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianDigester.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianDigester.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PhyrexianDigester extends CardImpl {
+public final class PhyrexianDigester extends CardImpl {
public PhyrexianDigester (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianDreadnought.java b/Mage.Sets/src/mage/cards/p/PhyrexianDreadnought.java
index 9a809a46324..e7c16d19c42 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianDreadnought.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianDreadnought.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class PhyrexianDreadnought extends CardImpl {
+public final class PhyrexianDreadnought extends CardImpl {
public PhyrexianDreadnought(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianDriver.java b/Mage.Sets/src/mage/cards/p/PhyrexianDriver.java
index 275a13b86f1..c96df133603 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianDriver.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianDriver.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Backfir3
*/
-public class PhyrexianDriver extends CardImpl {
+public final class PhyrexianDriver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Mercenary creatures");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianEtchings.java b/Mage.Sets/src/mage/cards/p/PhyrexianEtchings.java
index 7c1aa549500..50c5b6ac2b8 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianEtchings.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianEtchings.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author L_J
*/
-public class PhyrexianEtchings extends CardImpl {
+public final class PhyrexianEtchings extends CardImpl {
public PhyrexianEtchings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianFurnace.java b/Mage.Sets/src/mage/cards/p/PhyrexianFurnace.java
index 7ce2ddbdd0f..a92a70e89c1 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianFurnace.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianFurnace.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class PhyrexianFurnace extends CardImpl {
+public final class PhyrexianFurnace extends CardImpl {
public PhyrexianFurnace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianGargantua.java b/Mage.Sets/src/mage/cards/p/PhyrexianGargantua.java
index 62dc597b256..bd8be4005ae 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianGargantua.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianGargantua.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PhyrexianGargantua extends CardImpl {
+public final class PhyrexianGargantua extends CardImpl {
public PhyrexianGargantua(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianGhoul.java b/Mage.Sets/src/mage/cards/p/PhyrexianGhoul.java
index 6f48caab975..a871721c845 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianGhoul.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianGhoul.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class PhyrexianGhoul extends CardImpl {
+public final class PhyrexianGhoul extends CardImpl {
public PhyrexianGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianGremlins.java b/Mage.Sets/src/mage/cards/p/PhyrexianGremlins.java
index 47a3a01c0ba..b5e827ce1b3 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianGremlins.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianGremlins.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LoneFox
*/
-public class PhyrexianGremlins extends CardImpl {
+public final class PhyrexianGremlins extends CardImpl {
public PhyrexianGremlins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianGrimoire.java b/Mage.Sets/src/mage/cards/p/PhyrexianGrimoire.java
index bc9f1e3f85e..4ba4e09e9cd 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianGrimoire.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianGrimoire.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class PhyrexianGrimoire extends CardImpl {
+public final class PhyrexianGrimoire extends CardImpl {
public PhyrexianGrimoire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianHulk.java b/Mage.Sets/src/mage/cards/p/PhyrexianHulk.java
index ced45b68eeb..e1661791250 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianHulk.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianHulk.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PhyrexianHulk extends CardImpl {
+public final class PhyrexianHulk extends CardImpl {
public PhyrexianHulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianHydra.java b/Mage.Sets/src/mage/cards/p/PhyrexianHydra.java
index 449a7716ee8..8bb5170cf5e 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianHydra.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianHydra.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PhyrexianHydra extends CardImpl {
+public final class PhyrexianHydra extends CardImpl {
public PhyrexianHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianInfiltrator.java b/Mage.Sets/src/mage/cards/p/PhyrexianInfiltrator.java
index 5e23a3e2fd2..9d318642023 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianInfiltrator.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PhyrexianInfiltrator extends CardImpl {
+public final class PhyrexianInfiltrator extends CardImpl {
public PhyrexianInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianIngester.java b/Mage.Sets/src/mage/cards/p/PhyrexianIngester.java
index b3b12c1c5e8..de33e96fa5b 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianIngester.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianIngester.java
@@ -57,7 +57,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class PhyrexianIngester extends CardImpl {
+public final class PhyrexianIngester extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianIronfoot.java b/Mage.Sets/src/mage/cards/p/PhyrexianIronfoot.java
index 0f13021742b..a23ada3d7d8 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianIronfoot.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianIronfoot.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class PhyrexianIronfoot extends CardImpl {
+public final class PhyrexianIronfoot extends CardImpl {
public PhyrexianIronfoot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianJuggernaut.java b/Mage.Sets/src/mage/cards/p/PhyrexianJuggernaut.java
index 33ca45b666d..c44da4f91ac 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianJuggernaut.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianJuggernaut.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PhyrexianJuggernaut extends CardImpl {
+public final class PhyrexianJuggernaut extends CardImpl {
public PhyrexianJuggernaut (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianLens.java b/Mage.Sets/src/mage/cards/p/PhyrexianLens.java
index 8f3039698c0..81b27a473c5 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianLens.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianLens.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class PhyrexianLens extends CardImpl {
+public final class PhyrexianLens extends CardImpl {
public PhyrexianLens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianMarauder.java b/Mage.Sets/src/mage/cards/p/PhyrexianMarauder.java
index cf70ee64128..0b0aee8463d 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianMarauder.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianMarauder.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class PhyrexianMarauder extends CardImpl {
+public final class PhyrexianMarauder extends CardImpl {
public PhyrexianMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{X}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianMetamorph.java b/Mage.Sets/src/mage/cards/p/PhyrexianMetamorph.java
index 58aff91817f..1653f670bdf 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianMetamorph.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianMetamorph.java
@@ -51,7 +51,7 @@ import mage.util.functions.ApplyToPermanent;
*
* @author Loki
*/
-public class PhyrexianMetamorph extends CardImpl {
+public final class PhyrexianMetamorph extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianMonitor.java b/Mage.Sets/src/mage/cards/p/PhyrexianMonitor.java
index 3fb7d8ecce7..7d5ffbb9e20 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianMonitor.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianMonitor.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class PhyrexianMonitor extends CardImpl {
+public final class PhyrexianMonitor extends CardImpl {
public PhyrexianMonitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianNegator.java b/Mage.Sets/src/mage/cards/p/PhyrexianNegator.java
index b673200c02a..1e2a70b0bfe 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianNegator.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianNegator.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class PhyrexianNegator extends CardImpl {
+public final class PhyrexianNegator extends CardImpl {
public PhyrexianNegator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianObliterator.java b/Mage.Sets/src/mage/cards/p/PhyrexianObliterator.java
index eeee35a9d0d..621a7cd67a8 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianObliterator.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianObliterator.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class PhyrexianObliterator extends CardImpl {
+public final class PhyrexianObliterator extends CardImpl {
public PhyrexianObliterator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianPlaguelord.java b/Mage.Sets/src/mage/cards/p/PhyrexianPlaguelord.java
index 2cb161bb207..43a2e22b74e 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianPlaguelord.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianPlaguelord.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class PhyrexianPlaguelord extends CardImpl {
+public final class PhyrexianPlaguelord extends CardImpl {
public PhyrexianPlaguelord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianProcessor.java b/Mage.Sets/src/mage/cards/p/PhyrexianProcessor.java
index 862e1416a89..2015d5fd982 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianProcessor.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianProcessor.java
@@ -49,7 +49,7 @@ import mage.util.CardUtil;
*
* @author FenrisulfrX
*/
-public class PhyrexianProcessor extends CardImpl {
+public final class PhyrexianProcessor extends CardImpl {
public PhyrexianProcessor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianProwler.java b/Mage.Sets/src/mage/cards/p/PhyrexianProwler.java
index 742414cab84..cea8c6976b3 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianProwler.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianProwler.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class PhyrexianProwler extends CardImpl {
+public final class PhyrexianProwler extends CardImpl {
public PhyrexianProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianPurge.java b/Mage.Sets/src/mage/cards/p/PhyrexianPurge.java
index 1a69e274c63..89e0e87b862 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianPurge.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianPurge.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 - Derek Monturo
*/
-public class PhyrexianPurge extends CardImpl {
+public final class PhyrexianPurge extends CardImpl {
public PhyrexianPurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianRager.java b/Mage.Sets/src/mage/cards/p/PhyrexianRager.java
index 7d5f7fe750d..7c32559091e 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianRager.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianRager.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PhyrexianRager extends CardImpl {
+public final class PhyrexianRager extends CardImpl {
public PhyrexianRager (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianReaper.java b/Mage.Sets/src/mage/cards/p/PhyrexianReaper.java
index 3042edd2f31..9d2923bf465 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianReaper.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianReaper.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Galatolol
*/
-public class PhyrexianReaper extends CardImpl {
+public final class PhyrexianReaper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianRebirth.java b/Mage.Sets/src/mage/cards/p/PhyrexianRebirth.java
index 2a6837d0e78..1c3e91d88c4 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianRebirth.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianRebirth.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.PhyrexianRebirthHorrorToken;
*
* @author ayratn
*/
-public class PhyrexianRebirth extends CardImpl {
+public final class PhyrexianRebirth extends CardImpl {
public PhyrexianRebirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianReclamation.java b/Mage.Sets/src/mage/cards/p/PhyrexianReclamation.java
index f5d311a8470..3b758d490a5 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianReclamation.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianReclamation.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class PhyrexianReclamation extends CardImpl {
+public final class PhyrexianReclamation extends CardImpl {
public PhyrexianReclamation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianRevoker.java b/Mage.Sets/src/mage/cards/p/PhyrexianRevoker.java
index 28d20f8bcd0..a466dcd4acb 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianRevoker.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianRevoker.java
@@ -50,7 +50,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PhyrexianRevoker extends CardImpl {
+public final class PhyrexianRevoker extends CardImpl {
public PhyrexianRevoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianScriptures.java b/Mage.Sets/src/mage/cards/p/PhyrexianScriptures.java
index c6c9ea787a3..d103ebddf65 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianScriptures.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianScriptures.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class PhyrexianScriptures extends CardImpl {
+public final class PhyrexianScriptures extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact creatures");
private static final FilterCard filter2 = new FilterCard("opponents' cards");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianScuta.java b/Mage.Sets/src/mage/cards/p/PhyrexianScuta.java
index bd95e5b0d1e..ad56193ae1c 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianScuta.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianScuta.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
* @author LoneFox
*/
-public class PhyrexianScuta extends CardImpl {
+public final class PhyrexianScuta extends CardImpl {
public PhyrexianScuta(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianSlayer.java b/Mage.Sets/src/mage/cards/p/PhyrexianSlayer.java
index d83c9e7a4e1..493a24f224a 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianSlayer.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianSlayer.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Galatolol
*/
-public class PhyrexianSlayer extends CardImpl {
+public final class PhyrexianSlayer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creature");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianSnowcrusher.java b/Mage.Sets/src/mage/cards/p/PhyrexianSnowcrusher.java
index c3d6aaffb22..85e3ae5c173 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianSnowcrusher.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianSnowcrusher.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class PhyrexianSnowcrusher extends CardImpl {
+public final class PhyrexianSnowcrusher extends CardImpl {
public PhyrexianSnowcrusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianSoulgorger.java b/Mage.Sets/src/mage/cards/p/PhyrexianSoulgorger.java
index 5bcb2fe753d..45adb48bebf 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianSoulgorger.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianSoulgorger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class PhyrexianSoulgorger extends CardImpl {
+public final class PhyrexianSoulgorger extends CardImpl {
public PhyrexianSoulgorger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianSwarmlord.java b/Mage.Sets/src/mage/cards/p/PhyrexianSwarmlord.java
index 0bcf51fe43a..390cc77f2b4 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianSwarmlord.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianSwarmlord.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.InsectInfectToken;
*
* @author North
*/
-public class PhyrexianSwarmlord extends CardImpl {
+public final class PhyrexianSwarmlord extends CardImpl {
public PhyrexianSwarmlord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianTotem.java b/Mage.Sets/src/mage/cards/p/PhyrexianTotem.java
index d466d963fb8..48c8b36e49b 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianTotem.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianTotem.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author FenrisulfrX
*/
-public class PhyrexianTotem extends CardImpl {
+public final class PhyrexianTotem extends CardImpl {
public PhyrexianTotem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianTower.java b/Mage.Sets/src/mage/cards/p/PhyrexianTower.java
index b4585ceb378..9e564b7935d 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianTower.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianTower.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class PhyrexianTower extends CardImpl {
+public final class PhyrexianTower extends CardImpl {
public PhyrexianTower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianTribute.java b/Mage.Sets/src/mage/cards/p/PhyrexianTribute.java
index 0d925bc5707..c752bd15be1 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianTribute.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianTribute.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author nigelzor
*/
-public class PhyrexianTribute extends CardImpl {
+public final class PhyrexianTribute extends CardImpl {
public PhyrexianTribute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianTyranny.java b/Mage.Sets/src/mage/cards/p/PhyrexianTyranny.java
index 4816a99a9e5..a86af27d578 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianTyranny.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianTyranny.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class PhyrexianTyranny extends CardImpl {
+public final class PhyrexianTyranny extends CardImpl {
public PhyrexianTyranny(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianUnlife.java b/Mage.Sets/src/mage/cards/p/PhyrexianUnlife.java
index 30b9e197887..8bfdb179ce8 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianUnlife.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianUnlife.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class PhyrexianUnlife extends CardImpl {
+public final class PhyrexianUnlife extends CardImpl {
public PhyrexianUnlife(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianVatmother.java b/Mage.Sets/src/mage/cards/p/PhyrexianVatmother.java
index 9e19e525de3..003bf4e6ab8 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianVatmother.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianVatmother.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Viserion
*/
-public class PhyrexianVatmother extends CardImpl {
+public final class PhyrexianVatmother extends CardImpl {
public PhyrexianVatmother (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianVault.java b/Mage.Sets/src/mage/cards/p/PhyrexianVault.java
index 2323d206ec5..1a0bc2f3aae 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianVault.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianVault.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class PhyrexianVault extends CardImpl {
+public final class PhyrexianVault extends CardImpl {
public PhyrexianVault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianWalker.java b/Mage.Sets/src/mage/cards/p/PhyrexianWalker.java
index 4b39cbb3e1d..828ea55f340 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianWalker.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianWalker.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PhyrexianWalker extends CardImpl {
+public final class PhyrexianWalker extends CardImpl {
public PhyrexianWalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{0}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianWarBeast.java b/Mage.Sets/src/mage/cards/p/PhyrexianWarBeast.java
index 2bf1db8d0a3..240befc05c7 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexianWarBeast.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexianWarBeast.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class PhyrexianWarBeast extends CardImpl {
+public final class PhyrexianWarBeast extends CardImpl {
public PhyrexianWarBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PhyrexiasCore.java b/Mage.Sets/src/mage/cards/p/PhyrexiasCore.java
index 9030c93490b..7f3c664e219 100644
--- a/Mage.Sets/src/mage/cards/p/PhyrexiasCore.java
+++ b/Mage.Sets/src/mage/cards/p/PhyrexiasCore.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class PhyrexiasCore extends CardImpl {
+public final class PhyrexiasCore extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/p/Phytoburst.java b/Mage.Sets/src/mage/cards/p/Phytoburst.java
index 37b75f2fe0a..975ee8b2a87 100644
--- a/Mage.Sets/src/mage/cards/p/Phytoburst.java
+++ b/Mage.Sets/src/mage/cards/p/Phytoburst.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
-public class Phytoburst extends CardImpl {
+public final class Phytoburst extends CardImpl {
public Phytoburst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/Phytohydra.java b/Mage.Sets/src/mage/cards/p/Phytohydra.java
index 3e0f7a45e31..10debdf594e 100644
--- a/Mage.Sets/src/mage/cards/p/Phytohydra.java
+++ b/Mage.Sets/src/mage/cards/p/Phytohydra.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class Phytohydra extends CardImpl {
+public final class Phytohydra extends CardImpl {
public Phytohydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/Phytotitan.java b/Mage.Sets/src/mage/cards/p/Phytotitan.java
index fe71c86c6f0..6e35d6793d2 100644
--- a/Mage.Sets/src/mage/cards/p/Phytotitan.java
+++ b/Mage.Sets/src/mage/cards/p/Phytotitan.java
@@ -47,7 +47,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class Phytotitan extends CardImpl {
+public final class Phytotitan extends CardImpl {
public Phytotitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PiaAndKiranNalaar.java b/Mage.Sets/src/mage/cards/p/PiaAndKiranNalaar.java
index 6acc4d6ba12..dd49fe29915 100644
--- a/Mage.Sets/src/mage/cards/p/PiaAndKiranNalaar.java
+++ b/Mage.Sets/src/mage/cards/p/PiaAndKiranNalaar.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class PiaAndKiranNalaar extends CardImpl {
+public final class PiaAndKiranNalaar extends CardImpl {
public PiaAndKiranNalaar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PiaNalaar.java b/Mage.Sets/src/mage/cards/p/PiaNalaar.java
index ce681598bda..7cce606f66e 100644
--- a/Mage.Sets/src/mage/cards/p/PiaNalaar.java
+++ b/Mage.Sets/src/mage/cards/p/PiaNalaar.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PiaNalaar extends CardImpl {
+public final class PiaNalaar extends CardImpl {
public PiaNalaar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PiannaNomadCaptain.java b/Mage.Sets/src/mage/cards/p/PiannaNomadCaptain.java
index eb775493d17..b60ca6ff6ef 100644
--- a/Mage.Sets/src/mage/cards/p/PiannaNomadCaptain.java
+++ b/Mage.Sets/src/mage/cards/p/PiannaNomadCaptain.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AttackingPredicate;
*
* @author cbt33
*/
-public class PiannaNomadCaptain extends CardImpl {
+public final class PiannaNomadCaptain extends CardImpl {
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creatures");
diff --git a/Mage.Sets/src/mage/cards/p/PiasRevolution.java b/Mage.Sets/src/mage/cards/p/PiasRevolution.java
index f8f9bdf085d..a0df0701af8 100644
--- a/Mage.Sets/src/mage/cards/p/PiasRevolution.java
+++ b/Mage.Sets/src/mage/cards/p/PiasRevolution.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author Styxo
*/
-public class PiasRevolution extends CardImpl {
+public final class PiasRevolution extends CardImpl {
public PiasRevolution(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PickTheBrain.java b/Mage.Sets/src/mage/cards/p/PickTheBrain.java
index 4ad0e4d5bd6..d13fb105c57 100644
--- a/Mage.Sets/src/mage/cards/p/PickTheBrain.java
+++ b/Mage.Sets/src/mage/cards/p/PickTheBrain.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class PickTheBrain extends CardImpl {
+public final class PickTheBrain extends CardImpl {
public PickTheBrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PiecesOfThePuzzle.java b/Mage.Sets/src/mage/cards/p/PiecesOfThePuzzle.java
index 6378429d9d8..510a0bf1901 100644
--- a/Mage.Sets/src/mage/cards/p/PiecesOfThePuzzle.java
+++ b/Mage.Sets/src/mage/cards/p/PiecesOfThePuzzle.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class PiecesOfThePuzzle extends CardImpl {
+public final class PiecesOfThePuzzle extends CardImpl {
private static final FilterCard FILTER = new FilterCard("up to two instant and/or sorcery cards");
diff --git a/Mage.Sets/src/mage/cards/p/PierceStrider.java b/Mage.Sets/src/mage/cards/p/PierceStrider.java
index a94344e257a..d47b2c6a503 100644
--- a/Mage.Sets/src/mage/cards/p/PierceStrider.java
+++ b/Mage.Sets/src/mage/cards/p/PierceStrider.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class PierceStrider extends CardImpl {
+public final class PierceStrider extends CardImpl {
public PierceStrider (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/p/PierceTheSky.java b/Mage.Sets/src/mage/cards/p/PierceTheSky.java
index 81cd51297c3..a76c129517e 100644
--- a/Mage.Sets/src/mage/cards/p/PierceTheSky.java
+++ b/Mage.Sets/src/mage/cards/p/PierceTheSky.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class PierceTheSky extends CardImpl {
+public final class PierceTheSky extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/p/Piety.java b/Mage.Sets/src/mage/cards/p/Piety.java
index 3b3ffb4bcfa..7f8f9352c8d 100644
--- a/Mage.Sets/src/mage/cards/p/Piety.java
+++ b/Mage.Sets/src/mage/cards/p/Piety.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterBlockingCreature;
*
* @author MarcoMarin
*/
-public class Piety extends CardImpl {
+public final class Piety extends CardImpl {
static final FilterBlockingCreature filter = new FilterBlockingCreature();
diff --git a/Mage.Sets/src/mage/cards/p/PietyCharm.java b/Mage.Sets/src/mage/cards/p/PietyCharm.java
index 1fb1053e095..4bd7f18996a 100644
--- a/Mage.Sets/src/mage/cards/p/PietyCharm.java
+++ b/Mage.Sets/src/mage/cards/p/PietyCharm.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PietyCharm extends CardImpl {
+public final class PietyCharm extends CardImpl {
private static final FilterPermanent filter1 = new FilterPermanent("Aura attached to a creature");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Soldier creature");
diff --git a/Mage.Sets/src/mage/cards/p/Pikemen.java b/Mage.Sets/src/mage/cards/p/Pikemen.java
index e650c47a0f4..5d592be0ca5 100644
--- a/Mage.Sets/src/mage/cards/p/Pikemen.java
+++ b/Mage.Sets/src/mage/cards/p/Pikemen.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class Pikemen extends CardImpl {
+public final class Pikemen extends CardImpl {
public Pikemen (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PilferedPlans.java b/Mage.Sets/src/mage/cards/p/PilferedPlans.java
index 2d6c085a55d..9c7f6a6ffda 100644
--- a/Mage.Sets/src/mage/cards/p/PilferedPlans.java
+++ b/Mage.Sets/src/mage/cards/p/PilferedPlans.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class PilferedPlans extends CardImpl {
+public final class PilferedPlans extends CardImpl {
public PilferedPlans(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PilgrimOfJustice.java b/Mage.Sets/src/mage/cards/p/PilgrimOfJustice.java
index 6bca38ea514..d8826aa434d 100644
--- a/Mage.Sets/src/mage/cards/p/PilgrimOfJustice.java
+++ b/Mage.Sets/src/mage/cards/p/PilgrimOfJustice.java
@@ -53,7 +53,7 @@ import mage.target.TargetSource;
*
* @author cbt33, Plopman (Circle of Protection: Red)
*/
-public class PilgrimOfJustice extends CardImpl {
+public final class PilgrimOfJustice extends CardImpl {
public PilgrimOfJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PilgrimOfTheFires.java b/Mage.Sets/src/mage/cards/p/PilgrimOfTheFires.java
index 5317cc03f1b..f03ba81de90 100644
--- a/Mage.Sets/src/mage/cards/p/PilgrimOfTheFires.java
+++ b/Mage.Sets/src/mage/cards/p/PilgrimOfTheFires.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class PilgrimOfTheFires extends CardImpl {
+public final class PilgrimOfTheFires extends CardImpl {
public PilgrimOfTheFires(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/p/PilgrimOfVirtue.java b/Mage.Sets/src/mage/cards/p/PilgrimOfVirtue.java
index 5a0efa8d5a3..a50707eaf8f 100644
--- a/Mage.Sets/src/mage/cards/p/PilgrimOfVirtue.java
+++ b/Mage.Sets/src/mage/cards/p/PilgrimOfVirtue.java
@@ -53,7 +53,7 @@ import mage.target.TargetSource;
*
* @author cbt33, Plopman (Circle of Protection: Red)
*/
-public class PilgrimOfVirtue extends CardImpl {
+public final class PilgrimOfVirtue extends CardImpl {
public PilgrimOfVirtue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PilgrimsEye.java b/Mage.Sets/src/mage/cards/p/PilgrimsEye.java
index 23a024d07e1..710752a484a 100644
--- a/Mage.Sets/src/mage/cards/p/PilgrimsEye.java
+++ b/Mage.Sets/src/mage/cards/p/PilgrimsEye.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class PilgrimsEye extends CardImpl {
+public final class PilgrimsEye extends CardImpl {
private static final FilterCard filter = new FilterCard("basic land card");
static {
@@ -66,7 +66,7 @@ public class PilgrimsEye extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// When Pilgrim's Eye enters the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
}
public PilgrimsEye (final PilgrimsEye card) {
diff --git a/Mage.Sets/src/mage/cards/p/PiliPala.java b/Mage.Sets/src/mage/cards/p/PiliPala.java
index e5e27ae8760..6956c49bd1b 100644
--- a/Mage.Sets/src/mage/cards/p/PiliPala.java
+++ b/Mage.Sets/src/mage/cards/p/PiliPala.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class PiliPala extends CardImpl {
+public final class PiliPala extends CardImpl {
public PiliPala(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/p/Pillage.java b/Mage.Sets/src/mage/cards/p/Pillage.java
index ea6802f729a..a56813c675c 100644
--- a/Mage.Sets/src/mage/cards/p/Pillage.java
+++ b/Mage.Sets/src/mage/cards/p/Pillage.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
* @author jeffwadsworth
*
*/
-public class Pillage extends CardImpl {
+public final class Pillage extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or land");
diff --git a/Mage.Sets/src/mage/cards/p/PillagingHorde.java b/Mage.Sets/src/mage/cards/p/PillagingHorde.java
index bc3044ba419..82eb281d416 100644
--- a/Mage.Sets/src/mage/cards/p/PillagingHorde.java
+++ b/Mage.Sets/src/mage/cards/p/PillagingHorde.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class PillagingHorde extends CardImpl {
+public final class PillagingHorde extends CardImpl {
public PillagingHorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PillarOfFlame.java b/Mage.Sets/src/mage/cards/p/PillarOfFlame.java
index d3e016cd939..3dde06f528f 100644
--- a/Mage.Sets/src/mage/cards/p/PillarOfFlame.java
+++ b/Mage.Sets/src/mage/cards/p/PillarOfFlame.java
@@ -41,7 +41,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author North
*/
-public class PillarOfFlame extends CardImpl {
+public final class PillarOfFlame extends CardImpl {
public PillarOfFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PillarOfLight.java b/Mage.Sets/src/mage/cards/p/PillarOfLight.java
index c3a0b52337f..e83c9b300c9 100644
--- a/Mage.Sets/src/mage/cards/p/PillarOfLight.java
+++ b/Mage.Sets/src/mage/cards/p/PillarOfLight.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PillarOfLight extends CardImpl {
+public final class PillarOfLight extends CardImpl {
static private final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with toughness 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/p/PillarOfOrigins.java b/Mage.Sets/src/mage/cards/p/PillarOfOrigins.java
index 41e0db4dd24..705ca3451e7 100644
--- a/Mage.Sets/src/mage/cards/p/PillarOfOrigins.java
+++ b/Mage.Sets/src/mage/cards/p/PillarOfOrigins.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class PillarOfOrigins extends CardImpl {
+public final class PillarOfOrigins extends CardImpl {
public PillarOfOrigins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PillarOfTheParuns.java b/Mage.Sets/src/mage/cards/p/PillarOfTheParuns.java
index b241fe13d20..879acecfbd5 100644
--- a/Mage.Sets/src/mage/cards/p/PillarOfTheParuns.java
+++ b/Mage.Sets/src/mage/cards/p/PillarOfTheParuns.java
@@ -39,7 +39,7 @@ import mage.filter.StaticFilters;
*
* @author noxx
*/
-public class PillarOfTheParuns extends CardImpl {
+public final class PillarOfTheParuns extends CardImpl {
public PillarOfTheParuns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/p/PillarOfWar.java b/Mage.Sets/src/mage/cards/p/PillarOfWar.java
index 1327761b254..56e50c0c79b 100644
--- a/Mage.Sets/src/mage/cards/p/PillarOfWar.java
+++ b/Mage.Sets/src/mage/cards/p/PillarOfWar.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class PillarOfWar extends CardImpl {
+public final class PillarOfWar extends CardImpl {
public PillarOfWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PillarfieldOx.java b/Mage.Sets/src/mage/cards/p/PillarfieldOx.java
index 1db279c443a..cfa4a74b906 100644
--- a/Mage.Sets/src/mage/cards/p/PillarfieldOx.java
+++ b/Mage.Sets/src/mage/cards/p/PillarfieldOx.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PillarfieldOx extends CardImpl {
+public final class PillarfieldOx extends CardImpl {
public PillarfieldOx (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PilloryOfTheSleepless.java b/Mage.Sets/src/mage/cards/p/PilloryOfTheSleepless.java
index 36baf1e85fc..ac7fbac9120 100644
--- a/Mage.Sets/src/mage/cards/p/PilloryOfTheSleepless.java
+++ b/Mage.Sets/src/mage/cards/p/PilloryOfTheSleepless.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author mluds
*/
-public class PilloryOfTheSleepless extends CardImpl {
+public final class PilloryOfTheSleepless extends CardImpl {
public PilloryOfTheSleepless(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PinToTheEarth.java b/Mage.Sets/src/mage/cards/p/PinToTheEarth.java
index 2e080dcbdc4..58558c5aa14 100644
--- a/Mage.Sets/src/mage/cards/p/PinToTheEarth.java
+++ b/Mage.Sets/src/mage/cards/p/PinToTheEarth.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PinToTheEarth extends CardImpl {
+public final class PinToTheEarth extends CardImpl {
public PinToTheEarth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PincerSpider.java b/Mage.Sets/src/mage/cards/p/PincerSpider.java
index 9829ca138de..abd5ef6497d 100644
--- a/Mage.Sets/src/mage/cards/p/PincerSpider.java
+++ b/Mage.Sets/src/mage/cards/p/PincerSpider.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author michael.napoleon@gmail.com
*/
-public class PincerSpider extends CardImpl {
+public final class PincerSpider extends CardImpl {
public PincerSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PincherBeetles.java b/Mage.Sets/src/mage/cards/p/PincherBeetles.java
index 868301d756b..26f7348076d 100644
--- a/Mage.Sets/src/mage/cards/p/PincherBeetles.java
+++ b/Mage.Sets/src/mage/cards/p/PincherBeetles.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PincherBeetles extends CardImpl {
+public final class PincherBeetles extends CardImpl {
public PincherBeetles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PineBarrens.java b/Mage.Sets/src/mage/cards/p/PineBarrens.java
index af8a3452dd0..9562f4a3789 100644
--- a/Mage.Sets/src/mage/cards/p/PineBarrens.java
+++ b/Mage.Sets/src/mage/cards/p/PineBarrens.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class PineBarrens extends CardImpl {
+public final class PineBarrens extends CardImpl {
public PineBarrens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/p/PineWalker.java b/Mage.Sets/src/mage/cards/p/PineWalker.java
index 666601ee1ec..0f98ea986de 100644
--- a/Mage.Sets/src/mage/cards/p/PineWalker.java
+++ b/Mage.Sets/src/mage/cards/p/PineWalker.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class PineWalker extends CardImpl {
+public final class PineWalker extends CardImpl {
public PineWalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PinecrestRidge.java b/Mage.Sets/src/mage/cards/p/PinecrestRidge.java
index 1afa82f29b0..67ff189913e 100644
--- a/Mage.Sets/src/mage/cards/p/PinecrestRidge.java
+++ b/Mage.Sets/src/mage/cards/p/PinecrestRidge.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class PinecrestRidge extends CardImpl {
+public final class PinecrestRidge extends CardImpl {
public PinecrestRidge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/p/PinionFeast.java b/Mage.Sets/src/mage/cards/p/PinionFeast.java
index 2b164b98834..3fa7076cfa6 100644
--- a/Mage.Sets/src/mage/cards/p/PinionFeast.java
+++ b/Mage.Sets/src/mage/cards/p/PinionFeast.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PinionFeast extends CardImpl {
+public final class PinionFeast extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/p/PinnacleOfRage.java b/Mage.Sets/src/mage/cards/p/PinnacleOfRage.java
index ab3d468041d..30d6be0a0be 100644
--- a/Mage.Sets/src/mage/cards/p/PinnacleOfRage.java
+++ b/Mage.Sets/src/mage/cards/p/PinnacleOfRage.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class PinnacleOfRage extends CardImpl {
+public final class PinnacleOfRage extends CardImpl {
public PinnacleOfRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PinpointAvalanche.java b/Mage.Sets/src/mage/cards/p/PinpointAvalanche.java
index 73e1bbe4c3c..3f419b53beb 100644
--- a/Mage.Sets/src/mage/cards/p/PinpointAvalanche.java
+++ b/Mage.Sets/src/mage/cards/p/PinpointAvalanche.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PinpointAvalanche extends CardImpl {
+public final class PinpointAvalanche extends CardImpl {
public PinpointAvalanche(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PiousEvangel.java b/Mage.Sets/src/mage/cards/p/PiousEvangel.java
index 4fe5e915f4e..cd8636ec10e 100644
--- a/Mage.Sets/src/mage/cards/p/PiousEvangel.java
+++ b/Mage.Sets/src/mage/cards/p/PiousEvangel.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class PiousEvangel extends CardImpl {
+public final class PiousEvangel extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("{this} or another creature");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("another permanent");
diff --git a/Mage.Sets/src/mage/cards/p/PiousInterdiction.java b/Mage.Sets/src/mage/cards/p/PiousInterdiction.java
index 4f54325717d..e6660d79493 100644
--- a/Mage.Sets/src/mage/cards/p/PiousInterdiction.java
+++ b/Mage.Sets/src/mage/cards/p/PiousInterdiction.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class PiousInterdiction extends CardImpl {
+public final class PiousInterdiction extends CardImpl {
public PiousInterdiction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PiousKitsune.java b/Mage.Sets/src/mage/cards/p/PiousKitsune.java
index d3dcd02851c..23d59ca991e 100644
--- a/Mage.Sets/src/mage/cards/p/PiousKitsune.java
+++ b/Mage.Sets/src/mage/cards/p/PiousKitsune.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class PiousKitsune extends CardImpl {
+public final class PiousKitsune extends CardImpl {
public PiousKitsune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PiousWarrior.java b/Mage.Sets/src/mage/cards/p/PiousWarrior.java
index 73b51b84759..db5818c2228 100644
--- a/Mage.Sets/src/mage/cards/p/PiousWarrior.java
+++ b/Mage.Sets/src/mage/cards/p/PiousWarrior.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Backfir3
*/
-public class PiousWarrior extends CardImpl {
+public final class PiousWarrior extends CardImpl {
public PiousWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PipersMelody.java b/Mage.Sets/src/mage/cards/p/PipersMelody.java
index 634952e3726..ea4d1b8efa6 100644
--- a/Mage.Sets/src/mage/cards/p/PipersMelody.java
+++ b/Mage.Sets/src/mage/cards/p/PipersMelody.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class PipersMelody extends CardImpl {
+public final class PipersMelody extends CardImpl {
public PipersMelody(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PirImaginativeRascal.java b/Mage.Sets/src/mage/cards/p/PirImaginativeRascal.java
new file mode 100644
index 00000000000..a1ad3ba6cf2
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/p/PirImaginativeRascal.java
@@ -0,0 +1,126 @@
+/*
+ * 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.p;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.ReplacementEffectImpl;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+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.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class PirImaginativeRascal extends CardImpl {
+
+ public PirImaginativeRascal(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.HUMAN);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Partner with Toothy, Imaginary Friend (When this creature enters the battlefield, target player may put Toothy into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Toothy, Imaginary Friend", true));
+
+ // If one or more counters would be put on a permanent your team controls, that many plus one of each of those kinds of counters are put on that permanent instead.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PirImaginativeRascalEffect()));
+ }
+
+ public PirImaginativeRascal(final PirImaginativeRascal card) {
+ super(card);
+ }
+
+ @Override
+ public PirImaginativeRascal copy() {
+ return new PirImaginativeRascal(this);
+ }
+}
+
+class PirImaginativeRascalEffect extends ReplacementEffectImpl {
+
+ PirImaginativeRascalEffect() {
+ super(Duration.WhileOnBattlefield, Outcome.Benefit, false);
+ staticText = "If one or more counters would be put on a permanent your team controls, "
+ + "that many plus one of each of those kinds of counters are put on that permanent instead";
+ }
+
+ PirImaginativeRascalEffect(final PirImaginativeRascalEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean replaceEvent(GameEvent event, Ability source, Game game) {
+ int amount = event.getAmount();
+ if (amount >= 1) {
+ event.setAmount(amount + 1);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean checksEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.ADD_COUNTERS;
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ Permanent permanent = game.getPermanent(event.getTargetId());
+ Player player = game.getPlayer(source.getControllerId());
+ if (permanent == null) {
+ permanent = game.getPermanentEntering(event.getTargetId());
+ }
+ return permanent != null && player != null
+ && !player.hasOpponent(permanent.getControllerId(), game);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public PirImaginativeRascalEffect copy() {
+ return new PirImaginativeRascalEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/PiracyCharm.java b/Mage.Sets/src/mage/cards/p/PiracyCharm.java
index d55fa78dfa9..e35fc875869 100644
--- a/Mage.Sets/src/mage/cards/p/PiracyCharm.java
+++ b/Mage.Sets/src/mage/cards/p/PiracyCharm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author dustinconrad
*/
-public class PiracyCharm extends CardImpl {
+public final class PiracyCharm extends CardImpl {
public PiracyCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PiranhaMarsh.java b/Mage.Sets/src/mage/cards/p/PiranhaMarsh.java
index a49d8043ef5..0fb951089e2 100644
--- a/Mage.Sets/src/mage/cards/p/PiranhaMarsh.java
+++ b/Mage.Sets/src/mage/cards/p/PiranhaMarsh.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class PiranhaMarsh extends CardImpl {
+public final class PiranhaMarsh extends CardImpl {
public PiranhaMarsh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/p/PirateShip.java b/Mage.Sets/src/mage/cards/p/PirateShip.java
index 7c0d507060c..c12f214878c 100644
--- a/Mage.Sets/src/mage/cards/p/PirateShip.java
+++ b/Mage.Sets/src/mage/cards/p/PirateShip.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author KholdFuzion
*/
-public class PirateShip extends CardImpl {
+public final class PirateShip extends CardImpl {
public PirateShip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PiratesCutlass.java b/Mage.Sets/src/mage/cards/p/PiratesCutlass.java
index 20e66dda7c2..3f0e5936bcd 100644
--- a/Mage.Sets/src/mage/cards/p/PiratesCutlass.java
+++ b/Mage.Sets/src/mage/cards/p/PiratesCutlass.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class PiratesCutlass extends CardImpl {
+public final class PiratesCutlass extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Pirate you control");
diff --git a/Mage.Sets/src/mage/cards/p/PiratesPillage.java b/Mage.Sets/src/mage/cards/p/PiratesPillage.java
index ef0a5326eca..d024c9f72c8 100644
--- a/Mage.Sets/src/mage/cards/p/PiratesPillage.java
+++ b/Mage.Sets/src/mage/cards/p/PiratesPillage.java
@@ -1,65 +1,65 @@
-/*
- * 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.p;
-
-import java.util.UUID;
-import mage.abilities.costs.common.DiscardCardCost;
-import mage.abilities.effects.common.CreateTokenEffect;
-import mage.abilities.effects.common.DrawCardSourceControllerEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.game.permanent.token.TreasureToken;
-
-/**
- *
- * @author LevelX2
- */
-public class PiratesPillage extends CardImpl {
-
- public PiratesPillage(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
-
- // As an additional cost to cast Pirate's Pillage, discard a card.
- this.getSpellAbility().addCost(new DiscardCardCost(false));
-
- // Draw two cards and create two colorless Treasure artifacts with "{T}, Sacrifice this artifact: Add one mana of any color."
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2));
- this.getSpellAbility().addEffect(new CreateTokenEffect(new TreasureToken(), 2)
- .setText("and create two colorless Treasure artifacts with \"{T}, Sacrifice this artifact: Add one mana of any color"));
- }
-
- public PiratesPillage(final PiratesPillage card) {
- super(card);
- }
-
- @Override
- public PiratesPillage copy() {
- return new PiratesPillage(this);
- }
-}
+/*
+ * 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.p;
+
+import java.util.UUID;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.game.permanent.token.TreasureToken;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class PiratesPillage extends CardImpl {
+
+ public PiratesPillage(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
+
+ // As an additional cost to cast Pirate's Pillage, discard a card.
+ this.getSpellAbility().addCost(new DiscardCardCost(false));
+
+ // Draw two cards and create two colorless Treasure artifacts with "{T}, Sacrifice this artifact: Add one mana of any color."
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2));
+ this.getSpellAbility().addEffect(new CreateTokenEffect(new TreasureToken(), 2)
+ .setText("and create two colorless Treasure artifacts with \"{T}, Sacrifice this artifact: Add one mana of any color"));
+ }
+
+ public PiratesPillage(final PiratesPillage card) {
+ super(card);
+ }
+
+ @Override
+ public PiratesPillage copy() {
+ return new PiratesPillage(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/PiratesPrize.java b/Mage.Sets/src/mage/cards/p/PiratesPrize.java
index 6e04b901388..28888c204d4 100644
--- a/Mage.Sets/src/mage/cards/p/PiratesPrize.java
+++ b/Mage.Sets/src/mage/cards/p/PiratesPrize.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author TheElk801
*/
-public class PiratesPrize extends CardImpl {
+public final class PiratesPrize extends CardImpl {
public PiratesPrize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PirsWhim.java b/Mage.Sets/src/mage/cards/p/PirsWhim.java
new file mode 100644
index 00000000000..023c8a84b0c
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/p/PirsWhim.java
@@ -0,0 +1,115 @@
+/*
+ * 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.p;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.SacrificeEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.cards.CardsImpl;
+import mage.choices.ChooseFriendsAndFoes;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.filter.StaticFilters;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetCardInLibrary;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class PirsWhim extends CardImpl {
+
+ public PirsWhim(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
+
+ // For each player, choose friend or foe. Each friend searches their library for a land card, puts it on the battlefield tapped, then shuffles their library. Each foe sacrifices an artifact or enchantment they control.
+ this.getSpellAbility().addEffect(new PirsWhimEffect());
+ }
+
+ public PirsWhim(final PirsWhim card) {
+ super(card);
+ }
+
+ @Override
+ public PirsWhim copy() {
+ return new PirsWhim(this);
+ }
+}
+
+class PirsWhimEffect extends OneShotEffect {
+
+ PirsWhimEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "For each player, choose friend or foe. "
+ + "Each friend searches their library for a land card, "
+ + "puts it onto the battlefield tapped, then shuffles their library. "
+ + "Each foe sacrifices an artifact or enchantment they control.";
+ }
+
+ PirsWhimEffect(final PirsWhimEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public PirsWhimEffect copy() {
+ return new PirsWhimEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getSourceId());
+ ChooseFriendsAndFoes choice = new ChooseFriendsAndFoes();
+ if (!choice.chooseFriendOrFoe(controller, source, game)) {
+ return false;
+ }
+ for (Player player : choice.getFriends()) {
+ if (player != null) {
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_LAND);
+ if (player.searchLibrary(target, game)) {
+ player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, true, null);
+ player.shuffleLibrary(source, game);
+ }
+ }
+ }
+ for (Player player : choice.getFoes()) {
+ if (player != null) {
+ Effect effect = new SacrificeEffect(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT, 1, "");
+ effect.setTargetPointer(new FixedTarget(player.getId(), game));
+ effect.apply(game, source);
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/PistonSledge.java b/Mage.Sets/src/mage/cards/p/PistonSledge.java
index 4fd1a823e96..c31d85c2d02 100644
--- a/Mage.Sets/src/mage/cards/p/PistonSledge.java
+++ b/Mage.Sets/src/mage/cards/p/PistonSledge.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author Viserion, North
*/
-public class PistonSledge extends CardImpl {
+public final class PistonSledge extends CardImpl {
private static FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/p/PistusStrike.java b/Mage.Sets/src/mage/cards/p/PistusStrike.java
index 53de7207d70..e76723acaf2 100644
--- a/Mage.Sets/src/mage/cards/p/PistusStrike.java
+++ b/Mage.Sets/src/mage/cards/p/PistusStrike.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Viserion
*/
-public class PistusStrike extends CardImpl {
+public final class PistusStrike extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/p/PitFight.java b/Mage.Sets/src/mage/cards/p/PitFight.java
index 68169d33284..48315291449 100644
--- a/Mage.Sets/src/mage/cards/p/PitFight.java
+++ b/Mage.Sets/src/mage/cards/p/PitFight.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PitFight extends CardImpl {
+public final class PitFight extends CardImpl {
public PitFight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/p/PitImp.java b/Mage.Sets/src/mage/cards/p/PitImp.java
index 91669c5b1c8..5a2453ff46e 100644
--- a/Mage.Sets/src/mage/cards/p/PitImp.java
+++ b/Mage.Sets/src/mage/cards/p/PitImp.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class PitImp extends CardImpl {
+public final class PitImp extends CardImpl {
public PitImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PitKeeper.java b/Mage.Sets/src/mage/cards/p/PitKeeper.java
index c898984bbed..5f66522d1ff 100644
--- a/Mage.Sets/src/mage/cards/p/PitKeeper.java
+++ b/Mage.Sets/src/mage/cards/p/PitKeeper.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class PitKeeper extends CardImpl {
+public final class PitKeeper extends CardImpl {
public PitKeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PitRaptor.java b/Mage.Sets/src/mage/cards/p/PitRaptor.java
index 5aaf7565445..59daf523806 100644
--- a/Mage.Sets/src/mage/cards/p/PitRaptor.java
+++ b/Mage.Sets/src/mage/cards/p/PitRaptor.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
*
* @author Backfir3
*/
-public class PitRaptor extends CardImpl {
+public final class PitRaptor extends CardImpl {
public PitRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PitScorpion.java b/Mage.Sets/src/mage/cards/p/PitScorpion.java
index f14e3d3cb08..ec885c9418b 100644
--- a/Mage.Sets/src/mage/cards/p/PitScorpion.java
+++ b/Mage.Sets/src/mage/cards/p/PitScorpion.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class PitScorpion extends CardImpl {
+public final class PitScorpion extends CardImpl {
public PitScorpion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PitSpawn.java b/Mage.Sets/src/mage/cards/p/PitSpawn.java
index f9785e1772d..8fde9222b30 100644
--- a/Mage.Sets/src/mage/cards/p/PitSpawn.java
+++ b/Mage.Sets/src/mage/cards/p/PitSpawn.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author djbrez
*/
-public class PitSpawn extends CardImpl {
+public final class PitSpawn extends CardImpl {
public PitSpawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PitTrap.java b/Mage.Sets/src/mage/cards/p/PitTrap.java
index 6a747888d5e..467b1feb513 100644
--- a/Mage.Sets/src/mage/cards/p/PitTrap.java
+++ b/Mage.Sets/src/mage/cards/p/PitTrap.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author fireshoes
*/
-public class PitTrap extends CardImpl {
+public final class PitTrap extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature without flying");
diff --git a/Mage.Sets/src/mage/cards/p/PitchburnDevils.java b/Mage.Sets/src/mage/cards/p/PitchburnDevils.java
index b7ec0ed3623..e344e7fcf58 100644
--- a/Mage.Sets/src/mage/cards/p/PitchburnDevils.java
+++ b/Mage.Sets/src/mage/cards/p/PitchburnDevils.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class PitchburnDevils extends CardImpl {
+public final class PitchburnDevils extends CardImpl {
public PitchburnDevils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PitchstoneWall.java b/Mage.Sets/src/mage/cards/p/PitchstoneWall.java
index 4b3a7fcb216..ef481a9de51 100644
--- a/Mage.Sets/src/mage/cards/p/PitchstoneWall.java
+++ b/Mage.Sets/src/mage/cards/p/PitchstoneWall.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class PitchstoneWall extends CardImpl {
+public final class PitchstoneWall extends CardImpl {
public PitchstoneWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PitfallTrap.java b/Mage.Sets/src/mage/cards/p/PitfallTrap.java
index 854ab10f997..975fae3c044 100644
--- a/Mage.Sets/src/mage/cards/p/PitfallTrap.java
+++ b/Mage.Sets/src/mage/cards/p/PitfallTrap.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class PitfallTrap extends CardImpl {
+public final class PitfallTrap extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature without flying");
diff --git a/Mage.Sets/src/mage/cards/p/PithDriller.java b/Mage.Sets/src/mage/cards/p/PithDriller.java
index cc363df062c..18966503c9c 100644
--- a/Mage.Sets/src/mage/cards/p/PithDriller.java
+++ b/Mage.Sets/src/mage/cards/p/PithDriller.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class PithDriller extends CardImpl {
+public final class PithDriller extends CardImpl {
public PithDriller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{B/P}");
diff --git a/Mage.Sets/src/mage/cards/p/PithingNeedle.java b/Mage.Sets/src/mage/cards/p/PithingNeedle.java
index ec38113384f..cf07adf9e7e 100644
--- a/Mage.Sets/src/mage/cards/p/PithingNeedle.java
+++ b/Mage.Sets/src/mage/cards/p/PithingNeedle.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent;
*
* @author jeffwadsworth, nox
*/
-public class PithingNeedle extends CardImpl {
+public final class PithingNeedle extends CardImpl {
public PithingNeedle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/p/PitilessHorde.java b/Mage.Sets/src/mage/cards/p/PitilessHorde.java
index 12b0d4477c2..334b5b454b2 100644
--- a/Mage.Sets/src/mage/cards/p/PitilessHorde.java
+++ b/Mage.Sets/src/mage/cards/p/PitilessHorde.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class PitilessHorde extends CardImpl {
+public final class PitilessHorde extends CardImpl {
public PitilessHorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PitilessPlunderer.java b/Mage.Sets/src/mage/cards/p/PitilessPlunderer.java
index a64718ee6d1..18fb3cb9024 100644
--- a/Mage.Sets/src/mage/cards/p/PitilessPlunderer.java
+++ b/Mage.Sets/src/mage/cards/p/PitilessPlunderer.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author LevelX2
*/
-public class PitilessPlunderer extends CardImpl {
+public final class PitilessPlunderer extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/PitilessVizier.java b/Mage.Sets/src/mage/cards/p/PitilessVizier.java
index f333e33f19d..5436afe57dc 100644
--- a/Mage.Sets/src/mage/cards/p/PitilessVizier.java
+++ b/Mage.Sets/src/mage/cards/p/PitilessVizier.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author stravant
*/
-public class PitilessVizier extends CardImpl {
+public final class PitilessVizier extends CardImpl {
public PitilessVizier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PixieQueen.java b/Mage.Sets/src/mage/cards/p/PixieQueen.java
index 77bfdc1a04a..1c343c8b578 100644
--- a/Mage.Sets/src/mage/cards/p/PixieQueen.java
+++ b/Mage.Sets/src/mage/cards/p/PixieQueen.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author hanasu
*/
-public class PixieQueen extends CardImpl {
+public final class PixieQueen extends CardImpl {
public PixieQueen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/Plagiarize.java b/Mage.Sets/src/mage/cards/p/Plagiarize.java
index 12ff7bf38ac..d8506104c08 100644
--- a/Mage.Sets/src/mage/cards/p/Plagiarize.java
+++ b/Mage.Sets/src/mage/cards/p/Plagiarize.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Skyler Sell
*/
-public class Plagiarize extends CardImpl {
+public final class Plagiarize extends CardImpl {
public Plagiarize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PlagueBeetle.java b/Mage.Sets/src/mage/cards/p/PlagueBeetle.java
index 9d969e9335b..6b660de8b9c 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueBeetle.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueBeetle.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PlagueBeetle extends CardImpl {
+public final class PlagueBeetle extends CardImpl {
public PlagueBeetle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PlagueBelcher.java b/Mage.Sets/src/mage/cards/p/PlagueBelcher.java
index 8fb0c4c615b..ee3a6be8aee 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueBelcher.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueBelcher.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class PlagueBelcher extends CardImpl {
+public final class PlagueBelcher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another Zombie you control");
diff --git a/Mage.Sets/src/mage/cards/p/PlagueBoiler.java b/Mage.Sets/src/mage/cards/p/PlagueBoiler.java
index b3518cfbffb..dbb74e8ba19 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueBoiler.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueBoiler.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class PlagueBoiler extends CardImpl {
+public final class PlagueBoiler extends CardImpl {
public PlagueBoiler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PlagueDogs.java b/Mage.Sets/src/mage/cards/p/PlagueDogs.java
index c1df1cb1c4b..2c608751c5c 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueDogs.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueDogs.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class PlagueDogs extends CardImpl {
+public final class PlagueDogs extends CardImpl {
public PlagueDogs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PlagueFiend.java b/Mage.Sets/src/mage/cards/p/PlagueFiend.java
index 9188629acea..0eca409644b 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueFiend.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueFiend.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class PlagueFiend extends CardImpl {
+public final class PlagueFiend extends CardImpl {
public PlagueFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PlagueMyr.java b/Mage.Sets/src/mage/cards/p/PlagueMyr.java
index bdd3f9d0d28..99bd7ac3fc8 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueMyr.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueMyr.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PlagueMyr extends CardImpl {
+public final class PlagueMyr extends CardImpl {
public PlagueMyr (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PlagueOfVermin.java b/Mage.Sets/src/mage/cards/p/PlagueOfVermin.java
index a116e5869ac..d8e49d931ba 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueOfVermin.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueOfVermin.java
@@ -46,7 +46,7 @@ import mage.players.PlayerList;
*
* @author jeffwadsworth
*/
-public class PlagueOfVermin extends CardImpl {
+public final class PlagueOfVermin extends CardImpl {
public PlagueOfVermin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PlagueRats.java b/Mage.Sets/src/mage/cards/p/PlagueRats.java
index 05895ed8f82..dc75e371a90 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueRats.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueRats.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author lopho
*/
-public class PlagueRats extends CardImpl {
+public final class PlagueRats extends CardImpl {
private static final FilterCreaturePermanent plagueRatsFilter = new FilterCreaturePermanent("creatures named Plague Rats on the battlefield");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PlagueSliver.java b/Mage.Sets/src/mage/cards/p/PlagueSliver.java
index bee95b8b0c2..f949d5d330a 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueSliver.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueSliver.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class PlagueSliver extends CardImpl {
+public final class PlagueSliver extends CardImpl {
private static final FilterCreaturePermanent filterSliver = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/p/PlagueSpitter.java b/Mage.Sets/src/mage/cards/p/PlagueSpitter.java
index f7c2d980215..cc1df4bd7c9 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueSpitter.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueSpitter.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
* @author LoneFox
*/
-public class PlagueSpitter extends CardImpl {
+public final class PlagueSpitter extends CardImpl {
public PlagueSpitter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PlagueSpores.java b/Mage.Sets/src/mage/cards/p/PlagueSpores.java
index dcaf0116608..2e05820979f 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueSpores.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueSpores.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetLandPermanent;
* @author LoneFox
*
*/
-public class PlagueSpores extends CardImpl {
+public final class PlagueSpores extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/p/PlagueStinger.java b/Mage.Sets/src/mage/cards/p/PlagueStinger.java
index 6e85f830281..6d463865b8a 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueStinger.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueStinger.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PlagueStinger extends CardImpl {
+public final class PlagueStinger extends CardImpl {
public PlagueStinger (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PlagueWind.java b/Mage.Sets/src/mage/cards/p/PlagueWind.java
index 591e9a1f53b..34e495fa53e 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueWind.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueWind.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Plopman
*/
-public class PlagueWind extends CardImpl {
+public final class PlagueWind extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you don't control");
static{
diff --git a/Mage.Sets/src/mage/cards/p/PlagueWitch.java b/Mage.Sets/src/mage/cards/p/PlagueWitch.java
index 06aec4b39bb..53cf588d046 100644
--- a/Mage.Sets/src/mage/cards/p/PlagueWitch.java
+++ b/Mage.Sets/src/mage/cards/p/PlagueWitch.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PlagueWitch extends CardImpl {
+public final class PlagueWitch extends CardImpl {
public PlagueWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/Plaguebearer.java b/Mage.Sets/src/mage/cards/p/Plaguebearer.java
index 819b32dce0c..e94cbe4e0a7 100644
--- a/Mage.Sets/src/mage/cards/p/Plaguebearer.java
+++ b/Mage.Sets/src/mage/cards/p/Plaguebearer.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author spjspj
*/
-public class Plaguebearer extends CardImpl {
+public final class Plaguebearer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nonblack creature with converted mana cost X");
diff --git a/Mage.Sets/src/mage/cards/p/PlaguedRusalka.java b/Mage.Sets/src/mage/cards/p/PlaguedRusalka.java
index 40a33775a49..192a0f34d8e 100644
--- a/Mage.Sets/src/mage/cards/p/PlaguedRusalka.java
+++ b/Mage.Sets/src/mage/cards/p/PlaguedRusalka.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class PlaguedRusalka extends CardImpl {
+public final class PlaguedRusalka extends CardImpl {
public PlaguedRusalka(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PlaguemawBeast.java b/Mage.Sets/src/mage/cards/p/PlaguemawBeast.java
index 0d337e0c176..17f8d72ecf3 100644
--- a/Mage.Sets/src/mage/cards/p/PlaguemawBeast.java
+++ b/Mage.Sets/src/mage/cards/p/PlaguemawBeast.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class PlaguemawBeast extends CardImpl {
+public final class PlaguemawBeast extends CardImpl {
public PlaguemawBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PlanarBirth.java b/Mage.Sets/src/mage/cards/p/PlanarBirth.java
index cefcddc2b5c..4c2690226d0 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarBirth.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarBirth.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class PlanarBirth extends CardImpl {
+public final class PlanarBirth extends CardImpl {
public PlanarBirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
@@ -89,7 +89,7 @@ class PlanarBirthEffect extends OneShotEffect {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
- toBattlefield.addAll(player.getGraveyard().getCards(StaticFilters.FILTER_BASIC_LAND_CARD, source.getSourceId(), controller.getId(), game));
+ toBattlefield.addAll(player.getGraveyard().getCards(StaticFilters.FILTER_CARD_BASIC_LAND, source.getSourceId(), controller.getId(), game));
}
}
controller.moveCards(toBattlefield.getCards(game), Zone.BATTLEFIELD, source, game, true, false, true, null);
diff --git a/Mage.Sets/src/mage/cards/p/PlanarBridge.java b/Mage.Sets/src/mage/cards/p/PlanarBridge.java
index d84e1404ddb..b1df47d8ca8 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarBridge.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarBridge.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author anonymous
*/
-public class PlanarBridge extends CardImpl {
+public final class PlanarBridge extends CardImpl {
public PlanarBridge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/p/PlanarChaos.java b/Mage.Sets/src/mage/cards/p/PlanarChaos.java
index dc336fd17e6..27e58d0bbfd 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarChaos.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarChaos.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class PlanarChaos extends CardImpl {
+public final class PlanarChaos extends CardImpl {
public PlanarChaos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PlanarCleansing.java b/Mage.Sets/src/mage/cards/p/PlanarCleansing.java
index 41f38a87ae1..ad91eee9648 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarCleansing.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarCleansing.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterNonlandPermanent;
*
* @author Loki
*/
-public class PlanarCleansing extends CardImpl {
+public final class PlanarCleansing extends CardImpl {
public PlanarCleansing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PlanarCollapse.java b/Mage.Sets/src/mage/cards/p/PlanarCollapse.java
index 1ffcad15290..6e94fb9b772 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarCollapse.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarCollapse.java
@@ -46,7 +46,7 @@ import mage.game.Game;
*
* @author Plopman
*/
-public class PlanarCollapse extends CardImpl {
+public final class PlanarCollapse extends CardImpl {
public PlanarCollapse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PlanarDespair.java b/Mage.Sets/src/mage/cards/p/PlanarDespair.java
index 350f99beb98..80302505bd2 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarDespair.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarDespair.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
* @author LoneFox
*/
-public class PlanarDespair extends CardImpl {
+public final class PlanarDespair extends CardImpl {
public PlanarDespair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PlanarGate.java b/Mage.Sets/src/mage/cards/p/PlanarGate.java
index 42cea9d0df4..c6608684a31 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarGate.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarGate.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LevelX2
*/
-public class PlanarGate extends CardImpl {
+public final class PlanarGate extends CardImpl {
public PlanarGate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/p/PlanarGuide.java b/Mage.Sets/src/mage/cards/p/PlanarGuide.java
index d6885dddf12..e4ffb5deed7 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarGuide.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarGuide.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class PlanarGuide extends CardImpl {
+public final class PlanarGuide extends CardImpl {
public PlanarGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PlanarOutburst.java b/Mage.Sets/src/mage/cards/p/PlanarOutburst.java
index 392f914903e..cc21b14a3bf 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarOutburst.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarOutburst.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class PlanarOutburst extends CardImpl {
+public final class PlanarOutburst extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("nonland creatures");
diff --git a/Mage.Sets/src/mage/cards/p/PlanarOverlay.java b/Mage.Sets/src/mage/cards/p/PlanarOverlay.java
index d4154de5dd5..dc828284a14 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarOverlay.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarOverlay.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class PlanarOverlay extends CardImpl {
+public final class PlanarOverlay extends CardImpl {
public PlanarOverlay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PlanarPortal.java b/Mage.Sets/src/mage/cards/p/PlanarPortal.java
index 1fa8daeed78..9439cadb4c0 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarPortal.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarPortal.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class PlanarPortal extends CardImpl {
+public final class PlanarPortal extends CardImpl {
public PlanarPortal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/p/PlanarVoid.java b/Mage.Sets/src/mage/cards/p/PlanarVoid.java
index c53f95c8fcf..babacb60a5c 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarVoid.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarVoid.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class PlanarVoid extends CardImpl {
+public final class PlanarVoid extends CardImpl {
public PlanarVoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PlaneswalkersFavor.java b/Mage.Sets/src/mage/cards/p/PlaneswalkersFavor.java
index ed4fecfe8dc..989a6d4b29a 100644
--- a/Mage.Sets/src/mage/cards/p/PlaneswalkersFavor.java
+++ b/Mage.Sets/src/mage/cards/p/PlaneswalkersFavor.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class PlaneswalkersFavor extends CardImpl {
+public final class PlaneswalkersFavor extends CardImpl {
public PlaneswalkersFavor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PlaneswalkersFury.java b/Mage.Sets/src/mage/cards/p/PlaneswalkersFury.java
index f18e9953fb2..cbc69b49cdf 100644
--- a/Mage.Sets/src/mage/cards/p/PlaneswalkersFury.java
+++ b/Mage.Sets/src/mage/cards/p/PlaneswalkersFury.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class PlaneswalkersFury extends CardImpl {
+public final class PlaneswalkersFury extends CardImpl {
public PlaneswalkersFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PlaneswalkersMirth.java b/Mage.Sets/src/mage/cards/p/PlaneswalkersMirth.java
index 9a5eca7d4d9..3d101b2cf37 100644
--- a/Mage.Sets/src/mage/cards/p/PlaneswalkersMirth.java
+++ b/Mage.Sets/src/mage/cards/p/PlaneswalkersMirth.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class PlaneswalkersMirth extends CardImpl {
+public final class PlaneswalkersMirth extends CardImpl {
public PlaneswalkersMirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PlaneswalkersMischief.java b/Mage.Sets/src/mage/cards/p/PlaneswalkersMischief.java
index f076ba8725f..2f7a49f8ea6 100644
--- a/Mage.Sets/src/mage/cards/p/PlaneswalkersMischief.java
+++ b/Mage.Sets/src/mage/cards/p/PlaneswalkersMischief.java
@@ -61,7 +61,7 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author jeffwadsworth
*/
-public class PlaneswalkersMischief extends CardImpl {
+public final class PlaneswalkersMischief extends CardImpl {
public PlaneswalkersMischief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PlaneswalkersScorn.java b/Mage.Sets/src/mage/cards/p/PlaneswalkersScorn.java
index 1d49986883f..3e9e5cf4d02 100644
--- a/Mage.Sets/src/mage/cards/p/PlaneswalkersScorn.java
+++ b/Mage.Sets/src/mage/cards/p/PlaneswalkersScorn.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class PlaneswalkersScorn extends CardImpl {
+public final class PlaneswalkersScorn extends CardImpl {
public PlaneswalkersScorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PlantElemental.java b/Mage.Sets/src/mage/cards/p/PlantElemental.java
index 7b9897ab7e0..051dad659d6 100644
--- a/Mage.Sets/src/mage/cards/p/PlantElemental.java
+++ b/Mage.Sets/src/mage/cards/p/PlantElemental.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class PlantElemental extends CardImpl {
+public final class PlantElemental extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/p/PlasmCapture.java b/Mage.Sets/src/mage/cards/p/PlasmCapture.java
index 990479248d7..de9fe56e206 100644
--- a/Mage.Sets/src/mage/cards/p/PlasmCapture.java
+++ b/Mage.Sets/src/mage/cards/p/PlasmCapture.java
@@ -49,7 +49,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class PlasmCapture extends CardImpl {
+public final class PlasmCapture extends CardImpl {
public PlasmCapture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}{G}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PlasmaElemental.java b/Mage.Sets/src/mage/cards/p/PlasmaElemental.java
index 24b4e024d02..17da31e0884 100644
--- a/Mage.Sets/src/mage/cards/p/PlasmaElemental.java
+++ b/Mage.Sets/src/mage/cards/p/PlasmaElemental.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class PlasmaElemental extends CardImpl {
+public final class PlasmaElemental extends CardImpl {
public PlasmaElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Plateau.java b/Mage.Sets/src/mage/cards/p/Plateau.java
index 297aae0019f..7c058affc15 100644
--- a/Mage.Sets/src/mage/cards/p/Plateau.java
+++ b/Mage.Sets/src/mage/cards/p/Plateau.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class Plateau extends CardImpl {
+public final class Plateau extends CardImpl {
public Plateau(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/p/PlatedCrusher.java b/Mage.Sets/src/mage/cards/p/PlatedCrusher.java
index ed7cc3aa7bb..8e58273f52d 100644
--- a/Mage.Sets/src/mage/cards/p/PlatedCrusher.java
+++ b/Mage.Sets/src/mage/cards/p/PlatedCrusher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class PlatedCrusher extends CardImpl {
+public final class PlatedCrusher extends CardImpl {
public PlatedCrusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PlatedGeopede.java b/Mage.Sets/src/mage/cards/p/PlatedGeopede.java
index 127eb787611..075c1c457da 100644
--- a/Mage.Sets/src/mage/cards/p/PlatedGeopede.java
+++ b/Mage.Sets/src/mage/cards/p/PlatedGeopede.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class PlatedGeopede extends CardImpl {
+public final class PlatedGeopede extends CardImpl {
public PlatedGeopede (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PlatedRootwalla.java b/Mage.Sets/src/mage/cards/p/PlatedRootwalla.java
index 22baec042df..3c73710660a 100644
--- a/Mage.Sets/src/mage/cards/p/PlatedRootwalla.java
+++ b/Mage.Sets/src/mage/cards/p/PlatedRootwalla.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author nigelzor
*/
-public class PlatedRootwalla extends CardImpl {
+public final class PlatedRootwalla extends CardImpl {
public PlatedRootwalla(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PlatedSeastrider.java b/Mage.Sets/src/mage/cards/p/PlatedSeastrider.java
index fb3eefc69b1..066c575385f 100644
--- a/Mage.Sets/src/mage/cards/p/PlatedSeastrider.java
+++ b/Mage.Sets/src/mage/cards/p/PlatedSeastrider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PlatedSeastrider extends CardImpl {
+public final class PlatedSeastrider extends CardImpl {
public PlatedSeastrider (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PlatedSlagwurm.java b/Mage.Sets/src/mage/cards/p/PlatedSlagwurm.java
index 4945931c013..bf5b6e34fe1 100644
--- a/Mage.Sets/src/mage/cards/p/PlatedSlagwurm.java
+++ b/Mage.Sets/src/mage/cards/p/PlatedSlagwurm.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PlatedSlagwurm extends CardImpl {
+public final class PlatedSlagwurm extends CardImpl {
public PlatedSlagwurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PlatedSliver.java b/Mage.Sets/src/mage/cards/p/PlatedSliver.java
index 07b3fc1e351..a7316a5a555 100644
--- a/Mage.Sets/src/mage/cards/p/PlatedSliver.java
+++ b/Mage.Sets/src/mage/cards/p/PlatedSliver.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author cbt33
*/
-public class PlatedSliver extends CardImpl {
+public final class PlatedSliver extends CardImpl {
public PlatedSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PlatedSpider.java b/Mage.Sets/src/mage/cards/p/PlatedSpider.java
index cbff6d7b207..0a2d98f5631 100644
--- a/Mage.Sets/src/mage/cards/p/PlatedSpider.java
+++ b/Mage.Sets/src/mage/cards/p/PlatedSpider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PlatedSpider extends CardImpl {
+public final class PlatedSpider extends CardImpl {
public PlatedSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PlatedWurm.java b/Mage.Sets/src/mage/cards/p/PlatedWurm.java
index fc4c4724a8c..a203dc02fa3 100644
--- a/Mage.Sets/src/mage/cards/p/PlatedWurm.java
+++ b/Mage.Sets/src/mage/cards/p/PlatedWurm.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class PlatedWurm extends CardImpl {
+public final class PlatedWurm extends CardImpl {
public PlatedWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PlatinumAngel.java b/Mage.Sets/src/mage/cards/p/PlatinumAngel.java
index 884ab68ead8..6722a94ce61 100644
--- a/Mage.Sets/src/mage/cards/p/PlatinumAngel.java
+++ b/Mage.Sets/src/mage/cards/p/PlatinumAngel.java
@@ -49,7 +49,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PlatinumAngel extends CardImpl {
+public final class PlatinumAngel extends CardImpl {
public PlatinumAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/p/PlatinumEmperion.java b/Mage.Sets/src/mage/cards/p/PlatinumEmperion.java
index 0f01f74ee4b..bd04e065a41 100644
--- a/Mage.Sets/src/mage/cards/p/PlatinumEmperion.java
+++ b/Mage.Sets/src/mage/cards/p/PlatinumEmperion.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author nantuko
*/
-public class PlatinumEmperion extends CardImpl {
+public final class PlatinumEmperion extends CardImpl {
public PlatinumEmperion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/p/PlaxcasterFrogling.java b/Mage.Sets/src/mage/cards/p/PlaxcasterFrogling.java
index 766c8745fbd..4a74f7b83c7 100644
--- a/Mage.Sets/src/mage/cards/p/PlaxcasterFrogling.java
+++ b/Mage.Sets/src/mage/cards/p/PlaxcasterFrogling.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JotaPeRL
*/
-public class PlaxcasterFrogling extends CardImpl {
+public final class PlaxcasterFrogling extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/p/Plaxmanta.java b/Mage.Sets/src/mage/cards/p/Plaxmanta.java
index 04f595fe6ed..90fd9731b29 100644
--- a/Mage.Sets/src/mage/cards/p/Plaxmanta.java
+++ b/Mage.Sets/src/mage/cards/p/Plaxmanta.java
@@ -48,7 +48,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author fireshoes
*/
-public class Plaxmanta extends CardImpl {
+public final class Plaxmanta extends CardImpl {
public Plaxmanta(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PlayOfTheGame.java b/Mage.Sets/src/mage/cards/p/PlayOfTheGame.java
new file mode 100644
index 00000000000..c6873d20c6d
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/p/PlayOfTheGame.java
@@ -0,0 +1,62 @@
+/*
+ * 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.p;
+
+import java.util.UUID;
+import mage.abilities.effects.common.ExileAllEffect;
+import mage.abilities.keyword.AssistAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.filter.StaticFilters;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class PlayOfTheGame extends CardImpl {
+
+ public PlayOfTheGame(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{W}{W}");
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // Exile all nonland permanents.
+ this.getSpellAbility().addEffect(new ExileAllEffect(StaticFilters.FILTER_PERMANENTS_NON_LAND));
+ }
+
+ public PlayOfTheGame(final PlayOfTheGame card) {
+ super(card);
+ }
+
+ @Override
+ public PlayOfTheGame copy() {
+ return new PlayOfTheGame(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/PleaForGuidance.java b/Mage.Sets/src/mage/cards/p/PleaForGuidance.java
index cde8589acec..a044e1b8759 100644
--- a/Mage.Sets/src/mage/cards/p/PleaForGuidance.java
+++ b/Mage.Sets/src/mage/cards/p/PleaForGuidance.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class PleaForGuidance extends CardImpl {
+public final class PleaForGuidance extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantment cards");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PleaForPower.java b/Mage.Sets/src/mage/cards/p/PleaForPower.java
index a39db3a5a15..2fa7a25c469 100644
--- a/Mage.Sets/src/mage/cards/p/PleaForPower.java
+++ b/Mage.Sets/src/mage/cards/p/PleaForPower.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class PleaForPower extends CardImpl {
+public final class PleaForPower extends CardImpl {
public PleaForPower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PloKoon.java b/Mage.Sets/src/mage/cards/p/PloKoon.java
index 0b85352b67d..ae6e636d25d 100644
--- a/Mage.Sets/src/mage/cards/p/PloKoon.java
+++ b/Mage.Sets/src/mage/cards/p/PloKoon.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class PloKoon extends CardImpl {
+public final class PloKoon extends CardImpl {
public PloKoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PloverKnights.java b/Mage.Sets/src/mage/cards/p/PloverKnights.java
index 79bc4ffb46d..3ab997cf687 100644
--- a/Mage.Sets/src/mage/cards/p/PloverKnights.java
+++ b/Mage.Sets/src/mage/cards/p/PloverKnights.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PloverKnights extends CardImpl {
+public final class PloverKnights extends CardImpl {
public PloverKnights(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PlowThroughReito.java b/Mage.Sets/src/mage/cards/p/PlowThroughReito.java
index 24edcbcd25a..586db77025b 100644
--- a/Mage.Sets/src/mage/cards/p/PlowThroughReito.java
+++ b/Mage.Sets/src/mage/cards/p/PlowThroughReito.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PlowThroughReito extends CardImpl {
+public final class PlowThroughReito extends CardImpl {
public PlowThroughReito(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PlowUnder.java b/Mage.Sets/src/mage/cards/p/PlowUnder.java
index 1f74e5ffe46..b40e88e707c 100644
--- a/Mage.Sets/src/mage/cards/p/PlowUnder.java
+++ b/Mage.Sets/src/mage/cards/p/PlowUnder.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class PlowUnder extends CardImpl {
+public final class PlowUnder extends CardImpl {
public PlowUnder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PlumesOfPeace.java b/Mage.Sets/src/mage/cards/p/PlumesOfPeace.java
index 42c1f143d1a..3168d2160ad 100644
--- a/Mage.Sets/src/mage/cards/p/PlumesOfPeace.java
+++ b/Mage.Sets/src/mage/cards/p/PlumesOfPeace.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Wehk
*/
-public class PlumesOfPeace extends CardImpl {
+public final class PlumesOfPeace extends CardImpl {
public PlumesOfPeace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Plumeveil.java b/Mage.Sets/src/mage/cards/p/Plumeveil.java
index 10466504e9c..8824f86cf25 100644
--- a/Mage.Sets/src/mage/cards/p/Plumeveil.java
+++ b/Mage.Sets/src/mage/cards/p/Plumeveil.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Plumeveil extends CardImpl {
+public final class Plumeveil extends CardImpl {
public Plumeveil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W/U}{W/U}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/p/Plummet.java b/Mage.Sets/src/mage/cards/p/Plummet.java
index 040b1e3b625..7d84ce2dd36 100644
--- a/Mage.Sets/src/mage/cards/p/Plummet.java
+++ b/Mage.Sets/src/mage/cards/p/Plummet.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Plummet extends CardImpl {
+public final class Plummet extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/p/Plunder.java b/Mage.Sets/src/mage/cards/p/Plunder.java
index a9305389e3f..628e78f5d1a 100644
--- a/Mage.Sets/src/mage/cards/p/Plunder.java
+++ b/Mage.Sets/src/mage/cards/p/Plunder.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class Plunder extends CardImpl {
+public final class Plunder extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or land");
diff --git a/Mage.Sets/src/mage/cards/p/PlungeIntoDarkness.java b/Mage.Sets/src/mage/cards/p/PlungeIntoDarkness.java
index 7ae2b0b39bd..a5de7fbf109 100644
--- a/Mage.Sets/src/mage/cards/p/PlungeIntoDarkness.java
+++ b/Mage.Sets/src/mage/cards/p/PlungeIntoDarkness.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class PlungeIntoDarkness extends CardImpl {
+public final class PlungeIntoDarkness extends CardImpl {
public PlungeIntoDarkness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PoisonArrow.java b/Mage.Sets/src/mage/cards/p/PoisonArrow.java
index 6d892b9fde5..9554b0873e3 100644
--- a/Mage.Sets/src/mage/cards/p/PoisonArrow.java
+++ b/Mage.Sets/src/mage/cards/p/PoisonArrow.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PoisonArrow extends CardImpl {
+public final class PoisonArrow extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/p/PoisonTheWell.java b/Mage.Sets/src/mage/cards/p/PoisonTheWell.java
index 19b7c1aa37e..d7c715ff6fa 100644
--- a/Mage.Sets/src/mage/cards/p/PoisonTheWell.java
+++ b/Mage.Sets/src/mage/cards/p/PoisonTheWell.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class PoisonTheWell extends CardImpl {
+public final class PoisonTheWell extends CardImpl {
public PoisonTheWell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B/R}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/p/PoisonbellyOgre.java b/Mage.Sets/src/mage/cards/p/PoisonbellyOgre.java
index a586cec1446..4851dbbb7bc 100644
--- a/Mage.Sets/src/mage/cards/p/PoisonbellyOgre.java
+++ b/Mage.Sets/src/mage/cards/p/PoisonbellyOgre.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author lopho
*/
-public class PoisonbellyOgre extends CardImpl {
+public final class PoisonbellyOgre extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PolarKraken.java b/Mage.Sets/src/mage/cards/p/PolarKraken.java
index 8e0894a1ce9..cc913502c02 100644
--- a/Mage.Sets/src/mage/cards/p/PolarKraken.java
+++ b/Mage.Sets/src/mage/cards/p/PolarKraken.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class PolarKraken extends CardImpl {
+public final class PolarKraken extends CardImpl {
public PolarKraken(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PolisCrusher.java b/Mage.Sets/src/mage/cards/p/PolisCrusher.java
index f93d8121e41..7631b101d1e 100644
--- a/Mage.Sets/src/mage/cards/p/PolisCrusher.java
+++ b/Mage.Sets/src/mage/cards/p/PolisCrusher.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FirstTargetPointer;
*
* @author LevelX2
*/
-public class PolisCrusher extends CardImpl {
+public final class PolisCrusher extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantments");
diff --git a/Mage.Sets/src/mage/cards/p/PoliticalTrickery.java b/Mage.Sets/src/mage/cards/p/PoliticalTrickery.java
index abe625f1f7b..ef14c6078e8 100644
--- a/Mage.Sets/src/mage/cards/p/PoliticalTrickery.java
+++ b/Mage.Sets/src/mage/cards/p/PoliticalTrickery.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author andyfries
*/
-public class PoliticalTrickery extends CardImpl {
+public final class PoliticalTrickery extends CardImpl {
private static final String rule = "exchange control of target land you control and target land an opponent controls";
diff --git a/Mage.Sets/src/mage/cards/p/PollenLullaby.java b/Mage.Sets/src/mage/cards/p/PollenLullaby.java
index 173c735ec39..358917ca5db 100644
--- a/Mage.Sets/src/mage/cards/p/PollenLullaby.java
+++ b/Mage.Sets/src/mage/cards/p/PollenLullaby.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author LevelX2
*/
-public class PollenLullaby extends CardImpl {
+public final class PollenLullaby extends CardImpl {
public PollenLullaby(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PollenRemedy.java b/Mage.Sets/src/mage/cards/p/PollenRemedy.java
index 7bef85d52ab..a821f91fa24 100644
--- a/Mage.Sets/src/mage/cards/p/PollenRemedy.java
+++ b/Mage.Sets/src/mage/cards/p/PollenRemedy.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTargetAmount;
* @author LoneFox
*/
-public class PollenRemedy extends CardImpl {
+public final class PollenRemedy extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/p/PollenbrightWings.java b/Mage.Sets/src/mage/cards/p/PollenbrightWings.java
index dc174fdea9a..4862d6299e7 100644
--- a/Mage.Sets/src/mage/cards/p/PollenbrightWings.java
+++ b/Mage.Sets/src/mage/cards/p/PollenbrightWings.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PollenbrightWings extends CardImpl {
+public final class PollenbrightWings extends CardImpl {
public PollenbrightWings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PollutedBonds.java b/Mage.Sets/src/mage/cards/p/PollutedBonds.java
index f9db425dbdf..c64aa02a813 100644
--- a/Mage.Sets/src/mage/cards/p/PollutedBonds.java
+++ b/Mage.Sets/src/mage/cards/p/PollutedBonds.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
* @author jeffwadsworth
*
*/
-public class PollutedBonds extends CardImpl {
+public final class PollutedBonds extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/p/PollutedDead.java b/Mage.Sets/src/mage/cards/p/PollutedDead.java
index 628ad1df164..4f3ff388017 100644
--- a/Mage.Sets/src/mage/cards/p/PollutedDead.java
+++ b/Mage.Sets/src/mage/cards/p/PollutedDead.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetLandPermanent;
/**
* @author noxx
*/
-public class PollutedDead extends CardImpl {
+public final class PollutedDead extends CardImpl {
public PollutedDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PollutedDelta.java b/Mage.Sets/src/mage/cards/p/PollutedDelta.java
index 3e430d8f53e..6f845ed254b 100644
--- a/Mage.Sets/src/mage/cards/p/PollutedDelta.java
+++ b/Mage.Sets/src/mage/cards/p/PollutedDelta.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class PollutedDelta extends CardImpl {
+public final class PollutedDelta extends CardImpl {
public PollutedDelta(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/p/PollutedMire.java b/Mage.Sets/src/mage/cards/p/PollutedMire.java
index b37ae4aa9ad..1a11ca2a630 100644
--- a/Mage.Sets/src/mage/cards/p/PollutedMire.java
+++ b/Mage.Sets/src/mage/cards/p/PollutedMire.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Backfir3
*/
-public class PollutedMire extends CardImpl {
+public final class PollutedMire extends CardImpl {
public PollutedMire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/p/PolukranosWorldEater.java b/Mage.Sets/src/mage/cards/p/PolukranosWorldEater.java
index f5de49c0afb..93bbe514ecc 100644
--- a/Mage.Sets/src/mage/cards/p/PolukranosWorldEater.java
+++ b/Mage.Sets/src/mage/cards/p/PolukranosWorldEater.java
@@ -70,7 +70,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LevelX2
*/
-public class PolukranosWorldEater extends CardImpl {
+public final class PolukranosWorldEater extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/p/Polymorph.java b/Mage.Sets/src/mage/cards/p/Polymorph.java
index a054a54c279..952e88bcaf9 100644
--- a/Mage.Sets/src/mage/cards/p/Polymorph.java
+++ b/Mage.Sets/src/mage/cards/p/Polymorph.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Polymorph extends CardImpl {
+public final class Polymorph extends CardImpl {
public Polymorph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PolymorphistsJest.java b/Mage.Sets/src/mage/cards/p/PolymorphistsJest.java
index 16075fdc1ff..4fe24e1e268 100644
--- a/Mage.Sets/src/mage/cards/p/PolymorphistsJest.java
+++ b/Mage.Sets/src/mage/cards/p/PolymorphistsJest.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class PolymorphistsJest extends CardImpl {
+public final class PolymorphistsJest extends CardImpl {
public PolymorphistsJest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PolymorphousRush.java b/Mage.Sets/src/mage/cards/p/PolymorphousRush.java
index 6ecc0c6c48e..83d5d604160 100644
--- a/Mage.Sets/src/mage/cards/p/PolymorphousRush.java
+++ b/Mage.Sets/src/mage/cards/p/PolymorphousRush.java
@@ -50,7 +50,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author LevelX2
*/
-public class PolymorphousRush extends CardImpl {
+public final class PolymorphousRush extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/Polyraptor.java b/Mage.Sets/src/mage/cards/p/Polyraptor.java
index f8199d07fbb..50c5decdf0e 100644
--- a/Mage.Sets/src/mage/cards/p/Polyraptor.java
+++ b/Mage.Sets/src/mage/cards/p/Polyraptor.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author JayDi85
*/
-public class Polyraptor extends CardImpl {
+public final class Polyraptor extends CardImpl {
public Polyraptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/Ponder.java b/Mage.Sets/src/mage/cards/p/Ponder.java
index 11b301c33f9..f66c7b93c4b 100644
--- a/Mage.Sets/src/mage/cards/p/Ponder.java
+++ b/Mage.Sets/src/mage/cards/p/Ponder.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
/**
* @author nantuko
*/
-public class Ponder extends CardImpl {
+public final class Ponder extends CardImpl {
public Ponder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Pongify.java b/Mage.Sets/src/mage/cards/p/Pongify.java
index 984f8a58d51..c74f0be2c21 100644
--- a/Mage.Sets/src/mage/cards/p/Pongify.java
+++ b/Mage.Sets/src/mage/cards/p/Pongify.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author dustinconrad
*/
-public class Pongify extends CardImpl {
+public final class Pongify extends CardImpl {
public Pongify(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PontiffOfBlight.java b/Mage.Sets/src/mage/cards/p/PontiffOfBlight.java
index 58ce9ca53a9..1a7f40120cb 100644
--- a/Mage.Sets/src/mage/cards/p/PontiffOfBlight.java
+++ b/Mage.Sets/src/mage/cards/p/PontiffOfBlight.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
-public class PontiffOfBlight extends CardImpl {
+public final class PontiffOfBlight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PonybackBrigade.java b/Mage.Sets/src/mage/cards/p/PonybackBrigade.java
index a756d1a528d..b8b02c61999 100644
--- a/Mage.Sets/src/mage/cards/p/PonybackBrigade.java
+++ b/Mage.Sets/src/mage/cards/p/PonybackBrigade.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.Token;
*
* @author LevelX2
*/
-public class PonybackBrigade extends CardImpl {
+public final class PonybackBrigade extends CardImpl {
public PonybackBrigade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PoolingVenom.java b/Mage.Sets/src/mage/cards/p/PoolingVenom.java
index 7dee14c8c27..4133222d89d 100644
--- a/Mage.Sets/src/mage/cards/p/PoolingVenom.java
+++ b/Mage.Sets/src/mage/cards/p/PoolingVenom.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class PoolingVenom extends CardImpl {
+public final class PoolingVenom extends CardImpl {
public PoolingVenom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PorcelainLegionnaire.java b/Mage.Sets/src/mage/cards/p/PorcelainLegionnaire.java
index d771cbfe671..8f7796ede69 100644
--- a/Mage.Sets/src/mage/cards/p/PorcelainLegionnaire.java
+++ b/Mage.Sets/src/mage/cards/p/PorcelainLegionnaire.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PorcelainLegionnaire extends CardImpl {
+public final class PorcelainLegionnaire extends CardImpl {
public PorcelainLegionnaire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{W/P}");
diff --git a/Mage.Sets/src/mage/cards/p/PoreOverThePages.java b/Mage.Sets/src/mage/cards/p/PoreOverThePages.java
index 643abb34ffc..ce8f2013e94 100644
--- a/Mage.Sets/src/mage/cards/p/PoreOverThePages.java
+++ b/Mage.Sets/src/mage/cards/p/PoreOverThePages.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class PoreOverThePages extends CardImpl {
+public final class PoreOverThePages extends CardImpl {
public PoreOverThePages(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PorphyryNodes.java b/Mage.Sets/src/mage/cards/p/PorphyryNodes.java
index c771ea9a2a4..c90f85eaba6 100644
--- a/Mage.Sets/src/mage/cards/p/PorphyryNodes.java
+++ b/Mage.Sets/src/mage/cards/p/PorphyryNodes.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class PorphyryNodes extends CardImpl {
+public final class PorphyryNodes extends CardImpl {
static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/p/PortTown.java b/Mage.Sets/src/mage/cards/p/PortTown.java
index 9c62a829550..0aa2b675295 100644
--- a/Mage.Sets/src/mage/cards/p/PortTown.java
+++ b/Mage.Sets/src/mage/cards/p/PortTown.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class PortTown extends CardImpl {
+public final class PortTown extends CardImpl {
private static final FilterCard filter = new FilterCard("a Plains or Island card from your hand");
diff --git a/Mage.Sets/src/mage/cards/p/PortalMage.java b/Mage.Sets/src/mage/cards/p/PortalMage.java
index bf51b9c413b..e881fdbb47a 100644
--- a/Mage.Sets/src/mage/cards/p/PortalMage.java
+++ b/Mage.Sets/src/mage/cards/p/PortalMage.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetDefender;
*
* @author LevelX2
*/
-public class PortalMage extends CardImpl {
+public final class PortalMage extends CardImpl {
public PortalMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Portcullis.java b/Mage.Sets/src/mage/cards/p/Portcullis.java
index bb43e720aa0..747311a0c09 100644
--- a/Mage.Sets/src/mage/cards/p/Portcullis.java
+++ b/Mage.Sets/src/mage/cards/p/Portcullis.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author spjspj
*/
-public class Portcullis extends CardImpl {
+public final class Portcullis extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature");
diff --git a/Mage.Sets/src/mage/cards/p/Portent.java b/Mage.Sets/src/mage/cards/p/Portent.java
index 9dce1d79a26..e0118caf383 100644
--- a/Mage.Sets/src/mage/cards/p/Portent.java
+++ b/Mage.Sets/src/mage/cards/p/Portent.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class Portent extends CardImpl {
+public final class Portent extends CardImpl {
public Portent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PortentOfBetrayal.java b/Mage.Sets/src/mage/cards/p/PortentOfBetrayal.java
index 54784c95c6b..fb34404eae6 100644
--- a/Mage.Sets/src/mage/cards/p/PortentOfBetrayal.java
+++ b/Mage.Sets/src/mage/cards/p/PortentOfBetrayal.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PortentOfBetrayal extends CardImpl {
+public final class PortentOfBetrayal extends CardImpl {
public PortentOfBetrayal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PossessedAven.java b/Mage.Sets/src/mage/cards/p/PossessedAven.java
index 3b26e6503ec..dc077348fba 100644
--- a/Mage.Sets/src/mage/cards/p/PossessedAven.java
+++ b/Mage.Sets/src/mage/cards/p/PossessedAven.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PossessedAven extends CardImpl {
+public final class PossessedAven extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creature");
diff --git a/Mage.Sets/src/mage/cards/p/PossessedBarbarian.java b/Mage.Sets/src/mage/cards/p/PossessedBarbarian.java
index b9e6ae864ff..09112983ea5 100644
--- a/Mage.Sets/src/mage/cards/p/PossessedBarbarian.java
+++ b/Mage.Sets/src/mage/cards/p/PossessedBarbarian.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PossessedBarbarian extends CardImpl {
+public final class PossessedBarbarian extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red creature");
diff --git a/Mage.Sets/src/mage/cards/p/PossessedCentaur.java b/Mage.Sets/src/mage/cards/p/PossessedCentaur.java
index 6a23ff07008..ca51a86a4cc 100644
--- a/Mage.Sets/src/mage/cards/p/PossessedCentaur.java
+++ b/Mage.Sets/src/mage/cards/p/PossessedCentaur.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PossessedCentaur extends CardImpl {
+public final class PossessedCentaur extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/p/PossessedNomad.java b/Mage.Sets/src/mage/cards/p/PossessedNomad.java
index 2c11681173b..75ab59b5552 100644
--- a/Mage.Sets/src/mage/cards/p/PossessedNomad.java
+++ b/Mage.Sets/src/mage/cards/p/PossessedNomad.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PossessedNomad extends CardImpl {
+public final class PossessedNomad extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creature");
diff --git a/Mage.Sets/src/mage/cards/p/PossessedPortal.java b/Mage.Sets/src/mage/cards/p/PossessedPortal.java
index e11f0389157..58065eddfe5 100644
--- a/Mage.Sets/src/mage/cards/p/PossessedPortal.java
+++ b/Mage.Sets/src/mage/cards/p/PossessedPortal.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class PossessedPortal extends CardImpl {
+public final class PossessedPortal extends CardImpl {
public PossessedPortal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{8}");
diff --git a/Mage.Sets/src/mage/cards/p/PossessedSkaab.java b/Mage.Sets/src/mage/cards/p/PossessedSkaab.java
index ea4c55b3705..ba90a8c86a2 100644
--- a/Mage.Sets/src/mage/cards/p/PossessedSkaab.java
+++ b/Mage.Sets/src/mage/cards/p/PossessedSkaab.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class PossessedSkaab extends CardImpl {
+public final class PossessedSkaab extends CardImpl {
private static final FilterCard filter = new FilterCard("instant, sorcery, or creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/p/PossibilityStorm.java b/Mage.Sets/src/mage/cards/p/PossibilityStorm.java
index 6ccd585beb2..801e8aa72c3 100644
--- a/Mage.Sets/src/mage/cards/p/PossibilityStorm.java
+++ b/Mage.Sets/src/mage/cards/p/PossibilityStorm.java
@@ -30,6 +30,7 @@ package mage.cards.p;
import java.util.EnumSet;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect;
@@ -53,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class PossibilityStorm extends CardImpl {
+public final class PossibilityStorm extends CardImpl {
public PossibilityStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}{R}");
@@ -155,7 +156,7 @@ class PossibilityStormEffect extends OneShotEffect {
&& !card.isLand()
&& card.getSpellAbility().canChooseTarget(game)) {
if (spellController.chooseUse(Outcome.PlayForFree, "Cast " + card.getLogName() + " without paying cost?", source, game)) {
- spellController.cast(card.getSpellAbility(), game, true);
+ spellController.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
diff --git a/Mage.Sets/src/mage/cards/p/PostmortemLunge.java b/Mage.Sets/src/mage/cards/p/PostmortemLunge.java
index 0aaa7aca999..38569848eac 100644
--- a/Mage.Sets/src/mage/cards/p/PostmortemLunge.java
+++ b/Mage.Sets/src/mage/cards/p/PostmortemLunge.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author North
*/
-public class PostmortemLunge extends CardImpl {
+public final class PostmortemLunge extends CardImpl {
public PostmortemLunge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B/P}");
diff --git a/Mage.Sets/src/mage/cards/p/PoulticeSliver.java b/Mage.Sets/src/mage/cards/p/PoulticeSliver.java
index 079aab0ce43..3b74d5e1b94 100644
--- a/Mage.Sets/src/mage/cards/p/PoulticeSliver.java
+++ b/Mage.Sets/src/mage/cards/p/PoulticeSliver.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author anonymous
*/
-public class PoulticeSliver extends CardImpl {
+public final class PoulticeSliver extends CardImpl {
public PoulticeSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/Poultrygeist.java b/Mage.Sets/src/mage/cards/p/Poultrygeist.java
index 838d2415458..7665e2e9841 100644
--- a/Mage.Sets/src/mage/cards/p/Poultrygeist.java
+++ b/Mage.Sets/src/mage/cards/p/Poultrygeist.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author ciaccona007
*/
-public class Poultrygeist extends CardImpl {
+public final class Poultrygeist extends CardImpl {
public Poultrygeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/Pounce.java b/Mage.Sets/src/mage/cards/p/Pounce.java
index bad2a9a4613..f2bcdae7a73 100644
--- a/Mage.Sets/src/mage/cards/p/Pounce.java
+++ b/Mage.Sets/src/mage/cards/p/Pounce.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Pounce extends CardImpl {
+public final class Pounce extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/p/PouncingCheetah.java b/Mage.Sets/src/mage/cards/p/PouncingCheetah.java
index 1daaa78b3e5..58a6d28330b 100644
--- a/Mage.Sets/src/mage/cards/p/PouncingCheetah.java
+++ b/Mage.Sets/src/mage/cards/p/PouncingCheetah.java
@@ -11,7 +11,7 @@ import mage.constants.SubType;
/**
* @author Stravant
*/
-public class PouncingCheetah extends CardImpl {
+public final class PouncingCheetah extends CardImpl {
public PouncingCheetah(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PouncingJaguar.java b/Mage.Sets/src/mage/cards/p/PouncingJaguar.java
index 64987260aa3..632aa111f38 100644
--- a/Mage.Sets/src/mage/cards/p/PouncingJaguar.java
+++ b/Mage.Sets/src/mage/cards/p/PouncingJaguar.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class PouncingJaguar extends CardImpl {
+public final class PouncingJaguar extends CardImpl {
public PouncingJaguar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PouncingKavu.java b/Mage.Sets/src/mage/cards/p/PouncingKavu.java
index 45470aa7a2a..4532266f578 100644
--- a/Mage.Sets/src/mage/cards/p/PouncingKavu.java
+++ b/Mage.Sets/src/mage/cards/p/PouncingKavu.java
@@ -50,7 +50,7 @@ import mage.counters.CounterType;
* @author LoneFox
*/
-public class PouncingKavu extends CardImpl {
+public final class PouncingKavu extends CardImpl {
public PouncingKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PouncingWurm.java b/Mage.Sets/src/mage/cards/p/PouncingWurm.java
index 1a56ae0a300..74593c68c4a 100644
--- a/Mage.Sets/src/mage/cards/p/PouncingWurm.java
+++ b/Mage.Sets/src/mage/cards/p/PouncingWurm.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author Backfir3
*/
-public class PouncingWurm extends CardImpl {
+public final class PouncingWurm extends CardImpl {
public PouncingWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PowderKeg.java b/Mage.Sets/src/mage/cards/p/PowderKeg.java
index b0a087c32b2..a0b532faa3f 100644
--- a/Mage.Sets/src/mage/cards/p/PowderKeg.java
+++ b/Mage.Sets/src/mage/cards/p/PowderKeg.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class PowderKeg extends CardImpl {
+public final class PowderKeg extends CardImpl {
public PowderKeg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PowerArmor.java b/Mage.Sets/src/mage/cards/p/PowerArmor.java
index ae96023b0f1..ef792da5016 100644
--- a/Mage.Sets/src/mage/cards/p/PowerArmor.java
+++ b/Mage.Sets/src/mage/cards/p/PowerArmor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author FenrisulfrX
*/
-public class PowerArmor extends CardImpl {
+public final class PowerArmor extends CardImpl {
public PowerArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/p/PowerArtifact.java b/Mage.Sets/src/mage/cards/p/PowerArtifact.java
index 24b9eaa09b0..b0063c59783 100644
--- a/Mage.Sets/src/mage/cards/p/PowerArtifact.java
+++ b/Mage.Sets/src/mage/cards/p/PowerArtifact.java
@@ -33,7 +33,7 @@ import mage.util.CardUtil;
*
* @author nick.myers
*/
-public class PowerArtifact extends CardImpl {
+public final class PowerArtifact extends CardImpl {
public PowerArtifact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PowerConduit.java b/Mage.Sets/src/mage/cards/p/PowerConduit.java
index 3239bca9d3e..c8102e92641 100644
--- a/Mage.Sets/src/mage/cards/p/PowerConduit.java
+++ b/Mage.Sets/src/mage/cards/p/PowerConduit.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PowerConduit extends CardImpl {
+public final class PowerConduit extends CardImpl {
public PowerConduit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PowerLeak.java b/Mage.Sets/src/mage/cards/p/PowerLeak.java
index 4e4d9120885..496be0ab20b 100644
--- a/Mage.Sets/src/mage/cards/p/PowerLeak.java
+++ b/Mage.Sets/src/mage/cards/p/PowerLeak.java
@@ -57,10 +57,10 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class PowerLeak extends CardImpl {
+public final class PowerLeak extends CardImpl {
public PowerLeak(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
this.subtype.add(SubType.AURA);
// Enchant enchantment
@@ -103,31 +103,31 @@ class PowerLeakEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(game.getActivePlayerId());
Permanent permanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
- if (player != null && permanent != null) {
- ManaCosts cost = new ManaCostsImpl<>("{X}");
- String message = "Pay {X} to prevent X damage from " + permanent.getLogName() + "?";
- int xValue = 0;
- if (player != null && player.chooseUse(Outcome.Neutral, message, source, game)) {
- xValue = player.announceXMana(0, Integer.MAX_VALUE, "Choose the amount of mana to pay", game, source);
- cost.add(new GenericManaCost(xValue));
- if (cost.pay(source, game, source.getSourceId(), player.getId(), false, null)) {
- game.informPlayers(player.getLogName() + " paid {" + xValue + "} for " + permanent.getLogName());
- } else {
- game.informPlayers(player.getLogName() + " didn't pay {X} for " + permanent.getLogName());
- }
+ if (player == null || permanent == null) {
+ return false;
+ }
+ ManaCosts cost = new ManaCostsImpl<>("{X}");
+ String message = "Pay {X} to prevent X damage from " + permanent.getLogName() + "?";
+ int xValue = 0;
+ if (player.chooseUse(Outcome.Neutral, message, source, game)) {
+ xValue = player.announceXMana(0, Integer.MAX_VALUE, "Choose the amount of mana to pay", game, source);
+ cost.add(new GenericManaCost(xValue));
+ if (cost.pay(source, game, source.getSourceId(), player.getId(), false, null)) {
+ game.informPlayers(player.getLogName() + " paid {" + xValue + "} for " + permanent.getLogName());
} else {
game.informPlayers(player.getLogName() + " didn't pay {X} for " + permanent.getLogName());
}
-
- PreventDamageByTargetEffect effect = new PreventDamageByTargetEffect(Duration.OneUse, xValue, false);
- if (xValue != 0 && cost.isPaid()) {
- effect.setTargetPointer(new FixedTarget(permanent.getId()));
- game.addEffect(effect, source);
- }
- player.damage(2, source.getSourceId(), game, false, true);
- effect.discard();
- return true;
+ } else {
+ game.informPlayers(player.getLogName() + " didn't pay {X} for " + permanent.getLogName());
}
- return false;
+
+ PreventDamageByTargetEffect effect = new PreventDamageByTargetEffect(Duration.OneUse, xValue, false);
+ if (xValue != 0 && cost.isPaid()) {
+ effect.setTargetPointer(new FixedTarget(permanent.getId()));
+ game.addEffect(effect, source);
+ }
+ player.damage(2, source.getSourceId(), game, false, true);
+ effect.discard();
+ return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/p/PowerMatrix.java b/Mage.Sets/src/mage/cards/p/PowerMatrix.java
index a0c80c10412..22076ad8df0 100644
--- a/Mage.Sets/src/mage/cards/p/PowerMatrix.java
+++ b/Mage.Sets/src/mage/cards/p/PowerMatrix.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class PowerMatrix extends CardImpl {
+public final class PowerMatrix extends CardImpl {
public PowerMatrix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/p/PowerOfFire.java b/Mage.Sets/src/mage/cards/p/PowerOfFire.java
index bd66fa87e06..c1557a0f821 100644
--- a/Mage.Sets/src/mage/cards/p/PowerOfFire.java
+++ b/Mage.Sets/src/mage/cards/p/PowerOfFire.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class PowerOfFire extends CardImpl {
+public final class PowerOfFire extends CardImpl {
public PowerOfFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PowerSink.java b/Mage.Sets/src/mage/cards/p/PowerSink.java
index 4ed69dbe9a1..06edfa5f810 100644
--- a/Mage.Sets/src/mage/cards/p/PowerSink.java
+++ b/Mage.Sets/src/mage/cards/p/PowerSink.java
@@ -50,13 +50,12 @@ import mage.target.TargetSpell;
*
* @author Quercitron
*/
-public class PowerSink extends CardImpl {
+public final class PowerSink extends CardImpl {
public PowerSink(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{U}");
-
- // Counter target spell unless its controller pays {X}. If he or she doesn't, that player taps all lands with mana abilities he or she controls and empties their mana pool.
+ // Counter target spell unless its controller pays {X}. If that player doesn’t, they tap all lands with mana abilities they control and lose all unspent mana.
this.getSpellAbility().addEffect(new PowerSinkCounterUnlessPaysEffect());
this.getSpellAbility().addTarget(new TargetSpell());
}
@@ -75,7 +74,7 @@ class PowerSinkCounterUnlessPaysEffect extends OneShotEffect {
public PowerSinkCounterUnlessPaysEffect() {
super(Outcome.Detriment);
- this.staticText = "Counter target spell unless its controller pays {X}. If he or she doesn't, that player taps all lands with mana abilities he or she controls and empties their mana pool.";
+ this.staticText = "Counter target spell unless its controller pays {X}. If that player doesn’t, they tap all lands with mana abilities they control and lose all unspent mana";
}
public PowerSinkCounterUnlessPaysEffect(final PowerSinkCounterUnlessPaysEffect effect) {
@@ -98,19 +97,19 @@ class PowerSinkCounterUnlessPaysEffect extends OneShotEffect {
int amount = source.getManaCostsToPay().getX();
if (amount > 0) {
GenericManaCost cost = new GenericManaCost(amount);
- StringBuilder sb = new StringBuilder("Pay ").append(cost.getText()).append('?');
- if (player.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
+ String sb = String.valueOf("Pay " + cost.getText()) + Character.toString('?');
+ if (player.chooseUse(Outcome.Benefit, sb, source, game)) {
if (cost.pay(source, game, source.getSourceId(), player.getId(), false)) {
game.informPlayers(new StringBuilder(sourceObject.getName()).append(": additional cost was paid").toString());
return true;
}
}
-
+
// Counter target spell unless its controller pays {X}
if (game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game)) {
game.informPlayers(new StringBuilder(sourceObject.getName()).append(": additional cost wasn't paid - countering ").append(spell.getName()).toString());
}
-
+
// that player taps all lands with mana abilities he or she controls...
List lands = game.getBattlefield().getAllActivePermanents(new FilterLandPermanent(), player.getId(), game);
for (Permanent land : lands) {
@@ -131,5 +130,5 @@ class PowerSinkCounterUnlessPaysEffect extends OneShotEffect {
}
return false;
}
-
+
}
diff --git a/Mage.Sets/src/mage/cards/p/PowerSurge.java b/Mage.Sets/src/mage/cards/p/PowerSurge.java
index bfbc33132dc..51401a8ffac 100644
--- a/Mage.Sets/src/mage/cards/p/PowerSurge.java
+++ b/Mage.Sets/src/mage/cards/p/PowerSurge.java
@@ -52,7 +52,7 @@ import mage.watchers.Watcher;
*
* @author MTGfan
*/
-public class PowerSurge extends CardImpl {
+public final class PowerSurge extends CardImpl {
public PowerSurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Powerleech.java b/Mage.Sets/src/mage/cards/p/Powerleech.java
index ed876daebf2..01a64a8197a 100644
--- a/Mage.Sets/src/mage/cards/p/Powerleech.java
+++ b/Mage.Sets/src/mage/cards/p/Powerleech.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class Powerleech extends CardImpl {
+public final class Powerleech extends CardImpl {
public Powerleech(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PowerstoneMinefield.java b/Mage.Sets/src/mage/cards/p/PowerstoneMinefield.java
index a86873d9659..5d2235d4dfe 100644
--- a/Mage.Sets/src/mage/cards/p/PowerstoneMinefield.java
+++ b/Mage.Sets/src/mage/cards/p/PowerstoneMinefield.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author vereena42
*/
-public class PowerstoneMinefield extends CardImpl {
+public final class PowerstoneMinefield extends CardImpl {
public PowerstoneMinefield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PowerstoneShard.java b/Mage.Sets/src/mage/cards/p/PowerstoneShard.java
index 90dc3df5774..736066ce792 100644
--- a/Mage.Sets/src/mage/cards/p/PowerstoneShard.java
+++ b/Mage.Sets/src/mage/cards/p/PowerstoneShard.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author TheElk801
*/
-public class PowerstoneShard extends CardImpl {
+public final class PowerstoneShard extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control named Powerstone Shard");
diff --git a/Mage.Sets/src/mage/cards/p/Pox.java b/Mage.Sets/src/mage/cards/p/Pox.java
index 8f713f04a25..f5e66e5049a 100644
--- a/Mage.Sets/src/mage/cards/p/Pox.java
+++ b/Mage.Sets/src/mage/cards/p/Pox.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class Pox extends CardImpl {
+public final class Pox extends CardImpl {
public Pox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PradeshGypsies.java b/Mage.Sets/src/mage/cards/p/PradeshGypsies.java
index 034651fd7b6..0a4475f4923 100644
--- a/Mage.Sets/src/mage/cards/p/PradeshGypsies.java
+++ b/Mage.Sets/src/mage/cards/p/PradeshGypsies.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class PradeshGypsies extends CardImpl {
+public final class PradeshGypsies extends CardImpl {
public PradeshGypsies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PraetorsCounsel.java b/Mage.Sets/src/mage/cards/p/PraetorsCounsel.java
index fc23566e4ce..170e2af495d 100644
--- a/Mage.Sets/src/mage/cards/p/PraetorsCounsel.java
+++ b/Mage.Sets/src/mage/cards/p/PraetorsCounsel.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PraetorsCounsel extends CardImpl {
+public final class PraetorsCounsel extends CardImpl {
public PraetorsCounsel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PraetorsGrasp.java b/Mage.Sets/src/mage/cards/p/PraetorsGrasp.java
index 969bbb868dc..dda0b6b2bd9 100644
--- a/Mage.Sets/src/mage/cards/p/PraetorsGrasp.java
+++ b/Mage.Sets/src/mage/cards/p/PraetorsGrasp.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author BetaSteward
*/
-public class PraetorsGrasp extends CardImpl {
+public final class PraetorsGrasp extends CardImpl {
public PraetorsGrasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PrahvSpiresOfOrder.java b/Mage.Sets/src/mage/cards/p/PrahvSpiresOfOrder.java
index 315d99119ed..0abdf143b03 100644
--- a/Mage.Sets/src/mage/cards/p/PrahvSpiresOfOrder.java
+++ b/Mage.Sets/src/mage/cards/p/PrahvSpiresOfOrder.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class PrahvSpiresOfOrder extends CardImpl {
+public final class PrahvSpiresOfOrder extends CardImpl {
public PrahvSpiresOfOrder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/p/PrairieStream.java b/Mage.Sets/src/mage/cards/p/PrairieStream.java
index 910803683fc..ada260e3a6c 100644
--- a/Mage.Sets/src/mage/cards/p/PrairieStream.java
+++ b/Mage.Sets/src/mage/cards/p/PrairieStream.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author fireshoes
*/
-public class PrairieStream extends CardImpl {
+public final class PrairieStream extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/p/PrakhataClubSecurity.java b/Mage.Sets/src/mage/cards/p/PrakhataClubSecurity.java
index f8a4c64ab8f..123bae55e7e 100644
--- a/Mage.Sets/src/mage/cards/p/PrakhataClubSecurity.java
+++ b/Mage.Sets/src/mage/cards/p/PrakhataClubSecurity.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class PrakhataClubSecurity extends CardImpl {
+public final class PrakhataClubSecurity extends CardImpl {
public PrakhataClubSecurity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PrakhataPillarBug.java b/Mage.Sets/src/mage/cards/p/PrakhataPillarBug.java
index 61c7e4a90d5..bfbff8e8d06 100644
--- a/Mage.Sets/src/mage/cards/p/PrakhataPillarBug.java
+++ b/Mage.Sets/src/mage/cards/p/PrakhataPillarBug.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class PrakhataPillarBug extends CardImpl {
+public final class PrakhataPillarBug extends CardImpl {
public PrakhataPillarBug(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/Preacher.java b/Mage.Sets/src/mage/cards/p/Preacher.java
index fd3e5522a44..37ac2225d48 100644
--- a/Mage.Sets/src/mage/cards/p/Preacher.java
+++ b/Mage.Sets/src/mage/cards/p/Preacher.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetOpponentsChoicePermanent;
*
* @author spjspj
*/
-public class Preacher extends CardImpl {
+public final class Preacher extends CardImpl {
public Preacher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PrecinctCaptain.java b/Mage.Sets/src/mage/cards/p/PrecinctCaptain.java
index 420e366593b..7cfff0ef50d 100644
--- a/Mage.Sets/src/mage/cards/p/PrecinctCaptain.java
+++ b/Mage.Sets/src/mage/cards/p/PrecinctCaptain.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author Loki
*/
-public class PrecinctCaptain extends CardImpl {
+public final class PrecinctCaptain extends CardImpl {
public PrecinctCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PrecipiceOfMortis.java b/Mage.Sets/src/mage/cards/p/PrecipiceOfMortis.java
index cad4f3e7fbd..3afc768cb66 100644
--- a/Mage.Sets/src/mage/cards/p/PrecipiceOfMortis.java
+++ b/Mage.Sets/src/mage/cards/p/PrecipiceOfMortis.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class PrecipiceOfMortis extends CardImpl {
+public final class PrecipiceOfMortis extends CardImpl {
public PrecipiceOfMortis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}{U}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PreciseStrike.java b/Mage.Sets/src/mage/cards/p/PreciseStrike.java
index 891467b7e1e..ac817695b5c 100644
--- a/Mage.Sets/src/mage/cards/p/PreciseStrike.java
+++ b/Mage.Sets/src/mage/cards/p/PreciseStrike.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class PreciseStrike extends CardImpl {
+public final class PreciseStrike extends CardImpl {
public PreciseStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Precognition.java b/Mage.Sets/src/mage/cards/p/Precognition.java
index 8f7042d0fc5..bb2fe21354c 100644
--- a/Mage.Sets/src/mage/cards/p/Precognition.java
+++ b/Mage.Sets/src/mage/cards/p/Precognition.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class Precognition extends CardImpl {
+public final class Precognition extends CardImpl {
private static final String rule = "At the beginning of your upkeep, you may look at the top card of target opponent's library. You may put that card on the bottom of that player's library.";
diff --git a/Mage.Sets/src/mage/cards/p/PrecognitionField.java b/Mage.Sets/src/mage/cards/p/PrecognitionField.java
index e00a5d6915c..9e6c0a25d93 100644
--- a/Mage.Sets/src/mage/cards/p/PrecognitionField.java
+++ b/Mage.Sets/src/mage/cards/p/PrecognitionField.java
@@ -46,7 +46,7 @@ import mage.players.Player;
/**
* @author rscoates
*/
-public class PrecognitionField extends CardImpl {
+public final class PrecognitionField extends CardImpl {
public PrecognitionField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PrecursorGolem.java b/Mage.Sets/src/mage/cards/p/PrecursorGolem.java
index 9eb0e305c5f..ac5de4c11ee 100644
--- a/Mage.Sets/src/mage/cards/p/PrecursorGolem.java
+++ b/Mage.Sets/src/mage/cards/p/PrecursorGolem.java
@@ -54,7 +54,7 @@ import mage.util.TargetAddress;
/**
* @author duncant
*/
-public class PrecursorGolem extends CardImpl {
+public final class PrecursorGolem extends CardImpl {
public PrecursorGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/p/PredatorDragon.java b/Mage.Sets/src/mage/cards/p/PredatorDragon.java
index 952d1e95566..17fc3dd6f6c 100644
--- a/Mage.Sets/src/mage/cards/p/PredatorDragon.java
+++ b/Mage.Sets/src/mage/cards/p/PredatorDragon.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class PredatorDragon extends CardImpl {
+public final class PredatorDragon extends CardImpl {
public PredatorDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PredatorFlagship.java b/Mage.Sets/src/mage/cards/p/PredatorFlagship.java
index 84f29137229..bd5409b061b 100644
--- a/Mage.Sets/src/mage/cards/p/PredatorFlagship.java
+++ b/Mage.Sets/src/mage/cards/p/PredatorFlagship.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PredatorFlagship extends CardImpl {
+public final class PredatorFlagship extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/p/PredatorOoze.java b/Mage.Sets/src/mage/cards/p/PredatorOoze.java
index 54b97fe05ef..1ae73018904 100644
--- a/Mage.Sets/src/mage/cards/p/PredatorOoze.java
+++ b/Mage.Sets/src/mage/cards/p/PredatorOoze.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author BetaSteward
*/
-public class PredatorOoze extends CardImpl {
+public final class PredatorOoze extends CardImpl {
public PredatorOoze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PredatorsGambit.java b/Mage.Sets/src/mage/cards/p/PredatorsGambit.java
index 8787cfbc0c3..d31f8abef5b 100644
--- a/Mage.Sets/src/mage/cards/p/PredatorsGambit.java
+++ b/Mage.Sets/src/mage/cards/p/PredatorsGambit.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class PredatorsGambit extends CardImpl {
+public final class PredatorsGambit extends CardImpl {
private static final String rule = "Enchanted creature has intimidate as long as its controller controls no other creatures";
diff --git a/Mage.Sets/src/mage/cards/p/PredatorsHowl.java b/Mage.Sets/src/mage/cards/p/PredatorsHowl.java
index 71aeffc0fe5..47ee617e744 100644
--- a/Mage.Sets/src/mage/cards/p/PredatorsHowl.java
+++ b/Mage.Sets/src/mage/cards/p/PredatorsHowl.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.WolfToken;
*
* @author fireshoes
*/
-public class PredatorsHowl extends CardImpl {
+public final class PredatorsHowl extends CardImpl {
public PredatorsHowl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PredatorsRapport.java b/Mage.Sets/src/mage/cards/p/PredatorsRapport.java
index 4374bbf5347..7eabdf94316 100644
--- a/Mage.Sets/src/mage/cards/p/PredatorsRapport.java
+++ b/Mage.Sets/src/mage/cards/p/PredatorsRapport.java
@@ -44,7 +44,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class PredatorsRapport extends CardImpl {
+public final class PredatorsRapport extends CardImpl {
public PredatorsRapport(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PredatorsStrike.java b/Mage.Sets/src/mage/cards/p/PredatorsStrike.java
index c87a1772ce4..1170e6e8c83 100644
--- a/Mage.Sets/src/mage/cards/p/PredatorsStrike.java
+++ b/Mage.Sets/src/mage/cards/p/PredatorsStrike.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class PredatorsStrike extends CardImpl {
+public final class PredatorsStrike extends CardImpl {
public PredatorsStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PredatoryAdvantage.java b/Mage.Sets/src/mage/cards/p/PredatoryAdvantage.java
index be31794fbaf..5309598c32d 100644
--- a/Mage.Sets/src/mage/cards/p/PredatoryAdvantage.java
+++ b/Mage.Sets/src/mage/cards/p/PredatoryAdvantage.java
@@ -49,7 +49,7 @@ import mage.watchers.Watcher;
*
* @author jeffwadsworth
*/
-public class PredatoryAdvantage extends CardImpl {
+public final class PredatoryAdvantage extends CardImpl {
public PredatoryAdvantage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PredatoryHunger.java b/Mage.Sets/src/mage/cards/p/PredatoryHunger.java
index 333208e50aa..a8b1612c118 100644
--- a/Mage.Sets/src/mage/cards/p/PredatoryHunger.java
+++ b/Mage.Sets/src/mage/cards/p/PredatoryHunger.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author TheElk801
*/
-public class PredatoryHunger extends CardImpl {
+public final class PredatoryHunger extends CardImpl {
public PredatoryHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PredatoryNightstalker.java b/Mage.Sets/src/mage/cards/p/PredatoryNightstalker.java
index 24971923d7e..98b796d1bb9 100644
--- a/Mage.Sets/src/mage/cards/p/PredatoryNightstalker.java
+++ b/Mage.Sets/src/mage/cards/p/PredatoryNightstalker.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class PredatoryNightstalker extends CardImpl {
+public final class PredatoryNightstalker extends CardImpl {
public PredatoryNightstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PredatoryRampage.java b/Mage.Sets/src/mage/cards/p/PredatoryRampage.java
index c68179c20d5..4330c27db32 100644
--- a/Mage.Sets/src/mage/cards/p/PredatoryRampage.java
+++ b/Mage.Sets/src/mage/cards/p/PredatoryRampage.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
/**
* @author magenoxx_at_gmail.com
*/
-public class PredatoryRampage extends CardImpl {
+public final class PredatoryRampage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature your opponents control");
diff --git a/Mage.Sets/src/mage/cards/p/PredatorySliver.java b/Mage.Sets/src/mage/cards/p/PredatorySliver.java
index 9a8f44527c8..128836f77ef 100644
--- a/Mage.Sets/src/mage/cards/p/PredatorySliver.java
+++ b/Mage.Sets/src/mage/cards/p/PredatorySliver.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class PredatorySliver extends CardImpl {
+public final class PredatorySliver extends CardImpl {
public PredatorySliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PredatoryUrge.java b/Mage.Sets/src/mage/cards/p/PredatoryUrge.java
index a3edc773191..b995caa091c 100644
--- a/Mage.Sets/src/mage/cards/p/PredatoryUrge.java
+++ b/Mage.Sets/src/mage/cards/p/PredatoryUrge.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class PredatoryUrge extends CardImpl {
+public final class PredatoryUrge extends CardImpl {
public PredatoryUrge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/Predict.java b/Mage.Sets/src/mage/cards/p/Predict.java
index 61d9e11c35b..28817e91cf1 100644
--- a/Mage.Sets/src/mage/cards/p/Predict.java
+++ b/Mage.Sets/src/mage/cards/p/Predict.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Quercitron
*/
-public class Predict extends CardImpl {
+public final class Predict extends CardImpl {
public Predict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PreeminentCaptain.java b/Mage.Sets/src/mage/cards/p/PreeminentCaptain.java
index a49ff3ea022..03779aabacb 100644
--- a/Mage.Sets/src/mage/cards/p/PreeminentCaptain.java
+++ b/Mage.Sets/src/mage/cards/p/PreeminentCaptain.java
@@ -48,13 +48,13 @@ import mage.players.Player;
import mage.target.common.TargetCardInHand;
/**
- *
+ *
* @author Rafbill
*/
-public class PreeminentCaptain extends CardImpl {
+public final class PreeminentCaptain extends CardImpl {
public PreeminentCaptain(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
this.subtype.add(SubType.KITHKIN);
this.subtype.add(SubType.SOLDIER);
@@ -96,20 +96,22 @@ class PreeminentCaptainEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
+ Player controller = game.getPlayer(source.getControllerId());
TargetCardInHand target = new TargetCardInHand(filter);
- if (target.canChoose(player.getId(), game) && target.choose(getOutcome(), player.getId(), source.getSourceId(), game)) {
+ if (target.canChoose(controller.getId(), game) && target.choose(getOutcome(), controller.getId(), source.getSourceId(), game)) {
if (!target.getTargets().isEmpty()) {
UUID cardId = target.getFirstTarget();
- Card card = player.getHand().get(cardId, game);
+ Card card = controller.getHand().get(cardId, game);
if (card != null) {
- if (card.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), source.getControllerId(), true)) {
+ if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
Permanent permanent = game.getPermanent(card.getId());
- game.getCombat().addAttackingCreature(permanent.getId(), game);
+ if (permanent != null) {
+ game.getCombat().addAttackingCreature(permanent.getId(), game);
+ }
}
}
- return true;
}
+ return true;
}
return false;
}
diff --git a/Mage.Sets/src/mage/cards/p/PreemptiveStrike.java b/Mage.Sets/src/mage/cards/p/PreemptiveStrike.java
index 6fe7bac0ce7..c23a556c69a 100644
--- a/Mage.Sets/src/mage/cards/p/PreemptiveStrike.java
+++ b/Mage.Sets/src/mage/cards/p/PreemptiveStrike.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author Jgod
*/
-public class PreemptiveStrike extends CardImpl {
+public final class PreemptiveStrike extends CardImpl {
public PreemptiveStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Preordain.java b/Mage.Sets/src/mage/cards/p/Preordain.java
index 26ae2adab73..8db6c756bba 100644
--- a/Mage.Sets/src/mage/cards/p/Preordain.java
+++ b/Mage.Sets/src/mage/cards/p/Preordain.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Preordain extends CardImpl {
+public final class Preordain extends CardImpl {
public Preordain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PrepareFight.java b/Mage.Sets/src/mage/cards/p/PrepareFight.java
index 07fd0a80951..c4d8d275f5b 100644
--- a/Mage.Sets/src/mage/cards/p/PrepareFight.java
+++ b/Mage.Sets/src/mage/cards/p/PrepareFight.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author stravant
*/
-public class PrepareFight extends SplitCard {
+public final class PrepareFight extends SplitCard {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/p/PrescientChimera.java b/Mage.Sets/src/mage/cards/p/PrescientChimera.java
index 8f85aa8de2e..46063ee587e 100644
--- a/Mage.Sets/src/mage/cards/p/PrescientChimera.java
+++ b/Mage.Sets/src/mage/cards/p/PrescientChimera.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class PrescientChimera extends CardImpl {
+public final class PrescientChimera extends CardImpl {
public PrescientChimera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PresenceOfGond.java b/Mage.Sets/src/mage/cards/p/PresenceOfGond.java
index 281492f9a5f..9def235b89f 100644
--- a/Mage.Sets/src/mage/cards/p/PresenceOfGond.java
+++ b/Mage.Sets/src/mage/cards/p/PresenceOfGond.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PresenceOfGond extends CardImpl {
+public final class PresenceOfGond extends CardImpl {
public PresenceOfGond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PresenceOfTheMaster.java b/Mage.Sets/src/mage/cards/p/PresenceOfTheMaster.java
index 208ea4c9d5d..09bcca10575 100644
--- a/Mage.Sets/src/mage/cards/p/PresenceOfTheMaster.java
+++ b/Mage.Sets/src/mage/cards/p/PresenceOfTheMaster.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class PresenceOfTheMaster extends CardImpl {
+public final class PresenceOfTheMaster extends CardImpl {
public PresenceOfTheMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PresenceOfTheWise.java b/Mage.Sets/src/mage/cards/p/PresenceOfTheWise.java
index e0c0676cda1..2adac67c67e 100644
--- a/Mage.Sets/src/mage/cards/p/PresenceOfTheWise.java
+++ b/Mage.Sets/src/mage/cards/p/PresenceOfTheWise.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class PresenceOfTheWise extends CardImpl {
+public final class PresenceOfTheWise extends CardImpl {
public PresenceOfTheWise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PressForAnswers.java b/Mage.Sets/src/mage/cards/p/PressForAnswers.java
index 5a9aece4e0e..077910f22fa 100644
--- a/Mage.Sets/src/mage/cards/p/PressForAnswers.java
+++ b/Mage.Sets/src/mage/cards/p/PressForAnswers.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PressForAnswers extends CardImpl {
+public final class PressForAnswers extends CardImpl {
public PressForAnswers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PressIntoService.java b/Mage.Sets/src/mage/cards/p/PressIntoService.java
index 0c7e4f23f6d..ac2e52f7c32 100644
--- a/Mage.Sets/src/mage/cards/p/PressIntoService.java
+++ b/Mage.Sets/src/mage/cards/p/PressIntoService.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author fireshoes
*/
-public class PressIntoService extends CardImpl {
+public final class PressIntoService extends CardImpl {
public PressIntoService(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PressTheAdvantage.java b/Mage.Sets/src/mage/cards/p/PressTheAdvantage.java
index 46363504cf5..dcb4d5bd9b3 100644
--- a/Mage.Sets/src/mage/cards/p/PressTheAdvantage.java
+++ b/Mage.Sets/src/mage/cards/p/PressTheAdvantage.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PressTheAdvantage extends CardImpl {
+public final class PressTheAdvantage extends CardImpl {
public PressTheAdvantage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PressurePoint.java b/Mage.Sets/src/mage/cards/p/PressurePoint.java
index f56b34e2476..10c893ec82b 100644
--- a/Mage.Sets/src/mage/cards/p/PressurePoint.java
+++ b/Mage.Sets/src/mage/cards/p/PressurePoint.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class PressurePoint extends CardImpl {
+public final class PressurePoint extends CardImpl {
public PressurePoint(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PreyUpon.java b/Mage.Sets/src/mage/cards/p/PreyUpon.java
index e4987afaea8..73a67ce9c8a 100644
--- a/Mage.Sets/src/mage/cards/p/PreyUpon.java
+++ b/Mage.Sets/src/mage/cards/p/PreyUpon.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward
*/
-public class PreyUpon extends CardImpl {
+public final class PreyUpon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/p/PreysVengeance.java b/Mage.Sets/src/mage/cards/p/PreysVengeance.java
index 717b1293a28..2e1518b7c16 100644
--- a/Mage.Sets/src/mage/cards/p/PreysVengeance.java
+++ b/Mage.Sets/src/mage/cards/p/PreysVengeance.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class PreysVengeance extends CardImpl {
+public final class PreysVengeance extends CardImpl {
public PreysVengeance (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PreyseizerDragon.java b/Mage.Sets/src/mage/cards/p/PreyseizerDragon.java
index 99f156a975b..c81cfdea5c9 100644
--- a/Mage.Sets/src/mage/cards/p/PreyseizerDragon.java
+++ b/Mage.Sets/src/mage/cards/p/PreyseizerDragon.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class PreyseizerDragon extends CardImpl {
+public final class PreyseizerDragon extends CardImpl {
public PreyseizerDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PriceOfGlory.java b/Mage.Sets/src/mage/cards/p/PriceOfGlory.java
index 8f039fcdad6..243deb852ec 100644
--- a/Mage.Sets/src/mage/cards/p/PriceOfGlory.java
+++ b/Mage.Sets/src/mage/cards/p/PriceOfGlory.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author cbt33, Loki (Heartbeat of Spring)
*/
-public class PriceOfGlory extends CardImpl {
+public final class PriceOfGlory extends CardImpl {
public PriceOfGlory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PriceOfKnowledge.java b/Mage.Sets/src/mage/cards/p/PriceOfKnowledge.java
index 02255af465c..445b787e4dd 100644
--- a/Mage.Sets/src/mage/cards/p/PriceOfKnowledge.java
+++ b/Mage.Sets/src/mage/cards/p/PriceOfKnowledge.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class PriceOfKnowledge extends CardImpl {
+public final class PriceOfKnowledge extends CardImpl {
public PriceOfKnowledge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PriceOfProgress.java b/Mage.Sets/src/mage/cards/p/PriceOfProgress.java
index b0a6f02f7ac..1d50f3755b7 100644
--- a/Mage.Sets/src/mage/cards/p/PriceOfProgress.java
+++ b/Mage.Sets/src/mage/cards/p/PriceOfProgress.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class PriceOfProgress extends CardImpl {
+public final class PriceOfProgress extends CardImpl {
public PriceOfProgress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Prickleboar.java b/Mage.Sets/src/mage/cards/p/Prickleboar.java
index a5038ba4de4..558ea815570 100644
--- a/Mage.Sets/src/mage/cards/p/Prickleboar.java
+++ b/Mage.Sets/src/mage/cards/p/Prickleboar.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author Wehk
*/
-public class Prickleboar extends CardImpl {
+public final class Prickleboar extends CardImpl {
public Prickleboar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PricklyBoggart.java b/Mage.Sets/src/mage/cards/p/PricklyBoggart.java
index 596fcb4e362..a40f8dfb708 100644
--- a/Mage.Sets/src/mage/cards/p/PricklyBoggart.java
+++ b/Mage.Sets/src/mage/cards/p/PricklyBoggart.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PricklyBoggart extends CardImpl {
+public final class PricklyBoggart extends CardImpl {
public PricklyBoggart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PrideGuardian.java b/Mage.Sets/src/mage/cards/p/PrideGuardian.java
index b6a00f06c49..7813e09c190 100644
--- a/Mage.Sets/src/mage/cards/p/PrideGuardian.java
+++ b/Mage.Sets/src/mage/cards/p/PrideGuardian.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class PrideGuardian extends CardImpl {
+public final class PrideGuardian extends CardImpl {
public PrideGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PrideOfConquerors.java b/Mage.Sets/src/mage/cards/p/PrideOfConquerors.java
index 21e9f0bc531..398a9c329b8 100644
--- a/Mage.Sets/src/mage/cards/p/PrideOfConquerors.java
+++ b/Mage.Sets/src/mage/cards/p/PrideOfConquerors.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class PrideOfConquerors extends CardImpl {
+public final class PrideOfConquerors extends CardImpl {
public PrideOfConquerors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PrideOfLions.java b/Mage.Sets/src/mage/cards/p/PrideOfLions.java
index 881a865c3b1..d49bcc86d3a 100644
--- a/Mage.Sets/src/mage/cards/p/PrideOfLions.java
+++ b/Mage.Sets/src/mage/cards/p/PrideOfLions.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author anonymous
*/
-public class PrideOfLions extends CardImpl {
+public final class PrideOfLions extends CardImpl {
public PrideOfLions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrideOfTheClouds.java b/Mage.Sets/src/mage/cards/p/PrideOfTheClouds.java
index 723826854b2..13167ee770c 100644
--- a/Mage.Sets/src/mage/cards/p/PrideOfTheClouds.java
+++ b/Mage.Sets/src/mage/cards/p/PrideOfTheClouds.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class PrideOfTheClouds extends CardImpl {
+public final class PrideOfTheClouds extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature with flying on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/p/PrideSovereign.java b/Mage.Sets/src/mage/cards/p/PrideSovereign.java
index 386a7c50420..d200980c25a 100644
--- a/Mage.Sets/src/mage/cards/p/PrideSovereign.java
+++ b/Mage.Sets/src/mage/cards/p/PrideSovereign.java
@@ -53,7 +53,7 @@ import mage.game.permanent.token.CatToken2;
*
* @author LevelX2
*/
-public class PrideSovereign extends CardImpl {
+public final class PrideSovereign extends CardImpl {
public PrideSovereign(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PriestOfGix.java b/Mage.Sets/src/mage/cards/p/PriestOfGix.java
index f33308b59dc..3acaaad85b7 100644
--- a/Mage.Sets/src/mage/cards/p/PriestOfGix.java
+++ b/Mage.Sets/src/mage/cards/p/PriestOfGix.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class PriestOfGix extends CardImpl {
+public final class PriestOfGix extends CardImpl {
public PriestOfGix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PriestOfIroas.java b/Mage.Sets/src/mage/cards/p/PriestOfIroas.java
index 9839cf032a1..96b1d0b6bf9 100644
--- a/Mage.Sets/src/mage/cards/p/PriestOfIroas.java
+++ b/Mage.Sets/src/mage/cards/p/PriestOfIroas.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class PriestOfIroas extends CardImpl {
+public final class PriestOfIroas extends CardImpl {
public PriestOfIroas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PriestOfTheBloodRite.java b/Mage.Sets/src/mage/cards/p/PriestOfTheBloodRite.java
index e8999b9ae1a..4e83b263a55 100644
--- a/Mage.Sets/src/mage/cards/p/PriestOfTheBloodRite.java
+++ b/Mage.Sets/src/mage/cards/p/PriestOfTheBloodRite.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.DemonToken;
*
* @author fireshoes
*/
-public class PriestOfTheBloodRite extends CardImpl {
+public final class PriestOfTheBloodRite extends CardImpl {
public PriestOfTheBloodRite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PriestOfTheWakeningSun.java b/Mage.Sets/src/mage/cards/p/PriestOfTheWakeningSun.java
index 6d9f81e34a7..5cb023b59af 100644
--- a/Mage.Sets/src/mage/cards/p/PriestOfTheWakeningSun.java
+++ b/Mage.Sets/src/mage/cards/p/PriestOfTheWakeningSun.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author spjspj
*/
-public class PriestOfTheWakeningSun extends CardImpl {
+public final class PriestOfTheWakeningSun extends CardImpl {
private static final FilterCard filter = new FilterCard("Dinosaur card");
diff --git a/Mage.Sets/src/mage/cards/p/PriestOfTitania.java b/Mage.Sets/src/mage/cards/p/PriestOfTitania.java
index e38c969cd4f..df9fab53297 100644
--- a/Mage.Sets/src/mage/cards/p/PriestOfTitania.java
+++ b/Mage.Sets/src/mage/cards/p/PriestOfTitania.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author BetaSteward_at_googlemail.com, North
*/
-public class PriestOfTitania extends CardImpl {
+public final class PriestOfTitania extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/p/PriestOfUrabrask.java b/Mage.Sets/src/mage/cards/p/PriestOfUrabrask.java
index 7cde7a13709..a22b2da099e 100644
--- a/Mage.Sets/src/mage/cards/p/PriestOfUrabrask.java
+++ b/Mage.Sets/src/mage/cards/p/PriestOfUrabrask.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PriestOfUrabrask extends CardImpl {
+public final class PriestOfUrabrask extends CardImpl {
public PriestOfUrabrask(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PriestOfYawgmoth.java b/Mage.Sets/src/mage/cards/p/PriestOfYawgmoth.java
index ca0634b84d2..c5747805664 100644
--- a/Mage.Sets/src/mage/cards/p/PriestOfYawgmoth.java
+++ b/Mage.Sets/src/mage/cards/p/PriestOfYawgmoth.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class PriestOfYawgmoth extends CardImpl {
+public final class PriestOfYawgmoth extends CardImpl {
public PriestOfYawgmoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PriestsOfNorn.java b/Mage.Sets/src/mage/cards/p/PriestsOfNorn.java
index 5dee024ebbf..0dc1e52effa 100644
--- a/Mage.Sets/src/mage/cards/p/PriestsOfNorn.java
+++ b/Mage.Sets/src/mage/cards/p/PriestsOfNorn.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author ayratn
*/
-public class PriestsOfNorn extends CardImpl {
+public final class PriestsOfNorn extends CardImpl {
public PriestsOfNorn (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalAmulet.java b/Mage.Sets/src/mage/cards/p/PrimalAmulet.java
index e62c449573d..b49ec7236bc 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalAmulet.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalAmulet.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class PrimalAmulet extends CardImpl {
+public final class PrimalAmulet extends CardImpl {
private static final FilterCard filter = new FilterCard("Instant and sorcery spells");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalBellow.java b/Mage.Sets/src/mage/cards/p/PrimalBellow.java
index 0e908dbe2ad..5dee2daca6a 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalBellow.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalBellow.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class PrimalBellow extends CardImpl {
+public final class PrimalBellow extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Forest you control");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalBeyond.java b/Mage.Sets/src/mage/cards/p/PrimalBeyond.java
index 1a163165ff4..74c0be095e5 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalBeyond.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalBeyond.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInHand;
*
* @author TGower
*/
-public class PrimalBeyond extends CardImpl {
+public final class PrimalBeyond extends CardImpl {
private static final FilterCard filter = new FilterCard("a Elemental card from your hand");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalBoost.java b/Mage.Sets/src/mage/cards/p/PrimalBoost.java
index a4852c249bf..e2957f9621b 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalBoost.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalBoost.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class PrimalBoost extends CardImpl {
+public final class PrimalBoost extends CardImpl {
public PrimalBoost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalClay.java b/Mage.Sets/src/mage/cards/p/PrimalClay.java
index 2c4b5f532fd..10b353fd567 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalClay.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalClay.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class PrimalClay extends CardImpl {
+public final class PrimalClay extends CardImpl {
public PrimalClay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalCocoon.java b/Mage.Sets/src/mage/cards/p/PrimalCocoon.java
index b89d87d0615..5f66372d945 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalCocoon.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalCocoon.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PrimalCocoon extends CardImpl {
+public final class PrimalCocoon extends CardImpl {
public PrimalCocoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalCommand.java b/Mage.Sets/src/mage/cards/p/PrimalCommand.java
index 5bd1add2c54..68a352a791a 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalCommand.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalCommand.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class PrimalCommand extends CardImpl {
+public final class PrimalCommand extends CardImpl {
private static final FilterPermanent filterNonCreature = new FilterPermanent("noncreature permanent");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PrimalDruid.java b/Mage.Sets/src/mage/cards/p/PrimalDruid.java
index f733fb87c4f..2940df1a4b4 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalDruid.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalDruid.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class PrimalDruid extends CardImpl {
+public final class PrimalDruid extends CardImpl {
public PrimalDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
@@ -54,7 +54,7 @@ public class PrimalDruid extends CardImpl {
this.toughness = new MageInt(3);
// When Primal Druid dies, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- Effect effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true);
+ Effect effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true);
effect.setText("you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library");
this.addAbility(new DiesTriggeredAbility(effect, true));
diff --git a/Mage.Sets/src/mage/cards/p/PrimalForcemage.java b/Mage.Sets/src/mage/cards/p/PrimalForcemage.java
index c5f16a10886..d5ac8d03acf 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalForcemage.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalForcemage.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class PrimalForcemage extends CardImpl {
+public final class PrimalForcemage extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalFrenzy.java b/Mage.Sets/src/mage/cards/p/PrimalFrenzy.java
index aa8c822553a..a8ea8bc2ad0 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalFrenzy.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalFrenzy.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class PrimalFrenzy extends CardImpl {
+public final class PrimalFrenzy extends CardImpl {
public PrimalFrenzy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalGrowth.java b/Mage.Sets/src/mage/cards/p/PrimalGrowth.java
index 3a3d9531e36..9bfe7335961 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalGrowth.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalGrowth.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class PrimalGrowth extends CardImpl {
+public final class PrimalGrowth extends CardImpl {
public PrimalGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
@@ -55,8 +55,8 @@ public class PrimalGrowth extends CardImpl {
// Search your library for a basic land card, put that card onto the battlefield, then shuffle your library. If Primal Growth was kicked, instead search your library for up to two basic land cards, put them onto the battlefield, then shuffle your library.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD), false, true),
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD), false, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
KickedCondition.instance,
"Search your library for a basic land card, put that card onto the battlefield, then shuffle your library. If this spell was kicked, instead search your library for up to two basic land cards, put them onto the battlefield, then shuffle your library"));
}
diff --git a/Mage.Sets/src/mage/cards/p/PrimalHuntbeast.java b/Mage.Sets/src/mage/cards/p/PrimalHuntbeast.java
index 5b37bdaf5eb..799660295a3 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalHuntbeast.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalHuntbeast.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PrimalHuntbeast extends CardImpl {
+public final class PrimalHuntbeast extends CardImpl {
public PrimalHuntbeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalInstinct.java b/Mage.Sets/src/mage/cards/p/PrimalInstinct.java
index 06499be09a1..ea44158dc79 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalInstinct.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalInstinct.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class PrimalInstinct extends CardImpl {
+public final class PrimalInstinct extends CardImpl {
public PrimalInstinct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalOrder.java b/Mage.Sets/src/mage/cards/p/PrimalOrder.java
index f3e6454b112..084c9fb3ff3 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalOrder.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalOrder.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class PrimalOrder extends CardImpl {
+public final class PrimalOrder extends CardImpl {
public PrimalOrder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalPlasma.java b/Mage.Sets/src/mage/cards/p/PrimalPlasma.java
index 591679f5e4d..02ebbb5efc3 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalPlasma.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalPlasma.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class PrimalPlasma extends CardImpl {
+public final class PrimalPlasma extends CardImpl {
public PrimalPlasma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalRage.java b/Mage.Sets/src/mage/cards/p/PrimalRage.java
index de0bc8f51f4..e82218b3779 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalRage.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalRage.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class PrimalRage extends CardImpl {
+public final class PrimalRage extends CardImpl {
public PrimalRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalSurge.java b/Mage.Sets/src/mage/cards/p/PrimalSurge.java
index e34c3424675..a7922822675 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalSurge.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalSurge.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author North
*/
-public class PrimalSurge extends CardImpl {
+public final class PrimalSurge extends CardImpl {
public PrimalSurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{8}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalVigor.java b/Mage.Sets/src/mage/cards/p/PrimalVigor.java
index c3864291885..aae63813b95 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalVigor.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalVigor.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class PrimalVigor extends CardImpl {
+public final class PrimalVigor extends CardImpl {
public PrimalVigor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalVisitation.java b/Mage.Sets/src/mage/cards/p/PrimalVisitation.java
index 64d8641d196..a1c77bde397 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalVisitation.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalVisitation.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PrimalVisitation extends CardImpl {
+public final class PrimalVisitation extends CardImpl {
public PrimalVisitation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalWellspring.java b/Mage.Sets/src/mage/cards/p/PrimalWellspring.java
index 9c207f54754..58027930e1d 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalWellspring.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalWellspring.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class PrimalWellspring extends CardImpl {
+public final class PrimalWellspring extends CardImpl {
public PrimalWellspring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalWhisperer.java b/Mage.Sets/src/mage/cards/p/PrimalWhisperer.java
index 9f60a6432ea..91a23c45a0e 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalWhisperer.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalWhisperer.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.other.FaceDownPredicate;
*
* @author LoneFox
*/
-public class PrimalWhisperer extends CardImpl {
+public final class PrimalWhisperer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face-down creature");
diff --git a/Mage.Sets/src/mage/cards/p/Primalcrux.java b/Mage.Sets/src/mage/cards/p/Primalcrux.java
index a46e610afa4..23ac5303dbd 100644
--- a/Mage.Sets/src/mage/cards/p/Primalcrux.java
+++ b/Mage.Sets/src/mage/cards/p/Primalcrux.java
@@ -50,7 +50,7 @@ import mage.game.Game;
* @author jeffwadsworth
*
*/
-public class Primalcrux extends CardImpl {
+public final class Primalcrux extends CardImpl {
public Primalcrux(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{G}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimeSpeakerZegana.java b/Mage.Sets/src/mage/cards/p/PrimeSpeakerZegana.java
index ede4efb0181..40979ae9685 100644
--- a/Mage.Sets/src/mage/cards/p/PrimeSpeakerZegana.java
+++ b/Mage.Sets/src/mage/cards/p/PrimeSpeakerZegana.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class PrimeSpeakerZegana extends CardImpl {
+public final class PrimeSpeakerZegana extends CardImpl {
public PrimeSpeakerZegana(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimevalBounty.java b/Mage.Sets/src/mage/cards/p/PrimevalBounty.java
index cb13384062f..a27b6daf37e 100644
--- a/Mage.Sets/src/mage/cards/p/PrimevalBounty.java
+++ b/Mage.Sets/src/mage/cards/p/PrimevalBounty.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class PrimevalBounty extends CardImpl {
+public final class PrimevalBounty extends CardImpl {
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/p/PrimevalForce.java b/Mage.Sets/src/mage/cards/p/PrimevalForce.java
index e9aee8dfd06..cde64c29d79 100644
--- a/Mage.Sets/src/mage/cards/p/PrimevalForce.java
+++ b/Mage.Sets/src/mage/cards/p/PrimevalForce.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class PrimevalForce extends CardImpl {
+public final class PrimevalForce extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("three Forests");
static{
diff --git a/Mage.Sets/src/mage/cards/p/PrimevalLight.java b/Mage.Sets/src/mage/cards/p/PrimevalLight.java
index 3a73ed46841..6f0112f4d71 100644
--- a/Mage.Sets/src/mage/cards/p/PrimevalLight.java
+++ b/Mage.Sets/src/mage/cards/p/PrimevalLight.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author L_J
*/
-public class PrimevalLight extends CardImpl {
+public final class PrimevalLight extends CardImpl {
public PrimevalLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimevalProtector.java b/Mage.Sets/src/mage/cards/p/PrimevalProtector.java
index f96e2ea0c2b..256658d8952 100644
--- a/Mage.Sets/src/mage/cards/p/PrimevalProtector.java
+++ b/Mage.Sets/src/mage/cards/p/PrimevalProtector.java
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class PrimevalProtector extends CardImpl {
+public final class PrimevalProtector extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/PrimevalShambler.java b/Mage.Sets/src/mage/cards/p/PrimevalShambler.java
index 33b11a78db2..6138ea576e5 100644
--- a/Mage.Sets/src/mage/cards/p/PrimevalShambler.java
+++ b/Mage.Sets/src/mage/cards/p/PrimevalShambler.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class PrimevalShambler extends CardImpl {
+public final class PrimevalShambler extends CardImpl {
public PrimevalShambler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimevalTitan.java b/Mage.Sets/src/mage/cards/p/PrimevalTitan.java
index 2e6f4b616fa..dc5545af944 100644
--- a/Mage.Sets/src/mage/cards/p/PrimevalTitan.java
+++ b/Mage.Sets/src/mage/cards/p/PrimevalTitan.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PrimevalTitan extends CardImpl {
+public final class PrimevalTitan extends CardImpl {
public PrimevalTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimevalsGloriousRebirth.java b/Mage.Sets/src/mage/cards/p/PrimevalsGloriousRebirth.java
index 9e1963d2701..02a9a81a3d0 100644
--- a/Mage.Sets/src/mage/cards/p/PrimevalsGloriousRebirth.java
+++ b/Mage.Sets/src/mage/cards/p/PrimevalsGloriousRebirth.java
@@ -5,7 +5,6 @@ import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.LegendarySpellAbility;
import mage.abilities.effects.OneShotEffect;
-import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@@ -15,10 +14,9 @@ import mage.game.Game;
import mage.players.Player;
/**
- * @author JRHerlehy
- * Created on 4/8/18.
+ * @author JRHerlehy Created on 4/8/18.
*/
-public class PrimevalsGloriousRebirth extends CardImpl {
+public final class PrimevalsGloriousRebirth extends CardImpl {
public PrimevalsGloriousRebirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{W}{B}");
@@ -61,11 +59,10 @@ class PrimevalsGloriousRebirthEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- if (player != null) {
- for (Card card : player.getGraveyard().getCards(filter, game)) {
- card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId());
- }
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ controller.moveCards(controller.getGraveyard().getCards(filter, game), Zone.BATTLEFIELD, source, game);
+ return true;
}
return false;
}
diff --git a/Mage.Sets/src/mage/cards/p/PrimitiveEtchings.java b/Mage.Sets/src/mage/cards/p/PrimitiveEtchings.java
index 7813aa542eb..d5bc39376ce 100644
--- a/Mage.Sets/src/mage/cards/p/PrimitiveEtchings.java
+++ b/Mage.Sets/src/mage/cards/p/PrimitiveEtchings.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class PrimitiveEtchings extends CardImpl {
+public final class PrimitiveEtchings extends CardImpl {
public PrimitiveEtchings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimocEscapee.java b/Mage.Sets/src/mage/cards/p/PrimocEscapee.java
index 7d52505f1a0..59339a8326e 100644
--- a/Mage.Sets/src/mage/cards/p/PrimocEscapee.java
+++ b/Mage.Sets/src/mage/cards/p/PrimocEscapee.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PrimocEscapee extends CardImpl {
+public final class PrimocEscapee extends CardImpl {
public PrimocEscapee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimordialHydra.java b/Mage.Sets/src/mage/cards/p/PrimordialHydra.java
index 5e1aae63434..a256b588afb 100644
--- a/Mage.Sets/src/mage/cards/p/PrimordialHydra.java
+++ b/Mage.Sets/src/mage/cards/p/PrimordialHydra.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class PrimordialHydra extends CardImpl {
+public final class PrimordialHydra extends CardImpl {
private static final String staticText = "{this} has trample as long as it has ten or more +1/+1 counters on it";
diff --git a/Mage.Sets/src/mage/cards/p/PrimordialOoze.java b/Mage.Sets/src/mage/cards/p/PrimordialOoze.java
index bea95cb56c1..f006133a4a6 100644
--- a/Mage.Sets/src/mage/cards/p/PrimordialOoze.java
+++ b/Mage.Sets/src/mage/cards/p/PrimordialOoze.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class PrimordialOoze extends CardImpl {
+public final class PrimordialOoze extends CardImpl {
public PrimordialOoze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimordialSage.java b/Mage.Sets/src/mage/cards/p/PrimordialSage.java
index e80831f68d8..45c6b7b4424 100644
--- a/Mage.Sets/src/mage/cards/p/PrimordialSage.java
+++ b/Mage.Sets/src/mage/cards/p/PrimordialSage.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class PrimordialSage extends CardImpl {
+public final class PrimordialSage extends CardImpl {
public PrimordialSage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimordialWurm.java b/Mage.Sets/src/mage/cards/p/PrimordialWurm.java
index c02fe49bb00..d0ee3b2a206 100644
--- a/Mage.Sets/src/mage/cards/p/PrimordialWurm.java
+++ b/Mage.Sets/src/mage/cards/p/PrimordialWurm.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class PrimordialWurm extends CardImpl {
+public final class PrimordialWurm extends CardImpl {
public PrimordialWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrinceOfThralls.java b/Mage.Sets/src/mage/cards/p/PrinceOfThralls.java
index bedd2b7a7cf..e8f35c82e89 100644
--- a/Mage.Sets/src/mage/cards/p/PrinceOfThralls.java
+++ b/Mage.Sets/src/mage/cards/p/PrinceOfThralls.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class PrinceOfThralls extends CardImpl {
+public final class PrinceOfThralls extends CardImpl {
public PrinceOfThralls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{B}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PrincessLeia.java b/Mage.Sets/src/mage/cards/p/PrincessLeia.java
index bf7b0da7a3c..d7377d17a35 100644
--- a/Mage.Sets/src/mage/cards/p/PrincessLeia.java
+++ b/Mage.Sets/src/mage/cards/p/PrincessLeia.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.RebelToken;
*
* @author Styxo
*/
-public class PrincessLeia extends CardImpl {
+public final class PrincessLeia extends CardImpl {
private static final FilterControlledCreaturePermanent filter1 = new FilterControlledCreaturePermanent("other Rebel creature you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Rebel creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/PrincessLucrezia.java b/Mage.Sets/src/mage/cards/p/PrincessLucrezia.java
index d187d031718..3d61a8ee67a 100644
--- a/Mage.Sets/src/mage/cards/p/PrincessLucrezia.java
+++ b/Mage.Sets/src/mage/cards/p/PrincessLucrezia.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class PrincessLucrezia extends CardImpl {
+public final class PrincessLucrezia extends CardImpl {
public PrincessLucrezia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PrismArray.java b/Mage.Sets/src/mage/cards/p/PrismArray.java
index d4a807fa806..88c33f36959 100644
--- a/Mage.Sets/src/mage/cards/p/PrismArray.java
+++ b/Mage.Sets/src/mage/cards/p/PrismArray.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class PrismArray extends CardImpl {
+public final class PrismArray extends CardImpl {
public PrismArray(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PrismRing.java b/Mage.Sets/src/mage/cards/p/PrismRing.java
index fc852757463..84d9f50a2d8 100644
--- a/Mage.Sets/src/mage/cards/p/PrismRing.java
+++ b/Mage.Sets/src/mage/cards/p/PrismRing.java
@@ -46,7 +46,7 @@ import mage.game.stack.Spell;
*
* @author LevelX2
*/
-public class PrismRing extends CardImpl {
+public final class PrismRing extends CardImpl {
public PrismRing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/p/PrismaticCircle.java b/Mage.Sets/src/mage/cards/p/PrismaticCircle.java
index e44c8449d62..077f0c019af 100644
--- a/Mage.Sets/src/mage/cards/p/PrismaticCircle.java
+++ b/Mage.Sets/src/mage/cards/p/PrismaticCircle.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author TheElk801
*/
-public class PrismaticCircle extends CardImpl {
+public final class PrismaticCircle extends CardImpl {
public PrismaticCircle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PrismaticGeoscope.java b/Mage.Sets/src/mage/cards/p/PrismaticGeoscope.java
index f9a1eb57c91..d65d4d0a18d 100644
--- a/Mage.Sets/src/mage/cards/p/PrismaticGeoscope.java
+++ b/Mage.Sets/src/mage/cards/p/PrismaticGeoscope.java
@@ -43,7 +43,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class PrismaticGeoscope extends CardImpl {
+public final class PrismaticGeoscope extends CardImpl {
public PrismaticGeoscope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/p/PrismaticLace.java b/Mage.Sets/src/mage/cards/p/PrismaticLace.java
index 2f8930b838d..eb99b048ce5 100644
--- a/Mage.Sets/src/mage/cards/p/PrismaticLace.java
+++ b/Mage.Sets/src/mage/cards/p/PrismaticLace.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
*
* @author L_J
*/
-public class PrismaticLace extends CardImpl {
+public final class PrismaticLace extends CardImpl {
public PrismaticLace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PrismaticLens.java b/Mage.Sets/src/mage/cards/p/PrismaticLens.java
index f8db57dbc95..7129d59f055 100644
--- a/Mage.Sets/src/mage/cards/p/PrismaticLens.java
+++ b/Mage.Sets/src/mage/cards/p/PrismaticLens.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class PrismaticLens extends CardImpl {
+public final class PrismaticLens extends CardImpl {
public PrismaticLens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PrismaticOmen.java b/Mage.Sets/src/mage/cards/p/PrismaticOmen.java
index 57fdb7f16db..ced79960490 100644
--- a/Mage.Sets/src/mage/cards/p/PrismaticOmen.java
+++ b/Mage.Sets/src/mage/cards/p/PrismaticOmen.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class PrismaticOmen extends CardImpl {
+public final class PrismaticOmen extends CardImpl {
public PrismaticOmen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrismaticStrands.java b/Mage.Sets/src/mage/cards/p/PrismaticStrands.java
index 741267c07a5..bd53b6b408c 100644
--- a/Mage.Sets/src/mage/cards/p/PrismaticStrands.java
+++ b/Mage.Sets/src/mage/cards/p/PrismaticStrands.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class PrismaticStrands extends CardImpl {
+public final class PrismaticStrands extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped white creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/PrismaticWard.java b/Mage.Sets/src/mage/cards/p/PrismaticWard.java
index 3d5c31ec3b7..cf45a3983a7 100644
--- a/Mage.Sets/src/mage/cards/p/PrismaticWard.java
+++ b/Mage.Sets/src/mage/cards/p/PrismaticWard.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class PrismaticWard extends CardImpl {
+public final class PrismaticWard extends CardImpl {
public PrismaticWard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PrismwakeMerrow.java b/Mage.Sets/src/mage/cards/p/PrismwakeMerrow.java
index 136ab5f6998..fb6ac447437 100644
--- a/Mage.Sets/src/mage/cards/p/PrismwakeMerrow.java
+++ b/Mage.Sets/src/mage/cards/p/PrismwakeMerrow.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class PrismwakeMerrow extends CardImpl {
+public final class PrismwakeMerrow extends CardImpl {
public PrismwakeMerrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PrisonBarricade.java b/Mage.Sets/src/mage/cards/p/PrisonBarricade.java
index 1e9e12b7c35..dde3fca5901 100644
--- a/Mage.Sets/src/mage/cards/p/PrisonBarricade.java
+++ b/Mage.Sets/src/mage/cards/p/PrisonBarricade.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
* @author LoneFox
*
*/
-public class PrisonBarricade extends CardImpl {
+public final class PrisonBarricade extends CardImpl {
public PrisonBarricade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PrisonTerm.java b/Mage.Sets/src/mage/cards/p/PrisonTerm.java
index bd38c3800e9..616836cd082 100644
--- a/Mage.Sets/src/mage/cards/p/PrisonTerm.java
+++ b/Mage.Sets/src/mage/cards/p/PrisonTerm.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class PrisonTerm extends CardImpl {
+public final class PrisonTerm extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a creature");
diff --git a/Mage.Sets/src/mage/cards/p/PristineAngel.java b/Mage.Sets/src/mage/cards/p/PristineAngel.java
index 5c83b844a39..6a21142b26d 100644
--- a/Mage.Sets/src/mage/cards/p/PristineAngel.java
+++ b/Mage.Sets/src/mage/cards/p/PristineAngel.java
@@ -55,7 +55,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class PristineAngel extends CardImpl {
+public final class PristineAngel extends CardImpl {
private static final FilterCard filter = new FilterCard("artifacts and all colors");
diff --git a/Mage.Sets/src/mage/cards/p/PristineSkywise.java b/Mage.Sets/src/mage/cards/p/PristineSkywise.java
index bd8828f7e60..953cf83f372 100644
--- a/Mage.Sets/src/mage/cards/p/PristineSkywise.java
+++ b/Mage.Sets/src/mage/cards/p/PristineSkywise.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class PristineSkywise extends CardImpl {
+public final class PristineSkywise extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/p/PristineTalisman.java b/Mage.Sets/src/mage/cards/p/PristineTalisman.java
index ddc036e0dc4..15e109148cc 100644
--- a/Mage.Sets/src/mage/cards/p/PristineTalisman.java
+++ b/Mage.Sets/src/mage/cards/p/PristineTalisman.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class PristineTalisman extends CardImpl {
+public final class PristineTalisman extends CardImpl {
public PristineTalisman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/PrivilegedPosition.java b/Mage.Sets/src/mage/cards/p/PrivilegedPosition.java
index a4cf77f9737..ca3aeb040d1 100644
--- a/Mage.Sets/src/mage/cards/p/PrivilegedPosition.java
+++ b/Mage.Sets/src/mage/cards/p/PrivilegedPosition.java
@@ -42,7 +42,7 @@ import mage.filter.FilterPermanent;
*
* @author Loki
*/
-public class PrivilegedPosition extends CardImpl {
+public final class PrivilegedPosition extends CardImpl {
public PrivilegedPosition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G/W}{G/W}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/p/PrizedAmalgam.java b/Mage.Sets/src/mage/cards/p/PrizedAmalgam.java
index cd0e1b721fd..1b9bd9aa096 100644
--- a/Mage.Sets/src/mage/cards/p/PrizedAmalgam.java
+++ b/Mage.Sets/src/mage/cards/p/PrizedAmalgam.java
@@ -53,7 +53,7 @@ import mage.watchers.common.CastFromGraveyardWatcher;
*
* @author LevelX2
*/
-public class PrizedAmalgam extends CardImpl {
+public final class PrizedAmalgam extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature");
diff --git a/Mage.Sets/src/mage/cards/p/PrizedElephant.java b/Mage.Sets/src/mage/cards/p/PrizedElephant.java
index 93209ab1040..3a18cd3a129 100644
--- a/Mage.Sets/src/mage/cards/p/PrizedElephant.java
+++ b/Mage.Sets/src/mage/cards/p/PrizedElephant.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jeffwadsworth
*/
-public class PrizedElephant extends CardImpl {
+public final class PrizedElephant extends CardImpl {
private static final String rule = "{this} gets +1/+1 as long as you control a Forest";
private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/p/PrizedUnicorn.java b/Mage.Sets/src/mage/cards/p/PrizedUnicorn.java
index 555a505b6e7..7f258f3791c 100644
--- a/Mage.Sets/src/mage/cards/p/PrizedUnicorn.java
+++ b/Mage.Sets/src/mage/cards/p/PrizedUnicorn.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PrizedUnicorn extends CardImpl {
+public final class PrizedUnicorn extends CardImpl {
public PrizedUnicorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrizefighterConstruct.java b/Mage.Sets/src/mage/cards/p/PrizefighterConstruct.java
index b95d7baec82..60ce80f6202 100644
--- a/Mage.Sets/src/mage/cards/p/PrizefighterConstruct.java
+++ b/Mage.Sets/src/mage/cards/p/PrizefighterConstruct.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class PrizefighterConstruct extends CardImpl {
+public final class PrizefighterConstruct extends CardImpl {
public PrizefighterConstruct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/p/Probe.java b/Mage.Sets/src/mage/cards/p/Probe.java
index 601f4af4c50..99ac82bfff4 100644
--- a/Mage.Sets/src/mage/cards/p/Probe.java
+++ b/Mage.Sets/src/mage/cards/p/Probe.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class Probe extends CardImpl {
+public final class Probe extends CardImpl {
public Probe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ProbeDroid.java b/Mage.Sets/src/mage/cards/p/ProbeDroid.java
index 0ad7fed49d1..92ae635ff7a 100644
--- a/Mage.Sets/src/mage/cards/p/ProbeDroid.java
+++ b/Mage.Sets/src/mage/cards/p/ProbeDroid.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class ProbeDroid extends CardImpl {
+public final class ProbeDroid extends CardImpl {
public ProbeDroid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ProcessorAssault.java b/Mage.Sets/src/mage/cards/p/ProcessorAssault.java
index fc35706b2f7..2416b360426 100644
--- a/Mage.Sets/src/mage/cards/p/ProcessorAssault.java
+++ b/Mage.Sets/src/mage/cards/p/ProcessorAssault.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ProcessorAssault extends CardImpl {
+public final class ProcessorAssault extends CardImpl {
public ProcessorAssault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/ProclamationOfRebirth.java b/Mage.Sets/src/mage/cards/p/ProclamationOfRebirth.java
index 1b766f5896e..889892c10d8 100644
--- a/Mage.Sets/src/mage/cards/p/ProclamationOfRebirth.java
+++ b/Mage.Sets/src/mage/cards/p/ProclamationOfRebirth.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class ProclamationOfRebirth extends CardImpl {
+public final class ProclamationOfRebirth extends CardImpl {
private static final FilterCreatureCard filter1 = new FilterCreatureCard("creature card with converted mana cost {1} or less from your graveyard");
private static final FilterCreatureCard filter3 = new FilterCreatureCard("creature cards with converted mana cost {1} or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/p/ProdigalPyromancer.java b/Mage.Sets/src/mage/cards/p/ProdigalPyromancer.java
index 1f191df767c..eab0be507b1 100644
--- a/Mage.Sets/src/mage/cards/p/ProdigalPyromancer.java
+++ b/Mage.Sets/src/mage/cards/p/ProdigalPyromancer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ProdigalPyromancer extends CardImpl {
+public final class ProdigalPyromancer extends CardImpl {
public ProdigalPyromancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/ProdigalSorcerer.java b/Mage.Sets/src/mage/cards/p/ProdigalSorcerer.java
index 29daf8d1cbd..95d62396fa0 100644
--- a/Mage.Sets/src/mage/cards/p/ProdigalSorcerer.java
+++ b/Mage.Sets/src/mage/cards/p/ProdigalSorcerer.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Backfir3
*/
-public class ProdigalSorcerer extends CardImpl {
+public final class ProdigalSorcerer extends CardImpl {
public ProdigalSorcerer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ProfaneCommand.java b/Mage.Sets/src/mage/cards/p/ProfaneCommand.java
index 5e3c6f5ddba..1aa1b202d65 100644
--- a/Mage.Sets/src/mage/cards/p/ProfaneCommand.java
+++ b/Mage.Sets/src/mage/cards/p/ProfaneCommand.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX2
*/
-public class ProfaneCommand extends CardImpl {
+public final class ProfaneCommand extends CardImpl {
public ProfaneCommand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/ProfaneMemento.java b/Mage.Sets/src/mage/cards/p/ProfaneMemento.java
index fc8220c01ef..aeb4d6ed5b9 100644
--- a/Mage.Sets/src/mage/cards/p/ProfaneMemento.java
+++ b/Mage.Sets/src/mage/cards/p/ProfaneMemento.java
@@ -44,7 +44,7 @@ import mage.game.events.ZoneChangeEvent;
*
* @author emerald000
*/
-public class ProfaneMemento extends CardImpl {
+public final class ProfaneMemento extends CardImpl {
public ProfaneMemento(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/p/ProfanePrayers.java b/Mage.Sets/src/mage/cards/p/ProfanePrayers.java
index 7a4f6157f52..69c2aa3882e 100644
--- a/Mage.Sets/src/mage/cards/p/ProfanePrayers.java
+++ b/Mage.Sets/src/mage/cards/p/ProfanePrayers.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Wehk
*/
-public class ProfanePrayers extends CardImpl {
+public final class ProfanePrayers extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Cleric on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/p/ProfaneProcession.java b/Mage.Sets/src/mage/cards/p/ProfaneProcession.java
index bafe4c068da..421f4abdf7e 100644
--- a/Mage.Sets/src/mage/cards/p/ProfaneProcession.java
+++ b/Mage.Sets/src/mage/cards/p/ProfaneProcession.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class ProfaneProcession extends CardImpl {
+public final class ProfaneProcession extends CardImpl {
public ProfaneProcession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/ProfanerOfTheDead.java b/Mage.Sets/src/mage/cards/p/ProfanerOfTheDead.java
index f44d0f4850d..f4a4882c85c 100644
--- a/Mage.Sets/src/mage/cards/p/ProfanerOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/p/ProfanerOfTheDead.java
@@ -48,7 +48,7 @@ import mage.players.Player;
/**
* @author LevelX2
*/
-public class ProfanerOfTheDead extends CardImpl {
+public final class ProfanerOfTheDead extends CardImpl {
public ProfanerOfTheDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ProfitLoss.java b/Mage.Sets/src/mage/cards/p/ProfitLoss.java
index b0cc82fdef0..e9ca4925614 100644
--- a/Mage.Sets/src/mage/cards/p/ProfitLoss.java
+++ b/Mage.Sets/src/mage/cards/p/ProfitLoss.java
@@ -39,7 +39,7 @@ import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.ControllerPredicate;
-public class ProfitLoss extends SplitCard {
+public final class ProfitLoss extends SplitCard {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/p/ProfoundJourney.java b/Mage.Sets/src/mage/cards/p/ProfoundJourney.java
index 579b261c004..61d5dbb1cd1 100644
--- a/Mage.Sets/src/mage/cards/p/ProfoundJourney.java
+++ b/Mage.Sets/src/mage/cards/p/ProfoundJourney.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class ProfoundJourney extends CardImpl {
+public final class ProfoundJourney extends CardImpl {
private static final FilterCard filter = new FilterCard("permanent card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/p/ProgenitorMimic.java b/Mage.Sets/src/mage/cards/p/ProgenitorMimic.java
index 1fdd464ddc1..fea46e90802 100644
--- a/Mage.Sets/src/mage/cards/p/ProgenitorMimic.java
+++ b/Mage.Sets/src/mage/cards/p/ProgenitorMimic.java
@@ -50,7 +50,7 @@ import mage.util.functions.AbilityApplier;
*
* @author LevelX2
*/
-public class ProgenitorMimic extends CardImpl {
+public final class ProgenitorMimic extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("no Token");
diff --git a/Mage.Sets/src/mage/cards/p/Progenitus.java b/Mage.Sets/src/mage/cards/p/Progenitus.java
index afec039d10f..ce341745453 100644
--- a/Mage.Sets/src/mage/cards/p/Progenitus.java
+++ b/Mage.Sets/src/mage/cards/p/Progenitus.java
@@ -45,7 +45,7 @@ import mage.game.Game;
*
* @author North
*/
-public class Progenitus extends CardImpl {
+public final class Progenitus extends CardImpl {
public Progenitus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}{U}{U}{B}{B}{R}{R}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PrognosticSphinx.java b/Mage.Sets/src/mage/cards/p/PrognosticSphinx.java
index 1ddb981a3c8..8530c6876d1 100644
--- a/Mage.Sets/src/mage/cards/p/PrognosticSphinx.java
+++ b/Mage.Sets/src/mage/cards/p/PrognosticSphinx.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class PrognosticSphinx extends CardImpl {
+public final class PrognosticSphinx extends CardImpl {
public PrognosticSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Prohibit.java b/Mage.Sets/src/mage/cards/p/Prohibit.java
index 33fa8522be4..24a38962eb2 100644
--- a/Mage.Sets/src/mage/cards/p/Prohibit.java
+++ b/Mage.Sets/src/mage/cards/p/Prohibit.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Prohibit extends CardImpl {
+public final class Prohibit extends CardImpl {
public Prohibit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PromiseOfBunrei.java b/Mage.Sets/src/mage/cards/p/PromiseOfBunrei.java
index 7b19a4568c0..871f04c5631 100644
--- a/Mage.Sets/src/mage/cards/p/PromiseOfBunrei.java
+++ b/Mage.Sets/src/mage/cards/p/PromiseOfBunrei.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class PromiseOfBunrei extends CardImpl {
+public final class PromiseOfBunrei extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
diff --git a/Mage.Sets/src/mage/cards/p/PromiseOfPower.java b/Mage.Sets/src/mage/cards/p/PromiseOfPower.java
index 54e5574edfe..3e0638b4613 100644
--- a/Mage.Sets/src/mage/cards/p/PromiseOfPower.java
+++ b/Mage.Sets/src/mage/cards/p/PromiseOfPower.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class PromiseOfPower extends CardImpl {
+public final class PromiseOfPower extends CardImpl {
public PromiseOfPower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PromisedKannushi.java b/Mage.Sets/src/mage/cards/p/PromisedKannushi.java
index a91cbe426ad..8bb5baf9ef5 100644
--- a/Mage.Sets/src/mage/cards/p/PromisedKannushi.java
+++ b/Mage.Sets/src/mage/cards/p/PromisedKannushi.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PromisedKannushi extends CardImpl {
+public final class PromisedKannushi extends CardImpl {
public PromisedKannushi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/p/Propaganda.java b/Mage.Sets/src/mage/cards/p/Propaganda.java
index 91b08a432e7..574bf97fd25 100644
--- a/Mage.Sets/src/mage/cards/p/Propaganda.java
+++ b/Mage.Sets/src/mage/cards/p/Propaganda.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Propaganda extends CardImpl {
+public final class Propaganda extends CardImpl {
public Propaganda(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PropellerPioneer.java b/Mage.Sets/src/mage/cards/p/PropellerPioneer.java
index 623c827ca77..8a0b796082c 100644
--- a/Mage.Sets/src/mage/cards/p/PropellerPioneer.java
+++ b/Mage.Sets/src/mage/cards/p/PropellerPioneer.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class PropellerPioneer extends CardImpl {
+public final class PropellerPioneer extends CardImpl {
public PropellerPioneer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/ProperBurial.java b/Mage.Sets/src/mage/cards/p/ProperBurial.java
index 94dc402f36e..b75e31bf960 100644
--- a/Mage.Sets/src/mage/cards/p/ProperBurial.java
+++ b/Mage.Sets/src/mage/cards/p/ProperBurial.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class ProperBurial extends CardImpl {
+public final class ProperBurial extends CardImpl {
public ProperBurial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/ProphetOfDistortion.java b/Mage.Sets/src/mage/cards/p/ProphetOfDistortion.java
index cc2d0cb82b3..607a5433804 100644
--- a/Mage.Sets/src/mage/cards/p/ProphetOfDistortion.java
+++ b/Mage.Sets/src/mage/cards/p/ProphetOfDistortion.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ProphetOfDistortion extends CardImpl {
+public final class ProphetOfDistortion extends CardImpl {
public ProphetOfDistortion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ProphetOfKruphix.java b/Mage.Sets/src/mage/cards/p/ProphetOfKruphix.java
index 0481231f352..a0535e1c082 100644
--- a/Mage.Sets/src/mage/cards/p/ProphetOfKruphix.java
+++ b/Mage.Sets/src/mage/cards/p/ProphetOfKruphix.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class ProphetOfKruphix extends CardImpl {
+public final class ProphetOfKruphix extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creatures and lands you control");
diff --git a/Mage.Sets/src/mage/cards/p/PropheticBolt.java b/Mage.Sets/src/mage/cards/p/PropheticBolt.java
index fb5de701a87..387c3a648a1 100644
--- a/Mage.Sets/src/mage/cards/p/PropheticBolt.java
+++ b/Mage.Sets/src/mage/cards/p/PropheticBolt.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class PropheticBolt extends CardImpl {
+public final class PropheticBolt extends CardImpl {
public PropheticBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PropheticFlamespeaker.java b/Mage.Sets/src/mage/cards/p/PropheticFlamespeaker.java
index 9fb7393e04b..24c407d7612 100644
--- a/Mage.Sets/src/mage/cards/p/PropheticFlamespeaker.java
+++ b/Mage.Sets/src/mage/cards/p/PropheticFlamespeaker.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class PropheticFlamespeaker extends CardImpl {
+public final class PropheticFlamespeaker extends CardImpl {
public PropheticFlamespeaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PropheticPrism.java b/Mage.Sets/src/mage/cards/p/PropheticPrism.java
index 8fc99ed2ae9..0359e146adf 100644
--- a/Mage.Sets/src/mage/cards/p/PropheticPrism.java
+++ b/Mage.Sets/src/mage/cards/p/PropheticPrism.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class PropheticPrism extends CardImpl {
+public final class PropheticPrism extends CardImpl {
public PropheticPrism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PropheticRavings.java b/Mage.Sets/src/mage/cards/p/PropheticRavings.java
index af21f3f40db..1f3bfca085f 100644
--- a/Mage.Sets/src/mage/cards/p/PropheticRavings.java
+++ b/Mage.Sets/src/mage/cards/p/PropheticRavings.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PropheticRavings extends CardImpl {
+public final class PropheticRavings extends CardImpl {
public PropheticRavings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Prosperity.java b/Mage.Sets/src/mage/cards/p/Prosperity.java
index 9487effcb60..64dd9ef4dcd 100644
--- a/Mage.Sets/src/mage/cards/p/Prosperity.java
+++ b/Mage.Sets/src/mage/cards/p/Prosperity.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class Prosperity extends CardImpl {
+public final class Prosperity extends CardImpl {
public Prosperity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ProsperousPirates.java b/Mage.Sets/src/mage/cards/p/ProsperousPirates.java
index a5fd67e6068..0ce138896bf 100644
--- a/Mage.Sets/src/mage/cards/p/ProsperousPirates.java
+++ b/Mage.Sets/src/mage/cards/p/ProsperousPirates.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author TheElk801
*/
-public class ProsperousPirates extends CardImpl {
+public final class ProsperousPirates extends CardImpl {
public ProsperousPirates(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ProsshSkyraiderOfKher.java b/Mage.Sets/src/mage/cards/p/ProsshSkyraiderOfKher.java
index 4b03351c25b..97ec7c070d9 100644
--- a/Mage.Sets/src/mage/cards/p/ProsshSkyraiderOfKher.java
+++ b/Mage.Sets/src/mage/cards/p/ProsshSkyraiderOfKher.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ProsshSkyraiderOfKher extends CardImpl {
+public final class ProsshSkyraiderOfKher extends CardImpl {
public ProsshSkyraiderOfKher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/ProteanHulk.java b/Mage.Sets/src/mage/cards/p/ProteanHulk.java
index c1ea7511368..b7872a647f1 100644
--- a/Mage.Sets/src/mage/cards/p/ProteanHulk.java
+++ b/Mage.Sets/src/mage/cards/p/ProteanHulk.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class ProteanHulk extends CardImpl {
+public final class ProteanHulk extends CardImpl {
public ProteanHulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/ProteanHydra.java b/Mage.Sets/src/mage/cards/p/ProteanHydra.java
index 3ba89fb0b19..3bcd15835c9 100644
--- a/Mage.Sets/src/mage/cards/p/ProteanHydra.java
+++ b/Mage.Sets/src/mage/cards/p/ProteanHydra.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ProteanHydra extends CardImpl {
+public final class ProteanHydra extends CardImpl {
public ProteanHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/ProteanRaider.java b/Mage.Sets/src/mage/cards/p/ProteanRaider.java
index 108657c6a8b..7efad9a2ced 100644
--- a/Mage.Sets/src/mage/cards/p/ProteanRaider.java
+++ b/Mage.Sets/src/mage/cards/p/ProteanRaider.java
@@ -42,7 +42,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
/**
* @author JayDi85
*/
-public class ProteanRaider extends CardImpl {
+public final class ProteanRaider extends CardImpl {
public ProteanRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/ProtectServe.java b/Mage.Sets/src/mage/cards/p/ProtectServe.java
index 715919587e7..5de9fb8244f 100644
--- a/Mage.Sets/src/mage/cards/p/ProtectServe.java
+++ b/Mage.Sets/src/mage/cards/p/ProtectServe.java
@@ -36,7 +36,7 @@ import mage.constants.Duration;
import mage.constants.SpellAbilityType;
import mage.target.common.TargetCreaturePermanent;
-public class ProtectServe extends SplitCard {
+public final class ProtectServe extends SplitCard {
public ProtectServe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}", "{1}{U}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/p/ProtectionOfTheHekma.java b/Mage.Sets/src/mage/cards/p/ProtectionOfTheHekma.java
index 2020d6d2685..81208051f4b 100644
--- a/Mage.Sets/src/mage/cards/p/ProtectionOfTheHekma.java
+++ b/Mage.Sets/src/mage/cards/p/ProtectionOfTheHekma.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent;
*
* @author fireshoes
*/
-public class ProtectionOfTheHekma extends CardImpl {
+public final class ProtectionOfTheHekma extends CardImpl {
public ProtectionOfTheHekma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/ProtectiveBubble.java b/Mage.Sets/src/mage/cards/p/ProtectiveBubble.java
index e203df91d58..b3b8caac7de 100644
--- a/Mage.Sets/src/mage/cards/p/ProtectiveBubble.java
+++ b/Mage.Sets/src/mage/cards/p/ProtectiveBubble.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ProtectiveBubble extends CardImpl {
+public final class ProtectiveBubble extends CardImpl {
public ProtectiveBubble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/ProtectiveSphere.java b/Mage.Sets/src/mage/cards/p/ProtectiveSphere.java
index 17264baa7b5..6102d65ab24 100644
--- a/Mage.Sets/src/mage/cards/p/ProtectiveSphere.java
+++ b/Mage.Sets/src/mage/cards/p/ProtectiveSphere.java
@@ -1,134 +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.p;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-import mage.Mana;
-import mage.ObjectColor;
-import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.PayLifeCost;
-import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.PreventionEffectImpl;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.Outcome;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.TargetSource;
-import mage.util.CardUtil;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class ProtectiveSphere extends CardImpl {
-
- public ProtectiveSphere(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
-
- // {1}, Pay 1 life: Prevent all damage that would be dealt to you this turn by a source of your choice that shares a color with the mana spent on this activation cost.
- Ability ability = new SimpleActivatedAbility(new ProtectiveSphereEffect(), new ManaCostsImpl("{1}"));
- ability.addCost(new PayLifeCost(1));
- this.addAbility(ability);
-
- }
-
- public ProtectiveSphere(final ProtectiveSphere card) {
- super(card);
- }
-
- @Override
- public ProtectiveSphere copy() {
- return new ProtectiveSphere(this);
- }
-}
-
-class ProtectiveSphereEffect extends PreventionEffectImpl {
-
- private final TargetSource target;
- private static Mana manaUsed;
- private static List colorsOfChosenSource = new ArrayList<>();
-
- public ProtectiveSphereEffect() {
- super(Duration.EndOfTurn, Integer.MAX_VALUE, false, false);
- this.staticText = "Prevent all damage that would be dealt to you this turn by a source of your choice that shares a color with the mana spent on this activation cost.";
- this.target = new TargetSource();
- }
-
- public ProtectiveSphereEffect(final ProtectiveSphereEffect effect) {
- super(effect);
- this.target = effect.target.copy();
- }
-
- @Override
- public ProtectiveSphereEffect copy() {
- return new ProtectiveSphereEffect(this);
- }
-
- @Override
- public void init(Ability source, Game game) {
- target.setNotTarget(true);
- target.setRequired(false);
- Player controller = game.getPlayer(source.getControllerId());
- Permanent protectiveSphere = game.getPermanent(source.getSourceId());
- if (controller != null
- && protectiveSphere != null) {
- game.getState().setValue("ProtectiveSphere" + source.getSourceId().toString(), source.getManaCostsToPay().getUsedManaToPay()); //store the mana used to pay
- protectiveSphere.addInfo("MANA USED", CardUtil.addToolTipMarkTags("Last mana used for protective ability: " + source.getManaCostsToPay().getUsedManaToPay()), game);
- }
- this.target.choose(Outcome.PreventDamage, source.getControllerId(), source.getSourceId(), game);
- super.init(source, game);
- }
-
- @Override
- public boolean replaceEvent(GameEvent event, Ability source, Game game) {
- return true;
- }
-
- @Override
- public boolean applies(GameEvent event, Ability source, Game game) {
- manaUsed = (Mana) game.getState().getValue("ProtectiveSphere" + source.getSourceId().toString());
- if (super.applies(event, source, game)) {
- if (event.getTargetId().equals(source.getControllerId())
- && event.getSourceId().equals(target.getFirstTarget())) {
- colorsOfChosenSource = game.getObject(target.getFirstTarget()).getColor(game).getColors();
- if (colorsOfChosenSource.stream().anyMatch((c) -> (manaUsed.getColor(c.getOneColoredManaSymbol()) > 0))) {
- return true;
- }
- }
- }
- return false;
- }
-}
+/*
+ * 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.p;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+import mage.Mana;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.PayLifeCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.PreventionEffectImpl;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.TargetSource;
+import mage.util.CardUtil;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class ProtectiveSphere extends CardImpl {
+
+ public ProtectiveSphere(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
+
+ // {1}, Pay 1 life: Prevent all damage that would be dealt to you this turn by a source of your choice that shares a color with the mana spent on this activation cost.
+ Ability ability = new SimpleActivatedAbility(new ProtectiveSphereEffect(), new ManaCostsImpl("{1}"));
+ ability.addCost(new PayLifeCost(1));
+ this.addAbility(ability);
+
+ }
+
+ public ProtectiveSphere(final ProtectiveSphere card) {
+ super(card);
+ }
+
+ @Override
+ public ProtectiveSphere copy() {
+ return new ProtectiveSphere(this);
+ }
+}
+
+class ProtectiveSphereEffect extends PreventionEffectImpl {
+
+ private final TargetSource target;
+ private static Mana manaUsed;
+ private static List colorsOfChosenSource = new ArrayList<>();
+
+ public ProtectiveSphereEffect() {
+ super(Duration.EndOfTurn, Integer.MAX_VALUE, false, false);
+ this.staticText = "Prevent all damage that would be dealt to you this turn by a source of your choice that shares a color with the mana spent on this activation cost.";
+ this.target = new TargetSource();
+ }
+
+ public ProtectiveSphereEffect(final ProtectiveSphereEffect effect) {
+ super(effect);
+ this.target = effect.target.copy();
+ }
+
+ @Override
+ public ProtectiveSphereEffect copy() {
+ return new ProtectiveSphereEffect(this);
+ }
+
+ @Override
+ public void init(Ability source, Game game) {
+ target.setNotTarget(true);
+ target.setRequired(false);
+ Player controller = game.getPlayer(source.getControllerId());
+ Permanent protectiveSphere = game.getPermanent(source.getSourceId());
+ if (controller != null
+ && protectiveSphere != null) {
+ game.getState().setValue("ProtectiveSphere" + source.getSourceId().toString(), source.getManaCostsToPay().getUsedManaToPay()); //store the mana used to pay
+ protectiveSphere.addInfo("MANA USED", CardUtil.addToolTipMarkTags("Last mana used for protective ability: " + source.getManaCostsToPay().getUsedManaToPay()), game);
+ }
+ this.target.choose(Outcome.PreventDamage, source.getControllerId(), source.getSourceId(), game);
+ super.init(source, game);
+ }
+
+ @Override
+ public boolean replaceEvent(GameEvent event, Ability source, Game game) {
+ return true;
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ manaUsed = (Mana) game.getState().getValue("ProtectiveSphere" + source.getSourceId().toString());
+ if (super.applies(event, source, game)) {
+ if (event.getTargetId().equals(source.getControllerId())
+ && event.getSourceId().equals(target.getFirstTarget())) {
+ colorsOfChosenSource = game.getObject(target.getFirstTarget()).getColor(game).getColors();
+ if (colorsOfChosenSource.stream().anyMatch((c) -> (manaUsed.getColor(c.getOneColoredManaSymbol()) > 0))) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/ProtectorOfTheCrown.java b/Mage.Sets/src/mage/cards/p/ProtectorOfTheCrown.java
index 2d878a23df4..932097a9738 100644
--- a/Mage.Sets/src/mage/cards/p/ProtectorOfTheCrown.java
+++ b/Mage.Sets/src/mage/cards/p/ProtectorOfTheCrown.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class ProtectorOfTheCrown extends CardImpl {
+public final class ProtectorOfTheCrown extends CardImpl {
public ProtectorOfTheCrown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/ProteusMachine.java b/Mage.Sets/src/mage/cards/p/ProteusMachine.java
index 6fbff759cc3..6cda10adf6a 100644
--- a/Mage.Sets/src/mage/cards/p/ProteusMachine.java
+++ b/Mage.Sets/src/mage/cards/p/ProteusMachine.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class ProteusMachine extends CardImpl {
+public final class ProteusMachine extends CardImpl {
public ProteusMachine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/ProteusStaff.java b/Mage.Sets/src/mage/cards/p/ProteusStaff.java
index 93c38536a18..2dd885a73c9 100644
--- a/Mage.Sets/src/mage/cards/p/ProteusStaff.java
+++ b/Mage.Sets/src/mage/cards/p/ProteusStaff.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class ProteusStaff extends CardImpl {
+public final class ProteusStaff extends CardImpl {
public ProteusStaff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/p/ProtomatterPowder.java b/Mage.Sets/src/mage/cards/p/ProtomatterPowder.java
index accace4a03e..79cb10f03b1 100644
--- a/Mage.Sets/src/mage/cards/p/ProtomatterPowder.java
+++ b/Mage.Sets/src/mage/cards/p/ProtomatterPowder.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class ProtomatterPowder extends CardImpl {
+public final class ProtomatterPowder extends CardImpl {
public ProtomatterPowder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PrototypePortal.java b/Mage.Sets/src/mage/cards/p/PrototypePortal.java
index 2335153ab5f..62c5c5fc42d 100644
--- a/Mage.Sets/src/mage/cards/p/PrototypePortal.java
+++ b/Mage.Sets/src/mage/cards/p/PrototypePortal.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
/**
* @author nantuko
*/
-public class PrototypePortal extends CardImpl {
+public final class PrototypePortal extends CardImpl {
public PrototypePortal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/p/ProudMentor.java b/Mage.Sets/src/mage/cards/p/ProudMentor.java
new file mode 100644
index 00000000000..0fdb91b3c6c
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/p/ProudMentor.java
@@ -0,0 +1,78 @@
+/*
+ * 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.p;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ColoredManaCost;
+import mage.abilities.effects.common.TapTargetEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.ColoredManaSymbol;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ProudMentor extends CardImpl {
+
+ public ProudMentor(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Partner with Impetuous Protege (When this creature enters the battlefield, target player may put Impetuous Protege into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Impetuous Protege"));
+
+ // {W}, {T}: Tap target creature
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new TapTargetEffect(), new ColoredManaCost(ColoredManaSymbol.W));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public ProudMentor(final ProudMentor card) {
+ super(card);
+ }
+
+ @Override
+ public ProudMentor copy() {
+ return new ProudMentor(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/ProvenCombatant.java b/Mage.Sets/src/mage/cards/p/ProvenCombatant.java
index 9cb841b6839..3858ccb6729 100644
--- a/Mage.Sets/src/mage/cards/p/ProvenCombatant.java
+++ b/Mage.Sets/src/mage/cards/p/ProvenCombatant.java
@@ -9,7 +9,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-public class ProvenCombatant extends CardImpl {
+public final class ProvenCombatant extends CardImpl {
public ProvenCombatant(UUID ownerId, CardSetInfo cardSetInfo){
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Providence.java b/Mage.Sets/src/mage/cards/p/Providence.java
index 3b8218e73ce..76b645abe4d 100644
--- a/Mage.Sets/src/mage/cards/p/Providence.java
+++ b/Mage.Sets/src/mage/cards/p/Providence.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class Providence extends CardImpl {
+public final class Providence extends CardImpl {
private static String abilityText = "at the beginning of the first upkeep, your life total becomes 26";
diff --git a/Mage.Sets/src/mage/cards/p/Provoke.java b/Mage.Sets/src/mage/cards/p/Provoke.java
index a6d04df161e..dd66e0de261 100644
--- a/Mage.Sets/src/mage/cards/p/Provoke.java
+++ b/Mage.Sets/src/mage/cards/p/Provoke.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Provoke extends CardImpl {
+public final class Provoke extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/p/ProwessOfTheFair.java b/Mage.Sets/src/mage/cards/p/ProwessOfTheFair.java
index f89f63f1d50..58a1325342a 100644
--- a/Mage.Sets/src/mage/cards/p/ProwessOfTheFair.java
+++ b/Mage.Sets/src/mage/cards/p/ProwessOfTheFair.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.ElfToken;
*
* @author LoneFox
*/
-public class ProwessOfTheFair extends CardImpl {
+public final class ProwessOfTheFair extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another nontoken Elf");
diff --git a/Mage.Sets/src/mage/cards/p/ProwlersHelm.java b/Mage.Sets/src/mage/cards/p/ProwlersHelm.java
index f4c2117e883..6fe9f5e85b6 100644
--- a/Mage.Sets/src/mage/cards/p/ProwlersHelm.java
+++ b/Mage.Sets/src/mage/cards/p/ProwlersHelm.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class ProwlersHelm extends CardImpl {
+public final class ProwlersHelm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by Walls");
static {
diff --git a/Mage.Sets/src/mage/cards/p/ProwlingNightstalker.java b/Mage.Sets/src/mage/cards/p/ProwlingNightstalker.java
index e5adef201d0..f6399132817 100644
--- a/Mage.Sets/src/mage/cards/p/ProwlingNightstalker.java
+++ b/Mage.Sets/src/mage/cards/p/ProwlingNightstalker.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class ProwlingNightstalker extends CardImpl {
+public final class ProwlingNightstalker extends CardImpl {
private final static FilterCreaturePermanent notBlackCreatures = new FilterCreaturePermanent("except by black creatures");
diff --git a/Mage.Sets/src/mage/cards/p/ProwlingPangolin.java b/Mage.Sets/src/mage/cards/p/ProwlingPangolin.java
index 8b4896518e3..dda921f76be 100644
--- a/Mage.Sets/src/mage/cards/p/ProwlingPangolin.java
+++ b/Mage.Sets/src/mage/cards/p/ProwlingPangolin.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class ProwlingPangolin extends CardImpl {
+public final class ProwlingPangolin extends CardImpl {
public ProwlingPangolin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/ProwlingSerpopard.java b/Mage.Sets/src/mage/cards/p/ProwlingSerpopard.java
index e8c37df809e..41b9f0ead20 100644
--- a/Mage.Sets/src/mage/cards/p/ProwlingSerpopard.java
+++ b/Mage.Sets/src/mage/cards/p/ProwlingSerpopard.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class ProwlingSerpopard extends CardImpl {
+public final class ProwlingSerpopard extends CardImpl {
private static final FilterSpell filterTarget = new FilterSpell("Creature spells you control");
diff --git a/Mage.Sets/src/mage/cards/p/PryingBlade.java b/Mage.Sets/src/mage/cards/p/PryingBlade.java
index 0749dd1f656..3b9a3581cf2 100644
--- a/Mage.Sets/src/mage/cards/p/PryingBlade.java
+++ b/Mage.Sets/src/mage/cards/p/PryingBlade.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author TheElk801
*/
-public class PryingBlade extends CardImpl {
+public final class PryingBlade extends CardImpl {
public PryingBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/p/PryingQuestions.java b/Mage.Sets/src/mage/cards/p/PryingQuestions.java
index 7b698c1bea9..f944cb7f90c 100644
--- a/Mage.Sets/src/mage/cards/p/PryingQuestions.java
+++ b/Mage.Sets/src/mage/cards/p/PryingQuestions.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class PryingQuestions extends CardImpl {
+public final class PryingQuestions extends CardImpl {
public PryingQuestions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PsionicBlast.java b/Mage.Sets/src/mage/cards/p/PsionicBlast.java
index 9f15fb07cb3..cb064c744f8 100644
--- a/Mage.Sets/src/mage/cards/p/PsionicBlast.java
+++ b/Mage.Sets/src/mage/cards/p/PsionicBlast.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class PsionicBlast extends CardImpl {
+public final class PsionicBlast extends CardImpl {
public PsionicBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsionicEntity.java b/Mage.Sets/src/mage/cards/p/PsionicEntity.java
index cdf46e77279..b9768ccaa1d 100644
--- a/Mage.Sets/src/mage/cards/p/PsionicEntity.java
+++ b/Mage.Sets/src/mage/cards/p/PsionicEntity.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author TheElk801
*/
-public class PsionicEntity extends CardImpl {
+public final class PsionicEntity extends CardImpl {
public PsionicEntity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsionicGift.java b/Mage.Sets/src/mage/cards/p/PsionicGift.java
index 75111941f34..3ec724117d9 100644
--- a/Mage.Sets/src/mage/cards/p/PsionicGift.java
+++ b/Mage.Sets/src/mage/cards/p/PsionicGift.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class PsionicGift extends CardImpl {
+public final class PsionicGift extends CardImpl {
public PsionicGift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsionicSliver.java b/Mage.Sets/src/mage/cards/p/PsionicSliver.java
index 073bd61a010..2242cfec65b 100644
--- a/Mage.Sets/src/mage/cards/p/PsionicSliver.java
+++ b/Mage.Sets/src/mage/cards/p/PsionicSliver.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
* @author anonymous
* @see mage.sets.seventhedition.RecklessEmbermage
*/
-public class PsionicSliver extends CardImpl {
+public final class PsionicSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/p/Psychatog.java b/Mage.Sets/src/mage/cards/p/Psychatog.java
index 026952e99c6..965c142f61a 100644
--- a/Mage.Sets/src/mage/cards/p/Psychatog.java
+++ b/Mage.Sets/src/mage/cards/p/Psychatog.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class Psychatog extends CardImpl {
+public final class Psychatog extends CardImpl {
public Psychatog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicAllergy.java b/Mage.Sets/src/mage/cards/p/PsychicAllergy.java
index 9ff718aed4c..5fb18db4d83 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicAllergy.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicAllergy.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author L_J
*/
-public class PsychicAllergy extends CardImpl {
+public final class PsychicAllergy extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Islands");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicBarrier.java b/Mage.Sets/src/mage/cards/p/PsychicBarrier.java
index 4767faedb0d..4e326a3e18c 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicBarrier.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicBarrier.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class PsychicBarrier extends CardImpl {
+public final class PsychicBarrier extends CardImpl {
public PsychicBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicBattle.java b/Mage.Sets/src/mage/cards/p/PsychicBattle.java
index ec4e60a4657..774fe5b7fcc 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicBattle.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicBattle.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class PsychicBattle extends CardImpl {
+public final class PsychicBattle extends CardImpl {
public PsychicBattle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicDrain.java b/Mage.Sets/src/mage/cards/p/PsychicDrain.java
index 8f5d65d2dcc..500d6959e6c 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicDrain.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicDrain.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class PsychicDrain extends CardImpl {
+public final class PsychicDrain extends CardImpl {
public PsychicDrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicIntrusion.java b/Mage.Sets/src/mage/cards/p/PsychicIntrusion.java
index b687a95930d..4ee4ac43cef 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicIntrusion.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicIntrusion.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class PsychicIntrusion extends CardImpl {
+public final class PsychicIntrusion extends CardImpl {
public PsychicIntrusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicMembrane.java b/Mage.Sets/src/mage/cards/p/PsychicMembrane.java
index d712a8f8003..0130c33213e 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicMembrane.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicMembrane.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class PsychicMembrane extends CardImpl {
+public final class PsychicMembrane extends CardImpl {
public PsychicMembrane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicMiasma.java b/Mage.Sets/src/mage/cards/p/PsychicMiasma.java
index 1adf5193964..8eead0dc713 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicMiasma.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicMiasma.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PsychicMiasma extends CardImpl {
+public final class PsychicMiasma extends CardImpl {
public PsychicMiasma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicOverload.java b/Mage.Sets/src/mage/cards/p/PsychicOverload.java
index 3b82668b636..dcdd8a855bb 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicOverload.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicOverload.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInHand;
*
* @author wetterlicht
*/
-public class PsychicOverload extends CardImpl {
+public final class PsychicOverload extends CardImpl {
public PsychicOverload(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicPossession.java b/Mage.Sets/src/mage/cards/p/PsychicPossession.java
index 5615a65fb31..bbad2b197e7 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicPossession.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicPossession.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author spjspj
*/
-public class PsychicPossession extends CardImpl {
+public final class PsychicPossession extends CardImpl {
public PsychicPossession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicPuppetry.java b/Mage.Sets/src/mage/cards/p/PsychicPuppetry.java
index fa1634f1fab..6243587f3b2 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicPuppetry.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicPuppetry.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class PsychicPuppetry extends CardImpl {
+public final class PsychicPuppetry extends CardImpl {
public PsychicPuppetry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicPurge.java b/Mage.Sets/src/mage/cards/p/PsychicPurge.java
index 257c2a597aa..40fef6cd0f6 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicPurge.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicPurge.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class PsychicPurge extends CardImpl {
+public final class PsychicPurge extends CardImpl {
public PsychicPurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicRebuttal.java b/Mage.Sets/src/mage/cards/p/PsychicRebuttal.java
index 6d5b7a98020..96de84dd1c5 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicRebuttal.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicRebuttal.java
@@ -52,7 +52,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class PsychicRebuttal extends CardImpl {
+public final class PsychicRebuttal extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery spell that targets you");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicSpear.java b/Mage.Sets/src/mage/cards/p/PsychicSpear.java
index 4f29179ca5f..0e6dbcbf64a 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicSpear.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicSpear.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class PsychicSpear extends CardImpl {
+public final class PsychicSpear extends CardImpl {
private static final FilterCard filter = new FilterCard("a Spirit or Arcane card to discard");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicSpiral.java b/Mage.Sets/src/mage/cards/p/PsychicSpiral.java
index 802c1372c68..73be93d4453 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicSpiral.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicSpiral.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class PsychicSpiral extends CardImpl {
+public final class PsychicSpiral extends CardImpl {
public PsychicSpiral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicStrike.java b/Mage.Sets/src/mage/cards/p/PsychicStrike.java
index a165c97f485..00da9995956 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicStrike.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicStrike.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class PsychicStrike extends CardImpl {
+public final class PsychicStrike extends CardImpl {
public PsychicStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicSurgery.java b/Mage.Sets/src/mage/cards/p/PsychicSurgery.java
index e58d46a1bf1..3a0fd1181b6 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicSurgery.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicSurgery.java
@@ -50,7 +50,7 @@ import mage.target.TargetCard;
*
* @author North
*/
-public class PsychicSurgery extends CardImpl {
+public final class PsychicSurgery extends CardImpl {
public PsychicSurgery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicTheft.java b/Mage.Sets/src/mage/cards/p/PsychicTheft.java
index b24e438f448..37702fa7f35 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicTheft.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicTheft.java
@@ -60,7 +60,7 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author L_J (significantly based on code by jeffwadsworth and Styxo)
*/
-public class PsychicTheft extends CardImpl {
+public final class PsychicTheft extends CardImpl {
public PsychicTheft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicTrance.java b/Mage.Sets/src/mage/cards/p/PsychicTrance.java
index cd6417d8980..cd9f3008fef 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicTrance.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicTrance.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
*
* @author TheElk801
*/
-public class PsychicTrance extends CardImpl {
+public final class PsychicTrance extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wizards you control");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicTransfer.java b/Mage.Sets/src/mage/cards/p/PsychicTransfer.java
index fefebf1a27b..a06d13f92d9 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicTransfer.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicTransfer.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author Quercitron
*/
-public class PsychicTransfer extends CardImpl {
+public final class PsychicTransfer extends CardImpl {
public PsychicTransfer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicVenom.java b/Mage.Sets/src/mage/cards/p/PsychicVenom.java
index b7117b4f4e6..925d5a15b63 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicVenom.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicVenom.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
* @author KholdFuzion
*/
-public class PsychicVenom extends CardImpl {
+public final class PsychicVenom extends CardImpl {
public PsychicVenom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychicVortex.java b/Mage.Sets/src/mage/cards/p/PsychicVortex.java
index c65c6216138..48ef07be974 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicVortex.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicVortex.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class PsychicVortex extends CardImpl {
+public final class PsychicVortex extends CardImpl {
public PsychicVortex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychogenicProbe.java b/Mage.Sets/src/mage/cards/p/PsychogenicProbe.java
index f61f48836c6..db3cbdf0e42 100644
--- a/Mage.Sets/src/mage/cards/p/PsychogenicProbe.java
+++ b/Mage.Sets/src/mage/cards/p/PsychogenicProbe.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class PsychogenicProbe extends CardImpl {
+public final class PsychogenicProbe extends CardImpl {
public PsychogenicProbe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychosisCrawler.java b/Mage.Sets/src/mage/cards/p/PsychosisCrawler.java
index 18c034316fc..ec218e24119 100644
--- a/Mage.Sets/src/mage/cards/p/PsychosisCrawler.java
+++ b/Mage.Sets/src/mage/cards/p/PsychosisCrawler.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class PsychosisCrawler extends CardImpl {
+public final class PsychosisCrawler extends CardImpl {
public PsychosisCrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychoticEpisode.java b/Mage.Sets/src/mage/cards/p/PsychoticEpisode.java
index 8f8c92fbdc8..ba47d6dd429 100644
--- a/Mage.Sets/src/mage/cards/p/PsychoticEpisode.java
+++ b/Mage.Sets/src/mage/cards/p/PsychoticEpisode.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author anonymous
*/
-public class PsychoticEpisode extends CardImpl {
+public final class PsychoticEpisode extends CardImpl {
public PsychoticEpisode(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychoticFury.java b/Mage.Sets/src/mage/cards/p/PsychoticFury.java
index cccb37ebecf..b6584cf9489 100644
--- a/Mage.Sets/src/mage/cards/p/PsychoticFury.java
+++ b/Mage.Sets/src/mage/cards/p/PsychoticFury.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author KholdFuzion
*/
-public class PsychoticFury extends CardImpl {
+public final class PsychoticFury extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("multicolored creature");
diff --git a/Mage.Sets/src/mage/cards/p/PsychoticHaze.java b/Mage.Sets/src/mage/cards/p/PsychoticHaze.java
index 1e8d565cc77..0c09e2eeffa 100644
--- a/Mage.Sets/src/mage/cards/p/PsychoticHaze.java
+++ b/Mage.Sets/src/mage/cards/p/PsychoticHaze.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author magenoxx_at_gmail.com
*/
-public class PsychoticHaze extends CardImpl {
+public final class PsychoticHaze extends CardImpl {
public PsychoticHaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java b/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java
index 1c193eabbd5..4e224fd3cab 100644
--- a/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java
+++ b/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class PsychotropeThallid extends CardImpl {
+public final class PsychotropeThallid extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Saproling");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PterodonKnight.java b/Mage.Sets/src/mage/cards/p/PterodonKnight.java
index 12ce0362302..47cee00b087 100644
--- a/Mage.Sets/src/mage/cards/p/PterodonKnight.java
+++ b/Mage.Sets/src/mage/cards/p/PterodonKnight.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class PterodonKnight extends CardImpl {
+public final class PterodonKnight extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Dinosaur");
diff --git a/Mage.Sets/src/mage/cards/p/PteronGhost.java b/Mage.Sets/src/mage/cards/p/PteronGhost.java
index 448af9319ab..ce17436891a 100644
--- a/Mage.Sets/src/mage/cards/p/PteronGhost.java
+++ b/Mage.Sets/src/mage/cards/p/PteronGhost.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class PteronGhost extends CardImpl {
+public final class PteronGhost extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/p/PublicExecution.java b/Mage.Sets/src/mage/cards/p/PublicExecution.java
index f18f521aa2e..735078ba0c6 100644
--- a/Mage.Sets/src/mage/cards/p/PublicExecution.java
+++ b/Mage.Sets/src/mage/cards/p/PublicExecution.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class PublicExecution extends CardImpl {
+public final class PublicExecution extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/p/PucasMischief.java b/Mage.Sets/src/mage/cards/p/PucasMischief.java
index e6ae593de83..8c7727e7d64 100644
--- a/Mage.Sets/src/mage/cards/p/PucasMischief.java
+++ b/Mage.Sets/src/mage/cards/p/PucasMischief.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class PucasMischief extends CardImpl {
+public final class PucasMischief extends CardImpl {
private static final String rule = "you may exchange control of target nonland permanent you control and target nonland permanent an opponent controls with an equal or lesser converted mana cost";
diff --git a/Mage.Sets/src/mage/cards/p/PullFromEternity.java b/Mage.Sets/src/mage/cards/p/PullFromEternity.java
index 47e21c2add7..c58c09fb4da 100644
--- a/Mage.Sets/src/mage/cards/p/PullFromEternity.java
+++ b/Mage.Sets/src/mage/cards/p/PullFromEternity.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInExile;
*
* @author LevelX2
*/
-public class PullFromEternity extends CardImpl {
+public final class PullFromEternity extends CardImpl {
private static final FilterCard filter = new FilterCard("face-up exiled card");
diff --git a/Mage.Sets/src/mage/cards/p/PullFromTheDeep.java b/Mage.Sets/src/mage/cards/p/PullFromTheDeep.java
index cc249d8ea11..f861d63c983 100644
--- a/Mage.Sets/src/mage/cards/p/PullFromTheDeep.java
+++ b/Mage.Sets/src/mage/cards/p/PullFromTheDeep.java
@@ -43,7 +43,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class PullFromTheDeep extends CardImpl {
+public final class PullFromTheDeep extends CardImpl {
private static final FilterCard filterInstant = new FilterCard("instant card from your graveyard");
private static final FilterCard filterSorcery = new FilterCard("sorcery card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/p/PullFromTomorrow.java b/Mage.Sets/src/mage/cards/p/PullFromTomorrow.java
index 951c443e138..b6fccdc9f2d 100644
--- a/Mage.Sets/src/mage/cards/p/PullFromTomorrow.java
+++ b/Mage.Sets/src/mage/cards/p/PullFromTomorrow.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class PullFromTomorrow extends CardImpl {
+public final class PullFromTomorrow extends CardImpl {
public PullFromTomorrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PullUnder.java b/Mage.Sets/src/mage/cards/p/PullUnder.java
index 4e9c2960323..8ba23a06ad7 100644
--- a/Mage.Sets/src/mage/cards/p/PullUnder.java
+++ b/Mage.Sets/src/mage/cards/p/PullUnder.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class PullUnder extends CardImpl {
+public final class PullUnder extends CardImpl {
public PullUnder (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PullingTeeth.java b/Mage.Sets/src/mage/cards/p/PullingTeeth.java
index acad4857eec..1fe1f57f67a 100644
--- a/Mage.Sets/src/mage/cards/p/PullingTeeth.java
+++ b/Mage.Sets/src/mage/cards/p/PullingTeeth.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class PullingTeeth extends CardImpl {
+public final class PullingTeeth extends CardImpl {
public PullingTeeth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PulmonicSliver.java b/Mage.Sets/src/mage/cards/p/PulmonicSliver.java
index b11ec0eccaf..38c2b022392 100644
--- a/Mage.Sets/src/mage/cards/p/PulmonicSliver.java
+++ b/Mage.Sets/src/mage/cards/p/PulmonicSliver.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author anonymous
*/
-public class PulmonicSliver extends CardImpl {
+public final class PulmonicSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/p/PulsatingIllusion.java b/Mage.Sets/src/mage/cards/p/PulsatingIllusion.java
index 32ce7d82f4e..1b3dcba6bfd 100644
--- a/Mage.Sets/src/mage/cards/p/PulsatingIllusion.java
+++ b/Mage.Sets/src/mage/cards/p/PulsatingIllusion.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author cbt33
*/
-public class PulsatingIllusion extends CardImpl {
+public final class PulsatingIllusion extends CardImpl {
public PulsatingIllusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PulseOfMurasa.java b/Mage.Sets/src/mage/cards/p/PulseOfMurasa.java
index d571dea102c..9288c17611b 100644
--- a/Mage.Sets/src/mage/cards/p/PulseOfMurasa.java
+++ b/Mage.Sets/src/mage/cards/p/PulseOfMurasa.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class PulseOfMurasa extends CardImpl {
+public final class PulseOfMurasa extends CardImpl {
private static final FilterCard FILTER = new FilterCard("creature or land card in a graveyard");
diff --git a/Mage.Sets/src/mage/cards/p/PulseOfTheDross.java b/Mage.Sets/src/mage/cards/p/PulseOfTheDross.java
index 9132edc7076..36e95b02f49 100644
--- a/Mage.Sets/src/mage/cards/p/PulseOfTheDross.java
+++ b/Mage.Sets/src/mage/cards/p/PulseOfTheDross.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author emerald000 & L_J
*/
-public class PulseOfTheDross extends CardImpl {
+public final class PulseOfTheDross extends CardImpl {
public PulseOfTheDross(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PulseOfTheFields.java b/Mage.Sets/src/mage/cards/p/PulseOfTheFields.java
index 5a7cbf07f43..4bdad454570 100644
--- a/Mage.Sets/src/mage/cards/p/PulseOfTheFields.java
+++ b/Mage.Sets/src/mage/cards/p/PulseOfTheFields.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class PulseOfTheFields extends CardImpl {
+public final class PulseOfTheFields extends CardImpl {
public PulseOfTheFields(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PulseOfTheForge.java b/Mage.Sets/src/mage/cards/p/PulseOfTheForge.java
index de60ac9e7e1..b3f8ffc3059 100644
--- a/Mage.Sets/src/mage/cards/p/PulseOfTheForge.java
+++ b/Mage.Sets/src/mage/cards/p/PulseOfTheForge.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class PulseOfTheForge extends CardImpl {
+public final class PulseOfTheForge extends CardImpl {
public PulseOfTheForge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PulseOfTheGrid.java b/Mage.Sets/src/mage/cards/p/PulseOfTheGrid.java
index 485af3b3c5c..8cabefefffa 100644
--- a/Mage.Sets/src/mage/cards/p/PulseOfTheGrid.java
+++ b/Mage.Sets/src/mage/cards/p/PulseOfTheGrid.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class PulseOfTheGrid extends CardImpl {
+public final class PulseOfTheGrid extends CardImpl {
public PulseOfTheGrid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PulseOfTheTangle.java b/Mage.Sets/src/mage/cards/p/PulseOfTheTangle.java
index 326bbdf4379..25948c83e89 100644
--- a/Mage.Sets/src/mage/cards/p/PulseOfTheTangle.java
+++ b/Mage.Sets/src/mage/cards/p/PulseOfTheTangle.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author wetterlicht
*/
-public class PulseOfTheTangle extends CardImpl {
+public final class PulseOfTheTangle extends CardImpl {
public PulseOfTheTangle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PulseTracker.java b/Mage.Sets/src/mage/cards/p/PulseTracker.java
index ef5b83dadc2..570331b6af9 100644
--- a/Mage.Sets/src/mage/cards/p/PulseTracker.java
+++ b/Mage.Sets/src/mage/cards/p/PulseTracker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author maurer.it_at_gmail.com
*/
-public class PulseTracker extends CardImpl {
+public final class PulseTracker extends CardImpl {
public PulseTracker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PulsemageAdvocate.java b/Mage.Sets/src/mage/cards/p/PulsemageAdvocate.java
index f600b33f391..b174da4965c 100644
--- a/Mage.Sets/src/mage/cards/p/PulsemageAdvocate.java
+++ b/Mage.Sets/src/mage/cards/p/PulsemageAdvocate.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class PulsemageAdvocate extends CardImpl {
+public final class PulsemageAdvocate extends CardImpl {
private static final FilterCard filter = new FilterCard("cards from an opponent's graveyard");
diff --git a/Mage.Sets/src/mage/cards/p/Pulverize.java b/Mage.Sets/src/mage/cards/p/Pulverize.java
index 9082f0837d3..4afc71320d6 100644
--- a/Mage.Sets/src/mage/cards/p/Pulverize.java
+++ b/Mage.Sets/src/mage/cards/p/Pulverize.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class Pulverize extends CardImpl {
+public final class Pulverize extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Mountains");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PunctureBlast.java b/Mage.Sets/src/mage/cards/p/PunctureBlast.java
index 671bb2f7cd4..d036c0cd0f3 100644
--- a/Mage.Sets/src/mage/cards/p/PunctureBlast.java
+++ b/Mage.Sets/src/mage/cards/p/PunctureBlast.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author Loki
*/
-public class PunctureBlast extends CardImpl {
+public final class PunctureBlast extends CardImpl {
public PunctureBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PunctureBolt.java b/Mage.Sets/src/mage/cards/p/PunctureBolt.java
index 423c77c5f99..3e40b6ef0a0 100644
--- a/Mage.Sets/src/mage/cards/p/PunctureBolt.java
+++ b/Mage.Sets/src/mage/cards/p/PunctureBolt.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class PunctureBolt extends CardImpl {
+public final class PunctureBolt extends CardImpl {
public PunctureBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PuncturingBlow.java b/Mage.Sets/src/mage/cards/p/PuncturingBlow.java
index b7bf5c15ec5..cc1525ed55e 100644
--- a/Mage.Sets/src/mage/cards/p/PuncturingBlow.java
+++ b/Mage.Sets/src/mage/cards/p/PuncturingBlow.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class PuncturingBlow extends CardImpl {
+public final class PuncturingBlow extends CardImpl {
public PuncturingBlow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PuncturingLight.java b/Mage.Sets/src/mage/cards/p/PuncturingLight.java
index 19f4b4e65d7..2903f9a427a 100644
--- a/Mage.Sets/src/mage/cards/p/PuncturingLight.java
+++ b/Mage.Sets/src/mage/cards/p/PuncturingLight.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class PuncturingLight extends CardImpl {
+public final class PuncturingLight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterAttackingOrBlockingCreature("attacking or blocking creature with power 3 or less");
diff --git a/Mage.Sets/src/mage/cards/p/PunishIgnorance.java b/Mage.Sets/src/mage/cards/p/PunishIgnorance.java
index 2207a2bab47..9dbbfdf3646 100644
--- a/Mage.Sets/src/mage/cards/p/PunishIgnorance.java
+++ b/Mage.Sets/src/mage/cards/p/PunishIgnorance.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class PunishIgnorance extends CardImpl {
+public final class PunishIgnorance extends CardImpl {
public PunishIgnorance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{U}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PunishTheEnemy.java b/Mage.Sets/src/mage/cards/p/PunishTheEnemy.java
index 6c093f17f3d..3a7f6a579ce 100644
--- a/Mage.Sets/src/mage/cards/p/PunishTheEnemy.java
+++ b/Mage.Sets/src/mage/cards/p/PunishTheEnemy.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class PunishTheEnemy extends CardImpl {
+public final class PunishTheEnemy extends CardImpl {
public PunishTheEnemy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PunishingFire.java b/Mage.Sets/src/mage/cards/p/PunishingFire.java
index 717eb46bf0c..705b5e984d7 100644
--- a/Mage.Sets/src/mage/cards/p/PunishingFire.java
+++ b/Mage.Sets/src/mage/cards/p/PunishingFire.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class PunishingFire extends CardImpl {
+public final class PunishingFire extends CardImpl {
public PunishingFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PuppetConjurer.java b/Mage.Sets/src/mage/cards/p/PuppetConjurer.java
index ecc09b12531..75c9898104b 100644
--- a/Mage.Sets/src/mage/cards/p/PuppetConjurer.java
+++ b/Mage.Sets/src/mage/cards/p/PuppetConjurer.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.HomunculusToken;
*
* @author Plopman
*/
-public class PuppetConjurer extends CardImpl {
+public final class PuppetConjurer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Homunculus");
diff --git a/Mage.Sets/src/mage/cards/p/PuppetStrings.java b/Mage.Sets/src/mage/cards/p/PuppetStrings.java
index 010f5d5fbaa..28a7eceed8b 100644
--- a/Mage.Sets/src/mage/cards/p/PuppetStrings.java
+++ b/Mage.Sets/src/mage/cards/p/PuppetStrings.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class PuppetStrings extends CardImpl {
+public final class PuppetStrings extends CardImpl {
public PuppetStrings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/p/Puppeteer.java b/Mage.Sets/src/mage/cards/p/Puppeteer.java
index 681e4294c17..c03cc667834 100644
--- a/Mage.Sets/src/mage/cards/p/Puppeteer.java
+++ b/Mage.Sets/src/mage/cards/p/Puppeteer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Puppeteer extends CardImpl {
+public final class Puppeteer extends CardImpl {
public Puppeteer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/PuppeteerClique.java b/Mage.Sets/src/mage/cards/p/PuppeteerClique.java
index 3450dc80fa3..3cb7f486315 100644
--- a/Mage.Sets/src/mage/cards/p/PuppeteerClique.java
+++ b/Mage.Sets/src/mage/cards/p/PuppeteerClique.java
@@ -62,7 +62,7 @@ import mage.target.targetpointer.FixedTarget;
* @author jeffwadsworth
*
*/
-public class PuppeteerClique extends CardImpl {
+public final class PuppeteerClique extends CardImpl {
public PuppeteerClique(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PuppetsVerdict.java b/Mage.Sets/src/mage/cards/p/PuppetsVerdict.java
index 235930a57c5..a915db9392e 100644
--- a/Mage.Sets/src/mage/cards/p/PuppetsVerdict.java
+++ b/Mage.Sets/src/mage/cards/p/PuppetsVerdict.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class PuppetsVerdict extends CardImpl {
+public final class PuppetsVerdict extends CardImpl {
public PuppetsVerdict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PureIntentions.java b/Mage.Sets/src/mage/cards/p/PureIntentions.java
index 1fd975a8bce..0011613c72c 100644
--- a/Mage.Sets/src/mage/cards/p/PureIntentions.java
+++ b/Mage.Sets/src/mage/cards/p/PureIntentions.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class PureIntentions extends CardImpl {
+public final class PureIntentions extends CardImpl {
public PureIntentions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PureReflection.java b/Mage.Sets/src/mage/cards/p/PureReflection.java
index ff400b67c4d..cbdb967ad1f 100644
--- a/Mage.Sets/src/mage/cards/p/PureReflection.java
+++ b/Mage.Sets/src/mage/cards/p/PureReflection.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author SpikesCafe-google
*/
-public class PureReflection extends CardImpl {
+public final class PureReflection extends CardImpl {
public PureReflection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PureSimple.java b/Mage.Sets/src/mage/cards/p/PureSimple.java
index a814617eb30..cb15c5ce44c 100644
--- a/Mage.Sets/src/mage/cards/p/PureSimple.java
+++ b/Mage.Sets/src/mage/cards/p/PureSimple.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author Wehk
*/
-public class PureSimple extends SplitCard {
+public final class PureSimple extends SplitCard {
private static final FilterPermanent filterDestroy = new FilterPermanent("Auras and Equipment");
private static final FilterPermanent filterMulticolor = new FilterPermanent("multicolored permanent");
diff --git a/Mage.Sets/src/mage/cards/p/Purelace.java b/Mage.Sets/src/mage/cards/p/Purelace.java
index 3594decaac0..1abfd5120e7 100644
--- a/Mage.Sets/src/mage/cards/p/Purelace.java
+++ b/Mage.Sets/src/mage/cards/p/Purelace.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author AlumiuN
*/
-public class Purelace extends CardImpl {
+public final class Purelace extends CardImpl {
public Purelace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PuresightMerrow.java b/Mage.Sets/src/mage/cards/p/PuresightMerrow.java
index b5124e85f52..bd8b974d5e6 100644
--- a/Mage.Sets/src/mage/cards/p/PuresightMerrow.java
+++ b/Mage.Sets/src/mage/cards/p/PuresightMerrow.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class PuresightMerrow extends CardImpl {
+public final class PuresightMerrow extends CardImpl {
public PuresightMerrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W/U}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/p/PuresteelPaladin.java b/Mage.Sets/src/mage/cards/p/PuresteelPaladin.java
index 28fae07ef7d..09cc423ddc9 100644
--- a/Mage.Sets/src/mage/cards/p/PuresteelPaladin.java
+++ b/Mage.Sets/src/mage/cards/p/PuresteelPaladin.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class PuresteelPaladin extends CardImpl {
+public final class PuresteelPaladin extends CardImpl {
private static final FilterPermanent filter = new FilterControlledPermanent("Equipment");
static {
diff --git a/Mage.Sets/src/mage/cards/p/Purgatory.java b/Mage.Sets/src/mage/cards/p/Purgatory.java
index 350cd3c1858..6e0ceb8c95d 100644
--- a/Mage.Sets/src/mage/cards/p/Purgatory.java
+++ b/Mage.Sets/src/mage/cards/p/Purgatory.java
@@ -61,7 +61,7 @@ import mage.util.CardUtil;
*
* @author L_J
*/
-public class Purgatory extends CardImpl {
+public final class Purgatory extends CardImpl {
public Purgatory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/Purge.java b/Mage.Sets/src/mage/cards/p/Purge.java
index 26a5ff91dce..e87cd7bbe61 100644
--- a/Mage.Sets/src/mage/cards/p/Purge.java
+++ b/Mage.Sets/src/mage/cards/p/Purge.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Purge extends CardImpl {
+public final class Purge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature or black creature");
diff --git a/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java b/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java
index fe4af736628..88aac6b454e 100644
--- a/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java
+++ b/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class PurgeTheProfane extends CardImpl {
+public final class PurgeTheProfane extends CardImpl {
public PurgeTheProfane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PurgingScythe.java b/Mage.Sets/src/mage/cards/p/PurgingScythe.java
new file mode 100644
index 00000000000..de7f9280b33
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/p/PurgingScythe.java
@@ -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.p;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.ComparisonType;
+import mage.constants.Outcome;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.StaticFilters;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.ToughnessPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.Target;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class PurgingScythe extends CardImpl {
+
+ public PurgingScythe(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
+
+ // At the beginning of your upkeep, Purging Scythe deals 2 damage to the creature with the least toughness. If two or more creatures are tied for least toughness, you choose one of them.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new PurgingScytheEffect(), TargetController.YOU, false));
+ }
+
+ public PurgingScythe(final PurgingScythe card) {
+ super(card);
+ }
+
+ @Override
+ public PurgingScythe copy() {
+ return new PurgingScythe(this);
+ }
+}
+
+class PurgingScytheEffect extends OneShotEffect {
+
+ public PurgingScytheEffect() {
+ super(Outcome.DestroyPermanent);
+ this.staticText = "{this} deals 2 damage to the creature with the least toughness. "
+ + "If two or more creatures are tied for least toughness, you choose one of them";
+ }
+
+ public PurgingScytheEffect(final PurgingScytheEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public PurgingScytheEffect copy() {
+ return new PurgingScytheEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
+ if (controller != null && sourcePermanent != null) {
+ int leastToughness = Integer.MAX_VALUE;
+ boolean multipleExist = false;
+ Permanent permanentToDamage = null;
+ for (Permanent permanent : game.getBattlefield().getActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURES, source.getControllerId(), game)) {
+ if (permanent.getToughness().getValue() < leastToughness) {
+ permanentToDamage = permanent;
+ leastToughness = permanent.getToughness().getValue();
+ multipleExist = false;
+ } else {
+ if (permanent.getToughness().getValue() == leastToughness) {
+ multipleExist = true;
+ }
+ }
+ }
+ if (multipleExist) {
+ FilterCreaturePermanent filter = new FilterCreaturePermanent("one of the creatures with the least toughness");
+ filter.add(new ToughnessPredicate(ComparisonType.EQUAL_TO, leastToughness));
+ Target target = new TargetPermanent(filter);
+ target.setNotTarget(true);
+ if (target.canChoose(source.getSourceId(), source.getControllerId(), game)) {
+ if (controller.choose(outcome, target, source.getSourceId(), game)) {
+ permanentToDamage = game.getPermanent(target.getFirstTarget());
+ }
+ }
+ }
+ if (permanentToDamage != null) {
+ game.informPlayers(new StringBuilder(sourcePermanent.getName()).append(" chosen creature: ").append(permanentToDamage.getName()).toString());
+ return permanentToDamage.damage(2, source.getSourceId(), game, false, true) > 0;
+ }
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/Purify.java b/Mage.Sets/src/mage/cards/p/Purify.java
index a34505a9067..18504f0bf90 100644
--- a/Mage.Sets/src/mage/cards/p/Purify.java
+++ b/Mage.Sets/src/mage/cards/p/Purify.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class Purify extends CardImpl {
+public final class Purify extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts and enchantments");
diff --git a/Mage.Sets/src/mage/cards/p/PurifyTheGrave.java b/Mage.Sets/src/mage/cards/p/PurifyTheGrave.java
index 08c5899ca36..5f114575851 100644
--- a/Mage.Sets/src/mage/cards/p/PurifyTheGrave.java
+++ b/Mage.Sets/src/mage/cards/p/PurifyTheGrave.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author nantuko
*/
-public class PurifyTheGrave extends CardImpl {
+public final class PurifyTheGrave extends CardImpl {
public PurifyTheGrave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/p/Purity.java b/Mage.Sets/src/mage/cards/p/Purity.java
index 236ac0a69a9..99bd1f9f14d 100644
--- a/Mage.Sets/src/mage/cards/p/Purity.java
+++ b/Mage.Sets/src/mage/cards/p/Purity.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author Pete Rossi
*/
-public class Purity extends CardImpl {
+public final class Purity extends CardImpl {
public Purity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PurphorosGodOfTheForge.java b/Mage.Sets/src/mage/cards/p/PurphorosGodOfTheForge.java
index 6da9bbd4386..cd589cc9a14 100644
--- a/Mage.Sets/src/mage/cards/p/PurphorosGodOfTheForge.java
+++ b/Mage.Sets/src/mage/cards/p/PurphorosGodOfTheForge.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class PurphorosGodOfTheForge extends CardImpl {
+public final class PurphorosGodOfTheForge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PurphorossEmissary.java b/Mage.Sets/src/mage/cards/p/PurphorossEmissary.java
index a427dc47c55..fb2fc4ac225 100644
--- a/Mage.Sets/src/mage/cards/p/PurphorossEmissary.java
+++ b/Mage.Sets/src/mage/cards/p/PurphorossEmissary.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class PurphorossEmissary extends CardImpl {
+public final class PurphorossEmissary extends CardImpl {
public PurphorossEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PurrajOfUrborg.java b/Mage.Sets/src/mage/cards/p/PurrajOfUrborg.java
index 4e19a9c00a2..ffd9c8c3878 100644
--- a/Mage.Sets/src/mage/cards/p/PurrajOfUrborg.java
+++ b/Mage.Sets/src/mage/cards/p/PurrajOfUrborg.java
@@ -53,7 +53,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author TheElk801
*/
-public class PurrajOfUrborg extends CardImpl {
+public final class PurrajOfUrborg extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a black spell");
diff --git a/Mage.Sets/src/mage/cards/p/PursueGlory.java b/Mage.Sets/src/mage/cards/p/PursueGlory.java
index a62a0f4bc0d..d3a365e5f82 100644
--- a/Mage.Sets/src/mage/cards/p/PursueGlory.java
+++ b/Mage.Sets/src/mage/cards/p/PursueGlory.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author stravant
*/
-public class PursueGlory extends CardImpl {
+public final class PursueGlory extends CardImpl {
public PursueGlory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PursuitOfFlight.java b/Mage.Sets/src/mage/cards/p/PursuitOfFlight.java
index b1f97a2cd60..0b5dca94c11 100644
--- a/Mage.Sets/src/mage/cards/p/PursuitOfFlight.java
+++ b/Mage.Sets/src/mage/cards/p/PursuitOfFlight.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class PursuitOfFlight extends CardImpl {
+public final class PursuitOfFlight extends CardImpl {
static final String rule = "and has \"{U}: This creature gains flying until end of turn.\"";
diff --git a/Mage.Sets/src/mage/cards/p/PursuitOfKnowledge.java b/Mage.Sets/src/mage/cards/p/PursuitOfKnowledge.java
index 41f0acc2def..b8593e2435f 100644
--- a/Mage.Sets/src/mage/cards/p/PursuitOfKnowledge.java
+++ b/Mage.Sets/src/mage/cards/p/PursuitOfKnowledge.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LoneFox
*/
-public class PursuitOfKnowledge extends CardImpl {
+public final class PursuitOfKnowledge extends CardImpl {
public PursuitOfKnowledge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/p/PusKami.java b/Mage.Sets/src/mage/cards/p/PusKami.java
index babcda4832f..c51992c0155 100644
--- a/Mage.Sets/src/mage/cards/p/PusKami.java
+++ b/Mage.Sets/src/mage/cards/p/PusKami.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class PusKami extends CardImpl {
+public final class PusKami extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/p/PutAway.java b/Mage.Sets/src/mage/cards/p/PutAway.java
index be22faf82a0..6b06b85d117 100644
--- a/Mage.Sets/src/mage/cards/p/PutAway.java
+++ b/Mage.Sets/src/mage/cards/p/PutAway.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
* @author jeffwadsworth
*
*/
-public class PutAway extends CardImpl {
+public final class PutAway extends CardImpl {
public PutAway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/p/Putrefaction.java b/Mage.Sets/src/mage/cards/p/Putrefaction.java
index eaf2232671b..79b1635d58e 100644
--- a/Mage.Sets/src/mage/cards/p/Putrefaction.java
+++ b/Mage.Sets/src/mage/cards/p/Putrefaction.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J (based on dustinconrad)
*/
-public class Putrefaction extends CardImpl {
+public final class Putrefaction extends CardImpl {
public Putrefaction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/Putrefax.java b/Mage.Sets/src/mage/cards/p/Putrefax.java
index 511334b50e6..f2812587a99 100644
--- a/Mage.Sets/src/mage/cards/p/Putrefax.java
+++ b/Mage.Sets/src/mage/cards/p/Putrefax.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent;
*
* @author Loki
*/
-public class Putrefax extends CardImpl {
+public final class Putrefax extends CardImpl {
public Putrefax (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/Putrefy.java b/Mage.Sets/src/mage/cards/p/Putrefy.java
index 3f2417e0f3d..4c335865ef1 100644
--- a/Mage.Sets/src/mage/cards/p/Putrefy.java
+++ b/Mage.Sets/src/mage/cards/p/Putrefy.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class Putrefy extends CardImpl {
+public final class Putrefy extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PutridCyclops.java b/Mage.Sets/src/mage/cards/p/PutridCyclops.java
index 1dfe474b520..9ce976ef5b0 100644
--- a/Mage.Sets/src/mage/cards/p/PutridCyclops.java
+++ b/Mage.Sets/src/mage/cards/p/PutridCyclops.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class PutridCyclops extends CardImpl {
+public final class PutridCyclops extends CardImpl {
public PutridCyclops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PutridImp.java b/Mage.Sets/src/mage/cards/p/PutridImp.java
index 046a07e3512..675ff89bcfa 100644
--- a/Mage.Sets/src/mage/cards/p/PutridImp.java
+++ b/Mage.Sets/src/mage/cards/p/PutridImp.java
@@ -53,7 +53,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class PutridImp extends CardImpl {
+public final class PutridImp extends CardImpl {
public PutridImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PutridLeech.java b/Mage.Sets/src/mage/cards/p/PutridLeech.java
index 88edf548258..9983863deea 100644
--- a/Mage.Sets/src/mage/cards/p/PutridLeech.java
+++ b/Mage.Sets/src/mage/cards/p/PutridLeech.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PutridLeech extends CardImpl {
+public final class PutridLeech extends CardImpl {
public PutridLeech(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PutridRaptor.java b/Mage.Sets/src/mage/cards/p/PutridRaptor.java
index afc93ff5e94..08b633f4266 100644
--- a/Mage.Sets/src/mage/cards/p/PutridRaptor.java
+++ b/Mage.Sets/src/mage/cards/p/PutridRaptor.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class PutridRaptor extends CardImpl {
+public final class PutridRaptor extends CardImpl {
private static final FilterCard filter = new FilterCard("a Zombie card");
diff --git a/Mage.Sets/src/mage/cards/p/PutridWarrior.java b/Mage.Sets/src/mage/cards/p/PutridWarrior.java
index fc37df6ebb7..37eb773e49e 100644
--- a/Mage.Sets/src/mage/cards/p/PutridWarrior.java
+++ b/Mage.Sets/src/mage/cards/p/PutridWarrior.java
@@ -51,7 +51,7 @@ import mage.players.Player;
* @author LoneFox
*/
-public class PutridWarrior extends CardImpl {
+public final class PutridWarrior extends CardImpl {
public PutridWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PygmyAllosaurus.java b/Mage.Sets/src/mage/cards/p/PygmyAllosaurus.java
index 21744477415..0c077e0a954 100644
--- a/Mage.Sets/src/mage/cards/p/PygmyAllosaurus.java
+++ b/Mage.Sets/src/mage/cards/p/PygmyAllosaurus.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PygmyAllosaurus extends CardImpl {
+public final class PygmyAllosaurus extends CardImpl {
public PygmyAllosaurus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PygmyKavu.java b/Mage.Sets/src/mage/cards/p/PygmyKavu.java
index b04ca0d5e6d..a287c137122 100644
--- a/Mage.Sets/src/mage/cards/p/PygmyKavu.java
+++ b/Mage.Sets/src/mage/cards/p/PygmyKavu.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class PygmyKavu extends CardImpl {
+public final class PygmyKavu extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature your opponents control");
diff --git a/Mage.Sets/src/mage/cards/p/PygmyPyrosaur.java b/Mage.Sets/src/mage/cards/p/PygmyPyrosaur.java
index 69f48ab75e3..6159c835693 100644
--- a/Mage.Sets/src/mage/cards/p/PygmyPyrosaur.java
+++ b/Mage.Sets/src/mage/cards/p/PygmyPyrosaur.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class PygmyPyrosaur extends CardImpl {
+public final class PygmyPyrosaur extends CardImpl {
public PygmyPyrosaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PygmyRazorback.java b/Mage.Sets/src/mage/cards/p/PygmyRazorback.java
index 3789b2365b9..faee48d059e 100644
--- a/Mage.Sets/src/mage/cards/p/PygmyRazorback.java
+++ b/Mage.Sets/src/mage/cards/p/PygmyRazorback.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class PygmyRazorback extends CardImpl {
+public final class PygmyRazorback extends CardImpl {
public PygmyRazorback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PygmyTroll.java b/Mage.Sets/src/mage/cards/p/PygmyTroll.java
index ef69814e8df..f23594fdd52 100644
--- a/Mage.Sets/src/mage/cards/p/PygmyTroll.java
+++ b/Mage.Sets/src/mage/cards/p/PygmyTroll.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class PygmyTroll extends CardImpl {
+public final class PygmyTroll extends CardImpl {
public PygmyTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/Pyknite.java b/Mage.Sets/src/mage/cards/p/Pyknite.java
index 85ed3c545ce..cf9021812db 100644
--- a/Mage.Sets/src/mage/cards/p/Pyknite.java
+++ b/Mage.Sets/src/mage/cards/p/Pyknite.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class Pyknite extends CardImpl {
+public final class Pyknite extends CardImpl {
public Pyknite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PyramidOfThePantheon.java b/Mage.Sets/src/mage/cards/p/PyramidOfThePantheon.java
index b851c4c1c97..18528792a7b 100644
--- a/Mage.Sets/src/mage/cards/p/PyramidOfThePantheon.java
+++ b/Mage.Sets/src/mage/cards/p/PyramidOfThePantheon.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author spjspj
*/
-public class PyramidOfThePantheon extends CardImpl {
+public final class PyramidOfThePantheon extends CardImpl {
public PyramidOfThePantheon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/p/Pyramids.java b/Mage.Sets/src/mage/cards/p/Pyramids.java
index 80478175414..1da8b3b788c 100644
--- a/Mage.Sets/src/mage/cards/p/Pyramids.java
+++ b/Mage.Sets/src/mage/cards/p/Pyramids.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author MarcoMarin
*/
-public class Pyramids extends CardImpl {
+public final class Pyramids extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Auras attached to a land");
diff --git a/Mage.Sets/src/mage/cards/p/PyreCharger.java b/Mage.Sets/src/mage/cards/p/PyreCharger.java
index 89c36edc254..fb45845be42 100644
--- a/Mage.Sets/src/mage/cards/p/PyreCharger.java
+++ b/Mage.Sets/src/mage/cards/p/PyreCharger.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class PyreCharger extends CardImpl {
+public final class PyreCharger extends CardImpl {
public PyreCharger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyreHound.java b/Mage.Sets/src/mage/cards/p/PyreHound.java
index d3c61ec8316..f73b177d4b0 100644
--- a/Mage.Sets/src/mage/cards/p/PyreHound.java
+++ b/Mage.Sets/src/mage/cards/p/PyreHound.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterInstantOrSorcerySpell;
*
* @author LevelX2
*/
-public class PyreHound extends CardImpl {
+public final class PyreHound extends CardImpl {
public PyreHound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyreZombie.java b/Mage.Sets/src/mage/cards/p/PyreZombie.java
index 1bef108c76d..0341538bafc 100644
--- a/Mage.Sets/src/mage/cards/p/PyreZombie.java
+++ b/Mage.Sets/src/mage/cards/p/PyreZombie.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class PyreZombie extends CardImpl {
+public final class PyreZombie extends CardImpl {
public PyreZombie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyreheartWolf.java b/Mage.Sets/src/mage/cards/p/PyreheartWolf.java
index 8ab32e9b2b4..7eda90e25fc 100644
--- a/Mage.Sets/src/mage/cards/p/PyreheartWolf.java
+++ b/Mage.Sets/src/mage/cards/p/PyreheartWolf.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author intimidatingant
*/
-public class PyreheartWolf extends CardImpl {
+public final class PyreheartWolf extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/p/PyreticRitual.java b/Mage.Sets/src/mage/cards/p/PyreticRitual.java
index c98b63be947..248fb0f64cc 100644
--- a/Mage.Sets/src/mage/cards/p/PyreticRitual.java
+++ b/Mage.Sets/src/mage/cards/p/PyreticRitual.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class PyreticRitual extends CardImpl {
+public final class PyreticRitual extends CardImpl {
public PyreticRitual(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyrewildShaman.java b/Mage.Sets/src/mage/cards/p/PyrewildShaman.java
index 72fa8612714..1c7b228640f 100644
--- a/Mage.Sets/src/mage/cards/p/PyrewildShaman.java
+++ b/Mage.Sets/src/mage/cards/p/PyrewildShaman.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-public class PyrewildShaman extends CardImpl {
+public final class PyrewildShaman extends CardImpl {
public PyrewildShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyriteSpellbomb.java b/Mage.Sets/src/mage/cards/p/PyriteSpellbomb.java
index a9c187bc63d..0303f3739f7 100644
--- a/Mage.Sets/src/mage/cards/p/PyriteSpellbomb.java
+++ b/Mage.Sets/src/mage/cards/p/PyriteSpellbomb.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class PyriteSpellbomb extends CardImpl {
+public final class PyriteSpellbomb extends CardImpl {
public PyriteSpellbomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/p/Pyroblast.java b/Mage.Sets/src/mage/cards/p/Pyroblast.java
index fa291f17b6f..783b5ec386e 100644
--- a/Mage.Sets/src/mage/cards/p/Pyroblast.java
+++ b/Mage.Sets/src/mage/cards/p/Pyroblast.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author Plopman
*/
-public class Pyroblast extends CardImpl {
+public final class Pyroblast extends CardImpl {
public Pyroblast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Pyroclasm.java b/Mage.Sets/src/mage/cards/p/Pyroclasm.java
index 5d4def6274d..96fd18e9053 100644
--- a/Mage.Sets/src/mage/cards/p/Pyroclasm.java
+++ b/Mage.Sets/src/mage/cards/p/Pyroclasm.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Pyroclasm extends CardImpl {
+public final class Pyroclasm extends CardImpl {
public Pyroclasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyroclastConsul.java b/Mage.Sets/src/mage/cards/p/PyroclastConsul.java
index c9b10e2da0a..d8a5b23d14c 100644
--- a/Mage.Sets/src/mage/cards/p/PyroclastConsul.java
+++ b/Mage.Sets/src/mage/cards/p/PyroclastConsul.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class PyroclastConsul extends CardImpl {
+public final class PyroclastConsul extends CardImpl {
public PyroclastConsul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Pyroconvergence.java b/Mage.Sets/src/mage/cards/p/Pyroconvergence.java
index 85e498b7230..2ee4d6952ec 100644
--- a/Mage.Sets/src/mage/cards/p/Pyroconvergence.java
+++ b/Mage.Sets/src/mage/cards/p/Pyroconvergence.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Pyroconvergence extends CardImpl {
+public final class Pyroconvergence extends CardImpl {
public Pyroconvergence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Pyrohemia.java b/Mage.Sets/src/mage/cards/p/Pyrohemia.java
index 6ffb55dccc9..534a3094a97 100644
--- a/Mage.Sets/src/mage/cards/p/Pyrohemia.java
+++ b/Mage.Sets/src/mage/cards/p/Pyrohemia.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author fireshoes
*/
-public class Pyrohemia extends CardImpl {
+public final class Pyrohemia extends CardImpl {
private static final String ruleText = "At the beginning of the end step, if no creatures are on the battlefield, sacrifice {this}.";
diff --git a/Mage.Sets/src/mage/cards/p/Pyrokinesis.java b/Mage.Sets/src/mage/cards/p/Pyrokinesis.java
index f12b2b3a6dd..a084e625289 100644
--- a/Mage.Sets/src/mage/cards/p/Pyrokinesis.java
+++ b/Mage.Sets/src/mage/cards/p/Pyrokinesis.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author Plopman
*/
-public class Pyrokinesis extends CardImpl {
+public final class Pyrokinesis extends CardImpl {
public Pyrokinesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyromancerAscension.java b/Mage.Sets/src/mage/cards/p/PyromancerAscension.java
index 21a6ac5d85e..1e316fb6214 100644
--- a/Mage.Sets/src/mage/cards/p/PyromancerAscension.java
+++ b/Mage.Sets/src/mage/cards/p/PyromancerAscension.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author nantuko
*/
-public class PyromancerAscension extends CardImpl {
+public final class PyromancerAscension extends CardImpl {
public PyromancerAscension(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyromancersAssault.java b/Mage.Sets/src/mage/cards/p/PyromancersAssault.java
index e3450eb7451..9ee3029140e 100644
--- a/Mage.Sets/src/mage/cards/p/PyromancersAssault.java
+++ b/Mage.Sets/src/mage/cards/p/PyromancersAssault.java
@@ -45,7 +45,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author fireshoes
*/
-public class PyromancersAssault extends CardImpl {
+public final class PyromancersAssault extends CardImpl {
public PyromancersAssault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyromancersGauntlet.java b/Mage.Sets/src/mage/cards/p/PyromancersGauntlet.java
index 1282b111719..11433f5996f 100644
--- a/Mage.Sets/src/mage/cards/p/PyromancersGauntlet.java
+++ b/Mage.Sets/src/mage/cards/p/PyromancersGauntlet.java
@@ -48,7 +48,7 @@ import mage.util.CardUtil;
*
* @author Plopman
*/
-public class PyromancersGauntlet extends CardImpl {
+public final class PyromancersGauntlet extends CardImpl {
public PyromancersGauntlet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/p/PyromancersGoggles.java b/Mage.Sets/src/mage/cards/p/PyromancersGoggles.java
index 417bdcb8c4b..eb6de3794cb 100644
--- a/Mage.Sets/src/mage/cards/p/PyromancersGoggles.java
+++ b/Mage.Sets/src/mage/cards/p/PyromancersGoggles.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class PyromancersGoggles extends CardImpl {
+public final class PyromancersGoggles extends CardImpl {
public PyromancersGoggles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/p/PyromancersSwath.java b/Mage.Sets/src/mage/cards/p/PyromancersSwath.java
index dd9f118aa8d..62898c1aab9 100644
--- a/Mage.Sets/src/mage/cards/p/PyromancersSwath.java
+++ b/Mage.Sets/src/mage/cards/p/PyromancersSwath.java
@@ -45,7 +45,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class PyromancersSwath extends CardImpl {
+public final class PyromancersSwath extends CardImpl {
public PyromancersSwath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Pyromancy.java b/Mage.Sets/src/mage/cards/p/Pyromancy.java
index ec0473adf9e..10c72b11251 100644
--- a/Mage.Sets/src/mage/cards/p/Pyromancy.java
+++ b/Mage.Sets/src/mage/cards/p/Pyromancy.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*/
-public class Pyromancy extends CardImpl {
+public final class Pyromancy extends CardImpl {
public Pyromancy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Pyromania.java b/Mage.Sets/src/mage/cards/p/Pyromania.java
index c052456abaf..987da84a1fa 100644
--- a/Mage.Sets/src/mage/cards/p/Pyromania.java
+++ b/Mage.Sets/src/mage/cards/p/Pyromania.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class Pyromania extends CardImpl {
+public final class Pyromania extends CardImpl {
public Pyromania(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyromanticPilgrim.java b/Mage.Sets/src/mage/cards/p/PyromanticPilgrim.java
index c11849fa123..0932a9c2b25 100644
--- a/Mage.Sets/src/mage/cards/p/PyromanticPilgrim.java
+++ b/Mage.Sets/src/mage/cards/p/PyromanticPilgrim.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class PyromanticPilgrim extends CardImpl {
+public final class PyromanticPilgrim extends CardImpl {
public PyromanticPilgrim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Pyromatics.java b/Mage.Sets/src/mage/cards/p/Pyromatics.java
index fe456209b9c..a35834152e4 100644
--- a/Mage.Sets/src/mage/cards/p/Pyromatics.java
+++ b/Mage.Sets/src/mage/cards/p/Pyromatics.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Pyromatics extends CardImpl {
+public final class Pyromatics extends CardImpl {
public Pyromatics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyrostaticPillar.java b/Mage.Sets/src/mage/cards/p/PyrostaticPillar.java
index ca2f69c5922..40fadbd9e2c 100644
--- a/Mage.Sets/src/mage/cards/p/PyrostaticPillar.java
+++ b/Mage.Sets/src/mage/cards/p/PyrostaticPillar.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author dustinconrad
*/
-public class PyrostaticPillar extends CardImpl {
+public final class PyrostaticPillar extends CardImpl {
public PyrostaticPillar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/Pyrotechnics.java b/Mage.Sets/src/mage/cards/p/Pyrotechnics.java
index 3818761604a..e320abbc894 100644
--- a/Mage.Sets/src/mage/cards/p/Pyrotechnics.java
+++ b/Mage.Sets/src/mage/cards/p/Pyrotechnics.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author Quercitron
*/
-public class Pyrotechnics extends CardImpl {
+public final class Pyrotechnics extends CardImpl {
public Pyrotechnics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PyrrhicRevival.java b/Mage.Sets/src/mage/cards/p/PyrrhicRevival.java
index 3110ce8a5c8..c2bcbde16ad 100644
--- a/Mage.Sets/src/mage/cards/p/PyrrhicRevival.java
+++ b/Mage.Sets/src/mage/cards/p/PyrrhicRevival.java
@@ -27,31 +27,35 @@
*/
package mage.cards.p;
+import java.util.HashSet;
+import java.util.Set;
import java.util.UUID;
import mage.abilities.Ability;
+import mage.abilities.effects.ContinuousEffect;
+import mage.abilities.effects.EntersBattlefieldEffect;
import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.cards.Cards;
import mage.constants.CardType;
+import mage.constants.Duration;
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.targetpointer.FixedTarget;
/**
*
* @author jeffwadsworth
*
*/
-public class PyrrhicRevival extends CardImpl {
+public final class PyrrhicRevival extends CardImpl {
public PyrrhicRevival(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W/B}{W/B}{W/B}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W/B}{W/B}{W/B}");
// Each player returns each creature card from their graveyard to the battlefield with an additional -1/-1 counter on it.
this.getSpellAbility().addEffect(new PyrrhicRevivalEffect());
@@ -86,23 +90,26 @@ class PyrrhicRevivalEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- boolean result = false;
- for (Player player : game.getPlayers().values()) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
+ Set toBattlefield = new HashSet<>();
+ for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
+ Player player = game.getPlayer(playerId);
if (player != null) {
- Cards cards = player.getGraveyard();
- for (Card card : cards.getCards(game)) {
+ for (Card card : player.getGraveyard().getCards(game)) {
if (card != null && card.isCreature()) {
- if (card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), card.getOwnerId(), false)) {
- Permanent permanent = game.getPermanent(card.getId());
- if (permanent != null) {
- permanent.addCounters(CounterType.M1M1.createInstance(), source, game);
- }
- result = true;
- }
+ toBattlefield.add(card);
+ ContinuousEffect effect = new EntersBattlefieldEffect(new AddCountersTargetEffect(CounterType.M1M1.createInstance()));
+ effect.setDuration(Duration.OneUse);
+ effect.setTargetPointer(new FixedTarget(card.getId()));
+ game.addEffect(effect, source);
}
}
}
}
- return result;
+ controller.moveCards(toBattlefield, Zone.BATTLEFIELD, source, game, false, false, true, null);
+ return true;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/p/Python.java b/Mage.Sets/src/mage/cards/p/Python.java
index 130eabfbfc9..6206330b8f9 100644
--- a/Mage.Sets/src/mage/cards/p/Python.java
+++ b/Mage.Sets/src/mage/cards/p/Python.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Python extends CardImpl {
+public final class Python extends CardImpl {
public Python(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PyxisOfPandemonium.java b/Mage.Sets/src/mage/cards/p/PyxisOfPandemonium.java
index eff8e051861..2864d45de72 100644
--- a/Mage.Sets/src/mage/cards/p/PyxisOfPandemonium.java
+++ b/Mage.Sets/src/mage/cards/p/PyxisOfPandemonium.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class PyxisOfPandemonium extends CardImpl {
+public final class PyxisOfPandemonium extends CardImpl {
public PyxisOfPandemonium(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/q/QalSismaBehemoth.java b/Mage.Sets/src/mage/cards/q/QalSismaBehemoth.java
index 1cf934f1162..be400e43351 100644
--- a/Mage.Sets/src/mage/cards/q/QalSismaBehemoth.java
+++ b/Mage.Sets/src/mage/cards/q/QalSismaBehemoth.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class QalSismaBehemoth extends CardImpl {
+public final class QalSismaBehemoth extends CardImpl {
public QalSismaBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/q/QarsiDeceiver.java b/Mage.Sets/src/mage/cards/q/QarsiDeceiver.java
index 2585c5216fe..bdb3877f100 100644
--- a/Mage.Sets/src/mage/cards/q/QarsiDeceiver.java
+++ b/Mage.Sets/src/mage/cards/q/QarsiDeceiver.java
@@ -49,7 +49,7 @@ import mage.game.stack.Spell;
*
* @author LevelX2
*/
-public class QarsiDeceiver extends CardImpl {
+public final class QarsiDeceiver extends CardImpl {
public QarsiDeceiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QarsiHighPriest.java b/Mage.Sets/src/mage/cards/q/QarsiHighPriest.java
index dea8b30150b..d992bbb74a9 100644
--- a/Mage.Sets/src/mage/cards/q/QarsiHighPriest.java
+++ b/Mage.Sets/src/mage/cards/q/QarsiHighPriest.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class QarsiHighPriest extends CardImpl {
+public final class QarsiHighPriest extends CardImpl {
public QarsiHighPriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/q/QarsiSadist.java b/Mage.Sets/src/mage/cards/q/QarsiSadist.java
index a0d92da937b..0f6a607e5ed 100644
--- a/Mage.Sets/src/mage/cards/q/QarsiSadist.java
+++ b/Mage.Sets/src/mage/cards/q/QarsiSadist.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class QarsiSadist extends CardImpl {
+public final class QarsiSadist extends CardImpl {
public QarsiSadist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/q/QasaliAmbusher.java b/Mage.Sets/src/mage/cards/q/QasaliAmbusher.java
index 4ff501b423c..a30228e5ee8 100644
--- a/Mage.Sets/src/mage/cards/q/QasaliAmbusher.java
+++ b/Mage.Sets/src/mage/cards/q/QasaliAmbusher.java
@@ -29,6 +29,7 @@ package mage.cards.q;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.SpellAbility;
@@ -49,10 +50,10 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class QasaliAmbusher extends CardImpl {
+public final class QasaliAmbusher extends CardImpl {
public QasaliAmbusher(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.subtype.add(SubType.CAT);
this.subtype.add(SubType.WARRIOR);
@@ -102,18 +103,16 @@ class QasaliAmbusherAbility extends ActivatedAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
- if (super.canActivate(playerId, game)) {
- if (!game.getBattlefield().getActivePermanents(filterPlains, this.getControllerId(), this.getSourceId(), game).isEmpty()
- && !game.getBattlefield().getActivePermanents(filterForest, this.getControllerId(), this.getSourceId(), game).isEmpty()) {
- for (CombatGroup group : game.getCombat().getGroups()) {
- if (getControllerId().equals(group.getDefenderId())) {
- return true;
- }
+ public ActivationStatus canActivate(UUID playerId, Game game) {
+ if (!game.getBattlefield().getActivePermanents(filterPlains, this.getControllerId(), this.getSourceId(), game).isEmpty()
+ && !game.getBattlefield().getActivePermanents(filterForest, this.getControllerId(), this.getSourceId(), game).isEmpty()) {
+ for (CombatGroup group : game.getCombat().getGroups()) {
+ if (getControllerId().equals(group.getDefenderId())) {
+ return super.canActivate(playerId, game);
}
}
}
- return false;
+ return ActivationStatus.getFalse();
}
@Override
@@ -151,7 +150,7 @@ class QasaliAmbusherEffect extends OneShotEffect {
if (controller != null) {
SpellAbility spellAbility = card.getSpellAbility();
spellAbility.clear();
- return controller.cast(spellAbility, game, true);
+ return controller.cast(spellAbility, game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
return false;
diff --git a/Mage.Sets/src/mage/cards/q/QasaliPridemage.java b/Mage.Sets/src/mage/cards/q/QasaliPridemage.java
index 7083ef710fa..af1e3fa8679 100644
--- a/Mage.Sets/src/mage/cards/q/QasaliPridemage.java
+++ b/Mage.Sets/src/mage/cards/q/QasaliPridemage.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author North
*/
-public class QasaliPridemage extends CardImpl {
+public final class QasaliPridemage extends CardImpl {
public QasaliPridemage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/q/QasaliSlingers.java b/Mage.Sets/src/mage/cards/q/QasaliSlingers.java
index 7bcf73ebd0b..38632274329 100644
--- a/Mage.Sets/src/mage/cards/q/QasaliSlingers.java
+++ b/Mage.Sets/src/mage/cards/q/QasaliSlingers.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author spjspj
*/
-public class QasaliSlingers extends CardImpl {
+public final class QasaliSlingers extends CardImpl {
public QasaliSlingers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuagSickness.java b/Mage.Sets/src/mage/cards/q/QuagSickness.java
index 07d14ee0768..9a966611b68 100644
--- a/Mage.Sets/src/mage/cards/q/QuagSickness.java
+++ b/Mage.Sets/src/mage/cards/q/QuagSickness.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com, North
*/
-public class QuagSickness extends CardImpl {
+public final class QuagSickness extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control");
diff --git a/Mage.Sets/src/mage/cards/q/QuagVampires.java b/Mage.Sets/src/mage/cards/q/QuagVampires.java
index e7d5f90a9e6..81b88b8525f 100644
--- a/Mage.Sets/src/mage/cards/q/QuagVampires.java
+++ b/Mage.Sets/src/mage/cards/q/QuagVampires.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class QuagVampires extends CardImpl {
+public final class QuagVampires extends CardImpl {
public QuagVampires(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/q/Quagmire.java b/Mage.Sets/src/mage/cards/q/Quagmire.java
index 302e508b342..829b0e2fffd 100644
--- a/Mage.Sets/src/mage/cards/q/Quagmire.java
+++ b/Mage.Sets/src/mage/cards/q/Quagmire.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author L_J
*/
-public class Quagmire extends CardImpl {
+public final class Quagmire extends CardImpl {
public Quagmire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/q/QuagmireDruid.java b/Mage.Sets/src/mage/cards/q/QuagmireDruid.java
index 3dbb34ac37c..659882b2f2c 100644
--- a/Mage.Sets/src/mage/cards/q/QuagmireDruid.java
+++ b/Mage.Sets/src/mage/cards/q/QuagmireDruid.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Loki
*/
-public class QuagmireDruid extends CardImpl {
+public final class QuagmireDruid extends CardImpl {
public QuagmireDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/q/QuagmireLamprey.java b/Mage.Sets/src/mage/cards/q/QuagmireLamprey.java
index b1aef745ca8..c431877955f 100644
--- a/Mage.Sets/src/mage/cards/q/QuagmireLamprey.java
+++ b/Mage.Sets/src/mage/cards/q/QuagmireLamprey.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class QuagmireLamprey extends CardImpl {
+public final class QuagmireLamprey extends CardImpl {
public QuagmireLamprey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/q/Quagnoth.java b/Mage.Sets/src/mage/cards/q/Quagnoth.java
index 17d79f15d1a..b59b6a33132 100644
--- a/Mage.Sets/src/mage/cards/q/Quagnoth.java
+++ b/Mage.Sets/src/mage/cards/q/Quagnoth.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class Quagnoth extends CardImpl {
+public final class Quagnoth extends CardImpl {
public Quagnoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuarantineField.java b/Mage.Sets/src/mage/cards/q/QuarantineField.java
index 76cb9db918d..3c64f57080e 100644
--- a/Mage.Sets/src/mage/cards/q/QuarantineField.java
+++ b/Mage.Sets/src/mage/cards/q/QuarantineField.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class QuarantineField extends CardImpl {
+public final class QuarantineField extends CardImpl {
public QuarantineField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{X}{X}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/q/QuarryBeetle.java b/Mage.Sets/src/mage/cards/q/QuarryBeetle.java
index 61dbd24575c..d1b81e307b7 100644
--- a/Mage.Sets/src/mage/cards/q/QuarryBeetle.java
+++ b/Mage.Sets/src/mage/cards/q/QuarryBeetle.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author ciaccona007
*/
-public class QuarryBeetle extends CardImpl {
+public final class QuarryBeetle extends CardImpl {
public QuarryBeetle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuarryColossus.java b/Mage.Sets/src/mage/cards/q/QuarryColossus.java
index 3f8b2d7d1d0..e4f4068b8b2 100644
--- a/Mage.Sets/src/mage/cards/q/QuarryColossus.java
+++ b/Mage.Sets/src/mage/cards/q/QuarryColossus.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class QuarryColossus extends CardImpl {
+public final class QuarryColossus extends CardImpl {
public QuarryColossus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/q/QuarryHauler.java b/Mage.Sets/src/mage/cards/q/QuarryHauler.java
index 296b36b933c..110013e19f7 100644
--- a/Mage.Sets/src/mage/cards/q/QuarryHauler.java
+++ b/Mage.Sets/src/mage/cards/q/QuarryHauler.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author Styxo
*/
-public class QuarryHauler extends CardImpl {
+public final class QuarryHauler extends CardImpl {
public QuarryHauler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/Quash.java b/Mage.Sets/src/mage/cards/q/Quash.java
index 2fdc6b0aa35..fd5e82ab39a 100644
--- a/Mage.Sets/src/mage/cards/q/Quash.java
+++ b/Mage.Sets/src/mage/cards/q/Quash.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Quash extends CardImpl {
+public final class Quash extends CardImpl {
public Quash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QueenMarchesa.java b/Mage.Sets/src/mage/cards/q/QueenMarchesa.java
index ab67ac06a48..23b521e9c29 100644
--- a/Mage.Sets/src/mage/cards/q/QueenMarchesa.java
+++ b/Mage.Sets/src/mage/cards/q/QueenMarchesa.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.QueenMarchesaAssassinToken;
*
* @author LevelX2
*/
-public class QueenMarchesa extends CardImpl {
+public final class QueenMarchesa extends CardImpl {
public QueenMarchesa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/q/QueensAgent.java b/Mage.Sets/src/mage/cards/q/QueensAgent.java
index a599004b13d..59d66a24321 100644
--- a/Mage.Sets/src/mage/cards/q/QueensAgent.java
+++ b/Mage.Sets/src/mage/cards/q/QueensAgent.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class QueensAgent extends CardImpl {
+public final class QueensAgent extends CardImpl {
public QueensAgent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/q/QueensBaySoldier.java b/Mage.Sets/src/mage/cards/q/QueensBaySoldier.java
index 508897bca58..1d115affe81 100644
--- a/Mage.Sets/src/mage/cards/q/QueensBaySoldier.java
+++ b/Mage.Sets/src/mage/cards/q/QueensBaySoldier.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author TheElk801
*/
-public class QueensBaySoldier extends CardImpl {
+public final class QueensBaySoldier extends CardImpl {
public QueensBaySoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/q/QueensCommission.java b/Mage.Sets/src/mage/cards/q/QueensCommission.java
index 97cf10c0f68..0a6009638e0 100644
--- a/Mage.Sets/src/mage/cards/q/QueensCommission.java
+++ b/Mage.Sets/src/mage/cards/q/QueensCommission.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.IxalanVampireToken;
*
* @author TheElk801
*/
-public class QueensCommission extends CardImpl {
+public final class QueensCommission extends CardImpl {
public QueensCommission(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/q/QuenchableFire.java b/Mage.Sets/src/mage/cards/q/QuenchableFire.java
index d2bdc1418e6..6cd09b65085 100644
--- a/Mage.Sets/src/mage/cards/q/QuenchableFire.java
+++ b/Mage.Sets/src/mage/cards/q/QuenchableFire.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class QuenchableFire extends CardImpl {
+public final class QuenchableFire extends CardImpl {
public QuenchableFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/q/QuestForAncientSecrets.java b/Mage.Sets/src/mage/cards/q/QuestForAncientSecrets.java
index 518c2cac8ec..84dc0e27db2 100644
--- a/Mage.Sets/src/mage/cards/q/QuestForAncientSecrets.java
+++ b/Mage.Sets/src/mage/cards/q/QuestForAncientSecrets.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class QuestForAncientSecrets extends CardImpl {
+public final class QuestForAncientSecrets extends CardImpl {
public QuestForAncientSecrets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QuestForPureFlame.java b/Mage.Sets/src/mage/cards/q/QuestForPureFlame.java
index b6ec2006f8b..72a9c9a5e71 100644
--- a/Mage.Sets/src/mage/cards/q/QuestForPureFlame.java
+++ b/Mage.Sets/src/mage/cards/q/QuestForPureFlame.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class QuestForPureFlame extends CardImpl {
+public final class QuestForPureFlame extends CardImpl {
public QuestForPureFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/q/QuestForRenewal.java b/Mage.Sets/src/mage/cards/q/QuestForRenewal.java
index 6ac0939aba1..8ee03192247 100644
--- a/Mage.Sets/src/mage/cards/q/QuestForRenewal.java
+++ b/Mage.Sets/src/mage/cards/q/QuestForRenewal.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class QuestForRenewal extends CardImpl {
+public final class QuestForRenewal extends CardImpl {
public QuestForRenewal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuestForTheGemblades.java b/Mage.Sets/src/mage/cards/q/QuestForTheGemblades.java
index 6046544ea3a..cc9a5d83735 100644
--- a/Mage.Sets/src/mage/cards/q/QuestForTheGemblades.java
+++ b/Mage.Sets/src/mage/cards/q/QuestForTheGemblades.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class QuestForTheGemblades extends CardImpl {
+public final class QuestForTheGemblades extends CardImpl {
public QuestForTheGemblades(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuestForTheGoblinLord.java b/Mage.Sets/src/mage/cards/q/QuestForTheGoblinLord.java
index a6b525584e9..f80011c56f9 100644
--- a/Mage.Sets/src/mage/cards/q/QuestForTheGoblinLord.java
+++ b/Mage.Sets/src/mage/cards/q/QuestForTheGoblinLord.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author jeffwadsworth
*/
-public class QuestForTheGoblinLord extends CardImpl {
+public final class QuestForTheGoblinLord extends CardImpl {
private static final String rule = "As long as {this} has five or more quest counters on it, creatures you control get +2/+0";
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/q/QuestForTheGravelord.java b/Mage.Sets/src/mage/cards/q/QuestForTheGravelord.java
index a36773e6968..0f2b473f6fb 100644
--- a/Mage.Sets/src/mage/cards/q/QuestForTheGravelord.java
+++ b/Mage.Sets/src/mage/cards/q/QuestForTheGravelord.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.QuestForTheGravelordZombieToken;
*
* @author North
*/
-public class QuestForTheGravelord extends CardImpl {
+public final class QuestForTheGravelord extends CardImpl {
public QuestForTheGravelord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.java b/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.java
index adaedb23bc1..087c4460884 100644
--- a/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.java
+++ b/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki, North
*/
-public class QuestForTheHolyRelic extends CardImpl {
+public final class QuestForTheHolyRelic extends CardImpl {
public QuestForTheHolyRelic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/q/QuestForTheNihilStone.java b/Mage.Sets/src/mage/cards/q/QuestForTheNihilStone.java
index 0113380da90..7337bcef379 100644
--- a/Mage.Sets/src/mage/cards/q/QuestForTheNihilStone.java
+++ b/Mage.Sets/src/mage/cards/q/QuestForTheNihilStone.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class QuestForTheNihilStone extends CardImpl {
+public final class QuestForTheNihilStone extends CardImpl {
public QuestForTheNihilStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/q/QuestForUlasTemple.java b/Mage.Sets/src/mage/cards/q/QuestForUlasTemple.java
index 3d0a9b608e9..b3c423a858d 100644
--- a/Mage.Sets/src/mage/cards/q/QuestForUlasTemple.java
+++ b/Mage.Sets/src/mage/cards/q/QuestForUlasTemple.java
@@ -31,7 +31,9 @@ import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -47,22 +49,27 @@ import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.players.Player;
-import mage.target.common.TargetCardInHand;
/**
*
* @author jeffwadsworth
*/
-public class QuestForUlasTemple extends CardImpl {
+public final class QuestForUlasTemple extends CardImpl {
public QuestForUlasTemple(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
// At the beginning of your upkeep, you may look at the top card of your library. If it's a creature card, you may reveal it and put a quest counter on Quest for Ula's Temple.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new QuestForUlasTempleEffect(), TargetController.YOU, true));
// At the beginning of each end step, if there are three or more quest counters on Quest for Ula's Temple, you may put a Kraken, Leviathan, Octopus, or Serpent creature card from your hand onto the battlefield.
- this.addAbility(new QuestForUlasTempleTriggeredAbility());
+ FilterCreatureCard filter = new FilterCreatureCard("Kraken, Leviathan, Octopus, or Serpent creature card");
+ filter.add(Predicates.or(
+ new SubtypePredicate(SubType.KRAKEN),
+ new SubtypePredicate(SubType.LEVIATHAN),
+ new SubtypePredicate(SubType.OCTOPUS),
+ new SubtypePredicate(SubType.SERPENT)));
+ this.addAbility(new QuestForUlasTempleTriggeredAbility(new PutCardFromHandOntoBattlefieldEffect(filter)));
}
public QuestForUlasTemple(final QuestForUlasTemple card) {
@@ -116,8 +123,8 @@ class QuestForUlasTempleEffect extends OneShotEffect {
class QuestForUlasTempleTriggeredAbility extends TriggeredAbilityImpl {
- public QuestForUlasTempleTriggeredAbility() {
- super(Zone.BATTLEFIELD, new QuestForUlasTempleEffect2(), true);
+ public QuestForUlasTempleTriggeredAbility(Effect effect) {
+ super(Zone.BATTLEFIELD, effect, true);
}
public QuestForUlasTempleTriggeredAbility(final QuestForUlasTempleTriggeredAbility ability) {
@@ -142,50 +149,6 @@ class QuestForUlasTempleTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "At the beginning of each end step, if there are three or more quest counters on {this}, you may put a Kraken, Leviathan, Octopus, or Serpent creature card from your hand onto the battlefield.";
- }
-}
-
-class QuestForUlasTempleEffect2 extends OneShotEffect {
-
- private static final String query = "Do you want to put a Kraken, Leviathan, Octopus, or Serpent creature card from your hand onto the battlefield?";
- private static final FilterCreatureCard filter = new FilterCreatureCard("Kraken, Leviathan, Octopus, or Serpent creature card from your hand");
-
- static {
- filter.add(Predicates.or(
- new SubtypePredicate(SubType.KRAKEN),
- new SubtypePredicate(SubType.LEVIATHAN),
- new SubtypePredicate(SubType.OCTOPUS),
- new SubtypePredicate(SubType.SERPENT)));
- }
-
- QuestForUlasTempleEffect2() {
- super(Outcome.PutCreatureInPlay);
- }
-
- QuestForUlasTempleEffect2(final QuestForUlasTempleEffect2 effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player controller = game.getPlayer(source.getControllerId());
- if (controller != null) {
- TargetCardInHand target = new TargetCardInHand(filter);
- if (target.canChoose(source.getSourceId(), controller.getId(), game)
- && controller.chooseUse(Outcome.PutCreatureInPlay, query, source, game)) {
- if (controller.choose(Outcome.PutCreatureInPlay, target, source.getSourceId(), game)) {
- Card card = game.getCard(target.getFirstTarget());
- controller.moveCards(card, Zone.BATTLEFIELD, source, game);
- }
- }
- return true;
- }
- return false;
- }
-
- @Override
- public QuestForUlasTempleEffect2 copy() {
- return new QuestForUlasTempleEffect2(this);
+ return "At the beginning of each end step, if there are three or more quest counters on {this}, " + super.getRule();
}
}
diff --git a/Mage.Sets/src/mage/cards/q/QuestingPhelddagrif.java b/Mage.Sets/src/mage/cards/q/QuestingPhelddagrif.java
index c5c1067ef23..a8f7eee188d 100644
--- a/Mage.Sets/src/mage/cards/q/QuestingPhelddagrif.java
+++ b/Mage.Sets/src/mage/cards/q/QuestingPhelddagrif.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetOpponent;
* @author LoneFox
*
*/
-public class QuestingPhelddagrif extends CardImpl {
+public final class QuestingPhelddagrif extends CardImpl {
public QuestingPhelddagrif(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QuiGonJinn.java b/Mage.Sets/src/mage/cards/q/QuiGonJinn.java
index ce8a9e10e14..c678af50f9c 100644
--- a/Mage.Sets/src/mage/cards/q/QuiGonJinn.java
+++ b/Mage.Sets/src/mage/cards/q/QuiGonJinn.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Styxo
*/
-public class QuiGonJinn extends CardImpl {
+public final class QuiGonJinn extends CardImpl {
public QuiGonJinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{U}{W}");
diff --git a/Mage.Sets/src/mage/cards/q/QuickSliver.java b/Mage.Sets/src/mage/cards/q/QuickSliver.java
index 71c7513e0e4..aa2e581777e 100644
--- a/Mage.Sets/src/mage/cards/q/QuickSliver.java
+++ b/Mage.Sets/src/mage/cards/q/QuickSliver.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author cbt33, Loki (Shimmer Myr)
*/
-public class QuickSliver extends CardImpl {
+public final class QuickSliver extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("Sliver cards");
static {
diff --git a/Mage.Sets/src/mage/cards/q/Quickchange.java b/Mage.Sets/src/mage/cards/q/Quickchange.java
index 1f6ea700d5c..31c9ec88c20 100644
--- a/Mage.Sets/src/mage/cards/q/Quickchange.java
+++ b/Mage.Sets/src/mage/cards/q/Quickchange.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Quickchange extends CardImpl {
+public final class Quickchange extends CardImpl {
public Quickchange(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/Quicken.java b/Mage.Sets/src/mage/cards/q/Quicken.java
index b0cbd2b9f80..634923d04b4 100644
--- a/Mage.Sets/src/mage/cards/q/Quicken.java
+++ b/Mage.Sets/src/mage/cards/q/Quicken.java
@@ -49,7 +49,7 @@ import mage.watchers.Watcher;
/**
* @author LevelX2
*/
-public class Quicken extends CardImpl {
+public final class Quicken extends CardImpl {
public Quicken(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QuickeningLicid.java b/Mage.Sets/src/mage/cards/q/QuickeningLicid.java
index fc9ce2fdd22..b7504c8d44c 100644
--- a/Mage.Sets/src/mage/cards/q/QuickeningLicid.java
+++ b/Mage.Sets/src/mage/cards/q/QuickeningLicid.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class QuickeningLicid extends CardImpl {
+public final class QuickeningLicid extends CardImpl {
public QuickeningLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/q/Quickling.java b/Mage.Sets/src/mage/cards/q/Quickling.java
index cb85f46f962..a03f02636d4 100644
--- a/Mage.Sets/src/mage/cards/q/Quickling.java
+++ b/Mage.Sets/src/mage/cards/q/Quickling.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class Quickling extends CardImpl {
+public final class Quickling extends CardImpl {
public Quickling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/Quicksand.java b/Mage.Sets/src/mage/cards/q/Quicksand.java
index 5b8181bff83..f2b18d090b4 100644
--- a/Mage.Sets/src/mage/cards/q/Quicksand.java
+++ b/Mage.Sets/src/mage/cards/q/Quicksand.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Quicksand extends CardImpl {
+public final class Quicksand extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature without flying");
diff --git a/Mage.Sets/src/mage/cards/q/QuicksilverAmulet.java b/Mage.Sets/src/mage/cards/q/QuicksilverAmulet.java
index fc31254cc69..04ccdb04809 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksilverAmulet.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksilverAmulet.java
@@ -31,25 +31,25 @@ import java.util.UUID;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
-import mage.filter.common.FilterCreatureCard;
+import mage.filter.StaticFilters;
/**
*
* @author North
*/
-public class QuicksilverAmulet extends CardImpl {
+public final class QuicksilverAmulet extends CardImpl {
public QuicksilverAmulet(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
// {4}, {tap}: You may put a creature card from your hand onto the battlefield.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new PutPermanentOnBattlefieldEffect(new FilterCreatureCard("a creature card")),
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_CREATURE_A),
new ManaCostsImpl("{4}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
@@ -64,5 +64,3 @@ public class QuicksilverAmulet extends CardImpl {
return new QuicksilverAmulet(this);
}
}
-
-
diff --git a/Mage.Sets/src/mage/cards/q/QuicksilverBehemoth.java b/Mage.Sets/src/mage/cards/q/QuicksilverBehemoth.java
index c97adc17b15..e075290f4e8 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksilverBehemoth.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksilverBehemoth.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class QuicksilverBehemoth extends CardImpl {
+public final class QuicksilverBehemoth extends CardImpl {
public QuicksilverBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QuicksilverDagger.java b/Mage.Sets/src/mage/cards/q/QuicksilverDagger.java
index 89649d2fc2c..15498cc23e7 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksilverDagger.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksilverDagger.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Plopman
*/
-public class QuicksilverDagger extends CardImpl {
+public final class QuicksilverDagger extends CardImpl {
public QuicksilverDagger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/q/QuicksilverDragon.java b/Mage.Sets/src/mage/cards/q/QuicksilverDragon.java
index f06737bc09a..13196ba8f73 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksilverDragon.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksilverDragon.java
@@ -52,7 +52,7 @@ import mage.target.TargetSpell;
*
* @author emerald000
*/
-public class QuicksilverDragon extends CardImpl {
+public final class QuicksilverDragon extends CardImpl {
public QuicksilverDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QuicksilverElemental.java b/Mage.Sets/src/mage/cards/q/QuicksilverElemental.java
index 293843fd05d..244b15b6185 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksilverElemental.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksilverElemental.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class QuicksilverElemental extends CardImpl {
+public final class QuicksilverElemental extends CardImpl {
public QuicksilverElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QuicksilverFountain.java b/Mage.Sets/src/mage/cards/q/QuicksilverFountain.java
index c71def090c9..901b714b2b9 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksilverFountain.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksilverFountain.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class QuicksilverFountain extends CardImpl {
+public final class QuicksilverFountain extends CardImpl {
public final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/q/QuicksilverGargantuan.java b/Mage.Sets/src/mage/cards/q/QuicksilverGargantuan.java
index df33757c0f2..63e37f53133 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksilverGargantuan.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksilverGargantuan.java
@@ -44,7 +44,7 @@ import mage.util.functions.ApplyToPermanent;
/**
* @author ayratn
*/
-public class QuicksilverGargantuan extends CardImpl {
+public final class QuicksilverGargantuan extends CardImpl {
public QuicksilverGargantuan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QuicksilverGeyser.java b/Mage.Sets/src/mage/cards/q/QuicksilverGeyser.java
index 11996878ead..15eb095e371 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksilverGeyser.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksilverGeyser.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author anonymous
*/
-public class QuicksilverGeyser extends CardImpl {
+public final class QuicksilverGeyser extends CardImpl {
public QuicksilverGeyser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QuicksilverWall.java b/Mage.Sets/src/mage/cards/q/QuicksilverWall.java
index 23c3618aad7..b6c446856d4 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksilverWall.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksilverWall.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class QuicksilverWall extends CardImpl {
+public final class QuicksilverWall extends CardImpl {
public QuicksilverWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QuicksmithGenius.java b/Mage.Sets/src/mage/cards/q/QuicksmithGenius.java
index dd937f64d76..99a411f0c45 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksmithGenius.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksmithGenius.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author LevelX2
*/
-public class QuicksmithGenius extends CardImpl {
+public final class QuicksmithGenius extends CardImpl {
public QuicksmithGenius(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/q/QuicksmithRebel.java b/Mage.Sets/src/mage/cards/q/QuicksmithRebel.java
index 59485b8bc4d..f8c07255c33 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksmithRebel.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksmithRebel.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Styxo
*/
-public class QuicksmithRebel extends CardImpl {
+public final class QuicksmithRebel extends CardImpl {
public QuicksmithRebel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/q/QuicksmithSpy.java b/Mage.Sets/src/mage/cards/q/QuicksmithSpy.java
index 05cc836dab0..83d633683ec 100644
--- a/Mage.Sets/src/mage/cards/q/QuicksmithSpy.java
+++ b/Mage.Sets/src/mage/cards/q/QuicksmithSpy.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author Styxo
*/
-public class QuicksmithSpy extends CardImpl {
+public final class QuicksmithSpy extends CardImpl {
public QuicksmithSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/q/QuietContemplation.java b/Mage.Sets/src/mage/cards/q/QuietContemplation.java
index b58bc291509..3beb6e0dece 100644
--- a/Mage.Sets/src/mage/cards/q/QuietContemplation.java
+++ b/Mage.Sets/src/mage/cards/q/QuietContemplation.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class QuietContemplation extends CardImpl {
+public final class QuietContemplation extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/q/QuietDisrepair.java b/Mage.Sets/src/mage/cards/q/QuietDisrepair.java
index 68a14d05e0f..7e35a633eae 100644
--- a/Mage.Sets/src/mage/cards/q/QuietDisrepair.java
+++ b/Mage.Sets/src/mage/cards/q/QuietDisrepair.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class QuietDisrepair extends CardImpl {
+public final class QuietDisrepair extends CardImpl {
public QuietDisrepair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuietPurity.java b/Mage.Sets/src/mage/cards/q/QuietPurity.java
index a5ae140add2..6741aa6006c 100644
--- a/Mage.Sets/src/mage/cards/q/QuietPurity.java
+++ b/Mage.Sets/src/mage/cards/q/QuietPurity.java
@@ -40,7 +40,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class QuietPurity extends CardImpl {
+public final class QuietPurity extends CardImpl {
public QuietPurity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/q/QuietSpeculation.java b/Mage.Sets/src/mage/cards/q/QuietSpeculation.java
index 8c387c010fb..86424c0284d 100644
--- a/Mage.Sets/src/mage/cards/q/QuietSpeculation.java
+++ b/Mage.Sets/src/mage/cards/q/QuietSpeculation.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author magenoxx_at_gmail.com
*/
-public class QuietSpeculation extends CardImpl {
+public final class QuietSpeculation extends CardImpl {
private static final FilterCard filterCard = new FilterCard("cards with flashback");
@@ -58,7 +58,7 @@ public class QuietSpeculation extends CardImpl {
}
public QuietSpeculation(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}");
// Search target player's library for up to three cards with flashback and put them into that player's graveyard. Then the player shuffles their library.
TargetCardInLibrary target = new TargetCardInLibrary(0, 3, filterCard);
@@ -96,7 +96,10 @@ class SearchLibraryPutInGraveEffect extends SearchEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
UUID targetPlayerID = source.getFirstTarget();
- if (controller != null && targetPlayerID != null && controller.searchLibrary(target, game, targetPlayerID)) {
+ if (controller == null) {
+ return false;
+ }
+ if (targetPlayerID != null && controller.searchLibrary(target, game, targetPlayerID)) {
if (!target.getTargets().isEmpty()) {
Cards cards = new CardsImpl(target.getTargets());
controller.revealCards("Quiet Speculation", cards, game);
@@ -108,5 +111,4 @@ class SearchLibraryPutInGraveEffect extends SearchEffect {
controller.shuffleLibrary(source, game);
return false;
}
-
}
diff --git a/Mage.Sets/src/mage/cards/q/QuietusSpike.java b/Mage.Sets/src/mage/cards/q/QuietusSpike.java
index b1fdc65c153..9645ed19718 100644
--- a/Mage.Sets/src/mage/cards/q/QuietusSpike.java
+++ b/Mage.Sets/src/mage/cards/q/QuietusSpike.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class QuietusSpike extends CardImpl {
+public final class QuietusSpike extends CardImpl {
public QuietusSpike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/q/QuillSlingerBoggart.java b/Mage.Sets/src/mage/cards/q/QuillSlingerBoggart.java
index 20233d68701..433163ac877 100644
--- a/Mage.Sets/src/mage/cards/q/QuillSlingerBoggart.java
+++ b/Mage.Sets/src/mage/cards/q/QuillSlingerBoggart.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author BursegSardaukar
*/
-public class QuillSlingerBoggart extends CardImpl {
+public final class QuillSlingerBoggart extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a Kithkin spell");
diff --git a/Mage.Sets/src/mage/cards/q/QuilledSlagwurm.java b/Mage.Sets/src/mage/cards/q/QuilledSlagwurm.java
index be73b0a9ebf..f9d65162dbe 100644
--- a/Mage.Sets/src/mage/cards/q/QuilledSlagwurm.java
+++ b/Mage.Sets/src/mage/cards/q/QuilledSlagwurm.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class QuilledSlagwurm extends CardImpl {
+public final class QuilledSlagwurm extends CardImpl {
public QuilledSlagwurm (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuilledSliver.java b/Mage.Sets/src/mage/cards/q/QuilledSliver.java
index 6c07791a094..d3b364dc0b6 100644
--- a/Mage.Sets/src/mage/cards/q/QuilledSliver.java
+++ b/Mage.Sets/src/mage/cards/q/QuilledSliver.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
* A relatively straightforward merge between GemhideSliver.java and
* CrossbowInfantry.java
*/
-public class QuilledSliver extends CardImpl {
+public final class QuilledSliver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers");
diff --git a/Mage.Sets/src/mage/cards/q/QuilledWolf.java b/Mage.Sets/src/mage/cards/q/QuilledWolf.java
index 7201d484411..1d9e9be41e7 100644
--- a/Mage.Sets/src/mage/cards/q/QuilledWolf.java
+++ b/Mage.Sets/src/mage/cards/q/QuilledWolf.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class QuilledWolf extends CardImpl {
+public final class QuilledWolf extends CardImpl {
public QuilledWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuillmaneBaku.java b/Mage.Sets/src/mage/cards/q/QuillmaneBaku.java
index 7efe835b4ee..b9628ccf27e 100644
--- a/Mage.Sets/src/mage/cards/q/QuillmaneBaku.java
+++ b/Mage.Sets/src/mage/cards/q/QuillmaneBaku.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX2
*/
-public class QuillmaneBaku extends CardImpl {
+public final class QuillmaneBaku extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/q/Quillspike.java b/Mage.Sets/src/mage/cards/q/Quillspike.java
index 66280a8d0c5..255decabbe0 100644
--- a/Mage.Sets/src/mage/cards/q/Quillspike.java
+++ b/Mage.Sets/src/mage/cards/q/Quillspike.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
* @author jeffwadsworth
*/
-public class Quillspike extends CardImpl {
+public final class Quillspike extends CardImpl {
public Quillspike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuirionDryad.java b/Mage.Sets/src/mage/cards/q/QuirionDryad.java
index 3780ac110af..fbf842422aa 100644
--- a/Mage.Sets/src/mage/cards/q/QuirionDryad.java
+++ b/Mage.Sets/src/mage/cards/q/QuirionDryad.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class QuirionDryad extends CardImpl {
+public final class QuirionDryad extends CardImpl {
private static final FilterSpell filter = new FilterSpell("white, blue, black, or red spell");
diff --git a/Mage.Sets/src/mage/cards/q/QuirionElves.java b/Mage.Sets/src/mage/cards/q/QuirionElves.java
index 5135ea30472..74dd7b99de2 100644
--- a/Mage.Sets/src/mage/cards/q/QuirionElves.java
+++ b/Mage.Sets/src/mage/cards/q/QuirionElves.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class QuirionElves extends CardImpl {
+public final class QuirionElves extends CardImpl {
public QuirionElves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuirionExplorer.java b/Mage.Sets/src/mage/cards/q/QuirionExplorer.java
index 611240360bd..386485bd96f 100644
--- a/Mage.Sets/src/mage/cards/q/QuirionExplorer.java
+++ b/Mage.Sets/src/mage/cards/q/QuirionExplorer.java
@@ -40,7 +40,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class QuirionExplorer extends CardImpl {
+public final class QuirionExplorer extends CardImpl {
public QuirionExplorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuirionRanger.java b/Mage.Sets/src/mage/cards/q/QuirionRanger.java
index 5f7dc39ba77..d0acc55b360 100644
--- a/Mage.Sets/src/mage/cards/q/QuirionRanger.java
+++ b/Mage.Sets/src/mage/cards/q/QuirionRanger.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author jonubuu
*/
-public class QuirionRanger extends CardImpl {
+public final class QuirionRanger extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/q/QuirionSentinel.java b/Mage.Sets/src/mage/cards/q/QuirionSentinel.java
index 2d9fba93720..1cc219dd50a 100644
--- a/Mage.Sets/src/mage/cards/q/QuirionSentinel.java
+++ b/Mage.Sets/src/mage/cards/q/QuirionSentinel.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class QuirionSentinel extends CardImpl {
+public final class QuirionSentinel extends CardImpl {
public QuirionSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/q/QuirionTrailblazer.java b/Mage.Sets/src/mage/cards/q/QuirionTrailblazer.java
index ee26c88734d..ed47f9c08d3 100644
--- a/Mage.Sets/src/mage/cards/q/QuirionTrailblazer.java
+++ b/Mage.Sets/src/mage/cards/q/QuirionTrailblazer.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class QuirionTrailblazer extends CardImpl {
+public final class QuirionTrailblazer extends CardImpl {
public QuirionTrailblazer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
@@ -52,7 +52,7 @@ public class QuirionTrailblazer extends CardImpl {
this.toughness = new MageInt(2);
// When Quirion Trailblazer enters the battlefield, you may search your library for a basic land card and put that card onto the battlefield tapped. If you do, shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
}
public QuirionTrailblazer(final QuirionTrailblazer card) {
diff --git a/Mage.Sets/src/mage/cards/q/Qumulox.java b/Mage.Sets/src/mage/cards/q/Qumulox.java
index 53cda52285a..1f9a99fca50 100644
--- a/Mage.Sets/src/mage/cards/q/Qumulox.java
+++ b/Mage.Sets/src/mage/cards/q/Qumulox.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class Qumulox extends CardImpl {
+public final class Qumulox extends CardImpl {
public Qumulox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RabbleRouser.java b/Mage.Sets/src/mage/cards/r/RabbleRouser.java
index 8228c56cf03..fcdff15fd41 100644
--- a/Mage.Sets/src/mage/cards/r/RabbleRouser.java
+++ b/Mage.Sets/src/mage/cards/r/RabbleRouser.java
@@ -50,7 +50,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author BursegSardaukar
*/
-public class RabbleRouser extends CardImpl {
+public final class RabbleRouser extends CardImpl {
public RabbleRouser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RabidBite.java b/Mage.Sets/src/mage/cards/r/RabidBite.java
index 21c0d6eae8a..8958c75bd81 100644
--- a/Mage.Sets/src/mage/cards/r/RabidBite.java
+++ b/Mage.Sets/src/mage/cards/r/RabidBite.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RabidBite extends CardImpl {
+public final class RabidBite extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/r/RabidBloodsucker.java b/Mage.Sets/src/mage/cards/r/RabidBloodsucker.java
index de73ccebcd2..8c57c0d7034 100644
--- a/Mage.Sets/src/mage/cards/r/RabidBloodsucker.java
+++ b/Mage.Sets/src/mage/cards/r/RabidBloodsucker.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class RabidBloodsucker extends CardImpl {
+public final class RabidBloodsucker extends CardImpl {
public RabidBloodsucker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RabidElephant.java b/Mage.Sets/src/mage/cards/r/RabidElephant.java
index 7ebbf49f2f6..2f45f6b622f 100644
--- a/Mage.Sets/src/mage/cards/r/RabidElephant.java
+++ b/Mage.Sets/src/mage/cards/r/RabidElephant.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class RabidElephant extends CardImpl {
+public final class RabidElephant extends CardImpl {
public RabidElephant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RabidRats.java b/Mage.Sets/src/mage/cards/r/RabidRats.java
index 6d909d6fd3b..3569d204e4a 100644
--- a/Mage.Sets/src/mage/cards/r/RabidRats.java
+++ b/Mage.Sets/src/mage/cards/r/RabidRats.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class RabidRats extends CardImpl {
+public final class RabidRats extends CardImpl {
public RabidRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RabidWolverines.java b/Mage.Sets/src/mage/cards/r/RabidWolverines.java
index df9f205d564..a954095ba1c 100644
--- a/Mage.Sets/src/mage/cards/r/RabidWolverines.java
+++ b/Mage.Sets/src/mage/cards/r/RabidWolverines.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class RabidWolverines extends CardImpl {
+public final class RabidWolverines extends CardImpl {
public RabidWolverines(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RabidWombat.java b/Mage.Sets/src/mage/cards/r/RabidWombat.java
index 074f0c400cb..77e472ef03d 100644
--- a/Mage.Sets/src/mage/cards/r/RabidWombat.java
+++ b/Mage.Sets/src/mage/cards/r/RabidWombat.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class RabidWombat extends CardImpl {
+public final class RabidWombat extends CardImpl {
public RabidWombat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RacecourseFury.java b/Mage.Sets/src/mage/cards/r/RacecourseFury.java
index 874a328498a..fc5fa924711 100644
--- a/Mage.Sets/src/mage/cards/r/RacecourseFury.java
+++ b/Mage.Sets/src/mage/cards/r/RacecourseFury.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class RacecourseFury extends CardImpl {
+public final class RacecourseFury extends CardImpl {
static final String rule = "Enchanted land has \"{T}: Target creature gains haste until end of turn.\"";
diff --git a/Mage.Sets/src/mage/cards/r/RackAndRuin.java b/Mage.Sets/src/mage/cards/r/RackAndRuin.java
index 247a35d3dee..14f4e51bccd 100644
--- a/Mage.Sets/src/mage/cards/r/RackAndRuin.java
+++ b/Mage.Sets/src/mage/cards/r/RackAndRuin.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Plopman
*/
-public class RackAndRuin extends CardImpl {
+public final class RackAndRuin extends CardImpl {
public RackAndRuin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Rackling.java b/Mage.Sets/src/mage/cards/r/Rackling.java
index 5772a62a648..cf1a825d939 100644
--- a/Mage.Sets/src/mage/cards/r/Rackling.java
+++ b/Mage.Sets/src/mage/cards/r/Rackling.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class Rackling extends CardImpl {
+public final class Rackling extends CardImpl {
public Rackling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/r/RadhaHeirToKeld.java b/Mage.Sets/src/mage/cards/r/RadhaHeirToKeld.java
index a2c2655e59e..cd99be4940e 100644
--- a/Mage.Sets/src/mage/cards/r/RadhaHeirToKeld.java
+++ b/Mage.Sets/src/mage/cards/r/RadhaHeirToKeld.java
@@ -44,7 +44,7 @@ import mage.constants.SuperType;
*
* @author fireshoes
*/
-public class RadhaHeirToKeld extends CardImpl {
+public final class RadhaHeirToKeld extends CardImpl {
public RadhaHeirToKeld(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RadiantArchangel.java b/Mage.Sets/src/mage/cards/r/RadiantArchangel.java
index aa351809adc..c4f833a3430 100644
--- a/Mage.Sets/src/mage/cards/r/RadiantArchangel.java
+++ b/Mage.Sets/src/mage/cards/r/RadiantArchangel.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author Plopman
*/
-public class RadiantArchangel extends CardImpl {
+public final class RadiantArchangel extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature with flying on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/r/RadiantDestiny.java b/Mage.Sets/src/mage/cards/r/RadiantDestiny.java
index 5ea4bb2fed9..8c808db670c 100644
--- a/Mage.Sets/src/mage/cards/r/RadiantDestiny.java
+++ b/Mage.Sets/src/mage/cards/r/RadiantDestiny.java
@@ -54,7 +54,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class RadiantDestiny extends CardImpl {
+public final class RadiantDestiny extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control of the chosen type");
diff --git a/Mage.Sets/src/mage/cards/r/RadiantEssence.java b/Mage.Sets/src/mage/cards/r/RadiantEssence.java
index 6e0a25f808a..409ef21ce2d 100644
--- a/Mage.Sets/src/mage/cards/r/RadiantEssence.java
+++ b/Mage.Sets/src/mage/cards/r/RadiantEssence.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class RadiantEssence extends CardImpl {
+public final class RadiantEssence extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a black permanent");
diff --git a/Mage.Sets/src/mage/cards/r/RadiantFlames.java b/Mage.Sets/src/mage/cards/r/RadiantFlames.java
index 6d01f4ff529..4ca71920c41 100644
--- a/Mage.Sets/src/mage/cards/r/RadiantFlames.java
+++ b/Mage.Sets/src/mage/cards/r/RadiantFlames.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class RadiantFlames extends CardImpl {
+public final class RadiantFlames extends CardImpl {
public RadiantFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RadiantFountain.java b/Mage.Sets/src/mage/cards/r/RadiantFountain.java
index 993e03aa8e2..e329df13136 100644
--- a/Mage.Sets/src/mage/cards/r/RadiantFountain.java
+++ b/Mage.Sets/src/mage/cards/r/RadiantFountain.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author emerald000
*/
-public class RadiantFountain extends CardImpl {
+public final class RadiantFountain extends CardImpl {
public RadiantFountain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RadiantKavu.java b/Mage.Sets/src/mage/cards/r/RadiantKavu.java
index 23ba243a996..d270fe4ff76 100644
--- a/Mage.Sets/src/mage/cards/r/RadiantKavu.java
+++ b/Mage.Sets/src/mage/cards/r/RadiantKavu.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class RadiantKavu extends CardImpl {
+public final class RadiantKavu extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creatures and black creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RadiantPurge.java b/Mage.Sets/src/mage/cards/r/RadiantPurge.java
index 3186c727064..ee11b63a7e2 100644
--- a/Mage.Sets/src/mage/cards/r/RadiantPurge.java
+++ b/Mage.Sets/src/mage/cards/r/RadiantPurge.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author jgreene40
*/
-public class RadiantPurge extends CardImpl {
+public final class RadiantPurge extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("multicolored creature or multicolored enchantment");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RadiantsDragoons.java b/Mage.Sets/src/mage/cards/r/RadiantsDragoons.java
index a00e704ce06..9ac055dca61 100644
--- a/Mage.Sets/src/mage/cards/r/RadiantsDragoons.java
+++ b/Mage.Sets/src/mage/cards/r/RadiantsDragoons.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class RadiantsDragoons extends CardImpl {
+public final class RadiantsDragoons extends CardImpl {
public RadiantsDragoons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RadiantsJudgment.java b/Mage.Sets/src/mage/cards/r/RadiantsJudgment.java
index e452f5ae3e1..3ec1e9ed5af 100644
--- a/Mage.Sets/src/mage/cards/r/RadiantsJudgment.java
+++ b/Mage.Sets/src/mage/cards/r/RadiantsJudgment.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class RadiantsJudgment extends CardImpl {
+public final class RadiantsJudgment extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/r/Radiate.java b/Mage.Sets/src/mage/cards/r/Radiate.java
index ce7c9a32495..3a86b15979b 100644
--- a/Mage.Sets/src/mage/cards/r/Radiate.java
+++ b/Mage.Sets/src/mage/cards/r/Radiate.java
@@ -52,7 +52,7 @@ import mage.util.TargetAddress;
/**
* @author duncant
*/
-public class Radiate extends CardImpl {
+public final class Radiate extends CardImpl {
protected static final FilterSpell filter = new FilterInstantOrSorcerySpell();
diff --git a/Mage.Sets/src/mage/cards/r/RadiatingLightning.java b/Mage.Sets/src/mage/cards/r/RadiatingLightning.java
index 0c3a055c577..975907620aa 100644
--- a/Mage.Sets/src/mage/cards/r/RadiatingLightning.java
+++ b/Mage.Sets/src/mage/cards/r/RadiatingLightning.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author rscoates
*/
-public class RadiatingLightning extends CardImpl {
+public final class RadiatingLightning extends CardImpl {
public RadiatingLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RadjanSpirit.java b/Mage.Sets/src/mage/cards/r/RadjanSpirit.java
index 01e8f7a0496..7dad36206af 100644
--- a/Mage.Sets/src/mage/cards/r/RadjanSpirit.java
+++ b/Mage.Sets/src/mage/cards/r/RadjanSpirit.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class RadjanSpirit extends CardImpl {
+public final class RadjanSpirit extends CardImpl {
public RadjanSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RaffCapashenShipsMage.java b/Mage.Sets/src/mage/cards/r/RaffCapashenShipsMage.java
index 5630cc5fe74..ca767f8b0ab 100644
--- a/Mage.Sets/src/mage/cards/r/RaffCapashenShipsMage.java
+++ b/Mage.Sets/src/mage/cards/r/RaffCapashenShipsMage.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.HistoricPredicate;
*
* @author TheElk801
*/
-public class RaffCapashenShipsMage extends CardImpl {
+public final class RaffCapashenShipsMage extends CardImpl {
private static final FilterCard filter = new FilterCard("historic spells");
diff --git a/Mage.Sets/src/mage/cards/r/RafiqOfTheMany.java b/Mage.Sets/src/mage/cards/r/RafiqOfTheMany.java
index ef7de56fa2c..b93c4237f17 100644
--- a/Mage.Sets/src/mage/cards/r/RafiqOfTheMany.java
+++ b/Mage.Sets/src/mage/cards/r/RafiqOfTheMany.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RafiqOfTheMany extends CardImpl {
+public final class RafiqOfTheMany extends CardImpl {
public RafiqOfTheMany(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RagDealer.java b/Mage.Sets/src/mage/cards/r/RagDealer.java
index bff3922143f..64ad4911f25 100644
--- a/Mage.Sets/src/mage/cards/r/RagDealer.java
+++ b/Mage.Sets/src/mage/cards/r/RagDealer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author LevelX, North
*/
-public class RagDealer extends CardImpl {
+public final class RagDealer extends CardImpl {
public RagDealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RagMan.java b/Mage.Sets/src/mage/cards/r/RagMan.java
index cc42e79838e..aae77d1f46a 100644
--- a/Mage.Sets/src/mage/cards/r/RagMan.java
+++ b/Mage.Sets/src/mage/cards/r/RagMan.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetOpponent;
*
* @author Quercitron
*/
-public class RagMan extends CardImpl {
+public final class RagMan extends CardImpl {
public RagMan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Ragamuffyn.java b/Mage.Sets/src/mage/cards/r/Ragamuffyn.java
index 88d06cb3dca..426843d1b4a 100644
--- a/Mage.Sets/src/mage/cards/r/Ragamuffyn.java
+++ b/Mage.Sets/src/mage/cards/r/Ragamuffyn.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author djbrez
*/
-public class Ragamuffyn extends CardImpl {
+public final class Ragamuffyn extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a creature or land");
diff --git a/Mage.Sets/src/mage/cards/r/RageExtractor.java b/Mage.Sets/src/mage/cards/r/RageExtractor.java
index 3b69656a5a5..66ebddbed7e 100644
--- a/Mage.Sets/src/mage/cards/r/RageExtractor.java
+++ b/Mage.Sets/src/mage/cards/r/RageExtractor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author Loki
*/
-public class RageExtractor extends CardImpl {
+public final class RageExtractor extends CardImpl {
public RageExtractor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}{R/P}");
diff --git a/Mage.Sets/src/mage/cards/r/RageForger.java b/Mage.Sets/src/mage/cards/r/RageForger.java
index ef281b100f7..9a6e01c4bd5 100644
--- a/Mage.Sets/src/mage/cards/r/RageForger.java
+++ b/Mage.Sets/src/mage/cards/r/RageForger.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class RageForger extends CardImpl {
+public final class RageForger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other Shaman creature you control");
private static final FilterControlledCreaturePermanent filterAttack = new FilterControlledCreaturePermanent("creature you control with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/r/RageNimbus.java b/Mage.Sets/src/mage/cards/r/RageNimbus.java
index f8ad5eff420..e2b46e44ac5 100644
--- a/Mage.Sets/src/mage/cards/r/RageNimbus.java
+++ b/Mage.Sets/src/mage/cards/r/RageNimbus.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class RageNimbus extends CardImpl {
+public final class RageNimbus extends CardImpl {
public RageNimbus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RageOfPurphoros.java b/Mage.Sets/src/mage/cards/r/RageOfPurphoros.java
index 163f4e1570e..5f03b338337 100644
--- a/Mage.Sets/src/mage/cards/r/RageOfPurphoros.java
+++ b/Mage.Sets/src/mage/cards/r/RageOfPurphoros.java
@@ -42,7 +42,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author LevelX2
*/
-public class RageOfPurphoros extends CardImpl {
+public final class RageOfPurphoros extends CardImpl {
public RageOfPurphoros(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RageReflection.java b/Mage.Sets/src/mage/cards/r/RageReflection.java
index ab26291508d..75b99fda275 100644
--- a/Mage.Sets/src/mage/cards/r/RageReflection.java
+++ b/Mage.Sets/src/mage/cards/r/RageReflection.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
* @author jeffwadsworth
*
*/
-public class RageReflection extends CardImpl {
+public final class RageReflection extends CardImpl {
public RageReflection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RageThrower.java b/Mage.Sets/src/mage/cards/r/RageThrower.java
index 12ebc8f1811..5ca8b4d141f 100644
--- a/Mage.Sets/src/mage/cards/r/RageThrower.java
+++ b/Mage.Sets/src/mage/cards/r/RageThrower.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author North
*/
-public class RageThrower extends CardImpl {
+public final class RageThrower extends CardImpl {
public RageThrower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RageWeaver.java b/Mage.Sets/src/mage/cards/r/RageWeaver.java
index 025498f8abe..6cbb6c55222 100644
--- a/Mage.Sets/src/mage/cards/r/RageWeaver.java
+++ b/Mage.Sets/src/mage/cards/r/RageWeaver.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class RageWeaver extends CardImpl {
+public final class RageWeaver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black or green creature");
diff --git a/Mage.Sets/src/mage/cards/r/RagebloodShaman.java b/Mage.Sets/src/mage/cards/r/RagebloodShaman.java
index 7ed0d3c7436..926aee2ad5b 100644
--- a/Mage.Sets/src/mage/cards/r/RagebloodShaman.java
+++ b/Mage.Sets/src/mage/cards/r/RagebloodShaman.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Plopman
*/
-public class RagebloodShaman extends CardImpl {
+public final class RagebloodShaman extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.MINOTAUR, "Minotaur creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/r/Rageform.java b/Mage.Sets/src/mage/cards/r/Rageform.java
index 0d5269356c1..332c1ec6a79 100644
--- a/Mage.Sets/src/mage/cards/r/Rageform.java
+++ b/Mage.Sets/src/mage/cards/r/Rageform.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class Rageform extends CardImpl {
+public final class Rageform extends CardImpl {
public Rageform(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Ragemonger.java b/Mage.Sets/src/mage/cards/r/Ragemonger.java
index d6962eb38ca..62bca809bdf 100644
--- a/Mage.Sets/src/mage/cards/r/Ragemonger.java
+++ b/Mage.Sets/src/mage/cards/r/Ragemonger.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class Ragemonger extends CardImpl {
+public final class Ragemonger extends CardImpl {
private static final FilterCard filter = new FilterCard("Minotaur spells");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RaggedVeins.java b/Mage.Sets/src/mage/cards/r/RaggedVeins.java
index ca4a36a08bb..e2fa4ba0efb 100644
--- a/Mage.Sets/src/mage/cards/r/RaggedVeins.java
+++ b/Mage.Sets/src/mage/cards/r/RaggedVeins.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RaggedVeins extends CardImpl {
+public final class RaggedVeins extends CardImpl {
public RaggedVeins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingBull.java b/Mage.Sets/src/mage/cards/r/RagingBull.java
index db49af701d2..c9540e729ec 100644
--- a/Mage.Sets/src/mage/cards/r/RagingBull.java
+++ b/Mage.Sets/src/mage/cards/r/RagingBull.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RagingBull extends CardImpl {
+public final class RagingBull extends CardImpl {
public RagingBull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingCougar.java b/Mage.Sets/src/mage/cards/r/RagingCougar.java
index ddccd5ea4bb..852a07a5575 100644
--- a/Mage.Sets/src/mage/cards/r/RagingCougar.java
+++ b/Mage.Sets/src/mage/cards/r/RagingCougar.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class RagingCougar extends CardImpl {
+public final class RagingCougar extends CardImpl {
public RagingCougar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingGoblin.java b/Mage.Sets/src/mage/cards/r/RagingGoblin.java
index e074adc4d9d..f80300d41eb 100644
--- a/Mage.Sets/src/mage/cards/r/RagingGoblin.java
+++ b/Mage.Sets/src/mage/cards/r/RagingGoblin.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RagingGoblin extends CardImpl {
+public final class RagingGoblin extends CardImpl {
public RagingGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingGorilla.java b/Mage.Sets/src/mage/cards/r/RagingGorilla.java
index 6dc332f2b7f..940ced96301 100644
--- a/Mage.Sets/src/mage/cards/r/RagingGorilla.java
+++ b/Mage.Sets/src/mage/cards/r/RagingGorilla.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class RagingGorilla extends CardImpl {
+public final class RagingGorilla extends CardImpl {
public RagingGorilla(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingKavu.java b/Mage.Sets/src/mage/cards/r/RagingKavu.java
index 8f28f404aee..0d80b8bd833 100644
--- a/Mage.Sets/src/mage/cards/r/RagingKavu.java
+++ b/Mage.Sets/src/mage/cards/r/RagingKavu.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RagingKavu extends CardImpl {
+public final class RagingKavu extends CardImpl {
public RagingKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingMinotaur.java b/Mage.Sets/src/mage/cards/r/RagingMinotaur.java
index 8a0b0729864..37a9d897a75 100644
--- a/Mage.Sets/src/mage/cards/r/RagingMinotaur.java
+++ b/Mage.Sets/src/mage/cards/r/RagingMinotaur.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class RagingMinotaur extends CardImpl {
+public final class RagingMinotaur extends CardImpl {
public RagingMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingPoltergeist.java b/Mage.Sets/src/mage/cards/r/RagingPoltergeist.java
index 3683b1eaed5..652a53a3a87 100644
--- a/Mage.Sets/src/mage/cards/r/RagingPoltergeist.java
+++ b/Mage.Sets/src/mage/cards/r/RagingPoltergeist.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RagingPoltergeist extends CardImpl {
+public final class RagingPoltergeist extends CardImpl {
public RagingPoltergeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingRavine.java b/Mage.Sets/src/mage/cards/r/RagingRavine.java
index 099b2e85336..d3347089a3b 100644
--- a/Mage.Sets/src/mage/cards/r/RagingRavine.java
+++ b/Mage.Sets/src/mage/cards/r/RagingRavine.java
@@ -57,7 +57,7 @@ import mage.game.permanent.token.custom.ElementalCreatureToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RagingRavine extends CardImpl {
+public final class RagingRavine extends CardImpl {
public RagingRavine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/r/RagingReek.java b/Mage.Sets/src/mage/cards/r/RagingReek.java
index d731cbdf656..7a763d4b98b 100644
--- a/Mage.Sets/src/mage/cards/r/RagingReek.java
+++ b/Mage.Sets/src/mage/cards/r/RagingReek.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class RagingReek extends CardImpl {
+public final class RagingReek extends CardImpl {
public RagingReek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingRegisaur.java b/Mage.Sets/src/mage/cards/r/RagingRegisaur.java
index 71498566c77..23d14ec2dd1 100644
--- a/Mage.Sets/src/mage/cards/r/RagingRegisaur.java
+++ b/Mage.Sets/src/mage/cards/r/RagingRegisaur.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author L_J
*/
-public class RagingRegisaur extends CardImpl {
+public final class RagingRegisaur extends CardImpl {
public RagingRegisaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingRiver.java b/Mage.Sets/src/mage/cards/r/RagingRiver.java
index 0357c35e028..3d87d1a9ca5 100644
--- a/Mage.Sets/src/mage/cards/r/RagingRiver.java
+++ b/Mage.Sets/src/mage/cards/r/RagingRiver.java
@@ -62,7 +62,7 @@ import java.util.stream.Collectors;
*
* @author L_J
*/
-public class RagingRiver extends CardImpl {
+public final class RagingRiver extends CardImpl {
public RagingRiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingSpirit.java b/Mage.Sets/src/mage/cards/r/RagingSpirit.java
index 32c1d252433..f6afa66dce3 100644
--- a/Mage.Sets/src/mage/cards/r/RagingSpirit.java
+++ b/Mage.Sets/src/mage/cards/r/RagingSpirit.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class RagingSpirit extends CardImpl {
+public final class RagingSpirit extends CardImpl {
public RagingSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RagingSwordtooth.java b/Mage.Sets/src/mage/cards/r/RagingSwordtooth.java
index b723e23c491..6b04a80ddca 100644
--- a/Mage.Sets/src/mage/cards/r/RagingSwordtooth.java
+++ b/Mage.Sets/src/mage/cards/r/RagingSwordtooth.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author TheElk801
*/
-public class RagingSwordtooth extends CardImpl {
+public final class RagingSwordtooth extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature");
diff --git a/Mage.Sets/src/mage/cards/r/Ragnar.java b/Mage.Sets/src/mage/cards/r/Ragnar.java
index a6e3a013093..d5c14270323 100644
--- a/Mage.Sets/src/mage/cards/r/Ragnar.java
+++ b/Mage.Sets/src/mage/cards/r/Ragnar.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Ragnar extends CardImpl {
+public final class Ragnar extends CardImpl {
public Ragnar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RagsRiches.java b/Mage.Sets/src/mage/cards/r/RagsRiches.java
index b59cc838c87..29033770e5f 100644
--- a/Mage.Sets/src/mage/cards/r/RagsRiches.java
+++ b/Mage.Sets/src/mage/cards/r/RagsRiches.java
@@ -20,7 +20,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author Stravant
*/
-public class RagsRiches extends SplitCard {
+public final class RagsRiches extends SplitCard {
public RagsRiches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{2}{B}{B}", "{5}{U}{U}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/r/RaidBombardment.java b/Mage.Sets/src/mage/cards/r/RaidBombardment.java
index 589c0c7be15..2f0b12e6b12 100644
--- a/Mage.Sets/src/mage/cards/r/RaidBombardment.java
+++ b/Mage.Sets/src/mage/cards/r/RaidBombardment.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class RaidBombardment extends CardImpl {
+public final class RaidBombardment extends CardImpl {
public RaidBombardment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RaidersSpoils.java b/Mage.Sets/src/mage/cards/r/RaidersSpoils.java
index a352750af18..be6c56328ab 100644
--- a/Mage.Sets/src/mage/cards/r/RaidersSpoils.java
+++ b/Mage.Sets/src/mage/cards/r/RaidersSpoils.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class RaidersSpoils extends CardImpl {
+public final class RaidersSpoils extends CardImpl {
public RaidersSpoils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RaidersWake.java b/Mage.Sets/src/mage/cards/r/RaidersWake.java
index 6f5cbee073f..23202d33a19 100644
--- a/Mage.Sets/src/mage/cards/r/RaidersWake.java
+++ b/Mage.Sets/src/mage/cards/r/RaidersWake.java
@@ -47,7 +47,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author TheElk801
*/
-public class RaidersWake extends CardImpl {
+public final class RaidersWake extends CardImpl {
public RaidersWake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RaidingNightstalker.java b/Mage.Sets/src/mage/cards/r/RaidingNightstalker.java
index 8034c87ec16..23f81c0ffe5 100644
--- a/Mage.Sets/src/mage/cards/r/RaidingNightstalker.java
+++ b/Mage.Sets/src/mage/cards/r/RaidingNightstalker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class RaidingNightstalker extends CardImpl {
+public final class RaidingNightstalker extends CardImpl {
public RaidingNightstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RaidingParty.java b/Mage.Sets/src/mage/cards/r/RaidingParty.java
index 0552f432078..71d951b0540 100644
--- a/Mage.Sets/src/mage/cards/r/RaidingParty.java
+++ b/Mage.Sets/src/mage/cards/r/RaidingParty.java
@@ -63,7 +63,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class RaidingParty extends CardImpl {
+public final class RaidingParty extends CardImpl {
private static final FilterObject filterWhite = new FilterStackObject("white spells or abilities from white sources");
private static final FilterControlledCreaturePermanent filterOrc = new FilterControlledCreaturePermanent("an Orc");
diff --git a/Mage.Sets/src/mage/cards/r/RainOfBlades.java b/Mage.Sets/src/mage/cards/r/RainOfBlades.java
index 9acaef9e899..7dda1de755a 100644
--- a/Mage.Sets/src/mage/cards/r/RainOfBlades.java
+++ b/Mage.Sets/src/mage/cards/r/RainOfBlades.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author North
*/
-public class RainOfBlades extends CardImpl {
+public final class RainOfBlades extends CardImpl {
public RainOfBlades(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RainOfDaggers.java b/Mage.Sets/src/mage/cards/r/RainOfDaggers.java
index ebbd00a0bda..3fd7ecb7f9a 100644
--- a/Mage.Sets/src/mage/cards/r/RainOfDaggers.java
+++ b/Mage.Sets/src/mage/cards/r/RainOfDaggers.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class RainOfDaggers extends CardImpl {
+public final class RainOfDaggers extends CardImpl {
public RainOfDaggers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RainOfEmbers.java b/Mage.Sets/src/mage/cards/r/RainOfEmbers.java
index 34c792dc29d..d39b1ab7679 100644
--- a/Mage.Sets/src/mage/cards/r/RainOfEmbers.java
+++ b/Mage.Sets/src/mage/cards/r/RainOfEmbers.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class RainOfEmbers extends CardImpl {
+public final class RainOfEmbers extends CardImpl {
public RainOfEmbers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RainOfFilth.java b/Mage.Sets/src/mage/cards/r/RainOfFilth.java
index c0d02202a96..93afa90e0fc 100644
--- a/Mage.Sets/src/mage/cards/r/RainOfFilth.java
+++ b/Mage.Sets/src/mage/cards/r/RainOfFilth.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author Plopman
*/
-public class RainOfFilth extends CardImpl {
+public final class RainOfFilth extends CardImpl {
public RainOfFilth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RainOfGore.java b/Mage.Sets/src/mage/cards/r/RainOfGore.java
index 692246d9a14..5fb2d65c187 100644
--- a/Mage.Sets/src/mage/cards/r/RainOfGore.java
+++ b/Mage.Sets/src/mage/cards/r/RainOfGore.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class RainOfGore extends CardImpl {
+public final class RainOfGore extends CardImpl {
public RainOfGore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RainOfRust.java b/Mage.Sets/src/mage/cards/r/RainOfRust.java
index d188b43e059..1da1eb27c96 100644
--- a/Mage.Sets/src/mage/cards/r/RainOfRust.java
+++ b/Mage.Sets/src/mage/cards/r/RainOfRust.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class RainOfRust extends CardImpl {
+public final class RainOfRust extends CardImpl {
public RainOfRust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RainOfSalt.java b/Mage.Sets/src/mage/cards/r/RainOfSalt.java
index d9b05031b4e..b57e8d189ed 100644
--- a/Mage.Sets/src/mage/cards/r/RainOfSalt.java
+++ b/Mage.Sets/src/mage/cards/r/RainOfSalt.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author Backfir3
*/
-public class RainOfSalt extends CardImpl {
+public final class RainOfSalt extends CardImpl {
private static final FilterPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RainOfTears.java b/Mage.Sets/src/mage/cards/r/RainOfTears.java
index f407f2bd8b8..4f338575c7d 100644
--- a/Mage.Sets/src/mage/cards/r/RainOfTears.java
+++ b/Mage.Sets/src/mage/cards/r/RainOfTears.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki
*/
-public class RainOfTears extends CardImpl {
+public final class RainOfTears extends CardImpl {
public RainOfTears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RainOfThorns.java b/Mage.Sets/src/mage/cards/r/RainOfThorns.java
index e47e99e1d00..6a4f7bebdae 100644
--- a/Mage.Sets/src/mage/cards/r/RainOfThorns.java
+++ b/Mage.Sets/src/mage/cards/r/RainOfThorns.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetLandPermanent;
* @author noxx
*/
-public class RainOfThorns extends CardImpl {
+public final class RainOfThorns extends CardImpl {
public RainOfThorns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RainbowCrow.java b/Mage.Sets/src/mage/cards/r/RainbowCrow.java
index 55e2e387a99..41dea5e4a08 100644
--- a/Mage.Sets/src/mage/cards/r/RainbowCrow.java
+++ b/Mage.Sets/src/mage/cards/r/RainbowCrow.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class RainbowCrow extends CardImpl {
+public final class RainbowCrow extends CardImpl {
public RainbowCrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RainbowEfreet.java b/Mage.Sets/src/mage/cards/r/RainbowEfreet.java
index 2da59df2d51..6d52aa8d06e 100644
--- a/Mage.Sets/src/mage/cards/r/RainbowEfreet.java
+++ b/Mage.Sets/src/mage/cards/r/RainbowEfreet.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class RainbowEfreet extends CardImpl {
+public final class RainbowEfreet extends CardImpl {
public RainbowEfreet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RainbowVale.java b/Mage.Sets/src/mage/cards/r/RainbowVale.java
index 9fc5a1b037b..38dee1e1bad 100644
--- a/Mage.Sets/src/mage/cards/r/RainbowVale.java
+++ b/Mage.Sets/src/mage/cards/r/RainbowVale.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author andyfries
*/
-public class RainbowVale extends CardImpl {
+public final class RainbowVale extends CardImpl {
public RainbowVale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/r/RaiseDead.java b/Mage.Sets/src/mage/cards/r/RaiseDead.java
index c21e5a54eac..31a31f054de 100644
--- a/Mage.Sets/src/mage/cards/r/RaiseDead.java
+++ b/Mage.Sets/src/mage/cards/r/RaiseDead.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class RaiseDead extends CardImpl {
+public final class RaiseDead extends CardImpl {
public RaiseDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RaiseTheAlarm.java b/Mage.Sets/src/mage/cards/r/RaiseTheAlarm.java
index 093dfdd3bbc..493b1e86d76 100644
--- a/Mage.Sets/src/mage/cards/r/RaiseTheAlarm.java
+++ b/Mage.Sets/src/mage/cards/r/RaiseTheAlarm.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author Loki
*/
-public class RaiseTheAlarm extends CardImpl {
+public final class RaiseTheAlarm extends CardImpl {
public RaiseTheAlarm (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RaisedByWolves.java b/Mage.Sets/src/mage/cards/r/RaisedByWolves.java
index 505c1011b02..815c0e3baaf 100644
--- a/Mage.Sets/src/mage/cards/r/RaisedByWolves.java
+++ b/Mage.Sets/src/mage/cards/r/RaisedByWolves.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RaisedByWolves extends CardImpl {
+public final class RaisedByWolves extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Wolf you control");
diff --git a/Mage.Sets/src/mage/cards/r/RakaDisciple.java b/Mage.Sets/src/mage/cards/r/RakaDisciple.java
index 818b99ac75a..66e2689df60 100644
--- a/Mage.Sets/src/mage/cards/r/RakaDisciple.java
+++ b/Mage.Sets/src/mage/cards/r/RakaDisciple.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class RakaDisciple extends CardImpl {
+public final class RakaDisciple extends CardImpl {
public RakaDisciple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakaSanctuary.java b/Mage.Sets/src/mage/cards/r/RakaSanctuary.java
index 2ee93f4a455..bad25ae29a9 100644
--- a/Mage.Sets/src/mage/cards/r/RakaSanctuary.java
+++ b/Mage.Sets/src/mage/cards/r/RakaSanctuary.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class RakaSanctuary extends CardImpl {
+public final class RakaSanctuary extends CardImpl {
public RakaSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Rakalite.java b/Mage.Sets/src/mage/cards/r/Rakalite.java
index ea71e2bc950..4be35cafc3d 100644
--- a/Mage.Sets/src/mage/cards/r/Rakalite.java
+++ b/Mage.Sets/src/mage/cards/r/Rakalite.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author MarcoMarin
*/
-public class Rakalite extends CardImpl {
+public final class Rakalite extends CardImpl {
public Rakalite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/r/Rakavolver.java b/Mage.Sets/src/mage/cards/r/Rakavolver.java
index ef202f3b163..3c5d3311ff2 100644
--- a/Mage.Sets/src/mage/cards/r/Rakavolver.java
+++ b/Mage.Sets/src/mage/cards/r/Rakavolver.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
* @author LoneFox
*/
-public class Rakavolver extends CardImpl {
+public final class Rakavolver extends CardImpl {
public Rakavolver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosCackler.java b/Mage.Sets/src/mage/cards/r/RakdosCackler.java
index 14c40fd4ad8..ff0841f1cb2 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosCackler.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosCackler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RakdosCackler extends CardImpl {
+public final class RakdosCackler extends CardImpl {
public RakdosCackler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B/R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosCarnarium.java b/Mage.Sets/src/mage/cards/r/RakdosCarnarium.java
index 79c9d16854e..0475449c11c 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosCarnarium.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosCarnarium.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledPermanent;
/**
* @author Loki
*/
-public class RakdosCarnarium extends CardImpl {
+public final class RakdosCarnarium extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RakdosCharm.java b/Mage.Sets/src/mage/cards/r/RakdosCharm.java
index 0db2541f026..0509dc11e9a 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosCharm.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosCharm.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class RakdosCharm extends CardImpl {
+public final class RakdosCharm extends CardImpl {
public RakdosCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosCluestone.java b/Mage.Sets/src/mage/cards/r/RakdosCluestone.java
index 8ab7c60e9cd..dbbe7fb3ec0 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosCluestone.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosCluestone.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*/
-public class RakdosCluestone extends CardImpl {
+public final class RakdosCluestone extends CardImpl {
public RakdosCluestone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosDrake.java b/Mage.Sets/src/mage/cards/r/RakdosDrake.java
index a62a50ebef3..faf5832a3f3 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosDrake.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosDrake.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*/
-public class RakdosDrake extends CardImpl {
+public final class RakdosDrake extends CardImpl {
public RakdosDrake (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosGuildgate.java b/Mage.Sets/src/mage/cards/r/RakdosGuildgate.java
index 58a5289a301..526a3e3a2b8 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosGuildgate.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosGuildgate.java
@@ -40,7 +40,7 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class RakdosGuildgate extends CardImpl {
+public final class RakdosGuildgate extends CardImpl {
public RakdosGuildgate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosGuildmage.java b/Mage.Sets/src/mage/cards/r/RakdosGuildmage.java
index d27adbb0d7a..58cf6a023d9 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosGuildmage.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosGuildmage.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RakdosGuildmage extends CardImpl {
+public final class RakdosGuildmage extends CardImpl {
public RakdosGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B/R}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosIckspitter.java b/Mage.Sets/src/mage/cards/r/RakdosIckspitter.java
index deb71050cbc..d0df2164741 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosIckspitter.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosIckspitter.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class RakdosIckspitter extends CardImpl {
+public final class RakdosIckspitter extends CardImpl {
public RakdosIckspitter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosKeyrune.java b/Mage.Sets/src/mage/cards/r/RakdosKeyrune.java
index ca48ec61e22..2cdd90b93a2 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosKeyrune.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosKeyrune.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.Token;
/**
* @author LevelX2
*/
-public class RakdosKeyrune extends CardImpl {
+public final class RakdosKeyrune extends CardImpl {
public RakdosKeyrune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosLordOfRiots.java b/Mage.Sets/src/mage/cards/r/RakdosLordOfRiots.java
index 997f35c6aa5..9d914889b30 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosLordOfRiots.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosLordOfRiots.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class RakdosLordOfRiots extends CardImpl {
+public final class RakdosLordOfRiots extends CardImpl {
public RakdosLordOfRiots(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosPitDragon.java b/Mage.Sets/src/mage/cards/r/RakdosPitDragon.java
index ea89f233804..ced207f6422 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosPitDragon.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosPitDragon.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class RakdosPitDragon extends CardImpl {
+public final class RakdosPitDragon extends CardImpl {
public RakdosPitDragon (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosRagemutt.java b/Mage.Sets/src/mage/cards/r/RakdosRagemutt.java
index 859c4599b33..9fba8c531ab 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosRagemutt.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosRagemutt.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RakdosRagemutt extends CardImpl {
+public final class RakdosRagemutt extends CardImpl {
public RakdosRagemutt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosRingleader.java b/Mage.Sets/src/mage/cards/r/RakdosRingleader.java
index c02d506a61f..5c9c37eeb64 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosRingleader.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosRingleader.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class RakdosRingleader extends CardImpl {
+public final class RakdosRingleader extends CardImpl {
public RakdosRingleader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosShredFreak.java b/Mage.Sets/src/mage/cards/r/RakdosShredFreak.java
index 685630a1647..758f532d4b4 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosShredFreak.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosShredFreak.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author magenoxx_at_gmail.com
*/
-public class RakdosShredFreak extends CardImpl {
+public final class RakdosShredFreak extends CardImpl {
public RakdosShredFreak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B/R}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosSignet.java b/Mage.Sets/src/mage/cards/r/RakdosSignet.java
index 4c6a15b4c33..9e8b56093dc 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosSignet.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosSignet.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jonubuu
*/
-public class RakdosSignet extends CardImpl {
+public final class RakdosSignet extends CardImpl {
public RakdosSignet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/r/RakdosTheDefiler.java b/Mage.Sets/src/mage/cards/r/RakdosTheDefiler.java
index d46e01074b0..8260bcc19f5 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosTheDefiler.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosTheDefiler.java
@@ -54,7 +54,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Quercitron
*/
-public class RakdosTheDefiler extends CardImpl {
+public final class RakdosTheDefiler extends CardImpl {
private static final FilterPermanent attackTriggerFilter = new FilterControlledPermanent("the non-Demon permanents you control");
private static final FilterPermanent damageToPlayerTriggerFilter = new FilterPermanent("the non-Demon permanents you control");
diff --git a/Mage.Sets/src/mage/cards/r/RakdossReturn.java b/Mage.Sets/src/mage/cards/r/RakdossReturn.java
index 7d0178fd594..3ca1453af6c 100644
--- a/Mage.Sets/src/mage/cards/r/RakdossReturn.java
+++ b/Mage.Sets/src/mage/cards/r/RakdossReturn.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class RakdossReturn extends CardImpl {
+public final class RakdossReturn extends CardImpl {
public RakdossReturn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakeclawGargantuan.java b/Mage.Sets/src/mage/cards/r/RakeclawGargantuan.java
index fb99545ec48..68d429fe496 100644
--- a/Mage.Sets/src/mage/cards/r/RakeclawGargantuan.java
+++ b/Mage.Sets/src/mage/cards/r/RakeclawGargantuan.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class RakeclawGargantuan extends CardImpl {
+public final class RakeclawGargantuan extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/r/RakingCanopy.java b/Mage.Sets/src/mage/cards/r/RakingCanopy.java
index 1ff4698bef5..ab047718022 100644
--- a/Mage.Sets/src/mage/cards/r/RakingCanopy.java
+++ b/Mage.Sets/src/mage/cards/r/RakingCanopy.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class RakingCanopy extends CardImpl {
+public final class RakingCanopy extends CardImpl {
public RakingCanopy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RakishHeir.java b/Mage.Sets/src/mage/cards/r/RakishHeir.java
index ed586f580a8..f71dc1048ff 100644
--- a/Mage.Sets/src/mage/cards/r/RakishHeir.java
+++ b/Mage.Sets/src/mage/cards/r/RakishHeir.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author North
*/
-public class RakishHeir extends CardImpl {
+public final class RakishHeir extends CardImpl {
public RakishHeir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RakkaMar.java b/Mage.Sets/src/mage/cards/r/RakkaMar.java
index d56862ec417..c20f58ba9e3 100644
--- a/Mage.Sets/src/mage/cards/r/RakkaMar.java
+++ b/Mage.Sets/src/mage/cards/r/RakkaMar.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.RakkaMarElementalToken;
*
* @author Loki
*/
-public class RakkaMar extends CardImpl {
+public final class RakkaMar extends CardImpl {
private RakkaMarElementalToken token = new RakkaMarElementalToken();
diff --git a/Mage.Sets/src/mage/cards/r/RakshaGoldenCub.java b/Mage.Sets/src/mage/cards/r/RakshaGoldenCub.java
index b37215bda18..9f5698d4865 100644
--- a/Mage.Sets/src/mage/cards/r/RakshaGoldenCub.java
+++ b/Mage.Sets/src/mage/cards/r/RakshaGoldenCub.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Plopman
*/
-public class RakshaGoldenCub extends CardImpl {
+public final class RakshaGoldenCub extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Cat creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RakshasaDeathdealer.java b/Mage.Sets/src/mage/cards/r/RakshasaDeathdealer.java
index e43faf09293..7a25b9caac5 100644
--- a/Mage.Sets/src/mage/cards/r/RakshasaDeathdealer.java
+++ b/Mage.Sets/src/mage/cards/r/RakshasaDeathdealer.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class RakshasaDeathdealer extends CardImpl {
+public final class RakshasaDeathdealer extends CardImpl {
public RakshasaDeathdealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RakshasaGravecaller.java b/Mage.Sets/src/mage/cards/r/RakshasaGravecaller.java
index 086884aae37..e403f039ce4 100644
--- a/Mage.Sets/src/mage/cards/r/RakshasaGravecaller.java
+++ b/Mage.Sets/src/mage/cards/r/RakshasaGravecaller.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author LevelX2
*/
-public class RakshasaGravecaller extends CardImpl {
+public final class RakshasaGravecaller extends CardImpl {
public RakshasaGravecaller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RakshasaVizier.java b/Mage.Sets/src/mage/cards/r/RakshasaVizier.java
index 278f7207f1c..01e8e9df336 100644
--- a/Mage.Sets/src/mage/cards/r/RakshasaVizier.java
+++ b/Mage.Sets/src/mage/cards/r/RakshasaVizier.java
@@ -46,7 +46,7 @@ import mage.game.events.ZoneChangeEvent;
*
* @author LevelX2
*/
-public class RakshasaVizier extends CardImpl {
+public final class RakshasaVizier extends CardImpl {
public RakshasaVizier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RakshasasDisdain.java b/Mage.Sets/src/mage/cards/r/RakshasasDisdain.java
index 1211a040f1a..e04dafd2cef 100644
--- a/Mage.Sets/src/mage/cards/r/RakshasasDisdain.java
+++ b/Mage.Sets/src/mage/cards/r/RakshasasDisdain.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author emerald000
*/
-public class RakshasasDisdain extends CardImpl {
+public final class RakshasasDisdain extends CardImpl {
public RakshasasDisdain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RakshasasSecret.java b/Mage.Sets/src/mage/cards/r/RakshasasSecret.java
index 68ea8bec42f..ca0acc1839d 100644
--- a/Mage.Sets/src/mage/cards/r/RakshasasSecret.java
+++ b/Mage.Sets/src/mage/cards/r/RakshasasSecret.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetOpponent;
*
* @author emerald000
*/
-public class RakshasasSecret extends CardImpl {
+public final class RakshasasSecret extends CardImpl {
public RakshasasSecret(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RalZarek.java b/Mage.Sets/src/mage/cards/r/RalZarek.java
index df41e94667e..8ae446e8f99 100644
--- a/Mage.Sets/src/mage/cards/r/RalZarek.java
+++ b/Mage.Sets/src/mage/cards/r/RalZarek.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class RalZarek extends CardImpl {
+public final class RalZarek extends CardImpl {
private static final FilterPermanent secondFilter = new FilterPermanent("another target permanent");
diff --git a/Mage.Sets/src/mage/cards/r/Rally.java b/Mage.Sets/src/mage/cards/r/Rally.java
index e61ea9f64d1..3d57686d29f 100644
--- a/Mage.Sets/src/mage/cards/r/Rally.java
+++ b/Mage.Sets/src/mage/cards/r/Rally.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterBlockingCreature;
*
* @author LoneFox
*/
-public class Rally extends CardImpl {
+public final class Rally extends CardImpl {
public Rally(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RallyTheAncestors.java b/Mage.Sets/src/mage/cards/r/RallyTheAncestors.java
index e7c777104f1..80e0a16536e 100644
--- a/Mage.Sets/src/mage/cards/r/RallyTheAncestors.java
+++ b/Mage.Sets/src/mage/cards/r/RallyTheAncestors.java
@@ -57,7 +57,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class RallyTheAncestors extends CardImpl {
+public final class RallyTheAncestors extends CardImpl {
public RallyTheAncestors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RallyTheForces.java b/Mage.Sets/src/mage/cards/r/RallyTheForces.java
index df74b0d12fd..adbe4f96af5 100644
--- a/Mage.Sets/src/mage/cards/r/RallyTheForces.java
+++ b/Mage.Sets/src/mage/cards/r/RallyTheForces.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author Loki
*/
-public class RallyTheForces extends CardImpl {
+public final class RallyTheForces extends CardImpl {
public RallyTheForces (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RallyTheHorde.java b/Mage.Sets/src/mage/cards/r/RallyTheHorde.java
index 8e7e0699170..c8cc0d0fff7 100644
--- a/Mage.Sets/src/mage/cards/r/RallyTheHorde.java
+++ b/Mage.Sets/src/mage/cards/r/RallyTheHorde.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class RallyTheHorde extends CardImpl {
+public final class RallyTheHorde extends CardImpl {
public RallyTheHorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RallyThePeasants.java b/Mage.Sets/src/mage/cards/r/RallyThePeasants.java
index 26d56bb554d..d353f7f535e 100644
--- a/Mage.Sets/src/mage/cards/r/RallyThePeasants.java
+++ b/Mage.Sets/src/mage/cards/r/RallyThePeasants.java
@@ -40,7 +40,7 @@ import mage.constants.TimingRule;
/**
* @author nantuko
*/
-public class RallyThePeasants extends CardImpl {
+public final class RallyThePeasants extends CardImpl {
public RallyThePeasants(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RallyTheRighteous.java b/Mage.Sets/src/mage/cards/r/RallyTheRighteous.java
index dbd2a58e85e..e300de7cb3a 100644
--- a/Mage.Sets/src/mage/cards/r/RallyTheRighteous.java
+++ b/Mage.Sets/src/mage/cards/r/RallyTheRighteous.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author duncant
*/
-public class RallyTheRighteous extends CardImpl {
+public final class RallyTheRighteous extends CardImpl {
public RallyTheRighteous(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RallyTheTroops.java b/Mage.Sets/src/mage/cards/r/RallyTheTroops.java
index 4974b7b8065..f82e05b0604 100644
--- a/Mage.Sets/src/mage/cards/r/RallyTheTroops.java
+++ b/Mage.Sets/src/mage/cards/r/RallyTheTroops.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author TheElk801
*/
-public class RallyTheTroops extends CardImpl {
+public final class RallyTheTroops extends CardImpl {
public RallyTheTroops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RallyingFire.java b/Mage.Sets/src/mage/cards/r/RallyingFire.java
index fb11ce5ae13..e7e31384f75 100644
--- a/Mage.Sets/src/mage/cards/r/RallyingFire.java
+++ b/Mage.Sets/src/mage/cards/r/RallyingFire.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author Styxo
*/
-public class RallyingFire extends CardImpl {
+public final class RallyingFire extends CardImpl {
public RallyingFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RallyingRoar.java b/Mage.Sets/src/mage/cards/r/RallyingRoar.java
index 2f73e27f35d..58baa1ca488 100644
--- a/Mage.Sets/src/mage/cards/r/RallyingRoar.java
+++ b/Mage.Sets/src/mage/cards/r/RallyingRoar.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class RallyingRoar extends CardImpl {
+public final class RallyingRoar extends CardImpl {
public RallyingRoar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RamirezDePietro.java b/Mage.Sets/src/mage/cards/r/RamirezDePietro.java
index 24d101e2fef..a399c213418 100644
--- a/Mage.Sets/src/mage/cards/r/RamirezDePietro.java
+++ b/Mage.Sets/src/mage/cards/r/RamirezDePietro.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class RamirezDePietro extends CardImpl {
+public final class RamirezDePietro extends CardImpl {
public RamirezDePietro(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RamosDragonEngine.java b/Mage.Sets/src/mage/cards/r/RamosDragonEngine.java
index 174ab5c963f..a2752880191 100644
--- a/Mage.Sets/src/mage/cards/r/RamosDragonEngine.java
+++ b/Mage.Sets/src/mage/cards/r/RamosDragonEngine.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class RamosDragonEngine extends CardImpl {
+public final class RamosDragonEngine extends CardImpl {
public RamosDragonEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/r/RamosianCaptain.java b/Mage.Sets/src/mage/cards/r/RamosianCaptain.java
index 3c146004dc1..c6cfdd565e6 100644
--- a/Mage.Sets/src/mage/cards/r/RamosianCaptain.java
+++ b/Mage.Sets/src/mage/cards/r/RamosianCaptain.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class RamosianCaptain extends CardImpl {
+public final class RamosianCaptain extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 4 or less");
diff --git a/Mage.Sets/src/mage/cards/r/RamosianCommander.java b/Mage.Sets/src/mage/cards/r/RamosianCommander.java
index cf94f171bfe..e9844cf1ce4 100644
--- a/Mage.Sets/src/mage/cards/r/RamosianCommander.java
+++ b/Mage.Sets/src/mage/cards/r/RamosianCommander.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class RamosianCommander extends CardImpl {
+public final class RamosianCommander extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 5 or less");
diff --git a/Mage.Sets/src/mage/cards/r/RamosianLieutenant.java b/Mage.Sets/src/mage/cards/r/RamosianLieutenant.java
index b5cabddd0f5..a148569e69c 100644
--- a/Mage.Sets/src/mage/cards/r/RamosianLieutenant.java
+++ b/Mage.Sets/src/mage/cards/r/RamosianLieutenant.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class RamosianLieutenant extends CardImpl {
+public final class RamosianLieutenant extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/r/RamosianRally.java b/Mage.Sets/src/mage/cards/r/RamosianRally.java
index a5c15419adf..10e2e6c9282 100644
--- a/Mage.Sets/src/mage/cards/r/RamosianRally.java
+++ b/Mage.Sets/src/mage/cards/r/RamosianRally.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author JRHerlehy
*/
-public class RamosianRally extends CardImpl {
+public final class RamosianRally extends CardImpl {
private static final FilterControlledPermanent plainsFilter = new FilterControlledPermanent("If you control a Plains");
private static final FilterControlledCreaturePermanent creatureFilter = new FilterControlledCreaturePermanent("an untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/r/RamosianRevivalist.java b/Mage.Sets/src/mage/cards/r/RamosianRevivalist.java
index 016ef0634f2..4f61b659900 100644
--- a/Mage.Sets/src/mage/cards/r/RamosianRevivalist.java
+++ b/Mage.Sets/src/mage/cards/r/RamosianRevivalist.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class RamosianRevivalist extends CardImpl {
+public final class RamosianRevivalist extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 5 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/r/RamosianSergeant.java b/Mage.Sets/src/mage/cards/r/RamosianSergeant.java
index c4b9afafaff..aae11cf4c5a 100644
--- a/Mage.Sets/src/mage/cards/r/RamosianSergeant.java
+++ b/Mage.Sets/src/mage/cards/r/RamosianSergeant.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author Backfir3
*/
-public class RamosianSergeant extends CardImpl {
+public final class RamosianSergeant extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 2 or less");
diff --git a/Mage.Sets/src/mage/cards/r/RamosianSkyMarshal.java b/Mage.Sets/src/mage/cards/r/RamosianSkyMarshal.java
index b7fb03245ef..70c93d98be4 100644
--- a/Mage.Sets/src/mage/cards/r/RamosianSkyMarshal.java
+++ b/Mage.Sets/src/mage/cards/r/RamosianSkyMarshal.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class RamosianSkyMarshal extends CardImpl {
+public final class RamosianSkyMarshal extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 6 or less");
diff --git a/Mage.Sets/src/mage/cards/r/RampagingBaloths.java b/Mage.Sets/src/mage/cards/r/RampagingBaloths.java
index 59fca09e645..22df5f004c8 100644
--- a/Mage.Sets/src/mage/cards/r/RampagingBaloths.java
+++ b/Mage.Sets/src/mage/cards/r/RampagingBaloths.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.BeastToken2;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RampagingBaloths extends CardImpl {
+public final class RampagingBaloths extends CardImpl {
public RampagingBaloths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RampagingCyclops.java b/Mage.Sets/src/mage/cards/r/RampagingCyclops.java
index c9cca1893fe..f81e2a1f779 100644
--- a/Mage.Sets/src/mage/cards/r/RampagingCyclops.java
+++ b/Mage.Sets/src/mage/cards/r/RampagingCyclops.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class RampagingCyclops extends CardImpl {
+public final class RampagingCyclops extends CardImpl {
public RampagingCyclops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java b/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java
index 17663bc7fa6..0917585c193 100644
--- a/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java
+++ b/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class RampagingFerocidon extends CardImpl {
+public final class RampagingFerocidon extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/r/RampagingHippo.java b/Mage.Sets/src/mage/cards/r/RampagingHippo.java
index b515c9a9d4f..79cb6329dcd 100644
--- a/Mage.Sets/src/mage/cards/r/RampagingHippo.java
+++ b/Mage.Sets/src/mage/cards/r/RampagingHippo.java
@@ -10,7 +10,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-public class RampagingHippo extends CardImpl {
+public final class RampagingHippo extends CardImpl {
public RampagingHippo(UUID cardID, CardSetInfo cardSetInfo){
super(cardID, cardSetInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RampagingWerewolf.java b/Mage.Sets/src/mage/cards/r/RampagingWerewolf.java
index 116c1f8f498..ab3cef0e453 100644
--- a/Mage.Sets/src/mage/cards/r/RampagingWerewolf.java
+++ b/Mage.Sets/src/mage/cards/r/RampagingWerewolf.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class RampagingWerewolf extends CardImpl {
+public final class RampagingWerewolf extends CardImpl {
public RampagingWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/r/RampantElephant.java b/Mage.Sets/src/mage/cards/r/RampantElephant.java
index 9a8a451658a..9835e0456e0 100644
--- a/Mage.Sets/src/mage/cards/r/RampantElephant.java
+++ b/Mage.Sets/src/mage/cards/r/RampantElephant.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class RampantElephant extends CardImpl {
+public final class RampantElephant extends CardImpl {
public RampantElephant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RampantGrowth.java b/Mage.Sets/src/mage/cards/r/RampantGrowth.java
index 820cc70aa0a..ec351dca902 100644
--- a/Mage.Sets/src/mage/cards/r/RampantGrowth.java
+++ b/Mage.Sets/src/mage/cards/r/RampantGrowth.java
@@ -41,13 +41,13 @@ import java.util.UUID;
*
* @author LokiX
*/
-public class RampantGrowth extends CardImpl {
+public final class RampantGrowth extends CardImpl {
public RampantGrowth(UUID ownerId, CardSetInfo setInfo){
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true));
}
public RampantGrowth(final RampantGrowth card) {
diff --git a/Mage.Sets/src/mage/cards/r/RampartCrawler.java b/Mage.Sets/src/mage/cards/r/RampartCrawler.java
index 01859377222..d6aede1fa75 100644
--- a/Mage.Sets/src/mage/cards/r/RampartCrawler.java
+++ b/Mage.Sets/src/mage/cards/r/RampartCrawler.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Backfir3
*/
-public class RampartCrawler extends CardImpl {
+public final class RampartCrawler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls");
diff --git a/Mage.Sets/src/mage/cards/r/Ramroller.java b/Mage.Sets/src/mage/cards/r/Ramroller.java
index 1b72ec61317..82918d6af11 100644
--- a/Mage.Sets/src/mage/cards/r/Ramroller.java
+++ b/Mage.Sets/src/mage/cards/r/Ramroller.java
@@ -48,7 +48,7 @@ import java.util.UUID;
/**
* @author LoneFox
*/
-public class Ramroller extends CardImpl {
+public final class Ramroller extends CardImpl {
private static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RamsesOverdark.java b/Mage.Sets/src/mage/cards/r/RamsesOverdark.java
index 21634605a56..c415da13fd2 100644
--- a/Mage.Sets/src/mage/cards/r/RamsesOverdark.java
+++ b/Mage.Sets/src/mage/cards/r/RamsesOverdark.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RamsesOverdark extends CardImpl {
+public final class RamsesOverdark extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("enchanted creature");
diff --git a/Mage.Sets/src/mage/cards/r/RamunapExcavator.java b/Mage.Sets/src/mage/cards/r/RamunapExcavator.java
index 7540fee3352..7d73b73c9e9 100644
--- a/Mage.Sets/src/mage/cards/r/RamunapExcavator.java
+++ b/Mage.Sets/src/mage/cards/r/RamunapExcavator.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
/**
* @author fireshoes
*/
-public class RamunapExcavator extends CardImpl {
+public final class RamunapExcavator extends CardImpl {
public RamunapExcavator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RamunapHydra.java b/Mage.Sets/src/mage/cards/r/RamunapHydra.java
index 3a7c2b221b1..d1fc6e426d0 100644
--- a/Mage.Sets/src/mage/cards/r/RamunapHydra.java
+++ b/Mage.Sets/src/mage/cards/r/RamunapHydra.java
@@ -56,7 +56,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class RamunapHydra extends CardImpl {
+public final class RamunapHydra extends CardImpl {
public RamunapHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RamunapRuins.java b/Mage.Sets/src/mage/cards/r/RamunapRuins.java
index 52461e52676..4f4888f8d2c 100644
--- a/Mage.Sets/src/mage/cards/r/RamunapRuins.java
+++ b/Mage.Sets/src/mage/cards/r/RamunapRuins.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class RamunapRuins extends CardImpl {
+public final class RamunapRuins extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Desert");
diff --git a/Mage.Sets/src/mage/cards/r/RancidEarth.java b/Mage.Sets/src/mage/cards/r/RancidEarth.java
index dd850640733..115d1223cd1 100644
--- a/Mage.Sets/src/mage/cards/r/RancidEarth.java
+++ b/Mage.Sets/src/mage/cards/r/RancidEarth.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author anonymous
*/
-public class RancidEarth extends CardImpl {
+public final class RancidEarth extends CardImpl {
public RancidEarth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RancidRats.java b/Mage.Sets/src/mage/cards/r/RancidRats.java
index 4dfdb9d0698..3b5c235b6e8 100644
--- a/Mage.Sets/src/mage/cards/r/RancidRats.java
+++ b/Mage.Sets/src/mage/cards/r/RancidRats.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RancidRats extends CardImpl {
+public final class RancidRats extends CardImpl {
public RancidRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Rancor.java b/Mage.Sets/src/mage/cards/r/Rancor.java
index 7055d30b644..05fd6f0aa31 100644
--- a/Mage.Sets/src/mage/cards/r/Rancor.java
+++ b/Mage.Sets/src/mage/cards/r/Rancor.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class Rancor extends CardImpl {
+public final class Rancor extends CardImpl {
public Rancor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RangerEnVec.java b/Mage.Sets/src/mage/cards/r/RangerEnVec.java
index ec5c650cdf1..b5538b88db5 100644
--- a/Mage.Sets/src/mage/cards/r/RangerEnVec.java
+++ b/Mage.Sets/src/mage/cards/r/RangerEnVec.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class RangerEnVec extends CardImpl {
+public final class RangerEnVec extends CardImpl {
public RangerEnVec(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RangerOfEos.java b/Mage.Sets/src/mage/cards/r/RangerOfEos.java
index 34e14c7123b..1a08193d631 100644
--- a/Mage.Sets/src/mage/cards/r/RangerOfEos.java
+++ b/Mage.Sets/src/mage/cards/r/RangerOfEos.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RangerOfEos extends CardImpl {
+public final class RangerOfEos extends CardImpl {
private static final FilterCard filter = new FilterCard("creature cards with converted mana cost 1 or less");
diff --git a/Mage.Sets/src/mage/cards/r/RangersGuile.java b/Mage.Sets/src/mage/cards/r/RangersGuile.java
index 322ed2d72e2..1ca73fa07f0 100644
--- a/Mage.Sets/src/mage/cards/r/RangersGuile.java
+++ b/Mage.Sets/src/mage/cards/r/RangersGuile.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class RangersGuile extends CardImpl {
+public final class RangersGuile extends CardImpl {
public RangersGuile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RangersPath.java b/Mage.Sets/src/mage/cards/r/RangersPath.java
index c5e0d909ac3..53ad4685912 100644
--- a/Mage.Sets/src/mage/cards/r/RangersPath.java
+++ b/Mage.Sets/src/mage/cards/r/RangersPath.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class RangersPath extends CardImpl {
+public final class RangersPath extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("Forest cards");
diff --git a/Mage.Sets/src/mage/cards/r/RangingRaptors.java b/Mage.Sets/src/mage/cards/r/RangingRaptors.java
index 8044e9a5907..e977c4ade44 100644
--- a/Mage.Sets/src/mage/cards/r/RangingRaptors.java
+++ b/Mage.Sets/src/mage/cards/r/RangingRaptors.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class RangingRaptors extends CardImpl {
+public final class RangingRaptors extends CardImpl {
public RangingRaptors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
@@ -56,7 +56,7 @@ public class RangingRaptors extends CardImpl {
// Enrage - Whenever Ranging Raptors is dealt damage, you may search your library for a basic land card, put it onto the battlefield, then shuffle your library.
Ability ability = new DealtDamageToSourceTriggeredAbility(
Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
true,
true);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/r/RankAndFile.java b/Mage.Sets/src/mage/cards/r/RankAndFile.java
index 30c4c3c6725..2465752ccf7 100644
--- a/Mage.Sets/src/mage/cards/r/RankAndFile.java
+++ b/Mage.Sets/src/mage/cards/r/RankAndFile.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Plopman
*/
-public class RankAndFile extends CardImpl {
+public final class RankAndFile extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RapaciousOne.java b/Mage.Sets/src/mage/cards/r/RapaciousOne.java
index 544460aceb4..e202d0fba44 100644
--- a/Mage.Sets/src/mage/cards/r/RapaciousOne.java
+++ b/Mage.Sets/src/mage/cards/r/RapaciousOne.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.EldraziSpawnToken;
*
* @author North
*/
-public class RapaciousOne extends CardImpl {
+public final class RapaciousOne extends CardImpl {
public RapaciousOne(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RapidDecay.java b/Mage.Sets/src/mage/cards/r/RapidDecay.java
index e5700cbda6a..904486ecffd 100644
--- a/Mage.Sets/src/mage/cards/r/RapidDecay.java
+++ b/Mage.Sets/src/mage/cards/r/RapidDecay.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author fireshoes
*/
-public class RapidDecay extends CardImpl {
+public final class RapidDecay extends CardImpl {
public RapidDecay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RapidHybridization.java b/Mage.Sets/src/mage/cards/r/RapidHybridization.java
index e5318236a81..53f4b2f77b7 100644
--- a/Mage.Sets/src/mage/cards/r/RapidHybridization.java
+++ b/Mage.Sets/src/mage/cards/r/RapidHybridization.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class RapidHybridization extends CardImpl {
+public final class RapidHybridization extends CardImpl {
public RapidHybridization(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RappellingScouts.java b/Mage.Sets/src/mage/cards/r/RappellingScouts.java
index 4552bcb01bc..c4476af5ce9 100644
--- a/Mage.Sets/src/mage/cards/r/RappellingScouts.java
+++ b/Mage.Sets/src/mage/cards/r/RappellingScouts.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class RappellingScouts extends CardImpl {
+public final class RappellingScouts extends CardImpl {
public RappellingScouts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RaptorCompanion.java b/Mage.Sets/src/mage/cards/r/RaptorCompanion.java
index 26c55fc4e31..872ceeee8a1 100644
--- a/Mage.Sets/src/mage/cards/r/RaptorCompanion.java
+++ b/Mage.Sets/src/mage/cards/r/RaptorCompanion.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class RaptorCompanion extends CardImpl {
+public final class RaptorCompanion extends CardImpl {
public RaptorCompanion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RaptorHatchling.java b/Mage.Sets/src/mage/cards/r/RaptorHatchling.java
index ba89e9c9b5d..d5d4861dd9c 100644
--- a/Mage.Sets/src/mage/cards/r/RaptorHatchling.java
+++ b/Mage.Sets/src/mage/cards/r/RaptorHatchling.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.DinosaurToken;
*
* @author TheElk801
*/
-public class RaptorHatchling extends CardImpl {
+public final class RaptorHatchling extends CardImpl {
public RaptorHatchling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RashidaScalebane.java b/Mage.Sets/src/mage/cards/r/RashidaScalebane.java
index 3847a40deae..6c472bf8db8 100644
--- a/Mage.Sets/src/mage/cards/r/RashidaScalebane.java
+++ b/Mage.Sets/src/mage/cards/r/RashidaScalebane.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class RashidaScalebane extends CardImpl {
+public final class RashidaScalebane extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking or blocking Dragon");
diff --git a/Mage.Sets/src/mage/cards/r/RashkaTheSlayer.java b/Mage.Sets/src/mage/cards/r/RashkaTheSlayer.java
index e9d4a65cdea..766ee1787ac 100644
--- a/Mage.Sets/src/mage/cards/r/RashkaTheSlayer.java
+++ b/Mage.Sets/src/mage/cards/r/RashkaTheSlayer.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class RashkaTheSlayer extends CardImpl {
+public final class RashkaTheSlayer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature");
diff --git a/Mage.Sets/src/mage/cards/r/RashmiEternitiesCrafter.java b/Mage.Sets/src/mage/cards/r/RashmiEternitiesCrafter.java
index d9942e4b18b..0bef27e21b0 100644
--- a/Mage.Sets/src/mage/cards/r/RashmiEternitiesCrafter.java
+++ b/Mage.Sets/src/mage/cards/r/RashmiEternitiesCrafter.java
@@ -30,6 +30,7 @@ package mage.cards.r;
import java.util.List;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.Effect;
@@ -39,8 +40,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.CardsImpl;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.game.Game;
@@ -53,10 +54,10 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author emerald000
*/
-public class RashmiEternitiesCrafter extends CardImpl {
+public final class RashmiEternitiesCrafter extends CardImpl {
public RashmiEternitiesCrafter(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{U}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.ELF);
this.subtype.add(SubType.DRUID);
@@ -146,7 +147,7 @@ class RashmiEternitiesCrafterEffect extends OneShotEffect {
|| card.isLand()
|| card.getConvertedManaCost() >= (int) cmcObject
|| !controller.chooseUse(Outcome.PlayForFree, "Cast " + card.getName() + " without paying its mana cost?", source, game)
- || !controller.cast(card.getSpellAbility(), game, true)) {
+ || !controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
controller.moveCards(card, Zone.HAND, source, game);
}
}
diff --git a/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java b/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java
index 3b7f0b8a435..24d63a032dd 100644
--- a/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java
+++ b/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java
@@ -58,7 +58,7 @@ import mage.watchers.Watcher;
/**
* @author emerald000
*/
-public class RasputinDreamweaver extends CardImpl {
+public final class RasputinDreamweaver extends CardImpl {
public RasputinDreamweaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RatColony.java b/Mage.Sets/src/mage/cards/r/RatColony.java
index a538754c765..b7c55371435 100644
--- a/Mage.Sets/src/mage/cards/r/RatColony.java
+++ b/Mage.Sets/src/mage/cards/r/RatColony.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author L_J
*/
-public class RatColony extends CardImpl {
+public final class RatColony extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other Rat you control");
diff --git a/Mage.Sets/src/mage/cards/r/Ratcatcher.java b/Mage.Sets/src/mage/cards/r/Ratcatcher.java
index a0571c14bd7..723c0773c33 100644
--- a/Mage.Sets/src/mage/cards/r/Ratcatcher.java
+++ b/Mage.Sets/src/mage/cards/r/Ratcatcher.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class Ratcatcher extends CardImpl {
+public final class Ratcatcher extends CardImpl {
private static final FilterCard filter = new FilterCard("Rat card");
diff --git a/Mage.Sets/src/mage/cards/r/RatchetBomb.java b/Mage.Sets/src/mage/cards/r/RatchetBomb.java
index f93bf5e6684..ae03b384887 100644
--- a/Mage.Sets/src/mage/cards/r/RatchetBomb.java
+++ b/Mage.Sets/src/mage/cards/r/RatchetBomb.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class RatchetBomb extends CardImpl {
+public final class RatchetBomb extends CardImpl {
public RatchetBomb (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/r/RathiAssassin.java b/Mage.Sets/src/mage/cards/r/RathiAssassin.java
index d5815cfe33d..df89006e66d 100644
--- a/Mage.Sets/src/mage/cards/r/RathiAssassin.java
+++ b/Mage.Sets/src/mage/cards/r/RathiAssassin.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class RathiAssassin extends CardImpl {
+public final class RathiAssassin extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 3 or less");
private static final FilterCreaturePermanent destroyFilter = new FilterCreaturePermanent("tapped nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/r/RathiDragon.java b/Mage.Sets/src/mage/cards/r/RathiDragon.java
index 55caf4f1688..f8bf48e62de 100644
--- a/Mage.Sets/src/mage/cards/r/RathiDragon.java
+++ b/Mage.Sets/src/mage/cards/r/RathiDragon.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class RathiDragon extends CardImpl {
+public final class RathiDragon extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("two Mountains");
diff --git a/Mage.Sets/src/mage/cards/r/RathiFiend.java b/Mage.Sets/src/mage/cards/r/RathiFiend.java
index 0ee722910ee..2cf844cea21 100644
--- a/Mage.Sets/src/mage/cards/r/RathiFiend.java
+++ b/Mage.Sets/src/mage/cards/r/RathiFiend.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class RathiFiend extends CardImpl {
+public final class RathiFiend extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/r/RathiIntimidator.java b/Mage.Sets/src/mage/cards/r/RathiIntimidator.java
index bc9cb595889..1374527f733 100644
--- a/Mage.Sets/src/mage/cards/r/RathiIntimidator.java
+++ b/Mage.Sets/src/mage/cards/r/RathiIntimidator.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class RathiIntimidator extends CardImpl {
+public final class RathiIntimidator extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 2 or less");
diff --git a/Mage.Sets/src/mage/cards/r/RathiTrapper.java b/Mage.Sets/src/mage/cards/r/RathiTrapper.java
index f3494aeb22f..eb34d3b49a6 100644
--- a/Mage.Sets/src/mage/cards/r/RathiTrapper.java
+++ b/Mage.Sets/src/mage/cards/r/RathiTrapper.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RathiTrapper extends CardImpl {
+public final class RathiTrapper extends CardImpl {
public RathiTrapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RathsEdge.java b/Mage.Sets/src/mage/cards/r/RathsEdge.java
index 24939327bc0..c172a4a7eaf 100644
--- a/Mage.Sets/src/mage/cards/r/RathsEdge.java
+++ b/Mage.Sets/src/mage/cards/r/RathsEdge.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author anonymous
*/
-public class RathsEdge extends CardImpl {
+public final class RathsEdge extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/r/RatsOfRath.java b/Mage.Sets/src/mage/cards/r/RatsOfRath.java
index 373574fef8d..5e8e6ddd6bc 100644
--- a/Mage.Sets/src/mage/cards/r/RatsOfRath.java
+++ b/Mage.Sets/src/mage/cards/r/RatsOfRath.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class RatsOfRath extends CardImpl {
+public final class RatsOfRath extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact, creature, or land you control");
diff --git a/Mage.Sets/src/mage/cards/r/RattleblazeScarecrow.java b/Mage.Sets/src/mage/cards/r/RattleblazeScarecrow.java
index d2dcfb5739d..b336e829d2a 100644
--- a/Mage.Sets/src/mage/cards/r/RattleblazeScarecrow.java
+++ b/Mage.Sets/src/mage/cards/r/RattleblazeScarecrow.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class RattleblazeScarecrow extends CardImpl {
+public final class RattleblazeScarecrow extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a black creature");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("a red creature");
diff --git a/Mage.Sets/src/mage/cards/r/Rattlechains.java b/Mage.Sets/src/mage/cards/r/Rattlechains.java
index ff3d330ecff..9b5a702d0cd 100644
--- a/Mage.Sets/src/mage/cards/r/Rattlechains.java
+++ b/Mage.Sets/src/mage/cards/r/Rattlechains.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Rattlechains extends CardImpl {
+public final class Rattlechains extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Spirit");
private static final FilterCard filterCard = new FilterCard("Spirit spells");
diff --git a/Mage.Sets/src/mage/cards/r/RattleclawMystic.java b/Mage.Sets/src/mage/cards/r/RattleclawMystic.java
index e7612431c45..6b60fa5ecc3 100644
--- a/Mage.Sets/src/mage/cards/r/RattleclawMystic.java
+++ b/Mage.Sets/src/mage/cards/r/RattleclawMystic.java
@@ -46,7 +46,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RattleclawMystic extends CardImpl {
+public final class RattleclawMystic extends CardImpl {
public RattleclawMystic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RavagedHighlands.java b/Mage.Sets/src/mage/cards/r/RavagedHighlands.java
index 1f0dc9d73e6..d3b1b58da45 100644
--- a/Mage.Sets/src/mage/cards/r/RavagedHighlands.java
+++ b/Mage.Sets/src/mage/cards/r/RavagedHighlands.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class RavagedHighlands extends CardImpl {
+public final class RavagedHighlands extends CardImpl {
public RavagedHighlands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RavagerOfTheFells.java b/Mage.Sets/src/mage/cards/r/RavagerOfTheFells.java
index beec2d52db0..2c22b550fa7 100644
--- a/Mage.Sets/src/mage/cards/r/RavagerOfTheFells.java
+++ b/Mage.Sets/src/mage/cards/r/RavagerOfTheFells.java
@@ -63,7 +63,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author BetaSteward
*/
-public class RavagerOfTheFells extends CardImpl {
+public final class RavagerOfTheFells extends CardImpl {
public RavagerOfTheFells(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
diff --git a/Mage.Sets/src/mage/cards/r/RavagesOfWar.java b/Mage.Sets/src/mage/cards/r/RavagesOfWar.java
index 082b09c3c31..485e55ca317 100644
--- a/Mage.Sets/src/mage/cards/r/RavagesOfWar.java
+++ b/Mage.Sets/src/mage/cards/r/RavagesOfWar.java
@@ -38,7 +38,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class RavagesOfWar extends CardImpl {
+public final class RavagesOfWar extends CardImpl {
public RavagesOfWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RavagingBlaze.java b/Mage.Sets/src/mage/cards/r/RavagingBlaze.java
index 8425bec3a2c..ef8f5c57a18 100644
--- a/Mage.Sets/src/mage/cards/r/RavagingBlaze.java
+++ b/Mage.Sets/src/mage/cards/r/RavagingBlaze.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RavagingBlaze extends CardImpl {
+public final class RavagingBlaze extends CardImpl {
public RavagingBlaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RavagingHorde.java b/Mage.Sets/src/mage/cards/r/RavagingHorde.java
index 02d5af045aa..f9d6f039800 100644
--- a/Mage.Sets/src/mage/cards/r/RavagingHorde.java
+++ b/Mage.Sets/src/mage/cards/r/RavagingHorde.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetLandPermanent;
* @author LoneFox
*/
-public class RavagingHorde extends CardImpl {
+public final class RavagingHorde extends CardImpl {
public RavagingHorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RavagingRiftwurm.java b/Mage.Sets/src/mage/cards/r/RavagingRiftwurm.java
index 8ebcf6510fa..084827d8b11 100644
--- a/Mage.Sets/src/mage/cards/r/RavagingRiftwurm.java
+++ b/Mage.Sets/src/mage/cards/r/RavagingRiftwurm.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class RavagingRiftwurm extends CardImpl {
+public final class RavagingRiftwurm extends CardImpl {
public RavagingRiftwurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RavenFamiliar.java b/Mage.Sets/src/mage/cards/r/RavenFamiliar.java
index e1cd6777f76..54525e8b3f3 100644
--- a/Mage.Sets/src/mage/cards/r/RavenFamiliar.java
+++ b/Mage.Sets/src/mage/cards/r/RavenFamiliar.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author Plopman
*/
-public class RavenFamiliar extends CardImpl {
+public final class RavenFamiliar extends CardImpl {
public RavenFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RavenGuildInitiate.java b/Mage.Sets/src/mage/cards/r/RavenGuildInitiate.java
index 5269c61f266..c38ae29f006 100644
--- a/Mage.Sets/src/mage/cards/r/RavenGuildInitiate.java
+++ b/Mage.Sets/src/mage/cards/r/RavenGuildInitiate.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class RavenGuildInitiate extends CardImpl {
+public final class RavenGuildInitiate extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Bird");
diff --git a/Mage.Sets/src/mage/cards/r/RavenGuildMaster.java b/Mage.Sets/src/mage/cards/r/RavenGuildMaster.java
index eff0bdf5a0a..3f8c1e0a595 100644
--- a/Mage.Sets/src/mage/cards/r/RavenGuildMaster.java
+++ b/Mage.Sets/src/mage/cards/r/RavenGuildMaster.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class RavenGuildMaster extends CardImpl {
+public final class RavenGuildMaster extends CardImpl {
public RavenGuildMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RavenousBaboons.java b/Mage.Sets/src/mage/cards/r/RavenousBaboons.java
index f25f2773a34..3da91daf0ee 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousBaboons.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousBaboons.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author LevelX2
*/
-public class RavenousBaboons extends CardImpl {
+public final class RavenousBaboons extends CardImpl {
public RavenousBaboons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RavenousBaloth.java b/Mage.Sets/src/mage/cards/r/RavenousBaloth.java
index 5df4f99aa77..0c5443b0fc2 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousBaloth.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousBaloth.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class RavenousBaloth extends CardImpl {
+public final class RavenousBaloth extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Beast");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RavenousBloodseeker.java b/Mage.Sets/src/mage/cards/r/RavenousBloodseeker.java
index dbbc2d8f53b..e313a7b745c 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousBloodseeker.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousBloodseeker.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class RavenousBloodseeker extends CardImpl {
+public final class RavenousBloodseeker extends CardImpl {
public RavenousBloodseeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RavenousChupacabra.java b/Mage.Sets/src/mage/cards/r/RavenousChupacabra.java
index d268f9b665d..12dd7970df6 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousChupacabra.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousChupacabra.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class RavenousChupacabra extends CardImpl {
+public final class RavenousChupacabra extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/r/RavenousDaggertooth.java b/Mage.Sets/src/mage/cards/r/RavenousDaggertooth.java
index 05e0b7ffbaa..8d57ff4b9bc 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousDaggertooth.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousDaggertooth.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class RavenousDaggertooth extends CardImpl {
+public final class RavenousDaggertooth extends CardImpl {
public RavenousDaggertooth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RavenousDemon.java b/Mage.Sets/src/mage/cards/r/RavenousDemon.java
index 89435b118a6..c6008d2b65e 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousDemon.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousDemon.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author intimidatingant
*/
-public class RavenousDemon extends CardImpl {
+public final class RavenousDemon extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Human");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RavenousIntruder.java b/Mage.Sets/src/mage/cards/r/RavenousIntruder.java
index 38fb34b1e2a..7d10bcd0287 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousIntruder.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousIntruder.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class RavenousIntruder extends CardImpl {
+public final class RavenousIntruder extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/r/RavenousLeucrocota.java b/Mage.Sets/src/mage/cards/r/RavenousLeucrocota.java
index 1a8bb3a039e..300c3362eb4 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousLeucrocota.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousLeucrocota.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RavenousLeucrocota extends CardImpl {
+public final class RavenousLeucrocota extends CardImpl {
public RavenousLeucrocota(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RavenousRats.java b/Mage.Sets/src/mage/cards/r/RavenousRats.java
index 9cbf5ccfd79..c32d10b13dd 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousRats.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousRats.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class RavenousRats extends CardImpl {
+public final class RavenousRats extends CardImpl {
public RavenousRats (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RavenousSkirge.java b/Mage.Sets/src/mage/cards/r/RavenousSkirge.java
index ba851c2ffc0..40af5a3181a 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousSkirge.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousSkirge.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class RavenousSkirge extends CardImpl {
+public final class RavenousSkirge extends CardImpl {
public RavenousSkirge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RavenousTrap.java b/Mage.Sets/src/mage/cards/r/RavenousTrap.java
index 80dcdd083d0..b889adf738c 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousTrap.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousTrap.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class RavenousTrap extends CardImpl {
+public final class RavenousTrap extends CardImpl {
public RavenousTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RavenousWampa.java b/Mage.Sets/src/mage/cards/r/RavenousWampa.java
index 22690af31c0..8028583fb8b 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousWampa.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousWampa.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Styxo
*/
-public class RavenousWampa extends CardImpl {
+public final class RavenousWampa extends CardImpl {
static final String RAVENOUS_WAMPA_STATE_VALUE_KEY_PREFIX = "TOU_SAC_CRE";
diff --git a/Mage.Sets/src/mage/cards/r/RavensCrime.java b/Mage.Sets/src/mage/cards/r/RavensCrime.java
index c30324fd745..8b9cdf8a487 100644
--- a/Mage.Sets/src/mage/cards/r/RavensCrime.java
+++ b/Mage.Sets/src/mage/cards/r/RavensCrime.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class RavensCrime extends CardImpl {
+public final class RavensCrime extends CardImpl {
public RavensCrime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RavensRunDragoon.java b/Mage.Sets/src/mage/cards/r/RavensRunDragoon.java
index c62841459e3..55f3a9f06f2 100644
--- a/Mage.Sets/src/mage/cards/r/RavensRunDragoon.java
+++ b/Mage.Sets/src/mage/cards/r/RavensRunDragoon.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class RavensRunDragoon extends CardImpl {
+public final class RavensRunDragoon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RavingDead.java b/Mage.Sets/src/mage/cards/r/RavingDead.java
index 648c9a3a00d..5e068d8db30 100644
--- a/Mage.Sets/src/mage/cards/r/RavingDead.java
+++ b/Mage.Sets/src/mage/cards/r/RavingDead.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class RavingDead extends CardImpl {
+public final class RavingDead extends CardImpl {
public RavingDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RavingOniSlave.java b/Mage.Sets/src/mage/cards/r/RavingOniSlave.java
index 04f702dbfd6..a3d284f9f8b 100644
--- a/Mage.Sets/src/mage/cards/r/RavingOniSlave.java
+++ b/Mage.Sets/src/mage/cards/r/RavingOniSlave.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class RavingOniSlave extends CardImpl {
+public final class RavingOniSlave extends CardImpl {
public RavingOniSlave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RavosSoultender.java b/Mage.Sets/src/mage/cards/r/RavosSoultender.java
index 4413adcb3da..ca65782863c 100644
--- a/Mage.Sets/src/mage/cards/r/RavosSoultender.java
+++ b/Mage.Sets/src/mage/cards/r/RavosSoultender.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class RavosSoultender extends CardImpl {
+public final class RavosSoultender extends CardImpl {
public RavosSoultender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RayOfCommand.java b/Mage.Sets/src/mage/cards/r/RayOfCommand.java
index 989097935cf..a83204a9b47 100644
--- a/Mage.Sets/src/mage/cards/r/RayOfCommand.java
+++ b/Mage.Sets/src/mage/cards/r/RayOfCommand.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RayOfCommand extends CardImpl {
+public final class RayOfCommand extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/r/RayOfDissolution.java b/Mage.Sets/src/mage/cards/r/RayOfDissolution.java
index 7a30e93456a..b02a7654e0d 100644
--- a/Mage.Sets/src/mage/cards/r/RayOfDissolution.java
+++ b/Mage.Sets/src/mage/cards/r/RayOfDissolution.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class RayOfDissolution extends CardImpl {
+public final class RayOfDissolution extends CardImpl {
public RayOfDissolution(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RayOfDistortion.java b/Mage.Sets/src/mage/cards/r/RayOfDistortion.java
index e03e8cd9b63..02e34192ea1 100644
--- a/Mage.Sets/src/mage/cards/r/RayOfDistortion.java
+++ b/Mage.Sets/src/mage/cards/r/RayOfDistortion.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author cbt33
*/
-public class RayOfDistortion extends CardImpl {
+public final class RayOfDistortion extends CardImpl {
public RayOfDistortion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RayOfErasure.java b/Mage.Sets/src/mage/cards/r/RayOfErasure.java
index 04d267683b9..49d62ce0bf2 100644
--- a/Mage.Sets/src/mage/cards/r/RayOfErasure.java
+++ b/Mage.Sets/src/mage/cards/r/RayOfErasure.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class RayOfErasure extends CardImpl {
+public final class RayOfErasure extends CardImpl {
public RayOfErasure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RayOfRevelation.java b/Mage.Sets/src/mage/cards/r/RayOfRevelation.java
index 4da8e8a8158..6abaa616683 100644
--- a/Mage.Sets/src/mage/cards/r/RayOfRevelation.java
+++ b/Mage.Sets/src/mage/cards/r/RayOfRevelation.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author North
*/
-public class RayOfRevelation extends CardImpl {
+public final class RayOfRevelation extends CardImpl {
public RayOfRevelation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RayneAcademyChancellor.java b/Mage.Sets/src/mage/cards/r/RayneAcademyChancellor.java
index 3a3c3e1d229..513e931bd8c 100644
--- a/Mage.Sets/src/mage/cards/r/RayneAcademyChancellor.java
+++ b/Mage.Sets/src/mage/cards/r/RayneAcademyChancellor.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class RayneAcademyChancellor extends CardImpl {
+public final class RayneAcademyChancellor extends CardImpl {
public RayneAcademyChancellor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RazakethTheFoulblooded.java b/Mage.Sets/src/mage/cards/r/RazakethTheFoulblooded.java
index 6518edf8d63..e66a354a6f5 100644
--- a/Mage.Sets/src/mage/cards/r/RazakethTheFoulblooded.java
+++ b/Mage.Sets/src/mage/cards/r/RazakethTheFoulblooded.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class RazakethTheFoulblooded extends CardImpl {
+public final class RazakethTheFoulblooded extends CardImpl {
public RazakethTheFoulblooded(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RazakethsRite.java b/Mage.Sets/src/mage/cards/r/RazakethsRite.java
index 1371b67fec2..dbca2ec74e8 100644
--- a/Mage.Sets/src/mage/cards/r/RazakethsRite.java
+++ b/Mage.Sets/src/mage/cards/r/RazakethsRite.java
@@ -9,7 +9,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.target.common.TargetCardInLibrary;
-public class RazakethsRite extends CardImpl {
+public final class RazakethsRite extends CardImpl {
public RazakethsRite(UUID ownerId, CardSetInfo cardSetInfo){
super(ownerId, cardSetInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Raze.java b/Mage.Sets/src/mage/cards/r/Raze.java
index b6d6c3968e6..b5f8019e737 100644
--- a/Mage.Sets/src/mage/cards/r/Raze.java
+++ b/Mage.Sets/src/mage/cards/r/Raze.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class Raze extends CardImpl {
+public final class Raze extends CardImpl {
public Raze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RaziaBorosArchangel.java b/Mage.Sets/src/mage/cards/r/RaziaBorosArchangel.java
index 73011218bac..d615671c028 100644
--- a/Mage.Sets/src/mage/cards/r/RaziaBorosArchangel.java
+++ b/Mage.Sets/src/mage/cards/r/RaziaBorosArchangel.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class RaziaBorosArchangel extends CardImpl {
+public final class RaziaBorosArchangel extends CardImpl {
public RaziaBorosArchangel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RaziasPurification.java b/Mage.Sets/src/mage/cards/r/RaziasPurification.java
index 1ec8465bfbe..df038b53890 100644
--- a/Mage.Sets/src/mage/cards/r/RaziasPurification.java
+++ b/Mage.Sets/src/mage/cards/r/RaziasPurification.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author spjspj
*/
-public class RaziasPurification extends CardImpl {
+public final class RaziasPurification extends CardImpl {
public RaziasPurification(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RazingSnidd.java b/Mage.Sets/src/mage/cards/r/RazingSnidd.java
index 6e66ea6cc69..159c8bfe9fe 100644
--- a/Mage.Sets/src/mage/cards/r/RazingSnidd.java
+++ b/Mage.Sets/src/mage/cards/r/RazingSnidd.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*
*/
-public class RazingSnidd extends CardImpl {
+public final class RazingSnidd extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black or red creature you control");
diff --git a/Mage.Sets/src/mage/cards/r/RazorBarrier.java b/Mage.Sets/src/mage/cards/r/RazorBarrier.java
index 8661dcdaa1f..5a13bbad8dc 100644
--- a/Mage.Sets/src/mage/cards/r/RazorBarrier.java
+++ b/Mage.Sets/src/mage/cards/r/RazorBarrier.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class RazorBarrier extends CardImpl {
+public final class RazorBarrier extends CardImpl {
public RazorBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RazorBoomerang.java b/Mage.Sets/src/mage/cards/r/RazorBoomerang.java
index 20fe9169b10..53cb390eb9d 100644
--- a/Mage.Sets/src/mage/cards/r/RazorBoomerang.java
+++ b/Mage.Sets/src/mage/cards/r/RazorBoomerang.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class RazorBoomerang extends CardImpl {
+public final class RazorBoomerang extends CardImpl {
public RazorBoomerang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/r/RazorGolem.java b/Mage.Sets/src/mage/cards/r/RazorGolem.java
index 8acf5bb8fd1..6b4f8124468 100644
--- a/Mage.Sets/src/mage/cards/r/RazorGolem.java
+++ b/Mage.Sets/src/mage/cards/r/RazorGolem.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RazorGolem extends CardImpl {
+public final class RazorGolem extends CardImpl {
public RazorGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/r/RazorHippogriff.java b/Mage.Sets/src/mage/cards/r/RazorHippogriff.java
index 46f213d7080..90efcd63ea8 100644
--- a/Mage.Sets/src/mage/cards/r/RazorHippogriff.java
+++ b/Mage.Sets/src/mage/cards/r/RazorHippogriff.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author nantuko
*/
-public class RazorHippogriff extends CardImpl {
+public final class RazorHippogriff extends CardImpl {
public RazorHippogriff (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
@@ -80,7 +80,7 @@ public class RazorHippogriff extends CardImpl {
return new RazorHippogriff(this);
}
- public class RazorHippogriffGainLifeEffect extends OneShotEffect {
+ public final class RazorHippogriffGainLifeEffect extends OneShotEffect {
public RazorHippogriffGainLifeEffect() {
super(Outcome.GainLife);
diff --git a/Mage.Sets/src/mage/cards/r/RazorSwine.java b/Mage.Sets/src/mage/cards/r/RazorSwine.java
index d577b570e71..13c4a3717b3 100644
--- a/Mage.Sets/src/mage/cards/r/RazorSwine.java
+++ b/Mage.Sets/src/mage/cards/r/RazorSwine.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RazorSwine extends CardImpl {
+public final class RazorSwine extends CardImpl {
public RazorSwine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RazorclawBear.java b/Mage.Sets/src/mage/cards/r/RazorclawBear.java
index 72f8eda6b05..7783a792f5b 100644
--- a/Mage.Sets/src/mage/cards/r/RazorclawBear.java
+++ b/Mage.Sets/src/mage/cards/r/RazorclawBear.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class RazorclawBear extends CardImpl {
+public final class RazorclawBear extends CardImpl {
public RazorclawBear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RazorfieldRhino.java b/Mage.Sets/src/mage/cards/r/RazorfieldRhino.java
index 3166251a439..9e39094ccfc 100644
--- a/Mage.Sets/src/mage/cards/r/RazorfieldRhino.java
+++ b/Mage.Sets/src/mage/cards/r/RazorfieldRhino.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class RazorfieldRhino extends CardImpl {
+public final class RazorfieldRhino extends CardImpl {
public RazorfieldRhino (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/r/RazorfieldThresher.java b/Mage.Sets/src/mage/cards/r/RazorfieldThresher.java
index 5bfd9249ab6..2ce32020492 100644
--- a/Mage.Sets/src/mage/cards/r/RazorfieldThresher.java
+++ b/Mage.Sets/src/mage/cards/r/RazorfieldThresher.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class RazorfieldThresher extends CardImpl {
+public final class RazorfieldThresher extends CardImpl {
public RazorfieldThresher (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/r/RazorfinAbolisher.java b/Mage.Sets/src/mage/cards/r/RazorfinAbolisher.java
index b374c359be7..546594102d6 100644
--- a/Mage.Sets/src/mage/cards/r/RazorfinAbolisher.java
+++ b/Mage.Sets/src/mage/cards/r/RazorfinAbolisher.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class RazorfinAbolisher extends CardImpl {
+public final class RazorfinAbolisher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with a counter on it");
diff --git a/Mage.Sets/src/mage/cards/r/RazorfinHunter.java b/Mage.Sets/src/mage/cards/r/RazorfinHunter.java
index 1e62683a6ca..992c66f32aa 100644
--- a/Mage.Sets/src/mage/cards/r/RazorfinHunter.java
+++ b/Mage.Sets/src/mage/cards/r/RazorfinHunter.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class RazorfinHunter extends CardImpl {
+public final class RazorfinHunter extends CardImpl {
public RazorfinHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RazorfootGriffin.java b/Mage.Sets/src/mage/cards/r/RazorfootGriffin.java
index a4908ed2ebc..c768be46c8d 100644
--- a/Mage.Sets/src/mage/cards/r/RazorfootGriffin.java
+++ b/Mage.Sets/src/mage/cards/r/RazorfootGriffin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RazorfootGriffin extends CardImpl {
+public final class RazorfootGriffin extends CardImpl {
public RazorfootGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RazorgrassScreen.java b/Mage.Sets/src/mage/cards/r/RazorgrassScreen.java
index 0e7fec20ac8..3905244aa92 100644
--- a/Mage.Sets/src/mage/cards/r/RazorgrassScreen.java
+++ b/Mage.Sets/src/mage/cards/r/RazorgrassScreen.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class RazorgrassScreen extends CardImpl {
+public final class RazorgrassScreen extends CardImpl {
public RazorgrassScreen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/r/RazorjawOni.java b/Mage.Sets/src/mage/cards/r/RazorjawOni.java
index c6f477cfed6..6223f7d5d61 100644
--- a/Mage.Sets/src/mage/cards/r/RazorjawOni.java
+++ b/Mage.Sets/src/mage/cards/r/RazorjawOni.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class RazorjawOni extends CardImpl {
+public final class RazorjawOni extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RazormaneMasticore.java b/Mage.Sets/src/mage/cards/r/RazormaneMasticore.java
index 809e328c392..c810ee13598 100644
--- a/Mage.Sets/src/mage/cards/r/RazormaneMasticore.java
+++ b/Mage.Sets/src/mage/cards/r/RazormaneMasticore.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class RazormaneMasticore extends CardImpl {
+public final class RazormaneMasticore extends CardImpl {
public RazormaneMasticore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/r/RazortipWhip.java b/Mage.Sets/src/mage/cards/r/RazortipWhip.java
index d1b201ab8fa..33ca8db9c66 100644
--- a/Mage.Sets/src/mage/cards/r/RazortipWhip.java
+++ b/Mage.Sets/src/mage/cards/r/RazortipWhip.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author LevelX2
*/
-public class RazortipWhip extends CardImpl {
+public final class RazortipWhip extends CardImpl {
public RazortipWhip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/r/RazortoothRats.java b/Mage.Sets/src/mage/cards/r/RazortoothRats.java
index b84b017f331..1ee40f9dc1f 100644
--- a/Mage.Sets/src/mage/cards/r/RazortoothRats.java
+++ b/Mage.Sets/src/mage/cards/r/RazortoothRats.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RazortoothRats extends CardImpl {
+public final class RazortoothRats extends CardImpl {
public RazortoothRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RazorvergeThicket.java b/Mage.Sets/src/mage/cards/r/RazorvergeThicket.java
index f1eab11e0cd..8cc5353de50 100644
--- a/Mage.Sets/src/mage/cards/r/RazorvergeThicket.java
+++ b/Mage.Sets/src/mage/cards/r/RazorvergeThicket.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author maurer.it_at_gmail.com
*/
-public class RazorvergeThicket extends CardImpl {
+public final class RazorvergeThicket extends CardImpl {
public RazorvergeThicket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/r/ReachOfBranches.java b/Mage.Sets/src/mage/cards/r/ReachOfBranches.java
index 9e6d7292410..77732b85174 100644
--- a/Mage.Sets/src/mage/cards/r/ReachOfBranches.java
+++ b/Mage.Sets/src/mage/cards/r/ReachOfBranches.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.TreefolkShamanToken;
*
* @author LevelX2
*/
-public class ReachOfBranches extends CardImpl {
+public final class ReachOfBranches extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/r/ReachOfShadows.java b/Mage.Sets/src/mage/cards/r/ReachOfShadows.java
index 5b8e26af38d..efecea5adbf 100644
--- a/Mage.Sets/src/mage/cards/r/ReachOfShadows.java
+++ b/Mage.Sets/src/mage/cards/r/ReachOfShadows.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ReachOfShadows extends CardImpl {
+public final class ReachOfShadows extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that's one or more colors");
diff --git a/Mage.Sets/src/mage/cards/r/ReachThroughMists.java b/Mage.Sets/src/mage/cards/r/ReachThroughMists.java
index 750eaa485ab..8f888afb38a 100644
--- a/Mage.Sets/src/mage/cards/r/ReachThroughMists.java
+++ b/Mage.Sets/src/mage/cards/r/ReachThroughMists.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class ReachThroughMists extends CardImpl {
+public final class ReachThroughMists extends CardImpl {
public ReachThroughMists (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReadTheBones.java b/Mage.Sets/src/mage/cards/r/ReadTheBones.java
index dfac56dc176..53392dc4619 100644
--- a/Mage.Sets/src/mage/cards/r/ReadTheBones.java
+++ b/Mage.Sets/src/mage/cards/r/ReadTheBones.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class ReadTheBones extends CardImpl {
+public final class ReadTheBones extends CardImpl {
public ReadTheBones(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/ReadTheRunes.java b/Mage.Sets/src/mage/cards/r/ReadTheRunes.java
index 646c04f665a..b84fc35972f 100644
--- a/Mage.Sets/src/mage/cards/r/ReadTheRunes.java
+++ b/Mage.Sets/src/mage/cards/r/ReadTheRunes.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class ReadTheRunes extends CardImpl {
+public final class ReadTheRunes extends CardImpl {
public ReadTheRunes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReadyWilling.java b/Mage.Sets/src/mage/cards/r/ReadyWilling.java
index 43eb6489fce..2f081ca31a4 100644
--- a/Mage.Sets/src/mage/cards/r/ReadyWilling.java
+++ b/Mage.Sets/src/mage/cards/r/ReadyWilling.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ReadyWilling extends SplitCard {
+public final class ReadyWilling extends SplitCard {
public ReadyWilling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}{W}", "{1}{W}{B}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/r/RealityAcid.java b/Mage.Sets/src/mage/cards/r/RealityAcid.java
index 9ff5b673755..ae3c3c9692a 100644
--- a/Mage.Sets/src/mage/cards/r/RealityAcid.java
+++ b/Mage.Sets/src/mage/cards/r/RealityAcid.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class RealityAcid extends CardImpl {
+public final class RealityAcid extends CardImpl {
public RealityAcid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RealityAnchor.java b/Mage.Sets/src/mage/cards/r/RealityAnchor.java
index 8d82815f857..4ae0295a9f1 100644
--- a/Mage.Sets/src/mage/cards/r/RealityAnchor.java
+++ b/Mage.Sets/src/mage/cards/r/RealityAnchor.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RealityAnchor extends CardImpl {
+public final class RealityAnchor extends CardImpl {
public RealityAnchor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RealityHemorrhage.java b/Mage.Sets/src/mage/cards/r/RealityHemorrhage.java
index f4e52584415..23d32f0466c 100644
--- a/Mage.Sets/src/mage/cards/r/RealityHemorrhage.java
+++ b/Mage.Sets/src/mage/cards/r/RealityHemorrhage.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class RealityHemorrhage extends CardImpl {
+public final class RealityHemorrhage extends CardImpl {
public RealityHemorrhage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RealityRipple.java b/Mage.Sets/src/mage/cards/r/RealityRipple.java
index a778b8af7ed..c36e1b4a41a 100644
--- a/Mage.Sets/src/mage/cards/r/RealityRipple.java
+++ b/Mage.Sets/src/mage/cards/r/RealityRipple.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class RealityRipple extends CardImpl {
+public final class RealityRipple extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/r/RealityShift.java b/Mage.Sets/src/mage/cards/r/RealityShift.java
index fa4ebe432b2..d8742ea278e 100644
--- a/Mage.Sets/src/mage/cards/r/RealityShift.java
+++ b/Mage.Sets/src/mage/cards/r/RealityShift.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class RealityShift extends CardImpl {
+public final class RealityShift extends CardImpl {
public RealityShift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RealitySmasher.java b/Mage.Sets/src/mage/cards/r/RealitySmasher.java
index 4dac350e748..d7b75a00ea3 100644
--- a/Mage.Sets/src/mage/cards/r/RealitySmasher.java
+++ b/Mage.Sets/src/mage/cards/r/RealitySmasher.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class RealitySmasher extends CardImpl {
+public final class RealitySmasher extends CardImpl {
public RealitySmasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{C}");
diff --git a/Mage.Sets/src/mage/cards/r/RealitySpasm.java b/Mage.Sets/src/mage/cards/r/RealitySpasm.java
index e7f06a0e7f1..61c8a6912fb 100644
--- a/Mage.Sets/src/mage/cards/r/RealitySpasm.java
+++ b/Mage.Sets/src/mage/cards/r/RealitySpasm.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class RealitySpasm extends CardImpl {
+public final class RealitySpasm extends CardImpl {
public RealitySpasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RealityStrobe.java b/Mage.Sets/src/mage/cards/r/RealityStrobe.java
index 45b2abfe8ab..e0e66433192 100644
--- a/Mage.Sets/src/mage/cards/r/RealityStrobe.java
+++ b/Mage.Sets/src/mage/cards/r/RealityStrobe.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class RealityStrobe extends CardImpl {
+public final class RealityStrobe extends CardImpl {
public RealityStrobe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RealityTwist.java b/Mage.Sets/src/mage/cards/r/RealityTwist.java
index 92aefb5d14c..6f7ddd06d77 100644
--- a/Mage.Sets/src/mage/cards/r/RealityTwist.java
+++ b/Mage.Sets/src/mage/cards/r/RealityTwist.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author emerald000 & L_J
*/
-public class RealityTwist extends CardImpl {
+public final class RealityTwist extends CardImpl {
public RealityTwist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RealmRazer.java b/Mage.Sets/src/mage/cards/r/RealmRazer.java
index f16fd2ed3b6..5d2567a3089 100644
--- a/Mage.Sets/src/mage/cards/r/RealmRazer.java
+++ b/Mage.Sets/src/mage/cards/r/RealmRazer.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class RealmRazer extends CardImpl {
+public final class RealmRazer extends CardImpl {
public RealmRazer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RealmSeekers.java b/Mage.Sets/src/mage/cards/r/RealmSeekers.java
index 10541e48923..e1517f00b42 100644
--- a/Mage.Sets/src/mage/cards/r/RealmSeekers.java
+++ b/Mage.Sets/src/mage/cards/r/RealmSeekers.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class RealmSeekers extends CardImpl {
+public final class RealmSeekers extends CardImpl {
public RealmSeekers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RealmsUncharted.java b/Mage.Sets/src/mage/cards/r/RealmsUncharted.java
index f5c7b2bb228..eee93929e37 100644
--- a/Mage.Sets/src/mage/cards/r/RealmsUncharted.java
+++ b/Mage.Sets/src/mage/cards/r/RealmsUncharted.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author North
*/
-public class RealmsUncharted extends CardImpl {
+public final class RealmsUncharted extends CardImpl {
public RealmsUncharted(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Realmwright.java b/Mage.Sets/src/mage/cards/r/Realmwright.java
index ae20d46c867..861de4a18ea 100644
--- a/Mage.Sets/src/mage/cards/r/Realmwright.java
+++ b/Mage.Sets/src/mage/cards/r/Realmwright.java
@@ -58,7 +58,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class Realmwright extends CardImpl {
+public final class Realmwright extends CardImpl {
public Realmwright(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Reanimate.java b/Mage.Sets/src/mage/cards/r/Reanimate.java
index 0099eb8ece0..6068bdee940 100644
--- a/Mage.Sets/src/mage/cards/r/Reanimate.java
+++ b/Mage.Sets/src/mage/cards/r/Reanimate.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class Reanimate extends CardImpl {
+public final class Reanimate extends CardImpl {
public Reanimate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Reap.java b/Mage.Sets/src/mage/cards/r/Reap.java
index 43f3903dbe0..d644e74c4f2 100644
--- a/Mage.Sets/src/mage/cards/r/Reap.java
+++ b/Mage.Sets/src/mage/cards/r/Reap.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author L_J
*/
-public class Reap extends CardImpl {
+public final class Reap extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("black permanents");
diff --git a/Mage.Sets/src/mage/cards/r/ReapAndSow.java b/Mage.Sets/src/mage/cards/r/ReapAndSow.java
index fbb5bcb7ae1..3b6f317041f 100644
--- a/Mage.Sets/src/mage/cards/r/ReapAndSow.java
+++ b/Mage.Sets/src/mage/cards/r/ReapAndSow.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class ReapAndSow extends CardImpl {
+public final class ReapAndSow extends CardImpl {
public ReapAndSow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/ReapIntellect.java b/Mage.Sets/src/mage/cards/r/ReapIntellect.java
index c8016ecfbf5..af1e0049ddc 100644
--- a/Mage.Sets/src/mage/cards/r/ReapIntellect.java
+++ b/Mage.Sets/src/mage/cards/r/ReapIntellect.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class ReapIntellect extends CardImpl {
+public final class ReapIntellect extends CardImpl {
public ReapIntellect(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/ReapTheSeagraf.java b/Mage.Sets/src/mage/cards/r/ReapTheSeagraf.java
index 06fe2e0b0d5..586735c8a02 100644
--- a/Mage.Sets/src/mage/cards/r/ReapTheSeagraf.java
+++ b/Mage.Sets/src/mage/cards/r/ReapTheSeagraf.java
@@ -13,7 +13,7 @@ import mage.game.permanent.token.ZombieToken;
/**
* @author Loki
*/
-public class ReapTheSeagraf extends CardImpl {
+public final class ReapTheSeagraf extends CardImpl {
public ReapTheSeagraf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/ReapWhatIsSown.java b/Mage.Sets/src/mage/cards/r/ReapWhatIsSown.java
index efeafe51229..d9ebefea755 100644
--- a/Mage.Sets/src/mage/cards/r/ReapWhatIsSown.java
+++ b/Mage.Sets/src/mage/cards/r/ReapWhatIsSown.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ReapWhatIsSown extends CardImpl {
+public final class ReapWhatIsSown extends CardImpl {
public ReapWhatIsSown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReaperFromTheAbyss.java b/Mage.Sets/src/mage/cards/r/ReaperFromTheAbyss.java
index 54b6118712a..61d7db1f939 100644
--- a/Mage.Sets/src/mage/cards/r/ReaperFromTheAbyss.java
+++ b/Mage.Sets/src/mage/cards/r/ReaperFromTheAbyss.java
@@ -53,7 +53,7 @@ import mage.watchers.common.MorbidWatcher;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ReaperFromTheAbyss extends CardImpl {
+public final class ReaperFromTheAbyss extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Demon creature");
diff --git a/Mage.Sets/src/mage/cards/r/ReaperKing.java b/Mage.Sets/src/mage/cards/r/ReaperKing.java
index 8b243a0b19e..44582725826 100644
--- a/Mage.Sets/src/mage/cards/r/ReaperKing.java
+++ b/Mage.Sets/src/mage/cards/r/ReaperKing.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class ReaperKing extends CardImpl {
+public final class ReaperKing extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Scarecrow creatures");
private static final FilterCreaturePermanent filterTrigger = new FilterCreaturePermanent("another Scarecrow");
diff --git a/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java b/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java
index b64a13b1468..19bab403679 100644
--- a/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java
+++ b/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class ReaperOfFlightMoonsilver extends CardImpl {
+public final class ReaperOfFlightMoonsilver extends CardImpl {
public ReaperOfFlightMoonsilver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReaperOfSheoldred.java b/Mage.Sets/src/mage/cards/r/ReaperOfSheoldred.java
index 7f6dd446ccb..3de143ca9f7 100644
--- a/Mage.Sets/src/mage/cards/r/ReaperOfSheoldred.java
+++ b/Mage.Sets/src/mage/cards/r/ReaperOfSheoldred.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class ReaperOfSheoldred extends CardImpl {
+public final class ReaperOfSheoldred extends CardImpl {
public ReaperOfSheoldred(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/ReaperOfTheWilds.java b/Mage.Sets/src/mage/cards/r/ReaperOfTheWilds.java
index 29ae49e9606..9db446209f2 100644
--- a/Mage.Sets/src/mage/cards/r/ReaperOfTheWilds.java
+++ b/Mage.Sets/src/mage/cards/r/ReaperOfTheWilds.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ReaperOfTheWilds extends CardImpl {
+public final class ReaperOfTheWilds extends CardImpl {
public ReaperOfTheWilds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/ReapingTheGraves.java b/Mage.Sets/src/mage/cards/r/ReapingTheGraves.java
index 2b9e1c9c08c..1704ffe9e32 100644
--- a/Mage.Sets/src/mage/cards/r/ReapingTheGraves.java
+++ b/Mage.Sets/src/mage/cards/r/ReapingTheGraves.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class ReapingTheGraves extends CardImpl {
+public final class ReapingTheGraves extends CardImpl {
public ReapingTheGraves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/ReapingTheRewards.java b/Mage.Sets/src/mage/cards/r/ReapingTheRewards.java
index f46924f5b50..202b7dc7219 100644
--- a/Mage.Sets/src/mage/cards/r/ReapingTheRewards.java
+++ b/Mage.Sets/src/mage/cards/r/ReapingTheRewards.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class ReapingTheRewards extends CardImpl {
+public final class ReapingTheRewards extends CardImpl {
public ReapingTheRewards(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReasonBelieve.java b/Mage.Sets/src/mage/cards/r/ReasonBelieve.java
index 9633c0e95c1..81a1a9413f0 100644
--- a/Mage.Sets/src/mage/cards/r/ReasonBelieve.java
+++ b/Mage.Sets/src/mage/cards/r/ReasonBelieve.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ReasonBelieve extends SplitCard {
+public final class ReasonBelieve extends SplitCard {
public ReasonBelieve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{U}", "{4}{G}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/r/ReassemblingSkeleton.java b/Mage.Sets/src/mage/cards/r/ReassemblingSkeleton.java
index 01f29f13f68..029fb38d1f9 100644
--- a/Mage.Sets/src/mage/cards/r/ReassemblingSkeleton.java
+++ b/Mage.Sets/src/mage/cards/r/ReassemblingSkeleton.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ReassemblingSkeleton extends CardImpl {
+public final class ReassemblingSkeleton extends CardImpl {
public ReassemblingSkeleton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/ReaveSoul.java b/Mage.Sets/src/mage/cards/r/ReaveSoul.java
index feb5c57620d..f64019ffd13 100644
--- a/Mage.Sets/src/mage/cards/r/ReaveSoul.java
+++ b/Mage.Sets/src/mage/cards/r/ReaveSoul.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ReaveSoul extends CardImpl {
+public final class ReaveSoul extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 3 or less");
diff --git a/Mage.Sets/src/mage/cards/r/ReaverAmbush.java b/Mage.Sets/src/mage/cards/r/ReaverAmbush.java
index be1174f07b0..6d95d7faf28 100644
--- a/Mage.Sets/src/mage/cards/r/ReaverAmbush.java
+++ b/Mage.Sets/src/mage/cards/r/ReaverAmbush.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class ReaverAmbush extends CardImpl {
+public final class ReaverAmbush extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 3 or less");
diff --git a/Mage.Sets/src/mage/cards/r/ReaverDrone.java b/Mage.Sets/src/mage/cards/r/ReaverDrone.java
index 2c66e84bb0c..a6a8e21f77e 100644
--- a/Mage.Sets/src/mage/cards/r/ReaverDrone.java
+++ b/Mage.Sets/src/mage/cards/r/ReaverDrone.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class ReaverDrone extends CardImpl {
+public final class ReaverDrone extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another colorless creature");
diff --git a/Mage.Sets/src/mage/cards/r/RebelInformer.java b/Mage.Sets/src/mage/cards/r/RebelInformer.java
index 13937fd6949..dac93343b8a 100644
--- a/Mage.Sets/src/mage/cards/r/RebelInformer.java
+++ b/Mage.Sets/src/mage/cards/r/RebelInformer.java
@@ -55,7 +55,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class RebelInformer extends CardImpl {
+public final class RebelInformer extends CardImpl {
private static final FilterObject filterWhite = new FilterStackObject("white spells or abilities from white sources");
private static final FilterPermanent filterRebel = new FilterPermanent("nontoken Rebel");
diff --git a/Mage.Sets/src/mage/cards/r/RebellionOfTheFlamekin.java b/Mage.Sets/src/mage/cards/r/RebellionOfTheFlamekin.java
index b67a8b677a4..302fe844596 100644
--- a/Mage.Sets/src/mage/cards/r/RebellionOfTheFlamekin.java
+++ b/Mage.Sets/src/mage/cards/r/RebellionOfTheFlamekin.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class RebellionOfTheFlamekin extends CardImpl {
+public final class RebellionOfTheFlamekin extends CardImpl {
public RebellionOfTheFlamekin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RebornHero.java b/Mage.Sets/src/mage/cards/r/RebornHero.java
index 36bbc8221fa..3240d89db8b 100644
--- a/Mage.Sets/src/mage/cards/r/RebornHero.java
+++ b/Mage.Sets/src/mage/cards/r/RebornHero.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class RebornHero extends CardImpl {
+public final class RebornHero extends CardImpl {
public RebornHero(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RebornHope.java b/Mage.Sets/src/mage/cards/r/RebornHope.java
index 73d1917284e..d9467df3d34 100644
--- a/Mage.Sets/src/mage/cards/r/RebornHope.java
+++ b/Mage.Sets/src/mage/cards/r/RebornHope.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jeffwadsworth
*/
-public class RebornHope extends CardImpl {
+public final class RebornHope extends CardImpl {
private static final FilterCard filter = new FilterCard("multicolored card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/r/RebuffTheWicked.java b/Mage.Sets/src/mage/cards/r/RebuffTheWicked.java
index 19fde5357bf..fdc74fded35 100644
--- a/Mage.Sets/src/mage/cards/r/RebuffTheWicked.java
+++ b/Mage.Sets/src/mage/cards/r/RebuffTheWicked.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class RebuffTheWicked extends CardImpl {
+public final class RebuffTheWicked extends CardImpl {
private final static FilterSpell filter = new FilterSpell("spell that targets a permanent you control");
diff --git a/Mage.Sets/src/mage/cards/r/Rebuild.java b/Mage.Sets/src/mage/cards/r/Rebuild.java
index 84baedff2ae..d901f48b9db 100644
--- a/Mage.Sets/src/mage/cards/r/Rebuild.java
+++ b/Mage.Sets/src/mage/cards/r/Rebuild.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author Plopman
*/
-public class Rebuild extends CardImpl {
+public final class Rebuild extends CardImpl {
public Rebuild(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Rebuke.java b/Mage.Sets/src/mage/cards/r/Rebuke.java
index b2cde69a3c0..ab34b1beb6e 100644
--- a/Mage.Sets/src/mage/cards/r/Rebuke.java
+++ b/Mage.Sets/src/mage/cards/r/Rebuke.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class Rebuke extends CardImpl {
+public final class Rebuke extends CardImpl {
public Rebuke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RebukingCeremony.java b/Mage.Sets/src/mage/cards/r/RebukingCeremony.java
index 540b5172829..e636d85dadc 100644
--- a/Mage.Sets/src/mage/cards/r/RebukingCeremony.java
+++ b/Mage.Sets/src/mage/cards/r/RebukingCeremony.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author wetterlicht
*/
-public class RebukingCeremony extends CardImpl {
+public final class RebukingCeremony extends CardImpl {
public RebukingCeremony(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Recall.java b/Mage.Sets/src/mage/cards/r/Recall.java
index 47b9a777aa9..c92ada7c9f6 100644
--- a/Mage.Sets/src/mage/cards/r/Recall.java
+++ b/Mage.Sets/src/mage/cards/r/Recall.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Quercitron
*/
-public class Recall extends CardImpl {
+public final class Recall extends CardImpl {
public Recall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Recantation.java b/Mage.Sets/src/mage/cards/r/Recantation.java
index 209601c92da..6d343f692c5 100644
--- a/Mage.Sets/src/mage/cards/r/Recantation.java
+++ b/Mage.Sets/src/mage/cards/r/Recantation.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class Recantation extends CardImpl {
+public final class Recantation extends CardImpl {
public Recantation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Reciprocate.java b/Mage.Sets/src/mage/cards/r/Reciprocate.java
index e527ec46dbe..16745ce678f 100644
--- a/Mage.Sets/src/mage/cards/r/Reciprocate.java
+++ b/Mage.Sets/src/mage/cards/r/Reciprocate.java
@@ -45,7 +45,7 @@ import mage.watchers.common.PlayerDamagedBySourceWatcher;
/**
* @author LevelX2
*/
-public class Reciprocate extends CardImpl {
+public final class Reciprocate extends CardImpl {
public Reciprocate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessAbandon.java b/Mage.Sets/src/mage/cards/r/RecklessAbandon.java
index 79095c7c5dd..1f9e459090e 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessAbandon.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessAbandon.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class RecklessAbandon extends CardImpl {
+public final class RecklessAbandon extends CardImpl {
public RecklessAbandon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessAssault.java b/Mage.Sets/src/mage/cards/r/RecklessAssault.java
index 77338105caf..46bc9435551 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessAssault.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessAssault.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*/
-public class RecklessAssault extends CardImpl {
+public final class RecklessAssault extends CardImpl {
public RecklessAssault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessBrute.java b/Mage.Sets/src/mage/cards/r/RecklessBrute.java
index 3a5e3ddbb4d..bf45aad1405 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessBrute.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessBrute.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RecklessBrute extends CardImpl {
+public final class RecklessBrute extends CardImpl {
public RecklessBrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessBushwhacker.java b/Mage.Sets/src/mage/cards/r/RecklessBushwhacker.java
index 85caed6e8a1..129606997e6 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessBushwhacker.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessBushwhacker.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class RecklessBushwhacker extends CardImpl {
+public final class RecklessBushwhacker extends CardImpl {
private final static FilterControlledCreaturePermanent FILTER = new FilterControlledCreaturePermanent("other creatures you control");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessCharge.java b/Mage.Sets/src/mage/cards/r/RecklessCharge.java
index 2e5cb80fa51..f59a0e05320 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessCharge.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessCharge.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class RecklessCharge extends CardImpl {
+public final class RecklessCharge extends CardImpl {
public RecklessCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessCohort.java b/Mage.Sets/src/mage/cards/r/RecklessCohort.java
index 3bb45602f94..8c16ed456bf 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessCohort.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessCohort.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class RecklessCohort extends CardImpl {
+public final class RecklessCohort extends CardImpl {
private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Ally");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessEmbermage.java b/Mage.Sets/src/mage/cards/r/RecklessEmbermage.java
index 7337204d566..8757f413419 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessEmbermage.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessEmbermage.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Quercitron
*/
-public class RecklessEmbermage extends CardImpl {
+public final class RecklessEmbermage extends CardImpl {
public RecklessEmbermage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessFireweaver.java b/Mage.Sets/src/mage/cards/r/RecklessFireweaver.java
index 16756b9cc38..3e9a4df7d96 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessFireweaver.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessFireweaver.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author fireshoes
*/
-public class RecklessFireweaver extends CardImpl {
+public final class RecklessFireweaver extends CardImpl {
public RecklessFireweaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessImp.java b/Mage.Sets/src/mage/cards/r/RecklessImp.java
index 4f1b436c08e..e6a62f1b5ab 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessImp.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessImp.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RecklessImp extends CardImpl {
+public final class RecklessImp extends CardImpl {
public RecklessImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessOgre.java b/Mage.Sets/src/mage/cards/r/RecklessOgre.java
index 59d93a7e8c0..a5d1f013b43 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessOgre.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessOgre.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class RecklessOgre extends CardImpl {
+public final class RecklessOgre extends CardImpl {
public RecklessOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessOne.java b/Mage.Sets/src/mage/cards/r/RecklessOne.java
index c780944074a..49a0e855575 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessOne.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessOne.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class RecklessOne extends CardImpl {
+public final class RecklessOne extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Goblins on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessRacer.java b/Mage.Sets/src/mage/cards/r/RecklessRacer.java
index 70dea0f3ad4..b6d0ec77eb2 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessRacer.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessRacer.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class RecklessRacer extends CardImpl {
+public final class RecklessRacer extends CardImpl {
public RecklessRacer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessRage.java b/Mage.Sets/src/mage/cards/r/RecklessRage.java
index 23e9d394e49..5b8bd57a0e7 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessRage.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessRage.java
@@ -41,7 +41,7 @@ import mage.target.targetpointer.SecondTargetPointer;
/**
* @author JayDi85
*/
-public class RecklessRage extends CardImpl {
+public final class RecklessRage extends CardImpl {
public RecklessRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessReveler.java b/Mage.Sets/src/mage/cards/r/RecklessReveler.java
index ccdf72a987c..2c0c1730611 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessReveler.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessReveler.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class RecklessReveler extends CardImpl {
+public final class RecklessReveler extends CardImpl {
public RecklessReveler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessScholar.java b/Mage.Sets/src/mage/cards/r/RecklessScholar.java
index 69ed4bd7b7f..6b2cb15c82d 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessScholar.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessScholar.java
@@ -32,8 +32,7 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.effects.common.DrawCardTargetEffect;
-import mage.abilities.effects.common.discard.DiscardTargetEffect;
+import mage.abilities.effects.common.DrawDiscardTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -45,18 +44,18 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class RecklessScholar extends CardImpl {
+public final class RecklessScholar extends CardImpl {
public RecklessScholar(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WIZARD);
this.power = new MageInt(2);
this.toughness = new MageInt(1);
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardTargetEffect(1), new TapSourceCost());
- ability.addEffect(new DiscardTargetEffect(1));
+ // {T}: Target player draws a card, then discards a card.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawDiscardTargetEffect(1, 1), new TapSourceCost());
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/r/RecklessSpite.java b/Mage.Sets/src/mage/cards/r/RecklessSpite.java
index 040b7de8489..e11276373f3 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessSpite.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessSpite.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class RecklessSpite extends CardImpl {
+public final class RecklessSpite extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessWaif.java b/Mage.Sets/src/mage/cards/r/RecklessWaif.java
index c7180d7a4dd..fe4218ecb3a 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessWaif.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessWaif.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class RecklessWaif extends CardImpl {
+public final class RecklessWaif extends CardImpl {
public RecklessWaif(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessWurm.java b/Mage.Sets/src/mage/cards/r/RecklessWurm.java
index c9975c8e9b3..324e8111b07 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessWurm.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessWurm.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author magenoxx_at_gmail.com
*/
-public class RecklessWurm extends CardImpl {
+public final class RecklessWurm extends CardImpl {
public RecklessWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Reclaim.java b/Mage.Sets/src/mage/cards/r/Reclaim.java
index b0a01f12276..34e3ff6217a 100644
--- a/Mage.Sets/src/mage/cards/r/Reclaim.java
+++ b/Mage.Sets/src/mage/cards/r/Reclaim.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author Loki
*/
-public class Reclaim extends CardImpl {
+public final class Reclaim extends CardImpl {
public Reclaim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/r/ReclaimingVines.java b/Mage.Sets/src/mage/cards/r/ReclaimingVines.java
index 1c5f7c51f2e..8691cd61399 100644
--- a/Mage.Sets/src/mage/cards/r/ReclaimingVines.java
+++ b/Mage.Sets/src/mage/cards/r/ReclaimingVines.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class ReclaimingVines extends CardImpl {
+public final class ReclaimingVines extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, enchantment, or land");
diff --git a/Mage.Sets/src/mage/cards/r/Reclamation.java b/Mage.Sets/src/mage/cards/r/Reclamation.java
index 810dd67431e..21a5dece6a2 100644
--- a/Mage.Sets/src/mage/cards/r/Reclamation.java
+++ b/Mage.Sets/src/mage/cards/r/Reclamation.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class Reclamation extends CardImpl {
+public final class Reclamation extends CardImpl {
public Reclamation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReclamationSage.java b/Mage.Sets/src/mage/cards/r/ReclamationSage.java
index b84139455b4..2b57a9b405b 100644
--- a/Mage.Sets/src/mage/cards/r/ReclamationSage.java
+++ b/Mage.Sets/src/mage/cards/r/ReclamationSage.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class ReclamationSage extends CardImpl {
+public final class ReclamationSage extends CardImpl {
public ReclamationSage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/ReclusiveArtificer.java b/Mage.Sets/src/mage/cards/r/ReclusiveArtificer.java
index 91bfe219e43..544646c5e5f 100644
--- a/Mage.Sets/src/mage/cards/r/ReclusiveArtificer.java
+++ b/Mage.Sets/src/mage/cards/r/ReclusiveArtificer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ReclusiveArtificer extends CardImpl {
+public final class ReclusiveArtificer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifacts you control");
diff --git a/Mage.Sets/src/mage/cards/r/ReclusiveWight.java b/Mage.Sets/src/mage/cards/r/ReclusiveWight.java
index 3ed51e01921..039b57a3179 100644
--- a/Mage.Sets/src/mage/cards/r/ReclusiveWight.java
+++ b/Mage.Sets/src/mage/cards/r/ReclusiveWight.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author TheElk801
*/
-public class ReclusiveWight extends CardImpl {
+public final class ReclusiveWight extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another nonland permanent");
diff --git a/Mage.Sets/src/mage/cards/r/Recoil.java b/Mage.Sets/src/mage/cards/r/Recoil.java
index 8c92624416b..4aec6e13740 100644
--- a/Mage.Sets/src/mage/cards/r/Recoil.java
+++ b/Mage.Sets/src/mage/cards/r/Recoil.java
@@ -44,10 +44,10 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class Recoil extends CardImpl {
+public final class Recoil extends CardImpl {
public Recoil(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}{B}");
// Return target permanent to its owner's hand. Then that player discards a card.
this.getSpellAbility().addEffect(new RecoilEffect());
@@ -84,8 +84,11 @@ class RecoilEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Permanent target = game.getPermanent(source.getFirstTarget());
+ if (target == null) {
+ return false;
+ }
Player controller = game.getPlayer(target.getControllerId());
- if (target != null && controller != null) {
+ if (controller != null) {
controller.moveCards(target, Zone.HAND, source, game);
controller.discard(1, false, source, game);
return true;
diff --git a/Mage.Sets/src/mage/cards/r/Recollect.java b/Mage.Sets/src/mage/cards/r/Recollect.java
index ede044da248..8546f1b5228 100644
--- a/Mage.Sets/src/mage/cards/r/Recollect.java
+++ b/Mage.Sets/src/mage/cards/r/Recollect.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class Recollect extends CardImpl {
+public final class Recollect extends CardImpl {
public Recollect(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Reconnaissance.java b/Mage.Sets/src/mage/cards/r/Reconnaissance.java
index 1f9bceea81c..a04589720ae 100644
--- a/Mage.Sets/src/mage/cards/r/Reconnaissance.java
+++ b/Mage.Sets/src/mage/cards/r/Reconnaissance.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author spjspj
*/
-public class Reconnaissance extends CardImpl {
+public final class Reconnaissance extends CardImpl {
private static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("attacking creature controlled by you");
diff --git a/Mage.Sets/src/mage/cards/r/Reconstruction.java b/Mage.Sets/src/mage/cards/r/Reconstruction.java
index 37e33aabf59..fb92849e185 100644
--- a/Mage.Sets/src/mage/cards/r/Reconstruction.java
+++ b/Mage.Sets/src/mage/cards/r/Reconstruction.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class Reconstruction extends CardImpl {
+public final class Reconstruction extends CardImpl {
public Reconstruction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Recoup.java b/Mage.Sets/src/mage/cards/r/Recoup.java
index eb6b6c929db..6ef308d4e68 100644
--- a/Mage.Sets/src/mage/cards/r/Recoup.java
+++ b/Mage.Sets/src/mage/cards/r/Recoup.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author cbt33, BetaSteward (PastInFlames)
*/
-public class Recoup extends CardImpl {
+public final class Recoup extends CardImpl {
private static final FilterCard filter = new FilterCard("sorcery card");
diff --git a/Mage.Sets/src/mage/cards/r/Recover.java b/Mage.Sets/src/mage/cards/r/Recover.java
index 52f32994003..335c424d3cf 100644
--- a/Mage.Sets/src/mage/cards/r/Recover.java
+++ b/Mage.Sets/src/mage/cards/r/Recover.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author dustinconrad
*/
-public class Recover extends CardImpl {
+public final class Recover extends CardImpl {
public Recover(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RecrossThePaths.java b/Mage.Sets/src/mage/cards/r/RecrossThePaths.java
index 1f9e7230520..b0ce860bea6 100644
--- a/Mage.Sets/src/mage/cards/r/RecrossThePaths.java
+++ b/Mage.Sets/src/mage/cards/r/RecrossThePaths.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterLandCard;
*
* @author LevelX2
*/
-public class RecrossThePaths extends CardImpl {
+public final class RecrossThePaths extends CardImpl {
public RecrossThePaths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RecruiterOfTheGuard.java b/Mage.Sets/src/mage/cards/r/RecruiterOfTheGuard.java
index f4d9f622198..54ee18a6dc1 100644
--- a/Mage.Sets/src/mage/cards/r/RecruiterOfTheGuard.java
+++ b/Mage.Sets/src/mage/cards/r/RecruiterOfTheGuard.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class RecruiterOfTheGuard extends CardImpl {
+public final class RecruiterOfTheGuard extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a creature card with toughness 2 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RecumbentBliss.java b/Mage.Sets/src/mage/cards/r/RecumbentBliss.java
index 3717c467812..2c11a9f5316 100644
--- a/Mage.Sets/src/mage/cards/r/RecumbentBliss.java
+++ b/Mage.Sets/src/mage/cards/r/RecumbentBliss.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class RecumbentBliss extends CardImpl {
+public final class RecumbentBliss extends CardImpl {
public RecumbentBliss(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Recuperate.java b/Mage.Sets/src/mage/cards/r/Recuperate.java
index 7d0c69e8749..5c4bef6101f 100644
--- a/Mage.Sets/src/mage/cards/r/Recuperate.java
+++ b/Mage.Sets/src/mage/cards/r/Recuperate.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
* @author DimitarK
*/
-public class Recuperate extends CardImpl {
+public final class Recuperate extends CardImpl {
public Recuperate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RecurringInsight.java b/Mage.Sets/src/mage/cards/r/RecurringInsight.java
index 1b0eef41b8b..9a5daf239a2 100644
--- a/Mage.Sets/src/mage/cards/r/RecurringInsight.java
+++ b/Mage.Sets/src/mage/cards/r/RecurringInsight.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author jeffwadsworth
*/
-public class RecurringInsight extends CardImpl {
+public final class RecurringInsight extends CardImpl {
public RecurringInsight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RecurringNightmare.java b/Mage.Sets/src/mage/cards/r/RecurringNightmare.java
index dbeeade31f4..f7148d0052c 100644
--- a/Mage.Sets/src/mage/cards/r/RecurringNightmare.java
+++ b/Mage.Sets/src/mage/cards/r/RecurringNightmare.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class RecurringNightmare extends CardImpl {
+public final class RecurringNightmare extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("creature");
diff --git a/Mage.Sets/src/mage/cards/r/Recycle.java b/Mage.Sets/src/mage/cards/r/Recycle.java
index 16efc13b41a..163296a8399 100644
--- a/Mage.Sets/src/mage/cards/r/Recycle.java
+++ b/Mage.Sets/src/mage/cards/r/Recycle.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author emerald000
*/
-public class Recycle extends CardImpl {
+public final class Recycle extends CardImpl {
public Recycle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RedCliffsArmada.java b/Mage.Sets/src/mage/cards/r/RedCliffsArmada.java
index 4282afcb564..07c91b9377a 100644
--- a/Mage.Sets/src/mage/cards/r/RedCliffsArmada.java
+++ b/Mage.Sets/src/mage/cards/r/RedCliffsArmada.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class RedCliffsArmada extends CardImpl {
+public final class RedCliffsArmada extends CardImpl {
public RedCliffsArmada(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RedElementalBlast.java b/Mage.Sets/src/mage/cards/r/RedElementalBlast.java
index 5fe29a2e673..89b4d6bb4be 100644
--- a/Mage.Sets/src/mage/cards/r/RedElementalBlast.java
+++ b/Mage.Sets/src/mage/cards/r/RedElementalBlast.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author Plopman
*/
-public class RedElementalBlast extends CardImpl {
+public final class RedElementalBlast extends CardImpl {
private static final FilterPermanent filterPermanent = new FilterPermanent("blue permanent");
private static final FilterSpell filterSpell = new FilterSpell("blue spell");
diff --git a/Mage.Sets/src/mage/cards/r/RedManaBattery.java b/Mage.Sets/src/mage/cards/r/RedManaBattery.java
index b4eb90b2a9f..89b464019ce 100644
--- a/Mage.Sets/src/mage/cards/r/RedManaBattery.java
+++ b/Mage.Sets/src/mage/cards/r/RedManaBattery.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class RedManaBattery extends CardImpl {
+public final class RedManaBattery extends CardImpl {
public RedManaBattery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/r/RedScarab.java b/Mage.Sets/src/mage/cards/r/RedScarab.java
index 2ccc5a8867a..00a0a7b5337 100644
--- a/Mage.Sets/src/mage/cards/r/RedScarab.java
+++ b/Mage.Sets/src/mage/cards/r/RedScarab.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Zeplar1_at_googlemail.com
*/
-public class RedScarab extends CardImpl {
+public final class RedScarab extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red creatures");
private static final FilterPermanent filter2 = new FilterPermanent("red permanent");
diff --git a/Mage.Sets/src/mage/cards/r/RedSunsZenith.java b/Mage.Sets/src/mage/cards/r/RedSunsZenith.java
index 67d1fc0fdd5..d7c6949db7b 100644
--- a/Mage.Sets/src/mage/cards/r/RedSunsZenith.java
+++ b/Mage.Sets/src/mage/cards/r/RedSunsZenith.java
@@ -43,7 +43,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RedSunsZenith extends CardImpl {
+public final class RedSunsZenith extends CardImpl {
public RedSunsZenith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RedWard.java b/Mage.Sets/src/mage/cards/r/RedWard.java
index 7d531775edb..bf2fc67685d 100644
--- a/Mage.Sets/src/mage/cards/r/RedWard.java
+++ b/Mage.Sets/src/mage/cards/r/RedWard.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class RedWard extends CardImpl {
+public final class RedWard extends CardImpl {
private static final FilterCard filter = new FilterCard("red");
diff --git a/Mage.Sets/src/mage/cards/r/Redeem.java b/Mage.Sets/src/mage/cards/r/Redeem.java
index 452d3181d88..8ba55584289 100644
--- a/Mage.Sets/src/mage/cards/r/Redeem.java
+++ b/Mage.Sets/src/mage/cards/r/Redeem.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class Redeem extends CardImpl {
+public final class Redeem extends CardImpl {
public Redeem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RedeemTheLost.java b/Mage.Sets/src/mage/cards/r/RedeemTheLost.java
index 3bd25e4fd7b..8270a0ad855 100644
--- a/Mage.Sets/src/mage/cards/r/RedeemTheLost.java
+++ b/Mage.Sets/src/mage/cards/r/RedeemTheLost.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class RedeemTheLost extends CardImpl {
+public final class RedeemTheLost extends CardImpl {
public RedeemTheLost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Redirect.java b/Mage.Sets/src/mage/cards/r/Redirect.java
index 53d9bd206c0..970cb21d641 100644
--- a/Mage.Sets/src/mage/cards/r/Redirect.java
+++ b/Mage.Sets/src/mage/cards/r/Redirect.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Redirect extends CardImpl {
+public final class Redirect extends CardImpl {
public Redirect(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReduceInStature.java b/Mage.Sets/src/mage/cards/r/ReduceInStature.java
index eb91f77d36f..b8dabf7cfe7 100644
--- a/Mage.Sets/src/mage/cards/r/ReduceInStature.java
+++ b/Mage.Sets/src/mage/cards/r/ReduceInStature.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ReduceInStature extends CardImpl {
+public final class ReduceInStature extends CardImpl {
public ReduceInStature(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReduceRubble.java b/Mage.Sets/src/mage/cards/r/ReduceRubble.java
index f415afa07ea..6255f6dcb1c 100644
--- a/Mage.Sets/src/mage/cards/r/ReduceRubble.java
+++ b/Mage.Sets/src/mage/cards/r/ReduceRubble.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class ReduceRubble extends SplitCard {
+public final class ReduceRubble extends SplitCard {
public ReduceRubble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{2}{U}", "{2}{R}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/r/ReduceToAshes.java b/Mage.Sets/src/mage/cards/r/ReduceToAshes.java
index 663a87f487b..c5af8ff3059 100644
--- a/Mage.Sets/src/mage/cards/r/ReduceToAshes.java
+++ b/Mage.Sets/src/mage/cards/r/ReduceToAshes.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ReduceToAshes extends CardImpl {
+public final class ReduceToAshes extends CardImpl {
public ReduceToAshes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/ReduceToDreams.java b/Mage.Sets/src/mage/cards/r/ReduceToDreams.java
index 077e042ccbe..3fe13580b17 100644
--- a/Mage.Sets/src/mage/cards/r/ReduceToDreams.java
+++ b/Mage.Sets/src/mage/cards/r/ReduceToDreams.java
@@ -39,7 +39,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class ReduceToDreams extends CardImpl {
+public final class ReduceToDreams extends CardImpl {
public ReduceToDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RedwoodTreefolk.java b/Mage.Sets/src/mage/cards/r/RedwoodTreefolk.java
index 7c6513e644f..13d917a9b76 100644
--- a/Mage.Sets/src/mage/cards/r/RedwoodTreefolk.java
+++ b/Mage.Sets/src/mage/cards/r/RedwoodTreefolk.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author noxx
*/
-public class RedwoodTreefolk extends CardImpl {
+public final class RedwoodTreefolk extends CardImpl {
public RedwoodTreefolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/ReefPirates.java b/Mage.Sets/src/mage/cards/r/ReefPirates.java
index 9b8da8a7606..4ad63f870c9 100644
--- a/Mage.Sets/src/mage/cards/r/ReefPirates.java
+++ b/Mage.Sets/src/mage/cards/r/ReefPirates.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ReefPirates extends CardImpl {
+public final class ReefPirates extends CardImpl {
public ReefPirates(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReefShaman.java b/Mage.Sets/src/mage/cards/r/ReefShaman.java
index 28988753dd2..554808514ba 100644
--- a/Mage.Sets/src/mage/cards/r/ReefShaman.java
+++ b/Mage.Sets/src/mage/cards/r/ReefShaman.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class ReefShaman extends CardImpl {
+public final class ReefShaman extends CardImpl {
public ReefShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReefWorm.java b/Mage.Sets/src/mage/cards/r/ReefWorm.java
index efe06d3d60c..5eb958772c7 100644
--- a/Mage.Sets/src/mage/cards/r/ReefWorm.java
+++ b/Mage.Sets/src/mage/cards/r/ReefWorm.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ReefWormFishToken;
*
* @author LevelX2
*/
-public class ReefWorm extends CardImpl {
+public final class ReefWorm extends CardImpl {
public ReefWorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReflectingPool.java b/Mage.Sets/src/mage/cards/r/ReflectingPool.java
index 4d72918dd62..98516470462 100644
--- a/Mage.Sets/src/mage/cards/r/ReflectingPool.java
+++ b/Mage.Sets/src/mage/cards/r/ReflectingPool.java
@@ -38,7 +38,7 @@ import mage.constants.TargetController;
*
* @author jeffwadsworth
*/
-public class ReflectingPool extends CardImpl {
+public final class ReflectingPool extends CardImpl {
public ReflectingPool(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/r/ReflectorMage.java b/Mage.Sets/src/mage/cards/r/ReflectorMage.java
index 1eadff80176..384e7875c85 100644
--- a/Mage.Sets/src/mage/cards/r/ReflectorMage.java
+++ b/Mage.Sets/src/mage/cards/r/ReflectorMage.java
@@ -38,10 +38,9 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
-import mage.constants.PhaseStep;
+import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
@@ -50,7 +49,6 @@ import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.game.stack.Spell;
-import mage.game.turn.Step;
import mage.players.Player;
import mage.target.common.TargetCreaturePermanent;
@@ -58,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ReflectorMage extends CardImpl {
+public final class ReflectorMage extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
@@ -67,7 +65,7 @@ public class ReflectorMage extends CardImpl {
}
public ReflectorMage(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WIZARD);
this.power = new MageInt(2);
@@ -128,7 +126,7 @@ class ExclusionRitualReplacementEffect extends ContinuousRuleModifyingEffectImpl
private final UUID ownerId;
ExclusionRitualReplacementEffect(String creatureName, UUID ownerId) {
- super(Duration.Custom, Outcome.Detriment);
+ super(Duration.UntilYourNextTurn, Outcome.Detriment);
staticText = "That creature's owner can't cast spells with the same name as that creature until your next turn";
this.creatureName = creatureName;
this.ownerId = ownerId;
@@ -158,16 +156,6 @@ class ExclusionRitualReplacementEffect extends ContinuousRuleModifyingEffectImpl
return false;
}
- @Override
- public boolean isInactive(Ability source, Game game) {
- if (game.getPhase().getStep().getType() == PhaseStep.UNTAP && game.getStep().getStepPart() == Step.StepPart.PRE) {
- if (game.getActivePlayerId().equals(source.getControllerId()) || game.getPlayer(source.getControllerId()).hasReachedNextTurnAfterLeaving()) {
- return true;
- }
- }
- return false;
- }
-
@Override
public boolean apply(Game game, Ability source) {
return false;
diff --git a/Mage.Sets/src/mage/cards/r/ReflexSliver.java b/Mage.Sets/src/mage/cards/r/ReflexSliver.java
index c67d54c7a5e..c261388d80c 100644
--- a/Mage.Sets/src/mage/cards/r/ReflexSliver.java
+++ b/Mage.Sets/src/mage/cards/r/ReflexSliver.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author KholdFuzion
*/
-public class ReflexSliver extends CardImpl {
+public final class ReflexSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/r/Reflexes.java b/Mage.Sets/src/mage/cards/r/Reflexes.java
index 219dfab44dc..c0ae2727d2b 100644
--- a/Mage.Sets/src/mage/cards/r/Reflexes.java
+++ b/Mage.Sets/src/mage/cards/r/Reflexes.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Reflexes extends CardImpl {
+public final class Reflexes extends CardImpl {
public Reflexes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Refocus.java b/Mage.Sets/src/mage/cards/r/Refocus.java
index c4a37f77a48..3d5581a8231 100644
--- a/Mage.Sets/src/mage/cards/r/Refocus.java
+++ b/Mage.Sets/src/mage/cards/r/Refocus.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Refocus extends CardImpl {
+public final class Refocus extends CardImpl {
public Refocus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReforgeTheSoul.java b/Mage.Sets/src/mage/cards/r/ReforgeTheSoul.java
index 6f07a16de68..10ad6597a13 100644
--- a/Mage.Sets/src/mage/cards/r/ReforgeTheSoul.java
+++ b/Mage.Sets/src/mage/cards/r/ReforgeTheSoul.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class ReforgeTheSoul extends CardImpl {
+public final class ReforgeTheSoul extends CardImpl {
public ReforgeTheSoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RefractionTrap.java b/Mage.Sets/src/mage/cards/r/RefractionTrap.java
index 3dcfdb627b8..e4dd405f33d 100644
--- a/Mage.Sets/src/mage/cards/r/RefractionTrap.java
+++ b/Mage.Sets/src/mage/cards/r/RefractionTrap.java
@@ -56,7 +56,7 @@ import java.util.UUID;
/**
* @author jeffwadsworth
*/
-public class RefractionTrap extends CardImpl {
+public final class RefractionTrap extends CardImpl {
public RefractionTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Refresh.java b/Mage.Sets/src/mage/cards/r/Refresh.java
index 2bc0105cafd..8e49e6cc0a0 100644
--- a/Mage.Sets/src/mage/cards/r/Refresh.java
+++ b/Mage.Sets/src/mage/cards/r/Refresh.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class Refresh extends CardImpl {
+public final class Refresh extends CardImpl {
public Refresh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RefreshingRain.java b/Mage.Sets/src/mage/cards/r/RefreshingRain.java
index 29f81d94a52..7b6fd585f29 100644
--- a/Mage.Sets/src/mage/cards/r/RefreshingRain.java
+++ b/Mage.Sets/src/mage/cards/r/RefreshingRain.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class RefreshingRain extends CardImpl {
+public final class RefreshingRain extends CardImpl {
private static final FilterPermanent filterForest = new FilterPermanent();
private static final FilterPermanent filterSwamp = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/r/Refurbish.java b/Mage.Sets/src/mage/cards/r/Refurbish.java
index 74af179bc47..6a954b43281 100644
--- a/Mage.Sets/src/mage/cards/r/Refurbish.java
+++ b/Mage.Sets/src/mage/cards/r/Refurbish.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class Refurbish extends CardImpl {
+public final class Refurbish extends CardImpl {
public Refurbish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RefuseCooperate.java b/Mage.Sets/src/mage/cards/r/RefuseCooperate.java
index 6abbfc57815..80426995df1 100644
--- a/Mage.Sets/src/mage/cards/r/RefuseCooperate.java
+++ b/Mage.Sets/src/mage/cards/r/RefuseCooperate.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class RefuseCooperate extends SplitCard {
+public final class RefuseCooperate extends SplitCard {
public RefuseCooperate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.INSTANT}, "{3}{R}", "{2}{U}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/r/RegalBehemoth.java b/Mage.Sets/src/mage/cards/r/RegalBehemoth.java
index a98335138b3..a01a3367a09 100644
--- a/Mage.Sets/src/mage/cards/r/RegalBehemoth.java
+++ b/Mage.Sets/src/mage/cards/r/RegalBehemoth.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class RegalBehemoth extends CardImpl {
+public final class RegalBehemoth extends CardImpl {
public RegalBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RegalCaracal.java b/Mage.Sets/src/mage/cards/r/RegalCaracal.java
index 17e198cd043..1e2b41d81a3 100644
--- a/Mage.Sets/src/mage/cards/r/RegalCaracal.java
+++ b/Mage.Sets/src/mage/cards/r/RegalCaracal.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.CatToken2;
*
* @author fireshoes
*/
-public class RegalCaracal extends CardImpl {
+public final class RegalCaracal extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Cats");
diff --git a/Mage.Sets/src/mage/cards/r/RegalForce.java b/Mage.Sets/src/mage/cards/r/RegalForce.java
index 1f84845beda..cd8bd9d0aa2 100644
--- a/Mage.Sets/src/mage/cards/r/RegalForce.java
+++ b/Mage.Sets/src/mage/cards/r/RegalForce.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jonubuu
*/
-public class RegalForce extends CardImpl {
+public final class RegalForce extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("green creature you control");
diff --git a/Mage.Sets/src/mage/cards/r/RegalUnicorn.java b/Mage.Sets/src/mage/cards/r/RegalUnicorn.java
index 8f95cd5f431..6caace03c7d 100644
--- a/Mage.Sets/src/mage/cards/r/RegalUnicorn.java
+++ b/Mage.Sets/src/mage/cards/r/RegalUnicorn.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RegalUnicorn extends CardImpl {
+public final class RegalUnicorn extends CardImpl {
public RegalUnicorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RegathanFirecat.java b/Mage.Sets/src/mage/cards/r/RegathanFirecat.java
index 92dc8fd3e2e..0eb3ee8f3cf 100644
--- a/Mage.Sets/src/mage/cards/r/RegathanFirecat.java
+++ b/Mage.Sets/src/mage/cards/r/RegathanFirecat.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RegathanFirecat extends CardImpl {
+public final class RegathanFirecat extends CardImpl {
public RegathanFirecat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Regenerate.java b/Mage.Sets/src/mage/cards/r/Regenerate.java
index 6385a41de67..6373c073ed7 100644
--- a/Mage.Sets/src/mage/cards/r/Regenerate.java
+++ b/Mage.Sets/src/mage/cards/r/Regenerate.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Regenerate extends CardImpl {
+public final class Regenerate extends CardImpl {
public Regenerate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Regeneration.java b/Mage.Sets/src/mage/cards/r/Regeneration.java
index 0cd8cd95a60..a1477eb4e01 100644
--- a/Mage.Sets/src/mage/cards/r/Regeneration.java
+++ b/Mage.Sets/src/mage/cards/r/Regeneration.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Regeneration extends CardImpl {
+public final class Regeneration extends CardImpl {
public Regeneration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RegisaurAlpha.java b/Mage.Sets/src/mage/cards/r/RegisaurAlpha.java
index fb603c77ebd..60ac2ad5007 100644
--- a/Mage.Sets/src/mage/cards/r/RegisaurAlpha.java
+++ b/Mage.Sets/src/mage/cards/r/RegisaurAlpha.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.DinosaurToken;
*
* @author TheElk801
*/
-public class RegisaurAlpha extends CardImpl {
+public final class RegisaurAlpha extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Dinosaurs");
diff --git a/Mage.Sets/src/mage/cards/r/RegnaTheRedeemer.java b/Mage.Sets/src/mage/cards/r/RegnaTheRedeemer.java
new file mode 100644
index 00000000000..963b3ebd2c7
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/r/RegnaTheRedeemer.java
@@ -0,0 +1,118 @@
+/*
+ * 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.BeginningOfEndStepTriggeredAbility;
+import mage.abilities.condition.IntCompareCondition;
+import mage.abilities.decorator.ConditionalTriggeredAbility;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.abilities.keyword.FlyingAbility;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.ComparisonType;
+import mage.constants.TargetController;
+import mage.game.Game;
+import mage.game.permanent.token.WarriorToken;
+import mage.players.Player;
+import mage.watchers.common.PlayerGainedLifeWatcher;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class RegnaTheRedeemer extends CardImpl {
+
+ public RegnaTheRedeemer(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.ANGEL);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(4);
+
+ // Partner with Krav, the Unredeemed (When this creature enters the battlefield, target player may put Krav into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Krav, the Unredeemed", true));
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // At the beginning of each end step, if your team gained life this turn, create two 1/1 white Warrior creature tokens.
+ this.addAbility(new ConditionalTriggeredAbility(
+ new BeginningOfEndStepTriggeredAbility(
+ new CreateTokenEffect(new WarriorToken(), 2),
+ TargetController.ANY,
+ false
+ ),
+ new RegnaTheRedeemerCondition(),
+ "At the beginning of each end step, "
+ + "if your team gained life this turn, "
+ + "create two 1/1 white Warrior creature tokens"
+ ), new PlayerGainedLifeWatcher());
+ }
+
+ public RegnaTheRedeemer(final RegnaTheRedeemer card) {
+ super(card);
+ }
+
+ @Override
+ public RegnaTheRedeemer copy() {
+ return new RegnaTheRedeemer(this);
+ }
+}
+
+class RegnaTheRedeemerCondition extends IntCompareCondition {
+
+ public RegnaTheRedeemerCondition() {
+ super(ComparisonType.MORE_THAN, 0);
+ }
+
+ @Override
+ protected int getInputValue(Game game, Ability source) {
+ int gainedLife = 0;
+ PlayerGainedLifeWatcher watcher = (PlayerGainedLifeWatcher) game.getState().getWatchers().get(PlayerGainedLifeWatcher.class.getSimpleName());
+ if (watcher != null) {
+ for (UUID playerId : game.getPlayerList()) {
+ Player player = game.getPlayer(playerId);
+ if (!player.hasOpponent(source.getControllerId(), game)) {
+ gainedLife = watcher.getLiveGained(playerId);
+ if (gainedLife > 0) {
+ break;
+ }
+ }
+ }
+ }
+ return gainedLife;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/r/RegnasSanction.java b/Mage.Sets/src/mage/cards/r/RegnasSanction.java
new file mode 100644
index 00000000000..fd2592fb6f8
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/r/RegnasSanction.java
@@ -0,0 +1,114 @@
+/*
+ * 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.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.TapAllEffect;
+import mage.abilities.effects.common.counter.AddCountersAllEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.choices.ChooseFriendsAndFoes;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.counters.CounterType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.permanent.ControllerIdPredicate;
+import mage.filter.predicate.permanent.PermanentIdPredicate;
+import mage.filter.predicate.permanent.TappedPredicate;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class RegnasSanction extends CardImpl {
+
+ public RegnasSanction(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
+
+ // For each player, choose friend or foe. Each friend puts a +1/+1 counter on each creature they control. Each foe chooses one untapped creature they control, then taps the rest.
+ this.getSpellAbility().addEffect(new RegnasSanctionEffect());
+ }
+
+ public RegnasSanction(final RegnasSanction card) {
+ super(card);
+ }
+
+ @Override
+ public RegnasSanction copy() {
+ return new RegnasSanction(this);
+ }
+}
+
+class RegnasSanctionEffect extends OneShotEffect {
+
+ RegnasSanctionEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "For each player, choose friend or foe. Each friend puts a +1/+1 counter on each creature they control. Each foe chooses one untapped creature they control, then taps the rest";
+ }
+
+ RegnasSanctionEffect(final RegnasSanctionEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public RegnasSanctionEffect copy() {
+ return new RegnasSanctionEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ ChooseFriendsAndFoes choice = new ChooseFriendsAndFoes();
+ if (!choice.chooseFriendOrFoe(controller, source, game)) {
+ return false;
+ }
+ FilterCreaturePermanent filterToTap = new FilterCreaturePermanent();
+ for (Player player : choice.getFoes()) {
+ FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creature you control");
+ filter.add(Predicates.not(new TappedPredicate()));
+ filter.add(new ControllerIdPredicate(player.getId()));
+ TargetPermanent target = new TargetPermanent(1, 1, filter, true);
+ if (player.choose(Outcome.Benefit, target, source.getSourceId(), game)) {
+ filterToTap.add(Predicates.not(new PermanentIdPredicate(target.getFirstTarget())));
+ }
+ }
+ for (Player player : choice.getFriends()) {
+ FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ filter.add(new ControllerIdPredicate(player.getId()));
+ new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter).apply(game, source);
+ filterToTap.add(Predicates.not(new ControllerIdPredicate(player.getId())));
+ }
+ return new TapAllEffect(filterToTap).apply(game, source);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/r/Regress.java b/Mage.Sets/src/mage/cards/r/Regress.java
index e6031be281e..02e4c9d5201 100644
--- a/Mage.Sets/src/mage/cards/r/Regress.java
+++ b/Mage.Sets/src/mage/cards/r/Regress.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class Regress extends CardImpl {
+public final class Regress extends CardImpl {
public Regress (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Regression.java b/Mage.Sets/src/mage/cards/r/Regression.java
index 727d45ef7e8..4f5c372e318 100644
--- a/Mage.Sets/src/mage/cards/r/Regression.java
+++ b/Mage.Sets/src/mage/cards/r/Regression.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author Styxo
*/
-public class Regression extends CardImpl {
+public final class Regression extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment");
diff --git a/Mage.Sets/src/mage/cards/r/Regrowth.java b/Mage.Sets/src/mage/cards/r/Regrowth.java
index dabc6e1bc44..94ae946bb37 100644
--- a/Mage.Sets/src/mage/cards/r/Regrowth.java
+++ b/Mage.Sets/src/mage/cards/r/Regrowth.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
* @author KholdFuzion
*/
-public class Regrowth extends CardImpl {
+public final class Regrowth extends CardImpl {
public Regrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/ReignOfChaos.java b/Mage.Sets/src/mage/cards/r/ReignOfChaos.java
index fcb3aa8aa4c..bb1df8ea2fe 100644
--- a/Mage.Sets/src/mage/cards/r/ReignOfChaos.java
+++ b/Mage.Sets/src/mage/cards/r/ReignOfChaos.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class ReignOfChaos extends CardImpl {
+public final class ReignOfChaos extends CardImpl {
private static final FilterPermanent filter1 = new FilterPermanent("Plains");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("white creature");
diff --git a/Mage.Sets/src/mage/cards/r/ReignOfThePit.java b/Mage.Sets/src/mage/cards/r/ReignOfThePit.java
index 040339bcb02..75e7bca2b99 100644
--- a/Mage.Sets/src/mage/cards/r/ReignOfThePit.java
+++ b/Mage.Sets/src/mage/cards/r/ReignOfThePit.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class ReignOfThePit extends CardImpl {
+public final class ReignOfThePit extends CardImpl {
public ReignOfThePit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Reincarnation.java b/Mage.Sets/src/mage/cards/r/Reincarnation.java
index 9c61c9a692e..dd3a9def334 100644
--- a/Mage.Sets/src/mage/cards/r/Reincarnation.java
+++ b/Mage.Sets/src/mage/cards/r/Reincarnation.java
@@ -54,10 +54,10 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Reincarnation extends CardImpl {
+public final class Reincarnation extends CardImpl {
public Reincarnation(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}{G}");
// Choose target creature. When that creature dies this turn, return a creature card from its owner's graveyard to the battlefield under the control of that creature's owner.
this.getSpellAbility().addEffect(new ReincarnationEffect());
@@ -141,7 +141,7 @@ class ReincarnationDelayedTriggeredAbility extends DelayedTriggeredAbility {
class ReincarnationDelayedEffect extends OneShotEffect {
- private UUID target;
+ private final UUID target;
public ReincarnationDelayedEffect(UUID target) {
super(Outcome.Detriment);
@@ -166,14 +166,14 @@ class ReincarnationDelayedEffect extends OneShotEffect {
if (permanent != null && controller != null) {
Player player = game.getPlayer(permanent.getOwnerId());
if (player != null) {
- FilterCreatureCard filter = new FilterCreatureCard(new StringBuilder("a creature card from ").append(player.getLogName()).append("'s graveyard").toString());
+ FilterCreatureCard filter = new FilterCreatureCard("a creature card from " + player.getName() + "'s graveyard");
filter.add(new OwnerIdPredicate(player.getId()));
Target targetCreature = new TargetCardInGraveyard(filter);
if (targetCreature.canChoose(source.getSourceId(), controller.getId(), game)
&& controller.chooseTarget(outcome, targetCreature, source, game)) {
Card card = game.getCard(targetCreature.getFirstTarget());
if (card != null && game.getState().getZone(card.getId()) == Zone.GRAVEYARD) {
- return card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), player.getId());
+ controller.moveCards(card, Zone.BATTLEFIELD, source, game, false, false, true, null);
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/r/ReinforcedBulwark.java b/Mage.Sets/src/mage/cards/r/ReinforcedBulwark.java
index 7f0396a90b0..07ebf53c24d 100644
--- a/Mage.Sets/src/mage/cards/r/ReinforcedBulwark.java
+++ b/Mage.Sets/src/mage/cards/r/ReinforcedBulwark.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class ReinforcedBulwark extends CardImpl {
+public final class ReinforcedBulwark extends CardImpl {
public ReinforcedBulwark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/r/Reinforcements.java b/Mage.Sets/src/mage/cards/r/Reinforcements.java
index bcf0823855e..dbb5cb6c371 100644
--- a/Mage.Sets/src/mage/cards/r/Reinforcements.java
+++ b/Mage.Sets/src/mage/cards/r/Reinforcements.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class Reinforcements extends CardImpl {
+public final class Reinforcements extends CardImpl {
public Reinforcements(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReinsOfPower.java b/Mage.Sets/src/mage/cards/r/ReinsOfPower.java
index e9433b10c58..c20618d4e85 100644
--- a/Mage.Sets/src/mage/cards/r/ReinsOfPower.java
+++ b/Mage.Sets/src/mage/cards/r/ReinsOfPower.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class ReinsOfPower extends CardImpl {
+public final class ReinsOfPower extends CardImpl {
public ReinsOfPower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java b/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java
index 837efc634ad..1347e816ead 100644
--- a/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java
+++ b/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java
@@ -27,6 +27,9 @@
*/
package mage.cards.r;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.DiesAttachedTriggeredAbility;
@@ -49,18 +52,14 @@ import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
/**
*
* @author jeffwadsworth
*/
-public class ReinsOfTheVinesteed extends CardImpl {
+public final class ReinsOfTheVinesteed extends CardImpl {
public ReinsOfTheVinesteed(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
this.subtype.add(SubType.AURA);
// Enchant creature
@@ -127,7 +126,7 @@ class ReinsOfTheVinesteedEffect extends OneShotEffect {
Permanent targetPermanent = game.getPermanent(target.getFirstTarget());
if (!targetPermanent.cantBeAttachedBy(aura, game)) {
game.getState().setValue("attachTo:" + aura.getId(), targetPermanent);
- aura.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), controller.getId());
+ controller.moveCards(aura, Zone.BATTLEFIELD, source, game);
return targetPermanent.addAttachment(aura.getId(), game);
}
}
diff --git a/Mage.Sets/src/mage/cards/r/Reiterate.java b/Mage.Sets/src/mage/cards/r/Reiterate.java
index 867267f8f29..8070bb3a19e 100644
--- a/Mage.Sets/src/mage/cards/r/Reiterate.java
+++ b/Mage.Sets/src/mage/cards/r/Reiterate.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class Reiterate extends CardImpl {
+public final class Reiterate extends CardImpl {
public Reiterate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/ReitoLantern.java b/Mage.Sets/src/mage/cards/r/ReitoLantern.java
index 595661403a1..fb2b9be4d8d 100644
--- a/Mage.Sets/src/mage/cards/r/ReitoLantern.java
+++ b/Mage.Sets/src/mage/cards/r/ReitoLantern.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class ReitoLantern extends CardImpl {
+public final class ReitoLantern extends CardImpl {
public ReitoLantern(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/r/ReiverDemon.java b/Mage.Sets/src/mage/cards/r/ReiverDemon.java
index cb2880a725e..65fc73faf47 100644
--- a/Mage.Sets/src/mage/cards/r/ReiverDemon.java
+++ b/Mage.Sets/src/mage/cards/r/ReiverDemon.java
@@ -49,7 +49,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author daagar
*/
-public class ReiverDemon extends CardImpl {
+public final class ReiverDemon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact, nonblack creatures");
diff --git a/Mage.Sets/src/mage/cards/r/Rejuvenate.java b/Mage.Sets/src/mage/cards/r/Rejuvenate.java
index 51f7cc2a227..93c824ace18 100644
--- a/Mage.Sets/src/mage/cards/r/Rejuvenate.java
+++ b/Mage.Sets/src/mage/cards/r/Rejuvenate.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Backfir3
*/
-public class Rejuvenate extends CardImpl {
+public final class Rejuvenate extends CardImpl {
public Rejuvenate (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RejuvenationChamber.java b/Mage.Sets/src/mage/cards/r/RejuvenationChamber.java
index e5e0bd7caec..490837cdac7 100644
--- a/Mage.Sets/src/mage/cards/r/RejuvenationChamber.java
+++ b/Mage.Sets/src/mage/cards/r/RejuvenationChamber.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class RejuvenationChamber extends CardImpl {
+public final class RejuvenationChamber extends CardImpl {
public RejuvenationChamber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/r/RekiTheHistoryOfKamigawa.java b/Mage.Sets/src/mage/cards/r/RekiTheHistoryOfKamigawa.java
index 1b11d4a0d33..9f1fd27e361 100644
--- a/Mage.Sets/src/mage/cards/r/RekiTheHistoryOfKamigawa.java
+++ b/Mage.Sets/src/mage/cards/r/RekiTheHistoryOfKamigawa.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author Loki
*/
-public class RekiTheHistoryOfKamigawa extends CardImpl {
+public final class RekiTheHistoryOfKamigawa extends CardImpl {
private static final FilterSpell filter = new FilterSpell("legendary spell");
diff --git a/Mage.Sets/src/mage/cards/r/RekindledFlame.java b/Mage.Sets/src/mage/cards/r/RekindledFlame.java
index 7d9a9ab336c..0b59399ab6a 100644
--- a/Mage.Sets/src/mage/cards/r/RekindledFlame.java
+++ b/Mage.Sets/src/mage/cards/r/RekindledFlame.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class RekindledFlame extends CardImpl {
+public final class RekindledFlame extends CardImpl {
static final String rule = "if an opponent has no cards in hand, you may return Rekindled Flame from your graveyard to your hand";
diff --git a/Mage.Sets/src/mage/cards/r/RekindlingPhoenix.java b/Mage.Sets/src/mage/cards/r/RekindlingPhoenix.java
index 0f837bc8399..75ea441d177 100644
--- a/Mage.Sets/src/mage/cards/r/RekindlingPhoenix.java
+++ b/Mage.Sets/src/mage/cards/r/RekindlingPhoenix.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.RekindlingPhoenixToken;
*
* @author LevelX2
*/
-public class RekindlingPhoenix extends CardImpl {
+public final class RekindlingPhoenix extends CardImpl {
public RekindlingPhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Reknit.java b/Mage.Sets/src/mage/cards/r/Reknit.java
index 21f0586ee8d..73879f41cfa 100644
--- a/Mage.Sets/src/mage/cards/r/Reknit.java
+++ b/Mage.Sets/src/mage/cards/r/Reknit.java
@@ -38,7 +38,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class Reknit extends CardImpl {
+public final class Reknit extends CardImpl {
public Reknit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/r/Relearn.java b/Mage.Sets/src/mage/cards/r/Relearn.java
index 6049d4bc95c..4b1fa5450c4 100644
--- a/Mage.Sets/src/mage/cards/r/Relearn.java
+++ b/Mage.Sets/src/mage/cards/r/Relearn.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Quercitron
*/
-public class Relearn extends CardImpl {
+public final class Relearn extends CardImpl {
static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/r/ReleaseTheAnts.java b/Mage.Sets/src/mage/cards/r/ReleaseTheAnts.java
index 7448783482d..ca55c141742 100644
--- a/Mage.Sets/src/mage/cards/r/ReleaseTheAnts.java
+++ b/Mage.Sets/src/mage/cards/r/ReleaseTheAnts.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class ReleaseTheAnts extends CardImpl {
+public final class ReleaseTheAnts extends CardImpl {
public ReleaseTheAnts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/ReleaseTheGremlins.java b/Mage.Sets/src/mage/cards/r/ReleaseTheGremlins.java
index 7ad016c11f7..d7f887152e5 100644
--- a/Mage.Sets/src/mage/cards/r/ReleaseTheGremlins.java
+++ b/Mage.Sets/src/mage/cards/r/ReleaseTheGremlins.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Styxo
*/
-public class ReleaseTheGremlins extends CardImpl {
+public final class ReleaseTheGremlins extends CardImpl {
public ReleaseTheGremlins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/ReleaseToTheWind.java b/Mage.Sets/src/mage/cards/r/ReleaseToTheWind.java
index 858c917cd99..652067efdd9 100644
--- a/Mage.Sets/src/mage/cards/r/ReleaseToTheWind.java
+++ b/Mage.Sets/src/mage/cards/r/ReleaseToTheWind.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ReleaseToTheWind extends CardImpl {
+public final class ReleaseToTheWind extends CardImpl {
public ReleaseToTheWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RelentlessAssault.java b/Mage.Sets/src/mage/cards/r/RelentlessAssault.java
index 3b1df9a2fdd..528f3d0d9e4 100644
--- a/Mage.Sets/src/mage/cards/r/RelentlessAssault.java
+++ b/Mage.Sets/src/mage/cards/r/RelentlessAssault.java
@@ -39,7 +39,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author Quercitron
*/
-public class RelentlessAssault extends CardImpl {
+public final class RelentlessAssault extends CardImpl {
public RelentlessAssault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RelentlessDead.java b/Mage.Sets/src/mage/cards/r/RelentlessDead.java
index 48e4026b520..dbe8ff876a9 100644
--- a/Mage.Sets/src/mage/cards/r/RelentlessDead.java
+++ b/Mage.Sets/src/mage/cards/r/RelentlessDead.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class RelentlessDead extends CardImpl {
+public final class RelentlessDead extends CardImpl {
public RelentlessDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RelentlessHunter.java b/Mage.Sets/src/mage/cards/r/RelentlessHunter.java
index edb8236ffb5..578e17054ec 100644
--- a/Mage.Sets/src/mage/cards/r/RelentlessHunter.java
+++ b/Mage.Sets/src/mage/cards/r/RelentlessHunter.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class RelentlessHunter extends CardImpl {
+public final class RelentlessHunter extends CardImpl {
public RelentlessHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RelentlessRaptor.java b/Mage.Sets/src/mage/cards/r/RelentlessRaptor.java
index 8ee5d927dbd..6ba2ea92291 100644
--- a/Mage.Sets/src/mage/cards/r/RelentlessRaptor.java
+++ b/Mage.Sets/src/mage/cards/r/RelentlessRaptor.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class RelentlessRaptor extends CardImpl {
+public final class RelentlessRaptor extends CardImpl {
public RelentlessRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RelentlessRats.java b/Mage.Sets/src/mage/cards/r/RelentlessRats.java
index 4810a1bb99b..58248eca680 100644
--- a/Mage.Sets/src/mage/cards/r/RelentlessRats.java
+++ b/Mage.Sets/src/mage/cards/r/RelentlessRats.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RelentlessRats extends CardImpl {
+public final class RelentlessRats extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RelentlessSkaabs.java b/Mage.Sets/src/mage/cards/r/RelentlessSkaabs.java
index 5ac141a31eb..4ade3ab8f40 100644
--- a/Mage.Sets/src/mage/cards/r/RelentlessSkaabs.java
+++ b/Mage.Sets/src/mage/cards/r/RelentlessSkaabs.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class RelentlessSkaabs extends CardImpl {
+public final class RelentlessSkaabs extends CardImpl {
public RelentlessSkaabs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RelicBane.java b/Mage.Sets/src/mage/cards/r/RelicBane.java
index bcb3e6d1df0..4bcd355102e 100644
--- a/Mage.Sets/src/mage/cards/r/RelicBane.java
+++ b/Mage.Sets/src/mage/cards/r/RelicBane.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LoneFox
*/
-public class RelicBane extends CardImpl {
+public final class RelicBane extends CardImpl {
public RelicBane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RelicBarrier.java b/Mage.Sets/src/mage/cards/r/RelicBarrier.java
index d07f20ef18a..8440b45f4a1 100644
--- a/Mage.Sets/src/mage/cards/r/RelicBarrier.java
+++ b/Mage.Sets/src/mage/cards/r/RelicBarrier.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Plopman
*/
-public class RelicBarrier extends CardImpl {
+public final class RelicBarrier extends CardImpl {
public RelicBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/r/RelicBind.java b/Mage.Sets/src/mage/cards/r/RelicBind.java
index 74e6144570b..3ad5ab3367d 100644
--- a/Mage.Sets/src/mage/cards/r/RelicBind.java
+++ b/Mage.Sets/src/mage/cards/r/RelicBind.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
*
* @author L_J
*/
-public class RelicBind extends CardImpl {
+public final class RelicBind extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifact an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/r/RelicCrush.java b/Mage.Sets/src/mage/cards/r/RelicCrush.java
index d6a3158276c..4c750dc8079 100644
--- a/Mage.Sets/src/mage/cards/r/RelicCrush.java
+++ b/Mage.Sets/src/mage/cards/r/RelicCrush.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class RelicCrush extends CardImpl {
+public final class RelicCrush extends CardImpl {
public RelicCrush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RelicOfProgenitus.java b/Mage.Sets/src/mage/cards/r/RelicOfProgenitus.java
index 4f8e73aec56..935bd4b3335 100644
--- a/Mage.Sets/src/mage/cards/r/RelicOfProgenitus.java
+++ b/Mage.Sets/src/mage/cards/r/RelicOfProgenitus.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author jonubuu
*/
-public class RelicOfProgenitus extends CardImpl {
+public final class RelicOfProgenitus extends CardImpl {
public RelicOfProgenitus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/r/RelicPutrescence.java b/Mage.Sets/src/mage/cards/r/RelicPutrescence.java
index f31cb5d9232..b4e73f6ba3d 100644
--- a/Mage.Sets/src/mage/cards/r/RelicPutrescence.java
+++ b/Mage.Sets/src/mage/cards/r/RelicPutrescence.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author nantuko
*/
-public class RelicPutrescence extends CardImpl {
+public final class RelicPutrescence extends CardImpl {
public RelicPutrescence (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RelicRunner.java b/Mage.Sets/src/mage/cards/r/RelicRunner.java
index 8562438c5de..eff0d30f9e8 100644
--- a/Mage.Sets/src/mage/cards/r/RelicRunner.java
+++ b/Mage.Sets/src/mage/cards/r/RelicRunner.java
@@ -50,7 +50,7 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author TheElk801
*/
-public class RelicRunner extends CardImpl {
+public final class RelicRunner extends CardImpl {
public RelicRunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RelicSeeker.java b/Mage.Sets/src/mage/cards/r/RelicSeeker.java
index df5fdb11bb4..15c9ba1acf6 100644
--- a/Mage.Sets/src/mage/cards/r/RelicSeeker.java
+++ b/Mage.Sets/src/mage/cards/r/RelicSeeker.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class RelicSeeker extends CardImpl {
+public final class RelicSeeker extends CardImpl {
private static final FilterCard filter = new FilterCard("an Equipment card");
diff --git a/Mage.Sets/src/mage/cards/r/RelicWard.java b/Mage.Sets/src/mage/cards/r/RelicWard.java
index 376bc4ec32d..b03d307f0ca 100644
--- a/Mage.Sets/src/mage/cards/r/RelicWard.java
+++ b/Mage.Sets/src/mage/cards/r/RelicWard.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LoneFox
*/
-public class RelicWard extends CardImpl {
+public final class RelicWard extends CardImpl {
public RelicWard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReliefCaptain.java b/Mage.Sets/src/mage/cards/r/ReliefCaptain.java
index d4c4179d533..231621e277e 100644
--- a/Mage.Sets/src/mage/cards/r/ReliefCaptain.java
+++ b/Mage.Sets/src/mage/cards/r/ReliefCaptain.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ReliefCaptain extends CardImpl {
+public final class ReliefCaptain extends CardImpl {
public ReliefCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReliquaryMonk.java b/Mage.Sets/src/mage/cards/r/ReliquaryMonk.java
index a0dfb7192bf..1855c58d98d 100644
--- a/Mage.Sets/src/mage/cards/r/ReliquaryMonk.java
+++ b/Mage.Sets/src/mage/cards/r/ReliquaryMonk.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author LoneFox
*/
-public class ReliquaryMonk extends CardImpl {
+public final class ReliquaryMonk extends CardImpl {
public ReliquaryMonk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReliquaryTower.java b/Mage.Sets/src/mage/cards/r/ReliquaryTower.java
index 6ce1b9c36f6..b34dedc9529 100644
--- a/Mage.Sets/src/mage/cards/r/ReliquaryTower.java
+++ b/Mage.Sets/src/mage/cards/r/ReliquaryTower.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author nantuko
*/
-public class ReliquaryTower extends CardImpl {
+public final class ReliquaryTower extends CardImpl {
public ReliquaryTower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/Remand.java b/Mage.Sets/src/mage/cards/r/Remand.java
index 5df09e309ba..a05b30f4b44 100644
--- a/Mage.Sets/src/mage/cards/r/Remand.java
+++ b/Mage.Sets/src/mage/cards/r/Remand.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class Remand extends CardImpl {
+public final class Remand extends CardImpl {
public Remand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Remedy.java b/Mage.Sets/src/mage/cards/r/Remedy.java
index 87fd0886356..3fbb7da67cb 100644
--- a/Mage.Sets/src/mage/cards/r/Remedy.java
+++ b/Mage.Sets/src/mage/cards/r/Remedy.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author Quercitron
*/
-public class Remedy extends CardImpl {
+public final class Remedy extends CardImpl {
public Remedy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RememberTheFallen.java b/Mage.Sets/src/mage/cards/r/RememberTheFallen.java
index 4d32468f9eb..c79f8a322c3 100644
--- a/Mage.Sets/src/mage/cards/r/RememberTheFallen.java
+++ b/Mage.Sets/src/mage/cards/r/RememberTheFallen.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class RememberTheFallen extends CardImpl {
+public final class RememberTheFallen extends CardImpl {
private static final FilterArtifactCard filterArtifact = new FilterArtifactCard("artifact card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/r/Remembrance.java b/Mage.Sets/src/mage/cards/r/Remembrance.java
index 1b61cbf2b6e..ed256911e22 100644
--- a/Mage.Sets/src/mage/cards/r/Remembrance.java
+++ b/Mage.Sets/src/mage/cards/r/Remembrance.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class Remembrance extends CardImpl {
+public final class Remembrance extends CardImpl {
public Remembrance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Reminisce.java b/Mage.Sets/src/mage/cards/r/Reminisce.java
index a6fbc4bdd0d..c736503ef83 100644
--- a/Mage.Sets/src/mage/cards/r/Reminisce.java
+++ b/Mage.Sets/src/mage/cards/r/Reminisce.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author daagar
*/
-public class Reminisce extends CardImpl {
+public final class Reminisce extends CardImpl {
public Reminisce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RemorselessPunishment.java b/Mage.Sets/src/mage/cards/r/RemorselessPunishment.java
index bb7cf897dc9..bdc1fa40513 100644
--- a/Mage.Sets/src/mage/cards/r/RemorselessPunishment.java
+++ b/Mage.Sets/src/mage/cards/r/RemorselessPunishment.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class RemorselessPunishment extends CardImpl {
+public final class RemorselessPunishment extends CardImpl {
public RemorselessPunishment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RemoteFarm.java b/Mage.Sets/src/mage/cards/r/RemoteFarm.java
index 915e9b0d4d3..44d92866450 100644
--- a/Mage.Sets/src/mage/cards/r/RemoteFarm.java
+++ b/Mage.Sets/src/mage/cards/r/RemoteFarm.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class RemoteFarm extends CardImpl {
+public final class RemoteFarm extends CardImpl {
public RemoteFarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RemoteIsle.java b/Mage.Sets/src/mage/cards/r/RemoteIsle.java
index db3adac5bb1..35c4c0b9df6 100644
--- a/Mage.Sets/src/mage/cards/r/RemoteIsle.java
+++ b/Mage.Sets/src/mage/cards/r/RemoteIsle.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Backfir3
*/
-public class RemoteIsle extends CardImpl {
+public final class RemoteIsle extends CardImpl {
public RemoteIsle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/Remove.java b/Mage.Sets/src/mage/cards/r/Remove.java
index fa859c91a13..a870713eac2 100644
--- a/Mage.Sets/src/mage/cards/r/Remove.java
+++ b/Mage.Sets/src/mage/cards/r/Remove.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author TheElk801
*/
-public class Remove extends CardImpl {
+public final class Remove extends CardImpl {
public Remove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RemoveEnchantments.java b/Mage.Sets/src/mage/cards/r/RemoveEnchantments.java
index 61871e8f836..45ddb33e633 100644
--- a/Mage.Sets/src/mage/cards/r/RemoveEnchantments.java
+++ b/Mage.Sets/src/mage/cards/r/RemoveEnchantments.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class RemoveEnchantments extends CardImpl {
+public final class RemoveEnchantments extends CardImpl {
private static final FilterPermanent filter1 = new FilterControlledEnchantmentPermanent();
private static final FilterPermanent filter2 = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RemoveSoul.java b/Mage.Sets/src/mage/cards/r/RemoveSoul.java
index 2ad14026b78..f7687a4bdd9 100644
--- a/Mage.Sets/src/mage/cards/r/RemoveSoul.java
+++ b/Mage.Sets/src/mage/cards/r/RemoveSoul.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class RemoveSoul extends CardImpl {
+public final class RemoveSoul extends CardImpl {
public RemoveSoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RendFlesh.java b/Mage.Sets/src/mage/cards/r/RendFlesh.java
index 3621497bd15..4d7664f00f9 100644
--- a/Mage.Sets/src/mage/cards/r/RendFlesh.java
+++ b/Mage.Sets/src/mage/cards/r/RendFlesh.java
@@ -44,7 +44,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class RendFlesh extends CardImpl {
+public final class RendFlesh extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Non-Spirit creature");
diff --git a/Mage.Sets/src/mage/cards/r/RendSpirit.java b/Mage.Sets/src/mage/cards/r/RendSpirit.java
index 5f0ff13ba15..d8a09b87efb 100644
--- a/Mage.Sets/src/mage/cards/r/RendSpirit.java
+++ b/Mage.Sets/src/mage/cards/r/RendSpirit.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class RendSpirit extends CardImpl {
+public final class RendSpirit extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Spirit");
diff --git a/Mage.Sets/src/mage/cards/r/RendclawTrow.java b/Mage.Sets/src/mage/cards/r/RendclawTrow.java
index db363a5f9f6..805a78faeac 100644
--- a/Mage.Sets/src/mage/cards/r/RendclawTrow.java
+++ b/Mage.Sets/src/mage/cards/r/RendclawTrow.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class RendclawTrow extends CardImpl {
+public final class RendclawTrow extends CardImpl {
public RendclawTrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/r/RenderSilent.java b/Mage.Sets/src/mage/cards/r/RenderSilent.java
index c52073d3c24..de583d11709 100644
--- a/Mage.Sets/src/mage/cards/r/RenderSilent.java
+++ b/Mage.Sets/src/mage/cards/r/RenderSilent.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class RenderSilent extends CardImpl {
+public final class RenderSilent extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("multicolored permanent");
diff --git a/Mage.Sets/src/mage/cards/r/RendingVines.java b/Mage.Sets/src/mage/cards/r/RendingVines.java
index b96ec8dc93a..02381023d55 100644
--- a/Mage.Sets/src/mage/cards/r/RendingVines.java
+++ b/Mage.Sets/src/mage/cards/r/RendingVines.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class RendingVines extends CardImpl {
+public final class RendingVines extends CardImpl {
public RendingVines(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RendingVolley.java b/Mage.Sets/src/mage/cards/r/RendingVolley.java
index 733cfdd67dc..788c294cf7b 100644
--- a/Mage.Sets/src/mage/cards/r/RendingVolley.java
+++ b/Mage.Sets/src/mage/cards/r/RendingVolley.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RendingVolley extends CardImpl {
+public final class RendingVolley extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white or blue creature");
diff --git a/Mage.Sets/src/mage/cards/r/RenegadeDemon.java b/Mage.Sets/src/mage/cards/r/RenegadeDemon.java
index c0d55c61e0b..8ced92955c8 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadeDemon.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadeDemon.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RenegadeDemon extends CardImpl {
+public final class RenegadeDemon extends CardImpl {
public RenegadeDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RenegadeDoppelganger.java b/Mage.Sets/src/mage/cards/r/RenegadeDoppelganger.java
index 351b90dda4b..19aefd61377 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadeDoppelganger.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadeDoppelganger.java
@@ -51,7 +51,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author North
*/
-public class RenegadeDoppelganger extends CardImpl {
+public final class RenegadeDoppelganger extends CardImpl {
public RenegadeDoppelganger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RenegadeFirebrand.java b/Mage.Sets/src/mage/cards/r/RenegadeFirebrand.java
index 058e22627d1..9647d041dd1 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadeFirebrand.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadeFirebrand.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class RenegadeFirebrand extends CardImpl {
+public final class RenegadeFirebrand extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
private static final String rule = "As long as you control a Chandra planeswalker, {this} gets +1/+0";
diff --git a/Mage.Sets/src/mage/cards/r/RenegadeFreighter.java b/Mage.Sets/src/mage/cards/r/RenegadeFreighter.java
index 2e865c72bd0..25441ad8c56 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadeFreighter.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadeFreighter.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class RenegadeFreighter extends CardImpl {
+public final class RenegadeFreighter extends CardImpl {
public RenegadeFreighter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/r/RenegadeKrasis.java b/Mage.Sets/src/mage/cards/r/RenegadeKrasis.java
index 227061928ae..8682a586e0a 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadeKrasis.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadeKrasis.java
@@ -45,7 +45,7 @@ import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
-public class RenegadeKrasis extends CardImpl {
+public final class RenegadeKrasis extends CardImpl {
public RenegadeKrasis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RenegadeMap.java b/Mage.Sets/src/mage/cards/r/RenegadeMap.java
index c6ca3d2dc54..141b5751eb4 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadeMap.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadeMap.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class RenegadeMap extends CardImpl {
+public final class RenegadeMap extends CardImpl {
public RenegadeMap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
@@ -57,7 +57,7 @@ public class RenegadeMap extends CardImpl {
// {T}, Sacrifice Renegade Map: Search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.
Ability ability = new SimpleActivatedAbility(
Zone.BATTLEFIELD,
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new TapSourceCost()
);
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/r/RenegadeRallier.java b/Mage.Sets/src/mage/cards/r/RenegadeRallier.java
index e84e0dd4604..fa22bc51e4c 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadeRallier.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadeRallier.java
@@ -49,7 +49,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author fireshoes
*/
-public class RenegadeRallier extends CardImpl {
+public final class RenegadeRallier extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("permanent card with converted mana cost 2 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/r/RenegadeTactics.java b/Mage.Sets/src/mage/cards/r/RenegadeTactics.java
index a02d966dc69..c7dc7a65763 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadeTactics.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadeTactics.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RenegadeTactics extends CardImpl {
+public final class RenegadeTactics extends CardImpl {
public RenegadeTactics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RenegadeTroops.java b/Mage.Sets/src/mage/cards/r/RenegadeTroops.java
index 376621beb31..e863b89ec73 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadeTroops.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadeTroops.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RenegadeTroops extends CardImpl {
+public final class RenegadeTroops extends CardImpl {
public RenegadeTroops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RenegadeWarlord.java b/Mage.Sets/src/mage/cards/r/RenegadeWarlord.java
index 0a47f3b5087..63d2e96eabb 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadeWarlord.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadeWarlord.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author Loki
*/
-public class RenegadeWarlord extends CardImpl {
+public final class RenegadeWarlord extends CardImpl {
public RenegadeWarlord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RenegadeWheelsmith.java b/Mage.Sets/src/mage/cards/r/RenegadeWheelsmith.java
index c1f9d83fc2c..0cbadc2e520 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadeWheelsmith.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadeWheelsmith.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class RenegadeWheelsmith extends CardImpl {
+public final class RenegadeWheelsmith extends CardImpl {
public RenegadeWheelsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RenegadesGetaway.java b/Mage.Sets/src/mage/cards/r/RenegadesGetaway.java
index 35a56a914a1..62ad9ea7c04 100644
--- a/Mage.Sets/src/mage/cards/r/RenegadesGetaway.java
+++ b/Mage.Sets/src/mage/cards/r/RenegadesGetaway.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class RenegadesGetaway extends CardImpl {
+public final class RenegadesGetaway extends CardImpl {
public RenegadesGetaway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Renewal.java b/Mage.Sets/src/mage/cards/r/Renewal.java
index fd68f49fc87..6a6f761fd53 100644
--- a/Mage.Sets/src/mage/cards/r/Renewal.java
+++ b/Mage.Sets/src/mage/cards/r/Renewal.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class Renewal extends CardImpl {
+public final class Renewal extends CardImpl {
public Renewal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
@@ -55,7 +55,7 @@ public class Renewal extends CardImpl {
this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land"))));
// Search your library for a basic land card and put that card onto the battlefield. Then shuffle your library.
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD)));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND)));
// Draw a card at the beginning of the next turn's upkeep.
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
diff --git a/Mage.Sets/src/mage/cards/r/RenewedFaith.java b/Mage.Sets/src/mage/cards/r/RenewedFaith.java
index f053d8d91ad..bdbfb1df93e 100644
--- a/Mage.Sets/src/mage/cards/r/RenewedFaith.java
+++ b/Mage.Sets/src/mage/cards/r/RenewedFaith.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class RenewedFaith extends CardImpl {
+public final class RenewedFaith extends CardImpl {
public RenewedFaith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RenewingDawn.java b/Mage.Sets/src/mage/cards/r/RenewingDawn.java
index d82e305ce7d..311feea1c54 100644
--- a/Mage.Sets/src/mage/cards/r/RenewingDawn.java
+++ b/Mage.Sets/src/mage/cards/r/RenewingDawn.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class RenewingDawn extends CardImpl {
+public final class RenewingDawn extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Mountain");
diff --git a/Mage.Sets/src/mage/cards/r/RenewingTouch.java b/Mage.Sets/src/mage/cards/r/RenewingTouch.java
index 119ce3f4fce..63829760682 100644
--- a/Mage.Sets/src/mage/cards/r/RenewingTouch.java
+++ b/Mage.Sets/src/mage/cards/r/RenewingTouch.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class RenewingTouch extends CardImpl {
+public final class RenewingTouch extends CardImpl {
public RenewingTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Renounce.java b/Mage.Sets/src/mage/cards/r/Renounce.java
index 9aea7c16465..f14e9ceaf04 100644
--- a/Mage.Sets/src/mage/cards/r/Renounce.java
+++ b/Mage.Sets/src/mage/cards/r/Renounce.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author L_J
*/
-public class Renounce extends CardImpl {
+public final class Renounce extends CardImpl {
public Renounce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RenounceTheGuilds.java b/Mage.Sets/src/mage/cards/r/RenounceTheGuilds.java
index 5e30bcdeecf..f00f65ea1e1 100644
--- a/Mage.Sets/src/mage/cards/r/RenounceTheGuilds.java
+++ b/Mage.Sets/src/mage/cards/r/RenounceTheGuilds.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*/
-public class RenounceTheGuilds extends CardImpl {
+public final class RenounceTheGuilds extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("multicolored permanent");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RenownedWeaponsmith.java b/Mage.Sets/src/mage/cards/r/RenownedWeaponsmith.java
index 48bed436701..e8cf279e13a 100644
--- a/Mage.Sets/src/mage/cards/r/RenownedWeaponsmith.java
+++ b/Mage.Sets/src/mage/cards/r/RenownedWeaponsmith.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class RenownedWeaponsmith extends CardImpl {
+public final class RenownedWeaponsmith extends CardImpl {
public RenownedWeaponsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RenownedWeaver.java b/Mage.Sets/src/mage/cards/r/RenownedWeaver.java
index 001b6c2d224..d4a89597e47 100644
--- a/Mage.Sets/src/mage/cards/r/RenownedWeaver.java
+++ b/Mage.Sets/src/mage/cards/r/RenownedWeaver.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.RenownedWeaverSpiderToken;
*
* @author LevelX2
*/
-public class RenownedWeaver extends CardImpl {
+public final class RenownedWeaver extends CardImpl {
public RenownedWeaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Reparations.java b/Mage.Sets/src/mage/cards/r/Reparations.java
index 131fac1ef7a..f2f6120ce86 100644
--- a/Mage.Sets/src/mage/cards/r/Reparations.java
+++ b/Mage.Sets/src/mage/cards/r/Reparations.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class Reparations extends CardImpl {
+public final class Reparations extends CardImpl {
public Reparations(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RepayInKind.java b/Mage.Sets/src/mage/cards/r/RepayInKind.java
index 402f7575c7d..c3035e9e000 100644
--- a/Mage.Sets/src/mage/cards/r/RepayInKind.java
+++ b/Mage.Sets/src/mage/cards/r/RepayInKind.java
@@ -41,7 +41,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class RepayInKind extends CardImpl {
+public final class RepayInKind extends CardImpl {
public RepayInKind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Repeal.java b/Mage.Sets/src/mage/cards/r/Repeal.java
index 4fb0731aa0b..1d0f81e7b4e 100644
--- a/Mage.Sets/src/mage/cards/r/Repeal.java
+++ b/Mage.Sets/src/mage/cards/r/Repeal.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class Repeal extends CardImpl {
+public final class Repeal extends CardImpl {
public Repeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RepeatingBarrage.java b/Mage.Sets/src/mage/cards/r/RepeatingBarrage.java
index e8cfb2a2956..e1b4f637c3a 100644
--- a/Mage.Sets/src/mage/cards/r/RepeatingBarrage.java
+++ b/Mage.Sets/src/mage/cards/r/RepeatingBarrage.java
@@ -46,7 +46,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author TheElk801
*/
-public class RepeatingBarrage extends CardImpl {
+public final class RepeatingBarrage extends CardImpl {
public RepeatingBarrage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Repel.java b/Mage.Sets/src/mage/cards/r/Repel.java
index 82f45c4fea2..0670916ec01 100644
--- a/Mage.Sets/src/mage/cards/r/Repel.java
+++ b/Mage.Sets/src/mage/cards/r/Repel.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33, BetaSteward_at_googlemail.com (Excommunicate)
*/
-public class Repel extends CardImpl {
+public final class Repel extends CardImpl {
public Repel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RepelIntruders.java b/Mage.Sets/src/mage/cards/r/RepelIntruders.java
index ad748231f1f..4bdcbf49da7 100644
--- a/Mage.Sets/src/mage/cards/r/RepelIntruders.java
+++ b/Mage.Sets/src/mage/cards/r/RepelIntruders.java
@@ -46,7 +46,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author jeffwadsworth
*/
-public class RepelIntruders extends CardImpl {
+public final class RepelIntruders extends CardImpl {
public RepelIntruders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/r/RepelTheAbominable.java b/Mage.Sets/src/mage/cards/r/RepelTheAbominable.java
index 39f4828d6e2..00f6b38f411 100644
--- a/Mage.Sets/src/mage/cards/r/RepelTheAbominable.java
+++ b/Mage.Sets/src/mage/cards/r/RepelTheAbominable.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class RepelTheAbominable extends CardImpl {
+public final class RepelTheAbominable extends CardImpl {
private static final FilterObject filter = new FilterObject("non-Human sources");
diff --git a/Mage.Sets/src/mage/cards/r/RepelTheDarkness.java b/Mage.Sets/src/mage/cards/r/RepelTheDarkness.java
index 69579604b25..723eb0dd31e 100644
--- a/Mage.Sets/src/mage/cards/r/RepelTheDarkness.java
+++ b/Mage.Sets/src/mage/cards/r/RepelTheDarkness.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class RepelTheDarkness extends CardImpl {
+public final class RepelTheDarkness extends CardImpl {
public RepelTheDarkness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Repentance.java b/Mage.Sets/src/mage/cards/r/Repentance.java
index 10af47f6352..74fa989fd55 100644
--- a/Mage.Sets/src/mage/cards/r/Repentance.java
+++ b/Mage.Sets/src/mage/cards/r/Repentance.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Repentance extends CardImpl {
+public final class Repentance extends CardImpl {
public Repentance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RepentantBlacksmith.java b/Mage.Sets/src/mage/cards/r/RepentantBlacksmith.java
index 8c0ff44ffbb..3792a1b4914 100644
--- a/Mage.Sets/src/mage/cards/r/RepentantBlacksmith.java
+++ b/Mage.Sets/src/mage/cards/r/RepentantBlacksmith.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author KholdFuzion
*/
-public class RepentantBlacksmith extends CardImpl {
+public final class RepentantBlacksmith extends CardImpl {
public RepentantBlacksmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RepentantVampire.java b/Mage.Sets/src/mage/cards/r/RepentantVampire.java
index f6849891f27..5e49adf26ce 100644
--- a/Mage.Sets/src/mage/cards/r/RepentantVampire.java
+++ b/Mage.Sets/src/mage/cards/r/RepentantVampire.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33, Nantuko (Sengir Vampire)
*/
-public class RepentantVampire extends CardImpl {
+public final class RepentantVampire extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature");
static {
diff --git a/Mage.Sets/src/mage/cards/r/Repercussion.java b/Mage.Sets/src/mage/cards/r/Repercussion.java
index b5b087a7d9d..6e348d763ef 100644
--- a/Mage.Sets/src/mage/cards/r/Repercussion.java
+++ b/Mage.Sets/src/mage/cards/r/Repercussion.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author cbrianhill
*/
-public class Repercussion extends CardImpl {
+public final class Repercussion extends CardImpl {
public Repercussion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Replenish.java b/Mage.Sets/src/mage/cards/r/Replenish.java
index 5b213c8b0fd..b61df562df6 100644
--- a/Mage.Sets/src/mage/cards/r/Replenish.java
+++ b/Mage.Sets/src/mage/cards/r/Replenish.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class Replenish extends CardImpl {
+public final class Replenish extends CardImpl {
public Replenish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Repopulate.java b/Mage.Sets/src/mage/cards/r/Repopulate.java
index a9ff770ef5c..170884cae1c 100644
--- a/Mage.Sets/src/mage/cards/r/Repopulate.java
+++ b/Mage.Sets/src/mage/cards/r/Repopulate.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class Repopulate extends CardImpl {
+public final class Repopulate extends CardImpl {
public Repopulate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Reprisal.java b/Mage.Sets/src/mage/cards/r/Reprisal.java
index ca15cbb7385..bd0389955ef 100644
--- a/Mage.Sets/src/mage/cards/r/Reprisal.java
+++ b/Mage.Sets/src/mage/cards/r/Reprisal.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class Reprisal extends CardImpl {
+public final class Reprisal extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/r/Reprocess.java b/Mage.Sets/src/mage/cards/r/Reprocess.java
index 82768b48750..b45fb7be199 100644
--- a/Mage.Sets/src/mage/cards/r/Reprocess.java
+++ b/Mage.Sets/src/mage/cards/r/Reprocess.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
* @author LoneFox
*/
-public class Reprocess extends CardImpl {
+public final class Reprocess extends CardImpl {
public Reprocess(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RepublicFrigate.java b/Mage.Sets/src/mage/cards/r/RepublicFrigate.java
index 410b6fb22f9..4054082c7a4 100644
--- a/Mage.Sets/src/mage/cards/r/RepublicFrigate.java
+++ b/Mage.Sets/src/mage/cards/r/RepublicFrigate.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class RepublicFrigate extends CardImpl {
+public final class RepublicFrigate extends CardImpl {
public RepublicFrigate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Repulse.java b/Mage.Sets/src/mage/cards/r/Repulse.java
index b4f818b0d7e..3c6e12c5c52 100644
--- a/Mage.Sets/src/mage/cards/r/Repulse.java
+++ b/Mage.Sets/src/mage/cards/r/Repulse.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Repulse extends CardImpl {
+public final class Repulse extends CardImpl {
public Repulse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Repurpose.java b/Mage.Sets/src/mage/cards/r/Repurpose.java
index e01cc8ee09f..9720333e1e3 100644
--- a/Mage.Sets/src/mage/cards/r/Repurpose.java
+++ b/Mage.Sets/src/mage/cards/r/Repurpose.java
@@ -43,7 +43,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author Styxo
*/
-public class Repurpose extends CardImpl {
+public final class Repurpose extends CardImpl {
public Repurpose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RequiemAngel.java b/Mage.Sets/src/mage/cards/r/RequiemAngel.java
index 1c3140c5445..8663b1f8e06 100644
--- a/Mage.Sets/src/mage/cards/r/RequiemAngel.java
+++ b/Mage.Sets/src/mage/cards/r/RequiemAngel.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author intimidatingant
*/
-public class RequiemAngel extends CardImpl {
+public final class RequiemAngel extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another non-Spirit creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/r/Reroute.java b/Mage.Sets/src/mage/cards/r/Reroute.java
index b6a5d122b1e..becc40e770e 100644
--- a/Mage.Sets/src/mage/cards/r/Reroute.java
+++ b/Mage.Sets/src/mage/cards/r/Reroute.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetActivatedAbility;
*
* @author LevelX2
*/
-public class Reroute extends CardImpl {
+public final class Reroute extends CardImpl {
private static final FilterAbility filter = new FilterAbility("activated ability with a single target");
diff --git a/Mage.Sets/src/mage/cards/r/Rescind.java b/Mage.Sets/src/mage/cards/r/Rescind.java
index 5a5f52af923..626daf61f91 100644
--- a/Mage.Sets/src/mage/cards/r/Rescind.java
+++ b/Mage.Sets/src/mage/cards/r/Rescind.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
*
* @author Backfir3
*/
-public class Rescind extends CardImpl {
+public final class Rescind extends CardImpl {
public Rescind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Rescue.java b/Mage.Sets/src/mage/cards/r/Rescue.java
index 8ed8cbab393..93f3d760efb 100644
--- a/Mage.Sets/src/mage/cards/r/Rescue.java
+++ b/Mage.Sets/src/mage/cards/r/Rescue.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class Rescue extends CardImpl {
+public final class Rescue extends CardImpl {
public Rescue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RescueFromTheUnderworld.java b/Mage.Sets/src/mage/cards/r/RescueFromTheUnderworld.java
index 99636511594..a75ca00da81 100644
--- a/Mage.Sets/src/mage/cards/r/RescueFromTheUnderworld.java
+++ b/Mage.Sets/src/mage/cards/r/RescueFromTheUnderworld.java
@@ -79,7 +79,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class RescueFromTheUnderworld extends CardImpl {
+public final class RescueFromTheUnderworld extends CardImpl {
public RescueFromTheUnderworld(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/ResearchAssistant.java b/Mage.Sets/src/mage/cards/r/ResearchAssistant.java
index b6080b14769..769fa490d86 100644
--- a/Mage.Sets/src/mage/cards/r/ResearchAssistant.java
+++ b/Mage.Sets/src/mage/cards/r/ResearchAssistant.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ResearchAssistant extends CardImpl {
+public final class ResearchAssistant extends CardImpl {
public ResearchAssistant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ResearchDevelopment.java b/Mage.Sets/src/mage/cards/r/ResearchDevelopment.java
index 58f60d552ca..cdbc92274bf 100644
--- a/Mage.Sets/src/mage/cards/r/ResearchDevelopment.java
+++ b/Mage.Sets/src/mage/cards/r/ResearchDevelopment.java
@@ -51,7 +51,7 @@ import mage.target.TargetCard;
*
* @author magenoxx
*/
-public class ResearchDevelopment extends SplitCard {
+public final class ResearchDevelopment extends SplitCard {
public ResearchDevelopment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}{U}", "{3}{U}{R}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/r/ResearchTheDeep.java b/Mage.Sets/src/mage/cards/r/ResearchTheDeep.java
index 022ece35cec..02fd2e7ea99 100644
--- a/Mage.Sets/src/mage/cards/r/ResearchTheDeep.java
+++ b/Mage.Sets/src/mage/cards/r/ResearchTheDeep.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author LoneFox
*/
-public class ResearchTheDeep extends CardImpl {
+public final class ResearchTheDeep extends CardImpl {
public ResearchTheDeep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReservoirWalker.java b/Mage.Sets/src/mage/cards/r/ReservoirWalker.java
index ca2dc81daa1..c3789981711 100644
--- a/Mage.Sets/src/mage/cards/r/ReservoirWalker.java
+++ b/Mage.Sets/src/mage/cards/r/ReservoirWalker.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ReservoirWalker extends CardImpl {
+public final class ReservoirWalker extends CardImpl {
public ReservoirWalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/r/Reset.java b/Mage.Sets/src/mage/cards/r/Reset.java
index e13b6249fb2..46c4d2bc9ed 100644
--- a/Mage.Sets/src/mage/cards/r/Reset.java
+++ b/Mage.Sets/src/mage/cards/r/Reset.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
/**
* @author LevelX2
*/
-public class Reset extends CardImpl {
+public final class Reset extends CardImpl {
public Reset(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Reshape.java b/Mage.Sets/src/mage/cards/r/Reshape.java
index e056d49df0d..1b359ed0bfa 100644
--- a/Mage.Sets/src/mage/cards/r/Reshape.java
+++ b/Mage.Sets/src/mage/cards/r/Reshape.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jonubuu
*/
-public class Reshape extends CardImpl {
+public final class Reshape extends CardImpl {
public Reshape(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ResilientKhenra.java b/Mage.Sets/src/mage/cards/r/ResilientKhenra.java
index d786293ff0e..68854c451e2 100644
--- a/Mage.Sets/src/mage/cards/r/ResilientKhenra.java
+++ b/Mage.Sets/src/mage/cards/r/ResilientKhenra.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class ResilientKhenra extends CardImpl {
+public final class ResilientKhenra extends CardImpl {
public ResilientKhenra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/ResilientWanderer.java b/Mage.Sets/src/mage/cards/r/ResilientWanderer.java
index c92e4db839b..b867718ddd1 100644
--- a/Mage.Sets/src/mage/cards/r/ResilientWanderer.java
+++ b/Mage.Sets/src/mage/cards/r/ResilientWanderer.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author cbt33, BetaSteward (GainProtectionFromColorTargetEffect)
*/
-public class ResilientWanderer extends CardImpl {
+public final class ResilientWanderer extends CardImpl {
public ResilientWanderer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ResistanceFighter.java b/Mage.Sets/src/mage/cards/r/ResistanceFighter.java
index d29948e9c42..b88d58d3977 100644
--- a/Mage.Sets/src/mage/cards/r/ResistanceFighter.java
+++ b/Mage.Sets/src/mage/cards/r/ResistanceFighter.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class ResistanceFighter extends CardImpl {
+public final class ResistanceFighter extends CardImpl {
public ResistanceFighter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Resize.java b/Mage.Sets/src/mage/cards/r/Resize.java
index 9d45464be1d..dfb8756fc23 100644
--- a/Mage.Sets/src/mage/cards/r/Resize.java
+++ b/Mage.Sets/src/mage/cards/r/Resize.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Resize extends CardImpl {
+public final class Resize extends CardImpl {
public Resize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/ResoluteArchangel.java b/Mage.Sets/src/mage/cards/r/ResoluteArchangel.java
index 48c150de2ad..0ae0420e94c 100644
--- a/Mage.Sets/src/mage/cards/r/ResoluteArchangel.java
+++ b/Mage.Sets/src/mage/cards/r/ResoluteArchangel.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ResoluteArchangel extends CardImpl {
+public final class ResoluteArchangel extends CardImpl {
public ResoluteArchangel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ResoluteBlademaster.java b/Mage.Sets/src/mage/cards/r/ResoluteBlademaster.java
index 0bfeb7e123c..ef858e3d5df 100644
--- a/Mage.Sets/src/mage/cards/r/ResoluteBlademaster.java
+++ b/Mage.Sets/src/mage/cards/r/ResoluteBlademaster.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class ResoluteBlademaster extends CardImpl {
+public final class ResoluteBlademaster extends CardImpl {
public ResoluteBlademaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java b/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java
index a845e724f12..78f890f5351 100644
--- a/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java
+++ b/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class ResoluteSurvivors extends CardImpl {
+public final class ResoluteSurvivors extends CardImpl {
public ResoluteSurvivors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ResoundingRoar.java b/Mage.Sets/src/mage/cards/r/ResoundingRoar.java
index 43ad7e09094..eb389dd45d2 100644
--- a/Mage.Sets/src/mage/cards/r/ResoundingRoar.java
+++ b/Mage.Sets/src/mage/cards/r/ResoundingRoar.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ResoundingRoar extends CardImpl {
+public final class ResoundingRoar extends CardImpl {
public ResoundingRoar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/ResoundingScream.java b/Mage.Sets/src/mage/cards/r/ResoundingScream.java
index aa408b87066..e93d01d44ba 100644
--- a/Mage.Sets/src/mage/cards/r/ResoundingScream.java
+++ b/Mage.Sets/src/mage/cards/r/ResoundingScream.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class ResoundingScream extends CardImpl {
+public final class ResoundingScream extends CardImpl {
public ResoundingScream(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/ResoundingSilence.java b/Mage.Sets/src/mage/cards/r/ResoundingSilence.java
index d5131558fa0..96601bcc506 100644
--- a/Mage.Sets/src/mage/cards/r/ResoundingSilence.java
+++ b/Mage.Sets/src/mage/cards/r/ResoundingSilence.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author Plopman
*/
-public class ResoundingSilence extends CardImpl {
+public final class ResoundingSilence extends CardImpl {
public ResoundingSilence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ResoundingThunder.java b/Mage.Sets/src/mage/cards/r/ResoundingThunder.java
index e03c8b1ad36..59c5070fa98 100644
--- a/Mage.Sets/src/mage/cards/r/ResoundingThunder.java
+++ b/Mage.Sets/src/mage/cards/r/ResoundingThunder.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class ResoundingThunder extends CardImpl {
+public final class ResoundingThunder extends CardImpl {
public ResoundingThunder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/ResoundingWave.java b/Mage.Sets/src/mage/cards/r/ResoundingWave.java
index 4d3b1294da1..cbd4446721b 100644
--- a/Mage.Sets/src/mage/cards/r/ResoundingWave.java
+++ b/Mage.Sets/src/mage/cards/r/ResoundingWave.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class ResoundingWave extends CardImpl {
+public final class ResoundingWave extends CardImpl {
public ResoundingWave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ResourcefulReturn.java b/Mage.Sets/src/mage/cards/r/ResourcefulReturn.java
index 8fbe4a11661..508e52183df 100644
--- a/Mage.Sets/src/mage/cards/r/ResourcefulReturn.java
+++ b/Mage.Sets/src/mage/cards/r/ResourcefulReturn.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class ResourcefulReturn extends CardImpl {
+public final class ResourcefulReturn extends CardImpl {
public ResourcefulReturn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Respite.java b/Mage.Sets/src/mage/cards/r/Respite.java
index fa3d22ce141..6177609e2e2 100644
--- a/Mage.Sets/src/mage/cards/r/Respite.java
+++ b/Mage.Sets/src/mage/cards/r/Respite.java
@@ -40,7 +40,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class Respite extends CardImpl {
+public final class Respite extends CardImpl {
public Respite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/ResplendentGriffin.java b/Mage.Sets/src/mage/cards/r/ResplendentGriffin.java
index 10b3ddf5a40..4b1466b0ba3 100644
--- a/Mage.Sets/src/mage/cards/r/ResplendentGriffin.java
+++ b/Mage.Sets/src/mage/cards/r/ResplendentGriffin.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class ResplendentGriffin extends CardImpl {
+public final class ResplendentGriffin extends CardImpl {
public ResplendentGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ResplendentMentor.java b/Mage.Sets/src/mage/cards/r/ResplendentMentor.java
index 47122df96d4..51dce18f345 100644
--- a/Mage.Sets/src/mage/cards/r/ResplendentMentor.java
+++ b/Mage.Sets/src/mage/cards/r/ResplendentMentor.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class ResplendentMentor extends CardImpl {
+public final class ResplendentMentor extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("White creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RestForTheWeary.java b/Mage.Sets/src/mage/cards/r/RestForTheWeary.java
index 447ba980d0b..a8e6fac9d10 100644
--- a/Mage.Sets/src/mage/cards/r/RestForTheWeary.java
+++ b/Mage.Sets/src/mage/cards/r/RestForTheWeary.java
@@ -41,7 +41,7 @@ import mage.watchers.common.LandfallWatcher;
*
* @author Loki
*/
-public class RestForTheWeary extends CardImpl {
+public final class RestForTheWeary extends CardImpl {
public RestForTheWeary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RestInPeace.java b/Mage.Sets/src/mage/cards/r/RestInPeace.java
index d98f01e2747..ef3e9227a4d 100644
--- a/Mage.Sets/src/mage/cards/r/RestInPeace.java
+++ b/Mage.Sets/src/mage/cards/r/RestInPeace.java
@@ -66,7 +66,7 @@ import mage.players.Player;
// first ability) can find that card in exile.
//
-public class RestInPeace extends CardImpl {
+public final class RestInPeace extends CardImpl {
public RestInPeace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RestlessApparition.java b/Mage.Sets/src/mage/cards/r/RestlessApparition.java
index c878cf48460..12cab1ffa05 100644
--- a/Mage.Sets/src/mage/cards/r/RestlessApparition.java
+++ b/Mage.Sets/src/mage/cards/r/RestlessApparition.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class RestlessApparition extends CardImpl {
+public final class RestlessApparition extends CardImpl {
public RestlessApparition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W/B}{W/B}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/r/RestlessBones.java b/Mage.Sets/src/mage/cards/r/RestlessBones.java
index 01e448f7df7..1ce33fa9d89 100644
--- a/Mage.Sets/src/mage/cards/r/RestlessBones.java
+++ b/Mage.Sets/src/mage/cards/r/RestlessBones.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class RestlessBones extends CardImpl {
+public final class RestlessBones extends CardImpl {
public RestlessBones(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RestlessDead.java b/Mage.Sets/src/mage/cards/r/RestlessDead.java
index 16fa9987949..1379008b6b4 100644
--- a/Mage.Sets/src/mage/cards/r/RestlessDead.java
+++ b/Mage.Sets/src/mage/cards/r/RestlessDead.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class RestlessDead extends CardImpl {
+public final class RestlessDead extends CardImpl {
public RestlessDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RestlessDreams.java b/Mage.Sets/src/mage/cards/r/RestlessDreams.java
index b1fb4477d45..73315eff7f6 100644
--- a/Mage.Sets/src/mage/cards/r/RestlessDreams.java
+++ b/Mage.Sets/src/mage/cards/r/RestlessDreams.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class RestlessDreams extends CardImpl {
+public final class RestlessDreams extends CardImpl {
public RestlessDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Restock.java b/Mage.Sets/src/mage/cards/r/Restock.java
index ad176cd16df..40d2bdab939 100644
--- a/Mage.Sets/src/mage/cards/r/Restock.java
+++ b/Mage.Sets/src/mage/cards/r/Restock.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class Restock extends CardImpl {
+public final class Restock extends CardImpl {
public Restock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RestorationAngel.java b/Mage.Sets/src/mage/cards/r/RestorationAngel.java
index ab878ebefa4..64bcc9f9667 100644
--- a/Mage.Sets/src/mage/cards/r/RestorationAngel.java
+++ b/Mage.Sets/src/mage/cards/r/RestorationAngel.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
* @author noxx
*
*/
-public class RestorationAngel extends CardImpl {
+public final class RestorationAngel extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Angel creature you control");
diff --git a/Mage.Sets/src/mage/cards/r/RestorationGearsmith.java b/Mage.Sets/src/mage/cards/r/RestorationGearsmith.java
index a0076bcfab7..0281fe8c120 100644
--- a/Mage.Sets/src/mage/cards/r/RestorationGearsmith.java
+++ b/Mage.Sets/src/mage/cards/r/RestorationGearsmith.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class RestorationGearsmith extends CardImpl {
+public final class RestorationGearsmith extends CardImpl {
public RestorationGearsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RestorationSpecialist.java b/Mage.Sets/src/mage/cards/r/RestorationSpecialist.java
index b5c00db8ada..818c2f0c983 100644
--- a/Mage.Sets/src/mage/cards/r/RestorationSpecialist.java
+++ b/Mage.Sets/src/mage/cards/r/RestorationSpecialist.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Styxo
*/
-public class RestorationSpecialist extends CardImpl {
+public final class RestorationSpecialist extends CardImpl {
public RestorationSpecialist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Restore.java b/Mage.Sets/src/mage/cards/r/Restore.java
index 804ab78032b..2c2467251a6 100644
--- a/Mage.Sets/src/mage/cards/r/Restore.java
+++ b/Mage.Sets/src/mage/cards/r/Restore.java
@@ -46,13 +46,12 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class Restore extends CardImpl {
+public final class Restore extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard();
public Restore(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
// Put target land card from a graveyard onto the battlefield under your control.
this.getSpellAbility().addEffect(new RestoreEffect());
@@ -91,7 +90,8 @@ class RestoreEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
Card land = game.getCard(this.getTargetPointer().getFirst(game, source));
if (controller != null && game.getState().getZone(land.getId()) == Zone.GRAVEYARD) {
- return land.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), controller.getId());
+ controller.moveCards(land, Zone.BATTLEFIELD, source, game);
+ return true;
}
return false;
}
diff --git a/Mage.Sets/src/mage/cards/r/RestoreBalance.java b/Mage.Sets/src/mage/cards/r/RestoreBalance.java
index 8569f782235..d605a64ba70 100644
--- a/Mage.Sets/src/mage/cards/r/RestoreBalance.java
+++ b/Mage.Sets/src/mage/cards/r/RestoreBalance.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class RestoreBalance extends CardImpl {
+public final class RestoreBalance extends CardImpl {
public RestoreBalance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"");
diff --git a/Mage.Sets/src/mage/cards/r/RestoreThePeace.java b/Mage.Sets/src/mage/cards/r/RestoreThePeace.java
index 3adcc2df166..4ce6c91770f 100644
--- a/Mage.Sets/src/mage/cards/r/RestoreThePeace.java
+++ b/Mage.Sets/src/mage/cards/r/RestoreThePeace.java
@@ -42,7 +42,7 @@ import mage.watchers.common.SourceDidDamageWatcher;
/**
* @author LevelX2
*/
-public class RestoreThePeace extends CardImpl {
+public final class RestoreThePeace extends CardImpl {
public RestoreThePeace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Restrain.java b/Mage.Sets/src/mage/cards/r/Restrain.java
index b29fdb6747c..f08fd4d6695 100644
--- a/Mage.Sets/src/mage/cards/r/Restrain.java
+++ b/Mage.Sets/src/mage/cards/r/Restrain.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author LoneFox
*/
-public class Restrain extends CardImpl {
+public final class Restrain extends CardImpl {
public Restrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Resupply.java b/Mage.Sets/src/mage/cards/r/Resupply.java
index e7a59ece209..ff50d0f7052 100644
--- a/Mage.Sets/src/mage/cards/r/Resupply.java
+++ b/Mage.Sets/src/mage/cards/r/Resupply.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class Resupply extends CardImpl {
+public final class Resupply extends CardImpl {
public Resupply(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Resurrection.java b/Mage.Sets/src/mage/cards/r/Resurrection.java
index c84f21fa990..00db5117113 100644
--- a/Mage.Sets/src/mage/cards/r/Resurrection.java
+++ b/Mage.Sets/src/mage/cards/r/Resurrection.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author KholdFuzion
*/
-public class Resurrection extends CardImpl {
+public final class Resurrection extends CardImpl {
public Resurrection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Resuscitate.java b/Mage.Sets/src/mage/cards/r/Resuscitate.java
index a5801da56a7..fd0c335fa4c 100644
--- a/Mage.Sets/src/mage/cards/r/Resuscitate.java
+++ b/Mage.Sets/src/mage/cards/r/Resuscitate.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class Resuscitate extends CardImpl {
+public final class Resuscitate extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/r/Retaliate.java b/Mage.Sets/src/mage/cards/r/Retaliate.java
index e5995929c0d..5a966a763c6 100644
--- a/Mage.Sets/src/mage/cards/r/Retaliate.java
+++ b/Mage.Sets/src/mage/cards/r/Retaliate.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.permanent.DamagedPlayerThisTurnPredicate;
*
* @author Plopman
*/
-public class Retaliate extends CardImpl {
+public final class Retaliate extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures that dealt damage to you this turn");
static {
filter.add(new DamagedPlayerThisTurnPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/r/Retaliation.java b/Mage.Sets/src/mage/cards/r/Retaliation.java
index b299076c2dd..f5e081f2fbc 100644
--- a/Mage.Sets/src/mage/cards/r/Retaliation.java
+++ b/Mage.Sets/src/mage/cards/r/Retaliation.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class Retaliation extends CardImpl {
+public final class Retaliation extends CardImpl {
public Retaliation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RetaliatorGriffin.java b/Mage.Sets/src/mage/cards/r/RetaliatorGriffin.java
index 08daf0b7d2d..5e26b70496b 100644
--- a/Mage.Sets/src/mage/cards/r/RetaliatorGriffin.java
+++ b/Mage.Sets/src/mage/cards/r/RetaliatorGriffin.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author North
*/
-public class RetaliatorGriffin extends CardImpl {
+public final class RetaliatorGriffin extends CardImpl {
public RetaliatorGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Retether.java b/Mage.Sets/src/mage/cards/r/Retether.java
index beab992681c..cbc9b9adbee 100644
--- a/Mage.Sets/src/mage/cards/r/Retether.java
+++ b/Mage.Sets/src/mage/cards/r/Retether.java
@@ -55,10 +55,10 @@ import mage.target.Target;
*
* @author L_J
*/
-public class Retether extends CardImpl {
+public final class Retether extends CardImpl {
public Retether(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
// Return each Aura card from your graveyard to the battlefield. Only creatures can be enchanted this way.
this.getSpellAbility().addEffect(new RetetherEffect());
@@ -108,7 +108,7 @@ class RetetherEffect extends OneShotEffect {
FilterCreaturePermanent filter = new FilterCreaturePermanent("creature to enchant (" + aura.getLogName() + ')');
filter.add(new CanBeEnchantedByPredicate(aura));
Target target = null;
-
+
auraLegalitySearch:
for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, playerId, game)) {
@@ -135,6 +135,7 @@ class RetetherEffect extends OneShotEffect {
Permanent permanent = game.getPermanent(target.getFirstTarget());
if (permanent != null && !permanent.cantBeAttachedBy(aura, game)) {
auraMap.put(aura, permanent);
+ game.getState().setValue("attachTo:" + aura.getId(), permanent);
continue auraCardsInGraveyard;
}
}
@@ -143,17 +144,12 @@ class RetetherEffect extends OneShotEffect {
game.informPlayers("No valid creature targets for " + aura.getLogName());
}
}
+ controller.moveCards(auraMap.keySet(), Zone.BATTLEFIELD, source, game);
for (Entry entry : auraMap.entrySet()) {
Card aura = entry.getKey();
Permanent permanent = entry.getValue();
- if (aura != null) {
- if (permanent != null) {
- game.getState().setValue("attachTo:" + aura.getId(), permanent);
- }
- aura.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), controller.getId());
- if (permanent != null) {
- permanent.addAttachment(aura.getId(), game);
- }
+ if (aura != null && permanent != null) {
+ permanent.addAttachment(aura.getId(), game);
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/r/Rethink.java b/Mage.Sets/src/mage/cards/r/Rethink.java
index 53e46065103..a8692dc1771 100644
--- a/Mage.Sets/src/mage/cards/r/Rethink.java
+++ b/Mage.Sets/src/mage/cards/r/Rethink.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class Rethink extends CardImpl {
+public final class Rethink extends CardImpl {
public Rethink(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Retract.java b/Mage.Sets/src/mage/cards/r/Retract.java
index ad6bf0c21cd..51ddc1c324c 100644
--- a/Mage.Sets/src/mage/cards/r/Retract.java
+++ b/Mage.Sets/src/mage/cards/r/Retract.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author LevelX2
*/
-public class Retract extends CardImpl {
+public final class Retract extends CardImpl {
public Retract(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RetractionHelix.java b/Mage.Sets/src/mage/cards/r/RetractionHelix.java
index b6b9af32086..0af42bd9e90 100644
--- a/Mage.Sets/src/mage/cards/r/RetractionHelix.java
+++ b/Mage.Sets/src/mage/cards/r/RetractionHelix.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class RetractionHelix extends CardImpl {
+public final class RetractionHelix extends CardImpl {
public RetractionHelix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RetreatToCoralhelm.java b/Mage.Sets/src/mage/cards/r/RetreatToCoralhelm.java
index 21b02e88477..a533badb211 100644
--- a/Mage.Sets/src/mage/cards/r/RetreatToCoralhelm.java
+++ b/Mage.Sets/src/mage/cards/r/RetreatToCoralhelm.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RetreatToCoralhelm extends CardImpl {
+public final class RetreatToCoralhelm extends CardImpl {
public RetreatToCoralhelm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RetreatToEmeria.java b/Mage.Sets/src/mage/cards/r/RetreatToEmeria.java
index 899d84206f6..3cc395f9eba 100644
--- a/Mage.Sets/src/mage/cards/r/RetreatToEmeria.java
+++ b/Mage.Sets/src/mage/cards/r/RetreatToEmeria.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.KorAllyToken;
*
* @author fireshoes
*/
-public class RetreatToEmeria extends CardImpl {
+public final class RetreatToEmeria extends CardImpl {
public RetreatToEmeria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RetreatToHagra.java b/Mage.Sets/src/mage/cards/r/RetreatToHagra.java
index fe584a660ca..ca4d363ef2a 100644
--- a/Mage.Sets/src/mage/cards/r/RetreatToHagra.java
+++ b/Mage.Sets/src/mage/cards/r/RetreatToHagra.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RetreatToHagra extends CardImpl {
+public final class RetreatToHagra extends CardImpl {
public RetreatToHagra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RetreatToKazandu.java b/Mage.Sets/src/mage/cards/r/RetreatToKazandu.java
index 8de02c3edb7..05535e71073 100644
--- a/Mage.Sets/src/mage/cards/r/RetreatToKazandu.java
+++ b/Mage.Sets/src/mage/cards/r/RetreatToKazandu.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RetreatToKazandu extends CardImpl {
+public final class RetreatToKazandu extends CardImpl {
public RetreatToKazandu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RetreatToValakut.java b/Mage.Sets/src/mage/cards/r/RetreatToValakut.java
index b36729d4641..7f5b5febbd1 100644
--- a/Mage.Sets/src/mage/cards/r/RetreatToValakut.java
+++ b/Mage.Sets/src/mage/cards/r/RetreatToValakut.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RetreatToValakut extends CardImpl {
+public final class RetreatToValakut extends CardImpl {
public RetreatToValakut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Retribution.java b/Mage.Sets/src/mage/cards/r/Retribution.java
index 7c17d79433c..0f0f8c9abfa 100644
--- a/Mage.Sets/src/mage/cards/r/Retribution.java
+++ b/Mage.Sets/src/mage/cards/r/Retribution.java
@@ -1,152 +1,152 @@
-/*
- * 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.MageObject;
-import mage.abilities.Ability;
-import mage.abilities.effects.OneShotEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.counters.CounterType;
-import mage.filter.StaticFilters;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.common.TargetCreaturePermanent;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class Retribution extends CardImpl {
-
- public Retribution(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}{R}");
-
- // Choose two target creatures an opponent controls. That player chooses and sacrifices one of those creatures. Put a -1/-1 counter on the other.
- this.getSpellAbility().addEffect(new RetributionEffect());
- this.getSpellAbility().addTarget(new TargetCreaturePermanentOpponentSameController(2, 2, StaticFilters.FILTER_PERMANENT_CREATURE, false));
-
- }
-
- public Retribution(final Retribution card) {
- super(card);
- }
-
- @Override
- public Retribution copy() {
- return new Retribution(this);
- }
-}
-
-class RetributionEffect extends OneShotEffect {
-
- public RetributionEffect() {
- super(Outcome.Detriment);
- this.staticText = "Choose two target creatures an opponent controls. That player chooses and sacrifices one of those creatures. Put a -1/-1 counter on the other";
- }
-
- public RetributionEffect(final RetributionEffect effect) {
- super(effect);
- }
-
- @Override
- public RetributionEffect copy() {
- return new RetributionEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- MageObject sourceObject = source.getSourceObject(game);
- if (sourceObject != null) {
- boolean sacrificeDone = false;
- int count = 0;
- for (UUID targetId : getTargetPointer().getTargets(game, source)) {
- Permanent creature = game.getPermanent(targetId);
- if (creature != null) {
- Player controllerOfCreature = game.getPlayer(creature.getControllerId());
- if ((count == 0
- && controllerOfCreature.chooseUse(Outcome.Sacrifice, "Sacrifice " + creature.getLogName() + '?', source, game))
- || (count == 1
- && !sacrificeDone)) {
- creature.sacrifice(source.getId(), game);
- sacrificeDone = true;
- } else {
- creature.addCounters(CounterType.M1M1.createInstance(), source, game);
- }
- count++;
- }
- }
- return true;
- }
- return false;
- }
-}
-
-class TargetCreaturePermanentOpponentSameController extends TargetCreaturePermanent {
-
- public TargetCreaturePermanentOpponentSameController(int minNumTargets, int maxNumTargets, FilterCreaturePermanent filter, boolean notTarget) {
- super(minNumTargets, maxNumTargets, filter, notTarget);
- }
-
- public TargetCreaturePermanentOpponentSameController(final TargetCreaturePermanentOpponentSameController target) {
- super(target);
- }
-
- @Override
- public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) {
- if (super.canTarget(controllerId, id, source, game)) {
- Permanent firstTargetPermanent = game.getPermanent(id);
- if (firstTargetPermanent != null
- && game.getOpponents(controllerId).contains(firstTargetPermanent.getControllerId())) {
- for (Object object : getTargets()) {
- UUID targetId = (UUID) object;
- Permanent targetPermanent = game.getPermanent(targetId);
- if (targetPermanent != null) {
- if (!firstTargetPermanent.getId().equals(targetPermanent.getId())) {
- if (!firstTargetPermanent.getControllerId().equals(targetPermanent.getOwnerId())) {
- return false;
- }
- }
- }
- }
- return true;
- }
- }
- return false;
- }
-
- @Override
- public TargetCreaturePermanentOpponentSameController copy() {
- return new TargetCreaturePermanentOpponentSameController(this);
- }
-}
+/*
+ * 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.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.counters.CounterType;
+import mage.filter.StaticFilters;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class Retribution extends CardImpl {
+
+ public Retribution(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}{R}");
+
+ // Choose two target creatures an opponent controls. That player chooses and sacrifices one of those creatures. Put a -1/-1 counter on the other.
+ this.getSpellAbility().addEffect(new RetributionEffect());
+ this.getSpellAbility().addTarget(new TargetCreaturePermanentOpponentSameController(2, 2, StaticFilters.FILTER_PERMANENT_CREATURE, false));
+
+ }
+
+ public Retribution(final Retribution card) {
+ super(card);
+ }
+
+ @Override
+ public Retribution copy() {
+ return new Retribution(this);
+ }
+}
+
+class RetributionEffect extends OneShotEffect {
+
+ public RetributionEffect() {
+ super(Outcome.Detriment);
+ this.staticText = "Choose two target creatures an opponent controls. That player chooses and sacrifices one of those creatures. Put a -1/-1 counter on the other";
+ }
+
+ public RetributionEffect(final RetributionEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public RetributionEffect copy() {
+ return new RetributionEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ MageObject sourceObject = source.getSourceObject(game);
+ if (sourceObject != null) {
+ boolean sacrificeDone = false;
+ int count = 0;
+ for (UUID targetId : getTargetPointer().getTargets(game, source)) {
+ Permanent creature = game.getPermanent(targetId);
+ if (creature != null) {
+ Player controllerOfCreature = game.getPlayer(creature.getControllerId());
+ if ((count == 0
+ && controllerOfCreature.chooseUse(Outcome.Sacrifice, "Sacrifice " + creature.getLogName() + '?', source, game))
+ || (count == 1
+ && !sacrificeDone)) {
+ creature.sacrifice(source.getId(), game);
+ sacrificeDone = true;
+ } else {
+ creature.addCounters(CounterType.M1M1.createInstance(), source, game);
+ }
+ count++;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+}
+
+class TargetCreaturePermanentOpponentSameController extends TargetCreaturePermanent {
+
+ public TargetCreaturePermanentOpponentSameController(int minNumTargets, int maxNumTargets, FilterCreaturePermanent filter, boolean notTarget) {
+ super(minNumTargets, maxNumTargets, filter, notTarget);
+ }
+
+ public TargetCreaturePermanentOpponentSameController(final TargetCreaturePermanentOpponentSameController target) {
+ super(target);
+ }
+
+ @Override
+ public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) {
+ if (super.canTarget(controllerId, id, source, game)) {
+ Permanent firstTargetPermanent = game.getPermanent(id);
+ if (firstTargetPermanent != null
+ && game.getOpponents(controllerId).contains(firstTargetPermanent.getControllerId())) {
+ for (Object object : getTargets()) {
+ UUID targetId = (UUID) object;
+ Permanent targetPermanent = game.getPermanent(targetId);
+ if (targetPermanent != null) {
+ if (!firstTargetPermanent.getId().equals(targetPermanent.getId())) {
+ if (!firstTargetPermanent.getControllerId().equals(targetPermanent.getOwnerId())) {
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public TargetCreaturePermanentOpponentSameController copy() {
+ return new TargetCreaturePermanentOpponentSameController(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/r/RetributionOfTheAncients.java b/Mage.Sets/src/mage/cards/r/RetributionOfTheAncients.java
index 111d4217f33..e6b0533d3a2 100644
--- a/Mage.Sets/src/mage/cards/r/RetributionOfTheAncients.java
+++ b/Mage.Sets/src/mage/cards/r/RetributionOfTheAncients.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RetributionOfTheAncients extends CardImpl {
+public final class RetributionOfTheAncients extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/r/RetributionOfTheMeek.java b/Mage.Sets/src/mage/cards/r/RetributionOfTheMeek.java
index 19f6db89501..cf65baa526e 100644
--- a/Mage.Sets/src/mage/cards/r/RetributionOfTheMeek.java
+++ b/Mage.Sets/src/mage/cards/r/RetributionOfTheMeek.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author Jesse Whyte
*/
-public class RetributionOfTheMeek extends CardImpl {
+public final class RetributionOfTheMeek extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/r/Retromancer.java b/Mage.Sets/src/mage/cards/r/Retromancer.java
index c6b19c50eb8..6e173a111ab 100644
--- a/Mage.Sets/src/mage/cards/r/Retromancer.java
+++ b/Mage.Sets/src/mage/cards/r/Retromancer.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class Retromancer extends CardImpl {
+public final class Retromancer extends CardImpl {
public Retromancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/ReturnOfTheNightstalkers.java b/Mage.Sets/src/mage/cards/r/ReturnOfTheNightstalkers.java
index e4fc525b19a..93e29b5c6c6 100644
--- a/Mage.Sets/src/mage/cards/r/ReturnOfTheNightstalkers.java
+++ b/Mage.Sets/src/mage/cards/r/ReturnOfTheNightstalkers.java
@@ -30,7 +30,6 @@ package mage.cards.r;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
-import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -48,7 +47,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class ReturnOfTheNightstalkers extends CardImpl {
+public final class ReturnOfTheNightstalkers extends CardImpl {
public ReturnOfTheNightstalkers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{B}{B}");
@@ -79,7 +78,7 @@ class ReturnOfTheNightstalkersEffect extends OneShotEffect {
public ReturnOfTheNightstalkersEffect() {
super(Outcome.PutCreatureInPlay);
- staticText = "Return all Nightstalker permanent cards from your graveyard to the battlefield. Then destroy all Swamps you control.";
+ staticText = "Return all Nightstalker permanent cards from your graveyard to the battlefield. Then destroy all Swamps you control";
}
public ReturnOfTheNightstalkersEffect(final ReturnOfTheNightstalkersEffect effect) {
@@ -93,15 +92,14 @@ class ReturnOfTheNightstalkersEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- if (player != null) {
- for (Card card : player.getGraveyard().getCards(filter1, game)) {
- card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId());
- }
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ controller.moveCards(controller.getGraveyard().getCards(filter1, game), Zone.BATTLEFIELD, source, game);
for (Permanent permanent : game.getBattlefield().getActivePermanents(filter2, source.getControllerId(), source.getSourceId(), game)) {
permanent.destroy(source.getSourceId(), game, false);
}
+ return true;
}
- return true;
+ return false;
}
}
diff --git a/Mage.Sets/src/mage/cards/r/ReturnToBattle.java b/Mage.Sets/src/mage/cards/r/ReturnToBattle.java
index bbaaa9d0d84..8463c0c14e5 100644
--- a/Mage.Sets/src/mage/cards/r/ReturnToBattle.java
+++ b/Mage.Sets/src/mage/cards/r/ReturnToBattle.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LoneFox
*/
-public class ReturnToBattle extends CardImpl {
+public final class ReturnToBattle extends CardImpl {
public ReturnToBattle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/r/ReturnToDust.java b/Mage.Sets/src/mage/cards/r/ReturnToDust.java
index a4d3eff67c4..e3191d2a9f7 100644
--- a/Mage.Sets/src/mage/cards/r/ReturnToDust.java
+++ b/Mage.Sets/src/mage/cards/r/ReturnToDust.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class ReturnToDust extends CardImpl {
+public final class ReturnToDust extends CardImpl {
public ReturnToDust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReturnToTheEarth.java b/Mage.Sets/src/mage/cards/r/ReturnToTheEarth.java
index 928b0481bda..d8cdee7b0b4 100644
--- a/Mage.Sets/src/mage/cards/r/ReturnToTheEarth.java
+++ b/Mage.Sets/src/mage/cards/r/ReturnToTheEarth.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class ReturnToTheEarth extends CardImpl {
+public final class ReturnToTheEarth extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, enchantment, or creature with flying");
diff --git a/Mage.Sets/src/mage/cards/r/ReturnToTheRanks.java b/Mage.Sets/src/mage/cards/r/ReturnToTheRanks.java
index 9c71da98709..991f0e33851 100644
--- a/Mage.Sets/src/mage/cards/r/ReturnToTheRanks.java
+++ b/Mage.Sets/src/mage/cards/r/ReturnToTheRanks.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class ReturnToTheRanks extends CardImpl {
+public final class ReturnToTheRanks extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature cards with converted mana cost 2 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/r/ReturnedCentaur.java b/Mage.Sets/src/mage/cards/r/ReturnedCentaur.java
index c82ebc9ab3d..eb54edbdfa7 100644
--- a/Mage.Sets/src/mage/cards/r/ReturnedCentaur.java
+++ b/Mage.Sets/src/mage/cards/r/ReturnedCentaur.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class ReturnedCentaur extends CardImpl {
+public final class ReturnedCentaur extends CardImpl {
public ReturnedCentaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/ReturnedPhalanx.java b/Mage.Sets/src/mage/cards/r/ReturnedPhalanx.java
index 68c869c5e83..c637ec8467c 100644
--- a/Mage.Sets/src/mage/cards/r/ReturnedPhalanx.java
+++ b/Mage.Sets/src/mage/cards/r/ReturnedPhalanx.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ReturnedPhalanx extends CardImpl {
+public final class ReturnedPhalanx extends CardImpl {
public ReturnedPhalanx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/ReturnedReveler.java b/Mage.Sets/src/mage/cards/r/ReturnedReveler.java
index fb2e3c2b662..75dabb83feb 100644
--- a/Mage.Sets/src/mage/cards/r/ReturnedReveler.java
+++ b/Mage.Sets/src/mage/cards/r/ReturnedReveler.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class ReturnedReveler extends CardImpl {
+public final class ReturnedReveler extends CardImpl {
public ReturnedReveler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RevealingWind.java b/Mage.Sets/src/mage/cards/r/RevealingWind.java
index 31afaa470ae..961916a89ae 100644
--- a/Mage.Sets/src/mage/cards/r/RevealingWind.java
+++ b/Mage.Sets/src/mage/cards/r/RevealingWind.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RevealingWind extends CardImpl {
+public final class RevealingWind extends CardImpl {
public RevealingWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Reveillark.java b/Mage.Sets/src/mage/cards/r/Reveillark.java
index a63554789d9..66d2bce2087 100644
--- a/Mage.Sets/src/mage/cards/r/Reveillark.java
+++ b/Mage.Sets/src/mage/cards/r/Reveillark.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class Reveillark extends CardImpl {
+public final class Reveillark extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature cards with power 2 or less from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/r/ReveilleSquad.java b/Mage.Sets/src/mage/cards/r/ReveilleSquad.java
index fc79bb682b1..1202094669b 100644
--- a/Mage.Sets/src/mage/cards/r/ReveilleSquad.java
+++ b/Mage.Sets/src/mage/cards/r/ReveilleSquad.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent;
*
* @author TheElk801
*/
-public class ReveilleSquad extends CardImpl {
+public final class ReveilleSquad extends CardImpl {
public ReveilleSquad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RevekaWizardSavant.java b/Mage.Sets/src/mage/cards/r/RevekaWizardSavant.java
index 7ea2852c511..02b47dc85ea 100644
--- a/Mage.Sets/src/mage/cards/r/RevekaWizardSavant.java
+++ b/Mage.Sets/src/mage/cards/r/RevekaWizardSavant.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author hanasu
*/
-public class RevekaWizardSavant extends CardImpl {
+public final class RevekaWizardSavant extends CardImpl {
public RevekaWizardSavant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RevelInRiches.java b/Mage.Sets/src/mage/cards/r/RevelInRiches.java
index b17979d66e7..8ebb4e7c917 100644
--- a/Mage.Sets/src/mage/cards/r/RevelInRiches.java
+++ b/Mage.Sets/src/mage/cards/r/RevelInRiches.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author TheElk801
*/
-public class RevelInRiches extends CardImpl {
+public final class RevelInRiches extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature an opponent controls");
private static final FilterPermanent filter2 = new FilterPermanent("Treasures");
diff --git a/Mage.Sets/src/mage/cards/r/RevelOfTheFallenGod.java b/Mage.Sets/src/mage/cards/r/RevelOfTheFallenGod.java
index 4c42ec676d9..f64e0221ffd 100644
--- a/Mage.Sets/src/mage/cards/r/RevelOfTheFallenGod.java
+++ b/Mage.Sets/src/mage/cards/r/RevelOfTheFallenGod.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.RevelOfTheFallenGodSatyrToken;
*
* @author LevelX2
*/
-public class RevelOfTheFallenGod extends CardImpl {
+public final class RevelOfTheFallenGod extends CardImpl {
public RevelOfTheFallenGod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Revelation.java b/Mage.Sets/src/mage/cards/r/Revelation.java
index c2036a737d9..2655a4ed215 100644
--- a/Mage.Sets/src/mage/cards/r/Revelation.java
+++ b/Mage.Sets/src/mage/cards/r/Revelation.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class Revelation extends CardImpl {
+public final class Revelation extends CardImpl {
public Revelation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RevelsongHorn.java b/Mage.Sets/src/mage/cards/r/RevelsongHorn.java
index be71e104a68..4bba2495c5f 100644
--- a/Mage.Sets/src/mage/cards/r/RevelsongHorn.java
+++ b/Mage.Sets/src/mage/cards/r/RevelsongHorn.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class RevelsongHorn extends CardImpl {
+public final class RevelsongHorn extends CardImpl {
public RevelsongHorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/r/Revenant.java b/Mage.Sets/src/mage/cards/r/Revenant.java
index 8e71077c7c3..82abf9cd9e4 100644
--- a/Mage.Sets/src/mage/cards/r/Revenant.java
+++ b/Mage.Sets/src/mage/cards/r/Revenant.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author fireshoes
*/
-public class Revenant extends CardImpl {
+public final class Revenant extends CardImpl {
public Revenant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RevenantPatriarch.java b/Mage.Sets/src/mage/cards/r/RevenantPatriarch.java
index a50bdf6ddf9..d78dc81840c 100644
--- a/Mage.Sets/src/mage/cards/r/RevenantPatriarch.java
+++ b/Mage.Sets/src/mage/cards/r/RevenantPatriarch.java
@@ -47,7 +47,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author ilcartographer
*/
-public class RevenantPatriarch extends CardImpl {
+public final class RevenantPatriarch extends CardImpl {
public RevenantPatriarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Revenge.java b/Mage.Sets/src/mage/cards/r/Revenge.java
index bdcb225bf4c..8dc53a7254b 100644
--- a/Mage.Sets/src/mage/cards/r/Revenge.java
+++ b/Mage.Sets/src/mage/cards/r/Revenge.java
@@ -51,7 +51,7 @@ import mage.watchers.common.PlayerLostLifeWatcher;
*
* @author Styxo
*/
-public class Revenge extends CardImpl {
+public final class Revenge extends CardImpl {
public Revenge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RevengeOfTheHunted.java b/Mage.Sets/src/mage/cards/r/RevengeOfTheHunted.java
index 5e0d2bd8e10..9053a72b696 100644
--- a/Mage.Sets/src/mage/cards/r/RevengeOfTheHunted.java
+++ b/Mage.Sets/src/mage/cards/r/RevengeOfTheHunted.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class RevengeOfTheHunted extends CardImpl {
+public final class RevengeOfTheHunted extends CardImpl {
public RevengeOfTheHunted(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Reverberate.java b/Mage.Sets/src/mage/cards/r/Reverberate.java
index c41977c6d18..9b958216ffa 100644
--- a/Mage.Sets/src/mage/cards/r/Reverberate.java
+++ b/Mage.Sets/src/mage/cards/r/Reverberate.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Reverberate extends CardImpl {
+public final class Reverberate extends CardImpl {
private static final FilterSpell filter = new FilterSpell();
diff --git a/Mage.Sets/src/mage/cards/r/ReveredDead.java b/Mage.Sets/src/mage/cards/r/ReveredDead.java
index 9448d19ea37..3309179aa59 100644
--- a/Mage.Sets/src/mage/cards/r/ReveredDead.java
+++ b/Mage.Sets/src/mage/cards/r/ReveredDead.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class ReveredDead extends CardImpl {
+public final class ReveredDead extends CardImpl {
public ReveredDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReveredElder.java b/Mage.Sets/src/mage/cards/r/ReveredElder.java
index e2f0370c2e6..8cd92666630 100644
--- a/Mage.Sets/src/mage/cards/r/ReveredElder.java
+++ b/Mage.Sets/src/mage/cards/r/ReveredElder.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author L_J
*/
-public class ReveredElder extends CardImpl {
+public final class ReveredElder extends CardImpl {
public ReveredElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReveredUnicorn.java b/Mage.Sets/src/mage/cards/r/ReveredUnicorn.java
index 91265345ead..af3982f17e8 100644
--- a/Mage.Sets/src/mage/cards/r/ReveredUnicorn.java
+++ b/Mage.Sets/src/mage/cards/r/ReveredUnicorn.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class ReveredUnicorn extends CardImpl {
+public final class ReveredUnicorn extends CardImpl {
public ReveredUnicorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Reverence.java b/Mage.Sets/src/mage/cards/r/Reverence.java
index 13f9db21ff1..0cbb43cbac3 100644
--- a/Mage.Sets/src/mage/cards/r/Reverence.java
+++ b/Mage.Sets/src/mage/cards/r/Reverence.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author LevelX2
*/
-public class Reverence extends CardImpl {
+public final class Reverence extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/r/ReverentHunter.java b/Mage.Sets/src/mage/cards/r/ReverentHunter.java
index 8078c6828a0..05d24928d6f 100644
--- a/Mage.Sets/src/mage/cards/r/ReverentHunter.java
+++ b/Mage.Sets/src/mage/cards/r/ReverentHunter.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class ReverentHunter extends CardImpl {
+public final class ReverentHunter extends CardImpl {
public ReverentHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/ReverentMantra.java b/Mage.Sets/src/mage/cards/r/ReverentMantra.java
index 6cd1804de64..7f9c4aa78d5 100644
--- a/Mage.Sets/src/mage/cards/r/ReverentMantra.java
+++ b/Mage.Sets/src/mage/cards/r/ReverentMantra.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author ciaccona007
*/
-public class ReverentMantra extends CardImpl {
+public final class ReverentMantra extends CardImpl {
public ReverentMantra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReverentSilence.java b/Mage.Sets/src/mage/cards/r/ReverentSilence.java
index 4bee85c2f1c..3917d510f62 100644
--- a/Mage.Sets/src/mage/cards/r/ReverentSilence.java
+++ b/Mage.Sets/src/mage/cards/r/ReverentSilence.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class ReverentSilence extends CardImpl {
+public final class ReverentSilence extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("If you control a Forest");
diff --git a/Mage.Sets/src/mage/cards/r/ReversalOfFortune.java b/Mage.Sets/src/mage/cards/r/ReversalOfFortune.java
index 1af82ceb567..7ed1bbffe19 100644
--- a/Mage.Sets/src/mage/cards/r/ReversalOfFortune.java
+++ b/Mage.Sets/src/mage/cards/r/ReversalOfFortune.java
@@ -28,6 +28,7 @@
package mage.cards.r;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
@@ -48,11 +49,10 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class ReversalOfFortune extends CardImpl {
+public final class ReversalOfFortune extends CardImpl {
public ReversalOfFortune(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}{R}");
// Target opponent reveals their hand. You may copy an instant or sorcery card in it. If you do, you may cast the copy without paying its mana cost.
this.getSpellAbility().addEffect(new ReversalOfFortuneEffect());
@@ -69,7 +69,6 @@ public class ReversalOfFortune extends CardImpl {
}
}
-
class ReversalOfFortuneEffect extends OneShotEffect {
public ReversalOfFortuneEffect() {
@@ -88,28 +87,27 @@ class ReversalOfFortuneEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
-
+
Player controller = game.getPlayer(source.getControllerId());
Player opponent = game.getPlayer(source.getFirstTarget());
if (controller != null && opponent != null) {
// Target opponent reveals their hand
- Cards revealedCards = new CardsImpl();
- revealedCards.addAll(opponent.getHand());
+ Cards revealedCards = new CardsImpl();
+ revealedCards.addAll(opponent.getHand());
opponent.revealCards("Reveal", revealedCards, game);
-
+
//You may copy an instant or sorcery card in it
- TargetCard target = new TargetCard(1, Zone.HAND, new FilterInstantOrSorceryCard());
+ TargetCard target = new TargetCard(1, Zone.HAND, new FilterInstantOrSorceryCard());
target.setRequired(false);
if (controller.choose(outcome, revealedCards, target, game)) {
Card card = revealedCards.get((UUID) target.getFirstTarget(), game);
//If you do, you may cast the copy without paying its mana cost
- if(card != null){
+ if (card != null) {
Card copiedCard = game.copyCard(card, source, source.getControllerId());
if (controller.chooseUse(outcome, "Cast the copied card without paying mana cost?", source, game)) {
- controller.cast(copiedCard.getSpellAbility(), game, true);
+ controller.cast(copiedCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
- }
- else{
+ } else {
return false;
}
}
@@ -117,4 +115,4 @@ class ReversalOfFortuneEffect extends OneShotEffect {
}
return false;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/r/ReverseDamage.java b/Mage.Sets/src/mage/cards/r/ReverseDamage.java
index d7b0b5f22c9..169ad2c5289 100644
--- a/Mage.Sets/src/mage/cards/r/ReverseDamage.java
+++ b/Mage.Sets/src/mage/cards/r/ReverseDamage.java
@@ -45,7 +45,7 @@ import mage.target.TargetSource;
*
* @author Quercitron
*/
-public class ReverseDamage extends CardImpl {
+public final class ReverseDamage extends CardImpl {
public ReverseDamage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReverseEngineer.java b/Mage.Sets/src/mage/cards/r/ReverseEngineer.java
index dfa998127b3..52b70ff6f9e 100644
--- a/Mage.Sets/src/mage/cards/r/ReverseEngineer.java
+++ b/Mage.Sets/src/mage/cards/r/ReverseEngineer.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class ReverseEngineer extends CardImpl {
+public final class ReverseEngineer extends CardImpl {
public ReverseEngineer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReversePolarity.java b/Mage.Sets/src/mage/cards/r/ReversePolarity.java
index 8e6766f700c..aec1a47d06a 100644
--- a/Mage.Sets/src/mage/cards/r/ReversePolarity.java
+++ b/Mage.Sets/src/mage/cards/r/ReversePolarity.java
@@ -48,7 +48,7 @@ import mage.watchers.Watcher;
*
* @author jeffwadsworth, MTGFan & L_J
*/
-public class ReversePolarity extends CardImpl {
+public final class ReversePolarity extends CardImpl {
public ReversePolarity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReverseTheSands.java b/Mage.Sets/src/mage/cards/r/ReverseTheSands.java
index bd9554ae7e2..1a9d4bd0a18 100644
--- a/Mage.Sets/src/mage/cards/r/ReverseTheSands.java
+++ b/Mage.Sets/src/mage/cards/r/ReverseTheSands.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ReverseTheSands extends CardImpl {
+public final class ReverseTheSands extends CardImpl {
public ReverseTheSands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Revitalize.java b/Mage.Sets/src/mage/cards/r/Revitalize.java
new file mode 100644
index 00000000000..81299bd94f9
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/r/Revitalize.java
@@ -0,0 +1,61 @@
+/*
+ * 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.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class Revitalize extends CardImpl {
+
+ public Revitalize(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
+
+ // You gain 3 life.
+ this.getSpellAbility().addEffect(new GainLifeEffect(4));
+
+ // Draw a card.
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ }
+
+ public Revitalize(final Revitalize card) {
+ super(card);
+ }
+
+ @Override
+ public Revitalize copy() {
+ return new Revitalize(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/r/Revive.java b/Mage.Sets/src/mage/cards/r/Revive.java
index b7712738864..c8972219cfd 100644
--- a/Mage.Sets/src/mage/cards/r/Revive.java
+++ b/Mage.Sets/src/mage/cards/r/Revive.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class Revive extends CardImpl {
+public final class Revive extends CardImpl {
private static final FilterCard filter = new FilterCard("green card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/r/ReviveTheFallen.java b/Mage.Sets/src/mage/cards/r/ReviveTheFallen.java
index 01d3624a72d..0c970c65c5c 100644
--- a/Mage.Sets/src/mage/cards/r/ReviveTheFallen.java
+++ b/Mage.Sets/src/mage/cards/r/ReviveTheFallen.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LoneFox
*/
-public class ReviveTheFallen extends CardImpl {
+public final class ReviveTheFallen extends CardImpl {
public ReviveTheFallen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RevivingDose.java b/Mage.Sets/src/mage/cards/r/RevivingDose.java
index a1658543ecd..614e552aa6d 100644
--- a/Mage.Sets/src/mage/cards/r/RevivingDose.java
+++ b/Mage.Sets/src/mage/cards/r/RevivingDose.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class RevivingDose extends CardImpl {
+public final class RevivingDose extends CardImpl {
public RevivingDose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RevivingMelody.java b/Mage.Sets/src/mage/cards/r/RevivingMelody.java
index 69327c6dd0f..557c1376021 100644
--- a/Mage.Sets/src/mage/cards/r/RevivingMelody.java
+++ b/Mage.Sets/src/mage/cards/r/RevivingMelody.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class RevivingMelody extends CardImpl {
+public final class RevivingMelody extends CardImpl {
private static final FilterCard filterCard = new FilterCard("enchantment card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/r/RevivingVapors.java b/Mage.Sets/src/mage/cards/r/RevivingVapors.java
index bfcdc0a78ce..73d8aee64e0 100644
--- a/Mage.Sets/src/mage/cards/r/RevivingVapors.java
+++ b/Mage.Sets/src/mage/cards/r/RevivingVapors.java
@@ -48,7 +48,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class RevivingVapors extends CardImpl {
+public final class RevivingVapors extends CardImpl {
public RevivingVapors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RevokeExistence.java b/Mage.Sets/src/mage/cards/r/RevokeExistence.java
index 7d90b7e383e..29d40bfcd28 100644
--- a/Mage.Sets/src/mage/cards/r/RevokeExistence.java
+++ b/Mage.Sets/src/mage/cards/r/RevokeExistence.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class RevokeExistence extends CardImpl {
+public final class RevokeExistence extends CardImpl {
public RevokeExistence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RevokePrivileges.java b/Mage.Sets/src/mage/cards/r/RevokePrivileges.java
index 6eb42b4915b..9c6fffeecd0 100644
--- a/Mage.Sets/src/mage/cards/r/RevokePrivileges.java
+++ b/Mage.Sets/src/mage/cards/r/RevokePrivileges.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RevokePrivileges extends CardImpl {
+public final class RevokePrivileges extends CardImpl {
public RevokePrivileges(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RevolutionaryRebuff.java b/Mage.Sets/src/mage/cards/r/RevolutionaryRebuff.java
index 8fc0d6f6cfa..344199c4114 100644
--- a/Mage.Sets/src/mage/cards/r/RevolutionaryRebuff.java
+++ b/Mage.Sets/src/mage/cards/r/RevolutionaryRebuff.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class RevolutionaryRebuff extends CardImpl {
+public final class RevolutionaryRebuff extends CardImpl {
public RevolutionaryRebuff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RewardTheFaithful.java b/Mage.Sets/src/mage/cards/r/RewardTheFaithful.java
index 46eafe8f828..0aed1876408 100644
--- a/Mage.Sets/src/mage/cards/r/RewardTheFaithful.java
+++ b/Mage.Sets/src/mage/cards/r/RewardTheFaithful.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author nigelzor
*/
-public class RewardTheFaithful extends CardImpl {
+public final class RewardTheFaithful extends CardImpl {
public RewardTheFaithful(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RewardsOfDiversity.java b/Mage.Sets/src/mage/cards/r/RewardsOfDiversity.java
index cf5701e8cd5..9ccf9e663f8 100644
--- a/Mage.Sets/src/mage/cards/r/RewardsOfDiversity.java
+++ b/Mage.Sets/src/mage/cards/r/RewardsOfDiversity.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class RewardsOfDiversity extends CardImpl {
+public final class RewardsOfDiversity extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a multicolored spell");
diff --git a/Mage.Sets/src/mage/cards/r/Reweave.java b/Mage.Sets/src/mage/cards/r/Reweave.java
index 5e48f513913..3fddd8468de 100644
--- a/Mage.Sets/src/mage/cards/r/Reweave.java
+++ b/Mage.Sets/src/mage/cards/r/Reweave.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class Reweave extends CardImpl {
+public final class Reweave extends CardImpl {
public Reweave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Rewind.java b/Mage.Sets/src/mage/cards/r/Rewind.java
index 08c839f5563..88ba7d242a5 100644
--- a/Mage.Sets/src/mage/cards/r/Rewind.java
+++ b/Mage.Sets/src/mage/cards/r/Rewind.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class Rewind extends CardImpl {
+public final class Rewind extends CardImpl {
public Rewind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/ReyaDawnbringer.java b/Mage.Sets/src/mage/cards/r/ReyaDawnbringer.java
index fe20bf2d3f8..b651f8e5b4d 100644
--- a/Mage.Sets/src/mage/cards/r/ReyaDawnbringer.java
+++ b/Mage.Sets/src/mage/cards/r/ReyaDawnbringer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class ReyaDawnbringer extends CardImpl {
+public final class ReyaDawnbringer extends CardImpl {
public ReyaDawnbringer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java b/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java
index d6cbdea28b3..da168f8ef14 100644
--- a/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java
+++ b/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ReyhanLastOfTheAbzan extends CardImpl {
+public final class ReyhanLastOfTheAbzan extends CardImpl {
public ReyhanLastOfTheAbzan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RhetCropSpearmaster.java b/Mage.Sets/src/mage/cards/r/RhetCropSpearmaster.java
index 7953a1e34c0..6cda2954b4b 100644
--- a/Mage.Sets/src/mage/cards/r/RhetCropSpearmaster.java
+++ b/Mage.Sets/src/mage/cards/r/RhetCropSpearmaster.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author stravant
*/
-public class RhetCropSpearmaster extends CardImpl {
+public final class RhetCropSpearmaster extends CardImpl {
public RhetCropSpearmaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java b/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java
index b698639528b..30ac46ea71c 100644
--- a/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java
+++ b/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author fireshoes
*/
-public class RhonasTheIndomitable extends CardImpl {
+public final class RhonasTheIndomitable extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/r/RhonassLastStand.java b/Mage.Sets/src/mage/cards/r/RhonassLastStand.java
index 79a8fbd7848..079cfd4200f 100644
--- a/Mage.Sets/src/mage/cards/r/RhonassLastStand.java
+++ b/Mage.Sets/src/mage/cards/r/RhonassLastStand.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.RhonassLastStandToken;
*
* @author spjspj
*/
-public class RhonassLastStand extends CardImpl {
+public final class RhonassLastStand extends CardImpl {
public RhonassLastStand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RhonassMonument.java b/Mage.Sets/src/mage/cards/r/RhonassMonument.java
index 66818bf2df3..e72d6c6d649 100644
--- a/Mage.Sets/src/mage/cards/r/RhonassMonument.java
+++ b/Mage.Sets/src/mage/cards/r/RhonassMonument.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class RhonassMonument extends CardImpl {
+public final class RhonassMonument extends CardImpl {
private static final FilterCard filter = new FilterCard("Green creature spells");
private static final FilterSpell filter2 = new FilterSpell("a creature spell");
diff --git a/Mage.Sets/src/mage/cards/r/RhonassStalwart.java b/Mage.Sets/src/mage/cards/r/RhonassStalwart.java
index 3dc348ece85..2a3ddbf6091 100644
--- a/Mage.Sets/src/mage/cards/r/RhonassStalwart.java
+++ b/Mage.Sets/src/mage/cards/r/RhonassStalwart.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author spjspj
*/
-public class RhonassStalwart extends CardImpl {
+public final class RhonassStalwart extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/r/Rhox.java b/Mage.Sets/src/mage/cards/r/Rhox.java
index ac3a5629716..b4c2682a6ff 100644
--- a/Mage.Sets/src/mage/cards/r/Rhox.java
+++ b/Mage.Sets/src/mage/cards/r/Rhox.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class Rhox extends CardImpl {
+public final class Rhox extends CardImpl {
public Rhox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RhoxBodyguard.java b/Mage.Sets/src/mage/cards/r/RhoxBodyguard.java
index ac7756073f1..4b26acad647 100644
--- a/Mage.Sets/src/mage/cards/r/RhoxBodyguard.java
+++ b/Mage.Sets/src/mage/cards/r/RhoxBodyguard.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class RhoxBodyguard extends CardImpl {
+public final class RhoxBodyguard extends CardImpl {
public RhoxBodyguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RhoxBrute.java b/Mage.Sets/src/mage/cards/r/RhoxBrute.java
index ab5ea1b968c..cf4a1471847 100644
--- a/Mage.Sets/src/mage/cards/r/RhoxBrute.java
+++ b/Mage.Sets/src/mage/cards/r/RhoxBrute.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class RhoxBrute extends CardImpl {
+public final class RhoxBrute extends CardImpl {
public RhoxBrute (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RhoxCharger.java b/Mage.Sets/src/mage/cards/r/RhoxCharger.java
index cfc95352132..9b130d68cea 100644
--- a/Mage.Sets/src/mage/cards/r/RhoxCharger.java
+++ b/Mage.Sets/src/mage/cards/r/RhoxCharger.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class RhoxCharger extends CardImpl {
+public final class RhoxCharger extends CardImpl {
public RhoxCharger (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RhoxFaithmender.java b/Mage.Sets/src/mage/cards/r/RhoxFaithmender.java
index c071d9de8a5..68323d64334 100644
--- a/Mage.Sets/src/mage/cards/r/RhoxFaithmender.java
+++ b/Mage.Sets/src/mage/cards/r/RhoxFaithmender.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author noxx and jeffwadsworth
*/
-public class RhoxFaithmender extends CardImpl {
+public final class RhoxFaithmender extends CardImpl {
public RhoxFaithmender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RhoxMaulers.java b/Mage.Sets/src/mage/cards/r/RhoxMaulers.java
index c50e28cb614..3da41ea793a 100644
--- a/Mage.Sets/src/mage/cards/r/RhoxMaulers.java
+++ b/Mage.Sets/src/mage/cards/r/RhoxMaulers.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RhoxMaulers extends CardImpl {
+public final class RhoxMaulers extends CardImpl {
public RhoxMaulers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RhoxMeditant.java b/Mage.Sets/src/mage/cards/r/RhoxMeditant.java
index fddfa629660..48c7f5a1665 100644
--- a/Mage.Sets/src/mage/cards/r/RhoxMeditant.java
+++ b/Mage.Sets/src/mage/cards/r/RhoxMeditant.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class RhoxMeditant extends CardImpl {
+public final class RhoxMeditant extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("green permanent");
diff --git a/Mage.Sets/src/mage/cards/r/RhoxPikemaster.java b/Mage.Sets/src/mage/cards/r/RhoxPikemaster.java
index a2d4e81a44f..12326ecb129 100644
--- a/Mage.Sets/src/mage/cards/r/RhoxPikemaster.java
+++ b/Mage.Sets/src/mage/cards/r/RhoxPikemaster.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class RhoxPikemaster extends CardImpl {
+public final class RhoxPikemaster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RhoxWarMonk.java b/Mage.Sets/src/mage/cards/r/RhoxWarMonk.java
index 295e7907f45..f6f423a9a47 100644
--- a/Mage.Sets/src/mage/cards/r/RhoxWarMonk.java
+++ b/Mage.Sets/src/mage/cards/r/RhoxWarMonk.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RhoxWarMonk extends CardImpl {
+public final class RhoxWarMonk extends CardImpl {
public RhoxWarMonk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RhysTheExiled.java b/Mage.Sets/src/mage/cards/r/RhysTheExiled.java
index be4a92f39cd..3f7a3795043 100644
--- a/Mage.Sets/src/mage/cards/r/RhysTheExiled.java
+++ b/Mage.Sets/src/mage/cards/r/RhysTheExiled.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class RhysTheExiled extends CardImpl {
+public final class RhysTheExiled extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elf");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Elf you control");
diff --git a/Mage.Sets/src/mage/cards/r/RhysTheRedeemed.java b/Mage.Sets/src/mage/cards/r/RhysTheRedeemed.java
index 56d40c4b4c5..6dcec709558 100644
--- a/Mage.Sets/src/mage/cards/r/RhysTheRedeemed.java
+++ b/Mage.Sets/src/mage/cards/r/RhysTheRedeemed.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class RhysTheRedeemed extends CardImpl {
+public final class RhysTheRedeemed extends CardImpl {
public RhysTheRedeemed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G/W}");
diff --git a/Mage.Sets/src/mage/cards/r/RhysticCave.java b/Mage.Sets/src/mage/cards/r/RhysticCave.java
index bca1ff1151d..e5a893545ab 100644
--- a/Mage.Sets/src/mage/cards/r/RhysticCave.java
+++ b/Mage.Sets/src/mage/cards/r/RhysticCave.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author jerekwilson
*/
-public class RhysticCave extends CardImpl {
+public final class RhysticCave extends CardImpl {
public RhysticCave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
@@ -87,12 +87,12 @@ class RhysticCaveManaAbility extends ActivatedManaAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
Player player = game.getPlayer(playerId);
if (player != null && !player.isInPayManaMode()) {
return super.canActivate(playerId, game);
}
- return false;
+ return ActivationStatus.getFalse();
}
@Override
diff --git a/Mage.Sets/src/mage/cards/r/RhysticCircle.java b/Mage.Sets/src/mage/cards/r/RhysticCircle.java
index 8f19e82b9d2..64367700b88 100644
--- a/Mage.Sets/src/mage/cards/r/RhysticCircle.java
+++ b/Mage.Sets/src/mage/cards/r/RhysticCircle.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
* @author djbrez
*/
-public class RhysticCircle extends CardImpl {
+public final class RhysticCircle extends CardImpl {
public RhysticCircle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RhysticDeluge.java b/Mage.Sets/src/mage/cards/r/RhysticDeluge.java
index 4434da3ec3b..caaec2c0ff9 100644
--- a/Mage.Sets/src/mage/cards/r/RhysticDeluge.java
+++ b/Mage.Sets/src/mage/cards/r/RhysticDeluge.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class RhysticDeluge extends CardImpl {
+public final class RhysticDeluge extends CardImpl {
public RhysticDeluge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RhysticLightning.java b/Mage.Sets/src/mage/cards/r/RhysticLightning.java
index 03e8371e45c..e12b05c53be 100644
--- a/Mage.Sets/src/mage/cards/r/RhysticLightning.java
+++ b/Mage.Sets/src/mage/cards/r/RhysticLightning.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author L_J
*/
-public class RhysticLightning extends CardImpl {
+public final class RhysticLightning extends CardImpl {
public RhysticLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RhysticScrying.java b/Mage.Sets/src/mage/cards/r/RhysticScrying.java
index 5dae1c43106..29f0568038f 100644
--- a/Mage.Sets/src/mage/cards/r/RhysticScrying.java
+++ b/Mage.Sets/src/mage/cards/r/RhysticScrying.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class RhysticScrying extends CardImpl {
+public final class RhysticScrying extends CardImpl {
public RhysticScrying(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RhysticShield.java b/Mage.Sets/src/mage/cards/r/RhysticShield.java
index ad8e47187f9..5f77e2c36c0 100644
--- a/Mage.Sets/src/mage/cards/r/RhysticShield.java
+++ b/Mage.Sets/src/mage/cards/r/RhysticShield.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author L_J
*/
-public class RhysticShield extends CardImpl {
+public final class RhysticShield extends CardImpl {
public RhysticShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RhysticStudy.java b/Mage.Sets/src/mage/cards/r/RhysticStudy.java
index f8ad93881a7..8dab092319b 100644
--- a/Mage.Sets/src/mage/cards/r/RhysticStudy.java
+++ b/Mage.Sets/src/mage/cards/r/RhysticStudy.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Quercitron
*/
-public class RhysticStudy extends CardImpl {
+public final class RhysticStudy extends CardImpl {
public RhysticStudy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RhysticSyphon.java b/Mage.Sets/src/mage/cards/r/RhysticSyphon.java
index 9435deb09fb..0176e227ac6 100644
--- a/Mage.Sets/src/mage/cards/r/RhysticSyphon.java
+++ b/Mage.Sets/src/mage/cards/r/RhysticSyphon.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author L_J
*/
-public class RhysticSyphon extends CardImpl {
+public final class RhysticSyphon extends CardImpl {
public RhysticSyphon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RhysticTutor.java b/Mage.Sets/src/mage/cards/r/RhysticTutor.java
index 2ad56677652..ee9863807e0 100644
--- a/Mage.Sets/src/mage/cards/r/RhysticTutor.java
+++ b/Mage.Sets/src/mage/cards/r/RhysticTutor.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LoneFox
*/
-public class RhysticTutor extends CardImpl {
+public final class RhysticTutor extends CardImpl {
public RhysticTutor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RibCageSpider.java b/Mage.Sets/src/mage/cards/r/RibCageSpider.java
index 6e9af6f47ab..588a33e9ffc 100644
--- a/Mage.Sets/src/mage/cards/r/RibCageSpider.java
+++ b/Mage.Sets/src/mage/cards/r/RibCageSpider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RibCageSpider extends CardImpl {
+public final class RibCageSpider extends CardImpl {
public RibCageSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RibbonSnake.java b/Mage.Sets/src/mage/cards/r/RibbonSnake.java
index bed400e4eb4..10753d1ef78 100644
--- a/Mage.Sets/src/mage/cards/r/RibbonSnake.java
+++ b/Mage.Sets/src/mage/cards/r/RibbonSnake.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class RibbonSnake extends CardImpl {
+public final class RibbonSnake extends CardImpl {
public RibbonSnake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RibbonsOfNight.java b/Mage.Sets/src/mage/cards/r/RibbonsOfNight.java
index c69a927bfaa..83799ad2fda 100644
--- a/Mage.Sets/src/mage/cards/r/RibbonsOfNight.java
+++ b/Mage.Sets/src/mage/cards/r/RibbonsOfNight.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Wehk
*/
-public class RibbonsOfNight extends CardImpl {
+public final class RibbonsOfNight extends CardImpl {
public RibbonsOfNight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RibbonsOfTheReikai.java b/Mage.Sets/src/mage/cards/r/RibbonsOfTheReikai.java
index eb58a68428c..526015c7f16 100644
--- a/Mage.Sets/src/mage/cards/r/RibbonsOfTheReikai.java
+++ b/Mage.Sets/src/mage/cards/r/RibbonsOfTheReikai.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author anonymous
*/
-public class RibbonsOfTheReikai extends CardImpl {
+public final class RibbonsOfTheReikai extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Spirit you control");
diff --git a/Mage.Sets/src/mage/cards/r/RicochetTrap.java b/Mage.Sets/src/mage/cards/r/RicochetTrap.java
index 8831376ee09..8a8901a186c 100644
--- a/Mage.Sets/src/mage/cards/r/RicochetTrap.java
+++ b/Mage.Sets/src/mage/cards/r/RicochetTrap.java
@@ -49,7 +49,7 @@ import java.util.UUID;
/**
* @author jeffwadsworth
*/
-public class RicochetTrap extends CardImpl {
+public final class RicochetTrap extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell with a single target");
diff --git a/Mage.Sets/src/mage/cards/r/RiddleOfLightning.java b/Mage.Sets/src/mage/cards/r/RiddleOfLightning.java
index 89860eaca4d..7db61e8caa0 100644
--- a/Mage.Sets/src/mage/cards/r/RiddleOfLightning.java
+++ b/Mage.Sets/src/mage/cards/r/RiddleOfLightning.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class RiddleOfLightning extends CardImpl {
+public final class RiddleOfLightning extends CardImpl {
public RiddleOfLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Riddleform.java b/Mage.Sets/src/mage/cards/r/Riddleform.java
index 421a9f75852..c602969d8aa 100644
--- a/Mage.Sets/src/mage/cards/r/Riddleform.java
+++ b/Mage.Sets/src/mage/cards/r/Riddleform.java
@@ -53,7 +53,7 @@ import mage.game.permanent.token.Token;
*
* @author spjspj
*/
-public class Riddleform extends CardImpl {
+public final class Riddleform extends CardImpl {
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/r/Riddlekeeper.java b/Mage.Sets/src/mage/cards/r/Riddlekeeper.java
index 1ab97900e95..193745629ee 100644
--- a/Mage.Sets/src/mage/cards/r/Riddlekeeper.java
+++ b/Mage.Sets/src/mage/cards/r/Riddlekeeper.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author Styxo
*/
-public class Riddlekeeper extends CardImpl {
+public final class Riddlekeeper extends CardImpl {
public Riddlekeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Riddlesmith.java b/Mage.Sets/src/mage/cards/r/Riddlesmith.java
index 8e42352f471..657719134f0 100644
--- a/Mage.Sets/src/mage/cards/r/Riddlesmith.java
+++ b/Mage.Sets/src/mage/cards/r/Riddlesmith.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterArtifactSpell;
*
* @author Loki, North
*/
-public class Riddlesmith extends CardImpl {
+public final class Riddlesmith extends CardImpl {
public Riddlesmith (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
this.subtype.add(SubType.HUMAN);
diff --git a/Mage.Sets/src/mage/cards/r/RideDown.java b/Mage.Sets/src/mage/cards/r/RideDown.java
index 5cdb3189947..3143807a744 100644
--- a/Mage.Sets/src/mage/cards/r/RideDown.java
+++ b/Mage.Sets/src/mage/cards/r/RideDown.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class RideDown extends CardImpl {
+public final class RideDown extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blocking creature");
diff --git a/Mage.Sets/src/mage/cards/r/RidersOfGavony.java b/Mage.Sets/src/mage/cards/r/RidersOfGavony.java
index 57e86a791c6..d1d0e46897a 100644
--- a/Mage.Sets/src/mage/cards/r/RidersOfGavony.java
+++ b/Mage.Sets/src/mage/cards/r/RidersOfGavony.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
/**
* @author noxx
*/
-public class RidersOfGavony extends CardImpl {
+public final class RidersOfGavony extends CardImpl {
public RidersOfGavony(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RidgeRannet.java b/Mage.Sets/src/mage/cards/r/RidgeRannet.java
index 53107ff11c3..7f0292c8f15 100644
--- a/Mage.Sets/src/mage/cards/r/RidgeRannet.java
+++ b/Mage.Sets/src/mage/cards/r/RidgeRannet.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RidgeRannet extends CardImpl {
+public final class RidgeRannet extends CardImpl {
public RidgeRannet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RidgedKusite.java b/Mage.Sets/src/mage/cards/r/RidgedKusite.java
index 22596f30680..5c7081a461b 100644
--- a/Mage.Sets/src/mage/cards/r/RidgedKusite.java
+++ b/Mage.Sets/src/mage/cards/r/RidgedKusite.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class RidgedKusite extends CardImpl {
+public final class RidgedKusite extends CardImpl {
public RidgedKusite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RidgelineRager.java b/Mage.Sets/src/mage/cards/r/RidgelineRager.java
index f116b0a7de3..c96efe95245 100644
--- a/Mage.Sets/src/mage/cards/r/RidgelineRager.java
+++ b/Mage.Sets/src/mage/cards/r/RidgelineRager.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class RidgelineRager extends CardImpl {
+public final class RidgelineRager extends CardImpl {
public RidgelineRager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RidgescaleTusker.java b/Mage.Sets/src/mage/cards/r/RidgescaleTusker.java
index 6d25e20cab4..a050a1cbc85 100644
--- a/Mage.Sets/src/mage/cards/r/RidgescaleTusker.java
+++ b/Mage.Sets/src/mage/cards/r/RidgescaleTusker.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class RidgescaleTusker extends CardImpl {
+public final class RidgescaleTusker extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other creature you control");
diff --git a/Mage.Sets/src/mage/cards/r/RidgetopRaptor.java b/Mage.Sets/src/mage/cards/r/RidgetopRaptor.java
index 5c3be5f1fd6..82ab6b2eb59 100644
--- a/Mage.Sets/src/mage/cards/r/RidgetopRaptor.java
+++ b/Mage.Sets/src/mage/cards/r/RidgetopRaptor.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RidgetopRaptor extends CardImpl {
+public final class RidgetopRaptor extends CardImpl {
public RidgetopRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RidingRedHare.java b/Mage.Sets/src/mage/cards/r/RidingRedHare.java
index da24d129df8..2fdeb35b27d 100644
--- a/Mage.Sets/src/mage/cards/r/RidingRedHare.java
+++ b/Mage.Sets/src/mage/cards/r/RidingRedHare.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class RidingRedHare extends CardImpl {
+public final class RidingRedHare extends CardImpl {
public RidingRedHare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RidingRonto.java b/Mage.Sets/src/mage/cards/r/RidingRonto.java
index 6ba09ec8d40..2e1377912e5 100644
--- a/Mage.Sets/src/mage/cards/r/RidingRonto.java
+++ b/Mage.Sets/src/mage/cards/r/RidingRonto.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class RidingRonto extends CardImpl {
+public final class RidingRonto extends CardImpl {
public RidingRonto(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RidingTheDiluHorse.java b/Mage.Sets/src/mage/cards/r/RidingTheDiluHorse.java
index 5d05c10b7ea..b5c7786cdf3 100644
--- a/Mage.Sets/src/mage/cards/r/RidingTheDiluHorse.java
+++ b/Mage.Sets/src/mage/cards/r/RidingTheDiluHorse.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class RidingTheDiluHorse extends CardImpl {
+public final class RidingTheDiluHorse extends CardImpl {
public RidingTheDiluHorse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RiftBolt.java b/Mage.Sets/src/mage/cards/r/RiftBolt.java
index cb0d541cd41..5bb886216ee 100644
--- a/Mage.Sets/src/mage/cards/r/RiftBolt.java
+++ b/Mage.Sets/src/mage/cards/r/RiftBolt.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class RiftBolt extends CardImpl {
+public final class RiftBolt extends CardImpl {
public RiftBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RiftElemental.java b/Mage.Sets/src/mage/cards/r/RiftElemental.java
index bb16f5cc6d7..fb993eb66de 100644
--- a/Mage.Sets/src/mage/cards/r/RiftElemental.java
+++ b/Mage.Sets/src/mage/cards/r/RiftElemental.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetPermanentOrSuspendedCard;
*
* @author LevelX2
*/
-public class RiftElemental extends CardImpl {
+public final class RiftElemental extends CardImpl {
public RiftElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RiftmarkedKnight.java b/Mage.Sets/src/mage/cards/r/RiftmarkedKnight.java
index f4d2fa19f78..55812a904be 100644
--- a/Mage.Sets/src/mage/cards/r/RiftmarkedKnight.java
+++ b/Mage.Sets/src/mage/cards/r/RiftmarkedKnight.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.RiftmarkedKnightToken;
*
* @author JRHerlehy
*/
-public class RiftmarkedKnight extends CardImpl {
+public final class RiftmarkedKnight extends CardImpl {
public RiftmarkedKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RiftstonePortal.java b/Mage.Sets/src/mage/cards/r/RiftstonePortal.java
index fde39d557a0..48c795887c8 100644
--- a/Mage.Sets/src/mage/cards/r/RiftstonePortal.java
+++ b/Mage.Sets/src/mage/cards/r/RiftstonePortal.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author emerald000
*/
-public class RiftstonePortal extends CardImpl {
+public final class RiftstonePortal extends CardImpl {
public RiftstonePortal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/Riftsweeper.java b/Mage.Sets/src/mage/cards/r/Riftsweeper.java
index 55c1ae333c4..d017e0d5944 100644
--- a/Mage.Sets/src/mage/cards/r/Riftsweeper.java
+++ b/Mage.Sets/src/mage/cards/r/Riftsweeper.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInExile;
*
* @author LevelX2
*/
-public class Riftsweeper extends CardImpl {
+public final class Riftsweeper extends CardImpl {
private static final FilterCard filter = new FilterCard("face-up exiled card");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RiftwingCloudskate.java b/Mage.Sets/src/mage/cards/r/RiftwingCloudskate.java
index 9cc877355ec..da10226c4d2 100644
--- a/Mage.Sets/src/mage/cards/r/RiftwingCloudskate.java
+++ b/Mage.Sets/src/mage/cards/r/RiftwingCloudskate.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class RiftwingCloudskate extends CardImpl {
+public final class RiftwingCloudskate extends CardImpl {
public RiftwingCloudskate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiggingRunner.java b/Mage.Sets/src/mage/cards/r/RiggingRunner.java
index b60adefa57c..55b24addb16 100644
--- a/Mage.Sets/src/mage/cards/r/RiggingRunner.java
+++ b/Mage.Sets/src/mage/cards/r/RiggingRunner.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class RiggingRunner extends CardImpl {
+public final class RiggingRunner extends CardImpl {
public RiggingRunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RighteousAura.java b/Mage.Sets/src/mage/cards/r/RighteousAura.java
index e6a55d3d80c..21ef10a0e9e 100644
--- a/Mage.Sets/src/mage/cards/r/RighteousAura.java
+++ b/Mage.Sets/src/mage/cards/r/RighteousAura.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class RighteousAura extends CardImpl {
+public final class RighteousAura extends CardImpl {
public RighteousAura(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RighteousAuthority.java b/Mage.Sets/src/mage/cards/r/RighteousAuthority.java
index 50dbc5049f6..8e2f2d97586 100644
--- a/Mage.Sets/src/mage/cards/r/RighteousAuthority.java
+++ b/Mage.Sets/src/mage/cards/r/RighteousAuthority.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RighteousAuthority extends CardImpl {
+public final class RighteousAuthority extends CardImpl {
public RighteousAuthority (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RighteousAvengers.java b/Mage.Sets/src/mage/cards/r/RighteousAvengers.java
index 59fb992a104..e4165e3f89b 100644
--- a/Mage.Sets/src/mage/cards/r/RighteousAvengers.java
+++ b/Mage.Sets/src/mage/cards/r/RighteousAvengers.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RighteousAvengers extends CardImpl {
+public final class RighteousAvengers extends CardImpl {
public RighteousAvengers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RighteousBlow.java b/Mage.Sets/src/mage/cards/r/RighteousBlow.java
index 13394a37d31..93955128bcc 100644
--- a/Mage.Sets/src/mage/cards/r/RighteousBlow.java
+++ b/Mage.Sets/src/mage/cards/r/RighteousBlow.java
@@ -37,7 +37,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
/**
* @author noxx
*/
-public class RighteousBlow extends CardImpl {
+public final class RighteousBlow extends CardImpl {
public RighteousBlow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RighteousCause.java b/Mage.Sets/src/mage/cards/r/RighteousCause.java
index ec108ece02f..610590dc4fc 100644
--- a/Mage.Sets/src/mage/cards/r/RighteousCause.java
+++ b/Mage.Sets/src/mage/cards/r/RighteousCause.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author daagar
*/
-public class RighteousCause extends CardImpl {
+public final class RighteousCause extends CardImpl {
public RighteousCause(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RighteousCharge.java b/Mage.Sets/src/mage/cards/r/RighteousCharge.java
index 5d4b7124513..dd8075b1eea 100644
--- a/Mage.Sets/src/mage/cards/r/RighteousCharge.java
+++ b/Mage.Sets/src/mage/cards/r/RighteousCharge.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class RighteousCharge extends CardImpl {
+public final class RighteousCharge extends CardImpl {
public RighteousCharge (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RighteousConfluence.java b/Mage.Sets/src/mage/cards/r/RighteousConfluence.java
index f4599293116..d84bd0e7767 100644
--- a/Mage.Sets/src/mage/cards/r/RighteousConfluence.java
+++ b/Mage.Sets/src/mage/cards/r/RighteousConfluence.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class RighteousConfluence extends CardImpl {
+public final class RighteousConfluence extends CardImpl {
public RighteousConfluence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RighteousFury.java b/Mage.Sets/src/mage/cards/r/RighteousFury.java
index 96d7984ab72..9cba49cea78 100644
--- a/Mage.Sets/src/mage/cards/r/RighteousFury.java
+++ b/Mage.Sets/src/mage/cards/r/RighteousFury.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class RighteousFury extends CardImpl {
+public final class RighteousFury extends CardImpl {
public RighteousFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RighteousWar.java b/Mage.Sets/src/mage/cards/r/RighteousWar.java
index b64fd498752..deba926bfad 100644
--- a/Mage.Sets/src/mage/cards/r/RighteousWar.java
+++ b/Mage.Sets/src/mage/cards/r/RighteousWar.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author TheElk801
*/
-public class RighteousWar extends CardImpl {
+public final class RighteousWar extends CardImpl {
private static final FilterCreaturePermanent whiteFilter = new FilterCreaturePermanent("white creatures you control");
private static final FilterCreaturePermanent blackFilter = new FilterCreaturePermanent("black creatures you control");
diff --git a/Mage.Sets/src/mage/cards/r/Righteousness.java b/Mage.Sets/src/mage/cards/r/Righteousness.java
index f47a03e8814..696a362c3cf 100644
--- a/Mage.Sets/src/mage/cards/r/Righteousness.java
+++ b/Mage.Sets/src/mage/cards/r/Righteousness.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Righteousness extends CardImpl {
+public final class Righteousness extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterBlockingCreature("blocking creature");
diff --git a/Mage.Sets/src/mage/cards/r/RikuOfTwoReflections.java b/Mage.Sets/src/mage/cards/r/RikuOfTwoReflections.java
index c0d04f4e634..db00e7314a5 100644
--- a/Mage.Sets/src/mage/cards/r/RikuOfTwoReflections.java
+++ b/Mage.Sets/src/mage/cards/r/RikuOfTwoReflections.java
@@ -54,7 +54,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author LevelX2
*/
-public class RikuOfTwoReflections extends CardImpl {
+public final class RikuOfTwoReflections extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
private static final FilterControlledCreaturePermanent filterPermanent = new FilterControlledCreaturePermanent("another nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/r/Rile.java b/Mage.Sets/src/mage/cards/r/Rile.java
index e88eba205dc..3816c008cb3 100644
--- a/Mage.Sets/src/mage/cards/r/Rile.java
+++ b/Mage.Sets/src/mage/cards/r/Rile.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class Rile extends CardImpl {
+public final class Rile extends CardImpl {
public Rile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RimeDryad.java b/Mage.Sets/src/mage/cards/r/RimeDryad.java
index d3bc22debf1..12a4b5b7e66 100644
--- a/Mage.Sets/src/mage/cards/r/RimeDryad.java
+++ b/Mage.Sets/src/mage/cards/r/RimeDryad.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author fireshoes
*/
-public class RimeDryad extends CardImpl {
+public final class RimeDryad extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("snow forest");
diff --git a/Mage.Sets/src/mage/cards/r/RimeTransfusion.java b/Mage.Sets/src/mage/cards/r/RimeTransfusion.java
index e47d3188466..2b17d060e1d 100644
--- a/Mage.Sets/src/mage/cards/r/RimeTransfusion.java
+++ b/Mage.Sets/src/mage/cards/r/RimeTransfusion.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RimeTransfusion extends CardImpl {
+public final class RimeTransfusion extends CardImpl {
static final String rule = "and has \"{S}: This creature can't be blocked this turn except by snow creatures.\"";
diff --git a/Mage.Sets/src/mage/cards/r/RimeboundDead.java b/Mage.Sets/src/mage/cards/r/RimeboundDead.java
index 70b726a08ed..f4cfc4cca21 100644
--- a/Mage.Sets/src/mage/cards/r/RimeboundDead.java
+++ b/Mage.Sets/src/mage/cards/r/RimeboundDead.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class RimeboundDead extends CardImpl {
+public final class RimeboundDead extends CardImpl {
public RimeboundDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RimefeatherOwl.java b/Mage.Sets/src/mage/cards/r/RimefeatherOwl.java
index 11f6bbd2d24..c56c7c2a4d4 100644
--- a/Mage.Sets/src/mage/cards/r/RimefeatherOwl.java
+++ b/Mage.Sets/src/mage/cards/r/RimefeatherOwl.java
@@ -62,7 +62,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class RimefeatherOwl extends CardImpl {
+public final class RimefeatherOwl extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Permanents with ice counters on them");
private static final FilterPermanent filter2 = new FilterPermanent("snow permanents on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/r/RimehornAurochs.java b/Mage.Sets/src/mage/cards/r/RimehornAurochs.java
index 3217cf49b99..948cf3c518d 100644
--- a/Mage.Sets/src/mage/cards/r/RimehornAurochs.java
+++ b/Mage.Sets/src/mage/cards/r/RimehornAurochs.java
@@ -53,7 +53,7 @@ import mage.watchers.common.BlockedAttackerWatcher;
*
* @author jeffwadsworth & L_J
*/
-public class RimehornAurochs extends CardImpl {
+public final class RimehornAurochs extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.AUROCHS, "other attacking Aurochs");
diff --git a/Mage.Sets/src/mage/cards/r/RimescaleDragon.java b/Mage.Sets/src/mage/cards/r/RimescaleDragon.java
index 2d74abe9553..5d3b4e86f02 100644
--- a/Mage.Sets/src/mage/cards/r/RimescaleDragon.java
+++ b/Mage.Sets/src/mage/cards/r/RimescaleDragon.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author JRHerlehy
*/
-public class RimescaleDragon extends CardImpl {
+public final class RimescaleDragon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with ice counters");
diff --git a/Mage.Sets/src/mage/cards/r/RimewindCryomancer.java b/Mage.Sets/src/mage/cards/r/RimewindCryomancer.java
index d2facdb20a3..00ba95f2837 100644
--- a/Mage.Sets/src/mage/cards/r/RimewindCryomancer.java
+++ b/Mage.Sets/src/mage/cards/r/RimewindCryomancer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetActivatedAbility;
*
* @author fireshoes
*/
-public class RimewindCryomancer extends CardImpl {
+public final class RimewindCryomancer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control four or more snow permanents");
diff --git a/Mage.Sets/src/mage/cards/r/RimewindTaskmage.java b/Mage.Sets/src/mage/cards/r/RimewindTaskmage.java
index 04960c0ddde..a31c8bbbf87 100644
--- a/Mage.Sets/src/mage/cards/r/RimewindTaskmage.java
+++ b/Mage.Sets/src/mage/cards/r/RimewindTaskmage.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class RimewindTaskmage extends CardImpl {
+public final class RimewindTaskmage extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control four or more snow permanents");
diff --git a/Mage.Sets/src/mage/cards/r/RingOfEvosIsle.java b/Mage.Sets/src/mage/cards/r/RingOfEvosIsle.java
index ebbe98ec386..dbd4c03d5d8 100644
--- a/Mage.Sets/src/mage/cards/r/RingOfEvosIsle.java
+++ b/Mage.Sets/src/mage/cards/r/RingOfEvosIsle.java
@@ -55,7 +55,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class RingOfEvosIsle extends CardImpl {
+public final class RingOfEvosIsle extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RingOfGix.java b/Mage.Sets/src/mage/cards/r/RingOfGix.java
index 9b520b8ec5d..a5a03ecba82 100644
--- a/Mage.Sets/src/mage/cards/r/RingOfGix.java
+++ b/Mage.Sets/src/mage/cards/r/RingOfGix.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class RingOfGix extends CardImpl {
+public final class RingOfGix extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/r/RingOfImmortals.java b/Mage.Sets/src/mage/cards/r/RingOfImmortals.java
index d51c6678ef5..fcbd7bb1c12 100644
--- a/Mage.Sets/src/mage/cards/r/RingOfImmortals.java
+++ b/Mage.Sets/src/mage/cards/r/RingOfImmortals.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class RingOfImmortals extends CardImpl {
+public final class RingOfImmortals extends CardImpl {
private final static FilterSpell filter = new FilterSpell("instant or Aura spell that targets a permanent you control");
diff --git a/Mage.Sets/src/mage/cards/r/RingOfKalonia.java b/Mage.Sets/src/mage/cards/r/RingOfKalonia.java
index 07d42645d23..fb8112c000d 100644
--- a/Mage.Sets/src/mage/cards/r/RingOfKalonia.java
+++ b/Mage.Sets/src/mage/cards/r/RingOfKalonia.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class RingOfKalonia extends CardImpl {
+public final class RingOfKalonia extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RingOfMaruf.java b/Mage.Sets/src/mage/cards/r/RingOfMaruf.java
index d4a0ea12a64..eff17b1f3b8 100644
--- a/Mage.Sets/src/mage/cards/r/RingOfMaruf.java
+++ b/Mage.Sets/src/mage/cards/r/RingOfMaruf.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class RingOfMaruf extends CardImpl {
+public final class RingOfMaruf extends CardImpl {
public RingOfMaruf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/r/RingOfRenewal.java b/Mage.Sets/src/mage/cards/r/RingOfRenewal.java
index b73933ac7b7..7d88e75cdf3 100644
--- a/Mage.Sets/src/mage/cards/r/RingOfRenewal.java
+++ b/Mage.Sets/src/mage/cards/r/RingOfRenewal.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class RingOfRenewal extends CardImpl {
+public final class RingOfRenewal extends CardImpl {
public RingOfRenewal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/r/RingOfThreeWishes.java b/Mage.Sets/src/mage/cards/r/RingOfThreeWishes.java
index 6297c0d239f..e65dd0495fc 100644
--- a/Mage.Sets/src/mage/cards/r/RingOfThreeWishes.java
+++ b/Mage.Sets/src/mage/cards/r/RingOfThreeWishes.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class RingOfThreeWishes extends CardImpl {
+public final class RingOfThreeWishes extends CardImpl {
public RingOfThreeWishes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/r/RingOfThune.java b/Mage.Sets/src/mage/cards/r/RingOfThune.java
index 4ab6d0e01e0..5bf708e3c06 100644
--- a/Mage.Sets/src/mage/cards/r/RingOfThune.java
+++ b/Mage.Sets/src/mage/cards/r/RingOfThune.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class RingOfThune extends CardImpl {
+public final class RingOfThune extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RingOfValkas.java b/Mage.Sets/src/mage/cards/r/RingOfValkas.java
index 6dd1310ffaa..341c042e180 100644
--- a/Mage.Sets/src/mage/cards/r/RingOfValkas.java
+++ b/Mage.Sets/src/mage/cards/r/RingOfValkas.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class RingOfValkas extends CardImpl {
+public final class RingOfValkas extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RingOfXathrid.java b/Mage.Sets/src/mage/cards/r/RingOfXathrid.java
index a6b5bad0600..ea92d12bac9 100644
--- a/Mage.Sets/src/mage/cards/r/RingOfXathrid.java
+++ b/Mage.Sets/src/mage/cards/r/RingOfXathrid.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class RingOfXathrid extends CardImpl {
+public final class RingOfXathrid extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RingsOfBrighthearth.java b/Mage.Sets/src/mage/cards/r/RingsOfBrighthearth.java
index 50838107ea8..f7cb29ef61e 100644
--- a/Mage.Sets/src/mage/cards/r/RingsOfBrighthearth.java
+++ b/Mage.Sets/src/mage/cards/r/RingsOfBrighthearth.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class RingsOfBrighthearth extends CardImpl {
+public final class RingsOfBrighthearth extends CardImpl {
public RingsOfBrighthearth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/r/Ringskipper.java b/Mage.Sets/src/mage/cards/r/Ringskipper.java
index e2270af16cc..a122543cd6b 100644
--- a/Mage.Sets/src/mage/cards/r/Ringskipper.java
+++ b/Mage.Sets/src/mage/cards/r/Ringskipper.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class Ringskipper extends CardImpl {
+public final class Ringskipper extends CardImpl {
public Ringskipper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RingwardenOwl.java b/Mage.Sets/src/mage/cards/r/RingwardenOwl.java
index 6415ca2de2d..0aa369ee7bd 100644
--- a/Mage.Sets/src/mage/cards/r/RingwardenOwl.java
+++ b/Mage.Sets/src/mage/cards/r/RingwardenOwl.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RingwardenOwl extends CardImpl {
+public final class RingwardenOwl extends CardImpl {
public RingwardenOwl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiotControl.java b/Mage.Sets/src/mage/cards/r/RiotControl.java
index 592568ef67e..d3cf6c7a02d 100644
--- a/Mage.Sets/src/mage/cards/r/RiotControl.java
+++ b/Mage.Sets/src/mage/cards/r/RiotControl.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
-public class RiotControl extends CardImpl {
+public final class RiotControl extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature your opponents control");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RiotDevils.java b/Mage.Sets/src/mage/cards/r/RiotDevils.java
index 2d9edb02f5a..ebc6f39ceca 100644
--- a/Mage.Sets/src/mage/cards/r/RiotDevils.java
+++ b/Mage.Sets/src/mage/cards/r/RiotDevils.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RiotDevils extends CardImpl {
+public final class RiotDevils extends CardImpl {
public RiotDevils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RiotGear.java b/Mage.Sets/src/mage/cards/r/RiotGear.java
index 8a8de50f562..4965284c88d 100644
--- a/Mage.Sets/src/mage/cards/r/RiotGear.java
+++ b/Mage.Sets/src/mage/cards/r/RiotGear.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class RiotGear extends CardImpl {
+public final class RiotGear extends CardImpl {
public RiotGear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/r/RiotPiker.java b/Mage.Sets/src/mage/cards/r/RiotPiker.java
index 62d977cc929..02d299a662b 100644
--- a/Mage.Sets/src/mage/cards/r/RiotPiker.java
+++ b/Mage.Sets/src/mage/cards/r/RiotPiker.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*/
-public class RiotPiker extends CardImpl {
+public final class RiotPiker extends CardImpl {
public RiotPiker (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RiotRingleader.java b/Mage.Sets/src/mage/cards/r/RiotRingleader.java
index ed50be4a52b..fb61e71aaef 100644
--- a/Mage.Sets/src/mage/cards/r/RiotRingleader.java
+++ b/Mage.Sets/src/mage/cards/r/RiotRingleader.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class RiotRingleader extends CardImpl {
+public final class RiotRingleader extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RiotSpikes.java b/Mage.Sets/src/mage/cards/r/RiotSpikes.java
index f4f9f82b756..27dfa92936b 100644
--- a/Mage.Sets/src/mage/cards/r/RiotSpikes.java
+++ b/Mage.Sets/src/mage/cards/r/RiotSpikes.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class RiotSpikes extends CardImpl {
+public final class RiotSpikes extends CardImpl {
public RiotSpikes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B/R}");
diff --git a/Mage.Sets/src/mage/cards/r/RipClanCrasher.java b/Mage.Sets/src/mage/cards/r/RipClanCrasher.java
index 581a9979992..e3ee536de1d 100644
--- a/Mage.Sets/src/mage/cards/r/RipClanCrasher.java
+++ b/Mage.Sets/src/mage/cards/r/RipClanCrasher.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RipClanCrasher extends CardImpl {
+public final class RipClanCrasher extends CardImpl {
public RipClanCrasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RiparianTiger.java b/Mage.Sets/src/mage/cards/r/RiparianTiger.java
index 9cf838f2301..da2838b694a 100644
--- a/Mage.Sets/src/mage/cards/r/RiparianTiger.java
+++ b/Mage.Sets/src/mage/cards/r/RiparianTiger.java
@@ -47,7 +47,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class RiparianTiger extends CardImpl {
+public final class RiparianTiger extends CardImpl {
public RiparianTiger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RipjawRaptor.java b/Mage.Sets/src/mage/cards/r/RipjawRaptor.java
index 440c6319e33..c2bec47a9e8 100644
--- a/Mage.Sets/src/mage/cards/r/RipjawRaptor.java
+++ b/Mage.Sets/src/mage/cards/r/RipjawRaptor.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class RipjawRaptor extends CardImpl {
+public final class RipjawRaptor extends CardImpl {
public RipjawRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RipscalePredator.java b/Mage.Sets/src/mage/cards/r/RipscalePredator.java
index 916b3383d9d..81220bbcb28 100644
--- a/Mage.Sets/src/mage/cards/r/RipscalePredator.java
+++ b/Mage.Sets/src/mage/cards/r/RipscalePredator.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class RipscalePredator extends CardImpl {
+public final class RipscalePredator extends CardImpl {
public RipscalePredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Riptide.java b/Mage.Sets/src/mage/cards/r/Riptide.java
index 1d0eff3ed4c..1baafdd8670 100644
--- a/Mage.Sets/src/mage/cards/r/Riptide.java
+++ b/Mage.Sets/src/mage/cards/r/Riptide.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class Riptide extends CardImpl {
+public final class Riptide extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RiptideBiologist.java b/Mage.Sets/src/mage/cards/r/RiptideBiologist.java
index 5508db82cbe..b3f619652aa 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideBiologist.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideBiologist.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class RiptideBiologist extends CardImpl {
+public final class RiptideBiologist extends CardImpl {
private static final FilterCard filter = new FilterCard("Beasts");
diff --git a/Mage.Sets/src/mage/cards/r/RiptideChimera.java b/Mage.Sets/src/mage/cards/r/RiptideChimera.java
index a8cc3869ac7..ce1cdbbca2a 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideChimera.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideChimera.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class RiptideChimera extends CardImpl {
+public final class RiptideChimera extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an enchantment you control");
diff --git a/Mage.Sets/src/mage/cards/r/RiptideChronologist.java b/Mage.Sets/src/mage/cards/r/RiptideChronologist.java
index 569782107b0..858224a81b5 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideChronologist.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideChronologist.java
@@ -52,7 +52,7 @@ import mage.players.Player;
/**
* @author fireshoes
*/
-public class RiptideChronologist extends CardImpl {
+public final class RiptideChronologist extends CardImpl {
public RiptideChronologist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiptideCrab.java b/Mage.Sets/src/mage/cards/r/RiptideCrab.java
index e601c06a6f0..eb7ade036af 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideCrab.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideCrab.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
* @author LoneFox
*/
-public class RiptideCrab extends CardImpl {
+public final class RiptideCrab extends CardImpl {
public RiptideCrab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiptideDirector.java b/Mage.Sets/src/mage/cards/r/RiptideDirector.java
index 84f44140f87..ddf2f1e2d9b 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideDirector.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideDirector.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class RiptideDirector extends CardImpl {
+public final class RiptideDirector extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("Wizard you control");
diff --git a/Mage.Sets/src/mage/cards/r/RiptideEntrancer.java b/Mage.Sets/src/mage/cards/r/RiptideEntrancer.java
index 41a413cd821..c4e28a6ede3 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideEntrancer.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideEntrancer.java
@@ -58,7 +58,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class RiptideEntrancer extends CardImpl {
+public final class RiptideEntrancer extends CardImpl {
public RiptideEntrancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java b/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java
index dcac73b0838..2d245d59afb 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class RiptideLaboratory extends CardImpl {
+public final class RiptideLaboratory extends CardImpl {
private final static FilterControlledPermanent filter = new FilterControlledPermanent("Wizard you control");
diff --git a/Mage.Sets/src/mage/cards/r/RiptideMangler.java b/Mage.Sets/src/mage/cards/r/RiptideMangler.java
index 13b4d08069c..8c0d5e80382 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideMangler.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideMangler.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class RiptideMangler extends CardImpl {
+public final class RiptideMangler extends CardImpl {
public RiptideMangler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiptidePilferer.java b/Mage.Sets/src/mage/cards/r/RiptidePilferer.java
index ce6052bee95..20e0ec310ed 100644
--- a/Mage.Sets/src/mage/cards/r/RiptidePilferer.java
+++ b/Mage.Sets/src/mage/cards/r/RiptidePilferer.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class RiptidePilferer extends CardImpl {
+public final class RiptidePilferer extends CardImpl {
public RiptidePilferer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiptideReplicator.java b/Mage.Sets/src/mage/cards/r/RiptideReplicator.java
index 05a14b44996..e878f31a922 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideReplicator.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideReplicator.java
@@ -56,7 +56,7 @@ import mage.game.permanent.token.Token;
*
* @author HanClinto
*/
-public class RiptideReplicator extends CardImpl {
+public final class RiptideReplicator extends CardImpl {
public RiptideReplicator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{X}{4}");
diff --git a/Mage.Sets/src/mage/cards/r/RiptideShapeshifter.java b/Mage.Sets/src/mage/cards/r/RiptideShapeshifter.java
index b4b485d6317..5e10be86245 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideShapeshifter.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideShapeshifter.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class RiptideShapeshifter extends CardImpl {
+public final class RiptideShapeshifter extends CardImpl {
public RiptideShapeshifter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiptideSurvivor.java b/Mage.Sets/src/mage/cards/r/RiptideSurvivor.java
index 224b761c013..b76c081b361 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideSurvivor.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideSurvivor.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RiptideSurvivor extends CardImpl {
+public final class RiptideSurvivor extends CardImpl {
public RiptideSurvivor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiseFall.java b/Mage.Sets/src/mage/cards/r/RiseFall.java
index 4cf8593e19e..2325a10ab52 100644
--- a/Mage.Sets/src/mage/cards/r/RiseFall.java
+++ b/Mage.Sets/src/mage/cards/r/RiseFall.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RiseFall extends SplitCard {
+public final class RiseFall extends SplitCard {
public RiseFall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}{B}", "{B}{R}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/r/RiseFromTheGrave.java b/Mage.Sets/src/mage/cards/r/RiseFromTheGrave.java
index 9abaa3ac004..146e776b339 100644
--- a/Mage.Sets/src/mage/cards/r/RiseFromTheGrave.java
+++ b/Mage.Sets/src/mage/cards/r/RiseFromTheGrave.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RiseFromTheGrave extends CardImpl {
+public final class RiseFromTheGrave extends CardImpl {
public RiseFromTheGrave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RiseFromTheTides.java b/Mage.Sets/src/mage/cards/r/RiseFromTheTides.java
index 63b5f2a16c8..943faa43445 100644
--- a/Mage.Sets/src/mage/cards/r/RiseFromTheTides.java
+++ b/Mage.Sets/src/mage/cards/r/RiseFromTheTides.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author fireshoes
*/
-public class RiseFromTheTides extends CardImpl {
+public final class RiseFromTheTides extends CardImpl {
public RiseFromTheTides(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiseOfEagles.java b/Mage.Sets/src/mage/cards/r/RiseOfEagles.java
index 6ca45714fa0..390d18bcd7b 100644
--- a/Mage.Sets/src/mage/cards/r/RiseOfEagles.java
+++ b/Mage.Sets/src/mage/cards/r/RiseOfEagles.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.RiseOfEaglesBirdToken;
*
* @author LevelX2
*/
-public class RiseOfEagles extends CardImpl {
+public final class RiseOfEagles extends CardImpl {
public RiseOfEagles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiseOfTheDarkRealms.java b/Mage.Sets/src/mage/cards/r/RiseOfTheDarkRealms.java
index 54d5bb60893..7e48388fcb1 100644
--- a/Mage.Sets/src/mage/cards/r/RiseOfTheDarkRealms.java
+++ b/Mage.Sets/src/mage/cards/r/RiseOfTheDarkRealms.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class RiseOfTheDarkRealms extends CardImpl {
+public final class RiseOfTheDarkRealms extends CardImpl {
public RiseOfTheDarkRealms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{7}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RiseOfTheHobgoblins.java b/Mage.Sets/src/mage/cards/r/RiseOfTheHobgoblins.java
index fd96b97ad2d..09f10e581ed 100644
--- a/Mage.Sets/src/mage/cards/r/RiseOfTheHobgoblins.java
+++ b/Mage.Sets/src/mage/cards/r/RiseOfTheHobgoblins.java
@@ -62,7 +62,7 @@ import mage.players.Player;
* @author jeffwadsworth
*
*/
-public class RiseOfTheHobgoblins extends CardImpl {
+public final class RiseOfTheHobgoblins extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Red creatures and white creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RiseToTheChallenge.java b/Mage.Sets/src/mage/cards/r/RiseToTheChallenge.java
index 58980ac7bcb..25b5a01924d 100644
--- a/Mage.Sets/src/mage/cards/r/RiseToTheChallenge.java
+++ b/Mage.Sets/src/mage/cards/r/RiseToTheChallenge.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RiseToTheChallenge extends CardImpl {
+public final class RiseToTheChallenge extends CardImpl {
public RiseToTheChallenge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RisenExecutioner.java b/Mage.Sets/src/mage/cards/r/RisenExecutioner.java
index 0b5dcc205c2..1775f9bd0d3 100644
--- a/Mage.Sets/src/mage/cards/r/RisenExecutioner.java
+++ b/Mage.Sets/src/mage/cards/r/RisenExecutioner.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class RisenExecutioner extends CardImpl {
+public final class RisenExecutioner extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RisenSanctuary.java b/Mage.Sets/src/mage/cards/r/RisenSanctuary.java
index 9cae6b0410b..c024357a953 100644
--- a/Mage.Sets/src/mage/cards/r/RisenSanctuary.java
+++ b/Mage.Sets/src/mage/cards/r/RisenSanctuary.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RisenSanctuary extends CardImpl {
+public final class RisenSanctuary extends CardImpl {
public RisenSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RishadanAirship.java b/Mage.Sets/src/mage/cards/r/RishadanAirship.java
index 9ded66facd4..c00e9c199d9 100644
--- a/Mage.Sets/src/mage/cards/r/RishadanAirship.java
+++ b/Mage.Sets/src/mage/cards/r/RishadanAirship.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class RishadanAirship extends CardImpl {
+public final class RishadanAirship extends CardImpl {
public RishadanAirship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RishadanBrigand.java b/Mage.Sets/src/mage/cards/r/RishadanBrigand.java
index 605ab30855b..d3da4b11e26 100644
--- a/Mage.Sets/src/mage/cards/r/RishadanBrigand.java
+++ b/Mage.Sets/src/mage/cards/r/RishadanBrigand.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Eirkei
*/
-public class RishadanBrigand extends CardImpl {
+public final class RishadanBrigand extends CardImpl {
public RishadanBrigand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RishadanCutpurse.java b/Mage.Sets/src/mage/cards/r/RishadanCutpurse.java
index c4a2b75a745..19091ecbd72 100644
--- a/Mage.Sets/src/mage/cards/r/RishadanCutpurse.java
+++ b/Mage.Sets/src/mage/cards/r/RishadanCutpurse.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Eirkei
*/
-public class RishadanCutpurse extends CardImpl {
+public final class RishadanCutpurse extends CardImpl {
public RishadanCutpurse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RishadanFootpad.java b/Mage.Sets/src/mage/cards/r/RishadanFootpad.java
index 5fe79d1c56c..83cdbdedc9c 100644
--- a/Mage.Sets/src/mage/cards/r/RishadanFootpad.java
+++ b/Mage.Sets/src/mage/cards/r/RishadanFootpad.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Eirkei
*/
-public class RishadanFootpad extends CardImpl {
+public final class RishadanFootpad extends CardImpl {
public RishadanFootpad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RishadanPawnshop.java b/Mage.Sets/src/mage/cards/r/RishadanPawnshop.java
index ccc4576cb6c..f7b9de26ec8 100644
--- a/Mage.Sets/src/mage/cards/r/RishadanPawnshop.java
+++ b/Mage.Sets/src/mage/cards/r/RishadanPawnshop.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author L_J
*/
-public class RishadanPawnshop extends CardImpl {
+public final class RishadanPawnshop extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nontoken permanent you control");
diff --git a/Mage.Sets/src/mage/cards/r/RishadanPort.java b/Mage.Sets/src/mage/cards/r/RishadanPort.java
index c2b10bb9f2a..0f5fd5c943f 100644
--- a/Mage.Sets/src/mage/cards/r/RishadanPort.java
+++ b/Mage.Sets/src/mage/cards/r/RishadanPort.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jonubuu
*/
-public class RishadanPort extends CardImpl {
+public final class RishadanPort extends CardImpl {
public RishadanPort(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/r/RishkarPeemaRenegade.java b/Mage.Sets/src/mage/cards/r/RishkarPeemaRenegade.java
index 94d107a510b..c1ce64ea4b6 100644
--- a/Mage.Sets/src/mage/cards/r/RishkarPeemaRenegade.java
+++ b/Mage.Sets/src/mage/cards/r/RishkarPeemaRenegade.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RishkarPeemaRenegade extends CardImpl {
+public final class RishkarPeemaRenegade extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature you control with a counter on it");
diff --git a/Mage.Sets/src/mage/cards/r/RishkarsExpertise.java b/Mage.Sets/src/mage/cards/r/RishkarsExpertise.java
index ff60589c58f..08283398aca 100644
--- a/Mage.Sets/src/mage/cards/r/RishkarsExpertise.java
+++ b/Mage.Sets/src/mage/cards/r/RishkarsExpertise.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
/**
* @author fireshoes
*/
-public class RishkarsExpertise extends CardImpl {
+public final class RishkarsExpertise extends CardImpl {
public RishkarsExpertise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RisingMiasma.java b/Mage.Sets/src/mage/cards/r/RisingMiasma.java
index bb9cde19cc2..5718a9031b1 100644
--- a/Mage.Sets/src/mage/cards/r/RisingMiasma.java
+++ b/Mage.Sets/src/mage/cards/r/RisingMiasma.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class RisingMiasma extends CardImpl {
+public final class RisingMiasma extends CardImpl {
public RisingMiasma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RisingWaters.java b/Mage.Sets/src/mage/cards/r/RisingWaters.java
index 79c9bf00b91..052138da40a 100644
--- a/Mage.Sets/src/mage/cards/r/RisingWaters.java
+++ b/Mage.Sets/src/mage/cards/r/RisingWaters.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class RisingWaters extends CardImpl {
+public final class RisingWaters extends CardImpl {
public RisingWaters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiskyMove.java b/Mage.Sets/src/mage/cards/r/RiskyMove.java
index 322719a5854..c6d45a52010 100644
--- a/Mage.Sets/src/mage/cards/r/RiskyMove.java
+++ b/Mage.Sets/src/mage/cards/r/RiskyMove.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class RiskyMove extends CardImpl {
+public final class RiskyMove extends CardImpl {
public RiskyMove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RiteOfBelzenlok.java b/Mage.Sets/src/mage/cards/r/RiteOfBelzenlok.java
index 7c364e00235..d665282c99f 100644
--- a/Mage.Sets/src/mage/cards/r/RiteOfBelzenlok.java
+++ b/Mage.Sets/src/mage/cards/r/RiteOfBelzenlok.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.BelzenlokDemonToken;
*
* @author TheElk801
*/
-public class RiteOfBelzenlok extends CardImpl {
+public final class RiteOfBelzenlok extends CardImpl {
public RiteOfBelzenlok(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RiteOfConsumption.java b/Mage.Sets/src/mage/cards/r/RiteOfConsumption.java
index 824ac1913d7..ba9c27b2ceb 100644
--- a/Mage.Sets/src/mage/cards/r/RiteOfConsumption.java
+++ b/Mage.Sets/src/mage/cards/r/RiteOfConsumption.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class RiteOfConsumption extends CardImpl {
+public final class RiteOfConsumption extends CardImpl {
public RiteOfConsumption(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RiteOfFlame.java b/Mage.Sets/src/mage/cards/r/RiteOfFlame.java
index a06556c9524..bcea26cef8a 100644
--- a/Mage.Sets/src/mage/cards/r/RiteOfFlame.java
+++ b/Mage.Sets/src/mage/cards/r/RiteOfFlame.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class RiteOfFlame extends CardImpl {
+public final class RiteOfFlame extends CardImpl {
public RiteOfFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RiteOfPassage.java b/Mage.Sets/src/mage/cards/r/RiteOfPassage.java
index 8578ea52fde..f0eec79c4b7 100644
--- a/Mage.Sets/src/mage/cards/r/RiteOfPassage.java
+++ b/Mage.Sets/src/mage/cards/r/RiteOfPassage.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class RiteOfPassage extends CardImpl {
+public final class RiteOfPassage extends CardImpl {
public RiteOfPassage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RiteOfReplication.java b/Mage.Sets/src/mage/cards/r/RiteOfReplication.java
index 9e18e26f19d..e2db10d41bd 100644
--- a/Mage.Sets/src/mage/cards/r/RiteOfReplication.java
+++ b/Mage.Sets/src/mage/cards/r/RiteOfReplication.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class RiteOfReplication extends CardImpl {
+public final class RiteOfReplication extends CardImpl {
public RiteOfReplication(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiteOfRuin.java b/Mage.Sets/src/mage/cards/r/RiteOfRuin.java
index 8510fa902df..8ce3c871514 100644
--- a/Mage.Sets/src/mage/cards/r/RiteOfRuin.java
+++ b/Mage.Sets/src/mage/cards/r/RiteOfRuin.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author North
*/
-public class RiteOfRuin extends CardImpl {
+public final class RiteOfRuin extends CardImpl {
public RiteOfRuin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RiteOfTheRagingStorm.java b/Mage.Sets/src/mage/cards/r/RiteOfTheRagingStorm.java
index fccf097899c..f8991e12cde 100644
--- a/Mage.Sets/src/mage/cards/r/RiteOfTheRagingStorm.java
+++ b/Mage.Sets/src/mage/cards/r/RiteOfTheRagingStorm.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class RiteOfTheRagingStorm extends CardImpl {
+public final class RiteOfTheRagingStorm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures named Lightning Rager");
diff --git a/Mage.Sets/src/mage/cards/r/RiteOfTheSerpent.java b/Mage.Sets/src/mage/cards/r/RiteOfTheSerpent.java
index 40669cd088c..9ecbc0841f9 100644
--- a/Mage.Sets/src/mage/cards/r/RiteOfTheSerpent.java
+++ b/Mage.Sets/src/mage/cards/r/RiteOfTheSerpent.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RiteOfTheSerpent extends CardImpl {
+public final class RiteOfTheSerpent extends CardImpl {
public RiteOfTheSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RiteOfUndoing.java b/Mage.Sets/src/mage/cards/r/RiteOfUndoing.java
index 4b486214008..24ecc21a971 100644
--- a/Mage.Sets/src/mage/cards/r/RiteOfUndoing.java
+++ b/Mage.Sets/src/mage/cards/r/RiteOfUndoing.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author fireshoes
*/
-public class RiteOfUndoing extends CardImpl {
+public final class RiteOfUndoing extends CardImpl {
private static final FilterNonlandPermanent filterControlled = new FilterNonlandPermanent("nonland permanent you control");
private static final FilterNonlandPermanent filterNotControlled = new FilterNonlandPermanent("nonland permanent you don't control");
diff --git a/Mage.Sets/src/mage/cards/r/RitesOfFlourishing.java b/Mage.Sets/src/mage/cards/r/RitesOfFlourishing.java
index 49a1a094465..4e7078fc58d 100644
--- a/Mage.Sets/src/mage/cards/r/RitesOfFlourishing.java
+++ b/Mage.Sets/src/mage/cards/r/RitesOfFlourishing.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author nantuko
*/
-public class RitesOfFlourishing extends CardImpl {
+public final class RitesOfFlourishing extends CardImpl {
public RitesOfFlourishing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RitesOfInitiation.java b/Mage.Sets/src/mage/cards/r/RitesOfInitiation.java
index 31cca62cb14..b9ab0bfd65c 100644
--- a/Mage.Sets/src/mage/cards/r/RitesOfInitiation.java
+++ b/Mage.Sets/src/mage/cards/r/RitesOfInitiation.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class RitesOfInitiation extends CardImpl {
+public final class RitesOfInitiation extends CardImpl {
public RitesOfInitiation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RitesOfReaping.java b/Mage.Sets/src/mage/cards/r/RitesOfReaping.java
index a1f92b13527..6296c7fa0d6 100644
--- a/Mage.Sets/src/mage/cards/r/RitesOfReaping.java
+++ b/Mage.Sets/src/mage/cards/r/RitesOfReaping.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RitesOfReaping extends CardImpl {
+public final class RitesOfReaping extends CardImpl {
public RitesOfReaping(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RitesOfRefusal.java b/Mage.Sets/src/mage/cards/r/RitesOfRefusal.java
index ad84bcbc779..07e6cf675a7 100644
--- a/Mage.Sets/src/mage/cards/r/RitesOfRefusal.java
+++ b/Mage.Sets/src/mage/cards/r/RitesOfRefusal.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class RitesOfRefusal extends CardImpl {
+public final class RitesOfRefusal extends CardImpl {
public RitesOfRefusal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RitesOfSpring.java b/Mage.Sets/src/mage/cards/r/RitesOfSpring.java
index f755fc271f5..a2b9c9604ff 100644
--- a/Mage.Sets/src/mage/cards/r/RitesOfSpring.java
+++ b/Mage.Sets/src/mage/cards/r/RitesOfSpring.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class RitesOfSpring extends CardImpl {
+public final class RitesOfSpring extends CardImpl {
public RitesOfSpring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
@@ -100,7 +100,7 @@ class RitesOfSpringEffect extends OneShotEffect {
}
game.applyEffects();
return new SearchLibraryPutInHandEffect(
- new TargetCardInLibrary(0, numDiscarded, StaticFilters.FILTER_BASIC_LAND_CARD), true, true)
+ new TargetCardInLibrary(0, numDiscarded, StaticFilters.FILTER_CARD_BASIC_LAND), true, true)
.apply(game, source);
}
return false;
diff --git a/Mage.Sets/src/mage/cards/r/RithTheAwakener.java b/Mage.Sets/src/mage/cards/r/RithTheAwakener.java
index a655d9123d4..39bdb4d6155 100644
--- a/Mage.Sets/src/mage/cards/r/RithTheAwakener.java
+++ b/Mage.Sets/src/mage/cards/r/RithTheAwakener.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class RithTheAwakener extends CardImpl {
+public final class RithTheAwakener extends CardImpl {
public RithTheAwakener(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RithsAttendant.java b/Mage.Sets/src/mage/cards/r/RithsAttendant.java
index ed025318e50..745f3f1c346 100644
--- a/Mage.Sets/src/mage/cards/r/RithsAttendant.java
+++ b/Mage.Sets/src/mage/cards/r/RithsAttendant.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class RithsAttendant extends CardImpl {
+public final class RithsAttendant extends CardImpl {
public RithsAttendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/r/RithsCharm.java b/Mage.Sets/src/mage/cards/r/RithsCharm.java
index d31c6abfa25..4e727dc3c3c 100644
--- a/Mage.Sets/src/mage/cards/r/RithsCharm.java
+++ b/Mage.Sets/src/mage/cards/r/RithsCharm.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author FenrisulfrX
*/
-public class RithsCharm extends CardImpl {
+public final class RithsCharm extends CardImpl {
public RithsCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RithsGrove.java b/Mage.Sets/src/mage/cards/r/RithsGrove.java
index 01ec3897509..47c1c8e11fe 100644
--- a/Mage.Sets/src/mage/cards/r/RithsGrove.java
+++ b/Mage.Sets/src/mage/cards/r/RithsGrove.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class RithsGrove extends CardImpl {
+public final class RithsGrove extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("non-Lair land");
static{
diff --git a/Mage.Sets/src/mage/cards/r/RitualOfRejuvenation.java b/Mage.Sets/src/mage/cards/r/RitualOfRejuvenation.java
index 7a5613d6b38..61460d97ace 100644
--- a/Mage.Sets/src/mage/cards/r/RitualOfRejuvenation.java
+++ b/Mage.Sets/src/mage/cards/r/RitualOfRejuvenation.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class RitualOfRejuvenation extends CardImpl {
+public final class RitualOfRejuvenation extends CardImpl {
public RitualOfRejuvenation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RitualOfRestoration.java b/Mage.Sets/src/mage/cards/r/RitualOfRestoration.java
index 87df39e4666..f669e5125c0 100644
--- a/Mage.Sets/src/mage/cards/r/RitualOfRestoration.java
+++ b/Mage.Sets/src/mage/cards/r/RitualOfRestoration.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class RitualOfRestoration extends CardImpl {
+public final class RitualOfRestoration extends CardImpl {
public RitualOfRestoration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RitualOfSteel.java b/Mage.Sets/src/mage/cards/r/RitualOfSteel.java
index e5fd575d55f..84f076db0c4 100644
--- a/Mage.Sets/src/mage/cards/r/RitualOfSteel.java
+++ b/Mage.Sets/src/mage/cards/r/RitualOfSteel.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RitualOfSteel extends CardImpl {
+public final class RitualOfSteel extends CardImpl {
public RitualOfSteel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RitualOfSubdual.java b/Mage.Sets/src/mage/cards/r/RitualOfSubdual.java
index baaa0c47d16..d4a505a0c60 100644
--- a/Mage.Sets/src/mage/cards/r/RitualOfSubdual.java
+++ b/Mage.Sets/src/mage/cards/r/RitualOfSubdual.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class RitualOfSubdual extends CardImpl {
+public final class RitualOfSubdual extends CardImpl {
public RitualOfSubdual(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RitualOfTheMachine.java b/Mage.Sets/src/mage/cards/r/RitualOfTheMachine.java
index 8717c685f2e..f8bacdf389d 100644
--- a/Mage.Sets/src/mage/cards/r/RitualOfTheMachine.java
+++ b/Mage.Sets/src/mage/cards/r/RitualOfTheMachine.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class RitualOfTheMachine extends CardImpl {
+public final class RitualOfTheMachine extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact, nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/r/RitualOfTheReturned.java b/Mage.Sets/src/mage/cards/r/RitualOfTheReturned.java
index 5d59286f573..f5df10022bf 100644
--- a/Mage.Sets/src/mage/cards/r/RitualOfTheReturned.java
+++ b/Mage.Sets/src/mage/cards/r/RitualOfTheReturned.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class RitualOfTheReturned extends CardImpl {
+public final class RitualOfTheReturned extends CardImpl {
public RitualOfTheReturned(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Rivalry.java b/Mage.Sets/src/mage/cards/r/Rivalry.java
index 2f3cc4530d0..6a1edcaea2d 100644
--- a/Mage.Sets/src/mage/cards/r/Rivalry.java
+++ b/Mage.Sets/src/mage/cards/r/Rivalry.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class Rivalry extends CardImpl {
+public final class Rivalry extends CardImpl {
public Rivalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RivalsDuel.java b/Mage.Sets/src/mage/cards/r/RivalsDuel.java
index a65469fb637..e20b40273dc 100644
--- a/Mage.Sets/src/mage/cards/r/RivalsDuel.java
+++ b/Mage.Sets/src/mage/cards/r/RivalsDuel.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanentWithDifferentTypes;
*
* @author LevelX2
*/
-public class RivalsDuel extends CardImpl {
+public final class RivalsDuel extends CardImpl {
public RivalsDuel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RivenTurnbull.java b/Mage.Sets/src/mage/cards/r/RivenTurnbull.java
index 11070096d92..b3f8ec15f1e 100644
--- a/Mage.Sets/src/mage/cards/r/RivenTurnbull.java
+++ b/Mage.Sets/src/mage/cards/r/RivenTurnbull.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class RivenTurnbull extends CardImpl {
+public final class RivenTurnbull extends CardImpl {
public RivenTurnbull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverBear.java b/Mage.Sets/src/mage/cards/r/RiverBear.java
index 73f1993d7b0..b518c8b3358 100644
--- a/Mage.Sets/src/mage/cards/r/RiverBear.java
+++ b/Mage.Sets/src/mage/cards/r/RiverBear.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RiverBear extends CardImpl {
+public final class RiverBear extends CardImpl {
public RiverBear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverBoa.java b/Mage.Sets/src/mage/cards/r/RiverBoa.java
index 0ccc5288339..56d973358ca 100644
--- a/Mage.Sets/src/mage/cards/r/RiverBoa.java
+++ b/Mage.Sets/src/mage/cards/r/RiverBoa.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RiverBoa extends CardImpl {
+public final class RiverBoa extends CardImpl {
public RiverBoa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverDarter.java b/Mage.Sets/src/mage/cards/r/RiverDarter.java
index 5f629a98ee1..5c257f789e3 100644
--- a/Mage.Sets/src/mage/cards/r/RiverDarter.java
+++ b/Mage.Sets/src/mage/cards/r/RiverDarter.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class RiverDarter extends CardImpl {
+public final class RiverDarter extends CardImpl {
public RiverDarter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverDelta.java b/Mage.Sets/src/mage/cards/r/RiverDelta.java
index f4fd4ce4ee2..62f7732269c 100644
--- a/Mage.Sets/src/mage/cards/r/RiverDelta.java
+++ b/Mage.Sets/src/mage/cards/r/RiverDelta.java
@@ -51,7 +51,7 @@ import mage.counters.CounterType;
*
* @author Luna Skyrise
*/
-public class RiverDelta extends CardImpl {
+public final class RiverDelta extends CardImpl {
public RiverDelta(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RiverHeraldsBoon.java b/Mage.Sets/src/mage/cards/r/RiverHeraldsBoon.java
index 1b063f57624..2b43ae61957 100644
--- a/Mage.Sets/src/mage/cards/r/RiverHeraldsBoon.java
+++ b/Mage.Sets/src/mage/cards/r/RiverHeraldsBoon.java
@@ -43,7 +43,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class RiverHeraldsBoon extends CardImpl {
+public final class RiverHeraldsBoon extends CardImpl {
public RiverHeraldsBoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverHoopoe.java b/Mage.Sets/src/mage/cards/r/RiverHoopoe.java
index 6772512502b..82c6ea14178 100644
--- a/Mage.Sets/src/mage/cards/r/RiverHoopoe.java
+++ b/Mage.Sets/src/mage/cards/r/RiverHoopoe.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author spjspj
*/
-public class RiverHoopoe extends CardImpl {
+public final class RiverHoopoe extends CardImpl {
public RiverHoopoe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverKaijin.java b/Mage.Sets/src/mage/cards/r/RiverKaijin.java
index f9f309b31e2..b6dda5f28d5 100644
--- a/Mage.Sets/src/mage/cards/r/RiverKaijin.java
+++ b/Mage.Sets/src/mage/cards/r/RiverKaijin.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class RiverKaijin extends CardImpl {
+public final class RiverKaijin extends CardImpl {
public RiverKaijin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverKelpie.java b/Mage.Sets/src/mage/cards/r/RiverKelpie.java
index a6cba75bea7..fbdefc02537 100644
--- a/Mage.Sets/src/mage/cards/r/RiverKelpie.java
+++ b/Mage.Sets/src/mage/cards/r/RiverKelpie.java
@@ -45,7 +45,7 @@ import mage.game.events.ZoneChangeEvent;
*
* @author jeffwadsworth
*/
-public class RiverKelpie extends CardImpl {
+public final class RiverKelpie extends CardImpl {
public RiverKelpie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverMerfolk.java b/Mage.Sets/src/mage/cards/r/RiverMerfolk.java
index dfd01b9a323..1f5f5aeb032 100644
--- a/Mage.Sets/src/mage/cards/r/RiverMerfolk.java
+++ b/Mage.Sets/src/mage/cards/r/RiverMerfolk.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class RiverMerfolk extends CardImpl {
+public final class RiverMerfolk extends CardImpl {
public RiverMerfolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverOfTears.java b/Mage.Sets/src/mage/cards/r/RiverOfTears.java
index 42ffaf26a1d..d745222e7ce 100644
--- a/Mage.Sets/src/mage/cards/r/RiverOfTears.java
+++ b/Mage.Sets/src/mage/cards/r/RiverOfTears.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayLandWatcher;
*
* @author LevelX2
*/
-public class RiverOfTears extends CardImpl {
+public final class RiverOfTears extends CardImpl {
public RiverOfTears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/r/RiverSerpent.java b/Mage.Sets/src/mage/cards/r/RiverSerpent.java
index 20d72ba5bab..494c563aee3 100644
--- a/Mage.Sets/src/mage/cards/r/RiverSerpent.java
+++ b/Mage.Sets/src/mage/cards/r/RiverSerpent.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author stravant
*/
-public class RiverSerpent extends CardImpl {
+public final class RiverSerpent extends CardImpl {
public RiverSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverSneak.java b/Mage.Sets/src/mage/cards/r/RiverSneak.java
index 5456f17dcd9..14b151d8069 100644
--- a/Mage.Sets/src/mage/cards/r/RiverSneak.java
+++ b/Mage.Sets/src/mage/cards/r/RiverSneak.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class RiverSneak extends CardImpl {
+public final class RiverSneak extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another Merfolk");
diff --git a/Mage.Sets/src/mage/cards/r/RiverfallMimic.java b/Mage.Sets/src/mage/cards/r/RiverfallMimic.java
index 7652696aac7..aeeb3effdaf 100644
--- a/Mage.Sets/src/mage/cards/r/RiverfallMimic.java
+++ b/Mage.Sets/src/mage/cards/r/RiverfallMimic.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author jeffwadsworth
*
*/
-public class RiverfallMimic extends CardImpl {
+public final class RiverfallMimic extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a spell that's both blue and red");
diff --git a/Mage.Sets/src/mage/cards/r/RiversGrasp.java b/Mage.Sets/src/mage/cards/r/RiversGrasp.java
index bc080aa2e92..981d87694b0 100644
--- a/Mage.Sets/src/mage/cards/r/RiversGrasp.java
+++ b/Mage.Sets/src/mage/cards/r/RiversGrasp.java
@@ -54,7 +54,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author jeffwadsworth
*/
-public class RiversGrasp extends CardImpl {
+public final class RiversGrasp extends CardImpl {
public RiversGrasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/r/RiversRebuke.java b/Mage.Sets/src/mage/cards/r/RiversRebuke.java
index 5ce62f4a540..87ec30dcf0b 100644
--- a/Mage.Sets/src/mage/cards/r/RiversRebuke.java
+++ b/Mage.Sets/src/mage/cards/r/RiversRebuke.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class RiversRebuke extends CardImpl {
+public final class RiversRebuke extends CardImpl {
public RiversRebuke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverwheelAerialists.java b/Mage.Sets/src/mage/cards/r/RiverwheelAerialists.java
index 3e387780da4..95847aea42b 100644
--- a/Mage.Sets/src/mage/cards/r/RiverwheelAerialists.java
+++ b/Mage.Sets/src/mage/cards/r/RiverwheelAerialists.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RiverwheelAerialists extends CardImpl {
+public final class RiverwheelAerialists extends CardImpl {
public RiverwheelAerialists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiverwiseAugur.java b/Mage.Sets/src/mage/cards/r/RiverwiseAugur.java
index 4c8167efdcd..72de34e35c0 100644
--- a/Mage.Sets/src/mage/cards/r/RiverwiseAugur.java
+++ b/Mage.Sets/src/mage/cards/r/RiverwiseAugur.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RiverwiseAugur extends CardImpl {
+public final class RiverwiseAugur extends CardImpl {
public RiverwiseAugur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RixMaadiDungeonPalace.java b/Mage.Sets/src/mage/cards/r/RixMaadiDungeonPalace.java
index f2aac20da17..7d5b76f4ae7 100644
--- a/Mage.Sets/src/mage/cards/r/RixMaadiDungeonPalace.java
+++ b/Mage.Sets/src/mage/cards/r/RixMaadiDungeonPalace.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class RixMaadiDungeonPalace extends CardImpl {
+public final class RixMaadiDungeonPalace extends CardImpl {
public RixMaadiDungeonPalace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RixMaadiGuildmage.java b/Mage.Sets/src/mage/cards/r/RixMaadiGuildmage.java
index ee3d16baef8..deeced754cb 100644
--- a/Mage.Sets/src/mage/cards/r/RixMaadiGuildmage.java
+++ b/Mage.Sets/src/mage/cards/r/RixMaadiGuildmage.java
@@ -53,7 +53,7 @@ import mage.watchers.common.PlayerLostLifeWatcher;
*
* @author LevelX2
*/
-public class RixMaadiGuildmage extends CardImpl {
+public final class RixMaadiGuildmage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterBlockingCreature("blocking creature");
private static final FilterPlayer playerFilter = new FilterPlayer("player who lost life this turn");
diff --git a/Mage.Sets/src/mage/cards/r/RoarOfChallenge.java b/Mage.Sets/src/mage/cards/r/RoarOfChallenge.java
index 660fb9308b6..5d962d0edb6 100644
--- a/Mage.Sets/src/mage/cards/r/RoarOfChallenge.java
+++ b/Mage.Sets/src/mage/cards/r/RoarOfChallenge.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RoarOfChallenge extends CardImpl {
+public final class RoarOfChallenge extends CardImpl {
public RoarOfChallenge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RoarOfJukai.java b/Mage.Sets/src/mage/cards/r/RoarOfJukai.java
index 7aa4ce05c0f..29643ed9e28 100644
--- a/Mage.Sets/src/mage/cards/r/RoarOfJukai.java
+++ b/Mage.Sets/src/mage/cards/r/RoarOfJukai.java
@@ -54,7 +54,7 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class RoarOfJukai extends CardImpl {
+public final class RoarOfJukai extends CardImpl {
public RoarOfJukai(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RoarOfReclamation.java b/Mage.Sets/src/mage/cards/r/RoarOfReclamation.java
index 2e343879e49..00778357bc7 100644
--- a/Mage.Sets/src/mage/cards/r/RoarOfReclamation.java
+++ b/Mage.Sets/src/mage/cards/r/RoarOfReclamation.java
@@ -30,14 +30,12 @@ package mage.cards.r;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
-import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.cards.Cards;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
-import mage.filter.common.FilterArtifactCard;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
@@ -45,10 +43,10 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class RoarOfReclamation extends CardImpl {
+public final class RoarOfReclamation extends CardImpl {
public RoarOfReclamation(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{W}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{W}{W}");
// Each player returns all artifact cards from their graveyard to the battlefield.
this.getSpellAbility().addEffect(new RoarOfReclamationEffect());
@@ -65,7 +63,7 @@ public class RoarOfReclamation extends CardImpl {
}
class RoarOfReclamationEffect extends OneShotEffect {
-
+
public RoarOfReclamationEffect() {
super(Outcome.PutCardInPlay);
staticText = "Each player returns all artifact cards from their graveyard to the battlefield";
@@ -82,19 +80,12 @@ class RoarOfReclamationEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- boolean result = true;
- for (Player player : game.getPlayers().values()) {
+ for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
+ Player player = game.getPlayer(playerId);
if (player != null) {
- Cards cards = player.getGraveyard();
- for (Card card : cards.getCards(new FilterArtifactCard(), game)) {
- if (card != null) {
- if (!card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), card.getOwnerId(), false)) {
- result = false;
- }
- }
- }
+ player.moveCards(player.getGraveyard().getCards(StaticFilters.FILTER_CARD_ARTIFACT, game), Zone.BATTLEFIELD, source, game);
}
}
- return result;
+ return true;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/r/RoarOfTheCrowd.java b/Mage.Sets/src/mage/cards/r/RoarOfTheCrowd.java
index c4b995cc01f..7b7d562b3dd 100644
--- a/Mage.Sets/src/mage/cards/r/RoarOfTheCrowd.java
+++ b/Mage.Sets/src/mage/cards/r/RoarOfTheCrowd.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author michael.napoleon@gmail.com
*/
-public class RoarOfTheCrowd extends CardImpl {
+public final class RoarOfTheCrowd extends CardImpl {
public RoarOfTheCrowd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RoarOfTheKha.java b/Mage.Sets/src/mage/cards/r/RoarOfTheKha.java
index 0a1fb2a437b..aa7ab093cde 100644
--- a/Mage.Sets/src/mage/cards/r/RoarOfTheKha.java
+++ b/Mage.Sets/src/mage/cards/r/RoarOfTheKha.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class RoarOfTheKha extends CardImpl {
+public final class RoarOfTheKha extends CardImpl {
private static final String rule = "untap all creatures you control";
diff --git a/Mage.Sets/src/mage/cards/r/RoarOfTheWurm.java b/Mage.Sets/src/mage/cards/r/RoarOfTheWurm.java
index c4183c3ad63..698a16b1704 100644
--- a/Mage.Sets/src/mage/cards/r/RoarOfTheWurm.java
+++ b/Mage.Sets/src/mage/cards/r/RoarOfTheWurm.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.WurmToken;
*
* @author magenoxx_at_gmail.com
*/
-public class RoarOfTheWurm extends CardImpl {
+public final class RoarOfTheWurm extends CardImpl {
public RoarOfTheWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RoaringPrimadox.java b/Mage.Sets/src/mage/cards/r/RoaringPrimadox.java
index fc078184271..0b713a44579 100644
--- a/Mage.Sets/src/mage/cards/r/RoaringPrimadox.java
+++ b/Mage.Sets/src/mage/cards/r/RoaringPrimadox.java
@@ -42,7 +42,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author North
*/
-public class RoaringPrimadox extends CardImpl {
+public final class RoaringPrimadox extends CardImpl {
public RoaringPrimadox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RoaringSlagwurm.java b/Mage.Sets/src/mage/cards/r/RoaringSlagwurm.java
index 1096f2fea26..b879eeedc20 100644
--- a/Mage.Sets/src/mage/cards/r/RoaringSlagwurm.java
+++ b/Mage.Sets/src/mage/cards/r/RoaringSlagwurm.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author djbrez
*/
-public class RoaringSlagwurm extends CardImpl {
+public final class RoaringSlagwurm extends CardImpl {
public RoaringSlagwurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Roast.java b/Mage.Sets/src/mage/cards/r/Roast.java
index aa38d22a95c..27ca08a069f 100644
--- a/Mage.Sets/src/mage/cards/r/Roast.java
+++ b/Mage.Sets/src/mage/cards/r/Roast.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Roast extends CardImpl {
+public final class Roast extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/r/RobeOfMirrors.java b/Mage.Sets/src/mage/cards/r/RobeOfMirrors.java
index 3f2e17c93cf..1749fc3d9b5 100644
--- a/Mage.Sets/src/mage/cards/r/RobeOfMirrors.java
+++ b/Mage.Sets/src/mage/cards/r/RobeOfMirrors.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class RobeOfMirrors extends CardImpl {
+public final class RobeOfMirrors extends CardImpl {
public RobeOfMirrors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RocEgg.java b/Mage.Sets/src/mage/cards/r/RocEgg.java
index ad24edfca54..c0056748a51 100644
--- a/Mage.Sets/src/mage/cards/r/RocEgg.java
+++ b/Mage.Sets/src/mage/cards/r/RocEgg.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.RocEggToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RocEgg extends CardImpl {
+public final class RocEgg extends CardImpl {
private static RocEggToken rocEggToken = new RocEggToken();
diff --git a/Mage.Sets/src/mage/cards/r/RocHatchling.java b/Mage.Sets/src/mage/cards/r/RocHatchling.java
index f87260cb9e7..be6df940547 100644
--- a/Mage.Sets/src/mage/cards/r/RocHatchling.java
+++ b/Mage.Sets/src/mage/cards/r/RocHatchling.java
@@ -53,7 +53,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class RocHatchling extends CardImpl {
+public final class RocHatchling extends CardImpl {
public RocHatchling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RocOfKherRidges.java b/Mage.Sets/src/mage/cards/r/RocOfKherRidges.java
index 4ddefa5178a..435b014c5f1 100644
--- a/Mage.Sets/src/mage/cards/r/RocOfKherRidges.java
+++ b/Mage.Sets/src/mage/cards/r/RocOfKherRidges.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RocOfKherRidges extends CardImpl {
+public final class RocOfKherRidges extends CardImpl {
public RocOfKherRidges(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RockBadger.java b/Mage.Sets/src/mage/cards/r/RockBadger.java
index daad8129861..c99343eb0db 100644
--- a/Mage.Sets/src/mage/cards/r/RockBadger.java
+++ b/Mage.Sets/src/mage/cards/r/RockBadger.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RockBadger extends CardImpl {
+public final class RockBadger extends CardImpl {
public RockBadger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RockBasilisk.java b/Mage.Sets/src/mage/cards/r/RockBasilisk.java
index bc642e18c9c..ef7464ade5d 100644
--- a/Mage.Sets/src/mage/cards/r/RockBasilisk.java
+++ b/Mage.Sets/src/mage/cards/r/RockBasilisk.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Backfir3
*/
-public class RockBasilisk extends CardImpl {
+public final class RockBasilisk extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creature");
diff --git a/Mage.Sets/src/mage/cards/r/RockHydra.java b/Mage.Sets/src/mage/cards/r/RockHydra.java
index 21506eb1ecb..a60eec95bad 100644
--- a/Mage.Sets/src/mage/cards/r/RockHydra.java
+++ b/Mage.Sets/src/mage/cards/r/RockHydra.java
@@ -56,7 +56,7 @@ import mage.game.permanent.Permanent;
*
* @author anonymous
*/
-public class RockHydra extends CardImpl {
+public final class RockHydra extends CardImpl {
public RockHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RockLobster.java b/Mage.Sets/src/mage/cards/r/RockLobster.java
index a33decf378a..9565103cf51 100644
--- a/Mage.Sets/src/mage/cards/r/RockLobster.java
+++ b/Mage.Sets/src/mage/cards/r/RockLobster.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author spjspj
*/
-public class RockLobster extends CardImpl {
+public final class RockLobster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures named Scissors Lizard");
diff --git a/Mage.Sets/src/mage/cards/r/RockSlide.java b/Mage.Sets/src/mage/cards/r/RockSlide.java
index 2a24e823a48..0ad47c1d3d6 100644
--- a/Mage.Sets/src/mage/cards/r/RockSlide.java
+++ b/Mage.Sets/src/mage/cards/r/RockSlide.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author TheElk801
*/
-public class RockSlide extends CardImpl {
+public final class RockSlide extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking or blocking creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/r/RockcasterPlatoon.java b/Mage.Sets/src/mage/cards/r/RockcasterPlatoon.java
index aea2870e469..d5d376b282b 100644
--- a/Mage.Sets/src/mage/cards/r/RockcasterPlatoon.java
+++ b/Mage.Sets/src/mage/cards/r/RockcasterPlatoon.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author Plopman
*/
-public class RockcasterPlatoon extends CardImpl {
+public final class RockcasterPlatoon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RocketLauncher.java b/Mage.Sets/src/mage/cards/r/RocketLauncher.java
index 0241898e809..8c6d33d84da 100644
--- a/Mage.Sets/src/mage/cards/r/RocketLauncher.java
+++ b/Mage.Sets/src/mage/cards/r/RocketLauncher.java
@@ -51,7 +51,7 @@ import mage.watchers.Watcher;
*
* @author MarcoMarin
*/
-public class RocketLauncher extends CardImpl {
+public final class RocketLauncher extends CardImpl {
public RocketLauncher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/r/RocketTrooper.java b/Mage.Sets/src/mage/cards/r/RocketTrooper.java
index 19b1c4eff22..83566eed630 100644
--- a/Mage.Sets/src/mage/cards/r/RocketTrooper.java
+++ b/Mage.Sets/src/mage/cards/r/RocketTrooper.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class RocketTrooper extends CardImpl {
+public final class RocketTrooper extends CardImpl {
public RocketTrooper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RockshardElemental.java b/Mage.Sets/src/mage/cards/r/RockshardElemental.java
index 80c6a6ba24f..6b50aa16dd0 100644
--- a/Mage.Sets/src/mage/cards/r/RockshardElemental.java
+++ b/Mage.Sets/src/mage/cards/r/RockshardElemental.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class RockshardElemental extends CardImpl {
+public final class RockshardElemental extends CardImpl {
public RockshardElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RockslideAmbush.java b/Mage.Sets/src/mage/cards/r/RockslideAmbush.java
index 71b7929a8aa..7afa52ceb3b 100644
--- a/Mage.Sets/src/mage/cards/r/RockslideAmbush.java
+++ b/Mage.Sets/src/mage/cards/r/RockslideAmbush.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class RockslideAmbush extends CardImpl {
+public final class RockslideAmbush extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Mountain you control");
diff --git a/Mage.Sets/src/mage/cards/r/RockslideElemental.java b/Mage.Sets/src/mage/cards/r/RockslideElemental.java
index 1cfe5854d74..23086cba296 100644
--- a/Mage.Sets/src/mage/cards/r/RockslideElemental.java
+++ b/Mage.Sets/src/mage/cards/r/RockslideElemental.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class RockslideElemental extends CardImpl {
+public final class RockslideElemental extends CardImpl {
public RockslideElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RockyTarPit.java b/Mage.Sets/src/mage/cards/r/RockyTarPit.java
index 84061e266e6..ab91521386c 100644
--- a/Mage.Sets/src/mage/cards/r/RockyTarPit.java
+++ b/Mage.Sets/src/mage/cards/r/RockyTarPit.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RockyTarPit extends CardImpl {
+public final class RockyTarPit extends CardImpl {
public RockyTarPit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RodOfRuin.java b/Mage.Sets/src/mage/cards/r/RodOfRuin.java
index be1dbda56fb..3b46775ecc7 100644
--- a/Mage.Sets/src/mage/cards/r/RodOfRuin.java
+++ b/Mage.Sets/src/mage/cards/r/RodOfRuin.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class RodOfRuin extends CardImpl {
+public final class RodOfRuin extends CardImpl {
public RodOfRuin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java b/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java
index 179e46c8d08..9e2763b0061 100644
--- a/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java
+++ b/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Backfir3
*/
-public class RofellosLlanowarEmissary extends CardImpl {
+public final class RofellosLlanowarEmissary extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("for each Forest you control");
diff --git a/Mage.Sets/src/mage/cards/r/RogueElephant.java b/Mage.Sets/src/mage/cards/r/RogueElephant.java
index f794240938e..bb90420f572 100644
--- a/Mage.Sets/src/mage/cards/r/RogueElephant.java
+++ b/Mage.Sets/src/mage/cards/r/RogueElephant.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class RogueElephant extends CardImpl {
+public final class RogueElephant extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/r/RogueKavu.java b/Mage.Sets/src/mage/cards/r/RogueKavu.java
index ffe04498403..9a1dc62ff0d 100644
--- a/Mage.Sets/src/mage/cards/r/RogueKavu.java
+++ b/Mage.Sets/src/mage/cards/r/RogueKavu.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class RogueKavu extends CardImpl {
+public final class RogueKavu extends CardImpl {
public RogueKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RogueRefiner.java b/Mage.Sets/src/mage/cards/r/RogueRefiner.java
index 21fb57bc22c..270bf9f5371 100644
--- a/Mage.Sets/src/mage/cards/r/RogueRefiner.java
+++ b/Mage.Sets/src/mage/cards/r/RogueRefiner.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class RogueRefiner extends CardImpl {
+public final class RogueRefiner extends CardImpl {
public RogueRefiner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RoguesGloves.java b/Mage.Sets/src/mage/cards/r/RoguesGloves.java
index 7153ddbe25c..a1080c40037 100644
--- a/Mage.Sets/src/mage/cards/r/RoguesGloves.java
+++ b/Mage.Sets/src/mage/cards/r/RoguesGloves.java
@@ -42,7 +42,7 @@ import mage.constants.Outcome;
*
* @author emerald000
*/
-public class RoguesGloves extends CardImpl {
+public final class RoguesGloves extends CardImpl {
public RoguesGloves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/r/RoguesPassage.java b/Mage.Sets/src/mage/cards/r/RoguesPassage.java
index 86a909bf06c..4c9e369e679 100644
--- a/Mage.Sets/src/mage/cards/r/RoguesPassage.java
+++ b/Mage.Sets/src/mage/cards/r/RoguesPassage.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author LevelX2
*/
-public class RoguesPassage extends CardImpl {
+public final class RoguesPassage extends CardImpl {
public RoguesPassage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RohgahhOfKherKeep.java b/Mage.Sets/src/mage/cards/r/RohgahhOfKherKeep.java
index 9669a2fe5cb..9cf2d354925 100644
--- a/Mage.Sets/src/mage/cards/r/RohgahhOfKherKeep.java
+++ b/Mage.Sets/src/mage/cards/r/RohgahhOfKherKeep.java
@@ -62,7 +62,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class RohgahhOfKherKeep extends CardImpl {
+public final class RohgahhOfKherKeep extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control named Kobolds of Kher Keep");
diff --git a/Mage.Sets/src/mage/cards/r/RoilElemental.java b/Mage.Sets/src/mage/cards/r/RoilElemental.java
index 9a3f2ccf167..ba0ee3aeb26 100644
--- a/Mage.Sets/src/mage/cards/r/RoilElemental.java
+++ b/Mage.Sets/src/mage/cards/r/RoilElemental.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class RoilElemental extends CardImpl {
+public final class RoilElemental extends CardImpl {
public RoilElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RoilSpout.java b/Mage.Sets/src/mage/cards/r/RoilSpout.java
index 8cc0e91b519..c2e8ee161f3 100644
--- a/Mage.Sets/src/mage/cards/r/RoilSpout.java
+++ b/Mage.Sets/src/mage/cards/r/RoilSpout.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RoilSpout extends CardImpl {
+public final class RoilSpout extends CardImpl {
public RoilSpout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RoilingHorror.java b/Mage.Sets/src/mage/cards/r/RoilingHorror.java
index dcb8b43196a..7b87c0d098e 100644
--- a/Mage.Sets/src/mage/cards/r/RoilingHorror.java
+++ b/Mage.Sets/src/mage/cards/r/RoilingHorror.java
@@ -56,7 +56,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class RoilingHorror extends CardImpl {
+public final class RoilingHorror extends CardImpl {
public RoilingHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RoilingTerrain.java b/Mage.Sets/src/mage/cards/r/RoilingTerrain.java
index 537245014b1..2d80af0c481 100644
--- a/Mage.Sets/src/mage/cards/r/RoilingTerrain.java
+++ b/Mage.Sets/src/mage/cards/r/RoilingTerrain.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class RoilingTerrain extends CardImpl {
+public final class RoilingTerrain extends CardImpl {
public RoilingTerrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RoilingWaters.java b/Mage.Sets/src/mage/cards/r/RoilingWaters.java
index 16554159ad9..d290f7d34f3 100644
--- a/Mage.Sets/src/mage/cards/r/RoilingWaters.java
+++ b/Mage.Sets/src/mage/cards/r/RoilingWaters.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class RoilingWaters extends CardImpl {
+public final class RoilingWaters extends CardImpl {
private final static FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/r/RoilmagesTrick.java b/Mage.Sets/src/mage/cards/r/RoilmagesTrick.java
index 25e831b3814..ab42996328d 100644
--- a/Mage.Sets/src/mage/cards/r/RoilmagesTrick.java
+++ b/Mage.Sets/src/mage/cards/r/RoilmagesTrick.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class RoilmagesTrick extends CardImpl {
+public final class RoilmagesTrick extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/r/RoilsRetribution.java b/Mage.Sets/src/mage/cards/r/RoilsRetribution.java
index b7bcb6fe180..da6f742ddc9 100644
--- a/Mage.Sets/src/mage/cards/r/RoilsRetribution.java
+++ b/Mage.Sets/src/mage/cards/r/RoilsRetribution.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LevelX2
*/
-public class RoilsRetribution extends CardImpl {
+public final class RoilsRetribution extends CardImpl {
public RoilsRetribution(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RollickOfAbandon.java b/Mage.Sets/src/mage/cards/r/RollickOfAbandon.java
index 22047c9b6d6..26130a6c323 100644
--- a/Mage.Sets/src/mage/cards/r/RollickOfAbandon.java
+++ b/Mage.Sets/src/mage/cards/r/RollickOfAbandon.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class RollickOfAbandon extends CardImpl {
+public final class RollickOfAbandon extends CardImpl {
public RollickOfAbandon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RollingEarthquake.java b/Mage.Sets/src/mage/cards/r/RollingEarthquake.java
index 85351a0af22..93e8e442ab1 100644
--- a/Mage.Sets/src/mage/cards/r/RollingEarthquake.java
+++ b/Mage.Sets/src/mage/cards/r/RollingEarthquake.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class RollingEarthquake extends CardImpl {
+public final class RollingEarthquake extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without horsemanship");
diff --git a/Mage.Sets/src/mage/cards/r/RollingSpoil.java b/Mage.Sets/src/mage/cards/r/RollingSpoil.java
index eb8b6f76d06..e85200b06e7 100644
--- a/Mage.Sets/src/mage/cards/r/RollingSpoil.java
+++ b/Mage.Sets/src/mage/cards/r/RollingSpoil.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class RollingSpoil extends CardImpl {
+public final class RollingSpoil extends CardImpl {
public RollingSpoil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RollingStones.java b/Mage.Sets/src/mage/cards/r/RollingStones.java
index c39cf3b0bfd..ee4f5478e4e 100644
--- a/Mage.Sets/src/mage/cards/r/RollingStones.java
+++ b/Mage.Sets/src/mage/cards/r/RollingStones.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Quercitron
*/
-public class RollingStones extends CardImpl {
+public final class RollingStones extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wall creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RollingTemblor.java b/Mage.Sets/src/mage/cards/r/RollingTemblor.java
index 451eb1ef417..97f918fd5e0 100644
--- a/Mage.Sets/src/mage/cards/r/RollingTemblor.java
+++ b/Mage.Sets/src/mage/cards/r/RollingTemblor.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author North
*/
-public class RollingTemblor extends CardImpl {
+public final class RollingTemblor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/r/RollingThunder.java b/Mage.Sets/src/mage/cards/r/RollingThunder.java
index 78a21e7ac85..818fa276ff5 100644
--- a/Mage.Sets/src/mage/cards/r/RollingThunder.java
+++ b/Mage.Sets/src/mage/cards/r/RollingThunder.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author fireshoes
*/
-public class RollingThunder extends CardImpl {
+public final class RollingThunder extends CardImpl {
public RollingThunder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RonaDiscipleOfGix.java b/Mage.Sets/src/mage/cards/r/RonaDiscipleOfGix.java
index 58fc5084ac9..7f788fa9d6a 100644
--- a/Mage.Sets/src/mage/cards/r/RonaDiscipleOfGix.java
+++ b/Mage.Sets/src/mage/cards/r/RonaDiscipleOfGix.java
@@ -60,7 +60,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class RonaDiscipleOfGix extends CardImpl {
+public final class RonaDiscipleOfGix extends CardImpl {
public RonaDiscipleOfGix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RoninCavekeeper.java b/Mage.Sets/src/mage/cards/r/RoninCavekeeper.java
index aadd2ea0024..a2150960669 100644
--- a/Mage.Sets/src/mage/cards/r/RoninCavekeeper.java
+++ b/Mage.Sets/src/mage/cards/r/RoninCavekeeper.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RoninCavekeeper extends CardImpl {
+public final class RoninCavekeeper extends CardImpl {
public RoninCavekeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RoninCliffrider.java b/Mage.Sets/src/mage/cards/r/RoninCliffrider.java
index dba0971ad7e..57f16a86bbc 100644
--- a/Mage.Sets/src/mage/cards/r/RoninCliffrider.java
+++ b/Mage.Sets/src/mage/cards/r/RoninCliffrider.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class RoninCliffrider extends CardImpl {
+public final class RoninCliffrider extends CardImpl {
public RoninCliffrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RoninHoundmaster.java b/Mage.Sets/src/mage/cards/r/RoninHoundmaster.java
index f5a9c8b80e0..9901a9c0d21 100644
--- a/Mage.Sets/src/mage/cards/r/RoninHoundmaster.java
+++ b/Mage.Sets/src/mage/cards/r/RoninHoundmaster.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class RoninHoundmaster extends CardImpl {
+public final class RoninHoundmaster extends CardImpl {
public RoninHoundmaster (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RoninWarclub.java b/Mage.Sets/src/mage/cards/r/RoninWarclub.java
index b05821f78fa..cbc9f04304d 100644
--- a/Mage.Sets/src/mage/cards/r/RoninWarclub.java
+++ b/Mage.Sets/src/mage/cards/r/RoninWarclub.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RoninWarclub extends CardImpl {
+public final class RoninWarclub extends CardImpl {
public RoninWarclub(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/r/RonomHulk.java b/Mage.Sets/src/mage/cards/r/RonomHulk.java
index 51fd10e5527..5aeac3823e6 100644
--- a/Mage.Sets/src/mage/cards/r/RonomHulk.java
+++ b/Mage.Sets/src/mage/cards/r/RonomHulk.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author LoneFox
*/
-public class RonomHulk extends CardImpl {
+public final class RonomHulk extends CardImpl {
private static final FilterCard filter = new FilterCard("snow");
diff --git a/Mage.Sets/src/mage/cards/r/RonomSerpent.java b/Mage.Sets/src/mage/cards/r/RonomSerpent.java
index 37fa43860b0..81fd22dff0f 100644
--- a/Mage.Sets/src/mage/cards/r/RonomSerpent.java
+++ b/Mage.Sets/src/mage/cards/r/RonomSerpent.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author TheElk801
*/
-public class RonomSerpent extends CardImpl {
+public final class RonomSerpent extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("a snow land");
private static final FilterLandPermanent filter2 = new FilterLandPermanent("no snow lands");
diff --git a/Mage.Sets/src/mage/cards/r/RonomUnicorn.java b/Mage.Sets/src/mage/cards/r/RonomUnicorn.java
index fe12934ca47..8c0d59b931e 100644
--- a/Mage.Sets/src/mage/cards/r/RonomUnicorn.java
+++ b/Mage.Sets/src/mage/cards/r/RonomUnicorn.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Jgod
*/
-public class RonomUnicorn extends CardImpl {
+public final class RonomUnicorn extends CardImpl {
public RonomUnicorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RoofstalkerWight.java b/Mage.Sets/src/mage/cards/r/RoofstalkerWight.java
index be65c0178a4..053847a7dfd 100644
--- a/Mage.Sets/src/mage/cards/r/RoofstalkerWight.java
+++ b/Mage.Sets/src/mage/cards/r/RoofstalkerWight.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class RoofstalkerWight extends CardImpl {
+public final class RoofstalkerWight extends CardImpl {
public RoofstalkerWight (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RooftopStorm.java b/Mage.Sets/src/mage/cards/r/RooftopStorm.java
index 1264d062407..fdacd0ba53b 100644
--- a/Mage.Sets/src/mage/cards/r/RooftopStorm.java
+++ b/Mage.Sets/src/mage/cards/r/RooftopStorm.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class RooftopStorm extends CardImpl {
+public final class RooftopStorm extends CardImpl {
public RooftopStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RoonOfTheHiddenRealm.java b/Mage.Sets/src/mage/cards/r/RoonOfTheHiddenRealm.java
index 1111fb78ad4..8f64f3bfadc 100644
--- a/Mage.Sets/src/mage/cards/r/RoonOfTheHiddenRealm.java
+++ b/Mage.Sets/src/mage/cards/r/RoonOfTheHiddenRealm.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class RoonOfTheHiddenRealm extends CardImpl {
+public final class RoonOfTheHiddenRealm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/r/RootCage.java b/Mage.Sets/src/mage/cards/r/RootCage.java
index fdf4c56229c..4aace4ece5c 100644
--- a/Mage.Sets/src/mage/cards/r/RootCage.java
+++ b/Mage.Sets/src/mage/cards/r/RootCage.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class RootCage extends CardImpl {
+public final class RootCage extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Mercenaries");
diff --git a/Mage.Sets/src/mage/cards/r/RootElemental.java b/Mage.Sets/src/mage/cards/r/RootElemental.java
index 1a1c59270a8..afd78276b6a 100644
--- a/Mage.Sets/src/mage/cards/r/RootElemental.java
+++ b/Mage.Sets/src/mage/cards/r/RootElemental.java
@@ -31,22 +31,22 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.keyword.MorphAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterCreatureCard;
+import mage.filter.StaticFilters;
/**
*
* @author LoneFox
*/
-public class RootElemental extends CardImpl {
+public final class RootElemental extends CardImpl {
public RootElemental(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
this.subtype.add(SubType.ELEMENTAL);
this.power = new MageInt(6);
this.toughness = new MageInt(5);
@@ -54,7 +54,7 @@ public class RootElemental extends CardImpl {
// Morph {5}{G}{G}
this.addAbility(new MorphAbility(this, new ManaCostsImpl("{5}{G}{G}")));
// When Root Elemental is turned face up, you may put a creature card from your hand onto the battlefield.
- this.addAbility(new TurnedFaceUpSourceTriggeredAbility(new PutPermanentOnBattlefieldEffect(new FilterCreatureCard("a creature card"))));
+ this.addAbility(new TurnedFaceUpSourceTriggeredAbility(new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_CREATURE_A)));
}
public RootElemental(final RootElemental card) {
diff --git a/Mage.Sets/src/mage/cards/r/RootGreevil.java b/Mage.Sets/src/mage/cards/r/RootGreevil.java
index 6fc91c02c27..a1b766f89fb 100644
--- a/Mage.Sets/src/mage/cards/r/RootGreevil.java
+++ b/Mage.Sets/src/mage/cards/r/RootGreevil.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author Derpthemeus
*/
-public class RootGreevil extends CardImpl {
+public final class RootGreevil extends CardImpl {
public RootGreevil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RootKinAlly.java b/Mage.Sets/src/mage/cards/r/RootKinAlly.java
index 2167ce251e5..a4b1ecffce5 100644
--- a/Mage.Sets/src/mage/cards/r/RootKinAlly.java
+++ b/Mage.Sets/src/mage/cards/r/RootKinAlly.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class RootKinAlly extends CardImpl {
+public final class RootKinAlly extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RootMaze.java b/Mage.Sets/src/mage/cards/r/RootMaze.java
index deabb035f9a..39ea73d6c11 100644
--- a/Mage.Sets/src/mage/cards/r/RootMaze.java
+++ b/Mage.Sets/src/mage/cards/r/RootMaze.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class RootMaze extends CardImpl {
+public final class RootMaze extends CardImpl {
public RootMaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RootOut.java b/Mage.Sets/src/mage/cards/r/RootOut.java
index 97a6a8219bb..4747ec1cefd 100644
--- a/Mage.Sets/src/mage/cards/r/RootOut.java
+++ b/Mage.Sets/src/mage/cards/r/RootOut.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class RootOut extends CardImpl {
+public final class RootOut extends CardImpl {
public RootOut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RootSliver.java b/Mage.Sets/src/mage/cards/r/RootSliver.java
index 0190c80edf1..5386d5203e9 100644
--- a/Mage.Sets/src/mage/cards/r/RootSliver.java
+++ b/Mage.Sets/src/mage/cards/r/RootSliver.java
@@ -52,7 +52,7 @@ import mage.game.stack.StackObject;
*
* @author cbt33, BetaSteward (Autumn's Veil, Combust)
*/
-public class RootSliver extends CardImpl {
+public final class RootSliver extends CardImpl {
private static final FilterSpell filter = new FilterSpell("Sliver spells");
diff --git a/Mage.Sets/src/mage/cards/r/RootSpider.java b/Mage.Sets/src/mage/cards/r/RootSpider.java
index 9a781a4f800..0f73af3841b 100644
--- a/Mage.Sets/src/mage/cards/r/RootSpider.java
+++ b/Mage.Sets/src/mage/cards/r/RootSpider.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class RootSpider extends CardImpl {
+public final class RootSpider extends CardImpl {
public RootSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RootbornDefenses.java b/Mage.Sets/src/mage/cards/r/RootbornDefenses.java
index 16199e07c72..c4ef0bf0d9b 100644
--- a/Mage.Sets/src/mage/cards/r/RootbornDefenses.java
+++ b/Mage.Sets/src/mage/cards/r/RootbornDefenses.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevleX2
*/
-public class RootbornDefenses extends CardImpl {
+public final class RootbornDefenses extends CardImpl {
public RootbornDefenses(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RootboundCrag.java b/Mage.Sets/src/mage/cards/r/RootboundCrag.java
index faaecb50fb2..efbfebe91ad 100644
--- a/Mage.Sets/src/mage/cards/r/RootboundCrag.java
+++ b/Mage.Sets/src/mage/cards/r/RootboundCrag.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RootboundCrag extends CardImpl {
+public final class RootboundCrag extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RootbreakerWurm.java b/Mage.Sets/src/mage/cards/r/RootbreakerWurm.java
index fceaeff954d..754add1c18b 100644
--- a/Mage.Sets/src/mage/cards/r/RootbreakerWurm.java
+++ b/Mage.Sets/src/mage/cards/r/RootbreakerWurm.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RootbreakerWurm extends CardImpl {
+public final class RootbreakerWurm extends CardImpl {
public RootbreakerWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Rootgrapple.java b/Mage.Sets/src/mage/cards/r/Rootgrapple.java
index fdea096c755..0d3420769b7 100644
--- a/Mage.Sets/src/mage/cards/r/Rootgrapple.java
+++ b/Mage.Sets/src/mage/cards/r/Rootgrapple.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author Wehk
*/
-public class Rootgrapple extends CardImpl {
+public final class Rootgrapple extends CardImpl {
private static final FilterPermanent filterNoncreature = new FilterPermanent("noncreature permanent");
private static final FilterPermanent filterTreefolk = new FilterPermanent("If you control a Treefolk,");
diff --git a/Mage.Sets/src/mage/cards/r/RootingKavu.java b/Mage.Sets/src/mage/cards/r/RootingKavu.java
index 4ff14279dab..b0d3144a5f7 100644
--- a/Mage.Sets/src/mage/cards/r/RootingKavu.java
+++ b/Mage.Sets/src/mage/cards/r/RootingKavu.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author Derpthemeus
*/
-public class RootingKavu extends CardImpl {
+public final class RootingKavu extends CardImpl {
public RootingKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Rootrunner.java b/Mage.Sets/src/mage/cards/r/Rootrunner.java
index ea0aea0a77f..e01a9928fa8 100644
--- a/Mage.Sets/src/mage/cards/r/Rootrunner.java
+++ b/Mage.Sets/src/mage/cards/r/Rootrunner.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
/**
* @author Loki
*/
-public class Rootrunner extends CardImpl {
+public final class Rootrunner extends CardImpl {
public Rootrunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Roots.java b/Mage.Sets/src/mage/cards/r/Roots.java
index 6f05c251883..28178c174cf 100644
--- a/Mage.Sets/src/mage/cards/r/Roots.java
+++ b/Mage.Sets/src/mage/cards/r/Roots.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Roots extends CardImpl {
+public final class Roots extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/r/Rootwalla.java b/Mage.Sets/src/mage/cards/r/Rootwalla.java
index c7dcf6966d0..1d0f6995716 100644
--- a/Mage.Sets/src/mage/cards/r/Rootwalla.java
+++ b/Mage.Sets/src/mage/cards/r/Rootwalla.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Rootwalla extends CardImpl {
+public final class Rootwalla extends CardImpl {
public Rootwalla(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RootwaterAlligator.java b/Mage.Sets/src/mage/cards/r/RootwaterAlligator.java
index 93030afa286..0e74bf94f5b 100644
--- a/Mage.Sets/src/mage/cards/r/RootwaterAlligator.java
+++ b/Mage.Sets/src/mage/cards/r/RootwaterAlligator.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class RootwaterAlligator extends CardImpl {
+public final class RootwaterAlligator extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/r/RootwaterCommando.java b/Mage.Sets/src/mage/cards/r/RootwaterCommando.java
index 3e6d6ea9ae9..eda69a54ade 100644
--- a/Mage.Sets/src/mage/cards/r/RootwaterCommando.java
+++ b/Mage.Sets/src/mage/cards/r/RootwaterCommando.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RootwaterCommando extends CardImpl {
+public final class RootwaterCommando extends CardImpl {
public RootwaterCommando(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RootwaterDepths.java b/Mage.Sets/src/mage/cards/r/RootwaterDepths.java
index 136b426facc..a773a666804 100644
--- a/Mage.Sets/src/mage/cards/r/RootwaterDepths.java
+++ b/Mage.Sets/src/mage/cards/r/RootwaterDepths.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class RootwaterDepths extends CardImpl {
+public final class RootwaterDepths extends CardImpl {
public RootwaterDepths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/r/RootwaterDiver.java b/Mage.Sets/src/mage/cards/r/RootwaterDiver.java
index 9476da04abb..64dfff9c63a 100644
--- a/Mage.Sets/src/mage/cards/r/RootwaterDiver.java
+++ b/Mage.Sets/src/mage/cards/r/RootwaterDiver.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TGower
*/
-public class RootwaterDiver extends CardImpl {
+public final class RootwaterDiver extends CardImpl {
public RootwaterDiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RootwaterHunter.java b/Mage.Sets/src/mage/cards/r/RootwaterHunter.java
index b3528a0b8ac..57ce6a91ad3 100644
--- a/Mage.Sets/src/mage/cards/r/RootwaterHunter.java
+++ b/Mage.Sets/src/mage/cards/r/RootwaterHunter.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class RootwaterHunter extends CardImpl {
+public final class RootwaterHunter extends CardImpl {
public RootwaterHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RootwaterMatriarch.java b/Mage.Sets/src/mage/cards/r/RootwaterMatriarch.java
index 083a1ae0aab..8e06421c5ee 100644
--- a/Mage.Sets/src/mage/cards/r/RootwaterMatriarch.java
+++ b/Mage.Sets/src/mage/cards/r/RootwaterMatriarch.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class RootwaterMatriarch extends CardImpl {
+public final class RootwaterMatriarch extends CardImpl {
public RootwaterMatriarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RootwaterMystic.java b/Mage.Sets/src/mage/cards/r/RootwaterMystic.java
index a79f90bb828..1de7de64098 100644
--- a/Mage.Sets/src/mage/cards/r/RootwaterMystic.java
+++ b/Mage.Sets/src/mage/cards/r/RootwaterMystic.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class RootwaterMystic extends CardImpl {
+public final class RootwaterMystic extends CardImpl {
public RootwaterMystic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RootwaterShaman.java b/Mage.Sets/src/mage/cards/r/RootwaterShaman.java
index 9f0ecfaa066..4bb1b7c8e4e 100644
--- a/Mage.Sets/src/mage/cards/r/RootwaterShaman.java
+++ b/Mage.Sets/src/mage/cards/r/RootwaterShaman.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author L_J
*/
-public class RootwaterShaman extends CardImpl {
+public final class RootwaterShaman extends CardImpl {
private static final FilterCard filter = new FilterCard("Aura spells with enchant creature");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RootwaterThief.java b/Mage.Sets/src/mage/cards/r/RootwaterThief.java
index 8db1297f42e..6a8c17ce340 100644
--- a/Mage.Sets/src/mage/cards/r/RootwaterThief.java
+++ b/Mage.Sets/src/mage/cards/r/RootwaterThief.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInLibrary;
* @author LoneFox
*/
-public class RootwaterThief extends CardImpl {
+public final class RootwaterThief extends CardImpl {
public RootwaterThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RorixBladewing.java b/Mage.Sets/src/mage/cards/r/RorixBladewing.java
index eb253b3dabc..bf0cc6504af 100644
--- a/Mage.Sets/src/mage/cards/r/RorixBladewing.java
+++ b/Mage.Sets/src/mage/cards/r/RorixBladewing.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class RorixBladewing extends CardImpl {
+public final class RorixBladewing extends CardImpl {
public RorixBladewing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RosheenMeanderer.java b/Mage.Sets/src/mage/cards/r/RosheenMeanderer.java
index deac422121a..209b73fe293 100644
--- a/Mage.Sets/src/mage/cards/r/RosheenMeanderer.java
+++ b/Mage.Sets/src/mage/cards/r/RosheenMeanderer.java
@@ -48,7 +48,7 @@ import mage.game.Game;
*
* @author jeffwadsworth
*/
-public class RosheenMeanderer extends CardImpl {
+public final class RosheenMeanderer extends CardImpl {
public RosheenMeanderer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/r/RotFarmSkeleton.java b/Mage.Sets/src/mage/cards/r/RotFarmSkeleton.java
index ff68ee3ccb3..a71c9e27ab5 100644
--- a/Mage.Sets/src/mage/cards/r/RotFarmSkeleton.java
+++ b/Mage.Sets/src/mage/cards/r/RotFarmSkeleton.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*/
-public class RotFarmSkeleton extends CardImpl {
+public final class RotFarmSkeleton extends CardImpl {
public RotFarmSkeleton (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RotShambler.java b/Mage.Sets/src/mage/cards/r/RotShambler.java
index 0862e90ea64..ab03d38ce3f 100644
--- a/Mage.Sets/src/mage/cards/r/RotShambler.java
+++ b/Mage.Sets/src/mage/cards/r/RotShambler.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class RotShambler extends CardImpl {
+public final class RotShambler extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/r/RotWolf.java b/Mage.Sets/src/mage/cards/r/RotWolf.java
index 7336c23b584..e2e48993caa 100644
--- a/Mage.Sets/src/mage/cards/r/RotWolf.java
+++ b/Mage.Sets/src/mage/cards/r/RotWolf.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RotWolf extends CardImpl {
+public final class RotWolf extends CardImpl {
public RotWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RotcrownGhoul.java b/Mage.Sets/src/mage/cards/r/RotcrownGhoul.java
index ec0b78d8e13..15a69ae115c 100644
--- a/Mage.Sets/src/mage/cards/r/RotcrownGhoul.java
+++ b/Mage.Sets/src/mage/cards/r/RotcrownGhoul.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
/**
* @author noxx
*/
-public class RotcrownGhoul extends CardImpl {
+public final class RotcrownGhoul extends CardImpl {
public RotcrownGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/Roterothopter.java b/Mage.Sets/src/mage/cards/r/Roterothopter.java
index ca846682a74..1fa3fa48ec9 100644
--- a/Mage.Sets/src/mage/cards/r/Roterothopter.java
+++ b/Mage.Sets/src/mage/cards/r/Roterothopter.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class Roterothopter extends CardImpl {
+public final class Roterothopter extends CardImpl {
public Roterothopter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/r/RotfeasterMaggot.java b/Mage.Sets/src/mage/cards/r/RotfeasterMaggot.java
index 50e18ac9959..449f861ae06 100644
--- a/Mage.Sets/src/mage/cards/r/RotfeasterMaggot.java
+++ b/Mage.Sets/src/mage/cards/r/RotfeasterMaggot.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class RotfeasterMaggot extends CardImpl {
+public final class RotfeasterMaggot extends CardImpl {
public RotfeasterMaggot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RotlungReanimator.java b/Mage.Sets/src/mage/cards/r/RotlungReanimator.java
index a56632de2f1..dac3e8afeb5 100644
--- a/Mage.Sets/src/mage/cards/r/RotlungReanimator.java
+++ b/Mage.Sets/src/mage/cards/r/RotlungReanimator.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author fireshoes
*/
-public class RotlungReanimator extends CardImpl {
+public final class RotlungReanimator extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("{this} or another Cleric");
diff --git a/Mage.Sets/src/mage/cards/r/RottedHulk.java b/Mage.Sets/src/mage/cards/r/RottedHulk.java
index a7f6fb7ee5b..3345eb24b9d 100644
--- a/Mage.Sets/src/mage/cards/r/RottedHulk.java
+++ b/Mage.Sets/src/mage/cards/r/RottedHulk.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RottedHulk extends CardImpl {
+public final class RottedHulk extends CardImpl {
public RottedHulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RottedHystrix.java b/Mage.Sets/src/mage/cards/r/RottedHystrix.java
index 1ce6ca3d919..4e7783511b6 100644
--- a/Mage.Sets/src/mage/cards/r/RottedHystrix.java
+++ b/Mage.Sets/src/mage/cards/r/RottedHystrix.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RottedHystrix extends CardImpl {
+public final class RottedHystrix extends CardImpl {
public RottedHystrix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RottenheartGhoul.java b/Mage.Sets/src/mage/cards/r/RottenheartGhoul.java
index 47b69ffaaea..30933e0d5f8 100644
--- a/Mage.Sets/src/mage/cards/r/RottenheartGhoul.java
+++ b/Mage.Sets/src/mage/cards/r/RottenheartGhoul.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class RottenheartGhoul extends CardImpl {
+public final class RottenheartGhoul extends CardImpl {
public RottenheartGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RottingFensnake.java b/Mage.Sets/src/mage/cards/r/RottingFensnake.java
index 7ab53b78712..2def831c1eb 100644
--- a/Mage.Sets/src/mage/cards/r/RottingFensnake.java
+++ b/Mage.Sets/src/mage/cards/r/RottingFensnake.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RottingFensnake extends CardImpl {
+public final class RottingFensnake extends CardImpl {
public RottingFensnake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RottingGiant.java b/Mage.Sets/src/mage/cards/r/RottingGiant.java
index f05a64e4ca9..04add02d5f9 100644
--- a/Mage.Sets/src/mage/cards/r/RottingGiant.java
+++ b/Mage.Sets/src/mage/cards/r/RottingGiant.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author cbt33
*/
-public class RottingGiant extends CardImpl {
+public final class RottingGiant extends CardImpl {
public RottingGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RottingLegion.java b/Mage.Sets/src/mage/cards/r/RottingLegion.java
index b09ec6cc502..e031315bcb7 100644
--- a/Mage.Sets/src/mage/cards/r/RottingLegion.java
+++ b/Mage.Sets/src/mage/cards/r/RottingLegion.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RottingLegion extends CardImpl {
+public final class RottingLegion extends CardImpl {
public RottingLegion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RottingMastodon.java b/Mage.Sets/src/mage/cards/r/RottingMastodon.java
index a2ef8dbf01c..a8f8f073de9 100644
--- a/Mage.Sets/src/mage/cards/r/RottingMastodon.java
+++ b/Mage.Sets/src/mage/cards/r/RottingMastodon.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RottingMastodon extends CardImpl {
+public final class RottingMastodon extends CardImpl {
public RottingMastodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RottingRats.java b/Mage.Sets/src/mage/cards/r/RottingRats.java
index c947ac5d992..b9e776435a0 100644
--- a/Mage.Sets/src/mage/cards/r/RottingRats.java
+++ b/Mage.Sets/src/mage/cards/r/RottingRats.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class RottingRats extends CardImpl {
+public final class RottingRats extends CardImpl {
public RottingRats (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RoughTumble.java b/Mage.Sets/src/mage/cards/r/RoughTumble.java
index 81ceab90bc0..f62324a910e 100644
--- a/Mage.Sets/src/mage/cards/r/RoughTumble.java
+++ b/Mage.Sets/src/mage/cards/r/RoughTumble.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class RoughTumble extends SplitCard {
+public final class RoughTumble extends SplitCard {
private static final FilterCreaturePermanent filterFlying = new FilterCreaturePermanent("creature with flying");
private static final FilterCreaturePermanent filterWithoutFlying = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/r/RoughshodMentor.java b/Mage.Sets/src/mage/cards/r/RoughshodMentor.java
index 50997313018..18f4aa85144 100644
--- a/Mage.Sets/src/mage/cards/r/RoughshodMentor.java
+++ b/Mage.Sets/src/mage/cards/r/RoughshodMentor.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class RoughshodMentor extends CardImpl {
+public final class RoughshodMentor extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Green creatures");
diff --git a/Mage.Sets/src/mage/cards/r/Rouse.java b/Mage.Sets/src/mage/cards/r/Rouse.java
index 25ae2447d85..f55e4fa0491 100644
--- a/Mage.Sets/src/mage/cards/r/Rouse.java
+++ b/Mage.Sets/src/mage/cards/r/Rouse.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Rouse extends CardImpl {
+public final class Rouse extends CardImpl {
private static final FilterLandPermanent filterSwamp = new FilterLandPermanent("If you control a Swamp");
diff --git a/Mage.Sets/src/mage/cards/r/RouseTheMob.java b/Mage.Sets/src/mage/cards/r/RouseTheMob.java
index 8800b43da18..4c9157f6451 100644
--- a/Mage.Sets/src/mage/cards/r/RouseTheMob.java
+++ b/Mage.Sets/src/mage/cards/r/RouseTheMob.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RouseTheMob extends CardImpl {
+public final class RouseTheMob extends CardImpl {
public RouseTheMob(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RousingOfSouls.java b/Mage.Sets/src/mage/cards/r/RousingOfSouls.java
index 816960f71fa..5339ab56293 100644
--- a/Mage.Sets/src/mage/cards/r/RousingOfSouls.java
+++ b/Mage.Sets/src/mage/cards/r/RousingOfSouls.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class RousingOfSouls extends CardImpl {
+public final class RousingOfSouls extends CardImpl {
public RousingOfSouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Rout.java b/Mage.Sets/src/mage/cards/r/Rout.java
index 1a7dd5d9714..116eba65da0 100644
--- a/Mage.Sets/src/mage/cards/r/Rout.java
+++ b/Mage.Sets/src/mage/cards/r/Rout.java
@@ -43,7 +43,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
* @author LoneFox
*
*/
-public class Rout extends CardImpl {
+public final class Rout extends CardImpl {
public Rout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RowanKenrith.java b/Mage.Sets/src/mage/cards/r/RowanKenrith.java
new file mode 100644
index 00000000000..d7af03a3828
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/r/RowanKenrith.java
@@ -0,0 +1,182 @@
+/*
+ * 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.MageObjectReference;
+import mage.abilities.Ability;
+import mage.abilities.LoyaltyAbility;
+import mage.abilities.common.CanBeYourCommanderAbility;
+import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.RequirementEffect;
+import mage.abilities.effects.common.DamageAllEffect;
+import mage.abilities.effects.common.GetEmblemTargetPlayerEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.TurnPhase;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.ControllerIdPredicate;
+import mage.filter.predicate.permanent.TappedPredicate;
+import mage.game.Game;
+import mage.game.command.emblems.RowanKenrithEmblem;
+import mage.game.permanent.Permanent;
+import mage.target.TargetPlayer;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class RowanKenrith extends CardImpl {
+
+ public RowanKenrith(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{R}{R}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.ROWAN);
+ this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(4));
+
+ // +2: During target player's next turn, each creature that player controls attacks if able.
+ LoyaltyAbility ability = new LoyaltyAbility(new RowanKenrithAttackEffect(), 2);
+ ability.addTarget(new TargetPlayer());
+ this.addAbility(ability);
+
+ // -2: Rowan Kenrith deals 3 damage to each tapped creature target player controls.
+ ability = new LoyaltyAbility(new RowanKenrithDamageEffect(), -2);
+ ability.addTarget(new TargetPlayer());
+ this.addAbility(ability);
+
+ // -8: Target player gets an emblem with "Whenever you activate an ability that isn't a mana ability, copy it. You may choose new targets for the copy."
+ Effect effect = new GetEmblemTargetPlayerEffect(new RowanKenrithEmblem());
+ effect.setText(
+ "Target player gets an emblem with "
+ + "\"Whenever you activate an ability that isn't a mana ability, "
+ + "copy it. You may choose new targets for the copy.\""
+ );
+ ability = new LoyaltyAbility(effect, -8);
+ ability.addTarget(new TargetPlayer());
+ this.addAbility(ability);
+
+ // Partner with Will Kenrith
+ this.addAbility(new PartnerWithAbility("Will Kenrith", true, false));
+
+ // Rowan Kenrith can be your commander.
+ this.addAbility(CanBeYourCommanderAbility.getInstance());
+ }
+
+ public RowanKenrith(final RowanKenrith card) {
+ super(card);
+ }
+
+ @Override
+ public RowanKenrith copy() {
+ return new RowanKenrith(this);
+ }
+}
+
+class RowanKenrithAttackEffect extends RequirementEffect {
+
+ protected MageObjectReference creatingPermanent;
+
+ public RowanKenrithAttackEffect() {
+ super(Duration.Custom);
+ staticText = "During target player's next turn, creatures that player controls attack if able";
+ }
+
+ public RowanKenrithAttackEffect(final RowanKenrithAttackEffect effect) {
+ super(effect);
+ this.creatingPermanent = effect.creatingPermanent;
+ }
+
+ @Override
+ public RowanKenrithAttackEffect copy() {
+ return new RowanKenrithAttackEffect(this);
+ }
+
+ @Override
+ public void init(Ability source, Game game) {
+ super.init(source, game);
+ creatingPermanent = new MageObjectReference(source.getSourceId(), game);
+ }
+
+ @Override
+ public boolean applies(Permanent permanent, Ability source, Game game) {
+ return permanent.getControllerId().equals(source.getFirstTarget());
+ }
+
+ @Override
+ public boolean isInactive(Ability source, Game game) {
+ return (startingTurn != game.getTurnNum()
+ && (game.getPhase().getType() == TurnPhase.END
+ && game.getActivePlayerId().equals(source.getFirstTarget())))
+ || // 6/15/2010: If a creature controlled by the affected player can't attack Gideon Jura (because he's no longer on the battlefield, for example), that player may have it attack you, another one of your planeswalkers, or nothing at all.
+ creatingPermanent.getPermanent(game) == null;
+ }
+
+ @Override
+ public boolean mustAttack(Game game) {
+ return true;
+ }
+
+ @Override
+ public boolean mustBlock(Game game) {
+ return false;
+ }
+}
+
+class RowanKenrithDamageEffect extends OneShotEffect {
+
+ RowanKenrithDamageEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "{this} deals 3 damage to each tapped creature target player controls";
+ }
+
+ RowanKenrithDamageEffect(final RowanKenrithDamageEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public RowanKenrithDamageEffect copy() {
+ return new RowanKenrithDamageEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ filter.add(new TappedPredicate());
+ filter.add(new ControllerIdPredicate(source.getFirstTarget()));
+ return new DamageAllEffect(3, filter).apply(game, source);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/r/RowanTreefolk.java b/Mage.Sets/src/mage/cards/r/RowanTreefolk.java
index 5f289ba122d..840a6632e34 100644
--- a/Mage.Sets/src/mage/cards/r/RowanTreefolk.java
+++ b/Mage.Sets/src/mage/cards/r/RowanTreefolk.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class RowanTreefolk extends CardImpl {
+public final class RowanTreefolk extends CardImpl {
public RowanTreefolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RowdyCrew.java b/Mage.Sets/src/mage/cards/r/RowdyCrew.java
index 7eb04fcff6e..6cd4bfea535 100644
--- a/Mage.Sets/src/mage/cards/r/RowdyCrew.java
+++ b/Mage.Sets/src/mage/cards/r/RowdyCrew.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class RowdyCrew extends CardImpl {
+public final class RowdyCrew extends CardImpl {
public RowdyCrew(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Rowen.java b/Mage.Sets/src/mage/cards/r/Rowen.java
index af72ca25d10..3a576dd152f 100644
--- a/Mage.Sets/src/mage/cards/r/Rowen.java
+++ b/Mage.Sets/src/mage/cards/r/Rowen.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author Quercitron
*/
-public class Rowen extends CardImpl {
+public final class Rowen extends CardImpl {
public Rowen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RoyalAssassin.java b/Mage.Sets/src/mage/cards/r/RoyalAssassin.java
index 207154932c4..45b590a242d 100644
--- a/Mage.Sets/src/mage/cards/r/RoyalAssassin.java
+++ b/Mage.Sets/src/mage/cards/r/RoyalAssassin.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LokiX
*/
-public class RoyalAssassin extends CardImpl {
+public final class RoyalAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/r/RoyalDecree.java b/Mage.Sets/src/mage/cards/r/RoyalDecree.java
index 542d7db4e21..3db0424af48 100644
--- a/Mage.Sets/src/mage/cards/r/RoyalDecree.java
+++ b/Mage.Sets/src/mage/cards/r/RoyalDecree.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class RoyalDecree extends CardImpl {
+public final class RoyalDecree extends CardImpl {
public RoyalDecree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RoyalFalcon.java b/Mage.Sets/src/mage/cards/r/RoyalFalcon.java
index 75f8b5985e6..9b682238e48 100644
--- a/Mage.Sets/src/mage/cards/r/RoyalFalcon.java
+++ b/Mage.Sets/src/mage/cards/r/RoyalFalcon.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RoyalFalcon extends CardImpl {
+public final class RoyalFalcon extends CardImpl {
public RoyalFalcon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RoyalHerbalist.java b/Mage.Sets/src/mage/cards/r/RoyalHerbalist.java
index 1f50c626477..0096c938b37 100644
--- a/Mage.Sets/src/mage/cards/r/RoyalHerbalist.java
+++ b/Mage.Sets/src/mage/cards/r/RoyalHerbalist.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class RoyalHerbalist extends CardImpl {
+public final class RoyalHerbalist extends CardImpl {
public RoyalHerbalist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RoyalTrooper.java b/Mage.Sets/src/mage/cards/r/RoyalTrooper.java
index 033ff1743cc..eafd86b34ea 100644
--- a/Mage.Sets/src/mage/cards/r/RoyalTrooper.java
+++ b/Mage.Sets/src/mage/cards/r/RoyalTrooper.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class RoyalTrooper extends CardImpl {
+public final class RoyalTrooper extends CardImpl {
public RoyalTrooper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RubblebackRhino.java b/Mage.Sets/src/mage/cards/r/RubblebackRhino.java
index 3c9c7467059..7cec63b5252 100644
--- a/Mage.Sets/src/mage/cards/r/RubblebackRhino.java
+++ b/Mage.Sets/src/mage/cards/r/RubblebackRhino.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RubblebackRhino extends CardImpl {
+public final class RubblebackRhino extends CardImpl {
public RubblebackRhino(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RubblebeltMaaka.java b/Mage.Sets/src/mage/cards/r/RubblebeltMaaka.java
index 72ae8c838f7..7f1bf162d3e 100644
--- a/Mage.Sets/src/mage/cards/r/RubblebeltMaaka.java
+++ b/Mage.Sets/src/mage/cards/r/RubblebeltMaaka.java
@@ -44,7 +44,7 @@ import mage.constants.Duration;
*/
-public class RubblebeltMaaka extends CardImpl {
+public final class RubblebeltMaaka extends CardImpl {
public RubblebeltMaaka (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RubblebeltRaiders.java b/Mage.Sets/src/mage/cards/r/RubblebeltRaiders.java
index 4d18e4c550e..9eb2c2dac61 100644
--- a/Mage.Sets/src/mage/cards/r/RubblebeltRaiders.java
+++ b/Mage.Sets/src/mage/cards/r/RubblebeltRaiders.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class RubblebeltRaiders extends CardImpl {
+public final class RubblebeltRaiders extends CardImpl {
public RubblebeltRaiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R/G}{R/G}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/r/Rubblehulk.java b/Mage.Sets/src/mage/cards/r/Rubblehulk.java
index 31d53771f40..e67379cb97a 100644
--- a/Mage.Sets/src/mage/cards/r/Rubblehulk.java
+++ b/Mage.Sets/src/mage/cards/r/Rubblehulk.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class Rubblehulk extends CardImpl {
+public final class Rubblehulk extends CardImpl {
public Rubblehulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RubiniaSoulsinger.java b/Mage.Sets/src/mage/cards/r/RubiniaSoulsinger.java
index 2f797ff696c..b48cc4ce405 100644
--- a/Mage.Sets/src/mage/cards/r/RubiniaSoulsinger.java
+++ b/Mage.Sets/src/mage/cards/r/RubiniaSoulsinger.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RubiniaSoulsinger extends CardImpl {
+public final class RubiniaSoulsinger extends CardImpl {
public RubiniaSoulsinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RubyLeech.java b/Mage.Sets/src/mage/cards/r/RubyLeech.java
index 957cab0dfa1..502f719f720 100644
--- a/Mage.Sets/src/mage/cards/r/RubyLeech.java
+++ b/Mage.Sets/src/mage/cards/r/RubyLeech.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class RubyLeech extends CardImpl {
+public final class RubyLeech extends CardImpl {
private static final FilterCard filter = new FilterCard("Red spells");
diff --git a/Mage.Sets/src/mage/cards/r/RubyMedallion.java b/Mage.Sets/src/mage/cards/r/RubyMedallion.java
index fa7f61bb8e2..1b4e67d5350 100644
--- a/Mage.Sets/src/mage/cards/r/RubyMedallion.java
+++ b/Mage.Sets/src/mage/cards/r/RubyMedallion.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author noxx
*/
-public class RubyMedallion extends CardImpl {
+public final class RubyMedallion extends CardImpl {
private static final FilterCard filter = new FilterCard("Red spells");
diff --git a/Mage.Sets/src/mage/cards/r/RudeAwakening.java b/Mage.Sets/src/mage/cards/r/RudeAwakening.java
index 90ac29b8bcf..ad50ebc6232 100644
--- a/Mage.Sets/src/mage/cards/r/RudeAwakening.java
+++ b/Mage.Sets/src/mage/cards/r/RudeAwakening.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.custom.CreatureToken;
*
* @author LevelX2
*/
-public class RudeAwakening extends CardImpl {
+public final class RudeAwakening extends CardImpl {
public RudeAwakening(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RuggedHighlands.java b/Mage.Sets/src/mage/cards/r/RuggedHighlands.java
index 2aec3053c90..4e8356b2602 100644
--- a/Mage.Sets/src/mage/cards/r/RuggedHighlands.java
+++ b/Mage.Sets/src/mage/cards/r/RuggedHighlands.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class RuggedHighlands extends CardImpl {
+public final class RuggedHighlands extends CardImpl {
public RuggedHighlands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RuggedPrairie.java b/Mage.Sets/src/mage/cards/r/RuggedPrairie.java
index 38f3d57a6fb..167edb12691 100644
--- a/Mage.Sets/src/mage/cards/r/RuggedPrairie.java
+++ b/Mage.Sets/src/mage/cards/r/RuggedPrairie.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class RuggedPrairie extends CardImpl {
+public final class RuggedPrairie extends CardImpl {
public RuggedPrairie (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RuhamDjinn.java b/Mage.Sets/src/mage/cards/r/RuhamDjinn.java
index cb988ee19ed..6e70dc41592 100644
--- a/Mage.Sets/src/mage/cards/r/RuhamDjinn.java
+++ b/Mage.Sets/src/mage/cards/r/RuhamDjinn.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class RuhamDjinn extends CardImpl {
+public final class RuhamDjinn extends CardImpl {
public RuhamDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RuhanOfTheFomori.java b/Mage.Sets/src/mage/cards/r/RuhanOfTheFomori.java
index 212d4c2b32d..8f229346d34 100644
--- a/Mage.Sets/src/mage/cards/r/RuhanOfTheFomori.java
+++ b/Mage.Sets/src/mage/cards/r/RuhanOfTheFomori.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class RuhanOfTheFomori extends CardImpl {
+public final class RuhanOfTheFomori extends CardImpl {
public RuhanOfTheFomori(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RuinGhost.java b/Mage.Sets/src/mage/cards/r/RuinGhost.java
index f3e0bb3ff6c..34346cf3a4e 100644
--- a/Mage.Sets/src/mage/cards/r/RuinGhost.java
+++ b/Mage.Sets/src/mage/cards/r/RuinGhost.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class RuinGhost extends CardImpl {
+public final class RuinGhost extends CardImpl {
public RuinGhost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java b/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java
index 8344776c74e..c95f36e0855 100644
--- a/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java
+++ b/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class RuinInTheirWake extends CardImpl {
+public final class RuinInTheirWake extends CardImpl {
public RuinInTheirWake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
@@ -96,7 +96,7 @@ class RuinInTheirWakeEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
MageObject sourceObject = source.getSourceObject(game);
if (controller != null && sourceObject != null) {
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
diff --git a/Mage.Sets/src/mage/cards/r/RuinProcessor.java b/Mage.Sets/src/mage/cards/r/RuinProcessor.java
index 8a9c72c0132..2c89aae2618 100644
--- a/Mage.Sets/src/mage/cards/r/RuinProcessor.java
+++ b/Mage.Sets/src/mage/cards/r/RuinProcessor.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RuinProcessor extends CardImpl {
+public final class RuinProcessor extends CardImpl {
public RuinProcessor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/r/RuinRaider.java b/Mage.Sets/src/mage/cards/r/RuinRaider.java
index cd0536b7f8b..6d981964f4c 100644
--- a/Mage.Sets/src/mage/cards/r/RuinRaider.java
+++ b/Mage.Sets/src/mage/cards/r/RuinRaider.java
@@ -52,7 +52,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author TheElk801
*/
-public class RuinRaider extends CardImpl {
+public final class RuinRaider extends CardImpl {
public RuinRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RuinRat.java b/Mage.Sets/src/mage/cards/r/RuinRat.java
index 943d4ae00a6..cfe9bcf798e 100644
--- a/Mage.Sets/src/mage/cards/r/RuinRat.java
+++ b/Mage.Sets/src/mage/cards/r/RuinRat.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
*
* @author nickymikail
*/
-public class RuinRat extends CardImpl {
+public final class RuinRat extends CardImpl {
public RuinRat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/Ruination.java b/Mage.Sets/src/mage/cards/r/Ruination.java
index 42ed52bd6c4..ed9de91f18e 100644
--- a/Mage.Sets/src/mage/cards/r/Ruination.java
+++ b/Mage.Sets/src/mage/cards/r/Ruination.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author LevelX2
*/
-public class Ruination extends CardImpl {
+public final class Ruination extends CardImpl {
public Ruination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RuinationGuide.java b/Mage.Sets/src/mage/cards/r/RuinationGuide.java
index 277d46cf6df..5c9828c3856 100644
--- a/Mage.Sets/src/mage/cards/r/RuinationGuide.java
+++ b/Mage.Sets/src/mage/cards/r/RuinationGuide.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
*
* @author LevelX2
*/
-public class RuinationGuide extends CardImpl {
+public final class RuinationGuide extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("colorless creatures");
diff --git a/Mage.Sets/src/mage/cards/r/RuinationWurm.java b/Mage.Sets/src/mage/cards/r/RuinationWurm.java
index 82abca389e4..404fc22e112 100644
--- a/Mage.Sets/src/mage/cards/r/RuinationWurm.java
+++ b/Mage.Sets/src/mage/cards/r/RuinationWurm.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class RuinationWurm extends CardImpl {
+public final class RuinationWurm extends CardImpl {
public RuinationWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RuinousGremlin.java b/Mage.Sets/src/mage/cards/r/RuinousGremlin.java
index 3e5b3dcb6e0..6f2abced385 100644
--- a/Mage.Sets/src/mage/cards/r/RuinousGremlin.java
+++ b/Mage.Sets/src/mage/cards/r/RuinousGremlin.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class RuinousGremlin extends CardImpl {
+public final class RuinousGremlin extends CardImpl {
public RuinousGremlin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RuinousMinotaur.java b/Mage.Sets/src/mage/cards/r/RuinousMinotaur.java
index 9fa88400a52..3e18287bacb 100644
--- a/Mage.Sets/src/mage/cards/r/RuinousMinotaur.java
+++ b/Mage.Sets/src/mage/cards/r/RuinousMinotaur.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author North
*/
-public class RuinousMinotaur extends CardImpl {
+public final class RuinousMinotaur extends CardImpl {
public RuinousMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RuinousPath.java b/Mage.Sets/src/mage/cards/r/RuinousPath.java
index 61c312d7c1d..866e121d811 100644
--- a/Mage.Sets/src/mage/cards/r/RuinousPath.java
+++ b/Mage.Sets/src/mage/cards/r/RuinousPath.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
*
* @author LevelX2
*/
-public class RuinousPath extends CardImpl {
+public final class RuinousPath extends CardImpl {
public RuinousPath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java b/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java
index 1c5cf71271b..715ee28fa48 100644
--- a/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java
+++ b/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RuinsOfOranRief extends CardImpl {
+public final class RuinsOfOranRief extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("colorless creature that entered the battlefield this turn");
diff --git a/Mage.Sets/src/mage/cards/r/RuinsOfTrokair.java b/Mage.Sets/src/mage/cards/r/RuinsOfTrokair.java
index d731755dcc3..6fd193aa501 100644
--- a/Mage.Sets/src/mage/cards/r/RuinsOfTrokair.java
+++ b/Mage.Sets/src/mage/cards/r/RuinsOfTrokair.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class RuinsOfTrokair extends CardImpl {
+public final class RuinsOfTrokair extends CardImpl {
public RuinsOfTrokair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RukhEgg.java b/Mage.Sets/src/mage/cards/r/RukhEgg.java
index eb10a12f71a..a9c5d9e8b98 100644
--- a/Mage.Sets/src/mage/cards/r/RukhEgg.java
+++ b/Mage.Sets/src/mage/cards/r/RukhEgg.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.RukhEggBirdToken;
*
* @author anonymous
*/
-public class RukhEgg extends CardImpl {
+public final class RukhEgg extends CardImpl {
public RukhEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RuleOfLaw.java b/Mage.Sets/src/mage/cards/r/RuleOfLaw.java
index 6214f9c8de7..769cbcf875c 100644
--- a/Mage.Sets/src/mage/cards/r/RuleOfLaw.java
+++ b/Mage.Sets/src/mage/cards/r/RuleOfLaw.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class RuleOfLaw extends CardImpl {
+public final class RuleOfLaw extends CardImpl {
public RuleOfLaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RuleOfTwo.java b/Mage.Sets/src/mage/cards/r/RuleOfTwo.java
index 0581ae679a0..7b1855601a2 100644
--- a/Mage.Sets/src/mage/cards/r/RuleOfTwo.java
+++ b/Mage.Sets/src/mage/cards/r/RuleOfTwo.java
@@ -50,7 +50,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Styxo
*/
-public class RuleOfTwo extends CardImpl {
+public final class RuleOfTwo extends CardImpl {
public RuleOfTwo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RumblingAftershocks.java b/Mage.Sets/src/mage/cards/r/RumblingAftershocks.java
index 0732874d286..6d60892b8c5 100644
--- a/Mage.Sets/src/mage/cards/r/RumblingAftershocks.java
+++ b/Mage.Sets/src/mage/cards/r/RumblingAftershocks.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class RumblingAftershocks extends CardImpl {
+public final class RumblingAftershocks extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RumblingBaloth.java b/Mage.Sets/src/mage/cards/r/RumblingBaloth.java
index 099e2ee17c8..d6ec9cf8e39 100644
--- a/Mage.Sets/src/mage/cards/r/RumblingBaloth.java
+++ b/Mage.Sets/src/mage/cards/r/RumblingBaloth.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class RumblingBaloth extends CardImpl {
+public final class RumblingBaloth extends CardImpl {
public RumblingBaloth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RumblingCrescendo.java b/Mage.Sets/src/mage/cards/r/RumblingCrescendo.java
index 093b89338a7..32e823c94e0 100644
--- a/Mage.Sets/src/mage/cards/r/RumblingCrescendo.java
+++ b/Mage.Sets/src/mage/cards/r/RumblingCrescendo.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class RumblingCrescendo extends CardImpl {
+public final class RumblingCrescendo extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("up to X target lands, where X is the number of verse counters on {this}");
diff --git a/Mage.Sets/src/mage/cards/r/RumblingSlum.java b/Mage.Sets/src/mage/cards/r/RumblingSlum.java
index 00c4261121a..258a83e7fc9 100644
--- a/Mage.Sets/src/mage/cards/r/RumblingSlum.java
+++ b/Mage.Sets/src/mage/cards/r/RumblingSlum.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class RumblingSlum extends CardImpl {
+public final class RumblingSlum extends CardImpl {
public RumblingSlum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/Rumination.java b/Mage.Sets/src/mage/cards/r/Rumination.java
index 3434ccb1f2b..a219a52e465 100644
--- a/Mage.Sets/src/mage/cards/r/Rumination.java
+++ b/Mage.Sets/src/mage/cards/r/Rumination.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Styxo
*/
-public class Rumination extends CardImpl {
+public final class Rumination extends CardImpl {
public Rumination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RummagingGoblin.java b/Mage.Sets/src/mage/cards/r/RummagingGoblin.java
index 16fcd53c42e..74c09f010ee 100644
--- a/Mage.Sets/src/mage/cards/r/RummagingGoblin.java
+++ b/Mage.Sets/src/mage/cards/r/RummagingGoblin.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author North
*/
-public class RummagingGoblin extends CardImpl {
+public final class RummagingGoblin extends CardImpl {
public RummagingGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RummagingWizard.java b/Mage.Sets/src/mage/cards/r/RummagingWizard.java
index 5dfc87cf634..a8885301e51 100644
--- a/Mage.Sets/src/mage/cards/r/RummagingWizard.java
+++ b/Mage.Sets/src/mage/cards/r/RummagingWizard.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Wehk
*/
-public class RummagingWizard extends CardImpl {
+public final class RummagingWizard extends CardImpl {
public RummagingWizard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RumorMonger.java b/Mage.Sets/src/mage/cards/r/RumorMonger.java
index 390bd68cf1f..3ff4f6d4c12 100644
--- a/Mage.Sets/src/mage/cards/r/RumorMonger.java
+++ b/Mage.Sets/src/mage/cards/r/RumorMonger.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class RumorMonger extends CardImpl {
+public final class RumorMonger extends CardImpl {
public RumorMonger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RunAground.java b/Mage.Sets/src/mage/cards/r/RunAground.java
index c6005cd2660..72a4215a3e8 100644
--- a/Mage.Sets/src/mage/cards/r/RunAground.java
+++ b/Mage.Sets/src/mage/cards/r/RunAground.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class RunAground extends CardImpl {
+public final class RunAground extends CardImpl {
public RunAground(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RunAmok.java b/Mage.Sets/src/mage/cards/r/RunAmok.java
index 14b01e4555c..7ad550c8289 100644
--- a/Mage.Sets/src/mage/cards/r/RunAmok.java
+++ b/Mage.Sets/src/mage/cards/r/RunAmok.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author rscoates
*/
-public class RunAmok extends CardImpl {
+public final class RunAmok extends CardImpl {
public RunAmok(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RunWild.java b/Mage.Sets/src/mage/cards/r/RunWild.java
index 2b0591e3fad..f7abea01232 100644
--- a/Mage.Sets/src/mage/cards/r/RunWild.java
+++ b/Mage.Sets/src/mage/cards/r/RunWild.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Derpthemeus
*/
-public class RunWild extends CardImpl {
+public final class RunWild extends CardImpl {
public RunWild(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RunawayCarriage.java b/Mage.Sets/src/mage/cards/r/RunawayCarriage.java
index 3512789fdeb..7a30487235a 100644
--- a/Mage.Sets/src/mage/cards/r/RunawayCarriage.java
+++ b/Mage.Sets/src/mage/cards/r/RunawayCarriage.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class RunawayCarriage extends CardImpl {
+public final class RunawayCarriage extends CardImpl {
public RunawayCarriage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/r/RuneCervinRider.java b/Mage.Sets/src/mage/cards/r/RuneCervinRider.java
index e2634428714..fd599fb7124 100644
--- a/Mage.Sets/src/mage/cards/r/RuneCervinRider.java
+++ b/Mage.Sets/src/mage/cards/r/RuneCervinRider.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class RuneCervinRider extends CardImpl {
+public final class RuneCervinRider extends CardImpl {
public RuneCervinRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RuneOfProtectionArtifacts.java b/Mage.Sets/src/mage/cards/r/RuneOfProtectionArtifacts.java
index 862151ca4dd..3c24e1c45b4 100644
--- a/Mage.Sets/src/mage/cards/r/RuneOfProtectionArtifacts.java
+++ b/Mage.Sets/src/mage/cards/r/RuneOfProtectionArtifacts.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class RuneOfProtectionArtifacts extends CardImpl {
+public final class RuneOfProtectionArtifacts extends CardImpl {
private static final FilterObject filter = new FilterObject("artifact source");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RuneOfProtectionBlack.java b/Mage.Sets/src/mage/cards/r/RuneOfProtectionBlack.java
index 1c2384d4c6e..10eef685b62 100644
--- a/Mage.Sets/src/mage/cards/r/RuneOfProtectionBlack.java
+++ b/Mage.Sets/src/mage/cards/r/RuneOfProtectionBlack.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Backfir3
*/
-public class RuneOfProtectionBlack extends CardImpl {
+public final class RuneOfProtectionBlack extends CardImpl {
private static final FilterObject filter = new FilterObject("black source");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RuneOfProtectionBlue.java b/Mage.Sets/src/mage/cards/r/RuneOfProtectionBlue.java
index f054d10afa5..1a9cdbe50ec 100644
--- a/Mage.Sets/src/mage/cards/r/RuneOfProtectionBlue.java
+++ b/Mage.Sets/src/mage/cards/r/RuneOfProtectionBlue.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Backfir3
*/
-public class RuneOfProtectionBlue extends CardImpl {
+public final class RuneOfProtectionBlue extends CardImpl {
private static final FilterObject filter = new FilterObject("blue source");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RuneOfProtectionGreen.java b/Mage.Sets/src/mage/cards/r/RuneOfProtectionGreen.java
index 72f64afee04..c8c276403f8 100644
--- a/Mage.Sets/src/mage/cards/r/RuneOfProtectionGreen.java
+++ b/Mage.Sets/src/mage/cards/r/RuneOfProtectionGreen.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Backfir3
*/
-public class RuneOfProtectionGreen extends CardImpl {
+public final class RuneOfProtectionGreen extends CardImpl {
private static final FilterObject filter = new FilterObject("green source");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RuneOfProtectionLands.java b/Mage.Sets/src/mage/cards/r/RuneOfProtectionLands.java
index 0c5b789be18..5e86cfaffde 100644
--- a/Mage.Sets/src/mage/cards/r/RuneOfProtectionLands.java
+++ b/Mage.Sets/src/mage/cards/r/RuneOfProtectionLands.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class RuneOfProtectionLands extends CardImpl {
+public final class RuneOfProtectionLands extends CardImpl {
private static final FilterObject filter = new FilterObject("land source");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RuneOfProtectionRed.java b/Mage.Sets/src/mage/cards/r/RuneOfProtectionRed.java
index d885f444c70..8510884efac 100644
--- a/Mage.Sets/src/mage/cards/r/RuneOfProtectionRed.java
+++ b/Mage.Sets/src/mage/cards/r/RuneOfProtectionRed.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Backfir3
*/
-public class RuneOfProtectionRed extends CardImpl {
+public final class RuneOfProtectionRed extends CardImpl {
private static final FilterObject filter = new FilterObject("red source");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RuneOfProtectionWhite.java b/Mage.Sets/src/mage/cards/r/RuneOfProtectionWhite.java
index 607fee56f49..65ca97fea8b 100644
--- a/Mage.Sets/src/mage/cards/r/RuneOfProtectionWhite.java
+++ b/Mage.Sets/src/mage/cards/r/RuneOfProtectionWhite.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Backfir3
*/
-public class RuneOfProtectionWhite extends CardImpl {
+public final class RuneOfProtectionWhite extends CardImpl {
private static final FilterObject filter = new FilterObject("white source");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RuneScarredDemon.java b/Mage.Sets/src/mage/cards/r/RuneScarredDemon.java
index 131c7aff1ed..4dd07fe8c8c 100644
--- a/Mage.Sets/src/mage/cards/r/RuneScarredDemon.java
+++ b/Mage.Sets/src/mage/cards/r/RuneScarredDemon.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class RuneScarredDemon extends CardImpl {
+public final class RuneScarredDemon extends CardImpl {
public RuneScarredDemon (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RuneSnag.java b/Mage.Sets/src/mage/cards/r/RuneSnag.java
index 251aa4fa5ac..9287397b0a9 100644
--- a/Mage.Sets/src/mage/cards/r/RuneSnag.java
+++ b/Mage.Sets/src/mage/cards/r/RuneSnag.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author emerald000
*/
-public class RuneSnag extends CardImpl {
+public final class RuneSnag extends CardImpl {
private static final FilterCard filter = new FilterCard();
diff --git a/Mage.Sets/src/mage/cards/r/RuneTailKitsuneAscendant.java b/Mage.Sets/src/mage/cards/r/RuneTailKitsuneAscendant.java
index c804c9c0e49..066e8679a36 100644
--- a/Mage.Sets/src/mage/cards/r/RuneTailKitsuneAscendant.java
+++ b/Mage.Sets/src/mage/cards/r/RuneTailKitsuneAscendant.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class RuneTailKitsuneAscendant extends CardImpl {
+public final class RuneTailKitsuneAscendant extends CardImpl {
public RuneTailKitsuneAscendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/Runeboggle.java b/Mage.Sets/src/mage/cards/r/Runeboggle.java
index 5cde833c6e5..a17b4107306 100644
--- a/Mage.Sets/src/mage/cards/r/Runeboggle.java
+++ b/Mage.Sets/src/mage/cards/r/Runeboggle.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class Runeboggle extends CardImpl {
+public final class Runeboggle extends CardImpl {
public Runeboggle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RunechantersPike.java b/Mage.Sets/src/mage/cards/r/RunechantersPike.java
index 433cc9f9ee3..805bbf47f8a 100644
--- a/Mage.Sets/src/mage/cards/r/RunechantersPike.java
+++ b/Mage.Sets/src/mage/cards/r/RunechantersPike.java
@@ -50,7 +50,7 @@ import mage.players.Player;
/**
* @author nantuko
*/
-public class RunechantersPike extends CardImpl {
+public final class RunechantersPike extends CardImpl {
protected static final FilterCard filterCard = new FilterCard();
diff --git a/Mage.Sets/src/mage/cards/r/RuneclawBear.java b/Mage.Sets/src/mage/cards/r/RuneclawBear.java
index ad2ddd31b98..69ddeb24fb5 100644
--- a/Mage.Sets/src/mage/cards/r/RuneclawBear.java
+++ b/Mage.Sets/src/mage/cards/r/RuneclawBear.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RuneclawBear extends CardImpl {
+public final class RuneclawBear extends CardImpl {
public RuneclawBear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RunedArch.java b/Mage.Sets/src/mage/cards/r/RunedArch.java
new file mode 100644
index 00000000000..3b270a34450
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/r/RunedArch.java
@@ -0,0 +1,89 @@
+/*
+ * 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.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTappedAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.ComparisonType;
+import mage.constants.Duration;
+import mage.constants.TargetAdjustment;
+import mage.filter.FilterPermanent;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.filter.predicate.mageobject.PowerPredicate;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class RunedArch extends CardImpl {
+
+ private static final FilterPermanent filter = new FilterPermanent("creatures with power 2 or less");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.CREATURE));
+ filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3));
+ }
+
+ public RunedArch(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
+
+ // Runed Arch enters the battlefield tapped.
+ this.addAbility(new EntersBattlefieldTappedAbility());
+
+ // {X}, {tap}, Sacrifice Runed Arch: X target creatures with power 2 or less are unblockable this turn.
+ Ability ability = new SimpleActivatedAbility(
+ new CantBeBlockedTargetEffect(Duration.EndOfGame)
+ .setText("X target creatures with power 2 or less can’t be blocked this turn."),
+ new ManaCostsImpl("{X}")
+ );
+ ability.addCost(new TapSourceCost());
+ ability.addCost(new SacrificeSourceCost());
+ ability.addTarget(new TargetPermanent(filter));
+ ability.setTargetAdjustment(TargetAdjustment.X_TARGETS);
+ this.addAbility(ability);
+ }
+
+ public RunedArch(final RunedArch card) {
+ super(card);
+ }
+
+ @Override
+ public RunedArch copy() {
+ return new RunedArch(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/r/RunedHalo.java b/Mage.Sets/src/mage/cards/r/RunedHalo.java
index 0bf3b8c8092..dd1a8c5a37c 100644
--- a/Mage.Sets/src/mage/cards/r/RunedHalo.java
+++ b/Mage.Sets/src/mage/cards/r/RunedHalo.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class RunedHalo extends CardImpl {
+public final class RunedHalo extends CardImpl {
public RunedHalo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/r/RunedServitor.java b/Mage.Sets/src/mage/cards/r/RunedServitor.java
index dfe3a635bfe..b25d7e00ed8 100644
--- a/Mage.Sets/src/mage/cards/r/RunedServitor.java
+++ b/Mage.Sets/src/mage/cards/r/RunedServitor.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RunedServitor extends CardImpl {
+public final class RunedServitor extends CardImpl {
public RunedServitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/r/RunedStalactite.java b/Mage.Sets/src/mage/cards/r/RunedStalactite.java
index 22bcf9d65e2..344f831a256 100644
--- a/Mage.Sets/src/mage/cards/r/RunedStalactite.java
+++ b/Mage.Sets/src/mage/cards/r/RunedStalactite.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class RunedStalactite extends CardImpl {
+public final class RunedStalactite extends CardImpl {
public RunedStalactite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/r/RuneflareTrap.java b/Mage.Sets/src/mage/cards/r/RuneflareTrap.java
index 9fc75d34270..574c6c58dd4 100644
--- a/Mage.Sets/src/mage/cards/r/RuneflareTrap.java
+++ b/Mage.Sets/src/mage/cards/r/RuneflareTrap.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class RuneflareTrap extends CardImpl {
+public final class RuneflareTrap extends CardImpl {
public RuneflareTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RunehornHellkite.java b/Mage.Sets/src/mage/cards/r/RunehornHellkite.java
index a6278aaa686..c32d41c8004 100644
--- a/Mage.Sets/src/mage/cards/r/RunehornHellkite.java
+++ b/Mage.Sets/src/mage/cards/r/RunehornHellkite.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class RunehornHellkite extends CardImpl {
+public final class RunehornHellkite extends CardImpl {
public RunehornHellkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RunesOfTheDeus.java b/Mage.Sets/src/mage/cards/r/RunesOfTheDeus.java
index 9dca3c22d0e..cb197cdc9d0 100644
--- a/Mage.Sets/src/mage/cards/r/RunesOfTheDeus.java
+++ b/Mage.Sets/src/mage/cards/r/RunesOfTheDeus.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class RunesOfTheDeus extends CardImpl {
+public final class RunesOfTheDeus extends CardImpl {
public RunesOfTheDeus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/r/Runesword.java b/Mage.Sets/src/mage/cards/r/Runesword.java
index a5ece841531..2f6933d46e9 100644
--- a/Mage.Sets/src/mage/cards/r/Runesword.java
+++ b/Mage.Sets/src/mage/cards/r/Runesword.java
@@ -60,7 +60,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author L_J
*/
-public class Runesword extends CardImpl {
+public final class Runesword extends CardImpl {
public Runesword(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/r/Runewing.java b/Mage.Sets/src/mage/cards/r/Runewing.java
index d7127849414..a1732f3e079 100644
--- a/Mage.Sets/src/mage/cards/r/Runewing.java
+++ b/Mage.Sets/src/mage/cards/r/Runewing.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class Runewing extends CardImpl {
+public final class Runewing extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures with defender you control");
diff --git a/Mage.Sets/src/mage/cards/r/RunicRepetition.java b/Mage.Sets/src/mage/cards/r/RunicRepetition.java
index bfa141e3563..96cd0b69f13 100644
--- a/Mage.Sets/src/mage/cards/r/RunicRepetition.java
+++ b/Mage.Sets/src/mage/cards/r/RunicRepetition.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInExile;
*
* @author BetaSteward
*/
-public class RunicRepetition extends CardImpl {
+public final class RunicRepetition extends CardImpl {
private static final FilterCard filter = new FilterCard("exiled card with flashback you own");
diff --git a/Mage.Sets/src/mage/cards/r/RunnersBane.java b/Mage.Sets/src/mage/cards/r/RunnersBane.java
index 9468a32c0b3..3665e7bd1ea 100644
--- a/Mage.Sets/src/mage/cards/r/RunnersBane.java
+++ b/Mage.Sets/src/mage/cards/r/RunnersBane.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RunnersBane extends CardImpl {
+public final class RunnersBane extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 3 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/r/Rupture.java b/Mage.Sets/src/mage/cards/r/Rupture.java
index d504b53365e..fc04c871ce0 100644
--- a/Mage.Sets/src/mage/cards/r/Rupture.java
+++ b/Mage.Sets/src/mage/cards/r/Rupture.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class Rupture extends CardImpl {
+public final class Rupture extends CardImpl {
public Rupture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RuptureSpire.java b/Mage.Sets/src/mage/cards/r/RuptureSpire.java
index e1668030234..fdf4fbc04e7 100644
--- a/Mage.Sets/src/mage/cards/r/RuptureSpire.java
+++ b/Mage.Sets/src/mage/cards/r/RuptureSpire.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Loki, North
*/
-public class RuptureSpire extends CardImpl {
+public final class RuptureSpire extends CardImpl {
public RuptureSpire (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/r/RuricTharTheUnbowed.java b/Mage.Sets/src/mage/cards/r/RuricTharTheUnbowed.java
index 77cb2985b74..63bff1467f5 100644
--- a/Mage.Sets/src/mage/cards/r/RuricTharTheUnbowed.java
+++ b/Mage.Sets/src/mage/cards/r/RuricTharTheUnbowed.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class RuricTharTheUnbowed extends CardImpl {
+public final class RuricTharTheUnbowed extends CardImpl {
public RuricTharTheUnbowed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RushOfAdrenaline.java b/Mage.Sets/src/mage/cards/r/RushOfAdrenaline.java
index de866d4446d..6f5e1caf261 100644
--- a/Mage.Sets/src/mage/cards/r/RushOfAdrenaline.java
+++ b/Mage.Sets/src/mage/cards/r/RushOfAdrenaline.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RushOfAdrenaline extends CardImpl {
+public final class RushOfAdrenaline extends CardImpl {
public RushOfAdrenaline(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RushOfBattle.java b/Mage.Sets/src/mage/cards/r/RushOfBattle.java
index f6d34bc74e9..226f35bdfb4 100644
--- a/Mage.Sets/src/mage/cards/r/RushOfBattle.java
+++ b/Mage.Sets/src/mage/cards/r/RushOfBattle.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author emerald000
*/
-public class RushOfBattle extends CardImpl {
+public final class RushOfBattle extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/r/RushOfBlood.java b/Mage.Sets/src/mage/cards/r/RushOfBlood.java
index e4a60b15955..1f5007f5271 100644
--- a/Mage.Sets/src/mage/cards/r/RushOfBlood.java
+++ b/Mage.Sets/src/mage/cards/r/RushOfBlood.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class RushOfBlood extends CardImpl {
+public final class RushOfBlood extends CardImpl {
public RushOfBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RushOfIce.java b/Mage.Sets/src/mage/cards/r/RushOfIce.java
index 671d6e2803b..1fe009330ab 100644
--- a/Mage.Sets/src/mage/cards/r/RushOfIce.java
+++ b/Mage.Sets/src/mage/cards/r/RushOfIce.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RushOfIce extends CardImpl {
+public final class RushOfIce extends CardImpl {
public RushOfIce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RushOfKnowledge.java b/Mage.Sets/src/mage/cards/r/RushOfKnowledge.java
index 4733feefdaf..15d2e7c23dd 100644
--- a/Mage.Sets/src/mage/cards/r/RushOfKnowledge.java
+++ b/Mage.Sets/src/mage/cards/r/RushOfKnowledge.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class RushOfKnowledge extends CardImpl {
+public final class RushOfKnowledge extends CardImpl {
public RushOfKnowledge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RushOfVitality.java b/Mage.Sets/src/mage/cards/r/RushOfVitality.java
index f460b24ed93..8deb812e693 100644
--- a/Mage.Sets/src/mage/cards/r/RushOfVitality.java
+++ b/Mage.Sets/src/mage/cards/r/RushOfVitality.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RushOfVitality extends CardImpl {
+public final class RushOfVitality extends CardImpl {
public RushOfVitality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RushbladeCommander.java b/Mage.Sets/src/mage/cards/r/RushbladeCommander.java
new file mode 100644
index 00000000000..a405ffbab5c
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/r/RushbladeCommander.java
@@ -0,0 +1,78 @@
+/*
+ * 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.common.SimpleStaticAbility;
+import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.abilities.keyword.HasteAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Zone;
+import mage.filter.common.FilterTeamPermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class RushbladeCommander extends CardImpl {
+
+ private static final FilterTeamPermanent filter = new FilterTeamPermanent(SubType.WARRIOR, "Warriors your team controls");
+
+ public RushbladeCommander(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{R}");
+
+ this.subtype.add(SubType.AZRA);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Warrior creatures your team controls have haste.
+ this.addAbility(new SimpleStaticAbility(
+ Zone.BATTLEFIELD,
+ new GainAbilityAllEffect(
+ HasteAbility.getInstance(),
+ Duration.WhileOnBattlefield,
+ filter
+ )
+ ));
+ }
+
+ public RushbladeCommander(final RushbladeCommander card) {
+ super(card);
+ }
+
+ @Override
+ public RushbladeCommander copy() {
+ return new RushbladeCommander(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/r/RushingRiver.java b/Mage.Sets/src/mage/cards/r/RushingRiver.java
index 21c7a340a46..a722ab6cffd 100644
--- a/Mage.Sets/src/mage/cards/r/RushingRiver.java
+++ b/Mage.Sets/src/mage/cards/r/RushingRiver.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class RushingRiver extends CardImpl {
+public final class RushingRiver extends CardImpl {
public RushingRiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RushingTideZubera.java b/Mage.Sets/src/mage/cards/r/RushingTideZubera.java
index d428266ff62..2a667958e4f 100644
--- a/Mage.Sets/src/mage/cards/r/RushingTideZubera.java
+++ b/Mage.Sets/src/mage/cards/r/RushingTideZubera.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class RushingTideZubera extends CardImpl {
+public final class RushingTideZubera extends CardImpl {
public RushingTideZubera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RushwoodDryad.java b/Mage.Sets/src/mage/cards/r/RushwoodDryad.java
index ab8e3dd0297..d2a9e874077 100644
--- a/Mage.Sets/src/mage/cards/r/RushwoodDryad.java
+++ b/Mage.Sets/src/mage/cards/r/RushwoodDryad.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RushwoodDryad extends CardImpl {
+public final class RushwoodDryad extends CardImpl {
public RushwoodDryad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RushwoodElemental.java b/Mage.Sets/src/mage/cards/r/RushwoodElemental.java
index f845a540644..ca3cfee5360 100644
--- a/Mage.Sets/src/mage/cards/r/RushwoodElemental.java
+++ b/Mage.Sets/src/mage/cards/r/RushwoodElemental.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author Derpthemeus
*/
-public class RushwoodElemental extends CardImpl {
+public final class RushwoodElemental extends CardImpl {
public RushwoodElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RushwoodGrove.java b/Mage.Sets/src/mage/cards/r/RushwoodGrove.java
index b38eeb74894..d0fa18be22d 100644
--- a/Mage.Sets/src/mage/cards/r/RushwoodGrove.java
+++ b/Mage.Sets/src/mage/cards/r/RushwoodGrove.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author anonymous
*/
-public class RushwoodGrove extends CardImpl {
+public final class RushwoodGrove extends CardImpl {
public RushwoodGrove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/r/RushwoodHerbalist.java b/Mage.Sets/src/mage/cards/r/RushwoodHerbalist.java
index 6beb21ed0e7..24fa0f49568 100644
--- a/Mage.Sets/src/mage/cards/r/RushwoodHerbalist.java
+++ b/Mage.Sets/src/mage/cards/r/RushwoodHerbalist.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class RushwoodHerbalist extends CardImpl {
+public final class RushwoodHerbalist extends CardImpl {
public RushwoodHerbalist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RushwoodLegate.java b/Mage.Sets/src/mage/cards/r/RushwoodLegate.java
index 89814d991b5..1fea0b1aed8 100644
--- a/Mage.Sets/src/mage/cards/r/RushwoodLegate.java
+++ b/Mage.Sets/src/mage/cards/r/RushwoodLegate.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class RushwoodLegate extends CardImpl {
+public final class RushwoodLegate extends CardImpl {
private static final FilterPermanent filterIsland = new FilterPermanent();
private static final FilterPermanent filterForest = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/r/RussetWolves.java b/Mage.Sets/src/mage/cards/r/RussetWolves.java
index bf715746a69..e2803cf5b25 100644
--- a/Mage.Sets/src/mage/cards/r/RussetWolves.java
+++ b/Mage.Sets/src/mage/cards/r/RussetWolves.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RussetWolves extends CardImpl {
+public final class RussetWolves extends CardImpl {
public RussetWolves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/Rust.java b/Mage.Sets/src/mage/cards/r/Rust.java
index 9bf2bac561a..039771c38f4 100644
--- a/Mage.Sets/src/mage/cards/r/Rust.java
+++ b/Mage.Sets/src/mage/cards/r/Rust.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetActivatedAbility;
*
* @author TheElk801
*/
-public class Rust extends CardImpl {
+public final class Rust extends CardImpl {
private final static FilterAbility filter = new FilterAbility("activated ability from an artifact source");
diff --git a/Mage.Sets/src/mage/cards/r/RustElemental.java b/Mage.Sets/src/mage/cards/r/RustElemental.java
index 0dcfa969f8f..59c1039cb21 100644
--- a/Mage.Sets/src/mage/cards/r/RustElemental.java
+++ b/Mage.Sets/src/mage/cards/r/RustElemental.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author rollergo11
*/
-public class RustElemental extends CardImpl {
+public final class RustElemental extends CardImpl {
public RustElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/r/RustScarab.java b/Mage.Sets/src/mage/cards/r/RustScarab.java
index a72a0a36e76..eb73354c54d 100644
--- a/Mage.Sets/src/mage/cards/r/RustScarab.java
+++ b/Mage.Sets/src/mage/cards/r/RustScarab.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class RustScarab extends CardImpl {
+public final class RustScarab extends CardImpl {
public RustScarab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RustTick.java b/Mage.Sets/src/mage/cards/r/RustTick.java
index 3b97b719dbc..c54455604de 100644
--- a/Mage.Sets/src/mage/cards/r/RustTick.java
+++ b/Mage.Sets/src/mage/cards/r/RustTick.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetArtifactPermanent;
/**
* @author nantuko
*/
-public class RustTick extends CardImpl {
+public final class RustTick extends CardImpl {
public RustTick(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/r/RustedRelic.java b/Mage.Sets/src/mage/cards/r/RustedRelic.java
index b0dba2bc341..ca2b538fb63 100644
--- a/Mage.Sets/src/mage/cards/r/RustedRelic.java
+++ b/Mage.Sets/src/mage/cards/r/RustedRelic.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.Token;
*
* @author Loki
*/
-public class RustedRelic extends CardImpl {
+public final class RustedRelic extends CardImpl {
public RustedRelic (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/r/RustedSentinel.java b/Mage.Sets/src/mage/cards/r/RustedSentinel.java
index 2968aa2d76e..afe052123fb 100644
--- a/Mage.Sets/src/mage/cards/r/RustedSentinel.java
+++ b/Mage.Sets/src/mage/cards/r/RustedSentinel.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class RustedSentinel extends CardImpl {
+public final class RustedSentinel extends CardImpl {
public RustedSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/r/RustedSlasher.java b/Mage.Sets/src/mage/cards/r/RustedSlasher.java
index c9a63a6ad2a..8a21dfb3f17 100644
--- a/Mage.Sets/src/mage/cards/r/RustedSlasher.java
+++ b/Mage.Sets/src/mage/cards/r/RustedSlasher.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class RustedSlasher extends CardImpl {
+public final class RustedSlasher extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RusticClachan.java b/Mage.Sets/src/mage/cards/r/RusticClachan.java
index 0c6f22a85c3..053c00f2991 100644
--- a/Mage.Sets/src/mage/cards/r/RusticClachan.java
+++ b/Mage.Sets/src/mage/cards/r/RusticClachan.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class RusticClachan extends CardImpl {
+public final class RusticClachan extends CardImpl {
private static final FilterCard filter = new FilterCard("a Kithkin card from your hand");
diff --git a/Mage.Sets/src/mage/cards/r/RustingGolem.java b/Mage.Sets/src/mage/cards/r/RustingGolem.java
index ebcda5deac4..acc4c48f0db 100644
--- a/Mage.Sets/src/mage/cards/r/RustingGolem.java
+++ b/Mage.Sets/src/mage/cards/r/RustingGolem.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class RustingGolem extends CardImpl {
+public final class RustingGolem extends CardImpl {
public RustingGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/r/RustmouthOgre.java b/Mage.Sets/src/mage/cards/r/RustmouthOgre.java
index 74e295c4de9..6ff41e3fa97 100644
--- a/Mage.Sets/src/mage/cards/r/RustmouthOgre.java
+++ b/Mage.Sets/src/mage/cards/r/RustmouthOgre.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author dustinconrad
*/
-public class RustmouthOgre extends CardImpl {
+public final class RustmouthOgre extends CardImpl {
public RustmouthOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RustrazorButcher.java b/Mage.Sets/src/mage/cards/r/RustrazorButcher.java
index 777c9f1fc3d..1dee9bfaf7c 100644
--- a/Mage.Sets/src/mage/cards/r/RustrazorButcher.java
+++ b/Mage.Sets/src/mage/cards/r/RustrazorButcher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class RustrazorButcher extends CardImpl {
+public final class RustrazorButcher extends CardImpl {
public RustrazorButcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/r/RustsporeRam.java b/Mage.Sets/src/mage/cards/r/RustsporeRam.java
index 80fcfaad54b..0b484797621 100644
--- a/Mage.Sets/src/mage/cards/r/RustsporeRam.java
+++ b/Mage.Sets/src/mage/cards/r/RustsporeRam.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class RustsporeRam extends CardImpl {
+public final class RustsporeRam extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Equipment");
diff --git a/Mage.Sets/src/mage/cards/r/RustwingFalcon.java b/Mage.Sets/src/mage/cards/r/RustwingFalcon.java
new file mode 100644
index 00000000000..20e2af8b48b
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/r/RustwingFalcon.java
@@ -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.r;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.constants.SubType;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class RustwingFalcon extends CardImpl {
+
+ public RustwingFalcon(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
+
+ this.subtype.add(SubType.BIRD);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+ }
+
+ public RustwingFalcon(final RustwingFalcon card) {
+ super(card);
+ }
+
+ @Override
+ public RustwingFalcon copy() {
+ return new RustwingFalcon(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/r/RuthlessCullblade.java b/Mage.Sets/src/mage/cards/r/RuthlessCullblade.java
index e909aa1a1a4..fd83ddebb0c 100644
--- a/Mage.Sets/src/mage/cards/r/RuthlessCullblade.java
+++ b/Mage.Sets/src/mage/cards/r/RuthlessCullblade.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class RuthlessCullblade extends CardImpl {
+public final class RuthlessCullblade extends CardImpl {
public RuthlessCullblade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RuthlessDeathfang.java b/Mage.Sets/src/mage/cards/r/RuthlessDeathfang.java
index 2bc94121416..ad8af6de74a 100644
--- a/Mage.Sets/src/mage/cards/r/RuthlessDeathfang.java
+++ b/Mage.Sets/src/mage/cards/r/RuthlessDeathfang.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class RuthlessDeathfang extends CardImpl {
+public final class RuthlessDeathfang extends CardImpl {
public RuthlessDeathfang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RuthlessDisposal.java b/Mage.Sets/src/mage/cards/r/RuthlessDisposal.java
index 19cf992023d..31f21581993 100644
--- a/Mage.Sets/src/mage/cards/r/RuthlessDisposal.java
+++ b/Mage.Sets/src/mage/cards/r/RuthlessDisposal.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RuthlessDisposal extends CardImpl {
+public final class RuthlessDisposal extends CardImpl {
public RuthlessDisposal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RuthlessInstincts.java b/Mage.Sets/src/mage/cards/r/RuthlessInstincts.java
index df85e7b28e6..02655fd8147 100644
--- a/Mage.Sets/src/mage/cards/r/RuthlessInstincts.java
+++ b/Mage.Sets/src/mage/cards/r/RuthlessInstincts.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class RuthlessInstincts extends CardImpl {
+public final class RuthlessInstincts extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonattacking creature");
private static final FilterCreaturePermanent filterAttacking = new FilterCreaturePermanent("attacking creature");
diff --git a/Mage.Sets/src/mage/cards/r/RuthlessInvasion.java b/Mage.Sets/src/mage/cards/r/RuthlessInvasion.java
index 497ca636552..918aa492b52 100644
--- a/Mage.Sets/src/mage/cards/r/RuthlessInvasion.java
+++ b/Mage.Sets/src/mage/cards/r/RuthlessInvasion.java
@@ -42,7 +42,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class RuthlessInvasion extends CardImpl {
+public final class RuthlessInvasion extends CardImpl {
public RuthlessInvasion (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R/P}");
diff --git a/Mage.Sets/src/mage/cards/r/RuthlessKnave.java b/Mage.Sets/src/mage/cards/r/RuthlessKnave.java
index 73f9de65bd9..a932fa085f3 100644
--- a/Mage.Sets/src/mage/cards/r/RuthlessKnave.java
+++ b/Mage.Sets/src/mage/cards/r/RuthlessKnave.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class RuthlessKnave extends CardImpl {
+public final class RuthlessKnave extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("three Treasures");
diff --git a/Mage.Sets/src/mage/cards/r/RuthlessRipper.java b/Mage.Sets/src/mage/cards/r/RuthlessRipper.java
index 9a2a6772685..a198770ef3e 100644
--- a/Mage.Sets/src/mage/cards/r/RuthlessRipper.java
+++ b/Mage.Sets/src/mage/cards/r/RuthlessRipper.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class RuthlessRipper extends CardImpl {
+public final class RuthlessRipper extends CardImpl {
private final static FilterCard filter = new FilterCard("a black card in your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/r/RuthlessSniper.java b/Mage.Sets/src/mage/cards/r/RuthlessSniper.java
index 9f392700ec9..09f2f42da7c 100644
--- a/Mage.Sets/src/mage/cards/r/RuthlessSniper.java
+++ b/Mage.Sets/src/mage/cards/r/RuthlessSniper.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author stravant
*/
-public class RuthlessSniper extends CardImpl {
+public final class RuthlessSniper extends CardImpl {
public RuthlessSniper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/r/RyuseiTheFallingStar.java b/Mage.Sets/src/mage/cards/r/RyuseiTheFallingStar.java
index 9eccea4f3b6..6b7fd98beda 100644
--- a/Mage.Sets/src/mage/cards/r/RyuseiTheFallingStar.java
+++ b/Mage.Sets/src/mage/cards/r/RyuseiTheFallingStar.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
/**
* @author Loki
*/
-public class RyuseiTheFallingStar extends CardImpl {
+public final class RyuseiTheFallingStar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/s/SabaccGame.java b/Mage.Sets/src/mage/cards/s/SabaccGame.java
index 5b02bae1583..ba79032db43 100644
--- a/Mage.Sets/src/mage/cards/s/SabaccGame.java
+++ b/Mage.Sets/src/mage/cards/s/SabaccGame.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class SabaccGame extends CardImpl {
+public final class SabaccGame extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SaberAnts.java b/Mage.Sets/src/mage/cards/s/SaberAnts.java
index 76d872ed7ed..5d439d72767 100644
--- a/Mage.Sets/src/mage/cards/s/SaberAnts.java
+++ b/Mage.Sets/src/mage/cards/s/SaberAnts.java
@@ -48,7 +48,7 @@ import mage.players.Player;
* @author LoneFox
*
*/
-public class SaberAnts extends CardImpl {
+public final class SaberAnts extends CardImpl {
public SaberAnts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SaberclawGolem.java b/Mage.Sets/src/mage/cards/s/SaberclawGolem.java
index f85238bb303..04f96a775b8 100644
--- a/Mage.Sets/src/mage/cards/s/SaberclawGolem.java
+++ b/Mage.Sets/src/mage/cards/s/SaberclawGolem.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SaberclawGolem extends CardImpl {
+public final class SaberclawGolem extends CardImpl {
public SaberclawGolem (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/s/SabertoothAlleyCat.java b/Mage.Sets/src/mage/cards/s/SabertoothAlleyCat.java
index 612c453c82f..eda0b6de73a 100644
--- a/Mage.Sets/src/mage/cards/s/SabertoothAlleyCat.java
+++ b/Mage.Sets/src/mage/cards/s/SabertoothAlleyCat.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class SabertoothAlleyCat extends CardImpl {
+public final class SabertoothAlleyCat extends CardImpl {
public SabertoothAlleyCat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SabertoothCobra.java b/Mage.Sets/src/mage/cards/s/SabertoothCobra.java
index fb8779d8afb..5cbe4391a8b 100644
--- a/Mage.Sets/src/mage/cards/s/SabertoothCobra.java
+++ b/Mage.Sets/src/mage/cards/s/SabertoothCobra.java
@@ -45,7 +45,7 @@ import mage.constants.PhaseStep;
*
* @author LoneFox
*/
-public class SabertoothCobra extends CardImpl {
+public final class SabertoothCobra extends CardImpl {
public SabertoothCobra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SabertoothNishoba.java b/Mage.Sets/src/mage/cards/s/SabertoothNishoba.java
index 83f2fb540da..8010f0be93e 100644
--- a/Mage.Sets/src/mage/cards/s/SabertoothNishoba.java
+++ b/Mage.Sets/src/mage/cards/s/SabertoothNishoba.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SabertoothNishoba extends CardImpl {
+public final class SabertoothNishoba extends CardImpl {
public SabertoothNishoba(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SabertoothOutrider.java b/Mage.Sets/src/mage/cards/s/SabertoothOutrider.java
index 70a5bb55798..0949d032134 100644
--- a/Mage.Sets/src/mage/cards/s/SabertoothOutrider.java
+++ b/Mage.Sets/src/mage/cards/s/SabertoothOutrider.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class SabertoothOutrider extends CardImpl {
+public final class SabertoothOutrider extends CardImpl {
public SabertoothOutrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SabertoothWyvern.java b/Mage.Sets/src/mage/cards/s/SabertoothWyvern.java
index 3973f4326db..80560f22aae 100644
--- a/Mage.Sets/src/mage/cards/s/SabertoothWyvern.java
+++ b/Mage.Sets/src/mage/cards/s/SabertoothWyvern.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SabertoothWyvern extends CardImpl {
+public final class SabertoothWyvern extends CardImpl {
public SabertoothWyvern(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SabretoothTiger.java b/Mage.Sets/src/mage/cards/s/SabretoothTiger.java
index 8756a81394c..20b01d115f2 100644
--- a/Mage.Sets/src/mage/cards/s/SabretoothTiger.java
+++ b/Mage.Sets/src/mage/cards/s/SabretoothTiger.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SabretoothTiger extends CardImpl {
+public final class SabretoothTiger extends CardImpl {
public SabretoothTiger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SacellumArchers.java b/Mage.Sets/src/mage/cards/s/SacellumArchers.java
index 6741573beba..7b6663bb4fa 100644
--- a/Mage.Sets/src/mage/cards/s/SacellumArchers.java
+++ b/Mage.Sets/src/mage/cards/s/SacellumArchers.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author Loki
*/
-public class SacellumArchers extends CardImpl {
+public final class SacellumArchers extends CardImpl {
public SacellumArchers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SacellumGodspeaker.java b/Mage.Sets/src/mage/cards/s/SacellumGodspeaker.java
index 347e7af4ef6..805d575736b 100644
--- a/Mage.Sets/src/mage/cards/s/SacellumGodspeaker.java
+++ b/Mage.Sets/src/mage/cards/s/SacellumGodspeaker.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInHand;
/**
* @author Plopman
*/
-public class SacellumGodspeaker extends CardImpl {
+public final class SacellumGodspeaker extends CardImpl {
public SacellumGodspeaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java b/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java
index d1e2b780882..5dc12878f6c 100644
--- a/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java
+++ b/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class SachiDaughterOfSeshiro extends CardImpl {
+public final class SachiDaughterOfSeshiro extends CardImpl {
private static final FilterCreaturePermanent snakeFilter = new FilterCreaturePermanent("Snakes");
private static final FilterPermanent shamanFilter = new FilterPermanent("Shamans");
diff --git a/Mage.Sets/src/mage/cards/s/SacredArmory.java b/Mage.Sets/src/mage/cards/s/SacredArmory.java
index 004cc35d980..0b4dabce312 100644
--- a/Mage.Sets/src/mage/cards/s/SacredArmory.java
+++ b/Mage.Sets/src/mage/cards/s/SacredArmory.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class SacredArmory extends CardImpl {
+public final class SacredArmory extends CardImpl {
public SacredArmory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SacredCat.java b/Mage.Sets/src/mage/cards/s/SacredCat.java
index 82393960489..da566284a01 100644
--- a/Mage.Sets/src/mage/cards/s/SacredCat.java
+++ b/Mage.Sets/src/mage/cards/s/SacredCat.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SacredCat extends CardImpl {
+public final class SacredCat extends CardImpl {
public SacredCat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SacredExcavation.java b/Mage.Sets/src/mage/cards/s/SacredExcavation.java
index bcc97c77da2..776562a7c61 100644
--- a/Mage.Sets/src/mage/cards/s/SacredExcavation.java
+++ b/Mage.Sets/src/mage/cards/s/SacredExcavation.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author stravant
*/
-public class SacredExcavation extends CardImpl {
+public final class SacredExcavation extends CardImpl {
private static final FilterCard cardsWithCycling = new FilterCard("cards with cycling from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/SacredFoundry.java b/Mage.Sets/src/mage/cards/s/SacredFoundry.java
index b04fa0774e4..005011a813a 100644
--- a/Mage.Sets/src/mage/cards/s/SacredFoundry.java
+++ b/Mage.Sets/src/mage/cards/s/SacredFoundry.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SacredFoundry extends CardImpl {
+public final class SacredFoundry extends CardImpl {
public SacredFoundry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/s/SacredGround.java b/Mage.Sets/src/mage/cards/s/SacredGround.java
index d89f19b434e..8b5e23f4a37 100644
--- a/Mage.Sets/src/mage/cards/s/SacredGround.java
+++ b/Mage.Sets/src/mage/cards/s/SacredGround.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author dustinconrad
*/
-public class SacredGround extends CardImpl {
+public final class SacredGround extends CardImpl {
public SacredGround(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SacredGuide.java b/Mage.Sets/src/mage/cards/s/SacredGuide.java
index b38e6e39a53..f20ab80e292 100644
--- a/Mage.Sets/src/mage/cards/s/SacredGuide.java
+++ b/Mage.Sets/src/mage/cards/s/SacredGuide.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Styxo
*/
-public class SacredGuide extends CardImpl {
+public final class SacredGuide extends CardImpl {
private static final FilterCard filterCard = new FilterCard("white card");
diff --git a/Mage.Sets/src/mage/cards/s/SacredKnight.java b/Mage.Sets/src/mage/cards/s/SacredKnight.java
index d144e190aaa..2b0ef630a65 100644
--- a/Mage.Sets/src/mage/cards/s/SacredKnight.java
+++ b/Mage.Sets/src/mage/cards/s/SacredKnight.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class SacredKnight extends CardImpl {
+public final class SacredKnight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black and/or red creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SacredMesa.java b/Mage.Sets/src/mage/cards/s/SacredMesa.java
index feb2ec060d9..844748c4d23 100644
--- a/Mage.Sets/src/mage/cards/s/SacredMesa.java
+++ b/Mage.Sets/src/mage/cards/s/SacredMesa.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author emerald000
*/
-public class SacredMesa extends CardImpl {
+public final class SacredMesa extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Pegasus");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SacredNectar.java b/Mage.Sets/src/mage/cards/s/SacredNectar.java
index 464214b1bc4..f0bf2bef7e0 100644
--- a/Mage.Sets/src/mage/cards/s/SacredNectar.java
+++ b/Mage.Sets/src/mage/cards/s/SacredNectar.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class SacredNectar extends CardImpl {
+public final class SacredNectar extends CardImpl {
public SacredNectar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SacredPrey.java b/Mage.Sets/src/mage/cards/s/SacredPrey.java
index 898f86517b6..ec0f62a95b1 100644
--- a/Mage.Sets/src/mage/cards/s/SacredPrey.java
+++ b/Mage.Sets/src/mage/cards/s/SacredPrey.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SacredPrey extends CardImpl {
+public final class SacredPrey extends CardImpl {
public SacredPrey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SacredRites.java b/Mage.Sets/src/mage/cards/s/SacredRites.java
index cee635e973d..0329fd024f6 100644
--- a/Mage.Sets/src/mage/cards/s/SacredRites.java
+++ b/Mage.Sets/src/mage/cards/s/SacredRites.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author cbt33
*/
-public class SacredRites extends CardImpl {
+public final class SacredRites extends CardImpl {
public SacredRites(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SacredWolf.java b/Mage.Sets/src/mage/cards/s/SacredWolf.java
index c291bf2b6f9..e26506e4b1d 100644
--- a/Mage.Sets/src/mage/cards/s/SacredWolf.java
+++ b/Mage.Sets/src/mage/cards/s/SacredWolf.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SacredWolf extends CardImpl {
+public final class SacredWolf extends CardImpl {
public SacredWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
this.subtype.add(SubType.WOLF);
diff --git a/Mage.Sets/src/mage/cards/s/Sacrifice.java b/Mage.Sets/src/mage/cards/s/Sacrifice.java
index 2c6365742b9..12ab6be3132 100644
--- a/Mage.Sets/src/mage/cards/s/Sacrifice.java
+++ b/Mage.Sets/src/mage/cards/s/Sacrifice.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class Sacrifice extends CardImpl {
+public final class Sacrifice extends CardImpl {
public Sacrifice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SaddlebackLagac.java b/Mage.Sets/src/mage/cards/s/SaddlebackLagac.java
index f0144837d75..6f81f36a69f 100644
--- a/Mage.Sets/src/mage/cards/s/SaddlebackLagac.java
+++ b/Mage.Sets/src/mage/cards/s/SaddlebackLagac.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SaddlebackLagac extends CardImpl {
+public final class SaddlebackLagac extends CardImpl {
private final static FilterCreaturePermanent FILTER = new FilterCreaturePermanent("target creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SadisticAugermage.java b/Mage.Sets/src/mage/cards/s/SadisticAugermage.java
index c31a48b5d6b..f4583c6b307 100644
--- a/Mage.Sets/src/mage/cards/s/SadisticAugermage.java
+++ b/Mage.Sets/src/mage/cards/s/SadisticAugermage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class SadisticAugermage extends CardImpl {
+public final class SadisticAugermage extends CardImpl {
public SadisticAugermage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SadisticGlee.java b/Mage.Sets/src/mage/cards/s/SadisticGlee.java
index 4fa023acae0..62dda47409b 100644
--- a/Mage.Sets/src/mage/cards/s/SadisticGlee.java
+++ b/Mage.Sets/src/mage/cards/s/SadisticGlee.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SadisticGlee extends CardImpl {
+public final class SadisticGlee extends CardImpl {
public SadisticGlee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SadisticHypnotist.java b/Mage.Sets/src/mage/cards/s/SadisticHypnotist.java
index 65a80e21381..bf104509ccf 100644
--- a/Mage.Sets/src/mage/cards/s/SadisticHypnotist.java
+++ b/Mage.Sets/src/mage/cards/s/SadisticHypnotist.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author cbt33
*/
-public class SadisticHypnotist extends CardImpl {
+public final class SadisticHypnotist extends CardImpl {
public SadisticHypnotist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SadisticSacrament.java b/Mage.Sets/src/mage/cards/s/SadisticSacrament.java
index 7c70c4df94d..e932900be01 100644
--- a/Mage.Sets/src/mage/cards/s/SadisticSacrament.java
+++ b/Mage.Sets/src/mage/cards/s/SadisticSacrament.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class SadisticSacrament extends CardImpl {
+public final class SadisticSacrament extends CardImpl {
private static final String ruleText = "Search target player's library for up to three cards, exile them, then that player shuffles their library. if this spell was kicked, instead search that player's library for up to fifteen cards, exile them, then that player shuffles their library";
diff --git a/Mage.Sets/src/mage/cards/s/SadisticSkymarcher.java b/Mage.Sets/src/mage/cards/s/SadisticSkymarcher.java
index db3061dac97..24d521fe5cb 100644
--- a/Mage.Sets/src/mage/cards/s/SadisticSkymarcher.java
+++ b/Mage.Sets/src/mage/cards/s/SadisticSkymarcher.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class SadisticSkymarcher extends CardImpl {
+public final class SadisticSkymarcher extends CardImpl {
private static final FilterCard filter = new FilterCard("a Vampire card from your hand");
diff --git a/Mage.Sets/src/mage/cards/s/SafeHaven.java b/Mage.Sets/src/mage/cards/s/SafeHaven.java
index c6168717bb8..95ac25af9de 100644
--- a/Mage.Sets/src/mage/cards/s/SafeHaven.java
+++ b/Mage.Sets/src/mage/cards/s/SafeHaven.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class SafeHaven extends CardImpl {
+public final class SafeHaven extends CardImpl {
public SafeHaven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SafePassage.java b/Mage.Sets/src/mage/cards/s/SafePassage.java
index a3d510b5f9e..522c6b7799f 100644
--- a/Mage.Sets/src/mage/cards/s/SafePassage.java
+++ b/Mage.Sets/src/mage/cards/s/SafePassage.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SafePassage extends CardImpl {
+public final class SafePassage extends CardImpl {
private static final FilterCreatureOrPlayer filter = new FilterCreatureOrPlayer("you and creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/Safeguard.java b/Mage.Sets/src/mage/cards/s/Safeguard.java
index 10617cdf891..e9d2b56e440 100644
--- a/Mage.Sets/src/mage/cards/s/Safeguard.java
+++ b/Mage.Sets/src/mage/cards/s/Safeguard.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Safeguard extends CardImpl {
+public final class Safeguard extends CardImpl {
public Safeguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SafeholdDuo.java b/Mage.Sets/src/mage/cards/s/SafeholdDuo.java
index 1a36bf7125f..6593bf412b0 100644
--- a/Mage.Sets/src/mage/cards/s/SafeholdDuo.java
+++ b/Mage.Sets/src/mage/cards/s/SafeholdDuo.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class SafeholdDuo extends CardImpl {
+public final class SafeholdDuo extends CardImpl {
private static final FilterSpell whiteFilter = new FilterSpell("a white spell");
private static final FilterSpell greenFilter = new FilterSpell("a green spell");
diff --git a/Mage.Sets/src/mage/cards/s/SafeholdElite.java b/Mage.Sets/src/mage/cards/s/SafeholdElite.java
index 7aa88773bd7..10edb812d61 100644
--- a/Mage.Sets/src/mage/cards/s/SafeholdElite.java
+++ b/Mage.Sets/src/mage/cards/s/SafeholdElite.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SafeholdElite extends CardImpl {
+public final class SafeholdElite extends CardImpl {
public SafeholdElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/s/SafeholdSentry.java b/Mage.Sets/src/mage/cards/s/SafeholdSentry.java
index 42fbcceabff..f0e45a22b59 100644
--- a/Mage.Sets/src/mage/cards/s/SafeholdSentry.java
+++ b/Mage.Sets/src/mage/cards/s/SafeholdSentry.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
* @author jeffwadsworth
*/
-public class SafeholdSentry extends CardImpl {
+public final class SafeholdSentry extends CardImpl {
public SafeholdSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SafewrightQuest.java b/Mage.Sets/src/mage/cards/s/SafewrightQuest.java
index e4a98520f44..035a768a206 100644
--- a/Mage.Sets/src/mage/cards/s/SafewrightQuest.java
+++ b/Mage.Sets/src/mage/cards/s/SafewrightQuest.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class SafewrightQuest extends CardImpl {
+public final class SafewrightQuest extends CardImpl {
private static final FilterCard filter = new FilterCard("Forest or Plains card");
diff --git a/Mage.Sets/src/mage/cards/s/SaffiEriksdotter.java b/Mage.Sets/src/mage/cards/s/SaffiEriksdotter.java
index e36a4787cc3..382eba2eb15 100644
--- a/Mage.Sets/src/mage/cards/s/SaffiEriksdotter.java
+++ b/Mage.Sets/src/mage/cards/s/SaffiEriksdotter.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class SaffiEriksdotter extends CardImpl {
+public final class SaffiEriksdotter extends CardImpl {
public SaffiEriksdotter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SageAven.java b/Mage.Sets/src/mage/cards/s/SageAven.java
index 55699c67f01..7fa6fec3a90 100644
--- a/Mage.Sets/src/mage/cards/s/SageAven.java
+++ b/Mage.Sets/src/mage/cards/s/SageAven.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SageAven extends CardImpl {
+public final class SageAven extends CardImpl {
public SageAven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SageEyeAvengers.java b/Mage.Sets/src/mage/cards/s/SageEyeAvengers.java
index 35f640932d0..d309e5d6b54 100644
--- a/Mage.Sets/src/mage/cards/s/SageEyeAvengers.java
+++ b/Mage.Sets/src/mage/cards/s/SageEyeAvengers.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SageEyeAvengers extends CardImpl {
+public final class SageEyeAvengers extends CardImpl {
public SageEyeAvengers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SageEyeHarrier.java b/Mage.Sets/src/mage/cards/s/SageEyeHarrier.java
index a4777f39b8a..7c493b1d231 100644
--- a/Mage.Sets/src/mage/cards/s/SageEyeHarrier.java
+++ b/Mage.Sets/src/mage/cards/s/SageEyeHarrier.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SageEyeHarrier extends CardImpl {
+public final class SageEyeHarrier extends CardImpl {
public SageEyeHarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SageOfAncientLore.java b/Mage.Sets/src/mage/cards/s/SageOfAncientLore.java
index 9cd65a6bb5d..c1794fda324 100644
--- a/Mage.Sets/src/mage/cards/s/SageOfAncientLore.java
+++ b/Mage.Sets/src/mage/cards/s/SageOfAncientLore.java
@@ -56,7 +56,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SageOfAncientLore extends CardImpl {
+public final class SageOfAncientLore extends CardImpl {
public SageOfAncientLore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SageOfEpityr.java b/Mage.Sets/src/mage/cards/s/SageOfEpityr.java
index 1051b9f4ef8..150fdf59a78 100644
--- a/Mage.Sets/src/mage/cards/s/SageOfEpityr.java
+++ b/Mage.Sets/src/mage/cards/s/SageOfEpityr.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SageOfEpityr extends CardImpl {
+public final class SageOfEpityr extends CardImpl {
public SageOfEpityr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SageOfFables.java b/Mage.Sets/src/mage/cards/s/SageOfFables.java
index 56826aedb9d..4f41ca17fde 100644
--- a/Mage.Sets/src/mage/cards/s/SageOfFables.java
+++ b/Mage.Sets/src/mage/cards/s/SageOfFables.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class SageOfFables extends CardImpl {
+public final class SageOfFables extends CardImpl {
public SageOfFables(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SageOfHours.java b/Mage.Sets/src/mage/cards/s/SageOfHours.java
index 8450aea4611..22e4a08671a 100644
--- a/Mage.Sets/src/mage/cards/s/SageOfHours.java
+++ b/Mage.Sets/src/mage/cards/s/SageOfHours.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class SageOfHours extends CardImpl {
+public final class SageOfHours extends CardImpl {
public SageOfHours(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SageOfLatNam.java b/Mage.Sets/src/mage/cards/s/SageOfLatNam.java
index 7129f43a1da..4134f8877d7 100644
--- a/Mage.Sets/src/mage/cards/s/SageOfLatNam.java
+++ b/Mage.Sets/src/mage/cards/s/SageOfLatNam.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class SageOfLatNam extends CardImpl {
+public final class SageOfLatNam extends CardImpl {
public SageOfLatNam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SageOfShailasClaim.java b/Mage.Sets/src/mage/cards/s/SageOfShailasClaim.java
index a755a0ae11f..d9e3174c9b1 100644
--- a/Mage.Sets/src/mage/cards/s/SageOfShailasClaim.java
+++ b/Mage.Sets/src/mage/cards/s/SageOfShailasClaim.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SageOfShailasClaim extends CardImpl {
+public final class SageOfShailasClaim extends CardImpl {
public SageOfShailasClaim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SageOfTheInwardEye.java b/Mage.Sets/src/mage/cards/s/SageOfTheInwardEye.java
index 9478b4c7705..f94d1754a38 100644
--- a/Mage.Sets/src/mage/cards/s/SageOfTheInwardEye.java
+++ b/Mage.Sets/src/mage/cards/s/SageOfTheInwardEye.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class SageOfTheInwardEye extends CardImpl {
+public final class SageOfTheInwardEye extends CardImpl {
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/s/SageOwl.java b/Mage.Sets/src/mage/cards/s/SageOwl.java
index 819319f6827..a7c1cfe5681 100644
--- a/Mage.Sets/src/mage/cards/s/SageOwl.java
+++ b/Mage.Sets/src/mage/cards/s/SageOwl.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SageOwl extends CardImpl {
+public final class SageOwl extends CardImpl {
public SageOwl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SagesDousing.java b/Mage.Sets/src/mage/cards/s/SagesDousing.java
index ebf648edfdc..6092b62c2a8 100644
--- a/Mage.Sets/src/mage/cards/s/SagesDousing.java
+++ b/Mage.Sets/src/mage/cards/s/SagesDousing.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class SagesDousing extends CardImpl {
+public final class SagesDousing extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wizard");
diff --git a/Mage.Sets/src/mage/cards/s/SagesKnowledge.java b/Mage.Sets/src/mage/cards/s/SagesKnowledge.java
index fb1cb731214..5b8fb8b721c 100644
--- a/Mage.Sets/src/mage/cards/s/SagesKnowledge.java
+++ b/Mage.Sets/src/mage/cards/s/SagesKnowledge.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LoneFox
*/
-public class SagesKnowledge extends CardImpl {
+public final class SagesKnowledge extends CardImpl {
static final FilterCard filter = new FilterCard("sorcery card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/SagesOfTheAnima.java b/Mage.Sets/src/mage/cards/s/SagesOfTheAnima.java
index d08292c9a2d..d432e35e135 100644
--- a/Mage.Sets/src/mage/cards/s/SagesOfTheAnima.java
+++ b/Mage.Sets/src/mage/cards/s/SagesOfTheAnima.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class SagesOfTheAnima extends CardImpl {
+public final class SagesOfTheAnima extends CardImpl {
public SagesOfTheAnima(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SagesReverie.java b/Mage.Sets/src/mage/cards/s/SagesReverie.java
index de1bdbe045e..1ffea848a26 100644
--- a/Mage.Sets/src/mage/cards/s/SagesReverie.java
+++ b/Mage.Sets/src/mage/cards/s/SagesReverie.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class SagesReverie extends CardImpl {
+public final class SagesReverie extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("aura you control that's attached to a creature");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SagesRowDenizen.java b/Mage.Sets/src/mage/cards/s/SagesRowDenizen.java
index e67b8b9f1f6..9f3931ed733 100644
--- a/Mage.Sets/src/mage/cards/s/SagesRowDenizen.java
+++ b/Mage.Sets/src/mage/cards/s/SagesRowDenizen.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class SagesRowDenizen extends CardImpl {
+public final class SagesRowDenizen extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another blue creature");
diff --git a/Mage.Sets/src/mage/cards/s/SaguArcher.java b/Mage.Sets/src/mage/cards/s/SaguArcher.java
index 9579e6de8a5..83a0ad79cd5 100644
--- a/Mage.Sets/src/mage/cards/s/SaguArcher.java
+++ b/Mage.Sets/src/mage/cards/s/SaguArcher.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SaguArcher extends CardImpl {
+public final class SaguArcher extends CardImpl {
public SaguArcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SaguMauler.java b/Mage.Sets/src/mage/cards/s/SaguMauler.java
index f5e935b053e..7042f26154d 100644
--- a/Mage.Sets/src/mage/cards/s/SaguMauler.java
+++ b/Mage.Sets/src/mage/cards/s/SaguMauler.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SaguMauler extends CardImpl {
+public final class SaguMauler extends CardImpl {
public SaguMauler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SaheeliRai.java b/Mage.Sets/src/mage/cards/s/SaheeliRai.java
index 0c6e1fb8034..4a6c3193c6e 100644
--- a/Mage.Sets/src/mage/cards/s/SaheeliRai.java
+++ b/Mage.Sets/src/mage/cards/s/SaheeliRai.java
@@ -61,7 +61,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class SaheeliRai extends CardImpl {
+public final class SaheeliRai extends CardImpl {
public SaheeliRai(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SaheelisArtistry.java b/Mage.Sets/src/mage/cards/s/SaheelisArtistry.java
index 35e47ac56bd..610169cc329 100644
--- a/Mage.Sets/src/mage/cards/s/SaheelisArtistry.java
+++ b/Mage.Sets/src/mage/cards/s/SaheelisArtistry.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SaheelisArtistry extends CardImpl {
+public final class SaheelisArtistry extends CardImpl {
public SaheelisArtistry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SaiOfTheShinobi.java b/Mage.Sets/src/mage/cards/s/SaiOfTheShinobi.java
index f1984e6a361..0d597b7cbb2 100644
--- a/Mage.Sets/src/mage/cards/s/SaiOfTheShinobi.java
+++ b/Mage.Sets/src/mage/cards/s/SaiOfTheShinobi.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class SaiOfTheShinobi extends CardImpl {
+public final class SaiOfTheShinobi extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a creature");
static {
diff --git a/Mage.Sets/src/mage/cards/s/Sailmonger.java b/Mage.Sets/src/mage/cards/s/Sailmonger.java
index a5a1846d09f..7cfbdac462a 100644
--- a/Mage.Sets/src/mage/cards/s/Sailmonger.java
+++ b/Mage.Sets/src/mage/cards/s/Sailmonger.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Sailmonger extends CardImpl {
+public final class Sailmonger extends CardImpl {
public Sailmonger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SailorOfMeans.java b/Mage.Sets/src/mage/cards/s/SailorOfMeans.java
index 160a9516760..b29ccd0c184 100644
--- a/Mage.Sets/src/mage/cards/s/SailorOfMeans.java
+++ b/Mage.Sets/src/mage/cards/s/SailorOfMeans.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author TheElk801
*/
-public class SailorOfMeans extends CardImpl {
+public final class SailorOfMeans extends CardImpl {
public SailorOfMeans(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SakashimaTheImpostor.java b/Mage.Sets/src/mage/cards/s/SakashimaTheImpostor.java
index 33196bb4ea0..d1507f3dcc8 100644
--- a/Mage.Sets/src/mage/cards/s/SakashimaTheImpostor.java
+++ b/Mage.Sets/src/mage/cards/s/SakashimaTheImpostor.java
@@ -53,7 +53,7 @@ import mage.util.functions.ApplyToPermanent;
/**
* @author LevelX2
*/
-public class SakashimaTheImpostor extends CardImpl {
+public final class SakashimaTheImpostor extends CardImpl {
public SakashimaTheImpostor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SakashimasStudent.java b/Mage.Sets/src/mage/cards/s/SakashimasStudent.java
index 6070ffad3e2..fff37224a04 100644
--- a/Mage.Sets/src/mage/cards/s/SakashimasStudent.java
+++ b/Mage.Sets/src/mage/cards/s/SakashimasStudent.java
@@ -45,7 +45,7 @@ import mage.util.functions.AddSubtypeApplier;
*
* @author LevelX2
*/
-public class SakashimasStudent extends CardImpl {
+public final class SakashimasStudent extends CardImpl {
public SakashimasStudent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SakikoMotherOfSummer.java b/Mage.Sets/src/mage/cards/s/SakikoMotherOfSummer.java
index 628c24b5194..ab6aac1692c 100644
--- a/Mage.Sets/src/mage/cards/s/SakikoMotherOfSummer.java
+++ b/Mage.Sets/src/mage/cards/s/SakikoMotherOfSummer.java
@@ -50,10 +50,10 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SakikoMotherOfSummer extends CardImpl {
+public final class SakikoMotherOfSummer extends CardImpl {
public SakikoMotherOfSummer(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.SNAKE);
this.subtype.add(SubType.SHAMAN);
@@ -63,7 +63,7 @@ public class SakikoMotherOfSummer extends CardImpl {
// Whenever a creature you control deals combat damage to a player, add that much {G}. Until end of turn, you don’t lose this mana as steps and phases end.
this.addAbility(new SakikoMotherOfSummerTriggeredAbility());
-
+
}
public SakikoMotherOfSummer(final SakikoMotherOfSummer card) {
@@ -104,7 +104,7 @@ class SakikoMotherOfSummerTriggeredAbility extends TriggeredAbilityImpl {
this.getEffects().clear();
Effect effect = new AddManaToManaPoolTargetControllerEffect(Mana.GreenMana(event.getAmount()), "that player", true);
effect.setTargetPointer(new FixedTarget(creature.getControllerId()));
- effect.setText("add that much {G}. Until end of turn, this mana doesn't empty from your mana pool as steps and phases end");
+ effect.setText("add that much {G}. Until end of turn, you don’t lose this mana as steps and phases end");
this.addEffect(effect);
return true;
}
@@ -116,4 +116,4 @@ class SakikoMotherOfSummerTriggeredAbility extends TriggeredAbilityImpl {
public String getRule() {
return "Whenever a creature you control deals combat damage to a player, add that much {G}. Until end of turn, you don’t lose this mana as steps and phases end.";
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/s/SakuraTribeElder.java b/Mage.Sets/src/mage/cards/s/SakuraTribeElder.java
index eeb180cff79..8f6c1ace7ed 100644
--- a/Mage.Sets/src/mage/cards/s/SakuraTribeElder.java
+++ b/Mage.Sets/src/mage/cards/s/SakuraTribeElder.java
@@ -46,7 +46,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class SakuraTribeElder extends CardImpl {
+public final class SakuraTribeElder extends CardImpl {
public SakuraTribeElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
@@ -55,7 +55,7 @@ public class SakuraTribeElder extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(target, true, Outcome.PutLandInPlay), new SacrificeSourceCost()));
}
diff --git a/Mage.Sets/src/mage/cards/s/SakuraTribeScout.java b/Mage.Sets/src/mage/cards/s/SakuraTribeScout.java
index 0104db981fd..b8656de985a 100644
--- a/Mage.Sets/src/mage/cards/s/SakuraTribeScout.java
+++ b/Mage.Sets/src/mage/cards/s/SakuraTribeScout.java
@@ -31,21 +31,22 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
+import mage.filter.StaticFilters;
/**
*
* @author LevelX2
*/
-public class SakuraTribeScout extends CardImpl {
+public final class SakuraTribeScout extends CardImpl {
public SakuraTribeScout(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
this.subtype.add(SubType.SNAKE);
this.subtype.add(SubType.SHAMAN);
this.subtype.add(SubType.SCOUT);
@@ -54,7 +55,11 @@ public class SakuraTribeScout extends CardImpl {
this.toughness = new MageInt(1);
// {tap}: You may put a land card from your hand onto the battlefield.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutLandFromHandOntoBattlefieldEffect(), new TapSourceCost()));
+ this.addAbility(new SimpleActivatedAbility(
+ Zone.BATTLEFIELD,
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A),
+ new TapSourceCost()
+ ));
}
public SakuraTribeScout(final SakuraTribeScout card) {
diff --git a/Mage.Sets/src/mage/cards/s/SakuraTribeSpringcaller.java b/Mage.Sets/src/mage/cards/s/SakuraTribeSpringcaller.java
index 65ade8f8c36..b97b4fccd1c 100644
--- a/Mage.Sets/src/mage/cards/s/SakuraTribeSpringcaller.java
+++ b/Mage.Sets/src/mage/cards/s/SakuraTribeSpringcaller.java
@@ -44,10 +44,10 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SakuraTribeSpringcaller extends CardImpl {
+public final class SakuraTribeSpringcaller extends CardImpl {
public SakuraTribeSpringcaller(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.subtype.add(SubType.SNAKE);
this.subtype.add(SubType.SHAMAN);
@@ -56,7 +56,7 @@ public class SakuraTribeSpringcaller extends CardImpl {
// At the beginning of your upkeep, add {G}. Until end of turn, you don’t lose this mana as steps and phases end.
Effect effect = new AddManaToManaPoolTargetControllerEffect(new Mana(Mana.GreenMana(1)), "your", true);
- effect.setText("add {G}. Until end of turn, this mana doesn't empty from your mana pool as steps and phases end");
+ effect.setText("add {G}. Until end of turn, you don’t lose this mana as steps and phases end");
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.YOU, false));
}
diff --git a/Mage.Sets/src/mage/cards/s/SalivatingGremlins.java b/Mage.Sets/src/mage/cards/s/SalivatingGremlins.java
index 3dc8196838d..7f6097b121d 100644
--- a/Mage.Sets/src/mage/cards/s/SalivatingGremlins.java
+++ b/Mage.Sets/src/mage/cards/s/SalivatingGremlins.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author LevelX2
*/
-public class SalivatingGremlins extends CardImpl {
+public final class SalivatingGremlins extends CardImpl {
public SalivatingGremlins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SaltFlats.java b/Mage.Sets/src/mage/cards/s/SaltFlats.java
index af7a380e6ab..5673e617df1 100644
--- a/Mage.Sets/src/mage/cards/s/SaltFlats.java
+++ b/Mage.Sets/src/mage/cards/s/SaltFlats.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class SaltFlats extends CardImpl {
+public final class SaltFlats extends CardImpl {
public SaltFlats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/s/SaltMarsh.java b/Mage.Sets/src/mage/cards/s/SaltMarsh.java
index 183ce5f035f..3de7c1d8c58 100644
--- a/Mage.Sets/src/mage/cards/s/SaltMarsh.java
+++ b/Mage.Sets/src/mage/cards/s/SaltMarsh.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class SaltMarsh extends CardImpl {
+public final class SaltMarsh extends CardImpl {
public SaltMarsh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SaltRoadAmbushers.java b/Mage.Sets/src/mage/cards/s/SaltRoadAmbushers.java
index da151c02125..7143a2336ba 100644
--- a/Mage.Sets/src/mage/cards/s/SaltRoadAmbushers.java
+++ b/Mage.Sets/src/mage/cards/s/SaltRoadAmbushers.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class SaltRoadAmbushers extends CardImpl {
+public final class SaltRoadAmbushers extends CardImpl {
public SaltRoadAmbushers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SaltRoadPatrol.java b/Mage.Sets/src/mage/cards/s/SaltRoadPatrol.java
index 0dd7b65c23e..3cec21c37bd 100644
--- a/Mage.Sets/src/mage/cards/s/SaltRoadPatrol.java
+++ b/Mage.Sets/src/mage/cards/s/SaltRoadPatrol.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SaltRoadPatrol extends CardImpl {
+public final class SaltRoadPatrol extends CardImpl {
public SaltRoadPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SaltRoadQuartermasters.java b/Mage.Sets/src/mage/cards/s/SaltRoadQuartermasters.java
index ba96bd420e2..6c4d8241fd1 100644
--- a/Mage.Sets/src/mage/cards/s/SaltRoadQuartermasters.java
+++ b/Mage.Sets/src/mage/cards/s/SaltRoadQuartermasters.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SaltRoadQuartermasters extends CardImpl {
+public final class SaltRoadQuartermasters extends CardImpl {
public SaltRoadQuartermasters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Saltblast.java b/Mage.Sets/src/mage/cards/s/Saltblast.java
index b8b16bc5261..d0495b38eae 100644
--- a/Mage.Sets/src/mage/cards/s/Saltblast.java
+++ b/Mage.Sets/src/mage/cards/s/Saltblast.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class Saltblast extends CardImpl {
+public final class Saltblast extends CardImpl {
static final protected FilterPermanent filter = new FilterPermanent("nonwhite permanent");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SaltcrustedSteppe.java b/Mage.Sets/src/mage/cards/s/SaltcrustedSteppe.java
index be0582a92f5..71aa0399408 100644
--- a/Mage.Sets/src/mage/cards/s/SaltcrustedSteppe.java
+++ b/Mage.Sets/src/mage/cards/s/SaltcrustedSteppe.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class SaltcrustedSteppe extends CardImpl {
+public final class SaltcrustedSteppe extends CardImpl {
public SaltcrustedSteppe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SaltfieldRecluse.java b/Mage.Sets/src/mage/cards/s/SaltfieldRecluse.java
index 38e26b71c88..5eb75ecf2eb 100644
--- a/Mage.Sets/src/mage/cards/s/SaltfieldRecluse.java
+++ b/Mage.Sets/src/mage/cards/s/SaltfieldRecluse.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SaltfieldRecluse extends CardImpl {
+public final class SaltfieldRecluse extends CardImpl {
public SaltfieldRecluse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Saltskitter.java b/Mage.Sets/src/mage/cards/s/Saltskitter.java
index 9119fb52647..ffa39b65537 100644
--- a/Mage.Sets/src/mage/cards/s/Saltskitter.java
+++ b/Mage.Sets/src/mage/cards/s/Saltskitter.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class Saltskitter extends CardImpl {
+public final class Saltskitter extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/s/SaltwaterStalwart.java b/Mage.Sets/src/mage/cards/s/SaltwaterStalwart.java
new file mode 100644
index 00000000000..89ed5c774bb
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/SaltwaterStalwart.java
@@ -0,0 +1,69 @@
+/*
+ * 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.DealsDamageToOpponentTriggeredAbility;
+import mage.abilities.effects.common.DrawCardTargetEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.target.TargetPlayer;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class SaltwaterStalwart extends CardImpl {
+
+ public SaltwaterStalwart(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
+
+ this.subtype.add(SubType.MERFOLK);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(4);
+
+ // Whenever Saltwater Stalwart deals damage to an opponent, target player draws a card.
+ Ability ability = new DealsDamageToOpponentTriggeredAbility(new DrawCardTargetEffect(1));
+ ability.addTarget(new TargetPlayer());
+ this.addAbility(ability);
+ }
+
+ public SaltwaterStalwart(final SaltwaterStalwart card) {
+ super(card);
+ }
+
+ @Override
+ public SaltwaterStalwart copy() {
+ return new SaltwaterStalwart(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/Salvage.java b/Mage.Sets/src/mage/cards/s/Salvage.java
index cde16e55a11..df69d3a07f0 100644
--- a/Mage.Sets/src/mage/cards/s/Salvage.java
+++ b/Mage.Sets/src/mage/cards/s/Salvage.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class Salvage extends CardImpl {
+public final class Salvage extends CardImpl {
public Salvage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SalvageDrone.java b/Mage.Sets/src/mage/cards/s/SalvageDrone.java
index e0d89df101d..6971629b067 100644
--- a/Mage.Sets/src/mage/cards/s/SalvageDrone.java
+++ b/Mage.Sets/src/mage/cards/s/SalvageDrone.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SalvageDrone extends CardImpl {
+public final class SalvageDrone extends CardImpl {
public SalvageDrone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SalvageScout.java b/Mage.Sets/src/mage/cards/s/SalvageScout.java
index cda981cd03d..1fb9e55082e 100644
--- a/Mage.Sets/src/mage/cards/s/SalvageScout.java
+++ b/Mage.Sets/src/mage/cards/s/SalvageScout.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author nantuko
*/
-public class SalvageScout extends CardImpl {
+public final class SalvageScout extends CardImpl {
public SalvageScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SalvageScuttler.java b/Mage.Sets/src/mage/cards/s/SalvageScuttler.java
index a55fb5eb2fe..cf8cddf913c 100644
--- a/Mage.Sets/src/mage/cards/s/SalvageScuttler.java
+++ b/Mage.Sets/src/mage/cards/s/SalvageScuttler.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class SalvageScuttler extends CardImpl {
+public final class SalvageScuttler extends CardImpl {
public SalvageScuttler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SalvageSlasher.java b/Mage.Sets/src/mage/cards/s/SalvageSlasher.java
index f9e4bb46a76..57982f600a1 100644
--- a/Mage.Sets/src/mage/cards/s/SalvageSlasher.java
+++ b/Mage.Sets/src/mage/cards/s/SalvageSlasher.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author North
*/
-public class SalvageSlasher extends CardImpl {
+public final class SalvageSlasher extends CardImpl {
public SalvageSlasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SalvageSquad.java b/Mage.Sets/src/mage/cards/s/SalvageSquad.java
index c09322734ef..f5be8bec2b4 100644
--- a/Mage.Sets/src/mage/cards/s/SalvageSquad.java
+++ b/Mage.Sets/src/mage/cards/s/SalvageSquad.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Styxo
*/
-public class SalvageSquad extends CardImpl {
+public final class SalvageSquad extends CardImpl {
public SalvageSquad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SalvageTitan.java b/Mage.Sets/src/mage/cards/s/SalvageTitan.java
index 94eccba6eea..8caee152942 100644
--- a/Mage.Sets/src/mage/cards/s/SalvageTitan.java
+++ b/Mage.Sets/src/mage/cards/s/SalvageTitan.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class SalvageTitan extends CardImpl {
+public final class SalvageTitan extends CardImpl {
public SalvageTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SalvagingStation.java b/Mage.Sets/src/mage/cards/s/SalvagingStation.java
index cd324ff541b..819875344a0 100644
--- a/Mage.Sets/src/mage/cards/s/SalvagingStation.java
+++ b/Mage.Sets/src/mage/cards/s/SalvagingStation.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class SalvagingStation extends CardImpl {
+public final class SalvagingStation extends CardImpl {
private static final FilterCard filter = new FilterCard("noncreature artifact card with converted mana cost 1 or less");
diff --git a/Mage.Sets/src/mage/cards/s/SamiteArcher.java b/Mage.Sets/src/mage/cards/s/SamiteArcher.java
index 3486c9ce355..40ed89744fd 100644
--- a/Mage.Sets/src/mage/cards/s/SamiteArcher.java
+++ b/Mage.Sets/src/mage/cards/s/SamiteArcher.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*/
-public class SamiteArcher extends CardImpl {
+public final class SamiteArcher extends CardImpl {
public SamiteArcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SamiteCenserBearer.java b/Mage.Sets/src/mage/cards/s/SamiteCenserBearer.java
index 4e9b37440d2..2a2efde17f0 100644
--- a/Mage.Sets/src/mage/cards/s/SamiteCenserBearer.java
+++ b/Mage.Sets/src/mage/cards/s/SamiteCenserBearer.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class SamiteCenserBearer extends CardImpl {
+public final class SamiteCenserBearer extends CardImpl {
public SamiteCenserBearer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SamiteElder.java b/Mage.Sets/src/mage/cards/s/SamiteElder.java
index 50e502ac6bc..1eb4db18b5b 100644
--- a/Mage.Sets/src/mage/cards/s/SamiteElder.java
+++ b/Mage.Sets/src/mage/cards/s/SamiteElder.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class SamiteElder extends CardImpl {
+public final class SamiteElder extends CardImpl {
public SamiteElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SamiteHealer.java b/Mage.Sets/src/mage/cards/s/SamiteHealer.java
index 461e6239995..b158a1deb83 100644
--- a/Mage.Sets/src/mage/cards/s/SamiteHealer.java
+++ b/Mage.Sets/src/mage/cards/s/SamiteHealer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class SamiteHealer extends CardImpl {
+public final class SamiteHealer extends CardImpl {
public SamiteHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SamitePilgrim.java b/Mage.Sets/src/mage/cards/s/SamitePilgrim.java
index 8aa8e03e3fb..904f92af737 100644
--- a/Mage.Sets/src/mage/cards/s/SamitePilgrim.java
+++ b/Mage.Sets/src/mage/cards/s/SamitePilgrim.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Simown
*/
-public class SamitePilgrim extends CardImpl {
+public final class SamitePilgrim extends CardImpl {
public SamitePilgrim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SamiteSanctuary.java b/Mage.Sets/src/mage/cards/s/SamiteSanctuary.java
index 9f6fa57696c..447b9a8217c 100644
--- a/Mage.Sets/src/mage/cards/s/SamiteSanctuary.java
+++ b/Mage.Sets/src/mage/cards/s/SamiteSanctuary.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class SamiteSanctuary extends CardImpl {
+public final class SamiteSanctuary extends CardImpl {
public SamiteSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SamuraiEnforcers.java b/Mage.Sets/src/mage/cards/s/SamuraiEnforcers.java
index bb687732e0b..69047e053ca 100644
--- a/Mage.Sets/src/mage/cards/s/SamuraiEnforcers.java
+++ b/Mage.Sets/src/mage/cards/s/SamuraiEnforcers.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SamuraiEnforcers extends CardImpl {
+public final class SamuraiEnforcers extends CardImpl {
public SamuraiEnforcers (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SamuraiOfThePaleCurtain.java b/Mage.Sets/src/mage/cards/s/SamuraiOfThePaleCurtain.java
index d8278427749..461d11fed90 100644
--- a/Mage.Sets/src/mage/cards/s/SamuraiOfThePaleCurtain.java
+++ b/Mage.Sets/src/mage/cards/s/SamuraiOfThePaleCurtain.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX
*/
-public class SamuraiOfThePaleCurtain extends CardImpl {
+public final class SamuraiOfThePaleCurtain extends CardImpl {
public SamuraiOfThePaleCurtain (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SamutTheTested.java b/Mage.Sets/src/mage/cards/s/SamutTheTested.java
index 603a20ff480..d1eaa214c44 100644
--- a/Mage.Sets/src/mage/cards/s/SamutTheTested.java
+++ b/Mage.Sets/src/mage/cards/s/SamutTheTested.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Will
*/
-public class SamutTheTested extends CardImpl {
+public final class SamutTheTested extends CardImpl {
public SamutTheTested(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SamutVoiceOfDissent.java b/Mage.Sets/src/mage/cards/s/SamutVoiceOfDissent.java
index 3c651235561..7702d9d4bad 100644
--- a/Mage.Sets/src/mage/cards/s/SamutVoiceOfDissent.java
+++ b/Mage.Sets/src/mage/cards/s/SamutVoiceOfDissent.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class SamutVoiceOfDissent extends CardImpl {
+public final class SamutVoiceOfDissent extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Other creatures you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/s/SanctifiedCharge.java b/Mage.Sets/src/mage/cards/s/SanctifiedCharge.java
index e39932c0eb1..d85cbd639da 100644
--- a/Mage.Sets/src/mage/cards/s/SanctifiedCharge.java
+++ b/Mage.Sets/src/mage/cards/s/SanctifiedCharge.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class SanctifiedCharge extends CardImpl {
+public final class SanctifiedCharge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SanctifierOfSouls.java b/Mage.Sets/src/mage/cards/s/SanctifierOfSouls.java
index a85a6caba3f..d8e59a8c304 100644
--- a/Mage.Sets/src/mage/cards/s/SanctifierOfSouls.java
+++ b/Mage.Sets/src/mage/cards/s/SanctifierOfSouls.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class SanctifierOfSouls extends CardImpl {
+public final class SanctifierOfSouls extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/s/Sanctimony.java b/Mage.Sets/src/mage/cards/s/Sanctimony.java
index 4693b656834..2ad296f831c 100644
--- a/Mage.Sets/src/mage/cards/s/Sanctimony.java
+++ b/Mage.Sets/src/mage/cards/s/Sanctimony.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class Sanctimony extends CardImpl {
+public final class Sanctimony extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("an opponent taps a Mountain");
diff --git a/Mage.Sets/src/mage/cards/s/SanctuaryCat.java b/Mage.Sets/src/mage/cards/s/SanctuaryCat.java
index 6a0b5cfedbb..a2e1ff839da 100644
--- a/Mage.Sets/src/mage/cards/s/SanctuaryCat.java
+++ b/Mage.Sets/src/mage/cards/s/SanctuaryCat.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SanctuaryCat extends CardImpl {
+public final class SanctuaryCat extends CardImpl {
public SanctuaryCat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SanctumCustodian.java b/Mage.Sets/src/mage/cards/s/SanctumCustodian.java
index 01317eb1cb6..e621d269642 100644
--- a/Mage.Sets/src/mage/cards/s/SanctumCustodian.java
+++ b/Mage.Sets/src/mage/cards/s/SanctumCustodian.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class SanctumCustodian extends CardImpl {
+public final class SanctumCustodian extends CardImpl {
public SanctumCustodian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SanctumGargoyle.java b/Mage.Sets/src/mage/cards/s/SanctumGargoyle.java
index 56734a82ed2..fda9280dda2 100644
--- a/Mage.Sets/src/mage/cards/s/SanctumGargoyle.java
+++ b/Mage.Sets/src/mage/cards/s/SanctumGargoyle.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class SanctumGargoyle extends CardImpl {
+public final class SanctumGargoyle extends CardImpl {
public SanctumGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SanctumGuardian.java b/Mage.Sets/src/mage/cards/s/SanctumGuardian.java
index aa1e5199533..b120bf7e46c 100644
--- a/Mage.Sets/src/mage/cards/s/SanctumGuardian.java
+++ b/Mage.Sets/src/mage/cards/s/SanctumGuardian.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class SanctumGuardian extends CardImpl {
+public final class SanctumGuardian extends CardImpl {
public SanctumGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SanctumOfTheSun.java b/Mage.Sets/src/mage/cards/s/SanctumOfTheSun.java
index 98329365226..08ccbca826e 100644
--- a/Mage.Sets/src/mage/cards/s/SanctumOfTheSun.java
+++ b/Mage.Sets/src/mage/cards/s/SanctumOfTheSun.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SanctumOfTheSun extends CardImpl {
+public final class SanctumOfTheSun extends CardImpl {
public SanctumOfTheSun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/SanctumOfUgin.java b/Mage.Sets/src/mage/cards/s/SanctumOfUgin.java
index d62730f46e8..78e12cefa46 100644
--- a/Mage.Sets/src/mage/cards/s/SanctumOfUgin.java
+++ b/Mage.Sets/src/mage/cards/s/SanctumOfUgin.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author fireshoes
*/
-public class SanctumOfUgin extends CardImpl {
+public final class SanctumOfUgin extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("colorless creature card");
private static final FilterSpell filterSpells = new FilterSpell("colorless spell with converted mana cost 7 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/SanctumPlowbeast.java b/Mage.Sets/src/mage/cards/s/SanctumPlowbeast.java
index 46a64e0c6b8..a4ed49ef869 100644
--- a/Mage.Sets/src/mage/cards/s/SanctumPlowbeast.java
+++ b/Mage.Sets/src/mage/cards/s/SanctumPlowbeast.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SanctumPlowbeast extends CardImpl {
+public final class SanctumPlowbeast extends CardImpl {
public SanctumPlowbeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SanctumPrelate.java b/Mage.Sets/src/mage/cards/s/SanctumPrelate.java
index a8a494b1199..891c4410284 100644
--- a/Mage.Sets/src/mage/cards/s/SanctumPrelate.java
+++ b/Mage.Sets/src/mage/cards/s/SanctumPrelate.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author maxlebedev
*/
-public class SanctumPrelate extends CardImpl {
+public final class SanctumPrelate extends CardImpl {
public SanctumPrelate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SanctumSeeker.java b/Mage.Sets/src/mage/cards/s/SanctumSeeker.java
index cc1f8076e9b..57d28f5e3ca 100644
--- a/Mage.Sets/src/mage/cards/s/SanctumSeeker.java
+++ b/Mage.Sets/src/mage/cards/s/SanctumSeeker.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class SanctumSeeker extends CardImpl {
+public final class SanctumSeeker extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Vampire you control");
diff --git a/Mage.Sets/src/mage/cards/s/SanctumSpirit.java b/Mage.Sets/src/mage/cards/s/SanctumSpirit.java
index 9038ae9c843..4292cd13940 100644
--- a/Mage.Sets/src/mage/cards/s/SanctumSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/SanctumSpirit.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterHistoricCard;
*
* @author keelahnkhan
*/
-public class SanctumSpirit extends CardImpl {
+public final class SanctumSpirit extends CardImpl {
public SanctumSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SandSilos.java b/Mage.Sets/src/mage/cards/s/SandSilos.java
index 1cf41b1bbde..cdf12ae14f6 100644
--- a/Mage.Sets/src/mage/cards/s/SandSilos.java
+++ b/Mage.Sets/src/mage/cards/s/SandSilos.java
@@ -54,7 +54,7 @@ import mage.counters.CounterType;
*
* @author anonymous
*/
-public class SandSilos extends CardImpl {
+public final class SandSilos extends CardImpl {
public SandSilos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SandSquid.java b/Mage.Sets/src/mage/cards/s/SandSquid.java
index 0ab60a12b35..4961a9f7b39 100644
--- a/Mage.Sets/src/mage/cards/s/SandSquid.java
+++ b/Mage.Sets/src/mage/cards/s/SandSquid.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SandSquid extends CardImpl {
+public final class SandSquid extends CardImpl {
public SandSquid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SandStrangler.java b/Mage.Sets/src/mage/cards/s/SandStrangler.java
index dd771c5eadf..2542e140634 100644
--- a/Mage.Sets/src/mage/cards/s/SandStrangler.java
+++ b/Mage.Sets/src/mage/cards/s/SandStrangler.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class SandStrangler extends CardImpl {
+public final class SandStrangler extends CardImpl {
private static final FilterControlledPermanent filterDesertPermanent = new FilterControlledPermanent("Desert");
private static final FilterCard filterDesertCard = new FilterCard("Desert card");
diff --git a/Mage.Sets/src/mage/cards/s/SandTrooper.java b/Mage.Sets/src/mage/cards/s/SandTrooper.java
index a3c145e6db0..a83b19c82d7 100644
--- a/Mage.Sets/src/mage/cards/s/SandTrooper.java
+++ b/Mage.Sets/src/mage/cards/s/SandTrooper.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class SandTrooper extends CardImpl {
+public final class SandTrooper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SandalsOfAbdallah.java b/Mage.Sets/src/mage/cards/s/SandalsOfAbdallah.java
index 4df25d10ef9..11ff92ff938 100644
--- a/Mage.Sets/src/mage/cards/s/SandalsOfAbdallah.java
+++ b/Mage.Sets/src/mage/cards/s/SandalsOfAbdallah.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author MarcoMarin
*/
-public class SandalsOfAbdallah extends CardImpl {
+public final class SandalsOfAbdallah extends CardImpl {
public SandalsOfAbdallah(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SandbarCrocodile.java b/Mage.Sets/src/mage/cards/s/SandbarCrocodile.java
index ed05ab8a3f6..e682685e78b 100644
--- a/Mage.Sets/src/mage/cards/s/SandbarCrocodile.java
+++ b/Mage.Sets/src/mage/cards/s/SandbarCrocodile.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SandbarCrocodile extends CardImpl {
+public final class SandbarCrocodile extends CardImpl {
public SandbarCrocodile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SandbarMerfolk.java b/Mage.Sets/src/mage/cards/s/SandbarMerfolk.java
index 20ce7350aa5..82718dee76e 100644
--- a/Mage.Sets/src/mage/cards/s/SandbarMerfolk.java
+++ b/Mage.Sets/src/mage/cards/s/SandbarMerfolk.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SandbarMerfolk extends CardImpl {
+public final class SandbarMerfolk extends CardImpl {
public SandbarMerfolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SandbarSerpent.java b/Mage.Sets/src/mage/cards/s/SandbarSerpent.java
index 88f09ccc7ab..eba1bd29c6d 100644
--- a/Mage.Sets/src/mage/cards/s/SandbarSerpent.java
+++ b/Mage.Sets/src/mage/cards/s/SandbarSerpent.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SandbarSerpent extends CardImpl {
+public final class SandbarSerpent extends CardImpl {
public SandbarSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Sandblast.java b/Mage.Sets/src/mage/cards/s/Sandblast.java
index 7049092b682..bd54317505b 100644
--- a/Mage.Sets/src/mage/cards/s/Sandblast.java
+++ b/Mage.Sets/src/mage/cards/s/Sandblast.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author fireshoes
*/
-public class Sandblast extends CardImpl {
+public final class Sandblast extends CardImpl {
public Sandblast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SandcrafterMage.java b/Mage.Sets/src/mage/cards/s/SandcrafterMage.java
index 00be295b721..416e621e5a5 100644
--- a/Mage.Sets/src/mage/cards/s/SandcrafterMage.java
+++ b/Mage.Sets/src/mage/cards/s/SandcrafterMage.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SandcrafterMage extends CardImpl {
+public final class SandcrafterMage extends CardImpl {
public SandcrafterMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SandsOfDelirium.java b/Mage.Sets/src/mage/cards/s/SandsOfDelirium.java
index b6369377237..9a65ddcb881 100644
--- a/Mage.Sets/src/mage/cards/s/SandsOfDelirium.java
+++ b/Mage.Sets/src/mage/cards/s/SandsOfDelirium.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class SandsOfDelirium extends CardImpl {
+public final class SandsOfDelirium extends CardImpl {
public SandsOfDelirium(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SandsOfTime.java b/Mage.Sets/src/mage/cards/s/SandsOfTime.java
index d7ff9ad1dd5..2cf06b4a7b6 100644
--- a/Mage.Sets/src/mage/cards/s/SandsOfTime.java
+++ b/Mage.Sets/src/mage/cards/s/SandsOfTime.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class SandsOfTime extends CardImpl {
+public final class SandsOfTime extends CardImpl {
public SandsOfTime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/s/Sandskin.java b/Mage.Sets/src/mage/cards/s/Sandskin.java
index 2903abff030..202551ee75a 100644
--- a/Mage.Sets/src/mage/cards/s/Sandskin.java
+++ b/Mage.Sets/src/mage/cards/s/Sandskin.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Sandskin extends CardImpl {
+public final class Sandskin extends CardImpl {
public Sandskin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Sandsower.java b/Mage.Sets/src/mage/cards/s/Sandsower.java
index a705bb4c50b..ec0d7003166 100644
--- a/Mage.Sets/src/mage/cards/s/Sandsower.java
+++ b/Mage.Sets/src/mage/cards/s/Sandsower.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Sandsower extends CardImpl {
+public final class Sandsower extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/SandsteppeCitadel.java b/Mage.Sets/src/mage/cards/s/SandsteppeCitadel.java
index fad7fc7dfb5..6a5d787add2 100644
--- a/Mage.Sets/src/mage/cards/s/SandsteppeCitadel.java
+++ b/Mage.Sets/src/mage/cards/s/SandsteppeCitadel.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class SandsteppeCitadel extends CardImpl {
+public final class SandsteppeCitadel extends CardImpl {
public SandsteppeCitadel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SandsteppeMastodon.java b/Mage.Sets/src/mage/cards/s/SandsteppeMastodon.java
index 56ab505d3a6..6a1b767b31a 100644
--- a/Mage.Sets/src/mage/cards/s/SandsteppeMastodon.java
+++ b/Mage.Sets/src/mage/cards/s/SandsteppeMastodon.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SandsteppeMastodon extends CardImpl {
+public final class SandsteppeMastodon extends CardImpl {
public SandsteppeMastodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SandsteppeOutcast.java b/Mage.Sets/src/mage/cards/s/SandsteppeOutcast.java
index 14921b1073c..1ea24b7b8b5 100644
--- a/Mage.Sets/src/mage/cards/s/SandsteppeOutcast.java
+++ b/Mage.Sets/src/mage/cards/s/SandsteppeOutcast.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author emerald000
*/
-public class SandsteppeOutcast extends CardImpl {
+public final class SandsteppeOutcast extends CardImpl {
public SandsteppeOutcast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SandsteppeScavenger.java b/Mage.Sets/src/mage/cards/s/SandsteppeScavenger.java
index b4cc643ec95..0f4d2da2f82 100644
--- a/Mage.Sets/src/mage/cards/s/SandsteppeScavenger.java
+++ b/Mage.Sets/src/mage/cards/s/SandsteppeScavenger.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SandsteppeScavenger extends CardImpl {
+public final class SandsteppeScavenger extends CardImpl {
public SandsteppeScavenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SandstoneBridge.java b/Mage.Sets/src/mage/cards/s/SandstoneBridge.java
index fd47835b793..a387c299bf0 100644
--- a/Mage.Sets/src/mage/cards/s/SandstoneBridge.java
+++ b/Mage.Sets/src/mage/cards/s/SandstoneBridge.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SandstoneBridge extends CardImpl {
+public final class SandstoneBridge extends CardImpl {
public SandstoneBridge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SandstoneDeadfall.java b/Mage.Sets/src/mage/cards/s/SandstoneDeadfall.java
index 4d2c44e863f..4ede90084ed 100644
--- a/Mage.Sets/src/mage/cards/s/SandstoneDeadfall.java
+++ b/Mage.Sets/src/mage/cards/s/SandstoneDeadfall.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SandstoneDeadfall extends CardImpl {
+public final class SandstoneDeadfall extends CardImpl {
public SandstoneDeadfall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SandstoneNeedle.java b/Mage.Sets/src/mage/cards/s/SandstoneNeedle.java
index 36b07990c46..c5ea9336048 100644
--- a/Mage.Sets/src/mage/cards/s/SandstoneNeedle.java
+++ b/Mage.Sets/src/mage/cards/s/SandstoneNeedle.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class SandstoneNeedle extends CardImpl {
+public final class SandstoneNeedle extends CardImpl {
public SandstoneNeedle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SandstoneOracle.java b/Mage.Sets/src/mage/cards/s/SandstoneOracle.java
index ce3bd747747..bfa6fdd393d 100644
--- a/Mage.Sets/src/mage/cards/s/SandstoneOracle.java
+++ b/Mage.Sets/src/mage/cards/s/SandstoneOracle.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author emerald000
*/
-public class SandstoneOracle extends CardImpl {
+public final class SandstoneOracle extends CardImpl {
public SandstoneOracle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/s/SandstoneWarrior.java b/Mage.Sets/src/mage/cards/s/SandstoneWarrior.java
index fb1ab399075..0df69362171 100644
--- a/Mage.Sets/src/mage/cards/s/SandstoneWarrior.java
+++ b/Mage.Sets/src/mage/cards/s/SandstoneWarrior.java
@@ -41,7 +41,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class SandstoneWarrior extends CardImpl {
+public final class SandstoneWarrior extends CardImpl {
public SandstoneWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Sandstorm.java b/Mage.Sets/src/mage/cards/s/Sandstorm.java
index 780efca4707..4b2c3aa96f5 100644
--- a/Mage.Sets/src/mage/cards/s/Sandstorm.java
+++ b/Mage.Sets/src/mage/cards/s/Sandstorm.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author michael.napoleon@gmail.com
*/
-public class Sandstorm extends CardImpl {
+public final class Sandstorm extends CardImpl {
public Sandstorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SandstormCharger.java b/Mage.Sets/src/mage/cards/s/SandstormCharger.java
index 6bc22b2a0ff..5c91b2632c9 100644
--- a/Mage.Sets/src/mage/cards/s/SandstormCharger.java
+++ b/Mage.Sets/src/mage/cards/s/SandstormCharger.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SandstormCharger extends CardImpl {
+public final class SandstormCharger extends CardImpl {
public SandstormCharger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SandstormEidolon.java b/Mage.Sets/src/mage/cards/s/SandstormEidolon.java
index 8cd03085b06..528163687d6 100644
--- a/Mage.Sets/src/mage/cards/s/SandstormEidolon.java
+++ b/Mage.Sets/src/mage/cards/s/SandstormEidolon.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SandstormEidolon extends CardImpl {
+public final class SandstormEidolon extends CardImpl {
public SandstormEidolon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SandwurmConvergence.java b/Mage.Sets/src/mage/cards/s/SandwurmConvergence.java
index 57c5ddd1336..4cc8a261d2c 100644
--- a/Mage.Sets/src/mage/cards/s/SandwurmConvergence.java
+++ b/Mage.Sets/src/mage/cards/s/SandwurmConvergence.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.WurmToken3;
*
* @author fireshoes
*/
-public class SandwurmConvergence extends CardImpl {
+public final class SandwurmConvergence extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/s/SangriteBacklash.java b/Mage.Sets/src/mage/cards/s/SangriteBacklash.java
index 25eb7fded8b..1917dbb5190 100644
--- a/Mage.Sets/src/mage/cards/s/SangriteBacklash.java
+++ b/Mage.Sets/src/mage/cards/s/SangriteBacklash.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class SangriteBacklash extends CardImpl {
+public final class SangriteBacklash extends CardImpl {
public SangriteBacklash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B/G}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SangriteSurge.java b/Mage.Sets/src/mage/cards/s/SangriteSurge.java
index e2e148939b8..595c27416a2 100644
--- a/Mage.Sets/src/mage/cards/s/SangriteSurge.java
+++ b/Mage.Sets/src/mage/cards/s/SangriteSurge.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SangriteSurge extends CardImpl {
+public final class SangriteSurge extends CardImpl {
public SangriteSurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Sangromancer.java b/Mage.Sets/src/mage/cards/s/Sangromancer.java
index e91cec26c60..ecbff11e20b 100644
--- a/Mage.Sets/src/mage/cards/s/Sangromancer.java
+++ b/Mage.Sets/src/mage/cards/s/Sangromancer.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class Sangromancer extends CardImpl {
+public final class Sangromancer extends CardImpl {
public Sangromancer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Sangrophage.java b/Mage.Sets/src/mage/cards/s/Sangrophage.java
index 54f4d81d6d2..d3ad1366cce 100644
--- a/Mage.Sets/src/mage/cards/s/Sangrophage.java
+++ b/Mage.Sets/src/mage/cards/s/Sangrophage.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class Sangrophage extends CardImpl {
+public final class Sangrophage extends CardImpl {
public Sangrophage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Sanguimancy.java b/Mage.Sets/src/mage/cards/s/Sanguimancy.java
index 830c45e7fea..e6617c9bdd0 100644
--- a/Mage.Sets/src/mage/cards/s/Sanguimancy.java
+++ b/Mage.Sets/src/mage/cards/s/Sanguimancy.java
@@ -42,7 +42,7 @@ import mage.constants.ColoredManaSymbol;
*
* @author LevelX2
*/
-public class Sanguimancy extends CardImpl {
+public final class Sanguimancy extends CardImpl {
public Sanguimancy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SanguinaryMage.java b/Mage.Sets/src/mage/cards/s/SanguinaryMage.java
index 6ed1ebb2e09..a8195419fd5 100644
--- a/Mage.Sets/src/mage/cards/s/SanguinaryMage.java
+++ b/Mage.Sets/src/mage/cards/s/SanguinaryMage.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SanguinaryMage extends CardImpl {
+public final class SanguinaryMage extends CardImpl {
public SanguinaryMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SanguineBond.java b/Mage.Sets/src/mage/cards/s/SanguineBond.java
index 18894b95355..4d1fb51d4e6 100644
--- a/Mage.Sets/src/mage/cards/s/SanguineBond.java
+++ b/Mage.Sets/src/mage/cards/s/SanguineBond.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author North
*/
-public class SanguineBond extends CardImpl {
+public final class SanguineBond extends CardImpl {
public SanguineBond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SanguineGlorifier.java b/Mage.Sets/src/mage/cards/s/SanguineGlorifier.java
index 4f3297b8070..383aed88d84 100644
--- a/Mage.Sets/src/mage/cards/s/SanguineGlorifier.java
+++ b/Mage.Sets/src/mage/cards/s/SanguineGlorifier.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class SanguineGlorifier extends CardImpl {
+public final class SanguineGlorifier extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another target Vampire you control");
diff --git a/Mage.Sets/src/mage/cards/s/SanguineGuard.java b/Mage.Sets/src/mage/cards/s/SanguineGuard.java
index b146dcf2f1a..07c48b52290 100644
--- a/Mage.Sets/src/mage/cards/s/SanguineGuard.java
+++ b/Mage.Sets/src/mage/cards/s/SanguineGuard.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class SanguineGuard extends CardImpl {
+public final class SanguineGuard extends CardImpl {
public SanguineGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SanguinePraetor.java b/Mage.Sets/src/mage/cards/s/SanguinePraetor.java
index 1e5c0d1bee6..8c40660fb24 100644
--- a/Mage.Sets/src/mage/cards/s/SanguinePraetor.java
+++ b/Mage.Sets/src/mage/cards/s/SanguinePraetor.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Pete Rossi
*/
-public class SanguinePraetor extends CardImpl {
+public final class SanguinePraetor extends CardImpl {
public SanguinePraetor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SanguineSacrament.java b/Mage.Sets/src/mage/cards/s/SanguineSacrament.java
index ccf88fce75b..44176d4a194 100644
--- a/Mage.Sets/src/mage/cards/s/SanguineSacrament.java
+++ b/Mage.Sets/src/mage/cards/s/SanguineSacrament.java
@@ -42,7 +42,7 @@ import mage.game.Game;
*
* @author spjspj
*/
-public class SanguineSacrament extends CardImpl {
+public final class SanguineSacrament extends CardImpl {
public SanguineSacrament(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SanitariumSkeleton.java b/Mage.Sets/src/mage/cards/s/SanitariumSkeleton.java
index ccd8b4ac7a8..6f0e3528942 100644
--- a/Mage.Sets/src/mage/cards/s/SanitariumSkeleton.java
+++ b/Mage.Sets/src/mage/cards/s/SanitariumSkeleton.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SanitariumSkeleton extends CardImpl {
+public final class SanitariumSkeleton extends CardImpl {
public SanitariumSkeleton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SanityGnawers.java b/Mage.Sets/src/mage/cards/s/SanityGnawers.java
index a359cd779a4..62b14c76690 100644
--- a/Mage.Sets/src/mage/cards/s/SanityGnawers.java
+++ b/Mage.Sets/src/mage/cards/s/SanityGnawers.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class SanityGnawers extends CardImpl {
+public final class SanityGnawers extends CardImpl {
public SanityGnawers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SanityGrinding.java b/Mage.Sets/src/mage/cards/s/SanityGrinding.java
index 4d63c274487..dc89e080542 100644
--- a/Mage.Sets/src/mage/cards/s/SanityGrinding.java
+++ b/Mage.Sets/src/mage/cards/s/SanityGrinding.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
* @author jeffwadsworth
*
*/
-public class SanityGrinding extends CardImpl {
+public final class SanityGrinding extends CardImpl {
public SanityGrinding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SaplingOfColfenor.java b/Mage.Sets/src/mage/cards/s/SaplingOfColfenor.java
index e0e3f71d8bb..cc78e252dca 100644
--- a/Mage.Sets/src/mage/cards/s/SaplingOfColfenor.java
+++ b/Mage.Sets/src/mage/cards/s/SaplingOfColfenor.java
@@ -48,7 +48,7 @@ import mage.players.Player;
* @author jeffwadsworth
*
*/
-public class SaplingOfColfenor extends CardImpl {
+public final class SaplingOfColfenor extends CardImpl {
public SaplingOfColfenor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B/G}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/s/SapphireCharm.java b/Mage.Sets/src/mage/cards/s/SapphireCharm.java
index f8c63d63ff4..c9dccf5bbfa 100644
--- a/Mage.Sets/src/mage/cards/s/SapphireCharm.java
+++ b/Mage.Sets/src/mage/cards/s/SapphireCharm.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SapphireCharm extends CardImpl {
+public final class SapphireCharm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SapphireDrake.java b/Mage.Sets/src/mage/cards/s/SapphireDrake.java
index f2d2bf97f60..a20cc2e0eee 100644
--- a/Mage.Sets/src/mage/cards/s/SapphireDrake.java
+++ b/Mage.Sets/src/mage/cards/s/SapphireDrake.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author jeffwadsworth
*/
-public class SapphireDrake extends CardImpl {
+public final class SapphireDrake extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SapphireLeech.java b/Mage.Sets/src/mage/cards/s/SapphireLeech.java
index a3171043f9e..e3f689d6851 100644
--- a/Mage.Sets/src/mage/cards/s/SapphireLeech.java
+++ b/Mage.Sets/src/mage/cards/s/SapphireLeech.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class SapphireLeech extends CardImpl {
+public final class SapphireLeech extends CardImpl {
private static final FilterCard filter = new FilterCard("Blue spells");
diff --git a/Mage.Sets/src/mage/cards/s/SapphireMedallion.java b/Mage.Sets/src/mage/cards/s/SapphireMedallion.java
index bf8f76962aa..edb9f38de31 100644
--- a/Mage.Sets/src/mage/cards/s/SapphireMedallion.java
+++ b/Mage.Sets/src/mage/cards/s/SapphireMedallion.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author noxx
*/
-public class SapphireMedallion extends CardImpl {
+public final class SapphireMedallion extends CardImpl {
private static final FilterCard filter = new FilterCard("Blue spells");
diff --git a/Mage.Sets/src/mage/cards/s/SaprazzanBailiff.java b/Mage.Sets/src/mage/cards/s/SaprazzanBailiff.java
index 9bcdece7c03..bd9b6e4dac6 100644
--- a/Mage.Sets/src/mage/cards/s/SaprazzanBailiff.java
+++ b/Mage.Sets/src/mage/cards/s/SaprazzanBailiff.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class SaprazzanBailiff extends CardImpl {
+public final class SaprazzanBailiff extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact and enchantment cards");
diff --git a/Mage.Sets/src/mage/cards/s/SaprazzanBreaker.java b/Mage.Sets/src/mage/cards/s/SaprazzanBreaker.java
index b79f49ae906..40d16c0a762 100644
--- a/Mage.Sets/src/mage/cards/s/SaprazzanBreaker.java
+++ b/Mage.Sets/src/mage/cards/s/SaprazzanBreaker.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class SaprazzanBreaker extends CardImpl {
+public final class SaprazzanBreaker extends CardImpl {
public SaprazzanBreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SaprazzanCove.java b/Mage.Sets/src/mage/cards/s/SaprazzanCove.java
index 3bec0f0df8a..b40788cb0cc 100644
--- a/Mage.Sets/src/mage/cards/s/SaprazzanCove.java
+++ b/Mage.Sets/src/mage/cards/s/SaprazzanCove.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author anonymous
*/
-public class SaprazzanCove extends CardImpl {
+public final class SaprazzanCove extends CardImpl {
public SaprazzanCove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SaprazzanHeir.java b/Mage.Sets/src/mage/cards/s/SaprazzanHeir.java
index c8dec64f338..85bbe5d9ee6 100644
--- a/Mage.Sets/src/mage/cards/s/SaprazzanHeir.java
+++ b/Mage.Sets/src/mage/cards/s/SaprazzanHeir.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SaprazzanHeir extends CardImpl {
+public final class SaprazzanHeir extends CardImpl {
public SaprazzanHeir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SaprazzanLegate.java b/Mage.Sets/src/mage/cards/s/SaprazzanLegate.java
index c69b127da26..7b1c6d42c35 100644
--- a/Mage.Sets/src/mage/cards/s/SaprazzanLegate.java
+++ b/Mage.Sets/src/mage/cards/s/SaprazzanLegate.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class SaprazzanLegate extends CardImpl {
+public final class SaprazzanLegate extends CardImpl {
private static final FilterPermanent filterMountain = new FilterPermanent();
private static final FilterPermanent filterIsland = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SaprazzanOutrigger.java b/Mage.Sets/src/mage/cards/s/SaprazzanOutrigger.java
index 890b834dbf0..351476deb6a 100644
--- a/Mage.Sets/src/mage/cards/s/SaprazzanOutrigger.java
+++ b/Mage.Sets/src/mage/cards/s/SaprazzanOutrigger.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class SaprazzanOutrigger extends CardImpl {
+public final class SaprazzanOutrigger extends CardImpl {
public SaprazzanOutrigger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SaprazzanRaider.java b/Mage.Sets/src/mage/cards/s/SaprazzanRaider.java
index e9188da28f2..4e2a3c5d76b 100644
--- a/Mage.Sets/src/mage/cards/s/SaprazzanRaider.java
+++ b/Mage.Sets/src/mage/cards/s/SaprazzanRaider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SaprazzanRaider extends CardImpl {
+public final class SaprazzanRaider extends CardImpl {
public SaprazzanRaider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SaprazzanSkerry.java b/Mage.Sets/src/mage/cards/s/SaprazzanSkerry.java
index 06866661cc8..83a1289db0b 100644
--- a/Mage.Sets/src/mage/cards/s/SaprazzanSkerry.java
+++ b/Mage.Sets/src/mage/cards/s/SaprazzanSkerry.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class SaprazzanSkerry extends CardImpl {
+public final class SaprazzanSkerry extends CardImpl {
public SaprazzanSkerry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SaprolingBurst.java b/Mage.Sets/src/mage/cards/s/SaprolingBurst.java
index 8615b09cb6d..ae8e3f1962f 100644
--- a/Mage.Sets/src/mage/cards/s/SaprolingBurst.java
+++ b/Mage.Sets/src/mage/cards/s/SaprolingBurst.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class SaprolingBurst extends CardImpl {
+public final class SaprolingBurst extends CardImpl {
public SaprolingBurst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SaprolingCluster.java b/Mage.Sets/src/mage/cards/s/SaprolingCluster.java
index 5a94d9e01c2..b5d4ceb3de9 100644
--- a/Mage.Sets/src/mage/cards/s/SaprolingCluster.java
+++ b/Mage.Sets/src/mage/cards/s/SaprolingCluster.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author fireshoes
*/
-public class SaprolingCluster extends CardImpl {
+public final class SaprolingCluster extends CardImpl {
public SaprolingCluster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SaprolingMigration.java b/Mage.Sets/src/mage/cards/s/SaprolingMigration.java
index a5ba30ea7f7..10559968509 100644
--- a/Mage.Sets/src/mage/cards/s/SaprolingMigration.java
+++ b/Mage.Sets/src/mage/cards/s/SaprolingMigration.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author TheElk801
*/
-public class SaprolingMigration extends CardImpl {
+public final class SaprolingMigration extends CardImpl {
public SaprolingMigration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SaprolingSymbiosis.java b/Mage.Sets/src/mage/cards/s/SaprolingSymbiosis.java
index e15ba49ae23..d54e4478b76 100644
--- a/Mage.Sets/src/mage/cards/s/SaprolingSymbiosis.java
+++ b/Mage.Sets/src/mage/cards/s/SaprolingSymbiosis.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.SaprolingToken;
* @author LoneFox
*
*/
-public class SaprolingSymbiosis extends CardImpl {
+public final class SaprolingSymbiosis extends CardImpl {
public SaprolingSymbiosis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SapseepForest.java b/Mage.Sets/src/mage/cards/s/SapseepForest.java
index eae08506559..77c89110932 100644
--- a/Mage.Sets/src/mage/cards/s/SapseepForest.java
+++ b/Mage.Sets/src/mage/cards/s/SapseepForest.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class SapseepForest extends CardImpl {
+public final class SapseepForest extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("if you control two or more green permanents");
diff --git a/Mage.Sets/src/mage/cards/s/Sarcatog.java b/Mage.Sets/src/mage/cards/s/Sarcatog.java
index 1015ad23115..015d1dabe1f 100644
--- a/Mage.Sets/src/mage/cards/s/Sarcatog.java
+++ b/Mage.Sets/src/mage/cards/s/Sarcatog.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class Sarcatog extends CardImpl {
+public final class Sarcatog extends CardImpl {
public Sarcatog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Sarcomancy.java b/Mage.Sets/src/mage/cards/s/Sarcomancy.java
index 142bde6a687..8c33d2f738d 100644
--- a/Mage.Sets/src/mage/cards/s/Sarcomancy.java
+++ b/Mage.Sets/src/mage/cards/s/Sarcomancy.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author LevelX2
*/
-public class Sarcomancy extends CardImpl {
+public final class Sarcomancy extends CardImpl {
public Sarcomancy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SarcomiteMyr.java b/Mage.Sets/src/mage/cards/s/SarcomiteMyr.java
index 3f8b2c2d73a..2b8720fd332 100644
--- a/Mage.Sets/src/mage/cards/s/SarcomiteMyr.java
+++ b/Mage.Sets/src/mage/cards/s/SarcomiteMyr.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SarcomiteMyr extends CardImpl {
+public final class SarcomiteMyr extends CardImpl {
public SarcomiteMyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SarkhanTheDragonspeaker.java b/Mage.Sets/src/mage/cards/s/SarkhanTheDragonspeaker.java
index 4404763e28b..18259bbd153 100644
--- a/Mage.Sets/src/mage/cards/s/SarkhanTheDragonspeaker.java
+++ b/Mage.Sets/src/mage/cards/s/SarkhanTheDragonspeaker.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class SarkhanTheDragonspeaker extends CardImpl {
+public final class SarkhanTheDragonspeaker extends CardImpl {
public SarkhanTheDragonspeaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java b/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java
index 357fb429492..70b34186f75 100644
--- a/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java
+++ b/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author maurer.it_at_gmail.com
*/
-public class SarkhanTheMad extends CardImpl {
+public final class SarkhanTheMad extends CardImpl {
public SarkhanTheMad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java b/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java
index c7b9ecdc078..67ad5e90a44 100644
--- a/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java
+++ b/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author JRHerlehy
*/
-public class SarkhanUnbroken extends CardImpl {
+public final class SarkhanUnbroken extends CardImpl {
private static final FilterCard dragonFilter = new FilterCard("Dragon creature cards");
diff --git a/Mage.Sets/src/mage/cards/s/SarkhanVol.java b/Mage.Sets/src/mage/cards/s/SarkhanVol.java
index 9ef2f2c9d35..073d619be09 100644
--- a/Mage.Sets/src/mage/cards/s/SarkhanVol.java
+++ b/Mage.Sets/src/mage/cards/s/SarkhanVol.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SarkhanVol extends CardImpl {
+public final class SarkhanVol extends CardImpl {
private static DragonToken dragonToken = new DragonToken();
diff --git a/Mage.Sets/src/mage/cards/s/SarkhansRage.java b/Mage.Sets/src/mage/cards/s/SarkhansRage.java
index bf0b37f13d1..da298e015a8 100644
--- a/Mage.Sets/src/mage/cards/s/SarkhansRage.java
+++ b/Mage.Sets/src/mage/cards/s/SarkhansRage.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class SarkhansRage extends CardImpl {
+public final class SarkhansRage extends CardImpl {
public SarkhansRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SarkhansTriumph.java b/Mage.Sets/src/mage/cards/s/SarkhansTriumph.java
index 9fa8b5db7a9..53b89afef90 100644
--- a/Mage.Sets/src/mage/cards/s/SarkhansTriumph.java
+++ b/Mage.Sets/src/mage/cards/s/SarkhansTriumph.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class SarkhansTriumph extends CardImpl {
+public final class SarkhansTriumph extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("Dragon creature card");
diff --git a/Mage.Sets/src/mage/cards/s/SarlaccPit.java b/Mage.Sets/src/mage/cards/s/SarlaccPit.java
index e84f9d8b7e6..885ad4b0bb2 100644
--- a/Mage.Sets/src/mage/cards/s/SarlaccPit.java
+++ b/Mage.Sets/src/mage/cards/s/SarlaccPit.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Styxo
*/
-public class SarlaccPit extends CardImpl {
+public final class SarlaccPit extends CardImpl {
public SarlaccPit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SarpadianEmpiresVolVii.java b/Mage.Sets/src/mage/cards/s/SarpadianEmpiresVolVii.java
index 8c6222e09bf..1a8f3c78539 100644
--- a/Mage.Sets/src/mage/cards/s/SarpadianEmpiresVolVii.java
+++ b/Mage.Sets/src/mage/cards/s/SarpadianEmpiresVolVii.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LoneFox
*/
-public class SarpadianEmpiresVolVii extends CardImpl {
+public final class SarpadianEmpiresVolVii extends CardImpl {
public SarpadianEmpiresVolVii(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java b/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java
index e0ae99ff821..031db9c4916 100644
--- a/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java
+++ b/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
-public class SaruliGatekeepers extends CardImpl {
+public final class SaruliGatekeepers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/s/SasayaOrochiAscendant.java b/Mage.Sets/src/mage/cards/s/SasayaOrochiAscendant.java
index 87ebdf1e940..5da1c237bdd 100644
--- a/Mage.Sets/src/mage/cards/s/SasayaOrochiAscendant.java
+++ b/Mage.Sets/src/mage/cards/s/SasayaOrochiAscendant.java
@@ -58,7 +58,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SasayaOrochiAscendant extends CardImpl {
+public final class SasayaOrochiAscendant extends CardImpl {
public SasayaOrochiAscendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SaskiaTheUnyielding.java b/Mage.Sets/src/mage/cards/s/SaskiaTheUnyielding.java
index 6a247fc966d..08c46d87750 100644
--- a/Mage.Sets/src/mage/cards/s/SaskiaTheUnyielding.java
+++ b/Mage.Sets/src/mage/cards/s/SaskiaTheUnyielding.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SaskiaTheUnyielding extends CardImpl {
+public final class SaskiaTheUnyielding extends CardImpl {
public SaskiaTheUnyielding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SatyrFiredancer.java b/Mage.Sets/src/mage/cards/s/SatyrFiredancer.java
index 0c97e6f7f1d..ee2c4f04d8a 100644
--- a/Mage.Sets/src/mage/cards/s/SatyrFiredancer.java
+++ b/Mage.Sets/src/mage/cards/s/SatyrFiredancer.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SatyrFiredancer extends CardImpl {
+public final class SatyrFiredancer extends CardImpl {
public SatyrFiredancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SatyrGrovedancer.java b/Mage.Sets/src/mage/cards/s/SatyrGrovedancer.java
index 557d6b5bd2f..1a35f9787cd 100644
--- a/Mage.Sets/src/mage/cards/s/SatyrGrovedancer.java
+++ b/Mage.Sets/src/mage/cards/s/SatyrGrovedancer.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SatyrGrovedancer extends CardImpl {
+public final class SatyrGrovedancer extends CardImpl {
public SatyrGrovedancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SatyrHedonist.java b/Mage.Sets/src/mage/cards/s/SatyrHedonist.java
index 42291a7b174..d9485b72693 100644
--- a/Mage.Sets/src/mage/cards/s/SatyrHedonist.java
+++ b/Mage.Sets/src/mage/cards/s/SatyrHedonist.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SatyrHedonist extends CardImpl {
+public final class SatyrHedonist extends CardImpl {
public SatyrHedonist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SatyrHoplite.java b/Mage.Sets/src/mage/cards/s/SatyrHoplite.java
index 0d4fcf5fc17..dee5464debd 100644
--- a/Mage.Sets/src/mage/cards/s/SatyrHoplite.java
+++ b/Mage.Sets/src/mage/cards/s/SatyrHoplite.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class SatyrHoplite extends CardImpl {
+public final class SatyrHoplite extends CardImpl {
public SatyrHoplite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SatyrNyxSmith.java b/Mage.Sets/src/mage/cards/s/SatyrNyxSmith.java
index 7f8dbcc8792..1d865049b7d 100644
--- a/Mage.Sets/src/mage/cards/s/SatyrNyxSmith.java
+++ b/Mage.Sets/src/mage/cards/s/SatyrNyxSmith.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SatyrNyxSmithElementalToken;
*
* @author LevelX2
*/
-public class SatyrNyxSmith extends CardImpl {
+public final class SatyrNyxSmith extends CardImpl {
public SatyrNyxSmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SatyrPiper.java b/Mage.Sets/src/mage/cards/s/SatyrPiper.java
index 82a05999160..87e999393e4 100644
--- a/Mage.Sets/src/mage/cards/s/SatyrPiper.java
+++ b/Mage.Sets/src/mage/cards/s/SatyrPiper.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SatyrPiper extends CardImpl {
+public final class SatyrPiper extends CardImpl {
public SatyrPiper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SatyrRambler.java b/Mage.Sets/src/mage/cards/s/SatyrRambler.java
index 40fffbe28df..942cf155c1b 100644
--- a/Mage.Sets/src/mage/cards/s/SatyrRambler.java
+++ b/Mage.Sets/src/mage/cards/s/SatyrRambler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SatyrRambler extends CardImpl {
+public final class SatyrRambler extends CardImpl {
public SatyrRambler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SatyrWayfinder.java b/Mage.Sets/src/mage/cards/s/SatyrWayfinder.java
index 79c1bf10e54..39fd4a95a7f 100644
--- a/Mage.Sets/src/mage/cards/s/SatyrWayfinder.java
+++ b/Mage.Sets/src/mage/cards/s/SatyrWayfinder.java
@@ -51,7 +51,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class SatyrWayfinder extends CardImpl {
+public final class SatyrWayfinder extends CardImpl {
public SatyrWayfinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SavaenElves.java b/Mage.Sets/src/mage/cards/s/SavaenElves.java
index 642beadad8c..2d8ad7d7b1e 100644
--- a/Mage.Sets/src/mage/cards/s/SavaenElves.java
+++ b/Mage.Sets/src/mage/cards/s/SavaenElves.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class SavaenElves extends CardImpl {
+public final class SavaenElves extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Auras attached to a land");
diff --git a/Mage.Sets/src/mage/cards/s/SavageAlliance.java b/Mage.Sets/src/mage/cards/s/SavageAlliance.java
index 3e8b5cb4783..f541f51f8e6 100644
--- a/Mage.Sets/src/mage/cards/s/SavageAlliance.java
+++ b/Mage.Sets/src/mage/cards/s/SavageAlliance.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SavageAlliance extends CardImpl {
+public final class SavageAlliance extends CardImpl {
private static final FilterPlayer filterPlayer = new FilterPlayer("player whose creatures gain trample");
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creature to deal 2 damage to");
diff --git a/Mage.Sets/src/mage/cards/s/SavageBeating.java b/Mage.Sets/src/mage/cards/s/SavageBeating.java
index 39135259ee6..cc13a24176b 100644
--- a/Mage.Sets/src/mage/cards/s/SavageBeating.java
+++ b/Mage.Sets/src/mage/cards/s/SavageBeating.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author emerald000
*/
-public class SavageBeating extends CardImpl {
+public final class SavageBeating extends CardImpl {
public SavageBeating(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SavageConception.java b/Mage.Sets/src/mage/cards/s/SavageConception.java
index b4bd054604f..e3500819b36 100644
--- a/Mage.Sets/src/mage/cards/s/SavageConception.java
+++ b/Mage.Sets/src/mage/cards/s/SavageConception.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.BeastToken;
*
* @author Plopman
*/
-public class SavageConception extends CardImpl {
+public final class SavageConception extends CardImpl {
public SavageConception(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SavageFirecat.java b/Mage.Sets/src/mage/cards/s/SavageFirecat.java
index 2a0d110a819..551521b2cb7 100644
--- a/Mage.Sets/src/mage/cards/s/SavageFirecat.java
+++ b/Mage.Sets/src/mage/cards/s/SavageFirecat.java
@@ -49,7 +49,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author cbt33
*/
-public class SavageFirecat extends CardImpl {
+public final class SavageFirecat extends CardImpl {
public SavageFirecat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SavageGorilla.java b/Mage.Sets/src/mage/cards/s/SavageGorilla.java
index 6b6da389625..04694a9da1a 100644
--- a/Mage.Sets/src/mage/cards/s/SavageGorilla.java
+++ b/Mage.Sets/src/mage/cards/s/SavageGorilla.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SavageGorilla extends CardImpl {
+public final class SavageGorilla extends CardImpl {
public SavageGorilla(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SavageHunger.java b/Mage.Sets/src/mage/cards/s/SavageHunger.java
index 5045dc32509..05c3227d0af 100644
--- a/Mage.Sets/src/mage/cards/s/SavageHunger.java
+++ b/Mage.Sets/src/mage/cards/s/SavageHunger.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SavageHunger extends CardImpl {
+public final class SavageHunger extends CardImpl {
public SavageHunger (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SavageKnuckleblade.java b/Mage.Sets/src/mage/cards/s/SavageKnuckleblade.java
index 11bffc1c522..a14a2e3ecfc 100644
--- a/Mage.Sets/src/mage/cards/s/SavageKnuckleblade.java
+++ b/Mage.Sets/src/mage/cards/s/SavageKnuckleblade.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SavageKnuckleblade extends CardImpl {
+public final class SavageKnuckleblade extends CardImpl {
public SavageKnuckleblade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SavageLands.java b/Mage.Sets/src/mage/cards/s/SavageLands.java
index 0c1e393ebca..1621df598f0 100644
--- a/Mage.Sets/src/mage/cards/s/SavageLands.java
+++ b/Mage.Sets/src/mage/cards/s/SavageLands.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SavageLands extends CardImpl {
+public final class SavageLands extends CardImpl {
public SavageLands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/s/SavageOffensive.java b/Mage.Sets/src/mage/cards/s/SavageOffensive.java
index 24744781b36..b1728e2761f 100644
--- a/Mage.Sets/src/mage/cards/s/SavageOffensive.java
+++ b/Mage.Sets/src/mage/cards/s/SavageOffensive.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class SavageOffensive extends CardImpl {
+public final class SavageOffensive extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/SavagePunch.java b/Mage.Sets/src/mage/cards/s/SavagePunch.java
index 434f628add6..3ac060298bc 100644
--- a/Mage.Sets/src/mage/cards/s/SavagePunch.java
+++ b/Mage.Sets/src/mage/cards/s/SavagePunch.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SavagePunch extends CardImpl {
+public final class SavagePunch extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/s/SavageSilhouette.java b/Mage.Sets/src/mage/cards/s/SavageSilhouette.java
index 1217dfcb60a..3a22a6cda0d 100644
--- a/Mage.Sets/src/mage/cards/s/SavageSilhouette.java
+++ b/Mage.Sets/src/mage/cards/s/SavageSilhouette.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SavageSilhouette extends CardImpl {
+public final class SavageSilhouette extends CardImpl {
public SavageSilhouette(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SavageStomp.java b/Mage.Sets/src/mage/cards/s/SavageStomp.java
index 50890212100..6932790bc7f 100644
--- a/Mage.Sets/src/mage/cards/s/SavageStomp.java
+++ b/Mage.Sets/src/mage/cards/s/SavageStomp.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class SavageStomp extends CardImpl {
+public final class SavageStomp extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/s/SavageSummoning.java b/Mage.Sets/src/mage/cards/s/SavageSummoning.java
index e4bc8585389..aff04c7f088 100644
--- a/Mage.Sets/src/mage/cards/s/SavageSummoning.java
+++ b/Mage.Sets/src/mage/cards/s/SavageSummoning.java
@@ -54,7 +54,7 @@ import java.util.Map.Entry;
*
* @author LevelX2
*/
-public class SavageSummoning extends CardImpl {
+public final class SavageSummoning extends CardImpl {
public SavageSummoning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SavageSurge.java b/Mage.Sets/src/mage/cards/s/SavageSurge.java
index f631dda90ae..d8739dd1d1b 100644
--- a/Mage.Sets/src/mage/cards/s/SavageSurge.java
+++ b/Mage.Sets/src/mage/cards/s/SavageSurge.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class SavageSurge extends CardImpl {
+public final class SavageSurge extends CardImpl {
public SavageSurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SavageThallid.java b/Mage.Sets/src/mage/cards/s/SavageThallid.java
index b7010286936..fbc7a848981 100644
--- a/Mage.Sets/src/mage/cards/s/SavageThallid.java
+++ b/Mage.Sets/src/mage/cards/s/SavageThallid.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class SavageThallid extends CardImpl {
+public final class SavageThallid extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Fungus");
diff --git a/Mage.Sets/src/mage/cards/s/SavageTwister.java b/Mage.Sets/src/mage/cards/s/SavageTwister.java
index 035a50bafe0..c4a61336b13 100644
--- a/Mage.Sets/src/mage/cards/s/SavageTwister.java
+++ b/Mage.Sets/src/mage/cards/s/SavageTwister.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class SavageTwister extends CardImpl {
+public final class SavageTwister extends CardImpl {
public SavageTwister(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SavageVentmaw.java b/Mage.Sets/src/mage/cards/s/SavageVentmaw.java
index 3f0427cbdd5..d9d01d00056 100644
--- a/Mage.Sets/src/mage/cards/s/SavageVentmaw.java
+++ b/Mage.Sets/src/mage/cards/s/SavageVentmaw.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class SavageVentmaw extends CardImpl {
+public final class SavageVentmaw extends CardImpl {
public SavageVentmaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{G}");
@@ -59,7 +59,7 @@ public class SavageVentmaw extends CardImpl {
// Whenever Savage Ventmaw attacks, add {R}{R}{R}{G}{G}{G}. Until end of turn, you don’t lose this mana as steps and phases end.
Effect effect = new SavageVentmawManaEffect(new Mana(3, 3, 0, 0, 0, 0, 0, 0), "your", true);
- effect.setText("add {R}{R}{R}{G}{G}{G}. Until end of turn, this mana doesn't empty from your mana pool as steps and phases end");
+ effect.setText("add {R}{R}{R}{G}{G}{G}. Until end of turn, you don’t lose this mana as steps and phases end");
this.addAbility(new AttacksTriggeredAbility(effect, false));
}
@@ -83,7 +83,7 @@ class SavageVentmawManaEffect extends ManaEffect {
super();
this.mana = mana;
this.emptyOnlyOnTurnsEnd = emptyOnTurnsEnd;
- this.staticText = (textManaPoolOwner.equals("their") ? "that player adds " : "add ") + mana.toString() + " to " + textManaPoolOwner + " mana pool";
+ this.staticText = (textManaPoolOwner.equals("their") ? "that player adds " : "add ") + mana.toString();
}
public SavageVentmawManaEffect(final SavageVentmawManaEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/s/SavagebornHydra.java b/Mage.Sets/src/mage/cards/s/SavagebornHydra.java
index 2ab078a8f04..c8603cddd9b 100644
--- a/Mage.Sets/src/mage/cards/s/SavagebornHydra.java
+++ b/Mage.Sets/src/mage/cards/s/SavagebornHydra.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author jeffwadsworth
*/
-public class SavagebornHydra extends CardImpl {
+public final class SavagebornHydra extends CardImpl {
public SavagebornHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Savannah.java b/Mage.Sets/src/mage/cards/s/Savannah.java
index a0b82780575..185e0970941 100644
--- a/Mage.Sets/src/mage/cards/s/Savannah.java
+++ b/Mage.Sets/src/mage/cards/s/Savannah.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class Savannah extends CardImpl {
+public final class Savannah extends CardImpl {
public Savannah(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SavannahLions.java b/Mage.Sets/src/mage/cards/s/SavannahLions.java
index f604f4341eb..52d55289716 100644
--- a/Mage.Sets/src/mage/cards/s/SavannahLions.java
+++ b/Mage.Sets/src/mage/cards/s/SavannahLions.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SavannahLions extends CardImpl {
+public final class SavannahLions extends CardImpl {
public SavannahLions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SavingGrace.java b/Mage.Sets/src/mage/cards/s/SavingGrace.java
index b4b492b2e66..ee4547432cd 100644
--- a/Mage.Sets/src/mage/cards/s/SavingGrace.java
+++ b/Mage.Sets/src/mage/cards/s/SavingGrace.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author spjspj
*/
-public class SavingGrace extends CardImpl {
+public final class SavingGrace extends CardImpl {
public SavingGrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
@@ -131,10 +131,10 @@ class SavingGraceReplacementEffect extends ReplacementEffectImpl {
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
DamageEvent damageEvent = (DamageEvent) event;
Permanent sourcePermanent = game.getPermanent(source.getSourceId());
-
+
if (sourcePermanent != null) {
Permanent creature = game.getPermanent(sourcePermanent.getAttachedTo());
-
+
if (creature == null) {
return false;
}
@@ -157,10 +157,8 @@ class SavingGraceReplacementEffect extends ReplacementEffectImpl {
}
game.informPlayers(message.toString());
// Redirect damage
- if (creature != null) {
- creature.damage(damageEvent.getAmount(), damageEvent.getSourceId(), game, damageEvent.isCombatDamage(), damageEvent.isPreventable(), event.getAppliedEffects());
- return true;
- }
+ creature.damage(damageEvent.getAmount(), damageEvent.getSourceId(), game, damageEvent.isCombatDamage(), damageEvent.isPreventable(), event.getAppliedEffects());
+ return true;
}
return false;
}
diff --git a/Mage.Sets/src/mage/cards/s/SavingGrasp.java b/Mage.Sets/src/mage/cards/s/SavingGrasp.java
index d081986f01c..98b159b8688 100644
--- a/Mage.Sets/src/mage/cards/s/SavingGrasp.java
+++ b/Mage.Sets/src/mage/cards/s/SavingGrasp.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SavingGrasp extends CardImpl {
+public final class SavingGrasp extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you own");
diff --git a/Mage.Sets/src/mage/cards/s/SavorTheMoment.java b/Mage.Sets/src/mage/cards/s/SavorTheMoment.java
index 6a7e81034ad..64db0c42574 100644
--- a/Mage.Sets/src/mage/cards/s/SavorTheMoment.java
+++ b/Mage.Sets/src/mage/cards/s/SavorTheMoment.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SavorTheMoment extends CardImpl {
+public final class SavorTheMoment extends CardImpl {
public SavorTheMoment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SavraQueenOfTheGolgari.java b/Mage.Sets/src/mage/cards/s/SavraQueenOfTheGolgari.java
index 419a57fb5d2..5f190262620 100644
--- a/Mage.Sets/src/mage/cards/s/SavraQueenOfTheGolgari.java
+++ b/Mage.Sets/src/mage/cards/s/SavraQueenOfTheGolgari.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class SavraQueenOfTheGolgari extends CardImpl {
+public final class SavraQueenOfTheGolgari extends CardImpl {
public SavraQueenOfTheGolgari(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SawbackManticore.java b/Mage.Sets/src/mage/cards/s/SawbackManticore.java
index 817e63123a0..333fd0d27f8 100644
--- a/Mage.Sets/src/mage/cards/s/SawbackManticore.java
+++ b/Mage.Sets/src/mage/cards/s/SawbackManticore.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author TheElk801
*/
-public class SawbackManticore extends CardImpl {
+public final class SawbackManticore extends CardImpl {
public SawbackManticore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SawtoothLoon.java b/Mage.Sets/src/mage/cards/s/SawtoothLoon.java
index 27ab1c640aa..589c03edb5f 100644
--- a/Mage.Sets/src/mage/cards/s/SawtoothLoon.java
+++ b/Mage.Sets/src/mage/cards/s/SawtoothLoon.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInHand;
*
* @author FenrisulfrX
*/
-public class SawtoothLoon extends CardImpl {
+public final class SawtoothLoon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("white or blue creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SawtoothThresher.java b/Mage.Sets/src/mage/cards/s/SawtoothThresher.java
index bb7a34461a3..ac075a4d7b5 100644
--- a/Mage.Sets/src/mage/cards/s/SawtoothThresher.java
+++ b/Mage.Sets/src/mage/cards/s/SawtoothThresher.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class SawtoothThresher extends CardImpl {
+public final class SawtoothThresher extends CardImpl {
public SawtoothThresher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/s/ScabClanBerserker.java b/Mage.Sets/src/mage/cards/s/ScabClanBerserker.java
index f2d05258d4c..13fd05863d4 100644
--- a/Mage.Sets/src/mage/cards/s/ScabClanBerserker.java
+++ b/Mage.Sets/src/mage/cards/s/ScabClanBerserker.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class ScabClanBerserker extends CardImpl {
+public final class ScabClanBerserker extends CardImpl {
public ScabClanBerserker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScabClanCharger.java b/Mage.Sets/src/mage/cards/s/ScabClanCharger.java
index 1e1486d6af4..c6f2b9bc895 100644
--- a/Mage.Sets/src/mage/cards/s/ScabClanCharger.java
+++ b/Mage.Sets/src/mage/cards/s/ScabClanCharger.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class ScabClanCharger extends CardImpl {
+public final class ScabClanCharger extends CardImpl {
public ScabClanCharger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScabClanGiant.java b/Mage.Sets/src/mage/cards/s/ScabClanGiant.java
index 796c4e988a1..4efdd17471d 100644
--- a/Mage.Sets/src/mage/cards/s/ScabClanGiant.java
+++ b/Mage.Sets/src/mage/cards/s/ScabClanGiant.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ScabClanGiant extends CardImpl {
+public final class ScabClanGiant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/s/ScabClanMauler.java b/Mage.Sets/src/mage/cards/s/ScabClanMauler.java
index 5f661c0c0dd..99e481e39ba 100644
--- a/Mage.Sets/src/mage/cards/s/ScabClanMauler.java
+++ b/Mage.Sets/src/mage/cards/s/ScabClanMauler.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ScabClanMauler extends CardImpl {
+public final class ScabClanMauler extends CardImpl {
public ScabClanMauler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Scabland.java b/Mage.Sets/src/mage/cards/s/Scabland.java
index c7482649a4a..61c95247f8f 100644
--- a/Mage.Sets/src/mage/cards/s/Scabland.java
+++ b/Mage.Sets/src/mage/cards/s/Scabland.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class Scabland extends CardImpl {
+public final class Scabland extends CardImpl {
public Scabland(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/s/Scald.java b/Mage.Sets/src/mage/cards/s/Scald.java
index 4f587031692..2e4c834581b 100644
--- a/Mage.Sets/src/mage/cards/s/Scald.java
+++ b/Mage.Sets/src/mage/cards/s/Scald.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class Scald extends CardImpl {
+public final class Scald extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a player taps an Island");
diff --git a/Mage.Sets/src/mage/cards/s/ScaldingDevil.java b/Mage.Sets/src/mage/cards/s/ScaldingDevil.java
index 4176397a5fd..aafd2d43891 100644
--- a/Mage.Sets/src/mage/cards/s/ScaldingDevil.java
+++ b/Mage.Sets/src/mage/cards/s/ScaldingDevil.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class ScaldingDevil extends CardImpl {
+public final class ScaldingDevil extends CardImpl {
public ScaldingDevil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScaldingSalamander.java b/Mage.Sets/src/mage/cards/s/ScaldingSalamander.java
index 093ec1376ab..d38b7b4085c 100644
--- a/Mage.Sets/src/mage/cards/s/ScaldingSalamander.java
+++ b/Mage.Sets/src/mage/cards/s/ScaldingSalamander.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.DefendingPlayerControlsPredicate;
*
* @author TheElk801
*/
-public class ScaldingSalamander extends CardImpl {
+public final class ScaldingSalamander extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature without flying defending player controls");
diff --git a/Mage.Sets/src/mage/cards/s/ScaldingTarn.java b/Mage.Sets/src/mage/cards/s/ScaldingTarn.java
index 493df56b1b0..f8947cf3536 100644
--- a/Mage.Sets/src/mage/cards/s/ScaldingTarn.java
+++ b/Mage.Sets/src/mage/cards/s/ScaldingTarn.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ScaldingTarn extends CardImpl {
+public final class ScaldingTarn extends CardImpl {
public ScaldingTarn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/s/ScaldingTongs.java b/Mage.Sets/src/mage/cards/s/ScaldingTongs.java
index d9010281492..6e740fa0284 100644
--- a/Mage.Sets/src/mage/cards/s/ScaldingTongs.java
+++ b/Mage.Sets/src/mage/cards/s/ScaldingTongs.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
/**
* @author fireshoes
*/
-public class ScaldingTongs extends CardImpl {
+public final class ScaldingTongs extends CardImpl {
public ScaldingTongs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/Scaldkin.java b/Mage.Sets/src/mage/cards/s/Scaldkin.java
index f0e94718214..7f83fa62310 100644
--- a/Mage.Sets/src/mage/cards/s/Scaldkin.java
+++ b/Mage.Sets/src/mage/cards/s/Scaldkin.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Scaldkin extends CardImpl {
+public final class Scaldkin extends CardImpl {
public Scaldkin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ScaleBlessing.java b/Mage.Sets/src/mage/cards/s/ScaleBlessing.java
index 59a9c5f17bd..6556d9c56a6 100644
--- a/Mage.Sets/src/mage/cards/s/ScaleBlessing.java
+++ b/Mage.Sets/src/mage/cards/s/ScaleBlessing.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ScaleBlessing extends CardImpl {
+public final class ScaleBlessing extends CardImpl {
public ScaleBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ScaleOfChissGoria.java b/Mage.Sets/src/mage/cards/s/ScaleOfChissGoria.java
index fa26ae796fd..5132f6f9d7e 100644
--- a/Mage.Sets/src/mage/cards/s/ScaleOfChissGoria.java
+++ b/Mage.Sets/src/mage/cards/s/ScaleOfChissGoria.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ScaleOfChissGoria extends CardImpl {
+public final class ScaleOfChissGoria extends CardImpl {
public ScaleOfChissGoria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/ScalebanesElite.java b/Mage.Sets/src/mage/cards/s/ScalebanesElite.java
index 7e54549f744..eeed63c1157 100644
--- a/Mage.Sets/src/mage/cards/s/ScalebanesElite.java
+++ b/Mage.Sets/src/mage/cards/s/ScalebanesElite.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author anonymous
*/
-public class ScalebanesElite extends CardImpl {
+public final class ScalebanesElite extends CardImpl {
public ScalebanesElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ScaledBehemoth.java b/Mage.Sets/src/mage/cards/s/ScaledBehemoth.java
index 4499eec6ea8..bb942c4bcea 100644
--- a/Mage.Sets/src/mage/cards/s/ScaledBehemoth.java
+++ b/Mage.Sets/src/mage/cards/s/ScaledBehemoth.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ScaledBehemoth extends CardImpl {
+public final class ScaledBehemoth extends CardImpl {
public ScaledBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScaledHulk.java b/Mage.Sets/src/mage/cards/s/ScaledHulk.java
index caf2c441dab..a4f39b724b8 100644
--- a/Mage.Sets/src/mage/cards/s/ScaledHulk.java
+++ b/Mage.Sets/src/mage/cards/s/ScaledHulk.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class ScaledHulk extends CardImpl {
+public final class ScaledHulk extends CardImpl {
public ScaledHulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScaledWurm.java b/Mage.Sets/src/mage/cards/s/ScaledWurm.java
index 37d05d8c326..cc7034bc9d8 100644
--- a/Mage.Sets/src/mage/cards/s/ScaledWurm.java
+++ b/Mage.Sets/src/mage/cards/s/ScaledWurm.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ScaledWurm extends CardImpl {
+public final class ScaledWurm extends CardImpl {
public ScaledWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScaleguardSentinels.java b/Mage.Sets/src/mage/cards/s/ScaleguardSentinels.java
index 55887ebb6d2..9ceeee84f5c 100644
--- a/Mage.Sets/src/mage/cards/s/ScaleguardSentinels.java
+++ b/Mage.Sets/src/mage/cards/s/ScaleguardSentinels.java
@@ -53,7 +53,7 @@ import mage.watchers.common.DragonOnTheBattlefieldWhileSpellWasCastWatcher;
*
* @author LevelX2
*/
-public class ScaleguardSentinels extends CardImpl {
+public final class ScaleguardSentinels extends CardImpl {
private static final FilterCard filter = new FilterCard("a Dragon card from your hand (you don't have to)");
diff --git a/Mage.Sets/src/mage/cards/s/ScalelordReckoner.java b/Mage.Sets/src/mage/cards/s/ScalelordReckoner.java
index b67cd1ff4b8..8eb48d68918 100644
--- a/Mage.Sets/src/mage/cards/s/ScalelordReckoner.java
+++ b/Mage.Sets/src/mage/cards/s/ScalelordReckoner.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author spjspj
*/
-public class ScalelordReckoner extends CardImpl {
+public final class ScalelordReckoner extends CardImpl {
public ScalelordReckoner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Scalpelexis.java b/Mage.Sets/src/mage/cards/s/Scalpelexis.java
index 6e1750665eb..dbdfae003e1 100644
--- a/Mage.Sets/src/mage/cards/s/Scalpelexis.java
+++ b/Mage.Sets/src/mage/cards/s/Scalpelexis.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class Scalpelexis extends CardImpl {
+public final class Scalpelexis extends CardImpl {
public Scalpelexis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Scandalmonger.java b/Mage.Sets/src/mage/cards/s/Scandalmonger.java
index 0832a46ea1d..8e2b87b52f1 100644
--- a/Mage.Sets/src/mage/cards/s/Scandalmonger.java
+++ b/Mage.Sets/src/mage/cards/s/Scandalmonger.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author L_J
*/
-public class Scandalmonger extends CardImpl {
+public final class Scandalmonger extends CardImpl {
public Scandalmonger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Scapegoat.java b/Mage.Sets/src/mage/cards/s/Scapegoat.java
index 24ab84650bc..febff1c42be 100644
--- a/Mage.Sets/src/mage/cards/s/Scapegoat.java
+++ b/Mage.Sets/src/mage/cards/s/Scapegoat.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class Scapegoat extends CardImpl {
+public final class Scapegoat extends CardImpl {
public Scapegoat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Scapeshift.java b/Mage.Sets/src/mage/cards/s/Scapeshift.java
index bd416862d52..66fb8b1fb07 100644
--- a/Mage.Sets/src/mage/cards/s/Scapeshift.java
+++ b/Mage.Sets/src/mage/cards/s/Scapeshift.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class Scapeshift extends CardImpl {
+public final class Scapeshift extends CardImpl {
public Scapeshift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Scar.java b/Mage.Sets/src/mage/cards/s/Scar.java
index dde2f591c62..c814f1f7904 100644
--- a/Mage.Sets/src/mage/cards/s/Scar.java
+++ b/Mage.Sets/src/mage/cards/s/Scar.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Scar extends CardImpl {
+public final class Scar extends CardImpl {
public Scar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B/R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScarabFeast.java b/Mage.Sets/src/mage/cards/s/ScarabFeast.java
index d690c52204c..8e8b1dfa6b8 100644
--- a/Mage.Sets/src/mage/cards/s/ScarabFeast.java
+++ b/Mage.Sets/src/mage/cards/s/ScarabFeast.java
@@ -13,7 +13,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
/**
* @author Stravant
*/
-public class ScarabFeast extends CardImpl {
+public final class ScarabFeast extends CardImpl {
public ScarabFeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScarbladeElite.java b/Mage.Sets/src/mage/cards/s/ScarbladeElite.java
index 649fcdefa1d..0e33e1a620f 100644
--- a/Mage.Sets/src/mage/cards/s/ScarbladeElite.java
+++ b/Mage.Sets/src/mage/cards/s/ScarbladeElite.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ScarbladeElite extends CardImpl {
+public final class ScarbladeElite extends CardImpl {
private static final FilterCard filter = new FilterCard("Assassin card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/ScareTactics.java b/Mage.Sets/src/mage/cards/s/ScareTactics.java
index 982e23c3404..4c24d324889 100644
--- a/Mage.Sets/src/mage/cards/s/ScareTactics.java
+++ b/Mage.Sets/src/mage/cards/s/ScareTactics.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author Ekkaia
*/
-public class ScareTactics extends CardImpl {
+public final class ScareTactics extends CardImpl {
public ScareTactics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Scarecrone.java b/Mage.Sets/src/mage/cards/s/Scarecrone.java
index ac46e2cbfb8..4570325d06c 100644
--- a/Mage.Sets/src/mage/cards/s/Scarecrone.java
+++ b/Mage.Sets/src/mage/cards/s/Scarecrone.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class Scarecrone extends CardImpl {
+public final class Scarecrone extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact creature card from your graveyard");
private static final FilterControlledCreaturePermanent filterScarecrow = new FilterControlledCreaturePermanent("Scarecrow");
diff --git a/Mage.Sets/src/mage/cards/s/Scarecrow.java b/Mage.Sets/src/mage/cards/s/Scarecrow.java
index 294765d49b0..eeaae785bd6 100644
--- a/Mage.Sets/src/mage/cards/s/Scarecrow.java
+++ b/Mage.Sets/src/mage/cards/s/Scarecrow.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class Scarecrow extends CardImpl {
+public final class Scarecrow extends CardImpl {
public Scarecrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/s/ScarlandThrinax.java b/Mage.Sets/src/mage/cards/s/ScarlandThrinax.java
index 03d3cc2765e..06961c59657 100644
--- a/Mage.Sets/src/mage/cards/s/ScarlandThrinax.java
+++ b/Mage.Sets/src/mage/cards/s/ScarlandThrinax.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class ScarlandThrinax extends CardImpl {
+public final class ScarlandThrinax extends CardImpl {
public ScarlandThrinax(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScarredPuma.java b/Mage.Sets/src/mage/cards/s/ScarredPuma.java
index 09b4ad19e48..affb95433ba 100644
--- a/Mage.Sets/src/mage/cards/s/ScarredPuma.java
+++ b/Mage.Sets/src/mage/cards/s/ScarredPuma.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author Derpthemeus
*/
-public class ScarredPuma extends CardImpl {
+public final class ScarredPuma extends CardImpl {
public ScarredPuma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScarredVinebreeder.java b/Mage.Sets/src/mage/cards/s/ScarredVinebreeder.java
index a49d3e3e4e5..3a727ebd10a 100644
--- a/Mage.Sets/src/mage/cards/s/ScarredVinebreeder.java
+++ b/Mage.Sets/src/mage/cards/s/ScarredVinebreeder.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class ScarredVinebreeder extends CardImpl {
+public final class ScarredVinebreeder extends CardImpl {
private static final FilterCard filter = new FilterCard("Elf card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/ScarscaleRitual.java b/Mage.Sets/src/mage/cards/s/ScarscaleRitual.java
index dd69289234e..d9d7d31a28d 100644
--- a/Mage.Sets/src/mage/cards/s/ScarscaleRitual.java
+++ b/Mage.Sets/src/mage/cards/s/ScarscaleRitual.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class ScarscaleRitual extends CardImpl {
+public final class ScarscaleRitual extends CardImpl {
public ScarscaleRitual(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScarwoodBandits.java b/Mage.Sets/src/mage/cards/s/ScarwoodBandits.java
index 187b5212f63..07ccbd7845e 100644
--- a/Mage.Sets/src/mage/cards/s/ScarwoodBandits.java
+++ b/Mage.Sets/src/mage/cards/s/ScarwoodBandits.java
@@ -61,7 +61,7 @@ import mage.util.CardUtil;
*
* @author L_J
*/
-public class ScarwoodBandits extends CardImpl {
+public final class ScarwoodBandits extends CardImpl {
public ScarwoodBandits(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScarwoodGoblins.java b/Mage.Sets/src/mage/cards/s/ScarwoodGoblins.java
index 74bc75d6db2..d03281ef779 100644
--- a/Mage.Sets/src/mage/cards/s/ScarwoodGoblins.java
+++ b/Mage.Sets/src/mage/cards/s/ScarwoodGoblins.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ScarwoodGoblins extends CardImpl {
+public final class ScarwoodGoblins extends CardImpl {
public ScarwoodGoblins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScarwoodHag.java b/Mage.Sets/src/mage/cards/s/ScarwoodHag.java
index d91b10bf34f..c2a1c57fff8 100644
--- a/Mage.Sets/src/mage/cards/s/ScarwoodHag.java
+++ b/Mage.Sets/src/mage/cards/s/ScarwoodHag.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ScarwoodHag extends CardImpl {
+public final class ScarwoodHag extends CardImpl {
public ScarwoodHag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScarwoodTreefolk.java b/Mage.Sets/src/mage/cards/s/ScarwoodTreefolk.java
index e8cc9eae1a2..75a7076f7d2 100644
--- a/Mage.Sets/src/mage/cards/s/ScarwoodTreefolk.java
+++ b/Mage.Sets/src/mage/cards/s/ScarwoodTreefolk.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ScarwoodTreefolk extends CardImpl {
+public final class ScarwoodTreefolk extends CardImpl {
public ScarwoodTreefolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScatheZombies.java b/Mage.Sets/src/mage/cards/s/ScatheZombies.java
index 591e49d8e52..fcd174c86fa 100644
--- a/Mage.Sets/src/mage/cards/s/ScatheZombies.java
+++ b/Mage.Sets/src/mage/cards/s/ScatheZombies.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ScatheZombies extends CardImpl {
+public final class ScatheZombies extends CardImpl {
public ScatheZombies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScatterArc.java b/Mage.Sets/src/mage/cards/s/ScatterArc.java
index 0d9bf99c286..3dba919f9b9 100644
--- a/Mage.Sets/src/mage/cards/s/ScatterArc.java
+++ b/Mage.Sets/src/mage/cards/s/ScatterArc.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author Plopman
*/
-public class ScatterArc extends CardImpl {
+public final class ScatterArc extends CardImpl {
private static final FilterSpell filter = new FilterSpell("noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/s/ScatterTheSeeds.java b/Mage.Sets/src/mage/cards/s/ScatterTheSeeds.java
index 6d784302fb8..297335e249e 100644
--- a/Mage.Sets/src/mage/cards/s/ScatterTheSeeds.java
+++ b/Mage.Sets/src/mage/cards/s/ScatterTheSeeds.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author jonubuu
*/
-public class ScatterTheSeeds extends CardImpl {
+public final class ScatterTheSeeds extends CardImpl {
public ScatterTheSeeds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScatterToTheWinds.java b/Mage.Sets/src/mage/cards/s/ScatterToTheWinds.java
index 29b8a398585..22822b536d2 100644
--- a/Mage.Sets/src/mage/cards/s/ScatterToTheWinds.java
+++ b/Mage.Sets/src/mage/cards/s/ScatterToTheWinds.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class ScatterToTheWinds extends CardImpl {
+public final class ScatterToTheWinds extends CardImpl {
public ScatterToTheWinds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ScatteredGroves.java b/Mage.Sets/src/mage/cards/s/ScatteredGroves.java
index 1aeaca3d951..19b974a0945 100644
--- a/Mage.Sets/src/mage/cards/s/ScatteredGroves.java
+++ b/Mage.Sets/src/mage/cards/s/ScatteredGroves.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ScatteredGroves extends CardImpl {
+public final class ScatteredGroves extends CardImpl {
public ScatteredGroves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/ScatteringStroke.java b/Mage.Sets/src/mage/cards/s/ScatteringStroke.java
index fe49585c504..684ca5902d9 100644
--- a/Mage.Sets/src/mage/cards/s/ScatteringStroke.java
+++ b/Mage.Sets/src/mage/cards/s/ScatteringStroke.java
@@ -49,7 +49,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class ScatteringStroke extends CardImpl {
+public final class ScatteringStroke extends CardImpl {
public ScatteringStroke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Scattershot.java b/Mage.Sets/src/mage/cards/s/Scattershot.java
index e86e2a679df..33650f9502f 100644
--- a/Mage.Sets/src/mage/cards/s/Scattershot.java
+++ b/Mage.Sets/src/mage/cards/s/Scattershot.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Scattershot extends CardImpl {
+public final class Scattershot extends CardImpl {
public Scattershot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScattershotArcher.java b/Mage.Sets/src/mage/cards/s/ScattershotArcher.java
index 3110f934ff7..43176ab0989 100644
--- a/Mage.Sets/src/mage/cards/s/ScattershotArcher.java
+++ b/Mage.Sets/src/mage/cards/s/ScattershotArcher.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author North
*/
-public class ScattershotArcher extends CardImpl {
+public final class ScattershotArcher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/ScavengedWeaponry.java b/Mage.Sets/src/mage/cards/s/ScavengedWeaponry.java
index a4fbaa0df1b..faa5369fd4c 100644
--- a/Mage.Sets/src/mage/cards/s/ScavengedWeaponry.java
+++ b/Mage.Sets/src/mage/cards/s/ScavengedWeaponry.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author michael.napoleon@gmail.com
*/
-public class ScavengedWeaponry extends CardImpl {
+public final class ScavengedWeaponry extends CardImpl {
public ScavengedWeaponry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScavengerDrake.java b/Mage.Sets/src/mage/cards/s/ScavengerDrake.java
index 2eaaf87c09a..e884efd5385 100644
--- a/Mage.Sets/src/mage/cards/s/ScavengerDrake.java
+++ b/Mage.Sets/src/mage/cards/s/ScavengerDrake.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class ScavengerDrake extends CardImpl {
+public final class ScavengerDrake extends CardImpl {
public ScavengerDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScavengerFolk.java b/Mage.Sets/src/mage/cards/s/ScavengerFolk.java
index ed35878b300..a69adbd4f12 100644
--- a/Mage.Sets/src/mage/cards/s/ScavengerFolk.java
+++ b/Mage.Sets/src/mage/cards/s/ScavengerFolk.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetArtifactPermanent;
* @author LoneFox
*/
-public class ScavengerFolk extends CardImpl {
+public final class ScavengerFolk extends CardImpl {
public ScavengerFolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScavengerGrounds.java b/Mage.Sets/src/mage/cards/s/ScavengerGrounds.java
index bc920ea8123..ba7b5426e8e 100644
--- a/Mage.Sets/src/mage/cards/s/ScavengerGrounds.java
+++ b/Mage.Sets/src/mage/cards/s/ScavengerGrounds.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author spjspj
*/
-public class ScavengerGrounds extends CardImpl {
+public final class ScavengerGrounds extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Desert");
diff --git a/Mage.Sets/src/mage/cards/s/ScavengingGhoul.java b/Mage.Sets/src/mage/cards/s/ScavengingGhoul.java
index 36116de3558..1b5dd9ed136 100644
--- a/Mage.Sets/src/mage/cards/s/ScavengingGhoul.java
+++ b/Mage.Sets/src/mage/cards/s/ScavengingGhoul.java
@@ -48,7 +48,7 @@ import mage.watchers.common.CreaturesDiedWatcher;
*
* @author LoneFox
*/
-public class ScavengingGhoul extends CardImpl {
+public final class ScavengingGhoul extends CardImpl {
public ScavengingGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScavengingOoze.java b/Mage.Sets/src/mage/cards/s/ScavengingOoze.java
index 29aea25e50e..be1143475d1 100644
--- a/Mage.Sets/src/mage/cards/s/ScavengingOoze.java
+++ b/Mage.Sets/src/mage/cards/s/ScavengingOoze.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class ScavengingOoze extends CardImpl {
+public final class ScavengingOoze extends CardImpl {
public ScavengingOoze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScavengingScarab.java b/Mage.Sets/src/mage/cards/s/ScavengingScarab.java
index 211b192a299..0b5b6976f1a 100644
--- a/Mage.Sets/src/mage/cards/s/ScavengingScarab.java
+++ b/Mage.Sets/src/mage/cards/s/ScavengingScarab.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class ScavengingScarab extends CardImpl {
+public final class ScavengingScarab extends CardImpl {
public ScavengingScarab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScentOfJasmine.java b/Mage.Sets/src/mage/cards/s/ScentOfJasmine.java
index d4b374b9f18..aeb88b85262 100644
--- a/Mage.Sets/src/mage/cards/s/ScentOfJasmine.java
+++ b/Mage.Sets/src/mage/cards/s/ScentOfJasmine.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author TheElk801
*/
-public class ScentOfJasmine extends CardImpl {
+public final class ScentOfJasmine extends CardImpl {
public ScentOfJasmine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ScepterOfDominance.java b/Mage.Sets/src/mage/cards/s/ScepterOfDominance.java
index cfad8539b48..e13faa307de 100644
--- a/Mage.Sets/src/mage/cards/s/ScepterOfDominance.java
+++ b/Mage.Sets/src/mage/cards/s/ScepterOfDominance.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class ScepterOfDominance extends CardImpl {
+public final class ScepterOfDominance extends CardImpl {
public ScepterOfDominance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ScepterOfEmpires.java b/Mage.Sets/src/mage/cards/s/ScepterOfEmpires.java
index 804350d75a4..d16c893e5b9 100644
--- a/Mage.Sets/src/mage/cards/s/ScepterOfEmpires.java
+++ b/Mage.Sets/src/mage/cards/s/ScepterOfEmpires.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
/**
* @author nantuko
*/
-public class ScepterOfEmpires extends CardImpl {
+public final class ScepterOfEmpires extends CardImpl {
public ScepterOfEmpires(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/ScepterOfFugue.java b/Mage.Sets/src/mage/cards/s/ScepterOfFugue.java
index 42a068b1a29..33ee548d41f 100644
--- a/Mage.Sets/src/mage/cards/s/ScepterOfFugue.java
+++ b/Mage.Sets/src/mage/cards/s/ScepterOfFugue.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class ScepterOfFugue extends CardImpl {
+public final class ScepterOfFugue extends CardImpl {
public ScepterOfFugue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScepterOfInsight.java b/Mage.Sets/src/mage/cards/s/ScepterOfInsight.java
index c44aa8e5876..44d7c60a8ef 100644
--- a/Mage.Sets/src/mage/cards/s/ScepterOfInsight.java
+++ b/Mage.Sets/src/mage/cards/s/ScepterOfInsight.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ScepterOfInsight extends CardImpl {
+public final class ScepterOfInsight extends CardImpl {
public ScepterOfInsight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Schismotivate.java b/Mage.Sets/src/mage/cards/s/Schismotivate.java
index f9fc6e842cd..ab4e42431da 100644
--- a/Mage.Sets/src/mage/cards/s/Schismotivate.java
+++ b/Mage.Sets/src/mage/cards/s/Schismotivate.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Schismotivate extends CardImpl {
+public final class Schismotivate extends CardImpl {
public Schismotivate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScholarOfAthreos.java b/Mage.Sets/src/mage/cards/s/ScholarOfAthreos.java
index b62872a7205..dc53d8e1d5b 100644
--- a/Mage.Sets/src/mage/cards/s/ScholarOfAthreos.java
+++ b/Mage.Sets/src/mage/cards/s/ScholarOfAthreos.java
@@ -45,7 +45,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class ScholarOfAthreos extends CardImpl {
+public final class ScholarOfAthreos extends CardImpl {
public ScholarOfAthreos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ScholarOfStars.java b/Mage.Sets/src/mage/cards/s/ScholarOfStars.java
new file mode 100644
index 00000000000..9ee7bbf9ba6
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/ScholarOfStars.java
@@ -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.s;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
+import mage.abilities.decorator.ConditionalTriggeredAbility;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.filter.StaticFilters;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ScholarOfStars extends CardImpl {
+
+ public ScholarOfStars(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.ARTIFICER);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(2);
+
+ // When Scholar of Stars enters the battlefield, if you control an artifact, draw a card.
+ this.addAbility(new ConditionalTriggeredAbility(
+ new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1), false),
+ new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT),
+ "When {this} enters the battlefield, if you control an artifact, draw a card."
+ ));
+ }
+
+ public ScholarOfStars(final ScholarOfStars card) {
+ super(card);
+ }
+
+ @Override
+ public ScholarOfStars copy() {
+ return new ScholarOfStars(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/SchoolOfPiranha.java b/Mage.Sets/src/mage/cards/s/SchoolOfPiranha.java
index 27ef6ec65d4..a7b4223d55e 100644
--- a/Mage.Sets/src/mage/cards/s/SchoolOfPiranha.java
+++ b/Mage.Sets/src/mage/cards/s/SchoolOfPiranha.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class SchoolOfPiranha extends CardImpl {
+public final class SchoolOfPiranha extends CardImpl {
public SchoolOfPiranha(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SchoolOfTheUnseen.java b/Mage.Sets/src/mage/cards/s/SchoolOfTheUnseen.java
index 595e59e5dae..9d61df1421a 100644
--- a/Mage.Sets/src/mage/cards/s/SchoolOfTheUnseen.java
+++ b/Mage.Sets/src/mage/cards/s/SchoolOfTheUnseen.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author anonymous
*/
-public class SchoolOfTheUnseen extends CardImpl {
+public final class SchoolOfTheUnseen extends CardImpl {
public SchoolOfTheUnseen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/ScionOfDarkness.java b/Mage.Sets/src/mage/cards/s/ScionOfDarkness.java
index 45e1b12a586..12fe3e1d620 100644
--- a/Mage.Sets/src/mage/cards/s/ScionOfDarkness.java
+++ b/Mage.Sets/src/mage/cards/s/ScionOfDarkness.java
@@ -39,8 +39,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.mageobject.CardTypePredicate;
@@ -53,10 +53,10 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author jeffwadsworth
*/
-public class ScionOfDarkness extends CardImpl {
+public final class ScionOfDarkness extends CardImpl {
public ScionOfDarkness(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}{B}");
this.subtype.add(SubType.AVATAR);
this.power = new MageInt(6);
@@ -102,20 +102,22 @@ class ScionOfDarknessEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player damagedPlayer = game.getPlayer(targetPointer.getFirst(game, source));
- Player you = game.getPlayer(source.getControllerId());
- FilterCard filter = new FilterCard("creature in that player's graveyard");
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null || damagedPlayer == null) {
+ return false;
+ }
+ FilterCard filter = new FilterCard("creature in " + damagedPlayer.getName() + "'s graveyard");
filter.add(new CardTypePredicate(CardType.CREATURE));
filter.add(new OwnerIdPredicate(damagedPlayer.getId()));
TargetCardInGraveyard target = new TargetCardInGraveyard(filter);
- if (target.canChoose(source.getSourceId(), you.getId(), game)) {
- if (you.chooseTarget(Outcome.PutCreatureInPlay, target, source, game)) {
+ if (target.canChoose(source.getSourceId(), controller.getId(), game)) {
+ if (controller.chooseTarget(Outcome.PutCreatureInPlay, target, source, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), you.getId());
- return true;
+ controller.moveCards(card, Zone.BATTLEFIELD, source, game);
}
}
}
- return false;
+ return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/s/ScionOfGlaciers.java b/Mage.Sets/src/mage/cards/s/ScionOfGlaciers.java
index 94c309e2aaf..0a47f8c6e83 100644
--- a/Mage.Sets/src/mage/cards/s/ScionOfGlaciers.java
+++ b/Mage.Sets/src/mage/cards/s/ScionOfGlaciers.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ScionOfGlaciers extends CardImpl {
+public final class ScionOfGlaciers extends CardImpl {
public ScionOfGlaciers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ScionOfOona.java b/Mage.Sets/src/mage/cards/s/ScionOfOona.java
index 0112ab5ca2a..1ab699b1e13 100644
--- a/Mage.Sets/src/mage/cards/s/ScionOfOona.java
+++ b/Mage.Sets/src/mage/cards/s/ScionOfOona.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Loki
*/
-public class ScionOfOona extends CardImpl {
+public final class ScionOfOona extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Faeries");
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("Faeries");
diff --git a/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java b/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java
index 00ef33641ce..416bc82b4d6 100644
--- a/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java
+++ b/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author duncant
*/
-public class ScionOfTheUrDragon extends CardImpl {
+public final class ScionOfTheUrDragon extends CardImpl {
public ScionOfTheUrDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScionOfTheWild.java b/Mage.Sets/src/mage/cards/s/ScionOfTheWild.java
index f9d39a0f465..33b7b362eed 100644
--- a/Mage.Sets/src/mage/cards/s/ScionOfTheWild.java
+++ b/Mage.Sets/src/mage/cards/s/ScionOfTheWild.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
/**
* @author anonymous
*/
-public class ScionOfTheWild extends CardImpl {
+public final class ScionOfTheWild extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/ScionOfUgin.java b/Mage.Sets/src/mage/cards/s/ScionOfUgin.java
index 5fedc8ee88d..d99bed94244 100644
--- a/Mage.Sets/src/mage/cards/s/ScionOfUgin.java
+++ b/Mage.Sets/src/mage/cards/s/ScionOfUgin.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ScionOfUgin extends CardImpl {
+public final class ScionOfUgin extends CardImpl {
public ScionOfUgin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/s/ScionOfVituGhazi.java b/Mage.Sets/src/mage/cards/s/ScionOfVituGhazi.java
index 893a35b9009..fc363e08122 100644
--- a/Mage.Sets/src/mage/cards/s/ScionOfVituGhazi.java
+++ b/Mage.Sets/src/mage/cards/s/ScionOfVituGhazi.java
@@ -46,7 +46,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author LevelX2
*/
-public class ScionOfVituGhazi extends CardImpl {
+public final class ScionOfVituGhazi extends CardImpl {
public ScionOfVituGhazi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ScionSummoner.java b/Mage.Sets/src/mage/cards/s/ScionSummoner.java
index 653cbe7a6d6..1d87600a0d0 100644
--- a/Mage.Sets/src/mage/cards/s/ScionSummoner.java
+++ b/Mage.Sets/src/mage/cards/s/ScionSummoner.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author fireshoes
*/
-public class ScionSummoner extends CardImpl {
+public final class ScionSummoner extends CardImpl {
public ScionSummoner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScissorsLizard.java b/Mage.Sets/src/mage/cards/s/ScissorsLizard.java
index 2bc3a78a851..71a05093b05 100644
--- a/Mage.Sets/src/mage/cards/s/ScissorsLizard.java
+++ b/Mage.Sets/src/mage/cards/s/ScissorsLizard.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author spjspj
*/
-public class ScissorsLizard extends CardImpl {
+public final class ScissorsLizard extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures named Paper Tiger");
diff --git a/Mage.Sets/src/mage/cards/s/ScorchTheFields.java b/Mage.Sets/src/mage/cards/s/ScorchTheFields.java
index ae0dce882f3..e8c16ec8c39 100644
--- a/Mage.Sets/src/mage/cards/s/ScorchTheFields.java
+++ b/Mage.Sets/src/mage/cards/s/ScorchTheFields.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author North
*/
-public class ScorchTheFields extends CardImpl {
+public final class ScorchTheFields extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creature");
diff --git a/Mage.Sets/src/mage/cards/s/ScorchedEarth.java b/Mage.Sets/src/mage/cards/s/ScorchedEarth.java
index d8372671c12..8da90f06b73 100644
--- a/Mage.Sets/src/mage/cards/s/ScorchedEarth.java
+++ b/Mage.Sets/src/mage/cards/s/ScorchedEarth.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class ScorchedEarth extends CardImpl {
+public final class ScorchedEarth extends CardImpl {
public ScorchedEarth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScorchedRuins.java b/Mage.Sets/src/mage/cards/s/ScorchedRuins.java
index 885e39757f8..f211684d462 100644
--- a/Mage.Sets/src/mage/cards/s/ScorchedRuins.java
+++ b/Mage.Sets/src/mage/cards/s/ScorchedRuins.java
@@ -25,7 +25,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author nick.myers
*/
-public class ScorchedRuins extends CardImpl {
+public final class ScorchedRuins extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("two untapped lands");
static {
diff --git a/Mage.Sets/src/mage/cards/s/ScorchedRusalka.java b/Mage.Sets/src/mage/cards/s/ScorchedRusalka.java
index cbfdcb5d6ae..72edeea23a6 100644
--- a/Mage.Sets/src/mage/cards/s/ScorchedRusalka.java
+++ b/Mage.Sets/src/mage/cards/s/ScorchedRusalka.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class ScorchedRusalka extends CardImpl {
+public final class ScorchedRusalka extends CardImpl {
public ScorchedRusalka(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScorchingLava.java b/Mage.Sets/src/mage/cards/s/ScorchingLava.java
index 09653d9b662..fd3d51d9181 100644
--- a/Mage.Sets/src/mage/cards/s/ScorchingLava.java
+++ b/Mage.Sets/src/mage/cards/s/ScorchingLava.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class ScorchingLava extends CardImpl {
+public final class ScorchingLava extends CardImpl {
public ScorchingLava(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScorchingMissile.java b/Mage.Sets/src/mage/cards/s/ScorchingMissile.java
index b535c54d544..02151179e1c 100644
--- a/Mage.Sets/src/mage/cards/s/ScorchingMissile.java
+++ b/Mage.Sets/src/mage/cards/s/ScorchingMissile.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author TheElk801
*/
-public class ScorchingMissile extends CardImpl {
+public final class ScorchingMissile extends CardImpl {
public ScorchingMissile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScorchingSpear.java b/Mage.Sets/src/mage/cards/s/ScorchingSpear.java
index 77c5bcd165b..2f2cc7529a7 100644
--- a/Mage.Sets/src/mage/cards/s/ScorchingSpear.java
+++ b/Mage.Sets/src/mage/cards/s/ScorchingSpear.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class ScorchingSpear extends CardImpl {
+public final class ScorchingSpear extends CardImpl {
public ScorchingSpear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScorchingWinds.java b/Mage.Sets/src/mage/cards/s/ScorchingWinds.java
index 3c5bd2a76c7..5d03cbd7218 100644
--- a/Mage.Sets/src/mage/cards/s/ScorchingWinds.java
+++ b/Mage.Sets/src/mage/cards/s/ScorchingWinds.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author TheElk801
*/
-public class ScorchingWinds extends CardImpl {
+public final class ScorchingWinds extends CardImpl {
public ScorchingWinds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Scorchwalker.java b/Mage.Sets/src/mage/cards/s/Scorchwalker.java
index dfc1522d1a8..14a43778de5 100644
--- a/Mage.Sets/src/mage/cards/s/Scorchwalker.java
+++ b/Mage.Sets/src/mage/cards/s/Scorchwalker.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class Scorchwalker extends CardImpl {
+public final class Scorchwalker extends CardImpl {
public Scorchwalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScoriaCat.java b/Mage.Sets/src/mage/cards/s/ScoriaCat.java
index 4667971a928..00cdfeeff86 100644
--- a/Mage.Sets/src/mage/cards/s/ScoriaCat.java
+++ b/Mage.Sets/src/mage/cards/s/ScoriaCat.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LoneFox
*/
-public class ScoriaCat extends CardImpl {
+public final class ScoriaCat extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/ScoriaElemental.java b/Mage.Sets/src/mage/cards/s/ScoriaElemental.java
index 13c23b03f3b..89ee929c6f0 100644
--- a/Mage.Sets/src/mage/cards/s/ScoriaElemental.java
+++ b/Mage.Sets/src/mage/cards/s/ScoriaElemental.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ScoriaElemental extends CardImpl {
+public final class ScoriaElemental extends CardImpl {
public ScoriaElemental (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScoriaWurm.java b/Mage.Sets/src/mage/cards/s/ScoriaWurm.java
index e65554ff670..4bb4912f023 100644
--- a/Mage.Sets/src/mage/cards/s/ScoriaWurm.java
+++ b/Mage.Sets/src/mage/cards/s/ScoriaWurm.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class ScoriaWurm extends CardImpl {
+public final class ScoriaWurm extends CardImpl {
public ScoriaWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScornedVillager.java b/Mage.Sets/src/mage/cards/s/ScornedVillager.java
index 8a4b9a475ad..dbbcab8b063 100644
--- a/Mage.Sets/src/mage/cards/s/ScornedVillager.java
+++ b/Mage.Sets/src/mage/cards/s/ScornedVillager.java
@@ -47,7 +47,7 @@ import mage.constants.TargetController;
*
* @author North
*/
-public class ScornedVillager extends CardImpl {
+public final class ScornedVillager extends CardImpl {
public ScornedVillager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScornfulAetherLich.java b/Mage.Sets/src/mage/cards/s/ScornfulAetherLich.java
index 128184d85c9..2cc06431178 100644
--- a/Mage.Sets/src/mage/cards/s/ScornfulAetherLich.java
+++ b/Mage.Sets/src/mage/cards/s/ScornfulAetherLich.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ScornfulAetherLich extends CardImpl {
+public final class ScornfulAetherLich extends CardImpl {
public ScornfulAetherLich(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ScornfulEgotist.java b/Mage.Sets/src/mage/cards/s/ScornfulEgotist.java
index 612856fcde9..11b5abccb97 100644
--- a/Mage.Sets/src/mage/cards/s/ScornfulEgotist.java
+++ b/Mage.Sets/src/mage/cards/s/ScornfulEgotist.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ScornfulEgotist extends CardImpl {
+public final class ScornfulEgotist extends CardImpl {
public ScornfulEgotist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Scour.java b/Mage.Sets/src/mage/cards/s/Scour.java
index 99d1acc4021..b59a89fc3d6 100644
--- a/Mage.Sets/src/mage/cards/s/Scour.java
+++ b/Mage.Sets/src/mage/cards/s/Scour.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class Scour extends CardImpl {
+public final class Scour extends CardImpl {
public Scour(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ScourFromExistence.java b/Mage.Sets/src/mage/cards/s/ScourFromExistence.java
index db8d3ae12e9..1bec7a5dc60 100644
--- a/Mage.Sets/src/mage/cards/s/ScourFromExistence.java
+++ b/Mage.Sets/src/mage/cards/s/ScourFromExistence.java
@@ -38,7 +38,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class ScourFromExistence extends CardImpl {
+public final class ScourFromExistence extends CardImpl {
public ScourFromExistence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{7}");
diff --git a/Mage.Sets/src/mage/cards/s/ScourTheLaboratory.java b/Mage.Sets/src/mage/cards/s/ScourTheLaboratory.java
index a7147d236dd..9ad9e3cd07f 100644
--- a/Mage.Sets/src/mage/cards/s/ScourTheLaboratory.java
+++ b/Mage.Sets/src/mage/cards/s/ScourTheLaboratory.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ScourTheLaboratory extends CardImpl {
+public final class ScourTheLaboratory extends CardImpl {
public ScourTheLaboratory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ScouredBarrens.java b/Mage.Sets/src/mage/cards/s/ScouredBarrens.java
index c1a9c021a03..b1bba8213dd 100644
--- a/Mage.Sets/src/mage/cards/s/ScouredBarrens.java
+++ b/Mage.Sets/src/mage/cards/s/ScouredBarrens.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class ScouredBarrens extends CardImpl {
+public final class ScouredBarrens extends CardImpl {
public ScouredBarrens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeDevil.java b/Mage.Sets/src/mage/cards/s/ScourgeDevil.java
index fe8e2274e70..8ea107611f8 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeDevil.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeDevil.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class ScourgeDevil extends CardImpl {
+public final class ScourgeDevil extends CardImpl {
public ScourgeDevil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java b/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java
index 5a6cf48157d..9bb01454879 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ScourgeOfFleets extends CardImpl {
+public final class ScourgeOfFleets extends CardImpl {
public ScourgeOfFleets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfGeierReach.java b/Mage.Sets/src/mage/cards/s/ScourgeOfGeierReach.java
index 70d304ac502..25205eecc3f 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfGeierReach.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfGeierReach.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class ScourgeOfGeierReach extends CardImpl {
+public final class ScourgeOfGeierReach extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("for each creature your opponents control");
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfKherRidges.java b/Mage.Sets/src/mage/cards/s/ScourgeOfKherRidges.java
index a5be29257b3..4a07a0041c4 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfKherRidges.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfKherRidges.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class ScourgeOfKherRidges extends CardImpl {
+public final class ScourgeOfKherRidges extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("other creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfNelToth.java b/Mage.Sets/src/mage/cards/s/ScourgeOfNelToth.java
index df5558122ed..7d30d51aded 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfNelToth.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfNelToth.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ScourgeOfNelToth extends CardImpl {
+public final class ScourgeOfNelToth extends CardImpl {
public ScourgeOfNelToth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfNumai.java b/Mage.Sets/src/mage/cards/s/ScourgeOfNumai.java
index ae4b70e86fb..4ddaf162964 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfNumai.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfNumai.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ScourgeOfNumai extends CardImpl {
+public final class ScourgeOfNumai extends CardImpl {
public ScourgeOfNumai(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfSkolaVale.java b/Mage.Sets/src/mage/cards/s/ScourgeOfSkolaVale.java
index ba00f6a02ee..167eec27e50 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfSkolaVale.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfSkolaVale.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class ScourgeOfSkolaVale extends CardImpl {
+public final class ScourgeOfSkolaVale extends CardImpl {
public ScourgeOfSkolaVale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfTheNobilis.java b/Mage.Sets/src/mage/cards/s/ScourgeOfTheNobilis.java
index 61086e213ee..c71db6ed062 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfTheNobilis.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfTheNobilis.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ScourgeOfTheNobilis extends CardImpl {
+public final class ScourgeOfTheNobilis extends CardImpl {
public ScourgeOfTheNobilis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfTheThrone.java b/Mage.Sets/src/mage/cards/s/ScourgeOfTheThrone.java
index f17c82e002a..50cd36c1fba 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfTheThrone.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfTheThrone.java
@@ -30,8 +30,10 @@ package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
-import mage.abilities.TriggeredAbilityImpl;
-import mage.abilities.effects.Effect;
+import mage.abilities.TriggeredAbility;
+import mage.abilities.common.AttacksFirstTimeTriggeredAbility;
+import mage.abilities.condition.Condition;
+import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.AdditionalCombatPhaseEffect;
import mage.abilities.effects.common.UntapAllControllerEffect;
import mage.abilities.keyword.DethroneAbility;
@@ -40,19 +42,15 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Zone;
-import mage.filter.common.FilterAttackingCreature;
+import mage.filter.StaticFilters;
import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
import mage.players.Player;
-import mage.util.CardUtil;
/**
*
* @author LevelX2
*/
-public class ScourgeOfTheThrone extends CardImpl {
+public final class ScourgeOfTheThrone extends CardImpl {
public ScourgeOfTheThrone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
@@ -66,9 +64,21 @@ public class ScourgeOfTheThrone extends CardImpl {
// Dethrone (Whenever this creature attacks the player with the most life or tied for most life, put a +1/+1 counter on it.)
this.addAbility(new DethroneAbility());
// Whenever Scourge of the Throne attacks for the first time each turn, if it's attacking the player with the most life or tied for most life, untap all attacking creatures. After this phase, there is an additional combat phase.
- Ability ability = new ScourgeOfTheThroneAttacksTriggeredAbility(new UntapAllControllerEffect(new FilterAttackingCreature(), "untap all attacking creatures"), false);
+ TriggeredAbility ability = new AttacksFirstTimeTriggeredAbility(
+ new UntapAllControllerEffect(
+ StaticFilters.FILTER_ATTACKING_CREATURES,
+ "untap all attacking creatures"
+ ), false
+ );
ability.addEffect(new AdditionalCombatPhaseEffect());
- this.addAbility(ability);
+ this.addAbility(new ConditionalTriggeredAbility(
+ ability,
+ ScourgeOfTheThroneCondition.instance,
+ "Whenever {this} attacks for the first time each turn, "
+ + "if it's attacking the player with the most life or tied for most life, "
+ + "untap all attacking creatures. After this phase, "
+ + "there is an additional combat phase."
+ ));
}
public ScourgeOfTheThrone(final ScourgeOfTheThrone card) {
@@ -81,35 +91,22 @@ public class ScourgeOfTheThrone extends CardImpl {
}
}
-class ScourgeOfTheThroneAttacksTriggeredAbility extends TriggeredAbilityImpl {
+enum ScourgeOfTheThroneCondition implements Condition {
- public ScourgeOfTheThroneAttacksTriggeredAbility(Effect effect, boolean optional) {
- super(Zone.BATTLEFIELD, effect, optional);
- }
-
- public ScourgeOfTheThroneAttacksTriggeredAbility(final ScourgeOfTheThroneAttacksTriggeredAbility ability) {
- super(ability);
- }
+ instance;
@Override
- public void reset(Game game) {
- game.getState().setValue(CardUtil.getCardZoneString("amountAttacks", getSourceId(), game), new Integer(0));
- }
-
- @Override
- public boolean checkInterveningIfClause(Game game) {
- UUID defenderId = game.getCombat().getDefenderId(getSourceId());
+ public boolean apply(Game game, Ability source) {
+ UUID defenderId = game.getCombat().getDefenderId(source.getSourceId());
if (defenderId != null) {
Player attackedPlayer = game.getPlayer(defenderId);
- Player controller = game.getPlayer(getControllerId());
+ Player controller = game.getPlayer(source.getControllerId());
if (attackedPlayer != null && controller != null) {
int mostLife = Integer.MIN_VALUE;
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
- if (player != null) {
- if (player.getLife() > mostLife) {
- mostLife = player.getLife();
- }
+ if (player != null && player.getLife() > mostLife) {
+ mostLife = player.getLife();
}
}
return attackedPlayer.getLife() == mostLife;
@@ -119,34 +116,8 @@ class ScourgeOfTheThroneAttacksTriggeredAbility extends TriggeredAbilityImpl {
}
@Override
- public boolean checkEventType(GameEvent event, Game game) {
- return event.getType() == EventType.ATTACKER_DECLARED;
+ public String toString() {
+ return "{this} is attacking the player with the most life or tied for most life";
}
- @Override
- public boolean checkTrigger(GameEvent event, Game game) {
- if (event.getSourceId().equals(this.getSourceId())) {
- Integer amountAttacks = (Integer) game.getState().getValue(CardUtil.getCardZoneString("amountAttacks", getSourceId(), game));
- if (amountAttacks == null || amountAttacks.intValue() < 1) {
- if (amountAttacks == null) {
- amountAttacks = new Integer(1);
- } else {
- ++amountAttacks;
- }
- game.getState().setValue(CardUtil.getCardZoneString("amountAttacks", getSourceId(), game), amountAttacks);
- return true;
- }
- }
- return false;
- }
-
- @Override
- public String getRule() {
- return "Whenever {this} attacks for the first time each turn, if it's attacking the player with the most life or tied for most life, " + super.getRule();
- }
-
- @Override
- public ScourgeOfTheThroneAttacksTriggeredAbility copy() {
- return new ScourgeOfTheThroneAttacksTriggeredAbility(this);
- }
}
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java b/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java
index 26ca584cc72..da2660dd140 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class ScourgeOfValkas extends CardImpl {
+public final class ScourgeOfValkas extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("{this} or another Dragon");
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeServant.java b/Mage.Sets/src/mage/cards/s/ScourgeServant.java
index 91b94cfba55..f088b22376c 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeServant.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeServant.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ScourgeServant extends CardImpl {
+public final class ScourgeServant extends CardImpl {
public ScourgeServant (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeWolf.java b/Mage.Sets/src/mage/cards/s/ScourgeWolf.java
index 4457a18bf84..5903a782856 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeWolf.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeWolf.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ScourgeWolf extends CardImpl {
+public final class ScourgeWolf extends CardImpl {
public ScourgeWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Scourgemark.java b/Mage.Sets/src/mage/cards/s/Scourgemark.java
index 573e0ca7a3b..798055c1637 100644
--- a/Mage.Sets/src/mage/cards/s/Scourgemark.java
+++ b/Mage.Sets/src/mage/cards/s/Scourgemark.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Scourgemark extends CardImpl {
+public final class Scourgemark extends CardImpl {
public Scourgemark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Scourglass.java b/Mage.Sets/src/mage/cards/s/Scourglass.java
index 4c46f375ec8..ede75a9195f 100644
--- a/Mage.Sets/src/mage/cards/s/Scourglass.java
+++ b/Mage.Sets/src/mage/cards/s/Scourglass.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class Scourglass extends CardImpl {
+public final class Scourglass extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanents except for artifacts and lands");
diff --git a/Mage.Sets/src/mage/cards/s/ScouringSands.java b/Mage.Sets/src/mage/cards/s/ScouringSands.java
index 4bc7e496001..2caf2c1f35c 100644
--- a/Mage.Sets/src/mage/cards/s/ScouringSands.java
+++ b/Mage.Sets/src/mage/cards/s/ScouringSands.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class ScouringSands extends CardImpl {
+public final class ScouringSands extends CardImpl {
public ScouringSands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScoutTheBorders.java b/Mage.Sets/src/mage/cards/s/ScoutTheBorders.java
index b3187104328..afc2a6c6723 100644
--- a/Mage.Sets/src/mage/cards/s/ScoutTheBorders.java
+++ b/Mage.Sets/src/mage/cards/s/ScoutTheBorders.java
@@ -49,7 +49,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class ScoutTheBorders extends CardImpl {
+public final class ScoutTheBorders extends CardImpl {
public ScoutTheBorders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScoutThePerimeter.java b/Mage.Sets/src/mage/cards/s/ScoutThePerimeter.java
index a989e71c063..fda1ac0cf7e 100644
--- a/Mage.Sets/src/mage/cards/s/ScoutThePerimeter.java
+++ b/Mage.Sets/src/mage/cards/s/ScoutThePerimeter.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class ScoutThePerimeter extends CardImpl {
+public final class ScoutThePerimeter extends CardImpl {
public ScoutThePerimeter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScoutTrooper.java b/Mage.Sets/src/mage/cards/s/ScoutTrooper.java
index db107e465f7..a4aff01a188 100644
--- a/Mage.Sets/src/mage/cards/s/ScoutTrooper.java
+++ b/Mage.Sets/src/mage/cards/s/ScoutTrooper.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class ScoutTrooper extends CardImpl {
+public final class ScoutTrooper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/s/ScoutingTrek.java b/Mage.Sets/src/mage/cards/s/ScoutingTrek.java
index 2895e3c13dc..20aa6ae24fc 100644
--- a/Mage.Sets/src/mage/cards/s/ScoutingTrek.java
+++ b/Mage.Sets/src/mage/cards/s/ScoutingTrek.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterBasicLandCard;
*
* @author LoneFox
*/
-public class ScoutingTrek extends CardImpl {
+public final class ScoutingTrek extends CardImpl {
public ScoutingTrek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScoutsWarning.java b/Mage.Sets/src/mage/cards/s/ScoutsWarning.java
index c5ebbd30d67..b9450f28112 100644
--- a/Mage.Sets/src/mage/cards/s/ScoutsWarning.java
+++ b/Mage.Sets/src/mage/cards/s/ScoutsWarning.java
@@ -50,7 +50,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class ScoutsWarning extends CardImpl {
+public final class ScoutsWarning extends CardImpl {
public ScoutsWarning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ScrabblingClaws.java b/Mage.Sets/src/mage/cards/s/ScrabblingClaws.java
index 7a7daa4a03e..8c7b23aa9d2 100644
--- a/Mage.Sets/src/mage/cards/s/ScrabblingClaws.java
+++ b/Mage.Sets/src/mage/cards/s/ScrabblingClaws.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class ScrabblingClaws extends CardImpl {
+public final class ScrabblingClaws extends CardImpl {
public ScrabblingClaws(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/s/Scragnoth.java b/Mage.Sets/src/mage/cards/s/Scragnoth.java
index a1ceeaa64a7..3c0dc023e2e 100644
--- a/Mage.Sets/src/mage/cards/s/Scragnoth.java
+++ b/Mage.Sets/src/mage/cards/s/Scragnoth.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author shieldal
*/
-public class Scragnoth extends CardImpl {
+public final class Scragnoth extends CardImpl {
public Scragnoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Scrambleverse.java b/Mage.Sets/src/mage/cards/s/Scrambleverse.java
index 27f7a7bf2a5..866d729bb43 100644
--- a/Mage.Sets/src/mage/cards/s/Scrambleverse.java
+++ b/Mage.Sets/src/mage/cards/s/Scrambleverse.java
@@ -48,7 +48,7 @@ import mage.util.RandomUtil;
*
* @author nantuko
*/
-public class Scrambleverse extends CardImpl {
+public final class Scrambleverse extends CardImpl {
public Scrambleverse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Scrap.java b/Mage.Sets/src/mage/cards/s/Scrap.java
index 2932a267bc2..0f56c330ee5 100644
--- a/Mage.Sets/src/mage/cards/s/Scrap.java
+++ b/Mage.Sets/src/mage/cards/s/Scrap.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Backfir3
*/
-public class Scrap extends CardImpl {
+public final class Scrap extends CardImpl {
public Scrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScrapMastery.java b/Mage.Sets/src/mage/cards/s/ScrapMastery.java
index d1faffabbd1..87464a8ed0d 100644
--- a/Mage.Sets/src/mage/cards/s/ScrapMastery.java
+++ b/Mage.Sets/src/mage/cards/s/ScrapMastery.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ScrapMastery extends CardImpl {
+public final class ScrapMastery extends CardImpl {
public ScrapMastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScrapTrawler.java b/Mage.Sets/src/mage/cards/s/ScrapTrawler.java
index 8ff4289fbef..189b7f79287 100644
--- a/Mage.Sets/src/mage/cards/s/ScrapTrawler.java
+++ b/Mage.Sets/src/mage/cards/s/ScrapTrawler.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class ScrapTrawler extends CardImpl {
+public final class ScrapTrawler extends CardImpl {
public ScrapTrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/Scrapbasket.java b/Mage.Sets/src/mage/cards/s/Scrapbasket.java
index cb2b6727d9b..016a6048ff3 100644
--- a/Mage.Sets/src/mage/cards/s/Scrapbasket.java
+++ b/Mage.Sets/src/mage/cards/s/Scrapbasket.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class Scrapbasket extends CardImpl {
+public final class Scrapbasket extends CardImpl {
public Scrapbasket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/ScrapdiverSerpent.java b/Mage.Sets/src/mage/cards/s/ScrapdiverSerpent.java
index 892fbf9d076..fab92dee169 100644
--- a/Mage.Sets/src/mage/cards/s/ScrapdiverSerpent.java
+++ b/Mage.Sets/src/mage/cards/s/ScrapdiverSerpent.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author ayratn
*/
-public class ScrapdiverSerpent extends CardImpl {
+public final class ScrapdiverSerpent extends CardImpl {
public ScrapdiverSerpent (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Scrapheap.java b/Mage.Sets/src/mage/cards/s/Scrapheap.java
index 50813b139f6..50a6e342604 100644
--- a/Mage.Sets/src/mage/cards/s/Scrapheap.java
+++ b/Mage.Sets/src/mage/cards/s/Scrapheap.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class Scrapheap extends CardImpl {
+public final class Scrapheap extends CardImpl {
public Scrapheap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/ScrapheapScrounger.java b/Mage.Sets/src/mage/cards/s/ScrapheapScrounger.java
index 6c678f12e97..df5a346c0af 100644
--- a/Mage.Sets/src/mage/cards/s/ScrapheapScrounger.java
+++ b/Mage.Sets/src/mage/cards/s/ScrapheapScrounger.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class ScrapheapScrounger extends CardImpl {
+public final class ScrapheapScrounger extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("another creature card");
diff --git a/Mage.Sets/src/mage/cards/s/ScrapperChampion.java b/Mage.Sets/src/mage/cards/s/ScrapperChampion.java
index 53bbfee7964..5bcd4df0bbf 100644
--- a/Mage.Sets/src/mage/cards/s/ScrapperChampion.java
+++ b/Mage.Sets/src/mage/cards/s/ScrapperChampion.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class ScrapperChampion extends CardImpl {
+public final class ScrapperChampion extends CardImpl {
public ScrapperChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScrapskinDrake.java b/Mage.Sets/src/mage/cards/s/ScrapskinDrake.java
index b9ebc81bc22..ec14e5567df 100644
--- a/Mage.Sets/src/mage/cards/s/ScrapskinDrake.java
+++ b/Mage.Sets/src/mage/cards/s/ScrapskinDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
* @author noxx
*/
-public class ScrapskinDrake extends CardImpl {
+public final class ScrapskinDrake extends CardImpl {
public ScrapskinDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ScrapyardMongrel.java b/Mage.Sets/src/mage/cards/s/ScrapyardMongrel.java
index e42a1b97d2f..1ed92a90615 100644
--- a/Mage.Sets/src/mage/cards/s/ScrapyardMongrel.java
+++ b/Mage.Sets/src/mage/cards/s/ScrapyardMongrel.java
@@ -50,7 +50,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author Quercitron
*/
-public class ScrapyardMongrel extends CardImpl {
+public final class ScrapyardMongrel extends CardImpl {
public ScrapyardMongrel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScrapyardSalvo.java b/Mage.Sets/src/mage/cards/s/ScrapyardSalvo.java
index a722f442c8f..1dfd0c2162f 100644
--- a/Mage.Sets/src/mage/cards/s/ScrapyardSalvo.java
+++ b/Mage.Sets/src/mage/cards/s/ScrapyardSalvo.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author North
*/
-public class ScrapyardSalvo extends CardImpl {
+public final class ScrapyardSalvo extends CardImpl {
public ScrapyardSalvo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScreamingFury.java b/Mage.Sets/src/mage/cards/s/ScreamingFury.java
index e845d1fe383..fad2e5d1d41 100644
--- a/Mage.Sets/src/mage/cards/s/ScreamingFury.java
+++ b/Mage.Sets/src/mage/cards/s/ScreamingFury.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ScreamingFury extends CardImpl {
+public final class ScreamingFury extends CardImpl {
public ScreamingFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScreamingSeahawk.java b/Mage.Sets/src/mage/cards/s/ScreamingSeahawk.java
index 592239be65c..fa1148077ad 100644
--- a/Mage.Sets/src/mage/cards/s/ScreamingSeahawk.java
+++ b/Mage.Sets/src/mage/cards/s/ScreamingSeahawk.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
* @author fireshoes
*/
-public class ScreamingSeahawk extends CardImpl {
+public final class ScreamingSeahawk extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Screaming Seahawk");
diff --git a/Mage.Sets/src/mage/cards/s/ScreamreachBrawler.java b/Mage.Sets/src/mage/cards/s/ScreamreachBrawler.java
index 8f186aca56d..e5e24434593 100644
--- a/Mage.Sets/src/mage/cards/s/ScreamreachBrawler.java
+++ b/Mage.Sets/src/mage/cards/s/ScreamreachBrawler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ScreamreachBrawler extends CardImpl {
+public final class ScreamreachBrawler extends CardImpl {
public ScreamreachBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ScreamsFromWithin.java b/Mage.Sets/src/mage/cards/s/ScreamsFromWithin.java
index 182f8114514..4d164d54b94 100644
--- a/Mage.Sets/src/mage/cards/s/ScreamsFromWithin.java
+++ b/Mage.Sets/src/mage/cards/s/ScreamsFromWithin.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class ScreamsFromWithin extends CardImpl {
+public final class ScreamsFromWithin extends CardImpl {
public ScreamsFromWithin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScreamsOfTheDamned.java b/Mage.Sets/src/mage/cards/s/ScreamsOfTheDamned.java
index 4fe30749a95..ad30519b525 100644
--- a/Mage.Sets/src/mage/cards/s/ScreamsOfTheDamned.java
+++ b/Mage.Sets/src/mage/cards/s/ScreamsOfTheDamned.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author cbt33
*/
-public class ScreamsOfTheDamned extends CardImpl {
+public final class ScreamsOfTheDamned extends CardImpl {
public ScreamsOfTheDamned(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScreechingBat.java b/Mage.Sets/src/mage/cards/s/ScreechingBat.java
index 2175bfca7d4..e355fbb10b9 100644
--- a/Mage.Sets/src/mage/cards/s/ScreechingBat.java
+++ b/Mage.Sets/src/mage/cards/s/ScreechingBat.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
/**
* @author nantuko
*/
-public class ScreechingBat extends CardImpl {
+public final class ScreechingBat extends CardImpl {
public ScreechingBat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScreechingBuzzard.java b/Mage.Sets/src/mage/cards/s/ScreechingBuzzard.java
index b911b36f1d8..c65f62b7486 100644
--- a/Mage.Sets/src/mage/cards/s/ScreechingBuzzard.java
+++ b/Mage.Sets/src/mage/cards/s/ScreechingBuzzard.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author djbrez
*/
-public class ScreechingBuzzard extends CardImpl {
+public final class ScreechingBuzzard extends CardImpl {
public ScreechingBuzzard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScreechingDrake.java b/Mage.Sets/src/mage/cards/s/ScreechingDrake.java
index e3d930c69e4..fa30efe8523 100644
--- a/Mage.Sets/src/mage/cards/s/ScreechingDrake.java
+++ b/Mage.Sets/src/mage/cards/s/ScreechingDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ScreechingDrake extends CardImpl {
+public final class ScreechingDrake extends CardImpl {
public ScreechingDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ScreechingGriffin.java b/Mage.Sets/src/mage/cards/s/ScreechingGriffin.java
index dcf48081ecb..ae20412a659 100644
--- a/Mage.Sets/src/mage/cards/s/ScreechingGriffin.java
+++ b/Mage.Sets/src/mage/cards/s/ScreechingGriffin.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class ScreechingGriffin extends CardImpl {
+public final class ScreechingGriffin extends CardImpl {
public ScreechingGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ScreechingHarpy.java b/Mage.Sets/src/mage/cards/s/ScreechingHarpy.java
index 965f90458a2..d267c2ab71d 100644
--- a/Mage.Sets/src/mage/cards/s/ScreechingHarpy.java
+++ b/Mage.Sets/src/mage/cards/s/ScreechingHarpy.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ScreechingHarpy extends CardImpl {
+public final class ScreechingHarpy extends CardImpl {
public ScreechingHarpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScreechingSilcaw.java b/Mage.Sets/src/mage/cards/s/ScreechingSilcaw.java
index 6a521dd656b..d8511c0968c 100644
--- a/Mage.Sets/src/mage/cards/s/ScreechingSilcaw.java
+++ b/Mage.Sets/src/mage/cards/s/ScreechingSilcaw.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author ayratn
*/
-public class ScreechingSilcaw extends CardImpl {
+public final class ScreechingSilcaw extends CardImpl {
private static final String text = "Metalcraft - Whenever Screeching Silcaw deals combat damage to a player, if you control three or more artifacts, that player puts the top four cards of their library into their graveyard.";
diff --git a/Mage.Sets/src/mage/cards/s/ScreechingSkaab.java b/Mage.Sets/src/mage/cards/s/ScreechingSkaab.java
index 7d7f18d0539..d708acda7ce 100644
--- a/Mage.Sets/src/mage/cards/s/ScreechingSkaab.java
+++ b/Mage.Sets/src/mage/cards/s/ScreechingSkaab.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ScreechingSkaab extends CardImpl {
+public final class ScreechingSkaab extends CardImpl {
public ScreechingSkaab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ScreechingSliver.java b/Mage.Sets/src/mage/cards/s/ScreechingSliver.java
index 6094aa5ec22..bf9787e5b95 100644
--- a/Mage.Sets/src/mage/cards/s/ScreechingSliver.java
+++ b/Mage.Sets/src/mage/cards/s/ScreechingSliver.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author anonymous
*/
-public class ScreechingSliver extends CardImpl {
+public final class ScreechingSliver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers");
diff --git a/Mage.Sets/src/mage/cards/s/ScribNibblers.java b/Mage.Sets/src/mage/cards/s/ScribNibblers.java
index 1c8070a2bdf..847480a90d9 100644
--- a/Mage.Sets/src/mage/cards/s/ScribNibblers.java
+++ b/Mage.Sets/src/mage/cards/s/ScribNibblers.java
@@ -50,7 +50,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class ScribNibblers extends CardImpl {
+public final class ScribNibblers extends CardImpl {
public ScribNibblers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScribeOfTheMindful.java b/Mage.Sets/src/mage/cards/s/ScribeOfTheMindful.java
index 1c393ff7519..ec1543edbff 100644
--- a/Mage.Sets/src/mage/cards/s/ScribeOfTheMindful.java
+++ b/Mage.Sets/src/mage/cards/s/ScribeOfTheMindful.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class ScribeOfTheMindful extends CardImpl {
+public final class ScribeOfTheMindful extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/Scrivener.java b/Mage.Sets/src/mage/cards/s/Scrivener.java
index 65b3e428f5d..ab07611f452 100644
--- a/Mage.Sets/src/mage/cards/s/Scrivener.java
+++ b/Mage.Sets/src/mage/cards/s/Scrivener.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
* @author cbt33, BetaSteward (GraveDigger)
*/
-public class Scrivener extends CardImpl {
+public final class Scrivener extends CardImpl {
private static final FilterCard filter = new FilterCard("instant card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/ScrollOfAvacyn.java b/Mage.Sets/src/mage/cards/s/ScrollOfAvacyn.java
index 950477367cd..a596c3a485d 100644
--- a/Mage.Sets/src/mage/cards/s/ScrollOfAvacyn.java
+++ b/Mage.Sets/src/mage/cards/s/ScrollOfAvacyn.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class ScrollOfAvacyn extends CardImpl {
+public final class ScrollOfAvacyn extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/s/ScrollOfGriselbrand.java b/Mage.Sets/src/mage/cards/s/ScrollOfGriselbrand.java
index 5a6651b57f2..b5bf6f6577b 100644
--- a/Mage.Sets/src/mage/cards/s/ScrollOfGriselbrand.java
+++ b/Mage.Sets/src/mage/cards/s/ScrollOfGriselbrand.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class ScrollOfGriselbrand extends CardImpl {
+public final class ScrollOfGriselbrand extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java b/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java
index 5189548a174..61ce9e78256 100644
--- a/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java
+++ b/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ScrollOfOrigins extends CardImpl {
+public final class ScrollOfOrigins extends CardImpl {
public ScrollOfOrigins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/ScrollOfTheMasters.java b/Mage.Sets/src/mage/cards/s/ScrollOfTheMasters.java
index f92d6abc49f..05d01cac161 100644
--- a/Mage.Sets/src/mage/cards/s/ScrollOfTheMasters.java
+++ b/Mage.Sets/src/mage/cards/s/ScrollOfTheMasters.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ScrollOfTheMasters extends CardImpl {
+public final class ScrollOfTheMasters extends CardImpl {
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/s/ScrollRack.java b/Mage.Sets/src/mage/cards/s/ScrollRack.java
index e677b719df0..07eb87d2827 100644
--- a/Mage.Sets/src/mage/cards/s/ScrollRack.java
+++ b/Mage.Sets/src/mage/cards/s/ScrollRack.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class ScrollRack extends CardImpl {
+public final class ScrollRack extends CardImpl {
public ScrollRack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/ScrollThief.java b/Mage.Sets/src/mage/cards/s/ScrollThief.java
index 7f8c71694da..d54a6ae2dee 100644
--- a/Mage.Sets/src/mage/cards/s/ScrollThief.java
+++ b/Mage.Sets/src/mage/cards/s/ScrollThief.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ScrollThief extends CardImpl {
+public final class ScrollThief extends CardImpl {
public ScrollThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Scrounge.java b/Mage.Sets/src/mage/cards/s/Scrounge.java
index 9ce6efeaa67..b20fa573d50 100644
--- a/Mage.Sets/src/mage/cards/s/Scrounge.java
+++ b/Mage.Sets/src/mage/cards/s/Scrounge.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author LoneFox & L_J
*/
-public class Scrounge extends CardImpl {
+public final class Scrounge extends CardImpl {
public Scrounge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScroungedScythe.java b/Mage.Sets/src/mage/cards/s/ScroungedScythe.java
index eded8abdd17..805dcf1fba3 100644
--- a/Mage.Sets/src/mage/cards/s/ScroungedScythe.java
+++ b/Mage.Sets/src/mage/cards/s/ScroungedScythe.java
@@ -45,7 +45,7 @@ import mage.constants.*;
*
* @author fireshoes
*/
-public class ScroungedScythe extends CardImpl {
+public final class ScroungedScythe extends CardImpl {
private static final String staticText = "As long as equipped creature is a Human, it has menace";
diff --git a/Mage.Sets/src/mage/cards/s/ScroungerOfSouls.java b/Mage.Sets/src/mage/cards/s/ScroungerOfSouls.java
index 1c7543844e0..a695c09c538 100644
--- a/Mage.Sets/src/mage/cards/s/ScroungerOfSouls.java
+++ b/Mage.Sets/src/mage/cards/s/ScroungerOfSouls.java
@@ -8,7 +8,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-public class ScroungerOfSouls extends CardImpl {
+public final class ScroungerOfSouls extends CardImpl {
public ScroungerOfSouls(UUID cardID, CardSetInfo cardSetInfo){
super(cardID, cardSetInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScroungingBandar.java b/Mage.Sets/src/mage/cards/s/ScroungingBandar.java
index a2942b8c16b..a44c57e1dbb 100644
--- a/Mage.Sets/src/mage/cards/s/ScroungingBandar.java
+++ b/Mage.Sets/src/mage/cards/s/ScroungingBandar.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class ScroungingBandar extends CardImpl {
+public final class ScroungingBandar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/s/Scrubland.java b/Mage.Sets/src/mage/cards/s/Scrubland.java
index 926fd0423c8..63da1965423 100644
--- a/Mage.Sets/src/mage/cards/s/Scrubland.java
+++ b/Mage.Sets/src/mage/cards/s/Scrubland.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class Scrubland extends CardImpl {
+public final class Scrubland extends CardImpl {
public Scrubland(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/ScrybRanger.java b/Mage.Sets/src/mage/cards/s/ScrybRanger.java
index cf02647b4fd..3454c2a3f94 100644
--- a/Mage.Sets/src/mage/cards/s/ScrybRanger.java
+++ b/Mage.Sets/src/mage/cards/s/ScrybRanger.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ScrybRanger extends CardImpl {
+public final class ScrybRanger extends CardImpl {
private static final FilterControlledLandPermanent filterForest = new FilterControlledLandPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/s/ScrybSprites.java b/Mage.Sets/src/mage/cards/s/ScrybSprites.java
index 02b2ddf39f4..5127d24651b 100644
--- a/Mage.Sets/src/mage/cards/s/ScrybSprites.java
+++ b/Mage.Sets/src/mage/cards/s/ScrybSprites.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ScrybSprites extends CardImpl {
+public final class ScrybSprites extends CardImpl {
public ScrybSprites(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScryingSheets.java b/Mage.Sets/src/mage/cards/s/ScryingSheets.java
index 07835cb876d..0cd23060901 100644
--- a/Mage.Sets/src/mage/cards/s/ScryingSheets.java
+++ b/Mage.Sets/src/mage/cards/s/ScryingSheets.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class ScryingSheets extends CardImpl {
+public final class ScryingSheets extends CardImpl {
public ScryingSheets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SculptingSteel.java b/Mage.Sets/src/mage/cards/s/SculptingSteel.java
index b3d77b1149d..a5b35ee18a5 100644
--- a/Mage.Sets/src/mage/cards/s/SculptingSteel.java
+++ b/Mage.Sets/src/mage/cards/s/SculptingSteel.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author jeffwadsworth
*/
-public class SculptingSteel extends CardImpl {
+public final class SculptingSteel extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/s/ScuteMob.java b/Mage.Sets/src/mage/cards/s/ScuteMob.java
index cd73475df86..cc7f6a74551 100644
--- a/Mage.Sets/src/mage/cards/s/ScuteMob.java
+++ b/Mage.Sets/src/mage/cards/s/ScuteMob.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ScuteMob extends CardImpl {
+public final class ScuteMob extends CardImpl {
public ScuteMob(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Scuttlemutt.java b/Mage.Sets/src/mage/cards/s/Scuttlemutt.java
index f4e9a961d23..0d5ef69b309 100644
--- a/Mage.Sets/src/mage/cards/s/Scuttlemutt.java
+++ b/Mage.Sets/src/mage/cards/s/Scuttlemutt.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author philvt101
*/
-public class Scuttlemutt extends CardImpl {
+public final class Scuttlemutt extends CardImpl {
public Scuttlemutt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/ScuttlingDeath.java b/Mage.Sets/src/mage/cards/s/ScuttlingDeath.java
index cc1f9614574..4fc0846a279 100644
--- a/Mage.Sets/src/mage/cards/s/ScuttlingDeath.java
+++ b/Mage.Sets/src/mage/cards/s/ScuttlingDeath.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class ScuttlingDeath extends CardImpl {
+public final class ScuttlingDeath extends CardImpl {
public ScuttlingDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScuttlingDoomEngine.java b/Mage.Sets/src/mage/cards/s/ScuttlingDoomEngine.java
index 39f59ba37ff..8d4b25c209f 100644
--- a/Mage.Sets/src/mage/cards/s/ScuttlingDoomEngine.java
+++ b/Mage.Sets/src/mage/cards/s/ScuttlingDoomEngine.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author emerald000
*/
-public class ScuttlingDoomEngine extends CardImpl {
+public final class ScuttlingDoomEngine extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/s/ScuzzbackMarauders.java b/Mage.Sets/src/mage/cards/s/ScuzzbackMarauders.java
index 970ee5ffcef..2bdf2b7cbf7 100644
--- a/Mage.Sets/src/mage/cards/s/ScuzzbackMarauders.java
+++ b/Mage.Sets/src/mage/cards/s/ScuzzbackMarauders.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ScuzzbackMarauders extends CardImpl {
+public final class ScuzzbackMarauders extends CardImpl {
public ScuzzbackMarauders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScuzzbackScrapper.java b/Mage.Sets/src/mage/cards/s/ScuzzbackScrapper.java
index 0ccb60c5067..9e49f57975d 100644
--- a/Mage.Sets/src/mage/cards/s/ScuzzbackScrapper.java
+++ b/Mage.Sets/src/mage/cards/s/ScuzzbackScrapper.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ScuzzbackScrapper extends CardImpl {
+public final class ScuzzbackScrapper extends CardImpl {
public ScuzzbackScrapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScytheLeopard.java b/Mage.Sets/src/mage/cards/s/ScytheLeopard.java
index ba962b6d7be..51a1560f79e 100644
--- a/Mage.Sets/src/mage/cards/s/ScytheLeopard.java
+++ b/Mage.Sets/src/mage/cards/s/ScytheLeopard.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class ScytheLeopard extends CardImpl {
+public final class ScytheLeopard extends CardImpl {
public ScytheLeopard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScytheOfTheWretched.java b/Mage.Sets/src/mage/cards/s/ScytheOfTheWretched.java
index b3b9aeb0380..8466dd52910 100644
--- a/Mage.Sets/src/mage/cards/s/ScytheOfTheWretched.java
+++ b/Mage.Sets/src/mage/cards/s/ScytheOfTheWretched.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.TargetPointer;
* @author Jason E. Wall
*
*/
-public class ScytheOfTheWretched extends CardImpl {
+public final class ScytheOfTheWretched extends CardImpl {
public ScytheOfTheWretched(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/ScytheSpecter.java b/Mage.Sets/src/mage/cards/s/ScytheSpecter.java
index c6854255185..9cbb778fa86 100644
--- a/Mage.Sets/src/mage/cards/s/ScytheSpecter.java
+++ b/Mage.Sets/src/mage/cards/s/ScytheSpecter.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class ScytheSpecter extends CardImpl {
+public final class ScytheSpecter extends CardImpl {
public ScytheSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ScytheTiger.java b/Mage.Sets/src/mage/cards/s/ScytheTiger.java
index 8417f5d24b8..02fbc94fa3b 100644
--- a/Mage.Sets/src/mage/cards/s/ScytheTiger.java
+++ b/Mage.Sets/src/mage/cards/s/ScytheTiger.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Rafbill
*/
-public class ScytheTiger extends CardImpl {
+public final class ScytheTiger extends CardImpl {
public ScytheTiger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Scytheclaw.java b/Mage.Sets/src/mage/cards/s/Scytheclaw.java
index f3f7f2562ab..a4fc31000d8 100644
--- a/Mage.Sets/src/mage/cards/s/Scytheclaw.java
+++ b/Mage.Sets/src/mage/cards/s/Scytheclaw.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class Scytheclaw extends CardImpl {
+public final class Scytheclaw extends CardImpl {
public Scytheclaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/s/SeaDrake.java b/Mage.Sets/src/mage/cards/s/SeaDrake.java
index d89503cbf76..616bed096c3 100644
--- a/Mage.Sets/src/mage/cards/s/SeaDrake.java
+++ b/Mage.Sets/src/mage/cards/s/SeaDrake.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
* @author LoneFox
*/
-public class SeaDrake extends CardImpl {
+public final class SeaDrake extends CardImpl {
public SeaDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeaEagle.java b/Mage.Sets/src/mage/cards/s/SeaEagle.java
index afe6b5b96d1..ee3dbf36fb3 100644
--- a/Mage.Sets/src/mage/cards/s/SeaEagle.java
+++ b/Mage.Sets/src/mage/cards/s/SeaEagle.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Quercitron
*/
-public class SeaEagle extends CardImpl {
+public final class SeaEagle extends CardImpl {
public SeaEagle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java b/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java
index 18a3f1e23d9..7c8f29376b5 100644
--- a/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java
+++ b/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class SeaGateLoremaster extends CardImpl {
+public final class SeaGateLoremaster extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Ally you control");
diff --git a/Mage.Sets/src/mage/cards/s/SeaGateOracle.java b/Mage.Sets/src/mage/cards/s/SeaGateOracle.java
index 8d8fcef92fa..36d50c94849 100644
--- a/Mage.Sets/src/mage/cards/s/SeaGateOracle.java
+++ b/Mage.Sets/src/mage/cards/s/SeaGateOracle.java
@@ -44,7 +44,7 @@ import mage.filter.FilterCard;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SeaGateOracle extends CardImpl {
+public final class SeaGateOracle extends CardImpl {
public SeaGateOracle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeaGateWreckage.java b/Mage.Sets/src/mage/cards/s/SeaGateWreckage.java
index 997f1b33115..6a88babab23 100644
--- a/Mage.Sets/src/mage/cards/s/SeaGateWreckage.java
+++ b/Mage.Sets/src/mage/cards/s/SeaGateWreckage.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SeaGateWreckage extends CardImpl {
+public final class SeaGateWreckage extends CardImpl {
public SeaGateWreckage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SeaGodsRevenge.java b/Mage.Sets/src/mage/cards/s/SeaGodsRevenge.java
index 8bfd8e03517..41c59508609 100644
--- a/Mage.Sets/src/mage/cards/s/SeaGodsRevenge.java
+++ b/Mage.Sets/src/mage/cards/s/SeaGodsRevenge.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SeaGodsRevenge extends CardImpl {
+public final class SeaGodsRevenge extends CardImpl {
public SeaGodsRevenge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeaKingsBlessing.java b/Mage.Sets/src/mage/cards/s/SeaKingsBlessing.java
index 9a82a5af881..4b22c3afbf5 100644
--- a/Mage.Sets/src/mage/cards/s/SeaKingsBlessing.java
+++ b/Mage.Sets/src/mage/cards/s/SeaKingsBlessing.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author maxlebedev
*/
-public class SeaKingsBlessing extends CardImpl {
+public final class SeaKingsBlessing extends CardImpl {
public SeaKingsBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeaLegs.java b/Mage.Sets/src/mage/cards/s/SeaLegs.java
index c825ebe4d91..1a1d1276bbb 100644
--- a/Mage.Sets/src/mage/cards/s/SeaLegs.java
+++ b/Mage.Sets/src/mage/cards/s/SeaLegs.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SeaLegs extends CardImpl {
+public final class SeaLegs extends CardImpl {
public SeaLegs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeaMonster.java b/Mage.Sets/src/mage/cards/s/SeaMonster.java
index 0c0e6c309ee..1e50afb4ebd 100644
--- a/Mage.Sets/src/mage/cards/s/SeaMonster.java
+++ b/Mage.Sets/src/mage/cards/s/SeaMonster.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author Plopman
*/
- public class SeaMonster extends CardImpl {
+ public final class SeaMonster extends CardImpl {
public SeaMonster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeaOfClouds.java b/Mage.Sets/src/mage/cards/s/SeaOfClouds.java
index 79c0e9c6e66..732dfde490a 100644
--- a/Mage.Sets/src/mage/cards/s/SeaOfClouds.java
+++ b/Mage.Sets/src/mage/cards/s/SeaOfClouds.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class SeaOfClouds extends CardImpl {
+public final class SeaOfClouds extends CardImpl {
public SeaOfClouds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/SeaScryer.java b/Mage.Sets/src/mage/cards/s/SeaScryer.java
index e0677d34e1e..ef9add724a1 100644
--- a/Mage.Sets/src/mage/cards/s/SeaScryer.java
+++ b/Mage.Sets/src/mage/cards/s/SeaScryer.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SeaScryer extends CardImpl {
+public final class SeaScryer extends CardImpl {
public SeaScryer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeaSerpent.java b/Mage.Sets/src/mage/cards/s/SeaSerpent.java
index 750c32774e0..210b94fb67c 100644
--- a/Mage.Sets/src/mage/cards/s/SeaSerpent.java
+++ b/Mage.Sets/src/mage/cards/s/SeaSerpent.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
* @author KholdFuzion
*
*/
-public class SeaSerpent extends CardImpl {
+public final class SeaSerpent extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("an Island");
diff --git a/Mage.Sets/src/mage/cards/s/SeaSnidd.java b/Mage.Sets/src/mage/cards/s/SeaSnidd.java
index 08d5c0f19ab..82a40185407 100644
--- a/Mage.Sets/src/mage/cards/s/SeaSnidd.java
+++ b/Mage.Sets/src/mage/cards/s/SeaSnidd.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class SeaSnidd extends CardImpl {
+public final class SeaSnidd extends CardImpl {
public SeaSnidd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeaSpirit.java b/Mage.Sets/src/mage/cards/s/SeaSpirit.java
index c404b022878..a111280a560 100644
--- a/Mage.Sets/src/mage/cards/s/SeaSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/SeaSpirit.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class SeaSpirit extends CardImpl {
+public final class SeaSpirit extends CardImpl {
public SeaSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeaSprite.java b/Mage.Sets/src/mage/cards/s/SeaSprite.java
index 9a28ff3d9d0..e8a943ba11c 100644
--- a/Mage.Sets/src/mage/cards/s/SeaSprite.java
+++ b/Mage.Sets/src/mage/cards/s/SeaSprite.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SeaSprite extends CardImpl {
+public final class SeaSprite extends CardImpl {
public SeaSprite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeachromeCoast.java b/Mage.Sets/src/mage/cards/s/SeachromeCoast.java
index aa79d82793b..018a7aed275 100644
--- a/Mage.Sets/src/mage/cards/s/SeachromeCoast.java
+++ b/Mage.Sets/src/mage/cards/s/SeachromeCoast.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author maurer.it_at_gmail.com
*/
-public class SeachromeCoast extends CardImpl {
+public final class SeachromeCoast extends CardImpl {
public SeachromeCoast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/s/SeacoastDrake.java b/Mage.Sets/src/mage/cards/s/SeacoastDrake.java
index b51aac2f9b4..3679cdb5c42 100644
--- a/Mage.Sets/src/mage/cards/s/SeacoastDrake.java
+++ b/Mage.Sets/src/mage/cards/s/SeacoastDrake.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SeacoastDrake extends CardImpl {
+public final class SeacoastDrake extends CardImpl {
public SeacoastDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeafloorDebris.java b/Mage.Sets/src/mage/cards/s/SeafloorDebris.java
index bd20f088de3..931cd28e630 100644
--- a/Mage.Sets/src/mage/cards/s/SeafloorDebris.java
+++ b/Mage.Sets/src/mage/cards/s/SeafloorDebris.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class SeafloorDebris extends CardImpl {
+public final class SeafloorDebris extends CardImpl {
public SeafloorDebris(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SeafloorOracle.java b/Mage.Sets/src/mage/cards/s/SeafloorOracle.java
index 0cec34fe3f9..95982a95d44 100644
--- a/Mage.Sets/src/mage/cards/s/SeafloorOracle.java
+++ b/Mage.Sets/src/mage/cards/s/SeafloorOracle.java
@@ -1,71 +1,71 @@
-/*
- * 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.common.DealsDamageToAPlayerAllTriggeredAbility;
-import mage.abilities.effects.common.DrawCardSourceControllerEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.SetTargetPointer;
-import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
-
-/**
- *
- * @author LevelX2
- */
-public class SeafloorOracle extends CardImpl {
-
- public SeafloorOracle(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
-
- this.subtype.add(SubType.MERFOLK);
- this.subtype.add(SubType.WIZARD);
- this.power = new MageInt(2);
- this.toughness = new MageInt(3);
-
- // Whenever a Merfolk you controls deals combat damage to a player, draw a card.
- this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility(
- new DrawCardSourceControllerEffect(1),
- new FilterControlledCreaturePermanent(SubType.MERFOLK, "a Merfolk you control"),
- false, SetTargetPointer.NONE, true));
-
- }
-
- public SeafloorOracle(final SeafloorOracle card) {
- super(card);
- }
-
- @Override
- public SeafloorOracle copy() {
- return new SeafloorOracle(this);
- }
-}
+/*
+ * 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.common.DealsDamageToAPlayerAllTriggeredAbility;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SetTargetPointer;
+import mage.constants.SubType;
+import mage.filter.common.FilterControlledCreaturePermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class SeafloorOracle extends CardImpl {
+
+ public SeafloorOracle(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
+
+ this.subtype.add(SubType.MERFOLK);
+ this.subtype.add(SubType.WIZARD);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(3);
+
+ // Whenever a Merfolk you controls deals combat damage to a player, draw a card.
+ this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility(
+ new DrawCardSourceControllerEffect(1),
+ new FilterControlledCreaturePermanent(SubType.MERFOLK, "a Merfolk you control"),
+ false, SetTargetPointer.NONE, true));
+
+ }
+
+ public SeafloorOracle(final SeafloorOracle card) {
+ super(card);
+ }
+
+ @Override
+ public SeafloorOracle copy() {
+ return new SeafloorOracle(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/SeagrafSkaab.java b/Mage.Sets/src/mage/cards/s/SeagrafSkaab.java
index 4c04d8092ed..efa4c607b92 100644
--- a/Mage.Sets/src/mage/cards/s/SeagrafSkaab.java
+++ b/Mage.Sets/src/mage/cards/s/SeagrafSkaab.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SeagrafSkaab extends CardImpl {
+public final class SeagrafSkaab extends CardImpl {
public SeagrafSkaab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Seahunter.java b/Mage.Sets/src/mage/cards/s/Seahunter.java
index 11182296fae..25e6cba242a 100644
--- a/Mage.Sets/src/mage/cards/s/Seahunter.java
+++ b/Mage.Sets/src/mage/cards/s/Seahunter.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Backfir3
*/
-public class Seahunter extends CardImpl {
+public final class Seahunter extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Merfolk permanent card");
diff --git a/Mage.Sets/src/mage/cards/s/SealAway.java b/Mage.Sets/src/mage/cards/s/SealAway.java
index 4b360558e59..9a597f1221b 100644
--- a/Mage.Sets/src/mage/cards/s/SealAway.java
+++ b/Mage.Sets/src/mage/cards/s/SealAway.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
* @author JRHerlehy
* Created on 4/4/18.
*/
-public class SealAway extends CardImpl {
+public final class SealAway extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/s/SealOfCleansing.java b/Mage.Sets/src/mage/cards/s/SealOfCleansing.java
index aee36b3f990..be9e6f01d60 100644
--- a/Mage.Sets/src/mage/cards/s/SealOfCleansing.java
+++ b/Mage.Sets/src/mage/cards/s/SealOfCleansing.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class SealOfCleansing extends CardImpl {
+public final class SealOfCleansing extends CardImpl {
public SealOfCleansing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SealOfDoom.java b/Mage.Sets/src/mage/cards/s/SealOfDoom.java
index 8241761e294..d6989099ece 100644
--- a/Mage.Sets/src/mage/cards/s/SealOfDoom.java
+++ b/Mage.Sets/src/mage/cards/s/SealOfDoom.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class SealOfDoom extends CardImpl {
+public final class SealOfDoom extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/SealOfFire.java b/Mage.Sets/src/mage/cards/s/SealOfFire.java
index dbd0072b291..934b1947eab 100644
--- a/Mage.Sets/src/mage/cards/s/SealOfFire.java
+++ b/Mage.Sets/src/mage/cards/s/SealOfFire.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class SealOfFire extends CardImpl {
+public final class SealOfFire extends CardImpl {
public SealOfFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SealOfPrimordium.java b/Mage.Sets/src/mage/cards/s/SealOfPrimordium.java
index caed2b307c4..44ccf2d3485 100644
--- a/Mage.Sets/src/mage/cards/s/SealOfPrimordium.java
+++ b/Mage.Sets/src/mage/cards/s/SealOfPrimordium.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class SealOfPrimordium extends CardImpl {
+public final class SealOfPrimordium extends CardImpl {
public SealOfPrimordium(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SealOfRemoval.java b/Mage.Sets/src/mage/cards/s/SealOfRemoval.java
index 544d9811122..2eca3c0869d 100644
--- a/Mage.Sets/src/mage/cards/s/SealOfRemoval.java
+++ b/Mage.Sets/src/mage/cards/s/SealOfRemoval.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class SealOfRemoval extends CardImpl {
+public final class SealOfRemoval extends CardImpl {
public SealOfRemoval(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/s/SealOfStrength.java b/Mage.Sets/src/mage/cards/s/SealOfStrength.java
index 53022c66312..3668b4d55bb 100644
--- a/Mage.Sets/src/mage/cards/s/SealOfStrength.java
+++ b/Mage.Sets/src/mage/cards/s/SealOfStrength.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class SealOfStrength extends CardImpl {
+public final class SealOfStrength extends CardImpl {
public SealOfStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java b/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java
index 03583be581f..c92db28b991 100644
--- a/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java
+++ b/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class SealOfTheGuildpact extends CardImpl {
+public final class SealOfTheGuildpact extends CardImpl {
public SealOfTheGuildpact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/s/SealockMonster.java b/Mage.Sets/src/mage/cards/s/SealockMonster.java
index 4132bf08ba4..ada867d83fa 100644
--- a/Mage.Sets/src/mage/cards/s/SealockMonster.java
+++ b/Mage.Sets/src/mage/cards/s/SealockMonster.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SealockMonster extends CardImpl {
+public final class SealockMonster extends CardImpl {
public SealockMonster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Seance.java b/Mage.Sets/src/mage/cards/s/Seance.java
index 909b44683e9..e7aa4182140 100644
--- a/Mage.Sets/src/mage/cards/s/Seance.java
+++ b/Mage.Sets/src/mage/cards/s/Seance.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author BetaSteward
*/
-public class Seance extends CardImpl {
+public final class Seance extends CardImpl {
public Seance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SearchForAzcanta.java b/Mage.Sets/src/mage/cards/s/SearchForAzcanta.java
index dcc98e6ac69..e26bae37616 100644
--- a/Mage.Sets/src/mage/cards/s/SearchForAzcanta.java
+++ b/Mage.Sets/src/mage/cards/s/SearchForAzcanta.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SearchForAzcanta extends CardImpl {
+public final class SearchForAzcanta extends CardImpl {
public SearchForAzcanta(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SearchForTomorrow.java b/Mage.Sets/src/mage/cards/s/SearchForTomorrow.java
index 63d164834f1..8436b7917e2 100644
--- a/Mage.Sets/src/mage/cards/s/SearchForTomorrow.java
+++ b/Mage.Sets/src/mage/cards/s/SearchForTomorrow.java
@@ -43,14 +43,14 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SearchForTomorrow extends CardImpl {
+public final class SearchForTomorrow extends CardImpl {
public SearchForTomorrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
// Search your library for a basic land card and put it onto the battlefield. Then shuffle your library.
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(target, false, Outcome.PutLandInPlay));
// Suspend 2-{G}
diff --git a/Mage.Sets/src/mage/cards/s/SearchTheCity.java b/Mage.Sets/src/mage/cards/s/SearchTheCity.java
index 6398387ccd6..3f339c23b87 100644
--- a/Mage.Sets/src/mage/cards/s/SearchTheCity.java
+++ b/Mage.Sets/src/mage/cards/s/SearchTheCity.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SearchTheCity extends CardImpl {
+public final class SearchTheCity extends CardImpl {
public SearchTheCity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SearchWarrant.java b/Mage.Sets/src/mage/cards/s/SearchWarrant.java
index 1d655c72f38..64b36eb6cbb 100644
--- a/Mage.Sets/src/mage/cards/s/SearchWarrant.java
+++ b/Mage.Sets/src/mage/cards/s/SearchWarrant.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class SearchWarrant extends CardImpl {
+public final class SearchWarrant extends CardImpl {
public SearchWarrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SearchlightGeist.java b/Mage.Sets/src/mage/cards/s/SearchlightGeist.java
index e2dbf2d477a..e3246a85bef 100644
--- a/Mage.Sets/src/mage/cards/s/SearchlightGeist.java
+++ b/Mage.Sets/src/mage/cards/s/SearchlightGeist.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class SearchlightGeist extends CardImpl {
+public final class SearchlightGeist extends CardImpl {
public SearchlightGeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SearingBlaze.java b/Mage.Sets/src/mage/cards/s/SearingBlaze.java
index e8639acc0f3..e744559c1c2 100644
--- a/Mage.Sets/src/mage/cards/s/SearingBlaze.java
+++ b/Mage.Sets/src/mage/cards/s/SearingBlaze.java
@@ -51,7 +51,7 @@ import mage.watchers.common.LandfallWatcher;
* @author BetaSteward_at_googlemail.com
* @author North
*/
-public class SearingBlaze extends CardImpl {
+public final class SearingBlaze extends CardImpl {
public SearingBlaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SearingBlood.java b/Mage.Sets/src/mage/cards/s/SearingBlood.java
index b8a504d4eff..6f940393091 100644
--- a/Mage.Sets/src/mage/cards/s/SearingBlood.java
+++ b/Mage.Sets/src/mage/cards/s/SearingBlood.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SearingBlood extends CardImpl {
+public final class SearingBlood extends CardImpl {
public SearingBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SearingFlesh.java b/Mage.Sets/src/mage/cards/s/SearingFlesh.java
index da133c7c67f..acedc350d31 100644
--- a/Mage.Sets/src/mage/cards/s/SearingFlesh.java
+++ b/Mage.Sets/src/mage/cards/s/SearingFlesh.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author Jgod
*/
-public class SearingFlesh extends CardImpl {
+public final class SearingFlesh extends CardImpl {
public SearingFlesh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SearingLight.java b/Mage.Sets/src/mage/cards/s/SearingLight.java
index ab60e28d030..5e31a82a16c 100644
--- a/Mage.Sets/src/mage/cards/s/SearingLight.java
+++ b/Mage.Sets/src/mage/cards/s/SearingLight.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SearingLight extends CardImpl {
+public final class SearingLight extends CardImpl {
private static final FilterAttackingOrBlockingCreature filter = new FilterAttackingOrBlockingCreature("attacking or blocking creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/s/SearingMeditation.java b/Mage.Sets/src/mage/cards/s/SearingMeditation.java
index 030c2788f7c..01e2f95cfe2 100644
--- a/Mage.Sets/src/mage/cards/s/SearingMeditation.java
+++ b/Mage.Sets/src/mage/cards/s/SearingMeditation.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class SearingMeditation extends CardImpl {
+public final class SearingMeditation extends CardImpl {
public SearingMeditation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SearingSpear.java b/Mage.Sets/src/mage/cards/s/SearingSpear.java
index fbb4e1659ba..3919b5ea321 100644
--- a/Mage.Sets/src/mage/cards/s/SearingSpear.java
+++ b/Mage.Sets/src/mage/cards/s/SearingSpear.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class SearingSpear extends CardImpl {
+public final class SearingSpear extends CardImpl {
public SearingSpear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SearingSpearAskari.java b/Mage.Sets/src/mage/cards/s/SearingSpearAskari.java
index 95e1ac33b16..f640230851e 100644
--- a/Mage.Sets/src/mage/cards/s/SearingSpearAskari.java
+++ b/Mage.Sets/src/mage/cards/s/SearingSpearAskari.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class SearingSpearAskari extends CardImpl {
+public final class SearingSpearAskari extends CardImpl {
public SearingSpearAskari(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SearingTouch.java b/Mage.Sets/src/mage/cards/s/SearingTouch.java
index 0c15e6aef0b..e2a8b4b2a5f 100644
--- a/Mage.Sets/src/mage/cards/s/SearingTouch.java
+++ b/Mage.Sets/src/mage/cards/s/SearingTouch.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class SearingTouch extends CardImpl {
+public final class SearingTouch extends CardImpl {
public SearingTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SearingWind.java b/Mage.Sets/src/mage/cards/s/SearingWind.java
index 076fddb6f8c..e8757df86e3 100644
--- a/Mage.Sets/src/mage/cards/s/SearingWind.java
+++ b/Mage.Sets/src/mage/cards/s/SearingWind.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class SearingWind extends CardImpl {
+public final class SearingWind extends CardImpl {
public SearingWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{8}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SeasClaim.java b/Mage.Sets/src/mage/cards/s/SeasClaim.java
index 5cecd59c1a7..0c622039f6d 100644
--- a/Mage.Sets/src/mage/cards/s/SeasClaim.java
+++ b/Mage.Sets/src/mage/cards/s/SeasClaim.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SeasClaim extends CardImpl {
+public final class SeasClaim extends CardImpl {
public SeasClaim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeascapeAerialist.java b/Mage.Sets/src/mage/cards/s/SeascapeAerialist.java
index 276e6486da3..e75067ff114 100644
--- a/Mage.Sets/src/mage/cards/s/SeascapeAerialist.java
+++ b/Mage.Sets/src/mage/cards/s/SeascapeAerialist.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class SeascapeAerialist extends CardImpl {
+public final class SeascapeAerialist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/SeashellCameo.java b/Mage.Sets/src/mage/cards/s/SeashellCameo.java
index 6bd6dccea71..4cdfebd1f23 100644
--- a/Mage.Sets/src/mage/cards/s/SeashellCameo.java
+++ b/Mage.Sets/src/mage/cards/s/SeashellCameo.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class SeashellCameo extends CardImpl {
+public final class SeashellCameo extends CardImpl {
public SeashellCameo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SeasideCitadel.java b/Mage.Sets/src/mage/cards/s/SeasideCitadel.java
index 9e03e63f91b..5535eac6359 100644
--- a/Mage.Sets/src/mage/cards/s/SeasideCitadel.java
+++ b/Mage.Sets/src/mage/cards/s/SeasideCitadel.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class SeasideCitadel extends CardImpl {
+public final class SeasideCitadel extends CardImpl {
public SeasideCitadel (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/s/SeasideHaven.java b/Mage.Sets/src/mage/cards/s/SeasideHaven.java
index 493db791567..73d0461c86c 100644
--- a/Mage.Sets/src/mage/cards/s/SeasideHaven.java
+++ b/Mage.Sets/src/mage/cards/s/SeasideHaven.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author anonymous
*/
-public class SeasideHaven extends CardImpl {
+public final class SeasideHaven extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Bird");
diff --git a/Mage.Sets/src/mage/cards/s/Seasinger.java b/Mage.Sets/src/mage/cards/s/Seasinger.java
index ba943d290de..07834e11833 100644
--- a/Mage.Sets/src/mage/cards/s/Seasinger.java
+++ b/Mage.Sets/src/mage/cards/s/Seasinger.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class Seasinger extends CardImpl {
+public final class Seasinger extends CardImpl {
private static final String rule = "Gain control of target creature whose controller controls an Island for as long as you control Seasinger and Seasinger remains tapped";
private static final FilterPermanent islandYouControl = new FilterPermanent("Island");
diff --git a/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java b/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java
index b65c850553b..3ad62a27446 100644
--- a/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java
+++ b/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java
@@ -56,7 +56,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author L_J
*/
-public class SeasonOfTheWitch extends CardImpl {
+public final class SeasonOfTheWitch extends CardImpl {
public SeasonOfTheWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SeasonedMarshal.java b/Mage.Sets/src/mage/cards/s/SeasonedMarshal.java
index c73f5d38ec1..ee6b8a535eb 100644
--- a/Mage.Sets/src/mage/cards/s/SeasonedMarshal.java
+++ b/Mage.Sets/src/mage/cards/s/SeasonedMarshal.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SeasonedMarshal extends CardImpl {
+public final class SeasonedMarshal extends CardImpl {
public SeasonedMarshal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SeasonedTactician.java b/Mage.Sets/src/mage/cards/s/SeasonedTactician.java
index 8bdb31f4f56..6b38900590a 100644
--- a/Mage.Sets/src/mage/cards/s/SeasonedTactician.java
+++ b/Mage.Sets/src/mage/cards/s/SeasonedTactician.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class SeasonedTactician extends CardImpl {
+public final class SeasonedTactician extends CardImpl {
public SeasonedTactician(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SeasonsBeatings.java b/Mage.Sets/src/mage/cards/s/SeasonsBeatings.java
index 31672cc71a9..821ebfba360 100644
--- a/Mage.Sets/src/mage/cards/s/SeasonsBeatings.java
+++ b/Mage.Sets/src/mage/cards/s/SeasonsBeatings.java
@@ -47,7 +47,7 @@ import mage.util.RandomUtil;
*
* @author spjspj
*/
-public class SeasonsBeatings extends CardImpl {
+public final class SeasonsBeatings extends CardImpl {
public SeasonsBeatings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SeasonsPast.java b/Mage.Sets/src/mage/cards/s/SeasonsPast.java
index 3b5435f570e..db7fe2cc0b5 100644
--- a/Mage.Sets/src/mage/cards/s/SeasonsPast.java
+++ b/Mage.Sets/src/mage/cards/s/SeasonsPast.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class SeasonsPast extends CardImpl {
+public final class SeasonsPast extends CardImpl {
public SeasonsPast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SeatOfTheSynod.java b/Mage.Sets/src/mage/cards/s/SeatOfTheSynod.java
index 7dedabb5f92..82236851be3 100644
--- a/Mage.Sets/src/mage/cards/s/SeatOfTheSynod.java
+++ b/Mage.Sets/src/mage/cards/s/SeatOfTheSynod.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class SeatOfTheSynod extends CardImpl {
+public final class SeatOfTheSynod extends CardImpl {
public SeatOfTheSynod (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/s/SecludedGlen.java b/Mage.Sets/src/mage/cards/s/SecludedGlen.java
index 5e1a339d08d..d918c955e75 100644
--- a/Mage.Sets/src/mage/cards/s/SecludedGlen.java
+++ b/Mage.Sets/src/mage/cards/s/SecludedGlen.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class SecludedGlen extends CardImpl {
+public final class SecludedGlen extends CardImpl {
private static final FilterCard filter = new FilterCard("a Faerie from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SecludedSteppe.java b/Mage.Sets/src/mage/cards/s/SecludedSteppe.java
index e570ee6ddb8..be77e0e8fbe 100644
--- a/Mage.Sets/src/mage/cards/s/SecludedSteppe.java
+++ b/Mage.Sets/src/mage/cards/s/SecludedSteppe.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class SecludedSteppe extends CardImpl {
+public final class SecludedSteppe extends CardImpl {
public SecludedSteppe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SecondChance.java b/Mage.Sets/src/mage/cards/s/SecondChance.java
index dfce31400ee..1ea04e3f158 100644
--- a/Mage.Sets/src/mage/cards/s/SecondChance.java
+++ b/Mage.Sets/src/mage/cards/s/SecondChance.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class SecondChance extends CardImpl {
+public final class SecondChance extends CardImpl {
public SecondChance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SecondGuess.java b/Mage.Sets/src/mage/cards/s/SecondGuess.java
index 6ba58a85135..920b0b13614 100644
--- a/Mage.Sets/src/mage/cards/s/SecondGuess.java
+++ b/Mage.Sets/src/mage/cards/s/SecondGuess.java
@@ -44,7 +44,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author noxx
*/
-public class SecondGuess extends CardImpl {
+public final class SecondGuess extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell that's the second spell cast this turn");
diff --git a/Mage.Sets/src/mage/cards/s/SecondHarvest.java b/Mage.Sets/src/mage/cards/s/SecondHarvest.java
index e2793a550b6..e082f999f9c 100644
--- a/Mage.Sets/src/mage/cards/s/SecondHarvest.java
+++ b/Mage.Sets/src/mage/cards/s/SecondHarvest.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class SecondHarvest extends CardImpl {
+public final class SecondHarvest extends CardImpl {
public SecondHarvest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SecondSight.java b/Mage.Sets/src/mage/cards/s/SecondSight.java
index 70d8b86a285..addd48ec2db 100644
--- a/Mage.Sets/src/mage/cards/s/SecondSight.java
+++ b/Mage.Sets/src/mage/cards/s/SecondSight.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class SecondSight extends CardImpl {
+public final class SecondSight extends CardImpl {
public SecondSight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SecondSunrise.java b/Mage.Sets/src/mage/cards/s/SecondSunrise.java
index 4d52a91839e..a9547997c52 100644
--- a/Mage.Sets/src/mage/cards/s/SecondSunrise.java
+++ b/Mage.Sets/src/mage/cards/s/SecondSunrise.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SecondSunrise extends CardImpl {
+public final class SecondSunrise extends CardImpl {
public SecondSunrise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SecondThoughts.java b/Mage.Sets/src/mage/cards/s/SecondThoughts.java
index 86b4b0149a8..c255a072122 100644
--- a/Mage.Sets/src/mage/cards/s/SecondThoughts.java
+++ b/Mage.Sets/src/mage/cards/s/SecondThoughts.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author cbt33
*/
-public class SecondThoughts extends CardImpl {
+public final class SecondThoughts extends CardImpl {
public SecondThoughts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SecondWind.java b/Mage.Sets/src/mage/cards/s/SecondWind.java
index 739cc0dc053..ac193e09a3c 100644
--- a/Mage.Sets/src/mage/cards/s/SecondWind.java
+++ b/Mage.Sets/src/mage/cards/s/SecondWind.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SecondWind extends CardImpl {
+public final class SecondWind extends CardImpl {
public SecondWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SecretPlans.java b/Mage.Sets/src/mage/cards/s/SecretPlans.java
index 0e7baf11842..7a656f6aa28 100644
--- a/Mage.Sets/src/mage/cards/s/SecretPlans.java
+++ b/Mage.Sets/src/mage/cards/s/SecretPlans.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.other.FaceDownPredicate;
*
* @author LevelX2
*/
-public class SecretPlans extends CardImpl {
+public final class SecretPlans extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Face-down creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SecretSalvage.java b/Mage.Sets/src/mage/cards/s/SecretSalvage.java
index 5afb24ce15d..5773e2ce3c7 100644
--- a/Mage.Sets/src/mage/cards/s/SecretSalvage.java
+++ b/Mage.Sets/src/mage/cards/s/SecretSalvage.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class SecretSalvage extends CardImpl {
+public final class SecretSalvage extends CardImpl {
public SecretSalvage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Secretkeeper.java b/Mage.Sets/src/mage/cards/s/Secretkeeper.java
index bdcb5a475c9..034b388afc1 100644
--- a/Mage.Sets/src/mage/cards/s/Secretkeeper.java
+++ b/Mage.Sets/src/mage/cards/s/Secretkeeper.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class Secretkeeper extends CardImpl {
+public final class Secretkeeper extends CardImpl {
public Secretkeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SecretsOfTheDead.java b/Mage.Sets/src/mage/cards/s/SecretsOfTheDead.java
index 31c571779dd..379ef102b09 100644
--- a/Mage.Sets/src/mage/cards/s/SecretsOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/s/SecretsOfTheDead.java
@@ -43,7 +43,7 @@ import mage.game.stack.Spell;
*
* @author BetaSteward
*/
-public class SecretsOfTheDead extends CardImpl {
+public final class SecretsOfTheDead extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a spell from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/SecretsOfTheGoldenCity.java b/Mage.Sets/src/mage/cards/s/SecretsOfTheGoldenCity.java
index 936e68a29b5..8e011cb362a 100644
--- a/Mage.Sets/src/mage/cards/s/SecretsOfTheGoldenCity.java
+++ b/Mage.Sets/src/mage/cards/s/SecretsOfTheGoldenCity.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class SecretsOfTheGoldenCity extends CardImpl {
+public final class SecretsOfTheGoldenCity extends CardImpl {
public SecretsOfTheGoldenCity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SecureTheWastes.java b/Mage.Sets/src/mage/cards/s/SecureTheWastes.java
index cb24c0c5ee9..149579913d3 100644
--- a/Mage.Sets/src/mage/cards/s/SecureTheWastes.java
+++ b/Mage.Sets/src/mage/cards/s/SecureTheWastes.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.WarriorToken;
*
* @author fireshoes
*/
-public class SecureTheWastes extends CardImpl {
+public final class SecureTheWastes extends CardImpl {
public SecureTheWastes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SecurityBlockade.java b/Mage.Sets/src/mage/cards/s/SecurityBlockade.java
index 504536f3287..7829a0e097d 100644
--- a/Mage.Sets/src/mage/cards/s/SecurityBlockade.java
+++ b/Mage.Sets/src/mage/cards/s/SecurityBlockade.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class SecurityBlockade extends CardImpl {
+public final class SecurityBlockade extends CardImpl {
static final String rule = "Enchanted land has \"{T}: Prevent the next 1 damage that would be dealt to you this turn.\"";
diff --git a/Mage.Sets/src/mage/cards/s/SecurityDetail.java b/Mage.Sets/src/mage/cards/s/SecurityDetail.java
index 8002d6ed5cc..dbe27639470 100644
--- a/Mage.Sets/src/mage/cards/s/SecurityDetail.java
+++ b/Mage.Sets/src/mage/cards/s/SecurityDetail.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author TheElk801
*/
-public class SecurityDetail extends CardImpl {
+public final class SecurityDetail extends CardImpl {
public SecurityDetail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SecurityDroid.java b/Mage.Sets/src/mage/cards/s/SecurityDroid.java
index 99a2a627d94..fa9daf6395e 100644
--- a/Mage.Sets/src/mage/cards/s/SecurityDroid.java
+++ b/Mage.Sets/src/mage/cards/s/SecurityDroid.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.DroidToken;
*
* @author Styxo
*/
-public class SecurityDroid extends CardImpl {
+public final class SecurityDroid extends CardImpl {
public SecurityDroid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SedgeScorpion.java b/Mage.Sets/src/mage/cards/s/SedgeScorpion.java
index 319e3a10b00..e50baaac92e 100644
--- a/Mage.Sets/src/mage/cards/s/SedgeScorpion.java
+++ b/Mage.Sets/src/mage/cards/s/SedgeScorpion.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SedgeScorpion extends CardImpl {
+public final class SedgeScorpion extends CardImpl {
public SedgeScorpion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SedgeSliver.java b/Mage.Sets/src/mage/cards/s/SedgeSliver.java
index b040ec67618..d870eb85b87 100644
--- a/Mage.Sets/src/mage/cards/s/SedgeSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SedgeSliver.java
@@ -49,7 +49,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author anonymous
*/
-public class SedgeSliver extends CardImpl {
+public final class SedgeSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SedgeTroll.java b/Mage.Sets/src/mage/cards/s/SedgeTroll.java
index 521ef4bc515..6acbc5f10e0 100644
--- a/Mage.Sets/src/mage/cards/s/SedgeTroll.java
+++ b/Mage.Sets/src/mage/cards/s/SedgeTroll.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author ilcartographer
*/
-public class SedgeTroll extends CardImpl {
+public final class SedgeTroll extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Swamp");
diff --git a/Mage.Sets/src/mage/cards/s/SedraxisAlchemist.java b/Mage.Sets/src/mage/cards/s/SedraxisAlchemist.java
index c216b017b5a..ba7ea83f46a 100644
--- a/Mage.Sets/src/mage/cards/s/SedraxisAlchemist.java
+++ b/Mage.Sets/src/mage/cards/s/SedraxisAlchemist.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author jeffwadsworth
*/
-public class SedraxisAlchemist extends CardImpl {
+public final class SedraxisAlchemist extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("blue permanent");
diff --git a/Mage.Sets/src/mage/cards/s/SedraxisSpecter.java b/Mage.Sets/src/mage/cards/s/SedraxisSpecter.java
index 4af4754d2a2..802ef7905c0 100644
--- a/Mage.Sets/src/mage/cards/s/SedraxisSpecter.java
+++ b/Mage.Sets/src/mage/cards/s/SedraxisSpecter.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SedraxisSpecter extends CardImpl {
+public final class SedraxisSpecter extends CardImpl {
public SedraxisSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SedrisTheTraitorKing.java b/Mage.Sets/src/mage/cards/s/SedrisTheTraitorKing.java
index 50d23373dbf..f45fa544b28 100644
--- a/Mage.Sets/src/mage/cards/s/SedrisTheTraitorKing.java
+++ b/Mage.Sets/src/mage/cards/s/SedrisTheTraitorKing.java
@@ -44,7 +44,7 @@ import mage.players.Player;
/**
* @author Loki
*/
-public class SedrisTheTraitorKing extends CardImpl {
+public final class SedrisTheTraitorKing extends CardImpl {
public SedrisTheTraitorKing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SeeBeyond.java b/Mage.Sets/src/mage/cards/s/SeeBeyond.java
index bc2c47236b6..4f6f00837c2 100644
--- a/Mage.Sets/src/mage/cards/s/SeeBeyond.java
+++ b/Mage.Sets/src/mage/cards/s/SeeBeyond.java
@@ -45,7 +45,7 @@ import mage.target.TargetCard;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SeeBeyond extends CardImpl {
+public final class SeeBeyond extends CardImpl {
public SeeBeyond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeeRed.java b/Mage.Sets/src/mage/cards/s/SeeRed.java
index 7f5ec234b65..d84e48f8f4d 100644
--- a/Mage.Sets/src/mage/cards/s/SeeRed.java
+++ b/Mage.Sets/src/mage/cards/s/SeeRed.java
@@ -58,7 +58,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author LevelX2
*/
-public class SeeRed extends CardImpl {
+public final class SeeRed extends CardImpl {
public SeeRed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SeeTheUnwritten.java b/Mage.Sets/src/mage/cards/s/SeeTheUnwritten.java
index e92b15ca91f..d3804bfb9a6 100644
--- a/Mage.Sets/src/mage/cards/s/SeeTheUnwritten.java
+++ b/Mage.Sets/src/mage/cards/s/SeeTheUnwritten.java
@@ -49,7 +49,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class SeeTheUnwritten extends CardImpl {
+public final class SeeTheUnwritten extends CardImpl {
public SeeTheUnwritten(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SeedGuardian.java b/Mage.Sets/src/mage/cards/s/SeedGuardian.java
index 73c05b269e5..1634ab65784 100644
--- a/Mage.Sets/src/mage/cards/s/SeedGuardian.java
+++ b/Mage.Sets/src/mage/cards/s/SeedGuardian.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SeedGuardian extends CardImpl {
+public final class SeedGuardian extends CardImpl {
public SeedGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SeedSpark.java b/Mage.Sets/src/mage/cards/s/SeedSpark.java
index ca5feb00384..ea4c07ed708 100644
--- a/Mage.Sets/src/mage/cards/s/SeedSpark.java
+++ b/Mage.Sets/src/mage/cards/s/SeedSpark.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author Wehk
*/
-public class SeedSpark extends CardImpl {
+public final class SeedSpark extends CardImpl {
public SeedSpark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SeedTheLand.java b/Mage.Sets/src/mage/cards/s/SeedTheLand.java
index 99029a523b3..f5ba2ce99f4 100644
--- a/Mage.Sets/src/mage/cards/s/SeedTheLand.java
+++ b/Mage.Sets/src/mage/cards/s/SeedTheLand.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SnakeToken;
*
* @author LevelX2
*/
-public class SeedTheLand extends CardImpl {
+public final class SeedTheLand extends CardImpl {
public SeedTheLand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SeedbornMuse.java b/Mage.Sets/src/mage/cards/s/SeedbornMuse.java
index c54971c4701..bc88b5ed495 100644
--- a/Mage.Sets/src/mage/cards/s/SeedbornMuse.java
+++ b/Mage.Sets/src/mage/cards/s/SeedbornMuse.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author emerald000
*/
-public class SeedbornMuse extends CardImpl {
+public final class SeedbornMuse extends CardImpl {
public SeedbornMuse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SeedcradleWitch.java b/Mage.Sets/src/mage/cards/s/SeedcradleWitch.java
index ef1fa938f7d..971ebe7e7d3 100644
--- a/Mage.Sets/src/mage/cards/s/SeedcradleWitch.java
+++ b/Mage.Sets/src/mage/cards/s/SeedcradleWitch.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SeedcradleWitch extends CardImpl {
+public final class SeedcradleWitch extends CardImpl {
public SeedcradleWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G/W}");
diff --git a/Mage.Sets/src/mage/cards/s/SeedguideAsh.java b/Mage.Sets/src/mage/cards/s/SeedguideAsh.java
index 03f795f4446..35e81eebc13 100644
--- a/Mage.Sets/src/mage/cards/s/SeedguideAsh.java
+++ b/Mage.Sets/src/mage/cards/s/SeedguideAsh.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class SeedguideAsh extends CardImpl {
+public final class SeedguideAsh extends CardImpl {
private static final FilterCard filter = new FilterCard("Forest");
diff --git a/Mage.Sets/src/mage/cards/s/SeedlingCharm.java b/Mage.Sets/src/mage/cards/s/SeedlingCharm.java
index 2be5f726327..fdd5058c33b 100644
--- a/Mage.Sets/src/mage/cards/s/SeedlingCharm.java
+++ b/Mage.Sets/src/mage/cards/s/SeedlingCharm.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SeedlingCharm extends CardImpl {
+public final class SeedlingCharm extends CardImpl {
private static final FilterPermanent filter1 = new FilterPermanent("Aura attached to a creature");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/s/SeedsOfInnocence.java b/Mage.Sets/src/mage/cards/s/SeedsOfInnocence.java
index 5939f1d9acc..3a260e29579 100644
--- a/Mage.Sets/src/mage/cards/s/SeedsOfInnocence.java
+++ b/Mage.Sets/src/mage/cards/s/SeedsOfInnocence.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class SeedsOfInnocence extends CardImpl {
+public final class SeedsOfInnocence extends CardImpl {
public SeedsOfInnocence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SeedsOfRenewal.java b/Mage.Sets/src/mage/cards/s/SeedsOfRenewal.java
index 740b8214042..3f47a4815ce 100644
--- a/Mage.Sets/src/mage/cards/s/SeedsOfRenewal.java
+++ b/Mage.Sets/src/mage/cards/s/SeedsOfRenewal.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class SeedsOfRenewal extends CardImpl {
+public final class SeedsOfRenewal extends CardImpl {
public SeedsOfRenewal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SeedsOfStrength.java b/Mage.Sets/src/mage/cards/s/SeedsOfStrength.java
index 5c884ddc540..3d2ed40b813 100644
--- a/Mage.Sets/src/mage/cards/s/SeedsOfStrength.java
+++ b/Mage.Sets/src/mage/cards/s/SeedsOfStrength.java
@@ -43,7 +43,7 @@ import mage.target.targetpointer.ThirdTargetPointer;
*
* @author LevelX2
*/
-public class SeedsOfStrength extends CardImpl {
+public final class SeedsOfStrength extends CardImpl {
public SeedsOfStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Seedtime.java b/Mage.Sets/src/mage/cards/s/Seedtime.java
index 434ab9b3ddb..f07723fa011 100644
--- a/Mage.Sets/src/mage/cards/s/Seedtime.java
+++ b/Mage.Sets/src/mage/cards/s/Seedtime.java
@@ -46,7 +46,7 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author jeffwadsworth
*/
-public class Seedtime extends CardImpl {
+public final class Seedtime extends CardImpl {
private final static String rule = "Cast {this} only during your turn.";
private final static String rule2 = "Take an extra turn after this one if an opponent cast a blue spell this turn.";
diff --git a/Mage.Sets/src/mage/cards/s/SeekTheHorizon.java b/Mage.Sets/src/mage/cards/s/SeekTheHorizon.java
index 94a9bdf8fbc..f06bd5eedd0 100644
--- a/Mage.Sets/src/mage/cards/s/SeekTheHorizon.java
+++ b/Mage.Sets/src/mage/cards/s/SeekTheHorizon.java
@@ -40,13 +40,13 @@ import java.util.UUID;
*
* @author Loki
*/
-public class SeekTheHorizon extends CardImpl {
+public final class SeekTheHorizon extends CardImpl {
public SeekTheHorizon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
// Search your library for up to three basic land cards, reveal them, and put them into your hand. Then shuffle your library.
- this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_BASIC_LAND_CARD), true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_CARD_BASIC_LAND), true));
}
public SeekTheHorizon(final SeekTheHorizon card) {
diff --git a/Mage.Sets/src/mage/cards/s/SeekTheWilds.java b/Mage.Sets/src/mage/cards/s/SeekTheWilds.java
index 399f4051616..0c042b9e757 100644
--- a/Mage.Sets/src/mage/cards/s/SeekTheWilds.java
+++ b/Mage.Sets/src/mage/cards/s/SeekTheWilds.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class SeekTheWilds extends CardImpl {
+public final class SeekTheWilds extends CardImpl {
private static final FilterCard filter = new FilterCard("a creature or land card");
diff --git a/Mage.Sets/src/mage/cards/s/Seeker.java b/Mage.Sets/src/mage/cards/s/Seeker.java
index 012a0ea0153..525e20f16cc 100644
--- a/Mage.Sets/src/mage/cards/s/Seeker.java
+++ b/Mage.Sets/src/mage/cards/s/Seeker.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2 & L_J
*/
-public class Seeker extends CardImpl {
+public final class Seeker extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by artifact creatures and/or white creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SeekerOfInsight.java b/Mage.Sets/src/mage/cards/s/SeekerOfInsight.java
index 453f0690051..3d9abf90226 100644
--- a/Mage.Sets/src/mage/cards/s/SeekerOfInsight.java
+++ b/Mage.Sets/src/mage/cards/s/SeekerOfInsight.java
@@ -48,7 +48,7 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author anonymous
*/
-public class SeekerOfInsight extends CardImpl {
+public final class SeekerOfInsight extends CardImpl {
public SeekerOfInsight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeekerOfSkybreak.java b/Mage.Sets/src/mage/cards/s/SeekerOfSkybreak.java
index 0a70f7bf921..f513f0968c5 100644
--- a/Mage.Sets/src/mage/cards/s/SeekerOfSkybreak.java
+++ b/Mage.Sets/src/mage/cards/s/SeekerOfSkybreak.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SeekerOfSkybreak extends CardImpl {
+public final class SeekerOfSkybreak extends CardImpl {
public SeekerOfSkybreak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SeekerOfTheWay.java b/Mage.Sets/src/mage/cards/s/SeekerOfTheWay.java
index 5313b2045b9..4c1a9f777d3 100644
--- a/Mage.Sets/src/mage/cards/s/SeekerOfTheWay.java
+++ b/Mage.Sets/src/mage/cards/s/SeekerOfTheWay.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author emerald000
*/
-public class SeekerOfTheWay extends CardImpl {
+public final class SeekerOfTheWay extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SeekersSquire.java b/Mage.Sets/src/mage/cards/s/SeekersSquire.java
index fcae665dc10..f32deea4a75 100644
--- a/Mage.Sets/src/mage/cards/s/SeekersSquire.java
+++ b/Mage.Sets/src/mage/cards/s/SeekersSquire.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class SeekersSquire extends CardImpl {
+public final class SeekersSquire extends CardImpl {
public SeekersSquire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SeerOfTheLastTomorrow.java b/Mage.Sets/src/mage/cards/s/SeerOfTheLastTomorrow.java
index e88f44e6bd1..de1bf79af54 100644
--- a/Mage.Sets/src/mage/cards/s/SeerOfTheLastTomorrow.java
+++ b/Mage.Sets/src/mage/cards/s/SeerOfTheLastTomorrow.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author spjspj
*/
-public class SeerOfTheLastTomorrow extends CardImpl {
+public final class SeerOfTheLastTomorrow extends CardImpl {
public SeerOfTheLastTomorrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeersLantern.java b/Mage.Sets/src/mage/cards/s/SeersLantern.java
index 2c8eae442b0..9d1eec00b20 100644
--- a/Mage.Sets/src/mage/cards/s/SeersLantern.java
+++ b/Mage.Sets/src/mage/cards/s/SeersLantern.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SeersLantern extends CardImpl {
+public final class SeersLantern extends CardImpl {
public SeersLantern(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SeersSundial.java b/Mage.Sets/src/mage/cards/s/SeersSundial.java
index 091bca062dc..171d0e6fe68 100644
--- a/Mage.Sets/src/mage/cards/s/SeersSundial.java
+++ b/Mage.Sets/src/mage/cards/s/SeersSundial.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author jeffwadsworth
*/
-public class SeersSundial extends CardImpl {
+public final class SeersSundial extends CardImpl {
public SeersSundial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SeersVision.java b/Mage.Sets/src/mage/cards/s/SeersVision.java
index c4f694f0f73..4505f4467e4 100644
--- a/Mage.Sets/src/mage/cards/s/SeersVision.java
+++ b/Mage.Sets/src/mage/cards/s/SeersVision.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class SeersVision extends CardImpl {
+public final class SeersVision extends CardImpl {
public SeersVision(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SeethingAnger.java b/Mage.Sets/src/mage/cards/s/SeethingAnger.java
index 2fd296f680b..209230c176b 100644
--- a/Mage.Sets/src/mage/cards/s/SeethingAnger.java
+++ b/Mage.Sets/src/mage/cards/s/SeethingAnger.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SeethingAnger extends CardImpl {
+public final class SeethingAnger extends CardImpl {
public SeethingAnger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SeethingPathblazer.java b/Mage.Sets/src/mage/cards/s/SeethingPathblazer.java
index ece2167dd21..f1ceef1a1f3 100644
--- a/Mage.Sets/src/mage/cards/s/SeethingPathblazer.java
+++ b/Mage.Sets/src/mage/cards/s/SeethingPathblazer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class SeethingPathblazer extends CardImpl {
+public final class SeethingPathblazer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elemental");
diff --git a/Mage.Sets/src/mage/cards/s/SeethingSong.java b/Mage.Sets/src/mage/cards/s/SeethingSong.java
index dc4aa3607e6..72cc2be2e74 100644
--- a/Mage.Sets/src/mage/cards/s/SeethingSong.java
+++ b/Mage.Sets/src/mage/cards/s/SeethingSong.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class SeethingSong extends CardImpl {
+public final class SeethingSong extends CardImpl {
public SeethingSong(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SegmentedKrotiq.java b/Mage.Sets/src/mage/cards/s/SegmentedKrotiq.java
index 9a595bbfc4f..74cd171002f 100644
--- a/Mage.Sets/src/mage/cards/s/SegmentedKrotiq.java
+++ b/Mage.Sets/src/mage/cards/s/SegmentedKrotiq.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SegmentedKrotiq extends CardImpl {
+public final class SegmentedKrotiq extends CardImpl {
public SegmentedKrotiq(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SegmentedWurm.java b/Mage.Sets/src/mage/cards/s/SegmentedWurm.java
index 0e0f68e9364..f3524cdcbd8 100644
--- a/Mage.Sets/src/mage/cards/s/SegmentedWurm.java
+++ b/Mage.Sets/src/mage/cards/s/SegmentedWurm.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class SegmentedWurm extends CardImpl {
+public final class SegmentedWurm extends CardImpl {
public SegmentedWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SegovianLeviathan.java b/Mage.Sets/src/mage/cards/s/SegovianLeviathan.java
index b581c742042..ebc91f6ab7e 100644
--- a/Mage.Sets/src/mage/cards/s/SegovianLeviathan.java
+++ b/Mage.Sets/src/mage/cards/s/SegovianLeviathan.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SegovianLeviathan extends CardImpl {
+public final class SegovianLeviathan extends CardImpl {
public SegovianLeviathan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SehtsTiger.java b/Mage.Sets/src/mage/cards/s/SehtsTiger.java
index 26dc8196aeb..d4c789de392 100644
--- a/Mage.Sets/src/mage/cards/s/SehtsTiger.java
+++ b/Mage.Sets/src/mage/cards/s/SehtsTiger.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SehtsTiger extends CardImpl {
+public final class SehtsTiger extends CardImpl {
public SehtsTiger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SeismicAssault.java b/Mage.Sets/src/mage/cards/s/SeismicAssault.java
index 7bb6d4bbe6c..7f15a1ff79e 100644
--- a/Mage.Sets/src/mage/cards/s/SeismicAssault.java
+++ b/Mage.Sets/src/mage/cards/s/SeismicAssault.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jonubuu
*/
-public class SeismicAssault extends CardImpl {
+public final class SeismicAssault extends CardImpl {
private static final FilterCard filter = new FilterLandCard();
diff --git a/Mage.Sets/src/mage/cards/s/SeismicElemental.java b/Mage.Sets/src/mage/cards/s/SeismicElemental.java
index 5a545187be0..efa579c79bf 100644
--- a/Mage.Sets/src/mage/cards/s/SeismicElemental.java
+++ b/Mage.Sets/src/mage/cards/s/SeismicElemental.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class SeismicElemental extends CardImpl {
+public final class SeismicElemental extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/s/SeismicMage.java b/Mage.Sets/src/mage/cards/s/SeismicMage.java
index dbd2c255370..c6830516b20 100644
--- a/Mage.Sets/src/mage/cards/s/SeismicMage.java
+++ b/Mage.Sets/src/mage/cards/s/SeismicMage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class SeismicMage extends CardImpl {
+public final class SeismicMage extends CardImpl {
public SeismicMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SeismicRupture.java b/Mage.Sets/src/mage/cards/s/SeismicRupture.java
index 4bca8077190..0801b113b03 100644
--- a/Mage.Sets/src/mage/cards/s/SeismicRupture.java
+++ b/Mage.Sets/src/mage/cards/s/SeismicRupture.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class SeismicRupture extends CardImpl {
+public final class SeismicRupture extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/s/SeismicShift.java b/Mage.Sets/src/mage/cards/s/SeismicShift.java
index 84748a305a0..70c99358b17 100644
--- a/Mage.Sets/src/mage/cards/s/SeismicShift.java
+++ b/Mage.Sets/src/mage/cards/s/SeismicShift.java
@@ -1,68 +1,68 @@
-/*
- * 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.effects.common.DestroyTargetEffect;
-import mage.abilities.effects.common.combat.CantBlockTargetEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.filter.StaticFilters;
-import mage.target.common.TargetCreaturePermanent;
-import mage.target.common.TargetLandPermanent;
-import mage.target.targetpointer.SecondTargetPointer;
-
-/**
- *
- * @author LevelX2
- */
-public class SeismicShift extends CardImpl {
-
- public SeismicShift(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
-
- // Destroy target land. Up to two target creatures can't block this turn.
- this.getSpellAbility().addEffect(new DestroyTargetEffect(false, false));
- this.getSpellAbility().addTarget(new TargetLandPermanent());
- this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn)
- .setText("Up to two target creatures can't block this turn")
- .setTargetPointer(new SecondTargetPointer()));
- this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2, StaticFilters.FILTER_PERMANENT_CREATURES, false));
- }
-
- public SeismicShift(final SeismicShift card) {
- super(card);
- }
-
- @Override
- public SeismicShift copy() {
- return new SeismicShift(this);
- }
-}
+/*
+ * 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.effects.common.DestroyTargetEffect;
+import mage.abilities.effects.common.combat.CantBlockTargetEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.filter.StaticFilters;
+import mage.target.common.TargetCreaturePermanent;
+import mage.target.common.TargetLandPermanent;
+import mage.target.targetpointer.SecondTargetPointer;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class SeismicShift extends CardImpl {
+
+ public SeismicShift(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
+
+ // Destroy target land. Up to two target creatures can't block this turn.
+ this.getSpellAbility().addEffect(new DestroyTargetEffect(false, false));
+ this.getSpellAbility().addTarget(new TargetLandPermanent());
+ this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn)
+ .setText("Up to two target creatures can't block this turn")
+ .setTargetPointer(new SecondTargetPointer()));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2, StaticFilters.FILTER_PERMANENT_CREATURES, false));
+ }
+
+ public SeismicShift(final SeismicShift card) {
+ super(card);
+ }
+
+ @Override
+ public SeismicShift copy() {
+ return new SeismicShift(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/SeismicShudder.java b/Mage.Sets/src/mage/cards/s/SeismicShudder.java
index 744d0b40e3d..9c5febc4e5e 100644
--- a/Mage.Sets/src/mage/cards/s/SeismicShudder.java
+++ b/Mage.Sets/src/mage/cards/s/SeismicShudder.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author North
*/
-public class SeismicShudder extends CardImpl {
+public final class SeismicShudder extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/s/SeismicSpike.java b/Mage.Sets/src/mage/cards/s/SeismicSpike.java
index c3278b1d6f6..b56def948f4 100644
--- a/Mage.Sets/src/mage/cards/s/SeismicSpike.java
+++ b/Mage.Sets/src/mage/cards/s/SeismicSpike.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki
*/
-public class SeismicSpike extends CardImpl {
+public final class SeismicSpike extends CardImpl {
public SeismicSpike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SeismicStomp.java b/Mage.Sets/src/mage/cards/s/SeismicStomp.java
index a1e2105e05c..4c543401341 100644
--- a/Mage.Sets/src/mage/cards/s/SeismicStomp.java
+++ b/Mage.Sets/src/mage/cards/s/SeismicStomp.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author jeffwadsworth
*/
-public class SeismicStomp extends CardImpl {
+public final class SeismicStomp extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/s/SeismicStrike.java b/Mage.Sets/src/mage/cards/s/SeismicStrike.java
index cd1426ddaaa..ca2155be245 100644
--- a/Mage.Sets/src/mage/cards/s/SeismicStrike.java
+++ b/Mage.Sets/src/mage/cards/s/SeismicStrike.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SeismicStrike extends CardImpl {
+public final class SeismicStrike extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Mountains you control");
diff --git a/Mage.Sets/src/mage/cards/s/SeizanPerverterOfTruth.java b/Mage.Sets/src/mage/cards/s/SeizanPerverterOfTruth.java
index 6c040b30ad6..2db1e8bb227 100644
--- a/Mage.Sets/src/mage/cards/s/SeizanPerverterOfTruth.java
+++ b/Mage.Sets/src/mage/cards/s/SeizanPerverterOfTruth.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author Loki
*/
-public class SeizanPerverterOfTruth extends CardImpl {
+public final class SeizanPerverterOfTruth extends CardImpl {
public SeizanPerverterOfTruth (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SeizeTheDay.java b/Mage.Sets/src/mage/cards/s/SeizeTheDay.java
index d9f247d3ceb..5b4f18e5e8a 100644
--- a/Mage.Sets/src/mage/cards/s/SeizeTheDay.java
+++ b/Mage.Sets/src/mage/cards/s/SeizeTheDay.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SeizeTheDay extends CardImpl {
+public final class SeizeTheDay extends CardImpl {
public SeizeTheDay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SeizeTheInitiative.java b/Mage.Sets/src/mage/cards/s/SeizeTheInitiative.java
index e19235bfc80..ade114f76e1 100644
--- a/Mage.Sets/src/mage/cards/s/SeizeTheInitiative.java
+++ b/Mage.Sets/src/mage/cards/s/SeizeTheInitiative.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SeizeTheInitiative extends CardImpl {
+public final class SeizeTheInitiative extends CardImpl {
public SeizeTheInitiative (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SeizeTheSoul.java b/Mage.Sets/src/mage/cards/s/SeizeTheSoul.java
index a970769a3e1..3183e02375e 100644
--- a/Mage.Sets/src/mage/cards/s/SeizeTheSoul.java
+++ b/Mage.Sets/src/mage/cards/s/SeizeTheSoul.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class SeizeTheSoul extends CardImpl {
+public final class SeizeTheSoul extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonwhite, nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/Seizures.java b/Mage.Sets/src/mage/cards/s/Seizures.java
index 1cb07990c6f..db0c1bf3da6 100644
--- a/Mage.Sets/src/mage/cards/s/Seizures.java
+++ b/Mage.Sets/src/mage/cards/s/Seizures.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Seizures extends CardImpl {
+public final class Seizures extends CardImpl {
public Seizures(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SejiriMerfolk.java b/Mage.Sets/src/mage/cards/s/SejiriMerfolk.java
index e8ade4186b9..7f35b9dea6e 100644
--- a/Mage.Sets/src/mage/cards/s/SejiriMerfolk.java
+++ b/Mage.Sets/src/mage/cards/s/SejiriMerfolk.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North, nantuko
*/
-public class SejiriMerfolk extends CardImpl {
+public final class SejiriMerfolk extends CardImpl {
private static final String rule1 = "As long as you control a Plains, {this} has first strike.";
private static final String rule2 = "As long as you control a Plains, {this} has lifelink.";
diff --git a/Mage.Sets/src/mage/cards/s/SejiriRefuge.java b/Mage.Sets/src/mage/cards/s/SejiriRefuge.java
index 74ce967ebf5..cf660ece6e6 100644
--- a/Mage.Sets/src/mage/cards/s/SejiriRefuge.java
+++ b/Mage.Sets/src/mage/cards/s/SejiriRefuge.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SejiriRefuge extends CardImpl {
+public final class SejiriRefuge extends CardImpl {
public SejiriRefuge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/s/SejiriSteppe.java b/Mage.Sets/src/mage/cards/s/SejiriSteppe.java
index bb883f78931..bfe7b254dcc 100644
--- a/Mage.Sets/src/mage/cards/s/SejiriSteppe.java
+++ b/Mage.Sets/src/mage/cards/s/SejiriSteppe.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SejiriSteppe extends CardImpl {
+public final class SejiriSteppe extends CardImpl {
public SejiriSteppe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/s/SekKuarDeathkeeper.java b/Mage.Sets/src/mage/cards/s/SekKuarDeathkeeper.java
index e7027208454..3ab2fdbe68d 100644
--- a/Mage.Sets/src/mage/cards/s/SekKuarDeathkeeper.java
+++ b/Mage.Sets/src/mage/cards/s/SekKuarDeathkeeper.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.SekKuarDeathkeeperGravebornToken;
*
* @author LevelX2
*/
-public class SekKuarDeathkeeper extends CardImpl {
+public final class SekKuarDeathkeeper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another nontoken creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java b/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java
index 57dbe49a978..a08bb1cfc8a 100644
--- a/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java
+++ b/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class SekkiSeasonsGuide extends CardImpl {
+public final class SekkiSeasonsGuide extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("eight Spirits");
diff --git a/Mage.Sets/src/mage/cards/s/SelectForInspection.java b/Mage.Sets/src/mage/cards/s/SelectForInspection.java
index 7269649ff1d..0b62eee1b8c 100644
--- a/Mage.Sets/src/mage/cards/s/SelectForInspection.java
+++ b/Mage.Sets/src/mage/cards/s/SelectForInspection.java
@@ -41,15 +41,19 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SelectForInspection extends CardImpl {
+public final class SelectForInspection extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
+
+ static {
+ filter.add(new TappedPredicate());
+ }
public SelectForInspection(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
// Return target tapped creature to its owner's hand. Scry 1.
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
- FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
- filter.add(new TappedPredicate());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
this.getSpellAbility().addEffect(new ScryEffect(1));
diff --git a/Mage.Sets/src/mage/cards/s/SelectiveMemory.java b/Mage.Sets/src/mage/cards/s/SelectiveMemory.java
index 4eb0aa71e38..31204b9171f 100644
--- a/Mage.Sets/src/mage/cards/s/SelectiveMemory.java
+++ b/Mage.Sets/src/mage/cards/s/SelectiveMemory.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class SelectiveMemory extends CardImpl {
+public final class SelectiveMemory extends CardImpl {
public SelectiveMemory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SeleniaDarkAngel.java b/Mage.Sets/src/mage/cards/s/SeleniaDarkAngel.java
index afeee33ca4e..aa7fd8fea45 100644
--- a/Mage.Sets/src/mage/cards/s/SeleniaDarkAngel.java
+++ b/Mage.Sets/src/mage/cards/s/SeleniaDarkAngel.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SeleniaDarkAngel extends CardImpl {
+public final class SeleniaDarkAngel extends CardImpl {
public SeleniaDarkAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaCharm.java b/Mage.Sets/src/mage/cards/s/SelesnyaCharm.java
index 7953d7ea99e..738cac31f48 100644
--- a/Mage.Sets/src/mage/cards/s/SelesnyaCharm.java
+++ b/Mage.Sets/src/mage/cards/s/SelesnyaCharm.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SelesnyaCharm extends CardImpl {
+public final class SelesnyaCharm extends CardImpl {
static private final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaCluestone.java b/Mage.Sets/src/mage/cards/s/SelesnyaCluestone.java
index 9e28278b5c3..311b2796ea0 100644
--- a/Mage.Sets/src/mage/cards/s/SelesnyaCluestone.java
+++ b/Mage.Sets/src/mage/cards/s/SelesnyaCluestone.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*/
-public class SelesnyaCluestone extends CardImpl {
+public final class SelesnyaCluestone extends CardImpl {
public SelesnyaCluestone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaEvangel.java b/Mage.Sets/src/mage/cards/s/SelesnyaEvangel.java
index fafbb4b51c5..a354673a332 100644
--- a/Mage.Sets/src/mage/cards/s/SelesnyaEvangel.java
+++ b/Mage.Sets/src/mage/cards/s/SelesnyaEvangel.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class SelesnyaEvangel extends CardImpl {
+public final class SelesnyaEvangel extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaGuildgate.java b/Mage.Sets/src/mage/cards/s/SelesnyaGuildgate.java
index bc3099332db..e69cc5c8f3c 100644
--- a/Mage.Sets/src/mage/cards/s/SelesnyaGuildgate.java
+++ b/Mage.Sets/src/mage/cards/s/SelesnyaGuildgate.java
@@ -40,7 +40,7 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class SelesnyaGuildgate extends CardImpl {
+public final class SelesnyaGuildgate extends CardImpl {
public SelesnyaGuildgate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaGuildmage.java b/Mage.Sets/src/mage/cards/s/SelesnyaGuildmage.java
index a827bd5e67b..fca86bdfc25 100644
--- a/Mage.Sets/src/mage/cards/s/SelesnyaGuildmage.java
+++ b/Mage.Sets/src/mage/cards/s/SelesnyaGuildmage.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author Loki
*/
-public class SelesnyaGuildmage extends CardImpl {
+public final class SelesnyaGuildmage extends CardImpl {
public SelesnyaGuildmage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G/W}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaKeyrune.java b/Mage.Sets/src/mage/cards/s/SelesnyaKeyrune.java
index fb9c9f13347..fa179c48c03 100644
--- a/Mage.Sets/src/mage/cards/s/SelesnyaKeyrune.java
+++ b/Mage.Sets/src/mage/cards/s/SelesnyaKeyrune.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.Token;
/**
* @author LevelX2
*/
-public class SelesnyaKeyrune extends CardImpl {
+public final class SelesnyaKeyrune extends CardImpl {
public SelesnyaKeyrune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaSagittars.java b/Mage.Sets/src/mage/cards/s/SelesnyaSagittars.java
index a1163dfaac3..519e1a68da1 100644
--- a/Mage.Sets/src/mage/cards/s/SelesnyaSagittars.java
+++ b/Mage.Sets/src/mage/cards/s/SelesnyaSagittars.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author nigelzor
*/
-public class SelesnyaSagittars extends CardImpl {
+public final class SelesnyaSagittars extends CardImpl {
public SelesnyaSagittars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaSanctuary.java b/Mage.Sets/src/mage/cards/s/SelesnyaSanctuary.java
index ac117d8cdd6..b61fbfb22c0 100644
--- a/Mage.Sets/src/mage/cards/s/SelesnyaSanctuary.java
+++ b/Mage.Sets/src/mage/cards/s/SelesnyaSanctuary.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Loki
*/
-public class SelesnyaSanctuary extends CardImpl {
+public final class SelesnyaSanctuary extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaSentry.java b/Mage.Sets/src/mage/cards/s/SelesnyaSentry.java
index 715a4fbc011..75336d8b0c7 100644
--- a/Mage.Sets/src/mage/cards/s/SelesnyaSentry.java
+++ b/Mage.Sets/src/mage/cards/s/SelesnyaSentry.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SelesnyaSentry extends CardImpl {
+public final class SelesnyaSentry extends CardImpl {
public SelesnyaSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaSignet.java b/Mage.Sets/src/mage/cards/s/SelesnyaSignet.java
index 1bfa458463f..9f92924b518 100644
--- a/Mage.Sets/src/mage/cards/s/SelesnyaSignet.java
+++ b/Mage.Sets/src/mage/cards/s/SelesnyaSignet.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SelesnyaSignet extends CardImpl {
+public final class SelesnyaSignet extends CardImpl {
public SelesnyaSignet (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SelfAssembler.java b/Mage.Sets/src/mage/cards/s/SelfAssembler.java
index 7a76b9dc8c8..e31fb10fffc 100644
--- a/Mage.Sets/src/mage/cards/s/SelfAssembler.java
+++ b/Mage.Sets/src/mage/cards/s/SelfAssembler.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class SelfAssembler extends CardImpl {
+public final class SelfAssembler extends CardImpl {
private static final FilterCard filter = new FilterCard("an Assembly-Worker card");
diff --git a/Mage.Sets/src/mage/cards/s/SelfInflictedWound.java b/Mage.Sets/src/mage/cards/s/SelfInflictedWound.java
index 008f280e16f..5ac64fa2fdc 100644
--- a/Mage.Sets/src/mage/cards/s/SelfInflictedWound.java
+++ b/Mage.Sets/src/mage/cards/s/SelfInflictedWound.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class SelfInflictedWound extends CardImpl {
+public final class SelfInflictedWound extends CardImpl {
public SelfInflictedWound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SelflessCathar.java b/Mage.Sets/src/mage/cards/s/SelflessCathar.java
index 6698f0d733d..ecc6babab61 100644
--- a/Mage.Sets/src/mage/cards/s/SelflessCathar.java
+++ b/Mage.Sets/src/mage/cards/s/SelflessCathar.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
/**
* @author nantuko
*/
-public class SelflessCathar extends CardImpl {
+public final class SelflessCathar extends CardImpl {
public SelflessCathar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SelflessSpirit.java b/Mage.Sets/src/mage/cards/s/SelflessSpirit.java
index d23a90fc364..882fadeadb4 100644
--- a/Mage.Sets/src/mage/cards/s/SelflessSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/SelflessSpirit.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class SelflessSpirit extends CardImpl {
+public final class SelflessSpirit extends CardImpl {
public SelflessSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SelflessSquire.java b/Mage.Sets/src/mage/cards/s/SelflessSquire.java
index a198878095e..b7317c04591 100644
--- a/Mage.Sets/src/mage/cards/s/SelflessSquire.java
+++ b/Mage.Sets/src/mage/cards/s/SelflessSquire.java
@@ -49,7 +49,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class SelflessSquire extends CardImpl {
+public final class SelflessSquire extends CardImpl {
public SelflessSquire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SelhoffOccultist.java b/Mage.Sets/src/mage/cards/s/SelhoffOccultist.java
index bfcfe8c78aa..60d0e76a6d5 100644
--- a/Mage.Sets/src/mage/cards/s/SelhoffOccultist.java
+++ b/Mage.Sets/src/mage/cards/s/SelhoffOccultist.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class SelhoffOccultist extends CardImpl {
+public final class SelhoffOccultist extends CardImpl {
public SelhoffOccultist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SelkieHedgeMage.java b/Mage.Sets/src/mage/cards/s/SelkieHedgeMage.java
index 4aac43dba1d..7661a72d55a 100644
--- a/Mage.Sets/src/mage/cards/s/SelkieHedgeMage.java
+++ b/Mage.Sets/src/mage/cards/s/SelkieHedgeMage.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
/**
* @author jeffwadsworth
*/
-public class SelkieHedgeMage extends CardImpl {
+public final class SelkieHedgeMage extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Forests");
private static final FilterLandPermanent filter2 = new FilterLandPermanent("Islands");
diff --git a/Mage.Sets/src/mage/cards/s/SellSwordBrute.java b/Mage.Sets/src/mage/cards/s/SellSwordBrute.java
index 1ba093afc0a..3a75afb55a0 100644
--- a/Mage.Sets/src/mage/cards/s/SellSwordBrute.java
+++ b/Mage.Sets/src/mage/cards/s/SellSwordBrute.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SellSwordBrute extends CardImpl {
+public final class SellSwordBrute extends CardImpl {
public SellSwordBrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SellerOfSongbirds.java b/Mage.Sets/src/mage/cards/s/SellerOfSongbirds.java
index e3fca1742f6..4da00eccc8a 100644
--- a/Mage.Sets/src/mage/cards/s/SellerOfSongbirds.java
+++ b/Mage.Sets/src/mage/cards/s/SellerOfSongbirds.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.BirdToken;
/**
* @author LevelX2
*/
-public class SellerOfSongbirds extends CardImpl {
+public final class SellerOfSongbirds extends CardImpl {
public SellerOfSongbirds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SelvalaExplorerReturned.java b/Mage.Sets/src/mage/cards/s/SelvalaExplorerReturned.java
index a8a55e21ff7..48ac8089028 100644
--- a/Mage.Sets/src/mage/cards/s/SelvalaExplorerReturned.java
+++ b/Mage.Sets/src/mage/cards/s/SelvalaExplorerReturned.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SelvalaExplorerReturned extends CardImpl {
+public final class SelvalaExplorerReturned extends CardImpl {
public SelvalaExplorerReturned(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SelvalaHeartOfTheWilds.java b/Mage.Sets/src/mage/cards/s/SelvalaHeartOfTheWilds.java
index afc41bb48d4..2921881b742 100644
--- a/Mage.Sets/src/mage/cards/s/SelvalaHeartOfTheWilds.java
+++ b/Mage.Sets/src/mage/cards/s/SelvalaHeartOfTheWilds.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author maxlebedev
*/
-public class SelvalaHeartOfTheWilds extends CardImpl {
+public final class SelvalaHeartOfTheWilds extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/s/SelvalasCharge.java b/Mage.Sets/src/mage/cards/s/SelvalasCharge.java
index 616e2f69c5d..761822befef 100644
--- a/Mage.Sets/src/mage/cards/s/SelvalasCharge.java
+++ b/Mage.Sets/src/mage/cards/s/SelvalasCharge.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class SelvalasCharge extends CardImpl {
+public final class SelvalasCharge extends CardImpl {
public SelvalasCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SelvalasEnforcer.java b/Mage.Sets/src/mage/cards/s/SelvalasEnforcer.java
index 0f0a15ee8b6..9cb2a9795ca 100644
--- a/Mage.Sets/src/mage/cards/s/SelvalasEnforcer.java
+++ b/Mage.Sets/src/mage/cards/s/SelvalasEnforcer.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class SelvalasEnforcer extends CardImpl {
+public final class SelvalasEnforcer extends CardImpl {
public SelvalasEnforcer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SelvalasStampede.java b/Mage.Sets/src/mage/cards/s/SelvalasStampede.java
index 0218792c1a1..091ec173acb 100644
--- a/Mage.Sets/src/mage/cards/s/SelvalasStampede.java
+++ b/Mage.Sets/src/mage/cards/s/SelvalasStampede.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInHand;
*
* @author JRHerlehy
*/
-public class SelvalasStampede extends CardImpl {
+public final class SelvalasStampede extends CardImpl {
public SelvalasStampede(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SemblanceAnvil.java b/Mage.Sets/src/mage/cards/s/SemblanceAnvil.java
index 0ca46f52d6f..db807b41592 100644
--- a/Mage.Sets/src/mage/cards/s/SemblanceAnvil.java
+++ b/Mage.Sets/src/mage/cards/s/SemblanceAnvil.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
/**
* @author nantuko
*/
-public class SemblanceAnvil extends CardImpl {
+public final class SemblanceAnvil extends CardImpl {
public SemblanceAnvil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SenTriplets.java b/Mage.Sets/src/mage/cards/s/SenTriplets.java
index 4646a0bbb2c..2fce5bb6fcf 100644
--- a/Mage.Sets/src/mage/cards/s/SenTriplets.java
+++ b/Mage.Sets/src/mage/cards/s/SenTriplets.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class SenTriplets extends CardImpl {
+public final class SenTriplets extends CardImpl {
public SenTriplets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SenatorBailOrgana.java b/Mage.Sets/src/mage/cards/s/SenatorBailOrgana.java
index 62ebe499bcd..e7e606f73f0 100644
--- a/Mage.Sets/src/mage/cards/s/SenatorBailOrgana.java
+++ b/Mage.Sets/src/mage/cards/s/SenatorBailOrgana.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Styxo
*/
-public class SenatorBailOrgana extends CardImpl {
+public final class SenatorBailOrgana extends CardImpl {
public SenatorBailOrgana(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SenatorLottDod.java b/Mage.Sets/src/mage/cards/s/SenatorLottDod.java
index f2d8862ed7f..a87ec89c489 100644
--- a/Mage.Sets/src/mage/cards/s/SenatorLottDod.java
+++ b/Mage.Sets/src/mage/cards/s/SenatorLottDod.java
@@ -47,7 +47,7 @@ import mage.util.CardUtil;
*
* @author Styxo
*/
-public class SenatorLottDod extends CardImpl {
+public final class SenatorLottDod extends CardImpl {
public SenatorLottDod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SenatorOnacondaFarr.java b/Mage.Sets/src/mage/cards/s/SenatorOnacondaFarr.java
index c66724d832a..20037525ef1 100644
--- a/Mage.Sets/src/mage/cards/s/SenatorOnacondaFarr.java
+++ b/Mage.Sets/src/mage/cards/s/SenatorOnacondaFarr.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Styxo
*/
-public class SenatorOnacondaFarr extends CardImpl {
+public final class SenatorOnacondaFarr extends CardImpl {
public SenatorOnacondaFarr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SenatorPadmeAmidala.java b/Mage.Sets/src/mage/cards/s/SenatorPadmeAmidala.java
index c8ae9817dd3..2420982bb05 100644
--- a/Mage.Sets/src/mage/cards/s/SenatorPadmeAmidala.java
+++ b/Mage.Sets/src/mage/cards/s/SenatorPadmeAmidala.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
*
* @author Styxo
*/
-public class SenatorPadmeAmidala extends CardImpl {
+public final class SenatorPadmeAmidala extends CardImpl {
public SenatorPadmeAmidala(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SenatorPasselArgente.java b/Mage.Sets/src/mage/cards/s/SenatorPasselArgente.java
index f81303d6411..78d64484133 100644
--- a/Mage.Sets/src/mage/cards/s/SenatorPasselArgente.java
+++ b/Mage.Sets/src/mage/cards/s/SenatorPasselArgente.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
*
* @author Styxo
*/
-public class SenatorPasselArgente extends CardImpl {
+public final class SenatorPasselArgente extends CardImpl {
public SenatorPasselArgente(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SendToSleep.java b/Mage.Sets/src/mage/cards/s/SendToSleep.java
index 1e62db1b418..07ce5a76c05 100644
--- a/Mage.Sets/src/mage/cards/s/SendToSleep.java
+++ b/Mage.Sets/src/mage/cards/s/SendToSleep.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SendToSleep extends CardImpl {
+public final class SendToSleep extends CardImpl {
public SendToSleep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SengirAutocrat.java b/Mage.Sets/src/mage/cards/s/SengirAutocrat.java
index 1fe0e5dd85e..e6f8d243cd7 100644
--- a/Mage.Sets/src/mage/cards/s/SengirAutocrat.java
+++ b/Mage.Sets/src/mage/cards/s/SengirAutocrat.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.SerfToken;
*
* @author Quercitron
*/
-public class SengirAutocrat extends CardImpl {
+public final class SengirAutocrat extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Serf tokens");
diff --git a/Mage.Sets/src/mage/cards/s/SengirBats.java b/Mage.Sets/src/mage/cards/s/SengirBats.java
index 54d500cb503..6f89a9c8f6f 100644
--- a/Mage.Sets/src/mage/cards/s/SengirBats.java
+++ b/Mage.Sets/src/mage/cards/s/SengirBats.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class SengirBats extends CardImpl {
+public final class SengirBats extends CardImpl {
public SengirBats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SengirNosferatu.java b/Mage.Sets/src/mage/cards/s/SengirNosferatu.java
index 5a8a3dec940..84692beccf6 100644
--- a/Mage.Sets/src/mage/cards/s/SengirNosferatu.java
+++ b/Mage.Sets/src/mage/cards/s/SengirNosferatu.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCardInExile;
* @author LoneFox
*
*/
-public class SengirNosferatu extends CardImpl {
+public final class SengirNosferatu extends CardImpl {
public SengirNosferatu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SengirVampire.java b/Mage.Sets/src/mage/cards/s/SengirVampire.java
index aacd73b0279..bdead5649ca 100644
--- a/Mage.Sets/src/mage/cards/s/SengirVampire.java
+++ b/Mage.Sets/src/mage/cards/s/SengirVampire.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
/**
* @author nantuko
*/
-public class SengirVampire extends CardImpl {
+public final class SengirVampire extends CardImpl {
public SengirVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SensationGorger.java b/Mage.Sets/src/mage/cards/s/SensationGorger.java
index 27badf94edc..687c520d089 100644
--- a/Mage.Sets/src/mage/cards/s/SensationGorger.java
+++ b/Mage.Sets/src/mage/cards/s/SensationGorger.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SensationGorger extends CardImpl {
+public final class SensationGorger extends CardImpl {
public SensationGorger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SenseiGoldenTail.java b/Mage.Sets/src/mage/cards/s/SenseiGoldenTail.java
index 8dc162790f1..32b32b7b947 100644
--- a/Mage.Sets/src/mage/cards/s/SenseiGoldenTail.java
+++ b/Mage.Sets/src/mage/cards/s/SenseiGoldenTail.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class SenseiGoldenTail extends CardImpl {
+public final class SenseiGoldenTail extends CardImpl {
public SenseiGoldenTail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SenseisDiviningTop.java b/Mage.Sets/src/mage/cards/s/SenseisDiviningTop.java
index a2268ff246c..a7746af83bd 100644
--- a/Mage.Sets/src/mage/cards/s/SenseisDiviningTop.java
+++ b/Mage.Sets/src/mage/cards/s/SenseisDiviningTop.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
/**
* @author LevelX
*/
-public class SenseisDiviningTop extends CardImpl {
+public final class SenseisDiviningTop extends CardImpl {
public SenseisDiviningTop(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SenselessRage.java b/Mage.Sets/src/mage/cards/s/SenselessRage.java
index 752de1dc160..95b0ae1b0b9 100644
--- a/Mage.Sets/src/mage/cards/s/SenselessRage.java
+++ b/Mage.Sets/src/mage/cards/s/SenselessRage.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SenselessRage extends CardImpl {
+public final class SenselessRage extends CardImpl {
public SenselessRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SensorSplicer.java b/Mage.Sets/src/mage/cards/s/SensorSplicer.java
index b3195ed6c11..a6f93af5b99 100644
--- a/Mage.Sets/src/mage/cards/s/SensorSplicer.java
+++ b/Mage.Sets/src/mage/cards/s/SensorSplicer.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.GolemToken;
*
* @author North
*/
-public class SensorSplicer extends CardImpl {
+public final class SensorSplicer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Golem creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SensoryDeprivation.java b/Mage.Sets/src/mage/cards/s/SensoryDeprivation.java
index 490d6ec6874..04111c04a25 100644
--- a/Mage.Sets/src/mage/cards/s/SensoryDeprivation.java
+++ b/Mage.Sets/src/mage/cards/s/SensoryDeprivation.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SensoryDeprivation extends CardImpl {
+public final class SensoryDeprivation extends CardImpl {
public SensoryDeprivation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Sentinel.java b/Mage.Sets/src/mage/cards/s/Sentinel.java
index c3c630145d5..14f48cf4f57 100644
--- a/Mage.Sets/src/mage/cards/s/Sentinel.java
+++ b/Mage.Sets/src/mage/cards/s/Sentinel.java
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class Sentinel extends CardImpl {
+public final class Sentinel extends CardImpl {
public Sentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SentinelOfTheEternalWatch.java b/Mage.Sets/src/mage/cards/s/SentinelOfTheEternalWatch.java
index 4f134c41e12..07b7c4b7a45 100644
--- a/Mage.Sets/src/mage/cards/s/SentinelOfTheEternalWatch.java
+++ b/Mage.Sets/src/mage/cards/s/SentinelOfTheEternalWatch.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FirstTargetPointer;
*
* @author LevelX2
*/
-public class SentinelOfTheEternalWatch extends CardImpl {
+public final class SentinelOfTheEternalWatch extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java b/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java
index f66ec5c0f43..16c17341616 100644
--- a/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java
+++ b/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class SentinelOfThePearlTrident extends CardImpl {
+public final class SentinelOfThePearlTrident extends CardImpl {
private final static FilterControlledPermanent filter = new FilterControlledPermanent("historic permanent you control");
diff --git a/Mage.Sets/src/mage/cards/s/SentinelSliver.java b/Mage.Sets/src/mage/cards/s/SentinelSliver.java
index 6a09beeb9f7..8e81f30c313 100644
--- a/Mage.Sets/src/mage/cards/s/SentinelSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SentinelSliver.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Plopman
*/
-public class SentinelSliver extends CardImpl {
+public final class SentinelSliver extends CardImpl {
public SentinelSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SentinelSpider.java b/Mage.Sets/src/mage/cards/s/SentinelSpider.java
index ca2e522ec0f..53befa5884e 100644
--- a/Mage.Sets/src/mage/cards/s/SentinelSpider.java
+++ b/Mage.Sets/src/mage/cards/s/SentinelSpider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SentinelSpider extends CardImpl {
+public final class SentinelSpider extends CardImpl {
public SentinelSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SentinelTotem.java b/Mage.Sets/src/mage/cards/s/SentinelTotem.java
index 81499265ba9..dd435d899bd 100644
--- a/Mage.Sets/src/mage/cards/s/SentinelTotem.java
+++ b/Mage.Sets/src/mage/cards/s/SentinelTotem.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class SentinelTotem extends CardImpl {
+public final class SentinelTotem extends CardImpl {
public SentinelTotem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SentinelTower.java b/Mage.Sets/src/mage/cards/s/SentinelTower.java
new file mode 100644
index 00000000000..d4ec30aa3a9
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/SentinelTower.java
@@ -0,0 +1,163 @@
+/*
+ * 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.ArrayList;
+import java.util.List;
+import java.util.UUID;
+import mage.MageObject;
+import mage.MageObjectReference;
+import mage.abilities.common.SpellCastAllTriggeredAbility;
+import mage.abilities.dynamicvalue.common.StaticValue;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.WatcherScope;
+import mage.filter.StaticFilters;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.target.common.TargetAnyTarget;
+import mage.watchers.Watcher;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class SentinelTower extends CardImpl {
+
+ public SentinelTower(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
+
+ // Whenever an instant or sorcery spell is cast during your turn, Sentinel Tower deals damage to any target equal to 1 plus the number of instant and sorcery spells cast before that spell this turn.
+ this.addAbility(new SentinelTowerTriggeredAbility(), new SentinelTowerWatcher());
+ }
+
+ public SentinelTower(final SentinelTower card) {
+ super(card);
+ }
+
+ @Override
+ public SentinelTower copy() {
+ return new SentinelTower(this);
+ }
+}
+
+class SentinelTowerTriggeredAbility extends SpellCastAllTriggeredAbility {
+
+ SentinelTowerTriggeredAbility() {
+ super(new DamageTargetEffect(0), StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL, false);
+ this.addTarget(new TargetAnyTarget());
+ }
+
+ SentinelTowerTriggeredAbility(final SentinelTowerTriggeredAbility effect) {
+ super(effect);
+ }
+
+ @Override
+ public SentinelTowerTriggeredAbility copy() {
+ return new SentinelTowerTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ if (game.getActivePlayerId().equals(getControllerId())
+ && super.checkTrigger(event, game)) {
+ SentinelTowerWatcher watcher = (SentinelTowerWatcher) game.getState().getWatchers().get(SentinelTowerWatcher.class.getSimpleName());
+ if (watcher == null) {
+ return false;
+ }
+ List spellsCast = watcher.getSpellsThisTurn();
+ MageObject object = game.getObject(event.getTargetId());
+ if (object == null || spellsCast == null) {
+ return false;
+ }
+ int damageToDeal = 0;
+ for (MageObjectReference mor : spellsCast) {
+ damageToDeal++;
+ if (mor.refersTo(object, game)) {
+ break;
+ }
+ }
+ for (Effect effect : this.getEffects()) {
+ if (effect instanceof DamageTargetEffect) {
+ ((DamageTargetEffect) effect).setAmount(new StaticValue(damageToDeal));
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever an instant or sorcery spell is cast during your turn, "
+ + "{this} deals damage to any target equal to 1 "
+ + "plus the number of instant and sorcery spells cast before that spell this turn.";
+ }
+}
+
+class SentinelTowerWatcher extends Watcher {
+
+ private final List spellsThisTurn;
+
+ SentinelTowerWatcher() {
+ super(SentinelTowerWatcher.class.getSimpleName(), WatcherScope.GAME);
+ this.spellsThisTurn = new ArrayList<>();
+ }
+
+ SentinelTowerWatcher(final SentinelTowerWatcher effect) {
+ super(effect);
+ this.spellsThisTurn = effect.spellsThisTurn;
+ }
+
+ @Override
+ public SentinelTowerWatcher copy() {
+ return new SentinelTowerWatcher(this);
+ }
+
+ @Override
+ public void watch(GameEvent event, Game game) {
+ if (event.getType() == GameEvent.EventType.SPELL_CAST) {
+ MageObject object = game.getObject(event.getTargetId());
+ if (object != null && (object.isInstant() || object.isSorcery())) {
+ spellsThisTurn.add(new MageObjectReference(object, game));
+ }
+ }
+ }
+
+ @Override
+ public void reset() {
+ spellsThisTurn.clear();
+ }
+
+ public List getSpellsThisTurn() {
+ return spellsThisTurn;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/SentinelsOfGlenElendra.java b/Mage.Sets/src/mage/cards/s/SentinelsOfGlenElendra.java
index dcb58fc84c5..5ad4c88ada2 100644
--- a/Mage.Sets/src/mage/cards/s/SentinelsOfGlenElendra.java
+++ b/Mage.Sets/src/mage/cards/s/SentinelsOfGlenElendra.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SentinelsOfGlenElendra extends CardImpl {
+public final class SentinelsOfGlenElendra extends CardImpl {
public SentinelsOfGlenElendra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SentryOak.java b/Mage.Sets/src/mage/cards/s/SentryOak.java
index 435f501c1ca..a05ae5c81e1 100644
--- a/Mage.Sets/src/mage/cards/s/SentryOak.java
+++ b/Mage.Sets/src/mage/cards/s/SentryOak.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author Styxo
*/
-public class SentryOak extends CardImpl {
+public final class SentryOak extends CardImpl {
public SentryOak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SentryOfTheUnderworld.java b/Mage.Sets/src/mage/cards/s/SentryOfTheUnderworld.java
index 097932d9473..e971343fd62 100644
--- a/Mage.Sets/src/mage/cards/s/SentryOfTheUnderworld.java
+++ b/Mage.Sets/src/mage/cards/s/SentryOfTheUnderworld.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SentryOfTheUnderworld extends CardImpl {
+public final class SentryOfTheUnderworld extends CardImpl {
public SentryOfTheUnderworld(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SeparatistVoidmage.java b/Mage.Sets/src/mage/cards/s/SeparatistVoidmage.java
index 9f8c823ddd8..fb80f37f3fc 100644
--- a/Mage.Sets/src/mage/cards/s/SeparatistVoidmage.java
+++ b/Mage.Sets/src/mage/cards/s/SeparatistVoidmage.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SeparatistVoidmage extends CardImpl {
+public final class SeparatistVoidmage extends CardImpl {
public SeparatistVoidmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SepticRats.java b/Mage.Sets/src/mage/cards/s/SepticRats.java
index 25ae2f200c2..6df32440333 100644
--- a/Mage.Sets/src/mage/cards/s/SepticRats.java
+++ b/Mage.Sets/src/mage/cards/s/SepticRats.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class SepticRats extends CardImpl {
+public final class SepticRats extends CardImpl {
public SepticRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SepulchralPrimordial.java b/Mage.Sets/src/mage/cards/s/SepulchralPrimordial.java
index 3a1c2445f76..497a77ee0c6 100644
--- a/Mage.Sets/src/mage/cards/s/SepulchralPrimordial.java
+++ b/Mage.Sets/src/mage/cards/s/SepulchralPrimordial.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
*
* @author LevelX2
*/
-public class SepulchralPrimordial extends CardImpl {
+public final class SepulchralPrimordial extends CardImpl {
public SepulchralPrimordial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SequesteredStash.java b/Mage.Sets/src/mage/cards/s/SequesteredStash.java
index 40fd2c1c0b8..55a2264c670 100644
--- a/Mage.Sets/src/mage/cards/s/SequesteredStash.java
+++ b/Mage.Sets/src/mage/cards/s/SequesteredStash.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class SequesteredStash extends CardImpl {
+public final class SequesteredStash extends CardImpl {
public SequesteredStash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SeraphOfDawn.java b/Mage.Sets/src/mage/cards/s/SeraphOfDawn.java
index 2586992a9d7..03dea1cd0be 100644
--- a/Mage.Sets/src/mage/cards/s/SeraphOfDawn.java
+++ b/Mage.Sets/src/mage/cards/s/SeraphOfDawn.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SeraphOfDawn extends CardImpl {
+public final class SeraphOfDawn extends CardImpl {
public SeraphOfDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SeraphOfTheMasses.java b/Mage.Sets/src/mage/cards/s/SeraphOfTheMasses.java
index e0d12a95868..cacc2227e7b 100644
--- a/Mage.Sets/src/mage/cards/s/SeraphOfTheMasses.java
+++ b/Mage.Sets/src/mage/cards/s/SeraphOfTheMasses.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class SeraphOfTheMasses extends CardImpl {
+public final class SeraphOfTheMasses extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/SeraphOfTheSuns.java b/Mage.Sets/src/mage/cards/s/SeraphOfTheSuns.java
index 24d3f01e85c..cfb5abd9ec9 100644
--- a/Mage.Sets/src/mage/cards/s/SeraphOfTheSuns.java
+++ b/Mage.Sets/src/mage/cards/s/SeraphOfTheSuns.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SeraphOfTheSuns extends CardImpl {
+public final class SeraphOfTheSuns extends CardImpl {
public SeraphOfTheSuns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SeraphOfTheSword.java b/Mage.Sets/src/mage/cards/s/SeraphOfTheSword.java
index 127458b4575..a1718f718bb 100644
--- a/Mage.Sets/src/mage/cards/s/SeraphOfTheSword.java
+++ b/Mage.Sets/src/mage/cards/s/SeraphOfTheSword.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class SeraphOfTheSword extends CardImpl {
+public final class SeraphOfTheSword extends CardImpl {
public SeraphOfTheSword(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SeraphSanctuary.java b/Mage.Sets/src/mage/cards/s/SeraphSanctuary.java
index d6f59416166..5474e01f209 100644
--- a/Mage.Sets/src/mage/cards/s/SeraphSanctuary.java
+++ b/Mage.Sets/src/mage/cards/s/SeraphSanctuary.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class SeraphSanctuary extends CardImpl {
+public final class SeraphSanctuary extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("an Angel");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SerendibDjinn.java b/Mage.Sets/src/mage/cards/s/SerendibDjinn.java
index 71ce1b01663..9707c2f0332 100644
--- a/Mage.Sets/src/mage/cards/s/SerendibDjinn.java
+++ b/Mage.Sets/src/mage/cards/s/SerendibDjinn.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author MarcoMarin
*/
-public class SerendibDjinn extends CardImpl {
+public final class SerendibDjinn extends CardImpl {
public SerendibDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SerendibEfreet.java b/Mage.Sets/src/mage/cards/s/SerendibEfreet.java
index 6e5e03d4a86..4431d9336f0 100644
--- a/Mage.Sets/src/mage/cards/s/SerendibEfreet.java
+++ b/Mage.Sets/src/mage/cards/s/SerendibEfreet.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class SerendibEfreet extends CardImpl {
+public final class SerendibEfreet extends CardImpl {
public SerendibEfreet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SerendibSorcerer.java b/Mage.Sets/src/mage/cards/s/SerendibSorcerer.java
index 36a2d060445..df8af98287f 100644
--- a/Mage.Sets/src/mage/cards/s/SerendibSorcerer.java
+++ b/Mage.Sets/src/mage/cards/s/SerendibSorcerer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SerendibSorcerer extends CardImpl {
+public final class SerendibSorcerer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature other than {this}");
diff --git a/Mage.Sets/src/mage/cards/s/SereneHeart.java b/Mage.Sets/src/mage/cards/s/SereneHeart.java
index 5a9e8a3bdff..8823bd53430 100644
--- a/Mage.Sets/src/mage/cards/s/SereneHeart.java
+++ b/Mage.Sets/src/mage/cards/s/SereneHeart.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class SereneHeart extends CardImpl {
+public final class SereneHeart extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Auras");
diff --git a/Mage.Sets/src/mage/cards/s/SereneMaster.java b/Mage.Sets/src/mage/cards/s/SereneMaster.java
index 1f0703c4293..83570be204e 100644
--- a/Mage.Sets/src/mage/cards/s/SereneMaster.java
+++ b/Mage.Sets/src/mage/cards/s/SereneMaster.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SereneMaster extends CardImpl {
+public final class SereneMaster extends CardImpl {
public SereneMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SereneOffering.java b/Mage.Sets/src/mage/cards/s/SereneOffering.java
index 484be2e3eb8..27574f291a7 100644
--- a/Mage.Sets/src/mage/cards/s/SereneOffering.java
+++ b/Mage.Sets/src/mage/cards/s/SereneOffering.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LoneFox
*/
-public class SereneOffering extends CardImpl {
+public final class SereneOffering extends CardImpl {
public SereneOffering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SereneRemembrance.java b/Mage.Sets/src/mage/cards/s/SereneRemembrance.java
index 4db9f13864c..b6f8abd14b2 100644
--- a/Mage.Sets/src/mage/cards/s/SereneRemembrance.java
+++ b/Mage.Sets/src/mage/cards/s/SereneRemembrance.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author LevelX2
*/
-public class SereneRemembrance extends CardImpl {
+public final class SereneRemembrance extends CardImpl {
public SereneRemembrance (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SereneSteward.java b/Mage.Sets/src/mage/cards/s/SereneSteward.java
index 6bd3f419a44..eb4504027c6 100644
--- a/Mage.Sets/src/mage/cards/s/SereneSteward.java
+++ b/Mage.Sets/src/mage/cards/s/SereneSteward.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SereneSteward extends CardImpl {
+public final class SereneSteward extends CardImpl {
public SereneSteward(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Serenity.java b/Mage.Sets/src/mage/cards/s/Serenity.java
index 676c520c0b4..f438cd19b73 100644
--- a/Mage.Sets/src/mage/cards/s/Serenity.java
+++ b/Mage.Sets/src/mage/cards/s/Serenity.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Quercitron
*/
-public class Serenity extends CardImpl {
+public final class Serenity extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts and enchantments");
diff --git a/Mage.Sets/src/mage/cards/s/SergeantAtArms.java b/Mage.Sets/src/mage/cards/s/SergeantAtArms.java
index d2247fa034f..aee43345271 100644
--- a/Mage.Sets/src/mage/cards/s/SergeantAtArms.java
+++ b/Mage.Sets/src/mage/cards/s/SergeantAtArms.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author TheElk801
*/
-public class SergeantAtArms extends CardImpl {
+public final class SergeantAtArms extends CardImpl {
public SergeantAtArms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SerpentAssassin.java b/Mage.Sets/src/mage/cards/s/SerpentAssassin.java
index 7b7db8a71f9..06284140e47 100644
--- a/Mage.Sets/src/mage/cards/s/SerpentAssassin.java
+++ b/Mage.Sets/src/mage/cards/s/SerpentAssassin.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SerpentAssassin extends CardImpl {
+public final class SerpentAssassin extends CardImpl {
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/SerpentGenerator.java b/Mage.Sets/src/mage/cards/s/SerpentGenerator.java
index fa26198e325..f4242a26779 100644
--- a/Mage.Sets/src/mage/cards/s/SerpentGenerator.java
+++ b/Mage.Sets/src/mage/cards/s/SerpentGenerator.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SerpentGeneratorSnakeToken;
*
* @author LoneFox
*/
-public class SerpentGenerator extends CardImpl {
+public final class SerpentGenerator extends CardImpl {
public SerpentGenerator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/s/SerpentOfTheEndlessSea.java b/Mage.Sets/src/mage/cards/s/SerpentOfTheEndlessSea.java
index 12df31d18ca..9ff1f5a8151 100644
--- a/Mage.Sets/src/mage/cards/s/SerpentOfTheEndlessSea.java
+++ b/Mage.Sets/src/mage/cards/s/SerpentOfTheEndlessSea.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class SerpentOfTheEndlessSea extends CardImpl {
+public final class SerpentOfTheEndlessSea extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Islands you control");
diff --git a/Mage.Sets/src/mage/cards/s/SerpentSkin.java b/Mage.Sets/src/mage/cards/s/SerpentSkin.java
index e9a23af125f..a488ae204e7 100644
--- a/Mage.Sets/src/mage/cards/s/SerpentSkin.java
+++ b/Mage.Sets/src/mage/cards/s/SerpentSkin.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SerpentSkin extends CardImpl {
+public final class SerpentSkin extends CardImpl {
public SerpentSkin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SerpentWarrior.java b/Mage.Sets/src/mage/cards/s/SerpentWarrior.java
index ef64a525538..38226c49ef0 100644
--- a/Mage.Sets/src/mage/cards/s/SerpentWarrior.java
+++ b/Mage.Sets/src/mage/cards/s/SerpentWarrior.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SerpentWarrior extends CardImpl {
+public final class SerpentWarrior extends CardImpl {
public SerpentWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SerpentineBasilisk.java b/Mage.Sets/src/mage/cards/s/SerpentineBasilisk.java
index 9449d78353d..487c9de4ce1 100644
--- a/Mage.Sets/src/mage/cards/s/SerpentineBasilisk.java
+++ b/Mage.Sets/src/mage/cards/s/SerpentineBasilisk.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author Wehk
*/
-public class SerpentineBasilisk extends CardImpl {
+public final class SerpentineBasilisk extends CardImpl {
public SerpentineBasilisk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SerpentineKavu.java b/Mage.Sets/src/mage/cards/s/SerpentineKavu.java
index a260dd44c1f..274dcc557e6 100644
--- a/Mage.Sets/src/mage/cards/s/SerpentineKavu.java
+++ b/Mage.Sets/src/mage/cards/s/SerpentineKavu.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class SerpentineKavu extends CardImpl {
+public final class SerpentineKavu extends CardImpl {
public SerpentineKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SerpentineSpike.java b/Mage.Sets/src/mage/cards/s/SerpentineSpike.java
index 9351038614a..4c08ec08314 100644
--- a/Mage.Sets/src/mage/cards/s/SerpentineSpike.java
+++ b/Mage.Sets/src/mage/cards/s/SerpentineSpike.java
@@ -49,7 +49,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author LevelX2
*/
-public class SerpentineSpike extends CardImpl {
+public final class SerpentineSpike extends CardImpl {
public SerpentineSpike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SerpentsGift.java b/Mage.Sets/src/mage/cards/s/SerpentsGift.java
index 6cc3b043d8c..4aad9280f2e 100644
--- a/Mage.Sets/src/mage/cards/s/SerpentsGift.java
+++ b/Mage.Sets/src/mage/cards/s/SerpentsGift.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SerpentsGift extends CardImpl {
+public final class SerpentsGift extends CardImpl {
public SerpentsGift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SerraAdvocate.java b/Mage.Sets/src/mage/cards/s/SerraAdvocate.java
index e54682c119d..5347ce8fc5d 100644
--- a/Mage.Sets/src/mage/cards/s/SerraAdvocate.java
+++ b/Mage.Sets/src/mage/cards/s/SerraAdvocate.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author daagar
*/
-public class SerraAdvocate extends CardImpl {
+public final class SerraAdvocate extends CardImpl {
public SerraAdvocate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SerraAngel.java b/Mage.Sets/src/mage/cards/s/SerraAngel.java
index 2fe100552e1..a631b2d9ea1 100644
--- a/Mage.Sets/src/mage/cards/s/SerraAngel.java
+++ b/Mage.Sets/src/mage/cards/s/SerraAngel.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SerraAngel extends CardImpl {
+public final class SerraAngel extends CardImpl {
public SerraAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SerraAscendant.java b/Mage.Sets/src/mage/cards/s/SerraAscendant.java
index b10b28ee003..88dd778e224 100644
--- a/Mage.Sets/src/mage/cards/s/SerraAscendant.java
+++ b/Mage.Sets/src/mage/cards/s/SerraAscendant.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SerraAscendant extends CardImpl {
+public final class SerraAscendant extends CardImpl {
public SerraAscendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SerraAvatar.java b/Mage.Sets/src/mage/cards/s/SerraAvatar.java
index d10aace9731..5ec7660f79b 100644
--- a/Mage.Sets/src/mage/cards/s/SerraAvatar.java
+++ b/Mage.Sets/src/mage/cards/s/SerraAvatar.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SerraAvatar extends CardImpl {
+public final class SerraAvatar extends CardImpl {
public SerraAvatar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SerraAvenger.java b/Mage.Sets/src/mage/cards/s/SerraAvenger.java
index ad4dfdef002..40f1b119a21 100644
--- a/Mage.Sets/src/mage/cards/s/SerraAvenger.java
+++ b/Mage.Sets/src/mage/cards/s/SerraAvenger.java
@@ -50,7 +50,7 @@ import mage.players.Player;
/**
* @author noxx
*/
-public class SerraAvenger extends CardImpl {
+public final class SerraAvenger extends CardImpl {
public SerraAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SerraAviary.java b/Mage.Sets/src/mage/cards/s/SerraAviary.java
index a240f39e938..0be9cc0ee2c 100644
--- a/Mage.Sets/src/mage/cards/s/SerraAviary.java
+++ b/Mage.Sets/src/mage/cards/s/SerraAviary.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author ilcartographer
*/
-public class SerraAviary extends CardImpl {
+public final class SerraAviary extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/s/SerraBestiary.java b/Mage.Sets/src/mage/cards/s/SerraBestiary.java
index 71295623265..be64902017a 100644
--- a/Mage.Sets/src/mage/cards/s/SerraBestiary.java
+++ b/Mage.Sets/src/mage/cards/s/SerraBestiary.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J (based on jeffwadsworth)
*/
-public class SerraBestiary extends CardImpl {
+public final class SerraBestiary extends CardImpl {
public SerraBestiary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}{W}");
@@ -121,18 +121,22 @@ class SerraBestiaryRuleModifyingEffect extends ContinuousRuleModifyingEffectImpl
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
Permanent enchantment = game.getPermanentOrLKIBattlefield(source.getSourceId());
+ if (enchantment == null) {
+ return false;
+ }
Permanent enchantedCreature = game.getPermanent(enchantment.getAttachedTo());
- if (enchantment != null && enchantment.getAttachedTo() != null) {
- MageObject object = game.getObject(event.getSourceId());
- Optional ability = game.getAbility(event.getTargetId(), event.getSourceId());
- if (ability.isPresent()
- && object != null
- && object.isCreature()
- && object.getId().equals(enchantedCreature.getId())
- && game.getState().getPlayersInRange(source.getControllerId(), game).contains(event.getPlayerId())) {
- if (ability.get().getCosts().stream().anyMatch((cost) -> (cost instanceof TapSourceCost))) {
- return true;
- }
+ if (enchantedCreature == null) {
+ return false;
+ }
+ MageObject object = game.getObject(event.getSourceId());
+ Optional ability = game.getAbility(event.getTargetId(), event.getSourceId());
+ if (ability.isPresent()
+ && object != null
+ && object.isCreature()
+ && object.getId().equals(enchantedCreature.getId())
+ && game.getState().getPlayersInRange(source.getControllerId(), game).contains(event.getPlayerId())) {
+ if (ability.get().getCosts().stream().anyMatch((cost) -> (cost instanceof TapSourceCost))) {
+ return true;
}
}
return false;
diff --git a/Mage.Sets/src/mage/cards/s/SerraDisciple.java b/Mage.Sets/src/mage/cards/s/SerraDisciple.java
index e073a569320..4e2bc968a1b 100644
--- a/Mage.Sets/src/mage/cards/s/SerraDisciple.java
+++ b/Mage.Sets/src/mage/cards/s/SerraDisciple.java
@@ -14,7 +14,7 @@ import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.common.FilterHistoricSpell;
-public class SerraDisciple extends CardImpl {
+public final class SerraDisciple extends CardImpl {
public SerraDisciple(UUID ownerId, CardSetInfo cardSetInfo) {
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SerraPaladin.java b/Mage.Sets/src/mage/cards/s/SerraPaladin.java
index 7d368057428..dd27aabab93 100644
--- a/Mage.Sets/src/mage/cards/s/SerraPaladin.java
+++ b/Mage.Sets/src/mage/cards/s/SerraPaladin.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class SerraPaladin extends CardImpl {
+public final class SerraPaladin extends CardImpl {
public SerraPaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SerraSphinx.java b/Mage.Sets/src/mage/cards/s/SerraSphinx.java
index e2914862f3d..0cfc1487bce 100644
--- a/Mage.Sets/src/mage/cards/s/SerraSphinx.java
+++ b/Mage.Sets/src/mage/cards/s/SerraSphinx.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SerraSphinx extends CardImpl {
+public final class SerraSphinx extends CardImpl {
public SerraSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SerraZealot.java b/Mage.Sets/src/mage/cards/s/SerraZealot.java
index 007be89f5e0..26e6d42ba3e 100644
--- a/Mage.Sets/src/mage/cards/s/SerraZealot.java
+++ b/Mage.Sets/src/mage/cards/s/SerraZealot.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SerraZealot extends CardImpl {
+public final class SerraZealot extends CardImpl {
public SerraZealot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SerrasBlessing.java b/Mage.Sets/src/mage/cards/s/SerrasBlessing.java
index 13f3d05e1c4..3d1d7acd6a9 100644
--- a/Mage.Sets/src/mage/cards/s/SerrasBlessing.java
+++ b/Mage.Sets/src/mage/cards/s/SerrasBlessing.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Quercitron
*/
-public class SerrasBlessing extends CardImpl {
+public final class SerrasBlessing extends CardImpl {
public SerrasBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SerrasBoon.java b/Mage.Sets/src/mage/cards/s/SerrasBoon.java
index e8a9554e314..f8afd3cb184 100644
--- a/Mage.Sets/src/mage/cards/s/SerrasBoon.java
+++ b/Mage.Sets/src/mage/cards/s/SerrasBoon.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author daagar
*/
-public class SerrasBoon extends CardImpl {
+public final class SerrasBoon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SerrasEmbrace.java b/Mage.Sets/src/mage/cards/s/SerrasEmbrace.java
index a2a35bc1d0a..520e837ff20 100644
--- a/Mage.Sets/src/mage/cards/s/SerrasEmbrace.java
+++ b/Mage.Sets/src/mage/cards/s/SerrasEmbrace.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SerrasEmbrace extends CardImpl {
+public final class SerrasEmbrace extends CardImpl {
public SerrasEmbrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SerrasLiturgy.java b/Mage.Sets/src/mage/cards/s/SerrasLiturgy.java
index a0695c7017c..2324ff9479b 100644
--- a/Mage.Sets/src/mage/cards/s/SerrasLiturgy.java
+++ b/Mage.Sets/src/mage/cards/s/SerrasLiturgy.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class SerrasLiturgy extends CardImpl {
+public final class SerrasLiturgy extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("up to X target artifacts and/or enchantments, where X is the number of verse counters on {this}");
diff --git a/Mage.Sets/src/mage/cards/s/SerrasSanctum.java b/Mage.Sets/src/mage/cards/s/SerrasSanctum.java
index 650d3ecfda7..d24afdba562 100644
--- a/Mage.Sets/src/mage/cards/s/SerrasSanctum.java
+++ b/Mage.Sets/src/mage/cards/s/SerrasSanctum.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
* @author Backfir3
*/
-public class SerrasSanctum extends CardImpl {
+public final class SerrasSanctum extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("enchantment you control");
diff --git a/Mage.Sets/src/mage/cards/s/SerratedArrows.java b/Mage.Sets/src/mage/cards/s/SerratedArrows.java
index 50ad109f523..15dc6b9663e 100644
--- a/Mage.Sets/src/mage/cards/s/SerratedArrows.java
+++ b/Mage.Sets/src/mage/cards/s/SerratedArrows.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SerratedArrows extends CardImpl {
+public final class SerratedArrows extends CardImpl {
public SerratedArrows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SerratedBiskelion.java b/Mage.Sets/src/mage/cards/s/SerratedBiskelion.java
index 8d396e0d8ca..7f8dce08e1d 100644
--- a/Mage.Sets/src/mage/cards/s/SerratedBiskelion.java
+++ b/Mage.Sets/src/mage/cards/s/SerratedBiskelion.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SerratedBiskelion extends CardImpl {
+public final class SerratedBiskelion extends CardImpl {
public SerratedBiskelion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SerumPowder.java b/Mage.Sets/src/mage/cards/s/SerumPowder.java
index f4bee6508ac..13f62a385d1 100644
--- a/Mage.Sets/src/mage/cards/s/SerumPowder.java
+++ b/Mage.Sets/src/mage/cards/s/SerumPowder.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SerumPowder extends CardImpl {
+public final class SerumPowder extends CardImpl {
public SerumPowder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SerumRaker.java b/Mage.Sets/src/mage/cards/s/SerumRaker.java
index 83f3303a1ca..b3d557eb0c8 100644
--- a/Mage.Sets/src/mage/cards/s/SerumRaker.java
+++ b/Mage.Sets/src/mage/cards/s/SerumRaker.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SerumRaker extends CardImpl {
+public final class SerumRaker extends CardImpl {
public SerumRaker (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SerumTank.java b/Mage.Sets/src/mage/cards/s/SerumTank.java
index 5ac02704e51..3d97c08d449 100644
--- a/Mage.Sets/src/mage/cards/s/SerumTank.java
+++ b/Mage.Sets/src/mage/cards/s/SerumTank.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author CountAndromalius
*/
-public class SerumTank extends CardImpl {
+public final class SerumTank extends CardImpl {
public SerumTank(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SerumVisions.java b/Mage.Sets/src/mage/cards/s/SerumVisions.java
index bd83aa97e4a..6d0ec505748 100644
--- a/Mage.Sets/src/mage/cards/s/SerumVisions.java
+++ b/Mage.Sets/src/mage/cards/s/SerumVisions.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class SerumVisions extends CardImpl {
+public final class SerumVisions extends CardImpl {
public SerumVisions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ServantOfNefarox.java b/Mage.Sets/src/mage/cards/s/ServantOfNefarox.java
index fa2072dbc3f..bccc6b22a3b 100644
--- a/Mage.Sets/src/mage/cards/s/ServantOfNefarox.java
+++ b/Mage.Sets/src/mage/cards/s/ServantOfNefarox.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ServantOfNefarox extends CardImpl {
+public final class ServantOfNefarox extends CardImpl {
public ServantOfNefarox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ServantOfTheConduit.java b/Mage.Sets/src/mage/cards/s/ServantOfTheConduit.java
index 656a8df3ef8..f86ca7477e4 100644
--- a/Mage.Sets/src/mage/cards/s/ServantOfTheConduit.java
+++ b/Mage.Sets/src/mage/cards/s/ServantOfTheConduit.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ServantOfTheConduit extends CardImpl {
+public final class ServantOfTheConduit extends CardImpl {
public ServantOfTheConduit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ServantOfTheScale.java b/Mage.Sets/src/mage/cards/s/ServantOfTheScale.java
index f8e235f3db8..a09fedfc13e 100644
--- a/Mage.Sets/src/mage/cards/s/ServantOfTheScale.java
+++ b/Mage.Sets/src/mage/cards/s/ServantOfTheScale.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ServantOfTheScale extends CardImpl {
+public final class ServantOfTheScale extends CardImpl {
public ServantOfTheScale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ServantOfTymaret.java b/Mage.Sets/src/mage/cards/s/ServantOfTymaret.java
index 91d702d8957..c7e2386aad3 100644
--- a/Mage.Sets/src/mage/cards/s/ServantOfTymaret.java
+++ b/Mage.Sets/src/mage/cards/s/ServantOfTymaret.java
@@ -47,7 +47,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class ServantOfTymaret extends CardImpl {
+public final class ServantOfTymaret extends CardImpl {
public ServantOfTymaret(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ServantOfVolrath.java b/Mage.Sets/src/mage/cards/s/ServantOfVolrath.java
index 23ce192a8dc..12cafc03545 100644
--- a/Mage.Sets/src/mage/cards/s/ServantOfVolrath.java
+++ b/Mage.Sets/src/mage/cards/s/ServantOfVolrath.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class ServantOfVolrath extends CardImpl {
+public final class ServantOfVolrath extends CardImpl {
public ServantOfVolrath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ServoExhibition.java b/Mage.Sets/src/mage/cards/s/ServoExhibition.java
index d0f9ffdc35b..e722056aff5 100644
--- a/Mage.Sets/src/mage/cards/s/ServoExhibition.java
+++ b/Mage.Sets/src/mage/cards/s/ServoExhibition.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.ServoToken;
*
* @author LevelX2
*/
-public class ServoExhibition extends CardImpl {
+public final class ServoExhibition extends CardImpl {
public ServoExhibition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ServoSchematic.java b/Mage.Sets/src/mage/cards/s/ServoSchematic.java
index a32ed03c1c1..ee64a7a5677 100644
--- a/Mage.Sets/src/mage/cards/s/ServoSchematic.java
+++ b/Mage.Sets/src/mage/cards/s/ServoSchematic.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.ServoToken;
*
* @author fireshoes
*/
-public class ServoSchematic extends CardImpl {
+public final class ServoSchematic extends CardImpl {
public ServoSchematic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SeshiroTheAnointed.java b/Mage.Sets/src/mage/cards/s/SeshiroTheAnointed.java
index fb276041f72..90a1f9f5c58 100644
--- a/Mage.Sets/src/mage/cards/s/SeshiroTheAnointed.java
+++ b/Mage.Sets/src/mage/cards/s/SeshiroTheAnointed.java
@@ -49,7 +49,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class SeshiroTheAnointed extends CardImpl {
+public final class SeshiroTheAnointed extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Snake creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SetAdrift.java b/Mage.Sets/src/mage/cards/s/SetAdrift.java
index 0291b3aa315..9be3c443e84 100644
--- a/Mage.Sets/src/mage/cards/s/SetAdrift.java
+++ b/Mage.Sets/src/mage/cards/s/SetAdrift.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class SetAdrift extends CardImpl {
+public final class SetAdrift extends CardImpl {
public SetAdrift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SetessanBattlePriest.java b/Mage.Sets/src/mage/cards/s/SetessanBattlePriest.java
index 76512682edb..8adf3aeeb54 100644
--- a/Mage.Sets/src/mage/cards/s/SetessanBattlePriest.java
+++ b/Mage.Sets/src/mage/cards/s/SetessanBattlePriest.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SetessanBattlePriest extends CardImpl {
+public final class SetessanBattlePriest extends CardImpl {
public SetessanBattlePriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SetessanGriffin.java b/Mage.Sets/src/mage/cards/s/SetessanGriffin.java
index eed628c7add..536a78feba8 100644
--- a/Mage.Sets/src/mage/cards/s/SetessanGriffin.java
+++ b/Mage.Sets/src/mage/cards/s/SetessanGriffin.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SetessanGriffin extends CardImpl {
+public final class SetessanGriffin extends CardImpl {
public SetessanGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SetessanOathsworn.java b/Mage.Sets/src/mage/cards/s/SetessanOathsworn.java
index d07032378da..6ef52d55b23 100644
--- a/Mage.Sets/src/mage/cards/s/SetessanOathsworn.java
+++ b/Mage.Sets/src/mage/cards/s/SetessanOathsworn.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class SetessanOathsworn extends CardImpl {
+public final class SetessanOathsworn extends CardImpl {
public SetessanOathsworn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SetessanStarbreaker.java b/Mage.Sets/src/mage/cards/s/SetessanStarbreaker.java
index e6467bd735f..d86e780b5de 100644
--- a/Mage.Sets/src/mage/cards/s/SetessanStarbreaker.java
+++ b/Mage.Sets/src/mage/cards/s/SetessanStarbreaker.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class SetessanStarbreaker extends CardImpl {
+public final class SetessanStarbreaker extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Aura");
diff --git a/Mage.Sets/src/mage/cards/s/SetessanTactics.java b/Mage.Sets/src/mage/cards/s/SetessanTactics.java
index cee3c7f116d..01fe8e0fff0 100644
--- a/Mage.Sets/src/mage/cards/s/SetessanTactics.java
+++ b/Mage.Sets/src/mage/cards/s/SetessanTactics.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SetessanTactics extends CardImpl {
+public final class SetessanTactics extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature");
diff --git a/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java b/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java
index 282a227b5f4..e68357982d8 100644
--- a/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java
+++ b/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author cbt33
*/
-public class SetonKrosanProtector extends CardImpl {
+public final class SetonKrosanProtector extends CardImpl {
private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Druid you control");
diff --git a/Mage.Sets/src/mage/cards/s/SetonsDesire.java b/Mage.Sets/src/mage/cards/s/SetonsDesire.java
index 4e793037118..8c9545b7fdf 100644
--- a/Mage.Sets/src/mage/cards/s/SetonsDesire.java
+++ b/Mage.Sets/src/mage/cards/s/SetonsDesire.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SetonsDesire extends CardImpl {
+public final class SetonsDesire extends CardImpl {
public SetonsDesire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SetonsScout.java b/Mage.Sets/src/mage/cards/s/SetonsScout.java
index d71ace9c9c4..31602d582a8 100644
--- a/Mage.Sets/src/mage/cards/s/SetonsScout.java
+++ b/Mage.Sets/src/mage/cards/s/SetonsScout.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class SetonsScout extends CardImpl {
+public final class SetonsScout extends CardImpl {
public SetonsScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SettleTheScore.java b/Mage.Sets/src/mage/cards/s/SettleTheScore.java
index f5c383bf851..be9ebdf4428 100644
--- a/Mage.Sets/src/mage/cards/s/SettleTheScore.java
+++ b/Mage.Sets/src/mage/cards/s/SettleTheScore.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class SettleTheScore extends CardImpl {
+public final class SettleTheScore extends CardImpl {
public SettleTheScore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SettleTheWreckage.java b/Mage.Sets/src/mage/cards/s/SettleTheWreckage.java
index 11392ad722a..fa966a82b83 100644
--- a/Mage.Sets/src/mage/cards/s/SettleTheWreckage.java
+++ b/Mage.Sets/src/mage/cards/s/SettleTheWreckage.java
@@ -27,13 +27,16 @@
*/
package mage.cards.s;
+import java.util.HashSet;
import java.util.Iterator;
+import java.util.Set;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
+import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
@@ -48,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class SettleTheWreckage extends CardImpl {
+public final class SettleTheWreckage extends CardImpl {
public SettleTheWreckage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}{W}");
@@ -87,28 +90,27 @@ class SettleTheWreckageEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getFirstTarget());
- if (player != null) {
- int attackers = 0;
- Iterator creatureIds = game.getCombat().getAttackers().iterator();
- while (creatureIds.hasNext()) {
- Permanent creature = game.getPermanent(creatureIds.next());
- if (creature != null && creature.getControllerId().equals(player.getId())) {
- creature.moveToExile(null, null, source.getId(), game);
- attackers++;
- }
- }
- TargetCardInLibrary target = new TargetCardInLibrary(0, attackers, StaticFilters.FILTER_BASIC_LAND_CARD);
- if (player.chooseUse(Outcome.Benefit, "Search for up to " + attackers + " basic land" + ((attackers == 1) ? "" : "s") + "?", source, game) && player.searchLibrary(target, game)) {
- for (UUID cardId : target.getTargets()) {
- Card card = player.getLibrary().getCard(cardId, game);
- if (card != null) {
- card.putOntoBattlefield(game, Zone.LIBRARY, source.getSourceId(), player.getId(), true);
- }
- }
- player.shuffleLibrary(source, game);
- }
- return true;
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null || player == null) {
+ return false;
}
- return false;
+ int attackers = 0;
+ Set toExile = new HashSet<>();
+ Iterator creatureIds = game.getCombat().getAttackers().iterator();
+ while (creatureIds.hasNext()) {
+ Permanent creature = game.getPermanent(creatureIds.next());
+ if (creature != null && creature.getControllerId().equals(player.getId())) {
+ toExile.add(creature);
+ attackers++;
+ }
+ }
+ controller.moveCards(toExile, Zone.EXILED, source, game);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, attackers, StaticFilters.FILTER_CARD_BASIC_LAND);
+ if (player.chooseUse(Outcome.Benefit, "Search for up to " + attackers + " basic land" + ((attackers == 1) ? "" : "s") + "?", source, game) && player.searchLibrary(target, game)) {
+ player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null);
+ player.shuffleLibrary(source, game);
+ }
+ return true;
+
}
}
diff --git a/Mage.Sets/src/mage/cards/s/SeverSoul.java b/Mage.Sets/src/mage/cards/s/SeverSoul.java
index 33e18608f4a..1f56d828654 100644
--- a/Mage.Sets/src/mage/cards/s/SeverSoul.java
+++ b/Mage.Sets/src/mage/cards/s/SeverSoul.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author dustinconrad
*/
-public class SeverSoul extends CardImpl {
+public final class SeverSoul extends CardImpl {
private static final FilterCreaturePermanent nonBlackCreature = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/SeverTheBloodline.java b/Mage.Sets/src/mage/cards/s/SeverTheBloodline.java
index c5216ed7ea3..84dfb145535 100644
--- a/Mage.Sets/src/mage/cards/s/SeverTheBloodline.java
+++ b/Mage.Sets/src/mage/cards/s/SeverTheBloodline.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SeverTheBloodline extends CardImpl {
+public final class SeverTheBloodline extends CardImpl {
public SeverTheBloodline(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SeveredLegion.java b/Mage.Sets/src/mage/cards/s/SeveredLegion.java
index f43e0e32428..f0f8c7ff6dd 100644
--- a/Mage.Sets/src/mage/cards/s/SeveredLegion.java
+++ b/Mage.Sets/src/mage/cards/s/SeveredLegion.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SeveredLegion extends CardImpl {
+public final class SeveredLegion extends CardImpl {
public SeveredLegion (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SewerNemesis.java b/Mage.Sets/src/mage/cards/s/SewerNemesis.java
index 32419f7e97e..6d860f53768 100644
--- a/Mage.Sets/src/mage/cards/s/SewerNemesis.java
+++ b/Mage.Sets/src/mage/cards/s/SewerNemesis.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SewerNemesis extends CardImpl {
+public final class SewerNemesis extends CardImpl {
public SewerNemesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SewerRats.java b/Mage.Sets/src/mage/cards/s/SewerRats.java
index 4b8f9ba4201..c38c9e7d705 100644
--- a/Mage.Sets/src/mage/cards/s/SewerRats.java
+++ b/Mage.Sets/src/mage/cards/s/SewerRats.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class SewerRats extends CardImpl {
+public final class SewerRats extends CardImpl {
public SewerRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SewerShambler.java b/Mage.Sets/src/mage/cards/s/SewerShambler.java
index 95ab344881b..56d5235914f 100644
--- a/Mage.Sets/src/mage/cards/s/SewerShambler.java
+++ b/Mage.Sets/src/mage/cards/s/SewerShambler.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SewerShambler extends CardImpl {
+public final class SewerShambler extends CardImpl {
public SewerShambler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Sewerdreg.java b/Mage.Sets/src/mage/cards/s/Sewerdreg.java
index c03253d1926..5b4cde2cde8 100644
--- a/Mage.Sets/src/mage/cards/s/Sewerdreg.java
+++ b/Mage.Sets/src/mage/cards/s/Sewerdreg.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Wehk
*/
-public class Sewerdreg extends CardImpl {
+public final class Sewerdreg extends CardImpl {
public Sewerdreg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SewnEyeDrake.java b/Mage.Sets/src/mage/cards/s/SewnEyeDrake.java
index 958ced249f4..5a92c3864b6 100644
--- a/Mage.Sets/src/mage/cards/s/SewnEyeDrake.java
+++ b/Mage.Sets/src/mage/cards/s/SewnEyeDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SewnEyeDrake extends CardImpl {
+public final class SewnEyeDrake extends CardImpl {
public SewnEyeDrake (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U/R}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShaakHerd.java b/Mage.Sets/src/mage/cards/s/ShaakHerd.java
index e8305abf475..a87220137b9 100644
--- a/Mage.Sets/src/mage/cards/s/ShaakHerd.java
+++ b/Mage.Sets/src/mage/cards/s/ShaakHerd.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Styxo
*/
-public class ShaakHerd extends CardImpl {
+public final class ShaakHerd extends CardImpl {
private final static FilterCard filter = new FilterCard("another target creature card");
diff --git a/Mage.Sets/src/mage/cards/s/Shackles.java b/Mage.Sets/src/mage/cards/s/Shackles.java
index da091d4652e..04603ad1e0b 100644
--- a/Mage.Sets/src/mage/cards/s/Shackles.java
+++ b/Mage.Sets/src/mage/cards/s/Shackles.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*
*/
-public class Shackles extends CardImpl {
+public final class Shackles extends CardImpl {
public Shackles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadeOfTrokair.java b/Mage.Sets/src/mage/cards/s/ShadeOfTrokair.java
index 8479bc7e0a3..26dc1fa0eb9 100644
--- a/Mage.Sets/src/mage/cards/s/ShadeOfTrokair.java
+++ b/Mage.Sets/src/mage/cards/s/ShadeOfTrokair.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ShadeOfTrokair extends CardImpl {
+public final class ShadeOfTrokair extends CardImpl {
public ShadeOfTrokair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadesBreath.java b/Mage.Sets/src/mage/cards/s/ShadesBreath.java
index c3580f87f4d..76fbd0da266 100644
--- a/Mage.Sets/src/mage/cards/s/ShadesBreath.java
+++ b/Mage.Sets/src/mage/cards/s/ShadesBreath.java
@@ -54,7 +54,7 @@ import mage.util.SubTypeList;
*
* @author TheElk801
*/
-public class ShadesBreath extends CardImpl {
+public final class ShadesBreath extends CardImpl {
public ShadesBreath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
@@ -127,7 +127,7 @@ class ShadesBreathSetSubtypeEffect extends ContinuousEffectImpl {
for (Permanent permanent : permanents) {
if (permanent != null) {
SubTypeList subtype = permanent.getSubtype(game);
- if (subtype != null && subtype.size() != 1 || !subtype.contains(SubType.SHADE)) {
+ if (subtype != null && (subtype.size() != 1 || !subtype.contains(SubType.SHADE))) {
subtype.removeAll(SubType.getCreatureTypes(false));
subtype.add(SubType.SHADE);
}
diff --git a/Mage.Sets/src/mage/cards/s/ShadesForm.java b/Mage.Sets/src/mage/cards/s/ShadesForm.java
index 5cda2c4ec3e..bc56fb7b579 100644
--- a/Mage.Sets/src/mage/cards/s/ShadesForm.java
+++ b/Mage.Sets/src/mage/cards/s/ShadesForm.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Temba21
*/
-public class ShadesForm extends CardImpl {
+public final class ShadesForm extends CardImpl {
public ShadesForm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowAlleyDenizen.java b/Mage.Sets/src/mage/cards/s/ShadowAlleyDenizen.java
index ae3e4ea8a17..ab6c1de8584 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowAlleyDenizen.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowAlleyDenizen.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ShadowAlleyDenizen extends CardImpl {
+public final class ShadowAlleyDenizen extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another black creature");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowGlider.java b/Mage.Sets/src/mage/cards/s/ShadowGlider.java
index b8885c617b0..6ddd24467ff 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowGlider.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowGlider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ShadowGlider extends CardImpl {
+public final class ShadowGlider extends CardImpl {
public ShadowGlider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowGuildmage.java b/Mage.Sets/src/mage/cards/s/ShadowGuildmage.java
index e8ba413383b..c37ae18a565 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowGuildmage.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowGuildmage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class ShadowGuildmage extends CardImpl {
+public final class ShadowGuildmage extends CardImpl {
public ShadowGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowLance.java b/Mage.Sets/src/mage/cards/s/ShadowLance.java
index 72199b4a596..464096c7347 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowLance.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowLance.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ShadowLance extends CardImpl {
+public final class ShadowLance extends CardImpl {
public ShadowLance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowOfDoubt.java b/Mage.Sets/src/mage/cards/s/ShadowOfDoubt.java
index 37589700a2c..fd0764bf6ac 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowOfDoubt.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowOfDoubt.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class ShadowOfDoubt extends CardImpl {
+public final class ShadowOfDoubt extends CardImpl {
public ShadowOfDoubt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U/B}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowOfTheGrave.java b/Mage.Sets/src/mage/cards/s/ShadowOfTheGrave.java
index a432c03d68e..b85686a1336 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowOfTheGrave.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowOfTheGrave.java
@@ -44,7 +44,7 @@ import mage.watchers.common.CardsCycledOrDiscardedThisTurnWatcher;
*
* @author jeffwadsworth
*/
-public class ShadowOfTheGrave extends CardImpl {
+public final class ShadowOfTheGrave extends CardImpl {
public ShadowOfTheGrave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowRider.java b/Mage.Sets/src/mage/cards/s/ShadowRider.java
index fa0275c877f..e4a2243077c 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowRider.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowRider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class ShadowRider extends CardImpl {
+public final class ShadowRider extends CardImpl {
public ShadowRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowRift.java b/Mage.Sets/src/mage/cards/s/ShadowRift.java
index d27e446ba02..056673bbdb5 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowRift.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowRift.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ShadowRift extends CardImpl {
+public final class ShadowRift extends CardImpl {
public ShadowRift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowSlice.java b/Mage.Sets/src/mage/cards/s/ShadowSlice.java
index 5f85c0ed1f5..9f639ea825f 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowSlice.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowSlice.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class ShadowSlice extends CardImpl {
+public final class ShadowSlice extends CardImpl {
public ShadowSlice (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowSliver.java b/Mage.Sets/src/mage/cards/s/ShadowSliver.java
index d6ca43e20da..2438269f638 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowSliver.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowSliver.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author anonymous
*/
-public class ShadowSliver extends CardImpl {
+public final class ShadowSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowTrooper.java b/Mage.Sets/src/mage/cards/s/ShadowTrooper.java
index 4110d66fdb7..d806d2f7ab2 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowTrooper.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowTrooper.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class ShadowTrooper extends CardImpl {
+public final class ShadowTrooper extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowbloodEgg.java b/Mage.Sets/src/mage/cards/s/ShadowbloodEgg.java
index 04b1479bc79..302d1e31fab 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowbloodEgg.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowbloodEgg.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ShadowbloodEgg extends CardImpl {
+public final class ShadowbloodEgg extends CardImpl {
public ShadowbloodEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowbloodRidge.java b/Mage.Sets/src/mage/cards/s/ShadowbloodRidge.java
index 0358a23bef0..08f718eccca 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowbloodRidge.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowbloodRidge.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class ShadowbloodRidge extends CardImpl {
+public final class ShadowbloodRidge extends CardImpl {
public ShadowbloodRidge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowbornApostle.java b/Mage.Sets/src/mage/cards/s/ShadowbornApostle.java
index 1de811d6a74..8f5f7800f6f 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowbornApostle.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowbornApostle.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ShadowbornApostle extends CardImpl {
+public final class ShadowbornApostle extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a Demon creature");
private static final FilterControlledCreaturePermanent filterApostle = new FilterControlledCreaturePermanent("six creatures named Shadowborn Apostle");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java b/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java
index 840951721fa..1686e36847a 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ShadowbornDemon extends CardImpl {
+public final class ShadowbornDemon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Demon creature");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowcloakVampire.java b/Mage.Sets/src/mage/cards/s/ShadowcloakVampire.java
index e0c3222c018..4dd14f954e5 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowcloakVampire.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowcloakVampire.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ShadowcloakVampire extends CardImpl {
+public final class ShadowcloakVampire extends CardImpl {
public ShadowcloakVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowedCaravel.java b/Mage.Sets/src/mage/cards/s/ShadowedCaravel.java
index ab340946d07..771b82fdf9a 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowedCaravel.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowedCaravel.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class ShadowedCaravel extends CardImpl {
+public final class ShadowedCaravel extends CardImpl {
public ShadowedCaravel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/Shadowfeed.java b/Mage.Sets/src/mage/cards/s/Shadowfeed.java
index c66bbd29691..83a33848938 100644
--- a/Mage.Sets/src/mage/cards/s/Shadowfeed.java
+++ b/Mage.Sets/src/mage/cards/s/Shadowfeed.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author North
*/
-public class Shadowfeed extends CardImpl {
+public final class Shadowfeed extends CardImpl {
public Shadowfeed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowmageInfiltrator.java b/Mage.Sets/src/mage/cards/s/ShadowmageInfiltrator.java
index 1850ec89c68..5e3a5f0dfb4 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowmageInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowmageInfiltrator.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ShadowmageInfiltrator extends CardImpl {
+public final class ShadowmageInfiltrator extends CardImpl {
public ShadowmageInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowsOfThePast.java b/Mage.Sets/src/mage/cards/s/ShadowsOfThePast.java
index cf029530f94..beb17175846 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowsOfThePast.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowsOfThePast.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LevelX2
*/
-public class ShadowsOfThePast extends CardImpl {
+public final class ShadowsOfThePast extends CardImpl {
public ShadowsOfThePast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Shadowstorm.java b/Mage.Sets/src/mage/cards/s/Shadowstorm.java
index daec9430267..1329f619aa8 100644
--- a/Mage.Sets/src/mage/cards/s/Shadowstorm.java
+++ b/Mage.Sets/src/mage/cards/s/Shadowstorm.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author fireshoes
*/
-public class Shadowstorm extends CardImpl {
+public final class Shadowstorm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with shadow");
diff --git a/Mage.Sets/src/mage/cards/s/ShadowstormVizier.java b/Mage.Sets/src/mage/cards/s/ShadowstormVizier.java
index aa79e55547a..6f8bc0084ef 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowstormVizier.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowstormVizier.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author anonymous
*/
-public class ShadowstormVizier extends CardImpl {
+public final class ShadowstormVizier extends CardImpl {
public ShadowstormVizier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShahOfNaarIsle.java b/Mage.Sets/src/mage/cards/s/ShahOfNaarIsle.java
index 0dc5a2fcc2e..11f60817399 100644
--- a/Mage.Sets/src/mage/cards/s/ShahOfNaarIsle.java
+++ b/Mage.Sets/src/mage/cards/s/ShahOfNaarIsle.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ShahOfNaarIsle extends CardImpl {
+public final class ShahOfNaarIsle extends CardImpl {
public ShahOfNaarIsle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShakeTheFoundations.java b/Mage.Sets/src/mage/cards/s/ShakeTheFoundations.java
index 66e2fdf146a..c1d9f3af174 100644
--- a/Mage.Sets/src/mage/cards/s/ShakeTheFoundations.java
+++ b/Mage.Sets/src/mage/cards/s/ShakeTheFoundations.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author L_J
*/
-public class ShakeTheFoundations extends CardImpl {
+public final class ShakeTheFoundations extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/s/ShalaiVoiceOfPlenty.java b/Mage.Sets/src/mage/cards/s/ShalaiVoiceOfPlenty.java
index 9ef1c4fc4f2..b6c8bfa17a9 100644
--- a/Mage.Sets/src/mage/cards/s/ShalaiVoiceOfPlenty.java
+++ b/Mage.Sets/src/mage/cards/s/ShalaiVoiceOfPlenty.java
@@ -56,7 +56,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author TheElk801
*/
-public class ShalaiVoiceOfPlenty extends CardImpl {
+public final class ShalaiVoiceOfPlenty extends CardImpl {
private static final FilterControlledPermanent filter1 = new FilterControlledPermanent("planeswalkers you control");
diff --git a/Mage.Sets/src/mage/cards/s/ShaleskinBruiser.java b/Mage.Sets/src/mage/cards/s/ShaleskinBruiser.java
index 232051dedf5..4022b20c275 100644
--- a/Mage.Sets/src/mage/cards/s/ShaleskinBruiser.java
+++ b/Mage.Sets/src/mage/cards/s/ShaleskinBruiser.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author Eirkei
*/
-public class ShaleskinBruiser extends CardImpl {
+public final class ShaleskinBruiser extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Beast");
diff --git a/Mage.Sets/src/mage/cards/s/ShaleskinPlower.java b/Mage.Sets/src/mage/cards/s/ShaleskinPlower.java
index 6eeb4476501..ed1dbe46ba6 100644
--- a/Mage.Sets/src/mage/cards/s/ShaleskinPlower.java
+++ b/Mage.Sets/src/mage/cards/s/ShaleskinPlower.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class ShaleskinPlower extends CardImpl {
+public final class ShaleskinPlower extends CardImpl {
public ShaleskinPlower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShallowGrave.java b/Mage.Sets/src/mage/cards/s/ShallowGrave.java
index a3870820999..2fddc1eb77e 100644
--- a/Mage.Sets/src/mage/cards/s/ShallowGrave.java
+++ b/Mage.Sets/src/mage/cards/s/ShallowGrave.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ShallowGrave extends CardImpl {
+public final class ShallowGrave extends CardImpl {
public ShallowGrave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShamanEnKor.java b/Mage.Sets/src/mage/cards/s/ShamanEnKor.java
index 2306bbf04c3..cb4275464e7 100644
--- a/Mage.Sets/src/mage/cards/s/ShamanEnKor.java
+++ b/Mage.Sets/src/mage/cards/s/ShamanEnKor.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class ShamanEnKor extends CardImpl {
+public final class ShamanEnKor extends CardImpl {
public ShamanEnKor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShamanOfForgottenWays.java b/Mage.Sets/src/mage/cards/s/ShamanOfForgottenWays.java
index ad58b7aaa5b..7c9f8a4c411 100644
--- a/Mage.Sets/src/mage/cards/s/ShamanOfForgottenWays.java
+++ b/Mage.Sets/src/mage/cards/s/ShamanOfForgottenWays.java
@@ -58,7 +58,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ShamanOfForgottenWays extends CardImpl {
+public final class ShamanOfForgottenWays extends CardImpl {
public ShamanOfForgottenWays(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShamanOfSpring.java b/Mage.Sets/src/mage/cards/s/ShamanOfSpring.java
index b195b9ba2f7..bdd510f509f 100644
--- a/Mage.Sets/src/mage/cards/s/ShamanOfSpring.java
+++ b/Mage.Sets/src/mage/cards/s/ShamanOfSpring.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ShamanOfSpring extends CardImpl {
+public final class ShamanOfSpring extends CardImpl {
public ShamanOfSpring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShamanOfTheGreatHunt.java b/Mage.Sets/src/mage/cards/s/ShamanOfTheGreatHunt.java
index 7ba8456ddaf..946eab06707 100644
--- a/Mage.Sets/src/mage/cards/s/ShamanOfTheGreatHunt.java
+++ b/Mage.Sets/src/mage/cards/s/ShamanOfTheGreatHunt.java
@@ -55,7 +55,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author LevelX2
*/
-public class ShamanOfTheGreatHunt extends CardImpl {
+public final class ShamanOfTheGreatHunt extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature you control with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/ShamanOfThePack.java b/Mage.Sets/src/mage/cards/s/ShamanOfThePack.java
index 30c21d328a2..7b5973a8cf4 100644
--- a/Mage.Sets/src/mage/cards/s/ShamanOfThePack.java
+++ b/Mage.Sets/src/mage/cards/s/ShamanOfThePack.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class ShamanOfThePack extends CardImpl {
+public final class ShamanOfThePack extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("equal to the number of elves you control");
diff --git a/Mage.Sets/src/mage/cards/s/ShamanicRevelation.java b/Mage.Sets/src/mage/cards/s/ShamanicRevelation.java
index 357e9a7993d..ab541355f1d 100644
--- a/Mage.Sets/src/mage/cards/s/ShamanicRevelation.java
+++ b/Mage.Sets/src/mage/cards/s/ShamanicRevelation.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author LevelX2
*/
-public class ShamanicRevelation extends CardImpl {
+public final class ShamanicRevelation extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature you control with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/ShambleBack.java b/Mage.Sets/src/mage/cards/s/ShambleBack.java
index 05234899ae4..287cbaa1cfb 100644
--- a/Mage.Sets/src/mage/cards/s/ShambleBack.java
+++ b/Mage.Sets/src/mage/cards/s/ShambleBack.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class ShambleBack extends CardImpl {
+public final class ShambleBack extends CardImpl {
public ShambleBack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Shambleshark.java b/Mage.Sets/src/mage/cards/s/Shambleshark.java
index 3224306a9ba..b429684af2b 100644
--- a/Mage.Sets/src/mage/cards/s/Shambleshark.java
+++ b/Mage.Sets/src/mage/cards/s/Shambleshark.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Shambleshark extends CardImpl {
+public final class Shambleshark extends CardImpl {
public Shambleshark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShamblingAttendants.java b/Mage.Sets/src/mage/cards/s/ShamblingAttendants.java
index fc522625750..36255bb02e7 100644
--- a/Mage.Sets/src/mage/cards/s/ShamblingAttendants.java
+++ b/Mage.Sets/src/mage/cards/s/ShamblingAttendants.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ShamblingAttendants extends CardImpl {
+public final class ShamblingAttendants extends CardImpl {
public ShamblingAttendants(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShamblingGhoul.java b/Mage.Sets/src/mage/cards/s/ShamblingGhoul.java
index 455cc0a323e..0f290de39c8 100644
--- a/Mage.Sets/src/mage/cards/s/ShamblingGhoul.java
+++ b/Mage.Sets/src/mage/cards/s/ShamblingGhoul.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ShamblingGhoul extends CardImpl {
+public final class ShamblingGhoul extends CardImpl {
private static final String staticText = "{this} enters the battlefield tapped";
diff --git a/Mage.Sets/src/mage/cards/s/ShamblingGoblin.java b/Mage.Sets/src/mage/cards/s/ShamblingGoblin.java
index f3232924608..9e5926cf634 100644
--- a/Mage.Sets/src/mage/cards/s/ShamblingGoblin.java
+++ b/Mage.Sets/src/mage/cards/s/ShamblingGoblin.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ShamblingGoblin extends CardImpl {
+public final class ShamblingGoblin extends CardImpl {
private static final FilterCreaturePermanent filterOpponentCreature = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/ShamblingRemains.java b/Mage.Sets/src/mage/cards/s/ShamblingRemains.java
index 63ba8e9895b..1ed200ec17a 100644
--- a/Mage.Sets/src/mage/cards/s/ShamblingRemains.java
+++ b/Mage.Sets/src/mage/cards/s/ShamblingRemains.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ShamblingRemains extends CardImpl {
+public final class ShamblingRemains extends CardImpl {
public ShamblingRemains(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShamblingShell.java b/Mage.Sets/src/mage/cards/s/ShamblingShell.java
index 6f677fa0c8a..da9a5b9fe07 100644
--- a/Mage.Sets/src/mage/cards/s/ShamblingShell.java
+++ b/Mage.Sets/src/mage/cards/s/ShamblingShell.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jonubuu
*/
-public class ShamblingShell extends CardImpl {
+public final class ShamblingShell extends CardImpl {
public ShamblingShell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShamblingStrider.java b/Mage.Sets/src/mage/cards/s/ShamblingStrider.java
index 15a35a901d4..9946d6af4cc 100644
--- a/Mage.Sets/src/mage/cards/s/ShamblingStrider.java
+++ b/Mage.Sets/src/mage/cards/s/ShamblingStrider.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author hanasu
*/
-public class ShamblingStrider extends CardImpl {
+public final class ShamblingStrider extends CardImpl {
public ShamblingStrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShamblingSwarm.java b/Mage.Sets/src/mage/cards/s/ShamblingSwarm.java
index fb86d215382..340eec72d26 100644
--- a/Mage.Sets/src/mage/cards/s/ShamblingSwarm.java
+++ b/Mage.Sets/src/mage/cards/s/ShamblingSwarm.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LoneFox
*/
-public class ShamblingSwarm extends CardImpl {
+public final class ShamblingSwarm extends CardImpl {
public ShamblingSwarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShamblingVent.java b/Mage.Sets/src/mage/cards/s/ShamblingVent.java
index 51883edb899..8978144185d 100644
--- a/Mage.Sets/src/mage/cards/s/ShamblingVent.java
+++ b/Mage.Sets/src/mage/cards/s/ShamblingVent.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class ShamblingVent extends CardImpl {
+public final class ShamblingVent extends CardImpl {
public ShamblingVent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/ShannaSisaysLegacy.java b/Mage.Sets/src/mage/cards/s/ShannaSisaysLegacy.java
index 36c618fcc2c..e5f8c81d0ca 100644
--- a/Mage.Sets/src/mage/cards/s/ShannaSisaysLegacy.java
+++ b/Mage.Sets/src/mage/cards/s/ShannaSisaysLegacy.java
@@ -54,7 +54,7 @@ import mage.game.stack.StackObject;
*
* @author TheElk801
*/
-public class ShannaSisaysLegacy extends CardImpl {
+public final class ShannaSisaysLegacy extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/ShanodinDryads.java b/Mage.Sets/src/mage/cards/s/ShanodinDryads.java
index 05d216b68b7..0bbd6c7d837 100644
--- a/Mage.Sets/src/mage/cards/s/ShanodinDryads.java
+++ b/Mage.Sets/src/mage/cards/s/ShanodinDryads.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ShanodinDryads extends CardImpl {
+public final class ShanodinDryads extends CardImpl {
public ShanodinDryads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShapeAnew.java b/Mage.Sets/src/mage/cards/s/ShapeAnew.java
index 27956d24561..864a0e42b35 100644
--- a/Mage.Sets/src/mage/cards/s/ShapeAnew.java
+++ b/Mage.Sets/src/mage/cards/s/ShapeAnew.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author ayratn
*/
-public class ShapeAnew extends CardImpl {
+public final class ShapeAnew extends CardImpl {
public ShapeAnew(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShapeStealer.java b/Mage.Sets/src/mage/cards/s/ShapeStealer.java
index 4e719fb2dd8..797ca64aca5 100644
--- a/Mage.Sets/src/mage/cards/s/ShapeStealer.java
+++ b/Mage.Sets/src/mage/cards/s/ShapeStealer.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ShapeStealer extends CardImpl {
+public final class ShapeStealer extends CardImpl {
public ShapeStealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShapeTheSands.java b/Mage.Sets/src/mage/cards/s/ShapeTheSands.java
index 02e87734d7e..f1c2baa6da5 100644
--- a/Mage.Sets/src/mage/cards/s/ShapeTheSands.java
+++ b/Mage.Sets/src/mage/cards/s/ShapeTheSands.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ShapeTheSands extends CardImpl {
+public final class ShapeTheSands extends CardImpl {
public ShapeTheSands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShaperApprentice.java b/Mage.Sets/src/mage/cards/s/ShaperApprentice.java
index 874f84b0a01..e4d68036fb7 100644
--- a/Mage.Sets/src/mage/cards/s/ShaperApprentice.java
+++ b/Mage.Sets/src/mage/cards/s/ShaperApprentice.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author TheElk801
*/
-public class ShaperApprentice extends CardImpl {
+public final class ShaperApprentice extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Merfolk");
diff --git a/Mage.Sets/src/mage/cards/s/ShaperGuildmage.java b/Mage.Sets/src/mage/cards/s/ShaperGuildmage.java
index ddcef400f27..5274e372332 100644
--- a/Mage.Sets/src/mage/cards/s/ShaperGuildmage.java
+++ b/Mage.Sets/src/mage/cards/s/ShaperGuildmage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ShaperGuildmage extends CardImpl {
+public final class ShaperGuildmage extends CardImpl {
public ShaperGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShaperParasite.java b/Mage.Sets/src/mage/cards/s/ShaperParasite.java
index a6257de6112..39071e2bbf8 100644
--- a/Mage.Sets/src/mage/cards/s/ShaperParasite.java
+++ b/Mage.Sets/src/mage/cards/s/ShaperParasite.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ShaperParasite extends CardImpl {
+public final class ShaperParasite extends CardImpl {
public ShaperParasite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShapersOfNature.java b/Mage.Sets/src/mage/cards/s/ShapersOfNature.java
index bee68db9ee0..2c89f3cd5ca 100644
--- a/Mage.Sets/src/mage/cards/s/ShapersOfNature.java
+++ b/Mage.Sets/src/mage/cards/s/ShapersOfNature.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class ShapersOfNature extends CardImpl {
+public final class ShapersOfNature extends CardImpl {
public ShapersOfNature(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShapersSanctuary.java b/Mage.Sets/src/mage/cards/s/ShapersSanctuary.java
index 9cc3bf788ea..77493d8fe54 100644
--- a/Mage.Sets/src/mage/cards/s/ShapersSanctuary.java
+++ b/Mage.Sets/src/mage/cards/s/ShapersSanctuary.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class ShapersSanctuary extends CardImpl {
+public final class ShapersSanctuary extends CardImpl {
public ShapersSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Shapesharer.java b/Mage.Sets/src/mage/cards/s/Shapesharer.java
index d54d7d77b5e..627b205781f 100644
--- a/Mage.Sets/src/mage/cards/s/Shapesharer.java
+++ b/Mage.Sets/src/mage/cards/s/Shapesharer.java
@@ -48,7 +48,7 @@ import mage.util.functions.EmptyApplyToPermanent;
/**
* @author duncant
*/
-public class Shapesharer extends CardImpl {
+public final class Shapesharer extends CardImpl {
private static final FilterPermanent filterShapeshifter = new FilterPermanent("Shapeshifter");
diff --git a/Mage.Sets/src/mage/cards/s/Shapeshifter.java b/Mage.Sets/src/mage/cards/s/Shapeshifter.java
index ff730738f31..2824e7905c9 100644
--- a/Mage.Sets/src/mage/cards/s/Shapeshifter.java
+++ b/Mage.Sets/src/mage/cards/s/Shapeshifter.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author MarcoMarin / HCrescent
*/
-public class Shapeshifter extends CardImpl {
+public final class Shapeshifter extends CardImpl {
public Shapeshifter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/s/ShapeshiftersMarrow.java b/Mage.Sets/src/mage/cards/s/ShapeshiftersMarrow.java
index 3db3dd5dee3..65814ce6f42 100644
--- a/Mage.Sets/src/mage/cards/s/ShapeshiftersMarrow.java
+++ b/Mage.Sets/src/mage/cards/s/ShapeshiftersMarrow.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* author HCrescent
*/
-public class ShapeshiftersMarrow extends CardImpl {
+public final class ShapeshiftersMarrow extends CardImpl {
public ShapeshiftersMarrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShardConvergence.java b/Mage.Sets/src/mage/cards/s/ShardConvergence.java
index aa7fc375ac5..09de99b7a0b 100644
--- a/Mage.Sets/src/mage/cards/s/ShardConvergence.java
+++ b/Mage.Sets/src/mage/cards/s/ShardConvergence.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class ShardConvergence extends CardImpl {
+public final class ShardConvergence extends CardImpl {
public ShardConvergence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShardOfBrokenGlass.java b/Mage.Sets/src/mage/cards/s/ShardOfBrokenGlass.java
index c69a6f13cfe..b12a8077c72 100644
--- a/Mage.Sets/src/mage/cards/s/ShardOfBrokenGlass.java
+++ b/Mage.Sets/src/mage/cards/s/ShardOfBrokenGlass.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ShardOfBrokenGlass extends CardImpl {
+public final class ShardOfBrokenGlass extends CardImpl {
public ShardOfBrokenGlass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/ShardPhoenix.java b/Mage.Sets/src/mage/cards/s/ShardPhoenix.java
index 9ce88ff2c44..85e98efc32d 100644
--- a/Mage.Sets/src/mage/cards/s/ShardPhoenix.java
+++ b/Mage.Sets/src/mage/cards/s/ShardPhoenix.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author fireshoes
*/
-public class ShardPhoenix extends CardImpl {
+public final class ShardPhoenix extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/s/ShardVolley.java b/Mage.Sets/src/mage/cards/s/ShardVolley.java
index 33451a4061a..65b835ca7f8 100644
--- a/Mage.Sets/src/mage/cards/s/ShardVolley.java
+++ b/Mage.Sets/src/mage/cards/s/ShardVolley.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class ShardVolley extends CardImpl {
+public final class ShardVolley extends CardImpl {
public ShardVolley(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShardingSphinx.java b/Mage.Sets/src/mage/cards/s/ShardingSphinx.java
index 37a898ab86f..360c4d32e97 100644
--- a/Mage.Sets/src/mage/cards/s/ShardingSphinx.java
+++ b/Mage.Sets/src/mage/cards/s/ShardingSphinx.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.ThopterToken;
*
* @author Plopman
*/
-public class ShardingSphinx extends CardImpl {
+public final class ShardingSphinx extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an artifact creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/ShardlessAgent.java b/Mage.Sets/src/mage/cards/s/ShardlessAgent.java
index af72ee8651d..5cb248de658 100644
--- a/Mage.Sets/src/mage/cards/s/ShardlessAgent.java
+++ b/Mage.Sets/src/mage/cards/s/ShardlessAgent.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ShardlessAgent extends CardImpl {
+public final class ShardlessAgent extends CardImpl {
public ShardlessAgent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SharedAnimosity.java b/Mage.Sets/src/mage/cards/s/SharedAnimosity.java
index fd6b7dc2e62..926a884cecb 100644
--- a/Mage.Sets/src/mage/cards/s/SharedAnimosity.java
+++ b/Mage.Sets/src/mage/cards/s/SharedAnimosity.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class SharedAnimosity extends CardImpl {
+public final class SharedAnimosity extends CardImpl {
public SharedAnimosity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SharedDiscovery.java b/Mage.Sets/src/mage/cards/s/SharedDiscovery.java
index d9b30a96142..ff42f8ef967 100644
--- a/Mage.Sets/src/mage/cards/s/SharedDiscovery.java
+++ b/Mage.Sets/src/mage/cards/s/SharedDiscovery.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class SharedDiscovery extends CardImpl {
+public final class SharedDiscovery extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/SharedFate.java b/Mage.Sets/src/mage/cards/s/SharedFate.java
index 2cd3bd6603f..90fd12805dc 100644
--- a/Mage.Sets/src/mage/cards/s/SharedFate.java
+++ b/Mage.Sets/src/mage/cards/s/SharedFate.java
@@ -53,7 +53,7 @@ import mage.util.CardUtil;
*
* @author emerald000 / HCrescent
*/
-public class SharedFate extends CardImpl {
+public final class SharedFate extends CardImpl {
public SharedFate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SharedTrauma.java b/Mage.Sets/src/mage/cards/s/SharedTrauma.java
index fe94815a324..4a758dab1b5 100644
--- a/Mage.Sets/src/mage/cards/s/SharedTrauma.java
+++ b/Mage.Sets/src/mage/cards/s/SharedTrauma.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SharedTrauma extends CardImpl {
+public final class SharedTrauma extends CardImpl {
public SharedTrauma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SharedTriumph.java b/Mage.Sets/src/mage/cards/s/SharedTriumph.java
index fa723130fe4..3bdfdd61b4d 100644
--- a/Mage.Sets/src/mage/cards/s/SharedTriumph.java
+++ b/Mage.Sets/src/mage/cards/s/SharedTriumph.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SharedTriumph extends CardImpl {
+public final class SharedTriumph extends CardImpl {
public SharedTriumph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SharpenedPitchfork.java b/Mage.Sets/src/mage/cards/s/SharpenedPitchfork.java
index 1c288e96be1..753d25c21e4 100644
--- a/Mage.Sets/src/mage/cards/s/SharpenedPitchfork.java
+++ b/Mage.Sets/src/mage/cards/s/SharpenedPitchfork.java
@@ -44,7 +44,7 @@ import mage.constants.*;
*
* @author nantuko
*/
-public class SharpenedPitchfork extends CardImpl {
+public final class SharpenedPitchfork extends CardImpl {
private static final String staticText = "As long as equipped creature is a Human, it gets +1/+1";
diff --git a/Mage.Sets/src/mage/cards/s/SharuumTheHegemon.java b/Mage.Sets/src/mage/cards/s/SharuumTheHegemon.java
index b523b85cee0..42518d931af 100644
--- a/Mage.Sets/src/mage/cards/s/SharuumTheHegemon.java
+++ b/Mage.Sets/src/mage/cards/s/SharuumTheHegemon.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class SharuumTheHegemon extends CardImpl {
+public final class SharuumTheHegemon extends CardImpl {
public SharuumTheHegemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Shatter.java b/Mage.Sets/src/mage/cards/s/Shatter.java
index c229ed8b120..17f44bebb92 100644
--- a/Mage.Sets/src/mage/cards/s/Shatter.java
+++ b/Mage.Sets/src/mage/cards/s/Shatter.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Loki
*/
-public class Shatter extends CardImpl {
+public final class Shatter extends CardImpl {
public Shatter (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShatteredAngel.java b/Mage.Sets/src/mage/cards/s/ShatteredAngel.java
index a3d8f09ec03..fce4968f2b1 100644
--- a/Mage.Sets/src/mage/cards/s/ShatteredAngel.java
+++ b/Mage.Sets/src/mage/cards/s/ShatteredAngel.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Loki
*/
-public class ShatteredAngel extends CardImpl {
+public final class ShatteredAngel extends CardImpl {
private static final FilterPermanent filter = new FilterLandPermanent("a land");
static {
diff --git a/Mage.Sets/src/mage/cards/s/ShatteredCrypt.java b/Mage.Sets/src/mage/cards/s/ShatteredCrypt.java
index cc8b263651c..02962969095 100644
--- a/Mage.Sets/src/mage/cards/s/ShatteredCrypt.java
+++ b/Mage.Sets/src/mage/cards/s/ShatteredCrypt.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class ShatteredCrypt extends CardImpl {
+public final class ShatteredCrypt extends CardImpl {
public ShatteredCrypt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShatteredDreams.java b/Mage.Sets/src/mage/cards/s/ShatteredDreams.java
index d20e3c6c43f..0751444e44d 100644
--- a/Mage.Sets/src/mage/cards/s/ShatteredDreams.java
+++ b/Mage.Sets/src/mage/cards/s/ShatteredDreams.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetOpponent;
*
* @author Plopman
*/
-public class ShatteredDreams extends CardImpl {
+public final class ShatteredDreams extends CardImpl {
private static final FilterCard filter = new FilterCard("an artifact card from it");
static {
diff --git a/Mage.Sets/src/mage/cards/s/ShatteredPerception.java b/Mage.Sets/src/mage/cards/s/ShatteredPerception.java
index 4efa2ef59f4..2a5314b7cff 100644
--- a/Mage.Sets/src/mage/cards/s/ShatteredPerception.java
+++ b/Mage.Sets/src/mage/cards/s/ShatteredPerception.java
@@ -40,7 +40,7 @@ import mage.constants.TimingRule;
*
* @author North
*/
-public class ShatteredPerception extends CardImpl {
+public final class ShatteredPerception extends CardImpl {
public ShatteredPerception(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShattergangBrothers.java b/Mage.Sets/src/mage/cards/s/ShattergangBrothers.java
index 93f14280764..76c1b6694d8 100644
--- a/Mage.Sets/src/mage/cards/s/ShattergangBrothers.java
+++ b/Mage.Sets/src/mage/cards/s/ShattergangBrothers.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class ShattergangBrothers extends CardImpl {
+public final class ShattergangBrothers extends CardImpl {
public ShattergangBrothers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShatteringBlow.java b/Mage.Sets/src/mage/cards/s/ShatteringBlow.java
index d0468b64ede..eee0990771c 100644
--- a/Mage.Sets/src/mage/cards/s/ShatteringBlow.java
+++ b/Mage.Sets/src/mage/cards/s/ShatteringBlow.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class ShatteringBlow extends CardImpl {
+public final class ShatteringBlow extends CardImpl {
public ShatteringBlow (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShatteringPulse.java b/Mage.Sets/src/mage/cards/s/ShatteringPulse.java
index 1714629d1e2..7a4b365db20 100644
--- a/Mage.Sets/src/mage/cards/s/ShatteringPulse.java
+++ b/Mage.Sets/src/mage/cards/s/ShatteringPulse.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Jgod
*/
-public class ShatteringPulse extends CardImpl {
+public final class ShatteringPulse extends CardImpl {
public ShatteringPulse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShatteringSpree.java b/Mage.Sets/src/mage/cards/s/ShatteringSpree.java
index 09a6d41f386..a06f1f11ed7 100644
--- a/Mage.Sets/src/mage/cards/s/ShatteringSpree.java
+++ b/Mage.Sets/src/mage/cards/s/ShatteringSpree.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class ShatteringSpree extends CardImpl {
+public final class ShatteringSpree extends CardImpl {
public ShatteringSpree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShatterskullGiant.java b/Mage.Sets/src/mage/cards/s/ShatterskullGiant.java
index 5620e2a4227..e0965d807be 100644
--- a/Mage.Sets/src/mage/cards/s/ShatterskullGiant.java
+++ b/Mage.Sets/src/mage/cards/s/ShatterskullGiant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ShatterskullGiant extends CardImpl {
+public final class ShatterskullGiant extends CardImpl {
public ShatterskullGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShatterskullRecruit.java b/Mage.Sets/src/mage/cards/s/ShatterskullRecruit.java
index 692c50fdc3e..829e20788da 100644
--- a/Mage.Sets/src/mage/cards/s/ShatterskullRecruit.java
+++ b/Mage.Sets/src/mage/cards/s/ShatterskullRecruit.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ShatterskullRecruit extends CardImpl {
+public final class ShatterskullRecruit extends CardImpl {
public ShatterskullRecruit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Shatterstorm.java b/Mage.Sets/src/mage/cards/s/Shatterstorm.java
index 1baa453c466..891db1203f0 100644
--- a/Mage.Sets/src/mage/cards/s/Shatterstorm.java
+++ b/Mage.Sets/src/mage/cards/s/Shatterstorm.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author jonubuu
*/
-public class Shatterstorm extends CardImpl {
+public final class Shatterstorm extends CardImpl {
public Shatterstorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java b/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java
index df6cdc6ea29..158a886b38a 100644
--- a/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java
+++ b/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Saga
*/
-public class ShaukuEndbringer extends CardImpl{
+public final class ShaukuEndbringer extends CardImpl{
public ShaukuEndbringer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShaukusMinion.java b/Mage.Sets/src/mage/cards/s/ShaukusMinion.java
index cb1f7474cbd..1265347f7d5 100644
--- a/Mage.Sets/src/mage/cards/s/ShaukusMinion.java
+++ b/Mage.Sets/src/mage/cards/s/ShaukusMinion.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class ShaukusMinion extends CardImpl {
+public final class ShaukusMinion extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creature");
diff --git a/Mage.Sets/src/mage/cards/s/ShedWeakness.java b/Mage.Sets/src/mage/cards/s/ShedWeakness.java
index cd32ea6d273..12da8eacf5f 100644
--- a/Mage.Sets/src/mage/cards/s/ShedWeakness.java
+++ b/Mage.Sets/src/mage/cards/s/ShedWeakness.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author stravant
*/
-public class ShedWeakness extends CardImpl {
+public final class ShedWeakness extends CardImpl {
public ShedWeakness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SheerDrop.java b/Mage.Sets/src/mage/cards/s/SheerDrop.java
index 3ffab3b5406..902ec4ea194 100644
--- a/Mage.Sets/src/mage/cards/s/SheerDrop.java
+++ b/Mage.Sets/src/mage/cards/s/SheerDrop.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SheerDrop extends CardImpl {
+public final class SheerDrop extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/s/ShefetDunes.java b/Mage.Sets/src/mage/cards/s/ShefetDunes.java
index e63f59de31f..5c4a68f0ba1 100644
--- a/Mage.Sets/src/mage/cards/s/ShefetDunes.java
+++ b/Mage.Sets/src/mage/cards/s/ShefetDunes.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author spjspj
*/
-public class ShefetDunes extends CardImpl {
+public final class ShefetDunes extends CardImpl {
private static final FilterControlledPermanent filterDesertPermanent = new FilterControlledPermanent("Desert");
diff --git a/Mage.Sets/src/mage/cards/s/ShefetMonitor.java b/Mage.Sets/src/mage/cards/s/ShefetMonitor.java
index 23d2d92a760..2d9e227f01a 100644
--- a/Mage.Sets/src/mage/cards/s/ShefetMonitor.java
+++ b/Mage.Sets/src/mage/cards/s/ShefetMonitor.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class ShefetMonitor extends CardImpl {
+public final class ShefetMonitor extends CardImpl {
private static final FilterCard filter = new FilterCard("basic land card or a Desert card");
static {
diff --git a/Mage.Sets/src/mage/cards/s/ShellOfTheLastKappa.java b/Mage.Sets/src/mage/cards/s/ShellOfTheLastKappa.java
index dfaeef31dc1..e24865c51b3 100644
--- a/Mage.Sets/src/mage/cards/s/ShellOfTheLastKappa.java
+++ b/Mage.Sets/src/mage/cards/s/ShellOfTheLastKappa.java
@@ -28,6 +28,7 @@
package mage.cards.s;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
@@ -61,7 +62,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class ShellOfTheLastKappa extends CardImpl {
+public final class ShellOfTheLastKappa extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery spell that targets you");
@@ -157,7 +158,7 @@ class ShellOfTheLastKappaCastEffect extends OneShotEffect {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
game.getExile().removeCard(card, game);
- return controller.cast(card.getSpellAbility(), game, true);
+ return controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/s/ShellSkulkin.java b/Mage.Sets/src/mage/cards/s/ShellSkulkin.java
index bf92c1ecd97..f3021cc89b8 100644
--- a/Mage.Sets/src/mage/cards/s/ShellSkulkin.java
+++ b/Mage.Sets/src/mage/cards/s/ShellSkulkin.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class ShellSkulkin extends CardImpl {
+public final class ShellSkulkin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creature");
diff --git a/Mage.Sets/src/mage/cards/s/ShelldockIsle.java b/Mage.Sets/src/mage/cards/s/ShelldockIsle.java
index 85be2f4cd01..c2efc786e77 100644
--- a/Mage.Sets/src/mage/cards/s/ShelldockIsle.java
+++ b/Mage.Sets/src/mage/cards/s/ShelldockIsle.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ShelldockIsle extends CardImpl {
+public final class ShelldockIsle extends CardImpl {
public ShelldockIsle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/Shelter.java b/Mage.Sets/src/mage/cards/s/Shelter.java
index b0db7bb4438..c4f09b0b3b6 100644
--- a/Mage.Sets/src/mage/cards/s/Shelter.java
+++ b/Mage.Sets/src/mage/cards/s/Shelter.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author cbt33
*/
-public class Shelter extends CardImpl {
+public final class Shelter extends CardImpl {
public Shelter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShelteredAerie.java b/Mage.Sets/src/mage/cards/s/ShelteredAerie.java
index 44bbcc08f22..62b6f0b86ed 100644
--- a/Mage.Sets/src/mage/cards/s/ShelteredAerie.java
+++ b/Mage.Sets/src/mage/cards/s/ShelteredAerie.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class ShelteredAerie extends CardImpl {
+public final class ShelteredAerie extends CardImpl {
public ShelteredAerie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShelteredThicket.java b/Mage.Sets/src/mage/cards/s/ShelteredThicket.java
index bff43c88685..d730062db06 100644
--- a/Mage.Sets/src/mage/cards/s/ShelteredThicket.java
+++ b/Mage.Sets/src/mage/cards/s/ShelteredThicket.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ShelteredThicket extends CardImpl {
+public final class ShelteredThicket extends CardImpl {
public ShelteredThicket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/ShelteredValley.java b/Mage.Sets/src/mage/cards/s/ShelteredValley.java
index bfc67a450e9..3a7d58f03f5 100644
--- a/Mage.Sets/src/mage/cards/s/ShelteredValley.java
+++ b/Mage.Sets/src/mage/cards/s/ShelteredValley.java
@@ -53,7 +53,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author anonymous
*/
-public class ShelteredValley extends CardImpl {
+public final class ShelteredValley extends CardImpl {
private static final FilterPermanent filterShelteredValley = new FilterPermanent("permanent named Sheltered Valley");
diff --git a/Mage.Sets/src/mage/cards/s/ShelteringAncient.java b/Mage.Sets/src/mage/cards/s/ShelteringAncient.java
index 14052f89293..c3e6ff01b71 100644
--- a/Mage.Sets/src/mage/cards/s/ShelteringAncient.java
+++ b/Mage.Sets/src/mage/cards/s/ShelteringAncient.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class ShelteringAncient extends CardImpl {
+public final class ShelteringAncient extends CardImpl {
public ShelteringAncient(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShelteringLight.java b/Mage.Sets/src/mage/cards/s/ShelteringLight.java
index c8fdc1237e7..5b693ecd406 100644
--- a/Mage.Sets/src/mage/cards/s/ShelteringLight.java
+++ b/Mage.Sets/src/mage/cards/s/ShelteringLight.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class ShelteringLight extends CardImpl {
+public final class ShelteringLight extends CardImpl {
public ShelteringLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShelteringWord.java b/Mage.Sets/src/mage/cards/s/ShelteringWord.java
index 76676a2653b..032f9e80332 100644
--- a/Mage.Sets/src/mage/cards/s/ShelteringWord.java
+++ b/Mage.Sets/src/mage/cards/s/ShelteringWord.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class ShelteringWord extends CardImpl {
+public final class ShelteringWord extends CardImpl {
public ShelteringWord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SheoldredWhisperingOne.java b/Mage.Sets/src/mage/cards/s/SheoldredWhisperingOne.java
index bd26e5c8b5c..3cec4cb3461 100644
--- a/Mage.Sets/src/mage/cards/s/SheoldredWhisperingOne.java
+++ b/Mage.Sets/src/mage/cards/s/SheoldredWhisperingOne.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class SheoldredWhisperingOne extends CardImpl {
+public final class SheoldredWhisperingOne extends CardImpl {
public SheoldredWhisperingOne(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShepherdOfRot.java b/Mage.Sets/src/mage/cards/s/ShepherdOfRot.java
index b8f179f58e4..4bf3467a617 100644
--- a/Mage.Sets/src/mage/cards/s/ShepherdOfRot.java
+++ b/Mage.Sets/src/mage/cards/s/ShepherdOfRot.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jeffwadsworth
*/
-public class ShepherdOfRot extends CardImpl {
+public final class ShepherdOfRot extends CardImpl {
static final String rule = "Each player loses 1 life for each Zombie on the battlefield";
diff --git a/Mage.Sets/src/mage/cards/s/ShepherdOfTheLost.java b/Mage.Sets/src/mage/cards/s/ShepherdOfTheLost.java
index 69a072a035a..eed511f46f6 100644
--- a/Mage.Sets/src/mage/cards/s/ShepherdOfTheLost.java
+++ b/Mage.Sets/src/mage/cards/s/ShepherdOfTheLost.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ShepherdOfTheLost extends CardImpl {
+public final class ShepherdOfTheLost extends CardImpl {
public ShepherdOfTheLost (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldBearer.java b/Mage.Sets/src/mage/cards/s/ShieldBearer.java
index 818f85fc83d..213d3681ace 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldBearer.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldBearer.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class ShieldBearer extends CardImpl {
+public final class ShieldBearer extends CardImpl {
public ShieldBearer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldDancer.java b/Mage.Sets/src/mage/cards/s/ShieldDancer.java
index a0756c1e034..a1d537a4601 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldDancer.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldDancer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author LevelX2
*/
-public class ShieldDancer extends CardImpl {
+public final class ShieldDancer extends CardImpl {
public ShieldDancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldMate.java b/Mage.Sets/src/mage/cards/s/ShieldMate.java
index 1219778a6f6..c915258934d 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldMate.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldMate.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class ShieldMate extends CardImpl {
+public final class ShieldMate extends CardImpl {
public ShieldMate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldOfDutyAndReason.java b/Mage.Sets/src/mage/cards/s/ShieldOfDutyAndReason.java
index 2460b271caa..9f53b510414 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldOfDutyAndReason.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldOfDutyAndReason.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ShieldOfDutyAndReason extends CardImpl {
+public final class ShieldOfDutyAndReason extends CardImpl {
public ShieldOfDutyAndReason(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldOfKaldra.java b/Mage.Sets/src/mage/cards/s/ShieldOfKaldra.java
index 47c7cbc0c57..0ab677b8508 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldOfKaldra.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldOfKaldra.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class ShieldOfKaldra extends CardImpl {
+public final class ShieldOfKaldra extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Equipment named Sword of Kaldra, Shield of Kaldra, and Helm of Kaldra");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldOfTheAges.java b/Mage.Sets/src/mage/cards/s/ShieldOfTheAges.java
index e82e27b8166..17321643922 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldOfTheAges.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldOfTheAges.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ShieldOfTheAges extends CardImpl {
+public final class ShieldOfTheAges extends CardImpl {
public ShieldOfTheAges(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldOfTheAvatar.java b/Mage.Sets/src/mage/cards/s/ShieldOfTheAvatar.java
index 3c1b160ec4a..f29271167ff 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldOfTheAvatar.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldOfTheAvatar.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class ShieldOfTheAvatar extends CardImpl {
+public final class ShieldOfTheAvatar extends CardImpl {
public ShieldOfTheAvatar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldOfTheOversoul.java b/Mage.Sets/src/mage/cards/s/ShieldOfTheOversoul.java
index c3782772d48..785d6b5a446 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldOfTheOversoul.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldOfTheOversoul.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ShieldOfTheOversoul extends CardImpl {
+public final class ShieldOfTheOversoul extends CardImpl {
public ShieldOfTheOversoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldOfTheRealm.java b/Mage.Sets/src/mage/cards/s/ShieldOfTheRealm.java
index ef04a9549a6..970ef8edd16 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldOfTheRealm.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldOfTheRealm.java
@@ -1,70 +1,70 @@
-/*
- * 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.common.SimpleStaticAbility;
-import mage.abilities.costs.mana.GenericManaCost;
-import mage.abilities.effects.common.PreventDamageToAttachedEffect;
-import mage.abilities.keyword.EquipAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.AttachmentType;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.Outcome;
-import mage.constants.SubType;
-import mage.constants.Zone;
-
-/**
- *
- * @author LevelX2
- */
-public class ShieldOfTheRealm extends CardImpl {
-
- public ShieldOfTheRealm(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
-
- this.subtype.add(SubType.EQUIPMENT);
-
- // If a source would deal damage to equipped creature, prevent 2 of that damage.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
- new PreventDamageToAttachedEffect(Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT, 2, false)));
- // Equip {1}
- this.addAbility(new EquipAbility(Outcome.PreventDamage, new GenericManaCost(1)));
- }
-
- public ShieldOfTheRealm(final ShieldOfTheRealm card) {
- super(card);
- }
-
- @Override
- public ShieldOfTheRealm copy() {
- return new ShieldOfTheRealm(this);
- }
-}
+/*
+ * 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.common.SimpleStaticAbility;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.PreventDamageToAttachedEffect;
+import mage.abilities.keyword.EquipAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.AttachmentType;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class ShieldOfTheRealm extends CardImpl {
+
+ public ShieldOfTheRealm(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
+
+ this.subtype.add(SubType.EQUIPMENT);
+
+ // If a source would deal damage to equipped creature, prevent 2 of that damage.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
+ new PreventDamageToAttachedEffect(Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT, 2, false)));
+ // Equip {1}
+ this.addAbility(new EquipAbility(Outcome.PreventDamage, new GenericManaCost(1)));
+ }
+
+ public ShieldOfTheRealm(final ShieldOfTheRealm card) {
+ super(card);
+ }
+
+ @Override
+ public ShieldOfTheRealm copy() {
+ return new ShieldOfTheRealm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/ShieldOfTheRighteous.java b/Mage.Sets/src/mage/cards/s/ShieldOfTheRighteous.java
index 124e21caf29..53807520d53 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldOfTheRighteous.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldOfTheRighteous.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class ShieldOfTheRighteous extends CardImpl {
+public final class ShieldOfTheRighteous extends CardImpl {
public ShieldOfTheRighteous(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldSphere.java b/Mage.Sets/src/mage/cards/s/ShieldSphere.java
index 291005ceac8..d4d7fbd906c 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldSphere.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldSphere.java
@@ -42,7 +42,7 @@ import mage.counters.BoostCounter;
*
* @author dustinconrad
*/
-public class ShieldSphere extends CardImpl {
+public final class ShieldSphere extends CardImpl {
public ShieldSphere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{0}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldWall.java b/Mage.Sets/src/mage/cards/s/ShieldWall.java
index 43e8cc0490f..1bd8d438055 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldWall.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldWall.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
* @author LoneFox
*/
-public class ShieldWall extends CardImpl {
+public final class ShieldWall extends CardImpl {
public ShieldWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldedAetherThief.java b/Mage.Sets/src/mage/cards/s/ShieldedAetherThief.java
index 5e4f90c6b70..8b00b3da0f2 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldedAetherThief.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldedAetherThief.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ShieldedAetherThief extends CardImpl {
+public final class ShieldedAetherThief extends CardImpl {
public ShieldedAetherThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldedByFaith.java b/Mage.Sets/src/mage/cards/s/ShieldedByFaith.java
index c51ed4bcee9..65c3a3879c4 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldedByFaith.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldedByFaith.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ShieldedByFaith extends CardImpl {
+public final class ShieldedByFaith extends CardImpl {
public ShieldedByFaith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldedPassage.java b/Mage.Sets/src/mage/cards/s/ShieldedPassage.java
index 2e7ae670ec1..b3c445a7d74 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldedPassage.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldedPassage.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ShieldedPassage extends CardImpl {
+public final class ShieldedPassage extends CardImpl {
public ShieldedPassage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldhideDragon.java b/Mage.Sets/src/mage/cards/s/ShieldhideDragon.java
index 329a6620be2..4dcb951fd61 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldhideDragon.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldhideDragon.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class ShieldhideDragon extends CardImpl {
+public final class ShieldhideDragon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other Dragon creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldingPlax.java b/Mage.Sets/src/mage/cards/s/ShieldingPlax.java
index b399450f15e..dcb15224535 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldingPlax.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldingPlax.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Wehk
*/
-public class ShieldingPlax extends CardImpl {
+public final class ShieldingPlax extends CardImpl {
private static final FilterObject filter = new FilterStackObject("spells or abilities your opponents control");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldmageAdvocate.java b/Mage.Sets/src/mage/cards/s/ShieldmageAdvocate.java
index 627d7fe9f73..9414da46dc2 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldmageAdvocate.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldmageAdvocate.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author L_J
*/
-public class ShieldmageAdvocate extends CardImpl {
+public final class ShieldmageAdvocate extends CardImpl {
public ShieldmageAdvocate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldmageElder.java b/Mage.Sets/src/mage/cards/s/ShieldmageElder.java
index 63c56953458..aa70eaf8173 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldmageElder.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldmageElder.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class ShieldmageElder extends CardImpl {
+public final class ShieldmageElder extends CardImpl {
private static final FilterControlledPermanent filter1 = new FilterControlledPermanent("untapped Clerics you control");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldmatesBlessing.java b/Mage.Sets/src/mage/cards/s/ShieldmatesBlessing.java
index 072661adb7d..5f63a81f6c8 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldmatesBlessing.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldmatesBlessing.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class ShieldmatesBlessing extends CardImpl {
+public final class ShieldmatesBlessing extends CardImpl {
public ShieldmatesBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShieldsOfVelisVel.java b/Mage.Sets/src/mage/cards/s/ShieldsOfVelisVel.java
index 3d503f5367b..ca0827291fd 100644
--- a/Mage.Sets/src/mage/cards/s/ShieldsOfVelisVel.java
+++ b/Mage.Sets/src/mage/cards/s/ShieldsOfVelisVel.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class ShieldsOfVelisVel extends CardImpl {
+public final class ShieldsOfVelisVel extends CardImpl {
public ShieldsOfVelisVel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShiftingBorders.java b/Mage.Sets/src/mage/cards/s/ShiftingBorders.java
index c93c3cccd96..130ebdf82be 100644
--- a/Mage.Sets/src/mage/cards/s/ShiftingBorders.java
+++ b/Mage.Sets/src/mage/cards/s/ShiftingBorders.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class ShiftingBorders extends CardImpl {
+public final class ShiftingBorders extends CardImpl {
public ShiftingBorders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShiftingLoyalties.java b/Mage.Sets/src/mage/cards/s/ShiftingLoyalties.java
index 7b96b06e5cd..87d569a262e 100644
--- a/Mage.Sets/src/mage/cards/s/ShiftingLoyalties.java
+++ b/Mage.Sets/src/mage/cards/s/ShiftingLoyalties.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class ShiftingLoyalties extends CardImpl {
+public final class ShiftingLoyalties extends CardImpl {
public ShiftingLoyalties(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShiftingShadow.java b/Mage.Sets/src/mage/cards/s/ShiftingShadow.java
index abd6d679b0f..d5038838e42 100644
--- a/Mage.Sets/src/mage/cards/s/ShiftingShadow.java
+++ b/Mage.Sets/src/mage/cards/s/ShiftingShadow.java
@@ -62,7 +62,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Saga
*/
-public class ShiftingShadow extends CardImpl {
+public final class ShiftingShadow extends CardImpl {
public ShiftingShadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShiftingSky.java b/Mage.Sets/src/mage/cards/s/ShiftingSky.java
index 27aa10a1509..b9c949e9ea9 100644
--- a/Mage.Sets/src/mage/cards/s/ShiftingSky.java
+++ b/Mage.Sets/src/mage/cards/s/ShiftingSky.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author Luna Skyrise
*/
-public class ShiftingSky extends CardImpl {
+public final class ShiftingSky extends CardImpl {
public ShiftingSky(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShiftingSliver.java b/Mage.Sets/src/mage/cards/s/ShiftingSliver.java
index 88e54462da6..2ca450cd414 100644
--- a/Mage.Sets/src/mage/cards/s/ShiftingSliver.java
+++ b/Mage.Sets/src/mage/cards/s/ShiftingSliver.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author cbt33
*/
-public class ShiftingSliver extends CardImpl {
+public final class ShiftingSliver extends CardImpl {
private static final FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("Slivers");
private static final FilterCreaturePermanent filterBlockedBy = new FilterCreaturePermanent("except by Slivers");
diff --git a/Mage.Sets/src/mage/cards/s/ShiftingWall.java b/Mage.Sets/src/mage/cards/s/ShiftingWall.java
index f82fec7ff82..c39f151222f 100644
--- a/Mage.Sets/src/mage/cards/s/ShiftingWall.java
+++ b/Mage.Sets/src/mage/cards/s/ShiftingWall.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class ShiftingWall extends CardImpl {
+public final class ShiftingWall extends CardImpl {
public ShiftingWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{X}");
diff --git a/Mage.Sets/src/mage/cards/s/ShiftyDoppelganger.java b/Mage.Sets/src/mage/cards/s/ShiftyDoppelganger.java
index 8375f565ded..5eb70ad0c1b 100644
--- a/Mage.Sets/src/mage/cards/s/ShiftyDoppelganger.java
+++ b/Mage.Sets/src/mage/cards/s/ShiftyDoppelganger.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class ShiftyDoppelganger extends CardImpl {
+public final class ShiftyDoppelganger extends CardImpl {
public ShiftyDoppelganger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShimatsuTheBloodcloaked.java b/Mage.Sets/src/mage/cards/s/ShimatsuTheBloodcloaked.java
index 373d4e07260..aa79a1ebdaf 100644
--- a/Mage.Sets/src/mage/cards/s/ShimatsuTheBloodcloaked.java
+++ b/Mage.Sets/src/mage/cards/s/ShimatsuTheBloodcloaked.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class ShimatsuTheBloodcloaked extends CardImpl {
+public final class ShimatsuTheBloodcloaked extends CardImpl {
public ShimatsuTheBloodcloaked(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShimianNightStalker.java b/Mage.Sets/src/mage/cards/s/ShimianNightStalker.java
index b7a024dfc44..bb7b1c2a56f 100644
--- a/Mage.Sets/src/mage/cards/s/ShimianNightStalker.java
+++ b/Mage.Sets/src/mage/cards/s/ShimianNightStalker.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801 & L_J
*/
-public class ShimianNightStalker extends CardImpl {
+public final class ShimianNightStalker extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creature");
diff --git a/Mage.Sets/src/mage/cards/s/ShimianSpecter.java b/Mage.Sets/src/mage/cards/s/ShimianSpecter.java
index 7de1ea8bc91..67f5879712d 100644
--- a/Mage.Sets/src/mage/cards/s/ShimianSpecter.java
+++ b/Mage.Sets/src/mage/cards/s/ShimianSpecter.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class ShimianSpecter extends CardImpl {
+public final class ShimianSpecter extends CardImpl {
public ShimianSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Shimmer.java b/Mage.Sets/src/mage/cards/s/Shimmer.java
index 2085b9e011f..4a24ec15346 100644
--- a/Mage.Sets/src/mage/cards/s/Shimmer.java
+++ b/Mage.Sets/src/mage/cards/s/Shimmer.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class Shimmer extends CardImpl {
+public final class Shimmer extends CardImpl {
public Shimmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShimmerMyr.java b/Mage.Sets/src/mage/cards/s/ShimmerMyr.java
index c7b793729a5..6b417e13876 100644
--- a/Mage.Sets/src/mage/cards/s/ShimmerMyr.java
+++ b/Mage.Sets/src/mage/cards/s/ShimmerMyr.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author Loki
*/
-public class ShimmerMyr extends CardImpl {
+public final class ShimmerMyr extends CardImpl {
public ShimmerMyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/ShimmeringBarrier.java b/Mage.Sets/src/mage/cards/s/ShimmeringBarrier.java
index 5dd569c1b1b..f8ad34072e9 100644
--- a/Mage.Sets/src/mage/cards/s/ShimmeringBarrier.java
+++ b/Mage.Sets/src/mage/cards/s/ShimmeringBarrier.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ShimmeringBarrier extends CardImpl {
+public final class ShimmeringBarrier extends CardImpl {
public ShimmeringBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShimmeringGlasskite.java b/Mage.Sets/src/mage/cards/s/ShimmeringGlasskite.java
index 50e0bc23dbb..f70ad4b6f96 100644
--- a/Mage.Sets/src/mage/cards/s/ShimmeringGlasskite.java
+++ b/Mage.Sets/src/mage/cards/s/ShimmeringGlasskite.java
@@ -46,7 +46,7 @@ import mage.target.TargetStackObject;
*
* @author LevelX2
*/
-public class ShimmeringGlasskite extends CardImpl {
+public final class ShimmeringGlasskite extends CardImpl {
public ShimmeringGlasskite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShimmeringGrotto.java b/Mage.Sets/src/mage/cards/s/ShimmeringGrotto.java
index 86b145d891a..cdab3925ae8 100644
--- a/Mage.Sets/src/mage/cards/s/ShimmeringGrotto.java
+++ b/Mage.Sets/src/mage/cards/s/ShimmeringGrotto.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ShimmeringGrotto extends CardImpl {
+public final class ShimmeringGrotto extends CardImpl {
public ShimmeringGrotto(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/ShimmeringMirage.java b/Mage.Sets/src/mage/cards/s/ShimmeringMirage.java
index 47761a07bd3..431cc07b4a8 100644
--- a/Mage.Sets/src/mage/cards/s/ShimmeringMirage.java
+++ b/Mage.Sets/src/mage/cards/s/ShimmeringMirage.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class ShimmeringMirage extends CardImpl {
+public final class ShimmeringMirage extends CardImpl {
public ShimmeringMirage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShimmeringWings.java b/Mage.Sets/src/mage/cards/s/ShimmeringWings.java
index c84277ef0f9..87c8d72c8b1 100644
--- a/Mage.Sets/src/mage/cards/s/ShimmeringWings.java
+++ b/Mage.Sets/src/mage/cards/s/ShimmeringWings.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ShimmeringWings extends CardImpl {
+public final class ShimmeringWings extends CardImpl {
public ShimmeringWings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShimmerscaleDrake.java b/Mage.Sets/src/mage/cards/s/ShimmerscaleDrake.java
index 664c526eec0..5b7f9cdf183 100644
--- a/Mage.Sets/src/mage/cards/s/ShimmerscaleDrake.java
+++ b/Mage.Sets/src/mage/cards/s/ShimmerscaleDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ShimmerscaleDrake extends CardImpl {
+public final class ShimmerscaleDrake extends CardImpl {
public ShimmerscaleDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShinenOfFearsChill.java b/Mage.Sets/src/mage/cards/s/ShinenOfFearsChill.java
index eccedfe621b..e6a9cab9ea5 100644
--- a/Mage.Sets/src/mage/cards/s/ShinenOfFearsChill.java
+++ b/Mage.Sets/src/mage/cards/s/ShinenOfFearsChill.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ShinenOfFearsChill extends CardImpl {
+public final class ShinenOfFearsChill extends CardImpl {
public ShinenOfFearsChill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShinenOfFlightsWings.java b/Mage.Sets/src/mage/cards/s/ShinenOfFlightsWings.java
index d6eca3cb9fb..e165d0df443 100644
--- a/Mage.Sets/src/mage/cards/s/ShinenOfFlightsWings.java
+++ b/Mage.Sets/src/mage/cards/s/ShinenOfFlightsWings.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ShinenOfFlightsWings extends CardImpl {
+public final class ShinenOfFlightsWings extends CardImpl {
public ShinenOfFlightsWings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShinenOfFurysFire.java b/Mage.Sets/src/mage/cards/s/ShinenOfFurysFire.java
index 4c655f466c9..b17b02aa207 100644
--- a/Mage.Sets/src/mage/cards/s/ShinenOfFurysFire.java
+++ b/Mage.Sets/src/mage/cards/s/ShinenOfFurysFire.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ShinenOfFurysFire extends CardImpl {
+public final class ShinenOfFurysFire extends CardImpl {
public ShinenOfFurysFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShinenOfLifesRoar.java b/Mage.Sets/src/mage/cards/s/ShinenOfLifesRoar.java
index 71485c262e4..a77d78216fd 100644
--- a/Mage.Sets/src/mage/cards/s/ShinenOfLifesRoar.java
+++ b/Mage.Sets/src/mage/cards/s/ShinenOfLifesRoar.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ShinenOfLifesRoar extends CardImpl {
+public final class ShinenOfLifesRoar extends CardImpl {
public ShinenOfLifesRoar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShinenOfStarsLight.java b/Mage.Sets/src/mage/cards/s/ShinenOfStarsLight.java
index 6efd5646530..1e4c74ee39e 100644
--- a/Mage.Sets/src/mage/cards/s/ShinenOfStarsLight.java
+++ b/Mage.Sets/src/mage/cards/s/ShinenOfStarsLight.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ShinenOfStarsLight extends CardImpl {
+public final class ShinenOfStarsLight extends CardImpl {
public ShinenOfStarsLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Shinewend.java b/Mage.Sets/src/mage/cards/s/Shinewend.java
index 6a9c7f17e0a..8428d10b866 100644
--- a/Mage.Sets/src/mage/cards/s/Shinewend.java
+++ b/Mage.Sets/src/mage/cards/s/Shinewend.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Loki
*/
-public class Shinewend extends CardImpl {
+public final class Shinewend extends CardImpl {
public Shinewend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShiningAerosaur.java b/Mage.Sets/src/mage/cards/s/ShiningAerosaur.java
index 62b5d94763e..735de3976f7 100644
--- a/Mage.Sets/src/mage/cards/s/ShiningAerosaur.java
+++ b/Mage.Sets/src/mage/cards/s/ShiningAerosaur.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class ShiningAerosaur extends CardImpl {
+public final class ShiningAerosaur extends CardImpl {
public ShiningAerosaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShiningShoal.java b/Mage.Sets/src/mage/cards/s/ShiningShoal.java
index f23e9e1e2c7..45819f0b13e 100644
--- a/Mage.Sets/src/mage/cards/s/ShiningShoal.java
+++ b/Mage.Sets/src/mage/cards/s/ShiningShoal.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class ShiningShoal extends CardImpl {
+public final class ShiningShoal extends CardImpl {
public ShiningShoal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShinkaGatekeeper.java b/Mage.Sets/src/mage/cards/s/ShinkaGatekeeper.java
index 50ce2f8957c..5cc51356887 100644
--- a/Mage.Sets/src/mage/cards/s/ShinkaGatekeeper.java
+++ b/Mage.Sets/src/mage/cards/s/ShinkaGatekeeper.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ShinkaGatekeeper extends CardImpl {
+public final class ShinkaGatekeeper extends CardImpl {
public ShinkaGatekeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShinkaTheBloodsoakedKeep.java b/Mage.Sets/src/mage/cards/s/ShinkaTheBloodsoakedKeep.java
index 5cbe5ba456d..50dc8c3e016 100644
--- a/Mage.Sets/src/mage/cards/s/ShinkaTheBloodsoakedKeep.java
+++ b/Mage.Sets/src/mage/cards/s/ShinkaTheBloodsoakedKeep.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class ShinkaTheBloodsoakedKeep extends CardImpl {
+public final class ShinkaTheBloodsoakedKeep extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature");
diff --git a/Mage.Sets/src/mage/cards/s/ShipbreakerKraken.java b/Mage.Sets/src/mage/cards/s/ShipbreakerKraken.java
index d50e6dbd19d..e52a67e4592 100644
--- a/Mage.Sets/src/mage/cards/s/ShipbreakerKraken.java
+++ b/Mage.Sets/src/mage/cards/s/ShipbreakerKraken.java
@@ -54,7 +54,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class ShipbreakerKraken extends CardImpl {
+public final class ShipbreakerKraken extends CardImpl {
public ShipbreakerKraken(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShipwreckLooter.java b/Mage.Sets/src/mage/cards/s/ShipwreckLooter.java
index 87278b4ff87..0f1cbb00769 100644
--- a/Mage.Sets/src/mage/cards/s/ShipwreckLooter.java
+++ b/Mage.Sets/src/mage/cards/s/ShipwreckLooter.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author TheElk801
*/
-public class ShipwreckLooter extends CardImpl {
+public final class ShipwreckLooter extends CardImpl {
public ShipwreckLooter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShipwreckMoray.java b/Mage.Sets/src/mage/cards/s/ShipwreckMoray.java
index d7bbd0eca23..ef1e64e5913 100644
--- a/Mage.Sets/src/mage/cards/s/ShipwreckMoray.java
+++ b/Mage.Sets/src/mage/cards/s/ShipwreckMoray.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author JRHerlehy
*/
-public class ShipwreckMoray extends CardImpl {
+public final class ShipwreckMoray extends CardImpl {
public ShipwreckMoray(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShipwreckSinger.java b/Mage.Sets/src/mage/cards/s/ShipwreckSinger.java
index d7854036b9e..1cb3ffed676 100644
--- a/Mage.Sets/src/mage/cards/s/ShipwreckSinger.java
+++ b/Mage.Sets/src/mage/cards/s/ShipwreckSinger.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ShipwreckSinger extends CardImpl {
+public final class ShipwreckSinger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
private static final FilterCreaturePermanent filterAttacking = new FilterCreaturePermanent("Attacking creatures");
diff --git a/Mage.Sets/src/mage/cards/s/ShireiShizosCaretaker.java b/Mage.Sets/src/mage/cards/s/ShireiShizosCaretaker.java
index 82897d049fd..70c9c2a2ae8 100644
--- a/Mage.Sets/src/mage/cards/s/ShireiShizosCaretaker.java
+++ b/Mage.Sets/src/mage/cards/s/ShireiShizosCaretaker.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class ShireiShizosCaretaker extends CardImpl {
+public final class ShireiShizosCaretaker extends CardImpl {
public ShireiShizosCaretaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShisatoWhisperingHunter.java b/Mage.Sets/src/mage/cards/s/ShisatoWhisperingHunter.java
index b4ba46d4be4..b83ec5c60dc 100644
--- a/Mage.Sets/src/mage/cards/s/ShisatoWhisperingHunter.java
+++ b/Mage.Sets/src/mage/cards/s/ShisatoWhisperingHunter.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX
*/
-public class ShisatoWhisperingHunter extends CardImpl {
+public final class ShisatoWhisperingHunter extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Snake");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanDragon.java b/Mage.Sets/src/mage/cards/s/ShivanDragon.java
index 319f06348cf..6ae4d5c1d79 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanDragon.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanDragon.java
@@ -41,7 +41,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class ShivanDragon extends CardImpl {
+public final class ShivanDragon extends CardImpl {
public ShivanDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanEmissary.java b/Mage.Sets/src/mage/cards/s/ShivanEmissary.java
index d07c696a10b..05738f7d476 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanEmissary.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanEmissary.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class ShivanEmissary extends CardImpl {
+public final class ShivanEmissary extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanFire.java b/Mage.Sets/src/mage/cards/s/ShivanFire.java
index 0a345764ac3..db0a8588abc 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanFire.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanFire.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author rscoates
*/
-public class ShivanFire extends CardImpl {
+public final class ShivanFire extends CardImpl {
public ShivanFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanGorge.java b/Mage.Sets/src/mage/cards/s/ShivanGorge.java
index 9d8c6c72957..cc74112ffc8 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanGorge.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanGorge.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ShivanGorge extends CardImpl {
+public final class ShivanGorge extends CardImpl {
public ShivanGorge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanHarvest.java b/Mage.Sets/src/mage/cards/s/ShivanHarvest.java
index ce73b12ec14..92e5c786a64 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanHarvest.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanHarvest.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author fireshoes
*/
-public class ShivanHarvest extends CardImpl {
+public final class ShivanHarvest extends CardImpl {
public ShivanHarvest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanHellkite.java b/Mage.Sets/src/mage/cards/s/ShivanHellkite.java
index ff5736e6313..0ba3d6289d5 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanHellkite.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanHellkite.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class ShivanHellkite extends CardImpl {
+public final class ShivanHellkite extends CardImpl {
public ShivanHellkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanMeteor.java b/Mage.Sets/src/mage/cards/s/ShivanMeteor.java
index 5d691575a8c..b198f0dd5f8 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanMeteor.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanMeteor.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author dustinconrad
*/
-public class ShivanMeteor extends CardImpl {
+public final class ShivanMeteor extends CardImpl {
public ShivanMeteor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanOasis.java b/Mage.Sets/src/mage/cards/s/ShivanOasis.java
index 70ad83be1c9..1c546dbbb63 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanOasis.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanOasis.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ShivanOasis extends CardImpl {
+public final class ShivanOasis extends CardImpl {
public ShivanOasis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanPhoenix.java b/Mage.Sets/src/mage/cards/s/ShivanPhoenix.java
index 1660c2521e8..e1558749e58 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanPhoenix.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanPhoenix.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class ShivanPhoenix extends CardImpl {
+public final class ShivanPhoenix extends CardImpl {
public ShivanPhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanRaptor.java b/Mage.Sets/src/mage/cards/s/ShivanRaptor.java
index bd590865ac0..b27d51e6e84 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanRaptor.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanRaptor.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class ShivanRaptor extends CardImpl {
+public final class ShivanRaptor extends CardImpl {
public ShivanRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanReef.java b/Mage.Sets/src/mage/cards/s/ShivanReef.java
index 6f2c6946172..c0a0d776dd9 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanReef.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanReef.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ShivanReef extends CardImpl {
+public final class ShivanReef extends CardImpl {
public ShivanReef(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanSandMage.java b/Mage.Sets/src/mage/cards/s/ShivanSandMage.java
index 7666241f034..71fae610c75 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanSandMage.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanSandMage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetPermanentOrSuspendedCard;
*
* @author L_J
*/
-public class ShivanSandMage extends CardImpl {
+public final class ShivanSandMage extends CardImpl {
public ShivanSandMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanWumpus.java b/Mage.Sets/src/mage/cards/s/ShivanWumpus.java
index bcd99ecad12..2416b8f48ff 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanWumpus.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanWumpus.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class ShivanWumpus extends CardImpl {
+public final class ShivanWumpus extends CardImpl {
public ShivanWumpus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanWurm.java b/Mage.Sets/src/mage/cards/s/ShivanWurm.java
index 227023b2293..66125cd2ac3 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanWurm.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanWurm.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ShivanWurm extends CardImpl {
+public final class ShivanWurm extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("red or green creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/ShivanZombie.java b/Mage.Sets/src/mage/cards/s/ShivanZombie.java
index 63652b1a193..1cb9bbea156 100644
--- a/Mage.Sets/src/mage/cards/s/ShivanZombie.java
+++ b/Mage.Sets/src/mage/cards/s/ShivanZombie.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Jgod
*/
-public class ShivanZombie extends CardImpl {
+public final class ShivanZombie extends CardImpl {
public ShivanZombie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShivsEmbrace.java b/Mage.Sets/src/mage/cards/s/ShivsEmbrace.java
index 816404ab6df..f17952762ba 100644
--- a/Mage.Sets/src/mage/cards/s/ShivsEmbrace.java
+++ b/Mage.Sets/src/mage/cards/s/ShivsEmbrace.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ShivsEmbrace extends CardImpl {
+public final class ShivsEmbrace extends CardImpl {
public ShivsEmbrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShizoDeathsStorehouse.java b/Mage.Sets/src/mage/cards/s/ShizoDeathsStorehouse.java
index b5b965d6fa8..0d0c7301dfc 100644
--- a/Mage.Sets/src/mage/cards/s/ShizoDeathsStorehouse.java
+++ b/Mage.Sets/src/mage/cards/s/ShizoDeathsStorehouse.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class ShizoDeathsStorehouse extends CardImpl {
+public final class ShizoDeathsStorehouse extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature");
diff --git a/Mage.Sets/src/mage/cards/s/ShizukoCallerOfAutumn.java b/Mage.Sets/src/mage/cards/s/ShizukoCallerOfAutumn.java
index 358a169aa44..75fff06e7ad 100644
--- a/Mage.Sets/src/mage/cards/s/ShizukoCallerOfAutumn.java
+++ b/Mage.Sets/src/mage/cards/s/ShizukoCallerOfAutumn.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ShizukoCallerOfAutumn extends CardImpl {
+public final class ShizukoCallerOfAutumn extends CardImpl {
public ShizukoCallerOfAutumn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
@@ -56,9 +56,9 @@ public class ShizukoCallerOfAutumn extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(3);
- // At the beginning of each player's upkeep, that player adds {G}{G}{G} to their mana pool. Until end of turn, this mana doesn't empty from that player's mana pool as steps and phases end.
+ // At the beginning of each player's upkeep, that player adds {G}{G}{G}. Until end of turn, this mana doesn't empty from that player's mana pool as steps and phases end.
Effect effect = new AddManaToManaPoolTargetControllerEffect(Mana.GreenMana(3), "that player", true);
- effect.setText("that player adds {G}{G}{G} to their mana pool. Until end of turn, this mana doesn't empty from that player's mana pool as steps and phases end");
+ effect.setText("that player adds {G}{G}{G}. Until end of turn, this mana doesn't empty from that player's mana pool as steps and phases end");
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.ANY, false));
}
diff --git a/Mage.Sets/src/mage/cards/s/ShoalSerpent.java b/Mage.Sets/src/mage/cards/s/ShoalSerpent.java
index 20e7d114cb4..e959a94a70f 100644
--- a/Mage.Sets/src/mage/cards/s/ShoalSerpent.java
+++ b/Mage.Sets/src/mage/cards/s/ShoalSerpent.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class ShoalSerpent extends CardImpl {
+public final class ShoalSerpent extends CardImpl {
public ShoalSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Shock.java b/Mage.Sets/src/mage/cards/s/Shock.java
index a4795b4c3f9..de7239ba400 100644
--- a/Mage.Sets/src/mage/cards/s/Shock.java
+++ b/Mage.Sets/src/mage/cards/s/Shock.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class Shock extends CardImpl {
+public final class Shock extends CardImpl {
public Shock (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShockTrooper.java b/Mage.Sets/src/mage/cards/s/ShockTrooper.java
index ca38a98518c..cdeeb268aad 100644
--- a/Mage.Sets/src/mage/cards/s/ShockTrooper.java
+++ b/Mage.Sets/src/mage/cards/s/ShockTrooper.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class ShockTrooper extends CardImpl {
+public final class ShockTrooper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/s/ShockTroops.java b/Mage.Sets/src/mage/cards/s/ShockTroops.java
index 6ef48b6abb2..f09a35ac96c 100644
--- a/Mage.Sets/src/mage/cards/s/ShockTroops.java
+++ b/Mage.Sets/src/mage/cards/s/ShockTroops.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class ShockTroops extends CardImpl {
+public final class ShockTroops extends CardImpl {
public ShockTroops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Shocker.java b/Mage.Sets/src/mage/cards/s/Shocker.java
index a9546567ebb..227f5f98993 100644
--- a/Mage.Sets/src/mage/cards/s/Shocker.java
+++ b/Mage.Sets/src/mage/cards/s/Shocker.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author markedagain
*/
-public class Shocker extends CardImpl {
+public final class Shocker extends CardImpl {
public Shocker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShockmawDragon.java b/Mage.Sets/src/mage/cards/s/ShockmawDragon.java
index 79a25a02053..e7000aa30ab 100644
--- a/Mage.Sets/src/mage/cards/s/ShockmawDragon.java
+++ b/Mage.Sets/src/mage/cards/s/ShockmawDragon.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class ShockmawDragon extends CardImpl {
+public final class ShockmawDragon extends CardImpl {
public ShockmawDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShoreKeeper.java b/Mage.Sets/src/mage/cards/s/ShoreKeeper.java
index 36c0826ec2c..8be8bb41ae3 100644
--- a/Mage.Sets/src/mage/cards/s/ShoreKeeper.java
+++ b/Mage.Sets/src/mage/cards/s/ShoreKeeper.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class ShoreKeeper extends CardImpl {
+public final class ShoreKeeper extends CardImpl {
public ShoreKeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShoreSnapper.java b/Mage.Sets/src/mage/cards/s/ShoreSnapper.java
index 1daf1b47690..aa7475746ea 100644
--- a/Mage.Sets/src/mage/cards/s/ShoreSnapper.java
+++ b/Mage.Sets/src/mage/cards/s/ShoreSnapper.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class ShoreSnapper extends CardImpl {
+public final class ShoreSnapper extends CardImpl {
public ShoreSnapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShorecrasherElemental.java b/Mage.Sets/src/mage/cards/s/ShorecrasherElemental.java
index 416b87e61a3..c3422b80207 100644
--- a/Mage.Sets/src/mage/cards/s/ShorecrasherElemental.java
+++ b/Mage.Sets/src/mage/cards/s/ShorecrasherElemental.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class ShorecrasherElemental extends CardImpl {
+public final class ShorecrasherElemental extends CardImpl {
public ShorecrasherElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShorecrasherMimic.java b/Mage.Sets/src/mage/cards/s/ShorecrasherMimic.java
index ac72bc7161a..fadf093e41c 100644
--- a/Mage.Sets/src/mage/cards/s/ShorecrasherMimic.java
+++ b/Mage.Sets/src/mage/cards/s/ShorecrasherMimic.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author jeffwadsworth
*
*/
-public class ShorecrasherMimic extends CardImpl {
+public final class ShorecrasherMimic extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a spell that's both green and blue");
diff --git a/Mage.Sets/src/mage/cards/s/ShorelineRaider.java b/Mage.Sets/src/mage/cards/s/ShorelineRaider.java
index 80f7632d0d7..2232d3d94e4 100644
--- a/Mage.Sets/src/mage/cards/s/ShorelineRaider.java
+++ b/Mage.Sets/src/mage/cards/s/ShorelineRaider.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
* @author LoneFox
*/
-public class ShorelineRaider extends CardImpl {
+public final class ShorelineRaider extends CardImpl {
private static final FilterCard filter = new FilterCard("Kavu");
diff --git a/Mage.Sets/src/mage/cards/s/ShorelineRanger.java b/Mage.Sets/src/mage/cards/s/ShorelineRanger.java
index b0e05427d6a..dcbc9375030 100644
--- a/Mage.Sets/src/mage/cards/s/ShorelineRanger.java
+++ b/Mage.Sets/src/mage/cards/s/ShorelineRanger.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class ShorelineRanger extends CardImpl {
+public final class ShorelineRanger extends CardImpl {
public ShorelineRanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShorelineSalvager.java b/Mage.Sets/src/mage/cards/s/ShorelineSalvager.java
index 1bf425a1e2a..5d16287ec5b 100644
--- a/Mage.Sets/src/mage/cards/s/ShorelineSalvager.java
+++ b/Mage.Sets/src/mage/cards/s/ShorelineSalvager.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author jeffwadsworth
*/
-public class ShorelineSalvager extends CardImpl {
+public final class ShorelineSalvager extends CardImpl {
private static final String rule = "Whenever Shoreline Salvager deals combat damage to a player, if you control an Island, you may draw a card.";
private static final FilterPermanent filter = new FilterPermanent("Island");
diff --git a/Mage.Sets/src/mage/cards/s/ShortSword.java b/Mage.Sets/src/mage/cards/s/ShortSword.java
index c997c92901d..0332084fbc2 100644
--- a/Mage.Sets/src/mage/cards/s/ShortSword.java
+++ b/Mage.Sets/src/mage/cards/s/ShortSword.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class ShortSword extends CardImpl {
+public final class ShortSword extends CardImpl {
public ShortSword(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/s/ShoulderToShoulder.java b/Mage.Sets/src/mage/cards/s/ShoulderToShoulder.java
index 3304718e3bf..ce4d9751c88 100644
--- a/Mage.Sets/src/mage/cards/s/ShoulderToShoulder.java
+++ b/Mage.Sets/src/mage/cards/s/ShoulderToShoulder.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class ShoulderToShoulder extends CardImpl {
+public final class ShoulderToShoulder extends CardImpl {
public ShoulderToShoulder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShovingMatch.java b/Mage.Sets/src/mage/cards/s/ShovingMatch.java
index 0f059b9928a..d41fdb37f08 100644
--- a/Mage.Sets/src/mage/cards/s/ShovingMatch.java
+++ b/Mage.Sets/src/mage/cards/s/ShovingMatch.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class ShovingMatch extends CardImpl {
+public final class ShovingMatch extends CardImpl {
public ShovingMatch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShowAndTell.java b/Mage.Sets/src/mage/cards/s/ShowAndTell.java
index b1ff6bb5714..9f8a8de7b6c 100644
--- a/Mage.Sets/src/mage/cards/s/ShowAndTell.java
+++ b/Mage.Sets/src/mage/cards/s/ShowAndTell.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInHand;
*
* @author North
*/
-public class ShowAndTell extends CardImpl {
+public final class ShowAndTell extends CardImpl {
public ShowAndTell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShowOfDominance.java b/Mage.Sets/src/mage/cards/s/ShowOfDominance.java
index 3bc3b5962e5..b620f30bf12 100644
--- a/Mage.Sets/src/mage/cards/s/ShowOfDominance.java
+++ b/Mage.Sets/src/mage/cards/s/ShowOfDominance.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class ShowOfDominance extends CardImpl {
+public final class ShowOfDominance extends CardImpl {
public ShowOfDominance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShowOfValor.java b/Mage.Sets/src/mage/cards/s/ShowOfValor.java
index 2e840672c87..bdfd2424481 100644
--- a/Mage.Sets/src/mage/cards/s/ShowOfValor.java
+++ b/Mage.Sets/src/mage/cards/s/ShowOfValor.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ShowOfValor extends CardImpl {
+public final class ShowOfValor extends CardImpl {
public ShowOfValor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShowerOfCoals.java b/Mage.Sets/src/mage/cards/s/ShowerOfCoals.java
index f3eda970320..4e6a3b4a1ca 100644
--- a/Mage.Sets/src/mage/cards/s/ShowerOfCoals.java
+++ b/Mage.Sets/src/mage/cards/s/ShowerOfCoals.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author cbt33, LevelX2 (Kirtar's Wrath)
*/
-public class ShowerOfCoals extends CardImpl {
+public final class ShowerOfCoals extends CardImpl {
public ShowerOfCoals(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/ShowerOfSparks.java b/Mage.Sets/src/mage/cards/s/ShowerOfSparks.java
index 4be51a128b1..fa2531729d2 100644
--- a/Mage.Sets/src/mage/cards/s/ShowerOfSparks.java
+++ b/Mage.Sets/src/mage/cards/s/ShowerOfSparks.java
@@ -41,7 +41,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class ShowerOfSparks extends CardImpl {
+public final class ShowerOfSparks extends CardImpl {
public ShowerOfSparks(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Showstopper.java b/Mage.Sets/src/mage/cards/s/Showstopper.java
index e0d67689fe9..4717e43bca4 100644
--- a/Mage.Sets/src/mage/cards/s/Showstopper.java
+++ b/Mage.Sets/src/mage/cards/s/Showstopper.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
-public class Showstopper extends CardImpl {
+public final class Showstopper extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/ShrapnelBlast.java b/Mage.Sets/src/mage/cards/s/ShrapnelBlast.java
index d8e77f6a0b9..999528141d2 100644
--- a/Mage.Sets/src/mage/cards/s/ShrapnelBlast.java
+++ b/Mage.Sets/src/mage/cards/s/ShrapnelBlast.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author anonymous
*/
-public class ShrapnelBlast extends CardImpl {
+public final class ShrapnelBlast extends CardImpl {
private static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/s/ShredMemory.java b/Mage.Sets/src/mage/cards/s/ShredMemory.java
index 5d685593dc0..f17512a89aa 100644
--- a/Mage.Sets/src/mage/cards/s/ShredMemory.java
+++ b/Mage.Sets/src/mage/cards/s/ShredMemory.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author LevelX2
*/
-public class ShredMemory extends CardImpl {
+public final class ShredMemory extends CardImpl {
public ShredMemory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShreddingWinds.java b/Mage.Sets/src/mage/cards/s/ShreddingWinds.java
index b6213d2fe6b..fab790c7f29 100644
--- a/Mage.Sets/src/mage/cards/s/ShreddingWinds.java
+++ b/Mage.Sets/src/mage/cards/s/ShreddingWinds.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ShreddingWinds extends CardImpl {
+public final class ShreddingWinds extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
static {
diff --git a/Mage.Sets/src/mage/cards/s/ShredsOfSanity.java b/Mage.Sets/src/mage/cards/s/ShredsOfSanity.java
index cdad882648b..919c6a99cc2 100644
--- a/Mage.Sets/src/mage/cards/s/ShredsOfSanity.java
+++ b/Mage.Sets/src/mage/cards/s/ShredsOfSanity.java
@@ -49,7 +49,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class ShredsOfSanity extends CardImpl {
+public final class ShredsOfSanity extends CardImpl {
private final static FilterCard filterInstant = new FilterCard("an instant card in your graveyard");
private final static FilterCard filterSorcery = new FilterCard("a sorcery card in your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/ShrewdHatchling.java b/Mage.Sets/src/mage/cards/s/ShrewdHatchling.java
index a9176412931..8280a2fef0c 100644
--- a/Mage.Sets/src/mage/cards/s/ShrewdHatchling.java
+++ b/Mage.Sets/src/mage/cards/s/ShrewdHatchling.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*/
-public class ShrewdHatchling extends CardImpl {
+public final class ShrewdHatchling extends CardImpl {
private static final FilterSpell filter = new FilterSpell("blue spell");
private static final FilterSpell filter2 = new FilterSpell("red spell");
diff --git a/Mage.Sets/src/mage/cards/s/ShrewdNegotiation.java b/Mage.Sets/src/mage/cards/s/ShrewdNegotiation.java
index 6aa89694f82..ec9f63203af 100644
--- a/Mage.Sets/src/mage/cards/s/ShrewdNegotiation.java
+++ b/Mage.Sets/src/mage/cards/s/ShrewdNegotiation.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class ShrewdNegotiation extends CardImpl {
+public final class ShrewdNegotiation extends CardImpl {
private static final String rule = "Exchange control of target artifact you control and target artifact or creature you don't control";
diff --git a/Mage.Sets/src/mage/cards/s/ShriekOfDread.java b/Mage.Sets/src/mage/cards/s/ShriekOfDread.java
index a47d4ef21ed..09e4519b573 100644
--- a/Mage.Sets/src/mage/cards/s/ShriekOfDread.java
+++ b/Mage.Sets/src/mage/cards/s/ShriekOfDread.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ShriekOfDread extends CardImpl {
+public final class ShriekOfDread extends CardImpl {
public ShriekOfDread(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShriekRaptor.java b/Mage.Sets/src/mage/cards/s/ShriekRaptor.java
index 2e312ce0732..a1c4bfa62c8 100644
--- a/Mage.Sets/src/mage/cards/s/ShriekRaptor.java
+++ b/Mage.Sets/src/mage/cards/s/ShriekRaptor.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ShriekRaptor extends CardImpl {
+public final class ShriekRaptor extends CardImpl {
public ShriekRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Shriekgeist.java b/Mage.Sets/src/mage/cards/s/Shriekgeist.java
index 3007b1fabc1..d85e8359089 100644
--- a/Mage.Sets/src/mage/cards/s/Shriekgeist.java
+++ b/Mage.Sets/src/mage/cards/s/Shriekgeist.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class Shriekgeist extends CardImpl {
+public final class Shriekgeist extends CardImpl {
public Shriekgeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Shriekhorn.java b/Mage.Sets/src/mage/cards/s/Shriekhorn.java
index e97c1eeedf0..8fb7271f852 100644
--- a/Mage.Sets/src/mage/cards/s/Shriekhorn.java
+++ b/Mage.Sets/src/mage/cards/s/Shriekhorn.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class Shriekhorn extends CardImpl {
+public final class Shriekhorn extends CardImpl {
public Shriekhorn (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/ShriekingAffliction.java b/Mage.Sets/src/mage/cards/s/ShriekingAffliction.java
index e7b40a092bf..e1d85165d24 100644
--- a/Mage.Sets/src/mage/cards/s/ShriekingAffliction.java
+++ b/Mage.Sets/src/mage/cards/s/ShriekingAffliction.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
* @author LevelX2
*/
-public class ShriekingAffliction extends CardImpl {
+public final class ShriekingAffliction extends CardImpl {
static final String rule = "At the beginning of the upkeep of enchanted creature's controller, that player loses 2 life";
diff --git a/Mage.Sets/src/mage/cards/s/ShriekingDrake.java b/Mage.Sets/src/mage/cards/s/ShriekingDrake.java
index a835083d9d0..61ed0ecf2b9 100644
--- a/Mage.Sets/src/mage/cards/s/ShriekingDrake.java
+++ b/Mage.Sets/src/mage/cards/s/ShriekingDrake.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Plopman
*/
-public class ShriekingDrake extends CardImpl {
+public final class ShriekingDrake extends CardImpl {
public ShriekingDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShriekingGrotesque.java b/Mage.Sets/src/mage/cards/s/ShriekingGrotesque.java
index 40ebcf7e532..dab0fe6b6f5 100644
--- a/Mage.Sets/src/mage/cards/s/ShriekingGrotesque.java
+++ b/Mage.Sets/src/mage/cards/s/ShriekingGrotesque.java
@@ -48,7 +48,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
* @author LoneFox
*/
-public class ShriekingGrotesque extends CardImpl {
+public final class ShriekingGrotesque extends CardImpl {
public ShriekingGrotesque(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShriekingMogg.java b/Mage.Sets/src/mage/cards/s/ShriekingMogg.java
index 325f13feb5d..869b2c75e7d 100644
--- a/Mage.Sets/src/mage/cards/s/ShriekingMogg.java
+++ b/Mage.Sets/src/mage/cards/s/ShriekingMogg.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author BursegSardaukar
*/
-public class ShriekingMogg extends CardImpl {
+public final class ShriekingMogg extends CardImpl {
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("all other creatures");
diff --git a/Mage.Sets/src/mage/cards/s/ShriekingSpecter.java b/Mage.Sets/src/mage/cards/s/ShriekingSpecter.java
index 7a6d09eb99a..060ac69d1f4 100644
--- a/Mage.Sets/src/mage/cards/s/ShriekingSpecter.java
+++ b/Mage.Sets/src/mage/cards/s/ShriekingSpecter.java
@@ -42,7 +42,7 @@ import mage.constants.SetTargetPointer;
*
* @author fireshoes
*/
-public class ShriekingSpecter extends CardImpl {
+public final class ShriekingSpecter extends CardImpl {
public ShriekingSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Shriekmaw.java b/Mage.Sets/src/mage/cards/s/Shriekmaw.java
index dea6d6f6c42..a7af43ba876 100644
--- a/Mage.Sets/src/mage/cards/s/Shriekmaw.java
+++ b/Mage.Sets/src/mage/cards/s/Shriekmaw.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Shriekmaw extends CardImpl {
+public final class Shriekmaw extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact, nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/ShrikeHarpy.java b/Mage.Sets/src/mage/cards/s/ShrikeHarpy.java
index 9cba215e221..18341b70b64 100644
--- a/Mage.Sets/src/mage/cards/s/ShrikeHarpy.java
+++ b/Mage.Sets/src/mage/cards/s/ShrikeHarpy.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class ShrikeHarpy extends CardImpl {
+public final class ShrikeHarpy extends CardImpl {
public ShrikeHarpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShrillHowler.java b/Mage.Sets/src/mage/cards/s/ShrillHowler.java
index c165fe899a4..e878550ac15 100644
--- a/Mage.Sets/src/mage/cards/s/ShrillHowler.java
+++ b/Mage.Sets/src/mage/cards/s/ShrillHowler.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ShrillHowler extends CardImpl {
+public final class ShrillHowler extends CardImpl {
public ShrillHowler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ShrineOfBoundlessGrowth.java b/Mage.Sets/src/mage/cards/s/ShrineOfBoundlessGrowth.java
index e7f08b60cae..093e8976fba 100644
--- a/Mage.Sets/src/mage/cards/s/ShrineOfBoundlessGrowth.java
+++ b/Mage.Sets/src/mage/cards/s/ShrineOfBoundlessGrowth.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class ShrineOfBoundlessGrowth extends CardImpl {
+public final class ShrineOfBoundlessGrowth extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a green spell");
diff --git a/Mage.Sets/src/mage/cards/s/ShrineOfBurningRage.java b/Mage.Sets/src/mage/cards/s/ShrineOfBurningRage.java
index 7cffbbeaacc..50f0f84cf31 100644
--- a/Mage.Sets/src/mage/cards/s/ShrineOfBurningRage.java
+++ b/Mage.Sets/src/mage/cards/s/ShrineOfBurningRage.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward
*/
-public class ShrineOfBurningRage extends CardImpl {
+public final class ShrineOfBurningRage extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a red spell");
static {
diff --git a/Mage.Sets/src/mage/cards/s/ShrineOfLimitlessPower.java b/Mage.Sets/src/mage/cards/s/ShrineOfLimitlessPower.java
index cd7a184b53f..9b6c1d36f93 100644
--- a/Mage.Sets/src/mage/cards/s/ShrineOfLimitlessPower.java
+++ b/Mage.Sets/src/mage/cards/s/ShrineOfLimitlessPower.java
@@ -53,7 +53,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class ShrineOfLimitlessPower extends CardImpl {
+public final class ShrineOfLimitlessPower extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a black spell");
diff --git a/Mage.Sets/src/mage/cards/s/ShrineOfLoyalLegions.java b/Mage.Sets/src/mage/cards/s/ShrineOfLoyalLegions.java
index 4e93614e702..9fae4a7cebf 100644
--- a/Mage.Sets/src/mage/cards/s/ShrineOfLoyalLegions.java
+++ b/Mage.Sets/src/mage/cards/s/ShrineOfLoyalLegions.java
@@ -53,7 +53,7 @@ import mage.game.permanent.token.MyrToken;
*
* @author North
*/
-public class ShrineOfLoyalLegions extends CardImpl {
+public final class ShrineOfLoyalLegions extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a white spell");
diff --git a/Mage.Sets/src/mage/cards/s/ShrineOfPiercingVision.java b/Mage.Sets/src/mage/cards/s/ShrineOfPiercingVision.java
index 99e9b01ac6c..7d8c17f2717 100644
--- a/Mage.Sets/src/mage/cards/s/ShrineOfPiercingVision.java
+++ b/Mage.Sets/src/mage/cards/s/ShrineOfPiercingVision.java
@@ -59,7 +59,7 @@ import mage.target.TargetCard;
*
* @author North
*/
-public class ShrineOfPiercingVision extends CardImpl {
+public final class ShrineOfPiercingVision extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a blue spell");
diff --git a/Mage.Sets/src/mage/cards/s/ShrineOfTheForsakenGods.java b/Mage.Sets/src/mage/cards/s/ShrineOfTheForsakenGods.java
index 962960e40cd..814e512e6bd 100644
--- a/Mage.Sets/src/mage/cards/s/ShrineOfTheForsakenGods.java
+++ b/Mage.Sets/src/mage/cards/s/ShrineOfTheForsakenGods.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
/**
* @author LevelX2
*/
-public class ShrineOfTheForsakenGods extends CardImpl {
+public final class ShrineOfTheForsakenGods extends CardImpl {
private static final FilterSpell filter = new FilterSpell("colorless spells");
diff --git a/Mage.Sets/src/mage/cards/s/Shrink.java b/Mage.Sets/src/mage/cards/s/Shrink.java
index 913b5e4a64b..4c5632d87db 100644
--- a/Mage.Sets/src/mage/cards/s/Shrink.java
+++ b/Mage.Sets/src/mage/cards/s/Shrink.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author choiseul11
*/
-public class Shrink extends CardImpl {
+public final class Shrink extends CardImpl {
public Shrink(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Shrivel.java b/Mage.Sets/src/mage/cards/s/Shrivel.java
index 24323926f09..5004bfeb4d0 100644
--- a/Mage.Sets/src/mage/cards/s/Shrivel.java
+++ b/Mage.Sets/src/mage/cards/s/Shrivel.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author North
*/
-public class Shrivel extends CardImpl {
+public final class Shrivel extends CardImpl {
public Shrivel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShrivelingRot.java b/Mage.Sets/src/mage/cards/s/ShrivelingRot.java
index 55c73743425..4c6a0633768 100644
--- a/Mage.Sets/src/mage/cards/s/ShrivelingRot.java
+++ b/Mage.Sets/src/mage/cards/s/ShrivelingRot.java
@@ -53,7 +53,7 @@ import mage.game.events.ZoneChangeEvent;
*
* @author L_J
*/
-public class ShrivelingRot extends CardImpl {
+public final class ShrivelingRot extends CardImpl {
public ShrivelingRot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShroudedLore.java b/Mage.Sets/src/mage/cards/s/ShroudedLore.java
index 10ea84bef88..bd4774e4436 100644
--- a/Mage.Sets/src/mage/cards/s/ShroudedLore.java
+++ b/Mage.Sets/src/mage/cards/s/ShroudedLore.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author LoneFox
*/
-public class ShroudedLore extends CardImpl {
+public final class ShroudedLore extends CardImpl {
public ShroudedLore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/ShroudedSerpent.java b/Mage.Sets/src/mage/cards/s/ShroudedSerpent.java
index 7730f739d74..96ddea20af1 100644
--- a/Mage.Sets/src/mage/cards/s/ShroudedSerpent.java
+++ b/Mage.Sets/src/mage/cards/s/ShroudedSerpent.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author L_J
*/
-public class ShroudedSerpent extends CardImpl {
+public final class ShroudedSerpent extends CardImpl {
public ShroudedSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/ShuCavalry.java b/Mage.Sets/src/mage/cards/s/ShuCavalry.java
index a962e6a29fb..5f7b7b7aba5 100644
--- a/Mage.Sets/src/mage/cards/s/ShuCavalry.java
+++ b/Mage.Sets/src/mage/cards/s/ShuCavalry.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ShuCavalry extends CardImpl {
+public final class ShuCavalry extends CardImpl {
public ShuCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShuDefender.java b/Mage.Sets/src/mage/cards/s/ShuDefender.java
index b7299bb1c7c..7cd09e792f2 100644
--- a/Mage.Sets/src/mage/cards/s/ShuDefender.java
+++ b/Mage.Sets/src/mage/cards/s/ShuDefender.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class ShuDefender extends CardImpl {
+public final class ShuDefender extends CardImpl {
public ShuDefender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShuEliteCompanions.java b/Mage.Sets/src/mage/cards/s/ShuEliteCompanions.java
index 5e159869051..2fe7a13aba0 100644
--- a/Mage.Sets/src/mage/cards/s/ShuEliteCompanions.java
+++ b/Mage.Sets/src/mage/cards/s/ShuEliteCompanions.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ShuEliteCompanions extends CardImpl {
+public final class ShuEliteCompanions extends CardImpl {
public ShuEliteCompanions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShuEliteInfantry.java b/Mage.Sets/src/mage/cards/s/ShuEliteInfantry.java
index 23b86af9ac5..5d3cc1360a5 100644
--- a/Mage.Sets/src/mage/cards/s/ShuEliteInfantry.java
+++ b/Mage.Sets/src/mage/cards/s/ShuEliteInfantry.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ShuEliteInfantry extends CardImpl {
+public final class ShuEliteInfantry extends CardImpl {
public ShuEliteInfantry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShuFarmer.java b/Mage.Sets/src/mage/cards/s/ShuFarmer.java
index bfe2dc36c88..3def655008a 100644
--- a/Mage.Sets/src/mage/cards/s/ShuFarmer.java
+++ b/Mage.Sets/src/mage/cards/s/ShuFarmer.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ShuFarmer extends CardImpl {
+public final class ShuFarmer extends CardImpl {
public ShuFarmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShuFootSoldiers.java b/Mage.Sets/src/mage/cards/s/ShuFootSoldiers.java
index d09878a7c33..1bfaa969b23 100644
--- a/Mage.Sets/src/mage/cards/s/ShuFootSoldiers.java
+++ b/Mage.Sets/src/mage/cards/s/ShuFootSoldiers.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ShuFootSoldiers extends CardImpl {
+public final class ShuFootSoldiers extends CardImpl {
public ShuFootSoldiers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShuGeneral.java b/Mage.Sets/src/mage/cards/s/ShuGeneral.java
index c4f58cda997..c3b24b788b7 100644
--- a/Mage.Sets/src/mage/cards/s/ShuGeneral.java
+++ b/Mage.Sets/src/mage/cards/s/ShuGeneral.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ShuGeneral extends CardImpl {
+public final class ShuGeneral extends CardImpl {
public ShuGeneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShuGrainCaravan.java b/Mage.Sets/src/mage/cards/s/ShuGrainCaravan.java
index 2e1f88c9548..e3ed11376e5 100644
--- a/Mage.Sets/src/mage/cards/s/ShuGrainCaravan.java
+++ b/Mage.Sets/src/mage/cards/s/ShuGrainCaravan.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ShuGrainCaravan extends CardImpl {
+public final class ShuGrainCaravan extends CardImpl {
public ShuGrainCaravan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShuSoldierFarmers.java b/Mage.Sets/src/mage/cards/s/ShuSoldierFarmers.java
index 1e58333ba71..7734b195370 100644
--- a/Mage.Sets/src/mage/cards/s/ShuSoldierFarmers.java
+++ b/Mage.Sets/src/mage/cards/s/ShuSoldierFarmers.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ShuSoldierFarmers extends CardImpl {
+public final class ShuSoldierFarmers extends CardImpl {
public ShuSoldierFarmers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/ShuYunTheSilentTempest.java b/Mage.Sets/src/mage/cards/s/ShuYunTheSilentTempest.java
index a4947565a1d..e23db075583 100644
--- a/Mage.Sets/src/mage/cards/s/ShuYunTheSilentTempest.java
+++ b/Mage.Sets/src/mage/cards/s/ShuYunTheSilentTempest.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ShuYunTheSilentTempest extends CardImpl {
+public final class ShuYunTheSilentTempest extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/s/Shuko.java b/Mage.Sets/src/mage/cards/s/Shuko.java
index db76a5e9335..356b8cc94c3 100644
--- a/Mage.Sets/src/mage/cards/s/Shuko.java
+++ b/Mage.Sets/src/mage/cards/s/Shuko.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Shuko extends CardImpl {
+public final class Shuko extends CardImpl {
public Shuko(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/Shunt.java b/Mage.Sets/src/mage/cards/s/Shunt.java
index 4e974177a44..ec58190224e 100644
--- a/Mage.Sets/src/mage/cards/s/Shunt.java
+++ b/Mage.Sets/src/mage/cards/s/Shunt.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Shunt extends CardImpl {
+public final class Shunt extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell with a single target");
diff --git a/Mage.Sets/src/mage/cards/s/Shuriken.java b/Mage.Sets/src/mage/cards/s/Shuriken.java
index 35b5bbedac0..e9f87c569eb 100644
--- a/Mage.Sets/src/mage/cards/s/Shuriken.java
+++ b/Mage.Sets/src/mage/cards/s/Shuriken.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class Shuriken extends CardImpl {
+public final class Shuriken extends CardImpl {
public Shuriken(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/Shyft.java b/Mage.Sets/src/mage/cards/s/Shyft.java
index ea0e075411a..1a44ec73d63 100644
--- a/Mage.Sets/src/mage/cards/s/Shyft.java
+++ b/Mage.Sets/src/mage/cards/s/Shyft.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class Shyft extends CardImpl {
+public final class Shyft extends CardImpl {
public Shyft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SibilantSpirit.java b/Mage.Sets/src/mage/cards/s/SibilantSpirit.java
index 8720b40d107..b53baa66775 100644
--- a/Mage.Sets/src/mage/cards/s/SibilantSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/SibilantSpirit.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author Quercitron
*/
-public class SibilantSpirit extends CardImpl {
+public final class SibilantSpirit extends CardImpl {
public SibilantSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SibsigHost.java b/Mage.Sets/src/mage/cards/s/SibsigHost.java
index 66de94cb319..591f300f054 100644
--- a/Mage.Sets/src/mage/cards/s/SibsigHost.java
+++ b/Mage.Sets/src/mage/cards/s/SibsigHost.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class SibsigHost extends CardImpl {
+public final class SibsigHost extends CardImpl {
public SibsigHost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SibsigIcebreakers.java b/Mage.Sets/src/mage/cards/s/SibsigIcebreakers.java
index 427d6bfd503..af9af72a57d 100644
--- a/Mage.Sets/src/mage/cards/s/SibsigIcebreakers.java
+++ b/Mage.Sets/src/mage/cards/s/SibsigIcebreakers.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SibsigIcebreakers extends CardImpl {
+public final class SibsigIcebreakers extends CardImpl {
public SibsigIcebreakers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SibsigMuckdraggers.java b/Mage.Sets/src/mage/cards/s/SibsigMuckdraggers.java
index 660a16c9edc..e1a18455c8e 100644
--- a/Mage.Sets/src/mage/cards/s/SibsigMuckdraggers.java
+++ b/Mage.Sets/src/mage/cards/s/SibsigMuckdraggers.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class SibsigMuckdraggers extends CardImpl {
+public final class SibsigMuckdraggers extends CardImpl {
public SibsigMuckdraggers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{8}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SickAndTired.java b/Mage.Sets/src/mage/cards/s/SickAndTired.java
index f94bcd533f8..1579f35fcdc 100644
--- a/Mage.Sets/src/mage/cards/s/SickAndTired.java
+++ b/Mage.Sets/src/mage/cards/s/SickAndTired.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class SickAndTired extends CardImpl {
+public final class SickAndTired extends CardImpl {
public SickAndTired(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Sicken.java b/Mage.Sets/src/mage/cards/s/Sicken.java
index 7a8c9122852..403feea7bcd 100644
--- a/Mage.Sets/src/mage/cards/s/Sicken.java
+++ b/Mage.Sets/src/mage/cards/s/Sicken.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class Sicken extends CardImpl {
+public final class Sicken extends CardImpl {
public Sicken(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SickeningDreams.java b/Mage.Sets/src/mage/cards/s/SickeningDreams.java
index 5e9b1798841..3084dd0f352 100644
--- a/Mage.Sets/src/mage/cards/s/SickeningDreams.java
+++ b/Mage.Sets/src/mage/cards/s/SickeningDreams.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class SickeningDreams extends CardImpl {
+public final class SickeningDreams extends CardImpl {
public SickeningDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SickeningShoal.java b/Mage.Sets/src/mage/cards/s/SickeningShoal.java
index 96bf88f4623..4259109a5b1 100644
--- a/Mage.Sets/src/mage/cards/s/SickeningShoal.java
+++ b/Mage.Sets/src/mage/cards/s/SickeningShoal.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SickeningShoal extends CardImpl {
+public final class SickeningShoal extends CardImpl {
public SickeningShoal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SickleDancer.java b/Mage.Sets/src/mage/cards/s/SickleDancer.java
new file mode 100644
index 00000000000..f7831961031
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/SickleDancer.java
@@ -0,0 +1,80 @@
+/*
+ * 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.common.AttacksTriggeredAbility;
+import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
+import mage.abilities.decorator.ConditionalTriggeredAbility;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.filter.common.FilterTeamPermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class SickleDancer extends CardImpl {
+
+ private static final FilterTeamPermanent filter = new FilterTeamPermanent(SubType.WARRIOR, "Warrior creature");
+
+ static {
+ filter.add(new AnotherPredicate());
+ }
+
+ public SickleDancer(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(2);
+
+ // Whenever Sickle Dancer attacks, if your team controls another Warrior, Sickle Dancer gets +1/+1 until end of turn.
+ this.addAbility(new ConditionalTriggeredAbility(
+ new AttacksTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), false),
+ new PermanentsOnTheBattlefieldCondition(filter),
+ "Whenever {this} attacks, if your team controls another Warrior, {this} gets +1/+1 until end of turn."
+ ));
+ }
+
+ public SickleDancer(final SickleDancer card) {
+ super(card);
+ }
+
+ @Override
+ public SickleDancer copy() {
+ return new SickleDancer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/SickleRipper.java b/Mage.Sets/src/mage/cards/s/SickleRipper.java
index 18184411d0c..bf676ccbae4 100644
--- a/Mage.Sets/src/mage/cards/s/SickleRipper.java
+++ b/Mage.Sets/src/mage/cards/s/SickleRipper.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SickleRipper extends CardImpl {
+public final class SickleRipper extends CardImpl {
public SickleRipper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Sickleslicer.java b/Mage.Sets/src/mage/cards/s/Sickleslicer.java
index e302c797f9b..4c64b0c2016 100644
--- a/Mage.Sets/src/mage/cards/s/Sickleslicer.java
+++ b/Mage.Sets/src/mage/cards/s/Sickleslicer.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Sickleslicer extends CardImpl {
+public final class Sickleslicer extends CardImpl {
public Sickleslicer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SidarJabari.java b/Mage.Sets/src/mage/cards/s/SidarJabari.java
index f0c817878c8..b18000f876c 100644
--- a/Mage.Sets/src/mage/cards/s/SidarJabari.java
+++ b/Mage.Sets/src/mage/cards/s/SidarJabari.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SidarJabari extends CardImpl {
+public final class SidarJabari extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/s/SidarKondoOfJamuraa.java b/Mage.Sets/src/mage/cards/s/SidarKondoOfJamuraa.java
index fc3c2c5a753..1c255756e2e 100644
--- a/Mage.Sets/src/mage/cards/s/SidarKondoOfJamuraa.java
+++ b/Mage.Sets/src/mage/cards/s/SidarKondoOfJamuraa.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class SidarKondoOfJamuraa extends CardImpl {
+public final class SidarKondoOfJamuraa extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/s/Sideswipe.java b/Mage.Sets/src/mage/cards/s/Sideswipe.java
index 991a04157a8..a3e4046df23 100644
--- a/Mage.Sets/src/mage/cards/s/Sideswipe.java
+++ b/Mage.Sets/src/mage/cards/s/Sideswipe.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Sideswipe extends CardImpl {
+public final class Sideswipe extends CardImpl {
private static final FilterSpell filter = new FilterSpell("Arcane spell");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SidewinderNaga.java b/Mage.Sets/src/mage/cards/s/SidewinderNaga.java
index 1ebed51f781..d19b57a213e 100644
--- a/Mage.Sets/src/mage/cards/s/SidewinderNaga.java
+++ b/Mage.Sets/src/mage/cards/s/SidewinderNaga.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class SidewinderNaga extends CardImpl {
+public final class SidewinderNaga extends CardImpl {
public SidewinderNaga(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SidewinderSliver.java b/Mage.Sets/src/mage/cards/s/SidewinderSliver.java
index 2feea699fc1..bbbf0b73406 100644
--- a/Mage.Sets/src/mage/cards/s/SidewinderSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SidewinderSliver.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class SidewinderSliver extends CardImpl {
+public final class SidewinderSliver extends CardImpl {
static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SidisiBroodTyrant.java b/Mage.Sets/src/mage/cards/s/SidisiBroodTyrant.java
index 94ceb600e44..6cb9ad07a74 100644
--- a/Mage.Sets/src/mage/cards/s/SidisiBroodTyrant.java
+++ b/Mage.Sets/src/mage/cards/s/SidisiBroodTyrant.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author LevelX2
*/
-public class SidisiBroodTyrant extends CardImpl {
+public final class SidisiBroodTyrant extends CardImpl {
public SidisiBroodTyrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SidisiUndeadVizier.java b/Mage.Sets/src/mage/cards/s/SidisiUndeadVizier.java
index ce1dfe0abc5..a01e5beb14e 100644
--- a/Mage.Sets/src/mage/cards/s/SidisiUndeadVizier.java
+++ b/Mage.Sets/src/mage/cards/s/SidisiUndeadVizier.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class SidisiUndeadVizier extends CardImpl {
+public final class SidisiUndeadVizier extends CardImpl {
public SidisiUndeadVizier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SidisisFaithful.java b/Mage.Sets/src/mage/cards/s/SidisisFaithful.java
index ddcaa877253..2a7dcf185bf 100644
--- a/Mage.Sets/src/mage/cards/s/SidisisFaithful.java
+++ b/Mage.Sets/src/mage/cards/s/SidisisFaithful.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SidisisFaithful extends CardImpl {
+public final class SidisisFaithful extends CardImpl {
public SidisisFaithful(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SidisisPet.java b/Mage.Sets/src/mage/cards/s/SidisisPet.java
index 2ba9f9d2b88..c1ec24ecd78 100644
--- a/Mage.Sets/src/mage/cards/s/SidisisPet.java
+++ b/Mage.Sets/src/mage/cards/s/SidisisPet.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class SidisisPet extends CardImpl {
+public final class SidisisPet extends CardImpl {
public SidisisPet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SiegeBehemoth.java b/Mage.Sets/src/mage/cards/s/SiegeBehemoth.java
index c9d96b68e12..5b759240421 100644
--- a/Mage.Sets/src/mage/cards/s/SiegeBehemoth.java
+++ b/Mage.Sets/src/mage/cards/s/SiegeBehemoth.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class SiegeBehemoth extends CardImpl {
+public final class SiegeBehemoth extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SiegeDragon.java b/Mage.Sets/src/mage/cards/s/SiegeDragon.java
index 90b3b4ac1c5..7afa185a6ba 100644
--- a/Mage.Sets/src/mage/cards/s/SiegeDragon.java
+++ b/Mage.Sets/src/mage/cards/s/SiegeDragon.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author Quercitron
*/
-public class SiegeDragon extends CardImpl {
+public final class SiegeDragon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls your opponents control");
diff --git a/Mage.Sets/src/mage/cards/s/SiegeGangCommander.java b/Mage.Sets/src/mage/cards/s/SiegeGangCommander.java
index 2bdd8d323ab..1735eb480f3 100644
--- a/Mage.Sets/src/mage/cards/s/SiegeGangCommander.java
+++ b/Mage.Sets/src/mage/cards/s/SiegeGangCommander.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class SiegeGangCommander extends CardImpl {
+public final class SiegeGangCommander extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin");
diff --git a/Mage.Sets/src/mage/cards/s/SiegeMastodon.java b/Mage.Sets/src/mage/cards/s/SiegeMastodon.java
index 3abc0125dd4..737355af142 100644
--- a/Mage.Sets/src/mage/cards/s/SiegeMastodon.java
+++ b/Mage.Sets/src/mage/cards/s/SiegeMastodon.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SiegeMastodon extends CardImpl {
+public final class SiegeMastodon extends CardImpl {
public SiegeMastodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SiegeModification.java b/Mage.Sets/src/mage/cards/s/SiegeModification.java
index c41be17e04f..061309a66f2 100644
--- a/Mage.Sets/src/mage/cards/s/SiegeModification.java
+++ b/Mage.Sets/src/mage/cards/s/SiegeModification.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
/**
* @author JRHerlehy
*/
-public class SiegeModification extends CardImpl {
+public final class SiegeModification extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or vehicle");
diff --git a/Mage.Sets/src/mage/cards/s/SiegeOfTowers.java b/Mage.Sets/src/mage/cards/s/SiegeOfTowers.java
index 6a59b7dadeb..67b1f10b4cb 100644
--- a/Mage.Sets/src/mage/cards/s/SiegeOfTowers.java
+++ b/Mage.Sets/src/mage/cards/s/SiegeOfTowers.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class SiegeOfTowers extends CardImpl {
+public final class SiegeOfTowers extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain");
diff --git a/Mage.Sets/src/mage/cards/s/SiegeRhino.java b/Mage.Sets/src/mage/cards/s/SiegeRhino.java
index d91304d1601..9f0eab27a51 100644
--- a/Mage.Sets/src/mage/cards/s/SiegeRhino.java
+++ b/Mage.Sets/src/mage/cards/s/SiegeRhino.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SiegeRhino extends CardImpl {
+public final class SiegeRhino extends CardImpl {
public SiegeRhino(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SiegeWurm.java b/Mage.Sets/src/mage/cards/s/SiegeWurm.java
index 8923d8e8997..c8546cac7c7 100644
--- a/Mage.Sets/src/mage/cards/s/SiegeWurm.java
+++ b/Mage.Sets/src/mage/cards/s/SiegeWurm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class SiegeWurm extends CardImpl {
+public final class SiegeWurm extends CardImpl {
public SiegeWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Siegecraft.java b/Mage.Sets/src/mage/cards/s/Siegecraft.java
index 388e3b10559..c146ad760b2 100644
--- a/Mage.Sets/src/mage/cards/s/Siegecraft.java
+++ b/Mage.Sets/src/mage/cards/s/Siegecraft.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class Siegecraft extends CardImpl {
+public final class Siegecraft extends CardImpl {
public Siegecraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SiegehornCeratops.java b/Mage.Sets/src/mage/cards/s/SiegehornCeratops.java
index ce24a136317..74fd9ee5870 100644
--- a/Mage.Sets/src/mage/cards/s/SiegehornCeratops.java
+++ b/Mage.Sets/src/mage/cards/s/SiegehornCeratops.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class SiegehornCeratops extends CardImpl {
+public final class SiegehornCeratops extends CardImpl {
public SiegehornCeratops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Sift.java b/Mage.Sets/src/mage/cards/s/Sift.java
index 691ae0398f5..ae6fb4f549c 100644
--- a/Mage.Sets/src/mage/cards/s/Sift.java
+++ b/Mage.Sets/src/mage/cards/s/Sift.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class Sift extends CardImpl {
+public final class Sift extends CardImpl {
public Sift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SiftThroughSands.java b/Mage.Sets/src/mage/cards/s/SiftThroughSands.java
index af70494d98e..2223349d1ca 100644
--- a/Mage.Sets/src/mage/cards/s/SiftThroughSands.java
+++ b/Mage.Sets/src/mage/cards/s/SiftThroughSands.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SiftThroughSands extends CardImpl {
+public final class SiftThroughSands extends CardImpl {
private static final String rule = "If you've cast a spell named Peer Through Depths and a spell named Reach Through Mists this turn, you may search your library for a card named The Unspeakable, put it onto the battlefield, then shuffle your library";
private static final FilterCreatureCard filter = new FilterCreatureCard("a card named The Unspeakable");
diff --git a/Mage.Sets/src/mage/cards/s/SifterOfSkulls.java b/Mage.Sets/src/mage/cards/s/SifterOfSkulls.java
index 0cc567ec005..140c58c7f35 100644
--- a/Mage.Sets/src/mage/cards/s/SifterOfSkulls.java
+++ b/Mage.Sets/src/mage/cards/s/SifterOfSkulls.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author fireshoes
*/
-public class SifterOfSkulls extends CardImpl {
+public final class SifterOfSkulls extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another nontoken creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SifterWurm.java b/Mage.Sets/src/mage/cards/s/SifterWurm.java
index 638159071d8..7f16804c75f 100644
--- a/Mage.Sets/src/mage/cards/s/SifterWurm.java
+++ b/Mage.Sets/src/mage/cards/s/SifterWurm.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class SifterWurm extends CardImpl {
+public final class SifterWurm extends CardImpl {
public SifterWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java b/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java
index 2df57946258..44d1ed48057 100644
--- a/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java
+++ b/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class SigardaHeronsGrace extends CardImpl {
+public final class SigardaHeronsGrace extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Humans you control");
diff --git a/Mage.Sets/src/mage/cards/s/SigardaHostOfHerons.java b/Mage.Sets/src/mage/cards/s/SigardaHostOfHerons.java
index d096b02f283..62f866bc4e0 100644
--- a/Mage.Sets/src/mage/cards/s/SigardaHostOfHerons.java
+++ b/Mage.Sets/src/mage/cards/s/SigardaHostOfHerons.java
@@ -48,7 +48,7 @@ import mage.game.stack.StackAbility;
/**
* @author noxx
*/
-public class SigardaHostOfHerons extends CardImpl {
+public final class SigardaHostOfHerons extends CardImpl {
public SigardaHostOfHerons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SigardasAid.java b/Mage.Sets/src/mage/cards/s/SigardasAid.java
index 7e7815a6a3d..bfe503e7a54 100644
--- a/Mage.Sets/src/mage/cards/s/SigardasAid.java
+++ b/Mage.Sets/src/mage/cards/s/SigardasAid.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class SigardasAid extends CardImpl {
+public final class SigardasAid extends CardImpl {
private final static FilterArtifactPermanent filter = new FilterArtifactPermanent("an Equipment");
private static final FilterCard filterCard = new FilterCard("Aura and Equipment spells");
diff --git a/Mage.Sets/src/mage/cards/s/SigardianPriest.java b/Mage.Sets/src/mage/cards/s/SigardianPriest.java
index 482a71bc98b..c7a39c47e38 100644
--- a/Mage.Sets/src/mage/cards/s/SigardianPriest.java
+++ b/Mage.Sets/src/mage/cards/s/SigardianPriest.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SigardianPriest extends CardImpl {
+public final class SigardianPriest extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Human creature");
diff --git a/Mage.Sets/src/mage/cards/s/SightBeyondSight.java b/Mage.Sets/src/mage/cards/s/SightBeyondSight.java
index 5cdff3b97d2..20660e5c8ab 100644
--- a/Mage.Sets/src/mage/cards/s/SightBeyondSight.java
+++ b/Mage.Sets/src/mage/cards/s/SightBeyondSight.java
@@ -41,7 +41,7 @@ import mage.filter.FilterCard;
*
* @author LevelX2
*/
-public class SightBeyondSight extends CardImpl {
+public final class SightBeyondSight extends CardImpl {
public SightBeyondSight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SightOfTheScalelords.java b/Mage.Sets/src/mage/cards/s/SightOfTheScalelords.java
index 77fbf8d6b79..e088904347a 100644
--- a/Mage.Sets/src/mage/cards/s/SightOfTheScalelords.java
+++ b/Mage.Sets/src/mage/cards/s/SightOfTheScalelords.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class SightOfTheScalelords extends CardImpl {
+public final class SightOfTheScalelords extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control with toughness 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/SightedCasteSorcerer.java b/Mage.Sets/src/mage/cards/s/SightedCasteSorcerer.java
index 6c7c0979e54..ac350d4865a 100644
--- a/Mage.Sets/src/mage/cards/s/SightedCasteSorcerer.java
+++ b/Mage.Sets/src/mage/cards/s/SightedCasteSorcerer.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SightedCasteSorcerer extends CardImpl {
+public final class SightedCasteSorcerer extends CardImpl {
public SightedCasteSorcerer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SightlessBrawler.java b/Mage.Sets/src/mage/cards/s/SightlessBrawler.java
index b9ccdbf7194..0aab196897d 100644
--- a/Mage.Sets/src/mage/cards/s/SightlessBrawler.java
+++ b/Mage.Sets/src/mage/cards/s/SightlessBrawler.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SightlessBrawler extends CardImpl {
+public final class SightlessBrawler extends CardImpl {
public SightlessBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SightlessGhoul.java b/Mage.Sets/src/mage/cards/s/SightlessGhoul.java
index cc484201860..2c6bc1da45f 100644
--- a/Mage.Sets/src/mage/cards/s/SightlessGhoul.java
+++ b/Mage.Sets/src/mage/cards/s/SightlessGhoul.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SightlessGhoul extends CardImpl {
+public final class SightlessGhoul extends CardImpl {
public SightlessGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SigilBlessing.java b/Mage.Sets/src/mage/cards/s/SigilBlessing.java
index ad1869337a5..cb2656cbb53 100644
--- a/Mage.Sets/src/mage/cards/s/SigilBlessing.java
+++ b/Mage.Sets/src/mage/cards/s/SigilBlessing.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class SigilBlessing extends CardImpl {
+public final class SigilBlessing extends CardImpl {
public SigilBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SigilCaptain.java b/Mage.Sets/src/mage/cards/s/SigilCaptain.java
index 14484d63b76..219e315df9a 100644
--- a/Mage.Sets/src/mage/cards/s/SigilCaptain.java
+++ b/Mage.Sets/src/mage/cards/s/SigilCaptain.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class SigilCaptain extends CardImpl {
+public final class SigilCaptain extends CardImpl {
public SigilCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SigilOfDistinction.java b/Mage.Sets/src/mage/cards/s/SigilOfDistinction.java
index e57fe46b7eb..9c3fd4c0139 100644
--- a/Mage.Sets/src/mage/cards/s/SigilOfDistinction.java
+++ b/Mage.Sets/src/mage/cards/s/SigilOfDistinction.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
/**
* @author Loki
*/
-public class SigilOfDistinction extends CardImpl {
+public final class SigilOfDistinction extends CardImpl {
public SigilOfDistinction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{X}");
diff --git a/Mage.Sets/src/mage/cards/s/SigilOfSleep.java b/Mage.Sets/src/mage/cards/s/SigilOfSleep.java
index ec67d4af281..2442494ea21 100644
--- a/Mage.Sets/src/mage/cards/s/SigilOfSleep.java
+++ b/Mage.Sets/src/mage/cards/s/SigilOfSleep.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FirstTargetPointer;
*
* @author LevelX2
*/
-public class SigilOfSleep extends CardImpl {
+public final class SigilOfSleep extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/s/SigilOfTheEmptyThrone.java b/Mage.Sets/src/mage/cards/s/SigilOfTheEmptyThrone.java
index 0b3cd0ef880..020c0d954b2 100644
--- a/Mage.Sets/src/mage/cards/s/SigilOfTheEmptyThrone.java
+++ b/Mage.Sets/src/mage/cards/s/SigilOfTheEmptyThrone.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.AngelToken;
*
* @author Loki, North
*/
-public class SigilOfTheEmptyThrone extends CardImpl {
+public final class SigilOfTheEmptyThrone extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/s/SigilOfTheNayanGods.java b/Mage.Sets/src/mage/cards/s/SigilOfTheNayanGods.java
index d994e3569f7..809ce4bb0cb 100644
--- a/Mage.Sets/src/mage/cards/s/SigilOfTheNayanGods.java
+++ b/Mage.Sets/src/mage/cards/s/SigilOfTheNayanGods.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SigilOfTheNayanGods extends CardImpl {
+public final class SigilOfTheNayanGods extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SigilOfTheNewDawn.java b/Mage.Sets/src/mage/cards/s/SigilOfTheNewDawn.java
index 49a171bb60a..e31acfa3dc2 100644
--- a/Mage.Sets/src/mage/cards/s/SigilOfTheNewDawn.java
+++ b/Mage.Sets/src/mage/cards/s/SigilOfTheNewDawn.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author TheElk801
*/
-public class SigilOfTheNewDawn extends CardImpl {
+public final class SigilOfTheNewDawn extends CardImpl {
public SigilOfTheNewDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SigilOfValor.java b/Mage.Sets/src/mage/cards/s/SigilOfValor.java
index 6b0c80f6ab9..6a5c55f22d3 100644
--- a/Mage.Sets/src/mage/cards/s/SigilOfValor.java
+++ b/Mage.Sets/src/mage/cards/s/SigilOfValor.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SigilOfValor extends CardImpl {
+public final class SigilOfValor extends CardImpl {
public SigilOfValor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SigilTracer.java b/Mage.Sets/src/mage/cards/s/SigilTracer.java
index 21dbf62e579..c1387fbebc7 100644
--- a/Mage.Sets/src/mage/cards/s/SigilTracer.java
+++ b/Mage.Sets/src/mage/cards/s/SigilTracer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class SigilTracer extends CardImpl {
+public final class SigilTracer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Wizards you control");
diff --git a/Mage.Sets/src/mage/cards/s/SigiledBehemoth.java b/Mage.Sets/src/mage/cards/s/SigiledBehemoth.java
index 16c767af004..d2facdca6a9 100644
--- a/Mage.Sets/src/mage/cards/s/SigiledBehemoth.java
+++ b/Mage.Sets/src/mage/cards/s/SigiledBehemoth.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SigiledBehemoth extends CardImpl {
+public final class SigiledBehemoth extends CardImpl {
public SigiledBehemoth (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SigiledPaladin.java b/Mage.Sets/src/mage/cards/s/SigiledPaladin.java
index 227470c6e26..6a4dbbebd28 100644
--- a/Mage.Sets/src/mage/cards/s/SigiledPaladin.java
+++ b/Mage.Sets/src/mage/cards/s/SigiledPaladin.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SigiledPaladin extends CardImpl {
+public final class SigiledPaladin extends CardImpl {
public SigiledPaladin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SigiledSkink.java b/Mage.Sets/src/mage/cards/s/SigiledSkink.java
index acd08500854..16096813fd8 100644
--- a/Mage.Sets/src/mage/cards/s/SigiledSkink.java
+++ b/Mage.Sets/src/mage/cards/s/SigiledSkink.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SigiledSkink extends CardImpl {
+public final class SigiledSkink extends CardImpl {
public SigiledSkink(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SigiledStarfish.java b/Mage.Sets/src/mage/cards/s/SigiledStarfish.java
index 15d36c8b3b7..25e9f2a8a23 100644
--- a/Mage.Sets/src/mage/cards/s/SigiledStarfish.java
+++ b/Mage.Sets/src/mage/cards/s/SigiledStarfish.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SigiledStarfish extends CardImpl {
+public final class SigiledStarfish extends CardImpl {
public SigiledStarfish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SignInBlood.java b/Mage.Sets/src/mage/cards/s/SignInBlood.java
index 88a9fcb2398..bfa4d883ae8 100644
--- a/Mage.Sets/src/mage/cards/s/SignInBlood.java
+++ b/Mage.Sets/src/mage/cards/s/SignInBlood.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SignInBlood extends CardImpl {
+public final class SignInBlood extends CardImpl {
public SignInBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SignalPest.java b/Mage.Sets/src/mage/cards/s/SignalPest.java
index a98a838e97c..5e247a6fdf8 100644
--- a/Mage.Sets/src/mage/cards/s/SignalPest.java
+++ b/Mage.Sets/src/mage/cards/s/SignalPest.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author North
*/
-public class SignalPest extends CardImpl {
+public final class SignalPest extends CardImpl {
private final static FilterCreaturePermanent notFlyingorReachCreatures = new FilterCreaturePermanent("except by creatures with flying or reach");
diff --git a/Mage.Sets/src/mage/cards/s/SignalTheClans.java b/Mage.Sets/src/mage/cards/s/SignalTheClans.java
index 0fed43aa028..e002efc051f 100644
--- a/Mage.Sets/src/mage/cards/s/SignalTheClans.java
+++ b/Mage.Sets/src/mage/cards/s/SignalTheClans.java
@@ -48,7 +48,7 @@ import java.util.stream.Stream;
*
* @author Plopman
*/
-public class SignalTheClans extends CardImpl {
+public final class SignalTheClans extends CardImpl {
public SignalTheClans (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SilasRennSeekerAdept.java b/Mage.Sets/src/mage/cards/s/SilasRennSeekerAdept.java
index 81a78149d4e..51596461aab 100644
--- a/Mage.Sets/src/mage/cards/s/SilasRennSeekerAdept.java
+++ b/Mage.Sets/src/mage/cards/s/SilasRennSeekerAdept.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class SilasRennSeekerAdept extends CardImpl {
+public final class SilasRennSeekerAdept extends CardImpl {
private static final FilterCard filter = new FilterArtifactCard("artifact card in your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/SilburlindSnapper.java b/Mage.Sets/src/mage/cards/s/SilburlindSnapper.java
index 93b45b4341c..8edc032291f 100644
--- a/Mage.Sets/src/mage/cards/s/SilburlindSnapper.java
+++ b/Mage.Sets/src/mage/cards/s/SilburlindSnapper.java
@@ -48,7 +48,7 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author LevelX2
*/
-public class SilburlindSnapper extends CardImpl {
+public final class SilburlindSnapper extends CardImpl {
public SilburlindSnapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Silence.java b/Mage.Sets/src/mage/cards/s/Silence.java
index fcee2d7533e..ff4022edc33 100644
--- a/Mage.Sets/src/mage/cards/s/Silence.java
+++ b/Mage.Sets/src/mage/cards/s/Silence.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Silence extends CardImpl {
+public final class Silence extends CardImpl {
public Silence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilenceTheBelievers.java b/Mage.Sets/src/mage/cards/s/SilenceTheBelievers.java
index e7e06d14aba..26de0d749b3 100644
--- a/Mage.Sets/src/mage/cards/s/SilenceTheBelievers.java
+++ b/Mage.Sets/src/mage/cards/s/SilenceTheBelievers.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SilenceTheBelievers extends CardImpl {
+public final class SilenceTheBelievers extends CardImpl {
public SilenceTheBelievers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SilentArbiter.java b/Mage.Sets/src/mage/cards/s/SilentArbiter.java
index c12fc841c53..b18cdad89ee 100644
--- a/Mage.Sets/src/mage/cards/s/SilentArbiter.java
+++ b/Mage.Sets/src/mage/cards/s/SilentArbiter.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class SilentArbiter extends CardImpl {
+public final class SilentArbiter extends CardImpl {
public SilentArbiter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SilentArtisan.java b/Mage.Sets/src/mage/cards/s/SilentArtisan.java
index a9aa06cd897..6e56434e301 100644
--- a/Mage.Sets/src/mage/cards/s/SilentArtisan.java
+++ b/Mage.Sets/src/mage/cards/s/SilentArtisan.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SilentArtisan extends CardImpl {
+public final class SilentArtisan extends CardImpl {
public SilentArtisan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilentAttendant.java b/Mage.Sets/src/mage/cards/s/SilentAttendant.java
index 1c4a1575057..6fcee736fc4 100644
--- a/Mage.Sets/src/mage/cards/s/SilentAttendant.java
+++ b/Mage.Sets/src/mage/cards/s/SilentAttendant.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class SilentAttendant extends CardImpl {
+public final class SilentAttendant extends CardImpl {
public SilentAttendant (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilentBladeOni.java b/Mage.Sets/src/mage/cards/s/SilentBladeOni.java
index 59b9ffce962..dda481a1edf 100644
--- a/Mage.Sets/src/mage/cards/s/SilentBladeOni.java
+++ b/Mage.Sets/src/mage/cards/s/SilentBladeOni.java
@@ -29,6 +29,7 @@ package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
@@ -40,8 +41,8 @@ import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterNonlandCard;
import mage.game.Game;
@@ -52,10 +53,10 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class SilentBladeOni extends CardImpl {
+public final class SilentBladeOni extends CardImpl {
public SilentBladeOni(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}{B}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}{B}{B}");
this.subtype.add(SubType.DEMON);
this.subtype.add(SubType.NINJA);
@@ -107,7 +108,7 @@ class SilentBladeOniEffect extends OneShotEffect {
if (controller.chooseTarget(outcome, cardsInHand, target, source, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
diff --git a/Mage.Sets/src/mage/cards/s/SilentChantZubera.java b/Mage.Sets/src/mage/cards/s/SilentChantZubera.java
index cdc827bf4dc..1676dfa6c30 100644
--- a/Mage.Sets/src/mage/cards/s/SilentChantZubera.java
+++ b/Mage.Sets/src/mage/cards/s/SilentChantZubera.java
@@ -46,7 +46,7 @@ import mage.watchers.common.ZuberasDiedWatcher;
*
* @author Loki
*/
-public class SilentChantZubera extends CardImpl {
+public final class SilentChantZubera extends CardImpl {
public SilentChantZubera (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilentDeparture.java b/Mage.Sets/src/mage/cards/s/SilentDeparture.java
index 4f469536af0..bdeb34d63c6 100644
--- a/Mage.Sets/src/mage/cards/s/SilentDeparture.java
+++ b/Mage.Sets/src/mage/cards/s/SilentDeparture.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class SilentDeparture extends CardImpl {
+public final class SilentDeparture extends CardImpl {
public SilentDeparture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SilentGravestone.java b/Mage.Sets/src/mage/cards/s/SilentGravestone.java
index b0167986749..8879e12c06a 100644
--- a/Mage.Sets/src/mage/cards/s/SilentGravestone.java
+++ b/Mage.Sets/src/mage/cards/s/SilentGravestone.java
@@ -1,73 +1,73 @@
-/*
- * 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.common.SimpleActivatedAbility;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.mana.GenericManaCost;
-import mage.abilities.effects.common.CantBeTargetedCardsGraveyardsEffect;
-import mage.abilities.effects.common.DrawCardSourceControllerEffect;
-import mage.abilities.effects.common.ExileGraveyardAllPlayersEffect;
-import mage.abilities.effects.common.ExileSourceEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Zone;
-
-/**
- *
- * @author LevelX2
- */
-public class SilentGravestone extends CardImpl {
-
- public SilentGravestone(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
-
- // Cards in graveyards can't be the targets of spells or abilities.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeTargetedCardsGraveyardsEffect()));
-
- // {4}, {t}: Exile Silent Gravestone and all cards from all graveyards. Draw a card.
- Ability ability = new SimpleActivatedAbility(new ExileSourceEffect(), new GenericManaCost(4));
- ability.addCost(new TapSourceCost());
- ability.addEffect(new ExileGraveyardAllPlayersEffect().setText("and all cards from all graveyards"));
- ability.addEffect(new DrawCardSourceControllerEffect(1));
- this.addAbility(ability);
- }
-
- public SilentGravestone(final SilentGravestone card) {
- super(card);
- }
-
- @Override
- public SilentGravestone copy() {
- return new SilentGravestone(this);
- }
-}
+/*
+ * 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.common.SimpleActivatedAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.CantBeTargetedCardsGraveyardsEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.ExileGraveyardAllPlayersEffect;
+import mage.abilities.effects.common.ExileSourceEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class SilentGravestone extends CardImpl {
+
+ public SilentGravestone(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
+
+ // Cards in graveyards can't be the targets of spells or abilities.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeTargetedCardsGraveyardsEffect()));
+
+ // {4}, {t}: Exile Silent Gravestone and all cards from all graveyards. Draw a card.
+ Ability ability = new SimpleActivatedAbility(new ExileSourceEffect(), new GenericManaCost(4));
+ ability.addCost(new TapSourceCost());
+ ability.addEffect(new ExileGraveyardAllPlayersEffect().setText("and all cards from all graveyards"));
+ ability.addEffect(new DrawCardSourceControllerEffect(1));
+ this.addAbility(ability);
+ }
+
+ public SilentGravestone(final SilentGravestone card) {
+ super(card);
+ }
+
+ @Override
+ public SilentGravestone copy() {
+ return new SilentGravestone(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/SilentObserver.java b/Mage.Sets/src/mage/cards/s/SilentObserver.java
index c2bc61e34e8..dc383a3fc02 100644
--- a/Mage.Sets/src/mage/cards/s/SilentObserver.java
+++ b/Mage.Sets/src/mage/cards/s/SilentObserver.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SilentObserver extends CardImpl {
+public final class SilentObserver extends CardImpl {
public SilentObserver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SilentSentinel.java b/Mage.Sets/src/mage/cards/s/SilentSentinel.java
index c7989609e5c..01b221f5e05 100644
--- a/Mage.Sets/src/mage/cards/s/SilentSentinel.java
+++ b/Mage.Sets/src/mage/cards/s/SilentSentinel.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class SilentSentinel extends CardImpl {
+public final class SilentSentinel extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantment card from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SilentSkimmer.java b/Mage.Sets/src/mage/cards/s/SilentSkimmer.java
index a50fff2b23c..cd272ed719c 100644
--- a/Mage.Sets/src/mage/cards/s/SilentSkimmer.java
+++ b/Mage.Sets/src/mage/cards/s/SilentSkimmer.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SilentSkimmer extends CardImpl {
+public final class SilentSkimmer extends CardImpl {
public SilentSkimmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SilentSpecter.java b/Mage.Sets/src/mage/cards/s/SilentSpecter.java
index 3e3f9f00e6b..875930a634a 100644
--- a/Mage.Sets/src/mage/cards/s/SilentSpecter.java
+++ b/Mage.Sets/src/mage/cards/s/SilentSpecter.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SilentSpecter extends CardImpl {
+public final class SilentSpecter extends CardImpl {
public SilentSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SilhanaLedgewalker.java b/Mage.Sets/src/mage/cards/s/SilhanaLedgewalker.java
index 5440cb7b02c..698ae8b1ea6 100644
--- a/Mage.Sets/src/mage/cards/s/SilhanaLedgewalker.java
+++ b/Mage.Sets/src/mage/cards/s/SilhanaLedgewalker.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class SilhanaLedgewalker extends CardImpl {
+public final class SilhanaLedgewalker extends CardImpl {
public SilhanaLedgewalker (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SilhanaStarfletcher.java b/Mage.Sets/src/mage/cards/s/SilhanaStarfletcher.java
index 04e5c726245..f32b1ccc2fe 100644
--- a/Mage.Sets/src/mage/cards/s/SilhanaStarfletcher.java
+++ b/Mage.Sets/src/mage/cards/s/SilhanaStarfletcher.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SilhanaStarfletcher extends CardImpl {
+public final class SilhanaStarfletcher extends CardImpl {
public SilhanaStarfletcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SilkNet.java b/Mage.Sets/src/mage/cards/s/SilkNet.java
index 312ecb93e8b..b6a630cf9f9 100644
--- a/Mage.Sets/src/mage/cards/s/SilkNet.java
+++ b/Mage.Sets/src/mage/cards/s/SilkNet.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class SilkNet extends CardImpl {
+public final class SilkNet extends CardImpl {
public SilkNet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SilkbindFaerie.java b/Mage.Sets/src/mage/cards/s/SilkbindFaerie.java
index ea90050d21e..1a9d299885a 100644
--- a/Mage.Sets/src/mage/cards/s/SilkbindFaerie.java
+++ b/Mage.Sets/src/mage/cards/s/SilkbindFaerie.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class SilkbindFaerie extends CardImpl {
+public final class SilkbindFaerie extends CardImpl {
public SilkbindFaerie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/s/SilkenfistFighter.java b/Mage.Sets/src/mage/cards/s/SilkenfistFighter.java
index ea82d7e92b8..4a718ea754f 100644
--- a/Mage.Sets/src/mage/cards/s/SilkenfistFighter.java
+++ b/Mage.Sets/src/mage/cards/s/SilkenfistFighter.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SilkenfistFighter extends CardImpl {
+public final class SilkenfistFighter extends CardImpl {
public SilkenfistFighter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilkenfistOrder.java b/Mage.Sets/src/mage/cards/s/SilkenfistOrder.java
index a6fc63124f1..d7d7bf6c43e 100644
--- a/Mage.Sets/src/mage/cards/s/SilkenfistOrder.java
+++ b/Mage.Sets/src/mage/cards/s/SilkenfistOrder.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SilkenfistOrder extends CardImpl {
+public final class SilkenfistOrder extends CardImpl {
public SilkenfistOrder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilklashSpider.java b/Mage.Sets/src/mage/cards/s/SilklashSpider.java
index 0e33bf106c5..a5fda84d0b6 100644
--- a/Mage.Sets/src/mage/cards/s/SilklashSpider.java
+++ b/Mage.Sets/src/mage/cards/s/SilklashSpider.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author North
*/
-public class SilklashSpider extends CardImpl {
+public final class SilklashSpider extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/SilkweaverElite.java b/Mage.Sets/src/mage/cards/s/SilkweaverElite.java
index 83c9e673a3a..2d48fdd319e 100644
--- a/Mage.Sets/src/mage/cards/s/SilkweaverElite.java
+++ b/Mage.Sets/src/mage/cards/s/SilkweaverElite.java
@@ -45,7 +45,7 @@ import mage.watchers.common.RevoltWatcher;
/**
* @author JRHerlehy
*/
-public class SilkweaverElite extends CardImpl {
+public final class SilkweaverElite extends CardImpl {
public SilkweaverElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SilkwingScout.java b/Mage.Sets/src/mage/cards/s/SilkwingScout.java
index 46f03ad0048..1074d435876 100644
--- a/Mage.Sets/src/mage/cards/s/SilkwingScout.java
+++ b/Mage.Sets/src/mage/cards/s/SilkwingScout.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class SilkwingScout extends CardImpl {
+public final class SilkwingScout extends CardImpl {
public SilkwingScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
@@ -62,7 +62,7 @@ public class SilkwingScout extends CardImpl {
// {G}, Sacrifice Silkwing Scout: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new ManaCostsImpl("{G}"));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/s/Silkwrap.java b/Mage.Sets/src/mage/cards/s/Silkwrap.java
index 2189c046973..f9e0fee253c 100644
--- a/Mage.Sets/src/mage/cards/s/Silkwrap.java
+++ b/Mage.Sets/src/mage/cards/s/Silkwrap.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class Silkwrap extends CardImpl {
+public final class Silkwrap extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with converted mana cost 3 or less an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SiltCrawler.java b/Mage.Sets/src/mage/cards/s/SiltCrawler.java
index b2d62773fff..57c6f090d54 100644
--- a/Mage.Sets/src/mage/cards/s/SiltCrawler.java
+++ b/Mage.Sets/src/mage/cards/s/SiltCrawler.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author LoneFox
*/
-public class SiltCrawler extends CardImpl {
+public final class SiltCrawler extends CardImpl {
public SiltCrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SilumgarAssassin.java b/Mage.Sets/src/mage/cards/s/SilumgarAssassin.java
index 2e82fbe7170..0da3a7d4fb9 100644
--- a/Mage.Sets/src/mage/cards/s/SilumgarAssassin.java
+++ b/Mage.Sets/src/mage/cards/s/SilumgarAssassin.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SilumgarAssassin extends CardImpl {
+public final class SilumgarAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 3 or less an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SilumgarButcher.java b/Mage.Sets/src/mage/cards/s/SilumgarButcher.java
index a5b13483405..a95275c5955 100644
--- a/Mage.Sets/src/mage/cards/s/SilumgarButcher.java
+++ b/Mage.Sets/src/mage/cards/s/SilumgarButcher.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SilumgarButcher extends CardImpl {
+public final class SilumgarButcher extends CardImpl {
public SilumgarButcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SilumgarMonument.java b/Mage.Sets/src/mage/cards/s/SilumgarMonument.java
index adac42e1764..673ee4e0e67 100644
--- a/Mage.Sets/src/mage/cards/s/SilumgarMonument.java
+++ b/Mage.Sets/src/mage/cards/s/SilumgarMonument.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class SilumgarMonument extends CardImpl {
+public final class SilumgarMonument extends CardImpl {
public SilumgarMonument(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SilumgarSorcerer.java b/Mage.Sets/src/mage/cards/s/SilumgarSorcerer.java
index 90f403e6cd2..2d66c9b02ab 100644
--- a/Mage.Sets/src/mage/cards/s/SilumgarSorcerer.java
+++ b/Mage.Sets/src/mage/cards/s/SilumgarSorcerer.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class SilumgarSorcerer extends CardImpl {
+public final class SilumgarSorcerer extends CardImpl {
public SilumgarSorcerer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SilumgarSpellEater.java b/Mage.Sets/src/mage/cards/s/SilumgarSpellEater.java
index b065376a2f2..1b6d93d6b75 100644
--- a/Mage.Sets/src/mage/cards/s/SilumgarSpellEater.java
+++ b/Mage.Sets/src/mage/cards/s/SilumgarSpellEater.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class SilumgarSpellEater extends CardImpl {
+public final class SilumgarSpellEater extends CardImpl {
public SilumgarSpellEater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SilumgarTheDriftingDeath.java b/Mage.Sets/src/mage/cards/s/SilumgarTheDriftingDeath.java
index c9211e3c900..7569d27e344 100644
--- a/Mage.Sets/src/mage/cards/s/SilumgarTheDriftingDeath.java
+++ b/Mage.Sets/src/mage/cards/s/SilumgarTheDriftingDeath.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class SilumgarTheDriftingDeath extends CardImpl {
+public final class SilumgarTheDriftingDeath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dragon you control");
diff --git a/Mage.Sets/src/mage/cards/s/SilumgarsCommand.java b/Mage.Sets/src/mage/cards/s/SilumgarsCommand.java
index 167e524cdfc..aa5c47f2118 100644
--- a/Mage.Sets/src/mage/cards/s/SilumgarsCommand.java
+++ b/Mage.Sets/src/mage/cards/s/SilumgarsCommand.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SilumgarsCommand extends CardImpl {
+public final class SilumgarsCommand extends CardImpl {
private static final FilterSpell filter = new FilterSpell("noncreature spell");
private static final FilterPermanent filter2 = new FilterPermanent("planeswalker");
diff --git a/Mage.Sets/src/mage/cards/s/SilumgarsScorn.java b/Mage.Sets/src/mage/cards/s/SilumgarsScorn.java
index 6cd739e9c3b..8a3a7b415d9 100644
--- a/Mage.Sets/src/mage/cards/s/SilumgarsScorn.java
+++ b/Mage.Sets/src/mage/cards/s/SilumgarsScorn.java
@@ -53,7 +53,7 @@ import mage.watchers.common.DragonOnTheBattlefieldWhileSpellWasCastWatcher;
*
* @author LevelX2
*/
-public class SilumgarsScorn extends CardImpl {
+public final class SilumgarsScorn extends CardImpl {
private static final FilterCard filter = new FilterCard("a Dragon card from your hand (you don't have to)");
diff --git a/Mage.Sets/src/mage/cards/s/SilverDrake.java b/Mage.Sets/src/mage/cards/s/SilverDrake.java
index e6932f152be..3f5ed93f3a2 100644
--- a/Mage.Sets/src/mage/cards/s/SilverDrake.java
+++ b/Mage.Sets/src/mage/cards/s/SilverDrake.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*/
-public class SilverDrake extends CardImpl {
+public final class SilverDrake extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("white or blue creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SilverErne.java b/Mage.Sets/src/mage/cards/s/SilverErne.java
index 3e4bed7776f..8735bc3e218 100644
--- a/Mage.Sets/src/mage/cards/s/SilverErne.java
+++ b/Mage.Sets/src/mage/cards/s/SilverErne.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SilverErne extends CardImpl {
+public final class SilverErne extends CardImpl {
public SilverErne(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SilverInlaidDagger.java b/Mage.Sets/src/mage/cards/s/SilverInlaidDagger.java
index d43aa7d625a..28fd874b147 100644
--- a/Mage.Sets/src/mage/cards/s/SilverInlaidDagger.java
+++ b/Mage.Sets/src/mage/cards/s/SilverInlaidDagger.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
/**
* @author nantuko
*/
-public class SilverInlaidDagger extends CardImpl {
+public final class SilverInlaidDagger extends CardImpl {
private static final String staticText = "As long as equipped creature is a Human, it gets an additional +1/+0";
diff --git a/Mage.Sets/src/mage/cards/s/SilverKnight.java b/Mage.Sets/src/mage/cards/s/SilverKnight.java
index 8ccb130e9b1..33c21b34099 100644
--- a/Mage.Sets/src/mage/cards/s/SilverKnight.java
+++ b/Mage.Sets/src/mage/cards/s/SilverKnight.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SilverKnight extends CardImpl {
+public final class SilverKnight extends CardImpl {
public SilverKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilverMyr.java b/Mage.Sets/src/mage/cards/s/SilverMyr.java
index 2f670e92939..0fbe12e5ac3 100644
--- a/Mage.Sets/src/mage/cards/s/SilverMyr.java
+++ b/Mage.Sets/src/mage/cards/s/SilverMyr.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SilverMyr extends CardImpl {
+public final class SilverMyr extends CardImpl {
public SilverMyr (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SilverSeraph.java b/Mage.Sets/src/mage/cards/s/SilverSeraph.java
index ef144844c6a..74b20c9b49c 100644
--- a/Mage.Sets/src/mage/cards/s/SilverSeraph.java
+++ b/Mage.Sets/src/mage/cards/s/SilverSeraph.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class SilverSeraph extends CardImpl {
+public final class SilverSeraph extends CardImpl {
public SilverSeraph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilverWyvern.java b/Mage.Sets/src/mage/cards/s/SilverWyvern.java
index a8eebea8aaa..bedd1256145 100644
--- a/Mage.Sets/src/mage/cards/s/SilverWyvern.java
+++ b/Mage.Sets/src/mage/cards/s/SilverWyvern.java
@@ -53,7 +53,7 @@ import mage.target.Targets;
*
* @author LevelX2
*/
-public class SilverWyvern extends CardImpl {
+public final class SilverWyvern extends CardImpl {
public SilverWyvern(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SilverbackApe.java b/Mage.Sets/src/mage/cards/s/SilverbackApe.java
index aa45b766036..00c0af32436 100644
--- a/Mage.Sets/src/mage/cards/s/SilverbackApe.java
+++ b/Mage.Sets/src/mage/cards/s/SilverbackApe.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Quercitron
*/
-public class SilverbackApe extends CardImpl {
+public final class SilverbackApe extends CardImpl {
public SilverbackApe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SilverbladePaladin.java b/Mage.Sets/src/mage/cards/s/SilverbladePaladin.java
index 3cc74fcba06..c48f2adb0ee 100644
--- a/Mage.Sets/src/mage/cards/s/SilverbladePaladin.java
+++ b/Mage.Sets/src/mage/cards/s/SilverbladePaladin.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class SilverbladePaladin extends CardImpl {
+public final class SilverbladePaladin extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, both creatures have double strike";
diff --git a/Mage.Sets/src/mage/cards/s/SilverchaseFox.java b/Mage.Sets/src/mage/cards/s/SilverchaseFox.java
index ba452fc3c35..b2a30d13a53 100644
--- a/Mage.Sets/src/mage/cards/s/SilverchaseFox.java
+++ b/Mage.Sets/src/mage/cards/s/SilverchaseFox.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetEnchantmentPermanent;
/**
* @author nantuko
*/
-public class SilverchaseFox extends CardImpl {
+public final class SilverchaseFox extends CardImpl {
public SilverchaseFox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilvercladFerocidons.java b/Mage.Sets/src/mage/cards/s/SilvercladFerocidons.java
index 3c6b545eaa6..84891591a70 100644
--- a/Mage.Sets/src/mage/cards/s/SilvercladFerocidons.java
+++ b/Mage.Sets/src/mage/cards/s/SilvercladFerocidons.java
@@ -42,7 +42,7 @@ import mage.filter.FilterPermanent;
*
* @author L_J
*/
-public class SilvercladFerocidons extends CardImpl {
+public final class SilvercladFerocidons extends CardImpl {
public SilvercladFerocidons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SilverclawGriffin.java b/Mage.Sets/src/mage/cards/s/SilverclawGriffin.java
index cfa8c77f78d..6cde6a30489 100644
--- a/Mage.Sets/src/mage/cards/s/SilverclawGriffin.java
+++ b/Mage.Sets/src/mage/cards/s/SilverclawGriffin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SilverclawGriffin extends CardImpl {
+public final class SilverclawGriffin extends CardImpl {
public SilverclawGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilvercoatLion.java b/Mage.Sets/src/mage/cards/s/SilvercoatLion.java
index 4ef41c63cc5..b11a9a770e3 100644
--- a/Mage.Sets/src/mage/cards/s/SilvercoatLion.java
+++ b/Mage.Sets/src/mage/cards/s/SilvercoatLion.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SilvercoatLion extends CardImpl {
+public final class SilvercoatLion extends CardImpl {
public SilvercoatLion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilverfurPartisan.java b/Mage.Sets/src/mage/cards/s/SilverfurPartisan.java
index 7cda52f3a3d..0214920a9f3 100644
--- a/Mage.Sets/src/mage/cards/s/SilverfurPartisan.java
+++ b/Mage.Sets/src/mage/cards/s/SilverfurPartisan.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class SilverfurPartisan extends CardImpl {
+public final class SilverfurPartisan extends CardImpl {
public SilverfurPartisan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SilvergillAdept.java b/Mage.Sets/src/mage/cards/s/SilvergillAdept.java
index 8dd399e91b0..51bc5f349a5 100644
--- a/Mage.Sets/src/mage/cards/s/SilvergillAdept.java
+++ b/Mage.Sets/src/mage/cards/s/SilvergillAdept.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInHand;
*
* @author North
*/
-public class SilvergillAdept extends CardImpl {
+public final class SilvergillAdept extends CardImpl {
public SilvergillAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SilvergillDouser.java b/Mage.Sets/src/mage/cards/s/SilvergillDouser.java
index 568c3beea77..4c1c45b004e 100644
--- a/Mage.Sets/src/mage/cards/s/SilvergillDouser.java
+++ b/Mage.Sets/src/mage/cards/s/SilvergillDouser.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class SilvergillDouser extends CardImpl {
+public final class SilvergillDouser extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Merfolk and/or Faeries you control");
diff --git a/Mage.Sets/src/mage/cards/s/SilvergladeElemental.java b/Mage.Sets/src/mage/cards/s/SilvergladeElemental.java
index cc6f5353745..dd5631f9363 100644
--- a/Mage.Sets/src/mage/cards/s/SilvergladeElemental.java
+++ b/Mage.Sets/src/mage/cards/s/SilvergladeElemental.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class SilvergladeElemental extends CardImpl {
+public final class SilvergladeElemental extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("Forest card");
diff --git a/Mage.Sets/src/mage/cards/s/SilvergladePathfinder.java b/Mage.Sets/src/mage/cards/s/SilvergladePathfinder.java
index 2a2591bebf2..d716cad13db 100644
--- a/Mage.Sets/src/mage/cards/s/SilvergladePathfinder.java
+++ b/Mage.Sets/src/mage/cards/s/SilvergladePathfinder.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class SilvergladePathfinder extends CardImpl {
+public final class SilvergladePathfinder extends CardImpl {
public SilvergladePathfinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
@@ -59,7 +59,7 @@ public class SilvergladePathfinder extends CardImpl {
// {1}{G}, {tap}, Discard a card: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new ManaCostsImpl("{1}{G}"));
ability.addCost(new TapSourceCost());
ability.addCost(new DiscardCardCost());
diff --git a/Mage.Sets/src/mage/cards/s/SilverpeltWerewolf.java b/Mage.Sets/src/mage/cards/s/SilverpeltWerewolf.java
index ec168184398..51028033297 100644
--- a/Mage.Sets/src/mage/cards/s/SilverpeltWerewolf.java
+++ b/Mage.Sets/src/mage/cards/s/SilverpeltWerewolf.java
@@ -47,7 +47,7 @@ import mage.constants.TargetController;
*
* @author Loki
*/
-public class SilverpeltWerewolf extends CardImpl {
+public final class SilverpeltWerewolf extends CardImpl {
public SilverpeltWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},null);
diff --git a/Mage.Sets/src/mage/cards/s/SilverskinArmor.java b/Mage.Sets/src/mage/cards/s/SilverskinArmor.java
index ef3629a1e61..3ed8f4f4d03 100644
--- a/Mage.Sets/src/mage/cards/s/SilverskinArmor.java
+++ b/Mage.Sets/src/mage/cards/s/SilverskinArmor.java
@@ -41,7 +41,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class SilverskinArmor extends CardImpl {
+public final class SilverskinArmor extends CardImpl {
public SilverskinArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SilverstormSamurai.java b/Mage.Sets/src/mage/cards/s/SilverstormSamurai.java
index 5ccfd0361a8..34ccc3e8b1e 100644
--- a/Mage.Sets/src/mage/cards/s/SilverstormSamurai.java
+++ b/Mage.Sets/src/mage/cards/s/SilverstormSamurai.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SilverstormSamurai extends CardImpl {
+public final class SilverstormSamurai extends CardImpl {
public SilverstormSamurai(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Silverstrike.java b/Mage.Sets/src/mage/cards/s/Silverstrike.java
index 617a0c8808f..f12f3b3da8b 100644
--- a/Mage.Sets/src/mage/cards/s/Silverstrike.java
+++ b/Mage.Sets/src/mage/cards/s/Silverstrike.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author fireshoes
*/
-public class Silverstrike extends CardImpl {
+public final class Silverstrike extends CardImpl {
public Silverstrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SilvosRogueElemental.java b/Mage.Sets/src/mage/cards/s/SilvosRogueElemental.java
index 48a7984c1a1..11537a062a3 100644
--- a/Mage.Sets/src/mage/cards/s/SilvosRogueElemental.java
+++ b/Mage.Sets/src/mage/cards/s/SilvosRogueElemental.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SilvosRogueElemental extends CardImpl {
+public final class SilvosRogueElemental extends CardImpl {
public SilvosRogueElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SimaYiWeiFieldMarshal.java b/Mage.Sets/src/mage/cards/s/SimaYiWeiFieldMarshal.java
index af663512ce2..42a2f152d60 100644
--- a/Mage.Sets/src/mage/cards/s/SimaYiWeiFieldMarshal.java
+++ b/Mage.Sets/src/mage/cards/s/SimaYiWeiFieldMarshal.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class SimaYiWeiFieldMarshal extends CardImpl {
+public final class SimaYiWeiFieldMarshal extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Swamps you control");
diff --git a/Mage.Sets/src/mage/cards/s/SimianBrawler.java b/Mage.Sets/src/mage/cards/s/SimianBrawler.java
index e96432efb6a..ffc1898949a 100644
--- a/Mage.Sets/src/mage/cards/s/SimianBrawler.java
+++ b/Mage.Sets/src/mage/cards/s/SimianBrawler.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterLandCard;
*
* @author LoneFox
*/
-public class SimianBrawler extends CardImpl {
+public final class SimianBrawler extends CardImpl {
public SimianBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SimianGrunts.java b/Mage.Sets/src/mage/cards/s/SimianGrunts.java
index 4957df283ac..2d8d618c12a 100644
--- a/Mage.Sets/src/mage/cards/s/SimianGrunts.java
+++ b/Mage.Sets/src/mage/cards/s/SimianGrunts.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SimianGrunts extends CardImpl {
+public final class SimianGrunts extends CardImpl {
public SimianGrunts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SimianSpiritGuide.java b/Mage.Sets/src/mage/cards/s/SimianSpiritGuide.java
index 98697cfd729..93d31c5705b 100644
--- a/Mage.Sets/src/mage/cards/s/SimianSpiritGuide.java
+++ b/Mage.Sets/src/mage/cards/s/SimianSpiritGuide.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class SimianSpiritGuide extends CardImpl {
+public final class SimianSpiritGuide extends CardImpl {
public SimianSpiritGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SimicBasilisk.java b/Mage.Sets/src/mage/cards/s/SimicBasilisk.java
index bb922a95b37..58d6f872aca 100644
--- a/Mage.Sets/src/mage/cards/s/SimicBasilisk.java
+++ b/Mage.Sets/src/mage/cards/s/SimicBasilisk.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JotaPeRL
*/
-public class SimicBasilisk extends CardImpl {
+public final class SimicBasilisk extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SimicCharm.java b/Mage.Sets/src/mage/cards/s/SimicCharm.java
index 767a0acf003..4523cb1bcc7 100644
--- a/Mage.Sets/src/mage/cards/s/SimicCharm.java
+++ b/Mage.Sets/src/mage/cards/s/SimicCharm.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class SimicCharm extends CardImpl {
+public final class SimicCharm extends CardImpl {
public SimicCharm (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SimicCluestone.java b/Mage.Sets/src/mage/cards/s/SimicCluestone.java
index 186e77212c5..201bfd2c101 100644
--- a/Mage.Sets/src/mage/cards/s/SimicCluestone.java
+++ b/Mage.Sets/src/mage/cards/s/SimicCluestone.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*/
-public class SimicCluestone extends CardImpl {
+public final class SimicCluestone extends CardImpl {
public SimicCluestone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SimicFluxmage.java b/Mage.Sets/src/mage/cards/s/SimicFluxmage.java
index 1ef13855e79..6a144ce5536 100644
--- a/Mage.Sets/src/mage/cards/s/SimicFluxmage.java
+++ b/Mage.Sets/src/mage/cards/s/SimicFluxmage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SimicFluxmage extends CardImpl {
+public final class SimicFluxmage extends CardImpl {
public SimicFluxmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SimicGrowthChamber.java b/Mage.Sets/src/mage/cards/s/SimicGrowthChamber.java
index 193ced4fb08..f83614e7677 100644
--- a/Mage.Sets/src/mage/cards/s/SimicGrowthChamber.java
+++ b/Mage.Sets/src/mage/cards/s/SimicGrowthChamber.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Loki
*/
-public class SimicGrowthChamber extends CardImpl {
+public final class SimicGrowthChamber extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SimicGuildgate.java b/Mage.Sets/src/mage/cards/s/SimicGuildgate.java
index ea634dfee2c..266db2d81b9 100644
--- a/Mage.Sets/src/mage/cards/s/SimicGuildgate.java
+++ b/Mage.Sets/src/mage/cards/s/SimicGuildgate.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SimicGuildgate extends CardImpl {
+public final class SimicGuildgate extends CardImpl {
public SimicGuildgate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SimicGuildmage.java b/Mage.Sets/src/mage/cards/s/SimicGuildmage.java
index 16fe53224de..5ea3f43c8a4 100644
--- a/Mage.Sets/src/mage/cards/s/SimicGuildmage.java
+++ b/Mage.Sets/src/mage/cards/s/SimicGuildmage.java
@@ -63,7 +63,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class SimicGuildmage extends CardImpl {
+public final class SimicGuildmage extends CardImpl {
private static final FilterEnchantmentPermanent auraFilter = new FilterEnchantmentPermanent("Aura");
diff --git a/Mage.Sets/src/mage/cards/s/SimicInitiate.java b/Mage.Sets/src/mage/cards/s/SimicInitiate.java
index 6cd26688c4d..ec7bf3d0d49 100644
--- a/Mage.Sets/src/mage/cards/s/SimicInitiate.java
+++ b/Mage.Sets/src/mage/cards/s/SimicInitiate.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author JotaPeRL
*/
-public class SimicInitiate extends CardImpl {
+public final class SimicInitiate extends CardImpl {
public SimicInitiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SimicKeyrune.java b/Mage.Sets/src/mage/cards/s/SimicKeyrune.java
index ec9b7dc96d6..63b5239395e 100644
--- a/Mage.Sets/src/mage/cards/s/SimicKeyrune.java
+++ b/Mage.Sets/src/mage/cards/s/SimicKeyrune.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author LevelX2
*/
-public class SimicKeyrune extends CardImpl {
+public final class SimicKeyrune extends CardImpl {
public SimicKeyrune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SimicManipulator.java b/Mage.Sets/src/mage/cards/s/SimicManipulator.java
index 4f0271d879e..b41c3c41d0d 100644
--- a/Mage.Sets/src/mage/cards/s/SimicManipulator.java
+++ b/Mage.Sets/src/mage/cards/s/SimicManipulator.java
@@ -61,7 +61,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SimicManipulator extends CardImpl {
+public final class SimicManipulator extends CardImpl {
private final UUID originalId;
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("with power less than or equal to the number of +1/+1 counters removed this way");
diff --git a/Mage.Sets/src/mage/cards/s/SimicRagworm.java b/Mage.Sets/src/mage/cards/s/SimicRagworm.java
index f2b3616d1be..43dea14c9ea 100644
--- a/Mage.Sets/src/mage/cards/s/SimicRagworm.java
+++ b/Mage.Sets/src/mage/cards/s/SimicRagworm.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class SimicRagworm extends CardImpl {
+public final class SimicRagworm extends CardImpl {
public SimicRagworm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SimicSignet.java b/Mage.Sets/src/mage/cards/s/SimicSignet.java
index 0a912df4881..50ee36d9f8a 100644
--- a/Mage.Sets/src/mage/cards/s/SimicSignet.java
+++ b/Mage.Sets/src/mage/cards/s/SimicSignet.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jonubuu
*/
-public class SimicSignet extends CardImpl {
+public final class SimicSignet extends CardImpl {
public SimicSignet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SimicSkySwallower.java b/Mage.Sets/src/mage/cards/s/SimicSkySwallower.java
index aa8e03147ce..b7e92a7158f 100644
--- a/Mage.Sets/src/mage/cards/s/SimicSkySwallower.java
+++ b/Mage.Sets/src/mage/cards/s/SimicSkySwallower.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SimicSkySwallower extends CardImpl {
+public final class SimicSkySwallower extends CardImpl {
public SimicSkySwallower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Simoon.java b/Mage.Sets/src/mage/cards/s/Simoon.java
index 253f8c27448..6be8dabf41c 100644
--- a/Mage.Sets/src/mage/cards/s/Simoon.java
+++ b/Mage.Sets/src/mage/cards/s/Simoon.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class Simoon extends CardImpl {
+public final class Simoon extends CardImpl {
public Simoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Simplify.java b/Mage.Sets/src/mage/cards/s/Simplify.java
index c7426182fc6..50f208a4046 100644
--- a/Mage.Sets/src/mage/cards/s/Simplify.java
+++ b/Mage.Sets/src/mage/cards/s/Simplify.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterControlledEnchantmentPermanent;
*
* @author icetc
*/
-public class Simplify extends CardImpl {
+public final class Simplify extends CardImpl {
public Simplify(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Simulacrum.java b/Mage.Sets/src/mage/cards/s/Simulacrum.java
index b32fe21852c..a514213eb10 100644
--- a/Mage.Sets/src/mage/cards/s/Simulacrum.java
+++ b/Mage.Sets/src/mage/cards/s/Simulacrum.java
@@ -44,7 +44,7 @@ import mage.watchers.common.AmountOfDamageAPlayerReceivedThisTurnWatcher;
*
* @author MTGfan
*/
-public class Simulacrum extends CardImpl {
+public final class Simulacrum extends CardImpl {
public Simulacrum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SinCollector.java b/Mage.Sets/src/mage/cards/s/SinCollector.java
index 68ab478c2ec..dbf00b1a0be 100644
--- a/Mage.Sets/src/mage/cards/s/SinCollector.java
+++ b/Mage.Sets/src/mage/cards/s/SinCollector.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*/
-public class SinCollector extends CardImpl {
+public final class SinCollector extends CardImpl {
public SinCollector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SinProdder.java b/Mage.Sets/src/mage/cards/s/SinProdder.java
index 0454e19d78f..4d52245eb4c 100644
--- a/Mage.Sets/src/mage/cards/s/SinProdder.java
+++ b/Mage.Sets/src/mage/cards/s/SinProdder.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class SinProdder extends CardImpl {
+public final class SinProdder extends CardImpl {
public SinProdder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Sindbad.java b/Mage.Sets/src/mage/cards/s/Sindbad.java
index a87f4598621..0239f7a668f 100644
--- a/Mage.Sets/src/mage/cards/s/Sindbad.java
+++ b/Mage.Sets/src/mage/cards/s/Sindbad.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author MarcoMarin
*/
-public class Sindbad extends CardImpl {
+public final class Sindbad extends CardImpl {
public Sindbad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SinewSliver.java b/Mage.Sets/src/mage/cards/s/SinewSliver.java
index 59c86dcd7b1..65117038e94 100644
--- a/Mage.Sets/src/mage/cards/s/SinewSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SinewSliver.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Plopman
*/
-public class SinewSliver extends CardImpl {
+public final class SinewSliver extends CardImpl {
public SinewSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Singe.java b/Mage.Sets/src/mage/cards/s/Singe.java
index e89dbbf689c..cb8f6ba7015 100644
--- a/Mage.Sets/src/mage/cards/s/Singe.java
+++ b/Mage.Sets/src/mage/cards/s/Singe.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class Singe extends CardImpl {
+public final class Singe extends CardImpl {
public Singe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SingeMindOgre.java b/Mage.Sets/src/mage/cards/s/SingeMindOgre.java
index 27b22e8df76..a2c2fa882f7 100644
--- a/Mage.Sets/src/mage/cards/s/SingeMindOgre.java
+++ b/Mage.Sets/src/mage/cards/s/SingeMindOgre.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class SingeMindOgre extends CardImpl {
+public final class SingeMindOgre extends CardImpl {
public SingeMindOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SingingBellStrike.java b/Mage.Sets/src/mage/cards/s/SingingBellStrike.java
index fd7d244ee82..1726cf5df90 100644
--- a/Mage.Sets/src/mage/cards/s/SingingBellStrike.java
+++ b/Mage.Sets/src/mage/cards/s/SingingBellStrike.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SingingBellStrike extends CardImpl {
+public final class SingingBellStrike extends CardImpl {
public SingingBellStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SingingTree.java b/Mage.Sets/src/mage/cards/s/SingingTree.java
index c17e3ffa9ae..0ce49670e85 100644
--- a/Mage.Sets/src/mage/cards/s/SingingTree.java
+++ b/Mage.Sets/src/mage/cards/s/SingingTree.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author MarcoMarin
*/
-public class SingingTree extends CardImpl {
+public final class SingingTree extends CardImpl {
public SingingTree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SinisterConcoction.java b/Mage.Sets/src/mage/cards/s/SinisterConcoction.java
index 3fd393340e6..3940f0e53db 100644
--- a/Mage.Sets/src/mage/cards/s/SinisterConcoction.java
+++ b/Mage.Sets/src/mage/cards/s/SinisterConcoction.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SinisterConcoction extends CardImpl {
+public final class SinisterConcoction extends CardImpl {
public SinisterConcoction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SinisterPossession.java b/Mage.Sets/src/mage/cards/s/SinisterPossession.java
index 5967d27ced2..f5be635ecc1 100644
--- a/Mage.Sets/src/mage/cards/s/SinisterPossession.java
+++ b/Mage.Sets/src/mage/cards/s/SinisterPossession.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
-public class SinisterPossession extends CardImpl {
+public final class SinisterPossession extends CardImpl {
public SinisterPossession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SinisterStrength.java b/Mage.Sets/src/mage/cards/s/SinisterStrength.java
index 6be98450891..6640e52ad0b 100644
--- a/Mage.Sets/src/mage/cards/s/SinisterStrength.java
+++ b/Mage.Sets/src/mage/cards/s/SinisterStrength.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class SinisterStrength extends CardImpl {
+public final class SinisterStrength extends CardImpl {
public SinisterStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SinkIntoTakenuma.java b/Mage.Sets/src/mage/cards/s/SinkIntoTakenuma.java
index 99e5c2edb8d..f0dbfd8bbe4 100644
--- a/Mage.Sets/src/mage/cards/s/SinkIntoTakenuma.java
+++ b/Mage.Sets/src/mage/cards/s/SinkIntoTakenuma.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class SinkIntoTakenuma extends CardImpl {
+public final class SinkIntoTakenuma extends CardImpl {
public SinkIntoTakenuma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Sinkhole.java b/Mage.Sets/src/mage/cards/s/Sinkhole.java
index 96c8dd916bd..886aca9a439 100644
--- a/Mage.Sets/src/mage/cards/s/Sinkhole.java
+++ b/Mage.Sets/src/mage/cards/s/Sinkhole.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class Sinkhole extends CardImpl {
+public final class Sinkhole extends CardImpl {
public Sinkhole(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SinkingFeeling.java b/Mage.Sets/src/mage/cards/s/SinkingFeeling.java
index 08baf366f7f..f6d73977ad7 100644
--- a/Mage.Sets/src/mage/cards/s/SinkingFeeling.java
+++ b/Mage.Sets/src/mage/cards/s/SinkingFeeling.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class SinkingFeeling extends CardImpl {
+public final class SinkingFeeling extends CardImpl {
public SinkingFeeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SinsOfThePast.java b/Mage.Sets/src/mage/cards/s/SinsOfThePast.java
index 92038deed8a..5b9bda3e030 100644
--- a/Mage.Sets/src/mage/cards/s/SinsOfThePast.java
+++ b/Mage.Sets/src/mage/cards/s/SinsOfThePast.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class SinsOfThePast extends CardImpl {
+public final class SinsOfThePast extends CardImpl {
public SinsOfThePast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SinstrikersWill.java b/Mage.Sets/src/mage/cards/s/SinstrikersWill.java
index 649719d3863..877c8957678 100644
--- a/Mage.Sets/src/mage/cards/s/SinstrikersWill.java
+++ b/Mage.Sets/src/mage/cards/s/SinstrikersWill.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author TheElk801
*/
-public class SinstrikersWill extends CardImpl {
+public final class SinstrikersWill extends CardImpl {
public SinstrikersWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SinuousPredator.java b/Mage.Sets/src/mage/cards/s/SinuousPredator.java
index 2af30aba37e..1e312ddca25 100644
--- a/Mage.Sets/src/mage/cards/s/SinuousPredator.java
+++ b/Mage.Sets/src/mage/cards/s/SinuousPredator.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SinuousPredator extends CardImpl {
+public final class SinuousPredator extends CardImpl {
public SinuousPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/s/SinuousStriker.java b/Mage.Sets/src/mage/cards/s/SinuousStriker.java
index bbdcdda44da..080d79a3c57 100644
--- a/Mage.Sets/src/mage/cards/s/SinuousStriker.java
+++ b/Mage.Sets/src/mage/cards/s/SinuousStriker.java
@@ -14,7 +14,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
-public class SinuousStriker extends CardImpl {
+public final class SinuousStriker extends CardImpl {
private static String rule = "Eternalize - {3}{U}{U}, Discard a card ({3}{U}{U}, Discard a card, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie";
diff --git a/Mage.Sets/src/mage/cards/s/SinuousVermin.java b/Mage.Sets/src/mage/cards/s/SinuousVermin.java
index c2313318383..d57a1226064 100644
--- a/Mage.Sets/src/mage/cards/s/SinuousVermin.java
+++ b/Mage.Sets/src/mage/cards/s/SinuousVermin.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SinuousVermin extends CardImpl {
+public final class SinuousVermin extends CardImpl {
public SinuousVermin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SipOfHemlock.java b/Mage.Sets/src/mage/cards/s/SipOfHemlock.java
index 4f40b8d8151..824159ad705 100644
--- a/Mage.Sets/src/mage/cards/s/SipOfHemlock.java
+++ b/Mage.Sets/src/mage/cards/s/SipOfHemlock.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SipOfHemlock extends CardImpl {
+public final class SipOfHemlock extends CardImpl {
public SipOfHemlock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SirShandlarOfEberyn.java b/Mage.Sets/src/mage/cards/s/SirShandlarOfEberyn.java
index 367304dbd32..46f34b60729 100644
--- a/Mage.Sets/src/mage/cards/s/SirShandlarOfEberyn.java
+++ b/Mage.Sets/src/mage/cards/s/SirShandlarOfEberyn.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class SirShandlarOfEberyn extends CardImpl {
+public final class SirShandlarOfEberyn extends CardImpl {
public SirShandlarOfEberyn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SireOfInsanity.java b/Mage.Sets/src/mage/cards/s/SireOfInsanity.java
index 5791045b729..b6a4f02c98a 100644
--- a/Mage.Sets/src/mage/cards/s/SireOfInsanity.java
+++ b/Mage.Sets/src/mage/cards/s/SireOfInsanity.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*/
-public class SireOfInsanity extends CardImpl {
+public final class SireOfInsanity extends CardImpl {
public SireOfInsanity (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SireOfStagnation.java b/Mage.Sets/src/mage/cards/s/SireOfStagnation.java
index 655ce6cdbce..372ca69193c 100644
--- a/Mage.Sets/src/mage/cards/s/SireOfStagnation.java
+++ b/Mage.Sets/src/mage/cards/s/SireOfStagnation.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class SireOfStagnation extends CardImpl {
+public final class SireOfStagnation extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
private static final String rule = "Whenever a land enters the battlefield under an opponent's control, that player exiles the top two cards of their library and you draw two cards.";
diff --git a/Mage.Sets/src/mage/cards/s/SireOfTheStorm.java b/Mage.Sets/src/mage/cards/s/SireOfTheStorm.java
index 017c9370881..b3716160d5d 100644
--- a/Mage.Sets/src/mage/cards/s/SireOfTheStorm.java
+++ b/Mage.Sets/src/mage/cards/s/SireOfTheStorm.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
/**
* @author Loki
*/
-public class SireOfTheStorm extends CardImpl {
+public final class SireOfTheStorm extends CardImpl {
public SireOfTheStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SirenLookout.java b/Mage.Sets/src/mage/cards/s/SirenLookout.java
index 534845b64e5..a14f0f9514f 100644
--- a/Mage.Sets/src/mage/cards/s/SirenLookout.java
+++ b/Mage.Sets/src/mage/cards/s/SirenLookout.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class SirenLookout extends CardImpl {
+public final class SirenLookout extends CardImpl {
public SirenLookout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SirenOfTheFangedCoast.java b/Mage.Sets/src/mage/cards/s/SirenOfTheFangedCoast.java
index b3651f603cc..7728ee1b5ac 100644
--- a/Mage.Sets/src/mage/cards/s/SirenOfTheFangedCoast.java
+++ b/Mage.Sets/src/mage/cards/s/SirenOfTheFangedCoast.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SirenOfTheFangedCoast extends CardImpl {
+public final class SirenOfTheFangedCoast extends CardImpl {
public SirenOfTheFangedCoast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SirenOfTheSilentSong.java b/Mage.Sets/src/mage/cards/s/SirenOfTheSilentSong.java
index d40a148a989..67a4fe494c7 100644
--- a/Mage.Sets/src/mage/cards/s/SirenOfTheSilentSong.java
+++ b/Mage.Sets/src/mage/cards/s/SirenOfTheSilentSong.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class SirenOfTheSilentSong extends CardImpl {
+public final class SirenOfTheSilentSong extends CardImpl {
public SirenOfTheSilentSong(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SirenReaver.java b/Mage.Sets/src/mage/cards/s/SirenReaver.java
index f8df0f59e3d..7273bf2a339 100644
--- a/Mage.Sets/src/mage/cards/s/SirenReaver.java
+++ b/Mage.Sets/src/mage/cards/s/SirenReaver.java
@@ -40,12 +40,13 @@ import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
+import mage.watchers.common.PlayerAttackedWatcher;
/**
*
* @author LevelX2
*/
-public class SirenReaver extends CardImpl {
+public final class SirenReaver extends CardImpl {
public SirenReaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
@@ -59,7 +60,7 @@ public class SirenReaver extends CardImpl {
Ability ability = new SimpleStaticAbility(Zone.STACK, new SpellCostReductionSourceEffect(1, RaidCondition.instance));
ability.setAbilityWord(AbilityWord.RAID);
ability.setRuleAtTheTop(true);
- this.addAbility(ability);
+ this.addAbility(ability, new PlayerAttackedWatcher());
// Flying
this.addAbility(FlyingAbility.getInstance());
diff --git a/Mage.Sets/src/mage/cards/s/SirenSongLyre.java b/Mage.Sets/src/mage/cards/s/SirenSongLyre.java
index 56c57519854..e2c9a95f065 100644
--- a/Mage.Sets/src/mage/cards/s/SirenSongLyre.java
+++ b/Mage.Sets/src/mage/cards/s/SirenSongLyre.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SirenSongLyre extends CardImpl {
+public final class SirenSongLyre extends CardImpl {
public SirenSongLyre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SirenStormtamer.java b/Mage.Sets/src/mage/cards/s/SirenStormtamer.java
index 86bfb89c894..b1ace17573e 100644
--- a/Mage.Sets/src/mage/cards/s/SirenStormtamer.java
+++ b/Mage.Sets/src/mage/cards/s/SirenStormtamer.java
@@ -56,7 +56,7 @@ import mage.target.Targets;
*
* @author spjspj
*/
-public class SirenStormtamer extends CardImpl {
+public final class SirenStormtamer extends CardImpl {
public SirenStormtamer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SirensCall.java b/Mage.Sets/src/mage/cards/s/SirensCall.java
index 301d0e422ea..1562853a8ad 100644
--- a/Mage.Sets/src/mage/cards/s/SirensCall.java
+++ b/Mage.Sets/src/mage/cards/s/SirensCall.java
@@ -53,7 +53,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author emerald000
*/
-public class SirensCall extends CardImpl {
+public final class SirensCall extends CardImpl {
public SirensCall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SirensRuse.java b/Mage.Sets/src/mage/cards/s/SirensRuse.java
index f9a040d090d..6ad21648050 100644
--- a/Mage.Sets/src/mage/cards/s/SirensRuse.java
+++ b/Mage.Sets/src/mage/cards/s/SirensRuse.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class SirensRuse extends CardImpl {
+public final class SirensRuse extends CardImpl {
public SirensRuse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SisaysIngenuity.java b/Mage.Sets/src/mage/cards/s/SisaysIngenuity.java
index 7834a729aee..3b4e01046bf 100644
--- a/Mage.Sets/src/mage/cards/s/SisaysIngenuity.java
+++ b/Mage.Sets/src/mage/cards/s/SisaysIngenuity.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SisaysIngenuity extends CardImpl {
+public final class SisaysIngenuity extends CardImpl {
public SisaysIngenuity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SisaysRing.java b/Mage.Sets/src/mage/cards/s/SisaysRing.java
index 981529ca9c0..0876ab7c1a9 100644
--- a/Mage.Sets/src/mage/cards/s/SisaysRing.java
+++ b/Mage.Sets/src/mage/cards/s/SisaysRing.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SisaysRing extends CardImpl {
+public final class SisaysRing extends CardImpl {
public SisaysRing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SistersOfStoneDeath.java b/Mage.Sets/src/mage/cards/s/SistersOfStoneDeath.java
index 0fd4b4a636b..acc6799c34d 100644
--- a/Mage.Sets/src/mage/cards/s/SistersOfStoneDeath.java
+++ b/Mage.Sets/src/mage/cards/s/SistersOfStoneDeath.java
@@ -60,7 +60,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class SistersOfStoneDeath extends CardImpl {
+public final class SistersOfStoneDeath extends CardImpl {
private UUID exileId = UUID.randomUUID();
diff --git a/Mage.Sets/src/mage/cards/s/SistersOfTheFlame.java b/Mage.Sets/src/mage/cards/s/SistersOfTheFlame.java
index 8315f801488..74b7f7c5b78 100644
--- a/Mage.Sets/src/mage/cards/s/SistersOfTheFlame.java
+++ b/Mage.Sets/src/mage/cards/s/SistersOfTheFlame.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SistersOfTheFlame extends CardImpl {
+public final class SistersOfTheFlame extends CardImpl {
public SistersOfTheFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SithAssassin.java b/Mage.Sets/src/mage/cards/s/SithAssassin.java
index 2e46269bd41..515c44bad77 100644
--- a/Mage.Sets/src/mage/cards/s/SithAssassin.java
+++ b/Mage.Sets/src/mage/cards/s/SithAssassin.java
@@ -49,7 +49,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class SithAssassin extends CardImpl {
+public final class SithAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/SithCitadel.java b/Mage.Sets/src/mage/cards/s/SithCitadel.java
index 1594330baeb..862ce585343 100644
--- a/Mage.Sets/src/mage/cards/s/SithCitadel.java
+++ b/Mage.Sets/src/mage/cards/s/SithCitadel.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Styxo
*/
-public class SithCitadel extends CardImpl {
+public final class SithCitadel extends CardImpl {
public SithCitadel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SithEvoker.java b/Mage.Sets/src/mage/cards/s/SithEvoker.java
index f550d53b265..082e74b9057 100644
--- a/Mage.Sets/src/mage/cards/s/SithEvoker.java
+++ b/Mage.Sets/src/mage/cards/s/SithEvoker.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Styxo
*/
-public class SithEvoker extends CardImpl {
+public final class SithEvoker extends CardImpl {
public SithEvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SithHolocron.java b/Mage.Sets/src/mage/cards/s/SithHolocron.java
index 436fbeb73eb..f4639532644 100644
--- a/Mage.Sets/src/mage/cards/s/SithHolocron.java
+++ b/Mage.Sets/src/mage/cards/s/SithHolocron.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class SithHolocron extends CardImpl {
+public final class SithHolocron extends CardImpl {
public SithHolocron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SithInquisitor.java b/Mage.Sets/src/mage/cards/s/SithInquisitor.java
index 90be7ec2d02..c01247eb07e 100644
--- a/Mage.Sets/src/mage/cards/s/SithInquisitor.java
+++ b/Mage.Sets/src/mage/cards/s/SithInquisitor.java
@@ -45,7 +45,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class SithInquisitor extends CardImpl {
+public final class SithInquisitor extends CardImpl {
public SithInquisitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SithLord.java b/Mage.Sets/src/mage/cards/s/SithLord.java
index 60255f1c544..c652eced0b1 100644
--- a/Mage.Sets/src/mage/cards/s/SithLord.java
+++ b/Mage.Sets/src/mage/cards/s/SithLord.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author Styxo
*/
-public class SithLord extends CardImpl {
+public final class SithLord extends CardImpl {
private static final String rule = "with X +1/+1 counters on it, where X is the total life lost by your opponents this turn";
diff --git a/Mage.Sets/src/mage/cards/s/SithMagic.java b/Mage.Sets/src/mage/cards/s/SithMagic.java
index 8d99856f716..2e8c3dc8c0f 100644
--- a/Mage.Sets/src/mage/cards/s/SithMagic.java
+++ b/Mage.Sets/src/mage/cards/s/SithMagic.java
@@ -64,7 +64,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class SithMagic extends CardImpl {
+public final class SithMagic extends CardImpl {
public SithMagic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SithManipulator.java b/Mage.Sets/src/mage/cards/s/SithManipulator.java
index 727b2d9d00a..4f38bf3e122 100644
--- a/Mage.Sets/src/mage/cards/s/SithManipulator.java
+++ b/Mage.Sets/src/mage/cards/s/SithManipulator.java
@@ -47,7 +47,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class SithManipulator extends CardImpl {
+public final class SithManipulator extends CardImpl {
public SithManipulator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SithMarauder.java b/Mage.Sets/src/mage/cards/s/SithMarauder.java
index 5261b8ff0f7..5900dcd00c0 100644
--- a/Mage.Sets/src/mage/cards/s/SithMarauder.java
+++ b/Mage.Sets/src/mage/cards/s/SithMarauder.java
@@ -45,7 +45,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class SithMarauder extends CardImpl {
+public final class SithMarauder extends CardImpl {
public SithMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SithMindseer.java b/Mage.Sets/src/mage/cards/s/SithMindseer.java
index bd4f53c91dc..ad15984c82f 100644
--- a/Mage.Sets/src/mage/cards/s/SithMindseer.java
+++ b/Mage.Sets/src/mage/cards/s/SithMindseer.java
@@ -46,7 +46,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class SithMindseer extends CardImpl {
+public final class SithMindseer extends CardImpl {
public SithMindseer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SithRavager.java b/Mage.Sets/src/mage/cards/s/SithRavager.java
index 72ced66fbd9..8027b52945a 100644
--- a/Mage.Sets/src/mage/cards/s/SithRavager.java
+++ b/Mage.Sets/src/mage/cards/s/SithRavager.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author Styxo
*/
-public class SithRavager extends CardImpl {
+public final class SithRavager extends CardImpl {
public SithRavager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SithRuins.java b/Mage.Sets/src/mage/cards/s/SithRuins.java
index 05be1f30abe..b92ae609f13 100644
--- a/Mage.Sets/src/mage/cards/s/SithRuins.java
+++ b/Mage.Sets/src/mage/cards/s/SithRuins.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class SithRuins extends CardImpl {
+public final class SithRuins extends CardImpl {
public SithRuins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SithSorcerer.java b/Mage.Sets/src/mage/cards/s/SithSorcerer.java
index ae8324a2da2..78590fe2dd4 100644
--- a/Mage.Sets/src/mage/cards/s/SithSorcerer.java
+++ b/Mage.Sets/src/mage/cards/s/SithSorcerer.java
@@ -45,7 +45,7 @@ import mage.watchers.common.LifeLossOtherFromCombatWatcher;
*
* @author Styxo
*/
-public class SithSorcerer extends CardImpl {
+public final class SithSorcerer extends CardImpl {
public SithSorcerer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SithThoughtseeker.java b/Mage.Sets/src/mage/cards/s/SithThoughtseeker.java
index d772c27ac73..a1e5a94e52a 100644
--- a/Mage.Sets/src/mage/cards/s/SithThoughtseeker.java
+++ b/Mage.Sets/src/mage/cards/s/SithThoughtseeker.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class SithThoughtseeker extends CardImpl {
+public final class SithThoughtseeker extends CardImpl {
public SithThoughtseeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SivitriScarzam.java b/Mage.Sets/src/mage/cards/s/SivitriScarzam.java
index d64a0ac174a..8e3d4740ddb 100644
--- a/Mage.Sets/src/mage/cards/s/SivitriScarzam.java
+++ b/Mage.Sets/src/mage/cards/s/SivitriScarzam.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class SivitriScarzam extends CardImpl {
+public final class SivitriScarzam extends CardImpl {
public SivitriScarzam(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SivvisRuse.java b/Mage.Sets/src/mage/cards/s/SivvisRuse.java
index a3d9829f2a6..77c3f8893aa 100644
--- a/Mage.Sets/src/mage/cards/s/SivvisRuse.java
+++ b/Mage.Sets/src/mage/cards/s/SivvisRuse.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class SivvisRuse extends CardImpl {
+public final class SivvisRuse extends CardImpl {
private static final FilterPermanent filterMountain = new FilterPermanent();
private static final FilterPermanent filterPlains = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SivvisValor.java b/Mage.Sets/src/mage/cards/s/SivvisValor.java
index 11f98de471f..af6dffdf619 100644
--- a/Mage.Sets/src/mage/cards/s/SivvisValor.java
+++ b/Mage.Sets/src/mage/cards/s/SivvisValor.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class SivvisValor extends CardImpl {
+public final class SivvisValor extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("If you control a Plains");
private static final FilterControlledCreaturePermanent filterCreature = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SixthSense.java b/Mage.Sets/src/mage/cards/s/SixthSense.java
index 661fd98ab70..2b741c64811 100644
--- a/Mage.Sets/src/mage/cards/s/SixthSense.java
+++ b/Mage.Sets/src/mage/cards/s/SixthSense.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SixthSense extends CardImpl {
+public final class SixthSense extends CardImpl {
public SixthSense(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Sizzle.java b/Mage.Sets/src/mage/cards/s/Sizzle.java
index 7c2b8202f2a..6c58e00424e 100644
--- a/Mage.Sets/src/mage/cards/s/Sizzle.java
+++ b/Mage.Sets/src/mage/cards/s/Sizzle.java
@@ -38,7 +38,7 @@ import mage.constants.TargetController;
*
* @author dustinconrad
*/
-public class Sizzle extends CardImpl {
+public final class Sizzle extends CardImpl {
public Sizzle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkaabGoliath.java b/Mage.Sets/src/mage/cards/s/SkaabGoliath.java
index 216e7b3ca6b..8e06ddd9a43 100644
--- a/Mage.Sets/src/mage/cards/s/SkaabGoliath.java
+++ b/Mage.Sets/src/mage/cards/s/SkaabGoliath.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Alvin
*/
-public class SkaabGoliath extends CardImpl {
+public final class SkaabGoliath extends CardImpl {
public SkaabGoliath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkaabRuinator.java b/Mage.Sets/src/mage/cards/s/SkaabRuinator.java
index 8dea4f89e35..fc71c2cf9e2 100644
--- a/Mage.Sets/src/mage/cards/s/SkaabRuinator.java
+++ b/Mage.Sets/src/mage/cards/s/SkaabRuinator.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Alvin
*/
-public class SkaabRuinator extends CardImpl {
+public final class SkaabRuinator extends CardImpl {
public SkaabRuinator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkarrgGoliath.java b/Mage.Sets/src/mage/cards/s/SkarrgGoliath.java
index b0a0a4fd74c..fc22d48da2f 100644
--- a/Mage.Sets/src/mage/cards/s/SkarrgGoliath.java
+++ b/Mage.Sets/src/mage/cards/s/SkarrgGoliath.java
@@ -44,7 +44,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class SkarrgGoliath extends CardImpl {
+public final class SkarrgGoliath extends CardImpl {
public SkarrgGoliath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java b/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java
index cb82b89b267..1737c8883d7 100644
--- a/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java
+++ b/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class SkarrgGuildmage extends CardImpl {
+public final class SkarrgGuildmage extends CardImpl {
public SkarrgGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkarrgTheRagePits.java b/Mage.Sets/src/mage/cards/s/SkarrgTheRagePits.java
index 2777f8ca188..fcb6c6b2713 100644
--- a/Mage.Sets/src/mage/cards/s/SkarrgTheRagePits.java
+++ b/Mage.Sets/src/mage/cards/s/SkarrgTheRagePits.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SkarrgTheRagePits extends CardImpl {
+public final class SkarrgTheRagePits extends CardImpl {
public SkarrgTheRagePits(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SkarrganFirebird.java b/Mage.Sets/src/mage/cards/s/SkarrganFirebird.java
index fe8891b6521..15332f9186c 100644
--- a/Mage.Sets/src/mage/cards/s/SkarrganFirebird.java
+++ b/Mage.Sets/src/mage/cards/s/SkarrganFirebird.java
@@ -48,7 +48,7 @@ import mage.watchers.common.BloodthirstWatcher;
*
* @author LevelX2
*/
-public class SkarrganFirebird extends CardImpl {
+public final class SkarrganFirebird extends CardImpl {
public SkarrganFirebird(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkarrganPitSkulk.java b/Mage.Sets/src/mage/cards/s/SkarrganPitSkulk.java
index 9238743f9c5..97d271aed71 100644
--- a/Mage.Sets/src/mage/cards/s/SkarrganPitSkulk.java
+++ b/Mage.Sets/src/mage/cards/s/SkarrganPitSkulk.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class SkarrganPitSkulk extends CardImpl {
+public final class SkarrganPitSkulk extends CardImpl {
public SkarrganPitSkulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java b/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java
index 484d0df0212..a136a74f0ca 100644
--- a/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java
+++ b/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class SkarrganSkybreaker extends CardImpl {
+public final class SkarrganSkybreaker extends CardImpl {
public SkarrganSkybreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkeletalChangeling.java b/Mage.Sets/src/mage/cards/s/SkeletalChangeling.java
index 91c8082de77..75d459952ab 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletalChangeling.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletalChangeling.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SkeletalChangeling extends CardImpl {
+public final class SkeletalChangeling extends CardImpl {
public SkeletalChangeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkeletalCrocodile.java b/Mage.Sets/src/mage/cards/s/SkeletalCrocodile.java
index 5f570ef70e1..01139003427 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletalCrocodile.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletalCrocodile.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SkeletalCrocodile extends CardImpl {
+public final class SkeletalCrocodile extends CardImpl {
public SkeletalCrocodile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkeletalGrimace.java b/Mage.Sets/src/mage/cards/s/SkeletalGrimace.java
index 02ba604f986..4868284d5ad 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletalGrimace.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletalGrimace.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SkeletalGrimace extends CardImpl {
+public final class SkeletalGrimace extends CardImpl {
public SkeletalGrimace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkeletalKathari.java b/Mage.Sets/src/mage/cards/s/SkeletalKathari.java
index 2b8bb6516e2..c6223269a4b 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletalKathari.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletalKathari.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class SkeletalKathari extends CardImpl {
+public final class SkeletalKathari extends CardImpl {
public SkeletalKathari(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkeletalScrying.java b/Mage.Sets/src/mage/cards/s/SkeletalScrying.java
index ab4edea9e31..111af9c2be2 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletalScrying.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletalScrying.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jeffwadsworth
*/
-public class SkeletalScrying extends CardImpl {
+public final class SkeletalScrying extends CardImpl {
public SkeletalScrying(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkeletalSnake.java b/Mage.Sets/src/mage/cards/s/SkeletalSnake.java
index a6110c4a934..f414fa3dddd 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletalSnake.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletalSnake.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SkeletalSnake extends CardImpl {
+public final class SkeletalSnake extends CardImpl {
public SkeletalSnake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkeletalVampire.java b/Mage.Sets/src/mage/cards/s/SkeletalVampire.java
index f76327185d5..2ee0a097858 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletalVampire.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletalVampire.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class SkeletalVampire extends CardImpl {
+public final class SkeletalVampire extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Bat");
diff --git a/Mage.Sets/src/mage/cards/s/SkeletalWurm.java b/Mage.Sets/src/mage/cards/s/SkeletalWurm.java
index ff3e4fe9661..902aedc7ab6 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletalWurm.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletalWurm.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class SkeletalWurm extends CardImpl {
+public final class SkeletalWurm extends CardImpl {
public SkeletalWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkeletonKey.java b/Mage.Sets/src/mage/cards/s/SkeletonKey.java
index 72dc2d91d3b..5dfc0631a3e 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletonKey.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletonKey.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SkeletonKey extends CardImpl {
+public final class SkeletonKey extends CardImpl {
public SkeletonKey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SkeletonShard.java b/Mage.Sets/src/mage/cards/s/SkeletonShard.java
index c9c5025b1eb..a4c3eb66500 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletonShard.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletonShard.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class SkeletonShard extends CardImpl {
+public final class SkeletonShard extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/SkeletonShip.java b/Mage.Sets/src/mage/cards/s/SkeletonShip.java
index c2cda92418e..a1718540a0e 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletonShip.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletonShip.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SkeletonShip extends CardImpl {
+public final class SkeletonShip extends CardImpl {
public SkeletonShip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Skeletonize.java b/Mage.Sets/src/mage/cards/s/Skeletonize.java
index df34cd23805..13bfd84e97b 100644
--- a/Mage.Sets/src/mage/cards/s/Skeletonize.java
+++ b/Mage.Sets/src/mage/cards/s/Skeletonize.java
@@ -50,7 +50,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author North
*/
-public class Skeletonize extends CardImpl {
+public final class Skeletonize extends CardImpl {
public Skeletonize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkillBorrower.java b/Mage.Sets/src/mage/cards/s/SkillBorrower.java
index f670fa857d4..26bddd49e5f 100644
--- a/Mage.Sets/src/mage/cards/s/SkillBorrower.java
+++ b/Mage.Sets/src/mage/cards/s/SkillBorrower.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class SkillBorrower extends CardImpl {
+public final class SkillBorrower extends CardImpl {
public SkillBorrower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkillfulLunge.java b/Mage.Sets/src/mage/cards/s/SkillfulLunge.java
index 31bb4f64371..2f42eb7cebd 100644
--- a/Mage.Sets/src/mage/cards/s/SkillfulLunge.java
+++ b/Mage.Sets/src/mage/cards/s/SkillfulLunge.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SkillfulLunge extends CardImpl {
+public final class SkillfulLunge extends CardImpl {
public SkillfulLunge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SkinInvasion.java b/Mage.Sets/src/mage/cards/s/SkinInvasion.java
index 1dbdcb24cf3..db175a597b1 100644
--- a/Mage.Sets/src/mage/cards/s/SkinInvasion.java
+++ b/Mage.Sets/src/mage/cards/s/SkinInvasion.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SkinInvasion extends CardImpl {
+public final class SkinInvasion extends CardImpl {
public SkinInvasion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkinShedder.java b/Mage.Sets/src/mage/cards/s/SkinShedder.java
index 6c3575ca6b9..f3eb330a4cf 100644
--- a/Mage.Sets/src/mage/cards/s/SkinShedder.java
+++ b/Mage.Sets/src/mage/cards/s/SkinShedder.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SkinShedder extends CardImpl {
+public final class SkinShedder extends CardImpl {
public SkinShedder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/s/SkinbrandGoblin.java b/Mage.Sets/src/mage/cards/s/SkinbrandGoblin.java
index 1ae40bd284d..4cf9cc97875 100644
--- a/Mage.Sets/src/mage/cards/s/SkinbrandGoblin.java
+++ b/Mage.Sets/src/mage/cards/s/SkinbrandGoblin.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class SkinbrandGoblin extends CardImpl {
+public final class SkinbrandGoblin extends CardImpl {
public SkinbrandGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Skinrender.java b/Mage.Sets/src/mage/cards/s/Skinrender.java
index 059a6b0d0cb..c125e833dc8 100644
--- a/Mage.Sets/src/mage/cards/s/Skinrender.java
+++ b/Mage.Sets/src/mage/cards/s/Skinrender.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author nantuko
*/
-public class Skinrender extends CardImpl {
+public final class Skinrender extends CardImpl {
public Skinrender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Skinshifter.java b/Mage.Sets/src/mage/cards/s/Skinshifter.java
index c9359e55c8a..75365e1ae2f 100644
--- a/Mage.Sets/src/mage/cards/s/Skinshifter.java
+++ b/Mage.Sets/src/mage/cards/s/Skinshifter.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.Token;
*
* @author North
*/
-public class Skinshifter extends CardImpl {
+public final class Skinshifter extends CardImpl {
public Skinshifter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Skinthinner.java b/Mage.Sets/src/mage/cards/s/Skinthinner.java
index 7f828aa3c48..997740e3f3b 100644
--- a/Mage.Sets/src/mage/cards/s/Skinthinner.java
+++ b/Mage.Sets/src/mage/cards/s/Skinthinner.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Skinthinner extends CardImpl {
+public final class Skinthinner extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/Skinwing.java b/Mage.Sets/src/mage/cards/s/Skinwing.java
index b65d022d326..bcff800fda4 100644
--- a/Mage.Sets/src/mage/cards/s/Skinwing.java
+++ b/Mage.Sets/src/mage/cards/s/Skinwing.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class Skinwing extends CardImpl {
+public final class Skinwing extends CardImpl {
public Skinwing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SkirgeFamiliar.java b/Mage.Sets/src/mage/cards/s/SkirgeFamiliar.java
index 860b439115e..3aa70166dbe 100644
--- a/Mage.Sets/src/mage/cards/s/SkirgeFamiliar.java
+++ b/Mage.Sets/src/mage/cards/s/SkirgeFamiliar.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SkirgeFamiliar extends CardImpl {
+public final class SkirgeFamiliar extends CardImpl {
public SkirgeFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkirkAlarmist.java b/Mage.Sets/src/mage/cards/s/SkirkAlarmist.java
index 800e42a89d8..0ef750efb7d 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkAlarmist.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkAlarmist.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class SkirkAlarmist extends CardImpl {
+public final class SkirkAlarmist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face-down creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SkirkCommando.java b/Mage.Sets/src/mage/cards/s/SkirkCommando.java
index 3578a700de4..8d49fb6f928 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkCommando.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkCommando.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BursegSardaukar
*/
-public class SkirkCommando extends CardImpl {
+public final class SkirkCommando extends CardImpl {
public SkirkCommando(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkirkDrillSergeant.java b/Mage.Sets/src/mage/cards/s/SkirkDrillSergeant.java
index 97c26f91443..9b9f63b1b67 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkDrillSergeant.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkDrillSergeant.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SkirkDrillSergeant extends CardImpl {
+public final class SkirkDrillSergeant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("or another Goblin");
diff --git a/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java b/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java
index 7329705bf08..19d903e5e20 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class SkirkFireMarshal extends CardImpl {
+public final class SkirkFireMarshal extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Goblins you control");
diff --git a/Mage.Sets/src/mage/cards/s/SkirkMarauder.java b/Mage.Sets/src/mage/cards/s/SkirkMarauder.java
index 91387e3b983..ea612c5bb49 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkMarauder.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkMarauder.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Temba21
*/
-public class SkirkMarauder extends CardImpl {
+public final class SkirkMarauder extends CardImpl {
public SkirkMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkirkOutrider.java b/Mage.Sets/src/mage/cards/s/SkirkOutrider.java
index d08dc3fdeff..28bff0babc2 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkOutrider.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkOutrider.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Wehk
*/
-public class SkirkOutrider extends CardImpl {
+public final class SkirkOutrider extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Beast");
diff --git a/Mage.Sets/src/mage/cards/s/SkirkProspector.java b/Mage.Sets/src/mage/cards/s/SkirkProspector.java
index ff171f7fd39..853acdc42c3 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkProspector.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkProspector.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class SkirkProspector extends CardImpl {
+public final class SkirkProspector extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin");
diff --git a/Mage.Sets/src/mage/cards/s/SkirkRidgeExhumer.java b/Mage.Sets/src/mage/cards/s/SkirkRidgeExhumer.java
index 76be3804303..8bbadbdb0a3 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkRidgeExhumer.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkRidgeExhumer.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.FesteringGoblinToken;
*
* @author LoneFox
*/
-public class SkirkRidgeExhumer extends CardImpl {
+public final class SkirkRidgeExhumer extends CardImpl {
public SkirkRidgeExhumer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkirkShaman.java b/Mage.Sets/src/mage/cards/s/SkirkShaman.java
index 5fcf2f32025..61d700b7bee 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkShaman.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkShaman.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class SkirkShaman extends CardImpl {
+public final class SkirkShaman extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by artifact creatures and/or red creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SkirkVolcanist.java b/Mage.Sets/src/mage/cards/s/SkirkVolcanist.java
index efdbfe4ed66..2557fc37924 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkVolcanist.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkVolcanist.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author fireshoes
*/
-public class SkirkVolcanist extends CardImpl {
+public final class SkirkVolcanist extends CardImpl {
private static final FilterControlledLandPermanent filterSacrifice = new FilterControlledLandPermanent("two Mountains");
diff --git a/Mage.Sets/src/mage/cards/s/SkirsdagCultist.java b/Mage.Sets/src/mage/cards/s/SkirsdagCultist.java
index eb403f45af3..f2bbc7cca7a 100644
--- a/Mage.Sets/src/mage/cards/s/SkirsdagCultist.java
+++ b/Mage.Sets/src/mage/cards/s/SkirsdagCultist.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author nantuko
*/
-public class SkirsdagCultist extends CardImpl {
+public final class SkirsdagCultist extends CardImpl {
public SkirsdagCultist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.java b/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.java
index ee561865321..4b47da93624 100644
--- a/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.java
+++ b/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SkirsdagFlayer extends CardImpl {
+public final class SkirsdagFlayer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Human");
diff --git a/Mage.Sets/src/mage/cards/s/SkirsdagHighPriest.java b/Mage.Sets/src/mage/cards/s/SkirsdagHighPriest.java
index d6c15c1b31a..5024b75bea6 100644
--- a/Mage.Sets/src/mage/cards/s/SkirsdagHighPriest.java
+++ b/Mage.Sets/src/mage/cards/s/SkirsdagHighPriest.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class SkirsdagHighPriest extends CardImpl {
+public final class SkirsdagHighPriest extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/SkirsdagSupplicant.java b/Mage.Sets/src/mage/cards/s/SkirsdagSupplicant.java
index 1c83fa6ec1f..4e02f2f14a3 100644
--- a/Mage.Sets/src/mage/cards/s/SkirsdagSupplicant.java
+++ b/Mage.Sets/src/mage/cards/s/SkirsdagSupplicant.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SkirsdagSupplicant extends CardImpl {
+public final class SkirsdagSupplicant extends CardImpl {
public SkirsdagSupplicant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkithiryxTheBlightDragon.java b/Mage.Sets/src/mage/cards/s/SkithiryxTheBlightDragon.java
index 94d598b52cb..9ba62a639ed 100644
--- a/Mage.Sets/src/mage/cards/s/SkithiryxTheBlightDragon.java
+++ b/Mage.Sets/src/mage/cards/s/SkithiryxTheBlightDragon.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SkithiryxTheBlightDragon extends CardImpl {
+public final class SkithiryxTheBlightDragon extends CardImpl {
public SkithiryxTheBlightDragon (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkitterOfLizards.java b/Mage.Sets/src/mage/cards/s/SkitterOfLizards.java
index 646c31235f3..a8516e75fdc 100644
--- a/Mage.Sets/src/mage/cards/s/SkitterOfLizards.java
+++ b/Mage.Sets/src/mage/cards/s/SkitterOfLizards.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class SkitterOfLizards extends CardImpl {
+public final class SkitterOfLizards extends CardImpl {
public SkitterOfLizards(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkitteringCrustacean.java b/Mage.Sets/src/mage/cards/s/SkitteringCrustacean.java
index e4bb9a59c75..120f9390460 100644
--- a/Mage.Sets/src/mage/cards/s/SkitteringCrustacean.java
+++ b/Mage.Sets/src/mage/cards/s/SkitteringCrustacean.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SkitteringCrustacean extends CardImpl {
+public final class SkitteringCrustacean extends CardImpl {
public SkitteringCrustacean(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkitteringHeartstopper.java b/Mage.Sets/src/mage/cards/s/SkitteringHeartstopper.java
index aeb338db171..5718cfdf02b 100644
--- a/Mage.Sets/src/mage/cards/s/SkitteringHeartstopper.java
+++ b/Mage.Sets/src/mage/cards/s/SkitteringHeartstopper.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SkitteringHeartstopper extends CardImpl {
+public final class SkitteringHeartstopper extends CardImpl {
public SkitteringHeartstopper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkitteringHorror.java b/Mage.Sets/src/mage/cards/s/SkitteringHorror.java
index 9c07f430ff6..bc592eaaa84 100644
--- a/Mage.Sets/src/mage/cards/s/SkitteringHorror.java
+++ b/Mage.Sets/src/mage/cards/s/SkitteringHorror.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author nigelzor
*/
-public class SkitteringHorror extends CardImpl {
+public final class SkitteringHorror extends CardImpl {
public SkitteringHorror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkitteringInvasion.java b/Mage.Sets/src/mage/cards/s/SkitteringInvasion.java
index d52e110c6ae..8bbe0c4ad96 100644
--- a/Mage.Sets/src/mage/cards/s/SkitteringInvasion.java
+++ b/Mage.Sets/src/mage/cards/s/SkitteringInvasion.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.EldraziSpawnToken;
*
* @author Loki
*/
-public class SkitteringInvasion extends CardImpl {
+public final class SkitteringInvasion extends CardImpl {
public SkitteringInvasion (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{7}");
diff --git a/Mage.Sets/src/mage/cards/s/SkitteringMonstrosity.java b/Mage.Sets/src/mage/cards/s/SkitteringMonstrosity.java
index 0ab70b9a017..d29da67799c 100644
--- a/Mage.Sets/src/mage/cards/s/SkitteringMonstrosity.java
+++ b/Mage.Sets/src/mage/cards/s/SkitteringMonstrosity.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author nigelzor
*/
-public class SkitteringMonstrosity extends CardImpl {
+public final class SkitteringMonstrosity extends CardImpl {
public SkitteringMonstrosity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkitteringSkirge.java b/Mage.Sets/src/mage/cards/s/SkitteringSkirge.java
index e892dccb52d..1cc87800cf4 100644
--- a/Mage.Sets/src/mage/cards/s/SkitteringSkirge.java
+++ b/Mage.Sets/src/mage/cards/s/SkitteringSkirge.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author hanasu
*/
-public class SkitteringSkirge extends CardImpl {
+public final class SkitteringSkirge extends CardImpl {
public SkitteringSkirge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkitteringSurveyor.java b/Mage.Sets/src/mage/cards/s/SkitteringSurveyor.java
index 143aef6e9e0..a8fe805dd3a 100644
--- a/Mage.Sets/src/mage/cards/s/SkitteringSurveyor.java
+++ b/Mage.Sets/src/mage/cards/s/SkitteringSurveyor.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class SkitteringSurveyor extends CardImpl {
+public final class SkitteringSurveyor extends CardImpl {
public SkitteringSurveyor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
@@ -52,7 +52,7 @@ public class SkitteringSurveyor extends CardImpl {
this.toughness = new MageInt(2);
// When Skittering Surveyor enters the battlefield, you may search your library for a basic land, reveal it, put it into your hand, then shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
}
public SkitteringSurveyor(final SkitteringSurveyor card) {
diff --git a/Mage.Sets/src/mage/cards/s/Skitterskin.java b/Mage.Sets/src/mage/cards/s/Skitterskin.java
index fa5973f65e5..f45819746d5 100644
--- a/Mage.Sets/src/mage/cards/s/Skitterskin.java
+++ b/Mage.Sets/src/mage/cards/s/Skitterskin.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class Skitterskin extends CardImpl {
+public final class Skitterskin extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("you control another colorless creature");
diff --git a/Mage.Sets/src/mage/cards/s/SkittishKavu.java b/Mage.Sets/src/mage/cards/s/SkittishKavu.java
index 0898bbc694c..b833e816d6c 100644
--- a/Mage.Sets/src/mage/cards/s/SkittishKavu.java
+++ b/Mage.Sets/src/mage/cards/s/SkittishKavu.java
@@ -52,7 +52,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class SkittishKavu extends CardImpl {
+public final class SkittishKavu extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white or blue creature");
diff --git a/Mage.Sets/src/mage/cards/s/SkittishValesk.java b/Mage.Sets/src/mage/cards/s/SkittishValesk.java
index 7b2605b3ba1..9679d490d7f 100644
--- a/Mage.Sets/src/mage/cards/s/SkittishValesk.java
+++ b/Mage.Sets/src/mage/cards/s/SkittishValesk.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class SkittishValesk extends CardImpl {
+public final class SkittishValesk extends CardImpl {
public SkittishValesk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Skizzik.java b/Mage.Sets/src/mage/cards/s/Skizzik.java
index 89596ce9a7a..bb170b7149d 100644
--- a/Mage.Sets/src/mage/cards/s/Skizzik.java
+++ b/Mage.Sets/src/mage/cards/s/Skizzik.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class Skizzik extends CardImpl {
+public final class Skizzik extends CardImpl {
public Skizzik(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkizzikSurger.java b/Mage.Sets/src/mage/cards/s/SkizzikSurger.java
index a5ef065e734..50412ba2f0c 100644
--- a/Mage.Sets/src/mage/cards/s/SkizzikSurger.java
+++ b/Mage.Sets/src/mage/cards/s/SkizzikSurger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class SkizzikSurger extends CardImpl {
+public final class SkizzikSurger extends CardImpl {
public SkizzikSurger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Skred.java b/Mage.Sets/src/mage/cards/s/Skred.java
index c32b1d33317..252b5aeb520 100644
--- a/Mage.Sets/src/mage/cards/s/Skred.java
+++ b/Mage.Sets/src/mage/cards/s/Skred.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author shieldal
*/
-public class Skred extends CardImpl {
+public final class Skred extends CardImpl {
public Skred(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Skulduggery.java b/Mage.Sets/src/mage/cards/s/Skulduggery.java
index b3d4dbf3287..ebe97f0a66c 100644
--- a/Mage.Sets/src/mage/cards/s/Skulduggery.java
+++ b/Mage.Sets/src/mage/cards/s/Skulduggery.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class Skulduggery extends CardImpl {
+public final class Skulduggery extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SkulkingFugitive.java b/Mage.Sets/src/mage/cards/s/SkulkingFugitive.java
index 1156142ceca..d8b2a9fe5d1 100644
--- a/Mage.Sets/src/mage/cards/s/SkulkingFugitive.java
+++ b/Mage.Sets/src/mage/cards/s/SkulkingFugitive.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class SkulkingFugitive extends CardImpl {
+public final class SkulkingFugitive extends CardImpl {
public SkulkingFugitive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkulkingGhost.java b/Mage.Sets/src/mage/cards/s/SkulkingGhost.java
index f76b161854e..4f16a52941e 100644
--- a/Mage.Sets/src/mage/cards/s/SkulkingGhost.java
+++ b/Mage.Sets/src/mage/cards/s/SkulkingGhost.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SkulkingGhost extends CardImpl {
+public final class SkulkingGhost extends CardImpl {
public SkulkingGhost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkulkingKnight.java b/Mage.Sets/src/mage/cards/s/SkulkingKnight.java
index 2115ef92d81..eb3d77dbb46 100644
--- a/Mage.Sets/src/mage/cards/s/SkulkingKnight.java
+++ b/Mage.Sets/src/mage/cards/s/SkulkingKnight.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SkulkingKnight extends CardImpl {
+public final class SkulkingKnight extends CardImpl {
public SkulkingKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkullCatapult.java b/Mage.Sets/src/mage/cards/s/SkullCatapult.java
index 8b297881605..a1649e336d2 100644
--- a/Mage.Sets/src/mage/cards/s/SkullCatapult.java
+++ b/Mage.Sets/src/mage/cards/s/SkullCatapult.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Quercitron
*/
-public class SkullCatapult extends CardImpl {
+public final class SkullCatapult extends CardImpl {
public SkullCatapult(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SkullCollector.java b/Mage.Sets/src/mage/cards/s/SkullCollector.java
index e2330392505..b7289fbc89e 100644
--- a/Mage.Sets/src/mage/cards/s/SkullCollector.java
+++ b/Mage.Sets/src/mage/cards/s/SkullCollector.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Loki
*/
-public class SkullCollector extends CardImpl {
+public final class SkullCollector extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SkullFracture.java b/Mage.Sets/src/mage/cards/s/SkullFracture.java
index 7842a0673e2..524669c0860 100644
--- a/Mage.Sets/src/mage/cards/s/SkullFracture.java
+++ b/Mage.Sets/src/mage/cards/s/SkullFracture.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author cbt33
*/
-public class SkullFracture extends CardImpl {
+public final class SkullFracture extends CardImpl {
public SkullFracture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkullOfOrm.java b/Mage.Sets/src/mage/cards/s/SkullOfOrm.java
index 8c452a5e7d8..dcfe1f83b60 100644
--- a/Mage.Sets/src/mage/cards/s/SkullOfOrm.java
+++ b/Mage.Sets/src/mage/cards/s/SkullOfOrm.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class SkullOfOrm extends CardImpl {
+public final class SkullOfOrm extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantment card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/SkullOfRamos.java b/Mage.Sets/src/mage/cards/s/SkullOfRamos.java
index 0aa16e4e713..18e2f4d7864 100644
--- a/Mage.Sets/src/mage/cards/s/SkullOfRamos.java
+++ b/Mage.Sets/src/mage/cards/s/SkullOfRamos.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Jgod
*/
-public class SkullOfRamos extends CardImpl {
+public final class SkullOfRamos extends CardImpl {
public SkullOfRamos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SkullRend.java b/Mage.Sets/src/mage/cards/s/SkullRend.java
index bde6fdc9e8c..52f1635151f 100644
--- a/Mage.Sets/src/mage/cards/s/SkullRend.java
+++ b/Mage.Sets/src/mage/cards/s/SkullRend.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SkullRend extends CardImpl {
+public final class SkullRend extends CardImpl {
public SkullRend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkullbriarTheWalkingGrave.java b/Mage.Sets/src/mage/cards/s/SkullbriarTheWalkingGrave.java
index a1f06691a3a..6dffca933e1 100644
--- a/Mage.Sets/src/mage/cards/s/SkullbriarTheWalkingGrave.java
+++ b/Mage.Sets/src/mage/cards/s/SkullbriarTheWalkingGrave.java
@@ -52,7 +52,7 @@ import mage.game.events.ZoneChangeEvent;
*
* @author anonymous
*/
-public class SkullbriarTheWalkingGrave extends CardImpl {
+public final class SkullbriarTheWalkingGrave extends CardImpl {
private Counters counters;
public SkullbriarTheWalkingGrave(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/s/Skullcage.java b/Mage.Sets/src/mage/cards/s/Skullcage.java
index 2e735379cc7..05ecfc4d082 100644
--- a/Mage.Sets/src/mage/cards/s/Skullcage.java
+++ b/Mage.Sets/src/mage/cards/s/Skullcage.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class Skullcage extends CardImpl {
+public final class Skullcage extends CardImpl {
public Skullcage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/Skullclamp.java b/Mage.Sets/src/mage/cards/s/Skullclamp.java
index 709a5323cac..56b386492d4 100644
--- a/Mage.Sets/src/mage/cards/s/Skullclamp.java
+++ b/Mage.Sets/src/mage/cards/s/Skullclamp.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Skullclamp extends CardImpl {
+public final class Skullclamp extends CardImpl {
public Skullclamp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/Skullcrack.java b/Mage.Sets/src/mage/cards/s/Skullcrack.java
index 8f33a8ae580..c3e1fddaeb6 100644
--- a/Mage.Sets/src/mage/cards/s/Skullcrack.java
+++ b/Mage.Sets/src/mage/cards/s/Skullcrack.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class Skullcrack extends CardImpl {
+public final class Skullcrack extends CardImpl {
public Skullcrack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkullmaneBaku.java b/Mage.Sets/src/mage/cards/s/SkullmaneBaku.java
index 3856de41a27..8d568a17d40 100644
--- a/Mage.Sets/src/mage/cards/s/SkullmaneBaku.java
+++ b/Mage.Sets/src/mage/cards/s/SkullmaneBaku.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author LevelX2
*/
-public class SkullmaneBaku extends CardImpl {
+public final class SkullmaneBaku extends CardImpl {
public SkullmaneBaku(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkullmeadCauldron.java b/Mage.Sets/src/mage/cards/s/SkullmeadCauldron.java
index 7bf4e7de1ac..151e2f79f07 100644
--- a/Mage.Sets/src/mage/cards/s/SkullmeadCauldron.java
+++ b/Mage.Sets/src/mage/cards/s/SkullmeadCauldron.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Wehk
*/
-public class SkullmeadCauldron extends CardImpl {
+public final class SkullmeadCauldron extends CardImpl {
public SkullmeadCauldron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/Skullmulcher.java b/Mage.Sets/src/mage/cards/s/Skullmulcher.java
index f921a64eb90..9be2d2bd2bf 100644
--- a/Mage.Sets/src/mage/cards/s/Skullmulcher.java
+++ b/Mage.Sets/src/mage/cards/s/Skullmulcher.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Skullmulcher extends CardImpl {
+public final class Skullmulcher extends CardImpl {
public Skullmulcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Skullscorch.java b/Mage.Sets/src/mage/cards/s/Skullscorch.java
index 733f936b028..d56160db1c2 100644
--- a/Mage.Sets/src/mage/cards/s/Skullscorch.java
+++ b/Mage.Sets/src/mage/cards/s/Skullscorch.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author L_J (based on code by dustinconrad)
*/
-public class Skullscorch extends CardImpl {
+public final class Skullscorch extends CardImpl {
public Skullscorch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Skullsnatcher.java b/Mage.Sets/src/mage/cards/s/Skullsnatcher.java
index 75c961fbf20..42c53a0301c 100644
--- a/Mage.Sets/src/mage/cards/s/Skullsnatcher.java
+++ b/Mage.Sets/src/mage/cards/s/Skullsnatcher.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
*
* @author LevelX2
*/
-public class Skullsnatcher extends CardImpl {
+public final class Skullsnatcher extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("unblocked attacker you control");
diff --git a/Mage.Sets/src/mage/cards/s/Skulltap.java b/Mage.Sets/src/mage/cards/s/Skulltap.java
index b835052bcab..e320e218698 100644
--- a/Mage.Sets/src/mage/cards/s/Skulltap.java
+++ b/Mage.Sets/src/mage/cards/s/Skulltap.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class Skulltap extends CardImpl {
+public final class Skulltap extends CardImpl {
public Skulltap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Skullwinder.java b/Mage.Sets/src/mage/cards/s/Skullwinder.java
index 21dcbe76fd5..e0886a7d2ed 100644
--- a/Mage.Sets/src/mage/cards/s/Skullwinder.java
+++ b/Mage.Sets/src/mage/cards/s/Skullwinder.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class Skullwinder extends CardImpl {
+public final class Skullwinder extends CardImpl {
public Skullwinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyDiamond.java b/Mage.Sets/src/mage/cards/s/SkyDiamond.java
index 748224bb712..8212d35cd34 100644
--- a/Mage.Sets/src/mage/cards/s/SkyDiamond.java
+++ b/Mage.Sets/src/mage/cards/s/SkyDiamond.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Quercitron
*/
-public class SkyDiamond extends CardImpl {
+public final class SkyDiamond extends CardImpl {
public SkyDiamond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyEelSchool.java b/Mage.Sets/src/mage/cards/s/SkyEelSchool.java
index e4b7faf86f7..1202a6c3965 100644
--- a/Mage.Sets/src/mage/cards/s/SkyEelSchool.java
+++ b/Mage.Sets/src/mage/cards/s/SkyEelSchool.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SkyEelSchool extends CardImpl {
+public final class SkyEelSchool extends CardImpl {
public SkyEelSchool (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyHussar.java b/Mage.Sets/src/mage/cards/s/SkyHussar.java
index ebeb0ceed60..02a0f9cfcb8 100644
--- a/Mage.Sets/src/mage/cards/s/SkyHussar.java
+++ b/Mage.Sets/src/mage/cards/s/SkyHussar.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class SkyHussar extends CardImpl {
+public final class SkyHussar extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped white and/or blue creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SkyRuinDrake.java b/Mage.Sets/src/mage/cards/s/SkyRuinDrake.java
index bee800a8557..b4582a04c42 100644
--- a/Mage.Sets/src/mage/cards/s/SkyRuinDrake.java
+++ b/Mage.Sets/src/mage/cards/s/SkyRuinDrake.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SkyRuinDrake extends CardImpl {
+public final class SkyRuinDrake extends CardImpl {
public SkyRuinDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyScourer.java b/Mage.Sets/src/mage/cards/s/SkyScourer.java
index 70e52fdde26..f82dd6b1ddd 100644
--- a/Mage.Sets/src/mage/cards/s/SkyScourer.java
+++ b/Mage.Sets/src/mage/cards/s/SkyScourer.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
*
* @author LevelX2
*/
-public class SkyScourer extends CardImpl {
+public final class SkyScourer extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a colorless spell");
diff --git a/Mage.Sets/src/mage/cards/s/SkySkiff.java b/Mage.Sets/src/mage/cards/s/SkySkiff.java
index ddecf2d151b..1190aed0453 100644
--- a/Mage.Sets/src/mage/cards/s/SkySkiff.java
+++ b/Mage.Sets/src/mage/cards/s/SkySkiff.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class SkySkiff extends CardImpl {
+public final class SkySkiff extends CardImpl {
public SkySkiff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SkySpirit.java b/Mage.Sets/src/mage/cards/s/SkySpirit.java
index c92472fd503..84a849df967 100644
--- a/Mage.Sets/src/mage/cards/s/SkySpirit.java
+++ b/Mage.Sets/src/mage/cards/s/SkySpirit.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SkySpirit extends CardImpl {
+public final class SkySpirit extends CardImpl {
public SkySpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkySwallower.java b/Mage.Sets/src/mage/cards/s/SkySwallower.java
index 43c5758a8c7..fe6591ded19 100644
--- a/Mage.Sets/src/mage/cards/s/SkySwallower.java
+++ b/Mage.Sets/src/mage/cards/s/SkySwallower.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author ciaccona007
*/
-public class SkySwallower extends CardImpl {
+public final class SkySwallower extends CardImpl {
public SkySwallower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyTerror.java b/Mage.Sets/src/mage/cards/s/SkyTerror.java
index fd25a46b7f6..4b7d1364c08 100644
--- a/Mage.Sets/src/mage/cards/s/SkyTerror.java
+++ b/Mage.Sets/src/mage/cards/s/SkyTerror.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class SkyTerror extends CardImpl {
+public final class SkyTerror extends CardImpl {
public SkyTerror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyWeaver.java b/Mage.Sets/src/mage/cards/s/SkyWeaver.java
index 5c126683dc5..f23ad182f48 100644
--- a/Mage.Sets/src/mage/cards/s/SkyWeaver.java
+++ b/Mage.Sets/src/mage/cards/s/SkyWeaver.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SkyWeaver extends CardImpl {
+public final class SkyWeaver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white or black creature");
diff --git a/Mage.Sets/src/mage/cards/s/Skybind.java b/Mage.Sets/src/mage/cards/s/Skybind.java
index a464bdd26f9..d4ec7d38c42 100644
--- a/Mage.Sets/src/mage/cards/s/Skybind.java
+++ b/Mage.Sets/src/mage/cards/s/Skybind.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class Skybind extends CardImpl {
+public final class Skybind extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nonenchantment permanent");
diff --git a/Mage.Sets/src/mage/cards/s/SkybladeOfTheLegion.java b/Mage.Sets/src/mage/cards/s/SkybladeOfTheLegion.java
index 2b5bb63844b..33dd9ef3932 100644
--- a/Mage.Sets/src/mage/cards/s/SkybladeOfTheLegion.java
+++ b/Mage.Sets/src/mage/cards/s/SkybladeOfTheLegion.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class SkybladeOfTheLegion extends CardImpl {
+public final class SkybladeOfTheLegion extends CardImpl {
public SkybladeOfTheLegion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyblinderStaff.java b/Mage.Sets/src/mage/cards/s/SkyblinderStaff.java
index c2818f732b7..0f6e441188e 100644
--- a/Mage.Sets/src/mage/cards/s/SkyblinderStaff.java
+++ b/Mage.Sets/src/mage/cards/s/SkyblinderStaff.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class SkyblinderStaff extends CardImpl {
+public final class SkyblinderStaff extends CardImpl {
public SkyblinderStaff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyclawThrash.java b/Mage.Sets/src/mage/cards/s/SkyclawThrash.java
index 94df4e01ec1..1cb0f65a5cb 100644
--- a/Mage.Sets/src/mage/cards/s/SkyclawThrash.java
+++ b/Mage.Sets/src/mage/cards/s/SkyclawThrash.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class SkyclawThrash extends CardImpl {
+public final class SkyclawThrash extends CardImpl {
public SkyclawThrash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkycloudEgg.java b/Mage.Sets/src/mage/cards/s/SkycloudEgg.java
index 7d71f5ca0e3..0521ab08e4e 100644
--- a/Mage.Sets/src/mage/cards/s/SkycloudEgg.java
+++ b/Mage.Sets/src/mage/cards/s/SkycloudEgg.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SkycloudEgg extends CardImpl {
+public final class SkycloudEgg extends CardImpl {
public SkycloudEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SkycloudExpanse.java b/Mage.Sets/src/mage/cards/s/SkycloudExpanse.java
index e314da8f414..da88d1022c4 100644
--- a/Mage.Sets/src/mage/cards/s/SkycloudExpanse.java
+++ b/Mage.Sets/src/mage/cards/s/SkycloudExpanse.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class SkycloudExpanse extends CardImpl {
+public final class SkycloudExpanse extends CardImpl {
public SkycloudExpanse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SkyfireKirin.java b/Mage.Sets/src/mage/cards/s/SkyfireKirin.java
index 1410e6b31f1..f76c39fdd47 100644
--- a/Mage.Sets/src/mage/cards/s/SkyfireKirin.java
+++ b/Mage.Sets/src/mage/cards/s/SkyfireKirin.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author LevelX2
*/
-public class SkyfireKirin extends CardImpl {
+public final class SkyfireKirin extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/s/Skygames.java b/Mage.Sets/src/mage/cards/s/Skygames.java
index c92c2c1f7e8..31b176872a2 100644
--- a/Mage.Sets/src/mage/cards/s/Skygames.java
+++ b/Mage.Sets/src/mage/cards/s/Skygames.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class Skygames extends CardImpl {
+public final class Skygames extends CardImpl {
public Skygames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyhunterCub.java b/Mage.Sets/src/mage/cards/s/SkyhunterCub.java
index 10f42f5ac69..dd3deb86f0e 100644
--- a/Mage.Sets/src/mage/cards/s/SkyhunterCub.java
+++ b/Mage.Sets/src/mage/cards/s/SkyhunterCub.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Derpthemeus
*/
-public class SkyhunterCub extends CardImpl {
+public final class SkyhunterCub extends CardImpl {
private static final String rule1 = "As long as {this} is equipped, it gets +1/+1";
private static final String rule2 = "As long as {this} is equipped, it has flying";
diff --git a/Mage.Sets/src/mage/cards/s/SkyhunterPatrol.java b/Mage.Sets/src/mage/cards/s/SkyhunterPatrol.java
index 2a4bebecd03..33511b1aae2 100644
--- a/Mage.Sets/src/mage/cards/s/SkyhunterPatrol.java
+++ b/Mage.Sets/src/mage/cards/s/SkyhunterPatrol.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SkyhunterPatrol extends CardImpl {
+public final class SkyhunterPatrol extends CardImpl {
public SkyhunterPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyhunterProwler.java b/Mage.Sets/src/mage/cards/s/SkyhunterProwler.java
index a104f0307c3..336f0768838 100644
--- a/Mage.Sets/src/mage/cards/s/SkyhunterProwler.java
+++ b/Mage.Sets/src/mage/cards/s/SkyhunterProwler.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SkyhunterProwler extends CardImpl {
+public final class SkyhunterProwler extends CardImpl {
public SkyhunterProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyhunterSkirmisher.java b/Mage.Sets/src/mage/cards/s/SkyhunterSkirmisher.java
index 05b4d74d50c..52307429a2d 100644
--- a/Mage.Sets/src/mage/cards/s/SkyhunterSkirmisher.java
+++ b/Mage.Sets/src/mage/cards/s/SkyhunterSkirmisher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SkyhunterSkirmisher extends CardImpl {
+public final class SkyhunterSkirmisher extends CardImpl {
public SkyhunterSkirmisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyknightLegionnaire.java b/Mage.Sets/src/mage/cards/s/SkyknightLegionnaire.java
index ea54ea8e060..0dbb962e4d7 100644
--- a/Mage.Sets/src/mage/cards/s/SkyknightLegionnaire.java
+++ b/Mage.Sets/src/mage/cards/s/SkyknightLegionnaire.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SkyknightLegionnaire extends CardImpl {
+public final class SkyknightLegionnaire extends CardImpl {
public SkyknightLegionnaire (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Skylasher.java b/Mage.Sets/src/mage/cards/s/Skylasher.java
index 380bee2b4f0..be5cf9dc2dc 100644
--- a/Mage.Sets/src/mage/cards/s/Skylasher.java
+++ b/Mage.Sets/src/mage/cards/s/Skylasher.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Skylasher extends CardImpl {
+public final class Skylasher extends CardImpl {
public Skylasher (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkylineCascade.java b/Mage.Sets/src/mage/cards/s/SkylineCascade.java
index 3174913cfcb..9cb41a3d87e 100644
--- a/Mage.Sets/src/mage/cards/s/SkylineCascade.java
+++ b/Mage.Sets/src/mage/cards/s/SkylineCascade.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SkylineCascade extends CardImpl {
+public final class SkylineCascade extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SkylineDespot.java b/Mage.Sets/src/mage/cards/s/SkylineDespot.java
index 7524c59fc6b..26f77cd810e 100644
--- a/Mage.Sets/src/mage/cards/s/SkylineDespot.java
+++ b/Mage.Sets/src/mage/cards/s/SkylineDespot.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.DragonToken2;
*
* @author LevelX2
*/
-public class SkylineDespot extends CardImpl {
+public final class SkylineDespot extends CardImpl {
public SkylineDespot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkylinePredator.java b/Mage.Sets/src/mage/cards/s/SkylinePredator.java
index eff04809273..bfbf82ec753 100644
--- a/Mage.Sets/src/mage/cards/s/SkylinePredator.java
+++ b/Mage.Sets/src/mage/cards/s/SkylinePredator.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SkylinePredator extends CardImpl {
+public final class SkylinePredator extends CardImpl {
public SkylinePredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkymarchBloodletter.java b/Mage.Sets/src/mage/cards/s/SkymarchBloodletter.java
index ea776f269bf..4d5dd6584a0 100644
--- a/Mage.Sets/src/mage/cards/s/SkymarchBloodletter.java
+++ b/Mage.Sets/src/mage/cards/s/SkymarchBloodletter.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class SkymarchBloodletter extends CardImpl {
+public final class SkymarchBloodletter extends CardImpl {
public SkymarchBloodletter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkymarcherAspirant.java b/Mage.Sets/src/mage/cards/s/SkymarcherAspirant.java
index e46b9588c38..f483fa7b68a 100644
--- a/Mage.Sets/src/mage/cards/s/SkymarcherAspirant.java
+++ b/Mage.Sets/src/mage/cards/s/SkymarcherAspirant.java
@@ -1,80 +1,80 @@
-/*
- * 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.SimpleStaticAbility;
-import mage.abilities.condition.common.CitysBlessingCondition;
-import mage.abilities.decorator.ConditionalContinuousEffect;
-import mage.abilities.effects.ContinuousEffect;
-import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
-import mage.abilities.keyword.AscendAbility;
-import mage.abilities.keyword.FlyingAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.SubType;
-import mage.constants.Zone;
-
-/**
- *
- * @author LevelX2
- */
-public class SkymarcherAspirant extends CardImpl {
-
- public SkymarcherAspirant(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
-
- this.subtype.add(SubType.VAMPIRE);
- this.subtype.add(SubType.SOLDIER);
- this.power = new MageInt(2);
- this.toughness = new MageInt(1);
-
- // Ascend
- this.addAbility(new AscendAbility());
-
- // Skymarcher Aspirant has flying as long as you have the city's blessing.
- ContinuousEffect boostSource = new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield);
- ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, CitysBlessingCondition.instance,
- "{this} has flying as long as you have the city's blessing");
- Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
- this.addAbility(ability);
- }
-
- public SkymarcherAspirant(final SkymarcherAspirant card) {
- super(card);
- }
-
- @Override
- public SkymarcherAspirant copy() {
- return new SkymarcherAspirant(this);
- }
-}
+/*
+ * 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.SimpleStaticAbility;
+import mage.abilities.condition.common.CitysBlessingCondition;
+import mage.abilities.decorator.ConditionalContinuousEffect;
+import mage.abilities.effects.ContinuousEffect;
+import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
+import mage.abilities.keyword.AscendAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class SkymarcherAspirant extends CardImpl {
+
+ public SkymarcherAspirant(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
+
+ this.subtype.add(SubType.VAMPIRE);
+ this.subtype.add(SubType.SOLDIER);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(1);
+
+ // Ascend
+ this.addAbility(new AscendAbility());
+
+ // Skymarcher Aspirant has flying as long as you have the city's blessing.
+ ContinuousEffect boostSource = new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield);
+ ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, CitysBlessingCondition.instance,
+ "{this} has flying as long as you have the city's blessing");
+ Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
+ this.addAbility(ability);
+ }
+
+ public SkymarcherAspirant(final SkymarcherAspirant card) {
+ super(card);
+ }
+
+ @Override
+ public SkymarcherAspirant copy() {
+ return new SkymarcherAspirant(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/SkymarkRoc.java b/Mage.Sets/src/mage/cards/s/SkymarkRoc.java
index 428290d512f..9af072e0334 100644
--- a/Mage.Sets/src/mage/cards/s/SkymarkRoc.java
+++ b/Mage.Sets/src/mage/cards/s/SkymarkRoc.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SkymarkRoc extends CardImpl {
+public final class SkymarkRoc extends CardImpl {
public SkymarkRoc(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyrakerGiant.java b/Mage.Sets/src/mage/cards/s/SkyrakerGiant.java
index 8788cd558db..58f3cc9e93d 100644
--- a/Mage.Sets/src/mage/cards/s/SkyrakerGiant.java
+++ b/Mage.Sets/src/mage/cards/s/SkyrakerGiant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SkyrakerGiant extends CardImpl {
+public final class SkyrakerGiant extends CardImpl {
public SkyrakerGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyreachManta.java b/Mage.Sets/src/mage/cards/s/SkyreachManta.java
index a623331efaa..c1a2818e981 100644
--- a/Mage.Sets/src/mage/cards/s/SkyreachManta.java
+++ b/Mage.Sets/src/mage/cards/s/SkyreachManta.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SkyreachManta extends CardImpl {
+public final class SkyreachManta extends CardImpl {
public SkyreachManta(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/s/Skyreaping.java b/Mage.Sets/src/mage/cards/s/Skyreaping.java
index 0596701d9af..8c1b58ddb29 100644
--- a/Mage.Sets/src/mage/cards/s/Skyreaping.java
+++ b/Mage.Sets/src/mage/cards/s/Skyreaping.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class Skyreaping extends CardImpl {
+public final class Skyreaping extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/SkyriderElf.java b/Mage.Sets/src/mage/cards/s/SkyriderElf.java
index 660bb49e471..c2683619c03 100644
--- a/Mage.Sets/src/mage/cards/s/SkyriderElf.java
+++ b/Mage.Sets/src/mage/cards/s/SkyriderElf.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class SkyriderElf extends CardImpl {
+public final class SkyriderElf extends CardImpl {
public SkyriderElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyriderTrainee.java b/Mage.Sets/src/mage/cards/s/SkyriderTrainee.java
index 035d0e9a364..31c5d7ced41 100644
--- a/Mage.Sets/src/mage/cards/s/SkyriderTrainee.java
+++ b/Mage.Sets/src/mage/cards/s/SkyriderTrainee.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class SkyriderTrainee extends CardImpl {
+public final class SkyriderTrainee extends CardImpl {
public SkyriderTrainee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Skyscribing.java b/Mage.Sets/src/mage/cards/s/Skyscribing.java
index 6d5ec232455..03ef200bcf8 100644
--- a/Mage.Sets/src/mage/cards/s/Skyscribing.java
+++ b/Mage.Sets/src/mage/cards/s/Skyscribing.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class Skyscribing extends CardImpl {
+public final class Skyscribing extends CardImpl {
public Skyscribing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Skyshaper.java b/Mage.Sets/src/mage/cards/s/Skyshaper.java
index 1c0e081a390..21114e1c709 100644
--- a/Mage.Sets/src/mage/cards/s/Skyshaper.java
+++ b/Mage.Sets/src/mage/cards/s/Skyshaper.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class Skyshaper extends CardImpl {
+public final class Skyshaper extends CardImpl {
public Skyshaper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshipPlunderer.java b/Mage.Sets/src/mage/cards/s/SkyshipPlunderer.java
index ca93f7c6953..f765cad9d4c 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshipPlunderer.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshipPlunderer.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetPermanentOrPlayer;
*
* @author Styxo
*/
-public class SkyshipPlunderer extends CardImpl {
+public final class SkyshipPlunderer extends CardImpl {
public SkyshipPlunderer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshipStalker.java b/Mage.Sets/src/mage/cards/s/SkyshipStalker.java
index 3daaf6bdeb5..e2760035fe1 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshipStalker.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshipStalker.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SkyshipStalker extends CardImpl {
+public final class SkyshipStalker extends CardImpl {
public SkyshipStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshipWeatherlight.java b/Mage.Sets/src/mage/cards/s/SkyshipWeatherlight.java
index 6ee53ae9fd8..e57d02047ac 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshipWeatherlight.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshipWeatherlight.java
@@ -34,7 +34,7 @@ import mage.util.CardUtil;
*
* @author nick.myers
*/
-public class SkyshipWeatherlight extends CardImpl {
+public final class SkyshipWeatherlight extends CardImpl {
public SkyshipWeatherlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/s/Skyshooter.java b/Mage.Sets/src/mage/cards/s/Skyshooter.java
index 5e85c94e0da..e522d09a178 100644
--- a/Mage.Sets/src/mage/cards/s/Skyshooter.java
+++ b/Mage.Sets/src/mage/cards/s/Skyshooter.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author LevelX2
*/
-public class Skyshooter extends CardImpl {
+public final class Skyshooter extends CardImpl {
private static final FilterAttackingOrBlockingCreature filter = new FilterAttackingOrBlockingCreature("attacking or blocking creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudArcher.java b/Mage.Sets/src/mage/cards/s/SkyshroudArcher.java
index 68176663f70..37e7a240c85 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudArcher.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudArcher.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SkyshroudArcher extends CardImpl {
+public final class SkyshroudArcher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudBehemoth.java b/Mage.Sets/src/mage/cards/s/SkyshroudBehemoth.java
index 9d99ba9d99a..2dcdae0fc6f 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudBehemoth.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudBehemoth.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SkyshroudBehemoth extends CardImpl {
+public final class SkyshroudBehemoth extends CardImpl {
public SkyshroudBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudBlessing.java b/Mage.Sets/src/mage/cards/s/SkyshroudBlessing.java
index efef4ea793a..977013497b7 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudBlessing.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudBlessing.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author LoneFox
*/
-public class SkyshroudBlessing extends CardImpl {
+public final class SkyshroudBlessing extends CardImpl {
public SkyshroudBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudClaim.java b/Mage.Sets/src/mage/cards/s/SkyshroudClaim.java
index 7d89a7ad52a..81041539ced 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudClaim.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudClaim.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class SkyshroudClaim extends CardImpl {
+public final class SkyshroudClaim extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("Forest");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudCondor.java b/Mage.Sets/src/mage/cards/s/SkyshroudCondor.java
index 5c7243204a5..ec41684cc5e 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudCondor.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudCondor.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class SkyshroudCondor extends CardImpl {
+public final class SkyshroudCondor extends CardImpl {
public SkyshroudCondor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudCutter.java b/Mage.Sets/src/mage/cards/s/SkyshroudCutter.java
index ad9269ae76d..add17f79526 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudCutter.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudCutter.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class SkyshroudCutter extends CardImpl {
+public final class SkyshroudCutter extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("If you control a Forest");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudElf.java b/Mage.Sets/src/mage/cards/s/SkyshroudElf.java
index 5f405827c11..6fe987b6f4e 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudElf.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudElf.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author noxx
*/
-public class SkyshroudElf extends CardImpl {
+public final class SkyshroudElf extends CardImpl {
public SkyshroudElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudElite.java b/Mage.Sets/src/mage/cards/s/SkyshroudElite.java
index bcfaa4d3cb2..7c8aa345a4c 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudElite.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudElite.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author LoneFox
*/
-public class SkyshroudElite extends CardImpl {
+public final class SkyshroudElite extends CardImpl {
public SkyshroudElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudFalcon.java b/Mage.Sets/src/mage/cards/s/SkyshroudFalcon.java
index 9c64bb5adb8..5d16acbc45e 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudFalcon.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudFalcon.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SkyshroudFalcon extends CardImpl {
+public final class SkyshroudFalcon extends CardImpl {
public SkyshroudFalcon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudForest.java b/Mage.Sets/src/mage/cards/s/SkyshroudForest.java
index bb6ef07becc..790a3d6a1de 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudForest.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudForest.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class SkyshroudForest extends CardImpl {
+public final class SkyshroudForest extends CardImpl {
public SkyshroudForest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudPoacher.java b/Mage.Sets/src/mage/cards/s/SkyshroudPoacher.java
index 1fd6559d5e7..78a9a8b358d 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudPoacher.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudPoacher.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class SkyshroudPoacher extends CardImpl {
+public final class SkyshroudPoacher extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Elf permanent card");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudRanger.java b/Mage.Sets/src/mage/cards/s/SkyshroudRanger.java
index bb09b6d0dce..dbf2014fa01 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudRanger.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudRanger.java
@@ -31,29 +31,34 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
+import mage.filter.StaticFilters;
/**
*
* @author jeffwadsworth
*/
-public class SkyshroudRanger extends CardImpl {
+public final class SkyshroudRanger extends CardImpl {
public SkyshroudRanger(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
this.subtype.add(SubType.ELF);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// {tap}: You may put a land card from your hand onto the battlefield. Activate this ability only any time you could cast a sorcery.
- this.addAbility(new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, new PutLandFromHandOntoBattlefieldEffect(), new TapSourceCost()));
-
+ this.addAbility(new ActivateAsSorceryActivatedAbility(
+ Zone.BATTLEFIELD,
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A),
+ new TapSourceCost()
+ ));
+
}
public SkyshroudRanger(final SkyshroudRanger card) {
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudRidgeback.java b/Mage.Sets/src/mage/cards/s/SkyshroudRidgeback.java
index 66a4ee19256..05944993924 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudRidgeback.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudRidgeback.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SkyshroudRidgeback extends CardImpl {
+public final class SkyshroudRidgeback extends CardImpl {
public SkyshroudRidgeback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudSentinel.java b/Mage.Sets/src/mage/cards/s/SkyshroudSentinel.java
index 7a1d4eaaf86..a6f4c32d8ec 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudSentinel.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudSentinel.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class SkyshroudSentinel extends CardImpl {
+public final class SkyshroudSentinel extends CardImpl {
private static final FilterCard filter = new FilterCard("cards named Skyshroud Sentinel");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudTroll.java b/Mage.Sets/src/mage/cards/s/SkyshroudTroll.java
index 37aa9a59cd5..888a871d367 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudTroll.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudTroll.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SkyshroudTroll extends CardImpl {
+public final class SkyshroudTroll extends CardImpl {
public SkyshroudTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudTroopers.java b/Mage.Sets/src/mage/cards/s/SkyshroudTroopers.java
index da27b9e0cc3..957fcd73ec1 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudTroopers.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudTroopers.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SkyshroudTroopers extends CardImpl {
+public final class SkyshroudTroopers extends CardImpl {
public SkyshroudTroopers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudVampire.java b/Mage.Sets/src/mage/cards/s/SkyshroudVampire.java
index f68227de8cc..8958d7799ab 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudVampire.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudVampire.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class SkyshroudVampire extends CardImpl {
+public final class SkyshroudVampire extends CardImpl {
public SkyshroudVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudWarBeast.java b/Mage.Sets/src/mage/cards/s/SkyshroudWarBeast.java
index f74d9cb92da..fa07f404b31 100644
--- a/Mage.Sets/src/mage/cards/s/SkyshroudWarBeast.java
+++ b/Mage.Sets/src/mage/cards/s/SkyshroudWarBeast.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class SkyshroudWarBeast extends CardImpl {
+public final class SkyshroudWarBeast extends CardImpl {
public SkyshroudWarBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkysnareSpider.java b/Mage.Sets/src/mage/cards/s/SkysnareSpider.java
index 5393863ae40..cb48d822962 100644
--- a/Mage.Sets/src/mage/cards/s/SkysnareSpider.java
+++ b/Mage.Sets/src/mage/cards/s/SkysnareSpider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SkysnareSpider extends CardImpl {
+public final class SkysnareSpider extends CardImpl {
public SkysnareSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SkysovereignConsulFlagship.java b/Mage.Sets/src/mage/cards/s/SkysovereignConsulFlagship.java
index 21d159e0f78..312ba0f6e70 100644
--- a/Mage.Sets/src/mage/cards/s/SkysovereignConsulFlagship.java
+++ b/Mage.Sets/src/mage/cards/s/SkysovereignConsulFlagship.java
@@ -48,7 +48,7 @@ import java.util.UUID;
/**
* @author emerald000
*/
-public class SkysovereignConsulFlagship extends CardImpl {
+public final class SkysovereignConsulFlagship extends CardImpl {
private static final FilterCreatureOrPlaneswalkerPermanent filter = new FilterCreatureOrPlaneswalkerPermanent("creature or planeswalker an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SkyspearCavalry.java b/Mage.Sets/src/mage/cards/s/SkyspearCavalry.java
index e615b11962e..7470aab2770 100644
--- a/Mage.Sets/src/mage/cards/s/SkyspearCavalry.java
+++ b/Mage.Sets/src/mage/cards/s/SkyspearCavalry.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SkyspearCavalry extends CardImpl {
+public final class SkyspearCavalry extends CardImpl {
public SkyspearCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Skystreamer.java b/Mage.Sets/src/mage/cards/s/Skystreamer.java
new file mode 100644
index 00000000000..d47d8337b9b
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/Skystreamer.java
@@ -0,0 +1,76 @@
+/*
+ * 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.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.GainLifeTargetEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.AssistAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.target.TargetPlayer;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class Skystreamer extends CardImpl {
+
+ public Skystreamer(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
+
+ this.subtype.add(SubType.GRIFFIN);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(2);
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // When Skystreamer enters the battlefield, target player gains 4 life.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new GainLifeTargetEffect(4), false);
+ ability.addTarget(new TargetPlayer());
+ this.addAbility(ability);
+ }
+
+ public Skystreamer(final Skystreamer card) {
+ super(card);
+ }
+
+ @Override
+ public Skystreamer copy() {
+ return new Skystreamer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/SkyswirlHarrier.java b/Mage.Sets/src/mage/cards/s/SkyswirlHarrier.java
index c450d09d23d..31c9ed9cd8e 100644
--- a/Mage.Sets/src/mage/cards/s/SkyswirlHarrier.java
+++ b/Mage.Sets/src/mage/cards/s/SkyswirlHarrier.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SkyswirlHarrier extends CardImpl {
+public final class SkyswirlHarrier extends CardImpl {
public SkyswirlHarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SkywardEyeProphets.java b/Mage.Sets/src/mage/cards/s/SkywardEyeProphets.java
index 81064f6b3c7..5b0487711be 100644
--- a/Mage.Sets/src/mage/cards/s/SkywardEyeProphets.java
+++ b/Mage.Sets/src/mage/cards/s/SkywardEyeProphets.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author North
*/
-public class SkywardEyeProphets extends CardImpl {
+public final class SkywardEyeProphets extends CardImpl {
public SkywardEyeProphets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkywatcherAdept.java b/Mage.Sets/src/mage/cards/s/SkywatcherAdept.java
index 271d1ee31ea..9216e48f0fd 100644
--- a/Mage.Sets/src/mage/cards/s/SkywatcherAdept.java
+++ b/Mage.Sets/src/mage/cards/s/SkywatcherAdept.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*
* @author North, noxx
*/
-public class SkywatcherAdept extends LevelerCard {
+public final class SkywatcherAdept extends LevelerCard {
public SkywatcherAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkywhalersShot.java b/Mage.Sets/src/mage/cards/s/SkywhalersShot.java
index 97c736f1af7..2f3436269b9 100644
--- a/Mage.Sets/src/mage/cards/s/SkywhalersShot.java
+++ b/Mage.Sets/src/mage/cards/s/SkywhalersShot.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SkywhalersShot extends CardImpl {
+public final class SkywhalersShot extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/SkywinderDrake.java b/Mage.Sets/src/mage/cards/s/SkywinderDrake.java
index 7b9b4030da7..e115e753f40 100644
--- a/Mage.Sets/src/mage/cards/s/SkywinderDrake.java
+++ b/Mage.Sets/src/mage/cards/s/SkywinderDrake.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SkywinderDrake extends CardImpl {
+public final class SkywinderDrake extends CardImpl {
public SkywinderDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkywingAven.java b/Mage.Sets/src/mage/cards/s/SkywingAven.java
index f983112cd02..bd202d6fbbc 100644
--- a/Mage.Sets/src/mage/cards/s/SkywingAven.java
+++ b/Mage.Sets/src/mage/cards/s/SkywingAven.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SkywingAven extends CardImpl {
+public final class SkywingAven extends CardImpl {
public SkywingAven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SkywiseTeachings.java b/Mage.Sets/src/mage/cards/s/SkywiseTeachings.java
index a44e18ac5bd..17c952a457f 100644
--- a/Mage.Sets/src/mage/cards/s/SkywiseTeachings.java
+++ b/Mage.Sets/src/mage/cards/s/SkywiseTeachings.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SkywiseTeachingsToken;
*
* @author LevelX2
*/
-public class SkywiseTeachings extends CardImpl {
+public final class SkywiseTeachings extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/s/SlabHammer.java b/Mage.Sets/src/mage/cards/s/SlabHammer.java
index c697b5d5017..23424d0703c 100644
--- a/Mage.Sets/src/mage/cards/s/SlabHammer.java
+++ b/Mage.Sets/src/mage/cards/s/SlabHammer.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class SlabHammer extends CardImpl {
+public final class SlabHammer extends CardImpl {
public SlabHammer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SlagFiend.java b/Mage.Sets/src/mage/cards/s/SlagFiend.java
index 08b3f147904..e072ae4eff0 100644
--- a/Mage.Sets/src/mage/cards/s/SlagFiend.java
+++ b/Mage.Sets/src/mage/cards/s/SlagFiend.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author North
*/
-public class SlagFiend extends CardImpl {
+public final class SlagFiend extends CardImpl {
public SlagFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Slagstorm.java b/Mage.Sets/src/mage/cards/s/Slagstorm.java
index ceda4a04d37..967ae6e2497 100644
--- a/Mage.Sets/src/mage/cards/s/Slagstorm.java
+++ b/Mage.Sets/src/mage/cards/s/Slagstorm.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Loki
*/
-public class Slagstorm extends CardImpl {
+public final class Slagstorm extends CardImpl {
public Slagstorm (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SlagwurmArmor.java b/Mage.Sets/src/mage/cards/s/SlagwurmArmor.java
index fee223bbd8f..dbec897953a 100644
--- a/Mage.Sets/src/mage/cards/s/SlagwurmArmor.java
+++ b/Mage.Sets/src/mage/cards/s/SlagwurmArmor.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class SlagwurmArmor extends CardImpl {
+public final class SlagwurmArmor extends CardImpl {
public SlagwurmArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SlashOfTalons.java b/Mage.Sets/src/mage/cards/s/SlashOfTalons.java
index 59b8aeb183e..e10c3b3e909 100644
--- a/Mage.Sets/src/mage/cards/s/SlashOfTalons.java
+++ b/Mage.Sets/src/mage/cards/s/SlashOfTalons.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author TheElk801
*/
-public class SlashOfTalons extends CardImpl {
+public final class SlashOfTalons extends CardImpl {
public SlashOfTalons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SlashPanther.java b/Mage.Sets/src/mage/cards/s/SlashPanther.java
index b3f88d8a1a9..3e4ce782af8 100644
--- a/Mage.Sets/src/mage/cards/s/SlashPanther.java
+++ b/Mage.Sets/src/mage/cards/s/SlashPanther.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SlashPanther extends CardImpl {
+public final class SlashPanther extends CardImpl {
public SlashPanther(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{R/P}");
diff --git a/Mage.Sets/src/mage/cards/s/SlashingTiger.java b/Mage.Sets/src/mage/cards/s/SlashingTiger.java
index 5bb96e335f2..12d4e42bc75 100644
--- a/Mage.Sets/src/mage/cards/s/SlashingTiger.java
+++ b/Mage.Sets/src/mage/cards/s/SlashingTiger.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class SlashingTiger extends CardImpl {
+public final class SlashingTiger extends CardImpl {
public SlashingTiger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SlateOfAncestry.java b/Mage.Sets/src/mage/cards/s/SlateOfAncestry.java
index 3b12d41c3e2..2d3393e2d95 100644
--- a/Mage.Sets/src/mage/cards/s/SlateOfAncestry.java
+++ b/Mage.Sets/src/mage/cards/s/SlateOfAncestry.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class SlateOfAncestry extends CardImpl {
+public final class SlateOfAncestry extends CardImpl {
public SlateOfAncestry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SlateStreetRuffian.java b/Mage.Sets/src/mage/cards/s/SlateStreetRuffian.java
index 27c970ca282..786c2f77de6 100644
--- a/Mage.Sets/src/mage/cards/s/SlateStreetRuffian.java
+++ b/Mage.Sets/src/mage/cards/s/SlateStreetRuffian.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SlateStreetRuffian extends CardImpl {
+public final class SlateStreetRuffian extends CardImpl {
public SlateStreetRuffian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Slaughter.java b/Mage.Sets/src/mage/cards/s/Slaughter.java
index 00830e2db38..90f415fce09 100644
--- a/Mage.Sets/src/mage/cards/s/Slaughter.java
+++ b/Mage.Sets/src/mage/cards/s/Slaughter.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Temba21
*/
-public class Slaughter extends CardImpl {
+public final class Slaughter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/SlaughterCry.java b/Mage.Sets/src/mage/cards/s/SlaughterCry.java
index aed6594a94c..b11ff680065 100644
--- a/Mage.Sets/src/mage/cards/s/SlaughterCry.java
+++ b/Mage.Sets/src/mage/cards/s/SlaughterCry.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SlaughterCry extends CardImpl {
+public final class SlaughterCry extends CardImpl {
public SlaughterCry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SlaughterDrone.java b/Mage.Sets/src/mage/cards/s/SlaughterDrone.java
index 603a18542a4..4a1c78bdf35 100644
--- a/Mage.Sets/src/mage/cards/s/SlaughterDrone.java
+++ b/Mage.Sets/src/mage/cards/s/SlaughterDrone.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SlaughterDrone extends CardImpl {
+public final class SlaughterDrone extends CardImpl {
public SlaughterDrone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SlaughterGames.java b/Mage.Sets/src/mage/cards/s/SlaughterGames.java
index c9f3f01325f..a274ca67890 100644
--- a/Mage.Sets/src/mage/cards/s/SlaughterGames.java
+++ b/Mage.Sets/src/mage/cards/s/SlaughterGames.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class SlaughterGames extends CardImpl {
+public final class SlaughterGames extends CardImpl {
public SlaughterGames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SlaughterPact.java b/Mage.Sets/src/mage/cards/s/SlaughterPact.java
index 94ded53d0f6..503ecbac968 100644
--- a/Mage.Sets/src/mage/cards/s/SlaughterPact.java
+++ b/Mage.Sets/src/mage/cards/s/SlaughterPact.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class SlaughterPact extends CardImpl {
+public final class SlaughterPact extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/SlaughterTheStrong.java b/Mage.Sets/src/mage/cards/s/SlaughterTheStrong.java
index 550b359a463..da5c54410fd 100644
--- a/Mage.Sets/src/mage/cards/s/SlaughterTheStrong.java
+++ b/Mage.Sets/src/mage/cards/s/SlaughterTheStrong.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class SlaughterTheStrong extends CardImpl {
+public final class SlaughterTheStrong extends CardImpl {
public SlaughterTheStrong(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Slaughterhorn.java b/Mage.Sets/src/mage/cards/s/Slaughterhorn.java
index d96f03ee8aa..7908433f299 100644
--- a/Mage.Sets/src/mage/cards/s/Slaughterhorn.java
+++ b/Mage.Sets/src/mage/cards/s/Slaughterhorn.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class Slaughterhorn extends CardImpl {
+public final class Slaughterhorn extends CardImpl {
public Slaughterhorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SlaughterhouseBouncer.java b/Mage.Sets/src/mage/cards/s/SlaughterhouseBouncer.java
index 56f90ac158a..b34b367262c 100644
--- a/Mage.Sets/src/mage/cards/s/SlaughterhouseBouncer.java
+++ b/Mage.Sets/src/mage/cards/s/SlaughterhouseBouncer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class SlaughterhouseBouncer extends CardImpl {
+public final class SlaughterhouseBouncer extends CardImpl {
public SlaughterhouseBouncer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SlaveI.java b/Mage.Sets/src/mage/cards/s/SlaveI.java
index 0d5d6b2fc92..5058e3e8e22 100644
--- a/Mage.Sets/src/mage/cards/s/SlaveI.java
+++ b/Mage.Sets/src/mage/cards/s/SlaveI.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class SlaveI extends CardImpl {
+public final class SlaveI extends CardImpl {
public SlaveI(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SlaveOfBolas.java b/Mage.Sets/src/mage/cards/s/SlaveOfBolas.java
index 9433de07419..533830a5f2e 100644
--- a/Mage.Sets/src/mage/cards/s/SlaveOfBolas.java
+++ b/Mage.Sets/src/mage/cards/s/SlaveOfBolas.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class SlaveOfBolas extends CardImpl {
+public final class SlaveOfBolas extends CardImpl {
public SlaveOfBolas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U/R}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SlaveringNulls.java b/Mage.Sets/src/mage/cards/s/SlaveringNulls.java
index a0377766bc9..50ad72a9f4f 100644
--- a/Mage.Sets/src/mage/cards/s/SlaveringNulls.java
+++ b/Mage.Sets/src/mage/cards/s/SlaveringNulls.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class SlaveringNulls extends CardImpl {
+public final class SlaveringNulls extends CardImpl {
public SlaveringNulls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Slay.java b/Mage.Sets/src/mage/cards/s/Slay.java
index ea079758028..aa566d3f77e 100644
--- a/Mage.Sets/src/mage/cards/s/Slay.java
+++ b/Mage.Sets/src/mage/cards/s/Slay.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Slay extends CardImpl {
+public final class Slay extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature");
static{
diff --git a/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java b/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java
index 6a3a63964a2..e0bc021e88b 100644
--- a/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java
+++ b/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class SlayerOfTheWicked extends CardImpl {
+public final class SlayerOfTheWicked extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampire, Werewolf, or Zombie");
diff --git a/Mage.Sets/src/mage/cards/s/SlayersCleaver.java b/Mage.Sets/src/mage/cards/s/SlayersCleaver.java
index 37f6c7d00f3..8b84630dbc5 100644
--- a/Mage.Sets/src/mage/cards/s/SlayersCleaver.java
+++ b/Mage.Sets/src/mage/cards/s/SlayersCleaver.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class SlayersCleaver extends CardImpl {
+public final class SlayersCleaver extends CardImpl {
public SlayersCleaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SlayersPlate.java b/Mage.Sets/src/mage/cards/s/SlayersPlate.java
index 723cb89b6dc..37e01bd06cf 100644
--- a/Mage.Sets/src/mage/cards/s/SlayersPlate.java
+++ b/Mage.Sets/src/mage/cards/s/SlayersPlate.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author fireshoes
*/
-public class SlayersPlate extends CardImpl {
+public final class SlayersPlate extends CardImpl {
public SlayersPlate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SlayersStronghold.java b/Mage.Sets/src/mage/cards/s/SlayersStronghold.java
index d8b8cbcf7e3..5b68a1409a4 100644
--- a/Mage.Sets/src/mage/cards/s/SlayersStronghold.java
+++ b/Mage.Sets/src/mage/cards/s/SlayersStronghold.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SlayersStronghold extends CardImpl {
+public final class SlayersStronghold extends CardImpl {
public SlayersStronghold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SleekSchooner.java b/Mage.Sets/src/mage/cards/s/SleekSchooner.java
index cd287022a2b..6e7e84cf1f0 100644
--- a/Mage.Sets/src/mage/cards/s/SleekSchooner.java
+++ b/Mage.Sets/src/mage/cards/s/SleekSchooner.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author TheElk801
*/
-public class SleekSchooner extends CardImpl {
+public final class SleekSchooner extends CardImpl {
public SleekSchooner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/Sleep.java b/Mage.Sets/src/mage/cards/s/Sleep.java
index 0d236de7506..905805b6d42 100644
--- a/Mage.Sets/src/mage/cards/s/Sleep.java
+++ b/Mage.Sets/src/mage/cards/s/Sleep.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Sleep extends CardImpl {
+public final class Sleep extends CardImpl {
public Sleep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SleepParalysis.java b/Mage.Sets/src/mage/cards/s/SleepParalysis.java
index 3efa3eb3ce8..e20deb69d90 100644
--- a/Mage.Sets/src/mage/cards/s/SleepParalysis.java
+++ b/Mage.Sets/src/mage/cards/s/SleepParalysis.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SleepParalysis extends CardImpl {
+public final class SleepParalysis extends CardImpl {
public SleepParalysis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SleeperAgent.java b/Mage.Sets/src/mage/cards/s/SleeperAgent.java
index f7c31673671..4595b9809fc 100644
--- a/Mage.Sets/src/mage/cards/s/SleeperAgent.java
+++ b/Mage.Sets/src/mage/cards/s/SleeperAgent.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author TGower
*/
-public class SleeperAgent extends CardImpl {
+public final class SleeperAgent extends CardImpl {
public SleeperAgent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SleepersGuile.java b/Mage.Sets/src/mage/cards/s/SleepersGuile.java
index 4fa0d7d093a..978f61eee52 100644
--- a/Mage.Sets/src/mage/cards/s/SleepersGuile.java
+++ b/Mage.Sets/src/mage/cards/s/SleepersGuile.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class SleepersGuile extends CardImpl {
+public final class SleepersGuile extends CardImpl {
public SleepersGuile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SleepersRobe.java b/Mage.Sets/src/mage/cards/s/SleepersRobe.java
index aeb5e0b3340..e3b17a81adc 100644
--- a/Mage.Sets/src/mage/cards/s/SleepersRobe.java
+++ b/Mage.Sets/src/mage/cards/s/SleepersRobe.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SleepersRobe extends CardImpl {
+public final class SleepersRobe extends CardImpl {
public SleepersRobe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SleepingPotion.java b/Mage.Sets/src/mage/cards/s/SleepingPotion.java
index d5f70b3b1fa..c7f42356e73 100644
--- a/Mage.Sets/src/mage/cards/s/SleepingPotion.java
+++ b/Mage.Sets/src/mage/cards/s/SleepingPotion.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SleepingPotion extends CardImpl {
+public final class SleepingPotion extends CardImpl {
public SleepingPotion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SleightOfHand.java b/Mage.Sets/src/mage/cards/s/SleightOfHand.java
index 7d818e4504b..39613596d43 100644
--- a/Mage.Sets/src/mage/cards/s/SleightOfHand.java
+++ b/Mage.Sets/src/mage/cards/s/SleightOfHand.java
@@ -40,7 +40,7 @@ import mage.filter.FilterCard;
*
* @author North
*/
-public class SleightOfHand extends CardImpl {
+public final class SleightOfHand extends CardImpl {
public SleightOfHand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SliceAndDice.java b/Mage.Sets/src/mage/cards/s/SliceAndDice.java
index dc76d8939de..2a86880aeaf 100644
--- a/Mage.Sets/src/mage/cards/s/SliceAndDice.java
+++ b/Mage.Sets/src/mage/cards/s/SliceAndDice.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class SliceAndDice extends CardImpl {
+public final class SliceAndDice extends CardImpl {
public SliceAndDice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SliceInTwain.java b/Mage.Sets/src/mage/cards/s/SliceInTwain.java
index 5f487a7385e..4ec5987e32f 100644
--- a/Mage.Sets/src/mage/cards/s/SliceInTwain.java
+++ b/Mage.Sets/src/mage/cards/s/SliceInTwain.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class SliceInTwain extends CardImpl {
+public final class SliceInTwain extends CardImpl {
public SliceInTwain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SlimeMolding.java b/Mage.Sets/src/mage/cards/s/SlimeMolding.java
index 909602a6fd9..6eed74cefe6 100644
--- a/Mage.Sets/src/mage/cards/s/SlimeMolding.java
+++ b/Mage.Sets/src/mage/cards/s/SlimeMolding.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.OozeToken;
*
* @author Plopman
*/
-public class SlimeMolding extends CardImpl {
+public final class SlimeMolding extends CardImpl {
public SlimeMolding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SlimefootTheStowaway.java b/Mage.Sets/src/mage/cards/s/SlimefootTheStowaway.java
index 2a1598a4cb1..b9f2bbb1755 100644
--- a/Mage.Sets/src/mage/cards/s/SlimefootTheStowaway.java
+++ b/Mage.Sets/src/mage/cards/s/SlimefootTheStowaway.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author TheElk801
*/
-public class SlimefootTheStowaway extends CardImpl {
+public final class SlimefootTheStowaway extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Saproling you control");
diff --git a/Mage.Sets/src/mage/cards/s/SlimyKavu.java b/Mage.Sets/src/mage/cards/s/SlimyKavu.java
index 64eec8e4e64..8986b4fc83e 100644
--- a/Mage.Sets/src/mage/cards/s/SlimyKavu.java
+++ b/Mage.Sets/src/mage/cards/s/SlimyKavu.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LoneFox
*/
-public class SlimyKavu extends CardImpl {
+public final class SlimyKavu extends CardImpl {
public SlimyKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SlingbowTrap.java b/Mage.Sets/src/mage/cards/s/SlingbowTrap.java
index 17df16b0e88..d81ac0c4def 100644
--- a/Mage.Sets/src/mage/cards/s/SlingbowTrap.java
+++ b/Mage.Sets/src/mage/cards/s/SlingbowTrap.java
@@ -48,7 +48,7 @@ import java.util.UUID;
/**
* @author jeffwadsworth
*/
-public class SlingbowTrap extends CardImpl {
+public final class SlingbowTrap extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/SlingshotGoblin.java b/Mage.Sets/src/mage/cards/s/SlingshotGoblin.java
index 3c8c5b23db8..f31a8c860f6 100644
--- a/Mage.Sets/src/mage/cards/s/SlingshotGoblin.java
+++ b/Mage.Sets/src/mage/cards/s/SlingshotGoblin.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class SlingshotGoblin extends CardImpl {
+public final class SlingshotGoblin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creature");
diff --git a/Mage.Sets/src/mage/cards/s/SlinkingGiant.java b/Mage.Sets/src/mage/cards/s/SlinkingGiant.java
index e695dd56d97..0c62ac2cbfd 100644
--- a/Mage.Sets/src/mage/cards/s/SlinkingGiant.java
+++ b/Mage.Sets/src/mage/cards/s/SlinkingGiant.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class SlinkingGiant extends CardImpl {
+public final class SlinkingGiant extends CardImpl {
public SlinkingGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SlinkingSerpent.java b/Mage.Sets/src/mage/cards/s/SlinkingSerpent.java
index 83fd7995d7b..60a9b5f75cc 100644
--- a/Mage.Sets/src/mage/cards/s/SlinkingSerpent.java
+++ b/Mage.Sets/src/mage/cards/s/SlinkingSerpent.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SlinkingSerpent extends CardImpl {
+public final class SlinkingSerpent extends CardImpl {
public SlinkingSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SlinkingSkirge.java b/Mage.Sets/src/mage/cards/s/SlinkingSkirge.java
index 1ae357f6e5a..38e61940b1c 100644
--- a/Mage.Sets/src/mage/cards/s/SlinkingSkirge.java
+++ b/Mage.Sets/src/mage/cards/s/SlinkingSkirge.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class SlinkingSkirge extends CardImpl {
+public final class SlinkingSkirge extends CardImpl {
public SlinkingSkirge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SlinnVodaTheRisingDeep.java b/Mage.Sets/src/mage/cards/s/SlinnVodaTheRisingDeep.java
index f56083c602a..5b96a55ef10 100644
--- a/Mage.Sets/src/mage/cards/s/SlinnVodaTheRisingDeep.java
+++ b/Mage.Sets/src/mage/cards/s/SlinnVodaTheRisingDeep.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class SlinnVodaTheRisingDeep extends CardImpl {
+public final class SlinnVodaTheRisingDeep extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SlipThroughSpace.java b/Mage.Sets/src/mage/cards/s/SlipThroughSpace.java
index 02b85bf8896..4d9c695bdda 100644
--- a/Mage.Sets/src/mage/cards/s/SlipThroughSpace.java
+++ b/Mage.Sets/src/mage/cards/s/SlipThroughSpace.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SlipThroughSpace extends CardImpl {
+public final class SlipThroughSpace extends CardImpl {
public SlipThroughSpace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SlipperyBogle.java b/Mage.Sets/src/mage/cards/s/SlipperyBogle.java
index 97ab930afd0..09b9f64ffa4 100644
--- a/Mage.Sets/src/mage/cards/s/SlipperyBogle.java
+++ b/Mage.Sets/src/mage/cards/s/SlipperyBogle.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SlipperyBogle extends CardImpl {
+public final class SlipperyBogle extends CardImpl {
public SlipperyBogle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G/U}");
diff --git a/Mage.Sets/src/mage/cards/s/SlipperyKarst.java b/Mage.Sets/src/mage/cards/s/SlipperyKarst.java
index bf3a7ab0e53..1a69a4d5ccd 100644
--- a/Mage.Sets/src/mage/cards/s/SlipperyKarst.java
+++ b/Mage.Sets/src/mage/cards/s/SlipperyKarst.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Backfir3
*/
-public class SlipperyKarst extends CardImpl {
+public final class SlipperyKarst extends CardImpl {
public SlipperyKarst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SlipperyScoundrel.java b/Mage.Sets/src/mage/cards/s/SlipperyScoundrel.java
index 1497c45a7b3..f554e6cc9f7 100644
--- a/Mage.Sets/src/mage/cards/s/SlipperyScoundrel.java
+++ b/Mage.Sets/src/mage/cards/s/SlipperyScoundrel.java
@@ -52,7 +52,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SlipperyScoundrel extends CardImpl {
+public final class SlipperyScoundrel extends CardImpl {
public SlipperyScoundrel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SlipstreamEel.java b/Mage.Sets/src/mage/cards/s/SlipstreamEel.java
index 13066424c47..4a121c450bf 100644
--- a/Mage.Sets/src/mage/cards/s/SlipstreamEel.java
+++ b/Mage.Sets/src/mage/cards/s/SlipstreamEel.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class SlipstreamEel extends CardImpl {
+public final class SlipstreamEel extends CardImpl {
public SlipstreamEel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SlipstreamSerpent.java b/Mage.Sets/src/mage/cards/s/SlipstreamSerpent.java
index ae65e144c9d..de180722d39 100644
--- a/Mage.Sets/src/mage/cards/s/SlipstreamSerpent.java
+++ b/Mage.Sets/src/mage/cards/s/SlipstreamSerpent.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class SlipstreamSerpent extends CardImpl {
+public final class SlipstreamSerpent extends CardImpl {
public SlipstreamSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SliptideSerpent.java b/Mage.Sets/src/mage/cards/s/SliptideSerpent.java
index f104a55aaaf..f8d29a77066 100644
--- a/Mage.Sets/src/mage/cards/s/SliptideSerpent.java
+++ b/Mage.Sets/src/mage/cards/s/SliptideSerpent.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class SliptideSerpent extends CardImpl {
+public final class SliptideSerpent extends CardImpl {
public SliptideSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SlithAscendant.java b/Mage.Sets/src/mage/cards/s/SlithAscendant.java
index d158be49633..9bfc1476ae2 100644
--- a/Mage.Sets/src/mage/cards/s/SlithAscendant.java
+++ b/Mage.Sets/src/mage/cards/s/SlithAscendant.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class SlithAscendant extends CardImpl {
+public final class SlithAscendant extends CardImpl {
public SlithAscendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SlithBloodletter.java b/Mage.Sets/src/mage/cards/s/SlithBloodletter.java
index 2f45b6b4785..039005eeb38 100644
--- a/Mage.Sets/src/mage/cards/s/SlithBloodletter.java
+++ b/Mage.Sets/src/mage/cards/s/SlithBloodletter.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class SlithBloodletter extends CardImpl {
+public final class SlithBloodletter extends CardImpl {
public SlithBloodletter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SlithFirewalker.java b/Mage.Sets/src/mage/cards/s/SlithFirewalker.java
index 29613757d53..dfc35e5c21f 100644
--- a/Mage.Sets/src/mage/cards/s/SlithFirewalker.java
+++ b/Mage.Sets/src/mage/cards/s/SlithFirewalker.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class SlithFirewalker extends CardImpl {
+public final class SlithFirewalker extends CardImpl {
public SlithFirewalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SlithPredator.java b/Mage.Sets/src/mage/cards/s/SlithPredator.java
index 9672f54ffd2..56b11681e91 100644
--- a/Mage.Sets/src/mage/cards/s/SlithPredator.java
+++ b/Mage.Sets/src/mage/cards/s/SlithPredator.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class SlithPredator extends CardImpl {
+public final class SlithPredator extends CardImpl {
public SlithPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SlithStrider.java b/Mage.Sets/src/mage/cards/s/SlithStrider.java
index bd0c7bebf39..66c27f7da2f 100644
--- a/Mage.Sets/src/mage/cards/s/SlithStrider.java
+++ b/Mage.Sets/src/mage/cards/s/SlithStrider.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class SlithStrider extends CardImpl {
+public final class SlithStrider extends CardImpl {
public SlithStrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SlitherBlade.java b/Mage.Sets/src/mage/cards/s/SlitherBlade.java
index aea28e32ac7..baff41e7035 100644
--- a/Mage.Sets/src/mage/cards/s/SlitherBlade.java
+++ b/Mage.Sets/src/mage/cards/s/SlitherBlade.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SlitherBlade extends CardImpl {
+public final class SlitherBlade extends CardImpl {
public SlitherBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Slitherhead.java b/Mage.Sets/src/mage/cards/s/Slitherhead.java
index f77372943ce..06e174dc18c 100644
--- a/Mage.Sets/src/mage/cards/s/Slitherhead.java
+++ b/Mage.Sets/src/mage/cards/s/Slitherhead.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Slitherhead extends CardImpl {
+public final class Slitherhead extends CardImpl {
public Slitherhead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B/G}");
diff --git a/Mage.Sets/src/mage/cards/s/SlitheringShade.java b/Mage.Sets/src/mage/cards/s/SlitheringShade.java
index d7c44101ab7..eb78cc72dc5 100644
--- a/Mage.Sets/src/mage/cards/s/SlitheringShade.java
+++ b/Mage.Sets/src/mage/cards/s/SlitheringShade.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class SlitheringShade extends CardImpl {
+public final class SlitheringShade extends CardImpl {
public SlitheringShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Slithermuse.java b/Mage.Sets/src/mage/cards/s/Slithermuse.java
index b083f4a8759..7ece7cd6baa 100644
--- a/Mage.Sets/src/mage/cards/s/Slithermuse.java
+++ b/Mage.Sets/src/mage/cards/s/Slithermuse.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class Slithermuse extends CardImpl {
+public final class Slithermuse extends CardImpl {
public Slithermuse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SlitheryStalker.java b/Mage.Sets/src/mage/cards/s/SlitheryStalker.java
index 93c5adde1de..25658892275 100644
--- a/Mage.Sets/src/mage/cards/s/SlitheryStalker.java
+++ b/Mage.Sets/src/mage/cards/s/SlitheryStalker.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class SlitheryStalker extends CardImpl {
+public final class SlitheryStalker extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a green or white creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SliverConstruct.java b/Mage.Sets/src/mage/cards/s/SliverConstruct.java
index bef277e2678..d4198f06529 100644
--- a/Mage.Sets/src/mage/cards/s/SliverConstruct.java
+++ b/Mage.Sets/src/mage/cards/s/SliverConstruct.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SliverConstruct extends CardImpl {
+public final class SliverConstruct extends CardImpl {
public SliverConstruct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SliverHive.java b/Mage.Sets/src/mage/cards/s/SliverHive.java
index 8f500633885..40a615b5f37 100644
--- a/Mage.Sets/src/mage/cards/s/SliverHive.java
+++ b/Mage.Sets/src/mage/cards/s/SliverHive.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class SliverHive extends CardImpl {
+public final class SliverHive extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Sliver");
private static final FilterSpell filterSpell = new FilterSpell("a Sliver spell");
diff --git a/Mage.Sets/src/mage/cards/s/SliverHivelord.java b/Mage.Sets/src/mage/cards/s/SliverHivelord.java
index deb245a23fe..d4ba18a289d 100644
--- a/Mage.Sets/src/mage/cards/s/SliverHivelord.java
+++ b/Mage.Sets/src/mage/cards/s/SliverHivelord.java
@@ -45,7 +45,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class SliverHivelord extends CardImpl {
+public final class SliverHivelord extends CardImpl {
public SliverHivelord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SliverLegion.java b/Mage.Sets/src/mage/cards/s/SliverLegion.java
index 6f948fa5ca0..dc824e5e8d3 100644
--- a/Mage.Sets/src/mage/cards/s/SliverLegion.java
+++ b/Mage.Sets/src/mage/cards/s/SliverLegion.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
* @author KholdFuzion
*/
-public class SliverLegion extends CardImpl {
+public final class SliverLegion extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures");
private static final FilterPermanent countfilter = new FilterPermanent(SubType.SLIVER, "other Sliver on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/s/SliverOverlord.java b/Mage.Sets/src/mage/cards/s/SliverOverlord.java
index 9a5fde419aa..36c20abfe1c 100644
--- a/Mage.Sets/src/mage/cards/s/SliverOverlord.java
+++ b/Mage.Sets/src/mage/cards/s/SliverOverlord.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author cbt33
*/
-public class SliverOverlord extends CardImpl {
+public final class SliverOverlord extends CardImpl {
private static final FilterCard filter = new FilterCard("Sliver card");
diff --git a/Mage.Sets/src/mage/cards/s/SliverQueen.java b/Mage.Sets/src/mage/cards/s/SliverQueen.java
index facda0a9962..ca0338fb6b8 100644
--- a/Mage.Sets/src/mage/cards/s/SliverQueen.java
+++ b/Mage.Sets/src/mage/cards/s/SliverQueen.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SliverToken;
*
* @author cbt33
*/
-public class SliverQueen extends CardImpl {
+public final class SliverQueen extends CardImpl {
public SliverQueen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Sliversmith.java b/Mage.Sets/src/mage/cards/s/Sliversmith.java
index 5c99346dde7..e317d695366 100644
--- a/Mage.Sets/src/mage/cards/s/Sliversmith.java
+++ b/Mage.Sets/src/mage/cards/s/Sliversmith.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.SliversmithToken;
*
* @author Luna Skyrise
*/
-public class Sliversmith extends CardImpl {
+public final class Sliversmith extends CardImpl {
public Sliversmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SlobadGoblinTinkerer.java b/Mage.Sets/src/mage/cards/s/SlobadGoblinTinkerer.java
index 469ce84d9be..4777db7f96a 100644
--- a/Mage.Sets/src/mage/cards/s/SlobadGoblinTinkerer.java
+++ b/Mage.Sets/src/mage/cards/s/SlobadGoblinTinkerer.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class SlobadGoblinTinkerer extends CardImpl {
+public final class SlobadGoblinTinkerer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
private static final FilterControlledPermanent filterControlled = new FilterControlledPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/s/SlowMotion.java b/Mage.Sets/src/mage/cards/s/SlowMotion.java
index 78a3e96bd36..40631f992f9 100644
--- a/Mage.Sets/src/mage/cards/s/SlowMotion.java
+++ b/Mage.Sets/src/mage/cards/s/SlowMotion.java
@@ -53,13 +53,12 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class SlowMotion extends CardImpl {
+public final class SlowMotion extends CardImpl {
public SlowMotion(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
this.subtype.add(SubType.AURA);
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
@@ -68,7 +67,7 @@ public class SlowMotion extends CardImpl {
this.addAbility(ability);
// At the beginning of the upkeep of enchanted creature's controller, that player sacrifices that creature unless he or she pays {2}.
- this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeEquipedUnlessPaysEffect(new GenericManaCost(2)), TargetController.CONTROLLER_ATTACHED_TO, false ));
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeEquipedUnlessPaysEffect(new GenericManaCost(2)), TargetController.CONTROLLER_ATTACHED_TO, false));
// When Slow Motion is put into a graveyard from the battlefield, return Slow Motion to its owner's hand.
this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new ReturnToHandSourceEffect()));
@@ -85,13 +84,14 @@ public class SlowMotion extends CardImpl {
}
class SacrificeEquipedUnlessPaysEffect extends OneShotEffect {
+
protected Cost cost;
public SacrificeEquipedUnlessPaysEffect(Cost cost) {
super(Outcome.Sacrifice);
this.cost = cost;
staticText = "that player sacrifices that creature unless he or she pays {2}";
- }
+ }
public SacrificeEquipedUnlessPaysEffect(final SacrificeEquipedUnlessPaysEffect effect) {
super(effect);
@@ -101,25 +101,29 @@ class SacrificeEquipedUnlessPaysEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Permanent equipment = game.getPermanent(source.getSourceId());
- if (equipment != null && equipment.getAttachedTo() != null) {
- Permanent equipped = game.getPermanent(equipment.getAttachedTo());
- Player player = game.getPlayer(equipped.getControllerId());
- if (player != null && equipped != null) {
- if (player.chooseUse(Outcome.Benefit, "Pay " + cost.getText() + "? (Or " + equipped.getName() + " will be sacrificed.)", source, game)) {
- cost.clearPaid();
- if (cost.pay(source, game, source.getSourceId(), equipped.getControllerId(), false, null)) {
- return true;
- }
- }
- equipped.sacrifice(source.getSourceId(), game);
+ if (equipment == null) {
+ return false;
+ }
+ Permanent equipped = game.getPermanent(equipment.getAttachedTo());
+ if (equipped == null) {
+ return false;
+ }
+ Player player = game.getPlayer(equipped.getControllerId());
+ if (player == null) {
+ return false;
+ }
+ if (player.chooseUse(Outcome.Benefit, "Pay " + cost.getText() + "? (Or " + equipped.getName() + " will be sacrificed.)", source, game)) {
+ cost.clearPaid();
+ if (cost.pay(source, game, source.getSourceId(), equipped.getControllerId(), false, null)) {
return true;
}
}
- return false;
+ equipped.sacrifice(source.getSourceId(), game);
+ return true;
}
@Override
public SacrificeEquipedUnlessPaysEffect copy() {
return new SacrificeEquipedUnlessPaysEffect(this);
}
- }
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/s/SludgeCrawler.java b/Mage.Sets/src/mage/cards/s/SludgeCrawler.java
index bcd3ee44c78..e7adcb454fe 100644
--- a/Mage.Sets/src/mage/cards/s/SludgeCrawler.java
+++ b/Mage.Sets/src/mage/cards/s/SludgeCrawler.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SludgeCrawler extends CardImpl {
+public final class SludgeCrawler extends CardImpl {
public SludgeCrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SludgeStrider.java b/Mage.Sets/src/mage/cards/s/SludgeStrider.java
index d75de45e5b9..0569aa2ea77 100644
--- a/Mage.Sets/src/mage/cards/s/SludgeStrider.java
+++ b/Mage.Sets/src/mage/cards/s/SludgeStrider.java
@@ -56,7 +56,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class SludgeStrider extends CardImpl {
+public final class SludgeStrider extends CardImpl {
public SludgeStrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Sluggishness.java b/Mage.Sets/src/mage/cards/s/Sluggishness.java
index cf5f49c48c8..5dff09d0a00 100644
--- a/Mage.Sets/src/mage/cards/s/Sluggishness.java
+++ b/Mage.Sets/src/mage/cards/s/Sluggishness.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Sluggishness extends CardImpl {
+public final class Sluggishness extends CardImpl {
public Sluggishness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SluicewayScorpion.java b/Mage.Sets/src/mage/cards/s/SluicewayScorpion.java
index c2a85f61182..7abe5fcd1b1 100644
--- a/Mage.Sets/src/mage/cards/s/SluicewayScorpion.java
+++ b/Mage.Sets/src/mage/cards/s/SluicewayScorpion.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author magenoxx_at_gmail.com
*/
-public class SluicewayScorpion extends CardImpl {
+public final class SluicewayScorpion extends CardImpl {
public SluicewayScorpion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SlumReaper.java b/Mage.Sets/src/mage/cards/s/SlumReaper.java
index 93515ff23f5..4d650638e8b 100644
--- a/Mage.Sets/src/mage/cards/s/SlumReaper.java
+++ b/Mage.Sets/src/mage/cards/s/SlumReaper.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class SlumReaper extends CardImpl {
+public final class SlumReaper extends CardImpl {
public SlumReaper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SlumberingDragon.java b/Mage.Sets/src/mage/cards/s/SlumberingDragon.java
index b11c4448828..13df2e75e76 100644
--- a/Mage.Sets/src/mage/cards/s/SlumberingDragon.java
+++ b/Mage.Sets/src/mage/cards/s/SlumberingDragon.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class SlumberingDragon extends CardImpl {
+public final class SlumberingDragon extends CardImpl {
public SlumberingDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SlumberingTora.java b/Mage.Sets/src/mage/cards/s/SlumberingTora.java
index 2debfd2593c..ae1e6f39ba0 100644
--- a/Mage.Sets/src/mage/cards/s/SlumberingTora.java
+++ b/Mage.Sets/src/mage/cards/s/SlumberingTora.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class SlumberingTora extends CardImpl {
+public final class SlumberingTora extends CardImpl {
private static final FilterCard filter = new FilterCard("Spirit or Arcane card");
diff --git a/Mage.Sets/src/mage/cards/s/SlyRequisitioner.java b/Mage.Sets/src/mage/cards/s/SlyRequisitioner.java
index 532461e7419..e39d651e0ae 100644
--- a/Mage.Sets/src/mage/cards/s/SlyRequisitioner.java
+++ b/Mage.Sets/src/mage/cards/s/SlyRequisitioner.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.ServoToken;
*
* @author LevelX2
*/
-public class SlyRequisitioner extends CardImpl {
+public final class SlyRequisitioner extends CardImpl {
private static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("a nontoken artifact you control");
diff --git a/Mage.Sets/src/mage/cards/s/Smallpox.java b/Mage.Sets/src/mage/cards/s/Smallpox.java
index 2a1ad95c54a..4aaa061312e 100644
--- a/Mage.Sets/src/mage/cards/s/Smallpox.java
+++ b/Mage.Sets/src/mage/cards/s/Smallpox.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author nantuko
*/
-public class Smallpox extends CardImpl {
+public final class Smallpox extends CardImpl {
private static final FilterControlledPermanent filterCreature = new FilterControlledCreaturePermanent();
private static final FilterControlledPermanent filterLand = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/Smash.java b/Mage.Sets/src/mage/cards/s/Smash.java
index 4493699ba3f..6dc63fc7ce4 100644
--- a/Mage.Sets/src/mage/cards/s/Smash.java
+++ b/Mage.Sets/src/mage/cards/s/Smash.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetArtifactPermanent;
/**
* @author Loki
*/
-public class Smash extends CardImpl {
+public final class Smash extends CardImpl {
public Smash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SmashToSmithereens.java b/Mage.Sets/src/mage/cards/s/SmashToSmithereens.java
index 548209bb2d0..1f6126cd466 100644
--- a/Mage.Sets/src/mage/cards/s/SmashToSmithereens.java
+++ b/Mage.Sets/src/mage/cards/s/SmashToSmithereens.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author jonubuu
*/
-public class SmashToSmithereens extends CardImpl {
+public final class SmashToSmithereens extends CardImpl {
public SmashToSmithereens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Smelt.java b/Mage.Sets/src/mage/cards/s/Smelt.java
index 20663ea93b3..8f870ddc245 100644
--- a/Mage.Sets/src/mage/cards/s/Smelt.java
+++ b/Mage.Sets/src/mage/cards/s/Smelt.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author North
*/
-public class Smelt extends CardImpl {
+public final class Smelt extends CardImpl {
public Smelt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SmeltWardGatekeepers.java b/Mage.Sets/src/mage/cards/s/SmeltWardGatekeepers.java
index 4ce4440576d..f2a9eee8851 100644
--- a/Mage.Sets/src/mage/cards/s/SmeltWardGatekeepers.java
+++ b/Mage.Sets/src/mage/cards/s/SmeltWardGatekeepers.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
-public class SmeltWardGatekeepers extends CardImpl {
+public final class SmeltWardGatekeepers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
private static final FilterCreaturePermanent targetFilter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/Smite.java b/Mage.Sets/src/mage/cards/s/Smite.java
index 99d9b8ed037..0c1b6b2b9e0 100644
--- a/Mage.Sets/src/mage/cards/s/Smite.java
+++ b/Mage.Sets/src/mage/cards/s/Smite.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class Smite extends CardImpl {
+public final class Smite extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blocked creature");
diff --git a/Mage.Sets/src/mage/cards/s/SmiteTheMonstrous.java b/Mage.Sets/src/mage/cards/s/SmiteTheMonstrous.java
index 990ff187e77..42f629d64a8 100644
--- a/Mage.Sets/src/mage/cards/s/SmiteTheMonstrous.java
+++ b/Mage.Sets/src/mage/cards/s/SmiteTheMonstrous.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
/**
* @author nantuko
*/
-public class SmiteTheMonstrous extends CardImpl {
+public final class SmiteTheMonstrous extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/SmogElemental.java b/Mage.Sets/src/mage/cards/s/SmogElemental.java
index 428065adf08..7aacb09c410 100644
--- a/Mage.Sets/src/mage/cards/s/SmogElemental.java
+++ b/Mage.Sets/src/mage/cards/s/SmogElemental.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class SmogElemental extends CardImpl {
+public final class SmogElemental extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures with flying your opponents control");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SmogsteedRider.java b/Mage.Sets/src/mage/cards/s/SmogsteedRider.java
index 234864a719e..250c64d089d 100644
--- a/Mage.Sets/src/mage/cards/s/SmogsteedRider.java
+++ b/Mage.Sets/src/mage/cards/s/SmogsteedRider.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author Loki
*/
-public class SmogsteedRider extends CardImpl {
+public final class SmogsteedRider extends CardImpl {
public SmogsteedRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Smoke.java b/Mage.Sets/src/mage/cards/s/Smoke.java
index 03c9a4b2668..0b5ca00f485 100644
--- a/Mage.Sets/src/mage/cards/s/Smoke.java
+++ b/Mage.Sets/src/mage/cards/s/Smoke.java
@@ -46,7 +46,7 @@ import mage.players.Player;
* @author KholdFuzion
*/
-public class Smoke extends CardImpl {
+public final class Smoke extends CardImpl {
public Smoke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SmokeTeller.java b/Mage.Sets/src/mage/cards/s/SmokeTeller.java
index 30d39e67e57..61f284dce97 100644
--- a/Mage.Sets/src/mage/cards/s/SmokeTeller.java
+++ b/Mage.Sets/src/mage/cards/s/SmokeTeller.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SmokeTeller extends CardImpl {
+public final class SmokeTeller extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face down creature");
diff --git a/Mage.Sets/src/mage/cards/s/Smokebraider.java b/Mage.Sets/src/mage/cards/s/Smokebraider.java
index 5c14e4a8731..9fcebc6e8e7 100644
--- a/Mage.Sets/src/mage/cards/s/Smokebraider.java
+++ b/Mage.Sets/src/mage/cards/s/Smokebraider.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author North
*/
-public class Smokebraider extends CardImpl {
+public final class Smokebraider extends CardImpl {
public Smokebraider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SmokespewInvoker.java b/Mage.Sets/src/mage/cards/s/SmokespewInvoker.java
index 4984f2bab4d..f3c83c8a1ee 100644
--- a/Mage.Sets/src/mage/cards/s/SmokespewInvoker.java
+++ b/Mage.Sets/src/mage/cards/s/SmokespewInvoker.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SmokespewInvoker extends CardImpl {
+public final class SmokespewInvoker extends CardImpl {
public SmokespewInvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Smokestack.java b/Mage.Sets/src/mage/cards/s/Smokestack.java
index ab121db090d..77b49e0ca09 100644
--- a/Mage.Sets/src/mage/cards/s/Smokestack.java
+++ b/Mage.Sets/src/mage/cards/s/Smokestack.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class Smokestack extends CardImpl {
+public final class Smokestack extends CardImpl {
public Smokestack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SmolderInitiate.java b/Mage.Sets/src/mage/cards/s/SmolderInitiate.java
index b3b6ee4851e..a84a46d91dc 100644
--- a/Mage.Sets/src/mage/cards/s/SmolderInitiate.java
+++ b/Mage.Sets/src/mage/cards/s/SmolderInitiate.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class SmolderInitiate extends CardImpl {
+public final class SmolderInitiate extends CardImpl {
private static final FilterSpell filter = new FilterSpell("black spell");
diff --git a/Mage.Sets/src/mage/cards/s/SmolderingButcher.java b/Mage.Sets/src/mage/cards/s/SmolderingButcher.java
index 2bb30511730..9cb967149f0 100644
--- a/Mage.Sets/src/mage/cards/s/SmolderingButcher.java
+++ b/Mage.Sets/src/mage/cards/s/SmolderingButcher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SmolderingButcher extends CardImpl {
+public final class SmolderingButcher extends CardImpl {
public SmolderingButcher (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SmolderingCrater.java b/Mage.Sets/src/mage/cards/s/SmolderingCrater.java
index e14f514d735..c6ef879db0f 100644
--- a/Mage.Sets/src/mage/cards/s/SmolderingCrater.java
+++ b/Mage.Sets/src/mage/cards/s/SmolderingCrater.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Backfir3
*/
-public class SmolderingCrater extends CardImpl {
+public final class SmolderingCrater extends CardImpl {
public SmolderingCrater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SmolderingEfreet.java b/Mage.Sets/src/mage/cards/s/SmolderingEfreet.java
index 4fb94d322dd..3c05b4dede4 100644
--- a/Mage.Sets/src/mage/cards/s/SmolderingEfreet.java
+++ b/Mage.Sets/src/mage/cards/s/SmolderingEfreet.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SmolderingEfreet extends CardImpl {
+public final class SmolderingEfreet extends CardImpl {
public SmolderingEfreet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SmolderingMarsh.java b/Mage.Sets/src/mage/cards/s/SmolderingMarsh.java
index c983e383217..93fd3cfc6df 100644
--- a/Mage.Sets/src/mage/cards/s/SmolderingMarsh.java
+++ b/Mage.Sets/src/mage/cards/s/SmolderingMarsh.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author fireshoes
*/
-public class SmolderingMarsh extends CardImpl {
+public final class SmolderingMarsh extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SmolderingSpires.java b/Mage.Sets/src/mage/cards/s/SmolderingSpires.java
index 163dee13932..0e008b47cb4 100644
--- a/Mage.Sets/src/mage/cards/s/SmolderingSpires.java
+++ b/Mage.Sets/src/mage/cards/s/SmolderingSpires.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SmolderingSpires extends CardImpl {
+public final class SmolderingSpires extends CardImpl {
public SmolderingSpires(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SmolderingTar.java b/Mage.Sets/src/mage/cards/s/SmolderingTar.java
index 97a1e9e27c2..ac0dfe7994b 100644
--- a/Mage.Sets/src/mage/cards/s/SmolderingTar.java
+++ b/Mage.Sets/src/mage/cards/s/SmolderingTar.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class SmolderingTar extends CardImpl {
+public final class SmolderingTar extends CardImpl {
public SmolderingTar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SmolderingWerewolf.java b/Mage.Sets/src/mage/cards/s/SmolderingWerewolf.java
index c4ebaa696fd..4b7d25929a3 100644
--- a/Mage.Sets/src/mage/cards/s/SmolderingWerewolf.java
+++ b/Mage.Sets/src/mage/cards/s/SmolderingWerewolf.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SmolderingWerewolf extends CardImpl {
+public final class SmolderingWerewolf extends CardImpl {
public SmolderingWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Smother.java b/Mage.Sets/src/mage/cards/s/Smother.java
index 1241e95dcee..4ff9403837c 100644
--- a/Mage.Sets/src/mage/cards/s/Smother.java
+++ b/Mage.Sets/src/mage/cards/s/Smother.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Smother extends CardImpl {
+public final class Smother extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/s/SmotheringAbomination.java b/Mage.Sets/src/mage/cards/s/SmotheringAbomination.java
index 12e7fa52377..2e6e11f42cb 100644
--- a/Mage.Sets/src/mage/cards/s/SmotheringAbomination.java
+++ b/Mage.Sets/src/mage/cards/s/SmotheringAbomination.java
@@ -50,7 +50,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes
*/
-public class SmotheringAbomination extends CardImpl {
+public final class SmotheringAbomination extends CardImpl {
public SmotheringAbomination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SmugglersCopter.java b/Mage.Sets/src/mage/cards/s/SmugglersCopter.java
index 31c74ac9a5c..c98a233bdc1 100644
--- a/Mage.Sets/src/mage/cards/s/SmugglersCopter.java
+++ b/Mage.Sets/src/mage/cards/s/SmugglersCopter.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author emerald000
*/
-public class SmugglersCopter extends CardImpl {
+public final class SmugglersCopter extends CardImpl {
public SmugglersCopter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/Snag.java b/Mage.Sets/src/mage/cards/s/Snag.java
index c418ebf56b0..9873db85776 100644
--- a/Mage.Sets/src/mage/cards/s/Snag.java
+++ b/Mage.Sets/src/mage/cards/s/Snag.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author TheElk801
*/
-public class Snag extends CardImpl {
+public final class Snag extends CardImpl {
private static final FilterCard filter = new FilterCard("a Forest card");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("unblocked creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SnakeBasket.java b/Mage.Sets/src/mage/cards/s/SnakeBasket.java
index 6aeac03493f..6adac352d99 100644
--- a/Mage.Sets/src/mage/cards/s/SnakeBasket.java
+++ b/Mage.Sets/src/mage/cards/s/SnakeBasket.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.SnakeToken;
*
* @author Quercitron
*/
-public class SnakeBasket extends CardImpl {
+public final class SnakeBasket extends CardImpl {
public SnakeBasket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SnakeCultInitiation.java b/Mage.Sets/src/mage/cards/s/SnakeCultInitiation.java
index a3debeaa088..e7f96e44a11 100644
--- a/Mage.Sets/src/mage/cards/s/SnakeCultInitiation.java
+++ b/Mage.Sets/src/mage/cards/s/SnakeCultInitiation.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SnakeCultInitiation extends CardImpl {
+public final class SnakeCultInitiation extends CardImpl {
public SnakeCultInitiation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SnakeOfTheGoldenGrove.java b/Mage.Sets/src/mage/cards/s/SnakeOfTheGoldenGrove.java
index 5aef70826a1..dfa5b3947b5 100644
--- a/Mage.Sets/src/mage/cards/s/SnakeOfTheGoldenGrove.java
+++ b/Mage.Sets/src/mage/cards/s/SnakeOfTheGoldenGrove.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SnakeOfTheGoldenGrove extends CardImpl {
+public final class SnakeOfTheGoldenGrove extends CardImpl {
public SnakeOfTheGoldenGrove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SnakePit.java b/Mage.Sets/src/mage/cards/s/SnakePit.java
index e0b616aff8b..83e2f2fa9ac 100644
--- a/Mage.Sets/src/mage/cards/s/SnakePit.java
+++ b/Mage.Sets/src/mage/cards/s/SnakePit.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.SnakeToken;
*
* @author LoneFox
*/
-public class SnakePit extends CardImpl {
+public final class SnakePit extends CardImpl {
private final static FilterSpell filter = new FilterSpell("a blue or black spell");
diff --git a/Mage.Sets/src/mage/cards/s/SnakeUmbra.java b/Mage.Sets/src/mage/cards/s/SnakeUmbra.java
index 11118133b2e..c86e57a363d 100644
--- a/Mage.Sets/src/mage/cards/s/SnakeUmbra.java
+++ b/Mage.Sets/src/mage/cards/s/SnakeUmbra.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeff
*/
-public class SnakeUmbra extends CardImpl {
+public final class SnakeUmbra extends CardImpl {
public SnakeUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Snakeform.java b/Mage.Sets/src/mage/cards/s/Snakeform.java
index b4933d38146..0e776b928b7 100644
--- a/Mage.Sets/src/mage/cards/s/Snakeform.java
+++ b/Mage.Sets/src/mage/cards/s/Snakeform.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*/
-public class Snakeform extends CardImpl {
+public final class Snakeform extends CardImpl {
public Snakeform(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/s/Snap.java b/Mage.Sets/src/mage/cards/s/Snap.java
index d43090af498..e89edff1234 100644
--- a/Mage.Sets/src/mage/cards/s/Snap.java
+++ b/Mage.Sets/src/mage/cards/s/Snap.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Snap extends CardImpl {
+public final class Snap extends CardImpl {
public Snap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Snapback.java b/Mage.Sets/src/mage/cards/s/Snapback.java
index a76271c5bd0..1446c9c489a 100644
--- a/Mage.Sets/src/mage/cards/s/Snapback.java
+++ b/Mage.Sets/src/mage/cards/s/Snapback.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class Snapback extends CardImpl {
+public final class Snapback extends CardImpl {
public Snapback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SnapcasterMage.java b/Mage.Sets/src/mage/cards/s/SnapcasterMage.java
index 8edd44f4ffb..98468697326 100644
--- a/Mage.Sets/src/mage/cards/s/SnapcasterMage.java
+++ b/Mage.Sets/src/mage/cards/s/SnapcasterMage.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author BetaSteward
*/
-public class SnapcasterMage extends CardImpl {
+public final class SnapcasterMage extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card in your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/SnappingCreeper.java b/Mage.Sets/src/mage/cards/s/SnappingCreeper.java
index 37e9acf7df6..2ddbe7f6511 100644
--- a/Mage.Sets/src/mage/cards/s/SnappingCreeper.java
+++ b/Mage.Sets/src/mage/cards/s/SnappingCreeper.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class SnappingCreeper extends CardImpl {
+public final class SnappingCreeper extends CardImpl {
public SnappingCreeper (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SnappingDrake.java b/Mage.Sets/src/mage/cards/s/SnappingDrake.java
index ea2a01926c0..a8f20fb5c8f 100644
--- a/Mage.Sets/src/mage/cards/s/SnappingDrake.java
+++ b/Mage.Sets/src/mage/cards/s/SnappingDrake.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SnappingDrake extends CardImpl {
+public final class SnappingDrake extends CardImpl {
public SnappingDrake (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SnappingGnarlid.java b/Mage.Sets/src/mage/cards/s/SnappingGnarlid.java
index 0e72eedd61b..1d3741c73d4 100644
--- a/Mage.Sets/src/mage/cards/s/SnappingGnarlid.java
+++ b/Mage.Sets/src/mage/cards/s/SnappingGnarlid.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class SnappingGnarlid extends CardImpl {
+public final class SnappingGnarlid extends CardImpl {
public SnappingGnarlid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SnappingSailback.java b/Mage.Sets/src/mage/cards/s/SnappingSailback.java
index 2fc3f7f4941..16e070614a8 100644
--- a/Mage.Sets/src/mage/cards/s/SnappingSailback.java
+++ b/Mage.Sets/src/mage/cards/s/SnappingSailback.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class SnappingSailback extends CardImpl {
+public final class SnappingSailback extends CardImpl {
public SnappingSailback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SnappingThragg.java b/Mage.Sets/src/mage/cards/s/SnappingThragg.java
index 6fb17f61b7e..390596909b3 100644
--- a/Mage.Sets/src/mage/cards/s/SnappingThragg.java
+++ b/Mage.Sets/src/mage/cards/s/SnappingThragg.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class SnappingThragg extends CardImpl {
+public final class SnappingThragg extends CardImpl {
public SnappingThragg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SnapsailGlider.java b/Mage.Sets/src/mage/cards/s/SnapsailGlider.java
index 06e68fa0f7c..ede6fd62da1 100644
--- a/Mage.Sets/src/mage/cards/s/SnapsailGlider.java
+++ b/Mage.Sets/src/mage/cards/s/SnapsailGlider.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Loki, nantuko
*/
-public class SnapsailGlider extends CardImpl {
+public final class SnapsailGlider extends CardImpl {
protected static String rule = "Metalcraft - Snapsail Glider has flying as long as you control three or more artifacts";
diff --git a/Mage.Sets/src/mage/cards/s/SnareTheSkies.java b/Mage.Sets/src/mage/cards/s/SnareTheSkies.java
index b3d3afd8129..ff0d457d6ab 100644
--- a/Mage.Sets/src/mage/cards/s/SnareTheSkies.java
+++ b/Mage.Sets/src/mage/cards/s/SnareTheSkies.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SnareTheSkies extends CardImpl {
+public final class SnareTheSkies extends CardImpl {
public SnareTheSkies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SnareThopter.java b/Mage.Sets/src/mage/cards/s/SnareThopter.java
index 935ed196275..e71edfe10b5 100644
--- a/Mage.Sets/src/mage/cards/s/SnareThopter.java
+++ b/Mage.Sets/src/mage/cards/s/SnareThopter.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SnareThopter extends CardImpl {
+public final class SnareThopter extends CardImpl {
public SnareThopter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SnarlingUndorak.java b/Mage.Sets/src/mage/cards/s/SnarlingUndorak.java
index 004fa86f9b3..5c6091d9095 100644
--- a/Mage.Sets/src/mage/cards/s/SnarlingUndorak.java
+++ b/Mage.Sets/src/mage/cards/s/SnarlingUndorak.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SnarlingUndorak extends CardImpl {
+public final class SnarlingUndorak extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Beast creature");
diff --git a/Mage.Sets/src/mage/cards/s/SneakAttack.java b/Mage.Sets/src/mage/cards/s/SneakAttack.java
index df25f52570c..8f45bdfe8e5 100644
--- a/Mage.Sets/src/mage/cards/s/SneakAttack.java
+++ b/Mage.Sets/src/mage/cards/s/SneakAttack.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SneakAttack extends CardImpl {
+public final class SneakAttack extends CardImpl {
public SneakAttack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SneakyHomunculus.java b/Mage.Sets/src/mage/cards/s/SneakyHomunculus.java
index 0a3cac7e2ba..9c9dbbcb2a8 100644
--- a/Mage.Sets/src/mage/cards/s/SneakyHomunculus.java
+++ b/Mage.Sets/src/mage/cards/s/SneakyHomunculus.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author dustinconrad
*/
-public class SneakyHomunculus extends CardImpl {
+public final class SneakyHomunculus extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/SnickeringSquirrel.java b/Mage.Sets/src/mage/cards/s/SnickeringSquirrel.java
index ad835d320fe..b3bec58124c 100644
--- a/Mage.Sets/src/mage/cards/s/SnickeringSquirrel.java
+++ b/Mage.Sets/src/mage/cards/s/SnickeringSquirrel.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class SnickeringSquirrel extends CardImpl {
+public final class SnickeringSquirrel extends CardImpl {
public SnickeringSquirrel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SnortingGahr.java b/Mage.Sets/src/mage/cards/s/SnortingGahr.java
index 8143052f60a..fba19abe503 100644
--- a/Mage.Sets/src/mage/cards/s/SnortingGahr.java
+++ b/Mage.Sets/src/mage/cards/s/SnortingGahr.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class SnortingGahr extends CardImpl {
+public final class SnortingGahr extends CardImpl {
public SnortingGahr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SnowCoveredForest.java b/Mage.Sets/src/mage/cards/s/SnowCoveredForest.java
index f801bfcdb80..95abc76a992 100644
--- a/Mage.Sets/src/mage/cards/s/SnowCoveredForest.java
+++ b/Mage.Sets/src/mage/cards/s/SnowCoveredForest.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class SnowCoveredForest extends CardImpl {
+public final class SnowCoveredForest extends CardImpl {
public SnowCoveredForest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SnowCoveredIsland.java b/Mage.Sets/src/mage/cards/s/SnowCoveredIsland.java
index 363856c8566..76df6e643f8 100644
--- a/Mage.Sets/src/mage/cards/s/SnowCoveredIsland.java
+++ b/Mage.Sets/src/mage/cards/s/SnowCoveredIsland.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class SnowCoveredIsland extends CardImpl {
+public final class SnowCoveredIsland extends CardImpl {
public SnowCoveredIsland(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SnowCoveredMountain.java b/Mage.Sets/src/mage/cards/s/SnowCoveredMountain.java
index db6a1da0231..69075caee1a 100644
--- a/Mage.Sets/src/mage/cards/s/SnowCoveredMountain.java
+++ b/Mage.Sets/src/mage/cards/s/SnowCoveredMountain.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class SnowCoveredMountain extends CardImpl {
+public final class SnowCoveredMountain extends CardImpl {
public SnowCoveredMountain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SnowCoveredPlains.java b/Mage.Sets/src/mage/cards/s/SnowCoveredPlains.java
index c3eba250317..f807217f1a4 100644
--- a/Mage.Sets/src/mage/cards/s/SnowCoveredPlains.java
+++ b/Mage.Sets/src/mage/cards/s/SnowCoveredPlains.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class SnowCoveredPlains extends CardImpl {
+public final class SnowCoveredPlains extends CardImpl {
public SnowCoveredPlains(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SnowCoveredSwamp.java b/Mage.Sets/src/mage/cards/s/SnowCoveredSwamp.java
index e2a19bfa93a..8f0a9289f30 100644
--- a/Mage.Sets/src/mage/cards/s/SnowCoveredSwamp.java
+++ b/Mage.Sets/src/mage/cards/s/SnowCoveredSwamp.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class SnowCoveredSwamp extends CardImpl {
+public final class SnowCoveredSwamp extends CardImpl {
public SnowCoveredSwamp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SnowFortress.java b/Mage.Sets/src/mage/cards/s/SnowFortress.java
index 1d58404c885..962048d5bff 100644
--- a/Mage.Sets/src/mage/cards/s/SnowFortress.java
+++ b/Mage.Sets/src/mage/cards/s/SnowFortress.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class SnowFortress extends CardImpl {
+public final class SnowFortress extends CardImpl {
private static final FilterCreatureAttackingYou filter = new FilterCreatureAttackingYou("creature without flying that's attacking you");
diff --git a/Mage.Sets/src/mage/cards/s/SnowHound.java b/Mage.Sets/src/mage/cards/s/SnowHound.java
index 1ae5a4a13fe..6c1ffb0c956 100644
--- a/Mage.Sets/src/mage/cards/s/SnowHound.java
+++ b/Mage.Sets/src/mage/cards/s/SnowHound.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class SnowHound extends CardImpl {
+public final class SnowHound extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("green or blue creature");
static {
filter.add(Predicates.or(
diff --git a/Mage.Sets/src/mage/cards/s/SnowMercy.java b/Mage.Sets/src/mage/cards/s/SnowMercy.java
index 9aed747317b..7c32500fbd1 100644
--- a/Mage.Sets/src/mage/cards/s/SnowMercy.java
+++ b/Mage.Sets/src/mage/cards/s/SnowMercy.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class SnowMercy extends CardImpl {
+public final class SnowMercy extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with globe counters on them");
diff --git a/Mage.Sets/src/mage/cards/s/SnowTrooper.java b/Mage.Sets/src/mage/cards/s/SnowTrooper.java
index de253d4809f..c7aeebc96be 100644
--- a/Mage.Sets/src/mage/cards/s/SnowTrooper.java
+++ b/Mage.Sets/src/mage/cards/s/SnowTrooper.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Styxo
*/
-public class SnowTrooper extends CardImpl {
+public final class SnowTrooper extends CardImpl {
public SnowTrooper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SnowhornRider.java b/Mage.Sets/src/mage/cards/s/SnowhornRider.java
index 0e9cca0ebed..d7ac6e620ce 100644
--- a/Mage.Sets/src/mage/cards/s/SnowhornRider.java
+++ b/Mage.Sets/src/mage/cards/s/SnowhornRider.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SnowhornRider extends CardImpl {
+public final class SnowhornRider extends CardImpl {
public SnowhornRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SnubhornSentry.java b/Mage.Sets/src/mage/cards/s/SnubhornSentry.java
index e1ba014e8b6..07fa42c96b1 100644
--- a/Mage.Sets/src/mage/cards/s/SnubhornSentry.java
+++ b/Mage.Sets/src/mage/cards/s/SnubhornSentry.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SnubhornSentry extends CardImpl {
+public final class SnubhornSentry extends CardImpl {
public SnubhornSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SnuffOut.java b/Mage.Sets/src/mage/cards/s/SnuffOut.java
index 59b494ee37f..db25c202295 100644
--- a/Mage.Sets/src/mage/cards/s/SnuffOut.java
+++ b/Mage.Sets/src/mage/cards/s/SnuffOut.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SnuffOut extends CardImpl {
+public final class SnuffOut extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
private static final FilterLandPermanent filterSwamp = new FilterLandPermanent("If you control a Swamp");
diff --git a/Mage.Sets/src/mage/cards/s/Soar.java b/Mage.Sets/src/mage/cards/s/Soar.java
index 3def6c28e30..729e45dfa5d 100644
--- a/Mage.Sets/src/mage/cards/s/Soar.java
+++ b/Mage.Sets/src/mage/cards/s/Soar.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Soar extends CardImpl {
+public final class Soar extends CardImpl {
public Soar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SoaringHope.java b/Mage.Sets/src/mage/cards/s/SoaringHope.java
index ec72a2e7f85..e310b86b917 100644
--- a/Mage.Sets/src/mage/cards/s/SoaringHope.java
+++ b/Mage.Sets/src/mage/cards/s/SoaringHope.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class SoaringHope extends CardImpl {
+public final class SoaringHope extends CardImpl {
public SoaringHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoaringSeacliff.java b/Mage.Sets/src/mage/cards/s/SoaringSeacliff.java
index 55e1803b0dc..7e3def42a6a 100644
--- a/Mage.Sets/src/mage/cards/s/SoaringSeacliff.java
+++ b/Mage.Sets/src/mage/cards/s/SoaringSeacliff.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SoaringSeacliff extends CardImpl {
+public final class SoaringSeacliff extends CardImpl {
public SoaringSeacliff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SoaringShowOff.java b/Mage.Sets/src/mage/cards/s/SoaringShowOff.java
new file mode 100644
index 00000000000..560aaecf045
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/SoaringShowOff.java
@@ -0,0 +1,69 @@
+/*
+ * 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.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.DrawCardAllEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class SoaringShowOff extends CardImpl {
+
+ public SoaringShowOff(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
+
+ this.subtype.add(SubType.BIRD);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // When Soaring Show-Off enters the battlefield, each player draws a card.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardAllEffect(1)));
+ }
+
+ public SoaringShowOff(final SoaringShowOff card) {
+ super(card);
+ }
+
+ @Override
+ public SoaringShowOff copy() {
+ return new SoaringShowOff(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/Soilshaper.java b/Mage.Sets/src/mage/cards/s/Soilshaper.java
index 8f0a127efd5..b28e45d813a 100644
--- a/Mage.Sets/src/mage/cards/s/Soilshaper.java
+++ b/Mage.Sets/src/mage/cards/s/Soilshaper.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
/**
* @author Loki
*/
-public class Soilshaper extends CardImpl {
+public final class Soilshaper extends CardImpl {
public Soilshaper(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/s/SokenzanBruiser.java b/Mage.Sets/src/mage/cards/s/SokenzanBruiser.java
index f77197271c5..2c5ecfe901e 100644
--- a/Mage.Sets/src/mage/cards/s/SokenzanBruiser.java
+++ b/Mage.Sets/src/mage/cards/s/SokenzanBruiser.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SokenzanBruiser extends CardImpl {
+public final class SokenzanBruiser extends CardImpl {
public SokenzanBruiser (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SokenzanRenegade.java b/Mage.Sets/src/mage/cards/s/SokenzanRenegade.java
index 8b47c426017..58df5c352d4 100644
--- a/Mage.Sets/src/mage/cards/s/SokenzanRenegade.java
+++ b/Mage.Sets/src/mage/cards/s/SokenzanRenegade.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SokenzanRenegade extends CardImpl {
+public final class SokenzanRenegade extends CardImpl {
public SokenzanRenegade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SokenzanSpellblade.java b/Mage.Sets/src/mage/cards/s/SokenzanSpellblade.java
index 8dc2c411bc2..bdf6b58ba04 100644
--- a/Mage.Sets/src/mage/cards/s/SokenzanSpellblade.java
+++ b/Mage.Sets/src/mage/cards/s/SokenzanSpellblade.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SokenzanSpellblade extends CardImpl {
+public final class SokenzanSpellblade extends CardImpl {
public SokenzanSpellblade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SolGrail.java b/Mage.Sets/src/mage/cards/s/SolGrail.java
index ccdb80ba900..a461a42c664 100644
--- a/Mage.Sets/src/mage/cards/s/SolGrail.java
+++ b/Mage.Sets/src/mage/cards/s/SolGrail.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SolGrail extends CardImpl {
+public final class SolGrail extends CardImpl {
public SolGrail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SolRing.java b/Mage.Sets/src/mage/cards/s/SolRing.java
index 5d63c3c8dbb..950768aad10 100644
--- a/Mage.Sets/src/mage/cards/s/SolRing.java
+++ b/Mage.Sets/src/mage/cards/s/SolRing.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class SolRing extends CardImpl {
+public final class SolRing extends CardImpl {
public SolRing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SolarBlast.java b/Mage.Sets/src/mage/cards/s/SolarBlast.java
index 6e2344977f3..f74f2594bbd 100644
--- a/Mage.Sets/src/mage/cards/s/SolarBlast.java
+++ b/Mage.Sets/src/mage/cards/s/SolarBlast.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class SolarBlast extends CardImpl {
+public final class SolarBlast extends CardImpl {
public SolarBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SolarTide.java b/Mage.Sets/src/mage/cards/s/SolarTide.java
index d30551d83ab..1da80aeaf30 100644
--- a/Mage.Sets/src/mage/cards/s/SolarTide.java
+++ b/Mage.Sets/src/mage/cards/s/SolarTide.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class SolarTide extends CardImpl {
+public final class SolarTide extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creatures with power 2 or less");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creatures with power 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/Solarion.java b/Mage.Sets/src/mage/cards/s/Solarion.java
index 9471101726f..91f85295c25 100644
--- a/Mage.Sets/src/mage/cards/s/Solarion.java
+++ b/Mage.Sets/src/mage/cards/s/Solarion.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author Plopman
*/
-public class Solarion extends CardImpl {
+public final class Solarion extends CardImpl {
public Solarion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/s/SoldeviAdnate.java b/Mage.Sets/src/mage/cards/s/SoldeviAdnate.java
index 65b7527e7d0..0a20957e8a6 100644
--- a/Mage.Sets/src/mage/cards/s/SoldeviAdnate.java
+++ b/Mage.Sets/src/mage/cards/s/SoldeviAdnate.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class SoldeviAdnate extends CardImpl {
+public final class SoldeviAdnate extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black or artifact creature");
diff --git a/Mage.Sets/src/mage/cards/s/SoldeviDigger.java b/Mage.Sets/src/mage/cards/s/SoldeviDigger.java
index 4c76333b01b..1968d919113 100644
--- a/Mage.Sets/src/mage/cards/s/SoldeviDigger.java
+++ b/Mage.Sets/src/mage/cards/s/SoldeviDigger.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class SoldeviDigger extends CardImpl {
+public final class SoldeviDigger extends CardImpl {
public SoldeviDigger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java b/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java
index 3bc0a2d7a86..ac21b1f43e6 100644
--- a/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java
+++ b/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class SoldeviExcavations extends CardImpl {
+public final class SoldeviExcavations extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Island");
diff --git a/Mage.Sets/src/mage/cards/s/SoldeviGolem.java b/Mage.Sets/src/mage/cards/s/SoldeviGolem.java
index 35b3d151c26..ede085d8e88 100644
--- a/Mage.Sets/src/mage/cards/s/SoldeviGolem.java
+++ b/Mage.Sets/src/mage/cards/s/SoldeviGolem.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class SoldeviGolem extends CardImpl {
+public final class SoldeviGolem extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SoldeviHeretic.java b/Mage.Sets/src/mage/cards/s/SoldeviHeretic.java
index ac59ef8c8b6..3460673c86a 100644
--- a/Mage.Sets/src/mage/cards/s/SoldeviHeretic.java
+++ b/Mage.Sets/src/mage/cards/s/SoldeviHeretic.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author L_J
*/
-public class SoldeviHeretic extends CardImpl {
+public final class SoldeviHeretic extends CardImpl {
public SoldeviHeretic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SoldeviMachinist.java b/Mage.Sets/src/mage/cards/s/SoldeviMachinist.java
index fe393363a81..d0f71e2beaf 100644
--- a/Mage.Sets/src/mage/cards/s/SoldeviMachinist.java
+++ b/Mage.Sets/src/mage/cards/s/SoldeviMachinist.java
@@ -50,7 +50,7 @@ import mage.game.Game;
*
* @author hanasu
*/
-public class SoldeviMachinist extends CardImpl {
+public final class SoldeviMachinist extends CardImpl {
public SoldeviMachinist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SoldeviSage.java b/Mage.Sets/src/mage/cards/s/SoldeviSage.java
index d351f569c13..8a28eab9abb 100644
--- a/Mage.Sets/src/mage/cards/s/SoldeviSage.java
+++ b/Mage.Sets/src/mage/cards/s/SoldeviSage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Quercitron
*/
-public class SoldeviSage extends CardImpl {
+public final class SoldeviSage extends CardImpl {
public SoldeviSage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SoldeviSimulacrum.java b/Mage.Sets/src/mage/cards/s/SoldeviSimulacrum.java
index dfe17d84bee..db286b8a384 100644
--- a/Mage.Sets/src/mage/cards/s/SoldeviSimulacrum.java
+++ b/Mage.Sets/src/mage/cards/s/SoldeviSimulacrum.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class SoldeviSimulacrum extends CardImpl {
+public final class SoldeviSimulacrum extends CardImpl {
public SoldeviSimulacrum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SoldeviSteamBeast.java b/Mage.Sets/src/mage/cards/s/SoldeviSteamBeast.java
index 41c9a6c84ed..66f072c786a 100644
--- a/Mage.Sets/src/mage/cards/s/SoldeviSteamBeast.java
+++ b/Mage.Sets/src/mage/cards/s/SoldeviSteamBeast.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author L_J
*/
-public class SoldeviSteamBeast extends CardImpl {
+public final class SoldeviSteamBeast extends CardImpl {
public SoldeviSteamBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/s/SoldierOfFortune.java b/Mage.Sets/src/mage/cards/s/SoldierOfFortune.java
index 1f7b3d56a75..6604243d59c 100644
--- a/Mage.Sets/src/mage/cards/s/SoldierOfFortune.java
+++ b/Mage.Sets/src/mage/cards/s/SoldierOfFortune.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author Backfir3
*/
-public class SoldierOfFortune extends CardImpl {
+public final class SoldierOfFortune extends CardImpl {
public SoldierOfFortune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SoldierOfThePantheon.java b/Mage.Sets/src/mage/cards/s/SoldierOfThePantheon.java
index d361524e780..c8417569ee1 100644
--- a/Mage.Sets/src/mage/cards/s/SoldierOfThePantheon.java
+++ b/Mage.Sets/src/mage/cards/s/SoldierOfThePantheon.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*
* @author LevelX2
*/
-public class SoldierOfThePantheon extends CardImpl {
+public final class SoldierOfThePantheon extends CardImpl {
private static final FilterObject filter = new FilterObject("multicolored");
diff --git a/Mage.Sets/src/mage/cards/s/SoldierReplica.java b/Mage.Sets/src/mage/cards/s/SoldierReplica.java
index 3f6ae7b3a1b..0ce732d0cfd 100644
--- a/Mage.Sets/src/mage/cards/s/SoldierReplica.java
+++ b/Mage.Sets/src/mage/cards/s/SoldierReplica.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SoldierReplica extends CardImpl {
+public final class SoldierReplica extends CardImpl {
public SoldierReplica(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SolemnOffering.java b/Mage.Sets/src/mage/cards/s/SolemnOffering.java
index 7c82e4ceb93..fe7c87fd8ea 100644
--- a/Mage.Sets/src/mage/cards/s/SolemnOffering.java
+++ b/Mage.Sets/src/mage/cards/s/SolemnOffering.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SolemnOffering extends CardImpl {
+public final class SolemnOffering extends CardImpl {
public SolemnOffering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SolemnRecruit.java b/Mage.Sets/src/mage/cards/s/SolemnRecruit.java
index 3c52c539e4f..35c48d14b88 100644
--- a/Mage.Sets/src/mage/cards/s/SolemnRecruit.java
+++ b/Mage.Sets/src/mage/cards/s/SolemnRecruit.java
@@ -45,7 +45,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author fireshoes
*/
-public class SolemnRecruit extends CardImpl {
+public final class SolemnRecruit extends CardImpl {
public SolemnRecruit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SolemnSimulacrum.java b/Mage.Sets/src/mage/cards/s/SolemnSimulacrum.java
index 0f1722f45a8..9d6c8fcf33e 100644
--- a/Mage.Sets/src/mage/cards/s/SolemnSimulacrum.java
+++ b/Mage.Sets/src/mage/cards/s/SolemnSimulacrum.java
@@ -45,13 +45,13 @@ import java.util.UUID;
*
* @author Loki
*/
-public class SolemnSimulacrum extends CardImpl {
+public final class SolemnSimulacrum extends CardImpl {
public SolemnSimulacrum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
this.subtype.add(SubType.GOLEM);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
this.addAbility(new DiesTriggeredAbility(new DrawCardSourceControllerEffect(1), true));
}
diff --git a/Mage.Sets/src/mage/cards/s/Solemnity.java b/Mage.Sets/src/mage/cards/s/Solemnity.java
index bd3fc7cbaa4..e044c028564 100644
--- a/Mage.Sets/src/mage/cards/s/Solemnity.java
+++ b/Mage.Sets/src/mage/cards/s/Solemnity.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class Solemnity extends CardImpl {
+public final class Solemnity extends CardImpl {
public Solemnity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Solfatara.java b/Mage.Sets/src/mage/cards/s/Solfatara.java
index c6a6b3db5bc..530eb414119 100644
--- a/Mage.Sets/src/mage/cards/s/Solfatara.java
+++ b/Mage.Sets/src/mage/cards/s/Solfatara.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class Solfatara extends CardImpl {
+public final class Solfatara extends CardImpl {
public Solfatara(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Solidarity.java b/Mage.Sets/src/mage/cards/s/Solidarity.java
index df235e76845..78321c45d4e 100644
--- a/Mage.Sets/src/mage/cards/s/Solidarity.java
+++ b/Mage.Sets/src/mage/cards/s/Solidarity.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class Solidarity extends CardImpl {
+public final class Solidarity extends CardImpl {
public Solidarity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SolidarityOfHeroes.java b/Mage.Sets/src/mage/cards/s/SolidarityOfHeroes.java
index 607937f2690..45502e4b4b5 100644
--- a/Mage.Sets/src/mage/cards/s/SolidarityOfHeroes.java
+++ b/Mage.Sets/src/mage/cards/s/SolidarityOfHeroes.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SolidarityOfHeroes extends CardImpl {
+public final class SolidarityOfHeroes extends CardImpl {
public SolidarityOfHeroes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SolitaryCamel.java b/Mage.Sets/src/mage/cards/s/SolitaryCamel.java
index 9def0cf6e03..b8165055ee3 100644
--- a/Mage.Sets/src/mage/cards/s/SolitaryCamel.java
+++ b/Mage.Sets/src/mage/cards/s/SolitaryCamel.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author spjspj
*/
-public class SolitaryCamel extends CardImpl {
+public final class SolitaryCamel extends CardImpl {
private static final FilterControlledPermanent filterDesertPermanent = new FilterControlledPermanent("Desert");
private static final FilterCard filterDesertCard = new FilterCard("Desert card");
diff --git a/Mage.Sets/src/mage/cards/s/SolitaryConfinement.java b/Mage.Sets/src/mage/cards/s/SolitaryConfinement.java
index 5aea33bc1e5..7af29283095 100644
--- a/Mage.Sets/src/mage/cards/s/SolitaryConfinement.java
+++ b/Mage.Sets/src/mage/cards/s/SolitaryConfinement.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class SolitaryConfinement extends CardImpl {
+public final class SolitaryConfinement extends CardImpl {
public SolitaryConfinement(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SolitaryHunter.java b/Mage.Sets/src/mage/cards/s/SolitaryHunter.java
index dee755a508e..30572a62bbc 100644
--- a/Mage.Sets/src/mage/cards/s/SolitaryHunter.java
+++ b/Mage.Sets/src/mage/cards/s/SolitaryHunter.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class SolitaryHunter extends CardImpl {
+public final class SolitaryHunter extends CardImpl {
public SolitaryHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Soliton.java b/Mage.Sets/src/mage/cards/s/Soliton.java
index 16a1b865d03..ec893747bb0 100644
--- a/Mage.Sets/src/mage/cards/s/Soliton.java
+++ b/Mage.Sets/src/mage/cards/s/Soliton.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Soliton extends CardImpl {
+public final class Soliton extends CardImpl {
public Soliton (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/s/SolkanarTheSwampKing.java b/Mage.Sets/src/mage/cards/s/SolkanarTheSwampKing.java
index 4fa7f30733b..ec4d21cb196 100644
--- a/Mage.Sets/src/mage/cards/s/SolkanarTheSwampKing.java
+++ b/Mage.Sets/src/mage/cards/s/SolkanarTheSwampKing.java
@@ -47,7 +47,7 @@ import mage.game.stack.Spell;
*
* @author Loki
*/
-public class SolkanarTheSwampKing extends CardImpl {
+public final class SolkanarTheSwampKing extends CardImpl {
public SolkanarTheSwampKing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SoltariChampion.java b/Mage.Sets/src/mage/cards/s/SoltariChampion.java
index 81765fc2296..41c6a956550 100644
--- a/Mage.Sets/src/mage/cards/s/SoltariChampion.java
+++ b/Mage.Sets/src/mage/cards/s/SoltariChampion.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author KholdFuzion
*/
-public class SoltariChampion extends CardImpl {
+public final class SoltariChampion extends CardImpl {
public SoltariChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoltariCrusader.java b/Mage.Sets/src/mage/cards/s/SoltariCrusader.java
index 42685a68ae3..712b24616fc 100644
--- a/Mage.Sets/src/mage/cards/s/SoltariCrusader.java
+++ b/Mage.Sets/src/mage/cards/s/SoltariCrusader.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class SoltariCrusader extends CardImpl {
+public final class SoltariCrusader extends CardImpl {
public SoltariCrusader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoltariEmissary.java b/Mage.Sets/src/mage/cards/s/SoltariEmissary.java
index db1041126c9..71eae77bb08 100644
--- a/Mage.Sets/src/mage/cards/s/SoltariEmissary.java
+++ b/Mage.Sets/src/mage/cards/s/SoltariEmissary.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SoltariEmissary extends CardImpl {
+public final class SoltariEmissary extends CardImpl {
public SoltariEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoltariFootSoldier.java b/Mage.Sets/src/mage/cards/s/SoltariFootSoldier.java
index b053310272c..28ed4fcb2f7 100644
--- a/Mage.Sets/src/mage/cards/s/SoltariFootSoldier.java
+++ b/Mage.Sets/src/mage/cards/s/SoltariFootSoldier.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SoltariFootSoldier extends CardImpl {
+public final class SoltariFootSoldier extends CardImpl {
public SoltariFootSoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoltariGuerrillas.java b/Mage.Sets/src/mage/cards/s/SoltariGuerrillas.java
index ad7107bbaa9..a00f23387d2 100644
--- a/Mage.Sets/src/mage/cards/s/SoltariGuerrillas.java
+++ b/Mage.Sets/src/mage/cards/s/SoltariGuerrillas.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SoltariGuerrillas extends CardImpl {
+public final class SoltariGuerrillas extends CardImpl {
public SoltariGuerrillas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoltariLancer.java b/Mage.Sets/src/mage/cards/s/SoltariLancer.java
index 65578b937b8..0da5620ef25 100644
--- a/Mage.Sets/src/mage/cards/s/SoltariLancer.java
+++ b/Mage.Sets/src/mage/cards/s/SoltariLancer.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SoltariLancer extends CardImpl {
+public final class SoltariLancer extends CardImpl {
public SoltariLancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoltariMonk.java b/Mage.Sets/src/mage/cards/s/SoltariMonk.java
index 719087e871c..e578a7b5738 100644
--- a/Mage.Sets/src/mage/cards/s/SoltariMonk.java
+++ b/Mage.Sets/src/mage/cards/s/SoltariMonk.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SoltariMonk extends CardImpl {
+public final class SoltariMonk extends CardImpl {
public SoltariMonk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoltariPriest.java b/Mage.Sets/src/mage/cards/s/SoltariPriest.java
index 190ec3b7d8b..2028b88d858 100644
--- a/Mage.Sets/src/mage/cards/s/SoltariPriest.java
+++ b/Mage.Sets/src/mage/cards/s/SoltariPriest.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SoltariPriest extends CardImpl {
+public final class SoltariPriest extends CardImpl {
public SoltariPriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoltariTrooper.java b/Mage.Sets/src/mage/cards/s/SoltariTrooper.java
index d8bb283348f..6f0fa32fceb 100644
--- a/Mage.Sets/src/mage/cards/s/SoltariTrooper.java
+++ b/Mage.Sets/src/mage/cards/s/SoltariTrooper.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class SoltariTrooper extends CardImpl {
+public final class SoltariTrooper extends CardImpl {
public SoltariTrooper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoltariVisionary.java b/Mage.Sets/src/mage/cards/s/SoltariVisionary.java
index 78a9792f24e..8c33443323e 100644
--- a/Mage.Sets/src/mage/cards/s/SoltariVisionary.java
+++ b/Mage.Sets/src/mage/cards/s/SoltariVisionary.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class SoltariVisionary extends CardImpl {
+public final class SoltariVisionary extends CardImpl {
public SoltariVisionary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SomberHoverguard.java b/Mage.Sets/src/mage/cards/s/SomberHoverguard.java
index 2ec8c09aeba..011e8af27ce 100644
--- a/Mage.Sets/src/mage/cards/s/SomberHoverguard.java
+++ b/Mage.Sets/src/mage/cards/s/SomberHoverguard.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SomberHoverguard extends CardImpl {
+public final class SomberHoverguard extends CardImpl {
public SomberHoverguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SomberwaldAlpha.java b/Mage.Sets/src/mage/cards/s/SomberwaldAlpha.java
index 0204c1507a0..e51cef93853 100644
--- a/Mage.Sets/src/mage/cards/s/SomberwaldAlpha.java
+++ b/Mage.Sets/src/mage/cards/s/SomberwaldAlpha.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class SomberwaldAlpha extends CardImpl {
+public final class SomberwaldAlpha extends CardImpl {
final static private FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SomberwaldDryad.java b/Mage.Sets/src/mage/cards/s/SomberwaldDryad.java
index 8074884c5ae..245d69ffdb3 100644
--- a/Mage.Sets/src/mage/cards/s/SomberwaldDryad.java
+++ b/Mage.Sets/src/mage/cards/s/SomberwaldDryad.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SomberwaldDryad extends CardImpl {
+public final class SomberwaldDryad extends CardImpl {
public SomberwaldDryad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SomberwaldSage.java b/Mage.Sets/src/mage/cards/s/SomberwaldSage.java
index 284fd305b4d..44defad42ef 100644
--- a/Mage.Sets/src/mage/cards/s/SomberwaldSage.java
+++ b/Mage.Sets/src/mage/cards/s/SomberwaldSage.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
/**
* @author noxx
*/
-public class SomberwaldSage extends CardImpl {
+public final class SomberwaldSage extends CardImpl {
public SomberwaldSage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SomberwaldSpider.java b/Mage.Sets/src/mage/cards/s/SomberwaldSpider.java
index 3163a0a558c..3b9f65aead7 100644
--- a/Mage.Sets/src/mage/cards/s/SomberwaldSpider.java
+++ b/Mage.Sets/src/mage/cards/s/SomberwaldSpider.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class SomberwaldSpider extends CardImpl {
+public final class SomberwaldSpider extends CardImpl {
public SomberwaldSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SomberwaldStag.java b/Mage.Sets/src/mage/cards/s/SomberwaldStag.java
index f5d6b388b55..29998b529c6 100644
--- a/Mage.Sets/src/mage/cards/s/SomberwaldStag.java
+++ b/Mage.Sets/src/mage/cards/s/SomberwaldStag.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SomberwaldStag extends CardImpl {
+public final class SomberwaldStag extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/s/SomberwaldVigilante.java b/Mage.Sets/src/mage/cards/s/SomberwaldVigilante.java
index 1d17ea1a388..3c9a70c0a8b 100644
--- a/Mage.Sets/src/mage/cards/s/SomberwaldVigilante.java
+++ b/Mage.Sets/src/mage/cards/s/SomberwaldVigilante.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SomberwaldVigilante extends CardImpl {
+public final class SomberwaldVigilante extends CardImpl {
public SomberwaldVigilante(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Somnomancer.java b/Mage.Sets/src/mage/cards/s/Somnomancer.java
index badf7c28db5..6e51b0d97c4 100644
--- a/Mage.Sets/src/mage/cards/s/Somnomancer.java
+++ b/Mage.Sets/src/mage/cards/s/Somnomancer.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Somnomancer extends CardImpl {
+public final class Somnomancer extends CardImpl {
public Somnomancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/s/Somnophore.java b/Mage.Sets/src/mage/cards/s/Somnophore.java
index 796fb7d69a2..1ffbe588cca 100644
--- a/Mage.Sets/src/mage/cards/s/Somnophore.java
+++ b/Mage.Sets/src/mage/cards/s/Somnophore.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Somnophore extends CardImpl {
+public final class Somnophore extends CardImpl {
public Somnophore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SongOfBlood.java b/Mage.Sets/src/mage/cards/s/SongOfBlood.java
index 308e0fe90db..5d5e906b069 100644
--- a/Mage.Sets/src/mage/cards/s/SongOfBlood.java
+++ b/Mage.Sets/src/mage/cards/s/SongOfBlood.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class SongOfBlood extends CardImpl {
+public final class SongOfBlood extends CardImpl {
public SongOfBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SongOfFreyalise.java b/Mage.Sets/src/mage/cards/s/SongOfFreyalise.java
index 92965b5001d..a543f70bb8a 100644
--- a/Mage.Sets/src/mage/cards/s/SongOfFreyalise.java
+++ b/Mage.Sets/src/mage/cards/s/SongOfFreyalise.java
@@ -49,7 +49,7 @@ import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURES;
*
* @author TheElk801
*/
-public class SongOfFreyalise extends CardImpl {
+public final class SongOfFreyalise extends CardImpl {
public SongOfFreyalise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SongOfSerenity.java b/Mage.Sets/src/mage/cards/s/SongOfSerenity.java
index a2da2f7b823..1116ba45333 100644
--- a/Mage.Sets/src/mage/cards/s/SongOfSerenity.java
+++ b/Mage.Sets/src/mage/cards/s/SongOfSerenity.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class SongOfSerenity extends CardImpl {
+public final class SongOfSerenity extends CardImpl {
public SongOfSerenity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SongOfTheDryads.java b/Mage.Sets/src/mage/cards/s/SongOfTheDryads.java
index 8f5bfb8d897..959f9ea2890 100644
--- a/Mage.Sets/src/mage/cards/s/SongOfTheDryads.java
+++ b/Mage.Sets/src/mage/cards/s/SongOfTheDryads.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class SongOfTheDryads extends CardImpl {
+public final class SongOfTheDryads extends CardImpl {
public SongOfTheDryads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SongsOfTheDamned.java b/Mage.Sets/src/mage/cards/s/SongsOfTheDamned.java
index c0f134028ca..4a390300df7 100644
--- a/Mage.Sets/src/mage/cards/s/SongsOfTheDamned.java
+++ b/Mage.Sets/src/mage/cards/s/SongsOfTheDamned.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author fireshoes
*/
-public class SongsOfTheDamned extends CardImpl {
+public final class SongsOfTheDamned extends CardImpl {
public SongsOfTheDamned(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Songstitcher.java b/Mage.Sets/src/mage/cards/s/Songstitcher.java
index 47e8f5f2a48..f76a9bcaad5 100644
--- a/Mage.Sets/src/mage/cards/s/Songstitcher.java
+++ b/Mage.Sets/src/mage/cards/s/Songstitcher.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Songstitcher extends CardImpl {
+public final class Songstitcher extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/SonicBurst.java b/Mage.Sets/src/mage/cards/s/SonicBurst.java
index 5b25b5e17e6..da224cb63d4 100644
--- a/Mage.Sets/src/mage/cards/s/SonicBurst.java
+++ b/Mage.Sets/src/mage/cards/s/SonicBurst.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author markedagain
*/
-public class SonicBurst extends CardImpl {
+public final class SonicBurst extends CardImpl {
public SonicBurst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SonicSeizure.java b/Mage.Sets/src/mage/cards/s/SonicSeizure.java
index 21725bfa71a..1b34babaa58 100644
--- a/Mage.Sets/src/mage/cards/s/SonicSeizure.java
+++ b/Mage.Sets/src/mage/cards/s/SonicSeizure.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class SonicSeizure extends CardImpl {
+public final class SonicSeizure extends CardImpl {
public SonicSeizure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SootImp.java b/Mage.Sets/src/mage/cards/s/SootImp.java
index 32b84855417..48620852081 100644
--- a/Mage.Sets/src/mage/cards/s/SootImp.java
+++ b/Mage.Sets/src/mage/cards/s/SootImp.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class SootImp extends CardImpl {
+public final class SootImp extends CardImpl {
static final private FilterSpell filter = new FilterSpell("a nonblack spell");
diff --git a/Mage.Sets/src/mage/cards/s/SootfeatherFlock.java b/Mage.Sets/src/mage/cards/s/SootfeatherFlock.java
index e595439e75e..666c3c2df5a 100644
--- a/Mage.Sets/src/mage/cards/s/SootfeatherFlock.java
+++ b/Mage.Sets/src/mage/cards/s/SootfeatherFlock.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SootfeatherFlock extends CardImpl {
+public final class SootfeatherFlock extends CardImpl {
public SootfeatherFlock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoothingBalm.java b/Mage.Sets/src/mage/cards/s/SoothingBalm.java
index 57fbd089453..b6bdbbaac77 100644
--- a/Mage.Sets/src/mage/cards/s/SoothingBalm.java
+++ b/Mage.Sets/src/mage/cards/s/SoothingBalm.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author Derpthemeus
*/
-public class SoothingBalm extends CardImpl {
+public final class SoothingBalm extends CardImpl {
public SoothingBalm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Soothsaying.java b/Mage.Sets/src/mage/cards/s/Soothsaying.java
index 1a95e76e55c..a73864c46a8 100644
--- a/Mage.Sets/src/mage/cards/s/Soothsaying.java
+++ b/Mage.Sets/src/mage/cards/s/Soothsaying.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class Soothsaying extends CardImpl {
+public final class Soothsaying extends CardImpl {
public Soothsaying(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SootstokeKindler.java b/Mage.Sets/src/mage/cards/s/SootstokeKindler.java
index 5beaf0a45ff..63ecf9c4470 100644
--- a/Mage.Sets/src/mage/cards/s/SootstokeKindler.java
+++ b/Mage.Sets/src/mage/cards/s/SootstokeKindler.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SootstokeKindler extends CardImpl {
+public final class SootstokeKindler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black or red creature");
diff --git a/Mage.Sets/src/mage/cards/s/Sootwalkers.java b/Mage.Sets/src/mage/cards/s/Sootwalkers.java
index 0636e06ed87..53a3c186176 100644
--- a/Mage.Sets/src/mage/cards/s/Sootwalkers.java
+++ b/Mage.Sets/src/mage/cards/s/Sootwalkers.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class Sootwalkers extends CardImpl {
+public final class Sootwalkers extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SophicCentaur.java b/Mage.Sets/src/mage/cards/s/SophicCentaur.java
index d464b65b368..8e622be495a 100644
--- a/Mage.Sets/src/mage/cards/s/SophicCentaur.java
+++ b/Mage.Sets/src/mage/cards/s/SophicCentaur.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SophicCentaur extends CardImpl {
+public final class SophicCentaur extends CardImpl {
public SophicCentaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SoramaroFirstToDream.java b/Mage.Sets/src/mage/cards/s/SoramaroFirstToDream.java
index 0389b27ff3c..7c99e95a1c6 100644
--- a/Mage.Sets/src/mage/cards/s/SoramaroFirstToDream.java
+++ b/Mage.Sets/src/mage/cards/s/SoramaroFirstToDream.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class SoramaroFirstToDream extends CardImpl {
+public final class SoramaroFirstToDream extends CardImpl {
public SoramaroFirstToDream(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SoratamiCloudChariot.java b/Mage.Sets/src/mage/cards/s/SoratamiCloudChariot.java
index 95880ce23ec..a5fae9be649 100644
--- a/Mage.Sets/src/mage/cards/s/SoratamiCloudChariot.java
+++ b/Mage.Sets/src/mage/cards/s/SoratamiCloudChariot.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class SoratamiCloudChariot extends CardImpl {
+public final class SoratamiCloudChariot extends CardImpl {
public SoratamiCloudChariot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/s/SoratamiCloudskater.java b/Mage.Sets/src/mage/cards/s/SoratamiCloudskater.java
index c4894778db5..c2350589299 100644
--- a/Mage.Sets/src/mage/cards/s/SoratamiCloudskater.java
+++ b/Mage.Sets/src/mage/cards/s/SoratamiCloudskater.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class SoratamiCloudskater extends CardImpl {
+public final class SoratamiCloudskater extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/s/SoratamiMindsweeper.java b/Mage.Sets/src/mage/cards/s/SoratamiMindsweeper.java
index 9b8d31b58cb..c7d93ceb73c 100644
--- a/Mage.Sets/src/mage/cards/s/SoratamiMindsweeper.java
+++ b/Mage.Sets/src/mage/cards/s/SoratamiMindsweeper.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class SoratamiMindsweeper extends CardImpl {
+public final class SoratamiMindsweeper extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/s/SoratamiMirrorGuard.java b/Mage.Sets/src/mage/cards/s/SoratamiMirrorGuard.java
index b604223a23c..bd5b00e9b7f 100644
--- a/Mage.Sets/src/mage/cards/s/SoratamiMirrorGuard.java
+++ b/Mage.Sets/src/mage/cards/s/SoratamiMirrorGuard.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class SoratamiMirrorGuard extends CardImpl {
+public final class SoratamiMirrorGuard extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/s/SoratamiMirrorMage.java b/Mage.Sets/src/mage/cards/s/SoratamiMirrorMage.java
index 556e25598d7..d35ddc25b3b 100644
--- a/Mage.Sets/src/mage/cards/s/SoratamiMirrorMage.java
+++ b/Mage.Sets/src/mage/cards/s/SoratamiMirrorMage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class SoratamiMirrorMage extends CardImpl {
+public final class SoratamiMirrorMage extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("lands");
diff --git a/Mage.Sets/src/mage/cards/s/SoratamiRainshaper.java b/Mage.Sets/src/mage/cards/s/SoratamiRainshaper.java
index 9f12cf235f4..36ea68e677e 100644
--- a/Mage.Sets/src/mage/cards/s/SoratamiRainshaper.java
+++ b/Mage.Sets/src/mage/cards/s/SoratamiRainshaper.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class SoratamiRainshaper extends CardImpl {
+public final class SoratamiRainshaper extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/s/SoratamiSavant.java b/Mage.Sets/src/mage/cards/s/SoratamiSavant.java
index ebcc16c0f59..7928053f7f4 100644
--- a/Mage.Sets/src/mage/cards/s/SoratamiSavant.java
+++ b/Mage.Sets/src/mage/cards/s/SoratamiSavant.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class SoratamiSavant extends CardImpl {
+public final class SoratamiSavant extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/s/SoratamiSeer.java b/Mage.Sets/src/mage/cards/s/SoratamiSeer.java
index bde7f95f59b..4f7a133686e 100644
--- a/Mage.Sets/src/mage/cards/s/SoratamiSeer.java
+++ b/Mage.Sets/src/mage/cards/s/SoratamiSeer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class SoratamiSeer extends CardImpl {
+public final class SoratamiSeer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("lands");
diff --git a/Mage.Sets/src/mage/cards/s/SorayaTheFalconer.java b/Mage.Sets/src/mage/cards/s/SorayaTheFalconer.java
index f869b8baa22..9bbe3b81c36 100644
--- a/Mage.Sets/src/mage/cards/s/SorayaTheFalconer.java
+++ b/Mage.Sets/src/mage/cards/s/SorayaTheFalconer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class SorayaTheFalconer extends CardImpl {
+public final class SorayaTheFalconer extends CardImpl {
public SorayaTheFalconer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SorcerersStrongbox.java b/Mage.Sets/src/mage/cards/s/SorcerersStrongbox.java
index ff6e9eadb96..2d52a9eaa5e 100644
--- a/Mage.Sets/src/mage/cards/s/SorcerersStrongbox.java
+++ b/Mage.Sets/src/mage/cards/s/SorcerersStrongbox.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SorcerersStrongbox extends CardImpl {
+public final class SorcerersStrongbox extends CardImpl {
public SorcerersStrongbox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SorcerersWand.java b/Mage.Sets/src/mage/cards/s/SorcerersWand.java
index 27088c0220d..e092e978d68 100644
--- a/Mage.Sets/src/mage/cards/s/SorcerersWand.java
+++ b/Mage.Sets/src/mage/cards/s/SorcerersWand.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author TheElk801
*/
-public class SorcerersWand extends CardImpl {
+public final class SorcerersWand extends CardImpl {
public SorcerersWand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SorceressQueen.java b/Mage.Sets/src/mage/cards/s/SorceressQueen.java
index 410e124cf51..2a02c969506 100644
--- a/Mage.Sets/src/mage/cards/s/SorceressQueen.java
+++ b/Mage.Sets/src/mage/cards/s/SorceressQueen.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class SorceressQueen extends CardImpl {
+public final class SorceressQueen extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature other than {this}");
diff --git a/Mage.Sets/src/mage/cards/s/SorcerousSight.java b/Mage.Sets/src/mage/cards/s/SorcerousSight.java
index d765dc084fe..1a3b6091d4e 100644
--- a/Mage.Sets/src/mage/cards/s/SorcerousSight.java
+++ b/Mage.Sets/src/mage/cards/s/SorcerousSight.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class SorcerousSight extends CardImpl {
+public final class SorcerousSight extends CardImpl {
public SorcerousSight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SorcerousSpyglass.java b/Mage.Sets/src/mage/cards/s/SorcerousSpyglass.java
index 3bee6340721..8c290a0191d 100644
--- a/Mage.Sets/src/mage/cards/s/SorcerousSpyglass.java
+++ b/Mage.Sets/src/mage/cards/s/SorcerousSpyglass.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class SorcerousSpyglass extends CardImpl {
+public final class SorcerousSpyglass extends CardImpl {
public SorcerousSpyglass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java b/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java
index 58143e6b3fd..8da933edcc5 100644
--- a/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java
+++ b/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
*
* @author fireshoes
*/
-public class SorinGrimNemesis extends CardImpl {
+public final class SorinGrimNemesis extends CardImpl {
public SorinGrimNemesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SorinLordOfInnistrad.java b/Mage.Sets/src/mage/cards/s/SorinLordOfInnistrad.java
index c54b02ed3d3..7f9e7f88ae7 100644
--- a/Mage.Sets/src/mage/cards/s/SorinLordOfInnistrad.java
+++ b/Mage.Sets/src/mage/cards/s/SorinLordOfInnistrad.java
@@ -58,7 +58,7 @@ import mage.target.TargetPermanent;
*
* @author BetaSteward
*/
-public class SorinLordOfInnistrad extends CardImpl {
+public final class SorinLordOfInnistrad extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or planeswalker");
diff --git a/Mage.Sets/src/mage/cards/s/SorinMarkov.java b/Mage.Sets/src/mage/cards/s/SorinMarkov.java
index d6adb50b89d..2eb332a4128 100644
--- a/Mage.Sets/src/mage/cards/s/SorinMarkov.java
+++ b/Mage.Sets/src/mage/cards/s/SorinMarkov.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author nantuko
*/
-public class SorinMarkov extends CardImpl {
+public final class SorinMarkov extends CardImpl {
public SorinMarkov(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SorinSolemnVisitor.java b/Mage.Sets/src/mage/cards/s/SorinSolemnVisitor.java
index c22ebe14f90..7684c635c0e 100644
--- a/Mage.Sets/src/mage/cards/s/SorinSolemnVisitor.java
+++ b/Mage.Sets/src/mage/cards/s/SorinSolemnVisitor.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.SorinSolemnVisitorVampireToken;
*
* @author LevelX2
*/
-public class SorinSolemnVisitor extends CardImpl {
+public final class SorinSolemnVisitor extends CardImpl {
public SorinSolemnVisitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SorinsThirst.java b/Mage.Sets/src/mage/cards/s/SorinsThirst.java
index 9809049bde4..81598737cec 100644
--- a/Mage.Sets/src/mage/cards/s/SorinsThirst.java
+++ b/Mage.Sets/src/mage/cards/s/SorinsThirst.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SorinsThirst extends CardImpl {
+public final class SorinsThirst extends CardImpl {
public SorinsThirst (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SorinsVengeance.java b/Mage.Sets/src/mage/cards/s/SorinsVengeance.java
index 3a3e4194d73..6a56113c1f3 100644
--- a/Mage.Sets/src/mage/cards/s/SorinsVengeance.java
+++ b/Mage.Sets/src/mage/cards/s/SorinsVengeance.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class SorinsVengeance extends CardImpl {
+public final class SorinsVengeance extends CardImpl {
public SorinsVengeance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SorrowsPath.java b/Mage.Sets/src/mage/cards/s/SorrowsPath.java
index 4263b4efaa4..9969642693a 100644
--- a/Mage.Sets/src/mage/cards/s/SorrowsPath.java
+++ b/Mage.Sets/src/mage/cards/s/SorrowsPath.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanentSameController;
*
* @author L_J
*/
-public class SorrowsPath extends CardImpl {
+public final class SorrowsPath extends CardImpl {
private static final FilterOpponentsCreaturePermanent filter = new FilterOpponentsCreaturePermanent("blocking creatures an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SosukeSonOfSeshiro.java b/Mage.Sets/src/mage/cards/s/SosukeSonOfSeshiro.java
index 4c9d7d002df..6aaf90ca5f1 100644
--- a/Mage.Sets/src/mage/cards/s/SosukeSonOfSeshiro.java
+++ b/Mage.Sets/src/mage/cards/s/SosukeSonOfSeshiro.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author LevelX
*/
-public class SosukeSonOfSeshiro extends CardImpl {
+public final class SosukeSonOfSeshiro extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Snake creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SosukesSummons.java b/Mage.Sets/src/mage/cards/s/SosukesSummons.java
index bd6fec8fd44..02db6a04c93 100644
--- a/Mage.Sets/src/mage/cards/s/SosukesSummons.java
+++ b/Mage.Sets/src/mage/cards/s/SosukesSummons.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.SnakeToken;
*
* @author LevelX2
*/
-public class SosukesSummons extends CardImpl {
+public final class SosukesSummons extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken Snake");
diff --git a/Mage.Sets/src/mage/cards/s/SoulBarrier.java b/Mage.Sets/src/mage/cards/s/SoulBarrier.java
index 7e483b6aeb9..4341098382a 100644
--- a/Mage.Sets/src/mage/cards/s/SoulBarrier.java
+++ b/Mage.Sets/src/mage/cards/s/SoulBarrier.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author Galatolol
*/
-public class SoulBarrier extends CardImpl {
+public final class SoulBarrier extends CardImpl {
public SoulBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulBleed.java b/Mage.Sets/src/mage/cards/s/SoulBleed.java
index 149942a419b..07138b08a70 100644
--- a/Mage.Sets/src/mage/cards/s/SoulBleed.java
+++ b/Mage.Sets/src/mage/cards/s/SoulBleed.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SoulBleed extends CardImpl {
+public final class SoulBleed extends CardImpl {
public SoulBleed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulBurn.java b/Mage.Sets/src/mage/cards/s/SoulBurn.java
index 0e27a8a9a7a..0c19b6a1620 100644
--- a/Mage.Sets/src/mage/cards/s/SoulBurn.java
+++ b/Mage.Sets/src/mage/cards/s/SoulBurn.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author Johnny E. Hastings
*/
-public class SoulBurn extends CardImpl {
+public final class SoulBurn extends CardImpl {
static final FilterMana filterBlackOrRed = new FilterMana();
diff --git a/Mage.Sets/src/mage/cards/s/SoulChanneling.java b/Mage.Sets/src/mage/cards/s/SoulChanneling.java
index 436fdc43054..acd8da700a0 100644
--- a/Mage.Sets/src/mage/cards/s/SoulChanneling.java
+++ b/Mage.Sets/src/mage/cards/s/SoulChanneling.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class SoulChanneling extends CardImpl {
+public final class SoulChanneling extends CardImpl {
public SoulChanneling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulCharmer.java b/Mage.Sets/src/mage/cards/s/SoulCharmer.java
index 9602b4ffc6a..1cc9145df1a 100644
--- a/Mage.Sets/src/mage/cards/s/SoulCharmer.java
+++ b/Mage.Sets/src/mage/cards/s/SoulCharmer.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class SoulCharmer extends CardImpl {
+public final class SoulCharmer extends CardImpl {
public SoulCharmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulCollector.java b/Mage.Sets/src/mage/cards/s/SoulCollector.java
index 98ce9ea1744..7a7d101a722 100644
--- a/Mage.Sets/src/mage/cards/s/SoulCollector.java
+++ b/Mage.Sets/src/mage/cards/s/SoulCollector.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author markedagain
*/
-public class SoulCollector extends CardImpl {
+public final class SoulCollector extends CardImpl {
public SoulCollector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulConduit.java b/Mage.Sets/src/mage/cards/s/SoulConduit.java
index 8618bae5fad..b995d72ea1d 100644
--- a/Mage.Sets/src/mage/cards/s/SoulConduit.java
+++ b/Mage.Sets/src/mage/cards/s/SoulConduit.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class SoulConduit extends CardImpl {
+public final class SoulConduit extends CardImpl {
public SoulConduit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulEcho.java b/Mage.Sets/src/mage/cards/s/SoulEcho.java
index e7ea0c9092c..84b1f1bb112 100644
--- a/Mage.Sets/src/mage/cards/s/SoulEcho.java
+++ b/Mage.Sets/src/mage/cards/s/SoulEcho.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetOpponent;
*
* @author L_J
*/
-public class SoulEcho extends CardImpl {
+public final class SoulEcho extends CardImpl {
public SoulEcho(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{X}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulExchange.java b/Mage.Sets/src/mage/cards/s/SoulExchange.java
index 4b91d363ed5..ae926812dd2 100644
--- a/Mage.Sets/src/mage/cards/s/SoulExchange.java
+++ b/Mage.Sets/src/mage/cards/s/SoulExchange.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author MarcoMarin
*/
-public class SoulExchange extends CardImpl {
+public final class SoulExchange extends CardImpl {
public SoulExchange(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulFeast.java b/Mage.Sets/src/mage/cards/s/SoulFeast.java
index 018f3f504b1..2feee726499 100644
--- a/Mage.Sets/src/mage/cards/s/SoulFeast.java
+++ b/Mage.Sets/src/mage/cards/s/SoulFeast.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class SoulFeast extends CardImpl {
+public final class SoulFeast extends CardImpl {
public SoulFeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulFoundry.java b/Mage.Sets/src/mage/cards/s/SoulFoundry.java
index 34544acfdae..a49b128bf88 100644
--- a/Mage.Sets/src/mage/cards/s/SoulFoundry.java
+++ b/Mage.Sets/src/mage/cards/s/SoulFoundry.java
@@ -57,13 +57,13 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class SoulFoundry extends CardImpl {
+public final class SoulFoundry extends CardImpl {
public SoulFoundry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
// Imprint - When Soul Foundry enters the battlefield, you may exile a creature card from your hand.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SoulFoundryImprintEffect(), true, "Imprint - "));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SoulFoundryImprintEffect(), true, "Imprint — "));
// {X}, {T}: Create a token that's a copy of the exiled card. X is the converted mana cost of that card.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SoulFoundryEffect(), new ManaCostsImpl("{X}"));
diff --git a/Mage.Sets/src/mage/cards/s/SoulKiss.java b/Mage.Sets/src/mage/cards/s/SoulKiss.java
index e83641ea04f..a195e8aa20d 100644
--- a/Mage.Sets/src/mage/cards/s/SoulKiss.java
+++ b/Mage.Sets/src/mage/cards/s/SoulKiss.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SoulKiss extends CardImpl {
+public final class SoulKiss extends CardImpl {
public SoulKiss(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulLink.java b/Mage.Sets/src/mage/cards/s/SoulLink.java
index bb6ae6f21ee..0c763e9f98c 100644
--- a/Mage.Sets/src/mage/cards/s/SoulLink.java
+++ b/Mage.Sets/src/mage/cards/s/SoulLink.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SoulLink extends CardImpl {
+public final class SoulLink extends CardImpl {
public SoulLink(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulManipulation.java b/Mage.Sets/src/mage/cards/s/SoulManipulation.java
index 719b4e97180..fa8494d1631 100644
--- a/Mage.Sets/src/mage/cards/s/SoulManipulation.java
+++ b/Mage.Sets/src/mage/cards/s/SoulManipulation.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jeffwadsworth
*/
-public class SoulManipulation extends CardImpl {
+public final class SoulManipulation extends CardImpl {
public SoulManipulation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulNet.java b/Mage.Sets/src/mage/cards/s/SoulNet.java
index 04987e2936e..0ac4a4afa9c 100644
--- a/Mage.Sets/src/mage/cards/s/SoulNet.java
+++ b/Mage.Sets/src/mage/cards/s/SoulNet.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Quercitron
*/
-public class SoulNet extends CardImpl {
+public final class SoulNet extends CardImpl {
public SoulNet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulNova.java b/Mage.Sets/src/mage/cards/s/SoulNova.java
index 8b6c677e9a2..af3425c6818 100644
--- a/Mage.Sets/src/mage/cards/s/SoulNova.java
+++ b/Mage.Sets/src/mage/cards/s/SoulNova.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author TheElk801
*/
-public class SoulNova extends CardImpl {
+public final class SoulNova extends CardImpl {
public SoulNova(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulOfInnistrad.java b/Mage.Sets/src/mage/cards/s/SoulOfInnistrad.java
index 720b8918291..fc4024e1733 100644
--- a/Mage.Sets/src/mage/cards/s/SoulOfInnistrad.java
+++ b/Mage.Sets/src/mage/cards/s/SoulOfInnistrad.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class SoulOfInnistrad extends CardImpl {
+public final class SoulOfInnistrad extends CardImpl {
public SoulOfInnistrad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulOfMagma.java b/Mage.Sets/src/mage/cards/s/SoulOfMagma.java
index 233300269fa..710ba751451 100644
--- a/Mage.Sets/src/mage/cards/s/SoulOfMagma.java
+++ b/Mage.Sets/src/mage/cards/s/SoulOfMagma.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class SoulOfMagma extends CardImpl {
+public final class SoulOfMagma extends CardImpl {
public SoulOfMagma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulOfNewPhyrexia.java b/Mage.Sets/src/mage/cards/s/SoulOfNewPhyrexia.java
index e7f403d813a..fa26e7194c7 100644
--- a/Mage.Sets/src/mage/cards/s/SoulOfNewPhyrexia.java
+++ b/Mage.Sets/src/mage/cards/s/SoulOfNewPhyrexia.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SoulOfNewPhyrexia extends CardImpl {
+public final class SoulOfNewPhyrexia extends CardImpl {
public SoulOfNewPhyrexia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulOfRavnica.java b/Mage.Sets/src/mage/cards/s/SoulOfRavnica.java
index bca2eaa6788..a67e12159c6 100644
--- a/Mage.Sets/src/mage/cards/s/SoulOfRavnica.java
+++ b/Mage.Sets/src/mage/cards/s/SoulOfRavnica.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SoulOfRavnica extends CardImpl {
+public final class SoulOfRavnica extends CardImpl {
public SoulOfRavnica(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulOfShandalar.java b/Mage.Sets/src/mage/cards/s/SoulOfShandalar.java
index 8d5f50803ea..09d202ead05 100644
--- a/Mage.Sets/src/mage/cards/s/SoulOfShandalar.java
+++ b/Mage.Sets/src/mage/cards/s/SoulOfShandalar.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
/**
* @author noxx
*/
-public class SoulOfShandalar extends CardImpl {
+public final class SoulOfShandalar extends CardImpl {
public SoulOfShandalar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulOfTheHarvest.java b/Mage.Sets/src/mage/cards/s/SoulOfTheHarvest.java
index 4a50d96bd47..d1a51a81dd2 100644
--- a/Mage.Sets/src/mage/cards/s/SoulOfTheHarvest.java
+++ b/Mage.Sets/src/mage/cards/s/SoulOfTheHarvest.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
/**
* @author noxx
*/
-public class SoulOfTheHarvest extends CardImpl {
+public final class SoulOfTheHarvest extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another nontoken creature");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SoulOfTheRapids.java b/Mage.Sets/src/mage/cards/s/SoulOfTheRapids.java
index 9f10f1663fa..28067e8832f 100644
--- a/Mage.Sets/src/mage/cards/s/SoulOfTheRapids.java
+++ b/Mage.Sets/src/mage/cards/s/SoulOfTheRapids.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class SoulOfTheRapids extends CardImpl {
+public final class SoulOfTheRapids extends CardImpl {
public SoulOfTheRapids(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulOfTheros.java b/Mage.Sets/src/mage/cards/s/SoulOfTheros.java
index 0c8cc888c69..280c73f48aa 100644
--- a/Mage.Sets/src/mage/cards/s/SoulOfTheros.java
+++ b/Mage.Sets/src/mage/cards/s/SoulOfTheros.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SoulOfTheros extends CardImpl {
+public final class SoulOfTheros extends CardImpl {
public SoulOfTheros(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulOfZendikar.java b/Mage.Sets/src/mage/cards/s/SoulOfZendikar.java
index b5010c1109a..0bf04b6cf3f 100644
--- a/Mage.Sets/src/mage/cards/s/SoulOfZendikar.java
+++ b/Mage.Sets/src/mage/cards/s/SoulOfZendikar.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.BeastToken;
*
* @author LevelX2
*/
-public class SoulOfZendikar extends CardImpl {
+public final class SoulOfZendikar extends CardImpl {
public SoulOfZendikar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulParry.java b/Mage.Sets/src/mage/cards/s/SoulParry.java
index 6c3aa0dfccb..5e3e4a52afb 100644
--- a/Mage.Sets/src/mage/cards/s/SoulParry.java
+++ b/Mage.Sets/src/mage/cards/s/SoulParry.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class SoulParry extends CardImpl {
+public final class SoulParry extends CardImpl {
public SoulParry (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulRansom.java b/Mage.Sets/src/mage/cards/s/SoulRansom.java
index 73fa2162245..b190e94a6af 100644
--- a/Mage.Sets/src/mage/cards/s/SoulRansom.java
+++ b/Mage.Sets/src/mage/cards/s/SoulRansom.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SoulRansom extends CardImpl {
+public final class SoulRansom extends CardImpl {
public SoulRansom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulReap.java b/Mage.Sets/src/mage/cards/s/SoulReap.java
index 9fe45702ad9..228a0c133dd 100644
--- a/Mage.Sets/src/mage/cards/s/SoulReap.java
+++ b/Mage.Sets/src/mage/cards/s/SoulReap.java
@@ -56,7 +56,7 @@ import mage.watchers.Watcher;
*
* @author jeffwadsworth
*/
-public class SoulReap extends CardImpl {
+public final class SoulReap extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nongreen creature");
diff --git a/Mage.Sets/src/mage/cards/s/SoulRend.java b/Mage.Sets/src/mage/cards/s/SoulRend.java
index 8ec5b54a1bf..8e940d4010a 100644
--- a/Mage.Sets/src/mage/cards/s/SoulRend.java
+++ b/Mage.Sets/src/mage/cards/s/SoulRend.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SoulRend extends CardImpl {
+public final class SoulRend extends CardImpl {
public SoulRend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulSalvage.java b/Mage.Sets/src/mage/cards/s/SoulSalvage.java
index c0e1e9c2109..c80827aaf4b 100644
--- a/Mage.Sets/src/mage/cards/s/SoulSalvage.java
+++ b/Mage.Sets/src/mage/cards/s/SoulSalvage.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class SoulSalvage extends CardImpl {
+public final class SoulSalvage extends CardImpl {
public SoulSalvage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulScarMage.java b/Mage.Sets/src/mage/cards/s/SoulScarMage.java
index f3d499572fb..a446d7890dd 100644
--- a/Mage.Sets/src/mage/cards/s/SoulScarMage.java
+++ b/Mage.Sets/src/mage/cards/s/SoulScarMage.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author stravant
*/
-public class SoulScarMage extends CardImpl {
+public final class SoulScarMage extends CardImpl {
public SoulScarMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulScourge.java b/Mage.Sets/src/mage/cards/s/SoulScourge.java
index 6ae7be3226d..75ef407750e 100644
--- a/Mage.Sets/src/mage/cards/s/SoulScourge.java
+++ b/Mage.Sets/src/mage/cards/s/SoulScourge.java
@@ -52,7 +52,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class SoulScourge extends CardImpl {
+public final class SoulScourge extends CardImpl {
public SoulScourge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulSeizer.java b/Mage.Sets/src/mage/cards/s/SoulSeizer.java
index cd28d6dd213..6b1a332c4f9 100644
--- a/Mage.Sets/src/mage/cards/s/SoulSeizer.java
+++ b/Mage.Sets/src/mage/cards/s/SoulSeizer.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward
*/
-public class SoulSeizer extends CardImpl {
+public final class SoulSeizer extends CardImpl {
public SoulSeizer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulSeparator.java b/Mage.Sets/src/mage/cards/s/SoulSeparator.java
index 31ee19acfd0..4d8cb4c666a 100644
--- a/Mage.Sets/src/mage/cards/s/SoulSeparator.java
+++ b/Mage.Sets/src/mage/cards/s/SoulSeparator.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class SoulSeparator extends CardImpl {
+public final class SoulSeparator extends CardImpl {
public SoulSeparator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulShepherd.java b/Mage.Sets/src/mage/cards/s/SoulShepherd.java
index 978d3cf753b..f49e337795f 100644
--- a/Mage.Sets/src/mage/cards/s/SoulShepherd.java
+++ b/Mage.Sets/src/mage/cards/s/SoulShepherd.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LoneFox
*/
-public class SoulShepherd extends CardImpl {
+public final class SoulShepherd extends CardImpl {
public SoulShepherd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulShred.java b/Mage.Sets/src/mage/cards/s/SoulShred.java
index ed833fca26d..2540dc6e81e 100644
--- a/Mage.Sets/src/mage/cards/s/SoulShred.java
+++ b/Mage.Sets/src/mage/cards/s/SoulShred.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SoulShred extends CardImpl {
+public final class SoulShred extends CardImpl {
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/SoulSnare.java b/Mage.Sets/src/mage/cards/s/SoulSnare.java
index 984e93f80a8..62b020452e0 100644
--- a/Mage.Sets/src/mage/cards/s/SoulSnare.java
+++ b/Mage.Sets/src/mage/cards/s/SoulSnare.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*
*/
-public class SoulSnare extends CardImpl {
+public final class SoulSnare extends CardImpl {
public SoulSnare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulSnuffers.java b/Mage.Sets/src/mage/cards/s/SoulSnuffers.java
index e6292b333db..de811e97c5b 100644
--- a/Mage.Sets/src/mage/cards/s/SoulSnuffers.java
+++ b/Mage.Sets/src/mage/cards/s/SoulSnuffers.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Loki
*/
-public class SoulSnuffers extends CardImpl {
+public final class SoulSnuffers extends CardImpl {
public SoulSnuffers (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulSpike.java b/Mage.Sets/src/mage/cards/s/SoulSpike.java
index b42d060de7e..6812bbfae9f 100644
--- a/Mage.Sets/src/mage/cards/s/SoulSpike.java
+++ b/Mage.Sets/src/mage/cards/s/SoulSpike.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author dustinconrad
*/
-public class SoulSpike extends CardImpl {
+public final class SoulSpike extends CardImpl {
private static final FilterCard filter = new FilterCard("two black cards");
diff --git a/Mage.Sets/src/mage/cards/s/SoulStairExpedition.java b/Mage.Sets/src/mage/cards/s/SoulStairExpedition.java
index bc511aebdc5..960b50e9a71 100644
--- a/Mage.Sets/src/mage/cards/s/SoulStairExpedition.java
+++ b/Mage.Sets/src/mage/cards/s/SoulStairExpedition.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author North
*/
-public class SoulStairExpedition extends CardImpl {
+public final class SoulStairExpedition extends CardImpl {
public SoulStairExpedition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulSummons.java b/Mage.Sets/src/mage/cards/s/SoulSummons.java
index aaf14167044..61c212e069b 100644
--- a/Mage.Sets/src/mage/cards/s/SoulSummons.java
+++ b/Mage.Sets/src/mage/cards/s/SoulSummons.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class SoulSummons extends CardImpl {
+public final class SoulSummons extends CardImpl {
public SoulSummons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulSwallower.java b/Mage.Sets/src/mage/cards/s/SoulSwallower.java
index 32ed5cc608f..98d6efe8ba8 100644
--- a/Mage.Sets/src/mage/cards/s/SoulSwallower.java
+++ b/Mage.Sets/src/mage/cards/s/SoulSwallower.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class SoulSwallower extends CardImpl {
+public final class SoulSwallower extends CardImpl {
public SoulSwallower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulTithe.java b/Mage.Sets/src/mage/cards/s/SoulTithe.java
index c39854f19a0..9bf7f7dd310 100644
--- a/Mage.Sets/src/mage/cards/s/SoulTithe.java
+++ b/Mage.Sets/src/mage/cards/s/SoulTithe.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class SoulTithe extends CardImpl {
+public final class SoulTithe extends CardImpl {
static final String rule = "At the beginning of the upkeep of enchanted permanent's controller, that player sacrifices it unless he or she pays {X}, where X is its converted mana cost";
diff --git a/Mage.Sets/src/mage/cards/s/SoulWarden.java b/Mage.Sets/src/mage/cards/s/SoulWarden.java
index f118180c708..0a658b7597f 100644
--- a/Mage.Sets/src/mage/cards/s/SoulWarden.java
+++ b/Mage.Sets/src/mage/cards/s/SoulWarden.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SoulWarden extends CardImpl {
+public final class SoulWarden extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/s/SoulbladeCorrupter.java b/Mage.Sets/src/mage/cards/s/SoulbladeCorrupter.java
new file mode 100644
index 00000000000..52dc3fc4042
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/SoulbladeCorrupter.java
@@ -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.s;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.AttacksAllTriggeredAbility;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
+import mage.abilities.keyword.DeathtouchAbility;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SetTargetPointer;
+import mage.constants.SubType;
+import mage.counters.CounterType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.CounterPredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class SoulbladeCorrupter extends CardImpl {
+
+ public SoulbladeCorrupter(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Partner with Soulblade Renewer (When this creature enters the battlefield, target player may put Soulblade Renewer into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Soulblade Renewer"));
+
+ // Deathtouch
+ this.addAbility(DeathtouchAbility.getInstance());
+
+ // Whenever a creature with a +1/+1 counter on it attacks one of your opponents, that creature gains deathtouch until end of turn.
+ this.addAbility(new SoulbladeCorrupterTriggeredAbility());
+ }
+
+ public SoulbladeCorrupter(final SoulbladeCorrupter card) {
+ super(card);
+ }
+
+ @Override
+ public SoulbladeCorrupter copy() {
+ return new SoulbladeCorrupter(this);
+ }
+}
+
+class SoulbladeCorrupterTriggeredAbility extends AttacksAllTriggeredAbility {
+
+ private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature with a +1/+1 counter on it");
+
+ static {
+ filter2.add(new CounterPredicate(CounterType.P1P1));
+ }
+
+ SoulbladeCorrupterTriggeredAbility() {
+ super(new GainAbilityTargetEffect(
+ DeathtouchAbility.getInstance(),
+ Duration.EndOfTurn
+ ).setText("that creature gains deathtouch until end of turn"), false, filter2, SetTargetPointer.PERMANENT, false);
+ }
+
+ SoulbladeCorrupterTriggeredAbility(final SoulbladeCorrupterTriggeredAbility effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ if (super.checkTrigger(event, game)) {
+ Permanent permanent = game.getPermanent(event.getSourceId());
+ if (permanent != null) {
+ Player player = game.getPlayer(permanent.getControllerId());
+ if (player != null && player.hasOpponent(getControllerId(), game)) {
+ getEffects().setTargetPointer(new FixedTarget(permanent, game));
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever a creature with a +1/+1 counter on it attacks one of your opponents, that creature gains deathtouch until end of turn.";
+ }
+
+ @Override
+ public SoulbladeCorrupterTriggeredAbility copy() {
+ return new SoulbladeCorrupterTriggeredAbility(this);
+ }
+
+}
diff --git a/Mage.Sets/src/mage/cards/s/SoulbladeDjinn.java b/Mage.Sets/src/mage/cards/s/SoulbladeDjinn.java
index b85ae749cdc..dc0f8143b2d 100644
--- a/Mage.Sets/src/mage/cards/s/SoulbladeDjinn.java
+++ b/Mage.Sets/src/mage/cards/s/SoulbladeDjinn.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class SoulbladeDjinn extends CardImpl {
+public final class SoulbladeDjinn extends CardImpl {
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/s/SoulbladeRenewer.java b/Mage.Sets/src/mage/cards/s/SoulbladeRenewer.java
new file mode 100644
index 00000000000..8ddd5103add
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/SoulbladeRenewer.java
@@ -0,0 +1,68 @@
+/*
+ * 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.keyword.PartnerWithAbility;
+import mage.abilities.keyword.SupportAbility;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class SoulbladeRenewer extends CardImpl {
+
+ public SoulbladeRenewer(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
+
+ this.subtype.add(SubType.ELF);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Partner with Soulblade Corrupter (When this creature enters the battlefield, target player may put Soulblade Corrupter into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Soulblade Corrupter"));
+
+ // When Soulblade Renewer enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two target creatures.)
+ this.addAbility(new SupportAbility(this, 2));
+ }
+
+ public SoulbladeRenewer(final SoulbladeRenewer card) {
+ super(card);
+ }
+
+ @Override
+ public SoulbladeRenewer copy() {
+ return new SoulbladeRenewer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/Soulblast.java b/Mage.Sets/src/mage/cards/s/Soulblast.java
index d2709169cb4..5a902cbc9ec 100644
--- a/Mage.Sets/src/mage/cards/s/Soulblast.java
+++ b/Mage.Sets/src/mage/cards/s/Soulblast.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class Soulblast extends CardImpl {
+public final class Soulblast extends CardImpl {
public Soulblast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulboundGuardians.java b/Mage.Sets/src/mage/cards/s/SoulboundGuardians.java
index 09381064d2c..b6ea5b31ce0 100644
--- a/Mage.Sets/src/mage/cards/s/SoulboundGuardians.java
+++ b/Mage.Sets/src/mage/cards/s/SoulboundGuardians.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SoulboundGuardians extends CardImpl {
+public final class SoulboundGuardians extends CardImpl {
public SoulboundGuardians (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulbrightFlamekin.java b/Mage.Sets/src/mage/cards/s/SoulbrightFlamekin.java
index 7b02d3bf430..cf9a3303d77 100644
--- a/Mage.Sets/src/mage/cards/s/SoulbrightFlamekin.java
+++ b/Mage.Sets/src/mage/cards/s/SoulbrightFlamekin.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SoulbrightFlamekin extends CardImpl {
+public final class SoulbrightFlamekin extends CardImpl {
public SoulbrightFlamekin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulcageFiend.java b/Mage.Sets/src/mage/cards/s/SoulcageFiend.java
index d9e791336c0..6aa5ad2a3f1 100644
--- a/Mage.Sets/src/mage/cards/s/SoulcageFiend.java
+++ b/Mage.Sets/src/mage/cards/s/SoulcageFiend.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author noxx
*/
-public class SoulcageFiend extends CardImpl {
+public final class SoulcageFiend extends CardImpl {
public SoulcageFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Soulcatcher.java b/Mage.Sets/src/mage/cards/s/Soulcatcher.java
index d3dbd7e09d9..8e1cf6d4749 100644
--- a/Mage.Sets/src/mage/cards/s/Soulcatcher.java
+++ b/Mage.Sets/src/mage/cards/s/Soulcatcher.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author cbt33
*/
-public class Soulcatcher extends CardImpl {
+public final class Soulcatcher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/SoulcatchersAerie.java b/Mage.Sets/src/mage/cards/s/SoulcatchersAerie.java
index 23866ca7ecb..f1511a14204 100644
--- a/Mage.Sets/src/mage/cards/s/SoulcatchersAerie.java
+++ b/Mage.Sets/src/mage/cards/s/SoulcatchersAerie.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class SoulcatchersAerie extends CardImpl {
+public final class SoulcatchersAerie extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Bird");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Bird creatures");
diff --git a/Mage.Sets/src/mage/cards/s/Souldrinker.java b/Mage.Sets/src/mage/cards/s/Souldrinker.java
index ca77995b0be..53232d49a99 100644
--- a/Mage.Sets/src/mage/cards/s/Souldrinker.java
+++ b/Mage.Sets/src/mage/cards/s/Souldrinker.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class Souldrinker extends CardImpl {
+public final class Souldrinker extends CardImpl {
public Souldrinker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulfireGrandMaster.java b/Mage.Sets/src/mage/cards/s/SoulfireGrandMaster.java
index 8514f9692d1..2e1a96722fd 100644
--- a/Mage.Sets/src/mage/cards/s/SoulfireGrandMaster.java
+++ b/Mage.Sets/src/mage/cards/s/SoulfireGrandMaster.java
@@ -65,7 +65,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SoulfireGrandMaster extends CardImpl {
+public final class SoulfireGrandMaster extends CardImpl {
private static final FilterObject filter = new FilterObject("instant and sorcery spells you control");
diff --git a/Mage.Sets/src/mage/cards/s/Soulflayer.java b/Mage.Sets/src/mage/cards/s/Soulflayer.java
index 220e340333d..b67f070485a 100644
--- a/Mage.Sets/src/mage/cards/s/Soulflayer.java
+++ b/Mage.Sets/src/mage/cards/s/Soulflayer.java
@@ -67,7 +67,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class Soulflayer extends CardImpl {
+public final class Soulflayer extends CardImpl {
public Soulflayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoullessOne.java b/Mage.Sets/src/mage/cards/s/SoullessOne.java
index 7f494157046..789d4c3e723 100644
--- a/Mage.Sets/src/mage/cards/s/SoullessOne.java
+++ b/Mage.Sets/src/mage/cards/s/SoullessOne.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class SoullessOne extends CardImpl {
+public final class SoullessOne extends CardImpl {
public SoullessOne(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoullessRevival.java b/Mage.Sets/src/mage/cards/s/SoullessRevival.java
index e3608cade4e..bd1b51cc17a 100644
--- a/Mage.Sets/src/mage/cards/s/SoullessRevival.java
+++ b/Mage.Sets/src/mage/cards/s/SoullessRevival.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class SoullessRevival extends CardImpl {
+public final class SoullessRevival extends CardImpl {
public SoullessRevival(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Soulmender.java b/Mage.Sets/src/mage/cards/s/Soulmender.java
index de8b78d9d3c..b02522369a8 100644
--- a/Mage.Sets/src/mage/cards/s/Soulmender.java
+++ b/Mage.Sets/src/mage/cards/s/Soulmender.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class Soulmender extends CardImpl {
+public final class Soulmender extends CardImpl {
public Soulmender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Soulquake.java b/Mage.Sets/src/mage/cards/s/Soulquake.java
index bbb74b37bb3..201fc03568d 100644
--- a/Mage.Sets/src/mage/cards/s/Soulquake.java
+++ b/Mage.Sets/src/mage/cards/s/Soulquake.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class Soulquake extends CardImpl {
+public final class Soulquake extends CardImpl {
public Soulquake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulsAttendant.java b/Mage.Sets/src/mage/cards/s/SoulsAttendant.java
index 893bbd19bc7..df185861606 100644
--- a/Mage.Sets/src/mage/cards/s/SoulsAttendant.java
+++ b/Mage.Sets/src/mage/cards/s/SoulsAttendant.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author North
*/
-public class SoulsAttendant extends CardImpl {
+public final class SoulsAttendant extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/s/SoulsFire.java b/Mage.Sets/src/mage/cards/s/SoulsFire.java
index 4208809bd57..019b7609f62 100644
--- a/Mage.Sets/src/mage/cards/s/SoulsFire.java
+++ b/Mage.Sets/src/mage/cards/s/SoulsFire.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class SoulsFire extends CardImpl {
+public final class SoulsFire extends CardImpl {
public SoulsFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulsGrace.java b/Mage.Sets/src/mage/cards/s/SoulsGrace.java
index 10240dedac9..4b27876de30 100644
--- a/Mage.Sets/src/mage/cards/s/SoulsGrace.java
+++ b/Mage.Sets/src/mage/cards/s/SoulsGrace.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SoulsGrace extends CardImpl {
+public final class SoulsGrace extends CardImpl {
public SoulsGrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulsMajesty.java b/Mage.Sets/src/mage/cards/s/SoulsMajesty.java
index 193683f9d55..7c8dce4d75b 100644
--- a/Mage.Sets/src/mage/cards/s/SoulsMajesty.java
+++ b/Mage.Sets/src/mage/cards/s/SoulsMajesty.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class SoulsMajesty extends CardImpl {
+public final class SoulsMajesty extends CardImpl {
public SoulsMajesty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulsMight.java b/Mage.Sets/src/mage/cards/s/SoulsMight.java
index 9544f08c1cd..030c80e55d5 100644
--- a/Mage.Sets/src/mage/cards/s/SoulsMight.java
+++ b/Mage.Sets/src/mage/cards/s/SoulsMight.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SoulsMight extends CardImpl {
+public final class SoulsMight extends CardImpl {
public SoulsMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulsOfTheFaultless.java b/Mage.Sets/src/mage/cards/s/SoulsOfTheFaultless.java
index a566665467e..0f30398f8e1 100644
--- a/Mage.Sets/src/mage/cards/s/SoulsOfTheFaultless.java
+++ b/Mage.Sets/src/mage/cards/s/SoulsOfTheFaultless.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author North
*/
-public class SoulsOfTheFaultless extends CardImpl {
+public final class SoulsOfTheFaultless extends CardImpl {
public SoulsOfTheFaultless(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Soulscour.java b/Mage.Sets/src/mage/cards/s/Soulscour.java
index c87accc2d99..8241e1c9d51 100644
--- a/Mage.Sets/src/mage/cards/s/Soulscour.java
+++ b/Mage.Sets/src/mage/cards/s/Soulscour.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Loki
*/
-public class Soulscour extends CardImpl {
+public final class Soulscour extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nonartifact permanents");
diff --git a/Mage.Sets/src/mage/cards/s/Soulstinger.java b/Mage.Sets/src/mage/cards/s/Soulstinger.java
index 0dce771c33f..1f92e8c2858 100644
--- a/Mage.Sets/src/mage/cards/s/Soulstinger.java
+++ b/Mage.Sets/src/mage/cards/s/Soulstinger.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author stravant
*/
-public class Soulstinger extends CardImpl {
+public final class Soulstinger extends CardImpl {
public Soulstinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulsurgeElemental.java b/Mage.Sets/src/mage/cards/s/SoulsurgeElemental.java
index 1304da5c959..f9f0556c8e0 100644
--- a/Mage.Sets/src/mage/cards/s/SoulsurgeElemental.java
+++ b/Mage.Sets/src/mage/cards/s/SoulsurgeElemental.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Loki
*/
-public class SoulsurgeElemental extends CardImpl {
+public final class SoulsurgeElemental extends CardImpl {
public SoulsurgeElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulswornJury.java b/Mage.Sets/src/mage/cards/s/SoulswornJury.java
index 927a0b4d89c..cfba1910e8c 100644
--- a/Mage.Sets/src/mage/cards/s/SoulswornJury.java
+++ b/Mage.Sets/src/mage/cards/s/SoulswornJury.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author Wehk
*/
-public class SoulswornJury extends CardImpl {
+public final class SoulswornJury extends CardImpl {
public SoulswornJury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SoulswornSpirit.java b/Mage.Sets/src/mage/cards/s/SoulswornSpirit.java
index 84a3586f1eb..4f045f38dab 100644
--- a/Mage.Sets/src/mage/cards/s/SoulswornSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/SoulswornSpirit.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SoulswornSpirit extends CardImpl {
+public final class SoulswornSpirit extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SoultetherGolem.java b/Mage.Sets/src/mage/cards/s/SoultetherGolem.java
index 0b2c666d78a..7c45db7c5bb 100644
--- a/Mage.Sets/src/mage/cards/s/SoultetherGolem.java
+++ b/Mage.Sets/src/mage/cards/s/SoultetherGolem.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class SoultetherGolem extends CardImpl {
+public final class SoultetherGolem extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/s/SoundTheCall.java b/Mage.Sets/src/mage/cards/s/SoundTheCall.java
index 27a17e9f1e7..7cc543ba0ac 100644
--- a/Mage.Sets/src/mage/cards/s/SoundTheCall.java
+++ b/Mage.Sets/src/mage/cards/s/SoundTheCall.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.SoundTheCallToken;
*
* @author TheElk801
*/
-public class SoundTheCall extends CardImpl {
+public final class SoundTheCall extends CardImpl {
public SoundTheCall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SouthernElephant.java b/Mage.Sets/src/mage/cards/s/SouthernElephant.java
index 1479f73d89a..d10809a21cd 100644
--- a/Mage.Sets/src/mage/cards/s/SouthernElephant.java
+++ b/Mage.Sets/src/mage/cards/s/SouthernElephant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SouthernElephant extends CardImpl {
+public final class SouthernElephant extends CardImpl {
public SouthernElephant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SouthernPaladin.java b/Mage.Sets/src/mage/cards/s/SouthernPaladin.java
index d23b6ced156..97c32cd394c 100644
--- a/Mage.Sets/src/mage/cards/s/SouthernPaladin.java
+++ b/Mage.Sets/src/mage/cards/s/SouthernPaladin.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
* @author LoneFox
*/
-public class SouthernPaladin extends CardImpl {
+public final class SouthernPaladin extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("red permanent");
diff --git a/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.java b/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.java
index 9680f25c030..0c583afa9ed 100644
--- a/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.java
+++ b/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class SovereignsOfLostAlara extends CardImpl {
+public final class SovereignsOfLostAlara extends CardImpl {
public SovereignsOfLostAlara(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SowerOfTemptation.java b/Mage.Sets/src/mage/cards/s/SowerOfTemptation.java
index b44bce48ba6..531fc844d19 100644
--- a/Mage.Sets/src/mage/cards/s/SowerOfTemptation.java
+++ b/Mage.Sets/src/mage/cards/s/SowerOfTemptation.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SowerOfTemptation extends CardImpl {
+public final class SowerOfTemptation extends CardImpl {
public SowerOfTemptation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SowingSalt.java b/Mage.Sets/src/mage/cards/s/SowingSalt.java
index a7852ff38db..b18bd984c10 100644
--- a/Mage.Sets/src/mage/cards/s/SowingSalt.java
+++ b/Mage.Sets/src/mage/cards/s/SowingSalt.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author LevelX2
*/
-public class SowingSalt extends CardImpl {
+public final class SowingSalt extends CardImpl {
public SowingSalt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpareFromEvil.java b/Mage.Sets/src/mage/cards/s/SpareFromEvil.java
index 127cf087ff5..0783f56cea2 100644
--- a/Mage.Sets/src/mage/cards/s/SpareFromEvil.java
+++ b/Mage.Sets/src/mage/cards/s/SpareFromEvil.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author nantuko
*/
-public class SpareFromEvil extends CardImpl {
+public final class SpareFromEvil extends CardImpl {
private static final FilterCreatureCard filterNonHuman = new FilterCreatureCard("non-Human creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SparkElemental.java b/Mage.Sets/src/mage/cards/s/SparkElemental.java
index a0fcf293639..f5e9323c727 100644
--- a/Mage.Sets/src/mage/cards/s/SparkElemental.java
+++ b/Mage.Sets/src/mage/cards/s/SparkElemental.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author North
*/
-public class SparkElemental extends CardImpl {
+public final class SparkElemental extends CardImpl {
public SparkElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SparkJolt.java b/Mage.Sets/src/mage/cards/s/SparkJolt.java
index e5fa551abeb..564276553e7 100644
--- a/Mage.Sets/src/mage/cards/s/SparkJolt.java
+++ b/Mage.Sets/src/mage/cards/s/SparkJolt.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class SparkJolt extends CardImpl {
+public final class SparkJolt extends CardImpl {
public SparkJolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SparkMage.java b/Mage.Sets/src/mage/cards/s/SparkMage.java
index 62330ae9e87..6619c21e1da 100644
--- a/Mage.Sets/src/mage/cards/s/SparkMage.java
+++ b/Mage.Sets/src/mage/cards/s/SparkMage.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33, Loki (Ashling the Extinguisher)
*/
-public class SparkMage extends CardImpl {
+public final class SparkMage extends CardImpl {
public SparkMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SparkOfCreativity.java b/Mage.Sets/src/mage/cards/s/SparkOfCreativity.java
index 1db8aab6dbc..b91b3f12d19 100644
--- a/Mage.Sets/src/mage/cards/s/SparkOfCreativity.java
+++ b/Mage.Sets/src/mage/cards/s/SparkOfCreativity.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SparkOfCreativity extends CardImpl {
+public final class SparkOfCreativity extends CardImpl {
public SparkOfCreativity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SparkSpray.java b/Mage.Sets/src/mage/cards/s/SparkSpray.java
index 1413487f9a7..47934c534f7 100644
--- a/Mage.Sets/src/mage/cards/s/SparkSpray.java
+++ b/Mage.Sets/src/mage/cards/s/SparkSpray.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class SparkSpray extends CardImpl {
+public final class SparkSpray extends CardImpl {
public SparkSpray(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SparkTrooper.java b/Mage.Sets/src/mage/cards/s/SparkTrooper.java
index 4a581e15a81..9e28795aab7 100644
--- a/Mage.Sets/src/mage/cards/s/SparkTrooper.java
+++ b/Mage.Sets/src/mage/cards/s/SparkTrooper.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class SparkTrooper extends CardImpl {
+public final class SparkTrooper extends CardImpl {
public SparkTrooper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Sparkcaster.java b/Mage.Sets/src/mage/cards/s/Sparkcaster.java
index a3fccb0ccc0..1cba1a7f69d 100644
--- a/Mage.Sets/src/mage/cards/s/Sparkcaster.java
+++ b/Mage.Sets/src/mage/cards/s/Sparkcaster.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
* @author LoneFox
*
*/
-public class Sparkcaster extends CardImpl {
+public final class Sparkcaster extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("red or green creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SparkmageApprentice.java b/Mage.Sets/src/mage/cards/s/SparkmageApprentice.java
index 6f932057d29..469e68e8acc 100644
--- a/Mage.Sets/src/mage/cards/s/SparkmageApprentice.java
+++ b/Mage.Sets/src/mage/cards/s/SparkmageApprentice.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class SparkmageApprentice extends CardImpl {
+public final class SparkmageApprentice extends CardImpl {
public SparkmageApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SparkmagesGambit.java b/Mage.Sets/src/mage/cards/s/SparkmagesGambit.java
index b06492b71ef..35066a54128 100644
--- a/Mage.Sets/src/mage/cards/s/SparkmagesGambit.java
+++ b/Mage.Sets/src/mage/cards/s/SparkmagesGambit.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SparkmagesGambit extends CardImpl {
+public final class SparkmagesGambit extends CardImpl {
public SparkmagesGambit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Sparksmith.java b/Mage.Sets/src/mage/cards/s/Sparksmith.java
index d7ea19eac72..36753aa720d 100644
--- a/Mage.Sets/src/mage/cards/s/Sparksmith.java
+++ b/Mage.Sets/src/mage/cards/s/Sparksmith.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Sparksmith extends CardImpl {
+public final class Sparksmith extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Goblins on the battlefield");
static {
diff --git a/Mage.Sets/src/mage/cards/s/Sparkspitter.java b/Mage.Sets/src/mage/cards/s/Sparkspitter.java
index ea0d617d371..de59c1ca2dd 100644
--- a/Mage.Sets/src/mage/cards/s/Sparkspitter.java
+++ b/Mage.Sets/src/mage/cards/s/Sparkspitter.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.SparkElementalToken;
*
* @author LoneFox
*/
-public class Sparkspitter extends CardImpl {
+public final class Sparkspitter extends CardImpl {
public Sparkspitter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SparringCollar.java b/Mage.Sets/src/mage/cards/s/SparringCollar.java
index ace54ba6699..e0fd8270fa4 100644
--- a/Mage.Sets/src/mage/cards/s/SparringCollar.java
+++ b/Mage.Sets/src/mage/cards/s/SparringCollar.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class SparringCollar extends CardImpl {
+public final class SparringCollar extends CardImpl {
public SparringCollar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SparringConstruct.java b/Mage.Sets/src/mage/cards/s/SparringConstruct.java
index 897965ac3c2..bf4afc9a951 100644
--- a/Mage.Sets/src/mage/cards/s/SparringConstruct.java
+++ b/Mage.Sets/src/mage/cards/s/SparringConstruct.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class SparringConstruct extends CardImpl {
+public final class SparringConstruct extends CardImpl {
public SparringConstruct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SparringGolem.java b/Mage.Sets/src/mage/cards/s/SparringGolem.java
index 996a8fff66d..ea8fe673f4e 100644
--- a/Mage.Sets/src/mage/cards/s/SparringGolem.java
+++ b/Mage.Sets/src/mage/cards/s/SparringGolem.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class SparringGolem extends CardImpl {
+public final class SparringGolem extends CardImpl {
public SparringGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SparringMummy.java b/Mage.Sets/src/mage/cards/s/SparringMummy.java
index c6e1892e47e..6ba79738e7b 100644
--- a/Mage.Sets/src/mage/cards/s/SparringMummy.java
+++ b/Mage.Sets/src/mage/cards/s/SparringMummy.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SparringMummy extends CardImpl {
+public final class SparringMummy extends CardImpl {
public SparringMummy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpatialContortion.java b/Mage.Sets/src/mage/cards/s/SpatialContortion.java
index d04163a2e96..f2b8870fae3 100644
--- a/Mage.Sets/src/mage/cards/s/SpatialContortion.java
+++ b/Mage.Sets/src/mage/cards/s/SpatialContortion.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SpatialContortion extends CardImpl {
+public final class SpatialContortion extends CardImpl {
public SpatialContortion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{C}");
diff --git a/Mage.Sets/src/mage/cards/s/SpawnOfRixMaadi.java b/Mage.Sets/src/mage/cards/s/SpawnOfRixMaadi.java
index 4b19f5a14cb..c43ca1928a1 100644
--- a/Mage.Sets/src/mage/cards/s/SpawnOfRixMaadi.java
+++ b/Mage.Sets/src/mage/cards/s/SpawnOfRixMaadi.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SpawnOfRixMaadi extends CardImpl {
+public final class SpawnOfRixMaadi extends CardImpl {
public SpawnOfRixMaadi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpawnOfThraxes.java b/Mage.Sets/src/mage/cards/s/SpawnOfThraxes.java
index 498a8c80966..a5fe77ad582 100644
--- a/Mage.Sets/src/mage/cards/s/SpawnOfThraxes.java
+++ b/Mage.Sets/src/mage/cards/s/SpawnOfThraxes.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class SpawnOfThraxes extends CardImpl {
+public final class SpawnOfThraxes extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Mountains you control");
diff --git a/Mage.Sets/src/mage/cards/s/SpawnbinderMage.java b/Mage.Sets/src/mage/cards/s/SpawnbinderMage.java
index 9c819a0e464..420a19532e0 100644
--- a/Mage.Sets/src/mage/cards/s/SpawnbinderMage.java
+++ b/Mage.Sets/src/mage/cards/s/SpawnbinderMage.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SpawnbinderMage extends CardImpl {
+public final class SpawnbinderMage extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control");
diff --git a/Mage.Sets/src/mage/cards/s/Spawnbroker.java b/Mage.Sets/src/mage/cards/s/Spawnbroker.java
index efae9a13efb..98e0f256e54 100644
--- a/Mage.Sets/src/mage/cards/s/Spawnbroker.java
+++ b/Mage.Sets/src/mage/cards/s/Spawnbroker.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth & L_J
*/
-public class Spawnbroker extends CardImpl {
+public final class Spawnbroker extends CardImpl {
private static final String rule = "you may exchange control of target creature you control and target creature with power less than or equal to that creature's power an opponent controls";
diff --git a/Mage.Sets/src/mage/cards/s/SpawningBed.java b/Mage.Sets/src/mage/cards/s/SpawningBed.java
index 40d12e53015..d4a07900b15 100644
--- a/Mage.Sets/src/mage/cards/s/SpawningBed.java
+++ b/Mage.Sets/src/mage/cards/s/SpawningBed.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author fireshoes
*/
-public class SpawningBed extends CardImpl {
+public final class SpawningBed extends CardImpl {
public SpawningBed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SpawningBreath.java b/Mage.Sets/src/mage/cards/s/SpawningBreath.java
index b18a58e5722..94c2a0766dc 100644
--- a/Mage.Sets/src/mage/cards/s/SpawningBreath.java
+++ b/Mage.Sets/src/mage/cards/s/SpawningBreath.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class SpawningBreath extends CardImpl {
+public final class SpawningBreath extends CardImpl {
public SpawningBreath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpawningGrounds.java b/Mage.Sets/src/mage/cards/s/SpawningGrounds.java
index d10bfea142d..c685c8d6163 100644
--- a/Mage.Sets/src/mage/cards/s/SpawningGrounds.java
+++ b/Mage.Sets/src/mage/cards/s/SpawningGrounds.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class SpawningGrounds extends CardImpl {
+public final class SpawningGrounds extends CardImpl {
public SpawningGrounds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpawningPit.java b/Mage.Sets/src/mage/cards/s/SpawningPit.java
index dea54b797ae..7d3ce0cab40 100644
--- a/Mage.Sets/src/mage/cards/s/SpawningPit.java
+++ b/Mage.Sets/src/mage/cards/s/SpawningPit.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class SpawningPit extends CardImpl {
+public final class SpawningPit extends CardImpl {
public SpawningPit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SpawningPool.java b/Mage.Sets/src/mage/cards/s/SpawningPool.java
index c67e7840cec..b724774168e 100644
--- a/Mage.Sets/src/mage/cards/s/SpawningPool.java
+++ b/Mage.Sets/src/mage/cards/s/SpawningPool.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SkeletonToken;
*
* @author Loki
*/
-public class SpawningPool extends CardImpl {
+public final class SpawningPool extends CardImpl {
public SpawningPool(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java b/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java
index a8b17d211ca..e9af6bf0393 100644
--- a/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java
+++ b/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.EldraziSpawnToken;
/**
* @author magenoxx_at_gmail.com
*/
-public class SpawnsireOfUlamog extends CardImpl {
+public final class SpawnsireOfUlamog extends CardImpl {
private static final String ruleText = "Cast any number of Eldrazi cards you own from outside the game without paying their mana costs";
diff --git a/Mage.Sets/src/mage/cards/s/Spawnwrithe.java b/Mage.Sets/src/mage/cards/s/Spawnwrithe.java
index bfedfdbbab5..9e2a57d7766 100644
--- a/Mage.Sets/src/mage/cards/s/Spawnwrithe.java
+++ b/Mage.Sets/src/mage/cards/s/Spawnwrithe.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Spawnwrithe extends CardImpl {
+public final class Spawnwrithe extends CardImpl {
public Spawnwrithe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpearOfHeliod.java b/Mage.Sets/src/mage/cards/s/SpearOfHeliod.java
index 29f2174fbd7..f4103c9eb24 100644
--- a/Mage.Sets/src/mage/cards/s/SpearOfHeliod.java
+++ b/Mage.Sets/src/mage/cards/s/SpearOfHeliod.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SpearOfHeliod extends CardImpl {
+public final class SpearOfHeliod extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that dealt damage to you this turn");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SpearbreakerBehemoth.java b/Mage.Sets/src/mage/cards/s/SpearbreakerBehemoth.java
index ba69703cbc6..661f7bced51 100644
--- a/Mage.Sets/src/mage/cards/s/SpearbreakerBehemoth.java
+++ b/Mage.Sets/src/mage/cards/s/SpearbreakerBehemoth.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SpearbreakerBehemoth extends CardImpl {
+public final class SpearbreakerBehemoth extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/SpearpointOread.java b/Mage.Sets/src/mage/cards/s/SpearpointOread.java
index b9414383aac..35cdfe3ca21 100644
--- a/Mage.Sets/src/mage/cards/s/SpearpointOread.java
+++ b/Mage.Sets/src/mage/cards/s/SpearpointOread.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SpearpointOread extends CardImpl {
+public final class SpearpointOread extends CardImpl {
public SpearpointOread(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpeciesGorger.java b/Mage.Sets/src/mage/cards/s/SpeciesGorger.java
index ddb1393f74b..cb68fda6f93 100644
--- a/Mage.Sets/src/mage/cards/s/SpeciesGorger.java
+++ b/Mage.Sets/src/mage/cards/s/SpeciesGorger.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class SpeciesGorger extends CardImpl {
+public final class SpeciesGorger extends CardImpl {
public SpeciesGorger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectersShroud.java b/Mage.Sets/src/mage/cards/s/SpectersShroud.java
index b69ec43e65d..14165f2cfad 100644
--- a/Mage.Sets/src/mage/cards/s/SpectersShroud.java
+++ b/Mage.Sets/src/mage/cards/s/SpectersShroud.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Pete Rossi
*/
-public class SpectersShroud extends CardImpl {
+public final class SpectersShroud extends CardImpl {
public SpectersShroud(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectersWail.java b/Mage.Sets/src/mage/cards/s/SpectersWail.java
index 9093518025b..56eb6bcfb36 100644
--- a/Mage.Sets/src/mage/cards/s/SpectersWail.java
+++ b/Mage.Sets/src/mage/cards/s/SpectersWail.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class SpectersWail extends CardImpl {
+public final class SpectersWail extends CardImpl {
public SpectersWail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectraWard.java b/Mage.Sets/src/mage/cards/s/SpectraWard.java
index baf1863fd29..6d619aade15 100644
--- a/Mage.Sets/src/mage/cards/s/SpectraWard.java
+++ b/Mage.Sets/src/mage/cards/s/SpectraWard.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SpectraWard extends CardImpl {
+public final class SpectraWard extends CardImpl {
private static final FilterCard filter = new FilterCard("all colors");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralBears.java b/Mage.Sets/src/mage/cards/s/SpectralBears.java
index 5de47d8287e..d4a8ac3a662 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralBears.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralBears.java
@@ -49,7 +49,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes
*/
-public class SpectralBears extends CardImpl {
+public final class SpectralBears extends CardImpl {
public SpectralBears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralCloak.java b/Mage.Sets/src/mage/cards/s/SpectralCloak.java
index 3a2d6238ae4..fb876172086 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralCloak.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralCloak.java
@@ -51,7 +51,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class SpectralCloak extends CardImpl {
+public final class SpectralCloak extends CardImpl {
public SpectralCloak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralFlight.java b/Mage.Sets/src/mage/cards/s/SpectralFlight.java
index 3dde7479246..20cd6efa8b1 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralFlight.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralFlight.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Alvin
*/
-public class SpectralFlight extends CardImpl {
+public final class SpectralFlight extends CardImpl {
public SpectralFlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralForce.java b/Mage.Sets/src/mage/cards/s/SpectralForce.java
index 089ed8e6e02..799a554c1e5 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralForce.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralForce.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes
*/
-public class SpectralForce extends CardImpl {
+public final class SpectralForce extends CardImpl {
public SpectralForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralGateguards.java b/Mage.Sets/src/mage/cards/s/SpectralGateguards.java
index f5051351f4c..d547fe2c958 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralGateguards.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralGateguards.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class SpectralGateguards extends CardImpl {
+public final class SpectralGateguards extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, both creatures have vigilance";
diff --git a/Mage.Sets/src/mage/cards/s/SpectralGrasp.java b/Mage.Sets/src/mage/cards/s/SpectralGrasp.java
index d9a7fc1f120..a01c9ef9383 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralGrasp.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralGrasp.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class SpectralGrasp extends CardImpl {
+public final class SpectralGrasp extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralGuardian.java b/Mage.Sets/src/mage/cards/s/SpectralGuardian.java
index eb71903315c..9716002559e 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralGuardian.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralGuardian.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author TheElk801
*/
-public class SpectralGuardian extends CardImpl {
+public final class SpectralGuardian extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SpectralLynx.java b/Mage.Sets/src/mage/cards/s/SpectralLynx.java
index 3b9685062e8..a0bb403e105 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralLynx.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralLynx.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class SpectralLynx extends CardImpl {
+public final class SpectralLynx extends CardImpl {
public SpectralLynx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralPrison.java b/Mage.Sets/src/mage/cards/s/SpectralPrison.java
index a8f57f4299f..247fc0c13c7 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralPrison.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralPrison.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author noxx
*/
-public class SpectralPrison extends CardImpl {
+public final class SpectralPrison extends CardImpl {
public SpectralPrison(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralProcession.java b/Mage.Sets/src/mage/cards/s/SpectralProcession.java
index c9a52fc8b9f..8dad83a3765 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralProcession.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralProcession.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author North
*/
-public class SpectralProcession extends CardImpl {
+public final class SpectralProcession extends CardImpl {
public SpectralProcession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2/W}{2/W}{2/W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralReserves.java b/Mage.Sets/src/mage/cards/s/SpectralReserves.java
index d1f09611171..29afc4cbd8a 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralReserves.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralReserves.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author LevelX2
*/
-public class SpectralReserves extends CardImpl {
+public final class SpectralReserves extends CardImpl {
public SpectralReserves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralRider.java b/Mage.Sets/src/mage/cards/s/SpectralRider.java
index 4668e2b9226..ac1f2d52474 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralRider.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralRider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SpectralRider extends CardImpl {
+public final class SpectralRider extends CardImpl {
public SpectralRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralSearchlight.java b/Mage.Sets/src/mage/cards/s/SpectralSearchlight.java
index 05878cda7a7..c503c0366e2 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralSearchlight.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralSearchlight.java
@@ -47,14 +47,14 @@ import mage.players.Player;
*
* @author Galatolol
*/
-public class SpectralSearchlight extends CardImpl {
+public final class SpectralSearchlight extends CardImpl {
public SpectralSearchlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
- // {T}: Choose a player. That player adds one mana of any color he or she chooses to their mana pool.
+ // {T}: Choose a player. That player adds one mana of any color he or she chooses.
ManaEffect effect = new SpectralSearchlightManaEffect("chosen player");
- effect.setText("That player adds one mana of any color he or she chooses to their mana pool");
+ effect.setText("That player adds one mana of any color he or she chooses");
Ability ability = new SimpleManaAbility(Zone.BATTLEFIELD, effect, new TapSourceCost());
// choosing player as first effect, before adding mana effect
ability.getEffects().add(0, new ChoosePlayerEffect(Outcome.PutManaInPool));
diff --git a/Mage.Sets/src/mage/cards/s/SpectralShepherd.java b/Mage.Sets/src/mage/cards/s/SpectralShepherd.java
index a90e49f00c5..8275bf10163 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralShepherd.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralShepherd.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class SpectralShepherd extends CardImpl {
+public final class SpectralShepherd extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Spirit");
diff --git a/Mage.Sets/src/mage/cards/s/SpectralSliver.java b/Mage.Sets/src/mage/cards/s/SpectralSliver.java
index 6ef405190b9..d7a93befd39 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralSliver.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author cbt33
*/
-public class SpectralSliver extends CardImpl {
+public final class SpectralSliver extends CardImpl {
public SpectralSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpeederTrooper.java b/Mage.Sets/src/mage/cards/s/SpeederTrooper.java
index 3f19b7da3b8..a53d8280fdb 100644
--- a/Mage.Sets/src/mage/cards/s/SpeederTrooper.java
+++ b/Mage.Sets/src/mage/cards/s/SpeederTrooper.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class SpeederTrooper extends CardImpl {
+public final class SpeederTrooper extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SpeedwayFanatic.java b/Mage.Sets/src/mage/cards/s/SpeedwayFanatic.java
index 2621519ebd4..ebfbe464db9 100644
--- a/Mage.Sets/src/mage/cards/s/SpeedwayFanatic.java
+++ b/Mage.Sets/src/mage/cards/s/SpeedwayFanatic.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class SpeedwayFanatic extends CardImpl {
+public final class SpeedwayFanatic extends CardImpl {
public SpeedwayFanatic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellBlast.java b/Mage.Sets/src/mage/cards/s/SpellBlast.java
index 0554cbcf187..87f7a5707ca 100644
--- a/Mage.Sets/src/mage/cards/s/SpellBlast.java
+++ b/Mage.Sets/src/mage/cards/s/SpellBlast.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class SpellBlast extends CardImpl {
+public final class SpellBlast extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell with converted mana cost X");
diff --git a/Mage.Sets/src/mage/cards/s/SpellBurst.java b/Mage.Sets/src/mage/cards/s/SpellBurst.java
index d9054ed1856..8b4e7beb25e 100644
--- a/Mage.Sets/src/mage/cards/s/SpellBurst.java
+++ b/Mage.Sets/src/mage/cards/s/SpellBurst.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
/**
* @author LevelX2
*/
-public class SpellBurst extends CardImpl {
+public final class SpellBurst extends CardImpl {
public SpellBurst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellContortion.java b/Mage.Sets/src/mage/cards/s/SpellContortion.java
index d7513c8b278..26a744d3f96 100644
--- a/Mage.Sets/src/mage/cards/s/SpellContortion.java
+++ b/Mage.Sets/src/mage/cards/s/SpellContortion.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class SpellContortion extends CardImpl {
+public final class SpellContortion extends CardImpl {
public SpellContortion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellCrumple.java b/Mage.Sets/src/mage/cards/s/SpellCrumple.java
index c08813f7f2a..d1bdfb46453 100644
--- a/Mage.Sets/src/mage/cards/s/SpellCrumple.java
+++ b/Mage.Sets/src/mage/cards/s/SpellCrumple.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class SpellCrumple extends CardImpl {
+public final class SpellCrumple extends CardImpl {
public SpellCrumple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellPierce.java b/Mage.Sets/src/mage/cards/s/SpellPierce.java
index 1f66bd72b38..ec3343bd18e 100644
--- a/Mage.Sets/src/mage/cards/s/SpellPierce.java
+++ b/Mage.Sets/src/mage/cards/s/SpellPierce.java
@@ -43,7 +43,7 @@ import mage.target.TargetSpell;
*
* @author maurer.it_at_gmail.com
*/
-public class SpellPierce extends CardImpl {
+public final class SpellPierce extends CardImpl {
private static final FilterSpell filter = new FilterSpell("noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/s/SpellQueller.java b/Mage.Sets/src/mage/cards/s/SpellQueller.java
index 667e48e2ac6..779127728f0 100644
--- a/Mage.Sets/src/mage/cards/s/SpellQueller.java
+++ b/Mage.Sets/src/mage/cards/s/SpellQueller.java
@@ -31,6 +31,7 @@ import java.util.Set;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.LeavesBattlefieldTriggeredAbility;
@@ -42,9 +43,9 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.ComparisonType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
import mage.game.ExileZone;
@@ -60,7 +61,7 @@ import org.apache.log4j.Logger;
*
* @author LevelX2
*/
-public class SpellQueller extends CardImpl {
+public final class SpellQueller extends CardImpl {
private final static FilterSpell filter = new FilterSpell("spell with converted mana cost 4 or less");
@@ -69,7 +70,7 @@ public class SpellQueller extends CardImpl {
}
public SpellQueller(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}");
this.subtype.add(SubType.SPIRIT);
this.power = new MageInt(2);
this.toughness = new MageInt(3);
@@ -160,13 +161,13 @@ class SpellQuellerLeavesEffect extends OneShotEffect {
if (exile != null) { // null is valid if source left battlefield before enters the battlefield effect resolved
Card card = null;
Set exiledCards = exile.getCards(game);
- if (exiledCards != null && !exiledCards.isEmpty()) {
- card = exiledCards.iterator().next();
+ if (exiledCards != null && !exiledCards.isEmpty()) {
+ card = exiledCards.iterator().next();
if (card != null) {
Player cardOwner = game.getPlayer(card.getOwnerId());
if (cardOwner != null) {
if (cardOwner.chooseUse(Outcome.PlayForFree, "Cast " + card.getLogName() + " without paying cost?", source, game)) {
- cardOwner.cast(card.getSpellAbility(), game, true);
+ cardOwner.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/s/SpellRupture.java b/Mage.Sets/src/mage/cards/s/SpellRupture.java
index fbfd9c33957..e1cd96bf1c6 100644
--- a/Mage.Sets/src/mage/cards/s/SpellRupture.java
+++ b/Mage.Sets/src/mage/cards/s/SpellRupture.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class SpellRupture extends CardImpl {
+public final class SpellRupture extends CardImpl {
public SpellRupture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellShrivel.java b/Mage.Sets/src/mage/cards/s/SpellShrivel.java
index 67d2cbc9478..f4164e6569e 100644
--- a/Mage.Sets/src/mage/cards/s/SpellShrivel.java
+++ b/Mage.Sets/src/mage/cards/s/SpellShrivel.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class SpellShrivel extends CardImpl {
+public final class SpellShrivel extends CardImpl {
public SpellShrivel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellSnare.java b/Mage.Sets/src/mage/cards/s/SpellSnare.java
index 65ed08c98d1..779fe6569fc 100644
--- a/Mage.Sets/src/mage/cards/s/SpellSnare.java
+++ b/Mage.Sets/src/mage/cards/s/SpellSnare.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class SpellSnare extends CardImpl {
+public final class SpellSnare extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell with converted mana cost 2");
diff --git a/Mage.Sets/src/mage/cards/s/SpellSnip.java b/Mage.Sets/src/mage/cards/s/SpellSnip.java
index e3147c9bc84..c7d3e6c8101 100644
--- a/Mage.Sets/src/mage/cards/s/SpellSnip.java
+++ b/Mage.Sets/src/mage/cards/s/SpellSnip.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class SpellSnip extends CardImpl {
+public final class SpellSnip extends CardImpl {
public SpellSnip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellSwindle.java b/Mage.Sets/src/mage/cards/s/SpellSwindle.java
index 9660810f1d7..479d9347a1f 100644
--- a/Mage.Sets/src/mage/cards/s/SpellSwindle.java
+++ b/Mage.Sets/src/mage/cards/s/SpellSwindle.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author TheElk801
*/
-public class SpellSwindle extends CardImpl {
+public final class SpellSwindle extends CardImpl {
public SpellSwindle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellSyphon.java b/Mage.Sets/src/mage/cards/s/SpellSyphon.java
index 0a1a984dd09..6fcfc697ddc 100644
--- a/Mage.Sets/src/mage/cards/s/SpellSyphon.java
+++ b/Mage.Sets/src/mage/cards/s/SpellSyphon.java
@@ -50,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class SpellSyphon extends CardImpl {
+public final class SpellSyphon extends CardImpl {
public SpellSyphon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellbaneCentaur.java b/Mage.Sets/src/mage/cards/s/SpellbaneCentaur.java
index d0c05a53c78..c79a3ef6cc1 100644
--- a/Mage.Sets/src/mage/cards/s/SpellbaneCentaur.java
+++ b/Mage.Sets/src/mage/cards/s/SpellbaneCentaur.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class SpellbaneCentaur extends CardImpl {
+public final class SpellbaneCentaur extends CardImpl {
private static final FilterObject filter = new FilterStackObject("blue spells or abilities from blue sources");
diff --git a/Mage.Sets/src/mage/cards/s/Spellbinder.java b/Mage.Sets/src/mage/cards/s/Spellbinder.java
index 085fbde2337..eaf3f27d67c 100644
--- a/Mage.Sets/src/mage/cards/s/Spellbinder.java
+++ b/Mage.Sets/src/mage/cards/s/Spellbinder.java
@@ -28,6 +28,7 @@
package mage.cards.s;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@@ -38,8 +39,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.mageobject.CardTypePredicate;
@@ -57,15 +58,15 @@ import org.apache.log4j.Logger;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class Spellbinder extends CardImpl {
+public final class Spellbinder extends CardImpl {
public Spellbinder(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
this.subtype.add(SubType.EQUIPMENT);
// Imprint - When Spellbinder enters the battlefield, you may exile an instant card from your hand.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SpellbinderImprintEffect(), true, "Imprint — "));
-
+
// Whenever equipped creature deals combat damage to a player, you may copy the exiled card. If you do, you may cast the copy without paying its mana cost.
this.addAbility(new SpellbinderTriggeredAbility());
@@ -197,7 +198,7 @@ class SpellbinderCopyEffect extends OneShotEffect {
game.getState().setZone(copiedCard.getId(), Zone.EXILED);
if (controller.chooseUse(outcome, "Cast the copied card without paying mana cost?", source, game)) {
if (copiedCard.getSpellAbility() != null) {
- controller.cast(copiedCard.getSpellAbility(), game, true);
+ controller.cast(copiedCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
} else {
Logger.getLogger(SpellbinderCopyEffect.class).error("Spellbinder: spell ability == null " + copiedCard.getName());
}
@@ -210,4 +211,4 @@ class SpellbinderCopyEffect extends OneShotEffect {
}
return false;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/s/Spellbook.java b/Mage.Sets/src/mage/cards/s/Spellbook.java
index 085c7cf9a6f..10ed6ebf05c 100644
--- a/Mage.Sets/src/mage/cards/s/Spellbook.java
+++ b/Mage.Sets/src/mage/cards/s/Spellbook.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author nantuko
*/
-public class Spellbook extends CardImpl {
+public final class Spellbook extends CardImpl {
public Spellbook(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellboundDragon.java b/Mage.Sets/src/mage/cards/s/SpellboundDragon.java
index 1c17f629f30..d766addc30c 100644
--- a/Mage.Sets/src/mage/cards/s/SpellboundDragon.java
+++ b/Mage.Sets/src/mage/cards/s/SpellboundDragon.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetDiscard;
*
* @author jeffwadsworth
*/
-public class SpellboundDragon extends CardImpl {
+public final class SpellboundDragon extends CardImpl {
public SpellboundDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellbreakerBehemoth.java b/Mage.Sets/src/mage/cards/s/SpellbreakerBehemoth.java
index 7550fcb847c..46e4d52f35b 100644
--- a/Mage.Sets/src/mage/cards/s/SpellbreakerBehemoth.java
+++ b/Mage.Sets/src/mage/cards/s/SpellbreakerBehemoth.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SpellbreakerBehemoth extends CardImpl {
+public final class SpellbreakerBehemoth extends CardImpl {
private static final FilterSpell filter = new FilterSpell("Creature spells you control with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/SpellgorgerBarbarian.java b/Mage.Sets/src/mage/cards/s/SpellgorgerBarbarian.java
index f007b49b705..3a5ba17feca 100644
--- a/Mage.Sets/src/mage/cards/s/SpellgorgerBarbarian.java
+++ b/Mage.Sets/src/mage/cards/s/SpellgorgerBarbarian.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SpellgorgerBarbarian extends CardImpl {
+public final class SpellgorgerBarbarian extends CardImpl {
public SpellgorgerBarbarian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellheartChimera.java b/Mage.Sets/src/mage/cards/s/SpellheartChimera.java
index 6571e75dea1..473ad9940d4 100644
--- a/Mage.Sets/src/mage/cards/s/SpellheartChimera.java
+++ b/Mage.Sets/src/mage/cards/s/SpellheartChimera.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterInstantOrSorceryCard;
*
* @author LevelX2
*/
-public class SpellheartChimera extends CardImpl {
+public final class SpellheartChimera extends CardImpl {
public SpellheartChimera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Spelljack.java b/Mage.Sets/src/mage/cards/s/Spelljack.java
index 5a253d1c783..116516eae21 100644
--- a/Mage.Sets/src/mage/cards/s/Spelljack.java
+++ b/Mage.Sets/src/mage/cards/s/Spelljack.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class Spelljack extends CardImpl {
+public final class Spelljack extends CardImpl {
public Spelljack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Spellseeker.java b/Mage.Sets/src/mage/cards/s/Spellseeker.java
new file mode 100644
index 00000000000..aea5831e351
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/Spellseeker.java
@@ -0,0 +1,78 @@
+/*
+ * 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.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.ComparisonType;
+import mage.constants.SubType;
+import mage.filter.common.FilterInstantOrSorceryCard;
+import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
+import mage.target.common.TargetCardInLibrary;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class Spellseeker extends CardImpl {
+
+ private static final FilterInstantOrSorceryCard filter = new FilterInstantOrSorceryCard("an instant or sorcery card with converted mana cost 2 or less");
+
+ static {
+ filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 3));
+ }
+
+ public Spellseeker(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.WIZARD);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // When Spellseeker enters the battlefield, you may search your library for an instant or sorcery card with converted mana cost 2 or less, reveal it, put it into your hand, then shuffle your library.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true),
+ true
+ ));
+ }
+
+ public Spellseeker(final Spellseeker card) {
+ super(card);
+ }
+
+ @Override
+ public Spellseeker copy() {
+ return new Spellseeker(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/Spellshift.java b/Mage.Sets/src/mage/cards/s/Spellshift.java
index bf93afa11cc..f524a4987ba 100644
--- a/Mage.Sets/src/mage/cards/s/Spellshift.java
+++ b/Mage.Sets/src/mage/cards/s/Spellshift.java
@@ -28,6 +28,7 @@
package mage.cards.s;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CounterTargetEffect;
@@ -49,7 +50,7 @@ import mage.target.TargetSpell;
*
* @author Styxo
*/
-public class Spellshift extends CardImpl {
+public final class Spellshift extends CardImpl {
public Spellshift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}");
@@ -103,7 +104,7 @@ class SpellshiftEffect extends OneShotEffect {
}
spellController.revealCards(source, cardsToReveal, game);
if (toCast != null && spellController.chooseUse(outcome, "Cast " + toCast.getLogName() + " without paying its mana cost?", source, game)) {
- spellController.cast(toCast.getSpellAbility(), game, true);
+ spellController.cast(toCast.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
spellController.shuffleLibrary(source, game);
return true;
diff --git a/Mage.Sets/src/mage/cards/s/Spellshock.java b/Mage.Sets/src/mage/cards/s/Spellshock.java
index 20f0f89fe63..b7434e06150 100644
--- a/Mage.Sets/src/mage/cards/s/Spellshock.java
+++ b/Mage.Sets/src/mage/cards/s/Spellshock.java
@@ -45,7 +45,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class Spellshock extends CardImpl {
+public final class Spellshock extends CardImpl {
public Spellshock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Spellskite.java b/Mage.Sets/src/mage/cards/s/Spellskite.java
index cd99fe9ed3b..5a18531c718 100644
--- a/Mage.Sets/src/mage/cards/s/Spellskite.java
+++ b/Mage.Sets/src/mage/cards/s/Spellskite.java
@@ -54,7 +54,7 @@ import mage.target.Targets;
*
* @author BetaSteward
*/
-public class Spellskite extends CardImpl {
+public final class Spellskite extends CardImpl {
public Spellskite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellstutterSprite.java b/Mage.Sets/src/mage/cards/s/SpellstutterSprite.java
index 651a91aece5..80713cdba3d 100644
--- a/Mage.Sets/src/mage/cards/s/SpellstutterSprite.java
+++ b/Mage.Sets/src/mage/cards/s/SpellstutterSprite.java
@@ -51,7 +51,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class SpellstutterSprite extends CardImpl {
+public final class SpellstutterSprite extends CardImpl {
static final FilterPermanent filter = new FilterPermanent("number of Faeries you control");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SpelltitheEnforcer.java b/Mage.Sets/src/mage/cards/s/SpelltitheEnforcer.java
index 84297ac8696..2e46058d6f7 100644
--- a/Mage.Sets/src/mage/cards/s/SpelltitheEnforcer.java
+++ b/Mage.Sets/src/mage/cards/s/SpelltitheEnforcer.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SpelltitheEnforcer extends CardImpl {
+public final class SpelltitheEnforcer extends CardImpl {
public SpelltitheEnforcer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Spelltwine.java b/Mage.Sets/src/mage/cards/s/Spelltwine.java
index bf0970a535f..273e33c612d 100644
--- a/Mage.Sets/src/mage/cards/s/Spelltwine.java
+++ b/Mage.Sets/src/mage/cards/s/Spelltwine.java
@@ -28,6 +28,7 @@
package mage.cards.s;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ExileSpellEffect;
@@ -49,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jeffwadsworth and magenoxx_at_gmail.com
*/
-public class Spelltwine extends CardImpl {
+public final class Spelltwine extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard");
private static final FilterCard filter2 = new FilterCard("instant or sorcery card from an opponent's graveyard");
@@ -65,7 +66,7 @@ public class Spelltwine extends CardImpl {
}
public Spelltwine(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}");
// Exile target instant or sorcery card from your graveyard and target instant or sorcery card from an opponent's graveyard. Copy those cards. Cast the copies if able without paying their mana costs. Exile Spelltwine.
this.getSpellAbility().addEffect(new SpelltwineEffect());
@@ -109,18 +110,19 @@ class SpelltwineEffect extends OneShotEffect {
controller.moveCards(cardTwo, Zone.EXILED, source, game);
}
boolean castCardOne = true;
+ MageObjectReference mor = new MageObjectReference(source.getSourceObject(game), game);
if (cardOne != null && controller.chooseUse(Outcome.Neutral, "Cast the copy of " + cardOne.getName() + " first?", source, game)) {
Card copyOne = game.copyCard(cardOne, source, controller.getId());
- controller.cast(copyOne.getSpellAbility(), game, true);
+ controller.cast(copyOne.getSpellAbility(), game, true, mor);
castCardOne = false;
}
if (cardTwo != null) {
Card copyTwo = game.copyCard(cardTwo, source, controller.getId());
- controller.cast(copyTwo.getSpellAbility(), game, true);
+ controller.cast(copyTwo.getSpellAbility(), game, true, mor);
}
if (cardOne != null && castCardOne) {
Card copyOne = game.copyCard(cardOne, source, controller.getId());
- controller.cast(copyOne.getSpellAbility(), game, true);
+ controller.cast(copyOne.getSpellAbility(), game, true, mor);
}
return true;
}
diff --git a/Mage.Sets/src/mage/cards/s/SpellweaverDuo.java b/Mage.Sets/src/mage/cards/s/SpellweaverDuo.java
new file mode 100644
index 00000000000..1519f1acdd8
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/SpellweaverDuo.java
@@ -0,0 +1,81 @@
+/*
+ * 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.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.ReturnToHandTargetEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.AssistAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.TappedPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class SpellweaverDuo extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
+
+ static {
+ filter.add(new TappedPredicate());
+ }
+
+ public SpellweaverDuo(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{U}");
+
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.WIZARD);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(4);
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // When Spellweaver Duo enters the battlefield, you may return target tapped creature to its owner's hand.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true);
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public SpellweaverDuo(final SpellweaverDuo card) {
+ super(card);
+ }
+
+ @Override
+ public SpellweaverDuo copy() {
+ return new SpellweaverDuo(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/SpellweaverEternal.java b/Mage.Sets/src/mage/cards/s/SpellweaverEternal.java
index 0e215ea98f3..75addf7f3b9 100644
--- a/Mage.Sets/src/mage/cards/s/SpellweaverEternal.java
+++ b/Mage.Sets/src/mage/cards/s/SpellweaverEternal.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class SpellweaverEternal extends CardImpl {
+public final class SpellweaverEternal extends CardImpl {
public SpellweaverEternal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpellweaverHelix.java b/Mage.Sets/src/mage/cards/s/SpellweaverHelix.java
index ce0feffb925..aac60ca38d5 100644
--- a/Mage.Sets/src/mage/cards/s/SpellweaverHelix.java
+++ b/Mage.Sets/src/mage/cards/s/SpellweaverHelix.java
@@ -28,6 +28,7 @@
package mage.cards.s;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@@ -54,21 +55,22 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class SpellweaverHelix extends CardImpl {
+public final class SpellweaverHelix extends CardImpl {
private static final FilterCard filter = new FilterCard("sorcery cards from a single graveyard");
+
static {
filter.add(new CardTypePredicate(CardType.SORCERY));
}
public SpellweaverHelix(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
// Imprint - When Spellweaver Helix enters the battlefield, you may exile two target sorcery cards from a single graveyard.
Ability ability = new EntersBattlefieldTriggeredAbility(new SpellweaverHelixImprintEffect(), true, "Imprint — ");
ability.addTarget(new TargetCardInASingleGraveyard(2, 2, filter));
this.addAbility(ability);
-
+
// Whenever a player casts a card, if it has the same name as one of the cards exiled with Spellweaver Helix, you may copy the other. If you do, you may cast the copy without paying its mana cost.
this.addAbility(new SpellweaverHelixTriggeredAbility());
}
@@ -84,21 +86,21 @@ public class SpellweaverHelix extends CardImpl {
}
class SpellweaverHelixImprintEffect extends OneShotEffect {
-
+
SpellweaverHelixImprintEffect() {
super(Outcome.Exile);
this.staticText = "you may exile two target sorcery cards from a single graveyard";
}
-
+
SpellweaverHelixImprintEffect(final SpellweaverHelixImprintEffect effect) {
super(effect);
}
-
+
@Override
public SpellweaverHelixImprintEffect copy() {
return new SpellweaverHelixImprintEffect(this);
}
-
+
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
@@ -120,20 +122,20 @@ class SpellweaverHelixImprintEffect extends OneShotEffect {
}
class SpellweaverHelixTriggeredAbility extends TriggeredAbilityImpl {
-
+
SpellweaverHelixTriggeredAbility() {
super(Zone.BATTLEFIELD, new SpellweaverHelixCastEffect(), false);
}
-
+
SpellweaverHelixTriggeredAbility(final SpellweaverHelixTriggeredAbility ability) {
super(ability);
}
-
+
@Override
public SpellweaverHelixTriggeredAbility copy() {
return new SpellweaverHelixTriggeredAbility(this);
}
-
+
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.SPELL_CAST;
@@ -169,7 +171,7 @@ class SpellweaverHelixTriggeredAbility extends TriggeredAbilityImpl {
}
return false;
}
-
+
@Override
public String getRule() {
return "Whenever a player casts a card, if it has the same name as one of the cards exiled with Spellweaver Helix, you may copy the other. If you do, you may cast the copy without paying its mana cost.";
@@ -177,28 +179,28 @@ class SpellweaverHelixTriggeredAbility extends TriggeredAbilityImpl {
}
class SpellweaverHelixCastEffect extends OneShotEffect {
-
+
private String spellName = "";
-
+
SpellweaverHelixCastEffect() {
super(Outcome.Benefit);
this.staticText = "you may copy the other. If you do, you may cast the copy without paying its mana cost";
}
-
+
SpellweaverHelixCastEffect(final SpellweaverHelixCastEffect effect) {
super(effect);
this.spellName = effect.spellName;
}
-
+
@Override
public SpellweaverHelixCastEffect copy() {
return new SpellweaverHelixCastEffect(this);
}
-
+
public void setSpellName(String spellName) {
this.spellName = spellName;
}
-
+
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
@@ -211,12 +213,11 @@ class SpellweaverHelixCastEffect extends OneShotEffect {
if (card != null) {
if (!foundSpellWithSameName && card.getName().equals(spellName)) {
foundSpellWithSameName = true;
- }
- else {
+ } else {
if (controller.chooseUse(Outcome.Copy, "Copy " + card.getIdName(), source, game)) {
Card copy = game.copyCard(card, source, source.getControllerId());
if (controller.chooseUse(Outcome.PlayForFree, "Cast " + copy.getIdName() + " without paying its mana cost?", source, game)) {
- controller.cast(copy.getSpellAbility(), game, true);
+ controller.cast(copy.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/s/SpellweaverVolute.java b/Mage.Sets/src/mage/cards/s/SpellweaverVolute.java
index ea17f9d45c0..6a765e792f9 100644
--- a/Mage.Sets/src/mage/cards/s/SpellweaverVolute.java
+++ b/Mage.Sets/src/mage/cards/s/SpellweaverVolute.java
@@ -28,6 +28,7 @@
package mage.cards.s;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -52,7 +53,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class SpellweaverVolute extends CardImpl {
+public final class SpellweaverVolute extends CardImpl {
public SpellweaverVolute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
@@ -119,7 +120,7 @@ class SpellweaverVoluteEffect extends OneShotEffect {
game.getState().setZone(copiedCard.getId(), Zone.GRAVEYARD);
if (controller.chooseUse(outcome, "Cast the copied card without paying mana cost?", source, game)) {
if (copiedCard.getSpellAbility() != null) {
- controller.cast(copiedCard.getSpellAbility(), game, true);
+ controller.cast(copiedCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
if (controller.moveCards(enchantedCard, Zone.EXILED, source, game)) {
FilterCard filter = new FilterCard("instant card in a graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/SpellwildOuphe.java b/Mage.Sets/src/mage/cards/s/SpellwildOuphe.java
index cf8f3277021..482a0b0dd06 100644
--- a/Mage.Sets/src/mage/cards/s/SpellwildOuphe.java
+++ b/Mage.Sets/src/mage/cards/s/SpellwildOuphe.java
@@ -45,7 +45,7 @@ import mage.util.CardUtil;
*
* @author LevelX2 & L_J
*/
-public class SpellwildOuphe extends CardImpl {
+public final class SpellwildOuphe extends CardImpl {
public SpellwildOuphe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SphereOfDuty.java b/Mage.Sets/src/mage/cards/s/SphereOfDuty.java
index 22df3290c57..b5650e6c3ab 100644
--- a/Mage.Sets/src/mage/cards/s/SphereOfDuty.java
+++ b/Mage.Sets/src/mage/cards/s/SphereOfDuty.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class SphereOfDuty extends CardImpl {
+public final class SphereOfDuty extends CardImpl {
public SphereOfDuty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SphereOfGrace.java b/Mage.Sets/src/mage/cards/s/SphereOfGrace.java
index c80f84d066b..10132ea6fd8 100644
--- a/Mage.Sets/src/mage/cards/s/SphereOfGrace.java
+++ b/Mage.Sets/src/mage/cards/s/SphereOfGrace.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class SphereOfGrace extends CardImpl {
+public final class SphereOfGrace extends CardImpl {
public SphereOfGrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SphereOfLaw.java b/Mage.Sets/src/mage/cards/s/SphereOfLaw.java
index 66cae254c81..e111409c01c 100644
--- a/Mage.Sets/src/mage/cards/s/SphereOfLaw.java
+++ b/Mage.Sets/src/mage/cards/s/SphereOfLaw.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class SphereOfLaw extends CardImpl {
+public final class SphereOfLaw extends CardImpl {
public SphereOfLaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SphereOfPurity.java b/Mage.Sets/src/mage/cards/s/SphereOfPurity.java
index d7c691bc970..dfb79d3be05 100644
--- a/Mage.Sets/src/mage/cards/s/SphereOfPurity.java
+++ b/Mage.Sets/src/mage/cards/s/SphereOfPurity.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class SphereOfPurity extends CardImpl {
+public final class SphereOfPurity extends CardImpl {
public SphereOfPurity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SphereOfReason.java b/Mage.Sets/src/mage/cards/s/SphereOfReason.java
index c7c7746fa77..877fed46d2e 100644
--- a/Mage.Sets/src/mage/cards/s/SphereOfReason.java
+++ b/Mage.Sets/src/mage/cards/s/SphereOfReason.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class SphereOfReason extends CardImpl {
+public final class SphereOfReason extends CardImpl {
public SphereOfReason(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SphereOfResistance.java b/Mage.Sets/src/mage/cards/s/SphereOfResistance.java
index 0ff738c74ad..2a5c552165f 100644
--- a/Mage.Sets/src/mage/cards/s/SphereOfResistance.java
+++ b/Mage.Sets/src/mage/cards/s/SphereOfResistance.java
@@ -39,7 +39,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class SphereOfResistance extends CardImpl {
+public final class SphereOfResistance extends CardImpl {
public SphereOfResistance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SphereOfSafety.java b/Mage.Sets/src/mage/cards/s/SphereOfSafety.java
index c31778e3a13..e45258868ab 100644
--- a/Mage.Sets/src/mage/cards/s/SphereOfSafety.java
+++ b/Mage.Sets/src/mage/cards/s/SphereOfSafety.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SphereOfSafety extends CardImpl {
+public final class SphereOfSafety extends CardImpl {
public SphereOfSafety(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SphereOfTheSuns.java b/Mage.Sets/src/mage/cards/s/SphereOfTheSuns.java
index f98a1421b10..493e65e8d3e 100644
--- a/Mage.Sets/src/mage/cards/s/SphereOfTheSuns.java
+++ b/Mage.Sets/src/mage/cards/s/SphereOfTheSuns.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author North, Loki, noxx
*/
-public class SphereOfTheSuns extends CardImpl {
+public final class SphereOfTheSuns extends CardImpl {
private static final String ruleText = "{this} enters the battlefield tapped and with three charge counters on it.";
diff --git a/Mage.Sets/src/mage/cards/s/SphereOfTruth.java b/Mage.Sets/src/mage/cards/s/SphereOfTruth.java
index 5260505d059..521cd424a6e 100644
--- a/Mage.Sets/src/mage/cards/s/SphereOfTruth.java
+++ b/Mage.Sets/src/mage/cards/s/SphereOfTruth.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class SphereOfTruth extends CardImpl {
+public final class SphereOfTruth extends CardImpl {
public SphereOfTruth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxAmbassador.java b/Mage.Sets/src/mage/cards/s/SphinxAmbassador.java
index 5b4abdc0dd5..a73453ebea0 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxAmbassador.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxAmbassador.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class SphinxAmbassador extends CardImpl {
+public final class SphinxAmbassador extends CardImpl {
public SphinxAmbassador(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxBoneWand.java b/Mage.Sets/src/mage/cards/s/SphinxBoneWand.java
index 22e38436c9e..17cbd9fd284 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxBoneWand.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxBoneWand.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class SphinxBoneWand extends CardImpl {
+public final class SphinxBoneWand extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxOfJwarIsle.java b/Mage.Sets/src/mage/cards/s/SphinxOfJwarIsle.java
index 39091e9d170..0bc08179905 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxOfJwarIsle.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxOfJwarIsle.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author North
*/
-public class SphinxOfJwarIsle extends CardImpl {
+public final class SphinxOfJwarIsle extends CardImpl {
public SphinxOfJwarIsle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxOfLostTruths.java b/Mage.Sets/src/mage/cards/s/SphinxOfLostTruths.java
index dc06bfbad6f..a846dd583c3 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxOfLostTruths.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxOfLostTruths.java
@@ -47,7 +47,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SphinxOfLostTruths extends CardImpl {
+public final class SphinxOfLostTruths extends CardImpl {
public SphinxOfLostTruths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxOfMagosi.java b/Mage.Sets/src/mage/cards/s/SphinxOfMagosi.java
index 8f74b1b3349..f6062f16810 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxOfMagosi.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxOfMagosi.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class SphinxOfMagosi extends CardImpl {
+public final class SphinxOfMagosi extends CardImpl {
public SphinxOfMagosi (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxOfTheChimes.java b/Mage.Sets/src/mage/cards/s/SphinxOfTheChimes.java
index f408fc26cd4..e20e2e478d4 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxOfTheChimes.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxOfTheChimes.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class SphinxOfTheChimes extends CardImpl {
+public final class SphinxOfTheChimes extends CardImpl {
public SphinxOfTheChimes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxOfTheFinalWord.java b/Mage.Sets/src/mage/cards/s/SphinxOfTheFinalWord.java
index 9dede7fdd62..245c5c99c65 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxOfTheFinalWord.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxOfTheFinalWord.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class SphinxOfTheFinalWord extends CardImpl {
+public final class SphinxOfTheFinalWord extends CardImpl {
private static final FilterSpell filterTarget = new FilterSpell("Instant and sorcery spells you control");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxOfTheSteelWind.java b/Mage.Sets/src/mage/cards/s/SphinxOfTheSteelWind.java
index 352c890927e..6f75b3d14dc 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxOfTheSteelWind.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxOfTheSteelWind.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SphinxOfTheSteelWind extends CardImpl {
+public final class SphinxOfTheSteelWind extends CardImpl {
public SphinxOfTheSteelWind (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxOfUthuun.java b/Mage.Sets/src/mage/cards/s/SphinxOfUthuun.java
index c799d47b1cb..5cf86c7665d 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxOfUthuun.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxOfUthuun.java
@@ -55,7 +55,7 @@ import mage.target.TargetCard;
*
* @author North
*/
-public class SphinxOfUthuun extends CardImpl {
+public final class SphinxOfUthuun extends CardImpl {
public SphinxOfUthuun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxSovereign.java b/Mage.Sets/src/mage/cards/s/SphinxSovereign.java
index 7744995a19f..93f31287c4d 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxSovereign.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxSovereign.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author North
*/
-public class SphinxSovereign extends CardImpl {
+public final class SphinxSovereign extends CardImpl {
public SphinxSovereign(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{W}{U}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxSummoner.java b/Mage.Sets/src/mage/cards/s/SphinxSummoner.java
index 8feefe91fe6..54cca3d5a4a 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxSummoner.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxSummoner.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class SphinxSummoner extends CardImpl {
+public final class SphinxSummoner extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact creature card");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxsDecree.java b/Mage.Sets/src/mage/cards/s/SphinxsDecree.java
index 827eef47829..e231e73bcd5 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxsDecree.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxsDecree.java
@@ -1,153 +1,153 @@
-/*
- * 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.MageObject;
-import mage.abilities.Ability;
-import mage.abilities.effects.ContinuousEffect;
-import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
-import mage.abilities.effects.OneShotEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.Outcome;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.target.targetpointer.FixedTarget;
-
-/**
- *
- * @author LevelX2
- */
-public class SphinxsDecree extends CardImpl {
-
- public SphinxsDecree(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}");
-
- // Each opponent can't cast instant or sorcery spells during that player's next turn.
- this.getSpellAbility().addEffect(new SphinxsDecreeEffect());
- }
-
- public SphinxsDecree(final SphinxsDecree card) {
- super(card);
- }
-
- @Override
- public SphinxsDecree copy() {
- return new SphinxsDecree(this);
- }
-}
-
-class SphinxsDecreeEffect extends OneShotEffect {
-
- public SphinxsDecreeEffect() {
- super(Outcome.Benefit);
- this.staticText = "Each opponent can't cast instant or sorcery spells during that player's next turn";
- }
-
- public SphinxsDecreeEffect(final SphinxsDecreeEffect effect) {
- super(effect);
- }
-
- @Override
- public SphinxsDecreeEffect copy() {
- return new SphinxsDecreeEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- for (UUID opponentId : game.getOpponents(source.getControllerId())) {
- ContinuousEffect effect = new SphinxsDecreeCantCastEffect();
- effect.setTargetPointer(new FixedTarget(opponentId));
- game.addEffect(effect, source);
- }
- return true;
- }
-}
-
-class SphinxsDecreeCantCastEffect extends ContinuousRuleModifyingEffectImpl {
-
- int playersNextTurn;
-
- public SphinxsDecreeCantCastEffect() {
- super(Duration.Custom, Outcome.Detriment);
- staticText = "You can't cast instant or sorcery spells during this turn";
- playersNextTurn = 0;
- }
-
- public SphinxsDecreeCantCastEffect(final SphinxsDecreeCantCastEffect effect) {
- super(effect);
- this.playersNextTurn = effect.playersNextTurn;
- }
-
- @Override
- public SphinxsDecreeCantCastEffect copy() {
- return new SphinxsDecreeCantCastEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- return true;
- }
-
- @Override
- public String getInfoMessage(Ability source, GameEvent event, Game game) {
- MageObject mageObject = game.getObject(source.getSourceId());
- if (mageObject != null) {
- return "You can't cast instant or sorcery spells this turn (" + mageObject.getIdName() + ").";
- }
- return null;
- }
-
- @Override
- public boolean applies(GameEvent event, Ability source, Game game) {
- UUID opponentId = getTargetPointer().getFirst(game, source);
- if (game.getActivePlayerId().equals(opponentId)) {
- if (playersNextTurn == 0) {
- playersNextTurn = game.getTurnNum();
- }
- if (playersNextTurn == game.getTurnNum()) {
- if (opponentId.equals(event.getPlayerId())) {
- MageObject object = game.getObject(event.getSourceId());
- if (event.getType() == GameEvent.EventType.CAST_SPELL) {
- if (object.isInstant() || object.isSorcery()) {
- return true;
- }
- }
- }
- } else {
- discard();
- }
- } else if (playersNextTurn > 0) {
- discard();
- }
- return false;
- }
-}
+/*
+ * 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.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.effects.ContinuousEffect;
+import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class SphinxsDecree extends CardImpl {
+
+ public SphinxsDecree(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}");
+
+ // Each opponent can't cast instant or sorcery spells during that player's next turn.
+ this.getSpellAbility().addEffect(new SphinxsDecreeEffect());
+ }
+
+ public SphinxsDecree(final SphinxsDecree card) {
+ super(card);
+ }
+
+ @Override
+ public SphinxsDecree copy() {
+ return new SphinxsDecree(this);
+ }
+}
+
+class SphinxsDecreeEffect extends OneShotEffect {
+
+ public SphinxsDecreeEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Each opponent can't cast instant or sorcery spells during that player's next turn";
+ }
+
+ public SphinxsDecreeEffect(final SphinxsDecreeEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public SphinxsDecreeEffect copy() {
+ return new SphinxsDecreeEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ for (UUID opponentId : game.getOpponents(source.getControllerId())) {
+ ContinuousEffect effect = new SphinxsDecreeCantCastEffect();
+ effect.setTargetPointer(new FixedTarget(opponentId));
+ game.addEffect(effect, source);
+ }
+ return true;
+ }
+}
+
+class SphinxsDecreeCantCastEffect extends ContinuousRuleModifyingEffectImpl {
+
+ int playersNextTurn;
+
+ public SphinxsDecreeCantCastEffect() {
+ super(Duration.Custom, Outcome.Detriment);
+ staticText = "You can't cast instant or sorcery spells during this turn";
+ playersNextTurn = 0;
+ }
+
+ public SphinxsDecreeCantCastEffect(final SphinxsDecreeCantCastEffect effect) {
+ super(effect);
+ this.playersNextTurn = effect.playersNextTurn;
+ }
+
+ @Override
+ public SphinxsDecreeCantCastEffect copy() {
+ return new SphinxsDecreeCantCastEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public String getInfoMessage(Ability source, GameEvent event, Game game) {
+ MageObject mageObject = game.getObject(source.getSourceId());
+ if (mageObject != null) {
+ return "You can't cast instant or sorcery spells this turn (" + mageObject.getIdName() + ").";
+ }
+ return null;
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ UUID opponentId = getTargetPointer().getFirst(game, source);
+ if (game.getActivePlayerId().equals(opponentId)) {
+ if (playersNextTurn == 0) {
+ playersNextTurn = game.getTurnNum();
+ }
+ if (playersNextTurn == game.getTurnNum()) {
+ if (opponentId.equals(event.getPlayerId())) {
+ MageObject object = game.getObject(event.getSourceId());
+ if (event.getType() == GameEvent.EventType.CAST_SPELL) {
+ if (object.isInstant() || object.isSorcery()) {
+ return true;
+ }
+ }
+ }
+ } else {
+ discard();
+ }
+ } else if (playersNextTurn > 0) {
+ discard();
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/SphinxsDisciple.java b/Mage.Sets/src/mage/cards/s/SphinxsDisciple.java
index 2d7ecd54340..b472b308a8e 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxsDisciple.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxsDisciple.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SphinxsDisciple extends CardImpl {
+public final class SphinxsDisciple extends CardImpl {
public SphinxsDisciple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxsHerald.java b/Mage.Sets/src/mage/cards/s/SphinxsHerald.java
index c0ec06c9615..def9dab873d 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxsHerald.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxsHerald.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class SphinxsHerald extends CardImpl {
+public final class SphinxsHerald extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Sphinx Sovereign");
private static final FilterControlledCreaturePermanent filterWhite = new FilterControlledCreaturePermanent("a white creature");
private static final FilterControlledCreaturePermanent filterBlue = new FilterControlledCreaturePermanent("a blue creature");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxsRevelation.java b/Mage.Sets/src/mage/cards/s/SphinxsRevelation.java
index 3f43b7759e2..d05237e88be 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxsRevelation.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxsRevelation.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class SphinxsRevelation extends CardImpl {
+public final class SphinxsRevelation extends CardImpl {
public SphinxsRevelation (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{W}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SphinxsTutelage.java b/Mage.Sets/src/mage/cards/s/SphinxsTutelage.java
index db7975b50bf..2aee34b2529 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxsTutelage.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxsTutelage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class SphinxsTutelage extends CardImpl {
+public final class SphinxsTutelage extends CardImpl {
public SphinxsTutelage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiderClimb.java b/Mage.Sets/src/mage/cards/s/SpiderClimb.java
index a86b65a9e6b..c3009ea1fcc 100644
--- a/Mage.Sets/src/mage/cards/s/SpiderClimb.java
+++ b/Mage.Sets/src/mage/cards/s/SpiderClimb.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SpiderClimb extends CardImpl {
+public final class SpiderClimb extends CardImpl {
public SpiderClimb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiderSpawning.java b/Mage.Sets/src/mage/cards/s/SpiderSpawning.java
index 865ed119eba..28bdc61ea11 100644
--- a/Mage.Sets/src/mage/cards/s/SpiderSpawning.java
+++ b/Mage.Sets/src/mage/cards/s/SpiderSpawning.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.SpiderToken;
*
* @author North
*/
-public class SpiderSpawning extends CardImpl {
+public final class SpiderSpawning extends CardImpl {
public SpiderSpawning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiderUmbra.java b/Mage.Sets/src/mage/cards/s/SpiderUmbra.java
index 92e635f6ad7..dcf2ecc5326 100644
--- a/Mage.Sets/src/mage/cards/s/SpiderUmbra.java
+++ b/Mage.Sets/src/mage/cards/s/SpiderUmbra.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SpiderUmbra extends CardImpl {
+public final class SpiderUmbra extends CardImpl {
public SpiderUmbra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpidersilkArmor.java b/Mage.Sets/src/mage/cards/s/SpidersilkArmor.java
index dff9722de8e..b8c3bc76666 100644
--- a/Mage.Sets/src/mage/cards/s/SpidersilkArmor.java
+++ b/Mage.Sets/src/mage/cards/s/SpidersilkArmor.java
@@ -45,7 +45,7 @@ import mage.filter.StaticFilters;
*
* @author FenrisulfrX
*/
-public class SpidersilkArmor extends CardImpl {
+public final class SpidersilkArmor extends CardImpl {
public SpidersilkArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpidersilkNet.java b/Mage.Sets/src/mage/cards/s/SpidersilkNet.java
index 4face331519..91a8ea74e88 100644
--- a/Mage.Sets/src/mage/cards/s/SpidersilkNet.java
+++ b/Mage.Sets/src/mage/cards/s/SpidersilkNet.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class SpidersilkNet extends CardImpl {
+public final class SpidersilkNet extends CardImpl {
public SpidersilkNet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiderwigBoggart.java b/Mage.Sets/src/mage/cards/s/SpiderwigBoggart.java
index 254069d4dc3..6402f4a0894 100644
--- a/Mage.Sets/src/mage/cards/s/SpiderwigBoggart.java
+++ b/Mage.Sets/src/mage/cards/s/SpiderwigBoggart.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SpiderwigBoggart extends CardImpl {
+public final class SpiderwigBoggart extends CardImpl {
public SpiderwigBoggart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpideryGrasp.java b/Mage.Sets/src/mage/cards/s/SpideryGrasp.java
index d82757e9a59..a335524e239 100644
--- a/Mage.Sets/src/mage/cards/s/SpideryGrasp.java
+++ b/Mage.Sets/src/mage/cards/s/SpideryGrasp.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author nantuko
*/
-public class SpideryGrasp extends CardImpl {
+public final class SpideryGrasp extends CardImpl {
public SpideryGrasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeBreeder.java b/Mage.Sets/src/mage/cards/s/SpikeBreeder.java
index 4772337f377..b854cff6bcb 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeBreeder.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeBreeder.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SpikeBreeder extends CardImpl {
+public final class SpikeBreeder extends CardImpl {
public SpikeBreeder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeCannibal.java b/Mage.Sets/src/mage/cards/s/SpikeCannibal.java
index 876717e641d..1b55c1917a7 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeCannibal.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeCannibal.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author spjspj
*/
-public class SpikeCannibal extends CardImpl {
+public final class SpikeCannibal extends CardImpl {
public SpikeCannibal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
@@ -114,10 +114,8 @@ class SpikeCannibalEffect extends OneShotEffect {
}
if (countersRemoved > 0) {
- if (sourcePermanent != null) {
- sourcePermanent.addCounters(CounterType.P1P1.createInstance(countersRemoved), source, game);
- return true;
- }
+ sourcePermanent.addCounters(CounterType.P1P1.createInstance(countersRemoved), source, game);
+ return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/s/SpikeColony.java b/Mage.Sets/src/mage/cards/s/SpikeColony.java
index 3638d131c14..a5882d0b730 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeColony.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeColony.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SpikeColony extends CardImpl {
+public final class SpikeColony extends CardImpl {
public SpikeColony(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeDrone.java b/Mage.Sets/src/mage/cards/s/SpikeDrone.java
index 8fcf113313b..15dda6339bb 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeDrone.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeDrone.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SpikeDrone extends CardImpl {
+public final class SpikeDrone extends CardImpl {
public SpikeDrone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeFeeder.java b/Mage.Sets/src/mage/cards/s/SpikeFeeder.java
index 82441afa25c..7e108ec1e59 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeFeeder.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeFeeder.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SpikeFeeder extends CardImpl {
+public final class SpikeFeeder extends CardImpl {
public SpikeFeeder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeHatcher.java b/Mage.Sets/src/mage/cards/s/SpikeHatcher.java
index 9db666734f1..ac86d7d9129 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeHatcher.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeHatcher.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SpikeHatcher extends CardImpl {
+public final class SpikeHatcher extends CardImpl {
public SpikeHatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeJester.java b/Mage.Sets/src/mage/cards/s/SpikeJester.java
index 9bb9f4cf9b4..c36c648fad7 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeJester.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeJester.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class SpikeJester extends CardImpl {
+public final class SpikeJester extends CardImpl {
public SpikeJester(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeRogue.java b/Mage.Sets/src/mage/cards/s/SpikeRogue.java
index a27148a327e..26ccbb72705 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeRogue.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeRogue.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SpikeRogue extends CardImpl {
+public final class SpikeRogue extends CardImpl {
public SpikeRogue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeSoldier.java b/Mage.Sets/src/mage/cards/s/SpikeSoldier.java
index 84bce2e9f88..3bea81e7870 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeSoldier.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeSoldier.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SpikeSoldier extends CardImpl {
+public final class SpikeSoldier extends CardImpl {
public SpikeSoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeTailedCeratops.java b/Mage.Sets/src/mage/cards/s/SpikeTailedCeratops.java
index 40018bcccd1..80765f39701 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeTailedCeratops.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeTailedCeratops.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SpikeTailedCeratops extends CardImpl {
+public final class SpikeTailedCeratops extends CardImpl {
public SpikeTailedCeratops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeTiller.java b/Mage.Sets/src/mage/cards/s/SpikeTiller.java
index d1153a304cd..191f0189fd4 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeTiller.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeTiller.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author L_J
*/
-public class SpikeTiller extends CardImpl {
+public final class SpikeTiller extends CardImpl {
public SpikeTiller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeWeaver.java b/Mage.Sets/src/mage/cards/s/SpikeWeaver.java
index d30ff8cce9d..ca73a21b9e0 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeWeaver.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeWeaver.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class SpikeWeaver extends CardImpl {
+public final class SpikeWeaver extends CardImpl {
public SpikeWeaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeWorker.java b/Mage.Sets/src/mage/cards/s/SpikeWorker.java
index f2e83d50421..f4dbd66d392 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeWorker.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeWorker.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SpikeWorker extends CardImpl {
+public final class SpikeWorker extends CardImpl {
public SpikeWorker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikedBaloth.java b/Mage.Sets/src/mage/cards/s/SpikedBaloth.java
index da432c1a4eb..63fb963a213 100644
--- a/Mage.Sets/src/mage/cards/s/SpikedBaloth.java
+++ b/Mage.Sets/src/mage/cards/s/SpikedBaloth.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SpikedBaloth extends CardImpl {
+public final class SpikedBaloth extends CardImpl {
public SpikedBaloth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeshotElder.java b/Mage.Sets/src/mage/cards/s/SpikeshotElder.java
index 820072c8a01..86889226736 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeshotElder.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeshotElder.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class SpikeshotElder extends CardImpl {
+public final class SpikeshotElder extends CardImpl {
public SpikeshotElder (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpikeshotGoblin.java b/Mage.Sets/src/mage/cards/s/SpikeshotGoblin.java
index e60040e3729..83cb78aab53 100644
--- a/Mage.Sets/src/mage/cards/s/SpikeshotGoblin.java
+++ b/Mage.Sets/src/mage/cards/s/SpikeshotGoblin.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class SpikeshotGoblin extends CardImpl {
+public final class SpikeshotGoblin extends CardImpl {
public SpikeshotGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiketailDrake.java b/Mage.Sets/src/mage/cards/s/SpiketailDrake.java
index 7ff76f2c475..9b07b4f2b12 100644
--- a/Mage.Sets/src/mage/cards/s/SpiketailDrake.java
+++ b/Mage.Sets/src/mage/cards/s/SpiketailDrake.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class SpiketailDrake extends CardImpl {
+public final class SpiketailDrake extends CardImpl {
public SpiketailDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiketailDrakeling.java b/Mage.Sets/src/mage/cards/s/SpiketailDrakeling.java
index 5b3049db4e0..a064db337c8 100644
--- a/Mage.Sets/src/mage/cards/s/SpiketailDrakeling.java
+++ b/Mage.Sets/src/mage/cards/s/SpiketailDrakeling.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
* @author LoneFox
*/
-public class SpiketailDrakeling extends CardImpl {
+public final class SpiketailDrakeling extends CardImpl {
public SpiketailDrakeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiketailHatchling.java b/Mage.Sets/src/mage/cards/s/SpiketailHatchling.java
index 3842081f15c..6b0790c63f8 100644
--- a/Mage.Sets/src/mage/cards/s/SpiketailHatchling.java
+++ b/Mage.Sets/src/mage/cards/s/SpiketailHatchling.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class SpiketailHatchling extends CardImpl {
+public final class SpiketailHatchling extends CardImpl {
public SpiketailHatchling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinEngine.java b/Mage.Sets/src/mage/cards/s/SpinEngine.java
index 7c180915380..319aa9a1f8e 100644
--- a/Mage.Sets/src/mage/cards/s/SpinEngine.java
+++ b/Mage.Sets/src/mage/cards/s/SpinEngine.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SpinEngine extends CardImpl {
+public final class SpinEngine extends CardImpl {
public SpinEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinIntoMyth.java b/Mage.Sets/src/mage/cards/s/SpinIntoMyth.java
index 93789ac6748..96658a10be0 100644
--- a/Mage.Sets/src/mage/cards/s/SpinIntoMyth.java
+++ b/Mage.Sets/src/mage/cards/s/SpinIntoMyth.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SpinIntoMyth extends CardImpl {
+public final class SpinIntoMyth extends CardImpl {
public SpinIntoMyth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinalEmbrace.java b/Mage.Sets/src/mage/cards/s/SpinalEmbrace.java
index 957c5ab9834..0ffabe528fa 100644
--- a/Mage.Sets/src/mage/cards/s/SpinalEmbrace.java
+++ b/Mage.Sets/src/mage/cards/s/SpinalEmbrace.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SpinalEmbrace extends CardImpl {
+public final class SpinalEmbrace extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/s/SpinalGraft.java b/Mage.Sets/src/mage/cards/s/SpinalGraft.java
index c5af7217256..df383177dbb 100644
--- a/Mage.Sets/src/mage/cards/s/SpinalGraft.java
+++ b/Mage.Sets/src/mage/cards/s/SpinalGraft.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class SpinalGraft extends CardImpl {
+public final class SpinalGraft extends CardImpl {
public SpinalGraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinalParasite.java b/Mage.Sets/src/mage/cards/s/SpinalParasite.java
index ea5727ce88a..36a3ecd9b07 100644
--- a/Mage.Sets/src/mage/cards/s/SpinalParasite.java
+++ b/Mage.Sets/src/mage/cards/s/SpinalParasite.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class SpinalParasite extends CardImpl {
+public final class SpinalParasite extends CardImpl {
public SpinalParasite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinalVillain.java b/Mage.Sets/src/mage/cards/s/SpinalVillain.java
index 671a9aeb1a3..96062dd7640 100644
--- a/Mage.Sets/src/mage/cards/s/SpinalVillain.java
+++ b/Mage.Sets/src/mage/cards/s/SpinalVillain.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SpinalVillain extends CardImpl {
+public final class SpinalVillain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creature");
diff --git a/Mage.Sets/src/mage/cards/s/Spincrusher.java b/Mage.Sets/src/mage/cards/s/Spincrusher.java
index bd8a280cbc8..4392fad17f8 100644
--- a/Mage.Sets/src/mage/cards/s/Spincrusher.java
+++ b/Mage.Sets/src/mage/cards/s/Spincrusher.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
/**
* @author Loki
*/
-public class Spincrusher extends CardImpl {
+public final class Spincrusher extends CardImpl {
public Spincrusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SpindriftDrake.java b/Mage.Sets/src/mage/cards/s/SpindriftDrake.java
index f41e1d8a523..8b90155af9a 100644
--- a/Mage.Sets/src/mage/cards/s/SpindriftDrake.java
+++ b/Mage.Sets/src/mage/cards/s/SpindriftDrake.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class SpindriftDrake extends CardImpl {
+public final class SpindriftDrake extends CardImpl {
public SpindriftDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpineOfIshSah.java b/Mage.Sets/src/mage/cards/s/SpineOfIshSah.java
index a0fdd9e979d..fed8fe77fe8 100644
--- a/Mage.Sets/src/mage/cards/s/SpineOfIshSah.java
+++ b/Mage.Sets/src/mage/cards/s/SpineOfIshSah.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class SpineOfIshSah extends CardImpl {
+public final class SpineOfIshSah extends CardImpl {
public SpineOfIshSah(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{7}");
diff --git a/Mage.Sets/src/mage/cards/s/Spinebiter.java b/Mage.Sets/src/mage/cards/s/Spinebiter.java
index ff0b0741896..46cd2b4aade 100644
--- a/Mage.Sets/src/mage/cards/s/Spinebiter.java
+++ b/Mage.Sets/src/mage/cards/s/Spinebiter.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward
*/
-public class Spinebiter extends CardImpl {
+public final class Spinebiter extends CardImpl {
public Spinebiter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinedBasher.java b/Mage.Sets/src/mage/cards/s/SpinedBasher.java
index 876085899b1..4cc92562f48 100644
--- a/Mage.Sets/src/mage/cards/s/SpinedBasher.java
+++ b/Mage.Sets/src/mage/cards/s/SpinedBasher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SpinedBasher extends CardImpl {
+public final class SpinedBasher extends CardImpl {
public SpinedBasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinedFluke.java b/Mage.Sets/src/mage/cards/s/SpinedFluke.java
index 027c0f800e5..4e905128bb6 100644
--- a/Mage.Sets/src/mage/cards/s/SpinedFluke.java
+++ b/Mage.Sets/src/mage/cards/s/SpinedFluke.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Loki
*/
-public class SpinedFluke extends CardImpl {
+public final class SpinedFluke extends CardImpl {
public SpinedFluke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinedSliver.java b/Mage.Sets/src/mage/cards/s/SpinedSliver.java
index 4de02f2bda6..fa39d8b950a 100644
--- a/Mage.Sets/src/mage/cards/s/SpinedSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SpinedSliver.java
@@ -47,7 +47,7 @@ import mage.game.combat.CombatGroup;
*
* @author KholdFuzion
*/
-public class SpinedSliver extends CardImpl {
+public final class SpinedSliver extends CardImpl {
public SpinedSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinedThopter.java b/Mage.Sets/src/mage/cards/s/SpinedThopter.java
index 393642d282b..5e3b0d815f7 100644
--- a/Mage.Sets/src/mage/cards/s/SpinedThopter.java
+++ b/Mage.Sets/src/mage/cards/s/SpinedThopter.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SpinedThopter extends CardImpl {
+public final class SpinedThopter extends CardImpl {
public SpinedThopter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{U/P}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinedWurm.java b/Mage.Sets/src/mage/cards/s/SpinedWurm.java
index fcd4158023a..d220bada7c2 100644
--- a/Mage.Sets/src/mage/cards/s/SpinedWurm.java
+++ b/Mage.Sets/src/mage/cards/s/SpinedWurm.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SpinedWurm extends CardImpl {
+public final class SpinedWurm extends CardImpl {
public SpinedWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinelessThug.java b/Mage.Sets/src/mage/cards/s/SpinelessThug.java
index 1bff53f0706..e9625b78203 100644
--- a/Mage.Sets/src/mage/cards/s/SpinelessThug.java
+++ b/Mage.Sets/src/mage/cards/s/SpinelessThug.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SpinelessThug extends CardImpl {
+public final class SpinelessThug extends CardImpl {
public SpinelessThug(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpinerockKnoll.java b/Mage.Sets/src/mage/cards/s/SpinerockKnoll.java
index cbba5dae0e6..bac36e7b85d 100644
--- a/Mage.Sets/src/mage/cards/s/SpinerockKnoll.java
+++ b/Mage.Sets/src/mage/cards/s/SpinerockKnoll.java
@@ -54,7 +54,7 @@ import mage.watchers.Watcher;
/**
* @author emerald000
*/
-public class SpinerockKnoll extends CardImpl {
+public final class SpinerockKnoll extends CardImpl {
public SpinerockKnoll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/SpinneretSliver.java b/Mage.Sets/src/mage/cards/s/SpinneretSliver.java
index 894e0a03cd8..cceb966a8a0 100644
--- a/Mage.Sets/src/mage/cards/s/SpinneretSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SpinneretSliver.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author KholdFuzion
*/
-public class SpinneretSliver extends CardImpl {
+public final class SpinneretSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SpinningDarkness.java b/Mage.Sets/src/mage/cards/s/SpinningDarkness.java
index 3da69c86056..9f968b8d77d 100644
--- a/Mage.Sets/src/mage/cards/s/SpinningDarkness.java
+++ b/Mage.Sets/src/mage/cards/s/SpinningDarkness.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class SpinningDarkness extends CardImpl {
+public final class SpinningDarkness extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SpiralingDuelist.java b/Mage.Sets/src/mage/cards/s/SpiralingDuelist.java
index 67bab39e810..9984f701f9f 100644
--- a/Mage.Sets/src/mage/cards/s/SpiralingDuelist.java
+++ b/Mage.Sets/src/mage/cards/s/SpiralingDuelist.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class SpiralingDuelist extends CardImpl {
+public final class SpiralingDuelist extends CardImpl {
private static final String effectText = "Metalcraft - Spiraling Duelist has double strike as long as you control three or more artifacts.";
diff --git a/Mage.Sets/src/mage/cards/s/SpiralingEmbers.java b/Mage.Sets/src/mage/cards/s/SpiralingEmbers.java
index 6ed7061b50c..972e800123a 100644
--- a/Mage.Sets/src/mage/cards/s/SpiralingEmbers.java
+++ b/Mage.Sets/src/mage/cards/s/SpiralingEmbers.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class SpiralingEmbers extends CardImpl {
+public final class SpiralingEmbers extends CardImpl {
public SpiralingEmbers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpireBarrage.java b/Mage.Sets/src/mage/cards/s/SpireBarrage.java
index db3d98eeec8..ad23fd72872 100644
--- a/Mage.Sets/src/mage/cards/s/SpireBarrage.java
+++ b/Mage.Sets/src/mage/cards/s/SpireBarrage.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class SpireBarrage extends CardImpl {
+public final class SpireBarrage extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain you control");
diff --git a/Mage.Sets/src/mage/cards/s/SpireGarden.java b/Mage.Sets/src/mage/cards/s/SpireGarden.java
index 64bfb5694cb..3598ceb724b 100644
--- a/Mage.Sets/src/mage/cards/s/SpireGarden.java
+++ b/Mage.Sets/src/mage/cards/s/SpireGarden.java
@@ -42,7 +42,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class SpireGarden extends CardImpl {
+public final class SpireGarden extends CardImpl {
public SpireGarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/SpireGolem.java b/Mage.Sets/src/mage/cards/s/SpireGolem.java
index 7a91ed64adc..985c929ec02 100644
--- a/Mage.Sets/src/mage/cards/s/SpireGolem.java
+++ b/Mage.Sets/src/mage/cards/s/SpireGolem.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SpireGolem extends CardImpl {
+public final class SpireGolem extends CardImpl {
public SpireGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/s/SpireMonitor.java b/Mage.Sets/src/mage/cards/s/SpireMonitor.java
index 0107dc32fdb..28077559800 100644
--- a/Mage.Sets/src/mage/cards/s/SpireMonitor.java
+++ b/Mage.Sets/src/mage/cards/s/SpireMonitor.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SpireMonitor extends CardImpl {
+public final class SpireMonitor extends CardImpl {
public SpireMonitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpireOfIndustry.java b/Mage.Sets/src/mage/cards/s/SpireOfIndustry.java
index 6bc4a96235f..97d535a2490 100644
--- a/Mage.Sets/src/mage/cards/s/SpireOfIndustry.java
+++ b/Mage.Sets/src/mage/cards/s/SpireOfIndustry.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author Styxo
*/
-public class SpireOfIndustry extends CardImpl {
+public final class SpireOfIndustry extends CardImpl {
public SpireOfIndustry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/SpireOwl.java b/Mage.Sets/src/mage/cards/s/SpireOwl.java
index e639fa4d1b4..a98c9bc2e13 100644
--- a/Mage.Sets/src/mage/cards/s/SpireOwl.java
+++ b/Mage.Sets/src/mage/cards/s/SpireOwl.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SpireOwl extends CardImpl {
+public final class SpireOwl extends CardImpl {
public SpireOwl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpirePatrol.java b/Mage.Sets/src/mage/cards/s/SpirePatrol.java
index dd2b7ba0bf1..b0f3656cf99 100644
--- a/Mage.Sets/src/mage/cards/s/SpirePatrol.java
+++ b/Mage.Sets/src/mage/cards/s/SpirePatrol.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class SpirePatrol extends CardImpl {
+public final class SpirePatrol extends CardImpl {
public SpirePatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpireSerpent.java b/Mage.Sets/src/mage/cards/s/SpireSerpent.java
index a695bbb7e20..724a0c4dd0f 100644
--- a/Mage.Sets/src/mage/cards/s/SpireSerpent.java
+++ b/Mage.Sets/src/mage/cards/s/SpireSerpent.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SpireSerpent extends CardImpl {
+public final class SpireSerpent extends CardImpl {
private static final String abilityText1 = "Metalcraft - As long as you control three or more artifacts, {this} gets +2/+2";
diff --git a/Mage.Sets/src/mage/cards/s/SpireTracer.java b/Mage.Sets/src/mage/cards/s/SpireTracer.java
index 7846832cbf4..38928936e20 100644
--- a/Mage.Sets/src/mage/cards/s/SpireTracer.java
+++ b/Mage.Sets/src/mage/cards/s/SpireTracer.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class SpireTracer extends CardImpl {
+public final class SpireTracer extends CardImpl {
public SpireTracer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpireWinder.java b/Mage.Sets/src/mage/cards/s/SpireWinder.java
index 16b50978bd2..16f25356a07 100644
--- a/Mage.Sets/src/mage/cards/s/SpireWinder.java
+++ b/Mage.Sets/src/mage/cards/s/SpireWinder.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SpireWinder extends CardImpl {
+public final class SpireWinder extends CardImpl {
public SpireWinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpirebluffCanal.java b/Mage.Sets/src/mage/cards/s/SpirebluffCanal.java
index 1dac8df5d6c..15da7e4bfae 100644
--- a/Mage.Sets/src/mage/cards/s/SpirebluffCanal.java
+++ b/Mage.Sets/src/mage/cards/s/SpirebluffCanal.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class SpirebluffCanal extends CardImpl {
+public final class SpirebluffCanal extends CardImpl {
public SpirebluffCanal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/SpiresOfOrazca.java b/Mage.Sets/src/mage/cards/s/SpiresOfOrazca.java
index 68bd5eb0eb8..529a88b4277 100644
--- a/Mage.Sets/src/mage/cards/s/SpiresOfOrazca.java
+++ b/Mage.Sets/src/mage/cards/s/SpiresOfOrazca.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class SpiresOfOrazca extends CardImpl {
+public final class SpiresOfOrazca extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/SpiresideInfiltrator.java b/Mage.Sets/src/mage/cards/s/SpiresideInfiltrator.java
index c5d4abffa93..4b709e4d4f5 100644
--- a/Mage.Sets/src/mage/cards/s/SpiresideInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/s/SpiresideInfiltrator.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class SpiresideInfiltrator extends CardImpl {
+public final class SpiresideInfiltrator extends CardImpl {
public SpiresideInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Spirespine.java b/Mage.Sets/src/mage/cards/s/Spirespine.java
index 84e2e02ffd8..8787307c63e 100644
--- a/Mage.Sets/src/mage/cards/s/Spirespine.java
+++ b/Mage.Sets/src/mage/cards/s/Spirespine.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class Spirespine extends CardImpl {
+public final class Spirespine extends CardImpl {
public Spirespine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritAway.java b/Mage.Sets/src/mage/cards/s/SpiritAway.java
index ccb3c21da08..a3455a5cfb1 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritAway.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritAway.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author noxx
*/
-public class SpiritAway extends CardImpl {
+public final class SpiritAway extends CardImpl {
public SpiritAway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritBonds.java b/Mage.Sets/src/mage/cards/s/SpiritBonds.java
index e3380aca590..77f66603659 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritBonds.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritBonds.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class SpiritBonds extends CardImpl {
+public final class SpiritBonds extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Spirit creature you control");
private static final FilterControlledPermanent filterSpirit = new FilterControlledPermanent("Spirit");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritCairn.java b/Mage.Sets/src/mage/cards/s/SpiritCairn.java
index 1d1f92e0b46..dc9b562d1b1 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritCairn.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritCairn.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author fireshoes
*/
-public class SpiritCairn extends CardImpl {
+public final class SpiritCairn extends CardImpl {
public SpiritCairn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritEnDal.java b/Mage.Sets/src/mage/cards/s/SpiritEnDal.java
index 859924c059f..ecb462fded8 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritEnDal.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritEnDal.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SpiritEnDal extends CardImpl {
+public final class SpiritEnDal extends CardImpl {
public SpiritEnDal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritEnKor.java b/Mage.Sets/src/mage/cards/s/SpiritEnKor.java
index 533a5798950..df752f991fc 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritEnKor.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritEnKor.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class SpiritEnKor extends CardImpl {
+public final class SpiritEnKor extends CardImpl {
public SpiritEnKor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritLink.java b/Mage.Sets/src/mage/cards/s/SpiritLink.java
index 1ba39c70a0b..051ea9cd54b 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritLink.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritLink.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SpiritLink extends CardImpl {
+public final class SpiritLink extends CardImpl {
public SpiritLink(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritLoop.java b/Mage.Sets/src/mage/cards/s/SpiritLoop.java
index 41d3bb6e4e7..a5d70ea73ce 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritLoop.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritLoop.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class SpiritLoop extends CardImpl {
+public final class SpiritLoop extends CardImpl {
public SpiritLoop(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritMantle.java b/Mage.Sets/src/mage/cards/s/SpiritMantle.java
index abb9ce1c93d..dfc43a56db8 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritMantle.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritMantle.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author nantuko
*/
-public class SpiritMantle extends CardImpl {
+public final class SpiritMantle extends CardImpl {
public SpiritMantle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritMirror.java b/Mage.Sets/src/mage/cards/s/SpiritMirror.java
index e9c03b254c6..bf283f79339 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritMirror.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritMirror.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
/**
* @author LevelX2
*/
-public class SpiritMirror extends CardImpl {
+public final class SpiritMirror extends CardImpl {
private static final FilterPermanent filterToken = new FilterPermanent(SubType.REFLECTION, "Reflection token");
private static final FilterPermanent filter = new FilterPermanent("Reflection");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfResistance.java b/Mage.Sets/src/mage/cards/s/SpiritOfResistance.java
index 2432fe360ea..c1ed7505d9c 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritOfResistance.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritOfResistance.java
@@ -50,7 +50,7 @@ import java.util.UUID;
/**
* @author Quercitron
*/
-public class SpiritOfResistance extends CardImpl {
+public final class SpiritOfResistance extends CardImpl {
public SpiritOfResistance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfTheHearth.java b/Mage.Sets/src/mage/cards/s/SpiritOfTheHearth.java
index da8a22a1572..7a1efffcd15 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritOfTheHearth.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritOfTheHearth.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class SpiritOfTheHearth extends CardImpl {
+public final class SpiritOfTheHearth extends CardImpl {
public SpiritOfTheHearth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfTheHunt.java b/Mage.Sets/src/mage/cards/s/SpiritOfTheHunt.java
index 669c5d197db..0d80cb26488 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritOfTheHunt.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritOfTheHunt.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class SpiritOfTheHunt extends CardImpl {
+public final class SpiritOfTheHunt extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each other creature you control that's a Wolf or Werewolf");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java b/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java
index f619e4d2c17..24eb10dbed3 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SpiritOfTheLabyrinth extends CardImpl {
+public final class SpiritOfTheLabyrinth extends CardImpl {
public SpiritOfTheLabyrinth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java b/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java
index a6a338ee70b..425b6b7a363 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class SpiritOfTheNight extends CardImpl {
+public final class SpiritOfTheNight extends CardImpl {
public SpiritOfTheNight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritShackle.java b/Mage.Sets/src/mage/cards/s/SpiritShackle.java
index b47d8e4f190..4705e6ed757 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritShackle.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritShackle.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class SpiritShackle extends CardImpl {
+public final class SpiritShackle extends CardImpl {
public SpiritShackle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritShield.java b/Mage.Sets/src/mage/cards/s/SpiritShield.java
index e9dfe031f7f..14e3eb188f1 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritShield.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritShield.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SpiritShield extends CardImpl {
+public final class SpiritShield extends CardImpl {
public SpiritShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritWeaver.java b/Mage.Sets/src/mage/cards/s/SpiritWeaver.java
index 294c9e47939..d06ee22fde8 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritWeaver.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritWeaver.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SpiritWeaver extends CardImpl {
+public final class SpiritWeaver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green or blue creature");
diff --git a/Mage.Sets/src/mage/cards/s/Spiritmonger.java b/Mage.Sets/src/mage/cards/s/Spiritmonger.java
index 7f280ee5c07..b411b1211bd 100644
--- a/Mage.Sets/src/mage/cards/s/Spiritmonger.java
+++ b/Mage.Sets/src/mage/cards/s/Spiritmonger.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class Spiritmonger extends CardImpl {
+public final class Spiritmonger extends CardImpl {
public Spiritmonger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritualAsylum.java b/Mage.Sets/src/mage/cards/s/SpiritualAsylum.java
index 927439e4939..983059ea66b 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritualAsylum.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritualAsylum.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class SpiritualAsylum extends CardImpl {
+public final class SpiritualAsylum extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Creatures and lands you control");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritualFocus.java b/Mage.Sets/src/mage/cards/s/SpiritualFocus.java
index 33ec0a0d01f..015264c0987 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritualFocus.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritualFocus.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class SpiritualFocus extends CardImpl {
+public final class SpiritualFocus extends CardImpl {
public SpiritualFocus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritualGuardian.java b/Mage.Sets/src/mage/cards/s/SpiritualGuardian.java
index 74042d99ae2..e21514d57b9 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritualGuardian.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritualGuardian.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SpiritualGuardian extends CardImpl {
+public final class SpiritualGuardian extends CardImpl {
public SpiritualGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiritualVisit.java b/Mage.Sets/src/mage/cards/s/SpiritualVisit.java
index 0876b83687b..f2eb1c832c3 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritualVisit.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritualVisit.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SpiritualVisit extends CardImpl {
+public final class SpiritualVisit extends CardImpl {
public SpiritualVisit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Spiritualize.java b/Mage.Sets/src/mage/cards/s/Spiritualize.java
index d9741763114..00712f96724 100644
--- a/Mage.Sets/src/mage/cards/s/Spiritualize.java
+++ b/Mage.Sets/src/mage/cards/s/Spiritualize.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33, Unknown (Glimpse of Nature), LevelX2 (Armadillo Cloak)
*/
-public class Spiritualize extends CardImpl {
+public final class Spiritualize extends CardImpl {
public Spiritualize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiteMalice.java b/Mage.Sets/src/mage/cards/s/SpiteMalice.java
index 6f1f957a4fb..68d90de82e6 100644
--- a/Mage.Sets/src/mage/cards/s/SpiteMalice.java
+++ b/Mage.Sets/src/mage/cards/s/SpiteMalice.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author FenrisulfrX
*/
-public class SpiteMalice extends SplitCard {
+public final class SpiteMalice extends SplitCard {
private static final FilterSpell filterNonCreatureSpell = new FilterSpell("noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/s/SpiteOfMogis.java b/Mage.Sets/src/mage/cards/s/SpiteOfMogis.java
index 50b6c6eb637..4ba65546ee3 100644
--- a/Mage.Sets/src/mage/cards/s/SpiteOfMogis.java
+++ b/Mage.Sets/src/mage/cards/s/SpiteOfMogis.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SpiteOfMogis extends CardImpl {
+public final class SpiteOfMogis extends CardImpl {
public SpiteOfMogis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Spitebellows.java b/Mage.Sets/src/mage/cards/s/Spitebellows.java
index 56834d77921..33157321f61 100644
--- a/Mage.Sets/src/mage/cards/s/Spitebellows.java
+++ b/Mage.Sets/src/mage/cards/s/Spitebellows.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Spitebellows extends CardImpl {
+public final class Spitebellows extends CardImpl {
public Spitebellows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpiteflameWitch.java b/Mage.Sets/src/mage/cards/s/SpiteflameWitch.java
index bef893f41da..437a8495a9d 100644
--- a/Mage.Sets/src/mage/cards/s/SpiteflameWitch.java
+++ b/Mage.Sets/src/mage/cards/s/SpiteflameWitch.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class SpiteflameWitch extends CardImpl {
+public final class SpiteflameWitch extends CardImpl {
public SpiteflameWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpitefulBlow.java b/Mage.Sets/src/mage/cards/s/SpitefulBlow.java
index 31f3299cd76..3c1792e23b5 100644
--- a/Mage.Sets/src/mage/cards/s/SpitefulBlow.java
+++ b/Mage.Sets/src/mage/cards/s/SpitefulBlow.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class SpitefulBlow extends CardImpl {
+public final class SpitefulBlow extends CardImpl {
public SpitefulBlow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpitefulBully.java b/Mage.Sets/src/mage/cards/s/SpitefulBully.java
index 9b351792f84..cd0d4bc544a 100644
--- a/Mage.Sets/src/mage/cards/s/SpitefulBully.java
+++ b/Mage.Sets/src/mage/cards/s/SpitefulBully.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class SpitefulBully extends CardImpl {
+public final class SpitefulBully extends CardImpl {
public SpitefulBully(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpitefulMotives.java b/Mage.Sets/src/mage/cards/s/SpitefulMotives.java
index a8961964f1f..48e401c4be0 100644
--- a/Mage.Sets/src/mage/cards/s/SpitefulMotives.java
+++ b/Mage.Sets/src/mage/cards/s/SpitefulMotives.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SpitefulMotives extends CardImpl {
+public final class SpitefulMotives extends CardImpl {
public SpitefulMotives(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpitefulReturned.java b/Mage.Sets/src/mage/cards/s/SpitefulReturned.java
index f008c8a93ab..e3397a53d05 100644
--- a/Mage.Sets/src/mage/cards/s/SpitefulReturned.java
+++ b/Mage.Sets/src/mage/cards/s/SpitefulReturned.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Quercitron
*/
-public class SpitefulReturned extends CardImpl {
+public final class SpitefulReturned extends CardImpl {
public SpitefulReturned(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpitefulShadows.java b/Mage.Sets/src/mage/cards/s/SpitefulShadows.java
index 6ff7d03d669..88339f3a4fb 100644
--- a/Mage.Sets/src/mage/cards/s/SpitefulShadows.java
+++ b/Mage.Sets/src/mage/cards/s/SpitefulShadows.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class SpitefulShadows extends CardImpl {
+public final class SpitefulShadows extends CardImpl {
public SpitefulShadows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpitefulVisions.java b/Mage.Sets/src/mage/cards/s/SpitefulVisions.java
index d0b9579b19a..10630e70d66 100644
--- a/Mage.Sets/src/mage/cards/s/SpitefulVisions.java
+++ b/Mage.Sets/src/mage/cards/s/SpitefulVisions.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class SpitefulVisions extends CardImpl {
+public final class SpitefulVisions extends CardImpl {
public SpitefulVisions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B/R}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/s/Spitemare.java b/Mage.Sets/src/mage/cards/s/Spitemare.java
index c94dc3d457e..11db52611c4 100644
--- a/Mage.Sets/src/mage/cards/s/Spitemare.java
+++ b/Mage.Sets/src/mage/cards/s/Spitemare.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class Spitemare extends CardImpl {
+public final class Spitemare extends CardImpl {
public Spitemare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R/W}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpitfireBastion.java b/Mage.Sets/src/mage/cards/s/SpitfireBastion.java
index 052e259545a..e73ef8e2992 100644
--- a/Mage.Sets/src/mage/cards/s/SpitfireBastion.java
+++ b/Mage.Sets/src/mage/cards/s/SpitfireBastion.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author TheElk801
*/
-public class SpitfireBastion extends CardImpl {
+public final class SpitfireBastion extends CardImpl {
public SpitfireBastion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/SpitfireHandler.java b/Mage.Sets/src/mage/cards/s/SpitfireHandler.java
index 617161203a7..41b67fe1eee 100644
--- a/Mage.Sets/src/mage/cards/s/SpitfireHandler.java
+++ b/Mage.Sets/src/mage/cards/s/SpitfireHandler.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class SpitfireHandler extends CardImpl {
+public final class SpitfireHandler extends CardImpl {
public SpitfireHandler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpittingDrake.java b/Mage.Sets/src/mage/cards/s/SpittingDrake.java
index 10a81a313f4..8e926f42e67 100644
--- a/Mage.Sets/src/mage/cards/s/SpittingDrake.java
+++ b/Mage.Sets/src/mage/cards/s/SpittingDrake.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class SpittingDrake extends CardImpl {
+public final class SpittingDrake extends CardImpl {
public SpittingDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpittingEarth.java b/Mage.Sets/src/mage/cards/s/SpittingEarth.java
index 1e27f8fae89..557b9fcbecc 100644
--- a/Mage.Sets/src/mage/cards/s/SpittingEarth.java
+++ b/Mage.Sets/src/mage/cards/s/SpittingEarth.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SpittingEarth extends CardImpl {
+public final class SpittingEarth extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Mountain you control");
diff --git a/Mage.Sets/src/mage/cards/s/SpittingGourna.java b/Mage.Sets/src/mage/cards/s/SpittingGourna.java
index d0b37567280..ebae6c27054 100644
--- a/Mage.Sets/src/mage/cards/s/SpittingGourna.java
+++ b/Mage.Sets/src/mage/cards/s/SpittingGourna.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SpittingGourna extends CardImpl {
+public final class SpittingGourna extends CardImpl {
public SpittingGourna(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpittingHydra.java b/Mage.Sets/src/mage/cards/s/SpittingHydra.java
index 2d6f4c098e3..516d105d330 100644
--- a/Mage.Sets/src/mage/cards/s/SpittingHydra.java
+++ b/Mage.Sets/src/mage/cards/s/SpittingHydra.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SpittingHydra extends CardImpl {
+public final class SpittingHydra extends CardImpl {
public SpittingHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpittingImage.java b/Mage.Sets/src/mage/cards/s/SpittingImage.java
index b1209264be3..92932faeabd 100644
--- a/Mage.Sets/src/mage/cards/s/SpittingImage.java
+++ b/Mage.Sets/src/mage/cards/s/SpittingImage.java
@@ -48,7 +48,7 @@ import mage.util.CardUtil;
* @author jeffwadsworth
*
*/
-public class SpittingImage extends CardImpl {
+public final class SpittingImage extends CardImpl {
public SpittingImage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G/U}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpittingSliver.java b/Mage.Sets/src/mage/cards/s/SpittingSliver.java
index 68b1d230d48..30af536c80f 100644
--- a/Mage.Sets/src/mage/cards/s/SpittingSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SpittingSliver.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author anonymous
*/
-public class SpittingSliver extends CardImpl {
+public final class SpittingSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SpittingSlug.java b/Mage.Sets/src/mage/cards/s/SpittingSlug.java
index ca9c56ec49f..7ec538e08c9 100644
--- a/Mage.Sets/src/mage/cards/s/SpittingSlug.java
+++ b/Mage.Sets/src/mage/cards/s/SpittingSlug.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class SpittingSlug extends CardImpl {
+public final class SpittingSlug extends CardImpl {
public SpittingSlug(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpittingSpider.java b/Mage.Sets/src/mage/cards/s/SpittingSpider.java
index 867f69d5cf0..3d7ff23c64a 100644
--- a/Mage.Sets/src/mage/cards/s/SpittingSpider.java
+++ b/Mage.Sets/src/mage/cards/s/SpittingSpider.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class SpittingSpider extends CardImpl {
+public final class SpittingSpider extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
static{
diff --git a/Mage.Sets/src/mage/cards/s/SplatterThug.java b/Mage.Sets/src/mage/cards/s/SplatterThug.java
index 1b2bc8eba3e..06a210b0511 100644
--- a/Mage.Sets/src/mage/cards/s/SplatterThug.java
+++ b/Mage.Sets/src/mage/cards/s/SplatterThug.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SplatterThug extends CardImpl {
+public final class SplatterThug extends CardImpl {
public SplatterThug(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SplendidAgony.java b/Mage.Sets/src/mage/cards/s/SplendidAgony.java
index 891af44c281..47c93a8f752 100644
--- a/Mage.Sets/src/mage/cards/s/SplendidAgony.java
+++ b/Mage.Sets/src/mage/cards/s/SplendidAgony.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author fireshoes
*/
-public class SplendidAgony extends CardImpl {
+public final class SplendidAgony extends CardImpl {
public SplendidAgony(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SplendidReclamation.java b/Mage.Sets/src/mage/cards/s/SplendidReclamation.java
index f18d36c4a4e..a462a459065 100644
--- a/Mage.Sets/src/mage/cards/s/SplendidReclamation.java
+++ b/Mage.Sets/src/mage/cards/s/SplendidReclamation.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class SplendidReclamation extends CardImpl {
+public final class SplendidReclamation extends CardImpl {
public SplendidReclamation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Splinter.java b/Mage.Sets/src/mage/cards/s/Splinter.java
index 7db5aeff186..3c8ca8aedee 100644
--- a/Mage.Sets/src/mage/cards/s/Splinter.java
+++ b/Mage.Sets/src/mage/cards/s/Splinter.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class Splinter extends CardImpl {
+public final class Splinter extends CardImpl {
private static final FilterPermanent filter = new FilterArtifactPermanent();
public Splinter(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/s/SplinterTwin.java b/Mage.Sets/src/mage/cards/s/SplinterTwin.java
index db8d537e08a..ffe937c3438 100644
--- a/Mage.Sets/src/mage/cards/s/SplinterTwin.java
+++ b/Mage.Sets/src/mage/cards/s/SplinterTwin.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class SplinterTwin extends CardImpl {
+public final class SplinterTwin extends CardImpl {
public SplinterTwin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Splinterfright.java b/Mage.Sets/src/mage/cards/s/Splinterfright.java
index 984d649eb5f..5c0c81697d9 100644
--- a/Mage.Sets/src/mage/cards/s/Splinterfright.java
+++ b/Mage.Sets/src/mage/cards/s/Splinterfright.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author North
*/
-public class Splinterfright extends CardImpl {
+public final class Splinterfright extends CardImpl {
public Splinterfright(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SplitDecision.java b/Mage.Sets/src/mage/cards/s/SplitDecision.java
index 8482c141f3b..0dca671773c 100644
--- a/Mage.Sets/src/mage/cards/s/SplitDecision.java
+++ b/Mage.Sets/src/mage/cards/s/SplitDecision.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class SplitDecision extends CardImpl {
+public final class SplitDecision extends CardImpl {
public SplitDecision(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SplitTailMiko.java b/Mage.Sets/src/mage/cards/s/SplitTailMiko.java
index 258402dd14c..d1ade514805 100644
--- a/Mage.Sets/src/mage/cards/s/SplitTailMiko.java
+++ b/Mage.Sets/src/mage/cards/s/SplitTailMiko.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class SplitTailMiko extends CardImpl {
+public final class SplitTailMiko extends CardImpl {
public SplitTailMiko(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SplittingHeadache.java b/Mage.Sets/src/mage/cards/s/SplittingHeadache.java
index 0791a0ab0c4..de1af2f7c90 100644
--- a/Mage.Sets/src/mage/cards/s/SplittingHeadache.java
+++ b/Mage.Sets/src/mage/cards/s/SplittingHeadache.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth
*/
-public class SplittingHeadache extends CardImpl {
+public final class SplittingHeadache extends CardImpl {
public SplittingHeadache(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SplittingSlime.java b/Mage.Sets/src/mage/cards/s/SplittingSlime.java
index a41bb37898c..b2e999eb05f 100644
--- a/Mage.Sets/src/mage/cards/s/SplittingSlime.java
+++ b/Mage.Sets/src/mage/cards/s/SplittingSlime.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SplittingSlime extends CardImpl {
+public final class SplittingSlime extends CardImpl {
public SplittingSlime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpoilsOfBlood.java b/Mage.Sets/src/mage/cards/s/SpoilsOfBlood.java
index 364055548aa..6df08157ff0 100644
--- a/Mage.Sets/src/mage/cards/s/SpoilsOfBlood.java
+++ b/Mage.Sets/src/mage/cards/s/SpoilsOfBlood.java
@@ -50,7 +50,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class SpoilsOfBlood extends CardImpl {
+public final class SpoilsOfBlood extends CardImpl {
public SpoilsOfBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpoilsOfEvil.java b/Mage.Sets/src/mage/cards/s/SpoilsOfEvil.java
index c68a1f31e55..bf4c45ac3c4 100644
--- a/Mage.Sets/src/mage/cards/s/SpoilsOfEvil.java
+++ b/Mage.Sets/src/mage/cards/s/SpoilsOfEvil.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author Blinke
*/
-public class SpoilsOfEvil extends CardImpl {
+public final class SpoilsOfEvil extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact or creature card in target opponents graveyard");
static {
filter.add(Predicates.or(
diff --git a/Mage.Sets/src/mage/cards/s/SpoilsOfTheVault.java b/Mage.Sets/src/mage/cards/s/SpoilsOfTheVault.java
index 624c5cea3ef..dd95b3099ce 100644
--- a/Mage.Sets/src/mage/cards/s/SpoilsOfTheVault.java
+++ b/Mage.Sets/src/mage/cards/s/SpoilsOfTheVault.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class SpoilsOfTheVault extends CardImpl {
+public final class SpoilsOfTheVault extends CardImpl {
public SpoilsOfTheVault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpoilsOfVictory.java b/Mage.Sets/src/mage/cards/s/SpoilsOfVictory.java
index 0d1f7b53635..091699dbffa 100644
--- a/Mage.Sets/src/mage/cards/s/SpoilsOfVictory.java
+++ b/Mage.Sets/src/mage/cards/s/SpoilsOfVictory.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class SpoilsOfVictory extends CardImpl {
+public final class SpoilsOfVictory extends CardImpl {
private static final FilterCard filter = new FilterCard("Plains, Island, Swamp, Mountain, or Forest card");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SpontaneousArtist.java b/Mage.Sets/src/mage/cards/s/SpontaneousArtist.java
index ebe53a10fab..6d98592e522 100644
--- a/Mage.Sets/src/mage/cards/s/SpontaneousArtist.java
+++ b/Mage.Sets/src/mage/cards/s/SpontaneousArtist.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SpontaneousArtist extends CardImpl {
+public final class SpontaneousArtist extends CardImpl {
public SpontaneousArtist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpontaneousCombustion.java b/Mage.Sets/src/mage/cards/s/SpontaneousCombustion.java
index 577a50bc81a..685e0e79c32 100644
--- a/Mage.Sets/src/mage/cards/s/SpontaneousCombustion.java
+++ b/Mage.Sets/src/mage/cards/s/SpontaneousCombustion.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class SpontaneousCombustion extends CardImpl {
+public final class SpontaneousCombustion extends CardImpl {
public SpontaneousCombustion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpontaneousGeneration.java b/Mage.Sets/src/mage/cards/s/SpontaneousGeneration.java
index 2be85aff45c..0492038683a 100644
--- a/Mage.Sets/src/mage/cards/s/SpontaneousGeneration.java
+++ b/Mage.Sets/src/mage/cards/s/SpontaneousGeneration.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author fireshoes
*/
-public class SpontaneousGeneration extends CardImpl {
+public final class SpontaneousGeneration extends CardImpl {
public SpontaneousGeneration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpontaneousMutation.java b/Mage.Sets/src/mage/cards/s/SpontaneousMutation.java
index db030f76a66..742b1dbddb7 100644
--- a/Mage.Sets/src/mage/cards/s/SpontaneousMutation.java
+++ b/Mage.Sets/src/mage/cards/s/SpontaneousMutation.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SpontaneousMutation extends CardImpl {
+public final class SpontaneousMutation extends CardImpl {
public SpontaneousMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SporeBurst.java b/Mage.Sets/src/mage/cards/s/SporeBurst.java
index b3da94691f7..3c832d8753c 100644
--- a/Mage.Sets/src/mage/cards/s/SporeBurst.java
+++ b/Mage.Sets/src/mage/cards/s/SporeBurst.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author North
*/
-public class SporeBurst extends CardImpl {
+public final class SporeBurst extends CardImpl {
public SporeBurst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SporeCloud.java b/Mage.Sets/src/mage/cards/s/SporeCloud.java
index 38dbaaf8c79..3be707d77a3 100644
--- a/Mage.Sets/src/mage/cards/s/SporeCloud.java
+++ b/Mage.Sets/src/mage/cards/s/SporeCloud.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author L_J
*/
-public class SporeCloud extends CardImpl {
+public final class SporeCloud extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blocking creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SporeFlower.java b/Mage.Sets/src/mage/cards/s/SporeFlower.java
index b0625d1804c..03c7c12b582 100644
--- a/Mage.Sets/src/mage/cards/s/SporeFlower.java
+++ b/Mage.Sets/src/mage/cards/s/SporeFlower.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class SporeFlower extends CardImpl {
+public final class SporeFlower extends CardImpl {
public SporeFlower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SporeFrog.java b/Mage.Sets/src/mage/cards/s/SporeFrog.java
index f911d8c7a34..1fc5ee07261 100644
--- a/Mage.Sets/src/mage/cards/s/SporeFrog.java
+++ b/Mage.Sets/src/mage/cards/s/SporeFrog.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class SporeFrog extends CardImpl {
+public final class SporeFrog extends CardImpl {
public SporeFrog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SporeSwarm.java b/Mage.Sets/src/mage/cards/s/SporeSwarm.java
index 4000428b150..eccc5fe6572 100644
--- a/Mage.Sets/src/mage/cards/s/SporeSwarm.java
+++ b/Mage.Sets/src/mage/cards/s/SporeSwarm.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author TheElk801
*/
-public class SporeSwarm extends CardImpl {
+public final class SporeSwarm extends CardImpl {
public SporeSwarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SporebackTroll.java b/Mage.Sets/src/mage/cards/s/SporebackTroll.java
index 1a5a2cff9cd..d3b47bd22eb 100644
--- a/Mage.Sets/src/mage/cards/s/SporebackTroll.java
+++ b/Mage.Sets/src/mage/cards/s/SporebackTroll.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SporebackTroll extends CardImpl {
+public final class SporebackTroll extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SporecapSpider.java b/Mage.Sets/src/mage/cards/s/SporecapSpider.java
index a521c847bfa..86ab1d9a536 100644
--- a/Mage.Sets/src/mage/cards/s/SporecapSpider.java
+++ b/Mage.Sets/src/mage/cards/s/SporecapSpider.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SporecapSpider extends CardImpl {
+public final class SporecapSpider extends CardImpl {
public SporecapSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SporecrownThallid.java b/Mage.Sets/src/mage/cards/s/SporecrownThallid.java
index ff0c27c8b01..62f34a4dce8 100644
--- a/Mage.Sets/src/mage/cards/s/SporecrownThallid.java
+++ b/Mage.Sets/src/mage/cards/s/SporecrownThallid.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class SporecrownThallid extends CardImpl {
+public final class SporecrownThallid extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each other creature you control that's a Fungus or Saproling");
diff --git a/Mage.Sets/src/mage/cards/s/Sporemound.java b/Mage.Sets/src/mage/cards/s/Sporemound.java
index 6d54f52cc5c..657fa0623d5 100644
--- a/Mage.Sets/src/mage/cards/s/Sporemound.java
+++ b/Mage.Sets/src/mage/cards/s/Sporemound.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author LevelX2
*/
-public class Sporemound extends CardImpl {
+public final class Sporemound extends CardImpl {
public Sporemound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SporesowerThallid.java b/Mage.Sets/src/mage/cards/s/SporesowerThallid.java
index f45c1a5d782..bc18eb81d9e 100644
--- a/Mage.Sets/src/mage/cards/s/SporesowerThallid.java
+++ b/Mage.Sets/src/mage/cards/s/SporesowerThallid.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author LevelX2
*/
-public class SporesowerThallid extends CardImpl {
+public final class SporesowerThallid extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Fungus you control");
static {
diff --git a/Mage.Sets/src/mage/cards/s/Sporogenesis.java b/Mage.Sets/src/mage/cards/s/Sporogenesis.java
index 7d5f4f89ff6..6ca11a02b9b 100644
--- a/Mage.Sets/src/mage/cards/s/Sporogenesis.java
+++ b/Mage.Sets/src/mage/cards/s/Sporogenesis.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class Sporogenesis extends CardImpl {
+public final class Sporogenesis extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/s/SporolothAncient.java b/Mage.Sets/src/mage/cards/s/SporolothAncient.java
index 55b14907b29..2a71e2525f3 100644
--- a/Mage.Sets/src/mage/cards/s/SporolothAncient.java
+++ b/Mage.Sets/src/mage/cards/s/SporolothAncient.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author LevelX2
*/
-public class SporolothAncient extends CardImpl {
+public final class SporolothAncient extends CardImpl {
public SporolothAncient(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpottedGriffin.java b/Mage.Sets/src/mage/cards/s/SpottedGriffin.java
index a3d3be3ab6b..1c79d695fbe 100644
--- a/Mage.Sets/src/mage/cards/s/SpottedGriffin.java
+++ b/Mage.Sets/src/mage/cards/s/SpottedGriffin.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SpottedGriffin extends CardImpl {
+public final class SpottedGriffin extends CardImpl {
public SpottedGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpreadTheSickness.java b/Mage.Sets/src/mage/cards/s/SpreadTheSickness.java
index fd183903e6c..127f8a6560b 100644
--- a/Mage.Sets/src/mage/cards/s/SpreadTheSickness.java
+++ b/Mage.Sets/src/mage/cards/s/SpreadTheSickness.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SpreadTheSickness extends CardImpl {
+public final class SpreadTheSickness extends CardImpl {
public SpreadTheSickness (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpreadingAlgae.java b/Mage.Sets/src/mage/cards/s/SpreadingAlgae.java
index 6dc6c1437f6..b8d6223b8a9 100644
--- a/Mage.Sets/src/mage/cards/s/SpreadingAlgae.java
+++ b/Mage.Sets/src/mage/cards/s/SpreadingAlgae.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class SpreadingAlgae extends CardImpl {
+public final class SpreadingAlgae extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Swamp");
diff --git a/Mage.Sets/src/mage/cards/s/SpreadingFlames.java b/Mage.Sets/src/mage/cards/s/SpreadingFlames.java
index 3a28af6f982..25344cf2fef 100644
--- a/Mage.Sets/src/mage/cards/s/SpreadingFlames.java
+++ b/Mage.Sets/src/mage/cards/s/SpreadingFlames.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LevelX2
*/
-public class SpreadingFlames extends CardImpl {
+public final class SpreadingFlames extends CardImpl {
public SpreadingFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpreadingPlague.java b/Mage.Sets/src/mage/cards/s/SpreadingPlague.java
index 23d0f587a91..69af9c8e581 100644
--- a/Mage.Sets/src/mage/cards/s/SpreadingPlague.java
+++ b/Mage.Sets/src/mage/cards/s/SpreadingPlague.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class SpreadingPlague extends CardImpl {
+public final class SpreadingPlague extends CardImpl {
private static final String RULE = "Whenever a creature enters the battlefield, destroy all other creatures that share a color with it. They can't be regenerated.";
diff --git a/Mage.Sets/src/mage/cards/s/SpreadingRot.java b/Mage.Sets/src/mage/cards/s/SpreadingRot.java
index d1781ff1139..90c0c81696e 100644
--- a/Mage.Sets/src/mage/cards/s/SpreadingRot.java
+++ b/Mage.Sets/src/mage/cards/s/SpreadingRot.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author TheElk801
*/
-public class SpreadingRot extends CardImpl {
+public final class SpreadingRot extends CardImpl {
public SpreadingRot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SpreadingSeas.java b/Mage.Sets/src/mage/cards/s/SpreadingSeas.java
index e49b92782c0..5fb18f3e26e 100644
--- a/Mage.Sets/src/mage/cards/s/SpreadingSeas.java
+++ b/Mage.Sets/src/mage/cards/s/SpreadingSeas.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SpreadingSeas extends CardImpl {
+public final class SpreadingSeas extends CardImpl {
public SpreadingSeas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SpringCleaning.java b/Mage.Sets/src/mage/cards/s/SpringCleaning.java
index 16c926ad4bd..062f6c991f5 100644
--- a/Mage.Sets/src/mage/cards/s/SpringCleaning.java
+++ b/Mage.Sets/src/mage/cards/s/SpringCleaning.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Styxo
*/
-public class SpringCleaning extends CardImpl {
+public final class SpringCleaning extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("enchantments your opponents control");
diff --git a/Mage.Sets/src/mage/cards/s/SpringMind.java b/Mage.Sets/src/mage/cards/s/SpringMind.java
index 52512b3167e..00da62c4636 100644
--- a/Mage.Sets/src/mage/cards/s/SpringMind.java
+++ b/Mage.Sets/src/mage/cards/s/SpringMind.java
@@ -43,14 +43,14 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class SpringMind extends SplitCard {
+public final class SpringMind extends SplitCard {
public SpringMind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.INSTANT}, "{2}{G}", "{4}{U}{U}", SpellAbilityType.SPLIT_AFTERMATH);
// Spring
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- getLeftHalfCard().getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true));
+ getLeftHalfCard().getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true));
// Mind
// Aftermath
diff --git a/Mage.Sets/src/mage/cards/s/SpringOfEternalPeace.java b/Mage.Sets/src/mage/cards/s/SpringOfEternalPeace.java
index 4d8fb77b52a..3708725732b 100644
--- a/Mage.Sets/src/mage/cards/s/SpringOfEternalPeace.java
+++ b/Mage.Sets/src/mage/cards/s/SpringOfEternalPeace.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LoneFox
*/
-public class SpringOfEternalPeace extends CardImpl {
+public final class SpringOfEternalPeace extends CardImpl {
public SpringOfEternalPeace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpringingTiger.java b/Mage.Sets/src/mage/cards/s/SpringingTiger.java
index c9824c0daae..42968e221cb 100644
--- a/Mage.Sets/src/mage/cards/s/SpringingTiger.java
+++ b/Mage.Sets/src/mage/cards/s/SpringingTiger.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SpringingTiger extends CardImpl {
+public final class SpringingTiger extends CardImpl {
public SpringingTiger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SpringjackKnight.java b/Mage.Sets/src/mage/cards/s/SpringjackKnight.java
index 32f754cfcd8..3bf8fd81695 100644
--- a/Mage.Sets/src/mage/cards/s/SpringjackKnight.java
+++ b/Mage.Sets/src/mage/cards/s/SpringjackKnight.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class SpringjackKnight extends CardImpl {
+public final class SpringjackKnight extends CardImpl {
public SpringjackKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpringjackPasture.java b/Mage.Sets/src/mage/cards/s/SpringjackPasture.java
index 88f6b9b6fb4..0ae2c6d2a8a 100644
--- a/Mage.Sets/src/mage/cards/s/SpringjackPasture.java
+++ b/Mage.Sets/src/mage/cards/s/SpringjackPasture.java
@@ -53,7 +53,7 @@ import mage.game.permanent.token.GoatToken;
* @author jeffwadsworth
*
*/
-public class SpringjackPasture extends CardImpl {
+public final class SpringjackPasture extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goats");
diff --git a/Mage.Sets/src/mage/cards/s/SpringjackShepherd.java b/Mage.Sets/src/mage/cards/s/SpringjackShepherd.java
index af8d12aac7d..3d1c8588a9d 100644
--- a/Mage.Sets/src/mage/cards/s/SpringjackShepherd.java
+++ b/Mage.Sets/src/mage/cards/s/SpringjackShepherd.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.GoatToken;
* @author jeffwadsworth
*
*/
-public class SpringjackShepherd extends CardImpl {
+public final class SpringjackShepherd extends CardImpl {
public SpringjackShepherd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SpringleafDrum.java b/Mage.Sets/src/mage/cards/s/SpringleafDrum.java
index 56254d44ba0..fcda1fd9a07 100644
--- a/Mage.Sets/src/mage/cards/s/SpringleafDrum.java
+++ b/Mage.Sets/src/mage/cards/s/SpringleafDrum.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class SpringleafDrum extends CardImpl {
+public final class SpringleafDrum extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SpringsageRitual.java b/Mage.Sets/src/mage/cards/s/SpringsageRitual.java
index a32b24b8892..2d166b491a0 100644
--- a/Mage.Sets/src/mage/cards/s/SpringsageRitual.java
+++ b/Mage.Sets/src/mage/cards/s/SpringsageRitual.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SpringsageRitual extends CardImpl {
+public final class SpringsageRitual extends CardImpl {
public SpringsageRitual(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SprintingWarbrute.java b/Mage.Sets/src/mage/cards/s/SprintingWarbrute.java
index cfae2419efc..fdc98e230cf 100644
--- a/Mage.Sets/src/mage/cards/s/SprintingWarbrute.java
+++ b/Mage.Sets/src/mage/cards/s/SprintingWarbrute.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SprintingWarbrute extends CardImpl {
+public final class SprintingWarbrute extends CardImpl {
public SprintingWarbrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SpriteNoble.java b/Mage.Sets/src/mage/cards/s/SpriteNoble.java
index 121e498b75e..da3dbe47d8d 100644
--- a/Mage.Sets/src/mage/cards/s/SpriteNoble.java
+++ b/Mage.Sets/src/mage/cards/s/SpriteNoble.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
* @author LoneFox
*/
-public class SpriteNoble extends CardImpl {
+public final class SpriteNoble extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control with flying");
diff --git a/Mage.Sets/src/mage/cards/s/Sprout.java b/Mage.Sets/src/mage/cards/s/Sprout.java
index f86134d0078..c904d74306a 100644
--- a/Mage.Sets/src/mage/cards/s/Sprout.java
+++ b/Mage.Sets/src/mage/cards/s/Sprout.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author LoneFox
*/
-public class Sprout extends CardImpl {
+public final class Sprout extends CardImpl {
public Sprout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SproutSwarm.java b/Mage.Sets/src/mage/cards/s/SproutSwarm.java
index b8778c6158d..2ddb9f81c8d 100644
--- a/Mage.Sets/src/mage/cards/s/SproutSwarm.java
+++ b/Mage.Sets/src/mage/cards/s/SproutSwarm.java
@@ -40,7 +40,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author fireshoes
*/
-public class SproutSwarm extends CardImpl {
+public final class SproutSwarm extends CardImpl {
public SproutSwarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SproutingPhytohydra.java b/Mage.Sets/src/mage/cards/s/SproutingPhytohydra.java
index b0deef01b2f..5fc9f1fedcc 100644
--- a/Mage.Sets/src/mage/cards/s/SproutingPhytohydra.java
+++ b/Mage.Sets/src/mage/cards/s/SproutingPhytohydra.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author markedagain
*/
-public class SproutingPhytohydra extends CardImpl {
+public final class SproutingPhytohydra extends CardImpl {
public SproutingPhytohydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SproutingThrinax.java b/Mage.Sets/src/mage/cards/s/SproutingThrinax.java
index 83d707c70ec..1965e883f1d 100644
--- a/Mage.Sets/src/mage/cards/s/SproutingThrinax.java
+++ b/Mage.Sets/src/mage/cards/s/SproutingThrinax.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SproutingThrinax extends CardImpl {
+public final class SproutingThrinax extends CardImpl {
private static SaprolingToken saprolingToken = new SaprolingToken();
diff --git a/Mage.Sets/src/mage/cards/s/SproutingVines.java b/Mage.Sets/src/mage/cards/s/SproutingVines.java
index 47008a8758a..9c9a3e6abea 100644
--- a/Mage.Sets/src/mage/cards/s/SproutingVines.java
+++ b/Mage.Sets/src/mage/cards/s/SproutingVines.java
@@ -41,14 +41,14 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class SproutingVines extends CardImpl {
+public final class SproutingVines extends CardImpl {
public SproutingVines(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
// Search your library for a basic land card, reveal that card, and put it into your hand. Then shuffle your library.
- this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true));
// Storm
this.addAbility(new StormAbility());
}
diff --git a/Mage.Sets/src/mage/cards/s/SpurGrappler.java b/Mage.Sets/src/mage/cards/s/SpurGrappler.java
index 3cc931b2b47..e5514183ea8 100644
--- a/Mage.Sets/src/mage/cards/s/SpurGrappler.java
+++ b/Mage.Sets/src/mage/cards/s/SpurGrappler.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LoneFox
*/
-public class SpurGrappler extends CardImpl {
+public final class SpurGrappler extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SpurnmageAdvocate.java b/Mage.Sets/src/mage/cards/s/SpurnmageAdvocate.java
index 86a2f575d65..b548e23133d 100644
--- a/Mage.Sets/src/mage/cards/s/SpurnmageAdvocate.java
+++ b/Mage.Sets/src/mage/cards/s/SpurnmageAdvocate.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class SpurnmageAdvocate extends CardImpl {
+public final class SpurnmageAdvocate extends CardImpl {
private static final FilterCard filter = new FilterCard("two target cards from an opponent's graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/SpurredWolverine.java b/Mage.Sets/src/mage/cards/s/SpurredWolverine.java
index 2dd341dc655..6105ab28bc5 100644
--- a/Mage.Sets/src/mage/cards/s/SpurredWolverine.java
+++ b/Mage.Sets/src/mage/cards/s/SpurredWolverine.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SpurredWolverine extends CardImpl {
+public final class SpurredWolverine extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Beasts you control");
diff --git a/Mage.Sets/src/mage/cards/s/SpyNetwork.java b/Mage.Sets/src/mage/cards/s/SpyNetwork.java
index cd4e8e299ea..516eb6d67ae 100644
--- a/Mage.Sets/src/mage/cards/s/SpyNetwork.java
+++ b/Mage.Sets/src/mage/cards/s/SpyNetwork.java
@@ -52,10 +52,10 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class SpyNetwork extends CardImpl {
+public final class SpyNetwork extends CardImpl {
public SpyNetwork(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
// Look at target player's hand, the top card of that player's library, and any face-down creatures he or she controls. Look at the top four cards of your library, then put them back in any order.
this.getSpellAbility().addEffect(new SpyNetworkLookAtTargetPlayerHandEffect());
@@ -133,7 +133,7 @@ class SpyNetworkFaceDownEffect extends OneShotEffect {
filter.add(new ControllerIdPredicate(player.getId()));
TargetCreaturePermanent target = new TargetCreaturePermanent(1, 1, filter, true);
if (target.canChoose(source.getSourceId(), controller.getId(), game)) {
- while (player != null && controller.chooseUse(outcome, "Look at a face down creature controlled by " + player.getLogName() + "?", source, game)) {
+ while (controller.chooseUse(outcome, "Look at a face down creature controlled by " + player.getLogName() + "?", source, game)) {
target.clearChosen();
while (!target.isChosen() && target.canChoose(controller.getId(), game) && controller.canRespond()) {
controller.chooseTarget(outcome, target, source, game);
@@ -145,9 +145,7 @@ class SpyNetworkFaceDownEffect extends OneShotEffect {
Cards cards = new CardsImpl();
cards.add(copyFaceDown);
controller.lookAtCards("face down card - " + mageObject.getName(), cards, game);
- if (player != null) {
- game.informPlayers(controller.getLogName() + " looks at a face down creature controlled by " + player.getLogName());
- }
+ game.informPlayers(controller.getLogName() + " looks at a face down creature controlled by " + player.getLogName());
}
}
}
diff --git a/Mage.Sets/src/mage/cards/s/SquadronHawk.java b/Mage.Sets/src/mage/cards/s/SquadronHawk.java
index 75677f523da..e1a1e987340 100644
--- a/Mage.Sets/src/mage/cards/s/SquadronHawk.java
+++ b/Mage.Sets/src/mage/cards/s/SquadronHawk.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SquadronHawk extends CardImpl {
+public final class SquadronHawk extends CardImpl {
private static final FilterCard filter = new FilterCard("cards named Squadron Hawk");
diff --git a/Mage.Sets/src/mage/cards/s/Squall.java b/Mage.Sets/src/mage/cards/s/Squall.java
index d9e6b2229ed..e9278716950 100644
--- a/Mage.Sets/src/mage/cards/s/Squall.java
+++ b/Mage.Sets/src/mage/cards/s/Squall.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
* @author LoneFox
*/
-public class Squall extends CardImpl {
+public final class Squall extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/SquallDrifter.java b/Mage.Sets/src/mage/cards/s/SquallDrifter.java
index 8d0dc088b5e..3ef1de17faa 100644
--- a/Mage.Sets/src/mage/cards/s/SquallDrifter.java
+++ b/Mage.Sets/src/mage/cards/s/SquallDrifter.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SquallDrifter extends CardImpl {
+public final class SquallDrifter extends CardImpl {
public SquallDrifter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SquallLine.java b/Mage.Sets/src/mage/cards/s/SquallLine.java
index 04678a21511..5268c244f15 100644
--- a/Mage.Sets/src/mage/cards/s/SquallLine.java
+++ b/Mage.Sets/src/mage/cards/s/SquallLine.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LoneFox
*/
-public class SquallLine extends CardImpl {
+public final class SquallLine extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/Squallmonger.java b/Mage.Sets/src/mage/cards/s/Squallmonger.java
index 35ba45e1bf6..3e07f9b3630 100644
--- a/Mage.Sets/src/mage/cards/s/Squallmonger.java
+++ b/Mage.Sets/src/mage/cards/s/Squallmonger.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author fireshoes
*/
-public class Squallmonger extends CardImpl {
+public final class Squallmonger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/SquanderedResources.java b/Mage.Sets/src/mage/cards/s/SquanderedResources.java
index 1bb3ae6e09b..5d34a46c5e2 100644
--- a/Mage.Sets/src/mage/cards/s/SquanderedResources.java
+++ b/Mage.Sets/src/mage/cards/s/SquanderedResources.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class SquanderedResources extends CardImpl {
+public final class SquanderedResources extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
diff --git a/Mage.Sets/src/mage/cards/s/SqueakingPieGrubfellows.java b/Mage.Sets/src/mage/cards/s/SqueakingPieGrubfellows.java
index ab1bb7af2ba..9a565666b7a 100644
--- a/Mage.Sets/src/mage/cards/s/SqueakingPieGrubfellows.java
+++ b/Mage.Sets/src/mage/cards/s/SqueakingPieGrubfellows.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class SqueakingPieGrubfellows extends CardImpl {
+public final class SqueakingPieGrubfellows extends CardImpl {
public SqueakingPieGrubfellows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SqueakingPieSneak.java b/Mage.Sets/src/mage/cards/s/SqueakingPieSneak.java
index 1a616cc8d70..f42d630f95f 100644
--- a/Mage.Sets/src/mage/cards/s/SqueakingPieSneak.java
+++ b/Mage.Sets/src/mage/cards/s/SqueakingPieSneak.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class SqueakingPieSneak extends CardImpl {
+public final class SqueakingPieSneak extends CardImpl {
private static final FilterCard filter = new FilterCard("a Goblin card from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SquealingDevil.java b/Mage.Sets/src/mage/cards/s/SquealingDevil.java
index eb94a17919f..c65d11a7d1a 100644
--- a/Mage.Sets/src/mage/cards/s/SquealingDevil.java
+++ b/Mage.Sets/src/mage/cards/s/SquealingDevil.java
@@ -58,7 +58,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author TheElk801
*/
-public class SquealingDevil extends CardImpl {
+public final class SquealingDevil extends CardImpl {
public SquealingDevil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SqueeGoblinNabob.java b/Mage.Sets/src/mage/cards/s/SqueeGoblinNabob.java
index 2694d10487c..f26622110cf 100644
--- a/Mage.Sets/src/mage/cards/s/SqueeGoblinNabob.java
+++ b/Mage.Sets/src/mage/cards/s/SqueeGoblinNabob.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SqueeGoblinNabob extends CardImpl {
+public final class SqueeGoblinNabob extends CardImpl {
public SqueeGoblinNabob(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SqueeTheImmortal.java b/Mage.Sets/src/mage/cards/s/SqueeTheImmortal.java
index eb51502b31d..d11462301ce 100644
--- a/Mage.Sets/src/mage/cards/s/SqueeTheImmortal.java
+++ b/Mage.Sets/src/mage/cards/s/SqueeTheImmortal.java
@@ -48,7 +48,7 @@ import mage.game.Game;
*
* @author TheElk801
*/
-public class SqueeTheImmortal extends CardImpl {
+public final class SqueeTheImmortal extends CardImpl {
public SqueeTheImmortal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SqueesEmbrace.java b/Mage.Sets/src/mage/cards/s/SqueesEmbrace.java
index 21d269ed362..3e1fb742ae9 100644
--- a/Mage.Sets/src/mage/cards/s/SqueesEmbrace.java
+++ b/Mage.Sets/src/mage/cards/s/SqueesEmbrace.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SqueesEmbrace extends CardImpl {
+public final class SqueesEmbrace extends CardImpl {
public SqueesEmbrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SqueesRevenge.java b/Mage.Sets/src/mage/cards/s/SqueesRevenge.java
index b360c55ac5e..0b788ccf133 100644
--- a/Mage.Sets/src/mage/cards/s/SqueesRevenge.java
+++ b/Mage.Sets/src/mage/cards/s/SqueesRevenge.java
@@ -41,7 +41,7 @@ import mage.players.Player;
*
* @author LoneFox
*/
-public class SqueesRevenge extends CardImpl {
+public final class SqueesRevenge extends CardImpl {
public SqueesRevenge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SqueesToy.java b/Mage.Sets/src/mage/cards/s/SqueesToy.java
index 594f80e7806..42771ed8a99 100644
--- a/Mage.Sets/src/mage/cards/s/SqueesToy.java
+++ b/Mage.Sets/src/mage/cards/s/SqueesToy.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SqueesToy extends CardImpl {
+public final class SqueesToy extends CardImpl {
public SqueesToy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/Squeeze.java b/Mage.Sets/src/mage/cards/s/Squeeze.java
index 8557095ce85..6b9ccd27a64 100644
--- a/Mage.Sets/src/mage/cards/s/Squeeze.java
+++ b/Mage.Sets/src/mage/cards/s/Squeeze.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class Squeeze extends CardImpl {
+public final class Squeeze extends CardImpl {
private static final FilterCard filter = new FilterCard("Sorcery spells");
diff --git a/Mage.Sets/src/mage/cards/s/Squelch.java b/Mage.Sets/src/mage/cards/s/Squelch.java
index 0872b3ea738..8038617a0bd 100644
--- a/Mage.Sets/src/mage/cards/s/Squelch.java
+++ b/Mage.Sets/src/mage/cards/s/Squelch.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetActivatedAbility;
*
* @author LevelX2
*/
-public class Squelch extends CardImpl {
+public final class Squelch extends CardImpl {
public Squelch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SquelchingLeeches.java b/Mage.Sets/src/mage/cards/s/SquelchingLeeches.java
index 1dcf89828b3..0bdb5c87005 100644
--- a/Mage.Sets/src/mage/cards/s/SquelchingLeeches.java
+++ b/Mage.Sets/src/mage/cards/s/SquelchingLeeches.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class SquelchingLeeches extends CardImpl {
+public final class SquelchingLeeches extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Swamps you control");
diff --git a/Mage.Sets/src/mage/cards/s/Squire.java b/Mage.Sets/src/mage/cards/s/Squire.java
index f3c09847275..0c2a2665038 100644
--- a/Mage.Sets/src/mage/cards/s/Squire.java
+++ b/Mage.Sets/src/mage/cards/s/Squire.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Squire extends CardImpl {
+public final class Squire extends CardImpl {
public Squire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SquiresDevotion.java b/Mage.Sets/src/mage/cards/s/SquiresDevotion.java
index f974dd5f2b7..a75019f12cd 100644
--- a/Mage.Sets/src/mage/cards/s/SquiresDevotion.java
+++ b/Mage.Sets/src/mage/cards/s/SquiresDevotion.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SquiresDevotion extends CardImpl {
+public final class SquiresDevotion extends CardImpl {
public SquiresDevotion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SquirmingMass.java b/Mage.Sets/src/mage/cards/s/SquirmingMass.java
index d6044bd8605..759d3425870 100644
--- a/Mage.Sets/src/mage/cards/s/SquirmingMass.java
+++ b/Mage.Sets/src/mage/cards/s/SquirmingMass.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SquirmingMass extends CardImpl {
+public final class SquirmingMass extends CardImpl {
public SquirmingMass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SquirrelMob.java b/Mage.Sets/src/mage/cards/s/SquirrelMob.java
index 411bac04092..cf2ef6bc841 100644
--- a/Mage.Sets/src/mage/cards/s/SquirrelMob.java
+++ b/Mage.Sets/src/mage/cards/s/SquirrelMob.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.PermanentIdPredicate;
*
* @author LevelX2
*/
-public class SquirrelMob extends CardImpl {
+public final class SquirrelMob extends CardImpl {
public SquirrelMob(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SquirrelNest.java b/Mage.Sets/src/mage/cards/s/SquirrelNest.java
index 7adbf5da43b..761d2bb2ae5 100644
--- a/Mage.Sets/src/mage/cards/s/SquirrelNest.java
+++ b/Mage.Sets/src/mage/cards/s/SquirrelNest.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author emerald000
*/
-public class SquirrelNest extends CardImpl {
+public final class SquirrelNest extends CardImpl {
public SquirrelNest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SquirrelPoweredScheme.java b/Mage.Sets/src/mage/cards/s/SquirrelPoweredScheme.java
index 1376c52e863..656775b54e6 100644
--- a/Mage.Sets/src/mage/cards/s/SquirrelPoweredScheme.java
+++ b/Mage.Sets/src/mage/cards/s/SquirrelPoweredScheme.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent;
*
* @author spjspj
*/
-public class SquirrelPoweredScheme extends CardImpl {
+public final class SquirrelPoweredScheme extends CardImpl {
public SquirrelPoweredScheme(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SquirrelWrangler.java b/Mage.Sets/src/mage/cards/s/SquirrelWrangler.java
index d3a17d1a39d..466f234b3cb 100644
--- a/Mage.Sets/src/mage/cards/s/SquirrelWrangler.java
+++ b/Mage.Sets/src/mage/cards/s/SquirrelWrangler.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class SquirrelWrangler extends CardImpl {
+public final class SquirrelWrangler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SQUIRREL, "Squirrel creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SramSeniorEdificer.java b/Mage.Sets/src/mage/cards/s/SramSeniorEdificer.java
index 6425fa1d6b1..c4f045b9b17 100644
--- a/Mage.Sets/src/mage/cards/s/SramSeniorEdificer.java
+++ b/Mage.Sets/src/mage/cards/s/SramSeniorEdificer.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class SramSeniorEdificer extends CardImpl {
+public final class SramSeniorEdificer extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an Aura, Equipment, or Vehicle spell");
diff --git a/Mage.Sets/src/mage/cards/s/SramsExpertise.java b/Mage.Sets/src/mage/cards/s/SramsExpertise.java
index 2514c424ecf..5323c4a01a8 100644
--- a/Mage.Sets/src/mage/cards/s/SramsExpertise.java
+++ b/Mage.Sets/src/mage/cards/s/SramsExpertise.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.ServoToken;
/**
* @author fireshoes
*/
-public class SramsExpertise extends CardImpl {
+public final class SramsExpertise extends CardImpl {
public SramsExpertise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StabWound.java b/Mage.Sets/src/mage/cards/s/StabWound.java
index b260328ced0..3428c3994b0 100644
--- a/Mage.Sets/src/mage/cards/s/StabWound.java
+++ b/Mage.Sets/src/mage/cards/s/StabWound.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class StabWound extends CardImpl {
+public final class StabWound extends CardImpl {
static final String rule = "At the beginning of the upkeep of enchanted creature's controller, that player loses 2 life";
diff --git a/Mage.Sets/src/mage/cards/s/StabbingPain.java b/Mage.Sets/src/mage/cards/s/StabbingPain.java
index 387072e6c30..7a2f71c192f 100644
--- a/Mage.Sets/src/mage/cards/s/StabbingPain.java
+++ b/Mage.Sets/src/mage/cards/s/StabbingPain.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class StabbingPain extends CardImpl {
+public final class StabbingPain extends CardImpl {
public StabbingPain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StadiumVendors.java b/Mage.Sets/src/mage/cards/s/StadiumVendors.java
new file mode 100644
index 00000000000..daac326cdf1
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/StadiumVendors.java
@@ -0,0 +1,111 @@
+/*
+ * 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.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.mana.AddManaToManaPoolTargetControllerEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.choices.ChoiceColor;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.TargetPlayer;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class StadiumVendors extends CardImpl {
+
+ public StadiumVendors(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
+
+ this.subtype.add(SubType.GOBLIN);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // When Stadium Vendors enters the battlefield, choose a player. That player adds two mana of any one color they choose.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new StadiumVendorsEffect(), false);
+ this.addAbility(ability);
+ }
+
+ public StadiumVendors(final StadiumVendors card) {
+ super(card);
+ }
+
+ @Override
+ public StadiumVendors copy() {
+ return new StadiumVendors(this);
+ }
+}
+
+class StadiumVendorsEffect extends OneShotEffect {
+
+ StadiumVendorsEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "choose a player. That player adds two mana of any one color they choose";
+ }
+
+ StadiumVendorsEffect(final StadiumVendorsEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public StadiumVendorsEffect copy() {
+ return new StadiumVendorsEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getSourceId());
+ if (controller == null) {
+ return false;
+ }
+ TargetPlayer target = new TargetPlayer(1, 1, true);
+ if (!controller.choose(Outcome.Benefit, target, source.getSourceId(), game)) {
+ return false;
+ }
+ Player player = game.getPlayer(target.getFirstTarget());
+ ChoiceColor colorChoice = new ChoiceColor(true);
+ if (player == null || !player.choose(Outcome.Benefit, colorChoice, game)) {
+ return false;
+ }
+ Effect effect = new AddManaToManaPoolTargetControllerEffect(colorChoice.getMana(2), "that player's");
+ effect.setTargetPointer(new FixedTarget(player.getId(), game));
+ return effect.apply(game, source);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/StaffOfDomination.java b/Mage.Sets/src/mage/cards/s/StaffOfDomination.java
index 55188ae838f..b89ce2ea2ea 100644
--- a/Mage.Sets/src/mage/cards/s/StaffOfDomination.java
+++ b/Mage.Sets/src/mage/cards/s/StaffOfDomination.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class StaffOfDomination extends CardImpl {
+public final class StaffOfDomination extends CardImpl {
public StaffOfDomination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/StaffOfNin.java b/Mage.Sets/src/mage/cards/s/StaffOfNin.java
index 63876dd4da8..2f01a506810 100644
--- a/Mage.Sets/src/mage/cards/s/StaffOfNin.java
+++ b/Mage.Sets/src/mage/cards/s/StaffOfNin.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class StaffOfNin extends CardImpl {
+public final class StaffOfNin extends CardImpl {
public StaffOfNin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheAges.java b/Mage.Sets/src/mage/cards/s/StaffOfTheAges.java
index 9d3e1fc25d7..e1689390286 100644
--- a/Mage.Sets/src/mage/cards/s/StaffOfTheAges.java
+++ b/Mage.Sets/src/mage/cards/s/StaffOfTheAges.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author L_J
*/
-public class StaffOfTheAges extends CardImpl {
+public final class StaffOfTheAges extends CardImpl {
public StaffOfTheAges(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java
index c1e6b2eb6cc..f8bb6229189 100644
--- a/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java
+++ b/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class StaffOfTheDeathMagus extends CardImpl {
+public final class StaffOfTheDeathMagus extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a black spell");
private static final FilterLandPermanent filterLand = new FilterLandPermanent("a Swamp");
diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java
index 6f44bdff051..0f944fffec8 100644
--- a/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java
+++ b/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class StaffOfTheFlameMagus extends CardImpl {
+public final class StaffOfTheFlameMagus extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a red spell");
private static final FilterLandPermanent filterLand = new FilterLandPermanent("a Mountain");
diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java
index 35d3e0d08a5..dbff19be3e4 100644
--- a/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java
+++ b/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class StaffOfTheMindMagus extends CardImpl {
+public final class StaffOfTheMindMagus extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a blue spell");
private static final FilterLandPermanent filterLand = new FilterLandPermanent("an Island");
diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java
index 9c6666271c8..bd34d4fc965 100644
--- a/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java
+++ b/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class StaffOfTheSunMagus extends CardImpl {
+public final class StaffOfTheSunMagus extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a white spell");
private static final FilterLandPermanent filterLand = new FilterLandPermanent("a Plains");
diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.java
index 25776d465b6..740190d7ff7 100644
--- a/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.java
+++ b/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class StaffOfTheWildMagus extends CardImpl {
+public final class StaffOfTheWildMagus extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("a green spell");
private static final FilterLandPermanent filterLand = new FilterLandPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/s/StaffOfZegon.java b/Mage.Sets/src/mage/cards/s/StaffOfZegon.java
index 6a09606af05..7db649583eb 100644
--- a/Mage.Sets/src/mage/cards/s/StaffOfZegon.java
+++ b/Mage.Sets/src/mage/cards/s/StaffOfZegon.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ilcartographer
*/
-public class StaffOfZegon extends CardImpl {
+public final class StaffOfZegon extends CardImpl {
public StaffOfZegon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/StagBeetle.java b/Mage.Sets/src/mage/cards/s/StagBeetle.java
index f5c1795f8df..72f11791760 100644
--- a/Mage.Sets/src/mage/cards/s/StagBeetle.java
+++ b/Mage.Sets/src/mage/cards/s/StagBeetle.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LoneFox
*/
-public class StagBeetle extends CardImpl {
+public final class StagBeetle extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
diff --git a/Mage.Sets/src/mage/cards/s/Staggershock.java b/Mage.Sets/src/mage/cards/s/Staggershock.java
index d6ed11d0cad..a193865b37b 100644
--- a/Mage.Sets/src/mage/cards/s/Staggershock.java
+++ b/Mage.Sets/src/mage/cards/s/Staggershock.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author maurer.it_at_gmail.com
*/
-public class Staggershock extends CardImpl {
+public final class Staggershock extends CardImpl {
public Staggershock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StainTheMind.java b/Mage.Sets/src/mage/cards/s/StainTheMind.java
index 7e2e36f2dff..fcc28c3d7a3 100644
--- a/Mage.Sets/src/mage/cards/s/StainTheMind.java
+++ b/Mage.Sets/src/mage/cards/s/StainTheMind.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class StainTheMind extends CardImpl {
+public final class StainTheMind extends CardImpl {
public StainTheMind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StalkerHag.java b/Mage.Sets/src/mage/cards/s/StalkerHag.java
index cf8c95fbf4f..1ad8c1d80de 100644
--- a/Mage.Sets/src/mage/cards/s/StalkerHag.java
+++ b/Mage.Sets/src/mage/cards/s/StalkerHag.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class StalkerHag extends CardImpl {
+public final class StalkerHag extends CardImpl {
public StalkerHag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B/G}{B/G}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/s/StalkingAssassin.java b/Mage.Sets/src/mage/cards/s/StalkingAssassin.java
index c2c5844050e..ebe71835421 100644
--- a/Mage.Sets/src/mage/cards/s/StalkingAssassin.java
+++ b/Mage.Sets/src/mage/cards/s/StalkingAssassin.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class StalkingAssassin extends CardImpl {
+public final class StalkingAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/s/StalkingBloodsucker.java b/Mage.Sets/src/mage/cards/s/StalkingBloodsucker.java
index 748c89b59db..775fdb14e48 100644
--- a/Mage.Sets/src/mage/cards/s/StalkingBloodsucker.java
+++ b/Mage.Sets/src/mage/cards/s/StalkingBloodsucker.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class StalkingBloodsucker extends CardImpl {
+public final class StalkingBloodsucker extends CardImpl {
public StalkingBloodsucker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StalkingDrone.java b/Mage.Sets/src/mage/cards/s/StalkingDrone.java
index 94770641d4e..d337e1c5268 100644
--- a/Mage.Sets/src/mage/cards/s/StalkingDrone.java
+++ b/Mage.Sets/src/mage/cards/s/StalkingDrone.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class StalkingDrone extends CardImpl {
+public final class StalkingDrone extends CardImpl {
public StalkingDrone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StalkingLeonin.java b/Mage.Sets/src/mage/cards/s/StalkingLeonin.java
index a181a42116c..17972db2fb8 100644
--- a/Mage.Sets/src/mage/cards/s/StalkingLeonin.java
+++ b/Mage.Sets/src/mage/cards/s/StalkingLeonin.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class StalkingLeonin extends CardImpl {
+public final class StalkingLeonin extends CardImpl {
static final String SECRET_OPPONENT = "_secOpp";
static final String SECRET_OWNER = "_secOwn";
diff --git a/Mage.Sets/src/mage/cards/s/StalkingStones.java b/Mage.Sets/src/mage/cards/s/StalkingStones.java
index 9307f46b96d..4c87e0a9ba4 100644
--- a/Mage.Sets/src/mage/cards/s/StalkingStones.java
+++ b/Mage.Sets/src/mage/cards/s/StalkingStones.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.Token;
*
* @author Loki
*/
-public class StalkingStones extends CardImpl {
+public final class StalkingStones extends CardImpl {
public StalkingStones(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/StalkingTiger.java b/Mage.Sets/src/mage/cards/s/StalkingTiger.java
index 003e8038c2a..dc5b947617d 100644
--- a/Mage.Sets/src/mage/cards/s/StalkingTiger.java
+++ b/Mage.Sets/src/mage/cards/s/StalkingTiger.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class StalkingTiger extends CardImpl {
+public final class StalkingTiger extends CardImpl {
public StalkingTiger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StalkingVampire.java b/Mage.Sets/src/mage/cards/s/StalkingVampire.java
index 46e97503cef..c6baf35e8e9 100644
--- a/Mage.Sets/src/mage/cards/s/StalkingVampire.java
+++ b/Mage.Sets/src/mage/cards/s/StalkingVampire.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author nantuko
*/
-public class StalkingVampire extends CardImpl {
+public final class StalkingVampire extends CardImpl {
public StalkingVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/s/StalkingVengeance.java b/Mage.Sets/src/mage/cards/s/StalkingVengeance.java
index be18c155efb..82f1ff22bc8 100644
--- a/Mage.Sets/src/mage/cards/s/StalkingVengeance.java
+++ b/Mage.Sets/src/mage/cards/s/StalkingVengeance.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class StalkingVengeance extends CardImpl {
+public final class StalkingVengeance extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/StalkingYeti.java b/Mage.Sets/src/mage/cards/s/StalkingYeti.java
index edb00ec5c5e..06b488655d0 100644
--- a/Mage.Sets/src/mage/cards/s/StalkingYeti.java
+++ b/Mage.Sets/src/mage/cards/s/StalkingYeti.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author TheElk801
*/
-public class StalkingYeti extends CardImpl {
+public final class StalkingYeti extends CardImpl {
public StalkingYeti(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java b/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java
index 666b1e587a6..dc91f7bcbef 100644
--- a/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java
+++ b/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class StallionOfAshmouth extends CardImpl {
+public final class StallionOfAshmouth extends CardImpl {
public StallionOfAshmouth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StalwartAven.java b/Mage.Sets/src/mage/cards/s/StalwartAven.java
index 30859d808ab..67f2cdfc4fd 100644
--- a/Mage.Sets/src/mage/cards/s/StalwartAven.java
+++ b/Mage.Sets/src/mage/cards/s/StalwartAven.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class StalwartAven extends CardImpl {
+public final class StalwartAven extends CardImpl {
public StalwartAven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StalwartShieldBearers.java b/Mage.Sets/src/mage/cards/s/StalwartShieldBearers.java
index 862736c2d2f..e7fd237116d 100644
--- a/Mage.Sets/src/mage/cards/s/StalwartShieldBearers.java
+++ b/Mage.Sets/src/mage/cards/s/StalwartShieldBearers.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author North
*/
-public class StalwartShieldBearers extends CardImpl {
+public final class StalwartShieldBearers extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with defender");
diff --git a/Mage.Sets/src/mage/cards/s/Stamina.java b/Mage.Sets/src/mage/cards/s/Stamina.java
index d16276abf40..74c1cddba7e 100644
--- a/Mage.Sets/src/mage/cards/s/Stamina.java
+++ b/Mage.Sets/src/mage/cards/s/Stamina.java
@@ -51,7 +51,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class Stamina extends CardImpl {
+public final class Stamina extends CardImpl {
public Stamina(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Stampede.java b/Mage.Sets/src/mage/cards/s/Stampede.java
index 2bab9b92862..997336dcb62 100644
--- a/Mage.Sets/src/mage/cards/s/Stampede.java
+++ b/Mage.Sets/src/mage/cards/s/Stampede.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author LoneFox
*/
-public class Stampede extends CardImpl {
+public final class Stampede extends CardImpl {
public Stampede(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StampedeDriver.java b/Mage.Sets/src/mage/cards/s/StampedeDriver.java
index 4f768600a9f..f9f7a31a930 100644
--- a/Mage.Sets/src/mage/cards/s/StampedeDriver.java
+++ b/Mage.Sets/src/mage/cards/s/StampedeDriver.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Backfir3
*/
-public class StampedeDriver extends CardImpl {
+public final class StampedeDriver extends CardImpl {
public StampedeDriver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StampedingElkHerd.java b/Mage.Sets/src/mage/cards/s/StampedingElkHerd.java
index d4f6b841100..79168d770b7 100644
--- a/Mage.Sets/src/mage/cards/s/StampedingElkHerd.java
+++ b/Mage.Sets/src/mage/cards/s/StampedingElkHerd.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class StampedingElkHerd extends CardImpl {
+public final class StampedingElkHerd extends CardImpl {
public StampedingElkHerd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StampedingHorncrest.java b/Mage.Sets/src/mage/cards/s/StampedingHorncrest.java
index f4e8d48c6d7..6f0051a578d 100644
--- a/Mage.Sets/src/mage/cards/s/StampedingHorncrest.java
+++ b/Mage.Sets/src/mage/cards/s/StampedingHorncrest.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class StampedingHorncrest extends CardImpl {
+public final class StampedingHorncrest extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Dinosaur");
diff --git a/Mage.Sets/src/mage/cards/s/StampedingRhino.java b/Mage.Sets/src/mage/cards/s/StampedingRhino.java
index fa724cef961..3c4b485e052 100644
--- a/Mage.Sets/src/mage/cards/s/StampedingRhino.java
+++ b/Mage.Sets/src/mage/cards/s/StampedingRhino.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class StampedingRhino extends CardImpl {
+public final class StampedingRhino extends CardImpl {
public StampedingRhino(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StampedingSerow.java b/Mage.Sets/src/mage/cards/s/StampedingSerow.java
index cf5cddf1779..5361399e802 100644
--- a/Mage.Sets/src/mage/cards/s/StampedingSerow.java
+++ b/Mage.Sets/src/mage/cards/s/StampedingSerow.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author noxx
*/
-public class StampedingSerow extends CardImpl {
+public final class StampedingSerow extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("green creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/StampedingWildebeests.java b/Mage.Sets/src/mage/cards/s/StampedingWildebeests.java
index 00b4226c406..a3b5bc8db9a 100644
--- a/Mage.Sets/src/mage/cards/s/StampedingWildebeests.java
+++ b/Mage.Sets/src/mage/cards/s/StampedingWildebeests.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class StampedingWildebeests extends CardImpl {
+public final class StampedingWildebeests extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("green creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/StandDeliver.java b/Mage.Sets/src/mage/cards/s/StandDeliver.java
index b4b2bd4238d..01277877535 100644
--- a/Mage.Sets/src/mage/cards/s/StandDeliver.java
+++ b/Mage.Sets/src/mage/cards/s/StandDeliver.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class StandDeliver extends SplitCard {
+public final class StandDeliver extends SplitCard {
public StandDeliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}", "{2}{U}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/s/StandFirm.java b/Mage.Sets/src/mage/cards/s/StandFirm.java
index 8fe1c288276..4213dd6925a 100644
--- a/Mage.Sets/src/mage/cards/s/StandFirm.java
+++ b/Mage.Sets/src/mage/cards/s/StandFirm.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class StandFirm extends CardImpl {
+public final class StandFirm extends CardImpl {
public StandFirm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StandTogether.java b/Mage.Sets/src/mage/cards/s/StandTogether.java
index e44b8beefe6..de126008834 100644
--- a/Mage.Sets/src/mage/cards/s/StandTogether.java
+++ b/Mage.Sets/src/mage/cards/s/StandTogether.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class StandTogether extends CardImpl {
+public final class StandTogether extends CardImpl {
public StandTogether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StandardBearer.java b/Mage.Sets/src/mage/cards/s/StandardBearer.java
index 4d9c7aea4c8..d0e7ca9d69a 100644
--- a/Mage.Sets/src/mage/cards/s/StandardBearer.java
+++ b/Mage.Sets/src/mage/cards/s/StandardBearer.java
@@ -42,7 +42,7 @@ import mage.filter.FilterPermanent;
*
* @author LevelX2
*/
-public class StandardBearer extends CardImpl {
+public final class StandardBearer extends CardImpl {
public StandardBearer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Standardize.java b/Mage.Sets/src/mage/cards/s/Standardize.java
index cc47640a750..fe6eb23a1ba 100644
--- a/Mage.Sets/src/mage/cards/s/Standardize.java
+++ b/Mage.Sets/src/mage/cards/s/Standardize.java
@@ -48,7 +48,7 @@ import mage.players.Player;
/**
* @author EvilGeek
*/
-public class Standardize extends CardImpl {
+public final class Standardize extends CardImpl {
public Standardize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StandingStones.java b/Mage.Sets/src/mage/cards/s/StandingStones.java
index 7bd76733479..eb99900efc4 100644
--- a/Mage.Sets/src/mage/cards/s/StandingStones.java
+++ b/Mage.Sets/src/mage/cards/s/StandingStones.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Galatolol
*/
-public class StandingStones extends CardImpl {
+public final class StandingStones extends CardImpl {
public StandingStones(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/StandingTroops.java b/Mage.Sets/src/mage/cards/s/StandingTroops.java
index eadb14be2c9..d81d01bb0ef 100644
--- a/Mage.Sets/src/mage/cards/s/StandingTroops.java
+++ b/Mage.Sets/src/mage/cards/s/StandingTroops.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class StandingTroops extends CardImpl {
+public final class StandingTroops extends CardImpl {
public StandingTroops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Standstill.java b/Mage.Sets/src/mage/cards/s/Standstill.java
index 506a866b3be..692164f427b 100644
--- a/Mage.Sets/src/mage/cards/s/Standstill.java
+++ b/Mage.Sets/src/mage/cards/s/Standstill.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class Standstill extends CardImpl {
+public final class Standstill extends CardImpl {
public Standstill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Stangg.java b/Mage.Sets/src/mage/cards/s/Stangg.java
index 6277b766e24..20dcf91211b 100644
--- a/Mage.Sets/src/mage/cards/s/Stangg.java
+++ b/Mage.Sets/src/mage/cards/s/Stangg.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth & L_J
*/
-public class Stangg extends CardImpl {
+public final class Stangg extends CardImpl {
public Stangg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StarCompass.java b/Mage.Sets/src/mage/cards/s/StarCompass.java
index 04670106944..db8b95e348f 100644
--- a/Mage.Sets/src/mage/cards/s/StarCompass.java
+++ b/Mage.Sets/src/mage/cards/s/StarCompass.java
@@ -57,7 +57,7 @@ import mage.players.Player;
*
* @author anonymous
*/
-public class StarCompass extends CardImpl {
+public final class StarCompass extends CardImpl {
public StarCompass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/StarDestroyer.java b/Mage.Sets/src/mage/cards/s/StarDestroyer.java
index 224bd3b7146..de112b2814e 100644
--- a/Mage.Sets/src/mage/cards/s/StarDestroyer.java
+++ b/Mage.Sets/src/mage/cards/s/StarDestroyer.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class StarDestroyer extends CardImpl {
+public final class StarDestroyer extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("artifact creature");
private static final FilterCreatureOrPlayer filter3 = new FilterCreatureOrPlayer("non-Starship creature or player");
diff --git a/Mage.Sets/src/mage/cards/s/StarOfExtinction.java b/Mage.Sets/src/mage/cards/s/StarOfExtinction.java
index 15e6c31a9a0..8191f193540 100644
--- a/Mage.Sets/src/mage/cards/s/StarOfExtinction.java
+++ b/Mage.Sets/src/mage/cards/s/StarOfExtinction.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author TheElk801
*/
-public class StarOfExtinction extends CardImpl {
+public final class StarOfExtinction extends CardImpl {
public StarOfExtinction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Starfall.java b/Mage.Sets/src/mage/cards/s/Starfall.java
index af0ee906701..a900218f3a2 100644
--- a/Mage.Sets/src/mage/cards/s/Starfall.java
+++ b/Mage.Sets/src/mage/cards/s/Starfall.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Starfall extends CardImpl {
+public final class Starfall extends CardImpl {
public Starfall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StarfieldOfNyx.java b/Mage.Sets/src/mage/cards/s/StarfieldOfNyx.java
index 6a039d3def9..01a64a90dec 100644
--- a/Mage.Sets/src/mage/cards/s/StarfieldOfNyx.java
+++ b/Mage.Sets/src/mage/cards/s/StarfieldOfNyx.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author fireshoes
*/
-public class StarfieldOfNyx extends CardImpl {
+public final class StarfieldOfNyx extends CardImpl {
private static final String rule1 = "As long as you control five or more enchantments, each other non-Aura enchantment you control is a creature in addition to its other types and has base power and base toughness each equal to its converted mana cost.";
diff --git a/Mage.Sets/src/mage/cards/s/StarkeOfRath.java b/Mage.Sets/src/mage/cards/s/StarkeOfRath.java
index 64af0c44aa0..b31989f59fc 100644
--- a/Mage.Sets/src/mage/cards/s/StarkeOfRath.java
+++ b/Mage.Sets/src/mage/cards/s/StarkeOfRath.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class StarkeOfRath extends CardImpl {
+public final class StarkeOfRath extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/s/Starlight.java b/Mage.Sets/src/mage/cards/s/Starlight.java
index 46b405276bc..4d8a550c12d 100644
--- a/Mage.Sets/src/mage/cards/s/Starlight.java
+++ b/Mage.Sets/src/mage/cards/s/Starlight.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
* @author LoneFox
*/
-public class Starlight extends CardImpl {
+public final class Starlight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature");
diff --git a/Mage.Sets/src/mage/cards/s/StarlightInvoker.java b/Mage.Sets/src/mage/cards/s/StarlightInvoker.java
index 5ab8f1f783f..147d78423b1 100644
--- a/Mage.Sets/src/mage/cards/s/StarlightInvoker.java
+++ b/Mage.Sets/src/mage/cards/s/StarlightInvoker.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class StarlightInvoker extends CardImpl {
+public final class StarlightInvoker extends CardImpl {
public StarlightInvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StarlitAngel.java b/Mage.Sets/src/mage/cards/s/StarlitAngel.java
index 3c07e33a6f1..d85a03a08da 100644
--- a/Mage.Sets/src/mage/cards/s/StarlitAngel.java
+++ b/Mage.Sets/src/mage/cards/s/StarlitAngel.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class StarlitAngel extends CardImpl {
+public final class StarlitAngel extends CardImpl {
public StarlitAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StarlitSanctum.java b/Mage.Sets/src/mage/cards/s/StarlitSanctum.java
index e0c07581ae5..9bf6f03bf1d 100644
--- a/Mage.Sets/src/mage/cards/s/StarlitSanctum.java
+++ b/Mage.Sets/src/mage/cards/s/StarlitSanctum.java
@@ -45,28 +45,29 @@ import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.game.Game;
import mage.players.Player;
+import mage.target.TargetPlayer;
import mage.target.common.TargetControlledCreaturePermanent;
/**
*
* @author anonymous
*/
-public class StarlitSanctum extends CardImpl {
-
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.CLERIC, "a Cleric creature");
+public final class StarlitSanctum extends CardImpl {
public StarlitSanctum(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
+ super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
- // {tap}: Add {C}.
+ FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.CLERIC, "a Cleric creature");
+ // {T}: Add {C}.
this.addAbility(new ColorlessManaAbility());
- // {W}, {tap}, Sacrifice a Cleric creature: You gain life equal to the sacrificed creature's toughness.
+ // {W}, {T}, Sacrifice a Cleric creature: You gain life equal to the sacrificed creature's toughness.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new StarlitSanctumWhiteEffect(), new ManaCostsImpl<>("{W}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(filter)));
this.addAbility(ability);
- // {B}, {tap}, Sacrifice a Cleric creature: Target player loses life equal to the sacrificed creature's power.
+ // {B}, {T}, Sacrifice a Cleric creature: Target player loses life equal to the sacrificed creature's power.
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new StarlitSanctumBlackEffect(), new ManaCostsImpl<>("{B}"));
+ ability.addTarget(new TargetPlayer());
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(filter)));
this.addAbility(ability);
@@ -152,4 +153,4 @@ class StarlitSanctumBlackEffect extends OneShotEffect {
public StarlitSanctumBlackEffect copy() {
return new StarlitSanctumBlackEffect(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/s/Starstorm.java b/Mage.Sets/src/mage/cards/s/Starstorm.java
index ee0ead9c14d..b4ec91cff62 100644
--- a/Mage.Sets/src/mage/cards/s/Starstorm.java
+++ b/Mage.Sets/src/mage/cards/s/Starstorm.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class Starstorm extends CardImpl {
+public final class Starstorm extends CardImpl {
public Starstorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StartFinish.java b/Mage.Sets/src/mage/cards/s/StartFinish.java
index d832f9504bc..7e2e23ead95 100644
--- a/Mage.Sets/src/mage/cards/s/StartFinish.java
+++ b/Mage.Sets/src/mage/cards/s/StartFinish.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class StartFinish extends SplitCard {
+public final class StartFinish extends SplitCard {
public StartFinish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{2}{W}", "{2}{B}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/s/StartYourEngines.java b/Mage.Sets/src/mage/cards/s/StartYourEngines.java
index c4e0b086579..d3aec4fff94 100644
--- a/Mage.Sets/src/mage/cards/s/StartYourEngines.java
+++ b/Mage.Sets/src/mage/cards/s/StartYourEngines.java
@@ -42,7 +42,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class StartYourEngines extends CardImpl {
+public final class StartYourEngines extends CardImpl {
public StartYourEngines(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StartledAwake.java b/Mage.Sets/src/mage/cards/s/StartledAwake.java
index 0745e99fc2c..870551fa426 100644
--- a/Mage.Sets/src/mage/cards/s/StartledAwake.java
+++ b/Mage.Sets/src/mage/cards/s/StartledAwake.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class StartledAwake extends CardImpl {
+public final class StartledAwake extends CardImpl {
public StartledAwake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StarvedRusalka.java b/Mage.Sets/src/mage/cards/s/StarvedRusalka.java
index bf4b576fce4..ebcb68e1ff6 100644
--- a/Mage.Sets/src/mage/cards/s/StarvedRusalka.java
+++ b/Mage.Sets/src/mage/cards/s/StarvedRusalka.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class StarvedRusalka extends CardImpl {
+public final class StarvedRusalka extends CardImpl {
public StarvedRusalka(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Stasis.java b/Mage.Sets/src/mage/cards/s/Stasis.java
index cbf628ce7cc..5c2bcfa2085 100644
--- a/Mage.Sets/src/mage/cards/s/Stasis.java
+++ b/Mage.Sets/src/mage/cards/s/Stasis.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth, edited by L_J
*/
-public class Stasis extends CardImpl {
+public final class Stasis extends CardImpl {
public Stasis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StasisCell.java b/Mage.Sets/src/mage/cards/s/StasisCell.java
index 9223c7d969d..fac30c1fdbd 100644
--- a/Mage.Sets/src/mage/cards/s/StasisCell.java
+++ b/Mage.Sets/src/mage/cards/s/StasisCell.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author fireshoes
*/
-public class StasisCell extends CardImpl {
+public final class StasisCell extends CardImpl {
public StasisCell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StasisCocoon.java b/Mage.Sets/src/mage/cards/s/StasisCocoon.java
index 432336b35cf..4a3cab02f80 100644
--- a/Mage.Sets/src/mage/cards/s/StasisCocoon.java
+++ b/Mage.Sets/src/mage/cards/s/StasisCocoon.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Plopman
*/
-public class StasisCocoon extends CardImpl {
+public final class StasisCocoon extends CardImpl {
public StasisCocoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StasisSnare.java b/Mage.Sets/src/mage/cards/s/StasisSnare.java
index a0272ed4c29..8bdecd55379 100644
--- a/Mage.Sets/src/mage/cards/s/StasisSnare.java
+++ b/Mage.Sets/src/mage/cards/s/StasisSnare.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class StasisSnare extends CardImpl {
+public final class StasisSnare extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/s/Statecraft.java b/Mage.Sets/src/mage/cards/s/Statecraft.java
index 779f8dcaf74..dc483de787a 100644
--- a/Mage.Sets/src/mage/cards/s/Statecraft.java
+++ b/Mage.Sets/src/mage/cards/s/Statecraft.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class Statecraft extends CardImpl {
+public final class Statecraft extends CardImpl {
public Statecraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StaticOrb.java b/Mage.Sets/src/mage/cards/s/StaticOrb.java
index 878cd2733fc..56b03da5036 100644
--- a/Mage.Sets/src/mage/cards/s/StaticOrb.java
+++ b/Mage.Sets/src/mage/cards/s/StaticOrb.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class StaticOrb extends CardImpl {
+public final class StaticOrb extends CardImpl {
public StaticOrb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/StatuteOfDenial.java b/Mage.Sets/src/mage/cards/s/StatuteOfDenial.java
index 44a3cdebe40..61d704fdfc3 100644
--- a/Mage.Sets/src/mage/cards/s/StatuteOfDenial.java
+++ b/Mage.Sets/src/mage/cards/s/StatuteOfDenial.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class StatuteOfDenial extends CardImpl {
+public final class StatuteOfDenial extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creature");
diff --git a/Mage.Sets/src/mage/cards/s/StaunchDefenders.java b/Mage.Sets/src/mage/cards/s/StaunchDefenders.java
index 619ee160957..587ce666b5b 100644
--- a/Mage.Sets/src/mage/cards/s/StaunchDefenders.java
+++ b/Mage.Sets/src/mage/cards/s/StaunchDefenders.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class StaunchDefenders extends CardImpl {
+public final class StaunchDefenders extends CardImpl {
public StaunchDefenders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StaunchHeartedWarrior.java b/Mage.Sets/src/mage/cards/s/StaunchHeartedWarrior.java
index 1116c3d5e1c..6e4230190a2 100644
--- a/Mage.Sets/src/mage/cards/s/StaunchHeartedWarrior.java
+++ b/Mage.Sets/src/mage/cards/s/StaunchHeartedWarrior.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class StaunchHeartedWarrior extends CardImpl {
+public final class StaunchHeartedWarrior extends CardImpl {
public StaunchHeartedWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StaveOff.java b/Mage.Sets/src/mage/cards/s/StaveOff.java
index f2edd406de2..ce7ad1df9fb 100644
--- a/Mage.Sets/src/mage/cards/s/StaveOff.java
+++ b/Mage.Sets/src/mage/cards/s/StaveOff.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class StaveOff extends CardImpl {
+public final class StaveOff extends CardImpl {
public StaveOff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SteadfastArmasaur.java b/Mage.Sets/src/mage/cards/s/SteadfastArmasaur.java
index 9c299c382e4..3f0ac604931 100644
--- a/Mage.Sets/src/mage/cards/s/SteadfastArmasaur.java
+++ b/Mage.Sets/src/mage/cards/s/SteadfastArmasaur.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class SteadfastArmasaur extends CardImpl {
+public final class SteadfastArmasaur extends CardImpl {
public SteadfastArmasaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SteadfastCathar.java b/Mage.Sets/src/mage/cards/s/SteadfastCathar.java
index 1b9c4098ea7..8074b28f5d9 100644
--- a/Mage.Sets/src/mage/cards/s/SteadfastCathar.java
+++ b/Mage.Sets/src/mage/cards/s/SteadfastCathar.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class SteadfastCathar extends CardImpl {
+public final class SteadfastCathar extends CardImpl {
public SteadfastCathar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SteadfastGuard.java b/Mage.Sets/src/mage/cards/s/SteadfastGuard.java
index 062a2d048a3..415388cda20 100644
--- a/Mage.Sets/src/mage/cards/s/SteadfastGuard.java
+++ b/Mage.Sets/src/mage/cards/s/SteadfastGuard.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SteadfastGuard extends CardImpl {
+public final class SteadfastGuard extends CardImpl {
public SteadfastGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SteadfastSentinel.java b/Mage.Sets/src/mage/cards/s/SteadfastSentinel.java
index 234de212f18..f55e931304a 100644
--- a/Mage.Sets/src/mage/cards/s/SteadfastSentinel.java
+++ b/Mage.Sets/src/mage/cards/s/SteadfastSentinel.java
@@ -10,7 +10,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-public class SteadfastSentinel extends CardImpl {
+public final class SteadfastSentinel extends CardImpl {
public SteadfastSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Steadfastness.java b/Mage.Sets/src/mage/cards/s/Steadfastness.java
index 096e24b86e3..3e820a9b122 100644
--- a/Mage.Sets/src/mage/cards/s/Steadfastness.java
+++ b/Mage.Sets/src/mage/cards/s/Steadfastness.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class Steadfastness extends CardImpl {
+public final class Steadfastness extends CardImpl {
public Steadfastness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SteadyProgress.java b/Mage.Sets/src/mage/cards/s/SteadyProgress.java
index e6a29a64f68..85cd0d7a628 100644
--- a/Mage.Sets/src/mage/cards/s/SteadyProgress.java
+++ b/Mage.Sets/src/mage/cards/s/SteadyProgress.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class SteadyProgress extends CardImpl {
+public final class SteadyProgress extends CardImpl {
public SteadyProgress (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StealArtifact.java b/Mage.Sets/src/mage/cards/s/StealArtifact.java
index 9aea653ef71..b5d3a8a7059 100644
--- a/Mage.Sets/src/mage/cards/s/StealArtifact.java
+++ b/Mage.Sets/src/mage/cards/s/StealArtifact.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Plopman
*/
-public class StealArtifact extends CardImpl {
+public final class StealArtifact extends CardImpl {
public StealArtifact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StealEnchantment.java b/Mage.Sets/src/mage/cards/s/StealEnchantment.java
index 9150af9bf0c..ec2ede68a69 100644
--- a/Mage.Sets/src/mage/cards/s/StealEnchantment.java
+++ b/Mage.Sets/src/mage/cards/s/StealEnchantment.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author Quercitron
*/
-public class StealEnchantment extends CardImpl {
+public final class StealEnchantment extends CardImpl {
public StealEnchantment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StealStrength.java b/Mage.Sets/src/mage/cards/s/StealStrength.java
index d4287516c5e..7bdbad1e8a1 100644
--- a/Mage.Sets/src/mage/cards/s/StealStrength.java
+++ b/Mage.Sets/src/mage/cards/s/StealStrength.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class StealStrength extends CardImpl {
+public final class StealStrength extends CardImpl {
public StealStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StealerOfSecrets.java b/Mage.Sets/src/mage/cards/s/StealerOfSecrets.java
index e09050a3dff..cca31939993 100644
--- a/Mage.Sets/src/mage/cards/s/StealerOfSecrets.java
+++ b/Mage.Sets/src/mage/cards/s/StealerOfSecrets.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class StealerOfSecrets extends CardImpl {
+public final class StealerOfSecrets extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures with defender you control");
diff --git a/Mage.Sets/src/mage/cards/s/SteamAugury.java b/Mage.Sets/src/mage/cards/s/SteamAugury.java
index fff0b5fe703..68631f0b262 100644
--- a/Mage.Sets/src/mage/cards/s/SteamAugury.java
+++ b/Mage.Sets/src/mage/cards/s/SteamAugury.java
@@ -54,7 +54,7 @@ import mage.util.GameLog;
*
* @author LevelX2
*/
-public class SteamAugury extends CardImpl {
+public final class SteamAugury extends CardImpl {
public SteamAugury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SteamBlast.java b/Mage.Sets/src/mage/cards/s/SteamBlast.java
index 67c3e1935cc..3bb8cbd2b35 100644
--- a/Mage.Sets/src/mage/cards/s/SteamBlast.java
+++ b/Mage.Sets/src/mage/cards/s/SteamBlast.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class SteamBlast extends CardImpl {
+public final class SteamBlast extends CardImpl {
public SteamBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SteamCatapult.java b/Mage.Sets/src/mage/cards/s/SteamCatapult.java
index 1754250eff4..c84049710c8 100644
--- a/Mage.Sets/src/mage/cards/s/SteamCatapult.java
+++ b/Mage.Sets/src/mage/cards/s/SteamCatapult.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SteamCatapult extends CardImpl {
+public final class SteamCatapult extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/s/SteamFrigate.java b/Mage.Sets/src/mage/cards/s/SteamFrigate.java
index fa6eaec3964..d1d3104ba14 100644
--- a/Mage.Sets/src/mage/cards/s/SteamFrigate.java
+++ b/Mage.Sets/src/mage/cards/s/SteamFrigate.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class SteamFrigate extends CardImpl {
+public final class SteamFrigate extends CardImpl {
public SteamFrigate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SteamSpitter.java b/Mage.Sets/src/mage/cards/s/SteamSpitter.java
index dff52a098ce..fe1a05c5c01 100644
--- a/Mage.Sets/src/mage/cards/s/SteamSpitter.java
+++ b/Mage.Sets/src/mage/cards/s/SteamSpitter.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class SteamSpitter extends CardImpl {
+public final class SteamSpitter extends CardImpl {
public SteamSpitter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SteamVents.java b/Mage.Sets/src/mage/cards/s/SteamVents.java
index 665d29799eb..011df3fa9e1 100644
--- a/Mage.Sets/src/mage/cards/s/SteamVents.java
+++ b/Mage.Sets/src/mage/cards/s/SteamVents.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SteamVents extends CardImpl {
+public final class SteamVents extends CardImpl {
public SteamVents(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/s/SteamVines.java b/Mage.Sets/src/mage/cards/s/SteamVines.java
index c71a070d2f4..ef365582f32 100644
--- a/Mage.Sets/src/mage/cards/s/SteamVines.java
+++ b/Mage.Sets/src/mage/cards/s/SteamVines.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth & L_J
*/
-public class SteamVines extends CardImpl {
+public final class SteamVines extends CardImpl {
public SteamVines(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Steamclaw.java b/Mage.Sets/src/mage/cards/s/Steamclaw.java
index 7a84e5b533b..ef961a4fabc 100644
--- a/Mage.Sets/src/mage/cards/s/Steamclaw.java
+++ b/Mage.Sets/src/mage/cards/s/Steamclaw.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author TheElk801
*/
-public class Steamclaw extends CardImpl {
+public final class Steamclaw extends CardImpl {
public Steamclaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SteamcoreWeird.java b/Mage.Sets/src/mage/cards/s/SteamcoreWeird.java
index 4097f645b0a..73f7a14facd 100644
--- a/Mage.Sets/src/mage/cards/s/SteamcoreWeird.java
+++ b/Mage.Sets/src/mage/cards/s/SteamcoreWeird.java
@@ -46,7 +46,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author FenrisulfrX
*/
-public class SteamcoreWeird extends CardImpl {
+public final class SteamcoreWeird extends CardImpl {
public SteamcoreWeird(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SteamfloggerBoss.java b/Mage.Sets/src/mage/cards/s/SteamfloggerBoss.java
index d613079e9a1..6d880076b2c 100644
--- a/Mage.Sets/src/mage/cards/s/SteamfloggerBoss.java
+++ b/Mage.Sets/src/mage/cards/s/SteamfloggerBoss.java
@@ -49,7 +49,7 @@ import static mage.filter.predicate.permanent.ControllerControlsIslandPredicate.
*
* @author LevelX2
*/
-public class SteamfloggerBoss extends CardImpl {
+public final class SteamfloggerBoss extends CardImpl {
public SteamfloggerBoss(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SteelGolem.java b/Mage.Sets/src/mage/cards/s/SteelGolem.java
index d60e59935f3..fd46e4bb6f4 100644
--- a/Mage.Sets/src/mage/cards/s/SteelGolem.java
+++ b/Mage.Sets/src/mage/cards/s/SteelGolem.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent;
*
* @author jeffwadsworth
*/
-public class SteelGolem extends CardImpl {
+public final class SteelGolem extends CardImpl {
public SteelGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SteelHellkite.java b/Mage.Sets/src/mage/cards/s/SteelHellkite.java
index 0ea95f2bdc3..1745aefa741 100644
--- a/Mage.Sets/src/mage/cards/s/SteelHellkite.java
+++ b/Mage.Sets/src/mage/cards/s/SteelHellkite.java
@@ -52,7 +52,7 @@ import mage.watchers.common.PlayerDamagedBySourceWatcher;
/**
* @author nantuko
*/
-public class SteelHellkite extends CardImpl {
+public final class SteelHellkite extends CardImpl {
public SteelHellkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/s/SteelLeafChampion.java b/Mage.Sets/src/mage/cards/s/SteelLeafChampion.java
index cae7283ed90..1785266a214 100644
--- a/Mage.Sets/src/mage/cards/s/SteelLeafChampion.java
+++ b/Mage.Sets/src/mage/cards/s/SteelLeafChampion.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author TheElk801
*/
-public class SteelLeafChampion extends CardImpl {
+public final class SteelLeafChampion extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/s/SteelLeafPaladin.java b/Mage.Sets/src/mage/cards/s/SteelLeafPaladin.java
index ede2263c955..7e9cc5c5443 100644
--- a/Mage.Sets/src/mage/cards/s/SteelLeafPaladin.java
+++ b/Mage.Sets/src/mage/cards/s/SteelLeafPaladin.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*/
-public class SteelLeafPaladin extends CardImpl {
+public final class SteelLeafPaladin extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("green or white creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SteelOfTheGodhead.java b/Mage.Sets/src/mage/cards/s/SteelOfTheGodhead.java
index 3777e222a52..654df736ca7 100644
--- a/Mage.Sets/src/mage/cards/s/SteelOfTheGodhead.java
+++ b/Mage.Sets/src/mage/cards/s/SteelOfTheGodhead.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class SteelOfTheGodhead extends CardImpl {
+public final class SteelOfTheGodhead extends CardImpl {
public SteelOfTheGodhead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/s/SteelOverseer.java b/Mage.Sets/src/mage/cards/s/SteelOverseer.java
index 98956e1dc49..0dc96ae59e5 100644
--- a/Mage.Sets/src/mage/cards/s/SteelOverseer.java
+++ b/Mage.Sets/src/mage/cards/s/SteelOverseer.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SteelOverseer extends CardImpl {
+public final class SteelOverseer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SteelSabotage.java b/Mage.Sets/src/mage/cards/s/SteelSabotage.java
index a9992e2a6b6..fe27695043e 100644
--- a/Mage.Sets/src/mage/cards/s/SteelSabotage.java
+++ b/Mage.Sets/src/mage/cards/s/SteelSabotage.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author North
*/
-public class SteelSabotage extends CardImpl {
+public final class SteelSabotage extends CardImpl {
public SteelSabotage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SteelSquirrel.java b/Mage.Sets/src/mage/cards/s/SteelSquirrel.java
index 9dd2a0e8be7..ed4bd68ea76 100644
--- a/Mage.Sets/src/mage/cards/s/SteelSquirrel.java
+++ b/Mage.Sets/src/mage/cards/s/SteelSquirrel.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class SteelSquirrel extends CardImpl {
+public final class SteelSquirrel extends CardImpl {
public SteelSquirrel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SteelWall.java b/Mage.Sets/src/mage/cards/s/SteelWall.java
index 2dc6fa8256e..b10bfa066a2 100644
--- a/Mage.Sets/src/mage/cards/s/SteelWall.java
+++ b/Mage.Sets/src/mage/cards/s/SteelWall.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SteelWall extends CardImpl {
+public final class SteelWall extends CardImpl {
public SteelWall (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SteelcladSerpent.java b/Mage.Sets/src/mage/cards/s/SteelcladSerpent.java
index a6ddefc57af..4da09a571cf 100644
--- a/Mage.Sets/src/mage/cards/s/SteelcladSerpent.java
+++ b/Mage.Sets/src/mage/cards/s/SteelcladSerpent.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class SteelcladSerpent extends CardImpl {
+public final class SteelcladSerpent extends CardImpl {
public SteelcladSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SteelformSliver.java b/Mage.Sets/src/mage/cards/s/SteelformSliver.java
index e9f792922f7..50506607cb1 100644
--- a/Mage.Sets/src/mage/cards/s/SteelformSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SteelformSliver.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author Plopman
*/
-public class SteelformSliver extends CardImpl {
+public final class SteelformSliver extends CardImpl {
public SteelformSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SteelingStance.java b/Mage.Sets/src/mage/cards/s/SteelingStance.java
index 25e65b4e99e..0b2a6e78efb 100644
--- a/Mage.Sets/src/mage/cards/s/SteelingStance.java
+++ b/Mage.Sets/src/mage/cards/s/SteelingStance.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SteelingStance extends CardImpl {
+public final class SteelingStance extends CardImpl {
public SteelingStance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SteelshaperApprentice.java b/Mage.Sets/src/mage/cards/s/SteelshaperApprentice.java
index f835cd68616..95cc02b7d15 100644
--- a/Mage.Sets/src/mage/cards/s/SteelshaperApprentice.java
+++ b/Mage.Sets/src/mage/cards/s/SteelshaperApprentice.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author Loki
*/
-public class SteelshaperApprentice extends CardImpl {
+public final class SteelshaperApprentice extends CardImpl {
private static final FilterCard filter = new FilterCard("Equipment card");
diff --git a/Mage.Sets/src/mage/cards/s/SteelshapersGift.java b/Mage.Sets/src/mage/cards/s/SteelshapersGift.java
index ad2a1199fe2..e8b524acc1f 100644
--- a/Mage.Sets/src/mage/cards/s/SteelshapersGift.java
+++ b/Mage.Sets/src/mage/cards/s/SteelshapersGift.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jonubuu
*/
-public class SteelshapersGift extends CardImpl {
+public final class SteelshapersGift extends CardImpl {
private static final FilterCard filter = new FilterCard("Equipment card");
diff --git a/Mage.Sets/src/mage/cards/s/SteelyResolve.java b/Mage.Sets/src/mage/cards/s/SteelyResolve.java
index f1ea5b734d6..fc3d2691e0d 100644
--- a/Mage.Sets/src/mage/cards/s/SteelyResolve.java
+++ b/Mage.Sets/src/mage/cards/s/SteelyResolve.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author markedagain
*/
-public class SteelyResolve extends CardImpl {
+public final class SteelyResolve extends CardImpl {
public SteelyResolve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SteepleRoc.java b/Mage.Sets/src/mage/cards/s/SteepleRoc.java
index 687c78b8ade..96185169211 100644
--- a/Mage.Sets/src/mage/cards/s/SteepleRoc.java
+++ b/Mage.Sets/src/mage/cards/s/SteepleRoc.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*/
-public class SteepleRoc extends CardImpl {
+public final class SteepleRoc extends CardImpl {
public SteepleRoc (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StenchOfDecay.java b/Mage.Sets/src/mage/cards/s/StenchOfDecay.java
index a640a9432e7..5c960d4b51c 100644
--- a/Mage.Sets/src/mage/cards/s/StenchOfDecay.java
+++ b/Mage.Sets/src/mage/cards/s/StenchOfDecay.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author TheElk801
*/
-public class StenchOfDecay extends CardImpl {
+public final class StenchOfDecay extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Nonartifact creatures");
diff --git a/Mage.Sets/src/mage/cards/s/Stenchskipper.java b/Mage.Sets/src/mage/cards/s/Stenchskipper.java
index cd5ae3977b1..4f47c43bc51 100644
--- a/Mage.Sets/src/mage/cards/s/Stenchskipper.java
+++ b/Mage.Sets/src/mage/cards/s/Stenchskipper.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author emerald000
*/
-public class Stenchskipper extends CardImpl {
+public final class Stenchskipper extends CardImpl {
public Stenchskipper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StensiaBanquet.java b/Mage.Sets/src/mage/cards/s/StensiaBanquet.java
index fe211c3d5ec..db9b053334c 100644
--- a/Mage.Sets/src/mage/cards/s/StensiaBanquet.java
+++ b/Mage.Sets/src/mage/cards/s/StensiaBanquet.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author LevelX2
*/
-public class StensiaBanquet extends CardImpl {
+public final class StensiaBanquet extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Vampires you control");
diff --git a/Mage.Sets/src/mage/cards/s/StensiaBloodhall.java b/Mage.Sets/src/mage/cards/s/StensiaBloodhall.java
index 307256fc4ab..992785fb6cd 100644
--- a/Mage.Sets/src/mage/cards/s/StensiaBloodhall.java
+++ b/Mage.Sets/src/mage/cards/s/StensiaBloodhall.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
/**
* @author nantuko
*/
-public class StensiaBloodhall extends CardImpl {
+public final class StensiaBloodhall extends CardImpl {
public StensiaBloodhall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/StensiaInnkeeper.java b/Mage.Sets/src/mage/cards/s/StensiaInnkeeper.java
index 1af3e04a472..3869adf3602 100644
--- a/Mage.Sets/src/mage/cards/s/StensiaInnkeeper.java
+++ b/Mage.Sets/src/mage/cards/s/StensiaInnkeeper.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class StensiaInnkeeper extends CardImpl {
+public final class StensiaInnkeeper extends CardImpl {
private final static FilterLandPermanent filter = new FilterLandPermanent("land an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/StensiaMasquerade.java b/Mage.Sets/src/mage/cards/s/StensiaMasquerade.java
index 45ed107d625..485f94be11c 100644
--- a/Mage.Sets/src/mage/cards/s/StensiaMasquerade.java
+++ b/Mage.Sets/src/mage/cards/s/StensiaMasquerade.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class StensiaMasquerade extends CardImpl {
+public final class StensiaMasquerade extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SteppeGlider.java b/Mage.Sets/src/mage/cards/s/SteppeGlider.java
index 0581e965394..3e8479239d7 100644
--- a/Mage.Sets/src/mage/cards/s/SteppeGlider.java
+++ b/Mage.Sets/src/mage/cards/s/SteppeGlider.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SteppeGlider extends CardImpl {
+public final class SteppeGlider extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/s/SteppeLynx.java b/Mage.Sets/src/mage/cards/s/SteppeLynx.java
index ca281f39914..9b34c8afab5 100644
--- a/Mage.Sets/src/mage/cards/s/SteppeLynx.java
+++ b/Mage.Sets/src/mage/cards/s/SteppeLynx.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SteppeLynx extends CardImpl {
+public final class SteppeLynx extends CardImpl {
public SteppeLynx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SterlingGrove.java b/Mage.Sets/src/mage/cards/s/SterlingGrove.java
index 6cf04d4a6fd..26070f7d770 100644
--- a/Mage.Sets/src/mage/cards/s/SterlingGrove.java
+++ b/Mage.Sets/src/mage/cards/s/SterlingGrove.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class SterlingGrove extends CardImpl {
+public final class SterlingGrove extends CardImpl {
public SterlingGrove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SternConstable.java b/Mage.Sets/src/mage/cards/s/SternConstable.java
index 821438577bd..df3df51e03d 100644
--- a/Mage.Sets/src/mage/cards/s/SternConstable.java
+++ b/Mage.Sets/src/mage/cards/s/SternConstable.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class SternConstable extends CardImpl {
+public final class SternConstable extends CardImpl {
public SternConstable(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SternJudge.java b/Mage.Sets/src/mage/cards/s/SternJudge.java
index d2b53b9b6b7..a67190d61b2 100644
--- a/Mage.Sets/src/mage/cards/s/SternJudge.java
+++ b/Mage.Sets/src/mage/cards/s/SternJudge.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class SternJudge extends CardImpl {
+public final class SternJudge extends CardImpl {
public SternJudge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SternMarshal.java b/Mage.Sets/src/mage/cards/s/SternMarshal.java
index c32f2ee12ba..f0380eb1f1c 100644
--- a/Mage.Sets/src/mage/cards/s/SternMarshal.java
+++ b/Mage.Sets/src/mage/cards/s/SternMarshal.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SternMarshal extends CardImpl {
+public final class SternMarshal extends CardImpl {
public SternMarshal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SternMentor.java b/Mage.Sets/src/mage/cards/s/SternMentor.java
index d036bede018..81e190509f8 100644
--- a/Mage.Sets/src/mage/cards/s/SternMentor.java
+++ b/Mage.Sets/src/mage/cards/s/SternMentor.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
/**
* @author noxx
*/
-public class SternMentor extends CardImpl {
+public final class SternMentor extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, each of those creatures has \"{T}: Target player puts the top two cards of their library into their graveyard.\"";
diff --git a/Mage.Sets/src/mage/cards/s/SternProctor.java b/Mage.Sets/src/mage/cards/s/SternProctor.java
index 8f886f44f89..a98ac0a85b2 100644
--- a/Mage.Sets/src/mage/cards/s/SternProctor.java
+++ b/Mage.Sets/src/mage/cards/s/SternProctor.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class SternProctor extends CardImpl {
+public final class SternProctor extends CardImpl {
public SternProctor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StewardOfSolidarity.java b/Mage.Sets/src/mage/cards/s/StewardOfSolidarity.java
index be9d516428b..d03ea8e46eb 100644
--- a/Mage.Sets/src/mage/cards/s/StewardOfSolidarity.java
+++ b/Mage.Sets/src/mage/cards/s/StewardOfSolidarity.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.WarriorVigilantToken;
*
* @author spjspj
*/
-public class StewardOfSolidarity extends CardImpl {
+public final class StewardOfSolidarity extends CardImpl {
public StewardOfSolidarity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StewardOfValeron.java b/Mage.Sets/src/mage/cards/s/StewardOfValeron.java
index 11664687871..56a09aff4be 100644
--- a/Mage.Sets/src/mage/cards/s/StewardOfValeron.java
+++ b/Mage.Sets/src/mage/cards/s/StewardOfValeron.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class StewardOfValeron extends CardImpl {
+public final class StewardOfValeron extends CardImpl {
public StewardOfValeron (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Stifle.java b/Mage.Sets/src/mage/cards/s/Stifle.java
index 15fc8edeb72..e46a5dad1d1 100644
--- a/Mage.Sets/src/mage/cards/s/Stifle.java
+++ b/Mage.Sets/src/mage/cards/s/Stifle.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetActivatedOrTriggeredAbility;
*
* @author Plopman
*/
-public class Stifle extends CardImpl {
+public final class Stifle extends CardImpl {
public Stifle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StigmaLasher.java b/Mage.Sets/src/mage/cards/s/StigmaLasher.java
index 0ddb272c38e..aaad4df3e40 100644
--- a/Mage.Sets/src/mage/cards/s/StigmaLasher.java
+++ b/Mage.Sets/src/mage/cards/s/StigmaLasher.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class StigmaLasher extends CardImpl {
+public final class StigmaLasher extends CardImpl {
public StigmaLasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StillLife.java b/Mage.Sets/src/mage/cards/s/StillLife.java
index 1d0d2814c27..deb7e925bcb 100644
--- a/Mage.Sets/src/mage/cards/s/StillLife.java
+++ b/Mage.Sets/src/mage/cards/s/StillLife.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.Token;
* @author LoneFox
*/
-public class StillLife extends CardImpl {
+public final class StillLife extends CardImpl {
public StillLife(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StillmoonCavalier.java b/Mage.Sets/src/mage/cards/s/StillmoonCavalier.java
index b4300773334..fbdec213602 100644
--- a/Mage.Sets/src/mage/cards/s/StillmoonCavalier.java
+++ b/Mage.Sets/src/mage/cards/s/StillmoonCavalier.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class StillmoonCavalier extends CardImpl {
+public final class StillmoonCavalier extends CardImpl {
public StillmoonCavalier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W/B}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/s/StingerflingSpider.java b/Mage.Sets/src/mage/cards/s/StingerflingSpider.java
index 707a93246e2..e604dc48bfb 100644
--- a/Mage.Sets/src/mage/cards/s/StingerflingSpider.java
+++ b/Mage.Sets/src/mage/cards/s/StingerflingSpider.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class StingerflingSpider extends CardImpl {
+public final class StingerflingSpider extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/StingingBarrier.java b/Mage.Sets/src/mage/cards/s/StingingBarrier.java
index dad35fbee3a..1d0735c5223 100644
--- a/Mage.Sets/src/mage/cards/s/StingingBarrier.java
+++ b/Mage.Sets/src/mage/cards/s/StingingBarrier.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class StingingBarrier extends CardImpl {
+public final class StingingBarrier extends CardImpl {
public StingingBarrier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StingingLicid.java b/Mage.Sets/src/mage/cards/s/StingingLicid.java
index f95bdaa088a..3985baeabae 100644
--- a/Mage.Sets/src/mage/cards/s/StingingLicid.java
+++ b/Mage.Sets/src/mage/cards/s/StingingLicid.java
@@ -44,7 +44,7 @@ import mage.constants.ColoredManaSymbol;
*
* @author emerald000
*/
-public class StingingLicid extends CardImpl {
+public final class StingingLicid extends CardImpl {
public StingingLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StingingShot.java b/Mage.Sets/src/mage/cards/s/StingingShot.java
index 930fe5962cd..1f793990483 100644
--- a/Mage.Sets/src/mage/cards/s/StingingShot.java
+++ b/Mage.Sets/src/mage/cards/s/StingingShot.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author stravant
*/
-public class StingingShot extends CardImpl {
+public final class StingingShot extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/Stingmoggie.java b/Mage.Sets/src/mage/cards/s/Stingmoggie.java
index c714639552c..9dbf555f1ba 100644
--- a/Mage.Sets/src/mage/cards/s/Stingmoggie.java
+++ b/Mage.Sets/src/mage/cards/s/Stingmoggie.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class Stingmoggie extends CardImpl {
+public final class Stingmoggie extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or land");
diff --git a/Mage.Sets/src/mage/cards/s/Stingscourger.java b/Mage.Sets/src/mage/cards/s/Stingscourger.java
index ff153d2735c..00d1405e9b9 100644
--- a/Mage.Sets/src/mage/cards/s/Stingscourger.java
+++ b/Mage.Sets/src/mage/cards/s/Stingscourger.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jonubuu
*/
-public class Stingscourger extends CardImpl {
+public final class Stingscourger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java b/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java
index dd8d1a346a8..8e8fbc3dd75 100644
--- a/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java
+++ b/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author BursegSardaukar
*/
-public class StinkdrinkerBandit extends CardImpl {
+public final class StinkdrinkerBandit extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Rogue");
diff --git a/Mage.Sets/src/mage/cards/s/StinkdrinkerDaredevil.java b/Mage.Sets/src/mage/cards/s/StinkdrinkerDaredevil.java
index 7f8e0d5e559..f8c22fd5b5a 100644
--- a/Mage.Sets/src/mage/cards/s/StinkdrinkerDaredevil.java
+++ b/Mage.Sets/src/mage/cards/s/StinkdrinkerDaredevil.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class StinkdrinkerDaredevil extends CardImpl {
+public final class StinkdrinkerDaredevil extends CardImpl {
private static final FilterCard filter = new FilterCard("Giant spells");
diff --git a/Mage.Sets/src/mage/cards/s/StinkweedImp.java b/Mage.Sets/src/mage/cards/s/StinkweedImp.java
index d0755e68d8b..5fcdabee304 100644
--- a/Mage.Sets/src/mage/cards/s/StinkweedImp.java
+++ b/Mage.Sets/src/mage/cards/s/StinkweedImp.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class StinkweedImp extends CardImpl {
+public final class StinkweedImp extends CardImpl {
public StinkweedImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StirTheGrave.java b/Mage.Sets/src/mage/cards/s/StirTheGrave.java
index 2aaf23014e5..422446b01f1 100644
--- a/Mage.Sets/src/mage/cards/s/StirTheGrave.java
+++ b/Mage.Sets/src/mage/cards/s/StirTheGrave.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class StirTheGrave extends CardImpl {
+public final class StirTheGrave extends CardImpl {
public StirTheGrave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StirThePride.java b/Mage.Sets/src/mage/cards/s/StirThePride.java
index ec9a06fd0f4..a4e789c6860 100644
--- a/Mage.Sets/src/mage/cards/s/StirThePride.java
+++ b/Mage.Sets/src/mage/cards/s/StirThePride.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class StirThePride extends CardImpl {
+public final class StirThePride extends CardImpl {
public StirThePride(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StirTheSands.java b/Mage.Sets/src/mage/cards/s/StirTheSands.java
index 021188cb164..7f6afd41540 100644
--- a/Mage.Sets/src/mage/cards/s/StirTheSands.java
+++ b/Mage.Sets/src/mage/cards/s/StirTheSands.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author fireshoes
*/
-public class StirTheSands extends CardImpl {
+public final class StirTheSands extends CardImpl {
public StirTheSands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StirringWildwood.java b/Mage.Sets/src/mage/cards/s/StirringWildwood.java
index e89f9d3ab4a..244e8907dcc 100644
--- a/Mage.Sets/src/mage/cards/s/StirringWildwood.java
+++ b/Mage.Sets/src/mage/cards/s/StirringWildwood.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.Token;
*
* @author BetaSteward_at_googlemail.com
*/
-public class StirringWildwood extends CardImpl {
+public final class StirringWildwood extends CardImpl {
public StirringWildwood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/s/StitchInTime.java b/Mage.Sets/src/mage/cards/s/StitchInTime.java
index 5d070270586..7d1103124ff 100644
--- a/Mage.Sets/src/mage/cards/s/StitchInTime.java
+++ b/Mage.Sets/src/mage/cards/s/StitchInTime.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class StitchInTime extends CardImpl {
+public final class StitchInTime extends CardImpl {
public StitchInTime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StitchTogether.java b/Mage.Sets/src/mage/cards/s/StitchTogether.java
index 38e01a44be3..320bda23f45 100644
--- a/Mage.Sets/src/mage/cards/s/StitchTogether.java
+++ b/Mage.Sets/src/mage/cards/s/StitchTogether.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class StitchTogether extends CardImpl {
+public final class StitchTogether extends CardImpl {
public StitchTogether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StitchedDrake.java b/Mage.Sets/src/mage/cards/s/StitchedDrake.java
index 34d3aba131a..0f87a8e9b59 100644
--- a/Mage.Sets/src/mage/cards/s/StitchedDrake.java
+++ b/Mage.Sets/src/mage/cards/s/StitchedDrake.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author nantuko
*/
-public class StitchedDrake extends CardImpl {
+public final class StitchedDrake extends CardImpl {
public StitchedDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StitchedMangler.java b/Mage.Sets/src/mage/cards/s/StitchedMangler.java
index d876c86b38b..66ac9c3c1df 100644
--- a/Mage.Sets/src/mage/cards/s/StitchedMangler.java
+++ b/Mage.Sets/src/mage/cards/s/StitchedMangler.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class StitchedMangler extends CardImpl {
+public final class StitchedMangler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/s/StitcherGeralf.java b/Mage.Sets/src/mage/cards/s/StitcherGeralf.java
index c54597415b4..c327796c24e 100644
--- a/Mage.Sets/src/mage/cards/s/StitcherGeralf.java
+++ b/Mage.Sets/src/mage/cards/s/StitcherGeralf.java
@@ -51,7 +51,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class StitcherGeralf extends CardImpl {
+public final class StitcherGeralf extends CardImpl {
public StitcherGeralf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StitchersApprentice.java b/Mage.Sets/src/mage/cards/s/StitchersApprentice.java
index a26f562cf7a..61e657cf303 100644
--- a/Mage.Sets/src/mage/cards/s/StitchersApprentice.java
+++ b/Mage.Sets/src/mage/cards/s/StitchersApprentice.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author North
*/
-public class StitchersApprentice extends CardImpl {
+public final class StitchersApprentice extends CardImpl {
public StitchersApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StitchersGraft.java b/Mage.Sets/src/mage/cards/s/StitchersGraft.java
index bf71a08bee8..132281d992f 100644
--- a/Mage.Sets/src/mage/cards/s/StitchersGraft.java
+++ b/Mage.Sets/src/mage/cards/s/StitchersGraft.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class StitchersGraft extends CardImpl {
+public final class StitchersGraft extends CardImpl {
public StitchersGraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/s/StitchwingSkaab.java b/Mage.Sets/src/mage/cards/s/StitchwingSkaab.java
index 820f4406339..d5f231b93ae 100644
--- a/Mage.Sets/src/mage/cards/s/StitchwingSkaab.java
+++ b/Mage.Sets/src/mage/cards/s/StitchwingSkaab.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class StitchwingSkaab extends CardImpl {
+public final class StitchwingSkaab extends CardImpl {
public StitchwingSkaab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StoicAngel.java b/Mage.Sets/src/mage/cards/s/StoicAngel.java
index 54a8d8bb645..3ed9f3a092c 100644
--- a/Mage.Sets/src/mage/cards/s/StoicAngel.java
+++ b/Mage.Sets/src/mage/cards/s/StoicAngel.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class StoicAngel extends CardImpl {
+public final class StoicAngel extends CardImpl {
public StoicAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StoicBuilder.java b/Mage.Sets/src/mage/cards/s/StoicBuilder.java
index ecf07a71173..4126a752ecf 100644
--- a/Mage.Sets/src/mage/cards/s/StoicBuilder.java
+++ b/Mage.Sets/src/mage/cards/s/StoicBuilder.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class StoicBuilder extends CardImpl {
+public final class StoicBuilder extends CardImpl {
public StoicBuilder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StoicChampion.java b/Mage.Sets/src/mage/cards/s/StoicChampion.java
index 144820f97d2..ed332cf9094 100644
--- a/Mage.Sets/src/mage/cards/s/StoicChampion.java
+++ b/Mage.Sets/src/mage/cards/s/StoicChampion.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class StoicChampion extends CardImpl {
+public final class StoicChampion extends CardImpl {
public StoicChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StoicEphemera.java b/Mage.Sets/src/mage/cards/s/StoicEphemera.java
index 9587de28d89..545165d1421 100644
--- a/Mage.Sets/src/mage/cards/s/StoicEphemera.java
+++ b/Mage.Sets/src/mage/cards/s/StoicEphemera.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class StoicEphemera extends CardImpl {
+public final class StoicEphemera extends CardImpl {
public StoicEphemera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StoicRebuttal.java b/Mage.Sets/src/mage/cards/s/StoicRebuttal.java
index 1482a6a052f..d778de378ca 100644
--- a/Mage.Sets/src/mage/cards/s/StoicRebuttal.java
+++ b/Mage.Sets/src/mage/cards/s/StoicRebuttal.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
/**
* @author ayrat
*/
-public class StoicRebuttal extends CardImpl {
+public final class StoicRebuttal extends CardImpl {
public StoicRebuttal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StokeTheFlames.java b/Mage.Sets/src/mage/cards/s/StokeTheFlames.java
index 77c4044f4a9..8f5ab6b3aec 100644
--- a/Mage.Sets/src/mage/cards/s/StokeTheFlames.java
+++ b/Mage.Sets/src/mage/cards/s/StokeTheFlames.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Quercitron
*/
-public class StokeTheFlames extends CardImpl {
+public final class StokeTheFlames extends CardImpl {
public StokeTheFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StolenGoods.java b/Mage.Sets/src/mage/cards/s/StolenGoods.java
index 6004d759bea..bb4201fb5f6 100644
--- a/Mage.Sets/src/mage/cards/s/StolenGoods.java
+++ b/Mage.Sets/src/mage/cards/s/StolenGoods.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author noxx
*/
-public class StolenGoods extends CardImpl {
+public final class StolenGoods extends CardImpl {
public StolenGoods(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StolenGrain.java b/Mage.Sets/src/mage/cards/s/StolenGrain.java
index 261d1ab9bea..110817fc381 100644
--- a/Mage.Sets/src/mage/cards/s/StolenGrain.java
+++ b/Mage.Sets/src/mage/cards/s/StolenGrain.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author LoneFox
*/
-public class StolenGrain extends CardImpl {
+public final class StolenGrain extends CardImpl {
public StolenGrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StolenIdentity.java b/Mage.Sets/src/mage/cards/s/StolenIdentity.java
index 3a0d8a23f31..21c3308fffe 100644
--- a/Mage.Sets/src/mage/cards/s/StolenIdentity.java
+++ b/Mage.Sets/src/mage/cards/s/StolenIdentity.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class StolenIdentity extends CardImpl {
+public final class StolenIdentity extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/s/StolenStrategy.java b/Mage.Sets/src/mage/cards/s/StolenStrategy.java
new file mode 100644
index 00000000000..dddcdf9edbf
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/StolenStrategy.java
@@ -0,0 +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.cards.s;
+
+import java.util.Objects;
+import java.util.UUID;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.effects.AsThoughEffectImpl;
+import mage.abilities.effects.AsThoughManaEffect;
+import mage.abilities.effects.ContinuousEffect;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.AsThoughEffectType;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.ManaType;
+import mage.constants.Outcome;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.game.ExileZone;
+import mage.game.Game;
+import mage.players.ManaPoolItem;
+import mage.players.Player;
+import mage.target.targetpointer.FixedTarget;
+import mage.util.CardUtil;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class StolenStrategy extends CardImpl {
+
+ public StolenStrategy(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{R}");
+
+ // At the beginning of your upkeep, exile the top card of each opponent's library. Until end of turn, you may cast nonland cards from among those exiled cards, and you may spend mana as though it were mana of any color to cast those spells.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new StolenStrategyEffect(), TargetController.YOU, false));
+ }
+
+ public StolenStrategy(final StolenStrategy card) {
+ super(card);
+ }
+
+ @Override
+ public StolenStrategy copy() {
+ return new StolenStrategy(this);
+ }
+}
+
+class StolenStrategyEffect extends OneShotEffect {
+
+ public StolenStrategyEffect() {
+ super(Outcome.PutCreatureInPlay);
+ this.staticText = "exile the top card of each opponent's library. "
+ + "Until end of turn, you may cast nonland cards from among those exiled cards, "
+ + "and you may spend mana as though it were mana of any color to cast those spells";
+ }
+
+ public StolenStrategyEffect(final StolenStrategyEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public StolenStrategyEffect copy() {
+ return new StolenStrategyEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
+ if (!controller.hasOpponent(playerId, game)) {
+ continue;
+ }
+ Player damagedPlayer = game.getPlayer(playerId);
+ if (damagedPlayer == null) {
+ continue;
+ }
+ MageObject sourceObject = game.getObject(source.getSourceId());
+ UUID exileId = CardUtil.getCardExileZoneId(game, source);
+ Card card = damagedPlayer.getLibrary().getFromTop(game);
+ if (card != null) {
+ // move card to exile
+ controller.moveCardToExileWithInfo(card, exileId, sourceObject.getIdName(), source.getSourceId(), game, Zone.LIBRARY, true);
+ // Add effects only if the card has a spellAbility (e.g. not for lands).
+ if (!card.isLand() && card.getSpellAbility() != null) {
+ // allow to cast the card
+ game.addEffect(new StolenStrategyCastFromExileEffect(card.getId(), exileId), source);
+ // and you may spend mana as though it were mana of any color to cast it
+ ContinuousEffect effect = new StolenStrategySpendAnyManaEffect();
+ effect.setTargetPointer(new FixedTarget(card.getId()));
+ game.addEffect(effect, source);
+ }
+ }
+ }
+ return true;
+ }
+}
+
+class StolenStrategyCastFromExileEffect extends AsThoughEffectImpl {
+
+ private UUID cardId;
+ private UUID exileId;
+
+ public StolenStrategyCastFromExileEffect(UUID cardId, UUID exileId) {
+ super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfTurn, Outcome.Benefit);
+ staticText = "Until end of turn, you may cast that card and you may spend mana as though it were mana of any color to cast it";
+ this.cardId = cardId;
+ this.exileId = exileId;
+ }
+
+ public StolenStrategyCastFromExileEffect(final StolenStrategyCastFromExileEffect effect) {
+ super(effect);
+ this.cardId = effect.cardId;
+ this.exileId = effect.exileId;
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public StolenStrategyCastFromExileEffect copy() {
+ return new StolenStrategyCastFromExileEffect(this);
+ }
+
+ @Override
+ public boolean applies(UUID sourceId, Ability source, UUID affectedControllerId, Game game) {
+ if (sourceId.equals(cardId) && source.getControllerId().equals(affectedControllerId)) {
+ ExileZone exileZone = game.getState().getExile().getExileZone(exileId);
+ return exileZone != null && exileZone.contains(cardId);
+ }
+ return false;
+ }
+}
+
+class StolenStrategySpendAnyManaEffect extends AsThoughEffectImpl implements AsThoughManaEffect {
+
+ public StolenStrategySpendAnyManaEffect() {
+ super(AsThoughEffectType.SPEND_OTHER_MANA, Duration.EndOfTurn, Outcome.Benefit);
+ staticText = "you may spend mana as though it were mana of any color to cast it";
+ }
+
+ public StolenStrategySpendAnyManaEffect(final StolenStrategySpendAnyManaEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public StolenStrategySpendAnyManaEffect copy() {
+ return new StolenStrategySpendAnyManaEffect(this);
+ }
+
+ @Override
+ public boolean applies(UUID objectId, Ability source, UUID affectedControllerId, Game game) {
+ return source.getControllerId().equals(affectedControllerId)
+ && Objects.equals(objectId, ((FixedTarget) getTargetPointer()).getTarget())
+ && ((FixedTarget) getTargetPointer()).getZoneChangeCounter() + 1 == game.getState().getZoneChangeCounter(objectId)
+ && (((FixedTarget) getTargetPointer()).getZoneChangeCounter() + 1 == game.getState().getZoneChangeCounter(objectId))
+ && game.getState().getZone(objectId) == Zone.STACK;
+ }
+
+ @Override
+ public ManaType getAsThoughManaType(ManaType manaType, ManaPoolItem mana, UUID affectedControllerId, Ability source, Game game) {
+ return mana.getFirstAvailable();
+ }
+
+}
diff --git a/Mage.Sets/src/mage/cards/s/StompAndHowl.java b/Mage.Sets/src/mage/cards/s/StompAndHowl.java
index 8186d6dda58..17f32bf758b 100644
--- a/Mage.Sets/src/mage/cards/s/StompAndHowl.java
+++ b/Mage.Sets/src/mage/cards/s/StompAndHowl.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author vereena42
*/
-public class StompAndHowl extends CardImpl {
+public final class StompAndHowl extends CardImpl {
public StompAndHowl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StomperCub.java b/Mage.Sets/src/mage/cards/s/StomperCub.java
index 575a24befef..4258cef3339 100644
--- a/Mage.Sets/src/mage/cards/s/StomperCub.java
+++ b/Mage.Sets/src/mage/cards/s/StomperCub.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class StomperCub extends CardImpl {
+public final class StomperCub extends CardImpl {
public StomperCub (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StompingGround.java b/Mage.Sets/src/mage/cards/s/StompingGround.java
index 3ceff540122..f0aee004612 100644
--- a/Mage.Sets/src/mage/cards/s/StompingGround.java
+++ b/Mage.Sets/src/mage/cards/s/StompingGround.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class StompingGround extends CardImpl {
+public final class StompingGround extends CardImpl {
public StompingGround(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/s/StompingSlabs.java b/Mage.Sets/src/mage/cards/s/StompingSlabs.java
index 2a77c5d1618..0ec31b177bc 100644
--- a/Mage.Sets/src/mage/cards/s/StompingSlabs.java
+++ b/Mage.Sets/src/mage/cards/s/StompingSlabs.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class StompingSlabs extends CardImpl {
+public final class StompingSlabs extends CardImpl {
public StompingSlabs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneCalendar.java b/Mage.Sets/src/mage/cards/s/StoneCalendar.java
index f8c4b93cd05..779ee2f8e97 100644
--- a/Mage.Sets/src/mage/cards/s/StoneCalendar.java
+++ b/Mage.Sets/src/mage/cards/s/StoneCalendar.java
@@ -40,7 +40,7 @@ import mage.filter.FilterCard;
*
* @author LevelX2
*/
-public class StoneCalendar extends CardImpl {
+public final class StoneCalendar extends CardImpl {
public StoneCalendar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneCatapult.java b/Mage.Sets/src/mage/cards/s/StoneCatapult.java
index 8bb0730d233..46d00c3d5bb 100644
--- a/Mage.Sets/src/mage/cards/s/StoneCatapult.java
+++ b/Mage.Sets/src/mage/cards/s/StoneCatapult.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class StoneCatapult extends CardImpl {
+public final class StoneCatapult extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/StoneGiant.java b/Mage.Sets/src/mage/cards/s/StoneGiant.java
index 62304f3f38e..25218a4468c 100644
--- a/Mage.Sets/src/mage/cards/s/StoneGiant.java
+++ b/Mage.Sets/src/mage/cards/s/StoneGiant.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class StoneGiant extends CardImpl {
+public final class StoneGiant extends CardImpl {
public StoneGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneGolem.java b/Mage.Sets/src/mage/cards/s/StoneGolem.java
index 4cbf18c5d19..fb4ae1df39d 100644
--- a/Mage.Sets/src/mage/cards/s/StoneGolem.java
+++ b/Mage.Sets/src/mage/cards/s/StoneGolem.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class StoneGolem extends CardImpl {
+public final class StoneGolem extends CardImpl {
public StoneGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneHavenMedic.java b/Mage.Sets/src/mage/cards/s/StoneHavenMedic.java
index 8babbb0a067..d98b13db508 100644
--- a/Mage.Sets/src/mage/cards/s/StoneHavenMedic.java
+++ b/Mage.Sets/src/mage/cards/s/StoneHavenMedic.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class StoneHavenMedic extends CardImpl {
+public final class StoneHavenMedic extends CardImpl {
public StoneHavenMedic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneHavenOutfitter.java b/Mage.Sets/src/mage/cards/s/StoneHavenOutfitter.java
index 488b0072ee8..a181e081693 100644
--- a/Mage.Sets/src/mage/cards/s/StoneHavenOutfitter.java
+++ b/Mage.Sets/src/mage/cards/s/StoneHavenOutfitter.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.EquippedPredicate;
*
* @author LevelX2
*/
-public class StoneHavenOutfitter extends CardImpl {
+public final class StoneHavenOutfitter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("equipped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/StoneIdolTrap.java b/Mage.Sets/src/mage/cards/s/StoneIdolTrap.java
index 4201b5aae40..e6b150f2636 100644
--- a/Mage.Sets/src/mage/cards/s/StoneIdolTrap.java
+++ b/Mage.Sets/src/mage/cards/s/StoneIdolTrap.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class StoneIdolTrap extends CardImpl {
+public final class StoneIdolTrap extends CardImpl {
public StoneIdolTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneKavu.java b/Mage.Sets/src/mage/cards/s/StoneKavu.java
index 6a3cee21831..240e9721f73 100644
--- a/Mage.Sets/src/mage/cards/s/StoneKavu.java
+++ b/Mage.Sets/src/mage/cards/s/StoneKavu.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class StoneKavu extends CardImpl {
+public final class StoneKavu extends CardImpl {
public StoneKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneQuarry.java b/Mage.Sets/src/mage/cards/s/StoneQuarry.java
index d9018c9006d..1881704a4b2 100644
--- a/Mage.Sets/src/mage/cards/s/StoneQuarry.java
+++ b/Mage.Sets/src/mage/cards/s/StoneQuarry.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class StoneQuarry extends CardImpl {
+public final class StoneQuarry extends CardImpl {
public StoneQuarry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/StoneRain.java b/Mage.Sets/src/mage/cards/s/StoneRain.java
index fdf391272de..82d776df248 100644
--- a/Mage.Sets/src/mage/cards/s/StoneRain.java
+++ b/Mage.Sets/src/mage/cards/s/StoneRain.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class StoneRain extends CardImpl {
+public final class StoneRain extends CardImpl {
public StoneRain (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneSeederHierophant.java b/Mage.Sets/src/mage/cards/s/StoneSeederHierophant.java
index a7a50a17537..c0e9ee31441 100644
--- a/Mage.Sets/src/mage/cards/s/StoneSeederHierophant.java
+++ b/Mage.Sets/src/mage/cards/s/StoneSeederHierophant.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Wehk
*/
-public class StoneSeederHierophant extends CardImpl {
+public final class StoneSeederHierophant extends CardImpl {
public StoneSeederHierophant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneSpirit.java b/Mage.Sets/src/mage/cards/s/StoneSpirit.java
index cfd3be56e0c..ad79b062645 100644
--- a/Mage.Sets/src/mage/cards/s/StoneSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/StoneSpirit.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LoneFox
*/
-public class StoneSpirit extends CardImpl {
+public final class StoneSpirit extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/s/StoneThrowingDevils.java b/Mage.Sets/src/mage/cards/s/StoneThrowingDevils.java
index 647f80a5f9d..ec4b683d72f 100644
--- a/Mage.Sets/src/mage/cards/s/StoneThrowingDevils.java
+++ b/Mage.Sets/src/mage/cards/s/StoneThrowingDevils.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class StoneThrowingDevils extends CardImpl {
+public final class StoneThrowingDevils extends CardImpl {
public StoneThrowingDevils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneTongueBasilisk.java b/Mage.Sets/src/mage/cards/s/StoneTongueBasilisk.java
index 4aca643c0a2..08a51af5f1e 100644
--- a/Mage.Sets/src/mage/cards/s/StoneTongueBasilisk.java
+++ b/Mage.Sets/src/mage/cards/s/StoneTongueBasilisk.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class StoneTongueBasilisk extends CardImpl {
+public final class StoneTongueBasilisk extends CardImpl {
public StoneTongueBasilisk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StonebrowKrosanHero.java b/Mage.Sets/src/mage/cards/s/StonebrowKrosanHero.java
index 2211de10e70..be025e48fd2 100644
--- a/Mage.Sets/src/mage/cards/s/StonebrowKrosanHero.java
+++ b/Mage.Sets/src/mage/cards/s/StonebrowKrosanHero.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author emerald000
*/
-public class StonebrowKrosanHero extends CardImpl {
+public final class StonebrowKrosanHero extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature you control with trample");
static {
diff --git a/Mage.Sets/src/mage/cards/s/Stonecloaker.java b/Mage.Sets/src/mage/cards/s/Stonecloaker.java
index 272928f9f77..1cae4e8d316 100644
--- a/Mage.Sets/src/mage/cards/s/Stonecloaker.java
+++ b/Mage.Sets/src/mage/cards/s/Stonecloaker.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class Stonecloaker extends CardImpl {
+public final class Stonecloaker extends CardImpl {
public Stonecloaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StonefareCrocodile.java b/Mage.Sets/src/mage/cards/s/StonefareCrocodile.java
index 906d4ae3c6d..fbc994d0b9b 100644
--- a/Mage.Sets/src/mage/cards/s/StonefareCrocodile.java
+++ b/Mage.Sets/src/mage/cards/s/StonefareCrocodile.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class StonefareCrocodile extends CardImpl {
+public final class StonefareCrocodile extends CardImpl {
public StonefareCrocodile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.java b/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.java
index d99e9ebbba2..3938d5f44bd 100644
--- a/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.java
+++ b/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class StoneforgeAcolyte extends CardImpl {
+public final class StoneforgeAcolyte extends CardImpl {
private static final FilterControlledPermanent filterAlly = new FilterControlledPermanent("an untapped Ally you control");
private static final FilterCard filterEquipment = new FilterCard("an Equipment card");
diff --git a/Mage.Sets/src/mage/cards/s/StoneforgeMasterwork.java b/Mage.Sets/src/mage/cards/s/StoneforgeMasterwork.java
index 561d2cdd7c4..fe50a3d39d4 100644
--- a/Mage.Sets/src/mage/cards/s/StoneforgeMasterwork.java
+++ b/Mage.Sets/src/mage/cards/s/StoneforgeMasterwork.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class StoneforgeMasterwork extends CardImpl {
+public final class StoneforgeMasterwork extends CardImpl {
public StoneforgeMasterwork(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneforgeMystic.java b/Mage.Sets/src/mage/cards/s/StoneforgeMystic.java
index d8bc4e7b8c0..6f8128ce6e8 100644
--- a/Mage.Sets/src/mage/cards/s/StoneforgeMystic.java
+++ b/Mage.Sets/src/mage/cards/s/StoneforgeMystic.java
@@ -34,7 +34,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author BetaSteward_at_googlemail.com
*/
-public class StoneforgeMystic extends CardImpl {
+public final class StoneforgeMystic extends CardImpl {
private static final FilterCard filter = new FilterCard("an Equipment card");
@@ -70,7 +70,7 @@ public class StoneforgeMystic extends CardImpl {
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true));
// {1}{W}, {T}: You may put an Equipment card from your hand onto the battlefield.
- SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutPermanentOnBattlefieldEffect(filter), new ManaCostsImpl("{1}{W}"));
+ SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutCardFromHandOntoBattlefieldEffect(filter), new ManaCostsImpl("{1}{W}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/s/Stonefury.java b/Mage.Sets/src/mage/cards/s/Stonefury.java
index df77fad83d5..d7fe019f74f 100644
--- a/Mage.Sets/src/mage/cards/s/Stonefury.java
+++ b/Mage.Sets/src/mage/cards/s/Stonefury.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Stonefury extends CardImpl {
+public final class Stonefury extends CardImpl {
public Stonefury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Stonehands.java b/Mage.Sets/src/mage/cards/s/Stonehands.java
index 2d942f54d0b..1027e013028 100644
--- a/Mage.Sets/src/mage/cards/s/Stonehands.java
+++ b/Mage.Sets/src/mage/cards/s/Stonehands.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Stonehands extends CardImpl {
+public final class Stonehands extends CardImpl {
public Stonehands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StonehewerGiant.java b/Mage.Sets/src/mage/cards/s/StonehewerGiant.java
index 32395d6f4c0..760a4f81bf8 100644
--- a/Mage.Sets/src/mage/cards/s/StonehewerGiant.java
+++ b/Mage.Sets/src/mage/cards/s/StonehewerGiant.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class StonehewerGiant extends CardImpl {
+public final class StonehewerGiant extends CardImpl {
public StonehewerGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StonehoofChieftain.java b/Mage.Sets/src/mage/cards/s/StonehoofChieftain.java
index 7d1afdc4ff3..b7b5f751fb7 100644
--- a/Mage.Sets/src/mage/cards/s/StonehoofChieftain.java
+++ b/Mage.Sets/src/mage/cards/s/StonehoofChieftain.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author spjspj
*/
-public class StonehoofChieftain extends CardImpl {
+public final class StonehoofChieftain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/StonehornChanter.java b/Mage.Sets/src/mage/cards/s/StonehornChanter.java
index 4cb9dd88138..1a64b1921e8 100644
--- a/Mage.Sets/src/mage/cards/s/StonehornChanter.java
+++ b/Mage.Sets/src/mage/cards/s/StonehornChanter.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class StonehornChanter extends CardImpl {
+public final class StonehornChanter extends CardImpl {
public StonehornChanter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StonehornDignitary.java b/Mage.Sets/src/mage/cards/s/StonehornDignitary.java
index f5bba5eeab9..e77fa61e1ec 100644
--- a/Mage.Sets/src/mage/cards/s/StonehornDignitary.java
+++ b/Mage.Sets/src/mage/cards/s/StonehornDignitary.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetOpponent;
*
* @author nantuko
*/
-public class StonehornDignitary extends CardImpl {
+public final class StonehornDignitary extends CardImpl {
public StonehornDignitary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneshakerShaman.java b/Mage.Sets/src/mage/cards/s/StoneshakerShaman.java
index 49c7b4fe8fe..cd80bce5af0 100644
--- a/Mage.Sets/src/mage/cards/s/StoneshakerShaman.java
+++ b/Mage.Sets/src/mage/cards/s/StoneshakerShaman.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author fireshoes
*/
-public class StoneshakerShaman extends CardImpl {
+public final class StoneshakerShaman extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("untapped land");
diff --git a/Mage.Sets/src/mage/cards/s/StoneshockGiant.java b/Mage.Sets/src/mage/cards/s/StoneshockGiant.java
index 5748e88d7ca..2bb8d7bc42d 100644
--- a/Mage.Sets/src/mage/cards/s/StoneshockGiant.java
+++ b/Mage.Sets/src/mage/cards/s/StoneshockGiant.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class StoneshockGiant extends CardImpl {
+public final class StoneshockGiant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures without flying your opponents control");
static {
diff --git a/Mage.Sets/src/mage/cards/s/StonewingAntagonizer.java b/Mage.Sets/src/mage/cards/s/StonewingAntagonizer.java
index 68fc709e1fc..e3431b9eff9 100644
--- a/Mage.Sets/src/mage/cards/s/StonewingAntagonizer.java
+++ b/Mage.Sets/src/mage/cards/s/StonewingAntagonizer.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class StonewingAntagonizer extends CardImpl {
+public final class StonewingAntagonizer extends CardImpl {
public StonewingAntagonizer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/s/StonewiseFortifier.java b/Mage.Sets/src/mage/cards/s/StonewiseFortifier.java
index 991c6721acd..3c682a016ac 100644
--- a/Mage.Sets/src/mage/cards/s/StonewiseFortifier.java
+++ b/Mage.Sets/src/mage/cards/s/StonewiseFortifier.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class StonewiseFortifier extends CardImpl {
+public final class StonewiseFortifier extends CardImpl {
public StonewiseFortifier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StonewoodInvocation.java b/Mage.Sets/src/mage/cards/s/StonewoodInvocation.java
index 25bf7f50b05..3354806f19c 100644
--- a/Mage.Sets/src/mage/cards/s/StonewoodInvocation.java
+++ b/Mage.Sets/src/mage/cards/s/StonewoodInvocation.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class StonewoodInvocation extends CardImpl {
+public final class StonewoodInvocation extends CardImpl {
public StonewoodInvocation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StonewoodInvoker.java b/Mage.Sets/src/mage/cards/s/StonewoodInvoker.java
index c1ede8dbed3..822286d630a 100644
--- a/Mage.Sets/src/mage/cards/s/StonewoodInvoker.java
+++ b/Mage.Sets/src/mage/cards/s/StonewoodInvoker.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class StonewoodInvoker extends CardImpl {
+public final class StonewoodInvoker extends CardImpl {
public StonewoodInvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StoneworkPuma.java b/Mage.Sets/src/mage/cards/s/StoneworkPuma.java
index 08b58c05be9..23f387f435d 100644
--- a/Mage.Sets/src/mage/cards/s/StoneworkPuma.java
+++ b/Mage.Sets/src/mage/cards/s/StoneworkPuma.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class StoneworkPuma extends CardImpl {
+public final class StoneworkPuma extends CardImpl {
public StoneworkPuma(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/Stonewright.java b/Mage.Sets/src/mage/cards/s/Stonewright.java
index 8cef8beb30d..88f50b7e2d7 100644
--- a/Mage.Sets/src/mage/cards/s/Stonewright.java
+++ b/Mage.Sets/src/mage/cards/s/Stonewright.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class Stonewright extends CardImpl {
+public final class Stonewright extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, each of those creatures has \"{R}: This creature gets +1/+0 until end of turn.\"";
diff --git a/Mage.Sets/src/mage/cards/s/StonySilence.java b/Mage.Sets/src/mage/cards/s/StonySilence.java
index 0c3b30cd1ca..3484f4dcd35 100644
--- a/Mage.Sets/src/mage/cards/s/StonySilence.java
+++ b/Mage.Sets/src/mage/cards/s/StonySilence.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward
*/
-public class StonySilence extends CardImpl {
+public final class StonySilence extends CardImpl {
public StonySilence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StonybrookAngler.java b/Mage.Sets/src/mage/cards/s/StonybrookAngler.java
index e85d37bfff1..e6470219188 100644
--- a/Mage.Sets/src/mage/cards/s/StonybrookAngler.java
+++ b/Mage.Sets/src/mage/cards/s/StonybrookAngler.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class StonybrookAngler extends CardImpl {
+public final class StonybrookAngler extends CardImpl {
public StonybrookAngler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StonybrookBanneret.java b/Mage.Sets/src/mage/cards/s/StonybrookBanneret.java
index fb3a4db70c9..132980a0684 100644
--- a/Mage.Sets/src/mage/cards/s/StonybrookBanneret.java
+++ b/Mage.Sets/src/mage/cards/s/StonybrookBanneret.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class StonybrookBanneret extends CardImpl {
+public final class StonybrookBanneret extends CardImpl {
private static final FilterCard filter = new FilterCard("Merfolk spells and Wizard spells");
diff --git a/Mage.Sets/src/mage/cards/s/StonybrookSchoolmaster.java b/Mage.Sets/src/mage/cards/s/StonybrookSchoolmaster.java
index 48b4d4378de..79369036b94 100644
--- a/Mage.Sets/src/mage/cards/s/StonybrookSchoolmaster.java
+++ b/Mage.Sets/src/mage/cards/s/StonybrookSchoolmaster.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.MerfolkWizardToken;
*
* @author fireshoes
*/
-public class StonybrookSchoolmaster extends CardImpl {
+public final class StonybrookSchoolmaster extends CardImpl {
public StonybrookSchoolmaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StorageMatrix.java b/Mage.Sets/src/mage/cards/s/StorageMatrix.java
index 34149ac401b..d720f8cf5cc 100644
--- a/Mage.Sets/src/mage/cards/s/StorageMatrix.java
+++ b/Mage.Sets/src/mage/cards/s/StorageMatrix.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class StorageMatrix extends CardImpl {
+public final class StorageMatrix extends CardImpl {
public StorageMatrix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/StormCauldron.java b/Mage.Sets/src/mage/cards/s/StormCauldron.java
index 3f3faedd423..a240a546507 100644
--- a/Mage.Sets/src/mage/cards/s/StormCauldron.java
+++ b/Mage.Sets/src/mage/cards/s/StormCauldron.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class StormCauldron extends CardImpl {
+public final class StormCauldron extends CardImpl {
public StormCauldron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/s/StormCrow.java b/Mage.Sets/src/mage/cards/s/StormCrow.java
index 24a633b1861..bc163376b39 100644
--- a/Mage.Sets/src/mage/cards/s/StormCrow.java
+++ b/Mage.Sets/src/mage/cards/s/StormCrow.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class StormCrow extends CardImpl {
+public final class StormCrow extends CardImpl {
public StormCrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormEntity.java b/Mage.Sets/src/mage/cards/s/StormEntity.java
index ae7877180ec..c984fca7909 100644
--- a/Mage.Sets/src/mage/cards/s/StormEntity.java
+++ b/Mage.Sets/src/mage/cards/s/StormEntity.java
@@ -47,7 +47,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author Quercitron
*/
-public class StormEntity extends CardImpl {
+public final class StormEntity extends CardImpl {
public StormEntity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormFleetAerialist.java b/Mage.Sets/src/mage/cards/s/StormFleetAerialist.java
index 0e51079befc..0f63fe2e25e 100644
--- a/Mage.Sets/src/mage/cards/s/StormFleetAerialist.java
+++ b/Mage.Sets/src/mage/cards/s/StormFleetAerialist.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author TheElk801
*/
-public class StormFleetAerialist extends CardImpl {
+public final class StormFleetAerialist extends CardImpl {
public StormFleetAerialist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormFleetArsonist.java b/Mage.Sets/src/mage/cards/s/StormFleetArsonist.java
index 6988f647e3d..1ad156c05ab 100644
--- a/Mage.Sets/src/mage/cards/s/StormFleetArsonist.java
+++ b/Mage.Sets/src/mage/cards/s/StormFleetArsonist.java
@@ -46,7 +46,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author TheElk801
*/
-public class StormFleetArsonist extends CardImpl {
+public final class StormFleetArsonist extends CardImpl {
public StormFleetArsonist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormFleetPyromancer.java b/Mage.Sets/src/mage/cards/s/StormFleetPyromancer.java
index 08163b6bea5..c1d41d3f407 100644
--- a/Mage.Sets/src/mage/cards/s/StormFleetPyromancer.java
+++ b/Mage.Sets/src/mage/cards/s/StormFleetPyromancer.java
@@ -45,7 +45,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class StormFleetPyromancer extends CardImpl {
+public final class StormFleetPyromancer extends CardImpl {
public StormFleetPyromancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormFleetSprinter.java b/Mage.Sets/src/mage/cards/s/StormFleetSprinter.java
index 7e9c9287407..143fb3a080c 100644
--- a/Mage.Sets/src/mage/cards/s/StormFleetSprinter.java
+++ b/Mage.Sets/src/mage/cards/s/StormFleetSprinter.java
@@ -39,7 +39,7 @@ import mage.constants.*;
*
* @author JayDi85
*/
-public class StormFleetSprinter extends CardImpl {
+public final class StormFleetSprinter extends CardImpl {
public StormFleetSprinter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormFleetSpy.java b/Mage.Sets/src/mage/cards/s/StormFleetSpy.java
index a925ad7d9e3..3ee908e58d0 100644
--- a/Mage.Sets/src/mage/cards/s/StormFleetSpy.java
+++ b/Mage.Sets/src/mage/cards/s/StormFleetSpy.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class StormFleetSpy extends CardImpl {
+public final class StormFleetSpy extends CardImpl {
public StormFleetSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormFleetSwashbuckler.java b/Mage.Sets/src/mage/cards/s/StormFleetSwashbuckler.java
index e3772f0616f..66927cba989 100644
--- a/Mage.Sets/src/mage/cards/s/StormFleetSwashbuckler.java
+++ b/Mage.Sets/src/mage/cards/s/StormFleetSwashbuckler.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class StormFleetSwashbuckler extends CardImpl {
+public final class StormFleetSwashbuckler extends CardImpl {
public StormFleetSwashbuckler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormFront.java b/Mage.Sets/src/mage/cards/s/StormFront.java
index 90dc726a7e9..5298c554ac7 100644
--- a/Mage.Sets/src/mage/cards/s/StormFront.java
+++ b/Mage.Sets/src/mage/cards/s/StormFront.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author KholdFuzion
*/
-public class StormFront extends CardImpl {
+public final class StormFront extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/s/StormHerd.java b/Mage.Sets/src/mage/cards/s/StormHerd.java
index a8ca917bd1d..29eeea2d2f6 100644
--- a/Mage.Sets/src/mage/cards/s/StormHerd.java
+++ b/Mage.Sets/src/mage/cards/s/StormHerd.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.PegasusToken;
*
* @author fireshoes
*/
-public class StormHerd extends CardImpl {
+public final class StormHerd extends CardImpl {
public StormHerd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{8}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StormSculptor.java b/Mage.Sets/src/mage/cards/s/StormSculptor.java
index 7ba9bdf056f..f38b16c654e 100644
--- a/Mage.Sets/src/mage/cards/s/StormSculptor.java
+++ b/Mage.Sets/src/mage/cards/s/StormSculptor.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class StormSculptor extends CardImpl {
+public final class StormSculptor extends CardImpl {
public StormSculptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormSeeker.java b/Mage.Sets/src/mage/cards/s/StormSeeker.java
index efb336398ce..95db1f71e1d 100644
--- a/Mage.Sets/src/mage/cards/s/StormSeeker.java
+++ b/Mage.Sets/src/mage/cards/s/StormSeeker.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author hanasu
*/
-public class StormSeeker extends CardImpl {
+public final class StormSeeker extends CardImpl {
public StormSeeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StormShaman.java b/Mage.Sets/src/mage/cards/s/StormShaman.java
index d73763046ac..65393adca06 100644
--- a/Mage.Sets/src/mage/cards/s/StormShaman.java
+++ b/Mage.Sets/src/mage/cards/s/StormShaman.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class StormShaman extends CardImpl {
+public final class StormShaman extends CardImpl {
public StormShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormSpirit.java b/Mage.Sets/src/mage/cards/s/StormSpirit.java
index 4333bc27f30..1dc1863f0fd 100644
--- a/Mage.Sets/src/mage/cards/s/StormSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/StormSpirit.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class StormSpirit extends CardImpl {
+public final class StormSpirit extends CardImpl {
public StormSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormTheVault.java b/Mage.Sets/src/mage/cards/s/StormTheVault.java
index 27cd746b389..9f21433c6b6 100644
--- a/Mage.Sets/src/mage/cards/s/StormTheVault.java
+++ b/Mage.Sets/src/mage/cards/s/StormTheVault.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author LevelX2
*/
-public class StormTheVault extends CardImpl {
+public final class StormTheVault extends CardImpl {
public StormTheVault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormWorld.java b/Mage.Sets/src/mage/cards/s/StormWorld.java
index ed45c7246c7..9bb54962d4f 100644
--- a/Mage.Sets/src/mage/cards/s/StormWorld.java
+++ b/Mage.Sets/src/mage/cards/s/StormWorld.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class StormWorld extends CardImpl {
+public final class StormWorld extends CardImpl {
public StormWorld(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Stormbind.java b/Mage.Sets/src/mage/cards/s/Stormbind.java
index 22f938de26c..3238453e192 100644
--- a/Mage.Sets/src/mage/cards/s/Stormbind.java
+++ b/Mage.Sets/src/mage/cards/s/Stormbind.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*/
-public class Stormbind extends CardImpl {
+public final class Stormbind extends CardImpl {
public Stormbind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StormbloodBerserker.java b/Mage.Sets/src/mage/cards/s/StormbloodBerserker.java
index 4970f4f1798..4ce59958314 100644
--- a/Mage.Sets/src/mage/cards/s/StormbloodBerserker.java
+++ b/Mage.Sets/src/mage/cards/s/StormbloodBerserker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author nantuko
*/
-public class StormbloodBerserker extends CardImpl {
+public final class StormbloodBerserker extends CardImpl {
public StormbloodBerserker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormboundGeist.java b/Mage.Sets/src/mage/cards/s/StormboundGeist.java
index 57cc2c6ea95..40fc4beb6bb 100644
--- a/Mage.Sets/src/mage/cards/s/StormboundGeist.java
+++ b/Mage.Sets/src/mage/cards/s/StormboundGeist.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class StormboundGeist extends CardImpl {
+public final class StormboundGeist extends CardImpl {
public StormboundGeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormbreathDragon.java b/Mage.Sets/src/mage/cards/s/StormbreathDragon.java
index 2d95adef18d..8c796e2448a 100644
--- a/Mage.Sets/src/mage/cards/s/StormbreathDragon.java
+++ b/Mage.Sets/src/mage/cards/s/StormbreathDragon.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class StormbreathDragon extends CardImpl {
+public final class StormbreathDragon extends CardImpl {
public StormbreathDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormcallerOfKeranos.java b/Mage.Sets/src/mage/cards/s/StormcallerOfKeranos.java
index eb89532ce6d..39c6e884364 100644
--- a/Mage.Sets/src/mage/cards/s/StormcallerOfKeranos.java
+++ b/Mage.Sets/src/mage/cards/s/StormcallerOfKeranos.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class StormcallerOfKeranos extends CardImpl {
+public final class StormcallerOfKeranos extends CardImpl {
public StormcallerOfKeranos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormcallersBoon.java b/Mage.Sets/src/mage/cards/s/StormcallersBoon.java
index 40fc7f4594e..0b08520e01d 100644
--- a/Mage.Sets/src/mage/cards/s/StormcallersBoon.java
+++ b/Mage.Sets/src/mage/cards/s/StormcallersBoon.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Loki
*/
-public class StormcallersBoon extends CardImpl {
+public final class StormcallersBoon extends CardImpl {
public StormcallersBoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormchaserChimera.java b/Mage.Sets/src/mage/cards/s/StormchaserChimera.java
index 7b0f5701a43..26adb846061 100644
--- a/Mage.Sets/src/mage/cards/s/StormchaserChimera.java
+++ b/Mage.Sets/src/mage/cards/s/StormchaserChimera.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class StormchaserChimera extends CardImpl {
+public final class StormchaserChimera extends CardImpl {
public StormchaserChimera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormchaserMage.java b/Mage.Sets/src/mage/cards/s/StormchaserMage.java
index ac62eb93b72..64c4da1aec8 100644
--- a/Mage.Sets/src/mage/cards/s/StormchaserMage.java
+++ b/Mage.Sets/src/mage/cards/s/StormchaserMage.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class StormchaserMage extends CardImpl {
+public final class StormchaserMage extends CardImpl {
public StormchaserMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormcloudDjinn.java b/Mage.Sets/src/mage/cards/s/StormcloudDjinn.java
index 70c509b9445..e59a6947082 100644
--- a/Mage.Sets/src/mage/cards/s/StormcloudDjinn.java
+++ b/Mage.Sets/src/mage/cards/s/StormcloudDjinn.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class StormcloudDjinn extends CardImpl {
+public final class StormcloudDjinn extends CardImpl {
public StormcloudDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormcragElemental.java b/Mage.Sets/src/mage/cards/s/StormcragElemental.java
index c8d1a6e1177..7f482164fab 100644
--- a/Mage.Sets/src/mage/cards/s/StormcragElemental.java
+++ b/Mage.Sets/src/mage/cards/s/StormcragElemental.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class StormcragElemental extends CardImpl {
+public final class StormcragElemental extends CardImpl {
public StormcragElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StormfrontPegasus.java b/Mage.Sets/src/mage/cards/s/StormfrontPegasus.java
index 82af207619a..2aae584edbc 100644
--- a/Mage.Sets/src/mage/cards/s/StormfrontPegasus.java
+++ b/Mage.Sets/src/mage/cards/s/StormfrontPegasus.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class StormfrontPegasus extends CardImpl {
+public final class StormfrontPegasus extends CardImpl {
public StormfrontPegasus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StormfrontRiders.java b/Mage.Sets/src/mage/cards/s/StormfrontRiders.java
index ed9fb2d07fb..c0573c37e55 100644
--- a/Mage.Sets/src/mage/cards/s/StormfrontRiders.java
+++ b/Mage.Sets/src/mage/cards/s/StormfrontRiders.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.SoldierToken;
*
* @author LevelX2
*/
-public class StormfrontRiders extends CardImpl {
+public final class StormfrontRiders extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/s/StormriderRig.java b/Mage.Sets/src/mage/cards/s/StormriderRig.java
index 740d3e30255..7c2e8e968e6 100644
--- a/Mage.Sets/src/mage/cards/s/StormriderRig.java
+++ b/Mage.Sets/src/mage/cards/s/StormriderRig.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class StormriderRig extends CardImpl {
+public final class StormriderRig extends CardImpl {
public StormriderRig(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/StormriderSpirit.java b/Mage.Sets/src/mage/cards/s/StormriderSpirit.java
index bcf885c22cf..9495719e81a 100644
--- a/Mage.Sets/src/mage/cards/s/StormriderSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/StormriderSpirit.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class StormriderSpirit extends CardImpl {
+public final class StormriderSpirit extends CardImpl {
public StormriderSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormscapeApprentice.java b/Mage.Sets/src/mage/cards/s/StormscapeApprentice.java
index 008b70611cb..8608e42dce8 100644
--- a/Mage.Sets/src/mage/cards/s/StormscapeApprentice.java
+++ b/Mage.Sets/src/mage/cards/s/StormscapeApprentice.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class StormscapeApprentice extends CardImpl {
+public final class StormscapeApprentice extends CardImpl {
public StormscapeApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormscapeBattlemage.java b/Mage.Sets/src/mage/cards/s/StormscapeBattlemage.java
index fe4b5ab6cf3..d0598faf48d 100644
--- a/Mage.Sets/src/mage/cards/s/StormscapeBattlemage.java
+++ b/Mage.Sets/src/mage/cards/s/StormscapeBattlemage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class StormscapeBattlemage extends CardImpl {
+public final class StormscapeBattlemage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
static {
diff --git a/Mage.Sets/src/mage/cards/s/StormscapeFamiliar.java b/Mage.Sets/src/mage/cards/s/StormscapeFamiliar.java
index 36f745d01a3..e48060b7cb5 100644
--- a/Mage.Sets/src/mage/cards/s/StormscapeFamiliar.java
+++ b/Mage.Sets/src/mage/cards/s/StormscapeFamiliar.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class StormscapeFamiliar extends CardImpl {
+public final class StormscapeFamiliar extends CardImpl {
private static final FilterCard filter = new FilterCard("White spells and black spells");
diff --git a/Mage.Sets/src/mage/cards/s/StormscapeMaster.java b/Mage.Sets/src/mage/cards/s/StormscapeMaster.java
index 2fc0a0097e0..afbc69a9823 100644
--- a/Mage.Sets/src/mage/cards/s/StormscapeMaster.java
+++ b/Mage.Sets/src/mage/cards/s/StormscapeMaster.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*
*/
-public class StormscapeMaster extends CardImpl {
+public final class StormscapeMaster extends CardImpl {
public StormscapeMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormsurgeKraken.java b/Mage.Sets/src/mage/cards/s/StormsurgeKraken.java
index f330231c46c..bc232a672ef 100644
--- a/Mage.Sets/src/mage/cards/s/StormsurgeKraken.java
+++ b/Mage.Sets/src/mage/cards/s/StormsurgeKraken.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class StormsurgeKraken extends CardImpl {
+public final class StormsurgeKraken extends CardImpl {
public StormsurgeKraken(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormtideLeviathan.java b/Mage.Sets/src/mage/cards/s/StormtideLeviathan.java
index 86bbf54402c..413eb353593 100644
--- a/Mage.Sets/src/mage/cards/s/StormtideLeviathan.java
+++ b/Mage.Sets/src/mage/cards/s/StormtideLeviathan.java
@@ -57,7 +57,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class StormtideLeviathan extends CardImpl {
+public final class StormtideLeviathan extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures without flying or islandwalk");
diff --git a/Mage.Sets/src/mage/cards/s/StormwatchEagle.java b/Mage.Sets/src/mage/cards/s/StormwatchEagle.java
index beb57eb29a0..29f58b6015a 100644
--- a/Mage.Sets/src/mage/cards/s/StormwatchEagle.java
+++ b/Mage.Sets/src/mage/cards/s/StormwatchEagle.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class StormwatchEagle extends CardImpl {
+public final class StormwatchEagle extends CardImpl {
public StormwatchEagle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StormwingDragon.java b/Mage.Sets/src/mage/cards/s/StormwingDragon.java
index daae80e3be1..c0636d5ddac 100644
--- a/Mage.Sets/src/mage/cards/s/StormwingDragon.java
+++ b/Mage.Sets/src/mage/cards/s/StormwingDragon.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class StormwingDragon extends CardImpl {
+public final class StormwingDragon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other Dragon creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/StoryCircle.java b/Mage.Sets/src/mage/cards/s/StoryCircle.java
index 52c54524b5f..68c49de4464 100644
--- a/Mage.Sets/src/mage/cards/s/StoryCircle.java
+++ b/Mage.Sets/src/mage/cards/s/StoryCircle.java
@@ -50,7 +50,7 @@ import mage.game.Game;
* @author LoneFox
*/
-public class StoryCircle extends CardImpl {
+public final class StoryCircle extends CardImpl {
public StoryCircle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Strafe.java b/Mage.Sets/src/mage/cards/s/Strafe.java
index d50b7cd30cd..2c2f49772ad 100644
--- a/Mage.Sets/src/mage/cards/s/Strafe.java
+++ b/Mage.Sets/src/mage/cards/s/Strafe.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class Strafe extends CardImpl {
+public final class Strafe extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonred creature");
diff --git a/Mage.Sets/src/mage/cards/s/StrandsOfNight.java b/Mage.Sets/src/mage/cards/s/StrandsOfNight.java
index ab46d2cb96d..cbce22d914f 100644
--- a/Mage.Sets/src/mage/cards/s/StrandsOfNight.java
+++ b/Mage.Sets/src/mage/cards/s/StrandsOfNight.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Quercitron
*/
-public class StrandsOfNight extends CardImpl {
+public final class StrandsOfNight extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Swamp");
diff --git a/Mage.Sets/src/mage/cards/s/StrandsOfUndeath.java b/Mage.Sets/src/mage/cards/s/StrandsOfUndeath.java
index 4e6ebbd5704..743eac84bb4 100644
--- a/Mage.Sets/src/mage/cards/s/StrandsOfUndeath.java
+++ b/Mage.Sets/src/mage/cards/s/StrandsOfUndeath.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author lopho
*/
-public class StrandsOfUndeath extends CardImpl {
+public final class StrandsOfUndeath extends CardImpl {
public StrandsOfUndeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Strandwalker.java b/Mage.Sets/src/mage/cards/s/Strandwalker.java
index a780283ca86..4942f2540bc 100644
--- a/Mage.Sets/src/mage/cards/s/Strandwalker.java
+++ b/Mage.Sets/src/mage/cards/s/Strandwalker.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class Strandwalker extends CardImpl {
+public final class Strandwalker extends CardImpl {
public Strandwalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/s/StrangeAugmentation.java b/Mage.Sets/src/mage/cards/s/StrangeAugmentation.java
index 4bd08f62904..eac8520cea9 100644
--- a/Mage.Sets/src/mage/cards/s/StrangeAugmentation.java
+++ b/Mage.Sets/src/mage/cards/s/StrangeAugmentation.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class StrangeAugmentation extends CardImpl {
+public final class StrangeAugmentation extends CardImpl {
public StrangeAugmentation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StrangeInversion.java b/Mage.Sets/src/mage/cards/s/StrangeInversion.java
index 3db9687d757..9d1e28eb28b 100644
--- a/Mage.Sets/src/mage/cards/s/StrangeInversion.java
+++ b/Mage.Sets/src/mage/cards/s/StrangeInversion.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class StrangeInversion extends CardImpl {
+public final class StrangeInversion extends CardImpl {
public StrangeInversion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Stranglehold.java b/Mage.Sets/src/mage/cards/s/Stranglehold.java
index 9c7e269cba4..9aea16b6fd9 100644
--- a/Mage.Sets/src/mage/cards/s/Stranglehold.java
+++ b/Mage.Sets/src/mage/cards/s/Stranglehold.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class Stranglehold extends CardImpl {
+public final class Stranglehold extends CardImpl {
public Stranglehold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StranglerootGeist.java b/Mage.Sets/src/mage/cards/s/StranglerootGeist.java
index 5f91eb2ee6d..ab6260d86a3 100644
--- a/Mage.Sets/src/mage/cards/s/StranglerootGeist.java
+++ b/Mage.Sets/src/mage/cards/s/StranglerootGeist.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class StranglerootGeist extends CardImpl {
+public final class StranglerootGeist extends CardImpl {
public StranglerootGeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StranglingSoot.java b/Mage.Sets/src/mage/cards/s/StranglingSoot.java
index e0d40c4eb8c..2ca1eda367b 100644
--- a/Mage.Sets/src/mage/cards/s/StranglingSoot.java
+++ b/Mage.Sets/src/mage/cards/s/StranglingSoot.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author ilcartographer
*/
-public class StranglingSoot extends CardImpl {
+public final class StranglingSoot extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with toughness 3 or less");
diff --git a/Mage.Sets/src/mage/cards/s/StrataScythe.java b/Mage.Sets/src/mage/cards/s/StrataScythe.java
index f7e08211bcf..19ac17f808b 100644
--- a/Mage.Sets/src/mage/cards/s/StrataScythe.java
+++ b/Mage.Sets/src/mage/cards/s/StrataScythe.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class StrataScythe extends CardImpl {
+public final class StrataScythe extends CardImpl {
public StrataScythe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/Stratadon.java b/Mage.Sets/src/mage/cards/s/Stratadon.java
index fea57a7ffed..41d80f5ede1 100644
--- a/Mage.Sets/src/mage/cards/s/Stratadon.java
+++ b/Mage.Sets/src/mage/cards/s/Stratadon.java
@@ -49,7 +49,7 @@ import mage.util.CardUtil;
*
* @author LoneFox
*/
-public class Stratadon extends CardImpl {
+public final class Stratadon extends CardImpl {
public Stratadon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{10}");
diff --git a/Mage.Sets/src/mage/cards/s/StrategicPlanning.java b/Mage.Sets/src/mage/cards/s/StrategicPlanning.java
index cc0d6fe8a5a..69e5f819a93 100644
--- a/Mage.Sets/src/mage/cards/s/StrategicPlanning.java
+++ b/Mage.Sets/src/mage/cards/s/StrategicPlanning.java
@@ -40,7 +40,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class StrategicPlanning extends CardImpl {
+public final class StrategicPlanning extends CardImpl {
public StrategicPlanning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StrategySchmategy.java b/Mage.Sets/src/mage/cards/s/StrategySchmategy.java
index afabb5532be..cf1403c6a90 100644
--- a/Mage.Sets/src/mage/cards/s/StrategySchmategy.java
+++ b/Mage.Sets/src/mage/cards/s/StrategySchmategy.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class StrategySchmategy extends CardImpl {
+public final class StrategySchmategy extends CardImpl {
public StrategySchmategy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Stratozeppelid.java b/Mage.Sets/src/mage/cards/s/Stratozeppelid.java
index 097b210919f..3ae06493c9d 100644
--- a/Mage.Sets/src/mage/cards/s/Stratozeppelid.java
+++ b/Mage.Sets/src/mage/cards/s/Stratozeppelid.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class Stratozeppelid extends CardImpl {
+public final class Stratozeppelid extends CardImpl {
public Stratozeppelid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StratusDancer.java b/Mage.Sets/src/mage/cards/s/StratusDancer.java
index c2b9b59e694..8de97b9030c 100644
--- a/Mage.Sets/src/mage/cards/s/StratusDancer.java
+++ b/Mage.Sets/src/mage/cards/s/StratusDancer.java
@@ -47,7 +47,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class StratusDancer extends CardImpl {
+public final class StratusDancer extends CardImpl {
public StratusDancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StratusWalk.java b/Mage.Sets/src/mage/cards/s/StratusWalk.java
index 508437bccc5..9de917e2c98 100644
--- a/Mage.Sets/src/mage/cards/s/StratusWalk.java
+++ b/Mage.Sets/src/mage/cards/s/StratusWalk.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class StratusWalk extends CardImpl {
+public final class StratusWalk extends CardImpl {
public StratusWalk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StrawGolem.java b/Mage.Sets/src/mage/cards/s/StrawGolem.java
index af11185b80d..2fb3642a0aa 100644
--- a/Mage.Sets/src/mage/cards/s/StrawGolem.java
+++ b/Mage.Sets/src/mage/cards/s/StrawGolem.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author Derpthemeus
*/
-public class StrawGolem extends CardImpl {
+public final class StrawGolem extends CardImpl {
public StrawGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/s/StrawSoldiers.java b/Mage.Sets/src/mage/cards/s/StrawSoldiers.java
index 39060ef28fb..cca1f82e328 100644
--- a/Mage.Sets/src/mage/cards/s/StrawSoldiers.java
+++ b/Mage.Sets/src/mage/cards/s/StrawSoldiers.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class StrawSoldiers extends CardImpl {
+public final class StrawSoldiers extends CardImpl {
public StrawSoldiers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StreamHopper.java b/Mage.Sets/src/mage/cards/s/StreamHopper.java
index d8e648e49df..dc88c04e609 100644
--- a/Mage.Sets/src/mage/cards/s/StreamHopper.java
+++ b/Mage.Sets/src/mage/cards/s/StreamHopper.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class StreamHopper extends CardImpl {
+public final class StreamHopper extends CardImpl {
public StreamHopper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U/R}");
diff --git a/Mage.Sets/src/mage/cards/s/StreamOfAcid.java b/Mage.Sets/src/mage/cards/s/StreamOfAcid.java
index 68729acccb0..2bc0abc8b16 100644
--- a/Mage.Sets/src/mage/cards/s/StreamOfAcid.java
+++ b/Mage.Sets/src/mage/cards/s/StreamOfAcid.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class StreamOfAcid extends CardImpl {
+public final class StreamOfAcid extends CardImpl {
static final FilterPermanent filter = new FilterPermanent("land or nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/StreamOfConsciousness.java b/Mage.Sets/src/mage/cards/s/StreamOfConsciousness.java
index 1f7d2701959..081615124e4 100644
--- a/Mage.Sets/src/mage/cards/s/StreamOfConsciousness.java
+++ b/Mage.Sets/src/mage/cards/s/StreamOfConsciousness.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class StreamOfConsciousness extends CardImpl {
+public final class StreamOfConsciousness extends CardImpl {
public StreamOfConsciousness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StreamOfLife.java b/Mage.Sets/src/mage/cards/s/StreamOfLife.java
index edf0b679097..50e86cc8b58 100644
--- a/Mage.Sets/src/mage/cards/s/StreamOfLife.java
+++ b/Mage.Sets/src/mage/cards/s/StreamOfLife.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class StreamOfLife extends CardImpl {
+public final class StreamOfLife extends CardImpl {
public StreamOfLife(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StreamOfUnconsciousness.java b/Mage.Sets/src/mage/cards/s/StreamOfUnconsciousness.java
index 0ef16ded60f..b56de9557aa 100644
--- a/Mage.Sets/src/mage/cards/s/StreamOfUnconsciousness.java
+++ b/Mage.Sets/src/mage/cards/s/StreamOfUnconsciousness.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class StreamOfUnconsciousness extends CardImpl {
+public final class StreamOfUnconsciousness extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wizard");
diff --git a/Mage.Sets/src/mage/cards/s/StreambedAquitects.java b/Mage.Sets/src/mage/cards/s/StreambedAquitects.java
index b129dc46a1e..9aa83d0ab90 100644
--- a/Mage.Sets/src/mage/cards/s/StreambedAquitects.java
+++ b/Mage.Sets/src/mage/cards/s/StreambedAquitects.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class StreambedAquitects extends CardImpl {
+public final class StreambedAquitects extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk creature");
static {
diff --git a/Mage.Sets/src/mage/cards/s/StreetSpasm.java b/Mage.Sets/src/mage/cards/s/StreetSpasm.java
index 15650abacca..0915b491d1e 100644
--- a/Mage.Sets/src/mage/cards/s/StreetSpasm.java
+++ b/Mage.Sets/src/mage/cards/s/StreetSpasm.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class StreetSpasm extends CardImpl {
+public final class StreetSpasm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying you don't control");
diff --git a/Mage.Sets/src/mage/cards/s/StreetSweeper.java b/Mage.Sets/src/mage/cards/s/StreetSweeper.java
index 3a62f39c723..ceb6036be1a 100644
--- a/Mage.Sets/src/mage/cards/s/StreetSweeper.java
+++ b/Mage.Sets/src/mage/cards/s/StreetSweeper.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class StreetSweeper extends CardImpl {
+public final class StreetSweeper extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures with defender you control");
diff --git a/Mage.Sets/src/mage/cards/s/StreetWraith.java b/Mage.Sets/src/mage/cards/s/StreetWraith.java
index fc2d0c04303..32f92861a0c 100644
--- a/Mage.Sets/src/mage/cards/s/StreetWraith.java
+++ b/Mage.Sets/src/mage/cards/s/StreetWraith.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class StreetWraith extends CardImpl {
+public final class StreetWraith extends CardImpl {
public StreetWraith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StreetbreakerWurm.java b/Mage.Sets/src/mage/cards/s/StreetbreakerWurm.java
index 3ac00d72ff8..3b5f6d71117 100644
--- a/Mage.Sets/src/mage/cards/s/StreetbreakerWurm.java
+++ b/Mage.Sets/src/mage/cards/s/StreetbreakerWurm.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class StreetbreakerWurm extends CardImpl {
+public final class StreetbreakerWurm extends CardImpl {
public StreetbreakerWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StrengthFromTheFallen.java b/Mage.Sets/src/mage/cards/s/StrengthFromTheFallen.java
index 07f9ea2eef1..5328b1941fa 100644
--- a/Mage.Sets/src/mage/cards/s/StrengthFromTheFallen.java
+++ b/Mage.Sets/src/mage/cards/s/StrengthFromTheFallen.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class StrengthFromTheFallen extends CardImpl {
+public final class StrengthFromTheFallen extends CardImpl {
public StrengthFromTheFallen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StrengthInNumbers.java b/Mage.Sets/src/mage/cards/s/StrengthInNumbers.java
index 77a3886cb70..91c41e7bffa 100644
--- a/Mage.Sets/src/mage/cards/s/StrengthInNumbers.java
+++ b/Mage.Sets/src/mage/cards/s/StrengthInNumbers.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class StrengthInNumbers extends CardImpl {
+public final class StrengthInNumbers extends CardImpl {
public StrengthInNumbers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfArms.java b/Mage.Sets/src/mage/cards/s/StrengthOfArms.java
index e172780f6a6..3659a89cef7 100644
--- a/Mage.Sets/src/mage/cards/s/StrengthOfArms.java
+++ b/Mage.Sets/src/mage/cards/s/StrengthOfArms.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class StrengthOfArms extends CardImpl {
+public final class StrengthOfArms extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("If you control an Equipment,");
static {
diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfCedars.java b/Mage.Sets/src/mage/cards/s/StrengthOfCedars.java
index 5656f0d3f8f..b6e12e80ebf 100644
--- a/Mage.Sets/src/mage/cards/s/StrengthOfCedars.java
+++ b/Mage.Sets/src/mage/cards/s/StrengthOfCedars.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class StrengthOfCedars extends CardImpl {
+public final class StrengthOfCedars extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("the number of lands you control");
public StrengthOfCedars (UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfIsolation.java b/Mage.Sets/src/mage/cards/s/StrengthOfIsolation.java
index ef0d7f0645e..05ef6f52d6c 100644
--- a/Mage.Sets/src/mage/cards/s/StrengthOfIsolation.java
+++ b/Mage.Sets/src/mage/cards/s/StrengthOfIsolation.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class StrengthOfIsolation extends CardImpl {
+public final class StrengthOfIsolation extends CardImpl {
public StrengthOfIsolation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfLunacy.java b/Mage.Sets/src/mage/cards/s/StrengthOfLunacy.java
index 902f8c9ec3a..01761d4d6f3 100644
--- a/Mage.Sets/src/mage/cards/s/StrengthOfLunacy.java
+++ b/Mage.Sets/src/mage/cards/s/StrengthOfLunacy.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class StrengthOfLunacy extends CardImpl {
+public final class StrengthOfLunacy extends CardImpl {
public StrengthOfLunacy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfNight.java b/Mage.Sets/src/mage/cards/s/StrengthOfNight.java
index e8be274589f..e91a70e0a81 100644
--- a/Mage.Sets/src/mage/cards/s/StrengthOfNight.java
+++ b/Mage.Sets/src/mage/cards/s/StrengthOfNight.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
* @author LoneFox
*/
-public class StrengthOfNight extends CardImpl {
+public final class StrengthOfNight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures");
diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfThePack.java b/Mage.Sets/src/mage/cards/s/StrengthOfThePack.java
index ecea83a38f0..b21905a1636 100644
--- a/Mage.Sets/src/mage/cards/s/StrengthOfThePack.java
+++ b/Mage.Sets/src/mage/cards/s/StrengthOfThePack.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author JayDi85
*/
-public class StrengthOfThePack extends CardImpl {
+public final class StrengthOfThePack extends CardImpl {
public StrengthOfThePack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfTheTajuru.java b/Mage.Sets/src/mage/cards/s/StrengthOfTheTajuru.java
index 2db540131ce..d3f0575fb8b 100644
--- a/Mage.Sets/src/mage/cards/s/StrengthOfTheTajuru.java
+++ b/Mage.Sets/src/mage/cards/s/StrengthOfTheTajuru.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class StrengthOfTheTajuru extends CardImpl {
+public final class StrengthOfTheTajuru extends CardImpl {
public StrengthOfTheTajuru(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfUnity.java b/Mage.Sets/src/mage/cards/s/StrengthOfUnity.java
index 8699aab765f..4cb4f68493f 100644
--- a/Mage.Sets/src/mage/cards/s/StrengthOfUnity.java
+++ b/Mage.Sets/src/mage/cards/s/StrengthOfUnity.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class StrengthOfUnity extends CardImpl {
+public final class StrengthOfUnity extends CardImpl {
public StrengthOfUnity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StriderHarness.java b/Mage.Sets/src/mage/cards/s/StriderHarness.java
index d0495f0b6f9..3e2910d35fe 100644
--- a/Mage.Sets/src/mage/cards/s/StriderHarness.java
+++ b/Mage.Sets/src/mage/cards/s/StriderHarness.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class StriderHarness extends CardImpl {
+public final class StriderHarness extends CardImpl {
public StriderHarness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/StrikeTeamCommando.java b/Mage.Sets/src/mage/cards/s/StrikeTeamCommando.java
index 116d04fe936..38e4102d1b9 100644
--- a/Mage.Sets/src/mage/cards/s/StrikeTeamCommando.java
+++ b/Mage.Sets/src/mage/cards/s/StrikeTeamCommando.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Styxo
*/
-public class StrikeTeamCommando extends CardImpl {
+public final class StrikeTeamCommando extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifact without spaceflight");
diff --git a/Mage.Sets/src/mage/cards/s/StrikingSliver.java b/Mage.Sets/src/mage/cards/s/StrikingSliver.java
index ccfcfd0d4ee..b4acb475341 100644
--- a/Mage.Sets/src/mage/cards/s/StrikingSliver.java
+++ b/Mage.Sets/src/mage/cards/s/StrikingSliver.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class StrikingSliver extends CardImpl {
+public final class StrikingSliver extends CardImpl {
public StrikingSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StrionicResonator.java b/Mage.Sets/src/mage/cards/s/StrionicResonator.java
index f3986009fe1..71740551da4 100644
--- a/Mage.Sets/src/mage/cards/s/StrionicResonator.java
+++ b/Mage.Sets/src/mage/cards/s/StrionicResonator.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetTriggeredAbility;
*
* @author Plopman
*/
-public class StrionicResonator extends CardImpl {
+public final class StrionicResonator extends CardImpl {
public StrionicResonator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/StripBare.java b/Mage.Sets/src/mage/cards/s/StripBare.java
index cc54780ac23..4f13e5fd9c5 100644
--- a/Mage.Sets/src/mage/cards/s/StripBare.java
+++ b/Mage.Sets/src/mage/cards/s/StripBare.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*
*/
-public class StripBare extends CardImpl {
+public final class StripBare extends CardImpl {
public StripBare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StripMine.java b/Mage.Sets/src/mage/cards/s/StripMine.java
index 6a34d7283bc..e46892c986e 100644
--- a/Mage.Sets/src/mage/cards/s/StripMine.java
+++ b/Mage.Sets/src/mage/cards/s/StripMine.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class StripMine extends CardImpl {
+public final class StripMine extends CardImpl {
public StripMine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/StripedBears.java b/Mage.Sets/src/mage/cards/s/StripedBears.java
index 7f9b98d4674..db91bb44ff2 100644
--- a/Mage.Sets/src/mage/cards/s/StripedBears.java
+++ b/Mage.Sets/src/mage/cards/s/StripedBears.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class StripedBears extends CardImpl {
+public final class StripedBears extends CardImpl {
public StripedBears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StripedRiverwinder.java b/Mage.Sets/src/mage/cards/s/StripedRiverwinder.java
index 48f7bd8c2d3..d9b4051b8e3 100644
--- a/Mage.Sets/src/mage/cards/s/StripedRiverwinder.java
+++ b/Mage.Sets/src/mage/cards/s/StripedRiverwinder.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class StripedRiverwinder extends CardImpl {
+public final class StripedRiverwinder extends CardImpl {
public StripedRiverwinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StrokeOfGenius.java b/Mage.Sets/src/mage/cards/s/StrokeOfGenius.java
index 9db5c5d7b0d..72712666b1e 100644
--- a/Mage.Sets/src/mage/cards/s/StrokeOfGenius.java
+++ b/Mage.Sets/src/mage/cards/s/StrokeOfGenius.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author Backfir3
*/
-public class StrokeOfGenius extends CardImpl {
+public final class StrokeOfGenius extends CardImpl {
public StrokeOfGenius (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StromgaldCabal.java b/Mage.Sets/src/mage/cards/s/StromgaldCabal.java
index d7df8bcaa25..799c67b196f 100644
--- a/Mage.Sets/src/mage/cards/s/StromgaldCabal.java
+++ b/Mage.Sets/src/mage/cards/s/StromgaldCabal.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
*
* @author Quercitron
*/
-public class StromgaldCabal extends CardImpl {
+public final class StromgaldCabal extends CardImpl {
private static final FilterSpell filter = new FilterSpell("white spell");
diff --git a/Mage.Sets/src/mage/cards/s/StromgaldCrusader.java b/Mage.Sets/src/mage/cards/s/StromgaldCrusader.java
index 175c2cd6136..194ae2fdb1c 100644
--- a/Mage.Sets/src/mage/cards/s/StromgaldCrusader.java
+++ b/Mage.Sets/src/mage/cards/s/StromgaldCrusader.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class StromgaldCrusader extends CardImpl {
+public final class StromgaldCrusader extends CardImpl {
public StromgaldCrusader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StromgaldSpy.java b/Mage.Sets/src/mage/cards/s/StromgaldSpy.java
index d909ef4eb2a..3e737df3444 100644
--- a/Mage.Sets/src/mage/cards/s/StromgaldSpy.java
+++ b/Mage.Sets/src/mage/cards/s/StromgaldSpy.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class StromgaldSpy extends CardImpl {
+public final class StromgaldSpy extends CardImpl {
public StromgaldSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StromkirkCaptain.java b/Mage.Sets/src/mage/cards/s/StromkirkCaptain.java
index 20e7e4c6758..3f413a5d862 100644
--- a/Mage.Sets/src/mage/cards/s/StromkirkCaptain.java
+++ b/Mage.Sets/src/mage/cards/s/StromkirkCaptain.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class StromkirkCaptain extends CardImpl {
+public final class StromkirkCaptain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampire creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/s/StromkirkCondemned.java b/Mage.Sets/src/mage/cards/s/StromkirkCondemned.java
index 493886a37b2..39fd5d3c1e7 100644
--- a/Mage.Sets/src/mage/cards/s/StromkirkCondemned.java
+++ b/Mage.Sets/src/mage/cards/s/StromkirkCondemned.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class StromkirkCondemned extends CardImpl {
+public final class StromkirkCondemned extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampires");
diff --git a/Mage.Sets/src/mage/cards/s/StromkirkMentor.java b/Mage.Sets/src/mage/cards/s/StromkirkMentor.java
index d441007e16a..d8d0ed8a0c9 100644
--- a/Mage.Sets/src/mage/cards/s/StromkirkMentor.java
+++ b/Mage.Sets/src/mage/cards/s/StromkirkMentor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class StromkirkMentor extends CardImpl {
+public final class StromkirkMentor extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another target Vampire you control");
diff --git a/Mage.Sets/src/mage/cards/s/StromkirkNoble.java b/Mage.Sets/src/mage/cards/s/StromkirkNoble.java
index 7200968559e..9df13d13b9c 100644
--- a/Mage.Sets/src/mage/cards/s/StromkirkNoble.java
+++ b/Mage.Sets/src/mage/cards/s/StromkirkNoble.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterCreaturePermanent;
* @author Alvin
* @author ayratn
*/
-public class StromkirkNoble extends CardImpl {
+public final class StromkirkNoble extends CardImpl {
public StromkirkNoble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StromkirkOccultist.java b/Mage.Sets/src/mage/cards/s/StromkirkOccultist.java
index be706bf86a8..dde1437b6e7 100644
--- a/Mage.Sets/src/mage/cards/s/StromkirkOccultist.java
+++ b/Mage.Sets/src/mage/cards/s/StromkirkOccultist.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class StromkirkOccultist extends CardImpl {
+public final class StromkirkOccultist extends CardImpl {
public StromkirkOccultist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StromkirkPatrol.java b/Mage.Sets/src/mage/cards/s/StromkirkPatrol.java
index 86eac433516..245b82c191a 100644
--- a/Mage.Sets/src/mage/cards/s/StromkirkPatrol.java
+++ b/Mage.Sets/src/mage/cards/s/StromkirkPatrol.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class StromkirkPatrol extends CardImpl {
+public final class StromkirkPatrol extends CardImpl {
public StromkirkPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StrongarmMonk.java b/Mage.Sets/src/mage/cards/s/StrongarmMonk.java
index 6f77cc5d74c..3312b3c3fa1 100644
--- a/Mage.Sets/src/mage/cards/s/StrongarmMonk.java
+++ b/Mage.Sets/src/mage/cards/s/StrongarmMonk.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class StrongarmMonk extends CardImpl {
+public final class StrongarmMonk extends CardImpl {
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/s/StrongarmTactics.java b/Mage.Sets/src/mage/cards/s/StrongarmTactics.java
index 8cf580d96a1..4afeaa8722c 100644
--- a/Mage.Sets/src/mage/cards/s/StrongarmTactics.java
+++ b/Mage.Sets/src/mage/cards/s/StrongarmTactics.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetDiscard;
*
* @author TheElk801
*/
-public class StrongarmTactics extends CardImpl {
+public final class StrongarmTactics extends CardImpl {
public StrongarmTactics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StrongarmThug.java b/Mage.Sets/src/mage/cards/s/StrongarmThug.java
index 5358c251571..16f7f31bd98 100644
--- a/Mage.Sets/src/mage/cards/s/StrongarmThug.java
+++ b/Mage.Sets/src/mage/cards/s/StrongarmThug.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Backfir3
*/
-public class StrongarmThug extends CardImpl {
+public final class StrongarmThug extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("Mercenary card");
diff --git a/Mage.Sets/src/mage/cards/s/StrongholdAssassin.java b/Mage.Sets/src/mage/cards/s/StrongholdAssassin.java
index 69fe4365566..9abd4537f3b 100644
--- a/Mage.Sets/src/mage/cards/s/StrongholdAssassin.java
+++ b/Mage.Sets/src/mage/cards/s/StrongholdAssassin.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class StrongholdAssassin extends CardImpl {
+public final class StrongholdAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/s/StrongholdBiologist.java b/Mage.Sets/src/mage/cards/s/StrongholdBiologist.java
index 194e7508e95..8308e7b7a43 100644
--- a/Mage.Sets/src/mage/cards/s/StrongholdBiologist.java
+++ b/Mage.Sets/src/mage/cards/s/StrongholdBiologist.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author TheElk801
*/
-public class StrongholdBiologist extends CardImpl {
+public final class StrongholdBiologist extends CardImpl {
public StrongholdBiologist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StrongholdConfessor.java b/Mage.Sets/src/mage/cards/s/StrongholdConfessor.java
index 7dffd1af899..9900eaab9b0 100644
--- a/Mage.Sets/src/mage/cards/s/StrongholdConfessor.java
+++ b/Mage.Sets/src/mage/cards/s/StrongholdConfessor.java
@@ -45,7 +45,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class StrongholdConfessor extends CardImpl {
+public final class StrongholdConfessor extends CardImpl {
public StrongholdConfessor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StrongholdDiscipline.java b/Mage.Sets/src/mage/cards/s/StrongholdDiscipline.java
index ad61eb21ad3..75bb193b7d4 100644
--- a/Mage.Sets/src/mage/cards/s/StrongholdDiscipline.java
+++ b/Mage.Sets/src/mage/cards/s/StrongholdDiscipline.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class StrongholdDiscipline extends CardImpl {
+public final class StrongholdDiscipline extends CardImpl {
public StrongholdDiscipline(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StrongholdGambit.java b/Mage.Sets/src/mage/cards/s/StrongholdGambit.java
index dfec10bc3dc..afa1469a3da 100644
--- a/Mage.Sets/src/mage/cards/s/StrongholdGambit.java
+++ b/Mage.Sets/src/mage/cards/s/StrongholdGambit.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class StrongholdGambit extends CardImpl {
+public final class StrongholdGambit extends CardImpl {
public StrongholdGambit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StrongholdMachinist.java b/Mage.Sets/src/mage/cards/s/StrongholdMachinist.java
index ddf53b898f7..1d2eb39156c 100644
--- a/Mage.Sets/src/mage/cards/s/StrongholdMachinist.java
+++ b/Mage.Sets/src/mage/cards/s/StrongholdMachinist.java
@@ -49,7 +49,7 @@ import mage.target.TargetSpell;
*
* @author anonymous
*/
-public class StrongholdMachinist extends CardImpl {
+public final class StrongholdMachinist extends CardImpl {
private static final FilterSpell filter = new FilterSpell("noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/s/StrongholdOverseer.java b/Mage.Sets/src/mage/cards/s/StrongholdOverseer.java
index a0afc5b4fba..6f696a87a71 100644
--- a/Mage.Sets/src/mage/cards/s/StrongholdOverseer.java
+++ b/Mage.Sets/src/mage/cards/s/StrongholdOverseer.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LoneFox
*/
-public class StrongholdOverseer extends CardImpl {
+public final class StrongholdOverseer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with shadow");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creatures without shadow");
diff --git a/Mage.Sets/src/mage/cards/s/StrongholdRats.java b/Mage.Sets/src/mage/cards/s/StrongholdRats.java
index 3d3c2940297..752c2b45425 100644
--- a/Mage.Sets/src/mage/cards/s/StrongholdRats.java
+++ b/Mage.Sets/src/mage/cards/s/StrongholdRats.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class StrongholdRats extends CardImpl {
+public final class StrongholdRats extends CardImpl {
public StrongholdRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StrongholdTaskmaster.java b/Mage.Sets/src/mage/cards/s/StrongholdTaskmaster.java
index 22b621e16ed..af4a4dcedde 100644
--- a/Mage.Sets/src/mage/cards/s/StrongholdTaskmaster.java
+++ b/Mage.Sets/src/mage/cards/s/StrongholdTaskmaster.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*/
-public class StrongholdTaskmaster extends CardImpl {
+public final class StrongholdTaskmaster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creatures");
diff --git a/Mage.Sets/src/mage/cards/s/StrongholdZeppelin.java b/Mage.Sets/src/mage/cards/s/StrongholdZeppelin.java
index abd254dc8e3..1704fe5140e 100644
--- a/Mage.Sets/src/mage/cards/s/StrongholdZeppelin.java
+++ b/Mage.Sets/src/mage/cards/s/StrongholdZeppelin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class StrongholdZeppelin extends CardImpl {
+public final class StrongholdZeppelin extends CardImpl {
public StrongholdZeppelin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StructuralCollapse.java b/Mage.Sets/src/mage/cards/s/StructuralCollapse.java
index d8733ab1c34..18afeea5750 100644
--- a/Mage.Sets/src/mage/cards/s/StructuralCollapse.java
+++ b/Mage.Sets/src/mage/cards/s/StructuralCollapse.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class StructuralCollapse extends CardImpl {
+public final class StructuralCollapse extends CardImpl {
public StructuralCollapse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StructuralDistortion.java b/Mage.Sets/src/mage/cards/s/StructuralDistortion.java
index 43c74ffadef..2a9985da63c 100644
--- a/Mage.Sets/src/mage/cards/s/StructuralDistortion.java
+++ b/Mage.Sets/src/mage/cards/s/StructuralDistortion.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class StructuralDistortion extends CardImpl {
+public final class StructuralDistortion extends CardImpl {
private static final FilterPermanent FILTER = new FilterPermanent("artifact or land");
diff --git a/Mage.Sets/src/mage/cards/s/StruggleForSanity.java b/Mage.Sets/src/mage/cards/s/StruggleForSanity.java
index 2e8a9a4528e..f245aeca800 100644
--- a/Mage.Sets/src/mage/cards/s/StruggleForSanity.java
+++ b/Mage.Sets/src/mage/cards/s/StruggleForSanity.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class StruggleForSanity extends CardImpl {
+public final class StruggleForSanity extends CardImpl {
public StruggleForSanity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/StruggleSurvive.java b/Mage.Sets/src/mage/cards/s/StruggleSurvive.java
index bb6fe384926..5c2a5cfdbdc 100644
--- a/Mage.Sets/src/mage/cards/s/StruggleSurvive.java
+++ b/Mage.Sets/src/mage/cards/s/StruggleSurvive.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class StruggleSurvive extends SplitCard {
+public final class StruggleSurvive extends SplitCard {
public StruggleSurvive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{2}{R}", "{1}{G}", SpellAbilityType.SPLIT_AFTERMATH);
diff --git a/Mage.Sets/src/mage/cards/s/StubbornDenial.java b/Mage.Sets/src/mage/cards/s/StubbornDenial.java
index fe912ceae46..a898ca996b6 100644
--- a/Mage.Sets/src/mage/cards/s/StubbornDenial.java
+++ b/Mage.Sets/src/mage/cards/s/StubbornDenial.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author emerald000
*/
-public class StubbornDenial extends CardImpl {
+public final class StubbornDenial extends CardImpl {
private static final FilterSpell filter = new FilterSpell("noncreature spell");
static {
diff --git a/Mage.Sets/src/mage/cards/s/StudentOfElements.java b/Mage.Sets/src/mage/cards/s/StudentOfElements.java
index e13d7586078..2a996003ade 100644
--- a/Mage.Sets/src/mage/cards/s/StudentOfElements.java
+++ b/Mage.Sets/src/mage/cards/s/StudentOfElements.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.Token;
*
* @author LevelX2
*/
-public class StudentOfElements extends CardImpl {
+public final class StudentOfElements extends CardImpl {
public StudentOfElements(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StudentOfOjutai.java b/Mage.Sets/src/mage/cards/s/StudentOfOjutai.java
index 2cb7014d079..9e5831a6353 100644
--- a/Mage.Sets/src/mage/cards/s/StudentOfOjutai.java
+++ b/Mage.Sets/src/mage/cards/s/StudentOfOjutai.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class StudentOfOjutai extends CardImpl {
+public final class StudentOfOjutai extends CardImpl {
private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/s/StudentOfWarfare.java b/Mage.Sets/src/mage/cards/s/StudentOfWarfare.java
index 3ead663e411..18b6eb1b032 100644
--- a/Mage.Sets/src/mage/cards/s/StudentOfWarfare.java
+++ b/Mage.Sets/src/mage/cards/s/StudentOfWarfare.java
@@ -47,7 +47,7 @@ import mage.constants.SubType;
*
* @author Loki, noxx
*/
-public class StudentOfWarfare extends LevelerCard {
+public final class StudentOfWarfare extends LevelerCard {
public StudentOfWarfare (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StuffyDoll.java b/Mage.Sets/src/mage/cards/s/StuffyDoll.java
index 99f01cfe7ee..e5ff51f65f2 100644
--- a/Mage.Sets/src/mage/cards/s/StuffyDoll.java
+++ b/Mage.Sets/src/mage/cards/s/StuffyDoll.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author North
*/
-public class StuffyDoll extends CardImpl {
+public final class StuffyDoll extends CardImpl {
public StuffyDoll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/s/Stun.java b/Mage.Sets/src/mage/cards/s/Stun.java
index 24ae39cadc7..3fed8a07e0e 100644
--- a/Mage.Sets/src/mage/cards/s/Stun.java
+++ b/Mage.Sets/src/mage/cards/s/Stun.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class Stun extends CardImpl {
+public final class Stun extends CardImpl {
public Stun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StunSniper.java b/Mage.Sets/src/mage/cards/s/StunSniper.java
index 3da58a6422f..0e07111ed07 100644
--- a/Mage.Sets/src/mage/cards/s/StunSniper.java
+++ b/Mage.Sets/src/mage/cards/s/StunSniper.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class StunSniper extends CardImpl {
+public final class StunSniper extends CardImpl {
public StunSniper (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/StunningReversal.java b/Mage.Sets/src/mage/cards/s/StunningReversal.java
new file mode 100644
index 00000000000..2f0d57aa8e2
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/StunningReversal.java
@@ -0,0 +1,114 @@
+/*
+ * 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.ReplacementEffectImpl;
+import mage.abilities.effects.common.ExileSpellEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.players.Player;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class StunningReversal extends CardImpl {
+
+ public StunningReversal(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}");
+
+ // The next time you would lose the game this turn, instead draw seven cards and your life total becomes 1.
+ this.getSpellAbility().addEffect(new StunningReversalEffect());
+
+ // Exile Stunning Reversal.
+ this.getSpellAbility().addEffect(ExileSpellEffect.getInstance());
+ }
+
+ public StunningReversal(final StunningReversal card) {
+ super(card);
+ }
+
+ @Override
+ public StunningReversal copy() {
+ return new StunningReversal(this);
+ }
+}
+
+class StunningReversalEffect extends ReplacementEffectImpl {
+
+ public StunningReversalEffect() {
+ super(Duration.EndOfTurn, Outcome.Benefit);
+ staticText = "The next time you would lose the game this turn, instead draw seven cards and your life total becomes 1";
+ }
+
+ public StunningReversalEffect(final StunningReversalEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public StunningReversalEffect copy() {
+ return new StunningReversalEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public boolean replaceEvent(GameEvent event, Ability source, Game game) {
+ Player player = game.getPlayer(event.getPlayerId());
+ if (player != null) {
+ player.drawCards(7, game);
+ player.setLife(1, game, source);
+ this.discard();
+ }
+ return true;
+ }
+
+ @Override
+ public boolean checksEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.LOSES;
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ if (event.getPlayerId().equals(source.getControllerId())) {
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/Mage.Sets/src/mage/cards/s/StuntDouble.java b/Mage.Sets/src/mage/cards/s/StuntDouble.java
index 93895c87554..9b02bfcc5dd 100644
--- a/Mage.Sets/src/mage/cards/s/StuntDouble.java
+++ b/Mage.Sets/src/mage/cards/s/StuntDouble.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class StuntDouble extends CardImpl {
+public final class StuntDouble extends CardImpl {
public StuntDouble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StuntedGrowth.java b/Mage.Sets/src/mage/cards/s/StuntedGrowth.java
index 0ae551e33fc..9c585b11805 100644
--- a/Mage.Sets/src/mage/cards/s/StuntedGrowth.java
+++ b/Mage.Sets/src/mage/cards/s/StuntedGrowth.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class StuntedGrowth extends CardImpl {
+public final class StuntedGrowth extends CardImpl {
public StuntedGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/StupefyingTouch.java b/Mage.Sets/src/mage/cards/s/StupefyingTouch.java
index 5f84c4a1a14..1bcf5ec94ae 100644
--- a/Mage.Sets/src/mage/cards/s/StupefyingTouch.java
+++ b/Mage.Sets/src/mage/cards/s/StupefyingTouch.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class StupefyingTouch extends CardImpl {
+public final class StupefyingTouch extends CardImpl {
public StupefyingTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/Stupor.java b/Mage.Sets/src/mage/cards/s/Stupor.java
index a60cf02c6c7..58d758dc13b 100644
--- a/Mage.Sets/src/mage/cards/s/Stupor.java
+++ b/Mage.Sets/src/mage/cards/s/Stupor.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetOpponent;
*
* @author Loki
*/
-public class Stupor extends CardImpl {
+public final class Stupor extends CardImpl {
public Stupor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SturdyHatchling.java b/Mage.Sets/src/mage/cards/s/SturdyHatchling.java
index 2aac458db73..02b43b09616 100644
--- a/Mage.Sets/src/mage/cards/s/SturdyHatchling.java
+++ b/Mage.Sets/src/mage/cards/s/SturdyHatchling.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author Loki
*/
-public class SturdyHatchling extends CardImpl {
+public final class SturdyHatchling extends CardImpl {
private static final FilterSpell filterGreenSpell = new FilterSpell("a green spell");
private static final FilterSpell filterBlueSpell = new FilterSpell("a blue spell");
diff --git a/Mage.Sets/src/mage/cards/s/Sturmgeist.java b/Mage.Sets/src/mage/cards/s/Sturmgeist.java
index d032a119034..80c0bce69bf 100644
--- a/Mage.Sets/src/mage/cards/s/Sturmgeist.java
+++ b/Mage.Sets/src/mage/cards/s/Sturmgeist.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class Sturmgeist extends CardImpl {
+public final class Sturmgeist extends CardImpl {
public Sturmgeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/StymiedHopes.java b/Mage.Sets/src/mage/cards/s/StymiedHopes.java
index 2e7a9c64bfe..3a496ac0b11 100644
--- a/Mage.Sets/src/mage/cards/s/StymiedHopes.java
+++ b/Mage.Sets/src/mage/cards/s/StymiedHopes.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class StymiedHopes extends CardImpl {
+public final class StymiedHopes extends CardImpl {
public StymiedHopes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SuChi.java b/Mage.Sets/src/mage/cards/s/SuChi.java
index 2506b367621..4db4811fae0 100644
--- a/Mage.Sets/src/mage/cards/s/SuChi.java
+++ b/Mage.Sets/src/mage/cards/s/SuChi.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
* @author LoneFox
*
*/
-public class SuChi extends CardImpl {
+public final class SuChi extends CardImpl {
public SuChi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SubjugatorAngel.java b/Mage.Sets/src/mage/cards/s/SubjugatorAngel.java
index 2fb93628ba9..62e9e54eade 100644
--- a/Mage.Sets/src/mage/cards/s/SubjugatorAngel.java
+++ b/Mage.Sets/src/mage/cards/s/SubjugatorAngel.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class SubjugatorAngel extends CardImpl {
+public final class SubjugatorAngel extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/s/SublimeArchangel.java b/Mage.Sets/src/mage/cards/s/SublimeArchangel.java
index f806aaa2757..db02f45d9dc 100644
--- a/Mage.Sets/src/mage/cards/s/SublimeArchangel.java
+++ b/Mage.Sets/src/mage/cards/s/SublimeArchangel.java
@@ -45,7 +45,7 @@ import mage.filter.StaticFilters;
*
* @author North
*/
-public class SublimeArchangel extends CardImpl {
+public final class SublimeArchangel extends CardImpl {
public SublimeArchangel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SublimeExhalation.java b/Mage.Sets/src/mage/cards/s/SublimeExhalation.java
index 676713cfefa..e921897f588 100644
--- a/Mage.Sets/src/mage/cards/s/SublimeExhalation.java
+++ b/Mage.Sets/src/mage/cards/s/SublimeExhalation.java
@@ -39,7 +39,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX2
*/
-public class SublimeExhalation extends CardImpl {
+public final class SublimeExhalation extends CardImpl {
public SublimeExhalation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Submerge.java b/Mage.Sets/src/mage/cards/s/Submerge.java
index 83f5ab97dfb..98448cf26da 100644
--- a/Mage.Sets/src/mage/cards/s/Submerge.java
+++ b/Mage.Sets/src/mage/cards/s/Submerge.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Submerge extends CardImpl {
+public final class Submerge extends CardImpl {
private static final FilterPermanent filterForest = new FilterPermanent();
private static final FilterPermanent filterIsland = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SubmergedBoneyard.java b/Mage.Sets/src/mage/cards/s/SubmergedBoneyard.java
index 2811193968b..b743cd1ab02 100644
--- a/Mage.Sets/src/mage/cards/s/SubmergedBoneyard.java
+++ b/Mage.Sets/src/mage/cards/s/SubmergedBoneyard.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class SubmergedBoneyard extends CardImpl {
+public final class SubmergedBoneyard extends CardImpl {
public SubmergedBoneyard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SubterraneanHangar.java b/Mage.Sets/src/mage/cards/s/SubterraneanHangar.java
index 88b49b60ce2..b23feaf751c 100644
--- a/Mage.Sets/src/mage/cards/s/SubterraneanHangar.java
+++ b/Mage.Sets/src/mage/cards/s/SubterraneanHangar.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author anonymous
*/
-public class SubterraneanHangar extends CardImpl {
+public final class SubterraneanHangar extends CardImpl {
public SubterraneanHangar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SubterraneanScout.java b/Mage.Sets/src/mage/cards/s/SubterraneanScout.java
index ed073b951c0..454416a7c9f 100644
--- a/Mage.Sets/src/mage/cards/s/SubterraneanScout.java
+++ b/Mage.Sets/src/mage/cards/s/SubterraneanScout.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SubterraneanScout extends CardImpl {
+public final class SubterraneanScout extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/s/SubterraneanShambler.java b/Mage.Sets/src/mage/cards/s/SubterraneanShambler.java
index c6a20d0e129..c9b63799cc4 100644
--- a/Mage.Sets/src/mage/cards/s/SubterraneanShambler.java
+++ b/Mage.Sets/src/mage/cards/s/SubterraneanShambler.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author Styxo
*/
-public class SubterraneanShambler extends CardImpl {
+public final class SubterraneanShambler extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/s/SubterraneanSpirit.java b/Mage.Sets/src/mage/cards/s/SubterraneanSpirit.java
index bebfb90f7eb..646d35bf428 100644
--- a/Mage.Sets/src/mage/cards/s/SubterraneanSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/SubterraneanSpirit.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author TheElk801
*/
-public class SubterraneanSpirit extends CardImpl {
+public final class SubterraneanSpirit extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/s/SubterraneanTremors.java b/Mage.Sets/src/mage/cards/s/SubterraneanTremors.java
index 7ae67c657ea..58b0244c60e 100644
--- a/Mage.Sets/src/mage/cards/s/SubterraneanTremors.java
+++ b/Mage.Sets/src/mage/cards/s/SubterraneanTremors.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.SubterraneanTremorsLizardToken;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class SubterraneanTremors extends CardImpl {
+public final class SubterraneanTremors extends CardImpl {
public SubterraneanTremors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SubtleStrike.java b/Mage.Sets/src/mage/cards/s/SubtleStrike.java
index 0b1636673db..ee1a31fc7b2 100644
--- a/Mage.Sets/src/mage/cards/s/SubtleStrike.java
+++ b/Mage.Sets/src/mage/cards/s/SubtleStrike.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SubtleStrike extends CardImpl {
+public final class SubtleStrike extends CardImpl {
public SubtleStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Subversion.java b/Mage.Sets/src/mage/cards/s/Subversion.java
index 38f40b0908a..a8bc6ea7def 100644
--- a/Mage.Sets/src/mage/cards/s/Subversion.java
+++ b/Mage.Sets/src/mage/cards/s/Subversion.java
@@ -42,7 +42,7 @@ import mage.game.Game;
*
* @author Plopman
*/
-public class Subversion extends CardImpl {
+public final class Subversion extends CardImpl {
public Subversion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java b/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java
index 6c00f3fad9f..465fa4307d9 100644
--- a/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java
+++ b/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class SuccumbToTemptation extends CardImpl {
+public final class SuccumbToTemptation extends CardImpl {
public SuccumbToTemptation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SuddenDeath.java b/Mage.Sets/src/mage/cards/s/SuddenDeath.java
index 1dd3bb784b6..83ff4566128 100644
--- a/Mage.Sets/src/mage/cards/s/SuddenDeath.java
+++ b/Mage.Sets/src/mage/cards/s/SuddenDeath.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author dustinconrad
*/
-public class SuddenDeath extends CardImpl {
+public final class SuddenDeath extends CardImpl {
public SuddenDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SuddenDemise.java b/Mage.Sets/src/mage/cards/s/SuddenDemise.java
index 4475bd7a7e0..9114f44e22a 100644
--- a/Mage.Sets/src/mage/cards/s/SuddenDemise.java
+++ b/Mage.Sets/src/mage/cards/s/SuddenDemise.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SuddenDemise extends CardImpl {
+public final class SuddenDemise extends CardImpl {
public SuddenDemise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SuddenDisappearance.java b/Mage.Sets/src/mage/cards/s/SuddenDisappearance.java
index 3deff653c2c..c94513ace1e 100644
--- a/Mage.Sets/src/mage/cards/s/SuddenDisappearance.java
+++ b/Mage.Sets/src/mage/cards/s/SuddenDisappearance.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author BetaSteward
*/
-public class SuddenDisappearance extends CardImpl {
+public final class SuddenDisappearance extends CardImpl {
public SuddenDisappearance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SuddenImpact.java b/Mage.Sets/src/mage/cards/s/SuddenImpact.java
index 41b531b0537..52fb7ed6805 100644
--- a/Mage.Sets/src/mage/cards/s/SuddenImpact.java
+++ b/Mage.Sets/src/mage/cards/s/SuddenImpact.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author emerald000
*/
-public class SuddenImpact extends CardImpl {
+public final class SuddenImpact extends CardImpl {
public SuddenImpact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SuddenReclamation.java b/Mage.Sets/src/mage/cards/s/SuddenReclamation.java
index 2908156d3f2..69e97e81e25 100644
--- a/Mage.Sets/src/mage/cards/s/SuddenReclamation.java
+++ b/Mage.Sets/src/mage/cards/s/SuddenReclamation.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class SuddenReclamation extends CardImpl {
+public final class SuddenReclamation extends CardImpl {
public SuddenReclamation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SuddenShock.java b/Mage.Sets/src/mage/cards/s/SuddenShock.java
index 4fe84f90cac..1cf7266b8ff 100644
--- a/Mage.Sets/src/mage/cards/s/SuddenShock.java
+++ b/Mage.Sets/src/mage/cards/s/SuddenShock.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class SuddenShock extends CardImpl {
+public final class SuddenShock extends CardImpl {
public SuddenShock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SuddenSpoiling.java b/Mage.Sets/src/mage/cards/s/SuddenSpoiling.java
index f583ec9901f..6b880ccf144 100644
--- a/Mage.Sets/src/mage/cards/s/SuddenSpoiling.java
+++ b/Mage.Sets/src/mage/cards/s/SuddenSpoiling.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class SuddenSpoiling extends CardImpl {
+public final class SuddenSpoiling extends CardImpl {
public SuddenSpoiling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SuddenStorm.java b/Mage.Sets/src/mage/cards/s/SuddenStorm.java
index d34ecf966a3..5408e7ef879 100644
--- a/Mage.Sets/src/mage/cards/s/SuddenStorm.java
+++ b/Mage.Sets/src/mage/cards/s/SuddenStorm.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SuddenStorm extends CardImpl {
+public final class SuddenStorm extends CardImpl {
public SuddenStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SuddenStrength.java b/Mage.Sets/src/mage/cards/s/SuddenStrength.java
index 6d1a70b9c23..6539dada1ca 100644
--- a/Mage.Sets/src/mage/cards/s/SuddenStrength.java
+++ b/Mage.Sets/src/mage/cards/s/SuddenStrength.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SuddenStrength extends CardImpl {
+public final class SuddenStrength extends CardImpl {
public SuddenStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SufferThePast.java b/Mage.Sets/src/mage/cards/s/SufferThePast.java
index df6bef8e8c2..b67569b80eb 100644
--- a/Mage.Sets/src/mage/cards/s/SufferThePast.java
+++ b/Mage.Sets/src/mage/cards/s/SufferThePast.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInOpponentsGraveyard;
*
* @author jeffwadsworth
*/
-public class SufferThePast extends CardImpl {
+public final class SufferThePast extends CardImpl {
public SufferThePast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SuffocatingBlast.java b/Mage.Sets/src/mage/cards/s/SuffocatingBlast.java
index 5eb2e4bb14e..8c895005a98 100644
--- a/Mage.Sets/src/mage/cards/s/SuffocatingBlast.java
+++ b/Mage.Sets/src/mage/cards/s/SuffocatingBlast.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SuffocatingBlast extends CardImpl {
+public final class SuffocatingBlast extends CardImpl {
public SuffocatingBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SuicidalCharge.java b/Mage.Sets/src/mage/cards/s/SuicidalCharge.java
index 57db37aa80a..984e692debe 100644
--- a/Mage.Sets/src/mage/cards/s/SuicidalCharge.java
+++ b/Mage.Sets/src/mage/cards/s/SuicidalCharge.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class SuicidalCharge extends CardImpl {
+public final class SuicidalCharge extends CardImpl {
public SuicidalCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SulamDjinn.java b/Mage.Sets/src/mage/cards/s/SulamDjinn.java
index 9be61d0a938..c0e2766d167 100644
--- a/Mage.Sets/src/mage/cards/s/SulamDjinn.java
+++ b/Mage.Sets/src/mage/cards/s/SulamDjinn.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class SulamDjinn extends CardImpl {
+public final class SulamDjinn extends CardImpl {
public SulamDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SuleimansLegacy.java b/Mage.Sets/src/mage/cards/s/SuleimansLegacy.java
index 5bb92a92e61..fa51da3c012 100644
--- a/Mage.Sets/src/mage/cards/s/SuleimansLegacy.java
+++ b/Mage.Sets/src/mage/cards/s/SuleimansLegacy.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class SuleimansLegacy extends CardImpl {
+public final class SuleimansLegacy extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Djinns and Efreets");
diff --git a/Mage.Sets/src/mage/cards/s/SulfurElemental.java b/Mage.Sets/src/mage/cards/s/SulfurElemental.java
index 741e04f5133..f682f7ad61a 100644
--- a/Mage.Sets/src/mage/cards/s/SulfurElemental.java
+++ b/Mage.Sets/src/mage/cards/s/SulfurElemental.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class SulfurElemental extends CardImpl {
+public final class SulfurElemental extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SulfurFalls.java b/Mage.Sets/src/mage/cards/s/SulfurFalls.java
index ce4b437297f..4cce16e88b3 100644
--- a/Mage.Sets/src/mage/cards/s/SulfurFalls.java
+++ b/Mage.Sets/src/mage/cards/s/SulfurFalls.java
@@ -49,7 +49,7 @@ import java.util.UUID;
/**
* @author nantuko
*/
-public class SulfurFalls extends CardImpl {
+public final class SulfurFalls extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SulfurVent.java b/Mage.Sets/src/mage/cards/s/SulfurVent.java
index 20adfc85dbf..a4a0eb1785c 100644
--- a/Mage.Sets/src/mage/cards/s/SulfurVent.java
+++ b/Mage.Sets/src/mage/cards/s/SulfurVent.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class SulfurVent extends CardImpl {
+public final class SulfurVent extends CardImpl {
public SulfurVent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SulfuricVapors.java b/Mage.Sets/src/mage/cards/s/SulfuricVapors.java
index fcb39f938c3..8b95b63e99d 100644
--- a/Mage.Sets/src/mage/cards/s/SulfuricVapors.java
+++ b/Mage.Sets/src/mage/cards/s/SulfuricVapors.java
@@ -47,7 +47,7 @@ import mage.util.CardUtil;
*
* @author L_J
*/
-public class SulfuricVapors extends CardImpl {
+public final class SulfuricVapors extends CardImpl {
public SulfuricVapors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SulfuricVortex.java b/Mage.Sets/src/mage/cards/s/SulfuricVortex.java
index b0cf554ce17..b4c7b6204e8 100644
--- a/Mage.Sets/src/mage/cards/s/SulfuricVortex.java
+++ b/Mage.Sets/src/mage/cards/s/SulfuricVortex.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class SulfuricVortex extends CardImpl {
+public final class SulfuricVortex extends CardImpl {
public SulfuricVortex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SulfurousBlast.java b/Mage.Sets/src/mage/cards/s/SulfurousBlast.java
index 15bd134ba09..e6ce8ee960d 100644
--- a/Mage.Sets/src/mage/cards/s/SulfurousBlast.java
+++ b/Mage.Sets/src/mage/cards/s/SulfurousBlast.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class SulfurousBlast extends CardImpl {
+public final class SulfurousBlast extends CardImpl {
public SulfurousBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SulfurousSprings.java b/Mage.Sets/src/mage/cards/s/SulfurousSprings.java
index 169062e6021..f2aa2d6185f 100644
--- a/Mage.Sets/src/mage/cards/s/SulfurousSprings.java
+++ b/Mage.Sets/src/mage/cards/s/SulfurousSprings.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SulfurousSprings extends CardImpl {
+public final class SulfurousSprings extends CardImpl {
public SulfurousSprings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SultaiAscendancy.java b/Mage.Sets/src/mage/cards/s/SultaiAscendancy.java
index 053e802bbd3..bd508b082ee 100644
--- a/Mage.Sets/src/mage/cards/s/SultaiAscendancy.java
+++ b/Mage.Sets/src/mage/cards/s/SultaiAscendancy.java
@@ -43,7 +43,7 @@ import mage.filter.FilterCard;
*
* @author LevelX2
*/
-public class SultaiAscendancy extends CardImpl {
+public final class SultaiAscendancy extends CardImpl {
public SultaiAscendancy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SultaiBanner.java b/Mage.Sets/src/mage/cards/s/SultaiBanner.java
index df4b6a723a0..d6caef8826d 100644
--- a/Mage.Sets/src/mage/cards/s/SultaiBanner.java
+++ b/Mage.Sets/src/mage/cards/s/SultaiBanner.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SultaiBanner extends CardImpl {
+public final class SultaiBanner extends CardImpl {
public SultaiBanner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SultaiCharm.java b/Mage.Sets/src/mage/cards/s/SultaiCharm.java
index ba6b992aa39..529d41f63be 100644
--- a/Mage.Sets/src/mage/cards/s/SultaiCharm.java
+++ b/Mage.Sets/src/mage/cards/s/SultaiCharm.java
@@ -46,7 +46,7 @@ import java.util.UUID;
* @author LevelX2
*/
-public class SultaiCharm extends CardImpl {
+public final class SultaiCharm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("monocolored creature");
diff --git a/Mage.Sets/src/mage/cards/s/SultaiEmissary.java b/Mage.Sets/src/mage/cards/s/SultaiEmissary.java
index 07d7f8c47a4..8f8401e182f 100644
--- a/Mage.Sets/src/mage/cards/s/SultaiEmissary.java
+++ b/Mage.Sets/src/mage/cards/s/SultaiEmissary.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SultaiEmissary extends CardImpl {
+public final class SultaiEmissary extends CardImpl {
public SultaiEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SultaiFlayer.java b/Mage.Sets/src/mage/cards/s/SultaiFlayer.java
index e4a2e50c159..7cac5c7c84a 100644
--- a/Mage.Sets/src/mage/cards/s/SultaiFlayer.java
+++ b/Mage.Sets/src/mage/cards/s/SultaiFlayer.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class SultaiFlayer extends CardImpl {
+public final class SultaiFlayer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control with toughness 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/SultaiRunemark.java b/Mage.Sets/src/mage/cards/s/SultaiRunemark.java
index f7a99790700..e2009c45458 100644
--- a/Mage.Sets/src/mage/cards/s/SultaiRunemark.java
+++ b/Mage.Sets/src/mage/cards/s/SultaiRunemark.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SultaiRunemark extends CardImpl {
+public final class SultaiRunemark extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("as long as you control a green or blue permanent");
diff --git a/Mage.Sets/src/mage/cards/s/SultaiScavenger.java b/Mage.Sets/src/mage/cards/s/SultaiScavenger.java
index 3674a208201..129308214eb 100644
--- a/Mage.Sets/src/mage/cards/s/SultaiScavenger.java
+++ b/Mage.Sets/src/mage/cards/s/SultaiScavenger.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SultaiScavenger extends CardImpl {
+public final class SultaiScavenger extends CardImpl {
public SultaiScavenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SultaiSkullkeeper.java b/Mage.Sets/src/mage/cards/s/SultaiSkullkeeper.java
index 5cf30ab67ef..db3adc60ad5 100644
--- a/Mage.Sets/src/mage/cards/s/SultaiSkullkeeper.java
+++ b/Mage.Sets/src/mage/cards/s/SultaiSkullkeeper.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SultaiSkullkeeper extends CardImpl {
+public final class SultaiSkullkeeper extends CardImpl {
public SultaiSkullkeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SultaiSoothsayer.java b/Mage.Sets/src/mage/cards/s/SultaiSoothsayer.java
index b327aa6dbc2..e16ac810246 100644
--- a/Mage.Sets/src/mage/cards/s/SultaiSoothsayer.java
+++ b/Mage.Sets/src/mage/cards/s/SultaiSoothsayer.java
@@ -43,7 +43,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class SultaiSoothsayer extends CardImpl {
+public final class SultaiSoothsayer extends CardImpl {
public SultaiSoothsayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SummaryDismissal.java b/Mage.Sets/src/mage/cards/s/SummaryDismissal.java
index 137f0ff416a..513ea7d5c59 100644
--- a/Mage.Sets/src/mage/cards/s/SummaryDismissal.java
+++ b/Mage.Sets/src/mage/cards/s/SummaryDismissal.java
@@ -44,7 +44,7 @@ import mage.game.stack.StackObject;
*
* @author LevelX2
*/
-public class SummaryDismissal extends CardImpl {
+public final class SummaryDismissal extends CardImpl {
public SummaryDismissal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SummerBloom.java b/Mage.Sets/src/mage/cards/s/SummerBloom.java
index c38d97228a7..7035a9f7b91 100644
--- a/Mage.Sets/src/mage/cards/s/SummerBloom.java
+++ b/Mage.Sets/src/mage/cards/s/SummerBloom.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class SummerBloom extends CardImpl {
+public final class SummerBloom extends CardImpl {
public SummerBloom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SummitApes.java b/Mage.Sets/src/mage/cards/s/SummitApes.java
index 2c5f7624340..f07710a959f 100644
--- a/Mage.Sets/src/mage/cards/s/SummitApes.java
+++ b/Mage.Sets/src/mage/cards/s/SummitApes.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jeffwadsworth
*/
-public class SummitApes extends CardImpl {
+public final class SummitApes extends CardImpl {
private static final String rule = "As long as you control a Mountain, {this} has menace. (It can't be blocked except by two or more creatures.)";
private static final FilterLandPermanent filter = new FilterLandPermanent("a Mountain");
diff --git a/Mage.Sets/src/mage/cards/s/SummitProwler.java b/Mage.Sets/src/mage/cards/s/SummitProwler.java
index ac4cd6481d3..477d5ca5fa0 100644
--- a/Mage.Sets/src/mage/cards/s/SummitProwler.java
+++ b/Mage.Sets/src/mage/cards/s/SummitProwler.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SummitProwler extends CardImpl {
+public final class SummitProwler extends CardImpl {
public SummitProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SummonThePack.java b/Mage.Sets/src/mage/cards/s/SummonThePack.java
index 59b2edf00d5..9871557d3f4 100644
--- a/Mage.Sets/src/mage/cards/s/SummonThePack.java
+++ b/Mage.Sets/src/mage/cards/s/SummonThePack.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class SummonThePack extends CardImpl {
+public final class SummonThePack extends CardImpl {
public SummonThePack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{7}{B}");
@@ -112,8 +112,8 @@ class SummonThePackEffect extends OneShotEffect {
StringBuilder message = new StringBuilder(controller.getLogName()).append(" opened: ");
for (Card c : boosterPack) {
- message.append(c.getName()).append(" ");
if (c != null && c.isCreature()) {
+ message.append(c.getName()).append(" ");
message.append(" (creature card) ");
ContinuousEffect effect2 = new BecomesBlackZombieAdditionEffect(false);
effect2.setTargetPointer(new FixedTarget(c.getId()));
@@ -124,7 +124,7 @@ class SummonThePackEffect extends OneShotEffect {
}
if (creatureCards.size() > 0) {
- Set ccs = new HashSet(creatureCards);
+ Set ccs = new HashSet<>(creatureCards);
game.loadCards(ccs, controller.getId());
controller.moveCards(ccs, Zone.BATTLEFIELD, source, game);
}
diff --git a/Mage.Sets/src/mage/cards/s/SummonTheSchool.java b/Mage.Sets/src/mage/cards/s/SummonTheSchool.java
index b3aca5f16e4..a38bfbad9b3 100644
--- a/Mage.Sets/src/mage/cards/s/SummonTheSchool.java
+++ b/Mage.Sets/src/mage/cards/s/SummonTheSchool.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class SummonTheSchool extends CardImpl {
+public final class SummonTheSchool extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Merfolk you control");
diff --git a/Mage.Sets/src/mage/cards/s/SummonersBane.java b/Mage.Sets/src/mage/cards/s/SummonersBane.java
index fc77065d18f..310005d614e 100644
--- a/Mage.Sets/src/mage/cards/s/SummonersBane.java
+++ b/Mage.Sets/src/mage/cards/s/SummonersBane.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
*
* @author North
*/
-public class SummonersBane extends CardImpl {
+public final class SummonersBane extends CardImpl {
public SummonersBane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SummonersEgg.java b/Mage.Sets/src/mage/cards/s/SummonersEgg.java
index ea98343ce99..e48205cd581 100644
--- a/Mage.Sets/src/mage/cards/s/SummonersEgg.java
+++ b/Mage.Sets/src/mage/cards/s/SummonersEgg.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author Plopman
*/
-public class SummonersEgg extends CardImpl {
+public final class SummonersEgg extends CardImpl {
public SummonersEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
@@ -60,7 +60,7 @@ public class SummonersEgg extends CardImpl {
this.toughness = new MageInt(4);
// Imprint - When Summoner's Egg enters the battlefield, you may exile a card from your hand face down.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SummonersEggImprintEffect(), true, "Imprint - "));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SummonersEggImprintEffect(), true, "Imprint — "));
// When Summoner's Egg dies, turn the exiled card face up. If it's a creature card, put it onto the battlefield under your control.
this.addAbility(new DiesTriggeredAbility(new SummonersEggPutOntoBattlefieldEffect()));
}
diff --git a/Mage.Sets/src/mage/cards/s/SummonersPact.java b/Mage.Sets/src/mage/cards/s/SummonersPact.java
index 111b8ba35f3..c6b00310140 100644
--- a/Mage.Sets/src/mage/cards/s/SummonersPact.java
+++ b/Mage.Sets/src/mage/cards/s/SummonersPact.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class SummonersPact extends CardImpl {
+public final class SummonersPact extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("green creature card");
static{
diff --git a/Mage.Sets/src/mage/cards/s/SummoningStation.java b/Mage.Sets/src/mage/cards/s/SummoningStation.java
index 0c396b7392f..6a4e8456912 100644
--- a/Mage.Sets/src/mage/cards/s/SummoningStation.java
+++ b/Mage.Sets/src/mage/cards/s/SummoningStation.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.PincherToken;
*
* @author Plopman
*/
-public class SummoningStation extends CardImpl {
+public final class SummoningStation extends CardImpl {
public SummoningStation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/s/SummoningTrap.java b/Mage.Sets/src/mage/cards/s/SummoningTrap.java
index a3a428b8384..73871f6606e 100644
--- a/Mage.Sets/src/mage/cards/s/SummoningTrap.java
+++ b/Mage.Sets/src/mage/cards/s/SummoningTrap.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author Rafbill
*/
-public class SummoningTrap extends CardImpl {
+public final class SummoningTrap extends CardImpl {
public SummoningTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SunBlessedMount.java b/Mage.Sets/src/mage/cards/s/SunBlessedMount.java
index 4d98ba22cfb..b1d5022d7d5 100644
--- a/Mage.Sets/src/mage/cards/s/SunBlessedMount.java
+++ b/Mage.Sets/src/mage/cards/s/SunBlessedMount.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author TheElk801
*/
-public class SunBlessedMount extends CardImpl {
+public final class SunBlessedMount extends CardImpl {
private final static FilterCard filter = new FilterCard("Huatli, Dinosaur Knight");
diff --git a/Mage.Sets/src/mage/cards/s/SunCeYoungConquerer.java b/Mage.Sets/src/mage/cards/s/SunCeYoungConquerer.java
index d6fe1addf98..650d8537651 100644
--- a/Mage.Sets/src/mage/cards/s/SunCeYoungConquerer.java
+++ b/Mage.Sets/src/mage/cards/s/SunCeYoungConquerer.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SunCeYoungConquerer extends CardImpl {
+public final class SunCeYoungConquerer extends CardImpl {
public SunCeYoungConquerer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SunClasp.java b/Mage.Sets/src/mage/cards/s/SunClasp.java
index 9aaa08f433d..124c86f40a0 100644
--- a/Mage.Sets/src/mage/cards/s/SunClasp.java
+++ b/Mage.Sets/src/mage/cards/s/SunClasp.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class SunClasp extends CardImpl {
+public final class SunClasp extends CardImpl {
public SunClasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunCollaredRaptor.java b/Mage.Sets/src/mage/cards/s/SunCollaredRaptor.java
index 5655a4dc11d..fef695d668a 100644
--- a/Mage.Sets/src/mage/cards/s/SunCollaredRaptor.java
+++ b/Mage.Sets/src/mage/cards/s/SunCollaredRaptor.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
/**
* @author JayDi85
*/
-public class SunCollaredRaptor extends CardImpl {
+public final class SunCollaredRaptor extends CardImpl {
public SunCollaredRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SunCrestedPterodon.java b/Mage.Sets/src/mage/cards/s/SunCrestedPterodon.java
index 6de23f7f4ee..32e0885762d 100644
--- a/Mage.Sets/src/mage/cards/s/SunCrestedPterodon.java
+++ b/Mage.Sets/src/mage/cards/s/SunCrestedPterodon.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
/**
* @author JayDi85
*/
-public class SunCrestedPterodon extends CardImpl {
+public final class SunCrestedPterodon extends CardImpl {
private static final FilterControlledCreaturePermanent filterAnotherDino = new FilterControlledCreaturePermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/s/SunCrownedHunters.java b/Mage.Sets/src/mage/cards/s/SunCrownedHunters.java
index 4b268bd08b9..bed03e5a41b 100644
--- a/Mage.Sets/src/mage/cards/s/SunCrownedHunters.java
+++ b/Mage.Sets/src/mage/cards/s/SunCrownedHunters.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author TheElk801
*/
-public class SunCrownedHunters extends CardImpl {
+public final class SunCrownedHunters extends CardImpl {
public SunCrownedHunters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SunDroplet.java b/Mage.Sets/src/mage/cards/s/SunDroplet.java
index f213d87ef9c..63cd9187dae 100644
--- a/Mage.Sets/src/mage/cards/s/SunDroplet.java
+++ b/Mage.Sets/src/mage/cards/s/SunDroplet.java
@@ -54,7 +54,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class SunDroplet extends CardImpl {
+public final class SunDroplet extends CardImpl {
public SunDroplet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SunQuanLordOfWu.java b/Mage.Sets/src/mage/cards/s/SunQuanLordOfWu.java
index dbd49f086ef..1c5f49ca82f 100644
--- a/Mage.Sets/src/mage/cards/s/SunQuanLordOfWu.java
+++ b/Mage.Sets/src/mage/cards/s/SunQuanLordOfWu.java
@@ -45,7 +45,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author LevelX2
*/
-public class SunQuanLordOfWu extends CardImpl {
+public final class SunQuanLordOfWu extends CardImpl {
public SunQuanLordOfWu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SunSentinel.java b/Mage.Sets/src/mage/cards/s/SunSentinel.java
index 9f7bbc8e2fd..4c05081d5ca 100644
--- a/Mage.Sets/src/mage/cards/s/SunSentinel.java
+++ b/Mage.Sets/src/mage/cards/s/SunSentinel.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class SunSentinel extends CardImpl {
+public final class SunSentinel extends CardImpl {
public SunSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunTitan.java b/Mage.Sets/src/mage/cards/s/SunTitan.java
index d485e78fc8a..00cc46885f4 100644
--- a/Mage.Sets/src/mage/cards/s/SunTitan.java
+++ b/Mage.Sets/src/mage/cards/s/SunTitan.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SunTitan extends CardImpl {
+public final class SunTitan extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("permanent card with converted mana cost 3 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/s/SunastianFalconer.java b/Mage.Sets/src/mage/cards/s/SunastianFalconer.java
index 1af9c7b3f5c..fa58959bf0c 100644
--- a/Mage.Sets/src/mage/cards/s/SunastianFalconer.java
+++ b/Mage.Sets/src/mage/cards/s/SunastianFalconer.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class SunastianFalconer extends CardImpl {
+public final class SunastianFalconer extends CardImpl {
public SunastianFalconer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SunbeamSpellbomb.java b/Mage.Sets/src/mage/cards/s/SunbeamSpellbomb.java
index 1279f009093..5428d2c8a06 100644
--- a/Mage.Sets/src/mage/cards/s/SunbeamSpellbomb.java
+++ b/Mage.Sets/src/mage/cards/s/SunbeamSpellbomb.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SunbeamSpellbomb extends CardImpl {
+public final class SunbeamSpellbomb extends CardImpl {
public SunbeamSpellbomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SunbirdsInvocation.java b/Mage.Sets/src/mage/cards/s/SunbirdsInvocation.java
index 1481a10263e..4c40fe64148 100644
--- a/Mage.Sets/src/mage/cards/s/SunbirdsInvocation.java
+++ b/Mage.Sets/src/mage/cards/s/SunbirdsInvocation.java
@@ -29,6 +29,7 @@ package mage.cards.s;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.Effect;
@@ -56,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class SunbirdsInvocation extends CardImpl {
+public final class SunbirdsInvocation extends CardImpl {
public SunbirdsInvocation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{R}");
@@ -156,7 +157,7 @@ class SunbirdsInvocationEffect extends OneShotEffect {
Card card = cards.get(target.getFirstTarget(), game);
if (card != null) {
if (controller.chooseUse(Outcome.Benefit, "Cast " + card.getLogName() + " without paying its mana cost?", source, game)) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
cards.remove(card);
}
}
diff --git a/Mage.Sets/src/mage/cards/s/SunbladeElf.java b/Mage.Sets/src/mage/cards/s/SunbladeElf.java
index ec32821bcdc..c82569514fb 100644
--- a/Mage.Sets/src/mage/cards/s/SunbladeElf.java
+++ b/Mage.Sets/src/mage/cards/s/SunbladeElf.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class SunbladeElf extends CardImpl {
+public final class SunbladeElf extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Plains");
diff --git a/Mage.Sets/src/mage/cards/s/SunblastAngel.java b/Mage.Sets/src/mage/cards/s/SunblastAngel.java
index 253dc26bc15..0a3eea255c3 100644
--- a/Mage.Sets/src/mage/cards/s/SunblastAngel.java
+++ b/Mage.Sets/src/mage/cards/s/SunblastAngel.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author nantuko
*/
-public class SunblastAngel extends CardImpl {
+public final class SunblastAngel extends CardImpl {
private static final FilterPermanent tappedFilter = new FilterCreaturePermanent("tapped creatures");
diff --git a/Mage.Sets/src/mage/cards/s/Sunbond.java b/Mage.Sets/src/mage/cards/s/Sunbond.java
index 7e71c144ad2..2eeefd107b3 100644
--- a/Mage.Sets/src/mage/cards/s/Sunbond.java
+++ b/Mage.Sets/src/mage/cards/s/Sunbond.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Sunbond extends CardImpl {
+public final class Sunbond extends CardImpl {
public Sunbond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunbringersTouch.java b/Mage.Sets/src/mage/cards/s/SunbringersTouch.java
index 507914bf918..9389373e659 100644
--- a/Mage.Sets/src/mage/cards/s/SunbringersTouch.java
+++ b/Mage.Sets/src/mage/cards/s/SunbringersTouch.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author fireshoes
*/
-public class SunbringersTouch extends CardImpl {
+public final class SunbringersTouch extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Each creature you control with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/s/Suncrusher.java b/Mage.Sets/src/mage/cards/s/Suncrusher.java
index 3c5c2769dbe..7586c4df3ba 100644
--- a/Mage.Sets/src/mage/cards/s/Suncrusher.java
+++ b/Mage.Sets/src/mage/cards/s/Suncrusher.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Suncrusher extends CardImpl {
+public final class Suncrusher extends CardImpl {
public Suncrusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{9}");
diff --git a/Mage.Sets/src/mage/cards/s/Sunder.java b/Mage.Sets/src/mage/cards/s/Sunder.java
index c38a2414de6..f67aa4dafee 100644
--- a/Mage.Sets/src/mage/cards/s/Sunder.java
+++ b/Mage.Sets/src/mage/cards/s/Sunder.java
@@ -38,7 +38,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class Sunder extends CardImpl {
+public final class Sunder extends CardImpl {
public Sunder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SunderFromWithin.java b/Mage.Sets/src/mage/cards/s/SunderFromWithin.java
index e944eb7c24f..0233a4f03b8 100644
--- a/Mage.Sets/src/mage/cards/s/SunderFromWithin.java
+++ b/Mage.Sets/src/mage/cards/s/SunderFromWithin.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class SunderFromWithin extends CardImpl {
+public final class SunderFromWithin extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or land");
diff --git a/Mage.Sets/src/mage/cards/s/SunderingGrowth.java b/Mage.Sets/src/mage/cards/s/SunderingGrowth.java
index 1eb7506b1e6..e71aba63093 100644
--- a/Mage.Sets/src/mage/cards/s/SunderingGrowth.java
+++ b/Mage.Sets/src/mage/cards/s/SunderingGrowth.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author LevleX2
*/
-public class SunderingGrowth extends CardImpl {
+public final class SunderingGrowth extends CardImpl {
public SunderingGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G/W}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunderingTitan.java b/Mage.Sets/src/mage/cards/s/SunderingTitan.java
index fabc79b65ed..2f39be4f260 100644
--- a/Mage.Sets/src/mage/cards/s/SunderingTitan.java
+++ b/Mage.Sets/src/mage/cards/s/SunderingTitan.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SunderingTitan extends CardImpl {
+public final class SunderingTitan extends CardImpl {
public SunderingTitan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/s/SunderingVitae.java b/Mage.Sets/src/mage/cards/s/SunderingVitae.java
index 33b894267ba..924e54be650 100644
--- a/Mage.Sets/src/mage/cards/s/SunderingVitae.java
+++ b/Mage.Sets/src/mage/cards/s/SunderingVitae.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author jonubuu
*/
-public class SunderingVitae extends CardImpl {
+public final class SunderingVitae extends CardImpl {
public SunderingVitae(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SundialOfTheInfinite.java b/Mage.Sets/src/mage/cards/s/SundialOfTheInfinite.java
index b65808f014e..91663cf0254 100644
--- a/Mage.Sets/src/mage/cards/s/SundialOfTheInfinite.java
+++ b/Mage.Sets/src/mage/cards/s/SundialOfTheInfinite.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author nantuko
*/
-public class SundialOfTheInfinite extends CardImpl {
+public final class SundialOfTheInfinite extends CardImpl {
public SundialOfTheInfinite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SunfireBalm.java b/Mage.Sets/src/mage/cards/s/SunfireBalm.java
index 459410c1e9f..e587676a749 100644
--- a/Mage.Sets/src/mage/cards/s/SunfireBalm.java
+++ b/Mage.Sets/src/mage/cards/s/SunfireBalm.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class SunfireBalm extends CardImpl {
+public final class SunfireBalm extends CardImpl {
public SunfireBalm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunflareShaman.java b/Mage.Sets/src/mage/cards/s/SunflareShaman.java
index 86b396037ec..1e7391ac2f7 100644
--- a/Mage.Sets/src/mage/cards/s/SunflareShaman.java
+++ b/Mage.Sets/src/mage/cards/s/SunflareShaman.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class SunflareShaman extends CardImpl {
+public final class SunflareShaman extends CardImpl {
public SunflareShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Sunforger.java b/Mage.Sets/src/mage/cards/s/Sunforger.java
index cd54573746c..d4bdc037d4a 100644
--- a/Mage.Sets/src/mage/cards/s/Sunforger.java
+++ b/Mage.Sets/src/mage/cards/s/Sunforger.java
@@ -28,6 +28,7 @@
package mage.cards.s;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
@@ -44,10 +45,10 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.ComparisonType;
import mage.constants.Duration;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.Predicate;
@@ -64,7 +65,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class Sunforger extends CardImpl {
+public final class Sunforger extends CardImpl {
public Sunforger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
@@ -133,7 +134,7 @@ class SunforgerEffect extends OneShotEffect {
UUID targetId = target.getFirstTarget();
Card card = game.getCard(targetId);
if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/s/SunglassesOfUrza.java b/Mage.Sets/src/mage/cards/s/SunglassesOfUrza.java
index 26633df851b..7b735ebd5e2 100644
--- a/Mage.Sets/src/mage/cards/s/SunglassesOfUrza.java
+++ b/Mage.Sets/src/mage/cards/s/SunglassesOfUrza.java
@@ -47,7 +47,7 @@ import mage.players.ManaPoolItem;
*
* @author LevelX2
*/
-public class SunglassesOfUrza extends CardImpl {
+public final class SunglassesOfUrza extends CardImpl {
public SunglassesOfUrza(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SungracePegasus.java b/Mage.Sets/src/mage/cards/s/SungracePegasus.java
index e0b8adb96aa..9389d7fa1d2 100644
--- a/Mage.Sets/src/mage/cards/s/SungracePegasus.java
+++ b/Mage.Sets/src/mage/cards/s/SungracePegasus.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SungracePegasus extends CardImpl {
+public final class SungracePegasus extends CardImpl {
public SungracePegasus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SungrassEgg.java b/Mage.Sets/src/mage/cards/s/SungrassEgg.java
index 6977509e333..fe0b130503d 100644
--- a/Mage.Sets/src/mage/cards/s/SungrassEgg.java
+++ b/Mage.Sets/src/mage/cards/s/SungrassEgg.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SungrassEgg extends CardImpl {
+public final class SungrassEgg extends CardImpl {
public SungrassEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SungrassPrairie.java b/Mage.Sets/src/mage/cards/s/SungrassPrairie.java
index e84efb22fef..8106c0a3679 100644
--- a/Mage.Sets/src/mage/cards/s/SungrassPrairie.java
+++ b/Mage.Sets/src/mage/cards/s/SungrassPrairie.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class SungrassPrairie extends CardImpl {
+public final class SungrassPrairie extends CardImpl {
public SungrassPrairie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SunhomeEnforcer.java b/Mage.Sets/src/mage/cards/s/SunhomeEnforcer.java
index 4876f3cab49..9b9f5f2bc1f 100644
--- a/Mage.Sets/src/mage/cards/s/SunhomeEnforcer.java
+++ b/Mage.Sets/src/mage/cards/s/SunhomeEnforcer.java
@@ -49,7 +49,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes
*/
-public class SunhomeEnforcer extends CardImpl {
+public final class SunhomeEnforcer extends CardImpl {
public SunhomeEnforcer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunhomeFortressOfTheLegion.java b/Mage.Sets/src/mage/cards/s/SunhomeFortressOfTheLegion.java
index ddf9b184c54..5a363606419 100644
--- a/Mage.Sets/src/mage/cards/s/SunhomeFortressOfTheLegion.java
+++ b/Mage.Sets/src/mage/cards/s/SunhomeFortressOfTheLegion.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SunhomeFortressOfTheLegion extends CardImpl {
+public final class SunhomeFortressOfTheLegion extends CardImpl {
public SunhomeFortressOfTheLegion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SunhomeGuildmage.java b/Mage.Sets/src/mage/cards/s/SunhomeGuildmage.java
index 131f4fbb7b1..0db9116732e 100644
--- a/Mage.Sets/src/mage/cards/s/SunhomeGuildmage.java
+++ b/Mage.Sets/src/mage/cards/s/SunhomeGuildmage.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.SoldierTokenWithHaste;
*
* @author Plopman
*/
-public class SunhomeGuildmage extends CardImpl {
+public final class SunhomeGuildmage extends CardImpl {
public SunhomeGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunkenCity.java b/Mage.Sets/src/mage/cards/s/SunkenCity.java
index 0908db07c94..15220cbb028 100644
--- a/Mage.Sets/src/mage/cards/s/SunkenCity.java
+++ b/Mage.Sets/src/mage/cards/s/SunkenCity.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LoneFox
*/
-public class SunkenCity extends CardImpl {
+public final class SunkenCity extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creatures");
diff --git a/Mage.Sets/src/mage/cards/s/SunkenField.java b/Mage.Sets/src/mage/cards/s/SunkenField.java
index 97a38302769..674d2b12bd0 100644
--- a/Mage.Sets/src/mage/cards/s/SunkenField.java
+++ b/Mage.Sets/src/mage/cards/s/SunkenField.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class SunkenField extends CardImpl {
+public final class SunkenField extends CardImpl {
public SunkenField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SunkenHollow.java b/Mage.Sets/src/mage/cards/s/SunkenHollow.java
index 96c024e540c..b6e335ab661 100644
--- a/Mage.Sets/src/mage/cards/s/SunkenHollow.java
+++ b/Mage.Sets/src/mage/cards/s/SunkenHollow.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author fireshoes
*/
-public class SunkenHollow extends CardImpl {
+public final class SunkenHollow extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SunkenHope.java b/Mage.Sets/src/mage/cards/s/SunkenHope.java
index 6af3b328a6e..238ebe3c058 100644
--- a/Mage.Sets/src/mage/cards/s/SunkenHope.java
+++ b/Mage.Sets/src/mage/cards/s/SunkenHope.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class SunkenHope extends CardImpl {
+public final class SunkenHope extends CardImpl {
public SunkenHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SunkenRuins.java b/Mage.Sets/src/mage/cards/s/SunkenRuins.java
index 11d6829216c..7bd3300ae2c 100644
--- a/Mage.Sets/src/mage/cards/s/SunkenRuins.java
+++ b/Mage.Sets/src/mage/cards/s/SunkenRuins.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jonubuu
*/
-public class SunkenRuins extends CardImpl {
+public final class SunkenRuins extends CardImpl {
public SunkenRuins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/Sunlance.java b/Mage.Sets/src/mage/cards/s/Sunlance.java
index 70883268593..dd4516c1e00 100644
--- a/Mage.Sets/src/mage/cards/s/Sunlance.java
+++ b/Mage.Sets/src/mage/cards/s/Sunlance.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Sunlance extends CardImpl {
+public final class Sunlance extends CardImpl {
static final protected FilterCreaturePermanent filter = new FilterCreaturePermanent("nonwhite creature");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SunpetalGrove.java b/Mage.Sets/src/mage/cards/s/SunpetalGrove.java
index a6083962253..a27625171d2 100644
--- a/Mage.Sets/src/mage/cards/s/SunpetalGrove.java
+++ b/Mage.Sets/src/mage/cards/s/SunpetalGrove.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SunpetalGrove extends CardImpl {
+public final class SunpetalGrove extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SunriseSeeker.java b/Mage.Sets/src/mage/cards/s/SunriseSeeker.java
index c5194fb74aa..c92133b11c4 100644
--- a/Mage.Sets/src/mage/cards/s/SunriseSeeker.java
+++ b/Mage.Sets/src/mage/cards/s/SunriseSeeker.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author TheElk801
*/
-public class SunriseSeeker extends CardImpl {
+public final class SunriseSeeker extends CardImpl {
public SunriseSeeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunriseSovereign.java b/Mage.Sets/src/mage/cards/s/SunriseSovereign.java
index 00fe77358e0..4f1fa1517a6 100644
--- a/Mage.Sets/src/mage/cards/s/SunriseSovereign.java
+++ b/Mage.Sets/src/mage/cards/s/SunriseSovereign.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class SunriseSovereign extends CardImpl {
+public final class SunriseSovereign extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Giant");
diff --git a/Mage.Sets/src/mage/cards/s/SunsBounty.java b/Mage.Sets/src/mage/cards/s/SunsBounty.java
index 4ca7c501760..004c2ada194 100644
--- a/Mage.Sets/src/mage/cards/s/SunsBounty.java
+++ b/Mage.Sets/src/mage/cards/s/SunsBounty.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class SunsBounty extends CardImpl {
+public final class SunsBounty extends CardImpl {
public SunsBounty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunscapeApprentice.java b/Mage.Sets/src/mage/cards/s/SunscapeApprentice.java
index 1f09b28f899..95e1a811e78 100644
--- a/Mage.Sets/src/mage/cards/s/SunscapeApprentice.java
+++ b/Mage.Sets/src/mage/cards/s/SunscapeApprentice.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class SunscapeApprentice extends CardImpl {
+public final class SunscapeApprentice extends CardImpl {
public SunscapeApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunscapeBattlemage.java b/Mage.Sets/src/mage/cards/s/SunscapeBattlemage.java
index 7ff242e0629..022b93e3725 100644
--- a/Mage.Sets/src/mage/cards/s/SunscapeBattlemage.java
+++ b/Mage.Sets/src/mage/cards/s/SunscapeBattlemage.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author FenrisulfrX
*/
-public class SunscapeBattlemage extends CardImpl {
+public final class SunscapeBattlemage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SunscapeFamiliar.java b/Mage.Sets/src/mage/cards/s/SunscapeFamiliar.java
index 0f91253f569..82baae52f88 100644
--- a/Mage.Sets/src/mage/cards/s/SunscapeFamiliar.java
+++ b/Mage.Sets/src/mage/cards/s/SunscapeFamiliar.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class SunscapeFamiliar extends CardImpl {
+public final class SunscapeFamiliar extends CardImpl {
private static final FilterCard filter = new FilterCard("Green spells and blue spells");
diff --git a/Mage.Sets/src/mage/cards/s/SunscapeMaster.java b/Mage.Sets/src/mage/cards/s/SunscapeMaster.java
index ef269a7a736..4844199bb8f 100644
--- a/Mage.Sets/src/mage/cards/s/SunscapeMaster.java
+++ b/Mage.Sets/src/mage/cards/s/SunscapeMaster.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author michael.napoleon@gmail.com
*/
-public class SunscapeMaster extends CardImpl {
+public final class SunscapeMaster extends CardImpl {
public SunscapeMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunscorchRegent.java b/Mage.Sets/src/mage/cards/s/SunscorchRegent.java
index 6d07e29406e..ab1e13c13c1 100644
--- a/Mage.Sets/src/mage/cards/s/SunscorchRegent.java
+++ b/Mage.Sets/src/mage/cards/s/SunscorchRegent.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class SunscorchRegent extends CardImpl {
+public final class SunscorchRegent extends CardImpl {
public SunscorchRegent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunscorchedDesert.java b/Mage.Sets/src/mage/cards/s/SunscorchedDesert.java
index 7e364e2dbb0..2bfc6065c04 100644
--- a/Mage.Sets/src/mage/cards/s/SunscorchedDesert.java
+++ b/Mage.Sets/src/mage/cards/s/SunscorchedDesert.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class SunscorchedDesert extends CardImpl {
+public final class SunscorchedDesert extends CardImpl {
public SunscorchedDesert(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/Sunscour.java b/Mage.Sets/src/mage/cards/s/Sunscour.java
index aca679b76bf..0296678a392 100644
--- a/Mage.Sets/src/mage/cards/s/Sunscour.java
+++ b/Mage.Sets/src/mage/cards/s/Sunscour.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author andyfries
*/
-public class Sunscour extends CardImpl {
+public final class Sunscour extends CardImpl {
private static final FilterCard filter = new FilterCard("two white cards");
diff --git a/Mage.Sets/src/mage/cards/s/SunscourgeChampion.java b/Mage.Sets/src/mage/cards/s/SunscourgeChampion.java
index b6f3da8da8a..a6c9184b59e 100644
--- a/Mage.Sets/src/mage/cards/s/SunscourgeChampion.java
+++ b/Mage.Sets/src/mage/cards/s/SunscourgeChampion.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class SunscourgeChampion extends CardImpl {
+public final class SunscourgeChampion extends CardImpl {
private static String rule = "Eternalize - {2}{W}{W}, Discard a card ({2}{W}{W}, Discard a card, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie";
diff --git a/Mage.Sets/src/mage/cards/s/SunseedNurturer.java b/Mage.Sets/src/mage/cards/s/SunseedNurturer.java
index be39fee3e3f..71c4a0a3476 100644
--- a/Mage.Sets/src/mage/cards/s/SunseedNurturer.java
+++ b/Mage.Sets/src/mage/cards/s/SunseedNurturer.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author North
*/
-public class SunseedNurturer extends CardImpl {
+public final class SunseedNurturer extends CardImpl {
public SunseedNurturer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunsetPyramid.java b/Mage.Sets/src/mage/cards/s/SunsetPyramid.java
index 86ad8f7ad30..ef6af0b2b46 100644
--- a/Mage.Sets/src/mage/cards/s/SunsetPyramid.java
+++ b/Mage.Sets/src/mage/cards/s/SunsetPyramid.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author spjspj
*/
-public class SunsetPyramid extends CardImpl {
+public final class SunsetPyramid extends CardImpl {
public SunsetPyramid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SunspearShikari.java b/Mage.Sets/src/mage/cards/s/SunspearShikari.java
index 5bee66a37a3..4565402bcf6 100644
--- a/Mage.Sets/src/mage/cards/s/SunspearShikari.java
+++ b/Mage.Sets/src/mage/cards/s/SunspearShikari.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author nantuko
*/
-public class SunspearShikari extends CardImpl {
+public final class SunspearShikari extends CardImpl {
public SunspearShikari(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunspireGatekeepers.java b/Mage.Sets/src/mage/cards/s/SunspireGatekeepers.java
index 1a899747cf0..3a3777cd9b8 100644
--- a/Mage.Sets/src/mage/cards/s/SunspireGatekeepers.java
+++ b/Mage.Sets/src/mage/cards/s/SunspireGatekeepers.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*/
-public class SunspireGatekeepers extends CardImpl {
+public final class SunspireGatekeepers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/s/SunspireGriffin.java b/Mage.Sets/src/mage/cards/s/SunspireGriffin.java
index 4ee147a43be..272a5a5da59 100644
--- a/Mage.Sets/src/mage/cards/s/SunspireGriffin.java
+++ b/Mage.Sets/src/mage/cards/s/SunspireGriffin.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SunspireGriffin extends CardImpl {
+public final class SunspireGriffin extends CardImpl {
public SunspireGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SunspringExpedition.java b/Mage.Sets/src/mage/cards/s/SunspringExpedition.java
index 743893a8e7d..7b76425af36 100644
--- a/Mage.Sets/src/mage/cards/s/SunspringExpedition.java
+++ b/Mage.Sets/src/mage/cards/s/SunspringExpedition.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SunspringExpedition extends CardImpl {
+public final class SunspringExpedition extends CardImpl {
public SunspringExpedition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Sunstone.java b/Mage.Sets/src/mage/cards/s/Sunstone.java
index 7b744cad72b..ec19d32db93 100644
--- a/Mage.Sets/src/mage/cards/s/Sunstone.java
+++ b/Mage.Sets/src/mage/cards/s/Sunstone.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Quercitron
*/
-public class Sunstone extends CardImpl {
+public final class Sunstone extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a snow land");
diff --git a/Mage.Sets/src/mage/cards/s/SunstrikeLegionnaire.java b/Mage.Sets/src/mage/cards/s/SunstrikeLegionnaire.java
index 112a1832f8c..1fd775e383a 100644
--- a/Mage.Sets/src/mage/cards/s/SunstrikeLegionnaire.java
+++ b/Mage.Sets/src/mage/cards/s/SunstrikeLegionnaire.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SunstrikeLegionnaire extends CardImpl {
+public final class SunstrikeLegionnaire extends CardImpl {
private static final FilterCreaturePermanent untapFilter = new FilterCreaturePermanent("another creature");
private static final FilterCreaturePermanent tapFilter = new FilterCreaturePermanent("creature with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/s/SuntailHawk.java b/Mage.Sets/src/mage/cards/s/SuntailHawk.java
index c8d455daf9c..8fe012aad38 100644
--- a/Mage.Sets/src/mage/cards/s/SuntailHawk.java
+++ b/Mage.Sets/src/mage/cards/s/SuntailHawk.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class SuntailHawk extends CardImpl {
+public final class SuntailHawk extends CardImpl {
public SuntailHawk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SuntouchedMyr.java b/Mage.Sets/src/mage/cards/s/SuntouchedMyr.java
index 8094c5be5a8..a443b1d1377 100644
--- a/Mage.Sets/src/mage/cards/s/SuntouchedMyr.java
+++ b/Mage.Sets/src/mage/cards/s/SuntouchedMyr.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SuntouchedMyr extends CardImpl {
+public final class SuntouchedMyr extends CardImpl {
public SuntouchedMyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/Sunweb.java b/Mage.Sets/src/mage/cards/s/Sunweb.java
index 2ebadddf320..8fcff7b579e 100644
--- a/Mage.Sets/src/mage/cards/s/Sunweb.java
+++ b/Mage.Sets/src/mage/cards/s/Sunweb.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author Quercitron
*/
-public class Sunweb extends CardImpl {
+public final class Sunweb extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SuperBattleDroid.java b/Mage.Sets/src/mage/cards/s/SuperBattleDroid.java
index c31d0fd5d6c..4eadff04786 100644
--- a/Mage.Sets/src/mage/cards/s/SuperBattleDroid.java
+++ b/Mage.Sets/src/mage/cards/s/SuperBattleDroid.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class SuperBattleDroid extends CardImpl {
+public final class SuperBattleDroid extends CardImpl {
public SuperBattleDroid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SupernaturalStamina.java b/Mage.Sets/src/mage/cards/s/SupernaturalStamina.java
index b2c1c33f3b5..ac5b8fc50a7 100644
--- a/Mage.Sets/src/mage/cards/s/SupernaturalStamina.java
+++ b/Mage.Sets/src/mage/cards/s/SupernaturalStamina.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class SupernaturalStamina extends CardImpl {
+public final class SupernaturalStamina extends CardImpl {
public SupernaturalStamina(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SupplantForm.java b/Mage.Sets/src/mage/cards/s/SupplantForm.java
index 1ed9b2032d3..76d43a50285 100644
--- a/Mage.Sets/src/mage/cards/s/SupplantForm.java
+++ b/Mage.Sets/src/mage/cards/s/SupplantForm.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SupplantForm extends CardImpl {
+public final class SupplantForm extends CardImpl {
public SupplantForm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SupplyCaravan.java b/Mage.Sets/src/mage/cards/s/SupplyCaravan.java
index 716b0ca545d..628494cef78 100644
--- a/Mage.Sets/src/mage/cards/s/SupplyCaravan.java
+++ b/Mage.Sets/src/mage/cards/s/SupplyCaravan.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class SupplyCaravan extends CardImpl {
+public final class SupplyCaravan extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a tapped creature");
diff --git a/Mage.Sets/src/mage/cards/s/SupplyDemand.java b/Mage.Sets/src/mage/cards/s/SupplyDemand.java
index 4df895a5415..b7b175fe00e 100644
--- a/Mage.Sets/src/mage/cards/s/SupplyDemand.java
+++ b/Mage.Sets/src/mage/cards/s/SupplyDemand.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class SupplyDemand extends SplitCard {
+public final class SupplyDemand extends SplitCard {
private static final FilterCard filter = new FilterCard("multicolored card");
diff --git a/Mage.Sets/src/mage/cards/s/SupplyLineCranes.java b/Mage.Sets/src/mage/cards/s/SupplyLineCranes.java
index 12921f35d0a..11ce983de44 100644
--- a/Mage.Sets/src/mage/cards/s/SupplyLineCranes.java
+++ b/Mage.Sets/src/mage/cards/s/SupplyLineCranes.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SupplyLineCranes extends CardImpl {
+public final class SupplyLineCranes extends CardImpl {
public SupplyLineCranes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SuppressionBonds.java b/Mage.Sets/src/mage/cards/s/SuppressionBonds.java
index c4aa188b227..af829f1e0da 100644
--- a/Mage.Sets/src/mage/cards/s/SuppressionBonds.java
+++ b/Mage.Sets/src/mage/cards/s/SuppressionBonds.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class SuppressionBonds extends CardImpl {
+public final class SuppressionBonds extends CardImpl {
public SuppressionBonds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SuppressionField.java b/Mage.Sets/src/mage/cards/s/SuppressionField.java
index 2403ad29390..70850257eaa 100644
--- a/Mage.Sets/src/mage/cards/s/SuppressionField.java
+++ b/Mage.Sets/src/mage/cards/s/SuppressionField.java
@@ -46,7 +46,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class SuppressionField extends CardImpl {
+public final class SuppressionField extends CardImpl {
public SuppressionField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SupremeExemplar.java b/Mage.Sets/src/mage/cards/s/SupremeExemplar.java
index e6e5ddbb7fe..6868898419d 100644
--- a/Mage.Sets/src/mage/cards/s/SupremeExemplar.java
+++ b/Mage.Sets/src/mage/cards/s/SupremeExemplar.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class SupremeExemplar extends CardImpl {
+public final class SupremeExemplar extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Elemental");
diff --git a/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java b/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java
index df6afc2838b..ef7728eb24a 100644
--- a/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java
+++ b/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class SupremeInquisitor extends CardImpl {
+public final class SupremeInquisitor extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Wizards you control");
diff --git a/Mage.Sets/src/mage/cards/s/SupremeVerdict.java b/Mage.Sets/src/mage/cards/s/SupremeVerdict.java
index 870a9cd0fd0..1abab9e3c1f 100644
--- a/Mage.Sets/src/mage/cards/s/SupremeVerdict.java
+++ b/Mage.Sets/src/mage/cards/s/SupremeVerdict.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class SupremeVerdict extends CardImpl {
+public final class SupremeVerdict extends CardImpl {
public SupremeVerdict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SupremeWill.java b/Mage.Sets/src/mage/cards/s/SupremeWill.java
index 6dde684f4c9..b6d9c2781a2 100644
--- a/Mage.Sets/src/mage/cards/s/SupremeWill.java
+++ b/Mage.Sets/src/mage/cards/s/SupremeWill.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class SupremeWill extends CardImpl {
+public final class SupremeWill extends CardImpl {
public SupremeWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SuqAtaAssassin.java b/Mage.Sets/src/mage/cards/s/SuqAtaAssassin.java
index 499f3db3b32..87a8e7c60ac 100644
--- a/Mage.Sets/src/mage/cards/s/SuqAtaAssassin.java
+++ b/Mage.Sets/src/mage/cards/s/SuqAtaAssassin.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SuqAtaAssassin extends CardImpl {
+public final class SuqAtaAssassin extends CardImpl {
public SuqAtaAssassin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SuqAtaFirewalker.java b/Mage.Sets/src/mage/cards/s/SuqAtaFirewalker.java
index f8df4da88ea..b8cea42dcaf 100644
--- a/Mage.Sets/src/mage/cards/s/SuqAtaFirewalker.java
+++ b/Mage.Sets/src/mage/cards/s/SuqAtaFirewalker.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author igout
*/
-public class SuqAtaFirewalker extends CardImpl {
+public final class SuqAtaFirewalker extends CardImpl {
private static final FilterObject filterRed = new FilterStackObject("red spells or abilities from red sources");
diff --git a/Mage.Sets/src/mage/cards/s/SuqAtaLancer.java b/Mage.Sets/src/mage/cards/s/SuqAtaLancer.java
index 5743794d8d8..6133fa2d4e6 100644
--- a/Mage.Sets/src/mage/cards/s/SuqAtaLancer.java
+++ b/Mage.Sets/src/mage/cards/s/SuqAtaLancer.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class SuqAtaLancer extends CardImpl {
+public final class SuqAtaLancer extends CardImpl {
public SuqAtaLancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SureStrike.java b/Mage.Sets/src/mage/cards/s/SureStrike.java
index e7aaa268f3f..47f29776c87 100644
--- a/Mage.Sets/src/mage/cards/s/SureStrike.java
+++ b/Mage.Sets/src/mage/cards/s/SureStrike.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SureStrike extends CardImpl {
+public final class SureStrike extends CardImpl {
public SureStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SurestrikeTrident.java b/Mage.Sets/src/mage/cards/s/SurestrikeTrident.java
index ebf82c74d24..b4f60329140 100644
--- a/Mage.Sets/src/mage/cards/s/SurestrikeTrident.java
+++ b/Mage.Sets/src/mage/cards/s/SurestrikeTrident.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author AlumiuN
*/
-public class SurestrikeTrident extends CardImpl {
+public final class SurestrikeTrident extends CardImpl {
public SurestrikeTrident(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SurgeNode.java b/Mage.Sets/src/mage/cards/s/SurgeNode.java
index ae7d2022fda..cae694a7811 100644
--- a/Mage.Sets/src/mage/cards/s/SurgeNode.java
+++ b/Mage.Sets/src/mage/cards/s/SurgeNode.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Loki
*/
-public class SurgeNode extends CardImpl {
+public final class SurgeNode extends CardImpl {
public SurgeNode (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SurgeOfRighteousness.java b/Mage.Sets/src/mage/cards/s/SurgeOfRighteousness.java
index 664bfb7f319..ffd8f664f54 100644
--- a/Mage.Sets/src/mage/cards/s/SurgeOfRighteousness.java
+++ b/Mage.Sets/src/mage/cards/s/SurgeOfRighteousness.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SurgeOfRighteousness extends CardImpl {
+public final class SurgeOfRighteousness extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterAttackingOrBlockingCreature("black or red creature that's attacking or blocking");
diff --git a/Mage.Sets/src/mage/cards/s/SurgeOfStrength.java b/Mage.Sets/src/mage/cards/s/SurgeOfStrength.java
index a6523b8cdda..59f004fdfc8 100644
--- a/Mage.Sets/src/mage/cards/s/SurgeOfStrength.java
+++ b/Mage.Sets/src/mage/cards/s/SurgeOfStrength.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class SurgeOfStrength extends CardImpl {
+public final class SurgeOfStrength extends CardImpl {
private static final FilterCard filter = new FilterCard("a red or green card");
static{
diff --git a/Mage.Sets/src/mage/cards/s/SurgeOfThoughtweft.java b/Mage.Sets/src/mage/cards/s/SurgeOfThoughtweft.java
index 086977621c1..043d5403b5f 100644
--- a/Mage.Sets/src/mage/cards/s/SurgeOfThoughtweft.java
+++ b/Mage.Sets/src/mage/cards/s/SurgeOfThoughtweft.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class SurgeOfThoughtweft extends CardImpl {
+public final class SurgeOfThoughtweft extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Kithkin");
diff --git a/Mage.Sets/src/mage/cards/s/SurgeOfZeal.java b/Mage.Sets/src/mage/cards/s/SurgeOfZeal.java
index 26c00c2aeb5..32324233923 100644
--- a/Mage.Sets/src/mage/cards/s/SurgeOfZeal.java
+++ b/Mage.Sets/src/mage/cards/s/SurgeOfZeal.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SurgeOfZeal extends CardImpl {
+public final class SurgeOfZeal extends CardImpl {
public SurgeOfZeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Surgespanner.java b/Mage.Sets/src/mage/cards/s/Surgespanner.java
index bb5467ee116..f263e6a2e87 100644
--- a/Mage.Sets/src/mage/cards/s/Surgespanner.java
+++ b/Mage.Sets/src/mage/cards/s/Surgespanner.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class Surgespanner extends CardImpl {
+public final class Surgespanner extends CardImpl {
public Surgespanner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SurgicalExtraction.java b/Mage.Sets/src/mage/cards/s/SurgicalExtraction.java
index dfa213409fb..37654a1e5e9 100644
--- a/Mage.Sets/src/mage/cards/s/SurgicalExtraction.java
+++ b/Mage.Sets/src/mage/cards/s/SurgicalExtraction.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class SurgicalExtraction extends CardImpl {
+public final class SurgicalExtraction extends CardImpl {
private static final FilterCard filter = new FilterCard("card in a graveyard other than a basic land card");
diff --git a/Mage.Sets/src/mage/cards/s/SurgingAether.java b/Mage.Sets/src/mage/cards/s/SurgingAether.java
index 79d406787fc..c06cb8dd692 100644
--- a/Mage.Sets/src/mage/cards/s/SurgingAether.java
+++ b/Mage.Sets/src/mage/cards/s/SurgingAether.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class SurgingAether extends CardImpl {
+public final class SurgingAether extends CardImpl {
public SurgingAether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SurgingDementia.java b/Mage.Sets/src/mage/cards/s/SurgingDementia.java
index d24c284691b..3962bb701e6 100644
--- a/Mage.Sets/src/mage/cards/s/SurgingDementia.java
+++ b/Mage.Sets/src/mage/cards/s/SurgingDementia.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author klayhamn
*/
-public class SurgingDementia extends CardImpl {
+public final class SurgingDementia extends CardImpl {
public SurgingDementia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SurgingFlame.java b/Mage.Sets/src/mage/cards/s/SurgingFlame.java
index 3efb4febaeb..4df9f9dfa5e 100644
--- a/Mage.Sets/src/mage/cards/s/SurgingFlame.java
+++ b/Mage.Sets/src/mage/cards/s/SurgingFlame.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class SurgingFlame extends CardImpl {
+public final class SurgingFlame extends CardImpl {
public SurgingFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SurgingMight.java b/Mage.Sets/src/mage/cards/s/SurgingMight.java
index 4de1aca15d5..39e7056d5c0 100644
--- a/Mage.Sets/src/mage/cards/s/SurgingMight.java
+++ b/Mage.Sets/src/mage/cards/s/SurgingMight.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SurgingMight extends CardImpl {
+public final class SurgingMight extends CardImpl {
public SurgingMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SurgingSentinels.java b/Mage.Sets/src/mage/cards/s/SurgingSentinels.java
index 43c4f40eb81..995f9c7c02f 100644
--- a/Mage.Sets/src/mage/cards/s/SurgingSentinels.java
+++ b/Mage.Sets/src/mage/cards/s/SurgingSentinels.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SurgingSentinels extends CardImpl {
+public final class SurgingSentinels extends CardImpl {
public SurgingSentinels(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SurpriseDeployment.java b/Mage.Sets/src/mage/cards/s/SurpriseDeployment.java
index 6eafd6e0767..1722365e6b8 100644
--- a/Mage.Sets/src/mage/cards/s/SurpriseDeployment.java
+++ b/Mage.Sets/src/mage/cards/s/SurpriseDeployment.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class SurpriseDeployment extends CardImpl {
+public final class SurpriseDeployment extends CardImpl {
public SurpriseDeployment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SurpriseManeuver.java b/Mage.Sets/src/mage/cards/s/SurpriseManeuver.java
index 56e8aceeece..6ce681feb1d 100644
--- a/Mage.Sets/src/mage/cards/s/SurpriseManeuver.java
+++ b/Mage.Sets/src/mage/cards/s/SurpriseManeuver.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Styxo
*/
-public class SurpriseManeuver extends CardImpl {
+public final class SurpriseManeuver extends CardImpl {
public SurpriseManeuver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SurrakDragonclaw.java b/Mage.Sets/src/mage/cards/s/SurrakDragonclaw.java
index 5862565ea8e..fe3d26cfa41 100644
--- a/Mage.Sets/src/mage/cards/s/SurrakDragonclaw.java
+++ b/Mage.Sets/src/mage/cards/s/SurrakDragonclaw.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class SurrakDragonclaw extends CardImpl {
+public final class SurrakDragonclaw extends CardImpl {
private static final FilterSpell filterTarget = new FilterSpell("Creature spells you control");
diff --git a/Mage.Sets/src/mage/cards/s/SurrakTheHuntCaller.java b/Mage.Sets/src/mage/cards/s/SurrakTheHuntCaller.java
index be99ba23b0d..64c114ea468 100644
--- a/Mage.Sets/src/mage/cards/s/SurrakTheHuntCaller.java
+++ b/Mage.Sets/src/mage/cards/s/SurrakTheHuntCaller.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class SurrakTheHuntCaller extends CardImpl {
+public final class SurrakTheHuntCaller extends CardImpl {
public SurrakTheHuntCaller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SurrakarBanisher.java b/Mage.Sets/src/mage/cards/s/SurrakarBanisher.java
index faa4e25c511..0b8ea94d1ee 100644
--- a/Mage.Sets/src/mage/cards/s/SurrakarBanisher.java
+++ b/Mage.Sets/src/mage/cards/s/SurrakarBanisher.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class SurrakarBanisher extends CardImpl {
+public final class SurrakarBanisher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/s/SurrakarMarauder.java b/Mage.Sets/src/mage/cards/s/SurrakarMarauder.java
index a9dd07f390f..e2808d92cce 100644
--- a/Mage.Sets/src/mage/cards/s/SurrakarMarauder.java
+++ b/Mage.Sets/src/mage/cards/s/SurrakarMarauder.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class SurrakarMarauder extends CardImpl {
+public final class SurrakarMarauder extends CardImpl {
public SurrakarMarauder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SurrakarSpellblade.java b/Mage.Sets/src/mage/cards/s/SurrakarSpellblade.java
index 589ed82c1b6..8dc1e1fd3dc 100644
--- a/Mage.Sets/src/mage/cards/s/SurrakarSpellblade.java
+++ b/Mage.Sets/src/mage/cards/s/SurrakarSpellblade.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author jeffwadsworth
*/
-public class SurrakarSpellblade extends CardImpl {
+public final class SurrakarSpellblade extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery card");
diff --git a/Mage.Sets/src/mage/cards/s/SurrealMemoir.java b/Mage.Sets/src/mage/cards/s/SurrealMemoir.java
index 00453213f86..72366cebdc8 100644
--- a/Mage.Sets/src/mage/cards/s/SurrealMemoir.java
+++ b/Mage.Sets/src/mage/cards/s/SurrealMemoir.java
@@ -47,7 +47,7 @@ import mage.util.RandomUtil;
*
* @author North
*/
-public class SurrealMemoir extends CardImpl {
+public final class SurrealMemoir extends CardImpl {
public SurrealMemoir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SurveillingSprite.java b/Mage.Sets/src/mage/cards/s/SurveillingSprite.java
index 5525f979627..88dbb416ecb 100644
--- a/Mage.Sets/src/mage/cards/s/SurveillingSprite.java
+++ b/Mage.Sets/src/mage/cards/s/SurveillingSprite.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class SurveillingSprite extends CardImpl {
+public final class SurveillingSprite extends CardImpl {
public SurveillingSprite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SurveyTheWreckage.java b/Mage.Sets/src/mage/cards/s/SurveyTheWreckage.java
index 6b71712c7bb..2478aec102b 100644
--- a/Mage.Sets/src/mage/cards/s/SurveyTheWreckage.java
+++ b/Mage.Sets/src/mage/cards/s/SurveyTheWreckage.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetLandPermanent;
/**
* @author LevelX2
*/
-public class SurveyTheWreckage extends CardImpl {
+public final class SurveyTheWreckage extends CardImpl {
public SurveyTheWreckage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SurveyorsScope.java b/Mage.Sets/src/mage/cards/s/SurveyorsScope.java
index 988c0fc6940..dde9deb2d11 100644
--- a/Mage.Sets/src/mage/cards/s/SurveyorsScope.java
+++ b/Mage.Sets/src/mage/cards/s/SurveyorsScope.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class SurveyorsScope extends CardImpl {
+public final class SurveyorsScope extends CardImpl {
public SurveyorsScope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
@@ -102,7 +102,7 @@ class SurveyorsScopeEffect extends OneShotEffect {
}
game.informPlayers(new StringBuilder("Surveyor's Scope: X = ").append(numberOfLands).toString());
// 10/17/2013 If no players control at least two more lands than you when the ability resolves, you’ll still search and shuffle your library.
- return new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, numberOfLands, StaticFilters.FILTER_BASIC_LAND_CARD)).apply(game, source);
+ return new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, numberOfLands, StaticFilters.FILTER_CARD_BASIC_LAND)).apply(game, source);
}
return false;
}
diff --git a/Mage.Sets/src/mage/cards/s/SurvivalCache.java b/Mage.Sets/src/mage/cards/s/SurvivalCache.java
index 7098abb58b7..77ba3c2c04e 100644
--- a/Mage.Sets/src/mage/cards/s/SurvivalCache.java
+++ b/Mage.Sets/src/mage/cards/s/SurvivalCache.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class SurvivalCache extends CardImpl {
+public final class SurvivalCache extends CardImpl {
public SurvivalCache(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SurvivalOfTheFittest.java b/Mage.Sets/src/mage/cards/s/SurvivalOfTheFittest.java
index 8f093590580..fb2a866740e 100644
--- a/Mage.Sets/src/mage/cards/s/SurvivalOfTheFittest.java
+++ b/Mage.Sets/src/mage/cards/s/SurvivalOfTheFittest.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author jeffwadsworth
*/
-public class SurvivalOfTheFittest extends CardImpl {
+public final class SurvivalOfTheFittest extends CardImpl {
public SurvivalOfTheFittest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SurviveTheNight.java b/Mage.Sets/src/mage/cards/s/SurviveTheNight.java
index b493719de7b..6c8728baab7 100644
--- a/Mage.Sets/src/mage/cards/s/SurviveTheNight.java
+++ b/Mage.Sets/src/mage/cards/s/SurviveTheNight.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SurviveTheNight extends CardImpl {
+public final class SurviveTheNight extends CardImpl {
public SurviveTheNight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SurvivorOfTheUnseen.java b/Mage.Sets/src/mage/cards/s/SurvivorOfTheUnseen.java
index cf4c4bade3e..f10ee1bd0bb 100644
--- a/Mage.Sets/src/mage/cards/s/SurvivorOfTheUnseen.java
+++ b/Mage.Sets/src/mage/cards/s/SurvivorOfTheUnseen.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInHand;
*
* @author TheElk801
*/
-public class SurvivorOfTheUnseen extends CardImpl {
+public final class SurvivorOfTheUnseen extends CardImpl {
public SurvivorOfTheUnseen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SurvivorsEncampment.java b/Mage.Sets/src/mage/cards/s/SurvivorsEncampment.java
index 1d3a596fedc..ec73ace6ac1 100644
--- a/Mage.Sets/src/mage/cards/s/SurvivorsEncampment.java
+++ b/Mage.Sets/src/mage/cards/s/SurvivorsEncampment.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author spjspj
*/
-public class SurvivorsEncampment extends CardImpl {
+public final class SurvivorsEncampment extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/s/SuspensionField.java b/Mage.Sets/src/mage/cards/s/SuspensionField.java
index 6d084ce6551..d347e913535 100644
--- a/Mage.Sets/src/mage/cards/s/SuspensionField.java
+++ b/Mage.Sets/src/mage/cards/s/SuspensionField.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class SuspensionField extends CardImpl {
+public final class SuspensionField extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with toughness 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/s/SustainerOfTheRealm.java b/Mage.Sets/src/mage/cards/s/SustainerOfTheRealm.java
index e766a8b67af..e2ac07ce402 100644
--- a/Mage.Sets/src/mage/cards/s/SustainerOfTheRealm.java
+++ b/Mage.Sets/src/mage/cards/s/SustainerOfTheRealm.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class SustainerOfTheRealm extends CardImpl {
+public final class SustainerOfTheRealm extends CardImpl {
public SustainerOfTheRealm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SustainingSpirit.java b/Mage.Sets/src/mage/cards/s/SustainingSpirit.java
index 08a42cbaf0c..e9beb9eba49 100644
--- a/Mage.Sets/src/mage/cards/s/SustainingSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/SustainingSpirit.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author KholdFuzion
*/
-public class SustainingSpirit extends CardImpl {
+public final class SustainingSpirit extends CardImpl {
public SustainingSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/Sustenance.java b/Mage.Sets/src/mage/cards/s/Sustenance.java
index a5ca91bcbd5..61dcbe44997 100644
--- a/Mage.Sets/src/mage/cards/s/Sustenance.java
+++ b/Mage.Sets/src/mage/cards/s/Sustenance.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Sustenance extends CardImpl {
+public final class Sustenance extends CardImpl {
public Sustenance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SuturePriest.java b/Mage.Sets/src/mage/cards/s/SuturePriest.java
index 58947b1a424..0cba190715a 100644
--- a/Mage.Sets/src/mage/cards/s/SuturePriest.java
+++ b/Mage.Sets/src/mage/cards/s/SuturePriest.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class SuturePriest extends CardImpl {
+public final class SuturePriest extends CardImpl {
public SuturePriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SutureSpirit.java b/Mage.Sets/src/mage/cards/s/SutureSpirit.java
index 25a1d84a935..f8a2ba74ea9 100644
--- a/Mage.Sets/src/mage/cards/s/SutureSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/SutureSpirit.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class SutureSpirit extends CardImpl {
+public final class SutureSpirit extends CardImpl {
public SutureSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SuturedGhoul.java b/Mage.Sets/src/mage/cards/s/SuturedGhoul.java
index 00b76dbe102..db712c017b5 100644
--- a/Mage.Sets/src/mage/cards/s/SuturedGhoul.java
+++ b/Mage.Sets/src/mage/cards/s/SuturedGhoul.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author nantuko
*/
-public class SuturedGhoul extends CardImpl {
+public final class SuturedGhoul extends CardImpl {
private static final String staticText = "exile any number of creature cards from your graveyard";
private static final String staticText2 = "Sutured Ghoul's power is equal to the total power of the exiled cards and its toughness is equal to their total toughness";
diff --git a/Mage.Sets/src/mage/cards/s/SvogthosTheRestlessTomb.java b/Mage.Sets/src/mage/cards/s/SvogthosTheRestlessTomb.java
index d1f1693b5f0..58e99ff30c8 100644
--- a/Mage.Sets/src/mage/cards/s/SvogthosTheRestlessTomb.java
+++ b/Mage.Sets/src/mage/cards/s/SvogthosTheRestlessTomb.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.Token;
*
* @author anonymous
*/
-public class SvogthosTheRestlessTomb extends CardImpl {
+public final class SvogthosTheRestlessTomb extends CardImpl {
public SvogthosTheRestlessTomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SvyelunitePriest.java b/Mage.Sets/src/mage/cards/s/SvyelunitePriest.java
index cdc45ef239a..1080101a099 100644
--- a/Mage.Sets/src/mage/cards/s/SvyelunitePriest.java
+++ b/Mage.Sets/src/mage/cards/s/SvyelunitePriest.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SvyelunitePriest extends CardImpl {
+public final class SvyelunitePriest extends CardImpl {
public SvyelunitePriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SvyeluniteTemple.java b/Mage.Sets/src/mage/cards/s/SvyeluniteTemple.java
index df12e7935c8..81e63d83004 100644
--- a/Mage.Sets/src/mage/cards/s/SvyeluniteTemple.java
+++ b/Mage.Sets/src/mage/cards/s/SvyeluniteTemple.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Quercitron
*/
-public class SvyeluniteTemple extends CardImpl {
+public final class SvyeluniteTemple extends CardImpl {
public SvyeluniteTemple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SwabGoblin.java b/Mage.Sets/src/mage/cards/s/SwabGoblin.java
index 69705ad8f5f..5eeccf222ea 100644
--- a/Mage.Sets/src/mage/cards/s/SwabGoblin.java
+++ b/Mage.Sets/src/mage/cards/s/SwabGoblin.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class SwabGoblin extends CardImpl {
+public final class SwabGoblin extends CardImpl {
public SwabGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SwaggeringCorsair.java b/Mage.Sets/src/mage/cards/s/SwaggeringCorsair.java
index 8943ed758d2..7cd43e88d53 100644
--- a/Mage.Sets/src/mage/cards/s/SwaggeringCorsair.java
+++ b/Mage.Sets/src/mage/cards/s/SwaggeringCorsair.java
@@ -43,7 +43,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
/**
* @author JayDi85
*/
-public class SwaggeringCorsair extends CardImpl {
+public final class SwaggeringCorsair extends CardImpl {
public SwaggeringCorsair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SwallowingPlague.java b/Mage.Sets/src/mage/cards/s/SwallowingPlague.java
index 2fd92dd81c8..501712035f1 100644
--- a/Mage.Sets/src/mage/cards/s/SwallowingPlague.java
+++ b/Mage.Sets/src/mage/cards/s/SwallowingPlague.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class SwallowingPlague extends CardImpl {
+public final class SwallowingPlague extends CardImpl {
public SwallowingPlague (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SwampMosquito.java b/Mage.Sets/src/mage/cards/s/SwampMosquito.java
index dda38b6d9b7..36bd576fa9f 100644
--- a/Mage.Sets/src/mage/cards/s/SwampMosquito.java
+++ b/Mage.Sets/src/mage/cards/s/SwampMosquito.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class SwampMosquito extends CardImpl {
+public final class SwampMosquito extends CardImpl {
public SwampMosquito(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SwanSong.java b/Mage.Sets/src/mage/cards/s/SwanSong.java
index 801b18412ce..6322f7b301a 100644
--- a/Mage.Sets/src/mage/cards/s/SwanSong.java
+++ b/Mage.Sets/src/mage/cards/s/SwanSong.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class SwanSong extends CardImpl {
+public final class SwanSong extends CardImpl {
private static final FilterSpell filter = new FilterSpell("enchantment, instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/s/SwansOfBrynArgoll.java b/Mage.Sets/src/mage/cards/s/SwansOfBrynArgoll.java
index 2d87dc9523f..35c2ac3e599 100644
--- a/Mage.Sets/src/mage/cards/s/SwansOfBrynArgoll.java
+++ b/Mage.Sets/src/mage/cards/s/SwansOfBrynArgoll.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class SwansOfBrynArgoll extends CardImpl {
+public final class SwansOfBrynArgoll extends CardImpl {
public SwansOfBrynArgoll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W/U}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/s/SwarmIntelligence.java b/Mage.Sets/src/mage/cards/s/SwarmIntelligence.java
index 4c1c1064b62..064a22244e1 100644
--- a/Mage.Sets/src/mage/cards/s/SwarmIntelligence.java
+++ b/Mage.Sets/src/mage/cards/s/SwarmIntelligence.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterInstantOrSorcerySpell;
*
* @author LevelX2
*/
-public class SwarmIntelligence extends CardImpl {
+public final class SwarmIntelligence extends CardImpl {
public SwarmIntelligence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{6}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SwarmOfBloodflies.java b/Mage.Sets/src/mage/cards/s/SwarmOfBloodflies.java
index 7cde5f8eff6..48f2a526073 100644
--- a/Mage.Sets/src/mage/cards/s/SwarmOfBloodflies.java
+++ b/Mage.Sets/src/mage/cards/s/SwarmOfBloodflies.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class SwarmOfBloodflies extends CardImpl {
+public final class SwarmOfBloodflies extends CardImpl {
public SwarmOfBloodflies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SwarmOfRats.java b/Mage.Sets/src/mage/cards/s/SwarmOfRats.java
index 2ca07bf926b..9420f2fa54a 100644
--- a/Mage.Sets/src/mage/cards/s/SwarmOfRats.java
+++ b/Mage.Sets/src/mage/cards/s/SwarmOfRats.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class SwarmOfRats extends CardImpl {
+public final class SwarmOfRats extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Rats you control");
diff --git a/Mage.Sets/src/mage/cards/s/SwarmSurge.java b/Mage.Sets/src/mage/cards/s/SwarmSurge.java
index 59c62f87915..4224fb5608d 100644
--- a/Mage.Sets/src/mage/cards/s/SwarmSurge.java
+++ b/Mage.Sets/src/mage/cards/s/SwarmSurge.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
*
* @author LevelX2
*/
-public class SwarmSurge extends CardImpl {
+public final class SwarmSurge extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("Colorless creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/SwarmTheSkies.java b/Mage.Sets/src/mage/cards/s/SwarmTheSkies.java
index b4c695daf26..41e5cd52a4f 100644
--- a/Mage.Sets/src/mage/cards/s/SwarmTheSkies.java
+++ b/Mage.Sets/src/mage/cards/s/SwarmTheSkies.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.TIEFighterToken;
*
* @author Styxo
*/
-public class SwarmTheSkies extends CardImpl {
+public final class SwarmTheSkies extends CardImpl {
public SwarmTheSkies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SwarmbornGiant.java b/Mage.Sets/src/mage/cards/s/SwarmbornGiant.java
index e5a2333fac3..0d3d026ede0 100644
--- a/Mage.Sets/src/mage/cards/s/SwarmbornGiant.java
+++ b/Mage.Sets/src/mage/cards/s/SwarmbornGiant.java
@@ -53,7 +53,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class SwarmbornGiant extends CardImpl {
+public final class SwarmbornGiant extends CardImpl {
public SwarmbornGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Swarmyard.java b/Mage.Sets/src/mage/cards/s/Swarmyard.java
index aab9d0fa9c5..c0e25bfa2aa 100644
--- a/Mage.Sets/src/mage/cards/s/Swarmyard.java
+++ b/Mage.Sets/src/mage/cards/s/Swarmyard.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Swarmyard extends CardImpl {
+public final class Swarmyard extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Insect, Rat, Spider, or Squirrel");
diff --git a/Mage.Sets/src/mage/cards/s/Swashbuckling.java b/Mage.Sets/src/mage/cards/s/Swashbuckling.java
index 1e35c418f02..94225885d67 100644
--- a/Mage.Sets/src/mage/cards/s/Swashbuckling.java
+++ b/Mage.Sets/src/mage/cards/s/Swashbuckling.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Swashbuckling extends CardImpl {
+public final class Swashbuckling extends CardImpl {
public Swashbuckling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Swat.java b/Mage.Sets/src/mage/cards/s/Swat.java
index 75bae72716e..da9f4258cc6 100644
--- a/Mage.Sets/src/mage/cards/s/Swat.java
+++ b/Mage.Sets/src/mage/cards/s/Swat.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Swat extends CardImpl {
+public final class Swat extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/s/SwayOfIllusion.java b/Mage.Sets/src/mage/cards/s/SwayOfIllusion.java
index cbe12d5ca09..12b5ee2b7ad 100644
--- a/Mage.Sets/src/mage/cards/s/SwayOfIllusion.java
+++ b/Mage.Sets/src/mage/cards/s/SwayOfIllusion.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SwayOfIllusion extends CardImpl {
+public final class SwayOfIllusion extends CardImpl {
public SwayOfIllusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SwayOfTheStars.java b/Mage.Sets/src/mage/cards/s/SwayOfTheStars.java
index 18abf85583f..acaee4568bc 100644
--- a/Mage.Sets/src/mage/cards/s/SwayOfTheStars.java
+++ b/Mage.Sets/src/mage/cards/s/SwayOfTheStars.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SwayOfTheStars extends CardImpl {
+public final class SwayOfTheStars extends CardImpl {
public SwayOfTheStars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{8}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SweatworksBrawler.java b/Mage.Sets/src/mage/cards/s/SweatworksBrawler.java
index 83f9283dbe6..5440d832e66 100644
--- a/Mage.Sets/src/mage/cards/s/SweatworksBrawler.java
+++ b/Mage.Sets/src/mage/cards/s/SweatworksBrawler.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class SweatworksBrawler extends CardImpl {
+public final class SweatworksBrawler extends CardImpl {
public SweatworksBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SweepAway.java b/Mage.Sets/src/mage/cards/s/SweepAway.java
index fe10c978026..fd331ee9a07 100644
--- a/Mage.Sets/src/mage/cards/s/SweepAway.java
+++ b/Mage.Sets/src/mage/cards/s/SweepAway.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SweepAway extends CardImpl {
+public final class SweepAway extends CardImpl {
public SweepAway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SwellOfCourage.java b/Mage.Sets/src/mage/cards/s/SwellOfCourage.java
index c6f84f7ed0a..966fc45ee88 100644
--- a/Mage.Sets/src/mage/cards/s/SwellOfCourage.java
+++ b/Mage.Sets/src/mage/cards/s/SwellOfCourage.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class SwellOfCourage extends CardImpl {
+public final class SwellOfCourage extends CardImpl {
public SwellOfCourage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SwellOfGrowth.java b/Mage.Sets/src/mage/cards/s/SwellOfGrowth.java
index b90a7986a74..d37d089671a 100644
--- a/Mage.Sets/src/mage/cards/s/SwellOfGrowth.java
+++ b/Mage.Sets/src/mage/cards/s/SwellOfGrowth.java
@@ -28,27 +28,28 @@
package mage.cards.s;
import java.util.UUID;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
+import mage.filter.StaticFilters;
import mage.target.common.TargetCreaturePermanent;
/**
*
* @author LevelX2
*/
-public class SwellOfGrowth extends CardImpl {
+public final class SwellOfGrowth extends CardImpl {
public SwellOfGrowth(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
// Target creature gets +2/+2 until end of turn. You may put a land card from your hand onto the battlefield.
this.getSpellAbility().addEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
- this.getSpellAbility().addEffect(new PutLandFromHandOntoBattlefieldEffect());
+ this.getSpellAbility().addEffect(new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A));
}
public SwellOfGrowth(final SwellOfGrowth card) {
diff --git a/Mage.Sets/src/mage/cards/s/Swelter.java b/Mage.Sets/src/mage/cards/s/Swelter.java
index 2d02af3c641..c5d70cb9e5b 100644
--- a/Mage.Sets/src/mage/cards/s/Swelter.java
+++ b/Mage.Sets/src/mage/cards/s/Swelter.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Swelter extends CardImpl {
+public final class Swelter extends CardImpl {
public Swelter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SwelteringSuns.java b/Mage.Sets/src/mage/cards/s/SwelteringSuns.java
index 7994c69531f..c86b82d7a67 100644
--- a/Mage.Sets/src/mage/cards/s/SwelteringSuns.java
+++ b/Mage.Sets/src/mage/cards/s/SwelteringSuns.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Darkside-
*/
-public class SwelteringSuns extends CardImpl {
+public final class SwelteringSuns extends CardImpl {
public SwelteringSuns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Swerve.java b/Mage.Sets/src/mage/cards/s/Swerve.java
index 04ce372bfda..e55a95cd597 100644
--- a/Mage.Sets/src/mage/cards/s/Swerve.java
+++ b/Mage.Sets/src/mage/cards/s/Swerve.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author jeffwadsworth
*/
-public class Swerve extends CardImpl {
+public final class Swerve extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell with a single target");
diff --git a/Mage.Sets/src/mage/cards/s/SwiftJustice.java b/Mage.Sets/src/mage/cards/s/SwiftJustice.java
index 1211b3b493d..0bab01d0519 100644
--- a/Mage.Sets/src/mage/cards/s/SwiftJustice.java
+++ b/Mage.Sets/src/mage/cards/s/SwiftJustice.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SwiftJustice extends CardImpl {
+public final class SwiftJustice extends CardImpl {
public SwiftJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SwiftKick.java b/Mage.Sets/src/mage/cards/s/SwiftKick.java
index f83098c618c..a4af680d86c 100644
--- a/Mage.Sets/src/mage/cards/s/SwiftKick.java
+++ b/Mage.Sets/src/mage/cards/s/SwiftKick.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SwiftKick extends CardImpl {
+public final class SwiftKick extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/s/SwiftManeuver.java b/Mage.Sets/src/mage/cards/s/SwiftManeuver.java
index 817d541195f..1d5c4911167 100644
--- a/Mage.Sets/src/mage/cards/s/SwiftManeuver.java
+++ b/Mage.Sets/src/mage/cards/s/SwiftManeuver.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class SwiftManeuver extends CardImpl {
+public final class SwiftManeuver extends CardImpl {
public SwiftManeuver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SwiftReckoning.java b/Mage.Sets/src/mage/cards/s/SwiftReckoning.java
index 89a669677de..bc1897c3d08 100644
--- a/Mage.Sets/src/mage/cards/s/SwiftReckoning.java
+++ b/Mage.Sets/src/mage/cards/s/SwiftReckoning.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class SwiftReckoning extends CardImpl {
+public final class SwiftReckoning extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
diff --git a/Mage.Sets/src/mage/cards/s/SwiftSpinner.java b/Mage.Sets/src/mage/cards/s/SwiftSpinner.java
index d83348de04a..25e43924619 100644
--- a/Mage.Sets/src/mage/cards/s/SwiftSpinner.java
+++ b/Mage.Sets/src/mage/cards/s/SwiftSpinner.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SwiftSpinner extends CardImpl {
+public final class SwiftSpinner extends CardImpl {
public SwiftSpinner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SwiftWarden.java b/Mage.Sets/src/mage/cards/s/SwiftWarden.java
index e5fd011d8b9..5cd8f4e38d7 100644
--- a/Mage.Sets/src/mage/cards/s/SwiftWarden.java
+++ b/Mage.Sets/src/mage/cards/s/SwiftWarden.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class SwiftWarden extends CardImpl {
+public final class SwiftWarden extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Merfolk you control");
diff --git a/Mage.Sets/src/mage/cards/s/SwiftWarkite.java b/Mage.Sets/src/mage/cards/s/SwiftWarkite.java
index f8cfed71fbb..b02151c7d79 100644
--- a/Mage.Sets/src/mage/cards/s/SwiftWarkite.java
+++ b/Mage.Sets/src/mage/cards/s/SwiftWarkite.java
@@ -64,7 +64,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class SwiftWarkite extends CardImpl {
+public final class SwiftWarkite extends CardImpl {
public SwiftWarkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SwiftfootBoots.java b/Mage.Sets/src/mage/cards/s/SwiftfootBoots.java
index f04bc8d8caf..c4c4491ed66 100644
--- a/Mage.Sets/src/mage/cards/s/SwiftfootBoots.java
+++ b/Mage.Sets/src/mage/cards/s/SwiftfootBoots.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class SwiftfootBoots extends CardImpl {
+public final class SwiftfootBoots extends CardImpl {
public SwiftfootBoots(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/s/SwiftwaterCliffs.java b/Mage.Sets/src/mage/cards/s/SwiftwaterCliffs.java
index 30db3db4ad3..bfff35c856e 100644
--- a/Mage.Sets/src/mage/cards/s/SwiftwaterCliffs.java
+++ b/Mage.Sets/src/mage/cards/s/SwiftwaterCliffs.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class SwiftwaterCliffs extends CardImpl {
+public final class SwiftwaterCliffs extends CardImpl {
public SwiftwaterCliffs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/s/SwirlingSandstorm.java b/Mage.Sets/src/mage/cards/s/SwirlingSandstorm.java
index 049c4ac1b57..23d5f220bd7 100644
--- a/Mage.Sets/src/mage/cards/s/SwirlingSandstorm.java
+++ b/Mage.Sets/src/mage/cards/s/SwirlingSandstorm.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author Quercitron
*/
-public class SwirlingSandstorm extends CardImpl {
+public final class SwirlingSandstorm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/s/SwirlingSpriggan.java b/Mage.Sets/src/mage/cards/s/SwirlingSpriggan.java
index cba68e0aa0f..f3967b32f66 100644
--- a/Mage.Sets/src/mage/cards/s/SwirlingSpriggan.java
+++ b/Mage.Sets/src/mage/cards/s/SwirlingSpriggan.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class SwirlingSpriggan extends CardImpl {
+public final class SwirlingSpriggan extends CardImpl {
public SwirlingSpriggan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/Switcheroo.java b/Mage.Sets/src/mage/cards/s/Switcheroo.java
index bba9d1fd1d1..c8821a88839 100644
--- a/Mage.Sets/src/mage/cards/s/Switcheroo.java
+++ b/Mage.Sets/src/mage/cards/s/Switcheroo.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class Switcheroo extends CardImpl {
+public final class Switcheroo extends CardImpl {
private static final String rule = "Exchange control of two target creatures";
diff --git a/Mage.Sets/src/mage/cards/s/SwoopingTalon.java b/Mage.Sets/src/mage/cards/s/SwoopingTalon.java
index 672aa3a034f..cbacacc5832 100644
--- a/Mage.Sets/src/mage/cards/s/SwoopingTalon.java
+++ b/Mage.Sets/src/mage/cards/s/SwoopingTalon.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class SwoopingTalon extends CardImpl {
+public final class SwoopingTalon extends CardImpl {
public SwoopingTalon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordDancer.java b/Mage.Sets/src/mage/cards/s/SwordDancer.java
index e58938ac095..fe5d9c964db 100644
--- a/Mage.Sets/src/mage/cards/s/SwordDancer.java
+++ b/Mage.Sets/src/mage/cards/s/SwordDancer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author Plopman
*/
-public class SwordDancer extends CardImpl {
+public final class SwordDancer extends CardImpl {
public SwordDancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfBodyAndMind.java b/Mage.Sets/src/mage/cards/s/SwordOfBodyAndMind.java
index 8f9890dc49a..958fb9a9805 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfBodyAndMind.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfBodyAndMind.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class SwordOfBodyAndMind extends CardImpl {
+public final class SwordOfBodyAndMind extends CardImpl {
public SwordOfBodyAndMind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfDungeonsAndDragons.java b/Mage.Sets/src/mage/cards/s/SwordOfDungeonsAndDragons.java
index 191aa8226fb..bbfdaf4aff2 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfDungeonsAndDragons.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfDungeonsAndDragons.java
@@ -63,7 +63,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Saga
*/
-public class SwordOfDungeonsAndDragons extends CardImpl {
+public final class SwordOfDungeonsAndDragons extends CardImpl {
private static final FilterCard filter = new FilterCard("Rogues and from Clerics");
static {filter.add(Predicates.or(
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfFeastAndFamine.java b/Mage.Sets/src/mage/cards/s/SwordOfFeastAndFamine.java
index 76ea4e143b5..5c4d63996cf 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfFeastAndFamine.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfFeastAndFamine.java
@@ -58,7 +58,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Viserion
*/
-public class SwordOfFeastAndFamine extends CardImpl {
+public final class SwordOfFeastAndFamine extends CardImpl {
public SwordOfFeastAndFamine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java b/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java
index d03508ec300..02ee3e41642 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author Loki
*/
-public class SwordOfFireAndIce extends CardImpl {
+public final class SwordOfFireAndIce extends CardImpl {
public SwordOfFireAndIce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfKaldra.java b/Mage.Sets/src/mage/cards/s/SwordOfKaldra.java
index 1560a068d8e..6f7a4f53e1d 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfKaldra.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfKaldra.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SwordOfKaldra extends CardImpl {
+public final class SwordOfKaldra extends CardImpl {
public SwordOfKaldra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfLightAndShadow.java b/Mage.Sets/src/mage/cards/s/SwordOfLightAndShadow.java
index c510846726c..e68d0a95a74 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfLightAndShadow.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfLightAndShadow.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author Loki
*/
-public class SwordOfLightAndShadow extends CardImpl {
+public final class SwordOfLightAndShadow extends CardImpl {
public SwordOfLightAndShadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfTheAges.java b/Mage.Sets/src/mage/cards/s/SwordOfTheAges.java
index 2c6cea0f137..5bd997a7e60 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfTheAges.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfTheAges.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author L_J
*/
-public class SwordOfTheAges extends CardImpl {
+public final class SwordOfTheAges extends CardImpl {
public SwordOfTheAges(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfTheAnimist.java b/Mage.Sets/src/mage/cards/s/SwordOfTheAnimist.java
index 0cdac1dc976..41f3d94d325 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfTheAnimist.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfTheAnimist.java
@@ -50,7 +50,7 @@ import java.util.UUID;
* @author LoneFox
*/
-public class SwordOfTheAnimist extends CardImpl {
+public final class SwordOfTheAnimist extends CardImpl {
public SwordOfTheAnimist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
@@ -60,7 +60,7 @@ public class SwordOfTheAnimist extends CardImpl {
// Equipped creature gets +1/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(1, 1)));
// Whenever equipped creature attacks, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
this.addAbility(new AttacksAttachedTriggeredAbility(new SearchLibraryPutInPlayEffect(target, true), true));
// Equip {2}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfTheChosen.java b/Mage.Sets/src/mage/cards/s/SwordOfTheChosen.java
index 959fc3e4c9b..df459af7f8a 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfTheChosen.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfTheChosen.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class SwordOfTheChosen extends CardImpl {
+public final class SwordOfTheChosen extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature");
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfTheMeek.java b/Mage.Sets/src/mage/cards/s/SwordOfTheMeek.java
index a9b013b348d..d2c5cb8d67e 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfTheMeek.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfTheMeek.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SwordOfTheMeek extends CardImpl {
+public final class SwordOfTheMeek extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a 1/1 creature");
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfTheParuns.java b/Mage.Sets/src/mage/cards/s/SwordOfTheParuns.java
index 273b4deffff..dfe2defa71d 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfTheParuns.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfTheParuns.java
@@ -58,7 +58,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SwordOfTheParuns extends CardImpl {
+public final class SwordOfTheParuns extends CardImpl {
private static final FilterCreaturePermanent filterTapped = new FilterCreaturePermanent();
private static final FilterCreaturePermanent filterUntapped = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfVengeance.java b/Mage.Sets/src/mage/cards/s/SwordOfVengeance.java
index 03d0911e5b8..debb3427fba 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfVengeance.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfVengeance.java
@@ -53,7 +53,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SwordOfVengeance extends CardImpl {
+public final class SwordOfVengeance extends CardImpl {
public SwordOfVengeance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordOfWarAndPeace.java b/Mage.Sets/src/mage/cards/s/SwordOfWarAndPeace.java
index 8d4ae2259e8..4efec4aec5b 100644
--- a/Mage.Sets/src/mage/cards/s/SwordOfWarAndPeace.java
+++ b/Mage.Sets/src/mage/cards/s/SwordOfWarAndPeace.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Loki
*/
-public class SwordOfWarAndPeace extends CardImpl {
+public final class SwordOfWarAndPeace extends CardImpl {
public SwordOfWarAndPeace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordPointDiplomacy.java b/Mage.Sets/src/mage/cards/s/SwordPointDiplomacy.java
index 75d9e447129..2887b9a76b4 100644
--- a/Mage.Sets/src/mage/cards/s/SwordPointDiplomacy.java
+++ b/Mage.Sets/src/mage/cards/s/SwordPointDiplomacy.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class SwordPointDiplomacy extends CardImpl {
+public final class SwordPointDiplomacy extends CardImpl {
public SwordPointDiplomacy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordsToPlowshares.java b/Mage.Sets/src/mage/cards/s/SwordsToPlowshares.java
index 02c5b8e4955..58b3539507d 100644
--- a/Mage.Sets/src/mage/cards/s/SwordsToPlowshares.java
+++ b/Mage.Sets/src/mage/cards/s/SwordsToPlowshares.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jonubuu
*/
-public class SwordsToPlowshares extends CardImpl {
+public final class SwordsToPlowshares extends CardImpl {
public SwordsToPlowshares(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SwordwiseCentaur.java b/Mage.Sets/src/mage/cards/s/SwordwiseCentaur.java
index e65c08a5549..645dd508a65 100644
--- a/Mage.Sets/src/mage/cards/s/SwordwiseCentaur.java
+++ b/Mage.Sets/src/mage/cards/s/SwordwiseCentaur.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SwordwiseCentaur extends CardImpl {
+public final class SwordwiseCentaur extends CardImpl {
public SwordwiseCentaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SwornGuardian.java b/Mage.Sets/src/mage/cards/s/SwornGuardian.java
index 9ff3be0ed26..c1f8b09370d 100644
--- a/Mage.Sets/src/mage/cards/s/SwornGuardian.java
+++ b/Mage.Sets/src/mage/cards/s/SwornGuardian.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class SwornGuardian extends CardImpl {
+public final class SwornGuardian extends CardImpl {
public SwornGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SydriGalvanicGenius.java b/Mage.Sets/src/mage/cards/s/SydriGalvanicGenius.java
index fcd691c172a..e8fb9ec27f4 100644
--- a/Mage.Sets/src/mage/cards/s/SydriGalvanicGenius.java
+++ b/Mage.Sets/src/mage/cards/s/SydriGalvanicGenius.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class SydriGalvanicGenius extends CardImpl {
+public final class SydriGalvanicGenius extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact creature");
private static final FilterArtifactPermanent filterNonCreature = new FilterArtifactPermanent("noncreature artifact");
diff --git a/Mage.Sets/src/mage/cards/s/SyggRiverCutthroat.java b/Mage.Sets/src/mage/cards/s/SyggRiverCutthroat.java
index 5f3c233969c..b7354d8da9c 100644
--- a/Mage.Sets/src/mage/cards/s/SyggRiverCutthroat.java
+++ b/Mage.Sets/src/mage/cards/s/SyggRiverCutthroat.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class SyggRiverCutthroat extends CardImpl {
+public final class SyggRiverCutthroat extends CardImpl {
public SyggRiverCutthroat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U/B}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java b/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java
index 0ab153e7d14..34ce715786d 100644
--- a/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java
+++ b/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class SyggRiverGuide extends CardImpl {
+public final class SyggRiverGuide extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Merfolk you control");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanAdvocate.java b/Mage.Sets/src/mage/cards/s/SylvanAdvocate.java
index a28e70c996c..9ba7e5a76a2 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanAdvocate.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanAdvocate.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
/**
* @author fireshoes
*/
-public class SylvanAdvocate extends CardImpl {
+public final class SylvanAdvocate extends CardImpl {
private static final String rule1 = "As long as you control six or more lands, {this}";
private static final String rule2 = "and land creatures you control get +2/+2.";
diff --git a/Mage.Sets/src/mage/cards/s/SylvanAwakening.java b/Mage.Sets/src/mage/cards/s/SylvanAwakening.java
index 8fd3fc6f81d..d56c5a4afc0 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanAwakening.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanAwakening.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.custom.CreatureToken;
*
* @author TheElk801
*/
-public class SylvanAwakening extends CardImpl {
+public final class SylvanAwakening extends CardImpl {
public SylvanAwakening(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanBasilisk.java b/Mage.Sets/src/mage/cards/s/SylvanBasilisk.java
index e4086db89ea..522c7f1b4c9 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanBasilisk.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanBasilisk.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author anonymous
*/
-public class SylvanBasilisk extends CardImpl {
+public final class SylvanBasilisk extends CardImpl {
public SylvanBasilisk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanBounty.java b/Mage.Sets/src/mage/cards/s/SylvanBounty.java
index 5aa676d621e..af9c18b7464 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanBounty.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanBounty.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class SylvanBounty extends CardImpl {
+public final class SylvanBounty extends CardImpl {
public SylvanBounty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanCaryatid.java b/Mage.Sets/src/mage/cards/s/SylvanCaryatid.java
index f5fb98a6681..28567e2de2b 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanCaryatid.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanCaryatid.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SylvanCaryatid extends CardImpl {
+public final class SylvanCaryatid extends CardImpl {
public SylvanCaryatid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanEchoes.java b/Mage.Sets/src/mage/cards/s/SylvanEchoes.java
index 1f7e4922b86..91cb9f51483 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanEchoes.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanEchoes.java
@@ -41,7 +41,7 @@ import mage.game.events.GameEvent;
*
* @author Styxo
*/
-public class SylvanEchoes extends CardImpl {
+public final class SylvanEchoes extends CardImpl {
public SylvanEchoes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanLibrary.java b/Mage.Sets/src/mage/cards/s/SylvanLibrary.java
index 27106b90094..14cb279f3aa 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanLibrary.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanLibrary.java
@@ -57,7 +57,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class SylvanLibrary extends CardImpl {
+public final class SylvanLibrary extends CardImpl {
public SylvanLibrary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanMessenger.java b/Mage.Sets/src/mage/cards/s/SylvanMessenger.java
index 16526cf5ff4..8a35bbe6f1b 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanMessenger.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanMessenger.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class SylvanMessenger extends CardImpl {
+public final class SylvanMessenger extends CardImpl {
private static final FilterCard filter = new FilterCard("Elf cards");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanMight.java b/Mage.Sets/src/mage/cards/s/SylvanMight.java
index 2079480e20f..d4284237254 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanMight.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanMight.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class SylvanMight extends CardImpl {
+public final class SylvanMight extends CardImpl {
public SylvanMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanOffering.java b/Mage.Sets/src/mage/cards/s/SylvanOffering.java
index 96c05713038..399113192e1 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanOffering.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanOffering.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class SylvanOffering extends CardImpl {
+public final class SylvanOffering extends CardImpl {
public SylvanOffering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanParadise.java b/Mage.Sets/src/mage/cards/s/SylvanParadise.java
index 6dbbd24810a..f4469ba42b4 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanParadise.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanParadise.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author maxlebedev
*/
-public class SylvanParadise extends CardImpl {
+public final class SylvanParadise extends CardImpl {
public SylvanParadise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanPrimordial.java b/Mage.Sets/src/mage/cards/s/SylvanPrimordial.java
index 70cf7fa6a28..68ce9d100fa 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanPrimordial.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanPrimordial.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class SylvanPrimordial extends CardImpl {
+public final class SylvanPrimordial extends CardImpl {
public SylvanPrimordial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanRanger.java b/Mage.Sets/src/mage/cards/s/SylvanRanger.java
index 115a918c223..7805ccf50d0 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanRanger.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanRanger.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author BetaSteward_at_googlemail.com
*/
-public class SylvanRanger extends CardImpl {
+public final class SylvanRanger extends CardImpl {
public SylvanRanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
@@ -55,7 +55,7 @@ public class SylvanRanger extends CardImpl {
this.toughness = new MageInt(1);
// When Sylvan Ranger enters the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true));
}
diff --git a/Mage.Sets/src/mage/cards/s/SylvanReclamation.java b/Mage.Sets/src/mage/cards/s/SylvanReclamation.java
index b7d456cf798..feba857fa53 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanReclamation.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanReclamation.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class SylvanReclamation extends CardImpl {
+public final class SylvanReclamation extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifacts and/or enchantments");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanSafekeeper.java b/Mage.Sets/src/mage/cards/s/SylvanSafekeeper.java
index bdf6293ea68..de9edda5a09 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanSafekeeper.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanSafekeeper.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class SylvanSafekeeper extends CardImpl {
+public final class SylvanSafekeeper extends CardImpl {
public SylvanSafekeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanScrying.java b/Mage.Sets/src/mage/cards/s/SylvanScrying.java
index 44c00f80330..5820d0c8d3d 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanScrying.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanScrying.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class SylvanScrying extends CardImpl {
+public final class SylvanScrying extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("land card");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanTutor.java b/Mage.Sets/src/mage/cards/s/SylvanTutor.java
index 4d3cc85e63c..c27004058cb 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanTutor.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanTutor.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class SylvanTutor extends CardImpl {
+public final class SylvanTutor extends CardImpl {
public SylvanTutor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvanYeti.java b/Mage.Sets/src/mage/cards/s/SylvanYeti.java
index ff3d1b518a6..efbef451214 100644
--- a/Mage.Sets/src/mage/cards/s/SylvanYeti.java
+++ b/Mage.Sets/src/mage/cards/s/SylvanYeti.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class SylvanYeti extends CardImpl {
+public final class SylvanYeti extends CardImpl {
public SylvanYeti(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylviaBrightspear.java b/Mage.Sets/src/mage/cards/s/SylviaBrightspear.java
new file mode 100644
index 00000000000..dfbf899a33d
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/s/SylviaBrightspear.java
@@ -0,0 +1,80 @@
+/*
+ * 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.common.SimpleStaticAbility;
+import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.abilities.keyword.DoubleStrikeAbility;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Zone;
+import mage.filter.common.FilterTeamPermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class SylviaBrightspear extends CardImpl {
+
+ private static final FilterTeamPermanent filter = new FilterTeamPermanent(SubType.DRAGON, "Dragons your team controls");
+
+ public SylviaBrightspear(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.HUMAN);
+ this.subtype.add(SubType.KNIGHT);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Partner with Khorvath Brightflame (When this creature enters the battlefield, target player may put Khorvath into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Khorvath Brightflame", true));
+
+ // Double strike
+ this.addAbility(DoubleStrikeAbility.getInstance());
+
+ // Dragons your team controls have double strike.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(DoubleStrikeAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
+ }
+
+ public SylviaBrightspear(final SylviaBrightspear card) {
+ super(card);
+ }
+
+ @Override
+ public SylviaBrightspear copy() {
+ return new SylviaBrightspear(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/s/SylvokExplorer.java b/Mage.Sets/src/mage/cards/s/SylvokExplorer.java
index e0f217c489e..03d44565325 100644
--- a/Mage.Sets/src/mage/cards/s/SylvokExplorer.java
+++ b/Mage.Sets/src/mage/cards/s/SylvokExplorer.java
@@ -40,7 +40,7 @@ import mage.constants.TargetController;
*
* @author Plopman
*/
-public class SylvokExplorer extends CardImpl {
+public final class SylvokExplorer extends CardImpl {
public SylvokExplorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvokLifestaff.java b/Mage.Sets/src/mage/cards/s/SylvokLifestaff.java
index aa397775f9b..ef12cacdbee 100644
--- a/Mage.Sets/src/mage/cards/s/SylvokLifestaff.java
+++ b/Mage.Sets/src/mage/cards/s/SylvokLifestaff.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author North, Loki
*/
-public class SylvokLifestaff extends CardImpl {
+public final class SylvokLifestaff extends CardImpl {
public SylvokLifestaff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/s/SylvokReplica.java b/Mage.Sets/src/mage/cards/s/SylvokReplica.java
index 52b0661e1d2..4a16d11d452 100644
--- a/Mage.Sets/src/mage/cards/s/SylvokReplica.java
+++ b/Mage.Sets/src/mage/cards/s/SylvokReplica.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class SylvokReplica extends CardImpl {
+public final class SylvokReplica extends CardImpl {
public SylvokReplica (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/s/Symbiosis.java b/Mage.Sets/src/mage/cards/s/Symbiosis.java
index 2d74af62f0b..3c9dcf486bc 100644
--- a/Mage.Sets/src/mage/cards/s/Symbiosis.java
+++ b/Mage.Sets/src/mage/cards/s/Symbiosis.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class Symbiosis extends CardImpl {
+public final class Symbiosis extends CardImpl {
public Symbiosis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SymbioticBeast.java b/Mage.Sets/src/mage/cards/s/SymbioticBeast.java
index 3af2ddabbee..da67a12350a 100644
--- a/Mage.Sets/src/mage/cards/s/SymbioticBeast.java
+++ b/Mage.Sets/src/mage/cards/s/SymbioticBeast.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.InsectToken;
*
* @author Temba21
*/
-public class SymbioticBeast extends CardImpl {
+public final class SymbioticBeast extends CardImpl {
public SymbioticBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SymbioticDeployment.java b/Mage.Sets/src/mage/cards/s/SymbioticDeployment.java
index a4db39bfca8..3dcf6c4336f 100644
--- a/Mage.Sets/src/mage/cards/s/SymbioticDeployment.java
+++ b/Mage.Sets/src/mage/cards/s/SymbioticDeployment.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class SymbioticDeployment extends CardImpl {
+public final class SymbioticDeployment extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/s/SymbioticElf.java b/Mage.Sets/src/mage/cards/s/SymbioticElf.java
index e229ea7b172..815bdbb74cc 100644
--- a/Mage.Sets/src/mage/cards/s/SymbioticElf.java
+++ b/Mage.Sets/src/mage/cards/s/SymbioticElf.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.InsectToken;
*
* @author LoneFox
*/
-public class SymbioticElf extends CardImpl {
+public final class SymbioticElf extends CardImpl {
public SymbioticElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SymbioticWurm.java b/Mage.Sets/src/mage/cards/s/SymbioticWurm.java
index dc060c6c5ea..119554c0958 100644
--- a/Mage.Sets/src/mage/cards/s/SymbioticWurm.java
+++ b/Mage.Sets/src/mage/cards/s/SymbioticWurm.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.InsectToken;
*
* @author LevelX2
*/
-public class SymbioticWurm extends CardImpl {
+public final class SymbioticWurm extends CardImpl {
public SymbioticWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SymbolOfUnsummoning.java b/Mage.Sets/src/mage/cards/s/SymbolOfUnsummoning.java
index 0b0a3b1d800..c9e75cc5f5a 100644
--- a/Mage.Sets/src/mage/cards/s/SymbolOfUnsummoning.java
+++ b/Mage.Sets/src/mage/cards/s/SymbolOfUnsummoning.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nigelzor
*/
-public class SymbolOfUnsummoning extends CardImpl {
+public final class SymbolOfUnsummoning extends CardImpl {
public SymbolOfUnsummoning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SynapseSliver.java b/Mage.Sets/src/mage/cards/s/SynapseSliver.java
index 23e83cd4604..efa13bbf9ce 100644
--- a/Mage.Sets/src/mage/cards/s/SynapseSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SynapseSliver.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author cbt33
*/
-public class SynapseSliver extends CardImpl {
+public final class SynapseSliver extends CardImpl {
public SynapseSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SynchronizedStrike.java b/Mage.Sets/src/mage/cards/s/SynchronizedStrike.java
index ff76739c91d..5bf210e796c 100644
--- a/Mage.Sets/src/mage/cards/s/SynchronizedStrike.java
+++ b/Mage.Sets/src/mage/cards/s/SynchronizedStrike.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author stravant
*/
-public class SynchronizedStrike extends CardImpl {
+public final class SynchronizedStrike extends CardImpl {
public SynchronizedStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SynchronousSliver.java b/Mage.Sets/src/mage/cards/s/SynchronousSliver.java
index 4cdeb4e1515..6aa30bdecaf 100644
--- a/Mage.Sets/src/mage/cards/s/SynchronousSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SynchronousSliver.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author anonymous
*/
-public class SynchronousSliver extends CardImpl {
+public final class SynchronousSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/s/Syncopate.java b/Mage.Sets/src/mage/cards/s/Syncopate.java
index 67d85e7c501..8837365d203 100644
--- a/Mage.Sets/src/mage/cards/s/Syncopate.java
+++ b/Mage.Sets/src/mage/cards/s/Syncopate.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
/**
* @author LevelX2
*/
-public class Syncopate extends CardImpl {
+public final class Syncopate extends CardImpl {
public Syncopate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SyndicOfTithes.java b/Mage.Sets/src/mage/cards/s/SyndicOfTithes.java
index d50e955942e..8c14b244faf 100644
--- a/Mage.Sets/src/mage/cards/s/SyndicOfTithes.java
+++ b/Mage.Sets/src/mage/cards/s/SyndicOfTithes.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SyndicOfTithes extends CardImpl {
+public final class SyndicOfTithes extends CardImpl {
public SyndicOfTithes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/s/SyndicateEnforcer.java b/Mage.Sets/src/mage/cards/s/SyndicateEnforcer.java
index f00c36cd688..4f6ac20bbf4 100644
--- a/Mage.Sets/src/mage/cards/s/SyndicateEnforcer.java
+++ b/Mage.Sets/src/mage/cards/s/SyndicateEnforcer.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class SyndicateEnforcer extends CardImpl {
+public final class SyndicateEnforcer extends CardImpl {
public SyndicateEnforcer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SyndicateEnforcerSWS.java b/Mage.Sets/src/mage/cards/s/SyndicateEnforcerSWS.java
index 2f5ef91347a..0fbd3183897 100644
--- a/Mage.Sets/src/mage/cards/s/SyndicateEnforcerSWS.java
+++ b/Mage.Sets/src/mage/cards/s/SyndicateEnforcerSWS.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class SyndicateEnforcerSWS extends CardImpl {
+public final class SyndicateEnforcerSWS extends CardImpl {
public SyndicateEnforcerSWS(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SyndicateTrafficker.java b/Mage.Sets/src/mage/cards/s/SyndicateTrafficker.java
index 092a53ed779..8677da0dd57 100644
--- a/Mage.Sets/src/mage/cards/s/SyndicateTrafficker.java
+++ b/Mage.Sets/src/mage/cards/s/SyndicateTrafficker.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class SyndicateTrafficker extends CardImpl {
+public final class SyndicateTrafficker extends CardImpl {
public SyndicateTrafficker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SynodArtificer.java b/Mage.Sets/src/mage/cards/s/SynodArtificer.java
index 937336f0a9a..4a2920d1ce6 100644
--- a/Mage.Sets/src/mage/cards/s/SynodArtificer.java
+++ b/Mage.Sets/src/mage/cards/s/SynodArtificer.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class SynodArtificer extends CardImpl {
+public final class SynodArtificer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature artifacts");
diff --git a/Mage.Sets/src/mage/cards/s/SynodCenturion.java b/Mage.Sets/src/mage/cards/s/SynodCenturion.java
index 95fe7c4ce99..c417cfcb1c2 100644
--- a/Mage.Sets/src/mage/cards/s/SynodCenturion.java
+++ b/Mage.Sets/src/mage/cards/s/SynodCenturion.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class SynodCenturion extends CardImpl {
+public final class SynodCenturion extends CardImpl {
public SynodCenturion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/s/SynodSanctum.java b/Mage.Sets/src/mage/cards/s/SynodSanctum.java
index 765a6348be9..96d0b7bd0fb 100644
--- a/Mage.Sets/src/mage/cards/s/SynodSanctum.java
+++ b/Mage.Sets/src/mage/cards/s/SynodSanctum.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author spjspj
*/
-public class SynodSanctum extends CardImpl {
+public final class SynodSanctum extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent you control");
diff --git a/Mage.Sets/src/mage/cards/s/SyntheticDestiny.java b/Mage.Sets/src/mage/cards/s/SyntheticDestiny.java
index aec13c2ac17..1e04dd93274 100644
--- a/Mage.Sets/src/mage/cards/s/SyntheticDestiny.java
+++ b/Mage.Sets/src/mage/cards/s/SyntheticDestiny.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class SyntheticDestiny extends CardImpl {
+public final class SyntheticDestiny extends CardImpl {
public SyntheticDestiny(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SyphonFlesh.java b/Mage.Sets/src/mage/cards/s/SyphonFlesh.java
index 9d4d0f65dbb..359b2135753 100644
--- a/Mage.Sets/src/mage/cards/s/SyphonFlesh.java
+++ b/Mage.Sets/src/mage/cards/s/SyphonFlesh.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class SyphonFlesh extends CardImpl {
+public final class SyphonFlesh extends CardImpl {
public SyphonFlesh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SyphonLife.java b/Mage.Sets/src/mage/cards/s/SyphonLife.java
index f601aa35638..784be2b252c 100644
--- a/Mage.Sets/src/mage/cards/s/SyphonLife.java
+++ b/Mage.Sets/src/mage/cards/s/SyphonLife.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class SyphonLife extends CardImpl {
+public final class SyphonLife extends CardImpl {
public SyphonLife(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SyphonMind.java b/Mage.Sets/src/mage/cards/s/SyphonMind.java
index 6c4622419f9..dd2e551c820 100644
--- a/Mage.Sets/src/mage/cards/s/SyphonMind.java
+++ b/Mage.Sets/src/mage/cards/s/SyphonMind.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class SyphonMind extends CardImpl {
+public final class SyphonMind extends CardImpl {
public SyphonMind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SyphonSliver.java b/Mage.Sets/src/mage/cards/s/SyphonSliver.java
index 4d30235cee3..165c6724f81 100644
--- a/Mage.Sets/src/mage/cards/s/SyphonSliver.java
+++ b/Mage.Sets/src/mage/cards/s/SyphonSliver.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class SyphonSliver extends CardImpl {
+public final class SyphonSliver extends CardImpl {
public SyphonSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SyphonSoul.java b/Mage.Sets/src/mage/cards/s/SyphonSoul.java
index 348f75f75d7..b45e7dfbe78 100644
--- a/Mage.Sets/src/mage/cards/s/SyphonSoul.java
+++ b/Mage.Sets/src/mage/cards/s/SyphonSoul.java
@@ -40,7 +40,7 @@ import mage.game.Game;
*
* @author Loki
*/
-public class SyphonSoul extends CardImpl {
+public final class SyphonSoul extends CardImpl {
public SyphonSoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SzadekLordOfSecrets.java b/Mage.Sets/src/mage/cards/s/SzadekLordOfSecrets.java
index 00675ad9998..0f7a2b20109 100644
--- a/Mage.Sets/src/mage/cards/s/SzadekLordOfSecrets.java
+++ b/Mage.Sets/src/mage/cards/s/SzadekLordOfSecrets.java
@@ -48,7 +48,7 @@ import mage.players.Player;
* @author jeffwadsworth
*
*/
-public class SzadekLordOfSecrets extends CardImpl {
+public final class SzadekLordOfSecrets extends CardImpl {
public SzadekLordOfSecrets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TIEBomber.java b/Mage.Sets/src/mage/cards/t/TIEBomber.java
index a25c9e9eebc..4f039294ae0 100644
--- a/Mage.Sets/src/mage/cards/t/TIEBomber.java
+++ b/Mage.Sets/src/mage/cards/t/TIEBomber.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class TIEBomber extends CardImpl {
+public final class TIEBomber extends CardImpl {
public TIEBomber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TIEInterceptor.java b/Mage.Sets/src/mage/cards/t/TIEInterceptor.java
index 0348a0ac05d..6f9e0150356 100644
--- a/Mage.Sets/src/mage/cards/t/TIEInterceptor.java
+++ b/Mage.Sets/src/mage/cards/t/TIEInterceptor.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class TIEInterceptor extends CardImpl {
+public final class TIEInterceptor extends CardImpl {
public TIEInterceptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TabletOfEpityr.java b/Mage.Sets/src/mage/cards/t/TabletOfEpityr.java
index d8af1d64dce..254402fcd39 100644
--- a/Mage.Sets/src/mage/cards/t/TabletOfEpityr.java
+++ b/Mage.Sets/src/mage/cards/t/TabletOfEpityr.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author MarcoMarin
*/
-public class TabletOfEpityr extends CardImpl {
+public final class TabletOfEpityr extends CardImpl {
public TabletOfEpityr(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/t/TabletOfTheGuilds.java b/Mage.Sets/src/mage/cards/t/TabletOfTheGuilds.java
index 81bb6e90e5b..052bbce26fe 100644
--- a/Mage.Sets/src/mage/cards/t/TabletOfTheGuilds.java
+++ b/Mage.Sets/src/mage/cards/t/TabletOfTheGuilds.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TabletOfTheGuilds extends CardImpl {
+public final class TabletOfTheGuilds extends CardImpl {
public TabletOfTheGuilds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TahCropElite.java b/Mage.Sets/src/mage/cards/t/TahCropElite.java
index 95cdff4dd57..875e01b90e4 100644
--- a/Mage.Sets/src/mage/cards/t/TahCropElite.java
+++ b/Mage.Sets/src/mage/cards/t/TahCropElite.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class TahCropElite extends CardImpl {
+public final class TahCropElite extends CardImpl {
public TahCropElite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TahCropSkirmisher.java b/Mage.Sets/src/mage/cards/t/TahCropSkirmisher.java
index 87e711c0c13..79c44151997 100644
--- a/Mage.Sets/src/mage/cards/t/TahCropSkirmisher.java
+++ b/Mage.Sets/src/mage/cards/t/TahCropSkirmisher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class TahCropSkirmisher extends CardImpl {
+public final class TahCropSkirmisher extends CardImpl {
public TahCropSkirmisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TahngarthTalruumHero.java b/Mage.Sets/src/mage/cards/t/TahngarthTalruumHero.java
index f397bbbfb82..546507370b6 100644
--- a/Mage.Sets/src/mage/cards/t/TahngarthTalruumHero.java
+++ b/Mage.Sets/src/mage/cards/t/TahngarthTalruumHero.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class TahngarthTalruumHero extends CardImpl {
+public final class TahngarthTalruumHero extends CardImpl {
public TahngarthTalruumHero(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TahngarthsRage.java b/Mage.Sets/src/mage/cards/t/TahngarthsRage.java
index 793446257c5..01315334805 100644
--- a/Mage.Sets/src/mage/cards/t/TahngarthsRage.java
+++ b/Mage.Sets/src/mage/cards/t/TahngarthsRage.java
@@ -50,7 +50,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author TheElk801
*/
-public class TahngarthsRage extends CardImpl {
+public final class TahngarthsRage extends CardImpl {
public TahngarthsRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Taiga.java b/Mage.Sets/src/mage/cards/t/Taiga.java
index 86673016bae..7963fd70e92 100644
--- a/Mage.Sets/src/mage/cards/t/Taiga.java
+++ b/Mage.Sets/src/mage/cards/t/Taiga.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class Taiga extends CardImpl {
+public final class Taiga extends CardImpl {
public Taiga(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TaigamOjutaiMaster.java b/Mage.Sets/src/mage/cards/t/TaigamOjutaiMaster.java
index f502fe550ea..6f7de688bd4 100644
--- a/Mage.Sets/src/mage/cards/t/TaigamOjutaiMaster.java
+++ b/Mage.Sets/src/mage/cards/t/TaigamOjutaiMaster.java
@@ -59,7 +59,7 @@ import java.util.UUID;
*
* @author spjspj
*/
-public class TaigamOjutaiMaster extends CardImpl {
+public final class TaigamOjutaiMaster extends CardImpl {
private static final String effectText = "Whenever you cast an instant or sorcery spell from your hand, if {this} attacked this turn, that spell gains rebound.";
private static final FilterSpell filter = new FilterSpell("Instant, Sorcery, and Dragon spells");
diff --git a/Mage.Sets/src/mage/cards/t/TaigamSidisisHand.java b/Mage.Sets/src/mage/cards/t/TaigamSidisisHand.java
index 6dda3167c4c..f5ce8418892 100644
--- a/Mage.Sets/src/mage/cards/t/TaigamSidisisHand.java
+++ b/Mage.Sets/src/mage/cards/t/TaigamSidisisHand.java
@@ -65,7 +65,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class TaigamSidisisHand extends CardImpl {
+public final class TaigamSidisisHand extends CardImpl {
public TaigamSidisisHand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TaigamsScheming.java b/Mage.Sets/src/mage/cards/t/TaigamsScheming.java
index e5430a53a16..3c01aba9a9b 100644
--- a/Mage.Sets/src/mage/cards/t/TaigamsScheming.java
+++ b/Mage.Sets/src/mage/cards/t/TaigamsScheming.java
@@ -40,7 +40,7 @@ import mage.filter.FilterCard;
*
* @author LevelX2
*/
-public class TaigamsScheming extends CardImpl {
+public final class TaigamsScheming extends CardImpl {
public TaigamsScheming(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TaigamsStrike.java b/Mage.Sets/src/mage/cards/t/TaigamsStrike.java
index 1d19f58aca4..f134915f852 100644
--- a/Mage.Sets/src/mage/cards/t/TaigamsStrike.java
+++ b/Mage.Sets/src/mage/cards/t/TaigamsStrike.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TaigamsStrike extends CardImpl {
+public final class TaigamsStrike extends CardImpl {
public TaigamsStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TailSlash.java b/Mage.Sets/src/mage/cards/t/TailSlash.java
index ecc1f47bf7d..53a37a1ea35 100644
--- a/Mage.Sets/src/mage/cards/t/TailSlash.java
+++ b/Mage.Sets/src/mage/cards/t/TailSlash.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TailSlash extends CardImpl {
+public final class TailSlash extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/t/TaintedAether.java b/Mage.Sets/src/mage/cards/t/TaintedAether.java
index 731efc689ae..393b0c10115 100644
--- a/Mage.Sets/src/mage/cards/t/TaintedAether.java
+++ b/Mage.Sets/src/mage/cards/t/TaintedAether.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
* @author LoneFox
*/
-public class TaintedAether extends CardImpl {
+public final class TaintedAether extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a creature or a land");
diff --git a/Mage.Sets/src/mage/cards/t/TaintedField.java b/Mage.Sets/src/mage/cards/t/TaintedField.java
index bff0990d448..4e515de1aaf 100644
--- a/Mage.Sets/src/mage/cards/t/TaintedField.java
+++ b/Mage.Sets/src/mage/cards/t/TaintedField.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class TaintedField extends CardImpl {
+public final class TaintedField extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("you control a swamp");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TaintedIsle.java b/Mage.Sets/src/mage/cards/t/TaintedIsle.java
index 61d0aaaae9e..1a7e8cebde0 100644
--- a/Mage.Sets/src/mage/cards/t/TaintedIsle.java
+++ b/Mage.Sets/src/mage/cards/t/TaintedIsle.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class TaintedIsle extends CardImpl {
+public final class TaintedIsle extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("you control a swamp");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TaintedPact.java b/Mage.Sets/src/mage/cards/t/TaintedPact.java
index cf7b7b3e649..e9f805aaaa5 100644
--- a/Mage.Sets/src/mage/cards/t/TaintedPact.java
+++ b/Mage.Sets/src/mage/cards/t/TaintedPact.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author cbt33, Ad Nauseum (North), Izzet Staticaster (LevelX2), Bane Alley Broker (LevelX2)
*/
-public class TaintedPact extends CardImpl {
+public final class TaintedPact extends CardImpl {
public TaintedPact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TaintedPeak.java b/Mage.Sets/src/mage/cards/t/TaintedPeak.java
index 75827528a9f..52eb1750575 100644
--- a/Mage.Sets/src/mage/cards/t/TaintedPeak.java
+++ b/Mage.Sets/src/mage/cards/t/TaintedPeak.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class TaintedPeak extends CardImpl {
+public final class TaintedPeak extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("you control a swamp");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TaintedRemedy.java b/Mage.Sets/src/mage/cards/t/TaintedRemedy.java
index f85a28590cf..de8d95046c5 100644
--- a/Mage.Sets/src/mage/cards/t/TaintedRemedy.java
+++ b/Mage.Sets/src/mage/cards/t/TaintedRemedy.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TaintedRemedy extends CardImpl {
+public final class TaintedRemedy extends CardImpl {
public TaintedRemedy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TaintedSigil.java b/Mage.Sets/src/mage/cards/t/TaintedSigil.java
index 986f43bbf03..68b7e006503 100644
--- a/Mage.Sets/src/mage/cards/t/TaintedSigil.java
+++ b/Mage.Sets/src/mage/cards/t/TaintedSigil.java
@@ -46,7 +46,7 @@ import mage.watchers.common.PlayerLostLifeWatcher;
*
* @author jeffwadsworth
*/
-public class TaintedSigil extends CardImpl {
+public final class TaintedSigil extends CardImpl {
String rule = "You gain life equal to the total life lost by all players this turn";
diff --git a/Mage.Sets/src/mage/cards/t/TaintedStrike.java b/Mage.Sets/src/mage/cards/t/TaintedStrike.java
index 3960e953341..c14a2f4653e 100644
--- a/Mage.Sets/src/mage/cards/t/TaintedStrike.java
+++ b/Mage.Sets/src/mage/cards/t/TaintedStrike.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class TaintedStrike extends CardImpl {
+public final class TaintedStrike extends CardImpl {
public TaintedStrike (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TaintedWell.java b/Mage.Sets/src/mage/cards/t/TaintedWell.java
index a70505215ce..d1cf7a3b605 100644
--- a/Mage.Sets/src/mage/cards/t/TaintedWell.java
+++ b/Mage.Sets/src/mage/cards/t/TaintedWell.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class TaintedWell extends CardImpl {
+public final class TaintedWell extends CardImpl {
public TaintedWell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TaintedWood.java b/Mage.Sets/src/mage/cards/t/TaintedWood.java
index a95a9f86b46..6d791496cc7 100644
--- a/Mage.Sets/src/mage/cards/t/TaintedWood.java
+++ b/Mage.Sets/src/mage/cards/t/TaintedWood.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class TaintedWood extends CardImpl {
+public final class TaintedWood extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("you control a swamp");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TajNarSwordsmith.java b/Mage.Sets/src/mage/cards/t/TajNarSwordsmith.java
index 1b711f43841..e02b3e7c769 100644
--- a/Mage.Sets/src/mage/cards/t/TajNarSwordsmith.java
+++ b/Mage.Sets/src/mage/cards/t/TajNarSwordsmith.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class TajNarSwordsmith extends CardImpl {
+public final class TajNarSwordsmith extends CardImpl {
public TajNarSwordsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TajicBladeOfTheLegion.java b/Mage.Sets/src/mage/cards/t/TajicBladeOfTheLegion.java
index b6fceb77f61..23545ecdab0 100644
--- a/Mage.Sets/src/mage/cards/t/TajicBladeOfTheLegion.java
+++ b/Mage.Sets/src/mage/cards/t/TajicBladeOfTheLegion.java
@@ -43,7 +43,7 @@ import mage.constants.SuperType;
*
* @author jeffwadsworth
*/
-public class TajicBladeOfTheLegion extends CardImpl {
+public final class TajicBladeOfTheLegion extends CardImpl {
public TajicBladeOfTheLegion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TajuruArcher.java b/Mage.Sets/src/mage/cards/t/TajuruArcher.java
index be4f7ed9f5e..4136fe9c285 100644
--- a/Mage.Sets/src/mage/cards/t/TajuruArcher.java
+++ b/Mage.Sets/src/mage/cards/t/TajuruArcher.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TajuruArcher extends CardImpl {
+public final class TajuruArcher extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Allies you control");
private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/t/TajuruBeastmaster.java b/Mage.Sets/src/mage/cards/t/TajuruBeastmaster.java
index 0dba9713f72..cf74190c30e 100644
--- a/Mage.Sets/src/mage/cards/t/TajuruBeastmaster.java
+++ b/Mage.Sets/src/mage/cards/t/TajuruBeastmaster.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class TajuruBeastmaster extends CardImpl {
+public final class TajuruBeastmaster extends CardImpl {
public TajuruBeastmaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TajuruPathwarden.java b/Mage.Sets/src/mage/cards/t/TajuruPathwarden.java
index c1e5dd906ba..ba27bd3ebb0 100644
--- a/Mage.Sets/src/mage/cards/t/TajuruPathwarden.java
+++ b/Mage.Sets/src/mage/cards/t/TajuruPathwarden.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class TajuruPathwarden extends CardImpl {
+public final class TajuruPathwarden extends CardImpl {
public TajuruPathwarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TajuruPreserver.java b/Mage.Sets/src/mage/cards/t/TajuruPreserver.java
index 6b60f4583f7..04f689c9a63 100644
--- a/Mage.Sets/src/mage/cards/t/TajuruPreserver.java
+++ b/Mage.Sets/src/mage/cards/t/TajuruPreserver.java
@@ -45,7 +45,7 @@ import mage.game.stack.Spell;
/**
* @author noxx
*/
-public class TajuruPreserver extends CardImpl {
+public final class TajuruPreserver extends CardImpl {
public TajuruPreserver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TajuruStalwart.java b/Mage.Sets/src/mage/cards/t/TajuruStalwart.java
index 04ced12c8f7..5d674abe8dd 100644
--- a/Mage.Sets/src/mage/cards/t/TajuruStalwart.java
+++ b/Mage.Sets/src/mage/cards/t/TajuruStalwart.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class TajuruStalwart extends CardImpl {
+public final class TajuruStalwart extends CardImpl {
public TajuruStalwart(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TajuruWarcaller.java b/Mage.Sets/src/mage/cards/t/TajuruWarcaller.java
index d09d026c16d..e61c0a5e10a 100644
--- a/Mage.Sets/src/mage/cards/t/TajuruWarcaller.java
+++ b/Mage.Sets/src/mage/cards/t/TajuruWarcaller.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class TajuruWarcaller extends CardImpl {
+public final class TajuruWarcaller extends CardImpl {
public TajuruWarcaller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TakeDown.java b/Mage.Sets/src/mage/cards/t/TakeDown.java
index 8e69030ddf2..ac9dff2f614 100644
--- a/Mage.Sets/src/mage/cards/t/TakeDown.java
+++ b/Mage.Sets/src/mage/cards/t/TakeDown.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TakeDown extends CardImpl {
+public final class TakeDown extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/t/TakeIntoCustody.java b/Mage.Sets/src/mage/cards/t/TakeIntoCustody.java
index 8b2f547076e..486d24dd233 100644
--- a/Mage.Sets/src/mage/cards/t/TakeIntoCustody.java
+++ b/Mage.Sets/src/mage/cards/t/TakeIntoCustody.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class TakeIntoCustody extends CardImpl {
+public final class TakeIntoCustody extends CardImpl {
public TakeIntoCustody(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TakeInventory.java b/Mage.Sets/src/mage/cards/t/TakeInventory.java
index 057e9ffa867..17ccaee377b 100644
--- a/Mage.Sets/src/mage/cards/t/TakeInventory.java
+++ b/Mage.Sets/src/mage/cards/t/TakeInventory.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author fireshoes
*/
-public class TakeInventory extends CardImpl {
+public final class TakeInventory extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Take Inventory");
diff --git a/Mage.Sets/src/mage/cards/t/TakePossession.java b/Mage.Sets/src/mage/cards/t/TakePossession.java
index 51aff0a9bf9..71389ebcf59 100644
--- a/Mage.Sets/src/mage/cards/t/TakePossession.java
+++ b/Mage.Sets/src/mage/cards/t/TakePossession.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class TakePossession extends CardImpl {
+public final class TakePossession extends CardImpl {
public TakePossession(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TakeUpArms.java b/Mage.Sets/src/mage/cards/t/TakeUpArms.java
index a61ee826cc4..420599a3324 100644
--- a/Mage.Sets/src/mage/cards/t/TakeUpArms.java
+++ b/Mage.Sets/src/mage/cards/t/TakeUpArms.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.WarriorToken;
*
* @author emerald000
*/
-public class TakeUpArms extends CardImpl {
+public final class TakeUpArms extends CardImpl {
public TakeUpArms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java b/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java
index 44025caedbb..4e3bfaec23a 100644
--- a/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java
+++ b/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
/**
* @author Loki
*/
-public class TakenoSamuraiGeneral extends CardImpl {
+public final class TakenoSamuraiGeneral extends CardImpl {
public TakenoSamuraiGeneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TakenosCavalry.java b/Mage.Sets/src/mage/cards/t/TakenosCavalry.java
index 2252a2955aa..aa583797d98 100644
--- a/Mage.Sets/src/mage/cards/t/TakenosCavalry.java
+++ b/Mage.Sets/src/mage/cards/t/TakenosCavalry.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author Loki
*/
-public class TakenosCavalry extends CardImpl {
+public final class TakenosCavalry extends CardImpl {
private static final FilterAttackingOrBlockingCreature filter = new FilterAttackingOrBlockingCreature("attacking or blocking Spirit");
diff --git a/Mage.Sets/src/mage/cards/t/TakenumaBleeder.java b/Mage.Sets/src/mage/cards/t/TakenumaBleeder.java
index bc36eae66a3..5a68c57b48e 100644
--- a/Mage.Sets/src/mage/cards/t/TakenumaBleeder.java
+++ b/Mage.Sets/src/mage/cards/t/TakenumaBleeder.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TakenumaBleeder extends CardImpl {
+public final class TakenumaBleeder extends CardImpl {
public TakenumaBleeder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TalarasBane.java b/Mage.Sets/src/mage/cards/t/TalarasBane.java
index a6bb3c36acf..eff5f440be1 100644
--- a/Mage.Sets/src/mage/cards/t/TalarasBane.java
+++ b/Mage.Sets/src/mage/cards/t/TalarasBane.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
*
* @author jeffwadsworth
*/
-public class TalarasBane extends CardImpl {
+public final class TalarasBane extends CardImpl {
public TalarasBane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TalarasBattalion.java b/Mage.Sets/src/mage/cards/t/TalarasBattalion.java
index c1978432846..6aa34766d34 100644
--- a/Mage.Sets/src/mage/cards/t/TalarasBattalion.java
+++ b/Mage.Sets/src/mage/cards/t/TalarasBattalion.java
@@ -55,7 +55,7 @@ import mage.watchers.Watcher;
*
* @author jeffwadsworth
*/
-public class TalarasBattalion extends CardImpl {
+public final class TalarasBattalion extends CardImpl {
public TalarasBattalion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TalasAirShip.java b/Mage.Sets/src/mage/cards/t/TalasAirShip.java
index bb77e2de315..2b12ed6ceb5 100644
--- a/Mage.Sets/src/mage/cards/t/TalasAirShip.java
+++ b/Mage.Sets/src/mage/cards/t/TalasAirShip.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class TalasAirShip extends CardImpl {
+public final class TalasAirShip extends CardImpl {
public TalasAirShip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TalasExplorer.java b/Mage.Sets/src/mage/cards/t/TalasExplorer.java
index e33b297913b..23208739912 100644
--- a/Mage.Sets/src/mage/cards/t/TalasExplorer.java
+++ b/Mage.Sets/src/mage/cards/t/TalasExplorer.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class TalasExplorer extends CardImpl {
+public final class TalasExplorer extends CardImpl {
public TalasExplorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TalasMerchant.java b/Mage.Sets/src/mage/cards/t/TalasMerchant.java
index 8339af5ac9b..8ba88640c08 100644
--- a/Mage.Sets/src/mage/cards/t/TalasMerchant.java
+++ b/Mage.Sets/src/mage/cards/t/TalasMerchant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class TalasMerchant extends CardImpl {
+public final class TalasMerchant extends CardImpl {
public TalasMerchant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TalasResearcher.java b/Mage.Sets/src/mage/cards/t/TalasResearcher.java
index 5c64dfb47f0..194ee3f8fda 100644
--- a/Mage.Sets/src/mage/cards/t/TalasResearcher.java
+++ b/Mage.Sets/src/mage/cards/t/TalasResearcher.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class TalasResearcher extends CardImpl {
+public final class TalasResearcher extends CardImpl {
public TalasResearcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TalasScout.java b/Mage.Sets/src/mage/cards/t/TalasScout.java
index eb635065f79..9d78e64ebc4 100644
--- a/Mage.Sets/src/mage/cards/t/TalasScout.java
+++ b/Mage.Sets/src/mage/cards/t/TalasScout.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class TalasScout extends CardImpl {
+public final class TalasScout extends CardImpl {
public TalasScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TalasWarrior.java b/Mage.Sets/src/mage/cards/t/TalasWarrior.java
index 4162e1919dd..0e2186a313e 100644
--- a/Mage.Sets/src/mage/cards/t/TalasWarrior.java
+++ b/Mage.Sets/src/mage/cards/t/TalasWarrior.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class TalasWarrior extends CardImpl {
+public final class TalasWarrior extends CardImpl {
public TalasWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TalentOfTheTelepath.java b/Mage.Sets/src/mage/cards/t/TalentOfTheTelepath.java
index 68475d200ce..ca7883c942e 100644
--- a/Mage.Sets/src/mage/cards/t/TalentOfTheTelepath.java
+++ b/Mage.Sets/src/mage/cards/t/TalentOfTheTelepath.java
@@ -30,6 +30,7 @@ package mage.cards.t;
import java.util.Set;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.condition.common.SpellMasteryCondition;
import mage.abilities.effects.OneShotEffect;
@@ -52,10 +53,10 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class TalentOfTheTelepath extends CardImpl {
+public final class TalentOfTheTelepath extends CardImpl {
public TalentOfTheTelepath(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{U}");
// Target opponent reveals the top seven cards of their library. You may cast an instant or sorcery card from among them without paying its mana cost. Then that player puts the rest into their graveyard.
// Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you may cast up to two revealed instant and/or sorcery cards instead of one.
@@ -127,7 +128,7 @@ class TalentOfTheTelepathEffect extends OneShotEffect {
&& controller.choose(outcome, cardsToCast, target, game)) {
Card card = cardsToCast.get(target.getFirstTarget(), game);
if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
numberOfSpells--;
cardsToCast.remove(card);
allCards.remove(card);
diff --git a/Mage.Sets/src/mage/cards/t/TalismanOfDominance.java b/Mage.Sets/src/mage/cards/t/TalismanOfDominance.java
index 1014730fbba..d50b034a368 100644
--- a/Mage.Sets/src/mage/cards/t/TalismanOfDominance.java
+++ b/Mage.Sets/src/mage/cards/t/TalismanOfDominance.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author jonubuu
*/
-public class TalismanOfDominance extends CardImpl {
+public final class TalismanOfDominance extends CardImpl {
public TalismanOfDominance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TalismanOfImpulse.java b/Mage.Sets/src/mage/cards/t/TalismanOfImpulse.java
index 22a41be6499..7ed40081cc7 100644
--- a/Mage.Sets/src/mage/cards/t/TalismanOfImpulse.java
+++ b/Mage.Sets/src/mage/cards/t/TalismanOfImpulse.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author jonubuu
*/
-public class TalismanOfImpulse extends CardImpl {
+public final class TalismanOfImpulse extends CardImpl {
public TalismanOfImpulse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TalismanOfIndulgence.java b/Mage.Sets/src/mage/cards/t/TalismanOfIndulgence.java
index 6241ef3bfd8..5c254389dcd 100644
--- a/Mage.Sets/src/mage/cards/t/TalismanOfIndulgence.java
+++ b/Mage.Sets/src/mage/cards/t/TalismanOfIndulgence.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author jonubuu
*/
-public class TalismanOfIndulgence extends CardImpl {
+public final class TalismanOfIndulgence extends CardImpl {
public TalismanOfIndulgence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TalismanOfProgress.java b/Mage.Sets/src/mage/cards/t/TalismanOfProgress.java
index 36c25b164a5..8d3122bc33b 100644
--- a/Mage.Sets/src/mage/cards/t/TalismanOfProgress.java
+++ b/Mage.Sets/src/mage/cards/t/TalismanOfProgress.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author jonubuu
*/
-public class TalismanOfProgress extends CardImpl {
+public final class TalismanOfProgress extends CardImpl {
public TalismanOfProgress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TalismanOfUnity.java b/Mage.Sets/src/mage/cards/t/TalismanOfUnity.java
index 3a0f83640ae..66011d9e23a 100644
--- a/Mage.Sets/src/mage/cards/t/TalismanOfUnity.java
+++ b/Mage.Sets/src/mage/cards/t/TalismanOfUnity.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author jonubuu
*/
-public class TalismanOfUnity extends CardImpl {
+public final class TalismanOfUnity extends CardImpl {
public TalismanOfUnity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/Tallowisp.java b/Mage.Sets/src/mage/cards/t/Tallowisp.java
index 47c0401a86a..b6960c68450 100644
--- a/Mage.Sets/src/mage/cards/t/Tallowisp.java
+++ b/Mage.Sets/src/mage/cards/t/Tallowisp.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class Tallowisp extends CardImpl {
+public final class Tallowisp extends CardImpl {
private static final FilterCard filterAura = new FilterCard("Aura card with enchant creature");
diff --git a/Mage.Sets/src/mage/cards/t/TalonOfPain.java b/Mage.Sets/src/mage/cards/t/TalonOfPain.java
index ddba456b3a4..b41407efd55 100644
--- a/Mage.Sets/src/mage/cards/t/TalonOfPain.java
+++ b/Mage.Sets/src/mage/cards/t/TalonOfPain.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jerekwilson
*/
-public class TalonOfPain extends CardImpl {
+public final class TalonOfPain extends CardImpl {
public TalonOfPain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TalonSliver.java b/Mage.Sets/src/mage/cards/t/TalonSliver.java
index 4dc6d4d60a7..3c7a4d01e4c 100644
--- a/Mage.Sets/src/mage/cards/t/TalonSliver.java
+++ b/Mage.Sets/src/mage/cards/t/TalonSliver.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class TalonSliver extends CardImpl {
+public final class TalonSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/t/TalonTrooper.java b/Mage.Sets/src/mage/cards/t/TalonTrooper.java
index c3268a95ad1..2b014f7fe2d 100644
--- a/Mage.Sets/src/mage/cards/t/TalonTrooper.java
+++ b/Mage.Sets/src/mage/cards/t/TalonTrooper.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class TalonTrooper extends CardImpl {
+public final class TalonTrooper extends CardImpl {
public TalonTrooper (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Talonrend.java b/Mage.Sets/src/mage/cards/t/Talonrend.java
index 7baf6e0086c..a06003dea74 100644
--- a/Mage.Sets/src/mage/cards/t/Talonrend.java
+++ b/Mage.Sets/src/mage/cards/t/Talonrend.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Talonrend extends CardImpl {
+public final class Talonrend extends CardImpl {
public Talonrend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TalonsOfFalkenrath.java b/Mage.Sets/src/mage/cards/t/TalonsOfFalkenrath.java
index 17991efb6ae..db89358569c 100644
--- a/Mage.Sets/src/mage/cards/t/TalonsOfFalkenrath.java
+++ b/Mage.Sets/src/mage/cards/t/TalonsOfFalkenrath.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TalonsOfFalkenrath extends CardImpl {
+public final class TalonsOfFalkenrath extends CardImpl {
public TalonsOfFalkenrath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TalrandSkySummoner.java b/Mage.Sets/src/mage/cards/t/TalrandSkySummoner.java
index 0d84557599e..34dfae9501b 100644
--- a/Mage.Sets/src/mage/cards/t/TalrandSkySummoner.java
+++ b/Mage.Sets/src/mage/cards/t/TalrandSkySummoner.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.DrakeToken;
*
* @author North
*/
-public class TalrandSkySummoner extends CardImpl {
+public final class TalrandSkySummoner extends CardImpl {
private static final FilterSpell filter = new FilterSpell("instant or sorcery card");
diff --git a/Mage.Sets/src/mage/cards/t/TalrandsInvocation.java b/Mage.Sets/src/mage/cards/t/TalrandsInvocation.java
index 550d96134d9..43e3f91021a 100644
--- a/Mage.Sets/src/mage/cards/t/TalrandsInvocation.java
+++ b/Mage.Sets/src/mage/cards/t/TalrandsInvocation.java
@@ -38,7 +38,7 @@ import mage.game.permanent.token.DrakeToken;
*
* @author North
*/
-public class TalrandsInvocation extends CardImpl {
+public final class TalrandsInvocation extends CardImpl {
public TalrandsInvocation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TalruumChampion.java b/Mage.Sets/src/mage/cards/t/TalruumChampion.java
index 67af81f2827..4e0ec4eb072 100644
--- a/Mage.Sets/src/mage/cards/t/TalruumChampion.java
+++ b/Mage.Sets/src/mage/cards/t/TalruumChampion.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class TalruumChampion extends CardImpl {
+public final class TalruumChampion extends CardImpl {
public TalruumChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TalruumMinotaur.java b/Mage.Sets/src/mage/cards/t/TalruumMinotaur.java
index 5a9c49fdcea..fe704a6d446 100644
--- a/Mage.Sets/src/mage/cards/t/TalruumMinotaur.java
+++ b/Mage.Sets/src/mage/cards/t/TalruumMinotaur.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TalruumMinotaur extends CardImpl {
+public final class TalruumMinotaur extends CardImpl {
public TalruumMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TalruumPiper.java b/Mage.Sets/src/mage/cards/t/TalruumPiper.java
index 9b54d2aa2b4..6089295c4c1 100644
--- a/Mage.Sets/src/mage/cards/t/TalruumPiper.java
+++ b/Mage.Sets/src/mage/cards/t/TalruumPiper.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author nigelzor
*/
-public class TalruumPiper extends CardImpl {
+public final class TalruumPiper extends CardImpl {
public TalruumPiper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TalusPaladin.java b/Mage.Sets/src/mage/cards/t/TalusPaladin.java
index 3ac3cad8274..6ff20309d35 100644
--- a/Mage.Sets/src/mage/cards/t/TalusPaladin.java
+++ b/Mage.Sets/src/mage/cards/t/TalusPaladin.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class TalusPaladin extends CardImpl {
+public final class TalusPaladin extends CardImpl {
public TalusPaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Tamanoa.java b/Mage.Sets/src/mage/cards/t/Tamanoa.java
index ded63063482..298b67bec97 100644
--- a/Mage.Sets/src/mage/cards/t/Tamanoa.java
+++ b/Mage.Sets/src/mage/cards/t/Tamanoa.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class Tamanoa extends CardImpl {
+public final class Tamanoa extends CardImpl {
public Tamanoa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java b/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java
index 7031834a5fd..5889e382af9 100644
--- a/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java
+++ b/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java
@@ -65,7 +65,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class TamiyoFieldResearcher extends CardImpl {
+public final class TamiyoFieldResearcher extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent("nonland permanent");
diff --git a/Mage.Sets/src/mage/cards/t/TamiyoTheMoonSage.java b/Mage.Sets/src/mage/cards/t/TamiyoTheMoonSage.java
index 3290e1d7cf0..b1adda8c160 100644
--- a/Mage.Sets/src/mage/cards/t/TamiyoTheMoonSage.java
+++ b/Mage.Sets/src/mage/cards/t/TamiyoTheMoonSage.java
@@ -54,7 +54,7 @@ import mage.target.TargetPlayer;
*
* @author North, noxx
*/
-public class TamiyoTheMoonSage extends CardImpl {
+public final class TamiyoTheMoonSage extends CardImpl {
public TamiyoTheMoonSage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TamiyosJournal.java b/Mage.Sets/src/mage/cards/t/TamiyosJournal.java
index 7750feb1377..2c51bd4b688 100644
--- a/Mage.Sets/src/mage/cards/t/TamiyosJournal.java
+++ b/Mage.Sets/src/mage/cards/t/TamiyosJournal.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class TamiyosJournal extends CardImpl {
+public final class TamiyosJournal extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("three Clues");
diff --git a/Mage.Sets/src/mage/cards/t/TanaTheBloodsower.java b/Mage.Sets/src/mage/cards/t/TanaTheBloodsower.java
index d2018a6252e..ed1c6527a68 100644
--- a/Mage.Sets/src/mage/cards/t/TanaTheBloodsower.java
+++ b/Mage.Sets/src/mage/cards/t/TanaTheBloodsower.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class TanaTheBloodsower extends CardImpl {
+public final class TanaTheBloodsower extends CardImpl {
public TanaTheBloodsower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TandemLookout.java b/Mage.Sets/src/mage/cards/t/TandemLookout.java
index b695fbb1c5d..edbd5fb2358 100644
--- a/Mage.Sets/src/mage/cards/t/TandemLookout.java
+++ b/Mage.Sets/src/mage/cards/t/TandemLookout.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class TandemLookout extends CardImpl {
+public final class TandemLookout extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, each of those creatures has \"Whenever this creature deals damage to an opponent, draw a card.\"";
diff --git a/Mage.Sets/src/mage/cards/t/TandemTactics.java b/Mage.Sets/src/mage/cards/t/TandemTactics.java
index 66109360220..0b01a665d48 100644
--- a/Mage.Sets/src/mage/cards/t/TandemTactics.java
+++ b/Mage.Sets/src/mage/cards/t/TandemTactics.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class TandemTactics extends CardImpl {
+public final class TandemTactics extends CardImpl {
public TandemTactics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Tangle.java b/Mage.Sets/src/mage/cards/t/Tangle.java
index 2ea2a0f45f7..a167c9bff3d 100644
--- a/Mage.Sets/src/mage/cards/t/Tangle.java
+++ b/Mage.Sets/src/mage/cards/t/Tangle.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author LevelX2
*/
-public class Tangle extends CardImpl {
+public final class Tangle extends CardImpl {
public Tangle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TangleAngler.java b/Mage.Sets/src/mage/cards/t/TangleAngler.java
index 3d493c7b5a9..6120d316682 100644
--- a/Mage.Sets/src/mage/cards/t/TangleAngler.java
+++ b/Mage.Sets/src/mage/cards/t/TangleAngler.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class TangleAngler extends CardImpl {
+public final class TangleAngler extends CardImpl {
public TangleAngler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TangleAsp.java b/Mage.Sets/src/mage/cards/t/TangleAsp.java
index e970c1cc5c5..4f58ca21a90 100644
--- a/Mage.Sets/src/mage/cards/t/TangleAsp.java
+++ b/Mage.Sets/src/mage/cards/t/TangleAsp.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class TangleAsp extends CardImpl {
+public final class TangleAsp extends CardImpl {
public TangleAsp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TangleGolem.java b/Mage.Sets/src/mage/cards/t/TangleGolem.java
index ecb34d27426..ba39a80866a 100644
--- a/Mage.Sets/src/mage/cards/t/TangleGolem.java
+++ b/Mage.Sets/src/mage/cards/t/TangleGolem.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TangleGolem extends CardImpl {
+public final class TangleGolem extends CardImpl {
public TangleGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{7}");
diff --git a/Mage.Sets/src/mage/cards/t/TangleHulk.java b/Mage.Sets/src/mage/cards/t/TangleHulk.java
index 1ada3b64da0..c135a39b1fe 100644
--- a/Mage.Sets/src/mage/cards/t/TangleHulk.java
+++ b/Mage.Sets/src/mage/cards/t/TangleHulk.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class TangleHulk extends CardImpl {
+public final class TangleHulk extends CardImpl {
public TangleHulk (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/t/TangleKelp.java b/Mage.Sets/src/mage/cards/t/TangleKelp.java
index 88695b40695..e7b3bf04cef 100644
--- a/Mage.Sets/src/mage/cards/t/TangleKelp.java
+++ b/Mage.Sets/src/mage/cards/t/TangleKelp.java
@@ -57,7 +57,7 @@ import mage.watchers.common.AttackedLastTurnWatcher;
*
* @author L_J
*/
-public class TangleKelp extends CardImpl {
+public final class TangleKelp extends CardImpl {
public TangleKelp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TangleMantis.java b/Mage.Sets/src/mage/cards/t/TangleMantis.java
index 870f3e4fc3f..0a89580bb27 100644
--- a/Mage.Sets/src/mage/cards/t/TangleMantis.java
+++ b/Mage.Sets/src/mage/cards/t/TangleMantis.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class TangleMantis extends CardImpl {
+public final class TangleMantis extends CardImpl {
public TangleMantis (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TangleSpider.java b/Mage.Sets/src/mage/cards/t/TangleSpider.java
index f12cf3a0ef8..fc37a6effea 100644
--- a/Mage.Sets/src/mage/cards/t/TangleSpider.java
+++ b/Mage.Sets/src/mage/cards/t/TangleSpider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class TangleSpider extends CardImpl {
+public final class TangleSpider extends CardImpl {
public TangleSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TangleWire.java b/Mage.Sets/src/mage/cards/t/TangleWire.java
index 034f9b600bd..43ca5997739 100644
--- a/Mage.Sets/src/mage/cards/t/TangleWire.java
+++ b/Mage.Sets/src/mage/cards/t/TangleWire.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class TangleWire extends CardImpl {
+public final class TangleWire extends CardImpl {
public TangleWire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/Tanglebloom.java b/Mage.Sets/src/mage/cards/t/Tanglebloom.java
index c286dfd228c..04fc9d372e6 100644
--- a/Mage.Sets/src/mage/cards/t/Tanglebloom.java
+++ b/Mage.Sets/src/mage/cards/t/Tanglebloom.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class Tanglebloom extends CardImpl {
+public final class Tanglebloom extends CardImpl {
public Tanglebloom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/t/TangleclawWerewolf.java b/Mage.Sets/src/mage/cards/t/TangleclawWerewolf.java
index c0dd606b7ac..2701d89a437 100644
--- a/Mage.Sets/src/mage/cards/t/TangleclawWerewolf.java
+++ b/Mage.Sets/src/mage/cards/t/TangleclawWerewolf.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class TangleclawWerewolf extends CardImpl {
+public final class TangleclawWerewolf extends CardImpl {
public TangleclawWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/Tangleroot.java b/Mage.Sets/src/mage/cards/t/Tangleroot.java
index 2268edc948c..3ac1084f994 100644
--- a/Mage.Sets/src/mage/cards/t/Tangleroot.java
+++ b/Mage.Sets/src/mage/cards/t/Tangleroot.java
@@ -41,12 +41,12 @@ import mage.filter.StaticFilters;
*
* @author Eirkei
*/
-public class Tangleroot extends CardImpl {
+public final class Tangleroot extends CardImpl {
public Tangleroot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
- // Whenever a player casts a creature spell, that player adds {G} to their mana pool.
+ // Whenever a player casts a creature spell, that player adds {G}.
this.addAbility(new SpellCastAllTriggeredAbility(
new AddManaToManaPoolTargetControllerEffect(Mana.GreenMana(1), "their"), StaticFilters.FILTER_SPELL_A_CREATURE, false, SetTargetPointer.PLAYER));
}
diff --git a/Mage.Sets/src/mage/cards/t/Tanglesap.java b/Mage.Sets/src/mage/cards/t/Tanglesap.java
index 919fd8fe7f9..57e6153a073 100644
--- a/Mage.Sets/src/mage/cards/t/Tanglesap.java
+++ b/Mage.Sets/src/mage/cards/t/Tanglesap.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author jeffwadsworth
*/
-public class Tanglesap extends CardImpl {
+public final class Tanglesap extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures without trample");
diff --git a/Mage.Sets/src/mage/cards/t/Tanglewalker.java b/Mage.Sets/src/mage/cards/t/Tanglewalker.java
index f1fef1db640..bc48b2db189 100644
--- a/Mage.Sets/src/mage/cards/t/Tanglewalker.java
+++ b/Mage.Sets/src/mage/cards/t/Tanglewalker.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author North
*/
-public class Tanglewalker extends CardImpl {
+public final class Tanglewalker extends CardImpl {
private static final FilterPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/t/Taniwha.java b/Mage.Sets/src/mage/cards/t/Taniwha.java
index 6e7897ec3c8..fba82178b59 100644
--- a/Mage.Sets/src/mage/cards/t/Taniwha.java
+++ b/Mage.Sets/src/mage/cards/t/Taniwha.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class Taniwha extends CardImpl {
+public final class Taniwha extends CardImpl {
public Taniwha(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TankDroid.java b/Mage.Sets/src/mage/cards/t/TankDroid.java
index 3c9e6c31906..360b79be452 100644
--- a/Mage.Sets/src/mage/cards/t/TankDroid.java
+++ b/Mage.Sets/src/mage/cards/t/TankDroid.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.DroidToken;
*
* @author Styxo
*/
-public class TankDroid extends CardImpl {
+public final class TankDroid extends CardImpl {
public TankDroid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TaoistHermit.java b/Mage.Sets/src/mage/cards/t/TaoistHermit.java
index 79fc8855e05..161330f7d9d 100644
--- a/Mage.Sets/src/mage/cards/t/TaoistHermit.java
+++ b/Mage.Sets/src/mage/cards/t/TaoistHermit.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TaoistHermit extends CardImpl {
+public final class TaoistHermit extends CardImpl {
public TaoistHermit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TaoistMystic.java b/Mage.Sets/src/mage/cards/t/TaoistMystic.java
index e8d34e629ae..caddf0e29c6 100644
--- a/Mage.Sets/src/mage/cards/t/TaoistMystic.java
+++ b/Mage.Sets/src/mage/cards/t/TaoistMystic.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LoneFox
*/
-public class TaoistMystic extends CardImpl {
+public final class TaoistMystic extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with horsemanship");
diff --git a/Mage.Sets/src/mage/cards/t/TapestryOfTheAges.java b/Mage.Sets/src/mage/cards/t/TapestryOfTheAges.java
index 373e2bcdaf5..1141fe3453c 100644
--- a/Mage.Sets/src/mage/cards/t/TapestryOfTheAges.java
+++ b/Mage.Sets/src/mage/cards/t/TapestryOfTheAges.java
@@ -51,7 +51,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class TapestryOfTheAges extends CardImpl {
+public final class TapestryOfTheAges extends CardImpl {
public TapestryOfTheAges(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TarFiend.java b/Mage.Sets/src/mage/cards/t/TarFiend.java
index 6ac8ca20a3b..d5683ec686e 100644
--- a/Mage.Sets/src/mage/cards/t/TarFiend.java
+++ b/Mage.Sets/src/mage/cards/t/TarFiend.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class TarFiend extends CardImpl {
+public final class TarFiend extends CardImpl {
public TarFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TarPitWarrior.java b/Mage.Sets/src/mage/cards/t/TarPitWarrior.java
index e806f29fa09..0ccbd5d2faa 100644
--- a/Mage.Sets/src/mage/cards/t/TarPitWarrior.java
+++ b/Mage.Sets/src/mage/cards/t/TarPitWarrior.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class TarPitWarrior extends CardImpl {
+public final class TarPitWarrior extends CardImpl {
public TarPitWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TarPitcher.java b/Mage.Sets/src/mage/cards/t/TarPitcher.java
index 786960d578d..d76fdef71ed 100644
--- a/Mage.Sets/src/mage/cards/t/TarPitcher.java
+++ b/Mage.Sets/src/mage/cards/t/TarPitcher.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class TarPitcher extends CardImpl {
+public final class TarPitcher extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goblin");
diff --git a/Mage.Sets/src/mage/cards/t/TarSnare.java b/Mage.Sets/src/mage/cards/t/TarSnare.java
index c740c1d2665..7f18bff9463 100644
--- a/Mage.Sets/src/mage/cards/t/TarSnare.java
+++ b/Mage.Sets/src/mage/cards/t/TarSnare.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TarSnare extends CardImpl {
+public final class TarSnare extends CardImpl {
public TarSnare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Tarfire.java b/Mage.Sets/src/mage/cards/t/Tarfire.java
index 2a9d910aba9..3d55c517413 100644
--- a/Mage.Sets/src/mage/cards/t/Tarfire.java
+++ b/Mage.Sets/src/mage/cards/t/Tarfire.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class Tarfire extends CardImpl {
+public final class Tarfire extends CardImpl {
public Tarfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TargetMinotaur.java b/Mage.Sets/src/mage/cards/t/TargetMinotaur.java
index e8d4156be94..ec312cdc217 100644
--- a/Mage.Sets/src/mage/cards/t/TargetMinotaur.java
+++ b/Mage.Sets/src/mage/cards/t/TargetMinotaur.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class TargetMinotaur extends CardImpl {
+public final class TargetMinotaur extends CardImpl {
public TargetMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TarielReckonerOfSouls.java b/Mage.Sets/src/mage/cards/t/TarielReckonerOfSouls.java
index 33e6b646040..140d168df6b 100644
--- a/Mage.Sets/src/mage/cards/t/TarielReckonerOfSouls.java
+++ b/Mage.Sets/src/mage/cards/t/TarielReckonerOfSouls.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class TarielReckonerOfSouls extends CardImpl {
+public final class TarielReckonerOfSouls extends CardImpl {
public TarielReckonerOfSouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Tariff.java b/Mage.Sets/src/mage/cards/t/Tariff.java
index 0d817050b9a..7a322b6dce4 100644
--- a/Mage.Sets/src/mage/cards/t/Tariff.java
+++ b/Mage.Sets/src/mage/cards/t/Tariff.java
@@ -54,7 +54,7 @@ import mage.target.TargetCard;
*
* @author Quercitron
*/
-public class Tariff extends CardImpl {
+public final class Tariff extends CardImpl {
public Tariff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Tarmogoyf.java b/Mage.Sets/src/mage/cards/t/Tarmogoyf.java
index 3292df697ad..d460dfda68f 100644
--- a/Mage.Sets/src/mage/cards/t/Tarmogoyf.java
+++ b/Mage.Sets/src/mage/cards/t/Tarmogoyf.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class Tarmogoyf extends CardImpl {
+public final class Tarmogoyf extends CardImpl {
public Tarmogoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TarnishedCitadel.java b/Mage.Sets/src/mage/cards/t/TarnishedCitadel.java
index e932452328a..4453f48ef72 100644
--- a/Mage.Sets/src/mage/cards/t/TarnishedCitadel.java
+++ b/Mage.Sets/src/mage/cards/t/TarnishedCitadel.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class TarnishedCitadel extends CardImpl {
+public final class TarnishedCitadel extends CardImpl {
public TarnishedCitadel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TaroxBladewing.java b/Mage.Sets/src/mage/cards/t/TaroxBladewing.java
index c9021befeb1..1c8e724e951 100644
--- a/Mage.Sets/src/mage/cards/t/TaroxBladewing.java
+++ b/Mage.Sets/src/mage/cards/t/TaroxBladewing.java
@@ -45,7 +45,7 @@ import mage.constants.SuperType;
*
* @author emerald000
*/
-public class TaroxBladewing extends CardImpl {
+public final class TaroxBladewing extends CardImpl {
public TaroxBladewing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Tarpan.java b/Mage.Sets/src/mage/cards/t/Tarpan.java
index 8d7f515e707..17f7b4ca536 100644
--- a/Mage.Sets/src/mage/cards/t/Tarpan.java
+++ b/Mage.Sets/src/mage/cards/t/Tarpan.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
* @author LoneFox
*/
-public class Tarpan extends CardImpl {
+public final class Tarpan extends CardImpl {
public Tarpan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TasigurTheGoldenFang.java b/Mage.Sets/src/mage/cards/t/TasigurTheGoldenFang.java
index 9e1bcbcb88c..94cadecc129 100644
--- a/Mage.Sets/src/mage/cards/t/TasigurTheGoldenFang.java
+++ b/Mage.Sets/src/mage/cards/t/TasigurTheGoldenFang.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class TasigurTheGoldenFang extends CardImpl {
+public final class TasigurTheGoldenFang extends CardImpl {
public TasigurTheGoldenFang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TasigursCruelty.java b/Mage.Sets/src/mage/cards/t/TasigursCruelty.java
index 57cb64f6d7b..1dcad84ae1d 100644
--- a/Mage.Sets/src/mage/cards/t/TasigursCruelty.java
+++ b/Mage.Sets/src/mage/cards/t/TasigursCruelty.java
@@ -40,7 +40,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class TasigursCruelty extends CardImpl {
+public final class TasigursCruelty extends CardImpl {
public TasigursCruelty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TaskForce.java b/Mage.Sets/src/mage/cards/t/TaskForce.java
index fa1a5f3e57b..077264652fe 100644
--- a/Mage.Sets/src/mage/cards/t/TaskForce.java
+++ b/Mage.Sets/src/mage/cards/t/TaskForce.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author Backfir3
*/
-public class TaskForce extends CardImpl {
+public final class TaskForce extends CardImpl {
public TaskForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TaskMageAssembly.java b/Mage.Sets/src/mage/cards/t/TaskMageAssembly.java
index 395b6421491..0bb426e7713 100644
--- a/Mage.Sets/src/mage/cards/t/TaskMageAssembly.java
+++ b/Mage.Sets/src/mage/cards/t/TaskMageAssembly.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class TaskMageAssembly extends CardImpl {
+public final class TaskMageAssembly extends CardImpl {
public TaskMageAssembly(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TasseledDromedary.java b/Mage.Sets/src/mage/cards/t/TasseledDromedary.java
index fe79d662163..d470e5ac495 100644
--- a/Mage.Sets/src/mage/cards/t/TasseledDromedary.java
+++ b/Mage.Sets/src/mage/cards/t/TasseledDromedary.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class TasseledDromedary extends CardImpl {
+public final class TasseledDromedary extends CardImpl {
public TasseledDromedary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TasteForMayhem.java b/Mage.Sets/src/mage/cards/t/TasteForMayhem.java
index 0c1ebf089c4..adc83fd581d 100644
--- a/Mage.Sets/src/mage/cards/t/TasteForMayhem.java
+++ b/Mage.Sets/src/mage/cards/t/TasteForMayhem.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class TasteForMayhem extends CardImpl {
+public final class TasteForMayhem extends CardImpl {
public TasteForMayhem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TasteOfBlood.java b/Mage.Sets/src/mage/cards/t/TasteOfBlood.java
index 9d1f9695642..a657a85f913 100644
--- a/Mage.Sets/src/mage/cards/t/TasteOfBlood.java
+++ b/Mage.Sets/src/mage/cards/t/TasteOfBlood.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class TasteOfBlood extends CardImpl {
+public final class TasteOfBlood extends CardImpl {
public TasteOfBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TatsumasaTheDragonsFang.java b/Mage.Sets/src/mage/cards/t/TatsumasaTheDragonsFang.java
index c92f4911ea8..7d052dbcdce 100644
--- a/Mage.Sets/src/mage/cards/t/TatsumasaTheDragonsFang.java
+++ b/Mage.Sets/src/mage/cards/t/TatsumasaTheDragonsFang.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class TatsumasaTheDragonsFang extends CardImpl {
+public final class TatsumasaTheDragonsFang extends CardImpl {
public TatsumasaTheDragonsFang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/t/TatteredDrake.java b/Mage.Sets/src/mage/cards/t/TatteredDrake.java
index e6164e288ba..c5da9f3ccc5 100644
--- a/Mage.Sets/src/mage/cards/t/TatteredDrake.java
+++ b/Mage.Sets/src/mage/cards/t/TatteredDrake.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class TatteredDrake extends CardImpl {
+public final class TatteredDrake extends CardImpl {
public TatteredDrake (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TatteredHaunter.java b/Mage.Sets/src/mage/cards/t/TatteredHaunter.java
index a13a78ecbf6..820c6167ad6 100644
--- a/Mage.Sets/src/mage/cards/t/TatteredHaunter.java
+++ b/Mage.Sets/src/mage/cards/t/TatteredHaunter.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TatteredHaunter extends CardImpl {
+public final class TatteredHaunter extends CardImpl {
public TatteredHaunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TatteredMummy.java b/Mage.Sets/src/mage/cards/t/TatteredMummy.java
index ab7908821a8..9c35e87fa3f 100644
--- a/Mage.Sets/src/mage/cards/t/TatteredMummy.java
+++ b/Mage.Sets/src/mage/cards/t/TatteredMummy.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class TatteredMummy extends CardImpl {
+public final class TatteredMummy extends CardImpl {
public TatteredMummy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Tatterkite.java b/Mage.Sets/src/mage/cards/t/Tatterkite.java
index dadd2c8be09..e38ee75c501 100644
--- a/Mage.Sets/src/mage/cards/t/Tatterkite.java
+++ b/Mage.Sets/src/mage/cards/t/Tatterkite.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class Tatterkite extends CardImpl {
+public final class Tatterkite extends CardImpl {
public Tatterkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TattermungeDuo.java b/Mage.Sets/src/mage/cards/t/TattermungeDuo.java
index 00d72aec337..5127b5c1f54 100644
--- a/Mage.Sets/src/mage/cards/t/TattermungeDuo.java
+++ b/Mage.Sets/src/mage/cards/t/TattermungeDuo.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class TattermungeDuo extends CardImpl {
+public final class TattermungeDuo extends CardImpl {
private static final FilterSpell redFilter = new FilterSpell("a red spell");
private static final FilterSpell greenFilter = new FilterSpell("a green spell");
diff --git a/Mage.Sets/src/mage/cards/t/TattermungeManiac.java b/Mage.Sets/src/mage/cards/t/TattermungeManiac.java
index 9ed835551c7..d82746e146f 100644
--- a/Mage.Sets/src/mage/cards/t/TattermungeManiac.java
+++ b/Mage.Sets/src/mage/cards/t/TattermungeManiac.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TattermungeManiac extends CardImpl {
+public final class TattermungeManiac extends CardImpl {
public TattermungeManiac(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/G}");
diff --git a/Mage.Sets/src/mage/cards/t/TattermungeWitch.java b/Mage.Sets/src/mage/cards/t/TattermungeWitch.java
index 51d8bff460e..3ec6a32b419 100644
--- a/Mage.Sets/src/mage/cards/t/TattermungeWitch.java
+++ b/Mage.Sets/src/mage/cards/t/TattermungeWitch.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.BlockedPredicate;
*
* @author jeffwadsworth
*/
-public class TattermungeWitch extends CardImpl {
+public final class TattermungeWitch extends CardImpl {
static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("Each blocked creature");
diff --git a/Mage.Sets/src/mage/cards/t/TattooWard.java b/Mage.Sets/src/mage/cards/t/TattooWard.java
index d57bdfc9e2a..98597c76f67 100644
--- a/Mage.Sets/src/mage/cards/t/TattooWard.java
+++ b/Mage.Sets/src/mage/cards/t/TattooWard.java
@@ -1,101 +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.t;
-
-import java.util.UUID;
-import mage.constants.SubType;
-import mage.target.common.TargetCreaturePermanent;
-import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.costs.common.SacrificeSourceCost;
-import mage.abilities.effects.common.AttachEffect;
-import mage.abilities.effects.common.DestroyTargetEffect;
-import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
-import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
-import mage.constants.Outcome;
-import mage.target.TargetPermanent;
-import mage.abilities.keyword.EnchantAbility;
-import mage.abilities.keyword.ProtectionAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.AttachmentType;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.Zone;
-import mage.filter.FilterCard;
-import mage.filter.StaticFilters;
-import mage.filter.predicate.mageobject.CardTypePredicate;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class TattooWard extends CardImpl {
-
- private static final FilterCard filter = new FilterCard("enchantments");
-
- static {
- filter.add(new CardTypePredicate(CardType.ENCHANTMENT));
- }
-
- public TattooWard(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
-
- this.subtype.add(SubType.AURA);
-
- // Enchant creature
- TargetPermanent auraTarget = new TargetCreaturePermanent();
- this.getSpellAbility().addTarget(auraTarget);
- this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
- Ability ability = new EnchantAbility(auraTarget.getTargetName());
- this.addAbility(ability);
-
- // Enchanted creature gets +1/+1 and has protection from enchantments. This effect doesn't remove Tattoo Ward.
- Ability ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield));
- ProtectionAbility protectionAbility = new ProtectionAbility(filter);
- protectionAbility.setAuraIdNotToBeRemoved(getId());
- ability2.addEffect(new GainAbilityAttachedEffect(protectionAbility, AttachmentType.AURA, Duration.WhileOnBattlefield));
- this.addAbility(ability2);
-
- // Sacrifice Tattoo Ward: Destroy target enchantment.
- Ability ability3 = new SimpleActivatedAbility(new DestroyTargetEffect(), new SacrificeSourceCost());
- ability3.addTarget(new TargetPermanent(StaticFilters.FILTER_ENCHANTMENT_PERMANENT));
- this.addAbility(ability3);
-
- }
-
- public TattooWard(final TattooWard card) {
- super(card);
- }
-
- @Override
- public TattooWard copy() {
- return new TattooWard(this);
- }
-}
+/*
+ * 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.t;
+
+import java.util.UUID;
+import mage.constants.SubType;
+import mage.target.common.TargetCreaturePermanent;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
+import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
+import mage.constants.Outcome;
+import mage.target.TargetPermanent;
+import mage.abilities.keyword.EnchantAbility;
+import mage.abilities.keyword.ProtectionAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.AttachmentType;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.filter.StaticFilters;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class TattooWard extends CardImpl {
+
+ private static final FilterCard filter = new FilterCard("enchantments");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.ENCHANTMENT));
+ }
+
+ public TattooWard(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
+
+ this.subtype.add(SubType.AURA);
+
+ // Enchant creature
+ TargetPermanent auraTarget = new TargetCreaturePermanent();
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
+ Ability ability = new EnchantAbility(auraTarget.getTargetName());
+ this.addAbility(ability);
+
+ // Enchanted creature gets +1/+1 and has protection from enchantments. This effect doesn't remove Tattoo Ward.
+ Ability ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield));
+ ProtectionAbility protectionAbility = new ProtectionAbility(filter);
+ protectionAbility.setAuraIdNotToBeRemoved(getId());
+ ability2.addEffect(new GainAbilityAttachedEffect(protectionAbility, AttachmentType.AURA, Duration.WhileOnBattlefield));
+ this.addAbility(ability2);
+
+ // Sacrifice Tattoo Ward: Destroy target enchantment.
+ Ability ability3 = new SimpleActivatedAbility(new DestroyTargetEffect(), new SacrificeSourceCost());
+ ability3.addTarget(new TargetPermanent(StaticFilters.FILTER_ENCHANTMENT_PERMANENT));
+ this.addAbility(ability3);
+
+ }
+
+ public TattooWard(final TattooWard card) {
+ super(card);
+ }
+
+ @Override
+ public TattooWard copy() {
+ return new TattooWard(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/t/TatyovaBenthicDruid.java b/Mage.Sets/src/mage/cards/t/TatyovaBenthicDruid.java
index 65ef0edcea4..7f02fa03921 100644
--- a/Mage.Sets/src/mage/cards/t/TatyovaBenthicDruid.java
+++ b/Mage.Sets/src/mage/cards/t/TatyovaBenthicDruid.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author L_J
*/
-public class TatyovaBenthicDruid extends CardImpl {
+public final class TatyovaBenthicDruid extends CardImpl {
public TatyovaBenthicDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Taunt.java b/Mage.Sets/src/mage/cards/t/Taunt.java
index 8e416cf6a01..f1e7b912e99 100644
--- a/Mage.Sets/src/mage/cards/t/Taunt.java
+++ b/Mage.Sets/src/mage/cards/t/Taunt.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author emerald000
*/
-public class Taunt extends CardImpl {
+public final class Taunt extends CardImpl {
public Taunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TauntingChallenge.java b/Mage.Sets/src/mage/cards/t/TauntingChallenge.java
index 05609004eba..2139fcb0400 100644
--- a/Mage.Sets/src/mage/cards/t/TauntingChallenge.java
+++ b/Mage.Sets/src/mage/cards/t/TauntingChallenge.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class TauntingChallenge extends CardImpl {
+public final class TauntingChallenge extends CardImpl {
public TauntingChallenge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TauntingElf.java b/Mage.Sets/src/mage/cards/t/TauntingElf.java
index 7a1f29ed9c9..2df00d93d1b 100644
--- a/Mage.Sets/src/mage/cards/t/TauntingElf.java
+++ b/Mage.Sets/src/mage/cards/t/TauntingElf.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class TauntingElf extends CardImpl {
+public final class TauntingElf extends CardImpl {
public TauntingElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TaureanMauler.java b/Mage.Sets/src/mage/cards/t/TaureanMauler.java
index 6d99d0e985e..f67df72cbc1 100644
--- a/Mage.Sets/src/mage/cards/t/TaureanMauler.java
+++ b/Mage.Sets/src/mage/cards/t/TaureanMauler.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author jeffwadsworth
*/
-public class TaureanMauler extends CardImpl {
+public final class TaureanMauler extends CardImpl {
public TaureanMauler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TavernSwindler.java b/Mage.Sets/src/mage/cards/t/TavernSwindler.java
index b0ff9667335..b7da917bf6f 100644
--- a/Mage.Sets/src/mage/cards/t/TavernSwindler.java
+++ b/Mage.Sets/src/mage/cards/t/TavernSwindler.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TavernSwindler extends CardImpl {
+public final class TavernSwindler extends CardImpl {
public TavernSwindler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TawnossCoffin.java b/Mage.Sets/src/mage/cards/t/TawnossCoffin.java
index 2fa72e6b168..6bb76c281fb 100644
--- a/Mage.Sets/src/mage/cards/t/TawnossCoffin.java
+++ b/Mage.Sets/src/mage/cards/t/TawnossCoffin.java
@@ -63,7 +63,7 @@ import mage.util.CardUtil;
*
* @author MarcoMarin
*/
-public class TawnossCoffin extends CardImpl {
+public final class TawnossCoffin extends CardImpl {
public TawnossCoffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TawnossWand.java b/Mage.Sets/src/mage/cards/t/TawnossWand.java
index b8ebb17c6a7..79451d26bf3 100644
--- a/Mage.Sets/src/mage/cards/t/TawnossWand.java
+++ b/Mage.Sets/src/mage/cards/t/TawnossWand.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author MarcoMarin
*/
-public class TawnossWand extends CardImpl {
+public final class TawnossWand extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
diff --git a/Mage.Sets/src/mage/cards/t/TawnossWeaponry.java b/Mage.Sets/src/mage/cards/t/TawnossWeaponry.java
index 3c2bd0d3d77..965d2ae3a5c 100644
--- a/Mage.Sets/src/mage/cards/t/TawnossWeaponry.java
+++ b/Mage.Sets/src/mage/cards/t/TawnossWeaponry.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class TawnossWeaponry extends CardImpl {
+public final class TawnossWeaponry extends CardImpl {
public TawnossWeaponry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TeardropKami.java b/Mage.Sets/src/mage/cards/t/TeardropKami.java
index 8272d554583..f73f8fe91fb 100644
--- a/Mage.Sets/src/mage/cards/t/TeardropKami.java
+++ b/Mage.Sets/src/mage/cards/t/TeardropKami.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TeardropKami extends CardImpl {
+public final class TeardropKami extends CardImpl {
public TeardropKami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TearsOfRage.java b/Mage.Sets/src/mage/cards/t/TearsOfRage.java
index abc5f15e0d5..f57745ca037 100644
--- a/Mage.Sets/src/mage/cards/t/TearsOfRage.java
+++ b/Mage.Sets/src/mage/cards/t/TearsOfRage.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author LevelX2
*/
-public class TearsOfRage extends CardImpl {
+public final class TearsOfRage extends CardImpl {
public TearsOfRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TearsOfValakut.java b/Mage.Sets/src/mage/cards/t/TearsOfValakut.java
index 45b7e4fa710..bf7beb76dcb 100644
--- a/Mage.Sets/src/mage/cards/t/TearsOfValakut.java
+++ b/Mage.Sets/src/mage/cards/t/TearsOfValakut.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class TearsOfValakut extends CardImpl {
+public final class TearsOfValakut extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/t/TectonicBreak.java b/Mage.Sets/src/mage/cards/t/TectonicBreak.java
index ae7dbf8c959..1e8b28c9add 100644
--- a/Mage.Sets/src/mage/cards/t/TectonicBreak.java
+++ b/Mage.Sets/src/mage/cards/t/TectonicBreak.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author LoneFox
*/
-public class TectonicBreak extends CardImpl {
+public final class TectonicBreak extends CardImpl {
public TectonicBreak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TectonicEdge.java b/Mage.Sets/src/mage/cards/t/TectonicEdge.java
index b407132e00c..61ef85afd82 100644
--- a/Mage.Sets/src/mage/cards/t/TectonicEdge.java
+++ b/Mage.Sets/src/mage/cards/t/TectonicEdge.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class TectonicEdge extends CardImpl {
+public final class TectonicEdge extends CardImpl {
public TectonicEdge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/t/TectonicFiend.java b/Mage.Sets/src/mage/cards/t/TectonicFiend.java
index d4bcc909c40..8c79c850975 100644
--- a/Mage.Sets/src/mage/cards/t/TectonicFiend.java
+++ b/Mage.Sets/src/mage/cards/t/TectonicFiend.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class TectonicFiend extends CardImpl {
+public final class TectonicFiend extends CardImpl {
public TectonicFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TectonicInstability.java b/Mage.Sets/src/mage/cards/t/TectonicInstability.java
index ade92f18752..755fc9ab414 100644
--- a/Mage.Sets/src/mage/cards/t/TectonicInstability.java
+++ b/Mage.Sets/src/mage/cards/t/TectonicInstability.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterLandPermanent;
* @author LoneFox
*/
-public class TectonicInstability extends CardImpl {
+public final class TectonicInstability extends CardImpl {
public TectonicInstability(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TectonicRift.java b/Mage.Sets/src/mage/cards/t/TectonicRift.java
index 2ca2ca970f1..e69ba5233da 100644
--- a/Mage.Sets/src/mage/cards/t/TectonicRift.java
+++ b/Mage.Sets/src/mage/cards/t/TectonicRift.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author North
*/
-public class TectonicRift extends CardImpl {
+public final class TectonicRift extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/t/TeekasDragon.java b/Mage.Sets/src/mage/cards/t/TeekasDragon.java
index 3449efd4635..f69eb0d2783 100644
--- a/Mage.Sets/src/mage/cards/t/TeekasDragon.java
+++ b/Mage.Sets/src/mage/cards/t/TeekasDragon.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class TeekasDragon extends CardImpl {
+public final class TeekasDragon extends CardImpl {
public TeekasDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{9}");
diff --git a/Mage.Sets/src/mage/cards/t/TeeteringPeaks.java b/Mage.Sets/src/mage/cards/t/TeeteringPeaks.java
index 9fe958c1e70..779478cfba9 100644
--- a/Mage.Sets/src/mage/cards/t/TeeteringPeaks.java
+++ b/Mage.Sets/src/mage/cards/t/TeeteringPeaks.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class TeeteringPeaks extends CardImpl {
+public final class TeeteringPeaks extends CardImpl {
public TeeteringPeaks(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/t/TeferiHeroOfDominaria.java b/Mage.Sets/src/mage/cards/t/TeferiHeroOfDominaria.java
index fa839a925d4..bc8c1e6499d 100644
--- a/Mage.Sets/src/mage/cards/t/TeferiHeroOfDominaria.java
+++ b/Mage.Sets/src/mage/cards/t/TeferiHeroOfDominaria.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class TeferiHeroOfDominaria extends CardImpl {
+public final class TeferiHeroOfDominaria extends CardImpl {
public TeferiHeroOfDominaria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TeferiMageOfZhalfir.java b/Mage.Sets/src/mage/cards/t/TeferiMageOfZhalfir.java
index a18f1963ce9..4af6c978e89 100644
--- a/Mage.Sets/src/mage/cards/t/TeferiMageOfZhalfir.java
+++ b/Mage.Sets/src/mage/cards/t/TeferiMageOfZhalfir.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TeferiMageOfZhalfir extends CardImpl {
+public final class TeferiMageOfZhalfir extends CardImpl {
public TeferiMageOfZhalfir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TeferiTemporalArchmage.java b/Mage.Sets/src/mage/cards/t/TeferiTemporalArchmage.java
index 0fbad0c8ba1..659a1a7893a 100644
--- a/Mage.Sets/src/mage/cards/t/TeferiTemporalArchmage.java
+++ b/Mage.Sets/src/mage/cards/t/TeferiTemporalArchmage.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class TeferiTemporalArchmage extends CardImpl {
+public final class TeferiTemporalArchmage extends CardImpl {
public TeferiTemporalArchmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TeferiTimebender.java b/Mage.Sets/src/mage/cards/t/TeferiTimebender.java
index ea8b56d042b..db1545b7af0 100644
--- a/Mage.Sets/src/mage/cards/t/TeferiTimebender.java
+++ b/Mage.Sets/src/mage/cards/t/TeferiTimebender.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class TeferiTimebender extends CardImpl {
+public final class TeferiTimebender extends CardImpl {
public TeferiTimebender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisCare.java b/Mage.Sets/src/mage/cards/t/TeferisCare.java
index d7e47121a7e..60e9563e660 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisCare.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisCare.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetEnchantmentPermanent;
* @author LoneFox
*/
-public class TeferisCare extends CardImpl {
+public final class TeferisCare extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an enchantment");
private static final FilterSpell filter2 = new FilterSpell("enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisCurse.java b/Mage.Sets/src/mage/cards/t/TeferisCurse.java
index cf09f6026cc..404a52edeed 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisCurse.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisCurse.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class TeferisCurse extends CardImpl {
+public final class TeferisCurse extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisDrake.java b/Mage.Sets/src/mage/cards/t/TeferisDrake.java
index 36c52ba1a2d..5dd98e328e7 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisDrake.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisDrake.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TeferisDrake extends CardImpl {
+public final class TeferisDrake extends CardImpl {
public TeferisDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisHonorGuard.java b/Mage.Sets/src/mage/cards/t/TeferisHonorGuard.java
index 6a6c08f230a..4f7c903c62e 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisHonorGuard.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisHonorGuard.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class TeferisHonorGuard extends CardImpl {
+public final class TeferisHonorGuard extends CardImpl {
public TeferisHonorGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisIsle.java b/Mage.Sets/src/mage/cards/t/TeferisIsle.java
index 2ae8c66c148..a5899d6ea71 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisIsle.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisIsle.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class TeferisIsle extends CardImpl {
+public final class TeferisIsle extends CardImpl {
public TeferisIsle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisMoat.java b/Mage.Sets/src/mage/cards/t/TeferisMoat.java
index bb8b44f2a91..d30b12f0f4f 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisMoat.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisMoat.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author Markedagain
*/
-public class TeferisMoat extends CardImpl {
+public final class TeferisMoat extends CardImpl {
public TeferisMoat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisProtection.java b/Mage.Sets/src/mage/cards/t/TeferisProtection.java
index ec5de97c6b7..423a5b39140 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisProtection.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisProtection.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class TeferisProtection extends CardImpl {
+public final class TeferisProtection extends CardImpl {
public TeferisProtection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisPuzzleBox.java b/Mage.Sets/src/mage/cards/t/TeferisPuzzleBox.java
index 1973463669a..87ab045d6d0 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisPuzzleBox.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisPuzzleBox.java
@@ -44,7 +44,7 @@ import mage.players.Player;
* @author noxx
*
*/
-public class TeferisPuzzleBox extends CardImpl {
+public final class TeferisPuzzleBox extends CardImpl {
public TeferisPuzzleBox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisRealm.java b/Mage.Sets/src/mage/cards/t/TeferisRealm.java
index 199f382ed0b..6c5927ff8f5 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisRealm.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisRealm.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TeferisRealm extends CardImpl {
+public final class TeferisRealm extends CardImpl {
public TeferisRealm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisResponse.java b/Mage.Sets/src/mage/cards/t/TeferisResponse.java
index ecc4b02a533..1698de77159 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisResponse.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisResponse.java
@@ -47,7 +47,7 @@ import mage.target.TargetStackObject;
*
* @author AlumiuN
*/
-public class TeferisResponse extends CardImpl {
+public final class TeferisResponse extends CardImpl {
private final static FilterStackObject filter = new FilterStackObject("spell or ability an opponent controls that targets a land you control");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisSentinel.java b/Mage.Sets/src/mage/cards/t/TeferisSentinel.java
index 63e69f507fc..e27c287e1a7 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisSentinel.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisSentinel.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class TeferisSentinel extends CardImpl {
+public final class TeferisSentinel extends CardImpl {
public TeferisSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/t/TeferisVeil.java b/Mage.Sets/src/mage/cards/t/TeferisVeil.java
index 58ff55d718a..c19d57b8774 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisVeil.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisVeil.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class TeferisVeil extends CardImpl {
+public final class TeferisVeil extends CardImpl {
public TeferisVeil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Tek.java b/Mage.Sets/src/mage/cards/t/Tek.java
index aabd4f6dd2f..c8c29edc5eb 100644
--- a/Mage.Sets/src/mage/cards/t/Tek.java
+++ b/Mage.Sets/src/mage/cards/t/Tek.java
@@ -52,7 +52,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
* @author LoneFox
*/
-public class Tek extends CardImpl {
+public final class Tek extends CardImpl {
private static final FilterControlledPermanent filterPlains = new FilterControlledPermanent("Plains");
private static final FilterControlledPermanent filterIsland = new FilterControlledPermanent("Island");
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladArchers.java b/Mage.Sets/src/mage/cards/t/TelJiladArchers.java
index 82be4d79019..9a709d3fe23 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladArchers.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladArchers.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author michael.napoleon@gmail.com
*/
-public class TelJiladArchers extends CardImpl {
+public final class TelJiladArchers extends CardImpl {
public TelJiladArchers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladChosen.java b/Mage.Sets/src/mage/cards/t/TelJiladChosen.java
index 3867b4ac7f7..b02288c98d8 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladChosen.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladChosen.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author michael.napoleon@gmail.com
*/
-public class TelJiladChosen extends CardImpl {
+public final class TelJiladChosen extends CardImpl {
public TelJiladChosen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladDefiance.java b/Mage.Sets/src/mage/cards/t/TelJiladDefiance.java
index eb1ea029e50..ac10082de85 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladDefiance.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladDefiance.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author ayratn
*/
-public class TelJiladDefiance extends CardImpl {
+public final class TelJiladDefiance extends CardImpl {
public TelJiladDefiance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladExile.java b/Mage.Sets/src/mage/cards/t/TelJiladExile.java
index bf5a86e9fd1..55f8c682f7d 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladExile.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladExile.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class TelJiladExile extends CardImpl {
+public final class TelJiladExile extends CardImpl {
public TelJiladExile(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladFallen.java b/Mage.Sets/src/mage/cards/t/TelJiladFallen.java
index c448b48a023..3ce66a20b8d 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladFallen.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladFallen.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author ayratn
*/
-public class TelJiladFallen extends CardImpl {
+public final class TelJiladFallen extends CardImpl {
public TelJiladFallen (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladJustice.java b/Mage.Sets/src/mage/cards/t/TelJiladJustice.java
index 1eeec57efb5..cf8f0b1c228 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladJustice.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladJustice.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Plopman
*/
-public class TelJiladJustice extends CardImpl {
+public final class TelJiladJustice extends CardImpl {
public TelJiladJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladLifebreather.java b/Mage.Sets/src/mage/cards/t/TelJiladLifebreather.java
index e681bdb960d..58e91fdbc02 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladLifebreather.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladLifebreather.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class TelJiladLifebreather extends CardImpl {
+public final class TelJiladLifebreather extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("Forest");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladOutrider.java b/Mage.Sets/src/mage/cards/t/TelJiladOutrider.java
index 0cabb9d60ff..ca614abe73c 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladOutrider.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladOutrider.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author michael.napoleon@gmail.com
*/
-public class TelJiladOutrider extends CardImpl {
+public final class TelJiladOutrider extends CardImpl {
public TelJiladOutrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladStylus.java b/Mage.Sets/src/mage/cards/t/TelJiladStylus.java
index 66bc9d47074..e8d9d870420 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladStylus.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladStylus.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class TelJiladStylus extends CardImpl {
+public final class TelJiladStylus extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladWolf.java b/Mage.Sets/src/mage/cards/t/TelJiladWolf.java
index cea2fedd103..c6148743891 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladWolf.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladWolf.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author wetterlicht
*/
-public class TelJiladWolf extends CardImpl {
+public final class TelJiladWolf extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/t/Telekinesis.java b/Mage.Sets/src/mage/cards/t/Telekinesis.java
index 38d75164ce8..aacf9e06410 100644
--- a/Mage.Sets/src/mage/cards/t/Telekinesis.java
+++ b/Mage.Sets/src/mage/cards/t/Telekinesis.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Telekinesis extends CardImpl {
+public final class Telekinesis extends CardImpl {
public Telekinesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TelekineticBonds.java b/Mage.Sets/src/mage/cards/t/TelekineticBonds.java
index 7f77b779872..5ccb411a0ac 100644
--- a/Mage.Sets/src/mage/cards/t/TelekineticBonds.java
+++ b/Mage.Sets/src/mage/cards/t/TelekineticBonds.java
@@ -1,66 +1,66 @@
-/*
- * 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.t;
-
-import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.DiscardsACardPlayerTriggeredAbility;
-import mage.abilities.effects.common.DoIfCostPaid;
-import mage.abilities.effects.common.MayTapOrUntapTargetEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.target.TargetPermanent;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class TelekineticBonds extends CardImpl {
-
- public TelekineticBonds(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}{U}");
-
-
- // Whenever a player discards a card, you may pay {1}{U}. If you do, you may tap or untap target permanent.
- Ability ability = new DiscardsACardPlayerTriggeredAbility(new DoIfCostPaid(new MayTapOrUntapTargetEffect(), new ManaCostsImpl("{1}{U}")), true);
- ability.addTarget(new TargetPermanent());
- this.addAbility(ability);
-
- }
-
- public TelekineticBonds(final TelekineticBonds card) {
- super(card);
- }
-
- @Override
- public TelekineticBonds copy() {
- return new TelekineticBonds(this);
- }
+/*
+ * 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.t;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DiscardsACardPlayerTriggeredAbility;
+import mage.abilities.effects.common.DoIfCostPaid;
+import mage.abilities.effects.common.MayTapOrUntapTargetEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class TelekineticBonds extends CardImpl {
+
+ public TelekineticBonds(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}{U}");
+
+
+ // Whenever a player discards a card, you may pay {1}{U}. If you do, you may tap or untap target permanent.
+ Ability ability = new DiscardsACardPlayerTriggeredAbility(new DoIfCostPaid(new MayTapOrUntapTargetEffect(), new ManaCostsImpl("{1}{U}")), true);
+ ability.addTarget(new TargetPermanent());
+ this.addAbility(ability);
+
+ }
+
+ public TelekineticBonds(final TelekineticBonds card) {
+ super(card);
+ }
+
+ @Override
+ public TelekineticBonds copy() {
+ return new TelekineticBonds(this);
+ }
}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/cards/t/TelekineticSliver.java b/Mage.Sets/src/mage/cards/t/TelekineticSliver.java
index 9aa9c422fd0..06a73cac7d3 100644
--- a/Mage.Sets/src/mage/cards/t/TelekineticSliver.java
+++ b/Mage.Sets/src/mage/cards/t/TelekineticSliver.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author anonymous
*/
-public class TelekineticSliver extends CardImpl {
+public final class TelekineticSliver extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers");
diff --git a/Mage.Sets/src/mage/cards/t/TeleminPerformance.java b/Mage.Sets/src/mage/cards/t/TeleminPerformance.java
index c26b298da20..e00faf8a400 100644
--- a/Mage.Sets/src/mage/cards/t/TeleminPerformance.java
+++ b/Mage.Sets/src/mage/cards/t/TeleminPerformance.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author jeffwadsworth
*/
-public class TeleminPerformance extends CardImpl {
+public final class TeleminPerformance extends CardImpl {
public TeleminPerformance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TelepathicSpies.java b/Mage.Sets/src/mage/cards/t/TelepathicSpies.java
index dddee5290b6..37ca386325a 100644
--- a/Mage.Sets/src/mage/cards/t/TelepathicSpies.java
+++ b/Mage.Sets/src/mage/cards/t/TelepathicSpies.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
* @author LoneFox
*/
-public class TelepathicSpies extends CardImpl {
+public final class TelepathicSpies extends CardImpl {
public TelepathicSpies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Telepathy.java b/Mage.Sets/src/mage/cards/t/Telepathy.java
index 28d0359106e..5ab9cf6fd76 100644
--- a/Mage.Sets/src/mage/cards/t/Telepathy.java
+++ b/Mage.Sets/src/mage/cards/t/Telepathy.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author magenoxx_at_gmail.com
*/
-public class Telepathy extends CardImpl {
+public final class Telepathy extends CardImpl {
public Telepathy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Teleport.java b/Mage.Sets/src/mage/cards/t/Teleport.java
index 3fea5398ba5..a50b99b6979 100644
--- a/Mage.Sets/src/mage/cards/t/Teleport.java
+++ b/Mage.Sets/src/mage/cards/t/Teleport.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class Teleport extends CardImpl {
+public final class Teleport extends CardImpl {
public Teleport(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Teleportal.java b/Mage.Sets/src/mage/cards/t/Teleportal.java
index 1cec645819b..a024cde76fd 100644
--- a/Mage.Sets/src/mage/cards/t/Teleportal.java
+++ b/Mage.Sets/src/mage/cards/t/Teleportal.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class Teleportal extends CardImpl {
+public final class Teleportal extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/t/Telethopter.java b/Mage.Sets/src/mage/cards/t/Telethopter.java
index f97a971e45b..df1033df865 100644
--- a/Mage.Sets/src/mage/cards/t/Telethopter.java
+++ b/Mage.Sets/src/mage/cards/t/Telethopter.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class Telethopter extends CardImpl {
+public final class Telethopter extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/t/TelimTor.java b/Mage.Sets/src/mage/cards/t/TelimTor.java
index ab1f3edc984..8fe0d77ab01 100644
--- a/Mage.Sets/src/mage/cards/t/TelimTor.java
+++ b/Mage.Sets/src/mage/cards/t/TelimTor.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.AttackingPredicate;
*
* @author TheElk801
*/
-public class TelimTor extends CardImpl {
+public final class TelimTor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("all attacking creatures with flanking");
diff --git a/Mage.Sets/src/mage/cards/t/TelimTorsDarts.java b/Mage.Sets/src/mage/cards/t/TelimTorsDarts.java
index 10858962e95..6cfb6e50d05 100644
--- a/Mage.Sets/src/mage/cards/t/TelimTorsDarts.java
+++ b/Mage.Sets/src/mage/cards/t/TelimTorsDarts.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author nigelzor
*/
-public class TelimTorsDarts extends CardImpl {
+public final class TelimTorsDarts extends CardImpl {
public TelimTorsDarts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java b/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java
index ae732b4188d..8d1b22b9089 100644
--- a/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java
+++ b/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class TelimTorsEdict extends CardImpl {
+public final class TelimTorsEdict extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent you own or control");
diff --git a/Mage.Sets/src/mage/cards/t/TellerOfTales.java b/Mage.Sets/src/mage/cards/t/TellerOfTales.java
index cf20b96515d..cad74a6ca18 100644
--- a/Mage.Sets/src/mage/cards/t/TellerOfTales.java
+++ b/Mage.Sets/src/mage/cards/t/TellerOfTales.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author Ludwig
*/
-public class TellerOfTales extends CardImpl {
+public final class TellerOfTales extends CardImpl {
// Outcome.Benefit, "tap or untap target creature"
diff --git a/Mage.Sets/src/mage/cards/t/TellingTime.java b/Mage.Sets/src/mage/cards/t/TellingTime.java
index 4baa5c7f981..b55536b9031 100644
--- a/Mage.Sets/src/mage/cards/t/TellingTime.java
+++ b/Mage.Sets/src/mage/cards/t/TellingTime.java
@@ -48,7 +48,7 @@ import mage.target.TargetCard;
*
* @author North
*/
-public class TellingTime extends CardImpl {
+public final class TellingTime extends CardImpl {
public TellingTime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TemmetVizierOfNaktamun.java b/Mage.Sets/src/mage/cards/t/TemmetVizierOfNaktamun.java
index 24fae50531a..909d402c7af 100644
--- a/Mage.Sets/src/mage/cards/t/TemmetVizierOfNaktamun.java
+++ b/Mage.Sets/src/mage/cards/t/TemmetVizierOfNaktamun.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class TemmetVizierOfNaktamun extends CardImpl {
+public final class TemmetVizierOfNaktamun extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature token you control");
diff --git a/Mage.Sets/src/mage/cards/t/Temper.java b/Mage.Sets/src/mage/cards/t/Temper.java
index 7e004b5f958..7a82cf850c2 100644
--- a/Mage.Sets/src/mage/cards/t/Temper.java
+++ b/Mage.Sets/src/mage/cards/t/Temper.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Temper extends CardImpl {
+public final class Temper extends CardImpl {
public Temper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TemperedSteel.java b/Mage.Sets/src/mage/cards/t/TemperedSteel.java
index 74db6e0549c..f0d3c719b16 100644
--- a/Mage.Sets/src/mage/cards/t/TemperedSteel.java
+++ b/Mage.Sets/src/mage/cards/t/TemperedSteel.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Loki
*/
-public class TemperedSteel extends CardImpl {
+public final class TemperedSteel extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Artifact creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TempestCaller.java b/Mage.Sets/src/mage/cards/t/TempestCaller.java
index 7910dfa1853..d93bd13fcc8 100644
--- a/Mage.Sets/src/mage/cards/t/TempestCaller.java
+++ b/Mage.Sets/src/mage/cards/t/TempestCaller.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class TempestCaller extends CardImpl {
+public final class TempestCaller extends CardImpl {
public TempestCaller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TempestDjinn.java b/Mage.Sets/src/mage/cards/t/TempestDjinn.java
index 36023bd7205..3f44505268a 100644
--- a/Mage.Sets/src/mage/cards/t/TempestDjinn.java
+++ b/Mage.Sets/src/mage/cards/t/TempestDjinn.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author TheElk801
*/
-public class TempestDjinn extends CardImpl {
+public final class TempestDjinn extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("basic Island you control");
diff --git a/Mage.Sets/src/mage/cards/t/TempestDrake.java b/Mage.Sets/src/mage/cards/t/TempestDrake.java
index 32774966601..e19e2051fa2 100644
--- a/Mage.Sets/src/mage/cards/t/TempestDrake.java
+++ b/Mage.Sets/src/mage/cards/t/TempestDrake.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TempestDrake extends CardImpl {
+public final class TempestDrake extends CardImpl {
public TempestDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TempestOfLight.java b/Mage.Sets/src/mage/cards/t/TempestOfLight.java
index ef9434e3ac2..2312784a7d4 100644
--- a/Mage.Sets/src/mage/cards/t/TempestOfLight.java
+++ b/Mage.Sets/src/mage/cards/t/TempestOfLight.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterEnchantmentPermanent;
*
* @author Loki
*/
-public class TempestOfLight extends CardImpl {
+public final class TempestOfLight extends CardImpl {
public TempestOfLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TempestOwl.java b/Mage.Sets/src/mage/cards/t/TempestOwl.java
index 38ac51594b1..d37e5521fb3 100644
--- a/Mage.Sets/src/mage/cards/t/TempestOwl.java
+++ b/Mage.Sets/src/mage/cards/t/TempestOwl.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author Rafbill
*/
-public class TempestOwl extends CardImpl {
+public final class TempestOwl extends CardImpl {
public TempestOwl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TempleAcolyte.java b/Mage.Sets/src/mage/cards/t/TempleAcolyte.java
index 610e3de6309..a14e767f2c9 100644
--- a/Mage.Sets/src/mage/cards/t/TempleAcolyte.java
+++ b/Mage.Sets/src/mage/cards/t/TempleAcolyte.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class TempleAcolyte extends CardImpl {
+public final class TempleAcolyte extends CardImpl {
public TempleAcolyte (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TempleAltisaur.java b/Mage.Sets/src/mage/cards/t/TempleAltisaur.java
index 7cbdcaac3a1..2a9fd7c2ae4 100644
--- a/Mage.Sets/src/mage/cards/t/TempleAltisaur.java
+++ b/Mage.Sets/src/mage/cards/t/TempleAltisaur.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class TempleAltisaur extends CardImpl {
+public final class TempleAltisaur extends CardImpl {
public TempleAltisaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TempleBell.java b/Mage.Sets/src/mage/cards/t/TempleBell.java
index b5ef65a6765..172f033b664 100644
--- a/Mage.Sets/src/mage/cards/t/TempleBell.java
+++ b/Mage.Sets/src/mage/cards/t/TempleBell.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class TempleBell extends CardImpl {
+public final class TempleBell extends CardImpl {
public TempleBell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TempleElder.java b/Mage.Sets/src/mage/cards/t/TempleElder.java
index 008150fcdf7..34d240db987 100644
--- a/Mage.Sets/src/mage/cards/t/TempleElder.java
+++ b/Mage.Sets/src/mage/cards/t/TempleElder.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class TempleElder extends CardImpl {
+public final class TempleElder extends CardImpl {
public TempleElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TempleGarden.java b/Mage.Sets/src/mage/cards/t/TempleGarden.java
index b7fc019c301..b35b016d44e 100644
--- a/Mage.Sets/src/mage/cards/t/TempleGarden.java
+++ b/Mage.Sets/src/mage/cards/t/TempleGarden.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class TempleGarden extends CardImpl {
+public final class TempleGarden extends CardImpl {
public TempleGarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfAbandon.java b/Mage.Sets/src/mage/cards/t/TempleOfAbandon.java
index 71461b74880..a578cffeb54 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfAbandon.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfAbandon.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TempleOfAbandon extends CardImpl {
+public final class TempleOfAbandon extends CardImpl {
public TempleOfAbandon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfAclazotz.java b/Mage.Sets/src/mage/cards/t/TempleOfAclazotz.java
index bed4bb40879..17626838dd3 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfAclazotz.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfAclazotz.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class TempleOfAclazotz extends CardImpl {
+public final class TempleOfAclazotz extends CardImpl {
public TempleOfAclazotz(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfDeceit.java b/Mage.Sets/src/mage/cards/t/TempleOfDeceit.java
index 5da93edcf32..ad92d708adb 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfDeceit.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfDeceit.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TempleOfDeceit extends CardImpl {
+public final class TempleOfDeceit extends CardImpl {
public TempleOfDeceit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfEnlightenment.java b/Mage.Sets/src/mage/cards/t/TempleOfEnlightenment.java
index a504dd8cca0..58f9f0c1dec 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfEnlightenment.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfEnlightenment.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TempleOfEnlightenment extends CardImpl {
+public final class TempleOfEnlightenment extends CardImpl {
public TempleOfEnlightenment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfEpiphany.java b/Mage.Sets/src/mage/cards/t/TempleOfEpiphany.java
index 6ba45b6edde..ec3558f27e4 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfEpiphany.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfEpiphany.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TempleOfEpiphany extends CardImpl {
+public final class TempleOfEpiphany extends CardImpl {
public TempleOfEpiphany(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfMalady.java b/Mage.Sets/src/mage/cards/t/TempleOfMalady.java
index a06fdb3fbf6..4cddef4a879 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfMalady.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfMalady.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TempleOfMalady extends CardImpl {
+public final class TempleOfMalady extends CardImpl {
public TempleOfMalady(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfMalice.java b/Mage.Sets/src/mage/cards/t/TempleOfMalice.java
index 03e5b5e226a..ebdee915a4f 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfMalice.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfMalice.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TempleOfMalice extends CardImpl {
+public final class TempleOfMalice extends CardImpl {
public TempleOfMalice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfMystery.java b/Mage.Sets/src/mage/cards/t/TempleOfMystery.java
index 6b2712cb749..9b937bc1e37 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfMystery.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfMystery.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TempleOfMystery extends CardImpl {
+public final class TempleOfMystery extends CardImpl {
public TempleOfMystery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfPlenty.java b/Mage.Sets/src/mage/cards/t/TempleOfPlenty.java
index cc6f6fa973e..fe6d59525a3 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfPlenty.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfPlenty.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TempleOfPlenty extends CardImpl {
+public final class TempleOfPlenty extends CardImpl {
public TempleOfPlenty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfSilence.java b/Mage.Sets/src/mage/cards/t/TempleOfSilence.java
index 39d519d9bcd..0fd76525243 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfSilence.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfSilence.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TempleOfSilence extends CardImpl {
+public final class TempleOfSilence extends CardImpl {
public TempleOfSilence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfTheFalseGod.java b/Mage.Sets/src/mage/cards/t/TempleOfTheFalseGod.java
index f84c19b486c..1cba0b08cb6 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfTheFalseGod.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfTheFalseGod.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author LevelX2
*/
-public class TempleOfTheFalseGod extends CardImpl {
+public final class TempleOfTheFalseGod extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("you control five or more lands");
diff --git a/Mage.Sets/src/mage/cards/t/TempleOfTriumph.java b/Mage.Sets/src/mage/cards/t/TempleOfTriumph.java
index fd9911d655c..85d839b9845 100644
--- a/Mage.Sets/src/mage/cards/t/TempleOfTriumph.java
+++ b/Mage.Sets/src/mage/cards/t/TempleOfTriumph.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TempleOfTriumph extends CardImpl {
+public final class TempleOfTriumph extends CardImpl {
public TempleOfTriumph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalAdept.java b/Mage.Sets/src/mage/cards/t/TemporalAdept.java
index 61aa1c1b947..0a2d7146181 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalAdept.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalAdept.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class TemporalAdept extends CardImpl {
+public final class TemporalAdept extends CardImpl {
public TemporalAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalAperture.java b/Mage.Sets/src/mage/cards/t/TemporalAperture.java
index c546181720c..7c393a795cf 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalAperture.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalAperture.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class TemporalAperture extends CardImpl {
+public final class TemporalAperture extends CardImpl {
public TemporalAperture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalCascade.java b/Mage.Sets/src/mage/cards/t/TemporalCascade.java
index e85e24176c5..789e33e5f0b 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalCascade.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalCascade.java
@@ -31,13 +31,12 @@ import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.ShuffleHandGraveyardAllEffect;
import mage.abilities.keyword.EntwineAbility;
-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.game.Game;
import mage.players.Player;
@@ -45,19 +44,19 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class TemporalCascade extends CardImpl {
+public final class TemporalCascade extends CardImpl {
public TemporalCascade(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}{U}");
// Choose one - Each player shuffles their hand and graveyard into their library;
- this.getSpellAbility().addEffect(new TemporalCascadeShuffleEffect());
-
+ this.getSpellAbility().addEffect(new ShuffleHandGraveyardAllEffect());
+
// or each player draws seven cards.
Mode mode = new Mode();
mode.getEffects().add(new TemporalCascadeDrawEffect());
this.getSpellAbility().getModes().addMode(mode);
-
+
// Entwine {2}
this.addAbility(new EntwineAbility("{2}"));
}
@@ -72,42 +71,6 @@ public class TemporalCascade extends CardImpl {
}
}
-class TemporalCascadeShuffleEffect extends OneShotEffect {
-
- public TemporalCascadeShuffleEffect() {
- super(Outcome.Neutral);
- staticText = "Each player shuffles their hand and graveyard into their library";
- }
-
- public TemporalCascadeShuffleEffect(final TemporalCascadeShuffleEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player sourcePlayer = game.getPlayer(source.getControllerId());
- for (UUID playerId: game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- for (Card card: player.getHand().getCards(game)) {
- card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true);
- }
- for (Card card: player.getGraveyard().getCards(game)) {
- card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true);
- }
- player.shuffleLibrary(source, game);
-
- }
- }
- return true;
- }
-
- @Override
- public TemporalCascadeShuffleEffect copy() {
- return new TemporalCascadeShuffleEffect(this);
- }
-}
-
class TemporalCascadeDrawEffect extends OneShotEffect {
public TemporalCascadeDrawEffect() {
@@ -123,11 +86,11 @@ class TemporalCascadeDrawEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player sourcePlayer = game.getPlayer(source.getControllerId());
game.getState().handleSimultaneousEvent(game); // needed here so state based triggered effects
- for (UUID playerId: game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
+ for (UUID playerId : game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
player.drawCards(7, game);
- }
+ }
}
return true;
}
@@ -136,4 +99,4 @@ class TemporalCascadeDrawEffect extends OneShotEffect {
public TemporalCascadeDrawEffect copy() {
return new TemporalCascadeDrawEffect(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/t/TemporalDistortion.java b/Mage.Sets/src/mage/cards/t/TemporalDistortion.java
index 302059905e2..c4a9f544581 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalDistortion.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalDistortion.java
@@ -55,7 +55,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class TemporalDistortion extends CardImpl {
+public final class TemporalDistortion extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a creature or land");
private static final FilterPermanent filter2 = new FilterPermanent("permanents with hourglass counters on them");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalEddy.java b/Mage.Sets/src/mage/cards/t/TemporalEddy.java
index 09021da632d..21fe4941438 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalEddy.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalEddy.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author nigelzor
*/
-public class TemporalEddy extends CardImpl {
+public final class TemporalEddy extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or land");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalExtortion.java b/Mage.Sets/src/mage/cards/t/TemporalExtortion.java
index 5ccb9c510be..957d35cc1de 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalExtortion.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalExtortion.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TemporalExtortion extends CardImpl {
+public final class TemporalExtortion extends CardImpl {
public TemporalExtortion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalFissure.java b/Mage.Sets/src/mage/cards/t/TemporalFissure.java
index e439350384d..f085cbb55f9 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalFissure.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalFissure.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class TemporalFissure extends CardImpl {
+public final class TemporalFissure extends CardImpl {
public TemporalFissure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalIsolation.java b/Mage.Sets/src/mage/cards/t/TemporalIsolation.java
index e48706316da..d1ac10dd5dc 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalIsolation.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalIsolation.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TemporalIsolation extends CardImpl {
+public final class TemporalIsolation extends CardImpl {
public TemporalIsolation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalMachinations.java b/Mage.Sets/src/mage/cards/t/TemporalMachinations.java
index 5a4855e1ecd..328b61fd960 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalMachinations.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalMachinations.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TemporalMachinations extends CardImpl {
+public final class TemporalMachinations extends CardImpl {
public TemporalMachinations(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalManipulation.java b/Mage.Sets/src/mage/cards/t/TemporalManipulation.java
index b73882ec55c..9c262dfae24 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalManipulation.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalManipulation.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class TemporalManipulation extends CardImpl {
+public final class TemporalManipulation extends CardImpl {
public TemporalManipulation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalMastery.java b/Mage.Sets/src/mage/cards/t/TemporalMastery.java
index 713933b5c00..5c162221fe6 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalMastery.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalMastery.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
/**
* @author noxx
*/
-public class TemporalMastery extends CardImpl {
+public final class TemporalMastery extends CardImpl {
public TemporalMastery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalSpring.java b/Mage.Sets/src/mage/cards/t/TemporalSpring.java
index c972feb104e..b4dca6e8bcb 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalSpring.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalSpring.java
@@ -37,7 +37,7 @@ import mage.target.TargetPermanent;
/**
* @author Loki
*/
-public class TemporalSpring extends CardImpl {
+public final class TemporalSpring extends CardImpl {
public TemporalSpring(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TemporalTrespass.java b/Mage.Sets/src/mage/cards/t/TemporalTrespass.java
index 918f81ea645..1d23113d050 100644
--- a/Mage.Sets/src/mage/cards/t/TemporalTrespass.java
+++ b/Mage.Sets/src/mage/cards/t/TemporalTrespass.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class TemporalTrespass extends CardImpl {
+public final class TemporalTrespass extends CardImpl {
public TemporalTrespass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{8}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TemporaryInsanity.java b/Mage.Sets/src/mage/cards/t/TemporaryInsanity.java
index a81490af799..b53718c4612 100644
--- a/Mage.Sets/src/mage/cards/t/TemporaryInsanity.java
+++ b/Mage.Sets/src/mage/cards/t/TemporaryInsanity.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author FenrisulfrX
*/
-public class TemporaryInsanity extends CardImpl {
+public final class TemporaryInsanity extends CardImpl {
public TemporaryInsanity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TemporaryTruce.java b/Mage.Sets/src/mage/cards/t/TemporaryTruce.java
index 654fdaefbf4..d2c0f70da10 100644
--- a/Mage.Sets/src/mage/cards/t/TemporaryTruce.java
+++ b/Mage.Sets/src/mage/cards/t/TemporaryTruce.java
@@ -41,7 +41,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class TemporaryTruce extends CardImpl {
+public final class TemporaryTruce extends CardImpl {
public TemporaryTruce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TemptWithDiscovery.java b/Mage.Sets/src/mage/cards/t/TemptWithDiscovery.java
index ccf47c1169f..51443e571ae 100644
--- a/Mage.Sets/src/mage/cards/t/TemptWithDiscovery.java
+++ b/Mage.Sets/src/mage/cards/t/TemptWithDiscovery.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class TemptWithDiscovery extends CardImpl {
+public final class TemptWithDiscovery extends CardImpl {
public TemptWithDiscovery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TemptWithGlory.java b/Mage.Sets/src/mage/cards/t/TemptWithGlory.java
index 510f6f1a9dc..9d600c3217d 100644
--- a/Mage.Sets/src/mage/cards/t/TemptWithGlory.java
+++ b/Mage.Sets/src/mage/cards/t/TemptWithGlory.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TemptWithGlory extends CardImpl {
+public final class TemptWithGlory extends CardImpl {
public TemptWithGlory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TemptWithImmortality.java b/Mage.Sets/src/mage/cards/t/TemptWithImmortality.java
index a34a7a9564e..866dae46472 100644
--- a/Mage.Sets/src/mage/cards/t/TemptWithImmortality.java
+++ b/Mage.Sets/src/mage/cards/t/TemptWithImmortality.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class TemptWithImmortality extends CardImpl {
+public final class TemptWithImmortality extends CardImpl {
public TemptWithImmortality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TemptWithReflections.java b/Mage.Sets/src/mage/cards/t/TemptWithReflections.java
index 93316a1dbfd..e3d4f24554c 100644
--- a/Mage.Sets/src/mage/cards/t/TemptWithReflections.java
+++ b/Mage.Sets/src/mage/cards/t/TemptWithReflections.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class TemptWithReflections extends CardImpl {
+public final class TemptWithReflections extends CardImpl {
public TemptWithReflections(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TemptWithVengeance.java b/Mage.Sets/src/mage/cards/t/TemptWithVengeance.java
index d3c6174d98f..c0d8927ce95 100644
--- a/Mage.Sets/src/mage/cards/t/TemptWithVengeance.java
+++ b/Mage.Sets/src/mage/cards/t/TemptWithVengeance.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TemptWithVengeance extends CardImpl {
+public final class TemptWithVengeance extends CardImpl {
public TemptWithVengeance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TemptingLicid.java b/Mage.Sets/src/mage/cards/t/TemptingLicid.java
index 06e9d08e6b7..922bebb21cd 100644
--- a/Mage.Sets/src/mage/cards/t/TemptingLicid.java
+++ b/Mage.Sets/src/mage/cards/t/TemptingLicid.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class TemptingLicid extends CardImpl {
+public final class TemptingLicid extends CardImpl {
public TemptingLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TemptingWurm.java b/Mage.Sets/src/mage/cards/t/TemptingWurm.java
index 13ece8370f2..74467b3483b 100644
--- a/Mage.Sets/src/mage/cards/t/TemptingWurm.java
+++ b/Mage.Sets/src/mage/cards/t/TemptingWurm.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInHand;
*
* @author Eirkei
*/
-public class TemptingWurm extends CardImpl {
+public final class TemptingWurm extends CardImpl {
public TemptingWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TemurAscendancy.java b/Mage.Sets/src/mage/cards/t/TemurAscendancy.java
index fcd76191c0e..a959ea2b0e7 100644
--- a/Mage.Sets/src/mage/cards/t/TemurAscendancy.java
+++ b/Mage.Sets/src/mage/cards/t/TemurAscendancy.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author LevelX2
*/
-public class TemurAscendancy extends CardImpl {
+public final class TemurAscendancy extends CardImpl {
final private static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TemurBanner.java b/Mage.Sets/src/mage/cards/t/TemurBanner.java
index ee5f0d8a2f9..f5d0c8f8207 100644
--- a/Mage.Sets/src/mage/cards/t/TemurBanner.java
+++ b/Mage.Sets/src/mage/cards/t/TemurBanner.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class TemurBanner extends CardImpl {
+public final class TemurBanner extends CardImpl {
public TemurBanner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TemurBattleRage.java b/Mage.Sets/src/mage/cards/t/TemurBattleRage.java
index 893df14b03f..2db8862f8c0 100644
--- a/Mage.Sets/src/mage/cards/t/TemurBattleRage.java
+++ b/Mage.Sets/src/mage/cards/t/TemurBattleRage.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class TemurBattleRage extends CardImpl {
+public final class TemurBattleRage extends CardImpl {
private final static String rule = "
Ferocious — That creature also gains trample until end of turn if you control a creature with power 4 or greater";
diff --git a/Mage.Sets/src/mage/cards/t/TemurCharger.java b/Mage.Sets/src/mage/cards/t/TemurCharger.java
index 900ca99a552..2b5011f60de 100644
--- a/Mage.Sets/src/mage/cards/t/TemurCharger.java
+++ b/Mage.Sets/src/mage/cards/t/TemurCharger.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TemurCharger extends CardImpl {
+public final class TemurCharger extends CardImpl {
private static final FilterCard filter = new FilterCard("a green card in your hand");
diff --git a/Mage.Sets/src/mage/cards/t/TemurCharm.java b/Mage.Sets/src/mage/cards/t/TemurCharm.java
index cf9306775a3..620201566a8 100644
--- a/Mage.Sets/src/mage/cards/t/TemurCharm.java
+++ b/Mage.Sets/src/mage/cards/t/TemurCharm.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TemurCharm extends CardImpl {
+public final class TemurCharm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
private static final FilterCreaturePermanent filterCantBlock = new FilterCreaturePermanent("Creatures with power 3 or less");
diff --git a/Mage.Sets/src/mage/cards/t/TemurRunemark.java b/Mage.Sets/src/mage/cards/t/TemurRunemark.java
index 4568f1c1b9d..50c95b4d336 100644
--- a/Mage.Sets/src/mage/cards/t/TemurRunemark.java
+++ b/Mage.Sets/src/mage/cards/t/TemurRunemark.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class TemurRunemark extends CardImpl {
+public final class TemurRunemark extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("as long as you control a blue or red permanent");
diff --git a/Mage.Sets/src/mage/cards/t/TemurSabertooth.java b/Mage.Sets/src/mage/cards/t/TemurSabertooth.java
index 221984bdc26..88cae3984ae 100644
--- a/Mage.Sets/src/mage/cards/t/TemurSabertooth.java
+++ b/Mage.Sets/src/mage/cards/t/TemurSabertooth.java
@@ -54,7 +54,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class TemurSabertooth extends CardImpl {
+public final class TemurSabertooth extends CardImpl {
public TemurSabertooth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TemurWarShaman.java b/Mage.Sets/src/mage/cards/t/TemurWarShaman.java
index ca847b372c8..647091ddde7 100644
--- a/Mage.Sets/src/mage/cards/t/TemurWarShaman.java
+++ b/Mage.Sets/src/mage/cards/t/TemurWarShaman.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TemurWarShaman extends CardImpl {
+public final class TemurWarShaman extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/t/TenaciousDead.java b/Mage.Sets/src/mage/cards/t/TenaciousDead.java
index deaaa1a9661..95a19e9d3c4 100644
--- a/Mage.Sets/src/mage/cards/t/TenaciousDead.java
+++ b/Mage.Sets/src/mage/cards/t/TenaciousDead.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TenaciousDead extends CardImpl {
+public final class TenaciousDead extends CardImpl {
public TenaciousDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TenaciousHunter.java b/Mage.Sets/src/mage/cards/t/TenaciousHunter.java
index e12d9e982e5..e5660150e3a 100644
--- a/Mage.Sets/src/mage/cards/t/TenaciousHunter.java
+++ b/Mage.Sets/src/mage/cards/t/TenaciousHunter.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author spjspj
*/
-public class TenaciousHunter extends CardImpl {
+public final class TenaciousHunter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature has a -1/-1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/t/Tenacity.java b/Mage.Sets/src/mage/cards/t/Tenacity.java
index 4122bbd77c3..6df303aa136 100644
--- a/Mage.Sets/src/mage/cards/t/Tenacity.java
+++ b/Mage.Sets/src/mage/cards/t/Tenacity.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class Tenacity extends CardImpl {
+public final class Tenacity extends CardImpl {
public Tenacity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TendershootDryad.java b/Mage.Sets/src/mage/cards/t/TendershootDryad.java
index 854527451db..c965c3b5f79 100644
--- a/Mage.Sets/src/mage/cards/t/TendershootDryad.java
+++ b/Mage.Sets/src/mage/cards/t/TendershootDryad.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author LevelX2
*/
-public class TendershootDryad extends CardImpl {
+public final class TendershootDryad extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Saprolings you control");
diff --git a/Mage.Sets/src/mage/cards/t/TendoIceBridge.java b/Mage.Sets/src/mage/cards/t/TendoIceBridge.java
index f90e52cd566..b22c453428f 100644
--- a/Mage.Sets/src/mage/cards/t/TendoIceBridge.java
+++ b/Mage.Sets/src/mage/cards/t/TendoIceBridge.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class TendoIceBridge extends CardImpl {
+public final class TendoIceBridge extends CardImpl {
public TendoIceBridge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TendrilsOfAgony.java b/Mage.Sets/src/mage/cards/t/TendrilsOfAgony.java
index 9b4fbfc959d..dbf6ac8b205 100644
--- a/Mage.Sets/src/mage/cards/t/TendrilsOfAgony.java
+++ b/Mage.Sets/src/mage/cards/t/TendrilsOfAgony.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class TendrilsOfAgony extends CardImpl {
+public final class TendrilsOfAgony extends CardImpl {
public TendrilsOfAgony(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TendrilsOfCorruption.java b/Mage.Sets/src/mage/cards/t/TendrilsOfCorruption.java
index 79cba785b9b..a80e03663a3 100644
--- a/Mage.Sets/src/mage/cards/t/TendrilsOfCorruption.java
+++ b/Mage.Sets/src/mage/cards/t/TendrilsOfCorruption.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class TendrilsOfCorruption extends CardImpl {
+public final class TendrilsOfCorruption extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Swamp you control");
diff --git a/Mage.Sets/src/mage/cards/t/TendrilsOfDespair.java b/Mage.Sets/src/mage/cards/t/TendrilsOfDespair.java
index 180d75bd336..d9b5bff556f 100644
--- a/Mage.Sets/src/mage/cards/t/TendrilsOfDespair.java
+++ b/Mage.Sets/src/mage/cards/t/TendrilsOfDespair.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class TendrilsOfDespair extends CardImpl {
+public final class TendrilsOfDespair extends CardImpl {
public TendrilsOfDespair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TenebTheHarvester.java b/Mage.Sets/src/mage/cards/t/TenebTheHarvester.java
index cbe649dae62..35970015027 100644
--- a/Mage.Sets/src/mage/cards/t/TenebTheHarvester.java
+++ b/Mage.Sets/src/mage/cards/t/TenebTheHarvester.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class TenebTheHarvester extends CardImpl {
+public final class TenebTheHarvester extends CardImpl {
public TenebTheHarvester(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TenementCrasher.java b/Mage.Sets/src/mage/cards/t/TenementCrasher.java
index 9bbdf1b6e7b..150c2d15d38 100644
--- a/Mage.Sets/src/mage/cards/t/TenementCrasher.java
+++ b/Mage.Sets/src/mage/cards/t/TenementCrasher.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TenementCrasher extends CardImpl {
+public final class TenementCrasher extends CardImpl {
public TenementCrasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TenzaGodosMaul.java b/Mage.Sets/src/mage/cards/t/TenzaGodosMaul.java
index 74891f03431..f991673bd0c 100644
--- a/Mage.Sets/src/mage/cards/t/TenzaGodosMaul.java
+++ b/Mage.Sets/src/mage/cards/t/TenzaGodosMaul.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
* @author LevelX
*/
-public class TenzaGodosMaul extends CardImpl {
+public final class TenzaGodosMaul extends CardImpl {
private static final String rule1 = "As long as it's legendary, it gets an additional +2/+2";
private static final String rule2 = "As long as it's red, it has trample.";
diff --git a/Mage.Sets/src/mage/cards/t/Tephraderm.java b/Mage.Sets/src/mage/cards/t/Tephraderm.java
index 6aa259420d5..1b5f8deb347 100644
--- a/Mage.Sets/src/mage/cards/t/Tephraderm.java
+++ b/Mage.Sets/src/mage/cards/t/Tephraderm.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Quercitron
*/
-public class Tephraderm extends CardImpl {
+public final class Tephraderm extends CardImpl {
public Tephraderm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TerashisCry.java b/Mage.Sets/src/mage/cards/t/TerashisCry.java
index 09777538132..b96b55027ee 100644
--- a/Mage.Sets/src/mage/cards/t/TerashisCry.java
+++ b/Mage.Sets/src/mage/cards/t/TerashisCry.java
@@ -44,7 +44,7 @@ import java.util.UUID;
* @author LevelX
*/
-public class TerashisCry extends CardImpl {
+public final class TerashisCry extends CardImpl {
public TerashisCry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TerashisGrasp.java b/Mage.Sets/src/mage/cards/t/TerashisGrasp.java
index 4fcbd6d61c9..6e7e0c5dccc 100644
--- a/Mage.Sets/src/mage/cards/t/TerashisGrasp.java
+++ b/Mage.Sets/src/mage/cards/t/TerashisGrasp.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class TerashisGrasp extends CardImpl {
+public final class TerashisGrasp extends CardImpl {
public TerashisGrasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TerashisVerdict.java b/Mage.Sets/src/mage/cards/t/TerashisVerdict.java
index 0ab6dc4ab09..b01189b2be3 100644
--- a/Mage.Sets/src/mage/cards/t/TerashisVerdict.java
+++ b/Mage.Sets/src/mage/cards/t/TerashisVerdict.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author Loki
*/
-public class TerashisVerdict extends CardImpl {
+public final class TerashisVerdict extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature with power 3 or less");
diff --git a/Mage.Sets/src/mage/cards/t/Terastodon.java b/Mage.Sets/src/mage/cards/t/Terastodon.java
index c794d400546..c593c2674cc 100644
--- a/Mage.Sets/src/mage/cards/t/Terastodon.java
+++ b/Mage.Sets/src/mage/cards/t/Terastodon.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author jeffwadsworth
*/
-public class Terastodon extends CardImpl {
+public final class Terastodon extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature permanent");
diff --git a/Mage.Sets/src/mage/cards/t/TeremkoGriffin.java b/Mage.Sets/src/mage/cards/t/TeremkoGriffin.java
index c74e9a1d402..83c9b1a3403 100644
--- a/Mage.Sets/src/mage/cards/t/TeremkoGriffin.java
+++ b/Mage.Sets/src/mage/cards/t/TeremkoGriffin.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class TeremkoGriffin extends CardImpl {
+public final class TeremkoGriffin extends CardImpl {
public TeremkoGriffin (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TerentatekCub.java b/Mage.Sets/src/mage/cards/t/TerentatekCub.java
index 0676091a2d7..8baa0f7ca79 100644
--- a/Mage.Sets/src/mage/cards/t/TerentatekCub.java
+++ b/Mage.Sets/src/mage/cards/t/TerentatekCub.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class TerentatekCub extends CardImpl {
+public final class TerentatekCub extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Hunter or Rogue card");
diff --git a/Mage.Sets/src/mage/cards/t/TerminalMoraine.java b/Mage.Sets/src/mage/cards/t/TerminalMoraine.java
index 4f960ddd4d1..92fa2e4003a 100644
--- a/Mage.Sets/src/mage/cards/t/TerminalMoraine.java
+++ b/Mage.Sets/src/mage/cards/t/TerminalMoraine.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author anonymous
*/
-public class TerminalMoraine extends CardImpl {
+public final class TerminalMoraine extends CardImpl {
public TerminalMoraine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
@@ -55,7 +55,7 @@ public class TerminalMoraine extends CardImpl {
// {tap}: Add {C}.
this.addAbility(new ColorlessManaAbility());
// {2}, {tap}, Sacrifice Terminal Moraine: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true), new ManaCostsImpl<>("{2}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), new ManaCostsImpl<>("{2}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/t/Terminate.java b/Mage.Sets/src/mage/cards/t/Terminate.java
index 7abdde9f0f4..63960a1835e 100644
--- a/Mage.Sets/src/mage/cards/t/Terminate.java
+++ b/Mage.Sets/src/mage/cards/t/Terminate.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Terminate extends CardImpl {
+public final class Terminate extends CardImpl {
public Terminate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Terminus.java b/Mage.Sets/src/mage/cards/t/Terminus.java
index 7a9236fcfd3..ad291bcc00e 100644
--- a/Mage.Sets/src/mage/cards/t/Terminus.java
+++ b/Mage.Sets/src/mage/cards/t/Terminus.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class Terminus extends CardImpl {
+public final class Terminus extends CardImpl {
public Terminus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TerohsFaithful.java b/Mage.Sets/src/mage/cards/t/TerohsFaithful.java
index 447ff860ff9..647183e5bc4 100644
--- a/Mage.Sets/src/mage/cards/t/TerohsFaithful.java
+++ b/Mage.Sets/src/mage/cards/t/TerohsFaithful.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TerohsFaithful extends CardImpl {
+public final class TerohsFaithful extends CardImpl {
public TerohsFaithful(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TerohsVanguard.java b/Mage.Sets/src/mage/cards/t/TerohsVanguard.java
index 6b2acca1ec9..64f4b9fd7a1 100644
--- a/Mage.Sets/src/mage/cards/t/TerohsVanguard.java
+++ b/Mage.Sets/src/mage/cards/t/TerohsVanguard.java
@@ -52,7 +52,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LoneFox
*/
-public class TerohsVanguard extends CardImpl {
+public final class TerohsVanguard extends CardImpl {
public TerohsVanguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TerraEternal.java b/Mage.Sets/src/mage/cards/t/TerraEternal.java
index d9ff98048db..5de7451e547 100644
--- a/Mage.Sets/src/mage/cards/t/TerraEternal.java
+++ b/Mage.Sets/src/mage/cards/t/TerraEternal.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author North
*/
-public class TerraEternal extends CardImpl {
+public final class TerraEternal extends CardImpl {
public TerraEternal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TerraRavager.java b/Mage.Sets/src/mage/cards/t/TerraRavager.java
index 29785c5c9fb..95490c69c09 100644
--- a/Mage.Sets/src/mage/cards/t/TerraRavager.java
+++ b/Mage.Sets/src/mage/cards/t/TerraRavager.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class TerraRavager extends CardImpl {
+public final class TerraRavager extends CardImpl {
public TerraRavager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TerraStomper.java b/Mage.Sets/src/mage/cards/t/TerraStomper.java
index 6de4e4631ed..59d99a0b372 100644
--- a/Mage.Sets/src/mage/cards/t/TerraStomper.java
+++ b/Mage.Sets/src/mage/cards/t/TerraStomper.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class TerraStomper extends CardImpl {
+public final class TerraStomper extends CardImpl {
public TerraStomper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/Terraformer.java b/Mage.Sets/src/mage/cards/t/Terraformer.java
index 67b7d312ff8..1ddee3186b7 100644
--- a/Mage.Sets/src/mage/cards/t/Terraformer.java
+++ b/Mage.Sets/src/mage/cards/t/Terraformer.java
@@ -62,7 +62,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class Terraformer extends CardImpl {
+public final class Terraformer extends CardImpl {
public Terraformer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TerrainElemental.java b/Mage.Sets/src/mage/cards/t/TerrainElemental.java
index 7d58ad2020d..ba8b25b164a 100644
--- a/Mage.Sets/src/mage/cards/t/TerrainElemental.java
+++ b/Mage.Sets/src/mage/cards/t/TerrainElemental.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TerrainElemental extends CardImpl {
+public final class TerrainElemental extends CardImpl {
public TerrainElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TerrainGenerator.java b/Mage.Sets/src/mage/cards/t/TerrainGenerator.java
index c661ce064a2..198b3fe7db3 100644
--- a/Mage.Sets/src/mage/cards/t/TerrainGenerator.java
+++ b/Mage.Sets/src/mage/cards/t/TerrainGenerator.java
@@ -32,28 +32,29 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
-import mage.filter.common.FilterLandCard;
+import mage.filter.StaticFilters;
/**
*
* @author fireshoes
*/
-public class TerrainGenerator extends CardImpl {
+public final class TerrainGenerator extends CardImpl {
public TerrainGenerator(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
+ super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
// {tap}: Add {C}.
this.addAbility(new ColorlessManaAbility());
-
- // {2}, {tap}: You may put a basic land card from your hand onto the battlefield tapped.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutLandFromHandOntoBattlefieldEffect(true, FilterLandCard.basicLandCard()), new ManaCostsImpl("{2}"));
+
+ // {2}, {T}: You may put a basic land card from your hand onto the battlefield tapped.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_BASIC_LAND_A, false, true), new ManaCostsImpl("{2}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/t/TerramorphicExpanse.java b/Mage.Sets/src/mage/cards/t/TerramorphicExpanse.java
index 5a4239c0926..da3be02a0f6 100644
--- a/Mage.Sets/src/mage/cards/t/TerramorphicExpanse.java
+++ b/Mage.Sets/src/mage/cards/t/TerramorphicExpanse.java
@@ -45,14 +45,14 @@ import mage.abilities.common.SimpleActivatedAbility;
*
* @author BetaSteward_at_googlemail.com
*/
-public class TerramorphicExpanse extends CardImpl {
+public final class TerramorphicExpanse extends CardImpl {
public TerramorphicExpanse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
Ability ability = new SimpleActivatedAbility(
Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/t/Terrarion.java b/Mage.Sets/src/mage/cards/t/Terrarion.java
index a7153c8ad8e..12bfa05cb07 100644
--- a/Mage.Sets/src/mage/cards/t/Terrarion.java
+++ b/Mage.Sets/src/mage/cards/t/Terrarion.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class Terrarion extends CardImpl {
+public final class Terrarion extends CardImpl {
public Terrarion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/t/Terravore.java b/Mage.Sets/src/mage/cards/t/Terravore.java
index 3c24ef54b22..6d28d2632d7 100644
--- a/Mage.Sets/src/mage/cards/t/Terravore.java
+++ b/Mage.Sets/src/mage/cards/t/Terravore.java
@@ -45,7 +45,7 @@ import mage.filter.common.FilterLandCard;
*
* @author LevelX2
*/
-public class Terravore extends CardImpl {
+public final class Terravore extends CardImpl {
public Terravore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TerrifyingPresence.java b/Mage.Sets/src/mage/cards/t/TerrifyingPresence.java
index fbfd08e7ce0..889e4351984 100644
--- a/Mage.Sets/src/mage/cards/t/TerrifyingPresence.java
+++ b/Mage.Sets/src/mage/cards/t/TerrifyingPresence.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TerrifyingPresence extends CardImpl {
+public final class TerrifyingPresence extends CardImpl {
public TerrifyingPresence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TerritorialAllosaurus.java b/Mage.Sets/src/mage/cards/t/TerritorialAllosaurus.java
index 15cb108a5f7..f611b3bd857 100644
--- a/Mage.Sets/src/mage/cards/t/TerritorialAllosaurus.java
+++ b/Mage.Sets/src/mage/cards/t/TerritorialAllosaurus.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TerritorialAllosaurus extends CardImpl {
+public final class TerritorialAllosaurus extends CardImpl {
public TerritorialAllosaurus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TerritorialBaloth.java b/Mage.Sets/src/mage/cards/t/TerritorialBaloth.java
index 340ba1bb5cf..102f6989e75 100644
--- a/Mage.Sets/src/mage/cards/t/TerritorialBaloth.java
+++ b/Mage.Sets/src/mage/cards/t/TerritorialBaloth.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class TerritorialBaloth extends CardImpl {
+public final class TerritorialBaloth extends CardImpl {
public TerritorialBaloth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TerritorialDispute.java b/Mage.Sets/src/mage/cards/t/TerritorialDispute.java
index 31c913cf770..083943228ea 100644
--- a/Mage.Sets/src/mage/cards/t/TerritorialDispute.java
+++ b/Mage.Sets/src/mage/cards/t/TerritorialDispute.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class TerritorialDispute extends CardImpl {
+public final class TerritorialDispute extends CardImpl {
public TerritorialDispute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TerritorialGorger.java b/Mage.Sets/src/mage/cards/t/TerritorialGorger.java
index d5067d576ec..3c011a9bfe8 100644
--- a/Mage.Sets/src/mage/cards/t/TerritorialGorger.java
+++ b/Mage.Sets/src/mage/cards/t/TerritorialGorger.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class TerritorialGorger extends CardImpl {
+public final class TerritorialGorger extends CardImpl {
public TerritorialGorger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TerritorialHammerskull.java b/Mage.Sets/src/mage/cards/t/TerritorialHammerskull.java
index 41c29ee8fa0..c8cbfaf56d6 100644
--- a/Mage.Sets/src/mage/cards/t/TerritorialHammerskull.java
+++ b/Mage.Sets/src/mage/cards/t/TerritorialHammerskull.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class TerritorialHammerskull extends CardImpl {
+public final class TerritorialHammerskull extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/t/TerritorialHellkite.java b/Mage.Sets/src/mage/cards/t/TerritorialHellkite.java
index 054de1aadcc..e5a705d0e12 100644
--- a/Mage.Sets/src/mage/cards/t/TerritorialHellkite.java
+++ b/Mage.Sets/src/mage/cards/t/TerritorialHellkite.java
@@ -61,7 +61,7 @@ import mage.watchers.Watcher;
*
* @author TheElk801
*/
-public class TerritorialHellkite extends CardImpl {
+public final class TerritorialHellkite extends CardImpl {
public TerritorialHellkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TerritorialRoc.java b/Mage.Sets/src/mage/cards/t/TerritorialRoc.java
index 620c2914e20..bce909b5f46 100644
--- a/Mage.Sets/src/mage/cards/t/TerritorialRoc.java
+++ b/Mage.Sets/src/mage/cards/t/TerritorialRoc.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class TerritorialRoc extends CardImpl {
+public final class TerritorialRoc extends CardImpl {
public TerritorialRoc(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Terror.java b/Mage.Sets/src/mage/cards/t/Terror.java
index 5840b45873a..dcf7d958f6a 100644
--- a/Mage.Sets/src/mage/cards/t/Terror.java
+++ b/Mage.Sets/src/mage/cards/t/Terror.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class Terror extends CardImpl {
+public final class Terror extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("nonartifact, nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java b/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java
index 3c2189926e4..8a01b9f7520 100644
--- a/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java
+++ b/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java
@@ -53,7 +53,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class TerrorOfKruinPass extends CardImpl {
+public final class TerrorOfKruinPass extends CardImpl {
private static final String ruleText = "Werewolves you control have menace. (They can't be blocked except by two or more creatures.)";
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf you control");
diff --git a/Mage.Sets/src/mage/cards/t/TerrorOfTheFairgrounds.java b/Mage.Sets/src/mage/cards/t/TerrorOfTheFairgrounds.java
index 83df5c4024c..3328d81783c 100644
--- a/Mage.Sets/src/mage/cards/t/TerrorOfTheFairgrounds.java
+++ b/Mage.Sets/src/mage/cards/t/TerrorOfTheFairgrounds.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class TerrorOfTheFairgrounds extends CardImpl {
+public final class TerrorOfTheFairgrounds extends CardImpl {
public TerrorOfTheFairgrounds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TerrusWurm.java b/Mage.Sets/src/mage/cards/t/TerrusWurm.java
index 6fe5ea9ff1e..791481eae76 100644
--- a/Mage.Sets/src/mage/cards/t/TerrusWurm.java
+++ b/Mage.Sets/src/mage/cards/t/TerrusWurm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TerrusWurm extends CardImpl {
+public final class TerrusWurm extends CardImpl {
public TerrusWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TesharAncestorsApostle.java b/Mage.Sets/src/mage/cards/t/TesharAncestorsApostle.java
index 513b9fc0ea4..f8d5d26877e 100644
--- a/Mage.Sets/src/mage/cards/t/TesharAncestorsApostle.java
+++ b/Mage.Sets/src/mage/cards/t/TesharAncestorsApostle.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author L_J
*/
-public class TesharAncestorsApostle extends CardImpl {
+public final class TesharAncestorsApostle extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("creature card with converted mana cost 3 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/t/TestOfEndurance.java b/Mage.Sets/src/mage/cards/t/TestOfEndurance.java
index 632cdd3fe03..a11885471f9 100644
--- a/Mage.Sets/src/mage/cards/t/TestOfEndurance.java
+++ b/Mage.Sets/src/mage/cards/t/TestOfEndurance.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author fireshoes
*/
-public class TestOfEndurance extends CardImpl {
+public final class TestOfEndurance extends CardImpl {
public TestOfEndurance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TestOfFaith.java b/Mage.Sets/src/mage/cards/t/TestOfFaith.java
index 79939e1d9a0..1bd06951a10 100644
--- a/Mage.Sets/src/mage/cards/t/TestOfFaith.java
+++ b/Mage.Sets/src/mage/cards/t/TestOfFaith.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TestOfFaith extends CardImpl {
+public final class TestOfFaith extends CardImpl {
public TestOfFaith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TestamentOfFaith.java b/Mage.Sets/src/mage/cards/t/TestamentOfFaith.java
index ccb4f8b6306..3ec4297c00c 100644
--- a/Mage.Sets/src/mage/cards/t/TestamentOfFaith.java
+++ b/Mage.Sets/src/mage/cards/t/TestamentOfFaith.java
@@ -54,7 +54,7 @@ import mage.game.permanent.token.Token;
*
* @author cbt33
*/
-public class TestamentOfFaith extends CardImpl {
+public final class TestamentOfFaith extends CardImpl {
public TestamentOfFaith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TetheredGriffin.java b/Mage.Sets/src/mage/cards/t/TetheredGriffin.java
index 83fc16d74ef..c38263bc8c3 100644
--- a/Mage.Sets/src/mage/cards/t/TetheredGriffin.java
+++ b/Mage.Sets/src/mage/cards/t/TetheredGriffin.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class TetheredGriffin extends CardImpl {
+public final class TetheredGriffin extends CardImpl {
public TetheredGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TetheredSkirge.java b/Mage.Sets/src/mage/cards/t/TetheredSkirge.java
index e8f2f12ee45..ffeb2210cb3 100644
--- a/Mage.Sets/src/mage/cards/t/TetheredSkirge.java
+++ b/Mage.Sets/src/mage/cards/t/TetheredSkirge.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class TetheredSkirge extends CardImpl {
+public final class TetheredSkirge extends CardImpl {
public TetheredSkirge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TethmosHighPriest.java b/Mage.Sets/src/mage/cards/t/TethmosHighPriest.java
index a45d5c7a2fc..0a7d656b980 100644
--- a/Mage.Sets/src/mage/cards/t/TethmosHighPriest.java
+++ b/Mage.Sets/src/mage/cards/t/TethmosHighPriest.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class TethmosHighPriest extends CardImpl {
+public final class TethmosHighPriest extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with converted mana cost 2 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/t/Tetravus.java b/Mage.Sets/src/mage/cards/t/Tetravus.java
index db694d32a15..5af1b5c4ca5 100644
--- a/Mage.Sets/src/mage/cards/t/Tetravus.java
+++ b/Mage.Sets/src/mage/cards/t/Tetravus.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author MarcoMarin
*/
-public class Tetravus extends CardImpl {
+public final class Tetravus extends CardImpl {
public Tetravus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/t/TetsukoUmezawaFugitive.java b/Mage.Sets/src/mage/cards/t/TetsukoUmezawaFugitive.java
index 02a94496381..974f6ace76d 100644
--- a/Mage.Sets/src/mage/cards/t/TetsukoUmezawaFugitive.java
+++ b/Mage.Sets/src/mage/cards/t/TetsukoUmezawaFugitive.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.ToughnessPredicate;
* @author JRHerlehy
* Created on 4/7/18.
*/
-public class TetsukoUmezawaFugitive extends CardImpl {
+public final class TetsukoUmezawaFugitive extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/t/TetsuoUmezawa.java b/Mage.Sets/src/mage/cards/t/TetsuoUmezawa.java
index 067764fbacd..9e283de4d11 100644
--- a/Mage.Sets/src/mage/cards/t/TetsuoUmezawa.java
+++ b/Mage.Sets/src/mage/cards/t/TetsuoUmezawa.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author JRHerlehy
*/
-public class TetsuoUmezawa extends CardImpl {
+public final class TetsuoUmezawa extends CardImpl {
private static final FilterCreaturePermanent creatureFilter = new FilterCreaturePermanent("tapped or blocking creature");
diff --git a/Mage.Sets/src/mage/cards/t/TetzimocPrimalDeath.java b/Mage.Sets/src/mage/cards/t/TetzimocPrimalDeath.java
index 751f6f6b3aa..0461e3da71c 100644
--- a/Mage.Sets/src/mage/cards/t/TetzimocPrimalDeath.java
+++ b/Mage.Sets/src/mage/cards/t/TetzimocPrimalDeath.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TetzimocPrimalDeath extends CardImpl {
+public final class TetzimocPrimalDeath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature your opponents control with a prey counter on it");
diff --git a/Mage.Sets/src/mage/cards/t/TeysaEnvoyOfGhosts.java b/Mage.Sets/src/mage/cards/t/TeysaEnvoyOfGhosts.java
index 5be5d74ee51..44e760b0ea5 100644
--- a/Mage.Sets/src/mage/cards/t/TeysaEnvoyOfGhosts.java
+++ b/Mage.Sets/src/mage/cards/t/TeysaEnvoyOfGhosts.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class TeysaEnvoyOfGhosts extends CardImpl {
+public final class TeysaEnvoyOfGhosts extends CardImpl {
public TeysaEnvoyOfGhosts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TeysaOrzhovScion.java b/Mage.Sets/src/mage/cards/t/TeysaOrzhovScion.java
index 5dcf136d095..e1c291a0a03 100644
--- a/Mage.Sets/src/mage/cards/t/TeysaOrzhovScion.java
+++ b/Mage.Sets/src/mage/cards/t/TeysaOrzhovScion.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class TeysaOrzhovScion extends CardImpl {
+public final class TeysaOrzhovScion extends CardImpl {
private final static FilterControlledCreaturePermanent filterWhite = new FilterControlledCreaturePermanent("three white creatures");
private final static FilterCreaturePermanent filterBlack = new FilterCreaturePermanent("another black creature you control");
diff --git a/Mage.Sets/src/mage/cards/t/TezzeretAgentOfBolas.java b/Mage.Sets/src/mage/cards/t/TezzeretAgentOfBolas.java
index 38541a31da9..9c60b77a0e1 100644
--- a/Mage.Sets/src/mage/cards/t/TezzeretAgentOfBolas.java
+++ b/Mage.Sets/src/mage/cards/t/TezzeretAgentOfBolas.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class TezzeretAgentOfBolas extends CardImpl {
+public final class TezzeretAgentOfBolas extends CardImpl {
private static final FilterCard filter = new FilterCard("an artifact card");
diff --git a/Mage.Sets/src/mage/cards/t/TezzeretMasterOfMetal.java b/Mage.Sets/src/mage/cards/t/TezzeretMasterOfMetal.java
index 25ec748e6f2..a1627fabbd4 100644
--- a/Mage.Sets/src/mage/cards/t/TezzeretMasterOfMetal.java
+++ b/Mage.Sets/src/mage/cards/t/TezzeretMasterOfMetal.java
@@ -62,7 +62,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class TezzeretMasterOfMetal extends CardImpl {
+public final class TezzeretMasterOfMetal extends CardImpl {
public TezzeretMasterOfMetal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TezzeretTheSchemer.java b/Mage.Sets/src/mage/cards/t/TezzeretTheSchemer.java
index 8fd3ceaf3ee..dbe72e6d637 100644
--- a/Mage.Sets/src/mage/cards/t/TezzeretTheSchemer.java
+++ b/Mage.Sets/src/mage/cards/t/TezzeretTheSchemer.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author JRHerlehy
*/
-public class TezzeretTheSchemer extends CardImpl {
+public final class TezzeretTheSchemer extends CardImpl {
public TezzeretTheSchemer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java b/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java
index 189b9ba6d6d..c91e028318e 100644
--- a/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java
+++ b/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class TezzeretTheSeeker extends CardImpl {
+public final class TezzeretTheSeeker extends CardImpl {
public TezzeretTheSeeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TezzeretsAmbition.java b/Mage.Sets/src/mage/cards/t/TezzeretsAmbition.java
index 224bb6f0ee0..f57fbb907a0 100644
--- a/Mage.Sets/src/mage/cards/t/TezzeretsAmbition.java
+++ b/Mage.Sets/src/mage/cards/t/TezzeretsAmbition.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class TezzeretsAmbition extends CardImpl {
+public final class TezzeretsAmbition extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control no artifacts");
diff --git a/Mage.Sets/src/mage/cards/t/TezzeretsBetrayal.java b/Mage.Sets/src/mage/cards/t/TezzeretsBetrayal.java
index cf01e06620b..e2e40c30faa 100644
--- a/Mage.Sets/src/mage/cards/t/TezzeretsBetrayal.java
+++ b/Mage.Sets/src/mage/cards/t/TezzeretsBetrayal.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class TezzeretsBetrayal extends CardImpl {
+public final class TezzeretsBetrayal extends CardImpl {
private final static FilterCard filter = new FilterCard("Tezzeret, Master of Metal");
diff --git a/Mage.Sets/src/mage/cards/t/TezzeretsGambit.java b/Mage.Sets/src/mage/cards/t/TezzeretsGambit.java
index dfda38142d4..0968eb377f5 100644
--- a/Mage.Sets/src/mage/cards/t/TezzeretsGambit.java
+++ b/Mage.Sets/src/mage/cards/t/TezzeretsGambit.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class TezzeretsGambit extends CardImpl {
+public final class TezzeretsGambit extends CardImpl {
public TezzeretsGambit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U/P}");
diff --git a/Mage.Sets/src/mage/cards/t/TezzeretsSimulacrum.java b/Mage.Sets/src/mage/cards/t/TezzeretsSimulacrum.java
index 46e0e464da7..a63c16e55e6 100644
--- a/Mage.Sets/src/mage/cards/t/TezzeretsSimulacrum.java
+++ b/Mage.Sets/src/mage/cards/t/TezzeretsSimulacrum.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class TezzeretsSimulacrum extends CardImpl {
+public final class TezzeretsSimulacrum extends CardImpl {
public TezzeretsSimulacrum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TezzeretsTouch.java b/Mage.Sets/src/mage/cards/t/TezzeretsTouch.java
index 14de72c7165..2698a0620d1 100644
--- a/Mage.Sets/src/mage/cards/t/TezzeretsTouch.java
+++ b/Mage.Sets/src/mage/cards/t/TezzeretsTouch.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author fireshoes
*/
-public class TezzeretsTouch extends CardImpl {
+public final class TezzeretsTouch extends CardImpl {
public TezzeretsTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThadaAdelAcquisitor.java b/Mage.Sets/src/mage/cards/t/ThadaAdelAcquisitor.java
index 2d8ce52d980..1e20b31bcf5 100644
--- a/Mage.Sets/src/mage/cards/t/ThadaAdelAcquisitor.java
+++ b/Mage.Sets/src/mage/cards/t/ThadaAdelAcquisitor.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class ThadaAdelAcquisitor extends CardImpl {
+public final class ThadaAdelAcquisitor extends CardImpl {
public ThadaAdelAcquisitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThalakosDeceiver.java b/Mage.Sets/src/mage/cards/t/ThalakosDeceiver.java
index d45ac521d26..6e05f802816 100644
--- a/Mage.Sets/src/mage/cards/t/ThalakosDeceiver.java
+++ b/Mage.Sets/src/mage/cards/t/ThalakosDeceiver.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ThalakosDeceiver extends CardImpl {
+public final class ThalakosDeceiver extends CardImpl {
public ThalakosDeceiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThalakosDreamsower.java b/Mage.Sets/src/mage/cards/t/ThalakosDreamsower.java
index 65461e1e70b..5685a581ec5 100644
--- a/Mage.Sets/src/mage/cards/t/ThalakosDreamsower.java
+++ b/Mage.Sets/src/mage/cards/t/ThalakosDreamsower.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ThalakosDreamsower extends CardImpl {
+public final class ThalakosDreamsower extends CardImpl {
public ThalakosDreamsower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThalakosDrifters.java b/Mage.Sets/src/mage/cards/t/ThalakosDrifters.java
index 05af3f5e0a7..544d306c9c5 100644
--- a/Mage.Sets/src/mage/cards/t/ThalakosDrifters.java
+++ b/Mage.Sets/src/mage/cards/t/ThalakosDrifters.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ThalakosDrifters extends CardImpl {
+public final class ThalakosDrifters extends CardImpl {
public ThalakosDrifters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThalakosLowlands.java b/Mage.Sets/src/mage/cards/t/ThalakosLowlands.java
index 22359c47223..a3fc893301b 100644
--- a/Mage.Sets/src/mage/cards/t/ThalakosLowlands.java
+++ b/Mage.Sets/src/mage/cards/t/ThalakosLowlands.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class ThalakosLowlands extends CardImpl {
+public final class ThalakosLowlands extends CardImpl {
public ThalakosLowlands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/t/ThalakosMistfolk.java b/Mage.Sets/src/mage/cards/t/ThalakosMistfolk.java
index cadf64212db..bfcb2ea4b79 100644
--- a/Mage.Sets/src/mage/cards/t/ThalakosMistfolk.java
+++ b/Mage.Sets/src/mage/cards/t/ThalakosMistfolk.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class ThalakosMistfolk extends CardImpl {
+public final class ThalakosMistfolk extends CardImpl {
public ThalakosMistfolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThalakosScout.java b/Mage.Sets/src/mage/cards/t/ThalakosScout.java
index 49c8ec00422..076f39367ba 100644
--- a/Mage.Sets/src/mage/cards/t/ThalakosScout.java
+++ b/Mage.Sets/src/mage/cards/t/ThalakosScout.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ThalakosScout extends CardImpl {
+public final class ThalakosScout extends CardImpl {
public ThalakosScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThalakosSeer.java b/Mage.Sets/src/mage/cards/t/ThalakosSeer.java
index 04786202aca..a51f824f934 100644
--- a/Mage.Sets/src/mage/cards/t/ThalakosSeer.java
+++ b/Mage.Sets/src/mage/cards/t/ThalakosSeer.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ThalakosSeer extends CardImpl {
+public final class ThalakosSeer extends CardImpl {
public ThalakosSeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThalakosSentry.java b/Mage.Sets/src/mage/cards/t/ThalakosSentry.java
index b3d910630c8..776b07f22c4 100644
--- a/Mage.Sets/src/mage/cards/t/ThalakosSentry.java
+++ b/Mage.Sets/src/mage/cards/t/ThalakosSentry.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ThalakosSentry extends CardImpl {
+public final class ThalakosSentry extends CardImpl {
public ThalakosSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThaliaGuardianOfThraben.java b/Mage.Sets/src/mage/cards/t/ThaliaGuardianOfThraben.java
index 3d526bcc35f..dc21631368c 100644
--- a/Mage.Sets/src/mage/cards/t/ThaliaGuardianOfThraben.java
+++ b/Mage.Sets/src/mage/cards/t/ThaliaGuardianOfThraben.java
@@ -45,7 +45,7 @@ import mage.util.CardUtil;
*
* @author BetaSteward
*/
-public class ThaliaGuardianOfThraben extends CardImpl {
+public final class ThaliaGuardianOfThraben extends CardImpl {
public ThaliaGuardianOfThraben(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThaliaHereticCathar.java b/Mage.Sets/src/mage/cards/t/ThaliaHereticCathar.java
index 492f39008ea..c819a1cb793 100644
--- a/Mage.Sets/src/mage/cards/t/ThaliaHereticCathar.java
+++ b/Mage.Sets/src/mage/cards/t/ThaliaHereticCathar.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class ThaliaHereticCathar extends CardImpl {
+public final class ThaliaHereticCathar extends CardImpl {
public ThaliaHereticCathar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThaliasLancers.java b/Mage.Sets/src/mage/cards/t/ThaliasLancers.java
index e46b8123d18..6b731552d93 100644
--- a/Mage.Sets/src/mage/cards/t/ThaliasLancers.java
+++ b/Mage.Sets/src/mage/cards/t/ThaliasLancers.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class ThaliasLancers extends CardImpl {
+public final class ThaliasLancers extends CardImpl {
private static final FilterCard filter = new FilterCard("legendary card");
diff --git a/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java b/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java
index 106ffcadc11..5c5ec233490 100644
--- a/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java
+++ b/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class ThaliasLieutenant extends CardImpl {
+public final class ThaliasLieutenant extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("each other Human you control");
diff --git a/Mage.Sets/src/mage/cards/t/Thallid.java b/Mage.Sets/src/mage/cards/t/Thallid.java
index 888207c7e8a..e4a89000696 100644
--- a/Mage.Sets/src/mage/cards/t/Thallid.java
+++ b/Mage.Sets/src/mage/cards/t/Thallid.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author Loki
*/
-public class Thallid extends CardImpl {
+public final class Thallid extends CardImpl {
public Thallid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThallidDevourer.java b/Mage.Sets/src/mage/cards/t/ThallidDevourer.java
index e78284a2374..6611ca979c8 100644
--- a/Mage.Sets/src/mage/cards/t/ThallidDevourer.java
+++ b/Mage.Sets/src/mage/cards/t/ThallidDevourer.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class ThallidDevourer extends CardImpl {
+public final class ThallidDevourer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling");
static {
diff --git a/Mage.Sets/src/mage/cards/t/ThallidGerminator.java b/Mage.Sets/src/mage/cards/t/ThallidGerminator.java
index 686b0b0e15a..eb5fe4e4951 100644
--- a/Mage.Sets/src/mage/cards/t/ThallidGerminator.java
+++ b/Mage.Sets/src/mage/cards/t/ThallidGerminator.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ThallidGerminator extends CardImpl {
+public final class ThallidGerminator extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling");
static {
diff --git a/Mage.Sets/src/mage/cards/t/ThallidOmnivore.java b/Mage.Sets/src/mage/cards/t/ThallidOmnivore.java
index ccd8e8788db..1c9033a8877 100644
--- a/Mage.Sets/src/mage/cards/t/ThallidOmnivore.java
+++ b/Mage.Sets/src/mage/cards/t/ThallidOmnivore.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class ThallidOmnivore extends CardImpl {
+public final class ThallidOmnivore extends CardImpl {
public ThallidOmnivore(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThallidShellDweller.java b/Mage.Sets/src/mage/cards/t/ThallidShellDweller.java
index b82dcdfa775..75860c9c322 100644
--- a/Mage.Sets/src/mage/cards/t/ThallidShellDweller.java
+++ b/Mage.Sets/src/mage/cards/t/ThallidShellDweller.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author LevelX2
*/
-public class ThallidShellDweller extends CardImpl {
+public final class ThallidShellDweller extends CardImpl {
public ThallidShellDweller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThallidSoothsayer.java b/Mage.Sets/src/mage/cards/t/ThallidSoothsayer.java
index 1094a41d943..5943d484459 100644
--- a/Mage.Sets/src/mage/cards/t/ThallidSoothsayer.java
+++ b/Mage.Sets/src/mage/cards/t/ThallidSoothsayer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author TheElk801
*/
-public class ThallidSoothsayer extends CardImpl {
+public final class ThallidSoothsayer extends CardImpl {
public ThallidSoothsayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThassaGodOfTheSea.java b/Mage.Sets/src/mage/cards/t/ThassaGodOfTheSea.java
index 170ee99a96c..77257a448e1 100644
--- a/Mage.Sets/src/mage/cards/t/ThassaGodOfTheSea.java
+++ b/Mage.Sets/src/mage/cards/t/ThassaGodOfTheSea.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
* @author LevelX2
*/
-public class ThassaGodOfTheSea extends CardImpl {
+public final class ThassaGodOfTheSea extends CardImpl {
public ThassaGodOfTheSea(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThassasBounty.java b/Mage.Sets/src/mage/cards/t/ThassasBounty.java
index 270c80ee997..e9fc78d9770 100644
--- a/Mage.Sets/src/mage/cards/t/ThassasBounty.java
+++ b/Mage.Sets/src/mage/cards/t/ThassasBounty.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class ThassasBounty extends CardImpl {
+public final class ThassasBounty extends CardImpl {
public ThassasBounty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThassasDevourer.java b/Mage.Sets/src/mage/cards/t/ThassasDevourer.java
index 6f8ea30067d..bfca55651d9 100644
--- a/Mage.Sets/src/mage/cards/t/ThassasDevourer.java
+++ b/Mage.Sets/src/mage/cards/t/ThassasDevourer.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class ThassasDevourer extends CardImpl {
+public final class ThassasDevourer extends CardImpl {
public ThassasDevourer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThassasEmissary.java b/Mage.Sets/src/mage/cards/t/ThassasEmissary.java
index 1a514cec804..beb8d6e5f67 100644
--- a/Mage.Sets/src/mage/cards/t/ThassasEmissary.java
+++ b/Mage.Sets/src/mage/cards/t/ThassasEmissary.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class ThassasEmissary extends CardImpl {
+public final class ThassasEmissary extends CardImpl {
public ThassasEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThassasIre.java b/Mage.Sets/src/mage/cards/t/ThassasIre.java
index 27b2446dede..978034bf47f 100644
--- a/Mage.Sets/src/mage/cards/t/ThassasIre.java
+++ b/Mage.Sets/src/mage/cards/t/ThassasIre.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ThassasIre extends CardImpl {
+public final class ThassasIre extends CardImpl {
public ThassasIre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThassasRebuff.java b/Mage.Sets/src/mage/cards/t/ThassasRebuff.java
index c8b55f9a9a8..0dc63975026 100644
--- a/Mage.Sets/src/mage/cards/t/ThassasRebuff.java
+++ b/Mage.Sets/src/mage/cards/t/ThassasRebuff.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class ThassasRebuff extends CardImpl {
+public final class ThassasRebuff extends CardImpl {
public ThassasRebuff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThatWhichWasTaken.java b/Mage.Sets/src/mage/cards/t/ThatWhichWasTaken.java
index c33f6a1a584..797c4f72f82 100644
--- a/Mage.Sets/src/mage/cards/t/ThatWhichWasTaken.java
+++ b/Mage.Sets/src/mage/cards/t/ThatWhichWasTaken.java
@@ -54,7 +54,7 @@ import mage.target.TargetPermanent;
/**
* @author LevelX2
*/
-public class ThatWhichWasTaken extends CardImpl {
+public final class ThatWhichWasTaken extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent other than That Which Was Taken");
diff --git a/Mage.Sets/src/mage/cards/t/ThatcherRevolt.java b/Mage.Sets/src/mage/cards/t/ThatcherRevolt.java
index 39b4fcbdac1..2be756c591e 100644
--- a/Mage.Sets/src/mage/cards/t/ThatcherRevolt.java
+++ b/Mage.Sets/src/mage/cards/t/ThatcherRevolt.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author North
*/
-public class ThatcherRevolt extends CardImpl {
+public final class ThatcherRevolt extends CardImpl {
public ThatcherRevolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThaumaticCompass.java b/Mage.Sets/src/mage/cards/t/ThaumaticCompass.java
index e8272c81036..38ba5c597bd 100644
--- a/Mage.Sets/src/mage/cards/t/ThaumaticCompass.java
+++ b/Mage.Sets/src/mage/cards/t/ThaumaticCompass.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author TheElk801
*/
-public class ThaumaticCompass extends CardImpl {
+public final class ThaumaticCompass extends CardImpl {
public ThaumaticCompass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
@@ -63,7 +63,7 @@ public class ThaumaticCompass extends CardImpl {
// {3}, {T}: Search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new GenericManaCost(3));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/t/Thaumatog.java b/Mage.Sets/src/mage/cards/t/Thaumatog.java
index 854330fcc25..ef4f7767276 100644
--- a/Mage.Sets/src/mage/cards/t/Thaumatog.java
+++ b/Mage.Sets/src/mage/cards/t/Thaumatog.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class Thaumatog extends CardImpl {
+public final class Thaumatog extends CardImpl {
public Thaumatog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThawingGlaciers.java b/Mage.Sets/src/mage/cards/t/ThawingGlaciers.java
index e955749cce9..61a72119064 100644
--- a/Mage.Sets/src/mage/cards/t/ThawingGlaciers.java
+++ b/Mage.Sets/src/mage/cards/t/ThawingGlaciers.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class ThawingGlaciers extends CardImpl {
+public final class ThawingGlaciers extends CardImpl {
public ThawingGlaciers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
@@ -59,7 +59,7 @@ public class ThawingGlaciers extends CardImpl {
this.addAbility(new EntersBattlefieldTappedAbility());
// {1}, {tap}: Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library. Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, Outcome.PutLandInPlay), new GenericManaCost(1));
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, Outcome.PutLandInPlay), new GenericManaCost(1));
ability.addCost(new TapSourceCost());
ability.addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextCleanupDelayedTriggeredAbility(new ReturnToHandSourceEffect(true))));
diff --git a/Mage.Sets/src/mage/cards/t/TheAbyss.java b/Mage.Sets/src/mage/cards/t/TheAbyss.java
index 6195c42ba0d..a54aac23a16 100644
--- a/Mage.Sets/src/mage/cards/t/TheAbyss.java
+++ b/Mage.Sets/src/mage/cards/t/TheAbyss.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class TheAbyss extends CardImpl {
+public final class TheAbyss extends CardImpl {
public TheAbyss(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TheAntiquitiesWar.java b/Mage.Sets/src/mage/cards/t/TheAntiquitiesWar.java
index 7e47eda9f71..0656447ef63 100644
--- a/Mage.Sets/src/mage/cards/t/TheAntiquitiesWar.java
+++ b/Mage.Sets/src/mage/cards/t/TheAntiquitiesWar.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class TheAntiquitiesWar extends CardImpl {
+public final class TheAntiquitiesWar extends CardImpl {
public TheAntiquitiesWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TheBattleOfEndor.java b/Mage.Sets/src/mage/cards/t/TheBattleOfEndor.java
index 82cd358d255..8fd0e232baa 100644
--- a/Mage.Sets/src/mage/cards/t/TheBattleOfEndor.java
+++ b/Mage.Sets/src/mage/cards/t/TheBattleOfEndor.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class TheBattleOfEndor extends CardImpl {
+public final class TheBattleOfEndor extends CardImpl {
public TheBattleOfEndor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{X}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TheBattleOfGeonosis.java b/Mage.Sets/src/mage/cards/t/TheBattleOfGeonosis.java
index 4203f668cda..2ada1573d89 100644
--- a/Mage.Sets/src/mage/cards/t/TheBattleOfGeonosis.java
+++ b/Mage.Sets/src/mage/cards/t/TheBattleOfGeonosis.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class TheBattleOfGeonosis extends CardImpl {
+public final class TheBattleOfGeonosis extends CardImpl {
public TheBattleOfGeonosis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TheBattleOfHoth.java b/Mage.Sets/src/mage/cards/t/TheBattleOfHoth.java
index dccb5ba1ffb..8b605822531 100644
--- a/Mage.Sets/src/mage/cards/t/TheBattleOfHoth.java
+++ b/Mage.Sets/src/mage/cards/t/TheBattleOfHoth.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.ATATToken;
*
* @author Styxo
*/
-public class TheBattleOfHoth extends CardImpl {
+public final class TheBattleOfHoth extends CardImpl {
public TheBattleOfHoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TheBattleOfNaboo.java b/Mage.Sets/src/mage/cards/t/TheBattleOfNaboo.java
index 9b08a0b6489..325f3cfb230 100644
--- a/Mage.Sets/src/mage/cards/t/TheBattleOfNaboo.java
+++ b/Mage.Sets/src/mage/cards/t/TheBattleOfNaboo.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class TheBattleOfNaboo extends CardImpl {
+public final class TheBattleOfNaboo extends CardImpl {
public TheBattleOfNaboo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{X}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TheBattleOfYavin.java b/Mage.Sets/src/mage/cards/t/TheBattleOfYavin.java
index e6402301846..eac1ad959f3 100644
--- a/Mage.Sets/src/mage/cards/t/TheBattleOfYavin.java
+++ b/Mage.Sets/src/mage/cards/t/TheBattleOfYavin.java
@@ -47,10 +47,10 @@ import mage.target.common.TargetOpponent;
*
* @author Styxo
*/
-public class TheBattleOfYavin extends CardImpl {
+public final class TheBattleOfYavin extends CardImpl {
public TheBattleOfYavin(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{B}");
// For each nonland permanent target opponent controls, that player sacrificies it unless he or she pays X life.
this.getSpellAbility().addEffect(new TheBattleOfYavinEffect());
@@ -102,7 +102,7 @@ class TheBattleOfYavinEffect extends OneShotEffect {
int playerLife = opponent.getLife();
for (Permanent permanent : permanents) {
String message = "Pay " + amount + " life? If you don't, " + permanent.getName() + " will be sacrificed.";
- if (playerLife - amount - lifePaid >= 0 && opponent != null && opponent.chooseUse(Outcome.Neutral, message, source, game)) {
+ if (playerLife - amount - lifePaid >= 0 && opponent.chooseUse(Outcome.Neutral, message, source, game)) {
game.informPlayers(opponent.getLogName() + " pays " + amount + " life. He will not sacrifice " + permanent.getName());
lifePaid += amount;
} else {
diff --git a/Mage.Sets/src/mage/cards/t/TheBigIdea.java b/Mage.Sets/src/mage/cards/t/TheBigIdea.java
index 96a9f59f6f1..88545a18f3b 100644
--- a/Mage.Sets/src/mage/cards/t/TheBigIdea.java
+++ b/Mage.Sets/src/mage/cards/t/TheBigIdea.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author spjspj
*/
-public class TheBigIdea extends CardImpl {
+public final class TheBigIdea extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.BRAINIAC, "Brainiac creatures");
diff --git a/Mage.Sets/src/mage/cards/t/TheBrute.java b/Mage.Sets/src/mage/cards/t/TheBrute.java
index fa8b14576a4..11ed035750a 100644
--- a/Mage.Sets/src/mage/cards/t/TheBrute.java
+++ b/Mage.Sets/src/mage/cards/t/TheBrute.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Derpthemeus
*/
-public class TheBrute extends CardImpl {
+public final class TheBrute extends CardImpl {
public TheBrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TheChainVeil.java b/Mage.Sets/src/mage/cards/t/TheChainVeil.java
index 1f576ad019a..55048b16360 100644
--- a/Mage.Sets/src/mage/cards/t/TheChainVeil.java
+++ b/Mage.Sets/src/mage/cards/t/TheChainVeil.java
@@ -52,7 +52,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class TheChainVeil extends CardImpl {
+public final class TheChainVeil extends CardImpl {
public TheChainVeil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TheCheeseStandsAlone.java b/Mage.Sets/src/mage/cards/t/TheCheeseStandsAlone.java
index 2f8b7b80c78..1f9a711c1d2 100644
--- a/Mage.Sets/src/mage/cards/t/TheCheeseStandsAlone.java
+++ b/Mage.Sets/src/mage/cards/t/TheCheeseStandsAlone.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class TheCheeseStandsAlone extends CardImpl {
+public final class TheCheeseStandsAlone extends CardImpl {
public TheCheeseStandsAlone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TheCrowdGoesWild.java b/Mage.Sets/src/mage/cards/t/TheCrowdGoesWild.java
new file mode 100644
index 00000000000..5c364f8540f
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/t/TheCrowdGoesWild.java
@@ -0,0 +1,92 @@
+/*
+ * 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.t;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.SpellAbility;
+import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.abilities.effects.common.counter.AddCountersTargetEffect;
+import mage.abilities.keyword.AssistAbility;
+import mage.abilities.keyword.TrampleAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.counters.CounterType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.CounterPredicate;
+import mage.game.Game;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class TheCrowdGoesWild extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature with a +1/+1 counter on it");
+
+ static {
+ filter.add(new CounterPredicate(CounterType.P1P1));
+ }
+
+ public TheCrowdGoesWild(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}");
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // Support X (Put a +1/+1 counter on each of up to X target creatures.)
+ this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance())
+ .setText("Support X (Put a +1/+1 counter on each of up to X target creatures.)
")
+ );
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent());
+
+ // Each creature with a +1/+1 counter on it gains trample until end of turn.
+ this.getSpellAbility().addEffect(new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, filter));
+ }
+
+ public TheCrowdGoesWild(final TheCrowdGoesWild card) {
+ super(card);
+ }
+
+ @Override
+ public void adjustTargets(Ability ability, Game game) {
+ if (ability instanceof SpellAbility) {
+ ability.getTargets().clear();
+ int xValue = ability.getManaCostsToPay().getX();
+ ability.addTarget(new TargetCreaturePermanent(0, xValue));
+ }
+ }
+
+ @Override
+ public TheCrowdGoesWild copy() {
+ return new TheCrowdGoesWild(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/t/TheDeathStar.java b/Mage.Sets/src/mage/cards/t/TheDeathStar.java
index 0b4abe0ee8a..e380b853629 100644
--- a/Mage.Sets/src/mage/cards/t/TheDeathStar.java
+++ b/Mage.Sets/src/mage/cards/t/TheDeathStar.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class TheDeathStar extends CardImpl {
+public final class TheDeathStar extends CardImpl {
public TheDeathStar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TheEldestReborn.java b/Mage.Sets/src/mage/cards/t/TheEldestReborn.java
index 269ff46c412..152cb4e423b 100644
--- a/Mage.Sets/src/mage/cards/t/TheEldestReborn.java
+++ b/Mage.Sets/src/mage/cards/t/TheEldestReborn.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author LevelX2
*/
-public class TheEldestReborn extends CardImpl {
+public final class TheEldestReborn extends CardImpl {
private static final FilterCard filter = new FilterCard("creature or planeswalker card from a graveyard");
diff --git a/Mage.Sets/src/mage/cards/t/TheFallen.java b/Mage.Sets/src/mage/cards/t/TheFallen.java
index 9bc74459422..d86ab58d352 100644
--- a/Mage.Sets/src/mage/cards/t/TheFallen.java
+++ b/Mage.Sets/src/mage/cards/t/TheFallen.java
@@ -48,7 +48,7 @@ import mage.watchers.Watcher;
*
* @author L_J
*/
-public class TheFallen extends CardImpl {
+public final class TheFallen extends CardImpl {
public TheFallen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TheFirstEruption.java b/Mage.Sets/src/mage/cards/t/TheFirstEruption.java
index 1b3a03a68fe..a697b8c4786 100644
--- a/Mage.Sets/src/mage/cards/t/TheFirstEruption.java
+++ b/Mage.Sets/src/mage/cards/t/TheFirstEruption.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class TheFirstEruption extends CardImpl {
+public final class TheFirstEruption extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature without flying");
diff --git a/Mage.Sets/src/mage/cards/t/TheFlameOfKeld.java b/Mage.Sets/src/mage/cards/t/TheFlameOfKeld.java
index a2b30e363fe..89ef6f9e993 100644
--- a/Mage.Sets/src/mage/cards/t/TheFlameOfKeld.java
+++ b/Mage.Sets/src/mage/cards/t/TheFlameOfKeld.java
@@ -46,7 +46,7 @@ import mage.util.CardUtil;
*
* @author JRHerlehy
*/
-public class TheFlameOfKeld extends CardImpl {
+public final class TheFlameOfKeld extends CardImpl {
public TheFlameOfKeld(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TheGitrogMonster.java b/Mage.Sets/src/mage/cards/t/TheGitrogMonster.java
index 42d2668ad5d..9e0103a53b7 100644
--- a/Mage.Sets/src/mage/cards/t/TheGitrogMonster.java
+++ b/Mage.Sets/src/mage/cards/t/TheGitrogMonster.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class TheGitrogMonster extends CardImpl {
+public final class TheGitrogMonster extends CardImpl {
public TheGitrogMonster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TheGreatAurora.java b/Mage.Sets/src/mage/cards/t/TheGreatAurora.java
index 532cbad601a..68088972027 100644
--- a/Mage.Sets/src/mage/cards/t/TheGreatAurora.java
+++ b/Mage.Sets/src/mage/cards/t/TheGreatAurora.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class TheGreatAurora extends CardImpl {
+public final class TheGreatAurora extends CardImpl {
public TheGreatAurora(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TheHive.java b/Mage.Sets/src/mage/cards/t/TheHive.java
index 3fb26a03212..1c2642906b8 100644
--- a/Mage.Sets/src/mage/cards/t/TheHive.java
+++ b/Mage.Sets/src/mage/cards/t/TheHive.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.WaspToken;
*
* @author Loki
*/
-public class TheHive extends CardImpl {
+public final class TheHive extends CardImpl {
public TheHive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/t/TheImmortalSun.java b/Mage.Sets/src/mage/cards/t/TheImmortalSun.java
index 8b303e3e38e..44b7cc0e471 100644
--- a/Mage.Sets/src/mage/cards/t/TheImmortalSun.java
+++ b/Mage.Sets/src/mage/cards/t/TheImmortalSun.java
@@ -55,7 +55,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class TheImmortalSun extends CardImpl {
+public final class TheImmortalSun extends CardImpl {
public TheImmortalSun(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/t/TheLadyOfTheMountain.java b/Mage.Sets/src/mage/cards/t/TheLadyOfTheMountain.java
index 11906d11c80..f0ed5623f58 100644
--- a/Mage.Sets/src/mage/cards/t/TheLadyOfTheMountain.java
+++ b/Mage.Sets/src/mage/cards/t/TheLadyOfTheMountain.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class TheLadyOfTheMountain extends CardImpl {
+public final class TheLadyOfTheMountain extends CardImpl {
public TheLadyOfTheMountain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TheLocustGod.java b/Mage.Sets/src/mage/cards/t/TheLocustGod.java
index 593b85c5bb6..a1623085977 100644
--- a/Mage.Sets/src/mage/cards/t/TheLocustGod.java
+++ b/Mage.Sets/src/mage/cards/t/TheLocustGod.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class TheLocustGod extends CardImpl {
+public final class TheLocustGod extends CardImpl {
public TheLocustGod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TheMendingOfDominaria.java b/Mage.Sets/src/mage/cards/t/TheMendingOfDominaria.java
index cd0f5faade7..ced65a2ec03 100644
--- a/Mage.Sets/src/mage/cards/t/TheMendingOfDominaria.java
+++ b/Mage.Sets/src/mage/cards/t/TheMendingOfDominaria.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class TheMendingOfDominaria extends CardImpl {
+public final class TheMendingOfDominaria extends CardImpl {
public TheMendingOfDominaria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TheMimeoplasm.java b/Mage.Sets/src/mage/cards/t/TheMimeoplasm.java
index 8955cb3efb5..a571851b8f6 100644
--- a/Mage.Sets/src/mage/cards/t/TheMimeoplasm.java
+++ b/Mage.Sets/src/mage/cards/t/TheMimeoplasm.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author emerald000
*/
-public class TheMimeoplasm extends CardImpl {
+public final class TheMimeoplasm extends CardImpl {
public TheMimeoplasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TheMirariConjecture.java b/Mage.Sets/src/mage/cards/t/TheMirariConjecture.java
index 7cbe6a3c453..745e4ca0845 100644
--- a/Mage.Sets/src/mage/cards/t/TheMirariConjecture.java
+++ b/Mage.Sets/src/mage/cards/t/TheMirariConjecture.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class TheMirariConjecture extends CardImpl {
+public final class TheMirariConjecture extends CardImpl {
private static final FilterCard filterInstantCard = new FilterCard("instant card from your graveyard");
private static final FilterCard filterSorceryCard = new FilterCard("sorcery card from your graveyard");
@@ -102,7 +102,7 @@ public class TheMirariConjecture extends CardImpl {
class TheMirariConjectureDelayedTriggeredAbility extends DelayedTriggeredAbility {
public TheMirariConjectureDelayedTriggeredAbility() {
- super(new CopyTargetSpellEffect(), Duration.EndOfTurn, false);
+ super(new CopyTargetSpellEffect(true), Duration.EndOfTurn, false);
}
public TheMirariConjectureDelayedTriggeredAbility(final TheMirariConjectureDelayedTriggeredAbility ability) {
diff --git a/Mage.Sets/src/mage/cards/t/TheRack.java b/Mage.Sets/src/mage/cards/t/TheRack.java
index a41d5962d15..774362a2a62 100644
--- a/Mage.Sets/src/mage/cards/t/TheRack.java
+++ b/Mage.Sets/src/mage/cards/t/TheRack.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TheRack extends CardImpl {
+public final class TheRack extends CardImpl {
public TheRack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/t/TheScarabGod.java b/Mage.Sets/src/mage/cards/t/TheScarabGod.java
index 94b771e9fa0..5bb2ee917b9 100644
--- a/Mage.Sets/src/mage/cards/t/TheScarabGod.java
+++ b/Mage.Sets/src/mage/cards/t/TheScarabGod.java
@@ -62,7 +62,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class TheScarabGod extends CardImpl {
+public final class TheScarabGod extends CardImpl {
public TheScarabGod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TheScorpionGod.java b/Mage.Sets/src/mage/cards/t/TheScorpionGod.java
index d089f6707da..f12276be65f 100644
--- a/Mage.Sets/src/mage/cards/t/TheScorpionGod.java
+++ b/Mage.Sets/src/mage/cards/t/TheScorpionGod.java
@@ -64,7 +64,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class TheScorpionGod extends CardImpl {
+public final class TheScorpionGod extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/t/TheTabernacleAtPendrellVale.java b/Mage.Sets/src/mage/cards/t/TheTabernacleAtPendrellVale.java
index 963e5bca6a4..aae701fbec3 100644
--- a/Mage.Sets/src/mage/cards/t/TheTabernacleAtPendrellVale.java
+++ b/Mage.Sets/src/mage/cards/t/TheTabernacleAtPendrellVale.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class TheTabernacleAtPendrellVale extends CardImpl {
+public final class TheTabernacleAtPendrellVale extends CardImpl {
public TheTabernacleAtPendrellVale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/t/TheUnspeakable.java b/Mage.Sets/src/mage/cards/t/TheUnspeakable.java
index f7775e76951..c634ac04a12 100644
--- a/Mage.Sets/src/mage/cards/t/TheUnspeakable.java
+++ b/Mage.Sets/src/mage/cards/t/TheUnspeakable.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class TheUnspeakable extends CardImpl {
+public final class TheUnspeakable extends CardImpl {
private static final FilterCard filter = new FilterCard("Arcane card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/t/TheUrDragon.java b/Mage.Sets/src/mage/cards/t/TheUrDragon.java
index 88b2653f776..243e6f2025b 100644
--- a/Mage.Sets/src/mage/cards/t/TheUrDragon.java
+++ b/Mage.Sets/src/mage/cards/t/TheUrDragon.java
@@ -27,6 +27,9 @@
*/
package mage.cards.t;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.UUID;
import mage.MageInt;
import mage.MageObjectReference;
import mage.abilities.Ability;
@@ -34,7 +37,7 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
@@ -48,14 +51,10 @@ import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.watchers.Watcher;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.UUID;
-
/**
* @author TheElk801
*/
-public class TheUrDragon extends CardImpl {
+public final class TheUrDragon extends CardImpl {
private static final FilterCard filter = new FilterCard("Dragon spells");
@@ -180,7 +179,7 @@ class TheUrDragonEffect extends OneShotEffect {
public TheUrDragonEffect() {
super(Outcome.Benefit);
- this.staticText = "draw that many cards, then you may put a permanent card from your hand onto the battlefield.";
+ this.staticText = "draw that many cards, then you may put a permanent card from your hand onto the battlefield";
}
public TheUrDragonEffect(final TheUrDragonEffect effect) {
@@ -207,9 +206,7 @@ class TheUrDragonEffect extends OneShotEffect {
if (attackingDragons > 0) {
controller.drawCards(attackingDragons, game);
}
- Effect effect = new PutPermanentOnBattlefieldEffect();
- effect.apply(game, source);
- return true;
+ return new PutCardFromHandOntoBattlefieldEffect().apply(game, source);
}
}
return false;
diff --git a/Mage.Sets/src/mage/cards/t/TheWretched.java b/Mage.Sets/src/mage/cards/t/TheWretched.java
index bfeef38c446..fbc404e86a5 100644
--- a/Mage.Sets/src/mage/cards/t/TheWretched.java
+++ b/Mage.Sets/src/mage/cards/t/TheWretched.java
@@ -66,7 +66,7 @@ import mage.watchers.common.BlockedAttackerWatcher;
* they remain on the battlefield.
*/
-public class TheWretched extends CardImpl {
+public final class TheWretched extends CardImpl {
public TheWretched(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TheftOfDreams.java b/Mage.Sets/src/mage/cards/t/TheftOfDreams.java
index 12e6217e0fd..d34bc828339 100644
--- a/Mage.Sets/src/mage/cards/t/TheftOfDreams.java
+++ b/Mage.Sets/src/mage/cards/t/TheftOfDreams.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class TheftOfDreams extends CardImpl {
+public final class TheftOfDreams extends CardImpl {
public TheftOfDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThelonOfHavenwood.java b/Mage.Sets/src/mage/cards/t/ThelonOfHavenwood.java
index 7aed667114b..bf4edc14be4 100644
--- a/Mage.Sets/src/mage/cards/t/ThelonOfHavenwood.java
+++ b/Mage.Sets/src/mage/cards/t/ThelonOfHavenwood.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInASingleGraveyard;
*
* @author emerald000
*/
-public class ThelonOfHavenwood extends CardImpl {
+public final class ThelonOfHavenwood extends CardImpl {
private static final FilterCard filterCard = new FilterCard("a Fungus card from a graveyard");
private static final FilterPermanent filterPermanent = new FilterPermanent("Fungus on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/t/TheloniteDruid.java b/Mage.Sets/src/mage/cards/t/TheloniteDruid.java
index 1bec2cecff1..44239727a74 100644
--- a/Mage.Sets/src/mage/cards/t/TheloniteDruid.java
+++ b/Mage.Sets/src/mage/cards/t/TheloniteDruid.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class TheloniteDruid extends CardImpl {
+public final class TheloniteDruid extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Forests you control");
diff --git a/Mage.Sets/src/mage/cards/t/TheloniteHermit.java b/Mage.Sets/src/mage/cards/t/TheloniteHermit.java
index 2b692414072..20434f882e8 100644
--- a/Mage.Sets/src/mage/cards/t/TheloniteHermit.java
+++ b/Mage.Sets/src/mage/cards/t/TheloniteHermit.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author LevelX2
*/
-public class TheloniteHermit extends CardImpl {
+public final class TheloniteHermit extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Saproling creatures");
diff --git a/Mage.Sets/src/mage/cards/t/TheloniteMonk.java b/Mage.Sets/src/mage/cards/t/TheloniteMonk.java
index 08ff9e37bd3..ffe908dac11 100644
--- a/Mage.Sets/src/mage/cards/t/TheloniteMonk.java
+++ b/Mage.Sets/src/mage/cards/t/TheloniteMonk.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class TheloniteMonk extends CardImpl {
+public final class TheloniteMonk extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/t/ThelonsChant.java b/Mage.Sets/src/mage/cards/t/ThelonsChant.java
index 578450e8b1a..4609715cb22 100644
--- a/Mage.Sets/src/mage/cards/t/ThelonsChant.java
+++ b/Mage.Sets/src/mage/cards/t/ThelonsChant.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class ThelonsChant extends CardImpl {
+public final class ThelonsChant extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Swamp");
diff --git a/Mage.Sets/src/mage/cards/t/ThelonsCurse.java b/Mage.Sets/src/mage/cards/t/ThelonsCurse.java
index 220d0bce60e..6878caec6d9 100644
--- a/Mage.Sets/src/mage/cards/t/ThelonsCurse.java
+++ b/Mage.Sets/src/mage/cards/t/ThelonsCurse.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author spjspj & L_J
*/
-public class ThelonsCurse extends CardImpl {
+public final class ThelonsCurse extends CardImpl {
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("blue creatures");
diff --git a/Mage.Sets/src/mage/cards/t/ThermalBlast.java b/Mage.Sets/src/mage/cards/t/ThermalBlast.java
index f5e506b3c76..bb833ef583a 100644
--- a/Mage.Sets/src/mage/cards/t/ThermalBlast.java
+++ b/Mage.Sets/src/mage/cards/t/ThermalBlast.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class ThermalBlast extends CardImpl {
+public final class ThermalBlast extends CardImpl {
public ThermalBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThermalFlux.java b/Mage.Sets/src/mage/cards/t/ThermalFlux.java
index f4bcb7c8331..195eb4adea8 100644
--- a/Mage.Sets/src/mage/cards/t/ThermalFlux.java
+++ b/Mage.Sets/src/mage/cards/t/ThermalFlux.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801 & L_J
*/
-public class ThermalFlux extends CardImpl {
+public final class ThermalFlux extends CardImpl {
private static final FilterPermanent filterNonsnow = new FilterPermanent("nonsnow permanent");
private static final FilterPermanent filterSnow = new FilterPermanent("snow permanent");
diff --git a/Mage.Sets/src/mage/cards/t/ThermalGlider.java b/Mage.Sets/src/mage/cards/t/ThermalGlider.java
index d8d16112f22..3f29104091c 100644
--- a/Mage.Sets/src/mage/cards/t/ThermalGlider.java
+++ b/Mage.Sets/src/mage/cards/t/ThermalGlider.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class ThermalGlider extends CardImpl {
+public final class ThermalGlider extends CardImpl {
public ThermalGlider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThermalNavigator.java b/Mage.Sets/src/mage/cards/t/ThermalNavigator.java
index 82741ea9697..338ab5f7ea6 100644
--- a/Mage.Sets/src/mage/cards/t/ThermalNavigator.java
+++ b/Mage.Sets/src/mage/cards/t/ThermalNavigator.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class ThermalNavigator extends CardImpl {
+public final class ThermalNavigator extends CardImpl {
public ThermalNavigator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/ThermoAlchemist.java b/Mage.Sets/src/mage/cards/t/ThermoAlchemist.java
index 294a63d9767..b88f5d832ed 100644
--- a/Mage.Sets/src/mage/cards/t/ThermoAlchemist.java
+++ b/Mage.Sets/src/mage/cards/t/ThermoAlchemist.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterInstantOrSorcerySpell;
*
* @author LevelX2
*/
-public class ThermoAlchemist extends CardImpl {
+public final class ThermoAlchemist extends CardImpl {
public ThermoAlchemist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Thermokarst.java b/Mage.Sets/src/mage/cards/t/Thermokarst.java
index f36c134edbd..f2e60480359 100644
--- a/Mage.Sets/src/mage/cards/t/Thermokarst.java
+++ b/Mage.Sets/src/mage/cards/t/Thermokarst.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class Thermokarst extends CardImpl {
+public final class Thermokarst extends CardImpl {
public Thermokarst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/Thermopod.java b/Mage.Sets/src/mage/cards/t/Thermopod.java
index 74dfd524adc..325bdcdd93e 100644
--- a/Mage.Sets/src/mage/cards/t/Thermopod.java
+++ b/Mage.Sets/src/mage/cards/t/Thermopod.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class Thermopod extends CardImpl {
+public final class Thermopod extends CardImpl {
public Thermopod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThespiansStage.java b/Mage.Sets/src/mage/cards/t/ThespiansStage.java
index 9c9e161299d..9a0059f0075 100644
--- a/Mage.Sets/src/mage/cards/t/ThespiansStage.java
+++ b/Mage.Sets/src/mage/cards/t/ThespiansStage.java
@@ -48,7 +48,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author LevelX2
*/
-public class ThespiansStage extends CardImpl {
+public final class ThespiansStage extends CardImpl {
public ThespiansStage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/ThicketBasilisk.java b/Mage.Sets/src/mage/cards/t/ThicketBasilisk.java
index bb6ce444037..792c4625b35 100644
--- a/Mage.Sets/src/mage/cards/t/ThicketBasilisk.java
+++ b/Mage.Sets/src/mage/cards/t/ThicketBasilisk.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Backfir3
*/
-public class ThicketBasilisk extends CardImpl {
+public final class ThicketBasilisk extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creature");
diff --git a/Mage.Sets/src/mage/cards/t/ThicketElemental.java b/Mage.Sets/src/mage/cards/t/ThicketElemental.java
index 4fc5b898f2b..c2e31ea8df3 100644
--- a/Mage.Sets/src/mage/cards/t/ThicketElemental.java
+++ b/Mage.Sets/src/mage/cards/t/ThicketElemental.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author fireshoes
*/
-public class ThicketElemental extends CardImpl {
+public final class ThicketElemental extends CardImpl {
public ThicketElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThiefOfBlood.java b/Mage.Sets/src/mage/cards/t/ThiefOfBlood.java
index f561458951c..1f82db3c052 100644
--- a/Mage.Sets/src/mage/cards/t/ThiefOfBlood.java
+++ b/Mage.Sets/src/mage/cards/t/ThiefOfBlood.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class ThiefOfBlood extends CardImpl {
+public final class ThiefOfBlood extends CardImpl {
public ThiefOfBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThiefOfHope.java b/Mage.Sets/src/mage/cards/t/ThiefOfHope.java
index 82fc3e4d841..a5d18f0712b 100644
--- a/Mage.Sets/src/mage/cards/t/ThiefOfHope.java
+++ b/Mage.Sets/src/mage/cards/t/ThiefOfHope.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
/**
* @author Loki
*/
-public class ThiefOfHope extends CardImpl {
+public final class ThiefOfHope extends CardImpl {
public ThiefOfHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThievesAuction.java b/Mage.Sets/src/mage/cards/t/ThievesAuction.java
index cb1088c1ce8..9f78099bb3f 100644
--- a/Mage.Sets/src/mage/cards/t/ThievesAuction.java
+++ b/Mage.Sets/src/mage/cards/t/ThievesAuction.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author emerald000
*/
-public class ThievesAuction extends CardImpl {
+public final class ThievesAuction extends CardImpl {
public ThievesAuction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}{R}");
@@ -115,8 +115,12 @@ class ThievesAuctionEffect extends OneShotEffect {
if (player.choose(Outcome.PutCardInPlay, exiledCards, target, game)) {
// and puts it onto the battlefield tapped under their control.
Card chosenCard = exiledCards.get(target.getFirstTarget(), game);
- player.moveCards(chosenCard, Zone.BATTLEFIELD, source, game, true, false, false, null);
+ if (chosenCard != null) {
+ player.moveCards(chosenCard, Zone.BATTLEFIELD, source, game, true, false, false, null);
+ }
exiledCards.remove(chosenCard);
+ } else {
+ break;
}
}
// Repeat this process until all cards exiled this way have been chosen.
diff --git a/Mage.Sets/src/mage/cards/t/ThievesFortune.java b/Mage.Sets/src/mage/cards/t/ThievesFortune.java
index 98194006923..01934546194 100644
--- a/Mage.Sets/src/mage/cards/t/ThievesFortune.java
+++ b/Mage.Sets/src/mage/cards/t/ThievesFortune.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class ThievesFortune extends CardImpl {
+public final class ThievesFortune extends CardImpl {
public ThievesFortune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThievingMagpie.java b/Mage.Sets/src/mage/cards/t/ThievingMagpie.java
index 6e3fb62bbe7..18d129aff6b 100644
--- a/Mage.Sets/src/mage/cards/t/ThievingMagpie.java
+++ b/Mage.Sets/src/mage/cards/t/ThievingMagpie.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class ThievingMagpie extends CardImpl {
+public final class ThievingMagpie extends CardImpl {
public ThievingMagpie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThievingSprite.java b/Mage.Sets/src/mage/cards/t/ThievingSprite.java
index 47c82eb2dbe..513bc457fb3 100644
--- a/Mage.Sets/src/mage/cards/t/ThievingSprite.java
+++ b/Mage.Sets/src/mage/cards/t/ThievingSprite.java
@@ -55,7 +55,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class ThievingSprite extends CardImpl {
+public final class ThievingSprite extends CardImpl {
public ThievingSprite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThingFromTheDeep.java b/Mage.Sets/src/mage/cards/t/ThingFromTheDeep.java
index 5d1b1757654..01b3c3c48a6 100644
--- a/Mage.Sets/src/mage/cards/t/ThingFromTheDeep.java
+++ b/Mage.Sets/src/mage/cards/t/ThingFromTheDeep.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class ThingFromTheDeep extends CardImpl {
+public final class ThingFromTheDeep extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an Island");
diff --git a/Mage.Sets/src/mage/cards/t/ThingInTheIce.java b/Mage.Sets/src/mage/cards/t/ThingInTheIce.java
index 358ef478056..6e6f65d5594 100644
--- a/Mage.Sets/src/mage/cards/t/ThingInTheIce.java
+++ b/Mage.Sets/src/mage/cards/t/ThingInTheIce.java
@@ -54,7 +54,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class ThingInTheIce extends CardImpl {
+public final class ThingInTheIce extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/t/ThinkTank.java b/Mage.Sets/src/mage/cards/t/ThinkTank.java
index c82acfe2d26..3bfe2f73528 100644
--- a/Mage.Sets/src/mage/cards/t/ThinkTank.java
+++ b/Mage.Sets/src/mage/cards/t/ThinkTank.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author cbt33
*/
-public class ThinkTank extends CardImpl {
+public final class ThinkTank extends CardImpl {
public ThinkTank(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThinkTwice.java b/Mage.Sets/src/mage/cards/t/ThinkTwice.java
index 59e0cd84165..23f3ce52d87 100644
--- a/Mage.Sets/src/mage/cards/t/ThinkTwice.java
+++ b/Mage.Sets/src/mage/cards/t/ThinkTwice.java
@@ -40,7 +40,7 @@ import mage.constants.TimingRule;
*
* @author nantuko
*/
-public class ThinkTwice extends CardImpl {
+public final class ThinkTwice extends CardImpl {
public ThinkTwice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Thirst.java b/Mage.Sets/src/mage/cards/t/Thirst.java
index bd03d8418b0..bd423b6b268 100644
--- a/Mage.Sets/src/mage/cards/t/Thirst.java
+++ b/Mage.Sets/src/mage/cards/t/Thirst.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Thirst extends CardImpl {
+public final class Thirst extends CardImpl {
public Thirst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThirstForKnowledge.java b/Mage.Sets/src/mage/cards/t/ThirstForKnowledge.java
index 96b23833b5a..60d658449f5 100644
--- a/Mage.Sets/src/mage/cards/t/ThirstForKnowledge.java
+++ b/Mage.Sets/src/mage/cards/t/ThirstForKnowledge.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class ThirstForKnowledge extends CardImpl {
+public final class ThirstForKnowledge extends CardImpl {
public ThirstForKnowledge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThirstingAxe.java b/Mage.Sets/src/mage/cards/t/ThirstingAxe.java
index e7e68c417e2..8be893832d8 100644
--- a/Mage.Sets/src/mage/cards/t/ThirstingAxe.java
+++ b/Mage.Sets/src/mage/cards/t/ThirstingAxe.java
@@ -58,7 +58,7 @@ import mage.watchers.Watcher;
*
* @author Quercitron
*/
-public class ThirstingAxe extends CardImpl {
+public final class ThirstingAxe extends CardImpl {
public ThirstingAxe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/ThistledownDuo.java b/Mage.Sets/src/mage/cards/t/ThistledownDuo.java
index e3d3ab34e21..80d32cf3ffa 100644
--- a/Mage.Sets/src/mage/cards/t/ThistledownDuo.java
+++ b/Mage.Sets/src/mage/cards/t/ThistledownDuo.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class ThistledownDuo extends CardImpl {
+public final class ThistledownDuo extends CardImpl {
private static final FilterSpell whiteFilter = new FilterSpell("a white spell");
private static final FilterSpell blueFilter = new FilterSpell("a blue spell");
diff --git a/Mage.Sets/src/mage/cards/t/ThistledownLiege.java b/Mage.Sets/src/mage/cards/t/ThistledownLiege.java
index 38f2016b6c0..adc0f9adeb1 100644
--- a/Mage.Sets/src/mage/cards/t/ThistledownLiege.java
+++ b/Mage.Sets/src/mage/cards/t/ThistledownLiege.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class ThistledownLiege extends CardImpl {
+public final class ThistledownLiege extends CardImpl {
private static final FilterCreaturePermanent filterWhite = new FilterCreaturePermanent("white creatures");
private static final FilterCreaturePermanent filterBlue = new FilterCreaturePermanent("blue creatures");
diff --git a/Mage.Sets/src/mage/cards/t/ThopterArrest.java b/Mage.Sets/src/mage/cards/t/ThopterArrest.java
index c3123d4ed03..5e427a76b1b 100644
--- a/Mage.Sets/src/mage/cards/t/ThopterArrest.java
+++ b/Mage.Sets/src/mage/cards/t/ThopterArrest.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author Styxo
*/
-public class ThopterArrest extends CardImpl {
+public final class ThopterArrest extends CardImpl {
private final static FilterPermanent filter = new FilterPermanent("artifact or creature");
diff --git a/Mage.Sets/src/mage/cards/t/ThopterAssembly.java b/Mage.Sets/src/mage/cards/t/ThopterAssembly.java
index aa917d2bffa..f2a7941c0be 100644
--- a/Mage.Sets/src/mage/cards/t/ThopterAssembly.java
+++ b/Mage.Sets/src/mage/cards/t/ThopterAssembly.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author Loki
*/
-public class ThopterAssembly extends CardImpl {
+public final class ThopterAssembly extends CardImpl {
public ThopterAssembly(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/t/ThopterEngineer.java b/Mage.Sets/src/mage/cards/t/ThopterEngineer.java
index 8933a977889..2a62d9282f6 100644
--- a/Mage.Sets/src/mage/cards/t/ThopterEngineer.java
+++ b/Mage.Sets/src/mage/cards/t/ThopterEngineer.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author Wehk
*/
-public class ThopterEngineer extends CardImpl {
+public final class ThopterEngineer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Artifact creatures you control");
diff --git a/Mage.Sets/src/mage/cards/t/ThopterFoundry.java b/Mage.Sets/src/mage/cards/t/ThopterFoundry.java
index 75954c64c37..9afe89359dc 100644
--- a/Mage.Sets/src/mage/cards/t/ThopterFoundry.java
+++ b/Mage.Sets/src/mage/cards/t/ThopterFoundry.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class ThopterFoundry extends CardImpl {
+public final class ThopterFoundry extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a nontoken artifact");
diff --git a/Mage.Sets/src/mage/cards/t/ThopterSpyNetwork.java b/Mage.Sets/src/mage/cards/t/ThopterSpyNetwork.java
index c18c86b22b2..9d98b2827f2 100644
--- a/Mage.Sets/src/mage/cards/t/ThopterSpyNetwork.java
+++ b/Mage.Sets/src/mage/cards/t/ThopterSpyNetwork.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author fireshoes
*/
-public class ThopterSpyNetwork extends CardImpl {
+public final class ThopterSpyNetwork extends CardImpl {
public ThopterSpyNetwork(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThopterSquadron.java b/Mage.Sets/src/mage/cards/t/ThopterSquadron.java
index 237a157631c..20eb111b9dc 100644
--- a/Mage.Sets/src/mage/cards/t/ThopterSquadron.java
+++ b/Mage.Sets/src/mage/cards/t/ThopterSquadron.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class ThopterSquadron extends CardImpl {
+public final class ThopterSquadron extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Thopter");
diff --git a/Mage.Sets/src/mage/cards/t/ThornElemental.java b/Mage.Sets/src/mage/cards/t/ThornElemental.java
index c13135a1a8b..b5097cd938e 100644
--- a/Mage.Sets/src/mage/cards/t/ThornElemental.java
+++ b/Mage.Sets/src/mage/cards/t/ThornElemental.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class ThornElemental extends CardImpl {
+public final class ThornElemental extends CardImpl {
public ThornElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThornOfAmethyst.java b/Mage.Sets/src/mage/cards/t/ThornOfAmethyst.java
index 12c39bbba06..fcd20c36e48 100644
--- a/Mage.Sets/src/mage/cards/t/ThornOfAmethyst.java
+++ b/Mage.Sets/src/mage/cards/t/ThornOfAmethyst.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Plopman
*/
-public class ThornOfAmethyst extends CardImpl {
+public final class ThornOfAmethyst extends CardImpl {
private static final FilterCard filter = new FilterCard("Noncreature spells");
static {
diff --git a/Mage.Sets/src/mage/cards/t/ThornOfTheBlackRose.java b/Mage.Sets/src/mage/cards/t/ThornOfTheBlackRose.java
index 675607a2ac6..381babe763a 100644
--- a/Mage.Sets/src/mage/cards/t/ThornOfTheBlackRose.java
+++ b/Mage.Sets/src/mage/cards/t/ThornOfTheBlackRose.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ThornOfTheBlackRose extends CardImpl {
+public final class ThornOfTheBlackRose extends CardImpl {
public ThornOfTheBlackRose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThornThallid.java b/Mage.Sets/src/mage/cards/t/ThornThallid.java
index 07321b63a83..529434fd79b 100644
--- a/Mage.Sets/src/mage/cards/t/ThornThallid.java
+++ b/Mage.Sets/src/mage/cards/t/ThornThallid.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class ThornThallid extends CardImpl {
+public final class ThornThallid extends CardImpl {
public ThornThallid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThornThrashViashino.java b/Mage.Sets/src/mage/cards/t/ThornThrashViashino.java
index 865d6f25d71..dec917bc07b 100644
--- a/Mage.Sets/src/mage/cards/t/ThornThrashViashino.java
+++ b/Mage.Sets/src/mage/cards/t/ThornThrashViashino.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ThornThrashViashino extends CardImpl {
+public final class ThornThrashViashino extends CardImpl {
public ThornThrashViashino(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThornbiteStaff.java b/Mage.Sets/src/mage/cards/t/ThornbiteStaff.java
index cd1c5bde21c..939dbd1d4a9 100644
--- a/Mage.Sets/src/mage/cards/t/ThornbiteStaff.java
+++ b/Mage.Sets/src/mage/cards/t/ThornbiteStaff.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class ThornbiteStaff extends CardImpl {
+public final class ThornbiteStaff extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a Shaman creature");
static {
diff --git a/Mage.Sets/src/mage/cards/t/ThornbowArcher.java b/Mage.Sets/src/mage/cards/t/ThornbowArcher.java
index e35d21e5cef..8e5b1aa2b90 100644
--- a/Mage.Sets/src/mage/cards/t/ThornbowArcher.java
+++ b/Mage.Sets/src/mage/cards/t/ThornbowArcher.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ThornbowArcher extends CardImpl {
+public final class ThornbowArcher extends CardImpl {
public ThornbowArcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThorncasterSliver.java b/Mage.Sets/src/mage/cards/t/ThorncasterSliver.java
index de3e841aa5f..6d049b319a6 100644
--- a/Mage.Sets/src/mage/cards/t/ThorncasterSliver.java
+++ b/Mage.Sets/src/mage/cards/t/ThorncasterSliver.java
@@ -47,7 +47,7 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class ThorncasterSliver extends CardImpl {
+public final class ThorncasterSliver extends CardImpl {
public ThorncasterSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThornedMoloch.java b/Mage.Sets/src/mage/cards/t/ThornedMoloch.java
index 1ee0ca00652..a4e356a80a1 100644
--- a/Mage.Sets/src/mage/cards/t/ThornedMoloch.java
+++ b/Mage.Sets/src/mage/cards/t/ThornedMoloch.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author spjspj
*/
-public class ThornedMoloch extends CardImpl {
+public final class ThornedMoloch extends CardImpl {
public ThornedMoloch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThornhideWolves.java b/Mage.Sets/src/mage/cards/t/ThornhideWolves.java
index 0c84c4ff2e0..c83d936f11a 100644
--- a/Mage.Sets/src/mage/cards/t/ThornhideWolves.java
+++ b/Mage.Sets/src/mage/cards/t/ThornhideWolves.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ThornhideWolves extends CardImpl {
+public final class ThornhideWolves extends CardImpl {
public ThornhideWolves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/Thornling.java b/Mage.Sets/src/mage/cards/t/Thornling.java
index b3c5a95a023..2531fd4c30c 100644
--- a/Mage.Sets/src/mage/cards/t/Thornling.java
+++ b/Mage.Sets/src/mage/cards/t/Thornling.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Thornling extends CardImpl {
+public final class Thornling extends CardImpl {
public Thornling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThornscapeApprentice.java b/Mage.Sets/src/mage/cards/t/ThornscapeApprentice.java
index fb4e34ba449..93e10d39979 100644
--- a/Mage.Sets/src/mage/cards/t/ThornscapeApprentice.java
+++ b/Mage.Sets/src/mage/cards/t/ThornscapeApprentice.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author FenrisulfrX
*/
-public class ThornscapeApprentice extends CardImpl {
+public final class ThornscapeApprentice extends CardImpl {
public ThornscapeApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThornscapeBattlemage.java b/Mage.Sets/src/mage/cards/t/ThornscapeBattlemage.java
index 82de3710e29..f53f67bc0f3 100644
--- a/Mage.Sets/src/mage/cards/t/ThornscapeBattlemage.java
+++ b/Mage.Sets/src/mage/cards/t/ThornscapeBattlemage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author FenrisulfrX
*/
-public class ThornscapeBattlemage extends CardImpl {
+public final class ThornscapeBattlemage extends CardImpl {
public ThornscapeBattlemage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThornscapeFamiliar.java b/Mage.Sets/src/mage/cards/t/ThornscapeFamiliar.java
index 3df10759e9b..f4f679885c8 100644
--- a/Mage.Sets/src/mage/cards/t/ThornscapeFamiliar.java
+++ b/Mage.Sets/src/mage/cards/t/ThornscapeFamiliar.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class ThornscapeFamiliar extends CardImpl {
+public final class ThornscapeFamiliar extends CardImpl {
private static final FilterCard filter = new FilterCard("Red spells and white spells");
diff --git a/Mage.Sets/src/mage/cards/t/ThornscapeMaster.java b/Mage.Sets/src/mage/cards/t/ThornscapeMaster.java
index cafa06f7f2b..3d9a73e9b08 100644
--- a/Mage.Sets/src/mage/cards/t/ThornscapeMaster.java
+++ b/Mage.Sets/src/mage/cards/t/ThornscapeMaster.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class ThornscapeMaster extends CardImpl {
+public final class ThornscapeMaster extends CardImpl {
public ThornscapeMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThorntoothWitch.java b/Mage.Sets/src/mage/cards/t/ThorntoothWitch.java
index 8e152b18c2d..2cd499ff402 100644
--- a/Mage.Sets/src/mage/cards/t/ThorntoothWitch.java
+++ b/Mage.Sets/src/mage/cards/t/ThorntoothWitch.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ThorntoothWitch extends CardImpl {
+public final class ThorntoothWitch extends CardImpl {
private static final FilterSpell filter = new FilterSpell("Treefolk");
diff --git a/Mage.Sets/src/mage/cards/t/ThornwatchScarecrow.java b/Mage.Sets/src/mage/cards/t/ThornwatchScarecrow.java
index 2ab3592f71c..b6ebb9e576b 100644
--- a/Mage.Sets/src/mage/cards/t/ThornwatchScarecrow.java
+++ b/Mage.Sets/src/mage/cards/t/ThornwatchScarecrow.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class ThornwatchScarecrow extends CardImpl {
+public final class ThornwatchScarecrow extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a green creature");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("a white creature");
diff --git a/Mage.Sets/src/mage/cards/t/ThornwealdArcher.java b/Mage.Sets/src/mage/cards/t/ThornwealdArcher.java
index 9ec1f39d7d1..716e387cd2b 100644
--- a/Mage.Sets/src/mage/cards/t/ThornwealdArcher.java
+++ b/Mage.Sets/src/mage/cards/t/ThornwealdArcher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ThornwealdArcher extends CardImpl {
+public final class ThornwealdArcher extends CardImpl {
public ThornwealdArcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThornwindFaeries.java b/Mage.Sets/src/mage/cards/t/ThornwindFaeries.java
index ca31923e2c1..fba9ca8dc6a 100644
--- a/Mage.Sets/src/mage/cards/t/ThornwindFaeries.java
+++ b/Mage.Sets/src/mage/cards/t/ThornwindFaeries.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class ThornwindFaeries extends CardImpl {
+public final class ThornwindFaeries extends CardImpl {
public ThornwindFaeries(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThornwoodFalls.java b/Mage.Sets/src/mage/cards/t/ThornwoodFalls.java
index 10772b199d3..4801ff4f63d 100644
--- a/Mage.Sets/src/mage/cards/t/ThornwoodFalls.java
+++ b/Mage.Sets/src/mage/cards/t/ThornwoodFalls.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class ThornwoodFalls extends CardImpl {
+public final class ThornwoodFalls extends CardImpl {
public ThornwoodFalls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/ThoseWhoServe.java b/Mage.Sets/src/mage/cards/t/ThoseWhoServe.java
index a7691066882..f62cf75cb46 100644
--- a/Mage.Sets/src/mage/cards/t/ThoseWhoServe.java
+++ b/Mage.Sets/src/mage/cards/t/ThoseWhoServe.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ThoseWhoServe extends CardImpl {
+public final class ThoseWhoServe extends CardImpl {
public ThoseWhoServe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtCourier.java b/Mage.Sets/src/mage/cards/t/ThoughtCourier.java
index 6be807acd9d..a1e10952139 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtCourier.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtCourier.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author dustinconrad
*/
-public class ThoughtCourier extends CardImpl {
+public final class ThoughtCourier extends CardImpl {
public ThoughtCourier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtDevourer.java b/Mage.Sets/src/mage/cards/t/ThoughtDevourer.java
index 57f6f253409..8d8669d6703 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtDevourer.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtDevourer.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ThoughtDevourer extends CardImpl {
+public final class ThoughtDevourer extends CardImpl {
public ThoughtDevourer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtEater.java b/Mage.Sets/src/mage/cards/t/ThoughtEater.java
index f706372796e..694fe0e2c09 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtEater.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtEater.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ThoughtEater extends CardImpl {
+public final class ThoughtEater extends CardImpl {
public ThoughtEater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtGorger.java b/Mage.Sets/src/mage/cards/t/ThoughtGorger.java
index f5eeed502e0..84a4df78f95 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtGorger.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtGorger.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class ThoughtGorger extends CardImpl {
+public final class ThoughtGorger extends CardImpl {
public ThoughtGorger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtHarvester.java b/Mage.Sets/src/mage/cards/t/ThoughtHarvester.java
index f197cbfdc21..4e6f2426459 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtHarvester.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtHarvester.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class ThoughtHarvester extends CardImpl {
+public final class ThoughtHarvester extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a colorless spell");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtHemorrhage.java b/Mage.Sets/src/mage/cards/t/ThoughtHemorrhage.java
index e32182fd0d5..fa03556b19b 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtHemorrhage.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtHemorrhage.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class ThoughtHemorrhage extends CardImpl {
+public final class ThoughtHemorrhage extends CardImpl {
public ThoughtHemorrhage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtKnotSeer.java b/Mage.Sets/src/mage/cards/t/ThoughtKnotSeer.java
index e9b254dc51e..d9ef8e4327f 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtKnotSeer.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtKnotSeer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class ThoughtKnotSeer extends CardImpl {
+public final class ThoughtKnotSeer extends CardImpl {
public ThoughtKnotSeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{C}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtLash.java b/Mage.Sets/src/mage/cards/t/ThoughtLash.java
index 3b9ae817865..995054cc616 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtLash.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtLash.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class ThoughtLash extends CardImpl {
+public final class ThoughtLash extends CardImpl {
public ThoughtLash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtNibbler.java b/Mage.Sets/src/mage/cards/t/ThoughtNibbler.java
index 2c005196954..b1e1130929a 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtNibbler.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtNibbler.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ThoughtNibbler extends CardImpl {
+public final class ThoughtNibbler extends CardImpl {
public ThoughtNibbler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtPrison.java b/Mage.Sets/src/mage/cards/t/ThoughtPrison.java
index 845df319631..2e88e396e67 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtPrison.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtPrison.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class ThoughtPrison extends CardImpl {
+public final class ThoughtPrison extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell cast");
@@ -67,7 +67,7 @@ public class ThoughtPrison extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
// Imprint - When Thought Prison enters the battlefield, you may have target player reveal their hand. If you do, choose a nonland card from it and exile that card.
- EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new ThoughtPrisonImprintEffect(), true, "Imprint - ");
+ EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new ThoughtPrisonImprintEffect(), true, "Imprint — ");
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtReflection.java b/Mage.Sets/src/mage/cards/t/ThoughtReflection.java
index 39a743dc066..bf5c6e0b40d 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtReflection.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtReflection.java
@@ -46,7 +46,7 @@ import mage.players.Player;
* @author jeffwadsworth
*
*/
-public class ThoughtReflection extends CardImpl {
+public final class ThoughtReflection extends CardImpl {
public ThoughtReflection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtScour.java b/Mage.Sets/src/mage/cards/t/ThoughtScour.java
index e70c816ab12..2604d8d4ba3 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtScour.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtScour.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class ThoughtScour extends CardImpl {
+public final class ThoughtScour extends CardImpl {
public ThoughtScour(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtVessel.java b/Mage.Sets/src/mage/cards/t/ThoughtVessel.java
index aa129d68afa..e81fef66b06 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtVessel.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtVessel.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ThoughtVessel extends CardImpl {
+public final class ThoughtVessel extends CardImpl {
public ThoughtVessel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/Thoughtbind.java b/Mage.Sets/src/mage/cards/t/Thoughtbind.java
index 23f0e531da6..b856ed15b2f 100644
--- a/Mage.Sets/src/mage/cards/t/Thoughtbind.java
+++ b/Mage.Sets/src/mage/cards/t/Thoughtbind.java
@@ -41,7 +41,7 @@ import mage.target.TargetSpell;
/**
* @author Loki
*/
-public class Thoughtbind extends CardImpl {
+public final class Thoughtbind extends CardImpl {
private static final FilterSpell filter = new FilterSpell("spell with converted mana cost 4 or less");
diff --git a/Mage.Sets/src/mage/cards/t/Thoughtcast.java b/Mage.Sets/src/mage/cards/t/Thoughtcast.java
index 8502f8cceac..2a0f69d9200 100644
--- a/Mage.Sets/src/mage/cards/t/Thoughtcast.java
+++ b/Mage.Sets/src/mage/cards/t/Thoughtcast.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class Thoughtcast extends CardImpl {
+public final class Thoughtcast extends CardImpl {
public Thoughtcast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtcutterAgent.java b/Mage.Sets/src/mage/cards/t/ThoughtcutterAgent.java
index 32034519614..f035e37d421 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtcutterAgent.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtcutterAgent.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class ThoughtcutterAgent extends CardImpl {
+public final class ThoughtcutterAgent extends CardImpl {
public ThoughtcutterAgent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Thoughtflare.java b/Mage.Sets/src/mage/cards/t/Thoughtflare.java
index 6c9d9147680..cd488e41424 100644
--- a/Mage.Sets/src/mage/cards/t/Thoughtflare.java
+++ b/Mage.Sets/src/mage/cards/t/Thoughtflare.java
@@ -36,7 +36,7 @@ import mage.constants.CardType;
/**
* @author LevelX2
*/
-public class Thoughtflare extends CardImpl {
+public final class Thoughtflare extends CardImpl {
public Thoughtflare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Thoughtlace.java b/Mage.Sets/src/mage/cards/t/Thoughtlace.java
index e9f8487dc58..9ddbd87302e 100644
--- a/Mage.Sets/src/mage/cards/t/Thoughtlace.java
+++ b/Mage.Sets/src/mage/cards/t/Thoughtlace.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author AlumiuN
*/
-public class Thoughtlace extends CardImpl {
+public final class Thoughtlace extends CardImpl {
public Thoughtlace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Thoughtleech.java b/Mage.Sets/src/mage/cards/t/Thoughtleech.java
index f9e4e6dcdb6..4be15e071f4 100644
--- a/Mage.Sets/src/mage/cards/t/Thoughtleech.java
+++ b/Mage.Sets/src/mage/cards/t/Thoughtleech.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
* @author LoneFox
*/
-public class Thoughtleech extends CardImpl {
+public final class Thoughtleech extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("an Island an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtpickerWitch.java b/Mage.Sets/src/mage/cards/t/ThoughtpickerWitch.java
index aa8a6e6e4d8..1f2b52c03ac 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtpickerWitch.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtpickerWitch.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetOpponent;
*
* @author emerald000
*/
-public class ThoughtpickerWitch extends CardImpl {
+public final class ThoughtpickerWitch extends CardImpl {
public ThoughtpickerWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtrenderLamia.java b/Mage.Sets/src/mage/cards/t/ThoughtrenderLamia.java
index d0038752590..058c87f96cd 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtrenderLamia.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtrenderLamia.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class ThoughtrenderLamia extends CardImpl {
+public final class ThoughtrenderLamia extends CardImpl {
public ThoughtrenderLamia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtsOfRuin.java b/Mage.Sets/src/mage/cards/t/ThoughtsOfRuin.java
index 68298457695..84267898673 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtsOfRuin.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtsOfRuin.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class ThoughtsOfRuin extends CardImpl {
+public final class ThoughtsOfRuin extends CardImpl {
public ThoughtsOfRuin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Thoughtseize.java b/Mage.Sets/src/mage/cards/t/Thoughtseize.java
index 00ec5bf8263..e25fee7868f 100644
--- a/Mage.Sets/src/mage/cards/t/Thoughtseize.java
+++ b/Mage.Sets/src/mage/cards/t/Thoughtseize.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author jonubuu
*/
-public class Thoughtseize extends CardImpl {
+public final class Thoughtseize extends CardImpl {
private static final FilterCard filter = new FilterCard("nonland card");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtweftGambit.java b/Mage.Sets/src/mage/cards/t/ThoughtweftGambit.java
index b20e164c906..8f31690ed3b 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtweftGambit.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtweftGambit.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class ThoughtweftGambit extends CardImpl {
+public final class ThoughtweftGambit extends CardImpl {
public ThoughtweftGambit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{W/U}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThoughtweftTrio.java b/Mage.Sets/src/mage/cards/t/ThoughtweftTrio.java
index 33b040b88ed..388c0f8fad7 100644
--- a/Mage.Sets/src/mage/cards/t/ThoughtweftTrio.java
+++ b/Mage.Sets/src/mage/cards/t/ThoughtweftTrio.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ThoughtweftTrio extends CardImpl {
+public final class ThoughtweftTrio extends CardImpl {
public ThoughtweftTrio(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThousandWinds.java b/Mage.Sets/src/mage/cards/t/ThousandWinds.java
index 3be5ca6a3a9..5b6086b80ae 100644
--- a/Mage.Sets/src/mage/cards/t/ThousandWinds.java
+++ b/Mage.Sets/src/mage/cards/t/ThousandWinds.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LevelX2
*/
-public class ThousandWinds extends CardImpl {
+public final class ThousandWinds extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other tapped creatures");
diff --git a/Mage.Sets/src/mage/cards/t/ThousandYearElixir.java b/Mage.Sets/src/mage/cards/t/ThousandYearElixir.java
index a3826130969..a014aed0dc9 100644
--- a/Mage.Sets/src/mage/cards/t/ThousandYearElixir.java
+++ b/Mage.Sets/src/mage/cards/t/ThousandYearElixir.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ThousandYearElixir extends CardImpl {
+public final class ThousandYearElixir extends CardImpl {
public ThousandYearElixir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/ThousandleggedKami.java b/Mage.Sets/src/mage/cards/t/ThousandleggedKami.java
index 4496bf72f90..25d2697fd01 100644
--- a/Mage.Sets/src/mage/cards/t/ThousandleggedKami.java
+++ b/Mage.Sets/src/mage/cards/t/ThousandleggedKami.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class ThousandleggedKami extends CardImpl {
+public final class ThousandleggedKami extends CardImpl {
public ThousandleggedKami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenDoomsayer.java b/Mage.Sets/src/mage/cards/t/ThrabenDoomsayer.java
index 3b6090dfdb0..cc3df454085 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenDoomsayer.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenDoomsayer.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.HumanToken;
*
* @author anonymous
*/
-public class ThrabenDoomsayer extends CardImpl {
+public final class ThrabenDoomsayer extends CardImpl {
public ThrabenDoomsayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java b/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java
index 6a552635417..debb0ef42e3 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ThrabenFoulbloods extends CardImpl {
+public final class ThrabenFoulbloods extends CardImpl {
public ThrabenFoulbloods(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenGargoyle.java b/Mage.Sets/src/mage/cards/t/ThrabenGargoyle.java
index b073b2d1f16..7a673b1ff4f 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenGargoyle.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenGargoyle.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ThrabenGargoyle extends CardImpl {
+public final class ThrabenGargoyle extends CardImpl {
public ThrabenGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenHeretic.java b/Mage.Sets/src/mage/cards/t/ThrabenHeretic.java
index fedec1f91a5..757ea027acd 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenHeretic.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenHeretic.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Loki
*/
-public class ThrabenHeretic extends CardImpl {
+public final class ThrabenHeretic extends CardImpl {
public ThrabenHeretic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenInspector.java b/Mage.Sets/src/mage/cards/t/ThrabenInspector.java
index 68fa5385183..4d71baacf8e 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenInspector.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenInspector.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ThrabenInspector extends CardImpl {
+public final class ThrabenInspector extends CardImpl {
public ThrabenInspector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenMilitia.java b/Mage.Sets/src/mage/cards/t/ThrabenMilitia.java
index 3bd7c80b977..db40e00b317 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenMilitia.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenMilitia.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
/**
* @author nantuko
*/
-public class ThrabenMilitia extends CardImpl {
+public final class ThrabenMilitia extends CardImpl {
public ThrabenMilitia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenPurebloods.java b/Mage.Sets/src/mage/cards/t/ThrabenPurebloods.java
index 0b68a8e6cfb..093ab4fc8bb 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenPurebloods.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenPurebloods.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ThrabenPurebloods extends CardImpl {
+public final class ThrabenPurebloods extends CardImpl {
public ThrabenPurebloods(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenSentry.java b/Mage.Sets/src/mage/cards/t/ThrabenSentry.java
index cf553d55043..b882a5d17e0 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenSentry.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenSentry.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
/**
* @author nantuko
*/
-public class ThrabenSentry extends CardImpl {
+public final class ThrabenSentry extends CardImpl {
public ThrabenSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenStandardBearer.java b/Mage.Sets/src/mage/cards/t/ThrabenStandardBearer.java
index 20fdeab5cd6..4d393703f99 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenStandardBearer.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenStandardBearer.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.HumanSoldierToken;
*
* @author LevelX2
*/
-public class ThrabenStandardBearer extends CardImpl {
+public final class ThrabenStandardBearer extends CardImpl {
public ThrabenStandardBearer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenValiant.java b/Mage.Sets/src/mage/cards/t/ThrabenValiant.java
index 57081a6d5d7..d94090e1823 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenValiant.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenValiant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ThrabenValiant extends CardImpl {
+public final class ThrabenValiant extends CardImpl {
public ThrabenValiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Thragtusk.java b/Mage.Sets/src/mage/cards/t/Thragtusk.java
index 767ea0a573e..312d816b4b2 100644
--- a/Mage.Sets/src/mage/cards/t/Thragtusk.java
+++ b/Mage.Sets/src/mage/cards/t/Thragtusk.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.BeastToken;
*
* @author North
*/
-public class Thragtusk extends CardImpl {
+public final class Thragtusk extends CardImpl {
public Thragtusk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThranDynamo.java b/Mage.Sets/src/mage/cards/t/ThranDynamo.java
index 3f19fda2f15..89f894bf333 100644
--- a/Mage.Sets/src/mage/cards/t/ThranDynamo.java
+++ b/Mage.Sets/src/mage/cards/t/ThranDynamo.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class ThranDynamo extends CardImpl {
+public final class ThranDynamo extends CardImpl {
public ThranDynamo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/ThranForge.java b/Mage.Sets/src/mage/cards/t/ThranForge.java
index 3d9a2e6887e..666b6ac07e2 100644
--- a/Mage.Sets/src/mage/cards/t/ThranForge.java
+++ b/Mage.Sets/src/mage/cards/t/ThranForge.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class ThranForge extends CardImpl {
+public final class ThranForge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/t/ThranFoundry.java b/Mage.Sets/src/mage/cards/t/ThranFoundry.java
index 8d91a71903e..e06d20064a6 100644
--- a/Mage.Sets/src/mage/cards/t/ThranFoundry.java
+++ b/Mage.Sets/src/mage/cards/t/ThranFoundry.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author emerald000
*/
-public class ThranFoundry extends CardImpl {
+public final class ThranFoundry extends CardImpl {
public ThranFoundry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/t/ThranGolem.java b/Mage.Sets/src/mage/cards/t/ThranGolem.java
index 960e9b234cd..77e1a95538f 100644
--- a/Mage.Sets/src/mage/cards/t/ThranGolem.java
+++ b/Mage.Sets/src/mage/cards/t/ThranGolem.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class ThranGolem extends CardImpl {
+public final class ThranGolem extends CardImpl {
public ThranGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/t/ThranLens.java b/Mage.Sets/src/mage/cards/t/ThranLens.java
index 5ccbe23898e..3b466a2f1f1 100644
--- a/Mage.Sets/src/mage/cards/t/ThranLens.java
+++ b/Mage.Sets/src/mage/cards/t/ThranLens.java
@@ -42,7 +42,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class ThranLens extends CardImpl {
+public final class ThranLens extends CardImpl {
public ThranLens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/ThranQuarry.java b/Mage.Sets/src/mage/cards/t/ThranQuarry.java
index 1d5bc564494..9c4cad95362 100644
--- a/Mage.Sets/src/mage/cards/t/ThranQuarry.java
+++ b/Mage.Sets/src/mage/cards/t/ThranQuarry.java
@@ -44,7 +44,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class ThranQuarry extends CardImpl {
+public final class ThranQuarry extends CardImpl {
public ThranQuarry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/ThranTemporalGateway.java b/Mage.Sets/src/mage/cards/t/ThranTemporalGateway.java
index 13db844ec07..afde87c0f8c 100644
--- a/Mage.Sets/src/mage/cards/t/ThranTemporalGateway.java
+++ b/Mage.Sets/src/mage/cards/t/ThranTemporalGateway.java
@@ -31,7 +31,7 @@ import java.util.UUID;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.HistoricPredicate;
*
* @author TheElk801
*/
-public class ThranTemporalGateway extends CardImpl {
+public final class ThranTemporalGateway extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("a historic permanent card");
@@ -59,7 +59,7 @@ public class ThranTemporalGateway extends CardImpl {
// {4}, {t}: You may put a historic permanent card from your hand onto the battlefield. (Artifacts, legendaries, and Sagas are historic.)
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new PutPermanentOnBattlefieldEffect(filter)
+ new PutCardFromHandOntoBattlefieldEffect(filter)
.setText("You may put a historic permanent card from your hand onto the battlefield. "
+ "(Artifacts, legendaries, and Sagas are historic.)"),
new ManaCostsImpl("{4}"));
diff --git a/Mage.Sets/src/mage/cards/t/ThranTurbine.java b/Mage.Sets/src/mage/cards/t/ThranTurbine.java
index c63e5765cb3..bb1f894bb63 100644
--- a/Mage.Sets/src/mage/cards/t/ThranTurbine.java
+++ b/Mage.Sets/src/mage/cards/t/ThranTurbine.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author spjspjs
*/
-public class ThranTurbine extends CardImpl {
+public final class ThranTurbine extends CardImpl {
public ThranTurbine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/t/ThranWarMachine.java b/Mage.Sets/src/mage/cards/t/ThranWarMachine.java
index 68019c536de..a32d6988317 100644
--- a/Mage.Sets/src/mage/cards/t/ThranWarMachine.java
+++ b/Mage.Sets/src/mage/cards/t/ThranWarMachine.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class ThranWarMachine extends CardImpl {
+public final class ThranWarMachine extends CardImpl {
public ThranWarMachine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/ThranWeaponry.java b/Mage.Sets/src/mage/cards/t/ThranWeaponry.java
index 63ff7df22c0..bcda9f127c9 100644
--- a/Mage.Sets/src/mage/cards/t/ThranWeaponry.java
+++ b/Mage.Sets/src/mage/cards/t/ThranWeaponry.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class ThranWeaponry extends CardImpl {
+public final class ThranWeaponry extends CardImpl {
public ThranWeaponry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrashOfRaptors.java b/Mage.Sets/src/mage/cards/t/ThrashOfRaptors.java
index f5562f54c43..5e57c71b448 100644
--- a/Mage.Sets/src/mage/cards/t/ThrashOfRaptors.java
+++ b/Mage.Sets/src/mage/cards/t/ThrashOfRaptors.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class ThrashOfRaptors extends CardImpl {
+public final class ThrashOfRaptors extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Dinosaur");
diff --git a/Mage.Sets/src/mage/cards/t/ThrasherBrute.java b/Mage.Sets/src/mage/cards/t/ThrasherBrute.java
new file mode 100644
index 00000000000..9fa3e4555f0
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/t/ThrasherBrute.java
@@ -0,0 +1,115 @@
+/*
+ * 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.t;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.abilities.effects.common.LoseLifeTargetEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Zone;
+import mage.filter.common.FilterTeamPermanent;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.target.common.TargetOpponent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ThrasherBrute extends CardImpl {
+
+ private static final ThrasherBruteFilter filter = new ThrasherBruteFilter();
+
+ public ThrasherBrute(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
+
+ this.subtype.add(SubType.ORC);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(3);
+
+ // Whenever Thrasher Brute or another Warrior enters the battlefield under your team's control, target opponent loses 1 life and you gain 1 life.
+ Ability ability = new EntersBattlefieldAllTriggeredAbility(
+ Zone.BATTLEFIELD,
+ new LoseLifeTargetEffect(1),
+ filter,
+ false,
+ "Whenever {this} or another Warrior enters the battlefield under your team's control, "
+ + "target opponent loses 1 life and you gain 1 life."
+ );
+ ability.addEffect(new GainLifeEffect(1));
+ ability.addTarget(new TargetOpponent());
+ this.addAbility(ability);
+ }
+
+ public ThrasherBrute(final ThrasherBrute card) {
+ super(card);
+ }
+
+ @Override
+ public ThrasherBrute copy() {
+ return new ThrasherBrute(this);
+ }
+}
+
+class ThrasherBruteFilter extends FilterTeamPermanent {
+
+ ThrasherBruteFilter() {
+ super();
+ }
+
+ ThrasherBruteFilter(final ThrasherBruteFilter effect) {
+ super(effect);
+ }
+
+ @Override
+ public ThrasherBruteFilter copy() {
+ return new ThrasherBruteFilter(this);
+ }
+
+ @Override
+ public boolean match(Permanent permanent, UUID sourceId, UUID playerId, Game game) {
+ if (super.match(permanent, sourceId, playerId, game)) {
+ if (sourceId.equals(permanent.getId())) {
+ return true;
+ } else {
+ if (permanent.hasSubtype(SubType.WARRIOR, game)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/Mage.Sets/src/mage/cards/t/ThrashingBrontodon.java b/Mage.Sets/src/mage/cards/t/ThrashingBrontodon.java
index f8f27a0bf8c..8c05031ea05 100644
--- a/Mage.Sets/src/mage/cards/t/ThrashingBrontodon.java
+++ b/Mage.Sets/src/mage/cards/t/ThrashingBrontodon.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2 & L_J
*/
-public class ThrashingBrontodon extends CardImpl {
+public final class ThrashingBrontodon extends CardImpl {
public ThrashingBrontodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrashingMossdog.java b/Mage.Sets/src/mage/cards/t/ThrashingMossdog.java
index 152d22e5f13..64019329c77 100644
--- a/Mage.Sets/src/mage/cards/t/ThrashingMossdog.java
+++ b/Mage.Sets/src/mage/cards/t/ThrashingMossdog.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*/
-public class ThrashingMossdog extends CardImpl {
+public final class ThrashingMossdog extends CardImpl {
public ThrashingMossdog (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrashingMudspawn.java b/Mage.Sets/src/mage/cards/t/ThrashingMudspawn.java
index 2f67e18edd5..048cc5cf306 100644
--- a/Mage.Sets/src/mage/cards/t/ThrashingMudspawn.java
+++ b/Mage.Sets/src/mage/cards/t/ThrashingMudspawn.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class ThrashingMudspawn extends CardImpl {
+public final class ThrashingMudspawn extends CardImpl {
public ThrashingMudspawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrashingWumpus.java b/Mage.Sets/src/mage/cards/t/ThrashingWumpus.java
index 67669af6459..7c3c7e9af1a 100644
--- a/Mage.Sets/src/mage/cards/t/ThrashingWumpus.java
+++ b/Mage.Sets/src/mage/cards/t/ThrashingWumpus.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class ThrashingWumpus extends CardImpl {
+public final class ThrashingWumpus extends CardImpl {
public ThrashingWumpus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrasiosTritonHero.java b/Mage.Sets/src/mage/cards/t/ThrasiosTritonHero.java
index 97c3102cedf..bbcd0690a46 100644
--- a/Mage.Sets/src/mage/cards/t/ThrasiosTritonHero.java
+++ b/Mage.Sets/src/mage/cards/t/ThrasiosTritonHero.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class ThrasiosTritonHero extends CardImpl {
+public final class ThrasiosTritonHero extends CardImpl {
public ThrasiosTritonHero(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Thraximundar.java b/Mage.Sets/src/mage/cards/t/Thraximundar.java
index 13f653e2c87..261e28a0e0f 100644
--- a/Mage.Sets/src/mage/cards/t/Thraximundar.java
+++ b/Mage.Sets/src/mage/cards/t/Thraximundar.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class Thraximundar extends CardImpl {
+public final class Thraximundar extends CardImpl {
public Thraximundar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThreadsOfDisloyalty.java b/Mage.Sets/src/mage/cards/t/ThreadsOfDisloyalty.java
index 2f8847271b5..7d9ed04ab88 100644
--- a/Mage.Sets/src/mage/cards/t/ThreadsOfDisloyalty.java
+++ b/Mage.Sets/src/mage/cards/t/ThreadsOfDisloyalty.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ThreadsOfDisloyalty extends CardImpl {
+public final class ThreadsOfDisloyalty extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with converted mana cost 2 or less");
diff --git a/Mage.Sets/src/mage/cards/t/Threaten.java b/Mage.Sets/src/mage/cards/t/Threaten.java
index 99759fa85d7..28b82dc4d06 100644
--- a/Mage.Sets/src/mage/cards/t/Threaten.java
+++ b/Mage.Sets/src/mage/cards/t/Threaten.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Threaten extends CardImpl {
+public final class Threaten extends CardImpl {
public Threaten(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThreeDreams.java b/Mage.Sets/src/mage/cards/t/ThreeDreams.java
index a77c7fe9d3e..5d85f848a1d 100644
--- a/Mage.Sets/src/mage/cards/t/ThreeDreams.java
+++ b/Mage.Sets/src/mage/cards/t/ThreeDreams.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class ThreeDreams extends CardImpl {
+public final class ThreeDreams extends CardImpl {
public ThreeDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThreeTragedies.java b/Mage.Sets/src/mage/cards/t/ThreeTragedies.java
index 0180cf5e5b4..a1861cb8bfc 100644
--- a/Mage.Sets/src/mage/cards/t/ThreeTragedies.java
+++ b/Mage.Sets/src/mage/cards/t/ThreeTragedies.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class ThreeTragedies extends CardImpl {
+public final class ThreeTragedies extends CardImpl {
public ThreeTragedies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThreeVisits.java b/Mage.Sets/src/mage/cards/t/ThreeVisits.java
index 9ce72fbdcba..7a8c4d70b46 100644
--- a/Mage.Sets/src/mage/cards/t/ThreeVisits.java
+++ b/Mage.Sets/src/mage/cards/t/ThreeVisits.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class ThreeVisits extends CardImpl {
+public final class ThreeVisits extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("Forest");
static {
diff --git a/Mage.Sets/src/mage/cards/t/ThreeWishes.java b/Mage.Sets/src/mage/cards/t/ThreeWishes.java
index 67f6b3e5210..66e63036c69 100644
--- a/Mage.Sets/src/mage/cards/t/ThreeWishes.java
+++ b/Mage.Sets/src/mage/cards/t/ThreeWishes.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class ThreeWishes extends CardImpl {
+public final class ThreeWishes extends CardImpl {
public ThreeWishes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThresherBeast.java b/Mage.Sets/src/mage/cards/t/ThresherBeast.java
index 032bebd53a1..eb155f4bfb7 100644
--- a/Mage.Sets/src/mage/cards/t/ThresherBeast.java
+++ b/Mage.Sets/src/mage/cards/t/ThresherBeast.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class ThresherBeast extends CardImpl {
+public final class ThresherBeast extends CardImpl {
public ThresherBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThresherLizard.java b/Mage.Sets/src/mage/cards/t/ThresherLizard.java
index 430012a7107..0f8dc33e4f4 100644
--- a/Mage.Sets/src/mage/cards/t/ThresherLizard.java
+++ b/Mage.Sets/src/mage/cards/t/ThresherLizard.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author stravant
*/
-public class ThresherLizard extends CardImpl {
+public final class ThresherLizard extends CardImpl {
public ThresherLizard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrillKillAssassin.java b/Mage.Sets/src/mage/cards/t/ThrillKillAssassin.java
index d463ffead8a..7452141a476 100644
--- a/Mage.Sets/src/mage/cards/t/ThrillKillAssassin.java
+++ b/Mage.Sets/src/mage/cards/t/ThrillKillAssassin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ThrillKillAssassin extends CardImpl {
+public final class ThrillKillAssassin extends CardImpl {
public ThrillKillAssassin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrillOfTheHunt.java b/Mage.Sets/src/mage/cards/t/ThrillOfTheHunt.java
index 6a97fd46785..b9cb592eed5 100644
--- a/Mage.Sets/src/mage/cards/t/ThrillOfTheHunt.java
+++ b/Mage.Sets/src/mage/cards/t/ThrillOfTheHunt.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ThrillOfTheHunt extends CardImpl {
+public final class ThrillOfTheHunt extends CardImpl {
public ThrillOfTheHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrillingEncore.java b/Mage.Sets/src/mage/cards/t/ThrillingEncore.java
new file mode 100644
index 00000000000..19a472833ea
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/t/ThrillingEncore.java
@@ -0,0 +1,102 @@
+/*
+ * 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.t;
+
+import java.util.UUID;
+import mage.MageObjectReference;
+import mage.abilities.Ability;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.game.Game;
+import mage.target.targetpointer.FixedTarget;
+import mage.watchers.common.CardsPutIntoGraveyardWatcher;
+
+/**
+ *
+ * @author L_J
+ */
+public final class ThrillingEncore extends CardImpl {
+
+ public ThrillingEncore(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{B}");
+
+ // Put onto the battlefield under your control all creature cards in all graveyards that were put there from the battlefield this turn.
+ this.getSpellAbility().addEffect(new ThrillingEncoreEffect());
+ this.getSpellAbility().addWatcher(new CardsPutIntoGraveyardWatcher());
+ }
+
+ public ThrillingEncore(final ThrillingEncore card) {
+ super(card);
+ }
+
+ @Override
+ public ThrillingEncore copy() {
+ return new ThrillingEncore(this);
+ }
+}
+
+class ThrillingEncoreEffect extends OneShotEffect {
+
+ public ThrillingEncoreEffect() {
+ super(Outcome.PutCardInPlay);
+ this.staticText = "Put onto the battlefield under your control all creature cards in all graveyards that were put there from the battlefield this turn";
+ }
+
+ public ThrillingEncoreEffect(final ThrillingEncoreEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ThrillingEncoreEffect copy() {
+ return new ThrillingEncoreEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ CardsPutIntoGraveyardWatcher watcher = (CardsPutIntoGraveyardWatcher) game.getState().getWatchers().get(CardsPutIntoGraveyardWatcher.class.getSimpleName());
+ if (watcher != null) {
+ for (MageObjectReference mor : watcher.getCardsPutToGraveyardFromBattlefield()) {
+ if (game.getState().getZoneChangeCounter(mor.getSourceId()) == mor.getZoneChangeCounter()) {
+ Card card = mor.getCard(game);
+ if (card != null && card.isCreature()) {
+ Effect effect = new ReturnFromGraveyardToBattlefieldTargetEffect();
+ effect.setTargetPointer(new FixedTarget(card.getId(), card.getZoneChangeCounter(game)));
+ effect.apply(game, source);
+ }
+ }
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/t/ThrissNantukoPrimus.java b/Mage.Sets/src/mage/cards/t/ThrissNantukoPrimus.java
index 7d77ec138a4..22c01115cc3 100644
--- a/Mage.Sets/src/mage/cards/t/ThrissNantukoPrimus.java
+++ b/Mage.Sets/src/mage/cards/t/ThrissNantukoPrimus.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class ThrissNantukoPrimus extends CardImpl {
+public final class ThrissNantukoPrimus extends CardImpl {
public ThrissNantukoPrimus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/Thrive.java b/Mage.Sets/src/mage/cards/t/Thrive.java
index 18a591b02c0..f8a9f5a003f 100644
--- a/Mage.Sets/src/mage/cards/t/Thrive.java
+++ b/Mage.Sets/src/mage/cards/t/Thrive.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class Thrive extends CardImpl {
+public final class Thrive extends CardImpl {
public Thrive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrivingGrubs.java b/Mage.Sets/src/mage/cards/t/ThrivingGrubs.java
index 18999206064..49ac2010ef9 100644
--- a/Mage.Sets/src/mage/cards/t/ThrivingGrubs.java
+++ b/Mage.Sets/src/mage/cards/t/ThrivingGrubs.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class ThrivingGrubs extends CardImpl {
+public final class ThrivingGrubs extends CardImpl {
public ThrivingGrubs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrivingIbex.java b/Mage.Sets/src/mage/cards/t/ThrivingIbex.java
index 9b1172100fc..6594824b9a6 100644
--- a/Mage.Sets/src/mage/cards/t/ThrivingIbex.java
+++ b/Mage.Sets/src/mage/cards/t/ThrivingIbex.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class ThrivingIbex extends CardImpl {
+public final class ThrivingIbex extends CardImpl {
public ThrivingIbex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrivingRats.java b/Mage.Sets/src/mage/cards/t/ThrivingRats.java
index 01ab4372331..778c57cd719 100644
--- a/Mage.Sets/src/mage/cards/t/ThrivingRats.java
+++ b/Mage.Sets/src/mage/cards/t/ThrivingRats.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class ThrivingRats extends CardImpl {
+public final class ThrivingRats extends CardImpl {
public ThrivingRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrivingRhino.java b/Mage.Sets/src/mage/cards/t/ThrivingRhino.java
index 8d469140c85..ee063dbcfa7 100644
--- a/Mage.Sets/src/mage/cards/t/ThrivingRhino.java
+++ b/Mage.Sets/src/mage/cards/t/ThrivingRhino.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class ThrivingRhino extends CardImpl {
+public final class ThrivingRhino extends CardImpl {
public ThrivingRhino(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrivingTurtle.java b/Mage.Sets/src/mage/cards/t/ThrivingTurtle.java
index d3935448fac..8bda33c15ba 100644
--- a/Mage.Sets/src/mage/cards/t/ThrivingTurtle.java
+++ b/Mage.Sets/src/mage/cards/t/ThrivingTurtle.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class ThrivingTurtle extends CardImpl {
+public final class ThrivingTurtle extends CardImpl {
public ThrivingTurtle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThroatSlitter.java b/Mage.Sets/src/mage/cards/t/ThroatSlitter.java
index a34785d4d3b..a4f5b582c80 100644
--- a/Mage.Sets/src/mage/cards/t/ThroatSlitter.java
+++ b/Mage.Sets/src/mage/cards/t/ThroatSlitter.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class ThroatSlitter extends CardImpl {
+public final class ThroatSlitter extends CardImpl {
public ThroatSlitter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThromokTheInsatiable.java b/Mage.Sets/src/mage/cards/t/ThromokTheInsatiable.java
index f3cd1fd3841..b719f26d3fd 100644
--- a/Mage.Sets/src/mage/cards/t/ThromokTheInsatiable.java
+++ b/Mage.Sets/src/mage/cards/t/ThromokTheInsatiable.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
*
* @author LevelX2
*/
-public class ThromokTheInsatiable extends CardImpl {
+public final class ThromokTheInsatiable extends CardImpl {
public ThromokTheInsatiable(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThroneOfBone.java b/Mage.Sets/src/mage/cards/t/ThroneOfBone.java
index 6ca8a8adc8f..4f2696a25e5 100644
--- a/Mage.Sets/src/mage/cards/t/ThroneOfBone.java
+++ b/Mage.Sets/src/mage/cards/t/ThroneOfBone.java
@@ -46,7 +46,7 @@ import mage.game.stack.Spell;
* @author KholdFuzion
*/
-public class ThroneOfBone extends CardImpl {
+public final class ThroneOfBone extends CardImpl {
public ThroneOfBone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/t/ThroneOfEmpires.java b/Mage.Sets/src/mage/cards/t/ThroneOfEmpires.java
index a601a4fb875..4dd44b68ad4 100644
--- a/Mage.Sets/src/mage/cards/t/ThroneOfEmpires.java
+++ b/Mage.Sets/src/mage/cards/t/ThroneOfEmpires.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.Token;
/**
* @author nantuko
*/
-public class ThroneOfEmpires extends CardImpl {
+public final class ThroneOfEmpires extends CardImpl {
public ThroneOfEmpires(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/ThroneOfTheGodPharaoh.java b/Mage.Sets/src/mage/cards/t/ThroneOfTheGodPharaoh.java
index 58a2f658d1f..992a34ee04c 100644
--- a/Mage.Sets/src/mage/cards/t/ThroneOfTheGodPharaoh.java
+++ b/Mage.Sets/src/mage/cards/t/ThroneOfTheGodPharaoh.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author Styxo
*/
-public class ThroneOfTheGodPharaoh extends CardImpl {
+public final class ThroneOfTheGodPharaoh extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("tapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/t/ThroneOfTheHighCity.java b/Mage.Sets/src/mage/cards/t/ThroneOfTheHighCity.java
index 2c7e5aad6c5..1a5ea193669 100644
--- a/Mage.Sets/src/mage/cards/t/ThroneOfTheHighCity.java
+++ b/Mage.Sets/src/mage/cards/t/ThroneOfTheHighCity.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ThroneOfTheHighCity extends CardImpl {
+public final class ThroneOfTheHighCity extends CardImpl {
public ThroneOfTheHighCity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/t/ThroneWarden.java b/Mage.Sets/src/mage/cards/t/ThroneWarden.java
index ffaaf0957be..9bfbfa442c3 100644
--- a/Mage.Sets/src/mage/cards/t/ThroneWarden.java
+++ b/Mage.Sets/src/mage/cards/t/ThroneWarden.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class ThroneWarden extends CardImpl {
+public final class ThroneWarden extends CardImpl {
public ThroneWarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThroneofGeth.java b/Mage.Sets/src/mage/cards/t/ThroneofGeth.java
index efe781ff06b..1543177cca6 100644
--- a/Mage.Sets/src/mage/cards/t/ThroneofGeth.java
+++ b/Mage.Sets/src/mage/cards/t/ThroneofGeth.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class ThroneofGeth extends CardImpl {
+public final class ThroneofGeth extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact");
static {
diff --git a/Mage.Sets/src/mage/cards/t/Throttle.java b/Mage.Sets/src/mage/cards/t/Throttle.java
index 536a397ca4f..b1a26497eca 100644
--- a/Mage.Sets/src/mage/cards/t/Throttle.java
+++ b/Mage.Sets/src/mage/cards/t/Throttle.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Throttle extends CardImpl {
+public final class Throttle extends CardImpl {
public Throttle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThroughTheBreach.java b/Mage.Sets/src/mage/cards/t/ThroughTheBreach.java
index 579d9fe66b8..97d037f722f 100644
--- a/Mage.Sets/src/mage/cards/t/ThroughTheBreach.java
+++ b/Mage.Sets/src/mage/cards/t/ThroughTheBreach.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ThroughTheBreach extends CardImpl {
+public final class ThroughTheBreach extends CardImpl {
public ThroughTheBreach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrowingKnife.java b/Mage.Sets/src/mage/cards/t/ThrowingKnife.java
index 825fbd164c5..b1a09c39529 100644
--- a/Mage.Sets/src/mage/cards/t/ThrowingKnife.java
+++ b/Mage.Sets/src/mage/cards/t/ThrowingKnife.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
* @author LoneFox
*/
-public class ThrowingKnife extends CardImpl {
+public final class ThrowingKnife extends CardImpl {
public ThrowingKnife(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrullChampion.java b/Mage.Sets/src/mage/cards/t/ThrullChampion.java
index a55a78d39be..0f167afa5f0 100644
--- a/Mage.Sets/src/mage/cards/t/ThrullChampion.java
+++ b/Mage.Sets/src/mage/cards/t/ThrullChampion.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author MarcoMarin
*/
-public class ThrullChampion extends CardImpl {
+public final class ThrullChampion extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Thrull creatures");
diff --git a/Mage.Sets/src/mage/cards/t/ThrullParasite.java b/Mage.Sets/src/mage/cards/t/ThrullParasite.java
index 66409b89651..42ac9fbd0f2 100644
--- a/Mage.Sets/src/mage/cards/t/ThrullParasite.java
+++ b/Mage.Sets/src/mage/cards/t/ThrullParasite.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class ThrullParasite extends CardImpl {
+public final class ThrullParasite extends CardImpl {
public ThrullParasite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrullRetainer.java b/Mage.Sets/src/mage/cards/t/ThrullRetainer.java
index 00e1002bc74..7445ae0de53 100644
--- a/Mage.Sets/src/mage/cards/t/ThrullRetainer.java
+++ b/Mage.Sets/src/mage/cards/t/ThrullRetainer.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author MarcoMarin
*/
-public class ThrullRetainer extends CardImpl {
+public final class ThrullRetainer extends CardImpl {
public ThrullRetainer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrullSurgeon.java b/Mage.Sets/src/mage/cards/t/ThrullSurgeon.java
index 6d1fc047154..76b11a1b9b7 100644
--- a/Mage.Sets/src/mage/cards/t/ThrullSurgeon.java
+++ b/Mage.Sets/src/mage/cards/t/ThrullSurgeon.java
@@ -52,7 +52,7 @@ import mage.target.TargetPlayer;
* @author jeffwadsworth
*
*/
-public class ThrullSurgeon extends CardImpl {
+public final class ThrullSurgeon extends CardImpl {
public ThrullSurgeon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrullWizard.java b/Mage.Sets/src/mage/cards/t/ThrullWizard.java
index 0e6663321f0..59435be92f3 100644
--- a/Mage.Sets/src/mage/cards/t/ThrullWizard.java
+++ b/Mage.Sets/src/mage/cards/t/ThrullWizard.java
@@ -52,7 +52,7 @@ import mage.target.TargetSpell;
*
* @author L_J
*/
-public class ThrullWizard extends CardImpl {
+public final class ThrullWizard extends CardImpl {
private static final FilterSpell filter = new FilterSpell("black spell");
static{
filter.add(new ColorPredicate(ObjectColor.BLACK));
diff --git a/Mage.Sets/src/mage/cards/t/ThrummingStone.java b/Mage.Sets/src/mage/cards/t/ThrummingStone.java
index db4640bf99b..f57b6963ef9 100644
--- a/Mage.Sets/src/mage/cards/t/ThrummingStone.java
+++ b/Mage.Sets/src/mage/cards/t/ThrummingStone.java
@@ -41,7 +41,7 @@ import mage.filter.FilterSpell;
/**
* @author klayhamn
*/
-public class ThrummingStone extends CardImpl {
+public final class ThrummingStone extends CardImpl {
public ThrummingStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/t/Thrummingbird.java b/Mage.Sets/src/mage/cards/t/Thrummingbird.java
index d45910ee290..5a1c0168d51 100644
--- a/Mage.Sets/src/mage/cards/t/Thrummingbird.java
+++ b/Mage.Sets/src/mage/cards/t/Thrummingbird.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
/**
* @author Loki, nantuko, North
*/
-public class Thrummingbird extends CardImpl {
+public final class Thrummingbird extends CardImpl {
public Thrummingbird(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThrunTheLastTroll.java b/Mage.Sets/src/mage/cards/t/ThrunTheLastTroll.java
index 7daa4393d8f..b0bd0ecc41f 100644
--- a/Mage.Sets/src/mage/cards/t/ThrunTheLastTroll.java
+++ b/Mage.Sets/src/mage/cards/t/ThrunTheLastTroll.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ThrunTheLastTroll extends CardImpl {
+public final class ThrunTheLastTroll extends CardImpl {
public ThrunTheLastTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/Thumbscrews.java b/Mage.Sets/src/mage/cards/t/Thumbscrews.java
index c8f89fe0cdb..9b73457e0da 100644
--- a/Mage.Sets/src/mage/cards/t/Thumbscrews.java
+++ b/Mage.Sets/src/mage/cards/t/Thumbscrews.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author fireshoes
*/
-public class Thumbscrews extends CardImpl {
+public final class Thumbscrews extends CardImpl {
public Thumbscrews(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderBrute.java b/Mage.Sets/src/mage/cards/t/ThunderBrute.java
index bdfab986d12..952bbbd3eb6 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderBrute.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderBrute.java
@@ -47,7 +47,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class ThunderBrute extends CardImpl {
+public final class ThunderBrute extends CardImpl {
public ThunderBrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderDragon.java b/Mage.Sets/src/mage/cards/t/ThunderDragon.java
index 8676ae840b0..c50c26cddda 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderDragon.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderDragon.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author FenrisulfrX
*/
-public class ThunderDragon extends CardImpl {
+public final class ThunderDragon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderOfHooves.java b/Mage.Sets/src/mage/cards/t/ThunderOfHooves.java
index 1c9f9b4867f..483ac0a8889 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderOfHooves.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderOfHooves.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class ThunderOfHooves extends CardImpl {
+public final class ThunderOfHooves extends CardImpl {
private static final FilterCreaturePermanent filterNotFlying = new FilterCreaturePermanent();
private static final FilterPermanent filterBeasts = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/t/ThunderSpirit.java b/Mage.Sets/src/mage/cards/t/ThunderSpirit.java
index adbddea4b4f..5d84c27c3b5 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderSpirit.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderSpirit.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ThunderSpirit extends CardImpl {
+public final class ThunderSpirit extends CardImpl {
public ThunderSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderStrike.java b/Mage.Sets/src/mage/cards/t/ThunderStrike.java
index 5dcdff49020..690e7105b48 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderStrike.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderStrike.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ThunderStrike extends CardImpl {
+public final class ThunderStrike extends CardImpl {
public ThunderStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderThrashElder.java b/Mage.Sets/src/mage/cards/t/ThunderThrashElder.java
index 002de62a160..b8ff6df9c7c 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderThrashElder.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderThrashElder.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ThunderThrashElder extends CardImpl {
+public final class ThunderThrashElder extends CardImpl {
public ThunderThrashElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderTotem.java b/Mage.Sets/src/mage/cards/t/ThunderTotem.java
index 4521563011f..3b622b425d8 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderTotem.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderTotem.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class ThunderTotem extends CardImpl {
+public final class ThunderTotem extends CardImpl {
public ThunderTotem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderWall.java b/Mage.Sets/src/mage/cards/t/ThunderWall.java
index 4c358cef38f..047078640b2 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderWall.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderWall.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author icetc
*/
-public class ThunderWall extends CardImpl {
+public final class ThunderWall extends CardImpl {
public ThunderWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderbladeCharge.java b/Mage.Sets/src/mage/cards/t/ThunderbladeCharge.java
index 73f3e813c30..b0f16019e84 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderbladeCharge.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderbladeCharge.java
@@ -28,6 +28,7 @@
package mage.cards.t;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.ControlledCreaturesDealCombatDamagePlayerTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
@@ -48,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class ThunderbladeCharge extends CardImpl {
+public final class ThunderbladeCharge extends CardImpl {
public ThunderbladeCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
@@ -96,7 +97,7 @@ class ThunderbladeChargeCastEffect extends OneShotEffect {
if (controller != null
&& sourceCard != null
&& Zone.GRAVEYARD == game.getState().getZone(sourceCard.getId())) {
- controller.cast(sourceCard.getSpellAbility(), game, true);
+ controller.cast(sourceCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
return true;
}
return false;
diff --git a/Mage.Sets/src/mage/cards/t/Thunderblust.java b/Mage.Sets/src/mage/cards/t/Thunderblust.java
index b19583cc8d1..e4a52e22860 100644
--- a/Mage.Sets/src/mage/cards/t/Thunderblust.java
+++ b/Mage.Sets/src/mage/cards/t/Thunderblust.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author jeffwadsworth
*/
-public class Thunderblust extends CardImpl {
+public final class Thunderblust extends CardImpl {
private static final String rule = "{this} has trample as long as it has a -1/-1 counter on it";
diff --git a/Mage.Sets/src/mage/cards/t/Thunderbolt.java b/Mage.Sets/src/mage/cards/t/Thunderbolt.java
index b88a01815d1..22c77c26f76 100644
--- a/Mage.Sets/src/mage/cards/t/Thunderbolt.java
+++ b/Mage.Sets/src/mage/cards/t/Thunderbolt.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author North
*/
-public class Thunderbolt extends CardImpl {
+public final class Thunderbolt extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderbreakRegent.java b/Mage.Sets/src/mage/cards/t/ThunderbreakRegent.java
index b751837ded5..1ceebd2f339 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderbreakRegent.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderbreakRegent.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ThunderbreakRegent extends CardImpl {
+public final class ThunderbreakRegent extends CardImpl {
public ThunderbreakRegent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Thunderclap.java b/Mage.Sets/src/mage/cards/t/Thunderclap.java
index e4f0731f42a..fca2c1ffd8c 100644
--- a/Mage.Sets/src/mage/cards/t/Thunderclap.java
+++ b/Mage.Sets/src/mage/cards/t/Thunderclap.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Thunderclap extends CardImpl {
+public final class Thunderclap extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Mountain");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderclapWyvern.java b/Mage.Sets/src/mage/cards/t/ThunderclapWyvern.java
index a3eb20740a6..f50e4c09c70 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderclapWyvern.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderclapWyvern.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class ThunderclapWyvern extends CardImpl {
+public final class ThunderclapWyvern extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control with flying");
diff --git a/Mage.Sets/src/mage/cards/t/ThundercloudElemental.java b/Mage.Sets/src/mage/cards/t/ThundercloudElemental.java
index 337097a8332..02fbc8e1483 100644
--- a/Mage.Sets/src/mage/cards/t/ThundercloudElemental.java
+++ b/Mage.Sets/src/mage/cards/t/ThundercloudElemental.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class ThundercloudElemental extends CardImpl {
+public final class ThundercloudElemental extends CardImpl {
private static final FilterCreaturePermanent toughnessFilter = new FilterCreaturePermanent("creatures with toughness 2 or less");
private static final FilterCreaturePermanent flyingFilter = new FilterCreaturePermanent("All other creatures");
diff --git a/Mage.Sets/src/mage/cards/t/ThundercloudShaman.java b/Mage.Sets/src/mage/cards/t/ThundercloudShaman.java
index fe3b8590c0a..6d52077b3e8 100644
--- a/Mage.Sets/src/mage/cards/t/ThundercloudShaman.java
+++ b/Mage.Sets/src/mage/cards/t/ThundercloudShaman.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class ThundercloudShaman extends CardImpl {
+public final class ThundercloudShaman extends CardImpl {
private static final FilterCreaturePermanent filterGiants = new FilterCreaturePermanent("equal to the number of Giants you control");
private static final FilterCreaturePermanent filterNonGiants = new FilterCreaturePermanent("non-Giant creature");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderfootBaloth.java b/Mage.Sets/src/mage/cards/t/ThunderfootBaloth.java
index bbbec4aa90b..85aeaf64b4c 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderfootBaloth.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderfootBaloth.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author emerald000
*/
-public class ThunderfootBaloth extends CardImpl {
+public final class ThunderfootBaloth extends CardImpl {
public ThunderfootBaloth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/Thunderheads.java b/Mage.Sets/src/mage/cards/t/Thunderheads.java
index 8286b1dd578..d3e77bd9b8f 100644
--- a/Mage.Sets/src/mage/cards/t/Thunderheads.java
+++ b/Mage.Sets/src/mage/cards/t/Thunderheads.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.WeirdToken;
*
* @author nigelzor
*/
-public class Thunderheads extends CardImpl {
+public final class Thunderheads extends CardImpl {
public Thunderheads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderherdMigration.java b/Mage.Sets/src/mage/cards/t/ThunderherdMigration.java
index 8ab17476649..8d517499d6a 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderherdMigration.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderherdMigration.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class ThunderherdMigration extends CardImpl {
+public final class ThunderherdMigration extends CardImpl {
private static final FilterCard filter = new FilterCard("a Dinosaur card from your hand");
@@ -64,7 +64,7 @@ public class ThunderherdMigration extends CardImpl {
"reveal a Dinosaur card from your hand or pay {1}"));
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true));
}
public ThunderherdMigration(final ThunderherdMigration card) {
diff --git a/Mage.Sets/src/mage/cards/t/ThunderingGiant.java b/Mage.Sets/src/mage/cards/t/ThunderingGiant.java
index 3db5ba223c0..e4f2578dd83 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderingGiant.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderingGiant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ThunderingGiant extends CardImpl {
+public final class ThunderingGiant extends CardImpl {
public ThunderingGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderingSpineback.java b/Mage.Sets/src/mage/cards/t/ThunderingSpineback.java
index 29df536a798..1fa3e58a2eb 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderingSpineback.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderingSpineback.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.DinosaurToken;
*
* @author TheElk801
*/
-public class ThunderingSpineback extends CardImpl {
+public final class ThunderingSpineback extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dinosaurs");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderingTanadon.java b/Mage.Sets/src/mage/cards/t/ThunderingTanadon.java
index 030a3ad1cfc..b601d41b744 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderingTanadon.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderingTanadon.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ThunderingTanadon extends CardImpl {
+public final class ThunderingTanadon extends CardImpl {
public ThunderingTanadon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{G/P}{G/P}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderingWurm.java b/Mage.Sets/src/mage/cards/t/ThunderingWurm.java
index b4180c92c67..99cad4c1c71 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderingWurm.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderingWurm.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterLandCard;
*
* @author fireshoes
*/
-public class ThunderingWurm extends CardImpl {
+public final class ThunderingWurm extends CardImpl {
public ThunderingWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/Thundermare.java b/Mage.Sets/src/mage/cards/t/Thundermare.java
index 45ed4058b97..0f1c6042be5 100644
--- a/Mage.Sets/src/mage/cards/t/Thundermare.java
+++ b/Mage.Sets/src/mage/cards/t/Thundermare.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LoneFox
*/
-public class Thundermare extends CardImpl {
+public final class Thundermare extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
diff --git a/Mage.Sets/src/mage/cards/t/ThundermawHellkite.java b/Mage.Sets/src/mage/cards/t/ThundermawHellkite.java
index 390ed9461c7..cd2f80c7b7c 100644
--- a/Mage.Sets/src/mage/cards/t/ThundermawHellkite.java
+++ b/Mage.Sets/src/mage/cards/t/ThundermawHellkite.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class ThundermawHellkite extends CardImpl {
+public final class ThundermawHellkite extends CardImpl {
final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying your opponents control");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderousMight.java b/Mage.Sets/src/mage/cards/t/ThunderousMight.java
index 4ccc37d2965..38918e65d83 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderousMight.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderousMight.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ThunderousMight extends CardImpl {
+public final class ThunderousMight extends CardImpl {
public ThunderousMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderousWrath.java b/Mage.Sets/src/mage/cards/t/ThunderousWrath.java
index f2757f79c4e..47816ebd54e 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderousWrath.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderousWrath.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class ThunderousWrath extends CardImpl {
+public final class ThunderousWrath extends CardImpl {
public ThunderousWrath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderscapeApprentice.java b/Mage.Sets/src/mage/cards/t/ThunderscapeApprentice.java
index 212c322ed1e..b56e859e040 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderscapeApprentice.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderscapeApprentice.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ThunderscapeApprentice extends CardImpl {
+public final class ThunderscapeApprentice extends CardImpl {
public ThunderscapeApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderscapeBattlemage.java b/Mage.Sets/src/mage/cards/t/ThunderscapeBattlemage.java
index 3d4ca987891..f0375095b68 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderscapeBattlemage.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderscapeBattlemage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author FenrisulfrX
*/
-public class ThunderscapeBattlemage extends CardImpl {
+public final class ThunderscapeBattlemage extends CardImpl {
public ThunderscapeBattlemage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderscapeFamiliar.java b/Mage.Sets/src/mage/cards/t/ThunderscapeFamiliar.java
index c23d59f7ddd..bcf08b3db87 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderscapeFamiliar.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderscapeFamiliar.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class ThunderscapeFamiliar extends CardImpl {
+public final class ThunderscapeFamiliar extends CardImpl {
private static final FilterCard filter = new FilterCard("Black spells and green spells");
diff --git a/Mage.Sets/src/mage/cards/t/ThunderscapeMaster.java b/Mage.Sets/src/mage/cards/t/ThunderscapeMaster.java
index f7e84c7e1a8..b342209c973 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderscapeMaster.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderscapeMaster.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class ThunderscapeMaster extends CardImpl {
+public final class ThunderscapeMaster extends CardImpl {
public ThunderscapeMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ThundersongTrumpeter.java b/Mage.Sets/src/mage/cards/t/ThundersongTrumpeter.java
index 408bb96c4b7..9ccfe6f0c19 100644
--- a/Mage.Sets/src/mage/cards/t/ThundersongTrumpeter.java
+++ b/Mage.Sets/src/mage/cards/t/ThundersongTrumpeter.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Jgod
*/
-public class ThundersongTrumpeter extends CardImpl {
+public final class ThundersongTrumpeter extends CardImpl {
public ThundersongTrumpeter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Thunderstaff.java b/Mage.Sets/src/mage/cards/t/Thunderstaff.java
index c5879cec42b..1a53f7fc729 100644
--- a/Mage.Sets/src/mage/cards/t/Thunderstaff.java
+++ b/Mage.Sets/src/mage/cards/t/Thunderstaff.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class Thunderstaff extends CardImpl {
+public final class Thunderstaff extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Attacking creatures");
static {
diff --git a/Mage.Sets/src/mage/cards/t/Thwart.java b/Mage.Sets/src/mage/cards/t/Thwart.java
index cacfd947309..9030b0617e8 100644
--- a/Mage.Sets/src/mage/cards/t/Thwart.java
+++ b/Mage.Sets/src/mage/cards/t/Thwart.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author markedagain
*/
-public class Thwart extends CardImpl {
+public final class Thwart extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Islands");
static{
filter.add(new SubtypePredicate(SubType.ISLAND));
diff --git a/Mage.Sets/src/mage/cards/t/TianaShipsCaretaker.java b/Mage.Sets/src/mage/cards/t/TianaShipsCaretaker.java
index 1924902e087..c25447b7471 100644
--- a/Mage.Sets/src/mage/cards/t/TianaShipsCaretaker.java
+++ b/Mage.Sets/src/mage/cards/t/TianaShipsCaretaker.java
@@ -58,7 +58,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author spjspj
*/
-public class TianaShipsCaretaker extends CardImpl {
+public final class TianaShipsCaretaker extends CardImpl {
public TianaShipsCaretaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TibaltTheFiendBlooded.java b/Mage.Sets/src/mage/cards/t/TibaltTheFiendBlooded.java
index 15a47fdcfa1..1ab3237d6e7 100644
--- a/Mage.Sets/src/mage/cards/t/TibaltTheFiendBlooded.java
+++ b/Mage.Sets/src/mage/cards/t/TibaltTheFiendBlooded.java
@@ -63,7 +63,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class TibaltTheFiendBlooded extends CardImpl {
+public final class TibaltTheFiendBlooded extends CardImpl {
public TibaltTheFiendBlooded(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TiborAndLumia.java b/Mage.Sets/src/mage/cards/t/TiborAndLumia.java
index a1f9937ffee..ebe4628569a 100644
--- a/Mage.Sets/src/mage/cards/t/TiborAndLumia.java
+++ b/Mage.Sets/src/mage/cards/t/TiborAndLumia.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class TiborAndLumia extends CardImpl {
+public final class TiborAndLumia extends CardImpl {
private static final FilterSpell filterBlue = new FilterSpell("a blue spell");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/t/TickingGnomes.java b/Mage.Sets/src/mage/cards/t/TickingGnomes.java
index 4bb74237cc6..98cbfef898d 100644
--- a/Mage.Sets/src/mage/cards/t/TickingGnomes.java
+++ b/Mage.Sets/src/mage/cards/t/TickingGnomes.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class TickingGnomes extends CardImpl {
+public final class TickingGnomes extends CardImpl {
public TickingGnomes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TidalBore.java b/Mage.Sets/src/mage/cards/t/TidalBore.java
index 3bbf635c580..14a9973dfc3 100644
--- a/Mage.Sets/src/mage/cards/t/TidalBore.java
+++ b/Mage.Sets/src/mage/cards/t/TidalBore.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author markedagain
*/
-public class TidalBore extends CardImpl {
+public final class TidalBore extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an Island");
diff --git a/Mage.Sets/src/mage/cards/t/TidalControl.java b/Mage.Sets/src/mage/cards/t/TidalControl.java
index a6d02a23fa9..d2f3283dec2 100644
--- a/Mage.Sets/src/mage/cards/t/TidalControl.java
+++ b/Mage.Sets/src/mage/cards/t/TidalControl.java
@@ -53,7 +53,7 @@ import mage.target.TargetSpell;
*
* @author L_J
*/
-public class TidalControl extends CardImpl {
+public final class TidalControl extends CardImpl {
private static final FilterSpell filter = new FilterSpell("red or green spell");
static{
filter.add(Predicates.or(new ColorPredicate(ObjectColor.RED), new ColorPredicate(ObjectColor.GREEN)));
diff --git a/Mage.Sets/src/mage/cards/t/TidalCourier.java b/Mage.Sets/src/mage/cards/t/TidalCourier.java
index 289ebab72d5..f3d6037d0d9 100644
--- a/Mage.Sets/src/mage/cards/t/TidalCourier.java
+++ b/Mage.Sets/src/mage/cards/t/TidalCourier.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class TidalCourier extends CardImpl {
+public final class TidalCourier extends CardImpl {
private static final FilterCard filter = new FilterCard("Merfolk cards");
diff --git a/Mage.Sets/src/mage/cards/t/TidalFlats.java b/Mage.Sets/src/mage/cards/t/TidalFlats.java
index 60d0f3cc779..ef1f4d3fa15 100644
--- a/Mage.Sets/src/mage/cards/t/TidalFlats.java
+++ b/Mage.Sets/src/mage/cards/t/TidalFlats.java
@@ -59,11 +59,11 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class TidalFlats extends CardImpl {
+public final class TidalFlats extends CardImpl {
public TidalFlats(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
+
// {U}{U}: For each attacking creature without flying, its controller may pay {1}. If he or she doesn't, creatures you control blocking that creature gain first strike until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new TidalFlatsEffect(), new ManaCostsImpl("{U}{U}")));
}
@@ -79,8 +79,9 @@ public class TidalFlats extends CardImpl {
}
class TidalFlatsEffect extends OneShotEffect {
-
+
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature without flying");
+
static {
filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));
}
@@ -103,43 +104,45 @@ class TidalFlatsEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
game.getPlayerList();
Player controller = game.getPlayer(source.getControllerId());
- if (controller != null) {
- Player player = game.getPlayer(game.getActivePlayerId());
- Cost cost = new ManaCostsImpl("{1}");
- List affectedPermanents = new ArrayList<>();
- for (Permanent permanent : game.getState().getBattlefield().getAllActivePermanents(filter, player.getId(), game)) {
- cost.clearPaid();
- String message = "Pay " + cost.getText() + " for " + permanent.getLogName() + "? If you don't, creatures " + controller.getLogName() + " controls blocking it gain first strike until end of turn.";
- if (player != null && player.chooseUse(Outcome.Benefit, message, source, game)) {
- if (cost.pay(source, game, source.getSourceId(), player.getId(), false, null)) {
- game.informPlayers(player.getLogName() + " paid " + cost.getText() + " for " + permanent.getLogName());
- continue;
- } else {
- game.informPlayers(player.getLogName() + " didn't pay " + cost.getText() + " for " + permanent.getLogName());
- affectedPermanents.add(permanent);
- }
+ if (controller == null) {
+ return false;
+ }
+ Player player = game.getPlayer(game.getActivePlayerId());
+ if (player == null) {
+ return false;
+ }
+ Cost cost = new ManaCostsImpl("{1}");
+ List affectedPermanents = new ArrayList<>();
+ for (Permanent permanent : game.getState().getBattlefield().getAllActivePermanents(filter, player.getId(), game)) {
+ cost.clearPaid();
+ String message = "Pay " + cost.getText() + " for " + permanent.getLogName() + "? If you don't, creatures " + controller.getLogName() + " controls blocking it gain first strike until end of turn.";
+ if (player.chooseUse(Outcome.Benefit, message, source, game)) {
+ if (cost.pay(source, game, source.getSourceId(), player.getId(), false, null)) {
+ game.informPlayers(player.getLogName() + " paid " + cost.getText() + " for " + permanent.getLogName());
} else {
game.informPlayers(player.getLogName() + " didn't pay " + cost.getText() + " for " + permanent.getLogName());
affectedPermanents.add(permanent);
}
+ } else {
+ game.informPlayers(player.getLogName() + " didn't pay " + cost.getText() + " for " + permanent.getLogName());
+ affectedPermanents.add(permanent);
}
+ }
- for (Permanent permanent : affectedPermanents) {
- CombatGroup group = game.getCombat().findGroup(permanent.getId());
- if (group != null) {
- for (UUID blockerId : group.getBlockers()) {
- Permanent blocker = game.getPermanent(blockerId);
- if (blocker != null && Objects.equals(blocker.getControllerId(), controller.getId())) {
- ContinuousEffect effect = new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn);
- effect.setTargetPointer(new FixedTarget(blocker.getId()));
- game.addEffect(effect, source);
- }
+ for (Permanent permanent : affectedPermanents) {
+ CombatGroup group = game.getCombat().findGroup(permanent.getId());
+ if (group != null) {
+ for (UUID blockerId : group.getBlockers()) {
+ Permanent blocker = game.getPermanent(blockerId);
+ if (blocker != null && Objects.equals(blocker.getControllerId(), controller.getId())) {
+ ContinuousEffect effect = new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn);
+ effect.setTargetPointer(new FixedTarget(blocker.getId()));
+ game.addEffect(effect, source);
}
}
-
}
- return true;
+
}
- return false;
+ return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/t/TidalForce.java b/Mage.Sets/src/mage/cards/t/TidalForce.java
index 5d78700e4a0..ba5723bc356 100644
--- a/Mage.Sets/src/mage/cards/t/TidalForce.java
+++ b/Mage.Sets/src/mage/cards/t/TidalForce.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class TidalForce extends CardImpl {
+public final class TidalForce extends CardImpl {
public TidalForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TidalInfluence.java b/Mage.Sets/src/mage/cards/t/TidalInfluence.java
index e55bfab3358..d71d941b35b 100644
--- a/Mage.Sets/src/mage/cards/t/TidalInfluence.java
+++ b/Mage.Sets/src/mage/cards/t/TidalInfluence.java
@@ -61,7 +61,7 @@ import mage.game.events.GameEvent;
*
* @author LoneFox
*/
-public class TidalInfluence extends CardImpl {
+public final class TidalInfluence extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creatures");
diff --git a/Mage.Sets/src/mage/cards/t/TidalKraken.java b/Mage.Sets/src/mage/cards/t/TidalKraken.java
index e0e7177e731..c2f9e858afb 100644
--- a/Mage.Sets/src/mage/cards/t/TidalKraken.java
+++ b/Mage.Sets/src/mage/cards/t/TidalKraken.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class TidalKraken extends CardImpl {
+public final class TidalKraken extends CardImpl {
public TidalKraken(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TidalSurge.java b/Mage.Sets/src/mage/cards/t/TidalSurge.java
index dd0de895f11..bdb45d4f9bd 100644
--- a/Mage.Sets/src/mage/cards/t/TidalSurge.java
+++ b/Mage.Sets/src/mage/cards/t/TidalSurge.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class TidalSurge extends CardImpl {
+public final class TidalSurge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/t/TidalVisionary.java b/Mage.Sets/src/mage/cards/t/TidalVisionary.java
index d575930d607..fb4e8823c49 100644
--- a/Mage.Sets/src/mage/cards/t/TidalVisionary.java
+++ b/Mage.Sets/src/mage/cards/t/TidalVisionary.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class TidalVisionary extends CardImpl {
+public final class TidalVisionary extends CardImpl {
public TidalVisionary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TidalWarrior.java b/Mage.Sets/src/mage/cards/t/TidalWarrior.java
index 0030bfd7592..6a01498492e 100644
--- a/Mage.Sets/src/mage/cards/t/TidalWarrior.java
+++ b/Mage.Sets/src/mage/cards/t/TidalWarrior.java
@@ -47,7 +47,7 @@ import java.util.UUID;
* @author LoneFox
*/
-public class TidalWarrior extends CardImpl {
+public final class TidalWarrior extends CardImpl {
public TidalWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TidalWave.java b/Mage.Sets/src/mage/cards/t/TidalWave.java
index dfc99c2a00e..828dfa276fa 100644
--- a/Mage.Sets/src/mage/cards/t/TidalWave.java
+++ b/Mage.Sets/src/mage/cards/t/TidalWave.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author nigelzor
*/
-public class TidalWave extends CardImpl {
+public final class TidalWave extends CardImpl {
public TidalWave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TideDrifter.java b/Mage.Sets/src/mage/cards/t/TideDrifter.java
index 368c126fb55..84d3d5f537c 100644
--- a/Mage.Sets/src/mage/cards/t/TideDrifter.java
+++ b/Mage.Sets/src/mage/cards/t/TideDrifter.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
*
* @author LevelX2
*/
-public class TideDrifter extends CardImpl {
+public final class TideDrifter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("colorless creatures");
diff --git a/Mage.Sets/src/mage/cards/t/TideOfWar.java b/Mage.Sets/src/mage/cards/t/TideOfWar.java
index 092b367a08a..3bd7e66bf19 100644
--- a/Mage.Sets/src/mage/cards/t/TideOfWar.java
+++ b/Mage.Sets/src/mage/cards/t/TideOfWar.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TideOfWar extends CardImpl {
+public final class TideOfWar extends CardImpl {
public TideOfWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TidebinderMage.java b/Mage.Sets/src/mage/cards/t/TidebinderMage.java
index d084f053f81..57360edd08b 100644
--- a/Mage.Sets/src/mage/cards/t/TidebinderMage.java
+++ b/Mage.Sets/src/mage/cards/t/TidebinderMage.java
@@ -60,7 +60,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class TidebinderMage extends CardImpl {
+public final class TidebinderMage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red or green creature an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TideforceElemental.java b/Mage.Sets/src/mage/cards/t/TideforceElemental.java
index 4e5bfe67ae1..a219e717ffd 100644
--- a/Mage.Sets/src/mage/cards/t/TideforceElemental.java
+++ b/Mage.Sets/src/mage/cards/t/TideforceElemental.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class TideforceElemental extends CardImpl {
+public final class TideforceElemental extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/t/TidehollowSculler.java b/Mage.Sets/src/mage/cards/t/TidehollowSculler.java
index 2548fe14fbf..f4d1cce4b5d 100644
--- a/Mage.Sets/src/mage/cards/t/TidehollowSculler.java
+++ b/Mage.Sets/src/mage/cards/t/TidehollowSculler.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class TidehollowSculler extends CardImpl {
+public final class TidehollowSculler extends CardImpl {
public TidehollowSculler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TidehollowStrix.java b/Mage.Sets/src/mage/cards/t/TidehollowStrix.java
index 19174c6551a..d483912d256 100644
--- a/Mage.Sets/src/mage/cards/t/TidehollowStrix.java
+++ b/Mage.Sets/src/mage/cards/t/TidehollowStrix.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TidehollowStrix extends CardImpl {
+public final class TidehollowStrix extends CardImpl {
public TidehollowStrix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TideshaperMystic.java b/Mage.Sets/src/mage/cards/t/TideshaperMystic.java
index 0d1818c00f1..add6b74dedc 100644
--- a/Mage.Sets/src/mage/cards/t/TideshaperMystic.java
+++ b/Mage.Sets/src/mage/cards/t/TideshaperMystic.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class TideshaperMystic extends CardImpl {
+public final class TideshaperMystic extends CardImpl {
public TideshaperMystic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TidespoutTyrant.java b/Mage.Sets/src/mage/cards/t/TidespoutTyrant.java
index 507e7b4c30a..c39a1a1e27c 100644
--- a/Mage.Sets/src/mage/cards/t/TidespoutTyrant.java
+++ b/Mage.Sets/src/mage/cards/t/TidespoutTyrant.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class TidespoutTyrant extends CardImpl {
+public final class TidespoutTyrant extends CardImpl {
public TidespoutTyrant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Tidewalker.java b/Mage.Sets/src/mage/cards/t/Tidewalker.java
index a54eb398a5a..30b9ab397d2 100644
--- a/Mage.Sets/src/mage/cards/t/Tidewalker.java
+++ b/Mage.Sets/src/mage/cards/t/Tidewalker.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class Tidewalker extends CardImpl {
+public final class Tidewalker extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Island you control");
diff --git a/Mage.Sets/src/mage/cards/t/TidewaterMinion.java b/Mage.Sets/src/mage/cards/t/TidewaterMinion.java
index 5b25090760c..ba51c091031 100644
--- a/Mage.Sets/src/mage/cards/t/TidewaterMinion.java
+++ b/Mage.Sets/src/mage/cards/t/TidewaterMinion.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class TidewaterMinion extends CardImpl {
+public final class TidewaterMinion extends CardImpl {
public TidewaterMinion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Tidings.java b/Mage.Sets/src/mage/cards/t/Tidings.java
index 0fb9d800847..100a69d7016 100644
--- a/Mage.Sets/src/mage/cards/t/Tidings.java
+++ b/Mage.Sets/src/mage/cards/t/Tidings.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class Tidings extends CardImpl {
+public final class Tidings extends CardImpl {
public Tidings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TidyConclusion.java b/Mage.Sets/src/mage/cards/t/TidyConclusion.java
index ba4f8f64372..e89e5c79c86 100644
--- a/Mage.Sets/src/mage/cards/t/TidyConclusion.java
+++ b/Mage.Sets/src/mage/cards/t/TidyConclusion.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TidyConclusion extends CardImpl {
+public final class TidyConclusion extends CardImpl {
public TidyConclusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TigerClaws.java b/Mage.Sets/src/mage/cards/t/TigerClaws.java
index 9cd3b475735..270f0dad084 100644
--- a/Mage.Sets/src/mage/cards/t/TigerClaws.java
+++ b/Mage.Sets/src/mage/cards/t/TigerClaws.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class TigerClaws extends CardImpl {
+public final class TigerClaws extends CardImpl {
public TigerClaws(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TigereyeCameo.java b/Mage.Sets/src/mage/cards/t/TigereyeCameo.java
index bee29aff190..66572c26a7d 100644
--- a/Mage.Sets/src/mage/cards/t/TigereyeCameo.java
+++ b/Mage.Sets/src/mage/cards/t/TigereyeCameo.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class TigereyeCameo extends CardImpl {
+public final class TigereyeCameo extends CardImpl {
public TigereyeCameo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TighteningCoils.java b/Mage.Sets/src/mage/cards/t/TighteningCoils.java
index 1cd8eb2fdbb..a79d88ac733 100644
--- a/Mage.Sets/src/mage/cards/t/TighteningCoils.java
+++ b/Mage.Sets/src/mage/cards/t/TighteningCoils.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TighteningCoils extends CardImpl {
+public final class TighteningCoils extends CardImpl {
public TighteningCoils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TillingTreefolk.java b/Mage.Sets/src/mage/cards/t/TillingTreefolk.java
index cb4114b50fa..7c41f898682 100644
--- a/Mage.Sets/src/mage/cards/t/TillingTreefolk.java
+++ b/Mage.Sets/src/mage/cards/t/TillingTreefolk.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jeffwadsworth
*/
-public class TillingTreefolk extends CardImpl {
+public final class TillingTreefolk extends CardImpl {
public TillingTreefolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TilonallisCrown.java b/Mage.Sets/src/mage/cards/t/TilonallisCrown.java
index ccf5f0fd691..23f7d47567d 100644
--- a/Mage.Sets/src/mage/cards/t/TilonallisCrown.java
+++ b/Mage.Sets/src/mage/cards/t/TilonallisCrown.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TilonallisCrown extends CardImpl {
+public final class TilonallisCrown extends CardImpl {
public TilonallisCrown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TilonallisKnight.java b/Mage.Sets/src/mage/cards/t/TilonallisKnight.java
index dba7790ec6c..34b698e66ad 100644
--- a/Mage.Sets/src/mage/cards/t/TilonallisKnight.java
+++ b/Mage.Sets/src/mage/cards/t/TilonallisKnight.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class TilonallisKnight extends CardImpl {
+public final class TilonallisKnight extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/t/TilonallisSkinshifter.java b/Mage.Sets/src/mage/cards/t/TilonallisSkinshifter.java
index 546ca340dc6..d2d62740ccd 100644
--- a/Mage.Sets/src/mage/cards/t/TilonallisSkinshifter.java
+++ b/Mage.Sets/src/mage/cards/t/TilonallisSkinshifter.java
@@ -54,7 +54,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author TheElk801
*/
-public class TilonallisSkinshifter extends CardImpl {
+public final class TilonallisSkinshifter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/t/TilonallisSummoner.java b/Mage.Sets/src/mage/cards/t/TilonallisSummoner.java
index 75f069f144c..bf090477eaf 100644
--- a/Mage.Sets/src/mage/cards/t/TilonallisSummoner.java
+++ b/Mage.Sets/src/mage/cards/t/TilonallisSummoner.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author LevelX2
*/
-public class TilonallisSummoner extends CardImpl {
+public final class TilonallisSummoner extends CardImpl {
public TilonallisSummoner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TimberGorge.java b/Mage.Sets/src/mage/cards/t/TimberGorge.java
index 6bb32e5418e..bba3f5b150a 100644
--- a/Mage.Sets/src/mage/cards/t/TimberGorge.java
+++ b/Mage.Sets/src/mage/cards/t/TimberGorge.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class TimberGorge extends CardImpl {
+public final class TimberGorge extends CardImpl {
public TimberGorge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TimberProtector.java b/Mage.Sets/src/mage/cards/t/TimberProtector.java
index 6c9ffb02945..deb25c4be1b 100644
--- a/Mage.Sets/src/mage/cards/t/TimberProtector.java
+++ b/Mage.Sets/src/mage/cards/t/TimberProtector.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author Loki
*/
-public class TimberProtector extends CardImpl {
+public final class TimberProtector extends CardImpl {
private static final FilterCreaturePermanent filterTreefolk = new FilterCreaturePermanent("Treefolk creatures");
private static final FilterControlledPermanent filterBoth = new FilterControlledPermanent("Other Treefolk and Forests you control");
diff --git a/Mage.Sets/src/mage/cards/t/TimberShredder.java b/Mage.Sets/src/mage/cards/t/TimberShredder.java
index 71218727c98..728110d2e7c 100644
--- a/Mage.Sets/src/mage/cards/t/TimberShredder.java
+++ b/Mage.Sets/src/mage/cards/t/TimberShredder.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class TimberShredder extends CardImpl {
+public final class TimberShredder extends CardImpl {
public TimberShredder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/t/TimberWolves.java b/Mage.Sets/src/mage/cards/t/TimberWolves.java
index 07770474bf1..88e2cd9252d 100644
--- a/Mage.Sets/src/mage/cards/t/TimberWolves.java
+++ b/Mage.Sets/src/mage/cards/t/TimberWolves.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class TimberWolves extends CardImpl {
+public final class TimberWolves extends CardImpl {
public TimberWolves (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TimberlandGuide.java b/Mage.Sets/src/mage/cards/t/TimberlandGuide.java
index 297da468ea6..ee168123dd4 100644
--- a/Mage.Sets/src/mage/cards/t/TimberlandGuide.java
+++ b/Mage.Sets/src/mage/cards/t/TimberlandGuide.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class TimberlandGuide extends CardImpl {
+public final class TimberlandGuide extends CardImpl {
public TimberlandGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TimberlandRuins.java b/Mage.Sets/src/mage/cards/t/TimberlandRuins.java
index 569bbd66706..c21de8d3bb9 100644
--- a/Mage.Sets/src/mage/cards/t/TimberlandRuins.java
+++ b/Mage.Sets/src/mage/cards/t/TimberlandRuins.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class TimberlandRuins extends CardImpl {
+public final class TimberlandRuins extends CardImpl {
public TimberlandRuins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TimberlineRidge.java b/Mage.Sets/src/mage/cards/t/TimberlineRidge.java
index 224b93169e1..68b7d63d8b0 100644
--- a/Mage.Sets/src/mage/cards/t/TimberlineRidge.java
+++ b/Mage.Sets/src/mage/cards/t/TimberlineRidge.java
@@ -51,7 +51,7 @@ import mage.counters.CounterType;
*
* @author Luna Skyrise
*/
-public class TimberlineRidge extends CardImpl {
+public final class TimberlineRidge extends CardImpl {
public TimberlineRidge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/Timbermare.java b/Mage.Sets/src/mage/cards/t/Timbermare.java
index 8861cb4ef9e..c5d4fc4eef1 100644
--- a/Mage.Sets/src/mage/cards/t/Timbermare.java
+++ b/Mage.Sets/src/mage/cards/t/Timbermare.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LoneFox
*/
-public class Timbermare extends CardImpl {
+public final class Timbermare extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
diff --git a/Mage.Sets/src/mage/cards/t/TimbermawLarva.java b/Mage.Sets/src/mage/cards/t/TimbermawLarva.java
index f99c64d6b01..b21077e0240 100644
--- a/Mage.Sets/src/mage/cards/t/TimbermawLarva.java
+++ b/Mage.Sets/src/mage/cards/t/TimbermawLarva.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author North
*/
-public class TimbermawLarva extends CardImpl {
+public final class TimbermawLarva extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Forest you control");
diff --git a/Mage.Sets/src/mage/cards/t/TimberpackWolf.java b/Mage.Sets/src/mage/cards/t/TimberpackWolf.java
index 0143d5544fb..ec8067dbde4 100644
--- a/Mage.Sets/src/mage/cards/t/TimberpackWolf.java
+++ b/Mage.Sets/src/mage/cards/t/TimberpackWolf.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class TimberpackWolf extends CardImpl {
+public final class TimberpackWolf extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature you control named Timberpack Wolf");
diff --git a/Mage.Sets/src/mage/cards/t/TimberwatchElf.java b/Mage.Sets/src/mage/cards/t/TimberwatchElf.java
index 56259652bb8..873dbeeda78 100644
--- a/Mage.Sets/src/mage/cards/t/TimberwatchElf.java
+++ b/Mage.Sets/src/mage/cards/t/TimberwatchElf.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TimberwatchElf extends CardImpl {
+public final class TimberwatchElf extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elves");
diff --git a/Mage.Sets/src/mage/cards/t/TimeBomb.java b/Mage.Sets/src/mage/cards/t/TimeBomb.java
index 75f04dd5a27..db4b5badf9e 100644
--- a/Mage.Sets/src/mage/cards/t/TimeBomb.java
+++ b/Mage.Sets/src/mage/cards/t/TimeBomb.java
@@ -50,7 +50,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author fireshoes
*/
-public class TimeBomb extends CardImpl {
+public final class TimeBomb extends CardImpl {
public TimeBomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TimeEbb.java b/Mage.Sets/src/mage/cards/t/TimeEbb.java
index 3d03162c059..a90ce5daad3 100644
--- a/Mage.Sets/src/mage/cards/t/TimeEbb.java
+++ b/Mage.Sets/src/mage/cards/t/TimeEbb.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class TimeEbb extends CardImpl {
+public final class TimeEbb extends CardImpl {
public TimeEbb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TimeElemental.java b/Mage.Sets/src/mage/cards/t/TimeElemental.java
index 62dc23201d9..4df72806a5b 100644
--- a/Mage.Sets/src/mage/cards/t/TimeElemental.java
+++ b/Mage.Sets/src/mage/cards/t/TimeElemental.java
@@ -55,7 +55,7 @@ import mage.target.TargetPermanent;
*
* @author L_J
*/
-public class TimeElemental extends CardImpl {
+public final class TimeElemental extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent that isn't enchanted");
diff --git a/Mage.Sets/src/mage/cards/t/TimeOfHeroes.java b/Mage.Sets/src/mage/cards/t/TimeOfHeroes.java
index 86b00882355..853e3a5de8e 100644
--- a/Mage.Sets/src/mage/cards/t/TimeOfHeroes.java
+++ b/Mage.Sets/src/mage/cards/t/TimeOfHeroes.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author jeffwadsworth
*/
-public class TimeOfHeroes extends CardImpl {
+public final class TimeOfHeroes extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature you control with a level counter");
diff --git a/Mage.Sets/src/mage/cards/t/TimeOfIce.java b/Mage.Sets/src/mage/cards/t/TimeOfIce.java
index 86eaa24dd61..4a6855a82ef 100644
--- a/Mage.Sets/src/mage/cards/t/TimeOfIce.java
+++ b/Mage.Sets/src/mage/cards/t/TimeOfIce.java
@@ -28,7 +28,6 @@
package mage.cards.t;
import java.util.UUID;
-import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.SagaAbility;
import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
@@ -45,7 +44,7 @@ import mage.constants.PhaseStep;
import mage.constants.SagaChapter;
import mage.constants.WatcherScope;
import mage.constants.Zone;
-import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
@@ -59,7 +58,7 @@ import mage.watchers.Watcher;
*
* @author TheElk801
*/
-public class TimeOfIce extends CardImpl {
+public final class TimeOfIce extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creatures");
@@ -81,7 +80,7 @@ public class TimeOfIce extends CardImpl {
effects.add(new TimeOfIceEffect());
sagaAbility.addChapterEffect(
this, SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_II, effects,
- new TargetCreaturePermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)
+ new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)
);
// III — Return all tapped creatures to their owners' hands.
@@ -125,8 +124,8 @@ class TimeOfIceEffect extends ContinuousRuleModifyingEffectImpl {
// Source must be on the battlefield (it's neccessary to check here because if as response to the enter
// the battlefield triggered ability the source dies (or will be exiled), then the ZONE_CHANGE or LOST_CONTROL
// event will happen before this effect is applied ever)
- MageObject sourceObject = source.getSourceObjectIfItStillExists(game);
- if (!(sourceObject instanceof Permanent) || !((Permanent) sourceObject).getControllerId().equals(source.getControllerId())) {
+ Permanent sourceObject = game.getPermanent(source.getSourceId());
+ if (sourceObject == null || sourceObject.getZoneChangeCounter(game) > source.getSourceObjectZoneChangeCounter() + 1) {
discard();
return false;
}
diff --git a/Mage.Sets/src/mage/cards/t/TimeOfNeed.java b/Mage.Sets/src/mage/cards/t/TimeOfNeed.java
index 018c2dddaad..c24561c82f4 100644
--- a/Mage.Sets/src/mage/cards/t/TimeOfNeed.java
+++ b/Mage.Sets/src/mage/cards/t/TimeOfNeed.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author Loki
*/
-public class TimeOfNeed extends CardImpl {
+public final class TimeOfNeed extends CardImpl {
private static final FilterCard filter = new FilterCard("legendary creature card");
diff --git a/Mage.Sets/src/mage/cards/t/TimeOut.java b/Mage.Sets/src/mage/cards/t/TimeOut.java
index 3e4dd1a9094..8fbcedafa90 100644
--- a/Mage.Sets/src/mage/cards/t/TimeOut.java
+++ b/Mage.Sets/src/mage/cards/t/TimeOut.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author spjspj
*/
-public class TimeOut extends CardImpl {
+public final class TimeOut extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nonland permanent");
diff --git a/Mage.Sets/src/mage/cards/t/TimeReversal.java b/Mage.Sets/src/mage/cards/t/TimeReversal.java
index 50c7b8dda62..c7a1fbc8add 100644
--- a/Mage.Sets/src/mage/cards/t/TimeReversal.java
+++ b/Mage.Sets/src/mage/cards/t/TimeReversal.java
@@ -28,30 +28,25 @@
package mage.cards.t;
import java.util.UUID;
-import mage.abilities.Ability;
import mage.abilities.effects.Effect;
-import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardAllEffect;
import mage.abilities.effects.common.ExileSpellEffect;
+import mage.abilities.effects.common.ShuffleHandGraveyardAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.constants.Zone;
-import mage.game.Game;
-import mage.players.Player;
/**
*
* @author BetaSteward_at_googlemail.com
*/
-public class TimeReversal extends CardImpl {
+public final class TimeReversal extends CardImpl {
public TimeReversal(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}{U}");
// Each player shuffles their hand and graveyard into their library, then draws seven cards
- this.getSpellAbility().addEffect(new TimeReversalEffect());
+ this.getSpellAbility().addEffect(new ShuffleHandGraveyardAllEffect());
Effect effect = new DrawCardAllEffect(7);
effect.setText(", then draws seven cards");
this.getSpellAbility().addEffect(effect);
@@ -67,35 +62,3 @@ public class TimeReversal extends CardImpl {
return new TimeReversal(this);
}
}
-
-class TimeReversalEffect extends OneShotEffect {
-
- public TimeReversalEffect() {
- super(Outcome.Neutral);
- staticText = "Each player shuffles their hand and graveyard into their library, then draws seven cards";
- }
-
- public TimeReversalEffect(final TimeReversalEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player controller = game.getPlayer(source.getControllerId());
- for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- player.moveCards(player.getHand(), Zone.LIBRARY, source, game);
- player.moveCards(player.getGraveyard(), Zone.LIBRARY, source, game);
- player.shuffleLibrary(source, game);
- }
- }
- return true;
- }
-
- @Override
- public TimeReversalEffect copy() {
- return new TimeReversalEffect(this);
- }
-
-}
diff --git a/Mage.Sets/src/mage/cards/t/TimeSieve.java b/Mage.Sets/src/mage/cards/t/TimeSieve.java
index 496d5d1f2e3..7c97544c1fa 100644
--- a/Mage.Sets/src/mage/cards/t/TimeSieve.java
+++ b/Mage.Sets/src/mage/cards/t/TimeSieve.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class TimeSieve extends CardImpl {
+public final class TimeSieve extends CardImpl {
public TimeSieve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TimeSpiral.java b/Mage.Sets/src/mage/cards/t/TimeSpiral.java
index 5eacc6ce3cd..27b6ccc672b 100644
--- a/Mage.Sets/src/mage/cards/t/TimeSpiral.java
+++ b/Mage.Sets/src/mage/cards/t/TimeSpiral.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class TimeSpiral extends CardImpl {
+public final class TimeSpiral extends CardImpl {
public TimeSpiral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TimeStop.java b/Mage.Sets/src/mage/cards/t/TimeStop.java
index ec47edee592..ddbaf2317d8 100644
--- a/Mage.Sets/src/mage/cards/t/TimeStop.java
+++ b/Mage.Sets/src/mage/cards/t/TimeStop.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author jeff
*/
-public class TimeStop extends CardImpl {
+public final class TimeStop extends CardImpl {
public TimeStop(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TimeStretch.java b/Mage.Sets/src/mage/cards/t/TimeStretch.java
index 48b74fced22..2936a75d489 100644
--- a/Mage.Sets/src/mage/cards/t/TimeStretch.java
+++ b/Mage.Sets/src/mage/cards/t/TimeStretch.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class TimeStretch extends CardImpl {
+public final class TimeStretch extends CardImpl {
public TimeStretch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{8}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TimeToFeed.java b/Mage.Sets/src/mage/cards/t/TimeToFeed.java
index 7776c926ba0..9a7a73c8b24 100644
--- a/Mage.Sets/src/mage/cards/t/TimeToFeed.java
+++ b/Mage.Sets/src/mage/cards/t/TimeToFeed.java
@@ -65,7 +65,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TimeToFeed extends CardImpl {
+public final class TimeToFeed extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature an opponent controls");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TimeToReflect.java b/Mage.Sets/src/mage/cards/t/TimeToReflect.java
index 10114d5b0fb..4da3ea714a1 100644
--- a/Mage.Sets/src/mage/cards/t/TimeToReflect.java
+++ b/Mage.Sets/src/mage/cards/t/TimeToReflect.java
@@ -51,7 +51,7 @@ import java.util.*;
/**
* @author jeffwadsworth
*/
-public class TimeToReflect extends CardImpl {
+public final class TimeToReflect extends CardImpl {
public TimeToReflect(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TimeVault.java b/Mage.Sets/src/mage/cards/t/TimeVault.java
index de29aea7cdd..b3143668884 100644
--- a/Mage.Sets/src/mage/cards/t/TimeVault.java
+++ b/Mage.Sets/src/mage/cards/t/TimeVault.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class TimeVault extends CardImpl {
+public final class TimeVault extends CardImpl {
public TimeVault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TimeWalk.java b/Mage.Sets/src/mage/cards/t/TimeWalk.java
index c3a6d22f303..f8144bba3f3 100644
--- a/Mage.Sets/src/mage/cards/t/TimeWalk.java
+++ b/Mage.Sets/src/mage/cards/t/TimeWalk.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TimeWalk extends CardImpl {
+public final class TimeWalk extends CardImpl {
public TimeWalk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TimeWarp.java b/Mage.Sets/src/mage/cards/t/TimeWarp.java
index 5b2bcf3e87a..1cc4dd5eb7f 100644
--- a/Mage.Sets/src/mage/cards/t/TimeWarp.java
+++ b/Mage.Sets/src/mage/cards/t/TimeWarp.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class TimeWarp extends CardImpl {
+public final class TimeWarp extends CardImpl {
public TimeWarp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Timebender.java b/Mage.Sets/src/mage/cards/t/Timebender.java
index d817dbafc3e..ee26efdf1e6 100644
--- a/Mage.Sets/src/mage/cards/t/Timebender.java
+++ b/Mage.Sets/src/mage/cards/t/Timebender.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetPermanentOrSuspendedCard;
*
* @author L_J
*/
-public class Timebender extends CardImpl {
+public final class Timebender extends CardImpl {
public Timebender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Timecrafting.java b/Mage.Sets/src/mage/cards/t/Timecrafting.java
index 4161428ed9f..7ef245de9f3 100644
--- a/Mage.Sets/src/mage/cards/t/Timecrafting.java
+++ b/Mage.Sets/src/mage/cards/t/Timecrafting.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetPermanentOrSuspendedCard;
*
* @author emerald000
*/
-public class Timecrafting extends CardImpl {
+public final class Timecrafting extends CardImpl {
private static final FilterPermanentOrSuspendedCard filter = new FilterPermanentOrSuspendedCard("permanent with a time counter on it or suspended card");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TimelyHordemate.java b/Mage.Sets/src/mage/cards/t/TimelyHordemate.java
index 1c81660e5c3..54a182b7230 100644
--- a/Mage.Sets/src/mage/cards/t/TimelyHordemate.java
+++ b/Mage.Sets/src/mage/cards/t/TimelyHordemate.java
@@ -48,7 +48,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class TimelyHordemate extends CardImpl {
+public final class TimelyHordemate extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with converted mana cost 2 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/t/TimelyReinforcements.java b/Mage.Sets/src/mage/cards/t/TimelyReinforcements.java
index 591a29e605d..4a99685cb1b 100644
--- a/Mage.Sets/src/mage/cards/t/TimelyReinforcements.java
+++ b/Mage.Sets/src/mage/cards/t/TimelyReinforcements.java
@@ -45,7 +45,7 @@ import mage.players.Player;
/**
* @author nantuko
*/
-public class TimelyReinforcements extends CardImpl {
+public final class TimelyReinforcements extends CardImpl {
public TimelyReinforcements(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Timesifter.java b/Mage.Sets/src/mage/cards/t/Timesifter.java
index a9c7c846094..99079cbb2e1 100644
--- a/Mage.Sets/src/mage/cards/t/Timesifter.java
+++ b/Mage.Sets/src/mage/cards/t/Timesifter.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class Timesifter extends CardImpl {
+public final class Timesifter extends CardImpl {
public Timesifter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/t/TimestreamNavigator.java b/Mage.Sets/src/mage/cards/t/TimestreamNavigator.java
index 4f29b09adac..58304bd5328 100644
--- a/Mage.Sets/src/mage/cards/t/TimestreamNavigator.java
+++ b/Mage.Sets/src/mage/cards/t/TimestreamNavigator.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class TimestreamNavigator extends CardImpl {
+public final class TimestreamNavigator extends CardImpl {
public TimestreamNavigator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Timetwister.java b/Mage.Sets/src/mage/cards/t/Timetwister.java
index 7f5243640ad..2241ea9bb69 100644
--- a/Mage.Sets/src/mage/cards/t/Timetwister.java
+++ b/Mage.Sets/src/mage/cards/t/Timetwister.java
@@ -28,29 +28,24 @@
package mage.cards.t;
import java.util.UUID;
-import mage.abilities.Ability;
import mage.abilities.effects.Effect;
-import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardAllEffect;
+import mage.abilities.effects.common.ShuffleHandGraveyardAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.constants.Zone;
-import mage.game.Game;
-import mage.players.Player;
/**
*
* @author LevelX2
*/
-public class Timetwister extends CardImpl {
+public final class Timetwister extends CardImpl {
public Timetwister(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
// Each player shuffles their hand and graveyard into their library, then draws seven cards.
- this.getSpellAbility().addEffect(new TimetwisterEffect());
+ this.getSpellAbility().addEffect(new ShuffleHandGraveyardAllEffect());
Effect effect = new DrawCardAllEffect(7);
effect.setText(", then draws seven cards");
this.getSpellAbility().addEffect(effect);
@@ -66,34 +61,3 @@ public class Timetwister extends CardImpl {
return new Timetwister(this);
}
}
-
-class TimetwisterEffect extends OneShotEffect {
-
- public TimetwisterEffect() {
- super(Outcome.Neutral);
- staticText = "Each player shuffles their hand and graveyard into their library";
- }
-
- public TimetwisterEffect(final TimetwisterEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- player.moveCards(player.getHand(), Zone.LIBRARY, source, game);
- player.moveCards(player.getGraveyard(), Zone.LIBRARY, source, game);
- player.shuffleLibrary(source, game);
- }
- }
- return true;
- }
-
- @Override
- public TimetwisterEffect copy() {
- return new TimetwisterEffect(this);
- }
-
-}
diff --git a/Mage.Sets/src/mage/cards/t/TimidDrake.java b/Mage.Sets/src/mage/cards/t/TimidDrake.java
index b1cd6e3facc..b66efe632e6 100644
--- a/Mage.Sets/src/mage/cards/t/TimidDrake.java
+++ b/Mage.Sets/src/mage/cards/t/TimidDrake.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author TheElk801
*/
-public class TimidDrake extends CardImpl {
+public final class TimidDrake extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/t/TimmyPowerGamer.java b/Mage.Sets/src/mage/cards/t/TimmyPowerGamer.java
index 84b635f6b2c..0e81cc27435 100644
--- a/Mage.Sets/src/mage/cards/t/TimmyPowerGamer.java
+++ b/Mage.Sets/src/mage/cards/t/TimmyPowerGamer.java
@@ -30,25 +30,25 @@ package mage.cards.t;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
-import mage.filter.common.FilterCreatureCard;
import java.util.UUID;
+import mage.filter.StaticFilters;
/**
*
* @author ciaccona007
*/
-public class TimmyPowerGamer extends CardImpl {
+public final class TimmyPowerGamer extends CardImpl {
public TimmyPowerGamer(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
this.supertype.add(SuperType.LEGENDARY);
@@ -60,7 +60,7 @@ public class TimmyPowerGamer extends CardImpl {
// {4}: You may put a creature card from your hand onto the battlefield.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new PutPermanentOnBattlefieldEffect(new FilterCreatureCard("a creature card")),
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_CREATURE_A),
new ManaCostsImpl("{4}"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/t/TinStreetHooligan.java b/Mage.Sets/src/mage/cards/t/TinStreetHooligan.java
index a4261b94b12..1c59f6536ac 100644
--- a/Mage.Sets/src/mage/cards/t/TinStreetHooligan.java
+++ b/Mage.Sets/src/mage/cards/t/TinStreetHooligan.java
@@ -46,7 +46,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author LevelX2
*/
-public class TinStreetHooligan extends CardImpl {
+public final class TinStreetHooligan extends CardImpl {
public TinStreetHooligan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TinStreetMarket.java b/Mage.Sets/src/mage/cards/t/TinStreetMarket.java
index fc3d546f3e8..a46d24f80f3 100644
--- a/Mage.Sets/src/mage/cards/t/TinStreetMarket.java
+++ b/Mage.Sets/src/mage/cards/t/TinStreetMarket.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class TinStreetMarket extends CardImpl {
+public final class TinStreetMarket extends CardImpl {
public TinStreetMarket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TinWingChimera.java b/Mage.Sets/src/mage/cards/t/TinWingChimera.java
index fe0cd843e3e..a6704641d52 100644
--- a/Mage.Sets/src/mage/cards/t/TinWingChimera.java
+++ b/Mage.Sets/src/mage/cards/t/TinWingChimera.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author TheElk801
*/
-public class TinWingChimera extends CardImpl {
+public final class TinWingChimera extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature you control");
diff --git a/Mage.Sets/src/mage/cards/t/TinderFarm.java b/Mage.Sets/src/mage/cards/t/TinderFarm.java
index 158a39ebae2..2cba835bebe 100644
--- a/Mage.Sets/src/mage/cards/t/TinderFarm.java
+++ b/Mage.Sets/src/mage/cards/t/TinderFarm.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class TinderFarm extends CardImpl {
+public final class TinderFarm extends CardImpl {
public TinderFarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TinderWall.java b/Mage.Sets/src/mage/cards/t/TinderWall.java
index cb39cc82aab..a038a064d1e 100644
--- a/Mage.Sets/src/mage/cards/t/TinderWall.java
+++ b/Mage.Sets/src/mage/cards/t/TinderWall.java
@@ -56,7 +56,7 @@ import mage.watchers.Watcher;
*
* @author Plopman
*/
-public class TinderWall extends CardImpl {
+public final class TinderWall extends CardImpl {
public TinderWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TineShrike.java b/Mage.Sets/src/mage/cards/t/TineShrike.java
index 63b10634869..5f3557fb3e4 100644
--- a/Mage.Sets/src/mage/cards/t/TineShrike.java
+++ b/Mage.Sets/src/mage/cards/t/TineShrike.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class TineShrike extends CardImpl {
+public final class TineShrike extends CardImpl {
public TineShrike (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Tinker.java b/Mage.Sets/src/mage/cards/t/Tinker.java
index 22d1db4003b..2e1c21654de 100644
--- a/Mage.Sets/src/mage/cards/t/Tinker.java
+++ b/Mage.Sets/src/mage/cards/t/Tinker.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class Tinker extends CardImpl {
+public final class Tinker extends CardImpl {
public Tinker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TirelessMissionaries.java b/Mage.Sets/src/mage/cards/t/TirelessMissionaries.java
index ca5ea8d6bd2..b08ef5cef66 100644
--- a/Mage.Sets/src/mage/cards/t/TirelessMissionaries.java
+++ b/Mage.Sets/src/mage/cards/t/TirelessMissionaries.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class TirelessMissionaries extends CardImpl {
+public final class TirelessMissionaries extends CardImpl {
public TirelessMissionaries(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TirelessTracker.java b/Mage.Sets/src/mage/cards/t/TirelessTracker.java
index 63f62539fd2..9f532fcfbe6 100644
--- a/Mage.Sets/src/mage/cards/t/TirelessTracker.java
+++ b/Mage.Sets/src/mage/cards/t/TirelessTracker.java
@@ -50,7 +50,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes
*/
-public class TirelessTracker extends CardImpl {
+public final class TirelessTracker extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Clue");
diff --git a/Mage.Sets/src/mage/cards/t/TirelessTribe.java b/Mage.Sets/src/mage/cards/t/TirelessTribe.java
index 6709b375ffe..c0feb158980 100644
--- a/Mage.Sets/src/mage/cards/t/TirelessTribe.java
+++ b/Mage.Sets/src/mage/cards/t/TirelessTribe.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInHand;
*
* @author cbt33
*/
-public class TirelessTribe extends CardImpl {
+public final class TirelessTribe extends CardImpl {
public TirelessTribe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TishanaVoiceOfThunder.java b/Mage.Sets/src/mage/cards/t/TishanaVoiceOfThunder.java
index 01f56f31d9a..972f78f9981 100644
--- a/Mage.Sets/src/mage/cards/t/TishanaVoiceOfThunder.java
+++ b/Mage.Sets/src/mage/cards/t/TishanaVoiceOfThunder.java
@@ -51,7 +51,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author spjspj
*/
-public class TishanaVoiceOfThunder extends CardImpl {
+public final class TishanaVoiceOfThunder extends CardImpl {
public TishanaVoiceOfThunder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TishanasWayfinder.java b/Mage.Sets/src/mage/cards/t/TishanasWayfinder.java
index e1f3c533f4c..95b95f3cbae 100644
--- a/Mage.Sets/src/mage/cards/t/TishanasWayfinder.java
+++ b/Mage.Sets/src/mage/cards/t/TishanasWayfinder.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author TheElk801
*/
-public class TishanasWayfinder extends CardImpl {
+public final class TishanasWayfinder extends CardImpl {
public TishanasWayfinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TitanForge.java b/Mage.Sets/src/mage/cards/t/TitanForge.java
index e4064612bad..d2d8e9aa5ba 100644
--- a/Mage.Sets/src/mage/cards/t/TitanForge.java
+++ b/Mage.Sets/src/mage/cards/t/TitanForge.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.TitanForgeGolemToken;
*
* @author Loki
*/
-public class TitanForge extends CardImpl {
+public final class TitanForge extends CardImpl {
public TitanForge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TitanOfEternalFire.java b/Mage.Sets/src/mage/cards/t/TitanOfEternalFire.java
index 5a64bd8e182..29c171ae974 100644
--- a/Mage.Sets/src/mage/cards/t/TitanOfEternalFire.java
+++ b/Mage.Sets/src/mage/cards/t/TitanOfEternalFire.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
-public class TitanOfEternalFire extends CardImpl {
+public final class TitanOfEternalFire extends CardImpl {
public TitanOfEternalFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TitaniaProtectorOfArgoth.java b/Mage.Sets/src/mage/cards/t/TitaniaProtectorOfArgoth.java
index 04dd6a11959..3961a385a4d 100644
--- a/Mage.Sets/src/mage/cards/t/TitaniaProtectorOfArgoth.java
+++ b/Mage.Sets/src/mage/cards/t/TitaniaProtectorOfArgoth.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class TitaniaProtectorOfArgoth extends CardImpl {
+public final class TitaniaProtectorOfArgoth extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("a land you control");
diff --git a/Mage.Sets/src/mage/cards/t/TitaniasBoon.java b/Mage.Sets/src/mage/cards/t/TitaniasBoon.java
index effdfd65d94..b363d962a59 100644
--- a/Mage.Sets/src/mage/cards/t/TitaniasBoon.java
+++ b/Mage.Sets/src/mage/cards/t/TitaniasBoon.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author Backfir3
*/
-public class TitaniasBoon extends CardImpl {
+public final class TitaniasBoon extends CardImpl {
public TitaniasBoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TitaniasChosen.java b/Mage.Sets/src/mage/cards/t/TitaniasChosen.java
index f44b87061e9..46932d7d805 100644
--- a/Mage.Sets/src/mage/cards/t/TitaniasChosen.java
+++ b/Mage.Sets/src/mage/cards/t/TitaniasChosen.java
@@ -47,7 +47,7 @@ import mage.game.stack.Spell;
*
* @author Backfir3
*/
-public class TitaniasChosen extends CardImpl {
+public final class TitaniasChosen extends CardImpl {
public TitaniasChosen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TitaniasSong.java b/Mage.Sets/src/mage/cards/t/TitaniasSong.java
index 8856103e824..af1c4a8cc3b 100644
--- a/Mage.Sets/src/mage/cards/t/TitaniasSong.java
+++ b/Mage.Sets/src/mage/cards/t/TitaniasSong.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author MarcoMarin
*/
-public class TitaniasSong extends CardImpl {
+public final class TitaniasSong extends CardImpl {
public TitaniasSong(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TitanicBulvox.java b/Mage.Sets/src/mage/cards/t/TitanicBulvox.java
index 8124548e733..0df8f189a2a 100644
--- a/Mage.Sets/src/mage/cards/t/TitanicBulvox.java
+++ b/Mage.Sets/src/mage/cards/t/TitanicBulvox.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class TitanicBulvox extends CardImpl {
+public final class TitanicBulvox extends CardImpl {
public TitanicBulvox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TitanicGrowth.java b/Mage.Sets/src/mage/cards/t/TitanicGrowth.java
index b59b29eada0..9085149b45b 100644
--- a/Mage.Sets/src/mage/cards/t/TitanicGrowth.java
+++ b/Mage.Sets/src/mage/cards/t/TitanicGrowth.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class TitanicGrowth extends CardImpl {
+public final class TitanicGrowth extends CardImpl {
public TitanicGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TitanicUltimatum.java b/Mage.Sets/src/mage/cards/t/TitanicUltimatum.java
index b3b7dbfef96..cb76b97ba53 100644
--- a/Mage.Sets/src/mage/cards/t/TitanicUltimatum.java
+++ b/Mage.Sets/src/mage/cards/t/TitanicUltimatum.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author North, Eugen
*/
-public class TitanicUltimatum extends CardImpl {
+public final class TitanicUltimatum extends CardImpl {
public TitanicUltimatum(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}{R}{G}{G}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TitaniumGolem.java b/Mage.Sets/src/mage/cards/t/TitaniumGolem.java
index f65c242ce64..51c0c7d3f1e 100644
--- a/Mage.Sets/src/mage/cards/t/TitaniumGolem.java
+++ b/Mage.Sets/src/mage/cards/t/TitaniumGolem.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class TitaniumGolem extends CardImpl {
+public final class TitaniumGolem extends CardImpl {
public TitaniumGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/t/TitansPresence.java b/Mage.Sets/src/mage/cards/t/TitansPresence.java
index a49d42852d3..bc14a1c251d 100644
--- a/Mage.Sets/src/mage/cards/t/TitansPresence.java
+++ b/Mage.Sets/src/mage/cards/t/TitansPresence.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TitansPresence extends CardImpl {
+public final class TitansPresence extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a colorless creature card from your hand");
diff --git a/Mage.Sets/src/mage/cards/t/TitansRevenge.java b/Mage.Sets/src/mage/cards/t/TitansRevenge.java
index e313aa1a03b..6414e2435be 100644
--- a/Mage.Sets/src/mage/cards/t/TitansRevenge.java
+++ b/Mage.Sets/src/mage/cards/t/TitansRevenge.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class TitansRevenge extends CardImpl {
+public final class TitansRevenge extends CardImpl {
public TitansRevenge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TitansStrength.java b/Mage.Sets/src/mage/cards/t/TitansStrength.java
index 1d2b720a703..19d3ae911a0 100644
--- a/Mage.Sets/src/mage/cards/t/TitansStrength.java
+++ b/Mage.Sets/src/mage/cards/t/TitansStrength.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TitansStrength extends CardImpl {
+public final class TitansStrength extends CardImpl {
public TitansStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Tithe.java b/Mage.Sets/src/mage/cards/t/Tithe.java
index 78e98c48569..9f52cc52fa3 100644
--- a/Mage.Sets/src/mage/cards/t/Tithe.java
+++ b/Mage.Sets/src/mage/cards/t/Tithe.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author emerald000
*/
-public class Tithe extends CardImpl {
+public final class Tithe extends CardImpl {
public Tithe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TitheDrinker.java b/Mage.Sets/src/mage/cards/t/TitheDrinker.java
index 579f5828b87..6ffe9fb9f84 100644
--- a/Mage.Sets/src/mage/cards/t/TitheDrinker.java
+++ b/Mage.Sets/src/mage/cards/t/TitheDrinker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TitheDrinker extends CardImpl {
+public final class TitheDrinker extends CardImpl {
public TitheDrinker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TivadarOfThorn.java b/Mage.Sets/src/mage/cards/t/TivadarOfThorn.java
index 7cc5bafaa18..f003acc25ce 100644
--- a/Mage.Sets/src/mage/cards/t/TivadarOfThorn.java
+++ b/Mage.Sets/src/mage/cards/t/TivadarOfThorn.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class TivadarOfThorn extends CardImpl {
+public final class TivadarOfThorn extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Goblin");
diff --git a/Mage.Sets/src/mage/cards/t/TivadarsCrusade.java b/Mage.Sets/src/mage/cards/t/TivadarsCrusade.java
index 0b973dc595a..8d4a6820e29 100644
--- a/Mage.Sets/src/mage/cards/t/TivadarsCrusade.java
+++ b/Mage.Sets/src/mage/cards/t/TivadarsCrusade.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class TivadarsCrusade extends CardImpl {
+public final class TivadarsCrusade extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Goblins");
diff --git a/Mage.Sets/src/mage/cards/t/ToArms.java b/Mage.Sets/src/mage/cards/t/ToArms.java
index 4a23fffe328..d7b38a61c51 100644
--- a/Mage.Sets/src/mage/cards/t/ToArms.java
+++ b/Mage.Sets/src/mage/cards/t/ToArms.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author jj-marcel
*/
-public class ToArms extends CardImpl {
+public final class ToArms extends CardImpl {
private static final String rule = "untap all creatures you control";
diff --git a/Mage.Sets/src/mage/cards/t/ToTheSlaughter.java b/Mage.Sets/src/mage/cards/t/ToTheSlaughter.java
index b0a42032451..50493633889 100644
--- a/Mage.Sets/src/mage/cards/t/ToTheSlaughter.java
+++ b/Mage.Sets/src/mage/cards/t/ToTheSlaughter.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class ToTheSlaughter extends CardImpl {
+public final class ToTheSlaughter extends CardImpl {
public ToTheSlaughter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TobiasAndrion.java b/Mage.Sets/src/mage/cards/t/TobiasAndrion.java
index 8d7024c26ca..46b52b242f8 100644
--- a/Mage.Sets/src/mage/cards/t/TobiasAndrion.java
+++ b/Mage.Sets/src/mage/cards/t/TobiasAndrion.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class TobiasAndrion extends CardImpl {
+public final class TobiasAndrion extends CardImpl {
public TobiasAndrion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TocatliHonorGuard.java b/Mage.Sets/src/mage/cards/t/TocatliHonorGuard.java
index d15c16695c4..fa11fb9746d 100644
--- a/Mage.Sets/src/mage/cards/t/TocatliHonorGuard.java
+++ b/Mage.Sets/src/mage/cards/t/TocatliHonorGuard.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author spjspj
*/
-public class TocatliHonorGuard extends CardImpl {
+public final class TocatliHonorGuard extends CardImpl {
public TocatliHonorGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TogetherForever.java b/Mage.Sets/src/mage/cards/t/TogetherForever.java
new file mode 100644
index 00000000000..dd7e92d32f3
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/t/TogetherForever.java
@@ -0,0 +1,190 @@
+/*
+ * 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.t;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.DelayedTriggeredAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.keyword.SupportAbility;
+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.counters.CounterType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.CounterPredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.ZoneChangeEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801, jeffwadsworth
+ */
+public final class TogetherForever extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("");
+
+ static {
+ filter.add(new CounterPredicate(CounterType.P1P1));
+ }
+
+ public TogetherForever(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}{W}");
+
+ // When Together Forever enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two other target creatures.)
+ this.addAbility(new SupportAbility(this, 2));
+
+ // {1}: Choose target creature with a counter on it. When that creature dies this turn, return that card to its owner's hand.
+ Ability ability = new SimpleActivatedAbility(new TogetherForeverEffect(), new GenericManaCost(1));
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public TogetherForever(final TogetherForever card) {
+ super(card);
+ }
+
+ @Override
+ public TogetherForever copy() {
+ return new TogetherForever(this);
+ }
+}
+
+class TogetherForeverEffect extends OneShotEffect {
+
+ public TogetherForeverEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Choose target creature with a counter on it. When that creature dies this turn, return that card to its owner's hand.";
+ }
+
+ public TogetherForeverEffect(final TogetherForeverEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public TogetherForeverEffect copy() {
+ return new TogetherForeverEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ DelayedTriggeredAbility delayedAbility = new TogetherForeverDelayedTriggeredAbility(targetPointer.getFirst(game, source));
+ game.addDelayedTriggeredAbility(delayedAbility, source);
+ return true;
+ }
+}
+
+class TogetherForeverDelayedTriggeredAbility extends DelayedTriggeredAbility {
+
+ private UUID target;
+
+ public TogetherForeverDelayedTriggeredAbility(UUID target) {
+ super(new TogetherForeverDelayedEffect(target), Duration.EndOfTurn);
+ this.target = target;
+ }
+
+ public TogetherForeverDelayedTriggeredAbility(TogetherForeverDelayedTriggeredAbility ability) {
+ super(ability);
+ this.target = ability.target;
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.ZONE_CHANGE;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ if (event.getTargetId().equals(target)) {
+ ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
+ if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public TogetherForeverDelayedTriggeredAbility copy() {
+ return new TogetherForeverDelayedTriggeredAbility(this);
+ }
+
+ @Override
+ public String getRule() {
+ return "When that creature dies this turn, return that card to its owner's hand";
+ }
+}
+
+class TogetherForeverDelayedEffect extends OneShotEffect {
+
+ private final UUID target;
+
+ public TogetherForeverDelayedEffect(UUID target) {
+ super(Outcome.PutCreatureInPlay);
+ this.target = target;
+ this.staticText = "return that card to its owner's hand";
+ }
+
+ public TogetherForeverDelayedEffect(final TogetherForeverDelayedEffect effect) {
+ super(effect);
+ this.target = effect.target;
+ }
+
+ @Override
+ public TogetherForeverDelayedEffect copy() {
+ return new TogetherForeverDelayedEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ Permanent permanent = (Permanent) game.getLastKnownInformation(target, Zone.BATTLEFIELD);
+ if (controller != null
+ && permanent != null) {
+ Player player = game.getPlayer(permanent.getOwnerId());
+ if (player != null) {
+ Card card = game.getCard(target);
+ if (card != null && game.getState().getZone(card.getId()) == Zone.GRAVEYARD) {
+ return player.moveCards(card, Zone.HAND, source, game);
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/t/ToilToRenown.java b/Mage.Sets/src/mage/cards/t/ToilToRenown.java
index 8b44edb8a66..214dcbaa2e1 100644
--- a/Mage.Sets/src/mage/cards/t/ToilToRenown.java
+++ b/Mage.Sets/src/mage/cards/t/ToilToRenown.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author North
*/
-public class ToilToRenown extends CardImpl {
+public final class ToilToRenown extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("tapped artifact, creature, and land you control");
diff --git a/Mage.Sets/src/mage/cards/t/ToilTrouble.java b/Mage.Sets/src/mage/cards/t/ToilTrouble.java
index a6906f7d5c4..bd2a871c259 100644
--- a/Mage.Sets/src/mage/cards/t/ToilTrouble.java
+++ b/Mage.Sets/src/mage/cards/t/ToilTrouble.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
import mage.constants.SpellAbilityType;
import mage.target.TargetPlayer;
-public class ToilTrouble extends SplitCard {
+public final class ToilTrouble extends SplitCard {
public ToilTrouble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}", "{2}{R}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/t/ToilsOfNightAndDay.java b/Mage.Sets/src/mage/cards/t/ToilsOfNightAndDay.java
index 1134dfc7881..3c59c3efca0 100644
--- a/Mage.Sets/src/mage/cards/t/ToilsOfNightAndDay.java
+++ b/Mage.Sets/src/mage/cards/t/ToilsOfNightAndDay.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class ToilsOfNightAndDay extends CardImpl {
+public final class ToilsOfNightAndDay extends CardImpl {
public ToilsOfNightAndDay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TolariaWest.java b/Mage.Sets/src/mage/cards/t/TolariaWest.java
index 2f8e06e5552..269fbe81a8b 100644
--- a/Mage.Sets/src/mage/cards/t/TolariaWest.java
+++ b/Mage.Sets/src/mage/cards/t/TolariaWest.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author jonubuu
*/
-public class TolariaWest extends CardImpl {
+public final class TolariaWest extends CardImpl {
public TolariaWest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/t/TolarianAcademy.java b/Mage.Sets/src/mage/cards/t/TolarianAcademy.java
index 5c64015f6a4..d75d2a45c7e 100644
--- a/Mage.Sets/src/mage/cards/t/TolarianAcademy.java
+++ b/Mage.Sets/src/mage/cards/t/TolarianAcademy.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
* @author Backfir3
*/
-public class TolarianAcademy extends CardImpl {
+public final class TolarianAcademy extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
diff --git a/Mage.Sets/src/mage/cards/t/TolarianDrake.java b/Mage.Sets/src/mage/cards/t/TolarianDrake.java
index 709f008ee65..a066287c8db 100644
--- a/Mage.Sets/src/mage/cards/t/TolarianDrake.java
+++ b/Mage.Sets/src/mage/cards/t/TolarianDrake.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author noxx
*/
-public class TolarianDrake extends CardImpl {
+public final class TolarianDrake extends CardImpl {
public TolarianDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TolarianEmissary.java b/Mage.Sets/src/mage/cards/t/TolarianEmissary.java
index e6e7522ffba..5bfbc7bcf1b 100644
--- a/Mage.Sets/src/mage/cards/t/TolarianEmissary.java
+++ b/Mage.Sets/src/mage/cards/t/TolarianEmissary.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetEnchantmentPermanent;
* @author LoneFox
*/
-public class TolarianEmissary extends CardImpl {
+public final class TolarianEmissary extends CardImpl {
public TolarianEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TolarianEntrancer.java b/Mage.Sets/src/mage/cards/t/TolarianEntrancer.java
index 18442185d74..61e22c6641f 100644
--- a/Mage.Sets/src/mage/cards/t/TolarianEntrancer.java
+++ b/Mage.Sets/src/mage/cards/t/TolarianEntrancer.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes
*/
-public class TolarianEntrancer extends CardImpl {
+public final class TolarianEntrancer extends CardImpl {
public TolarianEntrancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TolarianScholar.java b/Mage.Sets/src/mage/cards/t/TolarianScholar.java
index c1083fdb98c..6b3bcb5eef9 100644
--- a/Mage.Sets/src/mage/cards/t/TolarianScholar.java
+++ b/Mage.Sets/src/mage/cards/t/TolarianScholar.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class TolarianScholar extends CardImpl {
+public final class TolarianScholar extends CardImpl {
public TolarianScholar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TolarianSentinel.java b/Mage.Sets/src/mage/cards/t/TolarianSentinel.java
index aaf5bc57509..d6de5c59ce0 100644
--- a/Mage.Sets/src/mage/cards/t/TolarianSentinel.java
+++ b/Mage.Sets/src/mage/cards/t/TolarianSentinel.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Galatolol
*/
-public class TolarianSentinel extends CardImpl {
+public final class TolarianSentinel extends CardImpl {
public TolarianSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TolarianSerpent.java b/Mage.Sets/src/mage/cards/t/TolarianSerpent.java
index 7c2b44f50a1..6503d95448a 100644
--- a/Mage.Sets/src/mage/cards/t/TolarianSerpent.java
+++ b/Mage.Sets/src/mage/cards/t/TolarianSerpent.java
@@ -41,7 +41,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author fireshoes
*/
-public class TolarianSerpent extends CardImpl {
+public final class TolarianSerpent extends CardImpl {
public TolarianSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TolarianWinds.java b/Mage.Sets/src/mage/cards/t/TolarianWinds.java
index f12a53c5a1b..42440e33b2e 100644
--- a/Mage.Sets/src/mage/cards/t/TolarianWinds.java
+++ b/Mage.Sets/src/mage/cards/t/TolarianWinds.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author emerald000
*/
-public class TolarianWinds extends CardImpl {
+public final class TolarianWinds extends CardImpl {
public TolarianWinds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TolsimirWolfblood.java b/Mage.Sets/src/mage/cards/t/TolsimirWolfblood.java
index 5ab737a5507..8e041bdcc6c 100644
--- a/Mage.Sets/src/mage/cards/t/TolsimirWolfblood.java
+++ b/Mage.Sets/src/mage/cards/t/TolsimirWolfblood.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.VojaToken;
*
* @author Plopman
*/
-public class TolsimirWolfblood extends CardImpl {
+public final class TolsimirWolfblood extends CardImpl {
private static final FilterCreaturePermanent filterGreen = new FilterCreaturePermanent("green creatures you control");
private static final FilterCreaturePermanent filterWhite = new FilterCreaturePermanent("white creatures you control");
diff --git a/Mage.Sets/src/mage/cards/t/TombHex.java b/Mage.Sets/src/mage/cards/t/TombHex.java
index 6421e6bd935..47e05bdc945 100644
--- a/Mage.Sets/src/mage/cards/t/TombHex.java
+++ b/Mage.Sets/src/mage/cards/t/TombHex.java
@@ -43,7 +43,7 @@ import mage.watchers.common.LandfallWatcher;
*
* @author jeffwadsworth
*/
-public class TombHex extends CardImpl {
+public final class TombHex extends CardImpl {
public TombHex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TombOfTheDuskRose.java b/Mage.Sets/src/mage/cards/t/TombOfTheDuskRose.java
index 500df591f0d..ad3a95c0f11 100644
--- a/Mage.Sets/src/mage/cards/t/TombOfTheDuskRose.java
+++ b/Mage.Sets/src/mage/cards/t/TombOfTheDuskRose.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class TombOfTheDuskRose extends CardImpl {
+public final class TombOfTheDuskRose extends CardImpl {
public TombOfTheDuskRose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/t/TombOfTheSpiritDragon.java b/Mage.Sets/src/mage/cards/t/TombOfTheSpiritDragon.java
index 62d2150327b..a27aeb7a2fd 100644
--- a/Mage.Sets/src/mage/cards/t/TombOfTheSpiritDragon.java
+++ b/Mage.Sets/src/mage/cards/t/TombOfTheSpiritDragon.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
*
* @author LevelX2
*/
-public class TombOfTheSpiritDragon extends CardImpl {
+public final class TombOfTheSpiritDragon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("colorless creature you control");
diff --git a/Mage.Sets/src/mage/cards/t/TombOfUrami.java b/Mage.Sets/src/mage/cards/t/TombOfUrami.java
index 7798fd8e2cc..4b8dbb9278e 100644
--- a/Mage.Sets/src/mage/cards/t/TombOfUrami.java
+++ b/Mage.Sets/src/mage/cards/t/TombOfUrami.java
@@ -51,7 +51,7 @@ import mage.game.permanent.token.UramiToken;
*
* @author Plopman
*/
-public class TombOfUrami extends CardImpl {
+public final class TombOfUrami extends CardImpl {
public TombOfUrami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/t/TombRobber.java b/Mage.Sets/src/mage/cards/t/TombRobber.java
index 6dd4d221184..32173583617 100644
--- a/Mage.Sets/src/mage/cards/t/TombRobber.java
+++ b/Mage.Sets/src/mage/cards/t/TombRobber.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
/**
* @author JayDi85
*/
-public class TombRobber extends CardImpl {
+public final class TombRobber extends CardImpl {
public TombRobber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Tombfire.java b/Mage.Sets/src/mage/cards/t/Tombfire.java
index 604aac33719..58b704a69ed 100644
--- a/Mage.Sets/src/mage/cards/t/Tombfire.java
+++ b/Mage.Sets/src/mage/cards/t/Tombfire.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author cbt33, Cloudthresher (LevelX2), Cranial Extraction (BetaSteward)
*/
-public class Tombfire extends CardImpl {
+public final class Tombfire extends CardImpl {
public Tombfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Tombstalker.java b/Mage.Sets/src/mage/cards/t/Tombstalker.java
index 5dd605a4039..b5d4bf3fc7e 100644
--- a/Mage.Sets/src/mage/cards/t/Tombstalker.java
+++ b/Mage.Sets/src/mage/cards/t/Tombstalker.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Tombstalker extends CardImpl {
+public final class Tombstalker extends CardImpl {
public Tombstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TombstoneStairwell.java b/Mage.Sets/src/mage/cards/t/TombstoneStairwell.java
index 3eecff272fd..70c248f69ab 100644
--- a/Mage.Sets/src/mage/cards/t/TombstoneStairwell.java
+++ b/Mage.Sets/src/mage/cards/t/TombstoneStairwell.java
@@ -61,7 +61,7 @@ import mage.util.CardUtil;
*
* @author L_J
*/
-public class TombstoneStairwell extends CardImpl {
+public final class TombstoneStairwell extends CardImpl {
public TombstoneStairwell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TomeScour.java b/Mage.Sets/src/mage/cards/t/TomeScour.java
index 0fbf4417d18..b852c63d1a2 100644
--- a/Mage.Sets/src/mage/cards/t/TomeScour.java
+++ b/Mage.Sets/src/mage/cards/t/TomeScour.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class TomeScour extends CardImpl {
+public final class TomeScour extends CardImpl {
public TomeScour(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TomorrowAzamisFamiliar.java b/Mage.Sets/src/mage/cards/t/TomorrowAzamisFamiliar.java
index 3571012f722..8fc18f1a4ae 100644
--- a/Mage.Sets/src/mage/cards/t/TomorrowAzamisFamiliar.java
+++ b/Mage.Sets/src/mage/cards/t/TomorrowAzamisFamiliar.java
@@ -45,7 +45,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX2
*/
-public class TomorrowAzamisFamiliar extends CardImpl {
+public final class TomorrowAzamisFamiliar extends CardImpl {
public TomorrowAzamisFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TonicPeddler.java b/Mage.Sets/src/mage/cards/t/TonicPeddler.java
index a6b8d485798..c26563bb7ed 100644
--- a/Mage.Sets/src/mage/cards/t/TonicPeddler.java
+++ b/Mage.Sets/src/mage/cards/t/TonicPeddler.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author Derpthemeus
*/
-public class TonicPeddler extends CardImpl {
+public final class TonicPeddler extends CardImpl {
public TonicPeddler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ToolcraftExemplar.java b/Mage.Sets/src/mage/cards/t/ToolcraftExemplar.java
index 77351b77928..aa403f9b559 100644
--- a/Mage.Sets/src/mage/cards/t/ToolcraftExemplar.java
+++ b/Mage.Sets/src/mage/cards/t/ToolcraftExemplar.java
@@ -52,7 +52,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author fireshoes
*/
-public class ToolcraftExemplar extends CardImpl {
+public final class ToolcraftExemplar extends CardImpl {
public ToolcraftExemplar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ToothAndClaw.java b/Mage.Sets/src/mage/cards/t/ToothAndClaw.java
index df7d0b661cb..0d5cef83d3e 100644
--- a/Mage.Sets/src/mage/cards/t/ToothAndClaw.java
+++ b/Mage.Sets/src/mage/cards/t/ToothAndClaw.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class ToothAndClaw extends CardImpl {
+public final class ToothAndClaw extends CardImpl {
public ToothAndClaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/ToothAndNail.java b/Mage.Sets/src/mage/cards/t/ToothAndNail.java
index 9ecc9015f8e..1bbbd9d1c18 100644
--- a/Mage.Sets/src/mage/cards/t/ToothAndNail.java
+++ b/Mage.Sets/src/mage/cards/t/ToothAndNail.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class ToothAndNail extends CardImpl {
+public final class ToothAndNail extends CardImpl {
public ToothAndNail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ToothCollector.java b/Mage.Sets/src/mage/cards/t/ToothCollector.java
index caaa8507ba6..b8d5ee26a0b 100644
--- a/Mage.Sets/src/mage/cards/t/ToothCollector.java
+++ b/Mage.Sets/src/mage/cards/t/ToothCollector.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ToothCollector extends CardImpl {
+public final class ToothCollector extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/t/ToothOfChissGoria.java b/Mage.Sets/src/mage/cards/t/ToothOfChissGoria.java
index 8a1229dbc09..e0c01b2b371 100644
--- a/Mage.Sets/src/mage/cards/t/ToothOfChissGoria.java
+++ b/Mage.Sets/src/mage/cards/t/ToothOfChissGoria.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ToothOfChissGoria extends CardImpl {
+public final class ToothOfChissGoria extends CardImpl {
public ToothOfChissGoria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/ToothOfRamos.java b/Mage.Sets/src/mage/cards/t/ToothOfRamos.java
index 0e920d7ffb3..b2585bf65cd 100644
--- a/Mage.Sets/src/mage/cards/t/ToothOfRamos.java
+++ b/Mage.Sets/src/mage/cards/t/ToothOfRamos.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Jgod
*/
-public class ToothOfRamos extends CardImpl {
+public final class ToothOfRamos extends CardImpl {
public ToothOfRamos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/ToothyImaginaryFriend.java b/Mage.Sets/src/mage/cards/t/ToothyImaginaryFriend.java
new file mode 100644
index 00000000000..c8e1cb2f17f
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/t/ToothyImaginaryFriend.java
@@ -0,0 +1,79 @@
+/*
+ * 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.t;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.DrawCardControllerTriggeredAbility;
+import mage.abilities.common.LeavesBattlefieldTriggeredAbility;
+import mage.abilities.dynamicvalue.common.CountersSourceCount;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.counters.CounterType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ToothyImaginaryFriend extends CardImpl {
+
+ public ToothyImaginaryFriend(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.ILLUSION);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Partner with Pir, Imaginative Rascal (When this creature enters the battlefield, target player may put Pir into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Pir, Imaginative Rascal", true));
+
+ // Whenever you draw a card, put a +1/+1 counter on Toothy, Imaginary Friend.
+ this.addAbility(new DrawCardControllerTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false));
+
+ // When Toothy leaves the battlefield, draw a card for each +1/+1 counter on it.
+ this.addAbility(new LeavesBattlefieldTriggeredAbility(
+ new DrawCardSourceControllerEffect(new CountersSourceCount(CounterType.P1P1))
+ .setText("draw a card for each +1/+1 counter on it"), false));
+ }
+
+ public ToothyImaginaryFriend(final ToothyImaginaryFriend card) {
+ super(card);
+ }
+
+ @Override
+ public ToothyImaginaryFriend copy() {
+ return new ToothyImaginaryFriend(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/t/TopanAscetic.java b/Mage.Sets/src/mage/cards/t/TopanAscetic.java
index 53a69f4c100..304b7998235 100644
--- a/Mage.Sets/src/mage/cards/t/TopanAscetic.java
+++ b/Mage.Sets/src/mage/cards/t/TopanAscetic.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class TopanAscetic extends CardImpl {
+public final class TopanAscetic extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
static{
diff --git a/Mage.Sets/src/mage/cards/t/TopanFreeblade.java b/Mage.Sets/src/mage/cards/t/TopanFreeblade.java
index 30c983453ee..34938364b9c 100644
--- a/Mage.Sets/src/mage/cards/t/TopanFreeblade.java
+++ b/Mage.Sets/src/mage/cards/t/TopanFreeblade.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class TopanFreeblade extends CardImpl {
+public final class TopanFreeblade extends CardImpl {
public TopanFreeblade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Topple.java b/Mage.Sets/src/mage/cards/t/Topple.java
index a74351ad8f8..cef6aa9d595 100644
--- a/Mage.Sets/src/mage/cards/t/Topple.java
+++ b/Mage.Sets/src/mage/cards/t/Topple.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author L_J
*/
-public class Topple extends CardImpl {
+public final class Topple extends CardImpl {
public Topple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Topplegeist.java b/Mage.Sets/src/mage/cards/t/Topplegeist.java
index ff82f44fdc1..c14adbcc9cc 100644
--- a/Mage.Sets/src/mage/cards/t/Topplegeist.java
+++ b/Mage.Sets/src/mage/cards/t/Topplegeist.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Topplegeist extends CardImpl {
+public final class Topplegeist extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/t/TorGiant.java b/Mage.Sets/src/mage/cards/t/TorGiant.java
index 60ae59a74fe..2e4a7a5df62 100644
--- a/Mage.Sets/src/mage/cards/t/TorGiant.java
+++ b/Mage.Sets/src/mage/cards/t/TorGiant.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TorGiant extends CardImpl {
+public final class TorGiant extends CardImpl {
public TorGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TorWauki.java b/Mage.Sets/src/mage/cards/t/TorWauki.java
index e1d19b64473..2caec7e68d2 100644
--- a/Mage.Sets/src/mage/cards/t/TorWauki.java
+++ b/Mage.Sets/src/mage/cards/t/TorWauki.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author LoneFox
*/
-public class TorWauki extends CardImpl {
+public final class TorWauki extends CardImpl {
public TorWauki(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TorchDrake.java b/Mage.Sets/src/mage/cards/t/TorchDrake.java
index 7c054eb6e3b..1a84bfae563 100644
--- a/Mage.Sets/src/mage/cards/t/TorchDrake.java
+++ b/Mage.Sets/src/mage/cards/t/TorchDrake.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class TorchDrake extends CardImpl {
+public final class TorchDrake extends CardImpl {
public TorchDrake (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TorchFiend.java b/Mage.Sets/src/mage/cards/t/TorchFiend.java
index d5c3c51cb2d..0cb9becb20b 100644
--- a/Mage.Sets/src/mage/cards/t/TorchFiend.java
+++ b/Mage.Sets/src/mage/cards/t/TorchFiend.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Loki
*/
-public class TorchFiend extends CardImpl {
+public final class TorchFiend extends CardImpl {
public TorchFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TorchGauntlet.java b/Mage.Sets/src/mage/cards/t/TorchGauntlet.java
index 227e862c08f..895b14eab05 100644
--- a/Mage.Sets/src/mage/cards/t/TorchGauntlet.java
+++ b/Mage.Sets/src/mage/cards/t/TorchGauntlet.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class TorchGauntlet extends CardImpl {
+public final class TorchGauntlet extends CardImpl {
public TorchGauntlet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TorchSlinger.java b/Mage.Sets/src/mage/cards/t/TorchSlinger.java
index 6ea39f1baa8..305b60ab438 100644
--- a/Mage.Sets/src/mage/cards/t/TorchSlinger.java
+++ b/Mage.Sets/src/mage/cards/t/TorchSlinger.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TorchSlinger extends CardImpl {
+public final class TorchSlinger extends CardImpl {
public TorchSlinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TorchSong.java b/Mage.Sets/src/mage/cards/t/TorchSong.java
index 95c817566d2..0bb32cf2eea 100644
--- a/Mage.Sets/src/mage/cards/t/TorchSong.java
+++ b/Mage.Sets/src/mage/cards/t/TorchSong.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class TorchSong extends CardImpl {
+public final class TorchSong extends CardImpl {
public TorchSong(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Torchling.java b/Mage.Sets/src/mage/cards/t/Torchling.java
index 9f82bbaefa1..b735ffd9d41 100644
--- a/Mage.Sets/src/mage/cards/t/Torchling.java
+++ b/Mage.Sets/src/mage/cards/t/Torchling.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class Torchling extends CardImpl {
+public final class Torchling extends CardImpl {
public Torchling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TorgaarFamineIncarnate.java b/Mage.Sets/src/mage/cards/t/TorgaarFamineIncarnate.java
index 5a8751e4d99..2cd87f28087 100644
--- a/Mage.Sets/src/mage/cards/t/TorgaarFamineIncarnate.java
+++ b/Mage.Sets/src/mage/cards/t/TorgaarFamineIncarnate.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class TorgaarFamineIncarnate extends CardImpl {
+public final class TorgaarFamineIncarnate extends CardImpl {
public TorgaarFamineIncarnate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ToriiWatchward.java b/Mage.Sets/src/mage/cards/t/ToriiWatchward.java
index cb0c3a45cc5..65c43ae68ee 100644
--- a/Mage.Sets/src/mage/cards/t/ToriiWatchward.java
+++ b/Mage.Sets/src/mage/cards/t/ToriiWatchward.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ToriiWatchward extends CardImpl {
+public final class ToriiWatchward extends CardImpl {
public ToriiWatchward(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Torment.java b/Mage.Sets/src/mage/cards/t/Torment.java
index aa378c142a3..b19f563f031 100644
--- a/Mage.Sets/src/mage/cards/t/Torment.java
+++ b/Mage.Sets/src/mage/cards/t/Torment.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Torment extends CardImpl {
+public final class Torment extends CardImpl {
public Torment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TormentOfHailfire.java b/Mage.Sets/src/mage/cards/t/TormentOfHailfire.java
index 79e9e389ec3..e1116c5af7e 100644
--- a/Mage.Sets/src/mage/cards/t/TormentOfHailfire.java
+++ b/Mage.Sets/src/mage/cards/t/TormentOfHailfire.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class TormentOfHailfire extends CardImpl {
+public final class TormentOfHailfire extends CardImpl {
public TormentOfHailfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TormentOfScarabs.java b/Mage.Sets/src/mage/cards/t/TormentOfScarabs.java
index 8b42587be80..146d8e8a539 100644
--- a/Mage.Sets/src/mage/cards/t/TormentOfScarabs.java
+++ b/Mage.Sets/src/mage/cards/t/TormentOfScarabs.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class TormentOfScarabs extends CardImpl {
+public final class TormentOfScarabs extends CardImpl {
public TormentOfScarabs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TormentOfVenom.java b/Mage.Sets/src/mage/cards/t/TormentOfVenom.java
index c697f038f8f..05b45c9667b 100644
--- a/Mage.Sets/src/mage/cards/t/TormentOfVenom.java
+++ b/Mage.Sets/src/mage/cards/t/TormentOfVenom.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TormentOfVenom extends CardImpl {
+public final class TormentOfVenom extends CardImpl {
public TormentOfVenom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TormentedAngel.java b/Mage.Sets/src/mage/cards/t/TormentedAngel.java
index aa997d61612..b660f9224df 100644
--- a/Mage.Sets/src/mage/cards/t/TormentedAngel.java
+++ b/Mage.Sets/src/mage/cards/t/TormentedAngel.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TormentedAngel extends CardImpl {
+public final class TormentedAngel extends CardImpl {
public TormentedAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TormentedHero.java b/Mage.Sets/src/mage/cards/t/TormentedHero.java
index 197d1ff211d..e0674ce8322 100644
--- a/Mage.Sets/src/mage/cards/t/TormentedHero.java
+++ b/Mage.Sets/src/mage/cards/t/TormentedHero.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class TormentedHero extends CardImpl {
+public final class TormentedHero extends CardImpl {
public TormentedHero(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TormentedPariah.java b/Mage.Sets/src/mage/cards/t/TormentedPariah.java
index d89da23dd03..1be1d426d5a 100644
--- a/Mage.Sets/src/mage/cards/t/TormentedPariah.java
+++ b/Mage.Sets/src/mage/cards/t/TormentedPariah.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class TormentedPariah extends CardImpl {
+public final class TormentedPariah extends CardImpl {
public TormentedPariah(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TormentedSoul.java b/Mage.Sets/src/mage/cards/t/TormentedSoul.java
index c8d3e32b7c8..f4a1ed79a95 100644
--- a/Mage.Sets/src/mage/cards/t/TormentedSoul.java
+++ b/Mage.Sets/src/mage/cards/t/TormentedSoul.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class TormentedSoul extends CardImpl {
+public final class TormentedSoul extends CardImpl {
public TormentedSoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TormentedThoughts.java b/Mage.Sets/src/mage/cards/t/TormentedThoughts.java
index b031f9d0e81..8092c86d1ea 100644
--- a/Mage.Sets/src/mage/cards/t/TormentedThoughts.java
+++ b/Mage.Sets/src/mage/cards/t/TormentedThoughts.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class TormentedThoughts extends CardImpl {
+public final class TormentedThoughts extends CardImpl {
public TormentedThoughts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TormentingVoice.java b/Mage.Sets/src/mage/cards/t/TormentingVoice.java
index 69cf0167ca8..330ebf63081 100644
--- a/Mage.Sets/src/mage/cards/t/TormentingVoice.java
+++ b/Mage.Sets/src/mage/cards/t/TormentingVoice.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class TormentingVoice extends CardImpl {
+public final class TormentingVoice extends CardImpl {
public TormentingVoice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TormentorExarch.java b/Mage.Sets/src/mage/cards/t/TormentorExarch.java
index b7fbfb69547..85562773482 100644
--- a/Mage.Sets/src/mage/cards/t/TormentorExarch.java
+++ b/Mage.Sets/src/mage/cards/t/TormentorExarch.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class TormentorExarch extends CardImpl {
+public final class TormentorExarch extends CardImpl {
public TormentorExarch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TormentorsTrident.java b/Mage.Sets/src/mage/cards/t/TormentorsTrident.java
index ed44f1a4c97..847337361bc 100644
--- a/Mage.Sets/src/mage/cards/t/TormentorsTrident.java
+++ b/Mage.Sets/src/mage/cards/t/TormentorsTrident.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
* @author noxx
*/
-public class TormentorsTrident extends CardImpl {
+public final class TormentorsTrident extends CardImpl {
public TormentorsTrident(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TormodsCrypt.java b/Mage.Sets/src/mage/cards/t/TormodsCrypt.java
index e3da03a66bb..32d2f9c12f5 100644
--- a/Mage.Sets/src/mage/cards/t/TormodsCrypt.java
+++ b/Mage.Sets/src/mage/cards/t/TormodsCrypt.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class TormodsCrypt extends CardImpl {
+public final class TormodsCrypt extends CardImpl {
public TormodsCrypt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/t/Tornado.java b/Mage.Sets/src/mage/cards/t/Tornado.java
index 3c49d7f5ba4..16104b31c40 100644
--- a/Mage.Sets/src/mage/cards/t/Tornado.java
+++ b/Mage.Sets/src/mage/cards/t/Tornado.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author Quercitron
*/
-public class Tornado extends CardImpl {
+public final class Tornado extends CardImpl {
public Tornado(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TornadoElemental.java b/Mage.Sets/src/mage/cards/t/TornadoElemental.java
index 7a7b96c9f00..59161121185 100644
--- a/Mage.Sets/src/mage/cards/t/TornadoElemental.java
+++ b/Mage.Sets/src/mage/cards/t/TornadoElemental.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author emerald000
*/
-public class TornadoElemental extends CardImpl {
+public final class TornadoElemental extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/t/TorpidMoloch.java b/Mage.Sets/src/mage/cards/t/TorpidMoloch.java
index 6ce131c9956..377635175e2 100644
--- a/Mage.Sets/src/mage/cards/t/TorpidMoloch.java
+++ b/Mage.Sets/src/mage/cards/t/TorpidMoloch.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class TorpidMoloch extends CardImpl {
+public final class TorpidMoloch extends CardImpl {
public TorpidMoloch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TorporDust.java b/Mage.Sets/src/mage/cards/t/TorporDust.java
index d41ca22c144..afdc5da005e 100644
--- a/Mage.Sets/src/mage/cards/t/TorporDust.java
+++ b/Mage.Sets/src/mage/cards/t/TorporDust.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class TorporDust extends CardImpl {
+public final class TorporDust extends CardImpl {
public TorporDust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/t/TorporOrb.java b/Mage.Sets/src/mage/cards/t/TorporOrb.java
index 8375b7c62af..06574430766 100644
--- a/Mage.Sets/src/mage/cards/t/TorporOrb.java
+++ b/Mage.Sets/src/mage/cards/t/TorporOrb.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward
*/
-public class TorporOrb extends CardImpl {
+public final class TorporOrb extends CardImpl {
public TorporOrb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TorrentElemental.java b/Mage.Sets/src/mage/cards/t/TorrentElemental.java
index 21d31406fb1..d23947dadf8 100644
--- a/Mage.Sets/src/mage/cards/t/TorrentElemental.java
+++ b/Mage.Sets/src/mage/cards/t/TorrentElemental.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TorrentElemental extends CardImpl {
+public final class TorrentElemental extends CardImpl {
public TorrentElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TorrentOfFire.java b/Mage.Sets/src/mage/cards/t/TorrentOfFire.java
index b2ad280f6c0..7458af0abd6 100644
--- a/Mage.Sets/src/mage/cards/t/TorrentOfFire.java
+++ b/Mage.Sets/src/mage/cards/t/TorrentOfFire.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author nigelzor
*/
-public class TorrentOfFire extends CardImpl {
+public final class TorrentOfFire extends CardImpl {
public TorrentOfFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TorrentOfSouls.java b/Mage.Sets/src/mage/cards/t/TorrentOfSouls.java
index 7ec79c9301e..d4876d40c40 100644
--- a/Mage.Sets/src/mage/cards/t/TorrentOfSouls.java
+++ b/Mage.Sets/src/mage/cards/t/TorrentOfSouls.java
@@ -58,7 +58,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
*
* @author jeffwadsworth
*/
-public class TorrentOfSouls extends CardImpl {
+public final class TorrentOfSouls extends CardImpl {
public TorrentOfSouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B/R}");
diff --git a/Mage.Sets/src/mage/cards/t/TorrentOfStone.java b/Mage.Sets/src/mage/cards/t/TorrentOfStone.java
index bad2a55ea19..a2504af4e98 100644
--- a/Mage.Sets/src/mage/cards/t/TorrentOfStone.java
+++ b/Mage.Sets/src/mage/cards/t/TorrentOfStone.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TorrentOfStone extends CardImpl {
+public final class TorrentOfStone extends CardImpl {
private static final FilterControlledLandPermanent filterSacrifice = new FilterControlledLandPermanent("two Mountains");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TorrentialGearhulk.java b/Mage.Sets/src/mage/cards/t/TorrentialGearhulk.java
index 838bf4f9ad9..de06ba6f61d 100644
--- a/Mage.Sets/src/mage/cards/t/TorrentialGearhulk.java
+++ b/Mage.Sets/src/mage/cards/t/TorrentialGearhulk.java
@@ -29,6 +29,7 @@ package mage.cards.t;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.ContinuousEffect;
@@ -39,9 +40,9 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.mageobject.CardTypePredicate;
@@ -57,7 +58,7 @@ import org.apache.log4j.Logger;
*
* @author fireshoes
*/
-public class TorrentialGearhulk extends CardImpl {
+public final class TorrentialGearhulk extends CardImpl {
private static final FilterCard filter = new FilterCard("instant card from your graveyard");
@@ -115,13 +116,13 @@ class TorrentialGearhulkEffect extends OneShotEffect {
Card card = game.getCard(this.getTargetPointer().getFirst(game, source));
if (card != null && card.getSpellAbility() != null) {
if (controller.chooseUse(outcome, "Cast " + card.getLogName() + '?', source, game)) {
- if (controller.cast(card.getSpellAbility(), game, true)) {
+ if (controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
ContinuousEffect effect = new TorrentialGearhulkReplacementEffect(card.getId());
effect.setTargetPointer(new FixedTarget(card.getId(), game.getState().getZoneChangeCounter(card.getId())));
game.addEffect(effect, source);
}
}
- } else {
+ } else if (card != null) {
Logger.getLogger(TorrentialGearhulkEffect.class).error("Torrential Gearhulk - Instant card without spellAbility : " + card.getName());
return false;
}
diff --git a/Mage.Sets/src/mage/cards/t/TorstenVonUrsus.java b/Mage.Sets/src/mage/cards/t/TorstenVonUrsus.java
index 63871252f19..74b6fd279ef 100644
--- a/Mage.Sets/src/mage/cards/t/TorstenVonUrsus.java
+++ b/Mage.Sets/src/mage/cards/t/TorstenVonUrsus.java
@@ -39,7 +39,7 @@ import mage.constants.SuperType;
*
* @author North
*/
-public class TorstenVonUrsus extends CardImpl {
+public final class TorstenVonUrsus extends CardImpl {
public TorstenVonUrsus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TortoiseFormation.java b/Mage.Sets/src/mage/cards/t/TortoiseFormation.java
index 0683a5b7585..e59cc2928e9 100644
--- a/Mage.Sets/src/mage/cards/t/TortoiseFormation.java
+++ b/Mage.Sets/src/mage/cards/t/TortoiseFormation.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author North
*/
-public class TortoiseFormation extends CardImpl {
+public final class TortoiseFormation extends CardImpl {
public TortoiseFormation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Torture.java b/Mage.Sets/src/mage/cards/t/Torture.java
index b9dc1d60daa..3a32092e723 100644
--- a/Mage.Sets/src/mage/cards/t/Torture.java
+++ b/Mage.Sets/src/mage/cards/t/Torture.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*/
-public class Torture extends CardImpl {
+public final class Torture extends CardImpl {
private static final String rule = "Testing rules";
diff --git a/Mage.Sets/src/mage/cards/t/TortureChamber.java b/Mage.Sets/src/mage/cards/t/TortureChamber.java
index 4e4e4f4ef5e..dbaec8a3b00 100644
--- a/Mage.Sets/src/mage/cards/t/TortureChamber.java
+++ b/Mage.Sets/src/mage/cards/t/TortureChamber.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TortureChamber extends CardImpl {
+public final class TortureChamber extends CardImpl {
public TortureChamber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TorturedExistence.java b/Mage.Sets/src/mage/cards/t/TorturedExistence.java
index 14bd4652c45..0d53c9e9920 100644
--- a/Mage.Sets/src/mage/cards/t/TorturedExistence.java
+++ b/Mage.Sets/src/mage/cards/t/TorturedExistence.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class TorturedExistence extends CardImpl {
+public final class TorturedExistence extends CardImpl {
public TorturedExistence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java b/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java
index 5352b3dd2b5..360d1e01aed 100644
--- a/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java
+++ b/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java
@@ -29,6 +29,7 @@ package mage.cards.t;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.DiesCreatureTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -55,7 +56,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class ToshiroUmezawa extends CardImpl {
+public final class ToshiroUmezawa extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature an opponent controls");
private static final FilterCard filterInstant = new FilterCard("instant card from your graveyard");
@@ -115,7 +116,7 @@ class ToshiroUmezawaEffect extends OneShotEffect {
if (controller != null) {
Card card = game.getCard(getTargetPointer().getFirst(game, source));
if (card != null) {
- controller.cast(card.getSpellAbility(), game, false);
+ controller.cast(card.getSpellAbility(), game, false, new MageObjectReference(source.getSourceObject(game), game));
game.addEffect(new ToshiroUmezawaReplacementEffect(card.getId()), source);
}
}
diff --git a/Mage.Sets/src/mage/cards/t/TotalWar.java b/Mage.Sets/src/mage/cards/t/TotalWar.java
index 5aca291c7aa..7c55f360458 100644
--- a/Mage.Sets/src/mage/cards/t/TotalWar.java
+++ b/Mage.Sets/src/mage/cards/t/TotalWar.java
@@ -49,7 +49,7 @@ import mage.watchers.common.AttackedOrBlockedThisCombatWatcher;
*
* @author jeffwadsworth & emerald000 & L_J
*/
-public class TotalWar extends CardImpl {
+public final class TotalWar extends CardImpl {
public TotalWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TotallyLost.java b/Mage.Sets/src/mage/cards/t/TotallyLost.java
index 151e970fda1..19e8043ce3f 100644
--- a/Mage.Sets/src/mage/cards/t/TotallyLost.java
+++ b/Mage.Sets/src/mage/cards/t/TotallyLost.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author Plopman
*/
-public class TotallyLost extends CardImpl {
+public final class TotallyLost extends CardImpl {
public TotallyLost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java b/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java
index f38bca4339f..41a5aabfca2 100644
--- a/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java
+++ b/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author jeffwadsworth
*/
-public class TotemGuideHartebeest extends CardImpl {
+public final class TotemGuideHartebeest extends CardImpl {
private static final FilterCard filter = new FilterCard("Aura card");
diff --git a/Mage.Sets/src/mage/cards/t/TotemSpeaker.java b/Mage.Sets/src/mage/cards/t/TotemSpeaker.java
index 78a71a2b8de..bb0d60b63a7 100644
--- a/Mage.Sets/src/mage/cards/t/TotemSpeaker.java
+++ b/Mage.Sets/src/mage/cards/t/TotemSpeaker.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Wehk
*/
-public class TotemSpeaker extends CardImpl {
+public final class TotemSpeaker extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Beast");
diff --git a/Mage.Sets/src/mage/cards/t/TouchOfBrilliance.java b/Mage.Sets/src/mage/cards/t/TouchOfBrilliance.java
index 87dd9156819..82a3f77a0c3 100644
--- a/Mage.Sets/src/mage/cards/t/TouchOfBrilliance.java
+++ b/Mage.Sets/src/mage/cards/t/TouchOfBrilliance.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LoneFox
*/
-public class TouchOfBrilliance extends CardImpl {
+public final class TouchOfBrilliance extends CardImpl {
public TouchOfBrilliance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TouchOfDarkness.java b/Mage.Sets/src/mage/cards/t/TouchOfDarkness.java
index fc132393978..41203ba164b 100644
--- a/Mage.Sets/src/mage/cards/t/TouchOfDarkness.java
+++ b/Mage.Sets/src/mage/cards/t/TouchOfDarkness.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author maxlebedev
*/
-public class TouchOfDarkness extends CardImpl {
+public final class TouchOfDarkness extends CardImpl {
public TouchOfDarkness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TouchOfDeath.java b/Mage.Sets/src/mage/cards/t/TouchOfDeath.java
index 21b6070cd36..09868fb692e 100644
--- a/Mage.Sets/src/mage/cards/t/TouchOfDeath.java
+++ b/Mage.Sets/src/mage/cards/t/TouchOfDeath.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class TouchOfDeath extends CardImpl {
+public final class TouchOfDeath extends CardImpl {
public TouchOfDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TouchOfInvisibility.java b/Mage.Sets/src/mage/cards/t/TouchOfInvisibility.java
index 21be11332b0..6c5c23c574f 100644
--- a/Mage.Sets/src/mage/cards/t/TouchOfInvisibility.java
+++ b/Mage.Sets/src/mage/cards/t/TouchOfInvisibility.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class TouchOfInvisibility extends CardImpl {
+public final class TouchOfInvisibility extends CardImpl {
public TouchOfInvisibility(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java b/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java
index a292c80dc7c..3d5ce0bf8c8 100644
--- a/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java
+++ b/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class TouchOfMoonglove extends CardImpl {
+public final class TouchOfMoonglove extends CardImpl {
public TouchOfMoonglove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TouchOfTheEternal.java b/Mage.Sets/src/mage/cards/t/TouchOfTheEternal.java
index 081ef437e1c..34f014c4e21 100644
--- a/Mage.Sets/src/mage/cards/t/TouchOfTheEternal.java
+++ b/Mage.Sets/src/mage/cards/t/TouchOfTheEternal.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class TouchOfTheEternal extends CardImpl {
+public final class TouchOfTheEternal extends CardImpl {
public TouchOfTheEternal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TouchOfTheVoid.java b/Mage.Sets/src/mage/cards/t/TouchOfTheVoid.java
index b15b16dc172..1f109246d6c 100644
--- a/Mage.Sets/src/mage/cards/t/TouchOfTheVoid.java
+++ b/Mage.Sets/src/mage/cards/t/TouchOfTheVoid.java
@@ -43,7 +43,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author LevelX2
*/
-public class TouchOfTheVoid extends CardImpl {
+public final class TouchOfTheVoid extends CardImpl {
public TouchOfTheVoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Touchstone.java b/Mage.Sets/src/mage/cards/t/Touchstone.java
index 1027bece0f3..176ad17a5fc 100644
--- a/Mage.Sets/src/mage/cards/t/Touchstone.java
+++ b/Mage.Sets/src/mage/cards/t/Touchstone.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LoneFox
*/
-public class Touchstone extends CardImpl {
+public final class Touchstone extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifact you don't control");
diff --git a/Mage.Sets/src/mage/cards/t/TourachsChant.java b/Mage.Sets/src/mage/cards/t/TourachsChant.java
index 53219c5ee95..ac942eff25e 100644
--- a/Mage.Sets/src/mage/cards/t/TourachsChant.java
+++ b/Mage.Sets/src/mage/cards/t/TourachsChant.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class TourachsChant extends CardImpl {
+public final class TourachsChant extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/t/TourachsGate.java b/Mage.Sets/src/mage/cards/t/TourachsGate.java
index f298c2a9ff5..f50561ea425 100644
--- a/Mage.Sets/src/mage/cards/t/TourachsGate.java
+++ b/Mage.Sets/src/mage/cards/t/TourachsGate.java
@@ -70,7 +70,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author L_J
*/
-public class TourachsGate extends CardImpl {
+public final class TourachsGate extends CardImpl {
private static final FilterControlledPermanent filterLand = new FilterControlledPermanent("land you control");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TovolarsMagehunter.java b/Mage.Sets/src/mage/cards/t/TovolarsMagehunter.java
index 1074d413caa..d7f3942aa2a 100644
--- a/Mage.Sets/src/mage/cards/t/TovolarsMagehunter.java
+++ b/Mage.Sets/src/mage/cards/t/TovolarsMagehunter.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class TovolarsMagehunter extends CardImpl {
+public final class TovolarsMagehunter extends CardImpl {
public TovolarsMagehunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/t/TowerAbove.java b/Mage.Sets/src/mage/cards/t/TowerAbove.java
index c98a7947e6f..500f2515e95 100644
--- a/Mage.Sets/src/mage/cards/t/TowerAbove.java
+++ b/Mage.Sets/src/mage/cards/t/TowerAbove.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class TowerAbove extends CardImpl {
+public final class TowerAbove extends CardImpl {
public TowerAbove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2/G}{2/G}{2/G}");
diff --git a/Mage.Sets/src/mage/cards/t/TowerDefense.java b/Mage.Sets/src/mage/cards/t/TowerDefense.java
index 92e0b9a9cf6..7a7cb5da254 100644
--- a/Mage.Sets/src/mage/cards/t/TowerDefense.java
+++ b/Mage.Sets/src/mage/cards/t/TowerDefense.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Plopman
*/
-public class TowerDefense extends CardImpl {
+public final class TowerDefense extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TowerDrake.java b/Mage.Sets/src/mage/cards/t/TowerDrake.java
index 7dac64c70a7..5af6a16b482 100644
--- a/Mage.Sets/src/mage/cards/t/TowerDrake.java
+++ b/Mage.Sets/src/mage/cards/t/TowerDrake.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class TowerDrake extends CardImpl {
+public final class TowerDrake extends CardImpl {
public TowerDrake(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/t/TowerGargoyle.java b/Mage.Sets/src/mage/cards/t/TowerGargoyle.java
index 489c625a702..6d83832d4ea 100644
--- a/Mage.Sets/src/mage/cards/t/TowerGargoyle.java
+++ b/Mage.Sets/src/mage/cards/t/TowerGargoyle.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TowerGargoyle extends CardImpl {
+public final class TowerGargoyle extends CardImpl {
public TowerGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TowerGeist.java b/Mage.Sets/src/mage/cards/t/TowerGeist.java
index a0078dad888..bc51284f027 100644
--- a/Mage.Sets/src/mage/cards/t/TowerGeist.java
+++ b/Mage.Sets/src/mage/cards/t/TowerGeist.java
@@ -46,7 +46,7 @@ import mage.filter.FilterCard;
*
* @author LevelX
*/
-public class TowerGeist extends CardImpl {
+public final class TowerGeist extends CardImpl {
public TowerGeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TowerOfCalamities.java b/Mage.Sets/src/mage/cards/t/TowerOfCalamities.java
index 7a7bdc0d3ee..c6911b87a8a 100644
--- a/Mage.Sets/src/mage/cards/t/TowerOfCalamities.java
+++ b/Mage.Sets/src/mage/cards/t/TowerOfCalamities.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class TowerOfCalamities extends CardImpl {
+public final class TowerOfCalamities extends CardImpl {
public TowerOfCalamities (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TowerOfChampions.java b/Mage.Sets/src/mage/cards/t/TowerOfChampions.java
index fbcfef15a92..0ea513c8f8f 100644
--- a/Mage.Sets/src/mage/cards/t/TowerOfChampions.java
+++ b/Mage.Sets/src/mage/cards/t/TowerOfChampions.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class TowerOfChampions extends CardImpl {
+public final class TowerOfChampions extends CardImpl {
public TowerOfChampions (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TowerOfCoireall.java b/Mage.Sets/src/mage/cards/t/TowerOfCoireall.java
index 737d27b1f28..dd985b79b11 100644
--- a/Mage.Sets/src/mage/cards/t/TowerOfCoireall.java
+++ b/Mage.Sets/src/mage/cards/t/TowerOfCoireall.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class TowerOfCoireall extends CardImpl {
+public final class TowerOfCoireall extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TowerOfEons.java b/Mage.Sets/src/mage/cards/t/TowerOfEons.java
index 8e573868624..3f53c9d2e11 100644
--- a/Mage.Sets/src/mage/cards/t/TowerOfEons.java
+++ b/Mage.Sets/src/mage/cards/t/TowerOfEons.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class TowerOfEons extends CardImpl {
+public final class TowerOfEons extends CardImpl {
public TowerOfEons (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TowerOfFortunes.java b/Mage.Sets/src/mage/cards/t/TowerOfFortunes.java
index 049162f96c3..4d4b8329a89 100644
--- a/Mage.Sets/src/mage/cards/t/TowerOfFortunes.java
+++ b/Mage.Sets/src/mage/cards/t/TowerOfFortunes.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class TowerOfFortunes extends CardImpl {
+public final class TowerOfFortunes extends CardImpl {
public TowerOfFortunes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TowerOfMurmurs.java b/Mage.Sets/src/mage/cards/t/TowerOfMurmurs.java
index d3fa4170c02..8561e9abebd 100644
--- a/Mage.Sets/src/mage/cards/t/TowerOfMurmurs.java
+++ b/Mage.Sets/src/mage/cards/t/TowerOfMurmurs.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class TowerOfMurmurs extends CardImpl {
+public final class TowerOfMurmurs extends CardImpl {
public TowerOfMurmurs (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TowerOfTheMagistrate.java b/Mage.Sets/src/mage/cards/t/TowerOfTheMagistrate.java
index 390e0e59a90..a4e964aac18 100644
--- a/Mage.Sets/src/mage/cards/t/TowerOfTheMagistrate.java
+++ b/Mage.Sets/src/mage/cards/t/TowerOfTheMagistrate.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class TowerOfTheMagistrate extends CardImpl {
+public final class TowerOfTheMagistrate extends CardImpl {
public TowerOfTheMagistrate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/ToweringBaloth.java b/Mage.Sets/src/mage/cards/t/ToweringBaloth.java
index fc396080ec9..e120d87d3b5 100644
--- a/Mage.Sets/src/mage/cards/t/ToweringBaloth.java
+++ b/Mage.Sets/src/mage/cards/t/ToweringBaloth.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ToweringBaloth extends CardImpl {
+public final class ToweringBaloth extends CardImpl {
public ToweringBaloth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ToweringIndrik.java b/Mage.Sets/src/mage/cards/t/ToweringIndrik.java
index ac8f477ccc1..e7fdd157a94 100644
--- a/Mage.Sets/src/mage/cards/t/ToweringIndrik.java
+++ b/Mage.Sets/src/mage/cards/t/ToweringIndrik.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ToweringIndrik extends CardImpl {
+public final class ToweringIndrik extends CardImpl {
public ToweringIndrik(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ToweringThunderfist.java b/Mage.Sets/src/mage/cards/t/ToweringThunderfist.java
index 5e5fed1d7f9..8723605a7fa 100644
--- a/Mage.Sets/src/mage/cards/t/ToweringThunderfist.java
+++ b/Mage.Sets/src/mage/cards/t/ToweringThunderfist.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class ToweringThunderfist extends CardImpl {
+public final class ToweringThunderfist extends CardImpl {
public ToweringThunderfist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TownGossipmonger.java b/Mage.Sets/src/mage/cards/t/TownGossipmonger.java
index 0cae0e29735..bdfb6d38d37 100644
--- a/Mage.Sets/src/mage/cards/t/TownGossipmonger.java
+++ b/Mage.Sets/src/mage/cards/t/TownGossipmonger.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class TownGossipmonger extends CardImpl {
+public final class TownGossipmonger extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/t/TownSentry.java b/Mage.Sets/src/mage/cards/t/TownSentry.java
index f708353bfd7..1adf6f5f076 100644
--- a/Mage.Sets/src/mage/cards/t/TownSentry.java
+++ b/Mage.Sets/src/mage/cards/t/TownSentry.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class TownSentry extends CardImpl {
+public final class TownSentry extends CardImpl {
public TownSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/ToxicDeluge.java b/Mage.Sets/src/mage/cards/t/ToxicDeluge.java
index 3fdb28f4797..21d3c76264b 100644
--- a/Mage.Sets/src/mage/cards/t/ToxicDeluge.java
+++ b/Mage.Sets/src/mage/cards/t/ToxicDeluge.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class ToxicDeluge extends CardImpl {
+public final class ToxicDeluge extends CardImpl {
public ToxicDeluge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ToxicIguanar.java b/Mage.Sets/src/mage/cards/t/ToxicIguanar.java
index 20ff4b5c986..b63336dd5e8 100644
--- a/Mage.Sets/src/mage/cards/t/ToxicIguanar.java
+++ b/Mage.Sets/src/mage/cards/t/ToxicIguanar.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class ToxicIguanar extends CardImpl {
+public final class ToxicIguanar extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("green");
diff --git a/Mage.Sets/src/mage/cards/t/ToxicNim.java b/Mage.Sets/src/mage/cards/t/ToxicNim.java
index d25d6b278ea..dd71175e42f 100644
--- a/Mage.Sets/src/mage/cards/t/ToxicNim.java
+++ b/Mage.Sets/src/mage/cards/t/ToxicNim.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class ToxicNim extends CardImpl {
+public final class ToxicNim extends CardImpl {
public ToxicNim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/ToxicStench.java b/Mage.Sets/src/mage/cards/t/ToxicStench.java
index c2d6c78f896..c02a40375bd 100644
--- a/Mage.Sets/src/mage/cards/t/ToxicStench.java
+++ b/Mage.Sets/src/mage/cards/t/ToxicStench.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class ToxicStench extends CardImpl {
+public final class ToxicStench extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/t/ToxinSliver.java b/Mage.Sets/src/mage/cards/t/ToxinSliver.java
index a8259c7ea57..3f4fb80edc1 100644
--- a/Mage.Sets/src/mage/cards/t/ToxinSliver.java
+++ b/Mage.Sets/src/mage/cards/t/ToxinSliver.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author cbt33
*/
-public class ToxinSliver extends CardImpl {
+public final class ToxinSliver extends CardImpl {
public ToxinSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Toymaker.java b/Mage.Sets/src/mage/cards/t/Toymaker.java
index dd3cfa42e0e..1fdfcca4deb 100644
--- a/Mage.Sets/src/mage/cards/t/Toymaker.java
+++ b/Mage.Sets/src/mage/cards/t/Toymaker.java
@@ -55,7 +55,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class Toymaker extends CardImpl {
+public final class Toymaker extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("noncreature artifact");
diff --git a/Mage.Sets/src/mage/cards/t/TraceOfAbundance.java b/Mage.Sets/src/mage/cards/t/TraceOfAbundance.java
index 099a6c57b14..2fafde35641 100644
--- a/Mage.Sets/src/mage/cards/t/TraceOfAbundance.java
+++ b/Mage.Sets/src/mage/cards/t/TraceOfAbundance.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class TraceOfAbundance extends CardImpl {
+public final class TraceOfAbundance extends CardImpl {
private String rule = "Enchanted land has shroud";
@@ -73,7 +73,7 @@ public class TraceOfAbundance extends CardImpl {
// Enchanted land has shroud.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ShroudAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield, rule)));
- // Whenever enchanted land is tapped for mana, its controller adds one mana of any color to their mana pool.
+ // Whenever enchanted land is tapped for mana, its controller adds one mana of any color.
this.addAbility(new TraceOfAbundanceTriggeredAbility());
}
@@ -115,6 +115,6 @@ class TraceOfAbundanceTriggeredAbility extends TriggeredManaAbility {
@Override
public String getRule() {
- return "Whenever enchanted land is tapped for mana, its controller adds one mana of any color to their mana pool.";
+ return "Whenever enchanted land is tapped for mana, its controller adds one mana of any color.";
}
}
diff --git a/Mage.Sets/src/mage/cards/t/Tracker.java b/Mage.Sets/src/mage/cards/t/Tracker.java
index a4578a5d02e..6157f2d28b1 100644
--- a/Mage.Sets/src/mage/cards/t/Tracker.java
+++ b/Mage.Sets/src/mage/cards/t/Tracker.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Tracker extends CardImpl {
+public final class Tracker extends CardImpl {
public Tracker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TrackersInstincts.java b/Mage.Sets/src/mage/cards/t/TrackersInstincts.java
index 672273f436d..b7473cb37b0 100644
--- a/Mage.Sets/src/mage/cards/t/TrackersInstincts.java
+++ b/Mage.Sets/src/mage/cards/t/TrackersInstincts.java
@@ -51,7 +51,7 @@ import mage.target.TargetCard;
*
* @author North
*/
-public class TrackersInstincts extends CardImpl {
+public final class TrackersInstincts extends CardImpl {
public TrackersInstincts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TradeCaravan.java b/Mage.Sets/src/mage/cards/t/TradeCaravan.java
index 44bc2dd773d..d9517b8b346 100644
--- a/Mage.Sets/src/mage/cards/t/TradeCaravan.java
+++ b/Mage.Sets/src/mage/cards/t/TradeCaravan.java
@@ -55,7 +55,7 @@ import mage.target.TargetPermanent;
*
* @author L_J
*/
-public class TradeCaravan extends CardImpl {
+public final class TradeCaravan extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("basic land");
diff --git a/Mage.Sets/src/mage/cards/t/TradeFederationBattleship.java b/Mage.Sets/src/mage/cards/t/TradeFederationBattleship.java
index 74df0cd5da7..5f5cb3bbbe9 100644
--- a/Mage.Sets/src/mage/cards/t/TradeFederationBattleship.java
+++ b/Mage.Sets/src/mage/cards/t/TradeFederationBattleship.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.DroidToken;
*
* @author Styxo
*/
-public class TradeFederationBattleship extends CardImpl {
+public final class TradeFederationBattleship extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Droid creatures");
diff --git a/Mage.Sets/src/mage/cards/t/TradeRoutes.java b/Mage.Sets/src/mage/cards/t/TradeRoutes.java
index 4b119117908..8c4bbe2f415 100644
--- a/Mage.Sets/src/mage/cards/t/TradeRoutes.java
+++ b/Mage.Sets/src/mage/cards/t/TradeRoutes.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInHand;
*
* @author dustinconrad
*/
-public class TradeRoutes extends CardImpl {
+public final class TradeRoutes extends CardImpl {
public TradeRoutes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TradeSecrets.java b/Mage.Sets/src/mage/cards/t/TradeSecrets.java
index 63398332cd5..aa9337da154 100644
--- a/Mage.Sets/src/mage/cards/t/TradeSecrets.java
+++ b/Mage.Sets/src/mage/cards/t/TradeSecrets.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author jeffwadsworth
*/
-public class TradeSecrets extends CardImpl {
+public final class TradeSecrets extends CardImpl {
public TradeSecrets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TradewindRider.java b/Mage.Sets/src/mage/cards/t/TradewindRider.java
index 294e5cf5d20..de1ed0a8f4d 100644
--- a/Mage.Sets/src/mage/cards/t/TradewindRider.java
+++ b/Mage.Sets/src/mage/cards/t/TradewindRider.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
*/
-public class TradewindRider extends CardImpl {
+public final class TradewindRider extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creatures you control");
diff --git a/Mage.Sets/src/mage/cards/t/TradingPost.java b/Mage.Sets/src/mage/cards/t/TradingPost.java
index 602f1481777..8f44b6e6d4c 100644
--- a/Mage.Sets/src/mage/cards/t/TradingPost.java
+++ b/Mage.Sets/src/mage/cards/t/TradingPost.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class TradingPost extends CardImpl {
+public final class TradingPost extends CardImpl {
public TradingPost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TragicArrogance.java b/Mage.Sets/src/mage/cards/t/TragicArrogance.java
index 3df0f60d7bd..873d061fb9d 100644
--- a/Mage.Sets/src/mage/cards/t/TragicArrogance.java
+++ b/Mage.Sets/src/mage/cards/t/TragicArrogance.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class TragicArrogance extends CardImpl {
+public final class TragicArrogance extends CardImpl {
public TragicArrogance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TragicLesson.java b/Mage.Sets/src/mage/cards/t/TragicLesson.java
index 572177279fd..fe30b55c922 100644
--- a/Mage.Sets/src/mage/cards/t/TragicLesson.java
+++ b/Mage.Sets/src/mage/cards/t/TragicLesson.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author spjspj
*/
-public class TragicLesson extends CardImpl {
+public final class TragicLesson extends CardImpl {
public TragicLesson(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TragicPoet.java b/Mage.Sets/src/mage/cards/t/TragicPoet.java
index f1eae1ab786..773e4139687 100644
--- a/Mage.Sets/src/mage/cards/t/TragicPoet.java
+++ b/Mage.Sets/src/mage/cards/t/TragicPoet.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class TragicPoet extends CardImpl {
+public final class TragicPoet extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantment card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/t/TragicSlip.java b/Mage.Sets/src/mage/cards/t/TragicSlip.java
index 700a1c8da84..af1e092ef57 100644
--- a/Mage.Sets/src/mage/cards/t/TragicSlip.java
+++ b/Mage.Sets/src/mage/cards/t/TragicSlip.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TragicSlip extends CardImpl {
+public final class TragicSlip extends CardImpl {
public TragicSlip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TrailOfEvidence.java b/Mage.Sets/src/mage/cards/t/TrailOfEvidence.java
index f9c99e65749..f03f1b3f627 100644
--- a/Mage.Sets/src/mage/cards/t/TrailOfEvidence.java
+++ b/Mage.Sets/src/mage/cards/t/TrailOfEvidence.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class TrailOfEvidence extends CardImpl {
+public final class TrailOfEvidence extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/t/TrailOfMystery.java b/Mage.Sets/src/mage/cards/t/TrailOfMystery.java
index 3a9aac7773e..2d044313bad 100644
--- a/Mage.Sets/src/mage/cards/t/TrailOfMystery.java
+++ b/Mage.Sets/src/mage/cards/t/TrailOfMystery.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class TrailOfMystery extends CardImpl {
+public final class TrailOfMystery extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a face-down creature");
@@ -60,7 +60,7 @@ public class TrailOfMystery extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
// Whenever a face-down creature enters the battlefield under your control, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.
- Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0,1, StaticFilters.FILTER_BASIC_LAND_CARD), true, true);
+ Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0,1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true);
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, filter, true));
// Whenever a permanent you control is turned face up, if it's a creature, it gets +2/+2 until end of turn.
diff --git a/Mage.Sets/src/mage/cards/t/Trailblazer.java b/Mage.Sets/src/mage/cards/t/Trailblazer.java
index 871286f0bae..73ecebf9863 100644
--- a/Mage.Sets/src/mage/cards/t/Trailblazer.java
+++ b/Mage.Sets/src/mage/cards/t/Trailblazer.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Trailblazer extends CardImpl {
+public final class Trailblazer extends CardImpl {
public Trailblazer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java b/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java
index f21e5308e72..b3db895c1da 100644
--- a/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java
+++ b/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author North
*/
-public class TrailblazersBoots extends CardImpl {
+public final class TrailblazersBoots extends CardImpl {
public TrailblazersBoots(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TrainOfThought.java b/Mage.Sets/src/mage/cards/t/TrainOfThought.java
index be4f43b2edd..ef0d91859bf 100644
--- a/Mage.Sets/src/mage/cards/t/TrainOfThought.java
+++ b/Mage.Sets/src/mage/cards/t/TrainOfThought.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TrainOfThought extends CardImpl {
+public final class TrainOfThought extends CardImpl {
public TrainOfThought(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TrainedArmodon.java b/Mage.Sets/src/mage/cards/t/TrainedArmodon.java
index a6890a872f2..cdd6b6c23d6 100644
--- a/Mage.Sets/src/mage/cards/t/TrainedArmodon.java
+++ b/Mage.Sets/src/mage/cards/t/TrainedArmodon.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TrainedArmodon extends CardImpl {
+public final class TrainedArmodon extends CardImpl {
public TrainedArmodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TrainedCaracal.java b/Mage.Sets/src/mage/cards/t/TrainedCaracal.java
index 2b5317a920e..e5944e74f25 100644
--- a/Mage.Sets/src/mage/cards/t/TrainedCaracal.java
+++ b/Mage.Sets/src/mage/cards/t/TrainedCaracal.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TrainedCaracal extends CardImpl {
+public final class TrainedCaracal extends CardImpl {
public TrainedCaracal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrainedCheetah.java b/Mage.Sets/src/mage/cards/t/TrainedCheetah.java
index 91e4a0c161d..0b4fdc60617 100644
--- a/Mage.Sets/src/mage/cards/t/TrainedCheetah.java
+++ b/Mage.Sets/src/mage/cards/t/TrainedCheetah.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class TrainedCheetah extends CardImpl {
+public final class TrainedCheetah extends CardImpl {
public TrainedCheetah(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TrainedCondor.java b/Mage.Sets/src/mage/cards/t/TrainedCondor.java
index 752421c37ef..ec217dcb04d 100644
--- a/Mage.Sets/src/mage/cards/t/TrainedCondor.java
+++ b/Mage.Sets/src/mage/cards/t/TrainedCondor.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class TrainedCondor extends CardImpl {
+public final class TrainedCondor extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TrainedJackal.java b/Mage.Sets/src/mage/cards/t/TrainedJackal.java
index 22ee00a8003..60b5ddc800c 100644
--- a/Mage.Sets/src/mage/cards/t/TrainedJackal.java
+++ b/Mage.Sets/src/mage/cards/t/TrainedJackal.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TrainedJackal extends CardImpl {
+public final class TrainedJackal extends CardImpl {
public TrainedJackal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TrainedOrgg.java b/Mage.Sets/src/mage/cards/t/TrainedOrgg.java
index 83910d6e95f..b1365a19c07 100644
--- a/Mage.Sets/src/mage/cards/t/TrainedOrgg.java
+++ b/Mage.Sets/src/mage/cards/t/TrainedOrgg.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TrainedOrgg extends CardImpl {
+public final class TrainedOrgg extends CardImpl {
public TrainedOrgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TrainedPronghorn.java b/Mage.Sets/src/mage/cards/t/TrainedPronghorn.java
index 319e4103fea..7692fab2130 100644
--- a/Mage.Sets/src/mage/cards/t/TrainedPronghorn.java
+++ b/Mage.Sets/src/mage/cards/t/TrainedPronghorn.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author tcontis
*/
-public class TrainedPronghorn extends CardImpl {
+public final class TrainedPronghorn extends CardImpl {
public TrainedPronghorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrainingDrone.java b/Mage.Sets/src/mage/cards/t/TrainingDrone.java
index d2e58a3b9df..a7bf6dc81cf 100644
--- a/Mage.Sets/src/mage/cards/t/TrainingDrone.java
+++ b/Mage.Sets/src/mage/cards/t/TrainingDrone.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class TrainingDrone extends CardImpl {
+public final class TrainingDrone extends CardImpl {
public TrainingDrone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TrainingGrounds.java b/Mage.Sets/src/mage/cards/t/TrainingGrounds.java
index 4ab8559aff0..9a5768f5967 100644
--- a/Mage.Sets/src/mage/cards/t/TrainingGrounds.java
+++ b/Mage.Sets/src/mage/cards/t/TrainingGrounds.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author maurer.it_at_gmail.com
*/
-public class TrainingGrounds extends CardImpl {
+public final class TrainingGrounds extends CardImpl {
public TrainingGrounds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TraitorousBlood.java b/Mage.Sets/src/mage/cards/t/TraitorousBlood.java
index f240d5a7e44..4b96e28fe21 100644
--- a/Mage.Sets/src/mage/cards/t/TraitorousBlood.java
+++ b/Mage.Sets/src/mage/cards/t/TraitorousBlood.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TraitorousBlood extends CardImpl {
+public final class TraitorousBlood extends CardImpl {
public TraitorousBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TraitorousInstinct.java b/Mage.Sets/src/mage/cards/t/TraitorousInstinct.java
index cda61457d7c..5eb1806ad6a 100644
--- a/Mage.Sets/src/mage/cards/t/TraitorousInstinct.java
+++ b/Mage.Sets/src/mage/cards/t/TraitorousInstinct.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TraitorousInstinct extends CardImpl {
+public final class TraitorousInstinct extends CardImpl {
public TraitorousInstinct(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TraitorsClutch.java b/Mage.Sets/src/mage/cards/t/TraitorsClutch.java
index 262dac5aedc..42f8109a919 100644
--- a/Mage.Sets/src/mage/cards/t/TraitorsClutch.java
+++ b/Mage.Sets/src/mage/cards/t/TraitorsClutch.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TraitorsClutch extends CardImpl {
+public final class TraitorsClutch extends CardImpl {
public TraitorsClutch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TraitorsRoar.java b/Mage.Sets/src/mage/cards/t/TraitorsRoar.java
index ff25b64417f..e5ad4154ba7 100644
--- a/Mage.Sets/src/mage/cards/t/TraitorsRoar.java
+++ b/Mage.Sets/src/mage/cards/t/TraitorsRoar.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class TraitorsRoar extends CardImpl {
+public final class TraitorsRoar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creature");
diff --git a/Mage.Sets/src/mage/cards/t/TranquilCove.java b/Mage.Sets/src/mage/cards/t/TranquilCove.java
index 730d0ba1e7b..6bd8060c0e3 100644
--- a/Mage.Sets/src/mage/cards/t/TranquilCove.java
+++ b/Mage.Sets/src/mage/cards/t/TranquilCove.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TranquilCove extends CardImpl {
+public final class TranquilCove extends CardImpl {
public TranquilCove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TranquilDomain.java b/Mage.Sets/src/mage/cards/t/TranquilDomain.java
index cd3c4580cb1..4e11c7b9509 100644
--- a/Mage.Sets/src/mage/cards/t/TranquilDomain.java
+++ b/Mage.Sets/src/mage/cards/t/TranquilDomain.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class TranquilDomain extends CardImpl {
+public final class TranquilDomain extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("non-Aura enchantments");
diff --git a/Mage.Sets/src/mage/cards/t/TranquilExpanse.java b/Mage.Sets/src/mage/cards/t/TranquilExpanse.java
index aeaa23c0710..a9ec1f4c40d 100644
--- a/Mage.Sets/src/mage/cards/t/TranquilExpanse.java
+++ b/Mage.Sets/src/mage/cards/t/TranquilExpanse.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class TranquilExpanse extends CardImpl {
+public final class TranquilExpanse extends CardImpl {
public TranquilExpanse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TranquilGarden.java b/Mage.Sets/src/mage/cards/t/TranquilGarden.java
index 5b6b2d44fd6..4b66de88390 100644
--- a/Mage.Sets/src/mage/cards/t/TranquilGarden.java
+++ b/Mage.Sets/src/mage/cards/t/TranquilGarden.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class TranquilGarden extends CardImpl {
+public final class TranquilGarden extends CardImpl {
public TranquilGarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TranquilGrove.java b/Mage.Sets/src/mage/cards/t/TranquilGrove.java
index d2e9ff0d8de..3523bfbc688 100644
--- a/Mage.Sets/src/mage/cards/t/TranquilGrove.java
+++ b/Mage.Sets/src/mage/cards/t/TranquilGrove.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author Quercitron
*/
-public class TranquilGrove extends CardImpl {
+public final class TranquilGrove extends CardImpl {
private static final FilterPermanent filter = new FilterEnchantmentPermanent("other enchantments");
diff --git a/Mage.Sets/src/mage/cards/t/TranquilPath.java b/Mage.Sets/src/mage/cards/t/TranquilPath.java
index 04d214cd1e8..4c166d898ea 100644
--- a/Mage.Sets/src/mage/cards/t/TranquilPath.java
+++ b/Mage.Sets/src/mage/cards/t/TranquilPath.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterEnchantmentPermanent;
*
* @author anonymous
*/
-public class TranquilPath extends CardImpl {
+public final class TranquilPath extends CardImpl {
public TranquilPath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TranquilThicket.java b/Mage.Sets/src/mage/cards/t/TranquilThicket.java
index 85dd758c4c9..f4cf3134993 100644
--- a/Mage.Sets/src/mage/cards/t/TranquilThicket.java
+++ b/Mage.Sets/src/mage/cards/t/TranquilThicket.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class TranquilThicket extends CardImpl {
+public final class TranquilThicket extends CardImpl {
public TranquilThicket(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/Tranquility.java b/Mage.Sets/src/mage/cards/t/Tranquility.java
index 927c13dc45f..94c7e9c05f8 100644
--- a/Mage.Sets/src/mage/cards/t/Tranquility.java
+++ b/Mage.Sets/src/mage/cards/t/Tranquility.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterEnchantmentPermanent;
*
* @author Loki
*/
-public class Tranquility extends CardImpl {
+public final class Tranquility extends CardImpl {
public Tranquility(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/Transcendence.java b/Mage.Sets/src/mage/cards/t/Transcendence.java
index 60b290a3670..698104cf89d 100644
--- a/Mage.Sets/src/mage/cards/t/Transcendence.java
+++ b/Mage.Sets/src/mage/cards/t/Transcendence.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class Transcendence extends CardImpl {
+public final class Transcendence extends CardImpl {
public Transcendence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TranscendentMaster.java b/Mage.Sets/src/mage/cards/t/TranscendentMaster.java
index f29386cec36..607ea851306 100644
--- a/Mage.Sets/src/mage/cards/t/TranscendentMaster.java
+++ b/Mage.Sets/src/mage/cards/t/TranscendentMaster.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
/**
* @author North, noxx
*/
-public class TranscendentMaster extends LevelerCard {
+public final class TranscendentMaster extends LevelerCard {
public TranscendentMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TransgressTheMind.java b/Mage.Sets/src/mage/cards/t/TransgressTheMind.java
index 6cea59536d4..594c8fe96ea 100644
--- a/Mage.Sets/src/mage/cards/t/TransgressTheMind.java
+++ b/Mage.Sets/src/mage/cards/t/TransgressTheMind.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class TransgressTheMind extends CardImpl {
+public final class TransgressTheMind extends CardImpl {
private static final FilterCard filter = new FilterCard("a card from it with converted mana cost 3 or greater");
diff --git a/Mage.Sets/src/mage/cards/t/TransguildCourier.java b/Mage.Sets/src/mage/cards/t/TransguildCourier.java
index 6d7d7e3f072..3aaa441bd92 100644
--- a/Mage.Sets/src/mage/cards/t/TransguildCourier.java
+++ b/Mage.Sets/src/mage/cards/t/TransguildCourier.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Wehk
*/
-public class TransguildCourier extends CardImpl {
+public final class TransguildCourier extends CardImpl {
public TransguildCourier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TransguildPromenade.java b/Mage.Sets/src/mage/cards/t/TransguildPromenade.java
index 5a90b22ee87..aa1ad60b05a 100644
--- a/Mage.Sets/src/mage/cards/t/TransguildPromenade.java
+++ b/Mage.Sets/src/mage/cards/t/TransguildPromenade.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
/**
* @author LevelX2
*/
-public class TransguildPromenade extends CardImpl {
+public final class TransguildPromenade extends CardImpl {
public TransguildPromenade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/Transluminant.java b/Mage.Sets/src/mage/cards/t/Transluminant.java
index 0df5d56d1de..78f7a8d03cd 100644
--- a/Mage.Sets/src/mage/cards/t/Transluminant.java
+++ b/Mage.Sets/src/mage/cards/t/Transluminant.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author LoneFox
*/
-public class Transluminant extends CardImpl {
+public final class Transluminant extends CardImpl {
public Transluminant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TransmogrifyingLicid.java b/Mage.Sets/src/mage/cards/t/TransmogrifyingLicid.java
index df9673e6a7a..0e2bcc8a063 100644
--- a/Mage.Sets/src/mage/cards/t/TransmogrifyingLicid.java
+++ b/Mage.Sets/src/mage/cards/t/TransmogrifyingLicid.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class TransmogrifyingLicid extends CardImpl {
+public final class TransmogrifyingLicid extends CardImpl {
public TransmogrifyingLicid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/Transmutation.java b/Mage.Sets/src/mage/cards/t/Transmutation.java
index bac3f8d6ff5..d6480b182e4 100644
--- a/Mage.Sets/src/mage/cards/t/Transmutation.java
+++ b/Mage.Sets/src/mage/cards/t/Transmutation.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Transmutation extends CardImpl {
+public final class Transmutation extends CardImpl {
public Transmutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TransmuteArtifact.java b/Mage.Sets/src/mage/cards/t/TransmuteArtifact.java
index 9372da3348b..1822c3b31b2 100644
--- a/Mage.Sets/src/mage/cards/t/TransmuteArtifact.java
+++ b/Mage.Sets/src/mage/cards/t/TransmuteArtifact.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class TransmuteArtifact extends CardImpl {
+public final class TransmuteArtifact extends CardImpl {
public TransmuteArtifact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TrapDigger.java b/Mage.Sets/src/mage/cards/t/TrapDigger.java
index 77199d64906..6ba6a036ebb 100644
--- a/Mage.Sets/src/mage/cards/t/TrapDigger.java
+++ b/Mage.Sets/src/mage/cards/t/TrapDigger.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LoneFox
*/
-public class TrapDigger extends CardImpl {
+public final class TrapDigger extends CardImpl {
private static final FilterControlledLandPermanent filter1 = new FilterControlledLandPermanent("a land with a trap counter on it");
private static final FilterAttackingCreature filter2 = new FilterAttackingCreature("attacking creature without flying");
diff --git a/Mage.Sets/src/mage/cards/t/TrapEssence.java b/Mage.Sets/src/mage/cards/t/TrapEssence.java
index fde4becc7f8..8d70b0b550c 100644
--- a/Mage.Sets/src/mage/cards/t/TrapEssence.java
+++ b/Mage.Sets/src/mage/cards/t/TrapEssence.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class TrapEssence extends CardImpl {
+public final class TrapEssence extends CardImpl {
public TrapEssence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TrapRunner.java b/Mage.Sets/src/mage/cards/t/TrapRunner.java
index de42811d53c..d5204e79701 100644
--- a/Mage.Sets/src/mage/cards/t/TrapRunner.java
+++ b/Mage.Sets/src/mage/cards/t/TrapRunner.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TrapRunner extends CardImpl {
+public final class TrapRunner extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("unblocked attacking creature");
diff --git a/Mage.Sets/src/mage/cards/t/TrapfindersTrick.java b/Mage.Sets/src/mage/cards/t/TrapfindersTrick.java
index 20e9f7c5105..e333713fdf1 100644
--- a/Mage.Sets/src/mage/cards/t/TrapfindersTrick.java
+++ b/Mage.Sets/src/mage/cards/t/TrapfindersTrick.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class TrapfindersTrick extends CardImpl {
+public final class TrapfindersTrick extends CardImpl {
public TrapfindersTrick(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TrapjawKelpie.java b/Mage.Sets/src/mage/cards/t/TrapjawKelpie.java
index 24d3508ad70..fced5805470 100644
--- a/Mage.Sets/src/mage/cards/t/TrapjawKelpie.java
+++ b/Mage.Sets/src/mage/cards/t/TrapjawKelpie.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class TrapjawKelpie extends CardImpl {
+public final class TrapjawKelpie extends CardImpl {
public TrapjawKelpie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G/U}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/t/TrapjawTyrant.java b/Mage.Sets/src/mage/cards/t/TrapjawTyrant.java
index 253cf61712d..c88f6c9eb79 100644
--- a/Mage.Sets/src/mage/cards/t/TrapjawTyrant.java
+++ b/Mage.Sets/src/mage/cards/t/TrapjawTyrant.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TrapjawTyrant extends CardImpl {
+public final class TrapjawTyrant extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/t/TrapmakersSnare.java b/Mage.Sets/src/mage/cards/t/TrapmakersSnare.java
index bdd72341a8c..d163f81d6df 100644
--- a/Mage.Sets/src/mage/cards/t/TrapmakersSnare.java
+++ b/Mage.Sets/src/mage/cards/t/TrapmakersSnare.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author North
*/
-public class TrapmakersSnare extends CardImpl {
+public final class TrapmakersSnare extends CardImpl {
private static final FilterCard filter = new FilterCard("Trap card");
diff --git a/Mage.Sets/src/mage/cards/t/TraprootKami.java b/Mage.Sets/src/mage/cards/t/TraprootKami.java
index 119adc57481..ccc7b83834f 100644
--- a/Mage.Sets/src/mage/cards/t/TraprootKami.java
+++ b/Mage.Sets/src/mage/cards/t/TraprootKami.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class TraprootKami extends CardImpl {
+public final class TraprootKami extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("the number of Forests on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/t/TrashForTreasure.java b/Mage.Sets/src/mage/cards/t/TrashForTreasure.java
index 400579d256b..c2e2e5b8252 100644
--- a/Mage.Sets/src/mage/cards/t/TrashForTreasure.java
+++ b/Mage.Sets/src/mage/cards/t/TrashForTreasure.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class TrashForTreasure extends CardImpl {
+public final class TrashForTreasure extends CardImpl {
private static final FilterControlledPermanent filterPermanent = new FilterControlledPermanent("an artifact");
private static final FilterCard filterCard = new FilterCard("artifact card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/t/TraumaticVisions.java b/Mage.Sets/src/mage/cards/t/TraumaticVisions.java
index 6ddcfbc2905..75b5cdc0a3d 100644
--- a/Mage.Sets/src/mage/cards/t/TraumaticVisions.java
+++ b/Mage.Sets/src/mage/cards/t/TraumaticVisions.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class TraumaticVisions extends CardImpl {
+public final class TraumaticVisions extends CardImpl {
public TraumaticVisions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Traumatize.java b/Mage.Sets/src/mage/cards/t/Traumatize.java
index dd3df66ceae..e81ba0b5cc8 100644
--- a/Mage.Sets/src/mage/cards/t/Traumatize.java
+++ b/Mage.Sets/src/mage/cards/t/Traumatize.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Traumatize extends CardImpl {
+public final class Traumatize extends CardImpl {
public Traumatize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TravelPreparations.java b/Mage.Sets/src/mage/cards/t/TravelPreparations.java
index f49a23c46a9..5cbbaa3f38d 100644
--- a/Mage.Sets/src/mage/cards/t/TravelPreparations.java
+++ b/Mage.Sets/src/mage/cards/t/TravelPreparations.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TravelPreparations extends CardImpl {
+public final class TravelPreparations extends CardImpl {
public TravelPreparations(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TravelersAmulet.java b/Mage.Sets/src/mage/cards/t/TravelersAmulet.java
index d0ec05f768c..cb2740a12ec 100644
--- a/Mage.Sets/src/mage/cards/t/TravelersAmulet.java
+++ b/Mage.Sets/src/mage/cards/t/TravelersAmulet.java
@@ -45,13 +45,13 @@ import java.util.UUID;
*
* @author nantuko
*/
-public class TravelersAmulet extends CardImpl {
+public final class TravelersAmulet extends CardImpl {
public TravelersAmulet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
// {1}, Sacrifice Traveler's Amulet: Search your library for a basic land card, reveal it, and put it into your hand. Then shuffle your library.
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(target, true), new GenericManaCost(1));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/t/TravelersCloak.java b/Mage.Sets/src/mage/cards/t/TravelersCloak.java
index 79b2ee29c52..ae12d894b4a 100644
--- a/Mage.Sets/src/mage/cards/t/TravelersCloak.java
+++ b/Mage.Sets/src/mage/cards/t/TravelersCloak.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class TravelersCloak extends CardImpl {
+public final class TravelersCloak extends CardImpl {
public TravelersCloak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TravelingPhilosopher.java b/Mage.Sets/src/mage/cards/t/TravelingPhilosopher.java
index 455709b42fe..6331d342abe 100644
--- a/Mage.Sets/src/mage/cards/t/TravelingPhilosopher.java
+++ b/Mage.Sets/src/mage/cards/t/TravelingPhilosopher.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TravelingPhilosopher extends CardImpl {
+public final class TravelingPhilosopher extends CardImpl {
public TravelingPhilosopher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TravelingPlague.java b/Mage.Sets/src/mage/cards/t/TravelingPlague.java
index 73cf35c9d29..9796e5f7361 100644
--- a/Mage.Sets/src/mage/cards/t/TravelingPlague.java
+++ b/Mage.Sets/src/mage/cards/t/TravelingPlague.java
@@ -1,185 +1,185 @@
-/*
- * 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.t;
-
-import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.TriggeredAbilityImpl;
-import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.dynamicvalue.DynamicValue;
-import mage.abilities.dynamicvalue.MultipliedValue;
-import mage.abilities.dynamicvalue.common.CountersSourceCount;
-import mage.abilities.effects.Effect;
-import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.AttachEffect;
-import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
-import mage.abilities.effects.common.counter.AddCountersSourceEffect;
-import mage.abilities.keyword.EnchantAbility;
-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.SubType;
-import mage.constants.TargetController;
-import mage.constants.Zone;
-import mage.counters.CounterType;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.events.ZoneChangeEvent;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.TargetPermanent;
-import mage.target.common.TargetCreaturePermanent;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class TravelingPlague extends CardImpl {
-
- public TravelingPlague(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
-
- this.subtype.add(SubType.AURA);
-
- // Enchant creature
- TargetPermanent auraTarget = new TargetCreaturePermanent();
- this.getSpellAbility().addTarget(auraTarget);
- this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
- Ability ability = new EnchantAbility(auraTarget.getTargetName());
- this.addAbility(ability);
-
- // At the beginning of each upkeep, put a plague counter on Traveling Plague.
- this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.PLAGUE.createInstance()), TargetController.ANY, false));
-
- // Enchanted creature gets -1/-1 for each plague counter on Traveling Plague.
- DynamicValue boostValue = new MultipliedValue(new CountersSourceCount(CounterType.PLAGUE), -1);
- Effect effect = new BoostEnchantedEffect(boostValue, boostValue, Duration.WhileOnBattlefield);
- effect.setText("Enchanted creature gets -1/-1 for each plague counter on {this}");
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
-
- // When enchanted creature leaves the battlefield, that creature's controller returns Traveling Plague from its owner's graveyard to the battlefield.
- this.addAbility(new TravelingPlagueTriggeredAbility());
-
- }
-
- public TravelingPlague(final TravelingPlague card) {
- super(card);
- }
-
- @Override
- public TravelingPlague copy() {
- return new TravelingPlague(this);
- }
-}
-
-class TravelingPlagueTriggeredAbility extends TriggeredAbilityImpl {
-
- public TravelingPlagueTriggeredAbility() {
- super(Zone.BATTLEFIELD, new TravelingPlagueEffect(), false);
- }
-
- public TravelingPlagueTriggeredAbility(final TravelingPlagueTriggeredAbility ability) {
- super(ability);
- }
-
- @Override
- public TravelingPlagueTriggeredAbility copy() {
- return new TravelingPlagueTriggeredAbility(this);
- }
-
- @Override
- public boolean checkEventType(GameEvent event, Game game) {
- return event.getType() == GameEvent.EventType.ZONE_CHANGE;
- }
-
- @Override
- public boolean checkTrigger(GameEvent event, Game game) {
- ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD) {
- Permanent enchantedCreature = game.getPermanentOrLKIBattlefield(event.getTargetId());
- Permanent travelingPlague = game.getPermanentOrLKIBattlefield(sourceId);
- if (enchantedCreature != null
- && enchantedCreature.getAttachments().contains(travelingPlague.getId())) {
- game.getState().setValue("travelingPlague" + sourceId, enchantedCreature);
- return true;
- }
- }
- return false;
- }
-
- @Override
- public String getRule() {
- return "When enchanted creature leaves the battlefield, " + super.getRule();
- }
-}
-
-class TravelingPlagueEffect extends OneShotEffect {
-
- public TravelingPlagueEffect() {
- super(Outcome.Detriment);
- staticText = "that creature's controller returns {this} from its owner's graveyard to the battlefield";
- }
-
- public TravelingPlagueEffect(final TravelingPlagueEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Card travelingPlague = game.getCard(source.getSourceId());
- Permanent enchantedCreature = (Permanent) game.getState().getValue("travelingPlague" + source.getSourceId());
- if (enchantedCreature != null) {
- Player controllerOfEnchantedCreature = game.getPlayer(enchantedCreature.getControllerId());
- if (travelingPlague != null
- && game.getState().getZone(travelingPlague.getId()).equals(Zone.GRAVEYARD) // aura must come from the graveyard
- && controllerOfEnchantedCreature != null) {
- TargetPermanent target = new TargetPermanent(new FilterCreaturePermanent("creature to enchant with " + travelingPlague.getName()));
- target.setNotTarget(true);
- if (controllerOfEnchantedCreature.choose(Outcome.Detriment, target, source.getSourceId(), game)) {
- Permanent targetPermanent = game.getPermanent(target.getFirstTarget());
- if (!targetPermanent.cantBeAttachedBy(travelingPlague, game)) {
- game.getState().setValue("attachTo:" + travelingPlague.getId(), targetPermanent);
- controllerOfEnchantedCreature.moveCards(travelingPlague, Zone.BATTLEFIELD, source, game);
- return targetPermanent.addAttachment(travelingPlague.getId(), game);
- }
- }
- }
- }
- return false;
- }
-
- @Override
- public TravelingPlagueEffect copy() {
- return new TravelingPlagueEffect(this);
- }
-}
+/*
+ * 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.t;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.dynamicvalue.MultipliedValue;
+import mage.abilities.dynamicvalue.common.CountersSourceCount;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.abilities.keyword.EnchantAbility;
+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.SubType;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.ZoneChangeEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class TravelingPlague extends CardImpl {
+
+ public TravelingPlague(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
+
+ this.subtype.add(SubType.AURA);
+
+ // Enchant creature
+ TargetPermanent auraTarget = new TargetCreaturePermanent();
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
+ Ability ability = new EnchantAbility(auraTarget.getTargetName());
+ this.addAbility(ability);
+
+ // At the beginning of each upkeep, put a plague counter on Traveling Plague.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.PLAGUE.createInstance()), TargetController.ANY, false));
+
+ // Enchanted creature gets -1/-1 for each plague counter on Traveling Plague.
+ DynamicValue boostValue = new MultipliedValue(new CountersSourceCount(CounterType.PLAGUE), -1);
+ Effect effect = new BoostEnchantedEffect(boostValue, boostValue, Duration.WhileOnBattlefield);
+ effect.setText("Enchanted creature gets -1/-1 for each plague counter on {this}");
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
+
+ // When enchanted creature leaves the battlefield, that creature's controller returns Traveling Plague from its owner's graveyard to the battlefield.
+ this.addAbility(new TravelingPlagueTriggeredAbility());
+
+ }
+
+ public TravelingPlague(final TravelingPlague card) {
+ super(card);
+ }
+
+ @Override
+ public TravelingPlague copy() {
+ return new TravelingPlague(this);
+ }
+}
+
+class TravelingPlagueTriggeredAbility extends TriggeredAbilityImpl {
+
+ public TravelingPlagueTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new TravelingPlagueEffect(), false);
+ }
+
+ public TravelingPlagueTriggeredAbility(final TravelingPlagueTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public TravelingPlagueTriggeredAbility copy() {
+ return new TravelingPlagueTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.ZONE_CHANGE;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
+ if (zEvent.getFromZone() == Zone.BATTLEFIELD) {
+ Permanent enchantedCreature = game.getPermanentOrLKIBattlefield(event.getTargetId());
+ Permanent travelingPlague = game.getPermanentOrLKIBattlefield(sourceId);
+ if (enchantedCreature != null
+ && enchantedCreature.getAttachments().contains(travelingPlague.getId())) {
+ game.getState().setValue("travelingPlague" + sourceId, enchantedCreature);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "When enchanted creature leaves the battlefield, " + super.getRule();
+ }
+}
+
+class TravelingPlagueEffect extends OneShotEffect {
+
+ public TravelingPlagueEffect() {
+ super(Outcome.Detriment);
+ staticText = "that creature's controller returns {this} from its owner's graveyard to the battlefield";
+ }
+
+ public TravelingPlagueEffect(final TravelingPlagueEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Card travelingPlague = game.getCard(source.getSourceId());
+ Permanent enchantedCreature = (Permanent) game.getState().getValue("travelingPlague" + source.getSourceId());
+ if (enchantedCreature != null) {
+ Player controllerOfEnchantedCreature = game.getPlayer(enchantedCreature.getControllerId());
+ if (travelingPlague != null
+ && game.getState().getZone(travelingPlague.getId()).equals(Zone.GRAVEYARD) // aura must come from the graveyard
+ && controllerOfEnchantedCreature != null) {
+ TargetPermanent target = new TargetPermanent(new FilterCreaturePermanent("creature to enchant with " + travelingPlague.getName()));
+ target.setNotTarget(true);
+ if (controllerOfEnchantedCreature.choose(Outcome.Detriment, target, source.getSourceId(), game)) {
+ Permanent targetPermanent = game.getPermanent(target.getFirstTarget());
+ if (!targetPermanent.cantBeAttachedBy(travelingPlague, game)) {
+ game.getState().setValue("attachTo:" + travelingPlague.getId(), targetPermanent);
+ controllerOfEnchantedCreature.moveCards(travelingPlague, Zone.BATTLEFIELD, source, game);
+ return targetPermanent.addAttachment(travelingPlague.getId(), game);
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public TravelingPlagueEffect copy() {
+ return new TravelingPlagueEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/t/TraverseTheOutlands.java b/Mage.Sets/src/mage/cards/t/TraverseTheOutlands.java
index 1e5a20f88fb..aa7235f6ba1 100644
--- a/Mage.Sets/src/mage/cards/t/TraverseTheOutlands.java
+++ b/Mage.Sets/src/mage/cards/t/TraverseTheOutlands.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author spjspj
*/
-public class TraverseTheOutlands extends CardImpl {
+public final class TraverseTheOutlands extends CardImpl {
public TraverseTheOutlands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}");
@@ -103,7 +103,7 @@ class TraverseTheOutlandsEffect extends OneShotEffect {
}
}
- TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, game)) {
controller.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null);
}
diff --git a/Mage.Sets/src/mage/cards/t/TraverseTheUlvenwald.java b/Mage.Sets/src/mage/cards/t/TraverseTheUlvenwald.java
index ed2a85b1521..4a0cdc51aa2 100644
--- a/Mage.Sets/src/mage/cards/t/TraverseTheUlvenwald.java
+++ b/Mage.Sets/src/mage/cards/t/TraverseTheUlvenwald.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class TraverseTheUlvenwald extends CardImpl {
+public final class TraverseTheUlvenwald extends CardImpl {
private static final FilterCard filter = new FilterCard("a creature or land card");
@@ -59,7 +59,7 @@ public class TraverseTheUlvenwald extends CardImpl {
// Search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true),
new InvertCondition(DeliriumCondition.instance),
"Search your library for a basic land card, reveal it, put it into your hand, then shuffle your library."));
diff --git a/Mage.Sets/src/mage/cards/t/TraxosScourgeOfKroog.java b/Mage.Sets/src/mage/cards/t/TraxosScourgeOfKroog.java
index cfa3251d01d..f93f837c630 100644
--- a/Mage.Sets/src/mage/cards/t/TraxosScourgeOfKroog.java
+++ b/Mage.Sets/src/mage/cards/t/TraxosScourgeOfKroog.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterHistoricSpell;
*
* @author TheElk801
*/
-public class TraxosScourgeOfKroog extends CardImpl {
+public final class TraxosScourgeOfKroog extends CardImpl {
public TraxosScourgeOfKroog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TreacherousLink.java b/Mage.Sets/src/mage/cards/t/TreacherousLink.java
index db60b79c508..346f88a3a09 100644
--- a/Mage.Sets/src/mage/cards/t/TreacherousLink.java
+++ b/Mage.Sets/src/mage/cards/t/TreacherousLink.java
@@ -52,10 +52,10 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class TreacherousLink extends CardImpl {
+public final class TreacherousLink extends CardImpl {
public TreacherousLink(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
this.subtype.add(SubType.AURA);
// Enchant creature
@@ -109,12 +109,15 @@ class TreacherousLinkEffect extends ReplacementEffectImpl {
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
DamageEvent damageEvent = (DamageEvent) event;
Permanent enchantedCreature = game.getPermanentOrLKIBattlefield(damageEvent.getTargetId());
- Player controller = game.getPlayer(enchantedCreature.getControllerId());
- if (enchantedCreature != null && controller != null) {
- controller.damage(damageEvent.getAmount(), damageEvent.getSourceId(), game, damageEvent.isCombatDamage(), damageEvent.isPreventable(), damageEvent.getAppliedEffects());
- return true;
+ if (enchantedCreature == null) {
+ return false;
}
- return false;
+ Player controller = game.getPlayer(enchantedCreature.getControllerId());
+ if (controller == null) {
+ return false;
+ }
+ controller.damage(damageEvent.getAmount(), damageEvent.getSourceId(), game, damageEvent.isCombatDamage(), damageEvent.isPreventable(), damageEvent.getAppliedEffects());
+ return true;
}
@Override
diff --git a/Mage.Sets/src/mage/cards/t/TreacherousPitDweller.java b/Mage.Sets/src/mage/cards/t/TreacherousPitDweller.java
index 16429b4734f..18f7147ed0d 100644
--- a/Mage.Sets/src/mage/cards/t/TreacherousPitDweller.java
+++ b/Mage.Sets/src/mage/cards/t/TreacherousPitDweller.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
/**
* @author noxx
*/
-public class TreacherousPitDweller extends CardImpl {
+public final class TreacherousPitDweller extends CardImpl {
public TreacherousPitDweller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TreacherousTerrain.java b/Mage.Sets/src/mage/cards/t/TreacherousTerrain.java
index 81c88bbd691..791cfaa3796 100644
--- a/Mage.Sets/src/mage/cards/t/TreacherousTerrain.java
+++ b/Mage.Sets/src/mage/cards/t/TreacherousTerrain.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class TreacherousTerrain extends CardImpl {
+public final class TreacherousTerrain extends CardImpl {
public TreacherousTerrain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TreacherousUrge.java b/Mage.Sets/src/mage/cards/t/TreacherousUrge.java
index fb121d808b4..e2b28fb7f0c 100644
--- a/Mage.Sets/src/mage/cards/t/TreacherousUrge.java
+++ b/Mage.Sets/src/mage/cards/t/TreacherousUrge.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class TreacherousUrge extends CardImpl {
+public final class TreacherousUrge extends CardImpl {
public TreacherousUrge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TreacherousVampire.java b/Mage.Sets/src/mage/cards/t/TreacherousVampire.java
index aa4a80ed5fb..229e051a628 100644
--- a/Mage.Sets/src/mage/cards/t/TreacherousVampire.java
+++ b/Mage.Sets/src/mage/cards/t/TreacherousVampire.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class TreacherousVampire extends CardImpl {
+public final class TreacherousVampire extends CardImpl {
public TreacherousVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TreacherousWerewolf.java b/Mage.Sets/src/mage/cards/t/TreacherousWerewolf.java
index 2b40d4a9903..f860344bcd1 100644
--- a/Mage.Sets/src/mage/cards/t/TreacherousWerewolf.java
+++ b/Mage.Sets/src/mage/cards/t/TreacherousWerewolf.java
@@ -50,7 +50,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class TreacherousWerewolf extends CardImpl {
+public final class TreacherousWerewolf extends CardImpl {
public TreacherousWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Treachery.java b/Mage.Sets/src/mage/cards/t/Treachery.java
index 4fcb9dce56a..2a3c53b9442 100644
--- a/Mage.Sets/src/mage/cards/t/Treachery.java
+++ b/Mage.Sets/src/mage/cards/t/Treachery.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Treachery extends CardImpl {
+public final class Treachery extends CardImpl {
public Treachery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TreadUpon.java b/Mage.Sets/src/mage/cards/t/TreadUpon.java
index 592af2cc411..91c7f45ceff 100644
--- a/Mage.Sets/src/mage/cards/t/TreadUpon.java
+++ b/Mage.Sets/src/mage/cards/t/TreadUpon.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TreadUpon extends CardImpl {
+public final class TreadUpon extends CardImpl {
public TreadUpon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TreasonousOgre.java b/Mage.Sets/src/mage/cards/t/TreasonousOgre.java
index cd4a9251c7c..d7b0e404ee1 100644
--- a/Mage.Sets/src/mage/cards/t/TreasonousOgre.java
+++ b/Mage.Sets/src/mage/cards/t/TreasonousOgre.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class TreasonousOgre extends CardImpl {
+public final class TreasonousOgre extends CardImpl {
public TreasonousOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TreasureCove.java b/Mage.Sets/src/mage/cards/t/TreasureCove.java
index 076b5319478..53321fda7c2 100644
--- a/Mage.Sets/src/mage/cards/t/TreasureCove.java
+++ b/Mage.Sets/src/mage/cards/t/TreasureCove.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class TreasureCove extends CardImpl {
+public final class TreasureCove extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Treasure");
diff --git a/Mage.Sets/src/mage/cards/t/TreasureCruise.java b/Mage.Sets/src/mage/cards/t/TreasureCruise.java
index 60cdc293372..21cb34560d7 100644
--- a/Mage.Sets/src/mage/cards/t/TreasureCruise.java
+++ b/Mage.Sets/src/mage/cards/t/TreasureCruise.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class TreasureCruise extends CardImpl {
+public final class TreasureCruise extends CardImpl {
public TreasureCruise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{7}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TreasureHunt.java b/Mage.Sets/src/mage/cards/t/TreasureHunt.java
index 5f7bf636025..dcce6bc63b9 100644
--- a/Mage.Sets/src/mage/cards/t/TreasureHunt.java
+++ b/Mage.Sets/src/mage/cards/t/TreasureHunt.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author North
*/
-public class TreasureHunt extends CardImpl {
+public final class TreasureHunt extends CardImpl {
public TreasureHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TreasureHunter.java b/Mage.Sets/src/mage/cards/t/TreasureHunter.java
index 3c8bf660389..b7e1764c17a 100644
--- a/Mage.Sets/src/mage/cards/t/TreasureHunter.java
+++ b/Mage.Sets/src/mage/cards/t/TreasureHunter.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class TreasureHunter extends CardImpl {
+public final class TreasureHunter extends CardImpl {
public TreasureHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TreasureKeeper.java b/Mage.Sets/src/mage/cards/t/TreasureKeeper.java
index ada27fe5b99..92c9d15a054 100644
--- a/Mage.Sets/src/mage/cards/t/TreasureKeeper.java
+++ b/Mage.Sets/src/mage/cards/t/TreasureKeeper.java
@@ -29,6 +29,7 @@ package mage.cards.t;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.DiesTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -46,7 +47,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class TreasureKeeper extends CardImpl {
+public final class TreasureKeeper extends CardImpl {
public TreasureKeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
@@ -97,7 +98,7 @@ class TreasureKeeperEffect extends OneShotEffect {
}
controller.revealCards(source, toReveal, game);
if (nonLandCard != null && controller.chooseUse(outcome, "Cast " + nonLandCard.getLogName() + "without paying its mana cost?", source, game)) {
- controller.cast(nonLandCard.getSpellAbility(), game, true);
+ controller.cast(nonLandCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
toReveal.remove(nonLandCard);
}
controller.putCardsOnBottomOfLibrary(toReveal, game, source, false);
diff --git a/Mage.Sets/src/mage/cards/t/TreasureMage.java b/Mage.Sets/src/mage/cards/t/TreasureMage.java
index 26a15a79ce5..fb32178ba81 100644
--- a/Mage.Sets/src/mage/cards/t/TreasureMage.java
+++ b/Mage.Sets/src/mage/cards/t/TreasureMage.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Loki
*/
-public class TreasureMage extends CardImpl {
+public final class TreasureMage extends CardImpl {
private static final FilterCard filter = new FilterCard("an artifact card with converted mana cost 6 or more");
diff --git a/Mage.Sets/src/mage/cards/t/TreasureMap.java b/Mage.Sets/src/mage/cards/t/TreasureMap.java
index 9534b718a4b..c86379f79bf 100644
--- a/Mage.Sets/src/mage/cards/t/TreasureMap.java
+++ b/Mage.Sets/src/mage/cards/t/TreasureMap.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class TreasureMap extends CardImpl {
+public final class TreasureMap extends CardImpl {
public TreasureMap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TreasureTrove.java b/Mage.Sets/src/mage/cards/t/TreasureTrove.java
index 4b5a770d9e6..ba4b6cc329b 100644
--- a/Mage.Sets/src/mage/cards/t/TreasureTrove.java
+++ b/Mage.Sets/src/mage/cards/t/TreasureTrove.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class TreasureTrove extends CardImpl {
+public final class TreasureTrove extends CardImpl {
public TreasureTrove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TreasuredFind.java b/Mage.Sets/src/mage/cards/t/TreasuredFind.java
index 4bc19c87012..29d5ebe5d21 100644
--- a/Mage.Sets/src/mage/cards/t/TreasuredFind.java
+++ b/Mage.Sets/src/mage/cards/t/TreasuredFind.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class TreasuredFind extends CardImpl {
+public final class TreasuredFind extends CardImpl {
public TreasuredFind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TreasuryThrull.java b/Mage.Sets/src/mage/cards/t/TreasuryThrull.java
index f024c077eac..404fdb774fb 100644
--- a/Mage.Sets/src/mage/cards/t/TreasuryThrull.java
+++ b/Mage.Sets/src/mage/cards/t/TreasuryThrull.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class TreasuryThrull extends CardImpl {
+public final class TreasuryThrull extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact, creature, or enchantment card from your graveyard");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TreeMonkey.java b/Mage.Sets/src/mage/cards/t/TreeMonkey.java
index 070a6dab0ca..d4796ad6167 100644
--- a/Mage.Sets/src/mage/cards/t/TreeMonkey.java
+++ b/Mage.Sets/src/mage/cards/t/TreeMonkey.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TreeMonkey extends CardImpl {
+public final class TreeMonkey extends CardImpl {
public TreeMonkey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TreeOfPerdition.java b/Mage.Sets/src/mage/cards/t/TreeOfPerdition.java
index 10607139cda..8fbddf40a71 100644
--- a/Mage.Sets/src/mage/cards/t/TreeOfPerdition.java
+++ b/Mage.Sets/src/mage/cards/t/TreeOfPerdition.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class TreeOfPerdition extends CardImpl {
+public final class TreeOfPerdition extends CardImpl {
public TreeOfPerdition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TreeOfRedemption.java b/Mage.Sets/src/mage/cards/t/TreeOfRedemption.java
index 1d40b9094df..7c1f88dbe8c 100644
--- a/Mage.Sets/src/mage/cards/t/TreeOfRedemption.java
+++ b/Mage.Sets/src/mage/cards/t/TreeOfRedemption.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class TreeOfRedemption extends CardImpl {
+public final class TreeOfRedemption extends CardImpl {
public TreeOfRedemption(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TreeOfTales.java b/Mage.Sets/src/mage/cards/t/TreeOfTales.java
index 0831417fb43..21d087975cd 100644
--- a/Mage.Sets/src/mage/cards/t/TreeOfTales.java
+++ b/Mage.Sets/src/mage/cards/t/TreeOfTales.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class TreeOfTales extends CardImpl {
+public final class TreeOfTales extends CardImpl {
public TreeOfTales (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/t/TreefolkHarbinger.java b/Mage.Sets/src/mage/cards/t/TreefolkHarbinger.java
index 8267ece2175..f869b53e130 100644
--- a/Mage.Sets/src/mage/cards/t/TreefolkHarbinger.java
+++ b/Mage.Sets/src/mage/cards/t/TreefolkHarbinger.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class TreefolkHarbinger extends CardImpl {
+public final class TreefolkHarbinger extends CardImpl {
private static final FilterCard filter = new FilterCard("a Treefolk or Forest card");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TreefolkHealer.java b/Mage.Sets/src/mage/cards/t/TreefolkHealer.java
index 98261c82edf..2a08ccbbf65 100644
--- a/Mage.Sets/src/mage/cards/t/TreefolkHealer.java
+++ b/Mage.Sets/src/mage/cards/t/TreefolkHealer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class TreefolkHealer extends CardImpl {
+public final class TreefolkHealer extends CardImpl {
public TreefolkHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TreefolkMystic.java b/Mage.Sets/src/mage/cards/t/TreefolkMystic.java
index 3b29abd1b4d..2fcd4b54bcb 100644
--- a/Mage.Sets/src/mage/cards/t/TreefolkMystic.java
+++ b/Mage.Sets/src/mage/cards/t/TreefolkMystic.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class TreefolkMystic extends CardImpl {
+public final class TreefolkMystic extends CardImpl {
public TreefolkMystic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java b/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java
index 8ecb4564aa1..afce03cdbd7 100644
--- a/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java
+++ b/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Backfir3
*/
-public class TreefolkSeedlings extends CardImpl {
+public final class TreefolkSeedlings extends CardImpl {
final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
diff --git a/Mage.Sets/src/mage/cards/t/TreespringLorian.java b/Mage.Sets/src/mage/cards/t/TreespringLorian.java
index c4dcd457bd3..fe3a450b974 100644
--- a/Mage.Sets/src/mage/cards/t/TreespringLorian.java
+++ b/Mage.Sets/src/mage/cards/t/TreespringLorian.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class TreespringLorian extends CardImpl {
+public final class TreespringLorian extends CardImpl {
public TreespringLorian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TreetopBracers.java b/Mage.Sets/src/mage/cards/t/TreetopBracers.java
index cfd90f702ff..457d597da62 100644
--- a/Mage.Sets/src/mage/cards/t/TreetopBracers.java
+++ b/Mage.Sets/src/mage/cards/t/TreetopBracers.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author Jason E. Wall
*/
-public class TreetopBracers extends CardImpl {
+public final class TreetopBracers extends CardImpl {
public TreetopBracers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TreetopDefense.java b/Mage.Sets/src/mage/cards/t/TreetopDefense.java
index c144df4dd76..2ed8bd87b8c 100644
--- a/Mage.Sets/src/mage/cards/t/TreetopDefense.java
+++ b/Mage.Sets/src/mage/cards/t/TreetopDefense.java
@@ -45,7 +45,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author TheElk801
*/
-public class TreetopDefense extends CardImpl {
+public final class TreetopDefense extends CardImpl {
public TreetopDefense(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TreetopRangers.java b/Mage.Sets/src/mage/cards/t/TreetopRangers.java
index b00d1c348b3..cc8ac92f858 100644
--- a/Mage.Sets/src/mage/cards/t/TreetopRangers.java
+++ b/Mage.Sets/src/mage/cards/t/TreetopRangers.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
* @author Jason E. Wall
*
*/
-public class TreetopRangers extends CardImpl {
+public final class TreetopRangers extends CardImpl {
private final static FilterCreaturePermanent onlyFlyingCreatures = new FilterCreaturePermanent("except by creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/t/TreetopScout.java b/Mage.Sets/src/mage/cards/t/TreetopScout.java
index b5bfd9e0783..b069c461af1 100644
--- a/Mage.Sets/src/mage/cards/t/TreetopScout.java
+++ b/Mage.Sets/src/mage/cards/t/TreetopScout.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
* @author Jason E. Wall
*
*/
-public class TreetopScout extends CardImpl {
+public final class TreetopScout extends CardImpl {
private final static FilterCreaturePermanent onlyFlyingCreatures = new FilterCreaturePermanent("except by creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/t/TreetopSentinel.java b/Mage.Sets/src/mage/cards/t/TreetopSentinel.java
index 9622c1a7fb3..e160e16c5c2 100644
--- a/Mage.Sets/src/mage/cards/t/TreetopSentinel.java
+++ b/Mage.Sets/src/mage/cards/t/TreetopSentinel.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author cbt33
*/
-public class TreetopSentinel extends CardImpl {
+public final class TreetopSentinel extends CardImpl {
public TreetopSentinel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TreetopVillage.java b/Mage.Sets/src/mage/cards/t/TreetopVillage.java
index 339ccdea952..ac77bfaac74 100644
--- a/Mage.Sets/src/mage/cards/t/TreetopVillage.java
+++ b/Mage.Sets/src/mage/cards/t/TreetopVillage.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.Token;
*
* @author Loki
*/
-public class TreetopVillage extends CardImpl {
+public final class TreetopVillage extends CardImpl {
public TreetopVillage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/Tremble.java b/Mage.Sets/src/mage/cards/t/Tremble.java
index 81055e552e9..4ebb634b436 100644
--- a/Mage.Sets/src/mage/cards/t/Tremble.java
+++ b/Mage.Sets/src/mage/cards/t/Tremble.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author cbt33, jonubuu (Innocent Blood)
*/
-public class Tremble extends CardImpl {
+public final class Tremble extends CardImpl {
public Tremble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Tremor.java b/Mage.Sets/src/mage/cards/t/Tremor.java
index 456818fa95b..c5c54f984aa 100644
--- a/Mage.Sets/src/mage/cards/t/Tremor.java
+++ b/Mage.Sets/src/mage/cards/t/Tremor.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author Quercitron
*/
-public class Tremor extends CardImpl {
+public final class Tremor extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
diff --git a/Mage.Sets/src/mage/cards/t/TrenchGorger.java b/Mage.Sets/src/mage/cards/t/TrenchGorger.java
index 2c1f68ae666..aa0d2925e4d 100644
--- a/Mage.Sets/src/mage/cards/t/TrenchGorger.java
+++ b/Mage.Sets/src/mage/cards/t/TrenchGorger.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class TrenchGorger extends CardImpl {
+public final class TrenchGorger extends CardImpl {
public TrenchGorger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TrenchWurm.java b/Mage.Sets/src/mage/cards/t/TrenchWurm.java
index 2a0bee2726b..b88d0a78f79 100644
--- a/Mage.Sets/src/mage/cards/t/TrenchWurm.java
+++ b/Mage.Sets/src/mage/cards/t/TrenchWurm.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author michael.napoleon@gmail.com
*/
-public class TrenchWurm extends CardImpl {
+public final class TrenchWurm extends CardImpl {
public TrenchWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TrenchingSteed.java b/Mage.Sets/src/mage/cards/t/TrenchingSteed.java
index f0caa3b5f00..9258f977a2a 100644
--- a/Mage.Sets/src/mage/cards/t/TrenchingSteed.java
+++ b/Mage.Sets/src/mage/cards/t/TrenchingSteed.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class TrenchingSteed extends CardImpl {
+public final class TrenchingSteed extends CardImpl {
public TrenchingSteed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrepanationBlade.java b/Mage.Sets/src/mage/cards/t/TrepanationBlade.java
index 40079a8cd1e..127345383e3 100644
--- a/Mage.Sets/src/mage/cards/t/TrepanationBlade.java
+++ b/Mage.Sets/src/mage/cards/t/TrepanationBlade.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author North
*/
-public class TrepanationBlade extends CardImpl {
+public final class TrepanationBlade extends CardImpl {
public TrepanationBlade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TrespasserIlVec.java b/Mage.Sets/src/mage/cards/t/TrespasserIlVec.java
index cf9eae8cfbe..148d7495320 100644
--- a/Mage.Sets/src/mage/cards/t/TrespasserIlVec.java
+++ b/Mage.Sets/src/mage/cards/t/TrespasserIlVec.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class TrespasserIlVec extends CardImpl {
+public final class TrespasserIlVec extends CardImpl {
public TrespasserIlVec(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TrespassersCurse.java b/Mage.Sets/src/mage/cards/t/TrespassersCurse.java
index 6401ebaed8f..0a9b663efc1 100644
--- a/Mage.Sets/src/mage/cards/t/TrespassersCurse.java
+++ b/Mage.Sets/src/mage/cards/t/TrespassersCurse.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author stravant
*/
-public class TrespassersCurse extends CardImpl {
+public final class TrespassersCurse extends CardImpl {
public TrespassersCurse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TrespassingSouleater.java b/Mage.Sets/src/mage/cards/t/TrespassingSouleater.java
index fad1352e838..07aa67f4440 100644
--- a/Mage.Sets/src/mage/cards/t/TrespassingSouleater.java
+++ b/Mage.Sets/src/mage/cards/t/TrespassingSouleater.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class TrespassingSouleater extends CardImpl {
+public final class TrespassingSouleater extends CardImpl {
public TrespassingSouleater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TresserhornSinks.java b/Mage.Sets/src/mage/cards/t/TresserhornSinks.java
index ec8e993f1a6..bc57fe9565c 100644
--- a/Mage.Sets/src/mage/cards/t/TresserhornSinks.java
+++ b/Mage.Sets/src/mage/cards/t/TresserhornSinks.java
@@ -40,7 +40,7 @@ import mage.constants.SuperType;
*
* @author dustinconrad
*/
-public class TresserhornSinks extends CardImpl {
+public final class TresserhornSinks extends CardImpl {
public TresserhornSinks(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TresserhornSkyknight.java b/Mage.Sets/src/mage/cards/t/TresserhornSkyknight.java
index a0e4f854ca3..5368cad2392 100644
--- a/Mage.Sets/src/mage/cards/t/TresserhornSkyknight.java
+++ b/Mage.Sets/src/mage/cards/t/TresserhornSkyknight.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class TresserhornSkyknight extends CardImpl {
+public final class TresserhornSkyknight extends CardImpl {
public TresserhornSkyknight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TrestleTroll.java b/Mage.Sets/src/mage/cards/t/TrestleTroll.java
index 4342af83a69..3a5f5b31e12 100644
--- a/Mage.Sets/src/mage/cards/t/TrestleTroll.java
+++ b/Mage.Sets/src/mage/cards/t/TrestleTroll.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class TrestleTroll extends CardImpl {
+public final class TrestleTroll extends CardImpl {
public TrestleTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TrevaTheRenewer.java b/Mage.Sets/src/mage/cards/t/TrevaTheRenewer.java
index 33115371c75..f5364d73b38 100644
--- a/Mage.Sets/src/mage/cards/t/TrevaTheRenewer.java
+++ b/Mage.Sets/src/mage/cards/t/TrevaTheRenewer.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class TrevaTheRenewer extends CardImpl {
+public final class TrevaTheRenewer extends CardImpl {
public TrevaTheRenewer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TrevasAttendant.java b/Mage.Sets/src/mage/cards/t/TrevasAttendant.java
index 88855748e0b..e325cf77903 100644
--- a/Mage.Sets/src/mage/cards/t/TrevasAttendant.java
+++ b/Mage.Sets/src/mage/cards/t/TrevasAttendant.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class TrevasAttendant extends CardImpl {
+public final class TrevasAttendant extends CardImpl {
public TrevasAttendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/t/TrevasCharm.java b/Mage.Sets/src/mage/cards/t/TrevasCharm.java
index c76ed7164da..91463f17659 100644
--- a/Mage.Sets/src/mage/cards/t/TrevasCharm.java
+++ b/Mage.Sets/src/mage/cards/t/TrevasCharm.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author FenrisulfrX
*/
-public class TrevasCharm extends CardImpl {
+public final class TrevasCharm extends CardImpl {
public TrevasCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TrevasRuins.java b/Mage.Sets/src/mage/cards/t/TrevasRuins.java
index 015bc9452f7..073ff9bf967 100644
--- a/Mage.Sets/src/mage/cards/t/TrevasRuins.java
+++ b/Mage.Sets/src/mage/cards/t/TrevasRuins.java
@@ -48,7 +48,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class TrevasRuins extends CardImpl {
+public final class TrevasRuins extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("non-Lair land");
static{
diff --git a/Mage.Sets/src/mage/cards/t/TriFighter.java b/Mage.Sets/src/mage/cards/t/TriFighter.java
index d2cf8c20b7b..2eaac01e12d 100644
--- a/Mage.Sets/src/mage/cards/t/TriFighter.java
+++ b/Mage.Sets/src/mage/cards/t/TriFighter.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class TriFighter extends CardImpl {
+public final class TriFighter extends CardImpl {
public TriFighter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{U/B}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/t/TriadOfFates.java b/Mage.Sets/src/mage/cards/t/TriadOfFates.java
index fcaf65e1771..45b4df4c6aa 100644
--- a/Mage.Sets/src/mage/cards/t/TriadOfFates.java
+++ b/Mage.Sets/src/mage/cards/t/TriadOfFates.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TriadOfFates extends CardImpl {
+public final class TriadOfFates extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
private static final FilterCreaturePermanent filterCounter = new FilterCreaturePermanent("creature that has a fate counter on it");
diff --git a/Mage.Sets/src/mage/cards/t/TrialError.java b/Mage.Sets/src/mage/cards/t/TrialError.java
index 949cc57e9cc..a8543300651 100644
--- a/Mage.Sets/src/mage/cards/t/TrialError.java
+++ b/Mage.Sets/src/mage/cards/t/TrialError.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TrialError extends SplitCard {
+public final class TrialError extends SplitCard {
private static final FilterSpell filter = new FilterSpell("multicolored spell");
diff --git a/Mage.Sets/src/mage/cards/t/TrialOfAmbition.java b/Mage.Sets/src/mage/cards/t/TrialOfAmbition.java
index 557e065ae8d..b4fd1e2edaa 100644
--- a/Mage.Sets/src/mage/cards/t/TrialOfAmbition.java
+++ b/Mage.Sets/src/mage/cards/t/TrialOfAmbition.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class TrialOfAmbition extends CardImpl {
+public final class TrialOfAmbition extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cartouche");
diff --git a/Mage.Sets/src/mage/cards/t/TrialOfKnowledge.java b/Mage.Sets/src/mage/cards/t/TrialOfKnowledge.java
index 028049e832c..5ab02fc44f3 100644
--- a/Mage.Sets/src/mage/cards/t/TrialOfKnowledge.java
+++ b/Mage.Sets/src/mage/cards/t/TrialOfKnowledge.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class TrialOfKnowledge extends CardImpl {
+public final class TrialOfKnowledge extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cartouche");
diff --git a/Mage.Sets/src/mage/cards/t/TrialOfSolidarity.java b/Mage.Sets/src/mage/cards/t/TrialOfSolidarity.java
index e9892dabbd4..c170dcddda6 100644
--- a/Mage.Sets/src/mage/cards/t/TrialOfSolidarity.java
+++ b/Mage.Sets/src/mage/cards/t/TrialOfSolidarity.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class TrialOfSolidarity extends CardImpl {
+public final class TrialOfSolidarity extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cartouche");
diff --git a/Mage.Sets/src/mage/cards/t/TrialOfStrength.java b/Mage.Sets/src/mage/cards/t/TrialOfStrength.java
index 265ced956ac..36f0ac9ac82 100644
--- a/Mage.Sets/src/mage/cards/t/TrialOfStrength.java
+++ b/Mage.Sets/src/mage/cards/t/TrialOfStrength.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.BeastToken3;
*
* @author fireshoes
*/
-public class TrialOfStrength extends CardImpl {
+public final class TrialOfStrength extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cartouche");
diff --git a/Mage.Sets/src/mage/cards/t/TrialOfZeal.java b/Mage.Sets/src/mage/cards/t/TrialOfZeal.java
index 876d86e3be3..33c3e083b90 100644
--- a/Mage.Sets/src/mage/cards/t/TrialOfZeal.java
+++ b/Mage.Sets/src/mage/cards/t/TrialOfZeal.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class TrialOfZeal extends CardImpl {
+public final class TrialOfZeal extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cartouche");
diff --git a/Mage.Sets/src/mage/cards/t/TriangleOfWar.java b/Mage.Sets/src/mage/cards/t/TriangleOfWar.java
index 058a45134fb..0a6f963175c 100644
--- a/Mage.Sets/src/mage/cards/t/TriangleOfWar.java
+++ b/Mage.Sets/src/mage/cards/t/TriangleOfWar.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class TriangleOfWar extends CardImpl {
+public final class TriangleOfWar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/t/TriassicEgg.java b/Mage.Sets/src/mage/cards/t/TriassicEgg.java
index a33791f3519..09b9529540f 100644
--- a/Mage.Sets/src/mage/cards/t/TriassicEgg.java
+++ b/Mage.Sets/src/mage/cards/t/TriassicEgg.java
@@ -36,7 +36,7 @@ import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalActivatedAbility;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
@@ -45,7 +45,6 @@ import mage.constants.CardType;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterCreatureCard;
import mage.target.Target;
import mage.target.common.TargetCardInYourGraveyard;
@@ -53,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class TriassicEgg extends CardImpl {
+public final class TriassicEgg extends CardImpl {
public TriassicEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
@@ -67,7 +66,7 @@ public class TriassicEgg extends CardImpl {
// Sacrifice Triassic Egg: Choose one - You may put a creature card from your hand onto the battlefield;
ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD,
- new PutPermanentOnBattlefieldEffect(new FilterCreatureCard("a creature card")),
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_CREATURE_A),
new SacrificeSourceCost(),
new SourceHasCounterCondition(CounterType.HATCHLING, 2, Integer.MAX_VALUE),
"Sacrifice Triassic Egg: Choose one - You may put a creature card from your hand onto the battlefield; or return target creature card from your graveyard to the battlefield. Activate this ability only if two or more hatchling counters are on {this}.");
diff --git a/Mage.Sets/src/mage/cards/t/TribalFlames.java b/Mage.Sets/src/mage/cards/t/TribalFlames.java
index cc9726954db..0c175651f2c 100644
--- a/Mage.Sets/src/mage/cards/t/TribalFlames.java
+++ b/Mage.Sets/src/mage/cards/t/TribalFlames.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class TribalFlames extends CardImpl {
+public final class TribalFlames extends CardImpl {
public TribalFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TribalForcemage.java b/Mage.Sets/src/mage/cards/t/TribalForcemage.java
index 5cce4b77ba2..18998e375fb 100644
--- a/Mage.Sets/src/mage/cards/t/TribalForcemage.java
+++ b/Mage.Sets/src/mage/cards/t/TribalForcemage.java
@@ -50,7 +50,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author Styxo
*/
-public class TribalForcemage extends CardImpl {
+public final class TribalForcemage extends CardImpl {
public TribalForcemage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TribalGolem.java b/Mage.Sets/src/mage/cards/t/TribalGolem.java
index f29eb8611b3..3f67ca664a3 100644
--- a/Mage.Sets/src/mage/cards/t/TribalGolem.java
+++ b/Mage.Sets/src/mage/cards/t/TribalGolem.java
@@ -54,7 +54,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author TheElk801
*/
-public class TribalGolem extends CardImpl {
+public final class TribalGolem extends CardImpl {
private static final FilterControlledPermanent filter1 = new FilterControlledPermanent("a Beast");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("a Goblin");
diff --git a/Mage.Sets/src/mage/cards/t/TribalUnity.java b/Mage.Sets/src/mage/cards/t/TribalUnity.java
index 6d9be2b1be0..e7e160320aa 100644
--- a/Mage.Sets/src/mage/cards/t/TribalUnity.java
+++ b/Mage.Sets/src/mage/cards/t/TribalUnity.java
@@ -50,7 +50,7 @@ import mage.players.Player;
/**
* @author anonymous
*/
-public class TribalUnity extends CardImpl {
+public final class TribalUnity extends CardImpl {
public TribalUnity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TributeToHunger.java b/Mage.Sets/src/mage/cards/t/TributeToHunger.java
index 3c80de851ec..a80390c92cd 100644
--- a/Mage.Sets/src/mage/cards/t/TributeToHunger.java
+++ b/Mage.Sets/src/mage/cards/t/TributeToHunger.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author North
*/
-public class TributeToHunger extends CardImpl {
+public final class TributeToHunger extends CardImpl {
public TributeToHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TributeToTheWild.java b/Mage.Sets/src/mage/cards/t/TributeToTheWild.java
index e0e3f8ecc96..8731178d39c 100644
--- a/Mage.Sets/src/mage/cards/t/TributeToTheWild.java
+++ b/Mage.Sets/src/mage/cards/t/TributeToTheWild.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class TributeToTheWild extends CardImpl {
+public final class TributeToTheWild extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("an artifact or enchantment");
diff --git a/Mage.Sets/src/mage/cards/t/Trickbind.java b/Mage.Sets/src/mage/cards/t/Trickbind.java
index ad43b6dbcab..3da15d3479d 100644
--- a/Mage.Sets/src/mage/cards/t/Trickbind.java
+++ b/Mage.Sets/src/mage/cards/t/Trickbind.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class Trickbind extends CardImpl {
+public final class Trickbind extends CardImpl {
public Trickbind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TrickeryCharm.java b/Mage.Sets/src/mage/cards/t/TrickeryCharm.java
index 0e3ac7ec52c..796b402ac83 100644
--- a/Mage.Sets/src/mage/cards/t/TrickeryCharm.java
+++ b/Mage.Sets/src/mage/cards/t/TrickeryCharm.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class TrickeryCharm extends CardImpl {
+public final class TrickeryCharm extends CardImpl {
public TrickeryCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TricksOfTheTrade.java b/Mage.Sets/src/mage/cards/t/TricksOfTheTrade.java
index 1318fd54167..836a1b4b677 100644
--- a/Mage.Sets/src/mage/cards/t/TricksOfTheTrade.java
+++ b/Mage.Sets/src/mage/cards/t/TricksOfTheTrade.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TricksOfTheTrade extends CardImpl {
+public final class TricksOfTheTrade extends CardImpl {
public TricksOfTheTrade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TricksterMage.java b/Mage.Sets/src/mage/cards/t/TricksterMage.java
index 66dfca106d3..aad62e3d870 100644
--- a/Mage.Sets/src/mage/cards/t/TricksterMage.java
+++ b/Mage.Sets/src/mage/cards/t/TricksterMage.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class TricksterMage extends CardImpl {
+public final class TricksterMage extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/t/TriclopeanSight.java b/Mage.Sets/src/mage/cards/t/TriclopeanSight.java
index 614afb3dc3f..e6eab943bb0 100644
--- a/Mage.Sets/src/mage/cards/t/TriclopeanSight.java
+++ b/Mage.Sets/src/mage/cards/t/TriclopeanSight.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class TriclopeanSight extends CardImpl {
+public final class TriclopeanSight extends CardImpl {
public TriclopeanSight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrigonOfCorruption.java b/Mage.Sets/src/mage/cards/t/TrigonOfCorruption.java
index 2b6ec00e601..1358e485766 100644
--- a/Mage.Sets/src/mage/cards/t/TrigonOfCorruption.java
+++ b/Mage.Sets/src/mage/cards/t/TrigonOfCorruption.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class TrigonOfCorruption extends CardImpl {
+public final class TrigonOfCorruption extends CardImpl {
public TrigonOfCorruption (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/t/TrigonOfInfestation.java b/Mage.Sets/src/mage/cards/t/TrigonOfInfestation.java
index b56ba35d9e8..e76c7f1566f 100644
--- a/Mage.Sets/src/mage/cards/t/TrigonOfInfestation.java
+++ b/Mage.Sets/src/mage/cards/t/TrigonOfInfestation.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.InsectInfectToken;
/**
* @author nantuko
*/
-public class TrigonOfInfestation extends CardImpl {
+public final class TrigonOfInfestation extends CardImpl {
private static InsectInfectToken insectToken = new InsectInfectToken();
diff --git a/Mage.Sets/src/mage/cards/t/TrigonOfMending.java b/Mage.Sets/src/mage/cards/t/TrigonOfMending.java
index ebb9111a33c..9d9cb75fadb 100644
--- a/Mage.Sets/src/mage/cards/t/TrigonOfMending.java
+++ b/Mage.Sets/src/mage/cards/t/TrigonOfMending.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
/**
* @author nantuko
*/
-public class TrigonOfMending extends CardImpl {
+public final class TrigonOfMending extends CardImpl {
public TrigonOfMending(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TrigonOfRage.java b/Mage.Sets/src/mage/cards/t/TrigonOfRage.java
index ca03d7e81b7..b0e21cfdf82 100644
--- a/Mage.Sets/src/mage/cards/t/TrigonOfRage.java
+++ b/Mage.Sets/src/mage/cards/t/TrigonOfRage.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class TrigonOfRage extends CardImpl {
+public final class TrigonOfRage extends CardImpl {
public TrigonOfRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TrigonOfThought.java b/Mage.Sets/src/mage/cards/t/TrigonOfThought.java
index ee7a50ccebc..7d0770c3579 100644
--- a/Mage.Sets/src/mage/cards/t/TrigonOfThought.java
+++ b/Mage.Sets/src/mage/cards/t/TrigonOfThought.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
/**
* @author nantuko
*/
-public class TrigonOfThought extends CardImpl {
+public final class TrigonOfThought extends CardImpl {
public TrigonOfThought(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/t/Trinisphere.java b/Mage.Sets/src/mage/cards/t/Trinisphere.java
index 6009875e77d..193d8ea81b1 100644
--- a/Mage.Sets/src/mage/cards/t/Trinisphere.java
+++ b/Mage.Sets/src/mage/cards/t/Trinisphere.java
@@ -47,7 +47,7 @@ import mage.util.CardUtil;
*
* @author Plopman
*/
-public class Trinisphere extends CardImpl {
+public final class Trinisphere extends CardImpl {
public Trinisphere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/t/TrinketMage.java b/Mage.Sets/src/mage/cards/t/TrinketMage.java
index 445e8a0cfa9..da590406dd8 100644
--- a/Mage.Sets/src/mage/cards/t/TrinketMage.java
+++ b/Mage.Sets/src/mage/cards/t/TrinketMage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
/**
* @author ayratn
*/
-public class TrinketMage extends CardImpl {
+public final class TrinketMage extends CardImpl {
private static final FilterCard filter = new FilterCard("an artifact card with converted mana cost 1 or less");
diff --git a/Mage.Sets/src/mage/cards/t/TripNoose.java b/Mage.Sets/src/mage/cards/t/TripNoose.java
index acc90cc1408..3a5dd00f8ff 100644
--- a/Mage.Sets/src/mage/cards/t/TripNoose.java
+++ b/Mage.Sets/src/mage/cards/t/TripNoose.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TripNoose extends CardImpl {
+public final class TripNoose extends CardImpl {
public TripNoose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TripWire.java b/Mage.Sets/src/mage/cards/t/TripWire.java
index 2ea4425da03..659aeb7f837 100644
--- a/Mage.Sets/src/mage/cards/t/TripWire.java
+++ b/Mage.Sets/src/mage/cards/t/TripWire.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class TripWire extends CardImpl {
+public final class TripWire extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with horsemanship");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TriplicateSpirits.java b/Mage.Sets/src/mage/cards/t/TriplicateSpirits.java
index b4d293a485e..9cded6e19d8 100644
--- a/Mage.Sets/src/mage/cards/t/TriplicateSpirits.java
+++ b/Mage.Sets/src/mage/cards/t/TriplicateSpirits.java
@@ -39,7 +39,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author LevelX2
*/
-public class TriplicateSpirits extends CardImpl {
+public final class TriplicateSpirits extends CardImpl {
public TriplicateSpirits(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Triskaidekaphobia.java b/Mage.Sets/src/mage/cards/t/Triskaidekaphobia.java
index 892e98c1f86..edc98d605c7 100644
--- a/Mage.Sets/src/mage/cards/t/Triskaidekaphobia.java
+++ b/Mage.Sets/src/mage/cards/t/Triskaidekaphobia.java
@@ -45,7 +45,7 @@ import mage.players.PlayerList;
*
* @author fireshoes
*/
-public class Triskaidekaphobia extends CardImpl {
+public final class Triskaidekaphobia extends CardImpl {
public Triskaidekaphobia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Triskelavus.java b/Mage.Sets/src/mage/cards/t/Triskelavus.java
index 69c4cd860f9..39947dc67a3 100644
--- a/Mage.Sets/src/mage/cards/t/Triskelavus.java
+++ b/Mage.Sets/src/mage/cards/t/Triskelavus.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.TriskelaviteToken;
*
* @author fireshoes
*/
-public class Triskelavus extends CardImpl {
+public final class Triskelavus extends CardImpl {
public Triskelavus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/t/Triskelion.java b/Mage.Sets/src/mage/cards/t/Triskelion.java
index 7fc7fbce727..ab7d238c756 100644
--- a/Mage.Sets/src/mage/cards/t/Triskelion.java
+++ b/Mage.Sets/src/mage/cards/t/Triskelion.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Triskelion extends CardImpl {
+public final class Triskelion extends CardImpl {
public Triskelion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/t/TritonCavalry.java b/Mage.Sets/src/mage/cards/t/TritonCavalry.java
index 9083c39f842..15eddd158d4 100644
--- a/Mage.Sets/src/mage/cards/t/TritonCavalry.java
+++ b/Mage.Sets/src/mage/cards/t/TritonCavalry.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class TritonCavalry extends CardImpl {
+public final class TritonCavalry extends CardImpl {
public TritonCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TritonFortuneHunter.java b/Mage.Sets/src/mage/cards/t/TritonFortuneHunter.java
index ca92fb28631..6746548dbc1 100644
--- a/Mage.Sets/src/mage/cards/t/TritonFortuneHunter.java
+++ b/Mage.Sets/src/mage/cards/t/TritonFortuneHunter.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TritonFortuneHunter extends CardImpl {
+public final class TritonFortuneHunter extends CardImpl {
public TritonFortuneHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TritonShorestalker.java b/Mage.Sets/src/mage/cards/t/TritonShorestalker.java
index e07ddb00cbf..864b70dfe4e 100644
--- a/Mage.Sets/src/mage/cards/t/TritonShorestalker.java
+++ b/Mage.Sets/src/mage/cards/t/TritonShorestalker.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TritonShorestalker extends CardImpl {
+public final class TritonShorestalker extends CardImpl {
public TritonShorestalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TritonShorethief.java b/Mage.Sets/src/mage/cards/t/TritonShorethief.java
index 44df23eaff7..bcb280c1bd2 100644
--- a/Mage.Sets/src/mage/cards/t/TritonShorethief.java
+++ b/Mage.Sets/src/mage/cards/t/TritonShorethief.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TritonShorethief extends CardImpl {
+public final class TritonShorethief extends CardImpl {
public TritonShorethief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TritonTactics.java b/Mage.Sets/src/mage/cards/t/TritonTactics.java
index b1a23a8a993..391fd413b66 100644
--- a/Mage.Sets/src/mage/cards/t/TritonTactics.java
+++ b/Mage.Sets/src/mage/cards/t/TritonTactics.java
@@ -56,7 +56,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class TritonTactics extends CardImpl {
+public final class TritonTactics extends CardImpl {
public TritonTactics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TriumphOfCruelty.java b/Mage.Sets/src/mage/cards/t/TriumphOfCruelty.java
index 2d5f351f23d..d3a911349c0 100644
--- a/Mage.Sets/src/mage/cards/t/TriumphOfCruelty.java
+++ b/Mage.Sets/src/mage/cards/t/TriumphOfCruelty.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author noxx
*/
-public class TriumphOfCruelty extends CardImpl {
+public final class TriumphOfCruelty extends CardImpl {
private static final String ruleText = "target opponent discards a card if you control the creature with the greatest power or tied for the greatest power";
diff --git a/Mage.Sets/src/mage/cards/t/TriumphOfFerocity.java b/Mage.Sets/src/mage/cards/t/TriumphOfFerocity.java
index 177822ac175..923ce510dcf 100644
--- a/Mage.Sets/src/mage/cards/t/TriumphOfFerocity.java
+++ b/Mage.Sets/src/mage/cards/t/TriumphOfFerocity.java
@@ -41,9 +41,9 @@ import mage.constants.TargetController;
/**
* @author noxx
*/
-public class TriumphOfFerocity extends CardImpl {
+public final class TriumphOfFerocity extends CardImpl {
- private static final String ruleText = "draw a card if you control the creature with the greatest power or tied for the greatest power";
+ private static final String ruleText = "At the beginning of your upkeep, draw a card if you control the creature with the greatest power or tied for the greatest power";
public TriumphOfFerocity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TriumphOfGerrard.java b/Mage.Sets/src/mage/cards/t/TriumphOfGerrard.java
index f59ef3a060d..8f8fbb26a19 100644
--- a/Mage.Sets/src/mage/cards/t/TriumphOfGerrard.java
+++ b/Mage.Sets/src/mage/cards/t/TriumphOfGerrard.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class TriumphOfGerrard extends CardImpl {
+public final class TriumphOfGerrard extends CardImpl {
public TriumphOfGerrard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java b/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java
index 32bb14c60e0..6241ea88319 100644
--- a/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java
+++ b/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
/**
* @author North
*/
-public class TriumphOfTheHordes extends CardImpl {
+public final class TriumphOfTheHordes extends CardImpl {
public TriumphOfTheHordes(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/t/TrokinHighGuard.java b/Mage.Sets/src/mage/cards/t/TrokinHighGuard.java
index a3bf8d04261..f3046d26e9b 100644
--- a/Mage.Sets/src/mage/cards/t/TrokinHighGuard.java
+++ b/Mage.Sets/src/mage/cards/t/TrokinHighGuard.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class TrokinHighGuard extends CardImpl {
+public final class TrokinHighGuard extends CardImpl {
public TrokinHighGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrollAscetic.java b/Mage.Sets/src/mage/cards/t/TrollAscetic.java
index 1c56a2181ee..8cd80efe4c1 100644
--- a/Mage.Sets/src/mage/cards/t/TrollAscetic.java
+++ b/Mage.Sets/src/mage/cards/t/TrollAscetic.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class TrollAscetic extends CardImpl {
+public final class TrollAscetic extends CardImpl {
public TrollAscetic (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
this.subtype.add(SubType.TROLL);
diff --git a/Mage.Sets/src/mage/cards/t/TrollHornCameo.java b/Mage.Sets/src/mage/cards/t/TrollHornCameo.java
index 94352a2b2ae..3f452ba8963 100644
--- a/Mage.Sets/src/mage/cards/t/TrollHornCameo.java
+++ b/Mage.Sets/src/mage/cards/t/TrollHornCameo.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class TrollHornCameo extends CardImpl {
+public final class TrollHornCameo extends CardImpl {
public TrollHornCameo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/t/Trollhide.java b/Mage.Sets/src/mage/cards/t/Trollhide.java
index 081b51422f4..94cfeee775d 100644
--- a/Mage.Sets/src/mage/cards/t/Trollhide.java
+++ b/Mage.Sets/src/mage/cards/t/Trollhide.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Trollhide extends CardImpl {
+public final class Trollhide extends CardImpl {
public Trollhide (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TrollsOfTelJilad.java b/Mage.Sets/src/mage/cards/t/TrollsOfTelJilad.java
index daf186b6d85..3b0cdc4b013 100644
--- a/Mage.Sets/src/mage/cards/t/TrollsOfTelJilad.java
+++ b/Mage.Sets/src/mage/cards/t/TrollsOfTelJilad.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class TrollsOfTelJilad extends CardImpl {
+public final class TrollsOfTelJilad extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/t/Tromokratis.java b/Mage.Sets/src/mage/cards/t/Tromokratis.java
index 27ae856c36b..7c83e75989c 100644
--- a/Mage.Sets/src/mage/cards/t/Tromokratis.java
+++ b/Mage.Sets/src/mage/cards/t/Tromokratis.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class Tromokratis extends CardImpl {
+public final class Tromokratis extends CardImpl {
public Tromokratis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TrompTheDomains.java b/Mage.Sets/src/mage/cards/t/TrompTheDomains.java
index 4ccc9db3d8b..36997ff1ee8 100644
--- a/Mage.Sets/src/mage/cards/t/TrompTheDomains.java
+++ b/Mage.Sets/src/mage/cards/t/TrompTheDomains.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class TrompTheDomains extends CardImpl {
+public final class TrompTheDomains extends CardImpl {
public TrompTheDomains(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TrooperArmor.java b/Mage.Sets/src/mage/cards/t/TrooperArmor.java
index 151ddae836e..63adfd18538 100644
--- a/Mage.Sets/src/mage/cards/t/TrooperArmor.java
+++ b/Mage.Sets/src/mage/cards/t/TrooperArmor.java
@@ -44,7 +44,7 @@ import mage.filter.FilterPermanent;
*
* @author Styxo
*/
-public class TrooperArmor extends CardImpl {
+public final class TrooperArmor extends CardImpl {
public TrooperArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/t/TrooperCommando.java b/Mage.Sets/src/mage/cards/t/TrooperCommando.java
index 7493dc45c6c..2d8bf0c2fa3 100644
--- a/Mage.Sets/src/mage/cards/t/TrooperCommando.java
+++ b/Mage.Sets/src/mage/cards/t/TrooperCommando.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class TrooperCommando extends CardImpl {
+public final class TrooperCommando extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures");
diff --git a/Mage.Sets/src/mage/cards/t/TrophyHunter.java b/Mage.Sets/src/mage/cards/t/TrophyHunter.java
index 253c84ecf6f..bd18c224836 100644
--- a/Mage.Sets/src/mage/cards/t/TrophyHunter.java
+++ b/Mage.Sets/src/mage/cards/t/TrophyHunter.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class TrophyHunter extends CardImpl {
+public final class TrophyHunter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/t/TrophyMage.java b/Mage.Sets/src/mage/cards/t/TrophyMage.java
index 671218e2927..bd8ba74c4cd 100644
--- a/Mage.Sets/src/mage/cards/t/TrophyMage.java
+++ b/Mage.Sets/src/mage/cards/t/TrophyMage.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Styxo
*/
-public class TrophyMage extends CardImpl {
+public final class TrophyMage extends CardImpl {
private static final FilterCard filter = new FilterCard("an artifact card with converted mana cost 3");
diff --git a/Mage.Sets/src/mage/cards/t/TropicalIsland.java b/Mage.Sets/src/mage/cards/t/TropicalIsland.java
index fad4468002e..75c7186c957 100644
--- a/Mage.Sets/src/mage/cards/t/TropicalIsland.java
+++ b/Mage.Sets/src/mage/cards/t/TropicalIsland.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class TropicalIsland extends CardImpl {
+public final class TropicalIsland extends CardImpl {
public TropicalIsland(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TropicalStorm.java b/Mage.Sets/src/mage/cards/t/TropicalStorm.java
index a6677b511dd..15920e727f9 100644
--- a/Mage.Sets/src/mage/cards/t/TropicalStorm.java
+++ b/Mage.Sets/src/mage/cards/t/TropicalStorm.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author TheElk801
*/
-public class TropicalStorm extends CardImpl {
+public final class TropicalStorm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("blue creature");
diff --git a/Mage.Sets/src/mage/cards/t/TrostaniSelesnyasVoice.java b/Mage.Sets/src/mage/cards/t/TrostaniSelesnyasVoice.java
index d7a70970656..35208cc7e54 100644
--- a/Mage.Sets/src/mage/cards/t/TrostaniSelesnyasVoice.java
+++ b/Mage.Sets/src/mage/cards/t/TrostaniSelesnyasVoice.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TrostaniSelesnyasVoice extends CardImpl {
+public final class TrostaniSelesnyasVoice extends CardImpl {
public TrostaniSelesnyasVoice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrostanisJudgment.java b/Mage.Sets/src/mage/cards/t/TrostanisJudgment.java
index 513d9890d1d..efe555f14fb 100644
--- a/Mage.Sets/src/mage/cards/t/TrostanisJudgment.java
+++ b/Mage.Sets/src/mage/cards/t/TrostanisJudgment.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevleX2
*/
-public class TrostanisJudgment extends CardImpl {
+public final class TrostanisJudgment extends CardImpl {
public TrostanisJudgment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrostanisSummoner.java b/Mage.Sets/src/mage/cards/t/TrostanisSummoner.java
index 6b3cf809bd1..2d09c81c135 100644
--- a/Mage.Sets/src/mage/cards/t/TrostanisSummoner.java
+++ b/Mage.Sets/src/mage/cards/t/TrostanisSummoner.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.RhinoToken;
*
* @author LevelX2
*/
-public class TrostanisSummoner extends CardImpl {
+public final class TrostanisSummoner extends CardImpl {
public TrostanisSummoner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TroubledHealer.java b/Mage.Sets/src/mage/cards/t/TroubledHealer.java
index 189b86ad56c..8ea097b7af7 100644
--- a/Mage.Sets/src/mage/cards/t/TroubledHealer.java
+++ b/Mage.Sets/src/mage/cards/t/TroubledHealer.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class TroubledHealer extends CardImpl {
+public final class TroubledHealer extends CardImpl {
public TroubledHealer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TroublesomeSpirit.java b/Mage.Sets/src/mage/cards/t/TroublesomeSpirit.java
index 2dba0b5bb85..f5f93eec303 100644
--- a/Mage.Sets/src/mage/cards/t/TroublesomeSpirit.java
+++ b/Mage.Sets/src/mage/cards/t/TroublesomeSpirit.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author LoneFox
*/
-public class TroublesomeSpirit extends CardImpl {
+public final class TroublesomeSpirit extends CardImpl {
public TroublesomeSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TroveOfTemptation.java b/Mage.Sets/src/mage/cards/t/TroveOfTemptation.java
index ebc331a7192..9e33f930daa 100644
--- a/Mage.Sets/src/mage/cards/t/TroveOfTemptation.java
+++ b/Mage.Sets/src/mage/cards/t/TroveOfTemptation.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TroveOfTemptation extends CardImpl {
+public final class TroveOfTemptation extends CardImpl {
public TroveOfTemptation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Truce.java b/Mage.Sets/src/mage/cards/t/Truce.java
index 3114bdbe695..2416b027d12 100644
--- a/Mage.Sets/src/mage/cards/t/Truce.java
+++ b/Mage.Sets/src/mage/cards/t/Truce.java
@@ -41,7 +41,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class Truce extends CardImpl {
+public final class Truce extends CardImpl {
public Truce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrueBeliever.java b/Mage.Sets/src/mage/cards/t/TrueBeliever.java
index cda27648afb..2faf7c06175 100644
--- a/Mage.Sets/src/mage/cards/t/TrueBeliever.java
+++ b/Mage.Sets/src/mage/cards/t/TrueBeliever.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class TrueBeliever extends CardImpl {
+public final class TrueBeliever extends CardImpl {
public TrueBeliever(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrueConviction.java b/Mage.Sets/src/mage/cards/t/TrueConviction.java
index 66a2312b49d..d6fcd1cdbae 100644
--- a/Mage.Sets/src/mage/cards/t/TrueConviction.java
+++ b/Mage.Sets/src/mage/cards/t/TrueConviction.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author nantuko
*/
-public class TrueConviction extends CardImpl {
+public final class TrueConviction extends CardImpl {
public TrueConviction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrueFaithCenser.java b/Mage.Sets/src/mage/cards/t/TrueFaithCenser.java
index 5983639b0fb..79eb31e2908 100644
--- a/Mage.Sets/src/mage/cards/t/TrueFaithCenser.java
+++ b/Mage.Sets/src/mage/cards/t/TrueFaithCenser.java
@@ -46,7 +46,7 @@ import mage.constants.*;
*
* @author fireshoes
*/
-public class TrueFaithCenser extends CardImpl {
+public final class TrueFaithCenser extends CardImpl {
private static final String staticText = "As long as equipped creature is a Human, it gets an addtional +1/+0";
diff --git a/Mage.Sets/src/mage/cards/t/TrueNameNemesis.java b/Mage.Sets/src/mage/cards/t/TrueNameNemesis.java
index 87910900716..c49e87b05bc 100644
--- a/Mage.Sets/src/mage/cards/t/TrueNameNemesis.java
+++ b/Mage.Sets/src/mage/cards/t/TrueNameNemesis.java
@@ -59,7 +59,7 @@ import mage.game.stack.StackObject;
*
* @author LevelX2
*/
-public class TrueNameNemesis extends CardImpl {
+public final class TrueNameNemesis extends CardImpl {
public TrueNameNemesis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TruefirePaladin.java b/Mage.Sets/src/mage/cards/t/TruefirePaladin.java
index d982339f6c2..d1c17a3b5a4 100644
--- a/Mage.Sets/src/mage/cards/t/TruefirePaladin.java
+++ b/Mage.Sets/src/mage/cards/t/TruefirePaladin.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class TruefirePaladin extends CardImpl {
+public final class TruefirePaladin extends CardImpl {
public TruefirePaladin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrueheartDuelist.java b/Mage.Sets/src/mage/cards/t/TrueheartDuelist.java
index 1363601a05c..0f368952432 100644
--- a/Mage.Sets/src/mage/cards/t/TrueheartDuelist.java
+++ b/Mage.Sets/src/mage/cards/t/TrueheartDuelist.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class TrueheartDuelist extends CardImpl {
+public final class TrueheartDuelist extends CardImpl {
public TrueheartDuelist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrueheartTwins.java b/Mage.Sets/src/mage/cards/t/TrueheartTwins.java
index 48f9d779e2c..05bf5e146a2 100644
--- a/Mage.Sets/src/mage/cards/t/TrueheartTwins.java
+++ b/Mage.Sets/src/mage/cards/t/TrueheartTwins.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author stravant
*/
-public class TrueheartTwins extends CardImpl {
+public final class TrueheartTwins extends CardImpl {
public TrueheartTwins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TrumpetBlast.java b/Mage.Sets/src/mage/cards/t/TrumpetBlast.java
index 216aba5fd44..bd915e4a27b 100644
--- a/Mage.Sets/src/mage/cards/t/TrumpetBlast.java
+++ b/Mage.Sets/src/mage/cards/t/TrumpetBlast.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author North
*/
-public class TrumpetBlast extends CardImpl {
+public final class TrumpetBlast extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("Attacking creatures");
diff --git a/Mage.Sets/src/mage/cards/t/TrumpetingArmodon.java b/Mage.Sets/src/mage/cards/t/TrumpetingArmodon.java
index ea2b1c1963b..328d1f99584 100644
--- a/Mage.Sets/src/mage/cards/t/TrumpetingArmodon.java
+++ b/Mage.Sets/src/mage/cards/t/TrumpetingArmodon.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Sir-Speshkitty
*/
-public class TrumpetingArmodon extends CardImpl {
+public final class TrumpetingArmodon extends CardImpl {
public TrumpetingArmodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TrustedAdvisor.java b/Mage.Sets/src/mage/cards/t/TrustedAdvisor.java
index 660348d5a14..c58987f4c5a 100644
--- a/Mage.Sets/src/mage/cards/t/TrustedAdvisor.java
+++ b/Mage.Sets/src/mage/cards/t/TrustedAdvisor.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class TrustedAdvisor extends CardImpl {
+public final class TrustedAdvisor extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("blue creature you control");
diff --git a/Mage.Sets/src/mage/cards/t/TrustedForcemage.java b/Mage.Sets/src/mage/cards/t/TrustedForcemage.java
index 84042e4132c..2c48b30f4e1 100644
--- a/Mage.Sets/src/mage/cards/t/TrustedForcemage.java
+++ b/Mage.Sets/src/mage/cards/t/TrustedForcemage.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class TrustedForcemage extends CardImpl {
+public final class TrustedForcemage extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, each of those creatures gets +1/+1";
diff --git a/Mage.Sets/src/mage/cards/t/TrustyCompanion.java b/Mage.Sets/src/mage/cards/t/TrustyCompanion.java
index eb0dac2a8dc..4c6325062db 100644
--- a/Mage.Sets/src/mage/cards/t/TrustyCompanion.java
+++ b/Mage.Sets/src/mage/cards/t/TrustyCompanion.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TrustyCompanion extends CardImpl {
+public final class TrustyCompanion extends CardImpl {
public TrustyCompanion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TrustyMachete.java b/Mage.Sets/src/mage/cards/t/TrustyMachete.java
index 0214ef2718c..96c2b6d56de 100644
--- a/Mage.Sets/src/mage/cards/t/TrustyMachete.java
+++ b/Mage.Sets/src/mage/cards/t/TrustyMachete.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class TrustyMachete extends CardImpl {
+public final class TrustyMachete extends CardImpl {
public TrustyMachete(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/t/TrustyPackbeast.java b/Mage.Sets/src/mage/cards/t/TrustyPackbeast.java
new file mode 100644
index 00000000000..553e04ce583
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/t/TrustyPackbeast.java
@@ -0,0 +1,69 @@
+/*
+ * 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.t;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.ReturnToHandTargetEffect;
+import mage.constants.SubType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.filter.common.FilterArtifactCard;
+import mage.target.common.TargetCardInYourGraveyard;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class TrustyPackbeast extends CardImpl {
+
+ public TrustyPackbeast(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
+
+ this.subtype.add(SubType.BEAST);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(3);
+
+ // When Trusty Packbeast enters the battlefield, return target artifact card from your graveyard to your hand.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect());
+ ability.addTarget(new TargetCardInYourGraveyard(new FilterArtifactCard("artifact card from your graveyard")));
+ this.addAbility(ability);
+ }
+
+ public TrustyPackbeast(final TrustyPackbeast card) {
+ super(card);
+ }
+
+ @Override
+ public TrustyPackbeast copy() {
+ return new TrustyPackbeast(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/t/TrygonPredator.java b/Mage.Sets/src/mage/cards/t/TrygonPredator.java
index bff517bdc8e..0a40ac3b0f1 100644
--- a/Mage.Sets/src/mage/cards/t/TrygonPredator.java
+++ b/Mage.Sets/src/mage/cards/t/TrygonPredator.java
@@ -52,7 +52,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class TrygonPredator extends CardImpl {
+public final class TrygonPredator extends CardImpl {
public TrygonPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TsaboTavoc.java b/Mage.Sets/src/mage/cards/t/TsaboTavoc.java
index 767dff8a80a..4c7f7e46302 100644
--- a/Mage.Sets/src/mage/cards/t/TsaboTavoc.java
+++ b/Mage.Sets/src/mage/cards/t/TsaboTavoc.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TsaboTavoc extends CardImpl {
+public final class TsaboTavoc extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creatures");
private static final FilterCreaturePermanent filterDestroy = new FilterCreaturePermanent("legendary creature");
diff --git a/Mage.Sets/src/mage/cards/t/TsabosAssassin.java b/Mage.Sets/src/mage/cards/t/TsabosAssassin.java
index 8467c89e373..d28a7bdf3a4 100644
--- a/Mage.Sets/src/mage/cards/t/TsabosAssassin.java
+++ b/Mage.Sets/src/mage/cards/t/TsabosAssassin.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class TsabosAssassin extends CardImpl {
+public final class TsabosAssassin extends CardImpl {
public TsabosAssassin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TsabosDecree.java b/Mage.Sets/src/mage/cards/t/TsabosDecree.java
index 67372e86b8f..dc7e2b09cf1 100644
--- a/Mage.Sets/src/mage/cards/t/TsabosDecree.java
+++ b/Mage.Sets/src/mage/cards/t/TsabosDecree.java
@@ -53,7 +53,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class TsabosDecree extends CardImpl {
+public final class TsabosDecree extends CardImpl {
public TsabosDecree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TsabosWeb.java b/Mage.Sets/src/mage/cards/t/TsabosWeb.java
index 6003abd9ff5..39d669513e4 100644
--- a/Mage.Sets/src/mage/cards/t/TsabosWeb.java
+++ b/Mage.Sets/src/mage/cards/t/TsabosWeb.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class TsabosWeb extends CardImpl {
+public final class TsabosWeb extends CardImpl {
public TsabosWeb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/Tsunami.java b/Mage.Sets/src/mage/cards/t/Tsunami.java
index 8a041209c4a..7b7f1a44c2f 100644
--- a/Mage.Sets/src/mage/cards/t/Tsunami.java
+++ b/Mage.Sets/src/mage/cards/t/Tsunami.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author emerald000
*/
-public class Tsunami extends CardImpl {
+public final class Tsunami extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Islands");
static {
diff --git a/Mage.Sets/src/mage/cards/t/TukatongueThallid.java b/Mage.Sets/src/mage/cards/t/TukatongueThallid.java
index ae7dfc96f8a..cae6a69982f 100644
--- a/Mage.Sets/src/mage/cards/t/TukatongueThallid.java
+++ b/Mage.Sets/src/mage/cards/t/TukatongueThallid.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author Loki
*/
-public class TukatongueThallid extends CardImpl {
+public final class TukatongueThallid extends CardImpl {
public TukatongueThallid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TuknirDeathlock.java b/Mage.Sets/src/mage/cards/t/TuknirDeathlock.java
index e37ab94ea77..cfc607d7437 100644
--- a/Mage.Sets/src/mage/cards/t/TuknirDeathlock.java
+++ b/Mage.Sets/src/mage/cards/t/TuknirDeathlock.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class TuknirDeathlock extends CardImpl {
+public final class TuknirDeathlock extends CardImpl {
public TuknirDeathlock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TuktukGrunts.java b/Mage.Sets/src/mage/cards/t/TuktukGrunts.java
index 6b3ee249547..b03a1c2c23b 100644
--- a/Mage.Sets/src/mage/cards/t/TuktukGrunts.java
+++ b/Mage.Sets/src/mage/cards/t/TuktukGrunts.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class TuktukGrunts extends CardImpl {
+public final class TuktukGrunts extends CardImpl {
public TuktukGrunts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TuktukScrapper.java b/Mage.Sets/src/mage/cards/t/TuktukScrapper.java
index d536e6eb2c0..82847a75e09 100644
--- a/Mage.Sets/src/mage/cards/t/TuktukScrapper.java
+++ b/Mage.Sets/src/mage/cards/t/TuktukScrapper.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author jeffwadsworth
*/
-public class TuktukScrapper extends CardImpl {
+public final class TuktukScrapper extends CardImpl {
public TuktukScrapper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TuktukTheExplorer.java b/Mage.Sets/src/mage/cards/t/TuktukTheExplorer.java
index 8e7819c96ce..78c64a10ac2 100644
--- a/Mage.Sets/src/mage/cards/t/TuktukTheExplorer.java
+++ b/Mage.Sets/src/mage/cards/t/TuktukTheExplorer.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.TuktukTheReturnedToken;
*
* @author Loki
*/
-public class TuktukTheExplorer extends CardImpl {
+public final class TuktukTheExplorer extends CardImpl {
public TuktukTheExplorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TumbleMagnet.java b/Mage.Sets/src/mage/cards/t/TumbleMagnet.java
index cbc493a8482..febc8df1ca9 100644
--- a/Mage.Sets/src/mage/cards/t/TumbleMagnet.java
+++ b/Mage.Sets/src/mage/cards/t/TumbleMagnet.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class TumbleMagnet extends CardImpl {
+public final class TumbleMagnet extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
static {
diff --git a/Mage.Sets/src/mage/cards/t/Tundra.java b/Mage.Sets/src/mage/cards/t/Tundra.java
index 099a1d0c88e..60266121c1d 100644
--- a/Mage.Sets/src/mage/cards/t/Tundra.java
+++ b/Mage.Sets/src/mage/cards/t/Tundra.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class Tundra extends CardImpl {
+public final class Tundra extends CardImpl {
public Tundra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TundraKavu.java b/Mage.Sets/src/mage/cards/t/TundraKavu.java
index 8805beac816..92e467fc1ee 100644
--- a/Mage.Sets/src/mage/cards/t/TundraKavu.java
+++ b/Mage.Sets/src/mage/cards/t/TundraKavu.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class TundraKavu extends CardImpl {
+public final class TundraKavu extends CardImpl {
public TundraKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TundraWolves.java b/Mage.Sets/src/mage/cards/t/TundraWolves.java
index 13d1ca92f6b..fd1c578c85f 100644
--- a/Mage.Sets/src/mage/cards/t/TundraWolves.java
+++ b/Mage.Sets/src/mage/cards/t/TundraWolves.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TundraWolves extends CardImpl {
+public final class TundraWolves extends CardImpl {
public TundraWolves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/t/Tunnel.java b/Mage.Sets/src/mage/cards/t/Tunnel.java
index 45b912e9d9f..a348c481bf6 100644
--- a/Mage.Sets/src/mage/cards/t/Tunnel.java
+++ b/Mage.Sets/src/mage/cards/t/Tunnel.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class Tunnel extends CardImpl {
+public final class Tunnel extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wall");
diff --git a/Mage.Sets/src/mage/cards/t/TunnelIgnus.java b/Mage.Sets/src/mage/cards/t/TunnelIgnus.java
index a3de7ea2cb7..00ddca684c6 100644
--- a/Mage.Sets/src/mage/cards/t/TunnelIgnus.java
+++ b/Mage.Sets/src/mage/cards/t/TunnelIgnus.java
@@ -51,7 +51,7 @@ import mage.watchers.Watcher;
/**
* @author Loki
*/
-public class TunnelIgnus extends CardImpl {
+public final class TunnelIgnus extends CardImpl {
public TunnelIgnus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TunnelVision.java b/Mage.Sets/src/mage/cards/t/TunnelVision.java
index 0c603e99bef..2238fc55808 100644
--- a/Mage.Sets/src/mage/cards/t/TunnelVision.java
+++ b/Mage.Sets/src/mage/cards/t/TunnelVision.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class TunnelVision extends CardImpl {
+public final class TunnelVision extends CardImpl {
public TunnelVision(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TunnelerWurm.java b/Mage.Sets/src/mage/cards/t/TunnelerWurm.java
index bfa86edbd28..05d7f45dc61 100644
--- a/Mage.Sets/src/mage/cards/t/TunnelerWurm.java
+++ b/Mage.Sets/src/mage/cards/t/TunnelerWurm.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class TunnelerWurm extends CardImpl {
+public final class TunnelerWurm extends CardImpl {
public TunnelerWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TunnelingGeopede.java b/Mage.Sets/src/mage/cards/t/TunnelingGeopede.java
index 6087d8f9c14..8da08cc7b04 100644
--- a/Mage.Sets/src/mage/cards/t/TunnelingGeopede.java
+++ b/Mage.Sets/src/mage/cards/t/TunnelingGeopede.java
@@ -41,7 +41,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class TunnelingGeopede extends CardImpl {
+public final class TunnelingGeopede extends CardImpl {
public TunnelingGeopede(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TurbulentDreams.java b/Mage.Sets/src/mage/cards/t/TurbulentDreams.java
index 9c81ce6b612..d528962c3dd 100644
--- a/Mage.Sets/src/mage/cards/t/TurbulentDreams.java
+++ b/Mage.Sets/src/mage/cards/t/TurbulentDreams.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class TurbulentDreams extends CardImpl {
+public final class TurbulentDreams extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nonland permanents");
diff --git a/Mage.Sets/src/mage/cards/t/TurfWound.java b/Mage.Sets/src/mage/cards/t/TurfWound.java
index 8293992fd64..1a5b56e86ca 100644
--- a/Mage.Sets/src/mage/cards/t/TurfWound.java
+++ b/Mage.Sets/src/mage/cards/t/TurfWound.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class TurfWound extends CardImpl {
+public final class TurfWound extends CardImpl {
public TurfWound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TurnAgainst.java b/Mage.Sets/src/mage/cards/t/TurnAgainst.java
index 28669249c3c..7c8b2af4369 100644
--- a/Mage.Sets/src/mage/cards/t/TurnAgainst.java
+++ b/Mage.Sets/src/mage/cards/t/TurnAgainst.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TurnAgainst extends CardImpl {
+public final class TurnAgainst extends CardImpl {
public TurnAgainst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TurnAside.java b/Mage.Sets/src/mage/cards/t/TurnAside.java
index 9e593601ff3..ee9e7440d5a 100644
--- a/Mage.Sets/src/mage/cards/t/TurnAside.java
+++ b/Mage.Sets/src/mage/cards/t/TurnAside.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
/**
* @author ayratn
*/
-public class TurnAside extends CardImpl {
+public final class TurnAside extends CardImpl {
private final static FilterSpell filter = new FilterSpell("spell that targets a permanent you control");
diff --git a/Mage.Sets/src/mage/cards/t/TurnBurn.java b/Mage.Sets/src/mage/cards/t/TurnBurn.java
index eb89d5ef0a0..2e088af2606 100644
--- a/Mage.Sets/src/mage/cards/t/TurnBurn.java
+++ b/Mage.Sets/src/mage/cards/t/TurnBurn.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class TurnBurn extends SplitCard {
+public final class TurnBurn extends SplitCard {
public TurnBurn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}", "{1}{R}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/t/TurnTheTables.java b/Mage.Sets/src/mage/cards/t/TurnTheTables.java
index b6bbfa7ae0b..6cc8b4e2481 100644
--- a/Mage.Sets/src/mage/cards/t/TurnTheTables.java
+++ b/Mage.Sets/src/mage/cards/t/TurnTheTables.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author LevelX2
*/
-public class TurnTheTables extends CardImpl {
+public final class TurnTheTables extends CardImpl {
public TurnTheTables(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TurnTheTide.java b/Mage.Sets/src/mage/cards/t/TurnTheTide.java
index 4badd841526..c8b5caff942 100644
--- a/Mage.Sets/src/mage/cards/t/TurnTheTide.java
+++ b/Mage.Sets/src/mage/cards/t/TurnTheTide.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class TurnTheTide extends CardImpl {
+public final class TurnTheTide extends CardImpl {
public TurnTheTide (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TurnToDust.java b/Mage.Sets/src/mage/cards/t/TurnToDust.java
index 2debb0e20c7..3c28eb5a89e 100644
--- a/Mage.Sets/src/mage/cards/t/TurnToDust.java
+++ b/Mage.Sets/src/mage/cards/t/TurnToDust.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class TurnToDust extends CardImpl {
+public final class TurnToDust extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Equipment");
diff --git a/Mage.Sets/src/mage/cards/t/TurnToFrog.java b/Mage.Sets/src/mage/cards/t/TurnToFrog.java
index 75f967d8951..224cd52c255 100644
--- a/Mage.Sets/src/mage/cards/t/TurnToFrog.java
+++ b/Mage.Sets/src/mage/cards/t/TurnToFrog.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class TurnToFrog extends CardImpl {
+public final class TurnToFrog extends CardImpl {
public TurnToFrog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TurnToMist.java b/Mage.Sets/src/mage/cards/t/TurnToMist.java
index e60be75549a..383869d9c0d 100644
--- a/Mage.Sets/src/mage/cards/t/TurnToMist.java
+++ b/Mage.Sets/src/mage/cards/t/TurnToMist.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TurnToMist extends CardImpl {
+public final class TurnToMist extends CardImpl {
public TurnToMist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/t/TurnToSlag.java b/Mage.Sets/src/mage/cards/t/TurnToSlag.java
index ed122abdb8d..5074c82be41 100644
--- a/Mage.Sets/src/mage/cards/t/TurnToSlag.java
+++ b/Mage.Sets/src/mage/cards/t/TurnToSlag.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class TurnToSlag extends CardImpl {
+public final class TurnToSlag extends CardImpl {
public TurnToSlag (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/Turnabout.java b/Mage.Sets/src/mage/cards/t/Turnabout.java
index 17bc7babdc8..e45f56ee537 100644
--- a/Mage.Sets/src/mage/cards/t/Turnabout.java
+++ b/Mage.Sets/src/mage/cards/t/Turnabout.java
@@ -51,7 +51,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class Turnabout extends CardImpl {
+public final class Turnabout extends CardImpl {
public Turnabout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TurntimberBasilisk.java b/Mage.Sets/src/mage/cards/t/TurntimberBasilisk.java
index 0a48b2df319..fd5e02b8ccc 100644
--- a/Mage.Sets/src/mage/cards/t/TurntimberBasilisk.java
+++ b/Mage.Sets/src/mage/cards/t/TurntimberBasilisk.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TurntimberBasilisk extends CardImpl {
+public final class TurntimberBasilisk extends CardImpl {
public TurntimberBasilisk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TurntimberGrove.java b/Mage.Sets/src/mage/cards/t/TurntimberGrove.java
index d298db086e9..b76ffdf2b55 100644
--- a/Mage.Sets/src/mage/cards/t/TurntimberGrove.java
+++ b/Mage.Sets/src/mage/cards/t/TurntimberGrove.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class TurntimberGrove extends CardImpl {
+public final class TurntimberGrove extends CardImpl {
public TurntimberGrove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/t/TurntimberRanger.java b/Mage.Sets/src/mage/cards/t/TurntimberRanger.java
index 7f6a8d7821b..294fb5e849e 100644
--- a/Mage.Sets/src/mage/cards/t/TurntimberRanger.java
+++ b/Mage.Sets/src/mage/cards/t/TurntimberRanger.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.WolfToken;
*
* @author North
*/
-public class TurntimberRanger extends CardImpl {
+public final class TurntimberRanger extends CardImpl {
public TurntimberRanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TurtleshellChangeling.java b/Mage.Sets/src/mage/cards/t/TurtleshellChangeling.java
index 82cb93808f2..3efa293d047 100644
--- a/Mage.Sets/src/mage/cards/t/TurtleshellChangeling.java
+++ b/Mage.Sets/src/mage/cards/t/TurtleshellChangeling.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class TurtleshellChangeling extends CardImpl {
+public final class TurtleshellChangeling extends CardImpl {
public TurtleshellChangeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TuskedColossodon.java b/Mage.Sets/src/mage/cards/t/TuskedColossodon.java
index 8a9890e92c5..917d501bc2a 100644
--- a/Mage.Sets/src/mage/cards/t/TuskedColossodon.java
+++ b/Mage.Sets/src/mage/cards/t/TuskedColossodon.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class TuskedColossodon extends CardImpl {
+public final class TuskedColossodon extends CardImpl {
public TuskedColossodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TuskguardCaptain.java b/Mage.Sets/src/mage/cards/t/TuskguardCaptain.java
index d7ae88a911e..d8fcce64230 100644
--- a/Mage.Sets/src/mage/cards/t/TuskguardCaptain.java
+++ b/Mage.Sets/src/mage/cards/t/TuskguardCaptain.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author LevelX2
*/
-public class TuskguardCaptain extends CardImpl {
+public final class TuskguardCaptain extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/t/Twiddle.java b/Mage.Sets/src/mage/cards/t/Twiddle.java
index 960e787d8cb..b4a99bc911f 100644
--- a/Mage.Sets/src/mage/cards/t/Twiddle.java
+++ b/Mage.Sets/src/mage/cards/t/Twiddle.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author anonymous
*/
-public class Twiddle extends CardImpl {
+public final class Twiddle extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/t/Twigwalker.java b/Mage.Sets/src/mage/cards/t/Twigwalker.java
index 946821a20e4..4f1f18fe58d 100644
--- a/Mage.Sets/src/mage/cards/t/Twigwalker.java
+++ b/Mage.Sets/src/mage/cards/t/Twigwalker.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class Twigwalker extends CardImpl {
+public final class Twigwalker extends CardImpl {
public Twigwalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TwilekSeductress.java b/Mage.Sets/src/mage/cards/t/TwilekSeductress.java
index 279fd2cfd32..f42a77f3be0 100644
--- a/Mage.Sets/src/mage/cards/t/TwilekSeductress.java
+++ b/Mage.Sets/src/mage/cards/t/TwilekSeductress.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class TwilekSeductress extends CardImpl {
+public final class TwilekSeductress extends CardImpl {
public TwilekSeductress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TwilightDrover.java b/Mage.Sets/src/mage/cards/t/TwilightDrover.java
index 27981436b45..d0d50e092b4 100644
--- a/Mage.Sets/src/mage/cards/t/TwilightDrover.java
+++ b/Mage.Sets/src/mage/cards/t/TwilightDrover.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author emerald000
*/
-public class TwilightDrover extends CardImpl {
+public final class TwilightDrover extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature token");
diff --git a/Mage.Sets/src/mage/cards/t/TwilightMire.java b/Mage.Sets/src/mage/cards/t/TwilightMire.java
index ac5ee4603c7..2488114608b 100644
--- a/Mage.Sets/src/mage/cards/t/TwilightMire.java
+++ b/Mage.Sets/src/mage/cards/t/TwilightMire.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class TwilightMire extends CardImpl {
+public final class TwilightMire extends CardImpl {
public TwilightMire (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/t/TwilightProphet.java b/Mage.Sets/src/mage/cards/t/TwilightProphet.java
index 4183fe7d7ad..0d73ef559b4 100644
--- a/Mage.Sets/src/mage/cards/t/TwilightProphet.java
+++ b/Mage.Sets/src/mage/cards/t/TwilightProphet.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class TwilightProphet extends CardImpl {
+public final class TwilightProphet extends CardImpl {
public TwilightProphet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TwilightShepherd.java b/Mage.Sets/src/mage/cards/t/TwilightShepherd.java
index fbdcaf79659..6f824ac5039 100644
--- a/Mage.Sets/src/mage/cards/t/TwilightShepherd.java
+++ b/Mage.Sets/src/mage/cards/t/TwilightShepherd.java
@@ -55,7 +55,7 @@ import mage.watchers.common.CardsPutIntoGraveyardWatcher;
* @author jeffwadsworth
*
*/
-public class TwilightShepherd extends CardImpl {
+public final class TwilightShepherd extends CardImpl {
public TwilightShepherd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/t/TwilightsCall.java b/Mage.Sets/src/mage/cards/t/TwilightsCall.java
index b2e22929ad1..60b55fd1b14 100644
--- a/Mage.Sets/src/mage/cards/t/TwilightsCall.java
+++ b/Mage.Sets/src/mage/cards/t/TwilightsCall.java
@@ -47,7 +47,7 @@ import mage.players.Player;
* @author LoneFox
*
*/
-public class TwilightsCall extends CardImpl {
+public final class TwilightsCall extends CardImpl {
public TwilightsCall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TwinBolt.java b/Mage.Sets/src/mage/cards/t/TwinBolt.java
index cfa3760ec22..96effd6ce41 100644
--- a/Mage.Sets/src/mage/cards/t/TwinBolt.java
+++ b/Mage.Sets/src/mage/cards/t/TwinBolt.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author LevelX2
*/
-public class TwinBolt extends CardImpl {
+public final class TwinBolt extends CardImpl {
public TwinBolt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TwinbladeSlasher.java b/Mage.Sets/src/mage/cards/t/TwinbladeSlasher.java
index ff9e6517c02..e30f1c3d99c 100644
--- a/Mage.Sets/src/mage/cards/t/TwinbladeSlasher.java
+++ b/Mage.Sets/src/mage/cards/t/TwinbladeSlasher.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class TwinbladeSlasher extends CardImpl {
+public final class TwinbladeSlasher extends CardImpl {
public TwinbladeSlasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/t/Twincast.java b/Mage.Sets/src/mage/cards/t/Twincast.java
index 556d9c25787..c514234b45a 100644
--- a/Mage.Sets/src/mage/cards/t/Twincast.java
+++ b/Mage.Sets/src/mage/cards/t/Twincast.java
@@ -39,7 +39,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class Twincast extends CardImpl {
+public final class Twincast extends CardImpl {
public Twincast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/t/Twinflame.java b/Mage.Sets/src/mage/cards/t/Twinflame.java
index 17bd0ce6518..130e74ac868 100644
--- a/Mage.Sets/src/mage/cards/t/Twinflame.java
+++ b/Mage.Sets/src/mage/cards/t/Twinflame.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class Twinflame extends CardImpl {
+public final class Twinflame extends CardImpl {
public Twinflame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TwinningGlass.java b/Mage.Sets/src/mage/cards/t/TwinningGlass.java
index 687ecc7ab79..d7ddceb7eb2 100644
--- a/Mage.Sets/src/mage/cards/t/TwinningGlass.java
+++ b/Mage.Sets/src/mage/cards/t/TwinningGlass.java
@@ -29,6 +29,7 @@ package mage.cards.t;
import java.util.List;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
@@ -55,7 +56,7 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author jeffwadsworth
*/
-public class TwinningGlass extends CardImpl {
+public final class TwinningGlass extends CardImpl {
public TwinningGlass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
@@ -121,7 +122,7 @@ class TwinningGlassEffect extends OneShotEffect {
Card chosenCard = game.getCard(target.getFirstTarget());
if (chosenCard != null) {
if (controller.chooseUse(outcome, "Cast the card without paying mana cost?", source, game)) {
- return controller.cast(chosenCard.getSpellAbility(), game, true);
+ return controller.cast(chosenCard.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
diff --git a/Mage.Sets/src/mage/cards/t/TwinsOfMaurerEstate.java b/Mage.Sets/src/mage/cards/t/TwinsOfMaurerEstate.java
index b5676b5dc9b..e04e6b503c5 100644
--- a/Mage.Sets/src/mage/cards/t/TwinsOfMaurerEstate.java
+++ b/Mage.Sets/src/mage/cards/t/TwinsOfMaurerEstate.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class TwinsOfMaurerEstate extends CardImpl {
+public final class TwinsOfMaurerEstate extends CardImpl {
public TwinsOfMaurerEstate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Twinstrike.java b/Mage.Sets/src/mage/cards/t/Twinstrike.java
index 208f6e174e6..7ecf643ed48 100644
--- a/Mage.Sets/src/mage/cards/t/Twinstrike.java
+++ b/Mage.Sets/src/mage/cards/t/Twinstrike.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Wehk
*/
-public class Twinstrike extends CardImpl {
+public final class Twinstrike extends CardImpl {
public Twinstrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TwistAllegiance.java b/Mage.Sets/src/mage/cards/t/TwistAllegiance.java
index 15b24444f8c..0ca55bce71f 100644
--- a/Mage.Sets/src/mage/cards/t/TwistAllegiance.java
+++ b/Mage.Sets/src/mage/cards/t/TwistAllegiance.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class TwistAllegiance extends CardImpl {
+public final class TwistAllegiance extends CardImpl {
public TwistAllegiance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TwistedAbomination.java b/Mage.Sets/src/mage/cards/t/TwistedAbomination.java
index b92a422eb97..08701f06389 100644
--- a/Mage.Sets/src/mage/cards/t/TwistedAbomination.java
+++ b/Mage.Sets/src/mage/cards/t/TwistedAbomination.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class TwistedAbomination extends CardImpl {
+public final class TwistedAbomination extends CardImpl {
public TwistedAbomination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TwistedExperiment.java b/Mage.Sets/src/mage/cards/t/TwistedExperiment.java
index fc8f6544081..aeeea6e7400 100644
--- a/Mage.Sets/src/mage/cards/t/TwistedExperiment.java
+++ b/Mage.Sets/src/mage/cards/t/TwistedExperiment.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class TwistedExperiment extends CardImpl {
+public final class TwistedExperiment extends CardImpl {
public TwistedExperiment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TwistedImage.java b/Mage.Sets/src/mage/cards/t/TwistedImage.java
index 9bc92cbf647..a40b3a6d359 100644
--- a/Mage.Sets/src/mage/cards/t/TwistedImage.java
+++ b/Mage.Sets/src/mage/cards/t/TwistedImage.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author ayratn
*/
-public class TwistedImage extends CardImpl {
+public final class TwistedImage extends CardImpl {
public TwistedImage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/t/TwistedJustice.java b/Mage.Sets/src/mage/cards/t/TwistedJustice.java
index 236cbe2021f..47588574792 100644
--- a/Mage.Sets/src/mage/cards/t/TwistedJustice.java
+++ b/Mage.Sets/src/mage/cards/t/TwistedJustice.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class TwistedJustice extends CardImpl {
+public final class TwistedJustice extends CardImpl {
public TwistedJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Twitch.java b/Mage.Sets/src/mage/cards/t/Twitch.java
index 38104df41a6..ea115f972f1 100644
--- a/Mage.Sets/src/mage/cards/t/Twitch.java
+++ b/Mage.Sets/src/mage/cards/t/Twitch.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class Twitch extends CardImpl {
+public final class Twitch extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/t/TwoHeadedCerberus.java b/Mage.Sets/src/mage/cards/t/TwoHeadedCerberus.java
index a79854eb858..33dd683b7c2 100644
--- a/Mage.Sets/src/mage/cards/t/TwoHeadedCerberus.java
+++ b/Mage.Sets/src/mage/cards/t/TwoHeadedCerberus.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class TwoHeadedCerberus extends CardImpl {
+public final class TwoHeadedCerberus extends CardImpl {
public TwoHeadedCerberus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TwoHeadedDragon.java b/Mage.Sets/src/mage/cards/t/TwoHeadedDragon.java
index 53828c92d99..ed51b35b5a3 100644
--- a/Mage.Sets/src/mage/cards/t/TwoHeadedDragon.java
+++ b/Mage.Sets/src/mage/cards/t/TwoHeadedDragon.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class TwoHeadedDragon extends CardImpl {
+public final class TwoHeadedDragon extends CardImpl {
public TwoHeadedDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TwoHeadedGiant.java b/Mage.Sets/src/mage/cards/t/TwoHeadedGiant.java
index 1e9bdd16e29..073fd0699fb 100644
--- a/Mage.Sets/src/mage/cards/t/TwoHeadedGiant.java
+++ b/Mage.Sets/src/mage/cards/t/TwoHeadedGiant.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class TwoHeadedGiant extends CardImpl {
+public final class TwoHeadedGiant extends CardImpl {
public TwoHeadedGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TwoHeadedGiantOfForiys.java b/Mage.Sets/src/mage/cards/t/TwoHeadedGiantOfForiys.java
index b616779a7ed..688d1596a46 100644
--- a/Mage.Sets/src/mage/cards/t/TwoHeadedGiantOfForiys.java
+++ b/Mage.Sets/src/mage/cards/t/TwoHeadedGiantOfForiys.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class TwoHeadedGiantOfForiys extends CardImpl {
+public final class TwoHeadedGiantOfForiys extends CardImpl {
public TwoHeadedGiantOfForiys(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TwoHeadedSliver.java b/Mage.Sets/src/mage/cards/t/TwoHeadedSliver.java
index d2bf0bbdeaf..3ef3908c191 100644
--- a/Mage.Sets/src/mage/cards/t/TwoHeadedSliver.java
+++ b/Mage.Sets/src/mage/cards/t/TwoHeadedSliver.java
@@ -45,7 +45,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class TwoHeadedSliver extends CardImpl {
+public final class TwoHeadedSliver extends CardImpl {
public TwoHeadedSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TymaretTheMurderKing.java b/Mage.Sets/src/mage/cards/t/TymaretTheMurderKing.java
index 630a3f46a5e..c4d8fdd8664 100644
--- a/Mage.Sets/src/mage/cards/t/TymaretTheMurderKing.java
+++ b/Mage.Sets/src/mage/cards/t/TymaretTheMurderKing.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class TymaretTheMurderKing extends CardImpl {
+public final class TymaretTheMurderKing extends CardImpl {
public TymaretTheMurderKing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java b/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java
index 443428f24ec..49774758313 100644
--- a/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java
+++ b/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java
@@ -51,7 +51,7 @@ import java.util.*;
*
* @author LevelX2
*/
-public class TymnaTheWeaver extends CardImpl {
+public final class TymnaTheWeaver extends CardImpl {
public TymnaTheWeaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TyphoidRats.java b/Mage.Sets/src/mage/cards/t/TyphoidRats.java
index 9b8497ed3f0..839f906a435 100644
--- a/Mage.Sets/src/mage/cards/t/TyphoidRats.java
+++ b/Mage.Sets/src/mage/cards/t/TyphoidRats.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class TyphoidRats extends CardImpl {
+public final class TyphoidRats extends CardImpl {
public TyphoidRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/t/Typhoon.java b/Mage.Sets/src/mage/cards/t/Typhoon.java
index 4dea13bd3ff..3be495410b6 100644
--- a/Mage.Sets/src/mage/cards/t/Typhoon.java
+++ b/Mage.Sets/src/mage/cards/t/Typhoon.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class Typhoon extends CardImpl {
+public final class Typhoon extends CardImpl {
public Typhoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/Tyrannize.java b/Mage.Sets/src/mage/cards/t/Tyrannize.java
index f174b180e3c..f34c852b982 100644
--- a/Mage.Sets/src/mage/cards/t/Tyrannize.java
+++ b/Mage.Sets/src/mage/cards/t/Tyrannize.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author jeffwadsworth using code from LevelX
*/
-public class Tyrannize extends CardImpl {
+public final class Tyrannize extends CardImpl {
private static final String rule = "Pay 7 life? (otherwise discard your hand)";
diff --git a/Mage.Sets/src/mage/cards/t/TyrantOfDiscord.java b/Mage.Sets/src/mage/cards/t/TyrantOfDiscord.java
index f6982524876..e9fc9157a45 100644
--- a/Mage.Sets/src/mage/cards/t/TyrantOfDiscord.java
+++ b/Mage.Sets/src/mage/cards/t/TyrantOfDiscord.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetOpponent;
/**
* @author noxx
*/
-public class TyrantOfDiscord extends CardImpl {
+public final class TyrantOfDiscord extends CardImpl {
public TyrantOfDiscord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TyrantOfValakut.java b/Mage.Sets/src/mage/cards/t/TyrantOfValakut.java
index 8b429fe8dc6..4357a51a3e1 100644
--- a/Mage.Sets/src/mage/cards/t/TyrantOfValakut.java
+++ b/Mage.Sets/src/mage/cards/t/TyrantOfValakut.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class TyrantOfValakut extends CardImpl {
+public final class TyrantOfValakut extends CardImpl {
public TyrantOfValakut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TyrantsChoice.java b/Mage.Sets/src/mage/cards/t/TyrantsChoice.java
index 92020df34e7..27c06a6ce54 100644
--- a/Mage.Sets/src/mage/cards/t/TyrantsChoice.java
+++ b/Mage.Sets/src/mage/cards/t/TyrantsChoice.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class TyrantsChoice extends CardImpl {
+public final class TyrantsChoice extends CardImpl {
public TyrantsChoice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TyrantsFamiliar.java b/Mage.Sets/src/mage/cards/t/TyrantsFamiliar.java
index ef98077cfce..55c81b43eb9 100644
--- a/Mage.Sets/src/mage/cards/t/TyrantsFamiliar.java
+++ b/Mage.Sets/src/mage/cards/t/TyrantsFamiliar.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author emerald000
*/
-public class TyrantsFamiliar extends CardImpl {
+public final class TyrantsFamiliar extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature defending player controls");
diff --git a/Mage.Sets/src/mage/cards/t/TyrantsMachine.java b/Mage.Sets/src/mage/cards/t/TyrantsMachine.java
index fe131316c7b..907ba3e2262 100644
--- a/Mage.Sets/src/mage/cards/t/TyrantsMachine.java
+++ b/Mage.Sets/src/mage/cards/t/TyrantsMachine.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class TyrantsMachine extends CardImpl {
+public final class TyrantsMachine extends CardImpl {
public TyrantsMachine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/t/Tyrranax.java b/Mage.Sets/src/mage/cards/t/Tyrranax.java
index ed12ed6ac80..9d7f6af963d 100644
--- a/Mage.Sets/src/mage/cards/t/Tyrranax.java
+++ b/Mage.Sets/src/mage/cards/t/Tyrranax.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class Tyrranax extends CardImpl {
+public final class Tyrranax extends CardImpl {
public Tyrranax(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UbaMask.java b/Mage.Sets/src/mage/cards/u/UbaMask.java
index 7581d6bb08c..7bcdf272353 100644
--- a/Mage.Sets/src/mage/cards/u/UbaMask.java
+++ b/Mage.Sets/src/mage/cards/u/UbaMask.java
@@ -48,7 +48,7 @@ import java.util.*;
*
* @author LevelX2
*/
-public class UbaMask extends CardImpl {
+public final class UbaMask extends CardImpl {
public UbaMask(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/u/UbulSarGatekeepers.java b/Mage.Sets/src/mage/cards/u/UbulSarGatekeepers.java
index e0ff6926942..09fe4643d48 100644
--- a/Mage.Sets/src/mage/cards/u/UbulSarGatekeepers.java
+++ b/Mage.Sets/src/mage/cards/u/UbulSarGatekeepers.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class UbulSarGatekeepers extends CardImpl {
+public final class UbulSarGatekeepers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
private static final FilterCreaturePermanent targetFilter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/u/UginTheSpiritDragon.java b/Mage.Sets/src/mage/cards/u/UginTheSpiritDragon.java
index f716266b9cb..69ff27e96f6 100644
--- a/Mage.Sets/src/mage/cards/u/UginTheSpiritDragon.java
+++ b/Mage.Sets/src/mage/cards/u/UginTheSpiritDragon.java
@@ -61,7 +61,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class UginTheSpiritDragon extends CardImpl {
+public final class UginTheSpiritDragon extends CardImpl {
public UginTheSpiritDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{8}");
diff --git a/Mage.Sets/src/mage/cards/u/UginsConstruct.java b/Mage.Sets/src/mage/cards/u/UginsConstruct.java
index a6cfd556c26..c73370d7134 100644
--- a/Mage.Sets/src/mage/cards/u/UginsConstruct.java
+++ b/Mage.Sets/src/mage/cards/u/UginsConstruct.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
*
* @author LevelX2
*/
-public class UginsConstruct extends CardImpl {
+public final class UginsConstruct extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("permanent that's one or more colors");
diff --git a/Mage.Sets/src/mage/cards/u/UginsInsight.java b/Mage.Sets/src/mage/cards/u/UginsInsight.java
index d28af57196f..9ce1156b239 100644
--- a/Mage.Sets/src/mage/cards/u/UginsInsight.java
+++ b/Mage.Sets/src/mage/cards/u/UginsInsight.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class UginsInsight extends CardImpl {
+public final class UginsInsight extends CardImpl {
public UginsInsight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UginsNexus.java b/Mage.Sets/src/mage/cards/u/UginsNexus.java
index a1d4c8954ab..8d49b912c1f 100644
--- a/Mage.Sets/src/mage/cards/u/UginsNexus.java
+++ b/Mage.Sets/src/mage/cards/u/UginsNexus.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class UginsNexus extends CardImpl {
+public final class UginsNexus extends CardImpl {
public UginsNexus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/u/UgnaughtScrapWorker.java b/Mage.Sets/src/mage/cards/u/UgnaughtScrapWorker.java
index 39ece83b9cf..d188a850b29 100644
--- a/Mage.Sets/src/mage/cards/u/UgnaughtScrapWorker.java
+++ b/Mage.Sets/src/mage/cards/u/UgnaughtScrapWorker.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Styxo
*/
-public class UgnaughtScrapWorker extends CardImpl {
+public final class UgnaughtScrapWorker extends CardImpl {
private static final FilterCard filter = new FilterCard("Droid spells");
diff --git a/Mage.Sets/src/mage/cards/u/UktabiDrake.java b/Mage.Sets/src/mage/cards/u/UktabiDrake.java
index 8231e389c10..7a131a8db01 100644
--- a/Mage.Sets/src/mage/cards/u/UktabiDrake.java
+++ b/Mage.Sets/src/mage/cards/u/UktabiDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class UktabiDrake extends CardImpl {
+public final class UktabiDrake extends CardImpl {
public UktabiDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UktabiEfreet.java b/Mage.Sets/src/mage/cards/u/UktabiEfreet.java
index fa741a4401f..49885727626 100644
--- a/Mage.Sets/src/mage/cards/u/UktabiEfreet.java
+++ b/Mage.Sets/src/mage/cards/u/UktabiEfreet.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class UktabiEfreet extends CardImpl {
+public final class UktabiEfreet extends CardImpl {
public UktabiEfreet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UktabiFaerie.java b/Mage.Sets/src/mage/cards/u/UktabiFaerie.java
index 11d2308db26..1c84f2f1701 100644
--- a/Mage.Sets/src/mage/cards/u/UktabiFaerie.java
+++ b/Mage.Sets/src/mage/cards/u/UktabiFaerie.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author TheElk801
*/
-public class UktabiFaerie extends CardImpl {
+public final class UktabiFaerie extends CardImpl {
public UktabiFaerie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UktabiOrangutan.java b/Mage.Sets/src/mage/cards/u/UktabiOrangutan.java
index 1e0b583b43e..20e841bee40 100644
--- a/Mage.Sets/src/mage/cards/u/UktabiOrangutan.java
+++ b/Mage.Sets/src/mage/cards/u/UktabiOrangutan.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author jeffwadsworth
*/
-public class UktabiOrangutan extends CardImpl {
+public final class UktabiOrangutan extends CardImpl {
public UktabiOrangutan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UktabiWildcats.java b/Mage.Sets/src/mage/cards/u/UktabiWildcats.java
index bcda8883663..6a410faa742 100644
--- a/Mage.Sets/src/mage/cards/u/UktabiWildcats.java
+++ b/Mage.Sets/src/mage/cards/u/UktabiWildcats.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Quercitron
*/
-public class UktabiWildcats extends CardImpl {
+public final class UktabiWildcats extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forests you control");
private static final FilterControlledPermanent sacrificeFilter = new FilterControlledPermanent("a Forest");
diff --git a/Mage.Sets/src/mage/cards/u/UkudCobra.java b/Mage.Sets/src/mage/cards/u/UkudCobra.java
index a7bf5b2d804..b4901ded9ad 100644
--- a/Mage.Sets/src/mage/cards/u/UkudCobra.java
+++ b/Mage.Sets/src/mage/cards/u/UkudCobra.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class UkudCobra extends CardImpl {
+public final class UkudCobra extends CardImpl {
public UkudCobra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UlamogTheCeaselessHunger.java b/Mage.Sets/src/mage/cards/u/UlamogTheCeaselessHunger.java
index d6e75a5b58e..0ff5ec5acf2 100644
--- a/Mage.Sets/src/mage/cards/u/UlamogTheCeaselessHunger.java
+++ b/Mage.Sets/src/mage/cards/u/UlamogTheCeaselessHunger.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class UlamogTheCeaselessHunger extends CardImpl {
+public final class UlamogTheCeaselessHunger extends CardImpl {
public UlamogTheCeaselessHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{10}");
diff --git a/Mage.Sets/src/mage/cards/u/UlamogTheInfiniteGyre.java b/Mage.Sets/src/mage/cards/u/UlamogTheInfiniteGyre.java
index 4cabb45ba1e..e760c358e59 100644
--- a/Mage.Sets/src/mage/cards/u/UlamogTheInfiniteGyre.java
+++ b/Mage.Sets/src/mage/cards/u/UlamogTheInfiniteGyre.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author maurer.it_at_gmail.com
*/
-public class UlamogTheInfiniteGyre extends CardImpl {
+public final class UlamogTheInfiniteGyre extends CardImpl {
public UlamogTheInfiniteGyre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{11}");
diff --git a/Mage.Sets/src/mage/cards/u/UlamogsCrusher.java b/Mage.Sets/src/mage/cards/u/UlamogsCrusher.java
index 2630eacf13a..93e8103402d 100644
--- a/Mage.Sets/src/mage/cards/u/UlamogsCrusher.java
+++ b/Mage.Sets/src/mage/cards/u/UlamogsCrusher.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class UlamogsCrusher extends CardImpl {
+public final class UlamogsCrusher extends CardImpl {
public UlamogsCrusher (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}");
diff --git a/Mage.Sets/src/mage/cards/u/UlamogsDespoiler.java b/Mage.Sets/src/mage/cards/u/UlamogsDespoiler.java
index 6ceab0409e4..37dc37820f2 100644
--- a/Mage.Sets/src/mage/cards/u/UlamogsDespoiler.java
+++ b/Mage.Sets/src/mage/cards/u/UlamogsDespoiler.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCardInExile;
*
* @author LevelX2
*/
-public class UlamogsDespoiler extends CardImpl {
+public final class UlamogsDespoiler extends CardImpl {
public UlamogsDespoiler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/u/UlamogsNullifier.java b/Mage.Sets/src/mage/cards/u/UlamogsNullifier.java
index accf3183fd5..50de26eb03d 100644
--- a/Mage.Sets/src/mage/cards/u/UlamogsNullifier.java
+++ b/Mage.Sets/src/mage/cards/u/UlamogsNullifier.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCardInExile;
*
* @author fireshoes
*/
-public class UlamogsNullifier extends CardImpl {
+public final class UlamogsNullifier extends CardImpl {
public UlamogsNullifier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UlamogsReclaimer.java b/Mage.Sets/src/mage/cards/u/UlamogsReclaimer.java
index f6c63e38e05..24c13149c75 100644
--- a/Mage.Sets/src/mage/cards/u/UlamogsReclaimer.java
+++ b/Mage.Sets/src/mage/cards/u/UlamogsReclaimer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class UlamogsReclaimer extends CardImpl {
+public final class UlamogsReclaimer extends CardImpl {
public UlamogsReclaimer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UlashtTheHateSeed.java b/Mage.Sets/src/mage/cards/u/UlashtTheHateSeed.java
index 57c30404a73..64196810bc5 100644
--- a/Mage.Sets/src/mage/cards/u/UlashtTheHateSeed.java
+++ b/Mage.Sets/src/mage/cards/u/UlashtTheHateSeed.java
@@ -61,7 +61,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class UlashtTheHateSeed extends CardImpl {
+public final class UlashtTheHateSeed extends CardImpl {
public UlashtTheHateSeed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/Ulcerate.java b/Mage.Sets/src/mage/cards/u/Ulcerate.java
index 5297c54f581..64561e9dccd 100644
--- a/Mage.Sets/src/mage/cards/u/Ulcerate.java
+++ b/Mage.Sets/src/mage/cards/u/Ulcerate.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class Ulcerate extends CardImpl {
+public final class Ulcerate extends CardImpl {
public Ulcerate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UlrichOfTheKrallenhorde.java b/Mage.Sets/src/mage/cards/u/UlrichOfTheKrallenhorde.java
index ceb5d59f368..999327b9b10 100644
--- a/Mage.Sets/src/mage/cards/u/UlrichOfTheKrallenhorde.java
+++ b/Mage.Sets/src/mage/cards/u/UlrichOfTheKrallenhorde.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class UlrichOfTheKrallenhorde extends CardImpl {
+public final class UlrichOfTheKrallenhorde extends CardImpl {
public UlrichOfTheKrallenhorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UlrichUncontestedAlpha.java b/Mage.Sets/src/mage/cards/u/UlrichUncontestedAlpha.java
index fe2e0ac1800..51b03895b48 100644
--- a/Mage.Sets/src/mage/cards/u/UlrichUncontestedAlpha.java
+++ b/Mage.Sets/src/mage/cards/u/UlrichUncontestedAlpha.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class UlrichUncontestedAlpha extends CardImpl {
+public final class UlrichUncontestedAlpha extends CardImpl {
public UlrichUncontestedAlpha(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/u/UlrichsKindred.java b/Mage.Sets/src/mage/cards/u/UlrichsKindred.java
index 3eee0040b42..ae6ecf5cd14 100644
--- a/Mage.Sets/src/mage/cards/u/UlrichsKindred.java
+++ b/Mage.Sets/src/mage/cards/u/UlrichsKindred.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class UlrichsKindred extends CardImpl {
+public final class UlrichsKindred extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking Wolf or Werewolf");
diff --git a/Mage.Sets/src/mage/cards/u/UltimatePrice.java b/Mage.Sets/src/mage/cards/u/UltimatePrice.java
index 7e988e2139c..e1462932c9b 100644
--- a/Mage.Sets/src/mage/cards/u/UltimatePrice.java
+++ b/Mage.Sets/src/mage/cards/u/UltimatePrice.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class UltimatePrice extends CardImpl {
+public final class UltimatePrice extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("monocolored creature");
diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldAbomination.java b/Mage.Sets/src/mage/cards/u/UlvenwaldAbomination.java
index 0a63d332bfe..dfc9d5f4336 100644
--- a/Mage.Sets/src/mage/cards/u/UlvenwaldAbomination.java
+++ b/Mage.Sets/src/mage/cards/u/UlvenwaldAbomination.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class UlvenwaldAbomination extends CardImpl {
+public final class UlvenwaldAbomination extends CardImpl {
public UlvenwaldAbomination(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldBear.java b/Mage.Sets/src/mage/cards/u/UlvenwaldBear.java
index 711fd79afde..993c7a7bac2 100644
--- a/Mage.Sets/src/mage/cards/u/UlvenwaldBear.java
+++ b/Mage.Sets/src/mage/cards/u/UlvenwaldBear.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class UlvenwaldBear extends CardImpl {
+public final class UlvenwaldBear extends CardImpl {
public UlvenwaldBear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldCaptive.java b/Mage.Sets/src/mage/cards/u/UlvenwaldCaptive.java
index 0cf231ee9d5..79b7b821c44 100644
--- a/Mage.Sets/src/mage/cards/u/UlvenwaldCaptive.java
+++ b/Mage.Sets/src/mage/cards/u/UlvenwaldCaptive.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class UlvenwaldCaptive extends CardImpl {
+public final class UlvenwaldCaptive extends CardImpl {
public UlvenwaldCaptive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldHydra.java b/Mage.Sets/src/mage/cards/u/UlvenwaldHydra.java
index d3b9abe424a..155d32bdc0a 100644
--- a/Mage.Sets/src/mage/cards/u/UlvenwaldHydra.java
+++ b/Mage.Sets/src/mage/cards/u/UlvenwaldHydra.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class UlvenwaldHydra extends CardImpl {
+public final class UlvenwaldHydra extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("lands you control");
diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldMysteries.java b/Mage.Sets/src/mage/cards/u/UlvenwaldMysteries.java
index 23cd488c182..ae0b8fcaeeb 100644
--- a/Mage.Sets/src/mage/cards/u/UlvenwaldMysteries.java
+++ b/Mage.Sets/src/mage/cards/u/UlvenwaldMysteries.java
@@ -53,7 +53,7 @@ import mage.game.permanent.token.HumanSoldierToken;
*
* @author fireshoes
*/
-public class UlvenwaldMysteries extends CardImpl {
+public final class UlvenwaldMysteries extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature you control");
private static final FilterControlledPermanent filterClue = new FilterControlledPermanent("a Clue");
diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldMystics.java b/Mage.Sets/src/mage/cards/u/UlvenwaldMystics.java
index 09e7612a376..64993943f01 100644
--- a/Mage.Sets/src/mage/cards/u/UlvenwaldMystics.java
+++ b/Mage.Sets/src/mage/cards/u/UlvenwaldMystics.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class UlvenwaldMystics extends CardImpl {
+public final class UlvenwaldMystics extends CardImpl {
public UlvenwaldMystics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldObserver.java b/Mage.Sets/src/mage/cards/u/UlvenwaldObserver.java
index 5f9a619573c..7df84ffeef8 100644
--- a/Mage.Sets/src/mage/cards/u/UlvenwaldObserver.java
+++ b/Mage.Sets/src/mage/cards/u/UlvenwaldObserver.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class UlvenwaldObserver extends CardImpl {
+public final class UlvenwaldObserver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control with toughness 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldPrimordials.java b/Mage.Sets/src/mage/cards/u/UlvenwaldPrimordials.java
index 617d573676e..653dbf0f985 100644
--- a/Mage.Sets/src/mage/cards/u/UlvenwaldPrimordials.java
+++ b/Mage.Sets/src/mage/cards/u/UlvenwaldPrimordials.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
/**
* @author nantuko
*/
-public class UlvenwaldPrimordials extends CardImpl {
+public final class UlvenwaldPrimordials extends CardImpl {
public UlvenwaldPrimordials(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldTracker.java b/Mage.Sets/src/mage/cards/u/UlvenwaldTracker.java
index a2609221481..0fc80cf2fbd 100644
--- a/Mage.Sets/src/mage/cards/u/UlvenwaldTracker.java
+++ b/Mage.Sets/src/mage/cards/u/UlvenwaldTracker.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class UlvenwaldTracker extends CardImpl {
+public final class UlvenwaldTracker extends CardImpl {
public UlvenwaldTracker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UmaraEntangler.java b/Mage.Sets/src/mage/cards/u/UmaraEntangler.java
index 345a2296002..87cef6200b3 100644
--- a/Mage.Sets/src/mage/cards/u/UmaraEntangler.java
+++ b/Mage.Sets/src/mage/cards/u/UmaraEntangler.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class UmaraEntangler extends CardImpl {
+public final class UmaraEntangler extends CardImpl {
public UmaraEntangler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UmaraRaptor.java b/Mage.Sets/src/mage/cards/u/UmaraRaptor.java
index 278b5468cab..6f03a8712b5 100644
--- a/Mage.Sets/src/mage/cards/u/UmaraRaptor.java
+++ b/Mage.Sets/src/mage/cards/u/UmaraRaptor.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author North
*/
-public class UmaraRaptor extends CardImpl {
+public final class UmaraRaptor extends CardImpl {
public UmaraRaptor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/Umbilicus.java b/Mage.Sets/src/mage/cards/u/Umbilicus.java
index 4742239c1c2..3ab18bfde69 100644
--- a/Mage.Sets/src/mage/cards/u/Umbilicus.java
+++ b/Mage.Sets/src/mage/cards/u/Umbilicus.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Fenhl
*/
-public class Umbilicus extends CardImpl {
+public final class Umbilicus extends CardImpl {
public Umbilicus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/u/UmbraMystic.java b/Mage.Sets/src/mage/cards/u/UmbraMystic.java
index 406702ef13f..6a84cfc7355 100644
--- a/Mage.Sets/src/mage/cards/u/UmbraMystic.java
+++ b/Mage.Sets/src/mage/cards/u/UmbraMystic.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.AttachedToControlledPermanentPredicate;
*
* @author North & L_J
*/
-public class UmbraMystic extends CardImpl {
+public final class UmbraMystic extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Auras attached to permanents you control");
diff --git a/Mage.Sets/src/mage/cards/u/UmbraStalker.java b/Mage.Sets/src/mage/cards/u/UmbraStalker.java
index fffb18f7980..bae241ec354 100644
--- a/Mage.Sets/src/mage/cards/u/UmbraStalker.java
+++ b/Mage.Sets/src/mage/cards/u/UmbraStalker.java
@@ -49,7 +49,7 @@ import mage.players.Player;
* @author jeffwadsworth
*
*/
-public class UmbraStalker extends CardImpl {
+public final class UmbraStalker extends CardImpl {
public UmbraStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UmbralMantle.java b/Mage.Sets/src/mage/cards/u/UmbralMantle.java
index a24dd15751a..ffeefda5587 100644
--- a/Mage.Sets/src/mage/cards/u/UmbralMantle.java
+++ b/Mage.Sets/src/mage/cards/u/UmbralMantle.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class UmbralMantle extends CardImpl {
+public final class UmbralMantle extends CardImpl {
public UmbralMantle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/u/UmezawasJitte.java b/Mage.Sets/src/mage/cards/u/UmezawasJitte.java
index 014c2f77a57..05d3c298841 100644
--- a/Mage.Sets/src/mage/cards/u/UmezawasJitte.java
+++ b/Mage.Sets/src/mage/cards/u/UmezawasJitte.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class UmezawasJitte extends CardImpl {
+public final class UmezawasJitte extends CardImpl {
public UmezawasJitte(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/u/UnbenderTine.java b/Mage.Sets/src/mage/cards/u/UnbenderTine.java
index 39502b77219..dd00e2c5a5d 100644
--- a/Mage.Sets/src/mage/cards/u/UnbenderTine.java
+++ b/Mage.Sets/src/mage/cards/u/UnbenderTine.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class UnbenderTine extends CardImpl {
+public final class UnbenderTine extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another target permanent");
diff --git a/Mage.Sets/src/mage/cards/u/UnblinkingBleb.java b/Mage.Sets/src/mage/cards/u/UnblinkingBleb.java
index d3d846b11c9..a69185caced 100644
--- a/Mage.Sets/src/mage/cards/u/UnblinkingBleb.java
+++ b/Mage.Sets/src/mage/cards/u/UnblinkingBleb.java
@@ -43,7 +43,7 @@ import mage.filter.FilterPermanent;
*
* @author fireshoes
*/
-public class UnblinkingBleb extends CardImpl {
+public final class UnblinkingBleb extends CardImpl {
public UnblinkingBleb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UnbreathingHorde.java b/Mage.Sets/src/mage/cards/u/UnbreathingHorde.java
index d3021b76d8d..38a99043fef 100644
--- a/Mage.Sets/src/mage/cards/u/UnbreathingHorde.java
+++ b/Mage.Sets/src/mage/cards/u/UnbreathingHorde.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class UnbreathingHorde extends CardImpl {
+public final class UnbreathingHorde extends CardImpl {
public UnbreathingHorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnbridledGrowth.java b/Mage.Sets/src/mage/cards/u/UnbridledGrowth.java
index 42802f525a2..42d0b9d56e6 100644
--- a/Mage.Sets/src/mage/cards/u/UnbridledGrowth.java
+++ b/Mage.Sets/src/mage/cards/u/UnbridledGrowth.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class UnbridledGrowth extends CardImpl {
+public final class UnbridledGrowth extends CardImpl {
public UnbridledGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/u/Unburden.java b/Mage.Sets/src/mage/cards/u/Unburden.java
index b6acd7fbfdf..a7186ebf58e 100644
--- a/Mage.Sets/src/mage/cards/u/Unburden.java
+++ b/Mage.Sets/src/mage/cards/u/Unburden.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class Unburden extends CardImpl {
+public final class Unburden extends CardImpl {
public Unburden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnburialRites.java b/Mage.Sets/src/mage/cards/u/UnburialRites.java
index 9d214e9bc16..f977a4fdcc2 100644
--- a/Mage.Sets/src/mage/cards/u/UnburialRites.java
+++ b/Mage.Sets/src/mage/cards/u/UnburialRites.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author nantuko
*/
-public class UnburialRites extends CardImpl {
+public final class UnburialRites extends CardImpl {
public UnburialRites(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UncageTheMenagerie.java b/Mage.Sets/src/mage/cards/u/UncageTheMenagerie.java
index 60a13fc1b6c..2c74cf99b5c 100644
--- a/Mage.Sets/src/mage/cards/u/UncageTheMenagerie.java
+++ b/Mage.Sets/src/mage/cards/u/UncageTheMenagerie.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author spjspj
*/
-public class UncageTheMenagerie extends CardImpl {
+public final class UncageTheMenagerie extends CardImpl {
public UncageTheMenagerie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UncagedFury.java b/Mage.Sets/src/mage/cards/u/UncagedFury.java
index 0e10d681d94..40f861b42e8 100644
--- a/Mage.Sets/src/mage/cards/u/UncagedFury.java
+++ b/Mage.Sets/src/mage/cards/u/UncagedFury.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class UncagedFury extends CardImpl {
+public final class UncagedFury extends CardImpl {
public UncagedFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UncannySpeed.java b/Mage.Sets/src/mage/cards/u/UncannySpeed.java
index 1d65682c288..bfa48731093 100644
--- a/Mage.Sets/src/mage/cards/u/UncannySpeed.java
+++ b/Mage.Sets/src/mage/cards/u/UncannySpeed.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class UncannySpeed extends CardImpl {
+public final class UncannySpeed extends CardImpl {
public UncannySpeed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UncheckedGrowth.java b/Mage.Sets/src/mage/cards/u/UncheckedGrowth.java
index 370bcaea188..92abfcd0de2 100644
--- a/Mage.Sets/src/mage/cards/u/UncheckedGrowth.java
+++ b/Mage.Sets/src/mage/cards/u/UncheckedGrowth.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class UncheckedGrowth extends CardImpl {
+public final class UncheckedGrowth extends CardImpl {
public UncheckedGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UnclaimedTerritory.java b/Mage.Sets/src/mage/cards/u/UnclaimedTerritory.java
index ca1a677660e..b56e60f11f5 100644
--- a/Mage.Sets/src/mage/cards/u/UnclaimedTerritory.java
+++ b/Mage.Sets/src/mage/cards/u/UnclaimedTerritory.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class UnclaimedTerritory extends CardImpl {
+public final class UnclaimedTerritory extends CardImpl {
public UnclaimedTerritory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/u/UncleIstvan.java b/Mage.Sets/src/mage/cards/u/UncleIstvan.java
index 23e5dfd0e21..541ef75e032 100644
--- a/Mage.Sets/src/mage/cards/u/UncleIstvan.java
+++ b/Mage.Sets/src/mage/cards/u/UncleIstvan.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent;
*
* @author MarcoMarin
*/
-public class UncleIstvan extends CardImpl {
+public final class UncleIstvan extends CardImpl {
public UncleIstvan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UncomfortableChill.java b/Mage.Sets/src/mage/cards/u/UncomfortableChill.java
new file mode 100644
index 00000000000..46f54d0a5f0
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/u/UncomfortableChill.java
@@ -0,0 +1,62 @@
+/*
+ * 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.u;
+
+import java.util.UUID;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.continuous.BoostOpponentsEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class UncomfortableChill extends CardImpl {
+
+ public UncomfortableChill(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
+
+ // Creatures your opponents control get -2/-0 until end of turn.
+ this.getSpellAbility().addEffect(new BoostOpponentsEffect(-2, 0, Duration.EndOfTurn));
+
+ // Draw a card.
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ }
+
+ public UncomfortableChill(final UncomfortableChill card) {
+ super(card);
+ }
+
+ @Override
+ public UncomfortableChill copy() {
+ return new UncomfortableChill(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/u/UncontrollableAnger.java b/Mage.Sets/src/mage/cards/u/UncontrollableAnger.java
index b06e9590438..1c07b249842 100644
--- a/Mage.Sets/src/mage/cards/u/UncontrollableAnger.java
+++ b/Mage.Sets/src/mage/cards/u/UncontrollableAnger.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class UncontrollableAnger extends CardImpl {
+public final class UncontrollableAnger extends CardImpl {
public UncontrollableAnger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UncontrolledInfestation.java b/Mage.Sets/src/mage/cards/u/UncontrolledInfestation.java
index 548052076f6..4731980cc70 100644
--- a/Mage.Sets/src/mage/cards/u/UncontrolledInfestation.java
+++ b/Mage.Sets/src/mage/cards/u/UncontrolledInfestation.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author LoneFox
*/
-public class UncontrolledInfestation extends CardImpl {
+public final class UncontrolledInfestation extends CardImpl {
public UncontrolledInfestation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
this.subtype.add(SubType.AURA);
diff --git a/Mage.Sets/src/mage/cards/u/UnconventionalTactics.java b/Mage.Sets/src/mage/cards/u/UnconventionalTactics.java
index 259fe671c04..5081766514d 100644
--- a/Mage.Sets/src/mage/cards/u/UnconventionalTactics.java
+++ b/Mage.Sets/src/mage/cards/u/UnconventionalTactics.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class UnconventionalTactics extends CardImpl {
+public final class UnconventionalTactics extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Zombie");
diff --git a/Mage.Sets/src/mage/cards/u/UncoveredClues.java b/Mage.Sets/src/mage/cards/u/UncoveredClues.java
index a9f71d77054..453361b3cf6 100644
--- a/Mage.Sets/src/mage/cards/u/UncoveredClues.java
+++ b/Mage.Sets/src/mage/cards/u/UncoveredClues.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*/
-public class UncoveredClues extends CardImpl {
+public final class UncoveredClues extends CardImpl {
private static final FilterCard filter = new FilterCard("up to two instant and/or sorcery cards");
static {
diff --git a/Mage.Sets/src/mage/cards/u/UndeadAlchemist.java b/Mage.Sets/src/mage/cards/u/UndeadAlchemist.java
index b451c8dd791..0e3bb91ff9f 100644
--- a/Mage.Sets/src/mage/cards/u/UndeadAlchemist.java
+++ b/Mage.Sets/src/mage/cards/u/UndeadAlchemist.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*
* @author BetaSteward
*/
-public class UndeadAlchemist extends CardImpl {
+public final class UndeadAlchemist extends CardImpl {
public UndeadAlchemist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UndeadExecutioner.java b/Mage.Sets/src/mage/cards/u/UndeadExecutioner.java
index 0764437866d..59d999b30cc 100644
--- a/Mage.Sets/src/mage/cards/u/UndeadExecutioner.java
+++ b/Mage.Sets/src/mage/cards/u/UndeadExecutioner.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author noxx
*/
-public class UndeadExecutioner extends CardImpl {
+public final class UndeadExecutioner extends CardImpl {
public UndeadExecutioner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UndeadGladiator.java b/Mage.Sets/src/mage/cards/u/UndeadGladiator.java
index 03bfc2defba..52b91059d36 100644
--- a/Mage.Sets/src/mage/cards/u/UndeadGladiator.java
+++ b/Mage.Sets/src/mage/cards/u/UndeadGladiator.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class UndeadGladiator extends CardImpl {
+public final class UndeadGladiator extends CardImpl {
public UndeadGladiator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UndeadLeotau.java b/Mage.Sets/src/mage/cards/u/UndeadLeotau.java
index 869e786d9f7..e057f5f2207 100644
--- a/Mage.Sets/src/mage/cards/u/UndeadLeotau.java
+++ b/Mage.Sets/src/mage/cards/u/UndeadLeotau.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class UndeadLeotau extends CardImpl {
+public final class UndeadLeotau extends CardImpl {
public UndeadLeotau(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UndeadMinotaur.java b/Mage.Sets/src/mage/cards/u/UndeadMinotaur.java
index d15efaf1d23..76621ae4b36 100644
--- a/Mage.Sets/src/mage/cards/u/UndeadMinotaur.java
+++ b/Mage.Sets/src/mage/cards/u/UndeadMinotaur.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class UndeadMinotaur extends CardImpl {
+public final class UndeadMinotaur extends CardImpl {
public UndeadMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UndeadServant.java b/Mage.Sets/src/mage/cards/u/UndeadServant.java
index ca627024b0d..00d456b76d2 100644
--- a/Mage.Sets/src/mage/cards/u/UndeadServant.java
+++ b/Mage.Sets/src/mage/cards/u/UndeadServant.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author fireshoes
*/
-public class UndeadServant extends CardImpl {
+public final class UndeadServant extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Undead Servant");
diff --git a/Mage.Sets/src/mage/cards/u/UndeadSlayer.java b/Mage.Sets/src/mage/cards/u/UndeadSlayer.java
index fcd27c7a3fa..1673632ca95 100644
--- a/Mage.Sets/src/mage/cards/u/UndeadSlayer.java
+++ b/Mage.Sets/src/mage/cards/u/UndeadSlayer.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class UndeadSlayer extends CardImpl {
+public final class UndeadSlayer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Skeleton, Vampire, or Zombie");
diff --git a/Mage.Sets/src/mage/cards/u/UndeadWarchief.java b/Mage.Sets/src/mage/cards/u/UndeadWarchief.java
index a050ca12088..dda80593955 100644
--- a/Mage.Sets/src/mage/cards/u/UndeadWarchief.java
+++ b/Mage.Sets/src/mage/cards/u/UndeadWarchief.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class UndeadWarchief extends CardImpl {
+public final class UndeadWarchief extends CardImpl {
private static final FilterCard filter = new FilterCard("Zombie spells");
private static final FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("Zombie creatures");
diff --git a/Mage.Sets/src/mage/cards/u/UndercityInformer.java b/Mage.Sets/src/mage/cards/u/UndercityInformer.java
index f822c8fadd8..431f500c910 100644
--- a/Mage.Sets/src/mage/cards/u/UndercityInformer.java
+++ b/Mage.Sets/src/mage/cards/u/UndercityInformer.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Plopman
*/
-public class UndercityInformer extends CardImpl {
+public final class UndercityInformer extends CardImpl {
public UndercityInformer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UndercityPlague.java b/Mage.Sets/src/mage/cards/u/UndercityPlague.java
index 08b65575689..7d9033e174d 100644
--- a/Mage.Sets/src/mage/cards/u/UndercityPlague.java
+++ b/Mage.Sets/src/mage/cards/u/UndercityPlague.java
@@ -42,7 +42,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class UndercityPlague extends CardImpl {
+public final class UndercityPlague extends CardImpl {
public UndercityPlague(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UndercityShade.java b/Mage.Sets/src/mage/cards/u/UndercityShade.java
index 2b833efc8e1..f2abafc007d 100644
--- a/Mage.Sets/src/mage/cards/u/UndercityShade.java
+++ b/Mage.Sets/src/mage/cards/u/UndercityShade.java
@@ -41,7 +41,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class UndercityShade extends CardImpl {
+public final class UndercityShade extends CardImpl {
public UndercityShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UndercityTroll.java b/Mage.Sets/src/mage/cards/u/UndercityTroll.java
index 73b561007fd..0315952f0b7 100644
--- a/Mage.Sets/src/mage/cards/u/UndercityTroll.java
+++ b/Mage.Sets/src/mage/cards/u/UndercityTroll.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class UndercityTroll extends CardImpl {
+public final class UndercityTroll extends CardImpl {
public UndercityTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UndergroundRiver.java b/Mage.Sets/src/mage/cards/u/UndergroundRiver.java
index d745ba8541b..a0213d9a5b2 100644
--- a/Mage.Sets/src/mage/cards/u/UndergroundRiver.java
+++ b/Mage.Sets/src/mage/cards/u/UndergroundRiver.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class UndergroundRiver extends CardImpl {
+public final class UndergroundRiver extends CardImpl {
public UndergroundRiver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/u/UndergroundSea.java b/Mage.Sets/src/mage/cards/u/UndergroundSea.java
index e21847aa444..0d692ffc134 100644
--- a/Mage.Sets/src/mage/cards/u/UndergroundSea.java
+++ b/Mage.Sets/src/mage/cards/u/UndergroundSea.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class UndergroundSea extends CardImpl {
+public final class UndergroundSea extends CardImpl {
public UndergroundSea(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/u/UndergrowthChampion.java b/Mage.Sets/src/mage/cards/u/UndergrowthChampion.java
index 7520747ad87..2f703c27d5d 100644
--- a/Mage.Sets/src/mage/cards/u/UndergrowthChampion.java
+++ b/Mage.Sets/src/mage/cards/u/UndergrowthChampion.java
@@ -51,7 +51,7 @@ import mage.game.turn.Step;
*
* @author fireshoes
*/
-public class UndergrowthChampion extends CardImpl {
+public final class UndergrowthChampion extends CardImpl {
public UndergrowthChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UndergrowthScavenger.java b/Mage.Sets/src/mage/cards/u/UndergrowthScavenger.java
index 8dc2251f0da..078f5561cfb 100644
--- a/Mage.Sets/src/mage/cards/u/UndergrowthScavenger.java
+++ b/Mage.Sets/src/mage/cards/u/UndergrowthScavenger.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LevelX2
*/
-public class UndergrowthScavenger extends CardImpl {
+public final class UndergrowthScavenger extends CardImpl {
public UndergrowthScavenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UnderhandedDesigns.java b/Mage.Sets/src/mage/cards/u/UnderhandedDesigns.java
index 8f4bfc1fbef..f39b1d3c25d 100644
--- a/Mage.Sets/src/mage/cards/u/UnderhandedDesigns.java
+++ b/Mage.Sets/src/mage/cards/u/UnderhandedDesigns.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class UnderhandedDesigns extends CardImpl {
+public final class UnderhandedDesigns extends CardImpl {
public UnderhandedDesigns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/Undermine.java b/Mage.Sets/src/mage/cards/u/Undermine.java
index bb2b2117a1e..4e448bcc5f4 100644
--- a/Mage.Sets/src/mage/cards/u/Undermine.java
+++ b/Mage.Sets/src/mage/cards/u/Undermine.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class Undermine extends CardImpl {
+public final class Undermine extends CardImpl {
public Undermine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/Undertaker.java b/Mage.Sets/src/mage/cards/u/Undertaker.java
index 7988530cb7a..f3e0b1b6c6c 100644
--- a/Mage.Sets/src/mage/cards/u/Undertaker.java
+++ b/Mage.Sets/src/mage/cards/u/Undertaker.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author shieldal
*/
-public class Undertaker extends CardImpl {
+public final class Undertaker extends CardImpl {
public Undertaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/Undertow.java b/Mage.Sets/src/mage/cards/u/Undertow.java
index d14bf5f4062..d9fbef44ae0 100644
--- a/Mage.Sets/src/mage/cards/u/Undertow.java
+++ b/Mage.Sets/src/mage/cards/u/Undertow.java
@@ -44,7 +44,7 @@ import mage.game.Game;
*
* @author L_J
*/
-public class Undertow extends CardImpl {
+public final class Undertow extends CardImpl {
public Undertow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UnderworldCerberus.java b/Mage.Sets/src/mage/cards/u/UnderworldCerberus.java
index d5075fb9587..a6732887624 100644
--- a/Mage.Sets/src/mage/cards/u/UnderworldCerberus.java
+++ b/Mage.Sets/src/mage/cards/u/UnderworldCerberus.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LevelX2
*/
-public class UnderworldCerberus extends CardImpl {
+public final class UnderworldCerberus extends CardImpl {
public UnderworldCerberus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UnderworldCoinsmith.java b/Mage.Sets/src/mage/cards/u/UnderworldCoinsmith.java
index 8c8f6d70087..88629ef9af1 100644
--- a/Mage.Sets/src/mage/cards/u/UnderworldCoinsmith.java
+++ b/Mage.Sets/src/mage/cards/u/UnderworldCoinsmith.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class UnderworldCoinsmith extends CardImpl {
+public final class UnderworldCoinsmith extends CardImpl {
public UnderworldCoinsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnderworldConnections.java b/Mage.Sets/src/mage/cards/u/UnderworldConnections.java
index e1c28b23462..f4ed355af27 100644
--- a/Mage.Sets/src/mage/cards/u/UnderworldConnections.java
+++ b/Mage.Sets/src/mage/cards/u/UnderworldConnections.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class UnderworldConnections extends CardImpl {
+public final class UnderworldConnections extends CardImpl {
static final String rule = "Enchanted land has \"{T}, Pay 1 life: Draw a card.\"";
diff --git a/Mage.Sets/src/mage/cards/u/UnderworldDreams.java b/Mage.Sets/src/mage/cards/u/UnderworldDreams.java
index dbfcf814cdc..1c8515f4947 100644
--- a/Mage.Sets/src/mage/cards/u/UnderworldDreams.java
+++ b/Mage.Sets/src/mage/cards/u/UnderworldDreams.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author North
*/
-public class UnderworldDreams extends CardImpl {
+public final class UnderworldDreams extends CardImpl {
public UnderworldDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnderworldSlums.java b/Mage.Sets/src/mage/cards/u/UnderworldSlums.java
index 1a31ec8e0fd..89f0903f0a6 100644
--- a/Mage.Sets/src/mage/cards/u/UnderworldSlums.java
+++ b/Mage.Sets/src/mage/cards/u/UnderworldSlums.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author Styxo
*/
-public class UnderworldSlums extends CardImpl {
+public final class UnderworldSlums extends CardImpl {
public UnderworldSlums(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/u/UndiscoveredParadise.java b/Mage.Sets/src/mage/cards/u/UndiscoveredParadise.java
index 341a45467f1..0634a6e6887 100644
--- a/Mage.Sets/src/mage/cards/u/UndiscoveredParadise.java
+++ b/Mage.Sets/src/mage/cards/u/UndiscoveredParadise.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class UndiscoveredParadise extends CardImpl {
+public final class UndiscoveredParadise extends CardImpl {
public UndiscoveredParadise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/u/Undo.java b/Mage.Sets/src/mage/cards/u/Undo.java
index 0f3995390c3..65574341fa2 100644
--- a/Mage.Sets/src/mage/cards/u/Undo.java
+++ b/Mage.Sets/src/mage/cards/u/Undo.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Undo extends CardImpl {
+public final class Undo extends CardImpl {
public Undo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UndyingBeast.java b/Mage.Sets/src/mage/cards/u/UndyingBeast.java
index 74748e6fd3e..cb8169632b3 100644
--- a/Mage.Sets/src/mage/cards/u/UndyingBeast.java
+++ b/Mage.Sets/src/mage/cards/u/UndyingBeast.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class UndyingBeast extends CardImpl {
+public final class UndyingBeast extends CardImpl {
public UndyingBeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UndyingEvil.java b/Mage.Sets/src/mage/cards/u/UndyingEvil.java
index b94078e25e5..ee2b30de13a 100644
--- a/Mage.Sets/src/mage/cards/u/UndyingEvil.java
+++ b/Mage.Sets/src/mage/cards/u/UndyingEvil.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class UndyingEvil extends CardImpl {
+public final class UndyingEvil extends CardImpl {
public UndyingEvil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UndyingFlames.java b/Mage.Sets/src/mage/cards/u/UndyingFlames.java
index f3ed2782377..027f4f063c6 100644
--- a/Mage.Sets/src/mage/cards/u/UndyingFlames.java
+++ b/Mage.Sets/src/mage/cards/u/UndyingFlames.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
* @author jeffwadsworth
*
*/
-public class UndyingFlames extends CardImpl {
+public final class UndyingFlames extends CardImpl {
public UndyingFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UndyingRage.java b/Mage.Sets/src/mage/cards/u/UndyingRage.java
index 6b02621fa14..b933bf60658 100644
--- a/Mage.Sets/src/mage/cards/u/UndyingRage.java
+++ b/Mage.Sets/src/mage/cards/u/UndyingRage.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class UndyingRage extends CardImpl {
+public final class UndyingRage extends CardImpl {
public UndyingRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/Unearth.java b/Mage.Sets/src/mage/cards/u/Unearth.java
index e96f3137082..824460cff62 100644
--- a/Mage.Sets/src/mage/cards/u/Unearth.java
+++ b/Mage.Sets/src/mage/cards/u/Unearth.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class Unearth extends CardImpl {
+public final class Unearth extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("creature card with converted mana cost 3 or less from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/u/UnearthlyBlizzard.java b/Mage.Sets/src/mage/cards/u/UnearthlyBlizzard.java
index 0ea7f840fe9..3e62ce7fcb9 100644
--- a/Mage.Sets/src/mage/cards/u/UnearthlyBlizzard.java
+++ b/Mage.Sets/src/mage/cards/u/UnearthlyBlizzard.java
@@ -42,7 +42,7 @@ import java.util.UUID;
/**
* @author LevelX
*/
-public class UnearthlyBlizzard extends CardImpl {
+public final class UnearthlyBlizzard extends CardImpl {
public UnearthlyBlizzard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UneshCriosphinxSovereign.java b/Mage.Sets/src/mage/cards/u/UneshCriosphinxSovereign.java
index 4764b10aa44..7f56d65c50a 100644
--- a/Mage.Sets/src/mage/cards/u/UneshCriosphinxSovereign.java
+++ b/Mage.Sets/src/mage/cards/u/UneshCriosphinxSovereign.java
@@ -63,7 +63,7 @@ import mage.target.TargetCard;
*
* @author spjspj
*/
-public class UneshCriosphinxSovereign extends CardImpl {
+public final class UneshCriosphinxSovereign extends CardImpl {
private static final FilterCard filter = new FilterCard("Sphinx spells");
diff --git a/Mage.Sets/src/mage/cards/u/UnexpectedResults.java b/Mage.Sets/src/mage/cards/u/UnexpectedResults.java
index 7b2fc870937..cbf7ef4d1ad 100644
--- a/Mage.Sets/src/mage/cards/u/UnexpectedResults.java
+++ b/Mage.Sets/src/mage/cards/u/UnexpectedResults.java
@@ -28,6 +28,7 @@
package mage.cards.u;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
@@ -67,7 +68,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class UnexpectedResults extends CardImpl {
+public final class UnexpectedResults extends CardImpl {
public UnexpectedResults(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}{U}");
@@ -126,7 +127,7 @@ class UnexpectedResultEffect extends OneShotEffect {
}
} else {
if (controller.chooseUse(outcome, new StringBuilder("Cast ").append(card.getName()).append(" without paying its mana cost?").toString(), source, game)) {
- return controller.cast(card.getSpellAbility(), game, true);
+ return controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/u/UnexpectedlyAbsent.java b/Mage.Sets/src/mage/cards/u/UnexpectedlyAbsent.java
index a02769e819e..c4fb95cfa82 100644
--- a/Mage.Sets/src/mage/cards/u/UnexpectedlyAbsent.java
+++ b/Mage.Sets/src/mage/cards/u/UnexpectedlyAbsent.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class UnexpectedlyAbsent extends CardImpl {
+public final class UnexpectedlyAbsent extends CardImpl {
public UnexpectedlyAbsent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/u/UnflinchingCourage.java b/Mage.Sets/src/mage/cards/u/UnflinchingCourage.java
index 6b443fa376b..d57b3a81ca7 100644
--- a/Mage.Sets/src/mage/cards/u/UnflinchingCourage.java
+++ b/Mage.Sets/src/mage/cards/u/UnflinchingCourage.java
@@ -40,9 +40,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@@ -51,13 +51,12 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class UnflinchingCourage extends CardImpl {
+public final class UnflinchingCourage extends CardImpl {
public UnflinchingCourage(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{W}");
this.subtype.add(SubType.AURA);
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
@@ -66,9 +65,10 @@ public class UnflinchingCourage extends CardImpl {
this.addAbility(ability);
// Enchanted creature gets +2/+2 and has trample and lifelink.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.AURA)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(LifelinkAbility.getInstance(), AttachmentType.AURA)));
+ ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield));
+ ability.addEffect(new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.AURA).setText("and has trample"));
+ ability.addEffect(new GainAbilityAttachedEffect(LifelinkAbility.getInstance(), AttachmentType.AURA).setText("and lifelink"));
+ this.addAbility(ability);
}
public UnflinchingCourage(final UnflinchingCourage card) {
diff --git a/Mage.Sets/src/mage/cards/u/Unforge.java b/Mage.Sets/src/mage/cards/u/Unforge.java
index 183bc779f06..95c28ab6606 100644
--- a/Mage.Sets/src/mage/cards/u/Unforge.java
+++ b/Mage.Sets/src/mage/cards/u/Unforge.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author wetterlicht
*/
-public class Unforge extends CardImpl {
+public final class Unforge extends CardImpl {
private static FilterArtifactPermanent filter = new FilterArtifactPermanent("equipment");
diff --git a/Mage.Sets/src/mage/cards/u/UnfriendlyFire.java b/Mage.Sets/src/mage/cards/u/UnfriendlyFire.java
index e17f6bb90c5..f99a4bd38fe 100644
--- a/Mage.Sets/src/mage/cards/u/UnfriendlyFire.java
+++ b/Mage.Sets/src/mage/cards/u/UnfriendlyFire.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author spjspj
*/
-public class UnfriendlyFire extends CardImpl {
+public final class UnfriendlyFire extends CardImpl {
public UnfriendlyFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UnfulfilledDesires.java b/Mage.Sets/src/mage/cards/u/UnfulfilledDesires.java
index 84a07ab96e6..8b0151f899b 100644
--- a/Mage.Sets/src/mage/cards/u/UnfulfilledDesires.java
+++ b/Mage.Sets/src/mage/cards/u/UnfulfilledDesires.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class UnfulfilledDesires extends CardImpl {
+public final class UnfulfilledDesires extends CardImpl {
public UnfulfilledDesires(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnhallowedCathar.java b/Mage.Sets/src/mage/cards/u/UnhallowedCathar.java
index d310449e63e..08930656309 100644
--- a/Mage.Sets/src/mage/cards/u/UnhallowedCathar.java
+++ b/Mage.Sets/src/mage/cards/u/UnhallowedCathar.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward
*/
-public class UnhallowedCathar extends CardImpl {
+public final class UnhallowedCathar extends CardImpl {
public UnhallowedCathar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/u/UnhallowedPact.java b/Mage.Sets/src/mage/cards/u/UnhallowedPact.java
index cc0041ae487..027cb3da4f8 100644
--- a/Mage.Sets/src/mage/cards/u/UnhallowedPact.java
+++ b/Mage.Sets/src/mage/cards/u/UnhallowedPact.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author noxx
*/
-public class UnhallowedPact extends CardImpl {
+public final class UnhallowedPact extends CardImpl {
public UnhallowedPact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/Unhinge.java b/Mage.Sets/src/mage/cards/u/Unhinge.java
index 725504e6303..fbacc735d51 100644
--- a/Mage.Sets/src/mage/cards/u/Unhinge.java
+++ b/Mage.Sets/src/mage/cards/u/Unhinge.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author EvilGeek
*/
-public class Unhinge extends CardImpl {
+public final class Unhinge extends CardImpl {
public Unhinge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnholyFiend.java b/Mage.Sets/src/mage/cards/u/UnholyFiend.java
index 9aeb8249eb1..47d076a346b 100644
--- a/Mage.Sets/src/mage/cards/u/UnholyFiend.java
+++ b/Mage.Sets/src/mage/cards/u/UnholyFiend.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class UnholyFiend extends CardImpl {
+public final class UnholyFiend extends CardImpl {
public UnholyFiend(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/u/UnholyGrotto.java b/Mage.Sets/src/mage/cards/u/UnholyGrotto.java
index 922723770b5..c6e27599d08 100644
--- a/Mage.Sets/src/mage/cards/u/UnholyGrotto.java
+++ b/Mage.Sets/src/mage/cards/u/UnholyGrotto.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author anonymous
*/
-public class UnholyGrotto extends CardImpl {
+public final class UnholyGrotto extends CardImpl {
private static final FilterCard filter = new FilterCard("Zombie card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/u/UnholyHunger.java b/Mage.Sets/src/mage/cards/u/UnholyHunger.java
index db902f5dd0e..801d2e77528 100644
--- a/Mage.Sets/src/mage/cards/u/UnholyHunger.java
+++ b/Mage.Sets/src/mage/cards/u/UnholyHunger.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class UnholyHunger extends CardImpl {
+public final class UnholyHunger extends CardImpl {
public UnholyHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnholyStrength.java b/Mage.Sets/src/mage/cards/u/UnholyStrength.java
index c58dab0eb05..e3fdbfbd5be 100644
--- a/Mage.Sets/src/mage/cards/u/UnholyStrength.java
+++ b/Mage.Sets/src/mage/cards/u/UnholyStrength.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class UnholyStrength extends CardImpl {
+public final class UnholyStrength extends CardImpl {
public UnholyStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnifiedFront.java b/Mage.Sets/src/mage/cards/u/UnifiedFront.java
index f49a8d8266a..6daccab72b1 100644
--- a/Mage.Sets/src/mage/cards/u/UnifiedFront.java
+++ b/Mage.Sets/src/mage/cards/u/UnifiedFront.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.KorAllyToken;
*
* @author LevelX2
*/
-public class UnifiedFront extends CardImpl {
+public final class UnifiedFront extends CardImpl {
public UnifiedFront(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/u/UnifiedStrike.java b/Mage.Sets/src/mage/cards/u/UnifiedStrike.java
index f19f6643b99..e770d6b694a 100644
--- a/Mage.Sets/src/mage/cards/u/UnifiedStrike.java
+++ b/Mage.Sets/src/mage/cards/u/UnifiedStrike.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author TheElk801
*/
-public class UnifiedStrike extends CardImpl {
+public final class UnifiedStrike extends CardImpl {
public UnifiedStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/u/UnifiedWill.java b/Mage.Sets/src/mage/cards/u/UnifiedWill.java
index 3def4ae5014..31308acb424 100644
--- a/Mage.Sets/src/mage/cards/u/UnifiedWill.java
+++ b/Mage.Sets/src/mage/cards/u/UnifiedWill.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author BetaSteward_at_googlemail.com
*/
-public class UnifiedWill extends CardImpl {
+public final class UnifiedWill extends CardImpl {
public UnifiedWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UnifyingTheory.java b/Mage.Sets/src/mage/cards/u/UnifyingTheory.java
index 08ca2e3d688..be7f3d706be 100644
--- a/Mage.Sets/src/mage/cards/u/UnifyingTheory.java
+++ b/Mage.Sets/src/mage/cards/u/UnifyingTheory.java
@@ -47,7 +47,7 @@ import mage.players.Player;
* @author cbt33, Level_X2 (Horn of Plenty)
*/
-public class UnifyingTheory extends CardImpl {
+public final class UnifyingTheory extends CardImpl {
public UnifyingTheory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UnimpededTrespasser.java b/Mage.Sets/src/mage/cards/u/UnimpededTrespasser.java
index 368a932264d..ceb5e85945a 100644
--- a/Mage.Sets/src/mage/cards/u/UnimpededTrespasser.java
+++ b/Mage.Sets/src/mage/cards/u/UnimpededTrespasser.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class UnimpededTrespasser extends CardImpl {
+public final class UnimpededTrespasser extends CardImpl {
public UnimpededTrespasser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/u/UninvitedGeist.java b/Mage.Sets/src/mage/cards/u/UninvitedGeist.java
index 4dd1c9776e1..839df3224ca 100644
--- a/Mage.Sets/src/mage/cards/u/UninvitedGeist.java
+++ b/Mage.Sets/src/mage/cards/u/UninvitedGeist.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class UninvitedGeist extends CardImpl {
+public final class UninvitedGeist extends CardImpl {
public UninvitedGeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UnityOfPurpose.java b/Mage.Sets/src/mage/cards/u/UnityOfPurpose.java
index b7825b47fea..c853a4983c2 100644
--- a/Mage.Sets/src/mage/cards/u/UnityOfPurpose.java
+++ b/Mage.Sets/src/mage/cards/u/UnityOfPurpose.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
*
* @author fireshoes
*/
-public class UnityOfPurpose extends CardImpl {
+public final class UnityOfPurpose extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature you control with a +1/+1 counter on it");
diff --git a/Mage.Sets/src/mage/cards/u/UnityOfTheDroids.java b/Mage.Sets/src/mage/cards/u/UnityOfTheDroids.java
index 9933be7216b..02084f834e9 100644
--- a/Mage.Sets/src/mage/cards/u/UnityOfTheDroids.java
+++ b/Mage.Sets/src/mage/cards/u/UnityOfTheDroids.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class UnityOfTheDroids extends CardImpl {
+public final class UnityOfTheDroids extends CardImpl {
private static final FilterCreaturePermanent artifactCreatureFilter = new FilterCreaturePermanent("artifact creature");
private static final FilterCreaturePermanent nonArtifactCreatureFilter = new FilterCreaturePermanent("nonartifact creature");
diff --git a/Mage.Sets/src/mage/cards/u/UniversalSolvent.java b/Mage.Sets/src/mage/cards/u/UniversalSolvent.java
index 73b3b8c0ab8..8aa6ed94bc7 100644
--- a/Mage.Sets/src/mage/cards/u/UniversalSolvent.java
+++ b/Mage.Sets/src/mage/cards/u/UniversalSolvent.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class UniversalSolvent extends CardImpl {
+public final class UniversalSolvent extends CardImpl {
public UniversalSolvent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/u/UnknownShores.java b/Mage.Sets/src/mage/cards/u/UnknownShores.java
index d69946c117f..f191d27bc53 100644
--- a/Mage.Sets/src/mage/cards/u/UnknownShores.java
+++ b/Mage.Sets/src/mage/cards/u/UnknownShores.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class UnknownShores extends CardImpl {
+public final class UnknownShores extends CardImpl {
public UnknownShores(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/u/UnlicensedDisintegration.java b/Mage.Sets/src/mage/cards/u/UnlicensedDisintegration.java
index 585b1883580..05735c8159c 100644
--- a/Mage.Sets/src/mage/cards/u/UnlicensedDisintegration.java
+++ b/Mage.Sets/src/mage/cards/u/UnlicensedDisintegration.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class UnlicensedDisintegration extends CardImpl {
+public final class UnlicensedDisintegration extends CardImpl {
public UnlicensedDisintegration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UnlikelyAlliance.java b/Mage.Sets/src/mage/cards/u/UnlikelyAlliance.java
index fbccb91d94f..7d5336d06e8 100644
--- a/Mage.Sets/src/mage/cards/u/UnlikelyAlliance.java
+++ b/Mage.Sets/src/mage/cards/u/UnlikelyAlliance.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class UnlikelyAlliance extends CardImpl {
+public final class UnlikelyAlliance extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonattacking, nonblocking creature");
diff --git a/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java b/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java
index 223d5836e65..ab00d2627ae 100644
--- a/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java
+++ b/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class UnlivingPsychopath extends CardImpl {
+public final class UnlivingPsychopath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power less than Unliving Psychopath's power");
diff --git a/Mage.Sets/src/mage/cards/u/Unmake.java b/Mage.Sets/src/mage/cards/u/Unmake.java
index 55103b4806c..b096377c573 100644
--- a/Mage.Sets/src/mage/cards/u/Unmake.java
+++ b/Mage.Sets/src/mage/cards/u/Unmake.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Unmake extends CardImpl {
+public final class Unmake extends CardImpl {
public Unmake (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W/B}{W/B}{W/B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnmakeTheGraves.java b/Mage.Sets/src/mage/cards/u/UnmakeTheGraves.java
index 58434e89935..c3193e2f751 100644
--- a/Mage.Sets/src/mage/cards/u/UnmakeTheGraves.java
+++ b/Mage.Sets/src/mage/cards/u/UnmakeTheGraves.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class UnmakeTheGraves extends CardImpl {
+public final class UnmakeTheGraves extends CardImpl {
public UnmakeTheGraves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/Unmask.java b/Mage.Sets/src/mage/cards/u/Unmask.java
index d705d0c6aac..b48c3a20f1d 100644
--- a/Mage.Sets/src/mage/cards/u/Unmask.java
+++ b/Mage.Sets/src/mage/cards/u/Unmask.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class Unmask extends CardImpl {
+public final class Unmask extends CardImpl {
private static final FilterCard filter = new FilterCard("a black card from your hand");
private static final FilterCard filterNonLand = new FilterCard("nonland card");
diff --git a/Mage.Sets/src/mage/cards/u/UnnaturalAggression.java b/Mage.Sets/src/mage/cards/u/UnnaturalAggression.java
index db4508096e2..0b85c5a230c 100644
--- a/Mage.Sets/src/mage/cards/u/UnnaturalAggression.java
+++ b/Mage.Sets/src/mage/cards/u/UnnaturalAggression.java
@@ -46,7 +46,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*
* @author LevelX2
*/
-public class UnnaturalAggression extends CardImpl {
+public final class UnnaturalAggression extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/u/UnnaturalEndurance.java b/Mage.Sets/src/mage/cards/u/UnnaturalEndurance.java
index 28d070d8534..d57a12140fc 100644
--- a/Mage.Sets/src/mage/cards/u/UnnaturalEndurance.java
+++ b/Mage.Sets/src/mage/cards/u/UnnaturalEndurance.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class UnnaturalEndurance extends CardImpl {
+public final class UnnaturalEndurance extends CardImpl {
public UnnaturalEndurance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnnaturalPredation.java b/Mage.Sets/src/mage/cards/u/UnnaturalPredation.java
index cea9c4795f7..3c68aeeb7f7 100644
--- a/Mage.Sets/src/mage/cards/u/UnnaturalPredation.java
+++ b/Mage.Sets/src/mage/cards/u/UnnaturalPredation.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class UnnaturalPredation extends CardImpl {
+public final class UnnaturalPredation extends CardImpl {
public UnnaturalPredation (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UnnaturalSelection.java b/Mage.Sets/src/mage/cards/u/UnnaturalSelection.java
index aabc4cf8ff4..0ffef7f40a3 100644
--- a/Mage.Sets/src/mage/cards/u/UnnaturalSelection.java
+++ b/Mage.Sets/src/mage/cards/u/UnnaturalSelection.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author EvilGeek
*/
-public class UnnaturalSelection extends CardImpl {
+public final class UnnaturalSelection extends CardImpl {
public UnnaturalSelection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UnnaturalSpeed.java b/Mage.Sets/src/mage/cards/u/UnnaturalSpeed.java
index d489e1ece5a..02dcc2f0a9a 100644
--- a/Mage.Sets/src/mage/cards/u/UnnaturalSpeed.java
+++ b/Mage.Sets/src/mage/cards/u/UnnaturalSpeed.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class UnnaturalSpeed extends CardImpl {
+public final class UnnaturalSpeed extends CardImpl {
public UnnaturalSpeed (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/u/Unnerve.java b/Mage.Sets/src/mage/cards/u/Unnerve.java
index 29b972d83a2..168c941b235 100644
--- a/Mage.Sets/src/mage/cards/u/Unnerve.java
+++ b/Mage.Sets/src/mage/cards/u/Unnerve.java
@@ -39,7 +39,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class Unnerve extends CardImpl {
+public final class Unnerve extends CardImpl {
public Unnerve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnnervingAssault.java b/Mage.Sets/src/mage/cards/u/UnnervingAssault.java
index 220e916e018..be8462dc2c7 100644
--- a/Mage.Sets/src/mage/cards/u/UnnervingAssault.java
+++ b/Mage.Sets/src/mage/cards/u/UnnervingAssault.java
@@ -47,7 +47,7 @@ import mage.watchers.common.ManaSpentToCastWatcher;
* @author jeffwadsworth
*
*/
-public class UnnervingAssault extends CardImpl {
+public final class UnnervingAssault extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/u/UnquenchableThirst.java b/Mage.Sets/src/mage/cards/u/UnquenchableThirst.java
index 238565428e0..79a6275b879 100644
--- a/Mage.Sets/src/mage/cards/u/UnquenchableThirst.java
+++ b/Mage.Sets/src/mage/cards/u/UnquenchableThirst.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class UnquenchableThirst extends CardImpl {
+public final class UnquenchableThirst extends CardImpl {
private static final FilterControlledPermanent filterDesertPermanent = new FilterControlledPermanent("Desert");
private static final FilterCard filterDesertCard = new FilterCard("Desert card");
diff --git a/Mage.Sets/src/mage/cards/u/UnquestionedAuthority.java b/Mage.Sets/src/mage/cards/u/UnquestionedAuthority.java
index 6a7408a02e2..9b55686188c 100644
--- a/Mage.Sets/src/mage/cards/u/UnquestionedAuthority.java
+++ b/Mage.Sets/src/mage/cards/u/UnquestionedAuthority.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class UnquestionedAuthority extends CardImpl {
+public final class UnquestionedAuthority extends CardImpl {
public UnquestionedAuthority(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/u/UnravelTheAether.java b/Mage.Sets/src/mage/cards/u/UnravelTheAether.java
index b39474e91cd..3074c998f7b 100644
--- a/Mage.Sets/src/mage/cards/u/UnravelTheAether.java
+++ b/Mage.Sets/src/mage/cards/u/UnravelTheAether.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class UnravelTheAether extends CardImpl {
+public final class UnravelTheAether extends CardImpl {
public UnravelTheAether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UnravelingMummy.java b/Mage.Sets/src/mage/cards/u/UnravelingMummy.java
index 5534479a5c1..5c56be5702e 100644
--- a/Mage.Sets/src/mage/cards/u/UnravelingMummy.java
+++ b/Mage.Sets/src/mage/cards/u/UnravelingMummy.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class UnravelingMummy extends CardImpl {
+public final class UnravelingMummy extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking Zombie");
diff --git a/Mage.Sets/src/mage/cards/u/UnrulyMob.java b/Mage.Sets/src/mage/cards/u/UnrulyMob.java
index 9159439a2fc..e3fdd921d1c 100644
--- a/Mage.Sets/src/mage/cards/u/UnrulyMob.java
+++ b/Mage.Sets/src/mage/cards/u/UnrulyMob.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author nantuko
*/
-public class UnrulyMob extends CardImpl {
+public final class UnrulyMob extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
diff --git a/Mage.Sets/src/mage/cards/u/UnrulySureshot.java b/Mage.Sets/src/mage/cards/u/UnrulySureshot.java
index 8c6bb4cbacf..ee8d41f7a57 100644
--- a/Mage.Sets/src/mage/cards/u/UnrulySureshot.java
+++ b/Mage.Sets/src/mage/cards/u/UnrulySureshot.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class UnrulySureshot extends CardImpl {
+public final class UnrulySureshot extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with a bounty counter on it");
diff --git a/Mage.Sets/src/mage/cards/u/UnscytheKillerOfKings.java b/Mage.Sets/src/mage/cards/u/UnscytheKillerOfKings.java
index 9359dea5e00..60215b676e5 100644
--- a/Mage.Sets/src/mage/cards/u/UnscytheKillerOfKings.java
+++ b/Mage.Sets/src/mage/cards/u/UnscytheKillerOfKings.java
@@ -57,7 +57,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class UnscytheKillerOfKings extends CardImpl {
+public final class UnscytheKillerOfKings extends CardImpl {
public UnscytheKillerOfKings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{U}{B}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UnseenWalker.java b/Mage.Sets/src/mage/cards/u/UnseenWalker.java
index 11369e918fb..eada2d4f136 100644
--- a/Mage.Sets/src/mage/cards/u/UnseenWalker.java
+++ b/Mage.Sets/src/mage/cards/u/UnseenWalker.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class UnseenWalker extends CardImpl {
+public final class UnseenWalker extends CardImpl {
public UnseenWalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UnspeakableSymbol.java b/Mage.Sets/src/mage/cards/u/UnspeakableSymbol.java
index 7f089bbe90c..44994afa287 100644
--- a/Mage.Sets/src/mage/cards/u/UnspeakableSymbol.java
+++ b/Mage.Sets/src/mage/cards/u/UnspeakableSymbol.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class UnspeakableSymbol extends CardImpl {
+public final class UnspeakableSymbol extends CardImpl {
public UnspeakableSymbol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnstableFooting.java b/Mage.Sets/src/mage/cards/u/UnstableFooting.java
index 33abbc4717d..248765c8e2e 100644
--- a/Mage.Sets/src/mage/cards/u/UnstableFooting.java
+++ b/Mage.Sets/src/mage/cards/u/UnstableFooting.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class UnstableFooting extends CardImpl {
+public final class UnstableFooting extends CardImpl {
public UnstableFooting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UnstableFrontier.java b/Mage.Sets/src/mage/cards/u/UnstableFrontier.java
index 5768c16482e..19cee5c77ab 100644
--- a/Mage.Sets/src/mage/cards/u/UnstableFrontier.java
+++ b/Mage.Sets/src/mage/cards/u/UnstableFrontier.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class UnstableFrontier extends CardImpl {
+public final class UnstableFrontier extends CardImpl {
public UnstableFrontier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/u/UnstableHulk.java b/Mage.Sets/src/mage/cards/u/UnstableHulk.java
index 8ee88befbc3..63d0e98bbfd 100644
--- a/Mage.Sets/src/mage/cards/u/UnstableHulk.java
+++ b/Mage.Sets/src/mage/cards/u/UnstableHulk.java
@@ -48,7 +48,7 @@ import mage.constants.Duration;
*
* @author BursegSardaukar
*/
-public class UnstableHulk extends CardImpl {
+public final class UnstableHulk extends CardImpl {
public UnstableHulk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UnstableMutation.java b/Mage.Sets/src/mage/cards/u/UnstableMutation.java
index e80aad5dbae..46cf6e27991 100644
--- a/Mage.Sets/src/mage/cards/u/UnstableMutation.java
+++ b/Mage.Sets/src/mage/cards/u/UnstableMutation.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class UnstableMutation extends CardImpl {
+public final class UnstableMutation extends CardImpl {
public UnstableMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UnstableObelisk.java b/Mage.Sets/src/mage/cards/u/UnstableObelisk.java
index 7488592b835..10e1d2fcf29 100644
--- a/Mage.Sets/src/mage/cards/u/UnstableObelisk.java
+++ b/Mage.Sets/src/mage/cards/u/UnstableObelisk.java
@@ -45,7 +45,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class UnstableObelisk extends CardImpl {
+public final class UnstableObelisk extends CardImpl {
public UnstableObelisk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/u/UnstableShapeshifter.java b/Mage.Sets/src/mage/cards/u/UnstableShapeshifter.java
index f5bee08e2e8..5f5ed8a23a6 100644
--- a/Mage.Sets/src/mage/cards/u/UnstableShapeshifter.java
+++ b/Mage.Sets/src/mage/cards/u/UnstableShapeshifter.java
@@ -51,7 +51,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*
* @author HCrescent
*/
-public class UnstableShapeshifter extends CardImpl {
+public final class UnstableShapeshifter extends CardImpl {
final static FilterCreaturePermanent filterAnotherCreature = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java b/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java
index 1dd622a934f..c51c8864c56 100644
--- a/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java
+++ b/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
* @author jeffwadsworth
*
*/
-public class UnstoppableAsh extends CardImpl {
+public final class UnstoppableAsh extends CardImpl {
final static private FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
diff --git a/Mage.Sets/src/mage/cards/u/Unsubstantiate.java b/Mage.Sets/src/mage/cards/u/Unsubstantiate.java
index 550b6db6135..a10c31870a4 100644
--- a/Mage.Sets/src/mage/cards/u/Unsubstantiate.java
+++ b/Mage.Sets/src/mage/cards/u/Unsubstantiate.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author fireshoes
*/
-public class Unsubstantiate extends CardImpl {
+public final class Unsubstantiate extends CardImpl {
private static final FilterSpellOrPermanent filter = new FilterSpellOrPermanent("spell or creature");
diff --git a/Mage.Sets/src/mage/cards/u/Unsummon.java b/Mage.Sets/src/mage/cards/u/Unsummon.java
index 8ca464f0d85..2fff2ba4e34 100644
--- a/Mage.Sets/src/mage/cards/u/Unsummon.java
+++ b/Mage.Sets/src/mage/cards/u/Unsummon.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Unsummon extends CardImpl {
+public final class Unsummon extends CardImpl {
public Unsummon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UntaidakeTheCloudKeeper.java b/Mage.Sets/src/mage/cards/u/UntaidakeTheCloudKeeper.java
index cd51daeccb3..9aeb76204d8 100644
--- a/Mage.Sets/src/mage/cards/u/UntaidakeTheCloudKeeper.java
+++ b/Mage.Sets/src/mage/cards/u/UntaidakeTheCloudKeeper.java
@@ -51,7 +51,7 @@ import mage.game.Game;
*
* @author anonymous
*/
-public class UntaidakeTheCloudKeeper extends CardImpl {
+public final class UntaidakeTheCloudKeeper extends CardImpl {
public UntaidakeTheCloudKeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/u/UntamedHunger.java b/Mage.Sets/src/mage/cards/u/UntamedHunger.java
index 3e442a8d324..ff1ac48de5a 100644
--- a/Mage.Sets/src/mage/cards/u/UntamedHunger.java
+++ b/Mage.Sets/src/mage/cards/u/UntamedHunger.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class UntamedHunger extends CardImpl {
+public final class UntamedHunger extends CardImpl {
public UntamedHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UntamedKavu.java b/Mage.Sets/src/mage/cards/u/UntamedKavu.java
index 64270f1a1a6..1577ac1a695 100644
--- a/Mage.Sets/src/mage/cards/u/UntamedKavu.java
+++ b/Mage.Sets/src/mage/cards/u/UntamedKavu.java
@@ -46,7 +46,7 @@ import mage.counters.CounterType;
*
* @author tcontis
*/
-public class UntamedKavu extends CardImpl {
+public final class UntamedKavu extends CardImpl {
public UntamedKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UntamedMight.java b/Mage.Sets/src/mage/cards/u/UntamedMight.java
index b6ad7e448ee..866f87edffc 100644
--- a/Mage.Sets/src/mage/cards/u/UntamedMight.java
+++ b/Mage.Sets/src/mage/cards/u/UntamedMight.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author ayratn
*/
-public class UntamedMight extends CardImpl {
+public final class UntamedMight extends CardImpl {
public UntamedMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UntamedWilds.java b/Mage.Sets/src/mage/cards/u/UntamedWilds.java
index 349fd36a89d..86d2491a82a 100644
--- a/Mage.Sets/src/mage/cards/u/UntamedWilds.java
+++ b/Mage.Sets/src/mage/cards/u/UntamedWilds.java
@@ -40,14 +40,14 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Quercitron
*/
-public class UntamedWilds extends CardImpl {
+public final class UntamedWilds extends CardImpl {
public UntamedWilds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
// Search your library for a basic land card and put that card onto the battlefield. Then shuffle your library.
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD)));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND)));
}
public UntamedWilds(final UntamedWilds card) {
diff --git a/Mage.Sets/src/mage/cards/u/UntetheredExpress.java b/Mage.Sets/src/mage/cards/u/UntetheredExpress.java
index f931ad24228..46d09f73945 100644
--- a/Mage.Sets/src/mage/cards/u/UntetheredExpress.java
+++ b/Mage.Sets/src/mage/cards/u/UntetheredExpress.java
@@ -43,7 +43,7 @@ import java.util.UUID;
/**
* @author JRHerlehy
*/
-public class UntetheredExpress extends CardImpl {
+public final class UntetheredExpress extends CardImpl {
public UntetheredExpress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/u/UnwaveringInitiate.java b/Mage.Sets/src/mage/cards/u/UnwaveringInitiate.java
index a85d24b8d97..2859105b4c6 100644
--- a/Mage.Sets/src/mage/cards/u/UnwaveringInitiate.java
+++ b/Mage.Sets/src/mage/cards/u/UnwaveringInitiate.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class UnwaveringInitiate extends CardImpl {
+public final class UnwaveringInitiate extends CardImpl {
public UnwaveringInitiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/u/UnwillingRecruit.java b/Mage.Sets/src/mage/cards/u/UnwillingRecruit.java
index b2178150c26..3990430e949 100644
--- a/Mage.Sets/src/mage/cards/u/UnwillingRecruit.java
+++ b/Mage.Sets/src/mage/cards/u/UnwillingRecruit.java
@@ -48,7 +48,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class UnwillingRecruit extends CardImpl {
+public final class UnwillingRecruit extends CardImpl {
public UnwillingRecruit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/Unwind.java b/Mage.Sets/src/mage/cards/u/Unwind.java
index 3b35ead19f2..be4d324c90f 100644
--- a/Mage.Sets/src/mage/cards/u/Unwind.java
+++ b/Mage.Sets/src/mage/cards/u/Unwind.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
* @author JRHerlehy
* Created on 4/7/18.
*/
-public class Unwind extends CardImpl {
+public final class Unwind extends CardImpl {
public Unwind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UnwindingClock.java b/Mage.Sets/src/mage/cards/u/UnwindingClock.java
index 8d4814449c5..3df2c354a81 100644
--- a/Mage.Sets/src/mage/cards/u/UnwindingClock.java
+++ b/Mage.Sets/src/mage/cards/u/UnwindingClock.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward
*/
-public class UnwindingClock extends CardImpl {
+public final class UnwindingClock extends CardImpl {
public UnwindingClock(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/u/UnworthyDead.java b/Mage.Sets/src/mage/cards/u/UnworthyDead.java
index 5e4339eaf9d..7078176c6eb 100644
--- a/Mage.Sets/src/mage/cards/u/UnworthyDead.java
+++ b/Mage.Sets/src/mage/cards/u/UnworthyDead.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class UnworthyDead extends CardImpl {
+public final class UnworthyDead extends CardImpl {
public UnworthyDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UnyaroBeeSting.java b/Mage.Sets/src/mage/cards/u/UnyaroBeeSting.java
index 7c7754e5b08..4fae3cf7286 100644
--- a/Mage.Sets/src/mage/cards/u/UnyaroBeeSting.java
+++ b/Mage.Sets/src/mage/cards/u/UnyaroBeeSting.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class UnyaroBeeSting extends CardImpl {
+public final class UnyaroBeeSting extends CardImpl {
public UnyaroBeeSting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UnyaroBees.java b/Mage.Sets/src/mage/cards/u/UnyaroBees.java
index 6287ce12130..1d989cfaada 100644
--- a/Mage.Sets/src/mage/cards/u/UnyaroBees.java
+++ b/Mage.Sets/src/mage/cards/u/UnyaroBees.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class UnyaroBees extends CardImpl {
+public final class UnyaroBees extends CardImpl {
public UnyaroBees(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UnyaroGriffin.java b/Mage.Sets/src/mage/cards/u/UnyaroGriffin.java
index cb59b65d46b..db1db98a17e 100644
--- a/Mage.Sets/src/mage/cards/u/UnyaroGriffin.java
+++ b/Mage.Sets/src/mage/cards/u/UnyaroGriffin.java
@@ -49,7 +49,7 @@ import mage.target.TargetSpell;
*
* @author Quercitron
*/
-public class UnyaroGriffin extends CardImpl {
+public final class UnyaroGriffin extends CardImpl {
private static final FilterSpell filter = new FilterSpell("red instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/u/UnyieldingKrumar.java b/Mage.Sets/src/mage/cards/u/UnyieldingKrumar.java
index dfc55c8f8f4..d8ba1f321ac 100644
--- a/Mage.Sets/src/mage/cards/u/UnyieldingKrumar.java
+++ b/Mage.Sets/src/mage/cards/u/UnyieldingKrumar.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class UnyieldingKrumar extends CardImpl {
+public final class UnyieldingKrumar extends CardImpl {
public UnyieldingKrumar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/Updraft.java b/Mage.Sets/src/mage/cards/u/Updraft.java
index 3ad18718ee2..307b71f7297 100644
--- a/Mage.Sets/src/mage/cards/u/Updraft.java
+++ b/Mage.Sets/src/mage/cards/u/Updraft.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Updraft extends CardImpl {
+public final class Updraft extends CardImpl {
public Updraft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UpdraftElemental.java b/Mage.Sets/src/mage/cards/u/UpdraftElemental.java
index 81f37e25b0b..e3cd08e6f07 100644
--- a/Mage.Sets/src/mage/cards/u/UpdraftElemental.java
+++ b/Mage.Sets/src/mage/cards/u/UpdraftElemental.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class UpdraftElemental extends CardImpl {
+public final class UpdraftElemental extends CardImpl {
public UpdraftElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/Upheaval.java b/Mage.Sets/src/mage/cards/u/Upheaval.java
index 09900f8dd78..9cf9a0424af 100644
--- a/Mage.Sets/src/mage/cards/u/Upheaval.java
+++ b/Mage.Sets/src/mage/cards/u/Upheaval.java
@@ -39,7 +39,7 @@ import mage.filter.FilterPermanent;
* @author cbt33
*/
-public class Upheaval extends CardImpl {
+public final class Upheaval extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanents");
diff --git a/Mage.Sets/src/mage/cards/u/UphillBattle.java b/Mage.Sets/src/mage/cards/u/UphillBattle.java
index 86ed97b4728..fe98ad11855 100644
--- a/Mage.Sets/src/mage/cards/u/UphillBattle.java
+++ b/Mage.Sets/src/mage/cards/u/UphillBattle.java
@@ -48,7 +48,7 @@ import mage.watchers.common.CreatureWasCastWatcher;
*
* @author chrvanorle
*/
-public class UphillBattle extends CardImpl {
+public final class UphillBattle extends CardImpl {
public UphillBattle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/Uproot.java b/Mage.Sets/src/mage/cards/u/Uproot.java
index 41014f82549..93958b4684a 100644
--- a/Mage.Sets/src/mage/cards/u/Uproot.java
+++ b/Mage.Sets/src/mage/cards/u/Uproot.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class Uproot extends CardImpl {
+public final class Uproot extends CardImpl {
public Uproot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/Upwelling.java b/Mage.Sets/src/mage/cards/u/Upwelling.java
index 4260d2eb9b5..f95dfb5ec1b 100644
--- a/Mage.Sets/src/mage/cards/u/Upwelling.java
+++ b/Mage.Sets/src/mage/cards/u/Upwelling.java
@@ -48,11 +48,10 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class Upwelling extends CardImpl {
+public final class Upwelling extends CardImpl {
public Upwelling(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
// Mana pools don't empty as steps and phases end.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UpwellingRuleEffect()));
@@ -73,7 +72,7 @@ class UpwellingRuleEffect extends ContinuousEffectImpl {
public UpwellingRuleEffect() {
super(Duration.WhileOnBattlefield, Outcome.Detriment);
- staticText = "Mana pools don't empty as steps and phases end";
+ staticText = "Players don’t lose unspent mana as steps and phases end";
}
public UpwellingRuleEffect(final UpwellingRuleEffect effect) {
@@ -89,9 +88,9 @@ class UpwellingRuleEffect extends ContinuousEffectImpl {
public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
- for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
- if (player != null){
+ if (player != null) {
ManaPool pool = player.getManaPool();
pool.addDoNotEmptyManaType(ManaType.WHITE);
pool.addDoNotEmptyManaType(ManaType.GREEN);
@@ -99,11 +98,11 @@ class UpwellingRuleEffect extends ContinuousEffectImpl {
pool.addDoNotEmptyManaType(ManaType.RED);
pool.addDoNotEmptyManaType(ManaType.BLACK);
pool.addDoNotEmptyManaType(ManaType.COLORLESS);
- }
+ }
}
return true;
}
- return false;
+ return false;
}
@Override
diff --git a/Mage.Sets/src/mage/cards/u/UrDrago.java b/Mage.Sets/src/mage/cards/u/UrDrago.java
index 42fbfc35053..0999d5cd983 100644
--- a/Mage.Sets/src/mage/cards/u/UrDrago.java
+++ b/Mage.Sets/src/mage/cards/u/UrDrago.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class UrDrago extends CardImpl {
+public final class UrDrago extends CardImpl {
public UrDrago(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UrGolemsEye.java b/Mage.Sets/src/mage/cards/u/UrGolemsEye.java
index 85b0fa58274..8c401a41d15 100644
--- a/Mage.Sets/src/mage/cards/u/UrGolemsEye.java
+++ b/Mage.Sets/src/mage/cards/u/UrGolemsEye.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class UrGolemsEye extends CardImpl {
+public final class UrGolemsEye extends CardImpl {
public UrGolemsEye(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/u/UrabraskTheHidden.java b/Mage.Sets/src/mage/cards/u/UrabraskTheHidden.java
index 671791e7c7b..5989260f4b8 100644
--- a/Mage.Sets/src/mage/cards/u/UrabraskTheHidden.java
+++ b/Mage.Sets/src/mage/cards/u/UrabraskTheHidden.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author Loki
*/
-public class UrabraskTheHidden extends CardImpl {
+public final class UrabraskTheHidden extends CardImpl {
public UrabraskTheHidden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UrbanBurgeoning.java b/Mage.Sets/src/mage/cards/u/UrbanBurgeoning.java
index edd2f4421ea..c6332bb6fd5 100644
--- a/Mage.Sets/src/mage/cards/u/UrbanBurgeoning.java
+++ b/Mage.Sets/src/mage/cards/u/UrbanBurgeoning.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class UrbanBurgeoning extends CardImpl {
+public final class UrbanBurgeoning extends CardImpl {
static final String rule = "Enchanted land has \"Untap this land during each other player's untap step.\"";
diff --git a/Mage.Sets/src/mage/cards/u/UrbanEvolution.java b/Mage.Sets/src/mage/cards/u/UrbanEvolution.java
index e8edc57e020..c3961085fa8 100644
--- a/Mage.Sets/src/mage/cards/u/UrbanEvolution.java
+++ b/Mage.Sets/src/mage/cards/u/UrbanEvolution.java
@@ -40,7 +40,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class UrbanEvolution extends CardImpl {
+public final class UrbanEvolution extends CardImpl {
public UrbanEvolution(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/u/UrbisProtector.java b/Mage.Sets/src/mage/cards/u/UrbisProtector.java
index 6c5ca19fb9b..f193d0ac236 100644
--- a/Mage.Sets/src/mage/cards/u/UrbisProtector.java
+++ b/Mage.Sets/src/mage/cards/u/UrbisProtector.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.AngelToken;
*
* @author LevelX2
*/
-public class UrbisProtector extends CardImpl {
+public final class UrbisProtector extends CardImpl {
public UrbisProtector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/u/Urborg.java b/Mage.Sets/src/mage/cards/u/Urborg.java
index 52e764b59bc..3d1ab3adb1b 100644
--- a/Mage.Sets/src/mage/cards/u/Urborg.java
+++ b/Mage.Sets/src/mage/cards/u/Urborg.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class Urborg extends CardImpl {
+public final class Urborg extends CardImpl {
public Urborg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/u/UrborgDrake.java b/Mage.Sets/src/mage/cards/u/UrborgDrake.java
index d2b999eece6..7f0ced309a5 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgDrake.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
* @author LoneFox
*/
-public class UrborgDrake extends CardImpl {
+public final class UrborgDrake extends CardImpl {
public UrborgDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UrborgElf.java b/Mage.Sets/src/mage/cards/u/UrborgElf.java
index 939dab98fc3..f008b29a0d5 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgElf.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgElf.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author EvilGeek
*/
-public class UrborgElf extends CardImpl {
+public final class UrborgElf extends CardImpl {
public UrborgElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UrborgEmissary.java b/Mage.Sets/src/mage/cards/u/UrborgEmissary.java
index f8690f1e8a4..c9d4ed34495 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgEmissary.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgEmissary.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
* @author LoneFox
*/
-public class UrborgEmissary extends CardImpl {
+public final class UrborgEmissary extends CardImpl {
public UrborgEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UrborgJustice.java b/Mage.Sets/src/mage/cards/u/UrborgJustice.java
index 4c62f5aa261..e78871edad7 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgJustice.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgJustice.java
@@ -44,7 +44,7 @@ import mage.watchers.common.CreaturesDiedWatcher;
*
* @author andyfries
*/
-public class UrborgJustice extends CardImpl {
+public final class UrborgJustice extends CardImpl {
public UrborgJustice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UrborgMindsucker.java b/Mage.Sets/src/mage/cards/u/UrborgMindsucker.java
index e828d870f45..5cb292391e0 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgMindsucker.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgMindsucker.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class UrborgMindsucker extends CardImpl {
+public final class UrborgMindsucker extends CardImpl {
public UrborgMindsucker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UrborgPhantom.java b/Mage.Sets/src/mage/cards/u/UrborgPhantom.java
index f800c151c5d..3cc299a692b 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgPhantom.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgPhantom.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class UrborgPhantom extends CardImpl {
+public final class UrborgPhantom extends CardImpl {
public UrborgPhantom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UrborgShambler.java b/Mage.Sets/src/mage/cards/u/UrborgShambler.java
index b58e6190ddf..bb112bcb403 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgShambler.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgShambler.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*/
-public class UrborgShambler extends CardImpl {
+public final class UrborgShambler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creatures");
diff --git a/Mage.Sets/src/mage/cards/u/UrborgSkeleton.java b/Mage.Sets/src/mage/cards/u/UrborgSkeleton.java
index 2ce0b055bd4..d8ba4d7d58b 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgSkeleton.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgSkeleton.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class UrborgSkeleton extends CardImpl {
+public final class UrborgSkeleton extends CardImpl {
private static final String staticText = "If {this} was kicked, it enters the battlefield with a +1/+1 counter on it.";
diff --git a/Mage.Sets/src/mage/cards/u/UrborgStalker.java b/Mage.Sets/src/mage/cards/u/UrborgStalker.java
index 1f4765e21fe..27167062eae 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgStalker.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgStalker.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class UrborgStalker extends CardImpl {
+public final class UrborgStalker extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent();
diff --git a/Mage.Sets/src/mage/cards/u/UrborgSyphonMage.java b/Mage.Sets/src/mage/cards/u/UrborgSyphonMage.java
index 9c5c4b094d6..c57d762496c 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgSyphonMage.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgSyphonMage.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class UrborgSyphonMage extends CardImpl {
+public final class UrborgSyphonMage extends CardImpl {
public UrborgSyphonMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UrborgTombOfYawgmoth.java b/Mage.Sets/src/mage/cards/u/UrborgTombOfYawgmoth.java
index 8b0e0604135..6dd89e7d75b 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgTombOfYawgmoth.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgTombOfYawgmoth.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class UrborgTombOfYawgmoth extends CardImpl {
+public final class UrborgTombOfYawgmoth extends CardImpl {
public UrborgTombOfYawgmoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/u/UrborgUprising.java b/Mage.Sets/src/mage/cards/u/UrborgUprising.java
index 9878fec869d..a5588081f4d 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgUprising.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgUprising.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
/**
* @author Laxika
*/
-public class UrborgUprising extends CardImpl {
+public final class UrborgUprising extends CardImpl {
public UrborgUprising(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UrborgVolcano.java b/Mage.Sets/src/mage/cards/u/UrborgVolcano.java
index bdb28fd1283..f5e9141bb58 100644
--- a/Mage.Sets/src/mage/cards/u/UrborgVolcano.java
+++ b/Mage.Sets/src/mage/cards/u/UrborgVolcano.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Plopman
*/
-public class UrborgVolcano extends CardImpl {
+public final class UrborgVolcano extends CardImpl {
public UrborgVolcano(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/u/UrgeToFeed.java b/Mage.Sets/src/mage/cards/u/UrgeToFeed.java
index 353ec825ffa..4f646e848cd 100644
--- a/Mage.Sets/src/mage/cards/u/UrgeToFeed.java
+++ b/Mage.Sets/src/mage/cards/u/UrgeToFeed.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class UrgeToFeed extends CardImpl {
+public final class UrgeToFeed extends CardImpl {
public UrgeToFeed(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/u/UrgentExorcism.java b/Mage.Sets/src/mage/cards/u/UrgentExorcism.java
index a70edc320bb..4e4d546f4e0 100644
--- a/Mage.Sets/src/mage/cards/u/UrgentExorcism.java
+++ b/Mage.Sets/src/mage/cards/u/UrgentExorcism.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author nantuko
*/
-public class UrgentExorcism extends CardImpl {
+public final class UrgentExorcism extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Spirit or enchantment");
diff --git a/Mage.Sets/src/mage/cards/u/UrgorosTheEmptyOne.java b/Mage.Sets/src/mage/cards/u/UrgorosTheEmptyOne.java
index 2ff95da3744..3eb097bf704 100644
--- a/Mage.Sets/src/mage/cards/u/UrgorosTheEmptyOne.java
+++ b/Mage.Sets/src/mage/cards/u/UrgorosTheEmptyOne.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class UrgorosTheEmptyOne extends CardImpl {
+public final class UrgorosTheEmptyOne extends CardImpl {
public UrgorosTheEmptyOne(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UrilTheMiststalker.java b/Mage.Sets/src/mage/cards/u/UrilTheMiststalker.java
index 84c61b2e805..ae2b5ddd378 100644
--- a/Mage.Sets/src/mage/cards/u/UrilTheMiststalker.java
+++ b/Mage.Sets/src/mage/cards/u/UrilTheMiststalker.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class UrilTheMiststalker extends CardImpl {
+public final class UrilTheMiststalker extends CardImpl {
public UrilTheMiststalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/u/Ursapine.java b/Mage.Sets/src/mage/cards/u/Ursapine.java
index f1ef4d30983..a67a6a61588 100644
--- a/Mage.Sets/src/mage/cards/u/Ursapine.java
+++ b/Mage.Sets/src/mage/cards/u/Ursapine.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Ursapine extends CardImpl {
+public final class Ursapine extends CardImpl {
public Ursapine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UrsineFylgja.java b/Mage.Sets/src/mage/cards/u/UrsineFylgja.java
index b6f0f976bdc..8c69c560c03 100644
--- a/Mage.Sets/src/mage/cards/u/UrsineFylgja.java
+++ b/Mage.Sets/src/mage/cards/u/UrsineFylgja.java
@@ -48,7 +48,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class UrsineFylgja extends CardImpl {
+public final class UrsineFylgja extends CardImpl {
public UrsineFylgja(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasArmor.java b/Mage.Sets/src/mage/cards/u/UrzasArmor.java
index 46ab246714c..505bb696b8b 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasArmor.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasArmor.java
@@ -43,7 +43,7 @@ import mage.game.events.GameEvent;
*
* @author Backfir3
*/
-public class UrzasArmor extends CardImpl {
+public final class UrzasArmor extends CardImpl {
public UrzasArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasAvenger.java b/Mage.Sets/src/mage/cards/u/UrzasAvenger.java
index e16b83fa6a4..a34569e0397 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasAvenger.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasAvenger.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author Styxo & L_J
*/
-public class UrzasAvenger extends CardImpl {
+public final class UrzasAvenger extends CardImpl {
public UrzasAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT,CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasBauble.java b/Mage.Sets/src/mage/cards/u/UrzasBauble.java
index f880b8d90b6..e05c9eefe16 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasBauble.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasBauble.java
@@ -53,7 +53,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class UrzasBauble extends CardImpl {
+public final class UrzasBauble extends CardImpl {
public UrzasBauble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasBlueprints.java b/Mage.Sets/src/mage/cards/u/UrzasBlueprints.java
index d083dd26eb4..85747bd7ef5 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasBlueprints.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasBlueprints.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class UrzasBlueprints extends CardImpl {
+public final class UrzasBlueprints extends CardImpl {
public UrzasBlueprints(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasChalice.java b/Mage.Sets/src/mage/cards/u/UrzasChalice.java
index 39e4359f059..1f6b1be96a0 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasChalice.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasChalice.java
@@ -44,7 +44,7 @@ import mage.game.stack.Spell;
*
* @author MarcoMarin
*/
-public class UrzasChalice extends CardImpl {
+public final class UrzasChalice extends CardImpl {
public UrzasChalice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasEngine.java b/Mage.Sets/src/mage/cards/u/UrzasEngine.java
index b7b11e66b0d..f224fdd5c4a 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasEngine.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasEngine.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class UrzasEngine extends CardImpl {
+public final class UrzasEngine extends CardImpl {
public UrzasEngine (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasFactory.java b/Mage.Sets/src/mage/cards/u/UrzasFactory.java
index fb835fa5ee0..c1217470be5 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasFactory.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasFactory.java
@@ -46,7 +46,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class UrzasFactory extends CardImpl {
+public final class UrzasFactory extends CardImpl {
public UrzasFactory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasFilter.java b/Mage.Sets/src/mage/cards/u/UrzasFilter.java
index 631a522980e..05d406f7451 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasFilter.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasFilter.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.MulticoloredPredicate;
*
* @author LevelX2
*/
-public class UrzasFilter extends CardImpl {
+public final class UrzasFilter extends CardImpl {
private static final FilterCard filter = new FilterCard("multicolored spells");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasGuilt.java b/Mage.Sets/src/mage/cards/u/UrzasGuilt.java
index a3224df09e1..c47f8933e3f 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasGuilt.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasGuilt.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class UrzasGuilt extends CardImpl {
+public final class UrzasGuilt extends CardImpl {
public UrzasGuilt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasIncubator.java b/Mage.Sets/src/mage/cards/u/UrzasIncubator.java
index 641133f89b9..82ada92943c 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasIncubator.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasIncubator.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author LoneFox
*/
-public class UrzasIncubator extends CardImpl {
+public final class UrzasIncubator extends CardImpl {
public UrzasIncubator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasMine.java b/Mage.Sets/src/mage/cards/u/UrzasMine.java
index db0b427bfc9..5de0dd77d18 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasMine.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasMine.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author Melkhior
*/
-public class UrzasMine extends CardImpl {
+public final class UrzasMine extends CardImpl {
public UrzasMine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
this.subtype.add(SubType.URZAS, SubType.MINE);
diff --git a/Mage.Sets/src/mage/cards/u/UrzasMiter.java b/Mage.Sets/src/mage/cards/u/UrzasMiter.java
index 0c33bd236c6..e70696ab9fe 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasMiter.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasMiter.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author MarcoMarin
*/
-public class UrzasMiter extends CardImpl {
+public final class UrzasMiter extends CardImpl {
public UrzasMiter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasPowerPlant.java b/Mage.Sets/src/mage/cards/u/UrzasPowerPlant.java
index d68708715de..07b1241d737 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasPowerPlant.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasPowerPlant.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author Melkhior
*/
-public class UrzasPowerPlant extends CardImpl {
+public final class UrzasPowerPlant extends CardImpl {
public UrzasPowerPlant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
this.subtype.add(SubType.URZAS, SubType.POWER_PLANT);
diff --git a/Mage.Sets/src/mage/cards/u/UrzasRage.java b/Mage.Sets/src/mage/cards/u/UrzasRage.java
index 0cf2a8ced4a..d6b50bcdd49 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasRage.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasRage.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author FenrisulfrX
*/
-public class UrzasRage extends CardImpl {
+public final class UrzasRage extends CardImpl {
public UrzasRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasRuinousBlast.java b/Mage.Sets/src/mage/cards/u/UrzasRuinousBlast.java
index 145e993132a..b0e6b9cd20e 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasRuinousBlast.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasRuinousBlast.java
@@ -17,7 +17,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
* @author JRHerlehy
* Created on 4/8/18.
*/
-public class UrzasRuinousBlast extends CardImpl {
+public final class UrzasRuinousBlast extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("nonland permanents that aren’t legendary");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasScienceFairProject.java b/Mage.Sets/src/mage/cards/u/UrzasScienceFairProject.java
index 696b624ae84..bc9342a8961 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasScienceFairProject.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasScienceFairProject.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class UrzasScienceFairProject extends CardImpl {
+public final class UrzasScienceFairProject extends CardImpl {
public UrzasScienceFairProject(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasTome.java b/Mage.Sets/src/mage/cards/u/UrzasTome.java
index 37e8e5e2a05..314825183c0 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasTome.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasTome.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author TheElk801
*/
-public class UrzasTome extends CardImpl {
+public final class UrzasTome extends CardImpl {
public UrzasTome(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/u/UrzasTower.java b/Mage.Sets/src/mage/cards/u/UrzasTower.java
index e7026b0155b..5aa4172dd1d 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasTower.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasTower.java
@@ -42,7 +42,7 @@ import java.util.UUID;
*
* @author Melkhior
*/
-public class UrzasTower extends CardImpl {
+public final class UrzasTower extends CardImpl {
public UrzasTower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
this.subtype.add(SubType.URZAS, SubType.TOWER);
diff --git a/Mage.Sets/src/mage/cards/u/UthdenTroll.java b/Mage.Sets/src/mage/cards/u/UthdenTroll.java
index c9e7f9dcc5d..a35fc9ae17f 100644
--- a/Mage.Sets/src/mage/cards/u/UthdenTroll.java
+++ b/Mage.Sets/src/mage/cards/u/UthdenTroll.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author dustinconrad
*/
-public class UthdenTroll extends CardImpl {
+public final class UthdenTroll extends CardImpl {
public UthdenTroll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UtopiaMycon.java b/Mage.Sets/src/mage/cards/u/UtopiaMycon.java
index b600c3dbe57..c2731730ef7 100644
--- a/Mage.Sets/src/mage/cards/u/UtopiaMycon.java
+++ b/Mage.Sets/src/mage/cards/u/UtopiaMycon.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class UtopiaMycon extends CardImpl {
+public final class UtopiaMycon extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling");
diff --git a/Mage.Sets/src/mage/cards/u/UtopiaSprawl.java b/Mage.Sets/src/mage/cards/u/UtopiaSprawl.java
index 441f29cfc38..2ab9a178be2 100644
--- a/Mage.Sets/src/mage/cards/u/UtopiaSprawl.java
+++ b/Mage.Sets/src/mage/cards/u/UtopiaSprawl.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class UtopiaSprawl extends CardImpl {
+public final class UtopiaSprawl extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.FOREST, "Forest");
@@ -69,7 +69,7 @@ public class UtopiaSprawl extends CardImpl {
this.addAbility(ability);
// As Utopia Sprawl enters the battlefield, choose a color.
this.addAbility(new AsEntersBattlefieldAbility(new ChooseColorEffect(Outcome.Detriment)));
- // Whenever enchanted Forest is tapped for mana, its controller adds one mana of the chosen color to their mana pool.
+ // Whenever enchanted Forest is tapped for mana, its controller adds one mana of the chosen color.
this.addAbility(new UtopiaSprawlTriggeredAbility());
}
@@ -111,7 +111,7 @@ class UtopiaSprawlTriggeredAbility extends TriggeredManaAbility {
@Override
public String getRule() {
- return "Whenever enchanted Forest is tapped for mana, its controller adds one mana of the chosen color to their mana pool.";
+ return "Whenever enchanted Forest is tapped for mana, its controller adds one mana of the chosen color.";
}
}
@@ -119,7 +119,7 @@ class UtopiaSprawlEffect extends ManaEffect {
public UtopiaSprawlEffect() {
super();
- staticText = "its controller adds one mana of the chosen color to their mana pool";
+ staticText = "its controller adds one mana of the chosen color";
}
public UtopiaSprawlEffect(final UtopiaSprawlEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/u/UtopiaTree.java b/Mage.Sets/src/mage/cards/u/UtopiaTree.java
index c422948ef05..4315bad5316 100644
--- a/Mage.Sets/src/mage/cards/u/UtopiaTree.java
+++ b/Mage.Sets/src/mage/cards/u/UtopiaTree.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class UtopiaTree extends CardImpl {
+public final class UtopiaTree extends CardImpl {
public UtopiaTree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UtopiaVow.java b/Mage.Sets/src/mage/cards/u/UtopiaVow.java
index ff90e496769..1f32e8aa3c6 100644
--- a/Mage.Sets/src/mage/cards/u/UtopiaVow.java
+++ b/Mage.Sets/src/mage/cards/u/UtopiaVow.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class UtopiaVow extends CardImpl {
+public final class UtopiaVow extends CardImpl {
public UtopiaVow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/u/UtterEnd.java b/Mage.Sets/src/mage/cards/u/UtterEnd.java
index b5625e060b6..c2a1ca7f99e 100644
--- a/Mage.Sets/src/mage/cards/u/UtterEnd.java
+++ b/Mage.Sets/src/mage/cards/u/UtterEnd.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class UtterEnd extends CardImpl {
+public final class UtterEnd extends CardImpl {
public UtterEnd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/u/UtvaraHellkite.java b/Mage.Sets/src/mage/cards/u/UtvaraHellkite.java
index 981cc36eaa0..eabf1d6dee6 100644
--- a/Mage.Sets/src/mage/cards/u/UtvaraHellkite.java
+++ b/Mage.Sets/src/mage/cards/u/UtvaraHellkite.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.UtvaraHellkiteDragonToken;
*
* @author LevelX2
*/
-public class UtvaraHellkite extends CardImpl {
+public final class UtvaraHellkite extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Dragon you control");
diff --git a/Mage.Sets/src/mage/cards/u/UtvaraScalper.java b/Mage.Sets/src/mage/cards/u/UtvaraScalper.java
index 428a2dd546f..9b6ae9e92a8 100644
--- a/Mage.Sets/src/mage/cards/u/UtvaraScalper.java
+++ b/Mage.Sets/src/mage/cards/u/UtvaraScalper.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class UtvaraScalper extends CardImpl {
+public final class UtvaraScalper extends CardImpl {
public UtvaraScalper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/u/UyoSilentProphet.java b/Mage.Sets/src/mage/cards/u/UyoSilentProphet.java
index 560f9dd34f2..64084139d74 100644
--- a/Mage.Sets/src/mage/cards/u/UyoSilentProphet.java
+++ b/Mage.Sets/src/mage/cards/u/UyoSilentProphet.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class UyoSilentProphet extends CardImpl {
+public final class UyoSilentProphet extends CardImpl {
public UyoSilentProphet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VWing.java b/Mage.Sets/src/mage/cards/v/VWing.java
index 8a0969587cd..f6fab5f2bac 100644
--- a/Mage.Sets/src/mage/cards/v/VWing.java
+++ b/Mage.Sets/src/mage/cards/v/VWing.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class VWing extends CardImpl {
+public final class VWing extends CardImpl {
public VWing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/Vacuumelt.java b/Mage.Sets/src/mage/cards/v/Vacuumelt.java
index c4a2a59ae7f..bea8e640ce5 100644
--- a/Mage.Sets/src/mage/cards/v/Vacuumelt.java
+++ b/Mage.Sets/src/mage/cards/v/Vacuumelt.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Vacuumelt extends CardImpl {
+public final class Vacuumelt extends CardImpl {
public Vacuumelt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VaevictisAsmadi.java b/Mage.Sets/src/mage/cards/v/VaevictisAsmadi.java
index 11d9c7861c6..0c3b805b5b9 100644
--- a/Mage.Sets/src/mage/cards/v/VaevictisAsmadi.java
+++ b/Mage.Sets/src/mage/cards/v/VaevictisAsmadi.java
@@ -43,7 +43,7 @@ import mage.constants.*;
*
* @author LoneFox
*/
-public class VaevictisAsmadi extends CardImpl {
+public final class VaevictisAsmadi extends CardImpl {
public VaevictisAsmadi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}{R}{R}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VagrantPlowbeasts.java b/Mage.Sets/src/mage/cards/v/VagrantPlowbeasts.java
index c6d7e21d391..4a32eed2114 100644
--- a/Mage.Sets/src/mage/cards/v/VagrantPlowbeasts.java
+++ b/Mage.Sets/src/mage/cards/v/VagrantPlowbeasts.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class VagrantPlowbeasts extends CardImpl {
+public final class VagrantPlowbeasts extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
diff --git a/Mage.Sets/src/mage/cards/v/ValakutFireboar.java b/Mage.Sets/src/mage/cards/v/ValakutFireboar.java
index 310e597435c..41794a461d7 100644
--- a/Mage.Sets/src/mage/cards/v/ValakutFireboar.java
+++ b/Mage.Sets/src/mage/cards/v/ValakutFireboar.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class ValakutFireboar extends CardImpl {
+public final class ValakutFireboar extends CardImpl {
public ValakutFireboar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ValakutInvoker.java b/Mage.Sets/src/mage/cards/v/ValakutInvoker.java
index 73af292d614..e692fee1466 100644
--- a/Mage.Sets/src/mage/cards/v/ValakutInvoker.java
+++ b/Mage.Sets/src/mage/cards/v/ValakutInvoker.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LevelX2
*/
-public class ValakutInvoker extends CardImpl {
+public final class ValakutInvoker extends CardImpl {
public ValakutInvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ValakutPredator.java b/Mage.Sets/src/mage/cards/v/ValakutPredator.java
index 2ebb6cb1cec..ab98378c184 100644
--- a/Mage.Sets/src/mage/cards/v/ValakutPredator.java
+++ b/Mage.Sets/src/mage/cards/v/ValakutPredator.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class ValakutPredator extends CardImpl {
+public final class ValakutPredator extends CardImpl {
public ValakutPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ValakutTheMoltenPinnacle.java b/Mage.Sets/src/mage/cards/v/ValakutTheMoltenPinnacle.java
index 4f3a1c3d289..432792cc66b 100644
--- a/Mage.Sets/src/mage/cards/v/ValakutTheMoltenPinnacle.java
+++ b/Mage.Sets/src/mage/cards/v/ValakutTheMoltenPinnacle.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Viserion
*/
-public class ValakutTheMoltenPinnacle extends CardImpl {
+public final class ValakutTheMoltenPinnacle extends CardImpl {
static final FilterLandPermanent filter = new FilterLandPermanent("Mountain");
diff --git a/Mage.Sets/src/mage/cards/v/ValdukKeeperOfTheFlame.java b/Mage.Sets/src/mage/cards/v/ValdukKeeperOfTheFlame.java
index bf7d338fe6a..71643612882 100644
--- a/Mage.Sets/src/mage/cards/v/ValdukKeeperOfTheFlame.java
+++ b/Mage.Sets/src/mage/cards/v/ValdukKeeperOfTheFlame.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.ValdukElementalToken;
*
* @author spjspj
*/
-public class ValdukKeeperOfTheFlame extends CardImpl {
+public final class ValdukKeeperOfTheFlame extends CardImpl {
public ValdukKeeperOfTheFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ValeronOutlander.java b/Mage.Sets/src/mage/cards/v/ValeronOutlander.java
index fa8b0857b2b..28140188cf6 100644
--- a/Mage.Sets/src/mage/cards/v/ValeronOutlander.java
+++ b/Mage.Sets/src/mage/cards/v/ValeronOutlander.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ValeronOutlander extends CardImpl {
+public final class ValeronOutlander extends CardImpl {
public ValeronOutlander(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/ValeronWardens.java b/Mage.Sets/src/mage/cards/v/ValeronWardens.java
index dc6f811dc55..0e970a5d31b 100644
--- a/Mage.Sets/src/mage/cards/v/ValeronWardens.java
+++ b/Mage.Sets/src/mage/cards/v/ValeronWardens.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class ValeronWardens extends CardImpl {
+public final class ValeronWardens extends CardImpl {
public ValeronWardens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/ValiantGuard.java b/Mage.Sets/src/mage/cards/v/ValiantGuard.java
index 2001094d059..f7d63a87c9c 100644
--- a/Mage.Sets/src/mage/cards/v/ValiantGuard.java
+++ b/Mage.Sets/src/mage/cards/v/ValiantGuard.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ValiantGuard extends CardImpl {
+public final class ValiantGuard extends CardImpl {
public ValiantGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/v/ValleyDasher.java b/Mage.Sets/src/mage/cards/v/ValleyDasher.java
index fdb35bf12b1..76cbe61bfd8 100644
--- a/Mage.Sets/src/mage/cards/v/ValleyDasher.java
+++ b/Mage.Sets/src/mage/cards/v/ValleyDasher.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ValleyDasher extends CardImpl {
+public final class ValleyDasher extends CardImpl {
public ValleyDasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ValleyRannet.java b/Mage.Sets/src/mage/cards/v/ValleyRannet.java
index 2ad4f0be2cd..86e9a874732 100644
--- a/Mage.Sets/src/mage/cards/v/ValleyRannet.java
+++ b/Mage.Sets/src/mage/cards/v/ValleyRannet.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class ValleyRannet extends CardImpl {
+public final class ValleyRannet extends CardImpl {
public ValleyRannet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/Valleymaker.java b/Mage.Sets/src/mage/cards/v/Valleymaker.java
index 93283100403..ddc57b95890 100644
--- a/Mage.Sets/src/mage/cards/v/Valleymaker.java
+++ b/Mage.Sets/src/mage/cards/v/Valleymaker.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class Valleymaker extends CardImpl {
+public final class Valleymaker extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Mountain");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("a Forest");
@@ -74,7 +74,7 @@ public class Valleymaker extends CardImpl {
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
- // {tap}, Sacrifice a Forest: Choose a player. That player adds {G}{G}{G} to their mana pool.
+ // {tap}, Sacrifice a Forest: Choose a player. That player adds {G}{G}{G}.
Ability ability2 = new SimpleManaAbility(Zone.BATTLEFIELD, new AddManaToManaPoolTargetControllerEffect(Mana.GreenMana(3), "chosen player"), new TapSourceCost());
ability2.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter2)));
ability2.addTarget(new TargetPlayer(1, 1, true));
diff --git a/Mage.Sets/src/mage/cards/v/Valor.java b/Mage.Sets/src/mage/cards/v/Valor.java
index 95716d2b7ca..aeb9dad979a 100644
--- a/Mage.Sets/src/mage/cards/v/Valor.java
+++ b/Mage.Sets/src/mage/cards/v/Valor.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Backfir3
*/
-public class Valor extends CardImpl {
+public final class Valor extends CardImpl {
private static final String ruleText = "As long as Valor is in your graveyard and you control a Plains, creatures you control have first strike";
diff --git a/Mage.Sets/src/mage/cards/v/ValorInAkros.java b/Mage.Sets/src/mage/cards/v/ValorInAkros.java
index 068eec9cdee..d8eaaa8bad3 100644
--- a/Mage.Sets/src/mage/cards/v/ValorInAkros.java
+++ b/Mage.Sets/src/mage/cards/v/ValorInAkros.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class ValorInAkros extends CardImpl {
+public final class ValorInAkros extends CardImpl {
public ValorInAkros(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/ValorMadeReal.java b/Mage.Sets/src/mage/cards/v/ValorMadeReal.java
index 17aaa5fa982..d176a871a23 100644
--- a/Mage.Sets/src/mage/cards/v/ValorMadeReal.java
+++ b/Mage.Sets/src/mage/cards/v/ValorMadeReal.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ValorMadeReal extends CardImpl {
+public final class ValorMadeReal extends CardImpl {
public ValorMadeReal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/v/ValorousCharge.java b/Mage.Sets/src/mage/cards/v/ValorousCharge.java
index ec0d0b05a7b..070e6e4a324 100644
--- a/Mage.Sets/src/mage/cards/v/ValorousCharge.java
+++ b/Mage.Sets/src/mage/cards/v/ValorousCharge.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author fireshoes
*/
-public class ValorousCharge extends CardImpl {
+public final class ValorousCharge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures");
diff --git a/Mage.Sets/src/mage/cards/v/ValorousStance.java b/Mage.Sets/src/mage/cards/v/ValorousStance.java
index 3d05d186ae0..f865a949d95 100644
--- a/Mage.Sets/src/mage/cards/v/ValorousStance.java
+++ b/Mage.Sets/src/mage/cards/v/ValorousStance.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ValorousStance extends CardImpl {
+public final class ValorousStance extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with toughness 4 or greater");
diff --git a/Mage.Sets/src/mage/cards/v/VampireAristocrat.java b/Mage.Sets/src/mage/cards/v/VampireAristocrat.java
index 337a7887fe2..6e9e207b023 100644
--- a/Mage.Sets/src/mage/cards/v/VampireAristocrat.java
+++ b/Mage.Sets/src/mage/cards/v/VampireAristocrat.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class VampireAristocrat extends CardImpl {
+public final class VampireAristocrat extends CardImpl {
public VampireAristocrat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireBats.java b/Mage.Sets/src/mage/cards/v/VampireBats.java
index 61fde08c1ae..76389c1339e 100644
--- a/Mage.Sets/src/mage/cards/v/VampireBats.java
+++ b/Mage.Sets/src/mage/cards/v/VampireBats.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class VampireBats extends CardImpl {
+public final class VampireBats extends CardImpl {
public VampireBats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireChampion.java b/Mage.Sets/src/mage/cards/v/VampireChampion.java
index 95bb4358c93..b32d40be931 100644
--- a/Mage.Sets/src/mage/cards/v/VampireChampion.java
+++ b/Mage.Sets/src/mage/cards/v/VampireChampion.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class VampireChampion extends CardImpl {
+public final class VampireChampion extends CardImpl {
public VampireChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireCharmseeker.java b/Mage.Sets/src/mage/cards/v/VampireCharmseeker.java
new file mode 100644
index 00000000000..d094cc475e2
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/v/VampireCharmseeker.java
@@ -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.v;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.ReturnToHandTargetEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.AssistAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.filter.FilterCard;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.target.common.TargetCardInGraveyard;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class VampireCharmseeker extends CardImpl {
+
+ private static final FilterCard filter = new FilterCard("instant, sorcery, or creature card from a graveyard");
+
+ static {
+ filter.add(Predicates.or(
+ new CardTypePredicate(CardType.INSTANT),
+ new CardTypePredicate(CardType.SORCERY),
+ new CardTypePredicate(CardType.CREATURE)
+ ));
+ }
+
+ public VampireCharmseeker(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{U}{B}");
+
+ this.subtype.add(SubType.VAMPIRE);
+ this.subtype.add(SubType.WIZARD);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(4);
+
+ // Assist
+ this.addAbility(new AssistAbility());
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // When Vampire Charmseeker enters the battlefield, return target instant, sorcery, or creature card from a graveyard to its owner's hand.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), false);
+ ability.addTarget(new TargetCardInGraveyard(filter));
+ this.addAbility(ability);
+ }
+
+ public VampireCharmseeker(final VampireCharmseeker card) {
+ super(card);
+ }
+
+ @Override
+ public VampireCharmseeker copy() {
+ return new VampireCharmseeker(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/v/VampireCutthroat.java b/Mage.Sets/src/mage/cards/v/VampireCutthroat.java
index a83227695c8..c7488731736 100644
--- a/Mage.Sets/src/mage/cards/v/VampireCutthroat.java
+++ b/Mage.Sets/src/mage/cards/v/VampireCutthroat.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class VampireCutthroat extends CardImpl {
+public final class VampireCutthroat extends CardImpl {
public VampireCutthroat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireEnvoy.java b/Mage.Sets/src/mage/cards/v/VampireEnvoy.java
index 49c13a1062b..193cb88abde 100644
--- a/Mage.Sets/src/mage/cards/v/VampireEnvoy.java
+++ b/Mage.Sets/src/mage/cards/v/VampireEnvoy.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class VampireEnvoy extends CardImpl {
+public final class VampireEnvoy extends CardImpl {
public VampireEnvoy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireHexmage.java b/Mage.Sets/src/mage/cards/v/VampireHexmage.java
index db0f6a2d062..fc24180b371 100644
--- a/Mage.Sets/src/mage/cards/v/VampireHexmage.java
+++ b/Mage.Sets/src/mage/cards/v/VampireHexmage.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author Loki, nantuko
*/
-public class VampireHexmage extends CardImpl {
+public final class VampireHexmage extends CardImpl {
public VampireHexmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireHounds.java b/Mage.Sets/src/mage/cards/v/VampireHounds.java
index 4a65698a52b..ed14f4943cb 100644
--- a/Mage.Sets/src/mage/cards/v/VampireHounds.java
+++ b/Mage.Sets/src/mage/cards/v/VampireHounds.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class VampireHounds extends CardImpl {
+public final class VampireHounds extends CardImpl {
public VampireHounds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireInterloper.java b/Mage.Sets/src/mage/cards/v/VampireInterloper.java
index 4aaf6d2cd89..212ac7b3ff1 100644
--- a/Mage.Sets/src/mage/cards/v/VampireInterloper.java
+++ b/Mage.Sets/src/mage/cards/v/VampireInterloper.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author nantuko
*/
-public class VampireInterloper extends CardImpl {
+public final class VampireInterloper extends CardImpl {
public VampireInterloper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireLacerator.java b/Mage.Sets/src/mage/cards/v/VampireLacerator.java
index 82cbb2295af..7c7f5859a77 100644
--- a/Mage.Sets/src/mage/cards/v/VampireLacerator.java
+++ b/Mage.Sets/src/mage/cards/v/VampireLacerator.java
@@ -44,7 +44,7 @@ import mage.constants.TargetController;
*
* @author maurer.it_at_gmail.com
*/
-public class VampireLacerator extends CardImpl {
+public final class VampireLacerator extends CardImpl {
public VampireLacerator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireNighthawk.java b/Mage.Sets/src/mage/cards/v/VampireNighthawk.java
index 9a891f5aa13..283662d77b5 100644
--- a/Mage.Sets/src/mage/cards/v/VampireNighthawk.java
+++ b/Mage.Sets/src/mage/cards/v/VampireNighthawk.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author maurer.it_at_gmail.com
*/
-public class VampireNighthawk extends CardImpl {
+public final class VampireNighthawk extends CardImpl {
public VampireNighthawk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireNoble.java b/Mage.Sets/src/mage/cards/v/VampireNoble.java
index b3f410f11c0..7e911ea9abc 100644
--- a/Mage.Sets/src/mage/cards/v/VampireNoble.java
+++ b/Mage.Sets/src/mage/cards/v/VampireNoble.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class VampireNoble extends CardImpl {
+public final class VampireNoble extends CardImpl {
public VampireNoble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireNocturnus.java b/Mage.Sets/src/mage/cards/v/VampireNocturnus.java
index 87637e5fc58..37a64465e61 100644
--- a/Mage.Sets/src/mage/cards/v/VampireNocturnus.java
+++ b/Mage.Sets/src/mage/cards/v/VampireNocturnus.java
@@ -56,7 +56,7 @@ import mage.players.Player;
*
* @author North
*/
-public class VampireNocturnus extends CardImpl {
+public final class VampireNocturnus extends CardImpl {
public VampireNocturnus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireOutcasts.java b/Mage.Sets/src/mage/cards/v/VampireOutcasts.java
index 181c3c4f471..f70189e6ca9 100644
--- a/Mage.Sets/src/mage/cards/v/VampireOutcasts.java
+++ b/Mage.Sets/src/mage/cards/v/VampireOutcasts.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class VampireOutcasts extends CardImpl {
+public final class VampireOutcasts extends CardImpl {
public VampireOutcasts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireRevenant.java b/Mage.Sets/src/mage/cards/v/VampireRevenant.java
index 72de130b76a..8be7b161f77 100644
--- a/Mage.Sets/src/mage/cards/v/VampireRevenant.java
+++ b/Mage.Sets/src/mage/cards/v/VampireRevenant.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class VampireRevenant extends CardImpl {
+public final class VampireRevenant extends CardImpl {
public VampireRevenant (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampireWarlord.java b/Mage.Sets/src/mage/cards/v/VampireWarlord.java
index cf6edaa7f09..1fd98acc397 100644
--- a/Mage.Sets/src/mage/cards/v/VampireWarlord.java
+++ b/Mage.Sets/src/mage/cards/v/VampireWarlord.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class VampireWarlord extends CardImpl {
+public final class VampireWarlord extends CardImpl {
public VampireWarlord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampiresBite.java b/Mage.Sets/src/mage/cards/v/VampiresBite.java
index 8e7c0eb1641..98ded048c92 100644
--- a/Mage.Sets/src/mage/cards/v/VampiresBite.java
+++ b/Mage.Sets/src/mage/cards/v/VampiresBite.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class VampiresBite extends CardImpl {
+public final class VampiresBite extends CardImpl {
public VampiresBite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampiresZeal.java b/Mage.Sets/src/mage/cards/v/VampiresZeal.java
index ce2e87c7ea9..4f0bafe99d4 100644
--- a/Mage.Sets/src/mage/cards/v/VampiresZeal.java
+++ b/Mage.Sets/src/mage/cards/v/VampiresZeal.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class VampiresZeal extends CardImpl {
+public final class VampiresZeal extends CardImpl {
public VampiresZeal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VampiricDragon.java b/Mage.Sets/src/mage/cards/v/VampiricDragon.java
index 04e579369ec..ab5d8232073 100644
--- a/Mage.Sets/src/mage/cards/v/VampiricDragon.java
+++ b/Mage.Sets/src/mage/cards/v/VampiricDragon.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VampiricDragon extends CardImpl {
+public final class VampiricDragon extends CardImpl {
public VampiricDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VampiricEmbrace.java b/Mage.Sets/src/mage/cards/v/VampiricEmbrace.java
index c1440a70a84..7996572be62 100644
--- a/Mage.Sets/src/mage/cards/v/VampiricEmbrace.java
+++ b/Mage.Sets/src/mage/cards/v/VampiricEmbrace.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class VampiricEmbrace extends CardImpl {
+public final class VampiricEmbrace extends CardImpl {
public VampiricEmbrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampiricFeast.java b/Mage.Sets/src/mage/cards/v/VampiricFeast.java
index 484ed2bdf76..7e688ea5bfc 100644
--- a/Mage.Sets/src/mage/cards/v/VampiricFeast.java
+++ b/Mage.Sets/src/mage/cards/v/VampiricFeast.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class VampiricFeast extends CardImpl {
+public final class VampiricFeast extends CardImpl {
public VampiricFeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampiricFury.java b/Mage.Sets/src/mage/cards/v/VampiricFury.java
index 528416b7830..804ba55f6b5 100644
--- a/Mage.Sets/src/mage/cards/v/VampiricFury.java
+++ b/Mage.Sets/src/mage/cards/v/VampiricFury.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
/**
* @author nantuko
*/
-public class VampiricFury extends CardImpl {
+public final class VampiricFury extends CardImpl {
private static final FilterCreaturePermanent vampires = new FilterCreaturePermanent("Vampire creatures");
diff --git a/Mage.Sets/src/mage/cards/v/VampiricLink.java b/Mage.Sets/src/mage/cards/v/VampiricLink.java
index d1e529c9923..57c258348d1 100644
--- a/Mage.Sets/src/mage/cards/v/VampiricLink.java
+++ b/Mage.Sets/src/mage/cards/v/VampiricLink.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VampiricLink extends CardImpl {
+public final class VampiricLink extends CardImpl {
public VampiricLink(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampiricRites.java b/Mage.Sets/src/mage/cards/v/VampiricRites.java
index e56d337b450..2cc5cf25022 100644
--- a/Mage.Sets/src/mage/cards/v/VampiricRites.java
+++ b/Mage.Sets/src/mage/cards/v/VampiricRites.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class VampiricRites extends CardImpl {
+public final class VampiricRites extends CardImpl {
public VampiricRites(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampiricSliver.java b/Mage.Sets/src/mage/cards/v/VampiricSliver.java
index 9f46d9205d9..24b7b2d894d 100644
--- a/Mage.Sets/src/mage/cards/v/VampiricSliver.java
+++ b/Mage.Sets/src/mage/cards/v/VampiricSliver.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author KholdFuzion
*/
-public class VampiricSliver extends CardImpl {
+public final class VampiricSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/v/VampiricSpirit.java b/Mage.Sets/src/mage/cards/v/VampiricSpirit.java
index fb268c17b54..70221fedbe6 100644
--- a/Mage.Sets/src/mage/cards/v/VampiricSpirit.java
+++ b/Mage.Sets/src/mage/cards/v/VampiricSpirit.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class VampiricSpirit extends CardImpl {
+public final class VampiricSpirit extends CardImpl {
public VampiricSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampiricTouch.java b/Mage.Sets/src/mage/cards/v/VampiricTouch.java
index 17b9c64af7e..695fafec070 100644
--- a/Mage.Sets/src/mage/cards/v/VampiricTouch.java
+++ b/Mage.Sets/src/mage/cards/v/VampiricTouch.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author fireshoes
*/
-public class VampiricTouch extends CardImpl {
+public final class VampiricTouch extends CardImpl {
public VampiricTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VampiricTutor.java b/Mage.Sets/src/mage/cards/v/VampiricTutor.java
index 812e73168cf..931f9c2ed85 100644
--- a/Mage.Sets/src/mage/cards/v/VampiricTutor.java
+++ b/Mage.Sets/src/mage/cards/v/VampiricTutor.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Quercitron
*/
-public class VampiricTutor extends CardImpl {
+public final class VampiricTutor extends CardImpl {
public VampiricTutor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/v/Vampirism.java b/Mage.Sets/src/mage/cards/v/Vampirism.java
index 6bf8fc98ce2..5939edf372f 100644
--- a/Mage.Sets/src/mage/cards/v/Vampirism.java
+++ b/Mage.Sets/src/mage/cards/v/Vampirism.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author tcontis
*/
-public class Vampirism extends CardImpl {
+public final class Vampirism extends CardImpl {
public Vampirism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VancesBlastingCannons.java b/Mage.Sets/src/mage/cards/v/VancesBlastingCannons.java
index ab69c1400b2..cf8e69bc2d5 100644
--- a/Mage.Sets/src/mage/cards/v/VancesBlastingCannons.java
+++ b/Mage.Sets/src/mage/cards/v/VancesBlastingCannons.java
@@ -58,7 +58,7 @@ import mage.watchers.common.CastSpellLastTurnWatcher;
*
* @author TheElk801
*/
-public class VancesBlastingCannons extends CardImpl {
+public final class VancesBlastingCannons extends CardImpl {
public VancesBlastingCannons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/Vandalblast.java b/Mage.Sets/src/mage/cards/v/Vandalblast.java
index 198843fee0d..d056ccc0ee2 100644
--- a/Mage.Sets/src/mage/cards/v/Vandalblast.java
+++ b/Mage.Sets/src/mage/cards/v/Vandalblast.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class Vandalblast extends CardImpl {
+public final class Vandalblast extends CardImpl {
private static final FilterArtifactPermanent FILTER = new FilterArtifactPermanent("artifact you don't control");
diff --git a/Mage.Sets/src/mage/cards/v/Vandalize.java b/Mage.Sets/src/mage/cards/v/Vandalize.java
index a418f51d132..172bf0faafe 100644
--- a/Mage.Sets/src/mage/cards/v/Vandalize.java
+++ b/Mage.Sets/src/mage/cards/v/Vandalize.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class Vandalize extends CardImpl {
+public final class Vandalize extends CardImpl {
public Vandalize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VanguardOfBrimaz.java b/Mage.Sets/src/mage/cards/v/VanguardOfBrimaz.java
index a46b8d87899..2319e737fe9 100644
--- a/Mage.Sets/src/mage/cards/v/VanguardOfBrimaz.java
+++ b/Mage.Sets/src/mage/cards/v/VanguardOfBrimaz.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.CatSoldierCreatureToken;
*
* @author LevelX2
*/
-public class VanguardOfBrimaz extends CardImpl {
+public final class VanguardOfBrimaz extends CardImpl {
public VanguardOfBrimaz(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VanguardsShield.java b/Mage.Sets/src/mage/cards/v/VanguardsShield.java
index 598e5bbc291..a4b220779f1 100644
--- a/Mage.Sets/src/mage/cards/v/VanguardsShield.java
+++ b/Mage.Sets/src/mage/cards/v/VanguardsShield.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
/**
* @author noxx
*/
-public class VanguardsShield extends CardImpl {
+public final class VanguardsShield extends CardImpl {
public VanguardsShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/v/VanishIntoMemory.java b/Mage.Sets/src/mage/cards/v/VanishIntoMemory.java
index 21e53d87a97..599b246dee8 100644
--- a/Mage.Sets/src/mage/cards/v/VanishIntoMemory.java
+++ b/Mage.Sets/src/mage/cards/v/VanishIntoMemory.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.FixedTargets;
/**
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class VanishIntoMemory extends CardImpl {
+public final class VanishIntoMemory extends CardImpl {
public VanishIntoMemory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/Vanishing.java b/Mage.Sets/src/mage/cards/v/Vanishing.java
index 1f9efae8297..1e0b5521e5c 100644
--- a/Mage.Sets/src/mage/cards/v/Vanishing.java
+++ b/Mage.Sets/src/mage/cards/v/Vanishing.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class Vanishing extends CardImpl {
+public final class Vanishing extends CardImpl {
public Vanishing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/v/Vanishment.java b/Mage.Sets/src/mage/cards/v/Vanishment.java
index 4c013469a03..db0233b8df7 100644
--- a/Mage.Sets/src/mage/cards/v/Vanishment.java
+++ b/Mage.Sets/src/mage/cards/v/Vanishment.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author noxx
*/
-public class Vanishment extends CardImpl {
+public final class Vanishment extends CardImpl {
public Vanishment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/Vanquish.java b/Mage.Sets/src/mage/cards/v/Vanquish.java
index 0f2689a6205..2bb19e49bda 100644
--- a/Mage.Sets/src/mage/cards/v/Vanquish.java
+++ b/Mage.Sets/src/mage/cards/v/Vanquish.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Vanquish extends CardImpl {
+public final class Vanquish extends CardImpl {
public Vanquish(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VanquishTheFoul.java b/Mage.Sets/src/mage/cards/v/VanquishTheFoul.java
index d234196a95f..ef1209740d1 100644
--- a/Mage.Sets/src/mage/cards/v/VanquishTheFoul.java
+++ b/Mage.Sets/src/mage/cards/v/VanquishTheFoul.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VanquishTheFoul extends CardImpl {
+public final class VanquishTheFoul extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VanquishTheWeak.java b/Mage.Sets/src/mage/cards/v/VanquishTheWeak.java
index 0c6fe5ec4f7..7459d3ac2ec 100644
--- a/Mage.Sets/src/mage/cards/v/VanquishTheWeak.java
+++ b/Mage.Sets/src/mage/cards/v/VanquishTheWeak.java
@@ -41,7 +41,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class VanquishTheWeak extends CardImpl {
+public final class VanquishTheWeak extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 3 or less");
diff --git a/Mage.Sets/src/mage/cards/v/VanquishersBanner.java b/Mage.Sets/src/mage/cards/v/VanquishersBanner.java
index e443450b32e..c1feef0d341 100644
--- a/Mage.Sets/src/mage/cards/v/VanquishersBanner.java
+++ b/Mage.Sets/src/mage/cards/v/VanquishersBanner.java
@@ -53,7 +53,7 @@ import mage.game.stack.Spell;
*
* @author spjspj
*/
-public class VanquishersBanner extends CardImpl {
+public final class VanquishersBanner extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control of the chosen type");
diff --git a/Mage.Sets/src/mage/cards/v/VaporSnag.java b/Mage.Sets/src/mage/cards/v/VaporSnag.java
index 53357b11c8f..b4b99b59116 100644
--- a/Mage.Sets/src/mage/cards/v/VaporSnag.java
+++ b/Mage.Sets/src/mage/cards/v/VaporSnag.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class VaporSnag extends CardImpl {
+public final class VaporSnag extends CardImpl {
public VaporSnag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VaporSnare.java b/Mage.Sets/src/mage/cards/v/VaporSnare.java
index 25256f27370..044f8fea4b0 100644
--- a/Mage.Sets/src/mage/cards/v/VaporSnare.java
+++ b/Mage.Sets/src/mage/cards/v/VaporSnare.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class VaporSnare extends CardImpl {
+public final class VaporSnare extends CardImpl {
public VaporSnare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/Vaporkin.java b/Mage.Sets/src/mage/cards/v/Vaporkin.java
index ec27a915b24..53a4d16d544 100644
--- a/Mage.Sets/src/mage/cards/v/Vaporkin.java
+++ b/Mage.Sets/src/mage/cards/v/Vaporkin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class Vaporkin extends CardImpl {
+public final class Vaporkin extends CardImpl {
public Vaporkin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VaporousDjinn.java b/Mage.Sets/src/mage/cards/v/VaporousDjinn.java
index 1e496c5d18a..67c4d3e58ef 100644
--- a/Mage.Sets/src/mage/cards/v/VaporousDjinn.java
+++ b/Mage.Sets/src/mage/cards/v/VaporousDjinn.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class VaporousDjinn extends CardImpl {
+public final class VaporousDjinn extends CardImpl {
public VaporousDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VarchildsCrusader.java b/Mage.Sets/src/mage/cards/v/VarchildsCrusader.java
index 64fa6a0c6e7..de8f53a0c15 100644
--- a/Mage.Sets/src/mage/cards/v/VarchildsCrusader.java
+++ b/Mage.Sets/src/mage/cards/v/VarchildsCrusader.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author L_J
*/
-public class VarchildsCrusader extends CardImpl {
+public final class VarchildsCrusader extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by Walls");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VarchildsWarRiders.java b/Mage.Sets/src/mage/cards/v/VarchildsWarRiders.java
index 895d6a10871..72a1fde409a 100644
--- a/Mage.Sets/src/mage/cards/v/VarchildsWarRiders.java
+++ b/Mage.Sets/src/mage/cards/v/VarchildsWarRiders.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author TheElk801
*/
-public class VarchildsWarRiders extends CardImpl {
+public final class VarchildsWarRiders extends CardImpl {
public VarchildsWarRiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VarolzTheScarStriped.java b/Mage.Sets/src/mage/cards/v/VarolzTheScarStriped.java
index 645e9c00a68..62248445cd3 100644
--- a/Mage.Sets/src/mage/cards/v/VarolzTheScarStriped.java
+++ b/Mage.Sets/src/mage/cards/v/VarolzTheScarStriped.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class VarolzTheScarStriped extends CardImpl {
+public final class VarolzTheScarStriped extends CardImpl {
public VarolzTheScarStriped(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VassalSoul.java b/Mage.Sets/src/mage/cards/v/VassalSoul.java
index dc97f579603..f91b2bac833 100644
--- a/Mage.Sets/src/mage/cards/v/VassalSoul.java
+++ b/Mage.Sets/src/mage/cards/v/VassalSoul.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class VassalSoul extends CardImpl {
+public final class VassalSoul extends CardImpl {
public VassalSoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W/U}{W/U}");
diff --git a/Mage.Sets/src/mage/cards/v/VassalsDuty.java b/Mage.Sets/src/mage/cards/v/VassalsDuty.java
index 49a19cb0a06..ae60382c2ec 100644
--- a/Mage.Sets/src/mage/cards/v/VassalsDuty.java
+++ b/Mage.Sets/src/mage/cards/v/VassalsDuty.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class VassalsDuty extends CardImpl {
+public final class VassalsDuty extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("legendary creature you control");
diff --git a/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java b/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java
index 86d7431e56e..653e3d40456 100644
--- a/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java
+++ b/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class VastwoodAnimist extends CardImpl {
+public final class VastwoodAnimist extends CardImpl {
public VastwoodAnimist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VastwoodGorger.java b/Mage.Sets/src/mage/cards/v/VastwoodGorger.java
index 992dfa6c6ba..e0a95e8b3f1 100644
--- a/Mage.Sets/src/mage/cards/v/VastwoodGorger.java
+++ b/Mage.Sets/src/mage/cards/v/VastwoodGorger.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class VastwoodGorger extends CardImpl {
+public final class VastwoodGorger extends CardImpl {
public VastwoodGorger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VastwoodHydra.java b/Mage.Sets/src/mage/cards/v/VastwoodHydra.java
index 6e0559143fa..d431bc78e42 100644
--- a/Mage.Sets/src/mage/cards/v/VastwoodHydra.java
+++ b/Mage.Sets/src/mage/cards/v/VastwoodHydra.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LevelX2
*/
-public class VastwoodHydra extends CardImpl {
+public final class VastwoodHydra extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/v/VastwoodZendikon.java b/Mage.Sets/src/mage/cards/v/VastwoodZendikon.java
index b86de1f50b1..2ff7e763b1b 100644
--- a/Mage.Sets/src/mage/cards/v/VastwoodZendikon.java
+++ b/Mage.Sets/src/mage/cards/v/VastwoodZendikon.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class VastwoodZendikon extends CardImpl {
+public final class VastwoodZendikon extends CardImpl {
public VastwoodZendikon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VaultOfCatlacan.java b/Mage.Sets/src/mage/cards/v/VaultOfCatlacan.java
index 6c85a1477fe..62e01520925 100644
--- a/Mage.Sets/src/mage/cards/v/VaultOfCatlacan.java
+++ b/Mage.Sets/src/mage/cards/v/VaultOfCatlacan.java
@@ -48,7 +48,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class VaultOfCatlacan extends CardImpl {
+public final class VaultOfCatlacan extends CardImpl {
public VaultOfCatlacan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/v/VaultOfTheArchangel.java b/Mage.Sets/src/mage/cards/v/VaultOfTheArchangel.java
index 3c07263b685..39c7b125ed8 100644
--- a/Mage.Sets/src/mage/cards/v/VaultOfTheArchangel.java
+++ b/Mage.Sets/src/mage/cards/v/VaultOfTheArchangel.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author North
*/
-public class VaultOfTheArchangel extends CardImpl {
+public final class VaultOfTheArchangel extends CardImpl {
public VaultOfTheArchangel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/v/VaultOfWhispers.java b/Mage.Sets/src/mage/cards/v/VaultOfWhispers.java
index a2b17b881c9..b002df54792 100644
--- a/Mage.Sets/src/mage/cards/v/VaultOfWhispers.java
+++ b/Mage.Sets/src/mage/cards/v/VaultOfWhispers.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class VaultOfWhispers extends CardImpl {
+public final class VaultOfWhispers extends CardImpl {
public VaultOfWhispers (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/v/VaultSkirge.java b/Mage.Sets/src/mage/cards/v/VaultSkirge.java
index b43cb2f6411..e16c233c076 100644
--- a/Mage.Sets/src/mage/cards/v/VaultSkirge.java
+++ b/Mage.Sets/src/mage/cards/v/VaultSkirge.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class VaultSkirge extends CardImpl {
+public final class VaultSkirge extends CardImpl {
public VaultSkirge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{B/P}");
diff --git a/Mage.Sets/src/mage/cards/v/VaultSkyward.java b/Mage.Sets/src/mage/cards/v/VaultSkyward.java
index aaef60c609c..f22a7af1104 100644
--- a/Mage.Sets/src/mage/cards/v/VaultSkyward.java
+++ b/Mage.Sets/src/mage/cards/v/VaultSkyward.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class VaultSkyward extends CardImpl {
+public final class VaultSkyward extends CardImpl {
public VaultSkyward (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/v/Vaultbreaker.java b/Mage.Sets/src/mage/cards/v/Vaultbreaker.java
index 6cca3ad14a6..19219beaaa2 100644
--- a/Mage.Sets/src/mage/cards/v/Vaultbreaker.java
+++ b/Mage.Sets/src/mage/cards/v/Vaultbreaker.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class Vaultbreaker extends CardImpl {
+public final class Vaultbreaker extends CardImpl {
public Vaultbreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/Vebulid.java b/Mage.Sets/src/mage/cards/v/Vebulid.java
index 12469a58833..edbe76cb960 100644
--- a/Mage.Sets/src/mage/cards/v/Vebulid.java
+++ b/Mage.Sets/src/mage/cards/v/Vebulid.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class Vebulid extends CardImpl {
+public final class Vebulid extends CardImpl {
public Vebulid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VecTownships.java b/Mage.Sets/src/mage/cards/v/VecTownships.java
index d5091268c12..c270ad83e1b 100644
--- a/Mage.Sets/src/mage/cards/v/VecTownships.java
+++ b/Mage.Sets/src/mage/cards/v/VecTownships.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class VecTownships extends CardImpl {
+public final class VecTownships extends CardImpl {
public VecTownships(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/v/VectisAgents.java b/Mage.Sets/src/mage/cards/v/VectisAgents.java
index 84ff2ce8f7f..a606c60e2da 100644
--- a/Mage.Sets/src/mage/cards/v/VectisAgents.java
+++ b/Mage.Sets/src/mage/cards/v/VectisAgents.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class VectisAgents extends CardImpl {
+public final class VectisAgents extends CardImpl {
public VectisAgents(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VectisDominator.java b/Mage.Sets/src/mage/cards/v/VectisDominator.java
index 88a64dd8f54..86d3694aaa8 100644
--- a/Mage.Sets/src/mage/cards/v/VectisDominator.java
+++ b/Mage.Sets/src/mage/cards/v/VectisDominator.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class VectisDominator extends CardImpl {
+public final class VectisDominator extends CardImpl {
public VectisDominator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VectisSilencers.java b/Mage.Sets/src/mage/cards/v/VectisSilencers.java
index dbb8edd6c4c..4234d20cd3b 100644
--- a/Mage.Sets/src/mage/cards/v/VectisSilencers.java
+++ b/Mage.Sets/src/mage/cards/v/VectisSilencers.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class VectisSilencers extends CardImpl {
+public final class VectisSilencers extends CardImpl {
public VectisSilencers (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VectorAsp.java b/Mage.Sets/src/mage/cards/v/VectorAsp.java
index 65bd4010e10..cbd7c459121 100644
--- a/Mage.Sets/src/mage/cards/v/VectorAsp.java
+++ b/Mage.Sets/src/mage/cards/v/VectorAsp.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class VectorAsp extends CardImpl {
+public final class VectorAsp extends CardImpl {
public VectorAsp (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenAethermage.java b/Mage.Sets/src/mage/cards/v/VedalkenAethermage.java
index d7d6e3edabf..2e5015a10a2 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenAethermage.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenAethermage.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author anonymous
*/
-public class VedalkenAethermage extends CardImpl {
+public final class VedalkenAethermage extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Sliver");
private static final FilterCard filter2 = new FilterCard("Wizard");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java b/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java
index 08ca7c6573d..70cb8c33a1e 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class VedalkenAnatomist extends CardImpl {
+public final class VedalkenAnatomist extends CardImpl {
public VedalkenAnatomist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenArchmage.java b/Mage.Sets/src/mage/cards/v/VedalkenArchmage.java
index a056b3a57d7..3d615f93c13 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenArchmage.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenArchmage.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterArtifactSpell;
*
* @author LevelX2
*/
-public class VedalkenArchmage extends CardImpl {
+public final class VedalkenArchmage extends CardImpl {
public VedalkenArchmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
this.subtype.add(SubType.VEDALKEN);
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenBlademaster.java b/Mage.Sets/src/mage/cards/v/VedalkenBlademaster.java
index 6c82136c571..e181c9c59f7 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenBlademaster.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenBlademaster.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class VedalkenBlademaster extends CardImpl {
+public final class VedalkenBlademaster extends CardImpl {
public VedalkenBlademaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenCertarch.java b/Mage.Sets/src/mage/cards/v/VedalkenCertarch.java
index 93e2aa4b785..bff36f1f086 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenCertarch.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenCertarch.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class VedalkenCertarch extends CardImpl {
+public final class VedalkenCertarch extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenDismisser.java b/Mage.Sets/src/mage/cards/v/VedalkenDismisser.java
index db2eca27c22..600ca83cc8e 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenDismisser.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenDismisser.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class VedalkenDismisser extends CardImpl {
+public final class VedalkenDismisser extends CardImpl {
public VedalkenDismisser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenEngineer.java b/Mage.Sets/src/mage/cards/v/VedalkenEngineer.java
index 3e5ae32ce11..cb232b44105 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenEngineer.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenEngineer.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class VedalkenEngineer extends CardImpl {
+public final class VedalkenEngineer extends CardImpl {
public VedalkenEngineer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenEntrancer.java b/Mage.Sets/src/mage/cards/v/VedalkenEntrancer.java
index 6881726d472..da869339c78 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenEntrancer.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenEntrancer.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class VedalkenEntrancer extends CardImpl {
+public final class VedalkenEntrancer extends CardImpl {
public VedalkenEntrancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenGhoul.java b/Mage.Sets/src/mage/cards/v/VedalkenGhoul.java
index e0b0b9c8350..e927e853470 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenGhoul.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenGhoul.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class VedalkenGhoul extends CardImpl {
+public final class VedalkenGhoul extends CardImpl {
public VedalkenGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenHeretic.java b/Mage.Sets/src/mage/cards/v/VedalkenHeretic.java
index ceb1cc992bf..4c37eda1abc 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenHeretic.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenHeretic.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class VedalkenHeretic extends CardImpl {
+public final class VedalkenHeretic extends CardImpl {
public VedalkenHeretic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenInfuser.java b/Mage.Sets/src/mage/cards/v/VedalkenInfuser.java
index c799c1fd59c..8f74f8d0f6d 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenInfuser.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenInfuser.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Loki
*/
-public class VedalkenInfuser extends CardImpl {
+public final class VedalkenInfuser extends CardImpl {
public VedalkenInfuser (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenMastermind.java b/Mage.Sets/src/mage/cards/v/VedalkenMastermind.java
index b6afb04b264..581475691ae 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenMastermind.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenMastermind.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class VedalkenMastermind extends CardImpl {
+public final class VedalkenMastermind extends CardImpl {
public VedalkenMastermind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenOrrery.java b/Mage.Sets/src/mage/cards/v/VedalkenOrrery.java
index d8fe310b5f3..df378940bc0 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenOrrery.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenOrrery.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author emerald000
*/
-public class VedalkenOrrery extends CardImpl {
+public final class VedalkenOrrery extends CardImpl {
private static final FilterCard filter = new FilterCard("spells");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenOutlander.java b/Mage.Sets/src/mage/cards/v/VedalkenOutlander.java
index 742c97327a7..2e43e419e8a 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenOutlander.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenOutlander.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class VedalkenOutlander extends CardImpl {
+public final class VedalkenOutlander extends CardImpl {
public VedalkenOutlander(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenPlotter.java b/Mage.Sets/src/mage/cards/v/VedalkenPlotter.java
index 82a92356581..8760b1ea313 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenPlotter.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenPlotter.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class VedalkenPlotter extends CardImpl {
+public final class VedalkenPlotter extends CardImpl {
private static final String rule = "exchange control of target land you control and target land an opponent controls";
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenShackles.java b/Mage.Sets/src/mage/cards/v/VedalkenShackles.java
index fe55bed4476..2ab9c553faa 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenShackles.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenShackles.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VedalkenShackles extends CardImpl {
+public final class VedalkenShackles extends CardImpl {
private static final FilterCreaturePermanent controllableCreatures = new FilterCreaturePermanent("creature with power less than or equal to the number of Islands you control");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VeilOfSecrecy.java b/Mage.Sets/src/mage/cards/v/VeilOfSecrecy.java
index ce764f24c8c..609dd404d16 100644
--- a/Mage.Sets/src/mage/cards/v/VeilOfSecrecy.java
+++ b/Mage.Sets/src/mage/cards/v/VeilOfSecrecy.java
@@ -50,7 +50,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class VeilOfSecrecy extends CardImpl {
+public final class VeilOfSecrecy extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a blue creature");
diff --git a/Mage.Sets/src/mage/cards/v/VeilbornGhoul.java b/Mage.Sets/src/mage/cards/v/VeilbornGhoul.java
index 0ea98d1d3ed..9d128e4de5e 100644
--- a/Mage.Sets/src/mage/cards/v/VeilbornGhoul.java
+++ b/Mage.Sets/src/mage/cards/v/VeilbornGhoul.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author jeffwadsworth
*/
-public class VeilbornGhoul extends CardImpl {
+public final class VeilbornGhoul extends CardImpl {
private static final FilterPermanent filter = new FilterControlledLandPermanent("a Swamp");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VeilingOddity.java b/Mage.Sets/src/mage/cards/v/VeilingOddity.java
index 8ababf2561b..464b15c291a 100644
--- a/Mage.Sets/src/mage/cards/v/VeilingOddity.java
+++ b/Mage.Sets/src/mage/cards/v/VeilingOddity.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent;
*
* @author TheElk801
*/
-public class VeilingOddity extends CardImpl {
+public final class VeilingOddity extends CardImpl {
public VeilingOddity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VeilstoneAmulet.java b/Mage.Sets/src/mage/cards/v/VeilstoneAmulet.java
index 6a98a40d7ed..7332fa04332 100644
--- a/Mage.Sets/src/mage/cards/v/VeilstoneAmulet.java
+++ b/Mage.Sets/src/mage/cards/v/VeilstoneAmulet.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
/**
* @author duncant
*/
-public class VeilstoneAmulet extends CardImpl {
+public final class VeilstoneAmulet extends CardImpl {
public VeilstoneAmulet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/v/VeinDrinker.java b/Mage.Sets/src/mage/cards/v/VeinDrinker.java
index 6ec89ecca6e..89e143ac5d9 100644
--- a/Mage.Sets/src/mage/cards/v/VeinDrinker.java
+++ b/Mage.Sets/src/mage/cards/v/VeinDrinker.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class VeinDrinker extends CardImpl {
+public final class VeinDrinker extends CardImpl {
public VeinDrinker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VeinfireBorderpost.java b/Mage.Sets/src/mage/cards/v/VeinfireBorderpost.java
index 73ef79cb52f..1eed938c650 100644
--- a/Mage.Sets/src/mage/cards/v/VeinfireBorderpost.java
+++ b/Mage.Sets/src/mage/cards/v/VeinfireBorderpost.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class VeinfireBorderpost extends CardImpl {
+public final class VeinfireBorderpost extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a basic land");
diff --git a/Mage.Sets/src/mage/cards/v/VelaTheNightClad.java b/Mage.Sets/src/mage/cards/v/VelaTheNightClad.java
index adcb88bb8cd..f6404db059d 100644
--- a/Mage.Sets/src/mage/cards/v/VelaTheNightClad.java
+++ b/Mage.Sets/src/mage/cards/v/VelaTheNightClad.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class VelaTheNightClad extends CardImpl {
+public final class VelaTheNightClad extends CardImpl {
private final static String rule = "Whenever {this} or another creature you control leaves the battlefield, ";
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/v/VeldraneOfSengir.java b/Mage.Sets/src/mage/cards/v/VeldraneOfSengir.java
index f50e6011d4c..4ca2c1e4a1f 100644
--- a/Mage.Sets/src/mage/cards/v/VeldraneOfSengir.java
+++ b/Mage.Sets/src/mage/cards/v/VeldraneOfSengir.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class VeldraneOfSengir extends CardImpl {
+public final class VeldraneOfSengir extends CardImpl {
public VeldraneOfSengir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/Veldt.java b/Mage.Sets/src/mage/cards/v/Veldt.java
index c0d37831ee0..91aeffa194a 100644
--- a/Mage.Sets/src/mage/cards/v/Veldt.java
+++ b/Mage.Sets/src/mage/cards/v/Veldt.java
@@ -51,7 +51,7 @@ import mage.counters.CounterType;
*
* @author Luna Skyrise
*/
-public class Veldt extends CardImpl {
+public final class Veldt extends CardImpl {
public Veldt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/v/VenarianGlimmer.java b/Mage.Sets/src/mage/cards/v/VenarianGlimmer.java
index 7f3ceb545fe..3f72625cac4 100644
--- a/Mage.Sets/src/mage/cards/v/VenarianGlimmer.java
+++ b/Mage.Sets/src/mage/cards/v/VenarianGlimmer.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author Styxo
*/
-public class VenarianGlimmer extends CardImpl {
+public final class VenarianGlimmer extends CardImpl {
public VenarianGlimmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/Vendetta.java b/Mage.Sets/src/mage/cards/v/Vendetta.java
index a494ceda16b..a18edb8510d 100644
--- a/Mage.Sets/src/mage/cards/v/Vendetta.java
+++ b/Mage.Sets/src/mage/cards/v/Vendetta.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North, Loki
*/
-public class Vendetta extends CardImpl {
+public final class Vendetta extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/v/VendilionClique.java b/Mage.Sets/src/mage/cards/v/VendilionClique.java
index d59303adfbe..6bdc101079b 100644
--- a/Mage.Sets/src/mage/cards/v/VendilionClique.java
+++ b/Mage.Sets/src/mage/cards/v/VendilionClique.java
@@ -54,7 +54,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class VendilionClique extends CardImpl {
+public final class VendilionClique extends CardImpl {
public VendilionClique(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VenerableKumo.java b/Mage.Sets/src/mage/cards/v/VenerableKumo.java
index 8a51671ace7..6de5aaa732d 100644
--- a/Mage.Sets/src/mage/cards/v/VenerableKumo.java
+++ b/Mage.Sets/src/mage/cards/v/VenerableKumo.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class VenerableKumo extends CardImpl {
+public final class VenerableKumo extends CardImpl {
public VenerableKumo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VenerableLammasu.java b/Mage.Sets/src/mage/cards/v/VenerableLammasu.java
index cff8870676e..6bf0239131b 100644
--- a/Mage.Sets/src/mage/cards/v/VenerableLammasu.java
+++ b/Mage.Sets/src/mage/cards/v/VenerableLammasu.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class VenerableLammasu extends CardImpl {
+public final class VenerableLammasu extends CardImpl {
public VenerableLammasu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VenerableMonk.java b/Mage.Sets/src/mage/cards/v/VenerableMonk.java
index 6bcf4444e5d..16beea72791 100644
--- a/Mage.Sets/src/mage/cards/v/VenerableMonk.java
+++ b/Mage.Sets/src/mage/cards/v/VenerableMonk.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class VenerableMonk extends CardImpl {
+public final class VenerableMonk extends CardImpl {
public VenerableMonk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VeneratedTeacher.java b/Mage.Sets/src/mage/cards/v/VeneratedTeacher.java
index 393137f6fad..4e76f815e18 100644
--- a/Mage.Sets/src/mage/cards/v/VeneratedTeacher.java
+++ b/Mage.Sets/src/mage/cards/v/VeneratedTeacher.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class VeneratedTeacher extends CardImpl {
+public final class VeneratedTeacher extends CardImpl {
public VeneratedTeacher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/Vengeance.java b/Mage.Sets/src/mage/cards/v/Vengeance.java
index 42300ec0582..67fab2fd86a 100644
--- a/Mage.Sets/src/mage/cards/v/Vengeance.java
+++ b/Mage.Sets/src/mage/cards/v/Vengeance.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class Vengeance extends CardImpl {
+public final class Vengeance extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VengefulArchon.java b/Mage.Sets/src/mage/cards/v/VengefulArchon.java
index 1b2ef7c9cff..2a572309c3d 100644
--- a/Mage.Sets/src/mage/cards/v/VengefulArchon.java
+++ b/Mage.Sets/src/mage/cards/v/VengefulArchon.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author BetaSteward_at_googlemail.com
*/
-public class VengefulArchon extends CardImpl {
+public final class VengefulArchon extends CardImpl {
public VengefulArchon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VengefulDead.java b/Mage.Sets/src/mage/cards/v/VengefulDead.java
index 863da2da6a2..7d2abc88584 100644
--- a/Mage.Sets/src/mage/cards/v/VengefulDead.java
+++ b/Mage.Sets/src/mage/cards/v/VengefulDead.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class VengefulDead extends CardImpl {
+public final class VengefulDead extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie");
diff --git a/Mage.Sets/src/mage/cards/v/VengefulDreams.java b/Mage.Sets/src/mage/cards/v/VengefulDreams.java
index 47fe732359b..848dec6bfef 100644
--- a/Mage.Sets/src/mage/cards/v/VengefulDreams.java
+++ b/Mage.Sets/src/mage/cards/v/VengefulDreams.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class VengefulDreams extends CardImpl {
+public final class VengefulDreams extends CardImpl {
public VengefulDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VengefulFirebrand.java b/Mage.Sets/src/mage/cards/v/VengefulFirebrand.java
index d0e42b237b3..e0f895988ef 100644
--- a/Mage.Sets/src/mage/cards/v/VengefulFirebrand.java
+++ b/Mage.Sets/src/mage/cards/v/VengefulFirebrand.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class VengefulFirebrand extends CardImpl {
+public final class VengefulFirebrand extends CardImpl {
public VengefulFirebrand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VengefulPharaoh.java b/Mage.Sets/src/mage/cards/v/VengefulPharaoh.java
index 718f7c90437..bff3c508049 100644
--- a/Mage.Sets/src/mage/cards/v/VengefulPharaoh.java
+++ b/Mage.Sets/src/mage/cards/v/VengefulPharaoh.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author North
*/
-public class VengefulPharaoh extends CardImpl {
+public final class VengefulPharaoh extends CardImpl {
public VengefulPharaoh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VengefulRebel.java b/Mage.Sets/src/mage/cards/v/VengefulRebel.java
index 4d42742ef9e..dc1a5d7f928 100644
--- a/Mage.Sets/src/mage/cards/v/VengefulRebel.java
+++ b/Mage.Sets/src/mage/cards/v/VengefulRebel.java
@@ -47,7 +47,7 @@ import mage.watchers.common.RevoltWatcher;
*
* @author fireshoes
*/
-public class VengefulRebel extends CardImpl {
+public final class VengefulRebel extends CardImpl {
public VengefulRebel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VengefulRebirth.java b/Mage.Sets/src/mage/cards/v/VengefulRebirth.java
index abf6e02dff0..10614c23728 100644
--- a/Mage.Sets/src/mage/cards/v/VengefulRebirth.java
+++ b/Mage.Sets/src/mage/cards/v/VengefulRebirth.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author BetaSteward_at_googlemail.com
*/
-public class VengefulRebirth extends CardImpl {
+public final class VengefulRebirth extends CardImpl {
public VengefulRebirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VengefulVampire.java b/Mage.Sets/src/mage/cards/v/VengefulVampire.java
index 4757f45732f..924e210289d 100644
--- a/Mage.Sets/src/mage/cards/v/VengefulVampire.java
+++ b/Mage.Sets/src/mage/cards/v/VengefulVampire.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class VengefulVampire extends CardImpl {
+public final class VengefulVampire extends CardImpl {
public VengefulVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/Vengevine.java b/Mage.Sets/src/mage/cards/v/Vengevine.java
index 775994fe64d..803d1237c68 100644
--- a/Mage.Sets/src/mage/cards/v/Vengevine.java
+++ b/Mage.Sets/src/mage/cards/v/Vengevine.java
@@ -49,7 +49,7 @@ import mage.watchers.Watcher;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Vengevine extends CardImpl {
+public final class Vengevine extends CardImpl {
public Vengevine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/Venom.java b/Mage.Sets/src/mage/cards/v/Venom.java
index 5648c3e870f..8920cd275c3 100644
--- a/Mage.Sets/src/mage/cards/v/Venom.java
+++ b/Mage.Sets/src/mage/cards/v/Venom.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author Backfir3
*/
-public class Venom extends CardImpl {
+public final class Venom extends CardImpl {
public Venom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VenomSliver.java b/Mage.Sets/src/mage/cards/v/VenomSliver.java
index a6462d8134e..ac8bfdada98 100644
--- a/Mage.Sets/src/mage/cards/v/VenomSliver.java
+++ b/Mage.Sets/src/mage/cards/v/VenomSliver.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class VenomSliver extends CardImpl {
+public final class VenomSliver extends CardImpl {
public VenomSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VenomousBreath.java b/Mage.Sets/src/mage/cards/v/VenomousBreath.java
index 974f2a28297..56db9574914 100644
--- a/Mage.Sets/src/mage/cards/v/VenomousBreath.java
+++ b/Mage.Sets/src/mage/cards/v/VenomousBreath.java
@@ -50,7 +50,7 @@ import mage.watchers.common.BlockedAttackerWatcher;
*
* @author LevelX2
*/
-public class VenomousBreath extends CardImpl {
+public final class VenomousBreath extends CardImpl {
public VenomousBreath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VenomousDragonfly.java b/Mage.Sets/src/mage/cards/v/VenomousDragonfly.java
index 91bd716b582..2b4c0e0aef5 100644
--- a/Mage.Sets/src/mage/cards/v/VenomousDragonfly.java
+++ b/Mage.Sets/src/mage/cards/v/VenomousDragonfly.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class VenomousDragonfly extends CardImpl {
+public final class VenomousDragonfly extends CardImpl {
public VenomousDragonfly(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VenomousVines.java b/Mage.Sets/src/mage/cards/v/VenomousVines.java
index 89550d3cd4e..73f6eb11d57 100644
--- a/Mage.Sets/src/mage/cards/v/VenomousVines.java
+++ b/Mage.Sets/src/mage/cards/v/VenomousVines.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class VenomousVines extends CardImpl {
+public final class VenomousVines extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("enchanted permanent");
diff --git a/Mage.Sets/src/mage/cards/v/VenomspoutBrackus.java b/Mage.Sets/src/mage/cards/v/VenomspoutBrackus.java
index 48691b5a4d0..d7c737c83ae 100644
--- a/Mage.Sets/src/mage/cards/v/VenomspoutBrackus.java
+++ b/Mage.Sets/src/mage/cards/v/VenomspoutBrackus.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Galatolol
*/
-public class VenomspoutBrackus extends CardImpl {
+public final class VenomspoutBrackus extends CardImpl {
private static final FilterAttackingOrBlockingCreature filter = new FilterAttackingOrBlockingCreature(
"attacking or blocking creature with flying");
diff --git a/Mage.Sets/src/mage/cards/v/VenserShaperSavant.java b/Mage.Sets/src/mage/cards/v/VenserShaperSavant.java
index b16adb25850..f9ea9d14653 100644
--- a/Mage.Sets/src/mage/cards/v/VenserShaperSavant.java
+++ b/Mage.Sets/src/mage/cards/v/VenserShaperSavant.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetSpellOrPermanent;
*
* @author LevelX2
*/
-public class VenserShaperSavant extends CardImpl {
+public final class VenserShaperSavant extends CardImpl {
public VenserShaperSavant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VenserTheSojourner.java b/Mage.Sets/src/mage/cards/v/VenserTheSojourner.java
index c65a492bb3d..b2969b4b1cb 100644
--- a/Mage.Sets/src/mage/cards/v/VenserTheSojourner.java
+++ b/Mage.Sets/src/mage/cards/v/VenserTheSojourner.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author nantuko
*/
-public class VenserTheSojourner extends CardImpl {
+public final class VenserTheSojourner extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent you own");
diff --git a/Mage.Sets/src/mage/cards/v/VensersDiffusion.java b/Mage.Sets/src/mage/cards/v/VensersDiffusion.java
index 6abb6449175..3d9160b0d87 100644
--- a/Mage.Sets/src/mage/cards/v/VensersDiffusion.java
+++ b/Mage.Sets/src/mage/cards/v/VensersDiffusion.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetPermanentOrSuspendedCard;
*
* @author L_J
*/
-public class VensersDiffusion extends CardImpl {
+public final class VensersDiffusion extends CardImpl {
private static final FilterPermanentOrSuspendedCard filter = new FilterPermanentOrSuspendedCard("nonland permanent or suspended card");
diff --git a/Mage.Sets/src/mage/cards/v/VensersJournal.java b/Mage.Sets/src/mage/cards/v/VensersJournal.java
index 1aba9073da7..6676b7525ce 100644
--- a/Mage.Sets/src/mage/cards/v/VensersJournal.java
+++ b/Mage.Sets/src/mage/cards/v/VensersJournal.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author nantuko
*/
-public class VensersJournal extends CardImpl {
+public final class VensersJournal extends CardImpl {
public VensersJournal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/v/VensersSliver.java b/Mage.Sets/src/mage/cards/v/VensersSliver.java
index 5bcbc904ada..6d732a65a95 100644
--- a/Mage.Sets/src/mage/cards/v/VensersSliver.java
+++ b/Mage.Sets/src/mage/cards/v/VensersSliver.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class VensersSliver extends CardImpl {
+public final class VensersSliver extends CardImpl {
public VensersSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/v/VentSentinel.java b/Mage.Sets/src/mage/cards/v/VentSentinel.java
index 35ed362c63e..8980165e65a 100644
--- a/Mage.Sets/src/mage/cards/v/VentSentinel.java
+++ b/Mage.Sets/src/mage/cards/v/VentSentinel.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author North
*/
-public class VentSentinel extends CardImpl {
+public final class VentSentinel extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures with defender you control");
diff --git a/Mage.Sets/src/mage/cards/v/VentifactBottle.java b/Mage.Sets/src/mage/cards/v/VentifactBottle.java
index 674cc1d9fd6..6dc6dcb18a0 100644
--- a/Mage.Sets/src/mage/cards/v/VentifactBottle.java
+++ b/Mage.Sets/src/mage/cards/v/VentifactBottle.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class VentifactBottle extends CardImpl {
+public final class VentifactBottle extends CardImpl {
public VentifactBottle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/v/VerdantAutomaton.java b/Mage.Sets/src/mage/cards/v/VerdantAutomaton.java
index 731f3c116a2..5860f9c70e9 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantAutomaton.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantAutomaton.java
@@ -43,7 +43,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class VerdantAutomaton extends CardImpl {
+public final class VerdantAutomaton extends CardImpl {
public VerdantAutomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/v/VerdantCatacombs.java b/Mage.Sets/src/mage/cards/v/VerdantCatacombs.java
index 1687b286dcc..7c0dfc06cc3 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantCatacombs.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantCatacombs.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class VerdantCatacombs extends CardImpl {
+public final class VerdantCatacombs extends CardImpl {
public VerdantCatacombs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/v/VerdantConfluence.java b/Mage.Sets/src/mage/cards/v/VerdantConfluence.java
index fcefaf301f3..4b3b20282df 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantConfluence.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantConfluence.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class VerdantConfluence extends CardImpl {
+public final class VerdantConfluence extends CardImpl {
public VerdantConfluence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}{G}");
@@ -68,7 +68,7 @@ public class VerdantConfluence extends CardImpl {
this.getSpellAbility().getModes().addMode(mode);
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
mode = new Mode();
mode.getEffects().add(new SearchLibraryPutInPlayEffect(target, true));
this.getSpellAbility().getModes().addMode(mode);
diff --git a/Mage.Sets/src/mage/cards/v/VerdantCrescendo.java b/Mage.Sets/src/mage/cards/v/VerdantCrescendo.java
index f5ef749dbe7..a5adf32db05 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantCrescendo.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantCrescendo.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class VerdantCrescendo extends CardImpl {
+public final class VerdantCrescendo extends CardImpl {
private final static FilterCard filter = new FilterCard("Nissa, Nature's Artisan");
@@ -55,7 +55,7 @@ public class VerdantCrescendo extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
// Search your library for a basic land card and put it onto the battlefield tapped.
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, false));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, false));
// Search your library and graveyard for a card named Nissa, Nature's Artisan, reveal it, and put it into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryGraveyardPutInHandEffect(filter, true));
diff --git a/Mage.Sets/src/mage/cards/v/VerdantEidolon.java b/Mage.Sets/src/mage/cards/v/VerdantEidolon.java
index f17d2300379..b8352e71f10 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantEidolon.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantEidolon.java
@@ -47,7 +47,7 @@ import mage.filter.StaticFilters;
*
* @author LoneFox
*/
-public class VerdantEidolon extends CardImpl {
+public final class VerdantEidolon extends CardImpl {
public VerdantEidolon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VerdantEmbrace.java b/Mage.Sets/src/mage/cards/v/VerdantEmbrace.java
index 98a3ebe6908..6f7fba91898 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantEmbrace.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantEmbrace.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class VerdantEmbrace extends CardImpl {
+public final class VerdantEmbrace extends CardImpl {
public VerdantEmbrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VerdantField.java b/Mage.Sets/src/mage/cards/v/VerdantField.java
index 5384200aa8b..579a792e2bb 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantField.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantField.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Backfir3
*/
-public class VerdantField extends CardImpl {
+public final class VerdantField extends CardImpl {
public VerdantField(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VerdantForce.java b/Mage.Sets/src/mage/cards/v/VerdantForce.java
index 22e37934c99..a2268bbb62f 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantForce.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantForce.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author Loki
*/
-public class VerdantForce extends CardImpl {
+public final class VerdantForce extends CardImpl {
public VerdantForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VerdantHaven.java b/Mage.Sets/src/mage/cards/v/VerdantHaven.java
index 301124c5411..674881dba83 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantHaven.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantHaven.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class VerdantHaven extends CardImpl {
+public final class VerdantHaven extends CardImpl {
public VerdantHaven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
@@ -69,7 +69,7 @@ public class VerdantHaven extends CardImpl {
// When Verdant Haven enters the battlefield, you gain 2 life.
this.addAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(2)));
- // Whenever enchanted land is tapped for mana, its controller adds one mana of any color to their mana pool.
+ // Whenever enchanted land is tapped for mana, its controller adds one mana of any color.
this.addAbility(new VerdantHavenTriggeredAbility());
}
@@ -112,6 +112,6 @@ class VerdantHavenTriggeredAbility extends TriggeredManaAbility {
@Override
public String getRule() {
- return "Whenever enchanted land is tapped for mana, its controller adds one mana of any color to their mana pool.";
+ return "Whenever enchanted land is tapped for mana, its controller adds one mana of any color.";
}
}
diff --git a/Mage.Sets/src/mage/cards/v/VerdantRebirth.java b/Mage.Sets/src/mage/cards/v/VerdantRebirth.java
index 5c8d03c421b..63fd580de66 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantRebirth.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantRebirth.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VerdantRebirth extends CardImpl {
+public final class VerdantRebirth extends CardImpl {
public VerdantRebirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VerdantSuccession.java b/Mage.Sets/src/mage/cards/v/VerdantSuccession.java
index 6edd126014e..5b7d60905da 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantSuccession.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantSuccession.java
@@ -1,168 +1,168 @@
-/*
- * 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.MageObject;
-import mage.ObjectColor;
-import mage.abilities.Ability;
-import mage.abilities.TriggeredAbilityImpl;
-import mage.abilities.effects.OneShotEffect;
-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.filter.FilterCard;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.Predicates;
-import mage.filter.predicate.mageobject.ColorPredicate;
-import mage.filter.predicate.mageobject.NamePredicate;
-import mage.filter.predicate.permanent.TokenPredicate;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.events.ZoneChangeEvent;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.common.TargetCardInLibrary;
-
-/**
- *
- * @author jeffwadsworth
- */
-public class VerdantSuccession extends CardImpl {
-
- public VerdantSuccession(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{G}");
-
- // Whenever a green nontoken creature dies, that creature's controller may search their library for a card with the same name as that creature and put it onto the battlefield. If that player does, he or she shuffles their library.
- this.addAbility(new VerdantSuccessionTriggeredAbility());
-
- }
-
- public VerdantSuccession(final VerdantSuccession card) {
- super(card);
- }
-
- @Override
- public VerdantSuccession copy() {
- return new VerdantSuccession(this);
- }
-}
-
-class VerdantSuccessionTriggeredAbility extends TriggeredAbilityImpl {
-
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green nontoken creature");
-
- static {
- filter.add(new ColorPredicate(ObjectColor.GREEN));
- filter.add(Predicates.not(new TokenPredicate()));
- }
-
- public VerdantSuccessionTriggeredAbility() {
- super(Zone.BATTLEFIELD, new VerdantSuccessionEffect());
- this.optional = true;
- }
-
- public VerdantSuccessionTriggeredAbility(final VerdantSuccessionTriggeredAbility ability) {
- super(ability);
- }
-
- @Override
- public VerdantSuccessionTriggeredAbility copy() {
- return new VerdantSuccessionTriggeredAbility(this);
- }
-
- @Override
- public boolean checkEventType(GameEvent event, Game game) {
- return event.getType() == GameEvent.EventType.ZONE_CHANGE;
- }
-
- @Override
- public boolean checkTrigger(GameEvent event, Game game) {
- if (((ZoneChangeEvent) event).getToZone() == Zone.GRAVEYARD
- && ((ZoneChangeEvent) event).getFromZone() == Zone.BATTLEFIELD) {
- Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
- MageObject mageObject = game.getObject(sourceId);
- if (permanent != null
- && filter.match(permanent, game)) {
- game.getState().setValue("verdantSuccession" + mageObject, permanent);
- return true;
- }
- }
- return false;
- }
-
- @Override
- public String getRule() {
- return "Whenever a green nontoken creature dies, that creature's controller may search their library for a card with the same name as that creature and put it onto the battlefield. If that player does, he or she shuffles their library.";
- }
-}
-
-class VerdantSuccessionEffect extends OneShotEffect {
-
- private Permanent permanent;
-
- VerdantSuccessionEffect() {
- super(Outcome.PutCardInPlay);
- }
-
- VerdantSuccessionEffect(final VerdantSuccessionEffect effect) {
- super(effect);
- }
-
- @Override
- public VerdantSuccessionEffect copy() {
- return new VerdantSuccessionEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- MageObject mageObject = game.getObject(source.getSourceId());
- permanent = (Permanent) game.getState().getValue("verdantSuccession" + mageObject);
- if (permanent != null) {
- Player controller = game.getPlayer(permanent.getControllerId());
- if (controller != null) {
- FilterCard filterCard = new FilterCard("Card named " + permanent.getName());
- filterCard.add(new NamePredicate(permanent.getName()));
- TargetCardInLibrary target = new TargetCardInLibrary(filterCard);
- controller.searchLibrary(target, game);
- if (!target.getTargets().isEmpty()) {
- Card card = game.getCard(target.getFirstTarget());
- if (card != null
- && controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
- controller.shuffleLibrary(source, game);
- }
- return true;
- }
- }
- }
- return false;
- }
-}
+/*
+ * 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.MageObject;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.effects.OneShotEffect;
+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.filter.FilterCard;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.filter.predicate.mageobject.NamePredicate;
+import mage.filter.predicate.permanent.TokenPredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.ZoneChangeEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetCardInLibrary;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class VerdantSuccession extends CardImpl {
+
+ public VerdantSuccession(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{G}");
+
+ // Whenever a green nontoken creature dies, that creature's controller may search their library for a card with the same name as that creature and put it onto the battlefield. If that player does, he or she shuffles their library.
+ this.addAbility(new VerdantSuccessionTriggeredAbility());
+
+ }
+
+ public VerdantSuccession(final VerdantSuccession card) {
+ super(card);
+ }
+
+ @Override
+ public VerdantSuccession copy() {
+ return new VerdantSuccession(this);
+ }
+}
+
+class VerdantSuccessionTriggeredAbility extends TriggeredAbilityImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green nontoken creature");
+
+ static {
+ filter.add(new ColorPredicate(ObjectColor.GREEN));
+ filter.add(Predicates.not(new TokenPredicate()));
+ }
+
+ public VerdantSuccessionTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new VerdantSuccessionEffect());
+ this.optional = true;
+ }
+
+ public VerdantSuccessionTriggeredAbility(final VerdantSuccessionTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public VerdantSuccessionTriggeredAbility copy() {
+ return new VerdantSuccessionTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.ZONE_CHANGE;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ if (((ZoneChangeEvent) event).getToZone() == Zone.GRAVEYARD
+ && ((ZoneChangeEvent) event).getFromZone() == Zone.BATTLEFIELD) {
+ Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
+ MageObject mageObject = game.getObject(sourceId);
+ if (permanent != null
+ && filter.match(permanent, game)) {
+ game.getState().setValue("verdantSuccession" + mageObject, permanent);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever a green nontoken creature dies, that creature's controller may search their library for a card with the same name as that creature and put it onto the battlefield. If that player does, he or she shuffles their library.";
+ }
+}
+
+class VerdantSuccessionEffect extends OneShotEffect {
+
+ private Permanent permanent;
+
+ VerdantSuccessionEffect() {
+ super(Outcome.PutCardInPlay);
+ }
+
+ VerdantSuccessionEffect(final VerdantSuccessionEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public VerdantSuccessionEffect copy() {
+ return new VerdantSuccessionEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ MageObject mageObject = game.getObject(source.getSourceId());
+ permanent = (Permanent) game.getState().getValue("verdantSuccession" + mageObject);
+ if (permanent != null) {
+ Player controller = game.getPlayer(permanent.getControllerId());
+ if (controller != null) {
+ FilterCard filterCard = new FilterCard("Card named " + permanent.getName());
+ filterCard.add(new NamePredicate(permanent.getName()));
+ TargetCardInLibrary target = new TargetCardInLibrary(filterCard);
+ controller.searchLibrary(target, game);
+ if (!target.getTargets().isEmpty()) {
+ Card card = game.getCard(target.getFirstTarget());
+ if (card != null
+ && controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
+ controller.shuffleLibrary(source, game);
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/v/VerdantSunsAvatar.java b/Mage.Sets/src/mage/cards/v/VerdantSunsAvatar.java
index 9091554be71..a9872b26103 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantSunsAvatar.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantSunsAvatar.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class VerdantSunsAvatar extends CardImpl {
+public final class VerdantSunsAvatar extends CardImpl {
public VerdantSunsAvatar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VerdantTouch.java b/Mage.Sets/src/mage/cards/v/VerdantTouch.java
index 7827edb1ffd..ca57aba6f76 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantTouch.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantTouch.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author fireshoes
*/
-public class VerdantTouch extends CardImpl {
+public final class VerdantTouch extends CardImpl {
public VerdantTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VerdelothTheAncient.java b/Mage.Sets/src/mage/cards/v/VerdelothTheAncient.java
index 2f6f4557ba5..940e9d8203d 100644
--- a/Mage.Sets/src/mage/cards/v/VerdelothTheAncient.java
+++ b/Mage.Sets/src/mage/cards/v/VerdelothTheAncient.java
@@ -54,7 +54,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author LevelX2
*/
-public class VerdelothTheAncient extends CardImpl {
+public final class VerdelothTheAncient extends CardImpl {
public VerdelothTheAncient(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/Verdigris.java b/Mage.Sets/src/mage/cards/v/Verdigris.java
index 3dc063229df..ddd5cff9d48 100644
--- a/Mage.Sets/src/mage/cards/v/Verdigris.java
+++ b/Mage.Sets/src/mage/cards/v/Verdigris.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Loki
*/
-public class Verdigris extends CardImpl {
+public final class Verdigris extends CardImpl {
public Verdigris(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VerduranEmissary.java b/Mage.Sets/src/mage/cards/v/VerduranEmissary.java
index e4a7f77faf2..815181e4102 100644
--- a/Mage.Sets/src/mage/cards/v/VerduranEmissary.java
+++ b/Mage.Sets/src/mage/cards/v/VerduranEmissary.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author FenrisulfrX
*/
-public class VerduranEmissary extends CardImpl {
+public final class VerduranEmissary extends CardImpl {
public VerduranEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VerduranEnchantress.java b/Mage.Sets/src/mage/cards/v/VerduranEnchantress.java
index d59235b557c..67cc386cfe7 100644
--- a/Mage.Sets/src/mage/cards/v/VerduranEnchantress.java
+++ b/Mage.Sets/src/mage/cards/v/VerduranEnchantress.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class VerduranEnchantress extends CardImpl {
+public final class VerduranEnchantress extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an enchantment spell");
diff --git a/Mage.Sets/src/mage/cards/v/VerdurousGearhulk.java b/Mage.Sets/src/mage/cards/v/VerdurousGearhulk.java
index fb81321c40d..07f2215ad76 100644
--- a/Mage.Sets/src/mage/cards/v/VerdurousGearhulk.java
+++ b/Mage.Sets/src/mage/cards/v/VerdurousGearhulk.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author fireshoes
*/
-public class VerdurousGearhulk extends CardImpl {
+public final class VerdurousGearhulk extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/v/VerixBladewing.java b/Mage.Sets/src/mage/cards/v/VerixBladewing.java
index 6174f137da2..2b48c8bed17 100644
--- a/Mage.Sets/src/mage/cards/v/VerixBladewing.java
+++ b/Mage.Sets/src/mage/cards/v/VerixBladewing.java
@@ -20,7 +20,7 @@ import mage.game.permanent.token.KaroxBladewingDragonToken;
* @author JRHerlehy
* Created on 4/5/18.
*/
-public class VerixBladewing extends CardImpl {
+public final class VerixBladewing extends CardImpl {
public VerixBladewing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/Vermiculos.java b/Mage.Sets/src/mage/cards/v/Vermiculos.java
index 02768ee3224..76f86f1f086 100644
--- a/Mage.Sets/src/mage/cards/v/Vermiculos.java
+++ b/Mage.Sets/src/mage/cards/v/Vermiculos.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterArtifactPermanent;
*
* @author fireshoes
*/
-public class Vermiculos extends CardImpl {
+public final class Vermiculos extends CardImpl {
public Vermiculos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VernalBloom.java b/Mage.Sets/src/mage/cards/v/VernalBloom.java
index 3420d2fdc40..d75adb11f6c 100644
--- a/Mage.Sets/src/mage/cards/v/VernalBloom.java
+++ b/Mage.Sets/src/mage/cards/v/VernalBloom.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class VernalBloom extends CardImpl {
+public final class VernalBloom extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest");
@@ -55,7 +55,7 @@ public class VernalBloom extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
- // Whenever a Forest is tapped for mana, its controller adds {G} to their mana pool.
+ // Whenever a Forest is tapped for mana, its controller adds {G}.
this.addAbility(new TapForManaAllTriggeredManaAbility(
new AddManaToManaPoolTargetControllerEffect(new Mana(ColoredManaSymbol.G), "their"),
filter, SetTargetPointer.PLAYER));
diff --git a/Mage.Sets/src/mage/cards/v/VernalEquinox.java b/Mage.Sets/src/mage/cards/v/VernalEquinox.java
index 5119c91dc4a..1cc78f2e105 100644
--- a/Mage.Sets/src/mage/cards/v/VernalEquinox.java
+++ b/Mage.Sets/src/mage/cards/v/VernalEquinox.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author maxlebedev
*/
-public class VernalEquinox extends CardImpl {
+public final class VernalEquinox extends CardImpl {
private static final FilterCard filter = new FilterCard("creature and enchantment spells");
diff --git a/Mage.Sets/src/mage/cards/v/Vertigo.java b/Mage.Sets/src/mage/cards/v/Vertigo.java
index 4d2f992c694..8bfa64f419f 100644
--- a/Mage.Sets/src/mage/cards/v/Vertigo.java
+++ b/Mage.Sets/src/mage/cards/v/Vertigo.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class Vertigo extends CardImpl {
+public final class Vertigo extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/v/VertigoSpawn.java b/Mage.Sets/src/mage/cards/v/VertigoSpawn.java
index 7ddd251a3c5..6466bb6bf26 100644
--- a/Mage.Sets/src/mage/cards/v/VertigoSpawn.java
+++ b/Mage.Sets/src/mage/cards/v/VertigoSpawn.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class VertigoSpawn extends CardImpl {
+public final class VertigoSpawn extends CardImpl {
public VertigoSpawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VeryCrypticCommandD.java b/Mage.Sets/src/mage/cards/v/VeryCrypticCommandD.java
index 68aabe40d1c..ddee4d4a9a5 100644
--- a/Mage.Sets/src/mage/cards/v/VeryCrypticCommandD.java
+++ b/Mage.Sets/src/mage/cards/v/VeryCrypticCommandD.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class VeryCrypticCommandD extends CardImpl {
+public final class VeryCrypticCommandD extends CardImpl {
private static final FilterStackObject filter = new FilterStackObject("spell or ability with a single target");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("nontoken creature");
diff --git a/Mage.Sets/src/mage/cards/v/VesperGhoul.java b/Mage.Sets/src/mage/cards/v/VesperGhoul.java
index b90e964984d..3f0abb107d3 100644
--- a/Mage.Sets/src/mage/cards/v/VesperGhoul.java
+++ b/Mage.Sets/src/mage/cards/v/VesperGhoul.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class VesperGhoul extends CardImpl {
+public final class VesperGhoul extends CardImpl {
public VesperGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VesselOfEndlessRest.java b/Mage.Sets/src/mage/cards/v/VesselOfEndlessRest.java
index 8d89240c0ec..0f339f5e0f7 100644
--- a/Mage.Sets/src/mage/cards/v/VesselOfEndlessRest.java
+++ b/Mage.Sets/src/mage/cards/v/VesselOfEndlessRest.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCardInGraveyard;
/**
* @author noxx
*/
-public class VesselOfEndlessRest extends CardImpl {
+public final class VesselOfEndlessRest extends CardImpl {
public VesselOfEndlessRest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/v/VesselOfEphemera.java b/Mage.Sets/src/mage/cards/v/VesselOfEphemera.java
index 3ded3eb6371..2630bf02e7d 100644
--- a/Mage.Sets/src/mage/cards/v/VesselOfEphemera.java
+++ b/Mage.Sets/src/mage/cards/v/VesselOfEphemera.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SpiritWhiteToken;
*
* @author fireshoes
*/
-public class VesselOfEphemera extends CardImpl {
+public final class VesselOfEphemera extends CardImpl {
public VesselOfEphemera(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VesselOfMalignity.java b/Mage.Sets/src/mage/cards/v/VesselOfMalignity.java
index 13012d4dc43..ca1a5245268 100644
--- a/Mage.Sets/src/mage/cards/v/VesselOfMalignity.java
+++ b/Mage.Sets/src/mage/cards/v/VesselOfMalignity.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class VesselOfMalignity extends CardImpl {
+public final class VesselOfMalignity extends CardImpl {
public VesselOfMalignity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VesselOfNascency.java b/Mage.Sets/src/mage/cards/v/VesselOfNascency.java
index 214a8e29160..d8abc339c20 100644
--- a/Mage.Sets/src/mage/cards/v/VesselOfNascency.java
+++ b/Mage.Sets/src/mage/cards/v/VesselOfNascency.java
@@ -53,7 +53,7 @@ import mage.target.TargetCard;
*
* @author fireshoes
*/
-public class VesselOfNascency extends CardImpl {
+public final class VesselOfNascency extends CardImpl {
public VesselOfNascency(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VesselOfParamnesia.java b/Mage.Sets/src/mage/cards/v/VesselOfParamnesia.java
index c6f982310cb..0f7b00cdc2e 100644
--- a/Mage.Sets/src/mage/cards/v/VesselOfParamnesia.java
+++ b/Mage.Sets/src/mage/cards/v/VesselOfParamnesia.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class VesselOfParamnesia extends CardImpl {
+public final class VesselOfParamnesia extends CardImpl {
public VesselOfParamnesia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VesselOfVolatility.java b/Mage.Sets/src/mage/cards/v/VesselOfVolatility.java
index 936a922308a..ecd372c6af0 100644
--- a/Mage.Sets/src/mage/cards/v/VesselOfVolatility.java
+++ b/Mage.Sets/src/mage/cards/v/VesselOfVolatility.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class VesselOfVolatility extends CardImpl {
+public final class VesselOfVolatility extends CardImpl {
public VesselOfVolatility(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VestigeOfEmrakul.java b/Mage.Sets/src/mage/cards/v/VestigeOfEmrakul.java
index e0c218810e8..810156c4eec 100644
--- a/Mage.Sets/src/mage/cards/v/VestigeOfEmrakul.java
+++ b/Mage.Sets/src/mage/cards/v/VestigeOfEmrakul.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class VestigeOfEmrakul extends CardImpl {
+public final class VestigeOfEmrakul extends CardImpl {
public VestigeOfEmrakul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/Vesuva.java b/Mage.Sets/src/mage/cards/v/Vesuva.java
index a62b9064804..208cb14b941 100644
--- a/Mage.Sets/src/mage/cards/v/Vesuva.java
+++ b/Mage.Sets/src/mage/cards/v/Vesuva.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author North
*/
-public class Vesuva extends CardImpl {
+public final class Vesuva extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("land");
diff --git a/Mage.Sets/src/mage/cards/v/VesuvanDoppelganger.java b/Mage.Sets/src/mage/cards/v/VesuvanDoppelganger.java
index 151db143eaf..282b08fcede 100644
--- a/Mage.Sets/src/mage/cards/v/VesuvanDoppelganger.java
+++ b/Mage.Sets/src/mage/cards/v/VesuvanDoppelganger.java
@@ -54,7 +54,7 @@ import mage.util.functions.ApplyToPermanent;
*
* @author jeffwadsworth
*/
-public class VesuvanDoppelganger extends CardImpl {
+public final class VesuvanDoppelganger extends CardImpl {
private static final String rule = "You may have {this} enter the battlefield as a copy of any creature on the battlefield except it doesn't copy that creature's color and it gains \"At the beginning of your upkeep, you may have this creature become a copy of target creature except it doesn't copy that creature's color. If you do, this creature gains this ability.\"";
diff --git a/Mage.Sets/src/mage/cards/v/VesuvanShapeshifter.java b/Mage.Sets/src/mage/cards/v/VesuvanShapeshifter.java
index 87525a45d81..95be5bd2a4d 100644
--- a/Mage.Sets/src/mage/cards/v/VesuvanShapeshifter.java
+++ b/Mage.Sets/src/mage/cards/v/VesuvanShapeshifter.java
@@ -61,7 +61,7 @@ import mage.util.functions.ApplyToPermanent;
/**
* @author spjspj
*/
-public class VesuvanShapeshifter extends CardImpl {
+public final class VesuvanShapeshifter extends CardImpl {
protected Ability turnFaceUpAbility = null;
private static final String effectText = "as a copy of any creature on the battlefield until {this} is turned faced down";
diff --git a/Mage.Sets/src/mage/cards/v/VeteranArmorer.java b/Mage.Sets/src/mage/cards/v/VeteranArmorer.java
index 68ee7ccb0de..554a57c86ee 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranArmorer.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranArmorer.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class VeteranArmorer extends CardImpl {
+public final class VeteranArmorer extends CardImpl {
public VeteranArmorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VeteranArmorsmith.java b/Mage.Sets/src/mage/cards/v/VeteranArmorsmith.java
index 025933b8bbd..87dea5479d0 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranArmorsmith.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranArmorsmith.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class VeteranArmorsmith extends CardImpl {
+public final class VeteranArmorsmith extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures");
diff --git a/Mage.Sets/src/mage/cards/v/VeteranBodyguard.java b/Mage.Sets/src/mage/cards/v/VeteranBodyguard.java
index 8a4f5adac3b..e76f0a2050c 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranBodyguard.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranBodyguard.java
@@ -54,7 +54,7 @@ import mage.game.permanent.Permanent;
*
* @author MTGfan
*/
-public class VeteranBodyguard extends CardImpl {
+public final class VeteranBodyguard extends CardImpl {
public VeteranBodyguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java b/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java
index 1ab3d12c248..6dca50d1e0e 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java
@@ -50,7 +50,7 @@ import mage.players.Player;
/**
* @author L_J
*/
-public class VeteranBrawlers extends CardImpl {
+public final class VeteranBrawlers extends CardImpl {
static final private FilterLandPermanent filter = new FilterLandPermanent("an untapped land");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VeteranCathar.java b/Mage.Sets/src/mage/cards/v/VeteranCathar.java
index 0f1915af567..dcfca26ea94 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranCathar.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranCathar.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VeteranCathar extends CardImpl {
+public final class VeteranCathar extends CardImpl {
public VeteranCathar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VeteranCavalier.java b/Mage.Sets/src/mage/cards/v/VeteranCavalier.java
index 81e77e30866..a9fcb702053 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranCavalier.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranCavalier.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class VeteranCavalier extends CardImpl {
+public final class VeteranCavalier extends CardImpl {
public VeteranCavalier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VeteranExplorer.java b/Mage.Sets/src/mage/cards/v/VeteranExplorer.java
index 63ff8fce33e..01a2423b617 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranExplorer.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranExplorer.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class VeteranExplorer extends CardImpl {
+public final class VeteranExplorer extends CardImpl {
public VeteranExplorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
@@ -116,7 +116,7 @@ class VeteranExplorerEffect extends OneShotEffect {
private void chooseAndSearchLibrary(List usingPlayers, Player player, Ability source, Game game) {
if (player.chooseUse(Outcome.PutCardInPlay, "Search your library for up to two basic land cards and put them onto the battlefield?", source, game)) {
usingPlayers.add(player);
- TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND);
if (player.searchLibrary(target, game)) {
if (!target.getTargets().isEmpty()) {
player.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game);
diff --git a/Mage.Sets/src/mage/cards/v/VeteranMotorist.java b/Mage.Sets/src/mage/cards/v/VeteranMotorist.java
index c543c33a245..2805649ebe3 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranMotorist.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranMotorist.java
@@ -44,7 +44,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class VeteranMotorist extends CardImpl {
+public final class VeteranMotorist extends CardImpl {
public VeteranMotorist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VeteranOfTheDepths.java b/Mage.Sets/src/mage/cards/v/VeteranOfTheDepths.java
index 6fb2919160b..255df704b89 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranOfTheDepths.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranOfTheDepths.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author Wehk
*/
-public class VeteranOfTheDepths extends CardImpl {
+public final class VeteranOfTheDepths extends CardImpl {
public VeteranOfTheDepths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VeteranSwordsmith.java b/Mage.Sets/src/mage/cards/v/VeteranSwordsmith.java
index a5a503bea0b..e9be568442a 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranSwordsmith.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranSwordsmith.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class VeteranSwordsmith extends CardImpl {
+public final class VeteranSwordsmith extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier");
diff --git a/Mage.Sets/src/mage/cards/v/VeteranWarleader.java b/Mage.Sets/src/mage/cards/v/VeteranWarleader.java
index 5f304d3d1ec..8150661240e 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranWarleader.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranWarleader.java
@@ -63,7 +63,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class VeteranWarleader extends CardImpl {
+public final class VeteranWarleader extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another untapped Ally you control");
diff --git a/Mage.Sets/src/mage/cards/v/VeteransArmaments.java b/Mage.Sets/src/mage/cards/v/VeteransArmaments.java
index f25e19013da..4b438e49c6f 100644
--- a/Mage.Sets/src/mage/cards/v/VeteransArmaments.java
+++ b/Mage.Sets/src/mage/cards/v/VeteransArmaments.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class VeteransArmaments extends CardImpl {
+public final class VeteransArmaments extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a Soldier creature");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VeteransReflexes.java b/Mage.Sets/src/mage/cards/v/VeteransReflexes.java
index 3ef50eeebfe..d37c7de4700 100644
--- a/Mage.Sets/src/mage/cards/v/VeteransReflexes.java
+++ b/Mage.Sets/src/mage/cards/v/VeteransReflexes.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class VeteransReflexes extends CardImpl {
+public final class VeteransReflexes extends CardImpl {
public VeteransReflexes (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VeteransSidearm.java b/Mage.Sets/src/mage/cards/v/VeteransSidearm.java
index 1e890b8e1ff..ebd1265678c 100644
--- a/Mage.Sets/src/mage/cards/v/VeteransSidearm.java
+++ b/Mage.Sets/src/mage/cards/v/VeteransSidearm.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class VeteransSidearm extends CardImpl {
+public final class VeteransSidearm extends CardImpl {
public VeteransSidearm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/v/VeteransVoice.java b/Mage.Sets/src/mage/cards/v/VeteransVoice.java
index 880bc071ee9..a3c46962f55 100644
--- a/Mage.Sets/src/mage/cards/v/VeteransVoice.java
+++ b/Mage.Sets/src/mage/cards/v/VeteransVoice.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author L_J
*/
-public class VeteransVoice extends CardImpl {
+public final class VeteransVoice extends CardImpl {
private static final FilterCreaturePermanent filterUntapped = new FilterCreaturePermanent("enchanted creature is untapped");
diff --git a/Mage.Sets/src/mage/cards/v/Vex.java b/Mage.Sets/src/mage/cards/v/Vex.java
index 96b014a2909..acb6fdd2e59 100644
--- a/Mage.Sets/src/mage/cards/v/Vex.java
+++ b/Mage.Sets/src/mage/cards/v/Vex.java
@@ -42,7 +42,7 @@ import mage.target.TargetSpell;
*
* @author wetterlicht
*/
-public class Vex extends CardImpl {
+public final class Vex extends CardImpl {
public Vex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VexingArcanix.java b/Mage.Sets/src/mage/cards/v/VexingArcanix.java
index 4181d5c85c0..00378c80066 100644
--- a/Mage.Sets/src/mage/cards/v/VexingArcanix.java
+++ b/Mage.Sets/src/mage/cards/v/VexingArcanix.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author BetaSteward_at_googlemail.com & L_J
*/
-public class VexingArcanix extends CardImpl {
+public final class VexingArcanix extends CardImpl {
public VexingArcanix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/v/VexingBeetle.java b/Mage.Sets/src/mage/cards/v/VexingBeetle.java
index 7e06626eeb1..dd674bf559e 100644
--- a/Mage.Sets/src/mage/cards/v/VexingBeetle.java
+++ b/Mage.Sets/src/mage/cards/v/VexingBeetle.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class VexingBeetle extends CardImpl {
+public final class VexingBeetle extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/v/VexingDevil.java b/Mage.Sets/src/mage/cards/v/VexingDevil.java
index a8d8eecf1e2..0fc2fdd7376 100644
--- a/Mage.Sets/src/mage/cards/v/VexingDevil.java
+++ b/Mage.Sets/src/mage/cards/v/VexingDevil.java
@@ -46,7 +46,7 @@ import mage.players.Player;
* @author noxx
*/
-public class VexingDevil extends CardImpl {
+public final class VexingDevil extends CardImpl {
public VexingDevil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VexingScuttler.java b/Mage.Sets/src/mage/cards/v/VexingScuttler.java
index 70e203bd6ea..d66fc5310fb 100644
--- a/Mage.Sets/src/mage/cards/v/VexingScuttler.java
+++ b/Mage.Sets/src/mage/cards/v/VexingScuttler.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class VexingScuttler extends CardImpl {
+public final class VexingScuttler extends CardImpl {
private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/v/VexingShusher.java b/Mage.Sets/src/mage/cards/v/VexingShusher.java
index 80553a4fde4..dc819e50dcb 100644
--- a/Mage.Sets/src/mage/cards/v/VexingShusher.java
+++ b/Mage.Sets/src/mage/cards/v/VexingShusher.java
@@ -51,7 +51,7 @@ import mage.target.TargetSpell;
*
* @author LevelX2
*/
-public class VexingShusher extends CardImpl {
+public final class VexingShusher extends CardImpl {
public VexingShusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/G}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/v/VexingSphinx.java b/Mage.Sets/src/mage/cards/v/VexingSphinx.java
index d5908b2b31f..30eb4065421 100644
--- a/Mage.Sets/src/mage/cards/v/VexingSphinx.java
+++ b/Mage.Sets/src/mage/cards/v/VexingSphinx.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class VexingSphinx extends CardImpl {
+public final class VexingSphinx extends CardImpl {
public VexingSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VhatiIlDal.java b/Mage.Sets/src/mage/cards/v/VhatiIlDal.java
index e525a692cbd..361065f8760 100644
--- a/Mage.Sets/src/mage/cards/v/VhatiIlDal.java
+++ b/Mage.Sets/src/mage/cards/v/VhatiIlDal.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VhatiIlDal extends CardImpl {
+public final class VhatiIlDal extends CardImpl {
public VhatiIlDal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VialOfDragonfire.java b/Mage.Sets/src/mage/cards/v/VialOfDragonfire.java
index 3a19688e507..6799eac089c 100644
--- a/Mage.Sets/src/mage/cards/v/VialOfDragonfire.java
+++ b/Mage.Sets/src/mage/cards/v/VialOfDragonfire.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class VialOfDragonfire extends CardImpl {
+public final class VialOfDragonfire extends CardImpl {
public VialOfDragonfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/v/VialOfPoison.java b/Mage.Sets/src/mage/cards/v/VialOfPoison.java
index db819bd2bc2..3fef7c2eb10 100644
--- a/Mage.Sets/src/mage/cards/v/VialOfPoison.java
+++ b/Mage.Sets/src/mage/cards/v/VialOfPoison.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class VialOfPoison extends CardImpl {
+public final class VialOfPoison extends CardImpl {
public VialOfPoison(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/v/VialSmasherTheFierce.java b/Mage.Sets/src/mage/cards/v/VialSmasherTheFierce.java
index 0835369de4f..b183a9a281c 100644
--- a/Mage.Sets/src/mage/cards/v/VialSmasherTheFierce.java
+++ b/Mage.Sets/src/mage/cards/v/VialSmasherTheFierce.java
@@ -58,7 +58,7 @@ import mage.watchers.common.SpellsCastWatcher;
*
* @author LevelX2
*/
-public class VialSmasherTheFierce extends CardImpl {
+public final class VialSmasherTheFierce extends CardImpl {
public VialSmasherTheFierce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoBladescout.java b/Mage.Sets/src/mage/cards/v/ViashinoBladescout.java
index e797ab70f55..f30269b725f 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoBladescout.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoBladescout.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ViashinoBladescout extends CardImpl {
+public final class ViashinoBladescout extends CardImpl {
public ViashinoBladescout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoCutthroat.java b/Mage.Sets/src/mage/cards/v/ViashinoCutthroat.java
index aebb8dec62d..7222e123956 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoCutthroat.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoCutthroat.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author Plopman
*/
-public class ViashinoCutthroat extends CardImpl {
+public final class ViashinoCutthroat extends CardImpl {
public ViashinoCutthroat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoFangtail.java b/Mage.Sets/src/mage/cards/v/ViashinoFangtail.java
index be499dd5230..7c9a00b6427 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoFangtail.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoFangtail.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class ViashinoFangtail extends CardImpl {
+public final class ViashinoFangtail extends CardImpl {
public ViashinoFangtail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoFirstblade.java b/Mage.Sets/src/mage/cards/v/ViashinoFirstblade.java
index bbbc0d05832..c36ccab1214 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoFirstblade.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoFirstblade.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author jeffwadsworth
*/
-public class ViashinoFirstblade extends CardImpl {
+public final class ViashinoFirstblade extends CardImpl {
public ViashinoFirstblade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoGrappler.java b/Mage.Sets/src/mage/cards/v/ViashinoGrappler.java
index 7559d773938..5139090ad0c 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoGrappler.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoGrappler.java
@@ -41,7 +41,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class ViashinoGrappler extends CardImpl {
+public final class ViashinoGrappler extends CardImpl {
public ViashinoGrappler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoHeretic.java b/Mage.Sets/src/mage/cards/v/ViashinoHeretic.java
index aeb6feef274..b2110018ad1 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoHeretic.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoHeretic.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Plopman
*/
-public class ViashinoHeretic extends CardImpl {
+public final class ViashinoHeretic extends CardImpl {
public ViashinoHeretic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoOutrider.java b/Mage.Sets/src/mage/cards/v/ViashinoOutrider.java
index 4698b591e18..3e1bb561a3d 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoOutrider.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoOutrider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class ViashinoOutrider extends CardImpl {
+public final class ViashinoOutrider extends CardImpl {
public ViashinoOutrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoRacketeer.java b/Mage.Sets/src/mage/cards/v/ViashinoRacketeer.java
index 83b9fe81df8..11ec42615db 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoRacketeer.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoRacketeer.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ViashinoRacketeer extends CardImpl {
+public final class ViashinoRacketeer extends CardImpl {
public ViashinoRacketeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoRunner.java b/Mage.Sets/src/mage/cards/v/ViashinoRunner.java
index 82d43889c58..b46217a73c6 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoRunner.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoRunner.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ViashinoRunner extends CardImpl {
+public final class ViashinoRunner extends CardImpl {
public ViashinoRunner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoSandscout.java b/Mage.Sets/src/mage/cards/v/ViashinoSandscout.java
index d20d16bbfa6..0f4107485cd 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoSandscout.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoSandscout.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author Plopman
*/
-public class ViashinoSandscout extends CardImpl {
+public final class ViashinoSandscout extends CardImpl {
public ViashinoSandscout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoSandstalker.java b/Mage.Sets/src/mage/cards/v/ViashinoSandstalker.java
index 10e43f6490d..817830cfb53 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoSandstalker.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoSandstalker.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
* @author jeffwadsworth
*
*/
-public class ViashinoSandstalker extends CardImpl {
+public final class ViashinoSandstalker extends CardImpl {
public ViashinoSandstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoSandswimmer.java b/Mage.Sets/src/mage/cards/v/ViashinoSandswimmer.java
index 0332111356c..883d2521212 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoSandswimmer.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoSandswimmer.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class ViashinoSandswimmer extends CardImpl {
+public final class ViashinoSandswimmer extends CardImpl {
public ViashinoSandswimmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoShanktail.java b/Mage.Sets/src/mage/cards/v/ViashinoShanktail.java
index 5673b91d733..f76b98c8110 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoShanktail.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoShanktail.java
@@ -44,7 +44,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class ViashinoShanktail extends CardImpl {
+public final class ViashinoShanktail extends CardImpl {
public ViashinoShanktail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoSkeleton.java b/Mage.Sets/src/mage/cards/v/ViashinoSkeleton.java
index a319ed74da2..135c2d65dda 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoSkeleton.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoSkeleton.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author North
*/
-public class ViashinoSkeleton extends CardImpl {
+public final class ViashinoSkeleton extends CardImpl {
public ViashinoSkeleton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoSlasher.java b/Mage.Sets/src/mage/cards/v/ViashinoSlasher.java
index d5ef31406e9..2954d227291 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoSlasher.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoSlasher.java
@@ -40,7 +40,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class ViashinoSlasher extends CardImpl {
+public final class ViashinoSlasher extends CardImpl {
public ViashinoSlasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoSlaughtermaster.java b/Mage.Sets/src/mage/cards/v/ViashinoSlaughtermaster.java
index e687dd07701..84b6a15efbf 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoSlaughtermaster.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoSlaughtermaster.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ViashinoSlaughtermaster extends CardImpl {
+public final class ViashinoSlaughtermaster extends CardImpl {
public ViashinoSlaughtermaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoSpearhunter.java b/Mage.Sets/src/mage/cards/v/ViashinoSpearhunter.java
index 84451be1105..3325891f834 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoSpearhunter.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoSpearhunter.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ViashinoSpearhunter extends CardImpl {
+public final class ViashinoSpearhunter extends CardImpl {
public ViashinoSpearhunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoWarrior.java b/Mage.Sets/src/mage/cards/v/ViashinoWarrior.java
index 0662cfee835..852def39cd9 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoWarrior.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoWarrior.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ViashinoWarrior extends CardImpl {
+public final class ViashinoWarrior extends CardImpl {
public ViashinoWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashinoWeaponsmith.java b/Mage.Sets/src/mage/cards/v/ViashinoWeaponsmith.java
index b91a2a96290..e603f2ca86a 100644
--- a/Mage.Sets/src/mage/cards/v/ViashinoWeaponsmith.java
+++ b/Mage.Sets/src/mage/cards/v/ViashinoWeaponsmith.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author hanasu
*/
-public class ViashinoWeaponsmith extends CardImpl {
+public final class ViashinoWeaponsmith extends CardImpl {
public ViashinoWeaponsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViashivanDragon.java b/Mage.Sets/src/mage/cards/v/ViashivanDragon.java
index 5e47c7e38cf..0bcff76e79e 100644
--- a/Mage.Sets/src/mage/cards/v/ViashivanDragon.java
+++ b/Mage.Sets/src/mage/cards/v/ViashivanDragon.java
@@ -14,7 +14,7 @@ import mage.constants.ColoredManaSymbol;
import mage.constants.Duration;
import mage.constants.Zone;
-public class ViashivanDragon extends CardImpl {
+public final class ViashivanDragon extends CardImpl {
public ViashivanDragon(UUID cardId, CardSetInfo cardSetInfo) {
super(cardId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VibratingSphere.java b/Mage.Sets/src/mage/cards/v/VibratingSphere.java
index a5b8a60c7b3..10ae0c618c0 100644
--- a/Mage.Sets/src/mage/cards/v/VibratingSphere.java
+++ b/Mage.Sets/src/mage/cards/v/VibratingSphere.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class VibratingSphere extends CardImpl {
+public final class VibratingSphere extends CardImpl {
public VibratingSphere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/v/ViciousBetrayal.java b/Mage.Sets/src/mage/cards/v/ViciousBetrayal.java
index 9994174caa9..00d834e9af6 100644
--- a/Mage.Sets/src/mage/cards/v/ViciousBetrayal.java
+++ b/Mage.Sets/src/mage/cards/v/ViciousBetrayal.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ViciousBetrayal extends CardImpl {
+public final class ViciousBetrayal extends CardImpl {
public ViciousBetrayal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/ViciousConquistador.java b/Mage.Sets/src/mage/cards/v/ViciousConquistador.java
index b36978c54d2..1b96b57ffe0 100644
--- a/Mage.Sets/src/mage/cards/v/ViciousConquistador.java
+++ b/Mage.Sets/src/mage/cards/v/ViciousConquistador.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class ViciousConquistador extends CardImpl {
+public final class ViciousConquistador extends CardImpl {
public ViciousConquistador(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/v/ViciousHunger.java b/Mage.Sets/src/mage/cards/v/ViciousHunger.java
index c5c433f93ff..4da13143b4c 100644
--- a/Mage.Sets/src/mage/cards/v/ViciousHunger.java
+++ b/Mage.Sets/src/mage/cards/v/ViciousHunger.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ViciousHunger extends CardImpl {
+public final class ViciousHunger extends CardImpl {
public ViciousHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/ViciousKavu.java b/Mage.Sets/src/mage/cards/v/ViciousKavu.java
index cea78da2bbe..781016c4250 100644
--- a/Mage.Sets/src/mage/cards/v/ViciousKavu.java
+++ b/Mage.Sets/src/mage/cards/v/ViciousKavu.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
* @author LoneFox
*/
-public class ViciousKavu extends CardImpl {
+public final class ViciousKavu extends CardImpl {
public ViciousKavu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViciousOffering.java b/Mage.Sets/src/mage/cards/v/ViciousOffering.java
index dcbd33241dd..2be0a0e24f8 100644
--- a/Mage.Sets/src/mage/cards/v/ViciousOffering.java
+++ b/Mage.Sets/src/mage/cards/v/ViciousOffering.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class ViciousOffering extends CardImpl {
+public final class ViciousOffering extends CardImpl {
public ViciousOffering(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/ViciousShadows.java b/Mage.Sets/src/mage/cards/v/ViciousShadows.java
index 07692300d50..716925e51a9 100644
--- a/Mage.Sets/src/mage/cards/v/ViciousShadows.java
+++ b/Mage.Sets/src/mage/cards/v/ViciousShadows.java
@@ -41,7 +41,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class ViciousShadows extends CardImpl {
+public final class ViciousShadows extends CardImpl {
public ViciousShadows(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{6}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VictimOfNight.java b/Mage.Sets/src/mage/cards/v/VictimOfNight.java
index 7a92fdb0b7b..cf3e6d564dc 100644
--- a/Mage.Sets/src/mage/cards/v/VictimOfNight.java
+++ b/Mage.Sets/src/mage/cards/v/VictimOfNight.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North, Loki
*/
-public class VictimOfNight extends CardImpl {
+public final class VictimOfNight extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Vampire, non-Werewolf, non-Zombie creature");
diff --git a/Mage.Sets/src/mage/cards/v/Victimize.java b/Mage.Sets/src/mage/cards/v/Victimize.java
index 48c2fa01f61..65d52b217a0 100644
--- a/Mage.Sets/src/mage/cards/v/Victimize.java
+++ b/Mage.Sets/src/mage/cards/v/Victimize.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author emerald000
*/
-public class Victimize extends CardImpl {
+public final class Victimize extends CardImpl {
public Victimize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VictoriousDestruction.java b/Mage.Sets/src/mage/cards/v/VictoriousDestruction.java
index ca307cea1c8..8e1fa8e6f2f 100644
--- a/Mage.Sets/src/mage/cards/v/VictoriousDestruction.java
+++ b/Mage.Sets/src/mage/cards/v/VictoriousDestruction.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class VictoriousDestruction extends CardImpl {
+public final class VictoriousDestruction extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or land");
diff --git a/Mage.Sets/src/mage/cards/v/VictoryChimes.java b/Mage.Sets/src/mage/cards/v/VictoryChimes.java
new file mode 100644
index 00000000000..95141cfcfc2
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/v/VictoryChimes.java
@@ -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.v;
+
+import java.util.UUID;
+import mage.Mana;
+import mage.abilities.Ability;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.ChoosePlayerEffect;
+import mage.abilities.effects.common.ManaEffect;
+import mage.abilities.mana.SimpleManaAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class VictoryChimes extends CardImpl {
+
+ public VictoryChimes(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
+
+ // Untap Victory Chimes during each other player's untap step.
+ // {T}: A player of your choice adds {C}.
+ ManaEffect effect = new VictoryChimesManaEffect("chosen player");
+ effect.setText("a player of your choice adds {C}");
+ Ability ability = new SimpleManaAbility(Zone.BATTLEFIELD, effect, new TapSourceCost());
+ // choosing player as first effect, before adding mana effect
+ ability.getEffects().add(0, new ChoosePlayerEffect(Outcome.PutManaInPool).setText(""));
+ this.addAbility(ability);
+ }
+
+ public VictoryChimes(final VictoryChimes card) {
+ super(card);
+ }
+
+ @Override
+ public VictoryChimes copy() {
+ return new VictoryChimes(this);
+ }
+}
+
+class VictoryChimesManaEffect extends ManaEffect {
+
+ public VictoryChimesManaEffect(String textManaPoolOwner) {
+ super();
+ this.staticText = "a player of your choice adds {C}";
+ }
+
+ public VictoryChimesManaEffect(final VictoryChimesManaEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer((UUID) game.getState().getValue(source.getSourceId() + "_player"));
+ if (player != null) {
+ checkToFirePossibleEvents(getMana(game, source), game, source);
+ player.getManaPool().addMana(getMana(game, source), game, source);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public Mana produceMana(boolean netMana, Game game, Ability source) {
+ return Mana.ColorlessMana(1);
+ }
+
+ @Override
+ public VictoryChimesManaEffect copy() {
+ return new VictoryChimesManaEffect(this);
+ }
+
+}
diff --git a/Mage.Sets/src/mage/cards/v/VictorysHerald.java b/Mage.Sets/src/mage/cards/v/VictorysHerald.java
index 64a99f66a17..004e33df89d 100644
--- a/Mage.Sets/src/mage/cards/v/VictorysHerald.java
+++ b/Mage.Sets/src/mage/cards/v/VictorysHerald.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author Loki
*/
-public class VictorysHerald extends CardImpl {
+public final class VictorysHerald extends CardImpl {
public VictorysHerald (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VictualSliver.java b/Mage.Sets/src/mage/cards/v/VictualSliver.java
index 99b060805a2..4553d8c30b0 100644
--- a/Mage.Sets/src/mage/cards/v/VictualSliver.java
+++ b/Mage.Sets/src/mage/cards/v/VictualSliver.java
@@ -48,7 +48,7 @@ import mage.filter.StaticFilters;
*
* @author KholdFuzion
*/
-public class VictualSliver extends CardImpl {
+public final class VictualSliver extends CardImpl {
public VictualSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/ViewFromAbove.java b/Mage.Sets/src/mage/cards/v/ViewFromAbove.java
index 4a6c210380e..4441ab58cf4 100644
--- a/Mage.Sets/src/mage/cards/v/ViewFromAbove.java
+++ b/Mage.Sets/src/mage/cards/v/ViewFromAbove.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class ViewFromAbove extends CardImpl {
+public final class ViewFromAbove extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("white permanent you control");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VigeanGraftmage.java b/Mage.Sets/src/mage/cards/v/VigeanGraftmage.java
index f4739ed5088..b9dc4849472 100644
--- a/Mage.Sets/src/mage/cards/v/VigeanGraftmage.java
+++ b/Mage.Sets/src/mage/cards/v/VigeanGraftmage.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author JotaPeRL
*/
-public class VigeanGraftmage extends CardImpl {
+public final class VigeanGraftmage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with a +1/+1 counter on it");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VigeanHydropon.java b/Mage.Sets/src/mage/cards/v/VigeanHydropon.java
index 760970ee523..54c448ce3d4 100644
--- a/Mage.Sets/src/mage/cards/v/VigeanHydropon.java
+++ b/Mage.Sets/src/mage/cards/v/VigeanHydropon.java
@@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
*
* @author JotaPeRL
*/
-public class VigeanHydropon extends CardImpl {
+public final class VigeanHydropon extends CardImpl {
public VigeanHydropon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VigilForTheLost.java b/Mage.Sets/src/mage/cards/v/VigilForTheLost.java
index d8ff070abc3..4e5773eed16 100644
--- a/Mage.Sets/src/mage/cards/v/VigilForTheLost.java
+++ b/Mage.Sets/src/mage/cards/v/VigilForTheLost.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class VigilForTheLost extends CardImpl {
+public final class VigilForTheLost extends CardImpl {
public VigilForTheLost (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/Vigilance.java b/Mage.Sets/src/mage/cards/v/Vigilance.java
index 02e37441bee..27d2cf79ea7 100644
--- a/Mage.Sets/src/mage/cards/v/Vigilance.java
+++ b/Mage.Sets/src/mage/cards/v/Vigilance.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Vigilance extends CardImpl {
+public final class Vigilance extends CardImpl {
public Vigilance (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VigilantDrake.java b/Mage.Sets/src/mage/cards/v/VigilantDrake.java
index 92e4ec09745..2cb4019f51a 100644
--- a/Mage.Sets/src/mage/cards/v/VigilantDrake.java
+++ b/Mage.Sets/src/mage/cards/v/VigilantDrake.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class VigilantDrake extends CardImpl {
+public final class VigilantDrake extends CardImpl {
public VigilantDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VigilantMartyr.java b/Mage.Sets/src/mage/cards/v/VigilantMartyr.java
index 027f1e3f38d..742473dc258 100644
--- a/Mage.Sets/src/mage/cards/v/VigilantMartyr.java
+++ b/Mage.Sets/src/mage/cards/v/VigilantMartyr.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LoneFox
*/
-public class VigilantMartyr extends CardImpl {
+public final class VigilantMartyr extends CardImpl {
private final static FilterSpell filter = new FilterSpell("spell that targets an enchantment");
diff --git a/Mage.Sets/src/mage/cards/v/VigilantSentry.java b/Mage.Sets/src/mage/cards/v/VigilantSentry.java
index 32570ceb134..6b5669fa2da 100644
--- a/Mage.Sets/src/mage/cards/v/VigilantSentry.java
+++ b/Mage.Sets/src/mage/cards/v/VigilantSentry.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature;
*
* @author LoneFox
*/
-public class VigilantSentry extends CardImpl {
+public final class VigilantSentry extends CardImpl {
public VigilantSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VigilanteJustice.java b/Mage.Sets/src/mage/cards/v/VigilanteJustice.java
index 1d0dab6b2b2..caf806a7358 100644
--- a/Mage.Sets/src/mage/cards/v/VigilanteJustice.java
+++ b/Mage.Sets/src/mage/cards/v/VigilanteJustice.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class VigilanteJustice extends CardImpl {
+public final class VigilanteJustice extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human");
diff --git a/Mage.Sets/src/mage/cards/v/Vigor.java b/Mage.Sets/src/mage/cards/v/Vigor.java
index c39c680c6a5..c3ec6d0a4a2 100644
--- a/Mage.Sets/src/mage/cards/v/Vigor.java
+++ b/Mage.Sets/src/mage/cards/v/Vigor.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author emerald000
*/
-public class Vigor extends CardImpl {
+public final class Vigor extends CardImpl {
public Vigor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VigorMortis.java b/Mage.Sets/src/mage/cards/v/VigorMortis.java
index 4bf838e0998..9376fff68d9 100644
--- a/Mage.Sets/src/mage/cards/v/VigorMortis.java
+++ b/Mage.Sets/src/mage/cards/v/VigorMortis.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author emerald000
*/
-public class VigorMortis extends CardImpl {
+public final class VigorMortis extends CardImpl {
public VigorMortis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VildinPackAlpha.java b/Mage.Sets/src/mage/cards/v/VildinPackAlpha.java
index 7daece32647..9657661136d 100644
--- a/Mage.Sets/src/mage/cards/v/VildinPackAlpha.java
+++ b/Mage.Sets/src/mage/cards/v/VildinPackAlpha.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class VildinPackAlpha extends CardImpl {
+public final class VildinPackAlpha extends CardImpl {
public VildinPackAlpha(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/v/VildinPackOutcast.java b/Mage.Sets/src/mage/cards/v/VildinPackOutcast.java
index 2f1aab511e3..b1a18882171 100644
--- a/Mage.Sets/src/mage/cards/v/VildinPackOutcast.java
+++ b/Mage.Sets/src/mage/cards/v/VildinPackOutcast.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class VildinPackOutcast extends CardImpl {
+public final class VildinPackOutcast extends CardImpl {
public VildinPackOutcast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VileAggregate.java b/Mage.Sets/src/mage/cards/v/VileAggregate.java
index 0c88cc36912..af70cee2c10 100644
--- a/Mage.Sets/src/mage/cards/v/VileAggregate.java
+++ b/Mage.Sets/src/mage/cards/v/VileAggregate.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
*
* @author LevelX2
*/
-public class VileAggregate extends CardImpl {
+public final class VileAggregate extends CardImpl {
private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("colorless creatures you control");
diff --git a/Mage.Sets/src/mage/cards/v/VileConsumption.java b/Mage.Sets/src/mage/cards/v/VileConsumption.java
index 01f6557a8d6..29e1beaeae9 100644
--- a/Mage.Sets/src/mage/cards/v/VileConsumption.java
+++ b/Mage.Sets/src/mage/cards/v/VileConsumption.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LoneFox
*/
-public class VileConsumption extends CardImpl {
+public final class VileConsumption extends CardImpl {
public VileConsumption(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VileDeacon.java b/Mage.Sets/src/mage/cards/v/VileDeacon.java
index cbb1465f046..bf7e3033ef3 100644
--- a/Mage.Sets/src/mage/cards/v/VileDeacon.java
+++ b/Mage.Sets/src/mage/cards/v/VileDeacon.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LoneFox
*/
-public class VileDeacon extends CardImpl {
+public final class VileDeacon extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Clerics");
diff --git a/Mage.Sets/src/mage/cards/v/VileManifestation.java b/Mage.Sets/src/mage/cards/v/VileManifestation.java
index ae43afe3bf3..d7572b59168 100644
--- a/Mage.Sets/src/mage/cards/v/VileManifestation.java
+++ b/Mage.Sets/src/mage/cards/v/VileManifestation.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author spjspj
*/
-public class VileManifestation extends CardImpl {
+public final class VileManifestation extends CardImpl {
private static final FilterCard filter = new FilterCard();
diff --git a/Mage.Sets/src/mage/cards/v/VileRebirth.java b/Mage.Sets/src/mage/cards/v/VileRebirth.java
index 20acfcd65fe..115ba008c24 100644
--- a/Mage.Sets/src/mage/cards/v/VileRebirth.java
+++ b/Mage.Sets/src/mage/cards/v/VileRebirth.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author North
*/
-public class VileRebirth extends CardImpl {
+public final class VileRebirth extends CardImpl {
public VileRebirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VileRedeemer.java b/Mage.Sets/src/mage/cards/v/VileRedeemer.java
index 9b9952b89cb..1cb0a73bf13 100644
--- a/Mage.Sets/src/mage/cards/v/VileRedeemer.java
+++ b/Mage.Sets/src/mage/cards/v/VileRedeemer.java
@@ -57,7 +57,7 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class VileRedeemer extends CardImpl {
+public final class VileRedeemer extends CardImpl {
public VileRedeemer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VileRequiem.java b/Mage.Sets/src/mage/cards/v/VileRequiem.java
index 4573f230b67..067f21bc6b7 100644
--- a/Mage.Sets/src/mage/cards/v/VileRequiem.java
+++ b/Mage.Sets/src/mage/cards/v/VileRequiem.java
@@ -54,7 +54,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class VileRequiem extends CardImpl {
+public final class VileRequiem extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("up to X target nonblack creatures, where X is the number of verse counters on {this}");
diff --git a/Mage.Sets/src/mage/cards/v/VillageBellRinger.java b/Mage.Sets/src/mage/cards/v/VillageBellRinger.java
index 41c4e86ea3a..0f631366b5a 100644
--- a/Mage.Sets/src/mage/cards/v/VillageBellRinger.java
+++ b/Mage.Sets/src/mage/cards/v/VillageBellRinger.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author nantuko
*/
-public class VillageBellRinger extends CardImpl {
+public final class VillageBellRinger extends CardImpl {
private static final String rule = "untap all creatures you control";
diff --git a/Mage.Sets/src/mage/cards/v/VillageCannibals.java b/Mage.Sets/src/mage/cards/v/VillageCannibals.java
index f34e8907e73..1329b7e1389 100644
--- a/Mage.Sets/src/mage/cards/v/VillageCannibals.java
+++ b/Mage.Sets/src/mage/cards/v/VillageCannibals.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class VillageCannibals extends CardImpl {
+public final class VillageCannibals extends CardImpl {
public VillageCannibals(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VillageElder.java b/Mage.Sets/src/mage/cards/v/VillageElder.java
index f5740a3c5c8..1759e950da5 100644
--- a/Mage.Sets/src/mage/cards/v/VillageElder.java
+++ b/Mage.Sets/src/mage/cards/v/VillageElder.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class VillageElder extends CardImpl {
+public final class VillageElder extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a Forest");
static{
diff --git a/Mage.Sets/src/mage/cards/v/VillageIronsmith.java b/Mage.Sets/src/mage/cards/v/VillageIronsmith.java
index d32fafe9832..9711a8008e8 100644
--- a/Mage.Sets/src/mage/cards/v/VillageIronsmith.java
+++ b/Mage.Sets/src/mage/cards/v/VillageIronsmith.java
@@ -46,7 +46,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class VillageIronsmith extends CardImpl {
+public final class VillageIronsmith extends CardImpl {
public VillageIronsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VillageMessenger.java b/Mage.Sets/src/mage/cards/v/VillageMessenger.java
index 24734fd60f9..df991e65e97 100644
--- a/Mage.Sets/src/mage/cards/v/VillageMessenger.java
+++ b/Mage.Sets/src/mage/cards/v/VillageMessenger.java
@@ -47,7 +47,7 @@ import mage.constants.TargetController;
*
* @author fireshoes
*/
-public class VillageMessenger extends CardImpl {
+public final class VillageMessenger extends CardImpl {
public VillageMessenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VillageSurvivors.java b/Mage.Sets/src/mage/cards/v/VillageSurvivors.java
index be989800441..878cbec583d 100644
--- a/Mage.Sets/src/mage/cards/v/VillageSurvivors.java
+++ b/Mage.Sets/src/mage/cards/v/VillageSurvivors.java
@@ -46,7 +46,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class VillageSurvivors extends CardImpl {
+public final class VillageSurvivors extends CardImpl {
public VillageSurvivors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VillagersOfEstwald.java b/Mage.Sets/src/mage/cards/v/VillagersOfEstwald.java
index 319e06ffc30..7e10640684f 100644
--- a/Mage.Sets/src/mage/cards/v/VillagersOfEstwald.java
+++ b/Mage.Sets/src/mage/cards/v/VillagersOfEstwald.java
@@ -45,7 +45,7 @@ import mage.constants.TargetController;
/**
* @author nantuko
*/
-public class VillagersOfEstwald extends CardImpl {
+public final class VillagersOfEstwald extends CardImpl {
public VillagersOfEstwald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VillainousOgre.java b/Mage.Sets/src/mage/cards/v/VillainousOgre.java
index 1e45daa9a78..d19f619db2b 100644
--- a/Mage.Sets/src/mage/cards/v/VillainousOgre.java
+++ b/Mage.Sets/src/mage/cards/v/VillainousOgre.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX
*/
-public class VillainousOgre extends CardImpl {
+public final class VillainousOgre extends CardImpl {
private static final String rule = "As long as you control a Demon, {this} has {B}: Regenerate Villainous Ogre";
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Demon");
diff --git a/Mage.Sets/src/mage/cards/v/VillainousWealth.java b/Mage.Sets/src/mage/cards/v/VillainousWealth.java
index f33f371f908..a1c83ad56f6 100644
--- a/Mage.Sets/src/mage/cards/v/VillainousWealth.java
+++ b/Mage.Sets/src/mage/cards/v/VillainousWealth.java
@@ -29,6 +29,7 @@ package mage.cards.v;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.*;
@@ -49,7 +50,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class VillainousWealth extends CardImpl {
+public final class VillainousWealth extends CardImpl {
public VillainousWealth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{G}{U}");
@@ -110,7 +111,7 @@ class VillainousWealthEffect extends OneShotEffect {
while (cardsToExile.count(filter, game) > 0 && controller.choose(Outcome.PlayForFree, cardsToExile, target, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
cardsToExile.remove(card);
} else {
break OuterLoop;
diff --git a/Mage.Sets/src/mage/cards/v/Vindicate.java b/Mage.Sets/src/mage/cards/v/Vindicate.java
index a3e840e25b1..dde94ea06a3 100644
--- a/Mage.Sets/src/mage/cards/v/Vindicate.java
+++ b/Mage.Sets/src/mage/cards/v/Vindicate.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class Vindicate extends CardImpl {
+public final class Vindicate extends CardImpl {
public Vindicate (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VindictiveLich.java b/Mage.Sets/src/mage/cards/v/VindictiveLich.java
index 6e57aa6c52d..f4b55f61427 100644
--- a/Mage.Sets/src/mage/cards/v/VindictiveLich.java
+++ b/Mage.Sets/src/mage/cards/v/VindictiveLich.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponent;
*
* @author anonymous
*/
-public class VindictiveLich extends CardImpl {
+public final class VindictiveLich extends CardImpl {
public VindictiveLich(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VindictiveMob.java b/Mage.Sets/src/mage/cards/v/VindictiveMob.java
index 0d9ae25bda1..8cb78b982f0 100644
--- a/Mage.Sets/src/mage/cards/v/VindictiveMob.java
+++ b/Mage.Sets/src/mage/cards/v/VindictiveMob.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Wehk
*/
-public class VindictiveMob extends CardImpl {
+public final class VindictiveMob extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("can't be blocked by Saprolings");
diff --git a/Mage.Sets/src/mage/cards/v/VineDryad.java b/Mage.Sets/src/mage/cards/v/VineDryad.java
index d33fe3f15e6..aee75f5faa4 100644
--- a/Mage.Sets/src/mage/cards/v/VineDryad.java
+++ b/Mage.Sets/src/mage/cards/v/VineDryad.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author fireshoes
*/
-public class VineDryad extends CardImpl {
+public final class VineDryad extends CardImpl {
public VineDryad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VineKami.java b/Mage.Sets/src/mage/cards/v/VineKami.java
index d0047621143..24e2daf352a 100644
--- a/Mage.Sets/src/mage/cards/v/VineKami.java
+++ b/Mage.Sets/src/mage/cards/v/VineKami.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class VineKami extends CardImpl {
+public final class VineKami extends CardImpl {
public VineKami(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VineSnare.java b/Mage.Sets/src/mage/cards/v/VineSnare.java
index 2ccc2d932c6..18090c805dd 100644
--- a/Mage.Sets/src/mage/cards/v/VineSnare.java
+++ b/Mage.Sets/src/mage/cards/v/VineSnare.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author LevelX2
*/
-public class VineSnare extends CardImpl {
+public final class VineSnare extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 4 or less");
diff --git a/Mage.Sets/src/mage/cards/v/VineTrellis.java b/Mage.Sets/src/mage/cards/v/VineTrellis.java
index ac8ece674b5..d2c6aa1bfb6 100644
--- a/Mage.Sets/src/mage/cards/v/VineTrellis.java
+++ b/Mage.Sets/src/mage/cards/v/VineTrellis.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class VineTrellis extends CardImpl {
+public final class VineTrellis extends CardImpl {
public VineTrellis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VinelasherKudzu.java b/Mage.Sets/src/mage/cards/v/VinelasherKudzu.java
index 885ab8b4ee3..1ebe6f6ee56 100644
--- a/Mage.Sets/src/mage/cards/v/VinelasherKudzu.java
+++ b/Mage.Sets/src/mage/cards/v/VinelasherKudzu.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author Loki
*/
-public class VinelasherKudzu extends CardImpl {
+public final class VinelasherKudzu extends CardImpl {
public VinelasherKudzu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VinesOfTheRecluse.java b/Mage.Sets/src/mage/cards/v/VinesOfTheRecluse.java
index c8206916b40..7aa16c4a2e3 100644
--- a/Mage.Sets/src/mage/cards/v/VinesOfTheRecluse.java
+++ b/Mage.Sets/src/mage/cards/v/VinesOfTheRecluse.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VinesOfTheRecluse extends CardImpl {
+public final class VinesOfTheRecluse extends CardImpl {
public VinesOfTheRecluse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VinesOfVastwood.java b/Mage.Sets/src/mage/cards/v/VinesOfVastwood.java
index 2f69b84e415..1ad7f175ba4 100644
--- a/Mage.Sets/src/mage/cards/v/VinesOfVastwood.java
+++ b/Mage.Sets/src/mage/cards/v/VinesOfVastwood.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author nantuko
*/
-public class VinesOfVastwood extends CardImpl {
+public final class VinesOfVastwood extends CardImpl {
private static final FilterObject filter = new FilterStackObject("spells or abilities your opponents control");
diff --git a/Mage.Sets/src/mage/cards/v/VineshaperMystic.java b/Mage.Sets/src/mage/cards/v/VineshaperMystic.java
index 28471aa8fce..44b7c7b363e 100644
--- a/Mage.Sets/src/mage/cards/v/VineshaperMystic.java
+++ b/Mage.Sets/src/mage/cards/v/VineshaperMystic.java
@@ -48,7 +48,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class VineshaperMystic extends CardImpl {
+public final class VineshaperMystic extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Merfolk you control");
diff --git a/Mage.Sets/src/mage/cards/v/Vineweft.java b/Mage.Sets/src/mage/cards/v/Vineweft.java
index d0d8437e4c7..5d621581f04 100644
--- a/Mage.Sets/src/mage/cards/v/Vineweft.java
+++ b/Mage.Sets/src/mage/cards/v/Vineweft.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Vineweft extends CardImpl {
+public final class Vineweft extends CardImpl {
public Vineweft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VintaraElephant.java b/Mage.Sets/src/mage/cards/v/VintaraElephant.java
index 793f13abc0f..d79b1000211 100644
--- a/Mage.Sets/src/mage/cards/v/VintaraElephant.java
+++ b/Mage.Sets/src/mage/cards/v/VintaraElephant.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class VintaraElephant extends CardImpl {
+public final class VintaraElephant extends CardImpl {
public VintaraElephant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VintaraSnapper.java b/Mage.Sets/src/mage/cards/v/VintaraSnapper.java
index 349ecf07aa2..72cfe2d4e38 100644
--- a/Mage.Sets/src/mage/cards/v/VintaraSnapper.java
+++ b/Mage.Sets/src/mage/cards/v/VintaraSnapper.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LoneFox
*/
-public class VintaraSnapper extends CardImpl {
+public final class VintaraSnapper extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/v/ViolentEruption.java b/Mage.Sets/src/mage/cards/v/ViolentEruption.java
index 24eb98c89be..63d8580f5e9 100644
--- a/Mage.Sets/src/mage/cards/v/ViolentEruption.java
+++ b/Mage.Sets/src/mage/cards/v/ViolentEruption.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author magenoxx_at_gmail.com
*/
-public class ViolentEruption extends CardImpl {
+public final class ViolentEruption extends CardImpl {
public ViolentEruption(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/ViolentImpact.java b/Mage.Sets/src/mage/cards/v/ViolentImpact.java
index 75832a27b8c..2c66e13aaf7 100644
--- a/Mage.Sets/src/mage/cards/v/ViolentImpact.java
+++ b/Mage.Sets/src/mage/cards/v/ViolentImpact.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class ViolentImpact extends CardImpl {
+public final class ViolentImpact extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or land");
diff --git a/Mage.Sets/src/mage/cards/v/ViolentOutburst.java b/Mage.Sets/src/mage/cards/v/ViolentOutburst.java
index a3fc1c77b5f..10263aa722c 100644
--- a/Mage.Sets/src/mage/cards/v/ViolentOutburst.java
+++ b/Mage.Sets/src/mage/cards/v/ViolentOutburst.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class ViolentOutburst extends CardImpl {
+public final class ViolentOutburst extends CardImpl {
public ViolentOutburst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/ViolentUltimatum.java b/Mage.Sets/src/mage/cards/v/ViolentUltimatum.java
index cabdba1b2e3..b43ffd77b4c 100644
--- a/Mage.Sets/src/mage/cards/v/ViolentUltimatum.java
+++ b/Mage.Sets/src/mage/cards/v/ViolentUltimatum.java
@@ -40,7 +40,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class ViolentUltimatum extends CardImpl {
+public final class ViolentUltimatum extends CardImpl {
public ViolentUltimatum (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}{R}{R}{R}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VioletPall.java b/Mage.Sets/src/mage/cards/v/VioletPall.java
index c83157080fd..cf4d70ae1ce 100644
--- a/Mage.Sets/src/mage/cards/v/VioletPall.java
+++ b/Mage.Sets/src/mage/cards/v/VioletPall.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class VioletPall extends CardImpl {
+public final class VioletPall extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/v/VipersKiss.java b/Mage.Sets/src/mage/cards/v/VipersKiss.java
index d2dae5341a3..04c9c15266c 100644
--- a/Mage.Sets/src/mage/cards/v/VipersKiss.java
+++ b/Mage.Sets/src/mage/cards/v/VipersKiss.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VipersKiss extends CardImpl {
+public final class VipersKiss extends CardImpl {
public VipersKiss(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/v/ViralDrake.java b/Mage.Sets/src/mage/cards/v/ViralDrake.java
index 92d3ba4f548..ef57eec317e 100644
--- a/Mage.Sets/src/mage/cards/v/ViralDrake.java
+++ b/Mage.Sets/src/mage/cards/v/ViralDrake.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class ViralDrake extends CardImpl {
+public final class ViralDrake extends CardImpl {
public ViralDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/ViridescentWisps.java b/Mage.Sets/src/mage/cards/v/ViridescentWisps.java
index b66ef024c45..3c463d76ff7 100644
--- a/Mage.Sets/src/mage/cards/v/ViridescentWisps.java
+++ b/Mage.Sets/src/mage/cards/v/ViridescentWisps.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX
*/
-public class ViridescentWisps extends CardImpl {
+public final class ViridescentWisps extends CardImpl {
public ViridescentWisps (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/v/ViridianAcolyte.java b/Mage.Sets/src/mage/cards/v/ViridianAcolyte.java
index a06ba48d552..58e6b7f6d10 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianAcolyte.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianAcolyte.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class ViridianAcolyte extends CardImpl {
+public final class ViridianAcolyte extends CardImpl {
public ViridianAcolyte(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/v/ViridianBetrayers.java b/Mage.Sets/src/mage/cards/v/ViridianBetrayers.java
index 2da4e039669..01840ec96a2 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianBetrayers.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianBetrayers.java
@@ -48,7 +48,7 @@ import mage.players.Player;
/**
* @author North
*/
-public class ViridianBetrayers extends CardImpl {
+public final class ViridianBetrayers extends CardImpl {
private static final String rule = "{this} has infect as long as an opponent is poisoned.";
diff --git a/Mage.Sets/src/mage/cards/v/ViridianClaw.java b/Mage.Sets/src/mage/cards/v/ViridianClaw.java
index 75272590a3f..2bf314e3667 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianClaw.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianClaw.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class ViridianClaw extends CardImpl {
+public final class ViridianClaw extends CardImpl {
public ViridianClaw (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/v/ViridianCorrupter.java b/Mage.Sets/src/mage/cards/v/ViridianCorrupter.java
index e9a3439315d..94f0a4c960e 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianCorrupter.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianCorrupter.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Loki
*/
-public class ViridianCorrupter extends CardImpl {
+public final class ViridianCorrupter extends CardImpl {
public ViridianCorrupter (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/ViridianEmissary.java b/Mage.Sets/src/mage/cards/v/ViridianEmissary.java
index 117bdec706a..f642dbf3b02 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianEmissary.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianEmissary.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class ViridianEmissary extends CardImpl {
+public final class ViridianEmissary extends CardImpl {
public ViridianEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
@@ -54,7 +54,7 @@ public class ViridianEmissary extends CardImpl {
this.toughness = new MageInt(1);
// When Viridian Emissary dies, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- this.addAbility(new DiesTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true), true));
+ this.addAbility(new DiesTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
}
public ViridianEmissary(final ViridianEmissary card) {
diff --git a/Mage.Sets/src/mage/cards/v/ViridianHarvest.java b/Mage.Sets/src/mage/cards/v/ViridianHarvest.java
index 334044298a1..860fe75c138 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianHarvest.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianHarvest.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Loki
*/
-public class ViridianHarvest extends CardImpl {
+public final class ViridianHarvest extends CardImpl {
public ViridianHarvest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/v/ViridianJoiner.java b/Mage.Sets/src/mage/cards/v/ViridianJoiner.java
index ece627c45dd..e83d464c58d 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianJoiner.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianJoiner.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class ViridianJoiner extends CardImpl {
+public final class ViridianJoiner extends CardImpl {
public ViridianJoiner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/ViridianLongbow.java b/Mage.Sets/src/mage/cards/v/ViridianLongbow.java
index 25f3396e8fd..a199dad17ea 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianLongbow.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianLongbow.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class ViridianLongbow extends CardImpl {
+public final class ViridianLongbow extends CardImpl {
public ViridianLongbow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/v/ViridianLorebearers.java b/Mage.Sets/src/mage/cards/v/ViridianLorebearers.java
index 53174bb5a9c..d97b2550232 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianLorebearers.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianLorebearers.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ViridianLorebearers extends CardImpl {
+public final class ViridianLorebearers extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifacts your opponents control");
diff --git a/Mage.Sets/src/mage/cards/v/ViridianRevel.java b/Mage.Sets/src/mage/cards/v/ViridianRevel.java
index 361c4ad8281..817fd041a78 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianRevel.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianRevel.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class ViridianRevel extends CardImpl {
+public final class ViridianRevel extends CardImpl {
public ViridianRevel (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/ViridianScout.java b/Mage.Sets/src/mage/cards/v/ViridianScout.java
index 059b781ae50..9ea9bf600a3 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianScout.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianScout.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ViridianScout extends CardImpl {
+public final class ViridianScout extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
static{
diff --git a/Mage.Sets/src/mage/cards/v/ViridianShaman.java b/Mage.Sets/src/mage/cards/v/ViridianShaman.java
index 92e817d4975..ece95ebf1a7 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianShaman.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianShaman.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class ViridianShaman extends CardImpl {
+public final class ViridianShaman extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/v/ViridianZealot.java b/Mage.Sets/src/mage/cards/v/ViridianZealot.java
index 05802d47627..783f91e42d8 100644
--- a/Mage.Sets/src/mage/cards/v/ViridianZealot.java
+++ b/Mage.Sets/src/mage/cards/v/ViridianZealot.java
@@ -46,7 +46,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class ViridianZealot extends CardImpl {
+public final class ViridianZealot extends CardImpl {
public ViridianZealot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VirtuesRuin.java b/Mage.Sets/src/mage/cards/v/VirtuesRuin.java
index b4bc657bedb..dcbbfe00ae5 100644
--- a/Mage.Sets/src/mage/cards/v/VirtuesRuin.java
+++ b/Mage.Sets/src/mage/cards/v/VirtuesRuin.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author dustinconrad
*/
-public class VirtuesRuin extends CardImpl {
+public final class VirtuesRuin extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures");
diff --git a/Mage.Sets/src/mage/cards/v/VirtuousCharge.java b/Mage.Sets/src/mage/cards/v/VirtuousCharge.java
index 7ba87f4f57c..47e21d119ff 100644
--- a/Mage.Sets/src/mage/cards/v/VirtuousCharge.java
+++ b/Mage.Sets/src/mage/cards/v/VirtuousCharge.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class VirtuousCharge extends CardImpl {
+public final class VirtuousCharge extends CardImpl {
public VirtuousCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VirtusTheVeiled.java b/Mage.Sets/src/mage/cards/v/VirtusTheVeiled.java
new file mode 100644
index 00000000000..e24d98a4fe6
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/v/VirtusTheVeiled.java
@@ -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.v;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
+import mage.abilities.effects.common.LoseHalfLifeTargetEffect;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.abilities.keyword.DeathtouchAbility;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class VirtusTheVeiled extends CardImpl {
+
+ public VirtusTheVeiled(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.AZRA);
+ this.subtype.add(SubType.ASSASSIN);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Partner with Gorm the Great (When this creature enters the battlefield, target player may put Gorm into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Gorm the Great", true));
+
+ // Deathtouch
+ this.addAbility(DeathtouchAbility.getInstance());
+
+ // Whenever Virtus the Veiled deals combat damage to a player, that player loses half their life, rounded up.
+ this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new LoseHalfLifeTargetEffect(), false, true));
+ }
+
+ public VirtusTheVeiled(final VirtusTheVeiled card) {
+ super(card);
+ }
+
+ @Override
+ public VirtusTheVeiled copy() {
+ return new VirtusTheVeiled(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/v/VirtussManeuver.java b/Mage.Sets/src/mage/cards/v/VirtussManeuver.java
new file mode 100644
index 00000000000..bd184b7baa8
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/v/VirtussManeuver.java
@@ -0,0 +1,141 @@
+/*
+ * 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.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.choices.ChooseFriendsAndFoes;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.filter.StaticFilters;
+import mage.filter.predicate.other.OwnerIdPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetCardInGraveyard;
+import mage.target.common.TargetControlledPermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class VirtussManeuver extends CardImpl {
+
+ public VirtussManeuver(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
+
+ // For each player, choose friend or foe. Each friend returns a creature card from their graveyard to their hand. Each foe sacrifices a creature they control.
+ this.getSpellAbility().addEffect(new VirtussManeuverEffect());
+ }
+
+ public VirtussManeuver(final VirtussManeuver card) {
+ super(card);
+ }
+
+ @Override
+ public VirtussManeuver copy() {
+ return new VirtussManeuver(this);
+ }
+}
+
+class VirtussManeuverEffect extends OneShotEffect {
+
+ VirtussManeuverEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "For each player, choose friend or foe."
+ + " Each friend returns a creature card from their graveyard to their hand. "
+ + "Each foe sacrifices a creature they control";
+ }
+
+ VirtussManeuverEffect(final VirtussManeuverEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public VirtussManeuverEffect copy() {
+ return new VirtussManeuverEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getSourceId());
+ ChooseFriendsAndFoes choice = new ChooseFriendsAndFoes();
+ if (!choice.chooseFriendOrFoe(controller, source, game)) {
+ return false;
+ }
+ Map getBackMap = new HashMap<>();
+ for (Player player : choice.getFriends()) {
+ if (player == null) {
+ continue;
+ }
+ FilterCard filter = new FilterCard("card in your graveyard");
+ filter.add(new OwnerIdPredicate(player.getId()));
+ TargetCardInGraveyard target = new TargetCardInGraveyard(filter);
+ getBackMap.put(player.getId(), null);
+ if (player.choose(Outcome.ReturnToHand, target, source.getSourceId(), game)) {
+ getBackMap.put(player.getId(), game.getCard(target.getFirstTarget()));
+ }
+ }
+ for (Player player : choice.getFriends()) {
+ if (player == null) {
+ continue;
+ }
+ Card card = getBackMap.getOrDefault(player.getId(), null);
+ if (card == null) {
+ continue;
+ }
+ player.moveCards(card, Zone.HAND, source, game);
+ }
+ List perms = new ArrayList<>();
+ for (Player player : choice.getFoes()) {
+ if (player == null) {
+ continue;
+ }
+ TargetControlledPermanent target = new TargetControlledPermanent(1, 1, StaticFilters.FILTER_CONTROLLED_A_CREATURE, true);
+ player.choose(Outcome.Sacrifice, target, source.getSourceId(), game);
+ perms.addAll(target.getTargets());
+ }
+ for (UUID permID : perms) {
+ Permanent permanent = game.getPermanent(permID);
+ if (permanent != null) {
+ permanent.sacrifice(source.getSourceId(), game);
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/v/VirulentPlague.java b/Mage.Sets/src/mage/cards/v/VirulentPlague.java
index 15a369bd739..1a15b2a9071 100644
--- a/Mage.Sets/src/mage/cards/v/VirulentPlague.java
+++ b/Mage.Sets/src/mage/cards/v/VirulentPlague.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author LevelX2
*/
-public class VirulentPlague extends CardImpl {
+public final class VirulentPlague extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VirulentSliver.java b/Mage.Sets/src/mage/cards/v/VirulentSliver.java
index 1b6db3a009d..871a845bb0f 100644
--- a/Mage.Sets/src/mage/cards/v/VirulentSliver.java
+++ b/Mage.Sets/src/mage/cards/v/VirulentSliver.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author dokkaebi
*/
-public class VirulentSliver extends CardImpl {
+public final class VirulentSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/v/VirulentSwipe.java b/Mage.Sets/src/mage/cards/v/VirulentSwipe.java
index ba58c56d6b6..50ca858f2b7 100644
--- a/Mage.Sets/src/mage/cards/v/VirulentSwipe.java
+++ b/Mage.Sets/src/mage/cards/v/VirulentSwipe.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class VirulentSwipe extends CardImpl {
+public final class VirulentSwipe extends CardImpl {
public VirulentSwipe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VirulentWound.java b/Mage.Sets/src/mage/cards/v/VirulentWound.java
index 96b0e732b32..9fcee17374d 100644
--- a/Mage.Sets/src/mage/cards/v/VirulentWound.java
+++ b/Mage.Sets/src/mage/cards/v/VirulentWound.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class VirulentWound extends CardImpl {
+public final class VirulentWound extends CardImpl {
public VirulentWound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VisageOfBolas.java b/Mage.Sets/src/mage/cards/v/VisageOfBolas.java
index a6c54f2af13..e94945b2256 100644
--- a/Mage.Sets/src/mage/cards/v/VisageOfBolas.java
+++ b/Mage.Sets/src/mage/cards/v/VisageOfBolas.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*
* @author spjspj
*/
-public class VisageOfBolas extends CardImpl {
+public final class VisageOfBolas extends CardImpl {
private final static FilterCard filter = new FilterCard("Nicol Bolas, the Deceiver");
diff --git a/Mage.Sets/src/mage/cards/v/VisaraTheDreadful.java b/Mage.Sets/src/mage/cards/v/VisaraTheDreadful.java
index 46dd748d822..00a7c83d9ea 100644
--- a/Mage.Sets/src/mage/cards/v/VisaraTheDreadful.java
+++ b/Mage.Sets/src/mage/cards/v/VisaraTheDreadful.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VisaraTheDreadful extends CardImpl {
+public final class VisaraTheDreadful extends CardImpl {
public VisaraTheDreadful(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VisceraDragger.java b/Mage.Sets/src/mage/cards/v/VisceraDragger.java
index 386a813f700..2279bf842d2 100644
--- a/Mage.Sets/src/mage/cards/v/VisceraDragger.java
+++ b/Mage.Sets/src/mage/cards/v/VisceraDragger.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class VisceraDragger extends CardImpl {
+public final class VisceraDragger extends CardImpl {
public VisceraDragger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VisceraSeer.java b/Mage.Sets/src/mage/cards/v/VisceraSeer.java
index d1386f2758b..a16bc1fb175 100644
--- a/Mage.Sets/src/mage/cards/v/VisceraSeer.java
+++ b/Mage.Sets/src/mage/cards/v/VisceraSeer.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class VisceraSeer extends CardImpl {
+public final class VisceraSeer extends CardImpl {
public VisceraSeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VisceridArmor.java b/Mage.Sets/src/mage/cards/v/VisceridArmor.java
index 12d1c7cd571..a87f43ad2ae 100644
--- a/Mage.Sets/src/mage/cards/v/VisceridArmor.java
+++ b/Mage.Sets/src/mage/cards/v/VisceridArmor.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class VisceridArmor extends CardImpl {
+public final class VisceridArmor extends CardImpl {
public VisceridArmor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VisceridDeepwalker.java b/Mage.Sets/src/mage/cards/v/VisceridDeepwalker.java
index 85ac7ec18fd..e4c8e026517 100644
--- a/Mage.Sets/src/mage/cards/v/VisceridDeepwalker.java
+++ b/Mage.Sets/src/mage/cards/v/VisceridDeepwalker.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class VisceridDeepwalker extends CardImpl {
+public final class VisceridDeepwalker extends CardImpl {
public VisceridDeepwalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VisceridDrone.java b/Mage.Sets/src/mage/cards/v/VisceridDrone.java
index 2bf56a32057..674e21bb74b 100644
--- a/Mage.Sets/src/mage/cards/v/VisceridDrone.java
+++ b/Mage.Sets/src/mage/cards/v/VisceridDrone.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class VisceridDrone extends CardImpl {
+public final class VisceridDrone extends CardImpl {
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("nonartifact creature");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("Swamp");
diff --git a/Mage.Sets/src/mage/cards/v/ViscidLemures.java b/Mage.Sets/src/mage/cards/v/ViscidLemures.java
index 8c4dbeb4403..469d6447d0b 100644
--- a/Mage.Sets/src/mage/cards/v/ViscidLemures.java
+++ b/Mage.Sets/src/mage/cards/v/ViscidLemures.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ViscidLemures extends CardImpl {
+public final class ViscidLemures extends CardImpl {
public ViscidLemures(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/Viseling.java b/Mage.Sets/src/mage/cards/v/Viseling.java
index daf72824c4e..d711d4baf26 100644
--- a/Mage.Sets/src/mage/cards/v/Viseling.java
+++ b/Mage.Sets/src/mage/cards/v/Viseling.java
@@ -45,7 +45,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class Viseling extends CardImpl {
+public final class Viseling extends CardImpl {
public Viseling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/v/VishKalBloodArbiter.java b/Mage.Sets/src/mage/cards/v/VishKalBloodArbiter.java
index a68eec50bdb..3ee61756ec8 100644
--- a/Mage.Sets/src/mage/cards/v/VishKalBloodArbiter.java
+++ b/Mage.Sets/src/mage/cards/v/VishKalBloodArbiter.java
@@ -61,7 +61,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VishKalBloodArbiter extends CardImpl {
+public final class VishKalBloodArbiter extends CardImpl {
public VishKalBloodArbiter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VisionCharm.java b/Mage.Sets/src/mage/cards/v/VisionCharm.java
index f3cdad0360b..21c5d26bc19 100644
--- a/Mage.Sets/src/mage/cards/v/VisionCharm.java
+++ b/Mage.Sets/src/mage/cards/v/VisionCharm.java
@@ -59,7 +59,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author tre3qwerty
*/
-public class VisionCharm extends CardImpl {
+public final class VisionCharm extends CardImpl {
public VisionCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VisionSkeins.java b/Mage.Sets/src/mage/cards/v/VisionSkeins.java
index d02524f8f40..f5e1942b29b 100644
--- a/Mage.Sets/src/mage/cards/v/VisionSkeins.java
+++ b/Mage.Sets/src/mage/cards/v/VisionSkeins.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class VisionSkeins extends CardImpl {
+public final class VisionSkeins extends CardImpl {
public VisionSkeins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VisionaryAugmenter.java b/Mage.Sets/src/mage/cards/v/VisionaryAugmenter.java
index f3afc571ddd..dfaf1adb26a 100644
--- a/Mage.Sets/src/mage/cards/v/VisionaryAugmenter.java
+++ b/Mage.Sets/src/mage/cards/v/VisionaryAugmenter.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class VisionaryAugmenter extends CardImpl {
+public final class VisionaryAugmenter extends CardImpl {
public VisionaryAugmenter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/Visions.java b/Mage.Sets/src/mage/cards/v/Visions.java
index 5282ae3c7dd..729868b1243 100644
--- a/Mage.Sets/src/mage/cards/v/Visions.java
+++ b/Mage.Sets/src/mage/cards/v/Visions.java
@@ -38,7 +38,7 @@ import mage.target.TargetPlayer;
*
* @author L_J
*/
-public class Visions extends CardImpl {
+public final class Visions extends CardImpl {
public Visions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VisionsOfBeyond.java b/Mage.Sets/src/mage/cards/v/VisionsOfBeyond.java
index 8c2e97593af..87868be3472 100644
--- a/Mage.Sets/src/mage/cards/v/VisionsOfBeyond.java
+++ b/Mage.Sets/src/mage/cards/v/VisionsOfBeyond.java
@@ -41,7 +41,7 @@ import mage.players.Player;
*
* @author nantuko
*/
-public class VisionsOfBeyond extends CardImpl {
+public final class VisionsOfBeyond extends CardImpl {
public VisionsOfBeyond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VisionsOfBrutality.java b/Mage.Sets/src/mage/cards/v/VisionsOfBrutality.java
index 98e865217fe..5c6bea4e31b 100644
--- a/Mage.Sets/src/mage/cards/v/VisionsOfBrutality.java
+++ b/Mage.Sets/src/mage/cards/v/VisionsOfBrutality.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VisionsOfBrutality extends CardImpl {
+public final class VisionsOfBrutality extends CardImpl {
public VisionsOfBrutality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VitalSplicer.java b/Mage.Sets/src/mage/cards/v/VitalSplicer.java
index 542cf01d4ef..75cf4d47f9e 100644
--- a/Mage.Sets/src/mage/cards/v/VitalSplicer.java
+++ b/Mage.Sets/src/mage/cards/v/VitalSplicer.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class VitalSplicer extends CardImpl {
+public final class VitalSplicer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Golem you control");
diff --git a/Mage.Sets/src/mage/cards/v/VitalSurge.java b/Mage.Sets/src/mage/cards/v/VitalSurge.java
index 36b6e7f960f..78f6b36d9e4 100644
--- a/Mage.Sets/src/mage/cards/v/VitalSurge.java
+++ b/Mage.Sets/src/mage/cards/v/VitalSurge.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class VitalSurge extends CardImpl {
+public final class VitalSurge extends CardImpl {
public VitalSurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VitalityCharm.java b/Mage.Sets/src/mage/cards/v/VitalityCharm.java
index 513fc982ffb..95b94082344 100644
--- a/Mage.Sets/src/mage/cards/v/VitalityCharm.java
+++ b/Mage.Sets/src/mage/cards/v/VitalityCharm.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class VitalityCharm extends CardImpl {
+public final class VitalityCharm extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Beast");
diff --git a/Mage.Sets/src/mage/cards/v/Vitalize.java b/Mage.Sets/src/mage/cards/v/Vitalize.java
index 4212224c29b..0551bc53dcb 100644
--- a/Mage.Sets/src/mage/cards/v/Vitalize.java
+++ b/Mage.Sets/src/mage/cards/v/Vitalize.java
@@ -38,7 +38,7 @@ import mage.filter.StaticFilters;
*
* @author Quercitron
*/
-public class Vitalize extends CardImpl {
+public final class Vitalize extends CardImpl {
public Vitalize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VitalizingCascade.java b/Mage.Sets/src/mage/cards/v/VitalizingCascade.java
index 7316eff1c0d..529fe55fb11 100644
--- a/Mage.Sets/src/mage/cards/v/VitalizingCascade.java
+++ b/Mage.Sets/src/mage/cards/v/VitalizingCascade.java
@@ -41,7 +41,7 @@ import mage.game.Game;
*
* @author LoneFox
*/
-public class VitalizingCascade extends CardImpl {
+public final class VitalizingCascade extends CardImpl {
public VitalizingCascade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VitalizingWind.java b/Mage.Sets/src/mage/cards/v/VitalizingWind.java
index bd499e66a88..e3fb4732ee7 100644
--- a/Mage.Sets/src/mage/cards/v/VitalizingWind.java
+++ b/Mage.Sets/src/mage/cards/v/VitalizingWind.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author TheElk801
*/
-public class VitalizingWind extends CardImpl {
+public final class VitalizingWind extends CardImpl {
public VitalizingWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{8}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VitasporeThallid.java b/Mage.Sets/src/mage/cards/v/VitasporeThallid.java
index 7c8bd3c4358..006cf1e80d7 100644
--- a/Mage.Sets/src/mage/cards/v/VitasporeThallid.java
+++ b/Mage.Sets/src/mage/cards/v/VitasporeThallid.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class VitasporeThallid extends CardImpl {
+public final class VitasporeThallid extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Saproling");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VithianRenegades.java b/Mage.Sets/src/mage/cards/v/VithianRenegades.java
index b0cb0673e8e..63df947565d 100644
--- a/Mage.Sets/src/mage/cards/v/VithianRenegades.java
+++ b/Mage.Sets/src/mage/cards/v/VithianRenegades.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Loki
*/
-public class VithianRenegades extends CardImpl {
+public final class VithianRenegades extends CardImpl {
public VithianRenegades (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VithianStinger.java b/Mage.Sets/src/mage/cards/v/VithianStinger.java
index e6567d9ece1..e592268081b 100644
--- a/Mage.Sets/src/mage/cards/v/VithianStinger.java
+++ b/Mage.Sets/src/mage/cards/v/VithianStinger.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class VithianStinger extends CardImpl {
+public final class VithianStinger extends CardImpl {
public VithianStinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VituGhaziGuildmage.java b/Mage.Sets/src/mage/cards/v/VituGhaziGuildmage.java
index 2fda9af465c..f9503f21c1d 100644
--- a/Mage.Sets/src/mage/cards/v/VituGhaziGuildmage.java
+++ b/Mage.Sets/src/mage/cards/v/VituGhaziGuildmage.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class VituGhaziGuildmage extends CardImpl {
+public final class VituGhaziGuildmage extends CardImpl {
public VituGhaziGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VituGhaziTheCityTree.java b/Mage.Sets/src/mage/cards/v/VituGhaziTheCityTree.java
index f3257661fc9..2642fc5ad45 100644
--- a/Mage.Sets/src/mage/cards/v/VituGhaziTheCityTree.java
+++ b/Mage.Sets/src/mage/cards/v/VituGhaziTheCityTree.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author Loki
*/
-public class VituGhaziTheCityTree extends CardImpl {
+public final class VituGhaziTheCityTree extends CardImpl {
public VituGhaziTheCityTree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/v/VividCrag.java b/Mage.Sets/src/mage/cards/v/VividCrag.java
index 37b3075e221..393cc0a17b3 100644
--- a/Mage.Sets/src/mage/cards/v/VividCrag.java
+++ b/Mage.Sets/src/mage/cards/v/VividCrag.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class VividCrag extends CardImpl {
+public final class VividCrag extends CardImpl {
public VividCrag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/v/VividCreek.java b/Mage.Sets/src/mage/cards/v/VividCreek.java
index f39250bd372..78e891e9fbc 100644
--- a/Mage.Sets/src/mage/cards/v/VividCreek.java
+++ b/Mage.Sets/src/mage/cards/v/VividCreek.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class VividCreek extends CardImpl {
+public final class VividCreek extends CardImpl {
public VividCreek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/v/VividGrove.java b/Mage.Sets/src/mage/cards/v/VividGrove.java
index 85fde88816f..f5628d2af5b 100644
--- a/Mage.Sets/src/mage/cards/v/VividGrove.java
+++ b/Mage.Sets/src/mage/cards/v/VividGrove.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class VividGrove extends CardImpl {
+public final class VividGrove extends CardImpl {
public VividGrove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/v/VividMarsh.java b/Mage.Sets/src/mage/cards/v/VividMarsh.java
index 98adf0d81df..d500f925669 100644
--- a/Mage.Sets/src/mage/cards/v/VividMarsh.java
+++ b/Mage.Sets/src/mage/cards/v/VividMarsh.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class VividMarsh extends CardImpl {
+public final class VividMarsh extends CardImpl {
public VividMarsh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/v/VividMeadow.java b/Mage.Sets/src/mage/cards/v/VividMeadow.java
index 1bb462129ed..71f34751a65 100644
--- a/Mage.Sets/src/mage/cards/v/VividMeadow.java
+++ b/Mage.Sets/src/mage/cards/v/VividMeadow.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author Loki
*/
-public class VividMeadow extends CardImpl {
+public final class VividMeadow extends CardImpl {
public VividMeadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/v/Vivify.java b/Mage.Sets/src/mage/cards/v/Vivify.java
index 0a5f206149a..55a09c2f2d7 100644
--- a/Mage.Sets/src/mage/cards/v/Vivify.java
+++ b/Mage.Sets/src/mage/cards/v/Vivify.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LoneFox
*/
-public class Vivify extends CardImpl {
+public final class Vivify extends CardImpl {
public Vivify(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/Vivisection.java b/Mage.Sets/src/mage/cards/v/Vivisection.java
index 27ada80979b..64564391411 100644
--- a/Mage.Sets/src/mage/cards/v/Vivisection.java
+++ b/Mage.Sets/src/mage/cards/v/Vivisection.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class Vivisection extends CardImpl {
+public final class Vivisection extends CardImpl {
public Vivisection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VizierOfDeferment.java b/Mage.Sets/src/mage/cards/v/VizierOfDeferment.java
index ca75cecf086..3a350f3db0b 100644
--- a/Mage.Sets/src/mage/cards/v/VizierOfDeferment.java
+++ b/Mage.Sets/src/mage/cards/v/VizierOfDeferment.java
@@ -60,7 +60,7 @@ import mage.watchers.common.BlockedThisTurnWatcher;
*
* @author jeffwadsworth
*/
-public class VizierOfDeferment extends CardImpl {
+public final class VizierOfDeferment extends CardImpl {
public VizierOfDeferment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java b/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java
index 100b3683447..bdd2b5ea8e4 100644
--- a/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java
+++ b/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java
@@ -56,7 +56,7 @@ import mage.watchers.Watcher;
*
* @author LevelX2
*/
-public class VizierOfManyFaces extends CardImpl {
+public final class VizierOfManyFaces extends CardImpl {
public VizierOfManyFaces(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VizierOfRemedies.java b/Mage.Sets/src/mage/cards/v/VizierOfRemedies.java
index 748ff288357..a41603afed4 100644
--- a/Mage.Sets/src/mage/cards/v/VizierOfRemedies.java
+++ b/Mage.Sets/src/mage/cards/v/VizierOfRemedies.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author Stravant
*/
-public class VizierOfRemedies extends CardImpl {
+public final class VizierOfRemedies extends CardImpl {
public VizierOfRemedies(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VizierOfTheAnointed.java b/Mage.Sets/src/mage/cards/v/VizierOfTheAnointed.java
index c7eabd5d8cc..9ee46ecbca9 100644
--- a/Mage.Sets/src/mage/cards/v/VizierOfTheAnointed.java
+++ b/Mage.Sets/src/mage/cards/v/VizierOfTheAnointed.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author spjspj
*/
-public class VizierOfTheAnointed extends CardImpl {
+public final class VizierOfTheAnointed extends CardImpl {
private static final FilterCard filter = new FilterCard("a creature card with eternalize or embalm");
diff --git a/Mage.Sets/src/mage/cards/v/VizierOfTheMenagerie.java b/Mage.Sets/src/mage/cards/v/VizierOfTheMenagerie.java
index 2fecb77cb64..9b70236428d 100644
--- a/Mage.Sets/src/mage/cards/v/VizierOfTheMenagerie.java
+++ b/Mage.Sets/src/mage/cards/v/VizierOfTheMenagerie.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class VizierOfTheMenagerie extends CardImpl {
+public final class VizierOfTheMenagerie extends CardImpl {
public VizierOfTheMenagerie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VizierOfTheTrue.java b/Mage.Sets/src/mage/cards/v/VizierOfTheTrue.java
index 8cc954a7568..f43860f6bb1 100644
--- a/Mage.Sets/src/mage/cards/v/VizierOfTheTrue.java
+++ b/Mage.Sets/src/mage/cards/v/VizierOfTheTrue.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class VizierOfTheTrue extends CardImpl {
+public final class VizierOfTheTrue extends CardImpl {
public VizierOfTheTrue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VizierOfTumblingSands.java b/Mage.Sets/src/mage/cards/v/VizierOfTumblingSands.java
index 386b1ff0677..fbec1bb19ff 100644
--- a/Mage.Sets/src/mage/cards/v/VizierOfTumblingSands.java
+++ b/Mage.Sets/src/mage/cards/v/VizierOfTumblingSands.java
@@ -50,7 +50,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class VizierOfTumblingSands extends CardImpl {
+public final class VizierOfTumblingSands extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another target permanent");
diff --git a/Mage.Sets/src/mage/cards/v/VizkopaConfessor.java b/Mage.Sets/src/mage/cards/v/VizkopaConfessor.java
index 5ab422376a6..180f4674c59 100644
--- a/Mage.Sets/src/mage/cards/v/VizkopaConfessor.java
+++ b/Mage.Sets/src/mage/cards/v/VizkopaConfessor.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class VizkopaConfessor extends CardImpl {
+public final class VizkopaConfessor extends CardImpl {
public VizkopaConfessor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VizkopaGuildmage.java b/Mage.Sets/src/mage/cards/v/VizkopaGuildmage.java
index 3cca073ca5a..213c77b3341 100644
--- a/Mage.Sets/src/mage/cards/v/VizkopaGuildmage.java
+++ b/Mage.Sets/src/mage/cards/v/VizkopaGuildmage.java
@@ -64,7 +64,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VizkopaGuildmage extends CardImpl {
+public final class VizkopaGuildmage extends CardImpl {
public VizkopaGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/Vizzerdrix.java b/Mage.Sets/src/mage/cards/v/Vizzerdrix.java
index 192357482ff..ffd350806ec 100644
--- a/Mage.Sets/src/mage/cards/v/Vizzerdrix.java
+++ b/Mage.Sets/src/mage/cards/v/Vizzerdrix.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Vizzerdrix extends CardImpl {
+public final class Vizzerdrix extends CardImpl {
public Vizzerdrix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianArcanist.java b/Mage.Sets/src/mage/cards/v/VodalianArcanist.java
index 3c7b3351346..a54b4f63628 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianArcanist.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianArcanist.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author TheElk801
*/
-public class VodalianArcanist extends CardImpl {
+public final class VodalianArcanist extends CardImpl {
public VodalianArcanist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianHypnotist.java b/Mage.Sets/src/mage/cards/v/VodalianHypnotist.java
index c0454d02ebe..d165e7f15a4 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianHypnotist.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianHypnotist.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class VodalianHypnotist extends CardImpl {
+public final class VodalianHypnotist extends CardImpl {
public VodalianHypnotist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianIllusionist.java b/Mage.Sets/src/mage/cards/v/VodalianIllusionist.java
index 7c7781cdbef..c58132585ba 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianIllusionist.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianIllusionist.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class VodalianIllusionist extends CardImpl {
+public final class VodalianIllusionist extends CardImpl {
public VodalianIllusionist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianKnights.java b/Mage.Sets/src/mage/cards/v/VodalianKnights.java
index 5bdc0a33fd2..c7a2283a4c5 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianKnights.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianKnights.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class VodalianKnights extends CardImpl {
+public final class VodalianKnights extends CardImpl {
public VodalianKnights(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianMage.java b/Mage.Sets/src/mage/cards/v/VodalianMage.java
index 9830365560a..9efdf5fc15b 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianMage.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianMage.java
@@ -45,7 +45,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class VodalianMage extends CardImpl {
+public final class VodalianMage extends CardImpl {
public VodalianMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianMerchant.java b/Mage.Sets/src/mage/cards/v/VodalianMerchant.java
index c63300fd079..4aea4f649bc 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianMerchant.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianMerchant.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author michael.napoleon@gmail.com
*/
-public class VodalianMerchant extends CardImpl {
+public final class VodalianMerchant extends CardImpl {
public VodalianMerchant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianMystic.java b/Mage.Sets/src/mage/cards/v/VodalianMystic.java
index 46b1f9f14d6..5b516ac3e35 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianMystic.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianMystic.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author LoneFox
*/
-public class VodalianMystic extends CardImpl {
+public final class VodalianMystic extends CardImpl {
public VodalianMystic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianSerpent.java b/Mage.Sets/src/mage/cards/v/VodalianSerpent.java
index ebd5037a9fc..cd803d8cfc7 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianSerpent.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianSerpent.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterLandPermanent;
* @author LoneFox
*/
-public class VodalianSerpent extends CardImpl {
+public final class VodalianSerpent extends CardImpl {
public VodalianSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianSoldiers.java b/Mage.Sets/src/mage/cards/v/VodalianSoldiers.java
index dabe60e5cd8..9b3b5b72249 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianSoldiers.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianSoldiers.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class VodalianSoldiers extends CardImpl {
+public final class VodalianSoldiers extends CardImpl {
public VodalianSoldiers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java b/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java
index 68cbfa766db..18648a062d8 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java
@@ -69,7 +69,7 @@ import mage.watchers.Watcher;
*
* @author L_J
*/
-public class VodalianWarMachine extends CardImpl {
+public final class VodalianWarMachine extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Merfolk you control");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianZombie.java b/Mage.Sets/src/mage/cards/v/VodalianZombie.java
index 6f802046767..01403242543 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianZombie.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianZombie.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Jgod
*/
-public class VodalianZombie extends CardImpl {
+public final class VodalianZombie extends CardImpl {
public VodalianZombie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfAll.java b/Mage.Sets/src/mage/cards/v/VoiceOfAll.java
index 0574407e6da..f3e9504f17b 100644
--- a/Mage.Sets/src/mage/cards/v/VoiceOfAll.java
+++ b/Mage.Sets/src/mage/cards/v/VoiceOfAll.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class VoiceOfAll extends CardImpl {
+public final class VoiceOfAll extends CardImpl {
public VoiceOfAll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfDuty.java b/Mage.Sets/src/mage/cards/v/VoiceOfDuty.java
index 8341566c466..58fc9ed878d 100644
--- a/Mage.Sets/src/mage/cards/v/VoiceOfDuty.java
+++ b/Mage.Sets/src/mage/cards/v/VoiceOfDuty.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class VoiceOfDuty extends CardImpl {
+public final class VoiceOfDuty extends CardImpl {
public VoiceOfDuty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfGrace.java b/Mage.Sets/src/mage/cards/v/VoiceOfGrace.java
index 2c536f77687..b10daddd400 100644
--- a/Mage.Sets/src/mage/cards/v/VoiceOfGrace.java
+++ b/Mage.Sets/src/mage/cards/v/VoiceOfGrace.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class VoiceOfGrace extends CardImpl {
+public final class VoiceOfGrace extends CardImpl {
public VoiceOfGrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfLaw.java b/Mage.Sets/src/mage/cards/v/VoiceOfLaw.java
index 926d752a1f0..d1078838337 100644
--- a/Mage.Sets/src/mage/cards/v/VoiceOfLaw.java
+++ b/Mage.Sets/src/mage/cards/v/VoiceOfLaw.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class VoiceOfLaw extends CardImpl {
+public final class VoiceOfLaw extends CardImpl {
public VoiceOfLaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfReason.java b/Mage.Sets/src/mage/cards/v/VoiceOfReason.java
index 1757f630e6e..6d6f1ace584 100644
--- a/Mage.Sets/src/mage/cards/v/VoiceOfReason.java
+++ b/Mage.Sets/src/mage/cards/v/VoiceOfReason.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class VoiceOfReason extends CardImpl {
+public final class VoiceOfReason extends CardImpl {
public VoiceOfReason(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfResurgence.java b/Mage.Sets/src/mage/cards/v/VoiceOfResurgence.java
index a83b29ee595..d080418f7ea 100644
--- a/Mage.Sets/src/mage/cards/v/VoiceOfResurgence.java
+++ b/Mage.Sets/src/mage/cards/v/VoiceOfResurgence.java
@@ -47,7 +47,7 @@ import mage.game.stack.Spell;
*
* @author jeffwadsworth
*/
-public class VoiceOfResurgence extends CardImpl {
+public final class VoiceOfResurgence extends CardImpl {
public VoiceOfResurgence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfTheProvinces.java b/Mage.Sets/src/mage/cards/v/VoiceOfTheProvinces.java
index d2cfa0c59f6..e374d05b9f4 100644
--- a/Mage.Sets/src/mage/cards/v/VoiceOfTheProvinces.java
+++ b/Mage.Sets/src/mage/cards/v/VoiceOfTheProvinces.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.HumanToken;
*
* @author Loki
*/
-public class VoiceOfTheProvinces extends CardImpl {
+public final class VoiceOfTheProvinces extends CardImpl {
public VoiceOfTheProvinces(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfTheWoods.java b/Mage.Sets/src/mage/cards/v/VoiceOfTheWoods.java
index d4b3c77e643..e140e85ff32 100644
--- a/Mage.Sets/src/mage/cards/v/VoiceOfTheWoods.java
+++ b/Mage.Sets/src/mage/cards/v/VoiceOfTheWoods.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class VoiceOfTheWoods extends CardImpl {
+public final class VoiceOfTheWoods extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Elves you control");
diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfTruth.java b/Mage.Sets/src/mage/cards/v/VoiceOfTruth.java
index 7d6dec41ee8..de4cbc457d6 100644
--- a/Mage.Sets/src/mage/cards/v/VoiceOfTruth.java
+++ b/Mage.Sets/src/mage/cards/v/VoiceOfTruth.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class VoiceOfTruth extends CardImpl {
+public final class VoiceOfTruth extends CardImpl {
public VoiceOfTruth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VoicelessSpirit.java b/Mage.Sets/src/mage/cards/v/VoicelessSpirit.java
index 2bfdd737f18..fdaa3098f32 100644
--- a/Mage.Sets/src/mage/cards/v/VoicelessSpirit.java
+++ b/Mage.Sets/src/mage/cards/v/VoicelessSpirit.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class VoicelessSpirit extends CardImpl {
+public final class VoicelessSpirit extends CardImpl {
public VoicelessSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VoicesFromTheVoid.java b/Mage.Sets/src/mage/cards/v/VoicesFromTheVoid.java
index 70d72f1bcc9..20be4eb9ac8 100644
--- a/Mage.Sets/src/mage/cards/v/VoicesFromTheVoid.java
+++ b/Mage.Sets/src/mage/cards/v/VoicesFromTheVoid.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author Loki
*/
-public class VoicesFromTheVoid extends CardImpl {
+public final class VoicesFromTheVoid extends CardImpl {
public VoicesFromTheVoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/Void.java b/Mage.Sets/src/mage/cards/v/Void.java
index 6587732a083..ff05a0b1362 100644
--- a/Mage.Sets/src/mage/cards/v/Void.java
+++ b/Mage.Sets/src/mage/cards/v/Void.java
@@ -52,7 +52,7 @@ import mage.target.TargetPlayer;
/**
* @author LevelX2
*/
-public class Void extends CardImpl {
+public final class Void extends CardImpl {
public Void(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VoidAttendant.java b/Mage.Sets/src/mage/cards/v/VoidAttendant.java
index b883cd02356..b3f953bbe72 100644
--- a/Mage.Sets/src/mage/cards/v/VoidAttendant.java
+++ b/Mage.Sets/src/mage/cards/v/VoidAttendant.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.EldraziScionToken;
*
* @author LevelX2
*/
-public class VoidAttendant extends CardImpl {
+public final class VoidAttendant extends CardImpl {
public VoidAttendant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VoidGrafter.java b/Mage.Sets/src/mage/cards/v/VoidGrafter.java
index 918d11a4f44..9f875865833 100644
--- a/Mage.Sets/src/mage/cards/v/VoidGrafter.java
+++ b/Mage.Sets/src/mage/cards/v/VoidGrafter.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class VoidGrafter extends CardImpl {
+public final class VoidGrafter extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control");
diff --git a/Mage.Sets/src/mage/cards/v/VoidMaw.java b/Mage.Sets/src/mage/cards/v/VoidMaw.java
index e6ac6ce0806..640bed75743 100644
--- a/Mage.Sets/src/mage/cards/v/VoidMaw.java
+++ b/Mage.Sets/src/mage/cards/v/VoidMaw.java
@@ -55,7 +55,7 @@ import mage.util.CardUtil;
/**
* @author jeffwadsworth & L_J
*/
-public class VoidMaw extends CardImpl {
+public final class VoidMaw extends CardImpl {
public VoidMaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VoidShatter.java b/Mage.Sets/src/mage/cards/v/VoidShatter.java
index c476dfc9db2..2fc83e73cf0 100644
--- a/Mage.Sets/src/mage/cards/v/VoidShatter.java
+++ b/Mage.Sets/src/mage/cards/v/VoidShatter.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class VoidShatter extends CardImpl {
+public final class VoidShatter extends CardImpl {
public VoidShatter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VoidSnare.java b/Mage.Sets/src/mage/cards/v/VoidSnare.java
index 53fbdf1f7c5..378a61499c5 100644
--- a/Mage.Sets/src/mage/cards/v/VoidSnare.java
+++ b/Mage.Sets/src/mage/cards/v/VoidSnare.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class VoidSnare extends CardImpl {
+public final class VoidSnare extends CardImpl {
public VoidSnare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VoidSquall.java b/Mage.Sets/src/mage/cards/v/VoidSquall.java
index f8670ceffff..1135174284c 100644
--- a/Mage.Sets/src/mage/cards/v/VoidSquall.java
+++ b/Mage.Sets/src/mage/cards/v/VoidSquall.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LevelX2
*/
-public class VoidSquall extends CardImpl {
+public final class VoidSquall extends CardImpl {
public VoidSquall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VoidStalker.java b/Mage.Sets/src/mage/cards/v/VoidStalker.java
index 0c5005440dc..5dc6d27482e 100644
--- a/Mage.Sets/src/mage/cards/v/VoidStalker.java
+++ b/Mage.Sets/src/mage/cards/v/VoidStalker.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class VoidStalker extends CardImpl {
+public final class VoidStalker extends CardImpl {
public VoidStalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VoidWinnower.java b/Mage.Sets/src/mage/cards/v/VoidWinnower.java
index 84c870331f4..997783c909d 100644
--- a/Mage.Sets/src/mage/cards/v/VoidWinnower.java
+++ b/Mage.Sets/src/mage/cards/v/VoidWinnower.java
@@ -51,7 +51,7 @@ import mage.game.stack.Spell;
*
* @author LevelX2
*/
-public class VoidWinnower extends CardImpl {
+public final class VoidWinnower extends CardImpl {
public VoidWinnower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{9}");
diff --git a/Mage.Sets/src/mage/cards/v/VoidmageApprentice.java b/Mage.Sets/src/mage/cards/v/VoidmageApprentice.java
index a2ca2ef1e9a..041c5681f2b 100644
--- a/Mage.Sets/src/mage/cards/v/VoidmageApprentice.java
+++ b/Mage.Sets/src/mage/cards/v/VoidmageApprentice.java
@@ -44,7 +44,7 @@ import mage.target.TargetSpell;
*
* @author fireshoes
*/
-public class VoidmageApprentice extends CardImpl {
+public final class VoidmageApprentice extends CardImpl {
public VoidmageApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VoidmageHusher.java b/Mage.Sets/src/mage/cards/v/VoidmageHusher.java
index fc34711d3c4..43168260aef 100644
--- a/Mage.Sets/src/mage/cards/v/VoidmageHusher.java
+++ b/Mage.Sets/src/mage/cards/v/VoidmageHusher.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetActivatedAbility;
*
* @author andyfries
*/
-public class VoidmageHusher extends CardImpl {
+public final class VoidmageHusher extends CardImpl {
public VoidmageHusher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VoidmageProdigy.java b/Mage.Sets/src/mage/cards/v/VoidmageProdigy.java
index fef9be2ef5f..36e4612517b 100644
--- a/Mage.Sets/src/mage/cards/v/VoidmageProdigy.java
+++ b/Mage.Sets/src/mage/cards/v/VoidmageProdigy.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class VoidmageProdigy extends CardImpl {
+public final class VoidmageProdigy extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Wizard");
diff --git a/Mage.Sets/src/mage/cards/v/Voidslime.java b/Mage.Sets/src/mage/cards/v/Voidslime.java
index 9b8f9eb6a2c..dc551f98538 100644
--- a/Mage.Sets/src/mage/cards/v/Voidslime.java
+++ b/Mage.Sets/src/mage/cards/v/Voidslime.java
@@ -38,7 +38,7 @@ import mage.target.TargetStackObject;
*
* @author emerald000
*/
-public class Voidslime extends CardImpl {
+public final class Voidslime extends CardImpl {
public Voidslime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VoidstoneGargoyle.java b/Mage.Sets/src/mage/cards/v/VoidstoneGargoyle.java
index 5f2863e6ad9..b5945374506 100644
--- a/Mage.Sets/src/mage/cards/v/VoidstoneGargoyle.java
+++ b/Mage.Sets/src/mage/cards/v/VoidstoneGargoyle.java
@@ -51,7 +51,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author Plopman
*/
-public class VoidstoneGargoyle extends CardImpl {
+public final class VoidstoneGargoyle extends CardImpl {
public VoidstoneGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/Voidwalk.java b/Mage.Sets/src/mage/cards/v/Voidwalk.java
index 5f8e83cd60a..8e97d7f4d16 100644
--- a/Mage.Sets/src/mage/cards/v/Voidwalk.java
+++ b/Mage.Sets/src/mage/cards/v/Voidwalk.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth
*/
-public class Voidwalk extends CardImpl {
+public final class Voidwalk extends CardImpl {
public Voidwalk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/Voidwielder.java b/Mage.Sets/src/mage/cards/v/Voidwielder.java
index 8a261954963..d3e0ac28b9e 100644
--- a/Mage.Sets/src/mage/cards/v/Voidwielder.java
+++ b/Mage.Sets/src/mage/cards/v/Voidwielder.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Voidwielder extends CardImpl {
+public final class Voidwielder extends CardImpl {
public Voidwielder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VolatileRig.java b/Mage.Sets/src/mage/cards/v/VolatileRig.java
index 719b7e16ed5..0d38fea4a6b 100644
--- a/Mage.Sets/src/mage/cards/v/VolatileRig.java
+++ b/Mage.Sets/src/mage/cards/v/VolatileRig.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class VolatileRig extends CardImpl {
+public final class VolatileRig extends CardImpl {
public VolatileRig(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicAwakening.java b/Mage.Sets/src/mage/cards/v/VolcanicAwakening.java
index 21e76b70a2a..31fd1f122c7 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicAwakening.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicAwakening.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Plopman
*/
-public class VolcanicAwakening extends CardImpl {
+public final class VolcanicAwakening extends CardImpl {
public VolcanicAwakening(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicDragon.java b/Mage.Sets/src/mage/cards/v/VolcanicDragon.java
index 1646dc837a2..8263d5e236d 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicDragon.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicDragon.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class VolcanicDragon extends CardImpl {
+public final class VolcanicDragon extends CardImpl {
public VolcanicDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicEruption.java b/Mage.Sets/src/mage/cards/v/VolcanicEruption.java
index 1ad5e1fe9db..d734758bbfe 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicEruption.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicEruption.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class VolcanicEruption extends CardImpl {
+public final class VolcanicEruption extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.MOUNTAIN, "Mountain");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicFallout.java b/Mage.Sets/src/mage/cards/v/VolcanicFallout.java
index 9f6399445d2..747dace35f6 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicFallout.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicFallout.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class VolcanicFallout extends CardImpl {
+public final class VolcanicFallout extends CardImpl {
public VolcanicFallout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicGeyser.java b/Mage.Sets/src/mage/cards/v/VolcanicGeyser.java
index f08a3954ebc..41799e9552e 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicGeyser.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicGeyser.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class VolcanicGeyser extends CardImpl {
+public final class VolcanicGeyser extends CardImpl {
public VolcanicGeyser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicHammer.java b/Mage.Sets/src/mage/cards/v/VolcanicHammer.java
index fde1dbc0ed7..6c79133aa1e 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicHammer.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicHammer.java
@@ -37,7 +37,7 @@ import mage.target.common.TargetAnyTarget;
/**
* @author magenoxx_at_gmail.com
*/
-public class VolcanicHammer extends CardImpl {
+public final class VolcanicHammer extends CardImpl {
public VolcanicHammer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicIsland.java b/Mage.Sets/src/mage/cards/v/VolcanicIsland.java
index e1ffda285db..16558f63ee4 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicIsland.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicIsland.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class VolcanicIsland extends CardImpl {
+public final class VolcanicIsland extends CardImpl {
public VolcanicIsland(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicOffering.java b/Mage.Sets/src/mage/cards/v/VolcanicOffering.java
index f8d82e08bce..7b2eac52114 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicOffering.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicOffering.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponentsChoicePermanent;
*
* @author LevelX2
*/
-public class VolcanicOffering extends CardImpl {
+public final class VolcanicOffering extends CardImpl {
private static final FilterLandPermanent filterLand = new FilterLandPermanent("nonbasic land you don't control");
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creature you don't control");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicRambler.java b/Mage.Sets/src/mage/cards/v/VolcanicRambler.java
index 174b2517b70..514efc44abe 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicRambler.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicRambler.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author LevelX2
*/
-public class VolcanicRambler extends CardImpl {
+public final class VolcanicRambler extends CardImpl {
public VolcanicRambler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicRush.java b/Mage.Sets/src/mage/cards/v/VolcanicRush.java
index bfe8092d744..c3a9d7832ce 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicRush.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicRush.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author LevelX2
*/
-public class VolcanicRush extends CardImpl {
+public final class VolcanicRush extends CardImpl {
public VolcanicRush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicSpray.java b/Mage.Sets/src/mage/cards/v/VolcanicSpray.java
index 3d68d0245eb..fbfae6c58f0 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicSpray.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicSpray.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author cbt33
*/
-public class VolcanicSpray extends CardImpl {
+public final class VolcanicSpray extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicStrength.java b/Mage.Sets/src/mage/cards/v/VolcanicStrength.java
index 401af367e6f..45cda46df8f 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicStrength.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicStrength.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class VolcanicStrength extends CardImpl {
+public final class VolcanicStrength extends CardImpl {
public VolcanicStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicSubmersion.java b/Mage.Sets/src/mage/cards/v/VolcanicSubmersion.java
index 215344e7b3e..ffa5d06285e 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicSubmersion.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicSubmersion.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
*
* @author North
*/
-public class VolcanicSubmersion extends CardImpl {
+public final class VolcanicSubmersion extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or land");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicUpheaval.java b/Mage.Sets/src/mage/cards/v/VolcanicUpheaval.java
index 220e4bffee3..b5d927ddf3f 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicUpheaval.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicUpheaval.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class VolcanicUpheaval extends CardImpl {
+public final class VolcanicUpheaval extends CardImpl {
public VolcanicUpheaval(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicVision.java b/Mage.Sets/src/mage/cards/v/VolcanicVision.java
index 6da5b23803d..04d97030fee 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicVision.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicVision.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class VolcanicVision extends CardImpl {
+public final class VolcanicVision extends CardImpl {
public VolcanicVision(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanicWind.java b/Mage.Sets/src/mage/cards/v/VolcanicWind.java
index 34c4433813f..50192ce3984 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanicWind.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanicWind.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author tcontis
*/
-public class VolcanicWind extends CardImpl {
+public final class VolcanicWind extends CardImpl {
static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanoHellion.java b/Mage.Sets/src/mage/cards/v/VolcanoHellion.java
index 650f225c39b..36cfdec1868 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanoHellion.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanoHellion.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class VolcanoHellion extends CardImpl {
+public final class VolcanoHellion extends CardImpl {
public VolcanoHellion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolcanoImp.java b/Mage.Sets/src/mage/cards/v/VolcanoImp.java
index 3fdbe0f8975..52c357e35f4 100644
--- a/Mage.Sets/src/mage/cards/v/VolcanoImp.java
+++ b/Mage.Sets/src/mage/cards/v/VolcanoImp.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class VolcanoImp extends CardImpl {
+public final class VolcanoImp extends CardImpl {
public VolcanoImp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VoldarenDuelist.java b/Mage.Sets/src/mage/cards/v/VoldarenDuelist.java
index 604a0698552..65ba04b9b32 100644
--- a/Mage.Sets/src/mage/cards/v/VoldarenDuelist.java
+++ b/Mage.Sets/src/mage/cards/v/VoldarenDuelist.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class VoldarenDuelist extends CardImpl {
+public final class VoldarenDuelist extends CardImpl {
public VoldarenDuelist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VoldarenPariah.java b/Mage.Sets/src/mage/cards/v/VoldarenPariah.java
index 9aa2809f7a3..a353f6e9802 100644
--- a/Mage.Sets/src/mage/cards/v/VoldarenPariah.java
+++ b/Mage.Sets/src/mage/cards/v/VoldarenPariah.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class VoldarenPariah extends CardImpl {
+public final class VoldarenPariah extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("three other creatures");
diff --git a/Mage.Sets/src/mage/cards/v/VolitionReins.java b/Mage.Sets/src/mage/cards/v/VolitionReins.java
index c6a278009fd..b33264d249a 100644
--- a/Mage.Sets/src/mage/cards/v/VolitionReins.java
+++ b/Mage.Sets/src/mage/cards/v/VolitionReins.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
/**
* @author nantuko
*/
-public class VolitionReins extends CardImpl {
+public final class VolitionReins extends CardImpl {
public VolitionReins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VolleyOfBoulders.java b/Mage.Sets/src/mage/cards/v/VolleyOfBoulders.java
index d6b73ad557c..fbb19a11602 100644
--- a/Mage.Sets/src/mage/cards/v/VolleyOfBoulders.java
+++ b/Mage.Sets/src/mage/cards/v/VolleyOfBoulders.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTargetAmount;
*
* @author cbt33
*/
-public class VolleyOfBoulders extends CardImpl {
+public final class VolleyOfBoulders extends CardImpl {
public VolleyOfBoulders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{8}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VolrathTheFallen.java b/Mage.Sets/src/mage/cards/v/VolrathTheFallen.java
index f75ac5002c6..5fd03f4c587 100644
--- a/Mage.Sets/src/mage/cards/v/VolrathTheFallen.java
+++ b/Mage.Sets/src/mage/cards/v/VolrathTheFallen.java
@@ -49,7 +49,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class VolrathTheFallen extends CardImpl {
+public final class VolrathTheFallen extends CardImpl {
public VolrathTheFallen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VolrathsCurse.java b/Mage.Sets/src/mage/cards/v/VolrathsCurse.java
index 722cac5f346..180142272bf 100644
--- a/Mage.Sets/src/mage/cards/v/VolrathsCurse.java
+++ b/Mage.Sets/src/mage/cards/v/VolrathsCurse.java
@@ -61,7 +61,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VolrathsCurse extends CardImpl {
+public final class VolrathsCurse extends CardImpl {
static final String keyString = "_ignoreEffectForTurn";
diff --git a/Mage.Sets/src/mage/cards/v/VolrathsGardens.java b/Mage.Sets/src/mage/cards/v/VolrathsGardens.java
index c6158aeb6a2..d502c76d021 100644
--- a/Mage.Sets/src/mage/cards/v/VolrathsGardens.java
+++ b/Mage.Sets/src/mage/cards/v/VolrathsGardens.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author TheElk801
*/
-public class VolrathsGardens extends CardImpl {
+public final class VolrathsGardens extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
diff --git a/Mage.Sets/src/mage/cards/v/VolrathsLaboratory.java b/Mage.Sets/src/mage/cards/v/VolrathsLaboratory.java
index bf8d69228b7..e5ea729c689 100644
--- a/Mage.Sets/src/mage/cards/v/VolrathsLaboratory.java
+++ b/Mage.Sets/src/mage/cards/v/VolrathsLaboratory.java
@@ -53,7 +53,7 @@ import mage.game.permanent.token.VolrathsLaboratoryToken;
*
* @author emerald000
*/
-public class VolrathsLaboratory extends CardImpl {
+public final class VolrathsLaboratory extends CardImpl {
public VolrathsLaboratory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
diff --git a/Mage.Sets/src/mage/cards/v/VolrathsShapeshifter.java b/Mage.Sets/src/mage/cards/v/VolrathsShapeshifter.java
index d2b980a0ec0..fe9577fa37c 100644
--- a/Mage.Sets/src/mage/cards/v/VolrathsShapeshifter.java
+++ b/Mage.Sets/src/mage/cards/v/VolrathsShapeshifter.java
@@ -46,7 +46,7 @@ import java.util.UUID;
/**
* @author ImperatorPrime
*/
-public class VolrathsShapeshifter extends CardImpl {
+public final class VolrathsShapeshifter extends CardImpl {
public VolrathsShapeshifter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VolrathsStronghold.java b/Mage.Sets/src/mage/cards/v/VolrathsStronghold.java
index c3c6a01a9b2..ebfd543e190 100644
--- a/Mage.Sets/src/mage/cards/v/VolrathsStronghold.java
+++ b/Mage.Sets/src/mage/cards/v/VolrathsStronghold.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author jeffwadsworth
*/
-public class VolrathsStronghold extends CardImpl {
+public final class VolrathsStronghold extends CardImpl {
private static final FilterCard filter = new FilterCard("creature card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/v/VoltCharge.java b/Mage.Sets/src/mage/cards/v/VoltCharge.java
index aaabf01c268..af95f7c9f8e 100644
--- a/Mage.Sets/src/mage/cards/v/VoltCharge.java
+++ b/Mage.Sets/src/mage/cards/v/VoltCharge.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class VoltCharge extends CardImpl {
+public final class VoltCharge extends CardImpl {
public VoltCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VoltaicBrawler.java b/Mage.Sets/src/mage/cards/v/VoltaicBrawler.java
index 057a1a249bf..07f49612b37 100644
--- a/Mage.Sets/src/mage/cards/v/VoltaicBrawler.java
+++ b/Mage.Sets/src/mage/cards/v/VoltaicBrawler.java
@@ -48,7 +48,7 @@ import mage.constants.Duration;
*
* @author emerald000
*/
-public class VoltaicBrawler extends CardImpl {
+public final class VoltaicBrawler extends CardImpl {
public VoltaicBrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VoltaicConstruct.java b/Mage.Sets/src/mage/cards/v/VoltaicConstruct.java
index 6bdd7fab3b1..0f7e16c248e 100644
--- a/Mage.Sets/src/mage/cards/v/VoltaicConstruct.java
+++ b/Mage.Sets/src/mage/cards/v/VoltaicConstruct.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class VoltaicConstruct extends CardImpl {
+public final class VoltaicConstruct extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
diff --git a/Mage.Sets/src/mage/cards/v/VoltaicKey.java b/Mage.Sets/src/mage/cards/v/VoltaicKey.java
index 8b52d53d985..1a9030ba692 100644
--- a/Mage.Sets/src/mage/cards/v/VoltaicKey.java
+++ b/Mage.Sets/src/mage/cards/v/VoltaicKey.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class VoltaicKey extends CardImpl {
+public final class VoltaicKey extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact");
diff --git a/Mage.Sets/src/mage/cards/v/VoltaicServant.java b/Mage.Sets/src/mage/cards/v/VoltaicServant.java
index a796932b23a..90887674bee 100644
--- a/Mage.Sets/src/mage/cards/v/VoltaicServant.java
+++ b/Mage.Sets/src/mage/cards/v/VoltaicServant.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author TheElk801
*/
-public class VoltaicServant extends CardImpl {
+public final class VoltaicServant extends CardImpl {
public VoltaicServant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/v/VolunteerMilitia.java b/Mage.Sets/src/mage/cards/v/VolunteerMilitia.java
index 8c4e1eb7f7b..d80f70a5013 100644
--- a/Mage.Sets/src/mage/cards/v/VolunteerMilitia.java
+++ b/Mage.Sets/src/mage/cards/v/VolunteerMilitia.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class VolunteerMilitia extends CardImpl {
+public final class VolunteerMilitia extends CardImpl {
public VolunteerMilitia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VolunteerReserves.java b/Mage.Sets/src/mage/cards/v/VolunteerReserves.java
index 8bb22fab5ba..4428e043705 100644
--- a/Mage.Sets/src/mage/cards/v/VolunteerReserves.java
+++ b/Mage.Sets/src/mage/cards/v/VolunteerReserves.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class VolunteerReserves extends CardImpl {
+public final class VolunteerReserves extends CardImpl {
public VolunteerReserves (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VonaButcherOfMagan.java b/Mage.Sets/src/mage/cards/v/VonaButcherOfMagan.java
index 6eb27ad110c..208a4e60457 100644
--- a/Mage.Sets/src/mage/cards/v/VonaButcherOfMagan.java
+++ b/Mage.Sets/src/mage/cards/v/VonaButcherOfMagan.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author TheElk801
*/
-public class VonaButcherOfMagan extends CardImpl {
+public final class VonaButcherOfMagan extends CardImpl {
public VonaButcherOfMagan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VonasHunger.java b/Mage.Sets/src/mage/cards/v/VonasHunger.java
index ea03ce1a4c2..cf4c306474f 100644
--- a/Mage.Sets/src/mage/cards/v/VonasHunger.java
+++ b/Mage.Sets/src/mage/cards/v/VonasHunger.java
@@ -1,123 +1,123 @@
-/*
- * 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.ArrayList;
-import java.util.List;
-import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.condition.InvertCondition;
-import mage.abilities.condition.common.CitysBlessingCondition;
-import mage.abilities.decorator.ConditionalOneShotEffect;
-import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.SacrificeOpponentsEffect;
-import mage.abilities.effects.keyword.AscendEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.filter.StaticFilters;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.TargetPermanent;
-
-/**
- *
- * @author LevelX2
- */
-public class VonasHunger extends CardImpl {
-
- public VonasHunger(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
-
- // Ascend (If you control ten or more permanents, you get the city's blessing for the rest of the game.)
- this.getSpellAbility().addEffect(new AscendEffect());
-
- // Each opponent sacrifices a creature.
- this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
- new SacrificeOpponentsEffect(StaticFilters.FILTER_PERMANENT_A_CREATURE),
- new InvertCondition(CitysBlessingCondition.instance),
- "Each opponent sacrifices a creature"));
- // If you have the city's blessing, instead each opponent sacrifices half the creatures he or she controls rounded up.
- this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
- new VonasHungerEffect(),
- CitysBlessingCondition.instance,
- "If you have the city's blessing, instead each opponent sacrifices half the creatures he or she controls rounded up"));
- }
-
- public VonasHunger(final VonasHunger card) {
- super(card);
- }
-
- @Override
- public VonasHunger copy() {
- return new VonasHunger(this);
- }
-}
-
-class VonasHungerEffect extends OneShotEffect {
-
- public VonasHungerEffect() {
- super(Outcome.Sacrifice);
- }
-
- public VonasHungerEffect(final VonasHungerEffect effect) {
- super(effect);
- }
-
- @Override
- public VonasHungerEffect copy() {
- return new VonasHungerEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- List perms = new ArrayList<>();
- for (UUID playerId : game.getOpponents(source.getControllerId())) {
- Player player = game.getPlayer(playerId);
- if (player != null) {
- int numTargets = (game.getBattlefield().countAll(StaticFilters.FILTER_CONTROLLED_CREATURE, player.getId(), game) + 1) / 2;
- if (numTargets > 0) {
- TargetPermanent target = new TargetPermanent(numTargets, numTargets, StaticFilters.FILTER_CONTROLLED_CREATURE, true);
- if (target.canChoose(player.getId(), game)) {
- player.chooseTarget(Outcome.Sacrifice, target, source, game);
- perms.addAll(target.getTargets());
- }
- }
- }
- }
- for (UUID permID : perms) {
- Permanent permanent = game.getPermanent(permID);
- if (permanent != null) {
- permanent.sacrifice(source.getSourceId(), game);
- }
- }
- return true;
- }
-}
+/*
+ * 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.ArrayList;
+import java.util.List;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.condition.InvertCondition;
+import mage.abilities.condition.common.CitysBlessingCondition;
+import mage.abilities.decorator.ConditionalOneShotEffect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.SacrificeOpponentsEffect;
+import mage.abilities.effects.keyword.AscendEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.filter.StaticFilters;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class VonasHunger extends CardImpl {
+
+ public VonasHunger(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
+
+ // Ascend (If you control ten or more permanents, you get the city's blessing for the rest of the game.)
+ this.getSpellAbility().addEffect(new AscendEffect());
+
+ // Each opponent sacrifices a creature.
+ this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
+ new SacrificeOpponentsEffect(StaticFilters.FILTER_PERMANENT_A_CREATURE),
+ new InvertCondition(CitysBlessingCondition.instance),
+ "Each opponent sacrifices a creature"));
+ // If you have the city's blessing, instead each opponent sacrifices half the creatures he or she controls rounded up.
+ this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
+ new VonasHungerEffect(),
+ CitysBlessingCondition.instance,
+ "If you have the city's blessing, instead each opponent sacrifices half the creatures he or she controls rounded up"));
+ }
+
+ public VonasHunger(final VonasHunger card) {
+ super(card);
+ }
+
+ @Override
+ public VonasHunger copy() {
+ return new VonasHunger(this);
+ }
+}
+
+class VonasHungerEffect extends OneShotEffect {
+
+ public VonasHungerEffect() {
+ super(Outcome.Sacrifice);
+ }
+
+ public VonasHungerEffect(final VonasHungerEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public VonasHungerEffect copy() {
+ return new VonasHungerEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ List perms = new ArrayList<>();
+ for (UUID playerId : game.getOpponents(source.getControllerId())) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ int numTargets = (game.getBattlefield().countAll(StaticFilters.FILTER_CONTROLLED_CREATURE, player.getId(), game) + 1) / 2;
+ if (numTargets > 0) {
+ TargetPermanent target = new TargetPermanent(numTargets, numTargets, StaticFilters.FILTER_CONTROLLED_CREATURE, true);
+ if (target.canChoose(player.getId(), game)) {
+ player.chooseTarget(Outcome.Sacrifice, target, source, game);
+ perms.addAll(target.getTargets());
+ }
+ }
+ }
+ }
+ for (UUID permID : perms) {
+ Permanent permanent = game.getPermanent(permID);
+ if (permanent != null) {
+ permanent.sacrifice(source.getSourceId(), game);
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/v/VoraciousCobra.java b/Mage.Sets/src/mage/cards/v/VoraciousCobra.java
index 27f9445f823..577f4df42e7 100644
--- a/Mage.Sets/src/mage/cards/v/VoraciousCobra.java
+++ b/Mage.Sets/src/mage/cards/v/VoraciousCobra.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
* @author LoneFox
*/
-public class VoraciousCobra extends CardImpl {
+public final class VoraciousCobra extends CardImpl {
public VoraciousCobra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VoraciousDragon.java b/Mage.Sets/src/mage/cards/v/VoraciousDragon.java
index c02f4b6160d..f76abccb02b 100644
--- a/Mage.Sets/src/mage/cards/v/VoraciousDragon.java
+++ b/Mage.Sets/src/mage/cards/v/VoraciousDragon.java
@@ -52,7 +52,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class VoraciousDragon extends CardImpl {
+public final class VoraciousDragon extends CardImpl {
public VoraciousDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VoraciousHatchling.java b/Mage.Sets/src/mage/cards/v/VoraciousHatchling.java
index bef192fb6b7..ca77158fd98 100644
--- a/Mage.Sets/src/mage/cards/v/VoraciousHatchling.java
+++ b/Mage.Sets/src/mage/cards/v/VoraciousHatchling.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
/**
* @author Loki
*/
-public class VoraciousHatchling extends CardImpl {
+public final class VoraciousHatchling extends CardImpl {
private static final FilterSpell filterWhiteSpell = new FilterSpell("a white spell");
private static final FilterSpell filterBlackSpell = new FilterSpell("a black spell");
diff --git a/Mage.Sets/src/mage/cards/v/VoraciousNull.java b/Mage.Sets/src/mage/cards/v/VoraciousNull.java
index 55541548c80..62bd7617798 100644
--- a/Mage.Sets/src/mage/cards/v/VoraciousNull.java
+++ b/Mage.Sets/src/mage/cards/v/VoraciousNull.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class VoraciousNull extends CardImpl {
+public final class VoraciousNull extends CardImpl {
public VoraciousNull(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VoraciousReader.java b/Mage.Sets/src/mage/cards/v/VoraciousReader.java
index 601a1871a5b..253571d5993 100644
--- a/Mage.Sets/src/mage/cards/v/VoraciousReader.java
+++ b/Mage.Sets/src/mage/cards/v/VoraciousReader.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author fireshoes
*/
-public class VoraciousReader extends CardImpl {
+public final class VoraciousReader extends CardImpl {
private static final FilterCard filter = new FilterCard("Instant and sorcery spells");
static {
diff --git a/Mage.Sets/src/mage/cards/v/VoraciousVampire.java b/Mage.Sets/src/mage/cards/v/VoraciousVampire.java
index 563661c7922..b8a1f6ba1fa 100644
--- a/Mage.Sets/src/mage/cards/v/VoraciousVampire.java
+++ b/Mage.Sets/src/mage/cards/v/VoraciousVampire.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class VoraciousVampire extends CardImpl {
+public final class VoraciousVampire extends CardImpl {
public VoraciousVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VoraciousWurm.java b/Mage.Sets/src/mage/cards/v/VoraciousWurm.java
index 5b1d53013ae..4e485f8fff4 100644
--- a/Mage.Sets/src/mage/cards/v/VoraciousWurm.java
+++ b/Mage.Sets/src/mage/cards/v/VoraciousWurm.java
@@ -42,7 +42,7 @@ import mage.watchers.common.PlayerGainedLifeWatcher;
/**
* @author LevelX2
*/
-public class VoraciousWurm extends CardImpl {
+public final class VoraciousWurm extends CardImpl {
public VoraciousWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/Vorapede.java b/Mage.Sets/src/mage/cards/v/Vorapede.java
index e8400aaa443..5a1d55f34b5 100644
--- a/Mage.Sets/src/mage/cards/v/Vorapede.java
+++ b/Mage.Sets/src/mage/cards/v/Vorapede.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class Vorapede extends CardImpl {
+public final class Vorapede extends CardImpl {
public Vorapede(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java b/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java
index e1b6422ea7d..1fe900b7f52 100644
--- a/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java
+++ b/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author jeffwadsworth
*/
-public class VorelOfTheHullClade extends CardImpl {
+public final class VorelOfTheHullClade extends CardImpl {
final static private FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
diff --git a/Mage.Sets/src/mage/cards/v/VorinclexVoiceOfHunger.java b/Mage.Sets/src/mage/cards/v/VorinclexVoiceOfHunger.java
index 6ad34256621..ec4d28d5534 100644
--- a/Mage.Sets/src/mage/cards/v/VorinclexVoiceOfHunger.java
+++ b/Mage.Sets/src/mage/cards/v/VorinclexVoiceOfHunger.java
@@ -53,7 +53,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author BetaSteward
*/
-public class VorinclexVoiceOfHunger extends CardImpl {
+public final class VorinclexVoiceOfHunger extends CardImpl {
public VorinclexVoiceOfHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VoroshTheHunter.java b/Mage.Sets/src/mage/cards/v/VoroshTheHunter.java
index c62a3ed2931..bfaed3fff5e 100644
--- a/Mage.Sets/src/mage/cards/v/VoroshTheHunter.java
+++ b/Mage.Sets/src/mage/cards/v/VoroshTheHunter.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class VoroshTheHunter extends CardImpl {
+public final class VoroshTheHunter extends CardImpl {
public VoroshTheHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VorracBattlehorns.java b/Mage.Sets/src/mage/cards/v/VorracBattlehorns.java
index 07325eb2a48..78185327b33 100644
--- a/Mage.Sets/src/mage/cards/v/VorracBattlehorns.java
+++ b/Mage.Sets/src/mage/cards/v/VorracBattlehorns.java
@@ -54,7 +54,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class VorracBattlehorns extends CardImpl {
+public final class VorracBattlehorns extends CardImpl {
public VorracBattlehorns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/v/Vorstclaw.java b/Mage.Sets/src/mage/cards/v/Vorstclaw.java
index 891b3df1045..ff48a240a6e 100644
--- a/Mage.Sets/src/mage/cards/v/Vorstclaw.java
+++ b/Mage.Sets/src/mage/cards/v/Vorstclaw.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Vorstclaw extends CardImpl {
+public final class Vorstclaw extends CardImpl {
public Vorstclaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VortexElemental.java b/Mage.Sets/src/mage/cards/v/VortexElemental.java
index 9ffed7a4cfa..e4126a4b757 100644
--- a/Mage.Sets/src/mage/cards/v/VortexElemental.java
+++ b/Mage.Sets/src/mage/cards/v/VortexElemental.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VortexElemental extends CardImpl {
+public final class VortexElemental extends CardImpl {
public VortexElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VotaryOfTheConclave.java b/Mage.Sets/src/mage/cards/v/VotaryOfTheConclave.java
index 59788f78909..bede82c3e7b 100644
--- a/Mage.Sets/src/mage/cards/v/VotaryOfTheConclave.java
+++ b/Mage.Sets/src/mage/cards/v/VotaryOfTheConclave.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class VotaryOfTheConclave extends CardImpl {
+public final class VotaryOfTheConclave extends CardImpl {
public VotaryOfTheConclave (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VowOfDuty.java b/Mage.Sets/src/mage/cards/v/VowOfDuty.java
index dfe4169a362..16db9fe8762 100644
--- a/Mage.Sets/src/mage/cards/v/VowOfDuty.java
+++ b/Mage.Sets/src/mage/cards/v/VowOfDuty.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VowOfDuty extends CardImpl {
+public final class VowOfDuty extends CardImpl {
public VowOfDuty(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VowOfFlight.java b/Mage.Sets/src/mage/cards/v/VowOfFlight.java
index 351913dd6ae..81c88215333 100644
--- a/Mage.Sets/src/mage/cards/v/VowOfFlight.java
+++ b/Mage.Sets/src/mage/cards/v/VowOfFlight.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VowOfFlight extends CardImpl {
+public final class VowOfFlight extends CardImpl {
public VowOfFlight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VowOfLightning.java b/Mage.Sets/src/mage/cards/v/VowOfLightning.java
index 4adabe634c8..21f6d11fb32 100644
--- a/Mage.Sets/src/mage/cards/v/VowOfLightning.java
+++ b/Mage.Sets/src/mage/cards/v/VowOfLightning.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VowOfLightning extends CardImpl {
+public final class VowOfLightning extends CardImpl {
public VowOfLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VowOfMalice.java b/Mage.Sets/src/mage/cards/v/VowOfMalice.java
index f741904d28b..78b0b12a16e 100644
--- a/Mage.Sets/src/mage/cards/v/VowOfMalice.java
+++ b/Mage.Sets/src/mage/cards/v/VowOfMalice.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VowOfMalice extends CardImpl {
+public final class VowOfMalice extends CardImpl {
public VowOfMalice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VowOfWildness.java b/Mage.Sets/src/mage/cards/v/VowOfWildness.java
index b136c49682f..b9f0c3a95e6 100644
--- a/Mage.Sets/src/mage/cards/v/VowOfWildness.java
+++ b/Mage.Sets/src/mage/cards/v/VowOfWildness.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VowOfWildness extends CardImpl {
+public final class VowOfWildness extends CardImpl {
public VowOfWildness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VoyagerDrake.java b/Mage.Sets/src/mage/cards/v/VoyagerDrake.java
index 79665ee2830..08cb3611ecc 100644
--- a/Mage.Sets/src/mage/cards/v/VoyagerDrake.java
+++ b/Mage.Sets/src/mage/cards/v/VoyagerDrake.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class VoyagerDrake extends CardImpl {
+public final class VoyagerDrake extends CardImpl {
private final UUID originalId;
diff --git a/Mage.Sets/src/mage/cards/v/VoyagerStaff.java b/Mage.Sets/src/mage/cards/v/VoyagerStaff.java
index 54ef33fcebc..ca1ab092d7b 100644
--- a/Mage.Sets/src/mage/cards/v/VoyagerStaff.java
+++ b/Mage.Sets/src/mage/cards/v/VoyagerStaff.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class VoyagerStaff extends CardImpl {
+public final class VoyagerStaff extends CardImpl {
public VoyagerStaff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
diff --git a/Mage.Sets/src/mage/cards/v/VoyagesEnd.java b/Mage.Sets/src/mage/cards/v/VoyagesEnd.java
index c26474925ac..c59d80a4a96 100644
--- a/Mage.Sets/src/mage/cards/v/VoyagesEnd.java
+++ b/Mage.Sets/src/mage/cards/v/VoyagesEnd.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VoyagesEnd extends CardImpl {
+public final class VoyagesEnd extends CardImpl {
public VoyagesEnd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VoyagingSatyr.java b/Mage.Sets/src/mage/cards/v/VoyagingSatyr.java
index e82d9786c3f..f2076e45044 100644
--- a/Mage.Sets/src/mage/cards/v/VoyagingSatyr.java
+++ b/Mage.Sets/src/mage/cards/v/VoyagingSatyr.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class VoyagingSatyr extends CardImpl {
+public final class VoyagingSatyr extends CardImpl {
public VoyagingSatyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VraskaRelicSeeker.java b/Mage.Sets/src/mage/cards/v/VraskaRelicSeeker.java
index a69c46e28a0..73c74935893 100644
--- a/Mage.Sets/src/mage/cards/v/VraskaRelicSeeker.java
+++ b/Mage.Sets/src/mage/cards/v/VraskaRelicSeeker.java
@@ -52,7 +52,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class VraskaRelicSeeker extends CardImpl {
+public final class VraskaRelicSeeker extends CardImpl {
public VraskaRelicSeeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VraskaSchemingGorgon.java b/Mage.Sets/src/mage/cards/v/VraskaSchemingGorgon.java
index fc7abafc50d..1d321a7758f 100644
--- a/Mage.Sets/src/mage/cards/v/VraskaSchemingGorgon.java
+++ b/Mage.Sets/src/mage/cards/v/VraskaSchemingGorgon.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class VraskaSchemingGorgon extends CardImpl {
+public final class VraskaSchemingGorgon extends CardImpl {
public VraskaSchemingGorgon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java b/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java
index cbb0601f985..eea765c112d 100644
--- a/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java
+++ b/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java
@@ -66,7 +66,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class VraskaTheUnseen extends CardImpl {
+public final class VraskaTheUnseen extends CardImpl {
public VraskaTheUnseen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VraskasConquistador.java b/Mage.Sets/src/mage/cards/v/VraskasConquistador.java
index 95c9dbc2c12..145e2dd3ddb 100644
--- a/Mage.Sets/src/mage/cards/v/VraskasConquistador.java
+++ b/Mage.Sets/src/mage/cards/v/VraskasConquistador.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class VraskasConquistador extends CardImpl {
+public final class VraskasConquistador extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/v/VraskasContempt.java b/Mage.Sets/src/mage/cards/v/VraskasContempt.java
index ad64c6d42e7..e1e4f7893b5 100644
--- a/Mage.Sets/src/mage/cards/v/VraskasContempt.java
+++ b/Mage.Sets/src/mage/cards/v/VraskasContempt.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
*
* @author spjspj
*/
-public class VraskasContempt extends CardImpl {
+public final class VraskasContempt extends CardImpl {
public VraskasContempt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VraskasScorn.java b/Mage.Sets/src/mage/cards/v/VraskasScorn.java
index b99ce79d7fe..9970d185e21 100644
--- a/Mage.Sets/src/mage/cards/v/VraskasScorn.java
+++ b/Mage.Sets/src/mage/cards/v/VraskasScorn.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class VraskasScorn extends CardImpl {
+public final class VraskasScorn extends CardImpl {
private final static FilterCard filter = new FilterCard("Vraska, Scheming Gorgon");
diff --git a/Mage.Sets/src/mage/cards/v/VrynWingmare.java b/Mage.Sets/src/mage/cards/v/VrynWingmare.java
index 1c1dad45ab2..2128ad84475 100644
--- a/Mage.Sets/src/mage/cards/v/VrynWingmare.java
+++ b/Mage.Sets/src/mage/cards/v/VrynWingmare.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class VrynWingmare extends CardImpl {
+public final class VrynWingmare extends CardImpl {
public VrynWingmare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/v/VugLizard.java b/Mage.Sets/src/mage/cards/v/VugLizard.java
index 26f37a05c11..73874af1d6b 100644
--- a/Mage.Sets/src/mage/cards/v/VugLizard.java
+++ b/Mage.Sets/src/mage/cards/v/VugLizard.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class VugLizard extends CardImpl {
+public final class VugLizard extends CardImpl {
public VugLizard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VulpineGoliath.java b/Mage.Sets/src/mage/cards/v/VulpineGoliath.java
index 08e6d4b06b7..84dd377bd9f 100644
--- a/Mage.Sets/src/mage/cards/v/VulpineGoliath.java
+++ b/Mage.Sets/src/mage/cards/v/VulpineGoliath.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class VulpineGoliath extends CardImpl {
+public final class VulpineGoliath extends CardImpl {
public VulpineGoliath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VulshokBattlegear.java b/Mage.Sets/src/mage/cards/v/VulshokBattlegear.java
index a752d1b28f4..266c82f81a7 100644
--- a/Mage.Sets/src/mage/cards/v/VulshokBattlegear.java
+++ b/Mage.Sets/src/mage/cards/v/VulshokBattlegear.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class VulshokBattlegear extends CardImpl {
+public final class VulshokBattlegear extends CardImpl {
public VulshokBattlegear (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/v/VulshokBattlemaster.java b/Mage.Sets/src/mage/cards/v/VulshokBattlemaster.java
index f4c5722c925..44aae724058 100644
--- a/Mage.Sets/src/mage/cards/v/VulshokBattlemaster.java
+++ b/Mage.Sets/src/mage/cards/v/VulshokBattlemaster.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author Derpthemeus
*/
-public class VulshokBattlemaster extends CardImpl {
+public final class VulshokBattlemaster extends CardImpl {
public VulshokBattlemaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VulshokBerserker.java b/Mage.Sets/src/mage/cards/v/VulshokBerserker.java
index c93788e49a4..c8e1cea0aeb 100644
--- a/Mage.Sets/src/mage/cards/v/VulshokBerserker.java
+++ b/Mage.Sets/src/mage/cards/v/VulshokBerserker.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class VulshokBerserker extends CardImpl {
+public final class VulshokBerserker extends CardImpl {
public VulshokBerserker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VulshokGauntlets.java b/Mage.Sets/src/mage/cards/v/VulshokGauntlets.java
index 0aa5c1f9dec..8c232e4cb74 100644
--- a/Mage.Sets/src/mage/cards/v/VulshokGauntlets.java
+++ b/Mage.Sets/src/mage/cards/v/VulshokGauntlets.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class VulshokGauntlets extends CardImpl {
+public final class VulshokGauntlets extends CardImpl {
public VulshokGauntlets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/v/VulshokHeartstoker.java b/Mage.Sets/src/mage/cards/v/VulshokHeartstoker.java
index f8412c64347..0573b7db9e8 100644
--- a/Mage.Sets/src/mage/cards/v/VulshokHeartstoker.java
+++ b/Mage.Sets/src/mage/cards/v/VulshokHeartstoker.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class VulshokHeartstoker extends CardImpl {
+public final class VulshokHeartstoker extends CardImpl {
public VulshokHeartstoker (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VulshokMorningstar.java b/Mage.Sets/src/mage/cards/v/VulshokMorningstar.java
index 67281f192c2..64c5436f636 100644
--- a/Mage.Sets/src/mage/cards/v/VulshokMorningstar.java
+++ b/Mage.Sets/src/mage/cards/v/VulshokMorningstar.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
/**
* @author Loki
*/
-public class VulshokMorningstar extends CardImpl {
+public final class VulshokMorningstar extends CardImpl {
public VulshokMorningstar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/v/VulshokRefugee.java b/Mage.Sets/src/mage/cards/v/VulshokRefugee.java
index 3cfef77bdb4..8c02ee12c03 100644
--- a/Mage.Sets/src/mage/cards/v/VulshokRefugee.java
+++ b/Mage.Sets/src/mage/cards/v/VulshokRefugee.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class VulshokRefugee extends CardImpl {
+public final class VulshokRefugee extends CardImpl {
public VulshokRefugee(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VulshokReplica.java b/Mage.Sets/src/mage/cards/v/VulshokReplica.java
index ce3d07a70a3..05f24082ded 100644
--- a/Mage.Sets/src/mage/cards/v/VulshokReplica.java
+++ b/Mage.Sets/src/mage/cards/v/VulshokReplica.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author Loki
*/
-public class VulshokReplica extends CardImpl {
+public final class VulshokReplica extends CardImpl {
public VulshokReplica(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/v/VulshokSorcerer.java b/Mage.Sets/src/mage/cards/v/VulshokSorcerer.java
index ba9decb8717..18fa80feb16 100644
--- a/Mage.Sets/src/mage/cards/v/VulshokSorcerer.java
+++ b/Mage.Sets/src/mage/cards/v/VulshokSorcerer.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class VulshokSorcerer extends CardImpl {
+public final class VulshokSorcerer extends CardImpl {
public VulshokSorcerer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VulshokWarBoar.java b/Mage.Sets/src/mage/cards/v/VulshokWarBoar.java
index 0f71c5901c5..4ba0388c8e0 100644
--- a/Mage.Sets/src/mage/cards/v/VulshokWarBoar.java
+++ b/Mage.Sets/src/mage/cards/v/VulshokWarBoar.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class VulshokWarBoar extends CardImpl {
+public final class VulshokWarBoar extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledArtifactPermanent("an artifact");
diff --git a/Mage.Sets/src/mage/cards/v/VulturousAven.java b/Mage.Sets/src/mage/cards/v/VulturousAven.java
index d56c7d610ff..a21396859af 100644
--- a/Mage.Sets/src/mage/cards/v/VulturousAven.java
+++ b/Mage.Sets/src/mage/cards/v/VulturousAven.java
@@ -45,7 +45,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class VulturousAven extends CardImpl {
+public final class VulturousAven extends CardImpl {
public VulturousAven(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/v/VulturousZombie.java b/Mage.Sets/src/mage/cards/v/VulturousZombie.java
index e1a6cf93d13..b1324090f54 100644
--- a/Mage.Sets/src/mage/cards/v/VulturousZombie.java
+++ b/Mage.Sets/src/mage/cards/v/VulturousZombie.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
* @author jeffwadsworth
*
*/
-public class VulturousZombie extends CardImpl {
+public final class VulturousZombie extends CardImpl {
public VulturousZombie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WailOfTheNim.java b/Mage.Sets/src/mage/cards/w/WailOfTheNim.java
index d918883f0b0..02a2835c1e0 100644
--- a/Mage.Sets/src/mage/cards/w/WailOfTheNim.java
+++ b/Mage.Sets/src/mage/cards/w/WailOfTheNim.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class WailOfTheNim extends CardImpl {
+public final class WailOfTheNim extends CardImpl {
public WailOfTheNim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WailingGhoul.java b/Mage.Sets/src/mage/cards/w/WailingGhoul.java
index 6bc902434a6..f1d5a151ee2 100644
--- a/Mage.Sets/src/mage/cards/w/WailingGhoul.java
+++ b/Mage.Sets/src/mage/cards/w/WailingGhoul.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class WailingGhoul extends CardImpl {
+public final class WailingGhoul extends CardImpl {
public WailingGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WaitingInTheWeeds.java b/Mage.Sets/src/mage/cards/w/WaitingInTheWeeds.java
index 09e78278c90..3e99a33e45e 100644
--- a/Mage.Sets/src/mage/cards/w/WaitingInTheWeeds.java
+++ b/Mage.Sets/src/mage/cards/w/WaitingInTheWeeds.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author Quercitron
*/
-public class WaitingInTheWeeds extends CardImpl {
+public final class WaitingInTheWeeds extends CardImpl {
public WaitingInTheWeeds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WakeOfDestruction.java b/Mage.Sets/src/mage/cards/w/WakeOfDestruction.java
index 8898948e5d0..f22cead4866 100644
--- a/Mage.Sets/src/mage/cards/w/WakeOfDestruction.java
+++ b/Mage.Sets/src/mage/cards/w/WakeOfDestruction.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Styxo
*/
-public class WakeOfDestruction extends CardImpl {
+public final class WakeOfDestruction extends CardImpl {
public WakeOfDestruction(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WakeOfVultures.java b/Mage.Sets/src/mage/cards/w/WakeOfVultures.java
index 98ef4d9e84c..790ab902f81 100644
--- a/Mage.Sets/src/mage/cards/w/WakeOfVultures.java
+++ b/Mage.Sets/src/mage/cards/w/WakeOfVultures.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author nigelzor
*/
-public class WakeOfVultures extends CardImpl {
+public final class WakeOfVultures extends CardImpl {
public WakeOfVultures(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WakeTheDead.java b/Mage.Sets/src/mage/cards/w/WakeTheDead.java
index 10a11edab4e..9982e8b00e4 100644
--- a/Mage.Sets/src/mage/cards/w/WakeTheDead.java
+++ b/Mage.Sets/src/mage/cards/w/WakeTheDead.java
@@ -59,7 +59,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class WakeTheDead extends CardImpl {
+public final class WakeTheDead extends CardImpl {
public WakeTheDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WakeTheReflections.java b/Mage.Sets/src/mage/cards/w/WakeTheReflections.java
index de077153ae9..2042e3c57df 100644
--- a/Mage.Sets/src/mage/cards/w/WakeTheReflections.java
+++ b/Mage.Sets/src/mage/cards/w/WakeTheReflections.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*/
-public class WakeTheReflections extends CardImpl {
+public final class WakeTheReflections extends CardImpl {
public WakeTheReflections(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WakeThrasher.java b/Mage.Sets/src/mage/cards/w/WakeThrasher.java
index b9f7be99fe8..654731ee946 100644
--- a/Mage.Sets/src/mage/cards/w/WakeThrasher.java
+++ b/Mage.Sets/src/mage/cards/w/WakeThrasher.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class WakeThrasher extends CardImpl {
+public final class WakeThrasher extends CardImpl {
public WakeThrasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/Wakedancer.java b/Mage.Sets/src/mage/cards/w/Wakedancer.java
index 972ab29c4e2..78659508506 100644
--- a/Mage.Sets/src/mage/cards/w/Wakedancer.java
+++ b/Mage.Sets/src/mage/cards/w/Wakedancer.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author Loki
*/
-public class Wakedancer extends CardImpl {
+public final class Wakedancer extends CardImpl {
private static final String staticText = "Morbid - When {this} enters the battlefield, if a creature died this turn, create a 2/2 black Zombie creature token.";
diff --git a/Mage.Sets/src/mage/cards/w/WakeningSunsAvatar.java b/Mage.Sets/src/mage/cards/w/WakeningSunsAvatar.java
index 0cc7bf0a499..a73019595bf 100644
--- a/Mage.Sets/src/mage/cards/w/WakeningSunsAvatar.java
+++ b/Mage.Sets/src/mage/cards/w/WakeningSunsAvatar.java
@@ -46,7 +46,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author TheElk801
*/
-public class WakeningSunsAvatar extends CardImpl {
+public final class WakeningSunsAvatar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Dinosaur creatures");
diff --git a/Mage.Sets/src/mage/cards/w/WakerOfTheWilds.java b/Mage.Sets/src/mage/cards/w/WakerOfTheWilds.java
index ab1ff757723..2168466127a 100644
--- a/Mage.Sets/src/mage/cards/w/WakerOfTheWilds.java
+++ b/Mage.Sets/src/mage/cards/w/WakerOfTheWilds.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author spjspj
*/
-public class WakerOfTheWilds extends CardImpl {
+public final class WakerOfTheWilds extends CardImpl {
public WakerOfTheWilds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WakestoneGargoyle.java b/Mage.Sets/src/mage/cards/w/WakestoneGargoyle.java
index 7da0bda0980..c66a2622007 100644
--- a/Mage.Sets/src/mage/cards/w/WakestoneGargoyle.java
+++ b/Mage.Sets/src/mage/cards/w/WakestoneGargoyle.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class WakestoneGargoyle extends CardImpl {
+public final class WakestoneGargoyle extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Creatures you control with defender");
diff --git a/Mage.Sets/src/mage/cards/w/WakingNightmare.java b/Mage.Sets/src/mage/cards/w/WakingNightmare.java
index 7dcf4824fc3..2014cffb8eb 100644
--- a/Mage.Sets/src/mage/cards/w/WakingNightmare.java
+++ b/Mage.Sets/src/mage/cards/w/WakingNightmare.java
@@ -41,7 +41,7 @@ import java.util.UUID;
*
* @author Loki
*/
-public class WakingNightmare extends CardImpl {
+public final class WakingNightmare extends CardImpl {
public WakingNightmare (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WalkTheAeons.java b/Mage.Sets/src/mage/cards/w/WalkTheAeons.java
index 6fdb54605b4..faca3a05449 100644
--- a/Mage.Sets/src/mage/cards/w/WalkTheAeons.java
+++ b/Mage.Sets/src/mage/cards/w/WalkTheAeons.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class WalkTheAeons extends CardImpl {
+public final class WalkTheAeons extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("three Islands");
diff --git a/Mage.Sets/src/mage/cards/w/WalkThePlank.java b/Mage.Sets/src/mage/cards/w/WalkThePlank.java
index cc7a6250404..9aed5d7f23a 100644
--- a/Mage.Sets/src/mage/cards/w/WalkThePlank.java
+++ b/Mage.Sets/src/mage/cards/w/WalkThePlank.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author spjspj
*/
-public class WalkThePlank extends CardImpl {
+public final class WalkThePlank extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Merfolk creature");
diff --git a/Mage.Sets/src/mage/cards/w/WalkerOfSecretWays.java b/Mage.Sets/src/mage/cards/w/WalkerOfSecretWays.java
index 084755f62d4..77238ef36f5 100644
--- a/Mage.Sets/src/mage/cards/w/WalkerOfSecretWays.java
+++ b/Mage.Sets/src/mage/cards/w/WalkerOfSecretWays.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class WalkerOfSecretWays extends CardImpl {
+public final class WalkerOfSecretWays extends CardImpl {
private static final FilterControlledCreaturePermanent filterCreature = new FilterControlledCreaturePermanent("Ninja you control");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WalkerOfTheGrove.java b/Mage.Sets/src/mage/cards/w/WalkerOfTheGrove.java
index 657bd631390..90724f45128 100644
--- a/Mage.Sets/src/mage/cards/w/WalkerOfTheGrove.java
+++ b/Mage.Sets/src/mage/cards/w/WalkerOfTheGrove.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.WalkerOfTheGroveToken;
*
* @author LevelX2
*/
-public class WalkerOfTheGrove extends CardImpl {
+public final class WalkerOfTheGrove extends CardImpl {
public WalkerOfTheGrove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WalkerOfTheWastes.java b/Mage.Sets/src/mage/cards/w/WalkerOfTheWastes.java
index a4c01edc1e8..8b2a779fb93 100644
--- a/Mage.Sets/src/mage/cards/w/WalkerOfTheWastes.java
+++ b/Mage.Sets/src/mage/cards/w/WalkerOfTheWastes.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author fireshoes
*/
-public class WalkerOfTheWastes extends CardImpl {
+public final class WalkerOfTheWastes extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("each land you control named Wastes");
diff --git a/Mage.Sets/src/mage/cards/w/WalkingArchive.java b/Mage.Sets/src/mage/cards/w/WalkingArchive.java
index 5380e6a38c5..1906db30be6 100644
--- a/Mage.Sets/src/mage/cards/w/WalkingArchive.java
+++ b/Mage.Sets/src/mage/cards/w/WalkingArchive.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author jeffwadsworth
*/
-public class WalkingArchive extends CardImpl {
+public final class WalkingArchive extends CardImpl {
public WalkingArchive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WalkingAtlas.java b/Mage.Sets/src/mage/cards/w/WalkingAtlas.java
index 19a64228c41..56e8033d7dd 100644
--- a/Mage.Sets/src/mage/cards/w/WalkingAtlas.java
+++ b/Mage.Sets/src/mage/cards/w/WalkingAtlas.java
@@ -25,37 +25,41 @@
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
-
package mage.cards.w;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.effects.common.PutLandFromHandOntoBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
+import mage.filter.StaticFilters;
/**
*
* @author Loki
*/
-public class WalkingAtlas extends CardImpl {
+public final class WalkingAtlas extends CardImpl {
- public WalkingAtlas (UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
+ public WalkingAtlas(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
this.subtype.add(SubType.CONSTRUCT);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// {tap}: You may put a land card from your hand onto the battlefield.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutLandFromHandOntoBattlefieldEffect(), new TapSourceCost()));
+ this.addAbility(new SimpleActivatedAbility(
+ Zone.BATTLEFIELD,
+ new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A),
+ new TapSourceCost()
+ ));
}
- public WalkingAtlas (final WalkingAtlas card) {
+ public WalkingAtlas(final WalkingAtlas card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/w/WalkingBallista.java b/Mage.Sets/src/mage/cards/w/WalkingBallista.java
index 5434eacec51..f77fdd3a1a6 100644
--- a/Mage.Sets/src/mage/cards/w/WalkingBallista.java
+++ b/Mage.Sets/src/mage/cards/w/WalkingBallista.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class WalkingBallista extends CardImpl {
+public final class WalkingBallista extends CardImpl {
public WalkingBallista(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{X}{X}");
diff --git a/Mage.Sets/src/mage/cards/w/WalkingCorpse.java b/Mage.Sets/src/mage/cards/w/WalkingCorpse.java
index f8dea845ee2..fc195cbeb9d 100644
--- a/Mage.Sets/src/mage/cards/w/WalkingCorpse.java
+++ b/Mage.Sets/src/mage/cards/w/WalkingCorpse.java
@@ -37,7 +37,7 @@ import mage.constants.SubType;
/**
* @author nantuko
*/
-public class WalkingCorpse extends CardImpl {
+public final class WalkingCorpse extends CardImpl {
public WalkingCorpse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WalkingDead.java b/Mage.Sets/src/mage/cards/w/WalkingDead.java
index 2bcb86def21..d211802e7c6 100644
--- a/Mage.Sets/src/mage/cards/w/WalkingDead.java
+++ b/Mage.Sets/src/mage/cards/w/WalkingDead.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author Derpthemeus
*/
-public class WalkingDead extends CardImpl {
+public final class WalkingDead extends CardImpl {
public WalkingDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WalkingDesecration.java b/Mage.Sets/src/mage/cards/w/WalkingDesecration.java
index bc234db8183..496b51090df 100644
--- a/Mage.Sets/src/mage/cards/w/WalkingDesecration.java
+++ b/Mage.Sets/src/mage/cards/w/WalkingDesecration.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class WalkingDesecration extends CardImpl {
+public final class WalkingDesecration extends CardImpl {
public WalkingDesecration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WalkingSponge.java b/Mage.Sets/src/mage/cards/w/WalkingSponge.java
index fb0bb0f4bc0..19b87bc4f8c 100644
--- a/Mage.Sets/src/mage/cards/w/WalkingSponge.java
+++ b/Mage.Sets/src/mage/cards/w/WalkingSponge.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class WalkingSponge extends CardImpl {
+public final class WalkingSponge extends CardImpl {
public WalkingSponge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WalkingWall.java b/Mage.Sets/src/mage/cards/w/WalkingWall.java
index e784b8fcad8..7f53012436a 100644
--- a/Mage.Sets/src/mage/cards/w/WalkingWall.java
+++ b/Mage.Sets/src/mage/cards/w/WalkingWall.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class WalkingWall extends CardImpl {
+public final class WalkingWall extends CardImpl {
public WalkingWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfAir.java b/Mage.Sets/src/mage/cards/w/WallOfAir.java
index 970a876c448..0e6d181dd32 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfAir.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfAir.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WallOfAir extends CardImpl {
+public final class WallOfAir extends CardImpl {
public WallOfAir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfBlood.java b/Mage.Sets/src/mage/cards/w/WallOfBlood.java
index d2223b2f3bf..e18d6c636f5 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfBlood.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfBlood.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class WallOfBlood extends CardImpl {
+public final class WallOfBlood extends CardImpl {
public WallOfBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfBlossoms.java b/Mage.Sets/src/mage/cards/w/WallOfBlossoms.java
index d3759a3ff44..8d9f6a353af 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfBlossoms.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfBlossoms.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author jeffwadsworth
*/
-public class WallOfBlossoms extends CardImpl {
+public final class WallOfBlossoms extends CardImpl {
public WallOfBlossoms(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfBone.java b/Mage.Sets/src/mage/cards/w/WallOfBone.java
index b769d89bbf8..5e7fb6f031b 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfBone.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfBone.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class WallOfBone extends CardImpl {
+public final class WallOfBone extends CardImpl {
public WallOfBone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfBrambles.java b/Mage.Sets/src/mage/cards/w/WallOfBrambles.java
index 97df00197d2..9f465beda1b 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfBrambles.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfBrambles.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Jgod
*/
-public class WallOfBrambles extends CardImpl {
+public final class WallOfBrambles extends CardImpl {
public WallOfBrambles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfCaltrops.java b/Mage.Sets/src/mage/cards/w/WallOfCaltrops.java
index e5135a6205b..23462a1a05d 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfCaltrops.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfCaltrops.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class WallOfCaltrops extends CardImpl {
+public final class WallOfCaltrops extends CardImpl {
public WallOfCaltrops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfDeceit.java b/Mage.Sets/src/mage/cards/w/WallOfDeceit.java
index ac52e9db285..e479c196b0e 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfDeceit.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfDeceit.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class WallOfDeceit extends CardImpl {
+public final class WallOfDeceit extends CardImpl {
public WallOfDeceit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfDenial.java b/Mage.Sets/src/mage/cards/w/WallOfDenial.java
index cfc9219a041..f87ef570214 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfDenial.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfDenial.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class WallOfDenial extends CardImpl {
+public final class WallOfDenial extends CardImpl {
public WallOfDenial (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfDiffusion.java b/Mage.Sets/src/mage/cards/w/WallOfDiffusion.java
index 216bfe8da5b..8620a6f6fe5 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfDiffusion.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfDiffusion.java
@@ -47,7 +47,7 @@ import mage.game.Game;
*
* @author LevelX2
*/
-public class WallOfDiffusion extends CardImpl {
+public final class WallOfDiffusion extends CardImpl {
public WallOfDiffusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfDistortion.java b/Mage.Sets/src/mage/cards/w/WallOfDistortion.java
index 707924c0cee..5690885175d 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfDistortion.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfDistortion.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author TheElk801
*/
-public class WallOfDistortion extends CardImpl {
+public final class WallOfDistortion extends CardImpl {
public WallOfDistortion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfDust.java b/Mage.Sets/src/mage/cards/w/WallOfDust.java
index d6126143dc8..0dbb60f1486 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfDust.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfDust.java
@@ -47,7 +47,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J (based on LevelX2)
*/
-public class WallOfDust extends CardImpl {
+public final class WallOfDust extends CardImpl {
public WallOfDust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfEarth.java b/Mage.Sets/src/mage/cards/w/WallOfEarth.java
index 2d910ca2843..bbe87903454 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfEarth.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfEarth.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WallOfEarth extends CardImpl {
+public final class WallOfEarth extends CardImpl {
public WallOfEarth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfEssence.java b/Mage.Sets/src/mage/cards/w/WallOfEssence.java
index 79c27ad580f..c0300afca22 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfEssence.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfEssence.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WallOfEssence extends CardImpl {
+public final class WallOfEssence extends CardImpl {
public WallOfEssence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfFaith.java b/Mage.Sets/src/mage/cards/w/WallOfFaith.java
index 37d8e98b005..ce364546000 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfFaith.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfFaith.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class WallOfFaith extends CardImpl {
+public final class WallOfFaith extends CardImpl {
public WallOfFaith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfFire.java b/Mage.Sets/src/mage/cards/w/WallOfFire.java
index 510dcf73692..888216acbcb 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfFire.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfFire.java
@@ -41,7 +41,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class WallOfFire extends CardImpl {
+public final class WallOfFire extends CardImpl {
public WallOfFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfForgottenPharaohs.java b/Mage.Sets/src/mage/cards/w/WallOfForgottenPharaohs.java
index 91e4e3eb7dd..5394e1c3b99 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfForgottenPharaohs.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfForgottenPharaohs.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author spjspj
*/
-public class WallOfForgottenPharaohs extends CardImpl {
+public final class WallOfForgottenPharaohs extends CardImpl {
private static final FilterControlledPermanent filterDesertPermanent = new FilterControlledPermanent("Desert");
private static final FilterCard filterDesertCard = new FilterCard("Desert card");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfFrost.java b/Mage.Sets/src/mage/cards/w/WallOfFrost.java
index fcd18307cda..b300f55cef8 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfFrost.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfFrost.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class WallOfFrost extends CardImpl {
+public final class WallOfFrost extends CardImpl {
public WallOfFrost(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfGlare.java b/Mage.Sets/src/mage/cards/w/WallOfGlare.java
index 2a46c39de9b..0df9cecab30 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfGlare.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfGlare.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class WallOfGlare extends CardImpl {
+public final class WallOfGlare extends CardImpl {
public WallOfGlare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfGranite.java b/Mage.Sets/src/mage/cards/w/WallOfGranite.java
index f1cd9d691ce..d5cd9a7372b 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfGranite.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfGranite.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class WallOfGranite extends CardImpl {
+public final class WallOfGranite extends CardImpl {
public WallOfGranite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfHeat.java b/Mage.Sets/src/mage/cards/w/WallOfHeat.java
index 3d7642226b6..fadaec3540e 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfHeat.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfHeat.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WallOfHeat extends CardImpl {
+public final class WallOfHeat extends CardImpl {
public WallOfHeat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfHope.java b/Mage.Sets/src/mage/cards/w/WallOfHope.java
index 55c006bea4b..1da40d72994 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfHope.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfHope.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class WallOfHope extends CardImpl {
+public final class WallOfHope extends CardImpl {
public WallOfHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfIce.java b/Mage.Sets/src/mage/cards/w/WallOfIce.java
index 302d1e45e50..9da7aca74cd 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfIce.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfIce.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WallOfIce extends CardImpl {
+public final class WallOfIce extends CardImpl {
public WallOfIce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfJunk.java b/Mage.Sets/src/mage/cards/w/WallOfJunk.java
index 39bf45f978a..091967d759b 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfJunk.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfJunk.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class WallOfJunk extends CardImpl {
+public final class WallOfJunk extends CardImpl {
public WallOfJunk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfKelp.java b/Mage.Sets/src/mage/cards/w/WallOfKelp.java
index 9b411a78807..6343dd2b94b 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfKelp.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfKelp.java
@@ -46,7 +46,7 @@ import mage.game.permanent.token.KelpToken;
*
* @author fireshoes
*/
-public class WallOfKelp extends CardImpl {
+public final class WallOfKelp extends CardImpl {
public WallOfKelp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfLava.java b/Mage.Sets/src/mage/cards/w/WallOfLava.java
index 322b7f5e00a..e0cf3616d91 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfLava.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfLava.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class WallOfLava extends CardImpl {
+public final class WallOfLava extends CardImpl {
public WallOfLava(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfLight.java b/Mage.Sets/src/mage/cards/w/WallOfLight.java
index 09603a29f43..5b6f4992b24 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfLight.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfLight.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WallOfLight extends CardImpl {
+public final class WallOfLight extends CardImpl {
public WallOfLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfLimbs.java b/Mage.Sets/src/mage/cards/w/WallOfLimbs.java
index ee177b3af9e..eab10b7afde 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfLimbs.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfLimbs.java
@@ -54,7 +54,7 @@ import mage.target.TargetPlayer;
*
* @author emerald000
*/
-public class WallOfLimbs extends CardImpl {
+public final class WallOfLimbs extends CardImpl {
public WallOfLimbs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfMulch.java b/Mage.Sets/src/mage/cards/w/WallOfMulch.java
index 48033b00ddd..602edde4064 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfMulch.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfMulch.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class WallOfMulch extends CardImpl {
+public final class WallOfMulch extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Wall");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfNets.java b/Mage.Sets/src/mage/cards/w/WallOfNets.java
index 8ed660e218f..6db04a407ad 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfNets.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfNets.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.BlockedByIdPredicate;
*
* @author LoneFox
*/
-public class WallOfNets extends CardImpl {
+public final class WallOfNets extends CardImpl {
public WallOfNets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfOmens.java b/Mage.Sets/src/mage/cards/w/WallOfOmens.java
index 3b9c04c87cd..340de72f64f 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfOmens.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfOmens.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WallOfOmens extends CardImpl {
+public final class WallOfOmens extends CardImpl {
public WallOfOmens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfOpposition.java b/Mage.Sets/src/mage/cards/w/WallOfOpposition.java
index ab674e83d09..374ad165954 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfOpposition.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfOpposition.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author KyleCartmell
*/
-public class WallOfOpposition extends CardImpl {
+public final class WallOfOpposition extends CardImpl {
public WallOfOpposition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfPineNeedles.java b/Mage.Sets/src/mage/cards/w/WallOfPineNeedles.java
index 5dc4eee3154..1448e81329b 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfPineNeedles.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfPineNeedles.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author jeffwadsworth
*/
-public class WallOfPineNeedles extends CardImpl {
+public final class WallOfPineNeedles extends CardImpl {
public WallOfPineNeedles(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfPutridFlesh.java b/Mage.Sets/src/mage/cards/w/WallOfPutridFlesh.java
index 83b4565366a..010ed30aece 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfPutridFlesh.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfPutridFlesh.java
@@ -51,11 +51,11 @@ import mage.game.permanent.Permanent;
*
* @author Galatolol
*/
-public class WallOfPutridFlesh extends CardImpl {
+public final class WallOfPutridFlesh extends CardImpl {
public WallOfPutridFlesh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
-
+
this.subtype.add(SubType.WALL);
this.power = new MageInt(2);
this.toughness = new MageInt(4);
@@ -83,7 +83,7 @@ public class WallOfPutridFlesh extends CardImpl {
class PreventDamageToSourceByEnchantedCreatures extends PreventAllDamageToSourceEffect {
- public PreventDamageToSourceByEnchantedCreatures(){
+ public PreventDamageToSourceByEnchantedCreatures() {
super(Duration.WhileOnBattlefield);
}
@@ -100,10 +100,10 @@ class PreventDamageToSourceByEnchantedCreatures extends PreventAllDamageToSource
}
public boolean isEnchantedCreature(MageObject input, Game game) {
- if (input != null && !input.isCreature()) {
+ if (input == null || input.isCreature()) {
return false;
}
- for (UUID attachmentId : ((Permanent)input).getAttachments()) {
+ for (UUID attachmentId : ((Permanent) input).getAttachments()) {
Permanent attachment = game.getPermanent(attachmentId);
if (attachment != null && attachment.isEnchantment()) {
return true;
diff --git a/Mage.Sets/src/mage/cards/w/WallOfRazors.java b/Mage.Sets/src/mage/cards/w/WallOfRazors.java
index f710470ce35..886026d787b 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfRazors.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfRazors.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WallOfRazors extends CardImpl {
+public final class WallOfRazors extends CardImpl {
public WallOfRazors(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfResurgence.java b/Mage.Sets/src/mage/cards/w/WallOfResurgence.java
index cdea9ebfc16..53c7c8f5755 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfResurgence.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfResurgence.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class WallOfResurgence extends CardImpl {
+public final class WallOfResurgence extends CardImpl {
public WallOfResurgence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfReverence.java b/Mage.Sets/src/mage/cards/w/WallOfReverence.java
index 4cf84f8857a..67e2fd9e3a5 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfReverence.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfReverence.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Loki
*/
-public class WallOfReverence extends CardImpl {
+public final class WallOfReverence extends CardImpl {
public WallOfReverence (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfRoots.java b/Mage.Sets/src/mage/cards/w/WallOfRoots.java
index 2c56adb9a1b..75453f602b0 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfRoots.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfRoots.java
@@ -45,7 +45,7 @@ import mage.counters.BoostCounter;
*
* @author North
*/
-public class WallOfRoots extends CardImpl {
+public final class WallOfRoots extends CardImpl {
public WallOfRoots(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfShards.java b/Mage.Sets/src/mage/cards/w/WallOfShards.java
index 3f27042b371..73972dc6c48 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfShards.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfShards.java
@@ -43,7 +43,7 @@ import mage.constants.SuperType;
*
* @author klayhamn
*/
-public class WallOfShards extends CardImpl {
+public final class WallOfShards extends CardImpl {
public WallOfShards(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfShields.java b/Mage.Sets/src/mage/cards/w/WallOfShields.java
index 2d3a6737568..4bee6e8dc6d 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfShields.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfShields.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class WallOfShields extends CardImpl {
+public final class WallOfShields extends CardImpl {
public WallOfShields (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfSouls.java b/Mage.Sets/src/mage/cards/w/WallOfSouls.java
index 814c50c9c08..4aa70b86003 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfSouls.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfSouls.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author fireshoes
*/
-public class WallOfSouls extends CardImpl {
+public final class WallOfSouls extends CardImpl {
public WallOfSouls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfSpears.java b/Mage.Sets/src/mage/cards/w/WallOfSpears.java
index b5dd7663b17..9cd64efe724 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfSpears.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfSpears.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WallOfSpears extends CardImpl {
+public final class WallOfSpears extends CardImpl {
public WallOfSpears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfStone.java b/Mage.Sets/src/mage/cards/w/WallOfStone.java
index 412a3b4d830..aa9a9e127e3 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfStone.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfStone.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WallOfStone extends CardImpl {
+public final class WallOfStone extends CardImpl {
public WallOfStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfSwords.java b/Mage.Sets/src/mage/cards/w/WallOfSwords.java
index b5ba6375696..07a434d3af9 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfSwords.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfSwords.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WallOfSwords extends CardImpl {
+public final class WallOfSwords extends CardImpl {
public WallOfSwords(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfTanglecord.java b/Mage.Sets/src/mage/cards/w/WallOfTanglecord.java
index d781b850dc1..97be3215dcc 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfTanglecord.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfTanglecord.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class WallOfTanglecord extends CardImpl {
+public final class WallOfTanglecord extends CardImpl {
public WallOfTanglecord (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfTears.java b/Mage.Sets/src/mage/cards/w/WallOfTears.java
index 0f0a25006da..3ec05bd2f85 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfTears.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfTears.java
@@ -44,7 +44,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WallOfTears extends CardImpl {
+public final class WallOfTears extends CardImpl {
public WallOfTears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfTorches.java b/Mage.Sets/src/mage/cards/w/WallOfTorches.java
index e1240552dde..b1536112072 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfTorches.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfTorches.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class WallOfTorches extends CardImpl {
+public final class WallOfTorches extends CardImpl {
public WallOfTorches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfVapor.java b/Mage.Sets/src/mage/cards/w/WallOfVapor.java
index cd7fbe24469..1fd2f111644 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfVapor.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfVapor.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author L_J
*/
-public class WallOfVapor extends CardImpl {
+public final class WallOfVapor extends CardImpl {
public WallOfVapor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfVines.java b/Mage.Sets/src/mage/cards/w/WallOfVines.java
index 87d8c5eb1db..bd02342a1c1 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfVines.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfVines.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WallOfVines extends CardImpl {
+public final class WallOfVines extends CardImpl {
public WallOfVines(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfVipers.java b/Mage.Sets/src/mage/cards/w/WallOfVipers.java
index 00dbc28da6c..f76a5d0d355 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfVipers.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfVipers.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author L_J
*/
-public class WallOfVipers extends CardImpl {
+public final class WallOfVipers extends CardImpl {
public WallOfVipers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfWater.java b/Mage.Sets/src/mage/cards/w/WallOfWater.java
index 799ca616f43..de7c77426b9 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfWater.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfWater.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author KholdFuzion
*/
-public class WallOfWater extends CardImpl {
+public final class WallOfWater extends CardImpl {
public WallOfWater(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfWonder.java b/Mage.Sets/src/mage/cards/w/WallOfWonder.java
index 7479d5ad435..16d9580f297 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfWonder.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfWonder.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class WallOfWonder extends CardImpl {
+public final class WallOfWonder extends CardImpl {
public WallOfWonder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WallOfWood.java b/Mage.Sets/src/mage/cards/w/WallOfWood.java
index 04e02f5dccd..2561ab65bc3 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfWood.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfWood.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WallOfWood extends CardImpl {
+public final class WallOfWood extends CardImpl {
public WallOfWood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/Wallop.java b/Mage.Sets/src/mage/cards/w/Wallop.java
index 58cb9a5dc71..39688f4463b 100644
--- a/Mage.Sets/src/mage/cards/w/Wallop.java
+++ b/Mage.Sets/src/mage/cards/w/Wallop.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class Wallop extends CardImpl {
+public final class Wallop extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue or black creature with flying");
diff --git a/Mage.Sets/src/mage/cards/w/WandOfDenial.java b/Mage.Sets/src/mage/cards/w/WandOfDenial.java
index 531581c8b03..61d6c419537 100644
--- a/Mage.Sets/src/mage/cards/w/WandOfDenial.java
+++ b/Mage.Sets/src/mage/cards/w/WandOfDenial.java
@@ -48,7 +48,7 @@ import mage.target.TargetPlayer;
*
* @author Quercitron
*/
-public class WandOfDenial extends CardImpl {
+public final class WandOfDenial extends CardImpl {
public WandOfDenial(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/w/WandOfIth.java b/Mage.Sets/src/mage/cards/w/WandOfIth.java
index 0cece3ab77a..61c539a4cac 100644
--- a/Mage.Sets/src/mage/cards/w/WandOfIth.java
+++ b/Mage.Sets/src/mage/cards/w/WandOfIth.java
@@ -52,7 +52,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes & L_J
*/
-public class WandOfIth extends CardImpl {
+public final class WandOfIth extends CardImpl {
public WandOfIth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/w/WandOfTheElements.java b/Mage.Sets/src/mage/cards/w/WandOfTheElements.java
index 4c3ad4fe03a..b24c256dde3 100644
--- a/Mage.Sets/src/mage/cards/w/WandOfTheElements.java
+++ b/Mage.Sets/src/mage/cards/w/WandOfTheElements.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
-public class WandOfTheElements extends CardImpl {
+public final class WandOfTheElements extends CardImpl {
private static final FilterControlledPermanent islandFilter = new FilterControlledPermanent("an Island");
private static final FilterControlledPermanent mountainFilter = new FilterControlledPermanent("a Mountain");
diff --git a/Mage.Sets/src/mage/cards/w/WanderInDeath.java b/Mage.Sets/src/mage/cards/w/WanderInDeath.java
index d1c4da4aaa7..c75a5cce22a 100644
--- a/Mage.Sets/src/mage/cards/w/WanderInDeath.java
+++ b/Mage.Sets/src/mage/cards/w/WanderInDeath.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author anonymous
*/
-public class WanderInDeath extends CardImpl {
+public final class WanderInDeath extends CardImpl {
public WanderInDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WanderbrineRootcutters.java b/Mage.Sets/src/mage/cards/w/WanderbrineRootcutters.java
index 00d647fadd6..f5429fd1ac4 100644
--- a/Mage.Sets/src/mage/cards/w/WanderbrineRootcutters.java
+++ b/Mage.Sets/src/mage/cards/w/WanderbrineRootcutters.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class WanderbrineRootcutters extends CardImpl {
+public final class WanderbrineRootcutters extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creatures");
diff --git a/Mage.Sets/src/mage/cards/w/WanderersTwig.java b/Mage.Sets/src/mage/cards/w/WanderersTwig.java
index f756f2884c2..c6ab417259e 100644
--- a/Mage.Sets/src/mage/cards/w/WanderersTwig.java
+++ b/Mage.Sets/src/mage/cards/w/WanderersTwig.java
@@ -45,14 +45,14 @@ import java.util.UUID;
*
* @author Loki
*/
-public class WanderersTwig extends CardImpl {
+public final class WanderersTwig extends CardImpl {
public WanderersTwig(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
// {1}, Sacrifice Wanderer's Twig: Search your library for a basic land card, reveal it, and put it into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new GenericManaCost(1));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/w/WanderguardSentry.java b/Mage.Sets/src/mage/cards/w/WanderguardSentry.java
index 92d66899cda..eb165bf0198 100644
--- a/Mage.Sets/src/mage/cards/w/WanderguardSentry.java
+++ b/Mage.Sets/src/mage/cards/w/WanderguardSentry.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author dustinconrad
*/
-public class WanderguardSentry extends CardImpl {
+public final class WanderguardSentry extends CardImpl {
public WanderguardSentry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WanderingChampion.java b/Mage.Sets/src/mage/cards/w/WanderingChampion.java
index 38685fc8f85..f7257346b3c 100644
--- a/Mage.Sets/src/mage/cards/w/WanderingChampion.java
+++ b/Mage.Sets/src/mage/cards/w/WanderingChampion.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author LevelX2
*/
-public class WanderingChampion extends CardImpl {
+public final class WanderingChampion extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("green permanent");
diff --git a/Mage.Sets/src/mage/cards/w/WanderingEye.java b/Mage.Sets/src/mage/cards/w/WanderingEye.java
index eb84f38722f..2727ff09c8a 100644
--- a/Mage.Sets/src/mage/cards/w/WanderingEye.java
+++ b/Mage.Sets/src/mage/cards/w/WanderingEye.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class WanderingEye extends CardImpl {
+public final class WanderingEye extends CardImpl {
public WanderingEye(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WanderingFumarole.java b/Mage.Sets/src/mage/cards/w/WanderingFumarole.java
index 1305ef7035e..d363af6b5ae 100644
--- a/Mage.Sets/src/mage/cards/w/WanderingFumarole.java
+++ b/Mage.Sets/src/mage/cards/w/WanderingFumarole.java
@@ -50,7 +50,7 @@ import mage.game.permanent.token.Token;
*
* @author fireshoes
*/
-public class WanderingFumarole extends CardImpl {
+public final class WanderingFumarole extends CardImpl {
public WanderingFumarole(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/w/WanderingGoblins.java b/Mage.Sets/src/mage/cards/w/WanderingGoblins.java
index 5a308ffa52f..bf683b0f725 100644
--- a/Mage.Sets/src/mage/cards/w/WanderingGoblins.java
+++ b/Mage.Sets/src/mage/cards/w/WanderingGoblins.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class WanderingGoblins extends CardImpl {
+public final class WanderingGoblins extends CardImpl {
public WanderingGoblins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WanderingGraybeard.java b/Mage.Sets/src/mage/cards/w/WanderingGraybeard.java
index 314943ba5d7..e512630be5d 100644
--- a/Mage.Sets/src/mage/cards/w/WanderingGraybeard.java
+++ b/Mage.Sets/src/mage/cards/w/WanderingGraybeard.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WanderingGraybeard extends CardImpl {
+public final class WanderingGraybeard extends CardImpl {
public WanderingGraybeard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WanderingMage.java b/Mage.Sets/src/mage/cards/w/WanderingMage.java
index 6120d27c9cb..8e957c3b87b 100644
--- a/Mage.Sets/src/mage/cards/w/WanderingMage.java
+++ b/Mage.Sets/src/mage/cards/w/WanderingMage.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class WanderingMage extends CardImpl {
+public final class WanderingMage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Cleric or Wizard");
diff --git a/Mage.Sets/src/mage/cards/w/WanderingOnes.java b/Mage.Sets/src/mage/cards/w/WanderingOnes.java
index 2da32188bc8..b2eafd16d39 100644
--- a/Mage.Sets/src/mage/cards/w/WanderingOnes.java
+++ b/Mage.Sets/src/mage/cards/w/WanderingOnes.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class WanderingOnes extends CardImpl {
+public final class WanderingOnes extends CardImpl {
public WanderingOnes (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WanderingStream.java b/Mage.Sets/src/mage/cards/w/WanderingStream.java
index f4f1a5b8db1..bb6d3b89dd5 100644
--- a/Mage.Sets/src/mage/cards/w/WanderingStream.java
+++ b/Mage.Sets/src/mage/cards/w/WanderingStream.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author LoneFox
*/
-public class WanderingStream extends CardImpl {
+public final class WanderingStream extends CardImpl {
public WanderingStream(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WanderingTombshell.java b/Mage.Sets/src/mage/cards/w/WanderingTombshell.java
index 1ddae7ea2a8..f3926b2f2a6 100644
--- a/Mage.Sets/src/mage/cards/w/WanderingTombshell.java
+++ b/Mage.Sets/src/mage/cards/w/WanderingTombshell.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class WanderingTombshell extends CardImpl {
+public final class WanderingTombshell extends CardImpl {
public WanderingTombshell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WanderingWolf.java b/Mage.Sets/src/mage/cards/w/WanderingWolf.java
index bc3bb9f7548..ba89bddb102 100644
--- a/Mage.Sets/src/mage/cards/w/WanderingWolf.java
+++ b/Mage.Sets/src/mage/cards/w/WanderingWolf.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class WanderingWolf extends CardImpl {
+public final class WanderingWolf extends CardImpl {
public WanderingWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/Wanderlust.java b/Mage.Sets/src/mage/cards/w/Wanderlust.java
index 8b58452d71e..0466e8ec47c 100644
--- a/Mage.Sets/src/mage/cards/w/Wanderlust.java
+++ b/Mage.Sets/src/mage/cards/w/Wanderlust.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Wanderlust extends CardImpl {
+public final class Wanderlust extends CardImpl {
public Wanderlust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WanderwineHub.java b/Mage.Sets/src/mage/cards/w/WanderwineHub.java
index b6ef395b7b6..704b1a991b1 100644
--- a/Mage.Sets/src/mage/cards/w/WanderwineHub.java
+++ b/Mage.Sets/src/mage/cards/w/WanderwineHub.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class WanderwineHub extends CardImpl {
+public final class WanderwineHub extends CardImpl {
private static final FilterCard filter = new FilterCard("a Merfolk card from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WanderwineProphets.java b/Mage.Sets/src/mage/cards/w/WanderwineProphets.java
index 0eaf95a4161..053f155b118 100644
--- a/Mage.Sets/src/mage/cards/w/WanderwineProphets.java
+++ b/Mage.Sets/src/mage/cards/w/WanderwineProphets.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class WanderwineProphets extends CardImpl {
+public final class WanderwineProphets extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Merfolk");
diff --git a/Mage.Sets/src/mage/cards/w/WaningWurm.java b/Mage.Sets/src/mage/cards/w/WaningWurm.java
index 066e867743a..f8dfe4ccdff 100644
--- a/Mage.Sets/src/mage/cards/w/WaningWurm.java
+++ b/Mage.Sets/src/mage/cards/w/WaningWurm.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class WaningWurm extends CardImpl {
+public final class WaningWurm extends CardImpl {
public WaningWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WantedScoundrels.java b/Mage.Sets/src/mage/cards/w/WantedScoundrels.java
index d46d6943c96..a5e05fcc89c 100644
--- a/Mage.Sets/src/mage/cards/w/WantedScoundrels.java
+++ b/Mage.Sets/src/mage/cards/w/WantedScoundrels.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class WantedScoundrels extends CardImpl {
+public final class WantedScoundrels extends CardImpl {
public WantedScoundrels(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WarBarge.java b/Mage.Sets/src/mage/cards/w/WarBarge.java
index 175cfb18e4c..066a080f12b 100644
--- a/Mage.Sets/src/mage/cards/w/WarBarge.java
+++ b/Mage.Sets/src/mage/cards/w/WarBarge.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class WarBarge extends CardImpl {
+public final class WarBarge extends CardImpl {
public WarBarge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/w/WarBehemoth.java b/Mage.Sets/src/mage/cards/w/WarBehemoth.java
index 892c067953b..343e1e1bf47 100644
--- a/Mage.Sets/src/mage/cards/w/WarBehemoth.java
+++ b/Mage.Sets/src/mage/cards/w/WarBehemoth.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WarBehemoth extends CardImpl {
+public final class WarBehemoth extends CardImpl {
public WarBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarCadence.java b/Mage.Sets/src/mage/cards/w/WarCadence.java
index 2a5f38d0f39..f7c9f3fe1d2 100644
--- a/Mage.Sets/src/mage/cards/w/WarCadence.java
+++ b/Mage.Sets/src/mage/cards/w/WarCadence.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WarCadence extends CardImpl {
+public final class WarCadence extends CardImpl {
public WarCadence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WarChariot.java b/Mage.Sets/src/mage/cards/w/WarChariot.java
index baafd3fd93d..c438b2b3a50 100644
--- a/Mage.Sets/src/mage/cards/w/WarChariot.java
+++ b/Mage.Sets/src/mage/cards/w/WarChariot.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WarChariot extends CardImpl {
+public final class WarChariot extends CardImpl {
public WarChariot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WarDance.java b/Mage.Sets/src/mage/cards/w/WarDance.java
index 93a920d3c15..ff1ded74f18 100644
--- a/Mage.Sets/src/mage/cards/w/WarDance.java
+++ b/Mage.Sets/src/mage/cards/w/WarDance.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class WarDance extends CardImpl {
+public final class WarDance extends CardImpl {
public WarDance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WarElemental.java b/Mage.Sets/src/mage/cards/w/WarElemental.java
index 520f7a8ec58..508d8bceee3 100644
--- a/Mage.Sets/src/mage/cards/w/WarElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WarElemental.java
@@ -52,7 +52,7 @@ import mage.watchers.common.BloodthirstWatcher;
*
* @author spjspj
*/
-public class WarElemental extends CardImpl {
+public final class WarElemental extends CardImpl {
public WarElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WarElephant.java b/Mage.Sets/src/mage/cards/w/WarElephant.java
index df15582a75d..e95d4a9396c 100644
--- a/Mage.Sets/src/mage/cards/w/WarElephant.java
+++ b/Mage.Sets/src/mage/cards/w/WarElephant.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class WarElephant extends CardImpl {
+public final class WarElephant extends CardImpl {
public WarElephant (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarFalcon.java b/Mage.Sets/src/mage/cards/w/WarFalcon.java
index 39a56ac9564..7192c0ab77b 100644
--- a/Mage.Sets/src/mage/cards/w/WarFalcon.java
+++ b/Mage.Sets/src/mage/cards/w/WarFalcon.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author jeffwadsworth
*/
-public class WarFalcon extends CardImpl {
+public final class WarFalcon extends CardImpl {
public WarFalcon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarFlare.java b/Mage.Sets/src/mage/cards/w/WarFlare.java
index c1a0a237144..df013ec40e4 100644
--- a/Mage.Sets/src/mage/cards/w/WarFlare.java
+++ b/Mage.Sets/src/mage/cards/w/WarFlare.java
@@ -40,7 +40,7 @@ import mage.filter.StaticFilters;
*
* @author fireshoes
*/
-public class WarFlare extends CardImpl {
+public final class WarFlare extends CardImpl {
public WarFlare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarHorn.java b/Mage.Sets/src/mage/cards/w/WarHorn.java
index af4432685de..f11d2c2d202 100644
--- a/Mage.Sets/src/mage/cards/w/WarHorn.java
+++ b/Mage.Sets/src/mage/cards/w/WarHorn.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterAttackingCreature;
* @author LoneFox
*/
-public class WarHorn extends CardImpl {
+public final class WarHorn extends CardImpl {
public WarHorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WarMammoth.java b/Mage.Sets/src/mage/cards/w/WarMammoth.java
index c32f6a9788d..4db274d79ae 100644
--- a/Mage.Sets/src/mage/cards/w/WarMammoth.java
+++ b/Mage.Sets/src/mage/cards/w/WarMammoth.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WarMammoth extends CardImpl {
+public final class WarMammoth extends CardImpl {
public WarMammoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WarNameAspirant.java b/Mage.Sets/src/mage/cards/w/WarNameAspirant.java
index a5c3e402594..0a312e31d89 100644
--- a/Mage.Sets/src/mage/cards/w/WarNameAspirant.java
+++ b/Mage.Sets/src/mage/cards/w/WarNameAspirant.java
@@ -49,7 +49,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author emerald000
*/
-public class WarNameAspirant extends CardImpl {
+public final class WarNameAspirant extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 1 or less");
diff --git a/Mage.Sets/src/mage/cards/w/WarOracle.java b/Mage.Sets/src/mage/cards/w/WarOracle.java
index b228fc62b47..52159d490ca 100644
--- a/Mage.Sets/src/mage/cards/w/WarOracle.java
+++ b/Mage.Sets/src/mage/cards/w/WarOracle.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WarOracle extends CardImpl {
+public final class WarOracle extends CardImpl {
public WarOracle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarPriestOfThune.java b/Mage.Sets/src/mage/cards/w/WarPriestOfThune.java
index 61301e8e835..88e9098f762 100644
--- a/Mage.Sets/src/mage/cards/w/WarPriestOfThune.java
+++ b/Mage.Sets/src/mage/cards/w/WarPriestOfThune.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WarPriestOfThune extends CardImpl {
+public final class WarPriestOfThune extends CardImpl {
public WarPriestOfThune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarReport.java b/Mage.Sets/src/mage/cards/w/WarReport.java
index 1e51bb533bd..4be45cfbcb4 100644
--- a/Mage.Sets/src/mage/cards/w/WarReport.java
+++ b/Mage.Sets/src/mage/cards/w/WarReport.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author North
*/
-public class WarReport extends CardImpl {
+public final class WarReport extends CardImpl {
public WarReport(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarSpikeChangeling.java b/Mage.Sets/src/mage/cards/w/WarSpikeChangeling.java
index 2f4241c6b0e..9384d020a5f 100644
--- a/Mage.Sets/src/mage/cards/w/WarSpikeChangeling.java
+++ b/Mage.Sets/src/mage/cards/w/WarSpikeChangeling.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class WarSpikeChangeling extends CardImpl {
+public final class WarSpikeChangeling extends CardImpl {
public WarSpikeChangeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WarTax.java b/Mage.Sets/src/mage/cards/w/WarTax.java
index a82625fd188..abe5a81193d 100644
--- a/Mage.Sets/src/mage/cards/w/WarTax.java
+++ b/Mage.Sets/src/mage/cards/w/WarTax.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author HCrescent & L_J
*/
-public class WarTax extends CardImpl {
+public final class WarTax extends CardImpl {
public WarTax(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java b/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java
index 6fd5cf2c7a5..c43b6a50d8b 100644
--- a/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java
+++ b/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class WarTorchGoblin extends CardImpl {
+public final class WarTorchGoblin extends CardImpl {
public WarTorchGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WarWingSiren.java b/Mage.Sets/src/mage/cards/w/WarWingSiren.java
index bd5d1daca64..935ca3e5221 100644
--- a/Mage.Sets/src/mage/cards/w/WarWingSiren.java
+++ b/Mage.Sets/src/mage/cards/w/WarWingSiren.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class WarWingSiren extends CardImpl {
+public final class WarWingSiren extends CardImpl {
public WarWingSiren(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WarbreakTrumpeter.java b/Mage.Sets/src/mage/cards/w/WarbreakTrumpeter.java
index 94e70a007e3..6a7c8043295 100644
--- a/Mage.Sets/src/mage/cards/w/WarbreakTrumpeter.java
+++ b/Mage.Sets/src/mage/cards/w/WarbreakTrumpeter.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.GoblinToken;
*
* @author fireshoes
*/
-public class WarbreakTrumpeter extends CardImpl {
+public final class WarbreakTrumpeter extends CardImpl {
public WarbreakTrumpeter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/w/Warbringer.java b/Mage.Sets/src/mage/cards/w/Warbringer.java
index 9b68dd4dc8f..831387b1acf 100644
--- a/Mage.Sets/src/mage/cards/w/Warbringer.java
+++ b/Mage.Sets/src/mage/cards/w/Warbringer.java
@@ -51,7 +51,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class Warbringer extends CardImpl {
+public final class Warbringer extends CardImpl {
public Warbringer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WarchanterOfMogis.java b/Mage.Sets/src/mage/cards/w/WarchanterOfMogis.java
index 2c92169220d..597038fc794 100644
--- a/Mage.Sets/src/mage/cards/w/WarchanterOfMogis.java
+++ b/Mage.Sets/src/mage/cards/w/WarchanterOfMogis.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class WarchanterOfMogis extends CardImpl {
+public final class WarchanterOfMogis extends CardImpl {
public WarchanterOfMogis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WarchiefGiant.java b/Mage.Sets/src/mage/cards/w/WarchiefGiant.java
index 332ab535821..a3357a646a3 100644
--- a/Mage.Sets/src/mage/cards/w/WarchiefGiant.java
+++ b/Mage.Sets/src/mage/cards/w/WarchiefGiant.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WarchiefGiant extends CardImpl {
+public final class WarchiefGiant extends CardImpl {
public WarchiefGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WarclampMastiff.java b/Mage.Sets/src/mage/cards/w/WarclampMastiff.java
index c999beb279c..e5a574c7d84 100644
--- a/Mage.Sets/src/mage/cards/w/WarclampMastiff.java
+++ b/Mage.Sets/src/mage/cards/w/WarclampMastiff.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WarclampMastiff extends CardImpl {
+public final class WarclampMastiff extends CardImpl {
public WarclampMastiff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarcryPhoenix.java b/Mage.Sets/src/mage/cards/w/WarcryPhoenix.java
index 48299c03523..9e91f6b1e18 100644
--- a/Mage.Sets/src/mage/cards/w/WarcryPhoenix.java
+++ b/Mage.Sets/src/mage/cards/w/WarcryPhoenix.java
@@ -1,80 +1,80 @@
-/*
- * 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.w;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.common.AttacksWithCreaturesTriggeredAbility;
-import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.DoIfCostPaid;
-import mage.abilities.effects.common.ReturnToBattlefieldUnderOwnerControlSourceEffect;
-import mage.abilities.keyword.FlyingAbility;
-import mage.abilities.keyword.HasteAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.SubType;
-import mage.constants.Zone;
-import mage.filter.StaticFilters;
-
-/**
- *
- * @author LevelX2
- */
-public class WarcryPhoenix extends CardImpl {
-
- public WarcryPhoenix(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
-
- this.subtype.add(SubType.PHOENIX);
- this.power = new MageInt(2);
- this.toughness = new MageInt(2);
-
- // Flying
- this.addAbility(FlyingAbility.getInstance());
-
- // Haste
- this.addAbility(HasteAbility.getInstance());
-
- // Whenever you attack with three or more creatures, you may pay {2}{R}. If you do, return Warcry Phoenix from your graveyard to the battlefield tapped and attacking.
- this.addAbility(new AttacksWithCreaturesTriggeredAbility(Zone.GRAVEYARD,
- new DoIfCostPaid(new ReturnToBattlefieldUnderOwnerControlSourceEffect(true, true, -1),
- new ManaCostsImpl("{2}{R}"))
- .setText("you may pay {2}{R}. If you do, return {this} from your graveyard to the battlefield tapped and attacking"),
- 3, StaticFilters.FILTER_PERMANENT_CREATURES));
- }
-
- public WarcryPhoenix(final WarcryPhoenix card) {
- super(card);
- }
-
- @Override
- public WarcryPhoenix copy() {
- return new WarcryPhoenix(this);
- }
-}
+/*
+ * 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.w;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.AttacksWithCreaturesTriggeredAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DoIfCostPaid;
+import mage.abilities.effects.common.ReturnToBattlefieldUnderOwnerControlSourceEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.abilities.keyword.HasteAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+import mage.constants.Zone;
+import mage.filter.StaticFilters;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class WarcryPhoenix extends CardImpl {
+
+ public WarcryPhoenix(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
+
+ this.subtype.add(SubType.PHOENIX);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // Haste
+ this.addAbility(HasteAbility.getInstance());
+
+ // Whenever you attack with three or more creatures, you may pay {2}{R}. If you do, return Warcry Phoenix from your graveyard to the battlefield tapped and attacking.
+ this.addAbility(new AttacksWithCreaturesTriggeredAbility(Zone.GRAVEYARD,
+ new DoIfCostPaid(new ReturnToBattlefieldUnderOwnerControlSourceEffect(true, true, -1),
+ new ManaCostsImpl("{2}{R}"))
+ .setText("you may pay {2}{R}. If you do, return {this} from your graveyard to the battlefield tapped and attacking"),
+ 3, StaticFilters.FILTER_PERMANENT_CREATURES));
+ }
+
+ public WarcryPhoenix(final WarcryPhoenix card) {
+ super(card);
+ }
+
+ @Override
+ public WarcryPhoenix copy() {
+ return new WarcryPhoenix(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/w/WardOfBones.java b/Mage.Sets/src/mage/cards/w/WardOfBones.java
index ca33b2b267c..182ee10d0cb 100644
--- a/Mage.Sets/src/mage/cards/w/WardOfBones.java
+++ b/Mage.Sets/src/mage/cards/w/WardOfBones.java
@@ -52,7 +52,7 @@ import java.util.UUID;
* @author jeffwadsworth
*
*/
-public class WardOfBones extends CardImpl {
+public final class WardOfBones extends CardImpl {
public WardOfBones(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/w/WardOfLights.java b/Mage.Sets/src/mage/cards/w/WardOfLights.java
index 95c3ab2e152..edae790650d 100644
--- a/Mage.Sets/src/mage/cards/w/WardOfLights.java
+++ b/Mage.Sets/src/mage/cards/w/WardOfLights.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WardOfLights extends CardImpl {
+public final class WardOfLights extends CardImpl {
public WardOfLights(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WardOfPiety.java b/Mage.Sets/src/mage/cards/w/WardOfPiety.java
index a959ef250e2..52a37c85370 100644
--- a/Mage.Sets/src/mage/cards/w/WardOfPiety.java
+++ b/Mage.Sets/src/mage/cards/w/WardOfPiety.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WardOfPiety extends CardImpl {
+public final class WardOfPiety extends CardImpl {
public WardOfPiety(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WardSliver.java b/Mage.Sets/src/mage/cards/w/WardSliver.java
index 5e5ef307ea6..2d0a86c87f9 100644
--- a/Mage.Sets/src/mage/cards/w/WardSliver.java
+++ b/Mage.Sets/src/mage/cards/w/WardSliver.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author cbt33, noxx (Riders of Gavony)
*/
-public class WardSliver extends CardImpl {
+public final class WardSliver extends CardImpl {
static FilterPermanent filter = new FilterPermanent("chosen color");
diff --git a/Mage.Sets/src/mage/cards/w/WardenOfEvosIsle.java b/Mage.Sets/src/mage/cards/w/WardenOfEvosIsle.java
index 0f4a59f770f..4ab3d48aed4 100644
--- a/Mage.Sets/src/mage/cards/w/WardenOfEvosIsle.java
+++ b/Mage.Sets/src/mage/cards/w/WardenOfEvosIsle.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class WardenOfEvosIsle extends CardImpl {
+public final class WardenOfEvosIsle extends CardImpl {
private static final FilterCard filter = new FilterCard("Creature spells with flying");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WardenOfGeometries.java b/Mage.Sets/src/mage/cards/w/WardenOfGeometries.java
index d150ae509c9..6de161948d5 100644
--- a/Mage.Sets/src/mage/cards/w/WardenOfGeometries.java
+++ b/Mage.Sets/src/mage/cards/w/WardenOfGeometries.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WardenOfGeometries extends CardImpl {
+public final class WardenOfGeometries extends CardImpl {
public WardenOfGeometries(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/w/WardenOfTheBeyond.java b/Mage.Sets/src/mage/cards/w/WardenOfTheBeyond.java
index 36cfc7129be..b1aeecd4c8c 100644
--- a/Mage.Sets/src/mage/cards/w/WardenOfTheBeyond.java
+++ b/Mage.Sets/src/mage/cards/w/WardenOfTheBeyond.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WardenOfTheBeyond extends CardImpl {
+public final class WardenOfTheBeyond extends CardImpl {
public WardenOfTheBeyond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WardenOfTheEye.java b/Mage.Sets/src/mage/cards/w/WardenOfTheEye.java
index 27f60350232..8e4c3d7bfaa 100644
--- a/Mage.Sets/src/mage/cards/w/WardenOfTheEye.java
+++ b/Mage.Sets/src/mage/cards/w/WardenOfTheEye.java
@@ -48,7 +48,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class WardenOfTheEye extends CardImpl {
+public final class WardenOfTheEye extends CardImpl {
private static final FilterCard filter = new FilterCard("noncreature, nonland card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/w/WardenOfTheFirstTree.java b/Mage.Sets/src/mage/cards/w/WardenOfTheFirstTree.java
index ddd3e3fbe57..05f8f30ae80 100644
--- a/Mage.Sets/src/mage/cards/w/WardenOfTheFirstTree.java
+++ b/Mage.Sets/src/mage/cards/w/WardenOfTheFirstTree.java
@@ -55,7 +55,7 @@ import mage.game.permanent.token.Token;
*
* @author LevelX2
*/
-public class WardenOfTheFirstTree extends CardImpl {
+public final class WardenOfTheFirstTree extends CardImpl {
private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent();
private static final FilterCreaturePermanent FILTER2 = new FilterCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/w/WardenOfTheWall.java b/Mage.Sets/src/mage/cards/w/WardenOfTheWall.java
index a85e4a47f11..00b0614776e 100644
--- a/Mage.Sets/src/mage/cards/w/WardenOfTheWall.java
+++ b/Mage.Sets/src/mage/cards/w/WardenOfTheWall.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.Token;
*
* @author BetaSteward
*/
-public class WardenOfTheWall extends CardImpl {
+public final class WardenOfTheWall extends CardImpl {
public WardenOfTheWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WardscaleDragon.java b/Mage.Sets/src/mage/cards/w/WardscaleDragon.java
index 839e8469aa2..59ad03fb2c3 100644
--- a/Mage.Sets/src/mage/cards/w/WardscaleDragon.java
+++ b/Mage.Sets/src/mage/cards/w/WardscaleDragon.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class WardscaleDragon extends CardImpl {
+public final class WardscaleDragon extends CardImpl {
public WardscaleDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarfireJavelineer.java b/Mage.Sets/src/mage/cards/w/WarfireJavelineer.java
index 2f689288597..0e82f0dcc56 100644
--- a/Mage.Sets/src/mage/cards/w/WarfireJavelineer.java
+++ b/Mage.Sets/src/mage/cards/w/WarfireJavelineer.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author anonymous
*/
-public class WarfireJavelineer extends CardImpl {
+public final class WarfireJavelineer extends CardImpl {
public WarfireJavelineer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/Wargate.java b/Mage.Sets/src/mage/cards/w/Wargate.java
index c3b7b95d105..233ee712e53 100644
--- a/Mage.Sets/src/mage/cards/w/Wargate.java
+++ b/Mage.Sets/src/mage/cards/w/Wargate.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterPermanentCard;
*
* @author Plopman
*/
-public class Wargate extends CardImpl {
+public final class Wargate extends CardImpl {
public Wargate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WarkiteMarauder.java b/Mage.Sets/src/mage/cards/w/WarkiteMarauder.java
index 00be360ec00..6c4ad8f8cdb 100644
--- a/Mage.Sets/src/mage/cards/w/WarkiteMarauder.java
+++ b/Mage.Sets/src/mage/cards/w/WarkiteMarauder.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WarkiteMarauder extends CardImpl {
+public final class WarkiteMarauder extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature defending player controls");
diff --git a/Mage.Sets/src/mage/cards/w/WarleadersHelix.java b/Mage.Sets/src/mage/cards/w/WarleadersHelix.java
index ff63fc1ef1e..60615194d81 100644
--- a/Mage.Sets/src/mage/cards/w/WarleadersHelix.java
+++ b/Mage.Sets/src/mage/cards/w/WarleadersHelix.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class WarleadersHelix extends CardImpl {
+public final class WarleadersHelix extends CardImpl {
public WarleadersHelix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarlordsAxe.java b/Mage.Sets/src/mage/cards/w/WarlordsAxe.java
index fdfaa17c1f3..4a561cbbdf3 100644
--- a/Mage.Sets/src/mage/cards/w/WarlordsAxe.java
+++ b/Mage.Sets/src/mage/cards/w/WarlordsAxe.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WarlordsAxe extends CardImpl {
+public final class WarlordsAxe extends CardImpl {
public WarlordsAxe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WarlordsFury.java b/Mage.Sets/src/mage/cards/w/WarlordsFury.java
index 215b9057788..999432e67cb 100644
--- a/Mage.Sets/src/mage/cards/w/WarlordsFury.java
+++ b/Mage.Sets/src/mage/cards/w/WarlordsFury.java
@@ -41,7 +41,7 @@ import mage.filter.StaticFilters;
*
* @author TheElk801
*/
-public class WarlordsFury extends CardImpl {
+public final class WarlordsFury extends CardImpl {
public WarlordsFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WarmindInfantry.java b/Mage.Sets/src/mage/cards/w/WarmindInfantry.java
index 12607b45f01..5227fd45674 100644
--- a/Mage.Sets/src/mage/cards/w/WarmindInfantry.java
+++ b/Mage.Sets/src/mage/cards/w/WarmindInfantry.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class WarmindInfantry extends CardImpl {
+public final class WarmindInfantry extends CardImpl {
public WarmindInfantry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/Warmonger.java b/Mage.Sets/src/mage/cards/w/Warmonger.java
index 50ef6a1afd2..092639f5575 100644
--- a/Mage.Sets/src/mage/cards/w/Warmonger.java
+++ b/Mage.Sets/src/mage/cards/w/Warmonger.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author fireshoes
*/
-public class Warmonger extends CardImpl {
+public final class Warmonger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WarmongerHellkite.java b/Mage.Sets/src/mage/cards/w/WarmongerHellkite.java
index 8ab50a35661..df2c44e3f1e 100644
--- a/Mage.Sets/src/mage/cards/w/WarmongerHellkite.java
+++ b/Mage.Sets/src/mage/cards/w/WarmongerHellkite.java
@@ -49,7 +49,7 @@ import mage.filter.common.FilterAttackingCreature;
*
* @author LevelX2
*/
-public class WarmongerHellkite extends CardImpl {
+public final class WarmongerHellkite extends CardImpl {
public WarmongerHellkite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WarmongersChariot.java b/Mage.Sets/src/mage/cards/w/WarmongersChariot.java
index 04328a54ab2..7f96bd49c4f 100644
--- a/Mage.Sets/src/mage/cards/w/WarmongersChariot.java
+++ b/Mage.Sets/src/mage/cards/w/WarmongersChariot.java
@@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
/**
* @author magenoxx_at_gmail.com
*/
-public class WarmongersChariot extends CardImpl {
+public final class WarmongersChariot extends CardImpl {
public WarmongersChariot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/w/Warmth.java b/Mage.Sets/src/mage/cards/w/Warmth.java
index 4cb62547174..f2f50d09c18 100644
--- a/Mage.Sets/src/mage/cards/w/Warmth.java
+++ b/Mage.Sets/src/mage/cards/w/Warmth.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Quercitron
*/
-public class Warmth extends CardImpl {
+public final class Warmth extends CardImpl {
private static final FilterSpell filter = new FilterSpell("red spell");
static {
diff --git a/Mage.Sets/src/mage/cards/w/Warning.java b/Mage.Sets/src/mage/cards/w/Warning.java
index ce237b1659d..21d2e670edd 100644
--- a/Mage.Sets/src/mage/cards/w/Warning.java
+++ b/Mage.Sets/src/mage/cards/w/Warning.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAttackingCreature;
*
* @author LoneFox
*/
-public class Warning extends CardImpl {
+public final class Warning extends CardImpl {
public Warning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarpArtifact.java b/Mage.Sets/src/mage/cards/w/WarpArtifact.java
index 6636e79634d..8bc3548d0fb 100644
--- a/Mage.Sets/src/mage/cards/w/WarpArtifact.java
+++ b/Mage.Sets/src/mage/cards/w/WarpArtifact.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LoneFox
*/
-public class WarpArtifact extends CardImpl {
+public final class WarpArtifact extends CardImpl {
public WarpArtifact(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WarpWorld.java b/Mage.Sets/src/mage/cards/w/WarpWorld.java
index ec4f7b8e66c..5deae2a8905 100644
--- a/Mage.Sets/src/mage/cards/w/WarpWorld.java
+++ b/Mage.Sets/src/mage/cards/w/WarpWorld.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author North
*/
-public class WarpWorld extends CardImpl {
+public final class WarpWorld extends CardImpl {
public WarpWorld(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/Warpath.java b/Mage.Sets/src/mage/cards/w/Warpath.java
index c48bcb5eabc..8a8eab15883 100644
--- a/Mage.Sets/src/mage/cards/w/Warpath.java
+++ b/Mage.Sets/src/mage/cards/w/Warpath.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.permanent.BlockingPredicate;
*
* @author L_J
*/
-public class Warpath extends CardImpl {
+public final class Warpath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blocking creature and each blocked creature");
diff --git a/Mage.Sets/src/mage/cards/w/WarpathGhoul.java b/Mage.Sets/src/mage/cards/w/WarpathGhoul.java
index 05e5839dc31..a4c0836a9a8 100644
--- a/Mage.Sets/src/mage/cards/w/WarpathGhoul.java
+++ b/Mage.Sets/src/mage/cards/w/WarpathGhoul.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class WarpathGhoul extends CardImpl {
+public final class WarpathGhoul extends CardImpl {
public WarpathGhoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WarpedDevotion.java b/Mage.Sets/src/mage/cards/w/WarpedDevotion.java
index d7530497b48..fef358fba0b 100644
--- a/Mage.Sets/src/mage/cards/w/WarpedDevotion.java
+++ b/Mage.Sets/src/mage/cards/w/WarpedDevotion.java
@@ -44,7 +44,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LoneFox
*/
-public class WarpedDevotion extends CardImpl {
+public final class WarpedDevotion extends CardImpl {
public WarpedDevotion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WarpedLandscape.java b/Mage.Sets/src/mage/cards/w/WarpedLandscape.java
index 5e08d2219f8..3ceb0625925 100644
--- a/Mage.Sets/src/mage/cards/w/WarpedLandscape.java
+++ b/Mage.Sets/src/mage/cards/w/WarpedLandscape.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class WarpedLandscape extends CardImpl {
+public final class WarpedLandscape extends CardImpl {
public WarpedLandscape(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
@@ -57,7 +57,7 @@ public class WarpedLandscape extends CardImpl {
// {2}, {T}, Sacrifice Warped Landscape: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new GenericManaCost(2));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/w/WarpedPhysique.java b/Mage.Sets/src/mage/cards/w/WarpedPhysique.java
index a014c0c9f63..f3440505ce6 100644
--- a/Mage.Sets/src/mage/cards/w/WarpedPhysique.java
+++ b/Mage.Sets/src/mage/cards/w/WarpedPhysique.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
-public class WarpedPhysique extends CardImpl {
+public final class WarpedPhysique extends CardImpl {
public WarpedPhysique(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WarpedResearcher.java b/Mage.Sets/src/mage/cards/w/WarpedResearcher.java
index 7b63919ce31..a430254fe58 100644
--- a/Mage.Sets/src/mage/cards/w/WarpedResearcher.java
+++ b/Mage.Sets/src/mage/cards/w/WarpedResearcher.java
@@ -45,7 +45,7 @@ import mage.constants.Duration;
*
* @author TheElk801
*/
-public class WarpedResearcher extends CardImpl {
+public final class WarpedResearcher extends CardImpl {
public WarpedResearcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WarpingWail.java b/Mage.Sets/src/mage/cards/w/WarpingWail.java
index c2fcc63ae8b..4424fee9f30 100644
--- a/Mage.Sets/src/mage/cards/w/WarpingWail.java
+++ b/Mage.Sets/src/mage/cards/w/WarpingWail.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WarpingWail extends CardImpl {
+public final class WarpingWail extends CardImpl {
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creature with power or toughness 1 or less");
private static final FilterSpell filterSorcery = new FilterSpell("sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/w/WarpingWurm.java b/Mage.Sets/src/mage/cards/w/WarpingWurm.java
new file mode 100644
index 00000000000..7deafdc69c0
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/w/WarpingWurm.java
@@ -0,0 +1,117 @@
+/*
+ * 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.w;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DoUnlessControllerPaysEffect;
+import mage.abilities.effects.common.PhaseOutSourceEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.constants.SubType;
+import mage.abilities.keyword.PhasingAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class WarpingWurm extends CardImpl {
+
+ public WarpingWurm(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{U}");
+
+ this.subtype.add(SubType.WURM);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Phasing
+ this.addAbility(PhasingAbility.getInstance());
+
+ // At the beginning of your upkeep, Warping Wurm phases out unless you pay {2}{G}{U}.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(
+ new DoUnlessControllerPaysEffect(
+ new PhaseOutSourceEffect(),
+ new ManaCostsImpl("{2}{G}{U}")
+ ).setText("{this} phases out unless you pay {2}{G}{U}"),
+ TargetController.YOU, false
+ ));
+
+ // When Warping Wurm phases in, put a +1/+1 counter on it.
+ this.addAbility(new WarpingWurmTriggeredAbility());
+ }
+
+ public WarpingWurm(final WarpingWurm card) {
+ super(card);
+ }
+
+ @Override
+ public WarpingWurm copy() {
+ return new WarpingWurm(this);
+ }
+}
+
+class WarpingWurmTriggeredAbility extends TriggeredAbilityImpl {
+
+ WarpingWurmTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
+ }
+
+ WarpingWurmTriggeredAbility(final WarpingWurmTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public WarpingWurmTriggeredAbility copy() {
+ return new WarpingWurmTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.PHASED_IN;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ return getSourceId().equals(event.getTargetId());
+ }
+
+ @Override
+ public String getRule() {
+ return "When {this} phases in, put a +1/+1 counter on it";
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/w/WarrenInstigator.java b/Mage.Sets/src/mage/cards/w/WarrenInstigator.java
index afc26696a57..91dfc61ddfd 100644
--- a/Mage.Sets/src/mage/cards/w/WarrenInstigator.java
+++ b/Mage.Sets/src/mage/cards/w/WarrenInstigator.java
@@ -30,7 +30,7 @@ package mage.cards.w;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.keyword.DoubleStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class WarrenInstigator extends CardImpl {
+public final class WarrenInstigator extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a Goblin creature card");
@@ -62,7 +62,7 @@ public class WarrenInstigator extends CardImpl {
this.addAbility(DoubleStrikeAbility.getInstance());
// Whenever Warren Instigator deals damage to an opponent, you may put a Goblin creature card from your hand onto the battlefield.
- this.addAbility(new DealsDamageToOpponentTriggeredAbility(new PutPermanentOnBattlefieldEffect(filter), false));
+ this.addAbility(new DealsDamageToOpponentTriggeredAbility(new PutCardFromHandOntoBattlefieldEffect(filter), false));
}
public WarrenInstigator(final WarrenInstigator card) {
diff --git a/Mage.Sets/src/mage/cards/w/WarrenPilferers.java b/Mage.Sets/src/mage/cards/w/WarrenPilferers.java
index d697e77fa12..371191c141b 100644
--- a/Mage.Sets/src/mage/cards/w/WarrenPilferers.java
+++ b/Mage.Sets/src/mage/cards/w/WarrenPilferers.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class WarrenPilferers extends CardImpl {
+public final class WarrenPilferers extends CardImpl {
public WarrenPilferers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WarrenScourgeElf.java b/Mage.Sets/src/mage/cards/w/WarrenScourgeElf.java
index d61bfa8c958..719970f10ac 100644
--- a/Mage.Sets/src/mage/cards/w/WarrenScourgeElf.java
+++ b/Mage.Sets/src/mage/cards/w/WarrenScourgeElf.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author North
*/
-public class WarrenScourgeElf extends CardImpl {
+public final class WarrenScourgeElf extends CardImpl {
private static final FilterCard filter = new FilterCard("Goblin");
diff --git a/Mage.Sets/src/mage/cards/w/WarrenWeirding.java b/Mage.Sets/src/mage/cards/w/WarrenWeirding.java
index 418a253265c..b77f4cb3e74 100644
--- a/Mage.Sets/src/mage/cards/w/WarrenWeirding.java
+++ b/Mage.Sets/src/mage/cards/w/WarrenWeirding.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class WarrenWeirding extends CardImpl {
+public final class WarrenWeirding extends CardImpl {
public WarrenWeirding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WarriorAngel.java b/Mage.Sets/src/mage/cards/w/WarriorAngel.java
index 2b9d9b3251f..15d560ddc91 100644
--- a/Mage.Sets/src/mage/cards/w/WarriorAngel.java
+++ b/Mage.Sets/src/mage/cards/w/WarriorAngel.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class WarriorAngel extends CardImpl {
+public final class WarriorAngel extends CardImpl {
public WarriorAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarriorEnKor.java b/Mage.Sets/src/mage/cards/w/WarriorEnKor.java
index fae063dc7e4..a41ded2fb93 100644
--- a/Mage.Sets/src/mage/cards/w/WarriorEnKor.java
+++ b/Mage.Sets/src/mage/cards/w/WarriorEnKor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class WarriorEnKor extends CardImpl {
+public final class WarriorEnKor extends CardImpl {
public WarriorEnKor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarriorsCharge.java b/Mage.Sets/src/mage/cards/w/WarriorsCharge.java
index efa953d45d1..05edb4382c1 100644
--- a/Mage.Sets/src/mage/cards/w/WarriorsCharge.java
+++ b/Mage.Sets/src/mage/cards/w/WarriorsCharge.java
@@ -38,7 +38,7 @@ import mage.constants.Duration;
*
* @author fireshoes
*/
-public class WarriorsCharge extends CardImpl {
+public final class WarriorsCharge extends CardImpl {
public WarriorsCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarriorsHonor.java b/Mage.Sets/src/mage/cards/w/WarriorsHonor.java
index 25b014072e8..48d9e990527 100644
--- a/Mage.Sets/src/mage/cards/w/WarriorsHonor.java
+++ b/Mage.Sets/src/mage/cards/w/WarriorsHonor.java
@@ -39,7 +39,7 @@ import mage.filter.StaticFilters;
*
* @author Loki
*/
-public class WarriorsHonor extends CardImpl {
+public final class WarriorsHonor extends CardImpl {
public WarriorsHonor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarriorsLesson.java b/Mage.Sets/src/mage/cards/w/WarriorsLesson.java
index 36fae9ff5f1..3aca55e191a 100644
--- a/Mage.Sets/src/mage/cards/w/WarriorsLesson.java
+++ b/Mage.Sets/src/mage/cards/w/WarriorsLesson.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WarriorsLesson extends CardImpl {
+public final class WarriorsLesson extends CardImpl {
public WarriorsLesson(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WarriorsOath.java b/Mage.Sets/src/mage/cards/w/WarriorsOath.java
index b5b6878a11c..f2fdc473383 100644
--- a/Mage.Sets/src/mage/cards/w/WarriorsOath.java
+++ b/Mage.Sets/src/mage/cards/w/WarriorsOath.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LoneFox
*/
-public class WarriorsOath extends CardImpl {
+public final class WarriorsOath extends CardImpl {
public WarriorsOath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WarriorsStand.java b/Mage.Sets/src/mage/cards/w/WarriorsStand.java
index 4b16188dd40..8d038f0e801 100644
--- a/Mage.Sets/src/mage/cards/w/WarriorsStand.java
+++ b/Mage.Sets/src/mage/cards/w/WarriorsStand.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerAttackedStepWatcher;
*
* @author L_J
*/
-public class WarriorsStand extends CardImpl {
+public final class WarriorsStand extends CardImpl {
public WarriorsStand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WarsToll.java b/Mage.Sets/src/mage/cards/w/WarsToll.java
index 9271aadc3db..ee1a3ef273b 100644
--- a/Mage.Sets/src/mage/cards/w/WarsToll.java
+++ b/Mage.Sets/src/mage/cards/w/WarsToll.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class WarsToll extends CardImpl {
+public final class WarsToll extends CardImpl {
private final static FilterCreaturePermanent filterOpponentCreature = new FilterCreaturePermanent("creature an opponent controls");
private final static FilterLandPermanent filterOpponentLand = new FilterLandPermanent("an opponent taps a land");
diff --git a/Mage.Sets/src/mage/cards/w/WarstormSurge.java b/Mage.Sets/src/mage/cards/w/WarstormSurge.java
index 368f5db6422..329c784c319 100644
--- a/Mage.Sets/src/mage/cards/w/WarstormSurge.java
+++ b/Mage.Sets/src/mage/cards/w/WarstormSurge.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author North
*/
-public class WarstormSurge extends CardImpl {
+public final class WarstormSurge extends CardImpl {
public WarstormSurge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/Warthog.java b/Mage.Sets/src/mage/cards/w/Warthog.java
index 493fbe73691..ea414f37220 100644
--- a/Mage.Sets/src/mage/cards/w/Warthog.java
+++ b/Mage.Sets/src/mage/cards/w/Warthog.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class Warthog extends CardImpl {
+public final class Warthog extends CardImpl {
public Warthog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WashOut.java b/Mage.Sets/src/mage/cards/w/WashOut.java
index 82597cc3f6e..b4e2ffc5d20 100644
--- a/Mage.Sets/src/mage/cards/w/WashOut.java
+++ b/Mage.Sets/src/mage/cards/w/WashOut.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WashOut extends CardImpl {
+public final class WashOut extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/w/WasitoraNekoruQueen.java b/Mage.Sets/src/mage/cards/w/WasitoraNekoruQueen.java
index 1a15867d24a..f56e6dbb153 100644
--- a/Mage.Sets/src/mage/cards/w/WasitoraNekoruQueen.java
+++ b/Mage.Sets/src/mage/cards/w/WasitoraNekoruQueen.java
@@ -53,7 +53,7 @@ import mage.target.TargetPermanent;
*
* @author spjspj
*/
-public class WasitoraNekoruQueen extends CardImpl {
+public final class WasitoraNekoruQueen extends CardImpl {
public WasitoraNekoruQueen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WaspLancer.java b/Mage.Sets/src/mage/cards/w/WaspLancer.java
index 0179e8c57f5..2821391c5af 100644
--- a/Mage.Sets/src/mage/cards/w/WaspLancer.java
+++ b/Mage.Sets/src/mage/cards/w/WaspLancer.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WaspLancer extends CardImpl {
+public final class WaspLancer extends CardImpl {
public WaspLancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U/B}{U/B}{U/B}");
diff --git a/Mage.Sets/src/mage/cards/w/WaspOfTheBitterEnd.java b/Mage.Sets/src/mage/cards/w/WaspOfTheBitterEnd.java
index 4b27b3c105d..ee5296a093e 100644
--- a/Mage.Sets/src/mage/cards/w/WaspOfTheBitterEnd.java
+++ b/Mage.Sets/src/mage/cards/w/WaspOfTheBitterEnd.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WaspOfTheBitterEnd extends CardImpl {
+public final class WaspOfTheBitterEnd extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a Bolas planeswalker spell");
diff --git a/Mage.Sets/src/mage/cards/w/WasteAway.java b/Mage.Sets/src/mage/cards/w/WasteAway.java
index 6ddd5713166..c1ecf844552 100644
--- a/Mage.Sets/src/mage/cards/w/WasteAway.java
+++ b/Mage.Sets/src/mage/cards/w/WasteAway.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WasteAway extends CardImpl {
+public final class WasteAway extends CardImpl {
public WasteAway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WasteNot.java b/Mage.Sets/src/mage/cards/w/WasteNot.java
index 58e7eabcfdb..5f10f2cf94d 100644
--- a/Mage.Sets/src/mage/cards/w/WasteNot.java
+++ b/Mage.Sets/src/mage/cards/w/WasteNot.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author emerald000
*/
-public class WasteNot extends CardImpl {
+public final class WasteNot extends CardImpl {
public WasteNot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/Wasteland.java b/Mage.Sets/src/mage/cards/w/Wasteland.java
index 7914a1ed8da..d91797901a8 100644
--- a/Mage.Sets/src/mage/cards/w/Wasteland.java
+++ b/Mage.Sets/src/mage/cards/w/Wasteland.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetNonBasicLandPermanent;
*
* @author Loki
*/
-public class Wasteland extends CardImpl {
+public final class Wasteland extends CardImpl {
public Wasteland(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
diff --git a/Mage.Sets/src/mage/cards/w/WastelandScorpion.java b/Mage.Sets/src/mage/cards/w/WastelandScorpion.java
index 6ba005dfb74..90781cb59cc 100644
--- a/Mage.Sets/src/mage/cards/w/WastelandScorpion.java
+++ b/Mage.Sets/src/mage/cards/w/WastelandScorpion.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class WastelandScorpion extends CardImpl {
+public final class WastelandScorpion extends CardImpl {
public WastelandScorpion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WastelandStrangler.java b/Mage.Sets/src/mage/cards/w/WastelandStrangler.java
index db508b337f7..2920b829879 100644
--- a/Mage.Sets/src/mage/cards/w/WastelandStrangler.java
+++ b/Mage.Sets/src/mage/cards/w/WastelandStrangler.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WastelandStrangler extends CardImpl {
+public final class WastelandStrangler extends CardImpl {
public WastelandStrangler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WastelandViper.java b/Mage.Sets/src/mage/cards/w/WastelandViper.java
index 6650028da4e..dec414b2057 100644
--- a/Mage.Sets/src/mage/cards/w/WastelandViper.java
+++ b/Mage.Sets/src/mage/cards/w/WastelandViper.java
@@ -44,7 +44,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class WastelandViper extends CardImpl {
+public final class WastelandViper extends CardImpl {
public WastelandViper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/Wastes.java b/Mage.Sets/src/mage/cards/w/Wastes.java
index c3c639e5b0e..89416104fd1 100644
--- a/Mage.Sets/src/mage/cards/w/Wastes.java
+++ b/Mage.Sets/src/mage/cards/w/Wastes.java
@@ -38,7 +38,7 @@ import mage.constants.SuperType;
*
* @author fireshoes
*/
-public class Wastes extends CardImpl {
+public final class Wastes extends CardImpl {
public Wastes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/w/Watchdog.java b/Mage.Sets/src/mage/cards/w/Watchdog.java
index 04458ff4118..33ea0feecff 100644
--- a/Mage.Sets/src/mage/cards/w/Watchdog.java
+++ b/Mage.Sets/src/mage/cards/w/Watchdog.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author Plopman
*/
-public class Watchdog extends CardImpl {
+public final class Watchdog extends CardImpl {
public Watchdog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WatcherInTheWeb.java b/Mage.Sets/src/mage/cards/w/WatcherInTheWeb.java
index ef98b924217..1b6c5a41959 100644
--- a/Mage.Sets/src/mage/cards/w/WatcherInTheWeb.java
+++ b/Mage.Sets/src/mage/cards/w/WatcherInTheWeb.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class WatcherInTheWeb extends CardImpl {
+public final class WatcherInTheWeb extends CardImpl {
public WatcherInTheWeb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WatcherOfTheRoost.java b/Mage.Sets/src/mage/cards/w/WatcherOfTheRoost.java
index 7bf7b738d37..a0b15908c48 100644
--- a/Mage.Sets/src/mage/cards/w/WatcherOfTheRoost.java
+++ b/Mage.Sets/src/mage/cards/w/WatcherOfTheRoost.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInHand;
*
* @author emerald000
*/
-public class WatcherOfTheRoost extends CardImpl {
+public final class WatcherOfTheRoost extends CardImpl {
private final static FilterCard filter = new FilterCard("a white card in your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WatcherSliver.java b/Mage.Sets/src/mage/cards/w/WatcherSliver.java
index f73c7de075a..37e24357e06 100644
--- a/Mage.Sets/src/mage/cards/w/WatcherSliver.java
+++ b/Mage.Sets/src/mage/cards/w/WatcherSliver.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author anonymous
*/
-public class WatcherSliver extends CardImpl {
+public final class WatcherSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java b/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java
index 0bd0af1137e..c1cc4d21155 100644
--- a/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java
@@ -50,7 +50,7 @@ import mage.util.CardUtil;
*
* @author jeffwadsworth
*/
-public class WatchersOfTheDead extends CardImpl {
+public final class WatchersOfTheDead extends CardImpl {
public WatchersOfTheDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/w/WatchfulAutomaton.java b/Mage.Sets/src/mage/cards/w/WatchfulAutomaton.java
index 7cf6541c93b..223b150c8a0 100644
--- a/Mage.Sets/src/mage/cards/w/WatchfulAutomaton.java
+++ b/Mage.Sets/src/mage/cards/w/WatchfulAutomaton.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class WatchfulAutomaton extends CardImpl {
+public final class WatchfulAutomaton extends CardImpl {
public WatchfulAutomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WatchfulNaga.java b/Mage.Sets/src/mage/cards/w/WatchfulNaga.java
index 69ac7279721..1b58e5d412d 100644
--- a/Mage.Sets/src/mage/cards/w/WatchfulNaga.java
+++ b/Mage.Sets/src/mage/cards/w/WatchfulNaga.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class WatchfulNaga extends CardImpl {
+public final class WatchfulNaga extends CardImpl {
public WatchfulNaga(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WatchwingScarecrow.java b/Mage.Sets/src/mage/cards/w/WatchwingScarecrow.java
index 1baf99da2c0..04b8eed810f 100644
--- a/Mage.Sets/src/mage/cards/w/WatchwingScarecrow.java
+++ b/Mage.Sets/src/mage/cards/w/WatchwingScarecrow.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class WatchwingScarecrow extends CardImpl {
+public final class WatchwingScarecrow extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a white creature");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("a blue creature");
diff --git a/Mage.Sets/src/mage/cards/w/Watchwolf.java b/Mage.Sets/src/mage/cards/w/Watchwolf.java
index abd6e5ea1a0..e40ba766e7d 100644
--- a/Mage.Sets/src/mage/cards/w/Watchwolf.java
+++ b/Mage.Sets/src/mage/cards/w/Watchwolf.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki, nantuko
*/
-public class Watchwolf extends CardImpl {
+public final class Watchwolf extends CardImpl {
public Watchwolf (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WaterElemental.java b/Mage.Sets/src/mage/cards/w/WaterElemental.java
index ca978d2371b..eb895d2dc27 100644
--- a/Mage.Sets/src/mage/cards/w/WaterElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WaterElemental.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WaterElemental extends CardImpl {
+public final class WaterElemental extends CardImpl {
public WaterElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WaterServant.java b/Mage.Sets/src/mage/cards/w/WaterServant.java
index a225606432a..62a522e92b3 100644
--- a/Mage.Sets/src/mage/cards/w/WaterServant.java
+++ b/Mage.Sets/src/mage/cards/w/WaterServant.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WaterServant extends CardImpl {
+public final class WaterServant extends CardImpl {
public WaterServant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WaterWurm.java b/Mage.Sets/src/mage/cards/w/WaterWurm.java
index c6e3aec0e6b..980871447a6 100644
--- a/Mage.Sets/src/mage/cards/w/WaterWurm.java
+++ b/Mage.Sets/src/mage/cards/w/WaterWurm.java
@@ -45,7 +45,7 @@ import mage.filter.FilterPermanent;
*
* @author fireshoes
*/
-public class WaterWurm extends CardImpl {
+public final class WaterWurm extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.ISLAND, "Island");
diff --git a/Mage.Sets/src/mage/cards/w/Watercourser.java b/Mage.Sets/src/mage/cards/w/Watercourser.java
index 0a1f0bd9567..1ef9ad85831 100644
--- a/Mage.Sets/src/mage/cards/w/Watercourser.java
+++ b/Mage.Sets/src/mage/cards/w/Watercourser.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class Watercourser extends CardImpl {
+public final class Watercourser extends CardImpl {
public Watercourser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WaterfrontBouncer.java b/Mage.Sets/src/mage/cards/w/WaterfrontBouncer.java
index 0b56bb35be4..b1ae7ef458a 100644
--- a/Mage.Sets/src/mage/cards/w/WaterfrontBouncer.java
+++ b/Mage.Sets/src/mage/cards/w/WaterfrontBouncer.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class WaterfrontBouncer extends CardImpl {
+public final class WaterfrontBouncer extends CardImpl {
public WaterfrontBouncer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/Waterknot.java b/Mage.Sets/src/mage/cards/w/Waterknot.java
index c94efca5bf6..61fc7652648 100644
--- a/Mage.Sets/src/mage/cards/w/Waterknot.java
+++ b/Mage.Sets/src/mage/cards/w/Waterknot.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki & L_J
*/
-public class Waterknot extends CardImpl {
+public final class Waterknot extends CardImpl {
public Waterknot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WaterspoutDjinn.java b/Mage.Sets/src/mage/cards/w/WaterspoutDjinn.java
index c81b338200d..5912d512aa8 100644
--- a/Mage.Sets/src/mage/cards/w/WaterspoutDjinn.java
+++ b/Mage.Sets/src/mage/cards/w/WaterspoutDjinn.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class WaterspoutDjinn extends CardImpl {
+public final class WaterspoutDjinn extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Island");
diff --git a/Mage.Sets/src/mage/cards/w/WaterspoutElemental.java b/Mage.Sets/src/mage/cards/w/WaterspoutElemental.java
index f8abdd82729..136d311b165 100644
--- a/Mage.Sets/src/mage/cards/w/WaterspoutElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WaterspoutElemental.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LoneFox
*/
-public class WaterspoutElemental extends CardImpl {
+public final class WaterspoutElemental extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
diff --git a/Mage.Sets/src/mage/cards/w/WaterspoutWeavers.java b/Mage.Sets/src/mage/cards/w/WaterspoutWeavers.java
index da7eb7fd1ca..036fd867bb1 100644
--- a/Mage.Sets/src/mage/cards/w/WaterspoutWeavers.java
+++ b/Mage.Sets/src/mage/cards/w/WaterspoutWeavers.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author LevelX2
*/
-public class WaterspoutWeavers extends CardImpl {
+public final class WaterspoutWeavers extends CardImpl {
public WaterspoutWeavers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WatertrapWeaver.java b/Mage.Sets/src/mage/cards/w/WatertrapWeaver.java
index 703eb4ae9a5..30421457db0 100644
--- a/Mage.Sets/src/mage/cards/w/WatertrapWeaver.java
+++ b/Mage.Sets/src/mage/cards/w/WatertrapWeaver.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class WatertrapWeaver extends CardImpl {
+public final class WatertrapWeaver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/w/WaterveilCavern.java b/Mage.Sets/src/mage/cards/w/WaterveilCavern.java
index 049780b937a..0c03c67e07f 100644
--- a/Mage.Sets/src/mage/cards/w/WaterveilCavern.java
+++ b/Mage.Sets/src/mage/cards/w/WaterveilCavern.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class WaterveilCavern extends CardImpl {
+public final class WaterveilCavern extends CardImpl {
public WaterveilCavern(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/w/Waterwhirl.java b/Mage.Sets/src/mage/cards/w/Waterwhirl.java
index cdd12644a64..c0ebf00ef69 100644
--- a/Mage.Sets/src/mage/cards/w/Waterwhirl.java
+++ b/Mage.Sets/src/mage/cards/w/Waterwhirl.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Waterwhirl extends CardImpl {
+public final class Waterwhirl extends CardImpl {
public Waterwhirl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WateryGrave.java b/Mage.Sets/src/mage/cards/w/WateryGrave.java
index bf380072f04..fc1db2c3867 100644
--- a/Mage.Sets/src/mage/cards/w/WateryGrave.java
+++ b/Mage.Sets/src/mage/cards/w/WateryGrave.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WateryGrave extends CardImpl {
+public final class WateryGrave extends CardImpl {
public WateryGrave(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
diff --git a/Mage.Sets/src/mage/cards/w/WaveElemental.java b/Mage.Sets/src/mage/cards/w/WaveElemental.java
index a7a76f57290..15aa7ac4581 100644
--- a/Mage.Sets/src/mage/cards/w/WaveElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WaveElemental.java
@@ -49,7 +49,7 @@ import mage.target.TargetPermanent;
*
* @author TheElk801
*/
-public class WaveElemental extends CardImpl {
+public final class WaveElemental extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures without flying");
diff --git a/Mage.Sets/src/mage/cards/w/WaveOfIndifference.java b/Mage.Sets/src/mage/cards/w/WaveOfIndifference.java
index 08d61262a61..018d1703385 100644
--- a/Mage.Sets/src/mage/cards/w/WaveOfIndifference.java
+++ b/Mage.Sets/src/mage/cards/w/WaveOfIndifference.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class WaveOfIndifference extends CardImpl {
+public final class WaveOfIndifference extends CardImpl {
public WaveOfIndifference(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WaveOfReckoning.java b/Mage.Sets/src/mage/cards/w/WaveOfReckoning.java
index d681222a2f2..ee02f63296b 100644
--- a/Mage.Sets/src/mage/cards/w/WaveOfReckoning.java
+++ b/Mage.Sets/src/mage/cards/w/WaveOfReckoning.java
@@ -43,7 +43,7 @@ import mage.game.permanent.Permanent;
*
* @author fireshoes
*/
-public class WaveOfReckoning extends CardImpl {
+public final class WaveOfReckoning extends CardImpl {
public WaveOfReckoning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WaveOfTerror.java b/Mage.Sets/src/mage/cards/w/WaveOfTerror.java
index 53747b43666..334866a4244 100644
--- a/Mage.Sets/src/mage/cards/w/WaveOfTerror.java
+++ b/Mage.Sets/src/mage/cards/w/WaveOfTerror.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class WaveOfTerror extends CardImpl {
+public final class WaveOfTerror extends CardImpl {
public WaveOfTerror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WaveOfVitriol.java b/Mage.Sets/src/mage/cards/w/WaveOfVitriol.java
index ab3e0451085..c45ec1f3935 100644
--- a/Mage.Sets/src/mage/cards/w/WaveOfVitriol.java
+++ b/Mage.Sets/src/mage/cards/w/WaveOfVitriol.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class WaveOfVitriol extends CardImpl {
+public final class WaveOfVitriol extends CardImpl {
public WaveOfVitriol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{G}{G}");
@@ -125,7 +125,7 @@ class WaveOfVitriolEffect extends OneShotEffect {
Set playersToShuffle = new LinkedHashSet<>();
for (Map.Entry entry : sacrificedLands.entrySet()) {
if (entry.getKey().chooseUse(Outcome.PutLandInPlay, "Search your library for up to " + entry.getValue() + " basic lands?", source, game)) {
- TargetCardInLibrary target = new TargetCardInLibrary(0, entry.getValue(), StaticFilters.FILTER_BASIC_LAND_CARD);
+ TargetCardInLibrary target = new TargetCardInLibrary(0, entry.getValue(), StaticFilters.FILTER_CARD_BASIC_LAND);
if (entry.getKey().searchLibrary(target, game)) {
if (!target.getTargets().isEmpty()) {
toBattlefield.addAll(target.getTargets());
diff --git a/Mage.Sets/src/mage/cards/w/WaveWingElemental.java b/Mage.Sets/src/mage/cards/w/WaveWingElemental.java
index fa81b48bead..51964ab619b 100644
--- a/Mage.Sets/src/mage/cards/w/WaveWingElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WaveWingElemental.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class WaveWingElemental extends CardImpl {
+public final class WaveWingElemental extends CardImpl {
public WaveWingElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WavecrashTriton.java b/Mage.Sets/src/mage/cards/w/WavecrashTriton.java
index 1c28efe20b9..73ca6545c38 100644
--- a/Mage.Sets/src/mage/cards/w/WavecrashTriton.java
+++ b/Mage.Sets/src/mage/cards/w/WavecrashTriton.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WavecrashTriton extends CardImpl {
+public final class WavecrashTriton extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static{
diff --git a/Mage.Sets/src/mage/cards/w/WavesOfAggression.java b/Mage.Sets/src/mage/cards/w/WavesOfAggression.java
index 4d8e23c80d3..eeb368320ec 100644
--- a/Mage.Sets/src/mage/cards/w/WavesOfAggression.java
+++ b/Mage.Sets/src/mage/cards/w/WavesOfAggression.java
@@ -40,7 +40,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*
* @author anonymous
*/
-public class WavesOfAggression extends CardImpl {
+public final class WavesOfAggression extends CardImpl {
public WavesOfAggression(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R/W}{R/W}");
diff --git a/Mage.Sets/src/mage/cards/w/WaveskimmerAven.java b/Mage.Sets/src/mage/cards/w/WaveskimmerAven.java
index 243a57bf312..f51074d46d7 100644
--- a/Mage.Sets/src/mage/cards/w/WaveskimmerAven.java
+++ b/Mage.Sets/src/mage/cards/w/WaveskimmerAven.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class WaveskimmerAven extends CardImpl {
+public final class WaveskimmerAven extends CardImpl {
public WaveskimmerAven (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WaxWane.java b/Mage.Sets/src/mage/cards/w/WaxWane.java
index 5b0aa63310e..53c246da197 100644
--- a/Mage.Sets/src/mage/cards/w/WaxWane.java
+++ b/Mage.Sets/src/mage/cards/w/WaxWane.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LoneFox
*/
-public class WaxWane extends SplitCard {
+public final class WaxWane extends SplitCard {
public WaxWane(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}", "{W}", SpellAbilityType.SPLIT);
diff --git a/Mage.Sets/src/mage/cards/w/WaxingMoon.java b/Mage.Sets/src/mage/cards/w/WaxingMoon.java
index 2df2a789860..6289cd2e1cb 100644
--- a/Mage.Sets/src/mage/cards/w/WaxingMoon.java
+++ b/Mage.Sets/src/mage/cards/w/WaxingMoon.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WaxingMoon extends CardImpl {
+public final class WaxingMoon extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf you control");
diff --git a/Mage.Sets/src/mage/cards/w/WaxmaneBaku.java b/Mage.Sets/src/mage/cards/w/WaxmaneBaku.java
index bf7e380438d..7f3727851a1 100644
--- a/Mage.Sets/src/mage/cards/w/WaxmaneBaku.java
+++ b/Mage.Sets/src/mage/cards/w/WaxmaneBaku.java
@@ -56,7 +56,7 @@ import mage.target.TargetPermanent;
/**
* @author LevelX2
*/
-public class WaxmaneBaku extends CardImpl {
+public final class WaxmaneBaku extends CardImpl {
public WaxmaneBaku(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WayOfTheThief.java b/Mage.Sets/src/mage/cards/w/WayOfTheThief.java
index 9f146e75fac..526bc352e81 100644
--- a/Mage.Sets/src/mage/cards/w/WayOfTheThief.java
+++ b/Mage.Sets/src/mage/cards/w/WayOfTheThief.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class WayOfTheThief extends CardImpl {
+public final class WayOfTheThief extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Gate");
diff --git a/Mage.Sets/src/mage/cards/w/WayfarersBauble.java b/Mage.Sets/src/mage/cards/w/WayfarersBauble.java
index 1d219a10d00..8bf2343affe 100644
--- a/Mage.Sets/src/mage/cards/w/WayfarersBauble.java
+++ b/Mage.Sets/src/mage/cards/w/WayfarersBauble.java
@@ -46,14 +46,14 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class WayfarersBauble extends CardImpl {
+public final class WayfarersBauble extends CardImpl {
public WayfarersBauble(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
// {2}, {tap}, Sacrifice Wayfarer's Bauble: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD),true, true, Outcome.PutLandInPlay), new GenericManaCost(2));
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND),true, true, Outcome.PutLandInPlay), new GenericManaCost(2));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/w/WayfaringGiant.java b/Mage.Sets/src/mage/cards/w/WayfaringGiant.java
index 21171edd860..c8e9d50d170 100644
--- a/Mage.Sets/src/mage/cards/w/WayfaringGiant.java
+++ b/Mage.Sets/src/mage/cards/w/WayfaringGiant.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class WayfaringGiant extends CardImpl {
+public final class WayfaringGiant extends CardImpl {
public WayfaringGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WayfaringTemple.java b/Mage.Sets/src/mage/cards/w/WayfaringTemple.java
index a6346a12c6b..355415e5917 100644
--- a/Mage.Sets/src/mage/cards/w/WayfaringTemple.java
+++ b/Mage.Sets/src/mage/cards/w/WayfaringTemple.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class WayfaringTemple extends CardImpl {
+public final class WayfaringTemple extends CardImpl {
public WayfaringTemple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/Waylay.java b/Mage.Sets/src/mage/cards/w/Waylay.java
index 35672078daa..3a64c331049 100644
--- a/Mage.Sets/src/mage/cards/w/Waylay.java
+++ b/Mage.Sets/src/mage/cards/w/Waylay.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTargets;
*
* @author TheElk801
*/
-public class Waylay extends CardImpl {
+public final class Waylay extends CardImpl {
public Waylay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WaywardAngel.java b/Mage.Sets/src/mage/cards/w/WaywardAngel.java
index e722d1d66dc..f6d1bb1b422 100644
--- a/Mage.Sets/src/mage/cards/w/WaywardAngel.java
+++ b/Mage.Sets/src/mage/cards/w/WaywardAngel.java
@@ -56,7 +56,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author cbt33, Plopman (Archdemon of Unx)
*/
-public class WaywardAngel extends CardImpl {
+public final class WaywardAngel extends CardImpl {
public WaywardAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WaywardDisciple.java b/Mage.Sets/src/mage/cards/w/WaywardDisciple.java
index 061ad23ef63..dc1641a8ad8 100644
--- a/Mage.Sets/src/mage/cards/w/WaywardDisciple.java
+++ b/Mage.Sets/src/mage/cards/w/WaywardDisciple.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class WaywardDisciple extends CardImpl {
+public final class WaywardDisciple extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
diff --git a/Mage.Sets/src/mage/cards/w/WaywardGiant.java b/Mage.Sets/src/mage/cards/w/WaywardGiant.java
index 853d79594a6..18501d382ad 100644
--- a/Mage.Sets/src/mage/cards/w/WaywardGiant.java
+++ b/Mage.Sets/src/mage/cards/w/WaywardGiant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WaywardGiant extends CardImpl {
+public final class WaywardGiant extends CardImpl {
public WaywardGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WaywardServant.java b/Mage.Sets/src/mage/cards/w/WaywardServant.java
index cf8399284d8..6e151b0a648 100644
--- a/Mage.Sets/src/mage/cards/w/WaywardServant.java
+++ b/Mage.Sets/src/mage/cards/w/WaywardServant.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author jeffwadsworth
*/
-public class WaywardServant extends CardImpl {
+public final class WaywardServant extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Zombie");
diff --git a/Mage.Sets/src/mage/cards/w/WaywardSoul.java b/Mage.Sets/src/mage/cards/w/WaywardSoul.java
index 10a16ca2bae..186cb93a44a 100644
--- a/Mage.Sets/src/mage/cards/w/WaywardSoul.java
+++ b/Mage.Sets/src/mage/cards/w/WaywardSoul.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class WaywardSoul extends CardImpl {
+public final class WaywardSoul extends CardImpl {
public WaywardSoul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WaywardSwordtooth.java b/Mage.Sets/src/mage/cards/w/WaywardSwordtooth.java
index 1a3466b9b14..bb69db067af 100644
--- a/Mage.Sets/src/mage/cards/w/WaywardSwordtooth.java
+++ b/Mage.Sets/src/mage/cards/w/WaywardSwordtooth.java
@@ -1,77 +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.w;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.condition.common.CitysBlessingCondition;
-import mage.abilities.effects.common.combat.CantAttackBlockUnlessConditionSourceEffect;
-import mage.abilities.effects.common.continuous.PlayAdditionalLandsControllerEffect;
-import mage.abilities.keyword.AscendAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.SubType;
-import mage.constants.Zone;
-
-/**
- *
- * @author LevelX2
- */
-public class WaywardSwordtooth extends CardImpl {
-
- public WaywardSwordtooth(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
-
- this.subtype.add(SubType.DINOSAUR);
- this.power = new MageInt(5);
- this.toughness = new MageInt(5);
-
- // Ascend
- this.addAbility(new AscendAbility());
-
- // You may play an additional land on each of your turns.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
- new PlayAdditionalLandsControllerEffect(1, Duration.WhileOnBattlefield)));
-
- // Wayward Sawtooth can't attack or block unless you have the city's blessing.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackBlockUnlessConditionSourceEffect(CitysBlessingCondition.instance)));
-
- }
-
- public WaywardSwordtooth(final WaywardSwordtooth card) {
- super(card);
- }
-
- @Override
- public WaywardSwordtooth copy() {
- return new WaywardSwordtooth(this);
- }
-}
+/*
+ * 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.w;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.condition.common.CitysBlessingCondition;
+import mage.abilities.effects.common.combat.CantAttackBlockUnlessConditionSourceEffect;
+import mage.abilities.effects.common.continuous.PlayAdditionalLandsControllerEffect;
+import mage.abilities.keyword.AscendAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class WaywardSwordtooth extends CardImpl {
+
+ public WaywardSwordtooth(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
+
+ this.subtype.add(SubType.DINOSAUR);
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(5);
+
+ // Ascend
+ this.addAbility(new AscendAbility());
+
+ // You may play an additional land on each of your turns.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
+ new PlayAdditionalLandsControllerEffect(1, Duration.WhileOnBattlefield)));
+
+ // Wayward Sawtooth can't attack or block unless you have the city's blessing.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackBlockUnlessConditionSourceEffect(CitysBlessingCondition.instance)));
+
+ }
+
+ public WaywardSwordtooth(final WaywardSwordtooth card) {
+ super(card);
+ }
+
+ @Override
+ public WaywardSwordtooth copy() {
+ return new WaywardSwordtooth(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/w/Weakness.java b/Mage.Sets/src/mage/cards/w/Weakness.java
index ed89d952708..53a05bddc9a 100644
--- a/Mage.Sets/src/mage/cards/w/Weakness.java
+++ b/Mage.Sets/src/mage/cards/w/Weakness.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Weakness extends CardImpl {
+public final class Weakness extends CardImpl {
public Weakness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/w/Weakstone.java b/Mage.Sets/src/mage/cards/w/Weakstone.java
index 6acfe75ade3..4b8feafac3f 100644
--- a/Mage.Sets/src/mage/cards/w/Weakstone.java
+++ b/Mage.Sets/src/mage/cards/w/Weakstone.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.permanent.AttackingPredicate;
*
* @author anonymous
*/
-public class Weakstone extends CardImpl {
+public final class Weakstone extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creatures");
diff --git a/Mage.Sets/src/mage/cards/w/WeaponSurge.java b/Mage.Sets/src/mage/cards/w/WeaponSurge.java
index adbf9a4a5d9..b62ff3e42e4 100644
--- a/Mage.Sets/src/mage/cards/w/WeaponSurge.java
+++ b/Mage.Sets/src/mage/cards/w/WeaponSurge.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
-public class WeaponSurge extends CardImpl {
+public final class WeaponSurge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WeaponcraftEnthusiast.java b/Mage.Sets/src/mage/cards/w/WeaponcraftEnthusiast.java
index d659d16a44d..d5ce7d5fd44 100644
--- a/Mage.Sets/src/mage/cards/w/WeaponcraftEnthusiast.java
+++ b/Mage.Sets/src/mage/cards/w/WeaponcraftEnthusiast.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class WeaponcraftEnthusiast extends CardImpl {
+public final class WeaponcraftEnthusiast extends CardImpl {
public WeaponcraftEnthusiast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WeaponsTrainer.java b/Mage.Sets/src/mage/cards/w/WeaponsTrainer.java
index a2ee1278cc3..99129ad9418 100644
--- a/Mage.Sets/src/mage/cards/w/WeaponsTrainer.java
+++ b/Mage.Sets/src/mage/cards/w/WeaponsTrainer.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author fireshoes
*/
-public class WeaponsTrainer extends CardImpl {
+public final class WeaponsTrainer extends CardImpl {
private static final String rule = "Other creatures you control get +1/+0 as long as you control an Equipment.";
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an Equipment");
diff --git a/Mage.Sets/src/mage/cards/w/WearAway.java b/Mage.Sets/src/mage/cards/w/WearAway.java
index 9358aa6392c..4c056bbd8c5 100644
--- a/Mage.Sets/src/mage/cards/w/WearAway.java
+++ b/Mage.Sets/src/mage/cards/w/WearAway.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class WearAway extends CardImpl {
+public final class WearAway extends CardImpl {
public WearAway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WearTear.java b/Mage.Sets/src/mage/cards/w/WearTear.java
index 4a803ac26e2..e7ba9853000 100644
--- a/Mage.Sets/src/mage/cards/w/WearTear.java
+++ b/Mage.Sets/src/mage/cards/w/WearTear.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class WearTear extends SplitCard {
+public final class WearTear extends SplitCard {
public WearTear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}", "{W}", SpellAbilityType.SPLIT_FUSED);
diff --git a/Mage.Sets/src/mage/cards/w/WeatheredBodyguards.java b/Mage.Sets/src/mage/cards/w/WeatheredBodyguards.java
index e346bf6de83..317114d0098 100644
--- a/Mage.Sets/src/mage/cards/w/WeatheredBodyguards.java
+++ b/Mage.Sets/src/mage/cards/w/WeatheredBodyguards.java
@@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class WeatheredBodyguards extends CardImpl {
+public final class WeatheredBodyguards extends CardImpl {
public WeatheredBodyguards(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WeatheredWayfarer.java b/Mage.Sets/src/mage/cards/w/WeatheredWayfarer.java
index 1bb704cd68f..a4f1cdc8912 100644
--- a/Mage.Sets/src/mage/cards/w/WeatheredWayfarer.java
+++ b/Mage.Sets/src/mage/cards/w/WeatheredWayfarer.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class WeatheredWayfarer extends CardImpl {
+public final class WeatheredWayfarer extends CardImpl {
public WeatheredWayfarer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/w/Weatherlight.java b/Mage.Sets/src/mage/cards/w/Weatherlight.java
index 401b6586951..f6ac1a96672 100644
--- a/Mage.Sets/src/mage/cards/w/Weatherlight.java
+++ b/Mage.Sets/src/mage/cards/w/Weatherlight.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.HistoricPredicate;
*
* @author TheElk801
*/
-public class Weatherlight extends CardImpl {
+public final class Weatherlight extends CardImpl {
private static final FilterCard filter = new FilterCard("a historic card");
diff --git a/Mage.Sets/src/mage/cards/w/WeatherseedElf.java b/Mage.Sets/src/mage/cards/w/WeatherseedElf.java
index cc009d0e107..f0595aa2644 100644
--- a/Mage.Sets/src/mage/cards/w/WeatherseedElf.java
+++ b/Mage.Sets/src/mage/cards/w/WeatherseedElf.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class WeatherseedElf extends CardImpl {
+public final class WeatherseedElf extends CardImpl {
public WeatherseedElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WeatherseedFaeries.java b/Mage.Sets/src/mage/cards/w/WeatherseedFaeries.java
index 7d573ff57fc..a7d3cc9b810 100644
--- a/Mage.Sets/src/mage/cards/w/WeatherseedFaeries.java
+++ b/Mage.Sets/src/mage/cards/w/WeatherseedFaeries.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class WeatherseedFaeries extends CardImpl {
+public final class WeatherseedFaeries extends CardImpl {
public WeatherseedFaeries(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WeatherseedTotem.java b/Mage.Sets/src/mage/cards/w/WeatherseedTotem.java
index 4c52e7e2502..76b3f78b221 100644
--- a/Mage.Sets/src/mage/cards/w/WeatherseedTotem.java
+++ b/Mage.Sets/src/mage/cards/w/WeatherseedTotem.java
@@ -54,7 +54,7 @@ import mage.game.permanent.token.Token;
*
* @author TheElk801
*/
-public class WeatherseedTotem extends CardImpl {
+public final class WeatherseedTotem extends CardImpl {
public WeatherseedTotem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WeatherseedTreefolk.java b/Mage.Sets/src/mage/cards/w/WeatherseedTreefolk.java
index ee965e301b1..2087dde39bc 100644
--- a/Mage.Sets/src/mage/cards/w/WeatherseedTreefolk.java
+++ b/Mage.Sets/src/mage/cards/w/WeatherseedTreefolk.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class WeatherseedTreefolk extends CardImpl {
+public final class WeatherseedTreefolk extends CardImpl {
public WeatherseedTreefolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WeaveFate.java b/Mage.Sets/src/mage/cards/w/WeaveFate.java
index ebec4d529e1..bbde6d0487d 100644
--- a/Mage.Sets/src/mage/cards/w/WeaveFate.java
+++ b/Mage.Sets/src/mage/cards/w/WeaveFate.java
@@ -37,7 +37,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class WeaveFate extends CardImpl {
+public final class WeaveFate extends CardImpl {
public WeaveFate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WeaverOfCurrents.java b/Mage.Sets/src/mage/cards/w/WeaverOfCurrents.java
index 54fe91c4d3a..61305a918fa 100644
--- a/Mage.Sets/src/mage/cards/w/WeaverOfCurrents.java
+++ b/Mage.Sets/src/mage/cards/w/WeaverOfCurrents.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class WeaverOfCurrents extends CardImpl {
+public final class WeaverOfCurrents extends CardImpl {
public WeaverOfCurrents(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WeaverOfLies.java b/Mage.Sets/src/mage/cards/w/WeaverOfLies.java
index f43b4290401..c1e121a8160 100644
--- a/Mage.Sets/src/mage/cards/w/WeaverOfLies.java
+++ b/Mage.Sets/src/mage/cards/w/WeaverOfLies.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class WeaverOfLies extends CardImpl {
+public final class WeaverOfLies extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures with a morph ability");
diff --git a/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java b/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java
index 349f5ccb4aa..6a2ae33dfe4 100644
--- a/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java
+++ b/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WeaverOfLightning extends CardImpl {
+public final class WeaverOfLightning extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/w/Web.java b/Mage.Sets/src/mage/cards/w/Web.java
index bec44c6cfca..799854d11b7 100644
--- a/Mage.Sets/src/mage/cards/w/Web.java
+++ b/Mage.Sets/src/mage/cards/w/Web.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author KholdFuzion
*/
-public class Web extends CardImpl {
+public final class Web extends CardImpl {
public Web(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WebOfInertia.java b/Mage.Sets/src/mage/cards/w/WebOfInertia.java
index e8e5355db16..7887c9ad6b5 100644
--- a/Mage.Sets/src/mage/cards/w/WebOfInertia.java
+++ b/Mage.Sets/src/mage/cards/w/WebOfInertia.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Styxo
*/
-public class WebOfInertia extends CardImpl {
+public final class WebOfInertia extends CardImpl {
public WebOfInertia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WeeDragonauts.java b/Mage.Sets/src/mage/cards/w/WeeDragonauts.java
index 735518a1d51..2a2f7366e7d 100644
--- a/Mage.Sets/src/mage/cards/w/WeeDragonauts.java
+++ b/Mage.Sets/src/mage/cards/w/WeeDragonauts.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterInstantOrSorcerySpell;
/**
* @author Loki
*/
-public class WeeDragonauts extends CardImpl {
+public final class WeeDragonauts extends CardImpl {
public WeeDragonauts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WeedPrunerPoplar.java b/Mage.Sets/src/mage/cards/w/WeedPrunerPoplar.java
index 0c82575e42f..2b294324d63 100644
--- a/Mage.Sets/src/mage/cards/w/WeedPrunerPoplar.java
+++ b/Mage.Sets/src/mage/cards/w/WeedPrunerPoplar.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WeedPrunerPoplar extends CardImpl {
+public final class WeedPrunerPoplar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature other than {this}");
diff --git a/Mage.Sets/src/mage/cards/w/WeedStrangle.java b/Mage.Sets/src/mage/cards/w/WeedStrangle.java
index e1caa1b9eca..3817f6e512f 100644
--- a/Mage.Sets/src/mage/cards/w/WeedStrangle.java
+++ b/Mage.Sets/src/mage/cards/w/WeedStrangle.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WeedStrangle extends CardImpl {
+public final class WeedStrangle extends CardImpl {
public WeedStrangle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WeequayBeastmaster.java b/Mage.Sets/src/mage/cards/w/WeequayBeastmaster.java
index ca7dcc929ba..309c0019aba 100644
--- a/Mage.Sets/src/mage/cards/w/WeequayBeastmaster.java
+++ b/Mage.Sets/src/mage/cards/w/WeequayBeastmaster.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class WeequayBeastmaster extends CardImpl {
+public final class WeequayBeastmaster extends CardImpl {
public WeequayBeastmaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WeiAmbushForce.java b/Mage.Sets/src/mage/cards/w/WeiAmbushForce.java
index 229c8640902..2a9592d7fb1 100644
--- a/Mage.Sets/src/mage/cards/w/WeiAmbushForce.java
+++ b/Mage.Sets/src/mage/cards/w/WeiAmbushForce.java
@@ -41,7 +41,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class WeiAmbushForce extends CardImpl {
+public final class WeiAmbushForce extends CardImpl {
public WeiAmbushForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WeiAssassins.java b/Mage.Sets/src/mage/cards/w/WeiAssassins.java
index 282f9b0dc0f..4b7ff29ccf8 100644
--- a/Mage.Sets/src/mage/cards/w/WeiAssassins.java
+++ b/Mage.Sets/src/mage/cards/w/WeiAssassins.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
*
* @author TheElk801
*/
-public class WeiAssassins extends CardImpl {
+public final class WeiAssassins extends CardImpl {
public WeiAssassins(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WeiEliteCompanions.java b/Mage.Sets/src/mage/cards/w/WeiEliteCompanions.java
index 0fbd3e64fd7..1ebbe655078 100644
--- a/Mage.Sets/src/mage/cards/w/WeiEliteCompanions.java
+++ b/Mage.Sets/src/mage/cards/w/WeiEliteCompanions.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WeiEliteCompanions extends CardImpl {
+public final class WeiEliteCompanions extends CardImpl {
public WeiEliteCompanions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WeiInfantry.java b/Mage.Sets/src/mage/cards/w/WeiInfantry.java
index a9db729b589..f53ab8076f8 100644
--- a/Mage.Sets/src/mage/cards/w/WeiInfantry.java
+++ b/Mage.Sets/src/mage/cards/w/WeiInfantry.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WeiInfantry extends CardImpl {
+public final class WeiInfantry extends CardImpl {
public WeiInfantry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WeiNightRaiders.java b/Mage.Sets/src/mage/cards/w/WeiNightRaiders.java
index ea37830a4d7..d394f0e0164 100644
--- a/Mage.Sets/src/mage/cards/w/WeiNightRaiders.java
+++ b/Mage.Sets/src/mage/cards/w/WeiNightRaiders.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WeiNightRaiders extends CardImpl {
+public final class WeiNightRaiders extends CardImpl {
public WeiNightRaiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WeiScout.java b/Mage.Sets/src/mage/cards/w/WeiScout.java
index 10fb441c5d1..520839134dc 100644
--- a/Mage.Sets/src/mage/cards/w/WeiScout.java
+++ b/Mage.Sets/src/mage/cards/w/WeiScout.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WeiScout extends CardImpl {
+public final class WeiScout extends CardImpl {
public WeiScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WeiStrikeForce.java b/Mage.Sets/src/mage/cards/w/WeiStrikeForce.java
index 8ee51f3477a..c978e4b8410 100644
--- a/Mage.Sets/src/mage/cards/w/WeiStrikeForce.java
+++ b/Mage.Sets/src/mage/cards/w/WeiStrikeForce.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WeiStrikeForce extends CardImpl {
+public final class WeiStrikeForce extends CardImpl {
public WeiStrikeForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WeightOfConscience.java b/Mage.Sets/src/mage/cards/w/WeightOfConscience.java
index 36b54970e41..4941ca80f55 100644
--- a/Mage.Sets/src/mage/cards/w/WeightOfConscience.java
+++ b/Mage.Sets/src/mage/cards/w/WeightOfConscience.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000
*/
-public class WeightOfConscience extends CardImpl {
+public final class WeightOfConscience extends CardImpl {
public WeightOfConscience(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WeightOfMemory.java b/Mage.Sets/src/mage/cards/w/WeightOfMemory.java
index 6a4b409f652..ffcb88bd85b 100644
--- a/Mage.Sets/src/mage/cards/w/WeightOfMemory.java
+++ b/Mage.Sets/src/mage/cards/w/WeightOfMemory.java
@@ -40,7 +40,7 @@ import java.util.UUID;
*
* @author rscoates
*/
-public class WeightOfMemory extends CardImpl {
+public final class WeightOfMemory extends CardImpl {
public WeightOfMemory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WeightOfSpires.java b/Mage.Sets/src/mage/cards/w/WeightOfSpires.java
new file mode 100644
index 00000000000..c60dbf9db7e
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/w/WeightOfSpires.java
@@ -0,0 +1,97 @@
+/*
+ * 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.w;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.filter.StaticFilters;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class WeightOfSpires extends CardImpl {
+
+ public WeightOfSpires(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
+
+ // Weight of Spires deals damage to target creature equal to the number of nonbasic lands that creature's controller controls.
+ this.getSpellAbility().addEffect(new WeightOfSpiresEffect());
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent());
+ }
+
+ public WeightOfSpires(final WeightOfSpires card) {
+ super(card);
+ }
+
+ @Override
+ public WeightOfSpires copy() {
+ return new WeightOfSpires(this);
+ }
+}
+
+class WeightOfSpiresEffect extends OneShotEffect {
+
+ WeightOfSpiresEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "{this} deals damage to target creature equal to the number of nonbasic lands that creature's controller controls";
+ }
+
+ WeightOfSpiresEffect(final WeightOfSpiresEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public WeightOfSpiresEffect copy() {
+ return new WeightOfSpiresEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent creature = game.getPermanent(source.getFirstTarget());
+ if (creature == null) {
+ return false;
+ }
+ Player player = game.getPlayer(creature.getControllerId());
+ if (player == null) {
+ return false;
+ }
+ int damage = game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_LANDS_NONBASIC, player.getId(), game).size();
+ return new DamageTargetEffect(damage).apply(game, source);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/w/WeightOfTheUnderworld.java b/Mage.Sets/src/mage/cards/w/WeightOfTheUnderworld.java
index c3eec97a2e1..42f5a1a7c7e 100644
--- a/Mage.Sets/src/mage/cards/w/WeightOfTheUnderworld.java
+++ b/Mage.Sets/src/mage/cards/w/WeightOfTheUnderworld.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WeightOfTheUnderworld extends CardImpl {
+public final class WeightOfTheUnderworld extends CardImpl {
public WeightOfTheUnderworld(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WeirdHarvest.java b/Mage.Sets/src/mage/cards/w/WeirdHarvest.java
index c0af8adbf05..be0eda9bcd7 100644
--- a/Mage.Sets/src/mage/cards/w/WeirdHarvest.java
+++ b/Mage.Sets/src/mage/cards/w/WeirdHarvest.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class WeirdHarvest extends CardImpl {
+public final class WeirdHarvest extends CardImpl {
public WeirdHarvest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WeirdedVampire.java b/Mage.Sets/src/mage/cards/w/WeirdedVampire.java
index e78de516d34..e96b7c28eaa 100644
--- a/Mage.Sets/src/mage/cards/w/WeirdedVampire.java
+++ b/Mage.Sets/src/mage/cards/w/WeirdedVampire.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WeirdedVampire extends CardImpl {
+public final class WeirdedVampire extends CardImpl {
public WeirdedVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WeirdingShaman.java b/Mage.Sets/src/mage/cards/w/WeirdingShaman.java
index 870b554cff8..63532df410b 100644
--- a/Mage.Sets/src/mage/cards/w/WeirdingShaman.java
+++ b/Mage.Sets/src/mage/cards/w/WeirdingShaman.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class WeirdingShaman extends CardImpl {
+public final class WeirdingShaman extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Goblin");
diff --git a/Mage.Sets/src/mage/cards/w/WeirdingWood.java b/Mage.Sets/src/mage/cards/w/WeirdingWood.java
index 70d1e57d78f..bec576393d8 100644
--- a/Mage.Sets/src/mage/cards/w/WeirdingWood.java
+++ b/Mage.Sets/src/mage/cards/w/WeirdingWood.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author LevelX2
*/
-public class WeirdingWood extends CardImpl {
+public final class WeirdingWood extends CardImpl {
public WeirdingWood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WelcomeToTheFold.java b/Mage.Sets/src/mage/cards/w/WelcomeToTheFold.java
index 435082f8202..fcd94df45b6 100644
--- a/Mage.Sets/src/mage/cards/w/WelcomeToTheFold.java
+++ b/Mage.Sets/src/mage/cards/w/WelcomeToTheFold.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WelcomeToTheFold extends CardImpl {
+public final class WelcomeToTheFold extends CardImpl {
public WelcomeToTheFold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WelderAutomaton.java b/Mage.Sets/src/mage/cards/w/WelderAutomaton.java
index 78b0c0bb1b4..6ea7f2626b7 100644
--- a/Mage.Sets/src/mage/cards/w/WelderAutomaton.java
+++ b/Mage.Sets/src/mage/cards/w/WelderAutomaton.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class WelderAutomaton extends CardImpl {
+public final class WelderAutomaton extends CardImpl {
public WelderAutomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/w/WeldfastEngineer.java b/Mage.Sets/src/mage/cards/w/WeldfastEngineer.java
index 3637d96a820..678e3ae8268 100644
--- a/Mage.Sets/src/mage/cards/w/WeldfastEngineer.java
+++ b/Mage.Sets/src/mage/cards/w/WeldfastEngineer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class WeldfastEngineer extends CardImpl {
+public final class WeldfastEngineer extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("artifact creature you control");
diff --git a/Mage.Sets/src/mage/cards/w/WeldfastMonitor.java b/Mage.Sets/src/mage/cards/w/WeldfastMonitor.java
index 78d29197633..09fcec615cf 100644
--- a/Mage.Sets/src/mage/cards/w/WeldfastMonitor.java
+++ b/Mage.Sets/src/mage/cards/w/WeldfastMonitor.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class WeldfastMonitor extends CardImpl {
+public final class WeldfastMonitor extends CardImpl {
public WeldfastMonitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WeldfastWingsmith.java b/Mage.Sets/src/mage/cards/w/WeldfastWingsmith.java
index f84e23a817a..4dea3c31136 100644
--- a/Mage.Sets/src/mage/cards/w/WeldfastWingsmith.java
+++ b/Mage.Sets/src/mage/cards/w/WeldfastWingsmith.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledArtifactPermanent;
*
* @author fireshoes
*/
-public class WeldfastWingsmith extends CardImpl {
+public final class WeldfastWingsmith extends CardImpl {
public WeldfastWingsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WeldingJar.java b/Mage.Sets/src/mage/cards/w/WeldingJar.java
index 9e7b66e73ca..5910fb06bf5 100644
--- a/Mage.Sets/src/mage/cards/w/WeldingJar.java
+++ b/Mage.Sets/src/mage/cards/w/WeldingJar.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author Loki
*/
-public class WeldingJar extends CardImpl {
+public final class WeldingJar extends CardImpl {
public WeldingJar (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/w/WeldingSparks.java b/Mage.Sets/src/mage/cards/w/WeldingSparks.java
index eeb1750a7b3..57e9450ba4e 100644
--- a/Mage.Sets/src/mage/cards/w/WeldingSparks.java
+++ b/Mage.Sets/src/mage/cards/w/WeldingSparks.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WeldingSparks extends CardImpl {
+public final class WeldingSparks extends CardImpl {
public WeldingSparks(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WelkinGuide.java b/Mage.Sets/src/mage/cards/w/WelkinGuide.java
index 31765832748..806b8e2b2fc 100644
--- a/Mage.Sets/src/mage/cards/w/WelkinGuide.java
+++ b/Mage.Sets/src/mage/cards/w/WelkinGuide.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class WelkinGuide extends CardImpl {
+public final class WelkinGuide extends CardImpl {
public WelkinGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WelkinHawk.java b/Mage.Sets/src/mage/cards/w/WelkinHawk.java
index 81cb90cac0f..7bc9c9d7645 100644
--- a/Mage.Sets/src/mage/cards/w/WelkinHawk.java
+++ b/Mage.Sets/src/mage/cards/w/WelkinHawk.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class WelkinHawk extends CardImpl {
+public final class WelkinHawk extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Welkin Hawk");
diff --git a/Mage.Sets/src/mage/cards/w/WelkinTern.java b/Mage.Sets/src/mage/cards/w/WelkinTern.java
index f101d7938aa..0eccbfa9f93 100644
--- a/Mage.Sets/src/mage/cards/w/WelkinTern.java
+++ b/Mage.Sets/src/mage/cards/w/WelkinTern.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WelkinTern extends CardImpl {
+public final class WelkinTern extends CardImpl {
public WelkinTern (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WellOfDiscovery.java b/Mage.Sets/src/mage/cards/w/WellOfDiscovery.java
index 1969e38ff10..3ae905a9a46 100644
--- a/Mage.Sets/src/mage/cards/w/WellOfDiscovery.java
+++ b/Mage.Sets/src/mage/cards/w/WellOfDiscovery.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LoneFox
*/
-public class WellOfDiscovery extends CardImpl {
+public final class WellOfDiscovery extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/w/WellOfIdeas.java b/Mage.Sets/src/mage/cards/w/WellOfIdeas.java
index f6d77118f17..f150092057d 100644
--- a/Mage.Sets/src/mage/cards/w/WellOfIdeas.java
+++ b/Mage.Sets/src/mage/cards/w/WellOfIdeas.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LevelX2
*/
-public class WellOfIdeas extends CardImpl {
+public final class WellOfIdeas extends CardImpl {
public WellOfIdeas(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WellOfKnowledge.java b/Mage.Sets/src/mage/cards/w/WellOfKnowledge.java
index 6a18a11d475..dfa6f350bf1 100644
--- a/Mage.Sets/src/mage/cards/w/WellOfKnowledge.java
+++ b/Mage.Sets/src/mage/cards/w/WellOfKnowledge.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Styxo
*/
-public class WellOfKnowledge extends CardImpl {
+public final class WellOfKnowledge extends CardImpl {
public WellOfKnowledge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
@@ -89,14 +89,14 @@ class WellOfKnowledgeConditionalActivatedAbility extends ActivatedAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
if (condition.apply(game, this)
&& costs.canPay(this, sourceId, playerId, game)
&& game.getActivePlayerId().equals(playerId)) {
this.activatorId = playerId;
- return true;
+ return ActivationStatus.getTrue();
}
- return false;
+ return ActivationStatus.getFalse();
}
diff --git a/Mage.Sets/src/mage/cards/w/WellOfLife.java b/Mage.Sets/src/mage/cards/w/WellOfLife.java
index 779f1fd2182..64ea31dfc79 100644
--- a/Mage.Sets/src/mage/cards/w/WellOfLife.java
+++ b/Mage.Sets/src/mage/cards/w/WellOfLife.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
*
* @author LoneFox
*/
-public class WellOfLife extends CardImpl {
+public final class WellOfLife extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/w/WellOfLostDreams.java b/Mage.Sets/src/mage/cards/w/WellOfLostDreams.java
index 9eb26ebc9c8..47f9bb24c61 100644
--- a/Mage.Sets/src/mage/cards/w/WellOfLostDreams.java
+++ b/Mage.Sets/src/mage/cards/w/WellOfLostDreams.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WellOfLostDreams extends CardImpl {
+public final class WellOfLostDreams extends CardImpl {
public WellOfLostDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/w/WellgabberApothecary.java b/Mage.Sets/src/mage/cards/w/WellgabberApothecary.java
index fb1d5beabd8..1cfdf690086 100644
--- a/Mage.Sets/src/mage/cards/w/WellgabberApothecary.java
+++ b/Mage.Sets/src/mage/cards/w/WellgabberApothecary.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class WellgabberApothecary extends CardImpl {
+public final class WellgabberApothecary extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("target tapped Merfolk or Kithkin creature this turn");
diff --git a/Mage.Sets/src/mage/cards/w/Wellwisher.java b/Mage.Sets/src/mage/cards/w/Wellwisher.java
index 7721f5f8715..380f180e6e9 100644
--- a/Mage.Sets/src/mage/cards/w/Wellwisher.java
+++ b/Mage.Sets/src/mage/cards/w/Wellwisher.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class Wellwisher extends CardImpl {
+public final class Wellwisher extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Elf on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/w/Werebear.java b/Mage.Sets/src/mage/cards/w/Werebear.java
index fff5f2f7365..0964d37ff64 100644
--- a/Mage.Sets/src/mage/cards/w/Werebear.java
+++ b/Mage.Sets/src/mage/cards/w/Werebear.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class Werebear extends CardImpl {
+public final class Werebear extends CardImpl {
public Werebear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WerewolfOfAncientHunger.java b/Mage.Sets/src/mage/cards/w/WerewolfOfAncientHunger.java
index 4f319fa6a6c..90e4d7a726c 100644
--- a/Mage.Sets/src/mage/cards/w/WerewolfOfAncientHunger.java
+++ b/Mage.Sets/src/mage/cards/w/WerewolfOfAncientHunger.java
@@ -54,7 +54,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class WerewolfOfAncientHunger extends CardImpl {
+public final class WerewolfOfAncientHunger extends CardImpl {
public WerewolfOfAncientHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/w/WerewolfRansacker.java b/Mage.Sets/src/mage/cards/w/WerewolfRansacker.java
index e58df1473ee..b70e4406564 100644
--- a/Mage.Sets/src/mage/cards/w/WerewolfRansacker.java
+++ b/Mage.Sets/src/mage/cards/w/WerewolfRansacker.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author BetaSteward
*/
-public class WerewolfRansacker extends CardImpl {
+public final class WerewolfRansacker extends CardImpl {
public WerewolfRansacker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/w/WesternPaladin.java b/Mage.Sets/src/mage/cards/w/WesternPaladin.java
index 8c247afbe92..25add4dbf9c 100644
--- a/Mage.Sets/src/mage/cards/w/WesternPaladin.java
+++ b/Mage.Sets/src/mage/cards/w/WesternPaladin.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class WesternPaladin extends CardImpl {
+public final class WesternPaladin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creature");
diff --git a/Mage.Sets/src/mage/cards/w/WestvaleAbbey.java b/Mage.Sets/src/mage/cards/w/WestvaleAbbey.java
index 226adb43098..af1bec5cfc2 100644
--- a/Mage.Sets/src/mage/cards/w/WestvaleAbbey.java
+++ b/Mage.Sets/src/mage/cards/w/WestvaleAbbey.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class WestvaleAbbey extends CardImpl {
+public final class WestvaleAbbey extends CardImpl {
public WestvaleAbbey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/w/WestvaleCultLeader.java b/Mage.Sets/src/mage/cards/w/WestvaleCultLeader.java
index 3ee71d91440..d221e7c07c6 100644
--- a/Mage.Sets/src/mage/cards/w/WestvaleCultLeader.java
+++ b/Mage.Sets/src/mage/cards/w/WestvaleCultLeader.java
@@ -48,7 +48,7 @@ import mage.game.permanent.token.HumanClericToken;
*
* @author fireshoes
*/
-public class WestvaleCultLeader extends CardImpl {
+public final class WestvaleCultLeader extends CardImpl {
final private static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control");
diff --git a/Mage.Sets/src/mage/cards/w/WetlandSambar.java b/Mage.Sets/src/mage/cards/w/WetlandSambar.java
index 71c11a1d4ba..fb5a8b45132 100644
--- a/Mage.Sets/src/mage/cards/w/WetlandSambar.java
+++ b/Mage.Sets/src/mage/cards/w/WetlandSambar.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WetlandSambar extends CardImpl {
+public final class WetlandSambar extends CardImpl {
public WetlandSambar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WharfInfiltrator.java b/Mage.Sets/src/mage/cards/w/WharfInfiltrator.java
index 9e3116fc858..7d237c84742 100644
--- a/Mage.Sets/src/mage/cards/w/WharfInfiltrator.java
+++ b/Mage.Sets/src/mage/cards/w/WharfInfiltrator.java
@@ -52,7 +52,7 @@ import mage.game.permanent.token.EldraziHorrorToken;
*
* @author fireshoes
*/
-public class WharfInfiltrator extends CardImpl {
+public final class WharfInfiltrator extends CardImpl {
public WharfInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WheelAndDeal.java b/Mage.Sets/src/mage/cards/w/WheelAndDeal.java
index e30ef0cd9c9..5bdfc8d522a 100644
--- a/Mage.Sets/src/mage/cards/w/WheelAndDeal.java
+++ b/Mage.Sets/src/mage/cards/w/WheelAndDeal.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author fireshoes
*/
-public class WheelAndDeal extends CardImpl {
+public final class WheelAndDeal extends CardImpl {
private static final FilterPlayer filter = new FilterPlayer("opponent");
diff --git a/Mage.Sets/src/mage/cards/w/WheelOfFate.java b/Mage.Sets/src/mage/cards/w/WheelOfFate.java
index 989dd7a0f29..dcb8af0cf48 100644
--- a/Mage.Sets/src/mage/cards/w/WheelOfFate.java
+++ b/Mage.Sets/src/mage/cards/w/WheelOfFate.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author anonymous
*/
-public class WheelOfFate extends CardImpl {
+public final class WheelOfFate extends CardImpl {
public WheelOfFate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "");
diff --git a/Mage.Sets/src/mage/cards/w/WheelOfFortune.java b/Mage.Sets/src/mage/cards/w/WheelOfFortune.java
index a6979eb1b54..049b03ebfa0 100644
--- a/Mage.Sets/src/mage/cards/w/WheelOfFortune.java
+++ b/Mage.Sets/src/mage/cards/w/WheelOfFortune.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
/**
* @author mluds
*/
-public class WheelOfFortune extends CardImpl {
+public final class WheelOfFortune extends CardImpl {
public WheelOfFortune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WheelOfSunAndMoon.java b/Mage.Sets/src/mage/cards/w/WheelOfSunAndMoon.java
index 4daa21c5810..682313dd473 100644
--- a/Mage.Sets/src/mage/cards/w/WheelOfSunAndMoon.java
+++ b/Mage.Sets/src/mage/cards/w/WheelOfSunAndMoon.java
@@ -56,7 +56,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class WheelOfSunAndMoon extends CardImpl {
+public final class WheelOfSunAndMoon extends CardImpl {
public WheelOfSunAndMoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G/W}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/w/WheelOfTorture.java b/Mage.Sets/src/mage/cards/w/WheelOfTorture.java
index 00324045682..3de6d0549e0 100644
--- a/Mage.Sets/src/mage/cards/w/WheelOfTorture.java
+++ b/Mage.Sets/src/mage/cards/w/WheelOfTorture.java
@@ -44,10 +44,10 @@ import mage.players.Player;
*
* @author Plopman
*/
-public class WheelOfTorture extends CardImpl {
+public final class WheelOfTorture extends CardImpl {
public WheelOfTorture(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
// At the beginning of each opponent's upkeep, Wheel of Torture deals X damage to that player, where X is 3 minus the number of cards in their hand.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new WheelOfTortureEffect(), TargetController.OPPONENT, false);
@@ -64,7 +64,6 @@ public class WheelOfTorture extends CardImpl {
}
}
-
class WheelOfTortureEffect extends OneShotEffect {
private WheelOfTortureEffect(final WheelOfTortureEffect effect) {
@@ -78,16 +77,11 @@ class WheelOfTortureEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(targetPointer.getFirst(game, source));
- if(player != null)
- {
+ if (player != null) {
int amount = 3 - player.getHand().size();
- if(amount > 0)
- {
- if (player != null) {
- player.damage(amount, source.getSourceId(), game, false, true);
- return true;
- }
-
+ if (amount > 0) {
+ player.damage(amount, source.getSourceId(), game, false, true);
+ return true;
}
}
return false;
@@ -103,5 +97,4 @@ class WheelOfTortureEffect extends OneShotEffect {
return "Wheel of Torture deals X damage to that player, where X is 3 minus the number of cards in their hand";
}
-
}
diff --git a/Mage.Sets/src/mage/cards/w/WhelmingWave.java b/Mage.Sets/src/mage/cards/w/WhelmingWave.java
index 479e78eee5f..ef18853e419 100644
--- a/Mage.Sets/src/mage/cards/w/WhelmingWave.java
+++ b/Mage.Sets/src/mage/cards/w/WhelmingWave.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class WhelmingWave extends CardImpl {
+public final class WhelmingWave extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/w/WhereAncientsTread.java b/Mage.Sets/src/mage/cards/w/WhereAncientsTread.java
index d495ee253c3..1e36d22f94e 100644
--- a/Mage.Sets/src/mage/cards/w/WhereAncientsTread.java
+++ b/Mage.Sets/src/mage/cards/w/WhereAncientsTread.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Plopman
*/
- public class WhereAncientsTread extends CardImpl {
+ public final class WhereAncientsTread extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
static {
diff --git a/Mage.Sets/src/mage/cards/w/Whetstone.java b/Mage.Sets/src/mage/cards/w/Whetstone.java
index a63ddc87561..5dfbee3e3b9 100644
--- a/Mage.Sets/src/mage/cards/w/Whetstone.java
+++ b/Mage.Sets/src/mage/cards/w/Whetstone.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author Backfir3
*/
-public class Whetstone extends CardImpl {
+public final class Whetstone extends CardImpl {
public Whetstone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/Whetwheel.java b/Mage.Sets/src/mage/cards/w/Whetwheel.java
index ede9c67b095..7744fbb8c3b 100644
--- a/Mage.Sets/src/mage/cards/w/Whetwheel.java
+++ b/Mage.Sets/src/mage/cards/w/Whetwheel.java
@@ -45,7 +45,7 @@ import mage.target.TargetPlayer;
*
* @author LoneFox
*/
-public class Whetwheel extends CardImpl {
+public final class Whetwheel extends CardImpl {
public Whetwheel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
diff --git a/Mage.Sets/src/mage/cards/w/WhimsOfTheFates.java b/Mage.Sets/src/mage/cards/w/WhimsOfTheFates.java
index 084e3189516..a6e04133a4e 100644
--- a/Mage.Sets/src/mage/cards/w/WhimsOfTheFates.java
+++ b/Mage.Sets/src/mage/cards/w/WhimsOfTheFates.java
@@ -48,7 +48,7 @@ import mage.util.RandomUtil;
*
* @author LevelX2
*/
-public class WhimsOfTheFates extends CardImpl {
+public final class WhimsOfTheFates extends CardImpl {
public WhimsOfTheFates(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/Whimwader.java b/Mage.Sets/src/mage/cards/w/Whimwader.java
index 297017558da..60867416f41 100644
--- a/Mage.Sets/src/mage/cards/w/Whimwader.java
+++ b/Mage.Sets/src/mage/cards/w/Whimwader.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author jeffwadsworth
*/
-public class Whimwader extends CardImpl {
+public final class Whimwader extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a blue permanent");
diff --git a/Mage.Sets/src/mage/cards/w/WhipOfErebos.java b/Mage.Sets/src/mage/cards/w/WhipOfErebos.java
index 33d3c1f0704..25cdc4cbce9 100644
--- a/Mage.Sets/src/mage/cards/w/WhipOfErebos.java
+++ b/Mage.Sets/src/mage/cards/w/WhipOfErebos.java
@@ -60,7 +60,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class WhipOfErebos extends CardImpl {
+public final class WhipOfErebos extends CardImpl {
public WhipOfErebos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.ARTIFACT}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WhipSergeant.java b/Mage.Sets/src/mage/cards/w/WhipSergeant.java
index 5d2ea865a06..3ac7b35efae 100644
--- a/Mage.Sets/src/mage/cards/w/WhipSergeant.java
+++ b/Mage.Sets/src/mage/cards/w/WhipSergeant.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WhipSergeant extends CardImpl {
+public final class WhipSergeant extends CardImpl {
public WhipSergeant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WhipSilk.java b/Mage.Sets/src/mage/cards/w/WhipSilk.java
index 60ed899405d..eeb8c5f9b79 100644
--- a/Mage.Sets/src/mage/cards/w/WhipSilk.java
+++ b/Mage.Sets/src/mage/cards/w/WhipSilk.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WhipSilk extends CardImpl {
+public final class WhipSilk extends CardImpl {
public WhipSilk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WhipSpineDrake.java b/Mage.Sets/src/mage/cards/w/WhipSpineDrake.java
index 07c898f2a1f..b5f4ce4bca3 100644
--- a/Mage.Sets/src/mage/cards/w/WhipSpineDrake.java
+++ b/Mage.Sets/src/mage/cards/w/WhipSpineDrake.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WhipSpineDrake extends CardImpl {
+public final class WhipSpineDrake extends CardImpl {
public WhipSpineDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WhipVine.java b/Mage.Sets/src/mage/cards/w/WhipVine.java
index 54989897a7d..190a64361ac 100644
--- a/Mage.Sets/src/mage/cards/w/WhipVine.java
+++ b/Mage.Sets/src/mage/cards/w/WhipVine.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WhipVine extends CardImpl {
+public final class WhipVine extends CardImpl {
public WhipVine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/Whipcorder.java b/Mage.Sets/src/mage/cards/w/Whipcorder.java
index f582cabdd38..e0346af2dec 100644
--- a/Mage.Sets/src/mage/cards/w/Whipcorder.java
+++ b/Mage.Sets/src/mage/cards/w/Whipcorder.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Whipcorder extends CardImpl {
+public final class Whipcorder extends CardImpl {
public Whipcorder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/Whipflare.java b/Mage.Sets/src/mage/cards/w/Whipflare.java
index c231323c1de..81dd7c7fd46 100644
--- a/Mage.Sets/src/mage/cards/w/Whipflare.java
+++ b/Mage.Sets/src/mage/cards/w/Whipflare.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author North
*/
-public class Whipflare extends CardImpl {
+public final class Whipflare extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact creature");
diff --git a/Mage.Sets/src/mage/cards/w/WhipgrassEntangler.java b/Mage.Sets/src/mage/cards/w/WhipgrassEntangler.java
index d026b9cd903..9dff98f0d94 100644
--- a/Mage.Sets/src/mage/cards/w/WhipgrassEntangler.java
+++ b/Mage.Sets/src/mage/cards/w/WhipgrassEntangler.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author emerald000 & L_J
*/
-public class WhipgrassEntangler extends CardImpl {
+public final class WhipgrassEntangler extends CardImpl {
public WhipgrassEntangler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/Whipkeeper.java b/Mage.Sets/src/mage/cards/w/Whipkeeper.java
index 898e2a9e16c..0b57124db5c 100644
--- a/Mage.Sets/src/mage/cards/w/Whipkeeper.java
+++ b/Mage.Sets/src/mage/cards/w/Whipkeeper.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class Whipkeeper extends CardImpl {
+public final class Whipkeeper extends CardImpl {
public Whipkeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WhiplashTrap.java b/Mage.Sets/src/mage/cards/w/WhiplashTrap.java
index 47a2ef1aebf..c30a1426b6d 100644
--- a/Mage.Sets/src/mage/cards/w/WhiplashTrap.java
+++ b/Mage.Sets/src/mage/cards/w/WhiplashTrap.java
@@ -47,7 +47,7 @@ import java.util.UUID;
/**
* @author jeffwadsworth
*/
-public class WhiplashTrap extends CardImpl {
+public final class WhiplashTrap extends CardImpl {
public WhiplashTrap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WhipstitchedZombie.java b/Mage.Sets/src/mage/cards/w/WhipstitchedZombie.java
index 2b7ffcfdd17..b4700b23470 100644
--- a/Mage.Sets/src/mage/cards/w/WhipstitchedZombie.java
+++ b/Mage.Sets/src/mage/cards/w/WhipstitchedZombie.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
*
* @author LoneFox
*/
-public class WhipstitchedZombie extends CardImpl {
+public final class WhipstitchedZombie extends CardImpl {
public WhipstitchedZombie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WhiptailMoloch.java b/Mage.Sets/src/mage/cards/w/WhiptailMoloch.java
index 37bb42e8362..af9678f2987 100644
--- a/Mage.Sets/src/mage/cards/w/WhiptailMoloch.java
+++ b/Mage.Sets/src/mage/cards/w/WhiptailMoloch.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LoneFox
*/
-public class WhiptailMoloch extends CardImpl {
+public final class WhiptailMoloch extends CardImpl {
public WhiptailMoloch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WhiptailWurm.java b/Mage.Sets/src/mage/cards/w/WhiptailWurm.java
index 0ef63f06a85..28623c704bf 100644
--- a/Mage.Sets/src/mage/cards/w/WhiptailWurm.java
+++ b/Mage.Sets/src/mage/cards/w/WhiptailWurm.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class WhiptailWurm extends CardImpl {
+public final class WhiptailWurm extends CardImpl {
public WhiptailWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WhiptongueFrog.java b/Mage.Sets/src/mage/cards/w/WhiptongueFrog.java
index 336d479aed4..64e0bfe3a71 100644
--- a/Mage.Sets/src/mage/cards/w/WhiptongueFrog.java
+++ b/Mage.Sets/src/mage/cards/w/WhiptongueFrog.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class WhiptongueFrog extends CardImpl {
+public final class WhiptongueFrog extends CardImpl {
public WhiptongueFrog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WhirOfInvention.java b/Mage.Sets/src/mage/cards/w/WhirOfInvention.java
index bd06a0b67d3..0c87852aaee 100644
--- a/Mage.Sets/src/mage/cards/w/WhirOfInvention.java
+++ b/Mage.Sets/src/mage/cards/w/WhirOfInvention.java
@@ -39,7 +39,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author fireshoes
*/
-public class WhirOfInvention extends CardImpl {
+public final class WhirOfInvention extends CardImpl {
public WhirOfInvention(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{U}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WhirlerRogue.java b/Mage.Sets/src/mage/cards/w/WhirlerRogue.java
index 2253708acd3..f91bed3a0c1 100644
--- a/Mage.Sets/src/mage/cards/w/WhirlerRogue.java
+++ b/Mage.Sets/src/mage/cards/w/WhirlerRogue.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WhirlerRogue extends CardImpl {
+public final class WhirlerRogue extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifacts");
diff --git a/Mage.Sets/src/mage/cards/w/WhirlerVirtuoso.java b/Mage.Sets/src/mage/cards/w/WhirlerVirtuoso.java
index 7e3b73a009d..0f2363d4388 100644
--- a/Mage.Sets/src/mage/cards/w/WhirlerVirtuoso.java
+++ b/Mage.Sets/src/mage/cards/w/WhirlerVirtuoso.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author emerald000
*/
-public class WhirlerVirtuoso extends CardImpl {
+public final class WhirlerVirtuoso extends CardImpl {
public WhirlerVirtuoso(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/Whirlermaker.java b/Mage.Sets/src/mage/cards/w/Whirlermaker.java
index 5c29aa07b04..fe81d0308ec 100644
--- a/Mage.Sets/src/mage/cards/w/Whirlermaker.java
+++ b/Mage.Sets/src/mage/cards/w/Whirlermaker.java
@@ -43,7 +43,7 @@ import mage.game.permanent.token.ThopterColorlessToken;
*
* @author fireshoes
*/
-public class Whirlermaker extends CardImpl {
+public final class Whirlermaker extends CardImpl {
public Whirlermaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WhirlingCatapult.java b/Mage.Sets/src/mage/cards/w/WhirlingCatapult.java
index 6f943a85937..94c3009fec4 100644
--- a/Mage.Sets/src/mage/cards/w/WhirlingCatapult.java
+++ b/Mage.Sets/src/mage/cards/w/WhirlingCatapult.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author L_J
*/
-public class WhirlingCatapult extends CardImpl {
+public final class WhirlingCatapult extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WhirlingDervish.java b/Mage.Sets/src/mage/cards/w/WhirlingDervish.java
index 7e82ef24523..7906365a841 100644
--- a/Mage.Sets/src/mage/cards/w/WhirlingDervish.java
+++ b/Mage.Sets/src/mage/cards/w/WhirlingDervish.java
@@ -47,7 +47,7 @@ import mage.game.events.GameEvent;
*
* @author LevelX
*/
-public class WhirlingDervish extends CardImpl {
+public final class WhirlingDervish extends CardImpl {
private static final String ruleText = "At the beginning of each end step, if {this} dealt damage to an opponent this turn, put a +1/+1 counter on it.";
diff --git a/Mage.Sets/src/mage/cards/w/WhirlpoolDrake.java b/Mage.Sets/src/mage/cards/w/WhirlpoolDrake.java
index dbac3e97329..50a523ffae9 100644
--- a/Mage.Sets/src/mage/cards/w/WhirlpoolDrake.java
+++ b/Mage.Sets/src/mage/cards/w/WhirlpoolDrake.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WhirlpoolDrake extends CardImpl {
+public final class WhirlpoolDrake extends CardImpl {
public WhirlpoolDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WhirlpoolRider.java b/Mage.Sets/src/mage/cards/w/WhirlpoolRider.java
index 0dffcb72647..698fc12adbe 100644
--- a/Mage.Sets/src/mage/cards/w/WhirlpoolRider.java
+++ b/Mage.Sets/src/mage/cards/w/WhirlpoolRider.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WhirlpoolRider extends CardImpl {
+public final class WhirlpoolRider extends CardImpl {
public WhirlpoolRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WhirlpoolWarrior.java b/Mage.Sets/src/mage/cards/w/WhirlpoolWarrior.java
index 4df8b5fda42..d7a99f15ea0 100644
--- a/Mage.Sets/src/mage/cards/w/WhirlpoolWarrior.java
+++ b/Mage.Sets/src/mage/cards/w/WhirlpoolWarrior.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WhirlpoolWarrior extends CardImpl {
+public final class WhirlpoolWarrior extends CardImpl {
public WhirlpoolWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WhirlpoolWhelm.java b/Mage.Sets/src/mage/cards/w/WhirlpoolWhelm.java
index 137a9446d3f..eb49481e575 100644
--- a/Mage.Sets/src/mage/cards/w/WhirlpoolWhelm.java
+++ b/Mage.Sets/src/mage/cards/w/WhirlpoolWhelm.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WhirlpoolWhelm extends CardImpl {
+public final class WhirlpoolWhelm extends CardImpl {
public WhirlpoolWhelm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/Whirlwind.java b/Mage.Sets/src/mage/cards/w/Whirlwind.java
index b96f3f75506..5b722fccc89 100644
--- a/Mage.Sets/src/mage/cards/w/Whirlwind.java
+++ b/Mage.Sets/src/mage/cards/w/Whirlwind.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LevelX2
*/
-public class Whirlwind extends CardImpl {
+public final class Whirlwind extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/w/WhirlwindAdept.java b/Mage.Sets/src/mage/cards/w/WhirlwindAdept.java
index 1002efe9ebc..8aa2ce73f92 100644
--- a/Mage.Sets/src/mage/cards/w/WhirlwindAdept.java
+++ b/Mage.Sets/src/mage/cards/w/WhirlwindAdept.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WhirlwindAdept extends CardImpl {
+public final class WhirlwindAdept extends CardImpl {
public WhirlwindAdept(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WhiskAway.java b/Mage.Sets/src/mage/cards/w/WhiskAway.java
index 9ad8bd14121..8f7abbba51c 100644
--- a/Mage.Sets/src/mage/cards/w/WhiskAway.java
+++ b/Mage.Sets/src/mage/cards/w/WhiskAway.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WhiskAway extends CardImpl {
+public final class WhiskAway extends CardImpl {
private static final FilterAttackingOrBlockingCreature filter = new FilterAttackingOrBlockingCreature();
diff --git a/Mage.Sets/src/mage/cards/w/WhisperBloodLiturgist.java b/Mage.Sets/src/mage/cards/w/WhisperBloodLiturgist.java
index 0868e3f823b..257cf6e6612 100644
--- a/Mage.Sets/src/mage/cards/w/WhisperBloodLiturgist.java
+++ b/Mage.Sets/src/mage/cards/w/WhisperBloodLiturgist.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class WhisperBloodLiturgist extends CardImpl {
+public final class WhisperBloodLiturgist extends CardImpl {
public WhisperBloodLiturgist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WhispererOfTheWilds.java b/Mage.Sets/src/mage/cards/w/WhispererOfTheWilds.java
index 7934f4c6a04..00ce71918fc 100644
--- a/Mage.Sets/src/mage/cards/w/WhispererOfTheWilds.java
+++ b/Mage.Sets/src/mage/cards/w/WhispererOfTheWilds.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class WhispererOfTheWilds extends CardImpl {
+public final class WhispererOfTheWilds extends CardImpl {
public WhispererOfTheWilds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WhisperingMadness.java b/Mage.Sets/src/mage/cards/w/WhisperingMadness.java
index 771bb86eed2..0b8a732630f 100644
--- a/Mage.Sets/src/mage/cards/w/WhisperingMadness.java
+++ b/Mage.Sets/src/mage/cards/w/WhisperingMadness.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WhisperingMadness extends CardImpl {
+public final class WhisperingMadness extends CardImpl {
public WhisperingMadness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WhisperingShade.java b/Mage.Sets/src/mage/cards/w/WhisperingShade.java
index f3dbd448d1e..46a58367198 100644
--- a/Mage.Sets/src/mage/cards/w/WhisperingShade.java
+++ b/Mage.Sets/src/mage/cards/w/WhisperingShade.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author cbt33
*/
-public class WhisperingShade extends CardImpl {
+public final class WhisperingShade extends CardImpl {
public WhisperingShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WhisperingSpecter.java b/Mage.Sets/src/mage/cards/w/WhisperingSpecter.java
index 2bd58e76671..b64a098b0b3 100644
--- a/Mage.Sets/src/mage/cards/w/WhisperingSpecter.java
+++ b/Mage.Sets/src/mage/cards/w/WhisperingSpecter.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author Loki
*/
-public class WhisperingSpecter extends CardImpl {
+public final class WhisperingSpecter extends CardImpl {
public WhisperingSpecter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WhispersOfEmrakul.java b/Mage.Sets/src/mage/cards/w/WhispersOfEmrakul.java
index 24a163608f5..5f724e637e8 100644
--- a/Mage.Sets/src/mage/cards/w/WhispersOfEmrakul.java
+++ b/Mage.Sets/src/mage/cards/w/WhispersOfEmrakul.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class WhispersOfEmrakul extends CardImpl {
+public final class WhispersOfEmrakul extends CardImpl {
public WhispersOfEmrakul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WhispersOfTheMuse.java b/Mage.Sets/src/mage/cards/w/WhispersOfTheMuse.java
index 0ae8757e06f..94f5b18b716 100644
--- a/Mage.Sets/src/mage/cards/w/WhispersOfTheMuse.java
+++ b/Mage.Sets/src/mage/cards/w/WhispersOfTheMuse.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class WhispersOfTheMuse extends CardImpl {
+public final class WhispersOfTheMuse extends CardImpl {
public WhispersOfTheMuse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WhispersilkCloak.java b/Mage.Sets/src/mage/cards/w/WhispersilkCloak.java
index a12ae65d0f5..9f14875c5e4 100644
--- a/Mage.Sets/src/mage/cards/w/WhispersilkCloak.java
+++ b/Mage.Sets/src/mage/cards/w/WhispersilkCloak.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WhispersilkCloak extends CardImpl {
+public final class WhispersilkCloak extends CardImpl {
public WhispersilkCloak(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WhisperwoodElemental.java b/Mage.Sets/src/mage/cards/w/WhisperwoodElemental.java
index 78dd31c1b86..1669a9686e0 100644
--- a/Mage.Sets/src/mage/cards/w/WhisperwoodElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WhisperwoodElemental.java
@@ -53,7 +53,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*
* @author LevelX2
*/
-public class WhisperwoodElemental extends CardImpl {
+public final class WhisperwoodElemental extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face-up, nontoken creatures you control");
diff --git a/Mage.Sets/src/mage/cards/w/WhiteKnight.java b/Mage.Sets/src/mage/cards/w/WhiteKnight.java
index 59826503707..739f217086b 100644
--- a/Mage.Sets/src/mage/cards/w/WhiteKnight.java
+++ b/Mage.Sets/src/mage/cards/w/WhiteKnight.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WhiteKnight extends CardImpl {
+public final class WhiteKnight extends CardImpl {
public WhiteKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WhiteManaBattery.java b/Mage.Sets/src/mage/cards/w/WhiteManaBattery.java
index 306ee5fc0d1..288e6b724f6 100644
--- a/Mage.Sets/src/mage/cards/w/WhiteManaBattery.java
+++ b/Mage.Sets/src/mage/cards/w/WhiteManaBattery.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class WhiteManaBattery extends CardImpl {
+public final class WhiteManaBattery extends CardImpl {
public WhiteManaBattery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/w/WhiteScarab.java b/Mage.Sets/src/mage/cards/w/WhiteScarab.java
index c1c684653d5..b05d3533f1a 100644
--- a/Mage.Sets/src/mage/cards/w/WhiteScarab.java
+++ b/Mage.Sets/src/mage/cards/w/WhiteScarab.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Zeplar1_at_googlemail.com
*/
-public class WhiteScarab extends CardImpl {
+public final class WhiteScarab extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures");
private static final FilterPermanent filter2 = new FilterPermanent("white permanent");
diff --git a/Mage.Sets/src/mage/cards/w/WhiteShieldCrusader.java b/Mage.Sets/src/mage/cards/w/WhiteShieldCrusader.java
index e3ba1c42b6e..68abb701b74 100644
--- a/Mage.Sets/src/mage/cards/w/WhiteShieldCrusader.java
+++ b/Mage.Sets/src/mage/cards/w/WhiteShieldCrusader.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
* @author LoneFox
*/
-public class WhiteShieldCrusader extends CardImpl {
+public final class WhiteShieldCrusader extends CardImpl {
public WhiteShieldCrusader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WhiteSunsZenith.java b/Mage.Sets/src/mage/cards/w/WhiteSunsZenith.java
index 390d226b9e6..cfb2683f9e8 100644
--- a/Mage.Sets/src/mage/cards/w/WhiteSunsZenith.java
+++ b/Mage.Sets/src/mage/cards/w/WhiteSunsZenith.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.CatToken;
*
* @author Loki
*/
-public class WhiteSunsZenith extends CardImpl {
+public final class WhiteSunsZenith extends CardImpl {
public WhiteSunsZenith (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{W}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WhiteWard.java b/Mage.Sets/src/mage/cards/w/WhiteWard.java
index 326f86d42c9..1d4652119e6 100644
--- a/Mage.Sets/src/mage/cards/w/WhiteWard.java
+++ b/Mage.Sets/src/mage/cards/w/WhiteWard.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WhiteWard extends CardImpl {
+public final class WhiteWard extends CardImpl {
private static final FilterCard filter = new FilterCard("white");
diff --git a/Mage.Sets/src/mage/cards/w/WhitemaneLion.java b/Mage.Sets/src/mage/cards/w/WhitemaneLion.java
index beed3402d29..1e8e4a5d415 100644
--- a/Mage.Sets/src/mage/cards/w/WhitemaneLion.java
+++ b/Mage.Sets/src/mage/cards/w/WhitemaneLion.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class WhitemaneLion extends CardImpl {
+public final class WhitemaneLion extends CardImpl {
public WhitemaneLion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/Whiteout.java b/Mage.Sets/src/mage/cards/w/Whiteout.java
index d38ee5e4a4c..2f6e59d5cb9 100644
--- a/Mage.Sets/src/mage/cards/w/Whiteout.java
+++ b/Mage.Sets/src/mage/cards/w/Whiteout.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class Whiteout extends CardImpl {
+public final class Whiteout extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a snow land");
diff --git a/Mage.Sets/src/mage/cards/w/WhitesunsPassage.java b/Mage.Sets/src/mage/cards/w/WhitesunsPassage.java
index 066030172ee..32f1c568556 100644
--- a/Mage.Sets/src/mage/cards/w/WhitesunsPassage.java
+++ b/Mage.Sets/src/mage/cards/w/WhitesunsPassage.java
@@ -38,7 +38,7 @@ import mage.constants.CardType;
*
* @author Loki
*/
-public class WhitesunsPassage extends CardImpl {
+public final class WhitesunsPassage extends CardImpl {
public WhitesunsPassage (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WhitewaterNaiads.java b/Mage.Sets/src/mage/cards/w/WhitewaterNaiads.java
index 437244c2809..6d5d805050e 100644
--- a/Mage.Sets/src/mage/cards/w/WhitewaterNaiads.java
+++ b/Mage.Sets/src/mage/cards/w/WhitewaterNaiads.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WhitewaterNaiads extends CardImpl {
+public final class WhitewaterNaiads extends CardImpl {
public WhitewaterNaiads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT,CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WickedAkuba.java b/Mage.Sets/src/mage/cards/w/WickedAkuba.java
index 6eef697f29d..ab76b28509f 100644
--- a/Mage.Sets/src/mage/cards/w/WickedAkuba.java
+++ b/Mage.Sets/src/mage/cards/w/WickedAkuba.java
@@ -51,7 +51,7 @@ import mage.watchers.common.PlayerDamagedBySourceWatcher;
*
* @author North
*/
-public class WickedAkuba extends CardImpl {
+public final class WickedAkuba extends CardImpl {
private static final FilterPlayer filter = new FilterPlayer("player dealt damage by Wicked Akuba this turn");
diff --git a/Mage.Sets/src/mage/cards/w/WickedPact.java b/Mage.Sets/src/mage/cards/w/WickedPact.java
index 75236a3d5bb..8252957566c 100644
--- a/Mage.Sets/src/mage/cards/w/WickedPact.java
+++ b/Mage.Sets/src/mage/cards/w/WickedPact.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WickedPact extends CardImpl {
+public final class WickedPact extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
diff --git a/Mage.Sets/src/mage/cards/w/WickedReward.java b/Mage.Sets/src/mage/cards/w/WickedReward.java
index f2dd9c96e2c..e9c80941164 100644
--- a/Mage.Sets/src/mage/cards/w/WickedReward.java
+++ b/Mage.Sets/src/mage/cards/w/WickedReward.java
@@ -11,7 +11,7 @@ import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
-public class WickedReward extends CardImpl {
+public final class WickedReward extends CardImpl {
public WickedReward(UUID cardId, CardSetInfo cardSetInfo) {
super(cardId, cardSetInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WickerWarcrawler.java b/Mage.Sets/src/mage/cards/w/WickerWarcrawler.java
index 4918cc27886..6ca59e0ada4 100644
--- a/Mage.Sets/src/mage/cards/w/WickerWarcrawler.java
+++ b/Mage.Sets/src/mage/cards/w/WickerWarcrawler.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author jeffwadsworth
*/
-public class WickerWarcrawler extends CardImpl {
+public final class WickerWarcrawler extends CardImpl {
public WickerWarcrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/w/WickerWitch.java b/Mage.Sets/src/mage/cards/w/WickerWitch.java
index 5370a3dcb3e..fccc266a553 100644
--- a/Mage.Sets/src/mage/cards/w/WickerWitch.java
+++ b/Mage.Sets/src/mage/cards/w/WickerWitch.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WickerWitch extends CardImpl {
+public final class WickerWitch extends CardImpl {
public WickerWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WickerboughElder.java b/Mage.Sets/src/mage/cards/w/WickerboughElder.java
index 78fc4537ae7..ea2ebdd0f02 100644
--- a/Mage.Sets/src/mage/cards/w/WickerboughElder.java
+++ b/Mage.Sets/src/mage/cards/w/WickerboughElder.java
@@ -50,7 +50,7 @@ import java.util.UUID;
/**
* @author Loki
*/
-public class WickerboughElder extends CardImpl {
+public final class WickerboughElder extends CardImpl {
public WickerboughElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WidespreadPanic.java b/Mage.Sets/src/mage/cards/w/WidespreadPanic.java
index 31ec10d2537..3bacb45b05d 100644
--- a/Mage.Sets/src/mage/cards/w/WidespreadPanic.java
+++ b/Mage.Sets/src/mage/cards/w/WidespreadPanic.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class WidespreadPanic extends CardImpl {
+public final class WidespreadPanic extends CardImpl {
public WidespreadPanic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WieldingTheGreenDragon.java b/Mage.Sets/src/mage/cards/w/WieldingTheGreenDragon.java
index 5c333d79690..9d23a1454ff 100644
--- a/Mage.Sets/src/mage/cards/w/WieldingTheGreenDragon.java
+++ b/Mage.Sets/src/mage/cards/w/WieldingTheGreenDragon.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WieldingTheGreenDragon extends CardImpl {
+public final class WieldingTheGreenDragon extends CardImpl {
public WieldingTheGreenDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WightOfPrecinctSix.java b/Mage.Sets/src/mage/cards/w/WightOfPrecinctSix.java
index 5b2c17c835c..52734821cce 100644
--- a/Mage.Sets/src/mage/cards/w/WightOfPrecinctSix.java
+++ b/Mage.Sets/src/mage/cards/w/WightOfPrecinctSix.java
@@ -49,7 +49,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WightOfPrecinctSix extends CardImpl {
+public final class WightOfPrecinctSix extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("creature card in your opponents' graveyards");
diff --git a/Mage.Sets/src/mage/cards/w/WildAesthir.java b/Mage.Sets/src/mage/cards/w/WildAesthir.java
index 2bd40f02d61..5dfadc08a47 100644
--- a/Mage.Sets/src/mage/cards/w/WildAesthir.java
+++ b/Mage.Sets/src/mage/cards/w/WildAesthir.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author nigelzor
*/
-public class WildAesthir extends CardImpl {
+public final class WildAesthir extends CardImpl {
public WildAesthir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WildBeastmaster.java b/Mage.Sets/src/mage/cards/w/WildBeastmaster.java
index d0576ef81f7..5b4c6dee788 100644
--- a/Mage.Sets/src/mage/cards/w/WildBeastmaster.java
+++ b/Mage.Sets/src/mage/cards/w/WildBeastmaster.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class WildBeastmaster extends CardImpl {
+public final class WildBeastmaster extends CardImpl {
private static final String EFFECT_TEXT = "each other creature you control gets +X/+X until end of turn, where X is {this}'s power";
diff --git a/Mage.Sets/src/mage/cards/w/WildCantor.java b/Mage.Sets/src/mage/cards/w/WildCantor.java
index dc2c5a75220..e2674c73978 100644
--- a/Mage.Sets/src/mage/cards/w/WildCantor.java
+++ b/Mage.Sets/src/mage/cards/w/WildCantor.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class WildCantor extends CardImpl {
+public final class WildCantor extends CardImpl {
public WildCantor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildCelebrants.java b/Mage.Sets/src/mage/cards/w/WildCelebrants.java
index 90fb6628589..b8ce438a690 100644
--- a/Mage.Sets/src/mage/cards/w/WildCelebrants.java
+++ b/Mage.Sets/src/mage/cards/w/WildCelebrants.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LevelX2
*/
-public class WildCelebrants extends CardImpl {
+public final class WildCelebrants extends CardImpl {
public WildCelebrants(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WildColos.java b/Mage.Sets/src/mage/cards/w/WildColos.java
index d01f0611346..5d830bdcca0 100644
--- a/Mage.Sets/src/mage/cards/w/WildColos.java
+++ b/Mage.Sets/src/mage/cards/w/WildColos.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WildColos extends CardImpl {
+public final class WildColos extends CardImpl {
public WildColos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WildDefiance.java b/Mage.Sets/src/mage/cards/w/WildDefiance.java
index 4fd682a1a3e..cc1cba144fb 100644
--- a/Mage.Sets/src/mage/cards/w/WildDefiance.java
+++ b/Mage.Sets/src/mage/cards/w/WildDefiance.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author noxx
*/
-public class WildDefiance extends CardImpl {
+public final class WildDefiance extends CardImpl {
public WildDefiance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildDogs.java b/Mage.Sets/src/mage/cards/w/WildDogs.java
index c2d56fe6b23..a61e5f69505 100644
--- a/Mage.Sets/src/mage/cards/w/WildDogs.java
+++ b/Mage.Sets/src/mage/cards/w/WildDogs.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class WildDogs extends CardImpl {
+public final class WildDogs extends CardImpl {
public WildDogs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildElephant.java b/Mage.Sets/src/mage/cards/w/WildElephant.java
index 38c9b149fd4..4a9450ecce3 100644
--- a/Mage.Sets/src/mage/cards/w/WildElephant.java
+++ b/Mage.Sets/src/mage/cards/w/WildElephant.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WildElephant extends CardImpl {
+public final class WildElephant extends CardImpl {
public WildElephant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildEvocation.java b/Mage.Sets/src/mage/cards/w/WildEvocation.java
index ef18829166e..b1f92793862 100644
--- a/Mage.Sets/src/mage/cards/w/WildEvocation.java
+++ b/Mage.Sets/src/mage/cards/w/WildEvocation.java
@@ -29,6 +29,7 @@ package mage.cards.w;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -49,7 +50,7 @@ import mage.util.GameLog;
*
* @author BetaSteward_at_googlemail.com and jeff
*/
-public class WildEvocation extends CardImpl {
+public final class WildEvocation extends CardImpl {
public WildEvocation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{R}");
@@ -96,7 +97,7 @@ class WildEvocationEffect extends OneShotEffect {
player.moveCards(card, Zone.BATTLEFIELD, source, game);
} else if (card.getSpellAbility() != null
&& card.getSpellAbility().getTargets().canChoose(player.getId(), game)) {
- player.cast(card.getSpellAbility(), game, true);
+ player.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
} else {
game.informPlayers(GameLog.getColoredObjectName(card) + " can't be cast now by " + player.getLogName());
}
diff --git a/Mage.Sets/src/mage/cards/w/WildFieldScarecrow.java b/Mage.Sets/src/mage/cards/w/WildFieldScarecrow.java
index a12e1b938ea..f3bd57cc3c4 100644
--- a/Mage.Sets/src/mage/cards/w/WildFieldScarecrow.java
+++ b/Mage.Sets/src/mage/cards/w/WildFieldScarecrow.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class WildFieldScarecrow extends CardImpl {
+public final class WildFieldScarecrow extends CardImpl {
public WildFieldScarecrow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
@@ -61,7 +61,7 @@ public class WildFieldScarecrow extends CardImpl {
// {2}, Sacrifice Wild-Field Scarecrow: Search your library for up to two basic land cards, reveal them, and put them into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD), true, true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new GenericManaCost(2));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/w/WildGriffin.java b/Mage.Sets/src/mage/cards/w/WildGriffin.java
index a7d73a1eb2a..bfbecb50c10 100644
--- a/Mage.Sets/src/mage/cards/w/WildGriffin.java
+++ b/Mage.Sets/src/mage/cards/w/WildGriffin.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WildGriffin extends CardImpl {
+public final class WildGriffin extends CardImpl {
public WildGriffin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WildGrowth.java b/Mage.Sets/src/mage/cards/w/WildGrowth.java
index 2893922d83c..67a259c31fc 100644
--- a/Mage.Sets/src/mage/cards/w/WildGrowth.java
+++ b/Mage.Sets/src/mage/cards/w/WildGrowth.java
@@ -54,7 +54,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Plopman
*/
-public class WildGrowth extends CardImpl {
+public final class WildGrowth extends CardImpl {
public WildGrowth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
@@ -67,7 +67,7 @@ public class WildGrowth extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
- // Whenever enchanted land is tapped for mana, its controller adds {G} to their mana pool.
+ // Whenever enchanted land is tapped for mana, its controller adds {G}.
this.addAbility(new WildGrowthTriggeredAbility());
}
@@ -120,6 +120,6 @@ class WildGrowthTriggeredAbility extends TriggeredManaAbility {
@Override
public String getRule() {
- return "Whenever enchanted land is tapped for mana, its controller adds {G} to their mana pool";
+ return "Whenever enchanted land is tapped for mana, its controller adds {G}";
}
}
diff --git a/Mage.Sets/src/mage/cards/w/WildGuess.java b/Mage.Sets/src/mage/cards/w/WildGuess.java
index 9c16ed4e902..985c255d5e7 100644
--- a/Mage.Sets/src/mage/cards/w/WildGuess.java
+++ b/Mage.Sets/src/mage/cards/w/WildGuess.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInHand;
*
* @author North
*/
-public class WildGuess extends CardImpl {
+public final class WildGuess extends CardImpl {
public WildGuess(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WildHolocron.java b/Mage.Sets/src/mage/cards/w/WildHolocron.java
index 3d0fa778f12..3e1d72a2129 100644
--- a/Mage.Sets/src/mage/cards/w/WildHolocron.java
+++ b/Mage.Sets/src/mage/cards/w/WildHolocron.java
@@ -49,7 +49,7 @@ import mage.counters.CounterType;
*
* @author Styxo
*/
-public class WildHolocron extends CardImpl {
+public final class WildHolocron extends CardImpl {
public WildHolocron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
diff --git a/Mage.Sets/src/mage/cards/w/WildHunger.java b/Mage.Sets/src/mage/cards/w/WildHunger.java
index 2702b8545fd..5c1bedd2e50 100644
--- a/Mage.Sets/src/mage/cards/w/WildHunger.java
+++ b/Mage.Sets/src/mage/cards/w/WildHunger.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class WildHunger extends CardImpl {
+public final class WildHunger extends CardImpl {
public WildHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildInstincts.java b/Mage.Sets/src/mage/cards/w/WildInstincts.java
index 0dea866d011..874ec066ed6 100644
--- a/Mage.Sets/src/mage/cards/w/WildInstincts.java
+++ b/Mage.Sets/src/mage/cards/w/WildInstincts.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WildInstincts extends CardImpl {
+public final class WildInstincts extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/w/WildJhovall.java b/Mage.Sets/src/mage/cards/w/WildJhovall.java
index 54015077f96..38aa3c07b4e 100644
--- a/Mage.Sets/src/mage/cards/w/WildJhovall.java
+++ b/Mage.Sets/src/mage/cards/w/WildJhovall.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WildJhovall extends CardImpl {
+public final class WildJhovall extends CardImpl {
public WildJhovall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WildLeotau.java b/Mage.Sets/src/mage/cards/w/WildLeotau.java
index 9bf545c5f4e..06b3c1d2a53 100644
--- a/Mage.Sets/src/mage/cards/w/WildLeotau.java
+++ b/Mage.Sets/src/mage/cards/w/WildLeotau.java
@@ -43,7 +43,7 @@ import mage.constants.TargetController;
*
* @author Loki
*/
-public class WildLeotau extends CardImpl {
+public final class WildLeotau extends CardImpl {
public WildLeotau(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildMammoth.java b/Mage.Sets/src/mage/cards/w/WildMammoth.java
index 3deee0822d3..d9b8267c418 100644
--- a/Mage.Sets/src/mage/cards/w/WildMammoth.java
+++ b/Mage.Sets/src/mage/cards/w/WildMammoth.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class WildMammoth extends CardImpl {
+public final class WildMammoth extends CardImpl {
public WildMammoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildMight.java b/Mage.Sets/src/mage/cards/w/WildMight.java
index e983300bbe0..4ea52135402 100644
--- a/Mage.Sets/src/mage/cards/w/WildMight.java
+++ b/Mage.Sets/src/mage/cards/w/WildMight.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WildMight extends CardImpl {
+public final class WildMight extends CardImpl {
public WildMight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildMongrel.java b/Mage.Sets/src/mage/cards/w/WildMongrel.java
index 119206fa726..e7f994fbb79 100644
--- a/Mage.Sets/src/mage/cards/w/WildMongrel.java
+++ b/Mage.Sets/src/mage/cards/w/WildMongrel.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCardInHand;
/**
* @author magenoxx_at_gmail.com
*/
-public class WildMongrel extends CardImpl {
+public final class WildMongrel extends CardImpl {
public WildMongrel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildNacatl.java b/Mage.Sets/src/mage/cards/w/WildNacatl.java
index 72e877f2055..50136b898f7 100644
--- a/Mage.Sets/src/mage/cards/w/WildNacatl.java
+++ b/Mage.Sets/src/mage/cards/w/WildNacatl.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WildNacatl extends CardImpl {
+public final class WildNacatl extends CardImpl {
private static final FilterPermanent filter1 = new FilterPermanent("Mountain");
private static final FilterPermanent filter2 = new FilterPermanent("Plains");
diff --git a/Mage.Sets/src/mage/cards/w/WildOnslaught.java b/Mage.Sets/src/mage/cards/w/WildOnslaught.java
index e813c23d551..48f2212f7d8 100644
--- a/Mage.Sets/src/mage/cards/w/WildOnslaught.java
+++ b/Mage.Sets/src/mage/cards/w/WildOnslaught.java
@@ -42,7 +42,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class WildOnslaught extends CardImpl {
+public final class WildOnslaught extends CardImpl {
public WildOnslaught(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildOx.java b/Mage.Sets/src/mage/cards/w/WildOx.java
index dfba3af0ba2..e5e30183df0 100644
--- a/Mage.Sets/src/mage/cards/w/WildOx.java
+++ b/Mage.Sets/src/mage/cards/w/WildOx.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class WildOx extends CardImpl {
+public final class WildOx extends CardImpl {
public WildOx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildPair.java b/Mage.Sets/src/mage/cards/w/WildPair.java
index 807bae7f40c..3ab51862ef7 100644
--- a/Mage.Sets/src/mage/cards/w/WildPair.java
+++ b/Mage.Sets/src/mage/cards/w/WildPair.java
@@ -53,7 +53,7 @@ import mage.watchers.common.CastFromHandWatcher;
*
* @author fenhl
*/
-public class WildPair extends CardImpl {
+public final class WildPair extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature");
diff --git a/Mage.Sets/src/mage/cards/w/WildResearch.java b/Mage.Sets/src/mage/cards/w/WildResearch.java
index e70a4aa59b8..2ca09056e6b 100644
--- a/Mage.Sets/src/mage/cards/w/WildResearch.java
+++ b/Mage.Sets/src/mage/cards/w/WildResearch.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author emerald000
*/
-public class WildResearch extends CardImpl {
+public final class WildResearch extends CardImpl {
private static final FilterCard filterEnchantment = new FilterCard("enchantment card");
private static final FilterCard filterInstant = new FilterCard("instant card");
diff --git a/Mage.Sets/src/mage/cards/w/WildRicochet.java b/Mage.Sets/src/mage/cards/w/WildRicochet.java
index a91900c5cb3..f0a8a8c0559 100644
--- a/Mage.Sets/src/mage/cards/w/WildRicochet.java
+++ b/Mage.Sets/src/mage/cards/w/WildRicochet.java
@@ -43,7 +43,7 @@ import mage.target.TargetStackObject;
*
* @author jeffwadsworth
*/
-public class WildRicochet extends CardImpl {
+public final class WildRicochet extends CardImpl {
private static final FilterStackObject filter = new FilterStackObject("instant or sorcery spell");
diff --git a/Mage.Sets/src/mage/cards/w/WildSlash.java b/Mage.Sets/src/mage/cards/w/WildSlash.java
index 372526698c0..ded7b0618cb 100644
--- a/Mage.Sets/src/mage/cards/w/WildSlash.java
+++ b/Mage.Sets/src/mage/cards/w/WildSlash.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author jeffwadsworth
*/
-public class WildSlash extends CardImpl {
+public final class WildSlash extends CardImpl {
public WildSlash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WildSwing.java b/Mage.Sets/src/mage/cards/w/WildSwing.java
index 7127ad03a34..dd4e383bf2c 100644
--- a/Mage.Sets/src/mage/cards/w/WildSwing.java
+++ b/Mage.Sets/src/mage/cards/w/WildSwing.java
@@ -48,7 +48,7 @@ import mage.util.RandomUtil;
*
* @author jeffwadsworth
*/
-public class WildSwing extends CardImpl {
+public final class WildSwing extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("target nonenchantment permanents");
diff --git a/Mage.Sets/src/mage/cards/w/WildWanderer.java b/Mage.Sets/src/mage/cards/w/WildWanderer.java
index 65c5c2329eb..53c247a775e 100644
--- a/Mage.Sets/src/mage/cards/w/WildWanderer.java
+++ b/Mage.Sets/src/mage/cards/w/WildWanderer.java
@@ -43,7 +43,7 @@ import java.util.UUID;
*
* @author spjspj
*/
-public class WildWanderer extends CardImpl {
+public final class WildWanderer extends CardImpl {
public WildWanderer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
@@ -53,7 +53,7 @@ public class WildWanderer extends CardImpl {
this.toughness = new MageInt(2);
// When Wild Wanderer enters the battlefield, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, true)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true)));
}
public WildWanderer(final WildWanderer card) {
diff --git a/Mage.Sets/src/mage/cards/w/WildWurm.java b/Mage.Sets/src/mage/cards/w/WildWurm.java
index 0d5783fc7d7..d8a82282b05 100644
--- a/Mage.Sets/src/mage/cards/w/WildWurm.java
+++ b/Mage.Sets/src/mage/cards/w/WildWurm.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class WildWurm extends CardImpl {
+public final class WildWurm extends CardImpl {
public WildWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WildbloodPack.java b/Mage.Sets/src/mage/cards/w/WildbloodPack.java
index a52e6ba2002..17db8e53fff 100644
--- a/Mage.Sets/src/mage/cards/w/WildbloodPack.java
+++ b/Mage.Sets/src/mage/cards/w/WildbloodPack.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterAttackingCreature;
/**
* @author nantuko
*/
-public class WildbloodPack extends CardImpl {
+public final class WildbloodPack extends CardImpl {
public WildbloodPack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/w/Wildcall.java b/Mage.Sets/src/mage/cards/w/Wildcall.java
index 05bb2cbaadc..34cb96e6665 100644
--- a/Mage.Sets/src/mage/cards/w/Wildcall.java
+++ b/Mage.Sets/src/mage/cards/w/Wildcall.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class Wildcall extends CardImpl {
+public final class Wildcall extends CardImpl {
public Wildcall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildernessElemental.java b/Mage.Sets/src/mage/cards/w/WildernessElemental.java
index 6dabff311bf..ce2203aa9af 100644
--- a/Mage.Sets/src/mage/cards/w/WildernessElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WildernessElemental.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LoneFox
*/
-public class WildernessElemental extends CardImpl {
+public final class WildernessElemental extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic lands your opponents control");
diff --git a/Mage.Sets/src/mage/cards/w/WildernessHypnotist.java b/Mage.Sets/src/mage/cards/w/WildernessHypnotist.java
index 04200275090..030e218e184 100644
--- a/Mage.Sets/src/mage/cards/w/WildernessHypnotist.java
+++ b/Mage.Sets/src/mage/cards/w/WildernessHypnotist.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class WildernessHypnotist extends CardImpl {
+public final class WildernessHypnotist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red or green creature");
diff --git a/Mage.Sets/src/mage/cards/w/WildestDreams.java b/Mage.Sets/src/mage/cards/w/WildestDreams.java
index a516d080d3c..23db554e124 100644
--- a/Mage.Sets/src/mage/cards/w/WildestDreams.java
+++ b/Mage.Sets/src/mage/cards/w/WildestDreams.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LevelX2
*/
-public class WildestDreams extends CardImpl {
+public final class WildestDreams extends CardImpl {
public WildestDreams(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildfieldBorderpost.java b/Mage.Sets/src/mage/cards/w/WildfieldBorderpost.java
index 97fc1c0716b..8c3d49b00fc 100644
--- a/Mage.Sets/src/mage/cards/w/WildfieldBorderpost.java
+++ b/Mage.Sets/src/mage/cards/w/WildfieldBorderpost.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Loki
*/
-public class WildfieldBorderpost extends CardImpl {
+public final class WildfieldBorderpost extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a basic land");
diff --git a/Mage.Sets/src/mage/cards/w/Wildfire.java b/Mage.Sets/src/mage/cards/w/Wildfire.java
index 553d6ba4d93..72345818563 100644
--- a/Mage.Sets/src/mage/cards/w/Wildfire.java
+++ b/Mage.Sets/src/mage/cards/w/Wildfire.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author Backfir3
*/
-public class Wildfire extends CardImpl {
+public final class Wildfire extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("lands");
diff --git a/Mage.Sets/src/mage/cards/w/WildfireCerberus.java b/Mage.Sets/src/mage/cards/w/WildfireCerberus.java
index fc5ebf81e0e..cd7e506e10f 100644
--- a/Mage.Sets/src/mage/cards/w/WildfireCerberus.java
+++ b/Mage.Sets/src/mage/cards/w/WildfireCerberus.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class WildfireCerberus extends CardImpl {
+public final class WildfireCerberus extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature your opponents control");
diff --git a/Mage.Sets/src/mage/cards/w/WildfireEmissary.java b/Mage.Sets/src/mage/cards/w/WildfireEmissary.java
index 7fe82e65686..63a1d2d5751 100644
--- a/Mage.Sets/src/mage/cards/w/WildfireEmissary.java
+++ b/Mage.Sets/src/mage/cards/w/WildfireEmissary.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class WildfireEmissary extends CardImpl {
+public final class WildfireEmissary extends CardImpl {
public WildfireEmissary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WildfireEternal.java b/Mage.Sets/src/mage/cards/w/WildfireEternal.java
index c489232bbd0..8687d2e3407 100644
--- a/Mage.Sets/src/mage/cards/w/WildfireEternal.java
+++ b/Mage.Sets/src/mage/cards/w/WildfireEternal.java
@@ -29,6 +29,7 @@ package mage.cards.w;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.AttacksAndIsNotBlockedTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -37,8 +38,8 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.filter.FilterCard;
import mage.filter.common.FilterInstantOrSorceryCard;
import mage.game.Game;
@@ -49,7 +50,7 @@ import mage.target.common.TargetCardInHand;
*
* @author spjspj
*/
-public class WildfireEternal extends CardImpl {
+public final class WildfireEternal extends CardImpl {
public WildfireEternal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
@@ -104,7 +105,7 @@ class WildfireEternalCastEffect extends OneShotEffect {
controller.chooseTarget(outcome, target, source, game);
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
return true;
diff --git a/Mage.Sets/src/mage/cards/w/WildgrowthWalker.java b/Mage.Sets/src/mage/cards/w/WildgrowthWalker.java
index 7830ef9d03b..ebeb0083f35 100644
--- a/Mage.Sets/src/mage/cards/w/WildgrowthWalker.java
+++ b/Mage.Sets/src/mage/cards/w/WildgrowthWalker.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class WildgrowthWalker extends CardImpl {
+public final class WildgrowthWalker extends CardImpl {
public WildgrowthWalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildheartInvoker.java b/Mage.Sets/src/mage/cards/w/WildheartInvoker.java
index 610fdcd88f1..38e3a1d78a8 100644
--- a/Mage.Sets/src/mage/cards/w/WildheartInvoker.java
+++ b/Mage.Sets/src/mage/cards/w/WildheartInvoker.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class WildheartInvoker extends CardImpl {
+public final class WildheartInvoker extends CardImpl {
public WildheartInvoker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/Wildsize.java b/Mage.Sets/src/mage/cards/w/Wildsize.java
index 1723e225430..eceeddf0223 100644
--- a/Mage.Sets/src/mage/cards/w/Wildsize.java
+++ b/Mage.Sets/src/mage/cards/w/Wildsize.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class Wildsize extends CardImpl {
+public final class Wildsize extends CardImpl {
public Wildsize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildslayerElves.java b/Mage.Sets/src/mage/cards/w/WildslayerElves.java
index c6eb0b14888..157ba7e30b7 100644
--- a/Mage.Sets/src/mage/cards/w/WildslayerElves.java
+++ b/Mage.Sets/src/mage/cards/w/WildslayerElves.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WildslayerElves extends CardImpl {
+public final class WildslayerElves extends CardImpl {
public WildslayerElves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildwoodGeist.java b/Mage.Sets/src/mage/cards/w/WildwoodGeist.java
index 84f3bf0e5a5..281cc1f031c 100644
--- a/Mage.Sets/src/mage/cards/w/WildwoodGeist.java
+++ b/Mage.Sets/src/mage/cards/w/WildwoodGeist.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class WildwoodGeist extends CardImpl {
+public final class WildwoodGeist extends CardImpl {
public WildwoodGeist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WildwoodRebirth.java b/Mage.Sets/src/mage/cards/w/WildwoodRebirth.java
index 4bea8efa4f0..e849f37b157 100644
--- a/Mage.Sets/src/mage/cards/w/WildwoodRebirth.java
+++ b/Mage.Sets/src/mage/cards/w/WildwoodRebirth.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Plopman
*/
-public class WildwoodRebirth extends CardImpl {
+public final class WildwoodRebirth extends CardImpl {
public WildwoodRebirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WillForgedGolem.java b/Mage.Sets/src/mage/cards/w/WillForgedGolem.java
index 5447f799260..baca0b15e78 100644
--- a/Mage.Sets/src/mage/cards/w/WillForgedGolem.java
+++ b/Mage.Sets/src/mage/cards/w/WillForgedGolem.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class WillForgedGolem extends CardImpl {
+public final class WillForgedGolem extends CardImpl {
public WillForgedGolem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/w/WillKenrith.java b/Mage.Sets/src/mage/cards/w/WillKenrith.java
new file mode 100644
index 00000000000..e215a801a32
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/w/WillKenrith.java
@@ -0,0 +1,149 @@
+/*
+ * 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.w;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.LoyaltyAbility;
+import mage.abilities.common.CanBeYourCommanderAbility;
+import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.DrawCardTargetEffect;
+import mage.abilities.effects.common.GetEmblemTargetPlayerEffect;
+import mage.abilities.effects.common.continuous.LoseAllAbilitiesTargetEffect;
+import mage.abilities.effects.common.continuous.SetPowerToughnessTargetEffect;
+import mage.abilities.effects.common.cost.SpellsCostReductionAllEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.filter.FilterCard;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.game.Game;
+import mage.game.command.emblems.WillKenrithEmblem;
+import mage.target.TargetPlayer;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class WillKenrith extends CardImpl {
+
+ public WillKenrith(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{U}{U}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.WILL);
+ this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(4));
+
+ // +2: Until your next turn, up to two target creatures each have base power and toughness 0/3 and lose all abilities.
+ Ability ability = new LoyaltyAbility(
+ new SetPowerToughnessTargetEffect(0, 3, Duration.UntilYourNextTurn)
+ .setText("until your next turn, up to two target creatures each have base power and toughness 0/3"), 2);
+ ability.addEffect(new LoseAllAbilitiesTargetEffect(Duration.UntilYourNextTurn)
+ .setText("and lose all abilities")
+ );
+ ability.addTarget(new TargetCreaturePermanent(0, 2));
+ this.addAbility(ability);
+
+ // -2: Target player draws two cards. Until your next turn, instant, sorcery, and planeswalker spells that player casts cost 2 less to cast.
+ ability = new LoyaltyAbility(new DrawCardTargetEffect(2), -2);
+ ability.addEffect(new WillKenrithCostReductionEffect());
+ ability.addTarget(new TargetPlayer());
+ this.addAbility(ability);
+
+ // -8: Target player gets an emblem with "Whenever you cast an instant or sorcery spell, copy it. You may choose new targets for the copy."
+ Effect effect = new GetEmblemTargetPlayerEffect(new WillKenrithEmblem());
+ effect.setText(
+ "Target player gets an emblem with "
+ + "\"Whenever you cast an instant or sorcery spell, "
+ + "copy it. You may choose new targets for the copy.\""
+ );
+ ability = new LoyaltyAbility(effect, -8);
+ ability.addTarget(new TargetPlayer());
+ this.addAbility(ability);
+
+ // Partner with Rowan Kenrith
+ this.addAbility(new PartnerWithAbility("Rowan Kenrith", true, false));
+
+ // Will Kenrith can be your commander.
+ this.addAbility(CanBeYourCommanderAbility.getInstance());
+ }
+
+ public WillKenrith(final WillKenrith card) {
+ super(card);
+ }
+
+ @Override
+ public WillKenrith copy() {
+ return new WillKenrith(this);
+ }
+}
+
+class WillKenrithCostReductionEffect extends OneShotEffect {
+
+ private static final FilterCard filter = new FilterCard();
+
+ static {
+ filter.add(Predicates.or(
+ new CardTypePredicate(CardType.INSTANT),
+ new CardTypePredicate(CardType.SORCERY),
+ new CardTypePredicate(CardType.PLANESWALKER)
+ ));
+ }
+
+ WillKenrithCostReductionEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Until your next turn, instant, sorcery, and planeswalker spells that player casts cost {2} less to cast.";
+ }
+
+ WillKenrithCostReductionEffect(final WillKenrithCostReductionEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public WillKenrithCostReductionEffect copy() {
+ return new WillKenrithCostReductionEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ SpellsCostReductionAllEffect effect = new SpellsCostReductionAllEffect(filter, 2);
+ effect.setDuration(Duration.UntilYourNextTurn);
+ effect.setControllerId(source.getFirstTarget());
+ game.addEffect(effect, source);
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/w/WillOTheWisp.java b/Mage.Sets/src/mage/cards/w/WillOTheWisp.java
index f4511906c11..b259b6adac8 100644
--- a/Mage.Sets/src/mage/cards/w/WillOTheWisp.java
+++ b/Mage.Sets/src/mage/cards/w/WillOTheWisp.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author dustinconrad
*/
-public class WillOTheWisp extends CardImpl {
+public final class WillOTheWisp extends CardImpl {
public WillOTheWisp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WillOfTheNaga.java b/Mage.Sets/src/mage/cards/w/WillOfTheNaga.java
index 7e0a8afb1db..e66960b97ea 100644
--- a/Mage.Sets/src/mage/cards/w/WillOfTheNaga.java
+++ b/Mage.Sets/src/mage/cards/w/WillOfTheNaga.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WillOfTheNaga extends CardImpl {
+public final class WillOfTheNaga extends CardImpl {
public WillOfTheNaga(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/Willbender.java b/Mage.Sets/src/mage/cards/w/Willbender.java
index 6cdaa831c98..5e30e55e7b4 100644
--- a/Mage.Sets/src/mage/cards/w/Willbender.java
+++ b/Mage.Sets/src/mage/cards/w/Willbender.java
@@ -46,7 +46,7 @@ import mage.target.TargetStackObject;
*
* @author LevelX2
*/
-public class Willbender extends CardImpl {
+public final class Willbender extends CardImpl {
private static final FilterStackObject FILTER = new FilterStackObject("spell or ability with a single target");
diff --git a/Mage.Sets/src/mage/cards/w/Willbreaker.java b/Mage.Sets/src/mage/cards/w/Willbreaker.java
index 757bb20d2b4..7936c2ac447 100644
--- a/Mage.Sets/src/mage/cards/w/Willbreaker.java
+++ b/Mage.Sets/src/mage/cards/w/Willbreaker.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class Willbreaker extends CardImpl {
+public final class Willbreaker extends CardImpl {
public Willbreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WillingTestSubject.java b/Mage.Sets/src/mage/cards/w/WillingTestSubject.java
index ebafcff0a1a..dbe1ddd9f2a 100644
--- a/Mage.Sets/src/mage/cards/w/WillingTestSubject.java
+++ b/Mage.Sets/src/mage/cards/w/WillingTestSubject.java
@@ -50,7 +50,7 @@ import mage.game.events.GameEvent;
*
* @author spjspj
*/
-public class WillingTestSubject extends CardImpl {
+public final class WillingTestSubject extends CardImpl {
public WillingTestSubject(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WillowDryad.java b/Mage.Sets/src/mage/cards/w/WillowDryad.java
index 6a51d35ece8..d8d2d6a2162 100644
--- a/Mage.Sets/src/mage/cards/w/WillowDryad.java
+++ b/Mage.Sets/src/mage/cards/w/WillowDryad.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class WillowDryad extends CardImpl {
+public final class WillowDryad extends CardImpl {
public WillowDryad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WillowElf.java b/Mage.Sets/src/mage/cards/w/WillowElf.java
index 5cd70e66db4..f571ba147d9 100644
--- a/Mage.Sets/src/mage/cards/w/WillowElf.java
+++ b/Mage.Sets/src/mage/cards/w/WillowElf.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WillowElf extends CardImpl {
+public final class WillowElf extends CardImpl {
public WillowElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WillowFaerie.java b/Mage.Sets/src/mage/cards/w/WillowFaerie.java
index 981f2e41760..89f7a489273 100644
--- a/Mage.Sets/src/mage/cards/w/WillowFaerie.java
+++ b/Mage.Sets/src/mage/cards/w/WillowFaerie.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WillowFaerie extends CardImpl {
+public final class WillowFaerie extends CardImpl {
public WillowFaerie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WillowPriestess.java b/Mage.Sets/src/mage/cards/w/WillowPriestess.java
index 3b1d6e2e345..27bcdd20372 100644
--- a/Mage.Sets/src/mage/cards/w/WillowPriestess.java
+++ b/Mage.Sets/src/mage/cards/w/WillowPriestess.java
@@ -34,7 +34,7 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
@@ -54,7 +54,7 @@ import mage.target.TargetPermanent;
*
* @author fireshoes
*/
-public class WillowPriestess extends CardImpl {
+public final class WillowPriestess extends CardImpl {
private static final FilterPermanentCard filter = new FilterPermanentCard("Faerie");
private static final FilterCreaturePermanent greenCreature = new FilterCreaturePermanent("green creature");
@@ -73,7 +73,7 @@ public class WillowPriestess extends CardImpl {
// {T}: You may put a Faerie permanent card from your hand onto the battlefield.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new PutPermanentOnBattlefieldEffect(filter),
+ new PutCardFromHandOntoBattlefieldEffect(filter),
new TapSourceCost()));
// {2}{G}: Target green creature gains protection from black until end of turn.
diff --git a/Mage.Sets/src/mage/cards/w/WillowSatyr.java b/Mage.Sets/src/mage/cards/w/WillowSatyr.java
index 1e4e04e8674..2f72114e63b 100644
--- a/Mage.Sets/src/mage/cards/w/WillowSatyr.java
+++ b/Mage.Sets/src/mage/cards/w/WillowSatyr.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WillowSatyr extends CardImpl {
+public final class WillowSatyr extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature");
diff --git a/Mage.Sets/src/mage/cards/w/WiltLeafCavaliers.java b/Mage.Sets/src/mage/cards/w/WiltLeafCavaliers.java
index 73cd76177d4..0dbdf39b596 100644
--- a/Mage.Sets/src/mage/cards/w/WiltLeafCavaliers.java
+++ b/Mage.Sets/src/mage/cards/w/WiltLeafCavaliers.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WiltLeafCavaliers extends CardImpl {
+public final class WiltLeafCavaliers extends CardImpl {
public WiltLeafCavaliers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G/W}{G/W}{G/W}");
diff --git a/Mage.Sets/src/mage/cards/w/WiltLeafLiege.java b/Mage.Sets/src/mage/cards/w/WiltLeafLiege.java
index ebabd4d3104..f62abdad236 100644
--- a/Mage.Sets/src/mage/cards/w/WiltLeafLiege.java
+++ b/Mage.Sets/src/mage/cards/w/WiltLeafLiege.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author Plopman
*/
-public class WiltLeafLiege extends CardImpl {
+public final class WiltLeafLiege extends CardImpl {
private static final FilterCreaturePermanent filterGreen = new FilterCreaturePermanent("green creatures you control");
private static final FilterCreaturePermanent filterWhite = new FilterCreaturePermanent("white creatures you control");
diff --git a/Mage.Sets/src/mage/cards/w/WilyBandar.java b/Mage.Sets/src/mage/cards/w/WilyBandar.java
index d46345060cc..24dd739c505 100644
--- a/Mage.Sets/src/mage/cards/w/WilyBandar.java
+++ b/Mage.Sets/src/mage/cards/w/WilyBandar.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author spjspj
*/
-public class WilyBandar extends CardImpl {
+public final class WilyBandar extends CardImpl {
public WilyBandar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WilyGoblin.java b/Mage.Sets/src/mage/cards/w/WilyGoblin.java
index a7a264eaf2d..71770339356 100644
--- a/Mage.Sets/src/mage/cards/w/WilyGoblin.java
+++ b/Mage.Sets/src/mage/cards/w/WilyGoblin.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.TreasureToken;
*
* @author TheElk801
*/
-public class WilyGoblin extends CardImpl {
+public final class WilyGoblin extends CardImpl {
public WilyGoblin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WindDancer.java b/Mage.Sets/src/mage/cards/w/WindDancer.java
index dbe93ba3590..b50673369a2 100644
--- a/Mage.Sets/src/mage/cards/w/WindDancer.java
+++ b/Mage.Sets/src/mage/cards/w/WindDancer.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class WindDancer extends CardImpl {
+public final class WindDancer extends CardImpl {
public WindDancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindDrake.java b/Mage.Sets/src/mage/cards/w/WindDrake.java
index a93ad6ee41c..6bfcec40334 100644
--- a/Mage.Sets/src/mage/cards/w/WindDrake.java
+++ b/Mage.Sets/src/mage/cards/w/WindDrake.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class WindDrake extends CardImpl {
+public final class WindDrake extends CardImpl {
public WindDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindKinRaiders.java b/Mage.Sets/src/mage/cards/w/WindKinRaiders.java
index e6e321151cf..063ea3a40b2 100644
--- a/Mage.Sets/src/mage/cards/w/WindKinRaiders.java
+++ b/Mage.Sets/src/mage/cards/w/WindKinRaiders.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class WindKinRaiders extends CardImpl {
+public final class WindKinRaiders extends CardImpl {
public WindKinRaiders(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindSail.java b/Mage.Sets/src/mage/cards/w/WindSail.java
index 21ba0fb6bc7..bbf7a2c631f 100644
--- a/Mage.Sets/src/mage/cards/w/WindSail.java
+++ b/Mage.Sets/src/mage/cards/w/WindSail.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WindSail extends CardImpl {
+public final class WindSail extends CardImpl {
public WindSail(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindScarredCrag.java b/Mage.Sets/src/mage/cards/w/WindScarredCrag.java
index a185c737339..556a51bd3a8 100644
--- a/Mage.Sets/src/mage/cards/w/WindScarredCrag.java
+++ b/Mage.Sets/src/mage/cards/w/WindScarredCrag.java
@@ -41,7 +41,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class WindScarredCrag extends CardImpl {
+public final class WindScarredCrag extends CardImpl {
public WindScarredCrag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/w/WindShear.java b/Mage.Sets/src/mage/cards/w/WindShear.java
index 4d70f93c00f..97328c4af36 100644
--- a/Mage.Sets/src/mage/cards/w/WindShear.java
+++ b/Mage.Sets/src/mage/cards/w/WindShear.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author L_J
*/
-public class WindShear extends CardImpl {
+public final class WindShear extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("Attacking creatures with flying");
diff --git a/Mage.Sets/src/mage/cards/w/WindSpirit.java b/Mage.Sets/src/mage/cards/w/WindSpirit.java
index 399e0b95231..faa95759ca3 100644
--- a/Mage.Sets/src/mage/cards/w/WindSpirit.java
+++ b/Mage.Sets/src/mage/cards/w/WindSpirit.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WindSpirit extends CardImpl {
+public final class WindSpirit extends CardImpl {
public WindSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindStrider.java b/Mage.Sets/src/mage/cards/w/WindStrider.java
index 32d97120db8..51e0974da38 100644
--- a/Mage.Sets/src/mage/cards/w/WindStrider.java
+++ b/Mage.Sets/src/mage/cards/w/WindStrider.java
@@ -40,7 +40,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class WindStrider extends CardImpl {
+public final class WindStrider extends CardImpl {
public WindStrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindZendikon.java b/Mage.Sets/src/mage/cards/w/WindZendikon.java
index 836e9fafdc8..530a61e808f 100644
--- a/Mage.Sets/src/mage/cards/w/WindZendikon.java
+++ b/Mage.Sets/src/mage/cards/w/WindZendikon.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author jeffwadsworth
*/
-public class WindZendikon extends CardImpl {
+public final class WindZendikon extends CardImpl {
public WindZendikon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindbornMuse.java b/Mage.Sets/src/mage/cards/w/WindbornMuse.java
index f18198f17c8..9392b07e03a 100644
--- a/Mage.Sets/src/mage/cards/w/WindbornMuse.java
+++ b/Mage.Sets/src/mage/cards/w/WindbornMuse.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class WindbornMuse extends CardImpl {
+public final class WindbornMuse extends CardImpl {
public WindbornMuse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WindborneCharge.java b/Mage.Sets/src/mage/cards/w/WindborneCharge.java
index ea193e508c1..5e7ee6814e6 100644
--- a/Mage.Sets/src/mage/cards/w/WindborneCharge.java
+++ b/Mage.Sets/src/mage/cards/w/WindborneCharge.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class WindborneCharge extends CardImpl {
+public final class WindborneCharge extends CardImpl {
public WindborneCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WindbriskHeights.java b/Mage.Sets/src/mage/cards/w/WindbriskHeights.java
index 1a65ddf2ca2..0abfe4a1aac 100644
--- a/Mage.Sets/src/mage/cards/w/WindbriskHeights.java
+++ b/Mage.Sets/src/mage/cards/w/WindbriskHeights.java
@@ -47,7 +47,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author LevelX2
*/
-public class WindbriskHeights extends CardImpl {
+public final class WindbriskHeights extends CardImpl {
public WindbriskHeights(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/w/WindbriskRaptor.java b/Mage.Sets/src/mage/cards/w/WindbriskRaptor.java
index 5dcb0092435..cd393f4a0f7 100644
--- a/Mage.Sets/src/mage/cards/w/WindbriskRaptor.java
+++ b/Mage.Sets/src/mage/cards/w/WindbriskRaptor.java
@@ -48,7 +48,7 @@ import mage.filter.predicate.permanent.AttackingPredicate;
* @author jeffwadsworth
*/
-public class WindbriskRaptor extends CardImpl {
+public final class WindbriskRaptor extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/w/Windfall.java b/Mage.Sets/src/mage/cards/w/Windfall.java
index e6ebc1eadd2..45cebba6f2a 100644
--- a/Mage.Sets/src/mage/cards/w/Windfall.java
+++ b/Mage.Sets/src/mage/cards/w/Windfall.java
@@ -42,7 +42,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class Windfall extends CardImpl {
+public final class Windfall extends CardImpl {
public Windfall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindgraceAcolyte.java b/Mage.Sets/src/mage/cards/w/WindgraceAcolyte.java
index 92b1603bb51..9cf5e35af0c 100644
--- a/Mage.Sets/src/mage/cards/w/WindgraceAcolyte.java
+++ b/Mage.Sets/src/mage/cards/w/WindgraceAcolyte.java
@@ -1,73 +1,73 @@
-/*
- * 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.w;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.Ability;
-import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.GainLifeEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
-import mage.abilities.keyword.FlyingAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.SubType;
-
-/**
- *
- * @author LevelX2
- */
-public class WindgraceAcolyte extends CardImpl {
-
- public WindgraceAcolyte(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
-
- this.subtype.add(SubType.CAT);
- this.subtype.add(SubType.WARRIOR);
- this.power = new MageInt(3);
- this.toughness = new MageInt(2);
-
- // Flying
- this.addAbility(FlyingAbility.getInstance());
-
- // When Windgrace Acolyte enters the battlefield, put the top three cards of your library into your graveyard and you gain 3 life.
- Ability ability = new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(3), false);
- ability.addEffect(new GainLifeEffect(3).setText("and you gain 3 life"));
- this.addAbility(ability);
- }
-
- public WindgraceAcolyte(final WindgraceAcolyte card) {
- super(card);
- }
-
- @Override
- public WindgraceAcolyte copy() {
- return new WindgraceAcolyte(this);
- }
-}
+/*
+ * 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.w;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class WindgraceAcolyte extends CardImpl {
+
+ public WindgraceAcolyte(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
+
+ this.subtype.add(SubType.CAT);
+ this.subtype.add(SubType.WARRIOR);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(2);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // When Windgrace Acolyte enters the battlefield, put the top three cards of your library into your graveyard and you gain 3 life.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(3), false);
+ ability.addEffect(new GainLifeEffect(3).setText("and you gain 3 life"));
+ this.addAbility(ability);
+ }
+
+ public WindgraceAcolyte(final WindgraceAcolyte card) {
+ super(card);
+ }
+
+ @Override
+ public WindgraceAcolyte copy() {
+ return new WindgraceAcolyte(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/w/WindingCanyons.java b/Mage.Sets/src/mage/cards/w/WindingCanyons.java
index 6228f5a553d..0bdc9d5fa1e 100644
--- a/Mage.Sets/src/mage/cards/w/WindingCanyons.java
+++ b/Mage.Sets/src/mage/cards/w/WindingCanyons.java
@@ -47,7 +47,7 @@ import mage.filter.common.FilterCreatureCard;
*
* @author emerald000
*/
-public class WindingCanyons extends CardImpl {
+public final class WindingCanyons extends CardImpl {
public WindingCanyons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/w/WindingConstrictor.java b/Mage.Sets/src/mage/cards/w/WindingConstrictor.java
index 01d253005ab..fdd6ea9388e 100644
--- a/Mage.Sets/src/mage/cards/w/WindingConstrictor.java
+++ b/Mage.Sets/src/mage/cards/w/WindingConstrictor.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WindingConstrictor extends CardImpl {
+public final class WindingConstrictor extends CardImpl {
public WindingConstrictor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WindingWurm.java b/Mage.Sets/src/mage/cards/w/WindingWurm.java
index 4149b5e4aee..18269e2e53e 100644
--- a/Mage.Sets/src/mage/cards/w/WindingWurm.java
+++ b/Mage.Sets/src/mage/cards/w/WindingWurm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class WindingWurm extends CardImpl {
+public final class WindingWurm extends CardImpl {
public WindingWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WindreaderSphinx.java b/Mage.Sets/src/mage/cards/w/WindreaderSphinx.java
index 4144fe0491e..c73c24a5a16 100644
--- a/Mage.Sets/src/mage/cards/w/WindreaderSphinx.java
+++ b/Mage.Sets/src/mage/cards/w/WindreaderSphinx.java
@@ -48,7 +48,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class WindreaderSphinx extends CardImpl {
+public final class WindreaderSphinx extends CardImpl {
public WindreaderSphinx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindreaperFalcon.java b/Mage.Sets/src/mage/cards/w/WindreaperFalcon.java
index bf4eb10562b..e30de219bff 100644
--- a/Mage.Sets/src/mage/cards/w/WindreaperFalcon.java
+++ b/Mage.Sets/src/mage/cards/w/WindreaperFalcon.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WindreaperFalcon extends CardImpl {
+public final class WindreaperFalcon extends CardImpl {
public WindreaperFalcon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/Windreaver.java b/Mage.Sets/src/mage/cards/w/Windreaver.java
index 316686daa50..89d539193d0 100644
--- a/Mage.Sets/src/mage/cards/w/Windreaver.java
+++ b/Mage.Sets/src/mage/cards/w/Windreaver.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class Windreaver extends CardImpl {
+public final class Windreaver extends CardImpl {
public Windreaver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindriderEel.java b/Mage.Sets/src/mage/cards/w/WindriderEel.java
index d1fb982ec2d..fa70f00bf20 100644
--- a/Mage.Sets/src/mage/cards/w/WindriderEel.java
+++ b/Mage.Sets/src/mage/cards/w/WindriderEel.java
@@ -43,7 +43,7 @@ import mage.constants.Duration;
*
* @author Loki
*/
-public class WindriderEel extends CardImpl {
+public final class WindriderEel extends CardImpl {
public WindriderEel (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindriderPatrol.java b/Mage.Sets/src/mage/cards/w/WindriderPatrol.java
index 2b9945e9a72..a414e9a3e4c 100644
--- a/Mage.Sets/src/mage/cards/w/WindriderPatrol.java
+++ b/Mage.Sets/src/mage/cards/w/WindriderPatrol.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WindriderPatrol extends CardImpl {
+public final class WindriderPatrol extends CardImpl {
public WindriderPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindsOfChange.java b/Mage.Sets/src/mage/cards/w/WindsOfChange.java
index afbbe7bf52c..adf03cdad88 100644
--- a/Mage.Sets/src/mage/cards/w/WindsOfChange.java
+++ b/Mage.Sets/src/mage/cards/w/WindsOfChange.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WindsOfChange extends CardImpl {
+public final class WindsOfChange extends CardImpl {
public WindsOfChange(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WindsOfQalSisma.java b/Mage.Sets/src/mage/cards/w/WindsOfQalSisma.java
index 86f9af0e57b..ee25f180a89 100644
--- a/Mage.Sets/src/mage/cards/w/WindsOfQalSisma.java
+++ b/Mage.Sets/src/mage/cards/w/WindsOfQalSisma.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class WindsOfQalSisma extends CardImpl {
+public final class WindsOfQalSisma extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control");
diff --git a/Mage.Sets/src/mage/cards/w/WindsOfRath.java b/Mage.Sets/src/mage/cards/w/WindsOfRath.java
index b10ecb5c35a..02a05234a9b 100644
--- a/Mage.Sets/src/mage/cards/w/WindsOfRath.java
+++ b/Mage.Sets/src/mage/cards/w/WindsOfRath.java
@@ -40,7 +40,7 @@ import mage.filter.predicate.permanent.EnchantedPredicate;
*
* @author LevelX2
*/
-public class WindsOfRath extends CardImpl {
+public final class WindsOfRath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures that aren't enchanted");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WindsOfRebuke.java b/Mage.Sets/src/mage/cards/w/WindsOfRebuke.java
index 01c808643c6..a22febe9055 100644
--- a/Mage.Sets/src/mage/cards/w/WindsOfRebuke.java
+++ b/Mage.Sets/src/mage/cards/w/WindsOfRebuke.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author anonymous
*/
-public class WindsOfRebuke extends CardImpl {
+public final class WindsOfRebuke extends CardImpl {
public WindsOfRebuke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/Windscouter.java b/Mage.Sets/src/mage/cards/w/Windscouter.java
index 4cce776c0b2..a1089ee742c 100644
--- a/Mage.Sets/src/mage/cards/w/Windscouter.java
+++ b/Mage.Sets/src/mage/cards/w/Windscouter.java
@@ -44,7 +44,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class Windscouter extends CardImpl {
+public final class Windscouter extends CardImpl {
public Windscouter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WindseekerCentaur.java b/Mage.Sets/src/mage/cards/w/WindseekerCentaur.java
index 4b10bc7b0e2..0a316706648 100644
--- a/Mage.Sets/src/mage/cards/w/WindseekerCentaur.java
+++ b/Mage.Sets/src/mage/cards/w/WindseekerCentaur.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class WindseekerCentaur extends CardImpl {
+public final class WindseekerCentaur extends CardImpl {
public WindseekerCentaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/Windstorm.java b/Mage.Sets/src/mage/cards/w/Windstorm.java
index ce3f106458a..4d6f21f7002 100644
--- a/Mage.Sets/src/mage/cards/w/Windstorm.java
+++ b/Mage.Sets/src/mage/cards/w/Windstorm.java
@@ -41,7 +41,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author North
*/
-public class Windstorm extends CardImpl {
+public final class Windstorm extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/w/WindsweptHeath.java b/Mage.Sets/src/mage/cards/w/WindsweptHeath.java
index f5765f3a239..e5818a28de5 100644
--- a/Mage.Sets/src/mage/cards/w/WindsweptHeath.java
+++ b/Mage.Sets/src/mage/cards/w/WindsweptHeath.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class WindsweptHeath extends CardImpl {
+public final class WindsweptHeath extends CardImpl {
public WindsweptHeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/w/WindwrightMage.java b/Mage.Sets/src/mage/cards/w/WindwrightMage.java
index 23bb5f59358..5aa66c11df6 100644
--- a/Mage.Sets/src/mage/cards/w/WindwrightMage.java
+++ b/Mage.Sets/src/mage/cards/w/WindwrightMage.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author North
*/
-public class WindwrightMage extends CardImpl {
+public final class WindwrightMage extends CardImpl {
public WindwrightMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WineOfBloodAndIron.java b/Mage.Sets/src/mage/cards/w/WineOfBloodAndIron.java
index 74a3a2d1ec1..47671dc3980 100644
--- a/Mage.Sets/src/mage/cards/w/WineOfBloodAndIron.java
+++ b/Mage.Sets/src/mage/cards/w/WineOfBloodAndIron.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class WineOfBloodAndIron extends CardImpl {
+public final class WineOfBloodAndIron extends CardImpl {
public WineOfBloodAndIron(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WingPuncture.java b/Mage.Sets/src/mage/cards/w/WingPuncture.java
index 64f170fcac6..25957f09dad 100644
--- a/Mage.Sets/src/mage/cards/w/WingPuncture.java
+++ b/Mage.Sets/src/mage/cards/w/WingPuncture.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class WingPuncture extends CardImpl {
+public final class WingPuncture extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/w/WingShards.java b/Mage.Sets/src/mage/cards/w/WingShards.java
index a868def10be..4a8f76ab47d 100644
--- a/Mage.Sets/src/mage/cards/w/WingShards.java
+++ b/Mage.Sets/src/mage/cards/w/WingShards.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author Plopman
*/
-public class WingShards extends CardImpl {
+public final class WingShards extends CardImpl {
public WingShards(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WingSnare.java b/Mage.Sets/src/mage/cards/w/WingSnare.java
index 7f91ccc16b3..bae97633e5c 100644
--- a/Mage.Sets/src/mage/cards/w/WingSnare.java
+++ b/Mage.Sets/src/mage/cards/w/WingSnare.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class WingSnare extends CardImpl {
+public final class WingSnare extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
diff --git a/Mage.Sets/src/mage/cards/w/WingSplicer.java b/Mage.Sets/src/mage/cards/w/WingSplicer.java
index c3d895c6239..474b8721558 100644
--- a/Mage.Sets/src/mage/cards/w/WingSplicer.java
+++ b/Mage.Sets/src/mage/cards/w/WingSplicer.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.GolemToken;
*
* @author North
*/
-public class WingSplicer extends CardImpl {
+public final class WingSplicer extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Golem creatures");
diff --git a/Mage.Sets/src/mage/cards/w/WingStorm.java b/Mage.Sets/src/mage/cards/w/WingStorm.java
index 425fc90473a..d552d2e2ff0 100644
--- a/Mage.Sets/src/mage/cards/w/WingStorm.java
+++ b/Mage.Sets/src/mage/cards/w/WingStorm.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author LevelX2 & L_J
*/
-public class WingStorm extends CardImpl {
+public final class WingStorm extends CardImpl {
public WingStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WingbeatWarrior.java b/Mage.Sets/src/mage/cards/w/WingbeatWarrior.java
index 91522409983..1884c6dc120 100644
--- a/Mage.Sets/src/mage/cards/w/WingbeatWarrior.java
+++ b/Mage.Sets/src/mage/cards/w/WingbeatWarrior.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WingbeatWarrior extends CardImpl {
+public final class WingbeatWarrior extends CardImpl {
public WingbeatWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/Wingcrafter.java b/Mage.Sets/src/mage/cards/w/Wingcrafter.java
index 10170a885fd..ca754acc8c0 100644
--- a/Mage.Sets/src/mage/cards/w/Wingcrafter.java
+++ b/Mage.Sets/src/mage/cards/w/Wingcrafter.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
* @author noxx
*/
-public class Wingcrafter extends CardImpl {
+public final class Wingcrafter extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, both creatures have flying";
diff --git a/Mage.Sets/src/mage/cards/w/WingedCoatl.java b/Mage.Sets/src/mage/cards/w/WingedCoatl.java
index 4bc2fb60c3b..bbad669c8e3 100644
--- a/Mage.Sets/src/mage/cards/w/WingedCoatl.java
+++ b/Mage.Sets/src/mage/cards/w/WingedCoatl.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class WingedCoatl extends CardImpl {
+public final class WingedCoatl extends CardImpl {
public WingedCoatl (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WingedShepherd.java b/Mage.Sets/src/mage/cards/w/WingedShepherd.java
index 2334f292716..c57996681f2 100644
--- a/Mage.Sets/src/mage/cards/w/WingedShepherd.java
+++ b/Mage.Sets/src/mage/cards/w/WingedShepherd.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class WingedShepherd extends CardImpl {
+public final class WingedShepherd extends CardImpl {
public WingedShepherd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WingedSliver.java b/Mage.Sets/src/mage/cards/w/WingedSliver.java
index 2c99157c128..67fe89452c4 100644
--- a/Mage.Sets/src/mage/cards/w/WingedSliver.java
+++ b/Mage.Sets/src/mage/cards/w/WingedSliver.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
/**
* @author Loki
*/
-public class WingedSliver extends CardImpl {
+public final class WingedSliver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All sliver creatures");
diff --git a/Mage.Sets/src/mage/cards/w/WingedTempleOfOrazca.java b/Mage.Sets/src/mage/cards/w/WingedTempleOfOrazca.java
index c7b2224cfc0..4b730c88c22 100644
--- a/Mage.Sets/src/mage/cards/w/WingedTempleOfOrazca.java
+++ b/Mage.Sets/src/mage/cards/w/WingedTempleOfOrazca.java
@@ -1,123 +1,123 @@
-/*
- * 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.w;
-
-import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.ContinuousEffect;
-import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.InfoEffect;
-import mage.abilities.effects.common.continuous.BoostTargetEffect;
-import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
-import mage.abilities.keyword.FlyingAbility;
-import mage.abilities.mana.AnyColorManaAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.Outcome;
-import mage.constants.SuperType;
-import mage.constants.Zone;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.target.common.TargetControlledCreaturePermanent;
-import mage.target.targetpointer.FixedTarget;
-
-/**
- *
- * @author LevelX2
- */
-public class WingedTempleOfOrazca extends CardImpl {
-
- public WingedTempleOfOrazca(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
-
- this.addSuperType(SuperType.LEGENDARY);
-
- this.nightCard = true;
-
- // (Transforms from Hadana's Climb.)
- Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new InfoEffect("(Transforms from Hadana's Climb.)"));
- ability.setRuleAtTheTop(true);
- this.addAbility(ability);
-
- // {T}: Add one mana of any color.
- this.addAbility(new AnyColorManaAbility());
-
- // {1}{G}{U}, {T}: Target creature you control gains flying and gets +X/+X until end of turn, where X is its power.
- ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new WingedTempleOfOrazcaEffect(), new ManaCostsImpl<>("{1}{G}{U}"));
- ability.addCost(new TapSourceCost());
- ability.addTarget(new TargetControlledCreaturePermanent());
- this.addAbility(ability);
- }
-
- public WingedTempleOfOrazca(final WingedTempleOfOrazca card) {
- super(card);
- }
-
- @Override
- public WingedTempleOfOrazca copy() {
- return new WingedTempleOfOrazca(this);
- }
-}
-
-class WingedTempleOfOrazcaEffect extends OneShotEffect {
-
- public WingedTempleOfOrazcaEffect() {
- super(Outcome.Benefit);
- this.staticText = "it gains flying and gets +X/+X until end of turn, where X is its power";
- }
-
- public WingedTempleOfOrazcaEffect(final WingedTempleOfOrazcaEffect effect) {
- super(effect);
- }
-
- @Override
- public WingedTempleOfOrazcaEffect copy() {
- return new WingedTempleOfOrazcaEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Permanent creature = game.getPermanent(targetPointer.getFirst(game, source));
- if (creature != null && creature.isCreature()) {
- int pow = creature.getPower().getValue();
- ContinuousEffect effect = new BoostTargetEffect(pow, pow, Duration.EndOfTurn);
- effect.setTargetPointer(new FixedTarget(creature, game));
- game.addEffect(effect, source);
- effect = new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn);
- effect.setTargetPointer(new FixedTarget(creature, game));
- game.addEffect(effect, source);
- }
- return true;
- }
-}
+/*
+ * 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.w;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.ContinuousEffect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.InfoEffect;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.abilities.mana.AnyColorManaAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.SuperType;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class WingedTempleOfOrazca extends CardImpl {
+
+ public WingedTempleOfOrazca(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
+
+ this.addSuperType(SuperType.LEGENDARY);
+
+ this.nightCard = true;
+
+ // (Transforms from Hadana's Climb.)
+ Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new InfoEffect("(Transforms from Hadana's Climb.)"));
+ ability.setRuleAtTheTop(true);
+ this.addAbility(ability);
+
+ // {T}: Add one mana of any color.
+ this.addAbility(new AnyColorManaAbility());
+
+ // {1}{G}{U}, {T}: Target creature you control gains flying and gets +X/+X until end of turn, where X is its power.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new WingedTempleOfOrazcaEffect(), new ManaCostsImpl<>("{1}{G}{U}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetControlledCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public WingedTempleOfOrazca(final WingedTempleOfOrazca card) {
+ super(card);
+ }
+
+ @Override
+ public WingedTempleOfOrazca copy() {
+ return new WingedTempleOfOrazca(this);
+ }
+}
+
+class WingedTempleOfOrazcaEffect extends OneShotEffect {
+
+ public WingedTempleOfOrazcaEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "it gains flying and gets +X/+X until end of turn, where X is its power";
+ }
+
+ public WingedTempleOfOrazcaEffect(final WingedTempleOfOrazcaEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public WingedTempleOfOrazcaEffect copy() {
+ return new WingedTempleOfOrazcaEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent creature = game.getPermanent(targetPointer.getFirst(game, source));
+ if (creature != null && creature.isCreature()) {
+ int pow = creature.getPower().getValue();
+ ContinuousEffect effect = new BoostTargetEffect(pow, pow, Duration.EndOfTurn);
+ effect.setTargetPointer(new FixedTarget(creature, game));
+ game.addEffect(effect, source);
+ effect = new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn);
+ effect.setTargetPointer(new FixedTarget(creature, game));
+ game.addEffect(effect, source);
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/w/WingmateRoc.java b/Mage.Sets/src/mage/cards/w/WingmateRoc.java
index 991446ce4e9..213c536c5a9 100644
--- a/Mage.Sets/src/mage/cards/w/WingmateRoc.java
+++ b/Mage.Sets/src/mage/cards/w/WingmateRoc.java
@@ -49,7 +49,7 @@ import mage.watchers.common.PlayerAttackedWatcher;
*
* @author emerald000
*/
-public class WingmateRoc extends CardImpl {
+public final class WingmateRoc extends CardImpl {
public WingmateRoc(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WingrattleScarecrow.java b/Mage.Sets/src/mage/cards/w/WingrattleScarecrow.java
index a791876c0ef..5b082f79c31 100644
--- a/Mage.Sets/src/mage/cards/w/WingrattleScarecrow.java
+++ b/Mage.Sets/src/mage/cards/w/WingrattleScarecrow.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author jeffwadsworth
*/
-public class WingrattleScarecrow extends CardImpl {
+public final class WingrattleScarecrow extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a blue creature");
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("a black creature");
diff --git a/Mage.Sets/src/mage/cards/w/WingsOfAesthir.java b/Mage.Sets/src/mage/cards/w/WingsOfAesthir.java
index 42ff9c980f7..ac5515ec3d3 100644
--- a/Mage.Sets/src/mage/cards/w/WingsOfAesthir.java
+++ b/Mage.Sets/src/mage/cards/w/WingsOfAesthir.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WingsOfAesthir extends CardImpl {
+public final class WingsOfAesthir extends CardImpl {
public WingsOfAesthir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WingsOfHope.java b/Mage.Sets/src/mage/cards/w/WingsOfHope.java
index 8fa8dc2a12e..853df10b9b2 100644
--- a/Mage.Sets/src/mage/cards/w/WingsOfHope.java
+++ b/Mage.Sets/src/mage/cards/w/WingsOfHope.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class WingsOfHope extends CardImpl {
+public final class WingsOfHope extends CardImpl {
public WingsOfHope(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WingsOfTheGuard.java b/Mage.Sets/src/mage/cards/w/WingsOfTheGuard.java
index db43873c678..b877d53d26f 100644
--- a/Mage.Sets/src/mage/cards/w/WingsOfTheGuard.java
+++ b/Mage.Sets/src/mage/cards/w/WingsOfTheGuard.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author emerald000
*/
-public class WingsOfTheGuard extends CardImpl {
+public final class WingsOfTheGuard extends CardImpl {
public WingsOfTheGuard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WingsOfVelisVel.java b/Mage.Sets/src/mage/cards/w/WingsOfVelisVel.java
index 2cb67c03be9..b23b135b6e6 100644
--- a/Mage.Sets/src/mage/cards/w/WingsOfVelisVel.java
+++ b/Mage.Sets/src/mage/cards/w/WingsOfVelisVel.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WingsOfVelisVel extends CardImpl {
+public final class WingsOfVelisVel extends CardImpl {
public WingsOfVelisVel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WingsteedRider.java b/Mage.Sets/src/mage/cards/w/WingsteedRider.java
index a9a2794caa3..c18e8e2de2a 100644
--- a/Mage.Sets/src/mage/cards/w/WingsteedRider.java
+++ b/Mage.Sets/src/mage/cards/w/WingsteedRider.java
@@ -42,7 +42,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class WingsteedRider extends CardImpl {
+public final class WingsteedRider extends CardImpl {
public WingsteedRider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/Winnow.java b/Mage.Sets/src/mage/cards/w/Winnow.java
index ad35003fe40..705afbb0122 100644
--- a/Mage.Sets/src/mage/cards/w/Winnow.java
+++ b/Mage.Sets/src/mage/cards/w/Winnow.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetNonlandPermanent;
*
* @author LoneFox
*/
-public class Winnow extends CardImpl {
+public final class Winnow extends CardImpl {
public Winnow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WinnowerPatrol.java b/Mage.Sets/src/mage/cards/w/WinnowerPatrol.java
index c7e02698866..69aa3453652 100644
--- a/Mage.Sets/src/mage/cards/w/WinnowerPatrol.java
+++ b/Mage.Sets/src/mage/cards/w/WinnowerPatrol.java
@@ -41,7 +41,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class WinnowerPatrol extends CardImpl {
+public final class WinnowerPatrol extends CardImpl {
public WinnowerPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WinterBlast.java b/Mage.Sets/src/mage/cards/w/WinterBlast.java
index 97a6d3103d4..d90a488e287 100644
--- a/Mage.Sets/src/mage/cards/w/WinterBlast.java
+++ b/Mage.Sets/src/mage/cards/w/WinterBlast.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author TheElk801
*/
-public class WinterBlast extends CardImpl {
+public final class WinterBlast extends CardImpl {
public WinterBlast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WinterOrb.java b/Mage.Sets/src/mage/cards/w/WinterOrb.java
index bda3c606d45..06a5b32eba3 100644
--- a/Mage.Sets/src/mage/cards/w/WinterOrb.java
+++ b/Mage.Sets/src/mage/cards/w/WinterOrb.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WinterOrb extends CardImpl {
+public final class WinterOrb extends CardImpl {
public WinterOrb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/w/WinterSky.java b/Mage.Sets/src/mage/cards/w/WinterSky.java
index cd8a2172297..2e25aaf36ef 100644
--- a/Mage.Sets/src/mage/cards/w/WinterSky.java
+++ b/Mage.Sets/src/mage/cards/w/WinterSky.java
@@ -43,7 +43,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class WinterSky extends CardImpl {
+public final class WinterSky extends CardImpl {
public WinterSky(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{R}");
diff --git a/Mage.Sets/src/mage/cards/w/Winterflame.java b/Mage.Sets/src/mage/cards/w/Winterflame.java
index 3ed640840f8..673c0b6a892 100644
--- a/Mage.Sets/src/mage/cards/w/Winterflame.java
+++ b/Mage.Sets/src/mage/cards/w/Winterflame.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class Winterflame extends CardImpl {
+public final class Winterflame extends CardImpl {
public Winterflame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WintermoonMesa.java b/Mage.Sets/src/mage/cards/w/WintermoonMesa.java
index 165cfd2f869..192d07c8124 100644
--- a/Mage.Sets/src/mage/cards/w/WintermoonMesa.java
+++ b/Mage.Sets/src/mage/cards/w/WintermoonMesa.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author anonymous
*/
-public class WintermoonMesa extends CardImpl {
+public final class WintermoonMesa extends CardImpl {
public WintermoonMesa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/w/WintersGrasp.java b/Mage.Sets/src/mage/cards/w/WintersGrasp.java
index db59dfb71a1..e60280aedb5 100644
--- a/Mage.Sets/src/mage/cards/w/WintersGrasp.java
+++ b/Mage.Sets/src/mage/cards/w/WintersGrasp.java
@@ -38,7 +38,7 @@ import mage.target.common.TargetLandPermanent;
*
* @author Loki
*/
-public class WintersGrasp extends CardImpl {
+public final class WintersGrasp extends CardImpl {
public WintersGrasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WintersNight.java b/Mage.Sets/src/mage/cards/w/WintersNight.java
index 2b6b78cb341..83c6d3c92cc 100644
--- a/Mage.Sets/src/mage/cards/w/WintersNight.java
+++ b/Mage.Sets/src/mage/cards/w/WintersNight.java
@@ -47,7 +47,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author L_J
*/
-public class WintersNight extends CardImpl {
+public final class WintersNight extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("a player taps a snow land");
{
@@ -58,10 +58,10 @@ public class WintersNight extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}{G}{W}");
addSuperType(SuperType.WORLD);
- // Whenever a player taps a snow land for mana, that player adds one mana to their mana pool of any type that land produced.
+ // Whenever a player taps a snow land for mana, that player adds one mana of any type that land produced.
// That land doesn't untap during its controller's next untap step.
ManaEffect effect = new AddManaOfAnyTypeProducedEffect();
- effect.setText("that player adds one mana to their mana pool of any type that land produced");
+ effect.setText("that player adds one mana of any type that land produced");
Ability ability = new TapForManaAllTriggeredManaAbility(effect, filter, SetTargetPointer.PERMANENT);
Effect effect2 = new DontUntapInControllersNextUntapStepTargetEffect();
effect2.setText("That land doesn't untap during its controller's next untap step");
diff --git a/Mage.Sets/src/mage/cards/w/WipeAway.java b/Mage.Sets/src/mage/cards/w/WipeAway.java
index 397c4131e1b..98573904d4d 100644
--- a/Mage.Sets/src/mage/cards/w/WipeAway.java
+++ b/Mage.Sets/src/mage/cards/w/WipeAway.java
@@ -39,7 +39,7 @@ import mage.target.TargetPermanent;
*
* @author Plopman
*/
-public class WipeAway extends CardImpl {
+public final class WipeAway extends CardImpl {
public WipeAway(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WipeClean.java b/Mage.Sets/src/mage/cards/w/WipeClean.java
index 7dce6709bd0..728d9f5f62b 100644
--- a/Mage.Sets/src/mage/cards/w/WipeClean.java
+++ b/Mage.Sets/src/mage/cards/w/WipeClean.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author markedagain
*/
-public class WipeClean extends CardImpl {
+public final class WipeClean extends CardImpl {
public WipeClean(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/Wirecat.java b/Mage.Sets/src/mage/cards/w/Wirecat.java
index 8ebbb66d745..67dfceb32ee 100644
--- a/Mage.Sets/src/mage/cards/w/Wirecat.java
+++ b/Mage.Sets/src/mage/cards/w/Wirecat.java
@@ -47,7 +47,7 @@ import java.util.UUID;
*
* @author Derpthemeus
*/
-public class Wirecat extends CardImpl {
+public final class Wirecat extends CardImpl {
public Wirecat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}");
diff --git a/Mage.Sets/src/mage/cards/w/WireflyHive.java b/Mage.Sets/src/mage/cards/w/WireflyHive.java
index 89b9b384de3..94bf494ad64 100644
--- a/Mage.Sets/src/mage/cards/w/WireflyHive.java
+++ b/Mage.Sets/src/mage/cards/w/WireflyHive.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.WireflyToken;
*
* @author fireshoes
*/
-public class WireflyHive extends CardImpl {
+public final class WireflyHive extends CardImpl {
public WireflyHive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WirewoodChanneler.java b/Mage.Sets/src/mage/cards/w/WirewoodChanneler.java
index 7d3c8791192..b1af0d680a8 100644
--- a/Mage.Sets/src/mage/cards/w/WirewoodChanneler.java
+++ b/Mage.Sets/src/mage/cards/w/WirewoodChanneler.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Plopman
*/
-public class WirewoodChanneler extends CardImpl {
+public final class WirewoodChanneler extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Elves");
diff --git a/Mage.Sets/src/mage/cards/w/WirewoodElf.java b/Mage.Sets/src/mage/cards/w/WirewoodElf.java
index 93452638af2..fa8ccd0987b 100644
--- a/Mage.Sets/src/mage/cards/w/WirewoodElf.java
+++ b/Mage.Sets/src/mage/cards/w/WirewoodElf.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Melkhior
*/
-public class WirewoodElf extends CardImpl {
+public final class WirewoodElf extends CardImpl {
public WirewoodElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
this.subtype.add(SubType.ELF);
diff --git a/Mage.Sets/src/mage/cards/w/WirewoodGuardian.java b/Mage.Sets/src/mage/cards/w/WirewoodGuardian.java
index 5c642957b58..550fe789d23 100644
--- a/Mage.Sets/src/mage/cards/w/WirewoodGuardian.java
+++ b/Mage.Sets/src/mage/cards/w/WirewoodGuardian.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Plopman
*/
-public class WirewoodGuardian extends CardImpl {
+public final class WirewoodGuardian extends CardImpl {
public WirewoodGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WirewoodHerald.java b/Mage.Sets/src/mage/cards/w/WirewoodHerald.java
index b2f17ed5097..e6454acdfaa 100644
--- a/Mage.Sets/src/mage/cards/w/WirewoodHerald.java
+++ b/Mage.Sets/src/mage/cards/w/WirewoodHerald.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class WirewoodHerald extends CardImpl {
+public final class WirewoodHerald extends CardImpl {
private static final FilterCard filter = new FilterCard("Elf card");
diff --git a/Mage.Sets/src/mage/cards/w/WirewoodHivemaster.java b/Mage.Sets/src/mage/cards/w/WirewoodHivemaster.java
index 6e9a59973fa..188f79a5766 100644
--- a/Mage.Sets/src/mage/cards/w/WirewoodHivemaster.java
+++ b/Mage.Sets/src/mage/cards/w/WirewoodHivemaster.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.InsectToken;
*
* @author Plopman
*/
-public class WirewoodHivemaster extends CardImpl {
+public final class WirewoodHivemaster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another nontoken Elf");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WirewoodLodge.java b/Mage.Sets/src/mage/cards/w/WirewoodLodge.java
index d87cddee3d6..809154c436f 100644
--- a/Mage.Sets/src/mage/cards/w/WirewoodLodge.java
+++ b/Mage.Sets/src/mage/cards/w/WirewoodLodge.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author Melkhior
*/
-public class WirewoodLodge extends CardImpl {
+public final class WirewoodLodge extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Elf");
diff --git a/Mage.Sets/src/mage/cards/w/WirewoodPride.java b/Mage.Sets/src/mage/cards/w/WirewoodPride.java
index 40b9fbbfe98..4e5c0fe1bd9 100644
--- a/Mage.Sets/src/mage/cards/w/WirewoodPride.java
+++ b/Mage.Sets/src/mage/cards/w/WirewoodPride.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author djbrez
*/
-public class WirewoodPride extends CardImpl {
+public final class WirewoodPride extends CardImpl {
private static final FilterCreaturePermanent elfCount = new FilterCreaturePermanent("Elves");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WirewoodSavage.java b/Mage.Sets/src/mage/cards/w/WirewoodSavage.java
index 2ce7601f34f..ee36d7dfea4 100644
--- a/Mage.Sets/src/mage/cards/w/WirewoodSavage.java
+++ b/Mage.Sets/src/mage/cards/w/WirewoodSavage.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author LevelX2
*/
-public class WirewoodSavage extends CardImpl {
+public final class WirewoodSavage extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Beast");
diff --git a/Mage.Sets/src/mage/cards/w/WirewoodSymbiote.java b/Mage.Sets/src/mage/cards/w/WirewoodSymbiote.java
index 8609cf59bfe..2f0f2a520ff 100644
--- a/Mage.Sets/src/mage/cards/w/WirewoodSymbiote.java
+++ b/Mage.Sets/src/mage/cards/w/WirewoodSymbiote.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jonubuu
*/
-public class WirewoodSymbiote extends CardImpl {
+public final class WirewoodSymbiote extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elf");
diff --git a/Mage.Sets/src/mage/cards/w/WisdomOfTheJedi.java b/Mage.Sets/src/mage/cards/w/WisdomOfTheJedi.java
index df81b50269f..42e52a71e89 100644
--- a/Mage.Sets/src/mage/cards/w/WisdomOfTheJedi.java
+++ b/Mage.Sets/src/mage/cards/w/WisdomOfTheJedi.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author Styxo
*/
-public class WisdomOfTheJedi extends CardImpl {
+public final class WisdomOfTheJedi extends CardImpl {
private static final FilterSpell filterSpell = new FilterSpell("spell with converted mana cost of 3 or less");
diff --git a/Mage.Sets/src/mage/cards/w/Wishmonger.java b/Mage.Sets/src/mage/cards/w/Wishmonger.java
index faa5539c4e0..33ef0817772 100644
--- a/Mage.Sets/src/mage/cards/w/Wishmonger.java
+++ b/Mage.Sets/src/mage/cards/w/Wishmonger.java
@@ -61,7 +61,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author jeffwadsworth & L_J
*/
-public class Wishmonger extends CardImpl {
+public final class Wishmonger extends CardImpl {
public Wishmonger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/Wispmare.java b/Mage.Sets/src/mage/cards/w/Wispmare.java
index 2ac3ab4b946..da35a5726ee 100644
--- a/Mage.Sets/src/mage/cards/w/Wispmare.java
+++ b/Mage.Sets/src/mage/cards/w/Wispmare.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetEnchantmentPermanent;
*
* @author LevelX2
*/
-public class Wispmare extends CardImpl {
+public final class Wispmare extends CardImpl {
public Wispmare(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WispweaverAngel.java b/Mage.Sets/src/mage/cards/w/WispweaverAngel.java
index 7adfdf9fa97..f3f048d98d3 100644
--- a/Mage.Sets/src/mage/cards/w/WispweaverAngel.java
+++ b/Mage.Sets/src/mage/cards/w/WispweaverAngel.java
@@ -57,7 +57,7 @@ import mage.util.CardUtil;
*
* @author fireshoes
*/
-public class WispweaverAngel extends CardImpl {
+public final class WispweaverAngel extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control");
diff --git a/Mage.Sets/src/mage/cards/w/WistfulSelkie.java b/Mage.Sets/src/mage/cards/w/WistfulSelkie.java
index 3d15ad1ec30..6c9b23afd11 100644
--- a/Mage.Sets/src/mage/cards/w/WistfulSelkie.java
+++ b/Mage.Sets/src/mage/cards/w/WistfulSelkie.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class WistfulSelkie extends CardImpl {
+public final class WistfulSelkie extends CardImpl {
public WistfulSelkie (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G/U}{G/U}{G/U}");
diff --git a/Mage.Sets/src/mage/cards/w/WistfulThinking.java b/Mage.Sets/src/mage/cards/w/WistfulThinking.java
index 1c75d2f063e..45b963b068c 100644
--- a/Mage.Sets/src/mage/cards/w/WistfulThinking.java
+++ b/Mage.Sets/src/mage/cards/w/WistfulThinking.java
@@ -40,7 +40,7 @@ import mage.target.TargetPlayer;
*
* @author daagar
*/
-public class WistfulThinking extends CardImpl {
+public final class WistfulThinking extends CardImpl {
public WistfulThinking(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WitchEngine.java b/Mage.Sets/src/mage/cards/w/WitchEngine.java
index fec2da33c56..543e4df2cbc 100644
--- a/Mage.Sets/src/mage/cards/w/WitchEngine.java
+++ b/Mage.Sets/src/mage/cards/w/WitchEngine.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author fireshoes
*/
-public class WitchEngine extends CardImpl {
+public final class WitchEngine extends CardImpl {
public WitchEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WitchHunt.java b/Mage.Sets/src/mage/cards/w/WitchHunt.java
index dff86f3e3c3..c9fe5e2ed21 100644
--- a/Mage.Sets/src/mage/cards/w/WitchHunt.java
+++ b/Mage.Sets/src/mage/cards/w/WitchHunt.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class WitchHunt extends CardImpl {
+public final class WitchHunt extends CardImpl {
public WitchHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WitchHunter.java b/Mage.Sets/src/mage/cards/w/WitchHunter.java
index 653fefca3d3..49469007ec5 100644
--- a/Mage.Sets/src/mage/cards/w/WitchHunter.java
+++ b/Mage.Sets/src/mage/cards/w/WitchHunter.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*
* @author fireshoes
*/
-public class WitchHunter extends CardImpl {
+public final class WitchHunter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/w/WitchMawNephilim.java b/Mage.Sets/src/mage/cards/w/WitchMawNephilim.java
index 2a20a46694e..7c6415a47ab 100644
--- a/Mage.Sets/src/mage/cards/w/WitchMawNephilim.java
+++ b/Mage.Sets/src/mage/cards/w/WitchMawNephilim.java
@@ -49,7 +49,7 @@ import mage.game.Game;
/**
* @author Loki
*/
-public class WitchMawNephilim extends CardImpl {
+public final class WitchMawNephilim extends CardImpl {
public WitchMawNephilim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java b/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java
index 6e6e7ba2003..2e32154aee2 100644
--- a/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java
+++ b/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java
@@ -51,7 +51,7 @@ import java.util.UUID;
*
* @author BetaSteward
*/
-public class WitchbaneOrb extends CardImpl {
+public final class WitchbaneOrb extends CardImpl {
public WitchbaneOrb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/w/WitchesEye.java b/Mage.Sets/src/mage/cards/w/WitchesEye.java
index 4ffb3bc77aa..ca00a9c26b0 100644
--- a/Mage.Sets/src/mage/cards/w/WitchesEye.java
+++ b/Mage.Sets/src/mage/cards/w/WitchesEye.java
@@ -49,7 +49,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class WitchesEye extends CardImpl {
+public final class WitchesEye extends CardImpl {
public WitchesEye(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/w/WitchsFamiliar.java b/Mage.Sets/src/mage/cards/w/WitchsFamiliar.java
index 9a3867f8807..acf67307270 100644
--- a/Mage.Sets/src/mage/cards/w/WitchsFamiliar.java
+++ b/Mage.Sets/src/mage/cards/w/WitchsFamiliar.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WitchsFamiliar extends CardImpl {
+public final class WitchsFamiliar extends CardImpl {
public WitchsFamiliar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WitchsMist.java b/Mage.Sets/src/mage/cards/w/WitchsMist.java
index 3ade5a0d9cc..28cc1bec567 100644
--- a/Mage.Sets/src/mage/cards/w/WitchsMist.java
+++ b/Mage.Sets/src/mage/cards/w/WitchsMist.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class WitchsMist extends CardImpl {
+public final class WitchsMist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn");
diff --git a/Mage.Sets/src/mage/cards/w/Witchstalker.java b/Mage.Sets/src/mage/cards/w/Witchstalker.java
index 076ff2b4011..d1feca9844c 100644
--- a/Mage.Sets/src/mage/cards/w/Witchstalker.java
+++ b/Mage.Sets/src/mage/cards/w/Witchstalker.java
@@ -51,7 +51,7 @@ import mage.game.stack.Spell;
*
* @author LevelX2
*/
-public class Witchstalker extends CardImpl {
+public final class Witchstalker extends CardImpl {
public Witchstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/Withdraw.java b/Mage.Sets/src/mage/cards/w/Withdraw.java
index c5890a7eb44..5b213c3afca 100644
--- a/Mage.Sets/src/mage/cards/w/Withdraw.java
+++ b/Mage.Sets/src/mage/cards/w/Withdraw.java
@@ -52,7 +52,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author emerald000
*/
-public class Withdraw extends CardImpl {
+public final class Withdraw extends CardImpl {
public Withdraw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WithengarUnbound.java b/Mage.Sets/src/mage/cards/w/WithengarUnbound.java
index de4a7c7d514..4370be5911c 100644
--- a/Mage.Sets/src/mage/cards/w/WithengarUnbound.java
+++ b/Mage.Sets/src/mage/cards/w/WithengarUnbound.java
@@ -49,7 +49,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author BetaSteward
*/
-public class WithengarUnbound extends CardImpl {
+public final class WithengarUnbound extends CardImpl {
public WithengarUnbound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
diff --git a/Mage.Sets/src/mage/cards/w/WitheredWretch.java b/Mage.Sets/src/mage/cards/w/WitheredWretch.java
index 10388bee0b5..3188fd410f7 100644
--- a/Mage.Sets/src/mage/cards/w/WitheredWretch.java
+++ b/Mage.Sets/src/mage/cards/w/WitheredWretch.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author jonubuu
*/
-public class WitheredWretch extends CardImpl {
+public final class WitheredWretch extends CardImpl {
public WitheredWretch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WitheringBoon.java b/Mage.Sets/src/mage/cards/w/WitheringBoon.java
index 9685d9e4a55..cd4e72dc074 100644
--- a/Mage.Sets/src/mage/cards/w/WitheringBoon.java
+++ b/Mage.Sets/src/mage/cards/w/WitheringBoon.java
@@ -40,7 +40,7 @@ import mage.target.TargetSpell;
*
* @author markedagain
*/
-public class WitheringBoon extends CardImpl {
+public final class WitheringBoon extends CardImpl {
public WitheringBoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WitheringGaze.java b/Mage.Sets/src/mage/cards/w/WitheringGaze.java
index 2acd8956c5b..6881f61e110 100644
--- a/Mage.Sets/src/mage/cards/w/WitheringGaze.java
+++ b/Mage.Sets/src/mage/cards/w/WitheringGaze.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
* @author LoneFox
*/
-public class WitheringGaze extends CardImpl {
+public final class WitheringGaze extends CardImpl {
public WitheringGaze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WitheringHex.java b/Mage.Sets/src/mage/cards/w/WitheringHex.java
index 38727833a18..43d2c23114a 100644
--- a/Mage.Sets/src/mage/cards/w/WitheringHex.java
+++ b/Mage.Sets/src/mage/cards/w/WitheringHex.java
@@ -53,7 +53,7 @@ import mage.counters.CounterType;
*
* @author TheElk801
*/
-public class WitheringHex extends CardImpl {
+public final class WitheringHex extends CardImpl {
public WitheringHex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WitheringWisps.java b/Mage.Sets/src/mage/cards/w/WitheringWisps.java
index 016f2091e01..d38705b7cc9 100644
--- a/Mage.Sets/src/mage/cards/w/WitheringWisps.java
+++ b/Mage.Sets/src/mage/cards/w/WitheringWisps.java
@@ -54,7 +54,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author L_J
*/
-public class WitheringWisps extends CardImpl {
+public final class WitheringWisps extends CardImpl {
private static final String ruleText = "At the beginning of the end step, if no creatures are on the battlefield, sacrifice {this}.";
diff --git a/Mage.Sets/src/mage/cards/w/WitherscaleWurm.java b/Mage.Sets/src/mage/cards/w/WitherscaleWurm.java
index bb506a98cd6..e3691857be9 100644
--- a/Mage.Sets/src/mage/cards/w/WitherscaleWurm.java
+++ b/Mage.Sets/src/mage/cards/w/WitherscaleWurm.java
@@ -48,7 +48,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class WitherscaleWurm extends CardImpl {
+public final class WitherscaleWurm extends CardImpl {
public WitherscaleWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WithoutWeakness.java b/Mage.Sets/src/mage/cards/w/WithoutWeakness.java
index b847c3a379c..56d9754da8b 100644
--- a/Mage.Sets/src/mage/cards/w/WithoutWeakness.java
+++ b/Mage.Sets/src/mage/cards/w/WithoutWeakness.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author spjspj
*/
-public class WithoutWeakness extends CardImpl {
+public final class WithoutWeakness extends CardImpl {
public WithoutWeakness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/Withstand.java b/Mage.Sets/src/mage/cards/w/Withstand.java
index 15ff94e3a41..dc9be9b2fe5 100644
--- a/Mage.Sets/src/mage/cards/w/Withstand.java
+++ b/Mage.Sets/src/mage/cards/w/Withstand.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class Withstand extends CardImpl {
+public final class Withstand extends CardImpl {
public Withstand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WithstandDeath.java b/Mage.Sets/src/mage/cards/w/WithstandDeath.java
index 17faa008f76..7a784496c7f 100644
--- a/Mage.Sets/src/mage/cards/w/WithstandDeath.java
+++ b/Mage.Sets/src/mage/cards/w/WithstandDeath.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class WithstandDeath extends CardImpl {
+public final class WithstandDeath extends CardImpl {
public WithstandDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WitnessOfTheAges.java b/Mage.Sets/src/mage/cards/w/WitnessOfTheAges.java
index e96891f6950..131660a63a8 100644
--- a/Mage.Sets/src/mage/cards/w/WitnessOfTheAges.java
+++ b/Mage.Sets/src/mage/cards/w/WitnessOfTheAges.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WitnessOfTheAges extends CardImpl {
+public final class WitnessOfTheAges extends CardImpl {
public WitnessOfTheAges(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/w/WitnessTheEnd.java b/Mage.Sets/src/mage/cards/w/WitnessTheEnd.java
index 97bd5c5f042..6a344097a0d 100644
--- a/Mage.Sets/src/mage/cards/w/WitnessTheEnd.java
+++ b/Mage.Sets/src/mage/cards/w/WitnessTheEnd.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class WitnessTheEnd extends CardImpl {
+public final class WitnessTheEnd extends CardImpl {
public WitnessTheEnd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WitsEnd.java b/Mage.Sets/src/mage/cards/w/WitsEnd.java
index bea8f33fc59..025feaa615e 100644
--- a/Mage.Sets/src/mage/cards/w/WitsEnd.java
+++ b/Mage.Sets/src/mage/cards/w/WitsEnd.java
@@ -44,7 +44,7 @@ import mage.target.TargetPlayer;
*
* @author North
*/
-public class WitsEnd extends CardImpl {
+public final class WitsEnd extends CardImpl {
public WitsEnd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WizardMentor.java b/Mage.Sets/src/mage/cards/w/WizardMentor.java
index 82b38ead535..8db26d27c55 100644
--- a/Mage.Sets/src/mage/cards/w/WizardMentor.java
+++ b/Mage.Sets/src/mage/cards/w/WizardMentor.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class WizardMentor extends CardImpl {
+public final class WizardMentor extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WizardReplica.java b/Mage.Sets/src/mage/cards/w/WizardReplica.java
index dbc051bf337..a3597191503 100644
--- a/Mage.Sets/src/mage/cards/w/WizardReplica.java
+++ b/Mage.Sets/src/mage/cards/w/WizardReplica.java
@@ -48,7 +48,7 @@ import mage.target.TargetSpell;
*
* @author Loki
*/
-public class WizardReplica extends CardImpl {
+public final class WizardReplica extends CardImpl {
public WizardReplica(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WizardsLightning.java b/Mage.Sets/src/mage/cards/w/WizardsLightning.java
index 95e6f9883d4..a008d44a46b 100644
--- a/Mage.Sets/src/mage/cards/w/WizardsLightning.java
+++ b/Mage.Sets/src/mage/cards/w/WizardsLightning.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Will
*/
-public class WizardsLightning extends CardImpl {
+public final class WizardsLightning extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control a Wizard");
diff --git a/Mage.Sets/src/mage/cards/w/WizardsRetort.java b/Mage.Sets/src/mage/cards/w/WizardsRetort.java
index 33e9eb4b56b..7cbee28c1db 100644
--- a/Mage.Sets/src/mage/cards/w/WizardsRetort.java
+++ b/Mage.Sets/src/mage/cards/w/WizardsRetort.java
@@ -46,7 +46,7 @@ import mage.target.TargetSpell;
*
* @author Will
*/
-public class WizardsRetort extends CardImpl {
+public final class WizardsRetort extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control a Wizard");
diff --git a/Mage.Sets/src/mage/cards/w/WizardsSchool.java b/Mage.Sets/src/mage/cards/w/WizardsSchool.java
index 0153b851327..30de8f4c1ff 100644
--- a/Mage.Sets/src/mage/cards/w/WizardsSchool.java
+++ b/Mage.Sets/src/mage/cards/w/WizardsSchool.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author anonymous
*/
-public class WizardsSchool extends CardImpl {
+public final class WizardsSchool extends CardImpl {
public WizardsSchool(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/w/WizenedCenn.java b/Mage.Sets/src/mage/cards/w/WizenedCenn.java
index 16fbc4c3a99..3d6eed74f90 100644
--- a/Mage.Sets/src/mage/cards/w/WizenedCenn.java
+++ b/Mage.Sets/src/mage/cards/w/WizenedCenn.java
@@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author Loki
*/
-public class WizenedCenn extends CardImpl {
+public final class WizenedCenn extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Kithkin creatures");
diff --git a/Mage.Sets/src/mage/cards/w/WizenedSnitches.java b/Mage.Sets/src/mage/cards/w/WizenedSnitches.java
index 3e8e6967569..102ad8ee6e6 100644
--- a/Mage.Sets/src/mage/cards/w/WizenedSnitches.java
+++ b/Mage.Sets/src/mage/cards/w/WizenedSnitches.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class WizenedSnitches extends CardImpl {
+public final class WizenedSnitches extends CardImpl {
public WizenedSnitches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/Woebearer.java b/Mage.Sets/src/mage/cards/w/Woebearer.java
index c0bd328e99f..52e8790bfb5 100644
--- a/Mage.Sets/src/mage/cards/w/Woebearer.java
+++ b/Mage.Sets/src/mage/cards/w/Woebearer.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author LoneFox
*/
-public class Woebearer extends CardImpl {
+public final class Woebearer extends CardImpl {
public Woebearer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WoebringerDemon.java b/Mage.Sets/src/mage/cards/w/WoebringerDemon.java
index 4f0077da368..01caca414c3 100644
--- a/Mage.Sets/src/mage/cards/w/WoebringerDemon.java
+++ b/Mage.Sets/src/mage/cards/w/WoebringerDemon.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class WoebringerDemon extends CardImpl {
+public final class WoebringerDemon extends CardImpl {
public WoebringerDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/Woeleecher.java b/Mage.Sets/src/mage/cards/w/Woeleecher.java
index c556bdcf3b3..5fd4cbad4b7 100644
--- a/Mage.Sets/src/mage/cards/w/Woeleecher.java
+++ b/Mage.Sets/src/mage/cards/w/Woeleecher.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth
*
*/
-public class Woeleecher extends CardImpl {
+public final class Woeleecher extends CardImpl {
public Woeleecher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WojekApothecary.java b/Mage.Sets/src/mage/cards/w/WojekApothecary.java
index 3344891da50..290673f3858 100644
--- a/Mage.Sets/src/mage/cards/w/WojekApothecary.java
+++ b/Mage.Sets/src/mage/cards/w/WojekApothecary.java
@@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class WojekApothecary extends CardImpl {
+public final class WojekApothecary extends CardImpl {
public WojekApothecary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WojekEmbermage.java b/Mage.Sets/src/mage/cards/w/WojekEmbermage.java
index 082c826880b..955d10033c6 100644
--- a/Mage.Sets/src/mage/cards/w/WojekEmbermage.java
+++ b/Mage.Sets/src/mage/cards/w/WojekEmbermage.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class WojekEmbermage extends CardImpl {
+public final class WojekEmbermage extends CardImpl {
public WojekEmbermage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WojekHalberdiers.java b/Mage.Sets/src/mage/cards/w/WojekHalberdiers.java
index 04978c6fea6..07ae0598790 100644
--- a/Mage.Sets/src/mage/cards/w/WojekHalberdiers.java
+++ b/Mage.Sets/src/mage/cards/w/WojekHalberdiers.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LevelX2
*/
-public class WojekHalberdiers extends CardImpl {
+public final class WojekHalberdiers extends CardImpl {
public WojekHalberdiers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WojekSiren.java b/Mage.Sets/src/mage/cards/w/WojekSiren.java
index 97be6629687..588ed1e00ea 100644
--- a/Mage.Sets/src/mage/cards/w/WojekSiren.java
+++ b/Mage.Sets/src/mage/cards/w/WojekSiren.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class WojekSiren extends CardImpl {
+public final class WojekSiren extends CardImpl {
public WojekSiren(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WolfOfDevilsBreach.java b/Mage.Sets/src/mage/cards/w/WolfOfDevilsBreach.java
index 8120ae55650..3ede5a68eba 100644
--- a/Mage.Sets/src/mage/cards/w/WolfOfDevilsBreach.java
+++ b/Mage.Sets/src/mage/cards/w/WolfOfDevilsBreach.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
*
* @author fireshoes
*/
-public class WolfOfDevilsBreach extends CardImpl {
+public final class WolfOfDevilsBreach extends CardImpl {
public WolfOfDevilsBreach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WolfPack.java b/Mage.Sets/src/mage/cards/w/WolfPack.java
index c14cff893d2..dae2e83945c 100644
--- a/Mage.Sets/src/mage/cards/w/WolfPack.java
+++ b/Mage.Sets/src/mage/cards/w/WolfPack.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WolfPack extends CardImpl {
+public final class WolfPack extends CardImpl {
public WolfPack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WolfSkullShaman.java b/Mage.Sets/src/mage/cards/w/WolfSkullShaman.java
index d7bdc3dfbf0..330f73fb9dd 100644
--- a/Mage.Sets/src/mage/cards/w/WolfSkullShaman.java
+++ b/Mage.Sets/src/mage/cards/w/WolfSkullShaman.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.WolfToken;
*
* @author LevelX2
*/
-public class WolfSkullShaman extends CardImpl {
+public final class WolfSkullShaman extends CardImpl {
public WolfSkullShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WolfbittenCaptive.java b/Mage.Sets/src/mage/cards/w/WolfbittenCaptive.java
index 88e77b6ac55..024fb9965f4 100644
--- a/Mage.Sets/src/mage/cards/w/WolfbittenCaptive.java
+++ b/Mage.Sets/src/mage/cards/w/WolfbittenCaptive.java
@@ -47,7 +47,7 @@ import mage.constants.*;
*
* @author Loki
*/
-public class WolfbittenCaptive extends CardImpl {
+public final class WolfbittenCaptive extends CardImpl {
public WolfbittenCaptive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WolfbriarElemental.java b/Mage.Sets/src/mage/cards/w/WolfbriarElemental.java
index 3488bfbe753..3b964b7aa06 100644
--- a/Mage.Sets/src/mage/cards/w/WolfbriarElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WolfbriarElemental.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.WolfToken;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WolfbriarElemental extends CardImpl {
+public final class WolfbriarElemental extends CardImpl {
public WolfbriarElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WolfcallersHowl.java b/Mage.Sets/src/mage/cards/w/WolfcallersHowl.java
index 84acdf3a4d7..658ea527362 100644
--- a/Mage.Sets/src/mage/cards/w/WolfcallersHowl.java
+++ b/Mage.Sets/src/mage/cards/w/WolfcallersHowl.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WolfcallersHowl extends CardImpl {
+public final class WolfcallersHowl extends CardImpl {
public WolfcallersHowl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java b/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java
index bfe345483dc..b0321064fa8 100644
--- a/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java
+++ b/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class WolfhuntersQuiver extends CardImpl {
+public final class WolfhuntersQuiver extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf creature");
diff --git a/Mage.Sets/src/mage/cards/w/WolfirAvenger.java b/Mage.Sets/src/mage/cards/w/WolfirAvenger.java
index 2c472458f3b..2fba8d6d295 100644
--- a/Mage.Sets/src/mage/cards/w/WolfirAvenger.java
+++ b/Mage.Sets/src/mage/cards/w/WolfirAvenger.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class WolfirAvenger extends CardImpl {
+public final class WolfirAvenger extends CardImpl {
public WolfirAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WolfirSilverheart.java b/Mage.Sets/src/mage/cards/w/WolfirSilverheart.java
index 412a5a9de5e..55031219036 100644
--- a/Mage.Sets/src/mage/cards/w/WolfirSilverheart.java
+++ b/Mage.Sets/src/mage/cards/w/WolfirSilverheart.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class WolfirSilverheart extends CardImpl {
+public final class WolfirSilverheart extends CardImpl {
private static final String ruleText = "As long as {this} is paired with another creature, each of those creatures gets +4/+4";
diff --git a/Mage.Sets/src/mage/cards/w/WolfkinBond.java b/Mage.Sets/src/mage/cards/w/WolfkinBond.java
index e1b67a2e1c7..98b8a96f98b 100644
--- a/Mage.Sets/src/mage/cards/w/WolfkinBond.java
+++ b/Mage.Sets/src/mage/cards/w/WolfkinBond.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WolfkinBond extends CardImpl {
+public final class WolfkinBond extends CardImpl {
public WolfkinBond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WolverinePack.java b/Mage.Sets/src/mage/cards/w/WolverinePack.java
index 62cb83e0498..c826d2a48cb 100644
--- a/Mage.Sets/src/mage/cards/w/WolverinePack.java
+++ b/Mage.Sets/src/mage/cards/w/WolverinePack.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WolverinePack extends CardImpl {
+public final class WolverinePack extends CardImpl {
public WolverinePack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WompRat.java b/Mage.Sets/src/mage/cards/w/WompRat.java
index 902b8048b98..0f219514cfc 100644
--- a/Mage.Sets/src/mage/cards/w/WompRat.java
+++ b/Mage.Sets/src/mage/cards/w/WompRat.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author Styxo
*/
-public class WompRat extends CardImpl {
+public final class WompRat extends CardImpl {
public WompRat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/Wonder.java b/Mage.Sets/src/mage/cards/w/Wonder.java
index cf8434f0b60..7a4af3c8314 100644
--- a/Mage.Sets/src/mage/cards/w/Wonder.java
+++ b/Mage.Sets/src/mage/cards/w/Wonder.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*
* @author magenoxx_at_gmail.com
*/
-public class Wonder extends CardImpl {
+public final class Wonder extends CardImpl {
private static final String ruleText = "As long as Wonder is in your graveyard and you control an Island, creatures you control have flying";
diff --git a/Mage.Sets/src/mage/cards/w/WoodElemental.java b/Mage.Sets/src/mage/cards/w/WoodElemental.java
index ac6bc424c7e..83ad9b99052 100644
--- a/Mage.Sets/src/mage/cards/w/WoodElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WoodElemental.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author L_J
*/
-public class WoodElemental extends CardImpl {
+public final class WoodElemental extends CardImpl {
public WoodElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodElves.java b/Mage.Sets/src/mage/cards/w/WoodElves.java
index b4818f1cdcf..99c8b35858f 100644
--- a/Mage.Sets/src/mage/cards/w/WoodElves.java
+++ b/Mage.Sets/src/mage/cards/w/WoodElves.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author Plopman
*/
-public class WoodElves extends CardImpl {
+public final class WoodElves extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("Forest card");
static{
diff --git a/Mage.Sets/src/mage/cards/w/WoodSage.java b/Mage.Sets/src/mage/cards/w/WoodSage.java
index 18acd9f1696..0b559c21495 100644
--- a/Mage.Sets/src/mage/cards/w/WoodSage.java
+++ b/Mage.Sets/src/mage/cards/w/WoodSage.java
@@ -53,7 +53,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WoodSage extends CardImpl {
+public final class WoodSage extends CardImpl {
public WoodSage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodbornBehemoth.java b/Mage.Sets/src/mage/cards/w/WoodbornBehemoth.java
index d9e18d040f3..96fa74e20f2 100644
--- a/Mage.Sets/src/mage/cards/w/WoodbornBehemoth.java
+++ b/Mage.Sets/src/mage/cards/w/WoodbornBehemoth.java
@@ -49,7 +49,7 @@ import mage.filter.StaticFilters;
*
* @author LevelX2
*/
-public class WoodbornBehemoth extends CardImpl {
+public final class WoodbornBehemoth extends CardImpl {
public WoodbornBehemoth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/Woodcloaker.java b/Mage.Sets/src/mage/cards/w/Woodcloaker.java
index 6c5cd5bd482..7fb078362f7 100644
--- a/Mage.Sets/src/mage/cards/w/Woodcloaker.java
+++ b/Mage.Sets/src/mage/cards/w/Woodcloaker.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class Woodcloaker extends CardImpl {
+public final class Woodcloaker extends CardImpl {
public Woodcloaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodcuttersGrit.java b/Mage.Sets/src/mage/cards/w/WoodcuttersGrit.java
index 1d5ae8d7a7b..2295457a501 100644
--- a/Mage.Sets/src/mage/cards/w/WoodcuttersGrit.java
+++ b/Mage.Sets/src/mage/cards/w/WoodcuttersGrit.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class WoodcuttersGrit extends CardImpl {
+public final class WoodcuttersGrit extends CardImpl {
public WoodcuttersGrit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodedBastion.java b/Mage.Sets/src/mage/cards/w/WoodedBastion.java
index 282cd76bd57..e5c2a8eda93 100644
--- a/Mage.Sets/src/mage/cards/w/WoodedBastion.java
+++ b/Mage.Sets/src/mage/cards/w/WoodedBastion.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author jonubuu
*/
-public class WoodedBastion extends CardImpl {
+public final class WoodedBastion extends CardImpl {
public WoodedBastion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/w/WoodedFoothills.java b/Mage.Sets/src/mage/cards/w/WoodedFoothills.java
index 909fe6ca79d..4f29ce105ce 100644
--- a/Mage.Sets/src/mage/cards/w/WoodedFoothills.java
+++ b/Mage.Sets/src/mage/cards/w/WoodedFoothills.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author jonubuu
*/
-public class WoodedFoothills extends CardImpl {
+public final class WoodedFoothills extends CardImpl {
public WoodedFoothills(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/w/WoodenSphere.java b/Mage.Sets/src/mage/cards/w/WoodenSphere.java
index 7431c63710f..458313fd3f5 100644
--- a/Mage.Sets/src/mage/cards/w/WoodenSphere.java
+++ b/Mage.Sets/src/mage/cards/w/WoodenSphere.java
@@ -46,7 +46,7 @@ import mage.game.stack.Spell;
* @author KholdFuzion
*/
-public class WoodenSphere extends CardImpl {
+public final class WoodenSphere extends CardImpl {
public WoodenSphere(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodenStake.java b/Mage.Sets/src/mage/cards/w/WoodenStake.java
index d400758308a..2d3b0e2ed69 100644
--- a/Mage.Sets/src/mage/cards/w/WoodenStake.java
+++ b/Mage.Sets/src/mage/cards/w/WoodenStake.java
@@ -50,7 +50,7 @@ import mage.target.targetpointer.FixedTarget;
/**
* @author nantuko
*/
-public class WoodenStake extends CardImpl {
+public final class WoodenStake extends CardImpl {
public WoodenStake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodfallPrimus.java b/Mage.Sets/src/mage/cards/w/WoodfallPrimus.java
index 05642cabccf..bda107ef70c 100644
--- a/Mage.Sets/src/mage/cards/w/WoodfallPrimus.java
+++ b/Mage.Sets/src/mage/cards/w/WoodfallPrimus.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class WoodfallPrimus extends CardImpl {
+public final class WoodfallPrimus extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("noncreature permanent");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WoodlandBellower.java b/Mage.Sets/src/mage/cards/w/WoodlandBellower.java
index c8520397d55..62fdecbff17 100644
--- a/Mage.Sets/src/mage/cards/w/WoodlandBellower.java
+++ b/Mage.Sets/src/mage/cards/w/WoodlandBellower.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author fireshoes
*/
-public class WoodlandBellower extends CardImpl {
+public final class WoodlandBellower extends CardImpl {
public WoodlandBellower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodlandCemetery.java b/Mage.Sets/src/mage/cards/w/WoodlandCemetery.java
index 9592895cc82..b6a6636d809 100644
--- a/Mage.Sets/src/mage/cards/w/WoodlandCemetery.java
+++ b/Mage.Sets/src/mage/cards/w/WoodlandCemetery.java
@@ -48,7 +48,7 @@ import java.util.UUID;
/**
* @author nantuko
*/
-public class WoodlandCemetery extends CardImpl {
+public final class WoodlandCemetery extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
diff --git a/Mage.Sets/src/mage/cards/w/WoodlandChangeling.java b/Mage.Sets/src/mage/cards/w/WoodlandChangeling.java
index ba7d3284835..df98cc35878 100644
--- a/Mage.Sets/src/mage/cards/w/WoodlandChangeling.java
+++ b/Mage.Sets/src/mage/cards/w/WoodlandChangeling.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class WoodlandChangeling extends CardImpl {
+public final class WoodlandChangeling extends CardImpl {
public WoodlandChangeling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodlandDruid.java b/Mage.Sets/src/mage/cards/w/WoodlandDruid.java
index 31101a0629d..d7111fac6c4 100644
--- a/Mage.Sets/src/mage/cards/w/WoodlandDruid.java
+++ b/Mage.Sets/src/mage/cards/w/WoodlandDruid.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class WoodlandDruid extends CardImpl {
+public final class WoodlandDruid extends CardImpl {
public WoodlandDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodlandGuidance.java b/Mage.Sets/src/mage/cards/w/WoodlandGuidance.java
index 73f2bd9748d..5e61afe31b3 100644
--- a/Mage.Sets/src/mage/cards/w/WoodlandGuidance.java
+++ b/Mage.Sets/src/mage/cards/w/WoodlandGuidance.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Styxo
*/
-public class WoodlandGuidance extends CardImpl {
+public final class WoodlandGuidance extends CardImpl {
public WoodlandGuidance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodlandPatrol.java b/Mage.Sets/src/mage/cards/w/WoodlandPatrol.java
index 94b18038daf..c70a051e5da 100644
--- a/Mage.Sets/src/mage/cards/w/WoodlandPatrol.java
+++ b/Mage.Sets/src/mage/cards/w/WoodlandPatrol.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WoodlandPatrol extends CardImpl {
+public final class WoodlandPatrol extends CardImpl {
public WoodlandPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodlandSleuth.java b/Mage.Sets/src/mage/cards/w/WoodlandSleuth.java
index 23a05db93a7..11fa32f8f3f 100644
--- a/Mage.Sets/src/mage/cards/w/WoodlandSleuth.java
+++ b/Mage.Sets/src/mage/cards/w/WoodlandSleuth.java
@@ -51,7 +51,7 @@ import mage.util.RandomUtil;
*
* @author North
*/
-public class WoodlandSleuth extends CardImpl {
+public final class WoodlandSleuth extends CardImpl {
private static final String staticText = "Morbid - When {this} enters the battlefield, if a creature died this turn, return a creature card at random from your graveyard to your hand.";
diff --git a/Mage.Sets/src/mage/cards/w/WoodlandStream.java b/Mage.Sets/src/mage/cards/w/WoodlandStream.java
index b557ddf6e0e..eee747b780a 100644
--- a/Mage.Sets/src/mage/cards/w/WoodlandStream.java
+++ b/Mage.Sets/src/mage/cards/w/WoodlandStream.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author fireshoes
*/
-public class WoodlandStream extends CardImpl {
+public final class WoodlandStream extends CardImpl {
public WoodlandStream(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/w/WoodlandWanderer.java b/Mage.Sets/src/mage/cards/w/WoodlandWanderer.java
index 2175669a83e..9857f4a44fb 100644
--- a/Mage.Sets/src/mage/cards/w/WoodlandWanderer.java
+++ b/Mage.Sets/src/mage/cards/w/WoodlandWanderer.java
@@ -44,7 +44,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class WoodlandWanderer extends CardImpl {
+public final class WoodlandWanderer extends CardImpl {
public WoodlandWanderer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodlotCrawler.java b/Mage.Sets/src/mage/cards/w/WoodlotCrawler.java
index 382b2106355..24c224a11c5 100644
--- a/Mage.Sets/src/mage/cards/w/WoodlotCrawler.java
+++ b/Mage.Sets/src/mage/cards/w/WoodlotCrawler.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WoodlotCrawler extends CardImpl {
+public final class WoodlotCrawler extends CardImpl {
public WoodlotCrawler (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodlurkerMimic.java b/Mage.Sets/src/mage/cards/w/WoodlurkerMimic.java
index 7104eb6d294..71353f0319c 100644
--- a/Mage.Sets/src/mage/cards/w/WoodlurkerMimic.java
+++ b/Mage.Sets/src/mage/cards/w/WoodlurkerMimic.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author jeffwadsworth
*
*/
-public class WoodlurkerMimic extends CardImpl {
+public final class WoodlurkerMimic extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a spell that's both black and green");
diff --git a/Mage.Sets/src/mage/cards/w/Woodripper.java b/Mage.Sets/src/mage/cards/w/Woodripper.java
index 59f6799a131..22a6e53a00f 100644
--- a/Mage.Sets/src/mage/cards/w/Woodripper.java
+++ b/Mage.Sets/src/mage/cards/w/Woodripper.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author LoneFox
*/
-public class Woodripper extends CardImpl {
+public final class Woodripper extends CardImpl {
public Woodripper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodvineElemental.java b/Mage.Sets/src/mage/cards/w/WoodvineElemental.java
index 403f369171f..6aed48139e8 100644
--- a/Mage.Sets/src/mage/cards/w/WoodvineElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WoodvineElemental.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author fireshoes
*/
-public class WoodvineElemental extends CardImpl {
+public final class WoodvineElemental extends CardImpl {
static final private String rule = "Parley — Whenever {this} attacks, each player reveals the top card of their library. "
+ "For each nonland card revealed this way, attacking creatures you control get +1/+1 until end of turn. Then each player draws a card.";
diff --git a/Mage.Sets/src/mage/cards/w/WoodweaversPuzzleknot.java b/Mage.Sets/src/mage/cards/w/WoodweaversPuzzleknot.java
index 5b40dcb213a..3ddae6484c2 100644
--- a/Mage.Sets/src/mage/cards/w/WoodweaversPuzzleknot.java
+++ b/Mage.Sets/src/mage/cards/w/WoodweaversPuzzleknot.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class WoodweaversPuzzleknot extends CardImpl {
+public final class WoodweaversPuzzleknot extends CardImpl {
public WoodweaversPuzzleknot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java b/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java
index 5985338c466..0b990b27173 100644
--- a/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java
+++ b/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java
@@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class WoodwraithCorrupter extends CardImpl {
+public final class WoodwraithCorrupter extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Forest");
diff --git a/Mage.Sets/src/mage/cards/w/WoodwraithStrangler.java b/Mage.Sets/src/mage/cards/w/WoodwraithStrangler.java
index 639636d3d92..978d2192c01 100644
--- a/Mage.Sets/src/mage/cards/w/WoodwraithStrangler.java
+++ b/Mage.Sets/src/mage/cards/w/WoodwraithStrangler.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class WoodwraithStrangler extends CardImpl {
+public final class WoodwraithStrangler extends CardImpl {
public WoodwraithStrangler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WookieeBountyHunter.java b/Mage.Sets/src/mage/cards/w/WookieeBountyHunter.java
index 899dce3cc84..d831918177e 100644
--- a/Mage.Sets/src/mage/cards/w/WookieeBountyHunter.java
+++ b/Mage.Sets/src/mage/cards/w/WookieeBountyHunter.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Styxo
*/
-public class WookieeBountyHunter extends CardImpl {
+public final class WookieeBountyHunter extends CardImpl {
public WookieeBountyHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WookieeMystic.java b/Mage.Sets/src/mage/cards/w/WookieeMystic.java
index 522ce66bdc5..7bc9a0323dd 100644
--- a/Mage.Sets/src/mage/cards/w/WookieeMystic.java
+++ b/Mage.Sets/src/mage/cards/w/WookieeMystic.java
@@ -56,7 +56,7 @@ import mage.watchers.Watcher;
*
* @author Styxo
*/
-public class WookieeMystic extends CardImpl {
+public final class WookieeMystic extends CardImpl {
public WookieeMystic(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WookieeRaidleader.java b/Mage.Sets/src/mage/cards/w/WookieeRaidleader.java
index 0d1bad37e64..c51d24c5161 100644
--- a/Mage.Sets/src/mage/cards/w/WookieeRaidleader.java
+++ b/Mage.Sets/src/mage/cards/w/WookieeRaidleader.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Styxo
*/
-public class WookieeRaidleader extends CardImpl {
+public final class WookieeRaidleader extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
diff --git a/Mage.Sets/src/mage/cards/w/WoollyLoxodon.java b/Mage.Sets/src/mage/cards/w/WoollyLoxodon.java
index 1b0a45d74f7..5ec42504527 100644
--- a/Mage.Sets/src/mage/cards/w/WoollyLoxodon.java
+++ b/Mage.Sets/src/mage/cards/w/WoollyLoxodon.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WoollyLoxodon extends CardImpl {
+public final class WoollyLoxodon extends CardImpl {
public WoollyLoxodon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoollyMammoths.java b/Mage.Sets/src/mage/cards/w/WoollyMammoths.java
index e6e7e014243..28ddea53d66 100644
--- a/Mage.Sets/src/mage/cards/w/WoollyMammoths.java
+++ b/Mage.Sets/src/mage/cards/w/WoollyMammoths.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author TheElk801
*/
-public class WoollyMammoths extends CardImpl {
+public final class WoollyMammoths extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("snow land");
diff --git a/Mage.Sets/src/mage/cards/w/WoollyRazorback.java b/Mage.Sets/src/mage/cards/w/WoollyRazorback.java
index 05544ba8a7f..a4537d50707 100644
--- a/Mage.Sets/src/mage/cards/w/WoollyRazorback.java
+++ b/Mage.Sets/src/mage/cards/w/WoollyRazorback.java
@@ -53,7 +53,7 @@ import mage.counters.CounterType;
*
* @author LoneFox
*/
-public class WoollyRazorback extends CardImpl {
+public final class WoollyRazorback extends CardImpl {
public WoollyRazorback(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WoollySpider.java b/Mage.Sets/src/mage/cards/w/WoollySpider.java
index 1b50ef0b895..1f91fbf0a49 100644
--- a/Mage.Sets/src/mage/cards/w/WoollySpider.java
+++ b/Mage.Sets/src/mage/cards/w/WoollySpider.java
@@ -48,7 +48,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author tcontis
*/
-public class WoollySpider extends CardImpl {
+public final class WoollySpider extends CardImpl {
public WoollySpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WoollyThoctar.java b/Mage.Sets/src/mage/cards/w/WoollyThoctar.java
index 881e4ab2b3e..0501175fa79 100644
--- a/Mage.Sets/src/mage/cards/w/WoollyThoctar.java
+++ b/Mage.Sets/src/mage/cards/w/WoollyThoctar.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WoollyThoctar extends CardImpl {
+public final class WoollyThoctar extends CardImpl {
public WoollyThoctar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WordOfBinding.java b/Mage.Sets/src/mage/cards/w/WordOfBinding.java
index 41d6192521a..482f39baa76 100644
--- a/Mage.Sets/src/mage/cards/w/WordOfBinding.java
+++ b/Mage.Sets/src/mage/cards/w/WordOfBinding.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WordOfBinding extends CardImpl {
+public final class WordOfBinding extends CardImpl {
public WordOfBinding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WordOfBlasting.java b/Mage.Sets/src/mage/cards/w/WordOfBlasting.java
index 7a501b7afeb..806e3b68d8e 100644
--- a/Mage.Sets/src/mage/cards/w/WordOfBlasting.java
+++ b/Mage.Sets/src/mage/cards/w/WordOfBlasting.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author LoneFox
*/
-public class WordOfBlasting extends CardImpl {
+public final class WordOfBlasting extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wall");
diff --git a/Mage.Sets/src/mage/cards/w/WordOfSeizing.java b/Mage.Sets/src/mage/cards/w/WordOfSeizing.java
index b38dcb933e9..ef25050c49f 100644
--- a/Mage.Sets/src/mage/cards/w/WordOfSeizing.java
+++ b/Mage.Sets/src/mage/cards/w/WordOfSeizing.java
@@ -44,7 +44,7 @@ import mage.target.TargetPermanent;
*
* @author LevelX2
*/
-public class WordOfSeizing extends CardImpl {
+public final class WordOfSeizing extends CardImpl {
public WordOfSeizing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WordOfUndoing.java b/Mage.Sets/src/mage/cards/w/WordOfUndoing.java
index 07f5e31a497..855f267a0a8 100644
--- a/Mage.Sets/src/mage/cards/w/WordOfUndoing.java
+++ b/Mage.Sets/src/mage/cards/w/WordOfUndoing.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author tcontis
*/
-public class WordOfUndoing extends CardImpl {
+public final class WordOfUndoing extends CardImpl {
public WordOfUndoing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WordsOfWar.java b/Mage.Sets/src/mage/cards/w/WordsOfWar.java
index 58248334fa6..2c26559ae06 100644
--- a/Mage.Sets/src/mage/cards/w/WordsOfWar.java
+++ b/Mage.Sets/src/mage/cards/w/WordsOfWar.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author emerald000
*/
-public class WordsOfWar extends CardImpl {
+public final class WordsOfWar extends CardImpl {
public WordsOfWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WordsOfWaste.java b/Mage.Sets/src/mage/cards/w/WordsOfWaste.java
index 4ec2c978486..2c665873499 100644
--- a/Mage.Sets/src/mage/cards/w/WordsOfWaste.java
+++ b/Mage.Sets/src/mage/cards/w/WordsOfWaste.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class WordsOfWaste extends CardImpl {
+public final class WordsOfWaste extends CardImpl {
public WordsOfWaste(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WordsOfWilding.java b/Mage.Sets/src/mage/cards/w/WordsOfWilding.java
index 1975c5b7d23..b3191e073ca 100644
--- a/Mage.Sets/src/mage/cards/w/WordsOfWilding.java
+++ b/Mage.Sets/src/mage/cards/w/WordsOfWilding.java
@@ -48,7 +48,7 @@ import mage.players.Player;
*
* @author L_J
*/
-public class WordsOfWilding extends CardImpl {
+public final class WordsOfWilding extends CardImpl {
public WordsOfWilding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WordsOfWind.java b/Mage.Sets/src/mage/cards/w/WordsOfWind.java
index 5d6cd11d2a1..1a0ff74cf2a 100644
--- a/Mage.Sets/src/mage/cards/w/WordsOfWind.java
+++ b/Mage.Sets/src/mage/cards/w/WordsOfWind.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class WordsOfWind extends CardImpl {
+public final class WordsOfWind extends CardImpl {
public WordsOfWind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WordsOfWisdom.java b/Mage.Sets/src/mage/cards/w/WordsOfWisdom.java
index 954c526076f..439ef674bc4 100644
--- a/Mage.Sets/src/mage/cards/w/WordsOfWisdom.java
+++ b/Mage.Sets/src/mage/cards/w/WordsOfWisdom.java
@@ -43,7 +43,7 @@ import mage.players.Player;
* @author cbt33, LevelX2 (Hunted Wumpus)
*/
-public class WordsOfWisdom extends CardImpl {
+public final class WordsOfWisdom extends CardImpl {
public WordsOfWisdom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WordsOfWorship.java b/Mage.Sets/src/mage/cards/w/WordsOfWorship.java
index 0dcf3718856..68830bcc36c 100644
--- a/Mage.Sets/src/mage/cards/w/WordsOfWorship.java
+++ b/Mage.Sets/src/mage/cards/w/WordsOfWorship.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
-public class WordsOfWorship extends CardImpl {
+public final class WordsOfWorship extends CardImpl {
public WordsOfWorship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/Workhorse.java b/Mage.Sets/src/mage/cards/w/Workhorse.java
index f8743612421..d0652c5ffad 100644
--- a/Mage.Sets/src/mage/cards/w/Workhorse.java
+++ b/Mage.Sets/src/mage/cards/w/Workhorse.java
@@ -45,7 +45,7 @@ import mage.counters.CounterType;
*
* @author fireshoes
*/
-public class Workhorse extends CardImpl {
+public final class Workhorse extends CardImpl {
public Workhorse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
diff --git a/Mage.Sets/src/mage/cards/w/WorkshopAssistant.java b/Mage.Sets/src/mage/cards/w/WorkshopAssistant.java
index 14414b6741e..53257f97dec 100644
--- a/Mage.Sets/src/mage/cards/w/WorkshopAssistant.java
+++ b/Mage.Sets/src/mage/cards/w/WorkshopAssistant.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class WorkshopAssistant extends CardImpl {
+public final class WorkshopAssistant extends CardImpl {
private static final FilterArtifactCard filter = new FilterArtifactCard("another target artifact card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/w/WorldAtWar.java b/Mage.Sets/src/mage/cards/w/WorldAtWar.java
index c8378775a25..b1ba160425d 100644
--- a/Mage.Sets/src/mage/cards/w/WorldAtWar.java
+++ b/Mage.Sets/src/mage/cards/w/WorldAtWar.java
@@ -50,7 +50,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
/**
* @author magenoxx_at_gmail.com
*/
-public class WorldAtWar extends CardImpl {
+public final class WorldAtWar extends CardImpl {
public WorldAtWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WorldBreaker.java b/Mage.Sets/src/mage/cards/w/WorldBreaker.java
index 36b4420a50f..b3a2087089a 100644
--- a/Mage.Sets/src/mage/cards/w/WorldBreaker.java
+++ b/Mage.Sets/src/mage/cards/w/WorldBreaker.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class WorldBreaker extends CardImpl {
+public final class WorldBreaker extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact, enchantment, or land");
diff --git a/Mage.Sets/src/mage/cards/w/WorldQueller.java b/Mage.Sets/src/mage/cards/w/WorldQueller.java
index 27a98266d1c..dc6fe2e3f57 100644
--- a/Mage.Sets/src/mage/cards/w/WorldQueller.java
+++ b/Mage.Sets/src/mage/cards/w/WorldQueller.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author jeffwadsworth
*/
-public class WorldQueller extends CardImpl {
+public final class WorldQueller extends CardImpl {
public WorldQueller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WorldShaper.java b/Mage.Sets/src/mage/cards/w/WorldShaper.java
index ba16370c183..a6eb97d4bae 100644
--- a/Mage.Sets/src/mage/cards/w/WorldShaper.java
+++ b/Mage.Sets/src/mage/cards/w/WorldShaper.java
@@ -1,104 +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 mage.cards.w;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.Ability;
-import mage.abilities.common.AttacksTriggeredAbility;
-import mage.abilities.common.DiesTriggeredAbility;
-import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.constants.SubType;
-import mage.constants.Zone;
-import mage.filter.StaticFilters;
-import mage.game.Game;
-import mage.players.Player;
-
-/**
- *
- * @author LevelX2
- */
-public class WorldShaper extends CardImpl {
-
- public WorldShaper(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
-
- this.subtype.add(SubType.MERFOLK);
- this.subtype.add(SubType.SHAMAN);
- this.power = new MageInt(3);
- this.toughness = new MageInt(3);
-
- // Whenever World Shaper attacks, you may put the top three cards of your library into your graveyard.
- this.addAbility(new AttacksTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(3), true));
-
- // When World Shaper dies, put all land cards from your graveyard onto the battlefield tapped.
- this.addAbility(new DiesTriggeredAbility(new WorldShaperEffect(), false));
- }
-
- public WorldShaper(final WorldShaper card) {
- super(card);
- }
-
- @Override
- public WorldShaper copy() {
- return new WorldShaper(this);
- }
-}
-
-class WorldShaperEffect extends OneShotEffect {
-
- public WorldShaperEffect() {
- super(Outcome.PutLandInPlay);
- this.staticText = "put all land cards from your graveyard onto the battlefield tapped";
- }
-
- public WorldShaperEffect(final WorldShaperEffect effect) {
- super(effect);
- }
-
- @Override
- public WorldShaperEffect copy() {
- return new WorldShaperEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player controller = game.getPlayer(source.getControllerId());
- if (controller != null) {
- controller.moveCards(controller.getGraveyard().getCards(StaticFilters.FILTER_CARD_LAND, game),
- Zone.BATTLEFIELD, source, game, true, false, false, null); // owner param should play no role here
- return true;
- }
- return false;
- }
-}
+/*
+ * 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.w;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.AttacksTriggeredAbility;
+import mage.abilities.common.DiesTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.constants.Zone;
+import mage.filter.StaticFilters;
+import mage.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class WorldShaper extends CardImpl {
+
+ public WorldShaper(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
+
+ this.subtype.add(SubType.MERFOLK);
+ this.subtype.add(SubType.SHAMAN);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Whenever World Shaper attacks, you may put the top three cards of your library into your graveyard.
+ this.addAbility(new AttacksTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(3), true));
+
+ // When World Shaper dies, put all land cards from your graveyard onto the battlefield tapped.
+ this.addAbility(new DiesTriggeredAbility(new WorldShaperEffect(), false));
+ }
+
+ public WorldShaper(final WorldShaper card) {
+ super(card);
+ }
+
+ @Override
+ public WorldShaper copy() {
+ return new WorldShaper(this);
+ }
+}
+
+class WorldShaperEffect extends OneShotEffect {
+
+ public WorldShaperEffect() {
+ super(Outcome.PutLandInPlay);
+ this.staticText = "put all land cards from your graveyard onto the battlefield tapped";
+ }
+
+ public WorldShaperEffect(final WorldShaperEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public WorldShaperEffect copy() {
+ return new WorldShaperEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ controller.moveCards(controller.getGraveyard().getCards(StaticFilters.FILTER_CARD_LAND, game),
+ Zone.BATTLEFIELD, source, game, true, false, false, null); // owner param should play no role here
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/w/Worldfire.java b/Mage.Sets/src/mage/cards/w/Worldfire.java
index 1823dd1856f..c3dac4ca49e 100644
--- a/Mage.Sets/src/mage/cards/w/Worldfire.java
+++ b/Mage.Sets/src/mage/cards/w/Worldfire.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author jeffwadsworth
*/
-public class Worldfire extends CardImpl {
+public final class Worldfire extends CardImpl {
public Worldfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{6}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WorldgorgerDragon.java b/Mage.Sets/src/mage/cards/w/WorldgorgerDragon.java
index 6a73cf7124f..e481364c374 100644
--- a/Mage.Sets/src/mage/cards/w/WorldgorgerDragon.java
+++ b/Mage.Sets/src/mage/cards/w/WorldgorgerDragon.java
@@ -59,7 +59,7 @@ import mage.util.CardUtil;
*
* @author LevelX2
*/
-public class WorldgorgerDragon extends CardImpl {
+public final class WorldgorgerDragon extends CardImpl {
public WorldgorgerDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WorldheartPhoenix.java b/Mage.Sets/src/mage/cards/w/WorldheartPhoenix.java
index 3ab8444db95..f511667d25b 100644
--- a/Mage.Sets/src/mage/cards/w/WorldheartPhoenix.java
+++ b/Mage.Sets/src/mage/cards/w/WorldheartPhoenix.java
@@ -54,7 +54,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class WorldheartPhoenix extends CardImpl {
+public final class WorldheartPhoenix extends CardImpl {
public WorldheartPhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WorldlyCounsel.java b/Mage.Sets/src/mage/cards/w/WorldlyCounsel.java
index 0e9ad0bd045..b48aafb6d8f 100644
--- a/Mage.Sets/src/mage/cards/w/WorldlyCounsel.java
+++ b/Mage.Sets/src/mage/cards/w/WorldlyCounsel.java
@@ -48,7 +48,7 @@ import mage.target.TargetCard;
*
* @author North
*/
-public class WorldlyCounsel extends CardImpl {
+public final class WorldlyCounsel extends CardImpl {
public WorldlyCounsel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WorldlyTutor.java b/Mage.Sets/src/mage/cards/w/WorldlyTutor.java
index 39b3a8a6c6a..bce8147413b 100644
--- a/Mage.Sets/src/mage/cards/w/WorldlyTutor.java
+++ b/Mage.Sets/src/mage/cards/w/WorldlyTutor.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author Plopman
*/
-public class WorldlyTutor extends CardImpl {
+public final class WorldlyTutor extends CardImpl {
public WorldlyTutor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/Worldpurge.java b/Mage.Sets/src/mage/cards/w/Worldpurge.java
index daf4bd7c4c3..eb1629e8947 100644
--- a/Mage.Sets/src/mage/cards/w/Worldpurge.java
+++ b/Mage.Sets/src/mage/cards/w/Worldpurge.java
@@ -51,12 +51,12 @@ import mage.target.common.TargetCardInHand;
*
* @author jeffwadsworth
*/
-public class Worldpurge extends CardImpl {
+public final class Worldpurge extends CardImpl {
public Worldpurge(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W/U}{W/U}{W/U}{W/U}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W/U}{W/U}{W/U}{W/U}");
- // Return all permanents to their owners' hands. Each player chooses up to seven cards in their hand, then shuffles the rest into their library. Empty all mana pools.
+ // Return all permanents to their owners’ hands. Each player chooses up to seven cards in their hand, then shuffles the rest into their library. Each player loses all unspent mana.
this.getSpellAbility().addEffect(new WorldpurgeEffect());
}
@@ -75,7 +75,7 @@ class WorldpurgeEffect extends OneShotEffect {
public WorldpurgeEffect() {
super(Outcome.Discard);
- this.staticText = "Return all permanents to their owners' hands. Each player chooses up to seven cards in their hand, then shuffles the rest into their library. Empty all mana pools.";
+ this.staticText = "Return all permanents to their owners’ hands. Each player chooses up to seven cards in their hand, then shuffles the rest into their library. Each player loses all unspent mana";
}
public WorldpurgeEffect(final WorldpurgeEffect effect) {
@@ -117,7 +117,7 @@ class WorldpurgeEffect extends OneShotEffect {
}
}
game.emptyManaPools();
- game.informPlayers(sourceObject.getLogName() + " - All mana pools have been emptied");
+ game.informPlayers(sourceObject.getLogName() + " - All players have lost all unspent mana");
return true;
}
return false;
diff --git a/Mage.Sets/src/mage/cards/w/Worldslayer.java b/Mage.Sets/src/mage/cards/w/Worldslayer.java
index 2c74e45ece1..dab41e01cd3 100644
--- a/Mage.Sets/src/mage/cards/w/Worldslayer.java
+++ b/Mage.Sets/src/mage/cards/w/Worldslayer.java
@@ -51,7 +51,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class Worldslayer extends CardImpl {
+public final class Worldslayer extends CardImpl {
public Worldslayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
diff --git a/Mage.Sets/src/mage/cards/w/WorldspineWurm.java b/Mage.Sets/src/mage/cards/w/WorldspineWurm.java
index 0758e9b3284..f465e890499 100644
--- a/Mage.Sets/src/mage/cards/w/WorldspineWurm.java
+++ b/Mage.Sets/src/mage/cards/w/WorldspineWurm.java
@@ -44,7 +44,7 @@ import mage.game.permanent.token.WurmToken2;
*
* @author Plopman
*/
-public class WorldspineWurm extends CardImpl {
+public final class WorldspineWurm extends CardImpl {
public WorldspineWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{8}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WormHarvest.java b/Mage.Sets/src/mage/cards/w/WormHarvest.java
index 0de345c4064..a0f073f866b 100644
--- a/Mage.Sets/src/mage/cards/w/WormHarvest.java
+++ b/Mage.Sets/src/mage/cards/w/WormHarvest.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.WormHarvestToken;
*
* @author LevelX2
*/
-public class WormHarvest extends CardImpl {
+public final class WormHarvest extends CardImpl {
public WormHarvest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B/G}{B/G}{B/G}");
diff --git a/Mage.Sets/src/mage/cards/w/WormfangDrake.java b/Mage.Sets/src/mage/cards/w/WormfangDrake.java
index d225ab2adc0..807a883bcc7 100644
--- a/Mage.Sets/src/mage/cards/w/WormfangDrake.java
+++ b/Mage.Sets/src/mage/cards/w/WormfangDrake.java
@@ -56,7 +56,7 @@ import mage.util.CardUtil;
*
* @author Temba21
*/
-public class WormfangDrake extends CardImpl {
+public final class WormfangDrake extends CardImpl {
public WormfangDrake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WormfangManta.java b/Mage.Sets/src/mage/cards/w/WormfangManta.java
index f0ea8b752d2..fd81d45aaa0 100644
--- a/Mage.Sets/src/mage/cards/w/WormfangManta.java
+++ b/Mage.Sets/src/mage/cards/w/WormfangManta.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author L_J
*/
-public class WormfangManta extends CardImpl {
+public final class WormfangManta extends CardImpl {
public WormfangManta(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WormfangNewt.java b/Mage.Sets/src/mage/cards/w/WormfangNewt.java
index 317a8ebbb0e..642d1811997 100644
--- a/Mage.Sets/src/mage/cards/w/WormfangNewt.java
+++ b/Mage.Sets/src/mage/cards/w/WormfangNewt.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
/**
* @author tcontis
*/
-public class WormfangNewt extends CardImpl {
+public final class WormfangNewt extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/w/WormfangTurtle.java b/Mage.Sets/src/mage/cards/w/WormfangTurtle.java
index a35028448d6..97fa43fd15c 100644
--- a/Mage.Sets/src/mage/cards/w/WormfangTurtle.java
+++ b/Mage.Sets/src/mage/cards/w/WormfangTurtle.java
@@ -47,7 +47,7 @@ import mage.target.TargetPermanent;
/**
* @author tcontis
*/
-public class WormfangTurtle extends CardImpl {
+public final class WormfangTurtle extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/w/WormsOfTheEarth.java b/Mage.Sets/src/mage/cards/w/WormsOfTheEarth.java
index 0b54ccf89e9..30c91b1fa7b 100644
--- a/Mage.Sets/src/mage/cards/w/WormsOfTheEarth.java
+++ b/Mage.Sets/src/mage/cards/w/WormsOfTheEarth.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author L_J
*/
-public class WormsOfTheEarth extends CardImpl {
+public final class WormsOfTheEarth extends CardImpl {
public WormsOfTheEarth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WormwoodDryad.java b/Mage.Sets/src/mage/cards/w/WormwoodDryad.java
index 3751876afd3..d25f603d64e 100644
--- a/Mage.Sets/src/mage/cards/w/WormwoodDryad.java
+++ b/Mage.Sets/src/mage/cards/w/WormwoodDryad.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class WormwoodDryad extends CardImpl {
+public final class WormwoodDryad extends CardImpl {
public WormwoodDryad(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WormwoodTreefolk.java b/Mage.Sets/src/mage/cards/w/WormwoodTreefolk.java
index 09ea9d11fea..faac5164c60 100644
--- a/Mage.Sets/src/mage/cards/w/WormwoodTreefolk.java
+++ b/Mage.Sets/src/mage/cards/w/WormwoodTreefolk.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class WormwoodTreefolk extends CardImpl {
+public final class WormwoodTreefolk extends CardImpl {
public WormwoodTreefolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WornPowerstone.java b/Mage.Sets/src/mage/cards/w/WornPowerstone.java
index 1ab85de9144..d675e94c4c5 100644
--- a/Mage.Sets/src/mage/cards/w/WornPowerstone.java
+++ b/Mage.Sets/src/mage/cards/w/WornPowerstone.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author Backfir3
*/
-public class WornPowerstone extends CardImpl {
+public final class WornPowerstone extends CardImpl {
public WornPowerstone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/w/WorryBeads.java b/Mage.Sets/src/mage/cards/w/WorryBeads.java
index f44e6862eac..34b9db0fcd4 100644
--- a/Mage.Sets/src/mage/cards/w/WorryBeads.java
+++ b/Mage.Sets/src/mage/cards/w/WorryBeads.java
@@ -40,7 +40,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class WorryBeads extends CardImpl {
+public final class WorryBeads extends CardImpl {
public WorryBeads(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/w/Worship.java b/Mage.Sets/src/mage/cards/w/Worship.java
index 41d2c65f33d..beb7c7472b9 100644
--- a/Mage.Sets/src/mage/cards/w/Worship.java
+++ b/Mage.Sets/src/mage/cards/w/Worship.java
@@ -42,7 +42,7 @@ import mage.players.Player;
/**
* @author magenoxx_at_gmail.com
*/
-public class Worship extends CardImpl {
+public final class Worship extends CardImpl {
public Worship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WorstFears.java b/Mage.Sets/src/mage/cards/w/WorstFears.java
index 9d475bf12b4..b304ad276fa 100644
--- a/Mage.Sets/src/mage/cards/w/WorstFears.java
+++ b/Mage.Sets/src/mage/cards/w/WorstFears.java
@@ -39,7 +39,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class WorstFears extends CardImpl {
+public final class WorstFears extends CardImpl {
public WorstFears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{7}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WortBoggartAuntie.java b/Mage.Sets/src/mage/cards/w/WortBoggartAuntie.java
index d87bbeb15cc..aabba05ae10 100644
--- a/Mage.Sets/src/mage/cards/w/WortBoggartAuntie.java
+++ b/Mage.Sets/src/mage/cards/w/WortBoggartAuntie.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Loki
*/
-public class WortBoggartAuntie extends CardImpl {
+public final class WortBoggartAuntie extends CardImpl {
private static final FilterCard filter = new FilterCard("Goblin card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/w/WortTheRaidmother.java b/Mage.Sets/src/mage/cards/w/WortTheRaidmother.java
index 2f19c5a7971..a672268fc73 100644
--- a/Mage.Sets/src/mage/cards/w/WortTheRaidmother.java
+++ b/Mage.Sets/src/mage/cards/w/WortTheRaidmother.java
@@ -51,7 +51,7 @@ import mage.game.stack.StackObject;
*
* @author LevelX2
*/
-public class WortTheRaidmother extends CardImpl {
+public final class WortTheRaidmother extends CardImpl {
public WortTheRaidmother(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R/G}{R/G}");
diff --git a/Mage.Sets/src/mage/cards/w/WorthyCause.java b/Mage.Sets/src/mage/cards/w/WorthyCause.java
index 1932f4f527d..5d1b9b6cad0 100644
--- a/Mage.Sets/src/mage/cards/w/WorthyCause.java
+++ b/Mage.Sets/src/mage/cards/w/WorthyCause.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class WorthyCause extends CardImpl {
+public final class WorthyCause extends CardImpl {
public WorthyCause(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WoundReflection.java b/Mage.Sets/src/mage/cards/w/WoundReflection.java
index 3ab42e6b2b5..1a360e6b50f 100644
--- a/Mage.Sets/src/mage/cards/w/WoundReflection.java
+++ b/Mage.Sets/src/mage/cards/w/WoundReflection.java
@@ -44,7 +44,7 @@ import mage.watchers.common.PlayerLostLifeWatcher;
*
* @author LevelX2
*/
-public class WoundReflection extends CardImpl {
+public final class WoundReflection extends CardImpl {
public WoundReflection(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WrackWithMadness.java b/Mage.Sets/src/mage/cards/w/WrackWithMadness.java
index ae61d4095e2..2cc7bae3c9e 100644
--- a/Mage.Sets/src/mage/cards/w/WrackWithMadness.java
+++ b/Mage.Sets/src/mage/cards/w/WrackWithMadness.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class WrackWithMadness extends CardImpl {
+public final class WrackWithMadness extends CardImpl {
public WrackWithMadness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/Wrangle.java b/Mage.Sets/src/mage/cards/w/Wrangle.java
index aa89d535e04..413de43316a 100644
--- a/Mage.Sets/src/mage/cards/w/Wrangle.java
+++ b/Mage.Sets/src/mage/cards/w/Wrangle.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class Wrangle extends CardImpl {
+public final class Wrangle extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or less");
diff --git a/Mage.Sets/src/mage/cards/w/WrapInFlames.java b/Mage.Sets/src/mage/cards/w/WrapInFlames.java
index 1ea456ba03f..c16dc02bcea 100644
--- a/Mage.Sets/src/mage/cards/w/WrapInFlames.java
+++ b/Mage.Sets/src/mage/cards/w/WrapInFlames.java
@@ -40,7 +40,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class WrapInFlames extends CardImpl {
+public final class WrapInFlames extends CardImpl {
public WrapInFlames(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WrapInVigor.java b/Mage.Sets/src/mage/cards/w/WrapInVigor.java
index 037e2bd8512..3b75df2c605 100644
--- a/Mage.Sets/src/mage/cards/w/WrapInVigor.java
+++ b/Mage.Sets/src/mage/cards/w/WrapInVigor.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class WrapInVigor extends CardImpl {
+public final class WrapInVigor extends CardImpl {
public WrapInVigor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WrathOfGod.java b/Mage.Sets/src/mage/cards/w/WrathOfGod.java
index 63add16e29a..ecab627c28d 100644
--- a/Mage.Sets/src/mage/cards/w/WrathOfGod.java
+++ b/Mage.Sets/src/mage/cards/w/WrathOfGod.java
@@ -38,7 +38,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
*
* @author Loki
*/
-public class WrathOfGod extends CardImpl {
+public final class WrathOfGod extends CardImpl {
public WrathOfGod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/w/WrathOfMaritLage.java b/Mage.Sets/src/mage/cards/w/WrathOfMaritLage.java
index f1d25ff942d..c9de4d3bd08 100644
--- a/Mage.Sets/src/mage/cards/w/WrathOfMaritLage.java
+++ b/Mage.Sets/src/mage/cards/w/WrathOfMaritLage.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author Plopman
*/
-public class WrathOfMaritLage extends CardImpl {
+public final class WrathOfMaritLage extends CardImpl {
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red creatures");
diff --git a/Mage.Sets/src/mage/cards/w/WreakHavoc.java b/Mage.Sets/src/mage/cards/w/WreakHavoc.java
index 1ed81042626..ac4b607f44b 100644
--- a/Mage.Sets/src/mage/cards/w/WreakHavoc.java
+++ b/Mage.Sets/src/mage/cards/w/WreakHavoc.java
@@ -42,7 +42,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class WreakHavoc extends CardImpl {
+public final class WreakHavoc extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or land");
diff --git a/Mage.Sets/src/mage/cards/w/WreathofGeists.java b/Mage.Sets/src/mage/cards/w/WreathofGeists.java
index a31bb8b0c19..663de7b3bd7 100644
--- a/Mage.Sets/src/mage/cards/w/WreathofGeists.java
+++ b/Mage.Sets/src/mage/cards/w/WreathofGeists.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author nantuko
*/
-public class WreathofGeists extends CardImpl {
+public final class WreathofGeists extends CardImpl {
public WreathofGeists(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WreckingBall.java b/Mage.Sets/src/mage/cards/w/WreckingBall.java
index f9b4e916159..5a9cd393ebe 100644
--- a/Mage.Sets/src/mage/cards/w/WreckingBall.java
+++ b/Mage.Sets/src/mage/cards/w/WreckingBall.java
@@ -43,7 +43,7 @@ import mage.target.TargetPermanent;
* @author JotaPeRL
*/
-public class WreckingBall extends CardImpl {
+public final class WreckingBall extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creature or land");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WreckingOgre.java b/Mage.Sets/src/mage/cards/w/WreckingOgre.java
index 09bbe354edd..9368509ffd0 100644
--- a/Mage.Sets/src/mage/cards/w/WreckingOgre.java
+++ b/Mage.Sets/src/mage/cards/w/WreckingOgre.java
@@ -44,7 +44,7 @@ import mage.constants.Duration;
*
* @author Plopman
*/
-public class WreckingOgre extends CardImpl {
+public final class WreckingOgre extends CardImpl {
public WreckingOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/w/WrenchMind.java b/Mage.Sets/src/mage/cards/w/WrenchMind.java
index 4214918a394..f64348526fb 100644
--- a/Mage.Sets/src/mage/cards/w/WrenchMind.java
+++ b/Mage.Sets/src/mage/cards/w/WrenchMind.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetDiscard;
*
* @author LevelX2
*/
-public class WrenchMind extends CardImpl {
+public final class WrenchMind extends CardImpl {
public WrenchMind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WrensRunPackmaster.java b/Mage.Sets/src/mage/cards/w/WrensRunPackmaster.java
index 7e5aafa9414..4f8017f2e69 100644
--- a/Mage.Sets/src/mage/cards/w/WrensRunPackmaster.java
+++ b/Mage.Sets/src/mage/cards/w/WrensRunPackmaster.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.WolfToken;
*
* @author emerald000
*/
-public class WrensRunPackmaster extends CardImpl {
+public final class WrensRunPackmaster extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Wolf");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WrensRunVanquisher.java b/Mage.Sets/src/mage/cards/w/WrensRunVanquisher.java
index a5d876a41eb..98522bfe525 100644
--- a/Mage.Sets/src/mage/cards/w/WrensRunVanquisher.java
+++ b/Mage.Sets/src/mage/cards/w/WrensRunVanquisher.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCardInHand;
*
* @author LevelX2
*/
-public class WrensRunVanquisher extends CardImpl {
+public final class WrensRunVanquisher extends CardImpl {
private static final FilterCard filter = new FilterCard("an Elf card from your hand");
static {
diff --git a/Mage.Sets/src/mage/cards/w/WretchedAnurid.java b/Mage.Sets/src/mage/cards/w/WretchedAnurid.java
index a761f0fbb52..840767f91d9 100644
--- a/Mage.Sets/src/mage/cards/w/WretchedAnurid.java
+++ b/Mage.Sets/src/mage/cards/w/WretchedAnurid.java
@@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author fireshoes
*/
-public class WretchedAnurid extends CardImpl {
+public final class WretchedAnurid extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another creature");
diff --git a/Mage.Sets/src/mage/cards/w/WretchedBanquet.java b/Mage.Sets/src/mage/cards/w/WretchedBanquet.java
index aa00c3ab552..00cec941ed8 100644
--- a/Mage.Sets/src/mage/cards/w/WretchedBanquet.java
+++ b/Mage.Sets/src/mage/cards/w/WretchedBanquet.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class WretchedBanquet extends CardImpl {
+public final class WretchedBanquet extends CardImpl {
public WretchedBanquet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
@@ -83,6 +83,9 @@ class WretchedBanquetEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Permanent targetCreature = game.getPermanent(source.getFirstTarget());
+ if (targetCreature == null) {
+ return false;
+ }
List creatures = game.getBattlefield().getActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, source.getControllerId(), source.getSourceId(), game);
int minPower = targetCreature.getPower().getValue() + 1;
@@ -92,7 +95,7 @@ class WretchedBanquetEffect extends OneShotEffect {
}
}
- if (targetCreature != null && targetCreature.getPower().getValue() <= minPower) {
+ if (targetCreature.getPower().getValue() <= minPower) {
targetCreature.destroy(source.getSourceId(), game, false);
return true;
}
diff --git a/Mage.Sets/src/mage/cards/w/WretchedCamel.java b/Mage.Sets/src/mage/cards/w/WretchedCamel.java
index 0b959978a23..8e7ca53b095 100644
--- a/Mage.Sets/src/mage/cards/w/WretchedCamel.java
+++ b/Mage.Sets/src/mage/cards/w/WretchedCamel.java
@@ -49,7 +49,7 @@ import mage.target.TargetPlayer;
*
* @author spjspj
*/
-public class WretchedCamel extends CardImpl {
+public final class WretchedCamel extends CardImpl {
private static final FilterControlledPermanent filterDesertPermanent = new FilterControlledPermanent("Desert");
private static final FilterCard filterDesertCard = new FilterCard("Desert card");
diff --git a/Mage.Sets/src/mage/cards/w/WretchedConfluence.java b/Mage.Sets/src/mage/cards/w/WretchedConfluence.java
index 9a759adf6f0..7a986eece1b 100644
--- a/Mage.Sets/src/mage/cards/w/WretchedConfluence.java
+++ b/Mage.Sets/src/mage/cards/w/WretchedConfluence.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class WretchedConfluence extends CardImpl {
+public final class WretchedConfluence extends CardImpl {
public WretchedConfluence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WretchedGryff.java b/Mage.Sets/src/mage/cards/w/WretchedGryff.java
index 12f73550fff..880e16afdcd 100644
--- a/Mage.Sets/src/mage/cards/w/WretchedGryff.java
+++ b/Mage.Sets/src/mage/cards/w/WretchedGryff.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class WretchedGryff extends CardImpl {
+public final class WretchedGryff extends CardImpl {
public WretchedGryff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{7}");
diff --git a/Mage.Sets/src/mage/cards/w/WrexialTheRisenDeep.java b/Mage.Sets/src/mage/cards/w/WrexialTheRisenDeep.java
index a98bd2de1e2..18e73164751 100644
--- a/Mage.Sets/src/mage/cards/w/WrexialTheRisenDeep.java
+++ b/Mage.Sets/src/mage/cards/w/WrexialTheRisenDeep.java
@@ -29,6 +29,7 @@ package mage.cards.w;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@@ -56,7 +57,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author jeffwadsworth
*/
-public class WrexialTheRisenDeep extends CardImpl {
+public final class WrexialTheRisenDeep extends CardImpl {
public WrexialTheRisenDeep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}{B}");
@@ -119,7 +120,7 @@ class WrexialEffect extends OneShotEffect {
if (controller.chooseTarget(Outcome.PlayForFree, target, source, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
game.addEffect(new WrexialReplacementEffect(card.getId()), source);
}
}
diff --git a/Mage.Sets/src/mage/cards/w/WringFlesh.java b/Mage.Sets/src/mage/cards/w/WringFlesh.java
index 7b619dd007a..78ace488dfd 100644
--- a/Mage.Sets/src/mage/cards/w/WringFlesh.java
+++ b/Mage.Sets/src/mage/cards/w/WringFlesh.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCreaturePermanent;
/**
* @author Loki
*/
-public class WringFlesh extends CardImpl {
+public final class WringFlesh extends CardImpl {
public WringFlesh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WritOfPassage.java b/Mage.Sets/src/mage/cards/w/WritOfPassage.java
index 4f280d0e339..4df9d787939 100644
--- a/Mage.Sets/src/mage/cards/w/WritOfPassage.java
+++ b/Mage.Sets/src/mage/cards/w/WritOfPassage.java
@@ -60,7 +60,7 @@ import mage.game.permanent.Permanent;
*
* @author TheElk801
*/
-public class WritOfPassage extends CardImpl {
+public final class WritOfPassage extends CardImpl {
public WritOfPassage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WriteIntoBeing.java b/Mage.Sets/src/mage/cards/w/WriteIntoBeing.java
index 60732a32fec..26b5f14f68f 100644
--- a/Mage.Sets/src/mage/cards/w/WriteIntoBeing.java
+++ b/Mage.Sets/src/mage/cards/w/WriteIntoBeing.java
@@ -49,7 +49,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class WriteIntoBeing extends CardImpl {
+public final class WriteIntoBeing extends CardImpl {
public WriteIntoBeing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WuAdmiral.java b/Mage.Sets/src/mage/cards/w/WuAdmiral.java
index 4978a4a92ff..5d54655a4ba 100644
--- a/Mage.Sets/src/mage/cards/w/WuAdmiral.java
+++ b/Mage.Sets/src/mage/cards/w/WuAdmiral.java
@@ -45,7 +45,7 @@ import mage.filter.FilterPermanent;
*
* @author LoneFox
*/
-public class WuAdmiral extends CardImpl {
+public final class WuAdmiral extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.ISLAND, "Island");
diff --git a/Mage.Sets/src/mage/cards/w/WuEliteCavalry.java b/Mage.Sets/src/mage/cards/w/WuEliteCavalry.java
index 2ec5d4cd6a8..8802c0750ba 100644
--- a/Mage.Sets/src/mage/cards/w/WuEliteCavalry.java
+++ b/Mage.Sets/src/mage/cards/w/WuEliteCavalry.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WuEliteCavalry extends CardImpl {
+public final class WuEliteCavalry extends CardImpl {
public WuEliteCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WuInfantry.java b/Mage.Sets/src/mage/cards/w/WuInfantry.java
index 4867124e93d..b38d4e10c0e 100644
--- a/Mage.Sets/src/mage/cards/w/WuInfantry.java
+++ b/Mage.Sets/src/mage/cards/w/WuInfantry.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class WuInfantry extends CardImpl {
+public final class WuInfantry extends CardImpl {
public WuInfantry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WuLightCavalry.java b/Mage.Sets/src/mage/cards/w/WuLightCavalry.java
index 976ff8a2598..101bba0e008 100644
--- a/Mage.Sets/src/mage/cards/w/WuLightCavalry.java
+++ b/Mage.Sets/src/mage/cards/w/WuLightCavalry.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class WuLightCavalry extends CardImpl {
+public final class WuLightCavalry extends CardImpl {
public WuLightCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WuLongbowman.java b/Mage.Sets/src/mage/cards/w/WuLongbowman.java
index d19ce12a1e4..bcbb919cde1 100644
--- a/Mage.Sets/src/mage/cards/w/WuLongbowman.java
+++ b/Mage.Sets/src/mage/cards/w/WuLongbowman.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class WuLongbowman extends CardImpl {
+public final class WuLongbowman extends CardImpl {
public WuLongbowman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WuScout.java b/Mage.Sets/src/mage/cards/w/WuScout.java
index 1889be7a598..ad2ded9b0d9 100644
--- a/Mage.Sets/src/mage/cards/w/WuScout.java
+++ b/Mage.Sets/src/mage/cards/w/WuScout.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponent;
*
* @author LoneFox
*/
-public class WuScout extends CardImpl {
+public final class WuScout extends CardImpl {
public WuScout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WuSpy.java b/Mage.Sets/src/mage/cards/w/WuSpy.java
index 24d1046d431..35939f06957 100644
--- a/Mage.Sets/src/mage/cards/w/WuSpy.java
+++ b/Mage.Sets/src/mage/cards/w/WuSpy.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author djbrez
*/
-public class WuSpy extends CardImpl {
+public final class WuSpy extends CardImpl {
public WuSpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/WuWarship.java b/Mage.Sets/src/mage/cards/w/WuWarship.java
index bb75fe64119..24652461c82 100644
--- a/Mage.Sets/src/mage/cards/w/WuWarship.java
+++ b/Mage.Sets/src/mage/cards/w/WuWarship.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class WuWarship extends CardImpl {
+public final class WuWarship extends CardImpl {
public WuWarship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/w/Wurmcalling.java b/Mage.Sets/src/mage/cards/w/Wurmcalling.java
index 39de00f2386..704e973bac3 100644
--- a/Mage.Sets/src/mage/cards/w/Wurmcalling.java
+++ b/Mage.Sets/src/mage/cards/w/Wurmcalling.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.WurmCallingWurmToken;
*
* @author LoneFox
*/
-public class Wurmcalling extends CardImpl {
+public final class Wurmcalling extends CardImpl {
public Wurmcalling(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WurmcoilEngine.java b/Mage.Sets/src/mage/cards/w/WurmcoilEngine.java
index 8a5d104b8e4..32e0a359103 100644
--- a/Mage.Sets/src/mage/cards/w/WurmcoilEngine.java
+++ b/Mage.Sets/src/mage/cards/w/WurmcoilEngine.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.Wurm2Token;
*
* @author Loki
*/
-public class WurmcoilEngine extends CardImpl {
+public final class WurmcoilEngine extends CardImpl {
public WurmcoilEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
diff --git a/Mage.Sets/src/mage/cards/w/WurmsTooth.java b/Mage.Sets/src/mage/cards/w/WurmsTooth.java
index ca739d4c7ab..a055c5d3d08 100644
--- a/Mage.Sets/src/mage/cards/w/WurmsTooth.java
+++ b/Mage.Sets/src/mage/cards/w/WurmsTooth.java
@@ -44,7 +44,7 @@ import mage.game.stack.Spell;
*
* @author BetaSteward_at_googlemail.com
*/
-public class WurmsTooth extends CardImpl {
+public final class WurmsTooth extends CardImpl {
public WurmsTooth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
diff --git a/Mage.Sets/src/mage/cards/w/WurmskinForger.java b/Mage.Sets/src/mage/cards/w/WurmskinForger.java
index 415848c9591..74ef3b7c7e8 100644
--- a/Mage.Sets/src/mage/cards/w/WurmskinForger.java
+++ b/Mage.Sets/src/mage/cards/w/WurmskinForger.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*
* @author LoneFox
*/
-public class WurmskinForger extends CardImpl {
+public final class WurmskinForger extends CardImpl {
public WurmskinForger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/w/WurmweaverCoil.java b/Mage.Sets/src/mage/cards/w/WurmweaverCoil.java
index 35df281afbf..0316d4064ea 100644
--- a/Mage.Sets/src/mage/cards/w/WurmweaverCoil.java
+++ b/Mage.Sets/src/mage/cards/w/WurmweaverCoil.java
@@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class WurmweaverCoil extends CardImpl {
+public final class WurmweaverCoil extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature");
diff --git a/Mage.Sets/src/mage/cards/w/WydwenTheBitingGale.java b/Mage.Sets/src/mage/cards/w/WydwenTheBitingGale.java
index af01f5efa3b..641e9ef6957 100644
--- a/Mage.Sets/src/mage/cards/w/WydwenTheBitingGale.java
+++ b/Mage.Sets/src/mage/cards/w/WydwenTheBitingGale.java
@@ -47,7 +47,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class WydwenTheBitingGale extends CardImpl {
+public final class WydwenTheBitingGale extends CardImpl {
public WydwenTheBitingGale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/w/WyluliWolf.java b/Mage.Sets/src/mage/cards/w/WyluliWolf.java
index 44a561abba8..8cb242be78d 100644
--- a/Mage.Sets/src/mage/cards/w/WyluliWolf.java
+++ b/Mage.Sets/src/mage/cards/w/WyluliWolf.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Quercitron
*/
-public class WyluliWolf extends CardImpl {
+public final class WyluliWolf extends CardImpl {
public WyluliWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/x/XWing.java b/Mage.Sets/src/mage/cards/x/XWing.java
index b5d97b947de..f6c86650804 100644
--- a/Mage.Sets/src/mage/cards/x/XWing.java
+++ b/Mage.Sets/src/mage/cards/x/XWing.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Styxo
*/
-public class XWing extends CardImpl {
+public final class XWing extends CardImpl {
public XWing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/x/XanthicStatue.java b/Mage.Sets/src/mage/cards/x/XanthicStatue.java
index 95ffa9d6541..78d03e27509 100644
--- a/Mage.Sets/src/mage/cards/x/XanthicStatue.java
+++ b/Mage.Sets/src/mage/cards/x/XanthicStatue.java
@@ -45,7 +45,7 @@ import mage.game.permanent.token.Token;
*
* @author LoneFox
*/
-public class XanthicStatue extends CardImpl {
+public final class XanthicStatue extends CardImpl {
public XanthicStatue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{8}");
diff --git a/Mage.Sets/src/mage/cards/x/XantidSwarm.java b/Mage.Sets/src/mage/cards/x/XantidSwarm.java
index 5b64ca502d6..d78fb1e296d 100644
--- a/Mage.Sets/src/mage/cards/x/XantidSwarm.java
+++ b/Mage.Sets/src/mage/cards/x/XantidSwarm.java
@@ -51,7 +51,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class XantidSwarm extends CardImpl {
+public final class XantidSwarm extends CardImpl {
public XantidSwarm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/x/XathridDemon.java b/Mage.Sets/src/mage/cards/x/XathridDemon.java
index c74a285a070..501d4691f05 100644
--- a/Mage.Sets/src/mage/cards/x/XathridDemon.java
+++ b/Mage.Sets/src/mage/cards/x/XathridDemon.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author North
*/
-public class XathridDemon extends CardImpl {
+public final class XathridDemon extends CardImpl {
public XathridDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/x/XathridGorgon.java b/Mage.Sets/src/mage/cards/x/XathridGorgon.java
index 87979a66624..3220355996b 100644
--- a/Mage.Sets/src/mage/cards/x/XathridGorgon.java
+++ b/Mage.Sets/src/mage/cards/x/XathridGorgon.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class XathridGorgon extends CardImpl {
+public final class XathridGorgon extends CardImpl {
public XathridGorgon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/x/XathridNecromancer.java b/Mage.Sets/src/mage/cards/x/XathridNecromancer.java
index 0141bc2719c..67917c3fa38 100644
--- a/Mage.Sets/src/mage/cards/x/XathridNecromancer.java
+++ b/Mage.Sets/src/mage/cards/x/XathridNecromancer.java
@@ -47,7 +47,7 @@ import mage.game.permanent.token.ZombieToken;
*
* @author LevelX2
*/
-public class XathridNecromancer extends CardImpl {
+public final class XathridNecromancer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creature you control");
diff --git a/Mage.Sets/src/mage/cards/x/XathridSlyblade.java b/Mage.Sets/src/mage/cards/x/XathridSlyblade.java
index 763f30cd871..388c428b0b5 100644
--- a/Mage.Sets/src/mage/cards/x/XathridSlyblade.java
+++ b/Mage.Sets/src/mage/cards/x/XathridSlyblade.java
@@ -48,7 +48,7 @@ import mage.constants.Zone;
/**
* @author noxx
*/
-public class XathridSlyblade extends CardImpl {
+public final class XathridSlyblade extends CardImpl {
public XathridSlyblade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/x/XenagosGodOfRevels.java b/Mage.Sets/src/mage/cards/x/XenagosGodOfRevels.java
index f6202b07e04..03b7db33932 100644
--- a/Mage.Sets/src/mage/cards/x/XenagosGodOfRevels.java
+++ b/Mage.Sets/src/mage/cards/x/XenagosGodOfRevels.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class XenagosGodOfRevels extends CardImpl {
+public final class XenagosGodOfRevels extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control");
static {
diff --git a/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java b/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java
index d18b675a67d..a028428abff 100644
--- a/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java
+++ b/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java
@@ -60,7 +60,7 @@ import mage.target.TargetCard;
*
* @author LevelX2
*/
-public class XenagosTheReveler extends CardImpl {
+public final class XenagosTheReveler extends CardImpl {
public XenagosTheReveler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/x/XenicPoltergeist.java b/Mage.Sets/src/mage/cards/x/XenicPoltergeist.java
index 74fb2c78ed6..d47af9763d9 100644
--- a/Mage.Sets/src/mage/cards/x/XenicPoltergeist.java
+++ b/Mage.Sets/src/mage/cards/x/XenicPoltergeist.java
@@ -54,7 +54,7 @@ import mage.target.common.TargetArtifactPermanent;
*
* @author MarcoMarin
*/
-public class XenicPoltergeist extends CardImpl {
+public final class XenicPoltergeist extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent();
diff --git a/Mage.Sets/src/mage/cards/x/Xenograft.java b/Mage.Sets/src/mage/cards/x/Xenograft.java
index a78b5caef3c..a6e780794e7 100644
--- a/Mage.Sets/src/mage/cards/x/Xenograft.java
+++ b/Mage.Sets/src/mage/cards/x/Xenograft.java
@@ -45,7 +45,7 @@ import mage.game.permanent.Permanent;
*
* @author North
*/
-public class Xenograft extends CardImpl {
+public final class Xenograft extends CardImpl {
public Xenograft(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/x/XiahouDunTheOneEyed.java b/Mage.Sets/src/mage/cards/x/XiahouDunTheOneEyed.java
index 84ae28f1990..916cd4d5d45 100644
--- a/Mage.Sets/src/mage/cards/x/XiahouDunTheOneEyed.java
+++ b/Mage.Sets/src/mage/cards/x/XiahouDunTheOneEyed.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class XiahouDunTheOneEyed extends CardImpl {
+public final class XiahouDunTheOneEyed extends CardImpl {
private static final FilterCard filter = new FilterCard("a black card");
diff --git a/Mage.Sets/src/mage/cards/x/XiraArien.java b/Mage.Sets/src/mage/cards/x/XiraArien.java
index c530fe7f8fb..d664243c531 100644
--- a/Mage.Sets/src/mage/cards/x/XiraArien.java
+++ b/Mage.Sets/src/mage/cards/x/XiraArien.java
@@ -47,7 +47,7 @@ import mage.target.TargetPlayer;
*
* @author LevelX2
*/
-public class XiraArien extends CardImpl {
+public final class XiraArien extends CardImpl {
public XiraArien(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/x/XunYuWeiAdvisor.java b/Mage.Sets/src/mage/cards/x/XunYuWeiAdvisor.java
index 93b58a3cbef..034b3a958b8 100644
--- a/Mage.Sets/src/mage/cards/x/XunYuWeiAdvisor.java
+++ b/Mage.Sets/src/mage/cards/x/XunYuWeiAdvisor.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class XunYuWeiAdvisor extends CardImpl {
+public final class XunYuWeiAdvisor extends CardImpl {
public XunYuWeiAdvisor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/y/YWing.java b/Mage.Sets/src/mage/cards/y/YWing.java
index 93b8a651e67..07b2c1a6265 100644
--- a/Mage.Sets/src/mage/cards/y/YWing.java
+++ b/Mage.Sets/src/mage/cards/y/YWing.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*
* @author Styxo
*/
-public class YWing extends CardImpl {
+public final class YWing extends CardImpl {
public YWing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/y/YahenniUndyingPartisan.java b/Mage.Sets/src/mage/cards/y/YahenniUndyingPartisan.java
index 428f5832089..e430d552bae 100644
--- a/Mage.Sets/src/mage/cards/y/YahenniUndyingPartisan.java
+++ b/Mage.Sets/src/mage/cards/y/YahenniUndyingPartisan.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author fireshoes
*/
-public class YahenniUndyingPartisan extends CardImpl {
+public final class YahenniUndyingPartisan extends CardImpl {
public YahenniUndyingPartisan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/y/YahennisExpertise.java b/Mage.Sets/src/mage/cards/y/YahennisExpertise.java
index 98c11d18699..f9b49f60d0b 100644
--- a/Mage.Sets/src/mage/cards/y/YahennisExpertise.java
+++ b/Mage.Sets/src/mage/cards/y/YahennisExpertise.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
/**
* @author fireshoes
*/
-public class YahennisExpertise extends CardImpl {
+public final class YahennisExpertise extends CardImpl {
public YahennisExpertise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/y/YamabushisFlame.java b/Mage.Sets/src/mage/cards/y/YamabushisFlame.java
index 94a64379b64..d26477cde81 100644
--- a/Mage.Sets/src/mage/cards/y/YamabushisFlame.java
+++ b/Mage.Sets/src/mage/cards/y/YamabushisFlame.java
@@ -43,7 +43,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author LevelX
*/
-public class YamabushisFlame extends CardImpl {
+public final class YamabushisFlame extends CardImpl {
public YamabushisFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YamabushisStorm.java b/Mage.Sets/src/mage/cards/y/YamabushisStorm.java
index 7f1fe778047..f4345489b81 100644
--- a/Mage.Sets/src/mage/cards/y/YamabushisStorm.java
+++ b/Mage.Sets/src/mage/cards/y/YamabushisStorm.java
@@ -43,7 +43,7 @@ import mage.watchers.common.DamagedByWatcher;
*
* @author LevelX
*/
-public class YamabushisStorm extends CardImpl {
+public final class YamabushisStorm extends CardImpl {
public YamabushisStorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YargleGluttonOfUrborg.java b/Mage.Sets/src/mage/cards/y/YargleGluttonOfUrborg.java
index 93b96b26eb8..77b1311faac 100644
--- a/Mage.Sets/src/mage/cards/y/YargleGluttonOfUrborg.java
+++ b/Mage.Sets/src/mage/cards/y/YargleGluttonOfUrborg.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author TheElk801
*/
-public class YargleGluttonOfUrborg extends CardImpl {
+public final class YargleGluttonOfUrborg extends CardImpl {
public YargleGluttonOfUrborg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java b/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java
index 3fcc58af8d2..c76433b1ce3 100644
--- a/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java
+++ b/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java
@@ -58,7 +58,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class YasovaDragonclaw extends CardImpl {
+public final class YasovaDragonclaw extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls with power less than Yasova Dragonclaw's power");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaAncients.java b/Mage.Sets/src/mage/cards/y/YavimayaAncients.java
index 68142403780..69fe5f065e4 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaAncients.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaAncients.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author LoneFox
*/
-public class YavimayaAncients extends CardImpl {
+public final class YavimayaAncients extends CardImpl {
public YavimayaAncients(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaAnts.java b/Mage.Sets/src/mage/cards/y/YavimayaAnts.java
index 81dbf762ca7..c16f807f26f 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaAnts.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaAnts.java
@@ -43,7 +43,7 @@ import mage.constants.SubType;
* @author LoneFox
*/
-public class YavimayaAnts extends CardImpl {
+public final class YavimayaAnts extends CardImpl {
public YavimayaAnts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaBarbarian.java b/Mage.Sets/src/mage/cards/y/YavimayaBarbarian.java
index 9d7c2560a67..8ed4ac679d0 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaBarbarian.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaBarbarian.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class YavimayaBarbarian extends CardImpl {
+public final class YavimayaBarbarian extends CardImpl {
public YavimayaBarbarian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaCoast.java b/Mage.Sets/src/mage/cards/y/YavimayaCoast.java
index 3ffcb3d12a6..58fae837cc8 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaCoast.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaCoast.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author Loki
*/
-public class YavimayaCoast extends CardImpl {
+public final class YavimayaCoast extends CardImpl {
public YavimayaCoast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaDryad.java b/Mage.Sets/src/mage/cards/y/YavimayaDryad.java
index e1f25b2298c..24b70a045a7 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaDryad.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaDryad.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LoneFox
*/
-public class YavimayaDryad extends CardImpl {
+public final class YavimayaDryad extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("a Forest card");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaElder.java b/Mage.Sets/src/mage/cards/y/YavimayaElder.java
index 923032b126c..2ddbc2239e5 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaElder.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaElder.java
@@ -49,7 +49,7 @@ import java.util.UUID;
*
* @author LevelX2
*/
-public class YavimayaElder extends CardImpl {
+public final class YavimayaElder extends CardImpl {
public YavimayaElder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
@@ -60,7 +60,7 @@ public class YavimayaElder extends CardImpl {
this.toughness = new MageInt(1);
// When Yavimaya Elder dies, you may search your library for up to two basic land cards, reveal them, and put them into your hand. If you do, shuffle your library.
- this.addAbility(new DiesTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_BASIC_LAND_CARD), true), true));
+ this.addAbility(new DiesTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
// {2}, Sacrifice Yavimaya Elder: Draw a card.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2));
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaEnchantress.java b/Mage.Sets/src/mage/cards/y/YavimayaEnchantress.java
index 6595aea294c..2f70498170d 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaEnchantress.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaEnchantress.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author Loki
*/
-public class YavimayaEnchantress extends CardImpl {
+public final class YavimayaEnchantress extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("enchantment on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaGnats.java b/Mage.Sets/src/mage/cards/y/YavimayaGnats.java
index cae880d2a61..9ec7839989e 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaGnats.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaGnats.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author nigelzor
*/
-public class YavimayaGnats extends CardImpl {
+public final class YavimayaGnats extends CardImpl {
public YavimayaGnats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaGranger.java b/Mage.Sets/src/mage/cards/y/YavimayaGranger.java
index 466d8a128fc..291752925c7 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaGranger.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaGranger.java
@@ -44,7 +44,7 @@ import java.util.UUID;
*
* @author Backfir3
*/
-public class YavimayaGranger extends CardImpl {
+public final class YavimayaGranger extends CardImpl {
public YavimayaGranger(UUID ownerId, CardSetInfo setInfo) {
@@ -57,7 +57,7 @@ public class YavimayaGranger extends CardImpl {
this.addAbility(new EchoAbility("{2}{G}"));
//When Yavimaya Granger enters the battlefield, you may search your library for a basic land card,
//put that card onto the battlefield tapped, then shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
}
public YavimayaGranger(final YavimayaGranger card) {
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaHollow.java b/Mage.Sets/src/mage/cards/y/YavimayaHollow.java
index afbedfd1317..de3460bc435 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaHollow.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaHollow.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class YavimayaHollow extends CardImpl {
+public final class YavimayaHollow extends CardImpl {
public YavimayaHollow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaKavu.java b/Mage.Sets/src/mage/cards/y/YavimayaKavu.java
index d885a375fa4..a0c878442c7 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaKavu.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaKavu.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author michael.napoleon@gmail.com
*/
-public class YavimayaKavu extends CardImpl {
+public final class YavimayaKavu extends CardImpl {
private static final FilterCreaturePermanent filterGreenCreature = new FilterCreaturePermanent("green creatures on the battlefield");
private static final FilterCreaturePermanent filterRedCreature = new FilterCreaturePermanent("red creatures on the battlefield");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaSapherd.java b/Mage.Sets/src/mage/cards/y/YavimayaSapherd.java
index 70dbde53015..eb62e834aa3 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaSapherd.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaSapherd.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.SaprolingToken;
*
* @author TheElk801
*/
-public class YavimayaSapherd extends CardImpl {
+public final class YavimayaSapherd extends CardImpl {
public YavimayaSapherd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaScion.java b/Mage.Sets/src/mage/cards/y/YavimayaScion.java
index 4a8d046dee6..71a080134bb 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaScion.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaScion.java
@@ -40,7 +40,7 @@ import mage.filter.common.FilterArtifactCard;
*
* @author Plopman
*/
-public class YavimayaScion extends CardImpl {
+public final class YavimayaScion extends CardImpl {
public YavimayaScion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaWurm.java b/Mage.Sets/src/mage/cards/y/YavimayaWurm.java
index aac7e57eefb..ff5d79eea94 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaWurm.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaWurm.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class YavimayaWurm extends CardImpl {
+public final class YavimayaWurm extends CardImpl {
public YavimayaWurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YavimayasEmbrace.java b/Mage.Sets/src/mage/cards/y/YavimayasEmbrace.java
index a868d226b62..f7ca9de9ebd 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayasEmbrace.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayasEmbrace.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
* @author LoneFox
*/
-public class YavimayasEmbrace extends CardImpl {
+public final class YavimayasEmbrace extends CardImpl {
public YavimayasEmbrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{G}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/y/YawgmothDemon.java b/Mage.Sets/src/mage/cards/y/YawgmothDemon.java
index b95f7b21ae1..c46c9322e54 100644
--- a/Mage.Sets/src/mage/cards/y/YawgmothDemon.java
+++ b/Mage.Sets/src/mage/cards/y/YawgmothDemon.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author MarcoMarin
*/
-public class YawgmothDemon extends CardImpl {
+public final class YawgmothDemon extends CardImpl {
public YawgmothDemon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/y/YawgmothsAgenda.java b/Mage.Sets/src/mage/cards/y/YawgmothsAgenda.java
index 9ffbf409bab..2e9a214ea56 100644
--- a/Mage.Sets/src/mage/cards/y/YawgmothsAgenda.java
+++ b/Mage.Sets/src/mage/cards/y/YawgmothsAgenda.java
@@ -55,7 +55,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class YawgmothsAgenda extends CardImpl {
+public final class YawgmothsAgenda extends CardImpl {
public YawgmothsAgenda(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/y/YawgmothsBargain.java b/Mage.Sets/src/mage/cards/y/YawgmothsBargain.java
index 53b5c6d5f4e..b3e7d252db7 100644
--- a/Mage.Sets/src/mage/cards/y/YawgmothsBargain.java
+++ b/Mage.Sets/src/mage/cards/y/YawgmothsBargain.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author emerald000
*/
-public class YawgmothsBargain extends CardImpl {
+public final class YawgmothsBargain extends CardImpl {
public YawgmothsBargain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/y/YawgmothsEdict.java b/Mage.Sets/src/mage/cards/y/YawgmothsEdict.java
index ca42c718d62..24953505e1c 100644
--- a/Mage.Sets/src/mage/cards/y/YawgmothsEdict.java
+++ b/Mage.Sets/src/mage/cards/y/YawgmothsEdict.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* @author LoneFox
*/
-public class YawgmothsEdict extends CardImpl {
+public final class YawgmothsEdict extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a white spell");
diff --git a/Mage.Sets/src/mage/cards/y/YawgmothsVileOffering.java b/Mage.Sets/src/mage/cards/y/YawgmothsVileOffering.java
index 0aff3af8a64..385cfdade83 100644
--- a/Mage.Sets/src/mage/cards/y/YawgmothsVileOffering.java
+++ b/Mage.Sets/src/mage/cards/y/YawgmothsVileOffering.java
@@ -23,7 +23,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
/**
* @author JRHerlehy Created on 4/8/18.
*/
-public class YawgmothsVileOffering extends CardImpl {
+public final class YawgmothsVileOffering extends CardImpl {
private static final FilterPermanentCard cardFilter = new FilterPermanentCard("creature or planeswalker card");
diff --git a/Mage.Sets/src/mage/cards/y/YawgmothsWill.java b/Mage.Sets/src/mage/cards/y/YawgmothsWill.java
index 2d548a059b1..0ddda87b85b 100644
--- a/Mage.Sets/src/mage/cards/y/YawgmothsWill.java
+++ b/Mage.Sets/src/mage/cards/y/YawgmothsWill.java
@@ -52,7 +52,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class YawgmothsWill extends CardImpl {
+public final class YawgmothsWill extends CardImpl {
public YawgmothsWill(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/y/YawningFissure.java b/Mage.Sets/src/mage/cards/y/YawningFissure.java
index 920ee624d36..9e6d6964b42 100644
--- a/Mage.Sets/src/mage/cards/y/YawningFissure.java
+++ b/Mage.Sets/src/mage/cards/y/YawningFissure.java
@@ -38,7 +38,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author North
*/
-public class YawningFissure extends CardImpl {
+public final class YawningFissure extends CardImpl {
public YawningFissure(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YdwenEfreet.java b/Mage.Sets/src/mage/cards/y/YdwenEfreet.java
index 4f3cc681787..76cfeedd1aa 100644
--- a/Mage.Sets/src/mage/cards/y/YdwenEfreet.java
+++ b/Mage.Sets/src/mage/cards/y/YdwenEfreet.java
@@ -48,7 +48,7 @@ import mage.watchers.common.BlockedByOnlyOneCreatureThisCombatWatcher;
*
* @author MarcoMarin & L_J
*/
-public class YdwenEfreet extends CardImpl {
+public final class YdwenEfreet extends CardImpl {
public YdwenEfreet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YellowScarvesCavalry.java b/Mage.Sets/src/mage/cards/y/YellowScarvesCavalry.java
index ab0ab72fd11..fd88f357fd5 100644
--- a/Mage.Sets/src/mage/cards/y/YellowScarvesCavalry.java
+++ b/Mage.Sets/src/mage/cards/y/YellowScarvesCavalry.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class YellowScarvesCavalry extends CardImpl {
+public final class YellowScarvesCavalry extends CardImpl {
public YellowScarvesCavalry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YellowScarvesGeneral.java b/Mage.Sets/src/mage/cards/y/YellowScarvesGeneral.java
index de092cdd72d..028df77fd90 100644
--- a/Mage.Sets/src/mage/cards/y/YellowScarvesGeneral.java
+++ b/Mage.Sets/src/mage/cards/y/YellowScarvesGeneral.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class YellowScarvesGeneral extends CardImpl {
+public final class YellowScarvesGeneral extends CardImpl {
public YellowScarvesGeneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YellowScarvesTroops.java b/Mage.Sets/src/mage/cards/y/YellowScarvesTroops.java
index f3de95452bb..d96d8e4c600 100644
--- a/Mage.Sets/src/mage/cards/y/YellowScarvesTroops.java
+++ b/Mage.Sets/src/mage/cards/y/YellowScarvesTroops.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class YellowScarvesTroops extends CardImpl {
+public final class YellowScarvesTroops extends CardImpl {
public YellowScarvesTroops(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YevaNaturesHerald.java b/Mage.Sets/src/mage/cards/y/YevaNaturesHerald.java
index 2ad63c00121..9e3c2afab62 100644
--- a/Mage.Sets/src/mage/cards/y/YevaNaturesHerald.java
+++ b/Mage.Sets/src/mage/cards/y/YevaNaturesHerald.java
@@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North
*/
-public class YevaNaturesHerald extends CardImpl {
+public final class YevaNaturesHerald extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("green creature spells");
diff --git a/Mage.Sets/src/mage/cards/y/YevasForcemage.java b/Mage.Sets/src/mage/cards/y/YevasForcemage.java
index dc70b9c688a..2a9431a7414 100644
--- a/Mage.Sets/src/mage/cards/y/YevasForcemage.java
+++ b/Mage.Sets/src/mage/cards/y/YevasForcemage.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author North
*/
-public class YevasForcemage extends CardImpl {
+public final class YevasForcemage extends CardImpl {
public YevasForcemage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YewSpirit.java b/Mage.Sets/src/mage/cards/y/YewSpirit.java
index a0faad57fc9..5891704bab2 100644
--- a/Mage.Sets/src/mage/cards/y/YewSpirit.java
+++ b/Mage.Sets/src/mage/cards/y/YewSpirit.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class YewSpirit extends CardImpl {
+public final class YewSpirit extends CardImpl {
public YewSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YidrisMaelstromWielder.java b/Mage.Sets/src/mage/cards/y/YidrisMaelstromWielder.java
index 12973e228d8..e4065458910 100644
--- a/Mage.Sets/src/mage/cards/y/YidrisMaelstromWielder.java
+++ b/Mage.Sets/src/mage/cards/y/YidrisMaelstromWielder.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class YidrisMaelstromWielder extends CardImpl {
+public final class YidrisMaelstromWielder extends CardImpl {
public YidrisMaelstromWielder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{B}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java b/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java
index f1780d1f670..b31ef5da68e 100644
--- a/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java
+++ b/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java
@@ -57,7 +57,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class YisanTheWandererBard extends CardImpl {
+public final class YisanTheWandererBard extends CardImpl {
public YisanTheWandererBard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YixlidJailer.java b/Mage.Sets/src/mage/cards/y/YixlidJailer.java
index f7512a5b0ce..94aa84f24a3 100644
--- a/Mage.Sets/src/mage/cards/y/YixlidJailer.java
+++ b/Mage.Sets/src/mage/cards/y/YixlidJailer.java
@@ -44,7 +44,7 @@ import mage.players.Player;
*
* @author emerald000
*/
-public class YixlidJailer extends CardImpl {
+public final class YixlidJailer extends CardImpl {
public YixlidJailer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/y/YodaJediMaster.java b/Mage.Sets/src/mage/cards/y/YodaJediMaster.java
index af22701cd9d..6ba3149cb57 100644
--- a/Mage.Sets/src/mage/cards/y/YodaJediMaster.java
+++ b/Mage.Sets/src/mage/cards/y/YodaJediMaster.java
@@ -59,7 +59,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author Styxo
*/
-public class YodaJediMaster extends CardImpl {
+public final class YodaJediMaster extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another target permanent you own");
diff --git a/Mage.Sets/src/mage/cards/y/YokeOfTheDamned.java b/Mage.Sets/src/mage/cards/y/YokeOfTheDamned.java
index 470ac80554b..db17ed889cd 100644
--- a/Mage.Sets/src/mage/cards/y/YokeOfTheDamned.java
+++ b/Mage.Sets/src/mage/cards/y/YokeOfTheDamned.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author jeffwadsworth
*/
-public class YokeOfTheDamned extends CardImpl {
+public final class YokeOfTheDamned extends CardImpl {
public YokeOfTheDamned(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/y/YokedOx.java b/Mage.Sets/src/mage/cards/y/YokedOx.java
index a2b87b6b021..f94b2028828 100644
--- a/Mage.Sets/src/mage/cards/y/YokedOx.java
+++ b/Mage.Sets/src/mage/cards/y/YokedOx.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class YokedOx extends CardImpl {
+public final class YokedOx extends CardImpl {
public YokedOx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}");
diff --git a/Mage.Sets/src/mage/cards/y/YokedPlowbeast.java b/Mage.Sets/src/mage/cards/y/YokedPlowbeast.java
index 5f7d6e653e2..e29cd4d932a 100644
--- a/Mage.Sets/src/mage/cards/y/YokedPlowbeast.java
+++ b/Mage.Sets/src/mage/cards/y/YokedPlowbeast.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class YokedPlowbeast extends CardImpl {
+public final class YokedPlowbeast extends CardImpl {
public YokedPlowbeast (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/y/YomijiWhoBarsTheWay.java b/Mage.Sets/src/mage/cards/y/YomijiWhoBarsTheWay.java
index 662a8f4ff6f..f59e46edb8e 100644
--- a/Mage.Sets/src/mage/cards/y/YomijiWhoBarsTheWay.java
+++ b/Mage.Sets/src/mage/cards/y/YomijiWhoBarsTheWay.java
@@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*
* @author LevelX2
*/
-public class YomijiWhoBarsTheWay extends CardImpl {
+public final class YomijiWhoBarsTheWay extends CardImpl {
public YomijiWhoBarsTheWay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/y/YoreTillerNephilim.java b/Mage.Sets/src/mage/cards/y/YoreTillerNephilim.java
index f9437b14ea3..2953a648247 100644
--- a/Mage.Sets/src/mage/cards/y/YoreTillerNephilim.java
+++ b/Mage.Sets/src/mage/cards/y/YoreTillerNephilim.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author fireshoes
*/
-public class YoreTillerNephilim extends CardImpl {
+public final class YoreTillerNephilim extends CardImpl {
public YoreTillerNephilim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}{B}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YoseiTheMorningStar.java b/Mage.Sets/src/mage/cards/y/YoseiTheMorningStar.java
index 4416cacdcb4..e9af6acba79 100644
--- a/Mage.Sets/src/mage/cards/y/YoseiTheMorningStar.java
+++ b/Mage.Sets/src/mage/cards/y/YoseiTheMorningStar.java
@@ -55,7 +55,7 @@ import mage.target.Targets;
*
* @author LevelX
*/
-public class YoseiTheMorningStar extends CardImpl {
+public final class YoseiTheMorningStar extends CardImpl {
public YoseiTheMorningStar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/y/YotianSoldier.java b/Mage.Sets/src/mage/cards/y/YotianSoldier.java
index 9de7737d285..f89c143491a 100644
--- a/Mage.Sets/src/mage/cards/y/YotianSoldier.java
+++ b/Mage.Sets/src/mage/cards/y/YotianSoldier.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class YotianSoldier extends CardImpl {
+public final class YotianSoldier extends CardImpl {
public YotianSoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
diff --git a/Mage.Sets/src/mage/cards/y/YoungPyromancer.java b/Mage.Sets/src/mage/cards/y/YoungPyromancer.java
index 62a07866f1c..b9cb073af88 100644
--- a/Mage.Sets/src/mage/cards/y/YoungPyromancer.java
+++ b/Mage.Sets/src/mage/cards/y/YoungPyromancer.java
@@ -42,7 +42,7 @@ import mage.game.permanent.token.YoungPyromancerElementalToken;
*
* @author jeffwadsworth
*/
-public class YoungPyromancer extends CardImpl {
+public final class YoungPyromancer extends CardImpl {
public YoungPyromancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YoungWeiRecruits.java b/Mage.Sets/src/mage/cards/y/YoungWeiRecruits.java
index 7f6e4ba05ea..be1e62b1695 100644
--- a/Mage.Sets/src/mage/cards/y/YoungWeiRecruits.java
+++ b/Mage.Sets/src/mage/cards/y/YoungWeiRecruits.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class YoungWeiRecruits extends CardImpl {
+public final class YoungWeiRecruits extends CardImpl {
public YoungWeiRecruits(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/y/YoungWolf.java b/Mage.Sets/src/mage/cards/y/YoungWolf.java
index 58f5263e9c1..eae65e5f810 100644
--- a/Mage.Sets/src/mage/cards/y/YoungWolf.java
+++ b/Mage.Sets/src/mage/cards/y/YoungWolf.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class YoungWolf extends CardImpl {
+public final class YoungWolf extends CardImpl {
public YoungWolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/y/YouthfulKnight.java b/Mage.Sets/src/mage/cards/y/YouthfulKnight.java
index bdc075b7432..f7a2484419d 100644
--- a/Mage.Sets/src/mage/cards/y/YouthfulKnight.java
+++ b/Mage.Sets/src/mage/cards/y/YouthfulKnight.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class YouthfulKnight extends CardImpl {
+public final class YouthfulKnight extends CardImpl {
public YouthfulKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/y/YouthfulScholar.java b/Mage.Sets/src/mage/cards/y/YouthfulScholar.java
index 04ee70d3eab..c05d980fab4 100644
--- a/Mage.Sets/src/mage/cards/y/YouthfulScholar.java
+++ b/Mage.Sets/src/mage/cards/y/YouthfulScholar.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class YouthfulScholar extends CardImpl {
+public final class YouthfulScholar extends CardImpl {
public YouthfulScholar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/y/YuanShaoTheIndecisive.java b/Mage.Sets/src/mage/cards/y/YuanShaoTheIndecisive.java
index f64257b25fd..6de28060cf8 100644
--- a/Mage.Sets/src/mage/cards/y/YuanShaoTheIndecisive.java
+++ b/Mage.Sets/src/mage/cards/y/YuanShaoTheIndecisive.java
@@ -44,7 +44,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*
* @author fireshoes
*/
-public class YuanShaoTheIndecisive extends CardImpl {
+public final class YuanShaoTheIndecisive extends CardImpl {
public YuanShaoTheIndecisive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YuanShaosInfantry.java b/Mage.Sets/src/mage/cards/y/YuanShaosInfantry.java
index 3589e126fae..50f0f8a5340 100644
--- a/Mage.Sets/src/mage/cards/y/YuanShaosInfantry.java
+++ b/Mage.Sets/src/mage/cards/y/YuanShaosInfantry.java
@@ -42,7 +42,7 @@ import mage.constants.Duration;
*
* @author LoneFox
*/
-public class YuanShaosInfantry extends CardImpl {
+public final class YuanShaosInfantry extends CardImpl {
public YuanShaosInfantry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YukiOnna.java b/Mage.Sets/src/mage/cards/y/YukiOnna.java
index d1257f29eb9..f0f5a519cf2 100644
--- a/Mage.Sets/src/mage/cards/y/YukiOnna.java
+++ b/Mage.Sets/src/mage/cards/y/YukiOnna.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetArtifactPermanent;
/**
* @author Loki
*/
-public class YukiOnna extends CardImpl {
+public final class YukiOnna extends CardImpl {
public YukiOnna(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/y/YukoraThePrisoner.java b/Mage.Sets/src/mage/cards/y/YukoraThePrisoner.java
index c6cabc06976..be9a076d519 100644
--- a/Mage.Sets/src/mage/cards/y/YukoraThePrisoner.java
+++ b/Mage.Sets/src/mage/cards/y/YukoraThePrisoner.java
@@ -49,7 +49,7 @@ import mage.game.permanent.Permanent;
*
* @author LevelX2
*/
-public class YukoraThePrisoner extends CardImpl {
+public final class YukoraThePrisoner extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Ogre creatures");
diff --git a/Mage.Sets/src/mage/cards/z/ZacamaPrimalCalamity.java b/Mage.Sets/src/mage/cards/z/ZacamaPrimalCalamity.java
index be6bccf8751..fb48844819c 100644
--- a/Mage.Sets/src/mage/cards/z/ZacamaPrimalCalamity.java
+++ b/Mage.Sets/src/mage/cards/z/ZacamaPrimalCalamity.java
@@ -56,7 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ZacamaPrimalCalamity extends CardImpl {
+public final class ZacamaPrimalCalamity extends CardImpl {
public ZacamaPrimalCalamity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZadaHedronGrinder.java b/Mage.Sets/src/mage/cards/z/ZadaHedronGrinder.java
index d4498f3f01b..27d7a016699 100644
--- a/Mage.Sets/src/mage/cards/z/ZadaHedronGrinder.java
+++ b/Mage.Sets/src/mage/cards/z/ZadaHedronGrinder.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
-public class ZadaHedronGrinder extends CardImpl {
+public final class ZadaHedronGrinder extends CardImpl {
public ZadaHedronGrinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/z/ZadasCommando.java b/Mage.Sets/src/mage/cards/z/ZadasCommando.java
index e1270dc6fb7..d1d37598421 100644
--- a/Mage.Sets/src/mage/cards/z/ZadasCommando.java
+++ b/Mage.Sets/src/mage/cards/z/ZadasCommando.java
@@ -52,7 +52,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author fireshoes
*/
-public class ZadasCommando extends CardImpl {
+public final class ZadasCommando extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control");
diff --git a/Mage.Sets/src/mage/cards/z/ZahidDjinnOfTheLamp.java b/Mage.Sets/src/mage/cards/z/ZahidDjinnOfTheLamp.java
index e9cbaabd814..7daa8cf8726 100644
--- a/Mage.Sets/src/mage/cards/z/ZahidDjinnOfTheLamp.java
+++ b/Mage.Sets/src/mage/cards/z/ZahidDjinnOfTheLamp.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author LevelX2
*/
-public class ZahidDjinnOfTheLamp extends CardImpl {
+public final class ZahidDjinnOfTheLamp extends CardImpl {
public ZahidDjinnOfTheLamp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZamWesell.java b/Mage.Sets/src/mage/cards/z/ZamWesell.java
index 1d6a7681b0f..de21211092e 100644
--- a/Mage.Sets/src/mage/cards/z/ZamWesell.java
+++ b/Mage.Sets/src/mage/cards/z/ZamWesell.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent;
*
* @author Styxo
*/
-public class ZamWesell extends CardImpl {
+public final class ZamWesell extends CardImpl {
public ZamWesell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZameckGuildmage.java b/Mage.Sets/src/mage/cards/z/ZameckGuildmage.java
index 21fa0994a94..53432d4c724 100644
--- a/Mage.Sets/src/mage/cards/z/ZameckGuildmage.java
+++ b/Mage.Sets/src/mage/cards/z/ZameckGuildmage.java
@@ -49,7 +49,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*
* @author LevelX2
*/
-public class ZameckGuildmage extends CardImpl {
+public final class ZameckGuildmage extends CardImpl {
public ZameckGuildmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZanamDjinn.java b/Mage.Sets/src/mage/cards/z/ZanamDjinn.java
index 9db5b8e7ca0..7d0af1a32c1 100644
--- a/Mage.Sets/src/mage/cards/z/ZanamDjinn.java
+++ b/Mage.Sets/src/mage/cards/z/ZanamDjinn.java
@@ -46,7 +46,7 @@ import mage.constants.Zone;
*
* @author TheElk801
*/
-public class ZanamDjinn extends CardImpl {
+public final class ZanamDjinn extends CardImpl {
public ZanamDjinn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZanikevLocust.java b/Mage.Sets/src/mage/cards/z/ZanikevLocust.java
index dafc918fec6..4b4f26d009f 100644
--- a/Mage.Sets/src/mage/cards/z/ZanikevLocust.java
+++ b/Mage.Sets/src/mage/cards/z/ZanikevLocust.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZanikevLocust extends CardImpl {
+public final class ZanikevLocust extends CardImpl {
public ZanikevLocust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/Zap.java b/Mage.Sets/src/mage/cards/z/Zap.java
index bfb8e30abe1..34c0f91a31d 100644
--- a/Mage.Sets/src/mage/cards/z/Zap.java
+++ b/Mage.Sets/src/mage/cards/z/Zap.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author Loki
*/
-public class Zap extends CardImpl {
+public final class Zap extends CardImpl {
public Zap(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/z/ZarichiTiger.java b/Mage.Sets/src/mage/cards/z/ZarichiTiger.java
index d01b60bc91c..56d802d7e7f 100644
--- a/Mage.Sets/src/mage/cards/z/ZarichiTiger.java
+++ b/Mage.Sets/src/mage/cards/z/ZarichiTiger.java
@@ -44,7 +44,7 @@ import mage.constants.Zone;
*
* @author LevelX2
*/
-public class ZarichiTiger extends CardImpl {
+public final class ZarichiTiger extends CardImpl {
public ZarichiTiger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZealotIlVec.java b/Mage.Sets/src/mage/cards/z/ZealotIlVec.java
index 6846a8bcf11..1ae64808bc2 100644
--- a/Mage.Sets/src/mage/cards/z/ZealotIlVec.java
+++ b/Mage.Sets/src/mage/cards/z/ZealotIlVec.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ZealotIlVec extends CardImpl {
+public final class ZealotIlVec extends CardImpl {
public ZealotIlVec(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZealotOfTheGodPharaoh.java b/Mage.Sets/src/mage/cards/z/ZealotOfTheGodPharaoh.java
index 9cb39435dae..b71222e3b58 100644
--- a/Mage.Sets/src/mage/cards/z/ZealotOfTheGodPharaoh.java
+++ b/Mage.Sets/src/mage/cards/z/ZealotOfTheGodPharaoh.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*
* @author spjspj
*/
-public class ZealotOfTheGodPharaoh extends CardImpl {
+public final class ZealotOfTheGodPharaoh extends CardImpl {
public ZealotOfTheGodPharaoh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/z/ZealotsEnDal.java b/Mage.Sets/src/mage/cards/z/ZealotsEnDal.java
index ff44831c4b9..b2dbeac55d4 100644
--- a/Mage.Sets/src/mage/cards/z/ZealotsEnDal.java
+++ b/Mage.Sets/src/mage/cards/z/ZealotsEnDal.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author TheElk801
*/
-public class ZealotsEnDal extends CardImpl {
+public final class ZealotsEnDal extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
diff --git a/Mage.Sets/src/mage/cards/z/ZealousConscripts.java b/Mage.Sets/src/mage/cards/z/ZealousConscripts.java
index ffb48ffb74d..935974cff89 100644
--- a/Mage.Sets/src/mage/cards/z/ZealousConscripts.java
+++ b/Mage.Sets/src/mage/cards/z/ZealousConscripts.java
@@ -46,7 +46,7 @@ import mage.target.TargetPermanent;
*
* @author Loki
*/
-public class ZealousConscripts extends CardImpl {
+public final class ZealousConscripts extends CardImpl {
public ZealousConscripts(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
diff --git a/Mage.Sets/src/mage/cards/z/ZealousGuardian.java b/Mage.Sets/src/mage/cards/z/ZealousGuardian.java
index bf7facdb43d..cce4b3ebd6a 100644
--- a/Mage.Sets/src/mage/cards/z/ZealousGuardian.java
+++ b/Mage.Sets/src/mage/cards/z/ZealousGuardian.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ZealousGuardian extends CardImpl {
+public final class ZealousGuardian extends CardImpl {
public ZealousGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W/U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZealousInquisitor.java b/Mage.Sets/src/mage/cards/z/ZealousInquisitor.java
index 2839102b10f..346bcec4e4f 100644
--- a/Mage.Sets/src/mage/cards/z/ZealousInquisitor.java
+++ b/Mage.Sets/src/mage/cards/z/ZealousInquisitor.java
@@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ZealousInquisitor extends CardImpl {
+public final class ZealousInquisitor extends CardImpl {
public ZealousInquisitor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZealousPersecution.java b/Mage.Sets/src/mage/cards/z/ZealousPersecution.java
index 14941024e6a..2fb8bd1dcda 100644
--- a/Mage.Sets/src/mage/cards/z/ZealousPersecution.java
+++ b/Mage.Sets/src/mage/cards/z/ZealousPersecution.java
@@ -39,7 +39,7 @@ import mage.constants.Duration;
*
* @author North
*/
-public class ZealousPersecution extends CardImpl {
+public final class ZealousPersecution extends CardImpl {
public ZealousPersecution(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZealousStrike.java b/Mage.Sets/src/mage/cards/z/ZealousStrike.java
index b11dfde15a6..72f8c1629d4 100644
--- a/Mage.Sets/src/mage/cards/z/ZealousStrike.java
+++ b/Mage.Sets/src/mage/cards/z/ZealousStrike.java
@@ -41,7 +41,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ZealousStrike extends CardImpl {
+public final class ZealousStrike extends CardImpl {
public ZealousStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZebraUnicorn.java b/Mage.Sets/src/mage/cards/z/ZebraUnicorn.java
index 878791dbffc..ecb4d076959 100644
--- a/Mage.Sets/src/mage/cards/z/ZebraUnicorn.java
+++ b/Mage.Sets/src/mage/cards/z/ZebraUnicorn.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class ZebraUnicorn extends CardImpl {
+public final class ZebraUnicorn extends CardImpl {
public ZebraUnicorn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZedruuTheGreathearted.java b/Mage.Sets/src/mage/cards/z/ZedruuTheGreathearted.java
index 42ce088ee02..e527156c957 100644
--- a/Mage.Sets/src/mage/cards/z/ZedruuTheGreathearted.java
+++ b/Mage.Sets/src/mage/cards/z/ZedruuTheGreathearted.java
@@ -51,7 +51,7 @@ import mage.target.common.TargetOpponent;
*
* @author andyfries
*/
-public class ZedruuTheGreathearted extends CardImpl {
+public final class ZedruuTheGreathearted extends CardImpl {
public ZedruuTheGreathearted(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZektarShrineExpedition.java b/Mage.Sets/src/mage/cards/z/ZektarShrineExpedition.java
index 61836359740..25850e9b760 100644
--- a/Mage.Sets/src/mage/cards/z/ZektarShrineExpedition.java
+++ b/Mage.Sets/src/mage/cards/z/ZektarShrineExpedition.java
@@ -49,7 +49,7 @@ import mage.game.permanent.token.ZektarShrineElementalToken;
*
* @author North
*/
-public class ZektarShrineExpedition extends CardImpl {
+public final class ZektarShrineExpedition extends CardImpl {
public ZektarShrineExpedition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/z/ZelyonSword.java b/Mage.Sets/src/mage/cards/z/ZelyonSword.java
index 8f58941ea99..a7337c41220 100644
--- a/Mage.Sets/src/mage/cards/z/ZelyonSword.java
+++ b/Mage.Sets/src/mage/cards/z/ZelyonSword.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LoneFox
*/
-public class ZelyonSword extends CardImpl {
+public final class ZelyonSword extends CardImpl {
public ZelyonSword(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/z/ZendikarFarguide.java b/Mage.Sets/src/mage/cards/z/ZendikarFarguide.java
index 8f98237681a..5041d4cbde1 100644
--- a/Mage.Sets/src/mage/cards/z/ZendikarFarguide.java
+++ b/Mage.Sets/src/mage/cards/z/ZendikarFarguide.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ZendikarFarguide extends CardImpl {
+public final class ZendikarFarguide extends CardImpl {
public ZendikarFarguide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZendikarIncarnate.java b/Mage.Sets/src/mage/cards/z/ZendikarIncarnate.java
index ad919753954..b7641f5b56c 100644
--- a/Mage.Sets/src/mage/cards/z/ZendikarIncarnate.java
+++ b/Mage.Sets/src/mage/cards/z/ZendikarIncarnate.java
@@ -46,7 +46,7 @@ import mage.filter.common.FilterControlledPermanent;
*
* @author fireshoes
*/
-public class ZendikarIncarnate extends CardImpl {
+public final class ZendikarIncarnate extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("lands you control");
diff --git a/Mage.Sets/src/mage/cards/z/ZendikarResurgent.java b/Mage.Sets/src/mage/cards/z/ZendikarResurgent.java
index 4964c44498b..fa5881857fa 100644
--- a/Mage.Sets/src/mage/cards/z/ZendikarResurgent.java
+++ b/Mage.Sets/src/mage/cards/z/ZendikarResurgent.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledLandPermanent;
*
* @author fireshoes
*/
-public class ZendikarResurgent extends CardImpl {
+public final class ZendikarResurgent extends CardImpl {
public ZendikarResurgent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZendikarsRoil.java b/Mage.Sets/src/mage/cards/z/ZendikarsRoil.java
index 81b7de88fb9..f25895d5858 100644
--- a/Mage.Sets/src/mage/cards/z/ZendikarsRoil.java
+++ b/Mage.Sets/src/mage/cards/z/ZendikarsRoil.java
@@ -41,7 +41,7 @@ import mage.game.permanent.token.ZendikarsRoilElementalToken;
*
* @author LevelX2
*/
-public class ZendikarsRoil extends CardImpl {
+public final class ZendikarsRoil extends CardImpl {
public ZendikarsRoil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZenithSeeker.java b/Mage.Sets/src/mage/cards/z/ZenithSeeker.java
index 29a57e73b7a..45d865b0fd5 100644
--- a/Mage.Sets/src/mage/cards/z/ZenithSeeker.java
+++ b/Mage.Sets/src/mage/cards/z/ZenithSeeker.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author anonymous
*/
-public class ZenithSeeker extends CardImpl {
+public final class ZenithSeeker extends CardImpl {
public ZenithSeeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/Zephid.java b/Mage.Sets/src/mage/cards/z/Zephid.java
index 2b82edee551..f6d749fd372 100644
--- a/Mage.Sets/src/mage/cards/z/Zephid.java
+++ b/Mage.Sets/src/mage/cards/z/Zephid.java
@@ -42,7 +42,7 @@ import mage.constants.SubType;
*
* @author Backfir3
*/
-public class Zephid extends CardImpl {
+public final class Zephid extends CardImpl {
public Zephid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZephidsEmbrace.java b/Mage.Sets/src/mage/cards/z/ZephidsEmbrace.java
index 078cc19fb0d..bad59d5b764 100644
--- a/Mage.Sets/src/mage/cards/z/ZephidsEmbrace.java
+++ b/Mage.Sets/src/mage/cards/z/ZephidsEmbrace.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Backfir3
*/
-public class ZephidsEmbrace extends CardImpl {
+public final class ZephidsEmbrace extends CardImpl {
public ZephidsEmbrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZephyrCharge.java b/Mage.Sets/src/mage/cards/z/ZephyrCharge.java
index a4f7682cb37..cca321845ac 100644
--- a/Mage.Sets/src/mage/cards/z/ZephyrCharge.java
+++ b/Mage.Sets/src/mage/cards/z/ZephyrCharge.java
@@ -44,7 +44,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author LevelX2
*/
-public class ZephyrCharge extends CardImpl {
+public final class ZephyrCharge extends CardImpl {
public ZephyrCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZephyrFalcon.java b/Mage.Sets/src/mage/cards/z/ZephyrFalcon.java
index 50f14817cfc..d2a789c9219 100644
--- a/Mage.Sets/src/mage/cards/z/ZephyrFalcon.java
+++ b/Mage.Sets/src/mage/cards/z/ZephyrFalcon.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ZephyrFalcon extends CardImpl {
+public final class ZephyrFalcon extends CardImpl {
public ZephyrFalcon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZephyrNet.java b/Mage.Sets/src/mage/cards/z/ZephyrNet.java
index 984dddafb16..3b1075ccd39 100644
--- a/Mage.Sets/src/mage/cards/z/ZephyrNet.java
+++ b/Mage.Sets/src/mage/cards/z/ZephyrNet.java
@@ -45,7 +45,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Loki
*/
-public class ZephyrNet extends CardImpl {
+public final class ZephyrNet extends CardImpl {
public ZephyrNet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZephyrScribe.java b/Mage.Sets/src/mage/cards/z/ZephyrScribe.java
index 6e116f61b0c..4dc5223b04c 100644
--- a/Mage.Sets/src/mage/cards/z/ZephyrScribe.java
+++ b/Mage.Sets/src/mage/cards/z/ZephyrScribe.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*
* @author LevelX2
*/
-public class ZephyrScribe extends CardImpl {
+public final class ZephyrScribe extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
diff --git a/Mage.Sets/src/mage/cards/z/ZephyrSpirit.java b/Mage.Sets/src/mage/cards/z/ZephyrSpirit.java
index dc852ff723f..fe55028fbb2 100644
--- a/Mage.Sets/src/mage/cards/z/ZephyrSpirit.java
+++ b/Mage.Sets/src/mage/cards/z/ZephyrSpirit.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZephyrSpirit extends CardImpl {
+public final class ZephyrSpirit extends CardImpl {
public ZephyrSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZephyrSprite.java b/Mage.Sets/src/mage/cards/z/ZephyrSprite.java
index 83ef0257a7d..e55f48adb89 100644
--- a/Mage.Sets/src/mage/cards/z/ZephyrSprite.java
+++ b/Mage.Sets/src/mage/cards/z/ZephyrSprite.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ZephyrSprite extends CardImpl {
+public final class ZephyrSprite extends CardImpl {
public ZephyrSprite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZerapaMinotaur.java b/Mage.Sets/src/mage/cards/z/ZerapaMinotaur.java
index f5b073087c1..3b462de699f 100644
--- a/Mage.Sets/src/mage/cards/z/ZerapaMinotaur.java
+++ b/Mage.Sets/src/mage/cards/z/ZerapaMinotaur.java
@@ -42,7 +42,7 @@ import mage.constants.*;
*
* @author LoneFox
*/
-public class ZerapaMinotaur extends CardImpl {
+public final class ZerapaMinotaur extends CardImpl {
public ZerapaMinotaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/z/ZetalpaPrimalDawn.java b/Mage.Sets/src/mage/cards/z/ZetalpaPrimalDawn.java
index 3115fe269b8..3ba27d899b0 100644
--- a/Mage.Sets/src/mage/cards/z/ZetalpaPrimalDawn.java
+++ b/Mage.Sets/src/mage/cards/z/ZetalpaPrimalDawn.java
@@ -44,7 +44,7 @@ import mage.constants.SuperType;
*
* @author L_J
*/
-public class ZetalpaPrimalDawn extends CardImpl {
+public final class ZetalpaPrimalDawn extends CardImpl {
public ZetalpaPrimalDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java b/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java
index 99a06bb991e..2eff7c1ebb3 100644
--- a/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java
+++ b/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author Plopman
*/
-public class ZhalfirinCommander extends CardImpl {
+public final class ZhalfirinCommander extends CardImpl {
static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("Knight creature");
diff --git a/Mage.Sets/src/mage/cards/z/ZhalfirinCrusader.java b/Mage.Sets/src/mage/cards/z/ZhalfirinCrusader.java
index 90de3c51d19..c848d4f4026 100644
--- a/Mage.Sets/src/mage/cards/z/ZhalfirinCrusader.java
+++ b/Mage.Sets/src/mage/cards/z/ZhalfirinCrusader.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author fireshoes
*/
-public class ZhalfirinCrusader extends CardImpl {
+public final class ZhalfirinCrusader extends CardImpl {
public ZhalfirinCrusader(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZhalfirinKnight.java b/Mage.Sets/src/mage/cards/z/ZhalfirinKnight.java
index fb57dce1751..bee65012e2c 100644
--- a/Mage.Sets/src/mage/cards/z/ZhalfirinKnight.java
+++ b/Mage.Sets/src/mage/cards/z/ZhalfirinKnight.java
@@ -45,7 +45,7 @@ import mage.constants.Zone;
*
* @author Plopman
*/
-public class ZhalfirinKnight extends CardImpl {
+public final class ZhalfirinKnight extends CardImpl {
public ZhalfirinKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZhalfirinVoid.java b/Mage.Sets/src/mage/cards/z/ZhalfirinVoid.java
index 33e5c1c36db..6dc8ac3ae52 100644
--- a/Mage.Sets/src/mage/cards/z/ZhalfirinVoid.java
+++ b/Mage.Sets/src/mage/cards/z/ZhalfirinVoid.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author Rystan
*/
-public class ZhalfirinVoid extends CardImpl {
+public final class ZhalfirinVoid extends CardImpl {
public ZhalfirinVoid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/z/ZhangFeiFierceWarrior.java b/Mage.Sets/src/mage/cards/z/ZhangFeiFierceWarrior.java
index af4e570fded..9566a074397 100644
--- a/Mage.Sets/src/mage/cards/z/ZhangFeiFierceWarrior.java
+++ b/Mage.Sets/src/mage/cards/z/ZhangFeiFierceWarrior.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class ZhangFeiFierceWarrior extends CardImpl {
+public final class ZhangFeiFierceWarrior extends CardImpl {
public ZhangFeiFierceWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZhangHeWeiGeneral.java b/Mage.Sets/src/mage/cards/z/ZhangHeWeiGeneral.java
index 01548cdada8..e3c7fadf75f 100644
--- a/Mage.Sets/src/mage/cards/z/ZhangHeWeiGeneral.java
+++ b/Mage.Sets/src/mage/cards/z/ZhangHeWeiGeneral.java
@@ -44,7 +44,7 @@ import mage.filter.StaticFilters;
*
* @author LoneFox
*/
-public class ZhangHeWeiGeneral extends CardImpl {
+public final class ZhangHeWeiGeneral extends CardImpl {
public ZhangHeWeiGeneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZhangLiaoHeroOfHefei.java b/Mage.Sets/src/mage/cards/z/ZhangLiaoHeroOfHefei.java
index 0854f167194..185e4d59344 100644
--- a/Mage.Sets/src/mage/cards/z/ZhangLiaoHeroOfHefei.java
+++ b/Mage.Sets/src/mage/cards/z/ZhangLiaoHeroOfHefei.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class ZhangLiaoHeroOfHefei extends CardImpl {
+public final class ZhangLiaoHeroOfHefei extends CardImpl {
public ZhangLiaoHeroOfHefei(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZhaoZilongTigerGeneral.java b/Mage.Sets/src/mage/cards/z/ZhaoZilongTigerGeneral.java
index f08727d464c..f2bdc2f279b 100644
--- a/Mage.Sets/src/mage/cards/z/ZhaoZilongTigerGeneral.java
+++ b/Mage.Sets/src/mage/cards/z/ZhaoZilongTigerGeneral.java
@@ -43,7 +43,7 @@ import mage.constants.SuperType;
*
* @author LoneFox
*/
-public class ZhaoZilongTigerGeneral extends CardImpl {
+public final class ZhaoZilongTigerGeneral extends CardImpl {
public ZhaoZilongTigerGeneral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
diff --git a/Mage.Sets/src/mage/cards/z/ZhouYuChiefCommander.java b/Mage.Sets/src/mage/cards/z/ZhouYuChiefCommander.java
index 277f2015ab5..bc5d936be7c 100644
--- a/Mage.Sets/src/mage/cards/z/ZhouYuChiefCommander.java
+++ b/Mage.Sets/src/mage/cards/z/ZhouYuChiefCommander.java
@@ -43,7 +43,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author fireshoes
*/
-public class ZhouYuChiefCommander extends CardImpl {
+public final class ZhouYuChiefCommander extends CardImpl {
public ZhouYuChiefCommander(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZhugeJinWuStrategist.java b/Mage.Sets/src/mage/cards/z/ZhugeJinWuStrategist.java
index 9fd6cd69c7e..d5c8daf71c7 100644
--- a/Mage.Sets/src/mage/cards/z/ZhugeJinWuStrategist.java
+++ b/Mage.Sets/src/mage/cards/z/ZhugeJinWuStrategist.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author fireshoes
*/
-public class ZhugeJinWuStrategist extends CardImpl {
+public final class ZhugeJinWuStrategist extends CardImpl {
public ZhugeJinWuStrategist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZhurTaaAncient.java b/Mage.Sets/src/mage/cards/z/ZhurTaaAncient.java
index cc9cfa39d05..26a01d780c7 100644
--- a/Mage.Sets/src/mage/cards/z/ZhurTaaAncient.java
+++ b/Mage.Sets/src/mage/cards/z/ZhurTaaAncient.java
@@ -42,7 +42,7 @@ import mage.filter.common.FilterLandPermanent;
*
* @author jeffwadsworth
*/
-public class ZhurTaaAncient extends CardImpl {
+public final class ZhurTaaAncient extends CardImpl {
public ZhurTaaAncient(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}");
@@ -51,7 +51,7 @@ public class ZhurTaaAncient extends CardImpl {
this.power = new MageInt(7);
this.toughness = new MageInt(5);
- // Whenever a player taps a land for mana, that player adds one mana to their mana pool of any type that land produced.
+ // Whenever a player taps a land for mana, that player adds one mana of any type that land produced.
this.addAbility(new TapForManaAllTriggeredManaAbility(
new AddManaOfAnyTypeProducedEffect(),
new FilterLandPermanent("a player taps a land"),
diff --git a/Mage.Sets/src/mage/cards/z/ZhurTaaDruid.java b/Mage.Sets/src/mage/cards/z/ZhurTaaDruid.java
index 62fc3adfd0e..36422df7063 100644
--- a/Mage.Sets/src/mage/cards/z/ZhurTaaDruid.java
+++ b/Mage.Sets/src/mage/cards/z/ZhurTaaDruid.java
@@ -46,7 +46,7 @@ import mage.game.events.GameEvent.EventType;
*
* @author LevelX2
*/
-public class ZhurTaaDruid extends CardImpl {
+public final class ZhurTaaDruid extends CardImpl {
public ZhurTaaDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZhurTaaSwine.java b/Mage.Sets/src/mage/cards/z/ZhurTaaSwine.java
index 0584c5d6ed7..3aa5f928471 100644
--- a/Mage.Sets/src/mage/cards/z/ZhurTaaSwine.java
+++ b/Mage.Sets/src/mage/cards/z/ZhurTaaSwine.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZhurTaaSwine extends CardImpl {
+public final class ZhurTaaSwine extends CardImpl {
public ZhurTaaSwine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java b/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java
index f6282a99148..17d1acdf3db 100644
--- a/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java
+++ b/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java
@@ -56,7 +56,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author fireshoes
*/
-public class ZirilanOfTheClaw extends CardImpl {
+public final class ZirilanOfTheClaw extends CardImpl {
public ZirilanOfTheClaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/z/ZndrspltEyeOfWisdom.java b/Mage.Sets/src/mage/cards/z/ZndrspltEyeOfWisdom.java
new file mode 100644
index 00000000000..c835a04bcc3
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/z/ZndrspltEyeOfWisdom.java
@@ -0,0 +1,76 @@
+/*
+ * 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.z;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.BeginningOfCombatTriggeredAbility;
+import mage.abilities.common.WinsCoinFlipTriggeredAbility;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.FlipUntilLoseEffect;
+import mage.abilities.keyword.PartnerWithAbility;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.TargetController;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ZndrspltEyeOfWisdom extends CardImpl {
+
+ public ZndrspltEyeOfWisdom(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
+
+ this.addSuperType(SuperType.LEGENDARY);
+ this.subtype.add(SubType.HOMUNCULUS);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(4);
+
+ // Partner with Okaun, Eye of Chaos (When this creature enters the battlefield, target player may put Okaun into their hand from their library, then shuffle.)
+ this.addAbility(new PartnerWithAbility("Okaun, Eye of Chaos", true));
+
+ // At the beginning of combat on your turn, flip a coin until you lose a flip.
+ this.addAbility(new BeginningOfCombatTriggeredAbility(new FlipUntilLoseEffect(), TargetController.YOU, false));
+
+ // Whenever a player wins a coin flip, draw a card.
+ this.addAbility(new WinsCoinFlipTriggeredAbility(new DrawCardSourceControllerEffect(1)));
+ }
+
+ public ZndrspltEyeOfWisdom(final ZndrspltEyeOfWisdom card) {
+ super(card);
+ }
+
+ @Override
+ public ZndrspltEyeOfWisdom copy() {
+ return new ZndrspltEyeOfWisdom(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/cards/z/ZndrspltsJudgment.java b/Mage.Sets/src/mage/cards/z/ZndrspltsJudgment.java
new file mode 100644
index 00000000000..3eee59d799c
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/z/ZndrspltsJudgment.java
@@ -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.z;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
+import mage.abilities.effects.common.ReturnToHandTargetEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.choices.ChooseFriendsAndFoes;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.ControllerIdPredicate;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetCreaturePermanent;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ZndrspltsJudgment extends CardImpl {
+
+ public ZndrspltsJudgment(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}");
+
+ // For each player, choose friend or foe. Each friend creates a token that's a copy of a creature they control. Each foe returns a creature they control to its owner's hand.
+ this.getSpellAbility().addEffect(new ZndrspltsJudgmentEffect());
+ }
+
+ public ZndrspltsJudgment(final ZndrspltsJudgment card) {
+ super(card);
+ }
+
+ @Override
+ public ZndrspltsJudgment copy() {
+ return new ZndrspltsJudgment(this);
+ }
+}
+
+class ZndrspltsJudgmentEffect extends OneShotEffect {
+
+ ZndrspltsJudgmentEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "For each player, choose friend or foe. Each friend creates a token that's a copy of a creature they control. Each foe returns a creature they control to its owner's hand";
+ }
+
+ ZndrspltsJudgmentEffect(final ZndrspltsJudgmentEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ZndrspltsJudgmentEffect copy() {
+ return new ZndrspltsJudgmentEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
+ ChooseFriendsAndFoes choice = new ChooseFriendsAndFoes();
+ choice.chooseFriendOrFoe(controller, source, game);
+ for (Player player : choice.getFriends()) {
+ if (player == null) {
+ continue;
+ }
+ FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
+ filter.add(new ControllerIdPredicate(player.getId()));
+ TargetCreaturePermanent target = new TargetCreaturePermanent(filter);
+ if (!player.choose(Outcome.Copy, target, source.getSourceId(), game)) {
+ continue;
+ }
+ Effect effect = new CreateTokenCopyTargetEffect(player.getId());
+ effect.setTargetPointer(new FixedTarget(target.getFirstTarget(), game));
+ effect.apply(game, source);
+ }
+ for (Player player : choice.getFoes()) {
+ FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
+ filter.add(new ControllerIdPredicate(player.getId()));
+ TargetCreaturePermanent target = new TargetCreaturePermanent(filter);
+ if (!player.choose(Outcome.ReturnToHand, target, source.getSourceId(), game)) {
+ continue;
+ }
+ Effect effect = new ReturnToHandTargetEffect();
+ effect.setTargetPointer(new FixedTarget(target.getFirstTarget(), game));
+ effect.apply(game, source);
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/z/ZoZuThePunisher.java b/Mage.Sets/src/mage/cards/z/ZoZuThePunisher.java
index c4cce4ce7a0..dc290aee5c0 100644
--- a/Mage.Sets/src/mage/cards/z/ZoZuThePunisher.java
+++ b/Mage.Sets/src/mage/cards/z/ZoZuThePunisher.java
@@ -49,7 +49,7 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX
*/
-public class ZoZuThePunisher extends CardImpl {
+public final class ZoZuThePunisher extends CardImpl {
public ZoZuThePunisher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacDog.java b/Mage.Sets/src/mage/cards/z/ZodiacDog.java
index f5de5b6ca24..c95a8d887d8 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacDog.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacDog.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZodiacDog extends CardImpl {
+public final class ZodiacDog extends CardImpl {
public ZodiacDog(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacDragon.java b/Mage.Sets/src/mage/cards/z/ZodiacDragon.java
index 108799ecec6..c32f9e632a3 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacDragon.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacDragon.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ZodiacDragon extends CardImpl {
+public final class ZodiacDragon extends CardImpl {
public ZodiacDragon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacGoat.java b/Mage.Sets/src/mage/cards/z/ZodiacGoat.java
index c91f53ce5b6..8c9bfff9158 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacGoat.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacGoat.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZodiacGoat extends CardImpl {
+public final class ZodiacGoat extends CardImpl {
public ZodiacGoat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacHorse.java b/Mage.Sets/src/mage/cards/z/ZodiacHorse.java
index 89ac6050860..eefb370c18f 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacHorse.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacHorse.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZodiacHorse extends CardImpl {
+public final class ZodiacHorse extends CardImpl {
public ZodiacHorse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacMonkey.java b/Mage.Sets/src/mage/cards/z/ZodiacMonkey.java
index c83e0c476af..6b695bd8dec 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacMonkey.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacMonkey.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author North
*/
-public class ZodiacMonkey extends CardImpl {
+public final class ZodiacMonkey extends CardImpl {
public ZodiacMonkey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacOx.java b/Mage.Sets/src/mage/cards/z/ZodiacOx.java
index ae371b18aaa..13d9d411ea1 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacOx.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacOx.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZodiacOx extends CardImpl {
+public final class ZodiacOx extends CardImpl {
public ZodiacOx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacPig.java b/Mage.Sets/src/mage/cards/z/ZodiacPig.java
index b1ce149766f..c7ad31b90d9 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacPig.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacPig.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZodiacPig extends CardImpl {
+public final class ZodiacPig extends CardImpl {
public ZodiacPig(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacRabbit.java b/Mage.Sets/src/mage/cards/z/ZodiacRabbit.java
index 067fc816756..cdf2d8df6fa 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacRabbit.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacRabbit.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZodiacRabbit extends CardImpl {
+public final class ZodiacRabbit extends CardImpl {
public ZodiacRabbit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacRat.java b/Mage.Sets/src/mage/cards/z/ZodiacRat.java
index cefc6bf6b9f..0da49a4926f 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacRat.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacRat.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZodiacRat extends CardImpl {
+public final class ZodiacRat extends CardImpl {
public ZodiacRat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacRooster.java b/Mage.Sets/src/mage/cards/z/ZodiacRooster.java
index 6b8f30f9fba..1e24cb25765 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacRooster.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacRooster.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZodiacRooster extends CardImpl {
+public final class ZodiacRooster extends CardImpl {
public ZodiacRooster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacSnake.java b/Mage.Sets/src/mage/cards/z/ZodiacSnake.java
index 5073732d515..00854b25038 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacSnake.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacSnake.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZodiacSnake extends CardImpl {
+public final class ZodiacSnake extends CardImpl {
public ZodiacSnake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZodiacTiger.java b/Mage.Sets/src/mage/cards/z/ZodiacTiger.java
index 55404f8b37e..e9e81d2e1d8 100644
--- a/Mage.Sets/src/mage/cards/z/ZodiacTiger.java
+++ b/Mage.Sets/src/mage/cards/z/ZodiacTiger.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class ZodiacTiger extends CardImpl {
+public final class ZodiacTiger extends CardImpl {
public ZodiacTiger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZoeticCavern.java b/Mage.Sets/src/mage/cards/z/ZoeticCavern.java
index ba346f1a500..10e3d214abb 100644
--- a/Mage.Sets/src/mage/cards/z/ZoeticCavern.java
+++ b/Mage.Sets/src/mage/cards/z/ZoeticCavern.java
@@ -39,7 +39,7 @@ import mage.constants.CardType;
*
* @author LevelX2
*/
-public class ZoeticCavern extends CardImpl {
+public final class ZoeticCavern extends CardImpl {
public ZoeticCavern(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
diff --git a/Mage.Sets/src/mage/cards/z/ZofShade.java b/Mage.Sets/src/mage/cards/z/ZofShade.java
index 51f5d229dee..d2df499b260 100644
--- a/Mage.Sets/src/mage/cards/z/ZofShade.java
+++ b/Mage.Sets/src/mage/cards/z/ZofShade.java
@@ -43,7 +43,7 @@ import mage.constants.Zone;
*
* @author North
*/
-public class ZofShade extends CardImpl {
+public final class ZofShade extends CardImpl {
public ZofShade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieApocalypse.java b/Mage.Sets/src/mage/cards/z/ZombieApocalypse.java
index af1570e7f49..50643f837fc 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieApocalypse.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieApocalypse.java
@@ -47,7 +47,7 @@ import mage.players.Player;
*
* @author BetaSteward
*/
-public class ZombieApocalypse extends CardImpl {
+public final class ZombieApocalypse extends CardImpl {
public ZombieApocalypse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieAssassin.java b/Mage.Sets/src/mage/cards/z/ZombieAssassin.java
index f1e18426b9c..2d3443c0116 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieAssassin.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieAssassin.java
@@ -53,7 +53,7 @@ import mage.target.common.TargetCreaturePermanent;
*
* @author cbt33
*/
-public class ZombieAssassin extends CardImpl {
+public final class ZombieAssassin extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature");
static {
diff --git a/Mage.Sets/src/mage/cards/z/ZombieBrute.java b/Mage.Sets/src/mage/cards/z/ZombieBrute.java
index b63fc8f1241..6675cb43050 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieBrute.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieBrute.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ZombieBrute extends CardImpl {
+public final class ZombieBrute extends CardImpl {
public ZombieBrute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieCannibal.java b/Mage.Sets/src/mage/cards/z/ZombieCannibal.java
index b00def0f781..705be8ce252 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieCannibal.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieCannibal.java
@@ -48,7 +48,7 @@ import mage.target.common.TargetCardInGraveyard;
*
* @author cbt33
*/
-public class ZombieCannibal extends CardImpl {
+public final class ZombieCannibal extends CardImpl {
public ZombieCannibal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieCutthroat.java b/Mage.Sets/src/mage/cards/z/ZombieCutthroat.java
index 31a72fc12b5..de3132a7c9e 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieCutthroat.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieCutthroat.java
@@ -40,7 +40,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class ZombieCutthroat extends CardImpl {
+public final class ZombieCutthroat extends CardImpl {
public ZombieCutthroat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieGoliath.java b/Mage.Sets/src/mage/cards/z/ZombieGoliath.java
index 8362c02169f..adfd1cd6026 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieGoliath.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieGoliath.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
/**
* @author Loki
*/
-public class ZombieGoliath extends CardImpl {
+public final class ZombieGoliath extends CardImpl {
public ZombieGoliath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieInfestation.java b/Mage.Sets/src/mage/cards/z/ZombieInfestation.java
index e848b38a1fe..6b1af59bc39 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieInfestation.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieInfestation.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetCardInHand;
*
* @author North
*/
-public class ZombieInfestation extends CardImpl {
+public final class ZombieInfestation extends CardImpl {
public ZombieInfestation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieMaster.java b/Mage.Sets/src/mage/cards/z/ZombieMaster.java
index 237faf7f1df..12412486c4e 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieMaster.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieMaster.java
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
* @author KholdFuzion
*
*/
-public class ZombieMaster extends CardImpl {
+public final class ZombieMaster extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Zombie creatures");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieMob.java b/Mage.Sets/src/mage/cards/z/ZombieMob.java
index 3b91005cd5b..a39f73f918b 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieMob.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieMob.java
@@ -49,7 +49,7 @@ import mage.players.Player;
* @author tcontis
*/
-public class ZombieMob extends CardImpl {
+public final class ZombieMob extends CardImpl {
public ZombieMob(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieMusher.java b/Mage.Sets/src/mage/cards/z/ZombieMusher.java
index 8a3e091f1fc..3f022fd0f5a 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieMusher.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieMusher.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*
* @author TheElk801
*/
-public class ZombieMusher extends CardImpl {
+public final class ZombieMusher extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("snow land");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieOutlander.java b/Mage.Sets/src/mage/cards/z/ZombieOutlander.java
index bcef6dfc9ec..6e63052fc45 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieOutlander.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieOutlander.java
@@ -41,7 +41,7 @@ import mage.constants.SubType;
*
* @author Loki
*/
-public class ZombieOutlander extends CardImpl {
+public final class ZombieOutlander extends CardImpl {
public ZombieOutlander(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieScavengers.java b/Mage.Sets/src/mage/cards/z/ZombieScavengers.java
index e384fe1cfa6..d4a04783689 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieScavengers.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieScavengers.java
@@ -42,7 +42,7 @@ import mage.constants.Zone;
*
* @author fireshoes
*/
-public class ZombieScavengers extends CardImpl {
+public final class ZombieScavengers extends CardImpl {
public ZombieScavengers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZombieTrailblazer.java b/Mage.Sets/src/mage/cards/z/ZombieTrailblazer.java
index 2a40ca527bf..9b9dee83bb6 100644
--- a/Mage.Sets/src/mage/cards/z/ZombieTrailblazer.java
+++ b/Mage.Sets/src/mage/cards/z/ZombieTrailblazer.java
@@ -54,7 +54,7 @@ import java.util.UUID;
*
* @author fireshoes
*/
-public class ZombieTrailblazer extends CardImpl {
+public final class ZombieTrailblazer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Zombie you control");
diff --git a/Mage.Sets/src/mage/cards/z/Zombify.java b/Mage.Sets/src/mage/cards/z/Zombify.java
index 866298a9bed..9d782cb4929 100644
--- a/Mage.Sets/src/mage/cards/z/Zombify.java
+++ b/Mage.Sets/src/mage/cards/z/Zombify.java
@@ -39,7 +39,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*
* @author Plopman
*/
-public class Zombify extends CardImpl {
+public final class Zombify extends CardImpl {
public Zombify(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/Zoologist.java b/Mage.Sets/src/mage/cards/z/Zoologist.java
index d58487e18ac..cce49be4c00 100644
--- a/Mage.Sets/src/mage/cards/z/Zoologist.java
+++ b/Mage.Sets/src/mage/cards/z/Zoologist.java
@@ -50,7 +50,7 @@ import mage.players.Player;
*
* @author LevelX2
*/
-public class Zoologist extends CardImpl {
+public final class Zoologist extends CardImpl {
public Zoologist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/z/ZuberiGoldenFeather.java b/Mage.Sets/src/mage/cards/z/ZuberiGoldenFeather.java
index d1a12cd4254..8d93a2653a8 100644
--- a/Mage.Sets/src/mage/cards/z/ZuberiGoldenFeather.java
+++ b/Mage.Sets/src/mage/cards/z/ZuberiGoldenFeather.java
@@ -41,7 +41,7 @@ import mage.filter.common.FilterCreaturePermanent;
*
* @author nigelzor
*/
-public class ZuberiGoldenFeather extends CardImpl {
+public final class ZuberiGoldenFeather extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.GRIFFIN, "Griffin creatures");
diff --git a/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java b/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java
index 52c70c58b77..82d3fd14a31 100644
--- a/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java
+++ b/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java
@@ -50,7 +50,7 @@ import mage.target.common.TargetOpponent;
*
* @author LevelX2
*/
-public class ZulaportChainmage extends CardImpl {
+public final class ZulaportChainmage extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Ally you control");
diff --git a/Mage.Sets/src/mage/cards/z/ZulaportCutthroat.java b/Mage.Sets/src/mage/cards/z/ZulaportCutthroat.java
index 44247ef9ca3..51c528e84f2 100644
--- a/Mage.Sets/src/mage/cards/z/ZulaportCutthroat.java
+++ b/Mage.Sets/src/mage/cards/z/ZulaportCutthroat.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*
* @author LevelX2
*/
-public class ZulaportCutthroat extends CardImpl {
+public final class ZulaportCutthroat extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
diff --git a/Mage.Sets/src/mage/cards/z/ZulaportEnforcer.java b/Mage.Sets/src/mage/cards/z/ZulaportEnforcer.java
index 942a44efd29..67cebac81b3 100644
--- a/Mage.Sets/src/mage/cards/z/ZulaportEnforcer.java
+++ b/Mage.Sets/src/mage/cards/z/ZulaportEnforcer.java
@@ -51,7 +51,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*
* @author North, noxx
*/
-public class ZulaportEnforcer extends LevelerCard {
+public final class ZulaportEnforcer extends LevelerCard {
private final static FilterCreaturePermanent notBlackCreatures = new FilterCreaturePermanent("except by black creatures");
diff --git a/Mage.Sets/src/mage/cards/z/ZuoCiTheMockingSage.java b/Mage.Sets/src/mage/cards/z/ZuoCiTheMockingSage.java
index 7f62be2b441..0560574342c 100644
--- a/Mage.Sets/src/mage/cards/z/ZuoCiTheMockingSage.java
+++ b/Mage.Sets/src/mage/cards/z/ZuoCiTheMockingSage.java
@@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*
* @author LoneFox
*/
-public class ZuoCiTheMockingSage extends CardImpl {
+public final class ZuoCiTheMockingSage extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with horsemanship");
diff --git a/Mage.Sets/src/mage/cards/z/ZurTheEnchanter.java b/Mage.Sets/src/mage/cards/z/ZurTheEnchanter.java
index ffcb70da504..7a324080bc0 100644
--- a/Mage.Sets/src/mage/cards/z/ZurTheEnchanter.java
+++ b/Mage.Sets/src/mage/cards/z/ZurTheEnchanter.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCardInLibrary;
*
* @author LevelX2
*/
-public class ZurTheEnchanter extends CardImpl {
+public final class ZurTheEnchanter extends CardImpl {
private static final FilterCard filter = new FilterCard("enchantment card with converted mana cost 3 or less");
diff --git a/Mage.Sets/src/mage/cards/z/ZuranEnchanter.java b/Mage.Sets/src/mage/cards/z/ZuranEnchanter.java
index b5badea642a..30271dc3a58 100644
--- a/Mage.Sets/src/mage/cards/z/ZuranEnchanter.java
+++ b/Mage.Sets/src/mage/cards/z/ZuranEnchanter.java
@@ -46,7 +46,7 @@ import mage.target.TargetPlayer;
*
* @author nigelzor
*/
-public class ZuranEnchanter extends CardImpl {
+public final class ZuranEnchanter extends CardImpl {
public ZuranEnchanter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZuranOrb.java b/Mage.Sets/src/mage/cards/z/ZuranOrb.java
index ac62622f072..98f9555e4cf 100644
--- a/Mage.Sets/src/mage/cards/z/ZuranOrb.java
+++ b/Mage.Sets/src/mage/cards/z/ZuranOrb.java
@@ -42,7 +42,7 @@ import mage.target.common.TargetControlledPermanent;
*
* @author Plopman
*/
-public class ZuranOrb extends CardImpl {
+public final class ZuranOrb extends CardImpl {
public ZuranOrb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
diff --git a/Mage.Sets/src/mage/cards/z/ZuranSpellcaster.java b/Mage.Sets/src/mage/cards/z/ZuranSpellcaster.java
index 4d14178ba3c..9709a0b1694 100644
--- a/Mage.Sets/src/mage/cards/z/ZuranSpellcaster.java
+++ b/Mage.Sets/src/mage/cards/z/ZuranSpellcaster.java
@@ -43,7 +43,7 @@ import mage.target.common.TargetAnyTarget;
*
* @author LoneFox
*/
-public class ZuranSpellcaster extends CardImpl {
+public final class ZuranSpellcaster extends CardImpl {
public ZuranSpellcaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
diff --git a/Mage.Sets/src/mage/cards/z/ZurgoBellstriker.java b/Mage.Sets/src/mage/cards/z/ZurgoBellstriker.java
index 6a271e54415..58822348fb4 100644
--- a/Mage.Sets/src/mage/cards/z/ZurgoBellstriker.java
+++ b/Mage.Sets/src/mage/cards/z/ZurgoBellstriker.java
@@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.PowerPredicate;
*
* @author fireshoes
*/
-public class ZurgoBellstriker extends CardImpl {
+public final class ZurgoBellstriker extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or greater");
diff --git a/Mage.Sets/src/mage/cards/z/ZurgoHelmsmasher.java b/Mage.Sets/src/mage/cards/z/ZurgoHelmsmasher.java
index ea3ed48e35d..5999e3530ad 100644
--- a/Mage.Sets/src/mage/cards/z/ZurgoHelmsmasher.java
+++ b/Mage.Sets/src/mage/cards/z/ZurgoHelmsmasher.java
@@ -47,7 +47,7 @@ import mage.counters.CounterType;
*
* @author LevelX2
*/
-public class ZurgoHelmsmasher extends CardImpl {
+public final class ZurgoHelmsmasher extends CardImpl {
public ZurgoHelmsmasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/z/ZursWeirding.java b/Mage.Sets/src/mage/cards/z/ZursWeirding.java
index bbb78708119..236bf0dc7a9 100644
--- a/Mage.Sets/src/mage/cards/z/ZursWeirding.java
+++ b/Mage.Sets/src/mage/cards/z/ZursWeirding.java
@@ -51,7 +51,7 @@ import mage.players.Player;
*
* @author Quercitron
*/
-public class ZursWeirding extends CardImpl {
+public final class ZursWeirding extends CardImpl {
public ZursWeirding(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
diff --git a/Mage.Sets/src/mage/sets/AetherRevolt.java b/Mage.Sets/src/mage/sets/AetherRevolt.java
index 21d57b6747b..f735dca5380 100644
--- a/Mage.Sets/src/mage/sets/AetherRevolt.java
+++ b/Mage.Sets/src/mage/sets/AetherRevolt.java
@@ -40,7 +40,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class AetherRevolt extends ExpansionSet {
+public final class AetherRevolt extends ExpansionSet {
private static final AetherRevolt instance = new AetherRevolt();
diff --git a/Mage.Sets/src/mage/sets/AjaniVsNicolBolas.java b/Mage.Sets/src/mage/sets/AjaniVsNicolBolas.java
index a7dcb875cf9..1ef9437d45c 100644
--- a/Mage.Sets/src/mage/sets/AjaniVsNicolBolas.java
+++ b/Mage.Sets/src/mage/sets/AjaniVsNicolBolas.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class AjaniVsNicolBolas extends ExpansionSet {
+public final class AjaniVsNicolBolas extends ExpansionSet {
private static final AjaniVsNicolBolas instance = new AjaniVsNicolBolas();
diff --git a/Mage.Sets/src/mage/sets/AlaraReborn.java b/Mage.Sets/src/mage/sets/AlaraReborn.java
index e60d182a112..234bba33df9 100644
--- a/Mage.Sets/src/mage/sets/AlaraReborn.java
+++ b/Mage.Sets/src/mage/sets/AlaraReborn.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class AlaraReborn extends ExpansionSet {
+public final class AlaraReborn extends ExpansionSet {
private static final AlaraReborn instance = new AlaraReborn();
diff --git a/Mage.Sets/src/mage/sets/Alliances.java b/Mage.Sets/src/mage/sets/Alliances.java
index 9d879e5ddcf..a2638ba711b 100644
--- a/Mage.Sets/src/mage/sets/Alliances.java
+++ b/Mage.Sets/src/mage/sets/Alliances.java
@@ -1,193 +1,193 @@
-package mage.sets;
-
-import mage.cards.ExpansionSet;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-public class Alliances extends ExpansionSet {
-
- private static final Alliances instance = new Alliances();
-
- public static Alliances getInstance() {
- return instance;
- }
-
- private Alliances() {
- super("Alliances", "ALL", ExpansionSet.buildDate(1996, 6, 10), SetType.EXPANSION);
- this.blockName = "Ice Age";
- this.parentSet = IceAge.getInstance();
- this.hasBasicLands = false;
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 8;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Aesthir Glider", "116a", Rarity.COMMON, mage.cards.a.AesthirGlider.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Aesthir Glider", "116b", Rarity.COMMON, mage.cards.a.AesthirGlider.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Agent of Stromgald", "64a", Rarity.COMMON, mage.cards.a.AgentOfStromgald.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Agent of Stromgald", "64b", Rarity.COMMON, mage.cards.a.AgentOfStromgald.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Arcane Denial", "22a", Rarity.COMMON, mage.cards.a.ArcaneDenial.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Arcane Denial", "22b", Rarity.COMMON, mage.cards.a.ArcaneDenial.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ashnod's Cylix", 117, Rarity.RARE, mage.cards.a.AshnodsCylix.class));
- cards.add(new SetCardInfo("Astrolabe", "118a", Rarity.COMMON, mage.cards.a.Astrolabe.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Astrolabe", "118b", Rarity.COMMON, mage.cards.a.Astrolabe.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Balduvian Dead", 43, Rarity.UNCOMMON, mage.cards.b.BalduvianDead.class));
- cards.add(new SetCardInfo("Balduvian Horde", 65, Rarity.RARE, mage.cards.b.BalduvianHorde.class));
- cards.add(new SetCardInfo("Balduvian Trading Post", 137, Rarity.RARE, mage.cards.b.BalduvianTradingPost.class));
- cards.add(new SetCardInfo("Balduvian War-Makers", "66a", Rarity.COMMON, mage.cards.b.BalduvianWarMakers.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Balduvian War-Makers", "66b", Rarity.COMMON, mage.cards.b.BalduvianWarMakers.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Bestial Fury", "67a", Rarity.COMMON, mage.cards.b.BestialFury.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Bestial Fury", "67b", Rarity.COMMON, mage.cards.b.BestialFury.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Bounty of the Hunt", 85, Rarity.UNCOMMON, mage.cards.b.BountyOfTheHunt.class));
- cards.add(new SetCardInfo("Browse", 25, Rarity.UNCOMMON, mage.cards.b.Browse.class));
- cards.add(new SetCardInfo("Burnout", 68, Rarity.UNCOMMON, mage.cards.b.Burnout.class));
- cards.add(new SetCardInfo("Carrier Pigeons", "1a", Rarity.COMMON, mage.cards.c.CarrierPigeons.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Carrier Pigeons", "1b", Rarity.COMMON, mage.cards.c.CarrierPigeons.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Casting of Bones", "44a", Rarity.COMMON, mage.cards.c.CastingOfBones.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Casting of Bones", "44b", Rarity.COMMON, mage.cards.c.CastingOfBones.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Chaos Harlequin", 69, Rarity.RARE, mage.cards.c.ChaosHarlequin.class));
- cards.add(new SetCardInfo("Contagion", 45, Rarity.UNCOMMON, mage.cards.c.Contagion.class));
- cards.add(new SetCardInfo("Deadly Insect", "86a", Rarity.COMMON, mage.cards.d.DeadlyInsect.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Deadly Insect", "86b", Rarity.COMMON, mage.cards.d.DeadlyInsect.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Death Spark", 70, Rarity.UNCOMMON, mage.cards.d.DeathSpark.class));
- cards.add(new SetCardInfo("Diminishing Returns", 26, Rarity.RARE, mage.cards.d.DiminishingReturns.class));
- cards.add(new SetCardInfo("Dystopia", 47, Rarity.RARE, mage.cards.d.Dystopia.class));
- cards.add(new SetCardInfo("Elvish Bard", 87, Rarity.UNCOMMON, mage.cards.e.ElvishBard.class));
- cards.add(new SetCardInfo("Elvish Ranger", "88a", Rarity.COMMON, mage.cards.e.ElvishRanger.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Elvish Ranger", "88b", Rarity.COMMON, mage.cards.e.ElvishRanger.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Elvish Spirit Guide", 89, Rarity.UNCOMMON, mage.cards.e.ElvishSpiritGuide.class));
- cards.add(new SetCardInfo("Energy Arc", 106, Rarity.UNCOMMON, mage.cards.e.EnergyArc.class));
- cards.add(new SetCardInfo("Enslaved Scout", "71a", Rarity.COMMON, mage.cards.e.EnslavedScout.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Enslaved Scout", "71b", Rarity.COMMON, mage.cards.e.EnslavedScout.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Errand of Duty", "2a", Rarity.COMMON, mage.cards.e.ErrandOfDuty.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Errand of Duty", "2b", Rarity.COMMON, mage.cards.e.ErrandOfDuty.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Exile", 3, Rarity.RARE, mage.cards.e.Exile.class));
- cards.add(new SetCardInfo("False Demise", "27a", Rarity.COMMON, mage.cards.f.FalseDemise.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("False Demise", "27b", Rarity.COMMON, mage.cards.f.FalseDemise.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Feast or Famine", "49a", Rarity.COMMON, mage.cards.f.FeastOrFamine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Feast or Famine", "49b", Rarity.COMMON, mage.cards.f.FeastOrFamine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Fevered Strength", "50a", Rarity.COMMON, mage.cards.f.FeveredStrength.class));
- cards.add(new SetCardInfo("Fevered Strength", "50b", Rarity.COMMON, mage.cards.f.FeveredStrength.class));
- cards.add(new SetCardInfo("Floodwater Dam", 119, Rarity.RARE, mage.cards.f.FloodwaterDam.class));
- cards.add(new SetCardInfo("Force of Will", 28, Rarity.UNCOMMON, mage.cards.f.ForceOfWill.class));
- cards.add(new SetCardInfo("Foresight", "29a", Rarity.COMMON, mage.cards.f.Foresight.class));
- cards.add(new SetCardInfo("Foresight", "29b", Rarity.COMMON, mage.cards.f.Foresight.class));
- cards.add(new SetCardInfo("Gorilla Berserkers", "93a", Rarity.COMMON, mage.cards.g.GorillaBerserkers.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Gorilla Berserkers", "93b", Rarity.COMMON, mage.cards.g.GorillaBerserkers.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Gorilla Chieftain", "94a", Rarity.COMMON, mage.cards.g.GorillaChieftain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Gorilla Chieftain", "94b", Rarity.COMMON, mage.cards.g.GorillaChieftain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Gorilla Shaman", "72a", Rarity.COMMON, mage.cards.g.GorillaShaman.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Gorilla Shaman", "72b", Rarity.COMMON, mage.cards.g.GorillaShaman.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Gorilla War Cry", "73a", Rarity.COMMON, mage.cards.g.GorillaWarCry.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Gorilla War Cry", "73b", Rarity.COMMON, mage.cards.g.GorillaWarCry.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Guerrilla Tactics", "74a", Rarity.COMMON, mage.cards.g.GuerrillaTactics.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Guerrilla Tactics", "74b", Rarity.COMMON, mage.cards.g.GuerrillaTactics.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Hail Storm", 95, Rarity.UNCOMMON, mage.cards.h.HailStorm.class));
- cards.add(new SetCardInfo("Heart of Yavimaya", 138, Rarity.RARE, mage.cards.h.HeartOfYavimaya.class));
- cards.add(new SetCardInfo("Helm of Obedience", 121, Rarity.RARE, mage.cards.h.HelmOfObedience.class));
- cards.add(new SetCardInfo("Inheritance", 4, Rarity.UNCOMMON, mage.cards.i.Inheritance.class));
- cards.add(new SetCardInfo("Insidious Bookworms", "51a", Rarity.COMMON, mage.cards.i.InsidiousBookworms.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Insidious Bookworms", "51b", Rarity.COMMON, mage.cards.i.InsidiousBookworms.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Juniper Order Advocate", 6, Rarity.UNCOMMON, mage.cards.j.JuniperOrderAdvocate.class));
- cards.add(new SetCardInfo("Kaysa", 96, Rarity.RARE, mage.cards.k.Kaysa.class));
- cards.add(new SetCardInfo("Keeper of Tresserhorn", 52, Rarity.RARE, mage.cards.k.KeeperOfTresserhorn.class));
- cards.add(new SetCardInfo("Kjeldoran Escort", "7a", Rarity.COMMON, mage.cards.k.KjeldoranEscort.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Kjeldoran Escort", "7b", Rarity.COMMON, mage.cards.k.KjeldoranEscort.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Kjeldoran Home Guard", 8, Rarity.UNCOMMON, mage.cards.k.KjeldoranHomeGuard.class));
- cards.add(new SetCardInfo("Kjeldoran Outpost", 139, Rarity.RARE, mage.cards.k.KjeldoranOutpost.class));
- cards.add(new SetCardInfo("Krovikan Horror", 53, Rarity.RARE, mage.cards.k.KrovikanHorror.class));
- cards.add(new SetCardInfo("Krovikan Plague", 54, Rarity.UNCOMMON, mage.cards.k.KrovikanPlague.class));
- cards.add(new SetCardInfo("Lake of the Dead", 140, Rarity.RARE, mage.cards.l.LakeOfTheDead.class));
- cards.add(new SetCardInfo("Lat-Nam's Legacy", "30a", Rarity.COMMON, mage.cards.l.LatNamsLegacy.class));
- cards.add(new SetCardInfo("Lat-Nam's Legacy", "30b", Rarity.COMMON, mage.cards.l.LatNamsLegacy.class));
- cards.add(new SetCardInfo("Library of Lat-Nam", 31, Rarity.RARE, mage.cards.l.LibraryOfLatNam.class));
- cards.add(new SetCardInfo("Lim-Dul's High Guard", "55a", Rarity.COMMON, mage.cards.l.LimDulsHighGuard.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Lim-Dul's High Guard", "55b", Rarity.COMMON, mage.cards.l.LimDulsHighGuard.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Lim-Dul's Paladin", 108, Rarity.UNCOMMON, mage.cards.l.LimDulsPaladin.class));
- cards.add(new SetCardInfo("Lim-Dul's Vault", 107, Rarity.UNCOMMON, mage.cards.l.LimDulsVault.class));
- cards.add(new SetCardInfo("Lodestone Bauble", 122, Rarity.RARE, mage.cards.l.LodestoneBauble.class));
- cards.add(new SetCardInfo("Lord of Tresserhorn", 112, Rarity.RARE, mage.cards.l.LordOfTresserhorn.class));
- cards.add(new SetCardInfo("Martyrdom", "10a", Rarity.COMMON, mage.cards.m.Martyrdom.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Martyrdom", "10b", Rarity.COMMON, mage.cards.m.Martyrdom.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mishra's Groundbreaker", 123, Rarity.UNCOMMON, mage.cards.m.MishrasGroundbreaker.class));
- cards.add(new SetCardInfo("Misinformation", 56, Rarity.UNCOMMON, mage.cards.m.Misinformation.class));
- cards.add(new SetCardInfo("Mystic Compass", 124, Rarity.UNCOMMON, mage.cards.m.MysticCompass.class));
- cards.add(new SetCardInfo("Nature's Blessing", 110, Rarity.UNCOMMON, mage.cards.n.NaturesBlessing.class));
- cards.add(new SetCardInfo("Nature's Chosen", 97, Rarity.UNCOMMON, mage.cards.n.NaturesChosen.class));
- cards.add(new SetCardInfo("Nature's Wrath", 98, Rarity.RARE, mage.cards.n.NaturesWrath.class));
- cards.add(new SetCardInfo("Noble Steeds", "11a", Rarity.COMMON, mage.cards.n.NobleSteeds.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Noble Steeds", "11b", Rarity.COMMON, mage.cards.n.NobleSteeds.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Omen of Fire", 75, Rarity.RARE, mage.cards.o.OmenOfFire.class));
- cards.add(new SetCardInfo("Phantasmal Fiend", "57a", Rarity.COMMON, mage.cards.p.PhantasmalFiend.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Phantasmal Fiend", "57b", Rarity.COMMON, mage.cards.p.PhantasmalFiend.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Phelddagrif", 115, Rarity.RARE, mage.cards.p.Phelddagrif.class));
- cards.add(new SetCardInfo("Phyrexian Boon", "58a", Rarity.COMMON, mage.cards.p.PhyrexianBoon.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Phyrexian Boon", "58b", Rarity.COMMON, mage.cards.p.PhyrexianBoon.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Phyrexian Devourer", 125, Rarity.RARE, mage.cards.p.PhyrexianDevourer.class));
- cards.add(new SetCardInfo("Phyrexian War Beast", "127a", Rarity.COMMON, mage.cards.p.PhyrexianWarBeast.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Phyrexian War Beast", "127b", Rarity.COMMON, mage.cards.p.PhyrexianWarBeast.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Pillage", 76, Rarity.UNCOMMON, mage.cards.p.Pillage.class));
- cards.add(new SetCardInfo("Pyrokinesis", 78, Rarity.UNCOMMON, mage.cards.p.Pyrokinesis.class));
- cards.add(new SetCardInfo("Reinforcements", "12a", Rarity.COMMON, mage.cards.r.Reinforcements.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Reinforcements", "12b", Rarity.COMMON, mage.cards.r.Reinforcements.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Reprisal", "13a", Rarity.COMMON, mage.cards.r.Reprisal.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Reprisal", "13b", Rarity.COMMON, mage.cards.r.Reprisal.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ritual of the Machine", 59, Rarity.RARE, mage.cards.r.RitualOfTheMachine.class));
- cards.add(new SetCardInfo("Royal Decree", 14, Rarity.RARE, mage.cards.r.RoyalDecree.class));
- cards.add(new SetCardInfo("Royal Herbalist", "15a", Rarity.COMMON, mage.cards.r.RoyalHerbalist.class));
- cards.add(new SetCardInfo("Royal Herbalist", "15b", Rarity.COMMON, mage.cards.r.RoyalHerbalist.class));
- cards.add(new SetCardInfo("School of the Unseen", 141, Rarity.UNCOMMON, mage.cards.s.SchoolOfTheUnseen.class));
- cards.add(new SetCardInfo("Seasoned Tactician", 17, Rarity.UNCOMMON, mage.cards.s.SeasonedTactician.class));
- cards.add(new SetCardInfo("Sheltered Valley", 142, Rarity.RARE, mage.cards.s.ShelteredValley.class));
- cards.add(new SetCardInfo("Shield Sphere", 129, Rarity.UNCOMMON, mage.cards.s.ShieldSphere.class));
- cards.add(new SetCardInfo("Sol Grail", 130, Rarity.UNCOMMON, mage.cards.s.SolGrail.class));
- cards.add(new SetCardInfo("Soldevi Adnate", "60a", Rarity.COMMON, mage.cards.s.SoldeviAdnate.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Soldevi Adnate", "60b", Rarity.COMMON, mage.cards.s.SoldeviAdnate.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Soldevi Digger", 131, Rarity.RARE, mage.cards.s.SoldeviDigger.class));
- cards.add(new SetCardInfo("Soldevi Excavations", 143, Rarity.RARE, mage.cards.s.SoldeviExcavations.class));
- cards.add(new SetCardInfo("Soldevi Heretic", "33a", Rarity.COMMON, mage.cards.s.SoldeviHeretic.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Soldevi Heretic", "33b", Rarity.COMMON, mage.cards.s.SoldeviHeretic.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Soldevi Sage", "34a", Rarity.COMMON, mage.cards.s.SoldeviSage.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Soldevi Sage", "34b", Rarity.COMMON, mage.cards.s.SoldeviSage.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Soldevi Steam Beast", "133a", Rarity.COMMON, mage.cards.s.SoldeviSteamBeast.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Soldevi Steam Beast", "133b", Rarity.COMMON, mage.cards.s.SoldeviSteamBeast.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Soldier of Fortune", 80, Rarity.UNCOMMON, mage.cards.s.SoldierOfFortune.class));
- cards.add(new SetCardInfo("Stench of Decay", "61a", Rarity.COMMON, mage.cards.s.StenchOfDecay.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Stench of Decay", "61b", Rarity.COMMON, mage.cards.s.StenchOfDecay.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Storm Cauldron", 134, Rarity.RARE, mage.cards.s.StormCauldron.class));
- cards.add(new SetCardInfo("Storm Crow", "36a", Rarity.COMMON, mage.cards.s.StormCrow.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Storm Crow", "36b", Rarity.COMMON, mage.cards.s.StormCrow.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Storm Shaman", "81a", Rarity.COMMON, mage.cards.s.StormShaman.class));
- cards.add(new SetCardInfo("Storm Shaman", "81b", Rarity.COMMON, mage.cards.s.StormShaman.class));
- cards.add(new SetCardInfo("Stromgald Spy", 62, Rarity.UNCOMMON, mage.cards.s.StromgaldSpy.class));
- cards.add(new SetCardInfo("Surge of Strength", 109, Rarity.UNCOMMON, mage.cards.s.SurgeOfStrength.class));
- cards.add(new SetCardInfo("Sustaining Spirit", 18, Rarity.RARE, mage.cards.s.SustainingSpirit.class));
- cards.add(new SetCardInfo("Swamp Mosquito", "63a", Rarity.COMMON, mage.cards.s.SwampMosquito.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp Mosquito", "63b", Rarity.COMMON, mage.cards.s.SwampMosquito.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Thawing Glaciers", 144, Rarity.RARE, mage.cards.t.ThawingGlaciers.class));
- cards.add(new SetCardInfo("Thought Lash", 39, Rarity.RARE, mage.cards.t.ThoughtLash.class));
- cards.add(new SetCardInfo("Tidal Control", 40, Rarity.RARE, mage.cards.t.TidalControl.class));
- cards.add(new SetCardInfo("Tornado", 101, Rarity.RARE, mage.cards.t.Tornado.class));
- cards.add(new SetCardInfo("Unlikely Alliance", 20, Rarity.UNCOMMON, mage.cards.u.UnlikelyAlliance.class));
- cards.add(new SetCardInfo("Urza's Engine", 135, Rarity.UNCOMMON, mage.cards.u.UrzasEngine.class));
- cards.add(new SetCardInfo("Varchild's Crusader", "82a", Rarity.COMMON, mage.cards.v.VarchildsCrusader.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Varchild's Crusader", "82b", Rarity.COMMON, mage.cards.v.VarchildsCrusader.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Varchild's War-Riders", 83, Rarity.RARE, mage.cards.v.VarchildsWarRiders.class));
- cards.add(new SetCardInfo("Veteran's Voice", "84a", Rarity.COMMON, mage.cards.v.VeteransVoice.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Veteran's Voice", "84b", Rarity.COMMON, mage.cards.v.VeteransVoice.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Viscerid Armor", "41a", Rarity.COMMON, mage.cards.v.VisceridArmor.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Viscerid Armor", "41b", Rarity.COMMON, mage.cards.v.VisceridArmor.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Viscerid Drone", 42, Rarity.UNCOMMON, mage.cards.v.VisceridDrone.class));
- cards.add(new SetCardInfo("Wandering Mage", 111, Rarity.RARE, mage.cards.w.WanderingMage.class));
- cards.add(new SetCardInfo("Whip Vine", "103a", Rarity.COMMON, mage.cards.w.WhipVine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Whip Vine", "103b", Rarity.COMMON, mage.cards.w.WhipVine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Whirling Catapult", 136, Rarity.UNCOMMON, mage.cards.w.WhirlingCatapult.class));
- cards.add(new SetCardInfo("Wild Aesthir", "21a", Rarity.COMMON, mage.cards.w.WildAesthir.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Wild Aesthir", "21b", Rarity.COMMON, mage.cards.w.WildAesthir.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Winter's Night", 114, Rarity.RARE, mage.cards.w.WintersNight.class));
- cards.add(new SetCardInfo("Yavimaya Ancients", "104a", Rarity.COMMON, mage.cards.y.YavimayaAncients.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Yavimaya Ancients", "104b", Rarity.COMMON, mage.cards.y.YavimayaAncients.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Yavimaya Ants", 105, Rarity.UNCOMMON, mage.cards.y.YavimayaAnts.class));
- }
-}
+package mage.sets;
+
+import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+public final class Alliances extends ExpansionSet {
+
+ private static final Alliances instance = new Alliances();
+
+ public static Alliances getInstance() {
+ return instance;
+ }
+
+ private Alliances() {
+ super("Alliances", "ALL", ExpansionSet.buildDate(1996, 6, 10), SetType.EXPANSION);
+ this.blockName = "Ice Age";
+ this.parentSet = IceAge.getInstance();
+ this.hasBasicLands = false;
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 8;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Aesthir Glider", "116a", Rarity.COMMON, mage.cards.a.AesthirGlider.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Aesthir Glider", "116b", Rarity.COMMON, mage.cards.a.AesthirGlider.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Agent of Stromgald", "64a", Rarity.COMMON, mage.cards.a.AgentOfStromgald.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Agent of Stromgald", "64b", Rarity.COMMON, mage.cards.a.AgentOfStromgald.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Arcane Denial", "22a", Rarity.COMMON, mage.cards.a.ArcaneDenial.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Arcane Denial", "22b", Rarity.COMMON, mage.cards.a.ArcaneDenial.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ashnod's Cylix", 117, Rarity.RARE, mage.cards.a.AshnodsCylix.class));
+ cards.add(new SetCardInfo("Astrolabe", "118a", Rarity.COMMON, mage.cards.a.Astrolabe.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Astrolabe", "118b", Rarity.COMMON, mage.cards.a.Astrolabe.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Balduvian Dead", 43, Rarity.UNCOMMON, mage.cards.b.BalduvianDead.class));
+ cards.add(new SetCardInfo("Balduvian Horde", 65, Rarity.RARE, mage.cards.b.BalduvianHorde.class));
+ cards.add(new SetCardInfo("Balduvian Trading Post", 137, Rarity.RARE, mage.cards.b.BalduvianTradingPost.class));
+ cards.add(new SetCardInfo("Balduvian War-Makers", "66a", Rarity.COMMON, mage.cards.b.BalduvianWarMakers.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Balduvian War-Makers", "66b", Rarity.COMMON, mage.cards.b.BalduvianWarMakers.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Bestial Fury", "67a", Rarity.COMMON, mage.cards.b.BestialFury.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Bestial Fury", "67b", Rarity.COMMON, mage.cards.b.BestialFury.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Bounty of the Hunt", 85, Rarity.UNCOMMON, mage.cards.b.BountyOfTheHunt.class));
+ cards.add(new SetCardInfo("Browse", 25, Rarity.UNCOMMON, mage.cards.b.Browse.class));
+ cards.add(new SetCardInfo("Burnout", 68, Rarity.UNCOMMON, mage.cards.b.Burnout.class));
+ cards.add(new SetCardInfo("Carrier Pigeons", "1a", Rarity.COMMON, mage.cards.c.CarrierPigeons.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Carrier Pigeons", "1b", Rarity.COMMON, mage.cards.c.CarrierPigeons.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Casting of Bones", "44a", Rarity.COMMON, mage.cards.c.CastingOfBones.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Casting of Bones", "44b", Rarity.COMMON, mage.cards.c.CastingOfBones.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Chaos Harlequin", 69, Rarity.RARE, mage.cards.c.ChaosHarlequin.class));
+ cards.add(new SetCardInfo("Contagion", 45, Rarity.UNCOMMON, mage.cards.c.Contagion.class));
+ cards.add(new SetCardInfo("Deadly Insect", "86a", Rarity.COMMON, mage.cards.d.DeadlyInsect.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Deadly Insect", "86b", Rarity.COMMON, mage.cards.d.DeadlyInsect.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Death Spark", 70, Rarity.UNCOMMON, mage.cards.d.DeathSpark.class));
+ cards.add(new SetCardInfo("Diminishing Returns", 26, Rarity.RARE, mage.cards.d.DiminishingReturns.class));
+ cards.add(new SetCardInfo("Dystopia", 47, Rarity.RARE, mage.cards.d.Dystopia.class));
+ cards.add(new SetCardInfo("Elvish Bard", 87, Rarity.UNCOMMON, mage.cards.e.ElvishBard.class));
+ cards.add(new SetCardInfo("Elvish Ranger", "88a", Rarity.COMMON, mage.cards.e.ElvishRanger.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Elvish Ranger", "88b", Rarity.COMMON, mage.cards.e.ElvishRanger.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Elvish Spirit Guide", 89, Rarity.UNCOMMON, mage.cards.e.ElvishSpiritGuide.class));
+ cards.add(new SetCardInfo("Energy Arc", 106, Rarity.UNCOMMON, mage.cards.e.EnergyArc.class));
+ cards.add(new SetCardInfo("Enslaved Scout", "71a", Rarity.COMMON, mage.cards.e.EnslavedScout.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Enslaved Scout", "71b", Rarity.COMMON, mage.cards.e.EnslavedScout.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Errand of Duty", "2a", Rarity.COMMON, mage.cards.e.ErrandOfDuty.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Errand of Duty", "2b", Rarity.COMMON, mage.cards.e.ErrandOfDuty.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Exile", 3, Rarity.RARE, mage.cards.e.Exile.class));
+ cards.add(new SetCardInfo("False Demise", "27a", Rarity.COMMON, mage.cards.f.FalseDemise.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("False Demise", "27b", Rarity.COMMON, mage.cards.f.FalseDemise.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Feast or Famine", "49a", Rarity.COMMON, mage.cards.f.FeastOrFamine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Feast or Famine", "49b", Rarity.COMMON, mage.cards.f.FeastOrFamine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Fevered Strength", "50a", Rarity.COMMON, mage.cards.f.FeveredStrength.class));
+ cards.add(new SetCardInfo("Fevered Strength", "50b", Rarity.COMMON, mage.cards.f.FeveredStrength.class));
+ cards.add(new SetCardInfo("Floodwater Dam", 119, Rarity.RARE, mage.cards.f.FloodwaterDam.class));
+ cards.add(new SetCardInfo("Force of Will", 28, Rarity.UNCOMMON, mage.cards.f.ForceOfWill.class));
+ cards.add(new SetCardInfo("Foresight", "29a", Rarity.COMMON, mage.cards.f.Foresight.class));
+ cards.add(new SetCardInfo("Foresight", "29b", Rarity.COMMON, mage.cards.f.Foresight.class));
+ cards.add(new SetCardInfo("Gorilla Berserkers", "93a", Rarity.COMMON, mage.cards.g.GorillaBerserkers.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Gorilla Berserkers", "93b", Rarity.COMMON, mage.cards.g.GorillaBerserkers.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Gorilla Chieftain", "94a", Rarity.COMMON, mage.cards.g.GorillaChieftain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Gorilla Chieftain", "94b", Rarity.COMMON, mage.cards.g.GorillaChieftain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Gorilla Shaman", "72a", Rarity.COMMON, mage.cards.g.GorillaShaman.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Gorilla Shaman", "72b", Rarity.COMMON, mage.cards.g.GorillaShaman.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Gorilla War Cry", "73a", Rarity.COMMON, mage.cards.g.GorillaWarCry.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Gorilla War Cry", "73b", Rarity.COMMON, mage.cards.g.GorillaWarCry.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Guerrilla Tactics", "74a", Rarity.COMMON, mage.cards.g.GuerrillaTactics.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Guerrilla Tactics", "74b", Rarity.COMMON, mage.cards.g.GuerrillaTactics.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Hail Storm", 95, Rarity.UNCOMMON, mage.cards.h.HailStorm.class));
+ cards.add(new SetCardInfo("Heart of Yavimaya", 138, Rarity.RARE, mage.cards.h.HeartOfYavimaya.class));
+ cards.add(new SetCardInfo("Helm of Obedience", 121, Rarity.RARE, mage.cards.h.HelmOfObedience.class));
+ cards.add(new SetCardInfo("Inheritance", 4, Rarity.UNCOMMON, mage.cards.i.Inheritance.class));
+ cards.add(new SetCardInfo("Insidious Bookworms", "51a", Rarity.COMMON, mage.cards.i.InsidiousBookworms.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Insidious Bookworms", "51b", Rarity.COMMON, mage.cards.i.InsidiousBookworms.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Juniper Order Advocate", 6, Rarity.UNCOMMON, mage.cards.j.JuniperOrderAdvocate.class));
+ cards.add(new SetCardInfo("Kaysa", 96, Rarity.RARE, mage.cards.k.Kaysa.class));
+ cards.add(new SetCardInfo("Keeper of Tresserhorn", 52, Rarity.RARE, mage.cards.k.KeeperOfTresserhorn.class));
+ cards.add(new SetCardInfo("Kjeldoran Escort", "7a", Rarity.COMMON, mage.cards.k.KjeldoranEscort.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Kjeldoran Escort", "7b", Rarity.COMMON, mage.cards.k.KjeldoranEscort.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Kjeldoran Home Guard", 8, Rarity.UNCOMMON, mage.cards.k.KjeldoranHomeGuard.class));
+ cards.add(new SetCardInfo("Kjeldoran Outpost", 139, Rarity.RARE, mage.cards.k.KjeldoranOutpost.class));
+ cards.add(new SetCardInfo("Krovikan Horror", 53, Rarity.RARE, mage.cards.k.KrovikanHorror.class));
+ cards.add(new SetCardInfo("Krovikan Plague", 54, Rarity.UNCOMMON, mage.cards.k.KrovikanPlague.class));
+ cards.add(new SetCardInfo("Lake of the Dead", 140, Rarity.RARE, mage.cards.l.LakeOfTheDead.class));
+ cards.add(new SetCardInfo("Lat-Nam's Legacy", "30a", Rarity.COMMON, mage.cards.l.LatNamsLegacy.class));
+ cards.add(new SetCardInfo("Lat-Nam's Legacy", "30b", Rarity.COMMON, mage.cards.l.LatNamsLegacy.class));
+ cards.add(new SetCardInfo("Library of Lat-Nam", 31, Rarity.RARE, mage.cards.l.LibraryOfLatNam.class));
+ cards.add(new SetCardInfo("Lim-Dul's High Guard", "55a", Rarity.COMMON, mage.cards.l.LimDulsHighGuard.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Lim-Dul's High Guard", "55b", Rarity.COMMON, mage.cards.l.LimDulsHighGuard.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Lim-Dul's Paladin", 108, Rarity.UNCOMMON, mage.cards.l.LimDulsPaladin.class));
+ cards.add(new SetCardInfo("Lim-Dul's Vault", 107, Rarity.UNCOMMON, mage.cards.l.LimDulsVault.class));
+ cards.add(new SetCardInfo("Lodestone Bauble", 122, Rarity.RARE, mage.cards.l.LodestoneBauble.class));
+ cards.add(new SetCardInfo("Lord of Tresserhorn", 112, Rarity.RARE, mage.cards.l.LordOfTresserhorn.class));
+ cards.add(new SetCardInfo("Martyrdom", "10a", Rarity.COMMON, mage.cards.m.Martyrdom.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Martyrdom", "10b", Rarity.COMMON, mage.cards.m.Martyrdom.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mishra's Groundbreaker", 123, Rarity.UNCOMMON, mage.cards.m.MishrasGroundbreaker.class));
+ cards.add(new SetCardInfo("Misinformation", 56, Rarity.UNCOMMON, mage.cards.m.Misinformation.class));
+ cards.add(new SetCardInfo("Mystic Compass", 124, Rarity.UNCOMMON, mage.cards.m.MysticCompass.class));
+ cards.add(new SetCardInfo("Nature's Blessing", 110, Rarity.UNCOMMON, mage.cards.n.NaturesBlessing.class));
+ cards.add(new SetCardInfo("Nature's Chosen", 97, Rarity.UNCOMMON, mage.cards.n.NaturesChosen.class));
+ cards.add(new SetCardInfo("Nature's Wrath", 98, Rarity.RARE, mage.cards.n.NaturesWrath.class));
+ cards.add(new SetCardInfo("Noble Steeds", "11a", Rarity.COMMON, mage.cards.n.NobleSteeds.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Noble Steeds", "11b", Rarity.COMMON, mage.cards.n.NobleSteeds.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Omen of Fire", 75, Rarity.RARE, mage.cards.o.OmenOfFire.class));
+ cards.add(new SetCardInfo("Phantasmal Fiend", "57a", Rarity.COMMON, mage.cards.p.PhantasmalFiend.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Phantasmal Fiend", "57b", Rarity.COMMON, mage.cards.p.PhantasmalFiend.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Phelddagrif", 115, Rarity.RARE, mage.cards.p.Phelddagrif.class));
+ cards.add(new SetCardInfo("Phyrexian Boon", "58a", Rarity.COMMON, mage.cards.p.PhyrexianBoon.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Phyrexian Boon", "58b", Rarity.COMMON, mage.cards.p.PhyrexianBoon.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Phyrexian Devourer", 125, Rarity.RARE, mage.cards.p.PhyrexianDevourer.class));
+ cards.add(new SetCardInfo("Phyrexian War Beast", "127a", Rarity.COMMON, mage.cards.p.PhyrexianWarBeast.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Phyrexian War Beast", "127b", Rarity.COMMON, mage.cards.p.PhyrexianWarBeast.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Pillage", 76, Rarity.UNCOMMON, mage.cards.p.Pillage.class));
+ cards.add(new SetCardInfo("Pyrokinesis", 78, Rarity.UNCOMMON, mage.cards.p.Pyrokinesis.class));
+ cards.add(new SetCardInfo("Reinforcements", "12a", Rarity.COMMON, mage.cards.r.Reinforcements.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Reinforcements", "12b", Rarity.COMMON, mage.cards.r.Reinforcements.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Reprisal", "13a", Rarity.COMMON, mage.cards.r.Reprisal.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Reprisal", "13b", Rarity.COMMON, mage.cards.r.Reprisal.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ritual of the Machine", 59, Rarity.RARE, mage.cards.r.RitualOfTheMachine.class));
+ cards.add(new SetCardInfo("Royal Decree", 14, Rarity.RARE, mage.cards.r.RoyalDecree.class));
+ cards.add(new SetCardInfo("Royal Herbalist", "15a", Rarity.COMMON, mage.cards.r.RoyalHerbalist.class));
+ cards.add(new SetCardInfo("Royal Herbalist", "15b", Rarity.COMMON, mage.cards.r.RoyalHerbalist.class));
+ cards.add(new SetCardInfo("School of the Unseen", 141, Rarity.UNCOMMON, mage.cards.s.SchoolOfTheUnseen.class));
+ cards.add(new SetCardInfo("Seasoned Tactician", 17, Rarity.UNCOMMON, mage.cards.s.SeasonedTactician.class));
+ cards.add(new SetCardInfo("Sheltered Valley", 142, Rarity.RARE, mage.cards.s.ShelteredValley.class));
+ cards.add(new SetCardInfo("Shield Sphere", 129, Rarity.UNCOMMON, mage.cards.s.ShieldSphere.class));
+ cards.add(new SetCardInfo("Sol Grail", 130, Rarity.UNCOMMON, mage.cards.s.SolGrail.class));
+ cards.add(new SetCardInfo("Soldevi Adnate", "60a", Rarity.COMMON, mage.cards.s.SoldeviAdnate.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Soldevi Adnate", "60b", Rarity.COMMON, mage.cards.s.SoldeviAdnate.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Soldevi Digger", 131, Rarity.RARE, mage.cards.s.SoldeviDigger.class));
+ cards.add(new SetCardInfo("Soldevi Excavations", 143, Rarity.RARE, mage.cards.s.SoldeviExcavations.class));
+ cards.add(new SetCardInfo("Soldevi Heretic", "33a", Rarity.COMMON, mage.cards.s.SoldeviHeretic.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Soldevi Heretic", "33b", Rarity.COMMON, mage.cards.s.SoldeviHeretic.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Soldevi Sage", "34a", Rarity.COMMON, mage.cards.s.SoldeviSage.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Soldevi Sage", "34b", Rarity.COMMON, mage.cards.s.SoldeviSage.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Soldevi Steam Beast", "133a", Rarity.COMMON, mage.cards.s.SoldeviSteamBeast.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Soldevi Steam Beast", "133b", Rarity.COMMON, mage.cards.s.SoldeviSteamBeast.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Soldier of Fortune", 80, Rarity.UNCOMMON, mage.cards.s.SoldierOfFortune.class));
+ cards.add(new SetCardInfo("Stench of Decay", "61a", Rarity.COMMON, mage.cards.s.StenchOfDecay.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Stench of Decay", "61b", Rarity.COMMON, mage.cards.s.StenchOfDecay.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Storm Cauldron", 134, Rarity.RARE, mage.cards.s.StormCauldron.class));
+ cards.add(new SetCardInfo("Storm Crow", "36a", Rarity.COMMON, mage.cards.s.StormCrow.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Storm Crow", "36b", Rarity.COMMON, mage.cards.s.StormCrow.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Storm Shaman", "81a", Rarity.COMMON, mage.cards.s.StormShaman.class));
+ cards.add(new SetCardInfo("Storm Shaman", "81b", Rarity.COMMON, mage.cards.s.StormShaman.class));
+ cards.add(new SetCardInfo("Stromgald Spy", 62, Rarity.UNCOMMON, mage.cards.s.StromgaldSpy.class));
+ cards.add(new SetCardInfo("Surge of Strength", 109, Rarity.UNCOMMON, mage.cards.s.SurgeOfStrength.class));
+ cards.add(new SetCardInfo("Sustaining Spirit", 18, Rarity.RARE, mage.cards.s.SustainingSpirit.class));
+ cards.add(new SetCardInfo("Swamp Mosquito", "63a", Rarity.COMMON, mage.cards.s.SwampMosquito.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp Mosquito", "63b", Rarity.COMMON, mage.cards.s.SwampMosquito.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Thawing Glaciers", 144, Rarity.RARE, mage.cards.t.ThawingGlaciers.class));
+ cards.add(new SetCardInfo("Thought Lash", 39, Rarity.RARE, mage.cards.t.ThoughtLash.class));
+ cards.add(new SetCardInfo("Tidal Control", 40, Rarity.RARE, mage.cards.t.TidalControl.class));
+ cards.add(new SetCardInfo("Tornado", 101, Rarity.RARE, mage.cards.t.Tornado.class));
+ cards.add(new SetCardInfo("Unlikely Alliance", 20, Rarity.UNCOMMON, mage.cards.u.UnlikelyAlliance.class));
+ cards.add(new SetCardInfo("Urza's Engine", 135, Rarity.UNCOMMON, mage.cards.u.UrzasEngine.class));
+ cards.add(new SetCardInfo("Varchild's Crusader", "82a", Rarity.COMMON, mage.cards.v.VarchildsCrusader.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Varchild's Crusader", "82b", Rarity.COMMON, mage.cards.v.VarchildsCrusader.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Varchild's War-Riders", 83, Rarity.RARE, mage.cards.v.VarchildsWarRiders.class));
+ cards.add(new SetCardInfo("Veteran's Voice", "84a", Rarity.COMMON, mage.cards.v.VeteransVoice.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Veteran's Voice", "84b", Rarity.COMMON, mage.cards.v.VeteransVoice.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Viscerid Armor", "41a", Rarity.COMMON, mage.cards.v.VisceridArmor.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Viscerid Armor", "41b", Rarity.COMMON, mage.cards.v.VisceridArmor.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Viscerid Drone", 42, Rarity.UNCOMMON, mage.cards.v.VisceridDrone.class));
+ cards.add(new SetCardInfo("Wandering Mage", 111, Rarity.RARE, mage.cards.w.WanderingMage.class));
+ cards.add(new SetCardInfo("Whip Vine", "103a", Rarity.COMMON, mage.cards.w.WhipVine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Whip Vine", "103b", Rarity.COMMON, mage.cards.w.WhipVine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Whirling Catapult", 136, Rarity.UNCOMMON, mage.cards.w.WhirlingCatapult.class));
+ cards.add(new SetCardInfo("Wild Aesthir", "21a", Rarity.COMMON, mage.cards.w.WildAesthir.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Wild Aesthir", "21b", Rarity.COMMON, mage.cards.w.WildAesthir.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Winter's Night", 114, Rarity.RARE, mage.cards.w.WintersNight.class));
+ cards.add(new SetCardInfo("Yavimaya Ancients", "104a", Rarity.COMMON, mage.cards.y.YavimayaAncients.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Yavimaya Ancients", "104b", Rarity.COMMON, mage.cards.y.YavimayaAncients.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Yavimaya Ants", 105, Rarity.UNCOMMON, mage.cards.y.YavimayaAnts.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Amonkhet.java b/Mage.Sets/src/mage/sets/Amonkhet.java
index 006da239d64..693188bec13 100644
--- a/Mage.Sets/src/mage/sets/Amonkhet.java
+++ b/Mage.Sets/src/mage/sets/Amonkhet.java
@@ -41,7 +41,7 @@ import java.util.List;
*
* @author fireshoes
*/
-public class Amonkhet extends ExpansionSet {
+public final class Amonkhet extends ExpansionSet {
private static final Amonkhet instance = new Amonkhet();
diff --git a/Mage.Sets/src/mage/sets/AnthologyDivineVsDemonic.java b/Mage.Sets/src/mage/sets/AnthologyDivineVsDemonic.java
index 3a8d01fe0f3..a9750f4c697 100644
--- a/Mage.Sets/src/mage/sets/AnthologyDivineVsDemonic.java
+++ b/Mage.Sets/src/mage/sets/AnthologyDivineVsDemonic.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class AnthologyDivineVsDemonic extends ExpansionSet {
+public final class AnthologyDivineVsDemonic extends ExpansionSet {
private static final AnthologyDivineVsDemonic instance = new AnthologyDivineVsDemonic();
diff --git a/Mage.Sets/src/mage/sets/AnthologyElvesVsGoblins.java b/Mage.Sets/src/mage/sets/AnthologyElvesVsGoblins.java
index 4ed2a0cc394..d986cba1b42 100644
--- a/Mage.Sets/src/mage/sets/AnthologyElvesVsGoblins.java
+++ b/Mage.Sets/src/mage/sets/AnthologyElvesVsGoblins.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class AnthologyElvesVsGoblins extends ExpansionSet {
+public final class AnthologyElvesVsGoblins extends ExpansionSet {
private static final AnthologyElvesVsGoblins instance = new AnthologyElvesVsGoblins();
diff --git a/Mage.Sets/src/mage/sets/AnthologyGarrukVsLiliana.java b/Mage.Sets/src/mage/sets/AnthologyGarrukVsLiliana.java
index 4e2257aaf11..ab4e6a99673 100644
--- a/Mage.Sets/src/mage/sets/AnthologyGarrukVsLiliana.java
+++ b/Mage.Sets/src/mage/sets/AnthologyGarrukVsLiliana.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class AnthologyGarrukVsLiliana extends ExpansionSet {
+public final class AnthologyGarrukVsLiliana extends ExpansionSet {
private static final AnthologyGarrukVsLiliana instance = new AnthologyGarrukVsLiliana();
diff --git a/Mage.Sets/src/mage/sets/AnthologyJaceVsChandra.java b/Mage.Sets/src/mage/sets/AnthologyJaceVsChandra.java
index 4b8087988c9..bd24746cfd7 100644
--- a/Mage.Sets/src/mage/sets/AnthologyJaceVsChandra.java
+++ b/Mage.Sets/src/mage/sets/AnthologyJaceVsChandra.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class AnthologyJaceVsChandra extends ExpansionSet {
+public final class AnthologyJaceVsChandra extends ExpansionSet {
private static final AnthologyJaceVsChandra instance = new AnthologyJaceVsChandra();
diff --git a/Mage.Sets/src/mage/sets/Antiquities.java b/Mage.Sets/src/mage/sets/Antiquities.java
index 6396acc95cc..7762e5b4029 100644
--- a/Mage.Sets/src/mage/sets/Antiquities.java
+++ b/Mage.Sets/src/mage/sets/Antiquities.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class Antiquities extends ExpansionSet {
+public final class Antiquities extends ExpansionSet {
private static final Antiquities instance = new Antiquities();
diff --git a/Mage.Sets/src/mage/sets/Apocalypse.java b/Mage.Sets/src/mage/sets/Apocalypse.java
index 187bc0ff8b1..b1453762a48 100644
--- a/Mage.Sets/src/mage/sets/Apocalypse.java
+++ b/Mage.Sets/src/mage/sets/Apocalypse.java
@@ -1,161 +1,162 @@
-package mage.sets;
-
-import mage.cards.ExpansionSet;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-public class Apocalypse extends ExpansionSet {
-
- private static final Apocalypse instance = new Apocalypse();
-
- public static Apocalypse getInstance() {
- return instance;
- }
-
- private Apocalypse() {
- super("Apocalypse", "APC", ExpansionSet.buildDate(2001, 5, 1), SetType.EXPANSION);
- this.blockName = "Invasion";
- this.parentSet = Invasion.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("Aether Mutation", 91, Rarity.UNCOMMON, mage.cards.a.AetherMutation.class));
- cards.add(new SetCardInfo("Ana Disciple", 73, Rarity.COMMON, mage.cards.a.AnaDisciple.class));
- cards.add(new SetCardInfo("Ana Sanctuary", 74, Rarity.UNCOMMON, mage.cards.a.AnaSanctuary.class));
- cards.add(new SetCardInfo("Anavolver", 75, Rarity.RARE, mage.cards.a.Anavolver.class));
- cards.add(new SetCardInfo("Angelfire Crusader", 1, Rarity.COMMON, mage.cards.a.AngelfireCrusader.class));
- cards.add(new SetCardInfo("Battlefield Forge", 139, Rarity.RARE, mage.cards.b.BattlefieldForge.class));
- cards.add(new SetCardInfo("Bloodfire Colossus", 55, Rarity.RARE, mage.cards.b.BloodfireColossus.class));
- cards.add(new SetCardInfo("Bloodfire Dwarf", 56, Rarity.COMMON, mage.cards.b.BloodfireDwarf.class));
- cards.add(new SetCardInfo("Bloodfire Infusion", 57, Rarity.COMMON, mage.cards.b.BloodfireInfusion.class));
- cards.add(new SetCardInfo("Bloodfire Kavu", 58, Rarity.UNCOMMON, mage.cards.b.BloodfireKavu.class));
- cards.add(new SetCardInfo("Bog Gnarr", 76, Rarity.COMMON, mage.cards.b.BogGnarr.class));
- 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));
- cards.add(new SetCardInfo("Coastal Drake", 22, Rarity.COMMON, mage.cards.c.CoastalDrake.class));
- cards.add(new SetCardInfo("Consume Strength", 93, Rarity.COMMON, mage.cards.c.ConsumeStrength.class));
- cards.add(new SetCardInfo("Cromat", 94, Rarity.RARE, mage.cards.c.Cromat.class));
- cards.add(new SetCardInfo("Dead Ringers", 37, Rarity.COMMON, mage.cards.d.DeadRingers.class));
- cards.add(new SetCardInfo("Death Grasp", 95, Rarity.RARE, mage.cards.d.DeathGrasp.class));
- cards.add(new SetCardInfo("Death Mutation", 96, Rarity.UNCOMMON, mage.cards.d.DeathMutation.class));
- cards.add(new SetCardInfo("Dega Disciple", 4, Rarity.COMMON, mage.cards.d.DegaDisciple.class));
- cards.add(new SetCardInfo("Dega Sanctuary", 5, Rarity.UNCOMMON, mage.cards.d.DegaSanctuary.class));
- cards.add(new SetCardInfo("Degavolver", 6, Rarity.RARE, mage.cards.d.Degavolver.class));
- cards.add(new SetCardInfo("Desolation Angel", 38, Rarity.RARE, mage.cards.d.DesolationAngel.class));
- cards.add(new SetCardInfo("Desolation Giant", 59, Rarity.RARE, mage.cards.d.DesolationGiant.class));
- cards.add(new SetCardInfo("Diversionary Tactics", 7, Rarity.UNCOMMON, mage.cards.d.DiversionaryTactics.class));
- cards.add(new SetCardInfo("Divine Light", 8, Rarity.COMMON, mage.cards.d.DivineLight.class));
- cards.add(new SetCardInfo("Dodecapod", 134, Rarity.UNCOMMON, mage.cards.d.Dodecapod.class));
- cards.add(new SetCardInfo("Dragon Arch", 135, Rarity.UNCOMMON, mage.cards.d.DragonArch.class));
- cards.add(new SetCardInfo("Dwarven Landslide", 60, Rarity.COMMON, mage.cards.d.DwarvenLandslide.class));
- cards.add(new SetCardInfo("Dwarven Patrol", 61, Rarity.UNCOMMON, mage.cards.d.DwarvenPatrol.class));
- cards.add(new SetCardInfo("Ebony Treefolk", 97, Rarity.UNCOMMON, mage.cards.e.EbonyTreefolk.class));
- cards.add(new SetCardInfo("Enlistment Officer", 9, Rarity.UNCOMMON, mage.cards.e.EnlistmentOfficer.class));
- cards.add(new SetCardInfo("Evasive Action", 23, Rarity.UNCOMMON, mage.cards.e.EvasiveAction.class));
- cards.add(new SetCardInfo("Fervent Charge", 98, Rarity.RARE, mage.cards.f.FerventCharge.class));
- cards.add(new SetCardInfo("Fire // Ice", 128, Rarity.UNCOMMON, mage.cards.f.FireIce.class));
- cards.add(new SetCardInfo("Flowstone Charger", 99, Rarity.UNCOMMON, mage.cards.f.FlowstoneCharger.class));
- cards.add(new SetCardInfo("Foul Presence", 39, Rarity.UNCOMMON, mage.cards.f.FoulPresence.class));
- cards.add(new SetCardInfo("Fungal Shambler", 100, Rarity.RARE, mage.cards.f.FungalShambler.class));
- cards.add(new SetCardInfo("Gaea's Skyfolk", 101, Rarity.COMMON, mage.cards.g.GaeasSkyfolk.class));
- cards.add(new SetCardInfo("Gerrard Capashen", 11, Rarity.RARE, mage.cards.g.GerrardCapashen.class));
- cards.add(new SetCardInfo("Gerrard's Verdict", 102, Rarity.UNCOMMON, mage.cards.g.GerrardsVerdict.class));
- cards.add(new SetCardInfo("Glade Gnarr", 78, Rarity.COMMON, mage.cards.g.GladeGnarr.class));
- cards.add(new SetCardInfo("Goblin Legionnaire", 103, Rarity.COMMON, mage.cards.g.GoblinLegionnaire.class));
- cards.add(new SetCardInfo("Goblin Ringleader", 62, Rarity.UNCOMMON, mage.cards.g.GoblinRingleader.class));
- cards.add(new SetCardInfo("Goblin Trenches", 104, Rarity.RARE, mage.cards.g.GoblinTrenches.class));
- cards.add(new SetCardInfo("Grave Defiler", 40, Rarity.UNCOMMON, mage.cards.g.GraveDefiler.class));
- cards.add(new SetCardInfo("Guided Passage", 105, Rarity.RARE, mage.cards.g.GuidedPassage.class));
- cards.add(new SetCardInfo("Haunted Angel", 12, Rarity.UNCOMMON, mage.cards.h.HauntedAngel.class));
- cards.add(new SetCardInfo("Helionaut", 13, Rarity.COMMON, mage.cards.h.Helionaut.class));
- cards.add(new SetCardInfo("Ice Cave", 24, Rarity.RARE, mage.cards.i.IceCave.class));
- cards.add(new SetCardInfo("Illuminate", 63, Rarity.UNCOMMON, mage.cards.i.Illuminate.class));
- cards.add(new SetCardInfo("Illusion // Reality", 129, Rarity.UNCOMMON, mage.cards.i.IllusionReality.class));
- cards.add(new SetCardInfo("Index", 25, Rarity.COMMON, mage.cards.i.Index.class));
- cards.add(new SetCardInfo("Jilt", 27, Rarity.COMMON, mage.cards.j.Jilt.class));
- cards.add(new SetCardInfo("Jungle Barrier", 106, Rarity.UNCOMMON, mage.cards.j.JungleBarrier.class));
- cards.add(new SetCardInfo("Kavu Glider", 64, Rarity.COMMON, mage.cards.k.KavuGlider.class));
- cards.add(new SetCardInfo("Kavu Howler", 79, Rarity.UNCOMMON, mage.cards.k.KavuHowler.class));
- cards.add(new SetCardInfo("Kavu Mauler", 80, Rarity.RARE, mage.cards.k.KavuMauler.class));
- cards.add(new SetCardInfo("Last Caress", 41, Rarity.COMMON, mage.cards.l.LastCaress.class));
- cards.add(new SetCardInfo("Last Stand", 107, Rarity.RARE, mage.cards.l.LastStand.class));
- cards.add(new SetCardInfo("Lay of the Land", 81, Rarity.COMMON, mage.cards.l.LayOfTheLand.class));
- cards.add(new SetCardInfo("Legacy Weapon", 137, Rarity.RARE, mage.cards.l.LegacyWeapon.class));
- cards.add(new SetCardInfo("Life // Death", 130, Rarity.UNCOMMON, mage.cards.l.LifeDeath.class));
- cards.add(new SetCardInfo("Lightning Angel", 108, Rarity.RARE, mage.cards.l.LightningAngel.class));
- cards.add(new SetCardInfo("Living Airship", 28, Rarity.COMMON, mage.cards.l.LivingAirship.class));
- cards.add(new SetCardInfo("Llanowar Dead", 109, Rarity.COMMON, mage.cards.l.LlanowarDead.class));
- cards.add(new SetCardInfo("Llanowar Wastes", 141, Rarity.RARE, mage.cards.l.LlanowarWastes.class));
- cards.add(new SetCardInfo("Manacles of Decay", 14, Rarity.COMMON, mage.cards.m.ManaclesOfDecay.class));
- cards.add(new SetCardInfo("Martyrs' Tomb", 110, Rarity.UNCOMMON, mage.cards.m.MartyrsTomb.class));
- cards.add(new SetCardInfo("Mask of Intolerance", 138, Rarity.RARE, mage.cards.m.MaskOfIntolerance.class));
- cards.add(new SetCardInfo("Minotaur Illusionist", 111, Rarity.UNCOMMON, mage.cards.m.MinotaurIllusionist.class));
- cards.add(new SetCardInfo("Minotaur Tactician", 65, Rarity.COMMON, mage.cards.m.MinotaurTactician.class));
- cards.add(new SetCardInfo("Mournful Zombie", 43, Rarity.COMMON, mage.cards.m.MournfulZombie.class));
- cards.add(new SetCardInfo("Mystic Snake", 112, Rarity.RARE, mage.cards.m.MysticSnake.class));
- cards.add(new SetCardInfo("Necra Disciple", 44, Rarity.COMMON, mage.cards.n.NecraDisciple.class));
- cards.add(new SetCardInfo("Necra Sanctuary", 45, Rarity.UNCOMMON, mage.cards.n.NecraSanctuary.class));
- cards.add(new SetCardInfo("Necravolver", 46, Rarity.RARE, mage.cards.n.Necravolver.class));
- cards.add(new SetCardInfo("Night // Day", 131, Rarity.UNCOMMON, mage.cards.n.NightDay.class));
- cards.add(new SetCardInfo("Order // Chaos", 132, Rarity.UNCOMMON, mage.cards.o.OrderChaos.class));
- cards.add(new SetCardInfo("Orim's Thunder", 15, Rarity.COMMON, mage.cards.o.OrimsThunder.class));
- cards.add(new SetCardInfo("Overgrown Estate", 113, Rarity.RARE, mage.cards.o.OvergrownEstate.class));
- cards.add(new SetCardInfo("Penumbra Bobcat", 82, Rarity.COMMON, mage.cards.p.PenumbraBobcat.class));
- cards.add(new SetCardInfo("Penumbra Kavu", 83, Rarity.UNCOMMON, mage.cards.p.PenumbraKavu.class));
- cards.add(new SetCardInfo("Penumbra Wurm", 84, Rarity.RARE, mage.cards.p.PenumbraWurm.class));
- cards.add(new SetCardInfo("Pernicious Deed", 114, Rarity.RARE, mage.cards.p.PerniciousDeed.class));
- cards.add(new SetCardInfo("Phyrexian Arena", 47, Rarity.RARE, mage.cards.p.PhyrexianArena.class));
- cards.add(new SetCardInfo("Phyrexian Gargantua", 48, Rarity.UNCOMMON, mage.cards.p.PhyrexianGargantua.class));
- cards.add(new SetCardInfo("Phyrexian Rager", 49, Rarity.COMMON, mage.cards.p.PhyrexianRager.class));
- cards.add(new SetCardInfo("Planar Despair", 50, Rarity.RARE, mage.cards.p.PlanarDespair.class));
- cards.add(new SetCardInfo("Powerstone Minefield", 115, Rarity.RARE, mage.cards.p.PowerstoneMinefield.class));
- cards.add(new SetCardInfo("Prophetic Bolt", 116, Rarity.RARE, mage.cards.p.PropheticBolt.class));
- cards.add(new SetCardInfo("Putrid Warrior", 117, Rarity.COMMON, mage.cards.p.PutridWarrior.class));
- cards.add(new SetCardInfo("Quagmire Druid", 51, Rarity.COMMON, mage.cards.q.QuagmireDruid.class));
- cards.add(new SetCardInfo("Quicksilver Dagger", 118, Rarity.COMMON, mage.cards.q.QuicksilverDagger.class));
- cards.add(new SetCardInfo("Raka Disciple", 66, Rarity.COMMON, mage.cards.r.RakaDisciple.class));
- cards.add(new SetCardInfo("Raka Sanctuary", 67, Rarity.UNCOMMON, mage.cards.r.RakaSanctuary.class));
- cards.add(new SetCardInfo("Rakavolver", 68, Rarity.RARE, mage.cards.r.Rakavolver.class));
- cards.add(new SetCardInfo("Razorfin Hunter", 119, Rarity.COMMON, mage.cards.r.RazorfinHunter.class));
- cards.add(new SetCardInfo("Reef Shaman", 29, Rarity.COMMON, mage.cards.r.ReefShaman.class));
- cards.add(new SetCardInfo("Savage Gorilla", 85, Rarity.COMMON, mage.cards.s.SavageGorilla.class));
- cards.add(new SetCardInfo("Shield of Duty and Reason", 16, Rarity.COMMON, mage.cards.s.ShieldOfDutyAndReason.class));
- cards.add(new SetCardInfo("Shimmering Mirage", 30, Rarity.COMMON, mage.cards.s.ShimmeringMirage.class));
- cards.add(new SetCardInfo("Shivan Reef", 142, Rarity.RARE, mage.cards.s.ShivanReef.class));
- cards.add(new SetCardInfo("Smash", 69, Rarity.COMMON, mage.cards.s.Smash.class));
- cards.add(new SetCardInfo("Soul Link", 120, Rarity.COMMON, mage.cards.s.SoulLink.class));
- cards.add(new SetCardInfo("Spectral Lynx", 17, Rarity.RARE, mage.cards.s.SpectralLynx.class));
- cards.add(new SetCardInfo("Spiritmonger", 121, Rarity.RARE, mage.cards.s.Spiritmonger.class));
- cards.add(new SetCardInfo("Squee's Embrace", 122, Rarity.COMMON, mage.cards.s.SqueesEmbrace.class));
- cards.add(new SetCardInfo("Squee's Revenge", 123, Rarity.UNCOMMON, mage.cards.s.SqueesRevenge.class));
- cards.add(new SetCardInfo("Standard Bearer", 18, Rarity.COMMON, mage.cards.s.StandardBearer.class));
- cards.add(new SetCardInfo("Strength of Night", 86, Rarity.COMMON, mage.cards.s.StrengthOfNight.class));
- cards.add(new SetCardInfo("Suffocating Blast", 124, Rarity.RARE, mage.cards.s.SuffocatingBlast.class));
- cards.add(new SetCardInfo("Sylvan Messenger", 87, Rarity.UNCOMMON, mage.cards.s.SylvanMessenger.class));
- cards.add(new SetCardInfo("Symbiotic Deployment", 88, Rarity.RARE, mage.cards.s.SymbioticDeployment.class));
- cards.add(new SetCardInfo("Temporal Spring", 125, Rarity.COMMON, mage.cards.t.TemporalSpring.class));
- cards.add(new SetCardInfo("Tidal Courier", 31, Rarity.UNCOMMON, mage.cards.t.TidalCourier.class));
- cards.add(new SetCardInfo("Tranquil Path", 89, Rarity.COMMON, mage.cards.t.TranquilPath.class));
- cards.add(new SetCardInfo("Tundra Kavu", 71, Rarity.COMMON, mage.cards.t.TundraKavu.class));
- cards.add(new SetCardInfo("Unnatural Selection", 32, Rarity.RARE, mage.cards.u.UnnaturalSelection.class));
- cards.add(new SetCardInfo("Urborg Elf", 90, Rarity.COMMON, mage.cards.u.UrborgElf.class));
- cards.add(new SetCardInfo("Urborg Uprising", 53, Rarity.COMMON, mage.cards.u.UrborgUprising.class));
- cards.add(new SetCardInfo("Vindicate", 126, Rarity.RARE, mage.cards.v.Vindicate.class));
- cards.add(new SetCardInfo("Vodalian Mystic", 33, Rarity.UNCOMMON, mage.cards.v.VodalianMystic.class));
- cards.add(new SetCardInfo("Whirlpool Drake", 34, Rarity.UNCOMMON, mage.cards.w.WhirlpoolDrake.class));
- cards.add(new SetCardInfo("Whirlpool Rider", 35, Rarity.COMMON, mage.cards.w.WhirlpoolRider.class));
- cards.add(new SetCardInfo("Whirlpool Warrior", 36, Rarity.RARE, mage.cards.w.WhirlpoolWarrior.class));
- cards.add(new SetCardInfo("Wild Research", 72, Rarity.RARE, mage.cards.w.WildResearch.class));
- cards.add(new SetCardInfo("Yavimaya Coast", 143, Rarity.RARE, mage.cards.y.YavimayaCoast.class));
- cards.add(new SetCardInfo("Yavimaya's Embrace", 127, Rarity.RARE, mage.cards.y.YavimayasEmbrace.class));
- }
-}
+package mage.sets;
+
+import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+public final class Apocalypse extends ExpansionSet {
+
+ private static final Apocalypse instance = new Apocalypse();
+
+ public static Apocalypse getInstance() {
+ return instance;
+ }
+
+ private Apocalypse() {
+ super("Apocalypse", "APC", ExpansionSet.buildDate(2001, 5, 1), SetType.EXPANSION);
+ this.blockName = "Invasion";
+ this.parentSet = Invasion.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("Aether Mutation", 91, Rarity.UNCOMMON, mage.cards.a.AetherMutation.class));
+ cards.add(new SetCardInfo("Ana Disciple", 73, Rarity.COMMON, mage.cards.a.AnaDisciple.class));
+ cards.add(new SetCardInfo("Ana Sanctuary", 74, Rarity.UNCOMMON, mage.cards.a.AnaSanctuary.class));
+ cards.add(new SetCardInfo("Anavolver", 75, Rarity.RARE, mage.cards.a.Anavolver.class));
+ cards.add(new SetCardInfo("Angelfire Crusader", 1, Rarity.COMMON, mage.cards.a.AngelfireCrusader.class));
+ cards.add(new SetCardInfo("Battlefield Forge", 139, Rarity.RARE, mage.cards.b.BattlefieldForge.class));
+ cards.add(new SetCardInfo("Bloodfire Colossus", 55, Rarity.RARE, mage.cards.b.BloodfireColossus.class));
+ cards.add(new SetCardInfo("Bloodfire Dwarf", 56, Rarity.COMMON, mage.cards.b.BloodfireDwarf.class));
+ cards.add(new SetCardInfo("Bloodfire Infusion", 57, Rarity.COMMON, mage.cards.b.BloodfireInfusion.class));
+ cards.add(new SetCardInfo("Bloodfire Kavu", 58, Rarity.UNCOMMON, mage.cards.b.BloodfireKavu.class));
+ cards.add(new SetCardInfo("Bog Gnarr", 76, Rarity.COMMON, mage.cards.b.BogGnarr.class));
+ 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));
+ cards.add(new SetCardInfo("Coastal Drake", 22, Rarity.COMMON, mage.cards.c.CoastalDrake.class));
+ cards.add(new SetCardInfo("Consume Strength", 93, Rarity.COMMON, mage.cards.c.ConsumeStrength.class));
+ cards.add(new SetCardInfo("Cromat", 94, Rarity.RARE, mage.cards.c.Cromat.class));
+ cards.add(new SetCardInfo("Dead Ringers", 37, Rarity.COMMON, mage.cards.d.DeadRingers.class));
+ cards.add(new SetCardInfo("Death Grasp", 95, Rarity.RARE, mage.cards.d.DeathGrasp.class));
+ cards.add(new SetCardInfo("Death Mutation", 96, Rarity.UNCOMMON, mage.cards.d.DeathMutation.class));
+ cards.add(new SetCardInfo("Dega Disciple", 4, Rarity.COMMON, mage.cards.d.DegaDisciple.class));
+ cards.add(new SetCardInfo("Dega Sanctuary", 5, Rarity.UNCOMMON, mage.cards.d.DegaSanctuary.class));
+ cards.add(new SetCardInfo("Degavolver", 6, Rarity.RARE, mage.cards.d.Degavolver.class));
+ cards.add(new SetCardInfo("Desolation Angel", 38, Rarity.RARE, mage.cards.d.DesolationAngel.class));
+ cards.add(new SetCardInfo("Desolation Giant", 59, Rarity.RARE, mage.cards.d.DesolationGiant.class));
+ cards.add(new SetCardInfo("Diversionary Tactics", 7, Rarity.UNCOMMON, mage.cards.d.DiversionaryTactics.class));
+ cards.add(new SetCardInfo("Divine Light", 8, Rarity.COMMON, mage.cards.d.DivineLight.class));
+ cards.add(new SetCardInfo("Dodecapod", 134, Rarity.UNCOMMON, mage.cards.d.Dodecapod.class));
+ cards.add(new SetCardInfo("Dragon Arch", 135, Rarity.UNCOMMON, mage.cards.d.DragonArch.class));
+ cards.add(new SetCardInfo("Dwarven Landslide", 60, Rarity.COMMON, mage.cards.d.DwarvenLandslide.class));
+ cards.add(new SetCardInfo("Dwarven Patrol", 61, Rarity.UNCOMMON, mage.cards.d.DwarvenPatrol.class));
+ cards.add(new SetCardInfo("Ebony Treefolk", 97, Rarity.UNCOMMON, mage.cards.e.EbonyTreefolk.class));
+ cards.add(new SetCardInfo("Enlistment Officer", 9, Rarity.UNCOMMON, mage.cards.e.EnlistmentOfficer.class));
+ cards.add(new SetCardInfo("Evasive Action", 23, Rarity.UNCOMMON, mage.cards.e.EvasiveAction.class));
+ cards.add(new SetCardInfo("Fervent Charge", 98, Rarity.RARE, mage.cards.f.FerventCharge.class));
+ cards.add(new SetCardInfo("Fire // Ice", 128, Rarity.UNCOMMON, mage.cards.f.FireIce.class));
+ cards.add(new SetCardInfo("Flowstone Charger", 99, Rarity.UNCOMMON, mage.cards.f.FlowstoneCharger.class));
+ cards.add(new SetCardInfo("Foul Presence", 39, Rarity.UNCOMMON, mage.cards.f.FoulPresence.class));
+ cards.add(new SetCardInfo("Fungal Shambler", 100, Rarity.RARE, mage.cards.f.FungalShambler.class));
+ cards.add(new SetCardInfo("Gaea's Skyfolk", 101, Rarity.COMMON, mage.cards.g.GaeasSkyfolk.class));
+ cards.add(new SetCardInfo("Gerrard Capashen", 11, Rarity.RARE, mage.cards.g.GerrardCapashen.class));
+ cards.add(new SetCardInfo("Gerrard's Verdict", 102, Rarity.UNCOMMON, mage.cards.g.GerrardsVerdict.class));
+ cards.add(new SetCardInfo("Glade Gnarr", 78, Rarity.COMMON, mage.cards.g.GladeGnarr.class));
+ cards.add(new SetCardInfo("Goblin Legionnaire", 103, Rarity.COMMON, mage.cards.g.GoblinLegionnaire.class));
+ cards.add(new SetCardInfo("Goblin Ringleader", 62, Rarity.UNCOMMON, mage.cards.g.GoblinRingleader.class));
+ cards.add(new SetCardInfo("Goblin Trenches", 104, Rarity.RARE, mage.cards.g.GoblinTrenches.class));
+ cards.add(new SetCardInfo("Grave Defiler", 40, Rarity.UNCOMMON, mage.cards.g.GraveDefiler.class));
+ cards.add(new SetCardInfo("Guided Passage", 105, Rarity.RARE, mage.cards.g.GuidedPassage.class));
+ cards.add(new SetCardInfo("Haunted Angel", 12, Rarity.UNCOMMON, mage.cards.h.HauntedAngel.class));
+ cards.add(new SetCardInfo("Helionaut", 13, Rarity.COMMON, mage.cards.h.Helionaut.class));
+ cards.add(new SetCardInfo("Ice Cave", 24, Rarity.RARE, mage.cards.i.IceCave.class));
+ cards.add(new SetCardInfo("Illuminate", 63, Rarity.UNCOMMON, mage.cards.i.Illuminate.class));
+ cards.add(new SetCardInfo("Illusion // Reality", 129, Rarity.UNCOMMON, mage.cards.i.IllusionReality.class));
+ cards.add(new SetCardInfo("Index", 25, Rarity.COMMON, mage.cards.i.Index.class));
+ cards.add(new SetCardInfo("Jaded Response", 26, Rarity.COMMON, mage.cards.j.JadedResponse.class));
+ cards.add(new SetCardInfo("Jilt", 27, Rarity.COMMON, mage.cards.j.Jilt.class));
+ cards.add(new SetCardInfo("Jungle Barrier", 106, Rarity.UNCOMMON, mage.cards.j.JungleBarrier.class));
+ cards.add(new SetCardInfo("Kavu Glider", 64, Rarity.COMMON, mage.cards.k.KavuGlider.class));
+ cards.add(new SetCardInfo("Kavu Howler", 79, Rarity.UNCOMMON, mage.cards.k.KavuHowler.class));
+ cards.add(new SetCardInfo("Kavu Mauler", 80, Rarity.RARE, mage.cards.k.KavuMauler.class));
+ cards.add(new SetCardInfo("Last Caress", 41, Rarity.COMMON, mage.cards.l.LastCaress.class));
+ cards.add(new SetCardInfo("Last Stand", 107, Rarity.RARE, mage.cards.l.LastStand.class));
+ cards.add(new SetCardInfo("Lay of the Land", 81, Rarity.COMMON, mage.cards.l.LayOfTheLand.class));
+ cards.add(new SetCardInfo("Legacy Weapon", 137, Rarity.RARE, mage.cards.l.LegacyWeapon.class));
+ cards.add(new SetCardInfo("Life // Death", 130, Rarity.UNCOMMON, mage.cards.l.LifeDeath.class));
+ cards.add(new SetCardInfo("Lightning Angel", 108, Rarity.RARE, mage.cards.l.LightningAngel.class));
+ cards.add(new SetCardInfo("Living Airship", 28, Rarity.COMMON, mage.cards.l.LivingAirship.class));
+ cards.add(new SetCardInfo("Llanowar Dead", 109, Rarity.COMMON, mage.cards.l.LlanowarDead.class));
+ cards.add(new SetCardInfo("Llanowar Wastes", 141, Rarity.RARE, mage.cards.l.LlanowarWastes.class));
+ cards.add(new SetCardInfo("Manacles of Decay", 14, Rarity.COMMON, mage.cards.m.ManaclesOfDecay.class));
+ cards.add(new SetCardInfo("Martyrs' Tomb", 110, Rarity.UNCOMMON, mage.cards.m.MartyrsTomb.class));
+ cards.add(new SetCardInfo("Mask of Intolerance", 138, Rarity.RARE, mage.cards.m.MaskOfIntolerance.class));
+ cards.add(new SetCardInfo("Minotaur Illusionist", 111, Rarity.UNCOMMON, mage.cards.m.MinotaurIllusionist.class));
+ cards.add(new SetCardInfo("Minotaur Tactician", 65, Rarity.COMMON, mage.cards.m.MinotaurTactician.class));
+ cards.add(new SetCardInfo("Mournful Zombie", 43, Rarity.COMMON, mage.cards.m.MournfulZombie.class));
+ cards.add(new SetCardInfo("Mystic Snake", 112, Rarity.RARE, mage.cards.m.MysticSnake.class));
+ cards.add(new SetCardInfo("Necra Disciple", 44, Rarity.COMMON, mage.cards.n.NecraDisciple.class));
+ cards.add(new SetCardInfo("Necra Sanctuary", 45, Rarity.UNCOMMON, mage.cards.n.NecraSanctuary.class));
+ cards.add(new SetCardInfo("Necravolver", 46, Rarity.RARE, mage.cards.n.Necravolver.class));
+ cards.add(new SetCardInfo("Night // Day", 131, Rarity.UNCOMMON, mage.cards.n.NightDay.class));
+ cards.add(new SetCardInfo("Order // Chaos", 132, Rarity.UNCOMMON, mage.cards.o.OrderChaos.class));
+ cards.add(new SetCardInfo("Orim's Thunder", 15, Rarity.COMMON, mage.cards.o.OrimsThunder.class));
+ cards.add(new SetCardInfo("Overgrown Estate", 113, Rarity.RARE, mage.cards.o.OvergrownEstate.class));
+ cards.add(new SetCardInfo("Penumbra Bobcat", 82, Rarity.COMMON, mage.cards.p.PenumbraBobcat.class));
+ cards.add(new SetCardInfo("Penumbra Kavu", 83, Rarity.UNCOMMON, mage.cards.p.PenumbraKavu.class));
+ cards.add(new SetCardInfo("Penumbra Wurm", 84, Rarity.RARE, mage.cards.p.PenumbraWurm.class));
+ cards.add(new SetCardInfo("Pernicious Deed", 114, Rarity.RARE, mage.cards.p.PerniciousDeed.class));
+ cards.add(new SetCardInfo("Phyrexian Arena", 47, Rarity.RARE, mage.cards.p.PhyrexianArena.class));
+ cards.add(new SetCardInfo("Phyrexian Gargantua", 48, Rarity.UNCOMMON, mage.cards.p.PhyrexianGargantua.class));
+ cards.add(new SetCardInfo("Phyrexian Rager", 49, Rarity.COMMON, mage.cards.p.PhyrexianRager.class));
+ cards.add(new SetCardInfo("Planar Despair", 50, Rarity.RARE, mage.cards.p.PlanarDespair.class));
+ cards.add(new SetCardInfo("Powerstone Minefield", 115, Rarity.RARE, mage.cards.p.PowerstoneMinefield.class));
+ cards.add(new SetCardInfo("Prophetic Bolt", 116, Rarity.RARE, mage.cards.p.PropheticBolt.class));
+ cards.add(new SetCardInfo("Putrid Warrior", 117, Rarity.COMMON, mage.cards.p.PutridWarrior.class));
+ cards.add(new SetCardInfo("Quagmire Druid", 51, Rarity.COMMON, mage.cards.q.QuagmireDruid.class));
+ cards.add(new SetCardInfo("Quicksilver Dagger", 118, Rarity.COMMON, mage.cards.q.QuicksilverDagger.class));
+ cards.add(new SetCardInfo("Raka Disciple", 66, Rarity.COMMON, mage.cards.r.RakaDisciple.class));
+ cards.add(new SetCardInfo("Raka Sanctuary", 67, Rarity.UNCOMMON, mage.cards.r.RakaSanctuary.class));
+ cards.add(new SetCardInfo("Rakavolver", 68, Rarity.RARE, mage.cards.r.Rakavolver.class));
+ cards.add(new SetCardInfo("Razorfin Hunter", 119, Rarity.COMMON, mage.cards.r.RazorfinHunter.class));
+ cards.add(new SetCardInfo("Reef Shaman", 29, Rarity.COMMON, mage.cards.r.ReefShaman.class));
+ cards.add(new SetCardInfo("Savage Gorilla", 85, Rarity.COMMON, mage.cards.s.SavageGorilla.class));
+ cards.add(new SetCardInfo("Shield of Duty and Reason", 16, Rarity.COMMON, mage.cards.s.ShieldOfDutyAndReason.class));
+ cards.add(new SetCardInfo("Shimmering Mirage", 30, Rarity.COMMON, mage.cards.s.ShimmeringMirage.class));
+ cards.add(new SetCardInfo("Shivan Reef", 142, Rarity.RARE, mage.cards.s.ShivanReef.class));
+ cards.add(new SetCardInfo("Smash", 69, Rarity.COMMON, mage.cards.s.Smash.class));
+ cards.add(new SetCardInfo("Soul Link", 120, Rarity.COMMON, mage.cards.s.SoulLink.class));
+ cards.add(new SetCardInfo("Spectral Lynx", 17, Rarity.RARE, mage.cards.s.SpectralLynx.class));
+ cards.add(new SetCardInfo("Spiritmonger", 121, Rarity.RARE, mage.cards.s.Spiritmonger.class));
+ cards.add(new SetCardInfo("Squee's Embrace", 122, Rarity.COMMON, mage.cards.s.SqueesEmbrace.class));
+ cards.add(new SetCardInfo("Squee's Revenge", 123, Rarity.UNCOMMON, mage.cards.s.SqueesRevenge.class));
+ cards.add(new SetCardInfo("Standard Bearer", 18, Rarity.COMMON, mage.cards.s.StandardBearer.class));
+ cards.add(new SetCardInfo("Strength of Night", 86, Rarity.COMMON, mage.cards.s.StrengthOfNight.class));
+ cards.add(new SetCardInfo("Suffocating Blast", 124, Rarity.RARE, mage.cards.s.SuffocatingBlast.class));
+ cards.add(new SetCardInfo("Sylvan Messenger", 87, Rarity.UNCOMMON, mage.cards.s.SylvanMessenger.class));
+ cards.add(new SetCardInfo("Symbiotic Deployment", 88, Rarity.RARE, mage.cards.s.SymbioticDeployment.class));
+ cards.add(new SetCardInfo("Temporal Spring", 125, Rarity.COMMON, mage.cards.t.TemporalSpring.class));
+ cards.add(new SetCardInfo("Tidal Courier", 31, Rarity.UNCOMMON, mage.cards.t.TidalCourier.class));
+ cards.add(new SetCardInfo("Tranquil Path", 89, Rarity.COMMON, mage.cards.t.TranquilPath.class));
+ cards.add(new SetCardInfo("Tundra Kavu", 71, Rarity.COMMON, mage.cards.t.TundraKavu.class));
+ cards.add(new SetCardInfo("Unnatural Selection", 32, Rarity.RARE, mage.cards.u.UnnaturalSelection.class));
+ cards.add(new SetCardInfo("Urborg Elf", 90, Rarity.COMMON, mage.cards.u.UrborgElf.class));
+ cards.add(new SetCardInfo("Urborg Uprising", 53, Rarity.COMMON, mage.cards.u.UrborgUprising.class));
+ cards.add(new SetCardInfo("Vindicate", 126, Rarity.RARE, mage.cards.v.Vindicate.class));
+ cards.add(new SetCardInfo("Vodalian Mystic", 33, Rarity.UNCOMMON, mage.cards.v.VodalianMystic.class));
+ cards.add(new SetCardInfo("Whirlpool Drake", 34, Rarity.UNCOMMON, mage.cards.w.WhirlpoolDrake.class));
+ cards.add(new SetCardInfo("Whirlpool Rider", 35, Rarity.COMMON, mage.cards.w.WhirlpoolRider.class));
+ cards.add(new SetCardInfo("Whirlpool Warrior", 36, Rarity.RARE, mage.cards.w.WhirlpoolWarrior.class));
+ cards.add(new SetCardInfo("Wild Research", 72, Rarity.RARE, mage.cards.w.WildResearch.class));
+ cards.add(new SetCardInfo("Yavimaya Coast", 143, Rarity.RARE, mage.cards.y.YavimayaCoast.class));
+ cards.add(new SetCardInfo("Yavimaya's Embrace", 127, Rarity.RARE, mage.cards.y.YavimayasEmbrace.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ArabianNights.java b/Mage.Sets/src/mage/sets/ArabianNights.java
index 9e9d3f2dc7e..db9a2acd9a1 100644
--- a/Mage.Sets/src/mage/sets/ArabianNights.java
+++ b/Mage.Sets/src/mage/sets/ArabianNights.java
@@ -42,7 +42,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class ArabianNights extends ExpansionSet {
+public final class ArabianNights extends ExpansionSet {
private static final ArabianNights instance = new ArabianNights();
diff --git a/Mage.Sets/src/mage/sets/Archenemy.java b/Mage.Sets/src/mage/sets/Archenemy.java
index 4e52682db2b..f44b94d3201 100644
--- a/Mage.Sets/src/mage/sets/Archenemy.java
+++ b/Mage.Sets/src/mage/sets/Archenemy.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class Archenemy extends ExpansionSet {
+public final class Archenemy extends ExpansionSet {
private static final Archenemy instance = new Archenemy();
diff --git a/Mage.Sets/src/mage/sets/ArchenemyNicolBolas.java b/Mage.Sets/src/mage/sets/ArchenemyNicolBolas.java
index 55ad9c4361a..c78c33cccc4 100644
--- a/Mage.Sets/src/mage/sets/ArchenemyNicolBolas.java
+++ b/Mage.Sets/src/mage/sets/ArchenemyNicolBolas.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class ArchenemyNicolBolas extends ExpansionSet {
+public final class ArchenemyNicolBolas extends ExpansionSet {
private static final ArchenemyNicolBolas instance = new ArchenemyNicolBolas();
diff --git a/Mage.Sets/src/mage/sets/ArenaLeague.java b/Mage.Sets/src/mage/sets/ArenaLeague.java
index 784ed48a441..44c1cd56112 100644
--- a/Mage.Sets/src/mage/sets/ArenaLeague.java
+++ b/Mage.Sets/src/mage/sets/ArenaLeague.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class ArenaLeague extends ExpansionSet {
+public final class ArenaLeague extends ExpansionSet {
private static final ArenaLeague instance = new ArenaLeague();
diff --git a/Mage.Sets/src/mage/sets/AsiaPacificLandProgram.java b/Mage.Sets/src/mage/sets/AsiaPacificLandProgram.java
index e1bb071cea2..7ddb52552ae 100644
--- a/Mage.Sets/src/mage/sets/AsiaPacificLandProgram.java
+++ b/Mage.Sets/src/mage/sets/AsiaPacificLandProgram.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class AsiaPacificLandProgram extends ExpansionSet {
+public final class AsiaPacificLandProgram extends ExpansionSet {
private static final AsiaPacificLandProgram instance = new AsiaPacificLandProgram();
diff --git a/Mage.Sets/src/mage/sets/AvacynRestored.java b/Mage.Sets/src/mage/sets/AvacynRestored.java
index 7ece6c32fe2..707b6a2d9c6 100644
--- a/Mage.Sets/src/mage/sets/AvacynRestored.java
+++ b/Mage.Sets/src/mage/sets/AvacynRestored.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class AvacynRestored extends ExpansionSet {
+public final class AvacynRestored extends ExpansionSet {
private static final AvacynRestored instance = new AvacynRestored();
diff --git a/Mage.Sets/src/mage/sets/BattleForZendikar.java b/Mage.Sets/src/mage/sets/BattleForZendikar.java
index dd1946c145e..7dde1f5ffe5 100644
--- a/Mage.Sets/src/mage/sets/BattleForZendikar.java
+++ b/Mage.Sets/src/mage/sets/BattleForZendikar.java
@@ -40,7 +40,7 @@ import java.util.List;
/**
* @author fireshoes
*/
-public class BattleForZendikar extends ExpansionSet {
+public final class BattleForZendikar extends ExpansionSet {
private static final BattleForZendikar instance = new BattleForZendikar();
diff --git a/Mage.Sets/src/mage/sets/Battlebond.java b/Mage.Sets/src/mage/sets/Battlebond.java
index f50f18b3fe8..2fa0d6e8e5c 100644
--- a/Mage.Sets/src/mage/sets/Battlebond.java
+++ b/Mage.Sets/src/mage/sets/Battlebond.java
@@ -1,62 +1,310 @@
-/*
-* 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author TheElk801
- */
-public class Battlebond extends ExpansionSet {
-
- private static final Battlebond instance = new Battlebond();
-
- public static Battlebond getInstance() {
- return instance;
- }
-
- private Battlebond() {
- super("Battlebond", "BBD", ExpansionSet.buildDate(2018, 6, 8), SetType.SUPPLEMENTAL);
- this.blockName = "Battlebond";
- 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("Bountiful Promenade", 81, Rarity.RARE, mage.cards.b.BountifulPromenade.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class Battlebond extends ExpansionSet {
+
+ private static final Battlebond instance = new Battlebond();
+
+ public static Battlebond getInstance() {
+ return instance;
+ }
+
+ private Battlebond() {
+ super("Battlebond", "BBD", ExpansionSet.buildDate(2018, 6, 8), SetType.SUPPLEMENTAL);
+ this.blockName = "Battlebond";
+ 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("Aim High", 189, Rarity.UNCOMMON, mage.cards.a.AimHigh.class));
+ cards.add(new SetCardInfo("Angel of Retribution", 86, Rarity.UNCOMMON, mage.cards.a.AngelOfRetribution.class));
+ cards.add(new SetCardInfo("Angelic Chorus", 87, Rarity.RARE, mage.cards.a.AngelicChorus.class));
+ cards.add(new SetCardInfo("Angelic Gift", 88, Rarity.COMMON, mage.cards.a.AngelicGift.class));
+ cards.add(new SetCardInfo("Apocalypse Hydra", 217, Rarity.RARE, mage.cards.a.ApocalypseHydra.class));
+ cards.add(new SetCardInfo("Arcane Artisan", 33, Rarity.MYTHIC, mage.cards.a.ArcaneArtisan.class));
+ cards.add(new SetCardInfo("Archfiend of Despair", 44, Rarity.MYTHIC, mage.cards.a.ArchfiendOfDespair.class));
+ cards.add(new SetCardInfo("Archon of Valor's Reach", 74, Rarity.RARE, mage.cards.a.ArchonOfValorsReach.class));
+ cards.add(new SetCardInfo("Arena Rector", 23, Rarity.MYTHIC, mage.cards.a.ArenaRector.class));
+ cards.add(new SetCardInfo("Assassin's Strike", 138, Rarity.UNCOMMON, mage.cards.a.AssassinsStrike.class));
+ cards.add(new SetCardInfo("Assassinate", 139, Rarity.COMMON, mage.cards.a.Assassinate.class));
+ cards.add(new SetCardInfo("Auger Spree", 218, Rarity.COMMON, mage.cards.a.AugerSpree.class));
+ cards.add(new SetCardInfo("Aurora Champion", 24, Rarity.COMMON, mage.cards.a.AuroraChampion.class));
+ cards.add(new SetCardInfo("Azra Bladeseeker", 55, Rarity.COMMON, mage.cards.a.AzraBladeseeker.class));
+ cards.add(new SetCardInfo("Azra Oddsmaker", 75, Rarity.UNCOMMON, mage.cards.a.AzraOddsmaker.class));
+ cards.add(new SetCardInfo("Bathe in Dragonfire", 164, Rarity.COMMON, mage.cards.b.BatheInDragonfire.class));
+ cards.add(new SetCardInfo("Battle Mastery", 89, Rarity.UNCOMMON, mage.cards.b.BattleMastery.class));
+ cards.add(new SetCardInfo("Battle Rampart", 165, Rarity.COMMON, mage.cards.b.BattleRampart.class));
+ cards.add(new SetCardInfo("Battle-Rattle Shaman", 166, Rarity.UNCOMMON, mage.cards.b.BattleRattleShaman.class));
+ cards.add(new SetCardInfo("Beast Within", 190, Rarity.UNCOMMON, mage.cards.b.BeastWithin.class));
+ cards.add(new SetCardInfo("Benthic Giant", 113, Rarity.COMMON, mage.cards.b.BenthicGiant.class));
+ cards.add(new SetCardInfo("Blaring Captain", 14, Rarity.UNCOMMON, mage.cards.b.BlaringCaptain.class));
+ cards.add(new SetCardInfo("Blaring Recruiter", 13, Rarity.UNCOMMON, mage.cards.b.BlaringRecruiter.class));
+ cards.add(new SetCardInfo("Blaze", 167, Rarity.UNCOMMON, mage.cards.b.Blaze.class));
+ cards.add(new SetCardInfo("Blood Feud", 168, Rarity.UNCOMMON, mage.cards.b.BloodFeud.class));
+ cards.add(new SetCardInfo("Bloodborn Scoundrels", 45, Rarity.COMMON, mage.cards.b.BloodbornScoundrels.class));
+ cards.add(new SetCardInfo("Boldwyr Intimidator", 169, Rarity.UNCOMMON, mage.cards.b.BoldwyrIntimidator.class));
+ cards.add(new SetCardInfo("Bonus Round", 56, Rarity.RARE, mage.cards.b.BonusRound.class));
+ cards.add(new SetCardInfo("Borderland Marauder", 170, Rarity.COMMON, mage.cards.b.BorderlandMarauder.class));
+ cards.add(new SetCardInfo("Bountiful Promenade", 81, Rarity.RARE, mage.cards.b.BountifulPromenade.class));
+ cards.add(new SetCardInfo("Bramble Sovereign", 65, Rarity.MYTHIC, mage.cards.b.BrambleSovereign.class));
+ cards.add(new SetCardInfo("Brightling", 25, Rarity.MYTHIC, mage.cards.b.Brightling.class));
+ cards.add(new SetCardInfo("Bring Down", 26, Rarity.UNCOMMON, mage.cards.b.BringDown.class));
+ cards.add(new SetCardInfo("Bull-Rush Bruiser", 57, Rarity.COMMON, mage.cards.b.BullRushBruiser.class));
+ cards.add(new SetCardInfo("Call to Heel", 114, Rarity.COMMON, mage.cards.c.CallToHeel.class));
+ cards.add(new SetCardInfo("Canopy Spider", 191, Rarity.COMMON, mage.cards.c.CanopySpider.class));
+ cards.add(new SetCardInfo("Centaur Healer", 219, Rarity.COMMON, mage.cards.c.CentaurHealer.class));
+ cards.add(new SetCardInfo("Chain Lightning", 171, Rarity.UNCOMMON, mage.cards.c.ChainLightning.class));
+ cards.add(new SetCardInfo("Chakram Retriever", 15, Rarity.UNCOMMON, mage.cards.c.ChakramRetriever.class));
+ cards.add(new SetCardInfo("Chakram Slinger", 16, Rarity.UNCOMMON, mage.cards.c.ChakramSlinger.class));
+ cards.add(new SetCardInfo("Champion of Arashin", 90, Rarity.COMMON, mage.cards.c.ChampionOfArashin.class));
+ cards.add(new SetCardInfo("Charging Binox", 66, Rarity.COMMON, mage.cards.c.ChargingBinox.class));
+ cards.add(new SetCardInfo("Charging Rhino", 192, Rarity.COMMON, mage.cards.c.ChargingRhino.class));
+ cards.add(new SetCardInfo("Cheering Fanatic", 58, Rarity.UNCOMMON, mage.cards.c.CheeringFanatic.class));
+ cards.add(new SetCardInfo("Claustrophobia", 115, Rarity.COMMON, mage.cards.c.Claustrophobia.class));
+ cards.add(new SetCardInfo("Combo Attack", 67, Rarity.COMMON, mage.cards.c.ComboAttack.class));
+ cards.add(new SetCardInfo("Consulate Skygate", 232, Rarity.COMMON, mage.cards.c.ConsulateSkygate.class));
+ cards.add(new SetCardInfo("Coralhelm Guide", 116, Rarity.COMMON, mage.cards.c.CoralhelmGuide.class));
+ cards.add(new SetCardInfo("Cowl Prowler", 193, Rarity.COMMON, mage.cards.c.CowlProwler.class));
+ cards.add(new SetCardInfo("Culling Dais", 233, Rarity.UNCOMMON, mage.cards.c.CullingDais.class));
+ cards.add(new SetCardInfo("Daggerback Basilisk", 194, Rarity.COMMON, mage.cards.d.DaggerbackBasilisk.class));
+ cards.add(new SetCardInfo("Daggerdrome Imp", 140, Rarity.COMMON, mage.cards.d.DaggerdromeImp.class));
+ cards.add(new SetCardInfo("Decorated Champion", 69, Rarity.UNCOMMON, mage.cards.d.DecoratedChampion.class));
+ cards.add(new SetCardInfo("Diabolic Intent", 141, Rarity.RARE, mage.cards.d.DiabolicIntent.class));
+ cards.add(new SetCardInfo("Dinrova Horror", 220, Rarity.UNCOMMON, mage.cards.d.DinrovaHorror.class));
+ cards.add(new SetCardInfo("Doomed Dissenter", 142, Rarity.COMMON, mage.cards.d.DoomedDissenter.class));
+ cards.add(new SetCardInfo("Doomed Traveler", 91, Rarity.COMMON, mage.cards.d.DoomedTraveler.class));
+ cards.add(new SetCardInfo("Doubling Season", 195, Rarity.MYTHIC, mage.cards.d.DoublingSeason.class));
+ cards.add(new SetCardInfo("Dragon Breath", 172, Rarity.UNCOMMON, mage.cards.d.DragonBreath.class));
+ cards.add(new SetCardInfo("Dragon Hatchling", 173, Rarity.COMMON, mage.cards.d.DragonHatchling.class));
+ cards.add(new SetCardInfo("Dwarven Lightsmith", 27, Rarity.COMMON, mage.cards.d.DwarvenLightsmith.class));
+ cards.add(new SetCardInfo("Eager Construct", 234, Rarity.COMMON, mage.cards.e.EagerConstruct.class));
+ cards.add(new SetCardInfo("Earth Elemental", 174, Rarity.COMMON, mage.cards.e.EarthElemental.class));
+ cards.add(new SetCardInfo("Elvish Visionary", 196, Rarity.COMMON, mage.cards.e.ElvishVisionary.class));
+ cards.add(new SetCardInfo("Ember Beast", 175, Rarity.COMMON, mage.cards.e.EmberBeast.class));
+ cards.add(new SetCardInfo("Enduring Scalelord", 221, Rarity.UNCOMMON, mage.cards.e.EnduringScalelord.class));
+ cards.add(new SetCardInfo("Enthralling Victor", 176, Rarity.UNCOMMON, mage.cards.e.EnthrallingVictor.class));
+ cards.add(new SetCardInfo("Evil Twin", 222, Rarity.RARE, mage.cards.e.EvilTwin.class));
+ cards.add(new SetCardInfo("Expedite", 177, Rarity.COMMON, mage.cards.e.Expedite.class));
+ cards.add(new SetCardInfo("Expedition Raptor", 92, Rarity.COMMON, mage.cards.e.ExpeditionRaptor.class));
+ cards.add(new SetCardInfo("Eyeblight Assassin", 143, Rarity.COMMON, mage.cards.e.EyeblightAssassin.class));
+ cards.add(new SetCardInfo("Fan Favorite", 46, Rarity.COMMON, mage.cards.f.FanFavorite.class));
+ cards.add(new SetCardInfo("Feral Hydra", 197, Rarity.UNCOMMON, mage.cards.f.FeralHydra.class));
+ cards.add(new SetCardInfo("Fertile Ground", 198, Rarity.COMMON, mage.cards.f.FertileGround.class));
+ cards.add(new SetCardInfo("Fertilid", 199, Rarity.UNCOMMON, mage.cards.f.Fertilid.class));
+ cards.add(new SetCardInfo("Fill with Fright", 144, Rarity.COMMON, mage.cards.f.FillWithFright.class));
+ cards.add(new SetCardInfo("Flamewave Invoker", 178, Rarity.UNCOMMON, mage.cards.f.FlamewaveInvoker.class));
+ cards.add(new SetCardInfo("Fog Bank", 117, Rarity.UNCOMMON, mage.cards.f.FogBank.class));
+ cards.add(new SetCardInfo("Forest", 254, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Frost Lynx", 118, Rarity.COMMON, mage.cards.f.FrostLynx.class));
+ cards.add(new SetCardInfo("Fumble", 34, Rarity.UNCOMMON, mage.cards.f.Fumble.class));
+ cards.add(new SetCardInfo("Game Plan", 35, Rarity.RARE, mage.cards.g.GamePlan.class));
+ cards.add(new SetCardInfo("Gang Up", 47, Rarity.UNCOMMON, mage.cards.g.GangUp.class));
+ cards.add(new SetCardInfo("Generous Patron", 70, Rarity.RARE, mage.cards.g.GenerousPatron.class));
+ cards.add(new SetCardInfo("Genesis Chamber", 235, Rarity.UNCOMMON, mage.cards.g.GenesisChamber.class));
+ cards.add(new SetCardInfo("Giant Growth", 200, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
+ cards.add(new SetCardInfo("Goblin Razerunners", 179, Rarity.RARE, mage.cards.g.GoblinRazerunners.class));
+ cards.add(new SetCardInfo("Gold-Forged Sentinel", 236, Rarity.UNCOMMON, mage.cards.g.GoldForgedSentinel.class));
+ cards.add(new SetCardInfo("Greater Good", 201, Rarity.RARE, mage.cards.g.GreaterGood.class));
+ cards.add(new SetCardInfo("Grotesque Mutation", 145, Rarity.COMMON, mage.cards.g.GrotesqueMutation.class));
+ cards.add(new SetCardInfo("Grothama, All-Devouring", 71, Rarity.MYTHIC, mage.cards.g.GrothamaAllDevouring.class));
+ cards.add(new SetCardInfo("Gwafa Hazid, Profiteer", 223, Rarity.RARE, mage.cards.g.GwafaHazidProfiteer.class));
+ cards.add(new SetCardInfo("Hand of Silumgar", 146, Rarity.COMMON, mage.cards.h.HandOfSilumgar.class));
+ cards.add(new SetCardInfo("Hexplate Golem", 237, Rarity.COMMON, mage.cards.h.HexplateGolem.class));
+ cards.add(new SetCardInfo("Huddle Up", 36, Rarity.COMMON, mage.cards.h.HuddleUp.class));
+ cards.add(new SetCardInfo("Hunted Wumpus", 202, Rarity.UNCOMMON, mage.cards.h.HuntedWumpus.class));
+ cards.add(new SetCardInfo("Impetuous Protege", 19, Rarity.UNCOMMON, mage.cards.i.ImpetuousProtege.class));
+ cards.add(new SetCardInfo("Impulse", 119, Rarity.COMMON, mage.cards.i.Impulse.class));
+ cards.add(new SetCardInfo("Inner Demon", 48, Rarity.UNCOMMON, mage.cards.i.InnerDemon.class));
+ cards.add(new SetCardInfo("Island", 251, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Jelenn Sphinx", 224, Rarity.UNCOMMON, mage.cards.j.JelennSphinx.class));
+ cards.add(new SetCardInfo("Jubilant Mascot", 28, Rarity.UNCOMMON, mage.cards.j.JubilantMascot.class));
+ cards.add(new SetCardInfo("Juggernaut", 238, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
+ cards.add(new SetCardInfo("Jungle Wayfinder", 72, Rarity.COMMON, mage.cards.j.JungleWayfinder.class));
+ cards.add(new SetCardInfo("Karametra's Favor", 203, Rarity.UNCOMMON, mage.cards.k.KarametrasFavor.class));
+ cards.add(new SetCardInfo("Khorvath Brightflame", 9, Rarity.RARE, mage.cards.k.KhorvathBrightflame.class));
+ cards.add(new SetCardInfo("Khorvath's Fury", 59, Rarity.RARE, mage.cards.k.KhorvathsFury.class));
+ cards.add(new SetCardInfo("Kiss of the Amesha", 225, Rarity.UNCOMMON, mage.cards.k.KissOfTheAmesha.class));
+ cards.add(new SetCardInfo("Kitesail Corsair", 120, Rarity.COMMON, mage.cards.k.KitesailCorsair.class));
+ cards.add(new SetCardInfo("Kor Spiritdancer", 93, Rarity.RARE, mage.cards.k.KorSpiritdancer.class));
+ cards.add(new SetCardInfo("Kraken Hatchling", 121, Rarity.COMMON, mage.cards.k.KrakenHatchling.class));
+ cards.add(new SetCardInfo("Kraul Warrior", 204, Rarity.COMMON, mage.cards.k.KraulWarrior.class));
+ cards.add(new SetCardInfo("Krav, the Unredeemed", 4, Rarity.RARE, mage.cards.k.KravTheUnredeemed.class));
+ cards.add(new SetCardInfo("Land Tax", 94, Rarity.MYTHIC, mage.cards.l.LandTax.class));
+ cards.add(new SetCardInfo("Last Gasp", 147, Rarity.COMMON, mage.cards.l.LastGasp.class));
+ cards.add(new SetCardInfo("Last One Standing", 76, Rarity.RARE, mage.cards.l.LastOneStanding.class));
+ cards.add(new SetCardInfo("Lava-Field Overlord", 60, Rarity.UNCOMMON, mage.cards.l.LavaFieldOverlord.class));
+ cards.add(new SetCardInfo("Lead by Example", 205, Rarity.COMMON, mage.cards.l.LeadByExample.class));
+ cards.add(new SetCardInfo("Ley Weaver", 21, Rarity.UNCOMMON, mage.cards.l.LeyWeaver.class));
+ cards.add(new SetCardInfo("Lightning Talons", 180, Rarity.COMMON, mage.cards.l.LightningTalons.class));
+ cards.add(new SetCardInfo("Lightwalker", 95, Rarity.COMMON, mage.cards.l.Lightwalker.class));
+ cards.add(new SetCardInfo("Liturgy of Blood", 148, Rarity.COMMON, mage.cards.l.LiturgyOfBlood.class));
+ cards.add(new SetCardInfo("Long Road Home", 96, Rarity.UNCOMMON, mage.cards.l.LongRoadHome.class));
+ cards.add(new SetCardInfo("Lore Weaver", 22, Rarity.UNCOMMON, mage.cards.l.LoreWeaver.class));
+ cards.add(new SetCardInfo("Loyal Pegasus", 97, Rarity.UNCOMMON, mage.cards.l.LoyalPegasus.class));
cards.add(new SetCardInfo("Luxury Suite", 82, Rarity.RARE, mage.cards.l.LuxurySuite.class));
+ cards.add(new SetCardInfo("Magma Hellion", 61, Rarity.COMMON, mage.cards.m.MagmaHellion.class));
+ cards.add(new SetCardInfo("Magmatic Force", 181, Rarity.RARE, mage.cards.m.MagmaticForce.class));
+ cards.add(new SetCardInfo("Magus of the Candelabra", 206, Rarity.RARE, mage.cards.m.MagusOfTheCandelabra.class));
+ cards.add(new SetCardInfo("Mangara of Corondor", 98, Rarity.RARE, mage.cards.m.MangaraOfCorondor.class));
+ cards.add(new SetCardInfo("Midnight Guard", 99, Rarity.COMMON, mage.cards.m.MidnightGuard.class));
+ cards.add(new SetCardInfo("Millennial Gargoyle", 239, Rarity.COMMON, mage.cards.m.MillennialGargoyle.class));
+ cards.add(new SetCardInfo("Mind's Eye", 240, Rarity.RARE, mage.cards.m.MindsEye.class));
+ cards.add(new SetCardInfo("Mindblade Render", 49, Rarity.RARE, mage.cards.m.MindbladeRender.class));
+ cards.add(new SetCardInfo("Morbid Curiosity", 149, Rarity.UNCOMMON, mage.cards.m.MorbidCuriosity.class));
cards.add(new SetCardInfo("Morphic Pool", 83, Rarity.RARE, mage.cards.m.MorphicPool.class));
+ cards.add(new SetCardInfo("Mountain", 253, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mycosynth Lattice", 241, Rarity.MYTHIC, mage.cards.m.MycosynthLattice.class));
+ cards.add(new SetCardInfo("Mystic Confluence", 122, Rarity.RARE, mage.cards.m.MysticConfluence.class));
+ cards.add(new SetCardInfo("Najeela, the Blade-Blossom", 62, Rarity.MYTHIC, mage.cards.n.NajeelaTheBladeBlossom.class));
+ cards.add(new SetCardInfo("Negate", 123, Rarity.COMMON, mage.cards.n.Negate.class));
+ cards.add(new SetCardInfo("Night Market Guard", 242, Rarity.COMMON, mage.cards.n.NightMarketGuard.class));
+ cards.add(new SetCardInfo("Nimbus Champion", 37, Rarity.UNCOMMON, mage.cards.n.NimbusChampion.class));
+ cards.add(new SetCardInfo("Nimbus of the Isles", 124, Rarity.COMMON, mage.cards.n.NimbusOfTheIsles.class));
+ cards.add(new SetCardInfo("Nirkana Revenant", 150, Rarity.MYTHIC, mage.cards.n.NirkanaRevenant.class));
+ cards.add(new SetCardInfo("Noosegraf Mob", 151, Rarity.RARE, mage.cards.n.NoosegrafMob.class));
+ cards.add(new SetCardInfo("Noxious Dragon", 152, Rarity.UNCOMMON, mage.cards.n.NoxiousDragon.class));
+ cards.add(new SetCardInfo("Nyxathid", 153, Rarity.RARE, mage.cards.n.Nyxathid.class));
+ cards.add(new SetCardInfo("Okaun, Eye of Chaos", 6, Rarity.RARE, mage.cards.o.OkaunEyeOfChaos.class));
+ cards.add(new SetCardInfo("Omenspeaker", 125, Rarity.COMMON, mage.cards.o.Omenspeaker.class));
+ cards.add(new SetCardInfo("Opportunity", 126, Rarity.UNCOMMON, mage.cards.o.Opportunity.class));
+ cards.add(new SetCardInfo("Oracle's Insight", 127, Rarity.UNCOMMON, mage.cards.o.OraclesInsight.class));
+ cards.add(new SetCardInfo("Oreskos Explorer", 100, Rarity.UNCOMMON, mage.cards.o.OreskosExplorer.class));
+ cards.add(new SetCardInfo("Out of Bounds", 38, Rarity.UNCOMMON, mage.cards.o.OutOfBounds.class));
+ cards.add(new SetCardInfo("Pacifism", 101, Rarity.COMMON, mage.cards.p.Pacifism.class));
+ cards.add(new SetCardInfo("Painful Lesson", 154, Rarity.COMMON, mage.cards.p.PainfulLesson.class));
+ cards.add(new SetCardInfo("Pathmaker Initiate", 182, Rarity.COMMON, mage.cards.p.PathmakerInitiate.class));
+ cards.add(new SetCardInfo("Peace Strider", 243, Rarity.COMMON, mage.cards.p.PeaceStrider.class));
+ cards.add(new SetCardInfo("Peregrine Drake", 128, Rarity.UNCOMMON, mage.cards.p.PeregrineDrake.class));
+ cards.add(new SetCardInfo("Phantom Warrior", 129, Rarity.UNCOMMON, mage.cards.p.PhantomWarrior.class));
+ cards.add(new SetCardInfo("Pierce Strider", 244, Rarity.COMMON, mage.cards.p.PierceStrider.class));
+ cards.add(new SetCardInfo("Pir's Whim", 73, Rarity.RARE, mage.cards.p.PirsWhim.class));
+ cards.add(new SetCardInfo("Pir, Imaginative Rascal", 11, Rarity.RARE, mage.cards.p.PirImaginativeRascal.class));
+ cards.add(new SetCardInfo("Plains", 250, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plated Crusher", 207, Rarity.UNCOMMON, mage.cards.p.PlatedCrusher.class));
+ cards.add(new SetCardInfo("Play of the Game", 29, Rarity.RARE, mage.cards.p.PlayOfTheGame.class));
+ cards.add(new SetCardInfo("Prakhata Club Security", 155, Rarity.COMMON, mage.cards.p.PrakhataClubSecurity.class));
+ cards.add(new SetCardInfo("Primal Huntbeast", 208, Rarity.COMMON, mage.cards.p.PrimalHuntbeast.class));
+ cards.add(new SetCardInfo("Proud Mentor", 20, Rarity.UNCOMMON, mage.cards.p.ProudMentor.class));
+ cards.add(new SetCardInfo("Pulse of Murasa", 209, Rarity.UNCOMMON, mage.cards.p.PulseOfMurasa.class));
+ cards.add(new SetCardInfo("Quest for the Gravelord", 156, Rarity.UNCOMMON, mage.cards.q.QuestForTheGravelord.class));
+ cards.add(new SetCardInfo("Raptor Companion", 102, Rarity.COMMON, mage.cards.r.RaptorCompanion.class));
+ cards.add(new SetCardInfo("Rebuke", 103, Rarity.COMMON, mage.cards.r.Rebuke.class));
+ cards.add(new SetCardInfo("Reckless Reveler", 183, Rarity.COMMON, mage.cards.r.RecklessReveler.class));
+ cards.add(new SetCardInfo("Reckless Scholar", 130, Rarity.UNCOMMON, mage.cards.r.RecklessScholar.class));
+ cards.add(new SetCardInfo("Regna's Sanction", 30, Rarity.RARE, mage.cards.r.RegnasSanction.class));
+ cards.add(new SetCardInfo("Regna, the Redeemer", 3, Rarity.RARE, mage.cards.r.RegnaTheRedeemer.class));
+ cards.add(new SetCardInfo("Relentless Hunter", 226, Rarity.UNCOMMON, mage.cards.r.RelentlessHunter.class));
+ cards.add(new SetCardInfo("Return to the Earth", 210, Rarity.COMMON, mage.cards.r.ReturnToTheEarth.class));
+ cards.add(new SetCardInfo("Rhox Brute", 227, Rarity.COMMON, mage.cards.r.RhoxBrute.class));
+ cards.add(new SetCardInfo("Riptide Crab", 228, Rarity.COMMON, mage.cards.r.RiptideCrab.class));
+ cards.add(new SetCardInfo("Rotfeaster Maggot", 157, Rarity.COMMON, mage.cards.r.RotfeasterMaggot.class));
+ cards.add(new SetCardInfo("Rowan Kenrith", 2, Rarity.MYTHIC, mage.cards.r.RowanKenrith.class));
+ cards.add(new SetCardInfo("Royal Trooper", 104, Rarity.COMMON, mage.cards.r.RoyalTrooper.class));
+ cards.add(new SetCardInfo("Rushblade Commander", 77, Rarity.UNCOMMON, mage.cards.r.RushbladeCommander.class));
+ cards.add(new SetCardInfo("Saddleback Lagac", 211, Rarity.COMMON, mage.cards.s.SaddlebackLagac.class));
+ cards.add(new SetCardInfo("Saltwater Stalwart", 39, Rarity.COMMON, mage.cards.s.SaltwaterStalwart.class));
+ cards.add(new SetCardInfo("Savage Ventmaw", 229, Rarity.UNCOMMON, mage.cards.s.SavageVentmaw.class));
+ cards.add(new SetCardInfo("Screeching Buzzard", 158, Rarity.COMMON, mage.cards.s.ScreechingBuzzard.class));
cards.add(new SetCardInfo("Sea of Clouds", 84, Rarity.RARE, mage.cards.s.SeaOfClouds.class));
+ cards.add(new SetCardInfo("Seedborn Muse", 212, Rarity.RARE, mage.cards.s.SeedbornMuse.class));
+ cards.add(new SetCardInfo("Seer's Lantern", 245, Rarity.COMMON, mage.cards.s.SeersLantern.class));
+ cards.add(new SetCardInfo("Sentinel Tower", 79, Rarity.RARE, mage.cards.s.SentinelTower.class));
+ cards.add(new SetCardInfo("Shambling Ghoul", 159, Rarity.COMMON, mage.cards.s.ShamblingGhoul.class));
+ cards.add(new SetCardInfo("Shock", 184, Rarity.COMMON, mage.cards.s.Shock.class));
+ cards.add(new SetCardInfo("Shoulder to Shoulder", 105, Rarity.COMMON, mage.cards.s.ShoulderToShoulder.class));
+ cards.add(new SetCardInfo("Sickle Dancer", 50, Rarity.COMMON, mage.cards.s.SickleDancer.class));
+ cards.add(new SetCardInfo("Silverchase Fox", 106, Rarity.COMMON, mage.cards.s.SilverchaseFox.class));
+ cards.add(new SetCardInfo("Skyshroud Claim", 213, Rarity.COMMON, mage.cards.s.SkyshroudClaim.class));
+ cards.add(new SetCardInfo("Skystreamer", 31, Rarity.COMMON, mage.cards.s.Skystreamer.class));
+ cards.add(new SetCardInfo("Slum Reaper", 160, Rarity.UNCOMMON, mage.cards.s.SlumReaper.class));
+ cards.add(new SetCardInfo("Soaring Show-Off", 40, Rarity.COMMON, mage.cards.s.SoaringShowOff.class));
+ cards.add(new SetCardInfo("Solemn Offering", 107, Rarity.UNCOMMON, mage.cards.s.SolemnOffering.class));
+ cards.add(new SetCardInfo("Soulblade Corrupter", 17, Rarity.UNCOMMON, mage.cards.s.SoulbladeCorrupter.class));
+ cards.add(new SetCardInfo("Soulblade Renewer", 18, Rarity.UNCOMMON, mage.cards.s.SoulbladeRenewer.class));
+ cards.add(new SetCardInfo("Sower of Temptation", 131, Rarity.RARE, mage.cards.s.SowerOfTemptation.class));
+ cards.add(new SetCardInfo("Sparring Mummy", 108, Rarity.COMMON, mage.cards.s.SparringMummy.class));
+ cards.add(new SetCardInfo("Spectral Searchlight", 246, Rarity.UNCOMMON, mage.cards.s.SpectralSearchlight.class));
+ cards.add(new SetCardInfo("Spell Snare", 132, Rarity.UNCOMMON, mage.cards.s.SpellSnare.class));
+ cards.add(new SetCardInfo("Spellseeker", 41, Rarity.RARE, mage.cards.s.Spellseeker.class));
+ cards.add(new SetCardInfo("Spellweaver Duo", 42, Rarity.COMMON, mage.cards.s.SpellweaverDuo.class));
cards.add(new SetCardInfo("Spire Garden", 85, Rarity.RARE, mage.cards.s.SpireGarden.class));
- }
-}
+ cards.add(new SetCardInfo("Stadium Vendors", 63, Rarity.COMMON, mage.cards.s.StadiumVendors.class));
+ cards.add(new SetCardInfo("Steppe Glider", 109, Rarity.UNCOMMON, mage.cards.s.SteppeGlider.class));
+ cards.add(new SetCardInfo("Stolen Strategy", 64, Rarity.RARE, mage.cards.s.StolenStrategy.class));
+ cards.add(new SetCardInfo("Stone Golem", 247, Rarity.COMMON, mage.cards.s.StoneGolem.class));
+ cards.add(new SetCardInfo("Stunning Reversal", 51, Rarity.MYTHIC, mage.cards.s.StunningReversal.class));
+ cards.add(new SetCardInfo("Swamp", 252, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swarm of Bloodflies", 161, Rarity.UNCOMMON, mage.cards.s.SwarmOfBloodflies.class));
+ cards.add(new SetCardInfo("Switcheroo", 133, Rarity.UNCOMMON, mage.cards.s.Switcheroo.class));
+ cards.add(new SetCardInfo("Swords to Plowshares", 110, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
+ cards.add(new SetCardInfo("Sylvia Brightspear", 10, Rarity.RARE, mage.cards.s.SylviaBrightspear.class));
+ cards.add(new SetCardInfo("Take Up Arms", 111, Rarity.UNCOMMON, mage.cards.t.TakeUpArms.class));
+ cards.add(new SetCardInfo("Tandem Tactics", 112, Rarity.COMMON, mage.cards.t.TandemTactics.class));
+ cards.add(new SetCardInfo("Tavern Swindler", 162, Rarity.UNCOMMON, mage.cards.t.TavernSwindler.class));
+ cards.add(new SetCardInfo("Tenacious Dead", 163, Rarity.UNCOMMON, mage.cards.t.TenaciousDead.class));
+ cards.add(new SetCardInfo("The Crowd Goes Wild", 68, Rarity.UNCOMMON, mage.cards.t.TheCrowdGoesWild.class));
+ cards.add(new SetCardInfo("Thrasher Brute", 52, Rarity.UNCOMMON, mage.cards.t.ThrasherBrute.class));
+ cards.add(new SetCardInfo("Thrilling Encore", 53, Rarity.RARE, mage.cards.t.ThrillingEncore.class));
+ cards.add(new SetCardInfo("Thunder Strike", 185, Rarity.COMMON, mage.cards.t.ThunderStrike.class));
+ cards.add(new SetCardInfo("Tidespout Tyrant", 134, Rarity.RARE, mage.cards.t.TidespoutTyrant.class));
+ cards.add(new SetCardInfo("Together Forever", 32, Rarity.RARE, mage.cards.t.TogetherForever.class));
+ cards.add(new SetCardInfo("Toothy, Imaginary Friend", 12, Rarity.RARE, mage.cards.t.ToothyImaginaryFriend.class));
+ cards.add(new SetCardInfo("Totally Lost", 135, Rarity.COMMON, mage.cards.t.TotallyLost.class));
+ cards.add(new SetCardInfo("True-Name Nemesis", 136, Rarity.MYTHIC, mage.cards.t.TrueNameNemesis.class));
+ cards.add(new SetCardInfo("Trumpet Blast", 186, Rarity.UNCOMMON, mage.cards.t.TrumpetBlast.class));
+ cards.add(new SetCardInfo("Tyrant's Machine", 248, Rarity.COMMON, mage.cards.t.TyrantsMachine.class));
+ cards.add(new SetCardInfo("Unflinching Courage", 230, Rarity.UNCOMMON, mage.cards.u.UnflinchingCourage.class));
+ cards.add(new SetCardInfo("Urborg Drake", 231, Rarity.COMMON, mage.cards.u.UrborgDrake.class));
+ cards.add(new SetCardInfo("Vampire Charmseeker", 78, Rarity.UNCOMMON, mage.cards.v.VampireCharmseeker.class));
+ cards.add(new SetCardInfo("Veteran Explorer", 214, Rarity.UNCOMMON, mage.cards.v.VeteranExplorer.class));
+ cards.add(new SetCardInfo("Victory Chimes", 80, Rarity.RARE, mage.cards.v.VictoryChimes.class));
+ cards.add(new SetCardInfo("Vigor", 215, Rarity.RARE, mage.cards.v.Vigor.class));
+ cards.add(new SetCardInfo("Virtus the Veiled", 7, Rarity.RARE, mage.cards.v.VirtusTheVeiled.class));
+ cards.add(new SetCardInfo("Virtus's Maneuver", 54, Rarity.RARE, mage.cards.v.VirtussManeuver.class));
+ cards.add(new SetCardInfo("Wandering Wolf", 216, Rarity.COMMON, mage.cards.w.WanderingWolf.class));
+ cards.add(new SetCardInfo("War's Toll", 187, Rarity.RARE, mage.cards.w.WarsToll.class));
+ cards.add(new SetCardInfo("Watercourser", 137, Rarity.COMMON, mage.cards.w.Watercourser.class));
+ cards.add(new SetCardInfo("Will Kenrith", 1, Rarity.MYTHIC, mage.cards.w.WillKenrith.class));
+ cards.add(new SetCardInfo("Wrap in Flames", 188, Rarity.COMMON, mage.cards.w.WrapInFlames.class));
+ cards.add(new SetCardInfo("Yotian Soldier", 249, Rarity.COMMON, mage.cards.y.YotianSoldier.class));
+ cards.add(new SetCardInfo("Zndrsplt's Judgment", 43, Rarity.RARE, mage.cards.z.ZndrspltsJudgment.class));
+ cards.add(new SetCardInfo("Zndrsplt, Eye of Wisdom", 5, Rarity.RARE, mage.cards.z.ZndrspltEyeOfWisdom.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/BetrayersOfKamigawa.java b/Mage.Sets/src/mage/sets/BetrayersOfKamigawa.java
index d950e678eff..29202d557b0 100644
--- a/Mage.Sets/src/mage/sets/BetrayersOfKamigawa.java
+++ b/Mage.Sets/src/mage/sets/BetrayersOfKamigawa.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class BetrayersOfKamigawa extends ExpansionSet {
+public final class BetrayersOfKamigawa extends ExpansionSet {
private static final BetrayersOfKamigawa instance = new BetrayersOfKamigawa();
diff --git a/Mage.Sets/src/mage/sets/BlessedVsCursed.java b/Mage.Sets/src/mage/sets/BlessedVsCursed.java
index b86613d97bb..9244f85da7a 100644
--- a/Mage.Sets/src/mage/sets/BlessedVsCursed.java
+++ b/Mage.Sets/src/mage/sets/BlessedVsCursed.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class BlessedVsCursed extends ExpansionSet {
+public final class BlessedVsCursed extends ExpansionSet {
private static final BlessedVsCursed instance = new BlessedVsCursed();
diff --git a/Mage.Sets/src/mage/sets/BornOfTheGods.java b/Mage.Sets/src/mage/sets/BornOfTheGods.java
index 87f0768b014..039c2c52d48 100644
--- a/Mage.Sets/src/mage/sets/BornOfTheGods.java
+++ b/Mage.Sets/src/mage/sets/BornOfTheGods.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class BornOfTheGods extends ExpansionSet {
+public final class BornOfTheGods extends ExpansionSet {
private static final BornOfTheGods instance = new BornOfTheGods();
diff --git a/Mage.Sets/src/mage/sets/ChampionsOfKamigawa.java b/Mage.Sets/src/mage/sets/ChampionsOfKamigawa.java
index a1e51043d15..7a61cbb5dae 100644
--- a/Mage.Sets/src/mage/sets/ChampionsOfKamigawa.java
+++ b/Mage.Sets/src/mage/sets/ChampionsOfKamigawa.java
@@ -5,7 +5,7 @@ import mage.cards.b.BrothersYamazaki;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class ChampionsOfKamigawa extends ExpansionSet {
+public final class ChampionsOfKamigawa extends ExpansionSet {
private static final ChampionsOfKamigawa instance = new ChampionsOfKamigawa();
diff --git a/Mage.Sets/src/mage/sets/Champs.java b/Mage.Sets/src/mage/sets/Champs.java
index b6bc28ce607..772186d034d 100644
--- a/Mage.Sets/src/mage/sets/Champs.java
+++ b/Mage.Sets/src/mage/sets/Champs.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class Champs extends ExpansionSet {
+public final class Champs extends ExpansionSet {
private static final Champs instance = new Champs();
diff --git a/Mage.Sets/src/mage/sets/Chronicles.java b/Mage.Sets/src/mage/sets/Chronicles.java
index 64bc7c7c0e0..8870b6faa8e 100644
--- a/Mage.Sets/src/mage/sets/Chronicles.java
+++ b/Mage.Sets/src/mage/sets/Chronicles.java
@@ -1,174 +1,174 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author LevelX2
- */
-public class Chronicles extends ExpansionSet {
-
- private static final Chronicles instance = new Chronicles();
-
- public static Chronicles getInstance() {
- return instance;
- }
-
- private Chronicles() {
- super("Chronicles", "CHR", ExpansionSet.buildDate(1995, 6, 1), SetType.SUPPLEMENTAL);
- this.blockName = "Reprint";
- this.hasBasicLands = false;
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 9;
- this.numBoosterUncommon = 2;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Abu Ja'far", 57, Rarity.UNCOMMON, mage.cards.a.AbuJafar.class));
- cards.add(new SetCardInfo("Active Volcano", 43, Rarity.COMMON, mage.cards.a.ActiveVolcano.class));
- cards.add(new SetCardInfo("Akron Legionnaire", 58, Rarity.RARE, mage.cards.a.AkronLegionnaire.class));
- cards.add(new SetCardInfo("Aladdin", 44, Rarity.RARE, mage.cards.a.Aladdin.class));
- cards.add(new SetCardInfo("Angelic Voices", 59, Rarity.RARE, mage.cards.a.AngelicVoices.class));
- cards.add(new SetCardInfo("Arcades Sabboth", 106, Rarity.RARE, mage.cards.a.ArcadesSabboth.class));
- cards.add(new SetCardInfo("Arena of the Ancients", 71, Rarity.RARE, mage.cards.a.ArenaOfTheAncients.class));
- cards.add(new SetCardInfo("Argothian Pixies", 29, Rarity.COMMON, mage.cards.a.ArgothianPixies.class));
- cards.add(new SetCardInfo("Ashnod's Altar", 72, Rarity.COMMON, mage.cards.a.AshnodsAltar.class));
- cards.add(new SetCardInfo("Ashnod's Transmogrant", 73, Rarity.COMMON, mage.cards.a.AshnodsTransmogrant.class));
- cards.add(new SetCardInfo("Axelrod Gunnarson", 107, Rarity.RARE, mage.cards.a.AxelrodGunnarson.class));
- cards.add(new SetCardInfo("Ayesha Tanaka", 108, Rarity.RARE, mage.cards.a.AyeshaTanaka.class));
- cards.add(new SetCardInfo("Azure Drake", 15, Rarity.UNCOMMON, mage.cards.a.AzureDrake.class));
- cards.add(new SetCardInfo("Banshee", 1, Rarity.UNCOMMON, mage.cards.b.Banshee.class));
- cards.add(new SetCardInfo("Barl's Cage", 74, Rarity.RARE, mage.cards.b.BarlsCage.class));
- cards.add(new SetCardInfo("Beasts of Bogardan", 45, Rarity.UNCOMMON, mage.cards.b.BeastsOfBogardan.class));
- cards.add(new SetCardInfo("Blood Moon", 46, Rarity.RARE, mage.cards.b.BloodMoon.class));
- cards.add(new SetCardInfo("Blood of the Martyr", 60, Rarity.UNCOMMON, mage.cards.b.BloodOfTheMartyr.class));
- cards.add(new SetCardInfo("Bog Rats", 2, Rarity.COMMON, mage.cards.b.BogRats.class));
- cards.add(new SetCardInfo("Book of Rass", 75, Rarity.RARE, mage.cards.b.BookOfRass.class));
- cards.add(new SetCardInfo("Boomerang", 16, Rarity.COMMON, mage.cards.b.Boomerang.class));
- cards.add(new SetCardInfo("Cat Warriors", 30, Rarity.COMMON, mage.cards.c.CatWarriors.class));
- cards.add(new SetCardInfo("Chromium", 109, Rarity.RARE, mage.cards.c.Chromium.class));
- cards.add(new SetCardInfo("City of Brass", 92, Rarity.RARE, mage.cards.c.CityOfBrass.class));
- cards.add(new SetCardInfo("Concordant Crossroads", 32, Rarity.RARE, mage.cards.c.ConcordantCrossroads.class));
- cards.add(new SetCardInfo("Craw Giant", 33, Rarity.UNCOMMON, mage.cards.c.CrawGiant.class));
- cards.add(new SetCardInfo("Cuombajj Witches", 3, Rarity.COMMON, mage.cards.c.CuombajjWitches.class));
- cards.add(new SetCardInfo("Cyclone", 34, Rarity.RARE, mage.cards.c.Cyclone.class));
- cards.add(new SetCardInfo("Dakkon Blackblade", 110, Rarity.RARE, mage.cards.d.DakkonBlackblade.class));
- cards.add(new SetCardInfo("Dance of Many", 17, Rarity.RARE, mage.cards.d.DanceOfMany.class));
- cards.add(new SetCardInfo("Dandan", 18, Rarity.COMMON, mage.cards.d.Dandan.class));
- cards.add(new SetCardInfo("D'Avenant Archer", 61, Rarity.COMMON, mage.cards.d.DAvenantArcher.class));
- cards.add(new SetCardInfo("Divine Offering", 62, Rarity.COMMON, mage.cards.d.DivineOffering.class));
- cards.add(new SetCardInfo("Emerald Dragonfly", 35, Rarity.COMMON, mage.cards.e.EmeraldDragonfly.class));
- cards.add(new SetCardInfo("Erhnam Djinn", 36, Rarity.UNCOMMON, mage.cards.e.ErhnamDjinn.class));
- cards.add(new SetCardInfo("Fallen Angel", 4, Rarity.UNCOMMON, mage.cards.f.FallenAngel.class));
- cards.add(new SetCardInfo("Feldon's Cane", 77, Rarity.COMMON, mage.cards.f.FeldonsCane.class));
- cards.add(new SetCardInfo("Fire Drake", 47, Rarity.UNCOMMON, mage.cards.f.FireDrake.class));
- cards.add(new SetCardInfo("Fishliver Oil", 20, Rarity.COMMON, mage.cards.f.FishliverOil.class));
- cards.add(new SetCardInfo("Flash Flood", 21, Rarity.COMMON, mage.cards.f.FlashFlood.class));
- cards.add(new SetCardInfo("Fountain of Youth", 78, Rarity.COMMON, mage.cards.f.FountainOfYouth.class));
- cards.add(new SetCardInfo("Gabriel Angelfire", 111, Rarity.RARE, mage.cards.g.GabrielAngelfire.class));
- cards.add(new SetCardInfo("Gauntlets of Chaos", 79, Rarity.RARE, mage.cards.g.GauntletsOfChaos.class));
- cards.add(new SetCardInfo("Ghazban Ogre", 37, Rarity.COMMON, mage.cards.g.GhazbanOgre.class));
- cards.add(new SetCardInfo("Goblin Artisans", 48, Rarity.UNCOMMON, mage.cards.g.GoblinArtisans.class));
- cards.add(new SetCardInfo("Goblin Digging Team", 49, Rarity.COMMON, mage.cards.g.GoblinDiggingTeam.class));
- cards.add(new SetCardInfo("Goblin Shrine", 50, Rarity.COMMON, mage.cards.g.GoblinShrine.class));
- cards.add(new SetCardInfo("Goblins of the Flarg", 51, Rarity.COMMON, mage.cards.g.GoblinsOfTheFlarg.class));
- cards.add(new SetCardInfo("Hasran Ogress", 6, Rarity.COMMON, mage.cards.h.HasranOgress.class));
- cards.add(new SetCardInfo("Hell's Caretaker", 7, Rarity.RARE, mage.cards.h.HellsCaretaker.class));
- cards.add(new SetCardInfo("Horn of Deafening", 80, Rarity.RARE, mage.cards.h.HornOfDeafening.class));
- cards.add(new SetCardInfo("Indestructible Aura", 63, Rarity.COMMON, mage.cards.i.IndestructibleAura.class));
- cards.add(new SetCardInfo("Ivory Guardians", 64, Rarity.UNCOMMON, mage.cards.i.IvoryGuardians.class));
- cards.add(new SetCardInfo("Jalum Tome", 81, Rarity.RARE, mage.cards.j.JalumTome.class));
- cards.add(new SetCardInfo("Johan", 112, Rarity.RARE, mage.cards.j.Johan.class));
- cards.add(new SetCardInfo("Juxtapose", 22, Rarity.RARE, mage.cards.j.Juxtapose.class));
- cards.add(new SetCardInfo("Keepers of the Faith", 65, Rarity.COMMON, mage.cards.k.KeepersOfTheFaith.class));
- cards.add(new SetCardInfo("Kei Takahashi", 113, Rarity.UNCOMMON, mage.cards.k.KeiTakahashi.class));
- cards.add(new SetCardInfo("Land's Edge", 52, Rarity.RARE, mage.cards.l.LandsEdge.class));
- cards.add(new SetCardInfo("Living Armor", 83, Rarity.COMMON, mage.cards.l.LivingArmor.class));
- cards.add(new SetCardInfo("Marhault Elsdragon", 114, Rarity.UNCOMMON, mage.cards.m.MarhaultElsdragon.class));
- cards.add(new SetCardInfo("Metamorphosis", 38, Rarity.COMMON, mage.cards.m.Metamorphosis.class));
- cards.add(new SetCardInfo("Mountain Yeti", 53, Rarity.COMMON, mage.cards.m.MountainYeti.class));
- cards.add(new SetCardInfo("Nebuchadnezzar", 115, Rarity.RARE, mage.cards.n.Nebuchadnezzar.class));
- cards.add(new SetCardInfo("Nicol Bolas", 116, Rarity.RARE, mage.cards.n.NicolBolas.class));
- cards.add(new SetCardInfo("Obelisk of Undoing", 84, Rarity.RARE, mage.cards.o.ObeliskOfUndoing.class));
- cards.add(new SetCardInfo("Palladia-Mors", 117, Rarity.RARE, mage.cards.p.PalladiaMors.class));
- cards.add(new SetCardInfo("Petra Sphinx", 66, Rarity.RARE, mage.cards.p.PetraSphinx.class));
- cards.add(new SetCardInfo("Primordial Ooze", 54, Rarity.UNCOMMON, mage.cards.p.PrimordialOoze.class));
- cards.add(new SetCardInfo("Rabid Wombat", 39, Rarity.UNCOMMON, mage.cards.r.RabidWombat.class));
- cards.add(new SetCardInfo("Rakalite", 85, Rarity.RARE, mage.cards.r.Rakalite.class));
- cards.add(new SetCardInfo("Recall", 24, Rarity.UNCOMMON, mage.cards.r.Recall.class));
- cards.add(new SetCardInfo("Remove Soul", 25, Rarity.COMMON, mage.cards.r.RemoveSoul.class));
- cards.add(new SetCardInfo("Repentant Blacksmith", 67, Rarity.COMMON, mage.cards.r.RepentantBlacksmith.class));
- cards.add(new SetCardInfo("Revelation", 40, Rarity.RARE, mage.cards.r.Revelation.class));
- cards.add(new SetCardInfo("Rubinia Soulsinger", 118, Rarity.RARE, mage.cards.r.RubiniaSoulsinger.class));
- cards.add(new SetCardInfo("Runesword", 86, Rarity.COMMON, mage.cards.r.Runesword.class));
- cards.add(new SetCardInfo("Safe Haven", 93, Rarity.RARE, mage.cards.s.SafeHaven.class));
- cards.add(new SetCardInfo("Scavenger Folk", 41, Rarity.COMMON, mage.cards.s.ScavengerFolk.class));
- cards.add(new SetCardInfo("Sentinel", 87, Rarity.RARE, mage.cards.s.Sentinel.class));
- cards.add(new SetCardInfo("Serpent Generator", 88, Rarity.RARE, mage.cards.s.SerpentGenerator.class));
- cards.add(new SetCardInfo("Shield Wall", 68, Rarity.UNCOMMON, mage.cards.s.ShieldWall.class));
- cards.add(new SetCardInfo("Shimian Night Stalker", 8, Rarity.UNCOMMON, mage.cards.s.ShimianNightStalker.class));
- cards.add(new SetCardInfo("Sivitri Scarzam", 119, Rarity.UNCOMMON, mage.cards.s.SivitriScarzam.class));
- cards.add(new SetCardInfo("Sol'kanar the Swamp King", 120, Rarity.RARE, mage.cards.s.SolkanarTheSwampKing.class));
- cards.add(new SetCardInfo("Stangg", 121, Rarity.RARE, mage.cards.s.Stangg.class));
- cards.add(new SetCardInfo("Storm Seeker", 42, Rarity.UNCOMMON, mage.cards.s.StormSeeker.class));
- cards.add(new SetCardInfo("Teleport", 26, Rarity.RARE, mage.cards.t.Teleport.class));
- cards.add(new SetCardInfo("The Fallen", 10, Rarity.UNCOMMON, mage.cards.t.TheFallen.class));
- cards.add(new SetCardInfo("The Wretched", 11, Rarity.RARE, mage.cards.t.TheWretched.class));
- cards.add(new SetCardInfo("Tobias Andrion", 122, Rarity.UNCOMMON, mage.cards.t.TobiasAndrion.class));
- cards.add(new SetCardInfo("Tormod's Crypt", 89, Rarity.COMMON, mage.cards.t.TormodsCrypt.class));
- cards.add(new SetCardInfo("Tor Wauki", 123, Rarity.UNCOMMON, mage.cards.t.TorWauki.class));
- cards.add(new SetCardInfo("Transmutation", 12, Rarity.COMMON, mage.cards.t.Transmutation.class));
- cards.add(new SetCardInfo("Triassic Egg", 90, Rarity.RARE, mage.cards.t.TriassicEgg.class));
- cards.add(new SetCardInfo("Urza's Mine", 94, Rarity.UNCOMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Mine", 95, Rarity.UNCOMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Mine", 96, Rarity.UNCOMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Mine", 97, Rarity.UNCOMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Power Plant", 98, Rarity.UNCOMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Power Plant", 99, Rarity.UNCOMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Power Plant", 100, Rarity.UNCOMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Power Plant", 101, Rarity.UNCOMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Tower", 102, Rarity.UNCOMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Tower", 103, Rarity.UNCOMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Tower", 104, Rarity.UNCOMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Tower", 105, Rarity.UNCOMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Vaevictis Asmadi", 124, Rarity.RARE, mage.cards.v.VaevictisAsmadi.class));
- cards.add(new SetCardInfo("Wall of Heat", 55, Rarity.COMMON, mage.cards.w.WallOfHeat.class));
- cards.add(new SetCardInfo("Wall of Opposition", 56, Rarity.UNCOMMON, mage.cards.w.WallOfOpposition.class));
- cards.add(new SetCardInfo("Wall of Vapor", 27, Rarity.COMMON, mage.cards.w.WallOfVapor.class));
- cards.add(new SetCardInfo("Wall of Wonder", 28, Rarity.UNCOMMON, mage.cards.w.WallOfWonder.class));
- cards.add(new SetCardInfo("War Elephant", 69, Rarity.COMMON, mage.cards.w.WarElephant.class));
- cards.add(new SetCardInfo("Witch Hunter", 70, Rarity.UNCOMMON, mage.cards.w.WitchHunter.class));
- cards.add(new SetCardInfo("Xira Arien", 125, Rarity.RARE, mage.cards.x.XiraArien.class));
- cards.add(new SetCardInfo("Yawgmoth Demon", 14, Rarity.RARE, mage.cards.y.YawgmothDemon.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class Chronicles extends ExpansionSet {
+
+ private static final Chronicles instance = new Chronicles();
+
+ public static Chronicles getInstance() {
+ return instance;
+ }
+
+ private Chronicles() {
+ super("Chronicles", "CHR", ExpansionSet.buildDate(1995, 6, 1), SetType.SUPPLEMENTAL);
+ this.blockName = "Reprint";
+ this.hasBasicLands = false;
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 9;
+ this.numBoosterUncommon = 2;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Abu Ja'far", 57, Rarity.UNCOMMON, mage.cards.a.AbuJafar.class));
+ cards.add(new SetCardInfo("Active Volcano", 43, Rarity.COMMON, mage.cards.a.ActiveVolcano.class));
+ cards.add(new SetCardInfo("Akron Legionnaire", 58, Rarity.RARE, mage.cards.a.AkronLegionnaire.class));
+ cards.add(new SetCardInfo("Aladdin", 44, Rarity.RARE, mage.cards.a.Aladdin.class));
+ cards.add(new SetCardInfo("Angelic Voices", 59, Rarity.RARE, mage.cards.a.AngelicVoices.class));
+ cards.add(new SetCardInfo("Arcades Sabboth", 106, Rarity.RARE, mage.cards.a.ArcadesSabboth.class));
+ cards.add(new SetCardInfo("Arena of the Ancients", 71, Rarity.RARE, mage.cards.a.ArenaOfTheAncients.class));
+ cards.add(new SetCardInfo("Argothian Pixies", 29, Rarity.COMMON, mage.cards.a.ArgothianPixies.class));
+ cards.add(new SetCardInfo("Ashnod's Altar", 72, Rarity.COMMON, mage.cards.a.AshnodsAltar.class));
+ cards.add(new SetCardInfo("Ashnod's Transmogrant", 73, Rarity.COMMON, mage.cards.a.AshnodsTransmogrant.class));
+ cards.add(new SetCardInfo("Axelrod Gunnarson", 107, Rarity.RARE, mage.cards.a.AxelrodGunnarson.class));
+ cards.add(new SetCardInfo("Ayesha Tanaka", 108, Rarity.RARE, mage.cards.a.AyeshaTanaka.class));
+ cards.add(new SetCardInfo("Azure Drake", 15, Rarity.UNCOMMON, mage.cards.a.AzureDrake.class));
+ cards.add(new SetCardInfo("Banshee", 1, Rarity.UNCOMMON, mage.cards.b.Banshee.class));
+ cards.add(new SetCardInfo("Barl's Cage", 74, Rarity.RARE, mage.cards.b.BarlsCage.class));
+ cards.add(new SetCardInfo("Beasts of Bogardan", 45, Rarity.UNCOMMON, mage.cards.b.BeastsOfBogardan.class));
+ cards.add(new SetCardInfo("Blood Moon", 46, Rarity.RARE, mage.cards.b.BloodMoon.class));
+ cards.add(new SetCardInfo("Blood of the Martyr", 60, Rarity.UNCOMMON, mage.cards.b.BloodOfTheMartyr.class));
+ cards.add(new SetCardInfo("Bog Rats", 2, Rarity.COMMON, mage.cards.b.BogRats.class));
+ cards.add(new SetCardInfo("Book of Rass", 75, Rarity.RARE, mage.cards.b.BookOfRass.class));
+ cards.add(new SetCardInfo("Boomerang", 16, Rarity.COMMON, mage.cards.b.Boomerang.class));
+ cards.add(new SetCardInfo("Cat Warriors", 30, Rarity.COMMON, mage.cards.c.CatWarriors.class));
+ cards.add(new SetCardInfo("Chromium", 109, Rarity.RARE, mage.cards.c.Chromium.class));
+ cards.add(new SetCardInfo("City of Brass", 92, Rarity.RARE, mage.cards.c.CityOfBrass.class));
+ cards.add(new SetCardInfo("Concordant Crossroads", 32, Rarity.RARE, mage.cards.c.ConcordantCrossroads.class));
+ cards.add(new SetCardInfo("Craw Giant", 33, Rarity.UNCOMMON, mage.cards.c.CrawGiant.class));
+ cards.add(new SetCardInfo("Cuombajj Witches", 3, Rarity.COMMON, mage.cards.c.CuombajjWitches.class));
+ cards.add(new SetCardInfo("Cyclone", 34, Rarity.RARE, mage.cards.c.Cyclone.class));
+ cards.add(new SetCardInfo("Dakkon Blackblade", 110, Rarity.RARE, mage.cards.d.DakkonBlackblade.class));
+ cards.add(new SetCardInfo("Dance of Many", 17, Rarity.RARE, mage.cards.d.DanceOfMany.class));
+ cards.add(new SetCardInfo("Dandan", 18, Rarity.COMMON, mage.cards.d.Dandan.class));
+ cards.add(new SetCardInfo("D'Avenant Archer", 61, Rarity.COMMON, mage.cards.d.DAvenantArcher.class));
+ cards.add(new SetCardInfo("Divine Offering", 62, Rarity.COMMON, mage.cards.d.DivineOffering.class));
+ cards.add(new SetCardInfo("Emerald Dragonfly", 35, Rarity.COMMON, mage.cards.e.EmeraldDragonfly.class));
+ cards.add(new SetCardInfo("Erhnam Djinn", 36, Rarity.UNCOMMON, mage.cards.e.ErhnamDjinn.class));
+ cards.add(new SetCardInfo("Fallen Angel", 4, Rarity.UNCOMMON, mage.cards.f.FallenAngel.class));
+ cards.add(new SetCardInfo("Feldon's Cane", 77, Rarity.COMMON, mage.cards.f.FeldonsCane.class));
+ cards.add(new SetCardInfo("Fire Drake", 47, Rarity.UNCOMMON, mage.cards.f.FireDrake.class));
+ cards.add(new SetCardInfo("Fishliver Oil", 20, Rarity.COMMON, mage.cards.f.FishliverOil.class));
+ cards.add(new SetCardInfo("Flash Flood", 21, Rarity.COMMON, mage.cards.f.FlashFlood.class));
+ cards.add(new SetCardInfo("Fountain of Youth", 78, Rarity.COMMON, mage.cards.f.FountainOfYouth.class));
+ cards.add(new SetCardInfo("Gabriel Angelfire", 111, Rarity.RARE, mage.cards.g.GabrielAngelfire.class));
+ cards.add(new SetCardInfo("Gauntlets of Chaos", 79, Rarity.RARE, mage.cards.g.GauntletsOfChaos.class));
+ cards.add(new SetCardInfo("Ghazban Ogre", 37, Rarity.COMMON, mage.cards.g.GhazbanOgre.class));
+ cards.add(new SetCardInfo("Goblin Artisans", 48, Rarity.UNCOMMON, mage.cards.g.GoblinArtisans.class));
+ cards.add(new SetCardInfo("Goblin Digging Team", 49, Rarity.COMMON, mage.cards.g.GoblinDiggingTeam.class));
+ cards.add(new SetCardInfo("Goblin Shrine", 50, Rarity.COMMON, mage.cards.g.GoblinShrine.class));
+ cards.add(new SetCardInfo("Goblins of the Flarg", 51, Rarity.COMMON, mage.cards.g.GoblinsOfTheFlarg.class));
+ cards.add(new SetCardInfo("Hasran Ogress", 6, Rarity.COMMON, mage.cards.h.HasranOgress.class));
+ cards.add(new SetCardInfo("Hell's Caretaker", 7, Rarity.RARE, mage.cards.h.HellsCaretaker.class));
+ cards.add(new SetCardInfo("Horn of Deafening", 80, Rarity.RARE, mage.cards.h.HornOfDeafening.class));
+ cards.add(new SetCardInfo("Indestructible Aura", 63, Rarity.COMMON, mage.cards.i.IndestructibleAura.class));
+ cards.add(new SetCardInfo("Ivory Guardians", 64, Rarity.UNCOMMON, mage.cards.i.IvoryGuardians.class));
+ cards.add(new SetCardInfo("Jalum Tome", 81, Rarity.RARE, mage.cards.j.JalumTome.class));
+ cards.add(new SetCardInfo("Johan", 112, Rarity.RARE, mage.cards.j.Johan.class));
+ cards.add(new SetCardInfo("Juxtapose", 22, Rarity.RARE, mage.cards.j.Juxtapose.class));
+ cards.add(new SetCardInfo("Keepers of the Faith", 65, Rarity.COMMON, mage.cards.k.KeepersOfTheFaith.class));
+ cards.add(new SetCardInfo("Kei Takahashi", 113, Rarity.UNCOMMON, mage.cards.k.KeiTakahashi.class));
+ cards.add(new SetCardInfo("Land's Edge", 52, Rarity.RARE, mage.cards.l.LandsEdge.class));
+ cards.add(new SetCardInfo("Living Armor", 83, Rarity.COMMON, mage.cards.l.LivingArmor.class));
+ cards.add(new SetCardInfo("Marhault Elsdragon", 114, Rarity.UNCOMMON, mage.cards.m.MarhaultElsdragon.class));
+ cards.add(new SetCardInfo("Metamorphosis", 38, Rarity.COMMON, mage.cards.m.Metamorphosis.class));
+ cards.add(new SetCardInfo("Mountain Yeti", 53, Rarity.COMMON, mage.cards.m.MountainYeti.class));
+ cards.add(new SetCardInfo("Nebuchadnezzar", 115, Rarity.RARE, mage.cards.n.Nebuchadnezzar.class));
+ cards.add(new SetCardInfo("Nicol Bolas", 116, Rarity.RARE, mage.cards.n.NicolBolas.class));
+ cards.add(new SetCardInfo("Obelisk of Undoing", 84, Rarity.RARE, mage.cards.o.ObeliskOfUndoing.class));
+ cards.add(new SetCardInfo("Palladia-Mors", 117, Rarity.RARE, mage.cards.p.PalladiaMors.class));
+ cards.add(new SetCardInfo("Petra Sphinx", 66, Rarity.RARE, mage.cards.p.PetraSphinx.class));
+ cards.add(new SetCardInfo("Primordial Ooze", 54, Rarity.UNCOMMON, mage.cards.p.PrimordialOoze.class));
+ cards.add(new SetCardInfo("Rabid Wombat", 39, Rarity.UNCOMMON, mage.cards.r.RabidWombat.class));
+ cards.add(new SetCardInfo("Rakalite", 85, Rarity.RARE, mage.cards.r.Rakalite.class));
+ cards.add(new SetCardInfo("Recall", 24, Rarity.UNCOMMON, mage.cards.r.Recall.class));
+ cards.add(new SetCardInfo("Remove Soul", 25, Rarity.COMMON, mage.cards.r.RemoveSoul.class));
+ cards.add(new SetCardInfo("Repentant Blacksmith", 67, Rarity.COMMON, mage.cards.r.RepentantBlacksmith.class));
+ cards.add(new SetCardInfo("Revelation", 40, Rarity.RARE, mage.cards.r.Revelation.class));
+ cards.add(new SetCardInfo("Rubinia Soulsinger", 118, Rarity.RARE, mage.cards.r.RubiniaSoulsinger.class));
+ cards.add(new SetCardInfo("Runesword", 86, Rarity.COMMON, mage.cards.r.Runesword.class));
+ cards.add(new SetCardInfo("Safe Haven", 93, Rarity.RARE, mage.cards.s.SafeHaven.class));
+ cards.add(new SetCardInfo("Scavenger Folk", 41, Rarity.COMMON, mage.cards.s.ScavengerFolk.class));
+ cards.add(new SetCardInfo("Sentinel", 87, Rarity.RARE, mage.cards.s.Sentinel.class));
+ cards.add(new SetCardInfo("Serpent Generator", 88, Rarity.RARE, mage.cards.s.SerpentGenerator.class));
+ cards.add(new SetCardInfo("Shield Wall", 68, Rarity.UNCOMMON, mage.cards.s.ShieldWall.class));
+ cards.add(new SetCardInfo("Shimian Night Stalker", 8, Rarity.UNCOMMON, mage.cards.s.ShimianNightStalker.class));
+ cards.add(new SetCardInfo("Sivitri Scarzam", 119, Rarity.UNCOMMON, mage.cards.s.SivitriScarzam.class));
+ cards.add(new SetCardInfo("Sol'kanar the Swamp King", 120, Rarity.RARE, mage.cards.s.SolkanarTheSwampKing.class));
+ cards.add(new SetCardInfo("Stangg", 121, Rarity.RARE, mage.cards.s.Stangg.class));
+ cards.add(new SetCardInfo("Storm Seeker", 42, Rarity.UNCOMMON, mage.cards.s.StormSeeker.class));
+ cards.add(new SetCardInfo("Teleport", 26, Rarity.RARE, mage.cards.t.Teleport.class));
+ cards.add(new SetCardInfo("The Fallen", 10, Rarity.UNCOMMON, mage.cards.t.TheFallen.class));
+ cards.add(new SetCardInfo("The Wretched", 11, Rarity.RARE, mage.cards.t.TheWretched.class));
+ cards.add(new SetCardInfo("Tobias Andrion", 122, Rarity.UNCOMMON, mage.cards.t.TobiasAndrion.class));
+ cards.add(new SetCardInfo("Tormod's Crypt", 89, Rarity.COMMON, mage.cards.t.TormodsCrypt.class));
+ cards.add(new SetCardInfo("Tor Wauki", 123, Rarity.UNCOMMON, mage.cards.t.TorWauki.class));
+ cards.add(new SetCardInfo("Transmutation", 12, Rarity.COMMON, mage.cards.t.Transmutation.class));
+ cards.add(new SetCardInfo("Triassic Egg", 90, Rarity.RARE, mage.cards.t.TriassicEgg.class));
+ cards.add(new SetCardInfo("Urza's Mine", 94, Rarity.UNCOMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Mine", 95, Rarity.UNCOMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Mine", 96, Rarity.UNCOMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Mine", 97, Rarity.UNCOMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Power Plant", 98, Rarity.UNCOMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Power Plant", 99, Rarity.UNCOMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Power Plant", 100, Rarity.UNCOMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Power Plant", 101, Rarity.UNCOMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", 102, Rarity.UNCOMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", 103, Rarity.UNCOMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", 104, Rarity.UNCOMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", 105, Rarity.UNCOMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Vaevictis Asmadi", 124, Rarity.RARE, mage.cards.v.VaevictisAsmadi.class));
+ cards.add(new SetCardInfo("Wall of Heat", 55, Rarity.COMMON, mage.cards.w.WallOfHeat.class));
+ cards.add(new SetCardInfo("Wall of Opposition", 56, Rarity.UNCOMMON, mage.cards.w.WallOfOpposition.class));
+ cards.add(new SetCardInfo("Wall of Vapor", 27, Rarity.COMMON, mage.cards.w.WallOfVapor.class));
+ cards.add(new SetCardInfo("Wall of Wonder", 28, Rarity.UNCOMMON, mage.cards.w.WallOfWonder.class));
+ cards.add(new SetCardInfo("War Elephant", 69, Rarity.COMMON, mage.cards.w.WarElephant.class));
+ cards.add(new SetCardInfo("Witch Hunter", 70, Rarity.UNCOMMON, mage.cards.w.WitchHunter.class));
+ cards.add(new SetCardInfo("Xira Arien", 125, Rarity.RARE, mage.cards.x.XiraArien.class));
+ cards.add(new SetCardInfo("Yawgmoth Demon", 14, Rarity.RARE, mage.cards.y.YawgmothDemon.class));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/ClashPack.java b/Mage.Sets/src/mage/sets/ClashPack.java
index 6e64ea196a2..27249914a10 100644
--- a/Mage.Sets/src/mage/sets/ClashPack.java
+++ b/Mage.Sets/src/mage/sets/ClashPack.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class ClashPack extends ExpansionSet {
+public final class ClashPack extends ExpansionSet {
private static final ClashPack instance = new ClashPack();
diff --git a/Mage.Sets/src/mage/sets/ClassicSixthEdition.java b/Mage.Sets/src/mage/sets/ClassicSixthEdition.java
index 191c9ca970e..5b6b5d43934 100644
--- a/Mage.Sets/src/mage/sets/ClassicSixthEdition.java
+++ b/Mage.Sets/src/mage/sets/ClassicSixthEdition.java
@@ -40,7 +40,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class ClassicSixthEdition extends ExpansionSet {
+public final class ClassicSixthEdition extends ExpansionSet {
private static final ClassicSixthEdition instance = new ClassicSixthEdition();
diff --git a/Mage.Sets/src/mage/sets/Coldsnap.java b/Mage.Sets/src/mage/sets/Coldsnap.java
index e66a4aeb68a..04296067978 100644
--- a/Mage.Sets/src/mage/sets/Coldsnap.java
+++ b/Mage.Sets/src/mage/sets/Coldsnap.java
@@ -1,210 +1,210 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class Coldsnap extends ExpansionSet {
-
- private static final Coldsnap instance = new Coldsnap();
-
- public static Coldsnap getInstance() {
- return instance;
- }
-
- private Coldsnap() {
- super("Coldsnap", "CSP", ExpansionSet.buildDate(2006, 6, 21), SetType.EXPANSION);
- this.blockName = "Ice Age";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- this.parentSet = IceAge.getInstance();
- this.hasBasicLands = false;
- cards.add(new SetCardInfo("Adarkar Valkyrie", 1, Rarity.RARE, mage.cards.a.AdarkarValkyrie.class));
- cards.add(new SetCardInfo("Adarkar Windform", 26, Rarity.UNCOMMON, mage.cards.a.AdarkarWindform.class));
- cards.add(new SetCardInfo("Allosaurus Rider", 101, Rarity.RARE, mage.cards.a.AllosaurusRider.class));
- cards.add(new SetCardInfo("Arctic Flats", 143, Rarity.UNCOMMON, mage.cards.a.ArcticFlats.class));
- cards.add(new SetCardInfo("Arctic Nishoba", 102, Rarity.UNCOMMON, mage.cards.a.ArcticNishoba.class));
- cards.add(new SetCardInfo("Arcum Dagsson", 27, Rarity.RARE, mage.cards.a.ArcumDagsson.class));
- cards.add(new SetCardInfo("Aurochs Herd", 103, Rarity.COMMON, mage.cards.a.AurochsHerd.class));
- cards.add(new SetCardInfo("Balduvian Frostwaker", 28, Rarity.UNCOMMON, mage.cards.b.BalduvianFrostwaker.class));
- cards.add(new SetCardInfo("Balduvian Rage", 76, Rarity.UNCOMMON, mage.cards.b.BalduvianRage.class));
- cards.add(new SetCardInfo("Balduvian Warlord", 77, Rarity.UNCOMMON, mage.cards.b.BalduvianWarlord.class));
- cards.add(new SetCardInfo("Blizzard Specter", 126, Rarity.UNCOMMON, mage.cards.b.BlizzardSpecter.class));
- cards.add(new SetCardInfo("Boreal Centaur", 104, Rarity.COMMON, mage.cards.b.BorealCentaur.class));
- cards.add(new SetCardInfo("Boreal Druid", 105, Rarity.COMMON, mage.cards.b.BorealDruid.class));
- cards.add(new SetCardInfo("Boreal Griffin", 2, Rarity.COMMON, mage.cards.b.BorealGriffin.class));
- cards.add(new SetCardInfo("Boreal Shelf", 144, Rarity.UNCOMMON, mage.cards.b.BorealShelf.class));
- cards.add(new SetCardInfo("Braid of Fire", 78, Rarity.RARE, mage.cards.b.BraidOfFire.class));
- cards.add(new SetCardInfo("Brooding Saurian", 106, Rarity.RARE, mage.cards.b.BroodingSaurian.class));
- cards.add(new SetCardInfo("Bull Aurochs", 107, Rarity.COMMON, mage.cards.b.BullAurochs.class));
- cards.add(new SetCardInfo("Chilling Shade", 53, Rarity.COMMON, mage.cards.c.ChillingShade.class));
- cards.add(new SetCardInfo("Chill to the Bone", 52, Rarity.COMMON, mage.cards.c.ChillToTheBone.class));
- cards.add(new SetCardInfo("Coldsteel Heart", 136, Rarity.UNCOMMON, mage.cards.c.ColdsteelHeart.class));
- cards.add(new SetCardInfo("Commandeer", 29, Rarity.RARE, mage.cards.c.Commandeer.class));
- cards.add(new SetCardInfo("Controvert", 30, Rarity.UNCOMMON, mage.cards.c.Controvert.class));
- cards.add(new SetCardInfo("Counterbalance", 31, Rarity.UNCOMMON, mage.cards.c.Counterbalance.class));
- cards.add(new SetCardInfo("Cryoclasm", 79, Rarity.UNCOMMON, mage.cards.c.Cryoclasm.class));
- cards.add(new SetCardInfo("Darien, King of Kjeldor", 4, Rarity.RARE, mage.cards.d.DarienKingOfKjeldor.class));
- cards.add(new SetCardInfo("Dark Depths", 145, Rarity.RARE, mage.cards.d.DarkDepths.class));
- cards.add(new SetCardInfo("Deathmark", 54, Rarity.UNCOMMON, mage.cards.d.Deathmark.class));
- cards.add(new SetCardInfo("Deepfire Elemental", 127, Rarity.UNCOMMON, mage.cards.d.DeepfireElemental.class));
- cards.add(new SetCardInfo("Diamond Faerie", 128, Rarity.RARE, mage.cards.d.DiamondFaerie.class));
- cards.add(new SetCardInfo("Disciple of Tevesh Szat", 55, Rarity.COMMON, mage.cards.d.DiscipleOfTeveshSzat.class));
- cards.add(new SetCardInfo("Drelnoch", 32, Rarity.COMMON, mage.cards.d.Drelnoch.class));
- cards.add(new SetCardInfo("Earthen Goo", 80, Rarity.UNCOMMON, mage.cards.e.EarthenGoo.class));
- cards.add(new SetCardInfo("Feast of Flesh", 56, Rarity.COMMON, mage.cards.f.FeastOfFlesh.class));
- cards.add(new SetCardInfo("Field Marshal", 5, Rarity.RARE, mage.cards.f.FieldMarshal.class));
- cards.add(new SetCardInfo("Flashfreeze", 33, Rarity.UNCOMMON, mage.cards.f.Flashfreeze.class));
- cards.add(new SetCardInfo("Freyalise's Radiance", 108, Rarity.UNCOMMON, mage.cards.f.FreyalisesRadiance.class));
- cards.add(new SetCardInfo("Frost Marsh", 146, Rarity.UNCOMMON, mage.cards.f.FrostMarsh.class));
- cards.add(new SetCardInfo("Frost Raptor", 34, Rarity.COMMON, mage.cards.f.FrostRaptor.class));
- cards.add(new SetCardInfo("Frostweb Spider", 109, Rarity.COMMON, mage.cards.f.FrostwebSpider.class));
- cards.add(new SetCardInfo("Frozen Solid", 35, Rarity.COMMON, mage.cards.f.FrozenSolid.class));
- cards.add(new SetCardInfo("Fury of the Horde", 81, Rarity.RARE, mage.cards.f.FuryOfTheHorde.class));
- cards.add(new SetCardInfo("Garza Zol, Plague Queen", 129, Rarity.RARE, mage.cards.g.GarzaZolPlagueQueen.class));
- cards.add(new SetCardInfo("Garza's Assassin", 57, Rarity.RARE, mage.cards.g.GarzasAssassin.class));
- cards.add(new SetCardInfo("Gelid Shackles", 6, Rarity.COMMON, mage.cards.g.GelidShackles.class));
- cards.add(new SetCardInfo("Glacial Plating", 7, Rarity.UNCOMMON, mage.cards.g.GlacialPlating.class));
- cards.add(new SetCardInfo("Goblin Furrier", 82, Rarity.COMMON, mage.cards.g.GoblinFurrier.class));
- cards.add(new SetCardInfo("Goblin Rimerunner", 83, Rarity.COMMON, mage.cards.g.GoblinRimerunner.class));
- cards.add(new SetCardInfo("Greater Stone Spirit", 84, Rarity.UNCOMMON, mage.cards.g.GreaterStoneSpirit.class));
- cards.add(new SetCardInfo("Grim Harvest", 58, Rarity.COMMON, mage.cards.g.GrimHarvest.class));
- cards.add(new SetCardInfo("Gristle Grinner", 59, Rarity.UNCOMMON, mage.cards.g.GristleGrinner.class));
- cards.add(new SetCardInfo("Gutless Ghoul", 60, Rarity.COMMON, mage.cards.g.GutlessGhoul.class));
- cards.add(new SetCardInfo("Haakon, Stromgald Scourge", 61, Rarity.RARE, mage.cards.h.HaakonStromgaldScourge.class));
- cards.add(new SetCardInfo("Heidar, Rimewind Master", 36, Rarity.RARE, mage.cards.h.HeidarRimewindMaster.class));
- cards.add(new SetCardInfo("Herald of Leshrac", 62, Rarity.RARE, mage.cards.h.HeraldOfLeshrac.class));
- cards.add(new SetCardInfo("Hibernation's End", 110, Rarity.RARE, mage.cards.h.HibernationsEnd.class));
- cards.add(new SetCardInfo("Highland Weald", 147, Rarity.UNCOMMON, mage.cards.h.HighlandWeald.class));
- cards.add(new SetCardInfo("Icefall", 85, Rarity.COMMON, mage.cards.i.Icefall.class));
- cards.add(new SetCardInfo("Into the North", 111, Rarity.COMMON, mage.cards.i.IntoTheNorth.class));
- cards.add(new SetCardInfo("Jester's Scepter", 137, Rarity.RARE, mage.cards.j.JestersScepter.class));
- cards.add(new SetCardInfo("Jokulmorder", 37, Rarity.RARE, mage.cards.j.Jokulmorder.class));
- cards.add(new SetCardInfo("Jotun Grunt", 8, Rarity.UNCOMMON, mage.cards.j.JotunGrunt.class));
- cards.add(new SetCardInfo("Jotun Owl Keeper", 9, Rarity.UNCOMMON, mage.cards.j.JotunOwlKeeper.class));
- cards.add(new SetCardInfo("Juniper Order Ranger", 130, Rarity.UNCOMMON, mage.cards.j.JuniperOrderRanger.class));
- cards.add(new SetCardInfo("Karplusan Minotaur", 86, Rarity.RARE, mage.cards.k.KarplusanMinotaur.class));
- cards.add(new SetCardInfo("Karplusan Strider", 112, Rarity.UNCOMMON, mage.cards.k.KarplusanStrider.class));
- cards.add(new SetCardInfo("Karplusan Wolverine", 87, Rarity.COMMON, mage.cards.k.KarplusanWolverine.class));
- cards.add(new SetCardInfo("Kjeldoran Gargoyle", 10, Rarity.UNCOMMON, mage.cards.k.KjeldoranGargoyle.class));
- cards.add(new SetCardInfo("Kjeldoran Javelineer", 11, Rarity.COMMON, mage.cards.k.KjeldoranJavelineer.class));
- cards.add(new SetCardInfo("Kjeldoran Outrider", 12, Rarity.COMMON, mage.cards.k.KjeldoranOutrider.class));
- cards.add(new SetCardInfo("Kjeldoran War Cry", 13, Rarity.COMMON, mage.cards.k.KjeldoranWarCry.class));
- cards.add(new SetCardInfo("Krovikan Mist", 38, Rarity.COMMON, mage.cards.k.KrovikanMist.class));
- cards.add(new SetCardInfo("Krovikan Rot", 63, Rarity.UNCOMMON, mage.cards.k.KrovikanRot.class));
- cards.add(new SetCardInfo("Krovikan Scoundrel", 64, Rarity.COMMON, mage.cards.k.KrovikanScoundrel.class));
- cards.add(new SetCardInfo("Krovikan Whispers", 39, Rarity.UNCOMMON, mage.cards.k.KrovikanWhispers.class));
- 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("Magmatic Core", 91, Rarity.UNCOMMON, mage.cards.m.MagmaticCore.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));
- cards.add(new SetCardInfo("Martyr of Sands", 15, Rarity.COMMON, mage.cards.m.MartyrOfSands.class));
- cards.add(new SetCardInfo("Martyr of Spores", 113, Rarity.COMMON, mage.cards.m.MartyrOfSpores.class));
- cards.add(new SetCardInfo("Mishra's Bauble", 138, Rarity.UNCOMMON, mage.cards.m.MishrasBauble.class));
- cards.add(new SetCardInfo("Mouth of Ronom", 148, Rarity.UNCOMMON, mage.cards.m.MouthOfRonom.class));
- cards.add(new SetCardInfo("Mystic Melting", 114, Rarity.UNCOMMON, mage.cards.m.MysticMelting.class));
- cards.add(new SetCardInfo("Ohran Viper", 115, Rarity.RARE, mage.cards.o.OhranViper.class));
- cards.add(new SetCardInfo("Ohran Yeti", 93, Rarity.COMMON, mage.cards.o.OhranYeti.class));
- cards.add(new SetCardInfo("Orcish Bloodpainter", 94, Rarity.COMMON, mage.cards.o.OrcishBloodpainter.class));
- cards.add(new SetCardInfo("Panglacial Wurm", 116, Rarity.RARE, mage.cards.p.PanglacialWurm.class));
- cards.add(new SetCardInfo("Perilous Research", 41, Rarity.UNCOMMON, mage.cards.p.PerilousResearch.class));
- cards.add(new SetCardInfo("Phobian Phantasm", 66, Rarity.UNCOMMON, mage.cards.p.PhobianPhantasm.class));
- cards.add(new SetCardInfo("Phyrexian Etchings", 67, Rarity.RARE, mage.cards.p.PhyrexianEtchings.class));
- cards.add(new SetCardInfo("Phyrexian Ironfoot", 139, Rarity.UNCOMMON, mage.cards.p.PhyrexianIronfoot.class));
- cards.add(new SetCardInfo("Phyrexian Snowcrusher", 140, Rarity.UNCOMMON, mage.cards.p.PhyrexianSnowcrusher.class));
- cards.add(new SetCardInfo("Phyrexian Soulgorger", 141, Rarity.RARE, mage.cards.p.PhyrexianSoulgorger.class));
- cards.add(new SetCardInfo("Resize", 117, Rarity.UNCOMMON, mage.cards.r.Resize.class));
- cards.add(new SetCardInfo("Rimebound Dead", 69, Rarity.COMMON, mage.cards.r.RimeboundDead.class));
- cards.add(new SetCardInfo("Rime Transfusion", 68, Rarity.UNCOMMON, mage.cards.r.RimeTransfusion.class));
- cards.add(new SetCardInfo("Rimefeather Owl", 42, Rarity.RARE, mage.cards.r.RimefeatherOwl.class));
- cards.add(new SetCardInfo("Rimehorn Aurochs", 118, Rarity.UNCOMMON, mage.cards.r.RimehornAurochs.class));
- cards.add(new SetCardInfo("Rimescale Dragon", 95, Rarity.RARE, mage.cards.r.RimescaleDragon.class));
- cards.add(new SetCardInfo("Rimewind Cryomancer", 43, Rarity.UNCOMMON, mage.cards.r.RimewindCryomancer.class));
- cards.add(new SetCardInfo("Rimewind Taskmage", 44, Rarity.COMMON, mage.cards.r.RimewindTaskmage.class));
- cards.add(new SetCardInfo("Rite of Flame", 96, Rarity.COMMON, mage.cards.r.RiteOfFlame.class));
- cards.add(new SetCardInfo("Ronom Hulk", 119, Rarity.COMMON, mage.cards.r.RonomHulk.class));
- cards.add(new SetCardInfo("Ronom Serpent", 45, Rarity.COMMON, mage.cards.r.RonomSerpent.class));
- cards.add(new SetCardInfo("Ronom Unicorn", 16, Rarity.COMMON, mage.cards.r.RonomUnicorn.class));
- cards.add(new SetCardInfo("Rune Snag", 46, Rarity.COMMON, mage.cards.r.RuneSnag.class));
- cards.add(new SetCardInfo("Scrying Sheets", 149, Rarity.RARE, mage.cards.s.ScryingSheets.class));
- cards.add(new SetCardInfo("Sek'Kuar, Deathkeeper", 131, Rarity.RARE, mage.cards.s.SekKuarDeathkeeper.class));
- cards.add(new SetCardInfo("Sheltering Ancient", 121, Rarity.UNCOMMON, mage.cards.s.ShelteringAncient.class));
- cards.add(new SetCardInfo("Simian Brawler", 122, Rarity.COMMON, mage.cards.s.SimianBrawler.class));
- cards.add(new SetCardInfo("Skred", 97, Rarity.COMMON, mage.cards.s.Skred.class));
- cards.add(new SetCardInfo("Snow-Covered Forest", 155, Rarity.LAND, mage.cards.s.SnowCoveredForest.class));
- cards.add(new SetCardInfo("Snow-Covered Island", 152, Rarity.LAND, mage.cards.s.SnowCoveredIsland.class));
- cards.add(new SetCardInfo("Snow-Covered Mountain", 154, Rarity.LAND, mage.cards.s.SnowCoveredMountain.class));
- cards.add(new SetCardInfo("Snow-Covered Plains", 151, Rarity.LAND, mage.cards.s.SnowCoveredPlains.class));
- cards.add(new SetCardInfo("Snow-Covered Swamp", 153, Rarity.LAND, mage.cards.s.SnowCoveredSwamp.class));
- cards.add(new SetCardInfo("Soul Spike", 70, Rarity.RARE, mage.cards.s.SoulSpike.class));
- cards.add(new SetCardInfo("Sound the Call", 123, Rarity.COMMON, mage.cards.s.SoundTheCall.class));
- cards.add(new SetCardInfo("Squall Drifter", 17, Rarity.COMMON, mage.cards.s.SquallDrifter.class));
- cards.add(new SetCardInfo("Stalking Yeti", 98, Rarity.UNCOMMON, mage.cards.s.StalkingYeti.class));
- cards.add(new SetCardInfo("Steam Spitter", 124, Rarity.UNCOMMON, mage.cards.s.SteamSpitter.class));
- cards.add(new SetCardInfo("Stromgald Crusader", 71, Rarity.UNCOMMON, mage.cards.s.StromgaldCrusader.class));
- cards.add(new SetCardInfo("Sun's Bounty", 18, Rarity.COMMON, mage.cards.s.SunsBounty.class));
- cards.add(new SetCardInfo("Sunscour", 19, Rarity.RARE, mage.cards.s.Sunscour.class));
- cards.add(new SetCardInfo("Surging Aether", 47, Rarity.COMMON, mage.cards.s.SurgingAether.class));
- cards.add(new SetCardInfo("Surging Dementia", 72, Rarity.COMMON, mage.cards.s.SurgingDementia.class));
- cards.add(new SetCardInfo("Surging Flame", 99, Rarity.COMMON, mage.cards.s.SurgingFlame.class));
- cards.add(new SetCardInfo("Surging Might", 125, Rarity.COMMON, mage.cards.s.SurgingMight.class));
- cards.add(new SetCardInfo("Surging Sentinels", 20, Rarity.COMMON, mage.cards.s.SurgingSentinels.class));
- cards.add(new SetCardInfo("Survivor of the Unseen", 48, Rarity.COMMON, mage.cards.s.SurvivorOfTheUnseen.class));
- cards.add(new SetCardInfo("Swift Maneuver", 21, Rarity.COMMON, mage.cards.s.SwiftManeuver.class));
- cards.add(new SetCardInfo("Tamanoa", 132, Rarity.RARE, mage.cards.t.Tamanoa.class));
- cards.add(new SetCardInfo("Thermal Flux", 49, Rarity.COMMON, mage.cards.t.ThermalFlux.class));
- cards.add(new SetCardInfo("Thermopod", 100, Rarity.COMMON, mage.cards.t.Thermopod.class));
- cards.add(new SetCardInfo("Thrumming Stone", 142, Rarity.RARE, mage.cards.t.ThrummingStone.class));
- cards.add(new SetCardInfo("Tresserhorn Sinks", 150, Rarity.UNCOMMON, mage.cards.t.TresserhornSinks.class));
- cards.add(new SetCardInfo("Tresserhorn Skyknight", 73, Rarity.UNCOMMON, mage.cards.t.TresserhornSkyknight.class));
- cards.add(new SetCardInfo("Ursine Fylgja", 22, Rarity.UNCOMMON, mage.cards.u.UrsineFylgja.class));
- cards.add(new SetCardInfo("Vanish into Memory", 133, Rarity.UNCOMMON, mage.cards.v.VanishIntoMemory.class));
- cards.add(new SetCardInfo("Vexing Sphinx", 50, Rarity.RARE, mage.cards.v.VexingSphinx.class));
- cards.add(new SetCardInfo("Void Maw", 74, Rarity.RARE, mage.cards.v.VoidMaw.class));
- cards.add(new SetCardInfo("Wall of Shards", 23, Rarity.UNCOMMON, mage.cards.w.WallOfShards.class));
- cards.add(new SetCardInfo("White Shield Crusader", 24, Rarity.UNCOMMON, mage.cards.w.WhiteShieldCrusader.class));
- cards.add(new SetCardInfo("Wilderness Elemental", 134, Rarity.UNCOMMON, mage.cards.w.WildernessElemental.class));
- cards.add(new SetCardInfo("Woolly Razorback", 25, Rarity.RARE, mage.cards.w.WoollyRazorback.class));
- cards.add(new SetCardInfo("Zombie Musher", 75, Rarity.COMMON, mage.cards.z.ZombieMusher.class));
- cards.add(new SetCardInfo("Zur the Enchanter", 135, Rarity.RARE, mage.cards.z.ZurTheEnchanter.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Coldsnap extends ExpansionSet {
+
+ private static final Coldsnap instance = new Coldsnap();
+
+ public static Coldsnap getInstance() {
+ return instance;
+ }
+
+ private Coldsnap() {
+ super("Coldsnap", "CSP", ExpansionSet.buildDate(2006, 6, 21), SetType.EXPANSION);
+ this.blockName = "Ice Age";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ this.parentSet = IceAge.getInstance();
+ this.hasBasicLands = false;
+ cards.add(new SetCardInfo("Adarkar Valkyrie", 1, Rarity.RARE, mage.cards.a.AdarkarValkyrie.class));
+ cards.add(new SetCardInfo("Adarkar Windform", 26, Rarity.UNCOMMON, mage.cards.a.AdarkarWindform.class));
+ cards.add(new SetCardInfo("Allosaurus Rider", 101, Rarity.RARE, mage.cards.a.AllosaurusRider.class));
+ cards.add(new SetCardInfo("Arctic Flats", 143, Rarity.UNCOMMON, mage.cards.a.ArcticFlats.class));
+ cards.add(new SetCardInfo("Arctic Nishoba", 102, Rarity.UNCOMMON, mage.cards.a.ArcticNishoba.class));
+ cards.add(new SetCardInfo("Arcum Dagsson", 27, Rarity.RARE, mage.cards.a.ArcumDagsson.class));
+ cards.add(new SetCardInfo("Aurochs Herd", 103, Rarity.COMMON, mage.cards.a.AurochsHerd.class));
+ cards.add(new SetCardInfo("Balduvian Frostwaker", 28, Rarity.UNCOMMON, mage.cards.b.BalduvianFrostwaker.class));
+ cards.add(new SetCardInfo("Balduvian Rage", 76, Rarity.UNCOMMON, mage.cards.b.BalduvianRage.class));
+ cards.add(new SetCardInfo("Balduvian Warlord", 77, Rarity.UNCOMMON, mage.cards.b.BalduvianWarlord.class));
+ cards.add(new SetCardInfo("Blizzard Specter", 126, Rarity.UNCOMMON, mage.cards.b.BlizzardSpecter.class));
+ cards.add(new SetCardInfo("Boreal Centaur", 104, Rarity.COMMON, mage.cards.b.BorealCentaur.class));
+ cards.add(new SetCardInfo("Boreal Druid", 105, Rarity.COMMON, mage.cards.b.BorealDruid.class));
+ cards.add(new SetCardInfo("Boreal Griffin", 2, Rarity.COMMON, mage.cards.b.BorealGriffin.class));
+ cards.add(new SetCardInfo("Boreal Shelf", 144, Rarity.UNCOMMON, mage.cards.b.BorealShelf.class));
+ cards.add(new SetCardInfo("Braid of Fire", 78, Rarity.RARE, mage.cards.b.BraidOfFire.class));
+ cards.add(new SetCardInfo("Brooding Saurian", 106, Rarity.RARE, mage.cards.b.BroodingSaurian.class));
+ cards.add(new SetCardInfo("Bull Aurochs", 107, Rarity.COMMON, mage.cards.b.BullAurochs.class));
+ cards.add(new SetCardInfo("Chilling Shade", 53, Rarity.COMMON, mage.cards.c.ChillingShade.class));
+ cards.add(new SetCardInfo("Chill to the Bone", 52, Rarity.COMMON, mage.cards.c.ChillToTheBone.class));
+ cards.add(new SetCardInfo("Coldsteel Heart", 136, Rarity.UNCOMMON, mage.cards.c.ColdsteelHeart.class));
+ cards.add(new SetCardInfo("Commandeer", 29, Rarity.RARE, mage.cards.c.Commandeer.class));
+ cards.add(new SetCardInfo("Controvert", 30, Rarity.UNCOMMON, mage.cards.c.Controvert.class));
+ cards.add(new SetCardInfo("Counterbalance", 31, Rarity.UNCOMMON, mage.cards.c.Counterbalance.class));
+ cards.add(new SetCardInfo("Cryoclasm", 79, Rarity.UNCOMMON, mage.cards.c.Cryoclasm.class));
+ cards.add(new SetCardInfo("Darien, King of Kjeldor", 4, Rarity.RARE, mage.cards.d.DarienKingOfKjeldor.class));
+ cards.add(new SetCardInfo("Dark Depths", 145, Rarity.RARE, mage.cards.d.DarkDepths.class));
+ cards.add(new SetCardInfo("Deathmark", 54, Rarity.UNCOMMON, mage.cards.d.Deathmark.class));
+ cards.add(new SetCardInfo("Deepfire Elemental", 127, Rarity.UNCOMMON, mage.cards.d.DeepfireElemental.class));
+ cards.add(new SetCardInfo("Diamond Faerie", 128, Rarity.RARE, mage.cards.d.DiamondFaerie.class));
+ cards.add(new SetCardInfo("Disciple of Tevesh Szat", 55, Rarity.COMMON, mage.cards.d.DiscipleOfTeveshSzat.class));
+ cards.add(new SetCardInfo("Drelnoch", 32, Rarity.COMMON, mage.cards.d.Drelnoch.class));
+ cards.add(new SetCardInfo("Earthen Goo", 80, Rarity.UNCOMMON, mage.cards.e.EarthenGoo.class));
+ cards.add(new SetCardInfo("Feast of Flesh", 56, Rarity.COMMON, mage.cards.f.FeastOfFlesh.class));
+ cards.add(new SetCardInfo("Field Marshal", 5, Rarity.RARE, mage.cards.f.FieldMarshal.class));
+ cards.add(new SetCardInfo("Flashfreeze", 33, Rarity.UNCOMMON, mage.cards.f.Flashfreeze.class));
+ cards.add(new SetCardInfo("Freyalise's Radiance", 108, Rarity.UNCOMMON, mage.cards.f.FreyalisesRadiance.class));
+ cards.add(new SetCardInfo("Frost Marsh", 146, Rarity.UNCOMMON, mage.cards.f.FrostMarsh.class));
+ cards.add(new SetCardInfo("Frost Raptor", 34, Rarity.COMMON, mage.cards.f.FrostRaptor.class));
+ cards.add(new SetCardInfo("Frostweb Spider", 109, Rarity.COMMON, mage.cards.f.FrostwebSpider.class));
+ cards.add(new SetCardInfo("Frozen Solid", 35, Rarity.COMMON, mage.cards.f.FrozenSolid.class));
+ cards.add(new SetCardInfo("Fury of the Horde", 81, Rarity.RARE, mage.cards.f.FuryOfTheHorde.class));
+ cards.add(new SetCardInfo("Garza Zol, Plague Queen", 129, Rarity.RARE, mage.cards.g.GarzaZolPlagueQueen.class));
+ cards.add(new SetCardInfo("Garza's Assassin", 57, Rarity.RARE, mage.cards.g.GarzasAssassin.class));
+ cards.add(new SetCardInfo("Gelid Shackles", 6, Rarity.COMMON, mage.cards.g.GelidShackles.class));
+ cards.add(new SetCardInfo("Glacial Plating", 7, Rarity.UNCOMMON, mage.cards.g.GlacialPlating.class));
+ cards.add(new SetCardInfo("Goblin Furrier", 82, Rarity.COMMON, mage.cards.g.GoblinFurrier.class));
+ cards.add(new SetCardInfo("Goblin Rimerunner", 83, Rarity.COMMON, mage.cards.g.GoblinRimerunner.class));
+ cards.add(new SetCardInfo("Greater Stone Spirit", 84, Rarity.UNCOMMON, mage.cards.g.GreaterStoneSpirit.class));
+ cards.add(new SetCardInfo("Grim Harvest", 58, Rarity.COMMON, mage.cards.g.GrimHarvest.class));
+ cards.add(new SetCardInfo("Gristle Grinner", 59, Rarity.UNCOMMON, mage.cards.g.GristleGrinner.class));
+ cards.add(new SetCardInfo("Gutless Ghoul", 60, Rarity.COMMON, mage.cards.g.GutlessGhoul.class));
+ cards.add(new SetCardInfo("Haakon, Stromgald Scourge", 61, Rarity.RARE, mage.cards.h.HaakonStromgaldScourge.class));
+ cards.add(new SetCardInfo("Heidar, Rimewind Master", 36, Rarity.RARE, mage.cards.h.HeidarRimewindMaster.class));
+ cards.add(new SetCardInfo("Herald of Leshrac", 62, Rarity.RARE, mage.cards.h.HeraldOfLeshrac.class));
+ cards.add(new SetCardInfo("Hibernation's End", 110, Rarity.RARE, mage.cards.h.HibernationsEnd.class));
+ cards.add(new SetCardInfo("Highland Weald", 147, Rarity.UNCOMMON, mage.cards.h.HighlandWeald.class));
+ cards.add(new SetCardInfo("Icefall", 85, Rarity.COMMON, mage.cards.i.Icefall.class));
+ cards.add(new SetCardInfo("Into the North", 111, Rarity.COMMON, mage.cards.i.IntoTheNorth.class));
+ cards.add(new SetCardInfo("Jester's Scepter", 137, Rarity.RARE, mage.cards.j.JestersScepter.class));
+ cards.add(new SetCardInfo("Jokulmorder", 37, Rarity.RARE, mage.cards.j.Jokulmorder.class));
+ cards.add(new SetCardInfo("Jotun Grunt", 8, Rarity.UNCOMMON, mage.cards.j.JotunGrunt.class));
+ cards.add(new SetCardInfo("Jotun Owl Keeper", 9, Rarity.UNCOMMON, mage.cards.j.JotunOwlKeeper.class));
+ cards.add(new SetCardInfo("Juniper Order Ranger", 130, Rarity.UNCOMMON, mage.cards.j.JuniperOrderRanger.class));
+ cards.add(new SetCardInfo("Karplusan Minotaur", 86, Rarity.RARE, mage.cards.k.KarplusanMinotaur.class));
+ cards.add(new SetCardInfo("Karplusan Strider", 112, Rarity.UNCOMMON, mage.cards.k.KarplusanStrider.class));
+ cards.add(new SetCardInfo("Karplusan Wolverine", 87, Rarity.COMMON, mage.cards.k.KarplusanWolverine.class));
+ cards.add(new SetCardInfo("Kjeldoran Gargoyle", 10, Rarity.UNCOMMON, mage.cards.k.KjeldoranGargoyle.class));
+ cards.add(new SetCardInfo("Kjeldoran Javelineer", 11, Rarity.COMMON, mage.cards.k.KjeldoranJavelineer.class));
+ cards.add(new SetCardInfo("Kjeldoran Outrider", 12, Rarity.COMMON, mage.cards.k.KjeldoranOutrider.class));
+ cards.add(new SetCardInfo("Kjeldoran War Cry", 13, Rarity.COMMON, mage.cards.k.KjeldoranWarCry.class));
+ cards.add(new SetCardInfo("Krovikan Mist", 38, Rarity.COMMON, mage.cards.k.KrovikanMist.class));
+ cards.add(new SetCardInfo("Krovikan Rot", 63, Rarity.UNCOMMON, mage.cards.k.KrovikanRot.class));
+ cards.add(new SetCardInfo("Krovikan Scoundrel", 64, Rarity.COMMON, mage.cards.k.KrovikanScoundrel.class));
+ cards.add(new SetCardInfo("Krovikan Whispers", 39, Rarity.UNCOMMON, mage.cards.k.KrovikanWhispers.class));
+ 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("Magmatic Core", 91, Rarity.UNCOMMON, mage.cards.m.MagmaticCore.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));
+ cards.add(new SetCardInfo("Martyr of Sands", 15, Rarity.COMMON, mage.cards.m.MartyrOfSands.class));
+ cards.add(new SetCardInfo("Martyr of Spores", 113, Rarity.COMMON, mage.cards.m.MartyrOfSpores.class));
+ cards.add(new SetCardInfo("Mishra's Bauble", 138, Rarity.UNCOMMON, mage.cards.m.MishrasBauble.class));
+ cards.add(new SetCardInfo("Mouth of Ronom", 148, Rarity.UNCOMMON, mage.cards.m.MouthOfRonom.class));
+ cards.add(new SetCardInfo("Mystic Melting", 114, Rarity.UNCOMMON, mage.cards.m.MysticMelting.class));
+ cards.add(new SetCardInfo("Ohran Viper", 115, Rarity.RARE, mage.cards.o.OhranViper.class));
+ cards.add(new SetCardInfo("Ohran Yeti", 93, Rarity.COMMON, mage.cards.o.OhranYeti.class));
+ cards.add(new SetCardInfo("Orcish Bloodpainter", 94, Rarity.COMMON, mage.cards.o.OrcishBloodpainter.class));
+ cards.add(new SetCardInfo("Panglacial Wurm", 116, Rarity.RARE, mage.cards.p.PanglacialWurm.class));
+ cards.add(new SetCardInfo("Perilous Research", 41, Rarity.UNCOMMON, mage.cards.p.PerilousResearch.class));
+ cards.add(new SetCardInfo("Phobian Phantasm", 66, Rarity.UNCOMMON, mage.cards.p.PhobianPhantasm.class));
+ cards.add(new SetCardInfo("Phyrexian Etchings", 67, Rarity.RARE, mage.cards.p.PhyrexianEtchings.class));
+ cards.add(new SetCardInfo("Phyrexian Ironfoot", 139, Rarity.UNCOMMON, mage.cards.p.PhyrexianIronfoot.class));
+ cards.add(new SetCardInfo("Phyrexian Snowcrusher", 140, Rarity.UNCOMMON, mage.cards.p.PhyrexianSnowcrusher.class));
+ cards.add(new SetCardInfo("Phyrexian Soulgorger", 141, Rarity.RARE, mage.cards.p.PhyrexianSoulgorger.class));
+ cards.add(new SetCardInfo("Resize", 117, Rarity.UNCOMMON, mage.cards.r.Resize.class));
+ cards.add(new SetCardInfo("Rimebound Dead", 69, Rarity.COMMON, mage.cards.r.RimeboundDead.class));
+ cards.add(new SetCardInfo("Rime Transfusion", 68, Rarity.UNCOMMON, mage.cards.r.RimeTransfusion.class));
+ cards.add(new SetCardInfo("Rimefeather Owl", 42, Rarity.RARE, mage.cards.r.RimefeatherOwl.class));
+ cards.add(new SetCardInfo("Rimehorn Aurochs", 118, Rarity.UNCOMMON, mage.cards.r.RimehornAurochs.class));
+ cards.add(new SetCardInfo("Rimescale Dragon", 95, Rarity.RARE, mage.cards.r.RimescaleDragon.class));
+ cards.add(new SetCardInfo("Rimewind Cryomancer", 43, Rarity.UNCOMMON, mage.cards.r.RimewindCryomancer.class));
+ cards.add(new SetCardInfo("Rimewind Taskmage", 44, Rarity.COMMON, mage.cards.r.RimewindTaskmage.class));
+ cards.add(new SetCardInfo("Rite of Flame", 96, Rarity.COMMON, mage.cards.r.RiteOfFlame.class));
+ cards.add(new SetCardInfo("Ronom Hulk", 119, Rarity.COMMON, mage.cards.r.RonomHulk.class));
+ cards.add(new SetCardInfo("Ronom Serpent", 45, Rarity.COMMON, mage.cards.r.RonomSerpent.class));
+ cards.add(new SetCardInfo("Ronom Unicorn", 16, Rarity.COMMON, mage.cards.r.RonomUnicorn.class));
+ cards.add(new SetCardInfo("Rune Snag", 46, Rarity.COMMON, mage.cards.r.RuneSnag.class));
+ cards.add(new SetCardInfo("Scrying Sheets", 149, Rarity.RARE, mage.cards.s.ScryingSheets.class));
+ cards.add(new SetCardInfo("Sek'Kuar, Deathkeeper", 131, Rarity.RARE, mage.cards.s.SekKuarDeathkeeper.class));
+ cards.add(new SetCardInfo("Sheltering Ancient", 121, Rarity.UNCOMMON, mage.cards.s.ShelteringAncient.class));
+ cards.add(new SetCardInfo("Simian Brawler", 122, Rarity.COMMON, mage.cards.s.SimianBrawler.class));
+ cards.add(new SetCardInfo("Skred", 97, Rarity.COMMON, mage.cards.s.Skred.class));
+ cards.add(new SetCardInfo("Snow-Covered Forest", 155, Rarity.LAND, mage.cards.s.SnowCoveredForest.class));
+ cards.add(new SetCardInfo("Snow-Covered Island", 152, Rarity.LAND, mage.cards.s.SnowCoveredIsland.class));
+ cards.add(new SetCardInfo("Snow-Covered Mountain", 154, Rarity.LAND, mage.cards.s.SnowCoveredMountain.class));
+ cards.add(new SetCardInfo("Snow-Covered Plains", 151, Rarity.LAND, mage.cards.s.SnowCoveredPlains.class));
+ cards.add(new SetCardInfo("Snow-Covered Swamp", 153, Rarity.LAND, mage.cards.s.SnowCoveredSwamp.class));
+ cards.add(new SetCardInfo("Soul Spike", 70, Rarity.RARE, mage.cards.s.SoulSpike.class));
+ cards.add(new SetCardInfo("Sound the Call", 123, Rarity.COMMON, mage.cards.s.SoundTheCall.class));
+ cards.add(new SetCardInfo("Squall Drifter", 17, Rarity.COMMON, mage.cards.s.SquallDrifter.class));
+ cards.add(new SetCardInfo("Stalking Yeti", 98, Rarity.UNCOMMON, mage.cards.s.StalkingYeti.class));
+ cards.add(new SetCardInfo("Steam Spitter", 124, Rarity.UNCOMMON, mage.cards.s.SteamSpitter.class));
+ cards.add(new SetCardInfo("Stromgald Crusader", 71, Rarity.UNCOMMON, mage.cards.s.StromgaldCrusader.class));
+ cards.add(new SetCardInfo("Sun's Bounty", 18, Rarity.COMMON, mage.cards.s.SunsBounty.class));
+ cards.add(new SetCardInfo("Sunscour", 19, Rarity.RARE, mage.cards.s.Sunscour.class));
+ cards.add(new SetCardInfo("Surging Aether", 47, Rarity.COMMON, mage.cards.s.SurgingAether.class));
+ cards.add(new SetCardInfo("Surging Dementia", 72, Rarity.COMMON, mage.cards.s.SurgingDementia.class));
+ cards.add(new SetCardInfo("Surging Flame", 99, Rarity.COMMON, mage.cards.s.SurgingFlame.class));
+ cards.add(new SetCardInfo("Surging Might", 125, Rarity.COMMON, mage.cards.s.SurgingMight.class));
+ cards.add(new SetCardInfo("Surging Sentinels", 20, Rarity.COMMON, mage.cards.s.SurgingSentinels.class));
+ cards.add(new SetCardInfo("Survivor of the Unseen", 48, Rarity.COMMON, mage.cards.s.SurvivorOfTheUnseen.class));
+ cards.add(new SetCardInfo("Swift Maneuver", 21, Rarity.COMMON, mage.cards.s.SwiftManeuver.class));
+ cards.add(new SetCardInfo("Tamanoa", 132, Rarity.RARE, mage.cards.t.Tamanoa.class));
+ cards.add(new SetCardInfo("Thermal Flux", 49, Rarity.COMMON, mage.cards.t.ThermalFlux.class));
+ cards.add(new SetCardInfo("Thermopod", 100, Rarity.COMMON, mage.cards.t.Thermopod.class));
+ cards.add(new SetCardInfo("Thrumming Stone", 142, Rarity.RARE, mage.cards.t.ThrummingStone.class));
+ cards.add(new SetCardInfo("Tresserhorn Sinks", 150, Rarity.UNCOMMON, mage.cards.t.TresserhornSinks.class));
+ cards.add(new SetCardInfo("Tresserhorn Skyknight", 73, Rarity.UNCOMMON, mage.cards.t.TresserhornSkyknight.class));
+ cards.add(new SetCardInfo("Ursine Fylgja", 22, Rarity.UNCOMMON, mage.cards.u.UrsineFylgja.class));
+ cards.add(new SetCardInfo("Vanish into Memory", 133, Rarity.UNCOMMON, mage.cards.v.VanishIntoMemory.class));
+ cards.add(new SetCardInfo("Vexing Sphinx", 50, Rarity.RARE, mage.cards.v.VexingSphinx.class));
+ cards.add(new SetCardInfo("Void Maw", 74, Rarity.RARE, mage.cards.v.VoidMaw.class));
+ cards.add(new SetCardInfo("Wall of Shards", 23, Rarity.UNCOMMON, mage.cards.w.WallOfShards.class));
+ cards.add(new SetCardInfo("White Shield Crusader", 24, Rarity.UNCOMMON, mage.cards.w.WhiteShieldCrusader.class));
+ cards.add(new SetCardInfo("Wilderness Elemental", 134, Rarity.UNCOMMON, mage.cards.w.WildernessElemental.class));
+ cards.add(new SetCardInfo("Woolly Razorback", 25, Rarity.RARE, mage.cards.w.WoollyRazorback.class));
+ cards.add(new SetCardInfo("Zombie Musher", 75, Rarity.COMMON, mage.cards.z.ZombieMusher.class));
+ cards.add(new SetCardInfo("Zur the Enchanter", 135, Rarity.RARE, mage.cards.z.ZurTheEnchanter.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Commander.java b/Mage.Sets/src/mage/sets/Commander.java
index 3460d426797..a67ecf1f67d 100644
--- a/Mage.Sets/src/mage/sets/Commander.java
+++ b/Mage.Sets/src/mage/sets/Commander.java
@@ -1,369 +1,369 @@
-/*
-* 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author LevelX2
- */
-public class Commander extends ExpansionSet {
-
- private static final Commander instance = new Commander();
-
- public static Commander getInstance() {
- return instance;
- }
-
- private Commander() {
- super("Commander", "CMD", ExpansionSet.buildDate(2011, 6, 17), SetType.SUPPLEMENTAL);
- this.blockName = "Command Zone";
- cards.add(new SetCardInfo("Acidic Slime", 140, Rarity.UNCOMMON, mage.cards.a.AcidicSlime.class));
- cards.add(new SetCardInfo("Acorn Catapult", 241, Rarity.RARE, mage.cards.a.AcornCatapult.class));
- cards.add(new SetCardInfo("Aethersnipe", 39, Rarity.COMMON, mage.cards.a.Aethersnipe.class));
- cards.add(new SetCardInfo("Afterlife", 2, Rarity.UNCOMMON, mage.cards.a.Afterlife.class));
- cards.add(new SetCardInfo("Akoum Refuge", 264, Rarity.UNCOMMON, mage.cards.a.AkoumRefuge.class));
- cards.add(new SetCardInfo("Akroma, Angel of Fury", 108, Rarity.RARE, mage.cards.a.AkromaAngelOfFury.class));
- cards.add(new SetCardInfo("Akroma's Vengeance", 3, Rarity.RARE, mage.cards.a.AkromasVengeance.class));
- cards.add(new SetCardInfo("Alliance of Arms", 4, Rarity.RARE, mage.cards.a.AllianceOfArms.class));
- cards.add(new SetCardInfo("Angelic Arbiter", 5, Rarity.RARE, mage.cards.a.AngelicArbiter.class));
- cards.add(new SetCardInfo("Angel of Despair", 180, Rarity.RARE, mage.cards.a.AngelOfDespair.class));
- cards.add(new SetCardInfo("Anger", 109, Rarity.UNCOMMON, mage.cards.a.Anger.class));
- cards.add(new SetCardInfo("Animar, Soul of Elements", 181, Rarity.MYTHIC, mage.cards.a.AnimarSoulOfElements.class));
- cards.add(new SetCardInfo("Aquastrand Spider", 141, Rarity.COMMON, mage.cards.a.AquastrandSpider.class));
- cards.add(new SetCardInfo("Arbiter of Knollridge", 6, Rarity.RARE, mage.cards.a.ArbiterOfKnollridge.class));
- cards.add(new SetCardInfo("Archangel of Strife", 7, Rarity.RARE, mage.cards.a.ArchangelOfStrife.class));
- cards.add(new SetCardInfo("Armillary Sphere", 242, Rarity.COMMON, mage.cards.a.ArmillarySphere.class));
- cards.add(new SetCardInfo("Artisan of Kozilek", 1, Rarity.UNCOMMON, mage.cards.a.ArtisanOfKozilek.class));
- cards.add(new SetCardInfo("Attrition", 72, Rarity.RARE, mage.cards.a.Attrition.class));
- cards.add(new SetCardInfo("Aura Shards", 182, Rarity.UNCOMMON, mage.cards.a.AuraShards.class));
- cards.add(new SetCardInfo("Austere Command", 8, Rarity.RARE, mage.cards.a.AustereCommand.class));
- cards.add(new SetCardInfo("Avatar of Fury", 110, Rarity.RARE, mage.cards.a.AvatarOfFury.class));
- cards.add(new SetCardInfo("Avatar of Slaughter", 111, Rarity.RARE, mage.cards.a.AvatarOfSlaughter.class));
- cards.add(new SetCardInfo("Avatar of Woe", 73, Rarity.RARE, mage.cards.a.AvatarOfWoe.class));
- cards.add(new SetCardInfo("Awakening Zone", 142, Rarity.RARE, mage.cards.a.AwakeningZone.class));
- cards.add(new SetCardInfo("Azorius Chancery", 265, Rarity.COMMON, mage.cards.a.AzoriusChancery.class));
- cards.add(new SetCardInfo("Azorius Guildmage", 183, Rarity.UNCOMMON, mage.cards.a.AzoriusGuildmage.class));
- cards.add(new SetCardInfo("Baloth Woodcrasher", 143, Rarity.UNCOMMON, mage.cards.b.BalothWoodcrasher.class));
- cards.add(new SetCardInfo("Barren Moor", 266, Rarity.COMMON, mage.cards.b.BarrenMoor.class));
- cards.add(new SetCardInfo("Basandra, Battle Seraph", 184, Rarity.RARE, mage.cards.b.BasandraBattleSeraph.class));
- cards.add(new SetCardInfo("Bathe in Light", 9, Rarity.UNCOMMON, mage.cards.b.BatheInLight.class));
- cards.add(new SetCardInfo("Bestial Menace", 144, Rarity.UNCOMMON, mage.cards.b.BestialMenace.class));
- cards.add(new SetCardInfo("Bladewing the Risen", 185, Rarity.RARE, mage.cards.b.BladewingTheRisen.class));
- cards.add(new SetCardInfo("Bojuka Bog", 267, Rarity.COMMON, mage.cards.b.BojukaBog.class));
- cards.add(new SetCardInfo("Boros Garrison", 268, Rarity.COMMON, mage.cards.b.BorosGarrison.class));
- cards.add(new SetCardInfo("Boros Guildmage", 186, Rarity.UNCOMMON, mage.cards.b.BorosGuildmage.class));
- cards.add(new SetCardInfo("Boros Signet", 243, Rarity.COMMON, mage.cards.b.BorosSignet.class));
- cards.add(new SetCardInfo("Brainstorm", 40, Rarity.COMMON, mage.cards.b.Brainstorm.class));
- cards.add(new SetCardInfo("Brawn", 145, Rarity.UNCOMMON, mage.cards.b.Brawn.class));
- cards.add(new SetCardInfo("Breath of Darigaaz", 112, Rarity.UNCOMMON, mage.cards.b.BreathOfDarigaaz.class));
- cards.add(new SetCardInfo("Brion Stoutarm", 187, Rarity.RARE, mage.cards.b.BrionStoutarm.class));
- cards.add(new SetCardInfo("Buried Alive", 74, Rarity.UNCOMMON, mage.cards.b.BuriedAlive.class));
- cards.add(new SetCardInfo("Butcher of Malakir", 75, Rarity.RARE, mage.cards.b.ButcherOfMalakir.class));
- cards.add(new SetCardInfo("Call the Skybreaker", 188, Rarity.RARE, mage.cards.c.CallTheSkybreaker.class));
- cards.add(new SetCardInfo("Celestial Force", 10, Rarity.RARE, mage.cards.c.CelestialForce.class));
- cards.add(new SetCardInfo("Chain Reaction", 113, Rarity.RARE, mage.cards.c.ChainReaction.class));
- cards.add(new SetCardInfo("Champion's Helm", 244, Rarity.RARE, mage.cards.c.ChampionsHelm.class));
- cards.add(new SetCardInfo("Chaos Warp", 114, Rarity.RARE, mage.cards.c.ChaosWarp.class));
- cards.add(new SetCardInfo("Chartooth Cougar", 115, Rarity.COMMON, mage.cards.c.ChartoothCougar.class));
- cards.add(new SetCardInfo("Chorus of the Conclave", 189, Rarity.RARE, mage.cards.c.ChorusOfTheConclave.class));
- cards.add(new SetCardInfo("Chromeshell Crab", 41, Rarity.RARE, mage.cards.c.ChromeshellCrab.class));
- cards.add(new SetCardInfo("Cleansing Beam", 116, Rarity.UNCOMMON, mage.cards.c.CleansingBeam.class));
- cards.add(new SetCardInfo("Cobra Trap", 146, Rarity.UNCOMMON, mage.cards.c.CobraTrap.class));
- cards.add(new SetCardInfo("Collective Voyage", 147, Rarity.RARE, mage.cards.c.CollectiveVoyage.class));
- cards.add(new SetCardInfo("Colossal Might", 190, Rarity.COMMON, mage.cards.c.ColossalMight.class));
- cards.add(new SetCardInfo("Comet Storm", 117, Rarity.MYTHIC, mage.cards.c.CometStorm.class));
- cards.add(new SetCardInfo("Command Tower", 269, Rarity.COMMON, mage.cards.c.CommandTower.class));
- cards.add(new SetCardInfo("Congregate", 11, Rarity.COMMON, mage.cards.c.Congregate.class));
- cards.add(new SetCardInfo("Conundrum Sphinx", 42, Rarity.RARE, mage.cards.c.ConundrumSphinx.class));
- cards.add(new SetCardInfo("Court Hussar", 43, Rarity.UNCOMMON, mage.cards.c.CourtHussar.class));
- cards.add(new SetCardInfo("Crescendo of War", 12, Rarity.RARE, mage.cards.c.CrescendoOfWar.class));
- cards.add(new SetCardInfo("Cultivate", 148, Rarity.COMMON, mage.cards.c.Cultivate.class));
- cards.add(new SetCardInfo("Damia, Sage of Stone", 191, Rarity.MYTHIC, mage.cards.d.DamiaSageOfStone.class));
- cards.add(new SetCardInfo("Dark Hatchling", 76, Rarity.RARE, mage.cards.d.DarkHatchling.class));
- cards.add(new SetCardInfo("Darksteel Ingot", 245, Rarity.COMMON, mage.cards.d.DarksteelIngot.class));
- cards.add(new SetCardInfo("Deadly Recluse", 149, Rarity.COMMON, mage.cards.d.DeadlyRecluse.class));
- cards.add(new SetCardInfo("Deadwood Treefolk", 150, Rarity.UNCOMMON, mage.cards.d.DeadwoodTreefolk.class));
- cards.add(new SetCardInfo("Death by Dragons", 118, Rarity.UNCOMMON, mage.cards.d.DeathByDragons.class));
- cards.add(new SetCardInfo("Death Mutation", 192, Rarity.UNCOMMON, mage.cards.d.DeathMutation.class));
- cards.add(new SetCardInfo("Desecrator Hag", 193, Rarity.COMMON, mage.cards.d.DesecratorHag.class));
- cards.add(new SetCardInfo("Diabolic Tutor", 77, Rarity.UNCOMMON, mage.cards.d.DiabolicTutor.class));
- cards.add(new SetCardInfo("Dimir Aqueduct", 270, Rarity.COMMON, mage.cards.d.DimirAqueduct.class));
- cards.add(new SetCardInfo("Dimir Signet", 246, Rarity.COMMON, mage.cards.d.DimirSignet.class));
- cards.add(new SetCardInfo("Disaster Radius", 119, Rarity.RARE, mage.cards.d.DisasterRadius.class));
- cards.add(new SetCardInfo("Dominus of Fealty", 194, Rarity.RARE, mage.cards.d.DominusOfFealty.class));
- cards.add(new SetCardInfo("Doom Blade", 78, Rarity.COMMON, mage.cards.d.DoomBlade.class));
- cards.add(new SetCardInfo("Dragon Whelp", 120, Rarity.UNCOMMON, mage.cards.d.DragonWhelp.class));
- cards.add(new SetCardInfo("Dread Cacodemon", 79, Rarity.RARE, mage.cards.d.DreadCacodemon.class));
- cards.add(new SetCardInfo("Dreadship Reef", 271, Rarity.UNCOMMON, mage.cards.d.DreadshipReef.class));
- cards.add(new SetCardInfo("Dreamborn Muse", 44, Rarity.RARE, mage.cards.d.DreambornMuse.class));
- cards.add(new SetCardInfo("Dreamstone Hedron", 247, Rarity.UNCOMMON, mage.cards.d.DreamstoneHedron.class));
- cards.add(new SetCardInfo("Duergar Hedge-Mage", 195, Rarity.UNCOMMON, mage.cards.d.DuergarHedgeMage.class));
- cards.add(new SetCardInfo("Earthquake", 121, Rarity.RARE, mage.cards.e.Earthquake.class));
- cards.add(new SetCardInfo("Edric, Spymaster of Trest", 196, Rarity.RARE, mage.cards.e.EdricSpymasterOfTrest.class));
- cards.add(new SetCardInfo("Electrolyze", 197, Rarity.UNCOMMON, mage.cards.e.Electrolyze.class));
- cards.add(new SetCardInfo("Elvish Aberration", 151, Rarity.UNCOMMON, mage.cards.e.ElvishAberration.class));
- cards.add(new SetCardInfo("Eternal Witness", 152, Rarity.UNCOMMON, mage.cards.e.EternalWitness.class));
- cards.add(new SetCardInfo("Evincar's Justice", 80, Rarity.COMMON, mage.cards.e.EvincarsJustice.class));
- cards.add(new SetCardInfo("Evolving Wilds", 272, Rarity.COMMON, mage.cards.e.EvolvingWilds.class));
- cards.add(new SetCardInfo("Explosive Vegetation", 153, Rarity.UNCOMMON, mage.cards.e.ExplosiveVegetation.class));
- cards.add(new SetCardInfo("Extractor Demon", 81, Rarity.RARE, mage.cards.e.ExtractorDemon.class));
- cards.add(new SetCardInfo("Fact or Fiction", 45, Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class));
- cards.add(new SetCardInfo("Fallen Angel", 82, Rarity.RARE, mage.cards.f.FallenAngel.class));
- cards.add(new SetCardInfo("False Prophet", 13, Rarity.RARE, mage.cards.f.FalseProphet.class));
- cards.add(new SetCardInfo("Faultgrinder", 122, Rarity.COMMON, mage.cards.f.Faultgrinder.class));
- cards.add(new SetCardInfo("Fellwar Stone", 248, Rarity.UNCOMMON, mage.cards.f.FellwarStone.class));
- cards.add(new SetCardInfo("Fertilid", 154, Rarity.COMMON, mage.cards.f.Fertilid.class));
- cards.add(new SetCardInfo("Fierce Empath", 155, Rarity.COMMON, mage.cards.f.FierceEmpath.class));
- cards.add(new SetCardInfo("Fire // Ice", 198, Rarity.UNCOMMON, mage.cards.f.FireIce.class));
- cards.add(new SetCardInfo("Firespout", 199, Rarity.UNCOMMON, mage.cards.f.Firespout.class));
- cards.add(new SetCardInfo("Fists of Ironwood", 156, Rarity.COMMON, mage.cards.f.FistsOfIronwood.class));
- cards.add(new SetCardInfo("Flametongue Kavu", 123, Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class));
- cards.add(new SetCardInfo("Fleshbag Marauder", 83, Rarity.UNCOMMON, mage.cards.f.FleshbagMarauder.class));
- cards.add(new SetCardInfo("Flusterstorm", 46, Rarity.RARE, mage.cards.f.Flusterstorm.class));
- cards.add(new SetCardInfo("Fog Bank", 47, Rarity.UNCOMMON, mage.cards.f.FogBank.class));
- cards.add(new SetCardInfo("Footbottom Feast", 84, Rarity.COMMON, mage.cards.f.FootbottomFeast.class));
- cards.add(new SetCardInfo("Forest", 315, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 316, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 317, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 318, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forgotten Cave", 273, Rarity.COMMON, mage.cards.f.ForgottenCave.class));
- cards.add(new SetCardInfo("Fungal Reaches", 274, Rarity.UNCOMMON, mage.cards.f.FungalReaches.class));
- cards.add(new SetCardInfo("Furnace Whelp", 124, Rarity.UNCOMMON, mage.cards.f.FurnaceWhelp.class));
- cards.add(new SetCardInfo("Garruk Wildspeaker", 157, Rarity.MYTHIC, mage.cards.g.GarrukWildspeaker.class));
- cards.add(new SetCardInfo("Ghave, Guru of Spores", 200, Rarity.MYTHIC, mage.cards.g.GhaveGuruOfSpores.class));
- cards.add(new SetCardInfo("Ghostly Prison", 14, Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class));
- cards.add(new SetCardInfo("Goblin Cadets", 125, Rarity.UNCOMMON, mage.cards.g.GoblinCadets.class));
- cards.add(new SetCardInfo("Golgari Guildmage", 201, Rarity.UNCOMMON, mage.cards.g.GolgariGuildmage.class));
- cards.add(new SetCardInfo("Golgari Rot Farm", 275, Rarity.COMMON, mage.cards.g.GolgariRotFarm.class));
- cards.add(new SetCardInfo("Golgari Signet", 249, Rarity.COMMON, mage.cards.g.GolgariSignet.class));
- cards.add(new SetCardInfo("Gomazoa", 48, Rarity.UNCOMMON, mage.cards.g.Gomazoa.class));
- cards.add(new SetCardInfo("Gravedigger", 86, Rarity.COMMON, mage.cards.g.Gravedigger.class));
- cards.add(new SetCardInfo("Grave Pact", 85, Rarity.RARE, mage.cards.g.GravePact.class));
- cards.add(new SetCardInfo("Gruul Signet", 250, Rarity.COMMON, mage.cards.g.GruulSignet.class));
- cards.add(new SetCardInfo("Gruul Turf", 276, Rarity.COMMON, mage.cards.g.GruulTurf.class));
- cards.add(new SetCardInfo("Guard Gomazoa", 49, Rarity.UNCOMMON, mage.cards.g.GuardGomazoa.class));
- cards.add(new SetCardInfo("Gwyllion Hedge-Mage", 202, Rarity.UNCOMMON, mage.cards.g.GwyllionHedgeMage.class));
- cards.add(new SetCardInfo("Harmonize", 158, Rarity.UNCOMMON, mage.cards.h.Harmonize.class));
- cards.add(new SetCardInfo("Hex", 87, Rarity.RARE, mage.cards.h.Hex.class));
- cards.add(new SetCardInfo("Homeward Path", 277, Rarity.RARE, mage.cards.h.HomewardPath.class));
- cards.add(new SetCardInfo("Hornet Queen", 159, Rarity.RARE, mage.cards.h.HornetQueen.class));
- cards.add(new SetCardInfo("Hour of Reckoning", 15, Rarity.RARE, mage.cards.h.HourOfReckoning.class));
- cards.add(new SetCardInfo("Howling Mine", 251, Rarity.RARE, mage.cards.h.HowlingMine.class));
- cards.add(new SetCardInfo("Hull Breach", 203, Rarity.COMMON, mage.cards.h.HullBreach.class));
- cards.add(new SetCardInfo("Hunting Pack", 160, Rarity.UNCOMMON, mage.cards.h.HuntingPack.class));
- cards.add(new SetCardInfo("Hydra Omnivore", 161, Rarity.RARE, mage.cards.h.HydraOmnivore.class));
- cards.add(new SetCardInfo("Insurrection", 126, Rarity.RARE, mage.cards.i.Insurrection.class));
- cards.add(new SetCardInfo("Intet, the Dreamer", 204, Rarity.RARE, mage.cards.i.IntetTheDreamer.class));
- cards.add(new SetCardInfo("Invigorate", 162, Rarity.COMMON, mage.cards.i.Invigorate.class));
- cards.add(new SetCardInfo("Island", 303, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 304, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 305, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 306, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Izzet Boilerworks", 278, Rarity.COMMON, mage.cards.i.IzzetBoilerworks.class));
- cards.add(new SetCardInfo("Izzet Chronarch", 205, Rarity.COMMON, mage.cards.i.IzzetChronarch.class));
- cards.add(new SetCardInfo("Izzet Signet", 252, Rarity.COMMON, mage.cards.i.IzzetSignet.class));
- cards.add(new SetCardInfo("Jotun Grunt", 16, Rarity.UNCOMMON, mage.cards.j.JotunGrunt.class));
- cards.add(new SetCardInfo("Journey to Nowhere", 17, Rarity.COMMON, mage.cards.j.JourneyToNowhere.class));
- cards.add(new SetCardInfo("Jwar Isle Refuge", 279, Rarity.UNCOMMON, mage.cards.j.JwarIsleRefuge.class));
- cards.add(new SetCardInfo("Kaalia of the Vast", 206, Rarity.MYTHIC, mage.cards.k.KaaliaOfTheVast.class));
- cards.add(new SetCardInfo("Karador, Ghost Chieftain", 207, Rarity.MYTHIC, mage.cards.k.KaradorGhostChieftain.class));
- cards.add(new SetCardInfo("Kazandu Refuge", 280, Rarity.UNCOMMON, mage.cards.k.KazanduRefuge.class));
- cards.add(new SetCardInfo("Kodama's Reach", 163, Rarity.COMMON, mage.cards.k.KodamasReach.class));
- cards.add(new SetCardInfo("Krosan Tusker", 164, Rarity.COMMON, mage.cards.k.KrosanTusker.class));
- cards.add(new SetCardInfo("Lash Out", 127, Rarity.COMMON, mage.cards.l.LashOut.class));
- cards.add(new SetCardInfo("Lhurgoyf", 165, Rarity.RARE, mage.cards.l.Lhurgoyf.class));
- cards.add(new SetCardInfo("Lightkeeper of Emeria", 18, Rarity.UNCOMMON, mage.cards.l.LightkeeperOfEmeria.class));
- cards.add(new SetCardInfo("Lightning Greaves", 253, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class));
- cards.add(new SetCardInfo("Living Death", 88, Rarity.RARE, mage.cards.l.LivingDeath.class));
- cards.add(new SetCardInfo("Lonely Sandbar", 281, Rarity.COMMON, mage.cards.l.LonelySandbar.class));
- cards.add(new SetCardInfo("Magmatic Force", 128, Rarity.RARE, mage.cards.m.MagmaticForce.class));
- cards.add(new SetCardInfo("Magus of the Vineyard", 166, Rarity.RARE, mage.cards.m.MagusOfTheVineyard.class));
- cards.add(new SetCardInfo("Malfegor", 208, Rarity.MYTHIC, mage.cards.m.Malfegor.class));
- cards.add(new SetCardInfo("Mana-Charged Dragon", 129, Rarity.RARE, mage.cards.m.ManaChargedDragon.class));
- cards.add(new SetCardInfo("Martyr's Bond", 19, Rarity.RARE, mage.cards.m.MartyrsBond.class));
- cards.add(new SetCardInfo("Master Warcraft", 209, Rarity.RARE, mage.cards.m.MasterWarcraft.class));
- cards.add(new SetCardInfo("Memory Erosion", 50, Rarity.RARE, mage.cards.m.MemoryErosion.class));
- cards.add(new SetCardInfo("Minds Aglow", 51, Rarity.RARE, mage.cards.m.MindsAglow.class));
- cards.add(new SetCardInfo("Molten Slagheap", 282, Rarity.UNCOMMON, mage.cards.m.MoltenSlagheap.class));
- cards.add(new SetCardInfo("Monk Realist", 20, Rarity.COMMON, mage.cards.m.MonkRealist.class));
- cards.add(new SetCardInfo("Mortify", 211, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
- cards.add(new SetCardInfo("Mortivore", 89, Rarity.RARE, mage.cards.m.Mortivore.class));
- cards.add(new SetCardInfo("Mother of Runes", 21, Rarity.UNCOMMON, mage.cards.m.MotherOfRunes.class));
- cards.add(new SetCardInfo("Mountain", 311, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 312, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 313, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 314, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mulldrifter", 52, Rarity.COMMON, mage.cards.m.Mulldrifter.class));
- cards.add(new SetCardInfo("Murmurs from Beyond", 53, Rarity.COMMON, mage.cards.m.MurmursFromBeyond.class));
- cards.add(new SetCardInfo("Nantuko Husk", 90, Rarity.UNCOMMON, mage.cards.n.NantukoHusk.class));
- cards.add(new SetCardInfo("Necrogenesis", 212, Rarity.UNCOMMON, mage.cards.n.Necrogenesis.class));
- cards.add(new SetCardInfo("Nemesis Trap", 91, Rarity.UNCOMMON, mage.cards.n.NemesisTrap.class));
- cards.add(new SetCardInfo("Nezumi Graverobber", 92, Rarity.UNCOMMON, mage.cards.n.NezumiGraverobber.class));
- cards.add(new SetCardInfo("Nin, the Pain Artist", 213, Rarity.RARE, mage.cards.n.NinThePainArtist.class));
- cards.add(new SetCardInfo("Nucklavee", 214, Rarity.UNCOMMON, mage.cards.n.Nucklavee.class));
- cards.add(new SetCardInfo("Numot, the Devastator", 215, Rarity.RARE, mage.cards.n.NumotTheDevastator.class));
- cards.add(new SetCardInfo("Oblation", 22, Rarity.RARE, mage.cards.o.Oblation.class));
- cards.add(new SetCardInfo("Oblivion Ring", 23, Rarity.COMMON, mage.cards.o.OblivionRing.class));
- cards.add(new SetCardInfo("Oblivion Stone", 254, Rarity.RARE, mage.cards.o.OblivionStone.class));
- cards.add(new SetCardInfo("Oni of Wild Places", 130, Rarity.UNCOMMON, mage.cards.o.OniOfWildPlaces.class));
- cards.add(new SetCardInfo("Orim's Thunder", 24, Rarity.COMMON, mage.cards.o.OrimsThunder.class));
- cards.add(new SetCardInfo("Oros, the Avenger", 216, Rarity.RARE, mage.cards.o.OrosTheAvenger.class));
- cards.add(new SetCardInfo("Orzhov Basilica", 283, Rarity.COMMON, mage.cards.o.OrzhovBasilica.class));
- cards.add(new SetCardInfo("Orzhov Guildmage", 217, Rarity.UNCOMMON, mage.cards.o.OrzhovGuildmage.class));
- cards.add(new SetCardInfo("Orzhov Signet", 255, Rarity.COMMON, mage.cards.o.OrzhovSignet.class));
- cards.add(new SetCardInfo("Path to Exile", 25, Rarity.UNCOMMON, mage.cards.p.PathToExile.class));
- cards.add(new SetCardInfo("Patron of the Nezumi", 93, Rarity.RARE, mage.cards.p.PatronOfTheNezumi.class));
- cards.add(new SetCardInfo("Penumbra Spider", 167, Rarity.COMMON, mage.cards.p.PenumbraSpider.class));
- cards.add(new SetCardInfo("Perilous Research", 54, Rarity.UNCOMMON, mage.cards.p.PerilousResearch.class));
- cards.add(new SetCardInfo("Plains", 299, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 300, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 301, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 302, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plumeveil", 218, Rarity.UNCOMMON, mage.cards.p.Plumeveil.class));
- cards.add(new SetCardInfo("Pollen Lullaby", 26, Rarity.UNCOMMON, mage.cards.p.PollenLullaby.class));
- cards.add(new SetCardInfo("Prison Term", 27, Rarity.UNCOMMON, mage.cards.p.PrisonTerm.class));
- cards.add(new SetCardInfo("Propaganda", 55, Rarity.UNCOMMON, mage.cards.p.Propaganda.class));
- cards.add(new SetCardInfo("Prophetic Bolt", 219, Rarity.RARE, mage.cards.p.PropheticBolt.class));
- cards.add(new SetCardInfo("Prophetic Prism", 256, Rarity.COMMON, mage.cards.p.PropheticPrism.class));
- cards.add(new SetCardInfo("Punishing Fire", 131, Rarity.UNCOMMON, mage.cards.p.PunishingFire.class));
- cards.add(new SetCardInfo("Pyrohemia", 132, Rarity.UNCOMMON, mage.cards.p.Pyrohemia.class));
- cards.add(new SetCardInfo("Rakdos Carnarium", 284, Rarity.COMMON, mage.cards.r.RakdosCarnarium.class));
- cards.add(new SetCardInfo("Rakdos Signet", 257, Rarity.COMMON, mage.cards.r.RakdosSignet.class));
- cards.add(new SetCardInfo("Rapacious One", 133, Rarity.UNCOMMON, mage.cards.r.RapaciousOne.class));
- cards.add(new SetCardInfo("Ray of Command", 56, Rarity.COMMON, mage.cards.r.RayOfCommand.class));
- cards.add(new SetCardInfo("Razorjaw Oni", 94, Rarity.UNCOMMON, mage.cards.r.RazorjawOni.class));
- cards.add(new SetCardInfo("Reins of Power", 57, Rarity.RARE, mage.cards.r.ReinsOfPower.class));
- cards.add(new SetCardInfo("Reiver Demon", 95, Rarity.RARE, mage.cards.r.ReiverDemon.class));
- cards.add(new SetCardInfo("Relic Crush", 168, Rarity.COMMON, mage.cards.r.RelicCrush.class));
- cards.add(new SetCardInfo("Repulse", 58, Rarity.COMMON, mage.cards.r.Repulse.class));
- cards.add(new SetCardInfo("Return to Dust", 28, Rarity.UNCOMMON, mage.cards.r.ReturnToDust.class));
- cards.add(new SetCardInfo("Riddlekeeper", 59, Rarity.RARE, mage.cards.r.Riddlekeeper.class));
- cards.add(new SetCardInfo("Righteous Cause", 29, Rarity.UNCOMMON, mage.cards.r.RighteousCause.class));
- cards.add(new SetCardInfo("Riku of Two Reflections", 220, Rarity.MYTHIC, mage.cards.r.RikuOfTwoReflections.class));
- cards.add(new SetCardInfo("Rise from the Grave", 96, Rarity.UNCOMMON, mage.cards.r.RiseFromTheGrave.class));
- cards.add(new SetCardInfo("Ruhan of the Fomori", 221, Rarity.MYTHIC, mage.cards.r.RuhanOfTheFomori.class));
- cards.add(new SetCardInfo("Ruination", 134, Rarity.RARE, mage.cards.r.Ruination.class));
- cards.add(new SetCardInfo("Rupture Spire", 285, Rarity.COMMON, mage.cards.r.RuptureSpire.class));
- cards.add(new SetCardInfo("Sakura-Tribe Elder", 169, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class));
- cards.add(new SetCardInfo("Savage Twister", 222, Rarity.UNCOMMON, mage.cards.s.SavageTwister.class));
- cards.add(new SetCardInfo("Scattering Stroke", 60, Rarity.UNCOMMON, mage.cards.s.ScatteringStroke.class));
- cards.add(new SetCardInfo("Scavenging Ooze", 170, Rarity.RARE, mage.cards.s.ScavengingOoze.class));
- cards.add(new SetCardInfo("Scythe Specter", 97, Rarity.RARE, mage.cards.s.ScytheSpecter.class));
- cards.add(new SetCardInfo("Secluded Steppe", 286, Rarity.COMMON, mage.cards.s.SecludedSteppe.class));
- cards.add(new SetCardInfo("Selesnya Evangel", 223, Rarity.COMMON, mage.cards.s.SelesnyaEvangel.class));
- cards.add(new SetCardInfo("Selesnya Guildmage", 224, Rarity.UNCOMMON, mage.cards.s.SelesnyaGuildmage.class));
- cards.add(new SetCardInfo("Selesnya Sanctuary", 287, Rarity.COMMON, mage.cards.s.SelesnyaSanctuary.class));
- cards.add(new SetCardInfo("Selesnya Signet", 258, Rarity.COMMON, mage.cards.s.SelesnyaSignet.class));
- cards.add(new SetCardInfo("Serra Angel", 30, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class));
- cards.add(new SetCardInfo("Sewer Nemesis", 98, Rarity.RARE, mage.cards.s.SewerNemesis.class));
- cards.add(new SetCardInfo("Shared Trauma", 99, Rarity.RARE, mage.cards.s.SharedTrauma.class));
- cards.add(new SetCardInfo("Shattered Angel", 31, Rarity.UNCOMMON, mage.cards.s.ShatteredAngel.class));
- cards.add(new SetCardInfo("Shriekmaw", 100, Rarity.UNCOMMON, mage.cards.s.Shriekmaw.class));
- cards.add(new SetCardInfo("Sigil Captain", 225, Rarity.UNCOMMON, mage.cards.s.SigilCaptain.class));
- cards.add(new SetCardInfo("Sign in Blood", 101, Rarity.COMMON, mage.cards.s.SignInBlood.class));
- cards.add(new SetCardInfo("Simic Growth Chamber", 288, Rarity.COMMON, mage.cards.s.SimicGrowthChamber.class));
- cards.add(new SetCardInfo("Simic Signet", 259, Rarity.COMMON, mage.cards.s.SimicSignet.class));
- cards.add(new SetCardInfo("Simic Sky Swallower", 226, Rarity.RARE, mage.cards.s.SimicSkySwallower.class));
- cards.add(new SetCardInfo("Skullbriar, the Walking Grave", 227, Rarity.RARE, mage.cards.s.SkullbriarTheWalkingGrave.class));
- cards.add(new SetCardInfo("Skullclamp", 260, Rarity.UNCOMMON, mage.cards.s.Skullclamp.class));
- cards.add(new SetCardInfo("Skyscribing", 61, Rarity.UNCOMMON, mage.cards.s.Skyscribing.class));
- cards.add(new SetCardInfo("Slipstream Eel", 62, Rarity.COMMON, mage.cards.s.SlipstreamEel.class));
- cards.add(new SetCardInfo("Solemn Simulacrum", 262, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class));
- cards.add(new SetCardInfo("Sol Ring", 261, Rarity.UNCOMMON, mage.cards.s.SolRing.class));
- cards.add(new SetCardInfo("Soul Snare", 32, Rarity.UNCOMMON, mage.cards.s.SoulSnare.class));
- cards.add(new SetCardInfo("Spawnwrithe", 171, Rarity.RARE, mage.cards.s.Spawnwrithe.class));
- cards.add(new SetCardInfo("Spell Crumple", 63, Rarity.UNCOMMON, mage.cards.s.SpellCrumple.class));
- cards.add(new SetCardInfo("Spike Feeder", 172, Rarity.UNCOMMON, mage.cards.s.SpikeFeeder.class));
- cards.add(new SetCardInfo("Spitebellows", 135, Rarity.UNCOMMON, mage.cards.s.Spitebellows.class));
- cards.add(new SetCardInfo("Spurnmage Advocate", 33, Rarity.UNCOMMON, mage.cards.s.SpurnmageAdvocate.class));
- cards.add(new SetCardInfo("Squallmonger", 173, Rarity.UNCOMMON, mage.cards.s.Squallmonger.class));
- cards.add(new SetCardInfo("Stitch Together", 102, Rarity.UNCOMMON, mage.cards.s.StitchTogether.class));
- cards.add(new SetCardInfo("Storm Herd", 34, Rarity.RARE, mage.cards.s.StormHerd.class));
- cards.add(new SetCardInfo("Stranglehold", 136, Rarity.RARE, mage.cards.s.Stranglehold.class));
- cards.add(new SetCardInfo("Sulfurous Blast", 137, Rarity.UNCOMMON, mage.cards.s.SulfurousBlast.class));
- cards.add(new SetCardInfo("Svogthos, the Restless Tomb", 289, Rarity.UNCOMMON, mage.cards.s.SvogthosTheRestlessTomb.class));
- cards.add(new SetCardInfo("Swamp", 307, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 308, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 309, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 310, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Symbiotic Wurm", 174, Rarity.RARE, mage.cards.s.SymbioticWurm.class));
- cards.add(new SetCardInfo("Syphon Flesh", 103, Rarity.UNCOMMON, mage.cards.s.SyphonFlesh.class));
- cards.add(new SetCardInfo("Syphon Mind", 104, Rarity.COMMON, mage.cards.s.SyphonMind.class));
- cards.add(new SetCardInfo("Szadek, Lord of Secrets", 228, Rarity.RARE, mage.cards.s.SzadekLordOfSecrets.class));
- cards.add(new SetCardInfo("Tariel, Reckoner of Souls", 229, Rarity.MYTHIC, mage.cards.t.TarielReckonerOfSouls.class));
- cards.add(new SetCardInfo("Temple of the False God", 290, Rarity.UNCOMMON, mage.cards.t.TempleOfTheFalseGod.class));
- cards.add(new SetCardInfo("Teneb, the Harvester", 230, Rarity.RARE, mage.cards.t.TenebTheHarvester.class));
- cards.add(new SetCardInfo("Terminate", 231, Rarity.COMMON, mage.cards.t.Terminate.class));
- cards.add(new SetCardInfo("Terramorphic Expanse", 291, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
- cards.add(new SetCardInfo("The Mimeoplasm", 210, Rarity.MYTHIC, mage.cards.t.TheMimeoplasm.class));
- cards.add(new SetCardInfo("Trade Secrets", 64, Rarity.RARE, mage.cards.t.TradeSecrets.class));
- cards.add(new SetCardInfo("Tranquil Thicket", 292, Rarity.COMMON, mage.cards.t.TranquilThicket.class));
- cards.add(new SetCardInfo("Trench Gorger", 65, Rarity.RARE, mage.cards.t.TrenchGorger.class));
- cards.add(new SetCardInfo("Tribute to the Wild", 175, Rarity.UNCOMMON, mage.cards.t.TributeToTheWild.class));
- cards.add(new SetCardInfo("Triskelavus", 263, Rarity.RARE, mage.cards.t.Triskelavus.class));
- cards.add(new SetCardInfo("Troll Ascetic", 176, Rarity.RARE, mage.cards.t.TrollAscetic.class));
- cards.add(new SetCardInfo("Unnerve", 105, Rarity.COMMON, mage.cards.u.Unnerve.class));
- cards.add(new SetCardInfo("Valley Rannet", 232, Rarity.COMMON, mage.cards.v.ValleyRannet.class));
- cards.add(new SetCardInfo("Vampire Nighthawk", 106, Rarity.UNCOMMON, mage.cards.v.VampireNighthawk.class));
- cards.add(new SetCardInfo("Vedalken Plotter", 66, Rarity.UNCOMMON, mage.cards.v.VedalkenPlotter.class));
- cards.add(new SetCardInfo("Vengeful Rebirth", 233, Rarity.UNCOMMON, mage.cards.v.VengefulRebirth.class));
- cards.add(new SetCardInfo("Veteran Explorer", 177, Rarity.UNCOMMON, mage.cards.v.VeteranExplorer.class));
- cards.add(new SetCardInfo("Vish Kal, Blood Arbiter", 234, Rarity.RARE, mage.cards.v.VishKalBloodArbiter.class));
- cards.add(new SetCardInfo("Vision Skeins", 67, Rarity.COMMON, mage.cards.v.VisionSkeins.class));
- cards.add(new SetCardInfo("Vivid Crag", 293, Rarity.UNCOMMON, mage.cards.v.VividCrag.class));
- cards.add(new SetCardInfo("Vivid Creek", 294, Rarity.UNCOMMON, mage.cards.v.VividCreek.class));
- cards.add(new SetCardInfo("Vivid Grove", 295, Rarity.UNCOMMON, mage.cards.v.VividGrove.class));
- cards.add(new SetCardInfo("Vivid Marsh", 296, Rarity.UNCOMMON, mage.cards.v.VividMarsh.class));
- cards.add(new SetCardInfo("Vivid Meadow", 297, Rarity.UNCOMMON, mage.cards.v.VividMeadow.class));
- cards.add(new SetCardInfo("Voice of All", 35, Rarity.RARE, mage.cards.v.VoiceOfAll.class));
- cards.add(new SetCardInfo("Vorosh, the Hunter", 235, Rarity.RARE, mage.cards.v.VoroshTheHunter.class));
- cards.add(new SetCardInfo("Vow of Duty", 36, Rarity.UNCOMMON, mage.cards.v.VowOfDuty.class));
- cards.add(new SetCardInfo("Vow of Flight", 68, Rarity.UNCOMMON, mage.cards.v.VowOfFlight.class));
- cards.add(new SetCardInfo("Vow of Lightning", 138, Rarity.UNCOMMON, mage.cards.v.VowOfLightning.class));
- cards.add(new SetCardInfo("Vow of Malice", 107, Rarity.UNCOMMON, mage.cards.v.VowOfMalice.class));
- cards.add(new SetCardInfo("Vow of Wildness", 178, Rarity.UNCOMMON, mage.cards.v.VowOfWildness.class));
- cards.add(new SetCardInfo("Vulturous Zombie", 236, Rarity.RARE, mage.cards.v.VulturousZombie.class));
- cards.add(new SetCardInfo("Wall of Denial", 237, Rarity.UNCOMMON, mage.cards.w.WallOfDenial.class));
- cards.add(new SetCardInfo("Wall of Omens", 37, Rarity.UNCOMMON, mage.cards.w.WallOfOmens.class));
- cards.add(new SetCardInfo("Whirlpool Whelm", 69, Rarity.COMMON, mage.cards.w.WhirlpoolWhelm.class));
- cards.add(new SetCardInfo("Wild Ricochet", 139, Rarity.RARE, mage.cards.w.WildRicochet.class));
- cards.add(new SetCardInfo("Windborn Muse", 38, Rarity.RARE, mage.cards.w.WindbornMuse.class));
- cards.add(new SetCardInfo("Windfall", 70, Rarity.UNCOMMON, mage.cards.w.Windfall.class));
- cards.add(new SetCardInfo("Wonder", 71, Rarity.UNCOMMON, mage.cards.w.Wonder.class));
- cards.add(new SetCardInfo("Wrecking Ball", 238, Rarity.COMMON, mage.cards.w.WreckingBall.class));
- cards.add(new SetCardInfo("Wrexial, the Risen Deep", 239, Rarity.MYTHIC, mage.cards.w.WrexialTheRisenDeep.class));
- cards.add(new SetCardInfo("Yavimaya Elder", 179, Rarity.COMMON, mage.cards.y.YavimayaElder.class));
- cards.add(new SetCardInfo("Zedruu the Greathearted", 240, Rarity.MYTHIC, mage.cards.z.ZedruuTheGreathearted.class));
- cards.add(new SetCardInfo("Zoetic Cavern", 298, Rarity.UNCOMMON, mage.cards.z.ZoeticCavern.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class Commander extends ExpansionSet {
+
+ private static final Commander instance = new Commander();
+
+ public static Commander getInstance() {
+ return instance;
+ }
+
+ private Commander() {
+ super("Commander", "CMD", ExpansionSet.buildDate(2011, 6, 17), SetType.SUPPLEMENTAL);
+ this.blockName = "Command Zone";
+ cards.add(new SetCardInfo("Acidic Slime", 140, Rarity.UNCOMMON, mage.cards.a.AcidicSlime.class));
+ cards.add(new SetCardInfo("Acorn Catapult", 241, Rarity.RARE, mage.cards.a.AcornCatapult.class));
+ cards.add(new SetCardInfo("Aethersnipe", 39, Rarity.COMMON, mage.cards.a.Aethersnipe.class));
+ cards.add(new SetCardInfo("Afterlife", 2, Rarity.UNCOMMON, mage.cards.a.Afterlife.class));
+ cards.add(new SetCardInfo("Akoum Refuge", 264, Rarity.UNCOMMON, mage.cards.a.AkoumRefuge.class));
+ cards.add(new SetCardInfo("Akroma, Angel of Fury", 108, Rarity.RARE, mage.cards.a.AkromaAngelOfFury.class));
+ cards.add(new SetCardInfo("Akroma's Vengeance", 3, Rarity.RARE, mage.cards.a.AkromasVengeance.class));
+ cards.add(new SetCardInfo("Alliance of Arms", 4, Rarity.RARE, mage.cards.a.AllianceOfArms.class));
+ cards.add(new SetCardInfo("Angelic Arbiter", 5, Rarity.RARE, mage.cards.a.AngelicArbiter.class));
+ cards.add(new SetCardInfo("Angel of Despair", 180, Rarity.RARE, mage.cards.a.AngelOfDespair.class));
+ cards.add(new SetCardInfo("Anger", 109, Rarity.UNCOMMON, mage.cards.a.Anger.class));
+ cards.add(new SetCardInfo("Animar, Soul of Elements", 181, Rarity.MYTHIC, mage.cards.a.AnimarSoulOfElements.class));
+ cards.add(new SetCardInfo("Aquastrand Spider", 141, Rarity.COMMON, mage.cards.a.AquastrandSpider.class));
+ cards.add(new SetCardInfo("Arbiter of Knollridge", 6, Rarity.RARE, mage.cards.a.ArbiterOfKnollridge.class));
+ cards.add(new SetCardInfo("Archangel of Strife", 7, Rarity.RARE, mage.cards.a.ArchangelOfStrife.class));
+ cards.add(new SetCardInfo("Armillary Sphere", 242, Rarity.COMMON, mage.cards.a.ArmillarySphere.class));
+ cards.add(new SetCardInfo("Artisan of Kozilek", 1, Rarity.UNCOMMON, mage.cards.a.ArtisanOfKozilek.class));
+ cards.add(new SetCardInfo("Attrition", 72, Rarity.RARE, mage.cards.a.Attrition.class));
+ cards.add(new SetCardInfo("Aura Shards", 182, Rarity.UNCOMMON, mage.cards.a.AuraShards.class));
+ cards.add(new SetCardInfo("Austere Command", 8, Rarity.RARE, mage.cards.a.AustereCommand.class));
+ cards.add(new SetCardInfo("Avatar of Fury", 110, Rarity.RARE, mage.cards.a.AvatarOfFury.class));
+ cards.add(new SetCardInfo("Avatar of Slaughter", 111, Rarity.RARE, mage.cards.a.AvatarOfSlaughter.class));
+ cards.add(new SetCardInfo("Avatar of Woe", 73, Rarity.RARE, mage.cards.a.AvatarOfWoe.class));
+ cards.add(new SetCardInfo("Awakening Zone", 142, Rarity.RARE, mage.cards.a.AwakeningZone.class));
+ cards.add(new SetCardInfo("Azorius Chancery", 265, Rarity.COMMON, mage.cards.a.AzoriusChancery.class));
+ cards.add(new SetCardInfo("Azorius Guildmage", 183, Rarity.UNCOMMON, mage.cards.a.AzoriusGuildmage.class));
+ cards.add(new SetCardInfo("Baloth Woodcrasher", 143, Rarity.UNCOMMON, mage.cards.b.BalothWoodcrasher.class));
+ cards.add(new SetCardInfo("Barren Moor", 266, Rarity.COMMON, mage.cards.b.BarrenMoor.class));
+ cards.add(new SetCardInfo("Basandra, Battle Seraph", 184, Rarity.RARE, mage.cards.b.BasandraBattleSeraph.class));
+ cards.add(new SetCardInfo("Bathe in Light", 9, Rarity.UNCOMMON, mage.cards.b.BatheInLight.class));
+ cards.add(new SetCardInfo("Bestial Menace", 144, Rarity.UNCOMMON, mage.cards.b.BestialMenace.class));
+ cards.add(new SetCardInfo("Bladewing the Risen", 185, Rarity.RARE, mage.cards.b.BladewingTheRisen.class));
+ cards.add(new SetCardInfo("Bojuka Bog", 267, Rarity.COMMON, mage.cards.b.BojukaBog.class));
+ cards.add(new SetCardInfo("Boros Garrison", 268, Rarity.COMMON, mage.cards.b.BorosGarrison.class));
+ cards.add(new SetCardInfo("Boros Guildmage", 186, Rarity.UNCOMMON, mage.cards.b.BorosGuildmage.class));
+ cards.add(new SetCardInfo("Boros Signet", 243, Rarity.COMMON, mage.cards.b.BorosSignet.class));
+ cards.add(new SetCardInfo("Brainstorm", 40, Rarity.COMMON, mage.cards.b.Brainstorm.class));
+ cards.add(new SetCardInfo("Brawn", 145, Rarity.UNCOMMON, mage.cards.b.Brawn.class));
+ cards.add(new SetCardInfo("Breath of Darigaaz", 112, Rarity.UNCOMMON, mage.cards.b.BreathOfDarigaaz.class));
+ cards.add(new SetCardInfo("Brion Stoutarm", 187, Rarity.RARE, mage.cards.b.BrionStoutarm.class));
+ cards.add(new SetCardInfo("Buried Alive", 74, Rarity.UNCOMMON, mage.cards.b.BuriedAlive.class));
+ cards.add(new SetCardInfo("Butcher of Malakir", 75, Rarity.RARE, mage.cards.b.ButcherOfMalakir.class));
+ cards.add(new SetCardInfo("Call the Skybreaker", 188, Rarity.RARE, mage.cards.c.CallTheSkybreaker.class));
+ cards.add(new SetCardInfo("Celestial Force", 10, Rarity.RARE, mage.cards.c.CelestialForce.class));
+ cards.add(new SetCardInfo("Chain Reaction", 113, Rarity.RARE, mage.cards.c.ChainReaction.class));
+ cards.add(new SetCardInfo("Champion's Helm", 244, Rarity.RARE, mage.cards.c.ChampionsHelm.class));
+ cards.add(new SetCardInfo("Chaos Warp", 114, Rarity.RARE, mage.cards.c.ChaosWarp.class));
+ cards.add(new SetCardInfo("Chartooth Cougar", 115, Rarity.COMMON, mage.cards.c.ChartoothCougar.class));
+ cards.add(new SetCardInfo("Chorus of the Conclave", 189, Rarity.RARE, mage.cards.c.ChorusOfTheConclave.class));
+ cards.add(new SetCardInfo("Chromeshell Crab", 41, Rarity.RARE, mage.cards.c.ChromeshellCrab.class));
+ cards.add(new SetCardInfo("Cleansing Beam", 116, Rarity.UNCOMMON, mage.cards.c.CleansingBeam.class));
+ cards.add(new SetCardInfo("Cobra Trap", 146, Rarity.UNCOMMON, mage.cards.c.CobraTrap.class));
+ cards.add(new SetCardInfo("Collective Voyage", 147, Rarity.RARE, mage.cards.c.CollectiveVoyage.class));
+ cards.add(new SetCardInfo("Colossal Might", 190, Rarity.COMMON, mage.cards.c.ColossalMight.class));
+ cards.add(new SetCardInfo("Comet Storm", 117, Rarity.MYTHIC, mage.cards.c.CometStorm.class));
+ cards.add(new SetCardInfo("Command Tower", 269, Rarity.COMMON, mage.cards.c.CommandTower.class));
+ cards.add(new SetCardInfo("Congregate", 11, Rarity.COMMON, mage.cards.c.Congregate.class));
+ cards.add(new SetCardInfo("Conundrum Sphinx", 42, Rarity.RARE, mage.cards.c.ConundrumSphinx.class));
+ cards.add(new SetCardInfo("Court Hussar", 43, Rarity.UNCOMMON, mage.cards.c.CourtHussar.class));
+ cards.add(new SetCardInfo("Crescendo of War", 12, Rarity.RARE, mage.cards.c.CrescendoOfWar.class));
+ cards.add(new SetCardInfo("Cultivate", 148, Rarity.COMMON, mage.cards.c.Cultivate.class));
+ cards.add(new SetCardInfo("Damia, Sage of Stone", 191, Rarity.MYTHIC, mage.cards.d.DamiaSageOfStone.class));
+ cards.add(new SetCardInfo("Dark Hatchling", 76, Rarity.RARE, mage.cards.d.DarkHatchling.class));
+ cards.add(new SetCardInfo("Darksteel Ingot", 245, Rarity.COMMON, mage.cards.d.DarksteelIngot.class));
+ cards.add(new SetCardInfo("Deadly Recluse", 149, Rarity.COMMON, mage.cards.d.DeadlyRecluse.class));
+ cards.add(new SetCardInfo("Deadwood Treefolk", 150, Rarity.UNCOMMON, mage.cards.d.DeadwoodTreefolk.class));
+ cards.add(new SetCardInfo("Death by Dragons", 118, Rarity.UNCOMMON, mage.cards.d.DeathByDragons.class));
+ cards.add(new SetCardInfo("Death Mutation", 192, Rarity.UNCOMMON, mage.cards.d.DeathMutation.class));
+ cards.add(new SetCardInfo("Desecrator Hag", 193, Rarity.COMMON, mage.cards.d.DesecratorHag.class));
+ cards.add(new SetCardInfo("Diabolic Tutor", 77, Rarity.UNCOMMON, mage.cards.d.DiabolicTutor.class));
+ cards.add(new SetCardInfo("Dimir Aqueduct", 270, Rarity.COMMON, mage.cards.d.DimirAqueduct.class));
+ cards.add(new SetCardInfo("Dimir Signet", 246, Rarity.COMMON, mage.cards.d.DimirSignet.class));
+ cards.add(new SetCardInfo("Disaster Radius", 119, Rarity.RARE, mage.cards.d.DisasterRadius.class));
+ cards.add(new SetCardInfo("Dominus of Fealty", 194, Rarity.RARE, mage.cards.d.DominusOfFealty.class));
+ cards.add(new SetCardInfo("Doom Blade", 78, Rarity.COMMON, mage.cards.d.DoomBlade.class));
+ cards.add(new SetCardInfo("Dragon Whelp", 120, Rarity.UNCOMMON, mage.cards.d.DragonWhelp.class));
+ cards.add(new SetCardInfo("Dread Cacodemon", 79, Rarity.RARE, mage.cards.d.DreadCacodemon.class));
+ cards.add(new SetCardInfo("Dreadship Reef", 271, Rarity.UNCOMMON, mage.cards.d.DreadshipReef.class));
+ cards.add(new SetCardInfo("Dreamborn Muse", 44, Rarity.RARE, mage.cards.d.DreambornMuse.class));
+ cards.add(new SetCardInfo("Dreamstone Hedron", 247, Rarity.UNCOMMON, mage.cards.d.DreamstoneHedron.class));
+ cards.add(new SetCardInfo("Duergar Hedge-Mage", 195, Rarity.UNCOMMON, mage.cards.d.DuergarHedgeMage.class));
+ cards.add(new SetCardInfo("Earthquake", 121, Rarity.RARE, mage.cards.e.Earthquake.class));
+ cards.add(new SetCardInfo("Edric, Spymaster of Trest", 196, Rarity.RARE, mage.cards.e.EdricSpymasterOfTrest.class));
+ cards.add(new SetCardInfo("Electrolyze", 197, Rarity.UNCOMMON, mage.cards.e.Electrolyze.class));
+ cards.add(new SetCardInfo("Elvish Aberration", 151, Rarity.UNCOMMON, mage.cards.e.ElvishAberration.class));
+ cards.add(new SetCardInfo("Eternal Witness", 152, Rarity.UNCOMMON, mage.cards.e.EternalWitness.class));
+ cards.add(new SetCardInfo("Evincar's Justice", 80, Rarity.COMMON, mage.cards.e.EvincarsJustice.class));
+ cards.add(new SetCardInfo("Evolving Wilds", 272, Rarity.COMMON, mage.cards.e.EvolvingWilds.class));
+ cards.add(new SetCardInfo("Explosive Vegetation", 153, Rarity.UNCOMMON, mage.cards.e.ExplosiveVegetation.class));
+ cards.add(new SetCardInfo("Extractor Demon", 81, Rarity.RARE, mage.cards.e.ExtractorDemon.class));
+ cards.add(new SetCardInfo("Fact or Fiction", 45, Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class));
+ cards.add(new SetCardInfo("Fallen Angel", 82, Rarity.RARE, mage.cards.f.FallenAngel.class));
+ cards.add(new SetCardInfo("False Prophet", 13, Rarity.RARE, mage.cards.f.FalseProphet.class));
+ cards.add(new SetCardInfo("Faultgrinder", 122, Rarity.COMMON, mage.cards.f.Faultgrinder.class));
+ cards.add(new SetCardInfo("Fellwar Stone", 248, Rarity.UNCOMMON, mage.cards.f.FellwarStone.class));
+ cards.add(new SetCardInfo("Fertilid", 154, Rarity.COMMON, mage.cards.f.Fertilid.class));
+ cards.add(new SetCardInfo("Fierce Empath", 155, Rarity.COMMON, mage.cards.f.FierceEmpath.class));
+ cards.add(new SetCardInfo("Fire // Ice", 198, Rarity.UNCOMMON, mage.cards.f.FireIce.class));
+ cards.add(new SetCardInfo("Firespout", 199, Rarity.UNCOMMON, mage.cards.f.Firespout.class));
+ cards.add(new SetCardInfo("Fists of Ironwood", 156, Rarity.COMMON, mage.cards.f.FistsOfIronwood.class));
+ cards.add(new SetCardInfo("Flametongue Kavu", 123, Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class));
+ cards.add(new SetCardInfo("Fleshbag Marauder", 83, Rarity.UNCOMMON, mage.cards.f.FleshbagMarauder.class));
+ cards.add(new SetCardInfo("Flusterstorm", 46, Rarity.RARE, mage.cards.f.Flusterstorm.class));
+ cards.add(new SetCardInfo("Fog Bank", 47, Rarity.UNCOMMON, mage.cards.f.FogBank.class));
+ cards.add(new SetCardInfo("Footbottom Feast", 84, Rarity.COMMON, mage.cards.f.FootbottomFeast.class));
+ cards.add(new SetCardInfo("Forest", 315, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 316, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 317, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 318, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forgotten Cave", 273, Rarity.COMMON, mage.cards.f.ForgottenCave.class));
+ cards.add(new SetCardInfo("Fungal Reaches", 274, Rarity.UNCOMMON, mage.cards.f.FungalReaches.class));
+ cards.add(new SetCardInfo("Furnace Whelp", 124, Rarity.UNCOMMON, mage.cards.f.FurnaceWhelp.class));
+ cards.add(new SetCardInfo("Garruk Wildspeaker", 157, Rarity.MYTHIC, mage.cards.g.GarrukWildspeaker.class));
+ cards.add(new SetCardInfo("Ghave, Guru of Spores", 200, Rarity.MYTHIC, mage.cards.g.GhaveGuruOfSpores.class));
+ cards.add(new SetCardInfo("Ghostly Prison", 14, Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class));
+ cards.add(new SetCardInfo("Goblin Cadets", 125, Rarity.UNCOMMON, mage.cards.g.GoblinCadets.class));
+ cards.add(new SetCardInfo("Golgari Guildmage", 201, Rarity.UNCOMMON, mage.cards.g.GolgariGuildmage.class));
+ cards.add(new SetCardInfo("Golgari Rot Farm", 275, Rarity.COMMON, mage.cards.g.GolgariRotFarm.class));
+ cards.add(new SetCardInfo("Golgari Signet", 249, Rarity.COMMON, mage.cards.g.GolgariSignet.class));
+ cards.add(new SetCardInfo("Gomazoa", 48, Rarity.UNCOMMON, mage.cards.g.Gomazoa.class));
+ cards.add(new SetCardInfo("Gravedigger", 86, Rarity.COMMON, mage.cards.g.Gravedigger.class));
+ cards.add(new SetCardInfo("Grave Pact", 85, Rarity.RARE, mage.cards.g.GravePact.class));
+ cards.add(new SetCardInfo("Gruul Signet", 250, Rarity.COMMON, mage.cards.g.GruulSignet.class));
+ cards.add(new SetCardInfo("Gruul Turf", 276, Rarity.COMMON, mage.cards.g.GruulTurf.class));
+ cards.add(new SetCardInfo("Guard Gomazoa", 49, Rarity.UNCOMMON, mage.cards.g.GuardGomazoa.class));
+ cards.add(new SetCardInfo("Gwyllion Hedge-Mage", 202, Rarity.UNCOMMON, mage.cards.g.GwyllionHedgeMage.class));
+ cards.add(new SetCardInfo("Harmonize", 158, Rarity.UNCOMMON, mage.cards.h.Harmonize.class));
+ cards.add(new SetCardInfo("Hex", 87, Rarity.RARE, mage.cards.h.Hex.class));
+ cards.add(new SetCardInfo("Homeward Path", 277, Rarity.RARE, mage.cards.h.HomewardPath.class));
+ cards.add(new SetCardInfo("Hornet Queen", 159, Rarity.RARE, mage.cards.h.HornetQueen.class));
+ cards.add(new SetCardInfo("Hour of Reckoning", 15, Rarity.RARE, mage.cards.h.HourOfReckoning.class));
+ cards.add(new SetCardInfo("Howling Mine", 251, Rarity.RARE, mage.cards.h.HowlingMine.class));
+ cards.add(new SetCardInfo("Hull Breach", 203, Rarity.COMMON, mage.cards.h.HullBreach.class));
+ cards.add(new SetCardInfo("Hunting Pack", 160, Rarity.UNCOMMON, mage.cards.h.HuntingPack.class));
+ cards.add(new SetCardInfo("Hydra Omnivore", 161, Rarity.RARE, mage.cards.h.HydraOmnivore.class));
+ cards.add(new SetCardInfo("Insurrection", 126, Rarity.RARE, mage.cards.i.Insurrection.class));
+ cards.add(new SetCardInfo("Intet, the Dreamer", 204, Rarity.RARE, mage.cards.i.IntetTheDreamer.class));
+ cards.add(new SetCardInfo("Invigorate", 162, Rarity.COMMON, mage.cards.i.Invigorate.class));
+ cards.add(new SetCardInfo("Island", 303, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 304, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 305, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 306, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Izzet Boilerworks", 278, Rarity.COMMON, mage.cards.i.IzzetBoilerworks.class));
+ cards.add(new SetCardInfo("Izzet Chronarch", 205, Rarity.COMMON, mage.cards.i.IzzetChronarch.class));
+ cards.add(new SetCardInfo("Izzet Signet", 252, Rarity.COMMON, mage.cards.i.IzzetSignet.class));
+ cards.add(new SetCardInfo("Jotun Grunt", 16, Rarity.UNCOMMON, mage.cards.j.JotunGrunt.class));
+ cards.add(new SetCardInfo("Journey to Nowhere", 17, Rarity.COMMON, mage.cards.j.JourneyToNowhere.class));
+ cards.add(new SetCardInfo("Jwar Isle Refuge", 279, Rarity.UNCOMMON, mage.cards.j.JwarIsleRefuge.class));
+ cards.add(new SetCardInfo("Kaalia of the Vast", 206, Rarity.MYTHIC, mage.cards.k.KaaliaOfTheVast.class));
+ cards.add(new SetCardInfo("Karador, Ghost Chieftain", 207, Rarity.MYTHIC, mage.cards.k.KaradorGhostChieftain.class));
+ cards.add(new SetCardInfo("Kazandu Refuge", 280, Rarity.UNCOMMON, mage.cards.k.KazanduRefuge.class));
+ cards.add(new SetCardInfo("Kodama's Reach", 163, Rarity.COMMON, mage.cards.k.KodamasReach.class));
+ cards.add(new SetCardInfo("Krosan Tusker", 164, Rarity.COMMON, mage.cards.k.KrosanTusker.class));
+ cards.add(new SetCardInfo("Lash Out", 127, Rarity.COMMON, mage.cards.l.LashOut.class));
+ cards.add(new SetCardInfo("Lhurgoyf", 165, Rarity.RARE, mage.cards.l.Lhurgoyf.class));
+ cards.add(new SetCardInfo("Lightkeeper of Emeria", 18, Rarity.UNCOMMON, mage.cards.l.LightkeeperOfEmeria.class));
+ cards.add(new SetCardInfo("Lightning Greaves", 253, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class));
+ cards.add(new SetCardInfo("Living Death", 88, Rarity.RARE, mage.cards.l.LivingDeath.class));
+ cards.add(new SetCardInfo("Lonely Sandbar", 281, Rarity.COMMON, mage.cards.l.LonelySandbar.class));
+ cards.add(new SetCardInfo("Magmatic Force", 128, Rarity.RARE, mage.cards.m.MagmaticForce.class));
+ cards.add(new SetCardInfo("Magus of the Vineyard", 166, Rarity.RARE, mage.cards.m.MagusOfTheVineyard.class));
+ cards.add(new SetCardInfo("Malfegor", 208, Rarity.MYTHIC, mage.cards.m.Malfegor.class));
+ cards.add(new SetCardInfo("Mana-Charged Dragon", 129, Rarity.RARE, mage.cards.m.ManaChargedDragon.class));
+ cards.add(new SetCardInfo("Martyr's Bond", 19, Rarity.RARE, mage.cards.m.MartyrsBond.class));
+ cards.add(new SetCardInfo("Master Warcraft", 209, Rarity.RARE, mage.cards.m.MasterWarcraft.class));
+ cards.add(new SetCardInfo("Memory Erosion", 50, Rarity.RARE, mage.cards.m.MemoryErosion.class));
+ cards.add(new SetCardInfo("Minds Aglow", 51, Rarity.RARE, mage.cards.m.MindsAglow.class));
+ cards.add(new SetCardInfo("Molten Slagheap", 282, Rarity.UNCOMMON, mage.cards.m.MoltenSlagheap.class));
+ cards.add(new SetCardInfo("Monk Realist", 20, Rarity.COMMON, mage.cards.m.MonkRealist.class));
+ cards.add(new SetCardInfo("Mortify", 211, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
+ cards.add(new SetCardInfo("Mortivore", 89, Rarity.RARE, mage.cards.m.Mortivore.class));
+ cards.add(new SetCardInfo("Mother of Runes", 21, Rarity.UNCOMMON, mage.cards.m.MotherOfRunes.class));
+ cards.add(new SetCardInfo("Mountain", 311, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 312, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 313, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 314, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mulldrifter", 52, Rarity.COMMON, mage.cards.m.Mulldrifter.class));
+ cards.add(new SetCardInfo("Murmurs from Beyond", 53, Rarity.COMMON, mage.cards.m.MurmursFromBeyond.class));
+ cards.add(new SetCardInfo("Nantuko Husk", 90, Rarity.UNCOMMON, mage.cards.n.NantukoHusk.class));
+ cards.add(new SetCardInfo("Necrogenesis", 212, Rarity.UNCOMMON, mage.cards.n.Necrogenesis.class));
+ cards.add(new SetCardInfo("Nemesis Trap", 91, Rarity.UNCOMMON, mage.cards.n.NemesisTrap.class));
+ cards.add(new SetCardInfo("Nezumi Graverobber", 92, Rarity.UNCOMMON, mage.cards.n.NezumiGraverobber.class));
+ cards.add(new SetCardInfo("Nin, the Pain Artist", 213, Rarity.RARE, mage.cards.n.NinThePainArtist.class));
+ cards.add(new SetCardInfo("Nucklavee", 214, Rarity.UNCOMMON, mage.cards.n.Nucklavee.class));
+ cards.add(new SetCardInfo("Numot, the Devastator", 215, Rarity.RARE, mage.cards.n.NumotTheDevastator.class));
+ cards.add(new SetCardInfo("Oblation", 22, Rarity.RARE, mage.cards.o.Oblation.class));
+ cards.add(new SetCardInfo("Oblivion Ring", 23, Rarity.COMMON, mage.cards.o.OblivionRing.class));
+ cards.add(new SetCardInfo("Oblivion Stone", 254, Rarity.RARE, mage.cards.o.OblivionStone.class));
+ cards.add(new SetCardInfo("Oni of Wild Places", 130, Rarity.UNCOMMON, mage.cards.o.OniOfWildPlaces.class));
+ cards.add(new SetCardInfo("Orim's Thunder", 24, Rarity.COMMON, mage.cards.o.OrimsThunder.class));
+ cards.add(new SetCardInfo("Oros, the Avenger", 216, Rarity.RARE, mage.cards.o.OrosTheAvenger.class));
+ cards.add(new SetCardInfo("Orzhov Basilica", 283, Rarity.COMMON, mage.cards.o.OrzhovBasilica.class));
+ cards.add(new SetCardInfo("Orzhov Guildmage", 217, Rarity.UNCOMMON, mage.cards.o.OrzhovGuildmage.class));
+ cards.add(new SetCardInfo("Orzhov Signet", 255, Rarity.COMMON, mage.cards.o.OrzhovSignet.class));
+ cards.add(new SetCardInfo("Path to Exile", 25, Rarity.UNCOMMON, mage.cards.p.PathToExile.class));
+ cards.add(new SetCardInfo("Patron of the Nezumi", 93, Rarity.RARE, mage.cards.p.PatronOfTheNezumi.class));
+ cards.add(new SetCardInfo("Penumbra Spider", 167, Rarity.COMMON, mage.cards.p.PenumbraSpider.class));
+ cards.add(new SetCardInfo("Perilous Research", 54, Rarity.UNCOMMON, mage.cards.p.PerilousResearch.class));
+ cards.add(new SetCardInfo("Plains", 299, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 300, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 301, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 302, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plumeveil", 218, Rarity.UNCOMMON, mage.cards.p.Plumeveil.class));
+ cards.add(new SetCardInfo("Pollen Lullaby", 26, Rarity.UNCOMMON, mage.cards.p.PollenLullaby.class));
+ cards.add(new SetCardInfo("Prison Term", 27, Rarity.UNCOMMON, mage.cards.p.PrisonTerm.class));
+ cards.add(new SetCardInfo("Propaganda", 55, Rarity.UNCOMMON, mage.cards.p.Propaganda.class));
+ cards.add(new SetCardInfo("Prophetic Bolt", 219, Rarity.RARE, mage.cards.p.PropheticBolt.class));
+ cards.add(new SetCardInfo("Prophetic Prism", 256, Rarity.COMMON, mage.cards.p.PropheticPrism.class));
+ cards.add(new SetCardInfo("Punishing Fire", 131, Rarity.UNCOMMON, mage.cards.p.PunishingFire.class));
+ cards.add(new SetCardInfo("Pyrohemia", 132, Rarity.UNCOMMON, mage.cards.p.Pyrohemia.class));
+ cards.add(new SetCardInfo("Rakdos Carnarium", 284, Rarity.COMMON, mage.cards.r.RakdosCarnarium.class));
+ cards.add(new SetCardInfo("Rakdos Signet", 257, Rarity.COMMON, mage.cards.r.RakdosSignet.class));
+ cards.add(new SetCardInfo("Rapacious One", 133, Rarity.UNCOMMON, mage.cards.r.RapaciousOne.class));
+ cards.add(new SetCardInfo("Ray of Command", 56, Rarity.COMMON, mage.cards.r.RayOfCommand.class));
+ cards.add(new SetCardInfo("Razorjaw Oni", 94, Rarity.UNCOMMON, mage.cards.r.RazorjawOni.class));
+ cards.add(new SetCardInfo("Reins of Power", 57, Rarity.RARE, mage.cards.r.ReinsOfPower.class));
+ cards.add(new SetCardInfo("Reiver Demon", 95, Rarity.RARE, mage.cards.r.ReiverDemon.class));
+ cards.add(new SetCardInfo("Relic Crush", 168, Rarity.COMMON, mage.cards.r.RelicCrush.class));
+ cards.add(new SetCardInfo("Repulse", 58, Rarity.COMMON, mage.cards.r.Repulse.class));
+ cards.add(new SetCardInfo("Return to Dust", 28, Rarity.UNCOMMON, mage.cards.r.ReturnToDust.class));
+ cards.add(new SetCardInfo("Riddlekeeper", 59, Rarity.RARE, mage.cards.r.Riddlekeeper.class));
+ cards.add(new SetCardInfo("Righteous Cause", 29, Rarity.UNCOMMON, mage.cards.r.RighteousCause.class));
+ cards.add(new SetCardInfo("Riku of Two Reflections", 220, Rarity.MYTHIC, mage.cards.r.RikuOfTwoReflections.class));
+ cards.add(new SetCardInfo("Rise from the Grave", 96, Rarity.UNCOMMON, mage.cards.r.RiseFromTheGrave.class));
+ cards.add(new SetCardInfo("Ruhan of the Fomori", 221, Rarity.MYTHIC, mage.cards.r.RuhanOfTheFomori.class));
+ cards.add(new SetCardInfo("Ruination", 134, Rarity.RARE, mage.cards.r.Ruination.class));
+ cards.add(new SetCardInfo("Rupture Spire", 285, Rarity.COMMON, mage.cards.r.RuptureSpire.class));
+ cards.add(new SetCardInfo("Sakura-Tribe Elder", 169, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class));
+ cards.add(new SetCardInfo("Savage Twister", 222, Rarity.UNCOMMON, mage.cards.s.SavageTwister.class));
+ cards.add(new SetCardInfo("Scattering Stroke", 60, Rarity.UNCOMMON, mage.cards.s.ScatteringStroke.class));
+ cards.add(new SetCardInfo("Scavenging Ooze", 170, Rarity.RARE, mage.cards.s.ScavengingOoze.class));
+ cards.add(new SetCardInfo("Scythe Specter", 97, Rarity.RARE, mage.cards.s.ScytheSpecter.class));
+ cards.add(new SetCardInfo("Secluded Steppe", 286, Rarity.COMMON, mage.cards.s.SecludedSteppe.class));
+ cards.add(new SetCardInfo("Selesnya Evangel", 223, Rarity.COMMON, mage.cards.s.SelesnyaEvangel.class));
+ cards.add(new SetCardInfo("Selesnya Guildmage", 224, Rarity.UNCOMMON, mage.cards.s.SelesnyaGuildmage.class));
+ cards.add(new SetCardInfo("Selesnya Sanctuary", 287, Rarity.COMMON, mage.cards.s.SelesnyaSanctuary.class));
+ cards.add(new SetCardInfo("Selesnya Signet", 258, Rarity.COMMON, mage.cards.s.SelesnyaSignet.class));
+ cards.add(new SetCardInfo("Serra Angel", 30, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class));
+ cards.add(new SetCardInfo("Sewer Nemesis", 98, Rarity.RARE, mage.cards.s.SewerNemesis.class));
+ cards.add(new SetCardInfo("Shared Trauma", 99, Rarity.RARE, mage.cards.s.SharedTrauma.class));
+ cards.add(new SetCardInfo("Shattered Angel", 31, Rarity.UNCOMMON, mage.cards.s.ShatteredAngel.class));
+ cards.add(new SetCardInfo("Shriekmaw", 100, Rarity.UNCOMMON, mage.cards.s.Shriekmaw.class));
+ cards.add(new SetCardInfo("Sigil Captain", 225, Rarity.UNCOMMON, mage.cards.s.SigilCaptain.class));
+ cards.add(new SetCardInfo("Sign in Blood", 101, Rarity.COMMON, mage.cards.s.SignInBlood.class));
+ cards.add(new SetCardInfo("Simic Growth Chamber", 288, Rarity.COMMON, mage.cards.s.SimicGrowthChamber.class));
+ cards.add(new SetCardInfo("Simic Signet", 259, Rarity.COMMON, mage.cards.s.SimicSignet.class));
+ cards.add(new SetCardInfo("Simic Sky Swallower", 226, Rarity.RARE, mage.cards.s.SimicSkySwallower.class));
+ cards.add(new SetCardInfo("Skullbriar, the Walking Grave", 227, Rarity.RARE, mage.cards.s.SkullbriarTheWalkingGrave.class));
+ cards.add(new SetCardInfo("Skullclamp", 260, Rarity.UNCOMMON, mage.cards.s.Skullclamp.class));
+ cards.add(new SetCardInfo("Skyscribing", 61, Rarity.UNCOMMON, mage.cards.s.Skyscribing.class));
+ cards.add(new SetCardInfo("Slipstream Eel", 62, Rarity.COMMON, mage.cards.s.SlipstreamEel.class));
+ cards.add(new SetCardInfo("Solemn Simulacrum", 262, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class));
+ cards.add(new SetCardInfo("Sol Ring", 261, Rarity.UNCOMMON, mage.cards.s.SolRing.class));
+ cards.add(new SetCardInfo("Soul Snare", 32, Rarity.UNCOMMON, mage.cards.s.SoulSnare.class));
+ cards.add(new SetCardInfo("Spawnwrithe", 171, Rarity.RARE, mage.cards.s.Spawnwrithe.class));
+ cards.add(new SetCardInfo("Spell Crumple", 63, Rarity.UNCOMMON, mage.cards.s.SpellCrumple.class));
+ cards.add(new SetCardInfo("Spike Feeder", 172, Rarity.UNCOMMON, mage.cards.s.SpikeFeeder.class));
+ cards.add(new SetCardInfo("Spitebellows", 135, Rarity.UNCOMMON, mage.cards.s.Spitebellows.class));
+ cards.add(new SetCardInfo("Spurnmage Advocate", 33, Rarity.UNCOMMON, mage.cards.s.SpurnmageAdvocate.class));
+ cards.add(new SetCardInfo("Squallmonger", 173, Rarity.UNCOMMON, mage.cards.s.Squallmonger.class));
+ cards.add(new SetCardInfo("Stitch Together", 102, Rarity.UNCOMMON, mage.cards.s.StitchTogether.class));
+ cards.add(new SetCardInfo("Storm Herd", 34, Rarity.RARE, mage.cards.s.StormHerd.class));
+ cards.add(new SetCardInfo("Stranglehold", 136, Rarity.RARE, mage.cards.s.Stranglehold.class));
+ cards.add(new SetCardInfo("Sulfurous Blast", 137, Rarity.UNCOMMON, mage.cards.s.SulfurousBlast.class));
+ cards.add(new SetCardInfo("Svogthos, the Restless Tomb", 289, Rarity.UNCOMMON, mage.cards.s.SvogthosTheRestlessTomb.class));
+ cards.add(new SetCardInfo("Swamp", 307, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 308, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 309, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 310, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Symbiotic Wurm", 174, Rarity.RARE, mage.cards.s.SymbioticWurm.class));
+ cards.add(new SetCardInfo("Syphon Flesh", 103, Rarity.UNCOMMON, mage.cards.s.SyphonFlesh.class));
+ cards.add(new SetCardInfo("Syphon Mind", 104, Rarity.COMMON, mage.cards.s.SyphonMind.class));
+ cards.add(new SetCardInfo("Szadek, Lord of Secrets", 228, Rarity.RARE, mage.cards.s.SzadekLordOfSecrets.class));
+ cards.add(new SetCardInfo("Tariel, Reckoner of Souls", 229, Rarity.MYTHIC, mage.cards.t.TarielReckonerOfSouls.class));
+ cards.add(new SetCardInfo("Temple of the False God", 290, Rarity.UNCOMMON, mage.cards.t.TempleOfTheFalseGod.class));
+ cards.add(new SetCardInfo("Teneb, the Harvester", 230, Rarity.RARE, mage.cards.t.TenebTheHarvester.class));
+ cards.add(new SetCardInfo("Terminate", 231, Rarity.COMMON, mage.cards.t.Terminate.class));
+ cards.add(new SetCardInfo("Terramorphic Expanse", 291, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
+ cards.add(new SetCardInfo("The Mimeoplasm", 210, Rarity.MYTHIC, mage.cards.t.TheMimeoplasm.class));
+ cards.add(new SetCardInfo("Trade Secrets", 64, Rarity.RARE, mage.cards.t.TradeSecrets.class));
+ cards.add(new SetCardInfo("Tranquil Thicket", 292, Rarity.COMMON, mage.cards.t.TranquilThicket.class));
+ cards.add(new SetCardInfo("Trench Gorger", 65, Rarity.RARE, mage.cards.t.TrenchGorger.class));
+ cards.add(new SetCardInfo("Tribute to the Wild", 175, Rarity.UNCOMMON, mage.cards.t.TributeToTheWild.class));
+ cards.add(new SetCardInfo("Triskelavus", 263, Rarity.RARE, mage.cards.t.Triskelavus.class));
+ cards.add(new SetCardInfo("Troll Ascetic", 176, Rarity.RARE, mage.cards.t.TrollAscetic.class));
+ cards.add(new SetCardInfo("Unnerve", 105, Rarity.COMMON, mage.cards.u.Unnerve.class));
+ cards.add(new SetCardInfo("Valley Rannet", 232, Rarity.COMMON, mage.cards.v.ValleyRannet.class));
+ cards.add(new SetCardInfo("Vampire Nighthawk", 106, Rarity.UNCOMMON, mage.cards.v.VampireNighthawk.class));
+ cards.add(new SetCardInfo("Vedalken Plotter", 66, Rarity.UNCOMMON, mage.cards.v.VedalkenPlotter.class));
+ cards.add(new SetCardInfo("Vengeful Rebirth", 233, Rarity.UNCOMMON, mage.cards.v.VengefulRebirth.class));
+ cards.add(new SetCardInfo("Veteran Explorer", 177, Rarity.UNCOMMON, mage.cards.v.VeteranExplorer.class));
+ cards.add(new SetCardInfo("Vish Kal, Blood Arbiter", 234, Rarity.RARE, mage.cards.v.VishKalBloodArbiter.class));
+ cards.add(new SetCardInfo("Vision Skeins", 67, Rarity.COMMON, mage.cards.v.VisionSkeins.class));
+ cards.add(new SetCardInfo("Vivid Crag", 293, Rarity.UNCOMMON, mage.cards.v.VividCrag.class));
+ cards.add(new SetCardInfo("Vivid Creek", 294, Rarity.UNCOMMON, mage.cards.v.VividCreek.class));
+ cards.add(new SetCardInfo("Vivid Grove", 295, Rarity.UNCOMMON, mage.cards.v.VividGrove.class));
+ cards.add(new SetCardInfo("Vivid Marsh", 296, Rarity.UNCOMMON, mage.cards.v.VividMarsh.class));
+ cards.add(new SetCardInfo("Vivid Meadow", 297, Rarity.UNCOMMON, mage.cards.v.VividMeadow.class));
+ cards.add(new SetCardInfo("Voice of All", 35, Rarity.RARE, mage.cards.v.VoiceOfAll.class));
+ cards.add(new SetCardInfo("Vorosh, the Hunter", 235, Rarity.RARE, mage.cards.v.VoroshTheHunter.class));
+ cards.add(new SetCardInfo("Vow of Duty", 36, Rarity.UNCOMMON, mage.cards.v.VowOfDuty.class));
+ cards.add(new SetCardInfo("Vow of Flight", 68, Rarity.UNCOMMON, mage.cards.v.VowOfFlight.class));
+ cards.add(new SetCardInfo("Vow of Lightning", 138, Rarity.UNCOMMON, mage.cards.v.VowOfLightning.class));
+ cards.add(new SetCardInfo("Vow of Malice", 107, Rarity.UNCOMMON, mage.cards.v.VowOfMalice.class));
+ cards.add(new SetCardInfo("Vow of Wildness", 178, Rarity.UNCOMMON, mage.cards.v.VowOfWildness.class));
+ cards.add(new SetCardInfo("Vulturous Zombie", 236, Rarity.RARE, mage.cards.v.VulturousZombie.class));
+ cards.add(new SetCardInfo("Wall of Denial", 237, Rarity.UNCOMMON, mage.cards.w.WallOfDenial.class));
+ cards.add(new SetCardInfo("Wall of Omens", 37, Rarity.UNCOMMON, mage.cards.w.WallOfOmens.class));
+ cards.add(new SetCardInfo("Whirlpool Whelm", 69, Rarity.COMMON, mage.cards.w.WhirlpoolWhelm.class));
+ cards.add(new SetCardInfo("Wild Ricochet", 139, Rarity.RARE, mage.cards.w.WildRicochet.class));
+ cards.add(new SetCardInfo("Windborn Muse", 38, Rarity.RARE, mage.cards.w.WindbornMuse.class));
+ cards.add(new SetCardInfo("Windfall", 70, Rarity.UNCOMMON, mage.cards.w.Windfall.class));
+ cards.add(new SetCardInfo("Wonder", 71, Rarity.UNCOMMON, mage.cards.w.Wonder.class));
+ cards.add(new SetCardInfo("Wrecking Ball", 238, Rarity.COMMON, mage.cards.w.WreckingBall.class));
+ cards.add(new SetCardInfo("Wrexial, the Risen Deep", 239, Rarity.MYTHIC, mage.cards.w.WrexialTheRisenDeep.class));
+ cards.add(new SetCardInfo("Yavimaya Elder", 179, Rarity.COMMON, mage.cards.y.YavimayaElder.class));
+ cards.add(new SetCardInfo("Zedruu the Greathearted", 240, Rarity.MYTHIC, mage.cards.z.ZedruuTheGreathearted.class));
+ cards.add(new SetCardInfo("Zoetic Cavern", 298, Rarity.UNCOMMON, mage.cards.z.ZoeticCavern.class));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/Commander2013.java b/Mage.Sets/src/mage/sets/Commander2013.java
index 16892d6876e..86c4c9bac5e 100644
--- a/Mage.Sets/src/mage/sets/Commander2013.java
+++ b/Mage.Sets/src/mage/sets/Commander2013.java
@@ -36,7 +36,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class Commander2013 extends ExpansionSet {
+public final class Commander2013 extends ExpansionSet {
private static final Commander2013 instance = new Commander2013();
diff --git a/Mage.Sets/src/mage/sets/Commander2014.java b/Mage.Sets/src/mage/sets/Commander2014.java
index 8b077c9a68c..426aa222c74 100644
--- a/Mage.Sets/src/mage/sets/Commander2014.java
+++ b/Mage.Sets/src/mage/sets/Commander2014.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class Commander2014 extends ExpansionSet {
+public final class Commander2014 extends ExpansionSet {
private static final Commander2014 instance = new Commander2014();
diff --git a/Mage.Sets/src/mage/sets/Commander2015.java b/Mage.Sets/src/mage/sets/Commander2015.java
index 618597c29f0..05335f5de68 100644
--- a/Mage.Sets/src/mage/sets/Commander2015.java
+++ b/Mage.Sets/src/mage/sets/Commander2015.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class Commander2015 extends ExpansionSet {
+public final class Commander2015 extends ExpansionSet {
private static final Commander2015 instance = new Commander2015();
diff --git a/Mage.Sets/src/mage/sets/Commander2016.java b/Mage.Sets/src/mage/sets/Commander2016.java
index 83c8a5e4297..263b004e424 100644
--- a/Mage.Sets/src/mage/sets/Commander2016.java
+++ b/Mage.Sets/src/mage/sets/Commander2016.java
@@ -1,402 +1,402 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author fireshoeS
- */
-public class Commander2016 extends ExpansionSet {
-
- private static final Commander2016 instance = new Commander2016();
-
- public static Commander2016 getInstance() {
- return instance;
- }
-
- private Commander2016() {
- super("Commander 2016 Edition", "C16", ExpansionSet.buildDate(2016, 11, 11), SetType.SUPPLEMENTAL);
- this.blockName = "Command Zone";
- cards.add(new SetCardInfo("Abzan Charm", 177, Rarity.UNCOMMON, mage.cards.a.AbzanCharm.class));
- cards.add(new SetCardInfo("Abzan Falconer", 57, Rarity.UNCOMMON, mage.cards.a.AbzanFalconer.class));
- cards.add(new SetCardInfo("Academy Elite", 81, Rarity.RARE, mage.cards.a.AcademyElite.class));
- cards.add(new SetCardInfo("Aeon Chronicler", 82, Rarity.RARE, mage.cards.a.AeonChronicler.class));
- cards.add(new SetCardInfo("Akiri, Line-Slinger", 26, Rarity.RARE, mage.cards.a.AkiriLineSlinger.class));
- cards.add(new SetCardInfo("Akroan Horse", 241, Rarity.RARE, mage.cards.a.AkroanHorse.class));
- cards.add(new SetCardInfo("Alesha, Who Smiles at Death", 119, Rarity.RARE, mage.cards.a.AleshaWhoSmilesAtDeath.class));
- cards.add(new SetCardInfo("Ancient Excavation", 27, Rarity.UNCOMMON, mage.cards.a.AncientExcavation.class));
- cards.add(new SetCardInfo("Ankle Shanker", 178, Rarity.RARE, mage.cards.a.AnkleShanker.class));
- cards.add(new SetCardInfo("Arcane Denial", 83, Rarity.COMMON, mage.cards.a.ArcaneDenial.class));
- cards.add(new SetCardInfo("Arcane Sanctum", 281, Rarity.UNCOMMON, mage.cards.a.ArcaneSanctum.class));
- cards.add(new SetCardInfo("Armory Automaton", 51, Rarity.RARE, mage.cards.a.ArmoryAutomaton.class));
- cards.add(new SetCardInfo("Army of the Damned", 105, Rarity.MYTHIC, mage.cards.a.ArmyOfTheDamned.class));
- cards.add(new SetCardInfo("Artifact Mutation", 179, Rarity.RARE, mage.cards.a.ArtifactMutation.class));
- cards.add(new SetCardInfo("Ash Barrens", 56, Rarity.COMMON, mage.cards.a.AshBarrens.class));
- cards.add(new SetCardInfo("Assault Suit", 242, Rarity.UNCOMMON, mage.cards.a.AssaultSuit.class));
- cards.add(new SetCardInfo("Astral Cornucopia", 243, Rarity.RARE, mage.cards.a.AstralCornucopia.class));
- cards.add(new SetCardInfo("Atraxa, Praetors' Voice", 28, Rarity.MYTHIC, mage.cards.a.AtraxaPraetorsVoice.class));
- cards.add(new SetCardInfo("Aura Mutation", 180, Rarity.RARE, mage.cards.a.AuraMutation.class));
- cards.add(new SetCardInfo("Azorius Chancery", 282, Rarity.UNCOMMON, mage.cards.a.AzoriusChancery.class));
- cards.add(new SetCardInfo("Baleful Strix", 181, Rarity.UNCOMMON, mage.cards.b.BalefulStrix.class));
- cards.add(new SetCardInfo("Bane of the Living", 106, Rarity.RARE, mage.cards.b.BaneOfTheLiving.class));
- cards.add(new SetCardInfo("Beacon of Unrest", 107, Rarity.RARE, mage.cards.b.BeaconOfUnrest.class));
- cards.add(new SetCardInfo("Beast Within", 141, Rarity.UNCOMMON, mage.cards.b.BeastWithin.class));
- cards.add(new SetCardInfo("Beastmaster Ascension", 142, Rarity.RARE, mage.cards.b.BeastmasterAscension.class));
- cards.add(new SetCardInfo("Benefactor's Draught", 21, Rarity.RARE, mage.cards.b.BenefactorsDraught.class));
- cards.add(new SetCardInfo("Bituminous Blast", 182, Rarity.UNCOMMON, mage.cards.b.BituminousBlast.class));
- cards.add(new SetCardInfo("Blasphemous Act", 120, Rarity.RARE, mage.cards.b.BlasphemousAct.class));
- cards.add(new SetCardInfo("Blazing Archon", 58, Rarity.RARE, mage.cards.b.BlazingArchon.class));
- cards.add(new SetCardInfo("Blind Obedience", 59, Rarity.RARE, mage.cards.b.BlindObedience.class));
- cards.add(new SetCardInfo("Blinkmoth Urn", 244, Rarity.RARE, mage.cards.b.BlinkmothUrn.class));
- cards.add(new SetCardInfo("Blood Tyrant", 183, Rarity.RARE, mage.cards.b.BloodTyrant.class));
- cards.add(new SetCardInfo("Bloodbraid Elf", 184, Rarity.UNCOMMON, mage.cards.b.BloodbraidElf.class));
- cards.add(new SetCardInfo("Bonehoard", 245, Rarity.RARE, mage.cards.b.Bonehoard.class));
- cards.add(new SetCardInfo("Boompile", 52, Rarity.RARE, mage.cards.b.Boompile.class));
- cards.add(new SetCardInfo("Boros Charm", 185, Rarity.UNCOMMON, mage.cards.b.BorosCharm.class));
- cards.add(new SetCardInfo("Boros Garrison", 283, Rarity.UNCOMMON, mage.cards.b.BorosGarrison.class));
- cards.add(new SetCardInfo("Brave the Sands", 60, Rarity.UNCOMMON, mage.cards.b.BraveTheSands.class));
- cards.add(new SetCardInfo("Breath of Fury", 121, Rarity.RARE, mage.cards.b.BreathOfFury.class));
- cards.add(new SetCardInfo("Bred for the Hunt", 186, Rarity.UNCOMMON, mage.cards.b.BredForTheHunt.class));
- cards.add(new SetCardInfo("Breya, Etherium Shaper", 29, Rarity.MYTHIC, mage.cards.b.BreyaEtheriumShaper.class));
- cards.add(new SetCardInfo("Bruse Tarl, Boorish Herder", 30, Rarity.MYTHIC, mage.cards.b.BruseTarlBoorishHerder.class));
- cards.add(new SetCardInfo("Brutal Hordechief", 108, Rarity.MYTHIC, mage.cards.b.BrutalHordechief.class));
- cards.add(new SetCardInfo("Burgeoning", 143, Rarity.RARE, mage.cards.b.Burgeoning.class));
- cards.add(new SetCardInfo("Buried Ruin", 284, Rarity.UNCOMMON, mage.cards.b.BuriedRuin.class));
- cards.add(new SetCardInfo("Cauldron of Souls", 246, Rarity.RARE, mage.cards.c.CauldronOfSouls.class));
- cards.add(new SetCardInfo("Cathars' Crusade", 61, Rarity.RARE, mage.cards.c.CatharsCrusade.class));
- cards.add(new SetCardInfo("Caves of Koilos", 285, Rarity.RARE, mage.cards.c.CavesOfKoilos.class));
- cards.add(new SetCardInfo("Chain of Vapor", 84, Rarity.UNCOMMON, mage.cards.c.ChainOfVapor.class));
- cards.add(new SetCardInfo("Champion of Lambholt", 144, Rarity.RARE, mage.cards.c.ChampionOfLambholt.class));
- cards.add(new SetCardInfo("Chaos Warp", 122, Rarity.RARE, mage.cards.c.ChaosWarp.class));
- cards.add(new SetCardInfo("Charging Cinderhorn", 16, Rarity.RARE, mage.cards.c.ChargingCinderhorn.class));
- cards.add(new SetCardInfo("Chasm Skulker", 85, Rarity.RARE, mage.cards.c.ChasmSkulker.class));
- cards.add(new SetCardInfo("Chief Engineer", 86, Rarity.RARE, mage.cards.c.ChiefEngineer.class));
- cards.add(new SetCardInfo("Chromatic Lantern", 247, Rarity.RARE, mage.cards.c.ChromaticLantern.class));
- cards.add(new SetCardInfo("Citadel Siege", 62, Rarity.RARE, mage.cards.c.CitadelSiege.class));
- cards.add(new SetCardInfo("Clan Defiance", 187, Rarity.RARE, mage.cards.c.ClanDefiance.class));
- cards.add(new SetCardInfo("Coastal Breach", 6, Rarity.RARE, mage.cards.c.CoastalBreach.class));
- cards.add(new SetCardInfo("Coiling Oracle", 188, Rarity.COMMON, mage.cards.c.CoilingOracle.class));
- cards.add(new SetCardInfo("Collective Voyage", 145, Rarity.RARE, mage.cards.c.CollectiveVoyage.class));
- cards.add(new SetCardInfo("Command Tower", 286, Rarity.COMMON, mage.cards.c.CommandTower.class));
- cards.add(new SetCardInfo("Commander's Sphere", 248, Rarity.COMMON, mage.cards.c.CommandersSphere.class));
- cards.add(new SetCardInfo("Conqueror's Flail", 53, Rarity.RARE, mage.cards.c.ConquerorsFlail.class));
- cards.add(new SetCardInfo("Consuming Aberration", 189, Rarity.RARE, mage.cards.c.ConsumingAberration.class));
- cards.add(new SetCardInfo("Corpsejack Menace", 190, Rarity.RARE, mage.cards.c.CorpsejackMenace.class));
- cards.add(new SetCardInfo("Crackling Doom", 191, Rarity.RARE, mage.cards.c.CracklingDoom.class));
- cards.add(new SetCardInfo("Cranial Plating", 249, Rarity.UNCOMMON, mage.cards.c.CranialPlating.class));
- cards.add(new SetCardInfo("Cruel Entertainment", 11, Rarity.RARE, mage.cards.c.CruelEntertainment.class));
- cards.add(new SetCardInfo("Crumbling Necropolis", 287, Rarity.UNCOMMON, mage.cards.c.CrumblingNecropolis.class));
- cards.add(new SetCardInfo("Crystalline Crawler", 54, Rarity.RARE, mage.cards.c.CrystallineCrawler.class));
- cards.add(new SetCardInfo("Cultivate", 146, Rarity.COMMON, mage.cards.c.Cultivate.class));
- cards.add(new SetCardInfo("Curtains' Call", 13, Rarity.RARE, mage.cards.c.CurtainsCall.class));
- cards.add(new SetCardInfo("Curse of Vengeance", 12, Rarity.RARE, mage.cards.c.CurseOfVengeance.class));
- cards.add(new SetCardInfo("Custodi Soulbinders", 63, Rarity.RARE, mage.cards.c.CustodiSoulbinders.class));
- cards.add(new SetCardInfo("Daretti, Scrap Savant", 123, Rarity.MYTHIC, mage.cards.d.DarettiScrapSavant.class));
- cards.add(new SetCardInfo("Darksteel Citadel", 288, Rarity.UNCOMMON, mage.cards.d.DarksteelCitadel.class));
- cards.add(new SetCardInfo("Darksteel Ingot", 250, Rarity.UNCOMMON, mage.cards.d.DarksteelIngot.class));
- cards.add(new SetCardInfo("Darkwater Catacombs", 289, Rarity.RARE, mage.cards.d.DarkwaterCatacombs.class));
- cards.add(new SetCardInfo("Dauntless Escort", 192, Rarity.RARE, mage.cards.d.DauntlessEscort.class));
- cards.add(new SetCardInfo("Decimate", 193, Rarity.RARE, mage.cards.d.Decimate.class));
- cards.add(new SetCardInfo("Deepglow Skate", 7, Rarity.RARE, mage.cards.d.DeepglowSkate.class));
- cards.add(new SetCardInfo("Den Protector", 147, Rarity.RARE, mage.cards.d.DenProtector.class));
- cards.add(new SetCardInfo("Devastation Tide", 87, Rarity.RARE, mage.cards.d.DevastationTide.class));
- cards.add(new SetCardInfo("Dimir Aqueduct", 290, Rarity.UNCOMMON, mage.cards.d.DimirAqueduct.class));
- cards.add(new SetCardInfo("Disdainful Stroke", 88, Rarity.COMMON, mage.cards.d.DisdainfulStroke.class));
- cards.add(new SetCardInfo("Dismal Backwater", 291, Rarity.COMMON, mage.cards.d.DismalBackwater.class));
- cards.add(new SetCardInfo("Dispeller's Capsule", 64, Rarity.COMMON, mage.cards.d.DispellersCapsule.class));
- cards.add(new SetCardInfo("Divergent Transformations", 17, Rarity.RARE, mage.cards.d.DivergentTransformations.class));
- cards.add(new SetCardInfo("Dragon Mage", 124, Rarity.RARE, mage.cards.d.DragonMage.class));
- cards.add(new SetCardInfo("Dragonskull Summit", 292, Rarity.RARE, mage.cards.d.DragonskullSummit.class));
- cards.add(new SetCardInfo("Dreadship Reef", 293, Rarity.UNCOMMON, mage.cards.d.DreadshipReef.class));
- cards.add(new SetCardInfo("Duelist's Heritage", 1, Rarity.RARE, mage.cards.d.DuelistsHeritage.class));
- cards.add(new SetCardInfo("Duneblast", 194, Rarity.RARE, mage.cards.d.Duneblast.class));
- cards.add(new SetCardInfo("Edric, Spymaster of Trest", 195, Rarity.RARE, mage.cards.e.EdricSpymasterOfTrest.class));
- cards.add(new SetCardInfo("Elite Scaleguard", 65, Rarity.UNCOMMON, mage.cards.e.EliteScaleguard.class));
- cards.add(new SetCardInfo("Empyrial Plate", 251, Rarity.RARE, mage.cards.e.EmpyrialPlate.class));
- cards.add(new SetCardInfo("Enduring Scalelord", 196, Rarity.UNCOMMON, mage.cards.e.EnduringScalelord.class));
- cards.add(new SetCardInfo("Entrapment Maneuver", 2, Rarity.RARE, mage.cards.e.EntrapmentManeuver.class));
- cards.add(new SetCardInfo("Etched Oracle", 252, Rarity.UNCOMMON, mage.cards.e.EtchedOracle.class));
- cards.add(new SetCardInfo("Etherium Sculptor", 89, Rarity.COMMON, mage.cards.e.EtheriumSculptor.class));
- cards.add(new SetCardInfo("Etherium-Horn Sorcerer", 197, Rarity.RARE, mage.cards.e.EtheriumHornSorcerer.class));
- cards.add(new SetCardInfo("Ethersworn Adjudicator", 90, Rarity.MYTHIC, mage.cards.e.EtherswornAdjudicator.class));
- cards.add(new SetCardInfo("Evacuation", 91, Rarity.RARE, mage.cards.e.Evacuation.class));
- cards.add(new SetCardInfo("Everflowing Chalice", 253, Rarity.UNCOMMON, mage.cards.e.EverflowingChalice.class));
- cards.add(new SetCardInfo("Everlasting Torment", 233, Rarity.RARE, mage.cards.e.EverlastingTorment.class));
- cards.add(new SetCardInfo("Evolutionary Escalation", 22, Rarity.UNCOMMON, mage.cards.e.EvolutionaryEscalation.class));
- cards.add(new SetCardInfo("Evolving Wilds", 294, Rarity.COMMON, mage.cards.e.EvolvingWilds.class));
- cards.add(new SetCardInfo("Executioner's Capsule", 109, Rarity.COMMON, mage.cards.e.ExecutionersCapsule.class));
- cards.add(new SetCardInfo("Exotic Orchard", 295, Rarity.RARE, mage.cards.e.ExoticOrchard.class));
- cards.add(new SetCardInfo("Faerie Artisans", 8, Rarity.RARE, mage.cards.f.FaerieArtisans.class));
- cards.add(new SetCardInfo("Far Wanderings", 148, Rarity.COMMON, mage.cards.f.FarWanderings.class));
- cards.add(new SetCardInfo("Farseek", 149, Rarity.COMMON, mage.cards.f.Farseek.class));
- cards.add(new SetCardInfo("Fathom Mage", 198, Rarity.RARE, mage.cards.f.FathomMage.class));
- cards.add(new SetCardInfo("Fellwar Stone", 254, Rarity.UNCOMMON, mage.cards.f.FellwarStone.class));
- cards.add(new SetCardInfo("Festercreep", 110, Rarity.COMMON, mage.cards.f.Festercreep.class));
- cards.add(new SetCardInfo("Filigree Angel", 199, Rarity.RARE, mage.cards.f.FiligreeAngel.class));
- cards.add(new SetCardInfo("Forbidden Orchard", 296, Rarity.RARE, mage.cards.f.ForbiddenOrchard.class));
- cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 351, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forgotten Ancient", 150, Rarity.RARE, mage.cards.f.ForgottenAncient.class));
- cards.add(new SetCardInfo("Frenzied Fugue", 18, Rarity.UNCOMMON, mage.cards.f.FrenziedFugue.class));
- cards.add(new SetCardInfo("Frontier Bivouac", 297, Rarity.UNCOMMON, mage.cards.f.FrontierBivouac.class));
- cards.add(new SetCardInfo("Gamekeeper", 151, Rarity.UNCOMMON, mage.cards.g.Gamekeeper.class));
- cards.add(new SetCardInfo("Ghastly Conscription", 111, Rarity.MYTHIC, mage.cards.g.GhastlyConscription.class));
- cards.add(new SetCardInfo("Ghave, Guru of Spores", 200, Rarity.MYTHIC, mage.cards.g.GhaveGuruOfSpores.class));
- cards.add(new SetCardInfo("Ghostly Prison", 66, Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class));
- cards.add(new SetCardInfo("Glint-Eye Nephilim", 201, Rarity.RARE, mage.cards.g.GlintEyeNephilim.class));
- cards.add(new SetCardInfo("Goblin Spymaster", 19, Rarity.RARE, mage.cards.g.GoblinSpymaster.class));
- cards.add(new SetCardInfo("Godo, Bandit Warlord", 125, Rarity.RARE, mage.cards.g.GodoBanditWarlord.class));
- cards.add(new SetCardInfo("Golgari Rot Farm", 298, Rarity.UNCOMMON, mage.cards.g.GolgariRotFarm.class));
- cards.add(new SetCardInfo("Golgari Signet", 255, Rarity.COMMON, mage.cards.g.GolgariSignet.class));
- cards.add(new SetCardInfo("Grab the Reins", 126, Rarity.UNCOMMON, mage.cards.g.GrabTheReins.class));
- cards.add(new SetCardInfo("Grand Coliseum", 299, Rarity.RARE, mage.cards.g.GrandColiseum.class));
- cards.add(new SetCardInfo("Grave Upheaval", 31, Rarity.UNCOMMON, mage.cards.g.GraveUpheaval.class));
- cards.add(new SetCardInfo("Grip of Phyresis", 9, Rarity.UNCOMMON, mage.cards.g.GripOfPhyresis.class));
- cards.add(new SetCardInfo("Gruul Signet", 256, Rarity.COMMON, mage.cards.g.GruulSignet.class));
- cards.add(new SetCardInfo("Gruul Turf", 300, Rarity.UNCOMMON, mage.cards.g.GruulTurf.class));
- cards.add(new SetCardInfo("Guiltfeeder", 112, Rarity.RARE, mage.cards.g.Guiltfeeder.class));
- cards.add(new SetCardInfo("Gwafa Hazid, Profiteer", 202, Rarity.RARE, mage.cards.g.GwafaHazidProfiteer.class));
- cards.add(new SetCardInfo("Hanna, Ship's Navigator", 203, Rarity.RARE, mage.cards.h.HannaShipsNavigator.class));
- cards.add(new SetCardInfo("Hardened Scales", 152, Rarity.RARE, mage.cards.h.HardenedScales.class));
- cards.add(new SetCardInfo("Hellkite Igniter", 127, Rarity.RARE, mage.cards.h.HellkiteIgniter.class));
- cards.add(new SetCardInfo("Hellkite Tyrant", 128, Rarity.MYTHIC, mage.cards.h.HellkiteTyrant.class));
- cards.add(new SetCardInfo("Homeward Path", 301, Rarity.RARE, mage.cards.h.HomewardPath.class));
- cards.add(new SetCardInfo("Hoofprints of the Stag", 67, Rarity.RARE, mage.cards.h.HoofprintsOfTheStag.class));
- cards.add(new SetCardInfo("Horizon Chimera", 204, Rarity.UNCOMMON, mage.cards.h.HorizonChimera.class));
- cards.add(new SetCardInfo("Howling Mine", 257, Rarity.RARE, mage.cards.h.HowlingMine.class));
- cards.add(new SetCardInfo("Humble Defector", 129, Rarity.UNCOMMON, mage.cards.h.HumbleDefector.class));
- cards.add(new SetCardInfo("Hushwing Gryff", 68, Rarity.RARE, mage.cards.h.HushwingGryff.class));
- cards.add(new SetCardInfo("Ichor Wellspring", 258, Rarity.COMMON, mage.cards.i.IchorWellspring.class));
- cards.add(new SetCardInfo("Ikra Shidiqi, the Usurper", 32, Rarity.MYTHIC, mage.cards.i.IkraShidiqiTheUsurper.class));
- cards.add(new SetCardInfo("In Garruk's Wake", 113, Rarity.RARE, mage.cards.i.InGarruksWake.class));
- cards.add(new SetCardInfo("Inspiring Call", 153, Rarity.UNCOMMON, mage.cards.i.InspiringCall.class));
- cards.add(new SetCardInfo("Iroas, God of Victory", 205, Rarity.MYTHIC, mage.cards.i.IroasGodOfVictory.class));
- cards.add(new SetCardInfo("Ishai, Ojutai Dragonspeaker", 33, Rarity.MYTHIC, mage.cards.i.IshaiOjutaiDragonspeaker.class));
- cards.add(new SetCardInfo("Island", 340, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 341, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 342, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Izzet Boilerworks", 302, Rarity.UNCOMMON, mage.cards.i.IzzetBoilerworks.class));
- cards.add(new SetCardInfo("Jor Kadeen, the Prevailer", 206, Rarity.RARE, mage.cards.j.JorKadeenThePrevailer.class));
- cards.add(new SetCardInfo("Jungle Hollow", 303, Rarity.COMMON, mage.cards.j.JungleHollow.class));
- cards.add(new SetCardInfo("Jungle Shrine", 304, Rarity.UNCOMMON, mage.cards.j.JungleShrine.class));
- cards.add(new SetCardInfo("Juniper Order Ranger", 207, Rarity.UNCOMMON, mage.cards.j.JuniperOrderRanger.class));
- cards.add(new SetCardInfo("Kalonian Hydra", 154, Rarity.MYTHIC, mage.cards.k.KalonianHydra.class));
- cards.add(new SetCardInfo("Karplusan Forest", 305, Rarity.RARE, mage.cards.k.KarplusanForest.class));
- cards.add(new SetCardInfo("Kazuul, Tyrant of the Cliffs", 130, Rarity.RARE, mage.cards.k.KazuulTyrantOfTheCliffs.class));
- cards.add(new SetCardInfo("Keening Stone", 259, Rarity.RARE, mage.cards.k.KeeningStone.class));
- cards.add(new SetCardInfo("Kodama's Reach", 155, Rarity.COMMON, mage.cards.k.KodamasReach.class));
- cards.add(new SetCardInfo("Korozda Guildmage", 208, Rarity.UNCOMMON, mage.cards.k.KorozdaGuildmage.class));
- cards.add(new SetCardInfo("Kraum, Ludevic's Opus", 34, Rarity.RARE, mage.cards.k.KraumLudevicsOpus.class));
- cards.add(new SetCardInfo("Krosan Verge", 306, Rarity.UNCOMMON, mage.cards.k.KrosanVerge.class));
- cards.add(new SetCardInfo("Kydele, Chosen of Kruphix", 35, Rarity.MYTHIC, mage.cards.k.KydeleChosenOfKruphix.class));
- cards.add(new SetCardInfo("Kynaios and Tiro of Meletis", 36, Rarity.MYTHIC, mage.cards.k.KynaiosAndTiroOfMeletis.class));
- cards.add(new SetCardInfo("Languish", 114, Rarity.RARE, mage.cards.l.Languish.class));
- cards.add(new SetCardInfo("Lavalanche", 209, Rarity.RARE, mage.cards.l.Lavalanche.class));
- cards.add(new SetCardInfo("Lightning Greaves", 260, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class));
- cards.add(new SetCardInfo("Loxodon Warhammer", 261, Rarity.UNCOMMON, mage.cards.l.LoxodonWarhammer.class));
- cards.add(new SetCardInfo("Ludevic, Necro-Alchemist", 37, Rarity.MYTHIC, mage.cards.l.LudevicNecroAlchemist.class));
- cards.add(new SetCardInfo("Lurking Predators", 156, Rarity.RARE, mage.cards.l.LurkingPredators.class));
- cards.add(new SetCardInfo("Magus of the Will", 14, Rarity.RARE, mage.cards.m.MagusOfTheWill.class));
- cards.add(new SetCardInfo("Managorger Hydra", 157, Rarity.RARE, mage.cards.m.ManagorgerHydra.class));
- cards.add(new SetCardInfo("Manifold Insights", 10, Rarity.RARE, mage.cards.m.ManifoldInsights.class));
- cards.add(new SetCardInfo("Master Biomancer", 210, Rarity.MYTHIC, mage.cards.m.MasterBiomancer.class));
- cards.add(new SetCardInfo("Master of Etherium", 92, Rarity.RARE, mage.cards.m.MasterOfEtherium.class));
- cards.add(new SetCardInfo("Mentor of the Meek", 69, Rarity.RARE, mage.cards.m.MentorOfTheMeek.class));
- cards.add(new SetCardInfo("Merciless Eviction", 211, Rarity.RARE, mage.cards.m.MercilessEviction.class));
- cards.add(new SetCardInfo("Migratory Route", 38, Rarity.UNCOMMON, mage.cards.m.MigratoryRoute.class));
- cards.add(new SetCardInfo("Minds Aglow", 93, Rarity.RARE, mage.cards.m.MindsAglow.class));
- cards.add(new SetCardInfo("Mirror Entity", 70, Rarity.RARE, mage.cards.m.MirrorEntity.class));
- cards.add(new SetCardInfo("Mirrorweave", 234, Rarity.RARE, mage.cards.m.Mirrorweave.class));
- cards.add(new SetCardInfo("Mortify", 212, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
- cards.add(new SetCardInfo("Mosswort Bridge", 307, Rarity.RARE, mage.cards.m.MosswortBridge.class));
- cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 347, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 348, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Murmuring Bosk", 308, Rarity.RARE, mage.cards.m.MurmuringBosk.class));
- cards.add(new SetCardInfo("Mycoloth", 158, Rarity.RARE, mage.cards.m.Mycoloth.class));
- cards.add(new SetCardInfo("Mycosynth Wellspring", 262, Rarity.COMMON, mage.cards.m.MycosynthWellspring.class));
- cards.add(new SetCardInfo("Myr Battlesphere", 263, Rarity.RARE, mage.cards.m.MyrBattlesphere.class));
- cards.add(new SetCardInfo("Myr Retriever", 264, Rarity.UNCOMMON, mage.cards.m.MyrRetriever.class));
- cards.add(new SetCardInfo("Myriad Landscape", 309, Rarity.UNCOMMON, mage.cards.m.MyriadLandscape.class));
- cards.add(new SetCardInfo("Mystic Monastery", 310, Rarity.UNCOMMON, mage.cards.m.MysticMonastery.class));
- cards.add(new SetCardInfo("Nath of the Gilt-Leaf", 213, Rarity.RARE, mage.cards.n.NathOfTheGiltLeaf.class));
- cards.add(new SetCardInfo("Naya Charm", 214, Rarity.UNCOMMON, mage.cards.n.NayaCharm.class));
- cards.add(new SetCardInfo("Necrogenesis", 215, Rarity.UNCOMMON, mage.cards.n.Necrogenesis.class));
- cards.add(new SetCardInfo("Necroplasm", 115, Rarity.RARE, mage.cards.n.Necroplasm.class));
- cards.add(new SetCardInfo("Nevinyrral's Disk", 265, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class));
- cards.add(new SetCardInfo("Nomad Outpost", 311, Rarity.UNCOMMON, mage.cards.n.NomadOutpost.class));
- cards.add(new SetCardInfo("Oath of Druids", 159, Rarity.RARE, mage.cards.o.OathOfDruids.class));
- cards.add(new SetCardInfo("Oblation", 71, Rarity.RARE, mage.cards.o.Oblation.class));
- cards.add(new SetCardInfo("Opal Palace", 312, Rarity.COMMON, mage.cards.o.OpalPalace.class));
- cards.add(new SetCardInfo("Open the Vaults", 72, Rarity.RARE, mage.cards.o.OpenTheVaults.class));
- cards.add(new SetCardInfo("Opulent Palace", 313, Rarity.UNCOMMON, mage.cards.o.OpulentPalace.class));
- cards.add(new SetCardInfo("Order // Chaos", 240, Rarity.UNCOMMON, mage.cards.o.OrderChaos.class));
- cards.add(new SetCardInfo("Orzhov Advokist", 3, Rarity.UNCOMMON, mage.cards.o.OrzhovAdvokist.class));
- cards.add(new SetCardInfo("Orzhov Basilica", 314, Rarity.UNCOMMON, mage.cards.o.OrzhovBasilica.class));
- cards.add(new SetCardInfo("Orzhov Signet", 266, Rarity.COMMON, mage.cards.o.OrzhovSignet.class));
- cards.add(new SetCardInfo("Parting Thoughts", 15, Rarity.UNCOMMON, mage.cards.p.PartingThoughts.class));
- cards.add(new SetCardInfo("Past in Flames", 131, Rarity.MYTHIC, mage.cards.p.PastInFlames.class));
- cards.add(new SetCardInfo("Phyrexian Rebirth", 73, Rarity.RARE, mage.cards.p.PhyrexianRebirth.class));
- cards.add(new SetCardInfo("Plains", 337, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 338, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 339, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Primeval Protector", 23, Rarity.RARE, mage.cards.p.PrimevalProtector.class));
- cards.add(new SetCardInfo("Prismatic Geoscope", 55, Rarity.RARE, mage.cards.p.PrismaticGeoscope.class));
- cards.add(new SetCardInfo("Progenitor Mimic", 216, Rarity.MYTHIC, mage.cards.p.ProgenitorMimic.class));
- cards.add(new SetCardInfo("Propaganda", 94, Rarity.UNCOMMON, mage.cards.p.Propaganda.class));
- cards.add(new SetCardInfo("Psychosis Crawler", 267, Rarity.RARE, mage.cards.p.PsychosisCrawler.class));
- cards.add(new SetCardInfo("Putrefy", 217, Rarity.UNCOMMON, mage.cards.p.Putrefy.class));
- cards.add(new SetCardInfo("Quirion Explorer", 160, Rarity.COMMON, mage.cards.q.QuirionExplorer.class));
- cards.add(new SetCardInfo("Rakdos Carnarium", 315, Rarity.UNCOMMON, mage.cards.r.RakdosCarnarium.class));
- cards.add(new SetCardInfo("Rakdos Charm", 218, Rarity.UNCOMMON, mage.cards.r.RakdosCharm.class));
- cards.add(new SetCardInfo("Rakdos Signet", 268, Rarity.COMMON, mage.cards.r.RakdosSignet.class));
- cards.add(new SetCardInfo("Rampant Growth", 161, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
- cards.add(new SetCardInfo("Ravos, Soultender", 39, Rarity.MYTHIC, mage.cards.r.RavosSoultender.class));
- cards.add(new SetCardInfo("Read the Runes", 95, Rarity.RARE, mage.cards.r.ReadTheRunes.class));
- cards.add(new SetCardInfo("Realm Seekers", 162, Rarity.RARE, mage.cards.r.RealmSeekers.class));
- cards.add(new SetCardInfo("Reforge the Soul", 132, Rarity.RARE, mage.cards.r.ReforgeTheSoul.class));
- cards.add(new SetCardInfo("Reins of Power", 96, Rarity.RARE, mage.cards.r.ReinsOfPower.class));
- cards.add(new SetCardInfo("Reliquary Tower", 316, Rarity.UNCOMMON, mage.cards.r.ReliquaryTower.class));
- cards.add(new SetCardInfo("Reveillark", 74, Rarity.RARE, mage.cards.r.Reveillark.class));
- cards.add(new SetCardInfo("Reverse the Sands", 75, Rarity.RARE, mage.cards.r.ReverseTheSands.class));
- cards.add(new SetCardInfo("Reyhan, Last of the Abzan", 40, Rarity.RARE, mage.cards.r.ReyhanLastOfTheAbzan.class));
- cards.add(new SetCardInfo("Rites of Flourishing", 163, Rarity.RARE, mage.cards.r.RitesOfFlourishing.class));
- cards.add(new SetCardInfo("Rootbound Crag", 317, Rarity.RARE, mage.cards.r.RootboundCrag.class));
- cards.add(new SetCardInfo("Rubblehulk", 219, Rarity.RARE, mage.cards.r.Rubblehulk.class));
- cards.add(new SetCardInfo("Rugged Highlands", 318, Rarity.COMMON, mage.cards.r.RuggedHighlands.class));
- cards.add(new SetCardInfo("Runehorn Hellkite", 20, Rarity.RARE, mage.cards.r.RunehornHellkite.class));
- cards.add(new SetCardInfo("Rupture Spire", 319, Rarity.COMMON, mage.cards.r.RuptureSpire.class));
- cards.add(new SetCardInfo("Sakura-Tribe Elder", 164, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class));
- cards.add(new SetCardInfo("Sanctum Gargoyle", 76, Rarity.COMMON, mage.cards.s.SanctumGargoyle.class));
- cards.add(new SetCardInfo("Sandsteppe Citadel", 320, Rarity.UNCOMMON, mage.cards.s.SandsteppeCitadel.class));
- cards.add(new SetCardInfo("Sangromancer", 116, Rarity.RARE, mage.cards.s.Sangromancer.class));
- cards.add(new SetCardInfo("Saskia the Unyielding", 41, Rarity.MYTHIC, mage.cards.s.SaskiaTheUnyielding.class));
- cards.add(new SetCardInfo("Satyr Wayfinder", 165, Rarity.COMMON, mage.cards.s.SatyrWayfinder.class));
- cards.add(new SetCardInfo("Savage Lands", 321, Rarity.UNCOMMON, mage.cards.s.SavageLands.class));
- cards.add(new SetCardInfo("Scavenging Ooze", 166, Rarity.RARE, mage.cards.s.ScavengingOoze.class));
- cards.add(new SetCardInfo("Seaside Citadel", 322, Rarity.UNCOMMON, mage.cards.s.SeasideCitadel.class));
- cards.add(new SetCardInfo("Seat of the Synod", 323, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class));
- cards.add(new SetCardInfo("Seeds of Renewal", 24, Rarity.RARE, mage.cards.s.SeedsOfRenewal.class));
- cards.add(new SetCardInfo("Selesnya Guildmage", 235, Rarity.UNCOMMON, mage.cards.s.SelesnyaGuildmage.class));
- cards.add(new SetCardInfo("Selesnya Sanctuary", 324, Rarity.UNCOMMON, mage.cards.s.SelesnyaSanctuary.class));
- cards.add(new SetCardInfo("Selfless Squire", 4, Rarity.RARE, mage.cards.s.SelflessSquire.class));
- cards.add(new SetCardInfo("Selvala, Explorer Returned", 220, Rarity.RARE, mage.cards.s.SelvalaExplorerReturned.class));
- cards.add(new SetCardInfo("Shadowblood Ridge", 325, Rarity.RARE, mage.cards.s.ShadowbloodRidge.class));
- cards.add(new SetCardInfo("Shamanic Revelation", 167, Rarity.RARE, mage.cards.s.ShamanicRevelation.class));
- cards.add(new SetCardInfo("Sharuum the Hegemon", 221, Rarity.MYTHIC, mage.cards.s.SharuumTheHegemon.class));
- cards.add(new SetCardInfo("Shimmer Myr", 269, Rarity.RARE, mage.cards.s.ShimmerMyr.class));
- cards.add(new SetCardInfo("Sidar Kondo of Jamuraa", 42, Rarity.MYTHIC, mage.cards.s.SidarKondoOfJamuraa.class));
- cards.add(new SetCardInfo("Silas Renn, Seeker Adept", 43, Rarity.MYTHIC, mage.cards.s.SilasRennSeekerAdept.class));
- cards.add(new SetCardInfo("Simic Growth Chamber", 326, Rarity.UNCOMMON, mage.cards.s.SimicGrowthChamber.class));
- cards.add(new SetCardInfo("Simic Signet", 270, Rarity.COMMON, mage.cards.s.SimicSignet.class));
- cards.add(new SetCardInfo("Skullclamp", 271, Rarity.UNCOMMON, mage.cards.s.Skullclamp.class));
- cards.add(new SetCardInfo("Slobad, Goblin Tinkerer", 133, Rarity.RARE, mage.cards.s.SlobadGoblinTinkerer.class));
- cards.add(new SetCardInfo("Sol Ring", 272, Rarity.UNCOMMON, mage.cards.s.SolRing.class));
- cards.add(new SetCardInfo("Solemn Simulacrum", 273, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class));
- cards.add(new SetCardInfo("Solidarity of Heroes", 168, Rarity.UNCOMMON, mage.cards.s.SolidarityOfHeroes.class));
- cards.add(new SetCardInfo("Soul of New Phyrexia", 274, Rarity.MYTHIC, mage.cards.s.SoulOfNewPhyrexia.class));
- cards.add(new SetCardInfo("Spellheart Chimera", 222, Rarity.UNCOMMON, mage.cards.s.SpellheartChimera.class));
- cards.add(new SetCardInfo("Spelltwine", 97, Rarity.RARE, mage.cards.s.Spelltwine.class));
- cards.add(new SetCardInfo("Sphere of Safety", 77, Rarity.UNCOMMON, mage.cards.s.SphereOfSafety.class));
- cards.add(new SetCardInfo("Sphinx Summoner", 223, Rarity.RARE, mage.cards.s.SphinxSummoner.class));
- cards.add(new SetCardInfo("Spinerock Knoll", 327, Rarity.RARE, mage.cards.s.SpinerockKnoll.class));
- cards.add(new SetCardInfo("Spitting Image", 236, Rarity.RARE, mage.cards.s.SpittingImage.class));
- cards.add(new SetCardInfo("Stalking Vengeance", 134, Rarity.RARE, mage.cards.s.StalkingVengeance.class));
- cards.add(new SetCardInfo("Stonehoof Chieftain", 25, Rarity.RARE, mage.cards.s.StonehoofChieftain.class));
- cards.add(new SetCardInfo("Sublime Exhalation", 5, Rarity.RARE, mage.cards.s.SublimeExhalation.class));
- cards.add(new SetCardInfo("Sunforger", 275, Rarity.RARE, mage.cards.s.Sunforger.class));
- cards.add(new SetCardInfo("Sungrass Prairie", 328, Rarity.RARE, mage.cards.s.SungrassPrairie.class));
- cards.add(new SetCardInfo("Sunpetal Grove", 329, Rarity.RARE, mage.cards.s.SunpetalGrove.class));
- cards.add(new SetCardInfo("Swamp", 343, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 344, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 345, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swan Song", 98, Rarity.RARE, mage.cards.s.SwanSong.class));
- cards.add(new SetCardInfo("Swiftfoot Boots", 276, Rarity.UNCOMMON, mage.cards.s.SwiftfootBoots.class));
- cards.add(new SetCardInfo("Swiftwater Cliffs", 330, Rarity.COMMON, mage.cards.s.SwiftwaterCliffs.class));
- cards.add(new SetCardInfo("Swords to Plowshares", 78, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
- cards.add(new SetCardInfo("Sydri, Galvanic Genius", 224, Rarity.MYTHIC, mage.cards.s.SydriGalvanicGenius.class));
- cards.add(new SetCardInfo("Sylvan Reclamation", 44, Rarity.UNCOMMON, mage.cards.s.SylvanReclamation.class));
- cards.add(new SetCardInfo("Sylvok Explorer", 169, Rarity.COMMON, mage.cards.s.SylvokExplorer.class));
- cards.add(new SetCardInfo("Tana, the Bloodsower", 45, Rarity.MYTHIC, mage.cards.t.TanaTheBloodsower.class));
- cards.add(new SetCardInfo("Taurean Mauler", 135, Rarity.RARE, mage.cards.t.TaureanMauler.class));
- cards.add(new SetCardInfo("Temple Bell", 277, Rarity.RARE, mage.cards.t.TempleBell.class));
- cards.add(new SetCardInfo("Temple of the False God", 331, Rarity.UNCOMMON, mage.cards.t.TempleOfTheFalseGod.class));
- cards.add(new SetCardInfo("Tempt with Discovery", 170, Rarity.RARE, mage.cards.t.TemptWithDiscovery.class));
- cards.add(new SetCardInfo("Terminate", 225, Rarity.COMMON, mage.cards.t.Terminate.class));
- cards.add(new SetCardInfo("Terramorphic Expanse", 332, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
- cards.add(new SetCardInfo("Tezzeret's Gambit", 99, Rarity.UNCOMMON, mage.cards.t.TezzeretsGambit.class));
- cards.add(new SetCardInfo("Thelonite Hermit", 171, Rarity.RARE, mage.cards.t.TheloniteHermit.class));
- cards.add(new SetCardInfo("Thopter Foundry", 237, Rarity.UNCOMMON, mage.cards.t.ThopterFoundry.class));
- cards.add(new SetCardInfo("Thornwood Falls", 333, Rarity.COMMON, mage.cards.t.ThornwoodFalls.class));
- cards.add(new SetCardInfo("Thrasios, Triton Hero", 46, Rarity.RARE, mage.cards.t.ThrasiosTritonHero.class));
- cards.add(new SetCardInfo("Thrummingbird", 100, Rarity.UNCOMMON, mage.cards.t.Thrummingbird.class));
- cards.add(new SetCardInfo("Thunderfoot Baloth", 172, Rarity.RARE, mage.cards.t.ThunderfootBaloth.class));
- cards.add(new SetCardInfo("Trading Post", 278, Rarity.RARE, mage.cards.t.TradingPost.class));
- cards.add(new SetCardInfo("Transguild Promenade", 334, Rarity.COMMON, mage.cards.t.TransguildPromenade.class));
- cards.add(new SetCardInfo("Trash for Treasure", 136, Rarity.RARE, mage.cards.t.TrashForTreasure.class));
- cards.add(new SetCardInfo("Treacherous Terrain", 47, Rarity.UNCOMMON, mage.cards.t.TreacherousTerrain.class));
- cards.add(new SetCardInfo("Treasure Cruise", 101, Rarity.COMMON, mage.cards.t.TreasureCruise.class));
- cards.add(new SetCardInfo("Trial // Error", 239, Rarity.UNCOMMON, mage.cards.t.TrialError.class));
- cards.add(new SetCardInfo("Trinket Mage", 102, Rarity.COMMON, mage.cards.t.TrinketMage.class));
- cards.add(new SetCardInfo("Tuskguard Captain", 173, Rarity.UNCOMMON, mage.cards.t.TuskguardCaptain.class));
- cards.add(new SetCardInfo("Tymna the Weaver", 48, Rarity.RARE, mage.cards.t.TymnaTheWeaver.class));
- cards.add(new SetCardInfo("Underground River", 335, Rarity.RARE, mage.cards.u.UndergroundRiver.class));
- cards.add(new SetCardInfo("Utter End", 226, Rarity.RARE, mage.cards.u.UtterEnd.class));
- cards.add(new SetCardInfo("Vedalken Engineer", 103, Rarity.COMMON, mage.cards.v.VedalkenEngineer.class));
- cards.add(new SetCardInfo("Venser's Journal", 279, Rarity.RARE, mage.cards.v.VensersJournal.class));
- cards.add(new SetCardInfo("Veteran Explorer", 174, Rarity.UNCOMMON, mage.cards.v.VeteranExplorer.class));
- cards.add(new SetCardInfo("Vial Smasher the Fierce", 49, Rarity.MYTHIC, mage.cards.v.VialSmasherTheFierce.class));
- cards.add(new SetCardInfo("Volcanic Vision", 137, Rarity.RARE, mage.cards.v.VolcanicVision.class));
- cards.add(new SetCardInfo("Vorel of the Hull Clade", 227, Rarity.RARE, mage.cards.v.VorelOfTheHullClade.class));
- cards.add(new SetCardInfo("Vulturous Zombie", 228, Rarity.RARE, mage.cards.v.VulturousZombie.class));
- cards.add(new SetCardInfo("Wall of Blossoms", 175, Rarity.UNCOMMON, mage.cards.w.WallOfBlossoms.class));
- cards.add(new SetCardInfo("Waste Not", 117, Rarity.RARE, mage.cards.w.WasteNot.class));
- cards.add(new SetCardInfo("Wave of Reckoning", 79, Rarity.RARE, mage.cards.w.WaveOfReckoning.class));
- cards.add(new SetCardInfo("Wheel of Fate", 138, Rarity.RARE, mage.cards.w.WheelOfFate.class));
- cards.add(new SetCardInfo("Whims of the Fates", 139, Rarity.RARE, mage.cards.w.WhimsOfTheFates.class));
- cards.add(new SetCardInfo("Whipflare", 140, Rarity.UNCOMMON, mage.cards.w.Whipflare.class));
- cards.add(new SetCardInfo("Whispering Madness", 229, Rarity.RARE, mage.cards.w.WhisperingMadness.class));
- cards.add(new SetCardInfo("Whispersilk Cloak", 280, Rarity.UNCOMMON, mage.cards.w.WhispersilkCloak.class));
- cards.add(new SetCardInfo("Wight of Precinct Six", 118, Rarity.UNCOMMON, mage.cards.w.WightOfPrecinctSix.class));
- cards.add(new SetCardInfo("Wild Beastmaster", 176, Rarity.RARE, mage.cards.w.WildBeastmaster.class));
- cards.add(new SetCardInfo("Wilderness Elemental", 230, Rarity.UNCOMMON, mage.cards.w.WildernessElemental.class));
- cards.add(new SetCardInfo("Windborn Muse", 80, Rarity.RARE, mage.cards.w.WindbornMuse.class));
- cards.add(new SetCardInfo("Windbrisk Heights", 336, Rarity.RARE, mage.cards.w.WindbriskHeights.class));
- cards.add(new SetCardInfo("Windfall", 104, Rarity.UNCOMMON, mage.cards.w.Windfall.class));
- cards.add(new SetCardInfo("Worm Harvest", 238, Rarity.RARE, mage.cards.w.WormHarvest.class));
- cards.add(new SetCardInfo("Yidris, Maelstrom Wielder", 50, Rarity.MYTHIC, mage.cards.y.YidrisMaelstromWielder.class));
- cards.add(new SetCardInfo("Zedruu the Greathearted", 231, Rarity.MYTHIC, mage.cards.z.ZedruuTheGreathearted.class));
- cards.add(new SetCardInfo("Zhur-Taa Druid", 232, Rarity.COMMON, mage.cards.z.ZhurTaaDruid.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author fireshoeS
+ */
+public final class Commander2016 extends ExpansionSet {
+
+ private static final Commander2016 instance = new Commander2016();
+
+ public static Commander2016 getInstance() {
+ return instance;
+ }
+
+ private Commander2016() {
+ super("Commander 2016 Edition", "C16", ExpansionSet.buildDate(2016, 11, 11), SetType.SUPPLEMENTAL);
+ this.blockName = "Command Zone";
+ cards.add(new SetCardInfo("Abzan Charm", 177, Rarity.UNCOMMON, mage.cards.a.AbzanCharm.class));
+ cards.add(new SetCardInfo("Abzan Falconer", 57, Rarity.UNCOMMON, mage.cards.a.AbzanFalconer.class));
+ cards.add(new SetCardInfo("Academy Elite", 81, Rarity.RARE, mage.cards.a.AcademyElite.class));
+ cards.add(new SetCardInfo("Aeon Chronicler", 82, Rarity.RARE, mage.cards.a.AeonChronicler.class));
+ cards.add(new SetCardInfo("Akiri, Line-Slinger", 26, Rarity.RARE, mage.cards.a.AkiriLineSlinger.class));
+ cards.add(new SetCardInfo("Akroan Horse", 241, Rarity.RARE, mage.cards.a.AkroanHorse.class));
+ cards.add(new SetCardInfo("Alesha, Who Smiles at Death", 119, Rarity.RARE, mage.cards.a.AleshaWhoSmilesAtDeath.class));
+ cards.add(new SetCardInfo("Ancient Excavation", 27, Rarity.UNCOMMON, mage.cards.a.AncientExcavation.class));
+ cards.add(new SetCardInfo("Ankle Shanker", 178, Rarity.RARE, mage.cards.a.AnkleShanker.class));
+ cards.add(new SetCardInfo("Arcane Denial", 83, Rarity.COMMON, mage.cards.a.ArcaneDenial.class));
+ cards.add(new SetCardInfo("Arcane Sanctum", 281, Rarity.UNCOMMON, mage.cards.a.ArcaneSanctum.class));
+ cards.add(new SetCardInfo("Armory Automaton", 51, Rarity.RARE, mage.cards.a.ArmoryAutomaton.class));
+ cards.add(new SetCardInfo("Army of the Damned", 105, Rarity.MYTHIC, mage.cards.a.ArmyOfTheDamned.class));
+ cards.add(new SetCardInfo("Artifact Mutation", 179, Rarity.RARE, mage.cards.a.ArtifactMutation.class));
+ cards.add(new SetCardInfo("Ash Barrens", 56, Rarity.COMMON, mage.cards.a.AshBarrens.class));
+ cards.add(new SetCardInfo("Assault Suit", 242, Rarity.UNCOMMON, mage.cards.a.AssaultSuit.class));
+ cards.add(new SetCardInfo("Astral Cornucopia", 243, Rarity.RARE, mage.cards.a.AstralCornucopia.class));
+ cards.add(new SetCardInfo("Atraxa, Praetors' Voice", 28, Rarity.MYTHIC, mage.cards.a.AtraxaPraetorsVoice.class));
+ cards.add(new SetCardInfo("Aura Mutation", 180, Rarity.RARE, mage.cards.a.AuraMutation.class));
+ cards.add(new SetCardInfo("Azorius Chancery", 282, Rarity.UNCOMMON, mage.cards.a.AzoriusChancery.class));
+ cards.add(new SetCardInfo("Baleful Strix", 181, Rarity.UNCOMMON, mage.cards.b.BalefulStrix.class));
+ cards.add(new SetCardInfo("Bane of the Living", 106, Rarity.RARE, mage.cards.b.BaneOfTheLiving.class));
+ cards.add(new SetCardInfo("Beacon of Unrest", 107, Rarity.RARE, mage.cards.b.BeaconOfUnrest.class));
+ cards.add(new SetCardInfo("Beast Within", 141, Rarity.UNCOMMON, mage.cards.b.BeastWithin.class));
+ cards.add(new SetCardInfo("Beastmaster Ascension", 142, Rarity.RARE, mage.cards.b.BeastmasterAscension.class));
+ cards.add(new SetCardInfo("Benefactor's Draught", 21, Rarity.RARE, mage.cards.b.BenefactorsDraught.class));
+ cards.add(new SetCardInfo("Bituminous Blast", 182, Rarity.UNCOMMON, mage.cards.b.BituminousBlast.class));
+ cards.add(new SetCardInfo("Blasphemous Act", 120, Rarity.RARE, mage.cards.b.BlasphemousAct.class));
+ cards.add(new SetCardInfo("Blazing Archon", 58, Rarity.RARE, mage.cards.b.BlazingArchon.class));
+ cards.add(new SetCardInfo("Blind Obedience", 59, Rarity.RARE, mage.cards.b.BlindObedience.class));
+ cards.add(new SetCardInfo("Blinkmoth Urn", 244, Rarity.RARE, mage.cards.b.BlinkmothUrn.class));
+ cards.add(new SetCardInfo("Blood Tyrant", 183, Rarity.RARE, mage.cards.b.BloodTyrant.class));
+ cards.add(new SetCardInfo("Bloodbraid Elf", 184, Rarity.UNCOMMON, mage.cards.b.BloodbraidElf.class));
+ cards.add(new SetCardInfo("Bonehoard", 245, Rarity.RARE, mage.cards.b.Bonehoard.class));
+ cards.add(new SetCardInfo("Boompile", 52, Rarity.RARE, mage.cards.b.Boompile.class));
+ cards.add(new SetCardInfo("Boros Charm", 185, Rarity.UNCOMMON, mage.cards.b.BorosCharm.class));
+ cards.add(new SetCardInfo("Boros Garrison", 283, Rarity.UNCOMMON, mage.cards.b.BorosGarrison.class));
+ cards.add(new SetCardInfo("Brave the Sands", 60, Rarity.UNCOMMON, mage.cards.b.BraveTheSands.class));
+ cards.add(new SetCardInfo("Breath of Fury", 121, Rarity.RARE, mage.cards.b.BreathOfFury.class));
+ cards.add(new SetCardInfo("Bred for the Hunt", 186, Rarity.UNCOMMON, mage.cards.b.BredForTheHunt.class));
+ cards.add(new SetCardInfo("Breya, Etherium Shaper", 29, Rarity.MYTHIC, mage.cards.b.BreyaEtheriumShaper.class));
+ cards.add(new SetCardInfo("Bruse Tarl, Boorish Herder", 30, Rarity.MYTHIC, mage.cards.b.BruseTarlBoorishHerder.class));
+ cards.add(new SetCardInfo("Brutal Hordechief", 108, Rarity.MYTHIC, mage.cards.b.BrutalHordechief.class));
+ cards.add(new SetCardInfo("Burgeoning", 143, Rarity.RARE, mage.cards.b.Burgeoning.class));
+ cards.add(new SetCardInfo("Buried Ruin", 284, Rarity.UNCOMMON, mage.cards.b.BuriedRuin.class));
+ cards.add(new SetCardInfo("Cauldron of Souls", 246, Rarity.RARE, mage.cards.c.CauldronOfSouls.class));
+ cards.add(new SetCardInfo("Cathars' Crusade", 61, Rarity.RARE, mage.cards.c.CatharsCrusade.class));
+ cards.add(new SetCardInfo("Caves of Koilos", 285, Rarity.RARE, mage.cards.c.CavesOfKoilos.class));
+ cards.add(new SetCardInfo("Chain of Vapor", 84, Rarity.UNCOMMON, mage.cards.c.ChainOfVapor.class));
+ cards.add(new SetCardInfo("Champion of Lambholt", 144, Rarity.RARE, mage.cards.c.ChampionOfLambholt.class));
+ cards.add(new SetCardInfo("Chaos Warp", 122, Rarity.RARE, mage.cards.c.ChaosWarp.class));
+ cards.add(new SetCardInfo("Charging Cinderhorn", 16, Rarity.RARE, mage.cards.c.ChargingCinderhorn.class));
+ cards.add(new SetCardInfo("Chasm Skulker", 85, Rarity.RARE, mage.cards.c.ChasmSkulker.class));
+ cards.add(new SetCardInfo("Chief Engineer", 86, Rarity.RARE, mage.cards.c.ChiefEngineer.class));
+ cards.add(new SetCardInfo("Chromatic Lantern", 247, Rarity.RARE, mage.cards.c.ChromaticLantern.class));
+ cards.add(new SetCardInfo("Citadel Siege", 62, Rarity.RARE, mage.cards.c.CitadelSiege.class));
+ cards.add(new SetCardInfo("Clan Defiance", 187, Rarity.RARE, mage.cards.c.ClanDefiance.class));
+ cards.add(new SetCardInfo("Coastal Breach", 6, Rarity.RARE, mage.cards.c.CoastalBreach.class));
+ cards.add(new SetCardInfo("Coiling Oracle", 188, Rarity.COMMON, mage.cards.c.CoilingOracle.class));
+ cards.add(new SetCardInfo("Collective Voyage", 145, Rarity.RARE, mage.cards.c.CollectiveVoyage.class));
+ cards.add(new SetCardInfo("Command Tower", 286, Rarity.COMMON, mage.cards.c.CommandTower.class));
+ cards.add(new SetCardInfo("Commander's Sphere", 248, Rarity.COMMON, mage.cards.c.CommandersSphere.class));
+ cards.add(new SetCardInfo("Conqueror's Flail", 53, Rarity.RARE, mage.cards.c.ConquerorsFlail.class));
+ cards.add(new SetCardInfo("Consuming Aberration", 189, Rarity.RARE, mage.cards.c.ConsumingAberration.class));
+ cards.add(new SetCardInfo("Corpsejack Menace", 190, Rarity.RARE, mage.cards.c.CorpsejackMenace.class));
+ cards.add(new SetCardInfo("Crackling Doom", 191, Rarity.RARE, mage.cards.c.CracklingDoom.class));
+ cards.add(new SetCardInfo("Cranial Plating", 249, Rarity.UNCOMMON, mage.cards.c.CranialPlating.class));
+ cards.add(new SetCardInfo("Cruel Entertainment", 11, Rarity.RARE, mage.cards.c.CruelEntertainment.class));
+ cards.add(new SetCardInfo("Crumbling Necropolis", 287, Rarity.UNCOMMON, mage.cards.c.CrumblingNecropolis.class));
+ cards.add(new SetCardInfo("Crystalline Crawler", 54, Rarity.RARE, mage.cards.c.CrystallineCrawler.class));
+ cards.add(new SetCardInfo("Cultivate", 146, Rarity.COMMON, mage.cards.c.Cultivate.class));
+ cards.add(new SetCardInfo("Curtains' Call", 13, Rarity.RARE, mage.cards.c.CurtainsCall.class));
+ cards.add(new SetCardInfo("Curse of Vengeance", 12, Rarity.RARE, mage.cards.c.CurseOfVengeance.class));
+ cards.add(new SetCardInfo("Custodi Soulbinders", 63, Rarity.RARE, mage.cards.c.CustodiSoulbinders.class));
+ cards.add(new SetCardInfo("Daretti, Scrap Savant", 123, Rarity.MYTHIC, mage.cards.d.DarettiScrapSavant.class));
+ cards.add(new SetCardInfo("Darksteel Citadel", 288, Rarity.UNCOMMON, mage.cards.d.DarksteelCitadel.class));
+ cards.add(new SetCardInfo("Darksteel Ingot", 250, Rarity.UNCOMMON, mage.cards.d.DarksteelIngot.class));
+ cards.add(new SetCardInfo("Darkwater Catacombs", 289, Rarity.RARE, mage.cards.d.DarkwaterCatacombs.class));
+ cards.add(new SetCardInfo("Dauntless Escort", 192, Rarity.RARE, mage.cards.d.DauntlessEscort.class));
+ cards.add(new SetCardInfo("Decimate", 193, Rarity.RARE, mage.cards.d.Decimate.class));
+ cards.add(new SetCardInfo("Deepglow Skate", 7, Rarity.RARE, mage.cards.d.DeepglowSkate.class));
+ cards.add(new SetCardInfo("Den Protector", 147, Rarity.RARE, mage.cards.d.DenProtector.class));
+ cards.add(new SetCardInfo("Devastation Tide", 87, Rarity.RARE, mage.cards.d.DevastationTide.class));
+ cards.add(new SetCardInfo("Dimir Aqueduct", 290, Rarity.UNCOMMON, mage.cards.d.DimirAqueduct.class));
+ cards.add(new SetCardInfo("Disdainful Stroke", 88, Rarity.COMMON, mage.cards.d.DisdainfulStroke.class));
+ cards.add(new SetCardInfo("Dismal Backwater", 291, Rarity.COMMON, mage.cards.d.DismalBackwater.class));
+ cards.add(new SetCardInfo("Dispeller's Capsule", 64, Rarity.COMMON, mage.cards.d.DispellersCapsule.class));
+ cards.add(new SetCardInfo("Divergent Transformations", 17, Rarity.RARE, mage.cards.d.DivergentTransformations.class));
+ cards.add(new SetCardInfo("Dragon Mage", 124, Rarity.RARE, mage.cards.d.DragonMage.class));
+ cards.add(new SetCardInfo("Dragonskull Summit", 292, Rarity.RARE, mage.cards.d.DragonskullSummit.class));
+ cards.add(new SetCardInfo("Dreadship Reef", 293, Rarity.UNCOMMON, mage.cards.d.DreadshipReef.class));
+ cards.add(new SetCardInfo("Duelist's Heritage", 1, Rarity.RARE, mage.cards.d.DuelistsHeritage.class));
+ cards.add(new SetCardInfo("Duneblast", 194, Rarity.RARE, mage.cards.d.Duneblast.class));
+ cards.add(new SetCardInfo("Edric, Spymaster of Trest", 195, Rarity.RARE, mage.cards.e.EdricSpymasterOfTrest.class));
+ cards.add(new SetCardInfo("Elite Scaleguard", 65, Rarity.UNCOMMON, mage.cards.e.EliteScaleguard.class));
+ cards.add(new SetCardInfo("Empyrial Plate", 251, Rarity.RARE, mage.cards.e.EmpyrialPlate.class));
+ cards.add(new SetCardInfo("Enduring Scalelord", 196, Rarity.UNCOMMON, mage.cards.e.EnduringScalelord.class));
+ cards.add(new SetCardInfo("Entrapment Maneuver", 2, Rarity.RARE, mage.cards.e.EntrapmentManeuver.class));
+ cards.add(new SetCardInfo("Etched Oracle", 252, Rarity.UNCOMMON, mage.cards.e.EtchedOracle.class));
+ cards.add(new SetCardInfo("Etherium Sculptor", 89, Rarity.COMMON, mage.cards.e.EtheriumSculptor.class));
+ cards.add(new SetCardInfo("Etherium-Horn Sorcerer", 197, Rarity.RARE, mage.cards.e.EtheriumHornSorcerer.class));
+ cards.add(new SetCardInfo("Ethersworn Adjudicator", 90, Rarity.MYTHIC, mage.cards.e.EtherswornAdjudicator.class));
+ cards.add(new SetCardInfo("Evacuation", 91, Rarity.RARE, mage.cards.e.Evacuation.class));
+ cards.add(new SetCardInfo("Everflowing Chalice", 253, Rarity.UNCOMMON, mage.cards.e.EverflowingChalice.class));
+ cards.add(new SetCardInfo("Everlasting Torment", 233, Rarity.RARE, mage.cards.e.EverlastingTorment.class));
+ cards.add(new SetCardInfo("Evolutionary Escalation", 22, Rarity.UNCOMMON, mage.cards.e.EvolutionaryEscalation.class));
+ cards.add(new SetCardInfo("Evolving Wilds", 294, Rarity.COMMON, mage.cards.e.EvolvingWilds.class));
+ cards.add(new SetCardInfo("Executioner's Capsule", 109, Rarity.COMMON, mage.cards.e.ExecutionersCapsule.class));
+ cards.add(new SetCardInfo("Exotic Orchard", 295, Rarity.RARE, mage.cards.e.ExoticOrchard.class));
+ cards.add(new SetCardInfo("Faerie Artisans", 8, Rarity.RARE, mage.cards.f.FaerieArtisans.class));
+ cards.add(new SetCardInfo("Far Wanderings", 148, Rarity.COMMON, mage.cards.f.FarWanderings.class));
+ cards.add(new SetCardInfo("Farseek", 149, Rarity.COMMON, mage.cards.f.Farseek.class));
+ cards.add(new SetCardInfo("Fathom Mage", 198, Rarity.RARE, mage.cards.f.FathomMage.class));
+ cards.add(new SetCardInfo("Fellwar Stone", 254, Rarity.UNCOMMON, mage.cards.f.FellwarStone.class));
+ cards.add(new SetCardInfo("Festercreep", 110, Rarity.COMMON, mage.cards.f.Festercreep.class));
+ cards.add(new SetCardInfo("Filigree Angel", 199, Rarity.RARE, mage.cards.f.FiligreeAngel.class));
+ cards.add(new SetCardInfo("Forbidden Orchard", 296, Rarity.RARE, mage.cards.f.ForbiddenOrchard.class));
+ cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 351, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forgotten Ancient", 150, Rarity.RARE, mage.cards.f.ForgottenAncient.class));
+ cards.add(new SetCardInfo("Frenzied Fugue", 18, Rarity.UNCOMMON, mage.cards.f.FrenziedFugue.class));
+ cards.add(new SetCardInfo("Frontier Bivouac", 297, Rarity.UNCOMMON, mage.cards.f.FrontierBivouac.class));
+ cards.add(new SetCardInfo("Gamekeeper", 151, Rarity.UNCOMMON, mage.cards.g.Gamekeeper.class));
+ cards.add(new SetCardInfo("Ghastly Conscription", 111, Rarity.MYTHIC, mage.cards.g.GhastlyConscription.class));
+ cards.add(new SetCardInfo("Ghave, Guru of Spores", 200, Rarity.MYTHIC, mage.cards.g.GhaveGuruOfSpores.class));
+ cards.add(new SetCardInfo("Ghostly Prison", 66, Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class));
+ cards.add(new SetCardInfo("Glint-Eye Nephilim", 201, Rarity.RARE, mage.cards.g.GlintEyeNephilim.class));
+ cards.add(new SetCardInfo("Goblin Spymaster", 19, Rarity.RARE, mage.cards.g.GoblinSpymaster.class));
+ cards.add(new SetCardInfo("Godo, Bandit Warlord", 125, Rarity.RARE, mage.cards.g.GodoBanditWarlord.class));
+ cards.add(new SetCardInfo("Golgari Rot Farm", 298, Rarity.UNCOMMON, mage.cards.g.GolgariRotFarm.class));
+ cards.add(new SetCardInfo("Golgari Signet", 255, Rarity.COMMON, mage.cards.g.GolgariSignet.class));
+ cards.add(new SetCardInfo("Grab the Reins", 126, Rarity.UNCOMMON, mage.cards.g.GrabTheReins.class));
+ cards.add(new SetCardInfo("Grand Coliseum", 299, Rarity.RARE, mage.cards.g.GrandColiseum.class));
+ cards.add(new SetCardInfo("Grave Upheaval", 31, Rarity.UNCOMMON, mage.cards.g.GraveUpheaval.class));
+ cards.add(new SetCardInfo("Grip of Phyresis", 9, Rarity.UNCOMMON, mage.cards.g.GripOfPhyresis.class));
+ cards.add(new SetCardInfo("Gruul Signet", 256, Rarity.COMMON, mage.cards.g.GruulSignet.class));
+ cards.add(new SetCardInfo("Gruul Turf", 300, Rarity.UNCOMMON, mage.cards.g.GruulTurf.class));
+ cards.add(new SetCardInfo("Guiltfeeder", 112, Rarity.RARE, mage.cards.g.Guiltfeeder.class));
+ cards.add(new SetCardInfo("Gwafa Hazid, Profiteer", 202, Rarity.RARE, mage.cards.g.GwafaHazidProfiteer.class));
+ cards.add(new SetCardInfo("Hanna, Ship's Navigator", 203, Rarity.RARE, mage.cards.h.HannaShipsNavigator.class));
+ cards.add(new SetCardInfo("Hardened Scales", 152, Rarity.RARE, mage.cards.h.HardenedScales.class));
+ cards.add(new SetCardInfo("Hellkite Igniter", 127, Rarity.RARE, mage.cards.h.HellkiteIgniter.class));
+ cards.add(new SetCardInfo("Hellkite Tyrant", 128, Rarity.MYTHIC, mage.cards.h.HellkiteTyrant.class));
+ cards.add(new SetCardInfo("Homeward Path", 301, Rarity.RARE, mage.cards.h.HomewardPath.class));
+ cards.add(new SetCardInfo("Hoofprints of the Stag", 67, Rarity.RARE, mage.cards.h.HoofprintsOfTheStag.class));
+ cards.add(new SetCardInfo("Horizon Chimera", 204, Rarity.UNCOMMON, mage.cards.h.HorizonChimera.class));
+ cards.add(new SetCardInfo("Howling Mine", 257, Rarity.RARE, mage.cards.h.HowlingMine.class));
+ cards.add(new SetCardInfo("Humble Defector", 129, Rarity.UNCOMMON, mage.cards.h.HumbleDefector.class));
+ cards.add(new SetCardInfo("Hushwing Gryff", 68, Rarity.RARE, mage.cards.h.HushwingGryff.class));
+ cards.add(new SetCardInfo("Ichor Wellspring", 258, Rarity.COMMON, mage.cards.i.IchorWellspring.class));
+ cards.add(new SetCardInfo("Ikra Shidiqi, the Usurper", 32, Rarity.MYTHIC, mage.cards.i.IkraShidiqiTheUsurper.class));
+ cards.add(new SetCardInfo("In Garruk's Wake", 113, Rarity.RARE, mage.cards.i.InGarruksWake.class));
+ cards.add(new SetCardInfo("Inspiring Call", 153, Rarity.UNCOMMON, mage.cards.i.InspiringCall.class));
+ cards.add(new SetCardInfo("Iroas, God of Victory", 205, Rarity.MYTHIC, mage.cards.i.IroasGodOfVictory.class));
+ cards.add(new SetCardInfo("Ishai, Ojutai Dragonspeaker", 33, Rarity.MYTHIC, mage.cards.i.IshaiOjutaiDragonspeaker.class));
+ cards.add(new SetCardInfo("Island", 340, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 341, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 342, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Izzet Boilerworks", 302, Rarity.UNCOMMON, mage.cards.i.IzzetBoilerworks.class));
+ cards.add(new SetCardInfo("Jor Kadeen, the Prevailer", 206, Rarity.RARE, mage.cards.j.JorKadeenThePrevailer.class));
+ cards.add(new SetCardInfo("Jungle Hollow", 303, Rarity.COMMON, mage.cards.j.JungleHollow.class));
+ cards.add(new SetCardInfo("Jungle Shrine", 304, Rarity.UNCOMMON, mage.cards.j.JungleShrine.class));
+ cards.add(new SetCardInfo("Juniper Order Ranger", 207, Rarity.UNCOMMON, mage.cards.j.JuniperOrderRanger.class));
+ cards.add(new SetCardInfo("Kalonian Hydra", 154, Rarity.MYTHIC, mage.cards.k.KalonianHydra.class));
+ cards.add(new SetCardInfo("Karplusan Forest", 305, Rarity.RARE, mage.cards.k.KarplusanForest.class));
+ cards.add(new SetCardInfo("Kazuul, Tyrant of the Cliffs", 130, Rarity.RARE, mage.cards.k.KazuulTyrantOfTheCliffs.class));
+ cards.add(new SetCardInfo("Keening Stone", 259, Rarity.RARE, mage.cards.k.KeeningStone.class));
+ cards.add(new SetCardInfo("Kodama's Reach", 155, Rarity.COMMON, mage.cards.k.KodamasReach.class));
+ cards.add(new SetCardInfo("Korozda Guildmage", 208, Rarity.UNCOMMON, mage.cards.k.KorozdaGuildmage.class));
+ cards.add(new SetCardInfo("Kraum, Ludevic's Opus", 34, Rarity.RARE, mage.cards.k.KraumLudevicsOpus.class));
+ cards.add(new SetCardInfo("Krosan Verge", 306, Rarity.UNCOMMON, mage.cards.k.KrosanVerge.class));
+ cards.add(new SetCardInfo("Kydele, Chosen of Kruphix", 35, Rarity.MYTHIC, mage.cards.k.KydeleChosenOfKruphix.class));
+ cards.add(new SetCardInfo("Kynaios and Tiro of Meletis", 36, Rarity.MYTHIC, mage.cards.k.KynaiosAndTiroOfMeletis.class));
+ cards.add(new SetCardInfo("Languish", 114, Rarity.RARE, mage.cards.l.Languish.class));
+ cards.add(new SetCardInfo("Lavalanche", 209, Rarity.RARE, mage.cards.l.Lavalanche.class));
+ cards.add(new SetCardInfo("Lightning Greaves", 260, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class));
+ cards.add(new SetCardInfo("Loxodon Warhammer", 261, Rarity.UNCOMMON, mage.cards.l.LoxodonWarhammer.class));
+ cards.add(new SetCardInfo("Ludevic, Necro-Alchemist", 37, Rarity.MYTHIC, mage.cards.l.LudevicNecroAlchemist.class));
+ cards.add(new SetCardInfo("Lurking Predators", 156, Rarity.RARE, mage.cards.l.LurkingPredators.class));
+ cards.add(new SetCardInfo("Magus of the Will", 14, Rarity.RARE, mage.cards.m.MagusOfTheWill.class));
+ cards.add(new SetCardInfo("Managorger Hydra", 157, Rarity.RARE, mage.cards.m.ManagorgerHydra.class));
+ cards.add(new SetCardInfo("Manifold Insights", 10, Rarity.RARE, mage.cards.m.ManifoldInsights.class));
+ cards.add(new SetCardInfo("Master Biomancer", 210, Rarity.MYTHIC, mage.cards.m.MasterBiomancer.class));
+ cards.add(new SetCardInfo("Master of Etherium", 92, Rarity.RARE, mage.cards.m.MasterOfEtherium.class));
+ cards.add(new SetCardInfo("Mentor of the Meek", 69, Rarity.RARE, mage.cards.m.MentorOfTheMeek.class));
+ cards.add(new SetCardInfo("Merciless Eviction", 211, Rarity.RARE, mage.cards.m.MercilessEviction.class));
+ cards.add(new SetCardInfo("Migratory Route", 38, Rarity.UNCOMMON, mage.cards.m.MigratoryRoute.class));
+ cards.add(new SetCardInfo("Minds Aglow", 93, Rarity.RARE, mage.cards.m.MindsAglow.class));
+ cards.add(new SetCardInfo("Mirror Entity", 70, Rarity.RARE, mage.cards.m.MirrorEntity.class));
+ cards.add(new SetCardInfo("Mirrorweave", 234, Rarity.RARE, mage.cards.m.Mirrorweave.class));
+ cards.add(new SetCardInfo("Mortify", 212, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
+ cards.add(new SetCardInfo("Mosswort Bridge", 307, Rarity.RARE, mage.cards.m.MosswortBridge.class));
+ cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 347, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 348, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Murmuring Bosk", 308, Rarity.RARE, mage.cards.m.MurmuringBosk.class));
+ cards.add(new SetCardInfo("Mycoloth", 158, Rarity.RARE, mage.cards.m.Mycoloth.class));
+ cards.add(new SetCardInfo("Mycosynth Wellspring", 262, Rarity.COMMON, mage.cards.m.MycosynthWellspring.class));
+ cards.add(new SetCardInfo("Myr Battlesphere", 263, Rarity.RARE, mage.cards.m.MyrBattlesphere.class));
+ cards.add(new SetCardInfo("Myr Retriever", 264, Rarity.UNCOMMON, mage.cards.m.MyrRetriever.class));
+ cards.add(new SetCardInfo("Myriad Landscape", 309, Rarity.UNCOMMON, mage.cards.m.MyriadLandscape.class));
+ cards.add(new SetCardInfo("Mystic Monastery", 310, Rarity.UNCOMMON, mage.cards.m.MysticMonastery.class));
+ cards.add(new SetCardInfo("Nath of the Gilt-Leaf", 213, Rarity.RARE, mage.cards.n.NathOfTheGiltLeaf.class));
+ cards.add(new SetCardInfo("Naya Charm", 214, Rarity.UNCOMMON, mage.cards.n.NayaCharm.class));
+ cards.add(new SetCardInfo("Necrogenesis", 215, Rarity.UNCOMMON, mage.cards.n.Necrogenesis.class));
+ cards.add(new SetCardInfo("Necroplasm", 115, Rarity.RARE, mage.cards.n.Necroplasm.class));
+ cards.add(new SetCardInfo("Nevinyrral's Disk", 265, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class));
+ cards.add(new SetCardInfo("Nomad Outpost", 311, Rarity.UNCOMMON, mage.cards.n.NomadOutpost.class));
+ cards.add(new SetCardInfo("Oath of Druids", 159, Rarity.RARE, mage.cards.o.OathOfDruids.class));
+ cards.add(new SetCardInfo("Oblation", 71, Rarity.RARE, mage.cards.o.Oblation.class));
+ cards.add(new SetCardInfo("Opal Palace", 312, Rarity.COMMON, mage.cards.o.OpalPalace.class));
+ cards.add(new SetCardInfo("Open the Vaults", 72, Rarity.RARE, mage.cards.o.OpenTheVaults.class));
+ cards.add(new SetCardInfo("Opulent Palace", 313, Rarity.UNCOMMON, mage.cards.o.OpulentPalace.class));
+ cards.add(new SetCardInfo("Order // Chaos", 240, Rarity.UNCOMMON, mage.cards.o.OrderChaos.class));
+ cards.add(new SetCardInfo("Orzhov Advokist", 3, Rarity.UNCOMMON, mage.cards.o.OrzhovAdvokist.class));
+ cards.add(new SetCardInfo("Orzhov Basilica", 314, Rarity.UNCOMMON, mage.cards.o.OrzhovBasilica.class));
+ cards.add(new SetCardInfo("Orzhov Signet", 266, Rarity.COMMON, mage.cards.o.OrzhovSignet.class));
+ cards.add(new SetCardInfo("Parting Thoughts", 15, Rarity.UNCOMMON, mage.cards.p.PartingThoughts.class));
+ cards.add(new SetCardInfo("Past in Flames", 131, Rarity.MYTHIC, mage.cards.p.PastInFlames.class));
+ cards.add(new SetCardInfo("Phyrexian Rebirth", 73, Rarity.RARE, mage.cards.p.PhyrexianRebirth.class));
+ cards.add(new SetCardInfo("Plains", 337, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 338, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 339, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Primeval Protector", 23, Rarity.RARE, mage.cards.p.PrimevalProtector.class));
+ cards.add(new SetCardInfo("Prismatic Geoscope", 55, Rarity.RARE, mage.cards.p.PrismaticGeoscope.class));
+ cards.add(new SetCardInfo("Progenitor Mimic", 216, Rarity.MYTHIC, mage.cards.p.ProgenitorMimic.class));
+ cards.add(new SetCardInfo("Propaganda", 94, Rarity.UNCOMMON, mage.cards.p.Propaganda.class));
+ cards.add(new SetCardInfo("Psychosis Crawler", 267, Rarity.RARE, mage.cards.p.PsychosisCrawler.class));
+ cards.add(new SetCardInfo("Putrefy", 217, Rarity.UNCOMMON, mage.cards.p.Putrefy.class));
+ cards.add(new SetCardInfo("Quirion Explorer", 160, Rarity.COMMON, mage.cards.q.QuirionExplorer.class));
+ cards.add(new SetCardInfo("Rakdos Carnarium", 315, Rarity.UNCOMMON, mage.cards.r.RakdosCarnarium.class));
+ cards.add(new SetCardInfo("Rakdos Charm", 218, Rarity.UNCOMMON, mage.cards.r.RakdosCharm.class));
+ cards.add(new SetCardInfo("Rakdos Signet", 268, Rarity.COMMON, mage.cards.r.RakdosSignet.class));
+ cards.add(new SetCardInfo("Rampant Growth", 161, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
+ cards.add(new SetCardInfo("Ravos, Soultender", 39, Rarity.MYTHIC, mage.cards.r.RavosSoultender.class));
+ cards.add(new SetCardInfo("Read the Runes", 95, Rarity.RARE, mage.cards.r.ReadTheRunes.class));
+ cards.add(new SetCardInfo("Realm Seekers", 162, Rarity.RARE, mage.cards.r.RealmSeekers.class));
+ cards.add(new SetCardInfo("Reforge the Soul", 132, Rarity.RARE, mage.cards.r.ReforgeTheSoul.class));
+ cards.add(new SetCardInfo("Reins of Power", 96, Rarity.RARE, mage.cards.r.ReinsOfPower.class));
+ cards.add(new SetCardInfo("Reliquary Tower", 316, Rarity.UNCOMMON, mage.cards.r.ReliquaryTower.class));
+ cards.add(new SetCardInfo("Reveillark", 74, Rarity.RARE, mage.cards.r.Reveillark.class));
+ cards.add(new SetCardInfo("Reverse the Sands", 75, Rarity.RARE, mage.cards.r.ReverseTheSands.class));
+ cards.add(new SetCardInfo("Reyhan, Last of the Abzan", 40, Rarity.RARE, mage.cards.r.ReyhanLastOfTheAbzan.class));
+ cards.add(new SetCardInfo("Rites of Flourishing", 163, Rarity.RARE, mage.cards.r.RitesOfFlourishing.class));
+ cards.add(new SetCardInfo("Rootbound Crag", 317, Rarity.RARE, mage.cards.r.RootboundCrag.class));
+ cards.add(new SetCardInfo("Rubblehulk", 219, Rarity.RARE, mage.cards.r.Rubblehulk.class));
+ cards.add(new SetCardInfo("Rugged Highlands", 318, Rarity.COMMON, mage.cards.r.RuggedHighlands.class));
+ cards.add(new SetCardInfo("Runehorn Hellkite", 20, Rarity.RARE, mage.cards.r.RunehornHellkite.class));
+ cards.add(new SetCardInfo("Rupture Spire", 319, Rarity.COMMON, mage.cards.r.RuptureSpire.class));
+ cards.add(new SetCardInfo("Sakura-Tribe Elder", 164, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class));
+ cards.add(new SetCardInfo("Sanctum Gargoyle", 76, Rarity.COMMON, mage.cards.s.SanctumGargoyle.class));
+ cards.add(new SetCardInfo("Sandsteppe Citadel", 320, Rarity.UNCOMMON, mage.cards.s.SandsteppeCitadel.class));
+ cards.add(new SetCardInfo("Sangromancer", 116, Rarity.RARE, mage.cards.s.Sangromancer.class));
+ cards.add(new SetCardInfo("Saskia the Unyielding", 41, Rarity.MYTHIC, mage.cards.s.SaskiaTheUnyielding.class));
+ cards.add(new SetCardInfo("Satyr Wayfinder", 165, Rarity.COMMON, mage.cards.s.SatyrWayfinder.class));
+ cards.add(new SetCardInfo("Savage Lands", 321, Rarity.UNCOMMON, mage.cards.s.SavageLands.class));
+ cards.add(new SetCardInfo("Scavenging Ooze", 166, Rarity.RARE, mage.cards.s.ScavengingOoze.class));
+ cards.add(new SetCardInfo("Seaside Citadel", 322, Rarity.UNCOMMON, mage.cards.s.SeasideCitadel.class));
+ cards.add(new SetCardInfo("Seat of the Synod", 323, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class));
+ cards.add(new SetCardInfo("Seeds of Renewal", 24, Rarity.RARE, mage.cards.s.SeedsOfRenewal.class));
+ cards.add(new SetCardInfo("Selesnya Guildmage", 235, Rarity.UNCOMMON, mage.cards.s.SelesnyaGuildmage.class));
+ cards.add(new SetCardInfo("Selesnya Sanctuary", 324, Rarity.UNCOMMON, mage.cards.s.SelesnyaSanctuary.class));
+ cards.add(new SetCardInfo("Selfless Squire", 4, Rarity.RARE, mage.cards.s.SelflessSquire.class));
+ cards.add(new SetCardInfo("Selvala, Explorer Returned", 220, Rarity.RARE, mage.cards.s.SelvalaExplorerReturned.class));
+ cards.add(new SetCardInfo("Shadowblood Ridge", 325, Rarity.RARE, mage.cards.s.ShadowbloodRidge.class));
+ cards.add(new SetCardInfo("Shamanic Revelation", 167, Rarity.RARE, mage.cards.s.ShamanicRevelation.class));
+ cards.add(new SetCardInfo("Sharuum the Hegemon", 221, Rarity.MYTHIC, mage.cards.s.SharuumTheHegemon.class));
+ cards.add(new SetCardInfo("Shimmer Myr", 269, Rarity.RARE, mage.cards.s.ShimmerMyr.class));
+ cards.add(new SetCardInfo("Sidar Kondo of Jamuraa", 42, Rarity.MYTHIC, mage.cards.s.SidarKondoOfJamuraa.class));
+ cards.add(new SetCardInfo("Silas Renn, Seeker Adept", 43, Rarity.MYTHIC, mage.cards.s.SilasRennSeekerAdept.class));
+ cards.add(new SetCardInfo("Simic Growth Chamber", 326, Rarity.UNCOMMON, mage.cards.s.SimicGrowthChamber.class));
+ cards.add(new SetCardInfo("Simic Signet", 270, Rarity.COMMON, mage.cards.s.SimicSignet.class));
+ cards.add(new SetCardInfo("Skullclamp", 271, Rarity.UNCOMMON, mage.cards.s.Skullclamp.class));
+ cards.add(new SetCardInfo("Slobad, Goblin Tinkerer", 133, Rarity.RARE, mage.cards.s.SlobadGoblinTinkerer.class));
+ cards.add(new SetCardInfo("Sol Ring", 272, Rarity.UNCOMMON, mage.cards.s.SolRing.class));
+ cards.add(new SetCardInfo("Solemn Simulacrum", 273, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class));
+ cards.add(new SetCardInfo("Solidarity of Heroes", 168, Rarity.UNCOMMON, mage.cards.s.SolidarityOfHeroes.class));
+ cards.add(new SetCardInfo("Soul of New Phyrexia", 274, Rarity.MYTHIC, mage.cards.s.SoulOfNewPhyrexia.class));
+ cards.add(new SetCardInfo("Spellheart Chimera", 222, Rarity.UNCOMMON, mage.cards.s.SpellheartChimera.class));
+ cards.add(new SetCardInfo("Spelltwine", 97, Rarity.RARE, mage.cards.s.Spelltwine.class));
+ cards.add(new SetCardInfo("Sphere of Safety", 77, Rarity.UNCOMMON, mage.cards.s.SphereOfSafety.class));
+ cards.add(new SetCardInfo("Sphinx Summoner", 223, Rarity.RARE, mage.cards.s.SphinxSummoner.class));
+ cards.add(new SetCardInfo("Spinerock Knoll", 327, Rarity.RARE, mage.cards.s.SpinerockKnoll.class));
+ cards.add(new SetCardInfo("Spitting Image", 236, Rarity.RARE, mage.cards.s.SpittingImage.class));
+ cards.add(new SetCardInfo("Stalking Vengeance", 134, Rarity.RARE, mage.cards.s.StalkingVengeance.class));
+ cards.add(new SetCardInfo("Stonehoof Chieftain", 25, Rarity.RARE, mage.cards.s.StonehoofChieftain.class));
+ cards.add(new SetCardInfo("Sublime Exhalation", 5, Rarity.RARE, mage.cards.s.SublimeExhalation.class));
+ cards.add(new SetCardInfo("Sunforger", 275, Rarity.RARE, mage.cards.s.Sunforger.class));
+ cards.add(new SetCardInfo("Sungrass Prairie", 328, Rarity.RARE, mage.cards.s.SungrassPrairie.class));
+ cards.add(new SetCardInfo("Sunpetal Grove", 329, Rarity.RARE, mage.cards.s.SunpetalGrove.class));
+ cards.add(new SetCardInfo("Swamp", 343, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 344, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 345, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swan Song", 98, Rarity.RARE, mage.cards.s.SwanSong.class));
+ cards.add(new SetCardInfo("Swiftfoot Boots", 276, Rarity.UNCOMMON, mage.cards.s.SwiftfootBoots.class));
+ cards.add(new SetCardInfo("Swiftwater Cliffs", 330, Rarity.COMMON, mage.cards.s.SwiftwaterCliffs.class));
+ cards.add(new SetCardInfo("Swords to Plowshares", 78, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
+ cards.add(new SetCardInfo("Sydri, Galvanic Genius", 224, Rarity.MYTHIC, mage.cards.s.SydriGalvanicGenius.class));
+ cards.add(new SetCardInfo("Sylvan Reclamation", 44, Rarity.UNCOMMON, mage.cards.s.SylvanReclamation.class));
+ cards.add(new SetCardInfo("Sylvok Explorer", 169, Rarity.COMMON, mage.cards.s.SylvokExplorer.class));
+ cards.add(new SetCardInfo("Tana, the Bloodsower", 45, Rarity.MYTHIC, mage.cards.t.TanaTheBloodsower.class));
+ cards.add(new SetCardInfo("Taurean Mauler", 135, Rarity.RARE, mage.cards.t.TaureanMauler.class));
+ cards.add(new SetCardInfo("Temple Bell", 277, Rarity.RARE, mage.cards.t.TempleBell.class));
+ cards.add(new SetCardInfo("Temple of the False God", 331, Rarity.UNCOMMON, mage.cards.t.TempleOfTheFalseGod.class));
+ cards.add(new SetCardInfo("Tempt with Discovery", 170, Rarity.RARE, mage.cards.t.TemptWithDiscovery.class));
+ cards.add(new SetCardInfo("Terminate", 225, Rarity.COMMON, mage.cards.t.Terminate.class));
+ cards.add(new SetCardInfo("Terramorphic Expanse", 332, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
+ cards.add(new SetCardInfo("Tezzeret's Gambit", 99, Rarity.UNCOMMON, mage.cards.t.TezzeretsGambit.class));
+ cards.add(new SetCardInfo("Thelonite Hermit", 171, Rarity.RARE, mage.cards.t.TheloniteHermit.class));
+ cards.add(new SetCardInfo("Thopter Foundry", 237, Rarity.UNCOMMON, mage.cards.t.ThopterFoundry.class));
+ cards.add(new SetCardInfo("Thornwood Falls", 333, Rarity.COMMON, mage.cards.t.ThornwoodFalls.class));
+ cards.add(new SetCardInfo("Thrasios, Triton Hero", 46, Rarity.RARE, mage.cards.t.ThrasiosTritonHero.class));
+ cards.add(new SetCardInfo("Thrummingbird", 100, Rarity.UNCOMMON, mage.cards.t.Thrummingbird.class));
+ cards.add(new SetCardInfo("Thunderfoot Baloth", 172, Rarity.RARE, mage.cards.t.ThunderfootBaloth.class));
+ cards.add(new SetCardInfo("Trading Post", 278, Rarity.RARE, mage.cards.t.TradingPost.class));
+ cards.add(new SetCardInfo("Transguild Promenade", 334, Rarity.COMMON, mage.cards.t.TransguildPromenade.class));
+ cards.add(new SetCardInfo("Trash for Treasure", 136, Rarity.RARE, mage.cards.t.TrashForTreasure.class));
+ cards.add(new SetCardInfo("Treacherous Terrain", 47, Rarity.UNCOMMON, mage.cards.t.TreacherousTerrain.class));
+ cards.add(new SetCardInfo("Treasure Cruise", 101, Rarity.COMMON, mage.cards.t.TreasureCruise.class));
+ cards.add(new SetCardInfo("Trial // Error", 239, Rarity.UNCOMMON, mage.cards.t.TrialError.class));
+ cards.add(new SetCardInfo("Trinket Mage", 102, Rarity.COMMON, mage.cards.t.TrinketMage.class));
+ cards.add(new SetCardInfo("Tuskguard Captain", 173, Rarity.UNCOMMON, mage.cards.t.TuskguardCaptain.class));
+ cards.add(new SetCardInfo("Tymna the Weaver", 48, Rarity.RARE, mage.cards.t.TymnaTheWeaver.class));
+ cards.add(new SetCardInfo("Underground River", 335, Rarity.RARE, mage.cards.u.UndergroundRiver.class));
+ cards.add(new SetCardInfo("Utter End", 226, Rarity.RARE, mage.cards.u.UtterEnd.class));
+ cards.add(new SetCardInfo("Vedalken Engineer", 103, Rarity.COMMON, mage.cards.v.VedalkenEngineer.class));
+ cards.add(new SetCardInfo("Venser's Journal", 279, Rarity.RARE, mage.cards.v.VensersJournal.class));
+ cards.add(new SetCardInfo("Veteran Explorer", 174, Rarity.UNCOMMON, mage.cards.v.VeteranExplorer.class));
+ cards.add(new SetCardInfo("Vial Smasher the Fierce", 49, Rarity.MYTHIC, mage.cards.v.VialSmasherTheFierce.class));
+ cards.add(new SetCardInfo("Volcanic Vision", 137, Rarity.RARE, mage.cards.v.VolcanicVision.class));
+ cards.add(new SetCardInfo("Vorel of the Hull Clade", 227, Rarity.RARE, mage.cards.v.VorelOfTheHullClade.class));
+ cards.add(new SetCardInfo("Vulturous Zombie", 228, Rarity.RARE, mage.cards.v.VulturousZombie.class));
+ cards.add(new SetCardInfo("Wall of Blossoms", 175, Rarity.UNCOMMON, mage.cards.w.WallOfBlossoms.class));
+ cards.add(new SetCardInfo("Waste Not", 117, Rarity.RARE, mage.cards.w.WasteNot.class));
+ cards.add(new SetCardInfo("Wave of Reckoning", 79, Rarity.RARE, mage.cards.w.WaveOfReckoning.class));
+ cards.add(new SetCardInfo("Wheel of Fate", 138, Rarity.RARE, mage.cards.w.WheelOfFate.class));
+ cards.add(new SetCardInfo("Whims of the Fates", 139, Rarity.RARE, mage.cards.w.WhimsOfTheFates.class));
+ cards.add(new SetCardInfo("Whipflare", 140, Rarity.UNCOMMON, mage.cards.w.Whipflare.class));
+ cards.add(new SetCardInfo("Whispering Madness", 229, Rarity.RARE, mage.cards.w.WhisperingMadness.class));
+ cards.add(new SetCardInfo("Whispersilk Cloak", 280, Rarity.UNCOMMON, mage.cards.w.WhispersilkCloak.class));
+ cards.add(new SetCardInfo("Wight of Precinct Six", 118, Rarity.UNCOMMON, mage.cards.w.WightOfPrecinctSix.class));
+ cards.add(new SetCardInfo("Wild Beastmaster", 176, Rarity.RARE, mage.cards.w.WildBeastmaster.class));
+ cards.add(new SetCardInfo("Wilderness Elemental", 230, Rarity.UNCOMMON, mage.cards.w.WildernessElemental.class));
+ cards.add(new SetCardInfo("Windborn Muse", 80, Rarity.RARE, mage.cards.w.WindbornMuse.class));
+ cards.add(new SetCardInfo("Windbrisk Heights", 336, Rarity.RARE, mage.cards.w.WindbriskHeights.class));
+ cards.add(new SetCardInfo("Windfall", 104, Rarity.UNCOMMON, mage.cards.w.Windfall.class));
+ cards.add(new SetCardInfo("Worm Harvest", 238, Rarity.RARE, mage.cards.w.WormHarvest.class));
+ cards.add(new SetCardInfo("Yidris, Maelstrom Wielder", 50, Rarity.MYTHIC, mage.cards.y.YidrisMaelstromWielder.class));
+ cards.add(new SetCardInfo("Zedruu the Greathearted", 231, Rarity.MYTHIC, mage.cards.z.ZedruuTheGreathearted.class));
+ cards.add(new SetCardInfo("Zhur-Taa Druid", 232, Rarity.COMMON, mage.cards.z.ZhurTaaDruid.class));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/Commander2017.java b/Mage.Sets/src/mage/sets/Commander2017.java
index 44bdb8329c9..cfc047cd58d 100644
--- a/Mage.Sets/src/mage/sets/Commander2017.java
+++ b/Mage.Sets/src/mage/sets/Commander2017.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class Commander2017 extends ExpansionSet {
+public final class Commander2017 extends ExpansionSet {
private static final Commander2017 instance = new Commander2017();
diff --git a/Mage.Sets/src/mage/sets/CommanderAnthology.java b/Mage.Sets/src/mage/sets/CommanderAnthology.java
index 7142cee09ae..d2deb05aaa0 100644
--- a/Mage.Sets/src/mage/sets/CommanderAnthology.java
+++ b/Mage.Sets/src/mage/sets/CommanderAnthology.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class CommanderAnthology extends ExpansionSet {
+public final class CommanderAnthology extends ExpansionSet {
private static final CommanderAnthology instance = new CommanderAnthology();
diff --git a/Mage.Sets/src/mage/sets/CommandersArsenal.java b/Mage.Sets/src/mage/sets/CommandersArsenal.java
index f400cd6add5..2c29a592a17 100644
--- a/Mage.Sets/src/mage/sets/CommandersArsenal.java
+++ b/Mage.Sets/src/mage/sets/CommandersArsenal.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class CommandersArsenal extends ExpansionSet {
+public final class CommandersArsenal extends ExpansionSet {
private static final CommandersArsenal instance = new CommandersArsenal();
diff --git a/Mage.Sets/src/mage/sets/Conflux.java b/Mage.Sets/src/mage/sets/Conflux.java
index 82606f9983a..802a728ae9e 100644
--- a/Mage.Sets/src/mage/sets/Conflux.java
+++ b/Mage.Sets/src/mage/sets/Conflux.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Conflux extends ExpansionSet {
+public final class Conflux extends ExpansionSet {
private static final Conflux instance = new Conflux();
diff --git a/Mage.Sets/src/mage/sets/Conspiracy.java b/Mage.Sets/src/mage/sets/Conspiracy.java
index caa71dafb63..969de6c123f 100644
--- a/Mage.Sets/src/mage/sets/Conspiracy.java
+++ b/Mage.Sets/src/mage/sets/Conspiracy.java
@@ -1,240 +1,240 @@
-/*
-* 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author LevelX2
- */
-public class Conspiracy extends ExpansionSet {
-
- private static final Conspiracy instance = new Conspiracy();
-
- public static Conspiracy getInstance() {
- return instance;
- }
-
- 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("Spectral Searchlight", 205, Rarity.UNCOMMON, mage.cards.s.SpectralSearchlight.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class Conspiracy extends ExpansionSet {
+
+ private static final Conspiracy instance = new Conspiracy();
+
+ public static Conspiracy getInstance() {
+ return instance;
+ }
+
+ 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("Spectral Searchlight", 205, Rarity.UNCOMMON, mage.cards.s.SpectralSearchlight.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));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/ConspiracyTakeTheCrown.java b/Mage.Sets/src/mage/sets/ConspiracyTakeTheCrown.java
index 630eca1b6cd..90230906cda 100644
--- a/Mage.Sets/src/mage/sets/ConspiracyTakeTheCrown.java
+++ b/Mage.Sets/src/mage/sets/ConspiracyTakeTheCrown.java
@@ -1,249 +1,249 @@
-/*
-* 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author fireshoes
- */
-public class ConspiracyTakeTheCrown extends ExpansionSet {
-
- private static final ConspiracyTakeTheCrown instance = new ConspiracyTakeTheCrown();
-
- public static ConspiracyTakeTheCrown getInstance() {
- return instance;
- }
-
- private ConspiracyTakeTheCrown() {
- super("Conspiracy: Take the Crown", "CN2", ExpansionSet.buildDate(2016, 8, 26), 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("Absorb Vis", 126, Rarity.COMMON, mage.cards.a.AbsorbVis.class));
- cards.add(new SetCardInfo("Adriana, Captain of the Guard", 73, Rarity.RARE, mage.cards.a.AdrianaCaptainOfTheGuard.class));
- cards.add(new SetCardInfo("Affa Guard Hound", 81, Rarity.UNCOMMON, mage.cards.a.AffaGuardHound.class));
- cards.add(new SetCardInfo("Akroan Hoplite", 197, Rarity.UNCOMMON, mage.cards.a.AkroanHoplite.class));
- cards.add(new SetCardInfo("Altar's Reap", 127, Rarity.COMMON, mage.cards.a.AltarsReap.class));
- cards.add(new SetCardInfo("Ascended Lawmage", 198, Rarity.UNCOMMON, mage.cards.a.AscendedLawmage.class));
- cards.add(new SetCardInfo("Avatar of Woe", 128, Rarity.MYTHIC, mage.cards.a.AvatarOfWoe.class));
- cards.add(new SetCardInfo("Beast Within", 174, Rarity.UNCOMMON, mage.cards.b.BeastWithin.class));
- cards.add(new SetCardInfo("Berserk", 175, Rarity.MYTHIC, mage.cards.b.Berserk.class));
- cards.add(new SetCardInfo("Besmirch", 49, Rarity.UNCOMMON, mage.cards.b.Besmirch.class));
- cards.add(new SetCardInfo("Birds of Paradise", 176, Rarity.RARE, mage.cards.b.BirdsOfParadise.class));
- cards.add(new SetCardInfo("Blood-Toll Harpy", 129, Rarity.COMMON, mage.cards.b.BloodTollHarpy.class));
- cards.add(new SetCardInfo("Bonds of Quicksilver", 102, Rarity.COMMON, mage.cards.b.BondsOfQuicksilver.class));
- cards.add(new SetCardInfo("Borderland Explorer", 61, Rarity.COMMON, mage.cards.b.BorderlandExplorer.class));
- cards.add(new SetCardInfo("Bronze Sable", 208, Rarity.COMMON, mage.cards.b.BronzeSable.class));
- cards.add(new SetCardInfo("Brushstrider", 177, Rarity.UNCOMMON, mage.cards.b.Brushstrider.class));
- cards.add(new SetCardInfo("Burgeoning", 178, Rarity.RARE, mage.cards.b.Burgeoning.class));
- cards.add(new SetCardInfo("Burn Away", 151, Rarity.UNCOMMON, mage.cards.b.BurnAway.class));
- cards.add(new SetCardInfo("Burning Wish", 152, Rarity.RARE, mage.cards.b.BurningWish.class));
- cards.add(new SetCardInfo("Caller of Gales", 103, Rarity.COMMON, mage.cards.c.CallerOfGales.class));
- cards.add(new SetCardInfo("Canal Courier", 28, Rarity.COMMON, mage.cards.c.CanalCourier.class));
- cards.add(new SetCardInfo("Capital Punishment", 40, Rarity.RARE, mage.cards.c.CapitalPunishment.class));
- cards.add(new SetCardInfo("Carnage Gladiator", 199, Rarity.UNCOMMON, mage.cards.c.CarnageGladiator.class));
- cards.add(new SetCardInfo("Charmbreaker Devils", 153, Rarity.RARE, mage.cards.c.CharmbreakerDevils.class));
- cards.add(new SetCardInfo("Child of Night", 130, Rarity.COMMON, mage.cards.c.ChildOfNight.class));
- cards.add(new SetCardInfo("Cloaked Siren", 104, Rarity.COMMON, mage.cards.c.CloakedSiren.class));
- cards.add(new SetCardInfo("Coiling Oracle", 200, Rarity.UNCOMMON, mage.cards.c.CoilingOracle.class));
- cards.add(new SetCardInfo("Coordinated Assault", 154, Rarity.UNCOMMON, mage.cards.c.CoordinatedAssault.class));
- cards.add(new SetCardInfo("Copperhorn Scout", 179, Rarity.COMMON, mage.cards.c.CopperhornScout.class));
- cards.add(new SetCardInfo("Covenant of Minds", 105, Rarity.RARE, mage.cards.c.CovenantOfMinds.class));
- cards.add(new SetCardInfo("Coveted Peacock", 29, Rarity.UNCOMMON, mage.cards.c.CovetedPeacock.class));
- cards.add(new SetCardInfo("Crown-Hunter Hireling", 50, Rarity.COMMON, mage.cards.c.CrownHunterHireling.class));
- cards.add(new SetCardInfo("Custodi Lich", 41, Rarity.RARE, mage.cards.c.CustodiLich.class));
- cards.add(new SetCardInfo("Custodi Soulcaller", 15, Rarity.UNCOMMON, mage.cards.c.CustodiSoulcaller.class));
- cards.add(new SetCardInfo("Daretti, Ingenious Iconoclast", 74, Rarity.MYTHIC, mage.cards.d.DarettiIngeniousIconoclast.class));
- cards.add(new SetCardInfo("Deadly Designs", 42, Rarity.UNCOMMON, mage.cards.d.DeadlyDesigns.class));
- cards.add(new SetCardInfo("Death Wind", 131, Rarity.COMMON, mage.cards.d.DeathWind.class));
- cards.add(new SetCardInfo("Deceiver Exarch", 106, Rarity.UNCOMMON, mage.cards.d.DeceiverExarch.class));
- cards.add(new SetCardInfo("Deputized Protester", 51, Rarity.COMMON, mage.cards.d.DeputizedProtester.class));
- cards.add(new SetCardInfo("Desertion", 107, Rarity.RARE, mage.cards.d.Desertion.class));
- cards.add(new SetCardInfo("Diabolic Tutor", 132, Rarity.UNCOMMON, mage.cards.d.DiabolicTutor.class));
- cards.add(new SetCardInfo("Disenchant", 82, Rarity.COMMON, mage.cards.d.Disenchant.class));
- cards.add(new SetCardInfo("Dismiss", 108, Rarity.UNCOMMON, mage.cards.d.Dismiss.class));
- cards.add(new SetCardInfo("Divination", 109, Rarity.COMMON, mage.cards.d.Divination.class));
- cards.add(new SetCardInfo("Domesticated Hydra", 63, Rarity.UNCOMMON, mage.cards.d.DomesticatedHydra.class));
- cards.add(new SetCardInfo("Doomed Traveler", 83, Rarity.COMMON, mage.cards.d.DoomedTraveler.class));
- cards.add(new SetCardInfo("Dragonlair Spider", 201, Rarity.RARE, mage.cards.d.DragonlairSpider.class));
- cards.add(new SetCardInfo("Dread Statuary", 217, Rarity.UNCOMMON, mage.cards.d.DreadStatuary.class));
- cards.add(new SetCardInfo("Driver of the Dead", 133, Rarity.COMMON, mage.cards.d.DriverOfTheDead.class));
- cards.add(new SetCardInfo("Duskmantle Seer", 202, Rarity.RARE, mage.cards.d.DuskmantleSeer.class));
- cards.add(new SetCardInfo("Ember Beast", 155, Rarity.COMMON, mage.cards.e.EmberBeast.class));
- cards.add(new SetCardInfo("Entourage of Trest", 64, Rarity.COMMON, mage.cards.e.EntourageOfTrest.class));
- cards.add(new SetCardInfo("Evolving Wilds", 218, Rarity.COMMON, mage.cards.e.EvolvingWilds.class));
- cards.add(new SetCardInfo("Exotic Orchard", 219, Rarity.RARE, mage.cards.e.ExoticOrchard.class));
- cards.add(new SetCardInfo("Explosive Vegetation", 180, Rarity.UNCOMMON, mage.cards.e.ExplosiveVegetation.class));
- cards.add(new SetCardInfo("Expropriate", 30, Rarity.MYTHIC, mage.cards.e.Expropriate.class));
- cards.add(new SetCardInfo("Fade into Antiquity", 181, Rarity.COMMON, mage.cards.f.FadeIntoAntiquity.class));
- cards.add(new SetCardInfo("Faith's Reward", 84, Rarity.RARE, mage.cards.f.FaithsReward.class));
- cards.add(new SetCardInfo("Fang of the Pack", 65, Rarity.UNCOMMON, mage.cards.f.FangOfThePack.class));
- cards.add(new SetCardInfo("Farbog Boneflinger", 134, Rarity.UNCOMMON, mage.cards.f.FarbogBoneflinger.class));
- cards.add(new SetCardInfo("Festergloom", 135, Rarity.COMMON, mage.cards.f.Festergloom.class));
- cards.add(new SetCardInfo("Fiery Fall", 156, Rarity.COMMON, mage.cards.f.FieryFall.class));
- cards.add(new SetCardInfo("Flame Slash", 157, Rarity.COMMON, mage.cards.f.FlameSlash.class));
- cards.add(new SetCardInfo("Fleeting Distraction", 110, Rarity.COMMON, mage.cards.f.FleetingDistraction.class));
- cards.add(new SetCardInfo("Fleshbag Marauder", 136, Rarity.UNCOMMON, mage.cards.f.FleshbagMarauder.class));
- cards.add(new SetCardInfo("Followed Footsteps", 111, Rarity.RARE, mage.cards.f.FollowedFootsteps.class));
- cards.add(new SetCardInfo("Forgotten Ancient", 182, Rarity.RARE, mage.cards.f.ForgottenAncient.class));
- cards.add(new SetCardInfo("Gang of Devils", 158, Rarity.UNCOMMON, mage.cards.g.GangOfDevils.class));
- cards.add(new SetCardInfo("Garrulous Sycophant", 43, Rarity.COMMON, mage.cards.g.GarrulousSycophant.class));
- cards.add(new SetCardInfo("Ghostly Possession", 85, Rarity.COMMON, mage.cards.g.GhostlyPossession.class));
- cards.add(new SetCardInfo("Ghostly Prison", 86, Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class));
- cards.add(new SetCardInfo("Gleam of Resistance", 87, Rarity.COMMON, mage.cards.g.GleamOfResistance.class));
- cards.add(new SetCardInfo("Goblin Balloon Brigade", 159, Rarity.COMMON, mage.cards.g.GoblinBalloonBrigade.class));
- cards.add(new SetCardInfo("Goblin Racketeer", 53, Rarity.COMMON, mage.cards.g.GoblinRacketeer.class));
- cards.add(new SetCardInfo("Goblin Tunneler", 160, Rarity.COMMON, mage.cards.g.GoblinTunneler.class));
- cards.add(new SetCardInfo("Gods Willing", 88, Rarity.COMMON, mage.cards.g.GodsWilling.class));
- cards.add(new SetCardInfo("Gratuitous Violence", 161, Rarity.RARE, mage.cards.g.GratuitousViolence.class));
- cards.add(new SetCardInfo("Grenzo's Ruffians", 55, Rarity.UNCOMMON, mage.cards.g.GrenzosRuffians.class));
- cards.add(new SetCardInfo("Grenzo, Havoc Raiser", 54, Rarity.RARE, mage.cards.g.GrenzoHavocRaiser.class));
- cards.add(new SetCardInfo("Gruul War Chant", 203, Rarity.UNCOMMON, mage.cards.g.GruulWarChant.class));
- cards.add(new SetCardInfo("Guardian of the Gateless", 89, Rarity.UNCOMMON, mage.cards.g.GuardianOfTheGateless.class));
- cards.add(new SetCardInfo("Guttersnipe", 162, Rarity.UNCOMMON, mage.cards.g.Guttersnipe.class));
- cards.add(new SetCardInfo("Guul Draz Specter", 137, Rarity.RARE, mage.cards.g.GuulDrazSpecter.class));
- cards.add(new SetCardInfo("Hail of Arrows", 90, Rarity.UNCOMMON, mage.cards.h.HailOfArrows.class));
- cards.add(new SetCardInfo("Hallowed Burial", 91, Rarity.RARE, mage.cards.h.HallowedBurial.class));
- cards.add(new SetCardInfo("Hamletback Goliath", 163, Rarity.RARE, mage.cards.h.HamletbackGoliath.class));
- cards.add(new SetCardInfo("Harvester of Souls", 138, Rarity.RARE, mage.cards.h.HarvesterOfSouls.class));
- cards.add(new SetCardInfo("Havengul Vampire", 164, Rarity.UNCOMMON, mage.cards.h.HavengulVampire.class));
- cards.add(new SetCardInfo("Hedron Matrix", 209, Rarity.RARE, mage.cards.h.HedronMatrix.class));
- cards.add(new SetCardInfo("Hexplate Golem", 210, Rarity.COMMON, mage.cards.h.HexplateGolem.class));
- cards.add(new SetCardInfo("Hollowhenge Spirit", 92, Rarity.UNCOMMON, mage.cards.h.HollowhengeSpirit.class));
- cards.add(new SetCardInfo("Horn of Greed", 211, Rarity.RARE, mage.cards.h.HornOfGreed.class));
- cards.add(new SetCardInfo("Hundred-Handed One", 93, Rarity.RARE, mage.cards.h.HundredHandedOne.class));
- cards.add(new SetCardInfo("Hurly-Burly", 165, Rarity.COMMON, mage.cards.h.HurlyBurly.class));
- cards.add(new SetCardInfo("Ill-Tempered Cyclops", 166, Rarity.COMMON, mage.cards.i.IllTemperedCyclops.class));
- cards.add(new SetCardInfo("Infest", 139, Rarity.UNCOMMON, mage.cards.i.Infest.class));
- cards.add(new SetCardInfo("Inquisition of Kozilek", 140, Rarity.RARE, mage.cards.i.InquisitionOfKozilek.class));
- cards.add(new SetCardInfo("Into the Void", 112, Rarity.UNCOMMON, mage.cards.i.IntoTheVoid.class));
- cards.add(new SetCardInfo("Irresistible Prey", 183, Rarity.UNCOMMON, mage.cards.i.IrresistiblePrey.class));
- cards.add(new SetCardInfo("Jeering Homunculus", 33, Rarity.COMMON, mage.cards.j.JeeringHomunculus.class));
- cards.add(new SetCardInfo("Juniper Order Ranger", 204, Rarity.UNCOMMON, mage.cards.j.JuniperOrderRanger.class));
- cards.add(new SetCardInfo("Kami of the Crescent Moon", 113, Rarity.RARE, mage.cards.k.KamiOfTheCrescentMoon.class));
- cards.add(new SetCardInfo("Kaya, Ghost Assassin", 75, Rarity.MYTHIC, mage.cards.k.KayaGhostAssassin.class));
- cards.add(new SetCardInfo("Keeper of Keys", 34, Rarity.RARE, mage.cards.k.KeeperOfKeys.class));
- cards.add(new SetCardInfo("Keepsake Gorgon", 141, Rarity.UNCOMMON, mage.cards.k.KeepsakeGorgon.class));
- cards.add(new SetCardInfo("Kill Shot", 94, Rarity.COMMON, mage.cards.k.KillShot.class));
- cards.add(new SetCardInfo("Kiln Fiend", 167, Rarity.COMMON, mage.cards.k.KilnFiend.class));
- cards.add(new SetCardInfo("Kitesail", 212, Rarity.COMMON, mage.cards.k.Kitesail.class));
- cards.add(new SetCardInfo("Knights of the Black Rose", 76, Rarity.UNCOMMON, mage.cards.k.KnightsOfTheBlackRose.class));
- cards.add(new SetCardInfo("Lace with Moonglove", 184, Rarity.COMMON, mage.cards.l.LaceWithMoonglove.class));
- cards.add(new SetCardInfo("Lay of the Land", 185, Rarity.COMMON, mage.cards.l.LayOfTheLand.class));
- cards.add(new SetCardInfo("Leovold, Emissary of Trest", 77, Rarity.MYTHIC, mage.cards.l.LeovoldEmissaryOfTrest.class));
- cards.add(new SetCardInfo("Lieutenants of the Guard", 16, Rarity.COMMON, mage.cards.l.LieutenantsOfTheGuard.class));
- cards.add(new SetCardInfo("Manaplasm", 186, Rarity.UNCOMMON, mage.cards.m.Manaplasm.class));
- cards.add(new SetCardInfo("Marchesa's Decree", 44, Rarity.UNCOMMON, mage.cards.m.MarchesasDecree.class));
- cards.add(new SetCardInfo("Mausoleum Turnkey", 142, Rarity.UNCOMMON, mage.cards.m.MausoleumTurnkey.class));
- cards.add(new SetCardInfo("Menagerie Liberator", 67, Rarity.COMMON, mage.cards.m.MenagerieLiberator.class));
- cards.add(new SetCardInfo("Merfolk Looter", 114, Rarity.UNCOMMON, mage.cards.m.MerfolkLooter.class));
- cards.add(new SetCardInfo("Merfolk Skyscout", 115, Rarity.UNCOMMON, mage.cards.m.MerfolkSkyscout.class));
- cards.add(new SetCardInfo("Messenger Jays", 35, Rarity.COMMON, mage.cards.m.MessengerJays.class));
- cards.add(new SetCardInfo("Mnemonic Wall", 116, Rarity.COMMON, mage.cards.m.MnemonicWall.class));
- cards.add(new SetCardInfo("Murder", 143, Rarity.COMMON, mage.cards.m.Murder.class));
- cards.add(new SetCardInfo("Negate", 117, Rarity.COMMON, mage.cards.n.Negate.class));
- cards.add(new SetCardInfo("Nessian Asp", 187, Rarity.COMMON, mage.cards.n.NessianAsp.class));
- cards.add(new SetCardInfo("Netcaster Spider", 188, Rarity.COMMON, mage.cards.n.NetcasterSpider.class));
- cards.add(new SetCardInfo("Ogre Sentry", 168, Rarity.COMMON, mage.cards.o.OgreSentry.class));
- cards.add(new SetCardInfo("Omenspeaker", 118, Rarity.COMMON, mage.cards.o.Omenspeaker.class));
- cards.add(new SetCardInfo("Opaline Unicorn", 213, Rarity.COMMON, mage.cards.o.OpalineUnicorn.class));
- cards.add(new SetCardInfo("Orchard Elemental", 68, Rarity.COMMON, mage.cards.o.OrchardElemental.class));
- cards.add(new SetCardInfo("Overrun", 189, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
- cards.add(new SetCardInfo("Palace Jailer", 18, Rarity.UNCOMMON, mage.cards.p.PalaceJailer.class));
- cards.add(new SetCardInfo("Palace Sentinels", 19, Rarity.COMMON, mage.cards.p.PalaceSentinels.class));
- cards.add(new SetCardInfo("Pariah", 95, Rarity.RARE, mage.cards.p.Pariah.class));
- cards.add(new SetCardInfo("Pharika's Mender", 205, Rarity.UNCOMMON, mage.cards.p.PharikasMender.class));
- cards.add(new SetCardInfo("Phyrexian Arena", 144, Rarity.RARE, mage.cards.p.PhyrexianArena.class));
- cards.add(new SetCardInfo("Platinum Angel", 214, Rarity.MYTHIC, mage.cards.p.PlatinumAngel.class));
- cards.add(new SetCardInfo("Plummet", 190, Rarity.COMMON, mage.cards.p.Plummet.class));
- cards.add(new SetCardInfo("Prey Upon", 191, Rarity.COMMON, mage.cards.p.PreyUpon.class));
- cards.add(new SetCardInfo("Protector of the Crown", 21, Rarity.RARE, mage.cards.p.ProtectorOfTheCrown.class));
- cards.add(new SetCardInfo("Psychosis Crawler", 215, Rarity.RARE, mage.cards.p.PsychosisCrawler.class));
- cards.add(new SetCardInfo("Public Execution", 145, Rarity.UNCOMMON, mage.cards.p.PublicExecution.class));
- cards.add(new SetCardInfo("Queen Marchesa", 78, Rarity.MYTHIC, mage.cards.q.QueenMarchesa.class));
- cards.add(new SetCardInfo("Raise Dead", 146, Rarity.COMMON, mage.cards.r.RaiseDead.class));
- cards.add(new SetCardInfo("Raise the Alarm", 96, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class));
- cards.add(new SetCardInfo("Ravenous Leucrocota", 192, Rarity.COMMON, mage.cards.r.RavenousLeucrocota.class));
- cards.add(new SetCardInfo("Recruiter of the Guard", 22, Rarity.RARE, mage.cards.r.RecruiterOfTheGuard.class));
- cards.add(new SetCardInfo("Regal Behemoth", 69, Rarity.RARE, mage.cards.r.RegalBehemoth.class));
- cards.add(new SetCardInfo("Repulse", 119, Rarity.COMMON, mage.cards.r.Repulse.class));
- cards.add(new SetCardInfo("Reviving Dose", 97, Rarity.COMMON, mage.cards.r.RevivingDose.class));
- cards.add(new SetCardInfo("Rogue's Passage", 220, Rarity.UNCOMMON, mage.cards.r.RoguesPassage.class));
- cards.add(new SetCardInfo("Runed Servitor", 216, Rarity.UNCOMMON, mage.cards.r.RunedServitor.class));
- cards.add(new SetCardInfo("Sanctum Prelate", 23, Rarity.MYTHIC, mage.cards.s.SanctumPrelate.class));
- cards.add(new SetCardInfo("Sangromancer", 147, Rarity.RARE, mage.cards.s.Sangromancer.class));
- cards.add(new SetCardInfo("Selvala's Stampede", 71, Rarity.RARE, mage.cards.s.SelvalasStampede.class));
- cards.add(new SetCardInfo("Selvala, Heart of the Wilds", 70, Rarity.MYTHIC, mage.cards.s.SelvalaHeartOfTheWilds.class));
- cards.add(new SetCardInfo("Serum Visions", 120, Rarity.UNCOMMON, mage.cards.s.SerumVisions.class));
- cards.add(new SetCardInfo("Shambling Goblin", 148, Rarity.COMMON, mage.cards.s.ShamblingGoblin.class));
- cards.add(new SetCardInfo("Shimmering Grotto", 221, Rarity.COMMON, mage.cards.s.ShimmeringGrotto.class));
- cards.add(new SetCardInfo("Shipwreck Singer", 206, Rarity.UNCOMMON, mage.cards.s.ShipwreckSinger.class));
- cards.add(new SetCardInfo("Show and Tell", 121, Rarity.MYTHIC, mage.cards.s.ShowAndTell.class));
- cards.add(new SetCardInfo("Sinuous Vermin", 46, Rarity.COMMON, mage.cards.s.SinuousVermin.class));
- cards.add(new SetCardInfo("Skittering Crustacean", 36, Rarity.COMMON, mage.cards.s.SkitteringCrustacean.class));
- cards.add(new SetCardInfo("Skyline Despot", 57, Rarity.RARE, mage.cards.s.SkylineDespot.class));
- cards.add(new SetCardInfo("Spectral Grasp", 24, Rarity.UNCOMMON, mage.cards.s.SpectralGrasp.class));
- cards.add(new SetCardInfo("Sphinx of Magosi", 122, Rarity.RARE, mage.cards.s.SphinxOfMagosi.class));
- cards.add(new SetCardInfo("Spirit of the Hearth", 98, Rarity.RARE, mage.cards.s.SpiritOfTheHearth.class));
- cards.add(new SetCardInfo("Splitting Slime", 72, Rarity.RARE, mage.cards.s.SplittingSlime.class));
- cards.add(new SetCardInfo("Stoneshock Giant", 169, Rarity.UNCOMMON, mage.cards.s.StoneshockGiant.class));
- cards.add(new SetCardInfo("Stormchaser Chimera", 207, Rarity.UNCOMMON, mage.cards.s.StormchaserChimera.class));
- cards.add(new SetCardInfo("Strength in Numbers", 193, Rarity.COMMON, mage.cards.s.StrengthInNumbers.class));
- cards.add(new SetCardInfo("Stromkirk Patrol", 149, Rarity.COMMON, mage.cards.s.StromkirkPatrol.class));
- cards.add(new SetCardInfo("Stunt Double", 38, Rarity.RARE, mage.cards.s.StuntDouble.class));
- cards.add(new SetCardInfo("Subterranean Tremors", 58, Rarity.MYTHIC, mage.cards.s.SubterraneanTremors.class));
- cards.add(new SetCardInfo("Sulfurous Blast", 170, Rarity.UNCOMMON, mage.cards.s.SulfurousBlast.class));
- cards.add(new SetCardInfo("Sylvan Bounty", 194, Rarity.COMMON, mage.cards.s.SylvanBounty.class));
- cards.add(new SetCardInfo("Thorn of the Black Rose", 48, Rarity.COMMON, mage.cards.t.ThornOfTheBlackRose.class));
- cards.add(new SetCardInfo("Throne Warden", 25, Rarity.COMMON, mage.cards.t.ThroneWarden.class));
- cards.add(new SetCardInfo("Throne of the High City", 80, Rarity.RARE, mage.cards.t.ThroneOfTheHighCity.class));
- cards.add(new SetCardInfo("Tormenting Voice", 171, Rarity.COMMON, mage.cards.t.TormentingVoice.class));
- cards.add(new SetCardInfo("Traumatic Visions", 123, Rarity.COMMON, mage.cards.t.TraumaticVisions.class));
- cards.add(new SetCardInfo("Trumpet Blast", 172, Rarity.COMMON, mage.cards.t.TrumpetBlast.class));
- cards.add(new SetCardInfo("Twin Bolt", 173, Rarity.COMMON, mage.cards.t.TwinBolt.class));
- cards.add(new SetCardInfo("Unnerve", 150, Rarity.COMMON, mage.cards.u.Unnerve.class));
- cards.add(new SetCardInfo("Vaporkin", 124, Rarity.COMMON, mage.cards.v.Vaporkin.class));
- cards.add(new SetCardInfo("Vertigo Spawn", 125, Rarity.UNCOMMON, mage.cards.v.VertigoSpawn.class));
- cards.add(new SetCardInfo("Voyaging Satyr", 195, Rarity.COMMON, mage.cards.v.VoyagingSatyr.class));
- cards.add(new SetCardInfo("Wild Griffin", 99, Rarity.COMMON, mage.cards.w.WildGriffin.class));
- cards.add(new SetCardInfo("Wild Pair", 196, Rarity.RARE, mage.cards.w.WildPair.class));
- cards.add(new SetCardInfo("Windborne Charge", 100, Rarity.UNCOMMON, mage.cards.w.WindborneCharge.class));
- cards.add(new SetCardInfo("Wings of the Guard", 26, Rarity.COMMON, mage.cards.w.WingsOfTheGuard.class));
- cards.add(new SetCardInfo("Zealous Strike", 101, Rarity.COMMON, mage.cards.z.ZealousStrike.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author fireshoes
+ */
+public final class ConspiracyTakeTheCrown extends ExpansionSet {
+
+ private static final ConspiracyTakeTheCrown instance = new ConspiracyTakeTheCrown();
+
+ public static ConspiracyTakeTheCrown getInstance() {
+ return instance;
+ }
+
+ private ConspiracyTakeTheCrown() {
+ super("Conspiracy: Take the Crown", "CN2", ExpansionSet.buildDate(2016, 8, 26), 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("Absorb Vis", 126, Rarity.COMMON, mage.cards.a.AbsorbVis.class));
+ cards.add(new SetCardInfo("Adriana, Captain of the Guard", 73, Rarity.RARE, mage.cards.a.AdrianaCaptainOfTheGuard.class));
+ cards.add(new SetCardInfo("Affa Guard Hound", 81, Rarity.UNCOMMON, mage.cards.a.AffaGuardHound.class));
+ cards.add(new SetCardInfo("Akroan Hoplite", 197, Rarity.UNCOMMON, mage.cards.a.AkroanHoplite.class));
+ cards.add(new SetCardInfo("Altar's Reap", 127, Rarity.COMMON, mage.cards.a.AltarsReap.class));
+ cards.add(new SetCardInfo("Ascended Lawmage", 198, Rarity.UNCOMMON, mage.cards.a.AscendedLawmage.class));
+ cards.add(new SetCardInfo("Avatar of Woe", 128, Rarity.MYTHIC, mage.cards.a.AvatarOfWoe.class));
+ cards.add(new SetCardInfo("Beast Within", 174, Rarity.UNCOMMON, mage.cards.b.BeastWithin.class));
+ cards.add(new SetCardInfo("Berserk", 175, Rarity.MYTHIC, mage.cards.b.Berserk.class));
+ cards.add(new SetCardInfo("Besmirch", 49, Rarity.UNCOMMON, mage.cards.b.Besmirch.class));
+ cards.add(new SetCardInfo("Birds of Paradise", 176, Rarity.RARE, mage.cards.b.BirdsOfParadise.class));
+ cards.add(new SetCardInfo("Blood-Toll Harpy", 129, Rarity.COMMON, mage.cards.b.BloodTollHarpy.class));
+ cards.add(new SetCardInfo("Bonds of Quicksilver", 102, Rarity.COMMON, mage.cards.b.BondsOfQuicksilver.class));
+ cards.add(new SetCardInfo("Borderland Explorer", 61, Rarity.COMMON, mage.cards.b.BorderlandExplorer.class));
+ cards.add(new SetCardInfo("Bronze Sable", 208, Rarity.COMMON, mage.cards.b.BronzeSable.class));
+ cards.add(new SetCardInfo("Brushstrider", 177, Rarity.UNCOMMON, mage.cards.b.Brushstrider.class));
+ cards.add(new SetCardInfo("Burgeoning", 178, Rarity.RARE, mage.cards.b.Burgeoning.class));
+ cards.add(new SetCardInfo("Burn Away", 151, Rarity.UNCOMMON, mage.cards.b.BurnAway.class));
+ cards.add(new SetCardInfo("Burning Wish", 152, Rarity.RARE, mage.cards.b.BurningWish.class));
+ cards.add(new SetCardInfo("Caller of Gales", 103, Rarity.COMMON, mage.cards.c.CallerOfGales.class));
+ cards.add(new SetCardInfo("Canal Courier", 28, Rarity.COMMON, mage.cards.c.CanalCourier.class));
+ cards.add(new SetCardInfo("Capital Punishment", 40, Rarity.RARE, mage.cards.c.CapitalPunishment.class));
+ cards.add(new SetCardInfo("Carnage Gladiator", 199, Rarity.UNCOMMON, mage.cards.c.CarnageGladiator.class));
+ cards.add(new SetCardInfo("Charmbreaker Devils", 153, Rarity.RARE, mage.cards.c.CharmbreakerDevils.class));
+ cards.add(new SetCardInfo("Child of Night", 130, Rarity.COMMON, mage.cards.c.ChildOfNight.class));
+ cards.add(new SetCardInfo("Cloaked Siren", 104, Rarity.COMMON, mage.cards.c.CloakedSiren.class));
+ cards.add(new SetCardInfo("Coiling Oracle", 200, Rarity.UNCOMMON, mage.cards.c.CoilingOracle.class));
+ cards.add(new SetCardInfo("Coordinated Assault", 154, Rarity.UNCOMMON, mage.cards.c.CoordinatedAssault.class));
+ cards.add(new SetCardInfo("Copperhorn Scout", 179, Rarity.COMMON, mage.cards.c.CopperhornScout.class));
+ cards.add(new SetCardInfo("Covenant of Minds", 105, Rarity.RARE, mage.cards.c.CovenantOfMinds.class));
+ cards.add(new SetCardInfo("Coveted Peacock", 29, Rarity.UNCOMMON, mage.cards.c.CovetedPeacock.class));
+ cards.add(new SetCardInfo("Crown-Hunter Hireling", 50, Rarity.COMMON, mage.cards.c.CrownHunterHireling.class));
+ cards.add(new SetCardInfo("Custodi Lich", 41, Rarity.RARE, mage.cards.c.CustodiLich.class));
+ cards.add(new SetCardInfo("Custodi Soulcaller", 15, Rarity.UNCOMMON, mage.cards.c.CustodiSoulcaller.class));
+ cards.add(new SetCardInfo("Daretti, Ingenious Iconoclast", 74, Rarity.MYTHIC, mage.cards.d.DarettiIngeniousIconoclast.class));
+ cards.add(new SetCardInfo("Deadly Designs", 42, Rarity.UNCOMMON, mage.cards.d.DeadlyDesigns.class));
+ cards.add(new SetCardInfo("Death Wind", 131, Rarity.COMMON, mage.cards.d.DeathWind.class));
+ cards.add(new SetCardInfo("Deceiver Exarch", 106, Rarity.UNCOMMON, mage.cards.d.DeceiverExarch.class));
+ cards.add(new SetCardInfo("Deputized Protester", 51, Rarity.COMMON, mage.cards.d.DeputizedProtester.class));
+ cards.add(new SetCardInfo("Desertion", 107, Rarity.RARE, mage.cards.d.Desertion.class));
+ cards.add(new SetCardInfo("Diabolic Tutor", 132, Rarity.UNCOMMON, mage.cards.d.DiabolicTutor.class));
+ cards.add(new SetCardInfo("Disenchant", 82, Rarity.COMMON, mage.cards.d.Disenchant.class));
+ cards.add(new SetCardInfo("Dismiss", 108, Rarity.UNCOMMON, mage.cards.d.Dismiss.class));
+ cards.add(new SetCardInfo("Divination", 109, Rarity.COMMON, mage.cards.d.Divination.class));
+ cards.add(new SetCardInfo("Domesticated Hydra", 63, Rarity.UNCOMMON, mage.cards.d.DomesticatedHydra.class));
+ cards.add(new SetCardInfo("Doomed Traveler", 83, Rarity.COMMON, mage.cards.d.DoomedTraveler.class));
+ cards.add(new SetCardInfo("Dragonlair Spider", 201, Rarity.RARE, mage.cards.d.DragonlairSpider.class));
+ cards.add(new SetCardInfo("Dread Statuary", 217, Rarity.UNCOMMON, mage.cards.d.DreadStatuary.class));
+ cards.add(new SetCardInfo("Driver of the Dead", 133, Rarity.COMMON, mage.cards.d.DriverOfTheDead.class));
+ cards.add(new SetCardInfo("Duskmantle Seer", 202, Rarity.RARE, mage.cards.d.DuskmantleSeer.class));
+ cards.add(new SetCardInfo("Ember Beast", 155, Rarity.COMMON, mage.cards.e.EmberBeast.class));
+ cards.add(new SetCardInfo("Entourage of Trest", 64, Rarity.COMMON, mage.cards.e.EntourageOfTrest.class));
+ cards.add(new SetCardInfo("Evolving Wilds", 218, Rarity.COMMON, mage.cards.e.EvolvingWilds.class));
+ cards.add(new SetCardInfo("Exotic Orchard", 219, Rarity.RARE, mage.cards.e.ExoticOrchard.class));
+ cards.add(new SetCardInfo("Explosive Vegetation", 180, Rarity.UNCOMMON, mage.cards.e.ExplosiveVegetation.class));
+ cards.add(new SetCardInfo("Expropriate", 30, Rarity.MYTHIC, mage.cards.e.Expropriate.class));
+ cards.add(new SetCardInfo("Fade into Antiquity", 181, Rarity.COMMON, mage.cards.f.FadeIntoAntiquity.class));
+ cards.add(new SetCardInfo("Faith's Reward", 84, Rarity.RARE, mage.cards.f.FaithsReward.class));
+ cards.add(new SetCardInfo("Fang of the Pack", 65, Rarity.UNCOMMON, mage.cards.f.FangOfThePack.class));
+ cards.add(new SetCardInfo("Farbog Boneflinger", 134, Rarity.UNCOMMON, mage.cards.f.FarbogBoneflinger.class));
+ cards.add(new SetCardInfo("Festergloom", 135, Rarity.COMMON, mage.cards.f.Festergloom.class));
+ cards.add(new SetCardInfo("Fiery Fall", 156, Rarity.COMMON, mage.cards.f.FieryFall.class));
+ cards.add(new SetCardInfo("Flame Slash", 157, Rarity.COMMON, mage.cards.f.FlameSlash.class));
+ cards.add(new SetCardInfo("Fleeting Distraction", 110, Rarity.COMMON, mage.cards.f.FleetingDistraction.class));
+ cards.add(new SetCardInfo("Fleshbag Marauder", 136, Rarity.UNCOMMON, mage.cards.f.FleshbagMarauder.class));
+ cards.add(new SetCardInfo("Followed Footsteps", 111, Rarity.RARE, mage.cards.f.FollowedFootsteps.class));
+ cards.add(new SetCardInfo("Forgotten Ancient", 182, Rarity.RARE, mage.cards.f.ForgottenAncient.class));
+ cards.add(new SetCardInfo("Gang of Devils", 158, Rarity.UNCOMMON, mage.cards.g.GangOfDevils.class));
+ cards.add(new SetCardInfo("Garrulous Sycophant", 43, Rarity.COMMON, mage.cards.g.GarrulousSycophant.class));
+ cards.add(new SetCardInfo("Ghostly Possession", 85, Rarity.COMMON, mage.cards.g.GhostlyPossession.class));
+ cards.add(new SetCardInfo("Ghostly Prison", 86, Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class));
+ cards.add(new SetCardInfo("Gleam of Resistance", 87, Rarity.COMMON, mage.cards.g.GleamOfResistance.class));
+ cards.add(new SetCardInfo("Goblin Balloon Brigade", 159, Rarity.COMMON, mage.cards.g.GoblinBalloonBrigade.class));
+ cards.add(new SetCardInfo("Goblin Racketeer", 53, Rarity.COMMON, mage.cards.g.GoblinRacketeer.class));
+ cards.add(new SetCardInfo("Goblin Tunneler", 160, Rarity.COMMON, mage.cards.g.GoblinTunneler.class));
+ cards.add(new SetCardInfo("Gods Willing", 88, Rarity.COMMON, mage.cards.g.GodsWilling.class));
+ cards.add(new SetCardInfo("Gratuitous Violence", 161, Rarity.RARE, mage.cards.g.GratuitousViolence.class));
+ cards.add(new SetCardInfo("Grenzo's Ruffians", 55, Rarity.UNCOMMON, mage.cards.g.GrenzosRuffians.class));
+ cards.add(new SetCardInfo("Grenzo, Havoc Raiser", 54, Rarity.RARE, mage.cards.g.GrenzoHavocRaiser.class));
+ cards.add(new SetCardInfo("Gruul War Chant", 203, Rarity.UNCOMMON, mage.cards.g.GruulWarChant.class));
+ cards.add(new SetCardInfo("Guardian of the Gateless", 89, Rarity.UNCOMMON, mage.cards.g.GuardianOfTheGateless.class));
+ cards.add(new SetCardInfo("Guttersnipe", 162, Rarity.UNCOMMON, mage.cards.g.Guttersnipe.class));
+ cards.add(new SetCardInfo("Guul Draz Specter", 137, Rarity.RARE, mage.cards.g.GuulDrazSpecter.class));
+ cards.add(new SetCardInfo("Hail of Arrows", 90, Rarity.UNCOMMON, mage.cards.h.HailOfArrows.class));
+ cards.add(new SetCardInfo("Hallowed Burial", 91, Rarity.RARE, mage.cards.h.HallowedBurial.class));
+ cards.add(new SetCardInfo("Hamletback Goliath", 163, Rarity.RARE, mage.cards.h.HamletbackGoliath.class));
+ cards.add(new SetCardInfo("Harvester of Souls", 138, Rarity.RARE, mage.cards.h.HarvesterOfSouls.class));
+ cards.add(new SetCardInfo("Havengul Vampire", 164, Rarity.UNCOMMON, mage.cards.h.HavengulVampire.class));
+ cards.add(new SetCardInfo("Hedron Matrix", 209, Rarity.RARE, mage.cards.h.HedronMatrix.class));
+ cards.add(new SetCardInfo("Hexplate Golem", 210, Rarity.COMMON, mage.cards.h.HexplateGolem.class));
+ cards.add(new SetCardInfo("Hollowhenge Spirit", 92, Rarity.UNCOMMON, mage.cards.h.HollowhengeSpirit.class));
+ cards.add(new SetCardInfo("Horn of Greed", 211, Rarity.RARE, mage.cards.h.HornOfGreed.class));
+ cards.add(new SetCardInfo("Hundred-Handed One", 93, Rarity.RARE, mage.cards.h.HundredHandedOne.class));
+ cards.add(new SetCardInfo("Hurly-Burly", 165, Rarity.COMMON, mage.cards.h.HurlyBurly.class));
+ cards.add(new SetCardInfo("Ill-Tempered Cyclops", 166, Rarity.COMMON, mage.cards.i.IllTemperedCyclops.class));
+ cards.add(new SetCardInfo("Infest", 139, Rarity.UNCOMMON, mage.cards.i.Infest.class));
+ cards.add(new SetCardInfo("Inquisition of Kozilek", 140, Rarity.RARE, mage.cards.i.InquisitionOfKozilek.class));
+ cards.add(new SetCardInfo("Into the Void", 112, Rarity.UNCOMMON, mage.cards.i.IntoTheVoid.class));
+ cards.add(new SetCardInfo("Irresistible Prey", 183, Rarity.UNCOMMON, mage.cards.i.IrresistiblePrey.class));
+ cards.add(new SetCardInfo("Jeering Homunculus", 33, Rarity.COMMON, mage.cards.j.JeeringHomunculus.class));
+ cards.add(new SetCardInfo("Juniper Order Ranger", 204, Rarity.UNCOMMON, mage.cards.j.JuniperOrderRanger.class));
+ cards.add(new SetCardInfo("Kami of the Crescent Moon", 113, Rarity.RARE, mage.cards.k.KamiOfTheCrescentMoon.class));
+ cards.add(new SetCardInfo("Kaya, Ghost Assassin", 75, Rarity.MYTHIC, mage.cards.k.KayaGhostAssassin.class));
+ cards.add(new SetCardInfo("Keeper of Keys", 34, Rarity.RARE, mage.cards.k.KeeperOfKeys.class));
+ cards.add(new SetCardInfo("Keepsake Gorgon", 141, Rarity.UNCOMMON, mage.cards.k.KeepsakeGorgon.class));
+ cards.add(new SetCardInfo("Kill Shot", 94, Rarity.COMMON, mage.cards.k.KillShot.class));
+ cards.add(new SetCardInfo("Kiln Fiend", 167, Rarity.COMMON, mage.cards.k.KilnFiend.class));
+ cards.add(new SetCardInfo("Kitesail", 212, Rarity.COMMON, mage.cards.k.Kitesail.class));
+ cards.add(new SetCardInfo("Knights of the Black Rose", 76, Rarity.UNCOMMON, mage.cards.k.KnightsOfTheBlackRose.class));
+ cards.add(new SetCardInfo("Lace with Moonglove", 184, Rarity.COMMON, mage.cards.l.LaceWithMoonglove.class));
+ cards.add(new SetCardInfo("Lay of the Land", 185, Rarity.COMMON, mage.cards.l.LayOfTheLand.class));
+ cards.add(new SetCardInfo("Leovold, Emissary of Trest", 77, Rarity.MYTHIC, mage.cards.l.LeovoldEmissaryOfTrest.class));
+ cards.add(new SetCardInfo("Lieutenants of the Guard", 16, Rarity.COMMON, mage.cards.l.LieutenantsOfTheGuard.class));
+ cards.add(new SetCardInfo("Manaplasm", 186, Rarity.UNCOMMON, mage.cards.m.Manaplasm.class));
+ cards.add(new SetCardInfo("Marchesa's Decree", 44, Rarity.UNCOMMON, mage.cards.m.MarchesasDecree.class));
+ cards.add(new SetCardInfo("Mausoleum Turnkey", 142, Rarity.UNCOMMON, mage.cards.m.MausoleumTurnkey.class));
+ cards.add(new SetCardInfo("Menagerie Liberator", 67, Rarity.COMMON, mage.cards.m.MenagerieLiberator.class));
+ cards.add(new SetCardInfo("Merfolk Looter", 114, Rarity.UNCOMMON, mage.cards.m.MerfolkLooter.class));
+ cards.add(new SetCardInfo("Merfolk Skyscout", 115, Rarity.UNCOMMON, mage.cards.m.MerfolkSkyscout.class));
+ cards.add(new SetCardInfo("Messenger Jays", 35, Rarity.COMMON, mage.cards.m.MessengerJays.class));
+ cards.add(new SetCardInfo("Mnemonic Wall", 116, Rarity.COMMON, mage.cards.m.MnemonicWall.class));
+ cards.add(new SetCardInfo("Murder", 143, Rarity.COMMON, mage.cards.m.Murder.class));
+ cards.add(new SetCardInfo("Negate", 117, Rarity.COMMON, mage.cards.n.Negate.class));
+ cards.add(new SetCardInfo("Nessian Asp", 187, Rarity.COMMON, mage.cards.n.NessianAsp.class));
+ cards.add(new SetCardInfo("Netcaster Spider", 188, Rarity.COMMON, mage.cards.n.NetcasterSpider.class));
+ cards.add(new SetCardInfo("Ogre Sentry", 168, Rarity.COMMON, mage.cards.o.OgreSentry.class));
+ cards.add(new SetCardInfo("Omenspeaker", 118, Rarity.COMMON, mage.cards.o.Omenspeaker.class));
+ cards.add(new SetCardInfo("Opaline Unicorn", 213, Rarity.COMMON, mage.cards.o.OpalineUnicorn.class));
+ cards.add(new SetCardInfo("Orchard Elemental", 68, Rarity.COMMON, mage.cards.o.OrchardElemental.class));
+ cards.add(new SetCardInfo("Overrun", 189, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
+ cards.add(new SetCardInfo("Palace Jailer", 18, Rarity.UNCOMMON, mage.cards.p.PalaceJailer.class));
+ cards.add(new SetCardInfo("Palace Sentinels", 19, Rarity.COMMON, mage.cards.p.PalaceSentinels.class));
+ cards.add(new SetCardInfo("Pariah", 95, Rarity.RARE, mage.cards.p.Pariah.class));
+ cards.add(new SetCardInfo("Pharika's Mender", 205, Rarity.UNCOMMON, mage.cards.p.PharikasMender.class));
+ cards.add(new SetCardInfo("Phyrexian Arena", 144, Rarity.RARE, mage.cards.p.PhyrexianArena.class));
+ cards.add(new SetCardInfo("Platinum Angel", 214, Rarity.MYTHIC, mage.cards.p.PlatinumAngel.class));
+ cards.add(new SetCardInfo("Plummet", 190, Rarity.COMMON, mage.cards.p.Plummet.class));
+ cards.add(new SetCardInfo("Prey Upon", 191, Rarity.COMMON, mage.cards.p.PreyUpon.class));
+ cards.add(new SetCardInfo("Protector of the Crown", 21, Rarity.RARE, mage.cards.p.ProtectorOfTheCrown.class));
+ cards.add(new SetCardInfo("Psychosis Crawler", 215, Rarity.RARE, mage.cards.p.PsychosisCrawler.class));
+ cards.add(new SetCardInfo("Public Execution", 145, Rarity.UNCOMMON, mage.cards.p.PublicExecution.class));
+ cards.add(new SetCardInfo("Queen Marchesa", 78, Rarity.MYTHIC, mage.cards.q.QueenMarchesa.class));
+ cards.add(new SetCardInfo("Raise Dead", 146, Rarity.COMMON, mage.cards.r.RaiseDead.class));
+ cards.add(new SetCardInfo("Raise the Alarm", 96, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class));
+ cards.add(new SetCardInfo("Ravenous Leucrocota", 192, Rarity.COMMON, mage.cards.r.RavenousLeucrocota.class));
+ cards.add(new SetCardInfo("Recruiter of the Guard", 22, Rarity.RARE, mage.cards.r.RecruiterOfTheGuard.class));
+ cards.add(new SetCardInfo("Regal Behemoth", 69, Rarity.RARE, mage.cards.r.RegalBehemoth.class));
+ cards.add(new SetCardInfo("Repulse", 119, Rarity.COMMON, mage.cards.r.Repulse.class));
+ cards.add(new SetCardInfo("Reviving Dose", 97, Rarity.COMMON, mage.cards.r.RevivingDose.class));
+ cards.add(new SetCardInfo("Rogue's Passage", 220, Rarity.UNCOMMON, mage.cards.r.RoguesPassage.class));
+ cards.add(new SetCardInfo("Runed Servitor", 216, Rarity.UNCOMMON, mage.cards.r.RunedServitor.class));
+ cards.add(new SetCardInfo("Sanctum Prelate", 23, Rarity.MYTHIC, mage.cards.s.SanctumPrelate.class));
+ cards.add(new SetCardInfo("Sangromancer", 147, Rarity.RARE, mage.cards.s.Sangromancer.class));
+ cards.add(new SetCardInfo("Selvala's Stampede", 71, Rarity.RARE, mage.cards.s.SelvalasStampede.class));
+ cards.add(new SetCardInfo("Selvala, Heart of the Wilds", 70, Rarity.MYTHIC, mage.cards.s.SelvalaHeartOfTheWilds.class));
+ cards.add(new SetCardInfo("Serum Visions", 120, Rarity.UNCOMMON, mage.cards.s.SerumVisions.class));
+ cards.add(new SetCardInfo("Shambling Goblin", 148, Rarity.COMMON, mage.cards.s.ShamblingGoblin.class));
+ cards.add(new SetCardInfo("Shimmering Grotto", 221, Rarity.COMMON, mage.cards.s.ShimmeringGrotto.class));
+ cards.add(new SetCardInfo("Shipwreck Singer", 206, Rarity.UNCOMMON, mage.cards.s.ShipwreckSinger.class));
+ cards.add(new SetCardInfo("Show and Tell", 121, Rarity.MYTHIC, mage.cards.s.ShowAndTell.class));
+ cards.add(new SetCardInfo("Sinuous Vermin", 46, Rarity.COMMON, mage.cards.s.SinuousVermin.class));
+ cards.add(new SetCardInfo("Skittering Crustacean", 36, Rarity.COMMON, mage.cards.s.SkitteringCrustacean.class));
+ cards.add(new SetCardInfo("Skyline Despot", 57, Rarity.RARE, mage.cards.s.SkylineDespot.class));
+ cards.add(new SetCardInfo("Spectral Grasp", 24, Rarity.UNCOMMON, mage.cards.s.SpectralGrasp.class));
+ cards.add(new SetCardInfo("Sphinx of Magosi", 122, Rarity.RARE, mage.cards.s.SphinxOfMagosi.class));
+ cards.add(new SetCardInfo("Spirit of the Hearth", 98, Rarity.RARE, mage.cards.s.SpiritOfTheHearth.class));
+ cards.add(new SetCardInfo("Splitting Slime", 72, Rarity.RARE, mage.cards.s.SplittingSlime.class));
+ cards.add(new SetCardInfo("Stoneshock Giant", 169, Rarity.UNCOMMON, mage.cards.s.StoneshockGiant.class));
+ cards.add(new SetCardInfo("Stormchaser Chimera", 207, Rarity.UNCOMMON, mage.cards.s.StormchaserChimera.class));
+ cards.add(new SetCardInfo("Strength in Numbers", 193, Rarity.COMMON, mage.cards.s.StrengthInNumbers.class));
+ cards.add(new SetCardInfo("Stromkirk Patrol", 149, Rarity.COMMON, mage.cards.s.StromkirkPatrol.class));
+ cards.add(new SetCardInfo("Stunt Double", 38, Rarity.RARE, mage.cards.s.StuntDouble.class));
+ cards.add(new SetCardInfo("Subterranean Tremors", 58, Rarity.MYTHIC, mage.cards.s.SubterraneanTremors.class));
+ cards.add(new SetCardInfo("Sulfurous Blast", 170, Rarity.UNCOMMON, mage.cards.s.SulfurousBlast.class));
+ cards.add(new SetCardInfo("Sylvan Bounty", 194, Rarity.COMMON, mage.cards.s.SylvanBounty.class));
+ cards.add(new SetCardInfo("Thorn of the Black Rose", 48, Rarity.COMMON, mage.cards.t.ThornOfTheBlackRose.class));
+ cards.add(new SetCardInfo("Throne Warden", 25, Rarity.COMMON, mage.cards.t.ThroneWarden.class));
+ cards.add(new SetCardInfo("Throne of the High City", 80, Rarity.RARE, mage.cards.t.ThroneOfTheHighCity.class));
+ cards.add(new SetCardInfo("Tormenting Voice", 171, Rarity.COMMON, mage.cards.t.TormentingVoice.class));
+ cards.add(new SetCardInfo("Traumatic Visions", 123, Rarity.COMMON, mage.cards.t.TraumaticVisions.class));
+ cards.add(new SetCardInfo("Trumpet Blast", 172, Rarity.COMMON, mage.cards.t.TrumpetBlast.class));
+ cards.add(new SetCardInfo("Twin Bolt", 173, Rarity.COMMON, mage.cards.t.TwinBolt.class));
+ cards.add(new SetCardInfo("Unnerve", 150, Rarity.COMMON, mage.cards.u.Unnerve.class));
+ cards.add(new SetCardInfo("Vaporkin", 124, Rarity.COMMON, mage.cards.v.Vaporkin.class));
+ cards.add(new SetCardInfo("Vertigo Spawn", 125, Rarity.UNCOMMON, mage.cards.v.VertigoSpawn.class));
+ cards.add(new SetCardInfo("Voyaging Satyr", 195, Rarity.COMMON, mage.cards.v.VoyagingSatyr.class));
+ cards.add(new SetCardInfo("Wild Griffin", 99, Rarity.COMMON, mage.cards.w.WildGriffin.class));
+ cards.add(new SetCardInfo("Wild Pair", 196, Rarity.RARE, mage.cards.w.WildPair.class));
+ cards.add(new SetCardInfo("Windborne Charge", 100, Rarity.UNCOMMON, mage.cards.w.WindborneCharge.class));
+ cards.add(new SetCardInfo("Wings of the Guard", 26, Rarity.COMMON, mage.cards.w.WingsOfTheGuard.class));
+ cards.add(new SetCardInfo("Zealous Strike", 101, Rarity.COMMON, mage.cards.z.ZealousStrike.class));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/Core2019.java b/Mage.Sets/src/mage/sets/Core2019.java
deleted file mode 100644
index cd56308d3be..00000000000
--- a/Mage.Sets/src/mage/sets/Core2019.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-* 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;
-
-/**
- *
- * @author fireshoes
- */
-public class Core2019 extends ExpansionSet {
-
- private static final Core2019 instance = new Core2019();
-
- public static Core2019 getInstance() {
- return instance;
- }
-
- private Core2019() {
- super("Core 2019", "M19", ExpansionSet.buildDate(2018, 7, 20), SetType.CORE);
- this.hasBoosters = true;
- this.numBoosterLands = 1;
- this.numBoosterCommon = 10;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 8;
- }
-}
diff --git a/Mage.Sets/src/mage/sets/CoreSet2019.java b/Mage.Sets/src/mage/sets/CoreSet2019.java
new file mode 100644
index 00000000000..bdd55bf5f09
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/CoreSet2019.java
@@ -0,0 +1,88 @@
+/*
+ * 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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class CoreSet2019 extends ExpansionSet {
+
+ private static final CoreSet2019 instance = new CoreSet2019();
+
+ public static CoreSet2019 getInstance() {
+ return instance;
+ }
+
+ private CoreSet2019() {
+ super("Core Set 2019", "M19", ExpansionSet.buildDate(2018, 7, 13), SetType.CORE);
+ this.hasBoosters = true;
+ this.numBoosterLands = 1;
+ this.numBoosterCommon = 10;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 8;
+ this.maxCardNumberInBooster = 280;
+ cards.add(new SetCardInfo("Act of Treason", 127, Rarity.COMMON, mage.cards.a.ActOfTreason.class));
+ cards.add(new SetCardInfo("Anticipate", 44, Rarity.COMMON, mage.cards.a.Anticipate.class));
+ cards.add(new SetCardInfo("Cancel", 48, Rarity.COMMON, mage.cards.c.Cancel.class));
+ cards.add(new SetCardInfo("Catalyst Elemental", 132, Rarity.COMMON, mage.cards.c.CatalystElemental.class));
+ cards.add(new SetCardInfo("Daybreak Chaplain", 10, Rarity.COMMON, mage.cards.d.DaybreakChaplain.class));
+ cards.add(new SetCardInfo("Disperse", 50, Rarity.COMMON, mage.cards.d.Disperse.class));
+ cards.add(new SetCardInfo("Dwarven Priest", 11, Rarity.COMMON, mage.cards.d.DwarvenPriest.class));
+ cards.add(new SetCardInfo("Dwindle", 53, Rarity.COMMON, mage.cards.d.Dwindle.class));
+ cards.add(new SetCardInfo("Fire Elemental", 141, Rarity.COMMON, mage.cards.f.FireElemental.class));
+ cards.add(new SetCardInfo("Frilled Sea Serpent", 56, Rarity.COMMON, mage.cards.f.FrilledSeaSerpent.class));
+ cards.add(new SetCardInfo("Gearsmith Prodigy", 57, Rarity.COMMON, mage.cards.g.GearsmithProdigy.class));
+ cards.add(new SetCardInfo("Goblin Instigator", 142, Rarity.COMMON, mage.cards.g.GoblinInstigator.class));
+ cards.add(new SetCardInfo("Goblin Motivator", 143, Rarity.COMMON, mage.cards.g.GoblinMotivator.class));
+ cards.add(new SetCardInfo("Hostile Minotaur", 147, Rarity.COMMON, mage.cards.h.HostileMinotaur.class));
+ cards.add(new SetCardInfo("Inspired Charge", 15, Rarity.COMMON, mage.cards.i.InspiredCharge.class));
+ cards.add(new SetCardInfo("Knight of the Tusk", 18, Rarity.COMMON, mage.cards.k.KnightOfTheTusk.class));
+ cards.add(new SetCardInfo("Knight's Pledge", 19, Rarity.COMMON, mage.cards.k.KnightsPledge.class));
+ cards.add(new SetCardInfo("Lava Axe", 150, Rarity.COMMON, mage.cards.l.LavaAxe.class));
+ cards.add(new SetCardInfo("Loxodon Line Breaker", 24, Rarity.COMMON, mage.cards.l.LoxodonLineBreaker.class));
+ cards.add(new SetCardInfo("Mighty Leap", 28, Rarity.COMMON, mage.cards.m.MightyLeap.class));
+ cards.add(new SetCardInfo("Omenspeaker", 64, Rarity.COMMON, mage.cards.o.Omenspeaker.class));
+ cards.add(new SetCardInfo("Onakke Ogre", 153, Rarity.COMMON, mage.cards.o.OnakkeOgre.class));
+ cards.add(new SetCardInfo("Oreskos Swiftclaw", 31, Rarity.COMMON, mage.cards.o.OreskosSwiftclaw.class));
+ cards.add(new SetCardInfo("Revitalize", 35, Rarity.COMMON, mage.cards.r.Revitalize.class));
+ cards.add(new SetCardInfo("Rustwing Falcon", 36, Rarity.COMMON, mage.cards.r.RustwingFalcon.class));
+ cards.add(new SetCardInfo("Scholar of Stars", 71, Rarity.COMMON, mage.cards.s.ScholarOfStars.class));
+ cards.add(new SetCardInfo("Sure Strike", 161, Rarity.COMMON, mage.cards.s.SureStrike.class));
+ cards.add(new SetCardInfo("Tolarian Scholar", 80, Rarity.COMMON, mage.cards.t.TolarianScholar.class));
+ cards.add(new SetCardInfo("Tormenting Voice", 164, Rarity.COMMON, mage.cards.t.TormentingVoice.class));
+ cards.add(new SetCardInfo("Trumpet Blast", 165, Rarity.COMMON, mage.cards.t.TrumpetBlast.class));
+ cards.add(new SetCardInfo("Trusty Packbeast", 41, Rarity.COMMON, mage.cards.t.TrustyPackbeast.class));
+ cards.add(new SetCardInfo("Uncomfortable Chill", 82, Rarity.COMMON, mage.cards.u.UncomfortableChill.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/DarkAscension.java b/Mage.Sets/src/mage/sets/DarkAscension.java
index 6655d39aa6e..faed90b2f53 100644
--- a/Mage.Sets/src/mage/sets/DarkAscension.java
+++ b/Mage.Sets/src/mage/sets/DarkAscension.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class DarkAscension extends ExpansionSet {
+public final class DarkAscension extends ExpansionSet {
private static final DarkAscension instance = new DarkAscension();
diff --git a/Mage.Sets/src/mage/sets/Darksteel.java b/Mage.Sets/src/mage/sets/Darksteel.java
index 252e4916452..7624752521b 100644
--- a/Mage.Sets/src/mage/sets/Darksteel.java
+++ b/Mage.Sets/src/mage/sets/Darksteel.java
@@ -1,190 +1,190 @@
-package mage.sets;
-
-import mage.cards.ExpansionSet;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-public class Darksteel extends ExpansionSet {
-
- private static final Darksteel instance = new Darksteel();
-
- public static Darksteel getInstance() {
- return instance;
- }
-
- public Darksteel() {
- super("Darksteel", "DST", ExpansionSet.buildDate(2004, 1, 6), SetType.EXPANSION);
- this.blockName = "Mirrodin";
- this.parentSet = Mirrodin.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("Aether Snap", 37, Rarity.RARE, mage.cards.a.AetherSnap.class));
- cards.add(new SetCardInfo("Aether Vial", 91, Rarity.UNCOMMON, mage.cards.a.AetherVial.class));
- cards.add(new SetCardInfo("Ageless Entity", 73, Rarity.RARE, mage.cards.a.AgelessEntity.class));
- cards.add(new SetCardInfo("Angel's Feather", 92, Rarity.UNCOMMON, mage.cards.a.AngelsFeather.class));
- cards.add(new SetCardInfo("Arcane Spyglass", 93, Rarity.COMMON, mage.cards.a.ArcaneSpyglass.class));
- cards.add(new SetCardInfo("Arcbound Bruiser", 94, Rarity.COMMON, mage.cards.a.ArcboundBruiser.class));
- cards.add(new SetCardInfo("Arcbound Crusher", 95, Rarity.UNCOMMON, mage.cards.a.ArcboundCrusher.class));
- cards.add(new SetCardInfo("Arcbound Fiend", 96, Rarity.UNCOMMON, mage.cards.a.ArcboundFiend.class));
- cards.add(new SetCardInfo("Arcbound Hybrid", 97, Rarity.COMMON, mage.cards.a.ArcboundHybrid.class));
- cards.add(new SetCardInfo("Arcbound Lancer", 98, Rarity.UNCOMMON, mage.cards.a.ArcboundLancer.class));
- cards.add(new SetCardInfo("Arcbound Overseer", 99, Rarity.RARE, mage.cards.a.ArcboundOverseer.class));
- cards.add(new SetCardInfo("Arcbound Ravager", 100, Rarity.RARE, mage.cards.a.ArcboundRavager.class));
- cards.add(new SetCardInfo("Arcbound Reclaimer", 101, Rarity.RARE, mage.cards.a.ArcboundReclaimer.class));
- cards.add(new SetCardInfo("Arcbound Slith", 102, Rarity.UNCOMMON, mage.cards.a.ArcboundSlith.class));
- cards.add(new SetCardInfo("Arcbound Stinger", 103, Rarity.COMMON, mage.cards.a.ArcboundStinger.class));
- cards.add(new SetCardInfo("Arcbound Worker", 104, Rarity.COMMON, mage.cards.a.ArcboundWorker.class));
- cards.add(new SetCardInfo("Auriok Glaivemaster", 1, Rarity.COMMON, mage.cards.a.AuriokGlaivemaster.class));
- cards.add(new SetCardInfo("Auriok Siege Sled", 105, Rarity.UNCOMMON, mage.cards.a.AuriokSiegeSled.class));
- 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("Carry Away", 19, Rarity.UNCOMMON, mage.cards.c.CarryAway.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));
- cards.add(new SetCardInfo("Crazed Goblin", 56, Rarity.COMMON, mage.cards.c.CrazedGoblin.class));
- cards.add(new SetCardInfo("Darksteel Brute", 108, Rarity.UNCOMMON, mage.cards.d.DarksteelBrute.class));
- cards.add(new SetCardInfo("Darksteel Citadel", 164, Rarity.COMMON, mage.cards.d.DarksteelCitadel.class));
- cards.add(new SetCardInfo("Darksteel Colossus", 109, Rarity.RARE, mage.cards.d.DarksteelColossus.class));
- cards.add(new SetCardInfo("Darksteel Forge", 110, Rarity.RARE, mage.cards.d.DarksteelForge.class));
- cards.add(new SetCardInfo("Darksteel Gargoyle", 111, Rarity.UNCOMMON, mage.cards.d.DarksteelGargoyle.class));
- cards.add(new SetCardInfo("Darksteel Ingot", 112, Rarity.COMMON, mage.cards.d.DarksteelIngot.class));
- cards.add(new SetCardInfo("Darksteel Pendant", 113, Rarity.COMMON, mage.cards.d.DarksteelPendant.class));
- cards.add(new SetCardInfo("Darksteel Reactor", 114, Rarity.RARE, mage.cards.d.DarksteelReactor.class));
- cards.add(new SetCardInfo("Death Cloud", 40, Rarity.RARE, mage.cards.d.DeathCloud.class));
+package mage.sets;
+
+import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+public final class Darksteel extends ExpansionSet {
+
+ private static final Darksteel instance = new Darksteel();
+
+ public static Darksteel getInstance() {
+ return instance;
+ }
+
+ public Darksteel() {
+ super("Darksteel", "DST", ExpansionSet.buildDate(2004, 1, 6), SetType.EXPANSION);
+ this.blockName = "Mirrodin";
+ this.parentSet = Mirrodin.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("Aether Snap", 37, Rarity.RARE, mage.cards.a.AetherSnap.class));
+ cards.add(new SetCardInfo("Aether Vial", 91, Rarity.UNCOMMON, mage.cards.a.AetherVial.class));
+ cards.add(new SetCardInfo("Ageless Entity", 73, Rarity.RARE, mage.cards.a.AgelessEntity.class));
+ cards.add(new SetCardInfo("Angel's Feather", 92, Rarity.UNCOMMON, mage.cards.a.AngelsFeather.class));
+ cards.add(new SetCardInfo("Arcane Spyglass", 93, Rarity.COMMON, mage.cards.a.ArcaneSpyglass.class));
+ cards.add(new SetCardInfo("Arcbound Bruiser", 94, Rarity.COMMON, mage.cards.a.ArcboundBruiser.class));
+ cards.add(new SetCardInfo("Arcbound Crusher", 95, Rarity.UNCOMMON, mage.cards.a.ArcboundCrusher.class));
+ cards.add(new SetCardInfo("Arcbound Fiend", 96, Rarity.UNCOMMON, mage.cards.a.ArcboundFiend.class));
+ cards.add(new SetCardInfo("Arcbound Hybrid", 97, Rarity.COMMON, mage.cards.a.ArcboundHybrid.class));
+ cards.add(new SetCardInfo("Arcbound Lancer", 98, Rarity.UNCOMMON, mage.cards.a.ArcboundLancer.class));
+ cards.add(new SetCardInfo("Arcbound Overseer", 99, Rarity.RARE, mage.cards.a.ArcboundOverseer.class));
+ cards.add(new SetCardInfo("Arcbound Ravager", 100, Rarity.RARE, mage.cards.a.ArcboundRavager.class));
+ cards.add(new SetCardInfo("Arcbound Reclaimer", 101, Rarity.RARE, mage.cards.a.ArcboundReclaimer.class));
+ cards.add(new SetCardInfo("Arcbound Slith", 102, Rarity.UNCOMMON, mage.cards.a.ArcboundSlith.class));
+ cards.add(new SetCardInfo("Arcbound Stinger", 103, Rarity.COMMON, mage.cards.a.ArcboundStinger.class));
+ cards.add(new SetCardInfo("Arcbound Worker", 104, Rarity.COMMON, mage.cards.a.ArcboundWorker.class));
+ cards.add(new SetCardInfo("Auriok Glaivemaster", 1, Rarity.COMMON, mage.cards.a.AuriokGlaivemaster.class));
+ cards.add(new SetCardInfo("Auriok Siege Sled", 105, Rarity.UNCOMMON, mage.cards.a.AuriokSiegeSled.class));
+ 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("Carry Away", 19, Rarity.UNCOMMON, mage.cards.c.CarryAway.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));
+ cards.add(new SetCardInfo("Crazed Goblin", 56, Rarity.COMMON, mage.cards.c.CrazedGoblin.class));
+ cards.add(new SetCardInfo("Darksteel Brute", 108, Rarity.UNCOMMON, mage.cards.d.DarksteelBrute.class));
+ cards.add(new SetCardInfo("Darksteel Citadel", 164, Rarity.COMMON, mage.cards.d.DarksteelCitadel.class));
+ cards.add(new SetCardInfo("Darksteel Colossus", 109, Rarity.RARE, mage.cards.d.DarksteelColossus.class));
+ cards.add(new SetCardInfo("Darksteel Forge", 110, Rarity.RARE, mage.cards.d.DarksteelForge.class));
+ cards.add(new SetCardInfo("Darksteel Gargoyle", 111, Rarity.UNCOMMON, mage.cards.d.DarksteelGargoyle.class));
+ cards.add(new SetCardInfo("Darksteel Ingot", 112, Rarity.COMMON, mage.cards.d.DarksteelIngot.class));
+ cards.add(new SetCardInfo("Darksteel Pendant", 113, Rarity.COMMON, mage.cards.d.DarksteelPendant.class));
+ cards.add(new SetCardInfo("Darksteel Reactor", 114, Rarity.RARE, mage.cards.d.DarksteelReactor.class));
+ cards.add(new SetCardInfo("Death Cloud", 40, Rarity.RARE, mage.cards.d.DeathCloud.class));
cards.add(new SetCardInfo("Death-Mask Duplicant", 115, Rarity.UNCOMMON, mage.cards.d.DeathMaskDuplicant.class));
- cards.add(new SetCardInfo("Demon's Horn", 116, Rarity.UNCOMMON, mage.cards.d.DemonsHorn.class));
- cards.add(new SetCardInfo("Dismantle", 57, Rarity.UNCOMMON, mage.cards.d.Dismantle.class));
- cards.add(new SetCardInfo("Dragon's Claw", 117, Rarity.UNCOMMON, mage.cards.d.DragonsClaw.class));
- cards.add(new SetCardInfo("Drill-Skimmer", 118, Rarity.COMMON, mage.cards.d.DrillSkimmer.class));
- cards.add(new SetCardInfo("Drooling Ogre", 58, Rarity.COMMON, mage.cards.d.DroolingOgre.class));
- cards.add(new SetCardInfo("Dross Golem", 119, Rarity.COMMON, mage.cards.d.DrossGolem.class));
- cards.add(new SetCardInfo("Eater of Days", 120, Rarity.RARE, mage.cards.e.EaterOfDays.class));
- cards.add(new SetCardInfo("Echoing Calm", 2, Rarity.COMMON, mage.cards.e.EchoingCalm.class));
- cards.add(new SetCardInfo("Echoing Courage", 74, Rarity.COMMON, mage.cards.e.EchoingCourage.class));
- cards.add(new SetCardInfo("Echoing Decay", 41, Rarity.COMMON, mage.cards.e.EchoingDecay.class));
- cards.add(new SetCardInfo("Echoing Ruin", 59, Rarity.COMMON, mage.cards.e.EchoingRuin.class));
- cards.add(new SetCardInfo("Echoing Truth", 21, Rarity.COMMON, mage.cards.e.EchoingTruth.class));
- cards.add(new SetCardInfo("Emissary of Despair", 42, Rarity.UNCOMMON, mage.cards.e.EmissaryOfDespair.class));
- cards.add(new SetCardInfo("Emissary of Hope", 3, Rarity.UNCOMMON, mage.cards.e.EmissaryOfHope.class));
- cards.add(new SetCardInfo("Essence Drain", 43, Rarity.COMMON, mage.cards.e.EssenceDrain.class));
- cards.add(new SetCardInfo("Fangren Firstborn", 75, Rarity.RARE, mage.cards.f.FangrenFirstborn.class));
- cards.add(new SetCardInfo("Fireball", 60, Rarity.UNCOMMON, mage.cards.f.Fireball.class));
- cards.add(new SetCardInfo("Flamebreak", 61, Rarity.RARE, mage.cards.f.Flamebreak.class));
- cards.add(new SetCardInfo("Furnace Dragon", 62, Rarity.RARE, mage.cards.f.FurnaceDragon.class));
- cards.add(new SetCardInfo("Gemini Engine", 121, Rarity.RARE, mage.cards.g.GeminiEngine.class));
- cards.add(new SetCardInfo("Genesis Chamber", 122, Rarity.UNCOMMON, mage.cards.g.GenesisChamber.class));
- cards.add(new SetCardInfo("Geth's Grimoire", 123, Rarity.UNCOMMON, mage.cards.g.GethsGrimoire.class));
- cards.add(new SetCardInfo("Goblin Archaeologist", 63, Rarity.UNCOMMON, mage.cards.g.GoblinArchaeologist.class));
- cards.add(new SetCardInfo("Greater Harvester", 44, Rarity.RARE, mage.cards.g.GreaterHarvester.class));
- cards.add(new SetCardInfo("Grimclaw Bats", 45, Rarity.COMMON, mage.cards.g.GrimclawBats.class));
- cards.add(new SetCardInfo("Hallow", 4, Rarity.COMMON, mage.cards.h.Hallow.class));
- cards.add(new SetCardInfo("Heartseeker", 124, Rarity.RARE, mage.cards.h.Heartseeker.class));
- cards.add(new SetCardInfo("Hoverguard Observer", 22, Rarity.UNCOMMON, mage.cards.h.HoverguardObserver.class));
- cards.add(new SetCardInfo("Hunger of the Nim", 46, Rarity.COMMON, mage.cards.h.HungerOfTheNim.class));
- cards.add(new SetCardInfo("Infested Roothold", 76, Rarity.UNCOMMON, mage.cards.i.InfestedRoothold.class));
- cards.add(new SetCardInfo("Inflame", 64, Rarity.COMMON, mage.cards.i.Inflame.class));
- cards.add(new SetCardInfo("Juggernaut", 125, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
- cards.add(new SetCardInfo("Karstoderm", 77, Rarity.UNCOMMON, mage.cards.k.Karstoderm.class));
- cards.add(new SetCardInfo("Kraken's Eye", 126, Rarity.UNCOMMON, mage.cards.k.KrakensEye.class));
- cards.add(new SetCardInfo("Krark-Clan Stoker", 65, Rarity.COMMON, mage.cards.k.KrarkClanStoker.class));
- cards.add(new SetCardInfo("Last Word", 23, Rarity.RARE, mage.cards.l.LastWord.class));
- cards.add(new SetCardInfo("Leonin Battlemage", 5, Rarity.UNCOMMON, mage.cards.l.LeoninBattlemage.class));
- cards.add(new SetCardInfo("Leonin Bola", 127, Rarity.COMMON, mage.cards.l.LeoninBola.class));
- cards.add(new SetCardInfo("Leonin Shikari", 6, Rarity.RARE, mage.cards.l.LeoninShikari.class));
- cards.add(new SetCardInfo("Lich's Tomb", 128, Rarity.RARE, mage.cards.l.LichsTomb.class));
- cards.add(new SetCardInfo("Loxodon Mystic", 7, Rarity.COMMON, mage.cards.l.LoxodonMystic.class));
- cards.add(new SetCardInfo("Machinate", 24, Rarity.COMMON, mage.cards.m.Machinate.class));
- cards.add(new SetCardInfo("Magnetic Flux", 25, Rarity.COMMON, mage.cards.m.MagneticFlux.class));
- cards.add(new SetCardInfo("Memnarch", 129, Rarity.RARE, mage.cards.m.Memnarch.class));
- cards.add(new SetCardInfo("Mephitic Ooze", 47, Rarity.RARE, mage.cards.m.MephiticOoze.class));
- cards.add(new SetCardInfo("Metal Fatigue", 8, Rarity.COMMON, mage.cards.m.MetalFatigue.class));
- cards.add(new SetCardInfo("Mirrodin's Core", 165, Rarity.UNCOMMON, mage.cards.m.MirrodinsCore.class));
- cards.add(new SetCardInfo("Murderous Spoils", 48, Rarity.UNCOMMON, mage.cards.m.MurderousSpoils.class));
- cards.add(new SetCardInfo("Mycosynth Lattice", 130, Rarity.RARE, mage.cards.m.MycosynthLattice.class));
- cards.add(new SetCardInfo("Myr Landshaper", 131, Rarity.COMMON, mage.cards.m.MyrLandshaper.class));
- cards.add(new SetCardInfo("Myr Matrix", 132, Rarity.RARE, mage.cards.m.MyrMatrix.class));
- cards.add(new SetCardInfo("Myr Moonvessel", 133, Rarity.COMMON, mage.cards.m.MyrMoonvessel.class));
- cards.add(new SetCardInfo("Nemesis Mask", 134, Rarity.UNCOMMON, mage.cards.n.NemesisMask.class));
- cards.add(new SetCardInfo("Neurok Prodigy", 26, Rarity.COMMON, mage.cards.n.NeurokProdigy.class));
- cards.add(new SetCardInfo("Nim Abomination", 49, Rarity.UNCOMMON, mage.cards.n.NimAbomination.class));
- cards.add(new SetCardInfo("Nourish", 78, Rarity.COMMON, mage.cards.n.Nourish.class));
- cards.add(new SetCardInfo("Oxidda Golem", 135, Rarity.COMMON, mage.cards.o.OxiddaGolem.class));
- cards.add(new SetCardInfo("Oxidize", 79, Rarity.UNCOMMON, mage.cards.o.Oxidize.class));
- cards.add(new SetCardInfo("Panoptic Mirror", 136, Rarity.RARE, mage.cards.p.PanopticMirror.class));
- cards.add(new SetCardInfo("Pristine Angel", 9, Rarity.RARE, mage.cards.p.PristineAngel.class));
- cards.add(new SetCardInfo("Psychic Overload", 28, Rarity.UNCOMMON, mage.cards.p.PsychicOverload.class));
- cards.add(new SetCardInfo("Pteron Ghost", 10, Rarity.COMMON, mage.cards.p.PteronGhost.class));
- cards.add(new SetCardInfo("Pulse of the Dross", 50, Rarity.RARE, mage.cards.p.PulseOfTheDross.class));
- cards.add(new SetCardInfo("Pulse of the Fields", 11, Rarity.RARE, mage.cards.p.PulseOfTheFields.class));
- cards.add(new SetCardInfo("Pulse of the Forge", 66, Rarity.RARE, mage.cards.p.PulseOfTheForge.class));
- cards.add(new SetCardInfo("Pulse of the Grid", 29, Rarity.RARE, mage.cards.p.PulseOfTheGrid.class));
- cards.add(new SetCardInfo("Pulse of the Tangle", 80, Rarity.RARE, mage.cards.p.PulseOfTheTangle.class));
- cards.add(new SetCardInfo("Purge", 12, Rarity.UNCOMMON, mage.cards.p.Purge.class));
- cards.add(new SetCardInfo("Quicksilver Behemoth", 30, Rarity.COMMON, mage.cards.q.QuicksilverBehemoth.class));
- cards.add(new SetCardInfo("Razor Golem", 137, Rarity.COMMON, mage.cards.r.RazorGolem.class));
- cards.add(new SetCardInfo("Reap and Sow", 81, Rarity.COMMON, mage.cards.r.ReapAndSow.class));
- cards.add(new SetCardInfo("Rebuking Ceremony", 82, Rarity.RARE, mage.cards.r.RebukingCeremony.class));
- cards.add(new SetCardInfo("Reshape", 31, Rarity.RARE, mage.cards.r.Reshape.class));
- cards.add(new SetCardInfo("Retract", 32, Rarity.RARE, mage.cards.r.Retract.class));
- cards.add(new SetCardInfo("Ritual of Restoration", 13, Rarity.COMMON, mage.cards.r.RitualOfRestoration.class));
- cards.add(new SetCardInfo("Roaring Slagwurm", 83, Rarity.RARE, mage.cards.r.RoaringSlagwurm.class));
- cards.add(new SetCardInfo("Savage Beating", 67, Rarity.RARE, mage.cards.s.SavageBeating.class));
- cards.add(new SetCardInfo("Scavenging Scarab", 51, Rarity.COMMON, mage.cards.s.ScavengingScarab.class));
- cards.add(new SetCardInfo("Screams from Within", 52, Rarity.UNCOMMON, mage.cards.s.ScreamsFromWithin.class));
- cards.add(new SetCardInfo("Scrounge", 53, Rarity.UNCOMMON, mage.cards.s.Scrounge.class));
- cards.add(new SetCardInfo("Second Sight", 33, Rarity.UNCOMMON, mage.cards.s.SecondSight.class));
- cards.add(new SetCardInfo("Serum Powder", 138, Rarity.RARE, mage.cards.s.SerumPowder.class));
- cards.add(new SetCardInfo("Shield of Kaldra", 139, Rarity.RARE, mage.cards.s.ShieldOfKaldra.class));
- cards.add(new SetCardInfo("Shriveling Rot", 54, Rarity.RARE, mage.cards.s.ShrivelingRot.class));
- cards.add(new SetCardInfo("Shunt", 68, Rarity.RARE, mage.cards.s.Shunt.class));
- cards.add(new SetCardInfo("Skullclamp", 140, Rarity.UNCOMMON, mage.cards.s.Skullclamp.class));
- cards.add(new SetCardInfo("Slobad, Goblin Tinkerer", 69, Rarity.RARE, mage.cards.s.SlobadGoblinTinkerer.class));
- cards.add(new SetCardInfo("Soulscour", 14, Rarity.RARE, mage.cards.s.Soulscour.class));
- cards.add(new SetCardInfo("Spawning Pit", 141, Rarity.UNCOMMON, mage.cards.s.SpawningPit.class));
- cards.add(new SetCardInfo("Specter's Shroud", 142, Rarity.UNCOMMON, mage.cards.s.SpectersShroud.class));
- cards.add(new SetCardInfo("Spellbinder", 143, Rarity.RARE, mage.cards.s.Spellbinder.class));
- cards.add(new SetCardInfo("Spincrusher", 144, Rarity.UNCOMMON, mage.cards.s.Spincrusher.class));
- cards.add(new SetCardInfo("Spire Golem", 145, Rarity.COMMON, mage.cards.s.SpireGolem.class));
- cards.add(new SetCardInfo("Stand Together", 84, Rarity.UNCOMMON, mage.cards.s.StandTogether.class));
- cards.add(new SetCardInfo("Steelshaper Apprentice", 15, Rarity.RARE, mage.cards.s.SteelshaperApprentice.class));
- cards.add(new SetCardInfo("Stir the Pride", 16, Rarity.UNCOMMON, mage.cards.s.StirThePride.class));
- cards.add(new SetCardInfo("Sundering Titan", 146, Rarity.RARE, mage.cards.s.SunderingTitan.class));
- cards.add(new SetCardInfo("Surestrike Trident", 147, Rarity.UNCOMMON, mage.cards.s.SurestrikeTrident.class));
- cards.add(new SetCardInfo("Sword of Fire and Ice", 148, Rarity.RARE, mage.cards.s.SwordOfFireAndIce.class));
- cards.add(new SetCardInfo("Sword of Light and Shadow", 149, Rarity.RARE, mage.cards.s.SwordOfLightAndShadow.class));
- cards.add(new SetCardInfo("Synod Artificer", 34, Rarity.RARE, mage.cards.s.SynodArtificer.class));
- cards.add(new SetCardInfo("Talon of Pain", 150, Rarity.UNCOMMON, mage.cards.t.TalonOfPain.class));
- cards.add(new SetCardInfo("Tangle Golem", 151, Rarity.COMMON, mage.cards.t.TangleGolem.class));
- cards.add(new SetCardInfo("Tangle Spider", 85, Rarity.COMMON, mage.cards.t.TangleSpider.class));
- cards.add(new SetCardInfo("Tanglewalker", 86, Rarity.UNCOMMON, mage.cards.t.Tanglewalker.class));
- cards.add(new SetCardInfo("Tears of Rage", 70, Rarity.UNCOMMON, mage.cards.t.TearsOfRage.class));
- cards.add(new SetCardInfo("Tel-Jilad Outrider", 87, Rarity.COMMON, mage.cards.t.TelJiladOutrider.class));
- cards.add(new SetCardInfo("Tel-Jilad Wolf", 88, Rarity.COMMON, mage.cards.t.TelJiladWolf.class));
- cards.add(new SetCardInfo("Test of Faith", 17, Rarity.UNCOMMON, mage.cards.t.TestOfFaith.class));
- cards.add(new SetCardInfo("Thunderstaff", 153, Rarity.UNCOMMON, mage.cards.t.Thunderstaff.class));
- cards.add(new SetCardInfo("Trinisphere", 154, Rarity.RARE, mage.cards.t.Trinisphere.class));
- cards.add(new SetCardInfo("Turn the Tables", 18, Rarity.RARE, mage.cards.t.TurnTheTables.class));
- cards.add(new SetCardInfo("Unforge", 71, Rarity.COMMON, mage.cards.u.Unforge.class));
- cards.add(new SetCardInfo("Ur-Golem's Eye", 155, Rarity.COMMON, mage.cards.u.UrGolemsEye.class));
- cards.add(new SetCardInfo("Vedalken Engineer", 35, Rarity.COMMON, mage.cards.v.VedalkenEngineer.class));
- cards.add(new SetCardInfo("Vex", 36, Rarity.COMMON, mage.cards.v.Vex.class));
- cards.add(new SetCardInfo("Viridian Acolyte", 89, Rarity.COMMON, mage.cards.v.ViridianAcolyte.class));
- cards.add(new SetCardInfo("Viridian Zealot", 90, Rarity.RARE, mage.cards.v.ViridianZealot.class));
- cards.add(new SetCardInfo("Voltaic Construct", 156, Rarity.UNCOMMON, mage.cards.v.VoltaicConstruct.class));
- cards.add(new SetCardInfo("Vulshok Morningstar", 157, Rarity.COMMON, mage.cards.v.VulshokMorningstar.class));
- cards.add(new SetCardInfo("Vulshok War Boar", 72, Rarity.UNCOMMON, mage.cards.v.VulshokWarBoar.class));
- cards.add(new SetCardInfo("Wand of the Elements", 158, Rarity.RARE, mage.cards.w.WandOfTheElements.class));
- cards.add(new SetCardInfo("Well of Lost Dreams", 159, Rarity.RARE, mage.cards.w.WellOfLostDreams.class));
- cards.add(new SetCardInfo("Whispersilk Cloak", 160, Rarity.COMMON, mage.cards.w.WhispersilkCloak.class));
- cards.add(new SetCardInfo("Wirefly Hive", 161, Rarity.UNCOMMON, mage.cards.w.WireflyHive.class));
- cards.add(new SetCardInfo("Wurm's Tooth", 162, Rarity.UNCOMMON, mage.cards.w.WurmsTooth.class));
- }
-}
+ cards.add(new SetCardInfo("Demon's Horn", 116, Rarity.UNCOMMON, mage.cards.d.DemonsHorn.class));
+ cards.add(new SetCardInfo("Dismantle", 57, Rarity.UNCOMMON, mage.cards.d.Dismantle.class));
+ cards.add(new SetCardInfo("Dragon's Claw", 117, Rarity.UNCOMMON, mage.cards.d.DragonsClaw.class));
+ cards.add(new SetCardInfo("Drill-Skimmer", 118, Rarity.COMMON, mage.cards.d.DrillSkimmer.class));
+ cards.add(new SetCardInfo("Drooling Ogre", 58, Rarity.COMMON, mage.cards.d.DroolingOgre.class));
+ cards.add(new SetCardInfo("Dross Golem", 119, Rarity.COMMON, mage.cards.d.DrossGolem.class));
+ cards.add(new SetCardInfo("Eater of Days", 120, Rarity.RARE, mage.cards.e.EaterOfDays.class));
+ cards.add(new SetCardInfo("Echoing Calm", 2, Rarity.COMMON, mage.cards.e.EchoingCalm.class));
+ cards.add(new SetCardInfo("Echoing Courage", 74, Rarity.COMMON, mage.cards.e.EchoingCourage.class));
+ cards.add(new SetCardInfo("Echoing Decay", 41, Rarity.COMMON, mage.cards.e.EchoingDecay.class));
+ cards.add(new SetCardInfo("Echoing Ruin", 59, Rarity.COMMON, mage.cards.e.EchoingRuin.class));
+ cards.add(new SetCardInfo("Echoing Truth", 21, Rarity.COMMON, mage.cards.e.EchoingTruth.class));
+ cards.add(new SetCardInfo("Emissary of Despair", 42, Rarity.UNCOMMON, mage.cards.e.EmissaryOfDespair.class));
+ cards.add(new SetCardInfo("Emissary of Hope", 3, Rarity.UNCOMMON, mage.cards.e.EmissaryOfHope.class));
+ cards.add(new SetCardInfo("Essence Drain", 43, Rarity.COMMON, mage.cards.e.EssenceDrain.class));
+ cards.add(new SetCardInfo("Fangren Firstborn", 75, Rarity.RARE, mage.cards.f.FangrenFirstborn.class));
+ cards.add(new SetCardInfo("Fireball", 60, Rarity.UNCOMMON, mage.cards.f.Fireball.class));
+ cards.add(new SetCardInfo("Flamebreak", 61, Rarity.RARE, mage.cards.f.Flamebreak.class));
+ cards.add(new SetCardInfo("Furnace Dragon", 62, Rarity.RARE, mage.cards.f.FurnaceDragon.class));
+ cards.add(new SetCardInfo("Gemini Engine", 121, Rarity.RARE, mage.cards.g.GeminiEngine.class));
+ cards.add(new SetCardInfo("Genesis Chamber", 122, Rarity.UNCOMMON, mage.cards.g.GenesisChamber.class));
+ cards.add(new SetCardInfo("Geth's Grimoire", 123, Rarity.UNCOMMON, mage.cards.g.GethsGrimoire.class));
+ cards.add(new SetCardInfo("Goblin Archaeologist", 63, Rarity.UNCOMMON, mage.cards.g.GoblinArchaeologist.class));
+ cards.add(new SetCardInfo("Greater Harvester", 44, Rarity.RARE, mage.cards.g.GreaterHarvester.class));
+ cards.add(new SetCardInfo("Grimclaw Bats", 45, Rarity.COMMON, mage.cards.g.GrimclawBats.class));
+ cards.add(new SetCardInfo("Hallow", 4, Rarity.COMMON, mage.cards.h.Hallow.class));
+ cards.add(new SetCardInfo("Heartseeker", 124, Rarity.RARE, mage.cards.h.Heartseeker.class));
+ cards.add(new SetCardInfo("Hoverguard Observer", 22, Rarity.UNCOMMON, mage.cards.h.HoverguardObserver.class));
+ cards.add(new SetCardInfo("Hunger of the Nim", 46, Rarity.COMMON, mage.cards.h.HungerOfTheNim.class));
+ cards.add(new SetCardInfo("Infested Roothold", 76, Rarity.UNCOMMON, mage.cards.i.InfestedRoothold.class));
+ cards.add(new SetCardInfo("Inflame", 64, Rarity.COMMON, mage.cards.i.Inflame.class));
+ cards.add(new SetCardInfo("Juggernaut", 125, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
+ cards.add(new SetCardInfo("Karstoderm", 77, Rarity.UNCOMMON, mage.cards.k.Karstoderm.class));
+ cards.add(new SetCardInfo("Kraken's Eye", 126, Rarity.UNCOMMON, mage.cards.k.KrakensEye.class));
+ cards.add(new SetCardInfo("Krark-Clan Stoker", 65, Rarity.COMMON, mage.cards.k.KrarkClanStoker.class));
+ cards.add(new SetCardInfo("Last Word", 23, Rarity.RARE, mage.cards.l.LastWord.class));
+ cards.add(new SetCardInfo("Leonin Battlemage", 5, Rarity.UNCOMMON, mage.cards.l.LeoninBattlemage.class));
+ cards.add(new SetCardInfo("Leonin Bola", 127, Rarity.COMMON, mage.cards.l.LeoninBola.class));
+ cards.add(new SetCardInfo("Leonin Shikari", 6, Rarity.RARE, mage.cards.l.LeoninShikari.class));
+ cards.add(new SetCardInfo("Lich's Tomb", 128, Rarity.RARE, mage.cards.l.LichsTomb.class));
+ cards.add(new SetCardInfo("Loxodon Mystic", 7, Rarity.COMMON, mage.cards.l.LoxodonMystic.class));
+ cards.add(new SetCardInfo("Machinate", 24, Rarity.COMMON, mage.cards.m.Machinate.class));
+ cards.add(new SetCardInfo("Magnetic Flux", 25, Rarity.COMMON, mage.cards.m.MagneticFlux.class));
+ cards.add(new SetCardInfo("Memnarch", 129, Rarity.RARE, mage.cards.m.Memnarch.class));
+ cards.add(new SetCardInfo("Mephitic Ooze", 47, Rarity.RARE, mage.cards.m.MephiticOoze.class));
+ cards.add(new SetCardInfo("Metal Fatigue", 8, Rarity.COMMON, mage.cards.m.MetalFatigue.class));
+ cards.add(new SetCardInfo("Mirrodin's Core", 165, Rarity.UNCOMMON, mage.cards.m.MirrodinsCore.class));
+ cards.add(new SetCardInfo("Murderous Spoils", 48, Rarity.UNCOMMON, mage.cards.m.MurderousSpoils.class));
+ cards.add(new SetCardInfo("Mycosynth Lattice", 130, Rarity.RARE, mage.cards.m.MycosynthLattice.class));
+ cards.add(new SetCardInfo("Myr Landshaper", 131, Rarity.COMMON, mage.cards.m.MyrLandshaper.class));
+ cards.add(new SetCardInfo("Myr Matrix", 132, Rarity.RARE, mage.cards.m.MyrMatrix.class));
+ cards.add(new SetCardInfo("Myr Moonvessel", 133, Rarity.COMMON, mage.cards.m.MyrMoonvessel.class));
+ cards.add(new SetCardInfo("Nemesis Mask", 134, Rarity.UNCOMMON, mage.cards.n.NemesisMask.class));
+ cards.add(new SetCardInfo("Neurok Prodigy", 26, Rarity.COMMON, mage.cards.n.NeurokProdigy.class));
+ cards.add(new SetCardInfo("Nim Abomination", 49, Rarity.UNCOMMON, mage.cards.n.NimAbomination.class));
+ cards.add(new SetCardInfo("Nourish", 78, Rarity.COMMON, mage.cards.n.Nourish.class));
+ cards.add(new SetCardInfo("Oxidda Golem", 135, Rarity.COMMON, mage.cards.o.OxiddaGolem.class));
+ cards.add(new SetCardInfo("Oxidize", 79, Rarity.UNCOMMON, mage.cards.o.Oxidize.class));
+ cards.add(new SetCardInfo("Panoptic Mirror", 136, Rarity.RARE, mage.cards.p.PanopticMirror.class));
+ cards.add(new SetCardInfo("Pristine Angel", 9, Rarity.RARE, mage.cards.p.PristineAngel.class));
+ cards.add(new SetCardInfo("Psychic Overload", 28, Rarity.UNCOMMON, mage.cards.p.PsychicOverload.class));
+ cards.add(new SetCardInfo("Pteron Ghost", 10, Rarity.COMMON, mage.cards.p.PteronGhost.class));
+ cards.add(new SetCardInfo("Pulse of the Dross", 50, Rarity.RARE, mage.cards.p.PulseOfTheDross.class));
+ cards.add(new SetCardInfo("Pulse of the Fields", 11, Rarity.RARE, mage.cards.p.PulseOfTheFields.class));
+ cards.add(new SetCardInfo("Pulse of the Forge", 66, Rarity.RARE, mage.cards.p.PulseOfTheForge.class));
+ cards.add(new SetCardInfo("Pulse of the Grid", 29, Rarity.RARE, mage.cards.p.PulseOfTheGrid.class));
+ cards.add(new SetCardInfo("Pulse of the Tangle", 80, Rarity.RARE, mage.cards.p.PulseOfTheTangle.class));
+ cards.add(new SetCardInfo("Purge", 12, Rarity.UNCOMMON, mage.cards.p.Purge.class));
+ cards.add(new SetCardInfo("Quicksilver Behemoth", 30, Rarity.COMMON, mage.cards.q.QuicksilverBehemoth.class));
+ cards.add(new SetCardInfo("Razor Golem", 137, Rarity.COMMON, mage.cards.r.RazorGolem.class));
+ cards.add(new SetCardInfo("Reap and Sow", 81, Rarity.COMMON, mage.cards.r.ReapAndSow.class));
+ cards.add(new SetCardInfo("Rebuking Ceremony", 82, Rarity.RARE, mage.cards.r.RebukingCeremony.class));
+ cards.add(new SetCardInfo("Reshape", 31, Rarity.RARE, mage.cards.r.Reshape.class));
+ cards.add(new SetCardInfo("Retract", 32, Rarity.RARE, mage.cards.r.Retract.class));
+ cards.add(new SetCardInfo("Ritual of Restoration", 13, Rarity.COMMON, mage.cards.r.RitualOfRestoration.class));
+ cards.add(new SetCardInfo("Roaring Slagwurm", 83, Rarity.RARE, mage.cards.r.RoaringSlagwurm.class));
+ cards.add(new SetCardInfo("Savage Beating", 67, Rarity.RARE, mage.cards.s.SavageBeating.class));
+ cards.add(new SetCardInfo("Scavenging Scarab", 51, Rarity.COMMON, mage.cards.s.ScavengingScarab.class));
+ cards.add(new SetCardInfo("Screams from Within", 52, Rarity.UNCOMMON, mage.cards.s.ScreamsFromWithin.class));
+ cards.add(new SetCardInfo("Scrounge", 53, Rarity.UNCOMMON, mage.cards.s.Scrounge.class));
+ cards.add(new SetCardInfo("Second Sight", 33, Rarity.UNCOMMON, mage.cards.s.SecondSight.class));
+ cards.add(new SetCardInfo("Serum Powder", 138, Rarity.RARE, mage.cards.s.SerumPowder.class));
+ cards.add(new SetCardInfo("Shield of Kaldra", 139, Rarity.RARE, mage.cards.s.ShieldOfKaldra.class));
+ cards.add(new SetCardInfo("Shriveling Rot", 54, Rarity.RARE, mage.cards.s.ShrivelingRot.class));
+ cards.add(new SetCardInfo("Shunt", 68, Rarity.RARE, mage.cards.s.Shunt.class));
+ cards.add(new SetCardInfo("Skullclamp", 140, Rarity.UNCOMMON, mage.cards.s.Skullclamp.class));
+ cards.add(new SetCardInfo("Slobad, Goblin Tinkerer", 69, Rarity.RARE, mage.cards.s.SlobadGoblinTinkerer.class));
+ cards.add(new SetCardInfo("Soulscour", 14, Rarity.RARE, mage.cards.s.Soulscour.class));
+ cards.add(new SetCardInfo("Spawning Pit", 141, Rarity.UNCOMMON, mage.cards.s.SpawningPit.class));
+ cards.add(new SetCardInfo("Specter's Shroud", 142, Rarity.UNCOMMON, mage.cards.s.SpectersShroud.class));
+ cards.add(new SetCardInfo("Spellbinder", 143, Rarity.RARE, mage.cards.s.Spellbinder.class));
+ cards.add(new SetCardInfo("Spincrusher", 144, Rarity.UNCOMMON, mage.cards.s.Spincrusher.class));
+ cards.add(new SetCardInfo("Spire Golem", 145, Rarity.COMMON, mage.cards.s.SpireGolem.class));
+ cards.add(new SetCardInfo("Stand Together", 84, Rarity.UNCOMMON, mage.cards.s.StandTogether.class));
+ cards.add(new SetCardInfo("Steelshaper Apprentice", 15, Rarity.RARE, mage.cards.s.SteelshaperApprentice.class));
+ cards.add(new SetCardInfo("Stir the Pride", 16, Rarity.UNCOMMON, mage.cards.s.StirThePride.class));
+ cards.add(new SetCardInfo("Sundering Titan", 146, Rarity.RARE, mage.cards.s.SunderingTitan.class));
+ cards.add(new SetCardInfo("Surestrike Trident", 147, Rarity.UNCOMMON, mage.cards.s.SurestrikeTrident.class));
+ cards.add(new SetCardInfo("Sword of Fire and Ice", 148, Rarity.RARE, mage.cards.s.SwordOfFireAndIce.class));
+ cards.add(new SetCardInfo("Sword of Light and Shadow", 149, Rarity.RARE, mage.cards.s.SwordOfLightAndShadow.class));
+ cards.add(new SetCardInfo("Synod Artificer", 34, Rarity.RARE, mage.cards.s.SynodArtificer.class));
+ cards.add(new SetCardInfo("Talon of Pain", 150, Rarity.UNCOMMON, mage.cards.t.TalonOfPain.class));
+ cards.add(new SetCardInfo("Tangle Golem", 151, Rarity.COMMON, mage.cards.t.TangleGolem.class));
+ cards.add(new SetCardInfo("Tangle Spider", 85, Rarity.COMMON, mage.cards.t.TangleSpider.class));
+ cards.add(new SetCardInfo("Tanglewalker", 86, Rarity.UNCOMMON, mage.cards.t.Tanglewalker.class));
+ cards.add(new SetCardInfo("Tears of Rage", 70, Rarity.UNCOMMON, mage.cards.t.TearsOfRage.class));
+ cards.add(new SetCardInfo("Tel-Jilad Outrider", 87, Rarity.COMMON, mage.cards.t.TelJiladOutrider.class));
+ cards.add(new SetCardInfo("Tel-Jilad Wolf", 88, Rarity.COMMON, mage.cards.t.TelJiladWolf.class));
+ cards.add(new SetCardInfo("Test of Faith", 17, Rarity.UNCOMMON, mage.cards.t.TestOfFaith.class));
+ cards.add(new SetCardInfo("Thunderstaff", 153, Rarity.UNCOMMON, mage.cards.t.Thunderstaff.class));
+ cards.add(new SetCardInfo("Trinisphere", 154, Rarity.RARE, mage.cards.t.Trinisphere.class));
+ cards.add(new SetCardInfo("Turn the Tables", 18, Rarity.RARE, mage.cards.t.TurnTheTables.class));
+ cards.add(new SetCardInfo("Unforge", 71, Rarity.COMMON, mage.cards.u.Unforge.class));
+ cards.add(new SetCardInfo("Ur-Golem's Eye", 155, Rarity.COMMON, mage.cards.u.UrGolemsEye.class));
+ cards.add(new SetCardInfo("Vedalken Engineer", 35, Rarity.COMMON, mage.cards.v.VedalkenEngineer.class));
+ cards.add(new SetCardInfo("Vex", 36, Rarity.COMMON, mage.cards.v.Vex.class));
+ cards.add(new SetCardInfo("Viridian Acolyte", 89, Rarity.COMMON, mage.cards.v.ViridianAcolyte.class));
+ cards.add(new SetCardInfo("Viridian Zealot", 90, Rarity.RARE, mage.cards.v.ViridianZealot.class));
+ cards.add(new SetCardInfo("Voltaic Construct", 156, Rarity.UNCOMMON, mage.cards.v.VoltaicConstruct.class));
+ cards.add(new SetCardInfo("Vulshok Morningstar", 157, Rarity.COMMON, mage.cards.v.VulshokMorningstar.class));
+ cards.add(new SetCardInfo("Vulshok War Boar", 72, Rarity.UNCOMMON, mage.cards.v.VulshokWarBoar.class));
+ cards.add(new SetCardInfo("Wand of the Elements", 158, Rarity.RARE, mage.cards.w.WandOfTheElements.class));
+ cards.add(new SetCardInfo("Well of Lost Dreams", 159, Rarity.RARE, mage.cards.w.WellOfLostDreams.class));
+ cards.add(new SetCardInfo("Whispersilk Cloak", 160, Rarity.COMMON, mage.cards.w.WhispersilkCloak.class));
+ cards.add(new SetCardInfo("Wirefly Hive", 161, Rarity.UNCOMMON, mage.cards.w.WireflyHive.class));
+ cards.add(new SetCardInfo("Wurm's Tooth", 162, Rarity.UNCOMMON, mage.cards.w.WurmsTooth.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Dissension.java b/Mage.Sets/src/mage/sets/Dissension.java
index 3b8878f876d..03e77da446e 100644
--- a/Mage.Sets/src/mage/sets/Dissension.java
+++ b/Mage.Sets/src/mage/sets/Dissension.java
@@ -1,223 +1,225 @@
-/*
-* 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.Rarity;
-import mage.constants.SetType;
-
-/**
- * Created by IntelliJ IDEA. User: Loki Date: 20.12.10 Time: 21:40
- */
-public class Dissension extends ExpansionSet {
-
- private static final Dissension instance = new Dissension();
-
- public static Dissension getInstance() {
- return instance;
- }
-
- private Dissension() {
- super("Dissension", "DIS", ExpansionSet.buildDate(2006, 4, 5), 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("Aethermage's Touch", 101, Rarity.RARE, mage.cards.a.AethermagesTouch.class));
- cards.add(new SetCardInfo("Anthem of Rakdos", 102, Rarity.RARE, mage.cards.a.AnthemOfRakdos.class));
- cards.add(new SetCardInfo("Aquastrand Spider", 80, Rarity.COMMON, mage.cards.a.AquastrandSpider.class));
- cards.add(new SetCardInfo("Assault Zeppelid", 103, Rarity.COMMON, mage.cards.a.AssaultZeppelid.class));
- cards.add(new SetCardInfo("Aurora Eidolon", 1, Rarity.COMMON, mage.cards.a.AuroraEidolon.class));
- cards.add(new SetCardInfo("Avatar of Discord", 140, Rarity.RARE, mage.cards.a.AvatarOfDiscord.class));
- cards.add(new SetCardInfo("Azorius Aethermage", 104, Rarity.UNCOMMON, mage.cards.a.AzoriusAEthermage.class));
- cards.add(new SetCardInfo("Azorius Chancery", 170, Rarity.COMMON, mage.cards.a.AzoriusChancery.class));
- cards.add(new SetCardInfo("Azorius First-Wing", 105, Rarity.COMMON, mage.cards.a.AzoriusFirstWing.class));
- cards.add(new SetCardInfo("Azorius Guildmage", 141, Rarity.UNCOMMON, mage.cards.a.AzoriusGuildmage.class));
- cards.add(new SetCardInfo("Azorius Herald", 2, Rarity.UNCOMMON, mage.cards.a.AzoriusHerald.class));
- cards.add(new SetCardInfo("Azorius Signet", 159, Rarity.COMMON, mage.cards.a.AzoriusSignet.class));
- cards.add(new SetCardInfo("Beacon Hawk", 3, Rarity.COMMON, mage.cards.b.BeaconHawk.class));
- cards.add(new SetCardInfo("Biomantic Mastery", 142, Rarity.RARE, mage.cards.b.BiomanticMastery.class));
- cards.add(new SetCardInfo("Blessing of the Nephilim", 4, Rarity.UNCOMMON, mage.cards.b.BlessingOfTheNephilim.class));
- cards.add(new SetCardInfo("Blood Crypt", 171, Rarity.RARE, mage.cards.b.BloodCrypt.class));
- cards.add(new SetCardInfo("Bond of Agony", 38, Rarity.UNCOMMON, mage.cards.b.BondOfAgony.class));
- cards.add(new SetCardInfo("Bound // Determined", 149, Rarity.RARE, mage.cards.b.BoundDetermined.class));
- cards.add(new SetCardInfo("Brace for Impact", 5, Rarity.UNCOMMON, mage.cards.b.BraceForImpact.class));
- cards.add(new SetCardInfo("Brain Pry", 39, Rarity.UNCOMMON, mage.cards.b.BrainPry.class));
- cards.add(new SetCardInfo("Breeding Pool", 172, Rarity.RARE, mage.cards.b.BreedingPool.class));
- cards.add(new SetCardInfo("Bronze Bombshell", 160, Rarity.RARE, mage.cards.b.BronzeBombshell.class));
- cards.add(new SetCardInfo("Cackling Flames", 59, Rarity.COMMON, mage.cards.c.CacklingFlames.class));
- cards.add(new SetCardInfo("Carom", 6, Rarity.COMMON, mage.cards.c.Carom.class));
- cards.add(new SetCardInfo("Celestial Ancient", 7, Rarity.RARE, mage.cards.c.CelestialAncient.class));
- cards.add(new SetCardInfo("Coiling Oracle", 107, Rarity.COMMON, mage.cards.c.CoilingOracle.class));
- cards.add(new SetCardInfo("Condemn", 8, Rarity.UNCOMMON, mage.cards.c.Condemn.class));
- cards.add(new SetCardInfo("Court Hussar", 22, Rarity.UNCOMMON, mage.cards.c.CourtHussar.class));
- cards.add(new SetCardInfo("Crime // Punishment", 150, Rarity.RARE, mage.cards.c.CrimePunishment.class));
- cards.add(new SetCardInfo("Crypt Champion", 40, Rarity.UNCOMMON, mage.cards.c.CryptChampion.class));
- cards.add(new SetCardInfo("Cytoplast Manipulator", 23, Rarity.RARE, mage.cards.c.CytoplastManipulator.class));
- cards.add(new SetCardInfo("Cytoplast Root-Kin", 81, Rarity.RARE, mage.cards.c.CytoplastRootKin.class));
- cards.add(new SetCardInfo("Cytoshape", 108, Rarity.RARE, mage.cards.c.Cytoshape.class));
- cards.add(new SetCardInfo("Cytospawn Shambler", 82, Rarity.COMMON, mage.cards.c.CytospawnShambler.class));
- cards.add(new SetCardInfo("Delirium Skeins", 41, Rarity.COMMON, mage.cards.d.DeliriumSkeins.class));
- cards.add(new SetCardInfo("Demonfire", 60, Rarity.RARE, mage.cards.d.Demonfire.class));
- cards.add(new SetCardInfo("Demon's Jester", 42, Rarity.COMMON, mage.cards.d.DemonsJester.class));
- cards.add(new SetCardInfo("Dovescape", 143, Rarity.RARE, mage.cards.d.Dovescape.class));
- cards.add(new SetCardInfo("Dread Slag", 109, Rarity.RARE, mage.cards.d.DreadSlag.class));
- cards.add(new SetCardInfo("Drekavac", 43, Rarity.UNCOMMON, mage.cards.d.Drekavac.class));
- cards.add(new SetCardInfo("Elemental Resonance", 83, Rarity.RARE, mage.cards.e.ElementalResonance.class));
- cards.add(new SetCardInfo("Enemy of the Guildpact", 44, Rarity.COMMON, mage.cards.e.EnemyOfTheGuildpact.class));
- cards.add(new SetCardInfo("Enigma Eidolon", 24, Rarity.COMMON, mage.cards.e.EnigmaEidolon.class));
- cards.add(new SetCardInfo("Entropic Eidolon", 45, Rarity.COMMON, mage.cards.e.EntropicEidolon.class));
- cards.add(new SetCardInfo("Evolution Vat", 161, Rarity.RARE, mage.cards.e.EvolutionVat.class));
- cards.add(new SetCardInfo("Experiment Kraj", 110, Rarity.RARE, mage.cards.e.ExperimentKraj.class));
- cards.add(new SetCardInfo("Flame-Kin War Scout", 61, Rarity.UNCOMMON, mage.cards.f.FlameKinWarScout.class));
- cards.add(new SetCardInfo("Flaring Flame-Kin", 62, Rarity.UNCOMMON, mage.cards.f.FlaringFlameKin.class));
- cards.add(new SetCardInfo("Freewind Equenaut", 9, Rarity.COMMON, mage.cards.f.FreewindEquenaut.class));
- cards.add(new SetCardInfo("Ghost Quarter", 173, Rarity.UNCOMMON, mage.cards.g.GhostQuarter.class));
- cards.add(new SetCardInfo("Gnat Alley Creeper", 63, Rarity.UNCOMMON, mage.cards.g.GnatAlleyCreeper.class));
- cards.add(new SetCardInfo("Gobhobbler Rats", 111, Rarity.COMMON, mage.cards.g.GobhobblerRats.class));
- cards.add(new SetCardInfo("Govern the Guildless", 25, Rarity.RARE, mage.cards.g.GovernTheGuildless.class));
- cards.add(new SetCardInfo("Grand Arbiter Augustin IV", 112, Rarity.RARE, mage.cards.g.GrandArbiterAugustinIV.class));
- cards.add(new SetCardInfo("Guardian of the Guildpact", 10, Rarity.COMMON, mage.cards.g.GuardianOfTheGuildpact.class));
- cards.add(new SetCardInfo("Haazda Exonerator", 11, Rarity.COMMON, mage.cards.h.HaazdaExonerator.class));
- cards.add(new SetCardInfo("Haazda Shield Mate", 12, Rarity.RARE, mage.cards.h.HaazdaShieldMate.class));
- cards.add(new SetCardInfo("Hallowed Fountain", 174, Rarity.RARE, mage.cards.h.HallowedFountain.class));
- cards.add(new SetCardInfo("Helium Squirter", 26, Rarity.COMMON, mage.cards.h.HeliumSquirter.class));
- cards.add(new SetCardInfo("Hellhole Rats", 113, Rarity.UNCOMMON, mage.cards.h.HellholeRats.class));
- cards.add(new SetCardInfo("Hide // Seek", 151, Rarity.UNCOMMON, mage.cards.h.HideSeek.class));
- cards.add(new SetCardInfo("Hit // Run", 152, Rarity.UNCOMMON, mage.cards.h.HitRun.class));
- cards.add(new SetCardInfo("Ignorant Bliss", 64, Rarity.UNCOMMON, mage.cards.i.IgnorantBliss.class));
- cards.add(new SetCardInfo("Indrik Stomphowler", 86, Rarity.UNCOMMON, mage.cards.i.IndrikStomphowler.class));
- cards.add(new SetCardInfo("Infernal Tutor", 46, Rarity.RARE, mage.cards.i.InfernalTutor.class));
- cards.add(new SetCardInfo("Isperia the Inscrutable", 114, Rarity.RARE, mage.cards.i.IsperiaTheInscrutable.class));
- cards.add(new SetCardInfo("Jagged Poppet", 115, Rarity.UNCOMMON, mage.cards.j.JaggedPoppet.class));
- cards.add(new SetCardInfo("Kill-Suit Cultist", 65, Rarity.COMMON, mage.cards.k.KillSuitCultist.class));
- cards.add(new SetCardInfo("Kindle the Carnage", 66, Rarity.UNCOMMON, mage.cards.k.KindleTheCarnage.class));
- cards.add(new SetCardInfo("Leafdrake Roost", 116, Rarity.UNCOMMON, mage.cards.l.LeafdrakeRoost.class));
- cards.add(new SetCardInfo("Loaming Shaman", 87, Rarity.RARE, mage.cards.l.LoamingShaman.class));
- cards.add(new SetCardInfo("Lyzolda, the Blood Witch", 117, Rarity.RARE, mage.cards.l.LyzoldaTheBloodWitch.class));
- cards.add(new SetCardInfo("Macabre Waltz", 47, Rarity.COMMON, mage.cards.m.MacabreWaltz.class));
- cards.add(new SetCardInfo("Magewright's Stone", 162, Rarity.UNCOMMON, mage.cards.m.MagewrightsStone.class));
- cards.add(new SetCardInfo("Might of the Nephilim", 88, Rarity.UNCOMMON, mage.cards.m.MightOfTheNephilim.class));
- cards.add(new SetCardInfo("Minister of Impediments", 144, Rarity.COMMON, mage.cards.m.MinisterOfImpediments.class));
- cards.add(new SetCardInfo("Mistral Charger", 13, Rarity.UNCOMMON, mage.cards.m.MistralCharger.class));
- cards.add(new SetCardInfo("Momir Vig, Simic Visionary", 118, Rarity.RARE, mage.cards.m.MomirVigSimicVisionary.class));
- cards.add(new SetCardInfo("Novijen, Heart of Progress", 175, Rarity.UNCOMMON, mage.cards.n.NovijenHeartOfProgress.class));
- cards.add(new SetCardInfo("Novijen Sages", 27, Rarity.RARE, mage.cards.n.NovijenSages.class));
- cards.add(new SetCardInfo("Ocular Halo", 28, Rarity.COMMON, mage.cards.o.OcularHalo.class));
- cards.add(new SetCardInfo("Odds // Ends", 153, Rarity.RARE, mage.cards.o.OddsEnds.class));
- cards.add(new SetCardInfo("Ogre Gatecrasher", 67, Rarity.COMMON, mage.cards.o.OgreGatecrasher.class));
- cards.add(new SetCardInfo("Omnibian", 119, Rarity.RARE, mage.cards.o.Omnibian.class));
- cards.add(new SetCardInfo("Overrule", 120, Rarity.COMMON, mage.cards.o.Overrule.class));
- cards.add(new SetCardInfo("Pain Magnification", 121, Rarity.UNCOMMON, mage.cards.p.PainMagnification.class));
- cards.add(new SetCardInfo("Paladin of Prahv", 14, Rarity.UNCOMMON, mage.cards.p.PaladinOfPrahv.class));
- cards.add(new SetCardInfo("Palliation Accord", 122, Rarity.UNCOMMON, mage.cards.p.PalliationAccord.class));
- cards.add(new SetCardInfo("Patagia Viper", 89, Rarity.UNCOMMON, mage.cards.p.PatagiaViper.class));
- cards.add(new SetCardInfo("Pillar of the Paruns", 176, Rarity.RARE, mage.cards.p.PillarOfTheParuns.class));
- cards.add(new SetCardInfo("Plaxcaster Frogling", 123, Rarity.UNCOMMON, mage.cards.p.PlaxcasterFrogling.class));
- cards.add(new SetCardInfo("Plaxmanta", 29, Rarity.UNCOMMON, mage.cards.p.Plaxmanta.class));
- cards.add(new SetCardInfo("Plumes of Peace", 124, Rarity.COMMON, mage.cards.p.PlumesOfPeace.class));
- cards.add(new SetCardInfo("Prahv, Spires of Order", 177, Rarity.UNCOMMON, mage.cards.p.PrahvSpiresOfOrder.class));
- cards.add(new SetCardInfo("Pride of the Clouds", 125, Rarity.RARE, mage.cards.p.PrideOfTheClouds.class));
- cards.add(new SetCardInfo("Proclamation of Rebirth", 15, Rarity.RARE, mage.cards.p.ProclamationOfRebirth.class));
- cards.add(new SetCardInfo("Proper Burial", 16, Rarity.RARE, mage.cards.p.ProperBurial.class));
- cards.add(new SetCardInfo("Protean Hulk", 90, Rarity.RARE, mage.cards.p.ProteanHulk.class));
- cards.add(new SetCardInfo("Psychic Possession", 30, Rarity.RARE, mage.cards.p.PsychicPossession.class));
- cards.add(new SetCardInfo("Psychotic Fury", 68, Rarity.COMMON, mage.cards.p.PsychoticFury.class));
- cards.add(new SetCardInfo("Pure // Simple", 154, Rarity.UNCOMMON, mage.cards.p.PureSimple.class));
- cards.add(new SetCardInfo("Ragamuffyn", 51, Rarity.UNCOMMON, mage.cards.r.Ragamuffyn.class));
- cards.add(new SetCardInfo("Rain of Gore", 126, Rarity.RARE, mage.cards.r.RainOfGore.class));
- cards.add(new SetCardInfo("Rakdos Carnarium", 178, Rarity.COMMON, mage.cards.r.RakdosCarnarium.class));
- cards.add(new SetCardInfo("Rakdos Guildmage", 145, Rarity.UNCOMMON, mage.cards.r.RakdosGuildmage.class));
- cards.add(new SetCardInfo("Rakdos Ickspitter", 128, Rarity.COMMON, mage.cards.r.RakdosIckspitter.class));
- cards.add(new SetCardInfo("Rakdos Pit Dragon", 69, Rarity.RARE, mage.cards.r.RakdosPitDragon.class));
- cards.add(new SetCardInfo("Rakdos Signet", 165, Rarity.COMMON, mage.cards.r.RakdosSignet.class));
- cards.add(new SetCardInfo("Rakdos the Defiler", 129, Rarity.RARE, mage.cards.r.RakdosTheDefiler.class));
- cards.add(new SetCardInfo("Ratcatcher", 52, Rarity.RARE, mage.cards.r.Ratcatcher.class));
- cards.add(new SetCardInfo("Research // Development", 155, Rarity.RARE, mage.cards.r.ResearchDevelopment.class));
- cards.add(new SetCardInfo("Riot Spikes", 146, Rarity.COMMON, mage.cards.r.RiotSpikes.class));
- cards.add(new SetCardInfo("Rise // Fall", 156, Rarity.UNCOMMON, mage.cards.r.RiseFall.class));
- cards.add(new SetCardInfo("Rix Maadi, Dungeon Palace", 179, Rarity.UNCOMMON, mage.cards.r.RixMaadiDungeonPalace.class));
- cards.add(new SetCardInfo("Sandstorm Eidolon", 70, Rarity.COMMON, mage.cards.s.SandstormEidolon.class));
- cards.add(new SetCardInfo("Seal of Doom", 53, Rarity.COMMON, mage.cards.s.SealOfDoom.class));
- cards.add(new SetCardInfo("Seal of Fire", 71, Rarity.COMMON, mage.cards.s.SealOfFire.class));
- cards.add(new SetCardInfo("Shielding Plax", 147, Rarity.COMMON, mage.cards.s.ShieldingPlax.class));
- cards.add(new SetCardInfo("Silkwing Scout", 31, Rarity.COMMON, mage.cards.s.SilkwingScout.class));
- cards.add(new SetCardInfo("Simic Basilisk", 91, Rarity.UNCOMMON, mage.cards.s.SimicBasilisk.class));
- cards.add(new SetCardInfo("Simic Growth Chamber", 180, Rarity.COMMON, mage.cards.s.SimicGrowthChamber.class));
- cards.add(new SetCardInfo("Simic Guildmage", 148, Rarity.UNCOMMON, mage.cards.s.SimicGuildmage.class));
- cards.add(new SetCardInfo("Simic Initiate", 92, Rarity.COMMON, mage.cards.s.SimicInitiate.class));
- cards.add(new SetCardInfo("Simic Ragworm", 93, Rarity.COMMON, mage.cards.s.SimicRagworm.class));
- cards.add(new SetCardInfo("Simic Signet", 166, Rarity.COMMON, mage.cards.s.SimicSignet.class));
- cards.add(new SetCardInfo("Simic Sky Swallower", 130, Rarity.RARE, mage.cards.s.SimicSkySwallower.class));
- cards.add(new SetCardInfo("Skullmead Cauldron", 167, Rarity.UNCOMMON, mage.cards.s.SkullmeadCauldron.class));
- cards.add(new SetCardInfo("Sky Hussar", 131, Rarity.UNCOMMON, mage.cards.s.SkyHussar.class));
- cards.add(new SetCardInfo("Skyscribing", 32, Rarity.UNCOMMON, mage.cards.s.Skyscribing.class));
- cards.add(new SetCardInfo("Slaughterhouse Bouncer", 54, Rarity.COMMON, mage.cards.s.SlaughterhouseBouncer.class));
- cards.add(new SetCardInfo("Slithering Shade", 55, Rarity.UNCOMMON, mage.cards.s.SlitheringShade.class));
- cards.add(new SetCardInfo("Soulsworn Jury", 17, Rarity.COMMON, mage.cards.s.SoulswornJury.class));
- cards.add(new SetCardInfo("Spell Snare", 33, Rarity.UNCOMMON, mage.cards.s.SpellSnare.class));
- cards.add(new SetCardInfo("Sporeback Troll", 94, Rarity.COMMON, mage.cards.s.SporebackTroll.class));
- cards.add(new SetCardInfo("Sprouting Phytohydra", 95, Rarity.RARE, mage.cards.s.SproutingPhytohydra.class));
- cards.add(new SetCardInfo("Squealing Devil", 72, Rarity.UNCOMMON, mage.cards.s.SquealingDevil.class));
- cards.add(new SetCardInfo("Stalking Vengeance", 73, Rarity.RARE, mage.cards.s.StalkingVengeance.class));
- cards.add(new SetCardInfo("Steeling Stance", 18, Rarity.COMMON, mage.cards.s.SteelingStance.class));
- cards.add(new SetCardInfo("Stoic Ephemera", 19, Rarity.UNCOMMON, mage.cards.s.StoicEphemera.class));
- cards.add(new SetCardInfo("Stomp and Howl", 96, Rarity.UNCOMMON, mage.cards.s.StompAndHowl.class));
- cards.add(new SetCardInfo("Supply // Demand", 157, Rarity.UNCOMMON, mage.cards.s.SupplyDemand.class));
- cards.add(new SetCardInfo("Taste for Mayhem", 75, Rarity.COMMON, mage.cards.t.TasteForMayhem.class));
- cards.add(new SetCardInfo("Thrive", 98, Rarity.COMMON, mage.cards.t.Thrive.class));
- cards.add(new SetCardInfo("Tidespout Tyrant", 34, Rarity.RARE, mage.cards.t.TidespoutTyrant.class));
- cards.add(new SetCardInfo("Transguild Courier", 168, Rarity.UNCOMMON, mage.cards.t.TransguildCourier.class));
- cards.add(new SetCardInfo("Trial // Error", 158, Rarity.UNCOMMON, mage.cards.t.TrialError.class));
- cards.add(new SetCardInfo("Trygon Predator", 133, Rarity.UNCOMMON, mage.cards.t.TrygonPredator.class));
- cards.add(new SetCardInfo("Twinstrike", 134, Rarity.UNCOMMON, mage.cards.t.Twinstrike.class));
- cards.add(new SetCardInfo("Unliving Psychopath", 56, Rarity.RARE, mage.cards.u.UnlivingPsychopath.class));
- cards.add(new SetCardInfo("Utopia Sprawl", 99, Rarity.COMMON, mage.cards.u.UtopiaSprawl.class));
- cards.add(new SetCardInfo("Utvara Scalper", 76, Rarity.COMMON, mage.cards.u.UtvaraScalper.class));
- cards.add(new SetCardInfo("Valor Made Real", 20, Rarity.COMMON, mage.cards.v.ValorMadeReal.class));
- cards.add(new SetCardInfo("Verdant Eidolon", 100, Rarity.COMMON, mage.cards.v.VerdantEidolon.class));
- cards.add(new SetCardInfo("Vesper Ghoul", 57, Rarity.COMMON, mage.cards.v.VesperGhoul.class));
- cards.add(new SetCardInfo("Vigean Graftmage", 35, Rarity.UNCOMMON, mage.cards.v.VigeanGraftmage.class));
- cards.add(new SetCardInfo("Vigean Hydropon", 135, Rarity.COMMON, mage.cards.v.VigeanHydropon.class));
- cards.add(new SetCardInfo("Vision Skeins", 36, Rarity.COMMON, mage.cards.v.VisionSkeins.class));
- cards.add(new SetCardInfo("Voidslime", 137, Rarity.RARE, mage.cards.v.Voidslime.class));
- cards.add(new SetCardInfo("Wakestone Gargoyle", 21, Rarity.RARE, mage.cards.w.WakestoneGargoyle.class));
- cards.add(new SetCardInfo("Walking Archive", 169, Rarity.RARE, mage.cards.w.WalkingArchive.class));
- cards.add(new SetCardInfo("War's Toll", 77, Rarity.RARE, mage.cards.w.WarsToll.class));
- cards.add(new SetCardInfo("Whiptail Moloch", 79, Rarity.COMMON, mage.cards.w.WhiptailMoloch.class));
- cards.add(new SetCardInfo("Windreaver", 138, Rarity.RARE, mage.cards.w.Windreaver.class));
- cards.add(new SetCardInfo("Wit's End", 58, Rarity.RARE, mage.cards.w.WitsEnd.class));
- cards.add(new SetCardInfo("Wrecking Ball", 139, Rarity.COMMON, mage.cards.w.WreckingBall.class));
- cards.add(new SetCardInfo("Writ of Passage", 37, Rarity.COMMON, mage.cards.w.WritOfPassage.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ * Created by IntelliJ IDEA. User: Loki Date: 20.12.10 Time: 21:40
+ */
+public final class Dissension extends ExpansionSet {
+
+ private static final Dissension instance = new Dissension();
+
+ public static Dissension getInstance() {
+ return instance;
+ }
+
+ private Dissension() {
+ super("Dissension", "DIS", ExpansionSet.buildDate(2006, 4, 5), 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("Aethermage's Touch", 101, Rarity.RARE, mage.cards.a.AethermagesTouch.class));
+ cards.add(new SetCardInfo("Anthem of Rakdos", 102, Rarity.RARE, mage.cards.a.AnthemOfRakdos.class));
+ cards.add(new SetCardInfo("Aquastrand Spider", 80, Rarity.COMMON, mage.cards.a.AquastrandSpider.class));
+ cards.add(new SetCardInfo("Assault Zeppelid", 103, Rarity.COMMON, mage.cards.a.AssaultZeppelid.class));
+ cards.add(new SetCardInfo("Aurora Eidolon", 1, Rarity.COMMON, mage.cards.a.AuroraEidolon.class));
+ cards.add(new SetCardInfo("Avatar of Discord", 140, Rarity.RARE, mage.cards.a.AvatarOfDiscord.class));
+ cards.add(new SetCardInfo("Azorius Aethermage", 104, Rarity.UNCOMMON, mage.cards.a.AzoriusAEthermage.class));
+ cards.add(new SetCardInfo("Azorius Chancery", 170, Rarity.COMMON, mage.cards.a.AzoriusChancery.class));
+ cards.add(new SetCardInfo("Azorius First-Wing", 105, Rarity.COMMON, mage.cards.a.AzoriusFirstWing.class));
+ cards.add(new SetCardInfo("Azorius Guildmage", 141, Rarity.UNCOMMON, mage.cards.a.AzoriusGuildmage.class));
+ cards.add(new SetCardInfo("Azorius Herald", 2, Rarity.UNCOMMON, mage.cards.a.AzoriusHerald.class));
+ cards.add(new SetCardInfo("Azorius Signet", 159, Rarity.COMMON, mage.cards.a.AzoriusSignet.class));
+ cards.add(new SetCardInfo("Beacon Hawk", 3, Rarity.COMMON, mage.cards.b.BeaconHawk.class));
+ cards.add(new SetCardInfo("Biomantic Mastery", 142, Rarity.RARE, mage.cards.b.BiomanticMastery.class));
+ cards.add(new SetCardInfo("Blessing of the Nephilim", 4, Rarity.UNCOMMON, mage.cards.b.BlessingOfTheNephilim.class));
+ cards.add(new SetCardInfo("Blood Crypt", 171, Rarity.RARE, mage.cards.b.BloodCrypt.class));
+ cards.add(new SetCardInfo("Bond of Agony", 38, Rarity.UNCOMMON, mage.cards.b.BondOfAgony.class));
+ cards.add(new SetCardInfo("Bound // Determined", 149, Rarity.RARE, mage.cards.b.BoundDetermined.class));
+ cards.add(new SetCardInfo("Brace for Impact", 5, Rarity.UNCOMMON, mage.cards.b.BraceForImpact.class));
+ cards.add(new SetCardInfo("Brain Pry", 39, Rarity.UNCOMMON, mage.cards.b.BrainPry.class));
+ cards.add(new SetCardInfo("Breeding Pool", 172, Rarity.RARE, mage.cards.b.BreedingPool.class));
+ cards.add(new SetCardInfo("Bronze Bombshell", 160, Rarity.RARE, mage.cards.b.BronzeBombshell.class));
+ cards.add(new SetCardInfo("Cackling Flames", 59, Rarity.COMMON, mage.cards.c.CacklingFlames.class));
+ cards.add(new SetCardInfo("Carom", 6, Rarity.COMMON, mage.cards.c.Carom.class));
+ cards.add(new SetCardInfo("Celestial Ancient", 7, Rarity.RARE, mage.cards.c.CelestialAncient.class));
+ cards.add(new SetCardInfo("Coiling Oracle", 107, Rarity.COMMON, mage.cards.c.CoilingOracle.class));
+ cards.add(new SetCardInfo("Condemn", 8, Rarity.UNCOMMON, mage.cards.c.Condemn.class));
+ cards.add(new SetCardInfo("Court Hussar", 22, Rarity.UNCOMMON, mage.cards.c.CourtHussar.class));
+ cards.add(new SetCardInfo("Crime // Punishment", 150, Rarity.RARE, mage.cards.c.CrimePunishment.class));
+ cards.add(new SetCardInfo("Crypt Champion", 40, Rarity.UNCOMMON, mage.cards.c.CryptChampion.class));
+ cards.add(new SetCardInfo("Cytoplast Manipulator", 23, Rarity.RARE, mage.cards.c.CytoplastManipulator.class));
+ cards.add(new SetCardInfo("Cytoplast Root-Kin", 81, Rarity.RARE, mage.cards.c.CytoplastRootKin.class));
+ cards.add(new SetCardInfo("Cytoshape", 108, Rarity.RARE, mage.cards.c.Cytoshape.class));
+ cards.add(new SetCardInfo("Cytospawn Shambler", 82, Rarity.COMMON, mage.cards.c.CytospawnShambler.class));
+ cards.add(new SetCardInfo("Delirium Skeins", 41, Rarity.COMMON, mage.cards.d.DeliriumSkeins.class));
+ cards.add(new SetCardInfo("Demonfire", 60, Rarity.RARE, mage.cards.d.Demonfire.class));
+ cards.add(new SetCardInfo("Demon's Jester", 42, Rarity.COMMON, mage.cards.d.DemonsJester.class));
+ cards.add(new SetCardInfo("Dovescape", 143, Rarity.RARE, mage.cards.d.Dovescape.class));
+ cards.add(new SetCardInfo("Dread Slag", 109, Rarity.RARE, mage.cards.d.DreadSlag.class));
+ cards.add(new SetCardInfo("Drekavac", 43, Rarity.UNCOMMON, mage.cards.d.Drekavac.class));
+ cards.add(new SetCardInfo("Elemental Resonance", 83, Rarity.RARE, mage.cards.e.ElementalResonance.class));
+ cards.add(new SetCardInfo("Enemy of the Guildpact", 44, Rarity.COMMON, mage.cards.e.EnemyOfTheGuildpact.class));
+ cards.add(new SetCardInfo("Enigma Eidolon", 24, Rarity.COMMON, mage.cards.e.EnigmaEidolon.class));
+ cards.add(new SetCardInfo("Entropic Eidolon", 45, Rarity.COMMON, mage.cards.e.EntropicEidolon.class));
+ cards.add(new SetCardInfo("Evolution Vat", 161, Rarity.RARE, mage.cards.e.EvolutionVat.class));
+ cards.add(new SetCardInfo("Experiment Kraj", 110, Rarity.RARE, mage.cards.e.ExperimentKraj.class));
+ cards.add(new SetCardInfo("Flame-Kin War Scout", 61, Rarity.UNCOMMON, mage.cards.f.FlameKinWarScout.class));
+ cards.add(new SetCardInfo("Flaring Flame-Kin", 62, Rarity.UNCOMMON, mage.cards.f.FlaringFlameKin.class));
+ cards.add(new SetCardInfo("Freewind Equenaut", 9, Rarity.COMMON, mage.cards.f.FreewindEquenaut.class));
+ cards.add(new SetCardInfo("Ghost Quarter", 173, Rarity.UNCOMMON, mage.cards.g.GhostQuarter.class));
+ cards.add(new SetCardInfo("Gnat Alley Creeper", 63, Rarity.UNCOMMON, mage.cards.g.GnatAlleyCreeper.class));
+ cards.add(new SetCardInfo("Gobhobbler Rats", 111, Rarity.COMMON, mage.cards.g.GobhobblerRats.class));
+ cards.add(new SetCardInfo("Govern the Guildless", 25, Rarity.RARE, mage.cards.g.GovernTheGuildless.class));
+ cards.add(new SetCardInfo("Grand Arbiter Augustin IV", 112, Rarity.RARE, mage.cards.g.GrandArbiterAugustinIV.class));
+ cards.add(new SetCardInfo("Guardian of the Guildpact", 10, Rarity.COMMON, mage.cards.g.GuardianOfTheGuildpact.class));
+ cards.add(new SetCardInfo("Haazda Exonerator", 11, Rarity.COMMON, mage.cards.h.HaazdaExonerator.class));
+ cards.add(new SetCardInfo("Haazda Shield Mate", 12, Rarity.RARE, mage.cards.h.HaazdaShieldMate.class));
+ cards.add(new SetCardInfo("Hallowed Fountain", 174, Rarity.RARE, mage.cards.h.HallowedFountain.class));
+ cards.add(new SetCardInfo("Helium Squirter", 26, Rarity.COMMON, mage.cards.h.HeliumSquirter.class));
+ cards.add(new SetCardInfo("Hellhole Rats", 113, Rarity.UNCOMMON, mage.cards.h.HellholeRats.class));
+ cards.add(new SetCardInfo("Hide // Seek", 151, Rarity.UNCOMMON, mage.cards.h.HideSeek.class));
+ cards.add(new SetCardInfo("Hit // Run", 152, Rarity.UNCOMMON, mage.cards.h.HitRun.class));
+ cards.add(new SetCardInfo("Ignorant Bliss", 64, Rarity.UNCOMMON, mage.cards.i.IgnorantBliss.class));
+ cards.add(new SetCardInfo("Indrik Stomphowler", 86, Rarity.UNCOMMON, mage.cards.i.IndrikStomphowler.class));
+ cards.add(new SetCardInfo("Infernal Tutor", 46, Rarity.RARE, mage.cards.i.InfernalTutor.class));
+ cards.add(new SetCardInfo("Isperia the Inscrutable", 114, Rarity.RARE, mage.cards.i.IsperiaTheInscrutable.class));
+ cards.add(new SetCardInfo("Jagged Poppet", 115, Rarity.UNCOMMON, mage.cards.j.JaggedPoppet.class));
+ cards.add(new SetCardInfo("Kill-Suit Cultist", 65, Rarity.COMMON, mage.cards.k.KillSuitCultist.class));
+ cards.add(new SetCardInfo("Kindle the Carnage", 66, Rarity.UNCOMMON, mage.cards.k.KindleTheCarnage.class));
+ cards.add(new SetCardInfo("Leafdrake Roost", 116, Rarity.UNCOMMON, mage.cards.l.LeafdrakeRoost.class));
+ cards.add(new SetCardInfo("Loaming Shaman", 87, Rarity.RARE, mage.cards.l.LoamingShaman.class));
+ cards.add(new SetCardInfo("Lyzolda, the Blood Witch", 117, Rarity.RARE, mage.cards.l.LyzoldaTheBloodWitch.class));
+ cards.add(new SetCardInfo("Macabre Waltz", 47, Rarity.COMMON, mage.cards.m.MacabreWaltz.class));
+ cards.add(new SetCardInfo("Magewright's Stone", 162, Rarity.UNCOMMON, mage.cards.m.MagewrightsStone.class));
+ cards.add(new SetCardInfo("Might of the Nephilim", 88, Rarity.UNCOMMON, mage.cards.m.MightOfTheNephilim.class));
+ cards.add(new SetCardInfo("Minister of Impediments", 144, Rarity.COMMON, mage.cards.m.MinisterOfImpediments.class));
+ cards.add(new SetCardInfo("Mistral Charger", 13, Rarity.UNCOMMON, mage.cards.m.MistralCharger.class));
+ cards.add(new SetCardInfo("Momir Vig, Simic Visionary", 118, Rarity.RARE, mage.cards.m.MomirVigSimicVisionary.class));
+ cards.add(new SetCardInfo("Nihilistic Glee", 50, Rarity.RARE, mage.cards.n.NihilisticGlee.class));
+ cards.add(new SetCardInfo("Novijen, Heart of Progress", 175, Rarity.UNCOMMON, mage.cards.n.NovijenHeartOfProgress.class));
+ cards.add(new SetCardInfo("Novijen Sages", 27, Rarity.RARE, mage.cards.n.NovijenSages.class));
+ cards.add(new SetCardInfo("Ocular Halo", 28, Rarity.COMMON, mage.cards.o.OcularHalo.class));
+ cards.add(new SetCardInfo("Odds // Ends", 153, Rarity.RARE, mage.cards.o.OddsEnds.class));
+ cards.add(new SetCardInfo("Ogre Gatecrasher", 67, Rarity.COMMON, mage.cards.o.OgreGatecrasher.class));
+ cards.add(new SetCardInfo("Omnibian", 119, Rarity.RARE, mage.cards.o.Omnibian.class));
+ cards.add(new SetCardInfo("Overrule", 120, Rarity.COMMON, mage.cards.o.Overrule.class));
+ cards.add(new SetCardInfo("Pain Magnification", 121, Rarity.UNCOMMON, mage.cards.p.PainMagnification.class));
+ cards.add(new SetCardInfo("Paladin of Prahv", 14, Rarity.UNCOMMON, mage.cards.p.PaladinOfPrahv.class));
+ cards.add(new SetCardInfo("Palliation Accord", 122, Rarity.UNCOMMON, mage.cards.p.PalliationAccord.class));
+ cards.add(new SetCardInfo("Patagia Viper", 89, Rarity.UNCOMMON, mage.cards.p.PatagiaViper.class));
+ cards.add(new SetCardInfo("Pillar of the Paruns", 176, Rarity.RARE, mage.cards.p.PillarOfTheParuns.class));
+ cards.add(new SetCardInfo("Plaxcaster Frogling", 123, Rarity.UNCOMMON, mage.cards.p.PlaxcasterFrogling.class));
+ cards.add(new SetCardInfo("Plaxmanta", 29, Rarity.UNCOMMON, mage.cards.p.Plaxmanta.class));
+ cards.add(new SetCardInfo("Plumes of Peace", 124, Rarity.COMMON, mage.cards.p.PlumesOfPeace.class));
+ cards.add(new SetCardInfo("Prahv, Spires of Order", 177, Rarity.UNCOMMON, mage.cards.p.PrahvSpiresOfOrder.class));
+ cards.add(new SetCardInfo("Pride of the Clouds", 125, Rarity.RARE, mage.cards.p.PrideOfTheClouds.class));
+ cards.add(new SetCardInfo("Proclamation of Rebirth", 15, Rarity.RARE, mage.cards.p.ProclamationOfRebirth.class));
+ cards.add(new SetCardInfo("Proper Burial", 16, Rarity.RARE, mage.cards.p.ProperBurial.class));
+ cards.add(new SetCardInfo("Protean Hulk", 90, Rarity.RARE, mage.cards.p.ProteanHulk.class));
+ cards.add(new SetCardInfo("Psychic Possession", 30, Rarity.RARE, mage.cards.p.PsychicPossession.class));
+ cards.add(new SetCardInfo("Psychotic Fury", 68, Rarity.COMMON, mage.cards.p.PsychoticFury.class));
+ cards.add(new SetCardInfo("Pure // Simple", 154, Rarity.UNCOMMON, mage.cards.p.PureSimple.class));
+ cards.add(new SetCardInfo("Ragamuffyn", 51, Rarity.UNCOMMON, mage.cards.r.Ragamuffyn.class));
+ cards.add(new SetCardInfo("Rain of Gore", 126, Rarity.RARE, mage.cards.r.RainOfGore.class));
+ cards.add(new SetCardInfo("Rakdos Carnarium", 178, Rarity.COMMON, mage.cards.r.RakdosCarnarium.class));
+ cards.add(new SetCardInfo("Rakdos Guildmage", 145, Rarity.UNCOMMON, mage.cards.r.RakdosGuildmage.class));
+ cards.add(new SetCardInfo("Rakdos Ickspitter", 128, Rarity.COMMON, mage.cards.r.RakdosIckspitter.class));
+ cards.add(new SetCardInfo("Rakdos Pit Dragon", 69, Rarity.RARE, mage.cards.r.RakdosPitDragon.class));
+ cards.add(new SetCardInfo("Rakdos Signet", 165, Rarity.COMMON, mage.cards.r.RakdosSignet.class));
+ cards.add(new SetCardInfo("Rakdos the Defiler", 129, Rarity.RARE, mage.cards.r.RakdosTheDefiler.class));
+ cards.add(new SetCardInfo("Ratcatcher", 52, Rarity.RARE, mage.cards.r.Ratcatcher.class));
+ cards.add(new SetCardInfo("Research // Development", 155, Rarity.RARE, mage.cards.r.ResearchDevelopment.class));
+ cards.add(new SetCardInfo("Riot Spikes", 146, Rarity.COMMON, mage.cards.r.RiotSpikes.class));
+ cards.add(new SetCardInfo("Rise // Fall", 156, Rarity.UNCOMMON, mage.cards.r.RiseFall.class));
+ cards.add(new SetCardInfo("Rix Maadi, Dungeon Palace", 179, Rarity.UNCOMMON, mage.cards.r.RixMaadiDungeonPalace.class));
+ cards.add(new SetCardInfo("Sandstorm Eidolon", 70, Rarity.COMMON, mage.cards.s.SandstormEidolon.class));
+ cards.add(new SetCardInfo("Seal of Doom", 53, Rarity.COMMON, mage.cards.s.SealOfDoom.class));
+ cards.add(new SetCardInfo("Seal of Fire", 71, Rarity.COMMON, mage.cards.s.SealOfFire.class));
+ cards.add(new SetCardInfo("Shielding Plax", 147, Rarity.COMMON, mage.cards.s.ShieldingPlax.class));
+ cards.add(new SetCardInfo("Silkwing Scout", 31, Rarity.COMMON, mage.cards.s.SilkwingScout.class));
+ cards.add(new SetCardInfo("Simic Basilisk", 91, Rarity.UNCOMMON, mage.cards.s.SimicBasilisk.class));
+ cards.add(new SetCardInfo("Simic Growth Chamber", 180, Rarity.COMMON, mage.cards.s.SimicGrowthChamber.class));
+ cards.add(new SetCardInfo("Simic Guildmage", 148, Rarity.UNCOMMON, mage.cards.s.SimicGuildmage.class));
+ cards.add(new SetCardInfo("Simic Initiate", 92, Rarity.COMMON, mage.cards.s.SimicInitiate.class));
+ cards.add(new SetCardInfo("Simic Ragworm", 93, Rarity.COMMON, mage.cards.s.SimicRagworm.class));
+ cards.add(new SetCardInfo("Simic Signet", 166, Rarity.COMMON, mage.cards.s.SimicSignet.class));
+ cards.add(new SetCardInfo("Simic Sky Swallower", 130, Rarity.RARE, mage.cards.s.SimicSkySwallower.class));
+ cards.add(new SetCardInfo("Skullmead Cauldron", 167, Rarity.UNCOMMON, mage.cards.s.SkullmeadCauldron.class));
+ cards.add(new SetCardInfo("Sky Hussar", 131, Rarity.UNCOMMON, mage.cards.s.SkyHussar.class));
+ cards.add(new SetCardInfo("Skyscribing", 32, Rarity.UNCOMMON, mage.cards.s.Skyscribing.class));
+ cards.add(new SetCardInfo("Slaughterhouse Bouncer", 54, Rarity.COMMON, mage.cards.s.SlaughterhouseBouncer.class));
+ cards.add(new SetCardInfo("Slithering Shade", 55, Rarity.UNCOMMON, mage.cards.s.SlitheringShade.class));
+ cards.add(new SetCardInfo("Soulsworn Jury", 17, Rarity.COMMON, mage.cards.s.SoulswornJury.class));
+ cards.add(new SetCardInfo("Spell Snare", 33, Rarity.UNCOMMON, mage.cards.s.SpellSnare.class));
+ cards.add(new SetCardInfo("Sporeback Troll", 94, Rarity.COMMON, mage.cards.s.SporebackTroll.class));
+ cards.add(new SetCardInfo("Sprouting Phytohydra", 95, Rarity.RARE, mage.cards.s.SproutingPhytohydra.class));
+ cards.add(new SetCardInfo("Squealing Devil", 72, Rarity.UNCOMMON, mage.cards.s.SquealingDevil.class));
+ cards.add(new SetCardInfo("Stalking Vengeance", 73, Rarity.RARE, mage.cards.s.StalkingVengeance.class));
+ cards.add(new SetCardInfo("Steeling Stance", 18, Rarity.COMMON, mage.cards.s.SteelingStance.class));
+ cards.add(new SetCardInfo("Stoic Ephemera", 19, Rarity.UNCOMMON, mage.cards.s.StoicEphemera.class));
+ cards.add(new SetCardInfo("Stomp and Howl", 96, Rarity.UNCOMMON, mage.cards.s.StompAndHowl.class));
+ cards.add(new SetCardInfo("Supply // Demand", 157, Rarity.UNCOMMON, mage.cards.s.SupplyDemand.class));
+ cards.add(new SetCardInfo("Taste for Mayhem", 75, Rarity.COMMON, mage.cards.t.TasteForMayhem.class));
+ cards.add(new SetCardInfo("Thrive", 98, Rarity.COMMON, mage.cards.t.Thrive.class));
+ cards.add(new SetCardInfo("Tidespout Tyrant", 34, Rarity.RARE, mage.cards.t.TidespoutTyrant.class));
+ cards.add(new SetCardInfo("Transguild Courier", 168, Rarity.UNCOMMON, mage.cards.t.TransguildCourier.class));
+ cards.add(new SetCardInfo("Trial // Error", 158, Rarity.UNCOMMON, mage.cards.t.TrialError.class));
+ cards.add(new SetCardInfo("Trygon Predator", 133, Rarity.UNCOMMON, mage.cards.t.TrygonPredator.class));
+ cards.add(new SetCardInfo("Twinstrike", 134, Rarity.UNCOMMON, mage.cards.t.Twinstrike.class));
+ cards.add(new SetCardInfo("Unliving Psychopath", 56, Rarity.RARE, mage.cards.u.UnlivingPsychopath.class));
+ cards.add(new SetCardInfo("Utopia Sprawl", 99, Rarity.COMMON, mage.cards.u.UtopiaSprawl.class));
+ cards.add(new SetCardInfo("Utvara Scalper", 76, Rarity.COMMON, mage.cards.u.UtvaraScalper.class));
+ cards.add(new SetCardInfo("Valor Made Real", 20, Rarity.COMMON, mage.cards.v.ValorMadeReal.class));
+ cards.add(new SetCardInfo("Verdant Eidolon", 100, Rarity.COMMON, mage.cards.v.VerdantEidolon.class));
+ cards.add(new SetCardInfo("Vesper Ghoul", 57, Rarity.COMMON, mage.cards.v.VesperGhoul.class));
+ cards.add(new SetCardInfo("Vigean Graftmage", 35, Rarity.UNCOMMON, mage.cards.v.VigeanGraftmage.class));
+ cards.add(new SetCardInfo("Vigean Hydropon", 135, Rarity.COMMON, mage.cards.v.VigeanHydropon.class));
+ cards.add(new SetCardInfo("Vision Skeins", 36, Rarity.COMMON, mage.cards.v.VisionSkeins.class));
+ cards.add(new SetCardInfo("Voidslime", 137, Rarity.RARE, mage.cards.v.Voidslime.class));
+ cards.add(new SetCardInfo("Wakestone Gargoyle", 21, Rarity.RARE, mage.cards.w.WakestoneGargoyle.class));
+ cards.add(new SetCardInfo("Walking Archive", 169, Rarity.RARE, mage.cards.w.WalkingArchive.class));
+ cards.add(new SetCardInfo("War's Toll", 77, Rarity.RARE, mage.cards.w.WarsToll.class));
+ cards.add(new SetCardInfo("Weight of Spires", 78, Rarity.UNCOMMON, mage.cards.w.WeightOfSpires.class));
+ cards.add(new SetCardInfo("Whiptail Moloch", 79, Rarity.COMMON, mage.cards.w.WhiptailMoloch.class));
+ cards.add(new SetCardInfo("Windreaver", 138, Rarity.RARE, mage.cards.w.Windreaver.class));
+ cards.add(new SetCardInfo("Wit's End", 58, Rarity.RARE, mage.cards.w.WitsEnd.class));
+ cards.add(new SetCardInfo("Wrecking Ball", 139, Rarity.COMMON, mage.cards.w.WreckingBall.class));
+ cards.add(new SetCardInfo("Writ of Passage", 37, Rarity.COMMON, mage.cards.w.WritOfPassage.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/DivineVsDemonic.java b/Mage.Sets/src/mage/sets/DivineVsDemonic.java
index 004315de587..122cfacffc4 100644
--- a/Mage.Sets/src/mage/sets/DivineVsDemonic.java
+++ b/Mage.Sets/src/mage/sets/DivineVsDemonic.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class DivineVsDemonic extends ExpansionSet {
+public final class DivineVsDemonic extends ExpansionSet {
private static final DivineVsDemonic instance = new DivineVsDemonic();
diff --git a/Mage.Sets/src/mage/sets/Dominaria.java b/Mage.Sets/src/mage/sets/Dominaria.java
index cb7838ab0c1..be4bdbc598d 100644
--- a/Mage.Sets/src/mage/sets/Dominaria.java
+++ b/Mage.Sets/src/mage/sets/Dominaria.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class Dominaria extends ExpansionSet {
+public final class Dominaria extends ExpansionSet {
private static final Dominaria instance = new Dominaria();
diff --git a/Mage.Sets/src/mage/sets/DragonsMaze.java b/Mage.Sets/src/mage/sets/DragonsMaze.java
index 259c830fbd4..66b83b7ab66 100644
--- a/Mage.Sets/src/mage/sets/DragonsMaze.java
+++ b/Mage.Sets/src/mage/sets/DragonsMaze.java
@@ -41,7 +41,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class DragonsMaze extends ExpansionSet {
+public final class DragonsMaze extends ExpansionSet {
private static final DragonsMaze instance = new DragonsMaze();
diff --git a/Mage.Sets/src/mage/sets/DragonsOfTarkir.java b/Mage.Sets/src/mage/sets/DragonsOfTarkir.java
index c47434c7e49..786a84b8193 100644
--- a/Mage.Sets/src/mage/sets/DragonsOfTarkir.java
+++ b/Mage.Sets/src/mage/sets/DragonsOfTarkir.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class DragonsOfTarkir extends ExpansionSet {
+public final class DragonsOfTarkir extends ExpansionSet {
private static final DragonsOfTarkir instance = new DragonsOfTarkir();
diff --git a/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers.java b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers.java
index ad916814475..8a7d7015455 100644
--- a/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers.java
+++ b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author Shootbot
*/
-public class DuelsOfThePlaneswalkers extends ExpansionSet {
+public final class DuelsOfThePlaneswalkers extends ExpansionSet {
private static final DuelsOfThePlaneswalkers instance = new DuelsOfThePlaneswalkers();
diff --git a/Mage.Sets/src/mage/sets/EighthEdition.java b/Mage.Sets/src/mage/sets/EighthEdition.java
index e9d4a733f68..362fa2e0040 100644
--- a/Mage.Sets/src/mage/sets/EighthEdition.java
+++ b/Mage.Sets/src/mage/sets/EighthEdition.java
@@ -6,7 +6,7 @@ import mage.cards.r.RukhEgg;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class EighthEdition extends ExpansionSet {
+public final class EighthEdition extends ExpansionSet {
private static final EighthEdition instance = new EighthEdition();
diff --git a/Mage.Sets/src/mage/sets/EighthEditionBox.java b/Mage.Sets/src/mage/sets/EighthEditionBox.java
index 5806e8b36f3..05b7be001cf 100644
--- a/Mage.Sets/src/mage/sets/EighthEditionBox.java
+++ b/Mage.Sets/src/mage/sets/EighthEditionBox.java
@@ -4,7 +4,7 @@ import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class EighthEditionBox extends ExpansionSet {
+public final class EighthEditionBox extends ExpansionSet {
private static final EighthEditionBox instance = new EighthEditionBox();
diff --git a/Mage.Sets/src/mage/sets/EldritchMoon.java b/Mage.Sets/src/mage/sets/EldritchMoon.java
index 5e1c4eadfab..16860cfbc29 100644
--- a/Mage.Sets/src/mage/sets/EldritchMoon.java
+++ b/Mage.Sets/src/mage/sets/EldritchMoon.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class EldritchMoon extends ExpansionSet {
+public final class EldritchMoon extends ExpansionSet {
private static final EldritchMoon instance = new EldritchMoon();
diff --git a/Mage.Sets/src/mage/sets/ElspethVsKiora.java b/Mage.Sets/src/mage/sets/ElspethVsKiora.java
index 20fefabd2c3..2064868f163 100644
--- a/Mage.Sets/src/mage/sets/ElspethVsKiora.java
+++ b/Mage.Sets/src/mage/sets/ElspethVsKiora.java
@@ -36,7 +36,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class ElspethVsKiora extends ExpansionSet {
+public final class ElspethVsKiora extends ExpansionSet {
private static final ElspethVsKiora instance = new ElspethVsKiora();
diff --git a/Mage.Sets/src/mage/sets/ElspethVsTezzeret.java b/Mage.Sets/src/mage/sets/ElspethVsTezzeret.java
index d5982254046..14916286f21 100644
--- a/Mage.Sets/src/mage/sets/ElspethVsTezzeret.java
+++ b/Mage.Sets/src/mage/sets/ElspethVsTezzeret.java
@@ -4,7 +4,7 @@ import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class ElspethVsTezzeret extends ExpansionSet {
+public final class ElspethVsTezzeret extends ExpansionSet {
private static final ElspethVsTezzeret instance = new ElspethVsTezzeret();
diff --git a/Mage.Sets/src/mage/sets/ElvesVsGoblins.java b/Mage.Sets/src/mage/sets/ElvesVsGoblins.java
index 544d12d780c..e41c7f5d3eb 100644
--- a/Mage.Sets/src/mage/sets/ElvesVsGoblins.java
+++ b/Mage.Sets/src/mage/sets/ElvesVsGoblins.java
@@ -13,7 +13,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class ElvesVsGoblins extends ExpansionSet {
+public final class ElvesVsGoblins extends ExpansionSet {
private static final ElvesVsGoblins instance = new ElvesVsGoblins();
diff --git a/Mage.Sets/src/mage/sets/ElvesVsInventors.java b/Mage.Sets/src/mage/sets/ElvesVsInventors.java
new file mode 100644
index 00000000000..b1f6c5ef623
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ElvesVsInventors.java
@@ -0,0 +1,126 @@
+/*
+* 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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author TheElk801
+ */
+public final class ElvesVsInventors extends ExpansionSet {
+
+ private static final ElvesVsInventors instance = new ElvesVsInventors();
+
+ public static ElvesVsInventors getInstance() {
+ return instance;
+ }
+
+ private ElvesVsInventors() {
+ super("Duel Decks: Elves vs. Inventors", "DDU", ExpansionSet.buildDate(2018, 4, 6), SetType.SUPPLEMENTAL);
+ this.blockName = "Duel Decks";
+ cards.add(new SetCardInfo("Artificer's Epiphany", 36, Rarity.COMMON, mage.cards.a.ArtificersEpiphany.class));
+ cards.add(new SetCardInfo("Barrage Ogre", 44, Rarity.UNCOMMON, mage.cards.b.BarrageOgre.class));
+ cards.add(new SetCardInfo("Darksteel Citadel", 65, Rarity.UNCOMMON, mage.cards.d.DarksteelCitadel.class));
+ cards.add(new SetCardInfo("Darksteel Plate", 52, Rarity.RARE, mage.cards.d.DarksteelPlate.class));
+ cards.add(new SetCardInfo("Dwynen's Elite", 3, Rarity.UNCOMMON, mage.cards.d.DwynensElite.class));
+ cards.add(new SetCardInfo("Dwynen, Gilt-Leaf Daen", 2, Rarity.RARE, mage.cards.d.DwynenGiltLeafDaen.class));
+ cards.add(new SetCardInfo("Elvish Aberration", 4, Rarity.COMMON, mage.cards.e.ElvishAberration.class));
+ cards.add(new SetCardInfo("Elvish Archdruid", 5, Rarity.RARE, mage.cards.e.ElvishArchdruid.class));
+ cards.add(new SetCardInfo("Elvish Branchbender", 6, Rarity.COMMON, mage.cards.e.ElvishBranchbender.class));
+ cards.add(new SetCardInfo("Elvish Mystic", 7, Rarity.COMMON, mage.cards.e.ElvishMystic.class));
+ cards.add(new SetCardInfo("Elvish Vanguard", 8, Rarity.COMMON, mage.cards.e.ElvishVanguard.class));
+ cards.add(new SetCardInfo("Etherium Sculptor", 37, Rarity.COMMON, mage.cards.e.EtheriumSculptor.class));
+ cards.add(new SetCardInfo("Ezuri's Archers", 9, Rarity.COMMON, mage.cards.e.EzurisArchers.class));
+ cards.add(new SetCardInfo("Ezuri, Renegade Leader", 1, Rarity.MYTHIC, mage.cards.e.EzuriRenegadeLeader.class));
+ cards.add(new SetCardInfo("Faerie Mechanist", 38, Rarity.COMMON, mage.cards.f.FaerieMechanist.class));
+ cards.add(new SetCardInfo("Fierce Empath", 10, Rarity.COMMON, mage.cards.f.FierceEmpath.class));
+ cards.add(new SetCardInfo("Filigree Familiar", 53, Rarity.UNCOMMON, mage.cards.f.FiligreeFamiliar.class));
+ cards.add(new SetCardInfo("Forest", 31, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 32, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 33, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 34, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Foundry of the Consuls", 66, Rarity.UNCOMMON, mage.cards.f.FoundryOfTheConsuls.class));
+ cards.add(new SetCardInfo("Galvanic Blast", 45, Rarity.COMMON, mage.cards.g.GalvanicBlast.class));
+ cards.add(new SetCardInfo("Ghirapur Gearcrafter", 46, Rarity.COMMON, mage.cards.g.GhirapurGearcrafter.class));
+ cards.add(new SetCardInfo("Gladehart Cavalry", 11, Rarity.RARE, mage.cards.g.GladehartCavalry.class));
+ cards.add(new SetCardInfo("Goblin Welder", 35, Rarity.MYTHIC, mage.cards.g.GoblinWelder.class));
+ cards.add(new SetCardInfo("Great Furnace", 67, Rarity.COMMON, mage.cards.g.GreatFurnace.class));
+ cards.add(new SetCardInfo("Ichor Wellspring", 54, Rarity.COMMON, mage.cards.i.IchorWellspring.class));
+ cards.add(new SetCardInfo("Inventor's Goggles", 55, Rarity.COMMON, mage.cards.i.InventorsGoggles.class));
+ cards.add(new SetCardInfo("Island", 73, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 74, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ivy Lane Denizen", 12, Rarity.COMMON, mage.cards.i.IvyLaneDenizen.class));
+ cards.add(new SetCardInfo("Jagged-Scar Archers", 13, Rarity.UNCOMMON, mage.cards.j.JaggedScarArchers.class));
+ cards.add(new SetCardInfo("Krosan Tusker", 14, Rarity.COMMON, mage.cards.k.KrosanTusker.class));
+ cards.add(new SetCardInfo("Kujar Seedsculptor", 15, Rarity.COMMON, mage.cards.k.KujarSeedsculptor.class));
+ cards.add(new SetCardInfo("Lead the Stampede", 16, Rarity.COMMON, mage.cards.l.LeadTheStampede.class));
+ cards.add(new SetCardInfo("Leaf Gilder", 17, Rarity.COMMON, mage.cards.l.LeafGilder.class));
+ cards.add(new SetCardInfo("Llanowar Empath", 18, Rarity.COMMON, mage.cards.l.LlanowarEmpath.class));
+ cards.add(new SetCardInfo("Maverick Thopterist", 50, Rarity.UNCOMMON, mage.cards.m.MaverickThopterist.class));
+ cards.add(new SetCardInfo("Mountain", 75, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 76, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mycosynth Wellspring", 56, Rarity.COMMON, mage.cards.m.MycosynthWellspring.class));
+ cards.add(new SetCardInfo("Myr Battlesphere", 57, Rarity.RARE, mage.cards.m.MyrBattlesphere.class));
+ cards.add(new SetCardInfo("Myr Sire", 58, Rarity.COMMON, mage.cards.m.MyrSire.class));
+ cards.add(new SetCardInfo("Naturalize", 19, Rarity.COMMON, mage.cards.n.Naturalize.class));
+ cards.add(new SetCardInfo("Nature's Way", 20, Rarity.UNCOMMON, mage.cards.n.NaturesWay.class));
+ cards.add(new SetCardInfo("Neurok Replica", 59, Rarity.COMMON, mage.cards.n.NeurokReplica.class));
+ cards.add(new SetCardInfo("Nissa's Judgment", 21, Rarity.UNCOMMON, mage.cards.n.NissasJudgment.class));
+ cards.add(new SetCardInfo("Oran-Rief, the Vastwood", 28, Rarity.RARE, mage.cards.o.OranRiefTheVastwood.class));
+ cards.add(new SetCardInfo("Phyrexia's Core", 68, Rarity.UNCOMMON, mage.cards.p.PhyrexiasCore.class));
+ cards.add(new SetCardInfo("Pia and Kiran Nalaar", 47, Rarity.RARE, mage.cards.p.PiaAndKiranNalaar.class));
+ cards.add(new SetCardInfo("Pyrite Spellbomb", 60, Rarity.COMMON, mage.cards.p.PyriteSpellbomb.class));
+ cards.add(new SetCardInfo("Reclusive Artificer", 51, Rarity.UNCOMMON, mage.cards.r.ReclusiveArtificer.class));
+ cards.add(new SetCardInfo("Regal Force", 22, Rarity.RARE, mage.cards.r.RegalForce.class));
+ cards.add(new SetCardInfo("Riddlesmith", 39, Rarity.UNCOMMON, mage.cards.r.Riddlesmith.class));
+ cards.add(new SetCardInfo("Scuttling Doom Engine", 61, Rarity.RARE, mage.cards.s.ScuttlingDoomEngine.class));
+ cards.add(new SetCardInfo("Seat of the Synod", 69, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class));
+ cards.add(new SetCardInfo("Shivan Reef", 70, Rarity.RARE, mage.cards.s.ShivanReef.class));
+ cards.add(new SetCardInfo("Shrapnel Blast", 48, Rarity.UNCOMMON, mage.cards.s.ShrapnelBlast.class));
+ cards.add(new SetCardInfo("Solemn Simulacrum", 62, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class));
+ cards.add(new SetCardInfo("Swiftwater Cliffs", 71, Rarity.COMMON, mage.cards.s.SwiftwaterCliffs.class));
+ cards.add(new SetCardInfo("Sylvan Advocate", 23, Rarity.RARE, mage.cards.s.SylvanAdvocate.class));
+ cards.add(new SetCardInfo("Talara's Battalion", 24, Rarity.RARE, mage.cards.t.TalarasBattalion.class));
+ cards.add(new SetCardInfo("Temple of Epiphany", 72, Rarity.RARE, mage.cards.t.TempleOfEpiphany.class));
+ cards.add(new SetCardInfo("Thopter Assembly", 63, Rarity.RARE, mage.cards.t.ThopterAssembly.class));
+ cards.add(new SetCardInfo("Tranquil Thicket", 29, Rarity.COMMON, mage.cards.t.TranquilThicket.class));
+ cards.add(new SetCardInfo("Treasure Mage", 40, Rarity.UNCOMMON, mage.cards.t.TreasureMage.class));
+ cards.add(new SetCardInfo("Treetop Village", 30, Rarity.UNCOMMON, mage.cards.t.TreetopVillage.class));
+ cards.add(new SetCardInfo("Trinket Mage", 41, Rarity.COMMON, mage.cards.t.TrinketMage.class));
+ cards.add(new SetCardInfo("Trophy Mage", 42, Rarity.UNCOMMON, mage.cards.t.TrophyMage.class));
+ cards.add(new SetCardInfo("Viridian Shaman", 25, Rarity.UNCOMMON, mage.cards.v.ViridianShaman.class));
+ cards.add(new SetCardInfo("Voyager Staff", 64, Rarity.UNCOMMON, mage.cards.v.VoyagerStaff.class));
+ cards.add(new SetCardInfo("Welding Sparks", 49, Rarity.COMMON, mage.cards.w.WeldingSparks.class));
+ cards.add(new SetCardInfo("Whirler Rogue", 43, Rarity.UNCOMMON, mage.cards.w.WhirlerRogue.class));
+ cards.add(new SetCardInfo("Wildheart Invoker", 26, Rarity.COMMON, mage.cards.w.WildheartInvoker.class));
+ cards.add(new SetCardInfo("Yeva, Nature's Herald", 27, Rarity.RARE, mage.cards.y.YevaNaturesHerald.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/EternalMasters.java b/Mage.Sets/src/mage/sets/EternalMasters.java
index 547271a0ff4..376d3df2894 100644
--- a/Mage.Sets/src/mage/sets/EternalMasters.java
+++ b/Mage.Sets/src/mage/sets/EternalMasters.java
@@ -1,308 +1,308 @@
-/*
-* 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.cards.h.HymnToTourach;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author fireshoes
- */
-public class EternalMasters extends ExpansionSet {
-
- private static final EternalMasters instance = new EternalMasters();
-
- public static EternalMasters getInstance() {
- return instance;
- }
-
- private EternalMasters() {
- super("Eternal Masters", "EMA", ExpansionSet.buildDate(2016, 6, 10), SetType.SUPPLEMENTAL);
- this.blockName = "Reprint";
- 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("Abundant Growth", 156, Rarity.COMMON, mage.cards.a.AbundantGrowth.class));
- cards.add(new SetCardInfo("Ancestral Mask", 157, Rarity.UNCOMMON, mage.cards.a.AncestralMask.class));
- cards.add(new SetCardInfo("Animate Dead", 78, Rarity.UNCOMMON, mage.cards.a.AnimateDead.class));
- cards.add(new SetCardInfo("Annihilate", 79, Rarity.UNCOMMON, mage.cards.a.Annihilate.class));
- cards.add(new SetCardInfo("Arcanis the Omnipotent", 39, Rarity.RARE, mage.cards.a.ArcanisTheOmnipotent.class));
- cards.add(new SetCardInfo("Argothian Enchantress", 158, Rarity.MYTHIC, mage.cards.a.ArgothianEnchantress.class));
- cards.add(new SetCardInfo("Armadillo Cloak", 195, Rarity.UNCOMMON, mage.cards.a.ArmadilloCloak.class));
- cards.add(new SetCardInfo("Ashnod's Altar", 218, Rarity.UNCOMMON, mage.cards.a.AshnodsAltar.class));
- cards.add(new SetCardInfo("Avarax", 117, Rarity.COMMON, mage.cards.a.Avarax.class));
- cards.add(new SetCardInfo("Aven Riftwatcher", 1, Rarity.COMMON, mage.cards.a.AvenRiftwatcher.class));
- cards.add(new SetCardInfo("Balance", 2, Rarity.MYTHIC, mage.cards.b.Balance.class));
- cards.add(new SetCardInfo("Baleful Strix", 196, Rarity.RARE, mage.cards.b.BalefulStrix.class));
- cards.add(new SetCardInfo("Ballynock Cohort", 3, Rarity.COMMON, mage.cards.b.BallynockCohort.class));
- cards.add(new SetCardInfo("Battle Squadron", 118, Rarity.UNCOMMON, mage.cards.b.BattleSquadron.class));
- cards.add(new SetCardInfo("Beetleback Chief", 119, Rarity.UNCOMMON, mage.cards.b.BeetlebackChief.class));
- cards.add(new SetCardInfo("Benevolent Bodyguard", 4, Rarity.COMMON, mage.cards.b.BenevolentBodyguard.class));
- cards.add(new SetCardInfo("Blightsoil Druid", 80, Rarity.COMMON, mage.cards.b.BlightsoilDruid.class));
- cards.add(new SetCardInfo("Blood Artist", 81, Rarity.UNCOMMON, mage.cards.b.BloodArtist.class));
- cards.add(new SetCardInfo("Bloodbraid Elf", 197, Rarity.UNCOMMON, mage.cards.b.BloodbraidElf.class));
- cards.add(new SetCardInfo("Bloodfell Caves", 236, Rarity.COMMON, mage.cards.b.BloodfellCaves.class));
- cards.add(new SetCardInfo("Blossoming Sands", 237, Rarity.COMMON, mage.cards.b.BlossomingSands.class));
- cards.add(new SetCardInfo("Borderland Marauder", 120, Rarity.COMMON, mage.cards.b.BorderlandMarauder.class));
- cards.add(new SetCardInfo("Brago, King Eternal", 198, Rarity.RARE, mage.cards.b.BragoKingEternal.class));
- cards.add(new SetCardInfo("Braids, Cabal Minion", 82, Rarity.RARE, mage.cards.b.BraidsCabalMinion.class));
- cards.add(new SetCardInfo("Brainstorm", 40, Rarity.UNCOMMON, mage.cards.b.Brainstorm.class));
- cards.add(new SetCardInfo("Brawn", 159, Rarity.UNCOMMON, mage.cards.b.Brawn.class));
- cards.add(new SetCardInfo("Burning Vengeance", 121, Rarity.UNCOMMON, mage.cards.b.BurningVengeance.class));
- cards.add(new SetCardInfo("Cabal Therapy", 83, Rarity.UNCOMMON, mage.cards.c.CabalTherapy.class));
- cards.add(new SetCardInfo("Calciderm", 5, Rarity.UNCOMMON, mage.cards.c.Calciderm.class));
- cards.add(new SetCardInfo("Call the Skybreaker", 214, Rarity.RARE, mage.cards.c.CallTheSkybreaker.class));
- cards.add(new SetCardInfo("Carbonize", 122, Rarity.COMMON, mage.cards.c.Carbonize.class));
- cards.add(new SetCardInfo("Carrion Feeder", 84, Rarity.COMMON, mage.cards.c.CarrionFeeder.class));
- cards.add(new SetCardInfo("Centaur Chieftain", 160, Rarity.UNCOMMON, mage.cards.c.CentaurChieftain.class));
- cards.add(new SetCardInfo("Cephalid Sage", 41, Rarity.COMMON, mage.cards.c.CephalidSage.class));
- cards.add(new SetCardInfo("Chain Lightning", 123, Rarity.UNCOMMON, mage.cards.c.ChainLightning.class));
- cards.add(new SetCardInfo("Chrome Mox", 219, Rarity.MYTHIC, mage.cards.c.ChromeMox.class));
- cards.add(new SetCardInfo("Civic Wayfinder", 161, Rarity.COMMON, mage.cards.c.CivicWayfinder.class));
- cards.add(new SetCardInfo("Coalition Honor Guard", 6, Rarity.COMMON, mage.cards.c.CoalitionHonorGuard.class));
- cards.add(new SetCardInfo("Commune with the Gods", 162, Rarity.COMMON, mage.cards.c.CommuneWithTheGods.class));
- cards.add(new SetCardInfo("Control Magic", 42, Rarity.RARE, mage.cards.c.ControlMagic.class));
- cards.add(new SetCardInfo("Counterspell", 43, Rarity.COMMON, mage.cards.c.Counterspell.class));
- cards.add(new SetCardInfo("Crater Hellion", 124, Rarity.RARE, mage.cards.c.CraterHellion.class));
- cards.add(new SetCardInfo("Dack Fayden", 199, Rarity.MYTHIC, mage.cards.d.DackFayden.class));
- cards.add(new SetCardInfo("Daze", 44, Rarity.UNCOMMON, mage.cards.d.Daze.class));
- cards.add(new SetCardInfo("Deadbridge Shaman", 85, Rarity.COMMON, mage.cards.d.DeadbridgeShaman.class));
- cards.add(new SetCardInfo("Deathrite Shaman", 215, Rarity.RARE, mage.cards.d.DeathriteShaman.class));
- cards.add(new SetCardInfo("Deep Analysis", 45, Rarity.COMMON, mage.cards.d.DeepAnalysis.class));
- cards.add(new SetCardInfo("Desperate Ravings", 125, Rarity.COMMON, mage.cards.d.DesperateRavings.class));
- cards.add(new SetCardInfo("Diminishing Returns", 46, Rarity.RARE, mage.cards.d.DiminishingReturns.class));
- cards.add(new SetCardInfo("Dismal Backwater", 238, Rarity.COMMON, mage.cards.d.DismalBackwater.class));
- cards.add(new SetCardInfo("Dragon Egg", 126, Rarity.COMMON, mage.cards.d.DragonEgg.class));
- cards.add(new SetCardInfo("Dream Twist", 47, Rarity.COMMON, mage.cards.d.DreamTwist.class));
- cards.add(new SetCardInfo("Dualcaster Mage", 127, Rarity.RARE, mage.cards.d.DualcasterMage.class));
- cards.add(new SetCardInfo("Duplicant", 220, Rarity.RARE, mage.cards.d.Duplicant.class));
- cards.add(new SetCardInfo("Duress", 86, Rarity.COMMON, mage.cards.d.Duress.class));
- cards.add(new SetCardInfo("Eight-and-a-Half-Tails", 7, Rarity.RARE, mage.cards.e.EightAndAHalfTails.class));
- cards.add(new SetCardInfo("Elephant Guide", 163, Rarity.COMMON, mage.cards.e.ElephantGuide.class));
- cards.add(new SetCardInfo("Elite Vanguard", 8, Rarity.COMMON, mage.cards.e.EliteVanguard.class));
- cards.add(new SetCardInfo("Elvish Vanguard", 164, Rarity.COMMON, mage.cards.e.ElvishVanguard.class));
- cards.add(new SetCardInfo("Emmessi Tome", 221, Rarity.UNCOMMON, mage.cards.e.EmmessiTome.class));
- cards.add(new SetCardInfo("Emperor Crocodile", 165, Rarity.COMMON, mage.cards.e.EmperorCrocodile.class));
- cards.add(new SetCardInfo("Enlightened Tutor", 9, Rarity.RARE, mage.cards.e.EnlightenedTutor.class));
- cards.add(new SetCardInfo("Entomb", 87, Rarity.RARE, mage.cards.e.Entomb.class));
- cards.add(new SetCardInfo("Extract from Darkness", 200, Rarity.UNCOMMON, mage.cards.e.ExtractFromDarkness.class));
- cards.add(new SetCardInfo("Eyeblight's Ending", 88, Rarity.COMMON, mage.cards.e.EyeblightsEnding.class));
- cards.add(new SetCardInfo("Fact or Fiction", 48, Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class));
- cards.add(new SetCardInfo("Faithless Looting", 128, Rarity.COMMON, mage.cards.f.FaithlessLooting.class));
- cards.add(new SetCardInfo("Faith's Fetters", 10, Rarity.UNCOMMON, mage.cards.f.FaithsFetters.class));
- cards.add(new SetCardInfo("Fervent Cathar", 129, Rarity.COMMON, mage.cards.f.FerventCathar.class));
- cards.add(new SetCardInfo("Field of Souls", 11, Rarity.UNCOMMON, mage.cards.f.FieldOfSouls.class));
- cards.add(new SetCardInfo("Firebolt", 130, Rarity.COMMON, mage.cards.f.Firebolt.class));
- cards.add(new SetCardInfo("Flame Jab", 131, Rarity.UNCOMMON, mage.cards.f.FlameJab.class));
- cards.add(new SetCardInfo("Flame-Kin Zealot", 201, Rarity.UNCOMMON, mage.cards.f.FlameKinZealot.class));
- cards.add(new SetCardInfo("Flinthoof Boar", 166, Rarity.UNCOMMON, mage.cards.f.FlinthoofBoar.class));
- cards.add(new SetCardInfo("Fog", 167, Rarity.COMMON, mage.cards.f.Fog.class));
- cards.add(new SetCardInfo("Force of Will", 49, Rarity.MYTHIC, mage.cards.f.ForceOfWill.class));
- cards.add(new SetCardInfo("Future Sight", 50, Rarity.RARE, mage.cards.f.FutureSight.class));
- cards.add(new SetCardInfo("Gaea's Blessing", 168, Rarity.UNCOMMON, mage.cards.g.GaeasBlessing.class));
- cards.add(new SetCardInfo("Gamble", 132, Rarity.RARE, mage.cards.g.Gamble.class));
- cards.add(new SetCardInfo("Gaseous Form", 51, Rarity.COMMON, mage.cards.g.GaseousForm.class));
- cards.add(new SetCardInfo("Ghitu Slinger", 133, Rarity.UNCOMMON, mage.cards.g.GhituSlinger.class));
- cards.add(new SetCardInfo("Giant Solifuge", 216, Rarity.RARE, mage.cards.g.GiantSolifuge.class));
- cards.add(new SetCardInfo("Giant Tortoise", 52, Rarity.COMMON, mage.cards.g.GiantTortoise.class));
- cards.add(new SetCardInfo("Glacial Wall", 53, Rarity.COMMON, mage.cards.g.GlacialWall.class));
- cards.add(new SetCardInfo("Glare of Subdual", 202, Rarity.RARE, mage.cards.g.GlareOfSubdual.class));
- cards.add(new SetCardInfo("Glimmerpoint Stag", 12, Rarity.UNCOMMON, mage.cards.g.GlimmerpointStag.class));
- cards.add(new SetCardInfo("Goblin Charbelcher", 222, Rarity.RARE, mage.cards.g.GoblinCharbelcher.class));
- cards.add(new SetCardInfo("Goblin Trenches", 203, Rarity.RARE, mage.cards.g.GoblinTrenches.class));
- cards.add(new SetCardInfo("Gravedigger", 89, Rarity.COMMON, mage.cards.g.Gravedigger.class));
- cards.add(new SetCardInfo("Green Sun's Zenith", 169, Rarity.RARE, mage.cards.g.GreenSunsZenith.class));
- cards.add(new SetCardInfo("Harmonize", 170, Rarity.UNCOMMON, mage.cards.h.Harmonize.class));
- cards.add(new SetCardInfo("Havoc Demon", 90, Rarity.UNCOMMON, mage.cards.h.HavocDemon.class));
- cards.add(new SetCardInfo("Heritage Druid", 171, Rarity.RARE, mage.cards.h.HeritageDruid.class));
- cards.add(new SetCardInfo("Honden of Cleansing Fire", 13, Rarity.UNCOMMON, mage.cards.h.HondenOfCleansingFire.class));
- cards.add(new SetCardInfo("Honden of Infinite Rage", 134, Rarity.UNCOMMON, mage.cards.h.HondenOfInfiniteRage.class));
- cards.add(new SetCardInfo("Honden of Life's Web", 172, Rarity.UNCOMMON, mage.cards.h.HondenOfLifesWeb.class));
- cards.add(new SetCardInfo("Honden of Night's Reach", 91, Rarity.UNCOMMON, mage.cards.h.HondenOfNightsReach.class));
- cards.add(new SetCardInfo("Honden of Seeing Winds", 54, Rarity.UNCOMMON, mage.cards.h.HondenOfSeeingWinds.class));
- cards.add(new SetCardInfo("Humble", 14, Rarity.COMMON, mage.cards.h.Humble.class));
- cards.add(new SetCardInfo("Hydroblast", 55, Rarity.UNCOMMON, mage.cards.h.Hydroblast.class));
- cards.add(new SetCardInfo("Hymn to Tourach", 92, Rarity.UNCOMMON, HymnToTourach.class));
- cards.add(new SetCardInfo("Ichorid", 93, Rarity.RARE, mage.cards.i.Ichorid.class));
- cards.add(new SetCardInfo("Imperious Perfect", 173, Rarity.RARE, mage.cards.i.ImperiousPerfect.class));
- cards.add(new SetCardInfo("Inkwell Leviathan", 56, Rarity.RARE, mage.cards.i.InkwellLeviathan.class));
- cards.add(new SetCardInfo("Innocent Blood", 94, Rarity.COMMON, mage.cards.i.InnocentBlood.class));
- cards.add(new SetCardInfo("Intangible Virtue", 15, Rarity.UNCOMMON, mage.cards.i.IntangibleVirtue.class));
- cards.add(new SetCardInfo("Invigorate", 174, Rarity.UNCOMMON, mage.cards.i.Invigorate.class));
- cards.add(new SetCardInfo("Isochron Scepter", 223, Rarity.RARE, mage.cards.i.IsochronScepter.class));
- cards.add(new SetCardInfo("Jace, the Mind Sculptor", 57, Rarity.MYTHIC, mage.cards.j.JaceTheMindSculptor.class));
- cards.add(new SetCardInfo("Jareth, Leonine Titan", 16, Rarity.RARE, mage.cards.j.JarethLeonineTitan.class));
- cards.add(new SetCardInfo("Jetting Glasskite", 58, Rarity.UNCOMMON, mage.cards.j.JettingGlasskite.class));
- cards.add(new SetCardInfo("Juggernaut", 224, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
- cards.add(new SetCardInfo("Jungle Hollow", 239, Rarity.COMMON, mage.cards.j.JungleHollow.class));
- cards.add(new SetCardInfo("Karakas", 240, Rarity.MYTHIC, mage.cards.k.Karakas.class));
- cards.add(new SetCardInfo("Karmic Guide", 17, Rarity.RARE, mage.cards.k.KarmicGuide.class));
- cards.add(new SetCardInfo("Keldon Champion", 135, Rarity.UNCOMMON, mage.cards.k.KeldonChampion.class));
- cards.add(new SetCardInfo("Keldon Marauders", 136, Rarity.COMMON, mage.cards.k.KeldonMarauders.class));
- cards.add(new SetCardInfo("Kird Ape", 137, Rarity.COMMON, mage.cards.k.KirdApe.class));
- cards.add(new SetCardInfo("Kor Hookmaster", 18, Rarity.COMMON, mage.cards.k.KorHookmaster.class));
- cards.add(new SetCardInfo("Llanowar Elves", 175, Rarity.COMMON, mage.cards.l.LlanowarElves.class));
- cards.add(new SetCardInfo("Lys Alana Huntmaster", 176, Rarity.COMMON, mage.cards.l.LysAlanaHuntmaster.class));
- cards.add(new SetCardInfo("Lys Alana Scarblade", 95, Rarity.UNCOMMON, mage.cards.l.LysAlanaScarblade.class));
- cards.add(new SetCardInfo("Maelstrom Wanderer", 204, Rarity.MYTHIC, mage.cards.m.MaelstromWanderer.class));
- cards.add(new SetCardInfo("Malicious Affliction", 96, Rarity.RARE, mage.cards.m.MaliciousAffliction.class));
- cards.add(new SetCardInfo("Mana Crypt", 225, Rarity.MYTHIC, mage.cards.m.ManaCrypt.class));
- cards.add(new SetCardInfo("Man-o'-War", 59, Rarity.COMMON, mage.cards.m.ManOWar.class));
- cards.add(new SetCardInfo("Maze of Ith", 241, Rarity.RARE, mage.cards.m.MazeOfIth.class));
- cards.add(new SetCardInfo("Memory Lapse", 60, Rarity.COMMON, mage.cards.m.MemoryLapse.class));
- cards.add(new SetCardInfo("Merfolk Looter", 61, Rarity.UNCOMMON, mage.cards.m.MerfolkLooter.class));
- cards.add(new SetCardInfo("Mesa Enchantress", 19, Rarity.UNCOMMON, mage.cards.m.MesaEnchantress.class));
- cards.add(new SetCardInfo("Millikin", 226, Rarity.UNCOMMON, mage.cards.m.Millikin.class));
- cards.add(new SetCardInfo("Mindless Automaton", 227, Rarity.UNCOMMON, mage.cards.m.MindlessAutomaton.class));
- cards.add(new SetCardInfo("Mishra's Factory", 242, Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class));
- cards.add(new SetCardInfo("Mistral Charger", 20, Rarity.COMMON, mage.cards.m.MistralCharger.class));
- cards.add(new SetCardInfo("Mogg Fanatic", 138, Rarity.COMMON, mage.cards.m.MoggFanatic.class));
- cards.add(new SetCardInfo("Mogg War Marshal", 139, Rarity.COMMON, mage.cards.m.MoggWarMarshal.class));
- cards.add(new SetCardInfo("Monk Idealist", 21, Rarity.COMMON, mage.cards.m.MonkIdealist.class));
- cards.add(new SetCardInfo("Mother of Runes", 22, Rarity.RARE, mage.cards.m.MotherOfRunes.class));
- cards.add(new SetCardInfo("Mystical Tutor", 62, Rarity.RARE, mage.cards.m.MysticalTutor.class));
- cards.add(new SetCardInfo("Natural Order", 177, Rarity.MYTHIC, mage.cards.n.NaturalOrder.class));
- cards.add(new SetCardInfo("Nature's Claim", 178, Rarity.COMMON, mage.cards.n.NaturesClaim.class));
- cards.add(new SetCardInfo("Nausea", 97, Rarity.COMMON, mage.cards.n.Nausea.class));
- cards.add(new SetCardInfo("Necropotence", 98, Rarity.MYTHIC, mage.cards.n.Necropotence.class));
- cards.add(new SetCardInfo("Nekrataal", 99, Rarity.UNCOMMON, mage.cards.n.Nekrataal.class));
- cards.add(new SetCardInfo("Nevinyrral's Disk", 228, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class));
- cards.add(new SetCardInfo("Night's Whisper", 100, Rarity.COMMON, mage.cards.n.NightsWhisper.class));
- cards.add(new SetCardInfo("Nimble Mongoose", 179, Rarity.COMMON, mage.cards.n.NimbleMongoose.class));
- cards.add(new SetCardInfo("Oona's Grace", 63, Rarity.COMMON, mage.cards.o.OonasGrace.class));
- cards.add(new SetCardInfo("Orcish Oriflamme", 140, Rarity.COMMON, mage.cards.o.OrcishOriflamme.class));
- cards.add(new SetCardInfo("Pacifism", 23, Rarity.COMMON, mage.cards.p.Pacifism.class));
- cards.add(new SetCardInfo("Peregrine Drake", 64, Rarity.COMMON, mage.cards.p.PeregrineDrake.class));
- cards.add(new SetCardInfo("Phantom Monster", 65, Rarity.COMMON, mage.cards.p.PhantomMonster.class));
- cards.add(new SetCardInfo("Phyrexian Gargantua", 101, Rarity.UNCOMMON, mage.cards.p.PhyrexianGargantua.class));
- cards.add(new SetCardInfo("Phyrexian Ingester", 66, Rarity.UNCOMMON, mage.cards.p.PhyrexianIngester.class));
- cards.add(new SetCardInfo("Phyrexian Rager", 102, Rarity.COMMON, mage.cards.p.PhyrexianRager.class));
- cards.add(new SetCardInfo("Pilgrim's Eye", 229, Rarity.COMMON, mage.cards.p.PilgrimsEye.class));
- cards.add(new SetCardInfo("Plague Witch", 103, Rarity.COMMON, mage.cards.p.PlagueWitch.class));
- cards.add(new SetCardInfo("Price of Progress", 141, Rarity.UNCOMMON, mage.cards.p.PriceOfProgress.class));
- cards.add(new SetCardInfo("Prismatic Lens", 230, Rarity.UNCOMMON, mage.cards.p.PrismaticLens.class));
- cards.add(new SetCardInfo("Prodigal Sorcerer", 67, Rarity.UNCOMMON, mage.cards.p.ProdigalSorcerer.class));
- cards.add(new SetCardInfo("Prowling Pangolin", 104, Rarity.COMMON, mage.cards.p.ProwlingPangolin.class));
- cards.add(new SetCardInfo("Pyroblast", 142, Rarity.UNCOMMON, mage.cards.p.Pyroblast.class));
- cards.add(new SetCardInfo("Pyrokinesis", 143, Rarity.RARE, mage.cards.p.Pyrokinesis.class));
- cards.add(new SetCardInfo("Quiet Speculation", 68, Rarity.UNCOMMON, mage.cards.q.QuietSpeculation.class));
- cards.add(new SetCardInfo("Raise the Alarm", 24, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class));
- cards.add(new SetCardInfo("Rally the Peasants", 25, Rarity.COMMON, mage.cards.r.RallyThePeasants.class));
- cards.add(new SetCardInfo("Rancor", 180, Rarity.UNCOMMON, mage.cards.r.Rancor.class));
- cards.add(new SetCardInfo("Reckless Charge", 144, Rarity.COMMON, mage.cards.r.RecklessCharge.class));
- cards.add(new SetCardInfo("Regal Force", 181, Rarity.RARE, mage.cards.r.RegalForce.class));
- cards.add(new SetCardInfo("Relic of Progenitus", 231, Rarity.UNCOMMON, mage.cards.r.RelicOfProgenitus.class));
- cards.add(new SetCardInfo("Roar of the Wurm", 182, Rarity.UNCOMMON, mage.cards.r.RoarOfTheWurm.class));
- cards.add(new SetCardInfo("Roots", 183, Rarity.COMMON, mage.cards.r.Roots.class));
- cards.add(new SetCardInfo("Rorix Bladewing", 145, Rarity.RARE, mage.cards.r.RorixBladewing.class));
- cards.add(new SetCardInfo("Rugged Highlands", 243, Rarity.COMMON, mage.cards.r.RuggedHighlands.class));
- cards.add(new SetCardInfo("Scoured Barrens", 244, Rarity.COMMON, mage.cards.s.ScouredBarrens.class));
- cards.add(new SetCardInfo("Screeching Skaab", 69, Rarity.COMMON, mage.cards.s.ScreechingSkaab.class));
- cards.add(new SetCardInfo("Seal of Cleansing", 26, Rarity.COMMON, mage.cards.s.SealOfCleansing.class));
- cards.add(new SetCardInfo("Seal of Strength", 184, Rarity.COMMON, mage.cards.s.SealOfStrength.class));
- cards.add(new SetCardInfo("Second Thoughts", 27, Rarity.COMMON, mage.cards.s.SecondThoughts.class));
- cards.add(new SetCardInfo("Seismic Stomp", 146, Rarity.COMMON, mage.cards.s.SeismicStomp.class));
- cards.add(new SetCardInfo("Sengir Autocrat", 105, Rarity.UNCOMMON, mage.cards.s.SengirAutocrat.class));
- cards.add(new SetCardInfo("Sensei's Divining Top", 232, Rarity.RARE, mage.cards.s.SenseisDiviningTop.class));
- cards.add(new SetCardInfo("Sentinel Spider", 185, Rarity.COMMON, mage.cards.s.SentinelSpider.class));
- cards.add(new SetCardInfo("Serendib Efreet", 70, Rarity.RARE, mage.cards.s.SerendibEfreet.class));
- cards.add(new SetCardInfo("Serra Angel", 28, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class));
- cards.add(new SetCardInfo("Shaman of the Pack", 205, Rarity.UNCOMMON, mage.cards.s.ShamanOfThePack.class));
- cards.add(new SetCardInfo("Shardless Agent", 206, Rarity.RARE, mage.cards.s.ShardlessAgent.class));
- cards.add(new SetCardInfo("Shelter", 29, Rarity.COMMON, mage.cards.s.Shelter.class));
- cards.add(new SetCardInfo("Shoreline Ranger", 71, Rarity.COMMON, mage.cards.s.ShorelineRanger.class));
- cards.add(new SetCardInfo("Siege-Gang Commander", 147, Rarity.RARE, mage.cards.s.SiegeGangCommander.class));
- cards.add(new SetCardInfo("Silent Departure", 72, Rarity.COMMON, mage.cards.s.SilentDeparture.class));
- cards.add(new SetCardInfo("Silvos, Rogue Elemental", 186, Rarity.RARE, mage.cards.s.SilvosRogueElemental.class));
- cards.add(new SetCardInfo("Sinkhole", 106, Rarity.RARE, mage.cards.s.Sinkhole.class));
- cards.add(new SetCardInfo("Skulking Ghost", 107, Rarity.COMMON, mage.cards.s.SkulkingGhost.class));
- cards.add(new SetCardInfo("Sneak Attack", 148, Rarity.MYTHIC, mage.cards.s.SneakAttack.class));
- cards.add(new SetCardInfo("Soulcatcher", 30, Rarity.UNCOMMON, mage.cards.s.Soulcatcher.class));
- cards.add(new SetCardInfo("Sphinx of the Steel Wind", 207, Rarity.MYTHIC, mage.cards.s.SphinxOfTheSteelWind.class));
- cards.add(new SetCardInfo("Sprite Noble", 73, Rarity.UNCOMMON, mage.cards.s.SpriteNoble.class));
- cards.add(new SetCardInfo("Squadron Hawk", 31, Rarity.COMMON, mage.cards.s.SquadronHawk.class));
- cards.add(new SetCardInfo("Stingscourger", 149, Rarity.COMMON, mage.cards.s.Stingscourger.class));
- cards.add(new SetCardInfo("Stupefying Touch", 74, Rarity.COMMON, mage.cards.s.StupefyingTouch.class));
- cards.add(new SetCardInfo("Sulfuric Vortex", 150, Rarity.RARE, mage.cards.s.SulfuricVortex.class));
- cards.add(new SetCardInfo("Swiftwater Cliffs", 245, Rarity.COMMON, mage.cards.s.SwiftwaterCliffs.class));
- cards.add(new SetCardInfo("Swords to Plowshares", 32, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
- cards.add(new SetCardInfo("Sylvan Library", 187, Rarity.RARE, mage.cards.s.SylvanLibrary.class));
- cards.add(new SetCardInfo("Sylvan Might", 188, Rarity.COMMON, mage.cards.s.SylvanMight.class));
- cards.add(new SetCardInfo("Thornweald Archer", 189, Rarity.COMMON, mage.cards.t.ThornwealdArcher.class));
- cards.add(new SetCardInfo("Thornwood Falls", 246, Rarity.COMMON, mage.cards.t.ThornwoodFalls.class));
- cards.add(new SetCardInfo("Thunderclap Wyvern", 208, Rarity.UNCOMMON, mage.cards.t.ThunderclapWyvern.class));
- cards.add(new SetCardInfo("Ticking Gnomes", 233, Rarity.UNCOMMON, mage.cards.t.TickingGnomes.class));
- cards.add(new SetCardInfo("Tidal Wave", 75, Rarity.COMMON, mage.cards.t.TidalWave.class));
- cards.add(new SetCardInfo("Timberwatch Elf", 190, Rarity.UNCOMMON, mage.cards.t.TimberwatchElf.class));
- cards.add(new SetCardInfo("Tooth and Claw", 151, Rarity.UNCOMMON, mage.cards.t.ToothAndClaw.class));
- cards.add(new SetCardInfo("Torrent of Souls", 217, Rarity.UNCOMMON, mage.cards.t.TorrentOfSouls.class));
- cards.add(new SetCardInfo("Toxic Deluge", 108, Rarity.RARE, mage.cards.t.ToxicDeluge.class));
- cards.add(new SetCardInfo("Tragic Slip", 109, Rarity.COMMON, mage.cards.t.TragicSlip.class));
- cards.add(new SetCardInfo("Tranquil Cove", 247, Rarity.COMMON, mage.cards.t.TranquilCove.class));
- cards.add(new SetCardInfo("Trygon Predator", 209, Rarity.UNCOMMON, mage.cards.t.TrygonPredator.class));
- cards.add(new SetCardInfo("Twisted Abomination", 110, Rarity.COMMON, mage.cards.t.TwistedAbomination.class));
- cards.add(new SetCardInfo("Undying Rage", 152, Rarity.COMMON, mage.cards.u.UndyingRage.class));
- cards.add(new SetCardInfo("Unexpectedly Absent", 33, Rarity.RARE, mage.cards.u.UnexpectedlyAbsent.class));
- cards.add(new SetCardInfo("Urborg Uprising", 111, Rarity.COMMON, mage.cards.u.UrborgUprising.class));
- cards.add(new SetCardInfo("Vampiric Tutor", 112, Rarity.MYTHIC, mage.cards.v.VampiricTutor.class));
- cards.add(new SetCardInfo("Victimize", 113, Rarity.UNCOMMON, mage.cards.v.Victimize.class));
- cards.add(new SetCardInfo("Vindicate", 210, Rarity.RARE, mage.cards.v.Vindicate.class));
- cards.add(new SetCardInfo("Visara the Dreadful", 114, Rarity.RARE, mage.cards.v.VisaraTheDreadful.class));
- cards.add(new SetCardInfo("Void", 211, Rarity.RARE, mage.cards.v.Void.class));
- cards.add(new SetCardInfo("Wakedancer", 116, Rarity.COMMON, mage.cards.w.Wakedancer.class));
- cards.add(new SetCardInfo("Wake of Vultures", 115, Rarity.COMMON, mage.cards.w.WakeOfVultures.class));
- cards.add(new SetCardInfo("Wall of Omens", 34, Rarity.UNCOMMON, mage.cards.w.WallOfOmens.class));
- cards.add(new SetCardInfo("Warden of Evos Isle", 76, Rarity.COMMON, mage.cards.w.WardenOfEvosIsle.class));
- cards.add(new SetCardInfo("War Priest of Thune", 35, Rarity.UNCOMMON, mage.cards.w.WarPriestOfThune.class));
- cards.add(new SetCardInfo("Wasteland", 248, Rarity.RARE, mage.cards.w.Wasteland.class));
- cards.add(new SetCardInfo("Wee Dragonauts", 212, Rarity.UNCOMMON, mage.cards.w.WeeDragonauts.class));
- cards.add(new SetCardInfo("Welkin Guide", 36, Rarity.COMMON, mage.cards.w.WelkinGuide.class));
- cards.add(new SetCardInfo("Werebear", 191, Rarity.COMMON, mage.cards.w.Werebear.class));
- cards.add(new SetCardInfo("Whitemane Lion", 37, Rarity.COMMON, mage.cards.w.WhitemaneLion.class));
- cards.add(new SetCardInfo("Wildfire Emissary", 153, Rarity.COMMON, mage.cards.w.WildfireEmissary.class));
- cards.add(new SetCardInfo("Wind-Scarred Crag", 249, Rarity.COMMON, mage.cards.w.WindScarredCrag.class));
- cards.add(new SetCardInfo("Winter Orb", 234, Rarity.RARE, mage.cards.w.WinterOrb.class));
- cards.add(new SetCardInfo("Wirewood Symbiote", 192, Rarity.UNCOMMON, mage.cards.w.WirewoodSymbiote.class));
- cards.add(new SetCardInfo("Wonder", 77, Rarity.UNCOMMON, mage.cards.w.Wonder.class));
- cards.add(new SetCardInfo("Worldgorger Dragon", 154, Rarity.MYTHIC, mage.cards.w.WorldgorgerDragon.class));
- cards.add(new SetCardInfo("Worn Powerstone", 235, Rarity.UNCOMMON, mage.cards.w.WornPowerstone.class));
- cards.add(new SetCardInfo("Wrath of God", 38, Rarity.RARE, mage.cards.w.WrathOfGod.class));
- cards.add(new SetCardInfo("Xantid Swarm", 193, Rarity.RARE, mage.cards.x.XantidSwarm.class));
- cards.add(new SetCardInfo("Yavimaya Enchantress", 194, Rarity.COMMON, mage.cards.y.YavimayaEnchantress.class));
- cards.add(new SetCardInfo("Young Pyromancer", 155, Rarity.UNCOMMON, mage.cards.y.YoungPyromancer.class));
- cards.add(new SetCardInfo("Zealous Persecution", 213, Rarity.UNCOMMON, mage.cards.z.ZealousPersecution.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.cards.h.HymnToTourach;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author fireshoes
+ */
+public final class EternalMasters extends ExpansionSet {
+
+ private static final EternalMasters instance = new EternalMasters();
+
+ public static EternalMasters getInstance() {
+ return instance;
+ }
+
+ private EternalMasters() {
+ super("Eternal Masters", "EMA", ExpansionSet.buildDate(2016, 6, 10), SetType.SUPPLEMENTAL);
+ this.blockName = "Reprint";
+ 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("Abundant Growth", 156, Rarity.COMMON, mage.cards.a.AbundantGrowth.class));
+ cards.add(new SetCardInfo("Ancestral Mask", 157, Rarity.UNCOMMON, mage.cards.a.AncestralMask.class));
+ cards.add(new SetCardInfo("Animate Dead", 78, Rarity.UNCOMMON, mage.cards.a.AnimateDead.class));
+ cards.add(new SetCardInfo("Annihilate", 79, Rarity.UNCOMMON, mage.cards.a.Annihilate.class));
+ cards.add(new SetCardInfo("Arcanis the Omnipotent", 39, Rarity.RARE, mage.cards.a.ArcanisTheOmnipotent.class));
+ cards.add(new SetCardInfo("Argothian Enchantress", 158, Rarity.MYTHIC, mage.cards.a.ArgothianEnchantress.class));
+ cards.add(new SetCardInfo("Armadillo Cloak", 195, Rarity.UNCOMMON, mage.cards.a.ArmadilloCloak.class));
+ cards.add(new SetCardInfo("Ashnod's Altar", 218, Rarity.UNCOMMON, mage.cards.a.AshnodsAltar.class));
+ cards.add(new SetCardInfo("Avarax", 117, Rarity.COMMON, mage.cards.a.Avarax.class));
+ cards.add(new SetCardInfo("Aven Riftwatcher", 1, Rarity.COMMON, mage.cards.a.AvenRiftwatcher.class));
+ cards.add(new SetCardInfo("Balance", 2, Rarity.MYTHIC, mage.cards.b.Balance.class));
+ cards.add(new SetCardInfo("Baleful Strix", 196, Rarity.RARE, mage.cards.b.BalefulStrix.class));
+ cards.add(new SetCardInfo("Ballynock Cohort", 3, Rarity.COMMON, mage.cards.b.BallynockCohort.class));
+ cards.add(new SetCardInfo("Battle Squadron", 118, Rarity.UNCOMMON, mage.cards.b.BattleSquadron.class));
+ cards.add(new SetCardInfo("Beetleback Chief", 119, Rarity.UNCOMMON, mage.cards.b.BeetlebackChief.class));
+ cards.add(new SetCardInfo("Benevolent Bodyguard", 4, Rarity.COMMON, mage.cards.b.BenevolentBodyguard.class));
+ cards.add(new SetCardInfo("Blightsoil Druid", 80, Rarity.COMMON, mage.cards.b.BlightsoilDruid.class));
+ cards.add(new SetCardInfo("Blood Artist", 81, Rarity.UNCOMMON, mage.cards.b.BloodArtist.class));
+ cards.add(new SetCardInfo("Bloodbraid Elf", 197, Rarity.UNCOMMON, mage.cards.b.BloodbraidElf.class));
+ cards.add(new SetCardInfo("Bloodfell Caves", 236, Rarity.COMMON, mage.cards.b.BloodfellCaves.class));
+ cards.add(new SetCardInfo("Blossoming Sands", 237, Rarity.COMMON, mage.cards.b.BlossomingSands.class));
+ cards.add(new SetCardInfo("Borderland Marauder", 120, Rarity.COMMON, mage.cards.b.BorderlandMarauder.class));
+ cards.add(new SetCardInfo("Brago, King Eternal", 198, Rarity.RARE, mage.cards.b.BragoKingEternal.class));
+ cards.add(new SetCardInfo("Braids, Cabal Minion", 82, Rarity.RARE, mage.cards.b.BraidsCabalMinion.class));
+ cards.add(new SetCardInfo("Brainstorm", 40, Rarity.UNCOMMON, mage.cards.b.Brainstorm.class));
+ cards.add(new SetCardInfo("Brawn", 159, Rarity.UNCOMMON, mage.cards.b.Brawn.class));
+ cards.add(new SetCardInfo("Burning Vengeance", 121, Rarity.UNCOMMON, mage.cards.b.BurningVengeance.class));
+ cards.add(new SetCardInfo("Cabal Therapy", 83, Rarity.UNCOMMON, mage.cards.c.CabalTherapy.class));
+ cards.add(new SetCardInfo("Calciderm", 5, Rarity.UNCOMMON, mage.cards.c.Calciderm.class));
+ cards.add(new SetCardInfo("Call the Skybreaker", 214, Rarity.RARE, mage.cards.c.CallTheSkybreaker.class));
+ cards.add(new SetCardInfo("Carbonize", 122, Rarity.COMMON, mage.cards.c.Carbonize.class));
+ cards.add(new SetCardInfo("Carrion Feeder", 84, Rarity.COMMON, mage.cards.c.CarrionFeeder.class));
+ cards.add(new SetCardInfo("Centaur Chieftain", 160, Rarity.UNCOMMON, mage.cards.c.CentaurChieftain.class));
+ cards.add(new SetCardInfo("Cephalid Sage", 41, Rarity.COMMON, mage.cards.c.CephalidSage.class));
+ cards.add(new SetCardInfo("Chain Lightning", 123, Rarity.UNCOMMON, mage.cards.c.ChainLightning.class));
+ cards.add(new SetCardInfo("Chrome Mox", 219, Rarity.MYTHIC, mage.cards.c.ChromeMox.class));
+ cards.add(new SetCardInfo("Civic Wayfinder", 161, Rarity.COMMON, mage.cards.c.CivicWayfinder.class));
+ cards.add(new SetCardInfo("Coalition Honor Guard", 6, Rarity.COMMON, mage.cards.c.CoalitionHonorGuard.class));
+ cards.add(new SetCardInfo("Commune with the Gods", 162, Rarity.COMMON, mage.cards.c.CommuneWithTheGods.class));
+ cards.add(new SetCardInfo("Control Magic", 42, Rarity.RARE, mage.cards.c.ControlMagic.class));
+ cards.add(new SetCardInfo("Counterspell", 43, Rarity.COMMON, mage.cards.c.Counterspell.class));
+ cards.add(new SetCardInfo("Crater Hellion", 124, Rarity.RARE, mage.cards.c.CraterHellion.class));
+ cards.add(new SetCardInfo("Dack Fayden", 199, Rarity.MYTHIC, mage.cards.d.DackFayden.class));
+ cards.add(new SetCardInfo("Daze", 44, Rarity.UNCOMMON, mage.cards.d.Daze.class));
+ cards.add(new SetCardInfo("Deadbridge Shaman", 85, Rarity.COMMON, mage.cards.d.DeadbridgeShaman.class));
+ cards.add(new SetCardInfo("Deathrite Shaman", 215, Rarity.RARE, mage.cards.d.DeathriteShaman.class));
+ cards.add(new SetCardInfo("Deep Analysis", 45, Rarity.COMMON, mage.cards.d.DeepAnalysis.class));
+ cards.add(new SetCardInfo("Desperate Ravings", 125, Rarity.COMMON, mage.cards.d.DesperateRavings.class));
+ cards.add(new SetCardInfo("Diminishing Returns", 46, Rarity.RARE, mage.cards.d.DiminishingReturns.class));
+ cards.add(new SetCardInfo("Dismal Backwater", 238, Rarity.COMMON, mage.cards.d.DismalBackwater.class));
+ cards.add(new SetCardInfo("Dragon Egg", 126, Rarity.COMMON, mage.cards.d.DragonEgg.class));
+ cards.add(new SetCardInfo("Dream Twist", 47, Rarity.COMMON, mage.cards.d.DreamTwist.class));
+ cards.add(new SetCardInfo("Dualcaster Mage", 127, Rarity.RARE, mage.cards.d.DualcasterMage.class));
+ cards.add(new SetCardInfo("Duplicant", 220, Rarity.RARE, mage.cards.d.Duplicant.class));
+ cards.add(new SetCardInfo("Duress", 86, Rarity.COMMON, mage.cards.d.Duress.class));
+ cards.add(new SetCardInfo("Eight-and-a-Half-Tails", 7, Rarity.RARE, mage.cards.e.EightAndAHalfTails.class));
+ cards.add(new SetCardInfo("Elephant Guide", 163, Rarity.COMMON, mage.cards.e.ElephantGuide.class));
+ cards.add(new SetCardInfo("Elite Vanguard", 8, Rarity.COMMON, mage.cards.e.EliteVanguard.class));
+ cards.add(new SetCardInfo("Elvish Vanguard", 164, Rarity.COMMON, mage.cards.e.ElvishVanguard.class));
+ cards.add(new SetCardInfo("Emmessi Tome", 221, Rarity.UNCOMMON, mage.cards.e.EmmessiTome.class));
+ cards.add(new SetCardInfo("Emperor Crocodile", 165, Rarity.COMMON, mage.cards.e.EmperorCrocodile.class));
+ cards.add(new SetCardInfo("Enlightened Tutor", 9, Rarity.RARE, mage.cards.e.EnlightenedTutor.class));
+ cards.add(new SetCardInfo("Entomb", 87, Rarity.RARE, mage.cards.e.Entomb.class));
+ cards.add(new SetCardInfo("Extract from Darkness", 200, Rarity.UNCOMMON, mage.cards.e.ExtractFromDarkness.class));
+ cards.add(new SetCardInfo("Eyeblight's Ending", 88, Rarity.COMMON, mage.cards.e.EyeblightsEnding.class));
+ cards.add(new SetCardInfo("Fact or Fiction", 48, Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class));
+ cards.add(new SetCardInfo("Faithless Looting", 128, Rarity.COMMON, mage.cards.f.FaithlessLooting.class));
+ cards.add(new SetCardInfo("Faith's Fetters", 10, Rarity.UNCOMMON, mage.cards.f.FaithsFetters.class));
+ cards.add(new SetCardInfo("Fervent Cathar", 129, Rarity.COMMON, mage.cards.f.FerventCathar.class));
+ cards.add(new SetCardInfo("Field of Souls", 11, Rarity.UNCOMMON, mage.cards.f.FieldOfSouls.class));
+ cards.add(new SetCardInfo("Firebolt", 130, Rarity.COMMON, mage.cards.f.Firebolt.class));
+ cards.add(new SetCardInfo("Flame Jab", 131, Rarity.UNCOMMON, mage.cards.f.FlameJab.class));
+ cards.add(new SetCardInfo("Flame-Kin Zealot", 201, Rarity.UNCOMMON, mage.cards.f.FlameKinZealot.class));
+ cards.add(new SetCardInfo("Flinthoof Boar", 166, Rarity.UNCOMMON, mage.cards.f.FlinthoofBoar.class));
+ cards.add(new SetCardInfo("Fog", 167, Rarity.COMMON, mage.cards.f.Fog.class));
+ cards.add(new SetCardInfo("Force of Will", 49, Rarity.MYTHIC, mage.cards.f.ForceOfWill.class));
+ cards.add(new SetCardInfo("Future Sight", 50, Rarity.RARE, mage.cards.f.FutureSight.class));
+ cards.add(new SetCardInfo("Gaea's Blessing", 168, Rarity.UNCOMMON, mage.cards.g.GaeasBlessing.class));
+ cards.add(new SetCardInfo("Gamble", 132, Rarity.RARE, mage.cards.g.Gamble.class));
+ cards.add(new SetCardInfo("Gaseous Form", 51, Rarity.COMMON, mage.cards.g.GaseousForm.class));
+ cards.add(new SetCardInfo("Ghitu Slinger", 133, Rarity.UNCOMMON, mage.cards.g.GhituSlinger.class));
+ cards.add(new SetCardInfo("Giant Solifuge", 216, Rarity.RARE, mage.cards.g.GiantSolifuge.class));
+ cards.add(new SetCardInfo("Giant Tortoise", 52, Rarity.COMMON, mage.cards.g.GiantTortoise.class));
+ cards.add(new SetCardInfo("Glacial Wall", 53, Rarity.COMMON, mage.cards.g.GlacialWall.class));
+ cards.add(new SetCardInfo("Glare of Subdual", 202, Rarity.RARE, mage.cards.g.GlareOfSubdual.class));
+ cards.add(new SetCardInfo("Glimmerpoint Stag", 12, Rarity.UNCOMMON, mage.cards.g.GlimmerpointStag.class));
+ cards.add(new SetCardInfo("Goblin Charbelcher", 222, Rarity.RARE, mage.cards.g.GoblinCharbelcher.class));
+ cards.add(new SetCardInfo("Goblin Trenches", 203, Rarity.RARE, mage.cards.g.GoblinTrenches.class));
+ cards.add(new SetCardInfo("Gravedigger", 89, Rarity.COMMON, mage.cards.g.Gravedigger.class));
+ cards.add(new SetCardInfo("Green Sun's Zenith", 169, Rarity.RARE, mage.cards.g.GreenSunsZenith.class));
+ cards.add(new SetCardInfo("Harmonize", 170, Rarity.UNCOMMON, mage.cards.h.Harmonize.class));
+ cards.add(new SetCardInfo("Havoc Demon", 90, Rarity.UNCOMMON, mage.cards.h.HavocDemon.class));
+ cards.add(new SetCardInfo("Heritage Druid", 171, Rarity.RARE, mage.cards.h.HeritageDruid.class));
+ cards.add(new SetCardInfo("Honden of Cleansing Fire", 13, Rarity.UNCOMMON, mage.cards.h.HondenOfCleansingFire.class));
+ cards.add(new SetCardInfo("Honden of Infinite Rage", 134, Rarity.UNCOMMON, mage.cards.h.HondenOfInfiniteRage.class));
+ cards.add(new SetCardInfo("Honden of Life's Web", 172, Rarity.UNCOMMON, mage.cards.h.HondenOfLifesWeb.class));
+ cards.add(new SetCardInfo("Honden of Night's Reach", 91, Rarity.UNCOMMON, mage.cards.h.HondenOfNightsReach.class));
+ cards.add(new SetCardInfo("Honden of Seeing Winds", 54, Rarity.UNCOMMON, mage.cards.h.HondenOfSeeingWinds.class));
+ cards.add(new SetCardInfo("Humble", 14, Rarity.COMMON, mage.cards.h.Humble.class));
+ cards.add(new SetCardInfo("Hydroblast", 55, Rarity.UNCOMMON, mage.cards.h.Hydroblast.class));
+ cards.add(new SetCardInfo("Hymn to Tourach", 92, Rarity.UNCOMMON, HymnToTourach.class));
+ cards.add(new SetCardInfo("Ichorid", 93, Rarity.RARE, mage.cards.i.Ichorid.class));
+ cards.add(new SetCardInfo("Imperious Perfect", 173, Rarity.RARE, mage.cards.i.ImperiousPerfect.class));
+ cards.add(new SetCardInfo("Inkwell Leviathan", 56, Rarity.RARE, mage.cards.i.InkwellLeviathan.class));
+ cards.add(new SetCardInfo("Innocent Blood", 94, Rarity.COMMON, mage.cards.i.InnocentBlood.class));
+ cards.add(new SetCardInfo("Intangible Virtue", 15, Rarity.UNCOMMON, mage.cards.i.IntangibleVirtue.class));
+ cards.add(new SetCardInfo("Invigorate", 174, Rarity.UNCOMMON, mage.cards.i.Invigorate.class));
+ cards.add(new SetCardInfo("Isochron Scepter", 223, Rarity.RARE, mage.cards.i.IsochronScepter.class));
+ cards.add(new SetCardInfo("Jace, the Mind Sculptor", 57, Rarity.MYTHIC, mage.cards.j.JaceTheMindSculptor.class));
+ cards.add(new SetCardInfo("Jareth, Leonine Titan", 16, Rarity.RARE, mage.cards.j.JarethLeonineTitan.class));
+ cards.add(new SetCardInfo("Jetting Glasskite", 58, Rarity.UNCOMMON, mage.cards.j.JettingGlasskite.class));
+ cards.add(new SetCardInfo("Juggernaut", 224, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
+ cards.add(new SetCardInfo("Jungle Hollow", 239, Rarity.COMMON, mage.cards.j.JungleHollow.class));
+ cards.add(new SetCardInfo("Karakas", 240, Rarity.MYTHIC, mage.cards.k.Karakas.class));
+ cards.add(new SetCardInfo("Karmic Guide", 17, Rarity.RARE, mage.cards.k.KarmicGuide.class));
+ cards.add(new SetCardInfo("Keldon Champion", 135, Rarity.UNCOMMON, mage.cards.k.KeldonChampion.class));
+ cards.add(new SetCardInfo("Keldon Marauders", 136, Rarity.COMMON, mage.cards.k.KeldonMarauders.class));
+ cards.add(new SetCardInfo("Kird Ape", 137, Rarity.COMMON, mage.cards.k.KirdApe.class));
+ cards.add(new SetCardInfo("Kor Hookmaster", 18, Rarity.COMMON, mage.cards.k.KorHookmaster.class));
+ cards.add(new SetCardInfo("Llanowar Elves", 175, Rarity.COMMON, mage.cards.l.LlanowarElves.class));
+ cards.add(new SetCardInfo("Lys Alana Huntmaster", 176, Rarity.COMMON, mage.cards.l.LysAlanaHuntmaster.class));
+ cards.add(new SetCardInfo("Lys Alana Scarblade", 95, Rarity.UNCOMMON, mage.cards.l.LysAlanaScarblade.class));
+ cards.add(new SetCardInfo("Maelstrom Wanderer", 204, Rarity.MYTHIC, mage.cards.m.MaelstromWanderer.class));
+ cards.add(new SetCardInfo("Malicious Affliction", 96, Rarity.RARE, mage.cards.m.MaliciousAffliction.class));
+ cards.add(new SetCardInfo("Mana Crypt", 225, Rarity.MYTHIC, mage.cards.m.ManaCrypt.class));
+ cards.add(new SetCardInfo("Man-o'-War", 59, Rarity.COMMON, mage.cards.m.ManOWar.class));
+ cards.add(new SetCardInfo("Maze of Ith", 241, Rarity.RARE, mage.cards.m.MazeOfIth.class));
+ cards.add(new SetCardInfo("Memory Lapse", 60, Rarity.COMMON, mage.cards.m.MemoryLapse.class));
+ cards.add(new SetCardInfo("Merfolk Looter", 61, Rarity.UNCOMMON, mage.cards.m.MerfolkLooter.class));
+ cards.add(new SetCardInfo("Mesa Enchantress", 19, Rarity.UNCOMMON, mage.cards.m.MesaEnchantress.class));
+ cards.add(new SetCardInfo("Millikin", 226, Rarity.UNCOMMON, mage.cards.m.Millikin.class));
+ cards.add(new SetCardInfo("Mindless Automaton", 227, Rarity.UNCOMMON, mage.cards.m.MindlessAutomaton.class));
+ cards.add(new SetCardInfo("Mishra's Factory", 242, Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class));
+ cards.add(new SetCardInfo("Mistral Charger", 20, Rarity.COMMON, mage.cards.m.MistralCharger.class));
+ cards.add(new SetCardInfo("Mogg Fanatic", 138, Rarity.COMMON, mage.cards.m.MoggFanatic.class));
+ cards.add(new SetCardInfo("Mogg War Marshal", 139, Rarity.COMMON, mage.cards.m.MoggWarMarshal.class));
+ cards.add(new SetCardInfo("Monk Idealist", 21, Rarity.COMMON, mage.cards.m.MonkIdealist.class));
+ cards.add(new SetCardInfo("Mother of Runes", 22, Rarity.RARE, mage.cards.m.MotherOfRunes.class));
+ cards.add(new SetCardInfo("Mystical Tutor", 62, Rarity.RARE, mage.cards.m.MysticalTutor.class));
+ cards.add(new SetCardInfo("Natural Order", 177, Rarity.MYTHIC, mage.cards.n.NaturalOrder.class));
+ cards.add(new SetCardInfo("Nature's Claim", 178, Rarity.COMMON, mage.cards.n.NaturesClaim.class));
+ cards.add(new SetCardInfo("Nausea", 97, Rarity.COMMON, mage.cards.n.Nausea.class));
+ cards.add(new SetCardInfo("Necropotence", 98, Rarity.MYTHIC, mage.cards.n.Necropotence.class));
+ cards.add(new SetCardInfo("Nekrataal", 99, Rarity.UNCOMMON, mage.cards.n.Nekrataal.class));
+ cards.add(new SetCardInfo("Nevinyrral's Disk", 228, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class));
+ cards.add(new SetCardInfo("Night's Whisper", 100, Rarity.COMMON, mage.cards.n.NightsWhisper.class));
+ cards.add(new SetCardInfo("Nimble Mongoose", 179, Rarity.COMMON, mage.cards.n.NimbleMongoose.class));
+ cards.add(new SetCardInfo("Oona's Grace", 63, Rarity.COMMON, mage.cards.o.OonasGrace.class));
+ cards.add(new SetCardInfo("Orcish Oriflamme", 140, Rarity.COMMON, mage.cards.o.OrcishOriflamme.class));
+ cards.add(new SetCardInfo("Pacifism", 23, Rarity.COMMON, mage.cards.p.Pacifism.class));
+ cards.add(new SetCardInfo("Peregrine Drake", 64, Rarity.COMMON, mage.cards.p.PeregrineDrake.class));
+ cards.add(new SetCardInfo("Phantom Monster", 65, Rarity.COMMON, mage.cards.p.PhantomMonster.class));
+ cards.add(new SetCardInfo("Phyrexian Gargantua", 101, Rarity.UNCOMMON, mage.cards.p.PhyrexianGargantua.class));
+ cards.add(new SetCardInfo("Phyrexian Ingester", 66, Rarity.UNCOMMON, mage.cards.p.PhyrexianIngester.class));
+ cards.add(new SetCardInfo("Phyrexian Rager", 102, Rarity.COMMON, mage.cards.p.PhyrexianRager.class));
+ cards.add(new SetCardInfo("Pilgrim's Eye", 229, Rarity.COMMON, mage.cards.p.PilgrimsEye.class));
+ cards.add(new SetCardInfo("Plague Witch", 103, Rarity.COMMON, mage.cards.p.PlagueWitch.class));
+ cards.add(new SetCardInfo("Price of Progress", 141, Rarity.UNCOMMON, mage.cards.p.PriceOfProgress.class));
+ cards.add(new SetCardInfo("Prismatic Lens", 230, Rarity.UNCOMMON, mage.cards.p.PrismaticLens.class));
+ cards.add(new SetCardInfo("Prodigal Sorcerer", 67, Rarity.UNCOMMON, mage.cards.p.ProdigalSorcerer.class));
+ cards.add(new SetCardInfo("Prowling Pangolin", 104, Rarity.COMMON, mage.cards.p.ProwlingPangolin.class));
+ cards.add(new SetCardInfo("Pyroblast", 142, Rarity.UNCOMMON, mage.cards.p.Pyroblast.class));
+ cards.add(new SetCardInfo("Pyrokinesis", 143, Rarity.RARE, mage.cards.p.Pyrokinesis.class));
+ cards.add(new SetCardInfo("Quiet Speculation", 68, Rarity.UNCOMMON, mage.cards.q.QuietSpeculation.class));
+ cards.add(new SetCardInfo("Raise the Alarm", 24, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class));
+ cards.add(new SetCardInfo("Rally the Peasants", 25, Rarity.COMMON, mage.cards.r.RallyThePeasants.class));
+ cards.add(new SetCardInfo("Rancor", 180, Rarity.UNCOMMON, mage.cards.r.Rancor.class));
+ cards.add(new SetCardInfo("Reckless Charge", 144, Rarity.COMMON, mage.cards.r.RecklessCharge.class));
+ cards.add(new SetCardInfo("Regal Force", 181, Rarity.RARE, mage.cards.r.RegalForce.class));
+ cards.add(new SetCardInfo("Relic of Progenitus", 231, Rarity.UNCOMMON, mage.cards.r.RelicOfProgenitus.class));
+ cards.add(new SetCardInfo("Roar of the Wurm", 182, Rarity.UNCOMMON, mage.cards.r.RoarOfTheWurm.class));
+ cards.add(new SetCardInfo("Roots", 183, Rarity.COMMON, mage.cards.r.Roots.class));
+ cards.add(new SetCardInfo("Rorix Bladewing", 145, Rarity.RARE, mage.cards.r.RorixBladewing.class));
+ cards.add(new SetCardInfo("Rugged Highlands", 243, Rarity.COMMON, mage.cards.r.RuggedHighlands.class));
+ cards.add(new SetCardInfo("Scoured Barrens", 244, Rarity.COMMON, mage.cards.s.ScouredBarrens.class));
+ cards.add(new SetCardInfo("Screeching Skaab", 69, Rarity.COMMON, mage.cards.s.ScreechingSkaab.class));
+ cards.add(new SetCardInfo("Seal of Cleansing", 26, Rarity.COMMON, mage.cards.s.SealOfCleansing.class));
+ cards.add(new SetCardInfo("Seal of Strength", 184, Rarity.COMMON, mage.cards.s.SealOfStrength.class));
+ cards.add(new SetCardInfo("Second Thoughts", 27, Rarity.COMMON, mage.cards.s.SecondThoughts.class));
+ cards.add(new SetCardInfo("Seismic Stomp", 146, Rarity.COMMON, mage.cards.s.SeismicStomp.class));
+ cards.add(new SetCardInfo("Sengir Autocrat", 105, Rarity.UNCOMMON, mage.cards.s.SengirAutocrat.class));
+ cards.add(new SetCardInfo("Sensei's Divining Top", 232, Rarity.RARE, mage.cards.s.SenseisDiviningTop.class));
+ cards.add(new SetCardInfo("Sentinel Spider", 185, Rarity.COMMON, mage.cards.s.SentinelSpider.class));
+ cards.add(new SetCardInfo("Serendib Efreet", 70, Rarity.RARE, mage.cards.s.SerendibEfreet.class));
+ cards.add(new SetCardInfo("Serra Angel", 28, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class));
+ cards.add(new SetCardInfo("Shaman of the Pack", 205, Rarity.UNCOMMON, mage.cards.s.ShamanOfThePack.class));
+ cards.add(new SetCardInfo("Shardless Agent", 206, Rarity.RARE, mage.cards.s.ShardlessAgent.class));
+ cards.add(new SetCardInfo("Shelter", 29, Rarity.COMMON, mage.cards.s.Shelter.class));
+ cards.add(new SetCardInfo("Shoreline Ranger", 71, Rarity.COMMON, mage.cards.s.ShorelineRanger.class));
+ cards.add(new SetCardInfo("Siege-Gang Commander", 147, Rarity.RARE, mage.cards.s.SiegeGangCommander.class));
+ cards.add(new SetCardInfo("Silent Departure", 72, Rarity.COMMON, mage.cards.s.SilentDeparture.class));
+ cards.add(new SetCardInfo("Silvos, Rogue Elemental", 186, Rarity.RARE, mage.cards.s.SilvosRogueElemental.class));
+ cards.add(new SetCardInfo("Sinkhole", 106, Rarity.RARE, mage.cards.s.Sinkhole.class));
+ cards.add(new SetCardInfo("Skulking Ghost", 107, Rarity.COMMON, mage.cards.s.SkulkingGhost.class));
+ cards.add(new SetCardInfo("Sneak Attack", 148, Rarity.MYTHIC, mage.cards.s.SneakAttack.class));
+ cards.add(new SetCardInfo("Soulcatcher", 30, Rarity.UNCOMMON, mage.cards.s.Soulcatcher.class));
+ cards.add(new SetCardInfo("Sphinx of the Steel Wind", 207, Rarity.MYTHIC, mage.cards.s.SphinxOfTheSteelWind.class));
+ cards.add(new SetCardInfo("Sprite Noble", 73, Rarity.UNCOMMON, mage.cards.s.SpriteNoble.class));
+ cards.add(new SetCardInfo("Squadron Hawk", 31, Rarity.COMMON, mage.cards.s.SquadronHawk.class));
+ cards.add(new SetCardInfo("Stingscourger", 149, Rarity.COMMON, mage.cards.s.Stingscourger.class));
+ cards.add(new SetCardInfo("Stupefying Touch", 74, Rarity.COMMON, mage.cards.s.StupefyingTouch.class));
+ cards.add(new SetCardInfo("Sulfuric Vortex", 150, Rarity.RARE, mage.cards.s.SulfuricVortex.class));
+ cards.add(new SetCardInfo("Swiftwater Cliffs", 245, Rarity.COMMON, mage.cards.s.SwiftwaterCliffs.class));
+ cards.add(new SetCardInfo("Swords to Plowshares", 32, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
+ cards.add(new SetCardInfo("Sylvan Library", 187, Rarity.RARE, mage.cards.s.SylvanLibrary.class));
+ cards.add(new SetCardInfo("Sylvan Might", 188, Rarity.COMMON, mage.cards.s.SylvanMight.class));
+ cards.add(new SetCardInfo("Thornweald Archer", 189, Rarity.COMMON, mage.cards.t.ThornwealdArcher.class));
+ cards.add(new SetCardInfo("Thornwood Falls", 246, Rarity.COMMON, mage.cards.t.ThornwoodFalls.class));
+ cards.add(new SetCardInfo("Thunderclap Wyvern", 208, Rarity.UNCOMMON, mage.cards.t.ThunderclapWyvern.class));
+ cards.add(new SetCardInfo("Ticking Gnomes", 233, Rarity.UNCOMMON, mage.cards.t.TickingGnomes.class));
+ cards.add(new SetCardInfo("Tidal Wave", 75, Rarity.COMMON, mage.cards.t.TidalWave.class));
+ cards.add(new SetCardInfo("Timberwatch Elf", 190, Rarity.UNCOMMON, mage.cards.t.TimberwatchElf.class));
+ cards.add(new SetCardInfo("Tooth and Claw", 151, Rarity.UNCOMMON, mage.cards.t.ToothAndClaw.class));
+ cards.add(new SetCardInfo("Torrent of Souls", 217, Rarity.UNCOMMON, mage.cards.t.TorrentOfSouls.class));
+ cards.add(new SetCardInfo("Toxic Deluge", 108, Rarity.RARE, mage.cards.t.ToxicDeluge.class));
+ cards.add(new SetCardInfo("Tragic Slip", 109, Rarity.COMMON, mage.cards.t.TragicSlip.class));
+ cards.add(new SetCardInfo("Tranquil Cove", 247, Rarity.COMMON, mage.cards.t.TranquilCove.class));
+ cards.add(new SetCardInfo("Trygon Predator", 209, Rarity.UNCOMMON, mage.cards.t.TrygonPredator.class));
+ cards.add(new SetCardInfo("Twisted Abomination", 110, Rarity.COMMON, mage.cards.t.TwistedAbomination.class));
+ cards.add(new SetCardInfo("Undying Rage", 152, Rarity.COMMON, mage.cards.u.UndyingRage.class));
+ cards.add(new SetCardInfo("Unexpectedly Absent", 33, Rarity.RARE, mage.cards.u.UnexpectedlyAbsent.class));
+ cards.add(new SetCardInfo("Urborg Uprising", 111, Rarity.COMMON, mage.cards.u.UrborgUprising.class));
+ cards.add(new SetCardInfo("Vampiric Tutor", 112, Rarity.MYTHIC, mage.cards.v.VampiricTutor.class));
+ cards.add(new SetCardInfo("Victimize", 113, Rarity.UNCOMMON, mage.cards.v.Victimize.class));
+ cards.add(new SetCardInfo("Vindicate", 210, Rarity.RARE, mage.cards.v.Vindicate.class));
+ cards.add(new SetCardInfo("Visara the Dreadful", 114, Rarity.RARE, mage.cards.v.VisaraTheDreadful.class));
+ cards.add(new SetCardInfo("Void", 211, Rarity.RARE, mage.cards.v.Void.class));
+ cards.add(new SetCardInfo("Wakedancer", 116, Rarity.COMMON, mage.cards.w.Wakedancer.class));
+ cards.add(new SetCardInfo("Wake of Vultures", 115, Rarity.COMMON, mage.cards.w.WakeOfVultures.class));
+ cards.add(new SetCardInfo("Wall of Omens", 34, Rarity.UNCOMMON, mage.cards.w.WallOfOmens.class));
+ cards.add(new SetCardInfo("Warden of Evos Isle", 76, Rarity.COMMON, mage.cards.w.WardenOfEvosIsle.class));
+ cards.add(new SetCardInfo("War Priest of Thune", 35, Rarity.UNCOMMON, mage.cards.w.WarPriestOfThune.class));
+ cards.add(new SetCardInfo("Wasteland", 248, Rarity.RARE, mage.cards.w.Wasteland.class));
+ cards.add(new SetCardInfo("Wee Dragonauts", 212, Rarity.UNCOMMON, mage.cards.w.WeeDragonauts.class));
+ cards.add(new SetCardInfo("Welkin Guide", 36, Rarity.COMMON, mage.cards.w.WelkinGuide.class));
+ cards.add(new SetCardInfo("Werebear", 191, Rarity.COMMON, mage.cards.w.Werebear.class));
+ cards.add(new SetCardInfo("Whitemane Lion", 37, Rarity.COMMON, mage.cards.w.WhitemaneLion.class));
+ cards.add(new SetCardInfo("Wildfire Emissary", 153, Rarity.COMMON, mage.cards.w.WildfireEmissary.class));
+ cards.add(new SetCardInfo("Wind-Scarred Crag", 249, Rarity.COMMON, mage.cards.w.WindScarredCrag.class));
+ cards.add(new SetCardInfo("Winter Orb", 234, Rarity.RARE, mage.cards.w.WinterOrb.class));
+ cards.add(new SetCardInfo("Wirewood Symbiote", 192, Rarity.UNCOMMON, mage.cards.w.WirewoodSymbiote.class));
+ cards.add(new SetCardInfo("Wonder", 77, Rarity.UNCOMMON, mage.cards.w.Wonder.class));
+ cards.add(new SetCardInfo("Worldgorger Dragon", 154, Rarity.MYTHIC, mage.cards.w.WorldgorgerDragon.class));
+ cards.add(new SetCardInfo("Worn Powerstone", 235, Rarity.UNCOMMON, mage.cards.w.WornPowerstone.class));
+ cards.add(new SetCardInfo("Wrath of God", 38, Rarity.RARE, mage.cards.w.WrathOfGod.class));
+ cards.add(new SetCardInfo("Xantid Swarm", 193, Rarity.RARE, mage.cards.x.XantidSwarm.class));
+ cards.add(new SetCardInfo("Yavimaya Enchantress", 194, Rarity.COMMON, mage.cards.y.YavimayaEnchantress.class));
+ cards.add(new SetCardInfo("Young Pyromancer", 155, Rarity.UNCOMMON, mage.cards.y.YoungPyromancer.class));
+ cards.add(new SetCardInfo("Zealous Persecution", 213, Rarity.UNCOMMON, mage.cards.z.ZealousPersecution.class));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/EuropeanLandProgram.java b/Mage.Sets/src/mage/sets/EuropeanLandProgram.java
index ebc42b54e01..e9845d5d5fd 100644
--- a/Mage.Sets/src/mage/sets/EuropeanLandProgram.java
+++ b/Mage.Sets/src/mage/sets/EuropeanLandProgram.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class EuropeanLandProgram extends ExpansionSet {
+public final class EuropeanLandProgram extends ExpansionSet {
private static final EuropeanLandProgram instance = new EuropeanLandProgram();
diff --git a/Mage.Sets/src/mage/sets/Eventide.java b/Mage.Sets/src/mage/sets/Eventide.java
index b478ca71b15..34f9e629774 100644
--- a/Mage.Sets/src/mage/sets/Eventide.java
+++ b/Mage.Sets/src/mage/sets/Eventide.java
@@ -4,7 +4,7 @@ import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class Eventide extends ExpansionSet {
+public final class Eventide extends ExpansionSet {
private static final Eventide instance = new Eventide();
diff --git a/Mage.Sets/src/mage/sets/Exodus.java b/Mage.Sets/src/mage/sets/Exodus.java
index 7c4066522ad..b45a6dd6c68 100644
--- a/Mage.Sets/src/mage/sets/Exodus.java
+++ b/Mage.Sets/src/mage/sets/Exodus.java
@@ -1,188 +1,188 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class Exodus extends ExpansionSet {
-
- private static final Exodus instance = new Exodus();
-
- public static Exodus getInstance() {
- return instance;
- }
-
- private Exodus() {
- super("Exodus", "EXO", ExpansionSet.buildDate(1998, 6, 15), SetType.EXPANSION);
- this.blockName = "Tempest";
- this.parentSet = Tempest.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("Allay", 1, Rarity.COMMON, mage.cards.a.Allay.class));
- cards.add(new SetCardInfo("Anarchist", 79, Rarity.COMMON, mage.cards.a.Anarchist.class));
- cards.add(new SetCardInfo("Angelic Blessing", 2, Rarity.COMMON, mage.cards.a.AngelicBlessing.class));
- cards.add(new SetCardInfo("Avenging Druid", 105, Rarity.COMMON, mage.cards.a.AvengingDruid.class));
- cards.add(new SetCardInfo("Bequeathal", 106, Rarity.COMMON, mage.cards.b.Bequeathal.class));
- cards.add(new SetCardInfo("Carnophage", 53, Rarity.COMMON, mage.cards.c.Carnophage.class));
- cards.add(new SetCardInfo("Cartographer", 107, Rarity.UNCOMMON, mage.cards.c.Cartographer.class));
- cards.add(new SetCardInfo("Cataclysm", 3, Rarity.RARE, mage.cards.c.Cataclysm.class));
- cards.add(new SetCardInfo("Cat Burglar", 54, Rarity.COMMON, mage.cards.c.CatBurglar.class));
- cards.add(new SetCardInfo("Charging Paladin", 4, Rarity.COMMON, mage.cards.c.ChargingPaladin.class));
- cards.add(new SetCardInfo("City of Traitors", 143, Rarity.RARE, mage.cards.c.CityOfTraitors.class));
- cards.add(new SetCardInfo("Coat of Arms", 131, Rarity.RARE, mage.cards.c.CoatOfArms.class));
- cards.add(new SetCardInfo("Convalescence", 5, Rarity.RARE, mage.cards.c.Convalescence.class));
- cards.add(new SetCardInfo("Crashing Boars", 108, Rarity.UNCOMMON, mage.cards.c.CrashingBoars.class));
- cards.add(new SetCardInfo("Culling the Weak", 55, Rarity.COMMON, mage.cards.c.CullingTheWeak.class));
- cards.add(new SetCardInfo("Curiosity", 29, Rarity.UNCOMMON, mage.cards.c.Curiosity.class));
- cards.add(new SetCardInfo("Cursed Flesh", 56, Rarity.COMMON, mage.cards.c.CursedFlesh.class));
- cards.add(new SetCardInfo("Dauthi Cutthroat", 57, Rarity.UNCOMMON, mage.cards.d.DauthiCutthroat.class));
- cards.add(new SetCardInfo("Dauthi Jackal", 58, Rarity.COMMON, mage.cards.d.DauthiJackal.class));
- cards.add(new SetCardInfo("Dauthi Warlord", 59, Rarity.UNCOMMON, mage.cards.d.DauthiWarlord.class));
- cards.add(new SetCardInfo("Death's Duet", 60, Rarity.COMMON, mage.cards.d.DeathsDuet.class));
- cards.add(new SetCardInfo("Dominating Licid", 30, Rarity.RARE, mage.cards.d.DominatingLicid.class));
- cards.add(new SetCardInfo("Elven Palisade", 109, Rarity.UNCOMMON, mage.cards.e.ElvenPalisade.class));
- cards.add(new SetCardInfo("Elvish Berserker", 110, Rarity.COMMON, mage.cards.e.ElvishBerserker.class));
- cards.add(new SetCardInfo("Entropic Specter", 61, Rarity.RARE, mage.cards.e.EntropicSpecter.class));
- cards.add(new SetCardInfo("Ephemeron", 31, Rarity.RARE, mage.cards.e.Ephemeron.class));
- cards.add(new SetCardInfo("Equilibrium", 32, Rarity.RARE, mage.cards.e.Equilibrium.class));
- cards.add(new SetCardInfo("Erratic Portal", 132, Rarity.RARE, mage.cards.e.ErraticPortal.class));
- cards.add(new SetCardInfo("Ertai, Wizard Adept", 33, Rarity.RARE, mage.cards.e.ErtaiWizardAdept.class));
- cards.add(new SetCardInfo("Exalted Dragon", 6, Rarity.RARE, mage.cards.e.ExaltedDragon.class));
- cards.add(new SetCardInfo("Fade Away", 34, Rarity.COMMON, mage.cards.f.FadeAway.class));
- cards.add(new SetCardInfo("Fighting Chance", 82, Rarity.RARE, mage.cards.f.FightingChance.class));
- cards.add(new SetCardInfo("Flowstone Flood", 83, Rarity.UNCOMMON, mage.cards.f.FlowstoneFlood.class));
- cards.add(new SetCardInfo("Forbid", 35, Rarity.UNCOMMON, mage.cards.f.Forbid.class));
- cards.add(new SetCardInfo("Fugue", 62, Rarity.UNCOMMON, mage.cards.f.Fugue.class));
- cards.add(new SetCardInfo("Furnace Brood", 84, Rarity.COMMON, mage.cards.f.FurnaceBrood.class));
- cards.add(new SetCardInfo("Hatred", 64, Rarity.RARE, mage.cards.h.Hatred.class));
- cards.add(new SetCardInfo("High Ground", 7, Rarity.UNCOMMON, mage.cards.h.HighGround.class));
- cards.add(new SetCardInfo("Jackalope Herd", 111, Rarity.COMMON, mage.cards.j.JackalopeHerd.class));
- cards.add(new SetCardInfo("Keeper of the Dead", 65, Rarity.UNCOMMON, mage.cards.k.KeeperOfTheDead.class));
- cards.add(new SetCardInfo("Keeper of the Light", 8, Rarity.UNCOMMON, mage.cards.k.KeeperOfTheLight.class));
- cards.add(new SetCardInfo("Killer Whale", 37, Rarity.UNCOMMON, mage.cards.k.KillerWhale.class));
- cards.add(new SetCardInfo("Kor Chant", 9, Rarity.COMMON, mage.cards.k.KorChant.class));
- cards.add(new SetCardInfo("Mage il-Vec", 86, Rarity.COMMON, mage.cards.m.MageIlVec.class));
- cards.add(new SetCardInfo("Manabond", 113, Rarity.RARE, mage.cards.m.Manabond.class));
- cards.add(new SetCardInfo("Mana Breach", 38, Rarity.UNCOMMON, mage.cards.m.ManaBreach.class));
- cards.add(new SetCardInfo("Maniacal Rage", 87, Rarity.COMMON, mage.cards.m.ManiacalRage.class));
- cards.add(new SetCardInfo("Medicine Bag", 133, Rarity.UNCOMMON, mage.cards.m.MedicineBag.class));
- cards.add(new SetCardInfo("Memory Crystal", 134, Rarity.RARE, mage.cards.m.MemoryCrystal.class));
- cards.add(new SetCardInfo("Merfolk Looter", 39, Rarity.COMMON, mage.cards.m.MerfolkLooter.class));
- cards.add(new SetCardInfo("Mindless Automaton", 135, Rarity.RARE, mage.cards.m.MindlessAutomaton.class));
- cards.add(new SetCardInfo("Mind Over Matter", 40, Rarity.RARE, mage.cards.m.MindOverMatter.class));
- cards.add(new SetCardInfo("Mirozel", 41, Rarity.UNCOMMON, mage.cards.m.Mirozel.class));
- cards.add(new SetCardInfo("Mirri, Cat Warrior", 114, Rarity.RARE, mage.cards.m.MirriCatWarrior.class));
- cards.add(new SetCardInfo("Mogg Assassin", 88, Rarity.UNCOMMON, mage.cards.m.MoggAssassin.class));
- cards.add(new SetCardInfo("Nausea", 67, Rarity.COMMON, mage.cards.n.Nausea.class));
- cards.add(new SetCardInfo("Necrologia", 68, Rarity.UNCOMMON, mage.cards.n.Necrologia.class));
- cards.add(new SetCardInfo("Null Brooch", 136, Rarity.RARE, mage.cards.n.NullBrooch.class));
- cards.add(new SetCardInfo("Oath of Druids", 115, Rarity.RARE, mage.cards.o.OathOfDruids.class));
- cards.add(new SetCardInfo("Oath of Ghouls", 69, Rarity.RARE, mage.cards.o.OathOfGhouls.class));
- cards.add(new SetCardInfo("Oath of Lieges", 11, Rarity.RARE, mage.cards.o.OathOfLieges.class));
- cards.add(new SetCardInfo("Oath of Mages", 90, Rarity.RARE, mage.cards.o.OathOfMages.class));
- cards.add(new SetCardInfo("Oath of Scholars", 42, Rarity.RARE, mage.cards.o.OathOfScholars.class));
- cards.add(new SetCardInfo("Ogre Shaman", 91, Rarity.RARE, mage.cards.o.OgreShaman.class));
- cards.add(new SetCardInfo("Onslaught", 92, Rarity.COMMON, mage.cards.o.Onslaught.class));
- cards.add(new SetCardInfo("Paladin en-Vec", 12, Rarity.RARE, mage.cards.p.PaladinEnVec.class));
- cards.add(new SetCardInfo("Pandemonium", 93, Rarity.RARE, mage.cards.p.Pandemonium.class));
- cards.add(new SetCardInfo("Peace of Mind", 13, Rarity.UNCOMMON, mage.cards.p.PeaceOfMind.class));
- cards.add(new SetCardInfo("Pegasus Stampede", 14, Rarity.UNCOMMON, mage.cards.p.PegasusStampede.class));
- cards.add(new SetCardInfo("Penance", 15, Rarity.UNCOMMON, mage.cards.p.Penance.class));
- cards.add(new SetCardInfo("Pit Spawn", 70, Rarity.RARE, mage.cards.p.PitSpawn.class));
- cards.add(new SetCardInfo("Plaguebearer", 71, Rarity.RARE, mage.cards.p.Plaguebearer.class));
- cards.add(new SetCardInfo("Plated Rootwalla", 116, Rarity.COMMON, mage.cards.p.PlatedRootwalla.class));
- cards.add(new SetCardInfo("Predatory Hunger", 117, Rarity.COMMON, mage.cards.p.PredatoryHunger.class));
- cards.add(new SetCardInfo("Price of Progress", 95, Rarity.UNCOMMON, mage.cards.p.PriceOfProgress.class));
- cards.add(new SetCardInfo("Pygmy Troll", 118, Rarity.COMMON, mage.cards.p.PygmyTroll.class));
- cards.add(new SetCardInfo("Rabid Wolverines", 119, Rarity.COMMON, mage.cards.r.RabidWolverines.class));
- cards.add(new SetCardInfo("Raging Goblin", 96, Rarity.COMMON, mage.cards.r.RagingGoblin.class));
- cards.add(new SetCardInfo("Ravenous Baboons", 97, Rarity.RARE, mage.cards.r.RavenousBaboons.class));
- cards.add(new SetCardInfo("Reaping the Rewards", 16, Rarity.COMMON, mage.cards.r.ReapingTheRewards.class));
- cards.add(new SetCardInfo("Reckless Ogre", 98, Rarity.COMMON, mage.cards.r.RecklessOgre.class));
- cards.add(new SetCardInfo("Reclaim", 120, Rarity.COMMON, mage.cards.r.Reclaim.class));
- cards.add(new SetCardInfo("Reconnaissance", 17, Rarity.UNCOMMON, mage.cards.r.Reconnaissance.class));
- cards.add(new SetCardInfo("Recurring Nightmare", 72, Rarity.RARE, mage.cards.r.RecurringNightmare.class));
- cards.add(new SetCardInfo("Resuscitate", 121, Rarity.UNCOMMON, mage.cards.r.Resuscitate.class));
- cards.add(new SetCardInfo("Robe of Mirrors", 43, Rarity.COMMON, mage.cards.r.RobeOfMirrors.class));
- cards.add(new SetCardInfo("Rootwater Alligator", 122, Rarity.COMMON, mage.cards.r.RootwaterAlligator.class));
- cards.add(new SetCardInfo("Rootwater Mystic", 44, Rarity.COMMON, mage.cards.r.RootwaterMystic.class));
- cards.add(new SetCardInfo("Sabertooth Wyvern", 99, Rarity.UNCOMMON, mage.cards.s.SabertoothWyvern.class));
- cards.add(new SetCardInfo("Scalding Salamander", 100, Rarity.UNCOMMON, mage.cards.s.ScaldingSalamander.class));
- cards.add(new SetCardInfo("Scare Tactics", 73, Rarity.COMMON, mage.cards.s.ScareTactics.class));
- cards.add(new SetCardInfo("School of Piranha", 45, Rarity.COMMON, mage.cards.s.SchoolOfPiranha.class));
- cards.add(new SetCardInfo("Scrivener", 46, Rarity.UNCOMMON, mage.cards.s.Scrivener.class));
- cards.add(new SetCardInfo("Seismic Assault", 101, Rarity.RARE, mage.cards.s.SeismicAssault.class));
- cards.add(new SetCardInfo("Shackles", 18, Rarity.COMMON, mage.cards.s.Shackles.class));
- cards.add(new SetCardInfo("Shattering Pulse", 102, Rarity.COMMON, mage.cards.s.ShatteringPulse.class));
- cards.add(new SetCardInfo("Shield Mate", 19, Rarity.COMMON, mage.cards.s.ShieldMate.class));
- cards.add(new SetCardInfo("Skyshaper", 137, Rarity.UNCOMMON, mage.cards.s.Skyshaper.class));
- cards.add(new SetCardInfo("Skyshroud Elite", 123, Rarity.UNCOMMON, mage.cards.s.SkyshroudElite.class));
- cards.add(new SetCardInfo("Skyshroud War Beast", 124, Rarity.RARE, mage.cards.s.SkyshroudWarBeast.class));
- cards.add(new SetCardInfo("Slaughter", 74, Rarity.UNCOMMON, mage.cards.s.Slaughter.class));
- cards.add(new SetCardInfo("Soltari Visionary", 20, Rarity.COMMON, mage.cards.s.SoltariVisionary.class));
- cards.add(new SetCardInfo("Song of Serenity", 125, Rarity.UNCOMMON, mage.cards.s.SongOfSerenity.class));
- cards.add(new SetCardInfo("Sonic Burst", 103, Rarity.COMMON, mage.cards.s.SonicBurst.class));
- cards.add(new SetCardInfo("Soul Warden", 21, Rarity.COMMON, mage.cards.s.SoulWarden.class));
- cards.add(new SetCardInfo("Spellbook", 138, Rarity.UNCOMMON, mage.cards.s.Spellbook.class));
- cards.add(new SetCardInfo("Spellshock", 104, Rarity.UNCOMMON, mage.cards.s.Spellshock.class));
- cards.add(new SetCardInfo("Sphere of Resistance", 139, Rarity.RARE, mage.cards.s.SphereOfResistance.class));
- cards.add(new SetCardInfo("Spike Cannibal", 75, Rarity.UNCOMMON, mage.cards.s.SpikeCannibal.class));
- cards.add(new SetCardInfo("Spike Hatcher", 126, Rarity.RARE, mage.cards.s.SpikeHatcher.class));
- cards.add(new SetCardInfo("Spike Rogue", 127, Rarity.UNCOMMON, mage.cards.s.SpikeRogue.class));
- cards.add(new SetCardInfo("Spike Weaver", 128, Rarity.RARE, mage.cards.s.SpikeWeaver.class));
- cards.add(new SetCardInfo("Standing Troops", 22, Rarity.COMMON, mage.cards.s.StandingTroops.class));
- cards.add(new SetCardInfo("Survival of the Fittest", 129, Rarity.RARE, mage.cards.s.SurvivalOfTheFittest.class));
- cards.add(new SetCardInfo("Thalakos Drifters", 47, Rarity.RARE, mage.cards.t.ThalakosDrifters.class));
- cards.add(new SetCardInfo("Thalakos Scout", 48, Rarity.COMMON, mage.cards.t.ThalakosScout.class));
- cards.add(new SetCardInfo("Theft of Dreams", 49, Rarity.COMMON, mage.cards.t.TheftOfDreams.class));
- cards.add(new SetCardInfo("Thopter Squadron", 140, Rarity.RARE, mage.cards.t.ThopterSquadron.class));
- cards.add(new SetCardInfo("Thrull Surgeon", 76, Rarity.COMMON, mage.cards.t.ThrullSurgeon.class));
- cards.add(new SetCardInfo("Transmogrifying Licid", 141, Rarity.UNCOMMON, mage.cards.t.TransmogrifyingLicid.class));
- cards.add(new SetCardInfo("Treasure Hunter", 23, Rarity.UNCOMMON, mage.cards.t.TreasureHunter.class));
- cards.add(new SetCardInfo("Treasure Trove", 50, Rarity.UNCOMMON, mage.cards.t.TreasureTrove.class));
- cards.add(new SetCardInfo("Vampire Hounds", 77, Rarity.COMMON, mage.cards.v.VampireHounds.class));
- cards.add(new SetCardInfo("Wall of Nets", 24, Rarity.RARE, mage.cards.w.WallOfNets.class));
- cards.add(new SetCardInfo("Wayward Soul", 51, Rarity.COMMON, mage.cards.w.WaywardSoul.class));
- cards.add(new SetCardInfo("Welkin Hawk", 25, Rarity.COMMON, mage.cards.w.WelkinHawk.class));
- cards.add(new SetCardInfo("Whiptongue Frog", 52, Rarity.COMMON, mage.cards.w.WhiptongueFrog.class));
- cards.add(new SetCardInfo("Wood Elves", 130, Rarity.COMMON, mage.cards.w.WoodElves.class));
- cards.add(new SetCardInfo("Workhorse", 142, Rarity.RARE, mage.cards.w.Workhorse.class));
- cards.add(new SetCardInfo("Zealots en-Dal", 26, Rarity.UNCOMMON, mage.cards.z.ZealotsEnDal.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Exodus extends ExpansionSet {
+
+ private static final Exodus instance = new Exodus();
+
+ public static Exodus getInstance() {
+ return instance;
+ }
+
+ private Exodus() {
+ super("Exodus", "EXO", ExpansionSet.buildDate(1998, 6, 15), SetType.EXPANSION);
+ this.blockName = "Tempest";
+ this.parentSet = Tempest.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("Allay", 1, Rarity.COMMON, mage.cards.a.Allay.class));
+ cards.add(new SetCardInfo("Anarchist", 79, Rarity.COMMON, mage.cards.a.Anarchist.class));
+ cards.add(new SetCardInfo("Angelic Blessing", 2, Rarity.COMMON, mage.cards.a.AngelicBlessing.class));
+ cards.add(new SetCardInfo("Avenging Druid", 105, Rarity.COMMON, mage.cards.a.AvengingDruid.class));
+ cards.add(new SetCardInfo("Bequeathal", 106, Rarity.COMMON, mage.cards.b.Bequeathal.class));
+ cards.add(new SetCardInfo("Carnophage", 53, Rarity.COMMON, mage.cards.c.Carnophage.class));
+ cards.add(new SetCardInfo("Cartographer", 107, Rarity.UNCOMMON, mage.cards.c.Cartographer.class));
+ cards.add(new SetCardInfo("Cataclysm", 3, Rarity.RARE, mage.cards.c.Cataclysm.class));
+ cards.add(new SetCardInfo("Cat Burglar", 54, Rarity.COMMON, mage.cards.c.CatBurglar.class));
+ cards.add(new SetCardInfo("Charging Paladin", 4, Rarity.COMMON, mage.cards.c.ChargingPaladin.class));
+ cards.add(new SetCardInfo("City of Traitors", 143, Rarity.RARE, mage.cards.c.CityOfTraitors.class));
+ cards.add(new SetCardInfo("Coat of Arms", 131, Rarity.RARE, mage.cards.c.CoatOfArms.class));
+ cards.add(new SetCardInfo("Convalescence", 5, Rarity.RARE, mage.cards.c.Convalescence.class));
+ cards.add(new SetCardInfo("Crashing Boars", 108, Rarity.UNCOMMON, mage.cards.c.CrashingBoars.class));
+ cards.add(new SetCardInfo("Culling the Weak", 55, Rarity.COMMON, mage.cards.c.CullingTheWeak.class));
+ cards.add(new SetCardInfo("Curiosity", 29, Rarity.UNCOMMON, mage.cards.c.Curiosity.class));
+ cards.add(new SetCardInfo("Cursed Flesh", 56, Rarity.COMMON, mage.cards.c.CursedFlesh.class));
+ cards.add(new SetCardInfo("Dauthi Cutthroat", 57, Rarity.UNCOMMON, mage.cards.d.DauthiCutthroat.class));
+ cards.add(new SetCardInfo("Dauthi Jackal", 58, Rarity.COMMON, mage.cards.d.DauthiJackal.class));
+ cards.add(new SetCardInfo("Dauthi Warlord", 59, Rarity.UNCOMMON, mage.cards.d.DauthiWarlord.class));
+ cards.add(new SetCardInfo("Death's Duet", 60, Rarity.COMMON, mage.cards.d.DeathsDuet.class));
+ cards.add(new SetCardInfo("Dominating Licid", 30, Rarity.RARE, mage.cards.d.DominatingLicid.class));
+ cards.add(new SetCardInfo("Elven Palisade", 109, Rarity.UNCOMMON, mage.cards.e.ElvenPalisade.class));
+ cards.add(new SetCardInfo("Elvish Berserker", 110, Rarity.COMMON, mage.cards.e.ElvishBerserker.class));
+ cards.add(new SetCardInfo("Entropic Specter", 61, Rarity.RARE, mage.cards.e.EntropicSpecter.class));
+ cards.add(new SetCardInfo("Ephemeron", 31, Rarity.RARE, mage.cards.e.Ephemeron.class));
+ cards.add(new SetCardInfo("Equilibrium", 32, Rarity.RARE, mage.cards.e.Equilibrium.class));
+ cards.add(new SetCardInfo("Erratic Portal", 132, Rarity.RARE, mage.cards.e.ErraticPortal.class));
+ cards.add(new SetCardInfo("Ertai, Wizard Adept", 33, Rarity.RARE, mage.cards.e.ErtaiWizardAdept.class));
+ cards.add(new SetCardInfo("Exalted Dragon", 6, Rarity.RARE, mage.cards.e.ExaltedDragon.class));
+ cards.add(new SetCardInfo("Fade Away", 34, Rarity.COMMON, mage.cards.f.FadeAway.class));
+ cards.add(new SetCardInfo("Fighting Chance", 82, Rarity.RARE, mage.cards.f.FightingChance.class));
+ cards.add(new SetCardInfo("Flowstone Flood", 83, Rarity.UNCOMMON, mage.cards.f.FlowstoneFlood.class));
+ cards.add(new SetCardInfo("Forbid", 35, Rarity.UNCOMMON, mage.cards.f.Forbid.class));
+ cards.add(new SetCardInfo("Fugue", 62, Rarity.UNCOMMON, mage.cards.f.Fugue.class));
+ cards.add(new SetCardInfo("Furnace Brood", 84, Rarity.COMMON, mage.cards.f.FurnaceBrood.class));
+ cards.add(new SetCardInfo("Hatred", 64, Rarity.RARE, mage.cards.h.Hatred.class));
+ cards.add(new SetCardInfo("High Ground", 7, Rarity.UNCOMMON, mage.cards.h.HighGround.class));
+ cards.add(new SetCardInfo("Jackalope Herd", 111, Rarity.COMMON, mage.cards.j.JackalopeHerd.class));
+ cards.add(new SetCardInfo("Keeper of the Dead", 65, Rarity.UNCOMMON, mage.cards.k.KeeperOfTheDead.class));
+ cards.add(new SetCardInfo("Keeper of the Light", 8, Rarity.UNCOMMON, mage.cards.k.KeeperOfTheLight.class));
+ cards.add(new SetCardInfo("Killer Whale", 37, Rarity.UNCOMMON, mage.cards.k.KillerWhale.class));
+ cards.add(new SetCardInfo("Kor Chant", 9, Rarity.COMMON, mage.cards.k.KorChant.class));
+ cards.add(new SetCardInfo("Mage il-Vec", 86, Rarity.COMMON, mage.cards.m.MageIlVec.class));
+ cards.add(new SetCardInfo("Manabond", 113, Rarity.RARE, mage.cards.m.Manabond.class));
+ cards.add(new SetCardInfo("Mana Breach", 38, Rarity.UNCOMMON, mage.cards.m.ManaBreach.class));
+ cards.add(new SetCardInfo("Maniacal Rage", 87, Rarity.COMMON, mage.cards.m.ManiacalRage.class));
+ cards.add(new SetCardInfo("Medicine Bag", 133, Rarity.UNCOMMON, mage.cards.m.MedicineBag.class));
+ cards.add(new SetCardInfo("Memory Crystal", 134, Rarity.RARE, mage.cards.m.MemoryCrystal.class));
+ cards.add(new SetCardInfo("Merfolk Looter", 39, Rarity.COMMON, mage.cards.m.MerfolkLooter.class));
+ cards.add(new SetCardInfo("Mindless Automaton", 135, Rarity.RARE, mage.cards.m.MindlessAutomaton.class));
+ cards.add(new SetCardInfo("Mind Over Matter", 40, Rarity.RARE, mage.cards.m.MindOverMatter.class));
+ cards.add(new SetCardInfo("Mirozel", 41, Rarity.UNCOMMON, mage.cards.m.Mirozel.class));
+ cards.add(new SetCardInfo("Mirri, Cat Warrior", 114, Rarity.RARE, mage.cards.m.MirriCatWarrior.class));
+ cards.add(new SetCardInfo("Mogg Assassin", 88, Rarity.UNCOMMON, mage.cards.m.MoggAssassin.class));
+ cards.add(new SetCardInfo("Nausea", 67, Rarity.COMMON, mage.cards.n.Nausea.class));
+ cards.add(new SetCardInfo("Necrologia", 68, Rarity.UNCOMMON, mage.cards.n.Necrologia.class));
+ cards.add(new SetCardInfo("Null Brooch", 136, Rarity.RARE, mage.cards.n.NullBrooch.class));
+ cards.add(new SetCardInfo("Oath of Druids", 115, Rarity.RARE, mage.cards.o.OathOfDruids.class));
+ cards.add(new SetCardInfo("Oath of Ghouls", 69, Rarity.RARE, mage.cards.o.OathOfGhouls.class));
+ cards.add(new SetCardInfo("Oath of Lieges", 11, Rarity.RARE, mage.cards.o.OathOfLieges.class));
+ cards.add(new SetCardInfo("Oath of Mages", 90, Rarity.RARE, mage.cards.o.OathOfMages.class));
+ cards.add(new SetCardInfo("Oath of Scholars", 42, Rarity.RARE, mage.cards.o.OathOfScholars.class));
+ cards.add(new SetCardInfo("Ogre Shaman", 91, Rarity.RARE, mage.cards.o.OgreShaman.class));
+ cards.add(new SetCardInfo("Onslaught", 92, Rarity.COMMON, mage.cards.o.Onslaught.class));
+ cards.add(new SetCardInfo("Paladin en-Vec", 12, Rarity.RARE, mage.cards.p.PaladinEnVec.class));
+ cards.add(new SetCardInfo("Pandemonium", 93, Rarity.RARE, mage.cards.p.Pandemonium.class));
+ cards.add(new SetCardInfo("Peace of Mind", 13, Rarity.UNCOMMON, mage.cards.p.PeaceOfMind.class));
+ cards.add(new SetCardInfo("Pegasus Stampede", 14, Rarity.UNCOMMON, mage.cards.p.PegasusStampede.class));
+ cards.add(new SetCardInfo("Penance", 15, Rarity.UNCOMMON, mage.cards.p.Penance.class));
+ cards.add(new SetCardInfo("Pit Spawn", 70, Rarity.RARE, mage.cards.p.PitSpawn.class));
+ cards.add(new SetCardInfo("Plaguebearer", 71, Rarity.RARE, mage.cards.p.Plaguebearer.class));
+ cards.add(new SetCardInfo("Plated Rootwalla", 116, Rarity.COMMON, mage.cards.p.PlatedRootwalla.class));
+ cards.add(new SetCardInfo("Predatory Hunger", 117, Rarity.COMMON, mage.cards.p.PredatoryHunger.class));
+ cards.add(new SetCardInfo("Price of Progress", 95, Rarity.UNCOMMON, mage.cards.p.PriceOfProgress.class));
+ cards.add(new SetCardInfo("Pygmy Troll", 118, Rarity.COMMON, mage.cards.p.PygmyTroll.class));
+ cards.add(new SetCardInfo("Rabid Wolverines", 119, Rarity.COMMON, mage.cards.r.RabidWolverines.class));
+ cards.add(new SetCardInfo("Raging Goblin", 96, Rarity.COMMON, mage.cards.r.RagingGoblin.class));
+ cards.add(new SetCardInfo("Ravenous Baboons", 97, Rarity.RARE, mage.cards.r.RavenousBaboons.class));
+ cards.add(new SetCardInfo("Reaping the Rewards", 16, Rarity.COMMON, mage.cards.r.ReapingTheRewards.class));
+ cards.add(new SetCardInfo("Reckless Ogre", 98, Rarity.COMMON, mage.cards.r.RecklessOgre.class));
+ cards.add(new SetCardInfo("Reclaim", 120, Rarity.COMMON, mage.cards.r.Reclaim.class));
+ cards.add(new SetCardInfo("Reconnaissance", 17, Rarity.UNCOMMON, mage.cards.r.Reconnaissance.class));
+ cards.add(new SetCardInfo("Recurring Nightmare", 72, Rarity.RARE, mage.cards.r.RecurringNightmare.class));
+ cards.add(new SetCardInfo("Resuscitate", 121, Rarity.UNCOMMON, mage.cards.r.Resuscitate.class));
+ cards.add(new SetCardInfo("Robe of Mirrors", 43, Rarity.COMMON, mage.cards.r.RobeOfMirrors.class));
+ cards.add(new SetCardInfo("Rootwater Alligator", 122, Rarity.COMMON, mage.cards.r.RootwaterAlligator.class));
+ cards.add(new SetCardInfo("Rootwater Mystic", 44, Rarity.COMMON, mage.cards.r.RootwaterMystic.class));
+ cards.add(new SetCardInfo("Sabertooth Wyvern", 99, Rarity.UNCOMMON, mage.cards.s.SabertoothWyvern.class));
+ cards.add(new SetCardInfo("Scalding Salamander", 100, Rarity.UNCOMMON, mage.cards.s.ScaldingSalamander.class));
+ cards.add(new SetCardInfo("Scare Tactics", 73, Rarity.COMMON, mage.cards.s.ScareTactics.class));
+ cards.add(new SetCardInfo("School of Piranha", 45, Rarity.COMMON, mage.cards.s.SchoolOfPiranha.class));
+ cards.add(new SetCardInfo("Scrivener", 46, Rarity.UNCOMMON, mage.cards.s.Scrivener.class));
+ cards.add(new SetCardInfo("Seismic Assault", 101, Rarity.RARE, mage.cards.s.SeismicAssault.class));
+ cards.add(new SetCardInfo("Shackles", 18, Rarity.COMMON, mage.cards.s.Shackles.class));
+ cards.add(new SetCardInfo("Shattering Pulse", 102, Rarity.COMMON, mage.cards.s.ShatteringPulse.class));
+ cards.add(new SetCardInfo("Shield Mate", 19, Rarity.COMMON, mage.cards.s.ShieldMate.class));
+ cards.add(new SetCardInfo("Skyshaper", 137, Rarity.UNCOMMON, mage.cards.s.Skyshaper.class));
+ cards.add(new SetCardInfo("Skyshroud Elite", 123, Rarity.UNCOMMON, mage.cards.s.SkyshroudElite.class));
+ cards.add(new SetCardInfo("Skyshroud War Beast", 124, Rarity.RARE, mage.cards.s.SkyshroudWarBeast.class));
+ cards.add(new SetCardInfo("Slaughter", 74, Rarity.UNCOMMON, mage.cards.s.Slaughter.class));
+ cards.add(new SetCardInfo("Soltari Visionary", 20, Rarity.COMMON, mage.cards.s.SoltariVisionary.class));
+ cards.add(new SetCardInfo("Song of Serenity", 125, Rarity.UNCOMMON, mage.cards.s.SongOfSerenity.class));
+ cards.add(new SetCardInfo("Sonic Burst", 103, Rarity.COMMON, mage.cards.s.SonicBurst.class));
+ cards.add(new SetCardInfo("Soul Warden", 21, Rarity.COMMON, mage.cards.s.SoulWarden.class));
+ cards.add(new SetCardInfo("Spellbook", 138, Rarity.UNCOMMON, mage.cards.s.Spellbook.class));
+ cards.add(new SetCardInfo("Spellshock", 104, Rarity.UNCOMMON, mage.cards.s.Spellshock.class));
+ cards.add(new SetCardInfo("Sphere of Resistance", 139, Rarity.RARE, mage.cards.s.SphereOfResistance.class));
+ cards.add(new SetCardInfo("Spike Cannibal", 75, Rarity.UNCOMMON, mage.cards.s.SpikeCannibal.class));
+ cards.add(new SetCardInfo("Spike Hatcher", 126, Rarity.RARE, mage.cards.s.SpikeHatcher.class));
+ cards.add(new SetCardInfo("Spike Rogue", 127, Rarity.UNCOMMON, mage.cards.s.SpikeRogue.class));
+ cards.add(new SetCardInfo("Spike Weaver", 128, Rarity.RARE, mage.cards.s.SpikeWeaver.class));
+ cards.add(new SetCardInfo("Standing Troops", 22, Rarity.COMMON, mage.cards.s.StandingTroops.class));
+ cards.add(new SetCardInfo("Survival of the Fittest", 129, Rarity.RARE, mage.cards.s.SurvivalOfTheFittest.class));
+ cards.add(new SetCardInfo("Thalakos Drifters", 47, Rarity.RARE, mage.cards.t.ThalakosDrifters.class));
+ cards.add(new SetCardInfo("Thalakos Scout", 48, Rarity.COMMON, mage.cards.t.ThalakosScout.class));
+ cards.add(new SetCardInfo("Theft of Dreams", 49, Rarity.COMMON, mage.cards.t.TheftOfDreams.class));
+ cards.add(new SetCardInfo("Thopter Squadron", 140, Rarity.RARE, mage.cards.t.ThopterSquadron.class));
+ cards.add(new SetCardInfo("Thrull Surgeon", 76, Rarity.COMMON, mage.cards.t.ThrullSurgeon.class));
+ cards.add(new SetCardInfo("Transmogrifying Licid", 141, Rarity.UNCOMMON, mage.cards.t.TransmogrifyingLicid.class));
+ cards.add(new SetCardInfo("Treasure Hunter", 23, Rarity.UNCOMMON, mage.cards.t.TreasureHunter.class));
+ cards.add(new SetCardInfo("Treasure Trove", 50, Rarity.UNCOMMON, mage.cards.t.TreasureTrove.class));
+ cards.add(new SetCardInfo("Vampire Hounds", 77, Rarity.COMMON, mage.cards.v.VampireHounds.class));
+ cards.add(new SetCardInfo("Wall of Nets", 24, Rarity.RARE, mage.cards.w.WallOfNets.class));
+ cards.add(new SetCardInfo("Wayward Soul", 51, Rarity.COMMON, mage.cards.w.WaywardSoul.class));
+ cards.add(new SetCardInfo("Welkin Hawk", 25, Rarity.COMMON, mage.cards.w.WelkinHawk.class));
+ cards.add(new SetCardInfo("Whiptongue Frog", 52, Rarity.COMMON, mage.cards.w.WhiptongueFrog.class));
+ cards.add(new SetCardInfo("Wood Elves", 130, Rarity.COMMON, mage.cards.w.WoodElves.class));
+ cards.add(new SetCardInfo("Workhorse", 142, Rarity.RARE, mage.cards.w.Workhorse.class));
+ cards.add(new SetCardInfo("Zealots en-Dal", 26, Rarity.UNCOMMON, mage.cards.z.ZealotsEnDal.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ExplorersOfIxalan.java b/Mage.Sets/src/mage/sets/ExplorersOfIxalan.java
index 7b52472af51..abc8c94947e 100644
--- a/Mage.Sets/src/mage/sets/ExplorersOfIxalan.java
+++ b/Mage.Sets/src/mage/sets/ExplorersOfIxalan.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author JayDi85
*/
-public class ExplorersOfIxalan extends ExpansionSet {
+public final class ExplorersOfIxalan extends ExpansionSet {
private static final ExplorersOfIxalan instance = new ExplorersOfIxalan();
diff --git a/Mage.Sets/src/mage/sets/FTVAngels.java b/Mage.Sets/src/mage/sets/FTVAngels.java
index 238438a6d79..58eaa151a1c 100644
--- a/Mage.Sets/src/mage/sets/FTVAngels.java
+++ b/Mage.Sets/src/mage/sets/FTVAngels.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class FTVAngels extends ExpansionSet {
+public final class FTVAngels extends ExpansionSet {
private static final FTVAngels instance = new FTVAngels();
diff --git a/Mage.Sets/src/mage/sets/FTVAnnihilation.java b/Mage.Sets/src/mage/sets/FTVAnnihilation.java
index 1c2d737163d..1e64f1d85f6 100644
--- a/Mage.Sets/src/mage/sets/FTVAnnihilation.java
+++ b/Mage.Sets/src/mage/sets/FTVAnnihilation.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class FTVAnnihilation extends ExpansionSet {
+public final class FTVAnnihilation extends ExpansionSet {
private static final FTVAnnihilation instance = new FTVAnnihilation();
diff --git a/Mage.Sets/src/mage/sets/FTVDragons.java b/Mage.Sets/src/mage/sets/FTVDragons.java
index e3eb1af59e3..5d54c748f8e 100644
--- a/Mage.Sets/src/mage/sets/FTVDragons.java
+++ b/Mage.Sets/src/mage/sets/FTVDragons.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class FTVDragons extends ExpansionSet {
+public final class FTVDragons extends ExpansionSet {
private static final FTVDragons instance = new FTVDragons();
diff --git a/Mage.Sets/src/mage/sets/FTVExiled.java b/Mage.Sets/src/mage/sets/FTVExiled.java
index 6c5717ca94d..d94d6f102c5 100644
--- a/Mage.Sets/src/mage/sets/FTVExiled.java
+++ b/Mage.Sets/src/mage/sets/FTVExiled.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class FTVExiled extends ExpansionSet {
+public final class FTVExiled extends ExpansionSet {
private static final FTVExiled instance = new FTVExiled();
diff --git a/Mage.Sets/src/mage/sets/FTVLegends.java b/Mage.Sets/src/mage/sets/FTVLegends.java
index d5b37fdd230..1557c2ef35c 100644
--- a/Mage.Sets/src/mage/sets/FTVLegends.java
+++ b/Mage.Sets/src/mage/sets/FTVLegends.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class FTVLegends extends ExpansionSet {
+public final class FTVLegends extends ExpansionSet {
private static final FTVLegends instance = new FTVLegends();
diff --git a/Mage.Sets/src/mage/sets/FTVLore.java b/Mage.Sets/src/mage/sets/FTVLore.java
index 9eba986c732..6d40d99686e 100644
--- a/Mage.Sets/src/mage/sets/FTVLore.java
+++ b/Mage.Sets/src/mage/sets/FTVLore.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class FTVLore extends ExpansionSet {
+public final class FTVLore extends ExpansionSet {
private static final FTVLore instance = new FTVLore();
diff --git a/Mage.Sets/src/mage/sets/FTVRealms.java b/Mage.Sets/src/mage/sets/FTVRealms.java
index 568dfef96fe..430b35f8920 100644
--- a/Mage.Sets/src/mage/sets/FTVRealms.java
+++ b/Mage.Sets/src/mage/sets/FTVRealms.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class FTVRealms extends ExpansionSet {
+public final class FTVRealms extends ExpansionSet {
private static final FTVRealms instance = new FTVRealms();
diff --git a/Mage.Sets/src/mage/sets/FTVRelics.java b/Mage.Sets/src/mage/sets/FTVRelics.java
index 0c31c9c432f..6de9459bfa1 100644
--- a/Mage.Sets/src/mage/sets/FTVRelics.java
+++ b/Mage.Sets/src/mage/sets/FTVRelics.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class FTVRelics extends ExpansionSet {
+public final class FTVRelics extends ExpansionSet {
private static final FTVRelics instance = new FTVRelics();
diff --git a/Mage.Sets/src/mage/sets/FTVTransform.java b/Mage.Sets/src/mage/sets/FTVTransform.java
index 042dbd54ed8..a70ad77ea15 100644
--- a/Mage.Sets/src/mage/sets/FTVTransform.java
+++ b/Mage.Sets/src/mage/sets/FTVTransform.java
@@ -28,13 +28,14 @@
package mage.sets;
import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
import mage.constants.SetType;
/**
*
* @author fireshoes
*/
-public class FTVTransform extends ExpansionSet {
+public final class FTVTransform extends ExpansionSet {
private static final FTVTransform instance = new FTVTransform();
@@ -45,5 +46,35 @@ public class FTVTransform extends ExpansionSet {
private FTVTransform() {
super("From the Vault: Transform", "V17", ExpansionSet.buildDate(2017, 11, 24), SetType.SUPPLEMENTAL);
this.hasBasicLands = false;
+ cards.add(new SetCardInfo("Archangel Avacyn", 1, Rarity.MYTHIC, mage.cards.a.ArchangelAvacyn.class));
+ cards.add(new SetCardInfo("Avacyn, the Purifier", 1001, Rarity.MYTHIC, mage.cards.a.AvacynThePurifier.class));
+ cards.add(new SetCardInfo("Arguel's Blood Fast", 2, Rarity.MYTHIC, mage.cards.a.ArguelsBloodFast.class));
+ cards.add(new SetCardInfo("Temple of Aclazotz", 1002, Rarity.MYTHIC, mage.cards.t.TempleOfAclazotz.class));
+ cards.add(new SetCardInfo("Arlinn Kord", 3, Rarity.MYTHIC, mage.cards.a.ArlinnKord.class));
+ cards.add(new SetCardInfo("Arlinn, Embraced by the Moon", 1003, Rarity.MYTHIC, mage.cards.a.ArlinnEmbracedByTheMoon.class));
+ cards.add(new SetCardInfo("Bloodline Keeper", 4, Rarity.MYTHIC, mage.cards.b.BloodlineKeeper.class));
+ cards.add(new SetCardInfo("Lord of Lineage", 1004, Rarity.MYTHIC, mage.cards.l.LordOfLineage.class));
+ cards.add(new SetCardInfo("Bruna, the Fading Light", 5, Rarity.MYTHIC, mage.cards.b.BrunaTheFadingLight.class));
+ cards.add(new SetCardInfo("Brisela, Voice of Nightmares", 1005, Rarity.MYTHIC, mage.cards.b.BriselaVoiceOfNightmares.class));
+ cards.add(new SetCardInfo("Brisela, Voice of Nightmares", 1005, Rarity.MYTHIC, mage.cards.b.BriselaVoiceOfNightmares.class));
+ cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 6, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class));
+ cards.add(new SetCardInfo("Chandra, Roaring Flame", 1006, Rarity.MYTHIC, mage.cards.c.ChandraRoaringFlame.class));
+ cards.add(new SetCardInfo("Delver of Secrets", 7, Rarity.MYTHIC, mage.cards.d.DelverOfSecrets.class));
+ cards.add(new SetCardInfo("Insectile Aberration", 1007, Rarity.MYTHIC, mage.cards.i.InsectileAberration.class));
+ cards.add(new SetCardInfo("Elbrus, the Binding Blade", 8, Rarity.MYTHIC, mage.cards.e.ElbrusTheBindingBlade.class));
+ cards.add(new SetCardInfo("Withengar Unbound", 1008, Rarity.MYTHIC, mage.cards.w.WithengarUnbound.class));
+ cards.add(new SetCardInfo("Garruk Relentless", 9, Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class));
+ cards.add(new SetCardInfo("Garruk, the Veil-Cursed", 1009, Rarity.MYTHIC, mage.cards.g.GarrukTheVeilCursed.class));
+ cards.add(new SetCardInfo("Gisela, the Broken Blade", 10, Rarity.MYTHIC, mage.cards.g.GiselaTheBrokenBlade.class));
+ cards.add(new SetCardInfo("Huntmaster of the Fells", 11, Rarity.MYTHIC, mage.cards.h.HuntmasterOfTheFells.class));
+ cards.add(new SetCardInfo("Ravager of the Fells", 1011, Rarity.MYTHIC, mage.cards.r.RavagerOfTheFells.class));
+ cards.add(new SetCardInfo("Jace, Vryn's Prodigy", 12, Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class));
+ cards.add(new SetCardInfo("Jace, Telepath Unbound", 1012, Rarity.MYTHIC, mage.cards.j.JaceTelepathUnbound.class));
+ cards.add(new SetCardInfo("Kytheon, Hero of Akros", 13, Rarity.MYTHIC, mage.cards.k.KytheonHeroOfAkros.class));
+ cards.add(new SetCardInfo("Gideon, Battle-Forged", 1013, Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class));
+ cards.add(new SetCardInfo("Liliana, Heretical Healer", 14, Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class));
+ cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 1014, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class));
+ cards.add(new SetCardInfo("Nissa, Vastwood Seer", 15, Rarity.MYTHIC, mage.cards.n.NissaVastwoodSeer.class));
+ cards.add(new SetCardInfo("Nissa, Sage Animist", 1015, Rarity.MYTHIC, mage.cards.n.NissaSageAnimist.class));
}
}
diff --git a/Mage.Sets/src/mage/sets/FTVTwenty.java b/Mage.Sets/src/mage/sets/FTVTwenty.java
index 66c8358bf27..abf77c67904 100644
--- a/Mage.Sets/src/mage/sets/FTVTwenty.java
+++ b/Mage.Sets/src/mage/sets/FTVTwenty.java
@@ -36,7 +36,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class FTVTwenty extends ExpansionSet {
+public final class FTVTwenty extends ExpansionSet {
private static final FTVTwenty instance = new FTVTwenty();
diff --git a/Mage.Sets/src/mage/sets/FallenEmpires.java b/Mage.Sets/src/mage/sets/FallenEmpires.java
index cd08318f457..44e695174c2 100644
--- a/Mage.Sets/src/mage/sets/FallenEmpires.java
+++ b/Mage.Sets/src/mage/sets/FallenEmpires.java
@@ -66,7 +66,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class FallenEmpires extends ExpansionSet {
+public final class FallenEmpires extends ExpansionSet {
private static final FallenEmpires instance = new FallenEmpires();
diff --git a/Mage.Sets/src/mage/sets/FateReforged.java b/Mage.Sets/src/mage/sets/FateReforged.java
index 8fbba8c2df1..08dfb11ad6a 100644
--- a/Mage.Sets/src/mage/sets/FateReforged.java
+++ b/Mage.Sets/src/mage/sets/FateReforged.java
@@ -42,7 +42,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class FateReforged extends ExpansionSet {
+public final class FateReforged extends ExpansionSet {
private static final FateReforged instance = new FateReforged();
diff --git a/Mage.Sets/src/mage/sets/FifthDawn.java b/Mage.Sets/src/mage/sets/FifthDawn.java
index d50c83b57c8..813b733d28d 100644
--- a/Mage.Sets/src/mage/sets/FifthDawn.java
+++ b/Mage.Sets/src/mage/sets/FifthDawn.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class FifthDawn extends ExpansionSet {
+public final class FifthDawn extends ExpansionSet {
private static final FifthDawn instance = new FifthDawn();
diff --git a/Mage.Sets/src/mage/sets/FifthEdition.java b/Mage.Sets/src/mage/sets/FifthEdition.java
index cc7edc5fc54..ed2e2c43d9b 100644
--- a/Mage.Sets/src/mage/sets/FifthEdition.java
+++ b/Mage.Sets/src/mage/sets/FifthEdition.java
@@ -16,7 +16,7 @@ import mage.cards.v.VodalianSoldiers;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class FifthEdition extends ExpansionSet {
+public final class FifthEdition extends ExpansionSet {
private static final FifthEdition instance = new FifthEdition();
diff --git a/Mage.Sets/src/mage/sets/FourthEdition.java b/Mage.Sets/src/mage/sets/FourthEdition.java
index 621e2613f89..1c003ae3032 100644
--- a/Mage.Sets/src/mage/sets/FourthEdition.java
+++ b/Mage.Sets/src/mage/sets/FourthEdition.java
@@ -37,7 +37,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class FourthEdition extends ExpansionSet {
+public final class FourthEdition extends ExpansionSet {
private static final FourthEdition instance = new FourthEdition();
diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic.java b/Mage.Sets/src/mage/sets/FridayNightMagic.java
index 89064a4c5f0..6b2da71709f 100644
--- a/Mage.Sets/src/mage/sets/FridayNightMagic.java
+++ b/Mage.Sets/src/mage/sets/FridayNightMagic.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class FridayNightMagic extends ExpansionSet {
+public final class FridayNightMagic extends ExpansionSet {
private static final FridayNightMagic instance = new FridayNightMagic();
diff --git a/Mage.Sets/src/mage/sets/FutureSight.java b/Mage.Sets/src/mage/sets/FutureSight.java
index f1ff59de3c8..ce076704caa 100644
--- a/Mage.Sets/src/mage/sets/FutureSight.java
+++ b/Mage.Sets/src/mage/sets/FutureSight.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class FutureSight extends ExpansionSet {
+public final class FutureSight extends ExpansionSet {
private static final FutureSight instance = new FutureSight();
diff --git a/Mage.Sets/src/mage/sets/GameDay.java b/Mage.Sets/src/mage/sets/GameDay.java
index 2935fa28447..a9b76e1357c 100644
--- a/Mage.Sets/src/mage/sets/GameDay.java
+++ b/Mage.Sets/src/mage/sets/GameDay.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class GameDay extends ExpansionSet {
+public final class GameDay extends ExpansionSet {
private static final GameDay instance = new GameDay();
diff --git a/Mage.Sets/src/mage/sets/GarrukVsLiliana.java b/Mage.Sets/src/mage/sets/GarrukVsLiliana.java
index f3c0889bcc1..f1d2fe5342d 100644
--- a/Mage.Sets/src/mage/sets/GarrukVsLiliana.java
+++ b/Mage.Sets/src/mage/sets/GarrukVsLiliana.java
@@ -13,7 +13,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class GarrukVsLiliana extends ExpansionSet {
+public final class GarrukVsLiliana extends ExpansionSet {
private static final GarrukVsLiliana instance = new GarrukVsLiliana();
diff --git a/Mage.Sets/src/mage/sets/Gatecrash.java b/Mage.Sets/src/mage/sets/Gatecrash.java
index 54a06ec5678..12164fc4ac7 100644
--- a/Mage.Sets/src/mage/sets/Gatecrash.java
+++ b/Mage.Sets/src/mage/sets/Gatecrash.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class Gatecrash extends ExpansionSet {
+public final class Gatecrash extends ExpansionSet {
private static final Gatecrash instance = new Gatecrash();
diff --git a/Mage.Sets/src/mage/sets/GrandPrix.java b/Mage.Sets/src/mage/sets/GrandPrix.java
index 6fde3e6c14a..7b9bf44a8bf 100644
--- a/Mage.Sets/src/mage/sets/GrandPrix.java
+++ b/Mage.Sets/src/mage/sets/GrandPrix.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class GrandPrix extends ExpansionSet {
+public final class GrandPrix extends ExpansionSet {
private static final GrandPrix instance = new GrandPrix();
diff --git a/Mage.Sets/src/mage/sets/Guildpact.java b/Mage.Sets/src/mage/sets/Guildpact.java
index e1d9e70c17f..c2d1b7007d8 100644
--- a/Mage.Sets/src/mage/sets/Guildpact.java
+++ b/Mage.Sets/src/mage/sets/Guildpact.java
@@ -1,218 +1,219 @@
-/*
-* 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.Rarity;
-import mage.constants.SetType;
-
-/**
- * Created by IntelliJ IDEA. User: Loki Date: 20.12.10 Time: 21:01
- */
-public class Guildpact extends ExpansionSet {
-
- private static final Guildpact instance = new Guildpact();
-
- public static Guildpact getInstance() {
- return instance;
- }
-
- 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("Bioplasm", 81, Rarity.RARE, mage.cards.b.Bioplasm.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("Crash Landing", 82, Rarity.UNCOMMON, mage.cards.c.CrashLanding.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("Cryptwailing", 47, Rarity.UNCOMMON, mage.cards.c.Cryptwailing.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("Droning Bureaucrats", 4, Rarity.UNCOMMON, mage.cards.d.DroningBureaucrats.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("Gatherer of Graces", 85, Rarity.UNCOMMON, mage.cards.g.GathererOfGraces.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("Killer Instinct", 120, Rarity.RARE, mage.cards.k.KillerInstinct.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("Living Inferno", 69, Rarity.RARE, mage.cards.l.LivingInferno.class));
- cards.add(new SetCardInfo("Martyred Rusalka", 12, Rarity.UNCOMMON, mage.cards.m.MartyredRusalka.class));
- cards.add(new SetCardInfo("Mimeofacture", 30, Rarity.RARE, mage.cards.m.Mimeofacture.class));
- cards.add(new SetCardInfo("Mizzium Transreliquat", 153, Rarity.RARE, mage.cards.m.MizziumTransreliquat.class));
- cards.add(new SetCardInfo("Moratorium Stone", 154, Rarity.RARE, mage.cards.m.MoratoriumStone.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("Parallectric Feedback", 71, Rarity.RARE, mage.cards.p.ParallectricFeedback.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("Primeval Light", 93, Rarity.UNCOMMON, mage.cards.p.PrimevalLight.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("Seize the Soul", 61, Rarity.RARE, mage.cards.s.SeizeTheSoul.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("Sinstriker's Will", 16, Rarity.UNCOMMON, mage.cards.s.SinstrikersWill.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("Sky Swallower", 34, Rarity.RARE, mage.cards.s.SkySwallower.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ * Created by IntelliJ IDEA. User: Loki Date: 20.12.10 Time: 21:01
+ */
+public final class Guildpact extends ExpansionSet {
+
+ private static final Guildpact instance = new Guildpact();
+
+ public static Guildpact getInstance() {
+ return instance;
+ }
+
+ 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("Bioplasm", 81, Rarity.RARE, mage.cards.b.Bioplasm.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("Crash Landing", 82, Rarity.UNCOMMON, mage.cards.c.CrashLanding.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("Cryptwailing", 47, Rarity.UNCOMMON, mage.cards.c.Cryptwailing.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("Droning Bureaucrats", 4, Rarity.UNCOMMON, mage.cards.d.DroningBureaucrats.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("Gatherer of Graces", 85, Rarity.UNCOMMON, mage.cards.g.GathererOfGraces.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("Killer Instinct", 120, Rarity.RARE, mage.cards.k.KillerInstinct.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("Living Inferno", 69, Rarity.RARE, mage.cards.l.LivingInferno.class));
+ cards.add(new SetCardInfo("Martyred Rusalka", 12, Rarity.UNCOMMON, mage.cards.m.MartyredRusalka.class));
+ cards.add(new SetCardInfo("Mimeofacture", 30, Rarity.RARE, mage.cards.m.Mimeofacture.class));
+ cards.add(new SetCardInfo("Mizzium Transreliquat", 153, Rarity.RARE, mage.cards.m.MizziumTransreliquat.class));
+ cards.add(new SetCardInfo("Moratorium Stone", 154, Rarity.RARE, mage.cards.m.MoratoriumStone.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("Parallectric Feedback", 71, Rarity.RARE, mage.cards.p.ParallectricFeedback.class));
+ cards.add(new SetCardInfo("Petrahydrox", 148, Rarity.COMMON, mage.cards.p.Petrahydrox.class));
+ cards.add(new SetCardInfo("Petrified Wood-Kin", 91, Rarity.RARE, mage.cards.p.PetrifiedWoodKin.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("Primeval Light", 93, Rarity.UNCOMMON, mage.cards.p.PrimevalLight.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("Seize the Soul", 61, Rarity.RARE, mage.cards.s.SeizeTheSoul.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("Sinstriker's Will", 16, Rarity.UNCOMMON, mage.cards.s.SinstrikersWill.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("Sky Swallower", 34, Rarity.RARE, mage.cards.s.SkySwallower.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));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Guru.java b/Mage.Sets/src/mage/sets/Guru.java
index 7c4ad17f65b..f3739fd241e 100644
--- a/Mage.Sets/src/mage/sets/Guru.java
+++ b/Mage.Sets/src/mage/sets/Guru.java
@@ -4,7 +4,7 @@ import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class Guru extends ExpansionSet {
+public final class Guru extends ExpansionSet {
private static final Guru instance = new Guru();
diff --git a/Mage.Sets/src/mage/sets/HappyHolidays.java b/Mage.Sets/src/mage/sets/HappyHolidays.java
index fe9b3e62ddf..5f335b3e996 100644
--- a/Mage.Sets/src/mage/sets/HappyHolidays.java
+++ b/Mage.Sets/src/mage/sets/HappyHolidays.java
@@ -8,7 +8,7 @@ import mage.constants.SetType;
*
* @author spjspj
*/
-public class HappyHolidays extends ExpansionSet {
+public final class HappyHolidays extends ExpansionSet {
private static final HappyHolidays instance = new HappyHolidays();
diff --git a/Mage.Sets/src/mage/sets/HasconPromo2017.java b/Mage.Sets/src/mage/sets/HasconPromo2017.java
index f1392050cf0..9e7dd50f632 100644
--- a/Mage.Sets/src/mage/sets/HasconPromo2017.java
+++ b/Mage.Sets/src/mage/sets/HasconPromo2017.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author Saga
*/
-public class HasconPromo2017 extends ExpansionSet {
+public final class HasconPromo2017 extends ExpansionSet {
private static final HasconPromo2017 instance = new HasconPromo2017();
diff --git a/Mage.Sets/src/mage/sets/HeroesVsMonsters.java b/Mage.Sets/src/mage/sets/HeroesVsMonsters.java
index d2443ae1687..0e2549f07bd 100644
--- a/Mage.Sets/src/mage/sets/HeroesVsMonsters.java
+++ b/Mage.Sets/src/mage/sets/HeroesVsMonsters.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class HeroesVsMonsters extends ExpansionSet {
+public final class HeroesVsMonsters extends ExpansionSet {
private static final HeroesVsMonsters instance = new HeroesVsMonsters();
diff --git a/Mage.Sets/src/mage/sets/Homelands.java b/Mage.Sets/src/mage/sets/Homelands.java
index 28a764fa8ea..a632eb739b2 100644
--- a/Mage.Sets/src/mage/sets/Homelands.java
+++ b/Mage.Sets/src/mage/sets/Homelands.java
@@ -1,193 +1,193 @@
-/*
- * 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.cards.a.AbbeyMatron;
-import mage.cards.a.AlibansTower;
-import mage.cards.c.CemeteryGate;
-import mage.cards.d.DrySpell;
-import mage.cards.d.DwarvenTrader;
-import mage.cards.f.FeastOfTheUnicorn;
-import mage.cards.f.FolkOfAnHavva;
-import mage.cards.m.MesaFalcon;
-import mage.cards.r.ReefPirates;
-import mage.cards.s.SengirBats;
-import mage.cards.t.Torture;
-import mage.cards.w.WillowFaerie;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class Homelands extends ExpansionSet {
-
- private static final Homelands instance = new Homelands();
-
- public static Homelands getInstance() {
- return instance;
- }
-
- private Homelands() {
- super("Homelands", "HML", ExpansionSet.buildDate(1995, 9, 1), SetType.EXPANSION);
- this.hasBasicLands = false;
- this.hasBoosters = true;
- this.numBoosterLands = 1;
- this.numBoosterCommon = 10;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Abbey Gargoyles", 1, Rarity.UNCOMMON, mage.cards.a.AbbeyGargoyles.class));
- cards.add(new SetCardInfo("Abbey Matron", "2a", Rarity.COMMON, AbbeyMatron.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Abbey Matron", "2b", Rarity.COMMON, AbbeyMatron.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Aether Storm", 21, Rarity.UNCOMMON, mage.cards.a.AetherStorm.class));
- cards.add(new SetCardInfo("Aliban's Tower", "61a", Rarity.COMMON, AlibansTower.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Aliban's Tower", "61b", Rarity.COMMON, AlibansTower.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ambush Party", "63a", Rarity.COMMON, mage.cards.a.AmbushParty.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ambush Party", "63b", Rarity.COMMON, mage.cards.a.AmbushParty.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ambush", 62, Rarity.COMMON, mage.cards.a.Ambush.class));
- cards.add(new SetCardInfo("An-Havva Constable", 81, Rarity.RARE, mage.cards.a.AnHavvaConstable.class));
- cards.add(new SetCardInfo("An-Havva Inn", 82, Rarity.UNCOMMON, mage.cards.a.AnHavvaInn.class));
- cards.add(new SetCardInfo("An-Havva Township", 111, Rarity.UNCOMMON, mage.cards.a.AnHavvaTownship.class));
- cards.add(new SetCardInfo("An-Zerrin Ruins", 64, Rarity.RARE, mage.cards.a.AnZerrinRuins.class));
- cards.add(new SetCardInfo("Anaba Ancestor", 65, Rarity.RARE, mage.cards.a.AnabaAncestor.class));
- cards.add(new SetCardInfo("Anaba Bodyguard", "66a", Rarity.COMMON, mage.cards.a.AnabaBodyguard.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Anaba Bodyguard", "66b", Rarity.COMMON, mage.cards.a.AnabaBodyguard.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Anaba Shaman", "67a", Rarity.COMMON, mage.cards.a.AnabaShaman.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Anaba Shaman", "67b", Rarity.COMMON, mage.cards.a.AnabaShaman.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Anaba Spirit Crafter", 68, Rarity.RARE, mage.cards.a.AnabaSpiritCrafter.class));
- cards.add(new SetCardInfo("Apocalypse Chime", 101, Rarity.RARE, mage.cards.a.ApocalypseChime.class));
- cards.add(new SetCardInfo("Autumn Willow", 83, Rarity.RARE, mage.cards.a.AutumnWillow.class));
- cards.add(new SetCardInfo("Aysen Abbey", 112, Rarity.UNCOMMON, mage.cards.a.AysenAbbey.class));
- cards.add(new SetCardInfo("Aysen Bureaucrats", "3a", Rarity.COMMON, mage.cards.a.AysenBureaucrats.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Aysen Bureaucrats", "3b", Rarity.COMMON, mage.cards.a.AysenBureaucrats.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Aysen Crusader", 4, Rarity.RARE, mage.cards.a.AysenCrusader.class));
- cards.add(new SetCardInfo("Aysen Highway", 5, Rarity.RARE, mage.cards.a.AysenHighway.class));
- cards.add(new SetCardInfo("Baki's Curse", 22, Rarity.RARE, mage.cards.b.BakisCurse.class));
- cards.add(new SetCardInfo("Baron Sengir", 41, Rarity.RARE, mage.cards.b.BaronSengir.class));
- cards.add(new SetCardInfo("Beast Walkers", 6, Rarity.RARE, mage.cards.b.BeastWalkers.class));
- cards.add(new SetCardInfo("Black Carriage", 42, Rarity.RARE, mage.cards.b.BlackCarriage.class));
- cards.add(new SetCardInfo("Broken Visage", 43, Rarity.RARE, mage.cards.b.BrokenVisage.class));
- cards.add(new SetCardInfo("Carapace", "84a", Rarity.COMMON, mage.cards.c.Carapace.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Carapace", "84b", Rarity.COMMON, mage.cards.c.Carapace.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Castle Sengir", 113, Rarity.UNCOMMON, mage.cards.c.CastleSengir.class));
- cards.add(new SetCardInfo("Cemetery Gate", "44a", Rarity.COMMON, CemeteryGate.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Cemetery Gate", "44b", Rarity.COMMON, CemeteryGate.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Chain Stasis", 23, Rarity.RARE, mage.cards.c.ChainStasis.class));
- cards.add(new SetCardInfo("Chandler", 69, Rarity.COMMON, mage.cards.c.Chandler.class));
- cards.add(new SetCardInfo("Clockwork Gnomes", 102, Rarity.COMMON, mage.cards.c.ClockworkGnomes.class));
- cards.add(new SetCardInfo("Clockwork Steed", 103, Rarity.UNCOMMON, mage.cards.c.ClockworkSteed.class));
- cards.add(new SetCardInfo("Clockwork Swarm", 104, Rarity.COMMON, mage.cards.c.ClockworkSwarm.class));
- cards.add(new SetCardInfo("Coral Reef", 24, Rarity.COMMON, mage.cards.c.CoralReef.class));
- cards.add(new SetCardInfo("Dark Maze", "25a", Rarity.COMMON, mage.cards.d.DarkMaze.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Dark Maze", "25b", Rarity.COMMON, mage.cards.d.DarkMaze.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Daughter of Autumn", 85, Rarity.RARE, mage.cards.d.DaughterOfAutumn.class));
- cards.add(new SetCardInfo("Death Speakers", 7, Rarity.UNCOMMON, mage.cards.d.DeathSpeakers.class));
- cards.add(new SetCardInfo("Didgeridoo", 105, Rarity.RARE, mage.cards.d.Didgeridoo.class));
- cards.add(new SetCardInfo("Drudge Spell", 45, Rarity.UNCOMMON, mage.cards.d.DrudgeSpell.class));
- cards.add(new SetCardInfo("Dry Spell", "46a", Rarity.COMMON, DrySpell.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Dry Spell", "46b", Rarity.COMMON, DrySpell.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Dwarven Pony", 70, Rarity.RARE, mage.cards.d.DwarvenPony.class));
- cards.add(new SetCardInfo("Dwarven Trader", "72a", Rarity.COMMON, DwarvenTrader.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Dwarven Trader", "72b", Rarity.COMMON, DwarvenTrader.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ebony Rhino", 106, Rarity.COMMON, mage.cards.e.EbonyRhino.class));
- cards.add(new SetCardInfo("Eron the Relentless", 73, Rarity.UNCOMMON, mage.cards.e.EronTheRelentless.class));
- cards.add(new SetCardInfo("Evaporate", 74, Rarity.UNCOMMON, mage.cards.e.Evaporate.class));
- cards.add(new SetCardInfo("Faerie Noble", 86, Rarity.RARE, mage.cards.f.FaerieNoble.class));
- cards.add(new SetCardInfo("Feast of the Unicorn", "47a", Rarity.COMMON, FeastOfTheUnicorn.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Feast of the Unicorn", "47b", Rarity.COMMON, FeastOfTheUnicorn.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Feroz's Ban", 107, Rarity.RARE, mage.cards.f.FerozsBan.class));
- cards.add(new SetCardInfo("Folk of An-Havva", "87a", Rarity.COMMON, FolkOfAnHavva.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Folk of An-Havva", "87b", Rarity.COMMON, FolkOfAnHavva.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forget", 26, Rarity.RARE, mage.cards.f.Forget.class));
- cards.add(new SetCardInfo("Funeral March", 48, Rarity.UNCOMMON, mage.cards.f.FuneralMarch.class));
- cards.add(new SetCardInfo("Ghost Hounds", 49, Rarity.UNCOMMON, mage.cards.g.GhostHounds.class));
- cards.add(new SetCardInfo("Grandmother Sengir", 50, Rarity.RARE, mage.cards.g.GrandmotherSengir.class));
- cards.add(new SetCardInfo("Greater Werewolf", 51, Rarity.UNCOMMON, mage.cards.g.GreaterWerewolf.class));
- cards.add(new SetCardInfo("Hazduhr the Abbot", 8, Rarity.RARE, mage.cards.h.HazduhrTheAbbot.class));
- cards.add(new SetCardInfo("Headstone", 52, Rarity.COMMON, mage.cards.h.Headstone.class));
- cards.add(new SetCardInfo("Hungry Mist", "88a", Rarity.COMMON, mage.cards.h.HungryMist.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Hungry Mist", "88b", Rarity.COMMON, mage.cards.h.HungryMist.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ihsan's Shade", 53, Rarity.UNCOMMON, mage.cards.i.IhsansShade.class));
- cards.add(new SetCardInfo("Irini Sengir", 54, Rarity.UNCOMMON, mage.cards.i.IriniSengir.class));
- cards.add(new SetCardInfo("Ironclaw Curse", 76, Rarity.RARE, mage.cards.i.IronclawCurse.class));
- cards.add(new SetCardInfo("Jinx", 29, Rarity.COMMON, mage.cards.j.Jinx.class));
- cards.add(new SetCardInfo("Joven", 77, Rarity.COMMON, mage.cards.j.Joven.class));
- cards.add(new SetCardInfo("Joven's Tools", 108, Rarity.UNCOMMON, mage.cards.j.JovensTools.class));
- cards.add(new SetCardInfo("Koskun Falls", 55, Rarity.RARE, mage.cards.k.KoskunFalls.class));
- cards.add(new SetCardInfo("Koskun Keep", 114, Rarity.UNCOMMON, mage.cards.k.KoskunKeep.class));
- cards.add(new SetCardInfo("Labyrinth Minotaur", "30a", Rarity.COMMON, mage.cards.l.LabyrinthMinotaur.class));
- cards.add(new SetCardInfo("Leaping Lizard", 90, Rarity.COMMON, mage.cards.l.LeapingLizard.class));
- cards.add(new SetCardInfo("Leeches", 9, Rarity.RARE, mage.cards.l.Leeches.class));
- cards.add(new SetCardInfo("Mammoth Harness", 91, Rarity.RARE, mage.cards.m.MammothHarness.class));
- cards.add(new SetCardInfo("Marjhan", 31, Rarity.RARE, mage.cards.m.Marjhan.class));
- cards.add(new SetCardInfo("Memory Lapse", "32a", Rarity.COMMON, mage.cards.m.MemoryLapse.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Memory Lapse", "32b", Rarity.COMMON, mage.cards.m.MemoryLapse.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Merchant Scroll", 33, Rarity.COMMON, mage.cards.m.MerchantScroll.class));
- cards.add(new SetCardInfo("Mesa Falcon", "10a", Rarity.COMMON, MesaFalcon.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mesa Falcon", "10b", Rarity.COMMON, MesaFalcon.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mystic Decree", 34, Rarity.RARE, mage.cards.m.MysticDecree.class));
- cards.add(new SetCardInfo("Narwhal", 35, Rarity.RARE, mage.cards.n.Narwhal.class));
- cards.add(new SetCardInfo("Primal Order", 92, Rarity.RARE, mage.cards.p.PrimalOrder.class));
- cards.add(new SetCardInfo("Rashka the Slayer", 12, Rarity.RARE, mage.cards.r.RashkaTheSlayer.class));
- cards.add(new SetCardInfo("Reef Pirates", "36a", Rarity.COMMON, ReefPirates.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Reef Pirates", "36b", Rarity.COMMON, ReefPirates.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Renewal", 93, Rarity.COMMON, mage.cards.r.Renewal.class));
- cards.add(new SetCardInfo("Retribution", 79, Rarity.UNCOMMON, mage.cards.r.Retribution.class));
- cards.add(new SetCardInfo("Reveka, Wizard Savant", 37, Rarity.RARE, mage.cards.r.RevekaWizardSavant.class));
- cards.add(new SetCardInfo("Root Spider", 94, Rarity.UNCOMMON, mage.cards.r.RootSpider.class));
- cards.add(new SetCardInfo("Roots", 95, Rarity.UNCOMMON, mage.cards.r.Roots.class));
- cards.add(new SetCardInfo("Roterothopter", 109, Rarity.COMMON, mage.cards.r.Roterothopter.class));
- cards.add(new SetCardInfo("Sea Sprite", 38, Rarity.UNCOMMON, mage.cards.s.SeaSprite.class));
- cards.add(new SetCardInfo("Sengir Autocrat", 56, Rarity.UNCOMMON, mage.cards.s.SengirAutocrat.class));
- cards.add(new SetCardInfo("Sengir Bats", "57a", Rarity.COMMON, SengirBats.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Sengir Bats", "57b", Rarity.COMMON, SengirBats.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Serra Aviary", 14, Rarity.RARE, mage.cards.s.SerraAviary.class));
- cards.add(new SetCardInfo("Serra Bestiary", 15, Rarity.UNCOMMON, mage.cards.s.SerraBestiary.class));
- cards.add(new SetCardInfo("Serra Paladin", 17, Rarity.COMMON, mage.cards.s.SerraPaladin.class));
- cards.add(new SetCardInfo("Serrated Arrows", 110, Rarity.COMMON, mage.cards.s.SerratedArrows.class));
- cards.add(new SetCardInfo("Shrink", "97a", Rarity.COMMON, mage.cards.s.Shrink.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Shrink", "97b", Rarity.COMMON, mage.cards.s.Shrink.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Soraya the Falconer", 18, Rarity.RARE, mage.cards.s.SorayaTheFalconer.class));
- cards.add(new SetCardInfo("Spectral Bears", 98, Rarity.UNCOMMON, mage.cards.s.SpectralBears.class));
- cards.add(new SetCardInfo("Torture", "59a", Rarity.COMMON, Torture.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Torture", "59b", Rarity.COMMON, Torture.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Trade Caravan", "19a", Rarity.COMMON, mage.cards.t.TradeCaravan.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Trade Caravan", "19b", Rarity.COMMON, mage.cards.t.TradeCaravan.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Truce", 20, Rarity.RARE, mage.cards.t.Truce.class));
- cards.add(new SetCardInfo("Veldrane of Sengir", 60, Rarity.RARE, mage.cards.v.VeldraneOfSengir.class));
- cards.add(new SetCardInfo("Wall of Kelp", 40, Rarity.RARE, mage.cards.w.WallOfKelp.class));
- cards.add(new SetCardInfo("Willow Faerie", "99a", Rarity.COMMON, WillowFaerie.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Willow Faerie", "99b", Rarity.COMMON, WillowFaerie.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Willow Priestess", 100, Rarity.RARE, mage.cards.w.WillowPriestess.class));
- cards.add(new SetCardInfo("Winter Sky", 80, Rarity.RARE, mage.cards.w.WinterSky.class));
- cards.add(new SetCardInfo("Wizards' School", 115, Rarity.UNCOMMON, mage.cards.w.WizardsSchool.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.cards.a.AbbeyMatron;
+import mage.cards.a.AlibansTower;
+import mage.cards.c.CemeteryGate;
+import mage.cards.d.DrySpell;
+import mage.cards.d.DwarvenTrader;
+import mage.cards.f.FeastOfTheUnicorn;
+import mage.cards.f.FolkOfAnHavva;
+import mage.cards.m.MesaFalcon;
+import mage.cards.r.ReefPirates;
+import mage.cards.s.SengirBats;
+import mage.cards.t.Torture;
+import mage.cards.w.WillowFaerie;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Homelands extends ExpansionSet {
+
+ private static final Homelands instance = new Homelands();
+
+ public static Homelands getInstance() {
+ return instance;
+ }
+
+ private Homelands() {
+ super("Homelands", "HML", ExpansionSet.buildDate(1995, 9, 1), SetType.EXPANSION);
+ this.hasBasicLands = false;
+ this.hasBoosters = true;
+ this.numBoosterLands = 1;
+ this.numBoosterCommon = 10;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Abbey Gargoyles", 1, Rarity.UNCOMMON, mage.cards.a.AbbeyGargoyles.class));
+ cards.add(new SetCardInfo("Abbey Matron", "2a", Rarity.COMMON, AbbeyMatron.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Abbey Matron", "2b", Rarity.COMMON, AbbeyMatron.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Aether Storm", 21, Rarity.UNCOMMON, mage.cards.a.AetherStorm.class));
+ cards.add(new SetCardInfo("Aliban's Tower", "61a", Rarity.COMMON, AlibansTower.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Aliban's Tower", "61b", Rarity.COMMON, AlibansTower.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ambush Party", "63a", Rarity.COMMON, mage.cards.a.AmbushParty.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ambush Party", "63b", Rarity.COMMON, mage.cards.a.AmbushParty.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ambush", 62, Rarity.COMMON, mage.cards.a.Ambush.class));
+ cards.add(new SetCardInfo("An-Havva Constable", 81, Rarity.RARE, mage.cards.a.AnHavvaConstable.class));
+ cards.add(new SetCardInfo("An-Havva Inn", 82, Rarity.UNCOMMON, mage.cards.a.AnHavvaInn.class));
+ cards.add(new SetCardInfo("An-Havva Township", 111, Rarity.UNCOMMON, mage.cards.a.AnHavvaTownship.class));
+ cards.add(new SetCardInfo("An-Zerrin Ruins", 64, Rarity.RARE, mage.cards.a.AnZerrinRuins.class));
+ cards.add(new SetCardInfo("Anaba Ancestor", 65, Rarity.RARE, mage.cards.a.AnabaAncestor.class));
+ cards.add(new SetCardInfo("Anaba Bodyguard", "66a", Rarity.COMMON, mage.cards.a.AnabaBodyguard.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Anaba Bodyguard", "66b", Rarity.COMMON, mage.cards.a.AnabaBodyguard.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Anaba Shaman", "67a", Rarity.COMMON, mage.cards.a.AnabaShaman.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Anaba Shaman", "67b", Rarity.COMMON, mage.cards.a.AnabaShaman.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Anaba Spirit Crafter", 68, Rarity.RARE, mage.cards.a.AnabaSpiritCrafter.class));
+ cards.add(new SetCardInfo("Apocalypse Chime", 101, Rarity.RARE, mage.cards.a.ApocalypseChime.class));
+ cards.add(new SetCardInfo("Autumn Willow", 83, Rarity.RARE, mage.cards.a.AutumnWillow.class));
+ cards.add(new SetCardInfo("Aysen Abbey", 112, Rarity.UNCOMMON, mage.cards.a.AysenAbbey.class));
+ cards.add(new SetCardInfo("Aysen Bureaucrats", "3a", Rarity.COMMON, mage.cards.a.AysenBureaucrats.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Aysen Bureaucrats", "3b", Rarity.COMMON, mage.cards.a.AysenBureaucrats.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Aysen Crusader", 4, Rarity.RARE, mage.cards.a.AysenCrusader.class));
+ cards.add(new SetCardInfo("Aysen Highway", 5, Rarity.RARE, mage.cards.a.AysenHighway.class));
+ cards.add(new SetCardInfo("Baki's Curse", 22, Rarity.RARE, mage.cards.b.BakisCurse.class));
+ cards.add(new SetCardInfo("Baron Sengir", 41, Rarity.RARE, mage.cards.b.BaronSengir.class));
+ cards.add(new SetCardInfo("Beast Walkers", 6, Rarity.RARE, mage.cards.b.BeastWalkers.class));
+ cards.add(new SetCardInfo("Black Carriage", 42, Rarity.RARE, mage.cards.b.BlackCarriage.class));
+ cards.add(new SetCardInfo("Broken Visage", 43, Rarity.RARE, mage.cards.b.BrokenVisage.class));
+ cards.add(new SetCardInfo("Carapace", "84a", Rarity.COMMON, mage.cards.c.Carapace.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Carapace", "84b", Rarity.COMMON, mage.cards.c.Carapace.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Castle Sengir", 113, Rarity.UNCOMMON, mage.cards.c.CastleSengir.class));
+ cards.add(new SetCardInfo("Cemetery Gate", "44a", Rarity.COMMON, CemeteryGate.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Cemetery Gate", "44b", Rarity.COMMON, CemeteryGate.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Chain Stasis", 23, Rarity.RARE, mage.cards.c.ChainStasis.class));
+ cards.add(new SetCardInfo("Chandler", 69, Rarity.COMMON, mage.cards.c.Chandler.class));
+ cards.add(new SetCardInfo("Clockwork Gnomes", 102, Rarity.COMMON, mage.cards.c.ClockworkGnomes.class));
+ cards.add(new SetCardInfo("Clockwork Steed", 103, Rarity.UNCOMMON, mage.cards.c.ClockworkSteed.class));
+ cards.add(new SetCardInfo("Clockwork Swarm", 104, Rarity.COMMON, mage.cards.c.ClockworkSwarm.class));
+ cards.add(new SetCardInfo("Coral Reef", 24, Rarity.COMMON, mage.cards.c.CoralReef.class));
+ cards.add(new SetCardInfo("Dark Maze", "25a", Rarity.COMMON, mage.cards.d.DarkMaze.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Dark Maze", "25b", Rarity.COMMON, mage.cards.d.DarkMaze.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Daughter of Autumn", 85, Rarity.RARE, mage.cards.d.DaughterOfAutumn.class));
+ cards.add(new SetCardInfo("Death Speakers", 7, Rarity.UNCOMMON, mage.cards.d.DeathSpeakers.class));
+ cards.add(new SetCardInfo("Didgeridoo", 105, Rarity.RARE, mage.cards.d.Didgeridoo.class));
+ cards.add(new SetCardInfo("Drudge Spell", 45, Rarity.UNCOMMON, mage.cards.d.DrudgeSpell.class));
+ cards.add(new SetCardInfo("Dry Spell", "46a", Rarity.COMMON, DrySpell.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Dry Spell", "46b", Rarity.COMMON, DrySpell.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Dwarven Pony", 70, Rarity.RARE, mage.cards.d.DwarvenPony.class));
+ cards.add(new SetCardInfo("Dwarven Trader", "72a", Rarity.COMMON, DwarvenTrader.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Dwarven Trader", "72b", Rarity.COMMON, DwarvenTrader.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ebony Rhino", 106, Rarity.COMMON, mage.cards.e.EbonyRhino.class));
+ cards.add(new SetCardInfo("Eron the Relentless", 73, Rarity.UNCOMMON, mage.cards.e.EronTheRelentless.class));
+ cards.add(new SetCardInfo("Evaporate", 74, Rarity.UNCOMMON, mage.cards.e.Evaporate.class));
+ cards.add(new SetCardInfo("Faerie Noble", 86, Rarity.RARE, mage.cards.f.FaerieNoble.class));
+ cards.add(new SetCardInfo("Feast of the Unicorn", "47a", Rarity.COMMON, FeastOfTheUnicorn.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Feast of the Unicorn", "47b", Rarity.COMMON, FeastOfTheUnicorn.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Feroz's Ban", 107, Rarity.RARE, mage.cards.f.FerozsBan.class));
+ cards.add(new SetCardInfo("Folk of An-Havva", "87a", Rarity.COMMON, FolkOfAnHavva.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Folk of An-Havva", "87b", Rarity.COMMON, FolkOfAnHavva.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forget", 26, Rarity.RARE, mage.cards.f.Forget.class));
+ cards.add(new SetCardInfo("Funeral March", 48, Rarity.UNCOMMON, mage.cards.f.FuneralMarch.class));
+ cards.add(new SetCardInfo("Ghost Hounds", 49, Rarity.UNCOMMON, mage.cards.g.GhostHounds.class));
+ cards.add(new SetCardInfo("Grandmother Sengir", 50, Rarity.RARE, mage.cards.g.GrandmotherSengir.class));
+ cards.add(new SetCardInfo("Greater Werewolf", 51, Rarity.UNCOMMON, mage.cards.g.GreaterWerewolf.class));
+ cards.add(new SetCardInfo("Hazduhr the Abbot", 8, Rarity.RARE, mage.cards.h.HazduhrTheAbbot.class));
+ cards.add(new SetCardInfo("Headstone", 52, Rarity.COMMON, mage.cards.h.Headstone.class));
+ cards.add(new SetCardInfo("Hungry Mist", "88a", Rarity.COMMON, mage.cards.h.HungryMist.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Hungry Mist", "88b", Rarity.COMMON, mage.cards.h.HungryMist.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ihsan's Shade", 53, Rarity.UNCOMMON, mage.cards.i.IhsansShade.class));
+ cards.add(new SetCardInfo("Irini Sengir", 54, Rarity.UNCOMMON, mage.cards.i.IriniSengir.class));
+ cards.add(new SetCardInfo("Ironclaw Curse", 76, Rarity.RARE, mage.cards.i.IronclawCurse.class));
+ cards.add(new SetCardInfo("Jinx", 29, Rarity.COMMON, mage.cards.j.Jinx.class));
+ cards.add(new SetCardInfo("Joven", 77, Rarity.COMMON, mage.cards.j.Joven.class));
+ cards.add(new SetCardInfo("Joven's Tools", 108, Rarity.UNCOMMON, mage.cards.j.JovensTools.class));
+ cards.add(new SetCardInfo("Koskun Falls", 55, Rarity.RARE, mage.cards.k.KoskunFalls.class));
+ cards.add(new SetCardInfo("Koskun Keep", 114, Rarity.UNCOMMON, mage.cards.k.KoskunKeep.class));
+ cards.add(new SetCardInfo("Labyrinth Minotaur", "30a", Rarity.COMMON, mage.cards.l.LabyrinthMinotaur.class));
+ cards.add(new SetCardInfo("Leaping Lizard", 90, Rarity.COMMON, mage.cards.l.LeapingLizard.class));
+ cards.add(new SetCardInfo("Leeches", 9, Rarity.RARE, mage.cards.l.Leeches.class));
+ cards.add(new SetCardInfo("Mammoth Harness", 91, Rarity.RARE, mage.cards.m.MammothHarness.class));
+ cards.add(new SetCardInfo("Marjhan", 31, Rarity.RARE, mage.cards.m.Marjhan.class));
+ cards.add(new SetCardInfo("Memory Lapse", "32a", Rarity.COMMON, mage.cards.m.MemoryLapse.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Memory Lapse", "32b", Rarity.COMMON, mage.cards.m.MemoryLapse.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Merchant Scroll", 33, Rarity.COMMON, mage.cards.m.MerchantScroll.class));
+ cards.add(new SetCardInfo("Mesa Falcon", "10a", Rarity.COMMON, MesaFalcon.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mesa Falcon", "10b", Rarity.COMMON, MesaFalcon.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mystic Decree", 34, Rarity.RARE, mage.cards.m.MysticDecree.class));
+ cards.add(new SetCardInfo("Narwhal", 35, Rarity.RARE, mage.cards.n.Narwhal.class));
+ cards.add(new SetCardInfo("Primal Order", 92, Rarity.RARE, mage.cards.p.PrimalOrder.class));
+ cards.add(new SetCardInfo("Rashka the Slayer", 12, Rarity.RARE, mage.cards.r.RashkaTheSlayer.class));
+ cards.add(new SetCardInfo("Reef Pirates", "36a", Rarity.COMMON, ReefPirates.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Reef Pirates", "36b", Rarity.COMMON, ReefPirates.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Renewal", 93, Rarity.COMMON, mage.cards.r.Renewal.class));
+ cards.add(new SetCardInfo("Retribution", 79, Rarity.UNCOMMON, mage.cards.r.Retribution.class));
+ cards.add(new SetCardInfo("Reveka, Wizard Savant", 37, Rarity.RARE, mage.cards.r.RevekaWizardSavant.class));
+ cards.add(new SetCardInfo("Root Spider", 94, Rarity.UNCOMMON, mage.cards.r.RootSpider.class));
+ cards.add(new SetCardInfo("Roots", 95, Rarity.UNCOMMON, mage.cards.r.Roots.class));
+ cards.add(new SetCardInfo("Roterothopter", 109, Rarity.COMMON, mage.cards.r.Roterothopter.class));
+ cards.add(new SetCardInfo("Sea Sprite", 38, Rarity.UNCOMMON, mage.cards.s.SeaSprite.class));
+ cards.add(new SetCardInfo("Sengir Autocrat", 56, Rarity.UNCOMMON, mage.cards.s.SengirAutocrat.class));
+ cards.add(new SetCardInfo("Sengir Bats", "57a", Rarity.COMMON, SengirBats.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Sengir Bats", "57b", Rarity.COMMON, SengirBats.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Serra Aviary", 14, Rarity.RARE, mage.cards.s.SerraAviary.class));
+ cards.add(new SetCardInfo("Serra Bestiary", 15, Rarity.UNCOMMON, mage.cards.s.SerraBestiary.class));
+ cards.add(new SetCardInfo("Serra Paladin", 17, Rarity.COMMON, mage.cards.s.SerraPaladin.class));
+ cards.add(new SetCardInfo("Serrated Arrows", 110, Rarity.COMMON, mage.cards.s.SerratedArrows.class));
+ cards.add(new SetCardInfo("Shrink", "97a", Rarity.COMMON, mage.cards.s.Shrink.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Shrink", "97b", Rarity.COMMON, mage.cards.s.Shrink.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Soraya the Falconer", 18, Rarity.RARE, mage.cards.s.SorayaTheFalconer.class));
+ cards.add(new SetCardInfo("Spectral Bears", 98, Rarity.UNCOMMON, mage.cards.s.SpectralBears.class));
+ cards.add(new SetCardInfo("Torture", "59a", Rarity.COMMON, Torture.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Torture", "59b", Rarity.COMMON, Torture.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Trade Caravan", "19a", Rarity.COMMON, mage.cards.t.TradeCaravan.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Trade Caravan", "19b", Rarity.COMMON, mage.cards.t.TradeCaravan.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Truce", 20, Rarity.RARE, mage.cards.t.Truce.class));
+ cards.add(new SetCardInfo("Veldrane of Sengir", 60, Rarity.RARE, mage.cards.v.VeldraneOfSengir.class));
+ cards.add(new SetCardInfo("Wall of Kelp", 40, Rarity.RARE, mage.cards.w.WallOfKelp.class));
+ cards.add(new SetCardInfo("Willow Faerie", "99a", Rarity.COMMON, WillowFaerie.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Willow Faerie", "99b", Rarity.COMMON, WillowFaerie.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Willow Priestess", 100, Rarity.RARE, mage.cards.w.WillowPriestess.class));
+ cards.add(new SetCardInfo("Winter Sky", 80, Rarity.RARE, mage.cards.w.WinterSky.class));
+ cards.add(new SetCardInfo("Wizards' School", 115, Rarity.UNCOMMON, mage.cards.w.WizardsSchool.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/HourOfDevastation.java b/Mage.Sets/src/mage/sets/HourOfDevastation.java
index 7852e38f23d..647cb6c34c6 100644
--- a/Mage.Sets/src/mage/sets/HourOfDevastation.java
+++ b/Mage.Sets/src/mage/sets/HourOfDevastation.java
@@ -40,7 +40,7 @@ import java.util.List;
/**
* @author fireshoes
*/
-public class HourOfDevastation extends ExpansionSet {
+public final class HourOfDevastation extends ExpansionSet {
private static final HourOfDevastation instance = new HourOfDevastation();
diff --git a/Mage.Sets/src/mage/sets/IceAge.java b/Mage.Sets/src/mage/sets/IceAge.java
index 745eefad6f1..453796b632a 100644
--- a/Mage.Sets/src/mage/sets/IceAge.java
+++ b/Mage.Sets/src/mage/sets/IceAge.java
@@ -1,376 +1,377 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class IceAge extends ExpansionSet {
-
- private static final IceAge instance = new IceAge();
-
- public static IceAge getInstance() {
- return instance;
- }
-
- private IceAge() {
- super("Ice Age", "ICE", ExpansionSet.buildDate(1995, 5, 1), SetType.EXPANSION);
- this.blockName = "Ice Age";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Abyssal Specter", 113, Rarity.UNCOMMON, mage.cards.a.AbyssalSpecter.class));
- cards.add(new SetCardInfo("Adarkar Sentinel", 306, Rarity.UNCOMMON, mage.cards.a.AdarkarSentinel.class));
- cards.add(new SetCardInfo("Adarkar Wastes", 351, Rarity.RARE, mage.cards.a.AdarkarWastes.class));
- cards.add(new SetCardInfo("Aegis of the Meek", 307, Rarity.RARE, mage.cards.a.AegisOfTheMeek.class));
- cards.add(new SetCardInfo("Altar of Bone", 281, Rarity.RARE, mage.cards.a.AltarOfBone.class));
- cards.add(new SetCardInfo("Anarchy", 170, Rarity.UNCOMMON, mage.cards.a.Anarchy.class));
- cards.add(new SetCardInfo("Arenson's Aura", 3, Rarity.COMMON, mage.cards.a.ArensonsAura.class));
- cards.add(new SetCardInfo("Armor of Faith", 4, Rarity.COMMON, mage.cards.a.ArmorOfFaith.class));
- cards.add(new SetCardInfo("Arnjlot's Ascent", 57, Rarity.COMMON, mage.cards.a.ArnjlotsAscent.class));
- cards.add(new SetCardInfo("Ashen Ghoul", 114, Rarity.UNCOMMON, mage.cards.a.AshenGhoul.class));
- cards.add(new SetCardInfo("Aurochs", 225, Rarity.COMMON, mage.cards.a.Aurochs.class));
- cards.add(new SetCardInfo("Avalanche", 171, Rarity.UNCOMMON, mage.cards.a.Avalanche.class));
- cards.add(new SetCardInfo("Balduvian Barbarians", 172, Rarity.COMMON, mage.cards.b.BalduvianBarbarians.class));
- cards.add(new SetCardInfo("Balduvian Bears", 226, Rarity.COMMON, mage.cards.b.BalduvianBears.class));
- cards.add(new SetCardInfo("Balduvian Conjurer", 58, Rarity.UNCOMMON, mage.cards.b.BalduvianConjurer.class));
- cards.add(new SetCardInfo("Balduvian Hydra", 173, Rarity.RARE, mage.cards.b.BalduvianHydra.class));
- cards.add(new SetCardInfo("Barbed Sextant", 312, Rarity.COMMON, mage.cards.b.BarbedSextant.class));
- cards.add(new SetCardInfo("Baton of Morale", 313, Rarity.UNCOMMON, mage.cards.b.BatonOfMorale.class));
- cards.add(new SetCardInfo("Battle Frenzy", 175, Rarity.COMMON, mage.cards.b.BattleFrenzy.class));
- cards.add(new SetCardInfo("Binding Grasp", 60, Rarity.UNCOMMON, mage.cards.b.BindingGrasp.class));
- cards.add(new SetCardInfo("Black Scarab", 6, Rarity.UNCOMMON, mage.cards.b.BlackScarab.class));
- cards.add(new SetCardInfo("Blessed Wine", 7, Rarity.COMMON, mage.cards.b.BlessedWine.class));
- cards.add(new SetCardInfo("Blinking Spirit", 8, Rarity.RARE, mage.cards.b.BlinkingSpirit.class));
- cards.add(new SetCardInfo("Blue Scarab", 9, Rarity.UNCOMMON, mage.cards.b.BlueScarab.class));
- cards.add(new SetCardInfo("Brainstorm", 61, Rarity.COMMON, mage.cards.b.Brainstorm.class));
- cards.add(new SetCardInfo("Brand of Ill Omen", 177, Rarity.RARE, mage.cards.b.BrandOfIllOmen.class));
- cards.add(new SetCardInfo("Breath of Dreams", 62, Rarity.UNCOMMON, mage.cards.b.BreathOfDreams.class));
- cards.add(new SetCardInfo("Brine Shaman", 115, Rarity.COMMON, mage.cards.b.BrineShaman.class));
- cards.add(new SetCardInfo("Brown Ouphe", 228, Rarity.COMMON, mage.cards.b.BrownOuphe.class));
- cards.add(new SetCardInfo("Brushland", 352, Rarity.RARE, mage.cards.b.Brushland.class));
- cards.add(new SetCardInfo("Burnt Offering", 116, Rarity.COMMON, mage.cards.b.BurntOffering.class));
- cards.add(new SetCardInfo("Call to Arms", 10, Rarity.RARE, mage.cards.c.CallToArms.class));
- cards.add(new SetCardInfo("Caribou Range", 11, Rarity.RARE, mage.cards.c.CaribouRange.class));
- cards.add(new SetCardInfo("Celestial Sword", 314, Rarity.RARE, mage.cards.c.CelestialSword.class));
- cards.add(new SetCardInfo("Centaur Archer", 282, Rarity.UNCOMMON, mage.cards.c.CentaurArcher.class));
- cards.add(new SetCardInfo("Chaos Moon", 179, Rarity.RARE, mage.cards.c.ChaosMoon.class));
- cards.add(new SetCardInfo("Chub Toad", 229, Rarity.COMMON, mage.cards.c.ChubToad.class));
- cards.add(new SetCardInfo("Circle of Protection: Black", 12, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class));
- cards.add(new SetCardInfo("Circle of Protection: Blue", 13, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlue.class));
- cards.add(new SetCardInfo("Circle of Protection: Green", 14, Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class));
- cards.add(new SetCardInfo("Circle of Protection: Red", 15, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class));
- cards.add(new SetCardInfo("Circle of Protection: White", 16, Rarity.COMMON, mage.cards.c.CircleOfProtectionWhite.class));
- cards.add(new SetCardInfo("Clairvoyance", 63, Rarity.COMMON, mage.cards.c.Clairvoyance.class));
- cards.add(new SetCardInfo("Cold Snap", 17, Rarity.UNCOMMON, mage.cards.c.ColdSnap.class));
- cards.add(new SetCardInfo("Conquer", 180, Rarity.UNCOMMON, mage.cards.c.Conquer.class));
- cards.add(new SetCardInfo("Cooperation", 18, Rarity.COMMON, mage.cards.c.Cooperation.class));
- cards.add(new SetCardInfo("Counterspell", 64, Rarity.COMMON, mage.cards.c.Counterspell.class));
- cards.add(new SetCardInfo("Crown of the Ages", 315, Rarity.RARE, mage.cards.c.CrownOfTheAges.class));
- cards.add(new SetCardInfo("Curse of Marit Lage", 181, Rarity.RARE, mage.cards.c.CurseOfMaritLage.class));
- cards.add(new SetCardInfo("Dance of the Dead", 118, Rarity.UNCOMMON, mage.cards.d.DanceOfTheDead.class));
- cards.add(new SetCardInfo("Dark Banishing", 119, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
- cards.add(new SetCardInfo("Dark Ritual", 120, Rarity.COMMON, mage.cards.d.DarkRitual.class));
- cards.add(new SetCardInfo("Death Ward", 19, Rarity.COMMON, mage.cards.d.DeathWard.class));
- cards.add(new SetCardInfo("Deflection", 65, Rarity.RARE, mage.cards.d.Deflection.class));
- cards.add(new SetCardInfo("Demonic Consultation", 121, Rarity.UNCOMMON, mage.cards.d.DemonicConsultation.class));
- cards.add(new SetCardInfo("Despotic Scepter", 316, Rarity.RARE, mage.cards.d.DespoticScepter.class));
- cards.add(new SetCardInfo("Diabolic Vision", 284, Rarity.UNCOMMON, mage.cards.d.DiabolicVision.class));
- cards.add(new SetCardInfo("Dire Wolves", 230, Rarity.COMMON, mage.cards.d.DireWolves.class));
- cards.add(new SetCardInfo("Disenchant", 20, Rarity.COMMON, mage.cards.d.Disenchant.class));
- cards.add(new SetCardInfo("Drift of the Dead", 123, Rarity.UNCOMMON, mage.cards.d.DriftOfTheDead.class));
- cards.add(new SetCardInfo("Drought", 21, Rarity.UNCOMMON, mage.cards.d.Drought.class));
- cards.add(new SetCardInfo("Dwarven Armory", 182, Rarity.RARE, mage.cards.d.DwarvenArmory.class));
- cards.add(new SetCardInfo("Earthlink", 285, Rarity.RARE, mage.cards.e.Earthlink.class));
- cards.add(new SetCardInfo("Earthlore", 231, Rarity.COMMON, mage.cards.e.Earthlore.class));
- cards.add(new SetCardInfo("Elder Druid", 232, Rarity.RARE, mage.cards.e.ElderDruid.class));
- cards.add(new SetCardInfo("Elemental Augury", 286, Rarity.RARE, mage.cards.e.ElementalAugury.class));
- cards.add(new SetCardInfo("Elkin Bottle", 317, Rarity.RARE, mage.cards.e.ElkinBottle.class));
- cards.add(new SetCardInfo("Enduring Renewal", 23, Rarity.RARE, mage.cards.e.EnduringRenewal.class));
- cards.add(new SetCardInfo("Energy Storm", 24, Rarity.RARE, mage.cards.e.EnergyStorm.class));
- cards.add(new SetCardInfo("Enervate", 67, Rarity.COMMON, mage.cards.e.Enervate.class));
- cards.add(new SetCardInfo("Errantry", 183, Rarity.COMMON, mage.cards.e.Errantry.class));
- cards.add(new SetCardInfo("Essence Filter", 233, Rarity.COMMON, mage.cards.e.EssenceFilter.class));
- cards.add(new SetCardInfo("Essence Flare", 69, Rarity.COMMON, mage.cards.e.EssenceFlare.class));
- cards.add(new SetCardInfo("Fanatical Fever", 234, Rarity.UNCOMMON, mage.cards.f.FanaticalFever.class));
- cards.add(new SetCardInfo("Fear", 124, Rarity.COMMON, mage.cards.f.Fear.class));
- cards.add(new SetCardInfo("Fiery Justice", 288, Rarity.RARE, mage.cards.f.FieryJustice.class));
- cards.add(new SetCardInfo("Fire Covenant", 289, Rarity.UNCOMMON, mage.cards.f.FireCovenant.class));
- cards.add(new SetCardInfo("Flame Spirit", 184, Rarity.UNCOMMON, mage.cards.f.FlameSpirit.class));
- cards.add(new SetCardInfo("Flare", 185, Rarity.COMMON, mage.cards.f.Flare.class));
- cards.add(new SetCardInfo("Flooded Woodlands", 290, Rarity.RARE, mage.cards.f.FloodedWoodlands.class));
- cards.add(new SetCardInfo("Flow of Maggots", 125, Rarity.RARE, mage.cards.f.FlowOfMaggots.class));
- cards.add(new SetCardInfo("Folk of the Pines", 235, Rarity.COMMON, mage.cards.f.FolkOfThePines.class));
- cards.add(new SetCardInfo("Forbidden Lore", 236, Rarity.RARE, mage.cards.f.ForbiddenLore.class));
- cards.add(new SetCardInfo("Force Void", 70, Rarity.UNCOMMON, mage.cards.f.ForceVoid.class));
- cards.add(new SetCardInfo("Forest", 380, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 381, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 382, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forgotten Lore", 237, Rarity.UNCOMMON, mage.cards.f.ForgottenLore.class));
- cards.add(new SetCardInfo("Formation", 25, Rarity.RARE, mage.cards.f.Formation.class));
- cards.add(new SetCardInfo("Foul Familiar", 126, Rarity.COMMON, mage.cards.f.FoulFamiliar.class));
- cards.add(new SetCardInfo("Foxfire", 238, Rarity.COMMON, mage.cards.f.Foxfire.class));
- cards.add(new SetCardInfo("Freyalise's Charm", 240, Rarity.UNCOMMON, mage.cards.f.FreyalisesCharm.class));
- cards.add(new SetCardInfo("Fumarole", 291, Rarity.UNCOMMON, mage.cards.f.Fumarole.class));
- cards.add(new SetCardInfo("Fyndhorn Bow", 318, Rarity.UNCOMMON, mage.cards.f.FyndhornBow.class));
- cards.add(new SetCardInfo("Fyndhorn Brownie", 242, Rarity.COMMON, mage.cards.f.FyndhornBrownie.class));
- cards.add(new SetCardInfo("Fyndhorn Elder", 243, Rarity.UNCOMMON, mage.cards.f.FyndhornElder.class));
- cards.add(new SetCardInfo("Fyndhorn Elves", 244, Rarity.COMMON, mage.cards.f.FyndhornElves.class));
- cards.add(new SetCardInfo("Fyndhorn Pollen", 245, Rarity.RARE, mage.cards.f.FyndhornPollen.class));
- cards.add(new SetCardInfo("Game of Chaos", 186, Rarity.RARE, mage.cards.g.GameOfChaos.class));
- cards.add(new SetCardInfo("Gangrenous Zombies", 127, Rarity.COMMON, mage.cards.g.GangrenousZombies.class));
- cards.add(new SetCardInfo("General Jarkeld", 27, Rarity.RARE, mage.cards.g.GeneralJarkeld.class));
- cards.add(new SetCardInfo("Giant Growth", 246, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
- cards.add(new SetCardInfo("Giant Trap Door Spider", 293, Rarity.UNCOMMON, mage.cards.g.GiantTrapDoorSpider.class));
- cards.add(new SetCardInfo("Glacial Chasm", 353, Rarity.UNCOMMON, mage.cards.g.GlacialChasm.class));
- cards.add(new SetCardInfo("Glacial Crevasses", 187, Rarity.RARE, mage.cards.g.GlacialCrevasses.class));
- cards.add(new SetCardInfo("Glacial Wall", 71, Rarity.UNCOMMON, mage.cards.g.GlacialWall.class));
- cards.add(new SetCardInfo("Goblin Lyre", 319, Rarity.RARE, mage.cards.g.GoblinLyre.class));
- cards.add(new SetCardInfo("Goblin Mutant", 188, Rarity.UNCOMMON, mage.cards.g.GoblinMutant.class));
- cards.add(new SetCardInfo("Goblin Snowman", 191, Rarity.UNCOMMON, mage.cards.g.GoblinSnowman.class));
- cards.add(new SetCardInfo("Gorilla Pack", 247, Rarity.COMMON, mage.cards.g.GorillaPack.class));
- cards.add(new SetCardInfo("Gravebind", 129, Rarity.RARE, mage.cards.g.Gravebind.class));
- cards.add(new SetCardInfo("Green Scarab", 28, Rarity.UNCOMMON, mage.cards.g.GreenScarab.class));
- cards.add(new SetCardInfo("Hallowed Ground", 29, Rarity.UNCOMMON, mage.cards.h.HallowedGround.class));
- cards.add(new SetCardInfo("Halls of Mist", 354, Rarity.RARE, mage.cards.h.HallsOfMist.class));
- cards.add(new SetCardInfo("Heal", 30, Rarity.COMMON, mage.cards.h.Heal.class));
- cards.add(new SetCardInfo("Hecatomb", 130, Rarity.RARE, mage.cards.h.Hecatomb.class));
- cards.add(new SetCardInfo("Hematite Talisman", 320, Rarity.UNCOMMON, mage.cards.h.HematiteTalisman.class));
- cards.add(new SetCardInfo("Hoar Shade", 131, Rarity.COMMON, mage.cards.h.HoarShade.class));
- cards.add(new SetCardInfo("Hot Springs", 248, Rarity.RARE, mage.cards.h.HotSprings.class));
- cards.add(new SetCardInfo("Howl from Beyond", 132, Rarity.COMMON, mage.cards.h.HowlFromBeyond.class));
- cards.add(new SetCardInfo("Hurricane", 249, Rarity.UNCOMMON, mage.cards.h.Hurricane.class));
- cards.add(new SetCardInfo("Hyalopterous Lemure", 133, Rarity.UNCOMMON, mage.cards.h.HyalopterousLemure.class));
- cards.add(new SetCardInfo("Hydroblast", 72, Rarity.COMMON, mage.cards.h.Hydroblast.class));
- cards.add(new SetCardInfo("Hymn of Rebirth", 295, Rarity.UNCOMMON, mage.cards.h.HymnOfRebirth.class));
- cards.add(new SetCardInfo("Ice Cauldron", 321, Rarity.RARE, mage.cards.i.IceCauldron.class));
- cards.add(new SetCardInfo("Ice Floe", 355, Rarity.UNCOMMON, mage.cards.i.IceFloe.class));
- cards.add(new SetCardInfo("Iceberg", 73, Rarity.UNCOMMON, mage.cards.i.Iceberg.class));
- cards.add(new SetCardInfo("Icequake", 134, Rarity.UNCOMMON, mage.cards.i.Icequake.class));
- cards.add(new SetCardInfo("Icy Manipulator", 322, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class));
- cards.add(new SetCardInfo("Icy Prison", 74, Rarity.RARE, mage.cards.i.IcyPrison.class));
- cards.add(new SetCardInfo("Illusionary Forces", 75, Rarity.COMMON, mage.cards.i.IllusionaryForces.class));
- cards.add(new SetCardInfo("Illusionary Wall", 78, Rarity.COMMON, mage.cards.i.IllusionaryWall.class));
- cards.add(new SetCardInfo("Illusions of Grandeur", 79, Rarity.RARE, mage.cards.i.IllusionsOfGrandeur.class));
- cards.add(new SetCardInfo("Imposing Visage", 193, Rarity.COMMON, mage.cards.i.ImposingVisage.class));
- cards.add(new SetCardInfo("Incinerate", 194, Rarity.COMMON, mage.cards.i.Incinerate.class));
- cards.add(new SetCardInfo("Infernal Darkness", 135, Rarity.RARE, mage.cards.i.InfernalDarkness.class));
- cards.add(new SetCardInfo("Infernal Denizen", 136, Rarity.RARE, mage.cards.i.InfernalDenizen.class));
- cards.add(new SetCardInfo("Infinite Hourglass", 323, Rarity.RARE, mage.cards.i.InfiniteHourglass.class));
- cards.add(new SetCardInfo("Infuse", 80, Rarity.COMMON, mage.cards.i.Infuse.class));
- cards.add(new SetCardInfo("Island", 368, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 369, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 370, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Jester's Cap", 324, Rarity.RARE, mage.cards.j.JestersCap.class));
- cards.add(new SetCardInfo("Jester's Mask", 325, Rarity.RARE, mage.cards.j.JestersMask.class));
- cards.add(new SetCardInfo("Jeweled Amulet", 326, Rarity.UNCOMMON, mage.cards.j.JeweledAmulet.class));
- cards.add(new SetCardInfo("Johtull Wurm", 250, Rarity.UNCOMMON, mage.cards.j.JohtullWurm.class));
- cards.add(new SetCardInfo("Jokulhaups", 195, Rarity.RARE, mage.cards.j.Jokulhaups.class));
- cards.add(new SetCardInfo("Juniper Order Druid", 251, Rarity.COMMON, mage.cards.j.JuniperOrderDruid.class));
- cards.add(new SetCardInfo("Justice", 32, Rarity.UNCOMMON, mage.cards.j.Justice.class));
- cards.add(new SetCardInfo("Karplusan Forest", 356, Rarity.RARE, mage.cards.k.KarplusanForest.class));
- cards.add(new SetCardInfo("Karplusan Giant", 196, Rarity.UNCOMMON, mage.cards.k.KarplusanGiant.class));
- cards.add(new SetCardInfo("Karplusan Yeti", 197, Rarity.RARE, mage.cards.k.KarplusanYeti.class));
- cards.add(new SetCardInfo("Kelsinko Ranger", 33, Rarity.COMMON, mage.cards.k.KelsinkoRanger.class));
- cards.add(new SetCardInfo("Kjeldoran Dead", 137, Rarity.COMMON, mage.cards.k.KjeldoranDead.class));
- cards.add(new SetCardInfo("Kjeldoran Frostbeast", 296, Rarity.UNCOMMON, mage.cards.k.KjeldoranFrostbeast.class));
- cards.add(new SetCardInfo("Kjeldoran Knight", 36, Rarity.RARE, mage.cards.k.KjeldoranKnight.class));
- cards.add(new SetCardInfo("Kjeldoran Phalanx", 37, Rarity.RARE, mage.cards.k.KjeldoranPhalanx.class));
- cards.add(new SetCardInfo("Kjeldoran Royal Guard", 38, Rarity.RARE, mage.cards.k.KjeldoranRoyalGuard.class));
- cards.add(new SetCardInfo("Kjeldoran Skycaptain", 39, Rarity.UNCOMMON, mage.cards.k.KjeldoranSkycaptain.class));
- cards.add(new SetCardInfo("Kjeldoran Skyknight", 40, Rarity.COMMON, mage.cards.k.KjeldoranSkyknight.class));
- cards.add(new SetCardInfo("Kjeldoran Warrior", 41, Rarity.COMMON, mage.cards.k.KjeldoranWarrior.class));
- cards.add(new SetCardInfo("Knight of Stromgald", 138, Rarity.UNCOMMON, mage.cards.k.KnightOfStromgald.class));
- cards.add(new SetCardInfo("Krovikan Fetish", 140, Rarity.COMMON, mage.cards.k.KrovikanFetish.class));
- cards.add(new SetCardInfo("Krovikan Sorcerer", 81, Rarity.COMMON, mage.cards.k.KrovikanSorcerer.class));
- cards.add(new SetCardInfo("Land Cap", 357, Rarity.RARE, mage.cards.l.LandCap.class));
- cards.add(new SetCardInfo("Lapis Lazuli Talisman", 327, Rarity.UNCOMMON, mage.cards.l.LapisLazuliTalisman.class));
- cards.add(new SetCardInfo("Lava Tubes", 358, Rarity.RARE, mage.cards.l.LavaTubes.class));
- cards.add(new SetCardInfo("Legions of Lim-Dul", 142, Rarity.COMMON, mage.cards.l.LegionsOfLimDul.class));
- cards.add(new SetCardInfo("Leshrac's Rite", 143, Rarity.UNCOMMON, mage.cards.l.LeshracsRite.class));
- cards.add(new SetCardInfo("Leshrac's Sigil", 144, Rarity.UNCOMMON, mage.cards.l.LeshracsSigil.class));
- cards.add(new SetCardInfo("Lhurgoyf", 252, Rarity.RARE, mage.cards.l.Lhurgoyf.class));
- cards.add(new SetCardInfo("Lightning Blow", 42, Rarity.RARE, mage.cards.l.LightningBlow.class));
- cards.add(new SetCardInfo("Lim-Dul's Hex", 146, Rarity.UNCOMMON, mage.cards.l.LimDulsHex.class));
- cards.add(new SetCardInfo("Lure", 253, Rarity.UNCOMMON, mage.cards.l.Lure.class));
- cards.add(new SetCardInfo("Magus of the Unseen", 82, Rarity.RARE, mage.cards.m.MagusOfTheUnseen.class));
- cards.add(new SetCardInfo("Malachite Talisman", 328, Rarity.UNCOMMON, mage.cards.m.MalachiteTalisman.class));
- cards.add(new SetCardInfo("Marton Stromgald", 204, Rarity.RARE, mage.cards.m.MartonStromgald.class));
- cards.add(new SetCardInfo("Melee", 199, Rarity.UNCOMMON, mage.cards.m.Melee.class));
- cards.add(new SetCardInfo("Melting", 200, Rarity.UNCOMMON, mage.cards.m.Melting.class));
- cards.add(new SetCardInfo("Merieke Ri Berit", 297, Rarity.RARE, mage.cards.m.MeriekeRiBerit.class));
- cards.add(new SetCardInfo("Mesmeric Trance", 83, Rarity.RARE, mage.cards.m.MesmericTrance.class));
- cards.add(new SetCardInfo("Meteor Shower", 201, Rarity.COMMON, mage.cards.m.MeteorShower.class));
- cards.add(new SetCardInfo("Mind Ravel", 147, Rarity.COMMON, mage.cards.m.MindRavel.class));
- cards.add(new SetCardInfo("Mind Warp", 148, Rarity.UNCOMMON, mage.cards.m.MindWarp.class));
- cards.add(new SetCardInfo("Minion of Leshrac", 150, Rarity.RARE, mage.cards.m.MinionOfLeshrac.class));
- cards.add(new SetCardInfo("Minion of Tevesh Szat", 151, Rarity.RARE, mage.cards.m.MinionOfTeveshSzat.class));
- cards.add(new SetCardInfo("Mole Worms", 152, Rarity.UNCOMMON, mage.cards.m.MoleWorms.class));
- cards.add(new SetCardInfo("Monsoon", 298, Rarity.RARE, mage.cards.m.Monsoon.class));
- cards.add(new SetCardInfo("Moor Fiend", 153, Rarity.COMMON, mage.cards.m.MoorFiend.class));
- cards.add(new SetCardInfo("Mountain Goat", 202, Rarity.COMMON, mage.cards.m.MountainGoat.class));
- cards.add(new SetCardInfo("Mountain", 376, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 377, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 378, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mudslide", 203, Rarity.RARE, mage.cards.m.Mudslide.class));
- cards.add(new SetCardInfo("Mystic Might", 86, Rarity.RARE, mage.cards.m.MysticMight.class));
- cards.add(new SetCardInfo("Mystic Remora", 87, Rarity.COMMON, mage.cards.m.MysticRemora.class));
- cards.add(new SetCardInfo("Nacre Talisman", 329, Rarity.UNCOMMON, mage.cards.n.NacreTalisman.class));
- cards.add(new SetCardInfo("Naked Singularity", 330, Rarity.RARE, mage.cards.n.NakedSingularity.class));
- cards.add(new SetCardInfo("Nature's Lore", 255, Rarity.UNCOMMON, mage.cards.n.NaturesLore.class));
- cards.add(new SetCardInfo("Necropotence", 154, Rarity.RARE, mage.cards.n.Necropotence.class));
- cards.add(new SetCardInfo("Norritt", 155, Rarity.COMMON, mage.cards.n.Norritt.class));
- cards.add(new SetCardInfo("Onyx Talisman", 331, Rarity.UNCOMMON, mage.cards.o.OnyxTalisman.class));
- cards.add(new SetCardInfo("Orcish Cannoneers", 205, Rarity.UNCOMMON, mage.cards.o.OrcishCannoneers.class));
- cards.add(new SetCardInfo("Orcish Healer", 208, Rarity.UNCOMMON, mage.cards.o.OrcishHealer.class));
- cards.add(new SetCardInfo("Orcish Librarian", 209, Rarity.RARE, mage.cards.o.OrcishLibrarian.class));
- cards.add(new SetCardInfo("Orcish Lumberjack", 210, Rarity.COMMON, mage.cards.o.OrcishLumberjack.class));
- cards.add(new SetCardInfo("Orcish Squatters", 211, Rarity.RARE, mage.cards.o.OrcishSquatters.class));
- cards.add(new SetCardInfo("Order of the Sacred Torch", 45, Rarity.RARE, mage.cards.o.OrderOfTheSacredTorch.class));
- cards.add(new SetCardInfo("Order of the White Shield", 46, Rarity.UNCOMMON, mage.cards.o.OrderOfTheWhiteShield.class));
- cards.add(new SetCardInfo("Pale Bears", 256, Rarity.RARE, mage.cards.p.PaleBears.class));
- cards.add(new SetCardInfo("Panic", 212, Rarity.COMMON, mage.cards.p.Panic.class));
- cards.add(new SetCardInfo("Pentagram of the Ages", 332, Rarity.RARE, mage.cards.p.PentagramOfTheAges.class));
- cards.add(new SetCardInfo("Pestilence Rats", 157, Rarity.COMMON, mage.cards.p.PestilenceRats.class));
- cards.add(new SetCardInfo("Pit Trap", 333, Rarity.UNCOMMON, mage.cards.p.PitTrap.class));
- cards.add(new SetCardInfo("Plains", 364, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 365, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 366, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Polar Kraken", 89, Rarity.RARE, mage.cards.p.PolarKraken.class));
- cards.add(new SetCardInfo("Portent", 90, Rarity.COMMON, mage.cards.p.Portent.class));
- cards.add(new SetCardInfo("Power Sink", 91, Rarity.COMMON, mage.cards.p.PowerSink.class));
- cards.add(new SetCardInfo("Pox", 158, Rarity.RARE, mage.cards.p.Pox.class));
- cards.add(new SetCardInfo("Prismatic Ward", 47, Rarity.COMMON, mage.cards.p.PrismaticWard.class));
- cards.add(new SetCardInfo("Pygmy Allosaurus", 257, Rarity.RARE, mage.cards.p.PygmyAllosaurus.class));
- cards.add(new SetCardInfo("Pyknite", 258, Rarity.COMMON, mage.cards.p.Pyknite.class));
- cards.add(new SetCardInfo("Pyroblast", 213, Rarity.COMMON, mage.cards.p.Pyroblast.class));
- cards.add(new SetCardInfo("Pyroclasm", 214, Rarity.UNCOMMON, mage.cards.p.Pyroclasm.class));
- cards.add(new SetCardInfo("Rally", 48, Rarity.COMMON, mage.cards.r.Rally.class));
- cards.add(new SetCardInfo("Ray of Command", 92, Rarity.COMMON, mage.cards.r.RayOfCommand.class));
- cards.add(new SetCardInfo("Ray of Erasure", 93, Rarity.COMMON, mage.cards.r.RayOfErasure.class));
- cards.add(new SetCardInfo("Reality Twist", 94, Rarity.RARE, mage.cards.r.RealityTwist.class));
- cards.add(new SetCardInfo("Reclamation", 300, Rarity.RARE, mage.cards.r.Reclamation.class));
- cards.add(new SetCardInfo("Red Scarab", 49, Rarity.UNCOMMON, mage.cards.r.RedScarab.class));
- cards.add(new SetCardInfo("Regeneration", 259, Rarity.COMMON, mage.cards.r.Regeneration.class));
- cards.add(new SetCardInfo("Rime Dryad", 260, Rarity.COMMON, mage.cards.r.RimeDryad.class));
- cards.add(new SetCardInfo("Ritual of Subdual", 261, Rarity.RARE, mage.cards.r.RitualOfSubdual.class));
- cards.add(new SetCardInfo("River Delta", 359, Rarity.RARE, mage.cards.r.RiverDelta.class));
- cards.add(new SetCardInfo("Sabretooth Tiger", 215, Rarity.COMMON, mage.cards.s.SabretoothTiger.class));
- cards.add(new SetCardInfo("Scaled Wurm", 262, Rarity.COMMON, mage.cards.s.ScaledWurm.class));
- cards.add(new SetCardInfo("Sea Spirit", 95, Rarity.UNCOMMON, mage.cards.s.SeaSpirit.class));
- cards.add(new SetCardInfo("Seizures", 159, Rarity.COMMON, mage.cards.s.Seizures.class));
- cards.add(new SetCardInfo("Shambling Strider", 263, Rarity.COMMON, mage.cards.s.ShamblingStrider.class));
- cards.add(new SetCardInfo("Shatter", 216, Rarity.COMMON, mage.cards.s.Shatter.class));
- cards.add(new SetCardInfo("Shield Bearer", 52, Rarity.COMMON, mage.cards.s.ShieldBearer.class));
- cards.add(new SetCardInfo("Shield of the Ages", 335, Rarity.UNCOMMON, mage.cards.s.ShieldOfTheAges.class));
- cards.add(new SetCardInfo("Shyft", 96, Rarity.RARE, mage.cards.s.Shyft.class));
- cards.add(new SetCardInfo("Sibilant Spirit", 97, Rarity.RARE, mage.cards.s.SibilantSpirit.class));
- cards.add(new SetCardInfo("Silver Erne", 98, Rarity.UNCOMMON, mage.cards.s.SilverErne.class));
- cards.add(new SetCardInfo("Skeleton Ship", 301, Rarity.RARE, mage.cards.s.SkeletonShip.class));
- cards.add(new SetCardInfo("Skull Catapult", 336, Rarity.UNCOMMON, mage.cards.s.SkullCatapult.class));
- cards.add(new SetCardInfo("Snow Fortress", 337, Rarity.RARE, mage.cards.s.SnowFortress.class));
- cards.add(new SetCardInfo("Snow Hound", 53, Rarity.UNCOMMON, mage.cards.s.SnowHound.class));
- cards.add(new SetCardInfo("Snow-Covered Forest", 383, Rarity.LAND, mage.cards.s.SnowCoveredForest.class));
- cards.add(new SetCardInfo("Snow-Covered Island", 371, Rarity.LAND, mage.cards.s.SnowCoveredIsland.class));
- cards.add(new SetCardInfo("Snow-Covered Mountain", 379, Rarity.LAND, mage.cards.s.SnowCoveredMountain.class));
- cards.add(new SetCardInfo("Snow-Covered Plains", 367, Rarity.LAND, mage.cards.s.SnowCoveredPlains.class));
- cards.add(new SetCardInfo("Snow-Covered Swamp", 372, Rarity.LAND, mage.cards.s.SnowCoveredSwamp.class));
- cards.add(new SetCardInfo("Soldevi Golem", 338, Rarity.RARE, mage.cards.s.SoldeviGolem.class));
- cards.add(new SetCardInfo("Soldevi Machinist", 102, Rarity.UNCOMMON, mage.cards.s.SoldeviMachinist.class));
- cards.add(new SetCardInfo("Soldevi Simulacrum", 339, Rarity.UNCOMMON, mage.cards.s.SoldeviSimulacrum.class));
- cards.add(new SetCardInfo("Songs of the Damned", 160, Rarity.COMMON, mage.cards.s.SongsOfTheDamned.class));
- cards.add(new SetCardInfo("Soul Barrier", 103, Rarity.UNCOMMON, mage.cards.s.SoulBarrier.class));
- cards.add(new SetCardInfo("Soul Burn", 161, Rarity.COMMON, mage.cards.s.SoulBurn.class));
- cards.add(new SetCardInfo("Soul Kiss", 162, Rarity.COMMON, mage.cards.s.SoulKiss.class));
- cards.add(new SetCardInfo("Spoils of Evil", 163, Rarity.RARE, mage.cards.s.SpoilsOfEvil.class));
- cards.add(new SetCardInfo("Staff of the Ages", 340, Rarity.RARE, mage.cards.s.StaffOfTheAges.class));
- cards.add(new SetCardInfo("Stampede", 265, Rarity.RARE, mage.cards.s.Stampede.class));
- cards.add(new SetCardInfo("Stone Rain", 217, Rarity.COMMON, mage.cards.s.StoneRain.class));
- cards.add(new SetCardInfo("Stone Spirit", 218, Rarity.UNCOMMON, mage.cards.s.StoneSpirit.class));
- cards.add(new SetCardInfo("Stonehands", 219, Rarity.COMMON, mage.cards.s.Stonehands.class));
- cards.add(new SetCardInfo("Storm Spirit", 303, Rarity.RARE, mage.cards.s.StormSpirit.class));
- cards.add(new SetCardInfo("Stormbind", 304, Rarity.RARE, mage.cards.s.Stormbind.class));
- cards.add(new SetCardInfo("Stromgald Cabal", 166, Rarity.RARE, mage.cards.s.StromgaldCabal.class));
- cards.add(new SetCardInfo("Stunted Growth", 266, Rarity.RARE, mage.cards.s.StuntedGrowth.class));
- cards.add(new SetCardInfo("Sulfurous Springs", 360, Rarity.RARE, mage.cards.s.SulfurousSprings.class));
- cards.add(new SetCardInfo("Sunstone", 341, Rarity.UNCOMMON, mage.cards.s.Sunstone.class));
- cards.add(new SetCardInfo("Swamp", 373, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 374, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 375, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swords to Plowshares", 54, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
- cards.add(new SetCardInfo("Tarpan", 267, Rarity.COMMON, mage.cards.t.Tarpan.class));
- cards.add(new SetCardInfo("Thermokarst", 268, Rarity.UNCOMMON, mage.cards.t.Thermokarst.class));
- cards.add(new SetCardInfo("Thoughtleech", 269, Rarity.UNCOMMON, mage.cards.t.Thoughtleech.class));
- cards.add(new SetCardInfo("Thunder Wall", 104, Rarity.UNCOMMON, mage.cards.t.ThunderWall.class));
- cards.add(new SetCardInfo("Timberline Ridge", 361, Rarity.RARE, mage.cards.t.TimberlineRidge.class));
- cards.add(new SetCardInfo("Time Bomb", 342, Rarity.RARE, mage.cards.t.TimeBomb.class));
- cards.add(new SetCardInfo("Tinder Wall", 270, Rarity.COMMON, mage.cards.t.TinderWall.class));
- cards.add(new SetCardInfo("Tor Giant", 220, Rarity.COMMON, mage.cards.t.TorGiant.class));
- cards.add(new SetCardInfo("Total War", 221, Rarity.RARE, mage.cards.t.TotalWar.class));
- cards.add(new SetCardInfo("Touch of Death", 167, Rarity.COMMON, mage.cards.t.TouchOfDeath.class));
- cards.add(new SetCardInfo("Trailblazer", 272, Rarity.RARE, mage.cards.t.Trailblazer.class));
- cards.add(new SetCardInfo("Underground River", 362, Rarity.RARE, mage.cards.u.UndergroundRiver.class));
- cards.add(new SetCardInfo("Updraft", 105, Rarity.UNCOMMON, mage.cards.u.Updraft.class));
- cards.add(new SetCardInfo("Urza's Bauble", 343, Rarity.UNCOMMON, mage.cards.u.UrzasBauble.class));
- cards.add(new SetCardInfo("Veldt", 363, Rarity.RARE, mage.cards.v.Veldt.class));
- cards.add(new SetCardInfo("Venomous Breath", 273, Rarity.UNCOMMON, mage.cards.v.VenomousBreath.class));
- cards.add(new SetCardInfo("Vertigo", 222, Rarity.UNCOMMON, mage.cards.v.Vertigo.class));
- cards.add(new SetCardInfo("Vexing Arcanix", 344, Rarity.RARE, mage.cards.v.VexingArcanix.class));
- cards.add(new SetCardInfo("Vibrating Sphere", 345, Rarity.RARE, mage.cards.v.VibratingSphere.class));
- cards.add(new SetCardInfo("Walking Wall", 346, Rarity.UNCOMMON, mage.cards.w.WalkingWall.class));
- cards.add(new SetCardInfo("Wall of Lava", 223, Rarity.UNCOMMON, mage.cards.w.WallOfLava.class));
- cards.add(new SetCardInfo("Wall of Pine Needles", 274, Rarity.UNCOMMON, mage.cards.w.WallOfPineNeedles.class));
- cards.add(new SetCardInfo("Wall of Shields", 347, Rarity.UNCOMMON, mage.cards.w.WallOfShields.class));
- cards.add(new SetCardInfo("War Chariot", 348, Rarity.UNCOMMON, mage.cards.w.WarChariot.class));
- cards.add(new SetCardInfo("Warning", 55, Rarity.COMMON, mage.cards.w.Warning.class));
- cards.add(new SetCardInfo("White Scarab", 56, Rarity.UNCOMMON, mage.cards.w.WhiteScarab.class));
- cards.add(new SetCardInfo("Whiteout", 275, Rarity.UNCOMMON, mage.cards.w.Whiteout.class));
- cards.add(new SetCardInfo("Wild Growth", 277, Rarity.COMMON, mage.cards.w.WildGrowth.class));
- cards.add(new SetCardInfo("Wind Spirit", 106, Rarity.UNCOMMON, mage.cards.w.WindSpirit.class));
- cards.add(new SetCardInfo("Wings of Aesthir", 305, Rarity.UNCOMMON, mage.cards.w.WingsOfAesthir.class));
- cards.add(new SetCardInfo("Withering Wisps", 168, Rarity.UNCOMMON, mage.cards.w.WitheringWisps.class));
- cards.add(new SetCardInfo("Woolly Mammoths", 278, Rarity.COMMON, mage.cards.w.WoollyMammoths.class));
- cards.add(new SetCardInfo("Woolly Spider", 279, Rarity.COMMON, mage.cards.w.WoollySpider.class));
- cards.add(new SetCardInfo("Word of Blasting", 224, Rarity.UNCOMMON, mage.cards.w.WordOfBlasting.class));
- cards.add(new SetCardInfo("Word of Undoing", 108, Rarity.COMMON, mage.cards.w.WordOfUndoing.class));
- cards.add(new SetCardInfo("Wrath of Marit Lage", 109, Rarity.RARE, mage.cards.w.WrathOfMaritLage.class));
- cards.add(new SetCardInfo("Yavimaya Gnats", 280, Rarity.UNCOMMON, mage.cards.y.YavimayaGnats.class));
- cards.add(new SetCardInfo("Zur's Weirding", 110, Rarity.RARE, mage.cards.z.ZursWeirding.class));
- cards.add(new SetCardInfo("Zuran Enchanter", 111, Rarity.COMMON, mage.cards.z.ZuranEnchanter.class));
- cards.add(new SetCardInfo("Zuran Orb", 350, Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class));
- cards.add(new SetCardInfo("Zuran Spellcaster", 112, Rarity.COMMON, mage.cards.z.ZuranSpellcaster.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class IceAge extends ExpansionSet {
+
+ private static final IceAge instance = new IceAge();
+
+ public static IceAge getInstance() {
+ return instance;
+ }
+
+ private IceAge() {
+ super("Ice Age", "ICE", ExpansionSet.buildDate(1995, 5, 1), SetType.EXPANSION);
+ this.blockName = "Ice Age";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Abyssal Specter", 113, Rarity.UNCOMMON, mage.cards.a.AbyssalSpecter.class));
+ cards.add(new SetCardInfo("Adarkar Sentinel", 306, Rarity.UNCOMMON, mage.cards.a.AdarkarSentinel.class));
+ cards.add(new SetCardInfo("Adarkar Wastes", 351, Rarity.RARE, mage.cards.a.AdarkarWastes.class));
+ cards.add(new SetCardInfo("Aegis of the Meek", 307, Rarity.RARE, mage.cards.a.AegisOfTheMeek.class));
+ cards.add(new SetCardInfo("Altar of Bone", 281, Rarity.RARE, mage.cards.a.AltarOfBone.class));
+ cards.add(new SetCardInfo("Anarchy", 170, Rarity.UNCOMMON, mage.cards.a.Anarchy.class));
+ cards.add(new SetCardInfo("Arenson's Aura", 3, Rarity.COMMON, mage.cards.a.ArensonsAura.class));
+ cards.add(new SetCardInfo("Armor of Faith", 4, Rarity.COMMON, mage.cards.a.ArmorOfFaith.class));
+ cards.add(new SetCardInfo("Arnjlot's Ascent", 57, Rarity.COMMON, mage.cards.a.ArnjlotsAscent.class));
+ cards.add(new SetCardInfo("Ashen Ghoul", 114, Rarity.UNCOMMON, mage.cards.a.AshenGhoul.class));
+ cards.add(new SetCardInfo("Aurochs", 225, Rarity.COMMON, mage.cards.a.Aurochs.class));
+ cards.add(new SetCardInfo("Avalanche", 171, Rarity.UNCOMMON, mage.cards.a.Avalanche.class));
+ cards.add(new SetCardInfo("Balduvian Barbarians", 172, Rarity.COMMON, mage.cards.b.BalduvianBarbarians.class));
+ cards.add(new SetCardInfo("Balduvian Bears", 226, Rarity.COMMON, mage.cards.b.BalduvianBears.class));
+ cards.add(new SetCardInfo("Balduvian Conjurer", 58, Rarity.UNCOMMON, mage.cards.b.BalduvianConjurer.class));
+ cards.add(new SetCardInfo("Balduvian Hydra", 173, Rarity.RARE, mage.cards.b.BalduvianHydra.class));
+ cards.add(new SetCardInfo("Barbed Sextant", 312, Rarity.COMMON, mage.cards.b.BarbedSextant.class));
+ cards.add(new SetCardInfo("Baton of Morale", 313, Rarity.UNCOMMON, mage.cards.b.BatonOfMorale.class));
+ cards.add(new SetCardInfo("Battle Frenzy", 175, Rarity.COMMON, mage.cards.b.BattleFrenzy.class));
+ cards.add(new SetCardInfo("Binding Grasp", 60, Rarity.UNCOMMON, mage.cards.b.BindingGrasp.class));
+ cards.add(new SetCardInfo("Black Scarab", 6, Rarity.UNCOMMON, mage.cards.b.BlackScarab.class));
+ cards.add(new SetCardInfo("Blessed Wine", 7, Rarity.COMMON, mage.cards.b.BlessedWine.class));
+ cards.add(new SetCardInfo("Blinking Spirit", 8, Rarity.RARE, mage.cards.b.BlinkingSpirit.class));
+ cards.add(new SetCardInfo("Blue Scarab", 9, Rarity.UNCOMMON, mage.cards.b.BlueScarab.class));
+ cards.add(new SetCardInfo("Brainstorm", 61, Rarity.COMMON, mage.cards.b.Brainstorm.class));
+ cards.add(new SetCardInfo("Brand of Ill Omen", 177, Rarity.RARE, mage.cards.b.BrandOfIllOmen.class));
+ cards.add(new SetCardInfo("Breath of Dreams", 62, Rarity.UNCOMMON, mage.cards.b.BreathOfDreams.class));
+ cards.add(new SetCardInfo("Brine Shaman", 115, Rarity.COMMON, mage.cards.b.BrineShaman.class));
+ cards.add(new SetCardInfo("Brown Ouphe", 228, Rarity.COMMON, mage.cards.b.BrownOuphe.class));
+ cards.add(new SetCardInfo("Brushland", 352, Rarity.RARE, mage.cards.b.Brushland.class));
+ cards.add(new SetCardInfo("Burnt Offering", 116, Rarity.COMMON, mage.cards.b.BurntOffering.class));
+ cards.add(new SetCardInfo("Call to Arms", 10, Rarity.RARE, mage.cards.c.CallToArms.class));
+ cards.add(new SetCardInfo("Caribou Range", 11, Rarity.RARE, mage.cards.c.CaribouRange.class));
+ cards.add(new SetCardInfo("Celestial Sword", 314, Rarity.RARE, mage.cards.c.CelestialSword.class));
+ cards.add(new SetCardInfo("Centaur Archer", 282, Rarity.UNCOMMON, mage.cards.c.CentaurArcher.class));
+ cards.add(new SetCardInfo("Chaos Moon", 179, Rarity.RARE, mage.cards.c.ChaosMoon.class));
+ cards.add(new SetCardInfo("Chub Toad", 229, Rarity.COMMON, mage.cards.c.ChubToad.class));
+ cards.add(new SetCardInfo("Circle of Protection: Black", 12, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class));
+ cards.add(new SetCardInfo("Circle of Protection: Blue", 13, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlue.class));
+ cards.add(new SetCardInfo("Circle of Protection: Green", 14, Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class));
+ cards.add(new SetCardInfo("Circle of Protection: Red", 15, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class));
+ cards.add(new SetCardInfo("Circle of Protection: White", 16, Rarity.COMMON, mage.cards.c.CircleOfProtectionWhite.class));
+ cards.add(new SetCardInfo("Clairvoyance", 63, Rarity.COMMON, mage.cards.c.Clairvoyance.class));
+ cards.add(new SetCardInfo("Cold Snap", 17, Rarity.UNCOMMON, mage.cards.c.ColdSnap.class));
+ cards.add(new SetCardInfo("Conquer", 180, Rarity.UNCOMMON, mage.cards.c.Conquer.class));
+ cards.add(new SetCardInfo("Cooperation", 18, Rarity.COMMON, mage.cards.c.Cooperation.class));
+ cards.add(new SetCardInfo("Counterspell", 64, Rarity.COMMON, mage.cards.c.Counterspell.class));
+ cards.add(new SetCardInfo("Crown of the Ages", 315, Rarity.RARE, mage.cards.c.CrownOfTheAges.class));
+ cards.add(new SetCardInfo("Curse of Marit Lage", 181, Rarity.RARE, mage.cards.c.CurseOfMaritLage.class));
+ cards.add(new SetCardInfo("Dance of the Dead", 118, Rarity.UNCOMMON, mage.cards.d.DanceOfTheDead.class));
+ cards.add(new SetCardInfo("Dark Banishing", 119, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
+ cards.add(new SetCardInfo("Dark Ritual", 120, Rarity.COMMON, mage.cards.d.DarkRitual.class));
+ cards.add(new SetCardInfo("Death Ward", 19, Rarity.COMMON, mage.cards.d.DeathWard.class));
+ cards.add(new SetCardInfo("Deflection", 65, Rarity.RARE, mage.cards.d.Deflection.class));
+ cards.add(new SetCardInfo("Demonic Consultation", 121, Rarity.UNCOMMON, mage.cards.d.DemonicConsultation.class));
+ cards.add(new SetCardInfo("Despotic Scepter", 316, Rarity.RARE, mage.cards.d.DespoticScepter.class));
+ cards.add(new SetCardInfo("Diabolic Vision", 284, Rarity.UNCOMMON, mage.cards.d.DiabolicVision.class));
+ cards.add(new SetCardInfo("Dire Wolves", 230, Rarity.COMMON, mage.cards.d.DireWolves.class));
+ cards.add(new SetCardInfo("Disenchant", 20, Rarity.COMMON, mage.cards.d.Disenchant.class));
+ cards.add(new SetCardInfo("Drift of the Dead", 123, Rarity.UNCOMMON, mage.cards.d.DriftOfTheDead.class));
+ cards.add(new SetCardInfo("Drought", 21, Rarity.UNCOMMON, mage.cards.d.Drought.class));
+ cards.add(new SetCardInfo("Dwarven Armory", 182, Rarity.RARE, mage.cards.d.DwarvenArmory.class));
+ cards.add(new SetCardInfo("Earthlink", 285, Rarity.RARE, mage.cards.e.Earthlink.class));
+ cards.add(new SetCardInfo("Earthlore", 231, Rarity.COMMON, mage.cards.e.Earthlore.class));
+ cards.add(new SetCardInfo("Elder Druid", 232, Rarity.RARE, mage.cards.e.ElderDruid.class));
+ cards.add(new SetCardInfo("Elemental Augury", 286, Rarity.RARE, mage.cards.e.ElementalAugury.class));
+ cards.add(new SetCardInfo("Elkin Bottle", 317, Rarity.RARE, mage.cards.e.ElkinBottle.class));
+ cards.add(new SetCardInfo("Enduring Renewal", 23, Rarity.RARE, mage.cards.e.EnduringRenewal.class));
+ cards.add(new SetCardInfo("Energy Storm", 24, Rarity.RARE, mage.cards.e.EnergyStorm.class));
+ cards.add(new SetCardInfo("Enervate", 67, Rarity.COMMON, mage.cards.e.Enervate.class));
+ cards.add(new SetCardInfo("Errantry", 183, Rarity.COMMON, mage.cards.e.Errantry.class));
+ cards.add(new SetCardInfo("Essence Filter", 233, Rarity.COMMON, mage.cards.e.EssenceFilter.class));
+ cards.add(new SetCardInfo("Essence Flare", 69, Rarity.COMMON, mage.cards.e.EssenceFlare.class));
+ cards.add(new SetCardInfo("Fanatical Fever", 234, Rarity.UNCOMMON, mage.cards.f.FanaticalFever.class));
+ cards.add(new SetCardInfo("Fear", 124, Rarity.COMMON, mage.cards.f.Fear.class));
+ cards.add(new SetCardInfo("Fiery Justice", 288, Rarity.RARE, mage.cards.f.FieryJustice.class));
+ cards.add(new SetCardInfo("Fire Covenant", 289, Rarity.UNCOMMON, mage.cards.f.FireCovenant.class));
+ cards.add(new SetCardInfo("Flame Spirit", 184, Rarity.UNCOMMON, mage.cards.f.FlameSpirit.class));
+ cards.add(new SetCardInfo("Flare", 185, Rarity.COMMON, mage.cards.f.Flare.class));
+ cards.add(new SetCardInfo("Flooded Woodlands", 290, Rarity.RARE, mage.cards.f.FloodedWoodlands.class));
+ cards.add(new SetCardInfo("Flow of Maggots", 125, Rarity.RARE, mage.cards.f.FlowOfMaggots.class));
+ cards.add(new SetCardInfo("Folk of the Pines", 235, Rarity.COMMON, mage.cards.f.FolkOfThePines.class));
+ cards.add(new SetCardInfo("Forbidden Lore", 236, Rarity.RARE, mage.cards.f.ForbiddenLore.class));
+ cards.add(new SetCardInfo("Force Void", 70, Rarity.UNCOMMON, mage.cards.f.ForceVoid.class));
+ cards.add(new SetCardInfo("Forest", 380, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 381, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 382, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forgotten Lore", 237, Rarity.UNCOMMON, mage.cards.f.ForgottenLore.class));
+ cards.add(new SetCardInfo("Formation", 25, Rarity.RARE, mage.cards.f.Formation.class));
+ cards.add(new SetCardInfo("Foul Familiar", 126, Rarity.COMMON, mage.cards.f.FoulFamiliar.class));
+ cards.add(new SetCardInfo("Foxfire", 238, Rarity.COMMON, mage.cards.f.Foxfire.class));
+ cards.add(new SetCardInfo("Freyalise's Charm", 240, Rarity.UNCOMMON, mage.cards.f.FreyalisesCharm.class));
+ cards.add(new SetCardInfo("Fumarole", 291, Rarity.UNCOMMON, mage.cards.f.Fumarole.class));
+ cards.add(new SetCardInfo("Fyndhorn Bow", 318, Rarity.UNCOMMON, mage.cards.f.FyndhornBow.class));
+ cards.add(new SetCardInfo("Fyndhorn Brownie", 242, Rarity.COMMON, mage.cards.f.FyndhornBrownie.class));
+ cards.add(new SetCardInfo("Fyndhorn Elder", 243, Rarity.UNCOMMON, mage.cards.f.FyndhornElder.class));
+ cards.add(new SetCardInfo("Fyndhorn Elves", 244, Rarity.COMMON, mage.cards.f.FyndhornElves.class));
+ cards.add(new SetCardInfo("Fyndhorn Pollen", 245, Rarity.RARE, mage.cards.f.FyndhornPollen.class));
+ cards.add(new SetCardInfo("Game of Chaos", 186, Rarity.RARE, mage.cards.g.GameOfChaos.class));
+ cards.add(new SetCardInfo("Gangrenous Zombies", 127, Rarity.COMMON, mage.cards.g.GangrenousZombies.class));
+ cards.add(new SetCardInfo("General Jarkeld", 27, Rarity.RARE, mage.cards.g.GeneralJarkeld.class));
+ cards.add(new SetCardInfo("Giant Growth", 246, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
+ cards.add(new SetCardInfo("Giant Trap Door Spider", 293, Rarity.UNCOMMON, mage.cards.g.GiantTrapDoorSpider.class));
+ cards.add(new SetCardInfo("Glacial Chasm", 353, Rarity.UNCOMMON, mage.cards.g.GlacialChasm.class));
+ cards.add(new SetCardInfo("Glacial Crevasses", 187, Rarity.RARE, mage.cards.g.GlacialCrevasses.class));
+ cards.add(new SetCardInfo("Glacial Wall", 71, Rarity.UNCOMMON, mage.cards.g.GlacialWall.class));
+ cards.add(new SetCardInfo("Goblin Lyre", 319, Rarity.RARE, mage.cards.g.GoblinLyre.class));
+ cards.add(new SetCardInfo("Goblin Mutant", 188, Rarity.UNCOMMON, mage.cards.g.GoblinMutant.class));
+ cards.add(new SetCardInfo("Goblin Snowman", 191, Rarity.UNCOMMON, mage.cards.g.GoblinSnowman.class));
+ cards.add(new SetCardInfo("Gorilla Pack", 247, Rarity.COMMON, mage.cards.g.GorillaPack.class));
+ cards.add(new SetCardInfo("Gravebind", 129, Rarity.RARE, mage.cards.g.Gravebind.class));
+ cards.add(new SetCardInfo("Green Scarab", 28, Rarity.UNCOMMON, mage.cards.g.GreenScarab.class));
+ cards.add(new SetCardInfo("Hallowed Ground", 29, Rarity.UNCOMMON, mage.cards.h.HallowedGround.class));
+ cards.add(new SetCardInfo("Halls of Mist", 354, Rarity.RARE, mage.cards.h.HallsOfMist.class));
+ cards.add(new SetCardInfo("Heal", 30, Rarity.COMMON, mage.cards.h.Heal.class));
+ cards.add(new SetCardInfo("Hecatomb", 130, Rarity.RARE, mage.cards.h.Hecatomb.class));
+ cards.add(new SetCardInfo("Hematite Talisman", 320, Rarity.UNCOMMON, mage.cards.h.HematiteTalisman.class));
+ cards.add(new SetCardInfo("Hoar Shade", 131, Rarity.COMMON, mage.cards.h.HoarShade.class));
+ cards.add(new SetCardInfo("Hot Springs", 248, Rarity.RARE, mage.cards.h.HotSprings.class));
+ cards.add(new SetCardInfo("Howl from Beyond", 132, Rarity.COMMON, mage.cards.h.HowlFromBeyond.class));
+ cards.add(new SetCardInfo("Hurricane", 249, Rarity.UNCOMMON, mage.cards.h.Hurricane.class));
+ cards.add(new SetCardInfo("Hyalopterous Lemure", 133, Rarity.UNCOMMON, mage.cards.h.HyalopterousLemure.class));
+ cards.add(new SetCardInfo("Hydroblast", 72, Rarity.COMMON, mage.cards.h.Hydroblast.class));
+ cards.add(new SetCardInfo("Hymn of Rebirth", 295, Rarity.UNCOMMON, mage.cards.h.HymnOfRebirth.class));
+ cards.add(new SetCardInfo("Ice Cauldron", 321, Rarity.RARE, mage.cards.i.IceCauldron.class));
+ cards.add(new SetCardInfo("Ice Floe", 355, Rarity.UNCOMMON, mage.cards.i.IceFloe.class));
+ cards.add(new SetCardInfo("Iceberg", 73, Rarity.UNCOMMON, mage.cards.i.Iceberg.class));
+ cards.add(new SetCardInfo("Icequake", 134, Rarity.UNCOMMON, mage.cards.i.Icequake.class));
+ cards.add(new SetCardInfo("Icy Manipulator", 322, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class));
+ cards.add(new SetCardInfo("Icy Prison", 74, Rarity.RARE, mage.cards.i.IcyPrison.class));
+ cards.add(new SetCardInfo("Illusionary Forces", 75, Rarity.COMMON, mage.cards.i.IllusionaryForces.class));
+ cards.add(new SetCardInfo("Illusionary Wall", 78, Rarity.COMMON, mage.cards.i.IllusionaryWall.class));
+ cards.add(new SetCardInfo("Illusions of Grandeur", 79, Rarity.RARE, mage.cards.i.IllusionsOfGrandeur.class));
+ cards.add(new SetCardInfo("Imposing Visage", 193, Rarity.COMMON, mage.cards.i.ImposingVisage.class));
+ cards.add(new SetCardInfo("Incinerate", 194, Rarity.COMMON, mage.cards.i.Incinerate.class));
+ cards.add(new SetCardInfo("Infernal Darkness", 135, Rarity.RARE, mage.cards.i.InfernalDarkness.class));
+ cards.add(new SetCardInfo("Infernal Denizen", 136, Rarity.RARE, mage.cards.i.InfernalDenizen.class));
+ cards.add(new SetCardInfo("Infinite Hourglass", 323, Rarity.RARE, mage.cards.i.InfiniteHourglass.class));
+ cards.add(new SetCardInfo("Infuse", 80, Rarity.COMMON, mage.cards.i.Infuse.class));
+ cards.add(new SetCardInfo("Island", 368, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 369, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 370, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Jester's Cap", 324, Rarity.RARE, mage.cards.j.JestersCap.class));
+ cards.add(new SetCardInfo("Jester's Mask", 325, Rarity.RARE, mage.cards.j.JestersMask.class));
+ cards.add(new SetCardInfo("Jeweled Amulet", 326, Rarity.UNCOMMON, mage.cards.j.JeweledAmulet.class));
+ cards.add(new SetCardInfo("Johtull Wurm", 250, Rarity.UNCOMMON, mage.cards.j.JohtullWurm.class));
+ cards.add(new SetCardInfo("Jokulhaups", 195, Rarity.RARE, mage.cards.j.Jokulhaups.class));
+ cards.add(new SetCardInfo("Juniper Order Druid", 251, Rarity.COMMON, mage.cards.j.JuniperOrderDruid.class));
+ cards.add(new SetCardInfo("Justice", 32, Rarity.UNCOMMON, mage.cards.j.Justice.class));
+ cards.add(new SetCardInfo("Karplusan Forest", 356, Rarity.RARE, mage.cards.k.KarplusanForest.class));
+ cards.add(new SetCardInfo("Karplusan Giant", 196, Rarity.UNCOMMON, mage.cards.k.KarplusanGiant.class));
+ cards.add(new SetCardInfo("Karplusan Yeti", 197, Rarity.RARE, mage.cards.k.KarplusanYeti.class));
+ cards.add(new SetCardInfo("Kelsinko Ranger", 33, Rarity.COMMON, mage.cards.k.KelsinkoRanger.class));
+ cards.add(new SetCardInfo("Kjeldoran Dead", 137, Rarity.COMMON, mage.cards.k.KjeldoranDead.class));
+ cards.add(new SetCardInfo("Kjeldoran Frostbeast", 296, Rarity.UNCOMMON, mage.cards.k.KjeldoranFrostbeast.class));
+ cards.add(new SetCardInfo("Kjeldoran Knight", 36, Rarity.RARE, mage.cards.k.KjeldoranKnight.class));
+ cards.add(new SetCardInfo("Kjeldoran Phalanx", 37, Rarity.RARE, mage.cards.k.KjeldoranPhalanx.class));
+ cards.add(new SetCardInfo("Kjeldoran Royal Guard", 38, Rarity.RARE, mage.cards.k.KjeldoranRoyalGuard.class));
+ cards.add(new SetCardInfo("Kjeldoran Skycaptain", 39, Rarity.UNCOMMON, mage.cards.k.KjeldoranSkycaptain.class));
+ cards.add(new SetCardInfo("Kjeldoran Skyknight", 40, Rarity.COMMON, mage.cards.k.KjeldoranSkyknight.class));
+ cards.add(new SetCardInfo("Kjeldoran Warrior", 41, Rarity.COMMON, mage.cards.k.KjeldoranWarrior.class));
+ cards.add(new SetCardInfo("Knight of Stromgald", 138, Rarity.UNCOMMON, mage.cards.k.KnightOfStromgald.class));
+ cards.add(new SetCardInfo("Krovikan Fetish", 140, Rarity.COMMON, mage.cards.k.KrovikanFetish.class));
+ cards.add(new SetCardInfo("Krovikan Sorcerer", 81, Rarity.COMMON, mage.cards.k.KrovikanSorcerer.class));
+ cards.add(new SetCardInfo("Land Cap", 357, Rarity.RARE, mage.cards.l.LandCap.class));
+ cards.add(new SetCardInfo("Lapis Lazuli Talisman", 327, Rarity.UNCOMMON, mage.cards.l.LapisLazuliTalisman.class));
+ cards.add(new SetCardInfo("Lava Tubes", 358, Rarity.RARE, mage.cards.l.LavaTubes.class));
+ cards.add(new SetCardInfo("Legions of Lim-Dul", 142, Rarity.COMMON, mage.cards.l.LegionsOfLimDul.class));
+ cards.add(new SetCardInfo("Leshrac's Rite", 143, Rarity.UNCOMMON, mage.cards.l.LeshracsRite.class));
+ cards.add(new SetCardInfo("Leshrac's Sigil", 144, Rarity.UNCOMMON, mage.cards.l.LeshracsSigil.class));
+ cards.add(new SetCardInfo("Lhurgoyf", 252, Rarity.RARE, mage.cards.l.Lhurgoyf.class));
+ cards.add(new SetCardInfo("Lightning Blow", 42, Rarity.RARE, mage.cards.l.LightningBlow.class));
+ cards.add(new SetCardInfo("Lim-Dul's Hex", 146, Rarity.UNCOMMON, mage.cards.l.LimDulsHex.class));
+ cards.add(new SetCardInfo("Lure", 253, Rarity.UNCOMMON, mage.cards.l.Lure.class));
+ cards.add(new SetCardInfo("Magus of the Unseen", 82, Rarity.RARE, mage.cards.m.MagusOfTheUnseen.class));
+ cards.add(new SetCardInfo("Malachite Talisman", 328, Rarity.UNCOMMON, mage.cards.m.MalachiteTalisman.class));
+ cards.add(new SetCardInfo("Marton Stromgald", 204, Rarity.RARE, mage.cards.m.MartonStromgald.class));
+ cards.add(new SetCardInfo("Melee", 199, Rarity.UNCOMMON, mage.cards.m.Melee.class));
+ cards.add(new SetCardInfo("Melting", 200, Rarity.UNCOMMON, mage.cards.m.Melting.class));
+ cards.add(new SetCardInfo("Merieke Ri Berit", 297, Rarity.RARE, mage.cards.m.MeriekeRiBerit.class));
+ cards.add(new SetCardInfo("Mesmeric Trance", 83, Rarity.RARE, mage.cards.m.MesmericTrance.class));
+ cards.add(new SetCardInfo("Meteor Shower", 201, Rarity.COMMON, mage.cards.m.MeteorShower.class));
+ cards.add(new SetCardInfo("Mind Ravel", 147, Rarity.COMMON, mage.cards.m.MindRavel.class));
+ cards.add(new SetCardInfo("Mind Warp", 148, Rarity.UNCOMMON, mage.cards.m.MindWarp.class));
+ cards.add(new SetCardInfo("Minion of Leshrac", 150, Rarity.RARE, mage.cards.m.MinionOfLeshrac.class));
+ cards.add(new SetCardInfo("Minion of Tevesh Szat", 151, Rarity.RARE, mage.cards.m.MinionOfTeveshSzat.class));
+ cards.add(new SetCardInfo("Mole Worms", 152, Rarity.UNCOMMON, mage.cards.m.MoleWorms.class));
+ cards.add(new SetCardInfo("Monsoon", 298, Rarity.RARE, mage.cards.m.Monsoon.class));
+ cards.add(new SetCardInfo("Moor Fiend", 153, Rarity.COMMON, mage.cards.m.MoorFiend.class));
+ cards.add(new SetCardInfo("Mountain Goat", 202, Rarity.COMMON, mage.cards.m.MountainGoat.class));
+ cards.add(new SetCardInfo("Mountain", 376, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 377, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 378, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mudslide", 203, Rarity.RARE, mage.cards.m.Mudslide.class));
+ cards.add(new SetCardInfo("Mystic Might", 86, Rarity.RARE, mage.cards.m.MysticMight.class));
+ cards.add(new SetCardInfo("Mystic Remora", 87, Rarity.COMMON, mage.cards.m.MysticRemora.class));
+ cards.add(new SetCardInfo("Nacre Talisman", 329, Rarity.UNCOMMON, mage.cards.n.NacreTalisman.class));
+ cards.add(new SetCardInfo("Naked Singularity", 330, Rarity.RARE, mage.cards.n.NakedSingularity.class));
+ cards.add(new SetCardInfo("Nature's Lore", 255, Rarity.UNCOMMON, mage.cards.n.NaturesLore.class));
+ cards.add(new SetCardInfo("Necropotence", 154, Rarity.RARE, mage.cards.n.Necropotence.class));
+ cards.add(new SetCardInfo("Norritt", 155, Rarity.COMMON, mage.cards.n.Norritt.class));
+ cards.add(new SetCardInfo("Onyx Talisman", 331, Rarity.UNCOMMON, mage.cards.o.OnyxTalisman.class));
+ cards.add(new SetCardInfo("Orcish Cannoneers", 205, Rarity.UNCOMMON, mage.cards.o.OrcishCannoneers.class));
+ cards.add(new SetCardInfo("Orcish Healer", 208, Rarity.UNCOMMON, mage.cards.o.OrcishHealer.class));
+ cards.add(new SetCardInfo("Orcish Librarian", 209, Rarity.RARE, mage.cards.o.OrcishLibrarian.class));
+ cards.add(new SetCardInfo("Orcish Lumberjack", 210, Rarity.COMMON, mage.cards.o.OrcishLumberjack.class));
+ cards.add(new SetCardInfo("Orcish Squatters", 211, Rarity.RARE, mage.cards.o.OrcishSquatters.class));
+ cards.add(new SetCardInfo("Order of the Sacred Torch", 45, Rarity.RARE, mage.cards.o.OrderOfTheSacredTorch.class));
+ cards.add(new SetCardInfo("Order of the White Shield", 46, Rarity.UNCOMMON, mage.cards.o.OrderOfTheWhiteShield.class));
+ cards.add(new SetCardInfo("Pale Bears", 256, Rarity.RARE, mage.cards.p.PaleBears.class));
+ cards.add(new SetCardInfo("Panic", 212, Rarity.COMMON, mage.cards.p.Panic.class));
+ cards.add(new SetCardInfo("Pentagram of the Ages", 332, Rarity.RARE, mage.cards.p.PentagramOfTheAges.class));
+ cards.add(new SetCardInfo("Pestilence Rats", 157, Rarity.COMMON, mage.cards.p.PestilenceRats.class));
+ cards.add(new SetCardInfo("Pit Trap", 333, Rarity.UNCOMMON, mage.cards.p.PitTrap.class));
+ cards.add(new SetCardInfo("Plains", 364, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 365, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 366, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Polar Kraken", 89, Rarity.RARE, mage.cards.p.PolarKraken.class));
+ cards.add(new SetCardInfo("Portent", 90, Rarity.COMMON, mage.cards.p.Portent.class));
+ cards.add(new SetCardInfo("Power Sink", 91, Rarity.COMMON, mage.cards.p.PowerSink.class));
+ cards.add(new SetCardInfo("Pox", 158, Rarity.RARE, mage.cards.p.Pox.class));
+ cards.add(new SetCardInfo("Prismatic Ward", 47, Rarity.COMMON, mage.cards.p.PrismaticWard.class));
+ cards.add(new SetCardInfo("Pygmy Allosaurus", 257, Rarity.RARE, mage.cards.p.PygmyAllosaurus.class));
+ cards.add(new SetCardInfo("Pyknite", 258, Rarity.COMMON, mage.cards.p.Pyknite.class));
+ cards.add(new SetCardInfo("Pyroblast", 213, Rarity.COMMON, mage.cards.p.Pyroblast.class));
+ cards.add(new SetCardInfo("Pyroclasm", 214, Rarity.UNCOMMON, mage.cards.p.Pyroclasm.class));
+ cards.add(new SetCardInfo("Rally", 48, Rarity.COMMON, mage.cards.r.Rally.class));
+ cards.add(new SetCardInfo("Ray of Command", 92, Rarity.COMMON, mage.cards.r.RayOfCommand.class));
+ cards.add(new SetCardInfo("Ray of Erasure", 93, Rarity.COMMON, mage.cards.r.RayOfErasure.class));
+ cards.add(new SetCardInfo("Reality Twist", 94, Rarity.RARE, mage.cards.r.RealityTwist.class));
+ cards.add(new SetCardInfo("Reclamation", 300, Rarity.RARE, mage.cards.r.Reclamation.class));
+ cards.add(new SetCardInfo("Red Scarab", 49, Rarity.UNCOMMON, mage.cards.r.RedScarab.class));
+ cards.add(new SetCardInfo("Regeneration", 259, Rarity.COMMON, mage.cards.r.Regeneration.class));
+ cards.add(new SetCardInfo("Rime Dryad", 260, Rarity.COMMON, mage.cards.r.RimeDryad.class));
+ cards.add(new SetCardInfo("Ritual of Subdual", 261, Rarity.RARE, mage.cards.r.RitualOfSubdual.class));
+ cards.add(new SetCardInfo("River Delta", 359, Rarity.RARE, mage.cards.r.RiverDelta.class));
+ cards.add(new SetCardInfo("Runed Arch", 309, Rarity.RARE, mage.cards.r.RunedArch.class));
+ cards.add(new SetCardInfo("Sabretooth Tiger", 215, Rarity.COMMON, mage.cards.s.SabretoothTiger.class));
+ cards.add(new SetCardInfo("Scaled Wurm", 262, Rarity.COMMON, mage.cards.s.ScaledWurm.class));
+ cards.add(new SetCardInfo("Sea Spirit", 95, Rarity.UNCOMMON, mage.cards.s.SeaSpirit.class));
+ cards.add(new SetCardInfo("Seizures", 159, Rarity.COMMON, mage.cards.s.Seizures.class));
+ cards.add(new SetCardInfo("Shambling Strider", 263, Rarity.COMMON, mage.cards.s.ShamblingStrider.class));
+ cards.add(new SetCardInfo("Shatter", 216, Rarity.COMMON, mage.cards.s.Shatter.class));
+ cards.add(new SetCardInfo("Shield Bearer", 52, Rarity.COMMON, mage.cards.s.ShieldBearer.class));
+ cards.add(new SetCardInfo("Shield of the Ages", 335, Rarity.UNCOMMON, mage.cards.s.ShieldOfTheAges.class));
+ cards.add(new SetCardInfo("Shyft", 96, Rarity.RARE, mage.cards.s.Shyft.class));
+ cards.add(new SetCardInfo("Sibilant Spirit", 97, Rarity.RARE, mage.cards.s.SibilantSpirit.class));
+ cards.add(new SetCardInfo("Silver Erne", 98, Rarity.UNCOMMON, mage.cards.s.SilverErne.class));
+ cards.add(new SetCardInfo("Skeleton Ship", 301, Rarity.RARE, mage.cards.s.SkeletonShip.class));
+ cards.add(new SetCardInfo("Skull Catapult", 336, Rarity.UNCOMMON, mage.cards.s.SkullCatapult.class));
+ cards.add(new SetCardInfo("Snow Fortress", 337, Rarity.RARE, mage.cards.s.SnowFortress.class));
+ cards.add(new SetCardInfo("Snow Hound", 53, Rarity.UNCOMMON, mage.cards.s.SnowHound.class));
+ cards.add(new SetCardInfo("Snow-Covered Forest", 383, Rarity.LAND, mage.cards.s.SnowCoveredForest.class));
+ cards.add(new SetCardInfo("Snow-Covered Island", 371, Rarity.LAND, mage.cards.s.SnowCoveredIsland.class));
+ cards.add(new SetCardInfo("Snow-Covered Mountain", 379, Rarity.LAND, mage.cards.s.SnowCoveredMountain.class));
+ cards.add(new SetCardInfo("Snow-Covered Plains", 367, Rarity.LAND, mage.cards.s.SnowCoveredPlains.class));
+ cards.add(new SetCardInfo("Snow-Covered Swamp", 372, Rarity.LAND, mage.cards.s.SnowCoveredSwamp.class));
+ cards.add(new SetCardInfo("Soldevi Golem", 338, Rarity.RARE, mage.cards.s.SoldeviGolem.class));
+ cards.add(new SetCardInfo("Soldevi Machinist", 102, Rarity.UNCOMMON, mage.cards.s.SoldeviMachinist.class));
+ cards.add(new SetCardInfo("Soldevi Simulacrum", 339, Rarity.UNCOMMON, mage.cards.s.SoldeviSimulacrum.class));
+ cards.add(new SetCardInfo("Songs of the Damned", 160, Rarity.COMMON, mage.cards.s.SongsOfTheDamned.class));
+ cards.add(new SetCardInfo("Soul Barrier", 103, Rarity.UNCOMMON, mage.cards.s.SoulBarrier.class));
+ cards.add(new SetCardInfo("Soul Burn", 161, Rarity.COMMON, mage.cards.s.SoulBurn.class));
+ cards.add(new SetCardInfo("Soul Kiss", 162, Rarity.COMMON, mage.cards.s.SoulKiss.class));
+ cards.add(new SetCardInfo("Spoils of Evil", 163, Rarity.RARE, mage.cards.s.SpoilsOfEvil.class));
+ cards.add(new SetCardInfo("Staff of the Ages", 340, Rarity.RARE, mage.cards.s.StaffOfTheAges.class));
+ cards.add(new SetCardInfo("Stampede", 265, Rarity.RARE, mage.cards.s.Stampede.class));
+ cards.add(new SetCardInfo("Stone Rain", 217, Rarity.COMMON, mage.cards.s.StoneRain.class));
+ cards.add(new SetCardInfo("Stone Spirit", 218, Rarity.UNCOMMON, mage.cards.s.StoneSpirit.class));
+ cards.add(new SetCardInfo("Stonehands", 219, Rarity.COMMON, mage.cards.s.Stonehands.class));
+ cards.add(new SetCardInfo("Storm Spirit", 303, Rarity.RARE, mage.cards.s.StormSpirit.class));
+ cards.add(new SetCardInfo("Stormbind", 304, Rarity.RARE, mage.cards.s.Stormbind.class));
+ cards.add(new SetCardInfo("Stromgald Cabal", 166, Rarity.RARE, mage.cards.s.StromgaldCabal.class));
+ cards.add(new SetCardInfo("Stunted Growth", 266, Rarity.RARE, mage.cards.s.StuntedGrowth.class));
+ cards.add(new SetCardInfo("Sulfurous Springs", 360, Rarity.RARE, mage.cards.s.SulfurousSprings.class));
+ cards.add(new SetCardInfo("Sunstone", 341, Rarity.UNCOMMON, mage.cards.s.Sunstone.class));
+ cards.add(new SetCardInfo("Swamp", 373, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 374, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 375, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swords to Plowshares", 54, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
+ cards.add(new SetCardInfo("Tarpan", 267, Rarity.COMMON, mage.cards.t.Tarpan.class));
+ cards.add(new SetCardInfo("Thermokarst", 268, Rarity.UNCOMMON, mage.cards.t.Thermokarst.class));
+ cards.add(new SetCardInfo("Thoughtleech", 269, Rarity.UNCOMMON, mage.cards.t.Thoughtleech.class));
+ cards.add(new SetCardInfo("Thunder Wall", 104, Rarity.UNCOMMON, mage.cards.t.ThunderWall.class));
+ cards.add(new SetCardInfo("Timberline Ridge", 361, Rarity.RARE, mage.cards.t.TimberlineRidge.class));
+ cards.add(new SetCardInfo("Time Bomb", 342, Rarity.RARE, mage.cards.t.TimeBomb.class));
+ cards.add(new SetCardInfo("Tinder Wall", 270, Rarity.COMMON, mage.cards.t.TinderWall.class));
+ cards.add(new SetCardInfo("Tor Giant", 220, Rarity.COMMON, mage.cards.t.TorGiant.class));
+ cards.add(new SetCardInfo("Total War", 221, Rarity.RARE, mage.cards.t.TotalWar.class));
+ cards.add(new SetCardInfo("Touch of Death", 167, Rarity.COMMON, mage.cards.t.TouchOfDeath.class));
+ cards.add(new SetCardInfo("Trailblazer", 272, Rarity.RARE, mage.cards.t.Trailblazer.class));
+ cards.add(new SetCardInfo("Underground River", 362, Rarity.RARE, mage.cards.u.UndergroundRiver.class));
+ cards.add(new SetCardInfo("Updraft", 105, Rarity.UNCOMMON, mage.cards.u.Updraft.class));
+ cards.add(new SetCardInfo("Urza's Bauble", 343, Rarity.UNCOMMON, mage.cards.u.UrzasBauble.class));
+ cards.add(new SetCardInfo("Veldt", 363, Rarity.RARE, mage.cards.v.Veldt.class));
+ cards.add(new SetCardInfo("Venomous Breath", 273, Rarity.UNCOMMON, mage.cards.v.VenomousBreath.class));
+ cards.add(new SetCardInfo("Vertigo", 222, Rarity.UNCOMMON, mage.cards.v.Vertigo.class));
+ cards.add(new SetCardInfo("Vexing Arcanix", 344, Rarity.RARE, mage.cards.v.VexingArcanix.class));
+ cards.add(new SetCardInfo("Vibrating Sphere", 345, Rarity.RARE, mage.cards.v.VibratingSphere.class));
+ cards.add(new SetCardInfo("Walking Wall", 346, Rarity.UNCOMMON, mage.cards.w.WalkingWall.class));
+ cards.add(new SetCardInfo("Wall of Lava", 223, Rarity.UNCOMMON, mage.cards.w.WallOfLava.class));
+ cards.add(new SetCardInfo("Wall of Pine Needles", 274, Rarity.UNCOMMON, mage.cards.w.WallOfPineNeedles.class));
+ cards.add(new SetCardInfo("Wall of Shields", 347, Rarity.UNCOMMON, mage.cards.w.WallOfShields.class));
+ cards.add(new SetCardInfo("War Chariot", 348, Rarity.UNCOMMON, mage.cards.w.WarChariot.class));
+ cards.add(new SetCardInfo("Warning", 55, Rarity.COMMON, mage.cards.w.Warning.class));
+ cards.add(new SetCardInfo("White Scarab", 56, Rarity.UNCOMMON, mage.cards.w.WhiteScarab.class));
+ cards.add(new SetCardInfo("Whiteout", 275, Rarity.UNCOMMON, mage.cards.w.Whiteout.class));
+ cards.add(new SetCardInfo("Wild Growth", 277, Rarity.COMMON, mage.cards.w.WildGrowth.class));
+ cards.add(new SetCardInfo("Wind Spirit", 106, Rarity.UNCOMMON, mage.cards.w.WindSpirit.class));
+ cards.add(new SetCardInfo("Wings of Aesthir", 305, Rarity.UNCOMMON, mage.cards.w.WingsOfAesthir.class));
+ cards.add(new SetCardInfo("Withering Wisps", 168, Rarity.UNCOMMON, mage.cards.w.WitheringWisps.class));
+ cards.add(new SetCardInfo("Woolly Mammoths", 278, Rarity.COMMON, mage.cards.w.WoollyMammoths.class));
+ cards.add(new SetCardInfo("Woolly Spider", 279, Rarity.COMMON, mage.cards.w.WoollySpider.class));
+ cards.add(new SetCardInfo("Word of Blasting", 224, Rarity.UNCOMMON, mage.cards.w.WordOfBlasting.class));
+ cards.add(new SetCardInfo("Word of Undoing", 108, Rarity.COMMON, mage.cards.w.WordOfUndoing.class));
+ cards.add(new SetCardInfo("Wrath of Marit Lage", 109, Rarity.RARE, mage.cards.w.WrathOfMaritLage.class));
+ cards.add(new SetCardInfo("Yavimaya Gnats", 280, Rarity.UNCOMMON, mage.cards.y.YavimayaGnats.class));
+ cards.add(new SetCardInfo("Zur's Weirding", 110, Rarity.RARE, mage.cards.z.ZursWeirding.class));
+ cards.add(new SetCardInfo("Zuran Enchanter", 111, Rarity.COMMON, mage.cards.z.ZuranEnchanter.class));
+ cards.add(new SetCardInfo("Zuran Orb", 350, Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class));
+ cards.add(new SetCardInfo("Zuran Spellcaster", 112, Rarity.COMMON, mage.cards.z.ZuranSpellcaster.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/IconicMasters.java b/Mage.Sets/src/mage/sets/IconicMasters.java
index f592ee24fa1..9291e4981ee 100644
--- a/Mage.Sets/src/mage/sets/IconicMasters.java
+++ b/Mage.Sets/src/mage/sets/IconicMasters.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author MajorLazar
*/
-public class IconicMasters extends ExpansionSet {
+public final class IconicMasters extends ExpansionSet {
private static final IconicMasters instance = new IconicMasters();
diff --git a/Mage.Sets/src/mage/sets/Innistrad.java b/Mage.Sets/src/mage/sets/Innistrad.java
index 7b7ce3f254b..2cfdee4d32f 100644
--- a/Mage.Sets/src/mage/sets/Innistrad.java
+++ b/Mage.Sets/src/mage/sets/Innistrad.java
@@ -34,7 +34,7 @@ import mage.constants.SetType;
/**
* @author BetaSteward_at_googlemail.com
*/
-public class Innistrad extends ExpansionSet {
+public final class Innistrad extends ExpansionSet {
private static final Innistrad instance = new Innistrad();
diff --git a/Mage.Sets/src/mage/sets/Invasion.java b/Mage.Sets/src/mage/sets/Invasion.java
index 2f764f768a1..09f310c8321 100644
--- a/Mage.Sets/src/mage/sets/Invasion.java
+++ b/Mage.Sets/src/mage/sets/Invasion.java
@@ -1,389 +1,389 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class Invasion extends ExpansionSet {
-
- private static final Invasion instance = new Invasion();
-
- public static Invasion getInstance() {
- return instance;
- }
-
- private Invasion() {
- super("Invasion", "INV", ExpansionSet.buildDate(2000, 9, 2), SetType.EXPANSION);
- this.blockName = "Invasion";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Absorb", 226, Rarity.RARE, mage.cards.a.Absorb.class));
- cards.add(new SetCardInfo("Addle", 91, Rarity.UNCOMMON, mage.cards.a.Addle.class));
- cards.add(new SetCardInfo("Aether Rift", 227, Rarity.RARE, mage.cards.a.AetherRift.class));
- cards.add(new SetCardInfo("Aggressive Urge", 181, Rarity.COMMON, mage.cards.a.AggressiveUrge.class));
- cards.add(new SetCardInfo("Agonizing Demise", 92, Rarity.COMMON, mage.cards.a.AgonizingDemise.class));
- cards.add(new SetCardInfo("Alabaster Leech", 1, Rarity.RARE, mage.cards.a.AlabasterLeech.class));
- cards.add(new SetCardInfo("Alloy Golem", 297, Rarity.UNCOMMON, mage.cards.a.AlloyGolem.class));
- cards.add(new SetCardInfo("Ancient Kavu", 136, Rarity.COMMON, mage.cards.a.AncientKavu.class));
- cards.add(new SetCardInfo("Ancient Spring", 319, Rarity.COMMON, mage.cards.a.AncientSpring.class));
- cards.add(new SetCardInfo("Andradite Leech", 93, Rarity.RARE, mage.cards.a.AndraditeLeech.class));
- cards.add(new SetCardInfo("Angelic Shield", 228, Rarity.UNCOMMON, mage.cards.a.AngelicShield.class));
- cards.add(new SetCardInfo("Angel of Mercy", 2, Rarity.UNCOMMON, mage.cards.a.AngelOfMercy.class));
- cards.add(new SetCardInfo("Annihilate", 94, Rarity.UNCOMMON, mage.cards.a.Annihilate.class));
- cards.add(new SetCardInfo("Archaeological Dig", 320, Rarity.UNCOMMON, mage.cards.a.ArchaeologicalDig.class));
- cards.add(new SetCardInfo("Ardent Soldier", 3, Rarity.COMMON, mage.cards.a.ArdentSoldier.class));
- cards.add(new SetCardInfo("Armadillo Cloak", 229, Rarity.COMMON, mage.cards.a.ArmadilloCloak.class));
- cards.add(new SetCardInfo("Armored Guardian", 230, Rarity.RARE, mage.cards.a.ArmoredGuardian.class));
- cards.add(new SetCardInfo("Artifact Mutation", 231, Rarity.RARE, mage.cards.a.ArtifactMutation.class));
- cards.add(new SetCardInfo("Assault // Battery", 295, Rarity.UNCOMMON, mage.cards.a.AssaultBattery.class));
- cards.add(new SetCardInfo("Atalya, Samite Master", 4, Rarity.RARE, mage.cards.a.AtalyaSamiteMaster.class));
- cards.add(new SetCardInfo("Aura Mutation", 232, Rarity.RARE, mage.cards.a.AuraMutation.class));
- cards.add(new SetCardInfo("Aura Shards", 233, Rarity.UNCOMMON, mage.cards.a.AuraShards.class));
- cards.add(new SetCardInfo("Backlash", 234, Rarity.UNCOMMON, mage.cards.b.Backlash.class));
- cards.add(new SetCardInfo("Barrin's Spite", 235, Rarity.RARE, mage.cards.b.BarrinsSpite.class));
- cards.add(new SetCardInfo("Barrin's Unmaking", 46, Rarity.COMMON, mage.cards.b.BarrinsUnmaking.class));
- cards.add(new SetCardInfo("Benalish Emissary", 5, Rarity.UNCOMMON, mage.cards.b.BenalishEmissary.class));
- cards.add(new SetCardInfo("Benalish Heralds", 6, Rarity.UNCOMMON, mage.cards.b.BenalishHeralds.class));
- cards.add(new SetCardInfo("Benalish Lancer", 7, Rarity.COMMON, mage.cards.b.BenalishLancer.class));
- cards.add(new SetCardInfo("Benalish Trapper", 8, Rarity.COMMON, mage.cards.b.BenalishTrapper.class));
- cards.add(new SetCardInfo("Bind", 182, Rarity.RARE, mage.cards.b.Bind.class));
- cards.add(new SetCardInfo("Blazing Specter", 236, Rarity.RARE, mage.cards.b.BlazingSpecter.class));
- cards.add(new SetCardInfo("Blinding Light", 9, Rarity.UNCOMMON, mage.cards.b.BlindingLight.class));
- cards.add(new SetCardInfo("Blind Seer", 47, Rarity.RARE, mage.cards.b.BlindSeer.class));
- cards.add(new SetCardInfo("Bloodstone Cameo", 298, Rarity.UNCOMMON, mage.cards.b.BloodstoneCameo.class));
- cards.add(new SetCardInfo("Blurred Mongoose", 183, Rarity.RARE, mage.cards.b.BlurredMongoose.class));
- cards.add(new SetCardInfo("Bog Initiate", 95, Rarity.COMMON, mage.cards.b.BogInitiate.class));
- cards.add(new SetCardInfo("Breaking Wave", 48, Rarity.RARE, mage.cards.b.BreakingWave.class));
- cards.add(new SetCardInfo("Breath of Darigaaz", 138, Rarity.UNCOMMON, mage.cards.b.BreathOfDarigaaz.class));
- cards.add(new SetCardInfo("Callous Giant", 139, Rarity.RARE, mage.cards.c.CallousGiant.class));
- cards.add(new SetCardInfo("Canopy Surge", 184, Rarity.UNCOMMON, mage.cards.c.CanopySurge.class));
- cards.add(new SetCardInfo("Capashen Unicorn", 10, Rarity.COMMON, mage.cards.c.CapashenUnicorn.class));
- cards.add(new SetCardInfo("Captain Sisay", 237, Rarity.RARE, mage.cards.c.CaptainSisay.class));
- cards.add(new SetCardInfo("Cauldron Dance", 238, Rarity.UNCOMMON, mage.cards.c.CauldronDance.class));
- cards.add(new SetCardInfo("Chaotic Strike", 140, Rarity.UNCOMMON, mage.cards.c.ChaoticStrike.class));
- cards.add(new SetCardInfo("Charging Troll", 239, Rarity.UNCOMMON, mage.cards.c.ChargingTroll.class));
- cards.add(new SetCardInfo("Chromatic Sphere", 299, Rarity.UNCOMMON, mage.cards.c.ChromaticSphere.class));
- cards.add(new SetCardInfo("Cinder Shade", 240, Rarity.UNCOMMON, mage.cards.c.CinderShade.class));
- cards.add(new SetCardInfo("Coalition Victory", 241, Rarity.RARE, mage.cards.c.CoalitionVictory.class));
- cards.add(new SetCardInfo("Coastal Tower", 321, Rarity.UNCOMMON, mage.cards.c.CoastalTower.class));
- cards.add(new SetCardInfo("Collapsing Borders", 141, Rarity.RARE, mage.cards.c.CollapsingBorders.class));
- cards.add(new SetCardInfo("Collective Restraint", 49, Rarity.RARE, mage.cards.c.CollectiveRestraint.class));
- cards.add(new SetCardInfo("Cremate", 96, Rarity.UNCOMMON, mage.cards.c.Cremate.class));
- cards.add(new SetCardInfo("Crimson Acolyte", 11, Rarity.COMMON, mage.cards.c.CrimsonAcolyte.class));
- cards.add(new SetCardInfo("Crosis's Attendant", 300, Rarity.UNCOMMON, mage.cards.c.CrosissAttendant.class));
- cards.add(new SetCardInfo("Crosis, the Purger", 242, Rarity.RARE, mage.cards.c.CrosisThePurger.class));
- cards.add(new SetCardInfo("Crown of Flames", 142, Rarity.COMMON, mage.cards.c.CrownOfFlames.class));
- cards.add(new SetCardInfo("Crusading Knight", 12, Rarity.RARE, mage.cards.c.CrusadingKnight.class));
- cards.add(new SetCardInfo("Crypt Angel", 97, Rarity.RARE, mage.cards.c.CryptAngel.class));
- cards.add(new SetCardInfo("Cursed Flesh", 98, Rarity.COMMON, mage.cards.c.CursedFlesh.class));
- cards.add(new SetCardInfo("Darigaaz's Attendant", 301, Rarity.UNCOMMON, mage.cards.d.DarigaazsAttendant.class));
- cards.add(new SetCardInfo("Darigaaz, the Igniter", 243, Rarity.RARE, mage.cards.d.DarigaazTheIgniter.class));
- cards.add(new SetCardInfo("Defiling Tears", 99, Rarity.UNCOMMON, mage.cards.d.DefilingTears.class));
- cards.add(new SetCardInfo("Devouring Strossus", 101, Rarity.RARE, mage.cards.d.DevouringStrossus.class));
- cards.add(new SetCardInfo("Dismantling Blow", 14, Rarity.COMMON, mage.cards.d.DismantlingBlow.class));
- cards.add(new SetCardInfo("Disrupt", 51, Rarity.UNCOMMON, mage.cards.d.Disrupt.class));
- cards.add(new SetCardInfo("Distorting Wake", 52, Rarity.RARE, mage.cards.d.DistortingWake.class));
- cards.add(new SetCardInfo("Divine Presence", 15, Rarity.RARE, mage.cards.d.DivinePresence.class));
- cards.add(new SetCardInfo("Do or Die", 102, Rarity.RARE, mage.cards.d.DoOrDie.class));
- cards.add(new SetCardInfo("Drake-Skull Cameo", 302, Rarity.UNCOMMON, mage.cards.d.DrakeSkullCameo.class));
- cards.add(new SetCardInfo("Dream Thrush", 53, Rarity.COMMON, mage.cards.d.DreamThrush.class));
- cards.add(new SetCardInfo("Dredge", 103, Rarity.UNCOMMON, mage.cards.d.Dredge.class));
- cards.add(new SetCardInfo("Dromar's Attendant", 303, Rarity.UNCOMMON, mage.cards.d.DromarsAttendant.class));
- cards.add(new SetCardInfo("Dromar, the Banisher", 244, Rarity.RARE, mage.cards.d.DromarTheBanisher.class));
- cards.add(new SetCardInfo("Dueling Grounds", 245, Rarity.RARE, mage.cards.d.DuelingGrounds.class));
- cards.add(new SetCardInfo("Duskwalker", 104, Rarity.COMMON, mage.cards.d.Duskwalker.class));
- cards.add(new SetCardInfo("Elfhame Palace", 322, Rarity.UNCOMMON, mage.cards.e.ElfhamePalace.class));
- cards.add(new SetCardInfo("Elfhame Sanctuary", 185, Rarity.UNCOMMON, mage.cards.e.ElfhameSanctuary.class));
- cards.add(new SetCardInfo("Elvish Champion", 186, Rarity.RARE, mage.cards.e.ElvishChampion.class));
- cards.add(new SetCardInfo("Empress Galina", 54, Rarity.RARE, mage.cards.e.EmpressGalina.class));
- cards.add(new SetCardInfo("Exclude", 56, Rarity.COMMON, mage.cards.e.Exclude.class));
- cards.add(new SetCardInfo("Exotic Curse", 105, Rarity.COMMON, mage.cards.e.ExoticCurse.class));
- cards.add(new SetCardInfo("Explosive Growth", 187, Rarity.COMMON, mage.cards.e.ExplosiveGrowth.class));
- cards.add(new SetCardInfo("Fact or Fiction", 57, Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class));
- cards.add(new SetCardInfo("Faerie Squadron", 58, Rarity.COMMON, mage.cards.f.FaerieSquadron.class));
- cards.add(new SetCardInfo("Fertile Ground", 188, Rarity.COMMON, mage.cards.f.FertileGround.class));
- cards.add(new SetCardInfo("Firebrand Ranger", 143, Rarity.UNCOMMON, mage.cards.f.FirebrandRanger.class));
- cards.add(new SetCardInfo("Firescreamer", 106, Rarity.COMMON, mage.cards.f.Firescreamer.class));
- cards.add(new SetCardInfo("Fires of Yavimaya", 246, Rarity.UNCOMMON, mage.cards.f.FiresOfYavimaya.class));
- cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Frenzied Tilling", 247, Rarity.COMMON, mage.cards.f.FrenziedTilling.class));
- cards.add(new SetCardInfo("Galina's Knight", 248, Rarity.COMMON, mage.cards.g.GalinasKnight.class));
- cards.add(new SetCardInfo("Geothermal Crevice", 323, Rarity.COMMON, mage.cards.g.GeothermalCrevice.class));
- cards.add(new SetCardInfo("Ghitu Fire", 144, Rarity.RARE, mage.cards.g.GhituFire.class));
- cards.add(new SetCardInfo("Glimmering Angel", 17, Rarity.COMMON, mage.cards.g.GlimmeringAngel.class));
- cards.add(new SetCardInfo("Global Ruin", 18, Rarity.RARE, mage.cards.g.GlobalRuin.class));
- cards.add(new SetCardInfo("Goblin Spy", 145, Rarity.UNCOMMON, mage.cards.g.GoblinSpy.class));
- cards.add(new SetCardInfo("Goham Djinn", 107, Rarity.UNCOMMON, mage.cards.g.GohamDjinn.class));
- cards.add(new SetCardInfo("Halam Djinn", 146, Rarity.UNCOMMON, mage.cards.h.HalamDjinn.class));
- cards.add(new SetCardInfo("Hanna, Ship's Navigator", 249, Rarity.RARE, mage.cards.h.HannaShipsNavigator.class));
- cards.add(new SetCardInfo("Harrow", 189, Rarity.COMMON, mage.cards.h.Harrow.class));
- cards.add(new SetCardInfo("Harsh Judgment", 19, Rarity.RARE, mage.cards.h.HarshJudgment.class));
- cards.add(new SetCardInfo("Hate Weaver", 108, Rarity.UNCOMMON, mage.cards.h.HateWeaver.class));
- cards.add(new SetCardInfo("Heroes' Reunion", 250, Rarity.UNCOMMON, mage.cards.h.HeroesReunion.class));
- cards.add(new SetCardInfo("Holy Day", 20, Rarity.COMMON, mage.cards.h.HolyDay.class));
- cards.add(new SetCardInfo("Hooded Kavu", 147, Rarity.COMMON, mage.cards.h.HoodedKavu.class));
- cards.add(new SetCardInfo("Horned Cheetah", 251, Rarity.UNCOMMON, mage.cards.h.HornedCheetah.class));
- cards.add(new SetCardInfo("Hunting Kavu", 252, Rarity.UNCOMMON, mage.cards.h.HuntingKavu.class));
- cards.add(new SetCardInfo("Hypnotic Cloud", 109, Rarity.COMMON, mage.cards.h.HypnoticCloud.class));
- cards.add(new SetCardInfo("Irrigation Ditch", 324, Rarity.COMMON, mage.cards.i.IrrigationDitch.class));
- cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Jade Leech", 190, Rarity.RARE, mage.cards.j.JadeLeech.class));
- cards.add(new SetCardInfo("Juntu Stakes", 304, Rarity.RARE, mage.cards.j.JuntuStakes.class));
- cards.add(new SetCardInfo("Kangee, Aerie Keeper", 253, Rarity.RARE, mage.cards.k.KangeeAerieKeeper.class));
- cards.add(new SetCardInfo("Kavu Aggressor", 148, Rarity.COMMON, mage.cards.k.KavuAggressor.class));
- cards.add(new SetCardInfo("Kavu Chameleon", 191, Rarity.UNCOMMON, mage.cards.k.KavuChameleon.class));
- cards.add(new SetCardInfo("Kavu Climber", 192, Rarity.COMMON, mage.cards.k.KavuClimber.class));
- cards.add(new SetCardInfo("Kavu Lair", 193, Rarity.RARE, mage.cards.k.KavuLair.class));
- cards.add(new SetCardInfo("Kavu Monarch", 149, Rarity.RARE, mage.cards.k.KavuMonarch.class));
- cards.add(new SetCardInfo("Kavu Runner", 150, Rarity.UNCOMMON, mage.cards.k.KavuRunner.class));
- cards.add(new SetCardInfo("Kavu Scout", 151, Rarity.COMMON, mage.cards.k.KavuScout.class));
- cards.add(new SetCardInfo("Kavu Titan", 194, Rarity.RARE, mage.cards.k.KavuTitan.class));
- cards.add(new SetCardInfo("Keldon Necropolis", 325, Rarity.RARE, mage.cards.k.KeldonNecropolis.class));
- cards.add(new SetCardInfo("Liberate", 21, Rarity.UNCOMMON, mage.cards.l.Liberate.class));
- cards.add(new SetCardInfo("Lightning Dart", 152, Rarity.UNCOMMON, mage.cards.l.LightningDart.class));
- cards.add(new SetCardInfo("Llanowar Cavalry", 195, Rarity.COMMON, mage.cards.l.LlanowarCavalry.class));
- cards.add(new SetCardInfo("Llanowar Elite", 196, Rarity.COMMON, mage.cards.l.LlanowarElite.class));
- cards.add(new SetCardInfo("Llanowar Knight", 254, Rarity.COMMON, mage.cards.l.LlanowarKnight.class));
- cards.add(new SetCardInfo("Llanowar Vanguard", 197, Rarity.COMMON, mage.cards.l.LlanowarVanguard.class));
- cards.add(new SetCardInfo("Lobotomy", 255, Rarity.UNCOMMON, mage.cards.l.Lobotomy.class));
- cards.add(new SetCardInfo("Lotus Guardian", 305, Rarity.RARE, mage.cards.l.LotusGuardian.class));
- cards.add(new SetCardInfo("Mana Maze", 59, Rarity.RARE, mage.cards.m.ManaMaze.class));
- cards.add(new SetCardInfo("Maniacal Rage", 155, Rarity.COMMON, mage.cards.m.ManiacalRage.class));
- cards.add(new SetCardInfo("Manipulate Fate", 60, Rarity.UNCOMMON, mage.cards.m.ManipulateFate.class));
- cards.add(new SetCardInfo("Marauding Knight", 110, Rarity.RARE, mage.cards.m.MaraudingKnight.class));
- cards.add(new SetCardInfo("Metathran Transport", 62, Rarity.UNCOMMON, mage.cards.m.MetathranTransport.class));
- cards.add(new SetCardInfo("Metathran Zombie", 63, Rarity.COMMON, mage.cards.m.MetathranZombie.class));
- cards.add(new SetCardInfo("Meteor Storm", 256, Rarity.RARE, mage.cards.m.MeteorStorm.class));
- cards.add(new SetCardInfo("Might Weaver", 198, Rarity.UNCOMMON, mage.cards.m.MightWeaver.class));
- cards.add(new SetCardInfo("Molimo, Maro-Sorcerer", 199, Rarity.RARE, mage.cards.m.MolimoMaroSorcerer.class));
- cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mourning", 111, Rarity.COMMON, mage.cards.m.Mourning.class));
- cards.add(new SetCardInfo("Nightscape Apprentice", 112, Rarity.COMMON, mage.cards.n.NightscapeApprentice.class));
- cards.add(new SetCardInfo("Nightscape Master", 113, Rarity.RARE, mage.cards.n.NightscapeMaster.class));
- cards.add(new SetCardInfo("Noble Panther", 257, Rarity.RARE, mage.cards.n.NoblePanther.class));
- cards.add(new SetCardInfo("Nomadic Elf", 200, Rarity.COMMON, mage.cards.n.NomadicElf.class));
- cards.add(new SetCardInfo("Obliterate", 156, Rarity.RARE, mage.cards.o.Obliterate.class));
- cards.add(new SetCardInfo("Obsidian Acolyte", 22, Rarity.COMMON, mage.cards.o.ObsidianAcolyte.class));
- cards.add(new SetCardInfo("Opt", 64, Rarity.COMMON, mage.cards.o.Opt.class));
- cards.add(new SetCardInfo("Ordered Migration", 258, Rarity.UNCOMMON, mage.cards.o.OrderedMigration.class));
- cards.add(new SetCardInfo("Orim's Touch", 23, Rarity.COMMON, mage.cards.o.OrimsTouch.class));
- cards.add(new SetCardInfo("Overabundance", 259, Rarity.RARE, mage.cards.o.Overabundance.class));
- cards.add(new SetCardInfo("Overload", 157, Rarity.COMMON, mage.cards.o.Overload.class));
- cards.add(new SetCardInfo("Pain // Suffering", 294, Rarity.UNCOMMON, mage.cards.p.PainSuffering.class));
- cards.add(new SetCardInfo("Phantasmal Terrain", 65, Rarity.COMMON, mage.cards.p.PhantasmalTerrain.class));
- cards.add(new SetCardInfo("Phyrexian Altar", 306, Rarity.RARE, mage.cards.p.PhyrexianAltar.class));
- cards.add(new SetCardInfo("Phyrexian Battleflies", 114, Rarity.COMMON, mage.cards.p.PhyrexianBattleflies.class));
- cards.add(new SetCardInfo("Phyrexian Delver", 115, Rarity.RARE, mage.cards.p.PhyrexianDelver.class));
- cards.add(new SetCardInfo("Phyrexian Infiltrator", 116, Rarity.RARE, mage.cards.p.PhyrexianInfiltrator.class));
- cards.add(new SetCardInfo("Phyrexian Lens", 307, Rarity.RARE, mage.cards.p.PhyrexianLens.class));
- cards.add(new SetCardInfo("Phyrexian Reaper", 117, Rarity.COMMON, mage.cards.p.PhyrexianReaper.class));
- cards.add(new SetCardInfo("Phyrexian Slayer", 118, Rarity.COMMON, mage.cards.p.PhyrexianSlayer.class));
- cards.add(new SetCardInfo("Pincer Spider", 201, Rarity.COMMON, mage.cards.p.PincerSpider.class));
- cards.add(new SetCardInfo("Plague Spitter", 119, Rarity.UNCOMMON, mage.cards.p.PlagueSpitter.class));
- cards.add(new SetCardInfo("Plague Spores", 260, Rarity.COMMON, mage.cards.p.PlagueSpores.class));
- cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Planar Portal", 308, Rarity.RARE, mage.cards.p.PlanarPortal.class));
- cards.add(new SetCardInfo("Pouncing Kavu", 158, Rarity.COMMON, mage.cards.p.PouncingKavu.class));
- cards.add(new SetCardInfo("Power Armor", 309, Rarity.UNCOMMON, mage.cards.p.PowerArmor.class));
- cards.add(new SetCardInfo("Prison Barricade", 25, Rarity.COMMON, mage.cards.p.PrisonBarricade.class));
- cards.add(new SetCardInfo("Probe", 66, Rarity.COMMON, mage.cards.p.Probe.class));
- cards.add(new SetCardInfo("Prohibit", 67, Rarity.COMMON, mage.cards.p.Prohibit.class));
- cards.add(new SetCardInfo("Protective Sphere", 26, Rarity.COMMON, mage.cards.p.ProtectiveSphere.class));
- cards.add(new SetCardInfo("Psychic Battle", 68, Rarity.RARE, mage.cards.p.PsychicBattle.class));
- cards.add(new SetCardInfo("Pure Reflection", 27, Rarity.RARE, mage.cards.p.PureReflection.class));
- cards.add(new SetCardInfo("Pyre Zombie", 261, Rarity.RARE, mage.cards.p.PyreZombie.class));
- cards.add(new SetCardInfo("Quirion Elves", 203, Rarity.COMMON, mage.cards.q.QuirionElves.class));
- cards.add(new SetCardInfo("Quirion Sentinel", 204, Rarity.COMMON, mage.cards.q.QuirionSentinel.class));
- cards.add(new SetCardInfo("Quirion Trailblazer", 205, Rarity.COMMON, mage.cards.q.QuirionTrailblazer.class));
- cards.add(new SetCardInfo("Rage Weaver", 159, Rarity.UNCOMMON, mage.cards.r.RageWeaver.class));
- cards.add(new SetCardInfo("Raging Kavu", 262, Rarity.RARE, mage.cards.r.RagingKavu.class));
- cards.add(new SetCardInfo("Rainbow Crow", 69, Rarity.UNCOMMON, mage.cards.r.RainbowCrow.class));
- cards.add(new SetCardInfo("Rampant Elephant", 28, Rarity.COMMON, mage.cards.r.RampantElephant.class));
- cards.add(new SetCardInfo("Ravenous Rats", 120, Rarity.COMMON, mage.cards.r.RavenousRats.class));
- cards.add(new SetCardInfo("Razorfoot Griffin", 29, Rarity.COMMON, mage.cards.r.RazorfootGriffin.class));
- cards.add(new SetCardInfo("Reckless Assault", 263, Rarity.RARE, mage.cards.r.RecklessAssault.class));
- cards.add(new SetCardInfo("Reckless Spite", 121, Rarity.UNCOMMON, mage.cards.r.RecklessSpite.class));
- cards.add(new SetCardInfo("Recoil", 264, Rarity.COMMON, mage.cards.r.Recoil.class));
- cards.add(new SetCardInfo("Recover", 122, Rarity.COMMON, mage.cards.r.Recover.class));
- cards.add(new SetCardInfo("Repulse", 70, Rarity.COMMON, mage.cards.r.Repulse.class));
- cards.add(new SetCardInfo("Restock", 206, Rarity.RARE, mage.cards.r.Restock.class));
- cards.add(new SetCardInfo("Restrain", 30, Rarity.COMMON, mage.cards.r.Restrain.class));
- cards.add(new SetCardInfo("Reviving Dose", 31, Rarity.COMMON, mage.cards.r.RevivingDose.class));
- cards.add(new SetCardInfo("Reviving Vapors", 265, Rarity.UNCOMMON, mage.cards.r.RevivingVapors.class));
- cards.add(new SetCardInfo("Rewards of Diversity", 32, Rarity.UNCOMMON, mage.cards.r.RewardsOfDiversity.class));
- cards.add(new SetCardInfo("Reya Dawnbringer", 33, Rarity.RARE, mage.cards.r.ReyaDawnbringer.class));
- cards.add(new SetCardInfo("Riptide Crab", 266, Rarity.UNCOMMON, mage.cards.r.RiptideCrab.class));
- cards.add(new SetCardInfo("Rith's Attendant", 310, Rarity.UNCOMMON, mage.cards.r.RithsAttendant.class));
- cards.add(new SetCardInfo("Rith, the Awakener", 267, Rarity.RARE, mage.cards.r.RithTheAwakener.class));
- cards.add(new SetCardInfo("Rogue Kavu", 160, Rarity.COMMON, mage.cards.r.RogueKavu.class));
- cards.add(new SetCardInfo("Rooting Kavu", 207, Rarity.UNCOMMON, mage.cards.r.RootingKavu.class));
- cards.add(new SetCardInfo("Rout", 34, Rarity.RARE, mage.cards.r.Rout.class));
- cards.add(new SetCardInfo("Ruby Leech", 161, Rarity.RARE, mage.cards.r.RubyLeech.class));
- cards.add(new SetCardInfo("Ruham Djinn", 35, Rarity.UNCOMMON, mage.cards.r.RuhamDjinn.class));
- cards.add(new SetCardInfo("Sabertooth Nishoba", 268, Rarity.RARE, mage.cards.s.SabertoothNishoba.class));
- cards.add(new SetCardInfo("Salt Marsh", 326, Rarity.UNCOMMON, mage.cards.s.SaltMarsh.class));
- cards.add(new SetCardInfo("Samite Archer", 269, Rarity.UNCOMMON, mage.cards.s.SamiteArcher.class));
- cards.add(new SetCardInfo("Sapphire Leech", 71, Rarity.RARE, mage.cards.s.SapphireLeech.class));
- cards.add(new SetCardInfo("Saproling Symbiosis", 209, Rarity.RARE, mage.cards.s.SaprolingSymbiosis.class));
- cards.add(new SetCardInfo("Savage Offensive", 162, Rarity.COMMON, mage.cards.s.SavageOffensive.class));
- cards.add(new SetCardInfo("Scarred Puma", 163, Rarity.COMMON, mage.cards.s.ScarredPuma.class));
- cards.add(new SetCardInfo("Scavenged Weaponry", 123, Rarity.COMMON, mage.cards.s.ScavengedWeaponry.class));
- cards.add(new SetCardInfo("Scorching Lava", 164, Rarity.COMMON, mage.cards.s.ScorchingLava.class));
- cards.add(new SetCardInfo("Scouting Trek", 210, Rarity.UNCOMMON, mage.cards.s.ScoutingTrek.class));
- cards.add(new SetCardInfo("Seashell Cameo", 311, Rarity.UNCOMMON, mage.cards.s.SeashellCameo.class));
- cards.add(new SetCardInfo("Seer's Vision", 270, Rarity.UNCOMMON, mage.cards.s.SeersVision.class));
- cards.add(new SetCardInfo("Serpentine Kavu", 211, Rarity.COMMON, mage.cards.s.SerpentineKavu.class));
- cards.add(new SetCardInfo("Shackles", 37, Rarity.COMMON, mage.cards.s.Shackles.class));
- cards.add(new SetCardInfo("Shimmering Wings", 72, Rarity.COMMON, mage.cards.s.ShimmeringWings.class));
- cards.add(new SetCardInfo("Shivan Emissary", 166, Rarity.UNCOMMON, mage.cards.s.ShivanEmissary.class));
- cards.add(new SetCardInfo("Shivan Harvest", 167, Rarity.UNCOMMON, mage.cards.s.ShivanHarvest.class));
- cards.add(new SetCardInfo("Shivan Oasis", 327, Rarity.UNCOMMON, mage.cards.s.ShivanOasis.class));
- cards.add(new SetCardInfo("Shivan Zombie", 271, Rarity.COMMON, mage.cards.s.ShivanZombie.class));
- cards.add(new SetCardInfo("Shoreline Raider", 73, Rarity.COMMON, mage.cards.s.ShorelineRaider.class));
- cards.add(new SetCardInfo("Simoon", 272, Rarity.UNCOMMON, mage.cards.s.Simoon.class));
- cards.add(new SetCardInfo("Skittish Kavu", 168, Rarity.UNCOMMON, mage.cards.s.SkittishKavu.class));
- cards.add(new SetCardInfo("Skizzik", 169, Rarity.RARE, mage.cards.s.Skizzik.class));
- cards.add(new SetCardInfo("Sky Weaver", 74, Rarity.UNCOMMON, mage.cards.s.SkyWeaver.class));
- cards.add(new SetCardInfo("Sleeper's Robe", 273, Rarity.UNCOMMON, mage.cards.s.SleepersRobe.class));
- cards.add(new SetCardInfo("Slimy Kavu", 170, Rarity.COMMON, mage.cards.s.SlimyKavu.class));
- cards.add(new SetCardInfo("Slinking Serpent", 274, Rarity.UNCOMMON, mage.cards.s.SlinkingSerpent.class));
- cards.add(new SetCardInfo("Smoldering Tar", 275, Rarity.UNCOMMON, mage.cards.s.SmolderingTar.class));
- cards.add(new SetCardInfo("Soul Burn", 124, Rarity.COMMON, mage.cards.s.SoulBurn.class));
- cards.add(new SetCardInfo("Sparring Golem", 312, Rarity.UNCOMMON, mage.cards.s.SparringGolem.class));
- cards.add(new SetCardInfo("Spinal Embrace", 276, Rarity.RARE, mage.cards.s.SpinalEmbrace.class));
- cards.add(new SetCardInfo("Spirit of Resistance", 38, Rarity.RARE, mage.cards.s.SpiritOfResistance.class));
- cards.add(new SetCardInfo("Spirit Weaver", 39, Rarity.UNCOMMON, mage.cards.s.SpiritWeaver.class));
- cards.add(new SetCardInfo("Spite // Malice", 293, Rarity.UNCOMMON, mage.cards.s.SpiteMalice.class));
- cards.add(new SetCardInfo("Spreading Plague", 125, Rarity.RARE, mage.cards.s.SpreadingPlague.class));
- cards.add(new SetCardInfo("Stalking Assassin", 277, Rarity.RARE, mage.cards.s.StalkingAssassin.class));
- cards.add(new SetCardInfo("Stand // Deliver", 292, Rarity.UNCOMMON, mage.cards.s.StandDeliver.class));
- cards.add(new SetCardInfo("Sterling Grove", 278, Rarity.UNCOMMON, mage.cards.s.SterlingGrove.class));
- cards.add(new SetCardInfo("Stormscape Apprentice", 75, Rarity.COMMON, mage.cards.s.StormscapeApprentice.class));
- cards.add(new SetCardInfo("Stormscape Master", 76, Rarity.RARE, mage.cards.s.StormscapeMaster.class));
- cards.add(new SetCardInfo("Strength of Unity", 40, Rarity.COMMON, mage.cards.s.StrengthOfUnity.class));
- cards.add(new SetCardInfo("Stun", 172, Rarity.COMMON, mage.cards.s.Stun.class));
- cards.add(new SetCardInfo("Sulam Djinn", 212, Rarity.UNCOMMON, mage.cards.s.SulamDjinn.class));
- cards.add(new SetCardInfo("Sulfur Vent", 328, Rarity.COMMON, mage.cards.s.SulfurVent.class));
- cards.add(new SetCardInfo("Sunscape Apprentice", 41, Rarity.COMMON, mage.cards.s.SunscapeApprentice.class));
- cards.add(new SetCardInfo("Sunscape Master", 42, Rarity.RARE, mage.cards.s.SunscapeMaster.class));
- cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Sway of Illusion", 77, Rarity.UNCOMMON, mage.cards.s.SwayOfIllusion.class));
- cards.add(new SetCardInfo("Tainted Well", 126, Rarity.COMMON, mage.cards.t.TaintedWell.class));
- cards.add(new SetCardInfo("Tangle", 213, Rarity.UNCOMMON, mage.cards.t.Tangle.class));
- cards.add(new SetCardInfo("Tectonic Instability", 173, Rarity.RARE, mage.cards.t.TectonicInstability.class));
- cards.add(new SetCardInfo("Teferi's Care", 43, Rarity.UNCOMMON, mage.cards.t.TeferisCare.class));
- cards.add(new SetCardInfo("Teferi's Moat", 279, Rarity.RARE, mage.cards.t.TeferisMoat.class));
- cards.add(new SetCardInfo("Teferi's Response", 78, Rarity.RARE, mage.cards.t.TeferisResponse.class));
- cards.add(new SetCardInfo("Tek", 313, Rarity.RARE, mage.cards.t.Tek.class));
- cards.add(new SetCardInfo("Temporal Distortion", 79, Rarity.RARE, mage.cards.t.TemporalDistortion.class));
- cards.add(new SetCardInfo("Thicket Elemental", 214, Rarity.RARE, mage.cards.t.ThicketElemental.class));
- cards.add(new SetCardInfo("Thornscape Apprentice", 215, Rarity.COMMON, mage.cards.t.ThornscapeApprentice.class));
- cards.add(new SetCardInfo("Thornscape Master", 216, Rarity.RARE, mage.cards.t.ThornscapeMaster.class));
- cards.add(new SetCardInfo("Thunderscape Apprentice", 174, Rarity.COMMON, mage.cards.t.ThunderscapeApprentice.class));
- cards.add(new SetCardInfo("Thunderscape Master", 175, Rarity.RARE, mage.cards.t.ThunderscapeMaster.class));
- cards.add(new SetCardInfo("Tidal Visionary", 80, Rarity.COMMON, mage.cards.t.TidalVisionary.class));
- cards.add(new SetCardInfo("Tigereye Cameo", 314, Rarity.UNCOMMON, mage.cards.t.TigereyeCameo.class));
- cards.add(new SetCardInfo("Tinder Farm", 329, Rarity.COMMON, mage.cards.t.TinderFarm.class));
- cards.add(new SetCardInfo("Tolarian Emissary", 81, Rarity.UNCOMMON, mage.cards.t.TolarianEmissary.class));
- cards.add(new SetCardInfo("Tower Drake", 82, Rarity.COMMON, mage.cards.t.TowerDrake.class));
- cards.add(new SetCardInfo("Tranquility", 217, Rarity.COMMON, mage.cards.t.Tranquility.class));
- cards.add(new SetCardInfo("Traveler's Cloak", 83, Rarity.COMMON, mage.cards.t.TravelersCloak.class));
- cards.add(new SetCardInfo("Treefolk Healer", 218, Rarity.UNCOMMON, mage.cards.t.TreefolkHealer.class));
- cards.add(new SetCardInfo("Trench Wurm", 127, Rarity.UNCOMMON, mage.cards.t.TrenchWurm.class));
- cards.add(new SetCardInfo("Treva's Attendant", 315, Rarity.UNCOMMON, mage.cards.t.TrevasAttendant.class));
- cards.add(new SetCardInfo("Treva, the Renewer", 280, Rarity.RARE, mage.cards.t.TrevaTheRenewer.class));
- cards.add(new SetCardInfo("Tribal Flames", 176, Rarity.COMMON, mage.cards.t.TribalFlames.class));
- cards.add(new SetCardInfo("Troll-Horn Cameo", 316, Rarity.UNCOMMON, mage.cards.t.TrollHornCameo.class));
- cards.add(new SetCardInfo("Tsabo's Assassin", 128, Rarity.RARE, mage.cards.t.TsabosAssassin.class));
- cards.add(new SetCardInfo("Tsabo's Decree", 129, Rarity.RARE, mage.cards.t.TsabosDecree.class));
- cards.add(new SetCardInfo("Tsabo's Web", 317, Rarity.RARE, mage.cards.t.TsabosWeb.class));
- cards.add(new SetCardInfo("Tsabo Tavoc", 281, Rarity.RARE, mage.cards.t.TsaboTavoc.class));
- cards.add(new SetCardInfo("Turf Wound", 177, Rarity.COMMON, mage.cards.t.TurfWound.class));
- cards.add(new SetCardInfo("Twilight's Call", 130, Rarity.RARE, mage.cards.t.TwilightsCall.class));
- cards.add(new SetCardInfo("Undermine", 282, Rarity.RARE, mage.cards.u.Undermine.class));
- cards.add(new SetCardInfo("Urborg Drake", 283, Rarity.UNCOMMON, mage.cards.u.UrborgDrake.class));
- cards.add(new SetCardInfo("Urborg Emissary", 131, Rarity.UNCOMMON, mage.cards.u.UrborgEmissary.class));
- cards.add(new SetCardInfo("Urborg Phantom", 132, Rarity.COMMON, mage.cards.u.UrborgPhantom.class));
- cards.add(new SetCardInfo("Urborg Shambler", 133, Rarity.UNCOMMON, mage.cards.u.UrborgShambler.class));
- cards.add(new SetCardInfo("Urborg Skeleton", 134, Rarity.COMMON, mage.cards.u.UrborgSkeleton.class));
- cards.add(new SetCardInfo("Urborg Volcano", 330, Rarity.UNCOMMON, mage.cards.u.UrborgVolcano.class));
- cards.add(new SetCardInfo("Urza's Filter", 318, Rarity.RARE, mage.cards.u.UrzasFilter.class));
- cards.add(new SetCardInfo("Urza's Rage", 178, Rarity.RARE, mage.cards.u.UrzasRage.class));
- cards.add(new SetCardInfo("Utopia Tree", 219, Rarity.RARE, mage.cards.u.UtopiaTree.class));
- cards.add(new SetCardInfo("Verdeloth the Ancient", 220, Rarity.RARE, mage.cards.v.VerdelothTheAncient.class));
- cards.add(new SetCardInfo("Verduran Emissary", 221, Rarity.UNCOMMON, mage.cards.v.VerduranEmissary.class));
- cards.add(new SetCardInfo("Viashino Grappler", 179, Rarity.COMMON, mage.cards.v.ViashinoGrappler.class));
- cards.add(new SetCardInfo("Vicious Kavu", 284, Rarity.UNCOMMON, mage.cards.v.ViciousKavu.class));
- cards.add(new SetCardInfo("Vile Consumption", 285, Rarity.RARE, mage.cards.v.VileConsumption.class));
- cards.add(new SetCardInfo("Vodalian Hypnotist", 84, Rarity.UNCOMMON, mage.cards.v.VodalianHypnotist.class));
- cards.add(new SetCardInfo("Vodalian Merchant", 85, Rarity.COMMON, mage.cards.v.VodalianMerchant.class));
- cards.add(new SetCardInfo("Vodalian Serpent", 86, Rarity.COMMON, mage.cards.v.VodalianSerpent.class));
- cards.add(new SetCardInfo("Vodalian Zombie", 286, Rarity.COMMON, mage.cards.v.VodalianZombie.class));
- cards.add(new SetCardInfo("Void", 287, Rarity.RARE, mage.cards.v.Void.class));
- cards.add(new SetCardInfo("Voracious Cobra", 288, Rarity.UNCOMMON, mage.cards.v.VoraciousCobra.class));
- cards.add(new SetCardInfo("Wallop", 223, Rarity.UNCOMMON, mage.cards.w.Wallop.class));
- cards.add(new SetCardInfo("Wandering Stream", 224, Rarity.COMMON, mage.cards.w.WanderingStream.class));
- cards.add(new SetCardInfo("Wash Out", 87, Rarity.UNCOMMON, mage.cards.w.WashOut.class));
- cards.add(new SetCardInfo("Wax // Wane", 296, Rarity.UNCOMMON, mage.cards.w.WaxWane.class));
- cards.add(new SetCardInfo("Wayfaring Giant", 44, Rarity.UNCOMMON, mage.cards.w.WayfaringGiant.class));
- cards.add(new SetCardInfo("Whip Silk", 225, Rarity.COMMON, mage.cards.w.WhipSilk.class));
- cards.add(new SetCardInfo("Wings of Hope", 289, Rarity.COMMON, mage.cards.w.WingsOfHope.class));
- cards.add(new SetCardInfo("Winnow", 45, Rarity.RARE, mage.cards.w.Winnow.class));
- cards.add(new SetCardInfo("Worldly Counsel", 89, Rarity.COMMON, mage.cards.w.WorldlyCounsel.class));
- cards.add(new SetCardInfo("Yavimaya Barbarian", 290, Rarity.COMMON, mage.cards.y.YavimayaBarbarian.class));
- cards.add(new SetCardInfo("Yavimaya Kavu", 291, Rarity.UNCOMMON, mage.cards.y.YavimayaKavu.class));
- cards.add(new SetCardInfo("Yawgmoth's Agenda", 135, Rarity.RARE, mage.cards.y.YawgmothsAgenda.class));
- cards.add(new SetCardInfo("Zanam Djinn", 90, Rarity.UNCOMMON, mage.cards.z.ZanamDjinn.class));
- cards.add(new SetCardInfo("Zap", 180, Rarity.COMMON, mage.cards.z.Zap.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Invasion extends ExpansionSet {
+
+ private static final Invasion instance = new Invasion();
+
+ public static Invasion getInstance() {
+ return instance;
+ }
+
+ private Invasion() {
+ super("Invasion", "INV", ExpansionSet.buildDate(2000, 9, 2), SetType.EXPANSION);
+ this.blockName = "Invasion";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Absorb", 226, Rarity.RARE, mage.cards.a.Absorb.class));
+ cards.add(new SetCardInfo("Addle", 91, Rarity.UNCOMMON, mage.cards.a.Addle.class));
+ cards.add(new SetCardInfo("Aether Rift", 227, Rarity.RARE, mage.cards.a.AetherRift.class));
+ cards.add(new SetCardInfo("Aggressive Urge", 181, Rarity.COMMON, mage.cards.a.AggressiveUrge.class));
+ cards.add(new SetCardInfo("Agonizing Demise", 92, Rarity.COMMON, mage.cards.a.AgonizingDemise.class));
+ cards.add(new SetCardInfo("Alabaster Leech", 1, Rarity.RARE, mage.cards.a.AlabasterLeech.class));
+ cards.add(new SetCardInfo("Alloy Golem", 297, Rarity.UNCOMMON, mage.cards.a.AlloyGolem.class));
+ cards.add(new SetCardInfo("Ancient Kavu", 136, Rarity.COMMON, mage.cards.a.AncientKavu.class));
+ cards.add(new SetCardInfo("Ancient Spring", 319, Rarity.COMMON, mage.cards.a.AncientSpring.class));
+ cards.add(new SetCardInfo("Andradite Leech", 93, Rarity.RARE, mage.cards.a.AndraditeLeech.class));
+ cards.add(new SetCardInfo("Angelic Shield", 228, Rarity.UNCOMMON, mage.cards.a.AngelicShield.class));
+ cards.add(new SetCardInfo("Angel of Mercy", 2, Rarity.UNCOMMON, mage.cards.a.AngelOfMercy.class));
+ cards.add(new SetCardInfo("Annihilate", 94, Rarity.UNCOMMON, mage.cards.a.Annihilate.class));
+ cards.add(new SetCardInfo("Archaeological Dig", 320, Rarity.UNCOMMON, mage.cards.a.ArchaeologicalDig.class));
+ cards.add(new SetCardInfo("Ardent Soldier", 3, Rarity.COMMON, mage.cards.a.ArdentSoldier.class));
+ cards.add(new SetCardInfo("Armadillo Cloak", 229, Rarity.COMMON, mage.cards.a.ArmadilloCloak.class));
+ cards.add(new SetCardInfo("Armored Guardian", 230, Rarity.RARE, mage.cards.a.ArmoredGuardian.class));
+ cards.add(new SetCardInfo("Artifact Mutation", 231, Rarity.RARE, mage.cards.a.ArtifactMutation.class));
+ cards.add(new SetCardInfo("Assault // Battery", 295, Rarity.UNCOMMON, mage.cards.a.AssaultBattery.class));
+ cards.add(new SetCardInfo("Atalya, Samite Master", 4, Rarity.RARE, mage.cards.a.AtalyaSamiteMaster.class));
+ cards.add(new SetCardInfo("Aura Mutation", 232, Rarity.RARE, mage.cards.a.AuraMutation.class));
+ cards.add(new SetCardInfo("Aura Shards", 233, Rarity.UNCOMMON, mage.cards.a.AuraShards.class));
+ cards.add(new SetCardInfo("Backlash", 234, Rarity.UNCOMMON, mage.cards.b.Backlash.class));
+ cards.add(new SetCardInfo("Barrin's Spite", 235, Rarity.RARE, mage.cards.b.BarrinsSpite.class));
+ cards.add(new SetCardInfo("Barrin's Unmaking", 46, Rarity.COMMON, mage.cards.b.BarrinsUnmaking.class));
+ cards.add(new SetCardInfo("Benalish Emissary", 5, Rarity.UNCOMMON, mage.cards.b.BenalishEmissary.class));
+ cards.add(new SetCardInfo("Benalish Heralds", 6, Rarity.UNCOMMON, mage.cards.b.BenalishHeralds.class));
+ cards.add(new SetCardInfo("Benalish Lancer", 7, Rarity.COMMON, mage.cards.b.BenalishLancer.class));
+ cards.add(new SetCardInfo("Benalish Trapper", 8, Rarity.COMMON, mage.cards.b.BenalishTrapper.class));
+ cards.add(new SetCardInfo("Bind", 182, Rarity.RARE, mage.cards.b.Bind.class));
+ cards.add(new SetCardInfo("Blazing Specter", 236, Rarity.RARE, mage.cards.b.BlazingSpecter.class));
+ cards.add(new SetCardInfo("Blinding Light", 9, Rarity.UNCOMMON, mage.cards.b.BlindingLight.class));
+ cards.add(new SetCardInfo("Blind Seer", 47, Rarity.RARE, mage.cards.b.BlindSeer.class));
+ cards.add(new SetCardInfo("Bloodstone Cameo", 298, Rarity.UNCOMMON, mage.cards.b.BloodstoneCameo.class));
+ cards.add(new SetCardInfo("Blurred Mongoose", 183, Rarity.RARE, mage.cards.b.BlurredMongoose.class));
+ cards.add(new SetCardInfo("Bog Initiate", 95, Rarity.COMMON, mage.cards.b.BogInitiate.class));
+ cards.add(new SetCardInfo("Breaking Wave", 48, Rarity.RARE, mage.cards.b.BreakingWave.class));
+ cards.add(new SetCardInfo("Breath of Darigaaz", 138, Rarity.UNCOMMON, mage.cards.b.BreathOfDarigaaz.class));
+ cards.add(new SetCardInfo("Callous Giant", 139, Rarity.RARE, mage.cards.c.CallousGiant.class));
+ cards.add(new SetCardInfo("Canopy Surge", 184, Rarity.UNCOMMON, mage.cards.c.CanopySurge.class));
+ cards.add(new SetCardInfo("Capashen Unicorn", 10, Rarity.COMMON, mage.cards.c.CapashenUnicorn.class));
+ cards.add(new SetCardInfo("Captain Sisay", 237, Rarity.RARE, mage.cards.c.CaptainSisay.class));
+ cards.add(new SetCardInfo("Cauldron Dance", 238, Rarity.UNCOMMON, mage.cards.c.CauldronDance.class));
+ cards.add(new SetCardInfo("Chaotic Strike", 140, Rarity.UNCOMMON, mage.cards.c.ChaoticStrike.class));
+ cards.add(new SetCardInfo("Charging Troll", 239, Rarity.UNCOMMON, mage.cards.c.ChargingTroll.class));
+ cards.add(new SetCardInfo("Chromatic Sphere", 299, Rarity.UNCOMMON, mage.cards.c.ChromaticSphere.class));
+ cards.add(new SetCardInfo("Cinder Shade", 240, Rarity.UNCOMMON, mage.cards.c.CinderShade.class));
+ cards.add(new SetCardInfo("Coalition Victory", 241, Rarity.RARE, mage.cards.c.CoalitionVictory.class));
+ cards.add(new SetCardInfo("Coastal Tower", 321, Rarity.UNCOMMON, mage.cards.c.CoastalTower.class));
+ cards.add(new SetCardInfo("Collapsing Borders", 141, Rarity.RARE, mage.cards.c.CollapsingBorders.class));
+ cards.add(new SetCardInfo("Collective Restraint", 49, Rarity.RARE, mage.cards.c.CollectiveRestraint.class));
+ cards.add(new SetCardInfo("Cremate", 96, Rarity.UNCOMMON, mage.cards.c.Cremate.class));
+ cards.add(new SetCardInfo("Crimson Acolyte", 11, Rarity.COMMON, mage.cards.c.CrimsonAcolyte.class));
+ cards.add(new SetCardInfo("Crosis's Attendant", 300, Rarity.UNCOMMON, mage.cards.c.CrosissAttendant.class));
+ cards.add(new SetCardInfo("Crosis, the Purger", 242, Rarity.RARE, mage.cards.c.CrosisThePurger.class));
+ cards.add(new SetCardInfo("Crown of Flames", 142, Rarity.COMMON, mage.cards.c.CrownOfFlames.class));
+ cards.add(new SetCardInfo("Crusading Knight", 12, Rarity.RARE, mage.cards.c.CrusadingKnight.class));
+ cards.add(new SetCardInfo("Crypt Angel", 97, Rarity.RARE, mage.cards.c.CryptAngel.class));
+ cards.add(new SetCardInfo("Cursed Flesh", 98, Rarity.COMMON, mage.cards.c.CursedFlesh.class));
+ cards.add(new SetCardInfo("Darigaaz's Attendant", 301, Rarity.UNCOMMON, mage.cards.d.DarigaazsAttendant.class));
+ cards.add(new SetCardInfo("Darigaaz, the Igniter", 243, Rarity.RARE, mage.cards.d.DarigaazTheIgniter.class));
+ cards.add(new SetCardInfo("Defiling Tears", 99, Rarity.UNCOMMON, mage.cards.d.DefilingTears.class));
+ cards.add(new SetCardInfo("Devouring Strossus", 101, Rarity.RARE, mage.cards.d.DevouringStrossus.class));
+ cards.add(new SetCardInfo("Dismantling Blow", 14, Rarity.COMMON, mage.cards.d.DismantlingBlow.class));
+ cards.add(new SetCardInfo("Disrupt", 51, Rarity.UNCOMMON, mage.cards.d.Disrupt.class));
+ cards.add(new SetCardInfo("Distorting Wake", 52, Rarity.RARE, mage.cards.d.DistortingWake.class));
+ cards.add(new SetCardInfo("Divine Presence", 15, Rarity.RARE, mage.cards.d.DivinePresence.class));
+ cards.add(new SetCardInfo("Do or Die", 102, Rarity.RARE, mage.cards.d.DoOrDie.class));
+ cards.add(new SetCardInfo("Drake-Skull Cameo", 302, Rarity.UNCOMMON, mage.cards.d.DrakeSkullCameo.class));
+ cards.add(new SetCardInfo("Dream Thrush", 53, Rarity.COMMON, mage.cards.d.DreamThrush.class));
+ cards.add(new SetCardInfo("Dredge", 103, Rarity.UNCOMMON, mage.cards.d.Dredge.class));
+ cards.add(new SetCardInfo("Dromar's Attendant", 303, Rarity.UNCOMMON, mage.cards.d.DromarsAttendant.class));
+ cards.add(new SetCardInfo("Dromar, the Banisher", 244, Rarity.RARE, mage.cards.d.DromarTheBanisher.class));
+ cards.add(new SetCardInfo("Dueling Grounds", 245, Rarity.RARE, mage.cards.d.DuelingGrounds.class));
+ cards.add(new SetCardInfo("Duskwalker", 104, Rarity.COMMON, mage.cards.d.Duskwalker.class));
+ cards.add(new SetCardInfo("Elfhame Palace", 322, Rarity.UNCOMMON, mage.cards.e.ElfhamePalace.class));
+ cards.add(new SetCardInfo("Elfhame Sanctuary", 185, Rarity.UNCOMMON, mage.cards.e.ElfhameSanctuary.class));
+ cards.add(new SetCardInfo("Elvish Champion", 186, Rarity.RARE, mage.cards.e.ElvishChampion.class));
+ cards.add(new SetCardInfo("Empress Galina", 54, Rarity.RARE, mage.cards.e.EmpressGalina.class));
+ cards.add(new SetCardInfo("Exclude", 56, Rarity.COMMON, mage.cards.e.Exclude.class));
+ cards.add(new SetCardInfo("Exotic Curse", 105, Rarity.COMMON, mage.cards.e.ExoticCurse.class));
+ cards.add(new SetCardInfo("Explosive Growth", 187, Rarity.COMMON, mage.cards.e.ExplosiveGrowth.class));
+ cards.add(new SetCardInfo("Fact or Fiction", 57, Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class));
+ cards.add(new SetCardInfo("Faerie Squadron", 58, Rarity.COMMON, mage.cards.f.FaerieSquadron.class));
+ cards.add(new SetCardInfo("Fertile Ground", 188, Rarity.COMMON, mage.cards.f.FertileGround.class));
+ cards.add(new SetCardInfo("Firebrand Ranger", 143, Rarity.UNCOMMON, mage.cards.f.FirebrandRanger.class));
+ cards.add(new SetCardInfo("Firescreamer", 106, Rarity.COMMON, mage.cards.f.Firescreamer.class));
+ cards.add(new SetCardInfo("Fires of Yavimaya", 246, Rarity.UNCOMMON, mage.cards.f.FiresOfYavimaya.class));
+ cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Frenzied Tilling", 247, Rarity.COMMON, mage.cards.f.FrenziedTilling.class));
+ cards.add(new SetCardInfo("Galina's Knight", 248, Rarity.COMMON, mage.cards.g.GalinasKnight.class));
+ cards.add(new SetCardInfo("Geothermal Crevice", 323, Rarity.COMMON, mage.cards.g.GeothermalCrevice.class));
+ cards.add(new SetCardInfo("Ghitu Fire", 144, Rarity.RARE, mage.cards.g.GhituFire.class));
+ cards.add(new SetCardInfo("Glimmering Angel", 17, Rarity.COMMON, mage.cards.g.GlimmeringAngel.class));
+ cards.add(new SetCardInfo("Global Ruin", 18, Rarity.RARE, mage.cards.g.GlobalRuin.class));
+ cards.add(new SetCardInfo("Goblin Spy", 145, Rarity.UNCOMMON, mage.cards.g.GoblinSpy.class));
+ cards.add(new SetCardInfo("Goham Djinn", 107, Rarity.UNCOMMON, mage.cards.g.GohamDjinn.class));
+ cards.add(new SetCardInfo("Halam Djinn", 146, Rarity.UNCOMMON, mage.cards.h.HalamDjinn.class));
+ cards.add(new SetCardInfo("Hanna, Ship's Navigator", 249, Rarity.RARE, mage.cards.h.HannaShipsNavigator.class));
+ cards.add(new SetCardInfo("Harrow", 189, Rarity.COMMON, mage.cards.h.Harrow.class));
+ cards.add(new SetCardInfo("Harsh Judgment", 19, Rarity.RARE, mage.cards.h.HarshJudgment.class));
+ cards.add(new SetCardInfo("Hate Weaver", 108, Rarity.UNCOMMON, mage.cards.h.HateWeaver.class));
+ cards.add(new SetCardInfo("Heroes' Reunion", 250, Rarity.UNCOMMON, mage.cards.h.HeroesReunion.class));
+ cards.add(new SetCardInfo("Holy Day", 20, Rarity.COMMON, mage.cards.h.HolyDay.class));
+ cards.add(new SetCardInfo("Hooded Kavu", 147, Rarity.COMMON, mage.cards.h.HoodedKavu.class));
+ cards.add(new SetCardInfo("Horned Cheetah", 251, Rarity.UNCOMMON, mage.cards.h.HornedCheetah.class));
+ cards.add(new SetCardInfo("Hunting Kavu", 252, Rarity.UNCOMMON, mage.cards.h.HuntingKavu.class));
+ cards.add(new SetCardInfo("Hypnotic Cloud", 109, Rarity.COMMON, mage.cards.h.HypnoticCloud.class));
+ cards.add(new SetCardInfo("Irrigation Ditch", 324, Rarity.COMMON, mage.cards.i.IrrigationDitch.class));
+ cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Jade Leech", 190, Rarity.RARE, mage.cards.j.JadeLeech.class));
+ cards.add(new SetCardInfo("Juntu Stakes", 304, Rarity.RARE, mage.cards.j.JuntuStakes.class));
+ cards.add(new SetCardInfo("Kangee, Aerie Keeper", 253, Rarity.RARE, mage.cards.k.KangeeAerieKeeper.class));
+ cards.add(new SetCardInfo("Kavu Aggressor", 148, Rarity.COMMON, mage.cards.k.KavuAggressor.class));
+ cards.add(new SetCardInfo("Kavu Chameleon", 191, Rarity.UNCOMMON, mage.cards.k.KavuChameleon.class));
+ cards.add(new SetCardInfo("Kavu Climber", 192, Rarity.COMMON, mage.cards.k.KavuClimber.class));
+ cards.add(new SetCardInfo("Kavu Lair", 193, Rarity.RARE, mage.cards.k.KavuLair.class));
+ cards.add(new SetCardInfo("Kavu Monarch", 149, Rarity.RARE, mage.cards.k.KavuMonarch.class));
+ cards.add(new SetCardInfo("Kavu Runner", 150, Rarity.UNCOMMON, mage.cards.k.KavuRunner.class));
+ cards.add(new SetCardInfo("Kavu Scout", 151, Rarity.COMMON, mage.cards.k.KavuScout.class));
+ cards.add(new SetCardInfo("Kavu Titan", 194, Rarity.RARE, mage.cards.k.KavuTitan.class));
+ cards.add(new SetCardInfo("Keldon Necropolis", 325, Rarity.RARE, mage.cards.k.KeldonNecropolis.class));
+ cards.add(new SetCardInfo("Liberate", 21, Rarity.UNCOMMON, mage.cards.l.Liberate.class));
+ cards.add(new SetCardInfo("Lightning Dart", 152, Rarity.UNCOMMON, mage.cards.l.LightningDart.class));
+ cards.add(new SetCardInfo("Llanowar Cavalry", 195, Rarity.COMMON, mage.cards.l.LlanowarCavalry.class));
+ cards.add(new SetCardInfo("Llanowar Elite", 196, Rarity.COMMON, mage.cards.l.LlanowarElite.class));
+ cards.add(new SetCardInfo("Llanowar Knight", 254, Rarity.COMMON, mage.cards.l.LlanowarKnight.class));
+ cards.add(new SetCardInfo("Llanowar Vanguard", 197, Rarity.COMMON, mage.cards.l.LlanowarVanguard.class));
+ cards.add(new SetCardInfo("Lobotomy", 255, Rarity.UNCOMMON, mage.cards.l.Lobotomy.class));
+ cards.add(new SetCardInfo("Lotus Guardian", 305, Rarity.RARE, mage.cards.l.LotusGuardian.class));
+ cards.add(new SetCardInfo("Mana Maze", 59, Rarity.RARE, mage.cards.m.ManaMaze.class));
+ cards.add(new SetCardInfo("Maniacal Rage", 155, Rarity.COMMON, mage.cards.m.ManiacalRage.class));
+ cards.add(new SetCardInfo("Manipulate Fate", 60, Rarity.UNCOMMON, mage.cards.m.ManipulateFate.class));
+ cards.add(new SetCardInfo("Marauding Knight", 110, Rarity.RARE, mage.cards.m.MaraudingKnight.class));
+ cards.add(new SetCardInfo("Metathran Transport", 62, Rarity.UNCOMMON, mage.cards.m.MetathranTransport.class));
+ cards.add(new SetCardInfo("Metathran Zombie", 63, Rarity.COMMON, mage.cards.m.MetathranZombie.class));
+ cards.add(new SetCardInfo("Meteor Storm", 256, Rarity.RARE, mage.cards.m.MeteorStorm.class));
+ cards.add(new SetCardInfo("Might Weaver", 198, Rarity.UNCOMMON, mage.cards.m.MightWeaver.class));
+ cards.add(new SetCardInfo("Molimo, Maro-Sorcerer", 199, Rarity.RARE, mage.cards.m.MolimoMaroSorcerer.class));
+ cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mourning", 111, Rarity.COMMON, mage.cards.m.Mourning.class));
+ cards.add(new SetCardInfo("Nightscape Apprentice", 112, Rarity.COMMON, mage.cards.n.NightscapeApprentice.class));
+ cards.add(new SetCardInfo("Nightscape Master", 113, Rarity.RARE, mage.cards.n.NightscapeMaster.class));
+ cards.add(new SetCardInfo("Noble Panther", 257, Rarity.RARE, mage.cards.n.NoblePanther.class));
+ cards.add(new SetCardInfo("Nomadic Elf", 200, Rarity.COMMON, mage.cards.n.NomadicElf.class));
+ cards.add(new SetCardInfo("Obliterate", 156, Rarity.RARE, mage.cards.o.Obliterate.class));
+ cards.add(new SetCardInfo("Obsidian Acolyte", 22, Rarity.COMMON, mage.cards.o.ObsidianAcolyte.class));
+ cards.add(new SetCardInfo("Opt", 64, Rarity.COMMON, mage.cards.o.Opt.class));
+ cards.add(new SetCardInfo("Ordered Migration", 258, Rarity.UNCOMMON, mage.cards.o.OrderedMigration.class));
+ cards.add(new SetCardInfo("Orim's Touch", 23, Rarity.COMMON, mage.cards.o.OrimsTouch.class));
+ cards.add(new SetCardInfo("Overabundance", 259, Rarity.RARE, mage.cards.o.Overabundance.class));
+ cards.add(new SetCardInfo("Overload", 157, Rarity.COMMON, mage.cards.o.Overload.class));
+ cards.add(new SetCardInfo("Pain // Suffering", 294, Rarity.UNCOMMON, mage.cards.p.PainSuffering.class));
+ cards.add(new SetCardInfo("Phantasmal Terrain", 65, Rarity.COMMON, mage.cards.p.PhantasmalTerrain.class));
+ cards.add(new SetCardInfo("Phyrexian Altar", 306, Rarity.RARE, mage.cards.p.PhyrexianAltar.class));
+ cards.add(new SetCardInfo("Phyrexian Battleflies", 114, Rarity.COMMON, mage.cards.p.PhyrexianBattleflies.class));
+ cards.add(new SetCardInfo("Phyrexian Delver", 115, Rarity.RARE, mage.cards.p.PhyrexianDelver.class));
+ cards.add(new SetCardInfo("Phyrexian Infiltrator", 116, Rarity.RARE, mage.cards.p.PhyrexianInfiltrator.class));
+ cards.add(new SetCardInfo("Phyrexian Lens", 307, Rarity.RARE, mage.cards.p.PhyrexianLens.class));
+ cards.add(new SetCardInfo("Phyrexian Reaper", 117, Rarity.COMMON, mage.cards.p.PhyrexianReaper.class));
+ cards.add(new SetCardInfo("Phyrexian Slayer", 118, Rarity.COMMON, mage.cards.p.PhyrexianSlayer.class));
+ cards.add(new SetCardInfo("Pincer Spider", 201, Rarity.COMMON, mage.cards.p.PincerSpider.class));
+ cards.add(new SetCardInfo("Plague Spitter", 119, Rarity.UNCOMMON, mage.cards.p.PlagueSpitter.class));
+ cards.add(new SetCardInfo("Plague Spores", 260, Rarity.COMMON, mage.cards.p.PlagueSpores.class));
+ cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Planar Portal", 308, Rarity.RARE, mage.cards.p.PlanarPortal.class));
+ cards.add(new SetCardInfo("Pouncing Kavu", 158, Rarity.COMMON, mage.cards.p.PouncingKavu.class));
+ cards.add(new SetCardInfo("Power Armor", 309, Rarity.UNCOMMON, mage.cards.p.PowerArmor.class));
+ cards.add(new SetCardInfo("Prison Barricade", 25, Rarity.COMMON, mage.cards.p.PrisonBarricade.class));
+ cards.add(new SetCardInfo("Probe", 66, Rarity.COMMON, mage.cards.p.Probe.class));
+ cards.add(new SetCardInfo("Prohibit", 67, Rarity.COMMON, mage.cards.p.Prohibit.class));
+ cards.add(new SetCardInfo("Protective Sphere", 26, Rarity.COMMON, mage.cards.p.ProtectiveSphere.class));
+ cards.add(new SetCardInfo("Psychic Battle", 68, Rarity.RARE, mage.cards.p.PsychicBattle.class));
+ cards.add(new SetCardInfo("Pure Reflection", 27, Rarity.RARE, mage.cards.p.PureReflection.class));
+ cards.add(new SetCardInfo("Pyre Zombie", 261, Rarity.RARE, mage.cards.p.PyreZombie.class));
+ cards.add(new SetCardInfo("Quirion Elves", 203, Rarity.COMMON, mage.cards.q.QuirionElves.class));
+ cards.add(new SetCardInfo("Quirion Sentinel", 204, Rarity.COMMON, mage.cards.q.QuirionSentinel.class));
+ cards.add(new SetCardInfo("Quirion Trailblazer", 205, Rarity.COMMON, mage.cards.q.QuirionTrailblazer.class));
+ cards.add(new SetCardInfo("Rage Weaver", 159, Rarity.UNCOMMON, mage.cards.r.RageWeaver.class));
+ cards.add(new SetCardInfo("Raging Kavu", 262, Rarity.RARE, mage.cards.r.RagingKavu.class));
+ cards.add(new SetCardInfo("Rainbow Crow", 69, Rarity.UNCOMMON, mage.cards.r.RainbowCrow.class));
+ cards.add(new SetCardInfo("Rampant Elephant", 28, Rarity.COMMON, mage.cards.r.RampantElephant.class));
+ cards.add(new SetCardInfo("Ravenous Rats", 120, Rarity.COMMON, mage.cards.r.RavenousRats.class));
+ cards.add(new SetCardInfo("Razorfoot Griffin", 29, Rarity.COMMON, mage.cards.r.RazorfootGriffin.class));
+ cards.add(new SetCardInfo("Reckless Assault", 263, Rarity.RARE, mage.cards.r.RecklessAssault.class));
+ cards.add(new SetCardInfo("Reckless Spite", 121, Rarity.UNCOMMON, mage.cards.r.RecklessSpite.class));
+ cards.add(new SetCardInfo("Recoil", 264, Rarity.COMMON, mage.cards.r.Recoil.class));
+ cards.add(new SetCardInfo("Recover", 122, Rarity.COMMON, mage.cards.r.Recover.class));
+ cards.add(new SetCardInfo("Repulse", 70, Rarity.COMMON, mage.cards.r.Repulse.class));
+ cards.add(new SetCardInfo("Restock", 206, Rarity.RARE, mage.cards.r.Restock.class));
+ cards.add(new SetCardInfo("Restrain", 30, Rarity.COMMON, mage.cards.r.Restrain.class));
+ cards.add(new SetCardInfo("Reviving Dose", 31, Rarity.COMMON, mage.cards.r.RevivingDose.class));
+ cards.add(new SetCardInfo("Reviving Vapors", 265, Rarity.UNCOMMON, mage.cards.r.RevivingVapors.class));
+ cards.add(new SetCardInfo("Rewards of Diversity", 32, Rarity.UNCOMMON, mage.cards.r.RewardsOfDiversity.class));
+ cards.add(new SetCardInfo("Reya Dawnbringer", 33, Rarity.RARE, mage.cards.r.ReyaDawnbringer.class));
+ cards.add(new SetCardInfo("Riptide Crab", 266, Rarity.UNCOMMON, mage.cards.r.RiptideCrab.class));
+ cards.add(new SetCardInfo("Rith's Attendant", 310, Rarity.UNCOMMON, mage.cards.r.RithsAttendant.class));
+ cards.add(new SetCardInfo("Rith, the Awakener", 267, Rarity.RARE, mage.cards.r.RithTheAwakener.class));
+ cards.add(new SetCardInfo("Rogue Kavu", 160, Rarity.COMMON, mage.cards.r.RogueKavu.class));
+ cards.add(new SetCardInfo("Rooting Kavu", 207, Rarity.UNCOMMON, mage.cards.r.RootingKavu.class));
+ cards.add(new SetCardInfo("Rout", 34, Rarity.RARE, mage.cards.r.Rout.class));
+ cards.add(new SetCardInfo("Ruby Leech", 161, Rarity.RARE, mage.cards.r.RubyLeech.class));
+ cards.add(new SetCardInfo("Ruham Djinn", 35, Rarity.UNCOMMON, mage.cards.r.RuhamDjinn.class));
+ cards.add(new SetCardInfo("Sabertooth Nishoba", 268, Rarity.RARE, mage.cards.s.SabertoothNishoba.class));
+ cards.add(new SetCardInfo("Salt Marsh", 326, Rarity.UNCOMMON, mage.cards.s.SaltMarsh.class));
+ cards.add(new SetCardInfo("Samite Archer", 269, Rarity.UNCOMMON, mage.cards.s.SamiteArcher.class));
+ cards.add(new SetCardInfo("Sapphire Leech", 71, Rarity.RARE, mage.cards.s.SapphireLeech.class));
+ cards.add(new SetCardInfo("Saproling Symbiosis", 209, Rarity.RARE, mage.cards.s.SaprolingSymbiosis.class));
+ cards.add(new SetCardInfo("Savage Offensive", 162, Rarity.COMMON, mage.cards.s.SavageOffensive.class));
+ cards.add(new SetCardInfo("Scarred Puma", 163, Rarity.COMMON, mage.cards.s.ScarredPuma.class));
+ cards.add(new SetCardInfo("Scavenged Weaponry", 123, Rarity.COMMON, mage.cards.s.ScavengedWeaponry.class));
+ cards.add(new SetCardInfo("Scorching Lava", 164, Rarity.COMMON, mage.cards.s.ScorchingLava.class));
+ cards.add(new SetCardInfo("Scouting Trek", 210, Rarity.UNCOMMON, mage.cards.s.ScoutingTrek.class));
+ cards.add(new SetCardInfo("Seashell Cameo", 311, Rarity.UNCOMMON, mage.cards.s.SeashellCameo.class));
+ cards.add(new SetCardInfo("Seer's Vision", 270, Rarity.UNCOMMON, mage.cards.s.SeersVision.class));
+ cards.add(new SetCardInfo("Serpentine Kavu", 211, Rarity.COMMON, mage.cards.s.SerpentineKavu.class));
+ cards.add(new SetCardInfo("Shackles", 37, Rarity.COMMON, mage.cards.s.Shackles.class));
+ cards.add(new SetCardInfo("Shimmering Wings", 72, Rarity.COMMON, mage.cards.s.ShimmeringWings.class));
+ cards.add(new SetCardInfo("Shivan Emissary", 166, Rarity.UNCOMMON, mage.cards.s.ShivanEmissary.class));
+ cards.add(new SetCardInfo("Shivan Harvest", 167, Rarity.UNCOMMON, mage.cards.s.ShivanHarvest.class));
+ cards.add(new SetCardInfo("Shivan Oasis", 327, Rarity.UNCOMMON, mage.cards.s.ShivanOasis.class));
+ cards.add(new SetCardInfo("Shivan Zombie", 271, Rarity.COMMON, mage.cards.s.ShivanZombie.class));
+ cards.add(new SetCardInfo("Shoreline Raider", 73, Rarity.COMMON, mage.cards.s.ShorelineRaider.class));
+ cards.add(new SetCardInfo("Simoon", 272, Rarity.UNCOMMON, mage.cards.s.Simoon.class));
+ cards.add(new SetCardInfo("Skittish Kavu", 168, Rarity.UNCOMMON, mage.cards.s.SkittishKavu.class));
+ cards.add(new SetCardInfo("Skizzik", 169, Rarity.RARE, mage.cards.s.Skizzik.class));
+ cards.add(new SetCardInfo("Sky Weaver", 74, Rarity.UNCOMMON, mage.cards.s.SkyWeaver.class));
+ cards.add(new SetCardInfo("Sleeper's Robe", 273, Rarity.UNCOMMON, mage.cards.s.SleepersRobe.class));
+ cards.add(new SetCardInfo("Slimy Kavu", 170, Rarity.COMMON, mage.cards.s.SlimyKavu.class));
+ cards.add(new SetCardInfo("Slinking Serpent", 274, Rarity.UNCOMMON, mage.cards.s.SlinkingSerpent.class));
+ cards.add(new SetCardInfo("Smoldering Tar", 275, Rarity.UNCOMMON, mage.cards.s.SmolderingTar.class));
+ cards.add(new SetCardInfo("Soul Burn", 124, Rarity.COMMON, mage.cards.s.SoulBurn.class));
+ cards.add(new SetCardInfo("Sparring Golem", 312, Rarity.UNCOMMON, mage.cards.s.SparringGolem.class));
+ cards.add(new SetCardInfo("Spinal Embrace", 276, Rarity.RARE, mage.cards.s.SpinalEmbrace.class));
+ cards.add(new SetCardInfo("Spirit of Resistance", 38, Rarity.RARE, mage.cards.s.SpiritOfResistance.class));
+ cards.add(new SetCardInfo("Spirit Weaver", 39, Rarity.UNCOMMON, mage.cards.s.SpiritWeaver.class));
+ cards.add(new SetCardInfo("Spite // Malice", 293, Rarity.UNCOMMON, mage.cards.s.SpiteMalice.class));
+ cards.add(new SetCardInfo("Spreading Plague", 125, Rarity.RARE, mage.cards.s.SpreadingPlague.class));
+ cards.add(new SetCardInfo("Stalking Assassin", 277, Rarity.RARE, mage.cards.s.StalkingAssassin.class));
+ cards.add(new SetCardInfo("Stand // Deliver", 292, Rarity.UNCOMMON, mage.cards.s.StandDeliver.class));
+ cards.add(new SetCardInfo("Sterling Grove", 278, Rarity.UNCOMMON, mage.cards.s.SterlingGrove.class));
+ cards.add(new SetCardInfo("Stormscape Apprentice", 75, Rarity.COMMON, mage.cards.s.StormscapeApprentice.class));
+ cards.add(new SetCardInfo("Stormscape Master", 76, Rarity.RARE, mage.cards.s.StormscapeMaster.class));
+ cards.add(new SetCardInfo("Strength of Unity", 40, Rarity.COMMON, mage.cards.s.StrengthOfUnity.class));
+ cards.add(new SetCardInfo("Stun", 172, Rarity.COMMON, mage.cards.s.Stun.class));
+ cards.add(new SetCardInfo("Sulam Djinn", 212, Rarity.UNCOMMON, mage.cards.s.SulamDjinn.class));
+ cards.add(new SetCardInfo("Sulfur Vent", 328, Rarity.COMMON, mage.cards.s.SulfurVent.class));
+ cards.add(new SetCardInfo("Sunscape Apprentice", 41, Rarity.COMMON, mage.cards.s.SunscapeApprentice.class));
+ cards.add(new SetCardInfo("Sunscape Master", 42, Rarity.RARE, mage.cards.s.SunscapeMaster.class));
+ cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Sway of Illusion", 77, Rarity.UNCOMMON, mage.cards.s.SwayOfIllusion.class));
+ cards.add(new SetCardInfo("Tainted Well", 126, Rarity.COMMON, mage.cards.t.TaintedWell.class));
+ cards.add(new SetCardInfo("Tangle", 213, Rarity.UNCOMMON, mage.cards.t.Tangle.class));
+ cards.add(new SetCardInfo("Tectonic Instability", 173, Rarity.RARE, mage.cards.t.TectonicInstability.class));
+ cards.add(new SetCardInfo("Teferi's Care", 43, Rarity.UNCOMMON, mage.cards.t.TeferisCare.class));
+ cards.add(new SetCardInfo("Teferi's Moat", 279, Rarity.RARE, mage.cards.t.TeferisMoat.class));
+ cards.add(new SetCardInfo("Teferi's Response", 78, Rarity.RARE, mage.cards.t.TeferisResponse.class));
+ cards.add(new SetCardInfo("Tek", 313, Rarity.RARE, mage.cards.t.Tek.class));
+ cards.add(new SetCardInfo("Temporal Distortion", 79, Rarity.RARE, mage.cards.t.TemporalDistortion.class));
+ cards.add(new SetCardInfo("Thicket Elemental", 214, Rarity.RARE, mage.cards.t.ThicketElemental.class));
+ cards.add(new SetCardInfo("Thornscape Apprentice", 215, Rarity.COMMON, mage.cards.t.ThornscapeApprentice.class));
+ cards.add(new SetCardInfo("Thornscape Master", 216, Rarity.RARE, mage.cards.t.ThornscapeMaster.class));
+ cards.add(new SetCardInfo("Thunderscape Apprentice", 174, Rarity.COMMON, mage.cards.t.ThunderscapeApprentice.class));
+ cards.add(new SetCardInfo("Thunderscape Master", 175, Rarity.RARE, mage.cards.t.ThunderscapeMaster.class));
+ cards.add(new SetCardInfo("Tidal Visionary", 80, Rarity.COMMON, mage.cards.t.TidalVisionary.class));
+ cards.add(new SetCardInfo("Tigereye Cameo", 314, Rarity.UNCOMMON, mage.cards.t.TigereyeCameo.class));
+ cards.add(new SetCardInfo("Tinder Farm", 329, Rarity.COMMON, mage.cards.t.TinderFarm.class));
+ cards.add(new SetCardInfo("Tolarian Emissary", 81, Rarity.UNCOMMON, mage.cards.t.TolarianEmissary.class));
+ cards.add(new SetCardInfo("Tower Drake", 82, Rarity.COMMON, mage.cards.t.TowerDrake.class));
+ cards.add(new SetCardInfo("Tranquility", 217, Rarity.COMMON, mage.cards.t.Tranquility.class));
+ cards.add(new SetCardInfo("Traveler's Cloak", 83, Rarity.COMMON, mage.cards.t.TravelersCloak.class));
+ cards.add(new SetCardInfo("Treefolk Healer", 218, Rarity.UNCOMMON, mage.cards.t.TreefolkHealer.class));
+ cards.add(new SetCardInfo("Trench Wurm", 127, Rarity.UNCOMMON, mage.cards.t.TrenchWurm.class));
+ cards.add(new SetCardInfo("Treva's Attendant", 315, Rarity.UNCOMMON, mage.cards.t.TrevasAttendant.class));
+ cards.add(new SetCardInfo("Treva, the Renewer", 280, Rarity.RARE, mage.cards.t.TrevaTheRenewer.class));
+ cards.add(new SetCardInfo("Tribal Flames", 176, Rarity.COMMON, mage.cards.t.TribalFlames.class));
+ cards.add(new SetCardInfo("Troll-Horn Cameo", 316, Rarity.UNCOMMON, mage.cards.t.TrollHornCameo.class));
+ cards.add(new SetCardInfo("Tsabo's Assassin", 128, Rarity.RARE, mage.cards.t.TsabosAssassin.class));
+ cards.add(new SetCardInfo("Tsabo's Decree", 129, Rarity.RARE, mage.cards.t.TsabosDecree.class));
+ cards.add(new SetCardInfo("Tsabo's Web", 317, Rarity.RARE, mage.cards.t.TsabosWeb.class));
+ cards.add(new SetCardInfo("Tsabo Tavoc", 281, Rarity.RARE, mage.cards.t.TsaboTavoc.class));
+ cards.add(new SetCardInfo("Turf Wound", 177, Rarity.COMMON, mage.cards.t.TurfWound.class));
+ cards.add(new SetCardInfo("Twilight's Call", 130, Rarity.RARE, mage.cards.t.TwilightsCall.class));
+ cards.add(new SetCardInfo("Undermine", 282, Rarity.RARE, mage.cards.u.Undermine.class));
+ cards.add(new SetCardInfo("Urborg Drake", 283, Rarity.UNCOMMON, mage.cards.u.UrborgDrake.class));
+ cards.add(new SetCardInfo("Urborg Emissary", 131, Rarity.UNCOMMON, mage.cards.u.UrborgEmissary.class));
+ cards.add(new SetCardInfo("Urborg Phantom", 132, Rarity.COMMON, mage.cards.u.UrborgPhantom.class));
+ cards.add(new SetCardInfo("Urborg Shambler", 133, Rarity.UNCOMMON, mage.cards.u.UrborgShambler.class));
+ cards.add(new SetCardInfo("Urborg Skeleton", 134, Rarity.COMMON, mage.cards.u.UrborgSkeleton.class));
+ cards.add(new SetCardInfo("Urborg Volcano", 330, Rarity.UNCOMMON, mage.cards.u.UrborgVolcano.class));
+ cards.add(new SetCardInfo("Urza's Filter", 318, Rarity.RARE, mage.cards.u.UrzasFilter.class));
+ cards.add(new SetCardInfo("Urza's Rage", 178, Rarity.RARE, mage.cards.u.UrzasRage.class));
+ cards.add(new SetCardInfo("Utopia Tree", 219, Rarity.RARE, mage.cards.u.UtopiaTree.class));
+ cards.add(new SetCardInfo("Verdeloth the Ancient", 220, Rarity.RARE, mage.cards.v.VerdelothTheAncient.class));
+ cards.add(new SetCardInfo("Verduran Emissary", 221, Rarity.UNCOMMON, mage.cards.v.VerduranEmissary.class));
+ cards.add(new SetCardInfo("Viashino Grappler", 179, Rarity.COMMON, mage.cards.v.ViashinoGrappler.class));
+ cards.add(new SetCardInfo("Vicious Kavu", 284, Rarity.UNCOMMON, mage.cards.v.ViciousKavu.class));
+ cards.add(new SetCardInfo("Vile Consumption", 285, Rarity.RARE, mage.cards.v.VileConsumption.class));
+ cards.add(new SetCardInfo("Vodalian Hypnotist", 84, Rarity.UNCOMMON, mage.cards.v.VodalianHypnotist.class));
+ cards.add(new SetCardInfo("Vodalian Merchant", 85, Rarity.COMMON, mage.cards.v.VodalianMerchant.class));
+ cards.add(new SetCardInfo("Vodalian Serpent", 86, Rarity.COMMON, mage.cards.v.VodalianSerpent.class));
+ cards.add(new SetCardInfo("Vodalian Zombie", 286, Rarity.COMMON, mage.cards.v.VodalianZombie.class));
+ cards.add(new SetCardInfo("Void", 287, Rarity.RARE, mage.cards.v.Void.class));
+ cards.add(new SetCardInfo("Voracious Cobra", 288, Rarity.UNCOMMON, mage.cards.v.VoraciousCobra.class));
+ cards.add(new SetCardInfo("Wallop", 223, Rarity.UNCOMMON, mage.cards.w.Wallop.class));
+ cards.add(new SetCardInfo("Wandering Stream", 224, Rarity.COMMON, mage.cards.w.WanderingStream.class));
+ cards.add(new SetCardInfo("Wash Out", 87, Rarity.UNCOMMON, mage.cards.w.WashOut.class));
+ cards.add(new SetCardInfo("Wax // Wane", 296, Rarity.UNCOMMON, mage.cards.w.WaxWane.class));
+ cards.add(new SetCardInfo("Wayfaring Giant", 44, Rarity.UNCOMMON, mage.cards.w.WayfaringGiant.class));
+ cards.add(new SetCardInfo("Whip Silk", 225, Rarity.COMMON, mage.cards.w.WhipSilk.class));
+ cards.add(new SetCardInfo("Wings of Hope", 289, Rarity.COMMON, mage.cards.w.WingsOfHope.class));
+ cards.add(new SetCardInfo("Winnow", 45, Rarity.RARE, mage.cards.w.Winnow.class));
+ cards.add(new SetCardInfo("Worldly Counsel", 89, Rarity.COMMON, mage.cards.w.WorldlyCounsel.class));
+ cards.add(new SetCardInfo("Yavimaya Barbarian", 290, Rarity.COMMON, mage.cards.y.YavimayaBarbarian.class));
+ cards.add(new SetCardInfo("Yavimaya Kavu", 291, Rarity.UNCOMMON, mage.cards.y.YavimayaKavu.class));
+ cards.add(new SetCardInfo("Yawgmoth's Agenda", 135, Rarity.RARE, mage.cards.y.YawgmothsAgenda.class));
+ cards.add(new SetCardInfo("Zanam Djinn", 90, Rarity.UNCOMMON, mage.cards.z.ZanamDjinn.class));
+ cards.add(new SetCardInfo("Zap", 180, Rarity.COMMON, mage.cards.z.Zap.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Ixalan.java b/Mage.Sets/src/mage/sets/Ixalan.java
index 3e35230b86e..7ccce7704eb 100644
--- a/Mage.Sets/src/mage/sets/Ixalan.java
+++ b/Mage.Sets/src/mage/sets/Ixalan.java
@@ -13,7 +13,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class Ixalan extends ExpansionSet {
+public final class Ixalan extends ExpansionSet {
private static final Ixalan instance = new Ixalan();
diff --git a/Mage.Sets/src/mage/sets/IzzetVsGolgari.java b/Mage.Sets/src/mage/sets/IzzetVsGolgari.java
index eb89bd38f99..907be8f5a39 100644
--- a/Mage.Sets/src/mage/sets/IzzetVsGolgari.java
+++ b/Mage.Sets/src/mage/sets/IzzetVsGolgari.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class IzzetVsGolgari extends ExpansionSet {
+public final class IzzetVsGolgari extends ExpansionSet {
private static final IzzetVsGolgari instance = new IzzetVsGolgari();
diff --git a/Mage.Sets/src/mage/sets/JaceVsChandra.java b/Mage.Sets/src/mage/sets/JaceVsChandra.java
index ae9e0a62987..ad36e26b9a5 100644
--- a/Mage.Sets/src/mage/sets/JaceVsChandra.java
+++ b/Mage.Sets/src/mage/sets/JaceVsChandra.java
@@ -13,7 +13,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class JaceVsChandra extends ExpansionSet {
+public final class JaceVsChandra extends ExpansionSet {
private static final JaceVsChandra instance = new JaceVsChandra();
diff --git a/Mage.Sets/src/mage/sets/JaceVsVraska.java b/Mage.Sets/src/mage/sets/JaceVsVraska.java
index 1feb5743290..0f469d1f50f 100644
--- a/Mage.Sets/src/mage/sets/JaceVsVraska.java
+++ b/Mage.Sets/src/mage/sets/JaceVsVraska.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class JaceVsVraska extends ExpansionSet {
+public final class JaceVsVraska extends ExpansionSet {
private static final JaceVsVraska instance = new JaceVsVraska();
diff --git a/Mage.Sets/src/mage/sets/JiangYangguMuYanling.java b/Mage.Sets/src/mage/sets/JiangYangguMuYanling.java
index 16ba6a06e22..327bfad93ff 100644
--- a/Mage.Sets/src/mage/sets/JiangYangguMuYanling.java
+++ b/Mage.Sets/src/mage/sets/JiangYangguMuYanling.java
@@ -13,7 +13,7 @@ import mage.constants.SetType;
*
* @author TheElk801
*/
-public class JiangYangguMuYanling extends ExpansionSet {
+public final class JiangYangguMuYanling extends ExpansionSet {
private static final JiangYangguMuYanling instance = new JiangYangguMuYanling();
diff --git a/Mage.Sets/src/mage/sets/JourneyIntoNyx.java b/Mage.Sets/src/mage/sets/JourneyIntoNyx.java
index cdec13c9bfa..c2724ade395 100644
--- a/Mage.Sets/src/mage/sets/JourneyIntoNyx.java
+++ b/Mage.Sets/src/mage/sets/JourneyIntoNyx.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class JourneyIntoNyx extends ExpansionSet {
+public final class JourneyIntoNyx extends ExpansionSet {
private static final JourneyIntoNyx instance = new JourneyIntoNyx();
diff --git a/Mage.Sets/src/mage/sets/JudgePromo.java b/Mage.Sets/src/mage/sets/JudgePromo.java
index 2aef3343274..04d85147abe 100644
--- a/Mage.Sets/src/mage/sets/JudgePromo.java
+++ b/Mage.Sets/src/mage/sets/JudgePromo.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class JudgePromo extends ExpansionSet {
+public final class JudgePromo extends ExpansionSet {
private static final JudgePromo instance = new JudgePromo();
diff --git a/Mage.Sets/src/mage/sets/Judgment.java b/Mage.Sets/src/mage/sets/Judgment.java
index f6990c39801..efe52fce80b 100644
--- a/Mage.Sets/src/mage/sets/Judgment.java
+++ b/Mage.Sets/src/mage/sets/Judgment.java
@@ -1,188 +1,188 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author Backfir3
- */
-public class Judgment extends ExpansionSet {
-
- private static final Judgment instance = new Judgment();
-
- public static Judgment getInstance() {
- return instance;
- }
-
- private Judgment() {
- super("Judgment", "JUD", ExpansionSet.buildDate(2002, 5, 27), SetType.EXPANSION);
- this.blockName = "Odyssey";
- this.parentSet = Odyssey.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("Ancestor's Chosen", 1, Rarity.UNCOMMON, mage.cards.a.AncestorsChosen.class));
- cards.add(new SetCardInfo("Anger", 77, Rarity.UNCOMMON, mage.cards.a.Anger.class));
- cards.add(new SetCardInfo("Anurid Barkripper", 104, Rarity.COMMON, mage.cards.a.AnuridBarkripper.class));
- cards.add(new SetCardInfo("Anurid Brushhopper", 137, Rarity.RARE, mage.cards.a.AnuridBrushhopper.class));
- cards.add(new SetCardInfo("Anurid Swarmsnapper", 105, Rarity.UNCOMMON, mage.cards.a.AnuridSwarmsnapper.class));
- cards.add(new SetCardInfo("Arcane Teachings", 78, Rarity.COMMON, mage.cards.a.ArcaneTeachings.class));
- cards.add(new SetCardInfo("Aven Fogbringer", 34, Rarity.COMMON, mage.cards.a.AvenFogbringer.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author Backfir3
+ */
+public final class Judgment extends ExpansionSet {
+
+ private static final Judgment instance = new Judgment();
+
+ public static Judgment getInstance() {
+ return instance;
+ }
+
+ private Judgment() {
+ super("Judgment", "JUD", ExpansionSet.buildDate(2002, 5, 27), SetType.EXPANSION);
+ this.blockName = "Odyssey";
+ this.parentSet = Odyssey.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("Ancestor's Chosen", 1, Rarity.UNCOMMON, mage.cards.a.AncestorsChosen.class));
+ cards.add(new SetCardInfo("Anger", 77, Rarity.UNCOMMON, mage.cards.a.Anger.class));
+ cards.add(new SetCardInfo("Anurid Barkripper", 104, Rarity.COMMON, mage.cards.a.AnuridBarkripper.class));
+ cards.add(new SetCardInfo("Anurid Brushhopper", 137, Rarity.RARE, mage.cards.a.AnuridBrushhopper.class));
+ cards.add(new SetCardInfo("Anurid Swarmsnapper", 105, Rarity.UNCOMMON, mage.cards.a.AnuridSwarmsnapper.class));
+ cards.add(new SetCardInfo("Arcane Teachings", 78, Rarity.COMMON, mage.cards.a.ArcaneTeachings.class));
+ cards.add(new SetCardInfo("Aven Fogbringer", 34, Rarity.COMMON, mage.cards.a.AvenFogbringer.class));
cards.add(new SetCardInfo("Aven Warcraft", 2, Rarity.UNCOMMON, mage.cards.a.AvenWarcraft.class));
- cards.add(new SetCardInfo("Balthor the Defiled", 61, Rarity.RARE, mage.cards.b.BalthorTheDefiled.class));
- cards.add(new SetCardInfo("Battle Screech", 3, Rarity.UNCOMMON, mage.cards.b.BattleScreech.class));
- cards.add(new SetCardInfo("Battlefield Scrounger", 106, Rarity.COMMON, mage.cards.b.BattlefieldScrounger.class));
- cards.add(new SetCardInfo("Battlewise Aven", 4, Rarity.COMMON, mage.cards.b.BattlewiseAven.class));
- cards.add(new SetCardInfo("Benevolent Bodyguard", 5, Rarity.COMMON, mage.cards.b.BenevolentBodyguard.class));
- cards.add(new SetCardInfo("Book Burning", 80, Rarity.COMMON, mage.cards.b.BookBurning.class));
- cards.add(new SetCardInfo("Border Patrol", 6, Rarity.COMMON, mage.cards.b.BorderPatrol.class));
- cards.add(new SetCardInfo("Brawn", 107, Rarity.UNCOMMON, mage.cards.b.Brawn.class));
- cards.add(new SetCardInfo("Breaking Point", 81, Rarity.RARE, mage.cards.b.BreakingPoint.class));
- cards.add(new SetCardInfo("Browbeat", 82, Rarity.UNCOMMON, mage.cards.b.Browbeat.class));
- cards.add(new SetCardInfo("Burning Wish", 83, Rarity.RARE, mage.cards.b.BurningWish.class));
- cards.add(new SetCardInfo("Cabal Therapy", 62, Rarity.UNCOMMON, mage.cards.c.CabalTherapy.class));
- cards.add(new SetCardInfo("Cabal Trainee", 63, Rarity.COMMON, mage.cards.c.CabalTrainee.class));
- cards.add(new SetCardInfo("Cagemail", 7, Rarity.COMMON, mage.cards.c.Cagemail.class));
- cards.add(new SetCardInfo("Canopy Claws", 108, Rarity.COMMON, mage.cards.c.CanopyClaws.class));
- cards.add(new SetCardInfo("Centaur Rootcaster", 109, Rarity.COMMON, mage.cards.c.CentaurRootcaster.class));
- cards.add(new SetCardInfo("Cephalid Constable", 35, Rarity.RARE, mage.cards.c.CephalidConstable.class));
- cards.add(new SetCardInfo("Cephalid Inkshrouder", 36, Rarity.UNCOMMON, mage.cards.c.CephalidInkshrouder.class));
- cards.add(new SetCardInfo("Chastise", 8, Rarity.UNCOMMON, mage.cards.c.Chastise.class));
- cards.add(new SetCardInfo("Commander Eesha", 9, Rarity.RARE, mage.cards.c.CommanderEesha.class));
- cards.add(new SetCardInfo("Crush of Wurms", 110, Rarity.RARE, mage.cards.c.CrushOfWurms.class));
- cards.add(new SetCardInfo("Cunning Wish", 37, Rarity.RARE, mage.cards.c.CunningWish.class));
- cards.add(new SetCardInfo("Death Wish", 64, Rarity.RARE, mage.cards.d.DeathWish.class));
- cards.add(new SetCardInfo("Defy Gravity", 38, Rarity.COMMON, mage.cards.d.DefyGravity.class));
- cards.add(new SetCardInfo("Dwarven Bloodboiler", 84, Rarity.RARE, mage.cards.d.DwarvenBloodboiler.class));
- cards.add(new SetCardInfo("Dwarven Driller", 85, Rarity.UNCOMMON, mage.cards.d.DwarvenDriller.class));
- cards.add(new SetCardInfo("Earsplitting Rats", 65, Rarity.COMMON, mage.cards.e.EarsplittingRats.class));
- cards.add(new SetCardInfo("Elephant Guide", 111, Rarity.UNCOMMON, mage.cards.e.ElephantGuide.class));
- cards.add(new SetCardInfo("Ember Shot", 87, Rarity.COMMON, mage.cards.e.EmberShot.class));
- cards.add(new SetCardInfo("Envelop", 39, Rarity.COMMON, mage.cards.e.Envelop.class));
- cards.add(new SetCardInfo("Epic Struggle", 112, Rarity.RARE, mage.cards.e.EpicStruggle.class));
- cards.add(new SetCardInfo("Erhnam Djinn", 113, Rarity.RARE, mage.cards.e.ErhnamDjinn.class));
- cards.add(new SetCardInfo("Exoskeletal Armor", 114, Rarity.UNCOMMON, mage.cards.e.ExoskeletalArmor.class));
- cards.add(new SetCardInfo("Filth", 66, Rarity.UNCOMMON, mage.cards.f.Filth.class));
- cards.add(new SetCardInfo("Firecat Blitz", 88, Rarity.UNCOMMON, mage.cards.f.FirecatBlitz.class));
- cards.add(new SetCardInfo("Flaring Pain", 89, Rarity.COMMON, mage.cards.f.FlaringPain.class));
- cards.add(new SetCardInfo("Flash of Insight", 40, Rarity.UNCOMMON, mage.cards.f.FlashOfInsight.class));
- cards.add(new SetCardInfo("Fledgling Dragon", 90, Rarity.RARE, mage.cards.f.FledglingDragon.class));
- cards.add(new SetCardInfo("Folk Medicine", 115, Rarity.COMMON, mage.cards.f.FolkMedicine.class));
- cards.add(new SetCardInfo("Forcemage Advocate", 116, Rarity.UNCOMMON, mage.cards.f.ForcemageAdvocate.class));
- cards.add(new SetCardInfo("Funeral Pyre", 10, Rarity.COMMON, mage.cards.f.FuneralPyre.class));
- cards.add(new SetCardInfo("Genesis", 117, Rarity.RARE, mage.cards.g.Genesis.class));
- cards.add(new SetCardInfo("Giant Warthog", 118, Rarity.COMMON, mage.cards.g.GiantWarthog.class));
- cards.add(new SetCardInfo("Glory", 11, Rarity.RARE, mage.cards.g.Glory.class));
- cards.add(new SetCardInfo("Golden Wish", 12, Rarity.RARE, mage.cards.g.GoldenWish.class));
- cards.add(new SetCardInfo("Goretusk Firebeast", 91, Rarity.COMMON, mage.cards.g.GoretuskFirebeast.class));
- cards.add(new SetCardInfo("Grizzly Fate", 119, Rarity.UNCOMMON, mage.cards.g.GrizzlyFate.class));
- cards.add(new SetCardInfo("Guided Strike", 13, Rarity.COMMON, mage.cards.g.GuidedStrike.class));
- cards.add(new SetCardInfo("Guiltfeeder", 68, Rarity.RARE, mage.cards.g.Guiltfeeder.class));
- cards.add(new SetCardInfo("Hapless Researcher", 42, Rarity.COMMON, mage.cards.h.HaplessResearcher.class));
- cards.add(new SetCardInfo("Harvester Druid", 120, Rarity.COMMON, mage.cards.h.HarvesterDruid.class));
- cards.add(new SetCardInfo("Hunting Grounds", 138, Rarity.RARE, mage.cards.h.HuntingGrounds.class));
- cards.add(new SetCardInfo("Ironshell Beetle", 121, Rarity.COMMON, mage.cards.i.IronshellBeetle.class));
- cards.add(new SetCardInfo("Jeska, Warrior Adept", 93, Rarity.RARE, mage.cards.j.JeskaWarriorAdept.class));
- cards.add(new SetCardInfo("Keep Watch", 43, Rarity.COMMON, mage.cards.k.KeepWatch.class));
- cards.add(new SetCardInfo("Krosan Reclamation", 122, Rarity.UNCOMMON, mage.cards.k.KrosanReclamation.class));
- cards.add(new SetCardInfo("Krosan Verge", 141, Rarity.UNCOMMON, mage.cards.k.KrosanVerge.class));
- cards.add(new SetCardInfo("Krosan Wayfarer", 123, Rarity.COMMON, mage.cards.k.KrosanWayfarer.class));
- cards.add(new SetCardInfo("Laquatus's Disdain", 44, Rarity.UNCOMMON, mage.cards.l.LaquatussDisdain.class));
- cards.add(new SetCardInfo("Lava Dart", 94, Rarity.COMMON, mage.cards.l.LavaDart.class));
- cards.add(new SetCardInfo("Lead Astray", 14, Rarity.COMMON, mage.cards.l.LeadAstray.class));
- cards.add(new SetCardInfo("Liberated Dwarf", 95, Rarity.COMMON, mage.cards.l.LiberatedDwarf.class));
- cards.add(new SetCardInfo("Lightning Surge", 96, Rarity.RARE, mage.cards.l.LightningSurge.class));
- cards.add(new SetCardInfo("Living Wish", 124, Rarity.RARE, mage.cards.l.LivingWish.class));
- cards.add(new SetCardInfo("Masked Gorgon", 69, Rarity.RARE, mage.cards.m.MaskedGorgon.class));
- cards.add(new SetCardInfo("Mental Note", 46, Rarity.COMMON, mage.cards.m.MentalNote.class));
- cards.add(new SetCardInfo("Mirari's Wake", 139, Rarity.RARE, mage.cards.m.MirarisWake.class));
- cards.add(new SetCardInfo("Mirror Wall", 47, Rarity.COMMON, mage.cards.m.MirrorWall.class));
- cards.add(new SetCardInfo("Mist of Stagnation", 48, Rarity.RARE, mage.cards.m.MistOfStagnation.class));
- cards.add(new SetCardInfo("Morality Shift", 70, Rarity.RARE, mage.cards.m.MoralityShift.class));
- cards.add(new SetCardInfo("Nantuko Monastery", 142, Rarity.UNCOMMON, mage.cards.n.NantukoMonastery.class));
- cards.add(new SetCardInfo("Nantuko Tracer", 125, Rarity.COMMON, mage.cards.n.NantukoTracer.class));
- cards.add(new SetCardInfo("Nomad Mythmaker", 15, Rarity.RARE, mage.cards.n.NomadMythmaker.class));
- cards.add(new SetCardInfo("Nullmage Advocate", 126, Rarity.COMMON, mage.cards.n.NullmageAdvocate.class));
- cards.add(new SetCardInfo("Phantom Centaur", 127, Rarity.UNCOMMON, mage.cards.p.PhantomCentaur.class));
- cards.add(new SetCardInfo("Phantom Flock", 16, Rarity.UNCOMMON, mage.cards.p.PhantomFlock.class));
- cards.add(new SetCardInfo("Phantom Nantuko", 128, Rarity.RARE, mage.cards.p.PhantomNantuko.class));
- cards.add(new SetCardInfo("Phantom Nishoba", 140, Rarity.RARE, mage.cards.p.PhantomNishoba.class));
- cards.add(new SetCardInfo("Phantom Nomad", 17, Rarity.COMMON, mage.cards.p.PhantomNomad.class));
- cards.add(new SetCardInfo("Phantom Tiger", 129, Rarity.COMMON, mage.cards.p.PhantomTiger.class));
- cards.add(new SetCardInfo("Planar Chaos", 97, Rarity.UNCOMMON, mage.cards.p.PlanarChaos.class));
- cards.add(new SetCardInfo("Prismatic Strands", 18, Rarity.COMMON, mage.cards.p.PrismaticStrands.class));
- cards.add(new SetCardInfo("Pulsemage Advocate", 19, Rarity.RARE, mage.cards.p.PulsemageAdvocate.class));
- cards.add(new SetCardInfo("Quiet Speculation", 49, Rarity.UNCOMMON, mage.cards.q.QuietSpeculation.class));
- cards.add(new SetCardInfo("Ray of Revelation", 20, Rarity.COMMON, mage.cards.r.RayOfRevelation.class));
- cards.add(new SetCardInfo("Riftstone Portal", 143, Rarity.UNCOMMON, mage.cards.r.RiftstonePortal.class));
- cards.add(new SetCardInfo("Scalpelexis", 50, Rarity.RARE, mage.cards.s.Scalpelexis.class));
- cards.add(new SetCardInfo("Seedtime", 130, Rarity.RARE, mage.cards.s.Seedtime.class));
- cards.add(new SetCardInfo("Shieldmage Advocate", 22, Rarity.COMMON, mage.cards.s.ShieldmageAdvocate.class));
- cards.add(new SetCardInfo("Silver Seraph", 23, Rarity.RARE, mage.cards.s.SilverSeraph.class));
- cards.add(new SetCardInfo("Solitary Confinement", 24, Rarity.RARE, mage.cards.s.SolitaryConfinement.class));
- cards.add(new SetCardInfo("Soulcatchers' Aerie", 25, Rarity.UNCOMMON, mage.cards.s.SoulcatchersAerie.class));
- cards.add(new SetCardInfo("Spellgorger Barbarian", 100, Rarity.COMMON, mage.cards.s.SpellgorgerBarbarian.class));
- cards.add(new SetCardInfo("Spelljack", 51, Rarity.RARE, mage.cards.s.Spelljack.class));
- cards.add(new SetCardInfo("Spirit Cairn", 26, Rarity.UNCOMMON, mage.cards.s.SpiritCairn.class));
- cards.add(new SetCardInfo("Spurnmage Advocate", 27, Rarity.UNCOMMON, mage.cards.s.SpurnmageAdvocate.class));
- cards.add(new SetCardInfo("Stitch Together", 72, Rarity.UNCOMMON, mage.cards.s.StitchTogether.class));
- cards.add(new SetCardInfo("Sudden Strength", 132, Rarity.COMMON, mage.cards.s.SuddenStrength.class));
- cards.add(new SetCardInfo("Suntail Hawk", 28, Rarity.COMMON, mage.cards.s.SuntailHawk.class));
- cards.add(new SetCardInfo("Sutured Ghoul", 73, Rarity.RARE, mage.cards.s.SuturedGhoul.class));
- cards.add(new SetCardInfo("Swelter", 101, Rarity.UNCOMMON, mage.cards.s.Swelter.class));
- cards.add(new SetCardInfo("Swirling Sandstorm", 102, Rarity.COMMON, mage.cards.s.SwirlingSandstorm.class));
- cards.add(new SetCardInfo("Sylvan Safekeeper", 133, Rarity.RARE, mage.cards.s.SylvanSafekeeper.class));
- cards.add(new SetCardInfo("Telekinetic Bonds", 52, Rarity.RARE, mage.cards.t.TelekineticBonds.class));
- cards.add(new SetCardInfo("Test of Endurance", 29, Rarity.RARE, mage.cards.t.TestOfEndurance.class));
- cards.add(new SetCardInfo("Thriss, Nantuko Primus", 134, Rarity.RARE, mage.cards.t.ThrissNantukoPrimus.class));
- cards.add(new SetCardInfo("Toxic Stench", 74, Rarity.COMMON, mage.cards.t.ToxicStench.class));
- cards.add(new SetCardInfo("Trained Pronghorn", 30, Rarity.COMMON, mage.cards.t.TrainedPronghorn.class));
- cards.add(new SetCardInfo("Treacherous Vampire", 75, Rarity.UNCOMMON, mage.cards.t.TreacherousVampire.class));
- cards.add(new SetCardInfo("Treacherous Werewolf", 76, Rarity.COMMON, mage.cards.t.TreacherousWerewolf.class));
- cards.add(new SetCardInfo("Tunneler Wurm", 135, Rarity.UNCOMMON, mage.cards.t.TunnelerWurm.class));
- cards.add(new SetCardInfo("Unquestioned Authority", 31, Rarity.UNCOMMON, mage.cards.u.UnquestionedAuthority.class));
- cards.add(new SetCardInfo("Valor", 32, Rarity.UNCOMMON, mage.cards.v.Valor.class));
- cards.add(new SetCardInfo("Venomous Vines", 136, Rarity.COMMON, mage.cards.v.VenomousVines.class));
- cards.add(new SetCardInfo("Vigilant Sentry", 33, Rarity.COMMON, mage.cards.v.VigilantSentry.class));
- cards.add(new SetCardInfo("Web of Inertia", 53, Rarity.UNCOMMON, mage.cards.w.WebOfInertia.class));
- cards.add(new SetCardInfo("Wonder", 54, Rarity.UNCOMMON, mage.cards.w.Wonder.class));
- cards.add(new SetCardInfo("Worldgorger Dragon", 103, Rarity.RARE, mage.cards.w.WorldgorgerDragon.class));
- cards.add(new SetCardInfo("Wormfang Drake", 57, Rarity.COMMON, mage.cards.w.WormfangDrake.class));
- cards.add(new SetCardInfo("Wormfang Manta", 58, Rarity.RARE, mage.cards.w.WormfangManta.class));
- cards.add(new SetCardInfo("Wormfang Newt", 59, Rarity.COMMON, mage.cards.w.WormfangNewt.class));
- cards.add(new SetCardInfo("Wormfang Turtle", 60, Rarity.UNCOMMON, mage.cards.w.WormfangTurtle.class));
- }
-}
+ cards.add(new SetCardInfo("Balthor the Defiled", 61, Rarity.RARE, mage.cards.b.BalthorTheDefiled.class));
+ cards.add(new SetCardInfo("Battle Screech", 3, Rarity.UNCOMMON, mage.cards.b.BattleScreech.class));
+ cards.add(new SetCardInfo("Battlefield Scrounger", 106, Rarity.COMMON, mage.cards.b.BattlefieldScrounger.class));
+ cards.add(new SetCardInfo("Battlewise Aven", 4, Rarity.COMMON, mage.cards.b.BattlewiseAven.class));
+ cards.add(new SetCardInfo("Benevolent Bodyguard", 5, Rarity.COMMON, mage.cards.b.BenevolentBodyguard.class));
+ cards.add(new SetCardInfo("Book Burning", 80, Rarity.COMMON, mage.cards.b.BookBurning.class));
+ cards.add(new SetCardInfo("Border Patrol", 6, Rarity.COMMON, mage.cards.b.BorderPatrol.class));
+ cards.add(new SetCardInfo("Brawn", 107, Rarity.UNCOMMON, mage.cards.b.Brawn.class));
+ cards.add(new SetCardInfo("Breaking Point", 81, Rarity.RARE, mage.cards.b.BreakingPoint.class));
+ cards.add(new SetCardInfo("Browbeat", 82, Rarity.UNCOMMON, mage.cards.b.Browbeat.class));
+ cards.add(new SetCardInfo("Burning Wish", 83, Rarity.RARE, mage.cards.b.BurningWish.class));
+ cards.add(new SetCardInfo("Cabal Therapy", 62, Rarity.UNCOMMON, mage.cards.c.CabalTherapy.class));
+ cards.add(new SetCardInfo("Cabal Trainee", 63, Rarity.COMMON, mage.cards.c.CabalTrainee.class));
+ cards.add(new SetCardInfo("Cagemail", 7, Rarity.COMMON, mage.cards.c.Cagemail.class));
+ cards.add(new SetCardInfo("Canopy Claws", 108, Rarity.COMMON, mage.cards.c.CanopyClaws.class));
+ cards.add(new SetCardInfo("Centaur Rootcaster", 109, Rarity.COMMON, mage.cards.c.CentaurRootcaster.class));
+ cards.add(new SetCardInfo("Cephalid Constable", 35, Rarity.RARE, mage.cards.c.CephalidConstable.class));
+ cards.add(new SetCardInfo("Cephalid Inkshrouder", 36, Rarity.UNCOMMON, mage.cards.c.CephalidInkshrouder.class));
+ cards.add(new SetCardInfo("Chastise", 8, Rarity.UNCOMMON, mage.cards.c.Chastise.class));
+ cards.add(new SetCardInfo("Commander Eesha", 9, Rarity.RARE, mage.cards.c.CommanderEesha.class));
+ cards.add(new SetCardInfo("Crush of Wurms", 110, Rarity.RARE, mage.cards.c.CrushOfWurms.class));
+ cards.add(new SetCardInfo("Cunning Wish", 37, Rarity.RARE, mage.cards.c.CunningWish.class));
+ cards.add(new SetCardInfo("Death Wish", 64, Rarity.RARE, mage.cards.d.DeathWish.class));
+ cards.add(new SetCardInfo("Defy Gravity", 38, Rarity.COMMON, mage.cards.d.DefyGravity.class));
+ cards.add(new SetCardInfo("Dwarven Bloodboiler", 84, Rarity.RARE, mage.cards.d.DwarvenBloodboiler.class));
+ cards.add(new SetCardInfo("Dwarven Driller", 85, Rarity.UNCOMMON, mage.cards.d.DwarvenDriller.class));
+ cards.add(new SetCardInfo("Earsplitting Rats", 65, Rarity.COMMON, mage.cards.e.EarsplittingRats.class));
+ cards.add(new SetCardInfo("Elephant Guide", 111, Rarity.UNCOMMON, mage.cards.e.ElephantGuide.class));
+ cards.add(new SetCardInfo("Ember Shot", 87, Rarity.COMMON, mage.cards.e.EmberShot.class));
+ cards.add(new SetCardInfo("Envelop", 39, Rarity.COMMON, mage.cards.e.Envelop.class));
+ cards.add(new SetCardInfo("Epic Struggle", 112, Rarity.RARE, mage.cards.e.EpicStruggle.class));
+ cards.add(new SetCardInfo("Erhnam Djinn", 113, Rarity.RARE, mage.cards.e.ErhnamDjinn.class));
+ cards.add(new SetCardInfo("Exoskeletal Armor", 114, Rarity.UNCOMMON, mage.cards.e.ExoskeletalArmor.class));
+ cards.add(new SetCardInfo("Filth", 66, Rarity.UNCOMMON, mage.cards.f.Filth.class));
+ cards.add(new SetCardInfo("Firecat Blitz", 88, Rarity.UNCOMMON, mage.cards.f.FirecatBlitz.class));
+ cards.add(new SetCardInfo("Flaring Pain", 89, Rarity.COMMON, mage.cards.f.FlaringPain.class));
+ cards.add(new SetCardInfo("Flash of Insight", 40, Rarity.UNCOMMON, mage.cards.f.FlashOfInsight.class));
+ cards.add(new SetCardInfo("Fledgling Dragon", 90, Rarity.RARE, mage.cards.f.FledglingDragon.class));
+ cards.add(new SetCardInfo("Folk Medicine", 115, Rarity.COMMON, mage.cards.f.FolkMedicine.class));
+ cards.add(new SetCardInfo("Forcemage Advocate", 116, Rarity.UNCOMMON, mage.cards.f.ForcemageAdvocate.class));
+ cards.add(new SetCardInfo("Funeral Pyre", 10, Rarity.COMMON, mage.cards.f.FuneralPyre.class));
+ cards.add(new SetCardInfo("Genesis", 117, Rarity.RARE, mage.cards.g.Genesis.class));
+ cards.add(new SetCardInfo("Giant Warthog", 118, Rarity.COMMON, mage.cards.g.GiantWarthog.class));
+ cards.add(new SetCardInfo("Glory", 11, Rarity.RARE, mage.cards.g.Glory.class));
+ cards.add(new SetCardInfo("Golden Wish", 12, Rarity.RARE, mage.cards.g.GoldenWish.class));
+ cards.add(new SetCardInfo("Goretusk Firebeast", 91, Rarity.COMMON, mage.cards.g.GoretuskFirebeast.class));
+ cards.add(new SetCardInfo("Grizzly Fate", 119, Rarity.UNCOMMON, mage.cards.g.GrizzlyFate.class));
+ cards.add(new SetCardInfo("Guided Strike", 13, Rarity.COMMON, mage.cards.g.GuidedStrike.class));
+ cards.add(new SetCardInfo("Guiltfeeder", 68, Rarity.RARE, mage.cards.g.Guiltfeeder.class));
+ cards.add(new SetCardInfo("Hapless Researcher", 42, Rarity.COMMON, mage.cards.h.HaplessResearcher.class));
+ cards.add(new SetCardInfo("Harvester Druid", 120, Rarity.COMMON, mage.cards.h.HarvesterDruid.class));
+ cards.add(new SetCardInfo("Hunting Grounds", 138, Rarity.RARE, mage.cards.h.HuntingGrounds.class));
+ cards.add(new SetCardInfo("Ironshell Beetle", 121, Rarity.COMMON, mage.cards.i.IronshellBeetle.class));
+ cards.add(new SetCardInfo("Jeska, Warrior Adept", 93, Rarity.RARE, mage.cards.j.JeskaWarriorAdept.class));
+ cards.add(new SetCardInfo("Keep Watch", 43, Rarity.COMMON, mage.cards.k.KeepWatch.class));
+ cards.add(new SetCardInfo("Krosan Reclamation", 122, Rarity.UNCOMMON, mage.cards.k.KrosanReclamation.class));
+ cards.add(new SetCardInfo("Krosan Verge", 141, Rarity.UNCOMMON, mage.cards.k.KrosanVerge.class));
+ cards.add(new SetCardInfo("Krosan Wayfarer", 123, Rarity.COMMON, mage.cards.k.KrosanWayfarer.class));
+ cards.add(new SetCardInfo("Laquatus's Disdain", 44, Rarity.UNCOMMON, mage.cards.l.LaquatussDisdain.class));
+ cards.add(new SetCardInfo("Lava Dart", 94, Rarity.COMMON, mage.cards.l.LavaDart.class));
+ cards.add(new SetCardInfo("Lead Astray", 14, Rarity.COMMON, mage.cards.l.LeadAstray.class));
+ cards.add(new SetCardInfo("Liberated Dwarf", 95, Rarity.COMMON, mage.cards.l.LiberatedDwarf.class));
+ cards.add(new SetCardInfo("Lightning Surge", 96, Rarity.RARE, mage.cards.l.LightningSurge.class));
+ cards.add(new SetCardInfo("Living Wish", 124, Rarity.RARE, mage.cards.l.LivingWish.class));
+ cards.add(new SetCardInfo("Masked Gorgon", 69, Rarity.RARE, mage.cards.m.MaskedGorgon.class));
+ cards.add(new SetCardInfo("Mental Note", 46, Rarity.COMMON, mage.cards.m.MentalNote.class));
+ cards.add(new SetCardInfo("Mirari's Wake", 139, Rarity.RARE, mage.cards.m.MirarisWake.class));
+ cards.add(new SetCardInfo("Mirror Wall", 47, Rarity.COMMON, mage.cards.m.MirrorWall.class));
+ cards.add(new SetCardInfo("Mist of Stagnation", 48, Rarity.RARE, mage.cards.m.MistOfStagnation.class));
+ cards.add(new SetCardInfo("Morality Shift", 70, Rarity.RARE, mage.cards.m.MoralityShift.class));
+ cards.add(new SetCardInfo("Nantuko Monastery", 142, Rarity.UNCOMMON, mage.cards.n.NantukoMonastery.class));
+ cards.add(new SetCardInfo("Nantuko Tracer", 125, Rarity.COMMON, mage.cards.n.NantukoTracer.class));
+ cards.add(new SetCardInfo("Nomad Mythmaker", 15, Rarity.RARE, mage.cards.n.NomadMythmaker.class));
+ cards.add(new SetCardInfo("Nullmage Advocate", 126, Rarity.COMMON, mage.cards.n.NullmageAdvocate.class));
+ cards.add(new SetCardInfo("Phantom Centaur", 127, Rarity.UNCOMMON, mage.cards.p.PhantomCentaur.class));
+ cards.add(new SetCardInfo("Phantom Flock", 16, Rarity.UNCOMMON, mage.cards.p.PhantomFlock.class));
+ cards.add(new SetCardInfo("Phantom Nantuko", 128, Rarity.RARE, mage.cards.p.PhantomNantuko.class));
+ cards.add(new SetCardInfo("Phantom Nishoba", 140, Rarity.RARE, mage.cards.p.PhantomNishoba.class));
+ cards.add(new SetCardInfo("Phantom Nomad", 17, Rarity.COMMON, mage.cards.p.PhantomNomad.class));
+ cards.add(new SetCardInfo("Phantom Tiger", 129, Rarity.COMMON, mage.cards.p.PhantomTiger.class));
+ cards.add(new SetCardInfo("Planar Chaos", 97, Rarity.UNCOMMON, mage.cards.p.PlanarChaos.class));
+ cards.add(new SetCardInfo("Prismatic Strands", 18, Rarity.COMMON, mage.cards.p.PrismaticStrands.class));
+ cards.add(new SetCardInfo("Pulsemage Advocate", 19, Rarity.RARE, mage.cards.p.PulsemageAdvocate.class));
+ cards.add(new SetCardInfo("Quiet Speculation", 49, Rarity.UNCOMMON, mage.cards.q.QuietSpeculation.class));
+ cards.add(new SetCardInfo("Ray of Revelation", 20, Rarity.COMMON, mage.cards.r.RayOfRevelation.class));
+ cards.add(new SetCardInfo("Riftstone Portal", 143, Rarity.UNCOMMON, mage.cards.r.RiftstonePortal.class));
+ cards.add(new SetCardInfo("Scalpelexis", 50, Rarity.RARE, mage.cards.s.Scalpelexis.class));
+ cards.add(new SetCardInfo("Seedtime", 130, Rarity.RARE, mage.cards.s.Seedtime.class));
+ cards.add(new SetCardInfo("Shieldmage Advocate", 22, Rarity.COMMON, mage.cards.s.ShieldmageAdvocate.class));
+ cards.add(new SetCardInfo("Silver Seraph", 23, Rarity.RARE, mage.cards.s.SilverSeraph.class));
+ cards.add(new SetCardInfo("Solitary Confinement", 24, Rarity.RARE, mage.cards.s.SolitaryConfinement.class));
+ cards.add(new SetCardInfo("Soulcatchers' Aerie", 25, Rarity.UNCOMMON, mage.cards.s.SoulcatchersAerie.class));
+ cards.add(new SetCardInfo("Spellgorger Barbarian", 100, Rarity.COMMON, mage.cards.s.SpellgorgerBarbarian.class));
+ cards.add(new SetCardInfo("Spelljack", 51, Rarity.RARE, mage.cards.s.Spelljack.class));
+ cards.add(new SetCardInfo("Spirit Cairn", 26, Rarity.UNCOMMON, mage.cards.s.SpiritCairn.class));
+ cards.add(new SetCardInfo("Spurnmage Advocate", 27, Rarity.UNCOMMON, mage.cards.s.SpurnmageAdvocate.class));
+ cards.add(new SetCardInfo("Stitch Together", 72, Rarity.UNCOMMON, mage.cards.s.StitchTogether.class));
+ cards.add(new SetCardInfo("Sudden Strength", 132, Rarity.COMMON, mage.cards.s.SuddenStrength.class));
+ cards.add(new SetCardInfo("Suntail Hawk", 28, Rarity.COMMON, mage.cards.s.SuntailHawk.class));
+ cards.add(new SetCardInfo("Sutured Ghoul", 73, Rarity.RARE, mage.cards.s.SuturedGhoul.class));
+ cards.add(new SetCardInfo("Swelter", 101, Rarity.UNCOMMON, mage.cards.s.Swelter.class));
+ cards.add(new SetCardInfo("Swirling Sandstorm", 102, Rarity.COMMON, mage.cards.s.SwirlingSandstorm.class));
+ cards.add(new SetCardInfo("Sylvan Safekeeper", 133, Rarity.RARE, mage.cards.s.SylvanSafekeeper.class));
+ cards.add(new SetCardInfo("Telekinetic Bonds", 52, Rarity.RARE, mage.cards.t.TelekineticBonds.class));
+ cards.add(new SetCardInfo("Test of Endurance", 29, Rarity.RARE, mage.cards.t.TestOfEndurance.class));
+ cards.add(new SetCardInfo("Thriss, Nantuko Primus", 134, Rarity.RARE, mage.cards.t.ThrissNantukoPrimus.class));
+ cards.add(new SetCardInfo("Toxic Stench", 74, Rarity.COMMON, mage.cards.t.ToxicStench.class));
+ cards.add(new SetCardInfo("Trained Pronghorn", 30, Rarity.COMMON, mage.cards.t.TrainedPronghorn.class));
+ cards.add(new SetCardInfo("Treacherous Vampire", 75, Rarity.UNCOMMON, mage.cards.t.TreacherousVampire.class));
+ cards.add(new SetCardInfo("Treacherous Werewolf", 76, Rarity.COMMON, mage.cards.t.TreacherousWerewolf.class));
+ cards.add(new SetCardInfo("Tunneler Wurm", 135, Rarity.UNCOMMON, mage.cards.t.TunnelerWurm.class));
+ cards.add(new SetCardInfo("Unquestioned Authority", 31, Rarity.UNCOMMON, mage.cards.u.UnquestionedAuthority.class));
+ cards.add(new SetCardInfo("Valor", 32, Rarity.UNCOMMON, mage.cards.v.Valor.class));
+ cards.add(new SetCardInfo("Venomous Vines", 136, Rarity.COMMON, mage.cards.v.VenomousVines.class));
+ cards.add(new SetCardInfo("Vigilant Sentry", 33, Rarity.COMMON, mage.cards.v.VigilantSentry.class));
+ cards.add(new SetCardInfo("Web of Inertia", 53, Rarity.UNCOMMON, mage.cards.w.WebOfInertia.class));
+ cards.add(new SetCardInfo("Wonder", 54, Rarity.UNCOMMON, mage.cards.w.Wonder.class));
+ cards.add(new SetCardInfo("Worldgorger Dragon", 103, Rarity.RARE, mage.cards.w.WorldgorgerDragon.class));
+ cards.add(new SetCardInfo("Wormfang Drake", 57, Rarity.COMMON, mage.cards.w.WormfangDrake.class));
+ cards.add(new SetCardInfo("Wormfang Manta", 58, Rarity.RARE, mage.cards.w.WormfangManta.class));
+ cards.add(new SetCardInfo("Wormfang Newt", 59, Rarity.COMMON, mage.cards.w.WormfangNewt.class));
+ cards.add(new SetCardInfo("Wormfang Turtle", 60, Rarity.UNCOMMON, mage.cards.w.WormfangTurtle.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Kaladesh.java b/Mage.Sets/src/mage/sets/Kaladesh.java
index 6d36cb0d1f3..9de71122149 100644
--- a/Mage.Sets/src/mage/sets/Kaladesh.java
+++ b/Mage.Sets/src/mage/sets/Kaladesh.java
@@ -41,7 +41,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class Kaladesh extends ExpansionSet {
+public final class Kaladesh extends ExpansionSet {
private static final Kaladesh instance = new Kaladesh();
diff --git a/Mage.Sets/src/mage/sets/KhansOfTarkir.java b/Mage.Sets/src/mage/sets/KhansOfTarkir.java
index 6988b69ee62..d58a92bcc85 100644
--- a/Mage.Sets/src/mage/sets/KhansOfTarkir.java
+++ b/Mage.Sets/src/mage/sets/KhansOfTarkir.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class KhansOfTarkir extends ExpansionSet {
+public final class KhansOfTarkir extends ExpansionSet {
private static final KhansOfTarkir instance = new KhansOfTarkir();
diff --git a/Mage.Sets/src/mage/sets/KnightsVsDragons.java b/Mage.Sets/src/mage/sets/KnightsVsDragons.java
index b2e4bd15564..553ded074b3 100644
--- a/Mage.Sets/src/mage/sets/KnightsVsDragons.java
+++ b/Mage.Sets/src/mage/sets/KnightsVsDragons.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class KnightsVsDragons extends ExpansionSet {
+public final class KnightsVsDragons extends ExpansionSet {
private static final KnightsVsDragons instance = new KnightsVsDragons();
diff --git a/Mage.Sets/src/mage/sets/LaunchParty.java b/Mage.Sets/src/mage/sets/LaunchParty.java
index 614aa174d74..cf38417926c 100644
--- a/Mage.Sets/src/mage/sets/LaunchParty.java
+++ b/Mage.Sets/src/mage/sets/LaunchParty.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class LaunchParty extends ExpansionSet {
+public final class LaunchParty extends ExpansionSet {
private static final LaunchParty instance = new LaunchParty();
diff --git a/Mage.Sets/src/mage/sets/Legends.java b/Mage.Sets/src/mage/sets/Legends.java
index 53af4fce9f1..ef549206ce7 100644
--- a/Mage.Sets/src/mage/sets/Legends.java
+++ b/Mage.Sets/src/mage/sets/Legends.java
@@ -1,320 +1,320 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class Legends extends ExpansionSet {
-
- private static final Legends instance = new Legends();
-
- public static Legends getInstance() {
- return instance;
- }
-
- private Legends() {
- super("Legends", "LEG", ExpansionSet.buildDate(1994, 6, 1), SetType.EXPANSION);
- 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("Abomination", 87, Rarity.UNCOMMON, mage.cards.a.Abomination.class));
- cards.add(new SetCardInfo("Acid Rain", 44, Rarity.RARE, mage.cards.a.AcidRain.class));
- cards.add(new SetCardInfo("Active Volcano", 130, Rarity.COMMON, mage.cards.a.ActiveVolcano.class));
- cards.add(new SetCardInfo("Adun Oakenshield", 216, Rarity.RARE, mage.cards.a.AdunOakenshield.class));
- cards.add(new SetCardInfo("Aerathi Berserker", 131, Rarity.UNCOMMON, mage.cards.a.AerathiBerserker.class));
- cards.add(new SetCardInfo("Aisling Leprechaun", 173, Rarity.COMMON, mage.cards.a.AislingLeprechaun.class));
- cards.add(new SetCardInfo("Akron Legionnaire", 1, Rarity.RARE, mage.cards.a.AkronLegionnaire.class));
- cards.add(new SetCardInfo("Al-abara's Carpet", 271, Rarity.RARE, mage.cards.a.AlAbarasCarpet.class));
- cards.add(new SetCardInfo("Alabaster Potion", 2, Rarity.COMMON, mage.cards.a.AlabasterPotion.class));
- cards.add(new SetCardInfo("Alchor's Tomb", 272, Rarity.RARE, mage.cards.a.AlchorsTomb.class));
- cards.add(new SetCardInfo("All Hallow's Eve", 88, Rarity.RARE, mage.cards.a.AllHallowsEve.class));
- cards.add(new SetCardInfo("Amrou Kithkin", 3, Rarity.COMMON, mage.cards.a.AmrouKithkin.class));
- cards.add(new SetCardInfo("Angelic Voices", 4, Rarity.RARE, mage.cards.a.AngelicVoices.class));
- cards.add(new SetCardInfo("Angus Mackenzie", 217, Rarity.RARE, mage.cards.a.AngusMackenzie.class));
- cards.add(new SetCardInfo("Anti-Magic Aura", 45, Rarity.COMMON, mage.cards.a.AntiMagicAura.class));
- cards.add(new SetCardInfo("Arboria", 174, Rarity.UNCOMMON, mage.cards.a.Arboria.class));
- cards.add(new SetCardInfo("Arcades Sabboth", 218, Rarity.RARE, mage.cards.a.ArcadesSabboth.class));
- cards.add(new SetCardInfo("Arena of the Ancients", 273, Rarity.RARE, mage.cards.a.ArenaOfTheAncients.class));
- cards.add(new SetCardInfo("Avoid Fate", 175, Rarity.COMMON, mage.cards.a.AvoidFate.class));
- cards.add(new SetCardInfo("Axelrod Gunnarson", 219, Rarity.RARE, mage.cards.a.AxelrodGunnarson.class));
- cards.add(new SetCardInfo("Ayesha Tanaka", 220, Rarity.RARE, mage.cards.a.AyeshaTanaka.class));
- cards.add(new SetCardInfo("Azure Drake", 46, Rarity.UNCOMMON, mage.cards.a.AzureDrake.class));
- cards.add(new SetCardInfo("Backfire", 47, Rarity.UNCOMMON, mage.cards.b.Backfire.class));
- cards.add(new SetCardInfo("Barbary Apes", 176, Rarity.COMMON, mage.cards.b.BarbaryApes.class));
- cards.add(new SetCardInfo("Barktooth Warbeard", 221, Rarity.UNCOMMON, mage.cards.b.BarktoothWarbeard.class));
- cards.add(new SetCardInfo("Bartel Runeaxe", 222, Rarity.RARE, mage.cards.b.BartelRuneaxe.class));
- cards.add(new SetCardInfo("Beasts of Bogardan", 133, Rarity.UNCOMMON, mage.cards.b.BeastsOfBogardan.class));
- cards.add(new SetCardInfo("Black Mana Battery", 274, Rarity.UNCOMMON, mage.cards.b.BlackManaBattery.class));
- cards.add(new SetCardInfo("Blight", 89, Rarity.UNCOMMON, mage.cards.b.Blight.class));
- cards.add(new SetCardInfo("Blood Lust", 135, Rarity.UNCOMMON, mage.cards.b.BloodLust.class));
- cards.add(new SetCardInfo("Blue Mana Battery", 275, Rarity.UNCOMMON, mage.cards.b.BlueManaBattery.class));
- cards.add(new SetCardInfo("Boomerang", 48, Rarity.COMMON, mage.cards.b.Boomerang.class));
- cards.add(new SetCardInfo("Boris Devilboon", 223, Rarity.RARE, mage.cards.b.BorisDevilboon.class));
- cards.add(new SetCardInfo("Carrion Ants", 90, Rarity.RARE, mage.cards.c.CarrionAnts.class));
- cards.add(new SetCardInfo("Cat Warriors", 177, Rarity.COMMON, mage.cards.c.CatWarriors.class));
- cards.add(new SetCardInfo("Caverns of Despair", 136, Rarity.RARE, mage.cards.c.CavernsOfDespair.class));
- cards.add(new SetCardInfo("Chain Lightning", 137, Rarity.COMMON, mage.cards.c.ChainLightning.class));
- cards.add(new SetCardInfo("Chains of Mephistopheles", 91, Rarity.RARE, mage.cards.c.ChainsOfMephistopheles.class));
- cards.add(new SetCardInfo("Chromium", 224, Rarity.RARE, mage.cards.c.Chromium.class));
- cards.add(new SetCardInfo("Cleanse", 5, Rarity.RARE, mage.cards.c.Cleanse.class));
- cards.add(new SetCardInfo("Clergy of the Holy Nimbus", 6, Rarity.COMMON, mage.cards.c.ClergyOfTheHolyNimbus.class));
- cards.add(new SetCardInfo("Concordant Crossroads", 179, Rarity.RARE, mage.cards.c.ConcordantCrossroads.class));
- cards.add(new SetCardInfo("Cosmic Horror", 92, Rarity.RARE, mage.cards.c.CosmicHorror.class));
- cards.add(new SetCardInfo("Craw Giant", 180, Rarity.UNCOMMON, mage.cards.c.CrawGiant.class));
- cards.add(new SetCardInfo("Crevasse", 138, Rarity.UNCOMMON, mage.cards.c.Crevasse.class));
- cards.add(new SetCardInfo("Crimson Kobolds", 139, Rarity.COMMON, mage.cards.c.CrimsonKobolds.class));
- cards.add(new SetCardInfo("Crimson Manticore", 140, Rarity.RARE, mage.cards.c.CrimsonManticore.class));
- cards.add(new SetCardInfo("Crookshank Kobolds", 141, Rarity.COMMON, mage.cards.c.CrookshankKobolds.class));
- cards.add(new SetCardInfo("Cyclopean Mummy", 93, Rarity.COMMON, mage.cards.c.CyclopeanMummy.class));
- cards.add(new SetCardInfo("D'Avenant Archer", 7, Rarity.COMMON, mage.cards.d.DAvenantArcher.class));
- cards.add(new SetCardInfo("Dakkon Blackblade", 225, Rarity.RARE, mage.cards.d.DakkonBlackblade.class));
- cards.add(new SetCardInfo("Darkness", 94, Rarity.COMMON, mage.cards.d.Darkness.class));
- cards.add(new SetCardInfo("Deadfall", 181, Rarity.UNCOMMON, mage.cards.d.Deadfall.class));
- cards.add(new SetCardInfo("Demonic Torment", 95, Rarity.UNCOMMON, mage.cards.d.DemonicTorment.class));
- cards.add(new SetCardInfo("Devouring Deep", 50, Rarity.COMMON, mage.cards.d.DevouringDeep.class));
- cards.add(new SetCardInfo("Disharmony", 142, Rarity.RARE, mage.cards.d.Disharmony.class));
- cards.add(new SetCardInfo("Divine Intervention", 8, Rarity.RARE, mage.cards.d.DivineIntervention.class));
- cards.add(new SetCardInfo("Divine Offering", 9, Rarity.COMMON, mage.cards.d.DivineOffering.class));
- cards.add(new SetCardInfo("Divine Transformation", 10, Rarity.RARE, mage.cards.d.DivineTransformation.class));
- cards.add(new SetCardInfo("Dream Coat", 51, Rarity.UNCOMMON, mage.cards.d.DreamCoat.class));
- cards.add(new SetCardInfo("Durkwood Boars", 182, Rarity.COMMON, mage.cards.d.DurkwoodBoars.class));
- cards.add(new SetCardInfo("Dwarven Song", 143, Rarity.UNCOMMON, mage.cards.d.DwarvenSong.class));
- cards.add(new SetCardInfo("Elder Land Wurm", 11, Rarity.RARE, mage.cards.e.ElderLandWurm.class));
- cards.add(new SetCardInfo("Elven Riders", 183, Rarity.RARE, mage.cards.e.ElvenRiders.class));
- cards.add(new SetCardInfo("Emerald Dragonfly", 184, Rarity.COMMON, mage.cards.e.EmeraldDragonfly.class));
- cards.add(new SetCardInfo("Energy Tap", 54, Rarity.COMMON, mage.cards.e.EnergyTap.class));
- cards.add(new SetCardInfo("Eternal Warrior", 144, Rarity.UNCOMMON, mage.cards.e.EternalWarrior.class));
- cards.add(new SetCardInfo("Eureka", 185, Rarity.RARE, mage.cards.e.Eureka.class));
- cards.add(new SetCardInfo("Evil Eye of Orms-by-Gore", 96, Rarity.UNCOMMON, mage.cards.e.EvilEyeOfOrmsByGore.class));
- cards.add(new SetCardInfo("Fallen Angel", 97, Rarity.UNCOMMON, mage.cards.f.FallenAngel.class));
- cards.add(new SetCardInfo("Field of Dreams", 55, Rarity.RARE, mage.cards.f.FieldOfDreams.class));
- cards.add(new SetCardInfo("Fire Sprites", 186, Rarity.COMMON, mage.cards.f.FireSprites.class));
- cards.add(new SetCardInfo("Flash Counter", 56, Rarity.COMMON, mage.cards.f.FlashCounter.class));
- cards.add(new SetCardInfo("Flash Flood", 57, Rarity.COMMON, mage.cards.f.FlashFlood.class));
- cards.add(new SetCardInfo("Floral Spuzzem", 187, Rarity.UNCOMMON, mage.cards.f.FloralSpuzzem.class));
- cards.add(new SetCardInfo("Force Spike", 58, Rarity.COMMON, mage.cards.f.ForceSpike.class));
- cards.add(new SetCardInfo("Fortified Area", 14, Rarity.UNCOMMON, mage.cards.f.FortifiedArea.class));
- cards.add(new SetCardInfo("Frost Giant", 148, Rarity.UNCOMMON, mage.cards.f.FrostGiant.class));
- cards.add(new SetCardInfo("Gabriel Angelfire", 226, Rarity.RARE, mage.cards.g.GabrielAngelfire.class));
- cards.add(new SetCardInfo("Gaseous Form", 59, Rarity.COMMON, mage.cards.g.GaseousForm.class));
- cards.add(new SetCardInfo("Gauntlets of Chaos", 278, Rarity.RARE, mage.cards.g.GauntletsOfChaos.class));
- cards.add(new SetCardInfo("Ghosts of the Damned", 98, Rarity.COMMON, mage.cards.g.GhostsOfTheDamned.class));
- cards.add(new SetCardInfo("Giant Strength", 149, Rarity.COMMON, mage.cards.g.GiantStrength.class));
- cards.add(new SetCardInfo("Giant Turtle", 188, Rarity.COMMON, mage.cards.g.GiantTurtle.class));
- cards.add(new SetCardInfo("Glyph of Destruction", 150, Rarity.COMMON, mage.cards.g.GlyphOfDestruction.class));
- cards.add(new SetCardInfo("Glyph of Doom", 100, Rarity.COMMON, mage.cards.g.GlyphOfDoom.class));
- cards.add(new SetCardInfo("Glyph of Life", 15, Rarity.COMMON, mage.cards.g.GlyphOfLife.class));
- cards.add(new SetCardInfo("Gosta Dirk", 227, Rarity.RARE, mage.cards.g.GostaDirk.class));
- cards.add(new SetCardInfo("Gravity Sphere", 151, Rarity.RARE, mage.cards.g.GravitySphere.class));
- cards.add(new SetCardInfo("Great Defender", 16, Rarity.UNCOMMON, mage.cards.g.GreatDefender.class));
- cards.add(new SetCardInfo("Great Wall", 17, Rarity.UNCOMMON, mage.cards.g.GreatWall.class));
- cards.add(new SetCardInfo("Greater Realm of Preservation", 18, Rarity.UNCOMMON, mage.cards.g.GreaterRealmOfPreservation.class));
- cards.add(new SetCardInfo("Greed", 101, Rarity.RARE, mage.cards.g.Greed.class));
- cards.add(new SetCardInfo("Green Mana Battery", 279, Rarity.UNCOMMON, mage.cards.g.GreenManaBattery.class));
- cards.add(new SetCardInfo("Gwendlyn Di Corci", 228, Rarity.RARE, mage.cards.g.GwendlynDiCorci.class));
- cards.add(new SetCardInfo("Halfdane", 229, Rarity.RARE, mage.cards.h.Halfdane.class));
- cards.add(new SetCardInfo("Hammerheim", 302, Rarity.UNCOMMON, mage.cards.h.Hammerheim.class));
- cards.add(new SetCardInfo("Hazezon Tamar", 230, Rarity.RARE, mage.cards.h.HazezonTamar.class));
- cards.add(new SetCardInfo("Headless Horseman", 102, Rarity.COMMON, mage.cards.h.HeadlessHorseman.class));
- cards.add(new SetCardInfo("Heaven's Gate", 19, Rarity.UNCOMMON, mage.cards.h.HeavensGate.class));
- cards.add(new SetCardInfo("Hell Swarm", 103, Rarity.COMMON, mage.cards.h.HellSwarm.class));
- cards.add(new SetCardInfo("Hell's Caretaker", 104, Rarity.RARE, mage.cards.h.HellsCaretaker.class));
- cards.add(new SetCardInfo("Hellfire", 105, Rarity.RARE, mage.cards.h.Hellfire.class));
- cards.add(new SetCardInfo("Holy Day", 20, Rarity.COMMON, mage.cards.h.HolyDay.class));
- cards.add(new SetCardInfo("Horn of Deafening", 280, Rarity.RARE, mage.cards.h.HornOfDeafening.class));
- cards.add(new SetCardInfo("Hornet Cobra", 190, Rarity.COMMON, mage.cards.h.HornetCobra.class));
- cards.add(new SetCardInfo("Horror of Horrors", 106, Rarity.UNCOMMON, mage.cards.h.HorrorOfHorrors.class));
- cards.add(new SetCardInfo("Hunding Gjornersen", 231, Rarity.UNCOMMON, mage.cards.h.HundingGjornersen.class));
- cards.add(new SetCardInfo("Hyperion Blacksmith", 152, Rarity.UNCOMMON, mage.cards.h.HyperionBlacksmith.class));
- cards.add(new SetCardInfo("Immolation", 153, Rarity.COMMON, mage.cards.i.Immolation.class));
- cards.add(new SetCardInfo("Imprison", 107, Rarity.RARE, mage.cards.i.Imprison.class));
- cards.add(new SetCardInfo("In the Eye of Chaos", 61, Rarity.RARE, mage.cards.i.InTheEyeOfChaos.class));
- cards.add(new SetCardInfo("Indestructible Aura", 21, Rarity.COMMON, mage.cards.i.IndestructibleAura.class));
- cards.add(new SetCardInfo("Infernal Medusa", 108, Rarity.UNCOMMON, mage.cards.i.InfernalMedusa.class));
- cards.add(new SetCardInfo("Invoke Prejudice", 62, Rarity.RARE, mage.cards.i.InvokePrejudice.class));
- cards.add(new SetCardInfo("Ivory Guardians", 23, Rarity.UNCOMMON, mage.cards.i.IvoryGuardians.class));
- cards.add(new SetCardInfo("Jacques le Vert", 232, Rarity.RARE, mage.cards.j.JacquesLeVert.class));
- cards.add(new SetCardInfo("Jasmine Boreal", 233, Rarity.UNCOMMON, mage.cards.j.JasmineBoreal.class));
- cards.add(new SetCardInfo("Jedit Ojanen", 234, Rarity.UNCOMMON, mage.cards.j.JeditOjanen.class));
- cards.add(new SetCardInfo("Jerrard of the Closed Fist", 235, Rarity.UNCOMMON, mage.cards.j.JerrardOfTheClosedFist.class));
- cards.add(new SetCardInfo("Johan", 236, Rarity.RARE, mage.cards.j.Johan.class));
- cards.add(new SetCardInfo("Jovial Evil", 109, Rarity.RARE, mage.cards.j.JovialEvil.class));
- cards.add(new SetCardInfo("Juxtapose", 63, Rarity.RARE, mage.cards.j.Juxtapose.class));
- cards.add(new SetCardInfo("Karakas", 303, Rarity.UNCOMMON, mage.cards.k.Karakas.class));
- cards.add(new SetCardInfo("Kasimir the Lone Wolf", 237, Rarity.UNCOMMON, mage.cards.k.KasimirTheLoneWolf.class));
- cards.add(new SetCardInfo("Keepers of the Faith", 24, Rarity.COMMON, mage.cards.k.KeepersOfTheFaith.class));
- cards.add(new SetCardInfo("Kei Takahashi", 238, Rarity.RARE, mage.cards.k.KeiTakahashi.class));
- cards.add(new SetCardInfo("Killer Bees", 192, Rarity.RARE, mage.cards.k.KillerBees.class));
- cards.add(new SetCardInfo("Kismet", 25, Rarity.UNCOMMON, mage.cards.k.Kismet.class));
- cards.add(new SetCardInfo("Kobold Drill Sergeant", 154, Rarity.UNCOMMON, mage.cards.k.KoboldDrillSergeant.class));
- cards.add(new SetCardInfo("Kobold Overlord", 155, Rarity.RARE, mage.cards.k.KoboldOverlord.class));
- cards.add(new SetCardInfo("Kobold Taskmaster", 156, Rarity.UNCOMMON, mage.cards.k.KoboldTaskmaster.class));
- cards.add(new SetCardInfo("Kobolds of Kher Keep", 157, Rarity.COMMON, mage.cards.k.KoboldsOfKherKeep.class));
- cards.add(new SetCardInfo("Lady Caleria", 239, Rarity.RARE, mage.cards.l.LadyCaleria.class));
- cards.add(new SetCardInfo("Lady Evangela", 240, Rarity.RARE, mage.cards.l.LadyEvangela.class));
- cards.add(new SetCardInfo("Lady Orca", 241, Rarity.UNCOMMON, mage.cards.l.LadyOrca.class));
- cards.add(new SetCardInfo("Land Equilibrium", 64, Rarity.RARE, mage.cards.l.LandEquilibrium.class));
- cards.add(new SetCardInfo("Land Tax", 26, Rarity.UNCOMMON, mage.cards.l.LandTax.class));
- cards.add(new SetCardInfo("Land's Edge", 158, Rarity.RARE, mage.cards.l.LandsEdge.class));
- cards.add(new SetCardInfo("Life Chisel", 283, Rarity.UNCOMMON, mage.cards.l.LifeChisel.class));
- cards.add(new SetCardInfo("Lifeblood", 27, Rarity.RARE, mage.cards.l.Lifeblood.class));
- cards.add(new SetCardInfo("Living Plane", 193, Rarity.RARE, mage.cards.l.LivingPlane.class));
- cards.add(new SetCardInfo("Livonya Silone", 242, Rarity.RARE, mage.cards.l.LivonyaSilone.class));
- cards.add(new SetCardInfo("Lord Magnus", 243, Rarity.UNCOMMON, mage.cards.l.LordMagnus.class));
- cards.add(new SetCardInfo("Lost Soul", 111, Rarity.COMMON, mage.cards.l.LostSoul.class));
- cards.add(new SetCardInfo("Mana Drain", 65, Rarity.UNCOMMON, mage.cards.m.ManaDrain.class));
- cards.add(new SetCardInfo("Mana Matrix", 285, Rarity.RARE, mage.cards.m.ManaMatrix.class));
- cards.add(new SetCardInfo("Marhault Elsdragon", 244, Rarity.UNCOMMON, mage.cards.m.MarhaultElsdragon.class));
- cards.add(new SetCardInfo("Mirror Universe", 287, Rarity.RARE, mage.cards.m.MirrorUniverse.class));
- cards.add(new SetCardInfo("Moat", 28, Rarity.RARE, mage.cards.m.Moat.class));
- cards.add(new SetCardInfo("Mold Demon", 112, Rarity.RARE, mage.cards.m.MoldDemon.class));
- cards.add(new SetCardInfo("Moss Monster", 195, Rarity.COMMON, mage.cards.m.MossMonster.class));
- cards.add(new SetCardInfo("Mountain Yeti", 159, Rarity.UNCOMMON, mage.cards.m.MountainYeti.class));
- cards.add(new SetCardInfo("Nebuchadnezzar", 245, Rarity.RARE, mage.cards.n.Nebuchadnezzar.class));
- cards.add(new SetCardInfo("Nether Void", 113, Rarity.RARE, mage.cards.n.NetherVoid.class));
- cards.add(new SetCardInfo("Nicol Bolas", 246, Rarity.RARE, mage.cards.n.NicolBolas.class));
- cards.add(new SetCardInfo("Nova Pentacle", 289, Rarity.RARE, mage.cards.n.NovaPentacle.class));
- cards.add(new SetCardInfo("Osai Vultures", 29, Rarity.COMMON, mage.cards.o.OsaiVultures.class));
- cards.add(new SetCardInfo("Palladia-Mors", 247, Rarity.RARE, mage.cards.p.PalladiaMors.class));
- cards.add(new SetCardInfo("Part Water", 66, Rarity.UNCOMMON, mage.cards.p.PartWater.class));
- cards.add(new SetCardInfo("Pavel Maliki", 248, Rarity.UNCOMMON, mage.cards.p.PavelMaliki.class));
- cards.add(new SetCardInfo("Pendelhaven", 305, Rarity.UNCOMMON, mage.cards.p.Pendelhaven.class));
- cards.add(new SetCardInfo("Petra Sphinx", 30, Rarity.RARE, mage.cards.p.PetraSphinx.class));
- cards.add(new SetCardInfo("Pit Scorpion", 114, Rarity.COMMON, mage.cards.p.PitScorpion.class));
- cards.add(new SetCardInfo("Pixie Queen", 196, Rarity.RARE, mage.cards.p.PixieQueen.class));
- cards.add(new SetCardInfo("Planar Gate", 290, Rarity.RARE, mage.cards.p.PlanarGate.class));
- cards.add(new SetCardInfo("Pradesh Gypsies", 197, Rarity.UNCOMMON, mage.cards.p.PradeshGypsies.class));
- cards.add(new SetCardInfo("Presence of the Master", 31, Rarity.UNCOMMON, mage.cards.p.PresenceOfTheMaster.class));
- cards.add(new SetCardInfo("Primordial Ooze", 160, Rarity.UNCOMMON, mage.cards.p.PrimordialOoze.class));
- cards.add(new SetCardInfo("Princess Lucrezia", 249, Rarity.UNCOMMON, mage.cards.p.PrincessLucrezia.class));
- cards.add(new SetCardInfo("Psionic Entity", 67, Rarity.RARE, mage.cards.p.PsionicEntity.class));
- cards.add(new SetCardInfo("Psychic Purge", 68, Rarity.COMMON, mage.cards.p.PsychicPurge.class));
- cards.add(new SetCardInfo("Pyrotechnics", 161, Rarity.COMMON, mage.cards.p.Pyrotechnics.class));
- cards.add(new SetCardInfo("Quagmire", 115, Rarity.UNCOMMON, mage.cards.q.Quagmire.class));
- cards.add(new SetCardInfo("Rabid Wombat", 198, Rarity.UNCOMMON, mage.cards.r.RabidWombat.class));
- cards.add(new SetCardInfo("Radjan Spirit", 199, Rarity.UNCOMMON, mage.cards.r.RadjanSpirit.class));
- cards.add(new SetCardInfo("Raging Bull", 163, Rarity.COMMON, mage.cards.r.RagingBull.class));
- cards.add(new SetCardInfo("Ragnar", 250, Rarity.RARE, mage.cards.r.Ragnar.class));
- cards.add(new SetCardInfo("Ramirez DePietro", 251, Rarity.UNCOMMON, mage.cards.r.RamirezDePietro.class));
- cards.add(new SetCardInfo("Ramses Overdark", 252, Rarity.RARE, mage.cards.r.RamsesOverdark.class));
- cards.add(new SetCardInfo("Rasputin Dreamweaver", 253, Rarity.RARE, mage.cards.r.RasputinDreamweaver.class));
- cards.add(new SetCardInfo("Recall", 70, Rarity.RARE, mage.cards.r.Recall.class));
- cards.add(new SetCardInfo("Red Mana Battery", 291, Rarity.UNCOMMON, mage.cards.r.RedManaBattery.class));
- cards.add(new SetCardInfo("Reincarnation", 201, Rarity.UNCOMMON, mage.cards.r.Reincarnation.class));
- cards.add(new SetCardInfo("Relic Barrier", 292, Rarity.UNCOMMON, mage.cards.r.RelicBarrier.class));
- cards.add(new SetCardInfo("Relic Bind", 71, Rarity.UNCOMMON, mage.cards.r.RelicBind.class));
- cards.add(new SetCardInfo("Remove Enchantments", 33, Rarity.COMMON, mage.cards.r.RemoveEnchantments.class));
- cards.add(new SetCardInfo("Remove Soul", 72, Rarity.COMMON, mage.cards.r.RemoveSoul.class));
- cards.add(new SetCardInfo("Reset", 73, Rarity.UNCOMMON, mage.cards.r.Reset.class));
- cards.add(new SetCardInfo("Revelation", 202, Rarity.RARE, mage.cards.r.Revelation.class));
- cards.add(new SetCardInfo("Righteous Avengers", 34, Rarity.UNCOMMON, mage.cards.r.RighteousAvengers.class));
- cards.add(new SetCardInfo("Ring of Immortals", 293, Rarity.RARE, mage.cards.r.RingOfImmortals.class));
- cards.add(new SetCardInfo("Riven Turnbull", 254, Rarity.UNCOMMON, mage.cards.r.RivenTurnbull.class));
- cards.add(new SetCardInfo("Rohgahh of Kher Keep", 255, Rarity.RARE, mage.cards.r.RohgahhOfKherKeep.class));
- cards.add(new SetCardInfo("Rubinia Soulsinger", 256, Rarity.RARE, mage.cards.r.RubiniaSoulsinger.class));
- cards.add(new SetCardInfo("Rust", 203, Rarity.COMMON, mage.cards.r.Rust.class));
- cards.add(new SetCardInfo("Sea Kings' Blessing", 75, Rarity.UNCOMMON, mage.cards.s.SeaKingsBlessing.class));
- cards.add(new SetCardInfo("Seeker", 35, Rarity.UNCOMMON, mage.cards.s.Seeker.class));
- cards.add(new SetCardInfo("Segovian Leviathan", 76, Rarity.UNCOMMON, mage.cards.s.SegovianLeviathan.class));
- cards.add(new SetCardInfo("Sentinel", 294, Rarity.RARE, mage.cards.s.Sentinel.class));
- cards.add(new SetCardInfo("Serpent Generator", 295, Rarity.RARE, mage.cards.s.SerpentGenerator.class));
- cards.add(new SetCardInfo("Shield Wall", 36, Rarity.UNCOMMON, mage.cards.s.ShieldWall.class));
- cards.add(new SetCardInfo("Shimian Night Stalker", 116, Rarity.UNCOMMON, mage.cards.s.ShimianNightStalker.class));
- cards.add(new SetCardInfo("Sir Shandlar of Eberyn", 257, Rarity.UNCOMMON, mage.cards.s.SirShandlarOfEberyn.class));
- cards.add(new SetCardInfo("Sivitri Scarzam", 258, Rarity.UNCOMMON, mage.cards.s.SivitriScarzam.class));
- cards.add(new SetCardInfo("Sol'kanar the Swamp King", 259, Rarity.RARE, mage.cards.s.SolkanarTheSwampKing.class));
- cards.add(new SetCardInfo("Spectral Cloak", 78, Rarity.UNCOMMON, mage.cards.s.SpectralCloak.class));
- cards.add(new SetCardInfo("Spinal Villain", 164, Rarity.RARE, mage.cards.s.SpinalVillain.class));
- cards.add(new SetCardInfo("Spirit Link", 37, Rarity.UNCOMMON, mage.cards.s.SpiritLink.class));
- cards.add(new SetCardInfo("Spirit Shackle", 117, Rarity.COMMON, mage.cards.s.SpiritShackle.class));
- cards.add(new SetCardInfo("Stangg", 260, Rarity.RARE, mage.cards.s.Stangg.class));
- cards.add(new SetCardInfo("Storm Seeker", 205, Rarity.UNCOMMON, mage.cards.s.StormSeeker.class));
- cards.add(new SetCardInfo("Storm World", 165, Rarity.RARE, mage.cards.s.StormWorld.class));
- cards.add(new SetCardInfo("Sunastian Falconer", 261, Rarity.UNCOMMON, mage.cards.s.SunastianFalconer.class));
- cards.add(new SetCardInfo("Sword of the Ages", 296, Rarity.RARE, mage.cards.s.SwordOfTheAges.class));
- cards.add(new SetCardInfo("Sylvan Library", 207, Rarity.UNCOMMON, mage.cards.s.SylvanLibrary.class));
- cards.add(new SetCardInfo("Sylvan Paradise", 208, Rarity.UNCOMMON, mage.cards.s.SylvanParadise.class));
- cards.add(new SetCardInfo("Syphon Soul", 118, Rarity.COMMON, mage.cards.s.SyphonSoul.class));
- cards.add(new SetCardInfo("Telekinesis", 79, Rarity.RARE, mage.cards.t.Telekinesis.class));
- cards.add(new SetCardInfo("Teleport", 80, Rarity.RARE, mage.cards.t.Teleport.class));
- cards.add(new SetCardInfo("Tetsuo Umezawa", 262, Rarity.RARE, mage.cards.t.TetsuoUmezawa.class));
- cards.add(new SetCardInfo("The Abyss", 120, Rarity.RARE, mage.cards.t.TheAbyss.class));
- cards.add(new SetCardInfo("The Brute", 167, Rarity.COMMON, mage.cards.t.TheBrute.class));
- cards.add(new SetCardInfo("The Lady of the Mountain", 263, Rarity.UNCOMMON, mage.cards.t.TheLadyOfTheMountain.class));
- cards.add(new SetCardInfo("The Tabernacle at Pendrell Vale", 307, Rarity.RARE, mage.cards.t.TheTabernacleAtPendrellVale.class));
- cards.add(new SetCardInfo("The Wretched", 121, Rarity.RARE, mage.cards.t.TheWretched.class));
- cards.add(new SetCardInfo("Thunder Spirit", 39, Rarity.RARE, mage.cards.t.ThunderSpirit.class));
- cards.add(new SetCardInfo("Time Elemental", 81, Rarity.RARE, mage.cards.t.TimeElemental.class));
- cards.add(new SetCardInfo("Tobias Andrion", 264, Rarity.UNCOMMON, mage.cards.t.TobiasAndrion.class));
- cards.add(new SetCardInfo("Tor Wauki", 265, Rarity.UNCOMMON, mage.cards.t.TorWauki.class));
- cards.add(new SetCardInfo("Torsten Von Ursus", 266, Rarity.UNCOMMON, mage.cards.t.TorstenVonUrsus.class));
- cards.add(new SetCardInfo("Touch of Darkness", 122, Rarity.UNCOMMON, mage.cards.t.TouchOfDarkness.class));
- cards.add(new SetCardInfo("Transmutation", 123, Rarity.COMMON, mage.cards.t.Transmutation.class));
- cards.add(new SetCardInfo("Triassic Egg", 297, Rarity.RARE, mage.cards.t.TriassicEgg.class));
- cards.add(new SetCardInfo("Tuknir Deathlock", 267, Rarity.RARE, mage.cards.t.TuknirDeathlock.class));
- cards.add(new SetCardInfo("Tundra Wolves", 40, Rarity.COMMON, mage.cards.t.TundraWolves.class));
- cards.add(new SetCardInfo("Typhoon", 209, Rarity.RARE, mage.cards.t.Typhoon.class));
- cards.add(new SetCardInfo("Undertow", 82, Rarity.UNCOMMON, mage.cards.u.Undertow.class));
- cards.add(new SetCardInfo("Underworld Dreams", 124, Rarity.UNCOMMON, mage.cards.u.UnderworldDreams.class));
- cards.add(new SetCardInfo("Untamed Wilds", 210, Rarity.UNCOMMON, mage.cards.u.UntamedWilds.class));
- cards.add(new SetCardInfo("Ur-Drago", 268, Rarity.RARE, mage.cards.u.UrDrago.class));
- cards.add(new SetCardInfo("Urborg", 310, Rarity.UNCOMMON, mage.cards.u.Urborg.class));
- cards.add(new SetCardInfo("Vaevictis Asmadi", 269, Rarity.RARE, mage.cards.v.VaevictisAsmadi.class));
- cards.add(new SetCardInfo("Vampire Bats", 125, Rarity.COMMON, mage.cards.v.VampireBats.class));
- cards.add(new SetCardInfo("Visions", 41, Rarity.UNCOMMON, mage.cards.v.Visions.class));
- cards.add(new SetCardInfo("Walking Dead", 126, Rarity.COMMON, mage.cards.w.WalkingDead.class));
- cards.add(new SetCardInfo("Wall of Caltrops", 42, Rarity.COMMON, mage.cards.w.WallOfCaltrops.class));
- cards.add(new SetCardInfo("Wall of Dust", 168, Rarity.UNCOMMON, mage.cards.w.WallOfDust.class));
- cards.add(new SetCardInfo("Wall of Earth", 169, Rarity.COMMON, mage.cards.w.WallOfEarth.class));
- cards.add(new SetCardInfo("Wall of Heat", 170, Rarity.COMMON, mage.cards.w.WallOfHeat.class));
- cards.add(new SetCardInfo("Wall of Light", 43, Rarity.UNCOMMON, mage.cards.w.WallOfLight.class));
- cards.add(new SetCardInfo("Wall of Opposition", 171, Rarity.RARE, mage.cards.w.WallOfOpposition.class));
- cards.add(new SetCardInfo("Wall of Putrid Flesh", 127, Rarity.UNCOMMON, mage.cards.w.WallOfPutridFlesh.class));
- cards.add(new SetCardInfo("Wall of Vapor", 84, Rarity.COMMON, mage.cards.w.WallOfVapor.class));
- cards.add(new SetCardInfo("Wall of Wonder", 85, Rarity.UNCOMMON, mage.cards.w.WallOfWonder.class));
- cards.add(new SetCardInfo("Whirling Dervish", 211, Rarity.UNCOMMON, mage.cards.w.WhirlingDervish.class));
- cards.add(new SetCardInfo("White Mana Battery", 299, Rarity.UNCOMMON, mage.cards.w.WhiteManaBattery.class));
- cards.add(new SetCardInfo("Willow Satyr", 212, Rarity.RARE, mage.cards.w.WillowSatyr.class));
- cards.add(new SetCardInfo("Winds of Change", 172, Rarity.UNCOMMON, mage.cards.w.WindsOfChange.class));
- cards.add(new SetCardInfo("Winter Blast", 213, Rarity.RARE, mage.cards.w.WinterBlast.class));
- cards.add(new SetCardInfo("Wolverine Pack", 214, Rarity.COMMON, mage.cards.w.WolverinePack.class));
- cards.add(new SetCardInfo("Wood Elemental", 215, Rarity.RARE, mage.cards.w.WoodElemental.class));
- cards.add(new SetCardInfo("Xira Arien", 270, Rarity.RARE, mage.cards.x.XiraArien.class));
- cards.add(new SetCardInfo("Zephyr Falcon", 86, Rarity.COMMON, mage.cards.z.ZephyrFalcon.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Legends extends ExpansionSet {
+
+ private static final Legends instance = new Legends();
+
+ public static Legends getInstance() {
+ return instance;
+ }
+
+ private Legends() {
+ super("Legends", "LEG", ExpansionSet.buildDate(1994, 6, 1), SetType.EXPANSION);
+ 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("Abomination", 87, Rarity.UNCOMMON, mage.cards.a.Abomination.class));
+ cards.add(new SetCardInfo("Acid Rain", 44, Rarity.RARE, mage.cards.a.AcidRain.class));
+ cards.add(new SetCardInfo("Active Volcano", 130, Rarity.COMMON, mage.cards.a.ActiveVolcano.class));
+ cards.add(new SetCardInfo("Adun Oakenshield", 216, Rarity.RARE, mage.cards.a.AdunOakenshield.class));
+ cards.add(new SetCardInfo("Aerathi Berserker", 131, Rarity.UNCOMMON, mage.cards.a.AerathiBerserker.class));
+ cards.add(new SetCardInfo("Aisling Leprechaun", 173, Rarity.COMMON, mage.cards.a.AislingLeprechaun.class));
+ cards.add(new SetCardInfo("Akron Legionnaire", 1, Rarity.RARE, mage.cards.a.AkronLegionnaire.class));
+ cards.add(new SetCardInfo("Al-abara's Carpet", 271, Rarity.RARE, mage.cards.a.AlAbarasCarpet.class));
+ cards.add(new SetCardInfo("Alabaster Potion", 2, Rarity.COMMON, mage.cards.a.AlabasterPotion.class));
+ cards.add(new SetCardInfo("Alchor's Tomb", 272, Rarity.RARE, mage.cards.a.AlchorsTomb.class));
+ cards.add(new SetCardInfo("All Hallow's Eve", 88, Rarity.RARE, mage.cards.a.AllHallowsEve.class));
+ cards.add(new SetCardInfo("Amrou Kithkin", 3, Rarity.COMMON, mage.cards.a.AmrouKithkin.class));
+ cards.add(new SetCardInfo("Angelic Voices", 4, Rarity.RARE, mage.cards.a.AngelicVoices.class));
+ cards.add(new SetCardInfo("Angus Mackenzie", 217, Rarity.RARE, mage.cards.a.AngusMackenzie.class));
+ cards.add(new SetCardInfo("Anti-Magic Aura", 45, Rarity.COMMON, mage.cards.a.AntiMagicAura.class));
+ cards.add(new SetCardInfo("Arboria", 174, Rarity.UNCOMMON, mage.cards.a.Arboria.class));
+ cards.add(new SetCardInfo("Arcades Sabboth", 218, Rarity.RARE, mage.cards.a.ArcadesSabboth.class));
+ cards.add(new SetCardInfo("Arena of the Ancients", 273, Rarity.RARE, mage.cards.a.ArenaOfTheAncients.class));
+ cards.add(new SetCardInfo("Avoid Fate", 175, Rarity.COMMON, mage.cards.a.AvoidFate.class));
+ cards.add(new SetCardInfo("Axelrod Gunnarson", 219, Rarity.RARE, mage.cards.a.AxelrodGunnarson.class));
+ cards.add(new SetCardInfo("Ayesha Tanaka", 220, Rarity.RARE, mage.cards.a.AyeshaTanaka.class));
+ cards.add(new SetCardInfo("Azure Drake", 46, Rarity.UNCOMMON, mage.cards.a.AzureDrake.class));
+ cards.add(new SetCardInfo("Backfire", 47, Rarity.UNCOMMON, mage.cards.b.Backfire.class));
+ cards.add(new SetCardInfo("Barbary Apes", 176, Rarity.COMMON, mage.cards.b.BarbaryApes.class));
+ cards.add(new SetCardInfo("Barktooth Warbeard", 221, Rarity.UNCOMMON, mage.cards.b.BarktoothWarbeard.class));
+ cards.add(new SetCardInfo("Bartel Runeaxe", 222, Rarity.RARE, mage.cards.b.BartelRuneaxe.class));
+ cards.add(new SetCardInfo("Beasts of Bogardan", 133, Rarity.UNCOMMON, mage.cards.b.BeastsOfBogardan.class));
+ cards.add(new SetCardInfo("Black Mana Battery", 274, Rarity.UNCOMMON, mage.cards.b.BlackManaBattery.class));
+ cards.add(new SetCardInfo("Blight", 89, Rarity.UNCOMMON, mage.cards.b.Blight.class));
+ cards.add(new SetCardInfo("Blood Lust", 135, Rarity.UNCOMMON, mage.cards.b.BloodLust.class));
+ cards.add(new SetCardInfo("Blue Mana Battery", 275, Rarity.UNCOMMON, mage.cards.b.BlueManaBattery.class));
+ cards.add(new SetCardInfo("Boomerang", 48, Rarity.COMMON, mage.cards.b.Boomerang.class));
+ cards.add(new SetCardInfo("Boris Devilboon", 223, Rarity.RARE, mage.cards.b.BorisDevilboon.class));
+ cards.add(new SetCardInfo("Carrion Ants", 90, Rarity.RARE, mage.cards.c.CarrionAnts.class));
+ cards.add(new SetCardInfo("Cat Warriors", 177, Rarity.COMMON, mage.cards.c.CatWarriors.class));
+ cards.add(new SetCardInfo("Caverns of Despair", 136, Rarity.RARE, mage.cards.c.CavernsOfDespair.class));
+ cards.add(new SetCardInfo("Chain Lightning", 137, Rarity.COMMON, mage.cards.c.ChainLightning.class));
+ cards.add(new SetCardInfo("Chains of Mephistopheles", 91, Rarity.RARE, mage.cards.c.ChainsOfMephistopheles.class));
+ cards.add(new SetCardInfo("Chromium", 224, Rarity.RARE, mage.cards.c.Chromium.class));
+ cards.add(new SetCardInfo("Cleanse", 5, Rarity.RARE, mage.cards.c.Cleanse.class));
+ cards.add(new SetCardInfo("Clergy of the Holy Nimbus", 6, Rarity.COMMON, mage.cards.c.ClergyOfTheHolyNimbus.class));
+ cards.add(new SetCardInfo("Concordant Crossroads", 179, Rarity.RARE, mage.cards.c.ConcordantCrossroads.class));
+ cards.add(new SetCardInfo("Cosmic Horror", 92, Rarity.RARE, mage.cards.c.CosmicHorror.class));
+ cards.add(new SetCardInfo("Craw Giant", 180, Rarity.UNCOMMON, mage.cards.c.CrawGiant.class));
+ cards.add(new SetCardInfo("Crevasse", 138, Rarity.UNCOMMON, mage.cards.c.Crevasse.class));
+ cards.add(new SetCardInfo("Crimson Kobolds", 139, Rarity.COMMON, mage.cards.c.CrimsonKobolds.class));
+ cards.add(new SetCardInfo("Crimson Manticore", 140, Rarity.RARE, mage.cards.c.CrimsonManticore.class));
+ cards.add(new SetCardInfo("Crookshank Kobolds", 141, Rarity.COMMON, mage.cards.c.CrookshankKobolds.class));
+ cards.add(new SetCardInfo("Cyclopean Mummy", 93, Rarity.COMMON, mage.cards.c.CyclopeanMummy.class));
+ cards.add(new SetCardInfo("D'Avenant Archer", 7, Rarity.COMMON, mage.cards.d.DAvenantArcher.class));
+ cards.add(new SetCardInfo("Dakkon Blackblade", 225, Rarity.RARE, mage.cards.d.DakkonBlackblade.class));
+ cards.add(new SetCardInfo("Darkness", 94, Rarity.COMMON, mage.cards.d.Darkness.class));
+ cards.add(new SetCardInfo("Deadfall", 181, Rarity.UNCOMMON, mage.cards.d.Deadfall.class));
+ cards.add(new SetCardInfo("Demonic Torment", 95, Rarity.UNCOMMON, mage.cards.d.DemonicTorment.class));
+ cards.add(new SetCardInfo("Devouring Deep", 50, Rarity.COMMON, mage.cards.d.DevouringDeep.class));
+ cards.add(new SetCardInfo("Disharmony", 142, Rarity.RARE, mage.cards.d.Disharmony.class));
+ cards.add(new SetCardInfo("Divine Intervention", 8, Rarity.RARE, mage.cards.d.DivineIntervention.class));
+ cards.add(new SetCardInfo("Divine Offering", 9, Rarity.COMMON, mage.cards.d.DivineOffering.class));
+ cards.add(new SetCardInfo("Divine Transformation", 10, Rarity.RARE, mage.cards.d.DivineTransformation.class));
+ cards.add(new SetCardInfo("Dream Coat", 51, Rarity.UNCOMMON, mage.cards.d.DreamCoat.class));
+ cards.add(new SetCardInfo("Durkwood Boars", 182, Rarity.COMMON, mage.cards.d.DurkwoodBoars.class));
+ cards.add(new SetCardInfo("Dwarven Song", 143, Rarity.UNCOMMON, mage.cards.d.DwarvenSong.class));
+ cards.add(new SetCardInfo("Elder Land Wurm", 11, Rarity.RARE, mage.cards.e.ElderLandWurm.class));
+ cards.add(new SetCardInfo("Elven Riders", 183, Rarity.RARE, mage.cards.e.ElvenRiders.class));
+ cards.add(new SetCardInfo("Emerald Dragonfly", 184, Rarity.COMMON, mage.cards.e.EmeraldDragonfly.class));
+ cards.add(new SetCardInfo("Energy Tap", 54, Rarity.COMMON, mage.cards.e.EnergyTap.class));
+ cards.add(new SetCardInfo("Eternal Warrior", 144, Rarity.UNCOMMON, mage.cards.e.EternalWarrior.class));
+ cards.add(new SetCardInfo("Eureka", 185, Rarity.RARE, mage.cards.e.Eureka.class));
+ cards.add(new SetCardInfo("Evil Eye of Orms-by-Gore", 96, Rarity.UNCOMMON, mage.cards.e.EvilEyeOfOrmsByGore.class));
+ cards.add(new SetCardInfo("Fallen Angel", 97, Rarity.UNCOMMON, mage.cards.f.FallenAngel.class));
+ cards.add(new SetCardInfo("Field of Dreams", 55, Rarity.RARE, mage.cards.f.FieldOfDreams.class));
+ cards.add(new SetCardInfo("Fire Sprites", 186, Rarity.COMMON, mage.cards.f.FireSprites.class));
+ cards.add(new SetCardInfo("Flash Counter", 56, Rarity.COMMON, mage.cards.f.FlashCounter.class));
+ cards.add(new SetCardInfo("Flash Flood", 57, Rarity.COMMON, mage.cards.f.FlashFlood.class));
+ cards.add(new SetCardInfo("Floral Spuzzem", 187, Rarity.UNCOMMON, mage.cards.f.FloralSpuzzem.class));
+ cards.add(new SetCardInfo("Force Spike", 58, Rarity.COMMON, mage.cards.f.ForceSpike.class));
+ cards.add(new SetCardInfo("Fortified Area", 14, Rarity.UNCOMMON, mage.cards.f.FortifiedArea.class));
+ cards.add(new SetCardInfo("Frost Giant", 148, Rarity.UNCOMMON, mage.cards.f.FrostGiant.class));
+ cards.add(new SetCardInfo("Gabriel Angelfire", 226, Rarity.RARE, mage.cards.g.GabrielAngelfire.class));
+ cards.add(new SetCardInfo("Gaseous Form", 59, Rarity.COMMON, mage.cards.g.GaseousForm.class));
+ cards.add(new SetCardInfo("Gauntlets of Chaos", 278, Rarity.RARE, mage.cards.g.GauntletsOfChaos.class));
+ cards.add(new SetCardInfo("Ghosts of the Damned", 98, Rarity.COMMON, mage.cards.g.GhostsOfTheDamned.class));
+ cards.add(new SetCardInfo("Giant Strength", 149, Rarity.COMMON, mage.cards.g.GiantStrength.class));
+ cards.add(new SetCardInfo("Giant Turtle", 188, Rarity.COMMON, mage.cards.g.GiantTurtle.class));
+ cards.add(new SetCardInfo("Glyph of Destruction", 150, Rarity.COMMON, mage.cards.g.GlyphOfDestruction.class));
+ cards.add(new SetCardInfo("Glyph of Doom", 100, Rarity.COMMON, mage.cards.g.GlyphOfDoom.class));
+ cards.add(new SetCardInfo("Glyph of Life", 15, Rarity.COMMON, mage.cards.g.GlyphOfLife.class));
+ cards.add(new SetCardInfo("Gosta Dirk", 227, Rarity.RARE, mage.cards.g.GostaDirk.class));
+ cards.add(new SetCardInfo("Gravity Sphere", 151, Rarity.RARE, mage.cards.g.GravitySphere.class));
+ cards.add(new SetCardInfo("Great Defender", 16, Rarity.UNCOMMON, mage.cards.g.GreatDefender.class));
+ cards.add(new SetCardInfo("Great Wall", 17, Rarity.UNCOMMON, mage.cards.g.GreatWall.class));
+ cards.add(new SetCardInfo("Greater Realm of Preservation", 18, Rarity.UNCOMMON, mage.cards.g.GreaterRealmOfPreservation.class));
+ cards.add(new SetCardInfo("Greed", 101, Rarity.RARE, mage.cards.g.Greed.class));
+ cards.add(new SetCardInfo("Green Mana Battery", 279, Rarity.UNCOMMON, mage.cards.g.GreenManaBattery.class));
+ cards.add(new SetCardInfo("Gwendlyn Di Corci", 228, Rarity.RARE, mage.cards.g.GwendlynDiCorci.class));
+ cards.add(new SetCardInfo("Halfdane", 229, Rarity.RARE, mage.cards.h.Halfdane.class));
+ cards.add(new SetCardInfo("Hammerheim", 302, Rarity.UNCOMMON, mage.cards.h.Hammerheim.class));
+ cards.add(new SetCardInfo("Hazezon Tamar", 230, Rarity.RARE, mage.cards.h.HazezonTamar.class));
+ cards.add(new SetCardInfo("Headless Horseman", 102, Rarity.COMMON, mage.cards.h.HeadlessHorseman.class));
+ cards.add(new SetCardInfo("Heaven's Gate", 19, Rarity.UNCOMMON, mage.cards.h.HeavensGate.class));
+ cards.add(new SetCardInfo("Hell Swarm", 103, Rarity.COMMON, mage.cards.h.HellSwarm.class));
+ cards.add(new SetCardInfo("Hell's Caretaker", 104, Rarity.RARE, mage.cards.h.HellsCaretaker.class));
+ cards.add(new SetCardInfo("Hellfire", 105, Rarity.RARE, mage.cards.h.Hellfire.class));
+ cards.add(new SetCardInfo("Holy Day", 20, Rarity.COMMON, mage.cards.h.HolyDay.class));
+ cards.add(new SetCardInfo("Horn of Deafening", 280, Rarity.RARE, mage.cards.h.HornOfDeafening.class));
+ cards.add(new SetCardInfo("Hornet Cobra", 190, Rarity.COMMON, mage.cards.h.HornetCobra.class));
+ cards.add(new SetCardInfo("Horror of Horrors", 106, Rarity.UNCOMMON, mage.cards.h.HorrorOfHorrors.class));
+ cards.add(new SetCardInfo("Hunding Gjornersen", 231, Rarity.UNCOMMON, mage.cards.h.HundingGjornersen.class));
+ cards.add(new SetCardInfo("Hyperion Blacksmith", 152, Rarity.UNCOMMON, mage.cards.h.HyperionBlacksmith.class));
+ cards.add(new SetCardInfo("Immolation", 153, Rarity.COMMON, mage.cards.i.Immolation.class));
+ cards.add(new SetCardInfo("Imprison", 107, Rarity.RARE, mage.cards.i.Imprison.class));
+ cards.add(new SetCardInfo("In the Eye of Chaos", 61, Rarity.RARE, mage.cards.i.InTheEyeOfChaos.class));
+ cards.add(new SetCardInfo("Indestructible Aura", 21, Rarity.COMMON, mage.cards.i.IndestructibleAura.class));
+ cards.add(new SetCardInfo("Infernal Medusa", 108, Rarity.UNCOMMON, mage.cards.i.InfernalMedusa.class));
+ cards.add(new SetCardInfo("Invoke Prejudice", 62, Rarity.RARE, mage.cards.i.InvokePrejudice.class));
+ cards.add(new SetCardInfo("Ivory Guardians", 23, Rarity.UNCOMMON, mage.cards.i.IvoryGuardians.class));
+ cards.add(new SetCardInfo("Jacques le Vert", 232, Rarity.RARE, mage.cards.j.JacquesLeVert.class));
+ cards.add(new SetCardInfo("Jasmine Boreal", 233, Rarity.UNCOMMON, mage.cards.j.JasmineBoreal.class));
+ cards.add(new SetCardInfo("Jedit Ojanen", 234, Rarity.UNCOMMON, mage.cards.j.JeditOjanen.class));
+ cards.add(new SetCardInfo("Jerrard of the Closed Fist", 235, Rarity.UNCOMMON, mage.cards.j.JerrardOfTheClosedFist.class));
+ cards.add(new SetCardInfo("Johan", 236, Rarity.RARE, mage.cards.j.Johan.class));
+ cards.add(new SetCardInfo("Jovial Evil", 109, Rarity.RARE, mage.cards.j.JovialEvil.class));
+ cards.add(new SetCardInfo("Juxtapose", 63, Rarity.RARE, mage.cards.j.Juxtapose.class));
+ cards.add(new SetCardInfo("Karakas", 303, Rarity.UNCOMMON, mage.cards.k.Karakas.class));
+ cards.add(new SetCardInfo("Kasimir the Lone Wolf", 237, Rarity.UNCOMMON, mage.cards.k.KasimirTheLoneWolf.class));
+ cards.add(new SetCardInfo("Keepers of the Faith", 24, Rarity.COMMON, mage.cards.k.KeepersOfTheFaith.class));
+ cards.add(new SetCardInfo("Kei Takahashi", 238, Rarity.RARE, mage.cards.k.KeiTakahashi.class));
+ cards.add(new SetCardInfo("Killer Bees", 192, Rarity.RARE, mage.cards.k.KillerBees.class));
+ cards.add(new SetCardInfo("Kismet", 25, Rarity.UNCOMMON, mage.cards.k.Kismet.class));
+ cards.add(new SetCardInfo("Kobold Drill Sergeant", 154, Rarity.UNCOMMON, mage.cards.k.KoboldDrillSergeant.class));
+ cards.add(new SetCardInfo("Kobold Overlord", 155, Rarity.RARE, mage.cards.k.KoboldOverlord.class));
+ cards.add(new SetCardInfo("Kobold Taskmaster", 156, Rarity.UNCOMMON, mage.cards.k.KoboldTaskmaster.class));
+ cards.add(new SetCardInfo("Kobolds of Kher Keep", 157, Rarity.COMMON, mage.cards.k.KoboldsOfKherKeep.class));
+ cards.add(new SetCardInfo("Lady Caleria", 239, Rarity.RARE, mage.cards.l.LadyCaleria.class));
+ cards.add(new SetCardInfo("Lady Evangela", 240, Rarity.RARE, mage.cards.l.LadyEvangela.class));
+ cards.add(new SetCardInfo("Lady Orca", 241, Rarity.UNCOMMON, mage.cards.l.LadyOrca.class));
+ cards.add(new SetCardInfo("Land Equilibrium", 64, Rarity.RARE, mage.cards.l.LandEquilibrium.class));
+ cards.add(new SetCardInfo("Land Tax", 26, Rarity.UNCOMMON, mage.cards.l.LandTax.class));
+ cards.add(new SetCardInfo("Land's Edge", 158, Rarity.RARE, mage.cards.l.LandsEdge.class));
+ cards.add(new SetCardInfo("Life Chisel", 283, Rarity.UNCOMMON, mage.cards.l.LifeChisel.class));
+ cards.add(new SetCardInfo("Lifeblood", 27, Rarity.RARE, mage.cards.l.Lifeblood.class));
+ cards.add(new SetCardInfo("Living Plane", 193, Rarity.RARE, mage.cards.l.LivingPlane.class));
+ cards.add(new SetCardInfo("Livonya Silone", 242, Rarity.RARE, mage.cards.l.LivonyaSilone.class));
+ cards.add(new SetCardInfo("Lord Magnus", 243, Rarity.UNCOMMON, mage.cards.l.LordMagnus.class));
+ cards.add(new SetCardInfo("Lost Soul", 111, Rarity.COMMON, mage.cards.l.LostSoul.class));
+ cards.add(new SetCardInfo("Mana Drain", 65, Rarity.UNCOMMON, mage.cards.m.ManaDrain.class));
+ cards.add(new SetCardInfo("Mana Matrix", 285, Rarity.RARE, mage.cards.m.ManaMatrix.class));
+ cards.add(new SetCardInfo("Marhault Elsdragon", 244, Rarity.UNCOMMON, mage.cards.m.MarhaultElsdragon.class));
+ cards.add(new SetCardInfo("Mirror Universe", 287, Rarity.RARE, mage.cards.m.MirrorUniverse.class));
+ cards.add(new SetCardInfo("Moat", 28, Rarity.RARE, mage.cards.m.Moat.class));
+ cards.add(new SetCardInfo("Mold Demon", 112, Rarity.RARE, mage.cards.m.MoldDemon.class));
+ cards.add(new SetCardInfo("Moss Monster", 195, Rarity.COMMON, mage.cards.m.MossMonster.class));
+ cards.add(new SetCardInfo("Mountain Yeti", 159, Rarity.UNCOMMON, mage.cards.m.MountainYeti.class));
+ cards.add(new SetCardInfo("Nebuchadnezzar", 245, Rarity.RARE, mage.cards.n.Nebuchadnezzar.class));
+ cards.add(new SetCardInfo("Nether Void", 113, Rarity.RARE, mage.cards.n.NetherVoid.class));
+ cards.add(new SetCardInfo("Nicol Bolas", 246, Rarity.RARE, mage.cards.n.NicolBolas.class));
+ cards.add(new SetCardInfo("Nova Pentacle", 289, Rarity.RARE, mage.cards.n.NovaPentacle.class));
+ cards.add(new SetCardInfo("Osai Vultures", 29, Rarity.COMMON, mage.cards.o.OsaiVultures.class));
+ cards.add(new SetCardInfo("Palladia-Mors", 247, Rarity.RARE, mage.cards.p.PalladiaMors.class));
+ cards.add(new SetCardInfo("Part Water", 66, Rarity.UNCOMMON, mage.cards.p.PartWater.class));
+ cards.add(new SetCardInfo("Pavel Maliki", 248, Rarity.UNCOMMON, mage.cards.p.PavelMaliki.class));
+ cards.add(new SetCardInfo("Pendelhaven", 305, Rarity.UNCOMMON, mage.cards.p.Pendelhaven.class));
+ cards.add(new SetCardInfo("Petra Sphinx", 30, Rarity.RARE, mage.cards.p.PetraSphinx.class));
+ cards.add(new SetCardInfo("Pit Scorpion", 114, Rarity.COMMON, mage.cards.p.PitScorpion.class));
+ cards.add(new SetCardInfo("Pixie Queen", 196, Rarity.RARE, mage.cards.p.PixieQueen.class));
+ cards.add(new SetCardInfo("Planar Gate", 290, Rarity.RARE, mage.cards.p.PlanarGate.class));
+ cards.add(new SetCardInfo("Pradesh Gypsies", 197, Rarity.UNCOMMON, mage.cards.p.PradeshGypsies.class));
+ cards.add(new SetCardInfo("Presence of the Master", 31, Rarity.UNCOMMON, mage.cards.p.PresenceOfTheMaster.class));
+ cards.add(new SetCardInfo("Primordial Ooze", 160, Rarity.UNCOMMON, mage.cards.p.PrimordialOoze.class));
+ cards.add(new SetCardInfo("Princess Lucrezia", 249, Rarity.UNCOMMON, mage.cards.p.PrincessLucrezia.class));
+ cards.add(new SetCardInfo("Psionic Entity", 67, Rarity.RARE, mage.cards.p.PsionicEntity.class));
+ cards.add(new SetCardInfo("Psychic Purge", 68, Rarity.COMMON, mage.cards.p.PsychicPurge.class));
+ cards.add(new SetCardInfo("Pyrotechnics", 161, Rarity.COMMON, mage.cards.p.Pyrotechnics.class));
+ cards.add(new SetCardInfo("Quagmire", 115, Rarity.UNCOMMON, mage.cards.q.Quagmire.class));
+ cards.add(new SetCardInfo("Rabid Wombat", 198, Rarity.UNCOMMON, mage.cards.r.RabidWombat.class));
+ cards.add(new SetCardInfo("Radjan Spirit", 199, Rarity.UNCOMMON, mage.cards.r.RadjanSpirit.class));
+ cards.add(new SetCardInfo("Raging Bull", 163, Rarity.COMMON, mage.cards.r.RagingBull.class));
+ cards.add(new SetCardInfo("Ragnar", 250, Rarity.RARE, mage.cards.r.Ragnar.class));
+ cards.add(new SetCardInfo("Ramirez DePietro", 251, Rarity.UNCOMMON, mage.cards.r.RamirezDePietro.class));
+ cards.add(new SetCardInfo("Ramses Overdark", 252, Rarity.RARE, mage.cards.r.RamsesOverdark.class));
+ cards.add(new SetCardInfo("Rasputin Dreamweaver", 253, Rarity.RARE, mage.cards.r.RasputinDreamweaver.class));
+ cards.add(new SetCardInfo("Recall", 70, Rarity.RARE, mage.cards.r.Recall.class));
+ cards.add(new SetCardInfo("Red Mana Battery", 291, Rarity.UNCOMMON, mage.cards.r.RedManaBattery.class));
+ cards.add(new SetCardInfo("Reincarnation", 201, Rarity.UNCOMMON, mage.cards.r.Reincarnation.class));
+ cards.add(new SetCardInfo("Relic Barrier", 292, Rarity.UNCOMMON, mage.cards.r.RelicBarrier.class));
+ cards.add(new SetCardInfo("Relic Bind", 71, Rarity.UNCOMMON, mage.cards.r.RelicBind.class));
+ cards.add(new SetCardInfo("Remove Enchantments", 33, Rarity.COMMON, mage.cards.r.RemoveEnchantments.class));
+ cards.add(new SetCardInfo("Remove Soul", 72, Rarity.COMMON, mage.cards.r.RemoveSoul.class));
+ cards.add(new SetCardInfo("Reset", 73, Rarity.UNCOMMON, mage.cards.r.Reset.class));
+ cards.add(new SetCardInfo("Revelation", 202, Rarity.RARE, mage.cards.r.Revelation.class));
+ cards.add(new SetCardInfo("Righteous Avengers", 34, Rarity.UNCOMMON, mage.cards.r.RighteousAvengers.class));
+ cards.add(new SetCardInfo("Ring of Immortals", 293, Rarity.RARE, mage.cards.r.RingOfImmortals.class));
+ cards.add(new SetCardInfo("Riven Turnbull", 254, Rarity.UNCOMMON, mage.cards.r.RivenTurnbull.class));
+ cards.add(new SetCardInfo("Rohgahh of Kher Keep", 255, Rarity.RARE, mage.cards.r.RohgahhOfKherKeep.class));
+ cards.add(new SetCardInfo("Rubinia Soulsinger", 256, Rarity.RARE, mage.cards.r.RubiniaSoulsinger.class));
+ cards.add(new SetCardInfo("Rust", 203, Rarity.COMMON, mage.cards.r.Rust.class));
+ cards.add(new SetCardInfo("Sea Kings' Blessing", 75, Rarity.UNCOMMON, mage.cards.s.SeaKingsBlessing.class));
+ cards.add(new SetCardInfo("Seeker", 35, Rarity.UNCOMMON, mage.cards.s.Seeker.class));
+ cards.add(new SetCardInfo("Segovian Leviathan", 76, Rarity.UNCOMMON, mage.cards.s.SegovianLeviathan.class));
+ cards.add(new SetCardInfo("Sentinel", 294, Rarity.RARE, mage.cards.s.Sentinel.class));
+ cards.add(new SetCardInfo("Serpent Generator", 295, Rarity.RARE, mage.cards.s.SerpentGenerator.class));
+ cards.add(new SetCardInfo("Shield Wall", 36, Rarity.UNCOMMON, mage.cards.s.ShieldWall.class));
+ cards.add(new SetCardInfo("Shimian Night Stalker", 116, Rarity.UNCOMMON, mage.cards.s.ShimianNightStalker.class));
+ cards.add(new SetCardInfo("Sir Shandlar of Eberyn", 257, Rarity.UNCOMMON, mage.cards.s.SirShandlarOfEberyn.class));
+ cards.add(new SetCardInfo("Sivitri Scarzam", 258, Rarity.UNCOMMON, mage.cards.s.SivitriScarzam.class));
+ cards.add(new SetCardInfo("Sol'kanar the Swamp King", 259, Rarity.RARE, mage.cards.s.SolkanarTheSwampKing.class));
+ cards.add(new SetCardInfo("Spectral Cloak", 78, Rarity.UNCOMMON, mage.cards.s.SpectralCloak.class));
+ cards.add(new SetCardInfo("Spinal Villain", 164, Rarity.RARE, mage.cards.s.SpinalVillain.class));
+ cards.add(new SetCardInfo("Spirit Link", 37, Rarity.UNCOMMON, mage.cards.s.SpiritLink.class));
+ cards.add(new SetCardInfo("Spirit Shackle", 117, Rarity.COMMON, mage.cards.s.SpiritShackle.class));
+ cards.add(new SetCardInfo("Stangg", 260, Rarity.RARE, mage.cards.s.Stangg.class));
+ cards.add(new SetCardInfo("Storm Seeker", 205, Rarity.UNCOMMON, mage.cards.s.StormSeeker.class));
+ cards.add(new SetCardInfo("Storm World", 165, Rarity.RARE, mage.cards.s.StormWorld.class));
+ cards.add(new SetCardInfo("Sunastian Falconer", 261, Rarity.UNCOMMON, mage.cards.s.SunastianFalconer.class));
+ cards.add(new SetCardInfo("Sword of the Ages", 296, Rarity.RARE, mage.cards.s.SwordOfTheAges.class));
+ cards.add(new SetCardInfo("Sylvan Library", 207, Rarity.UNCOMMON, mage.cards.s.SylvanLibrary.class));
+ cards.add(new SetCardInfo("Sylvan Paradise", 208, Rarity.UNCOMMON, mage.cards.s.SylvanParadise.class));
+ cards.add(new SetCardInfo("Syphon Soul", 118, Rarity.COMMON, mage.cards.s.SyphonSoul.class));
+ cards.add(new SetCardInfo("Telekinesis", 79, Rarity.RARE, mage.cards.t.Telekinesis.class));
+ cards.add(new SetCardInfo("Teleport", 80, Rarity.RARE, mage.cards.t.Teleport.class));
+ cards.add(new SetCardInfo("Tetsuo Umezawa", 262, Rarity.RARE, mage.cards.t.TetsuoUmezawa.class));
+ cards.add(new SetCardInfo("The Abyss", 120, Rarity.RARE, mage.cards.t.TheAbyss.class));
+ cards.add(new SetCardInfo("The Brute", 167, Rarity.COMMON, mage.cards.t.TheBrute.class));
+ cards.add(new SetCardInfo("The Lady of the Mountain", 263, Rarity.UNCOMMON, mage.cards.t.TheLadyOfTheMountain.class));
+ cards.add(new SetCardInfo("The Tabernacle at Pendrell Vale", 307, Rarity.RARE, mage.cards.t.TheTabernacleAtPendrellVale.class));
+ cards.add(new SetCardInfo("The Wretched", 121, Rarity.RARE, mage.cards.t.TheWretched.class));
+ cards.add(new SetCardInfo("Thunder Spirit", 39, Rarity.RARE, mage.cards.t.ThunderSpirit.class));
+ cards.add(new SetCardInfo("Time Elemental", 81, Rarity.RARE, mage.cards.t.TimeElemental.class));
+ cards.add(new SetCardInfo("Tobias Andrion", 264, Rarity.UNCOMMON, mage.cards.t.TobiasAndrion.class));
+ cards.add(new SetCardInfo("Tor Wauki", 265, Rarity.UNCOMMON, mage.cards.t.TorWauki.class));
+ cards.add(new SetCardInfo("Torsten Von Ursus", 266, Rarity.UNCOMMON, mage.cards.t.TorstenVonUrsus.class));
+ cards.add(new SetCardInfo("Touch of Darkness", 122, Rarity.UNCOMMON, mage.cards.t.TouchOfDarkness.class));
+ cards.add(new SetCardInfo("Transmutation", 123, Rarity.COMMON, mage.cards.t.Transmutation.class));
+ cards.add(new SetCardInfo("Triassic Egg", 297, Rarity.RARE, mage.cards.t.TriassicEgg.class));
+ cards.add(new SetCardInfo("Tuknir Deathlock", 267, Rarity.RARE, mage.cards.t.TuknirDeathlock.class));
+ cards.add(new SetCardInfo("Tundra Wolves", 40, Rarity.COMMON, mage.cards.t.TundraWolves.class));
+ cards.add(new SetCardInfo("Typhoon", 209, Rarity.RARE, mage.cards.t.Typhoon.class));
+ cards.add(new SetCardInfo("Undertow", 82, Rarity.UNCOMMON, mage.cards.u.Undertow.class));
+ cards.add(new SetCardInfo("Underworld Dreams", 124, Rarity.UNCOMMON, mage.cards.u.UnderworldDreams.class));
+ cards.add(new SetCardInfo("Untamed Wilds", 210, Rarity.UNCOMMON, mage.cards.u.UntamedWilds.class));
+ cards.add(new SetCardInfo("Ur-Drago", 268, Rarity.RARE, mage.cards.u.UrDrago.class));
+ cards.add(new SetCardInfo("Urborg", 310, Rarity.UNCOMMON, mage.cards.u.Urborg.class));
+ cards.add(new SetCardInfo("Vaevictis Asmadi", 269, Rarity.RARE, mage.cards.v.VaevictisAsmadi.class));
+ cards.add(new SetCardInfo("Vampire Bats", 125, Rarity.COMMON, mage.cards.v.VampireBats.class));
+ cards.add(new SetCardInfo("Visions", 41, Rarity.UNCOMMON, mage.cards.v.Visions.class));
+ cards.add(new SetCardInfo("Walking Dead", 126, Rarity.COMMON, mage.cards.w.WalkingDead.class));
+ cards.add(new SetCardInfo("Wall of Caltrops", 42, Rarity.COMMON, mage.cards.w.WallOfCaltrops.class));
+ cards.add(new SetCardInfo("Wall of Dust", 168, Rarity.UNCOMMON, mage.cards.w.WallOfDust.class));
+ cards.add(new SetCardInfo("Wall of Earth", 169, Rarity.COMMON, mage.cards.w.WallOfEarth.class));
+ cards.add(new SetCardInfo("Wall of Heat", 170, Rarity.COMMON, mage.cards.w.WallOfHeat.class));
+ cards.add(new SetCardInfo("Wall of Light", 43, Rarity.UNCOMMON, mage.cards.w.WallOfLight.class));
+ cards.add(new SetCardInfo("Wall of Opposition", 171, Rarity.RARE, mage.cards.w.WallOfOpposition.class));
+ cards.add(new SetCardInfo("Wall of Putrid Flesh", 127, Rarity.UNCOMMON, mage.cards.w.WallOfPutridFlesh.class));
+ cards.add(new SetCardInfo("Wall of Vapor", 84, Rarity.COMMON, mage.cards.w.WallOfVapor.class));
+ cards.add(new SetCardInfo("Wall of Wonder", 85, Rarity.UNCOMMON, mage.cards.w.WallOfWonder.class));
+ cards.add(new SetCardInfo("Whirling Dervish", 211, Rarity.UNCOMMON, mage.cards.w.WhirlingDervish.class));
+ cards.add(new SetCardInfo("White Mana Battery", 299, Rarity.UNCOMMON, mage.cards.w.WhiteManaBattery.class));
+ cards.add(new SetCardInfo("Willow Satyr", 212, Rarity.RARE, mage.cards.w.WillowSatyr.class));
+ cards.add(new SetCardInfo("Winds of Change", 172, Rarity.UNCOMMON, mage.cards.w.WindsOfChange.class));
+ cards.add(new SetCardInfo("Winter Blast", 213, Rarity.RARE, mage.cards.w.WinterBlast.class));
+ cards.add(new SetCardInfo("Wolverine Pack", 214, Rarity.COMMON, mage.cards.w.WolverinePack.class));
+ cards.add(new SetCardInfo("Wood Elemental", 215, Rarity.RARE, mage.cards.w.WoodElemental.class));
+ cards.add(new SetCardInfo("Xira Arien", 270, Rarity.RARE, mage.cards.x.XiraArien.class));
+ cards.add(new SetCardInfo("Zephyr Falcon", 86, Rarity.COMMON, mage.cards.z.ZephyrFalcon.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Legions.java b/Mage.Sets/src/mage/sets/Legions.java
index 7dc39c620b7..4df6eec6704 100644
--- a/Mage.Sets/src/mage/sets/Legions.java
+++ b/Mage.Sets/src/mage/sets/Legions.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class Legions extends ExpansionSet {
+public final class Legions extends ExpansionSet {
private static final Legions instance = new Legions();
diff --git a/Mage.Sets/src/mage/sets/LimitedEditionAlpha.java b/Mage.Sets/src/mage/sets/LimitedEditionAlpha.java
index 007bd43a99d..16384462e2a 100644
--- a/Mage.Sets/src/mage/sets/LimitedEditionAlpha.java
+++ b/Mage.Sets/src/mage/sets/LimitedEditionAlpha.java
@@ -1,315 +1,315 @@
-package mage.sets;
-
-import mage.cards.ExpansionSet;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class LimitedEditionAlpha extends ExpansionSet {
-
- private static final LimitedEditionAlpha instance = new LimitedEditionAlpha();
-
- public static LimitedEditionAlpha getInstance() {
- return instance;
- }
-
- private LimitedEditionAlpha() {
- super("Limited Edition Alpha", "LEA", ExpansionSet.buildDate(1993, 8, 5), SetType.CORE);
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Air Elemental", 46, Rarity.UNCOMMON, mage.cards.a.AirElemental.class));
- cards.add(new SetCardInfo("Ancestral Recall", 47, Rarity.RARE, mage.cards.a.AncestralRecall.class));
- cards.add(new SetCardInfo("Animate Artifact", 48, Rarity.UNCOMMON, mage.cards.a.AnimateArtifact.class));
- cards.add(new SetCardInfo("Animate Dead", 92, Rarity.UNCOMMON, mage.cards.a.AnimateDead.class));
- cards.add(new SetCardInfo("Animate Wall", 1, Rarity.RARE, mage.cards.a.AnimateWall.class));
- cards.add(new SetCardInfo("Ankh of Mishra", 230, Rarity.RARE, mage.cards.a.AnkhOfMishra.class));
- cards.add(new SetCardInfo("Armageddon", 2, Rarity.RARE, mage.cards.a.Armageddon.class));
- cards.add(new SetCardInfo("Aspect of Wolf", 184, Rarity.RARE, mage.cards.a.AspectOfWolf.class));
- cards.add(new SetCardInfo("Bad Moon", 93, Rarity.RARE, mage.cards.b.BadMoon.class));
- cards.add(new SetCardInfo("Badlands", 277, Rarity.RARE, mage.cards.b.Badlands.class));
- cards.add(new SetCardInfo("Balance", 3, Rarity.RARE, mage.cards.b.Balance.class));
- cards.add(new SetCardInfo("Basalt Monolith", 231, Rarity.UNCOMMON, mage.cards.b.BasaltMonolith.class));
- cards.add(new SetCardInfo("Bayou", 278, Rarity.RARE, mage.cards.b.Bayou.class));
- cards.add(new SetCardInfo("Benalish Hero", 4, Rarity.COMMON, mage.cards.b.BenalishHero.class));
- cards.add(new SetCardInfo("Berserk", 185, Rarity.UNCOMMON, mage.cards.b.Berserk.class));
- cards.add(new SetCardInfo("Birds of Paradise", 186, Rarity.RARE, mage.cards.b.BirdsOfParadise.class));
- cards.add(new SetCardInfo("Black Knight", 94, Rarity.UNCOMMON, mage.cards.b.BlackKnight.class));
- cards.add(new SetCardInfo("Black Lotus", 232, Rarity.RARE, mage.cards.b.BlackLotus.class));
- cards.add(new SetCardInfo("Black Vise", 233, Rarity.UNCOMMON, mage.cards.b.BlackVise.class));
- cards.add(new SetCardInfo("Black Ward", 5, Rarity.UNCOMMON, mage.cards.b.BlackWard.class));
- cards.add(new SetCardInfo("Blaze of Glory", 6, Rarity.RARE, mage.cards.b.BlazeOfGlory.class));
- cards.add(new SetCardInfo("Blessing", 7, Rarity.RARE, mage.cards.b.Blessing.class));
- cards.add(new SetCardInfo("Blue Elemental Blast", 49, Rarity.COMMON, mage.cards.b.BlueElementalBlast.class));
- cards.add(new SetCardInfo("Blue Ward", 8, Rarity.UNCOMMON, mage.cards.b.BlueWard.class));
- cards.add(new SetCardInfo("Bog Wraith", 95, Rarity.UNCOMMON, mage.cards.b.BogWraith.class));
- cards.add(new SetCardInfo("Braingeyser", 50, Rarity.RARE, mage.cards.b.Braingeyser.class));
- cards.add(new SetCardInfo("Burrowing", 138, Rarity.UNCOMMON, mage.cards.b.Burrowing.class));
- cards.add(new SetCardInfo("Camouflage", 187, Rarity.UNCOMMON, mage.cards.c.Camouflage.class));
- cards.add(new SetCardInfo("Castle", 9, Rarity.UNCOMMON, mage.cards.c.Castle.class));
- cards.add(new SetCardInfo("Celestial Prism", 234, Rarity.UNCOMMON, mage.cards.c.CelestialPrism.class));
- cards.add(new SetCardInfo("Channel", 188, Rarity.UNCOMMON, mage.cards.c.Channel.class));
- cards.add(new SetCardInfo("Chaoslace", 139, Rarity.RARE, mage.cards.c.Chaoslace.class));
- cards.add(new SetCardInfo("Circle of Protection: Blue", 10, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlue.class));
- cards.add(new SetCardInfo("Circle of Protection: Green", 11, Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class));
- cards.add(new SetCardInfo("Circle of Protection: Red", 12, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class));
- cards.add(new SetCardInfo("Circle of Protection: White", 13, Rarity.COMMON, mage.cards.c.CircleOfProtectionWhite.class));
- cards.add(new SetCardInfo("Clockwork Beast", 236, Rarity.RARE, mage.cards.c.ClockworkBeast.class));
- cards.add(new SetCardInfo("Clone", 51, Rarity.UNCOMMON, mage.cards.c.Clone.class));
- cards.add(new SetCardInfo("Cockatrice", 189, Rarity.RARE, mage.cards.c.Cockatrice.class));
- cards.add(new SetCardInfo("Consecrate Land", 14, Rarity.UNCOMMON, mage.cards.c.ConsecrateLand.class));
- cards.add(new SetCardInfo("Conservator", 237, Rarity.UNCOMMON, mage.cards.c.Conservator.class));
- cards.add(new SetCardInfo("Control Magic", 52, Rarity.UNCOMMON, mage.cards.c.ControlMagic.class));
- cards.add(new SetCardInfo("Conversion", 15, Rarity.UNCOMMON, mage.cards.c.Conversion.class));
- cards.add(new SetCardInfo("Copper Tablet", 238, Rarity.UNCOMMON, mage.cards.c.CopperTablet.class));
- cards.add(new SetCardInfo("Copy Artifact", 53, Rarity.RARE, mage.cards.c.CopyArtifact.class));
- cards.add(new SetCardInfo("Counterspell", 54, Rarity.UNCOMMON, mage.cards.c.Counterspell.class));
- cards.add(new SetCardInfo("Craw Wurm", 190, Rarity.COMMON, mage.cards.c.CrawWurm.class));
- cards.add(new SetCardInfo("Creature Bond", 55, Rarity.COMMON, mage.cards.c.CreatureBond.class));
- cards.add(new SetCardInfo("Crusade", 16, Rarity.RARE, mage.cards.c.Crusade.class));
- cards.add(new SetCardInfo("Crystal Rod", 239, Rarity.UNCOMMON, mage.cards.c.CrystalRod.class));
- cards.add(new SetCardInfo("Cursed Land", 97, Rarity.UNCOMMON, mage.cards.c.CursedLand.class));
- cards.add(new SetCardInfo("Cyclopean Tomb", 240, Rarity.RARE, mage.cards.c.CyclopeanTomb.class));
- cards.add(new SetCardInfo("Dark Ritual", 98, Rarity.COMMON, mage.cards.d.DarkRitual.class));
- cards.add(new SetCardInfo("Death Ward", 17, Rarity.COMMON, mage.cards.d.DeathWard.class));
- cards.add(new SetCardInfo("Deathgrip", 100, Rarity.UNCOMMON, mage.cards.d.Deathgrip.class));
- cards.add(new SetCardInfo("Deathlace", 101, Rarity.RARE, mage.cards.d.Deathlace.class));
- cards.add(new SetCardInfo("Demonic Hordes", 103, Rarity.RARE, mage.cards.d.DemonicHordes.class));
- cards.add(new SetCardInfo("Demonic Tutor", 104, Rarity.UNCOMMON, mage.cards.d.DemonicTutor.class));
- cards.add(new SetCardInfo("Dingus Egg", 241, Rarity.RARE, mage.cards.d.DingusEgg.class));
- cards.add(new SetCardInfo("Disenchant", 18, Rarity.COMMON, mage.cards.d.Disenchant.class));
- cards.add(new SetCardInfo("Disintegrate", 140, Rarity.COMMON, mage.cards.d.Disintegrate.class));
- cards.add(new SetCardInfo("Disrupting Scepter", 242, Rarity.RARE, mage.cards.d.DisruptingScepter.class));
- cards.add(new SetCardInfo("Dragon Whelp", 141, Rarity.UNCOMMON, mage.cards.d.DragonWhelp.class));
- cards.add(new SetCardInfo("Drain Life", 105, Rarity.COMMON, mage.cards.d.DrainLife.class));
- cards.add(new SetCardInfo("Drain Power", 56, Rarity.RARE, mage.cards.d.DrainPower.class));
- cards.add(new SetCardInfo("Drudge Skeletons", 106, Rarity.COMMON, mage.cards.d.DrudgeSkeletons.class));
- cards.add(new SetCardInfo("Dwarven Demolition Team", 142, Rarity.UNCOMMON, mage.cards.d.DwarvenDemolitionTeam.class));
- cards.add(new SetCardInfo("Dwarven Warriors", 143, Rarity.COMMON, mage.cards.d.DwarvenWarriors.class));
- cards.add(new SetCardInfo("Earth Elemental", 144, Rarity.UNCOMMON, mage.cards.e.EarthElemental.class));
- cards.add(new SetCardInfo("Earthbind", 145, Rarity.COMMON, mage.cards.e.Earthbind.class));
- cards.add(new SetCardInfo("Earthquake", 146, Rarity.RARE, mage.cards.e.Earthquake.class));
- cards.add(new SetCardInfo("Elvish Archers", 191, Rarity.RARE, mage.cards.e.ElvishArchers.class));
- cards.add(new SetCardInfo("Evil Presence", 107, Rarity.UNCOMMON, mage.cards.e.EvilPresence.class));
- cards.add(new SetCardInfo("False Orders", 147, Rarity.COMMON, mage.cards.f.FalseOrders.class));
- cards.add(new SetCardInfo("Farmstead", 19, Rarity.RARE, mage.cards.f.Farmstead.class));
- cards.add(new SetCardInfo("Fastbond", 192, Rarity.RARE, mage.cards.f.Fastbond.class));
- cards.add(new SetCardInfo("Fear", 108, Rarity.COMMON, mage.cards.f.Fear.class));
- cards.add(new SetCardInfo("Feedback", 57, Rarity.UNCOMMON, mage.cards.f.Feedback.class));
- cards.add(new SetCardInfo("Fire Elemental", 148, Rarity.UNCOMMON, mage.cards.f.FireElemental.class));
- cards.add(new SetCardInfo("Fireball", 149, Rarity.COMMON, mage.cards.f.Fireball.class));
- cards.add(new SetCardInfo("Firebreathing", 150, Rarity.COMMON, mage.cards.f.Firebreathing.class));
- cards.add(new SetCardInfo("Flashfires", 151, Rarity.UNCOMMON, mage.cards.f.Flashfires.class));
- cards.add(new SetCardInfo("Flight", 58, Rarity.COMMON, mage.cards.f.Flight.class));
- cards.add(new SetCardInfo("Fog", 193, Rarity.COMMON, mage.cards.f.Fog.class));
- cards.add(new SetCardInfo("Force of Nature", 194, Rarity.RARE, mage.cards.f.ForceOfNature.class));
- cards.add(new SetCardInfo("Forcefield", 243, Rarity.RARE, mage.cards.f.Forcefield.class));
- cards.add(new SetCardInfo("Forest", 294, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 295, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Fork", 152, Rarity.RARE, mage.cards.f.Fork.class));
- cards.add(new SetCardInfo("Frozen Shade", 109, Rarity.COMMON, mage.cards.f.FrozenShade.class));
- cards.add(new SetCardInfo("Fungusaur", 195, Rarity.RARE, mage.cards.f.Fungusaur.class));
- cards.add(new SetCardInfo("Gaea's Liege", 196, 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", 197, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
- cards.add(new SetCardInfo("Giant Spider", 198, Rarity.COMMON, mage.cards.g.GiantSpider.class));
- cards.add(new SetCardInfo("Glasses of Urza", 245, Rarity.UNCOMMON, mage.cards.g.GlassesOfUrza.class));
- cards.add(new SetCardInfo("Gloom", 110, Rarity.UNCOMMON, mage.cards.g.Gloom.class));
- cards.add(new SetCardInfo("Goblin Balloon Brigade", 153, Rarity.UNCOMMON, mage.cards.g.GoblinBalloonBrigade.class));
- cards.add(new SetCardInfo("Goblin King", 154, Rarity.RARE, mage.cards.g.GoblinKing.class));
- cards.add(new SetCardInfo("Granite Gargoyle", 155, Rarity.RARE, mage.cards.g.GraniteGargoyle.class));
- cards.add(new SetCardInfo("Gray Ogre", 156, Rarity.COMMON, mage.cards.g.GrayOgre.class));
- cards.add(new SetCardInfo("Green Ward", 20, Rarity.UNCOMMON, mage.cards.g.GreenWard.class));
- cards.add(new SetCardInfo("Grizzly Bears", 199, Rarity.COMMON, mage.cards.g.GrizzlyBears.class));
- cards.add(new SetCardInfo("Guardian Angel", 21, Rarity.COMMON, mage.cards.g.GuardianAngel.class));
- cards.add(new SetCardInfo("Healing Salve", 22, Rarity.COMMON, mage.cards.h.HealingSalve.class));
- cards.add(new SetCardInfo("Helm of Chatzuk", 246, Rarity.RARE, mage.cards.h.HelmOfChatzuk.class));
- cards.add(new SetCardInfo("Hill Giant", 157, Rarity.COMMON, mage.cards.h.HillGiant.class));
- cards.add(new SetCardInfo("Holy Armor", 23, Rarity.COMMON, mage.cards.h.HolyArmor.class));
- cards.add(new SetCardInfo("Holy Strength", 24, Rarity.COMMON, mage.cards.h.HolyStrength.class));
- cards.add(new SetCardInfo("Howl from Beyond", 111, Rarity.COMMON, mage.cards.h.HowlFromBeyond.class));
- cards.add(new SetCardInfo("Howling Mine", 247, Rarity.RARE, mage.cards.h.HowlingMine.class));
- cards.add(new SetCardInfo("Hurloon Minotaur", 158, Rarity.COMMON, mage.cards.h.HurloonMinotaur.class));
- cards.add(new SetCardInfo("Hurricane", 200, Rarity.UNCOMMON, mage.cards.h.Hurricane.class));
- cards.add(new SetCardInfo("Hypnotic Specter", 112, Rarity.UNCOMMON, mage.cards.h.HypnoticSpecter.class));
- cards.add(new SetCardInfo("Ice Storm", 201, Rarity.UNCOMMON, mage.cards.i.IceStorm.class));
- cards.add(new SetCardInfo("Icy Manipulator", 248, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class));
- cards.add(new SetCardInfo("Instill Energy", 202, Rarity.UNCOMMON, mage.cards.i.InstillEnergy.class));
- cards.add(new SetCardInfo("Invisibility", 59, Rarity.COMMON, mage.cards.i.Invisibility.class));
- cards.add(new SetCardInfo("Iron Star", 250, Rarity.UNCOMMON, mage.cards.i.IronStar.class));
- cards.add(new SetCardInfo("Ironclaw Orcs", 159, Rarity.COMMON, mage.cards.i.IronclawOrcs.class));
- cards.add(new SetCardInfo("Ironroot Treefolk", 203, Rarity.COMMON, mage.cards.i.IronrootTreefolk.class));
- cards.add(new SetCardInfo("Island Sanctuary", 25, Rarity.RARE, mage.cards.i.IslandSanctuary.class));
- cards.add(new SetCardInfo("Island", 288, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 289, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- 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", 60, Rarity.COMMON, mage.cards.j.Jump.class));
- cards.add(new SetCardInfo("Karma", 26, Rarity.UNCOMMON, mage.cards.k.Karma.class));
- cards.add(new SetCardInfo("Keldon Warlord", 160, Rarity.UNCOMMON, mage.cards.k.KeldonWarlord.class));
- cards.add(new SetCardInfo("Kormus Bell", 256, Rarity.RARE, mage.cards.k.KormusBell.class));
- cards.add(new SetCardInfo("Kudzu", 204, Rarity.RARE, mage.cards.k.Kudzu.class));
- cards.add(new SetCardInfo("Lance", 27, Rarity.UNCOMMON, mage.cards.l.Lance.class));
- cards.add(new SetCardInfo("Ley Druid", 205, Rarity.UNCOMMON, mage.cards.l.LeyDruid.class));
- cards.add(new SetCardInfo("Library of Leng", 257, Rarity.UNCOMMON, mage.cards.l.LibraryOfLeng.class));
- cards.add(new SetCardInfo("Lich", 113, Rarity.RARE, mage.cards.l.Lich.class));
- cards.add(new SetCardInfo("Lifeforce", 206, Rarity.UNCOMMON, mage.cards.l.Lifeforce.class));
- cards.add(new SetCardInfo("Lifelace", 207, Rarity.RARE, mage.cards.l.Lifelace.class));
- cards.add(new SetCardInfo("Lifetap", 61, Rarity.UNCOMMON, mage.cards.l.Lifetap.class));
- cards.add(new SetCardInfo("Lightning Bolt", 161, Rarity.COMMON, mage.cards.l.LightningBolt.class));
- cards.add(new SetCardInfo("Living Artifact", 208, Rarity.RARE, mage.cards.l.LivingArtifact.class));
- cards.add(new SetCardInfo("Living Lands", 209, Rarity.RARE, mage.cards.l.LivingLands.class));
- cards.add(new SetCardInfo("Living Wall", 258, Rarity.UNCOMMON, mage.cards.l.LivingWall.class));
- cards.add(new SetCardInfo("Llanowar Elves", 210, Rarity.COMMON, mage.cards.l.LlanowarElves.class));
- cards.add(new SetCardInfo("Lord of Atlantis", 62, Rarity.RARE, mage.cards.l.LordOfAtlantis.class));
- cards.add(new SetCardInfo("Lord of the Pit", 114, Rarity.RARE, mage.cards.l.LordOfThePit.class));
- cards.add(new SetCardInfo("Lure", 211, Rarity.UNCOMMON, mage.cards.l.Lure.class));
- cards.add(new SetCardInfo("Mahamoti Djinn", 64, Rarity.RARE, mage.cards.m.MahamotiDjinn.class));
- cards.add(new SetCardInfo("Mana Flare", 162, Rarity.RARE, mage.cards.m.ManaFlare.class));
- cards.add(new SetCardInfo("Mana Short", 65, Rarity.RARE, mage.cards.m.ManaShort.class));
- cards.add(new SetCardInfo("Mana Vault", 259, Rarity.RARE, mage.cards.m.ManaVault.class));
- cards.add(new SetCardInfo("Manabarbs", 163, Rarity.RARE, mage.cards.m.Manabarbs.class));
- cards.add(new SetCardInfo("Meekstone", 260, Rarity.RARE, mage.cards.m.Meekstone.class));
- cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 66, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class));
- cards.add(new SetCardInfo("Mesa Pegasus", 28, Rarity.COMMON, mage.cards.m.MesaPegasus.class));
- cards.add(new SetCardInfo("Mind Twist", 115, Rarity.RARE, mage.cards.m.MindTwist.class));
- cards.add(new SetCardInfo("Mons's Goblin Raiders", 164, Rarity.COMMON, mage.cards.m.MonssGoblinRaiders.class));
- cards.add(new SetCardInfo("Mountain", 292, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 293, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mox Emerald", 261, Rarity.RARE, mage.cards.m.MoxEmerald.class));
- cards.add(new SetCardInfo("Mox Jet", 262, Rarity.RARE, mage.cards.m.MoxJet.class));
- cards.add(new SetCardInfo("Mox Pearl", 263, Rarity.RARE, mage.cards.m.MoxPearl.class));
- cards.add(new SetCardInfo("Mox Ruby", 264, Rarity.RARE, mage.cards.m.MoxRuby.class));
- cards.add(new SetCardInfo("Mox Sapphire", 265, Rarity.RARE, mage.cards.m.MoxSapphire.class));
- cards.add(new SetCardInfo("Natural Selection", 212, Rarity.RARE, mage.cards.n.NaturalSelection.class));
- cards.add(new SetCardInfo("Nether Shadow", 116, Rarity.RARE, mage.cards.n.NetherShadow.class));
- cards.add(new SetCardInfo("Nettling Imp", 117, Rarity.UNCOMMON, mage.cards.n.NettlingImp.class));
- cards.add(new SetCardInfo("Nevinyrral's Disk", 266, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class));
- cards.add(new SetCardInfo("Nightmare", 118, Rarity.RARE, mage.cards.n.Nightmare.class));
- cards.add(new SetCardInfo("Northern Paladin", 29, Rarity.RARE, mage.cards.n.NorthernPaladin.class));
- cards.add(new SetCardInfo("Obsianus Golem", 267, Rarity.UNCOMMON, mage.cards.o.ObsianusGolem.class));
- cards.add(new SetCardInfo("Orcish Artillery", 165, Rarity.UNCOMMON, mage.cards.o.OrcishArtillery.class));
- cards.add(new SetCardInfo("Orcish Oriflamme", 166, Rarity.UNCOMMON, mage.cards.o.OrcishOriflamme.class));
- cards.add(new SetCardInfo("Paralyze", 119, Rarity.COMMON, mage.cards.p.Paralyze.class));
- cards.add(new SetCardInfo("Pearled Unicorn", 30, Rarity.COMMON, mage.cards.p.PearledUnicorn.class));
- cards.add(new SetCardInfo("Personal Incarnation", 31, Rarity.RARE, mage.cards.p.PersonalIncarnation.class));
- cards.add(new SetCardInfo("Pestilence", 120, Rarity.COMMON, mage.cards.p.Pestilence.class));
- cards.add(new SetCardInfo("Phantasmal Forces", 67, Rarity.UNCOMMON, mage.cards.p.PhantasmalForces.class));
- cards.add(new SetCardInfo("Phantasmal Terrain", 68, Rarity.COMMON, mage.cards.p.PhantasmalTerrain.class));
- cards.add(new SetCardInfo("Phantom Monster", 69, Rarity.UNCOMMON, mage.cards.p.PhantomMonster.class));
- cards.add(new SetCardInfo("Pirate Ship", 70, Rarity.RARE, mage.cards.p.PirateShip.class));
- cards.add(new SetCardInfo("Plague Rats", 121, Rarity.COMMON, mage.cards.p.PlagueRats.class));
- cards.add(new SetCardInfo("Plains", 286, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plateau", 279, Rarity.RARE, mage.cards.p.Plateau.class));
- cards.add(new SetCardInfo("Power Leak", 71, Rarity.COMMON, mage.cards.p.PowerLeak.class));
- cards.add(new SetCardInfo("Power Sink", 72, Rarity.COMMON, mage.cards.p.PowerSink.class));
- cards.add(new SetCardInfo("Power Surge", 167, Rarity.RARE, mage.cards.p.PowerSurge.class));
- cards.add(new SetCardInfo("Prodigal Sorcerer", 73, Rarity.COMMON, mage.cards.p.ProdigalSorcerer.class));
- cards.add(new SetCardInfo("Psionic Blast", 74, Rarity.UNCOMMON, mage.cards.p.PsionicBlast.class));
- cards.add(new SetCardInfo("Psychic Venom", 75, Rarity.COMMON, mage.cards.p.PsychicVenom.class));
- cards.add(new SetCardInfo("Purelace", 32, Rarity.RARE, mage.cards.p.Purelace.class));
- cards.add(new SetCardInfo("Raging River", 168, Rarity.RARE, mage.cards.r.RagingRiver.class));
- cards.add(new SetCardInfo("Raise Dead", 122, Rarity.COMMON, mage.cards.r.RaiseDead.class));
- cards.add(new SetCardInfo("Red Elemental Blast", 169, Rarity.COMMON, mage.cards.r.RedElementalBlast.class));
- cards.add(new SetCardInfo("Red Ward", 33, Rarity.UNCOMMON, mage.cards.r.RedWard.class));
- cards.add(new SetCardInfo("Regeneration", 213, Rarity.COMMON, mage.cards.r.Regeneration.class));
- cards.add(new SetCardInfo("Regrowth", 214, Rarity.UNCOMMON, mage.cards.r.Regrowth.class));
- cards.add(new SetCardInfo("Resurrection", 34, Rarity.UNCOMMON, mage.cards.r.Resurrection.class));
- cards.add(new SetCardInfo("Reverse Damage", 35, Rarity.RARE, mage.cards.r.ReverseDamage.class));
- cards.add(new SetCardInfo("Righteousness", 36, Rarity.RARE, mage.cards.r.Righteousness.class));
- cards.add(new SetCardInfo("Roc of Kher Ridges", 170, Rarity.RARE, mage.cards.r.RocOfKherRidges.class));
- cards.add(new SetCardInfo("Rock Hydra", 171, 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", 123, Rarity.RARE, mage.cards.r.RoyalAssassin.class));
- cards.add(new SetCardInfo("Sacrifice", 124, Rarity.UNCOMMON, mage.cards.s.Sacrifice.class));
- cards.add(new SetCardInfo("Samite Healer", 37, Rarity.COMMON, mage.cards.s.SamiteHealer.class));
- cards.add(new SetCardInfo("Savannah Lions", 38, Rarity.RARE, mage.cards.s.SavannahLions.class));
- cards.add(new SetCardInfo("Savannah", 280, Rarity.RARE, mage.cards.s.Savannah.class));
- cards.add(new SetCardInfo("Scathe Zombies", 125, Rarity.COMMON, mage.cards.s.ScatheZombies.class));
- cards.add(new SetCardInfo("Scavenging Ghoul", 126, Rarity.UNCOMMON, mage.cards.s.ScavengingGhoul.class));
- cards.add(new SetCardInfo("Scrubland", 281, Rarity.RARE, mage.cards.s.Scrubland.class));
- cards.add(new SetCardInfo("Scryb Sprites", 215, Rarity.COMMON, mage.cards.s.ScrybSprites.class));
- cards.add(new SetCardInfo("Sea Serpent", 76, Rarity.COMMON, mage.cards.s.SeaSerpent.class));
- cards.add(new SetCardInfo("Sedge Troll", 172, Rarity.RARE, mage.cards.s.SedgeTroll.class));
- cards.add(new SetCardInfo("Sengir Vampire", 127, Rarity.UNCOMMON, mage.cards.s.SengirVampire.class));
- cards.add(new SetCardInfo("Serra Angel", 39, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class));
- cards.add(new SetCardInfo("Shanodin Dryads", 216, Rarity.COMMON, mage.cards.s.ShanodinDryads.class));
- cards.add(new SetCardInfo("Shatter", 173, Rarity.COMMON, mage.cards.s.Shatter.class));
- cards.add(new SetCardInfo("Shivan Dragon", 174, Rarity.RARE, mage.cards.s.ShivanDragon.class));
- cards.add(new SetCardInfo("Simulacrum", 128, Rarity.UNCOMMON, mage.cards.s.Simulacrum.class));
- cards.add(new SetCardInfo("Sinkhole", 129, Rarity.COMMON, mage.cards.s.Sinkhole.class));
- cards.add(new SetCardInfo("Siren's Call", 77, Rarity.UNCOMMON, mage.cards.s.SirensCall.class));
- cards.add(new SetCardInfo("Smoke", 175, Rarity.RARE, mage.cards.s.Smoke.class));
- cards.add(new SetCardInfo("Sol Ring", 269, Rarity.UNCOMMON, mage.cards.s.SolRing.class));
- cards.add(new SetCardInfo("Soul Net", 270, Rarity.UNCOMMON, mage.cards.s.SoulNet.class));
- cards.add(new SetCardInfo("Spell Blast", 79, Rarity.COMMON, mage.cards.s.SpellBlast.class));
- cards.add(new SetCardInfo("Stasis", 80, Rarity.RARE, mage.cards.s.Stasis.class));
- cards.add(new SetCardInfo("Steal Artifact", 81, Rarity.UNCOMMON, mage.cards.s.StealArtifact.class));
- cards.add(new SetCardInfo("Stone Giant", 176, Rarity.UNCOMMON, mage.cards.s.StoneGiant.class));
- cards.add(new SetCardInfo("Stone Rain", 177, Rarity.COMMON, mage.cards.s.StoneRain.class));
- cards.add(new SetCardInfo("Stream of Life", 217, Rarity.COMMON, mage.cards.s.StreamOfLife.class));
- cards.add(new SetCardInfo("Sunglasses of Urza", 271, Rarity.RARE, mage.cards.s.SunglassesOfUrza.class));
- cards.add(new SetCardInfo("Swamp", 290, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 291, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swords to Plowshares", 40, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
- cards.add(new SetCardInfo("Taiga", 282, Rarity.RARE, mage.cards.t.Taiga.class));
- cards.add(new SetCardInfo("Terror", 130, Rarity.COMMON, mage.cards.t.Terror.class));
- cards.add(new SetCardInfo("The Hive", 272, Rarity.RARE, mage.cards.t.TheHive.class));
- cards.add(new SetCardInfo("Thicket Basilisk", 218, Rarity.UNCOMMON, mage.cards.t.ThicketBasilisk.class));
- cards.add(new SetCardInfo("Thoughtlace", 82, Rarity.RARE, mage.cards.t.Thoughtlace.class));
- cards.add(new SetCardInfo("Throne of Bone", 273, Rarity.UNCOMMON, mage.cards.t.ThroneOfBone.class));
- cards.add(new SetCardInfo("Timber Wolves", 219, Rarity.RARE, mage.cards.t.TimberWolves.class));
- cards.add(new SetCardInfo("Time Vault", 274, Rarity.RARE, mage.cards.t.TimeVault.class));
- cards.add(new SetCardInfo("Time Walk", 83, Rarity.RARE, mage.cards.t.TimeWalk.class));
- cards.add(new SetCardInfo("Timetwister", 84, Rarity.RARE, mage.cards.t.Timetwister.class));
- cards.add(new SetCardInfo("Tranquility", 220, Rarity.COMMON, mage.cards.t.Tranquility.class));
- cards.add(new SetCardInfo("Tropical Island", 283, Rarity.RARE, mage.cards.t.TropicalIsland.class));
- cards.add(new SetCardInfo("Tsunami", 221, Rarity.UNCOMMON, mage.cards.t.Tsunami.class));
- cards.add(new SetCardInfo("Tundra", 284, Rarity.RARE, mage.cards.t.Tundra.class));
- cards.add(new SetCardInfo("Tunnel", 178, Rarity.UNCOMMON, mage.cards.t.Tunnel.class));
- cards.add(new SetCardInfo("Twiddle", 85, Rarity.COMMON, mage.cards.t.Twiddle.class));
- cards.add(new SetCardInfo("Two-Headed Giant of Foriys", 179, Rarity.RARE, mage.cards.t.TwoHeadedGiantOfForiys.class));
- cards.add(new SetCardInfo("Underground Sea", 285, Rarity.RARE, mage.cards.u.UndergroundSea.class));
- cards.add(new SetCardInfo("Unholy Strength", 131, Rarity.COMMON, mage.cards.u.UnholyStrength.class));
- cards.add(new SetCardInfo("Unsummon", 86, Rarity.COMMON, mage.cards.u.Unsummon.class));
- cards.add(new SetCardInfo("Uthden Troll", 180, Rarity.UNCOMMON, mage.cards.u.UthdenTroll.class));
- cards.add(new SetCardInfo("Verduran Enchantress", 222, Rarity.RARE, mage.cards.v.VerduranEnchantress.class));
- cards.add(new SetCardInfo("Vesuvan Doppelganger", 87, Rarity.RARE, mage.cards.v.VesuvanDoppelganger.class));
- cards.add(new SetCardInfo("Veteran Bodyguard", 41, Rarity.RARE, mage.cards.v.VeteranBodyguard.class));
- cards.add(new SetCardInfo("Volcanic Eruption", 88, Rarity.RARE, mage.cards.v.VolcanicEruption.class));
- cards.add(new SetCardInfo("Wall of Air", 89, Rarity.UNCOMMON, mage.cards.w.WallOfAir.class));
- cards.add(new SetCardInfo("Wall of Bone", 132, Rarity.UNCOMMON, mage.cards.w.WallOfBone.class));
- cards.add(new SetCardInfo("Wall of Brambles", 223, Rarity.UNCOMMON, mage.cards.w.WallOfBrambles.class));
- cards.add(new SetCardInfo("Wall of Fire", 181, Rarity.UNCOMMON, mage.cards.w.WallOfFire.class));
- cards.add(new SetCardInfo("Wall of Ice", 224, Rarity.UNCOMMON, mage.cards.w.WallOfIce.class));
- cards.add(new SetCardInfo("Wall of Stone", 182, Rarity.UNCOMMON, mage.cards.w.WallOfStone.class));
- cards.add(new SetCardInfo("Wall of Swords", 42, Rarity.UNCOMMON, mage.cards.w.WallOfSwords.class));
- cards.add(new SetCardInfo("Wall of Water", 90, Rarity.UNCOMMON, mage.cards.w.WallOfWater.class));
- cards.add(new SetCardInfo("Wall of Wood", 225, Rarity.COMMON, mage.cards.w.WallOfWood.class));
- cards.add(new SetCardInfo("Wanderlust", 226, Rarity.UNCOMMON, mage.cards.w.Wanderlust.class));
- cards.add(new SetCardInfo("War Mammoth", 227, Rarity.COMMON, mage.cards.w.WarMammoth.class));
- cards.add(new SetCardInfo("Warp Artifact", 133, Rarity.RARE, mage.cards.w.WarpArtifact.class));
- cards.add(new SetCardInfo("Water Elemental", 91, Rarity.UNCOMMON, mage.cards.w.WaterElemental.class));
- cards.add(new SetCardInfo("Weakness", 134, Rarity.COMMON, mage.cards.w.Weakness.class));
- cards.add(new SetCardInfo("Web", 228, Rarity.RARE, mage.cards.w.Web.class));
- cards.add(new SetCardInfo("Wheel of Fortune", 183, Rarity.RARE, mage.cards.w.WheelOfFortune.class));
- cards.add(new SetCardInfo("White Knight", 43, Rarity.UNCOMMON, mage.cards.w.WhiteKnight.class));
- cards.add(new SetCardInfo("White Ward", 44, Rarity.UNCOMMON, mage.cards.w.WhiteWard.class));
- cards.add(new SetCardInfo("Wild Growth", 229, Rarity.COMMON, mage.cards.w.WildGrowth.class));
- cards.add(new SetCardInfo("Will-o'-the-Wisp", 135, Rarity.RARE, mage.cards.w.WillOTheWisp.class));
- cards.add(new SetCardInfo("Winter Orb", 275, Rarity.RARE, mage.cards.w.WinterOrb.class));
- cards.add(new SetCardInfo("Wooden Sphere", 276, Rarity.UNCOMMON, mage.cards.w.WoodenSphere.class));
- cards.add(new SetCardInfo("Wrath of God", 45, Rarity.RARE, mage.cards.w.WrathOfGod.class));
- cards.add(new SetCardInfo("Zombie Master", 137, Rarity.RARE, mage.cards.z.ZombieMaster.class));
- }
-}
+package mage.sets;
+
+import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class LimitedEditionAlpha extends ExpansionSet {
+
+ private static final LimitedEditionAlpha instance = new LimitedEditionAlpha();
+
+ public static LimitedEditionAlpha getInstance() {
+ return instance;
+ }
+
+ private LimitedEditionAlpha() {
+ super("Limited Edition Alpha", "LEA", ExpansionSet.buildDate(1993, 8, 5), SetType.CORE);
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Air Elemental", 46, Rarity.UNCOMMON, mage.cards.a.AirElemental.class));
+ cards.add(new SetCardInfo("Ancestral Recall", 47, Rarity.RARE, mage.cards.a.AncestralRecall.class));
+ cards.add(new SetCardInfo("Animate Artifact", 48, Rarity.UNCOMMON, mage.cards.a.AnimateArtifact.class));
+ cards.add(new SetCardInfo("Animate Dead", 92, Rarity.UNCOMMON, mage.cards.a.AnimateDead.class));
+ cards.add(new SetCardInfo("Animate Wall", 1, Rarity.RARE, mage.cards.a.AnimateWall.class));
+ cards.add(new SetCardInfo("Ankh of Mishra", 230, Rarity.RARE, mage.cards.a.AnkhOfMishra.class));
+ cards.add(new SetCardInfo("Armageddon", 2, Rarity.RARE, mage.cards.a.Armageddon.class));
+ cards.add(new SetCardInfo("Aspect of Wolf", 184, Rarity.RARE, mage.cards.a.AspectOfWolf.class));
+ cards.add(new SetCardInfo("Bad Moon", 93, Rarity.RARE, mage.cards.b.BadMoon.class));
+ cards.add(new SetCardInfo("Badlands", 277, Rarity.RARE, mage.cards.b.Badlands.class));
+ cards.add(new SetCardInfo("Balance", 3, Rarity.RARE, mage.cards.b.Balance.class));
+ cards.add(new SetCardInfo("Basalt Monolith", 231, Rarity.UNCOMMON, mage.cards.b.BasaltMonolith.class));
+ cards.add(new SetCardInfo("Bayou", 278, Rarity.RARE, mage.cards.b.Bayou.class));
+ cards.add(new SetCardInfo("Benalish Hero", 4, Rarity.COMMON, mage.cards.b.BenalishHero.class));
+ cards.add(new SetCardInfo("Berserk", 185, Rarity.UNCOMMON, mage.cards.b.Berserk.class));
+ cards.add(new SetCardInfo("Birds of Paradise", 186, Rarity.RARE, mage.cards.b.BirdsOfParadise.class));
+ cards.add(new SetCardInfo("Black Knight", 94, Rarity.UNCOMMON, mage.cards.b.BlackKnight.class));
+ cards.add(new SetCardInfo("Black Lotus", 232, Rarity.RARE, mage.cards.b.BlackLotus.class));
+ cards.add(new SetCardInfo("Black Vise", 233, Rarity.UNCOMMON, mage.cards.b.BlackVise.class));
+ cards.add(new SetCardInfo("Black Ward", 5, Rarity.UNCOMMON, mage.cards.b.BlackWard.class));
+ cards.add(new SetCardInfo("Blaze of Glory", 6, Rarity.RARE, mage.cards.b.BlazeOfGlory.class));
+ cards.add(new SetCardInfo("Blessing", 7, Rarity.RARE, mage.cards.b.Blessing.class));
+ cards.add(new SetCardInfo("Blue Elemental Blast", 49, Rarity.COMMON, mage.cards.b.BlueElementalBlast.class));
+ cards.add(new SetCardInfo("Blue Ward", 8, Rarity.UNCOMMON, mage.cards.b.BlueWard.class));
+ cards.add(new SetCardInfo("Bog Wraith", 95, Rarity.UNCOMMON, mage.cards.b.BogWraith.class));
+ cards.add(new SetCardInfo("Braingeyser", 50, Rarity.RARE, mage.cards.b.Braingeyser.class));
+ cards.add(new SetCardInfo("Burrowing", 138, Rarity.UNCOMMON, mage.cards.b.Burrowing.class));
+ cards.add(new SetCardInfo("Camouflage", 187, Rarity.UNCOMMON, mage.cards.c.Camouflage.class));
+ cards.add(new SetCardInfo("Castle", 9, Rarity.UNCOMMON, mage.cards.c.Castle.class));
+ cards.add(new SetCardInfo("Celestial Prism", 234, Rarity.UNCOMMON, mage.cards.c.CelestialPrism.class));
+ cards.add(new SetCardInfo("Channel", 188, Rarity.UNCOMMON, mage.cards.c.Channel.class));
+ cards.add(new SetCardInfo("Chaoslace", 139, Rarity.RARE, mage.cards.c.Chaoslace.class));
+ cards.add(new SetCardInfo("Circle of Protection: Blue", 10, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlue.class));
+ cards.add(new SetCardInfo("Circle of Protection: Green", 11, Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class));
+ cards.add(new SetCardInfo("Circle of Protection: Red", 12, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class));
+ cards.add(new SetCardInfo("Circle of Protection: White", 13, Rarity.COMMON, mage.cards.c.CircleOfProtectionWhite.class));
+ cards.add(new SetCardInfo("Clockwork Beast", 236, Rarity.RARE, mage.cards.c.ClockworkBeast.class));
+ cards.add(new SetCardInfo("Clone", 51, Rarity.UNCOMMON, mage.cards.c.Clone.class));
+ cards.add(new SetCardInfo("Cockatrice", 189, Rarity.RARE, mage.cards.c.Cockatrice.class));
+ cards.add(new SetCardInfo("Consecrate Land", 14, Rarity.UNCOMMON, mage.cards.c.ConsecrateLand.class));
+ cards.add(new SetCardInfo("Conservator", 237, Rarity.UNCOMMON, mage.cards.c.Conservator.class));
+ cards.add(new SetCardInfo("Control Magic", 52, Rarity.UNCOMMON, mage.cards.c.ControlMagic.class));
+ cards.add(new SetCardInfo("Conversion", 15, Rarity.UNCOMMON, mage.cards.c.Conversion.class));
+ cards.add(new SetCardInfo("Copper Tablet", 238, Rarity.UNCOMMON, mage.cards.c.CopperTablet.class));
+ cards.add(new SetCardInfo("Copy Artifact", 53, Rarity.RARE, mage.cards.c.CopyArtifact.class));
+ cards.add(new SetCardInfo("Counterspell", 54, Rarity.UNCOMMON, mage.cards.c.Counterspell.class));
+ cards.add(new SetCardInfo("Craw Wurm", 190, Rarity.COMMON, mage.cards.c.CrawWurm.class));
+ cards.add(new SetCardInfo("Creature Bond", 55, Rarity.COMMON, mage.cards.c.CreatureBond.class));
+ cards.add(new SetCardInfo("Crusade", 16, Rarity.RARE, mage.cards.c.Crusade.class));
+ cards.add(new SetCardInfo("Crystal Rod", 239, Rarity.UNCOMMON, mage.cards.c.CrystalRod.class));
+ cards.add(new SetCardInfo("Cursed Land", 97, Rarity.UNCOMMON, mage.cards.c.CursedLand.class));
+ cards.add(new SetCardInfo("Cyclopean Tomb", 240, Rarity.RARE, mage.cards.c.CyclopeanTomb.class));
+ cards.add(new SetCardInfo("Dark Ritual", 98, Rarity.COMMON, mage.cards.d.DarkRitual.class));
+ cards.add(new SetCardInfo("Death Ward", 17, Rarity.COMMON, mage.cards.d.DeathWard.class));
+ cards.add(new SetCardInfo("Deathgrip", 100, Rarity.UNCOMMON, mage.cards.d.Deathgrip.class));
+ cards.add(new SetCardInfo("Deathlace", 101, Rarity.RARE, mage.cards.d.Deathlace.class));
+ cards.add(new SetCardInfo("Demonic Hordes", 103, Rarity.RARE, mage.cards.d.DemonicHordes.class));
+ cards.add(new SetCardInfo("Demonic Tutor", 104, Rarity.UNCOMMON, mage.cards.d.DemonicTutor.class));
+ cards.add(new SetCardInfo("Dingus Egg", 241, Rarity.RARE, mage.cards.d.DingusEgg.class));
+ cards.add(new SetCardInfo("Disenchant", 18, Rarity.COMMON, mage.cards.d.Disenchant.class));
+ cards.add(new SetCardInfo("Disintegrate", 140, Rarity.COMMON, mage.cards.d.Disintegrate.class));
+ cards.add(new SetCardInfo("Disrupting Scepter", 242, Rarity.RARE, mage.cards.d.DisruptingScepter.class));
+ cards.add(new SetCardInfo("Dragon Whelp", 141, Rarity.UNCOMMON, mage.cards.d.DragonWhelp.class));
+ cards.add(new SetCardInfo("Drain Life", 105, Rarity.COMMON, mage.cards.d.DrainLife.class));
+ cards.add(new SetCardInfo("Drain Power", 56, Rarity.RARE, mage.cards.d.DrainPower.class));
+ cards.add(new SetCardInfo("Drudge Skeletons", 106, Rarity.COMMON, mage.cards.d.DrudgeSkeletons.class));
+ cards.add(new SetCardInfo("Dwarven Demolition Team", 142, Rarity.UNCOMMON, mage.cards.d.DwarvenDemolitionTeam.class));
+ cards.add(new SetCardInfo("Dwarven Warriors", 143, Rarity.COMMON, mage.cards.d.DwarvenWarriors.class));
+ cards.add(new SetCardInfo("Earth Elemental", 144, Rarity.UNCOMMON, mage.cards.e.EarthElemental.class));
+ cards.add(new SetCardInfo("Earthbind", 145, Rarity.COMMON, mage.cards.e.Earthbind.class));
+ cards.add(new SetCardInfo("Earthquake", 146, Rarity.RARE, mage.cards.e.Earthquake.class));
+ cards.add(new SetCardInfo("Elvish Archers", 191, Rarity.RARE, mage.cards.e.ElvishArchers.class));
+ cards.add(new SetCardInfo("Evil Presence", 107, Rarity.UNCOMMON, mage.cards.e.EvilPresence.class));
+ cards.add(new SetCardInfo("False Orders", 147, Rarity.COMMON, mage.cards.f.FalseOrders.class));
+ cards.add(new SetCardInfo("Farmstead", 19, Rarity.RARE, mage.cards.f.Farmstead.class));
+ cards.add(new SetCardInfo("Fastbond", 192, Rarity.RARE, mage.cards.f.Fastbond.class));
+ cards.add(new SetCardInfo("Fear", 108, Rarity.COMMON, mage.cards.f.Fear.class));
+ cards.add(new SetCardInfo("Feedback", 57, Rarity.UNCOMMON, mage.cards.f.Feedback.class));
+ cards.add(new SetCardInfo("Fire Elemental", 148, Rarity.UNCOMMON, mage.cards.f.FireElemental.class));
+ cards.add(new SetCardInfo("Fireball", 149, Rarity.COMMON, mage.cards.f.Fireball.class));
+ cards.add(new SetCardInfo("Firebreathing", 150, Rarity.COMMON, mage.cards.f.Firebreathing.class));
+ cards.add(new SetCardInfo("Flashfires", 151, Rarity.UNCOMMON, mage.cards.f.Flashfires.class));
+ cards.add(new SetCardInfo("Flight", 58, Rarity.COMMON, mage.cards.f.Flight.class));
+ cards.add(new SetCardInfo("Fog", 193, Rarity.COMMON, mage.cards.f.Fog.class));
+ cards.add(new SetCardInfo("Force of Nature", 194, Rarity.RARE, mage.cards.f.ForceOfNature.class));
+ cards.add(new SetCardInfo("Forcefield", 243, Rarity.RARE, mage.cards.f.Forcefield.class));
+ cards.add(new SetCardInfo("Forest", 294, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 295, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Fork", 152, Rarity.RARE, mage.cards.f.Fork.class));
+ cards.add(new SetCardInfo("Frozen Shade", 109, Rarity.COMMON, mage.cards.f.FrozenShade.class));
+ cards.add(new SetCardInfo("Fungusaur", 195, Rarity.RARE, mage.cards.f.Fungusaur.class));
+ cards.add(new SetCardInfo("Gaea's Liege", 196, 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", 197, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
+ cards.add(new SetCardInfo("Giant Spider", 198, Rarity.COMMON, mage.cards.g.GiantSpider.class));
+ cards.add(new SetCardInfo("Glasses of Urza", 245, Rarity.UNCOMMON, mage.cards.g.GlassesOfUrza.class));
+ cards.add(new SetCardInfo("Gloom", 110, Rarity.UNCOMMON, mage.cards.g.Gloom.class));
+ cards.add(new SetCardInfo("Goblin Balloon Brigade", 153, Rarity.UNCOMMON, mage.cards.g.GoblinBalloonBrigade.class));
+ cards.add(new SetCardInfo("Goblin King", 154, Rarity.RARE, mage.cards.g.GoblinKing.class));
+ cards.add(new SetCardInfo("Granite Gargoyle", 155, Rarity.RARE, mage.cards.g.GraniteGargoyle.class));
+ cards.add(new SetCardInfo("Gray Ogre", 156, Rarity.COMMON, mage.cards.g.GrayOgre.class));
+ cards.add(new SetCardInfo("Green Ward", 20, Rarity.UNCOMMON, mage.cards.g.GreenWard.class));
+ cards.add(new SetCardInfo("Grizzly Bears", 199, Rarity.COMMON, mage.cards.g.GrizzlyBears.class));
+ cards.add(new SetCardInfo("Guardian Angel", 21, Rarity.COMMON, mage.cards.g.GuardianAngel.class));
+ cards.add(new SetCardInfo("Healing Salve", 22, Rarity.COMMON, mage.cards.h.HealingSalve.class));
+ cards.add(new SetCardInfo("Helm of Chatzuk", 246, Rarity.RARE, mage.cards.h.HelmOfChatzuk.class));
+ cards.add(new SetCardInfo("Hill Giant", 157, Rarity.COMMON, mage.cards.h.HillGiant.class));
+ cards.add(new SetCardInfo("Holy Armor", 23, Rarity.COMMON, mage.cards.h.HolyArmor.class));
+ cards.add(new SetCardInfo("Holy Strength", 24, Rarity.COMMON, mage.cards.h.HolyStrength.class));
+ cards.add(new SetCardInfo("Howl from Beyond", 111, Rarity.COMMON, mage.cards.h.HowlFromBeyond.class));
+ cards.add(new SetCardInfo("Howling Mine", 247, Rarity.RARE, mage.cards.h.HowlingMine.class));
+ cards.add(new SetCardInfo("Hurloon Minotaur", 158, Rarity.COMMON, mage.cards.h.HurloonMinotaur.class));
+ cards.add(new SetCardInfo("Hurricane", 200, Rarity.UNCOMMON, mage.cards.h.Hurricane.class));
+ cards.add(new SetCardInfo("Hypnotic Specter", 112, Rarity.UNCOMMON, mage.cards.h.HypnoticSpecter.class));
+ cards.add(new SetCardInfo("Ice Storm", 201, Rarity.UNCOMMON, mage.cards.i.IceStorm.class));
+ cards.add(new SetCardInfo("Icy Manipulator", 248, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class));
+ cards.add(new SetCardInfo("Instill Energy", 202, Rarity.UNCOMMON, mage.cards.i.InstillEnergy.class));
+ cards.add(new SetCardInfo("Invisibility", 59, Rarity.COMMON, mage.cards.i.Invisibility.class));
+ cards.add(new SetCardInfo("Iron Star", 250, Rarity.UNCOMMON, mage.cards.i.IronStar.class));
+ cards.add(new SetCardInfo("Ironclaw Orcs", 159, Rarity.COMMON, mage.cards.i.IronclawOrcs.class));
+ cards.add(new SetCardInfo("Ironroot Treefolk", 203, Rarity.COMMON, mage.cards.i.IronrootTreefolk.class));
+ cards.add(new SetCardInfo("Island Sanctuary", 25, Rarity.RARE, mage.cards.i.IslandSanctuary.class));
+ cards.add(new SetCardInfo("Island", 288, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 289, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ 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", 60, Rarity.COMMON, mage.cards.j.Jump.class));
+ cards.add(new SetCardInfo("Karma", 26, Rarity.UNCOMMON, mage.cards.k.Karma.class));
+ cards.add(new SetCardInfo("Keldon Warlord", 160, Rarity.UNCOMMON, mage.cards.k.KeldonWarlord.class));
+ cards.add(new SetCardInfo("Kormus Bell", 256, Rarity.RARE, mage.cards.k.KormusBell.class));
+ cards.add(new SetCardInfo("Kudzu", 204, Rarity.RARE, mage.cards.k.Kudzu.class));
+ cards.add(new SetCardInfo("Lance", 27, Rarity.UNCOMMON, mage.cards.l.Lance.class));
+ cards.add(new SetCardInfo("Ley Druid", 205, Rarity.UNCOMMON, mage.cards.l.LeyDruid.class));
+ cards.add(new SetCardInfo("Library of Leng", 257, Rarity.UNCOMMON, mage.cards.l.LibraryOfLeng.class));
+ cards.add(new SetCardInfo("Lich", 113, Rarity.RARE, mage.cards.l.Lich.class));
+ cards.add(new SetCardInfo("Lifeforce", 206, Rarity.UNCOMMON, mage.cards.l.Lifeforce.class));
+ cards.add(new SetCardInfo("Lifelace", 207, Rarity.RARE, mage.cards.l.Lifelace.class));
+ cards.add(new SetCardInfo("Lifetap", 61, Rarity.UNCOMMON, mage.cards.l.Lifetap.class));
+ cards.add(new SetCardInfo("Lightning Bolt", 161, Rarity.COMMON, mage.cards.l.LightningBolt.class));
+ cards.add(new SetCardInfo("Living Artifact", 208, Rarity.RARE, mage.cards.l.LivingArtifact.class));
+ cards.add(new SetCardInfo("Living Lands", 209, Rarity.RARE, mage.cards.l.LivingLands.class));
+ cards.add(new SetCardInfo("Living Wall", 258, Rarity.UNCOMMON, mage.cards.l.LivingWall.class));
+ cards.add(new SetCardInfo("Llanowar Elves", 210, Rarity.COMMON, mage.cards.l.LlanowarElves.class));
+ cards.add(new SetCardInfo("Lord of Atlantis", 62, Rarity.RARE, mage.cards.l.LordOfAtlantis.class));
+ cards.add(new SetCardInfo("Lord of the Pit", 114, Rarity.RARE, mage.cards.l.LordOfThePit.class));
+ cards.add(new SetCardInfo("Lure", 211, Rarity.UNCOMMON, mage.cards.l.Lure.class));
+ cards.add(new SetCardInfo("Mahamoti Djinn", 64, Rarity.RARE, mage.cards.m.MahamotiDjinn.class));
+ cards.add(new SetCardInfo("Mana Flare", 162, Rarity.RARE, mage.cards.m.ManaFlare.class));
+ cards.add(new SetCardInfo("Mana Short", 65, Rarity.RARE, mage.cards.m.ManaShort.class));
+ cards.add(new SetCardInfo("Mana Vault", 259, Rarity.RARE, mage.cards.m.ManaVault.class));
+ cards.add(new SetCardInfo("Manabarbs", 163, Rarity.RARE, mage.cards.m.Manabarbs.class));
+ cards.add(new SetCardInfo("Meekstone", 260, Rarity.RARE, mage.cards.m.Meekstone.class));
+ cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 66, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class));
+ cards.add(new SetCardInfo("Mesa Pegasus", 28, Rarity.COMMON, mage.cards.m.MesaPegasus.class));
+ cards.add(new SetCardInfo("Mind Twist", 115, Rarity.RARE, mage.cards.m.MindTwist.class));
+ cards.add(new SetCardInfo("Mons's Goblin Raiders", 164, Rarity.COMMON, mage.cards.m.MonssGoblinRaiders.class));
+ cards.add(new SetCardInfo("Mountain", 292, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 293, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mox Emerald", 261, Rarity.RARE, mage.cards.m.MoxEmerald.class));
+ cards.add(new SetCardInfo("Mox Jet", 262, Rarity.RARE, mage.cards.m.MoxJet.class));
+ cards.add(new SetCardInfo("Mox Pearl", 263, Rarity.RARE, mage.cards.m.MoxPearl.class));
+ cards.add(new SetCardInfo("Mox Ruby", 264, Rarity.RARE, mage.cards.m.MoxRuby.class));
+ cards.add(new SetCardInfo("Mox Sapphire", 265, Rarity.RARE, mage.cards.m.MoxSapphire.class));
+ cards.add(new SetCardInfo("Natural Selection", 212, Rarity.RARE, mage.cards.n.NaturalSelection.class));
+ cards.add(new SetCardInfo("Nether Shadow", 116, Rarity.RARE, mage.cards.n.NetherShadow.class));
+ cards.add(new SetCardInfo("Nettling Imp", 117, Rarity.UNCOMMON, mage.cards.n.NettlingImp.class));
+ cards.add(new SetCardInfo("Nevinyrral's Disk", 266, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class));
+ cards.add(new SetCardInfo("Nightmare", 118, Rarity.RARE, mage.cards.n.Nightmare.class));
+ cards.add(new SetCardInfo("Northern Paladin", 29, Rarity.RARE, mage.cards.n.NorthernPaladin.class));
+ cards.add(new SetCardInfo("Obsianus Golem", 267, Rarity.UNCOMMON, mage.cards.o.ObsianusGolem.class));
+ cards.add(new SetCardInfo("Orcish Artillery", 165, Rarity.UNCOMMON, mage.cards.o.OrcishArtillery.class));
+ cards.add(new SetCardInfo("Orcish Oriflamme", 166, Rarity.UNCOMMON, mage.cards.o.OrcishOriflamme.class));
+ cards.add(new SetCardInfo("Paralyze", 119, Rarity.COMMON, mage.cards.p.Paralyze.class));
+ cards.add(new SetCardInfo("Pearled Unicorn", 30, Rarity.COMMON, mage.cards.p.PearledUnicorn.class));
+ cards.add(new SetCardInfo("Personal Incarnation", 31, Rarity.RARE, mage.cards.p.PersonalIncarnation.class));
+ cards.add(new SetCardInfo("Pestilence", 120, Rarity.COMMON, mage.cards.p.Pestilence.class));
+ cards.add(new SetCardInfo("Phantasmal Forces", 67, Rarity.UNCOMMON, mage.cards.p.PhantasmalForces.class));
+ cards.add(new SetCardInfo("Phantasmal Terrain", 68, Rarity.COMMON, mage.cards.p.PhantasmalTerrain.class));
+ cards.add(new SetCardInfo("Phantom Monster", 69, Rarity.UNCOMMON, mage.cards.p.PhantomMonster.class));
+ cards.add(new SetCardInfo("Pirate Ship", 70, Rarity.RARE, mage.cards.p.PirateShip.class));
+ cards.add(new SetCardInfo("Plague Rats", 121, Rarity.COMMON, mage.cards.p.PlagueRats.class));
+ cards.add(new SetCardInfo("Plains", 286, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plateau", 279, Rarity.RARE, mage.cards.p.Plateau.class));
+ cards.add(new SetCardInfo("Power Leak", 71, Rarity.COMMON, mage.cards.p.PowerLeak.class));
+ cards.add(new SetCardInfo("Power Sink", 72, Rarity.COMMON, mage.cards.p.PowerSink.class));
+ cards.add(new SetCardInfo("Power Surge", 167, Rarity.RARE, mage.cards.p.PowerSurge.class));
+ cards.add(new SetCardInfo("Prodigal Sorcerer", 73, Rarity.COMMON, mage.cards.p.ProdigalSorcerer.class));
+ cards.add(new SetCardInfo("Psionic Blast", 74, Rarity.UNCOMMON, mage.cards.p.PsionicBlast.class));
+ cards.add(new SetCardInfo("Psychic Venom", 75, Rarity.COMMON, mage.cards.p.PsychicVenom.class));
+ cards.add(new SetCardInfo("Purelace", 32, Rarity.RARE, mage.cards.p.Purelace.class));
+ cards.add(new SetCardInfo("Raging River", 168, Rarity.RARE, mage.cards.r.RagingRiver.class));
+ cards.add(new SetCardInfo("Raise Dead", 122, Rarity.COMMON, mage.cards.r.RaiseDead.class));
+ cards.add(new SetCardInfo("Red Elemental Blast", 169, Rarity.COMMON, mage.cards.r.RedElementalBlast.class));
+ cards.add(new SetCardInfo("Red Ward", 33, Rarity.UNCOMMON, mage.cards.r.RedWard.class));
+ cards.add(new SetCardInfo("Regeneration", 213, Rarity.COMMON, mage.cards.r.Regeneration.class));
+ cards.add(new SetCardInfo("Regrowth", 214, Rarity.UNCOMMON, mage.cards.r.Regrowth.class));
+ cards.add(new SetCardInfo("Resurrection", 34, Rarity.UNCOMMON, mage.cards.r.Resurrection.class));
+ cards.add(new SetCardInfo("Reverse Damage", 35, Rarity.RARE, mage.cards.r.ReverseDamage.class));
+ cards.add(new SetCardInfo("Righteousness", 36, Rarity.RARE, mage.cards.r.Righteousness.class));
+ cards.add(new SetCardInfo("Roc of Kher Ridges", 170, Rarity.RARE, mage.cards.r.RocOfKherRidges.class));
+ cards.add(new SetCardInfo("Rock Hydra", 171, 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", 123, Rarity.RARE, mage.cards.r.RoyalAssassin.class));
+ cards.add(new SetCardInfo("Sacrifice", 124, Rarity.UNCOMMON, mage.cards.s.Sacrifice.class));
+ cards.add(new SetCardInfo("Samite Healer", 37, Rarity.COMMON, mage.cards.s.SamiteHealer.class));
+ cards.add(new SetCardInfo("Savannah Lions", 38, Rarity.RARE, mage.cards.s.SavannahLions.class));
+ cards.add(new SetCardInfo("Savannah", 280, Rarity.RARE, mage.cards.s.Savannah.class));
+ cards.add(new SetCardInfo("Scathe Zombies", 125, Rarity.COMMON, mage.cards.s.ScatheZombies.class));
+ cards.add(new SetCardInfo("Scavenging Ghoul", 126, Rarity.UNCOMMON, mage.cards.s.ScavengingGhoul.class));
+ cards.add(new SetCardInfo("Scrubland", 281, Rarity.RARE, mage.cards.s.Scrubland.class));
+ cards.add(new SetCardInfo("Scryb Sprites", 215, Rarity.COMMON, mage.cards.s.ScrybSprites.class));
+ cards.add(new SetCardInfo("Sea Serpent", 76, Rarity.COMMON, mage.cards.s.SeaSerpent.class));
+ cards.add(new SetCardInfo("Sedge Troll", 172, Rarity.RARE, mage.cards.s.SedgeTroll.class));
+ cards.add(new SetCardInfo("Sengir Vampire", 127, Rarity.UNCOMMON, mage.cards.s.SengirVampire.class));
+ cards.add(new SetCardInfo("Serra Angel", 39, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class));
+ cards.add(new SetCardInfo("Shanodin Dryads", 216, Rarity.COMMON, mage.cards.s.ShanodinDryads.class));
+ cards.add(new SetCardInfo("Shatter", 173, Rarity.COMMON, mage.cards.s.Shatter.class));
+ cards.add(new SetCardInfo("Shivan Dragon", 174, Rarity.RARE, mage.cards.s.ShivanDragon.class));
+ cards.add(new SetCardInfo("Simulacrum", 128, Rarity.UNCOMMON, mage.cards.s.Simulacrum.class));
+ cards.add(new SetCardInfo("Sinkhole", 129, Rarity.COMMON, mage.cards.s.Sinkhole.class));
+ cards.add(new SetCardInfo("Siren's Call", 77, Rarity.UNCOMMON, mage.cards.s.SirensCall.class));
+ cards.add(new SetCardInfo("Smoke", 175, Rarity.RARE, mage.cards.s.Smoke.class));
+ cards.add(new SetCardInfo("Sol Ring", 269, Rarity.UNCOMMON, mage.cards.s.SolRing.class));
+ cards.add(new SetCardInfo("Soul Net", 270, Rarity.UNCOMMON, mage.cards.s.SoulNet.class));
+ cards.add(new SetCardInfo("Spell Blast", 79, Rarity.COMMON, mage.cards.s.SpellBlast.class));
+ cards.add(new SetCardInfo("Stasis", 80, Rarity.RARE, mage.cards.s.Stasis.class));
+ cards.add(new SetCardInfo("Steal Artifact", 81, Rarity.UNCOMMON, mage.cards.s.StealArtifact.class));
+ cards.add(new SetCardInfo("Stone Giant", 176, Rarity.UNCOMMON, mage.cards.s.StoneGiant.class));
+ cards.add(new SetCardInfo("Stone Rain", 177, Rarity.COMMON, mage.cards.s.StoneRain.class));
+ cards.add(new SetCardInfo("Stream of Life", 217, Rarity.COMMON, mage.cards.s.StreamOfLife.class));
+ cards.add(new SetCardInfo("Sunglasses of Urza", 271, Rarity.RARE, mage.cards.s.SunglassesOfUrza.class));
+ cards.add(new SetCardInfo("Swamp", 290, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 291, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swords to Plowshares", 40, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
+ cards.add(new SetCardInfo("Taiga", 282, Rarity.RARE, mage.cards.t.Taiga.class));
+ cards.add(new SetCardInfo("Terror", 130, Rarity.COMMON, mage.cards.t.Terror.class));
+ cards.add(new SetCardInfo("The Hive", 272, Rarity.RARE, mage.cards.t.TheHive.class));
+ cards.add(new SetCardInfo("Thicket Basilisk", 218, Rarity.UNCOMMON, mage.cards.t.ThicketBasilisk.class));
+ cards.add(new SetCardInfo("Thoughtlace", 82, Rarity.RARE, mage.cards.t.Thoughtlace.class));
+ cards.add(new SetCardInfo("Throne of Bone", 273, Rarity.UNCOMMON, mage.cards.t.ThroneOfBone.class));
+ cards.add(new SetCardInfo("Timber Wolves", 219, Rarity.RARE, mage.cards.t.TimberWolves.class));
+ cards.add(new SetCardInfo("Time Vault", 274, Rarity.RARE, mage.cards.t.TimeVault.class));
+ cards.add(new SetCardInfo("Time Walk", 83, Rarity.RARE, mage.cards.t.TimeWalk.class));
+ cards.add(new SetCardInfo("Timetwister", 84, Rarity.RARE, mage.cards.t.Timetwister.class));
+ cards.add(new SetCardInfo("Tranquility", 220, Rarity.COMMON, mage.cards.t.Tranquility.class));
+ cards.add(new SetCardInfo("Tropical Island", 283, Rarity.RARE, mage.cards.t.TropicalIsland.class));
+ cards.add(new SetCardInfo("Tsunami", 221, Rarity.UNCOMMON, mage.cards.t.Tsunami.class));
+ cards.add(new SetCardInfo("Tundra", 284, Rarity.RARE, mage.cards.t.Tundra.class));
+ cards.add(new SetCardInfo("Tunnel", 178, Rarity.UNCOMMON, mage.cards.t.Tunnel.class));
+ cards.add(new SetCardInfo("Twiddle", 85, Rarity.COMMON, mage.cards.t.Twiddle.class));
+ cards.add(new SetCardInfo("Two-Headed Giant of Foriys", 179, Rarity.RARE, mage.cards.t.TwoHeadedGiantOfForiys.class));
+ cards.add(new SetCardInfo("Underground Sea", 285, Rarity.RARE, mage.cards.u.UndergroundSea.class));
+ cards.add(new SetCardInfo("Unholy Strength", 131, Rarity.COMMON, mage.cards.u.UnholyStrength.class));
+ cards.add(new SetCardInfo("Unsummon", 86, Rarity.COMMON, mage.cards.u.Unsummon.class));
+ cards.add(new SetCardInfo("Uthden Troll", 180, Rarity.UNCOMMON, mage.cards.u.UthdenTroll.class));
+ cards.add(new SetCardInfo("Verduran Enchantress", 222, Rarity.RARE, mage.cards.v.VerduranEnchantress.class));
+ cards.add(new SetCardInfo("Vesuvan Doppelganger", 87, Rarity.RARE, mage.cards.v.VesuvanDoppelganger.class));
+ cards.add(new SetCardInfo("Veteran Bodyguard", 41, Rarity.RARE, mage.cards.v.VeteranBodyguard.class));
+ cards.add(new SetCardInfo("Volcanic Eruption", 88, Rarity.RARE, mage.cards.v.VolcanicEruption.class));
+ cards.add(new SetCardInfo("Wall of Air", 89, Rarity.UNCOMMON, mage.cards.w.WallOfAir.class));
+ cards.add(new SetCardInfo("Wall of Bone", 132, Rarity.UNCOMMON, mage.cards.w.WallOfBone.class));
+ cards.add(new SetCardInfo("Wall of Brambles", 223, Rarity.UNCOMMON, mage.cards.w.WallOfBrambles.class));
+ cards.add(new SetCardInfo("Wall of Fire", 181, Rarity.UNCOMMON, mage.cards.w.WallOfFire.class));
+ cards.add(new SetCardInfo("Wall of Ice", 224, Rarity.UNCOMMON, mage.cards.w.WallOfIce.class));
+ cards.add(new SetCardInfo("Wall of Stone", 182, Rarity.UNCOMMON, mage.cards.w.WallOfStone.class));
+ cards.add(new SetCardInfo("Wall of Swords", 42, Rarity.UNCOMMON, mage.cards.w.WallOfSwords.class));
+ cards.add(new SetCardInfo("Wall of Water", 90, Rarity.UNCOMMON, mage.cards.w.WallOfWater.class));
+ cards.add(new SetCardInfo("Wall of Wood", 225, Rarity.COMMON, mage.cards.w.WallOfWood.class));
+ cards.add(new SetCardInfo("Wanderlust", 226, Rarity.UNCOMMON, mage.cards.w.Wanderlust.class));
+ cards.add(new SetCardInfo("War Mammoth", 227, Rarity.COMMON, mage.cards.w.WarMammoth.class));
+ cards.add(new SetCardInfo("Warp Artifact", 133, Rarity.RARE, mage.cards.w.WarpArtifact.class));
+ cards.add(new SetCardInfo("Water Elemental", 91, Rarity.UNCOMMON, mage.cards.w.WaterElemental.class));
+ cards.add(new SetCardInfo("Weakness", 134, Rarity.COMMON, mage.cards.w.Weakness.class));
+ cards.add(new SetCardInfo("Web", 228, Rarity.RARE, mage.cards.w.Web.class));
+ cards.add(new SetCardInfo("Wheel of Fortune", 183, Rarity.RARE, mage.cards.w.WheelOfFortune.class));
+ cards.add(new SetCardInfo("White Knight", 43, Rarity.UNCOMMON, mage.cards.w.WhiteKnight.class));
+ cards.add(new SetCardInfo("White Ward", 44, Rarity.UNCOMMON, mage.cards.w.WhiteWard.class));
+ cards.add(new SetCardInfo("Wild Growth", 229, Rarity.COMMON, mage.cards.w.WildGrowth.class));
+ cards.add(new SetCardInfo("Will-o'-the-Wisp", 135, Rarity.RARE, mage.cards.w.WillOTheWisp.class));
+ cards.add(new SetCardInfo("Winter Orb", 275, Rarity.RARE, mage.cards.w.WinterOrb.class));
+ cards.add(new SetCardInfo("Wooden Sphere", 276, Rarity.UNCOMMON, mage.cards.w.WoodenSphere.class));
+ cards.add(new SetCardInfo("Wrath of God", 45, Rarity.RARE, mage.cards.w.WrathOfGod.class));
+ cards.add(new SetCardInfo("Zombie Master", 137, Rarity.RARE, mage.cards.z.ZombieMaster.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/LimitedEditionBeta.java b/Mage.Sets/src/mage/sets/LimitedEditionBeta.java
index ba6e2fe89db..4046a234975 100644
--- a/Mage.Sets/src/mage/sets/LimitedEditionBeta.java
+++ b/Mage.Sets/src/mage/sets/LimitedEditionBeta.java
@@ -1,322 +1,322 @@
-package mage.sets;
-
-import mage.cards.ExpansionSet;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class LimitedEditionBeta extends ExpansionSet {
-
- private static final LimitedEditionBeta instance = new LimitedEditionBeta();
-
- public static LimitedEditionBeta getInstance() {
- return instance;
- }
-
- private LimitedEditionBeta() {
- super("Limited Edition Beta", "LEB", ExpansionSet.buildDate(1993, 10, 1), SetType.CORE);
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Air Elemental", 47, Rarity.UNCOMMON, mage.cards.a.AirElemental.class));
- cards.add(new SetCardInfo("Ancestral Recall", 48, Rarity.RARE, mage.cards.a.AncestralRecall.class));
- cards.add(new SetCardInfo("Animate Artifact", 49, Rarity.UNCOMMON, mage.cards.a.AnimateArtifact.class));
- cards.add(new SetCardInfo("Animate Dead", 93, Rarity.UNCOMMON, mage.cards.a.AnimateDead.class));
- cards.add(new SetCardInfo("Animate Wall", 1, Rarity.RARE, mage.cards.a.AnimateWall.class));
- cards.add(new SetCardInfo("Ankh of Mishra", 231, Rarity.RARE, mage.cards.a.AnkhOfMishra.class));
- cards.add(new SetCardInfo("Armageddon", 2, Rarity.RARE, mage.cards.a.Armageddon.class));
- cards.add(new SetCardInfo("Aspect of Wolf", 185, Rarity.RARE, mage.cards.a.AspectOfWolf.class));
- cards.add(new SetCardInfo("Bad Moon", 94, Rarity.RARE, mage.cards.b.BadMoon.class));
- cards.add(new SetCardInfo("Badlands", 278, Rarity.RARE, mage.cards.b.Badlands.class));
- cards.add(new SetCardInfo("Balance", 3, Rarity.RARE, mage.cards.b.Balance.class));
- cards.add(new SetCardInfo("Basalt Monolith", 232, Rarity.UNCOMMON, mage.cards.b.BasaltMonolith.class));
- cards.add(new SetCardInfo("Bayou", 279, Rarity.RARE, mage.cards.b.Bayou.class));
- cards.add(new SetCardInfo("Benalish Hero", 4, Rarity.COMMON, mage.cards.b.BenalishHero.class));
- cards.add(new SetCardInfo("Berserk", 186, Rarity.UNCOMMON, mage.cards.b.Berserk.class));
- cards.add(new SetCardInfo("Birds of Paradise", 187, Rarity.RARE, mage.cards.b.BirdsOfParadise.class));
- cards.add(new SetCardInfo("Black Knight", 95, Rarity.UNCOMMON, mage.cards.b.BlackKnight.class));
- cards.add(new SetCardInfo("Black Lotus", 233, Rarity.RARE, mage.cards.b.BlackLotus.class));
- cards.add(new SetCardInfo("Black Vise", 234, Rarity.UNCOMMON, mage.cards.b.BlackVise.class));
- cards.add(new SetCardInfo("Black Ward", 5, Rarity.UNCOMMON, mage.cards.b.BlackWard.class));
- cards.add(new SetCardInfo("Blaze of Glory", 6, Rarity.RARE, mage.cards.b.BlazeOfGlory.class));
- cards.add(new SetCardInfo("Blessing", 7, Rarity.RARE, mage.cards.b.Blessing.class));
- cards.add(new SetCardInfo("Blue Elemental Blast", 50, Rarity.COMMON, mage.cards.b.BlueElementalBlast.class));
- cards.add(new SetCardInfo("Blue Ward", 8, Rarity.UNCOMMON, mage.cards.b.BlueWard.class));
- cards.add(new SetCardInfo("Bog Wraith", 96, Rarity.UNCOMMON, mage.cards.b.BogWraith.class));
- cards.add(new SetCardInfo("Braingeyser", 51, Rarity.RARE, mage.cards.b.Braingeyser.class));
- cards.add(new SetCardInfo("Burrowing", 139, Rarity.UNCOMMON, mage.cards.b.Burrowing.class));
- cards.add(new SetCardInfo("Camouflage", 188, Rarity.UNCOMMON, mage.cards.c.Camouflage.class));
- cards.add(new SetCardInfo("Castle", 9, Rarity.UNCOMMON, mage.cards.c.Castle.class));
- cards.add(new SetCardInfo("Celestial Prism", 235, Rarity.UNCOMMON, mage.cards.c.CelestialPrism.class));
- cards.add(new SetCardInfo("Channel", 189, Rarity.UNCOMMON, mage.cards.c.Channel.class));
- cards.add(new SetCardInfo("Chaoslace", 140, Rarity.RARE, mage.cards.c.Chaoslace.class));
- cards.add(new SetCardInfo("Circle of Protection: Black", 10, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class));
- cards.add(new SetCardInfo("Circle of Protection: Blue", 11, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlue.class));
- cards.add(new SetCardInfo("Circle of Protection: Green", 12, Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class));
- cards.add(new SetCardInfo("Circle of Protection: Red", 13, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class));
- cards.add(new SetCardInfo("Circle of Protection: White", 14, Rarity.COMMON, mage.cards.c.CircleOfProtectionWhite.class));
- cards.add(new SetCardInfo("Clockwork Beast", 237, Rarity.RARE, mage.cards.c.ClockworkBeast.class));
- cards.add(new SetCardInfo("Clone", 52, Rarity.UNCOMMON, mage.cards.c.Clone.class));
- cards.add(new SetCardInfo("Cockatrice", 190, Rarity.RARE, mage.cards.c.Cockatrice.class));
- cards.add(new SetCardInfo("Consecrate Land", 15, Rarity.UNCOMMON, mage.cards.c.ConsecrateLand.class));
- cards.add(new SetCardInfo("Conservator", 238, Rarity.UNCOMMON, mage.cards.c.Conservator.class));
- cards.add(new SetCardInfo("Control Magic", 53, Rarity.UNCOMMON, mage.cards.c.ControlMagic.class));
- cards.add(new SetCardInfo("Conversion", 16, Rarity.UNCOMMON, mage.cards.c.Conversion.class));
- cards.add(new SetCardInfo("Copper Tablet", 239, Rarity.UNCOMMON, mage.cards.c.CopperTablet.class));
- cards.add(new SetCardInfo("Copy Artifact", 54, Rarity.RARE, mage.cards.c.CopyArtifact.class));
- cards.add(new SetCardInfo("Counterspell", 55, Rarity.UNCOMMON, mage.cards.c.Counterspell.class));
- cards.add(new SetCardInfo("Craw Wurm", 191, Rarity.COMMON, mage.cards.c.CrawWurm.class));
- cards.add(new SetCardInfo("Creature Bond", 56, Rarity.COMMON, mage.cards.c.CreatureBond.class));
- cards.add(new SetCardInfo("Crusade", 17, Rarity.RARE, mage.cards.c.Crusade.class));
- cards.add(new SetCardInfo("Crystal Rod", 240, Rarity.UNCOMMON, mage.cards.c.CrystalRod.class));
- cards.add(new SetCardInfo("Cursed Land", 98, Rarity.UNCOMMON, mage.cards.c.CursedLand.class));
- cards.add(new SetCardInfo("Cyclopean Tomb", 241, Rarity.RARE, mage.cards.c.CyclopeanTomb.class));
- cards.add(new SetCardInfo("Dark Ritual", 99, Rarity.COMMON, mage.cards.d.DarkRitual.class));
- cards.add(new SetCardInfo("Death Ward", 18, Rarity.COMMON, mage.cards.d.DeathWard.class));
- cards.add(new SetCardInfo("Deathgrip", 101, Rarity.UNCOMMON, mage.cards.d.Deathgrip.class));
- cards.add(new SetCardInfo("Deathlace", 102, Rarity.RARE, mage.cards.d.Deathlace.class));
- cards.add(new SetCardInfo("Demonic Hordes", 104, Rarity.RARE, mage.cards.d.DemonicHordes.class));
- cards.add(new SetCardInfo("Demonic Tutor", 105, Rarity.UNCOMMON, mage.cards.d.DemonicTutor.class));
- cards.add(new SetCardInfo("Dingus Egg", 242, Rarity.RARE, mage.cards.d.DingusEgg.class));
- cards.add(new SetCardInfo("Disenchant", 19, Rarity.COMMON, mage.cards.d.Disenchant.class));
- cards.add(new SetCardInfo("Disintegrate", 141, Rarity.COMMON, mage.cards.d.Disintegrate.class));
- cards.add(new SetCardInfo("Disrupting Scepter", 243, Rarity.RARE, mage.cards.d.DisruptingScepter.class));
- cards.add(new SetCardInfo("Dragon Whelp", 142, Rarity.UNCOMMON, mage.cards.d.DragonWhelp.class));
- cards.add(new SetCardInfo("Drain Life", 106, Rarity.COMMON, mage.cards.d.DrainLife.class));
- cards.add(new SetCardInfo("Drain Power", 57, Rarity.RARE, mage.cards.d.DrainPower.class));
- cards.add(new SetCardInfo("Drudge Skeletons", 107, Rarity.COMMON, mage.cards.d.DrudgeSkeletons.class));
- cards.add(new SetCardInfo("Dwarven Demolition Team", 143, Rarity.UNCOMMON, mage.cards.d.DwarvenDemolitionTeam.class));
- cards.add(new SetCardInfo("Dwarven Warriors", 144, Rarity.COMMON, mage.cards.d.DwarvenWarriors.class));
- cards.add(new SetCardInfo("Earth Elemental", 145, Rarity.UNCOMMON, mage.cards.e.EarthElemental.class));
- cards.add(new SetCardInfo("Earthbind", 146, Rarity.COMMON, mage.cards.e.Earthbind.class));
- cards.add(new SetCardInfo("Earthquake", 147, Rarity.RARE, mage.cards.e.Earthquake.class));
- cards.add(new SetCardInfo("Elvish Archers", 192, Rarity.RARE, mage.cards.e.ElvishArchers.class));
- cards.add(new SetCardInfo("Evil Presence", 108, Rarity.UNCOMMON, mage.cards.e.EvilPresence.class));
- cards.add(new SetCardInfo("False Orders", 148, Rarity.COMMON, mage.cards.f.FalseOrders.class));
- cards.add(new SetCardInfo("Farmstead", 20, Rarity.RARE, mage.cards.f.Farmstead.class));
- cards.add(new SetCardInfo("Fastbond", 193, Rarity.RARE, mage.cards.f.Fastbond.class));
- cards.add(new SetCardInfo("Fear", 109, Rarity.COMMON, mage.cards.f.Fear.class));
- cards.add(new SetCardInfo("Feedback", 58, Rarity.UNCOMMON, mage.cards.f.Feedback.class));
- cards.add(new SetCardInfo("Fire Elemental", 149, Rarity.UNCOMMON, mage.cards.f.FireElemental.class));
- cards.add(new SetCardInfo("Fireball", 150, Rarity.COMMON, mage.cards.f.Fireball.class));
- cards.add(new SetCardInfo("Firebreathing", 151, Rarity.COMMON, mage.cards.f.Firebreathing.class));
- cards.add(new SetCardInfo("Flashfires", 152, Rarity.UNCOMMON, mage.cards.f.Flashfires.class));
- cards.add(new SetCardInfo("Flight", 59, Rarity.COMMON, mage.cards.f.Flight.class));
- cards.add(new SetCardInfo("Fog", 194, Rarity.COMMON, mage.cards.f.Fog.class));
- cards.add(new SetCardInfo("Force of Nature", 195, Rarity.RARE, mage.cards.f.ForceOfNature.class));
- cards.add(new SetCardInfo("Forcefield", 244, Rarity.RARE, mage.cards.f.Forcefield.class));
- cards.add(new SetCardInfo("Forest", 300, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 301, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 302, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Fork", 153, Rarity.RARE, mage.cards.f.Fork.class));
- cards.add(new SetCardInfo("Frozen Shade", 110, Rarity.COMMON, mage.cards.f.FrozenShade.class));
- cards.add(new SetCardInfo("Fungusaur", 196, Rarity.RARE, mage.cards.f.Fungusaur.class));
- cards.add(new SetCardInfo("Gaea's Liege", 197, 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", 198, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
- cards.add(new SetCardInfo("Giant Spider", 199, Rarity.COMMON, mage.cards.g.GiantSpider.class));
- cards.add(new SetCardInfo("Glasses of Urza", 246, Rarity.UNCOMMON, mage.cards.g.GlassesOfUrza.class));
- cards.add(new SetCardInfo("Gloom", 111, Rarity.UNCOMMON, mage.cards.g.Gloom.class));
- cards.add(new SetCardInfo("Goblin Balloon Brigade", 154, Rarity.UNCOMMON, mage.cards.g.GoblinBalloonBrigade.class));
- cards.add(new SetCardInfo("Goblin King", 155, Rarity.RARE, mage.cards.g.GoblinKing.class));
- cards.add(new SetCardInfo("Granite Gargoyle", 156, Rarity.RARE, mage.cards.g.GraniteGargoyle.class));
- cards.add(new SetCardInfo("Gray Ogre", 157, Rarity.COMMON, mage.cards.g.GrayOgre.class));
- cards.add(new SetCardInfo("Green Ward", 21, Rarity.UNCOMMON, mage.cards.g.GreenWard.class));
- cards.add(new SetCardInfo("Grizzly Bears", 200, Rarity.COMMON, mage.cards.g.GrizzlyBears.class));
- cards.add(new SetCardInfo("Guardian Angel", 22, Rarity.COMMON, mage.cards.g.GuardianAngel.class));
- cards.add(new SetCardInfo("Healing Salve", 23, Rarity.COMMON, mage.cards.h.HealingSalve.class));
- cards.add(new SetCardInfo("Helm of Chatzuk", 247, Rarity.RARE, mage.cards.h.HelmOfChatzuk.class));
- cards.add(new SetCardInfo("Hill Giant", 158, Rarity.COMMON, mage.cards.h.HillGiant.class));
- cards.add(new SetCardInfo("Holy Armor", 24, Rarity.COMMON, mage.cards.h.HolyArmor.class));
- cards.add(new SetCardInfo("Holy Strength", 25, Rarity.COMMON, mage.cards.h.HolyStrength.class));
- cards.add(new SetCardInfo("Howl from Beyond", 112, Rarity.COMMON, mage.cards.h.HowlFromBeyond.class));
- cards.add(new SetCardInfo("Howling Mine", 248, Rarity.RARE, mage.cards.h.HowlingMine.class));
- cards.add(new SetCardInfo("Hurloon Minotaur", 159, Rarity.COMMON, mage.cards.h.HurloonMinotaur.class));
- cards.add(new SetCardInfo("Hurricane", 201, Rarity.UNCOMMON, mage.cards.h.Hurricane.class));
- cards.add(new SetCardInfo("Hypnotic Specter", 113, Rarity.UNCOMMON, mage.cards.h.HypnoticSpecter.class));
- cards.add(new SetCardInfo("Ice Storm", 202, Rarity.UNCOMMON, mage.cards.i.IceStorm.class));
- cards.add(new SetCardInfo("Icy Manipulator", 249, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class));
- cards.add(new SetCardInfo("Instill Energy", 203, Rarity.UNCOMMON, mage.cards.i.InstillEnergy.class));
- cards.add(new SetCardInfo("Invisibility", 60, Rarity.COMMON, mage.cards.i.Invisibility.class));
- cards.add(new SetCardInfo("Iron Star", 251, Rarity.UNCOMMON, mage.cards.i.IronStar.class));
- cards.add(new SetCardInfo("Ironclaw Orcs", 160, Rarity.COMMON, mage.cards.i.IronclawOrcs.class));
- cards.add(new SetCardInfo("Ironroot Treefolk", 204, Rarity.COMMON, mage.cards.i.IronrootTreefolk.class));
- cards.add(new SetCardInfo("Island Sanctuary", 26, Rarity.RARE, mage.cards.i.IslandSanctuary.class));
- cards.add(new SetCardInfo("Island", 291, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 292, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 293, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- 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));
- cards.add(new SetCardInfo("Karma", 27, Rarity.UNCOMMON, mage.cards.k.Karma.class));
- cards.add(new SetCardInfo("Keldon Warlord", 161, Rarity.UNCOMMON, mage.cards.k.KeldonWarlord.class));
- cards.add(new SetCardInfo("Kormus Bell", 257, Rarity.RARE, mage.cards.k.KormusBell.class));
- cards.add(new SetCardInfo("Kudzu", 205, Rarity.RARE, mage.cards.k.Kudzu.class));
- cards.add(new SetCardInfo("Lance", 28, Rarity.UNCOMMON, mage.cards.l.Lance.class));
- cards.add(new SetCardInfo("Ley Druid", 206, Rarity.UNCOMMON, mage.cards.l.LeyDruid.class));
- cards.add(new SetCardInfo("Library of Leng", 258, Rarity.UNCOMMON, mage.cards.l.LibraryOfLeng.class));
- cards.add(new SetCardInfo("Lich", 114, Rarity.RARE, mage.cards.l.Lich.class));
- cards.add(new SetCardInfo("Lifeforce", 207, Rarity.UNCOMMON, mage.cards.l.Lifeforce.class));
- cards.add(new SetCardInfo("Lifelace", 208, Rarity.RARE, mage.cards.l.Lifelace.class));
- cards.add(new SetCardInfo("Lifetap", 62, Rarity.UNCOMMON, mage.cards.l.Lifetap.class));
- cards.add(new SetCardInfo("Lightning Bolt", 162, Rarity.COMMON, mage.cards.l.LightningBolt.class));
- cards.add(new SetCardInfo("Living Artifact", 209, Rarity.RARE, mage.cards.l.LivingArtifact.class));
- cards.add(new SetCardInfo("Living Lands", 210, Rarity.RARE, mage.cards.l.LivingLands.class));
- cards.add(new SetCardInfo("Living Wall", 259, Rarity.UNCOMMON, mage.cards.l.LivingWall.class));
- cards.add(new SetCardInfo("Llanowar Elves", 211, Rarity.COMMON, mage.cards.l.LlanowarElves.class));
- cards.add(new SetCardInfo("Lord of Atlantis", 63, Rarity.RARE, mage.cards.l.LordOfAtlantis.class));
- cards.add(new SetCardInfo("Lord of the Pit", 115, Rarity.RARE, mage.cards.l.LordOfThePit.class));
- cards.add(new SetCardInfo("Lure", 212, Rarity.UNCOMMON, mage.cards.l.Lure.class));
- cards.add(new SetCardInfo("Mahamoti Djinn", 65, Rarity.RARE, mage.cards.m.MahamotiDjinn.class));
- cards.add(new SetCardInfo("Mana Flare", 163, Rarity.RARE, mage.cards.m.ManaFlare.class));
- cards.add(new SetCardInfo("Mana Short", 66, Rarity.RARE, mage.cards.m.ManaShort.class));
- cards.add(new SetCardInfo("Mana Vault", 260, Rarity.RARE, mage.cards.m.ManaVault.class));
- cards.add(new SetCardInfo("Manabarbs", 164, Rarity.RARE, mage.cards.m.Manabarbs.class));
- cards.add(new SetCardInfo("Meekstone", 261, Rarity.RARE, mage.cards.m.Meekstone.class));
- cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 67, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class));
- cards.add(new SetCardInfo("Mesa Pegasus", 29, Rarity.COMMON, mage.cards.m.MesaPegasus.class));
- cards.add(new SetCardInfo("Mind Twist", 116, Rarity.RARE, mage.cards.m.MindTwist.class));
- cards.add(new SetCardInfo("Mons's Goblin Raiders", 165, Rarity.COMMON, mage.cards.m.MonssGoblinRaiders.class));
- cards.add(new SetCardInfo("Mountain", 297, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 298, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 299, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mox Emerald", 262, Rarity.RARE, mage.cards.m.MoxEmerald.class));
- cards.add(new SetCardInfo("Mox Jet", 263, Rarity.RARE, mage.cards.m.MoxJet.class));
- cards.add(new SetCardInfo("Mox Pearl", 264, Rarity.RARE, mage.cards.m.MoxPearl.class));
- cards.add(new SetCardInfo("Mox Ruby", 265, Rarity.RARE, mage.cards.m.MoxRuby.class));
- cards.add(new SetCardInfo("Mox Sapphire", 266, Rarity.RARE, mage.cards.m.MoxSapphire.class));
- cards.add(new SetCardInfo("Natural Selection", 213, Rarity.RARE, mage.cards.n.NaturalSelection.class));
- cards.add(new SetCardInfo("Nether Shadow", 117, Rarity.RARE, mage.cards.n.NetherShadow.class));
- cards.add(new SetCardInfo("Nettling Imp", 118, Rarity.UNCOMMON, mage.cards.n.NettlingImp.class));
- cards.add(new SetCardInfo("Nevinyrral's Disk", 267, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class));
- cards.add(new SetCardInfo("Nightmare", 119, Rarity.RARE, mage.cards.n.Nightmare.class));
- cards.add(new SetCardInfo("Northern Paladin", 30, Rarity.RARE, mage.cards.n.NorthernPaladin.class));
- cards.add(new SetCardInfo("Obsianus Golem", 268, Rarity.UNCOMMON, mage.cards.o.ObsianusGolem.class));
- cards.add(new SetCardInfo("Orcish Artillery", 166, Rarity.UNCOMMON, mage.cards.o.OrcishArtillery.class));
- cards.add(new SetCardInfo("Orcish Oriflamme", 167, Rarity.UNCOMMON, mage.cards.o.OrcishOriflamme.class));
- cards.add(new SetCardInfo("Paralyze", 120, Rarity.COMMON, mage.cards.p.Paralyze.class));
- cards.add(new SetCardInfo("Pearled Unicorn", 31, Rarity.COMMON, mage.cards.p.PearledUnicorn.class));
- cards.add(new SetCardInfo("Personal Incarnation", 32, Rarity.RARE, mage.cards.p.PersonalIncarnation.class));
- cards.add(new SetCardInfo("Pestilence", 121, Rarity.COMMON, mage.cards.p.Pestilence.class));
- cards.add(new SetCardInfo("Phantasmal Forces", 68, Rarity.UNCOMMON, mage.cards.p.PhantasmalForces.class));
- cards.add(new SetCardInfo("Phantasmal Terrain", 69, Rarity.COMMON, mage.cards.p.PhantasmalTerrain.class));
- cards.add(new SetCardInfo("Phantom Monster", 70, Rarity.UNCOMMON, mage.cards.p.PhantomMonster.class));
- cards.add(new SetCardInfo("Pirate Ship", 71, Rarity.RARE, mage.cards.p.PirateShip.class));
- cards.add(new SetCardInfo("Plague Rats", 122, Rarity.COMMON, mage.cards.p.PlagueRats.class));
- cards.add(new SetCardInfo("Plains", 288, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 289, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 290, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plateau", 280, Rarity.RARE, mage.cards.p.Plateau.class));
- cards.add(new SetCardInfo("Power Leak", 72, Rarity.COMMON, mage.cards.p.PowerLeak.class));
- cards.add(new SetCardInfo("Power Sink", 73, Rarity.COMMON, mage.cards.p.PowerSink.class));
- cards.add(new SetCardInfo("Power Surge", 168, Rarity.RARE, mage.cards.p.PowerSurge.class));
- cards.add(new SetCardInfo("Prodigal Sorcerer", 74, Rarity.COMMON, mage.cards.p.ProdigalSorcerer.class));
- cards.add(new SetCardInfo("Psionic Blast", 75, Rarity.UNCOMMON, mage.cards.p.PsionicBlast.class));
- cards.add(new SetCardInfo("Psychic Venom", 76, Rarity.COMMON, mage.cards.p.PsychicVenom.class));
- cards.add(new SetCardInfo("Purelace", 33, Rarity.RARE, mage.cards.p.Purelace.class));
- cards.add(new SetCardInfo("Raging River", 169, Rarity.RARE, mage.cards.r.RagingRiver.class));
- cards.add(new SetCardInfo("Raise Dead", 123, Rarity.COMMON, mage.cards.r.RaiseDead.class));
- cards.add(new SetCardInfo("Red Elemental Blast", 170, Rarity.COMMON, mage.cards.r.RedElementalBlast.class));
- cards.add(new SetCardInfo("Red Ward", 34, Rarity.UNCOMMON, mage.cards.r.RedWard.class));
- cards.add(new SetCardInfo("Regeneration", 214, Rarity.COMMON, mage.cards.r.Regeneration.class));
- cards.add(new SetCardInfo("Regrowth", 215, Rarity.UNCOMMON, mage.cards.r.Regrowth.class));
- cards.add(new SetCardInfo("Resurrection", 35, Rarity.UNCOMMON, mage.cards.r.Resurrection.class));
- cards.add(new SetCardInfo("Reverse Damage", 36, Rarity.RARE, mage.cards.r.ReverseDamage.class));
- cards.add(new SetCardInfo("Righteousness", 37, 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", 124, Rarity.RARE, mage.cards.r.RoyalAssassin.class));
- cards.add(new SetCardInfo("Sacrifice", 125, Rarity.UNCOMMON, mage.cards.s.Sacrifice.class));
- cards.add(new SetCardInfo("Samite Healer", 38, Rarity.COMMON, mage.cards.s.SamiteHealer.class));
- cards.add(new SetCardInfo("Savannah Lions", 39, Rarity.RARE, mage.cards.s.SavannahLions.class));
- cards.add(new SetCardInfo("Savannah", 281, Rarity.RARE, mage.cards.s.Savannah.class));
- cards.add(new SetCardInfo("Scathe Zombies", 126, Rarity.COMMON, mage.cards.s.ScatheZombies.class));
- cards.add(new SetCardInfo("Scavenging Ghoul", 127, Rarity.UNCOMMON, mage.cards.s.ScavengingGhoul.class));
- cards.add(new SetCardInfo("Scrubland", 282, Rarity.RARE, mage.cards.s.Scrubland.class));
- cards.add(new SetCardInfo("Scryb Sprites", 216, Rarity.COMMON, mage.cards.s.ScrybSprites.class));
- cards.add(new SetCardInfo("Sea Serpent", 77, Rarity.COMMON, mage.cards.s.SeaSerpent.class));
- cards.add(new SetCardInfo("Sedge Troll", 173, Rarity.RARE, mage.cards.s.SedgeTroll.class));
- cards.add(new SetCardInfo("Sengir Vampire", 128, Rarity.UNCOMMON, mage.cards.s.SengirVampire.class));
- cards.add(new SetCardInfo("Serra Angel", 40, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class));
- cards.add(new SetCardInfo("Shanodin Dryads", 217, Rarity.COMMON, mage.cards.s.ShanodinDryads.class));
- cards.add(new SetCardInfo("Shatter", 174, Rarity.COMMON, mage.cards.s.Shatter.class));
- cards.add(new SetCardInfo("Shivan Dragon", 175, Rarity.RARE, mage.cards.s.ShivanDragon.class));
- cards.add(new SetCardInfo("Simulacrum", 129, Rarity.UNCOMMON, mage.cards.s.Simulacrum.class));
- cards.add(new SetCardInfo("Sinkhole", 130, Rarity.COMMON, mage.cards.s.Sinkhole.class));
- cards.add(new SetCardInfo("Siren's Call", 78, Rarity.UNCOMMON, mage.cards.s.SirensCall.class));
- cards.add(new SetCardInfo("Smoke", 176, Rarity.RARE, mage.cards.s.Smoke.class));
- cards.add(new SetCardInfo("Sol Ring", 270, Rarity.UNCOMMON, mage.cards.s.SolRing.class));
- cards.add(new SetCardInfo("Soul Net", 271, Rarity.UNCOMMON, mage.cards.s.SoulNet.class));
- cards.add(new SetCardInfo("Spell Blast", 80, Rarity.COMMON, mage.cards.s.SpellBlast.class));
- cards.add(new SetCardInfo("Stasis", 81, Rarity.RARE, mage.cards.s.Stasis.class));
- cards.add(new SetCardInfo("Steal Artifact", 82, Rarity.UNCOMMON, mage.cards.s.StealArtifact.class));
- cards.add(new SetCardInfo("Stone Giant", 177, Rarity.UNCOMMON, mage.cards.s.StoneGiant.class));
- cards.add(new SetCardInfo("Stone Rain", 178, Rarity.COMMON, mage.cards.s.StoneRain.class));
- cards.add(new SetCardInfo("Stream of Life", 218, Rarity.COMMON, mage.cards.s.StreamOfLife.class));
- cards.add(new SetCardInfo("Sunglasses of Urza", 272, Rarity.RARE, mage.cards.s.SunglassesOfUrza.class));
- cards.add(new SetCardInfo("Swamp", 294, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 295, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 296, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swords to Plowshares", 41, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
- cards.add(new SetCardInfo("Taiga", 283, Rarity.RARE, mage.cards.t.Taiga.class));
- cards.add(new SetCardInfo("Terror", 131, Rarity.COMMON, mage.cards.t.Terror.class));
- cards.add(new SetCardInfo("The Hive", 273, Rarity.RARE, mage.cards.t.TheHive.class));
- cards.add(new SetCardInfo("Thicket Basilisk", 219, Rarity.UNCOMMON, mage.cards.t.ThicketBasilisk.class));
- cards.add(new SetCardInfo("Thoughtlace", 83, Rarity.RARE, mage.cards.t.Thoughtlace.class));
- cards.add(new SetCardInfo("Throne of Bone", 274, Rarity.UNCOMMON, mage.cards.t.ThroneOfBone.class));
- cards.add(new SetCardInfo("Timber Wolves", 220, Rarity.RARE, mage.cards.t.TimberWolves.class));
- cards.add(new SetCardInfo("Time Vault", 275, Rarity.RARE, mage.cards.t.TimeVault.class));
- cards.add(new SetCardInfo("Time Walk", 84, Rarity.RARE, mage.cards.t.TimeWalk.class));
- cards.add(new SetCardInfo("Timetwister", 85, Rarity.RARE, mage.cards.t.Timetwister.class));
- cards.add(new SetCardInfo("Tranquility", 221, Rarity.COMMON, mage.cards.t.Tranquility.class));
- cards.add(new SetCardInfo("Tropical Island", 284, Rarity.RARE, mage.cards.t.TropicalIsland.class));
- cards.add(new SetCardInfo("Tsunami", 222, Rarity.UNCOMMON, mage.cards.t.Tsunami.class));
- cards.add(new SetCardInfo("Tundra", 285, Rarity.RARE, mage.cards.t.Tundra.class));
- cards.add(new SetCardInfo("Tunnel", 179, Rarity.UNCOMMON, mage.cards.t.Tunnel.class));
- cards.add(new SetCardInfo("Twiddle", 86, Rarity.COMMON, mage.cards.t.Twiddle.class));
- cards.add(new SetCardInfo("Two-Headed Giant of Foriys", 180, Rarity.RARE, mage.cards.t.TwoHeadedGiantOfForiys.class));
- cards.add(new SetCardInfo("Underground Sea", 286, Rarity.RARE, mage.cards.u.UndergroundSea.class));
- cards.add(new SetCardInfo("Unholy Strength", 132, Rarity.COMMON, mage.cards.u.UnholyStrength.class));
- cards.add(new SetCardInfo("Unsummon", 87, Rarity.COMMON, mage.cards.u.Unsummon.class));
- cards.add(new SetCardInfo("Uthden Troll", 181, Rarity.UNCOMMON, mage.cards.u.UthdenTroll.class));
- cards.add(new SetCardInfo("Verduran Enchantress", 223, Rarity.RARE, mage.cards.v.VerduranEnchantress.class));
- cards.add(new SetCardInfo("Vesuvan Doppelganger", 88, Rarity.RARE, mage.cards.v.VesuvanDoppelganger.class));
- cards.add(new SetCardInfo("Veteran Bodyguard", 42, Rarity.RARE, mage.cards.v.VeteranBodyguard.class));
- cards.add(new SetCardInfo("Volcanic Eruption", 89, Rarity.RARE, mage.cards.v.VolcanicEruption.class));
- cards.add(new SetCardInfo("Volcanic Island", 287, Rarity.RARE, mage.cards.v.VolcanicIsland.class));
- cards.add(new SetCardInfo("Wall of Air", 90, Rarity.UNCOMMON, mage.cards.w.WallOfAir.class));
- cards.add(new SetCardInfo("Wall of Bone", 133, Rarity.UNCOMMON, mage.cards.w.WallOfBone.class));
- cards.add(new SetCardInfo("Wall of Brambles", 224, Rarity.UNCOMMON, mage.cards.w.WallOfBrambles.class));
- cards.add(new SetCardInfo("Wall of Fire", 182, Rarity.UNCOMMON, mage.cards.w.WallOfFire.class));
- cards.add(new SetCardInfo("Wall of Ice", 225, Rarity.UNCOMMON, mage.cards.w.WallOfIce.class));
- cards.add(new SetCardInfo("Wall of Stone", 183, Rarity.UNCOMMON, mage.cards.w.WallOfStone.class));
- cards.add(new SetCardInfo("Wall of Swords", 43, Rarity.UNCOMMON, mage.cards.w.WallOfSwords.class));
- cards.add(new SetCardInfo("Wall of Water", 91, Rarity.UNCOMMON, mage.cards.w.WallOfWater.class));
- cards.add(new SetCardInfo("Wall of Wood", 226, Rarity.COMMON, mage.cards.w.WallOfWood.class));
- cards.add(new SetCardInfo("Wanderlust", 227, Rarity.UNCOMMON, mage.cards.w.Wanderlust.class));
- cards.add(new SetCardInfo("War Mammoth", 228, Rarity.COMMON, mage.cards.w.WarMammoth.class));
- cards.add(new SetCardInfo("Warp Artifact", 134, Rarity.RARE, mage.cards.w.WarpArtifact.class));
- cards.add(new SetCardInfo("Water Elemental", 92, Rarity.UNCOMMON, mage.cards.w.WaterElemental.class));
- cards.add(new SetCardInfo("Weakness", 135, Rarity.COMMON, mage.cards.w.Weakness.class));
- cards.add(new SetCardInfo("Web", 229, Rarity.RARE, mage.cards.w.Web.class));
- cards.add(new SetCardInfo("Wheel of Fortune", 184, Rarity.RARE, mage.cards.w.WheelOfFortune.class));
- cards.add(new SetCardInfo("White Knight", 44, Rarity.UNCOMMON, mage.cards.w.WhiteKnight.class));
- cards.add(new SetCardInfo("White Ward", 45, Rarity.UNCOMMON, mage.cards.w.WhiteWard.class));
- cards.add(new SetCardInfo("Wild Growth", 230, Rarity.COMMON, mage.cards.w.WildGrowth.class));
- cards.add(new SetCardInfo("Will-o'-the-Wisp", 136, Rarity.RARE, mage.cards.w.WillOTheWisp.class));
- cards.add(new SetCardInfo("Winter Orb", 276, Rarity.RARE, mage.cards.w.WinterOrb.class));
- cards.add(new SetCardInfo("Wooden Sphere", 277, Rarity.UNCOMMON, mage.cards.w.WoodenSphere.class));
- cards.add(new SetCardInfo("Wrath of God", 46, Rarity.RARE, mage.cards.w.WrathOfGod.class));
- cards.add(new SetCardInfo("Zombie Master", 138, Rarity.RARE, mage.cards.z.ZombieMaster.class));
- }
-}
+package mage.sets;
+
+import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class LimitedEditionBeta extends ExpansionSet {
+
+ private static final LimitedEditionBeta instance = new LimitedEditionBeta();
+
+ public static LimitedEditionBeta getInstance() {
+ return instance;
+ }
+
+ private LimitedEditionBeta() {
+ super("Limited Edition Beta", "LEB", ExpansionSet.buildDate(1993, 10, 1), SetType.CORE);
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Air Elemental", 47, Rarity.UNCOMMON, mage.cards.a.AirElemental.class));
+ cards.add(new SetCardInfo("Ancestral Recall", 48, Rarity.RARE, mage.cards.a.AncestralRecall.class));
+ cards.add(new SetCardInfo("Animate Artifact", 49, Rarity.UNCOMMON, mage.cards.a.AnimateArtifact.class));
+ cards.add(new SetCardInfo("Animate Dead", 93, Rarity.UNCOMMON, mage.cards.a.AnimateDead.class));
+ cards.add(new SetCardInfo("Animate Wall", 1, Rarity.RARE, mage.cards.a.AnimateWall.class));
+ cards.add(new SetCardInfo("Ankh of Mishra", 231, Rarity.RARE, mage.cards.a.AnkhOfMishra.class));
+ cards.add(new SetCardInfo("Armageddon", 2, Rarity.RARE, mage.cards.a.Armageddon.class));
+ cards.add(new SetCardInfo("Aspect of Wolf", 185, Rarity.RARE, mage.cards.a.AspectOfWolf.class));
+ cards.add(new SetCardInfo("Bad Moon", 94, Rarity.RARE, mage.cards.b.BadMoon.class));
+ cards.add(new SetCardInfo("Badlands", 278, Rarity.RARE, mage.cards.b.Badlands.class));
+ cards.add(new SetCardInfo("Balance", 3, Rarity.RARE, mage.cards.b.Balance.class));
+ cards.add(new SetCardInfo("Basalt Monolith", 232, Rarity.UNCOMMON, mage.cards.b.BasaltMonolith.class));
+ cards.add(new SetCardInfo("Bayou", 279, Rarity.RARE, mage.cards.b.Bayou.class));
+ cards.add(new SetCardInfo("Benalish Hero", 4, Rarity.COMMON, mage.cards.b.BenalishHero.class));
+ cards.add(new SetCardInfo("Berserk", 186, Rarity.UNCOMMON, mage.cards.b.Berserk.class));
+ cards.add(new SetCardInfo("Birds of Paradise", 187, Rarity.RARE, mage.cards.b.BirdsOfParadise.class));
+ cards.add(new SetCardInfo("Black Knight", 95, Rarity.UNCOMMON, mage.cards.b.BlackKnight.class));
+ cards.add(new SetCardInfo("Black Lotus", 233, Rarity.RARE, mage.cards.b.BlackLotus.class));
+ cards.add(new SetCardInfo("Black Vise", 234, Rarity.UNCOMMON, mage.cards.b.BlackVise.class));
+ cards.add(new SetCardInfo("Black Ward", 5, Rarity.UNCOMMON, mage.cards.b.BlackWard.class));
+ cards.add(new SetCardInfo("Blaze of Glory", 6, Rarity.RARE, mage.cards.b.BlazeOfGlory.class));
+ cards.add(new SetCardInfo("Blessing", 7, Rarity.RARE, mage.cards.b.Blessing.class));
+ cards.add(new SetCardInfo("Blue Elemental Blast", 50, Rarity.COMMON, mage.cards.b.BlueElementalBlast.class));
+ cards.add(new SetCardInfo("Blue Ward", 8, Rarity.UNCOMMON, mage.cards.b.BlueWard.class));
+ cards.add(new SetCardInfo("Bog Wraith", 96, Rarity.UNCOMMON, mage.cards.b.BogWraith.class));
+ cards.add(new SetCardInfo("Braingeyser", 51, Rarity.RARE, mage.cards.b.Braingeyser.class));
+ cards.add(new SetCardInfo("Burrowing", 139, Rarity.UNCOMMON, mage.cards.b.Burrowing.class));
+ cards.add(new SetCardInfo("Camouflage", 188, Rarity.UNCOMMON, mage.cards.c.Camouflage.class));
+ cards.add(new SetCardInfo("Castle", 9, Rarity.UNCOMMON, mage.cards.c.Castle.class));
+ cards.add(new SetCardInfo("Celestial Prism", 235, Rarity.UNCOMMON, mage.cards.c.CelestialPrism.class));
+ cards.add(new SetCardInfo("Channel", 189, Rarity.UNCOMMON, mage.cards.c.Channel.class));
+ cards.add(new SetCardInfo("Chaoslace", 140, Rarity.RARE, mage.cards.c.Chaoslace.class));
+ cards.add(new SetCardInfo("Circle of Protection: Black", 10, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class));
+ cards.add(new SetCardInfo("Circle of Protection: Blue", 11, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlue.class));
+ cards.add(new SetCardInfo("Circle of Protection: Green", 12, Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class));
+ cards.add(new SetCardInfo("Circle of Protection: Red", 13, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class));
+ cards.add(new SetCardInfo("Circle of Protection: White", 14, Rarity.COMMON, mage.cards.c.CircleOfProtectionWhite.class));
+ cards.add(new SetCardInfo("Clockwork Beast", 237, Rarity.RARE, mage.cards.c.ClockworkBeast.class));
+ cards.add(new SetCardInfo("Clone", 52, Rarity.UNCOMMON, mage.cards.c.Clone.class));
+ cards.add(new SetCardInfo("Cockatrice", 190, Rarity.RARE, mage.cards.c.Cockatrice.class));
+ cards.add(new SetCardInfo("Consecrate Land", 15, Rarity.UNCOMMON, mage.cards.c.ConsecrateLand.class));
+ cards.add(new SetCardInfo("Conservator", 238, Rarity.UNCOMMON, mage.cards.c.Conservator.class));
+ cards.add(new SetCardInfo("Control Magic", 53, Rarity.UNCOMMON, mage.cards.c.ControlMagic.class));
+ cards.add(new SetCardInfo("Conversion", 16, Rarity.UNCOMMON, mage.cards.c.Conversion.class));
+ cards.add(new SetCardInfo("Copper Tablet", 239, Rarity.UNCOMMON, mage.cards.c.CopperTablet.class));
+ cards.add(new SetCardInfo("Copy Artifact", 54, Rarity.RARE, mage.cards.c.CopyArtifact.class));
+ cards.add(new SetCardInfo("Counterspell", 55, Rarity.UNCOMMON, mage.cards.c.Counterspell.class));
+ cards.add(new SetCardInfo("Craw Wurm", 191, Rarity.COMMON, mage.cards.c.CrawWurm.class));
+ cards.add(new SetCardInfo("Creature Bond", 56, Rarity.COMMON, mage.cards.c.CreatureBond.class));
+ cards.add(new SetCardInfo("Crusade", 17, Rarity.RARE, mage.cards.c.Crusade.class));
+ cards.add(new SetCardInfo("Crystal Rod", 240, Rarity.UNCOMMON, mage.cards.c.CrystalRod.class));
+ cards.add(new SetCardInfo("Cursed Land", 98, Rarity.UNCOMMON, mage.cards.c.CursedLand.class));
+ cards.add(new SetCardInfo("Cyclopean Tomb", 241, Rarity.RARE, mage.cards.c.CyclopeanTomb.class));
+ cards.add(new SetCardInfo("Dark Ritual", 99, Rarity.COMMON, mage.cards.d.DarkRitual.class));
+ cards.add(new SetCardInfo("Death Ward", 18, Rarity.COMMON, mage.cards.d.DeathWard.class));
+ cards.add(new SetCardInfo("Deathgrip", 101, Rarity.UNCOMMON, mage.cards.d.Deathgrip.class));
+ cards.add(new SetCardInfo("Deathlace", 102, Rarity.RARE, mage.cards.d.Deathlace.class));
+ cards.add(new SetCardInfo("Demonic Hordes", 104, Rarity.RARE, mage.cards.d.DemonicHordes.class));
+ cards.add(new SetCardInfo("Demonic Tutor", 105, Rarity.UNCOMMON, mage.cards.d.DemonicTutor.class));
+ cards.add(new SetCardInfo("Dingus Egg", 242, Rarity.RARE, mage.cards.d.DingusEgg.class));
+ cards.add(new SetCardInfo("Disenchant", 19, Rarity.COMMON, mage.cards.d.Disenchant.class));
+ cards.add(new SetCardInfo("Disintegrate", 141, Rarity.COMMON, mage.cards.d.Disintegrate.class));
+ cards.add(new SetCardInfo("Disrupting Scepter", 243, Rarity.RARE, mage.cards.d.DisruptingScepter.class));
+ cards.add(new SetCardInfo("Dragon Whelp", 142, Rarity.UNCOMMON, mage.cards.d.DragonWhelp.class));
+ cards.add(new SetCardInfo("Drain Life", 106, Rarity.COMMON, mage.cards.d.DrainLife.class));
+ cards.add(new SetCardInfo("Drain Power", 57, Rarity.RARE, mage.cards.d.DrainPower.class));
+ cards.add(new SetCardInfo("Drudge Skeletons", 107, Rarity.COMMON, mage.cards.d.DrudgeSkeletons.class));
+ cards.add(new SetCardInfo("Dwarven Demolition Team", 143, Rarity.UNCOMMON, mage.cards.d.DwarvenDemolitionTeam.class));
+ cards.add(new SetCardInfo("Dwarven Warriors", 144, Rarity.COMMON, mage.cards.d.DwarvenWarriors.class));
+ cards.add(new SetCardInfo("Earth Elemental", 145, Rarity.UNCOMMON, mage.cards.e.EarthElemental.class));
+ cards.add(new SetCardInfo("Earthbind", 146, Rarity.COMMON, mage.cards.e.Earthbind.class));
+ cards.add(new SetCardInfo("Earthquake", 147, Rarity.RARE, mage.cards.e.Earthquake.class));
+ cards.add(new SetCardInfo("Elvish Archers", 192, Rarity.RARE, mage.cards.e.ElvishArchers.class));
+ cards.add(new SetCardInfo("Evil Presence", 108, Rarity.UNCOMMON, mage.cards.e.EvilPresence.class));
+ cards.add(new SetCardInfo("False Orders", 148, Rarity.COMMON, mage.cards.f.FalseOrders.class));
+ cards.add(new SetCardInfo("Farmstead", 20, Rarity.RARE, mage.cards.f.Farmstead.class));
+ cards.add(new SetCardInfo("Fastbond", 193, Rarity.RARE, mage.cards.f.Fastbond.class));
+ cards.add(new SetCardInfo("Fear", 109, Rarity.COMMON, mage.cards.f.Fear.class));
+ cards.add(new SetCardInfo("Feedback", 58, Rarity.UNCOMMON, mage.cards.f.Feedback.class));
+ cards.add(new SetCardInfo("Fire Elemental", 149, Rarity.UNCOMMON, mage.cards.f.FireElemental.class));
+ cards.add(new SetCardInfo("Fireball", 150, Rarity.COMMON, mage.cards.f.Fireball.class));
+ cards.add(new SetCardInfo("Firebreathing", 151, Rarity.COMMON, mage.cards.f.Firebreathing.class));
+ cards.add(new SetCardInfo("Flashfires", 152, Rarity.UNCOMMON, mage.cards.f.Flashfires.class));
+ cards.add(new SetCardInfo("Flight", 59, Rarity.COMMON, mage.cards.f.Flight.class));
+ cards.add(new SetCardInfo("Fog", 194, Rarity.COMMON, mage.cards.f.Fog.class));
+ cards.add(new SetCardInfo("Force of Nature", 195, Rarity.RARE, mage.cards.f.ForceOfNature.class));
+ cards.add(new SetCardInfo("Forcefield", 244, Rarity.RARE, mage.cards.f.Forcefield.class));
+ cards.add(new SetCardInfo("Forest", 300, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 301, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 302, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Fork", 153, Rarity.RARE, mage.cards.f.Fork.class));
+ cards.add(new SetCardInfo("Frozen Shade", 110, Rarity.COMMON, mage.cards.f.FrozenShade.class));
+ cards.add(new SetCardInfo("Fungusaur", 196, Rarity.RARE, mage.cards.f.Fungusaur.class));
+ cards.add(new SetCardInfo("Gaea's Liege", 197, 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", 198, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
+ cards.add(new SetCardInfo("Giant Spider", 199, Rarity.COMMON, mage.cards.g.GiantSpider.class));
+ cards.add(new SetCardInfo("Glasses of Urza", 246, Rarity.UNCOMMON, mage.cards.g.GlassesOfUrza.class));
+ cards.add(new SetCardInfo("Gloom", 111, Rarity.UNCOMMON, mage.cards.g.Gloom.class));
+ cards.add(new SetCardInfo("Goblin Balloon Brigade", 154, Rarity.UNCOMMON, mage.cards.g.GoblinBalloonBrigade.class));
+ cards.add(new SetCardInfo("Goblin King", 155, Rarity.RARE, mage.cards.g.GoblinKing.class));
+ cards.add(new SetCardInfo("Granite Gargoyle", 156, Rarity.RARE, mage.cards.g.GraniteGargoyle.class));
+ cards.add(new SetCardInfo("Gray Ogre", 157, Rarity.COMMON, mage.cards.g.GrayOgre.class));
+ cards.add(new SetCardInfo("Green Ward", 21, Rarity.UNCOMMON, mage.cards.g.GreenWard.class));
+ cards.add(new SetCardInfo("Grizzly Bears", 200, Rarity.COMMON, mage.cards.g.GrizzlyBears.class));
+ cards.add(new SetCardInfo("Guardian Angel", 22, Rarity.COMMON, mage.cards.g.GuardianAngel.class));
+ cards.add(new SetCardInfo("Healing Salve", 23, Rarity.COMMON, mage.cards.h.HealingSalve.class));
+ cards.add(new SetCardInfo("Helm of Chatzuk", 247, Rarity.RARE, mage.cards.h.HelmOfChatzuk.class));
+ cards.add(new SetCardInfo("Hill Giant", 158, Rarity.COMMON, mage.cards.h.HillGiant.class));
+ cards.add(new SetCardInfo("Holy Armor", 24, Rarity.COMMON, mage.cards.h.HolyArmor.class));
+ cards.add(new SetCardInfo("Holy Strength", 25, Rarity.COMMON, mage.cards.h.HolyStrength.class));
+ cards.add(new SetCardInfo("Howl from Beyond", 112, Rarity.COMMON, mage.cards.h.HowlFromBeyond.class));
+ cards.add(new SetCardInfo("Howling Mine", 248, Rarity.RARE, mage.cards.h.HowlingMine.class));
+ cards.add(new SetCardInfo("Hurloon Minotaur", 159, Rarity.COMMON, mage.cards.h.HurloonMinotaur.class));
+ cards.add(new SetCardInfo("Hurricane", 201, Rarity.UNCOMMON, mage.cards.h.Hurricane.class));
+ cards.add(new SetCardInfo("Hypnotic Specter", 113, Rarity.UNCOMMON, mage.cards.h.HypnoticSpecter.class));
+ cards.add(new SetCardInfo("Ice Storm", 202, Rarity.UNCOMMON, mage.cards.i.IceStorm.class));
+ cards.add(new SetCardInfo("Icy Manipulator", 249, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class));
+ cards.add(new SetCardInfo("Instill Energy", 203, Rarity.UNCOMMON, mage.cards.i.InstillEnergy.class));
+ cards.add(new SetCardInfo("Invisibility", 60, Rarity.COMMON, mage.cards.i.Invisibility.class));
+ cards.add(new SetCardInfo("Iron Star", 251, Rarity.UNCOMMON, mage.cards.i.IronStar.class));
+ cards.add(new SetCardInfo("Ironclaw Orcs", 160, Rarity.COMMON, mage.cards.i.IronclawOrcs.class));
+ cards.add(new SetCardInfo("Ironroot Treefolk", 204, Rarity.COMMON, mage.cards.i.IronrootTreefolk.class));
+ cards.add(new SetCardInfo("Island Sanctuary", 26, Rarity.RARE, mage.cards.i.IslandSanctuary.class));
+ cards.add(new SetCardInfo("Island", 291, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 292, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 293, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ 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));
+ cards.add(new SetCardInfo("Karma", 27, Rarity.UNCOMMON, mage.cards.k.Karma.class));
+ cards.add(new SetCardInfo("Keldon Warlord", 161, Rarity.UNCOMMON, mage.cards.k.KeldonWarlord.class));
+ cards.add(new SetCardInfo("Kormus Bell", 257, Rarity.RARE, mage.cards.k.KormusBell.class));
+ cards.add(new SetCardInfo("Kudzu", 205, Rarity.RARE, mage.cards.k.Kudzu.class));
+ cards.add(new SetCardInfo("Lance", 28, Rarity.UNCOMMON, mage.cards.l.Lance.class));
+ cards.add(new SetCardInfo("Ley Druid", 206, Rarity.UNCOMMON, mage.cards.l.LeyDruid.class));
+ cards.add(new SetCardInfo("Library of Leng", 258, Rarity.UNCOMMON, mage.cards.l.LibraryOfLeng.class));
+ cards.add(new SetCardInfo("Lich", 114, Rarity.RARE, mage.cards.l.Lich.class));
+ cards.add(new SetCardInfo("Lifeforce", 207, Rarity.UNCOMMON, mage.cards.l.Lifeforce.class));
+ cards.add(new SetCardInfo("Lifelace", 208, Rarity.RARE, mage.cards.l.Lifelace.class));
+ cards.add(new SetCardInfo("Lifetap", 62, Rarity.UNCOMMON, mage.cards.l.Lifetap.class));
+ cards.add(new SetCardInfo("Lightning Bolt", 162, Rarity.COMMON, mage.cards.l.LightningBolt.class));
+ cards.add(new SetCardInfo("Living Artifact", 209, Rarity.RARE, mage.cards.l.LivingArtifact.class));
+ cards.add(new SetCardInfo("Living Lands", 210, Rarity.RARE, mage.cards.l.LivingLands.class));
+ cards.add(new SetCardInfo("Living Wall", 259, Rarity.UNCOMMON, mage.cards.l.LivingWall.class));
+ cards.add(new SetCardInfo("Llanowar Elves", 211, Rarity.COMMON, mage.cards.l.LlanowarElves.class));
+ cards.add(new SetCardInfo("Lord of Atlantis", 63, Rarity.RARE, mage.cards.l.LordOfAtlantis.class));
+ cards.add(new SetCardInfo("Lord of the Pit", 115, Rarity.RARE, mage.cards.l.LordOfThePit.class));
+ cards.add(new SetCardInfo("Lure", 212, Rarity.UNCOMMON, mage.cards.l.Lure.class));
+ cards.add(new SetCardInfo("Mahamoti Djinn", 65, Rarity.RARE, mage.cards.m.MahamotiDjinn.class));
+ cards.add(new SetCardInfo("Mana Flare", 163, Rarity.RARE, mage.cards.m.ManaFlare.class));
+ cards.add(new SetCardInfo("Mana Short", 66, Rarity.RARE, mage.cards.m.ManaShort.class));
+ cards.add(new SetCardInfo("Mana Vault", 260, Rarity.RARE, mage.cards.m.ManaVault.class));
+ cards.add(new SetCardInfo("Manabarbs", 164, Rarity.RARE, mage.cards.m.Manabarbs.class));
+ cards.add(new SetCardInfo("Meekstone", 261, Rarity.RARE, mage.cards.m.Meekstone.class));
+ cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 67, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class));
+ cards.add(new SetCardInfo("Mesa Pegasus", 29, Rarity.COMMON, mage.cards.m.MesaPegasus.class));
+ cards.add(new SetCardInfo("Mind Twist", 116, Rarity.RARE, mage.cards.m.MindTwist.class));
+ cards.add(new SetCardInfo("Mons's Goblin Raiders", 165, Rarity.COMMON, mage.cards.m.MonssGoblinRaiders.class));
+ cards.add(new SetCardInfo("Mountain", 297, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 298, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 299, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mox Emerald", 262, Rarity.RARE, mage.cards.m.MoxEmerald.class));
+ cards.add(new SetCardInfo("Mox Jet", 263, Rarity.RARE, mage.cards.m.MoxJet.class));
+ cards.add(new SetCardInfo("Mox Pearl", 264, Rarity.RARE, mage.cards.m.MoxPearl.class));
+ cards.add(new SetCardInfo("Mox Ruby", 265, Rarity.RARE, mage.cards.m.MoxRuby.class));
+ cards.add(new SetCardInfo("Mox Sapphire", 266, Rarity.RARE, mage.cards.m.MoxSapphire.class));
+ cards.add(new SetCardInfo("Natural Selection", 213, Rarity.RARE, mage.cards.n.NaturalSelection.class));
+ cards.add(new SetCardInfo("Nether Shadow", 117, Rarity.RARE, mage.cards.n.NetherShadow.class));
+ cards.add(new SetCardInfo("Nettling Imp", 118, Rarity.UNCOMMON, mage.cards.n.NettlingImp.class));
+ cards.add(new SetCardInfo("Nevinyrral's Disk", 267, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class));
+ cards.add(new SetCardInfo("Nightmare", 119, Rarity.RARE, mage.cards.n.Nightmare.class));
+ cards.add(new SetCardInfo("Northern Paladin", 30, Rarity.RARE, mage.cards.n.NorthernPaladin.class));
+ cards.add(new SetCardInfo("Obsianus Golem", 268, Rarity.UNCOMMON, mage.cards.o.ObsianusGolem.class));
+ cards.add(new SetCardInfo("Orcish Artillery", 166, Rarity.UNCOMMON, mage.cards.o.OrcishArtillery.class));
+ cards.add(new SetCardInfo("Orcish Oriflamme", 167, Rarity.UNCOMMON, mage.cards.o.OrcishOriflamme.class));
+ cards.add(new SetCardInfo("Paralyze", 120, Rarity.COMMON, mage.cards.p.Paralyze.class));
+ cards.add(new SetCardInfo("Pearled Unicorn", 31, Rarity.COMMON, mage.cards.p.PearledUnicorn.class));
+ cards.add(new SetCardInfo("Personal Incarnation", 32, Rarity.RARE, mage.cards.p.PersonalIncarnation.class));
+ cards.add(new SetCardInfo("Pestilence", 121, Rarity.COMMON, mage.cards.p.Pestilence.class));
+ cards.add(new SetCardInfo("Phantasmal Forces", 68, Rarity.UNCOMMON, mage.cards.p.PhantasmalForces.class));
+ cards.add(new SetCardInfo("Phantasmal Terrain", 69, Rarity.COMMON, mage.cards.p.PhantasmalTerrain.class));
+ cards.add(new SetCardInfo("Phantom Monster", 70, Rarity.UNCOMMON, mage.cards.p.PhantomMonster.class));
+ cards.add(new SetCardInfo("Pirate Ship", 71, Rarity.RARE, mage.cards.p.PirateShip.class));
+ cards.add(new SetCardInfo("Plague Rats", 122, Rarity.COMMON, mage.cards.p.PlagueRats.class));
+ cards.add(new SetCardInfo("Plains", 288, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 289, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 290, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plateau", 280, Rarity.RARE, mage.cards.p.Plateau.class));
+ cards.add(new SetCardInfo("Power Leak", 72, Rarity.COMMON, mage.cards.p.PowerLeak.class));
+ cards.add(new SetCardInfo("Power Sink", 73, Rarity.COMMON, mage.cards.p.PowerSink.class));
+ cards.add(new SetCardInfo("Power Surge", 168, Rarity.RARE, mage.cards.p.PowerSurge.class));
+ cards.add(new SetCardInfo("Prodigal Sorcerer", 74, Rarity.COMMON, mage.cards.p.ProdigalSorcerer.class));
+ cards.add(new SetCardInfo("Psionic Blast", 75, Rarity.UNCOMMON, mage.cards.p.PsionicBlast.class));
+ cards.add(new SetCardInfo("Psychic Venom", 76, Rarity.COMMON, mage.cards.p.PsychicVenom.class));
+ cards.add(new SetCardInfo("Purelace", 33, Rarity.RARE, mage.cards.p.Purelace.class));
+ cards.add(new SetCardInfo("Raging River", 169, Rarity.RARE, mage.cards.r.RagingRiver.class));
+ cards.add(new SetCardInfo("Raise Dead", 123, Rarity.COMMON, mage.cards.r.RaiseDead.class));
+ cards.add(new SetCardInfo("Red Elemental Blast", 170, Rarity.COMMON, mage.cards.r.RedElementalBlast.class));
+ cards.add(new SetCardInfo("Red Ward", 34, Rarity.UNCOMMON, mage.cards.r.RedWard.class));
+ cards.add(new SetCardInfo("Regeneration", 214, Rarity.COMMON, mage.cards.r.Regeneration.class));
+ cards.add(new SetCardInfo("Regrowth", 215, Rarity.UNCOMMON, mage.cards.r.Regrowth.class));
+ cards.add(new SetCardInfo("Resurrection", 35, Rarity.UNCOMMON, mage.cards.r.Resurrection.class));
+ cards.add(new SetCardInfo("Reverse Damage", 36, Rarity.RARE, mage.cards.r.ReverseDamage.class));
+ cards.add(new SetCardInfo("Righteousness", 37, 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", 124, Rarity.RARE, mage.cards.r.RoyalAssassin.class));
+ cards.add(new SetCardInfo("Sacrifice", 125, Rarity.UNCOMMON, mage.cards.s.Sacrifice.class));
+ cards.add(new SetCardInfo("Samite Healer", 38, Rarity.COMMON, mage.cards.s.SamiteHealer.class));
+ cards.add(new SetCardInfo("Savannah Lions", 39, Rarity.RARE, mage.cards.s.SavannahLions.class));
+ cards.add(new SetCardInfo("Savannah", 281, Rarity.RARE, mage.cards.s.Savannah.class));
+ cards.add(new SetCardInfo("Scathe Zombies", 126, Rarity.COMMON, mage.cards.s.ScatheZombies.class));
+ cards.add(new SetCardInfo("Scavenging Ghoul", 127, Rarity.UNCOMMON, mage.cards.s.ScavengingGhoul.class));
+ cards.add(new SetCardInfo("Scrubland", 282, Rarity.RARE, mage.cards.s.Scrubland.class));
+ cards.add(new SetCardInfo("Scryb Sprites", 216, Rarity.COMMON, mage.cards.s.ScrybSprites.class));
+ cards.add(new SetCardInfo("Sea Serpent", 77, Rarity.COMMON, mage.cards.s.SeaSerpent.class));
+ cards.add(new SetCardInfo("Sedge Troll", 173, Rarity.RARE, mage.cards.s.SedgeTroll.class));
+ cards.add(new SetCardInfo("Sengir Vampire", 128, Rarity.UNCOMMON, mage.cards.s.SengirVampire.class));
+ cards.add(new SetCardInfo("Serra Angel", 40, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class));
+ cards.add(new SetCardInfo("Shanodin Dryads", 217, Rarity.COMMON, mage.cards.s.ShanodinDryads.class));
+ cards.add(new SetCardInfo("Shatter", 174, Rarity.COMMON, mage.cards.s.Shatter.class));
+ cards.add(new SetCardInfo("Shivan Dragon", 175, Rarity.RARE, mage.cards.s.ShivanDragon.class));
+ cards.add(new SetCardInfo("Simulacrum", 129, Rarity.UNCOMMON, mage.cards.s.Simulacrum.class));
+ cards.add(new SetCardInfo("Sinkhole", 130, Rarity.COMMON, mage.cards.s.Sinkhole.class));
+ cards.add(new SetCardInfo("Siren's Call", 78, Rarity.UNCOMMON, mage.cards.s.SirensCall.class));
+ cards.add(new SetCardInfo("Smoke", 176, Rarity.RARE, mage.cards.s.Smoke.class));
+ cards.add(new SetCardInfo("Sol Ring", 270, Rarity.UNCOMMON, mage.cards.s.SolRing.class));
+ cards.add(new SetCardInfo("Soul Net", 271, Rarity.UNCOMMON, mage.cards.s.SoulNet.class));
+ cards.add(new SetCardInfo("Spell Blast", 80, Rarity.COMMON, mage.cards.s.SpellBlast.class));
+ cards.add(new SetCardInfo("Stasis", 81, Rarity.RARE, mage.cards.s.Stasis.class));
+ cards.add(new SetCardInfo("Steal Artifact", 82, Rarity.UNCOMMON, mage.cards.s.StealArtifact.class));
+ cards.add(new SetCardInfo("Stone Giant", 177, Rarity.UNCOMMON, mage.cards.s.StoneGiant.class));
+ cards.add(new SetCardInfo("Stone Rain", 178, Rarity.COMMON, mage.cards.s.StoneRain.class));
+ cards.add(new SetCardInfo("Stream of Life", 218, Rarity.COMMON, mage.cards.s.StreamOfLife.class));
+ cards.add(new SetCardInfo("Sunglasses of Urza", 272, Rarity.RARE, mage.cards.s.SunglassesOfUrza.class));
+ cards.add(new SetCardInfo("Swamp", 294, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 295, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 296, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swords to Plowshares", 41, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
+ cards.add(new SetCardInfo("Taiga", 283, Rarity.RARE, mage.cards.t.Taiga.class));
+ cards.add(new SetCardInfo("Terror", 131, Rarity.COMMON, mage.cards.t.Terror.class));
+ cards.add(new SetCardInfo("The Hive", 273, Rarity.RARE, mage.cards.t.TheHive.class));
+ cards.add(new SetCardInfo("Thicket Basilisk", 219, Rarity.UNCOMMON, mage.cards.t.ThicketBasilisk.class));
+ cards.add(new SetCardInfo("Thoughtlace", 83, Rarity.RARE, mage.cards.t.Thoughtlace.class));
+ cards.add(new SetCardInfo("Throne of Bone", 274, Rarity.UNCOMMON, mage.cards.t.ThroneOfBone.class));
+ cards.add(new SetCardInfo("Timber Wolves", 220, Rarity.RARE, mage.cards.t.TimberWolves.class));
+ cards.add(new SetCardInfo("Time Vault", 275, Rarity.RARE, mage.cards.t.TimeVault.class));
+ cards.add(new SetCardInfo("Time Walk", 84, Rarity.RARE, mage.cards.t.TimeWalk.class));
+ cards.add(new SetCardInfo("Timetwister", 85, Rarity.RARE, mage.cards.t.Timetwister.class));
+ cards.add(new SetCardInfo("Tranquility", 221, Rarity.COMMON, mage.cards.t.Tranquility.class));
+ cards.add(new SetCardInfo("Tropical Island", 284, Rarity.RARE, mage.cards.t.TropicalIsland.class));
+ cards.add(new SetCardInfo("Tsunami", 222, Rarity.UNCOMMON, mage.cards.t.Tsunami.class));
+ cards.add(new SetCardInfo("Tundra", 285, Rarity.RARE, mage.cards.t.Tundra.class));
+ cards.add(new SetCardInfo("Tunnel", 179, Rarity.UNCOMMON, mage.cards.t.Tunnel.class));
+ cards.add(new SetCardInfo("Twiddle", 86, Rarity.COMMON, mage.cards.t.Twiddle.class));
+ cards.add(new SetCardInfo("Two-Headed Giant of Foriys", 180, Rarity.RARE, mage.cards.t.TwoHeadedGiantOfForiys.class));
+ cards.add(new SetCardInfo("Underground Sea", 286, Rarity.RARE, mage.cards.u.UndergroundSea.class));
+ cards.add(new SetCardInfo("Unholy Strength", 132, Rarity.COMMON, mage.cards.u.UnholyStrength.class));
+ cards.add(new SetCardInfo("Unsummon", 87, Rarity.COMMON, mage.cards.u.Unsummon.class));
+ cards.add(new SetCardInfo("Uthden Troll", 181, Rarity.UNCOMMON, mage.cards.u.UthdenTroll.class));
+ cards.add(new SetCardInfo("Verduran Enchantress", 223, Rarity.RARE, mage.cards.v.VerduranEnchantress.class));
+ cards.add(new SetCardInfo("Vesuvan Doppelganger", 88, Rarity.RARE, mage.cards.v.VesuvanDoppelganger.class));
+ cards.add(new SetCardInfo("Veteran Bodyguard", 42, Rarity.RARE, mage.cards.v.VeteranBodyguard.class));
+ cards.add(new SetCardInfo("Volcanic Eruption", 89, Rarity.RARE, mage.cards.v.VolcanicEruption.class));
+ cards.add(new SetCardInfo("Volcanic Island", 287, Rarity.RARE, mage.cards.v.VolcanicIsland.class));
+ cards.add(new SetCardInfo("Wall of Air", 90, Rarity.UNCOMMON, mage.cards.w.WallOfAir.class));
+ cards.add(new SetCardInfo("Wall of Bone", 133, Rarity.UNCOMMON, mage.cards.w.WallOfBone.class));
+ cards.add(new SetCardInfo("Wall of Brambles", 224, Rarity.UNCOMMON, mage.cards.w.WallOfBrambles.class));
+ cards.add(new SetCardInfo("Wall of Fire", 182, Rarity.UNCOMMON, mage.cards.w.WallOfFire.class));
+ cards.add(new SetCardInfo("Wall of Ice", 225, Rarity.UNCOMMON, mage.cards.w.WallOfIce.class));
+ cards.add(new SetCardInfo("Wall of Stone", 183, Rarity.UNCOMMON, mage.cards.w.WallOfStone.class));
+ cards.add(new SetCardInfo("Wall of Swords", 43, Rarity.UNCOMMON, mage.cards.w.WallOfSwords.class));
+ cards.add(new SetCardInfo("Wall of Water", 91, Rarity.UNCOMMON, mage.cards.w.WallOfWater.class));
+ cards.add(new SetCardInfo("Wall of Wood", 226, Rarity.COMMON, mage.cards.w.WallOfWood.class));
+ cards.add(new SetCardInfo("Wanderlust", 227, Rarity.UNCOMMON, mage.cards.w.Wanderlust.class));
+ cards.add(new SetCardInfo("War Mammoth", 228, Rarity.COMMON, mage.cards.w.WarMammoth.class));
+ cards.add(new SetCardInfo("Warp Artifact", 134, Rarity.RARE, mage.cards.w.WarpArtifact.class));
+ cards.add(new SetCardInfo("Water Elemental", 92, Rarity.UNCOMMON, mage.cards.w.WaterElemental.class));
+ cards.add(new SetCardInfo("Weakness", 135, Rarity.COMMON, mage.cards.w.Weakness.class));
+ cards.add(new SetCardInfo("Web", 229, Rarity.RARE, mage.cards.w.Web.class));
+ cards.add(new SetCardInfo("Wheel of Fortune", 184, Rarity.RARE, mage.cards.w.WheelOfFortune.class));
+ cards.add(new SetCardInfo("White Knight", 44, Rarity.UNCOMMON, mage.cards.w.WhiteKnight.class));
+ cards.add(new SetCardInfo("White Ward", 45, Rarity.UNCOMMON, mage.cards.w.WhiteWard.class));
+ cards.add(new SetCardInfo("Wild Growth", 230, Rarity.COMMON, mage.cards.w.WildGrowth.class));
+ cards.add(new SetCardInfo("Will-o'-the-Wisp", 136, Rarity.RARE, mage.cards.w.WillOTheWisp.class));
+ cards.add(new SetCardInfo("Winter Orb", 276, Rarity.RARE, mage.cards.w.WinterOrb.class));
+ cards.add(new SetCardInfo("Wooden Sphere", 277, Rarity.UNCOMMON, mage.cards.w.WoodenSphere.class));
+ cards.add(new SetCardInfo("Wrath of God", 46, Rarity.RARE, mage.cards.w.WrathOfGod.class));
+ cards.add(new SetCardInfo("Zombie Master", 138, Rarity.RARE, mage.cards.z.ZombieMaster.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Lorwyn.java b/Mage.Sets/src/mage/sets/Lorwyn.java
index 64b7b9e118b..0ca22ca6fd9 100644
--- a/Mage.Sets/src/mage/sets/Lorwyn.java
+++ b/Mage.Sets/src/mage/sets/Lorwyn.java
@@ -1,357 +1,357 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class Lorwyn extends ExpansionSet {
-
- private static final Lorwyn instance = new Lorwyn();
-
- public static Lorwyn getInstance() {
- return instance;
- }
-
- private Lorwyn() {
- super("Lorwyn", "LRW", ExpansionSet.buildDate(2007, 10, 12), SetType.EXPANSION);
- this.blockName = "Lorwyn";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Adder-Staff Boggart", 148, Rarity.COMMON, mage.cards.a.AdderStaffBoggart.class));
- cards.add(new SetCardInfo("Aethersnipe", 50, Rarity.COMMON, mage.cards.a.Aethersnipe.class));
- cards.add(new SetCardInfo("Ajani Goldmane", 1, Rarity.RARE, mage.cards.a.AjaniGoldmane.class));
- cards.add(new SetCardInfo("Amoeboid Changeling", 51, Rarity.COMMON, mage.cards.a.AmoeboidChangeling.class));
- cards.add(new SetCardInfo("Ancient Amphitheater", 266, Rarity.RARE, mage.cards.a.AncientAmphitheater.class));
- cards.add(new SetCardInfo("Aquitect's Will", 52, Rarity.COMMON, mage.cards.a.AquitectsWill.class));
- cards.add(new SetCardInfo("Arbiter of Knollridge", 2, Rarity.RARE, mage.cards.a.ArbiterOfKnollridge.class));
- cards.add(new SetCardInfo("Ashling's Prerogative", 150, Rarity.RARE, mage.cards.a.AshlingsPrerogative.class));
- cards.add(new SetCardInfo("Ashling the Pilgrim", 149, Rarity.RARE, mage.cards.a.AshlingThePilgrim.class));
- cards.add(new SetCardInfo("Auntie's Hovel", 267, Rarity.RARE, mage.cards.a.AuntiesHovel.class));
- cards.add(new SetCardInfo("Austere Command", 3, Rarity.RARE, mage.cards.a.AustereCommand.class));
- cards.add(new SetCardInfo("Avian Changeling", 4, Rarity.COMMON, mage.cards.a.AvianChangeling.class));
- cards.add(new SetCardInfo("Axegrinder Giant", 151, Rarity.COMMON, mage.cards.a.AxegrinderGiant.class));
- cards.add(new SetCardInfo("Battle Mastery", 5, Rarity.UNCOMMON, mage.cards.b.BattleMastery.class));
- cards.add(new SetCardInfo("Battlewand Oak", 197, Rarity.COMMON, mage.cards.b.BattlewandOak.class));
- cards.add(new SetCardInfo("Benthicore", 53, Rarity.UNCOMMON, mage.cards.b.Benthicore.class));
- cards.add(new SetCardInfo("Black Poplar Shaman", 99, Rarity.COMMON, mage.cards.b.BlackPoplarShaman.class));
- cards.add(new SetCardInfo("Blades of Velis Vel", 152, Rarity.COMMON, mage.cards.b.BladesOfVelisVel.class));
- cards.add(new SetCardInfo("Blind-Spot Giant", 153, Rarity.COMMON, mage.cards.b.BlindSpotGiant.class));
- cards.add(new SetCardInfo("Boggart Birth Rite", 101, Rarity.COMMON, mage.cards.b.BoggartBirthRite.class));
- cards.add(new SetCardInfo("Boggart Forager", 154, Rarity.COMMON, mage.cards.b.BoggartForager.class));
- cards.add(new SetCardInfo("Boggart Harbinger", 102, Rarity.UNCOMMON, mage.cards.b.BoggartHarbinger.class));
- cards.add(new SetCardInfo("Boggart Loggers", 103, Rarity.COMMON, mage.cards.b.BoggartLoggers.class));
- cards.add(new SetCardInfo("Boggart Mob", 104, Rarity.RARE, mage.cards.b.BoggartMob.class));
- cards.add(new SetCardInfo("Boggart Shenanigans", 155, Rarity.UNCOMMON, mage.cards.b.BoggartShenanigans.class));
- cards.add(new SetCardInfo("Boggart Sprite-Chaser", 156, Rarity.COMMON, mage.cards.b.BoggartSpriteChaser.class));
- cards.add(new SetCardInfo("Bog Hoodlums", 100, Rarity.COMMON, mage.cards.b.BogHoodlums.class));
- cards.add(new SetCardInfo("Bog-Strider Ash", 198, Rarity.COMMON, mage.cards.b.BogStriderAsh.class));
- cards.add(new SetCardInfo("Briarhorn", 199, Rarity.UNCOMMON, mage.cards.b.Briarhorn.class));
- cards.add(new SetCardInfo("Brigid, Hero of Kinsbaile", 6, Rarity.RARE, mage.cards.b.BrigidHeroOfKinsbaile.class));
- cards.add(new SetCardInfo("Brion Stoutarm", 246, Rarity.RARE, mage.cards.b.BrionStoutarm.class));
- cards.add(new SetCardInfo("Broken Ambitions", 54, Rarity.COMMON, mage.cards.b.BrokenAmbitions.class));
- cards.add(new SetCardInfo("Burrenton Forge-Tender", 7, Rarity.UNCOMMON, mage.cards.b.BurrentonForgeTender.class));
- cards.add(new SetCardInfo("Cairn Wanderer", 105, Rarity.RARE, mage.cards.c.CairnWanderer.class));
- cards.add(new SetCardInfo("Captivating Glance", 55, Rarity.UNCOMMON, mage.cards.c.CaptivatingGlance.class));
- cards.add(new SetCardInfo("Caterwauling Boggart", 157, Rarity.COMMON, mage.cards.c.CaterwaulingBoggart.class));
- cards.add(new SetCardInfo("Ceaseless Searblades", 158, Rarity.UNCOMMON, mage.cards.c.CeaselessSearblades.class));
- cards.add(new SetCardInfo("Cenn's Heir", 8, Rarity.COMMON, mage.cards.c.CennsHeir.class));
- cards.add(new SetCardInfo("Chandra Nalaar", 159, Rarity.RARE, mage.cards.c.ChandraNalaar.class));
- cards.add(new SetCardInfo("Changeling Berserker", 160, Rarity.UNCOMMON, mage.cards.c.ChangelingBerserker.class));
- cards.add(new SetCardInfo("Changeling Hero", 9, Rarity.UNCOMMON, mage.cards.c.ChangelingHero.class));
- cards.add(new SetCardInfo("Changeling Titan", 200, Rarity.UNCOMMON, mage.cards.c.ChangelingTitan.class));
- cards.add(new SetCardInfo("Cloudcrown Oak", 201, Rarity.COMMON, mage.cards.c.CloudcrownOak.class));
- cards.add(new SetCardInfo("Cloudgoat Ranger", 10, Rarity.UNCOMMON, mage.cards.c.CloudgoatRanger.class));
- cards.add(new SetCardInfo("Cloudthresher", 202, Rarity.RARE, mage.cards.c.Cloudthresher.class));
- cards.add(new SetCardInfo("Colfenor's Plans", 106, Rarity.RARE, mage.cards.c.ColfenorsPlans.class));
- cards.add(new SetCardInfo("Colfenor's Urn", 254, Rarity.RARE, mage.cards.c.ColfenorsUrn.class));
- cards.add(new SetCardInfo("Consuming Bonfire", 161, Rarity.COMMON, mage.cards.c.ConsumingBonfire.class));
- cards.add(new SetCardInfo("Crib Swap", 11, Rarity.UNCOMMON, mage.cards.c.CribSwap.class));
- cards.add(new SetCardInfo("Crush Underfoot", 162, Rarity.UNCOMMON, mage.cards.c.CrushUnderfoot.class));
- cards.add(new SetCardInfo("Cryptic Command", 56, Rarity.RARE, mage.cards.c.CrypticCommand.class));
- cards.add(new SetCardInfo("Dauntless Dourbark", 203, Rarity.RARE, mage.cards.d.DauntlessDourbark.class));
- cards.add(new SetCardInfo("Dawnfluke", 12, Rarity.COMMON, mage.cards.d.Dawnfluke.class));
- cards.add(new SetCardInfo("Deathrender", 255, Rarity.RARE, mage.cards.d.Deathrender.class));
- cards.add(new SetCardInfo("Deeptread Merrow", 57, Rarity.COMMON, mage.cards.d.DeeptreadMerrow.class));
- cards.add(new SetCardInfo("Dolmen Gate", 256, Rarity.RARE, mage.cards.d.DolmenGate.class));
- cards.add(new SetCardInfo("Doran, the Siege Tower", 247, Rarity.RARE, mage.cards.d.DoranTheSiegeTower.class));
- cards.add(new SetCardInfo("Dread", 107, Rarity.RARE, mage.cards.d.Dread.class));
- cards.add(new SetCardInfo("Dreamspoiler Witches", 108, Rarity.COMMON, mage.cards.d.DreamspoilerWitches.class));
- cards.add(new SetCardInfo("Drowner of Secrets", 58, Rarity.UNCOMMON, mage.cards.d.DrownerOfSecrets.class));
- cards.add(new SetCardInfo("Ego Erasure", 59, Rarity.UNCOMMON, mage.cards.e.EgoErasure.class));
- cards.add(new SetCardInfo("Elvish Branchbender", 204, Rarity.COMMON, mage.cards.e.ElvishBranchbender.class));
- cards.add(new SetCardInfo("Elvish Eulogist", 205, Rarity.COMMON, mage.cards.e.ElvishEulogist.class));
- cards.add(new SetCardInfo("Elvish Handservant", 206, Rarity.COMMON, mage.cards.e.ElvishHandservant.class));
- cards.add(new SetCardInfo("Elvish Harbinger", 207, Rarity.UNCOMMON, mage.cards.e.ElvishHarbinger.class));
- cards.add(new SetCardInfo("Elvish Promenade", 208, Rarity.UNCOMMON, mage.cards.e.ElvishPromenade.class));
- cards.add(new SetCardInfo("Entangling Trap", 13, Rarity.UNCOMMON, mage.cards.e.EntanglingTrap.class));
- cards.add(new SetCardInfo("Epic Proportions", 209, Rarity.RARE, mage.cards.e.EpicProportions.class));
- cards.add(new SetCardInfo("Ethereal Whiskergill", 60, Rarity.UNCOMMON, mage.cards.e.EtherealWhiskergill.class));
- cards.add(new SetCardInfo("Exiled Boggart", 109, Rarity.COMMON, mage.cards.e.ExiledBoggart.class));
- cards.add(new SetCardInfo("Eyeblight's Ending", 110, Rarity.COMMON, mage.cards.e.EyeblightsEnding.class));
- cards.add(new SetCardInfo("Eyes of the Wisent", 210, Rarity.RARE, mage.cards.e.EyesOfTheWisent.class));
- cards.add(new SetCardInfo("Facevaulter", 111, Rarity.COMMON, mage.cards.f.Facevaulter.class));
- cards.add(new SetCardInfo("Faerie Harbinger", 61, Rarity.UNCOMMON, mage.cards.f.FaerieHarbinger.class));
- cards.add(new SetCardInfo("Faerie Tauntings", 112, Rarity.UNCOMMON, mage.cards.f.FaerieTauntings.class));
- cards.add(new SetCardInfo("Faerie Trickery", 62, Rarity.COMMON, mage.cards.f.FaerieTrickery.class));
- cards.add(new SetCardInfo("Fallowsage", 63, Rarity.UNCOMMON, mage.cards.f.Fallowsage.class));
- cards.add(new SetCardInfo("Familiar's Ruse", 64, Rarity.UNCOMMON, mage.cards.f.FamiliarsRuse.class));
- cards.add(new SetCardInfo("Fathom Trawl", 65, Rarity.RARE, mage.cards.f.FathomTrawl.class));
- cards.add(new SetCardInfo("Faultgrinder", 163, Rarity.COMMON, mage.cards.f.Faultgrinder.class));
- cards.add(new SetCardInfo("Favor of the Mighty", 14, Rarity.RARE, mage.cards.f.FavorOfTheMighty.class));
- cards.add(new SetCardInfo("Fertile Ground", 211, Rarity.COMMON, mage.cards.f.FertileGround.class));
- cards.add(new SetCardInfo("Final Revels", 113, Rarity.UNCOMMON, mage.cards.f.FinalRevels.class));
- cards.add(new SetCardInfo("Fire-Belly Changeling", 164, Rarity.COMMON, mage.cards.f.FireBellyChangeling.class));
- cards.add(new SetCardInfo("Fistful of Force", 212, Rarity.COMMON, mage.cards.f.FistfulOfForce.class));
- cards.add(new SetCardInfo("Flamekin Bladewhirl", 165, Rarity.UNCOMMON, mage.cards.f.FlamekinBladewhirl.class));
- cards.add(new SetCardInfo("Flamekin Brawler", 166, Rarity.COMMON, mage.cards.f.FlamekinBrawler.class));
- cards.add(new SetCardInfo("Flamekin Harbinger", 167, Rarity.UNCOMMON, mage.cards.f.FlamekinHarbinger.class));
- cards.add(new SetCardInfo("Flamekin Spitfire", 168, Rarity.UNCOMMON, mage.cards.f.FlamekinSpitfire.class));
- cards.add(new SetCardInfo("Fodder Launch", 114, Rarity.UNCOMMON, mage.cards.f.FodderLaunch.class));
- cards.add(new SetCardInfo("Footbottom Feast", 115, Rarity.COMMON, mage.cards.f.FootbottomFeast.class));
- cards.add(new SetCardInfo("Forced Fruition", 66, Rarity.RARE, mage.cards.f.ForcedFruition.class));
- cards.add(new SetCardInfo("Forest", 298, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 299, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 300, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 301, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Gaddock Teeg", 248, Rarity.RARE, mage.cards.g.GaddockTeeg.class));
- cards.add(new SetCardInfo("Galepowder Mage", 15, Rarity.RARE, mage.cards.g.GalepowderMage.class));
- cards.add(new SetCardInfo("Garruk Wildspeaker", 213, Rarity.RARE, mage.cards.g.GarrukWildspeaker.class));
- cards.add(new SetCardInfo("Ghostly Changeling", 116, Rarity.UNCOMMON, mage.cards.g.GhostlyChangeling.class));
- cards.add(new SetCardInfo("Giant Harbinger", 169, Rarity.UNCOMMON, mage.cards.g.GiantHarbinger.class));
- cards.add(new SetCardInfo("Giant's Ire", 170, Rarity.COMMON, mage.cards.g.GiantsIre.class));
- cards.add(new SetCardInfo("Gilt-Leaf Ambush", 214, Rarity.COMMON, mage.cards.g.GiltLeafAmbush.class));
- cards.add(new SetCardInfo("Gilt-Leaf Palace", 268, Rarity.RARE, mage.cards.g.GiltLeafPalace.class));
- cards.add(new SetCardInfo("Gilt-Leaf Seer", 215, Rarity.COMMON, mage.cards.g.GiltLeafSeer.class));
- cards.add(new SetCardInfo("Glarewielder", 171, Rarity.UNCOMMON, mage.cards.g.Glarewielder.class));
- cards.add(new SetCardInfo("Glen Elendra Pranksters", 67, Rarity.UNCOMMON, mage.cards.g.GlenElendraPranksters.class));
- cards.add(new SetCardInfo("Glimmerdust Nap", 68, Rarity.COMMON, mage.cards.g.GlimmerdustNap.class));
- cards.add(new SetCardInfo("Goatnapper", 172, Rarity.UNCOMMON, mage.cards.g.Goatnapper.class));
- cards.add(new SetCardInfo("Goldmeadow Dodger", 16, Rarity.COMMON, mage.cards.g.GoldmeadowDodger.class));
- cards.add(new SetCardInfo("Goldmeadow Harrier", 17, Rarity.COMMON, mage.cards.g.GoldmeadowHarrier.class));
- cards.add(new SetCardInfo("Goldmeadow Stalwart", 18, Rarity.UNCOMMON, mage.cards.g.GoldmeadowStalwart.class));
- cards.add(new SetCardInfo("Guardian of Cloverdell", 216, Rarity.UNCOMMON, mage.cards.g.GuardianOfCloverdell.class));
- cards.add(new SetCardInfo("Guile", 69, Rarity.RARE, mage.cards.g.Guile.class));
- cards.add(new SetCardInfo("Hamletback Goliath", 173, Rarity.RARE, mage.cards.h.HamletbackGoliath.class));
- cards.add(new SetCardInfo("Harpoon Sniper", 19, Rarity.UNCOMMON, mage.cards.h.HarpoonSniper.class));
- cards.add(new SetCardInfo("Heal the Scars", 217, Rarity.COMMON, mage.cards.h.HealTheScars.class));
- cards.add(new SetCardInfo("Hearthcage Giant", 174, Rarity.UNCOMMON, mage.cards.h.HearthcageGiant.class));
- cards.add(new SetCardInfo("Heat Shimmer", 175, Rarity.RARE, mage.cards.h.HeatShimmer.class));
- cards.add(new SetCardInfo("Herbal Poultice", 257, Rarity.COMMON, mage.cards.h.HerbalPoultice.class));
- cards.add(new SetCardInfo("Hillcomber Giant", 20, Rarity.COMMON, mage.cards.h.HillcomberGiant.class));
- cards.add(new SetCardInfo("Hoarder's Greed", 117, Rarity.UNCOMMON, mage.cards.h.HoardersGreed.class));
- cards.add(new SetCardInfo("Hoofprints of the Stag", 21, Rarity.RARE, mage.cards.h.HoofprintsOfTheStag.class));
- cards.add(new SetCardInfo("Horde of Notions", 249, Rarity.RARE, mage.cards.h.HordeOfNotions.class));
- cards.add(new SetCardInfo("Hornet Harasser", 118, Rarity.COMMON, mage.cards.h.HornetHarasser.class));
- cards.add(new SetCardInfo("Hostility", 176, Rarity.RARE, mage.cards.h.Hostility.class));
- cards.add(new SetCardInfo("Howltooth Hollow", 269, Rarity.RARE, mage.cards.h.HowltoothHollow.class));
- cards.add(new SetCardInfo("Hunt Down", 218, Rarity.COMMON, mage.cards.h.HuntDown.class));
- cards.add(new SetCardInfo("Hunter of Eyeblights", 119, Rarity.UNCOMMON, mage.cards.h.HunterOfEyeblights.class));
- cards.add(new SetCardInfo("Hurly-Burly", 177, Rarity.COMMON, mage.cards.h.HurlyBurly.class));
- cards.add(new SetCardInfo("Immaculate Magistrate", 219, Rarity.RARE, mage.cards.i.ImmaculateMagistrate.class));
- cards.add(new SetCardInfo("Imperious Perfect", 220, Rarity.UNCOMMON, mage.cards.i.ImperiousPerfect.class));
- cards.add(new SetCardInfo("Incandescent Soulstoke", 178, Rarity.RARE, mage.cards.i.IncandescentSoulstoke.class));
- cards.add(new SetCardInfo("Incendiary Command", 179, Rarity.RARE, mage.cards.i.IncendiaryCommand.class));
- cards.add(new SetCardInfo("Incremental Growth", 221, Rarity.UNCOMMON, mage.cards.i.IncrementalGrowth.class));
- cards.add(new SetCardInfo("Ingot Chewer", 180, Rarity.COMMON, mage.cards.i.IngotChewer.class));
- cards.add(new SetCardInfo("Inkfathom Divers", 70, Rarity.COMMON, mage.cards.i.InkfathomDivers.class));
- cards.add(new SetCardInfo("Inner-Flame Acolyte", 181, Rarity.COMMON, mage.cards.i.InnerFlameAcolyte.class));
- cards.add(new SetCardInfo("Inner-Flame Igniter", 182, Rarity.UNCOMMON, mage.cards.i.InnerFlameIgniter.class));
- cards.add(new SetCardInfo("Island", 286, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 287, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 288, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 289, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Jace Beleren", 71, Rarity.RARE, mage.cards.j.JaceBeleren.class));
- cards.add(new SetCardInfo("Jagged-Scar Archers", 222, Rarity.UNCOMMON, mage.cards.j.JaggedScarArchers.class));
- cards.add(new SetCardInfo("Judge of Currents", 22, Rarity.COMMON, mage.cards.j.JudgeOfCurrents.class));
- cards.add(new SetCardInfo("Kinsbaile Balloonist", 23, Rarity.COMMON, mage.cards.k.KinsbaileBalloonist.class));
- cards.add(new SetCardInfo("Kinsbaile Skirmisher", 24, Rarity.COMMON, mage.cards.k.KinsbaileSkirmisher.class));
- cards.add(new SetCardInfo("Kithkin Daggerdare", 223, Rarity.COMMON, mage.cards.k.KithkinDaggerdare.class));
- cards.add(new SetCardInfo("Kithkin Greatheart", 25, Rarity.COMMON, mage.cards.k.KithkinGreatheart.class));
- cards.add(new SetCardInfo("Kithkin Harbinger", 26, Rarity.UNCOMMON, mage.cards.k.KithkinHarbinger.class));
- cards.add(new SetCardInfo("Kithkin Healer", 27, Rarity.COMMON, mage.cards.k.KithkinHealer.class));
- cards.add(new SetCardInfo("Kithkin Mourncaller", 224, Rarity.UNCOMMON, mage.cards.k.KithkinMourncaller.class));
- cards.add(new SetCardInfo("Knight of Meadowgrain", 28, Rarity.UNCOMMON, mage.cards.k.KnightOfMeadowgrain.class));
- cards.add(new SetCardInfo("Knucklebone Witch", 120, Rarity.RARE, mage.cards.k.KnuckleboneWitch.class));
- cards.add(new SetCardInfo("Lace with Moonglove", 225, Rarity.COMMON, mage.cards.l.LaceWithMoonglove.class));
- cards.add(new SetCardInfo("Lairwatch Giant", 29, Rarity.COMMON, mage.cards.l.LairwatchGiant.class));
- cards.add(new SetCardInfo("Lammastide Weave", 226, Rarity.UNCOMMON, mage.cards.l.LammastideWeave.class));
- cards.add(new SetCardInfo("Lash Out", 183, Rarity.COMMON, mage.cards.l.LashOut.class));
- cards.add(new SetCardInfo("Leaf Gilder", 227, Rarity.COMMON, mage.cards.l.LeafGilder.class));
- cards.add(new SetCardInfo("Lignify", 228, Rarity.COMMON, mage.cards.l.Lignify.class));
- cards.add(new SetCardInfo("Liliana Vess", 121, Rarity.RARE, mage.cards.l.LilianaVess.class));
- cards.add(new SetCardInfo("Lowland Oaf", 184, Rarity.COMMON, mage.cards.l.LowlandOaf.class));
- cards.add(new SetCardInfo("Lys Alana Huntmaster", 229, Rarity.COMMON, mage.cards.l.LysAlanaHuntmaster.class));
- cards.add(new SetCardInfo("Lys Alana Scarblade", 122, Rarity.UNCOMMON, mage.cards.l.LysAlanaScarblade.class));
- cards.add(new SetCardInfo("Mad Auntie", 123, Rarity.RARE, mage.cards.m.MadAuntie.class));
- cards.add(new SetCardInfo("Makeshift Mannequin", 124, Rarity.UNCOMMON, mage.cards.m.MakeshiftMannequin.class));
- cards.add(new SetCardInfo("Marsh Flitter", 125, Rarity.UNCOMMON, mage.cards.m.MarshFlitter.class));
- cards.add(new SetCardInfo("Masked Admirers", 230, Rarity.RARE, mage.cards.m.MaskedAdmirers.class));
- cards.add(new SetCardInfo("Merrow Commerce", 72, Rarity.UNCOMMON, mage.cards.m.MerrowCommerce.class));
- cards.add(new SetCardInfo("Merrow Harbinger", 73, Rarity.UNCOMMON, mage.cards.m.MerrowHarbinger.class));
- cards.add(new SetCardInfo("Merrow Reejerey", 74, Rarity.UNCOMMON, mage.cards.m.MerrowReejerey.class));
- cards.add(new SetCardInfo("Militia's Pride", 30, Rarity.RARE, mage.cards.m.MilitiasPride.class));
- cards.add(new SetCardInfo("Mirror Entity", 31, Rarity.RARE, mage.cards.m.MirrorEntity.class));
- cards.add(new SetCardInfo("Mistbind Clique", 75, Rarity.RARE, mage.cards.m.MistbindClique.class));
- cards.add(new SetCardInfo("Moonglove Extract", 258, Rarity.COMMON, mage.cards.m.MoongloveExtract.class));
- cards.add(new SetCardInfo("Moonglove Winnower", 126, Rarity.COMMON, mage.cards.m.MoongloveWinnower.class));
- cards.add(new SetCardInfo("Mosswort Bridge", 270, Rarity.RARE, mage.cards.m.MosswortBridge.class));
- cards.add(new SetCardInfo("Mountain", 294, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 295, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 296, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 297, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mournwhelk", 127, Rarity.COMMON, mage.cards.m.Mournwhelk.class));
- cards.add(new SetCardInfo("Mudbutton Torchrunner", 185, Rarity.COMMON, mage.cards.m.MudbuttonTorchrunner.class));
- cards.add(new SetCardInfo("Mulldrifter", 76, Rarity.COMMON, mage.cards.m.Mulldrifter.class));
- cards.add(new SetCardInfo("Nameless Inversion", 128, Rarity.COMMON, mage.cards.n.NamelessInversion.class));
- cards.add(new SetCardInfo("Nath of the Gilt-Leaf", 250, Rarity.RARE, mage.cards.n.NathOfTheGiltLeaf.class));
- cards.add(new SetCardInfo("Nath's Buffoon", 129, Rarity.COMMON, mage.cards.n.NathsBuffoon.class));
- cards.add(new SetCardInfo("Nath's Elite", 231, Rarity.COMMON, mage.cards.n.NathsElite.class));
- cards.add(new SetCardInfo("Neck Snap", 32, Rarity.COMMON, mage.cards.n.NeckSnap.class));
- cards.add(new SetCardInfo("Nectar Faerie", 130, Rarity.UNCOMMON, mage.cards.n.NectarFaerie.class));
- cards.add(new SetCardInfo("Needle Drop", 186, Rarity.COMMON, mage.cards.n.NeedleDrop.class));
- cards.add(new SetCardInfo("Nettlevine Blight", 131, Rarity.RARE, mage.cards.n.NettlevineBlight.class));
- cards.add(new SetCardInfo("Nightshade Stinger", 132, Rarity.COMMON, mage.cards.n.NightshadeStinger.class));
- cards.add(new SetCardInfo("Nova Chaser", 187, Rarity.RARE, mage.cards.n.NovaChaser.class));
- cards.add(new SetCardInfo("Oaken Brawler", 33, Rarity.COMMON, mage.cards.o.OakenBrawler.class));
- cards.add(new SetCardInfo("Oakgnarl Warrior", 232, Rarity.COMMON, mage.cards.o.OakgnarlWarrior.class));
- cards.add(new SetCardInfo("Oblivion Ring", 34, Rarity.COMMON, mage.cards.o.OblivionRing.class));
- cards.add(new SetCardInfo("Oona's Prowler", 133, Rarity.RARE, mage.cards.o.OonasProwler.class));
- cards.add(new SetCardInfo("Paperfin Rascal", 77, Rarity.COMMON, mage.cards.p.PaperfinRascal.class));
- cards.add(new SetCardInfo("Peppersmoke", 134, Rarity.COMMON, mage.cards.p.Peppersmoke.class));
- cards.add(new SetCardInfo("Pestermite", 78, Rarity.COMMON, mage.cards.p.Pestermite.class));
- cards.add(new SetCardInfo("Plains", 282, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 283, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 284, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 285, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plover Knights", 35, Rarity.COMMON, mage.cards.p.PloverKnights.class));
- cards.add(new SetCardInfo("Pollen Lullaby", 36, Rarity.UNCOMMON, mage.cards.p.PollenLullaby.class));
- cards.add(new SetCardInfo("Ponder", 79, Rarity.COMMON, mage.cards.p.Ponder.class));
- cards.add(new SetCardInfo("Primal Command", 233, Rarity.RARE, mage.cards.p.PrimalCommand.class));
- cards.add(new SetCardInfo("Profane Command", 135, Rarity.RARE, mage.cards.p.ProfaneCommand.class));
- cards.add(new SetCardInfo("Protective Bubble", 80, Rarity.COMMON, mage.cards.p.ProtectiveBubble.class));
- cards.add(new SetCardInfo("Prowess of the Fair", 136, Rarity.UNCOMMON, mage.cards.p.ProwessOfTheFair.class));
- cards.add(new SetCardInfo("Purity", 37, Rarity.RARE, mage.cards.p.Purity.class));
- cards.add(new SetCardInfo("Quill-Slinger Boggart", 137, Rarity.COMMON, mage.cards.q.QuillSlingerBoggart.class));
- cards.add(new SetCardInfo("Rebellion of the Flamekin", 188, Rarity.UNCOMMON, mage.cards.r.RebellionOfTheFlamekin.class));
- cards.add(new SetCardInfo("Ringskipper", 81, Rarity.COMMON, mage.cards.r.Ringskipper.class));
- cards.add(new SetCardInfo("Rings of Brighthearth", 259, Rarity.RARE, mage.cards.r.RingsOfBrighthearth.class));
- cards.add(new SetCardInfo("Rootgrapple", 234, Rarity.COMMON, mage.cards.r.Rootgrapple.class));
- cards.add(new SetCardInfo("Runed Stalactite", 260, Rarity.COMMON, mage.cards.r.RunedStalactite.class));
- cards.add(new SetCardInfo("Scarred Vinebreeder", 138, Rarity.COMMON, mage.cards.s.ScarredVinebreeder.class));
- cards.add(new SetCardInfo("Scattering Stroke", 82, Rarity.UNCOMMON, mage.cards.s.ScatteringStroke.class));
- cards.add(new SetCardInfo("Scion of Oona", 83, Rarity.RARE, mage.cards.s.ScionOfOona.class));
- cards.add(new SetCardInfo("Secluded Glen", 271, Rarity.RARE, mage.cards.s.SecludedGlen.class));
- cards.add(new SetCardInfo("Seedguide Ash", 235, Rarity.UNCOMMON, mage.cards.s.SeedguideAsh.class));
- cards.add(new SetCardInfo("Sentinels of Glen Elendra", 84, Rarity.COMMON, mage.cards.s.SentinelsOfGlenElendra.class));
- cards.add(new SetCardInfo("Sentry Oak", 38, Rarity.UNCOMMON, mage.cards.s.SentryOak.class));
- cards.add(new SetCardInfo("Shapesharer", 85, Rarity.RARE, mage.cards.s.Shapesharer.class));
- cards.add(new SetCardInfo("Shelldock Isle", 272, Rarity.RARE, mage.cards.s.ShelldockIsle.class));
- cards.add(new SetCardInfo("Shields of Velis Vel", 39, Rarity.COMMON, mage.cards.s.ShieldsOfVelisVel.class));
- cards.add(new SetCardInfo("Shimmering Grotto", 273, Rarity.COMMON, mage.cards.s.ShimmeringGrotto.class));
- cards.add(new SetCardInfo("Shriekmaw", 139, Rarity.UNCOMMON, mage.cards.s.Shriekmaw.class));
- cards.add(new SetCardInfo("Silvergill Adept", 86, Rarity.UNCOMMON, mage.cards.s.SilvergillAdept.class));
- cards.add(new SetCardInfo("Silvergill Douser", 87, Rarity.COMMON, mage.cards.s.SilvergillDouser.class));
- cards.add(new SetCardInfo("Skeletal Changeling", 140, Rarity.COMMON, mage.cards.s.SkeletalChangeling.class));
- cards.add(new SetCardInfo("Smokebraider", 189, Rarity.COMMON, mage.cards.s.Smokebraider.class));
- cards.add(new SetCardInfo("Soaring Hope", 40, Rarity.COMMON, mage.cards.s.SoaringHope.class));
- cards.add(new SetCardInfo("Soulbright Flamekin", 190, Rarity.COMMON, mage.cards.s.SoulbrightFlamekin.class));
- cards.add(new SetCardInfo("Sower of Temptation", 88, Rarity.RARE, mage.cards.s.SowerOfTemptation.class));
- cards.add(new SetCardInfo("Spellstutter Sprite", 89, Rarity.COMMON, mage.cards.s.SpellstutterSprite.class));
- cards.add(new SetCardInfo("Spiderwig Boggart", 141, Rarity.COMMON, mage.cards.s.SpiderwigBoggart.class));
- cards.add(new SetCardInfo("Spinerock Knoll", 274, Rarity.RARE, mage.cards.s.SpinerockKnoll.class));
- cards.add(new SetCardInfo("Spring Cleaning", 236, Rarity.COMMON, mage.cards.s.SpringCleaning.class));
- cards.add(new SetCardInfo("Springjack Knight", 41, Rarity.COMMON, mage.cards.s.SpringjackKnight.class));
- cards.add(new SetCardInfo("Springleaf Drum", 261, Rarity.COMMON, mage.cards.s.SpringleafDrum.class));
- cards.add(new SetCardInfo("Squeaking Pie Sneak", 142, Rarity.UNCOMMON, mage.cards.s.SqueakingPieSneak.class));
- cards.add(new SetCardInfo("Stinkdrinker Daredevil", 191, Rarity.COMMON, mage.cards.s.StinkdrinkerDaredevil.class));
- cards.add(new SetCardInfo("Stonybrook Angler", 90, Rarity.COMMON, mage.cards.s.StonybrookAngler.class));
- cards.add(new SetCardInfo("Streambed Aquitects", 91, Rarity.COMMON, mage.cards.s.StreambedAquitects.class));
- cards.add(new SetCardInfo("Summon the School", 42, Rarity.UNCOMMON, mage.cards.s.SummonTheSchool.class));
- cards.add(new SetCardInfo("Sunrise Sovereign", 192, Rarity.RARE, mage.cards.s.SunriseSovereign.class));
- cards.add(new SetCardInfo("Surge of Thoughtweft", 43, Rarity.COMMON, mage.cards.s.SurgeOfThoughtweft.class));
- cards.add(new SetCardInfo("Surgespanner", 92, Rarity.RARE, mage.cards.s.Surgespanner.class));
- cards.add(new SetCardInfo("Swamp", 290, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 291, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 292, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 293, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Sygg, River Guide", 251, Rarity.RARE, mage.cards.s.SyggRiverGuide.class));
- cards.add(new SetCardInfo("Sylvan Echoes", 237, Rarity.UNCOMMON, mage.cards.s.SylvanEchoes.class));
- cards.add(new SetCardInfo("Tarfire", 194, Rarity.COMMON, mage.cards.t.Tarfire.class));
- cards.add(new SetCardInfo("Tar Pitcher", 193, Rarity.UNCOMMON, mage.cards.t.TarPitcher.class));
- cards.add(new SetCardInfo("Thieving Sprite", 143, Rarity.COMMON, mage.cards.t.ThievingSprite.class));
- cards.add(new SetCardInfo("Thorn of Amethyst", 262, Rarity.RARE, mage.cards.t.ThornOfAmethyst.class));
- cards.add(new SetCardInfo("Thorntooth Witch", 144, Rarity.UNCOMMON, mage.cards.t.ThorntoothWitch.class));
- cards.add(new SetCardInfo("Thoughtseize", 145, Rarity.RARE, mage.cards.t.Thoughtseize.class));
- cards.add(new SetCardInfo("Thoughtweft Trio", 44, Rarity.RARE, mage.cards.t.ThoughtweftTrio.class));
- cards.add(new SetCardInfo("Thousand-Year Elixir", 263, Rarity.RARE, mage.cards.t.ThousandYearElixir.class));
- cards.add(new SetCardInfo("Thundercloud Shaman", 195, Rarity.UNCOMMON, mage.cards.t.ThundercloudShaman.class));
- cards.add(new SetCardInfo("Tideshaper Mystic", 93, Rarity.COMMON, mage.cards.t.TideshaperMystic.class));
- cards.add(new SetCardInfo("Timber Protector", 238, Rarity.RARE, mage.cards.t.TimberProtector.class));
- cards.add(new SetCardInfo("Treefolk Harbinger", 239, Rarity.UNCOMMON, mage.cards.t.TreefolkHarbinger.class));
- cards.add(new SetCardInfo("Triclopean Sight", 45, Rarity.COMMON, mage.cards.t.TriclopeanSight.class));
- cards.add(new SetCardInfo("Turtleshell Changeling", 94, Rarity.UNCOMMON, mage.cards.t.TurtleshellChangeling.class));
- cards.add(new SetCardInfo("Twinning Glass", 264, Rarity.RARE, mage.cards.t.TwinningGlass.class));
- cards.add(new SetCardInfo("Veteran of the Depths", 46, Rarity.UNCOMMON, mage.cards.v.VeteranOfTheDepths.class));
- cards.add(new SetCardInfo("Vigor", 240, Rarity.RARE, mage.cards.v.Vigor.class));
- cards.add(new SetCardInfo("Vivid Crag", 275, Rarity.UNCOMMON, mage.cards.v.VividCrag.class));
- cards.add(new SetCardInfo("Vivid Creek", 276, Rarity.UNCOMMON, mage.cards.v.VividCreek.class));
- cards.add(new SetCardInfo("Vivid Grove", 277, Rarity.UNCOMMON, mage.cards.v.VividGrove.class));
- cards.add(new SetCardInfo("Vivid Marsh", 278, Rarity.UNCOMMON, mage.cards.v.VividMarsh.class));
- cards.add(new SetCardInfo("Vivid Meadow", 279, Rarity.UNCOMMON, mage.cards.v.VividMeadow.class));
- cards.add(new SetCardInfo("Wanderer's Twig", 265, Rarity.COMMON, mage.cards.w.WanderersTwig.class));
- cards.add(new SetCardInfo("Wanderwine Hub", 280, Rarity.RARE, mage.cards.w.WanderwineHub.class));
- cards.add(new SetCardInfo("Wanderwine Prophets", 95, Rarity.RARE, mage.cards.w.WanderwineProphets.class));
- cards.add(new SetCardInfo("Warren Pilferers", 146, Rarity.COMMON, mage.cards.w.WarrenPilferers.class));
- cards.add(new SetCardInfo("Warren-Scourge Elf", 241, Rarity.COMMON, mage.cards.w.WarrenScourgeElf.class));
- cards.add(new SetCardInfo("Weed Strangle", 147, Rarity.COMMON, mage.cards.w.WeedStrangle.class));
- cards.add(new SetCardInfo("Wellgabber Apothecary", 47, Rarity.COMMON, mage.cards.w.WellgabberApothecary.class));
- cards.add(new SetCardInfo("Whirlpool Whelm", 96, Rarity.COMMON, mage.cards.w.WhirlpoolWhelm.class));
- cards.add(new SetCardInfo("Wild Ricochet", 196, Rarity.RARE, mage.cards.w.WildRicochet.class));
- cards.add(new SetCardInfo("Windbrisk Heights", 281, Rarity.RARE, mage.cards.w.WindbriskHeights.class));
- cards.add(new SetCardInfo("Wings of Velis Vel", 97, Rarity.COMMON, mage.cards.w.WingsOfVelisVel.class));
- cards.add(new SetCardInfo("Wispmare", 48, Rarity.COMMON, mage.cards.w.Wispmare.class));
- cards.add(new SetCardInfo("Wizened Cenn", 49, Rarity.UNCOMMON, mage.cards.w.WizenedCenn.class));
- cards.add(new SetCardInfo("Woodland Changeling", 242, Rarity.COMMON, mage.cards.w.WoodlandChangeling.class));
- cards.add(new SetCardInfo("Woodland Guidance", 243, Rarity.UNCOMMON, mage.cards.w.WoodlandGuidance.class));
- cards.add(new SetCardInfo("Wort, Boggart Auntie", 252, Rarity.RARE, mage.cards.w.WortBoggartAuntie.class));
- cards.add(new SetCardInfo("Wren's Run Packmaster", 244, Rarity.RARE, mage.cards.w.WrensRunPackmaster.class));
- cards.add(new SetCardInfo("Wren's Run Vanquisher", 245, Rarity.UNCOMMON, mage.cards.w.WrensRunVanquisher.class));
- cards.add(new SetCardInfo("Wydwen, the Biting Gale", 253, Rarity.RARE, mage.cards.w.WydwenTheBitingGale.class));
- cards.add(new SetCardInfo("Zephyr Net", 98, Rarity.COMMON, mage.cards.z.ZephyrNet.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Lorwyn extends ExpansionSet {
+
+ private static final Lorwyn instance = new Lorwyn();
+
+ public static Lorwyn getInstance() {
+ return instance;
+ }
+
+ private Lorwyn() {
+ super("Lorwyn", "LRW", ExpansionSet.buildDate(2007, 10, 12), SetType.EXPANSION);
+ this.blockName = "Lorwyn";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Adder-Staff Boggart", 148, Rarity.COMMON, mage.cards.a.AdderStaffBoggart.class));
+ cards.add(new SetCardInfo("Aethersnipe", 50, Rarity.COMMON, mage.cards.a.Aethersnipe.class));
+ cards.add(new SetCardInfo("Ajani Goldmane", 1, Rarity.RARE, mage.cards.a.AjaniGoldmane.class));
+ cards.add(new SetCardInfo("Amoeboid Changeling", 51, Rarity.COMMON, mage.cards.a.AmoeboidChangeling.class));
+ cards.add(new SetCardInfo("Ancient Amphitheater", 266, Rarity.RARE, mage.cards.a.AncientAmphitheater.class));
+ cards.add(new SetCardInfo("Aquitect's Will", 52, Rarity.COMMON, mage.cards.a.AquitectsWill.class));
+ cards.add(new SetCardInfo("Arbiter of Knollridge", 2, Rarity.RARE, mage.cards.a.ArbiterOfKnollridge.class));
+ cards.add(new SetCardInfo("Ashling's Prerogative", 150, Rarity.RARE, mage.cards.a.AshlingsPrerogative.class));
+ cards.add(new SetCardInfo("Ashling the Pilgrim", 149, Rarity.RARE, mage.cards.a.AshlingThePilgrim.class));
+ cards.add(new SetCardInfo("Auntie's Hovel", 267, Rarity.RARE, mage.cards.a.AuntiesHovel.class));
+ cards.add(new SetCardInfo("Austere Command", 3, Rarity.RARE, mage.cards.a.AustereCommand.class));
+ cards.add(new SetCardInfo("Avian Changeling", 4, Rarity.COMMON, mage.cards.a.AvianChangeling.class));
+ cards.add(new SetCardInfo("Axegrinder Giant", 151, Rarity.COMMON, mage.cards.a.AxegrinderGiant.class));
+ cards.add(new SetCardInfo("Battle Mastery", 5, Rarity.UNCOMMON, mage.cards.b.BattleMastery.class));
+ cards.add(new SetCardInfo("Battlewand Oak", 197, Rarity.COMMON, mage.cards.b.BattlewandOak.class));
+ cards.add(new SetCardInfo("Benthicore", 53, Rarity.UNCOMMON, mage.cards.b.Benthicore.class));
+ cards.add(new SetCardInfo("Black Poplar Shaman", 99, Rarity.COMMON, mage.cards.b.BlackPoplarShaman.class));
+ cards.add(new SetCardInfo("Blades of Velis Vel", 152, Rarity.COMMON, mage.cards.b.BladesOfVelisVel.class));
+ cards.add(new SetCardInfo("Blind-Spot Giant", 153, Rarity.COMMON, mage.cards.b.BlindSpotGiant.class));
+ cards.add(new SetCardInfo("Boggart Birth Rite", 101, Rarity.COMMON, mage.cards.b.BoggartBirthRite.class));
+ cards.add(new SetCardInfo("Boggart Forager", 154, Rarity.COMMON, mage.cards.b.BoggartForager.class));
+ cards.add(new SetCardInfo("Boggart Harbinger", 102, Rarity.UNCOMMON, mage.cards.b.BoggartHarbinger.class));
+ cards.add(new SetCardInfo("Boggart Loggers", 103, Rarity.COMMON, mage.cards.b.BoggartLoggers.class));
+ cards.add(new SetCardInfo("Boggart Mob", 104, Rarity.RARE, mage.cards.b.BoggartMob.class));
+ cards.add(new SetCardInfo("Boggart Shenanigans", 155, Rarity.UNCOMMON, mage.cards.b.BoggartShenanigans.class));
+ cards.add(new SetCardInfo("Boggart Sprite-Chaser", 156, Rarity.COMMON, mage.cards.b.BoggartSpriteChaser.class));
+ cards.add(new SetCardInfo("Bog Hoodlums", 100, Rarity.COMMON, mage.cards.b.BogHoodlums.class));
+ cards.add(new SetCardInfo("Bog-Strider Ash", 198, Rarity.COMMON, mage.cards.b.BogStriderAsh.class));
+ cards.add(new SetCardInfo("Briarhorn", 199, Rarity.UNCOMMON, mage.cards.b.Briarhorn.class));
+ cards.add(new SetCardInfo("Brigid, Hero of Kinsbaile", 6, Rarity.RARE, mage.cards.b.BrigidHeroOfKinsbaile.class));
+ cards.add(new SetCardInfo("Brion Stoutarm", 246, Rarity.RARE, mage.cards.b.BrionStoutarm.class));
+ cards.add(new SetCardInfo("Broken Ambitions", 54, Rarity.COMMON, mage.cards.b.BrokenAmbitions.class));
+ cards.add(new SetCardInfo("Burrenton Forge-Tender", 7, Rarity.UNCOMMON, mage.cards.b.BurrentonForgeTender.class));
+ cards.add(new SetCardInfo("Cairn Wanderer", 105, Rarity.RARE, mage.cards.c.CairnWanderer.class));
+ cards.add(new SetCardInfo("Captivating Glance", 55, Rarity.UNCOMMON, mage.cards.c.CaptivatingGlance.class));
+ cards.add(new SetCardInfo("Caterwauling Boggart", 157, Rarity.COMMON, mage.cards.c.CaterwaulingBoggart.class));
+ cards.add(new SetCardInfo("Ceaseless Searblades", 158, Rarity.UNCOMMON, mage.cards.c.CeaselessSearblades.class));
+ cards.add(new SetCardInfo("Cenn's Heir", 8, Rarity.COMMON, mage.cards.c.CennsHeir.class));
+ cards.add(new SetCardInfo("Chandra Nalaar", 159, Rarity.RARE, mage.cards.c.ChandraNalaar.class));
+ cards.add(new SetCardInfo("Changeling Berserker", 160, Rarity.UNCOMMON, mage.cards.c.ChangelingBerserker.class));
+ cards.add(new SetCardInfo("Changeling Hero", 9, Rarity.UNCOMMON, mage.cards.c.ChangelingHero.class));
+ cards.add(new SetCardInfo("Changeling Titan", 200, Rarity.UNCOMMON, mage.cards.c.ChangelingTitan.class));
+ cards.add(new SetCardInfo("Cloudcrown Oak", 201, Rarity.COMMON, mage.cards.c.CloudcrownOak.class));
+ cards.add(new SetCardInfo("Cloudgoat Ranger", 10, Rarity.UNCOMMON, mage.cards.c.CloudgoatRanger.class));
+ cards.add(new SetCardInfo("Cloudthresher", 202, Rarity.RARE, mage.cards.c.Cloudthresher.class));
+ cards.add(new SetCardInfo("Colfenor's Plans", 106, Rarity.RARE, mage.cards.c.ColfenorsPlans.class));
+ cards.add(new SetCardInfo("Colfenor's Urn", 254, Rarity.RARE, mage.cards.c.ColfenorsUrn.class));
+ cards.add(new SetCardInfo("Consuming Bonfire", 161, Rarity.COMMON, mage.cards.c.ConsumingBonfire.class));
+ cards.add(new SetCardInfo("Crib Swap", 11, Rarity.UNCOMMON, mage.cards.c.CribSwap.class));
+ cards.add(new SetCardInfo("Crush Underfoot", 162, Rarity.UNCOMMON, mage.cards.c.CrushUnderfoot.class));
+ cards.add(new SetCardInfo("Cryptic Command", 56, Rarity.RARE, mage.cards.c.CrypticCommand.class));
+ cards.add(new SetCardInfo("Dauntless Dourbark", 203, Rarity.RARE, mage.cards.d.DauntlessDourbark.class));
+ cards.add(new SetCardInfo("Dawnfluke", 12, Rarity.COMMON, mage.cards.d.Dawnfluke.class));
+ cards.add(new SetCardInfo("Deathrender", 255, Rarity.RARE, mage.cards.d.Deathrender.class));
+ cards.add(new SetCardInfo("Deeptread Merrow", 57, Rarity.COMMON, mage.cards.d.DeeptreadMerrow.class));
+ cards.add(new SetCardInfo("Dolmen Gate", 256, Rarity.RARE, mage.cards.d.DolmenGate.class));
+ cards.add(new SetCardInfo("Doran, the Siege Tower", 247, Rarity.RARE, mage.cards.d.DoranTheSiegeTower.class));
+ cards.add(new SetCardInfo("Dread", 107, Rarity.RARE, mage.cards.d.Dread.class));
+ cards.add(new SetCardInfo("Dreamspoiler Witches", 108, Rarity.COMMON, mage.cards.d.DreamspoilerWitches.class));
+ cards.add(new SetCardInfo("Drowner of Secrets", 58, Rarity.UNCOMMON, mage.cards.d.DrownerOfSecrets.class));
+ cards.add(new SetCardInfo("Ego Erasure", 59, Rarity.UNCOMMON, mage.cards.e.EgoErasure.class));
+ cards.add(new SetCardInfo("Elvish Branchbender", 204, Rarity.COMMON, mage.cards.e.ElvishBranchbender.class));
+ cards.add(new SetCardInfo("Elvish Eulogist", 205, Rarity.COMMON, mage.cards.e.ElvishEulogist.class));
+ cards.add(new SetCardInfo("Elvish Handservant", 206, Rarity.COMMON, mage.cards.e.ElvishHandservant.class));
+ cards.add(new SetCardInfo("Elvish Harbinger", 207, Rarity.UNCOMMON, mage.cards.e.ElvishHarbinger.class));
+ cards.add(new SetCardInfo("Elvish Promenade", 208, Rarity.UNCOMMON, mage.cards.e.ElvishPromenade.class));
+ cards.add(new SetCardInfo("Entangling Trap", 13, Rarity.UNCOMMON, mage.cards.e.EntanglingTrap.class));
+ cards.add(new SetCardInfo("Epic Proportions", 209, Rarity.RARE, mage.cards.e.EpicProportions.class));
+ cards.add(new SetCardInfo("Ethereal Whiskergill", 60, Rarity.UNCOMMON, mage.cards.e.EtherealWhiskergill.class));
+ cards.add(new SetCardInfo("Exiled Boggart", 109, Rarity.COMMON, mage.cards.e.ExiledBoggart.class));
+ cards.add(new SetCardInfo("Eyeblight's Ending", 110, Rarity.COMMON, mage.cards.e.EyeblightsEnding.class));
+ cards.add(new SetCardInfo("Eyes of the Wisent", 210, Rarity.RARE, mage.cards.e.EyesOfTheWisent.class));
+ cards.add(new SetCardInfo("Facevaulter", 111, Rarity.COMMON, mage.cards.f.Facevaulter.class));
+ cards.add(new SetCardInfo("Faerie Harbinger", 61, Rarity.UNCOMMON, mage.cards.f.FaerieHarbinger.class));
+ cards.add(new SetCardInfo("Faerie Tauntings", 112, Rarity.UNCOMMON, mage.cards.f.FaerieTauntings.class));
+ cards.add(new SetCardInfo("Faerie Trickery", 62, Rarity.COMMON, mage.cards.f.FaerieTrickery.class));
+ cards.add(new SetCardInfo("Fallowsage", 63, Rarity.UNCOMMON, mage.cards.f.Fallowsage.class));
+ cards.add(new SetCardInfo("Familiar's Ruse", 64, Rarity.UNCOMMON, mage.cards.f.FamiliarsRuse.class));
+ cards.add(new SetCardInfo("Fathom Trawl", 65, Rarity.RARE, mage.cards.f.FathomTrawl.class));
+ cards.add(new SetCardInfo("Faultgrinder", 163, Rarity.COMMON, mage.cards.f.Faultgrinder.class));
+ cards.add(new SetCardInfo("Favor of the Mighty", 14, Rarity.RARE, mage.cards.f.FavorOfTheMighty.class));
+ cards.add(new SetCardInfo("Fertile Ground", 211, Rarity.COMMON, mage.cards.f.FertileGround.class));
+ cards.add(new SetCardInfo("Final Revels", 113, Rarity.UNCOMMON, mage.cards.f.FinalRevels.class));
+ cards.add(new SetCardInfo("Fire-Belly Changeling", 164, Rarity.COMMON, mage.cards.f.FireBellyChangeling.class));
+ cards.add(new SetCardInfo("Fistful of Force", 212, Rarity.COMMON, mage.cards.f.FistfulOfForce.class));
+ cards.add(new SetCardInfo("Flamekin Bladewhirl", 165, Rarity.UNCOMMON, mage.cards.f.FlamekinBladewhirl.class));
+ cards.add(new SetCardInfo("Flamekin Brawler", 166, Rarity.COMMON, mage.cards.f.FlamekinBrawler.class));
+ cards.add(new SetCardInfo("Flamekin Harbinger", 167, Rarity.UNCOMMON, mage.cards.f.FlamekinHarbinger.class));
+ cards.add(new SetCardInfo("Flamekin Spitfire", 168, Rarity.UNCOMMON, mage.cards.f.FlamekinSpitfire.class));
+ cards.add(new SetCardInfo("Fodder Launch", 114, Rarity.UNCOMMON, mage.cards.f.FodderLaunch.class));
+ cards.add(new SetCardInfo("Footbottom Feast", 115, Rarity.COMMON, mage.cards.f.FootbottomFeast.class));
+ cards.add(new SetCardInfo("Forced Fruition", 66, Rarity.RARE, mage.cards.f.ForcedFruition.class));
+ cards.add(new SetCardInfo("Forest", 298, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 299, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 300, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 301, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Gaddock Teeg", 248, Rarity.RARE, mage.cards.g.GaddockTeeg.class));
+ cards.add(new SetCardInfo("Galepowder Mage", 15, Rarity.RARE, mage.cards.g.GalepowderMage.class));
+ cards.add(new SetCardInfo("Garruk Wildspeaker", 213, Rarity.RARE, mage.cards.g.GarrukWildspeaker.class));
+ cards.add(new SetCardInfo("Ghostly Changeling", 116, Rarity.UNCOMMON, mage.cards.g.GhostlyChangeling.class));
+ cards.add(new SetCardInfo("Giant Harbinger", 169, Rarity.UNCOMMON, mage.cards.g.GiantHarbinger.class));
+ cards.add(new SetCardInfo("Giant's Ire", 170, Rarity.COMMON, mage.cards.g.GiantsIre.class));
+ cards.add(new SetCardInfo("Gilt-Leaf Ambush", 214, Rarity.COMMON, mage.cards.g.GiltLeafAmbush.class));
+ cards.add(new SetCardInfo("Gilt-Leaf Palace", 268, Rarity.RARE, mage.cards.g.GiltLeafPalace.class));
+ cards.add(new SetCardInfo("Gilt-Leaf Seer", 215, Rarity.COMMON, mage.cards.g.GiltLeafSeer.class));
+ cards.add(new SetCardInfo("Glarewielder", 171, Rarity.UNCOMMON, mage.cards.g.Glarewielder.class));
+ cards.add(new SetCardInfo("Glen Elendra Pranksters", 67, Rarity.UNCOMMON, mage.cards.g.GlenElendraPranksters.class));
+ cards.add(new SetCardInfo("Glimmerdust Nap", 68, Rarity.COMMON, mage.cards.g.GlimmerdustNap.class));
+ cards.add(new SetCardInfo("Goatnapper", 172, Rarity.UNCOMMON, mage.cards.g.Goatnapper.class));
+ cards.add(new SetCardInfo("Goldmeadow Dodger", 16, Rarity.COMMON, mage.cards.g.GoldmeadowDodger.class));
+ cards.add(new SetCardInfo("Goldmeadow Harrier", 17, Rarity.COMMON, mage.cards.g.GoldmeadowHarrier.class));
+ cards.add(new SetCardInfo("Goldmeadow Stalwart", 18, Rarity.UNCOMMON, mage.cards.g.GoldmeadowStalwart.class));
+ cards.add(new SetCardInfo("Guardian of Cloverdell", 216, Rarity.UNCOMMON, mage.cards.g.GuardianOfCloverdell.class));
+ cards.add(new SetCardInfo("Guile", 69, Rarity.RARE, mage.cards.g.Guile.class));
+ cards.add(new SetCardInfo("Hamletback Goliath", 173, Rarity.RARE, mage.cards.h.HamletbackGoliath.class));
+ cards.add(new SetCardInfo("Harpoon Sniper", 19, Rarity.UNCOMMON, mage.cards.h.HarpoonSniper.class));
+ cards.add(new SetCardInfo("Heal the Scars", 217, Rarity.COMMON, mage.cards.h.HealTheScars.class));
+ cards.add(new SetCardInfo("Hearthcage Giant", 174, Rarity.UNCOMMON, mage.cards.h.HearthcageGiant.class));
+ cards.add(new SetCardInfo("Heat Shimmer", 175, Rarity.RARE, mage.cards.h.HeatShimmer.class));
+ cards.add(new SetCardInfo("Herbal Poultice", 257, Rarity.COMMON, mage.cards.h.HerbalPoultice.class));
+ cards.add(new SetCardInfo("Hillcomber Giant", 20, Rarity.COMMON, mage.cards.h.HillcomberGiant.class));
+ cards.add(new SetCardInfo("Hoarder's Greed", 117, Rarity.UNCOMMON, mage.cards.h.HoardersGreed.class));
+ cards.add(new SetCardInfo("Hoofprints of the Stag", 21, Rarity.RARE, mage.cards.h.HoofprintsOfTheStag.class));
+ cards.add(new SetCardInfo("Horde of Notions", 249, Rarity.RARE, mage.cards.h.HordeOfNotions.class));
+ cards.add(new SetCardInfo("Hornet Harasser", 118, Rarity.COMMON, mage.cards.h.HornetHarasser.class));
+ cards.add(new SetCardInfo("Hostility", 176, Rarity.RARE, mage.cards.h.Hostility.class));
+ cards.add(new SetCardInfo("Howltooth Hollow", 269, Rarity.RARE, mage.cards.h.HowltoothHollow.class));
+ cards.add(new SetCardInfo("Hunt Down", 218, Rarity.COMMON, mage.cards.h.HuntDown.class));
+ cards.add(new SetCardInfo("Hunter of Eyeblights", 119, Rarity.UNCOMMON, mage.cards.h.HunterOfEyeblights.class));
+ cards.add(new SetCardInfo("Hurly-Burly", 177, Rarity.COMMON, mage.cards.h.HurlyBurly.class));
+ cards.add(new SetCardInfo("Immaculate Magistrate", 219, Rarity.RARE, mage.cards.i.ImmaculateMagistrate.class));
+ cards.add(new SetCardInfo("Imperious Perfect", 220, Rarity.UNCOMMON, mage.cards.i.ImperiousPerfect.class));
+ cards.add(new SetCardInfo("Incandescent Soulstoke", 178, Rarity.RARE, mage.cards.i.IncandescentSoulstoke.class));
+ cards.add(new SetCardInfo("Incendiary Command", 179, Rarity.RARE, mage.cards.i.IncendiaryCommand.class));
+ cards.add(new SetCardInfo("Incremental Growth", 221, Rarity.UNCOMMON, mage.cards.i.IncrementalGrowth.class));
+ cards.add(new SetCardInfo("Ingot Chewer", 180, Rarity.COMMON, mage.cards.i.IngotChewer.class));
+ cards.add(new SetCardInfo("Inkfathom Divers", 70, Rarity.COMMON, mage.cards.i.InkfathomDivers.class));
+ cards.add(new SetCardInfo("Inner-Flame Acolyte", 181, Rarity.COMMON, mage.cards.i.InnerFlameAcolyte.class));
+ cards.add(new SetCardInfo("Inner-Flame Igniter", 182, Rarity.UNCOMMON, mage.cards.i.InnerFlameIgniter.class));
+ cards.add(new SetCardInfo("Island", 286, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 287, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 288, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 289, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Jace Beleren", 71, Rarity.RARE, mage.cards.j.JaceBeleren.class));
+ cards.add(new SetCardInfo("Jagged-Scar Archers", 222, Rarity.UNCOMMON, mage.cards.j.JaggedScarArchers.class));
+ cards.add(new SetCardInfo("Judge of Currents", 22, Rarity.COMMON, mage.cards.j.JudgeOfCurrents.class));
+ cards.add(new SetCardInfo("Kinsbaile Balloonist", 23, Rarity.COMMON, mage.cards.k.KinsbaileBalloonist.class));
+ cards.add(new SetCardInfo("Kinsbaile Skirmisher", 24, Rarity.COMMON, mage.cards.k.KinsbaileSkirmisher.class));
+ cards.add(new SetCardInfo("Kithkin Daggerdare", 223, Rarity.COMMON, mage.cards.k.KithkinDaggerdare.class));
+ cards.add(new SetCardInfo("Kithkin Greatheart", 25, Rarity.COMMON, mage.cards.k.KithkinGreatheart.class));
+ cards.add(new SetCardInfo("Kithkin Harbinger", 26, Rarity.UNCOMMON, mage.cards.k.KithkinHarbinger.class));
+ cards.add(new SetCardInfo("Kithkin Healer", 27, Rarity.COMMON, mage.cards.k.KithkinHealer.class));
+ cards.add(new SetCardInfo("Kithkin Mourncaller", 224, Rarity.UNCOMMON, mage.cards.k.KithkinMourncaller.class));
+ cards.add(new SetCardInfo("Knight of Meadowgrain", 28, Rarity.UNCOMMON, mage.cards.k.KnightOfMeadowgrain.class));
+ cards.add(new SetCardInfo("Knucklebone Witch", 120, Rarity.RARE, mage.cards.k.KnuckleboneWitch.class));
+ cards.add(new SetCardInfo("Lace with Moonglove", 225, Rarity.COMMON, mage.cards.l.LaceWithMoonglove.class));
+ cards.add(new SetCardInfo("Lairwatch Giant", 29, Rarity.COMMON, mage.cards.l.LairwatchGiant.class));
+ cards.add(new SetCardInfo("Lammastide Weave", 226, Rarity.UNCOMMON, mage.cards.l.LammastideWeave.class));
+ cards.add(new SetCardInfo("Lash Out", 183, Rarity.COMMON, mage.cards.l.LashOut.class));
+ cards.add(new SetCardInfo("Leaf Gilder", 227, Rarity.COMMON, mage.cards.l.LeafGilder.class));
+ cards.add(new SetCardInfo("Lignify", 228, Rarity.COMMON, mage.cards.l.Lignify.class));
+ cards.add(new SetCardInfo("Liliana Vess", 121, Rarity.RARE, mage.cards.l.LilianaVess.class));
+ cards.add(new SetCardInfo("Lowland Oaf", 184, Rarity.COMMON, mage.cards.l.LowlandOaf.class));
+ cards.add(new SetCardInfo("Lys Alana Huntmaster", 229, Rarity.COMMON, mage.cards.l.LysAlanaHuntmaster.class));
+ cards.add(new SetCardInfo("Lys Alana Scarblade", 122, Rarity.UNCOMMON, mage.cards.l.LysAlanaScarblade.class));
+ cards.add(new SetCardInfo("Mad Auntie", 123, Rarity.RARE, mage.cards.m.MadAuntie.class));
+ cards.add(new SetCardInfo("Makeshift Mannequin", 124, Rarity.UNCOMMON, mage.cards.m.MakeshiftMannequin.class));
+ cards.add(new SetCardInfo("Marsh Flitter", 125, Rarity.UNCOMMON, mage.cards.m.MarshFlitter.class));
+ cards.add(new SetCardInfo("Masked Admirers", 230, Rarity.RARE, mage.cards.m.MaskedAdmirers.class));
+ cards.add(new SetCardInfo("Merrow Commerce", 72, Rarity.UNCOMMON, mage.cards.m.MerrowCommerce.class));
+ cards.add(new SetCardInfo("Merrow Harbinger", 73, Rarity.UNCOMMON, mage.cards.m.MerrowHarbinger.class));
+ cards.add(new SetCardInfo("Merrow Reejerey", 74, Rarity.UNCOMMON, mage.cards.m.MerrowReejerey.class));
+ cards.add(new SetCardInfo("Militia's Pride", 30, Rarity.RARE, mage.cards.m.MilitiasPride.class));
+ cards.add(new SetCardInfo("Mirror Entity", 31, Rarity.RARE, mage.cards.m.MirrorEntity.class));
+ cards.add(new SetCardInfo("Mistbind Clique", 75, Rarity.RARE, mage.cards.m.MistbindClique.class));
+ cards.add(new SetCardInfo("Moonglove Extract", 258, Rarity.COMMON, mage.cards.m.MoongloveExtract.class));
+ cards.add(new SetCardInfo("Moonglove Winnower", 126, Rarity.COMMON, mage.cards.m.MoongloveWinnower.class));
+ cards.add(new SetCardInfo("Mosswort Bridge", 270, Rarity.RARE, mage.cards.m.MosswortBridge.class));
+ cards.add(new SetCardInfo("Mountain", 294, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 295, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 296, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 297, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mournwhelk", 127, Rarity.COMMON, mage.cards.m.Mournwhelk.class));
+ cards.add(new SetCardInfo("Mudbutton Torchrunner", 185, Rarity.COMMON, mage.cards.m.MudbuttonTorchrunner.class));
+ cards.add(new SetCardInfo("Mulldrifter", 76, Rarity.COMMON, mage.cards.m.Mulldrifter.class));
+ cards.add(new SetCardInfo("Nameless Inversion", 128, Rarity.COMMON, mage.cards.n.NamelessInversion.class));
+ cards.add(new SetCardInfo("Nath of the Gilt-Leaf", 250, Rarity.RARE, mage.cards.n.NathOfTheGiltLeaf.class));
+ cards.add(new SetCardInfo("Nath's Buffoon", 129, Rarity.COMMON, mage.cards.n.NathsBuffoon.class));
+ cards.add(new SetCardInfo("Nath's Elite", 231, Rarity.COMMON, mage.cards.n.NathsElite.class));
+ cards.add(new SetCardInfo("Neck Snap", 32, Rarity.COMMON, mage.cards.n.NeckSnap.class));
+ cards.add(new SetCardInfo("Nectar Faerie", 130, Rarity.UNCOMMON, mage.cards.n.NectarFaerie.class));
+ cards.add(new SetCardInfo("Needle Drop", 186, Rarity.COMMON, mage.cards.n.NeedleDrop.class));
+ cards.add(new SetCardInfo("Nettlevine Blight", 131, Rarity.RARE, mage.cards.n.NettlevineBlight.class));
+ cards.add(new SetCardInfo("Nightshade Stinger", 132, Rarity.COMMON, mage.cards.n.NightshadeStinger.class));
+ cards.add(new SetCardInfo("Nova Chaser", 187, Rarity.RARE, mage.cards.n.NovaChaser.class));
+ cards.add(new SetCardInfo("Oaken Brawler", 33, Rarity.COMMON, mage.cards.o.OakenBrawler.class));
+ cards.add(new SetCardInfo("Oakgnarl Warrior", 232, Rarity.COMMON, mage.cards.o.OakgnarlWarrior.class));
+ cards.add(new SetCardInfo("Oblivion Ring", 34, Rarity.COMMON, mage.cards.o.OblivionRing.class));
+ cards.add(new SetCardInfo("Oona's Prowler", 133, Rarity.RARE, mage.cards.o.OonasProwler.class));
+ cards.add(new SetCardInfo("Paperfin Rascal", 77, Rarity.COMMON, mage.cards.p.PaperfinRascal.class));
+ cards.add(new SetCardInfo("Peppersmoke", 134, Rarity.COMMON, mage.cards.p.Peppersmoke.class));
+ cards.add(new SetCardInfo("Pestermite", 78, Rarity.COMMON, mage.cards.p.Pestermite.class));
+ cards.add(new SetCardInfo("Plains", 282, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 283, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 284, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 285, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plover Knights", 35, Rarity.COMMON, mage.cards.p.PloverKnights.class));
+ cards.add(new SetCardInfo("Pollen Lullaby", 36, Rarity.UNCOMMON, mage.cards.p.PollenLullaby.class));
+ cards.add(new SetCardInfo("Ponder", 79, Rarity.COMMON, mage.cards.p.Ponder.class));
+ cards.add(new SetCardInfo("Primal Command", 233, Rarity.RARE, mage.cards.p.PrimalCommand.class));
+ cards.add(new SetCardInfo("Profane Command", 135, Rarity.RARE, mage.cards.p.ProfaneCommand.class));
+ cards.add(new SetCardInfo("Protective Bubble", 80, Rarity.COMMON, mage.cards.p.ProtectiveBubble.class));
+ cards.add(new SetCardInfo("Prowess of the Fair", 136, Rarity.UNCOMMON, mage.cards.p.ProwessOfTheFair.class));
+ cards.add(new SetCardInfo("Purity", 37, Rarity.RARE, mage.cards.p.Purity.class));
+ cards.add(new SetCardInfo("Quill-Slinger Boggart", 137, Rarity.COMMON, mage.cards.q.QuillSlingerBoggart.class));
+ cards.add(new SetCardInfo("Rebellion of the Flamekin", 188, Rarity.UNCOMMON, mage.cards.r.RebellionOfTheFlamekin.class));
+ cards.add(new SetCardInfo("Ringskipper", 81, Rarity.COMMON, mage.cards.r.Ringskipper.class));
+ cards.add(new SetCardInfo("Rings of Brighthearth", 259, Rarity.RARE, mage.cards.r.RingsOfBrighthearth.class));
+ cards.add(new SetCardInfo("Rootgrapple", 234, Rarity.COMMON, mage.cards.r.Rootgrapple.class));
+ cards.add(new SetCardInfo("Runed Stalactite", 260, Rarity.COMMON, mage.cards.r.RunedStalactite.class));
+ cards.add(new SetCardInfo("Scarred Vinebreeder", 138, Rarity.COMMON, mage.cards.s.ScarredVinebreeder.class));
+ cards.add(new SetCardInfo("Scattering Stroke", 82, Rarity.UNCOMMON, mage.cards.s.ScatteringStroke.class));
+ cards.add(new SetCardInfo("Scion of Oona", 83, Rarity.RARE, mage.cards.s.ScionOfOona.class));
+ cards.add(new SetCardInfo("Secluded Glen", 271, Rarity.RARE, mage.cards.s.SecludedGlen.class));
+ cards.add(new SetCardInfo("Seedguide Ash", 235, Rarity.UNCOMMON, mage.cards.s.SeedguideAsh.class));
+ cards.add(new SetCardInfo("Sentinels of Glen Elendra", 84, Rarity.COMMON, mage.cards.s.SentinelsOfGlenElendra.class));
+ cards.add(new SetCardInfo("Sentry Oak", 38, Rarity.UNCOMMON, mage.cards.s.SentryOak.class));
+ cards.add(new SetCardInfo("Shapesharer", 85, Rarity.RARE, mage.cards.s.Shapesharer.class));
+ cards.add(new SetCardInfo("Shelldock Isle", 272, Rarity.RARE, mage.cards.s.ShelldockIsle.class));
+ cards.add(new SetCardInfo("Shields of Velis Vel", 39, Rarity.COMMON, mage.cards.s.ShieldsOfVelisVel.class));
+ cards.add(new SetCardInfo("Shimmering Grotto", 273, Rarity.COMMON, mage.cards.s.ShimmeringGrotto.class));
+ cards.add(new SetCardInfo("Shriekmaw", 139, Rarity.UNCOMMON, mage.cards.s.Shriekmaw.class));
+ cards.add(new SetCardInfo("Silvergill Adept", 86, Rarity.UNCOMMON, mage.cards.s.SilvergillAdept.class));
+ cards.add(new SetCardInfo("Silvergill Douser", 87, Rarity.COMMON, mage.cards.s.SilvergillDouser.class));
+ cards.add(new SetCardInfo("Skeletal Changeling", 140, Rarity.COMMON, mage.cards.s.SkeletalChangeling.class));
+ cards.add(new SetCardInfo("Smokebraider", 189, Rarity.COMMON, mage.cards.s.Smokebraider.class));
+ cards.add(new SetCardInfo("Soaring Hope", 40, Rarity.COMMON, mage.cards.s.SoaringHope.class));
+ cards.add(new SetCardInfo("Soulbright Flamekin", 190, Rarity.COMMON, mage.cards.s.SoulbrightFlamekin.class));
+ cards.add(new SetCardInfo("Sower of Temptation", 88, Rarity.RARE, mage.cards.s.SowerOfTemptation.class));
+ cards.add(new SetCardInfo("Spellstutter Sprite", 89, Rarity.COMMON, mage.cards.s.SpellstutterSprite.class));
+ cards.add(new SetCardInfo("Spiderwig Boggart", 141, Rarity.COMMON, mage.cards.s.SpiderwigBoggart.class));
+ cards.add(new SetCardInfo("Spinerock Knoll", 274, Rarity.RARE, mage.cards.s.SpinerockKnoll.class));
+ cards.add(new SetCardInfo("Spring Cleaning", 236, Rarity.COMMON, mage.cards.s.SpringCleaning.class));
+ cards.add(new SetCardInfo("Springjack Knight", 41, Rarity.COMMON, mage.cards.s.SpringjackKnight.class));
+ cards.add(new SetCardInfo("Springleaf Drum", 261, Rarity.COMMON, mage.cards.s.SpringleafDrum.class));
+ cards.add(new SetCardInfo("Squeaking Pie Sneak", 142, Rarity.UNCOMMON, mage.cards.s.SqueakingPieSneak.class));
+ cards.add(new SetCardInfo("Stinkdrinker Daredevil", 191, Rarity.COMMON, mage.cards.s.StinkdrinkerDaredevil.class));
+ cards.add(new SetCardInfo("Stonybrook Angler", 90, Rarity.COMMON, mage.cards.s.StonybrookAngler.class));
+ cards.add(new SetCardInfo("Streambed Aquitects", 91, Rarity.COMMON, mage.cards.s.StreambedAquitects.class));
+ cards.add(new SetCardInfo("Summon the School", 42, Rarity.UNCOMMON, mage.cards.s.SummonTheSchool.class));
+ cards.add(new SetCardInfo("Sunrise Sovereign", 192, Rarity.RARE, mage.cards.s.SunriseSovereign.class));
+ cards.add(new SetCardInfo("Surge of Thoughtweft", 43, Rarity.COMMON, mage.cards.s.SurgeOfThoughtweft.class));
+ cards.add(new SetCardInfo("Surgespanner", 92, Rarity.RARE, mage.cards.s.Surgespanner.class));
+ cards.add(new SetCardInfo("Swamp", 290, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 291, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 292, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 293, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Sygg, River Guide", 251, Rarity.RARE, mage.cards.s.SyggRiverGuide.class));
+ cards.add(new SetCardInfo("Sylvan Echoes", 237, Rarity.UNCOMMON, mage.cards.s.SylvanEchoes.class));
+ cards.add(new SetCardInfo("Tarfire", 194, Rarity.COMMON, mage.cards.t.Tarfire.class));
+ cards.add(new SetCardInfo("Tar Pitcher", 193, Rarity.UNCOMMON, mage.cards.t.TarPitcher.class));
+ cards.add(new SetCardInfo("Thieving Sprite", 143, Rarity.COMMON, mage.cards.t.ThievingSprite.class));
+ cards.add(new SetCardInfo("Thorn of Amethyst", 262, Rarity.RARE, mage.cards.t.ThornOfAmethyst.class));
+ cards.add(new SetCardInfo("Thorntooth Witch", 144, Rarity.UNCOMMON, mage.cards.t.ThorntoothWitch.class));
+ cards.add(new SetCardInfo("Thoughtseize", 145, Rarity.RARE, mage.cards.t.Thoughtseize.class));
+ cards.add(new SetCardInfo("Thoughtweft Trio", 44, Rarity.RARE, mage.cards.t.ThoughtweftTrio.class));
+ cards.add(new SetCardInfo("Thousand-Year Elixir", 263, Rarity.RARE, mage.cards.t.ThousandYearElixir.class));
+ cards.add(new SetCardInfo("Thundercloud Shaman", 195, Rarity.UNCOMMON, mage.cards.t.ThundercloudShaman.class));
+ cards.add(new SetCardInfo("Tideshaper Mystic", 93, Rarity.COMMON, mage.cards.t.TideshaperMystic.class));
+ cards.add(new SetCardInfo("Timber Protector", 238, Rarity.RARE, mage.cards.t.TimberProtector.class));
+ cards.add(new SetCardInfo("Treefolk Harbinger", 239, Rarity.UNCOMMON, mage.cards.t.TreefolkHarbinger.class));
+ cards.add(new SetCardInfo("Triclopean Sight", 45, Rarity.COMMON, mage.cards.t.TriclopeanSight.class));
+ cards.add(new SetCardInfo("Turtleshell Changeling", 94, Rarity.UNCOMMON, mage.cards.t.TurtleshellChangeling.class));
+ cards.add(new SetCardInfo("Twinning Glass", 264, Rarity.RARE, mage.cards.t.TwinningGlass.class));
+ cards.add(new SetCardInfo("Veteran of the Depths", 46, Rarity.UNCOMMON, mage.cards.v.VeteranOfTheDepths.class));
+ cards.add(new SetCardInfo("Vigor", 240, Rarity.RARE, mage.cards.v.Vigor.class));
+ cards.add(new SetCardInfo("Vivid Crag", 275, Rarity.UNCOMMON, mage.cards.v.VividCrag.class));
+ cards.add(new SetCardInfo("Vivid Creek", 276, Rarity.UNCOMMON, mage.cards.v.VividCreek.class));
+ cards.add(new SetCardInfo("Vivid Grove", 277, Rarity.UNCOMMON, mage.cards.v.VividGrove.class));
+ cards.add(new SetCardInfo("Vivid Marsh", 278, Rarity.UNCOMMON, mage.cards.v.VividMarsh.class));
+ cards.add(new SetCardInfo("Vivid Meadow", 279, Rarity.UNCOMMON, mage.cards.v.VividMeadow.class));
+ cards.add(new SetCardInfo("Wanderer's Twig", 265, Rarity.COMMON, mage.cards.w.WanderersTwig.class));
+ cards.add(new SetCardInfo("Wanderwine Hub", 280, Rarity.RARE, mage.cards.w.WanderwineHub.class));
+ cards.add(new SetCardInfo("Wanderwine Prophets", 95, Rarity.RARE, mage.cards.w.WanderwineProphets.class));
+ cards.add(new SetCardInfo("Warren Pilferers", 146, Rarity.COMMON, mage.cards.w.WarrenPilferers.class));
+ cards.add(new SetCardInfo("Warren-Scourge Elf", 241, Rarity.COMMON, mage.cards.w.WarrenScourgeElf.class));
+ cards.add(new SetCardInfo("Weed Strangle", 147, Rarity.COMMON, mage.cards.w.WeedStrangle.class));
+ cards.add(new SetCardInfo("Wellgabber Apothecary", 47, Rarity.COMMON, mage.cards.w.WellgabberApothecary.class));
+ cards.add(new SetCardInfo("Whirlpool Whelm", 96, Rarity.COMMON, mage.cards.w.WhirlpoolWhelm.class));
+ cards.add(new SetCardInfo("Wild Ricochet", 196, Rarity.RARE, mage.cards.w.WildRicochet.class));
+ cards.add(new SetCardInfo("Windbrisk Heights", 281, Rarity.RARE, mage.cards.w.WindbriskHeights.class));
+ cards.add(new SetCardInfo("Wings of Velis Vel", 97, Rarity.COMMON, mage.cards.w.WingsOfVelisVel.class));
+ cards.add(new SetCardInfo("Wispmare", 48, Rarity.COMMON, mage.cards.w.Wispmare.class));
+ cards.add(new SetCardInfo("Wizened Cenn", 49, Rarity.UNCOMMON, mage.cards.w.WizenedCenn.class));
+ cards.add(new SetCardInfo("Woodland Changeling", 242, Rarity.COMMON, mage.cards.w.WoodlandChangeling.class));
+ cards.add(new SetCardInfo("Woodland Guidance", 243, Rarity.UNCOMMON, mage.cards.w.WoodlandGuidance.class));
+ cards.add(new SetCardInfo("Wort, Boggart Auntie", 252, Rarity.RARE, mage.cards.w.WortBoggartAuntie.class));
+ cards.add(new SetCardInfo("Wren's Run Packmaster", 244, Rarity.RARE, mage.cards.w.WrensRunPackmaster.class));
+ cards.add(new SetCardInfo("Wren's Run Vanquisher", 245, Rarity.UNCOMMON, mage.cards.w.WrensRunVanquisher.class));
+ cards.add(new SetCardInfo("Wydwen, the Biting Gale", 253, Rarity.RARE, mage.cards.w.WydwenTheBitingGale.class));
+ cards.add(new SetCardInfo("Zephyr Net", 98, Rarity.COMMON, mage.cards.z.ZephyrNet.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Magic2010.java b/Mage.Sets/src/mage/sets/Magic2010.java
index bbc6a36a9cd..b0957e7a531 100644
--- a/Mage.Sets/src/mage/sets/Magic2010.java
+++ b/Mage.Sets/src/mage/sets/Magic2010.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Magic2010 extends ExpansionSet {
+public final class Magic2010 extends ExpansionSet {
private static final Magic2010 instance = new Magic2010();
diff --git a/Mage.Sets/src/mage/sets/Magic2011.java b/Mage.Sets/src/mage/sets/Magic2011.java
index 24b50e17fdd..6bfc99a9024 100644
--- a/Mage.Sets/src/mage/sets/Magic2011.java
+++ b/Mage.Sets/src/mage/sets/Magic2011.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Magic2011 extends ExpansionSet {
+public final class Magic2011 extends ExpansionSet {
private static final Magic2011 instance = new Magic2011();
diff --git a/Mage.Sets/src/mage/sets/Magic2012.java b/Mage.Sets/src/mage/sets/Magic2012.java
index 46afbb24beb..7f1a866ae56 100644
--- a/Mage.Sets/src/mage/sets/Magic2012.java
+++ b/Mage.Sets/src/mage/sets/Magic2012.java
@@ -36,7 +36,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class Magic2012 extends ExpansionSet {
+public final class Magic2012 extends ExpansionSet {
private static final Magic2012 instance = new Magic2012();
diff --git a/Mage.Sets/src/mage/sets/Magic2013.java b/Mage.Sets/src/mage/sets/Magic2013.java
index 64cbe25c467..5a371aa0d14 100644
--- a/Mage.Sets/src/mage/sets/Magic2013.java
+++ b/Mage.Sets/src/mage/sets/Magic2013.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class Magic2013 extends ExpansionSet {
+public final class Magic2013 extends ExpansionSet {
private static final Magic2013 instance = new Magic2013();
diff --git a/Mage.Sets/src/mage/sets/Magic2014.java b/Mage.Sets/src/mage/sets/Magic2014.java
index 23f7b681292..9ad9bbb3e31 100644
--- a/Mage.Sets/src/mage/sets/Magic2014.java
+++ b/Mage.Sets/src/mage/sets/Magic2014.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class Magic2014 extends ExpansionSet {
+public final class Magic2014 extends ExpansionSet {
private static final Magic2014 instance = new Magic2014();
diff --git a/Mage.Sets/src/mage/sets/Magic2015.java b/Mage.Sets/src/mage/sets/Magic2015.java
index 9b9f1d2e7d6..0cac3d0155d 100644
--- a/Mage.Sets/src/mage/sets/Magic2015.java
+++ b/Mage.Sets/src/mage/sets/Magic2015.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class Magic2015 extends ExpansionSet {
+public final class Magic2015 extends ExpansionSet {
private static final Magic2015 instance = new Magic2015();
diff --git a/Mage.Sets/src/mage/sets/MagicOrigins.java b/Mage.Sets/src/mage/sets/MagicOrigins.java
index 4a927828a84..20ab5a370a9 100644
--- a/Mage.Sets/src/mage/sets/MagicOrigins.java
+++ b/Mage.Sets/src/mage/sets/MagicOrigins.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class MagicOrigins extends ExpansionSet {
+public final class MagicOrigins extends ExpansionSet {
private static final MagicOrigins instance = new MagicOrigins();
diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards.java
index 138820e72fe..bfd560ae162 100644
--- a/Mage.Sets/src/mage/sets/MagicPlayerRewards.java
+++ b/Mage.Sets/src/mage/sets/MagicPlayerRewards.java
@@ -33,7 +33,7 @@ import mage.cards.FrameStyle;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class MagicPlayerRewards extends ExpansionSet {
+public final class MagicPlayerRewards extends ExpansionSet {
private static final MagicPlayerRewards instance = new MagicPlayerRewards();
diff --git a/Mage.Sets/src/mage/sets/MasterpieceSeries.java b/Mage.Sets/src/mage/sets/MasterpieceSeries.java
index affbb7260e2..f1ac791df51 100644
--- a/Mage.Sets/src/mage/sets/MasterpieceSeries.java
+++ b/Mage.Sets/src/mage/sets/MasterpieceSeries.java
@@ -37,7 +37,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class MasterpieceSeries extends ExpansionSet {
+public final class MasterpieceSeries extends ExpansionSet {
private static final MasterpieceSeries instance = new MasterpieceSeries();
diff --git a/Mage.Sets/src/mage/sets/MasterpieceSeriesAmonkhet.java b/Mage.Sets/src/mage/sets/MasterpieceSeriesAmonkhet.java
index d526453921f..32fda7fec0d 100644
--- a/Mage.Sets/src/mage/sets/MasterpieceSeriesAmonkhet.java
+++ b/Mage.Sets/src/mage/sets/MasterpieceSeriesAmonkhet.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class MasterpieceSeriesAmonkhet extends ExpansionSet {
+public final class MasterpieceSeriesAmonkhet extends ExpansionSet {
private static final MasterpieceSeriesAmonkhet instance = new MasterpieceSeriesAmonkhet();
diff --git a/Mage.Sets/src/mage/sets/Masters25.java b/Mage.Sets/src/mage/sets/Masters25.java
index 83b55f60414..336060b3e16 100644
--- a/Mage.Sets/src/mage/sets/Masters25.java
+++ b/Mage.Sets/src/mage/sets/Masters25.java
@@ -35,7 +35,7 @@ import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class Masters25 extends ExpansionSet {
+public final class Masters25 extends ExpansionSet {
private static final Masters25 instance = new Masters25();
diff --git a/Mage.Sets/src/mage/sets/MastersEdition.java b/Mage.Sets/src/mage/sets/MastersEdition.java
index 9abd2a7110f..9d751280e5c 100644
--- a/Mage.Sets/src/mage/sets/MastersEdition.java
+++ b/Mage.Sets/src/mage/sets/MastersEdition.java
@@ -1,261 +1,261 @@
-/*
- * 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.cards.b.BasalThrull;
-import mage.cards.d.DwarvenSoldier;
-import mage.cards.g.GoblinChirurgeon;
-import mage.cards.g.GoblinGrenade;
-import mage.cards.h.HighTide;
-import mage.cards.h.HymnToTourach;
-import mage.cards.m.MindstabThrull;
-import mage.cards.o.OrderOfLeitbur;
-import mage.cards.o.OrderOfTheEbonHand;
-import mage.cards.o.Oubliette;
-import mage.cards.p.PhyrexianWarBeast;
-import mage.cards.t.ThornThallid;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author LevelX2
- */
-public class MastersEdition extends ExpansionSet {
-
- private static final MastersEdition instance = new MastersEdition();
-
- public static MastersEdition getInstance() {
- return instance;
- }
-
- private MastersEdition() {
- super("Masters Edition", "MED", ExpansionSet.buildDate(2007, 9, 10), SetType.MAGIC_ONLINE);
- this.hasBasicLands = true;
- this.hasBoosters = true;
- this.numBoosterLands = 1;
- this.numBoosterCommon = 10;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Adun Oakenshield", 141, Rarity.RARE, mage.cards.a.AdunOakenshield.class));
- cards.add(new SetCardInfo("Amnesia", 29, Rarity.RARE, mage.cards.a.Amnesia.class));
- cards.add(new SetCardInfo("Angry Mob", 1, Rarity.UNCOMMON, mage.cards.a.AngryMob.class));
- cards.add(new SetCardInfo("Animate Dead", 57, Rarity.UNCOMMON, mage.cards.a.AnimateDead.class));
- cards.add(new SetCardInfo("Animate Wall", 2, Rarity.UNCOMMON, mage.cards.a.AnimateWall.class));
- cards.add(new SetCardInfo("Ankh of Mishra", 151, Rarity.RARE, mage.cards.a.AnkhOfMishra.class));
- cards.add(new SetCardInfo("Apprentice Wizard", 30, Rarity.COMMON, mage.cards.a.ApprenticeWizard.class));
- cards.add(new SetCardInfo("Arcane Denial", 31, Rarity.COMMON, mage.cards.a.ArcaneDenial.class));
- cards.add(new SetCardInfo("Argivian Archaeologist", 3, Rarity.RARE, mage.cards.a.ArgivianArchaeologist.class));
- cards.add(new SetCardInfo("Armageddon", 4, Rarity.RARE, mage.cards.a.Armageddon.class));
- cards.add(new SetCardInfo("Artifact Blast", 85, Rarity.COMMON, mage.cards.a.ArtifactBlast.class));
- cards.add(new SetCardInfo("Ashnod's Transmogrant", 152, Rarity.COMMON, mage.cards.a.AshnodsTransmogrant.class));
- cards.add(new SetCardInfo("Autumn Willow", 113, Rarity.RARE, mage.cards.a.AutumnWillow.class));
- cards.add(new SetCardInfo("Balduvian Horde", 86, Rarity.RARE, mage.cards.b.BalduvianHorde.class));
- cards.add(new SetCardInfo("Ball Lightning", 87, Rarity.RARE, mage.cards.b.BallLightning.class));
- cards.add(new SetCardInfo("Baron Sengir", 58, Rarity.RARE, mage.cards.b.BaronSengir.class));
- cards.add(new SetCardInfo("Basal Thrull", 59, Rarity.COMMON, BasalThrull.class));
- cards.add(new SetCardInfo("Benalish Hero", 5, Rarity.COMMON, mage.cards.b.BenalishHero.class));
- cards.add(new SetCardInfo("Berserk", 114, Rarity.RARE, mage.cards.b.Berserk.class));
- cards.add(new SetCardInfo("Bestial Fury", 88, Rarity.COMMON, mage.cards.b.BestialFury.class));
- cards.add(new SetCardInfo("Black Knight", 60, Rarity.UNCOMMON, mage.cards.b.BlackKnight.class));
- cards.add(new SetCardInfo("Blight", 61, Rarity.UNCOMMON, mage.cards.b.Blight.class));
- cards.add(new SetCardInfo("Breeding Pit", 62, Rarity.UNCOMMON, mage.cards.b.BreedingPit.class));
- cards.add(new SetCardInfo("Brothers of Fire", 89, Rarity.COMMON, mage.cards.b.BrothersOfFire.class));
- cards.add(new SetCardInfo("Carnivorous Plant", 115, Rarity.UNCOMMON, mage.cards.c.CarnivorousPlant.class));
- cards.add(new SetCardInfo("Centaur Archer", 142, Rarity.UNCOMMON, mage.cards.c.CentaurArcher.class));
- cards.add(new SetCardInfo("Chains of Mephistopheles", 63, Rarity.RARE, mage.cards.c.ChainsOfMephistopheles.class));
- cards.add(new SetCardInfo("Chub Toad", 116, Rarity.COMMON, mage.cards.c.ChubToad.class));
- cards.add(new SetCardInfo("Clockwork Beast", 153, Rarity.UNCOMMON, mage.cards.c.ClockworkBeast.class));
- cards.add(new SetCardInfo("Contagion", 64, Rarity.RARE, mage.cards.c.Contagion.class));
- cards.add(new SetCardInfo("Copper Tablet", 154, Rarity.UNCOMMON, mage.cards.c.CopperTablet.class));
- cards.add(new SetCardInfo("Crookshank Kobolds", 90, Rarity.COMMON, mage.cards.c.CrookshankKobolds.class));
- cards.add(new SetCardInfo("Crusade", 6, Rarity.RARE, mage.cards.c.Crusade.class));
- cards.add(new SetCardInfo("Cuombajj Witches", 65, Rarity.COMMON, mage.cards.c.CuombajjWitches.class));
- cards.add(new SetCardInfo("Cursed Rack", 155, Rarity.UNCOMMON, mage.cards.c.CursedRack.class));
- cards.add(new SetCardInfo("Dakkon Blackblade", 143, Rarity.RARE, mage.cards.d.DakkonBlackblade.class));
- cards.add(new SetCardInfo("Death Speakers", 7, Rarity.COMMON, mage.cards.d.DeathSpeakers.class));
- cards.add(new SetCardInfo("Death Ward", 8, Rarity.COMMON, mage.cards.d.DeathWard.class));
- cards.add(new SetCardInfo("Derelor", 66, Rarity.UNCOMMON, mage.cards.d.Derelor.class));
- cards.add(new SetCardInfo("Diamond Valley", 175, Rarity.RARE, mage.cards.d.DiamondValley.class));
- cards.add(new SetCardInfo("Diminishing Returns", 32, Rarity.RARE, mage.cards.d.DiminishingReturns.class));
- cards.add(new SetCardInfo("Divine Transformation", 9, Rarity.UNCOMMON, mage.cards.d.DivineTransformation.class));
- cards.add(new SetCardInfo("Dragon Engine", 156, Rarity.COMMON, mage.cards.d.DragonEngine.class));
- cards.add(new SetCardInfo("Dust to Dust", 10, Rarity.COMMON, mage.cards.d.DustToDust.class));
- cards.add(new SetCardInfo("Dwarven Catapult", 91, Rarity.UNCOMMON, mage.cards.d.DwarvenCatapult.class));
- cards.add(new SetCardInfo("Dwarven Soldier", 92, Rarity.COMMON, DwarvenSoldier.class));
- cards.add(new SetCardInfo("Eater of the Dead", 67, Rarity.UNCOMMON, mage.cards.e.EaterOfTheDead.class));
- cards.add(new SetCardInfo("Elder Land Wurm", 11, Rarity.UNCOMMON, mage.cards.e.ElderLandWurm.class));
- cards.add(new SetCardInfo("Erg Raiders", 68, Rarity.COMMON, mage.cards.e.ErgRaiders.class));
- cards.add(new SetCardInfo("Eureka", 117, Rarity.RARE, mage.cards.e.Eureka.class));
- cards.add(new SetCardInfo("Exile", 12, Rarity.COMMON, mage.cards.e.Exile.class));
- cards.add(new SetCardInfo("The Fallen", 69, Rarity.UNCOMMON, mage.cards.t.TheFallen.class));
- cards.add(new SetCardInfo("Feast or Famine", 70, Rarity.COMMON, mage.cards.f.FeastOrFamine.class));
- cards.add(new SetCardInfo("Fire Covenant", 145, Rarity.UNCOMMON, mage.cards.f.FireCovenant.class));
- cards.add(new SetCardInfo("Fissure", 93, Rarity.COMMON, mage.cards.f.Fissure.class));
- cards.add(new SetCardInfo("Forcefield", 157, Rarity.RARE, mage.cards.f.Forcefield.class));
- cards.add(new SetCardInfo("Force of Will", 33, Rarity.RARE, mage.cards.f.ForceOfWill.class));
- cards.add(new SetCardInfo("Forest", 193, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 194, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 195, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Fyndhorn Elves", 118, Rarity.COMMON, mage.cards.f.FyndhornElves.class));
- cards.add(new SetCardInfo("Ghazban Ogre", 120, Rarity.COMMON, mage.cards.g.GhazbanOgre.class));
- cards.add(new SetCardInfo("Giant Tortoise", 34, Rarity.COMMON, mage.cards.g.GiantTortoise.class));
- cards.add(new SetCardInfo("Goblin Chirurgeon", 94, Rarity.COMMON, GoblinChirurgeon.class));
- cards.add(new SetCardInfo("Goblin Grenade", 95, Rarity.UNCOMMON, GoblinGrenade.class));
- cards.add(new SetCardInfo("Goblin Mutant", 96, Rarity.UNCOMMON, mage.cards.g.GoblinMutant.class));
- cards.add(new SetCardInfo("Goblins of the Flarg", 98, Rarity.COMMON, mage.cards.g.GoblinsOfTheFlarg.class));
- cards.add(new SetCardInfo("Goblin Wizard", 97, Rarity.RARE, mage.cards.g.GoblinWizard.class));
- cards.add(new SetCardInfo("Granite Gargoyle", 99, Rarity.UNCOMMON, mage.cards.g.GraniteGargoyle.class));
- cards.add(new SetCardInfo("Greater Realm of Preservation", 13, Rarity.UNCOMMON, mage.cards.g.GreaterRealmOfPreservation.class));
- cards.add(new SetCardInfo("Hallowed Ground", 14, Rarity.UNCOMMON, mage.cards.h.HallowedGround.class));
- cards.add(new SetCardInfo("Hand of Justice", 15, Rarity.RARE, mage.cards.h.HandOfJustice.class));
- cards.add(new SetCardInfo("Hecatomb", 71, Rarity.RARE, mage.cards.h.Hecatomb.class));
- cards.add(new SetCardInfo("High Tide", 35, Rarity.UNCOMMON, HighTide.class));
- cards.add(new SetCardInfo("Holy Light", 16, Rarity.COMMON, mage.cards.h.HolyLight.class));
- cards.add(new SetCardInfo("Homarid Spawning Bed", 36, Rarity.UNCOMMON, mage.cards.h.HomaridSpawningBed.class));
- cards.add(new SetCardInfo("Hungry Mist", 121, Rarity.COMMON, mage.cards.h.HungryMist.class));
- cards.add(new SetCardInfo("Hyalopterous Lemure", 72, Rarity.COMMON, mage.cards.h.HyalopterousLemure.class));
- cards.add(new SetCardInfo("Hydroblast", 37, Rarity.COMMON, mage.cards.h.Hydroblast.class));
- cards.add(new SetCardInfo("Hymn of Rebirth", 146, Rarity.UNCOMMON, mage.cards.h.HymnOfRebirth.class));
- cards.add(new SetCardInfo("Hymn to Tourach", 73, Rarity.UNCOMMON, HymnToTourach.class));
- cards.add(new SetCardInfo("Icatian Lieutenant", 17, Rarity.COMMON, mage.cards.i.IcatianLieutenant.class));
- cards.add(new SetCardInfo("Icatian Town", 18, Rarity.UNCOMMON, mage.cards.i.IcatianTown.class));
- cards.add(new SetCardInfo("Ice Storm", 122, Rarity.UNCOMMON, mage.cards.i.IceStorm.class));
- cards.add(new SetCardInfo("Ifh-Biff Efreet", 123, Rarity.RARE, mage.cards.i.IfhBiffEfreet.class));
- cards.add(new SetCardInfo("Illusionary Forces", 38, Rarity.UNCOMMON, mage.cards.i.IllusionaryForces.class));
- cards.add(new SetCardInfo("Illusionary Wall", 39, Rarity.COMMON, mage.cards.i.IllusionaryWall.class));
- cards.add(new SetCardInfo("Illusions of Grandeur", 40, Rarity.RARE, mage.cards.i.IllusionsOfGrandeur.class));
- cards.add(new SetCardInfo("Island", 184, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 185, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 186, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island of Wak-Wak", 176, Rarity.RARE, mage.cards.i.IslandOfWakWak.class));
- cards.add(new SetCardInfo("Ivory Tower", 158, Rarity.RARE, mage.cards.i.IvoryTower.class));
- cards.add(new SetCardInfo("Jacques le Vert", 147, Rarity.RARE, mage.cards.j.JacquesLeVert.class));
- cards.add(new SetCardInfo("Jokulhaups", 100, Rarity.RARE, mage.cards.j.Jokulhaups.class));
- cards.add(new SetCardInfo("Juxtapose", 41, Rarity.UNCOMMON, mage.cards.j.Juxtapose.class));
- cards.add(new SetCardInfo("Juzam Djinn", 74, Rarity.RARE, mage.cards.j.JuzamDjinn.class));
- cards.add(new SetCardInfo("Keldon Warlord", 101, Rarity.UNCOMMON, mage.cards.k.KeldonWarlord.class));
- cards.add(new SetCardInfo("Khabal Ghoul", 75, Rarity.RARE, mage.cards.k.KhabalGhoul.class));
- cards.add(new SetCardInfo("Knights of Thorn", 19, Rarity.COMMON, mage.cards.k.KnightsOfThorn.class));
- cards.add(new SetCardInfo("Lake of the Dead", 177, Rarity.RARE, mage.cards.l.LakeOfTheDead.class));
- cards.add(new SetCardInfo("Lightning Bolt", 102, Rarity.COMMON, mage.cards.l.LightningBolt.class));
- cards.add(new SetCardInfo("Lim-Dul's Vault", 148, Rarity.UNCOMMON, mage.cards.l.LimDulsVault.class));
- cards.add(new SetCardInfo("Lord of Tresserhorn", 149, Rarity.RARE, mage.cards.l.LordOfTresserhorn.class));
- cards.add(new SetCardInfo("Mana Flare", 103, Rarity.RARE, mage.cards.m.ManaFlare.class));
- cards.add(new SetCardInfo("Marton Stromgald", 104, Rarity.RARE, mage.cards.m.MartonStromgald.class));
- cards.add(new SetCardInfo("Mesa Pegasus", 20, Rarity.COMMON, mage.cards.m.MesaPegasus.class));
- cards.add(new SetCardInfo("Mindstab Thrull", 76, Rarity.COMMON, MindstabThrull.class));
- cards.add(new SetCardInfo("Mirror Universe", 159, Rarity.RARE, mage.cards.m.MirrorUniverse.class));
- cards.add(new SetCardInfo("Mishra's Factory", 178, Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class));
- cards.add(new SetCardInfo("Moat", 21, Rarity.RARE, mage.cards.m.Moat.class));
- cards.add(new SetCardInfo("Mountain", 190, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 191, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 192, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain Yeti", 105, Rarity.COMMON, mage.cards.m.MountainYeti.class));
- cards.add(new SetCardInfo("Mystic Remora", 42, Rarity.UNCOMMON, mage.cards.m.MysticRemora.class));
- cards.add(new SetCardInfo("Nature's Lore", 124, Rarity.COMMON, mage.cards.n.NaturesLore.class));
- cards.add(new SetCardInfo("Nether Shadow", 77, Rarity.UNCOMMON, mage.cards.n.NetherShadow.class));
- cards.add(new SetCardInfo("Nevinyrral's Disk", 160, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class));
- cards.add(new SetCardInfo("Onulet", 161, Rarity.COMMON, mage.cards.o.Onulet.class));
- cards.add(new SetCardInfo("Orcish Mechanics", 106, Rarity.UNCOMMON, mage.cards.o.OrcishMechanics.class));
- cards.add(new SetCardInfo("Order of Leitbur", 22, Rarity.COMMON, OrderOfLeitbur.class));
- cards.add(new SetCardInfo("Order of the Ebon Hand", 78, Rarity.COMMON, OrderOfTheEbonHand.class));
- cards.add(new SetCardInfo("Oubliette", 79, Rarity.COMMON, Oubliette.class));
- cards.add(new SetCardInfo("Paralyze", 80, Rarity.COMMON, mage.cards.p.Paralyze.class));
- cards.add(new SetCardInfo("Petra Sphinx", 23, Rarity.RARE, mage.cards.p.PetraSphinx.class));
- cards.add(new SetCardInfo("Phantom Monster", 43, Rarity.COMMON, mage.cards.p.PhantomMonster.class));
- cards.add(new SetCardInfo("Phelddagrif", 150, Rarity.RARE, mage.cards.p.Phelddagrif.class));
- cards.add(new SetCardInfo("Phyrexian Boon", 81, Rarity.COMMON, mage.cards.p.PhyrexianBoon.class));
- cards.add(new SetCardInfo("Phyrexian War Beast", 162, Rarity.UNCOMMON, PhyrexianWarBeast.class));
- cards.add(new SetCardInfo("Plains", 181, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 182, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 183, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Polar Kraken", 44, Rarity.RARE, mage.cards.p.PolarKraken.class));
- cards.add(new SetCardInfo("Pox", 82, Rarity.RARE, mage.cards.p.Pox.class));
- cards.add(new SetCardInfo("Preacher", 24, Rarity.RARE, mage.cards.p.Preacher.class));
- cards.add(new SetCardInfo("Primal Order", 125, Rarity.RARE, mage.cards.p.PrimalOrder.class));
- cards.add(new SetCardInfo("Psychic Purge", 45, Rarity.UNCOMMON, mage.cards.p.PsychicPurge.class));
- cards.add(new SetCardInfo("Psychic Venom", 46, Rarity.COMMON, mage.cards.p.PsychicVenom.class));
- cards.add(new SetCardInfo("Pyroblast", 107, Rarity.COMMON, mage.cards.p.Pyroblast.class));
- cards.add(new SetCardInfo("Rabid Wombat", 126, Rarity.UNCOMMON, mage.cards.r.RabidWombat.class));
- cards.add(new SetCardInfo("Rainbow Vale", 179, Rarity.RARE, mage.cards.r.RainbowVale.class));
- cards.add(new SetCardInfo("Righteous Avengers", 25, Rarity.COMMON, mage.cards.r.RighteousAvengers.class));
- cards.add(new SetCardInfo("Ring of Ma'ruf", 163, Rarity.RARE, mage.cards.r.RingOfMaruf.class));
- cards.add(new SetCardInfo("River Merfolk", 47, Rarity.COMMON, mage.cards.r.RiverMerfolk.class));
- cards.add(new SetCardInfo("Roots", 127, Rarity.COMMON, mage.cards.r.Roots.class));
- cards.add(new SetCardInfo("Scryb Sprites", 128, Rarity.COMMON, mage.cards.s.ScrybSprites.class));
- cards.add(new SetCardInfo("Seasinger", 49, Rarity.UNCOMMON, mage.cards.s.Seasinger.class));
- cards.add(new SetCardInfo("Sea Sprite", 48, Rarity.COMMON, mage.cards.s.SeaSprite.class));
- cards.add(new SetCardInfo("Serendib Efreet", 50, Rarity.RARE, mage.cards.s.SerendibEfreet.class));
- cards.add(new SetCardInfo("Serpent Generator", 164, Rarity.RARE, mage.cards.s.SerpentGenerator.class));
- cards.add(new SetCardInfo("Shambling Strider", 129, Rarity.COMMON, mage.cards.s.ShamblingStrider.class));
- cards.add(new SetCardInfo("Shield of the Ages", 165, Rarity.UNCOMMON, mage.cards.s.ShieldOfTheAges.class));
- cards.add(new SetCardInfo("Shield Sphere", 166, Rarity.COMMON, mage.cards.s.ShieldSphere.class));
- cards.add(new SetCardInfo("Singing Tree", 130, Rarity.UNCOMMON, mage.cards.s.SingingTree.class));
- cards.add(new SetCardInfo("Spectral Bears", 131, Rarity.UNCOMMON, mage.cards.s.SpectralBears.class));
- cards.add(new SetCardInfo("Spinal Villain", 108, Rarity.UNCOMMON, mage.cards.s.SpinalVillain.class));
- cards.add(new SetCardInfo("Stone Calendar", 167, Rarity.UNCOMMON, mage.cards.s.StoneCalendar.class));
- cards.add(new SetCardInfo("Stone Giant", 109, Rarity.UNCOMMON, mage.cards.s.StoneGiant.class));
- cards.add(new SetCardInfo("Storm Seeker", 132, Rarity.UNCOMMON, mage.cards.s.StormSeeker.class));
- cards.add(new SetCardInfo("Su-Chi", 168, Rarity.RARE, mage.cards.s.SuChi.class));
- cards.add(new SetCardInfo("Sunken City", 51, Rarity.UNCOMMON, mage.cards.s.SunkenCity.class));
- cards.add(new SetCardInfo("Swamp", 187, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 188, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 189, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Sylvan Library", 133, Rarity.RARE, mage.cards.s.SylvanLibrary.class));
- cards.add(new SetCardInfo("Tawnos's Coffin", 169, Rarity.RARE, mage.cards.t.TawnossCoffin.class));
- cards.add(new SetCardInfo("Telekinesis", 52, Rarity.COMMON, mage.cards.t.Telekinesis.class));
- cards.add(new SetCardInfo("Thawing Glaciers", 180, Rarity.RARE, mage.cards.t.ThawingGlaciers.class));
- cards.add(new SetCardInfo("Thicket Basilisk", 134, Rarity.UNCOMMON, mage.cards.t.ThicketBasilisk.class));
- cards.add(new SetCardInfo("Thorn Thallid", 135, Rarity.COMMON, ThornThallid.class));
- cards.add(new SetCardInfo("Thrull Champion", 83, Rarity.RARE, mage.cards.t.ThrullChampion.class));
- cards.add(new SetCardInfo("Thrull Retainer", 84, Rarity.COMMON, mage.cards.t.ThrullRetainer.class));
- cards.add(new SetCardInfo("Thunder Spirit", 27, Rarity.UNCOMMON, mage.cards.t.ThunderSpirit.class));
- cards.add(new SetCardInfo("Time Elemental", 53, Rarity.RARE, mage.cards.t.TimeElemental.class));
- cards.add(new SetCardInfo("Tivadar's Crusade", 28, Rarity.UNCOMMON, mage.cards.t.TivadarsCrusade.class));
- cards.add(new SetCardInfo("Tornado", 136, Rarity.RARE, mage.cards.t.Tornado.class));
- cards.add(new SetCardInfo("Urza's Bauble", 170, Rarity.UNCOMMON, mage.cards.u.UrzasBauble.class));
- cards.add(new SetCardInfo("Urza's Chalice", 171, Rarity.COMMON, mage.cards.u.UrzasChalice.class));
- cards.add(new SetCardInfo("Varchild's War-Riders", 110, Rarity.RARE, mage.cards.v.VarchildsWarRiders.class));
- cards.add(new SetCardInfo("Vesuvan Doppelganger", 54, Rarity.RARE, mage.cards.v.VesuvanDoppelganger.class));
- cards.add(new SetCardInfo("Vodalian Knights", 55, Rarity.UNCOMMON, mage.cards.v.VodalianKnights.class));
- cards.add(new SetCardInfo("Walking Wall", 172, Rarity.UNCOMMON, mage.cards.w.WalkingWall.class));
- cards.add(new SetCardInfo("Wanderlust", 137, Rarity.COMMON, mage.cards.w.Wanderlust.class));
- cards.add(new SetCardInfo("Winds of Change", 111, Rarity.UNCOMMON, mage.cards.w.WindsOfChange.class));
- cards.add(new SetCardInfo("Winter Blast", 138, Rarity.UNCOMMON, mage.cards.w.WinterBlast.class));
- cards.add(new SetCardInfo("Winter Orb", 173, Rarity.RARE, mage.cards.w.WinterOrb.class));
- cards.add(new SetCardInfo("Word of Undoing", 56, Rarity.COMMON, mage.cards.w.WordOfUndoing.class));
- cards.add(new SetCardInfo("Wyluli Wolf", 139, Rarity.COMMON, mage.cards.w.WyluliWolf.class));
- cards.add(new SetCardInfo("Yavimaya Ants", 140, Rarity.UNCOMMON, mage.cards.y.YavimayaAnts.class));
- cards.add(new SetCardInfo("Ydwen Efreet", 112, Rarity.RARE, mage.cards.y.YdwenEfreet.class));
- cards.add(new SetCardInfo("Zuran Orb", 174, Rarity.UNCOMMON, mage.cards.z.ZuranOrb.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.cards.b.BasalThrull;
+import mage.cards.d.DwarvenSoldier;
+import mage.cards.g.GoblinChirurgeon;
+import mage.cards.g.GoblinGrenade;
+import mage.cards.h.HighTide;
+import mage.cards.h.HymnToTourach;
+import mage.cards.m.MindstabThrull;
+import mage.cards.o.OrderOfLeitbur;
+import mage.cards.o.OrderOfTheEbonHand;
+import mage.cards.o.Oubliette;
+import mage.cards.p.PhyrexianWarBeast;
+import mage.cards.t.ThornThallid;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class MastersEdition extends ExpansionSet {
+
+ private static final MastersEdition instance = new MastersEdition();
+
+ public static MastersEdition getInstance() {
+ return instance;
+ }
+
+ private MastersEdition() {
+ super("Masters Edition", "MED", ExpansionSet.buildDate(2007, 9, 10), SetType.MAGIC_ONLINE);
+ this.hasBasicLands = true;
+ this.hasBoosters = true;
+ this.numBoosterLands = 1;
+ this.numBoosterCommon = 10;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Adun Oakenshield", 141, Rarity.RARE, mage.cards.a.AdunOakenshield.class));
+ cards.add(new SetCardInfo("Amnesia", 29, Rarity.RARE, mage.cards.a.Amnesia.class));
+ cards.add(new SetCardInfo("Angry Mob", 1, Rarity.UNCOMMON, mage.cards.a.AngryMob.class));
+ cards.add(new SetCardInfo("Animate Dead", 57, Rarity.UNCOMMON, mage.cards.a.AnimateDead.class));
+ cards.add(new SetCardInfo("Animate Wall", 2, Rarity.UNCOMMON, mage.cards.a.AnimateWall.class));
+ cards.add(new SetCardInfo("Ankh of Mishra", 151, Rarity.RARE, mage.cards.a.AnkhOfMishra.class));
+ cards.add(new SetCardInfo("Apprentice Wizard", 30, Rarity.COMMON, mage.cards.a.ApprenticeWizard.class));
+ cards.add(new SetCardInfo("Arcane Denial", 31, Rarity.COMMON, mage.cards.a.ArcaneDenial.class));
+ cards.add(new SetCardInfo("Argivian Archaeologist", 3, Rarity.RARE, mage.cards.a.ArgivianArchaeologist.class));
+ cards.add(new SetCardInfo("Armageddon", 4, Rarity.RARE, mage.cards.a.Armageddon.class));
+ cards.add(new SetCardInfo("Artifact Blast", 85, Rarity.COMMON, mage.cards.a.ArtifactBlast.class));
+ cards.add(new SetCardInfo("Ashnod's Transmogrant", 152, Rarity.COMMON, mage.cards.a.AshnodsTransmogrant.class));
+ cards.add(new SetCardInfo("Autumn Willow", 113, Rarity.RARE, mage.cards.a.AutumnWillow.class));
+ cards.add(new SetCardInfo("Balduvian Horde", 86, Rarity.RARE, mage.cards.b.BalduvianHorde.class));
+ cards.add(new SetCardInfo("Ball Lightning", 87, Rarity.RARE, mage.cards.b.BallLightning.class));
+ cards.add(new SetCardInfo("Baron Sengir", 58, Rarity.RARE, mage.cards.b.BaronSengir.class));
+ cards.add(new SetCardInfo("Basal Thrull", 59, Rarity.COMMON, BasalThrull.class));
+ cards.add(new SetCardInfo("Benalish Hero", 5, Rarity.COMMON, mage.cards.b.BenalishHero.class));
+ cards.add(new SetCardInfo("Berserk", 114, Rarity.RARE, mage.cards.b.Berserk.class));
+ cards.add(new SetCardInfo("Bestial Fury", 88, Rarity.COMMON, mage.cards.b.BestialFury.class));
+ cards.add(new SetCardInfo("Black Knight", 60, Rarity.UNCOMMON, mage.cards.b.BlackKnight.class));
+ cards.add(new SetCardInfo("Blight", 61, Rarity.UNCOMMON, mage.cards.b.Blight.class));
+ cards.add(new SetCardInfo("Breeding Pit", 62, Rarity.UNCOMMON, mage.cards.b.BreedingPit.class));
+ cards.add(new SetCardInfo("Brothers of Fire", 89, Rarity.COMMON, mage.cards.b.BrothersOfFire.class));
+ cards.add(new SetCardInfo("Carnivorous Plant", 115, Rarity.UNCOMMON, mage.cards.c.CarnivorousPlant.class));
+ cards.add(new SetCardInfo("Centaur Archer", 142, Rarity.UNCOMMON, mage.cards.c.CentaurArcher.class));
+ cards.add(new SetCardInfo("Chains of Mephistopheles", 63, Rarity.RARE, mage.cards.c.ChainsOfMephistopheles.class));
+ cards.add(new SetCardInfo("Chub Toad", 116, Rarity.COMMON, mage.cards.c.ChubToad.class));
+ cards.add(new SetCardInfo("Clockwork Beast", 153, Rarity.UNCOMMON, mage.cards.c.ClockworkBeast.class));
+ cards.add(new SetCardInfo("Contagion", 64, Rarity.RARE, mage.cards.c.Contagion.class));
+ cards.add(new SetCardInfo("Copper Tablet", 154, Rarity.UNCOMMON, mage.cards.c.CopperTablet.class));
+ cards.add(new SetCardInfo("Crookshank Kobolds", 90, Rarity.COMMON, mage.cards.c.CrookshankKobolds.class));
+ cards.add(new SetCardInfo("Crusade", 6, Rarity.RARE, mage.cards.c.Crusade.class));
+ cards.add(new SetCardInfo("Cuombajj Witches", 65, Rarity.COMMON, mage.cards.c.CuombajjWitches.class));
+ cards.add(new SetCardInfo("Cursed Rack", 155, Rarity.UNCOMMON, mage.cards.c.CursedRack.class));
+ cards.add(new SetCardInfo("Dakkon Blackblade", 143, Rarity.RARE, mage.cards.d.DakkonBlackblade.class));
+ cards.add(new SetCardInfo("Death Speakers", 7, Rarity.COMMON, mage.cards.d.DeathSpeakers.class));
+ cards.add(new SetCardInfo("Death Ward", 8, Rarity.COMMON, mage.cards.d.DeathWard.class));
+ cards.add(new SetCardInfo("Derelor", 66, Rarity.UNCOMMON, mage.cards.d.Derelor.class));
+ cards.add(new SetCardInfo("Diamond Valley", 175, Rarity.RARE, mage.cards.d.DiamondValley.class));
+ cards.add(new SetCardInfo("Diminishing Returns", 32, Rarity.RARE, mage.cards.d.DiminishingReturns.class));
+ cards.add(new SetCardInfo("Divine Transformation", 9, Rarity.UNCOMMON, mage.cards.d.DivineTransformation.class));
+ cards.add(new SetCardInfo("Dragon Engine", 156, Rarity.COMMON, mage.cards.d.DragonEngine.class));
+ cards.add(new SetCardInfo("Dust to Dust", 10, Rarity.COMMON, mage.cards.d.DustToDust.class));
+ cards.add(new SetCardInfo("Dwarven Catapult", 91, Rarity.UNCOMMON, mage.cards.d.DwarvenCatapult.class));
+ cards.add(new SetCardInfo("Dwarven Soldier", 92, Rarity.COMMON, DwarvenSoldier.class));
+ cards.add(new SetCardInfo("Eater of the Dead", 67, Rarity.UNCOMMON, mage.cards.e.EaterOfTheDead.class));
+ cards.add(new SetCardInfo("Elder Land Wurm", 11, Rarity.UNCOMMON, mage.cards.e.ElderLandWurm.class));
+ cards.add(new SetCardInfo("Erg Raiders", 68, Rarity.COMMON, mage.cards.e.ErgRaiders.class));
+ cards.add(new SetCardInfo("Eureka", 117, Rarity.RARE, mage.cards.e.Eureka.class));
+ cards.add(new SetCardInfo("Exile", 12, Rarity.COMMON, mage.cards.e.Exile.class));
+ cards.add(new SetCardInfo("The Fallen", 69, Rarity.UNCOMMON, mage.cards.t.TheFallen.class));
+ cards.add(new SetCardInfo("Feast or Famine", 70, Rarity.COMMON, mage.cards.f.FeastOrFamine.class));
+ cards.add(new SetCardInfo("Fire Covenant", 145, Rarity.UNCOMMON, mage.cards.f.FireCovenant.class));
+ cards.add(new SetCardInfo("Fissure", 93, Rarity.COMMON, mage.cards.f.Fissure.class));
+ cards.add(new SetCardInfo("Forcefield", 157, Rarity.RARE, mage.cards.f.Forcefield.class));
+ cards.add(new SetCardInfo("Force of Will", 33, Rarity.RARE, mage.cards.f.ForceOfWill.class));
+ cards.add(new SetCardInfo("Forest", 193, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 194, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 195, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Fyndhorn Elves", 118, Rarity.COMMON, mage.cards.f.FyndhornElves.class));
+ cards.add(new SetCardInfo("Ghazban Ogre", 120, Rarity.COMMON, mage.cards.g.GhazbanOgre.class));
+ cards.add(new SetCardInfo("Giant Tortoise", 34, Rarity.COMMON, mage.cards.g.GiantTortoise.class));
+ cards.add(new SetCardInfo("Goblin Chirurgeon", 94, Rarity.COMMON, GoblinChirurgeon.class));
+ cards.add(new SetCardInfo("Goblin Grenade", 95, Rarity.UNCOMMON, GoblinGrenade.class));
+ cards.add(new SetCardInfo("Goblin Mutant", 96, Rarity.UNCOMMON, mage.cards.g.GoblinMutant.class));
+ cards.add(new SetCardInfo("Goblins of the Flarg", 98, Rarity.COMMON, mage.cards.g.GoblinsOfTheFlarg.class));
+ cards.add(new SetCardInfo("Goblin Wizard", 97, Rarity.RARE, mage.cards.g.GoblinWizard.class));
+ cards.add(new SetCardInfo("Granite Gargoyle", 99, Rarity.UNCOMMON, mage.cards.g.GraniteGargoyle.class));
+ cards.add(new SetCardInfo("Greater Realm of Preservation", 13, Rarity.UNCOMMON, mage.cards.g.GreaterRealmOfPreservation.class));
+ cards.add(new SetCardInfo("Hallowed Ground", 14, Rarity.UNCOMMON, mage.cards.h.HallowedGround.class));
+ cards.add(new SetCardInfo("Hand of Justice", 15, Rarity.RARE, mage.cards.h.HandOfJustice.class));
+ cards.add(new SetCardInfo("Hecatomb", 71, Rarity.RARE, mage.cards.h.Hecatomb.class));
+ cards.add(new SetCardInfo("High Tide", 35, Rarity.UNCOMMON, HighTide.class));
+ cards.add(new SetCardInfo("Holy Light", 16, Rarity.COMMON, mage.cards.h.HolyLight.class));
+ cards.add(new SetCardInfo("Homarid Spawning Bed", 36, Rarity.UNCOMMON, mage.cards.h.HomaridSpawningBed.class));
+ cards.add(new SetCardInfo("Hungry Mist", 121, Rarity.COMMON, mage.cards.h.HungryMist.class));
+ cards.add(new SetCardInfo("Hyalopterous Lemure", 72, Rarity.COMMON, mage.cards.h.HyalopterousLemure.class));
+ cards.add(new SetCardInfo("Hydroblast", 37, Rarity.COMMON, mage.cards.h.Hydroblast.class));
+ cards.add(new SetCardInfo("Hymn of Rebirth", 146, Rarity.UNCOMMON, mage.cards.h.HymnOfRebirth.class));
+ cards.add(new SetCardInfo("Hymn to Tourach", 73, Rarity.UNCOMMON, HymnToTourach.class));
+ cards.add(new SetCardInfo("Icatian Lieutenant", 17, Rarity.COMMON, mage.cards.i.IcatianLieutenant.class));
+ cards.add(new SetCardInfo("Icatian Town", 18, Rarity.UNCOMMON, mage.cards.i.IcatianTown.class));
+ cards.add(new SetCardInfo("Ice Storm", 122, Rarity.UNCOMMON, mage.cards.i.IceStorm.class));
+ cards.add(new SetCardInfo("Ifh-Biff Efreet", 123, Rarity.RARE, mage.cards.i.IfhBiffEfreet.class));
+ cards.add(new SetCardInfo("Illusionary Forces", 38, Rarity.UNCOMMON, mage.cards.i.IllusionaryForces.class));
+ cards.add(new SetCardInfo("Illusionary Wall", 39, Rarity.COMMON, mage.cards.i.IllusionaryWall.class));
+ cards.add(new SetCardInfo("Illusions of Grandeur", 40, Rarity.RARE, mage.cards.i.IllusionsOfGrandeur.class));
+ cards.add(new SetCardInfo("Island", 184, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 185, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 186, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island of Wak-Wak", 176, Rarity.RARE, mage.cards.i.IslandOfWakWak.class));
+ cards.add(new SetCardInfo("Ivory Tower", 158, Rarity.RARE, mage.cards.i.IvoryTower.class));
+ cards.add(new SetCardInfo("Jacques le Vert", 147, Rarity.RARE, mage.cards.j.JacquesLeVert.class));
+ cards.add(new SetCardInfo("Jokulhaups", 100, Rarity.RARE, mage.cards.j.Jokulhaups.class));
+ cards.add(new SetCardInfo("Juxtapose", 41, Rarity.UNCOMMON, mage.cards.j.Juxtapose.class));
+ cards.add(new SetCardInfo("Juzam Djinn", 74, Rarity.RARE, mage.cards.j.JuzamDjinn.class));
+ cards.add(new SetCardInfo("Keldon Warlord", 101, Rarity.UNCOMMON, mage.cards.k.KeldonWarlord.class));
+ cards.add(new SetCardInfo("Khabal Ghoul", 75, Rarity.RARE, mage.cards.k.KhabalGhoul.class));
+ cards.add(new SetCardInfo("Knights of Thorn", 19, Rarity.COMMON, mage.cards.k.KnightsOfThorn.class));
+ cards.add(new SetCardInfo("Lake of the Dead", 177, Rarity.RARE, mage.cards.l.LakeOfTheDead.class));
+ cards.add(new SetCardInfo("Lightning Bolt", 102, Rarity.COMMON, mage.cards.l.LightningBolt.class));
+ cards.add(new SetCardInfo("Lim-Dul's Vault", 148, Rarity.UNCOMMON, mage.cards.l.LimDulsVault.class));
+ cards.add(new SetCardInfo("Lord of Tresserhorn", 149, Rarity.RARE, mage.cards.l.LordOfTresserhorn.class));
+ cards.add(new SetCardInfo("Mana Flare", 103, Rarity.RARE, mage.cards.m.ManaFlare.class));
+ cards.add(new SetCardInfo("Marton Stromgald", 104, Rarity.RARE, mage.cards.m.MartonStromgald.class));
+ cards.add(new SetCardInfo("Mesa Pegasus", 20, Rarity.COMMON, mage.cards.m.MesaPegasus.class));
+ cards.add(new SetCardInfo("Mindstab Thrull", 76, Rarity.COMMON, MindstabThrull.class));
+ cards.add(new SetCardInfo("Mirror Universe", 159, Rarity.RARE, mage.cards.m.MirrorUniverse.class));
+ cards.add(new SetCardInfo("Mishra's Factory", 178, Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class));
+ cards.add(new SetCardInfo("Moat", 21, Rarity.RARE, mage.cards.m.Moat.class));
+ cards.add(new SetCardInfo("Mountain", 190, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 191, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 192, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain Yeti", 105, Rarity.COMMON, mage.cards.m.MountainYeti.class));
+ cards.add(new SetCardInfo("Mystic Remora", 42, Rarity.UNCOMMON, mage.cards.m.MysticRemora.class));
+ cards.add(new SetCardInfo("Nature's Lore", 124, Rarity.COMMON, mage.cards.n.NaturesLore.class));
+ cards.add(new SetCardInfo("Nether Shadow", 77, Rarity.UNCOMMON, mage.cards.n.NetherShadow.class));
+ cards.add(new SetCardInfo("Nevinyrral's Disk", 160, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class));
+ cards.add(new SetCardInfo("Onulet", 161, Rarity.COMMON, mage.cards.o.Onulet.class));
+ cards.add(new SetCardInfo("Orcish Mechanics", 106, Rarity.UNCOMMON, mage.cards.o.OrcishMechanics.class));
+ cards.add(new SetCardInfo("Order of Leitbur", 22, Rarity.COMMON, OrderOfLeitbur.class));
+ cards.add(new SetCardInfo("Order of the Ebon Hand", 78, Rarity.COMMON, OrderOfTheEbonHand.class));
+ cards.add(new SetCardInfo("Oubliette", 79, Rarity.COMMON, Oubliette.class));
+ cards.add(new SetCardInfo("Paralyze", 80, Rarity.COMMON, mage.cards.p.Paralyze.class));
+ cards.add(new SetCardInfo("Petra Sphinx", 23, Rarity.RARE, mage.cards.p.PetraSphinx.class));
+ cards.add(new SetCardInfo("Phantom Monster", 43, Rarity.COMMON, mage.cards.p.PhantomMonster.class));
+ cards.add(new SetCardInfo("Phelddagrif", 150, Rarity.RARE, mage.cards.p.Phelddagrif.class));
+ cards.add(new SetCardInfo("Phyrexian Boon", 81, Rarity.COMMON, mage.cards.p.PhyrexianBoon.class));
+ cards.add(new SetCardInfo("Phyrexian War Beast", 162, Rarity.UNCOMMON, PhyrexianWarBeast.class));
+ cards.add(new SetCardInfo("Plains", 181, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 182, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 183, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Polar Kraken", 44, Rarity.RARE, mage.cards.p.PolarKraken.class));
+ cards.add(new SetCardInfo("Pox", 82, Rarity.RARE, mage.cards.p.Pox.class));
+ cards.add(new SetCardInfo("Preacher", 24, Rarity.RARE, mage.cards.p.Preacher.class));
+ cards.add(new SetCardInfo("Primal Order", 125, Rarity.RARE, mage.cards.p.PrimalOrder.class));
+ cards.add(new SetCardInfo("Psychic Purge", 45, Rarity.UNCOMMON, mage.cards.p.PsychicPurge.class));
+ cards.add(new SetCardInfo("Psychic Venom", 46, Rarity.COMMON, mage.cards.p.PsychicVenom.class));
+ cards.add(new SetCardInfo("Pyroblast", 107, Rarity.COMMON, mage.cards.p.Pyroblast.class));
+ cards.add(new SetCardInfo("Rabid Wombat", 126, Rarity.UNCOMMON, mage.cards.r.RabidWombat.class));
+ cards.add(new SetCardInfo("Rainbow Vale", 179, Rarity.RARE, mage.cards.r.RainbowVale.class));
+ cards.add(new SetCardInfo("Righteous Avengers", 25, Rarity.COMMON, mage.cards.r.RighteousAvengers.class));
+ cards.add(new SetCardInfo("Ring of Ma'ruf", 163, Rarity.RARE, mage.cards.r.RingOfMaruf.class));
+ cards.add(new SetCardInfo("River Merfolk", 47, Rarity.COMMON, mage.cards.r.RiverMerfolk.class));
+ cards.add(new SetCardInfo("Roots", 127, Rarity.COMMON, mage.cards.r.Roots.class));
+ cards.add(new SetCardInfo("Scryb Sprites", 128, Rarity.COMMON, mage.cards.s.ScrybSprites.class));
+ cards.add(new SetCardInfo("Seasinger", 49, Rarity.UNCOMMON, mage.cards.s.Seasinger.class));
+ cards.add(new SetCardInfo("Sea Sprite", 48, Rarity.COMMON, mage.cards.s.SeaSprite.class));
+ cards.add(new SetCardInfo("Serendib Efreet", 50, Rarity.RARE, mage.cards.s.SerendibEfreet.class));
+ cards.add(new SetCardInfo("Serpent Generator", 164, Rarity.RARE, mage.cards.s.SerpentGenerator.class));
+ cards.add(new SetCardInfo("Shambling Strider", 129, Rarity.COMMON, mage.cards.s.ShamblingStrider.class));
+ cards.add(new SetCardInfo("Shield of the Ages", 165, Rarity.UNCOMMON, mage.cards.s.ShieldOfTheAges.class));
+ cards.add(new SetCardInfo("Shield Sphere", 166, Rarity.COMMON, mage.cards.s.ShieldSphere.class));
+ cards.add(new SetCardInfo("Singing Tree", 130, Rarity.UNCOMMON, mage.cards.s.SingingTree.class));
+ cards.add(new SetCardInfo("Spectral Bears", 131, Rarity.UNCOMMON, mage.cards.s.SpectralBears.class));
+ cards.add(new SetCardInfo("Spinal Villain", 108, Rarity.UNCOMMON, mage.cards.s.SpinalVillain.class));
+ cards.add(new SetCardInfo("Stone Calendar", 167, Rarity.UNCOMMON, mage.cards.s.StoneCalendar.class));
+ cards.add(new SetCardInfo("Stone Giant", 109, Rarity.UNCOMMON, mage.cards.s.StoneGiant.class));
+ cards.add(new SetCardInfo("Storm Seeker", 132, Rarity.UNCOMMON, mage.cards.s.StormSeeker.class));
+ cards.add(new SetCardInfo("Su-Chi", 168, Rarity.RARE, mage.cards.s.SuChi.class));
+ cards.add(new SetCardInfo("Sunken City", 51, Rarity.UNCOMMON, mage.cards.s.SunkenCity.class));
+ cards.add(new SetCardInfo("Swamp", 187, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 188, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 189, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Sylvan Library", 133, Rarity.RARE, mage.cards.s.SylvanLibrary.class));
+ cards.add(new SetCardInfo("Tawnos's Coffin", 169, Rarity.RARE, mage.cards.t.TawnossCoffin.class));
+ cards.add(new SetCardInfo("Telekinesis", 52, Rarity.COMMON, mage.cards.t.Telekinesis.class));
+ cards.add(new SetCardInfo("Thawing Glaciers", 180, Rarity.RARE, mage.cards.t.ThawingGlaciers.class));
+ cards.add(new SetCardInfo("Thicket Basilisk", 134, Rarity.UNCOMMON, mage.cards.t.ThicketBasilisk.class));
+ cards.add(new SetCardInfo("Thorn Thallid", 135, Rarity.COMMON, ThornThallid.class));
+ cards.add(new SetCardInfo("Thrull Champion", 83, Rarity.RARE, mage.cards.t.ThrullChampion.class));
+ cards.add(new SetCardInfo("Thrull Retainer", 84, Rarity.COMMON, mage.cards.t.ThrullRetainer.class));
+ cards.add(new SetCardInfo("Thunder Spirit", 27, Rarity.UNCOMMON, mage.cards.t.ThunderSpirit.class));
+ cards.add(new SetCardInfo("Time Elemental", 53, Rarity.RARE, mage.cards.t.TimeElemental.class));
+ cards.add(new SetCardInfo("Tivadar's Crusade", 28, Rarity.UNCOMMON, mage.cards.t.TivadarsCrusade.class));
+ cards.add(new SetCardInfo("Tornado", 136, Rarity.RARE, mage.cards.t.Tornado.class));
+ cards.add(new SetCardInfo("Urza's Bauble", 170, Rarity.UNCOMMON, mage.cards.u.UrzasBauble.class));
+ cards.add(new SetCardInfo("Urza's Chalice", 171, Rarity.COMMON, mage.cards.u.UrzasChalice.class));
+ cards.add(new SetCardInfo("Varchild's War-Riders", 110, Rarity.RARE, mage.cards.v.VarchildsWarRiders.class));
+ cards.add(new SetCardInfo("Vesuvan Doppelganger", 54, Rarity.RARE, mage.cards.v.VesuvanDoppelganger.class));
+ cards.add(new SetCardInfo("Vodalian Knights", 55, Rarity.UNCOMMON, mage.cards.v.VodalianKnights.class));
+ cards.add(new SetCardInfo("Walking Wall", 172, Rarity.UNCOMMON, mage.cards.w.WalkingWall.class));
+ cards.add(new SetCardInfo("Wanderlust", 137, Rarity.COMMON, mage.cards.w.Wanderlust.class));
+ cards.add(new SetCardInfo("Winds of Change", 111, Rarity.UNCOMMON, mage.cards.w.WindsOfChange.class));
+ cards.add(new SetCardInfo("Winter Blast", 138, Rarity.UNCOMMON, mage.cards.w.WinterBlast.class));
+ cards.add(new SetCardInfo("Winter Orb", 173, Rarity.RARE, mage.cards.w.WinterOrb.class));
+ cards.add(new SetCardInfo("Word of Undoing", 56, Rarity.COMMON, mage.cards.w.WordOfUndoing.class));
+ cards.add(new SetCardInfo("Wyluli Wolf", 139, Rarity.COMMON, mage.cards.w.WyluliWolf.class));
+ cards.add(new SetCardInfo("Yavimaya Ants", 140, Rarity.UNCOMMON, mage.cards.y.YavimayaAnts.class));
+ cards.add(new SetCardInfo("Ydwen Efreet", 112, Rarity.RARE, mage.cards.y.YdwenEfreet.class));
+ cards.add(new SetCardInfo("Zuran Orb", 174, Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/MastersEditionII.java b/Mage.Sets/src/mage/sets/MastersEditionII.java
index bf8ed960246..cb4b6bdd92f 100644
--- a/Mage.Sets/src/mage/sets/MastersEditionII.java
+++ b/Mage.Sets/src/mage/sets/MastersEditionII.java
@@ -1,288 +1,288 @@
-/*
- * 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.cards.a.ArmorThrull;
-import mage.cards.b.BrassclawOrcs;
-import mage.cards.c.CombatMedic;
-import mage.cards.e.ElvishHunter;
-import mage.cards.f.FarrelsZealot;
-import mage.cards.g.GorillaShaman;
-import mage.cards.i.IcatianJavelineers;
-import mage.cards.i.IcatianScout;
-import mage.cards.l.LimDulsHighGuard;
-import mage.cards.n.Necrite;
-import mage.cards.n.NightSoil;
-import mage.cards.o.OrcishVeteran;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author LevelX2
- */
-public class MastersEditionII extends ExpansionSet {
-
- private static final MastersEditionII instance = new MastersEditionII();
-
- public static MastersEditionII getInstance() {
- return instance;
- }
-
- private MastersEditionII() {
- super("Masters Edition II", "ME2", ExpansionSet.buildDate(2008, 9, 22), SetType.MAGIC_ONLINE);
- this.hasBasicLands = false;
- this.hasBoosters = true;
- this.numBoosterLands = 1;
- this.numBoosterCommon = 10;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Aether Storm", 39, Rarity.UNCOMMON, mage.cards.a.AetherStorm.class));
- cards.add(new SetCardInfo("Abbey Gargoyles", 1, Rarity.UNCOMMON, mage.cards.a.AbbeyGargoyles.class));
- cards.add(new SetCardInfo("Adarkar Sentinel", 201, Rarity.COMMON, mage.cards.a.AdarkarSentinel.class));
- cards.add(new SetCardInfo("Aeolipile", 202, Rarity.COMMON, mage.cards.a.Aeolipile.class));
- cards.add(new SetCardInfo("Ambush Party", 115, Rarity.COMMON, mage.cards.a.AmbushParty.class));
- cards.add(new SetCardInfo("An-Zerrin Ruins", 117, Rarity.RARE, mage.cards.a.AnZerrinRuins.class));
- cards.add(new SetCardInfo("Anarchy", 116, Rarity.RARE, mage.cards.a.Anarchy.class));
- cards.add(new SetCardInfo("Angel of Fury", 2, Rarity.RARE, mage.cards.a.AngelOfFury.class));
- cards.add(new SetCardInfo("Angel of Light", 3, Rarity.UNCOMMON, mage.cards.a.AngelOfLight.class));
- cards.add(new SetCardInfo("Armored Griffin", 5, Rarity.COMMON, mage.cards.a.ArmoredGriffin.class));
- cards.add(new SetCardInfo("Armor of Faith", 4, Rarity.COMMON, mage.cards.a.ArmorOfFaith.class));
- cards.add(new SetCardInfo("Armor Thrull", 77, Rarity.COMMON, ArmorThrull.class));
- cards.add(new SetCardInfo("Ashen Ghoul", 78, Rarity.UNCOMMON, mage.cards.a.AshenGhoul.class));
- cards.add(new SetCardInfo("Ashnod's Cylix", 203, Rarity.RARE, mage.cards.a.AshnodsCylix.class));
- cards.add(new SetCardInfo("Aurochs", 153, Rarity.COMMON, mage.cards.a.Aurochs.class));
- cards.add(new SetCardInfo("Aysen Bureaucrats", 6, Rarity.COMMON, mage.cards.a.AysenBureaucrats.class));
- cards.add(new SetCardInfo("Aysen Crusader", 7, Rarity.UNCOMMON, mage.cards.a.AysenCrusader.class));
- cards.add(new SetCardInfo("Badlands", 225, Rarity.RARE, mage.cards.b.Badlands.class));
- cards.add(new SetCardInfo("Balduvian Conjurer", 40, Rarity.COMMON, mage.cards.b.BalduvianConjurer.class));
- cards.add(new SetCardInfo("Balduvian Dead", 79, Rarity.UNCOMMON, mage.cards.b.BalduvianDead.class));
- cards.add(new SetCardInfo("Balduvian Hydra", 118, Rarity.RARE, mage.cards.b.BalduvianHydra.class));
- cards.add(new SetCardInfo("Balduvian Trading Post", 226, Rarity.RARE, mage.cards.b.BalduvianTradingPost.class));
- cards.add(new SetCardInfo("Barbed Sextant", 204, Rarity.COMMON, mage.cards.b.BarbedSextant.class));
- cards.add(new SetCardInfo("Binding Grasp", 41, Rarity.RARE, mage.cards.b.BindingGrasp.class));
- cards.add(new SetCardInfo("Bounty of the Hunt", 154, Rarity.RARE, mage.cards.b.BountyOfTheHunt.class));
- cards.add(new SetCardInfo("Brainstorm", 42, Rarity.COMMON, mage.cards.b.Brainstorm.class));
- cards.add(new SetCardInfo("Brassclaw Orcs", 119, Rarity.COMMON, BrassclawOrcs.class));
- cards.add(new SetCardInfo("Brimstone Dragon", 120, Rarity.RARE, mage.cards.b.BrimstoneDragon.class));
- cards.add(new SetCardInfo("Brine Shaman", 80, Rarity.COMMON, mage.cards.b.BrineShaman.class));
- cards.add(new SetCardInfo("Broken Visage", 81, Rarity.UNCOMMON, mage.cards.b.BrokenVisage.class));
- cards.add(new SetCardInfo("Browse", 43, Rarity.UNCOMMON, mage.cards.b.Browse.class));
- cards.add(new SetCardInfo("Burnout", 121, Rarity.UNCOMMON, mage.cards.b.Burnout.class));
- cards.add(new SetCardInfo("Carapace", 155, Rarity.COMMON, mage.cards.c.Carapace.class));
- cards.add(new SetCardInfo("Caribou Range", 8, Rarity.RARE, mage.cards.c.CaribouRange.class));
- cards.add(new SetCardInfo("Clockwork Steed", 205, Rarity.UNCOMMON, mage.cards.c.ClockworkSteed.class));
- cards.add(new SetCardInfo("Combat Medic", 9, Rarity.COMMON, CombatMedic.class));
- cards.add(new SetCardInfo("Conquer", 122, Rarity.UNCOMMON, mage.cards.c.Conquer.class));
- cards.add(new SetCardInfo("Counterspell", 44, Rarity.UNCOMMON, mage.cards.c.Counterspell.class));
- cards.add(new SetCardInfo("Dance of the Dead", 83, Rarity.UNCOMMON, mage.cards.d.DanceOfTheDead.class));
- cards.add(new SetCardInfo("Dark Banishing", 84, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
- cards.add(new SetCardInfo("Death Spark", 123, Rarity.COMMON, mage.cards.d.DeathSpark.class));
- cards.add(new SetCardInfo("Deep Spawn", 45, Rarity.RARE, mage.cards.d.DeepSpawn.class));
- cards.add(new SetCardInfo("Demonic Consultation", 85, Rarity.UNCOMMON, mage.cards.d.DemonicConsultation.class));
- cards.add(new SetCardInfo("Despotic Scepter", 206, Rarity.RARE, mage.cards.d.DespoticScepter.class));
- cards.add(new SetCardInfo("Diabolic Vision", 191, Rarity.UNCOMMON, mage.cards.d.DiabolicVision.class));
- cards.add(new SetCardInfo("Disenchant", 10, Rarity.COMMON, mage.cards.d.Disenchant.class));
- cards.add(new SetCardInfo("Drift of the Dead", 86, Rarity.COMMON, mage.cards.d.DriftOfTheDead.class));
- cards.add(new SetCardInfo("Dwarven Ruins", 227, Rarity.UNCOMMON, mage.cards.d.DwarvenRuins.class));
- cards.add(new SetCardInfo("Dystopia", 88, Rarity.RARE, mage.cards.d.Dystopia.class));
- cards.add(new SetCardInfo("Earthlink", 192, Rarity.RARE, mage.cards.e.Earthlink.class));
- cards.add(new SetCardInfo("Ebon Praetor", 89, Rarity.RARE, mage.cards.e.EbonPraetor.class));
- cards.add(new SetCardInfo("Ebon Stronghold", 228, Rarity.UNCOMMON, mage.cards.e.EbonStronghold.class));
- cards.add(new SetCardInfo("Elemental Augury", 193, Rarity.RARE, mage.cards.e.ElementalAugury.class));
- cards.add(new SetCardInfo("Elkin Bottle", 207, Rarity.RARE, mage.cards.e.ElkinBottle.class));
- cards.add(new SetCardInfo("Elven Lyre", 208, Rarity.COMMON, mage.cards.e.ElvenLyre.class));
- cards.add(new SetCardInfo("Elvish Farmer", 156, Rarity.RARE, mage.cards.e.ElvishFarmer.class));
- cards.add(new SetCardInfo("Elvish Hunter", 157, Rarity.COMMON, ElvishHunter.class));
- cards.add(new SetCardInfo("Elvish Ranger", 158, Rarity.COMMON, mage.cards.e.ElvishRanger.class));
- cards.add(new SetCardInfo("Elvish Spirit Guide", 159, Rarity.UNCOMMON, mage.cards.e.ElvishSpiritGuide.class));
- cards.add(new SetCardInfo("Energy Storm", 11, Rarity.RARE, mage.cards.e.EnergyStorm.class));
- cards.add(new SetCardInfo("Enervate", 47, Rarity.COMMON, mage.cards.e.Enervate.class));
- cards.add(new SetCardInfo("Errand of Duty", 12, Rarity.UNCOMMON, mage.cards.e.ErrandOfDuty.class));
- cards.add(new SetCardInfo("Errantry", 124, Rarity.COMMON, mage.cards.e.Errantry.class));
- cards.add(new SetCardInfo("Essence Filter", 160, Rarity.UNCOMMON, mage.cards.e.EssenceFilter.class));
- cards.add(new SetCardInfo("Essence Flare", 48, Rarity.COMMON, mage.cards.e.EssenceFlare.class));
- cards.add(new SetCardInfo("Farrel's Mantle", 13, Rarity.UNCOMMON, mage.cards.f.FarrelsMantle.class));
- cards.add(new SetCardInfo("Farrel's Zealot", 14, Rarity.UNCOMMON, FarrelsZealot.class));
- cards.add(new SetCardInfo("Feral Thallid", 161, Rarity.COMMON, mage.cards.f.FeralThallid.class));
- cards.add(new SetCardInfo("Fire Dragon", 125, Rarity.RARE, mage.cards.f.FireDragon.class));
- cards.add(new SetCardInfo("Flame Spirit", 126, Rarity.UNCOMMON, mage.cards.f.FlameSpirit.class));
- cards.add(new SetCardInfo("Folk of the Pines", 162, Rarity.COMMON, mage.cards.f.FolkOfThePines.class));
- cards.add(new SetCardInfo("Forbidden Lore", 163, Rarity.UNCOMMON, mage.cards.f.ForbiddenLore.class));
- cards.add(new SetCardInfo("Forgotten Lore", 164, Rarity.UNCOMMON, mage.cards.f.ForgottenLore.class));
- cards.add(new SetCardInfo("Foul Familiar", 90, Rarity.COMMON, mage.cards.f.FoulFamiliar.class));
- cards.add(new SetCardInfo("Fumarole", 194, Rarity.UNCOMMON, mage.cards.f.Fumarole.class));
- cards.add(new SetCardInfo("Funeral March", 91, Rarity.COMMON, mage.cards.f.FuneralMarch.class));
- cards.add(new SetCardInfo("Fungal Bloom", 165, Rarity.RARE, mage.cards.f.FungalBloom.class));
- cards.add(new SetCardInfo("Fyndhorn Pollen", 166, Rarity.RARE, mage.cards.f.FyndhornPollen.class));
- cards.add(new SetCardInfo("Gangrenous Zombies", 92, Rarity.COMMON, mage.cards.g.GangrenousZombies.class));
- cards.add(new SetCardInfo("Giant Growth", 167, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
- cards.add(new SetCardInfo("Giant Trap Door Spider", 195, Rarity.UNCOMMON, mage.cards.g.GiantTrapDoorSpider.class));
- cards.add(new SetCardInfo("Glacial Chasm", 229, Rarity.RARE, mage.cards.g.GlacialChasm.class));
- cards.add(new SetCardInfo("Glacial Crevasses", 127, Rarity.RARE, mage.cards.g.GlacialCrevasses.class));
- cards.add(new SetCardInfo("Gorilla Shaman", 129, Rarity.UNCOMMON, GorillaShaman.class));
- cards.add(new SetCardInfo("Grandmother Sengir", 93, Rarity.RARE, mage.cards.g.GrandmotherSengir.class));
- cards.add(new SetCardInfo("Havenwood Battleground", 230, Rarity.UNCOMMON, mage.cards.h.HavenwoodBattleground.class));
- cards.add(new SetCardInfo("Heart of Yavimaya", 231, Rarity.RARE, mage.cards.h.HeartOfYavimaya.class));
- cards.add(new SetCardInfo("Helm of Obedience", 210, Rarity.RARE, mage.cards.h.HelmOfObedience.class));
- cards.add(new SetCardInfo("Icatian Javelineers", 15, Rarity.COMMON, IcatianJavelineers.class));
- cards.add(new SetCardInfo("Icatian Phalanx", 16, Rarity.COMMON, mage.cards.i.IcatianPhalanx.class));
- cards.add(new SetCardInfo("Icatian Scout", 17, Rarity.COMMON, IcatianScout.class));
- cards.add(new SetCardInfo("Ice Floe", 232, Rarity.UNCOMMON, mage.cards.i.IceFloe.class));
- cards.add(new SetCardInfo("Iceberg", 49, Rarity.UNCOMMON, mage.cards.i.Iceberg.class));
- cards.add(new SetCardInfo("Icequake", 94, Rarity.COMMON, mage.cards.i.Icequake.class));
- cards.add(new SetCardInfo("Icy Prison", 50, Rarity.COMMON, mage.cards.i.IcyPrison.class));
- cards.add(new SetCardInfo("Ihsan's Shade", 95, Rarity.RARE, mage.cards.i.IhsansShade.class));
- cards.add(new SetCardInfo("Imperial Recruiter", 130, Rarity.RARE, mage.cards.i.ImperialRecruiter.class));
- cards.add(new SetCardInfo("Imperial Seal", 96, Rarity.RARE, mage.cards.i.ImperialSeal.class));
- cards.add(new SetCardInfo("Incinerate", 131, Rarity.COMMON, mage.cards.i.Incinerate.class));
- cards.add(new SetCardInfo("Infernal Darkness", 97, Rarity.RARE, mage.cards.i.InfernalDarkness.class));
- cards.add(new SetCardInfo("Inheritance", 18, Rarity.UNCOMMON, mage.cards.i.Inheritance.class));
- cards.add(new SetCardInfo("Ironclaw Orcs", 132, Rarity.COMMON, mage.cards.i.IronclawOrcs.class));
- cards.add(new SetCardInfo("Jester's Mask", 211, Rarity.RARE, mage.cards.j.JestersMask.class));
- cards.add(new SetCardInfo("Jeweled Amulet", 212, Rarity.UNCOMMON, mage.cards.j.JeweledAmulet.class));
- cards.add(new SetCardInfo("Johtull Wurm", 168, Rarity.UNCOMMON, mage.cards.j.JohtullWurm.class));
- cards.add(new SetCardInfo("Juniper Order Advocate", 20, Rarity.UNCOMMON, mage.cards.j.JuniperOrderAdvocate.class));
- cards.add(new SetCardInfo("Karplusan Giant", 133, Rarity.UNCOMMON, mage.cards.k.KarplusanGiant.class));
- cards.add(new SetCardInfo("Kaysa", 170, Rarity.RARE, mage.cards.k.Kaysa.class));
- cards.add(new SetCardInfo("Kjeldoran Dead", 98, Rarity.COMMON, mage.cards.k.KjeldoranDead.class));
- cards.add(new SetCardInfo("Kjeldoran Home Guard", 22, Rarity.UNCOMMON, mage.cards.k.KjeldoranHomeGuard.class));
- cards.add(new SetCardInfo("Kjeldoran Outpost", 233, Rarity.RARE, mage.cards.k.KjeldoranOutpost.class));
- cards.add(new SetCardInfo("Kjeldoran Skycaptain", 23, Rarity.COMMON, mage.cards.k.KjeldoranSkycaptain.class));
- cards.add(new SetCardInfo("Knight of Stromgald", 99, Rarity.UNCOMMON, mage.cards.k.KnightOfStromgald.class));
- cards.add(new SetCardInfo("Krovikan Fetish", 100, Rarity.COMMON, mage.cards.k.KrovikanFetish.class));
- cards.add(new SetCardInfo("Krovikan Horror", 101, Rarity.RARE, mage.cards.k.KrovikanHorror.class));
- cards.add(new SetCardInfo("Krovikan Sorcerer", 51, Rarity.COMMON, mage.cards.k.KrovikanSorcerer.class));
- cards.add(new SetCardInfo("Lat-Nam's Legacy", 52, Rarity.COMMON, mage.cards.l.LatNamsLegacy.class));
- cards.add(new SetCardInfo("Leaping Lizard", 171, Rarity.COMMON, mage.cards.l.LeapingLizard.class));
- cards.add(new SetCardInfo("Lim-Dul's High Guard", 103, Rarity.UNCOMMON, LimDulsHighGuard.class));
- cards.add(new SetCardInfo("Lodestone Bauble", 213, Rarity.RARE, mage.cards.l.LodestoneBauble.class));
- cards.add(new SetCardInfo("Magus of the Unseen", 53, Rarity.RARE, mage.cards.m.MagusOfTheUnseen.class));
- cards.add(new SetCardInfo("Mana Crypt", 214, Rarity.RARE, mage.cards.m.ManaCrypt.class));
- cards.add(new SetCardInfo("Marjhan", 54, Rarity.RARE, mage.cards.m.Marjhan.class));
- cards.add(new SetCardInfo("Mesmeric Trance", 55, Rarity.RARE, mage.cards.m.MesmericTrance.class));
- cards.add(new SetCardInfo("Meteor Shower", 135, Rarity.COMMON, mage.cards.m.MeteorShower.class));
- cards.add(new SetCardInfo("Minion of Leshrac", 104, Rarity.RARE, mage.cards.m.MinionOfLeshrac.class));
- cards.add(new SetCardInfo("Misinformation", 105, Rarity.UNCOMMON, mage.cards.m.Misinformation.class));
- cards.add(new SetCardInfo("Mudslide", 136, Rarity.RARE, mage.cards.m.Mudslide.class));
- cards.add(new SetCardInfo("Narwhal", 57, Rarity.UNCOMMON, mage.cards.n.Narwhal.class));
- cards.add(new SetCardInfo("Nature's Blessing", 196, Rarity.UNCOMMON, mage.cards.n.NaturesBlessing.class));
- cards.add(new SetCardInfo("Nature's Wrath", 172, Rarity.RARE, mage.cards.n.NaturesWrath.class));
- cards.add(new SetCardInfo("Necrite", 106, Rarity.COMMON, Necrite.class));
- cards.add(new SetCardInfo("Necropotence", 107, Rarity.RARE, mage.cards.n.Necropotence.class));
- cards.add(new SetCardInfo("Night Soil", 173, Rarity.UNCOMMON, NightSoil.class));
- cards.add(new SetCardInfo("Orc General", 137, Rarity.UNCOMMON, mage.cards.o.OrcGeneral.class));
- cards.add(new SetCardInfo("Orcish Cannoneers", 138, Rarity.UNCOMMON, mage.cards.o.OrcishCannoneers.class));
- cards.add(new SetCardInfo("Orcish Captain", 139, Rarity.UNCOMMON, mage.cards.o.OrcishCaptain.class));
- cards.add(new SetCardInfo("Orcish Lumberjack", 142, Rarity.COMMON, mage.cards.o.OrcishLumberjack.class));
- cards.add(new SetCardInfo("Orcish Squatters", 143, Rarity.RARE, mage.cards.o.OrcishSquatters.class));
- cards.add(new SetCardInfo("Orcish Veteran", 144, Rarity.COMMON, OrcishVeteran.class));
- cards.add(new SetCardInfo("Order of the Sacred Torch", 25, Rarity.RARE, mage.cards.o.OrderOfTheSacredTorch.class));
- cards.add(new SetCardInfo("Order of the White Shield", 26, Rarity.UNCOMMON, mage.cards.o.OrderOfTheWhiteShield.class));
- cards.add(new SetCardInfo("Panic", 145, Rarity.COMMON, mage.cards.p.Panic.class));
- cards.add(new SetCardInfo("Personal Tutor", 58, Rarity.UNCOMMON, mage.cards.p.PersonalTutor.class));
- cards.add(new SetCardInfo("Phantasmal Fiend", 108, Rarity.COMMON, mage.cards.p.PhantasmalFiend.class));
- cards.add(new SetCardInfo("Phyrexian Devourer", 216, Rarity.UNCOMMON, mage.cards.p.PhyrexianDevourer.class));
- cards.add(new SetCardInfo("Pillage", 146, Rarity.UNCOMMON, mage.cards.p.Pillage.class));
- cards.add(new SetCardInfo("Portent", 60, Rarity.COMMON, mage.cards.p.Portent.class));
- cards.add(new SetCardInfo("Pyrokinesis", 147, Rarity.RARE, mage.cards.p.Pyrokinesis.class));
- cards.add(new SetCardInfo("Ravages of War", 27, Rarity.RARE, mage.cards.r.RavagesOfWar.class));
- cards.add(new SetCardInfo("Ray of Command", 61, Rarity.UNCOMMON, mage.cards.r.RayOfCommand.class));
- cards.add(new SetCardInfo("Red Cliffs Armada", 62, Rarity.COMMON, mage.cards.r.RedCliffsArmada.class));
- cards.add(new SetCardInfo("Reinforcements", 28, Rarity.COMMON, mage.cards.r.Reinforcements.class));
- cards.add(new SetCardInfo("Reprisal", 29, Rarity.COMMON, mage.cards.r.Reprisal.class));
- cards.add(new SetCardInfo("Retribution", 148, Rarity.UNCOMMON, mage.cards.r.Retribution.class));
- cards.add(new SetCardInfo("Righteous Fury", 30, Rarity.RARE, mage.cards.r.RighteousFury.class));
- cards.add(new SetCardInfo("Ritual of Subdual", 174, Rarity.RARE, mage.cards.r.RitualOfSubdual.class));
- cards.add(new SetCardInfo("Ritual of the Machine", 109, Rarity.RARE, mage.cards.r.RitualOfTheMachine.class));
- cards.add(new SetCardInfo("Roterothopter", 218, Rarity.COMMON, mage.cards.r.Roterothopter.class));
- cards.add(new SetCardInfo("Royal Trooper", 32, Rarity.COMMON, mage.cards.r.RoyalTrooper.class));
- cards.add(new SetCardInfo("Ruins of Trokair", 234, Rarity.UNCOMMON, mage.cards.r.RuinsOfTrokair.class));
- cards.add(new SetCardInfo("Savannah", 235, Rarity.RARE, mage.cards.s.Savannah.class));
- cards.add(new SetCardInfo("Screeching Drake", 63, Rarity.COMMON, mage.cards.s.ScreechingDrake.class));
- cards.add(new SetCardInfo("Sea Drake", 64, Rarity.RARE, mage.cards.s.SeaDrake.class));
- cards.add(new SetCardInfo("Sea Spirit", 65, Rarity.UNCOMMON, mage.cards.s.SeaSpirit.class));
- cards.add(new SetCardInfo("Shield Bearer", 35, Rarity.COMMON, mage.cards.s.ShieldBearer.class));
- cards.add(new SetCardInfo("Shrink", 175, Rarity.COMMON, mage.cards.s.Shrink.class));
- cards.add(new SetCardInfo("Shyft", 66, Rarity.COMMON, mage.cards.s.Shyft.class));
- cards.add(new SetCardInfo("Sibilant Spirit", 67, Rarity.RARE, mage.cards.s.SibilantSpirit.class));
- cards.add(new SetCardInfo("Skeleton Ship", 197, Rarity.RARE, mage.cards.s.SkeletonShip.class));
- cards.add(new SetCardInfo("Skull Catapult", 219, Rarity.UNCOMMON, mage.cards.s.SkullCatapult.class));
- cards.add(new SetCardInfo("Snow Fortress", 220, Rarity.UNCOMMON, mage.cards.s.SnowFortress.class));
- cards.add(new SetCardInfo("Snow-Covered Forest", 245, Rarity.LAND, mage.cards.s.SnowCoveredForest.class));
- cards.add(new SetCardInfo("Snow-Covered Island", 242, Rarity.LAND, mage.cards.s.SnowCoveredIsland.class));
- cards.add(new SetCardInfo("Snow-Covered Mountain", 244, Rarity.LAND, mage.cards.s.SnowCoveredMountain.class));
- cards.add(new SetCardInfo("Snow-Covered Plains", 241, Rarity.LAND, mage.cards.s.SnowCoveredPlains.class));
- cards.add(new SetCardInfo("Snow-Covered Swamp", 243, Rarity.LAND, mage.cards.s.SnowCoveredSwamp.class));
- cards.add(new SetCardInfo("Soldevi Digger", 221, Rarity.UNCOMMON, mage.cards.s.SoldeviDigger.class));
- cards.add(new SetCardInfo("Soldevi Excavations", 236, Rarity.RARE, mage.cards.s.SoldeviExcavations.class));
- cards.add(new SetCardInfo("Soldevi Simulacrum", 222, Rarity.UNCOMMON, mage.cards.s.SoldeviSimulacrum.class));
- cards.add(new SetCardInfo("Songs of the Damned", 110, Rarity.COMMON, mage.cards.s.SongsOfTheDamned.class));
- cards.add(new SetCardInfo("Soul Exchange", 111, Rarity.UNCOMMON, mage.cards.s.SoulExchange.class));
- cards.add(new SetCardInfo("Soul Kiss", 112, Rarity.UNCOMMON, mage.cards.s.SoulKiss.class));
- cards.add(new SetCardInfo("Spore Cloud", 176, Rarity.UNCOMMON, mage.cards.s.SporeCloud.class));
- cards.add(new SetCardInfo("Spore Flower", 177, Rarity.UNCOMMON, mage.cards.s.SporeFlower.class));
- cards.add(new SetCardInfo("Stampede", 178, Rarity.UNCOMMON, mage.cards.s.Stampede.class));
- cards.add(new SetCardInfo("Stonehands", 151, Rarity.COMMON, mage.cards.s.Stonehands.class));
- cards.add(new SetCardInfo("Stone Spirit", 150, Rarity.UNCOMMON, mage.cards.s.StoneSpirit.class));
- cards.add(new SetCardInfo("Storm Spirit", 198, Rarity.RARE, mage.cards.s.StormSpirit.class));
- cards.add(new SetCardInfo("Stromgald Cabal", 113, Rarity.RARE, mage.cards.s.StromgaldCabal.class));
- cards.add(new SetCardInfo("Stunted Growth", 179, Rarity.RARE, mage.cards.s.StuntedGrowth.class));
- cards.add(new SetCardInfo("Sustaining Spirit", 36, Rarity.RARE, mage.cards.s.SustainingSpirit.class));
- cards.add(new SetCardInfo("Svyelunite Temple", 237, Rarity.UNCOMMON, mage.cards.s.SvyeluniteTemple.class));
- cards.add(new SetCardInfo("Swords to Plowshares", 37, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
- cards.add(new SetCardInfo("Taiga", 238, Rarity.RARE, mage.cards.t.Taiga.class));
- cards.add(new SetCardInfo("Temporal Manipulation", 69, Rarity.RARE, mage.cards.t.TemporalManipulation.class));
- cards.add(new SetCardInfo("Thallid", 180, Rarity.COMMON, mage.cards.t.Thallid.class));
- cards.add(new SetCardInfo("Thallid Devourer", 181, Rarity.COMMON, mage.cards.t.ThallidDevourer.class));
- cards.add(new SetCardInfo("Thelonite Druid", 182, Rarity.RARE, mage.cards.t.TheloniteDruid.class));
- cards.add(new SetCardInfo("Thermokarst", 183, Rarity.COMMON, mage.cards.t.Thermokarst.class));
- cards.add(new SetCardInfo("Thought Lash", 70, Rarity.RARE, mage.cards.t.ThoughtLash.class));
- cards.add(new SetCardInfo("Thunder Wall", 71, Rarity.UNCOMMON, mage.cards.t.ThunderWall.class));
- cards.add(new SetCardInfo("Time Bomb", 223, Rarity.RARE, mage.cards.t.TimeBomb.class));
- cards.add(new SetCardInfo("Tinder Wall", 184, Rarity.COMMON, mage.cards.t.TinderWall.class));
- cards.add(new SetCardInfo("Tundra", 239, Rarity.RARE, mage.cards.t.Tundra.class));
- cards.add(new SetCardInfo("Underground Sea", 240, Rarity.RARE, mage.cards.u.UndergroundSea.class));
- cards.add(new SetCardInfo("Viscerid Armor", 72, Rarity.COMMON, mage.cards.v.VisceridArmor.class));
- cards.add(new SetCardInfo("Viscerid Drone", 73, Rarity.UNCOMMON, mage.cards.v.VisceridDrone.class));
- cards.add(new SetCardInfo("Wall of Kelp", 74, Rarity.COMMON, mage.cards.w.WallOfKelp.class));
- cards.add(new SetCardInfo("Warning", 38, Rarity.COMMON, mage.cards.w.Warning.class));
- cards.add(new SetCardInfo("Whiteout", 185, Rarity.COMMON, mage.cards.w.Whiteout.class));
- cards.add(new SetCardInfo("Wind Spirit", 75, Rarity.UNCOMMON, mage.cards.w.WindSpirit.class));
- cards.add(new SetCardInfo("Wings of Aesthir", 199, Rarity.UNCOMMON, mage.cards.w.WingsOfAesthir.class));
- cards.add(new SetCardInfo("Withering Wisps", 114, Rarity.UNCOMMON, mage.cards.w.WitheringWisps.class));
- cards.add(new SetCardInfo("Wolf Pack", 187, Rarity.RARE, mage.cards.w.WolfPack.class));
- cards.add(new SetCardInfo("Woolly Mammoths", 188, Rarity.COMMON, mage.cards.w.WoollyMammoths.class));
- cards.add(new SetCardInfo("Woolly Spider", 189, Rarity.UNCOMMON, mage.cards.w.WoollySpider.class));
- cards.add(new SetCardInfo("Yavimaya Ancients", 190, Rarity.UNCOMMON, mage.cards.y.YavimayaAncients.class));
- cards.add(new SetCardInfo("Zuran Spellcaster", 76, Rarity.COMMON, mage.cards.z.ZuranSpellcaster.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.cards.a.ArmorThrull;
+import mage.cards.b.BrassclawOrcs;
+import mage.cards.c.CombatMedic;
+import mage.cards.e.ElvishHunter;
+import mage.cards.f.FarrelsZealot;
+import mage.cards.g.GorillaShaman;
+import mage.cards.i.IcatianJavelineers;
+import mage.cards.i.IcatianScout;
+import mage.cards.l.LimDulsHighGuard;
+import mage.cards.n.Necrite;
+import mage.cards.n.NightSoil;
+import mage.cards.o.OrcishVeteran;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class MastersEditionII extends ExpansionSet {
+
+ private static final MastersEditionII instance = new MastersEditionII();
+
+ public static MastersEditionII getInstance() {
+ return instance;
+ }
+
+ private MastersEditionII() {
+ super("Masters Edition II", "ME2", ExpansionSet.buildDate(2008, 9, 22), SetType.MAGIC_ONLINE);
+ this.hasBasicLands = false;
+ this.hasBoosters = true;
+ this.numBoosterLands = 1;
+ this.numBoosterCommon = 10;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Aether Storm", 39, Rarity.UNCOMMON, mage.cards.a.AetherStorm.class));
+ cards.add(new SetCardInfo("Abbey Gargoyles", 1, Rarity.UNCOMMON, mage.cards.a.AbbeyGargoyles.class));
+ cards.add(new SetCardInfo("Adarkar Sentinel", 201, Rarity.COMMON, mage.cards.a.AdarkarSentinel.class));
+ cards.add(new SetCardInfo("Aeolipile", 202, Rarity.COMMON, mage.cards.a.Aeolipile.class));
+ cards.add(new SetCardInfo("Ambush Party", 115, Rarity.COMMON, mage.cards.a.AmbushParty.class));
+ cards.add(new SetCardInfo("An-Zerrin Ruins", 117, Rarity.RARE, mage.cards.a.AnZerrinRuins.class));
+ cards.add(new SetCardInfo("Anarchy", 116, Rarity.RARE, mage.cards.a.Anarchy.class));
+ cards.add(new SetCardInfo("Angel of Fury", 2, Rarity.RARE, mage.cards.a.AngelOfFury.class));
+ cards.add(new SetCardInfo("Angel of Light", 3, Rarity.UNCOMMON, mage.cards.a.AngelOfLight.class));
+ cards.add(new SetCardInfo("Armored Griffin", 5, Rarity.COMMON, mage.cards.a.ArmoredGriffin.class));
+ cards.add(new SetCardInfo("Armor of Faith", 4, Rarity.COMMON, mage.cards.a.ArmorOfFaith.class));
+ cards.add(new SetCardInfo("Armor Thrull", 77, Rarity.COMMON, ArmorThrull.class));
+ cards.add(new SetCardInfo("Ashen Ghoul", 78, Rarity.UNCOMMON, mage.cards.a.AshenGhoul.class));
+ cards.add(new SetCardInfo("Ashnod's Cylix", 203, Rarity.RARE, mage.cards.a.AshnodsCylix.class));
+ cards.add(new SetCardInfo("Aurochs", 153, Rarity.COMMON, mage.cards.a.Aurochs.class));
+ cards.add(new SetCardInfo("Aysen Bureaucrats", 6, Rarity.COMMON, mage.cards.a.AysenBureaucrats.class));
+ cards.add(new SetCardInfo("Aysen Crusader", 7, Rarity.UNCOMMON, mage.cards.a.AysenCrusader.class));
+ cards.add(new SetCardInfo("Badlands", 225, Rarity.RARE, mage.cards.b.Badlands.class));
+ cards.add(new SetCardInfo("Balduvian Conjurer", 40, Rarity.COMMON, mage.cards.b.BalduvianConjurer.class));
+ cards.add(new SetCardInfo("Balduvian Dead", 79, Rarity.UNCOMMON, mage.cards.b.BalduvianDead.class));
+ cards.add(new SetCardInfo("Balduvian Hydra", 118, Rarity.RARE, mage.cards.b.BalduvianHydra.class));
+ cards.add(new SetCardInfo("Balduvian Trading Post", 226, Rarity.RARE, mage.cards.b.BalduvianTradingPost.class));
+ cards.add(new SetCardInfo("Barbed Sextant", 204, Rarity.COMMON, mage.cards.b.BarbedSextant.class));
+ cards.add(new SetCardInfo("Binding Grasp", 41, Rarity.RARE, mage.cards.b.BindingGrasp.class));
+ cards.add(new SetCardInfo("Bounty of the Hunt", 154, Rarity.RARE, mage.cards.b.BountyOfTheHunt.class));
+ cards.add(new SetCardInfo("Brainstorm", 42, Rarity.COMMON, mage.cards.b.Brainstorm.class));
+ cards.add(new SetCardInfo("Brassclaw Orcs", 119, Rarity.COMMON, BrassclawOrcs.class));
+ cards.add(new SetCardInfo("Brimstone Dragon", 120, Rarity.RARE, mage.cards.b.BrimstoneDragon.class));
+ cards.add(new SetCardInfo("Brine Shaman", 80, Rarity.COMMON, mage.cards.b.BrineShaman.class));
+ cards.add(new SetCardInfo("Broken Visage", 81, Rarity.UNCOMMON, mage.cards.b.BrokenVisage.class));
+ cards.add(new SetCardInfo("Browse", 43, Rarity.UNCOMMON, mage.cards.b.Browse.class));
+ cards.add(new SetCardInfo("Burnout", 121, Rarity.UNCOMMON, mage.cards.b.Burnout.class));
+ cards.add(new SetCardInfo("Carapace", 155, Rarity.COMMON, mage.cards.c.Carapace.class));
+ cards.add(new SetCardInfo("Caribou Range", 8, Rarity.RARE, mage.cards.c.CaribouRange.class));
+ cards.add(new SetCardInfo("Clockwork Steed", 205, Rarity.UNCOMMON, mage.cards.c.ClockworkSteed.class));
+ cards.add(new SetCardInfo("Combat Medic", 9, Rarity.COMMON, CombatMedic.class));
+ cards.add(new SetCardInfo("Conquer", 122, Rarity.UNCOMMON, mage.cards.c.Conquer.class));
+ cards.add(new SetCardInfo("Counterspell", 44, Rarity.UNCOMMON, mage.cards.c.Counterspell.class));
+ cards.add(new SetCardInfo("Dance of the Dead", 83, Rarity.UNCOMMON, mage.cards.d.DanceOfTheDead.class));
+ cards.add(new SetCardInfo("Dark Banishing", 84, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
+ cards.add(new SetCardInfo("Death Spark", 123, Rarity.COMMON, mage.cards.d.DeathSpark.class));
+ cards.add(new SetCardInfo("Deep Spawn", 45, Rarity.RARE, mage.cards.d.DeepSpawn.class));
+ cards.add(new SetCardInfo("Demonic Consultation", 85, Rarity.UNCOMMON, mage.cards.d.DemonicConsultation.class));
+ cards.add(new SetCardInfo("Despotic Scepter", 206, Rarity.RARE, mage.cards.d.DespoticScepter.class));
+ cards.add(new SetCardInfo("Diabolic Vision", 191, Rarity.UNCOMMON, mage.cards.d.DiabolicVision.class));
+ cards.add(new SetCardInfo("Disenchant", 10, Rarity.COMMON, mage.cards.d.Disenchant.class));
+ cards.add(new SetCardInfo("Drift of the Dead", 86, Rarity.COMMON, mage.cards.d.DriftOfTheDead.class));
+ cards.add(new SetCardInfo("Dwarven Ruins", 227, Rarity.UNCOMMON, mage.cards.d.DwarvenRuins.class));
+ cards.add(new SetCardInfo("Dystopia", 88, Rarity.RARE, mage.cards.d.Dystopia.class));
+ cards.add(new SetCardInfo("Earthlink", 192, Rarity.RARE, mage.cards.e.Earthlink.class));
+ cards.add(new SetCardInfo("Ebon Praetor", 89, Rarity.RARE, mage.cards.e.EbonPraetor.class));
+ cards.add(new SetCardInfo("Ebon Stronghold", 228, Rarity.UNCOMMON, mage.cards.e.EbonStronghold.class));
+ cards.add(new SetCardInfo("Elemental Augury", 193, Rarity.RARE, mage.cards.e.ElementalAugury.class));
+ cards.add(new SetCardInfo("Elkin Bottle", 207, Rarity.RARE, mage.cards.e.ElkinBottle.class));
+ cards.add(new SetCardInfo("Elven Lyre", 208, Rarity.COMMON, mage.cards.e.ElvenLyre.class));
+ cards.add(new SetCardInfo("Elvish Farmer", 156, Rarity.RARE, mage.cards.e.ElvishFarmer.class));
+ cards.add(new SetCardInfo("Elvish Hunter", 157, Rarity.COMMON, ElvishHunter.class));
+ cards.add(new SetCardInfo("Elvish Ranger", 158, Rarity.COMMON, mage.cards.e.ElvishRanger.class));
+ cards.add(new SetCardInfo("Elvish Spirit Guide", 159, Rarity.UNCOMMON, mage.cards.e.ElvishSpiritGuide.class));
+ cards.add(new SetCardInfo("Energy Storm", 11, Rarity.RARE, mage.cards.e.EnergyStorm.class));
+ cards.add(new SetCardInfo("Enervate", 47, Rarity.COMMON, mage.cards.e.Enervate.class));
+ cards.add(new SetCardInfo("Errand of Duty", 12, Rarity.UNCOMMON, mage.cards.e.ErrandOfDuty.class));
+ cards.add(new SetCardInfo("Errantry", 124, Rarity.COMMON, mage.cards.e.Errantry.class));
+ cards.add(new SetCardInfo("Essence Filter", 160, Rarity.UNCOMMON, mage.cards.e.EssenceFilter.class));
+ cards.add(new SetCardInfo("Essence Flare", 48, Rarity.COMMON, mage.cards.e.EssenceFlare.class));
+ cards.add(new SetCardInfo("Farrel's Mantle", 13, Rarity.UNCOMMON, mage.cards.f.FarrelsMantle.class));
+ cards.add(new SetCardInfo("Farrel's Zealot", 14, Rarity.UNCOMMON, FarrelsZealot.class));
+ cards.add(new SetCardInfo("Feral Thallid", 161, Rarity.COMMON, mage.cards.f.FeralThallid.class));
+ cards.add(new SetCardInfo("Fire Dragon", 125, Rarity.RARE, mage.cards.f.FireDragon.class));
+ cards.add(new SetCardInfo("Flame Spirit", 126, Rarity.UNCOMMON, mage.cards.f.FlameSpirit.class));
+ cards.add(new SetCardInfo("Folk of the Pines", 162, Rarity.COMMON, mage.cards.f.FolkOfThePines.class));
+ cards.add(new SetCardInfo("Forbidden Lore", 163, Rarity.UNCOMMON, mage.cards.f.ForbiddenLore.class));
+ cards.add(new SetCardInfo("Forgotten Lore", 164, Rarity.UNCOMMON, mage.cards.f.ForgottenLore.class));
+ cards.add(new SetCardInfo("Foul Familiar", 90, Rarity.COMMON, mage.cards.f.FoulFamiliar.class));
+ cards.add(new SetCardInfo("Fumarole", 194, Rarity.UNCOMMON, mage.cards.f.Fumarole.class));
+ cards.add(new SetCardInfo("Funeral March", 91, Rarity.COMMON, mage.cards.f.FuneralMarch.class));
+ cards.add(new SetCardInfo("Fungal Bloom", 165, Rarity.RARE, mage.cards.f.FungalBloom.class));
+ cards.add(new SetCardInfo("Fyndhorn Pollen", 166, Rarity.RARE, mage.cards.f.FyndhornPollen.class));
+ cards.add(new SetCardInfo("Gangrenous Zombies", 92, Rarity.COMMON, mage.cards.g.GangrenousZombies.class));
+ cards.add(new SetCardInfo("Giant Growth", 167, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
+ cards.add(new SetCardInfo("Giant Trap Door Spider", 195, Rarity.UNCOMMON, mage.cards.g.GiantTrapDoorSpider.class));
+ cards.add(new SetCardInfo("Glacial Chasm", 229, Rarity.RARE, mage.cards.g.GlacialChasm.class));
+ cards.add(new SetCardInfo("Glacial Crevasses", 127, Rarity.RARE, mage.cards.g.GlacialCrevasses.class));
+ cards.add(new SetCardInfo("Gorilla Shaman", 129, Rarity.UNCOMMON, GorillaShaman.class));
+ cards.add(new SetCardInfo("Grandmother Sengir", 93, Rarity.RARE, mage.cards.g.GrandmotherSengir.class));
+ cards.add(new SetCardInfo("Havenwood Battleground", 230, Rarity.UNCOMMON, mage.cards.h.HavenwoodBattleground.class));
+ cards.add(new SetCardInfo("Heart of Yavimaya", 231, Rarity.RARE, mage.cards.h.HeartOfYavimaya.class));
+ cards.add(new SetCardInfo("Helm of Obedience", 210, Rarity.RARE, mage.cards.h.HelmOfObedience.class));
+ cards.add(new SetCardInfo("Icatian Javelineers", 15, Rarity.COMMON, IcatianJavelineers.class));
+ cards.add(new SetCardInfo("Icatian Phalanx", 16, Rarity.COMMON, mage.cards.i.IcatianPhalanx.class));
+ cards.add(new SetCardInfo("Icatian Scout", 17, Rarity.COMMON, IcatianScout.class));
+ cards.add(new SetCardInfo("Ice Floe", 232, Rarity.UNCOMMON, mage.cards.i.IceFloe.class));
+ cards.add(new SetCardInfo("Iceberg", 49, Rarity.UNCOMMON, mage.cards.i.Iceberg.class));
+ cards.add(new SetCardInfo("Icequake", 94, Rarity.COMMON, mage.cards.i.Icequake.class));
+ cards.add(new SetCardInfo("Icy Prison", 50, Rarity.COMMON, mage.cards.i.IcyPrison.class));
+ cards.add(new SetCardInfo("Ihsan's Shade", 95, Rarity.RARE, mage.cards.i.IhsansShade.class));
+ cards.add(new SetCardInfo("Imperial Recruiter", 130, Rarity.RARE, mage.cards.i.ImperialRecruiter.class));
+ cards.add(new SetCardInfo("Imperial Seal", 96, Rarity.RARE, mage.cards.i.ImperialSeal.class));
+ cards.add(new SetCardInfo("Incinerate", 131, Rarity.COMMON, mage.cards.i.Incinerate.class));
+ cards.add(new SetCardInfo("Infernal Darkness", 97, Rarity.RARE, mage.cards.i.InfernalDarkness.class));
+ cards.add(new SetCardInfo("Inheritance", 18, Rarity.UNCOMMON, mage.cards.i.Inheritance.class));
+ cards.add(new SetCardInfo("Ironclaw Orcs", 132, Rarity.COMMON, mage.cards.i.IronclawOrcs.class));
+ cards.add(new SetCardInfo("Jester's Mask", 211, Rarity.RARE, mage.cards.j.JestersMask.class));
+ cards.add(new SetCardInfo("Jeweled Amulet", 212, Rarity.UNCOMMON, mage.cards.j.JeweledAmulet.class));
+ cards.add(new SetCardInfo("Johtull Wurm", 168, Rarity.UNCOMMON, mage.cards.j.JohtullWurm.class));
+ cards.add(new SetCardInfo("Juniper Order Advocate", 20, Rarity.UNCOMMON, mage.cards.j.JuniperOrderAdvocate.class));
+ cards.add(new SetCardInfo("Karplusan Giant", 133, Rarity.UNCOMMON, mage.cards.k.KarplusanGiant.class));
+ cards.add(new SetCardInfo("Kaysa", 170, Rarity.RARE, mage.cards.k.Kaysa.class));
+ cards.add(new SetCardInfo("Kjeldoran Dead", 98, Rarity.COMMON, mage.cards.k.KjeldoranDead.class));
+ cards.add(new SetCardInfo("Kjeldoran Home Guard", 22, Rarity.UNCOMMON, mage.cards.k.KjeldoranHomeGuard.class));
+ cards.add(new SetCardInfo("Kjeldoran Outpost", 233, Rarity.RARE, mage.cards.k.KjeldoranOutpost.class));
+ cards.add(new SetCardInfo("Kjeldoran Skycaptain", 23, Rarity.COMMON, mage.cards.k.KjeldoranSkycaptain.class));
+ cards.add(new SetCardInfo("Knight of Stromgald", 99, Rarity.UNCOMMON, mage.cards.k.KnightOfStromgald.class));
+ cards.add(new SetCardInfo("Krovikan Fetish", 100, Rarity.COMMON, mage.cards.k.KrovikanFetish.class));
+ cards.add(new SetCardInfo("Krovikan Horror", 101, Rarity.RARE, mage.cards.k.KrovikanHorror.class));
+ cards.add(new SetCardInfo("Krovikan Sorcerer", 51, Rarity.COMMON, mage.cards.k.KrovikanSorcerer.class));
+ cards.add(new SetCardInfo("Lat-Nam's Legacy", 52, Rarity.COMMON, mage.cards.l.LatNamsLegacy.class));
+ cards.add(new SetCardInfo("Leaping Lizard", 171, Rarity.COMMON, mage.cards.l.LeapingLizard.class));
+ cards.add(new SetCardInfo("Lim-Dul's High Guard", 103, Rarity.UNCOMMON, LimDulsHighGuard.class));
+ cards.add(new SetCardInfo("Lodestone Bauble", 213, Rarity.RARE, mage.cards.l.LodestoneBauble.class));
+ cards.add(new SetCardInfo("Magus of the Unseen", 53, Rarity.RARE, mage.cards.m.MagusOfTheUnseen.class));
+ cards.add(new SetCardInfo("Mana Crypt", 214, Rarity.RARE, mage.cards.m.ManaCrypt.class));
+ cards.add(new SetCardInfo("Marjhan", 54, Rarity.RARE, mage.cards.m.Marjhan.class));
+ cards.add(new SetCardInfo("Mesmeric Trance", 55, Rarity.RARE, mage.cards.m.MesmericTrance.class));
+ cards.add(new SetCardInfo("Meteor Shower", 135, Rarity.COMMON, mage.cards.m.MeteorShower.class));
+ cards.add(new SetCardInfo("Minion of Leshrac", 104, Rarity.RARE, mage.cards.m.MinionOfLeshrac.class));
+ cards.add(new SetCardInfo("Misinformation", 105, Rarity.UNCOMMON, mage.cards.m.Misinformation.class));
+ cards.add(new SetCardInfo("Mudslide", 136, Rarity.RARE, mage.cards.m.Mudslide.class));
+ cards.add(new SetCardInfo("Narwhal", 57, Rarity.UNCOMMON, mage.cards.n.Narwhal.class));
+ cards.add(new SetCardInfo("Nature's Blessing", 196, Rarity.UNCOMMON, mage.cards.n.NaturesBlessing.class));
+ cards.add(new SetCardInfo("Nature's Wrath", 172, Rarity.RARE, mage.cards.n.NaturesWrath.class));
+ cards.add(new SetCardInfo("Necrite", 106, Rarity.COMMON, Necrite.class));
+ cards.add(new SetCardInfo("Necropotence", 107, Rarity.RARE, mage.cards.n.Necropotence.class));
+ cards.add(new SetCardInfo("Night Soil", 173, Rarity.UNCOMMON, NightSoil.class));
+ cards.add(new SetCardInfo("Orc General", 137, Rarity.UNCOMMON, mage.cards.o.OrcGeneral.class));
+ cards.add(new SetCardInfo("Orcish Cannoneers", 138, Rarity.UNCOMMON, mage.cards.o.OrcishCannoneers.class));
+ cards.add(new SetCardInfo("Orcish Captain", 139, Rarity.UNCOMMON, mage.cards.o.OrcishCaptain.class));
+ cards.add(new SetCardInfo("Orcish Lumberjack", 142, Rarity.COMMON, mage.cards.o.OrcishLumberjack.class));
+ cards.add(new SetCardInfo("Orcish Squatters", 143, Rarity.RARE, mage.cards.o.OrcishSquatters.class));
+ cards.add(new SetCardInfo("Orcish Veteran", 144, Rarity.COMMON, OrcishVeteran.class));
+ cards.add(new SetCardInfo("Order of the Sacred Torch", 25, Rarity.RARE, mage.cards.o.OrderOfTheSacredTorch.class));
+ cards.add(new SetCardInfo("Order of the White Shield", 26, Rarity.UNCOMMON, mage.cards.o.OrderOfTheWhiteShield.class));
+ cards.add(new SetCardInfo("Panic", 145, Rarity.COMMON, mage.cards.p.Panic.class));
+ cards.add(new SetCardInfo("Personal Tutor", 58, Rarity.UNCOMMON, mage.cards.p.PersonalTutor.class));
+ cards.add(new SetCardInfo("Phantasmal Fiend", 108, Rarity.COMMON, mage.cards.p.PhantasmalFiend.class));
+ cards.add(new SetCardInfo("Phyrexian Devourer", 216, Rarity.UNCOMMON, mage.cards.p.PhyrexianDevourer.class));
+ cards.add(new SetCardInfo("Pillage", 146, Rarity.UNCOMMON, mage.cards.p.Pillage.class));
+ cards.add(new SetCardInfo("Portent", 60, Rarity.COMMON, mage.cards.p.Portent.class));
+ cards.add(new SetCardInfo("Pyrokinesis", 147, Rarity.RARE, mage.cards.p.Pyrokinesis.class));
+ cards.add(new SetCardInfo("Ravages of War", 27, Rarity.RARE, mage.cards.r.RavagesOfWar.class));
+ cards.add(new SetCardInfo("Ray of Command", 61, Rarity.UNCOMMON, mage.cards.r.RayOfCommand.class));
+ cards.add(new SetCardInfo("Red Cliffs Armada", 62, Rarity.COMMON, mage.cards.r.RedCliffsArmada.class));
+ cards.add(new SetCardInfo("Reinforcements", 28, Rarity.COMMON, mage.cards.r.Reinforcements.class));
+ cards.add(new SetCardInfo("Reprisal", 29, Rarity.COMMON, mage.cards.r.Reprisal.class));
+ cards.add(new SetCardInfo("Retribution", 148, Rarity.UNCOMMON, mage.cards.r.Retribution.class));
+ cards.add(new SetCardInfo("Righteous Fury", 30, Rarity.RARE, mage.cards.r.RighteousFury.class));
+ cards.add(new SetCardInfo("Ritual of Subdual", 174, Rarity.RARE, mage.cards.r.RitualOfSubdual.class));
+ cards.add(new SetCardInfo("Ritual of the Machine", 109, Rarity.RARE, mage.cards.r.RitualOfTheMachine.class));
+ cards.add(new SetCardInfo("Roterothopter", 218, Rarity.COMMON, mage.cards.r.Roterothopter.class));
+ cards.add(new SetCardInfo("Royal Trooper", 32, Rarity.COMMON, mage.cards.r.RoyalTrooper.class));
+ cards.add(new SetCardInfo("Ruins of Trokair", 234, Rarity.UNCOMMON, mage.cards.r.RuinsOfTrokair.class));
+ cards.add(new SetCardInfo("Savannah", 235, Rarity.RARE, mage.cards.s.Savannah.class));
+ cards.add(new SetCardInfo("Screeching Drake", 63, Rarity.COMMON, mage.cards.s.ScreechingDrake.class));
+ cards.add(new SetCardInfo("Sea Drake", 64, Rarity.RARE, mage.cards.s.SeaDrake.class));
+ cards.add(new SetCardInfo("Sea Spirit", 65, Rarity.UNCOMMON, mage.cards.s.SeaSpirit.class));
+ cards.add(new SetCardInfo("Shield Bearer", 35, Rarity.COMMON, mage.cards.s.ShieldBearer.class));
+ cards.add(new SetCardInfo("Shrink", 175, Rarity.COMMON, mage.cards.s.Shrink.class));
+ cards.add(new SetCardInfo("Shyft", 66, Rarity.COMMON, mage.cards.s.Shyft.class));
+ cards.add(new SetCardInfo("Sibilant Spirit", 67, Rarity.RARE, mage.cards.s.SibilantSpirit.class));
+ cards.add(new SetCardInfo("Skeleton Ship", 197, Rarity.RARE, mage.cards.s.SkeletonShip.class));
+ cards.add(new SetCardInfo("Skull Catapult", 219, Rarity.UNCOMMON, mage.cards.s.SkullCatapult.class));
+ cards.add(new SetCardInfo("Snow Fortress", 220, Rarity.UNCOMMON, mage.cards.s.SnowFortress.class));
+ cards.add(new SetCardInfo("Snow-Covered Forest", 245, Rarity.LAND, mage.cards.s.SnowCoveredForest.class));
+ cards.add(new SetCardInfo("Snow-Covered Island", 242, Rarity.LAND, mage.cards.s.SnowCoveredIsland.class));
+ cards.add(new SetCardInfo("Snow-Covered Mountain", 244, Rarity.LAND, mage.cards.s.SnowCoveredMountain.class));
+ cards.add(new SetCardInfo("Snow-Covered Plains", 241, Rarity.LAND, mage.cards.s.SnowCoveredPlains.class));
+ cards.add(new SetCardInfo("Snow-Covered Swamp", 243, Rarity.LAND, mage.cards.s.SnowCoveredSwamp.class));
+ cards.add(new SetCardInfo("Soldevi Digger", 221, Rarity.UNCOMMON, mage.cards.s.SoldeviDigger.class));
+ cards.add(new SetCardInfo("Soldevi Excavations", 236, Rarity.RARE, mage.cards.s.SoldeviExcavations.class));
+ cards.add(new SetCardInfo("Soldevi Simulacrum", 222, Rarity.UNCOMMON, mage.cards.s.SoldeviSimulacrum.class));
+ cards.add(new SetCardInfo("Songs of the Damned", 110, Rarity.COMMON, mage.cards.s.SongsOfTheDamned.class));
+ cards.add(new SetCardInfo("Soul Exchange", 111, Rarity.UNCOMMON, mage.cards.s.SoulExchange.class));
+ cards.add(new SetCardInfo("Soul Kiss", 112, Rarity.UNCOMMON, mage.cards.s.SoulKiss.class));
+ cards.add(new SetCardInfo("Spore Cloud", 176, Rarity.UNCOMMON, mage.cards.s.SporeCloud.class));
+ cards.add(new SetCardInfo("Spore Flower", 177, Rarity.UNCOMMON, mage.cards.s.SporeFlower.class));
+ cards.add(new SetCardInfo("Stampede", 178, Rarity.UNCOMMON, mage.cards.s.Stampede.class));
+ cards.add(new SetCardInfo("Stonehands", 151, Rarity.COMMON, mage.cards.s.Stonehands.class));
+ cards.add(new SetCardInfo("Stone Spirit", 150, Rarity.UNCOMMON, mage.cards.s.StoneSpirit.class));
+ cards.add(new SetCardInfo("Storm Spirit", 198, Rarity.RARE, mage.cards.s.StormSpirit.class));
+ cards.add(new SetCardInfo("Stromgald Cabal", 113, Rarity.RARE, mage.cards.s.StromgaldCabal.class));
+ cards.add(new SetCardInfo("Stunted Growth", 179, Rarity.RARE, mage.cards.s.StuntedGrowth.class));
+ cards.add(new SetCardInfo("Sustaining Spirit", 36, Rarity.RARE, mage.cards.s.SustainingSpirit.class));
+ cards.add(new SetCardInfo("Svyelunite Temple", 237, Rarity.UNCOMMON, mage.cards.s.SvyeluniteTemple.class));
+ cards.add(new SetCardInfo("Swords to Plowshares", 37, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
+ cards.add(new SetCardInfo("Taiga", 238, Rarity.RARE, mage.cards.t.Taiga.class));
+ cards.add(new SetCardInfo("Temporal Manipulation", 69, Rarity.RARE, mage.cards.t.TemporalManipulation.class));
+ cards.add(new SetCardInfo("Thallid", 180, Rarity.COMMON, mage.cards.t.Thallid.class));
+ cards.add(new SetCardInfo("Thallid Devourer", 181, Rarity.COMMON, mage.cards.t.ThallidDevourer.class));
+ cards.add(new SetCardInfo("Thelonite Druid", 182, Rarity.RARE, mage.cards.t.TheloniteDruid.class));
+ cards.add(new SetCardInfo("Thermokarst", 183, Rarity.COMMON, mage.cards.t.Thermokarst.class));
+ cards.add(new SetCardInfo("Thought Lash", 70, Rarity.RARE, mage.cards.t.ThoughtLash.class));
+ cards.add(new SetCardInfo("Thunder Wall", 71, Rarity.UNCOMMON, mage.cards.t.ThunderWall.class));
+ cards.add(new SetCardInfo("Time Bomb", 223, Rarity.RARE, mage.cards.t.TimeBomb.class));
+ cards.add(new SetCardInfo("Tinder Wall", 184, Rarity.COMMON, mage.cards.t.TinderWall.class));
+ cards.add(new SetCardInfo("Tundra", 239, Rarity.RARE, mage.cards.t.Tundra.class));
+ cards.add(new SetCardInfo("Underground Sea", 240, Rarity.RARE, mage.cards.u.UndergroundSea.class));
+ cards.add(new SetCardInfo("Viscerid Armor", 72, Rarity.COMMON, mage.cards.v.VisceridArmor.class));
+ cards.add(new SetCardInfo("Viscerid Drone", 73, Rarity.UNCOMMON, mage.cards.v.VisceridDrone.class));
+ cards.add(new SetCardInfo("Wall of Kelp", 74, Rarity.COMMON, mage.cards.w.WallOfKelp.class));
+ cards.add(new SetCardInfo("Warning", 38, Rarity.COMMON, mage.cards.w.Warning.class));
+ cards.add(new SetCardInfo("Whiteout", 185, Rarity.COMMON, mage.cards.w.Whiteout.class));
+ cards.add(new SetCardInfo("Wind Spirit", 75, Rarity.UNCOMMON, mage.cards.w.WindSpirit.class));
+ cards.add(new SetCardInfo("Wings of Aesthir", 199, Rarity.UNCOMMON, mage.cards.w.WingsOfAesthir.class));
+ cards.add(new SetCardInfo("Withering Wisps", 114, Rarity.UNCOMMON, mage.cards.w.WitheringWisps.class));
+ cards.add(new SetCardInfo("Wolf Pack", 187, Rarity.RARE, mage.cards.w.WolfPack.class));
+ cards.add(new SetCardInfo("Woolly Mammoths", 188, Rarity.COMMON, mage.cards.w.WoollyMammoths.class));
+ cards.add(new SetCardInfo("Woolly Spider", 189, Rarity.UNCOMMON, mage.cards.w.WoollySpider.class));
+ cards.add(new SetCardInfo("Yavimaya Ancients", 190, Rarity.UNCOMMON, mage.cards.y.YavimayaAncients.class));
+ cards.add(new SetCardInfo("Zuran Spellcaster", 76, Rarity.COMMON, mage.cards.z.ZuranSpellcaster.class));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/MastersEditionIII.java b/Mage.Sets/src/mage/sets/MastersEditionIII.java
index 4da97cf5f56..591c87db527 100644
--- a/Mage.Sets/src/mage/sets/MastersEditionIII.java
+++ b/Mage.Sets/src/mage/sets/MastersEditionIII.java
@@ -1,277 +1,277 @@
-/*
- * 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.cards.f.FeveredStrength;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author LevelX2
- */
-public class MastersEditionIII extends ExpansionSet {
-
- private static final MastersEditionIII instance = new MastersEditionIII();
-
- public static MastersEditionIII getInstance() {
- return instance;
- }
-
- private MastersEditionIII() {
- super("Masters Edition III", "ME3", ExpansionSet.buildDate(2009, 9, 7), SetType.MAGIC_ONLINE);
- this.hasBasicLands = true;
- this.hasBoosters = true;
- this.numBoosterLands = 1;
- this.numBoosterCommon = 10;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Active Volcano", 85, Rarity.UNCOMMON, mage.cards.a.ActiveVolcano.class));
- cards.add(new SetCardInfo("Akron Legionnaire", 1, Rarity.RARE, mage.cards.a.AkronLegionnaire.class));
- cards.add(new SetCardInfo("Alabaster Potion", 2, Rarity.UNCOMMON, mage.cards.a.AlabasterPotion.class));
- cards.add(new SetCardInfo("All Hallow's Eve", 57, Rarity.RARE, mage.cards.a.AllHallowsEve.class));
- cards.add(new SetCardInfo("Amrou Kithkin", 3, Rarity.COMMON, mage.cards.a.AmrouKithkin.class));
- cards.add(new SetCardInfo("Anaba Ancestor", 86, Rarity.COMMON, mage.cards.a.AnabaAncestor.class));
- cards.add(new SetCardInfo("Anaba Spirit Crafter", 87, Rarity.COMMON, mage.cards.a.AnabaSpiritCrafter.class));
- cards.add(new SetCardInfo("Angus Mackenzie", 141, Rarity.RARE, mage.cards.a.AngusMackenzie.class));
- cards.add(new SetCardInfo("Arboria", 113, Rarity.RARE, mage.cards.a.Arboria.class));
- cards.add(new SetCardInfo("Arcades Sabboth", 142, Rarity.RARE, mage.cards.a.ArcadesSabboth.class));
- cards.add(new SetCardInfo("Arena of the Ancients", 188, Rarity.RARE, mage.cards.a.ArenaOfTheAncients.class));
- cards.add(new SetCardInfo("Ashes to Ashes", 58, Rarity.UNCOMMON, mage.cards.a.AshesToAshes.class));
- cards.add(new SetCardInfo("Astrolabe", 189, Rarity.COMMON, mage.cards.a.Astrolabe.class));
- cards.add(new SetCardInfo("Axelrod Gunnarson", 143, Rarity.UNCOMMON, mage.cards.a.AxelrodGunnarson.class));
- cards.add(new SetCardInfo("Banshee", 59, Rarity.UNCOMMON, mage.cards.b.Banshee.class));
- cards.add(new SetCardInfo("Barktooth Warbeard", 144, Rarity.COMMON, mage.cards.b.BarktoothWarbeard.class));
- cards.add(new SetCardInfo("Barl's Cage", 190, Rarity.RARE, mage.cards.b.BarlsCage.class));
- cards.add(new SetCardInfo("Bartel Runeaxe", 145, Rarity.UNCOMMON, mage.cards.b.BartelRuneaxe.class));
- cards.add(new SetCardInfo("Bayou", 204, Rarity.RARE, mage.cards.b.Bayou.class));
- cards.add(new SetCardInfo("Bazaar of Baghdad", 205, Rarity.RARE, mage.cards.b.BazaarOfBaghdad.class));
- cards.add(new SetCardInfo("Black Vise", 191, Rarity.RARE, mage.cards.b.BlackVise.class));
- cards.add(new SetCardInfo("Blood Lust", 88, Rarity.COMMON, mage.cards.b.BloodLust.class));
- cards.add(new SetCardInfo("Bone Flute", 192, Rarity.COMMON, mage.cards.b.BoneFlute.class));
- cards.add(new SetCardInfo("Boomerang", 30, Rarity.COMMON, mage.cards.b.Boomerang.class));
- cards.add(new SetCardInfo("Boris Devilboon", 146, Rarity.UNCOMMON, mage.cards.b.BorisDevilboon.class));
- cards.add(new SetCardInfo("Borrowing 100,000 Arrows", 31, Rarity.UNCOMMON, mage.cards.b.Borrowing100000Arrows.class));
- cards.add(new SetCardInfo("Brilliant Plan", 32, Rarity.COMMON, mage.cards.b.BrilliantPlan.class));
- cards.add(new SetCardInfo("Burning of Xinye", 89, Rarity.RARE, mage.cards.b.BurningOfXinye.class));
- cards.add(new SetCardInfo("Call to Arms", 4, Rarity.UNCOMMON, mage.cards.c.CallToArms.class));
- cards.add(new SetCardInfo("Capture of Jingzhou", 33, Rarity.RARE, mage.cards.c.CaptureOfJingzhou.class));
- cards.add(new SetCardInfo("Carrion Ants", 60, Rarity.UNCOMMON, mage.cards.c.CarrionAnts.class));
- cards.add(new SetCardInfo("Chain Lightning", 90, Rarity.COMMON, mage.cards.c.ChainLightning.class));
- cards.add(new SetCardInfo("Chromium", 147, Rarity.RARE, mage.cards.c.Chromium.class));
- cards.add(new SetCardInfo("Cinder Storm", 91, Rarity.UNCOMMON, mage.cards.c.CinderStorm.class));
- cards.add(new SetCardInfo("City of Shadows", 206, Rarity.RARE, mage.cards.c.CityOfShadows.class));
- cards.add(new SetCardInfo("Cleanse", 5, Rarity.RARE, mage.cards.c.Cleanse.class));
- cards.add(new SetCardInfo("Coal Golem", 193, Rarity.COMMON, mage.cards.c.CoalGolem.class));
- cards.add(new SetCardInfo("Concordant Crossroads", 114, Rarity.RARE, mage.cards.c.ConcordantCrossroads.class));
- cards.add(new SetCardInfo("Corrupt Eunuchs", 92, Rarity.UNCOMMON, mage.cards.c.CorruptEunuchs.class));
- cards.add(new SetCardInfo("Cosmic Horror", 61, Rarity.RARE, mage.cards.c.CosmicHorror.class));
- cards.add(new SetCardInfo("Crimson Kobolds", 93, Rarity.COMMON, mage.cards.c.CrimsonKobolds.class));
- cards.add(new SetCardInfo("Crimson Manticore", 94, Rarity.UNCOMMON, mage.cards.c.CrimsonManticore.class));
- cards.add(new SetCardInfo("Dance of Many", 34, Rarity.UNCOMMON, mage.cards.d.DanceOfMany.class));
- cards.add(new SetCardInfo("D'Avenant Archer", 6, Rarity.COMMON, mage.cards.d.DAvenantArcher.class));
- cards.add(new SetCardInfo("Demonic Torment", 62, Rarity.COMMON, mage.cards.d.DemonicTorment.class));
- cards.add(new SetCardInfo("Desert Twister", 115, Rarity.UNCOMMON, mage.cards.d.DesertTwister.class));
- cards.add(new SetCardInfo("Desperate Charge", 63, Rarity.COMMON, mage.cards.d.DesperateCharge.class));
- cards.add(new SetCardInfo("Didgeridoo", 194, Rarity.UNCOMMON, mage.cards.d.Didgeridoo.class));
- cards.add(new SetCardInfo("Disenchant", 7, Rarity.COMMON, mage.cards.d.Disenchant.class));
- cards.add(new SetCardInfo("Disharmony", 95, Rarity.UNCOMMON, mage.cards.d.Disharmony.class));
- cards.add(new SetCardInfo("Divine Intervention", 8, Rarity.RARE, mage.cards.d.DivineIntervention.class));
- cards.add(new SetCardInfo("Dong Zhou, the Tyrant", 96, Rarity.RARE, mage.cards.d.DongZhouTheTyrant.class));
- cards.add(new SetCardInfo("Eightfold Maze", 9, Rarity.UNCOMMON, mage.cards.e.EightfoldMaze.class));
- cards.add(new SetCardInfo("Elves of Deep Shadow", 116, Rarity.COMMON, mage.cards.e.ElvesOfDeepShadow.class));
- cards.add(new SetCardInfo("Evil Presence", 64, Rarity.COMMON, mage.cards.e.EvilPresence.class));
- cards.add(new SetCardInfo("Exorcist", 10, Rarity.UNCOMMON, mage.cards.e.Exorcist.class));
- cards.add(new SetCardInfo("Faerie Noble", 117, Rarity.UNCOMMON, mage.cards.f.FaerieNoble.class));
- cards.add(new SetCardInfo("False Defeat", 11, Rarity.UNCOMMON, mage.cards.f.FalseDefeat.class));
- cards.add(new SetCardInfo("Famine", 65, Rarity.UNCOMMON, mage.cards.f.Famine.class));
- cards.add(new SetCardInfo("Fellwar Stone", 195, Rarity.COMMON, mage.cards.f.FellwarStone.class));
- cards.add(new SetCardInfo("Fevered Strength", 66, Rarity.COMMON, FeveredStrength.class));
- cards.add(new SetCardInfo("Fire Ambush", 97, Rarity.COMMON, mage.cards.f.FireAmbush.class));
- cards.add(new SetCardInfo("Fire Drake", 98, Rarity.COMMON, mage.cards.f.FireDrake.class));
- cards.add(new SetCardInfo("Fire Sprites", 118, Rarity.COMMON, mage.cards.f.FireSprites.class));
- cards.add(new SetCardInfo("Flash Flood", 35, Rarity.UNCOMMON, mage.cards.f.FlashFlood.class));
- cards.add(new SetCardInfo("Forced Retreat", 37, Rarity.COMMON, mage.cards.f.ForcedRetreat.class));
- cards.add(new SetCardInfo("Force Spike", 36, Rarity.COMMON, mage.cards.f.ForceSpike.class));
- cards.add(new SetCardInfo("Forest", 228, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 229, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 230, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Frost Giant", 101, Rarity.UNCOMMON, mage.cards.f.FrostGiant.class));
- cards.add(new SetCardInfo("Gabriel Angelfire", 148, Rarity.RARE, mage.cards.g.GabrielAngelfire.class));
- cards.add(new SetCardInfo("Gaea's Touch", 120, Rarity.UNCOMMON, mage.cards.g.GaeasTouch.class));
- cards.add(new SetCardInfo("Gauntlets of Chaos", 196, Rarity.RARE, mage.cards.g.GauntletsOfChaos.class));
- cards.add(new SetCardInfo("Ghostly Visit", 67, Rarity.COMMON, mage.cards.g.GhostlyVisit.class));
- cards.add(new SetCardInfo("Ghosts of the Damned", 68, Rarity.COMMON, mage.cards.g.GhostsOfTheDamned.class));
- cards.add(new SetCardInfo("Giant Growth", 121, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
- cards.add(new SetCardInfo("Grim Tutor", 69, Rarity.RARE, mage.cards.g.GrimTutor.class));
- cards.add(new SetCardInfo("Guan Yu's 1,000-Li March", 13, Rarity.RARE, mage.cards.g.GuanYus1000LiMarch.class));
- cards.add(new SetCardInfo("Guan Yu, Sainted Warrior", 12, Rarity.UNCOMMON, mage.cards.g.GuanYuSaintedWarrior.class));
- cards.add(new SetCardInfo("Gwendlyn Di Corci", 149, Rarity.RARE, mage.cards.g.GwendlynDiCorci.class));
- cards.add(new SetCardInfo("Halfdane", 150, Rarity.RARE, mage.cards.h.Halfdane.class));
- cards.add(new SetCardInfo("Hammerheim", 207, Rarity.UNCOMMON, mage.cards.h.Hammerheim.class));
- cards.add(new SetCardInfo("Hazezon Tamar", 151, Rarity.RARE, mage.cards.h.HazezonTamar.class));
- cards.add(new SetCardInfo("Heal", 14, Rarity.COMMON, mage.cards.h.Heal.class));
- cards.add(new SetCardInfo("Heavy Fog", 122, Rarity.COMMON, mage.cards.h.HeavyFog.class));
- cards.add(new SetCardInfo("Hellfire", 70, Rarity.RARE, mage.cards.h.Hellfire.class));
- cards.add(new SetCardInfo("Hua Tuo, Honored Physician", 123, Rarity.RARE, mage.cards.h.HuaTuoHonoredPhysician.class));
- cards.add(new SetCardInfo("Hunding Gjornersen", 152, Rarity.UNCOMMON, mage.cards.h.HundingGjornersen.class));
- cards.add(new SetCardInfo("Hunting Cheetah", 124, Rarity.COMMON, mage.cards.h.HuntingCheetah.class));
- cards.add(new SetCardInfo("Hurloon Minotaur", 102, Rarity.COMMON, mage.cards.h.HurloonMinotaur.class));
- cards.add(new SetCardInfo("Immolation", 103, Rarity.COMMON, mage.cards.i.Immolation.class));
- cards.add(new SetCardInfo("Infuse", 38, Rarity.COMMON, mage.cards.i.Infuse.class));
- cards.add(new SetCardInfo("Island", 219, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 220, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 221, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ivory Guardians", 15, Rarity.UNCOMMON, mage.cards.i.IvoryGuardians.class));
- cards.add(new SetCardInfo("Jedit Ojanen", 153, Rarity.COMMON, mage.cards.j.JeditOjanen.class));
- cards.add(new SetCardInfo("Jerrard of the Closed Fist", 154, Rarity.COMMON, mage.cards.j.JerrardOfTheClosedFist.class));
- cards.add(new SetCardInfo("Jungle Lion", 125, Rarity.COMMON, mage.cards.j.JungleLion.class));
- cards.add(new SetCardInfo("Karakas", 208, Rarity.RARE, mage.cards.k.Karakas.class));
- cards.add(new SetCardInfo("Kei Takahashi", 155, Rarity.UNCOMMON, mage.cards.k.KeiTakahashi.class));
- cards.add(new SetCardInfo("Killer Bees", 126, Rarity.UNCOMMON, mage.cards.k.KillerBees.class));
- cards.add(new SetCardInfo("Kjeldoran Frostbeast", 156, Rarity.UNCOMMON, mage.cards.k.KjeldoranFrostbeast.class));
- cards.add(new SetCardInfo("Kobold Drill Sergeant", 104, Rarity.UNCOMMON, mage.cards.k.KoboldDrillSergeant.class));
- cards.add(new SetCardInfo("Kobold Overlord", 105, Rarity.UNCOMMON, mage.cards.k.KoboldOverlord.class));
- cards.add(new SetCardInfo("Kobolds of Kher Keep", 107, Rarity.COMMON, mage.cards.k.KoboldsOfKherKeep.class));
- cards.add(new SetCardInfo("Kobold Taskmaster", 106, Rarity.COMMON, mage.cards.k.KoboldTaskmaster.class));
- cards.add(new SetCardInfo("Kongming, 'Sleeping Dragon'", 16, Rarity.RARE, mage.cards.k.KongmingSleepingDragon.class));
- cards.add(new SetCardInfo("Labyrinth Minotaur", 39, Rarity.COMMON, mage.cards.l.LabyrinthMinotaur.class));
- cards.add(new SetCardInfo("Lady Caleria", 157, Rarity.UNCOMMON, mage.cards.l.LadyCaleria.class));
- cards.add(new SetCardInfo("Lady Evangela", 158, Rarity.UNCOMMON, mage.cards.l.LadyEvangela.class));
- cards.add(new SetCardInfo("Lady Orca", 159, Rarity.COMMON, mage.cards.l.LadyOrca.class));
- cards.add(new SetCardInfo("Land Equilibrium", 40, Rarity.RARE, mage.cards.l.LandEquilibrium.class));
- cards.add(new SetCardInfo("Land Tax", 17, Rarity.RARE, mage.cards.l.LandTax.class));
- cards.add(new SetCardInfo("Life Chisel", 199, Rarity.RARE, mage.cards.l.LifeChisel.class));
- cards.add(new SetCardInfo("Lightning Blow", 18, Rarity.COMMON, mage.cards.l.LightningBlow.class));
- cards.add(new SetCardInfo("Liu Bei, Lord of Shu", 19, Rarity.RARE, mage.cards.l.LiuBeiLordOfShu.class));
- cards.add(new SetCardInfo("Living Plane", 127, Rarity.RARE, mage.cards.l.LivingPlane.class));
- cards.add(new SetCardInfo("Livonya Silone", 160, Rarity.UNCOMMON, mage.cards.l.LivonyaSilone.class));
- cards.add(new SetCardInfo("Loyal Retainers", 20, Rarity.UNCOMMON, mage.cards.l.LoyalRetainers.class));
- cards.add(new SetCardInfo("Lu Bu, Master-at-Arms", 108, Rarity.RARE, mage.cards.l.LuBuMasterAtArms.class));
- cards.add(new SetCardInfo("Lu Meng, Wu General", 41, Rarity.UNCOMMON, mage.cards.l.LuMengWuGeneral.class));
- cards.add(new SetCardInfo("Lu Xun, Scholar General", 42, Rarity.UNCOMMON, mage.cards.l.LuXunScholarGeneral.class));
- cards.add(new SetCardInfo("Mana Drain", 43, Rarity.RARE, mage.cards.m.ManaDrain.class));
- cards.add(new SetCardInfo("Mana Vortex", 44, Rarity.RARE, mage.cards.m.ManaVortex.class));
- cards.add(new SetCardInfo("Marhault Elsdragon", 161, Rarity.UNCOMMON, mage.cards.m.MarhaultElsdragon.class));
- cards.add(new SetCardInfo("Meng Huo, Barbarian King", 128, Rarity.RARE, mage.cards.m.MengHuoBarbarianKing.class));
- cards.add(new SetCardInfo("Meng Huo's Horde", 129, Rarity.COMMON, mage.cards.m.MengHuosHorde.class));
- cards.add(new SetCardInfo("Mind Twist", 72, Rarity.RARE, mage.cards.m.MindTwist.class));
- cards.add(new SetCardInfo("Misfortune's Gain", 21, Rarity.COMMON, mage.cards.m.MisfortunesGain.class));
- cards.add(new SetCardInfo("Mountain", 225, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 226, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 227, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Nebuchadnezzar", 162, Rarity.UNCOMMON, mage.cards.n.Nebuchadnezzar.class));
- cards.add(new SetCardInfo("Nether Void", 73, Rarity.RARE, mage.cards.n.NetherVoid.class));
- cards.add(new SetCardInfo("Nicol Bolas", 163, Rarity.RARE, mage.cards.n.NicolBolas.class));
- cards.add(new SetCardInfo("Nova Pentacle", 200, Rarity.RARE, mage.cards.n.NovaPentacle.class));
- cards.add(new SetCardInfo("Old Man of the Sea", 45, Rarity.RARE, mage.cards.o.OldManOfTheSea.class));
- cards.add(new SetCardInfo("Palladia-Mors", 164, Rarity.RARE, mage.cards.p.PalladiaMors.class));
- cards.add(new SetCardInfo("Pavel Maliki", 165, Rarity.UNCOMMON, mage.cards.p.PavelMaliki.class));
- cards.add(new SetCardInfo("Peach Garden Oath", 22, Rarity.COMMON, mage.cards.p.PeachGardenOath.class));
- cards.add(new SetCardInfo("Plains", 216, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 217, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 218, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plateau", 209, Rarity.RARE, mage.cards.p.Plateau.class));
- cards.add(new SetCardInfo("Princess Lucrezia", 166, Rarity.UNCOMMON, mage.cards.p.PrincessLucrezia.class));
- cards.add(new SetCardInfo("Raging Minotaur", 109, Rarity.COMMON, mage.cards.r.RagingMinotaur.class));
- cards.add(new SetCardInfo("Ragnar", 167, Rarity.UNCOMMON, mage.cards.r.Ragnar.class));
- cards.add(new SetCardInfo("Ramirez DePietro", 168, Rarity.COMMON, mage.cards.r.RamirezDePietro.class));
- cards.add(new SetCardInfo("Ramses Overdark", 169, Rarity.UNCOMMON, mage.cards.r.RamsesOverdark.class));
- cards.add(new SetCardInfo("Rasputin Dreamweaver", 170, Rarity.RARE, mage.cards.r.RasputinDreamweaver.class));
- cards.add(new SetCardInfo("Recall", 46, Rarity.UNCOMMON, mage.cards.r.Recall.class));
- cards.add(new SetCardInfo("Reincarnation", 130, Rarity.UNCOMMON, mage.cards.r.Reincarnation.class));
- cards.add(new SetCardInfo("Remove Soul", 47, Rarity.COMMON, mage.cards.r.RemoveSoul.class));
- cards.add(new SetCardInfo("Reset", 48, Rarity.RARE, mage.cards.r.Reset.class));
- cards.add(new SetCardInfo("Reveka, Wizard Savant", 49, Rarity.UNCOMMON, mage.cards.r.RevekaWizardSavant.class));
- cards.add(new SetCardInfo("Riding the Dilu Horse", 131, Rarity.UNCOMMON, mage.cards.r.RidingTheDiluHorse.class));
- cards.add(new SetCardInfo("Riven Turnbull", 171, Rarity.UNCOMMON, mage.cards.r.RivenTurnbull.class));
- cards.add(new SetCardInfo("Rohgahh of Kher Keep", 172, Rarity.RARE, mage.cards.r.RohgahhOfKherKeep.class));
- cards.add(new SetCardInfo("Rolling Earthquake", 110, Rarity.RARE, mage.cards.r.RollingEarthquake.class));
- cards.add(new SetCardInfo("Rubinia Soulsinger", 173, Rarity.RARE, mage.cards.r.RubiniaSoulsinger.class));
- cards.add(new SetCardInfo("Scrubland", 210, Rarity.RARE, mage.cards.s.Scrubland.class));
- cards.add(new SetCardInfo("Scryb Sprites", 132, Rarity.COMMON, mage.cards.s.ScrybSprites.class));
- cards.add(new SetCardInfo("Shu Cavalry", 23, Rarity.COMMON, mage.cards.s.ShuCavalry.class));
- cards.add(new SetCardInfo("Shu Elite Companions", 24, Rarity.COMMON, mage.cards.s.ShuEliteCompanions.class));
- cards.add(new SetCardInfo("Shu General", 25, Rarity.COMMON, mage.cards.s.ShuGeneral.class));
- cards.add(new SetCardInfo("Shu Soldier-Farmers", 26, Rarity.COMMON, mage.cards.s.ShuSoldierFarmers.class));
- cards.add(new SetCardInfo("Sir Shandlar of Eberyn", 174, Rarity.COMMON, mage.cards.s.SirShandlarOfEberyn.class));
- cards.add(new SetCardInfo("Sivitri Scarzam", 175, Rarity.COMMON, mage.cards.s.SivitriScarzam.class));
- cards.add(new SetCardInfo("Slashing Tiger", 133, Rarity.COMMON, mage.cards.s.SlashingTiger.class));
- cards.add(new SetCardInfo("Sol Grail", 201, Rarity.COMMON, mage.cards.s.SolGrail.class));
- cards.add(new SetCardInfo("Sorrow's Path", 211, Rarity.RARE, mage.cards.s.SorrowsPath.class));
- cards.add(new SetCardInfo("Spirit Shackle", 74, Rarity.COMMON, mage.cards.s.SpiritShackle.class));
- cards.add(new SetCardInfo("Spoils of Victory", 134, Rarity.COMMON, mage.cards.s.SpoilsOfVictory.class));
- cards.add(new SetCardInfo("Stangg", 177, Rarity.UNCOMMON, mage.cards.s.Stangg.class));
- cards.add(new SetCardInfo("Stolen Grain", 75, Rarity.UNCOMMON, mage.cards.s.StolenGrain.class));
- cards.add(new SetCardInfo("Storm World", 111, Rarity.RARE, mage.cards.s.StormWorld.class));
- cards.add(new SetCardInfo("Strategic Planning", 51, Rarity.COMMON, mage.cards.s.StrategicPlanning.class));
- cards.add(new SetCardInfo("Sunastian Falconer", 178, Rarity.UNCOMMON, mage.cards.s.SunastianFalconer.class));
- cards.add(new SetCardInfo("Sun Ce, Young Conquerer", 52, Rarity.UNCOMMON, mage.cards.s.SunCeYoungConquerer.class));
- cards.add(new SetCardInfo("Sun Quan, Lord of Wu", 53, Rarity.RARE, mage.cards.s.SunQuanLordOfWu.class));
- cards.add(new SetCardInfo("Swamp", 222, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 223, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 224, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Sword of the Ages", 202, Rarity.RARE, mage.cards.s.SwordOfTheAges.class));
- cards.add(new SetCardInfo("Tetsuo Umezawa", 179, Rarity.RARE, mage.cards.t.TetsuoUmezawa.class));
- cards.add(new SetCardInfo("The Abyss", 77, Rarity.RARE, mage.cards.t.TheAbyss.class));
- cards.add(new SetCardInfo("The Lady of the Mountain", 180, Rarity.COMMON, mage.cards.t.TheLadyOfTheMountain.class));
- cards.add(new SetCardInfo("The Tabernacle at Pendrell Vale", 212, Rarity.RARE, mage.cards.t.TheTabernacleAtPendrellVale.class));
- cards.add(new SetCardInfo("The Wretched", 78, Rarity.UNCOMMON, mage.cards.t.TheWretched.class));
- cards.add(new SetCardInfo("Three Visits", 135, Rarity.COMMON, mage.cards.t.ThreeVisits.class));
- cards.add(new SetCardInfo("Tobias Andrion", 181, Rarity.COMMON, mage.cards.t.TobiasAndrion.class));
- cards.add(new SetCardInfo("Torsten Von Ursus", 183, Rarity.COMMON, mage.cards.t.TorstenVonUrsus.class));
- cards.add(new SetCardInfo("Tor Wauki", 182, Rarity.UNCOMMON, mage.cards.t.TorWauki.class));
- cards.add(new SetCardInfo("Tracker", 136, Rarity.UNCOMMON, mage.cards.t.Tracker.class));
- cards.add(new SetCardInfo("Trip Wire", 137, Rarity.COMMON, mage.cards.t.TripWire.class));
- cards.add(new SetCardInfo("Tropical Island", 213, Rarity.RARE, mage.cards.t.TropicalIsland.class));
- cards.add(new SetCardInfo("Tuknir Deathlock", 184, Rarity.UNCOMMON, mage.cards.t.TuknirDeathlock.class));
- cards.add(new SetCardInfo("Urborg", 214, Rarity.UNCOMMON, mage.cards.u.Urborg.class));
- cards.add(new SetCardInfo("Vaevictis Asmadi", 185, Rarity.RARE, mage.cards.v.VaevictisAsmadi.class));
- cards.add(new SetCardInfo("Volcanic Island", 215, Rarity.RARE, mage.cards.v.VolcanicIsland.class));
- cards.add(new SetCardInfo("Wall of Light", 27, Rarity.COMMON, mage.cards.w.WallOfLight.class));
- cards.add(new SetCardInfo("Wandering Mage", 186, Rarity.RARE, mage.cards.w.WanderingMage.class));
- cards.add(new SetCardInfo("Wei Elite Companions", 79, Rarity.COMMON, mage.cards.w.WeiEliteCompanions.class));
- cards.add(new SetCardInfo("Wei Infantry", 80, Rarity.COMMON, mage.cards.w.WeiInfantry.class));
- cards.add(new SetCardInfo("Wei Night Raiders", 81, Rarity.UNCOMMON, mage.cards.w.WeiNightRaiders.class));
- cards.add(new SetCardInfo("Wei Strike Force", 82, Rarity.COMMON, mage.cards.w.WeiStrikeForce.class));
- cards.add(new SetCardInfo("Willow Priestess", 138, Rarity.UNCOMMON, mage.cards.w.WillowPriestess.class));
- cards.add(new SetCardInfo("Willow Satyr", 139, Rarity.RARE, mage.cards.w.WillowSatyr.class));
- cards.add(new SetCardInfo("Wormwood Treefolk", 140, Rarity.UNCOMMON, mage.cards.w.WormwoodTreefolk.class));
- cards.add(new SetCardInfo("Wu Elite Cavalry", 54, Rarity.COMMON, mage.cards.w.WuEliteCavalry.class));
- cards.add(new SetCardInfo("Wu Longbowman", 55, Rarity.COMMON, mage.cards.w.WuLongbowman.class));
- cards.add(new SetCardInfo("Wu Warship", 56, Rarity.COMMON, mage.cards.w.WuWarship.class));
- cards.add(new SetCardInfo("Xiahou Dun, the One-Eyed", 83, Rarity.UNCOMMON, mage.cards.x.XiahouDunTheOneEyed.class));
- cards.add(new SetCardInfo("Xira Arien", 187, Rarity.RARE, mage.cards.x.XiraArien.class));
- cards.add(new SetCardInfo("Young Wei Recruits", 84, Rarity.COMMON, mage.cards.y.YoungWeiRecruits.class));
- cards.add(new SetCardInfo("Zhang Fei, Fierce Warrior", 28, Rarity.UNCOMMON, mage.cards.z.ZhangFeiFierceWarrior.class));
- cards.add(new SetCardInfo("Zodiac Dragon", 112, Rarity.RARE, mage.cards.z.ZodiacDragon.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.cards.f.FeveredStrength;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class MastersEditionIII extends ExpansionSet {
+
+ private static final MastersEditionIII instance = new MastersEditionIII();
+
+ public static MastersEditionIII getInstance() {
+ return instance;
+ }
+
+ private MastersEditionIII() {
+ super("Masters Edition III", "ME3", ExpansionSet.buildDate(2009, 9, 7), SetType.MAGIC_ONLINE);
+ this.hasBasicLands = true;
+ this.hasBoosters = true;
+ this.numBoosterLands = 1;
+ this.numBoosterCommon = 10;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Active Volcano", 85, Rarity.UNCOMMON, mage.cards.a.ActiveVolcano.class));
+ cards.add(new SetCardInfo("Akron Legionnaire", 1, Rarity.RARE, mage.cards.a.AkronLegionnaire.class));
+ cards.add(new SetCardInfo("Alabaster Potion", 2, Rarity.UNCOMMON, mage.cards.a.AlabasterPotion.class));
+ cards.add(new SetCardInfo("All Hallow's Eve", 57, Rarity.RARE, mage.cards.a.AllHallowsEve.class));
+ cards.add(new SetCardInfo("Amrou Kithkin", 3, Rarity.COMMON, mage.cards.a.AmrouKithkin.class));
+ cards.add(new SetCardInfo("Anaba Ancestor", 86, Rarity.COMMON, mage.cards.a.AnabaAncestor.class));
+ cards.add(new SetCardInfo("Anaba Spirit Crafter", 87, Rarity.COMMON, mage.cards.a.AnabaSpiritCrafter.class));
+ cards.add(new SetCardInfo("Angus Mackenzie", 141, Rarity.RARE, mage.cards.a.AngusMackenzie.class));
+ cards.add(new SetCardInfo("Arboria", 113, Rarity.RARE, mage.cards.a.Arboria.class));
+ cards.add(new SetCardInfo("Arcades Sabboth", 142, Rarity.RARE, mage.cards.a.ArcadesSabboth.class));
+ cards.add(new SetCardInfo("Arena of the Ancients", 188, Rarity.RARE, mage.cards.a.ArenaOfTheAncients.class));
+ cards.add(new SetCardInfo("Ashes to Ashes", 58, Rarity.UNCOMMON, mage.cards.a.AshesToAshes.class));
+ cards.add(new SetCardInfo("Astrolabe", 189, Rarity.COMMON, mage.cards.a.Astrolabe.class));
+ cards.add(new SetCardInfo("Axelrod Gunnarson", 143, Rarity.UNCOMMON, mage.cards.a.AxelrodGunnarson.class));
+ cards.add(new SetCardInfo("Banshee", 59, Rarity.UNCOMMON, mage.cards.b.Banshee.class));
+ cards.add(new SetCardInfo("Barktooth Warbeard", 144, Rarity.COMMON, mage.cards.b.BarktoothWarbeard.class));
+ cards.add(new SetCardInfo("Barl's Cage", 190, Rarity.RARE, mage.cards.b.BarlsCage.class));
+ cards.add(new SetCardInfo("Bartel Runeaxe", 145, Rarity.UNCOMMON, mage.cards.b.BartelRuneaxe.class));
+ cards.add(new SetCardInfo("Bayou", 204, Rarity.RARE, mage.cards.b.Bayou.class));
+ cards.add(new SetCardInfo("Bazaar of Baghdad", 205, Rarity.RARE, mage.cards.b.BazaarOfBaghdad.class));
+ cards.add(new SetCardInfo("Black Vise", 191, Rarity.RARE, mage.cards.b.BlackVise.class));
+ cards.add(new SetCardInfo("Blood Lust", 88, Rarity.COMMON, mage.cards.b.BloodLust.class));
+ cards.add(new SetCardInfo("Bone Flute", 192, Rarity.COMMON, mage.cards.b.BoneFlute.class));
+ cards.add(new SetCardInfo("Boomerang", 30, Rarity.COMMON, mage.cards.b.Boomerang.class));
+ cards.add(new SetCardInfo("Boris Devilboon", 146, Rarity.UNCOMMON, mage.cards.b.BorisDevilboon.class));
+ cards.add(new SetCardInfo("Borrowing 100,000 Arrows", 31, Rarity.UNCOMMON, mage.cards.b.Borrowing100000Arrows.class));
+ cards.add(new SetCardInfo("Brilliant Plan", 32, Rarity.COMMON, mage.cards.b.BrilliantPlan.class));
+ cards.add(new SetCardInfo("Burning of Xinye", 89, Rarity.RARE, mage.cards.b.BurningOfXinye.class));
+ cards.add(new SetCardInfo("Call to Arms", 4, Rarity.UNCOMMON, mage.cards.c.CallToArms.class));
+ cards.add(new SetCardInfo("Capture of Jingzhou", 33, Rarity.RARE, mage.cards.c.CaptureOfJingzhou.class));
+ cards.add(new SetCardInfo("Carrion Ants", 60, Rarity.UNCOMMON, mage.cards.c.CarrionAnts.class));
+ cards.add(new SetCardInfo("Chain Lightning", 90, Rarity.COMMON, mage.cards.c.ChainLightning.class));
+ cards.add(new SetCardInfo("Chromium", 147, Rarity.RARE, mage.cards.c.Chromium.class));
+ cards.add(new SetCardInfo("Cinder Storm", 91, Rarity.UNCOMMON, mage.cards.c.CinderStorm.class));
+ cards.add(new SetCardInfo("City of Shadows", 206, Rarity.RARE, mage.cards.c.CityOfShadows.class));
+ cards.add(new SetCardInfo("Cleanse", 5, Rarity.RARE, mage.cards.c.Cleanse.class));
+ cards.add(new SetCardInfo("Coal Golem", 193, Rarity.COMMON, mage.cards.c.CoalGolem.class));
+ cards.add(new SetCardInfo("Concordant Crossroads", 114, Rarity.RARE, mage.cards.c.ConcordantCrossroads.class));
+ cards.add(new SetCardInfo("Corrupt Eunuchs", 92, Rarity.UNCOMMON, mage.cards.c.CorruptEunuchs.class));
+ cards.add(new SetCardInfo("Cosmic Horror", 61, Rarity.RARE, mage.cards.c.CosmicHorror.class));
+ cards.add(new SetCardInfo("Crimson Kobolds", 93, Rarity.COMMON, mage.cards.c.CrimsonKobolds.class));
+ cards.add(new SetCardInfo("Crimson Manticore", 94, Rarity.UNCOMMON, mage.cards.c.CrimsonManticore.class));
+ cards.add(new SetCardInfo("Dance of Many", 34, Rarity.UNCOMMON, mage.cards.d.DanceOfMany.class));
+ cards.add(new SetCardInfo("D'Avenant Archer", 6, Rarity.COMMON, mage.cards.d.DAvenantArcher.class));
+ cards.add(new SetCardInfo("Demonic Torment", 62, Rarity.COMMON, mage.cards.d.DemonicTorment.class));
+ cards.add(new SetCardInfo("Desert Twister", 115, Rarity.UNCOMMON, mage.cards.d.DesertTwister.class));
+ cards.add(new SetCardInfo("Desperate Charge", 63, Rarity.COMMON, mage.cards.d.DesperateCharge.class));
+ cards.add(new SetCardInfo("Didgeridoo", 194, Rarity.UNCOMMON, mage.cards.d.Didgeridoo.class));
+ cards.add(new SetCardInfo("Disenchant", 7, Rarity.COMMON, mage.cards.d.Disenchant.class));
+ cards.add(new SetCardInfo("Disharmony", 95, Rarity.UNCOMMON, mage.cards.d.Disharmony.class));
+ cards.add(new SetCardInfo("Divine Intervention", 8, Rarity.RARE, mage.cards.d.DivineIntervention.class));
+ cards.add(new SetCardInfo("Dong Zhou, the Tyrant", 96, Rarity.RARE, mage.cards.d.DongZhouTheTyrant.class));
+ cards.add(new SetCardInfo("Eightfold Maze", 9, Rarity.UNCOMMON, mage.cards.e.EightfoldMaze.class));
+ cards.add(new SetCardInfo("Elves of Deep Shadow", 116, Rarity.COMMON, mage.cards.e.ElvesOfDeepShadow.class));
+ cards.add(new SetCardInfo("Evil Presence", 64, Rarity.COMMON, mage.cards.e.EvilPresence.class));
+ cards.add(new SetCardInfo("Exorcist", 10, Rarity.UNCOMMON, mage.cards.e.Exorcist.class));
+ cards.add(new SetCardInfo("Faerie Noble", 117, Rarity.UNCOMMON, mage.cards.f.FaerieNoble.class));
+ cards.add(new SetCardInfo("False Defeat", 11, Rarity.UNCOMMON, mage.cards.f.FalseDefeat.class));
+ cards.add(new SetCardInfo("Famine", 65, Rarity.UNCOMMON, mage.cards.f.Famine.class));
+ cards.add(new SetCardInfo("Fellwar Stone", 195, Rarity.COMMON, mage.cards.f.FellwarStone.class));
+ cards.add(new SetCardInfo("Fevered Strength", 66, Rarity.COMMON, FeveredStrength.class));
+ cards.add(new SetCardInfo("Fire Ambush", 97, Rarity.COMMON, mage.cards.f.FireAmbush.class));
+ cards.add(new SetCardInfo("Fire Drake", 98, Rarity.COMMON, mage.cards.f.FireDrake.class));
+ cards.add(new SetCardInfo("Fire Sprites", 118, Rarity.COMMON, mage.cards.f.FireSprites.class));
+ cards.add(new SetCardInfo("Flash Flood", 35, Rarity.UNCOMMON, mage.cards.f.FlashFlood.class));
+ cards.add(new SetCardInfo("Forced Retreat", 37, Rarity.COMMON, mage.cards.f.ForcedRetreat.class));
+ cards.add(new SetCardInfo("Force Spike", 36, Rarity.COMMON, mage.cards.f.ForceSpike.class));
+ cards.add(new SetCardInfo("Forest", 228, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 229, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 230, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Frost Giant", 101, Rarity.UNCOMMON, mage.cards.f.FrostGiant.class));
+ cards.add(new SetCardInfo("Gabriel Angelfire", 148, Rarity.RARE, mage.cards.g.GabrielAngelfire.class));
+ cards.add(new SetCardInfo("Gaea's Touch", 120, Rarity.UNCOMMON, mage.cards.g.GaeasTouch.class));
+ cards.add(new SetCardInfo("Gauntlets of Chaos", 196, Rarity.RARE, mage.cards.g.GauntletsOfChaos.class));
+ cards.add(new SetCardInfo("Ghostly Visit", 67, Rarity.COMMON, mage.cards.g.GhostlyVisit.class));
+ cards.add(new SetCardInfo("Ghosts of the Damned", 68, Rarity.COMMON, mage.cards.g.GhostsOfTheDamned.class));
+ cards.add(new SetCardInfo("Giant Growth", 121, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
+ cards.add(new SetCardInfo("Grim Tutor", 69, Rarity.RARE, mage.cards.g.GrimTutor.class));
+ cards.add(new SetCardInfo("Guan Yu's 1,000-Li March", 13, Rarity.RARE, mage.cards.g.GuanYus1000LiMarch.class));
+ cards.add(new SetCardInfo("Guan Yu, Sainted Warrior", 12, Rarity.UNCOMMON, mage.cards.g.GuanYuSaintedWarrior.class));
+ cards.add(new SetCardInfo("Gwendlyn Di Corci", 149, Rarity.RARE, mage.cards.g.GwendlynDiCorci.class));
+ cards.add(new SetCardInfo("Halfdane", 150, Rarity.RARE, mage.cards.h.Halfdane.class));
+ cards.add(new SetCardInfo("Hammerheim", 207, Rarity.UNCOMMON, mage.cards.h.Hammerheim.class));
+ cards.add(new SetCardInfo("Hazezon Tamar", 151, Rarity.RARE, mage.cards.h.HazezonTamar.class));
+ cards.add(new SetCardInfo("Heal", 14, Rarity.COMMON, mage.cards.h.Heal.class));
+ cards.add(new SetCardInfo("Heavy Fog", 122, Rarity.COMMON, mage.cards.h.HeavyFog.class));
+ cards.add(new SetCardInfo("Hellfire", 70, Rarity.RARE, mage.cards.h.Hellfire.class));
+ cards.add(new SetCardInfo("Hua Tuo, Honored Physician", 123, Rarity.RARE, mage.cards.h.HuaTuoHonoredPhysician.class));
+ cards.add(new SetCardInfo("Hunding Gjornersen", 152, Rarity.UNCOMMON, mage.cards.h.HundingGjornersen.class));
+ cards.add(new SetCardInfo("Hunting Cheetah", 124, Rarity.COMMON, mage.cards.h.HuntingCheetah.class));
+ cards.add(new SetCardInfo("Hurloon Minotaur", 102, Rarity.COMMON, mage.cards.h.HurloonMinotaur.class));
+ cards.add(new SetCardInfo("Immolation", 103, Rarity.COMMON, mage.cards.i.Immolation.class));
+ cards.add(new SetCardInfo("Infuse", 38, Rarity.COMMON, mage.cards.i.Infuse.class));
+ cards.add(new SetCardInfo("Island", 219, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 220, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 221, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ivory Guardians", 15, Rarity.UNCOMMON, mage.cards.i.IvoryGuardians.class));
+ cards.add(new SetCardInfo("Jedit Ojanen", 153, Rarity.COMMON, mage.cards.j.JeditOjanen.class));
+ cards.add(new SetCardInfo("Jerrard of the Closed Fist", 154, Rarity.COMMON, mage.cards.j.JerrardOfTheClosedFist.class));
+ cards.add(new SetCardInfo("Jungle Lion", 125, Rarity.COMMON, mage.cards.j.JungleLion.class));
+ cards.add(new SetCardInfo("Karakas", 208, Rarity.RARE, mage.cards.k.Karakas.class));
+ cards.add(new SetCardInfo("Kei Takahashi", 155, Rarity.UNCOMMON, mage.cards.k.KeiTakahashi.class));
+ cards.add(new SetCardInfo("Killer Bees", 126, Rarity.UNCOMMON, mage.cards.k.KillerBees.class));
+ cards.add(new SetCardInfo("Kjeldoran Frostbeast", 156, Rarity.UNCOMMON, mage.cards.k.KjeldoranFrostbeast.class));
+ cards.add(new SetCardInfo("Kobold Drill Sergeant", 104, Rarity.UNCOMMON, mage.cards.k.KoboldDrillSergeant.class));
+ cards.add(new SetCardInfo("Kobold Overlord", 105, Rarity.UNCOMMON, mage.cards.k.KoboldOverlord.class));
+ cards.add(new SetCardInfo("Kobolds of Kher Keep", 107, Rarity.COMMON, mage.cards.k.KoboldsOfKherKeep.class));
+ cards.add(new SetCardInfo("Kobold Taskmaster", 106, Rarity.COMMON, mage.cards.k.KoboldTaskmaster.class));
+ cards.add(new SetCardInfo("Kongming, 'Sleeping Dragon'", 16, Rarity.RARE, mage.cards.k.KongmingSleepingDragon.class));
+ cards.add(new SetCardInfo("Labyrinth Minotaur", 39, Rarity.COMMON, mage.cards.l.LabyrinthMinotaur.class));
+ cards.add(new SetCardInfo("Lady Caleria", 157, Rarity.UNCOMMON, mage.cards.l.LadyCaleria.class));
+ cards.add(new SetCardInfo("Lady Evangela", 158, Rarity.UNCOMMON, mage.cards.l.LadyEvangela.class));
+ cards.add(new SetCardInfo("Lady Orca", 159, Rarity.COMMON, mage.cards.l.LadyOrca.class));
+ cards.add(new SetCardInfo("Land Equilibrium", 40, Rarity.RARE, mage.cards.l.LandEquilibrium.class));
+ cards.add(new SetCardInfo("Land Tax", 17, Rarity.RARE, mage.cards.l.LandTax.class));
+ cards.add(new SetCardInfo("Life Chisel", 199, Rarity.RARE, mage.cards.l.LifeChisel.class));
+ cards.add(new SetCardInfo("Lightning Blow", 18, Rarity.COMMON, mage.cards.l.LightningBlow.class));
+ cards.add(new SetCardInfo("Liu Bei, Lord of Shu", 19, Rarity.RARE, mage.cards.l.LiuBeiLordOfShu.class));
+ cards.add(new SetCardInfo("Living Plane", 127, Rarity.RARE, mage.cards.l.LivingPlane.class));
+ cards.add(new SetCardInfo("Livonya Silone", 160, Rarity.UNCOMMON, mage.cards.l.LivonyaSilone.class));
+ cards.add(new SetCardInfo("Loyal Retainers", 20, Rarity.UNCOMMON, mage.cards.l.LoyalRetainers.class));
+ cards.add(new SetCardInfo("Lu Bu, Master-at-Arms", 108, Rarity.RARE, mage.cards.l.LuBuMasterAtArms.class));
+ cards.add(new SetCardInfo("Lu Meng, Wu General", 41, Rarity.UNCOMMON, mage.cards.l.LuMengWuGeneral.class));
+ cards.add(new SetCardInfo("Lu Xun, Scholar General", 42, Rarity.UNCOMMON, mage.cards.l.LuXunScholarGeneral.class));
+ cards.add(new SetCardInfo("Mana Drain", 43, Rarity.RARE, mage.cards.m.ManaDrain.class));
+ cards.add(new SetCardInfo("Mana Vortex", 44, Rarity.RARE, mage.cards.m.ManaVortex.class));
+ cards.add(new SetCardInfo("Marhault Elsdragon", 161, Rarity.UNCOMMON, mage.cards.m.MarhaultElsdragon.class));
+ cards.add(new SetCardInfo("Meng Huo, Barbarian King", 128, Rarity.RARE, mage.cards.m.MengHuoBarbarianKing.class));
+ cards.add(new SetCardInfo("Meng Huo's Horde", 129, Rarity.COMMON, mage.cards.m.MengHuosHorde.class));
+ cards.add(new SetCardInfo("Mind Twist", 72, Rarity.RARE, mage.cards.m.MindTwist.class));
+ cards.add(new SetCardInfo("Misfortune's Gain", 21, Rarity.COMMON, mage.cards.m.MisfortunesGain.class));
+ cards.add(new SetCardInfo("Mountain", 225, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 226, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 227, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Nebuchadnezzar", 162, Rarity.UNCOMMON, mage.cards.n.Nebuchadnezzar.class));
+ cards.add(new SetCardInfo("Nether Void", 73, Rarity.RARE, mage.cards.n.NetherVoid.class));
+ cards.add(new SetCardInfo("Nicol Bolas", 163, Rarity.RARE, mage.cards.n.NicolBolas.class));
+ cards.add(new SetCardInfo("Nova Pentacle", 200, Rarity.RARE, mage.cards.n.NovaPentacle.class));
+ cards.add(new SetCardInfo("Old Man of the Sea", 45, Rarity.RARE, mage.cards.o.OldManOfTheSea.class));
+ cards.add(new SetCardInfo("Palladia-Mors", 164, Rarity.RARE, mage.cards.p.PalladiaMors.class));
+ cards.add(new SetCardInfo("Pavel Maliki", 165, Rarity.UNCOMMON, mage.cards.p.PavelMaliki.class));
+ cards.add(new SetCardInfo("Peach Garden Oath", 22, Rarity.COMMON, mage.cards.p.PeachGardenOath.class));
+ cards.add(new SetCardInfo("Plains", 216, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 217, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 218, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plateau", 209, Rarity.RARE, mage.cards.p.Plateau.class));
+ cards.add(new SetCardInfo("Princess Lucrezia", 166, Rarity.UNCOMMON, mage.cards.p.PrincessLucrezia.class));
+ cards.add(new SetCardInfo("Raging Minotaur", 109, Rarity.COMMON, mage.cards.r.RagingMinotaur.class));
+ cards.add(new SetCardInfo("Ragnar", 167, Rarity.UNCOMMON, mage.cards.r.Ragnar.class));
+ cards.add(new SetCardInfo("Ramirez DePietro", 168, Rarity.COMMON, mage.cards.r.RamirezDePietro.class));
+ cards.add(new SetCardInfo("Ramses Overdark", 169, Rarity.UNCOMMON, mage.cards.r.RamsesOverdark.class));
+ cards.add(new SetCardInfo("Rasputin Dreamweaver", 170, Rarity.RARE, mage.cards.r.RasputinDreamweaver.class));
+ cards.add(new SetCardInfo("Recall", 46, Rarity.UNCOMMON, mage.cards.r.Recall.class));
+ cards.add(new SetCardInfo("Reincarnation", 130, Rarity.UNCOMMON, mage.cards.r.Reincarnation.class));
+ cards.add(new SetCardInfo("Remove Soul", 47, Rarity.COMMON, mage.cards.r.RemoveSoul.class));
+ cards.add(new SetCardInfo("Reset", 48, Rarity.RARE, mage.cards.r.Reset.class));
+ cards.add(new SetCardInfo("Reveka, Wizard Savant", 49, Rarity.UNCOMMON, mage.cards.r.RevekaWizardSavant.class));
+ cards.add(new SetCardInfo("Riding the Dilu Horse", 131, Rarity.UNCOMMON, mage.cards.r.RidingTheDiluHorse.class));
+ cards.add(new SetCardInfo("Riven Turnbull", 171, Rarity.UNCOMMON, mage.cards.r.RivenTurnbull.class));
+ cards.add(new SetCardInfo("Rohgahh of Kher Keep", 172, Rarity.RARE, mage.cards.r.RohgahhOfKherKeep.class));
+ cards.add(new SetCardInfo("Rolling Earthquake", 110, Rarity.RARE, mage.cards.r.RollingEarthquake.class));
+ cards.add(new SetCardInfo("Rubinia Soulsinger", 173, Rarity.RARE, mage.cards.r.RubiniaSoulsinger.class));
+ cards.add(new SetCardInfo("Scrubland", 210, Rarity.RARE, mage.cards.s.Scrubland.class));
+ cards.add(new SetCardInfo("Scryb Sprites", 132, Rarity.COMMON, mage.cards.s.ScrybSprites.class));
+ cards.add(new SetCardInfo("Shu Cavalry", 23, Rarity.COMMON, mage.cards.s.ShuCavalry.class));
+ cards.add(new SetCardInfo("Shu Elite Companions", 24, Rarity.COMMON, mage.cards.s.ShuEliteCompanions.class));
+ cards.add(new SetCardInfo("Shu General", 25, Rarity.COMMON, mage.cards.s.ShuGeneral.class));
+ cards.add(new SetCardInfo("Shu Soldier-Farmers", 26, Rarity.COMMON, mage.cards.s.ShuSoldierFarmers.class));
+ cards.add(new SetCardInfo("Sir Shandlar of Eberyn", 174, Rarity.COMMON, mage.cards.s.SirShandlarOfEberyn.class));
+ cards.add(new SetCardInfo("Sivitri Scarzam", 175, Rarity.COMMON, mage.cards.s.SivitriScarzam.class));
+ cards.add(new SetCardInfo("Slashing Tiger", 133, Rarity.COMMON, mage.cards.s.SlashingTiger.class));
+ cards.add(new SetCardInfo("Sol Grail", 201, Rarity.COMMON, mage.cards.s.SolGrail.class));
+ cards.add(new SetCardInfo("Sorrow's Path", 211, Rarity.RARE, mage.cards.s.SorrowsPath.class));
+ cards.add(new SetCardInfo("Spirit Shackle", 74, Rarity.COMMON, mage.cards.s.SpiritShackle.class));
+ cards.add(new SetCardInfo("Spoils of Victory", 134, Rarity.COMMON, mage.cards.s.SpoilsOfVictory.class));
+ cards.add(new SetCardInfo("Stangg", 177, Rarity.UNCOMMON, mage.cards.s.Stangg.class));
+ cards.add(new SetCardInfo("Stolen Grain", 75, Rarity.UNCOMMON, mage.cards.s.StolenGrain.class));
+ cards.add(new SetCardInfo("Storm World", 111, Rarity.RARE, mage.cards.s.StormWorld.class));
+ cards.add(new SetCardInfo("Strategic Planning", 51, Rarity.COMMON, mage.cards.s.StrategicPlanning.class));
+ cards.add(new SetCardInfo("Sunastian Falconer", 178, Rarity.UNCOMMON, mage.cards.s.SunastianFalconer.class));
+ cards.add(new SetCardInfo("Sun Ce, Young Conquerer", 52, Rarity.UNCOMMON, mage.cards.s.SunCeYoungConquerer.class));
+ cards.add(new SetCardInfo("Sun Quan, Lord of Wu", 53, Rarity.RARE, mage.cards.s.SunQuanLordOfWu.class));
+ cards.add(new SetCardInfo("Swamp", 222, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 223, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 224, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Sword of the Ages", 202, Rarity.RARE, mage.cards.s.SwordOfTheAges.class));
+ cards.add(new SetCardInfo("Tetsuo Umezawa", 179, Rarity.RARE, mage.cards.t.TetsuoUmezawa.class));
+ cards.add(new SetCardInfo("The Abyss", 77, Rarity.RARE, mage.cards.t.TheAbyss.class));
+ cards.add(new SetCardInfo("The Lady of the Mountain", 180, Rarity.COMMON, mage.cards.t.TheLadyOfTheMountain.class));
+ cards.add(new SetCardInfo("The Tabernacle at Pendrell Vale", 212, Rarity.RARE, mage.cards.t.TheTabernacleAtPendrellVale.class));
+ cards.add(new SetCardInfo("The Wretched", 78, Rarity.UNCOMMON, mage.cards.t.TheWretched.class));
+ cards.add(new SetCardInfo("Three Visits", 135, Rarity.COMMON, mage.cards.t.ThreeVisits.class));
+ cards.add(new SetCardInfo("Tobias Andrion", 181, Rarity.COMMON, mage.cards.t.TobiasAndrion.class));
+ cards.add(new SetCardInfo("Torsten Von Ursus", 183, Rarity.COMMON, mage.cards.t.TorstenVonUrsus.class));
+ cards.add(new SetCardInfo("Tor Wauki", 182, Rarity.UNCOMMON, mage.cards.t.TorWauki.class));
+ cards.add(new SetCardInfo("Tracker", 136, Rarity.UNCOMMON, mage.cards.t.Tracker.class));
+ cards.add(new SetCardInfo("Trip Wire", 137, Rarity.COMMON, mage.cards.t.TripWire.class));
+ cards.add(new SetCardInfo("Tropical Island", 213, Rarity.RARE, mage.cards.t.TropicalIsland.class));
+ cards.add(new SetCardInfo("Tuknir Deathlock", 184, Rarity.UNCOMMON, mage.cards.t.TuknirDeathlock.class));
+ cards.add(new SetCardInfo("Urborg", 214, Rarity.UNCOMMON, mage.cards.u.Urborg.class));
+ cards.add(new SetCardInfo("Vaevictis Asmadi", 185, Rarity.RARE, mage.cards.v.VaevictisAsmadi.class));
+ cards.add(new SetCardInfo("Volcanic Island", 215, Rarity.RARE, mage.cards.v.VolcanicIsland.class));
+ cards.add(new SetCardInfo("Wall of Light", 27, Rarity.COMMON, mage.cards.w.WallOfLight.class));
+ cards.add(new SetCardInfo("Wandering Mage", 186, Rarity.RARE, mage.cards.w.WanderingMage.class));
+ cards.add(new SetCardInfo("Wei Elite Companions", 79, Rarity.COMMON, mage.cards.w.WeiEliteCompanions.class));
+ cards.add(new SetCardInfo("Wei Infantry", 80, Rarity.COMMON, mage.cards.w.WeiInfantry.class));
+ cards.add(new SetCardInfo("Wei Night Raiders", 81, Rarity.UNCOMMON, mage.cards.w.WeiNightRaiders.class));
+ cards.add(new SetCardInfo("Wei Strike Force", 82, Rarity.COMMON, mage.cards.w.WeiStrikeForce.class));
+ cards.add(new SetCardInfo("Willow Priestess", 138, Rarity.UNCOMMON, mage.cards.w.WillowPriestess.class));
+ cards.add(new SetCardInfo("Willow Satyr", 139, Rarity.RARE, mage.cards.w.WillowSatyr.class));
+ cards.add(new SetCardInfo("Wormwood Treefolk", 140, Rarity.UNCOMMON, mage.cards.w.WormwoodTreefolk.class));
+ cards.add(new SetCardInfo("Wu Elite Cavalry", 54, Rarity.COMMON, mage.cards.w.WuEliteCavalry.class));
+ cards.add(new SetCardInfo("Wu Longbowman", 55, Rarity.COMMON, mage.cards.w.WuLongbowman.class));
+ cards.add(new SetCardInfo("Wu Warship", 56, Rarity.COMMON, mage.cards.w.WuWarship.class));
+ cards.add(new SetCardInfo("Xiahou Dun, the One-Eyed", 83, Rarity.UNCOMMON, mage.cards.x.XiahouDunTheOneEyed.class));
+ cards.add(new SetCardInfo("Xira Arien", 187, Rarity.RARE, mage.cards.x.XiraArien.class));
+ cards.add(new SetCardInfo("Young Wei Recruits", 84, Rarity.COMMON, mage.cards.y.YoungWeiRecruits.class));
+ cards.add(new SetCardInfo("Zhang Fei, Fierce Warrior", 28, Rarity.UNCOMMON, mage.cards.z.ZhangFeiFierceWarrior.class));
+ cards.add(new SetCardInfo("Zodiac Dragon", 112, Rarity.RARE, mage.cards.z.ZodiacDragon.class));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/MastersEditionIV.java b/Mage.Sets/src/mage/sets/MastersEditionIV.java
index 41f34f221f4..aa84aa7e5d5 100644
--- a/Mage.Sets/src/mage/sets/MastersEditionIV.java
+++ b/Mage.Sets/src/mage/sets/MastersEditionIV.java
@@ -1,346 +1,346 @@
-/*
- * 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.cards.a.AesthirGlider;
-import mage.cards.e.EliteCatWarrior;
-import mage.cards.repository.CardCriteria;
-import mage.cards.repository.CardInfo;
-import mage.cards.repository.CardRepository;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author LevelX2
- */
-public class MastersEditionIV extends ExpansionSet {
-
- private static final MastersEditionIV instance = new MastersEditionIV();
-
- public static MastersEditionIV getInstance() {
- return instance;
- }
-
- protected final List savedSpecialLand = new ArrayList<>();
-
- private MastersEditionIV() {
- super("Masters Edition IV", "ME4", ExpansionSet.buildDate(2011, 1, 10), SetType.MAGIC_ONLINE);
- this.hasBasicLands = false;
- this.hasBoosters = true;
- this.numBoosterLands = 1;
- this.numBoosterCommon = 10;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- this.ratioBoosterSpecialLand = 1; // replace all basic lands
- cards.add(new SetCardInfo("Acid Rain", 36, Rarity.RARE, mage.cards.a.AcidRain.class));
- cards.add(new SetCardInfo("Aesthir Glider", 176, Rarity.COMMON, AesthirGlider.class));
- cards.add(new SetCardInfo("Air Elemental", 37, Rarity.UNCOMMON, mage.cards.a.AirElemental.class));
- cards.add(new SetCardInfo("Al-abara's Carpet", 177, Rarity.RARE, mage.cards.a.AlAbarasCarpet.class));
- cards.add(new SetCardInfo("Alaborn Musketeer", 1, Rarity.COMMON, mage.cards.a.AlabornMusketeer.class));
- cards.add(new SetCardInfo("Alaborn Trooper", 2, Rarity.COMMON, mage.cards.a.AlabornTrooper.class));
- cards.add(new SetCardInfo("Aladdin", 106, Rarity.RARE, mage.cards.a.Aladdin.class));
- cards.add(new SetCardInfo("Alchor's Tomb", 178, Rarity.RARE, mage.cards.a.AlchorsTomb.class));
- cards.add(new SetCardInfo("Ali from Cairo", 107, Rarity.RARE, mage.cards.a.AliFromCairo.class));
- cards.add(new SetCardInfo("Alluring Scent", 141, Rarity.COMMON, mage.cards.a.AlluringScent.class));
- cards.add(new SetCardInfo("Amulet of Kroog", 179, Rarity.COMMON, mage.cards.a.AmuletOfKroog.class));
- cards.add(new SetCardInfo("Angelic Voices", 3, Rarity.UNCOMMON, mage.cards.a.AngelicVoices.class));
- cards.add(new SetCardInfo("Animate Artifact", 38, Rarity.UNCOMMON, mage.cards.a.AnimateArtifact.class));
- cards.add(new SetCardInfo("Argivian Blacksmith", 4, Rarity.UNCOMMON, mage.cards.a.ArgivianBlacksmith.class));
- cards.add(new SetCardInfo("Argothian Pixies", 142, Rarity.COMMON, mage.cards.a.ArgothianPixies.class));
- cards.add(new SetCardInfo("Argothian Treefolk", 143, Rarity.UNCOMMON, mage.cards.a.ArgothianTreefolk.class));
- cards.add(new SetCardInfo("Armageddon Clock", 180, Rarity.RARE, mage.cards.a.ArmageddonClock.class));
- cards.add(new SetCardInfo("Armageddon", 5, Rarity.RARE, mage.cards.a.Armageddon.class));
- cards.add(new SetCardInfo("Artifact Blast", 108, Rarity.COMMON, mage.cards.a.ArtifactBlast.class));
- cards.add(new SetCardInfo("Ashnod's Altar", 181, Rarity.RARE, mage.cards.a.AshnodsAltar.class));
- cards.add(new SetCardInfo("Atog", 109, Rarity.COMMON, mage.cards.a.Atog.class));
- cards.add(new SetCardInfo("Badlands", 241, Rarity.RARE, mage.cards.b.Badlands.class));
- cards.add(new SetCardInfo("Balance", 6, Rarity.RARE, mage.cards.b.Balance.class));
- cards.add(new SetCardInfo("Basalt Monolith", 182, Rarity.UNCOMMON, mage.cards.b.BasaltMonolith.class));
- cards.add(new SetCardInfo("Bayou", 242, Rarity.RARE, mage.cards.b.Bayou.class));
- cards.add(new SetCardInfo("Bee Sting", 144, Rarity.UNCOMMON, mage.cards.b.BeeSting.class));
- cards.add(new SetCardInfo("Bird Maiden", 110, Rarity.COMMON, mage.cards.b.BirdMaiden.class));
- cards.add(new SetCardInfo("Black Knight", 71, Rarity.UNCOMMON, mage.cards.b.BlackKnight.class));
- cards.add(new SetCardInfo("Blaze of Glory", 7, Rarity.UNCOMMON, mage.cards.b.BlazeOfGlory.class));
- cards.add(new SetCardInfo("Blue Elemental Blast", 39, Rarity.UNCOMMON, mage.cards.b.BlueElementalBlast.class));
- cards.add(new SetCardInfo("Book of Rass", 183, Rarity.UNCOMMON, mage.cards.b.BookOfRass.class));
- cards.add(new SetCardInfo("Bottle of Suleiman", 184, Rarity.RARE, mage.cards.b.BottleOfSuleiman.class));
- cards.add(new SetCardInfo("Braingeyser", 40, Rarity.RARE, mage.cards.b.Braingeyser.class));
- cards.add(new SetCardInfo("Brass Man", 185, Rarity.COMMON, mage.cards.b.BrassMan.class));
- cards.add(new SetCardInfo("Candelabra of Tawnos", 187, Rarity.RARE, mage.cards.c.CandelabraOfTawnos.class));
- cards.add(new SetCardInfo("Celestial Sword", 188, Rarity.UNCOMMON, mage.cards.c.CelestialSword.class));
- cards.add(new SetCardInfo("Champion Lancer", 8, Rarity.RARE, mage.cards.c.ChampionLancer.class));
- cards.add(new SetCardInfo("Channel", 145, Rarity.RARE, mage.cards.c.Channel.class));
- cards.add(new SetCardInfo("Citanul Druid", 146, Rarity.COMMON, mage.cards.c.CitanulDruid.class));
- cards.add(new SetCardInfo("City of Brass", 243, Rarity.RARE, mage.cards.c.CityOfBrass.class));
- cards.add(new SetCardInfo("Clay Statue", 189, Rarity.UNCOMMON, mage.cards.c.ClayStatue.class));
- cards.add(new SetCardInfo("Clockwork Avian", 190, Rarity.UNCOMMON, mage.cards.c.ClockworkAvian.class));
- cards.add(new SetCardInfo("Clockwork Gnomes", 191, Rarity.UNCOMMON, mage.cards.c.ClockworkGnomes.class));
- cards.add(new SetCardInfo("Clockwork Swarm", 192, Rarity.COMMON, mage.cards.c.ClockworkSwarm.class));
- cards.add(new SetCardInfo("Cloud Dragon", 41, Rarity.RARE, mage.cards.c.CloudDragon.class));
- cards.add(new SetCardInfo("Cloud Spirit", 42, Rarity.COMMON, mage.cards.c.CloudSpirit.class));
- cards.add(new SetCardInfo("Colossus of Sardia", 193, Rarity.RARE, mage.cards.c.ColossusOfSardia.class));
- cards.add(new SetCardInfo("Control Magic", 43, Rarity.RARE, mage.cards.c.ControlMagic.class));
- cards.add(new SetCardInfo("Conversion", 9, Rarity.RARE, mage.cards.c.Conversion.class));
- cards.add(new SetCardInfo("Copy Artifact", 44, Rarity.RARE, mage.cards.c.CopyArtifact.class));
- cards.add(new SetCardInfo("Coral Helm", 194, Rarity.UNCOMMON, mage.cards.c.CoralHelm.class));
- cards.add(new SetCardInfo("Counterspell", 45, Rarity.COMMON, mage.cards.c.Counterspell.class));
- cards.add(new SetCardInfo("Crumble", 147, Rarity.COMMON, mage.cards.c.Crumble.class));
- cards.add(new SetCardInfo("Cyclone", 148, Rarity.RARE, mage.cards.c.Cyclone.class));
- cards.add(new SetCardInfo("Cyclopean Mummy", 72, Rarity.COMMON, mage.cards.c.CyclopeanMummy.class));
- cards.add(new SetCardInfo("Cyclopean Tomb", 195, Rarity.RARE, mage.cards.c.CyclopeanTomb.class));
- cards.add(new SetCardInfo("Dakmor Plague", 73, Rarity.UNCOMMON, mage.cards.d.DakmorPlague.class));
- cards.add(new SetCardInfo("Dark Ritual", 74, Rarity.COMMON, mage.cards.d.DarkRitual.class));
- cards.add(new SetCardInfo("Deathcoil Wurm", 149, Rarity.RARE, mage.cards.d.DeathcoilWurm.class));
- cards.add(new SetCardInfo("Deathgrip", 75, Rarity.RARE, mage.cards.d.Deathgrip.class));
- cards.add(new SetCardInfo("Demonic Hordes", 76, Rarity.RARE, mage.cards.d.DemonicHordes.class));
- cards.add(new SetCardInfo("Demonic Tutor", 77, Rarity.RARE, mage.cards.d.DemonicTutor.class));
- cards.add(new SetCardInfo("Detonate", 111, Rarity.UNCOMMON, mage.cards.d.Detonate.class));
- cards.add(new SetCardInfo("Devastation", 112, Rarity.RARE, mage.cards.d.Devastation.class));
- cards.add(new SetCardInfo("Diabolic Machine", 196, Rarity.UNCOMMON, mage.cards.d.DiabolicMachine.class));
- cards.add(new SetCardInfo("Divine Offering", 10, Rarity.COMMON, mage.cards.d.DivineOffering.class));
- cards.add(new SetCardInfo("Dragon Engine", 197, Rarity.COMMON, mage.cards.d.DragonEngine.class));
- cards.add(new SetCardInfo("Drain Power", 46, Rarity.RARE, mage.cards.d.DrainPower.class));
- cards.add(new SetCardInfo("Dread Reaper", 78, Rarity.RARE, mage.cards.d.DreadReaper.class));
- cards.add(new SetCardInfo("Drop of Honey", 150, Rarity.RARE, mage.cards.d.DropOfHoney.class));
- cards.add(new SetCardInfo("Drowned", 47, Rarity.COMMON, mage.cards.d.Drowned.class));
- cards.add(new SetCardInfo("Dust to Dust", 11, Rarity.UNCOMMON, mage.cards.d.DustToDust.class));
- cards.add(new SetCardInfo("Ebon Dragon", 80, Rarity.RARE, mage.cards.e.EbonDragon.class));
- cards.add(new SetCardInfo("Ebony Horse", 198, Rarity.COMMON, mage.cards.e.EbonyHorse.class));
- cards.add(new SetCardInfo("Ebony Rhino", 199, Rarity.COMMON, mage.cards.e.EbonyRhino.class));
- cards.add(new SetCardInfo("Elephant Graveyard", 244, Rarity.UNCOMMON, mage.cards.e.ElephantGraveyard.class));
- cards.add(new SetCardInfo("Elite Cat Warrior", 151, Rarity.COMMON, EliteCatWarrior.class));
- cards.add(new SetCardInfo("Energy Flux", 48, Rarity.UNCOMMON, mage.cards.e.EnergyFlux.class));
- cards.add(new SetCardInfo("Eye for an Eye", 12, Rarity.RARE, mage.cards.e.EyeForAnEye.class));
- cards.add(new SetCardInfo("False Summoning", 49, Rarity.COMMON, mage.cards.f.FalseSummoning.class));
- cards.add(new SetCardInfo("Fastbond", 152, Rarity.RARE, mage.cards.f.Fastbond.class));
- cards.add(new SetCardInfo("Fire Imp", 113, Rarity.UNCOMMON, mage.cards.f.FireImp.class));
- cards.add(new SetCardInfo("Fire Tempest", 114, Rarity.RARE, mage.cards.f.FireTempest.class));
- cards.add(new SetCardInfo("Fireball", 115, Rarity.UNCOMMON, mage.cards.f.Fireball.class));
- cards.add(new SetCardInfo("Floodwater Dam", 200, Rarity.RARE, mage.cards.f.FloodwaterDam.class));
- cards.add(new SetCardInfo("Flying Carpet", 201, Rarity.COMMON, mage.cards.f.FlyingCarpet.class));
- cards.add(new SetCardInfo("Fog", 153, Rarity.COMMON, mage.cards.f.Fog.class));
- cards.add(new SetCardInfo("Force of Nature", 154, Rarity.RARE, mage.cards.f.ForceOfNature.class));
- cards.add(new SetCardInfo("Fork", 116, Rarity.RARE, mage.cards.f.Fork.class));
- cards.add(new SetCardInfo("Foul Spirit", 81, Rarity.COMMON, mage.cards.f.FoulSpirit.class));
- cards.add(new SetCardInfo("Gaea's Avenger", 155, Rarity.UNCOMMON, mage.cards.g.GaeasAvenger.class));
- cards.add(new SetCardInfo("Gate to Phyrexia", 82, Rarity.UNCOMMON, mage.cards.g.GateToPhyrexia.class));
- cards.add(new SetCardInfo("Gauntlet of Might", 202, Rarity.RARE, mage.cards.g.GauntletOfMight.class));
- cards.add(new SetCardInfo("Giant Growth", 156, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
- cards.add(new SetCardInfo("Giant Tortoise", 50, Rarity.COMMON, mage.cards.g.GiantTortoise.class));
- cards.add(new SetCardInfo("Glasses of Urza", 203, Rarity.COMMON, mage.cards.g.GlassesOfUrza.class));
- cards.add(new SetCardInfo("Gloom", 83, Rarity.RARE, mage.cards.g.Gloom.class));
- cards.add(new SetCardInfo("Goblin Bully", 117, Rarity.COMMON, mage.cards.g.GoblinBully.class));
- cards.add(new SetCardInfo("Goblin Cavaliers", 118, Rarity.COMMON, mage.cards.g.GoblinCavaliers.class));
- cards.add(new SetCardInfo("Goblin Caves", 119, Rarity.COMMON, mage.cards.g.GoblinCaves.class));
- cards.add(new SetCardInfo("Goblin Firestarter", 120, Rarity.COMMON, mage.cards.g.GoblinFirestarter.class));
- cards.add(new SetCardInfo("Goblin General", 121, Rarity.UNCOMMON, mage.cards.g.GoblinGeneral.class));
- cards.add(new SetCardInfo("Goblin Shrine", 122, Rarity.COMMON, mage.cards.g.GoblinShrine.class));
- cards.add(new SetCardInfo("Goblin Warrens", 123, Rarity.UNCOMMON, mage.cards.g.GoblinWarrens.class));
- cards.add(new SetCardInfo("Gorilla War Cry", 124, Rarity.COMMON, mage.cards.g.GorillaWarCry.class));
- cards.add(new SetCardInfo("Grapeshot Catapult", 204, Rarity.UNCOMMON, mage.cards.g.GrapeshotCatapult.class));
- cards.add(new SetCardInfo("Gravebind", 84, Rarity.COMMON, mage.cards.g.Gravebind.class));
- cards.add(new SetCardInfo("Guardian Beast", 85, Rarity.RARE, mage.cards.g.GuardianBeast.class));
- cards.add(new SetCardInfo("Harsh Justice", 13, Rarity.RARE, mage.cards.h.HarshJustice.class));
- cards.add(new SetCardInfo("Hasran Ogress", 86, Rarity.COMMON, mage.cards.h.HasranOgress.class));
- cards.add(new SetCardInfo("Healing Salve", 14, Rarity.COMMON, mage.cards.h.HealingSalve.class));
- cards.add(new SetCardInfo("Horn of Deafening", 205, Rarity.UNCOMMON, mage.cards.h.HornOfDeafening.class));
- cards.add(new SetCardInfo("Howl from Beyond", 87, Rarity.COMMON, mage.cards.h.HowlFromBeyond.class));
- cards.add(new SetCardInfo("Ice Cauldron", 206, Rarity.RARE, mage.cards.i.IceCauldron.class));
- cards.add(new SetCardInfo("Icy Manipulator", 207, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class));
- cards.add(new SetCardInfo("In the Eye of Chaos", 51, Rarity.RARE, mage.cards.i.InTheEyeOfChaos.class));
- cards.add(new SetCardInfo("Instill Energy", 157, Rarity.UNCOMMON, mage.cards.i.InstillEnergy.class));
- cards.add(new SetCardInfo("Ironhoof Ox", 158, Rarity.COMMON, mage.cards.i.IronhoofOx.class));
- cards.add(new SetCardInfo("Island Sanctuary", 15, Rarity.RARE, mage.cards.i.IslandSanctuary.class));
- cards.add(new SetCardInfo("Jade Monolith", 208, Rarity.RARE, mage.cards.j.JadeMonolith.class));
- cards.add(new SetCardInfo("Juggernaut", 209, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
- cards.add(new SetCardInfo("Junún Efreet", 88, Rarity.UNCOMMON, mage.cards.j.JununEfreet.class));
- cards.add(new SetCardInfo("Just Fate", 16, Rarity.COMMON, mage.cards.j.JustFate.class));
- cards.add(new SetCardInfo("Kismet", 17, Rarity.RARE, mage.cards.k.Kismet.class));
- cards.add(new SetCardInfo("Kormus Bell", 210, Rarity.RARE, mage.cards.k.KormusBell.class));
- cards.add(new SetCardInfo("Kudzu", 159, Rarity.UNCOMMON, mage.cards.k.Kudzu.class));
- cards.add(new SetCardInfo("Last Chance", 125, Rarity.RARE, mage.cards.l.LastChance.class));
- cards.add(new SetCardInfo("Lava Flow", 126, Rarity.COMMON, mage.cards.l.LavaFlow.class));
- cards.add(new SetCardInfo("Leeches", 18, Rarity.RARE, mage.cards.l.Leeches.class));
- cards.add(new SetCardInfo("Library of Alexandria", 245, Rarity.RARE, mage.cards.l.LibraryOfAlexandria.class));
- cards.add(new SetCardInfo("Library of Leng", 211, Rarity.COMMON, mage.cards.l.LibraryOfLeng.class));
- cards.add(new SetCardInfo("Lich", 89, Rarity.RARE, mage.cards.l.Lich.class));
- cards.add(new SetCardInfo("Lifeforce", 160, Rarity.RARE, mage.cards.l.Lifeforce.class));
- cards.add(new SetCardInfo("Living Lands", 161, Rarity.RARE, mage.cards.l.LivingLands.class));
- cards.add(new SetCardInfo("Living Wall", 212, Rarity.UNCOMMON, mage.cards.l.LivingWall.class));
- cards.add(new SetCardInfo("Mahamoti Djinn", 52, Rarity.RARE, mage.cards.m.MahamotiDjinn.class));
- cards.add(new SetCardInfo("Mana Matrix", 213, Rarity.RARE, mage.cards.m.ManaMatrix.class));
- cards.add(new SetCardInfo("Mana Vault", 214, Rarity.RARE, mage.cards.m.ManaVault.class));
- cards.add(new SetCardInfo("Martyr's Cry", 19, Rarity.RARE, mage.cards.m.MartyrsCry.class));
- cards.add(new SetCardInfo("Martyrs of Korlis", 20, Rarity.UNCOMMON, mage.cards.m.MartyrsOfKorlis.class));
- cards.add(new SetCardInfo("Maze of Ith", 246, Rarity.RARE, mage.cards.m.MazeOfIth.class));
- cards.add(new SetCardInfo("Mightstone", 215, Rarity.COMMON, mage.cards.m.Mightstone.class));
- cards.add(new SetCardInfo("Mijae Djinn", 127, Rarity.RARE, mage.cards.m.MijaeDjinn.class));
- cards.add(new SetCardInfo("Minion of Tevesh Szat", 91, Rarity.RARE, mage.cards.m.MinionOfTeveshSzat.class));
- cards.add(new SetCardInfo("Mishra's Workshop", 247, Rarity.RARE, mage.cards.m.MishrasWorkshop.class));
- cards.add(new SetCardInfo("Mystic Decree", 53, Rarity.UNCOMMON, mage.cards.m.MysticDecree.class));
- cards.add(new SetCardInfo("Naked Singularity", 216, Rarity.RARE, mage.cards.n.NakedSingularity.class));
- cards.add(new SetCardInfo("Oasis", 248, Rarity.COMMON, mage.cards.o.Oasis.class));
- cards.add(new SetCardInfo("Obelisk of Undoing", 217, Rarity.RARE, mage.cards.o.ObeliskOfUndoing.class));
- cards.add(new SetCardInfo("Obsianus Golem", 218, Rarity.COMMON, mage.cards.o.ObsianusGolem.class));
- cards.add(new SetCardInfo("Ogre Taskmaster", 128, Rarity.COMMON, mage.cards.o.OgreTaskmaster.class));
- cards.add(new SetCardInfo("Onulet", 219, Rarity.COMMON, mage.cards.o.Onulet.class));
- cards.add(new SetCardInfo("Orcish Mechanics", 129, Rarity.UNCOMMON, mage.cards.o.OrcishMechanics.class));
- cards.add(new SetCardInfo("Osai Vultures", 21, Rarity.COMMON, mage.cards.o.OsaiVultures.class));
- cards.add(new SetCardInfo("Overwhelming Forces", 92, Rarity.RARE, mage.cards.o.OverwhelmingForces.class));
- cards.add(new SetCardInfo("Owl Familiar", 54, Rarity.COMMON, mage.cards.o.OwlFamiliar.class));
- cards.add(new SetCardInfo("Pentagram of the Ages", 220, Rarity.UNCOMMON, mage.cards.p.PentagramOfTheAges.class));
- cards.add(new SetCardInfo("Personal Incarnation", 22, Rarity.RARE, mage.cards.p.PersonalIncarnation.class));
- cards.add(new SetCardInfo("Phantasmal Forces", 55, Rarity.COMMON, mage.cards.p.PhantasmalForces.class));
- cards.add(new SetCardInfo("Phantasmal Terrain", 56, Rarity.COMMON, mage.cards.p.PhantasmalTerrain.class));
- cards.add(new SetCardInfo("Planar Gate", 221, Rarity.UNCOMMON, mage.cards.p.PlanarGate.class));
- cards.add(new SetCardInfo("Plateau", 249, Rarity.RARE, mage.cards.p.Plateau.class));
- cards.add(new SetCardInfo("Power Artifact", 57, Rarity.RARE, mage.cards.p.PowerArtifact.class));
- cards.add(new SetCardInfo("Primal Clay", 222, Rarity.COMMON, mage.cards.p.PrimalClay.class));
- cards.add(new SetCardInfo("Prodigal Sorcerer", 58, Rarity.UNCOMMON, mage.cards.p.ProdigalSorcerer.class));
- cards.add(new SetCardInfo("Prowling Nightstalker", 93, Rarity.COMMON, mage.cards.p.ProwlingNightstalker.class));
- cards.add(new SetCardInfo("Radjan Spirit", 162, Rarity.UNCOMMON, mage.cards.r.RadjanSpirit.class));
- cards.add(new SetCardInfo("Rain of Daggers", 94, Rarity.RARE, mage.cards.r.RainOfDaggers.class));
- cards.add(new SetCardInfo("Rakalite", 223, Rarity.RARE, mage.cards.r.Rakalite.class));
- cards.add(new SetCardInfo("Reconstruction", 59, Rarity.COMMON, mage.cards.r.Reconstruction.class));
- cards.add(new SetCardInfo("Red Elemental Blast", 131, Rarity.UNCOMMON, mage.cards.r.RedElementalBlast.class));
- 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("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("Rockslide Ambush", 134, Rarity.COMMON, mage.cards.r.RockslideAmbush.class));
- cards.add(new SetCardInfo("Sandstorm", 164, Rarity.COMMON, mage.cards.s.Sandstorm.class));
- cards.add(new SetCardInfo("Savannah Lions", 24, Rarity.UNCOMMON, mage.cards.s.SavannahLions.class));
- cards.add(new SetCardInfo("Savannah", 250, Rarity.RARE, mage.cards.s.Savannah.class));
- cards.add(new SetCardInfo("Scarecrow", 225, Rarity.UNCOMMON, mage.cards.s.Scarecrow.class));
- cards.add(new SetCardInfo("Scarwood Bandits", 165, Rarity.RARE, mage.cards.s.ScarwoodBandits.class));
- cards.add(new SetCardInfo("Scavenger Folk", 166, Rarity.COMMON, mage.cards.s.ScavengerFolk.class));
- cards.add(new SetCardInfo("Scavenging Ghoul", 95, Rarity.UNCOMMON, mage.cards.s.ScavengingGhoul.class));
- cards.add(new SetCardInfo("Scrubland", 251, Rarity.RARE, mage.cards.s.Scrubland.class));
- cards.add(new SetCardInfo("Sea Serpent", 60, Rarity.COMMON, mage.cards.s.SeaSerpent.class));
- cards.add(new SetCardInfo("Sedge Troll", 135, Rarity.RARE, mage.cards.s.SedgeTroll.class));
- cards.add(new SetCardInfo("Sengir Vampire", 96, Rarity.UNCOMMON, mage.cards.s.SengirVampire.class));
- cards.add(new SetCardInfo("Serendib Djinn", 61, Rarity.RARE, mage.cards.s.SerendibDjinn.class));
- cards.add(new SetCardInfo("Serra Angel", 25, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class));
- cards.add(new SetCardInfo("Serra Aviary", 26, Rarity.UNCOMMON, mage.cards.s.SerraAviary.class));
- cards.add(new SetCardInfo("Serra Bestiary", 27, Rarity.COMMON, mage.cards.s.SerraBestiary.class));
- cards.add(new SetCardInfo("Shapeshifter", 226, Rarity.UNCOMMON, mage.cards.s.Shapeshifter.class));
- cards.add(new SetCardInfo("Shivan Dragon", 136, Rarity.RARE, mage.cards.s.ShivanDragon.class));
- cards.add(new SetCardInfo("Sinkhole", 97, Rarity.RARE, mage.cards.s.Sinkhole.class));
- cards.add(new SetCardInfo("Sleight of Hand", 62, Rarity.COMMON, mage.cards.s.SleightOfHand.class));
- cards.add(new SetCardInfo("Smoke", 137, Rarity.RARE, mage.cards.s.Smoke.class));
- cards.add(new SetCardInfo("Sol Ring", 227, Rarity.RARE, mage.cards.s.SolRing.class));
- cards.add(new SetCardInfo("Soldevi Golem", 228, Rarity.UNCOMMON, mage.cards.s.SoldeviGolem.class));
- cards.add(new SetCardInfo("Soldevi Machinist", 63, Rarity.UNCOMMON, mage.cards.s.SoldeviMachinist.class));
- cards.add(new SetCardInfo("Soul Shred", 98, Rarity.COMMON, mage.cards.s.SoulShred.class));
- cards.add(new SetCardInfo("Southern Elephant", 167, Rarity.COMMON, mage.cards.s.SouthernElephant.class));
- cards.add(new SetCardInfo("Spotted Griffin", 28, Rarity.COMMON, mage.cards.s.SpottedGriffin.class));
- cards.add(new SetCardInfo("Squall", 168, Rarity.UNCOMMON, mage.cards.s.Squall.class));
- cards.add(new SetCardInfo("Staff of Zegon", 229, Rarity.COMMON, mage.cards.s.StaffOfZegon.class));
- cards.add(new SetCardInfo("Stasis", 64, Rarity.RARE, mage.cards.s.Stasis.class));
- cards.add(new SetCardInfo("Steam Catapult", 29, Rarity.RARE, mage.cards.s.SteamCatapult.class));
- cards.add(new SetCardInfo("Strip Mine", 252, Rarity.RARE, mage.cards.s.StripMine.class));
- cards.add(new SetCardInfo("Swords to Plowshares", 30, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
- cards.add(new SetCardInfo("Sylvan Tutor", 169, Rarity.UNCOMMON, mage.cards.s.SylvanTutor.class));
- cards.add(new SetCardInfo("Symbol of Unsummoning", 65, Rarity.COMMON, mage.cards.s.SymbolOfUnsummoning.class));
- cards.add(new SetCardInfo("Tablet of Epityr", 230, Rarity.COMMON, mage.cards.t.TabletOfEpityr.class));
- cards.add(new SetCardInfo("Taiga", 253, Rarity.RARE, mage.cards.t.Taiga.class));
- cards.add(new SetCardInfo("Talas Researcher", 66, Rarity.UNCOMMON, mage.cards.t.TalasResearcher.class));
- cards.add(new SetCardInfo("Tawnos's Wand", 231, Rarity.COMMON, mage.cards.t.TawnossWand.class));
- cards.add(new SetCardInfo("Tawnos's Weaponry", 232, Rarity.UNCOMMON, mage.cards.t.TawnossWeaponry.class));
- cards.add(new SetCardInfo("Temple Acolyte", 31, Rarity.COMMON, mage.cards.t.TempleAcolyte.class));
- cards.add(new SetCardInfo("Terror", 99, Rarity.COMMON, mage.cards.t.Terror.class));
- cards.add(new SetCardInfo("Tetravus", 233, Rarity.RARE, mage.cards.t.Tetravus.class));
- cards.add(new SetCardInfo("Theft of Dreams", 67, Rarity.UNCOMMON, mage.cards.t.TheftOfDreams.class));
- cards.add(new SetCardInfo("Thing from the Deep", 68, Rarity.RARE, mage.cards.t.ThingFromTheDeep.class));
- cards.add(new SetCardInfo("Thunder Dragon", 138, Rarity.RARE, mage.cards.t.ThunderDragon.class));
- cards.add(new SetCardInfo("Time Vault", 234, Rarity.RARE, mage.cards.t.TimeVault.class));
- cards.add(new SetCardInfo("Titania's Song", 170, Rarity.RARE, mage.cards.t.TitaniasSong.class));
- cards.add(new SetCardInfo("Transmute Artifact", 69, Rarity.RARE, mage.cards.t.TransmuteArtifact.class));
- cards.add(new SetCardInfo("Triassic Egg", 235, Rarity.RARE, mage.cards.t.TriassicEgg.class));
- cards.add(new SetCardInfo("Tropical Island", 254, Rarity.RARE, mage.cards.t.TropicalIsland.class));
- cards.add(new SetCardInfo("Tsunami", 171, Rarity.RARE, mage.cards.t.Tsunami.class));
- cards.add(new SetCardInfo("Tundra", 255, Rarity.RARE, mage.cards.t.Tundra.class));
- cards.add(new SetCardInfo("Two-Headed Giant of Foriys", 139, Rarity.UNCOMMON, mage.cards.t.TwoHeadedGiantOfForiys.class));
- cards.add(new SetCardInfo("Underground Sea", 256, Rarity.RARE, mage.cards.u.UndergroundSea.class));
- cards.add(new SetCardInfo("Urza's Chalice", 236, Rarity.COMMON, mage.cards.u.UrzasChalice.class));
- cards.add(new SetCardInfo("Urza's Mine", "257a", Rarity.COMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Mine", "257b", Rarity.COMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Mine", "257c", Rarity.COMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Mine", "257d", Rarity.COMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Miter", 237, Rarity.RARE, mage.cards.u.UrzasMiter.class));
- cards.add(new SetCardInfo("Urza's Power Plant", "258a", Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Power Plant", "258b", Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Power Plant", "258c", Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Power Plant", "258d", Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Tower", "259a", Rarity.COMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Tower", "259b", Rarity.COMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Tower", "259c", Rarity.COMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Urza's Tower", "259d", Rarity.COMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Veteran Bodyguard", 32, Rarity.RARE, mage.cards.v.VeteranBodyguard.class));
- cards.add(new SetCardInfo("Vibrating Sphere", 238, Rarity.RARE, mage.cards.v.VibratingSphere.class));
- cards.add(new SetCardInfo("Volcanic Island", 260, Rarity.RARE, mage.cards.v.VolcanicIsland.class));
- cards.add(new SetCardInfo("War Mammoth", 172, Rarity.COMMON, mage.cards.w.WarMammoth.class));
- cards.add(new SetCardInfo("Warp Artifact", 100, Rarity.COMMON, mage.cards.w.WarpArtifact.class));
- cards.add(new SetCardInfo("Water Elemental", 70, Rarity.UNCOMMON, mage.cards.w.WaterElemental.class));
- cards.add(new SetCardInfo("Weakness", 101, Rarity.COMMON, mage.cards.w.Weakness.class));
- cards.add(new SetCardInfo("Weakstone", 239, Rarity.UNCOMMON, mage.cards.w.Weakstone.class));
- cards.add(new SetCardInfo("Wheel of Fortune", 140, Rarity.RARE, mage.cards.w.WheelOfFortune.class));
- cards.add(new SetCardInfo("Whiptail Wurm", 173, Rarity.UNCOMMON, mage.cards.w.WhiptailWurm.class));
- cards.add(new SetCardInfo("White Knight", 33, Rarity.UNCOMMON, mage.cards.w.WhiteKnight.class));
- cards.add(new SetCardInfo("Wicked Pact", 102, Rarity.UNCOMMON, mage.cards.w.WickedPact.class));
- cards.add(new SetCardInfo("Wild Aesthir", 34, Rarity.COMMON, mage.cards.w.WildAesthir.class));
- cards.add(new SetCardInfo("Wild Griffin", 35, Rarity.COMMON, mage.cards.w.WildGriffin.class));
- cards.add(new SetCardInfo("Wild Ox", 174, Rarity.UNCOMMON, mage.cards.w.WildOx.class));
- cards.add(new SetCardInfo("Wood Elemental", 175, Rarity.RARE, mage.cards.w.WoodElemental.class));
- cards.add(new SetCardInfo("Xenic Poltergeist", 104, Rarity.UNCOMMON, mage.cards.x.XenicPoltergeist.class));
- cards.add(new SetCardInfo("Yotian Soldier", 240, Rarity.COMMON, mage.cards.y.YotianSoldier.class));
- cards.add(new SetCardInfo("Zombie Master", 105, Rarity.UNCOMMON, mage.cards.z.ZombieMaster.class));
- }
-
- @Override
- public List getSpecialLand() {
- // ME4 replace all basic lands with special (1 per booster)
- // https://mtg.gamepedia.com/Masters_Edition_IV
-
- if (savedSpecialLand.isEmpty()) {
- savedSpecialLand.addAll(CardRepository.instance.findCards(new CardCriteria().setCodes(this.code).name("Urza's Mine")));
- savedSpecialLand.addAll(CardRepository.instance.findCards(new CardCriteria().setCodes(this.code).name("Urza's Power Plant")));
- savedSpecialLand.addAll(CardRepository.instance.findCards(new CardCriteria().setCodes(this.code).name("Urza's Tower")));
- }
-
- return new ArrayList<>(savedSpecialLand);
- }
-
-}
+/*
+ * 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.cards.a.AesthirGlider;
+import mage.cards.e.EliteCatWarrior;
+import mage.cards.repository.CardCriteria;
+import mage.cards.repository.CardInfo;
+import mage.cards.repository.CardRepository;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class MastersEditionIV extends ExpansionSet {
+
+ private static final MastersEditionIV instance = new MastersEditionIV();
+
+ public static MastersEditionIV getInstance() {
+ return instance;
+ }
+
+ protected final List savedSpecialLand = new ArrayList<>();
+
+ private MastersEditionIV() {
+ super("Masters Edition IV", "ME4", ExpansionSet.buildDate(2011, 1, 10), SetType.MAGIC_ONLINE);
+ this.hasBasicLands = false;
+ this.hasBoosters = true;
+ this.numBoosterLands = 1;
+ this.numBoosterCommon = 10;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ this.ratioBoosterSpecialLand = 1; // replace all basic lands
+ cards.add(new SetCardInfo("Acid Rain", 36, Rarity.RARE, mage.cards.a.AcidRain.class));
+ cards.add(new SetCardInfo("Aesthir Glider", 176, Rarity.COMMON, AesthirGlider.class));
+ cards.add(new SetCardInfo("Air Elemental", 37, Rarity.UNCOMMON, mage.cards.a.AirElemental.class));
+ cards.add(new SetCardInfo("Al-abara's Carpet", 177, Rarity.RARE, mage.cards.a.AlAbarasCarpet.class));
+ cards.add(new SetCardInfo("Alaborn Musketeer", 1, Rarity.COMMON, mage.cards.a.AlabornMusketeer.class));
+ cards.add(new SetCardInfo("Alaborn Trooper", 2, Rarity.COMMON, mage.cards.a.AlabornTrooper.class));
+ cards.add(new SetCardInfo("Aladdin", 106, Rarity.RARE, mage.cards.a.Aladdin.class));
+ cards.add(new SetCardInfo("Alchor's Tomb", 178, Rarity.RARE, mage.cards.a.AlchorsTomb.class));
+ cards.add(new SetCardInfo("Ali from Cairo", 107, Rarity.RARE, mage.cards.a.AliFromCairo.class));
+ cards.add(new SetCardInfo("Alluring Scent", 141, Rarity.COMMON, mage.cards.a.AlluringScent.class));
+ cards.add(new SetCardInfo("Amulet of Kroog", 179, Rarity.COMMON, mage.cards.a.AmuletOfKroog.class));
+ cards.add(new SetCardInfo("Angelic Voices", 3, Rarity.UNCOMMON, mage.cards.a.AngelicVoices.class));
+ cards.add(new SetCardInfo("Animate Artifact", 38, Rarity.UNCOMMON, mage.cards.a.AnimateArtifact.class));
+ cards.add(new SetCardInfo("Argivian Blacksmith", 4, Rarity.UNCOMMON, mage.cards.a.ArgivianBlacksmith.class));
+ cards.add(new SetCardInfo("Argothian Pixies", 142, Rarity.COMMON, mage.cards.a.ArgothianPixies.class));
+ cards.add(new SetCardInfo("Argothian Treefolk", 143, Rarity.UNCOMMON, mage.cards.a.ArgothianTreefolk.class));
+ cards.add(new SetCardInfo("Armageddon Clock", 180, Rarity.RARE, mage.cards.a.ArmageddonClock.class));
+ cards.add(new SetCardInfo("Armageddon", 5, Rarity.RARE, mage.cards.a.Armageddon.class));
+ cards.add(new SetCardInfo("Artifact Blast", 108, Rarity.COMMON, mage.cards.a.ArtifactBlast.class));
+ cards.add(new SetCardInfo("Ashnod's Altar", 181, Rarity.RARE, mage.cards.a.AshnodsAltar.class));
+ cards.add(new SetCardInfo("Atog", 109, Rarity.COMMON, mage.cards.a.Atog.class));
+ cards.add(new SetCardInfo("Badlands", 241, Rarity.RARE, mage.cards.b.Badlands.class));
+ cards.add(new SetCardInfo("Balance", 6, Rarity.RARE, mage.cards.b.Balance.class));
+ cards.add(new SetCardInfo("Basalt Monolith", 182, Rarity.UNCOMMON, mage.cards.b.BasaltMonolith.class));
+ cards.add(new SetCardInfo("Bayou", 242, Rarity.RARE, mage.cards.b.Bayou.class));
+ cards.add(new SetCardInfo("Bee Sting", 144, Rarity.UNCOMMON, mage.cards.b.BeeSting.class));
+ cards.add(new SetCardInfo("Bird Maiden", 110, Rarity.COMMON, mage.cards.b.BirdMaiden.class));
+ cards.add(new SetCardInfo("Black Knight", 71, Rarity.UNCOMMON, mage.cards.b.BlackKnight.class));
+ cards.add(new SetCardInfo("Blaze of Glory", 7, Rarity.UNCOMMON, mage.cards.b.BlazeOfGlory.class));
+ cards.add(new SetCardInfo("Blue Elemental Blast", 39, Rarity.UNCOMMON, mage.cards.b.BlueElementalBlast.class));
+ cards.add(new SetCardInfo("Book of Rass", 183, Rarity.UNCOMMON, mage.cards.b.BookOfRass.class));
+ cards.add(new SetCardInfo("Bottle of Suleiman", 184, Rarity.RARE, mage.cards.b.BottleOfSuleiman.class));
+ cards.add(new SetCardInfo("Braingeyser", 40, Rarity.RARE, mage.cards.b.Braingeyser.class));
+ cards.add(new SetCardInfo("Brass Man", 185, Rarity.COMMON, mage.cards.b.BrassMan.class));
+ cards.add(new SetCardInfo("Candelabra of Tawnos", 187, Rarity.RARE, mage.cards.c.CandelabraOfTawnos.class));
+ cards.add(new SetCardInfo("Celestial Sword", 188, Rarity.UNCOMMON, mage.cards.c.CelestialSword.class));
+ cards.add(new SetCardInfo("Champion Lancer", 8, Rarity.RARE, mage.cards.c.ChampionLancer.class));
+ cards.add(new SetCardInfo("Channel", 145, Rarity.RARE, mage.cards.c.Channel.class));
+ cards.add(new SetCardInfo("Citanul Druid", 146, Rarity.COMMON, mage.cards.c.CitanulDruid.class));
+ cards.add(new SetCardInfo("City of Brass", 243, Rarity.RARE, mage.cards.c.CityOfBrass.class));
+ cards.add(new SetCardInfo("Clay Statue", 189, Rarity.UNCOMMON, mage.cards.c.ClayStatue.class));
+ cards.add(new SetCardInfo("Clockwork Avian", 190, Rarity.UNCOMMON, mage.cards.c.ClockworkAvian.class));
+ cards.add(new SetCardInfo("Clockwork Gnomes", 191, Rarity.UNCOMMON, mage.cards.c.ClockworkGnomes.class));
+ cards.add(new SetCardInfo("Clockwork Swarm", 192, Rarity.COMMON, mage.cards.c.ClockworkSwarm.class));
+ cards.add(new SetCardInfo("Cloud Dragon", 41, Rarity.RARE, mage.cards.c.CloudDragon.class));
+ cards.add(new SetCardInfo("Cloud Spirit", 42, Rarity.COMMON, mage.cards.c.CloudSpirit.class));
+ cards.add(new SetCardInfo("Colossus of Sardia", 193, Rarity.RARE, mage.cards.c.ColossusOfSardia.class));
+ cards.add(new SetCardInfo("Control Magic", 43, Rarity.RARE, mage.cards.c.ControlMagic.class));
+ cards.add(new SetCardInfo("Conversion", 9, Rarity.RARE, mage.cards.c.Conversion.class));
+ cards.add(new SetCardInfo("Copy Artifact", 44, Rarity.RARE, mage.cards.c.CopyArtifact.class));
+ cards.add(new SetCardInfo("Coral Helm", 194, Rarity.UNCOMMON, mage.cards.c.CoralHelm.class));
+ cards.add(new SetCardInfo("Counterspell", 45, Rarity.COMMON, mage.cards.c.Counterspell.class));
+ cards.add(new SetCardInfo("Crumble", 147, Rarity.COMMON, mage.cards.c.Crumble.class));
+ cards.add(new SetCardInfo("Cyclone", 148, Rarity.RARE, mage.cards.c.Cyclone.class));
+ cards.add(new SetCardInfo("Cyclopean Mummy", 72, Rarity.COMMON, mage.cards.c.CyclopeanMummy.class));
+ cards.add(new SetCardInfo("Cyclopean Tomb", 195, Rarity.RARE, mage.cards.c.CyclopeanTomb.class));
+ cards.add(new SetCardInfo("Dakmor Plague", 73, Rarity.UNCOMMON, mage.cards.d.DakmorPlague.class));
+ cards.add(new SetCardInfo("Dark Ritual", 74, Rarity.COMMON, mage.cards.d.DarkRitual.class));
+ cards.add(new SetCardInfo("Deathcoil Wurm", 149, Rarity.RARE, mage.cards.d.DeathcoilWurm.class));
+ cards.add(new SetCardInfo("Deathgrip", 75, Rarity.RARE, mage.cards.d.Deathgrip.class));
+ cards.add(new SetCardInfo("Demonic Hordes", 76, Rarity.RARE, mage.cards.d.DemonicHordes.class));
+ cards.add(new SetCardInfo("Demonic Tutor", 77, Rarity.RARE, mage.cards.d.DemonicTutor.class));
+ cards.add(new SetCardInfo("Detonate", 111, Rarity.UNCOMMON, mage.cards.d.Detonate.class));
+ cards.add(new SetCardInfo("Devastation", 112, Rarity.RARE, mage.cards.d.Devastation.class));
+ cards.add(new SetCardInfo("Diabolic Machine", 196, Rarity.UNCOMMON, mage.cards.d.DiabolicMachine.class));
+ cards.add(new SetCardInfo("Divine Offering", 10, Rarity.COMMON, mage.cards.d.DivineOffering.class));
+ cards.add(new SetCardInfo("Dragon Engine", 197, Rarity.COMMON, mage.cards.d.DragonEngine.class));
+ cards.add(new SetCardInfo("Drain Power", 46, Rarity.RARE, mage.cards.d.DrainPower.class));
+ cards.add(new SetCardInfo("Dread Reaper", 78, Rarity.RARE, mage.cards.d.DreadReaper.class));
+ cards.add(new SetCardInfo("Drop of Honey", 150, Rarity.RARE, mage.cards.d.DropOfHoney.class));
+ cards.add(new SetCardInfo("Drowned", 47, Rarity.COMMON, mage.cards.d.Drowned.class));
+ cards.add(new SetCardInfo("Dust to Dust", 11, Rarity.UNCOMMON, mage.cards.d.DustToDust.class));
+ cards.add(new SetCardInfo("Ebon Dragon", 80, Rarity.RARE, mage.cards.e.EbonDragon.class));
+ cards.add(new SetCardInfo("Ebony Horse", 198, Rarity.COMMON, mage.cards.e.EbonyHorse.class));
+ cards.add(new SetCardInfo("Ebony Rhino", 199, Rarity.COMMON, mage.cards.e.EbonyRhino.class));
+ cards.add(new SetCardInfo("Elephant Graveyard", 244, Rarity.UNCOMMON, mage.cards.e.ElephantGraveyard.class));
+ cards.add(new SetCardInfo("Elite Cat Warrior", 151, Rarity.COMMON, EliteCatWarrior.class));
+ cards.add(new SetCardInfo("Energy Flux", 48, Rarity.UNCOMMON, mage.cards.e.EnergyFlux.class));
+ cards.add(new SetCardInfo("Eye for an Eye", 12, Rarity.RARE, mage.cards.e.EyeForAnEye.class));
+ cards.add(new SetCardInfo("False Summoning", 49, Rarity.COMMON, mage.cards.f.FalseSummoning.class));
+ cards.add(new SetCardInfo("Fastbond", 152, Rarity.RARE, mage.cards.f.Fastbond.class));
+ cards.add(new SetCardInfo("Fire Imp", 113, Rarity.UNCOMMON, mage.cards.f.FireImp.class));
+ cards.add(new SetCardInfo("Fire Tempest", 114, Rarity.RARE, mage.cards.f.FireTempest.class));
+ cards.add(new SetCardInfo("Fireball", 115, Rarity.UNCOMMON, mage.cards.f.Fireball.class));
+ cards.add(new SetCardInfo("Floodwater Dam", 200, Rarity.RARE, mage.cards.f.FloodwaterDam.class));
+ cards.add(new SetCardInfo("Flying Carpet", 201, Rarity.COMMON, mage.cards.f.FlyingCarpet.class));
+ cards.add(new SetCardInfo("Fog", 153, Rarity.COMMON, mage.cards.f.Fog.class));
+ cards.add(new SetCardInfo("Force of Nature", 154, Rarity.RARE, mage.cards.f.ForceOfNature.class));
+ cards.add(new SetCardInfo("Fork", 116, Rarity.RARE, mage.cards.f.Fork.class));
+ cards.add(new SetCardInfo("Foul Spirit", 81, Rarity.COMMON, mage.cards.f.FoulSpirit.class));
+ cards.add(new SetCardInfo("Gaea's Avenger", 155, Rarity.UNCOMMON, mage.cards.g.GaeasAvenger.class));
+ cards.add(new SetCardInfo("Gate to Phyrexia", 82, Rarity.UNCOMMON, mage.cards.g.GateToPhyrexia.class));
+ cards.add(new SetCardInfo("Gauntlet of Might", 202, Rarity.RARE, mage.cards.g.GauntletOfMight.class));
+ cards.add(new SetCardInfo("Giant Growth", 156, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
+ cards.add(new SetCardInfo("Giant Tortoise", 50, Rarity.COMMON, mage.cards.g.GiantTortoise.class));
+ cards.add(new SetCardInfo("Glasses of Urza", 203, Rarity.COMMON, mage.cards.g.GlassesOfUrza.class));
+ cards.add(new SetCardInfo("Gloom", 83, Rarity.RARE, mage.cards.g.Gloom.class));
+ cards.add(new SetCardInfo("Goblin Bully", 117, Rarity.COMMON, mage.cards.g.GoblinBully.class));
+ cards.add(new SetCardInfo("Goblin Cavaliers", 118, Rarity.COMMON, mage.cards.g.GoblinCavaliers.class));
+ cards.add(new SetCardInfo("Goblin Caves", 119, Rarity.COMMON, mage.cards.g.GoblinCaves.class));
+ cards.add(new SetCardInfo("Goblin Firestarter", 120, Rarity.COMMON, mage.cards.g.GoblinFirestarter.class));
+ cards.add(new SetCardInfo("Goblin General", 121, Rarity.UNCOMMON, mage.cards.g.GoblinGeneral.class));
+ cards.add(new SetCardInfo("Goblin Shrine", 122, Rarity.COMMON, mage.cards.g.GoblinShrine.class));
+ cards.add(new SetCardInfo("Goblin Warrens", 123, Rarity.UNCOMMON, mage.cards.g.GoblinWarrens.class));
+ cards.add(new SetCardInfo("Gorilla War Cry", 124, Rarity.COMMON, mage.cards.g.GorillaWarCry.class));
+ cards.add(new SetCardInfo("Grapeshot Catapult", 204, Rarity.UNCOMMON, mage.cards.g.GrapeshotCatapult.class));
+ cards.add(new SetCardInfo("Gravebind", 84, Rarity.COMMON, mage.cards.g.Gravebind.class));
+ cards.add(new SetCardInfo("Guardian Beast", 85, Rarity.RARE, mage.cards.g.GuardianBeast.class));
+ cards.add(new SetCardInfo("Harsh Justice", 13, Rarity.RARE, mage.cards.h.HarshJustice.class));
+ cards.add(new SetCardInfo("Hasran Ogress", 86, Rarity.COMMON, mage.cards.h.HasranOgress.class));
+ cards.add(new SetCardInfo("Healing Salve", 14, Rarity.COMMON, mage.cards.h.HealingSalve.class));
+ cards.add(new SetCardInfo("Horn of Deafening", 205, Rarity.UNCOMMON, mage.cards.h.HornOfDeafening.class));
+ cards.add(new SetCardInfo("Howl from Beyond", 87, Rarity.COMMON, mage.cards.h.HowlFromBeyond.class));
+ cards.add(new SetCardInfo("Ice Cauldron", 206, Rarity.RARE, mage.cards.i.IceCauldron.class));
+ cards.add(new SetCardInfo("Icy Manipulator", 207, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class));
+ cards.add(new SetCardInfo("In the Eye of Chaos", 51, Rarity.RARE, mage.cards.i.InTheEyeOfChaos.class));
+ cards.add(new SetCardInfo("Instill Energy", 157, Rarity.UNCOMMON, mage.cards.i.InstillEnergy.class));
+ cards.add(new SetCardInfo("Ironhoof Ox", 158, Rarity.COMMON, mage.cards.i.IronhoofOx.class));
+ cards.add(new SetCardInfo("Island Sanctuary", 15, Rarity.RARE, mage.cards.i.IslandSanctuary.class));
+ cards.add(new SetCardInfo("Jade Monolith", 208, Rarity.RARE, mage.cards.j.JadeMonolith.class));
+ cards.add(new SetCardInfo("Juggernaut", 209, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
+ cards.add(new SetCardInfo("Junún Efreet", 88, Rarity.UNCOMMON, mage.cards.j.JununEfreet.class));
+ cards.add(new SetCardInfo("Just Fate", 16, Rarity.COMMON, mage.cards.j.JustFate.class));
+ cards.add(new SetCardInfo("Kismet", 17, Rarity.RARE, mage.cards.k.Kismet.class));
+ cards.add(new SetCardInfo("Kormus Bell", 210, Rarity.RARE, mage.cards.k.KormusBell.class));
+ cards.add(new SetCardInfo("Kudzu", 159, Rarity.UNCOMMON, mage.cards.k.Kudzu.class));
+ cards.add(new SetCardInfo("Last Chance", 125, Rarity.RARE, mage.cards.l.LastChance.class));
+ cards.add(new SetCardInfo("Lava Flow", 126, Rarity.COMMON, mage.cards.l.LavaFlow.class));
+ cards.add(new SetCardInfo("Leeches", 18, Rarity.RARE, mage.cards.l.Leeches.class));
+ cards.add(new SetCardInfo("Library of Alexandria", 245, Rarity.RARE, mage.cards.l.LibraryOfAlexandria.class));
+ cards.add(new SetCardInfo("Library of Leng", 211, Rarity.COMMON, mage.cards.l.LibraryOfLeng.class));
+ cards.add(new SetCardInfo("Lich", 89, Rarity.RARE, mage.cards.l.Lich.class));
+ cards.add(new SetCardInfo("Lifeforce", 160, Rarity.RARE, mage.cards.l.Lifeforce.class));
+ cards.add(new SetCardInfo("Living Lands", 161, Rarity.RARE, mage.cards.l.LivingLands.class));
+ cards.add(new SetCardInfo("Living Wall", 212, Rarity.UNCOMMON, mage.cards.l.LivingWall.class));
+ cards.add(new SetCardInfo("Mahamoti Djinn", 52, Rarity.RARE, mage.cards.m.MahamotiDjinn.class));
+ cards.add(new SetCardInfo("Mana Matrix", 213, Rarity.RARE, mage.cards.m.ManaMatrix.class));
+ cards.add(new SetCardInfo("Mana Vault", 214, Rarity.RARE, mage.cards.m.ManaVault.class));
+ cards.add(new SetCardInfo("Martyr's Cry", 19, Rarity.RARE, mage.cards.m.MartyrsCry.class));
+ cards.add(new SetCardInfo("Martyrs of Korlis", 20, Rarity.UNCOMMON, mage.cards.m.MartyrsOfKorlis.class));
+ cards.add(new SetCardInfo("Maze of Ith", 246, Rarity.RARE, mage.cards.m.MazeOfIth.class));
+ cards.add(new SetCardInfo("Mightstone", 215, Rarity.COMMON, mage.cards.m.Mightstone.class));
+ cards.add(new SetCardInfo("Mijae Djinn", 127, Rarity.RARE, mage.cards.m.MijaeDjinn.class));
+ cards.add(new SetCardInfo("Minion of Tevesh Szat", 91, Rarity.RARE, mage.cards.m.MinionOfTeveshSzat.class));
+ cards.add(new SetCardInfo("Mishra's Workshop", 247, Rarity.RARE, mage.cards.m.MishrasWorkshop.class));
+ cards.add(new SetCardInfo("Mystic Decree", 53, Rarity.UNCOMMON, mage.cards.m.MysticDecree.class));
+ cards.add(new SetCardInfo("Naked Singularity", 216, Rarity.RARE, mage.cards.n.NakedSingularity.class));
+ cards.add(new SetCardInfo("Oasis", 248, Rarity.COMMON, mage.cards.o.Oasis.class));
+ cards.add(new SetCardInfo("Obelisk of Undoing", 217, Rarity.RARE, mage.cards.o.ObeliskOfUndoing.class));
+ cards.add(new SetCardInfo("Obsianus Golem", 218, Rarity.COMMON, mage.cards.o.ObsianusGolem.class));
+ cards.add(new SetCardInfo("Ogre Taskmaster", 128, Rarity.COMMON, mage.cards.o.OgreTaskmaster.class));
+ cards.add(new SetCardInfo("Onulet", 219, Rarity.COMMON, mage.cards.o.Onulet.class));
+ cards.add(new SetCardInfo("Orcish Mechanics", 129, Rarity.UNCOMMON, mage.cards.o.OrcishMechanics.class));
+ cards.add(new SetCardInfo("Osai Vultures", 21, Rarity.COMMON, mage.cards.o.OsaiVultures.class));
+ cards.add(new SetCardInfo("Overwhelming Forces", 92, Rarity.RARE, mage.cards.o.OverwhelmingForces.class));
+ cards.add(new SetCardInfo("Owl Familiar", 54, Rarity.COMMON, mage.cards.o.OwlFamiliar.class));
+ cards.add(new SetCardInfo("Pentagram of the Ages", 220, Rarity.UNCOMMON, mage.cards.p.PentagramOfTheAges.class));
+ cards.add(new SetCardInfo("Personal Incarnation", 22, Rarity.RARE, mage.cards.p.PersonalIncarnation.class));
+ cards.add(new SetCardInfo("Phantasmal Forces", 55, Rarity.COMMON, mage.cards.p.PhantasmalForces.class));
+ cards.add(new SetCardInfo("Phantasmal Terrain", 56, Rarity.COMMON, mage.cards.p.PhantasmalTerrain.class));
+ cards.add(new SetCardInfo("Planar Gate", 221, Rarity.UNCOMMON, mage.cards.p.PlanarGate.class));
+ cards.add(new SetCardInfo("Plateau", 249, Rarity.RARE, mage.cards.p.Plateau.class));
+ cards.add(new SetCardInfo("Power Artifact", 57, Rarity.RARE, mage.cards.p.PowerArtifact.class));
+ cards.add(new SetCardInfo("Primal Clay", 222, Rarity.COMMON, mage.cards.p.PrimalClay.class));
+ cards.add(new SetCardInfo("Prodigal Sorcerer", 58, Rarity.UNCOMMON, mage.cards.p.ProdigalSorcerer.class));
+ cards.add(new SetCardInfo("Prowling Nightstalker", 93, Rarity.COMMON, mage.cards.p.ProwlingNightstalker.class));
+ cards.add(new SetCardInfo("Radjan Spirit", 162, Rarity.UNCOMMON, mage.cards.r.RadjanSpirit.class));
+ cards.add(new SetCardInfo("Rain of Daggers", 94, Rarity.RARE, mage.cards.r.RainOfDaggers.class));
+ cards.add(new SetCardInfo("Rakalite", 223, Rarity.RARE, mage.cards.r.Rakalite.class));
+ cards.add(new SetCardInfo("Reconstruction", 59, Rarity.COMMON, mage.cards.r.Reconstruction.class));
+ cards.add(new SetCardInfo("Red Elemental Blast", 131, Rarity.UNCOMMON, mage.cards.r.RedElementalBlast.class));
+ 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("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("Rockslide Ambush", 134, Rarity.COMMON, mage.cards.r.RockslideAmbush.class));
+ cards.add(new SetCardInfo("Sandstorm", 164, Rarity.COMMON, mage.cards.s.Sandstorm.class));
+ cards.add(new SetCardInfo("Savannah Lions", 24, Rarity.UNCOMMON, mage.cards.s.SavannahLions.class));
+ cards.add(new SetCardInfo("Savannah", 250, Rarity.RARE, mage.cards.s.Savannah.class));
+ cards.add(new SetCardInfo("Scarecrow", 225, Rarity.UNCOMMON, mage.cards.s.Scarecrow.class));
+ cards.add(new SetCardInfo("Scarwood Bandits", 165, Rarity.RARE, mage.cards.s.ScarwoodBandits.class));
+ cards.add(new SetCardInfo("Scavenger Folk", 166, Rarity.COMMON, mage.cards.s.ScavengerFolk.class));
+ cards.add(new SetCardInfo("Scavenging Ghoul", 95, Rarity.UNCOMMON, mage.cards.s.ScavengingGhoul.class));
+ cards.add(new SetCardInfo("Scrubland", 251, Rarity.RARE, mage.cards.s.Scrubland.class));
+ cards.add(new SetCardInfo("Sea Serpent", 60, Rarity.COMMON, mage.cards.s.SeaSerpent.class));
+ cards.add(new SetCardInfo("Sedge Troll", 135, Rarity.RARE, mage.cards.s.SedgeTroll.class));
+ cards.add(new SetCardInfo("Sengir Vampire", 96, Rarity.UNCOMMON, mage.cards.s.SengirVampire.class));
+ cards.add(new SetCardInfo("Serendib Djinn", 61, Rarity.RARE, mage.cards.s.SerendibDjinn.class));
+ cards.add(new SetCardInfo("Serra Angel", 25, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class));
+ cards.add(new SetCardInfo("Serra Aviary", 26, Rarity.UNCOMMON, mage.cards.s.SerraAviary.class));
+ cards.add(new SetCardInfo("Serra Bestiary", 27, Rarity.COMMON, mage.cards.s.SerraBestiary.class));
+ cards.add(new SetCardInfo("Shapeshifter", 226, Rarity.UNCOMMON, mage.cards.s.Shapeshifter.class));
+ cards.add(new SetCardInfo("Shivan Dragon", 136, Rarity.RARE, mage.cards.s.ShivanDragon.class));
+ cards.add(new SetCardInfo("Sinkhole", 97, Rarity.RARE, mage.cards.s.Sinkhole.class));
+ cards.add(new SetCardInfo("Sleight of Hand", 62, Rarity.COMMON, mage.cards.s.SleightOfHand.class));
+ cards.add(new SetCardInfo("Smoke", 137, Rarity.RARE, mage.cards.s.Smoke.class));
+ cards.add(new SetCardInfo("Sol Ring", 227, Rarity.RARE, mage.cards.s.SolRing.class));
+ cards.add(new SetCardInfo("Soldevi Golem", 228, Rarity.UNCOMMON, mage.cards.s.SoldeviGolem.class));
+ cards.add(new SetCardInfo("Soldevi Machinist", 63, Rarity.UNCOMMON, mage.cards.s.SoldeviMachinist.class));
+ cards.add(new SetCardInfo("Soul Shred", 98, Rarity.COMMON, mage.cards.s.SoulShred.class));
+ cards.add(new SetCardInfo("Southern Elephant", 167, Rarity.COMMON, mage.cards.s.SouthernElephant.class));
+ cards.add(new SetCardInfo("Spotted Griffin", 28, Rarity.COMMON, mage.cards.s.SpottedGriffin.class));
+ cards.add(new SetCardInfo("Squall", 168, Rarity.UNCOMMON, mage.cards.s.Squall.class));
+ cards.add(new SetCardInfo("Staff of Zegon", 229, Rarity.COMMON, mage.cards.s.StaffOfZegon.class));
+ cards.add(new SetCardInfo("Stasis", 64, Rarity.RARE, mage.cards.s.Stasis.class));
+ cards.add(new SetCardInfo("Steam Catapult", 29, Rarity.RARE, mage.cards.s.SteamCatapult.class));
+ cards.add(new SetCardInfo("Strip Mine", 252, Rarity.RARE, mage.cards.s.StripMine.class));
+ cards.add(new SetCardInfo("Swords to Plowshares", 30, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
+ cards.add(new SetCardInfo("Sylvan Tutor", 169, Rarity.UNCOMMON, mage.cards.s.SylvanTutor.class));
+ cards.add(new SetCardInfo("Symbol of Unsummoning", 65, Rarity.COMMON, mage.cards.s.SymbolOfUnsummoning.class));
+ cards.add(new SetCardInfo("Tablet of Epityr", 230, Rarity.COMMON, mage.cards.t.TabletOfEpityr.class));
+ cards.add(new SetCardInfo("Taiga", 253, Rarity.RARE, mage.cards.t.Taiga.class));
+ cards.add(new SetCardInfo("Talas Researcher", 66, Rarity.UNCOMMON, mage.cards.t.TalasResearcher.class));
+ cards.add(new SetCardInfo("Tawnos's Wand", 231, Rarity.COMMON, mage.cards.t.TawnossWand.class));
+ cards.add(new SetCardInfo("Tawnos's Weaponry", 232, Rarity.UNCOMMON, mage.cards.t.TawnossWeaponry.class));
+ cards.add(new SetCardInfo("Temple Acolyte", 31, Rarity.COMMON, mage.cards.t.TempleAcolyte.class));
+ cards.add(new SetCardInfo("Terror", 99, Rarity.COMMON, mage.cards.t.Terror.class));
+ cards.add(new SetCardInfo("Tetravus", 233, Rarity.RARE, mage.cards.t.Tetravus.class));
+ cards.add(new SetCardInfo("Theft of Dreams", 67, Rarity.UNCOMMON, mage.cards.t.TheftOfDreams.class));
+ cards.add(new SetCardInfo("Thing from the Deep", 68, Rarity.RARE, mage.cards.t.ThingFromTheDeep.class));
+ cards.add(new SetCardInfo("Thunder Dragon", 138, Rarity.RARE, mage.cards.t.ThunderDragon.class));
+ cards.add(new SetCardInfo("Time Vault", 234, Rarity.RARE, mage.cards.t.TimeVault.class));
+ cards.add(new SetCardInfo("Titania's Song", 170, Rarity.RARE, mage.cards.t.TitaniasSong.class));
+ cards.add(new SetCardInfo("Transmute Artifact", 69, Rarity.RARE, mage.cards.t.TransmuteArtifact.class));
+ cards.add(new SetCardInfo("Triassic Egg", 235, Rarity.RARE, mage.cards.t.TriassicEgg.class));
+ cards.add(new SetCardInfo("Tropical Island", 254, Rarity.RARE, mage.cards.t.TropicalIsland.class));
+ cards.add(new SetCardInfo("Tsunami", 171, Rarity.RARE, mage.cards.t.Tsunami.class));
+ cards.add(new SetCardInfo("Tundra", 255, Rarity.RARE, mage.cards.t.Tundra.class));
+ cards.add(new SetCardInfo("Two-Headed Giant of Foriys", 139, Rarity.UNCOMMON, mage.cards.t.TwoHeadedGiantOfForiys.class));
+ cards.add(new SetCardInfo("Underground Sea", 256, Rarity.RARE, mage.cards.u.UndergroundSea.class));
+ cards.add(new SetCardInfo("Urza's Chalice", 236, Rarity.COMMON, mage.cards.u.UrzasChalice.class));
+ cards.add(new SetCardInfo("Urza's Mine", "257a", Rarity.COMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Mine", "257b", Rarity.COMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Mine", "257c", Rarity.COMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Mine", "257d", Rarity.COMMON, mage.cards.u.UrzasMine.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Miter", 237, Rarity.RARE, mage.cards.u.UrzasMiter.class));
+ cards.add(new SetCardInfo("Urza's Power Plant", "258a", Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Power Plant", "258b", Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Power Plant", "258c", Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Power Plant", "258d", Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", "259a", Rarity.COMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", "259b", Rarity.COMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", "259c", Rarity.COMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", "259d", Rarity.COMMON, mage.cards.u.UrzasTower.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Veteran Bodyguard", 32, Rarity.RARE, mage.cards.v.VeteranBodyguard.class));
+ cards.add(new SetCardInfo("Vibrating Sphere", 238, Rarity.RARE, mage.cards.v.VibratingSphere.class));
+ cards.add(new SetCardInfo("Volcanic Island", 260, Rarity.RARE, mage.cards.v.VolcanicIsland.class));
+ cards.add(new SetCardInfo("War Mammoth", 172, Rarity.COMMON, mage.cards.w.WarMammoth.class));
+ cards.add(new SetCardInfo("Warp Artifact", 100, Rarity.COMMON, mage.cards.w.WarpArtifact.class));
+ cards.add(new SetCardInfo("Water Elemental", 70, Rarity.UNCOMMON, mage.cards.w.WaterElemental.class));
+ cards.add(new SetCardInfo("Weakness", 101, Rarity.COMMON, mage.cards.w.Weakness.class));
+ cards.add(new SetCardInfo("Weakstone", 239, Rarity.UNCOMMON, mage.cards.w.Weakstone.class));
+ cards.add(new SetCardInfo("Wheel of Fortune", 140, Rarity.RARE, mage.cards.w.WheelOfFortune.class));
+ cards.add(new SetCardInfo("Whiptail Wurm", 173, Rarity.UNCOMMON, mage.cards.w.WhiptailWurm.class));
+ cards.add(new SetCardInfo("White Knight", 33, Rarity.UNCOMMON, mage.cards.w.WhiteKnight.class));
+ cards.add(new SetCardInfo("Wicked Pact", 102, Rarity.UNCOMMON, mage.cards.w.WickedPact.class));
+ cards.add(new SetCardInfo("Wild Aesthir", 34, Rarity.COMMON, mage.cards.w.WildAesthir.class));
+ cards.add(new SetCardInfo("Wild Griffin", 35, Rarity.COMMON, mage.cards.w.WildGriffin.class));
+ cards.add(new SetCardInfo("Wild Ox", 174, Rarity.UNCOMMON, mage.cards.w.WildOx.class));
+ cards.add(new SetCardInfo("Wood Elemental", 175, Rarity.RARE, mage.cards.w.WoodElemental.class));
+ cards.add(new SetCardInfo("Xenic Poltergeist", 104, Rarity.UNCOMMON, mage.cards.x.XenicPoltergeist.class));
+ cards.add(new SetCardInfo("Yotian Soldier", 240, Rarity.COMMON, mage.cards.y.YotianSoldier.class));
+ cards.add(new SetCardInfo("Zombie Master", 105, Rarity.UNCOMMON, mage.cards.z.ZombieMaster.class));
+ }
+
+ @Override
+ public List getSpecialLand() {
+ // ME4 replace all basic lands with special (1 per booster)
+ // https://mtg.gamepedia.com/Masters_Edition_IV
+
+ if (savedSpecialLand.isEmpty()) {
+ savedSpecialLand.addAll(CardRepository.instance.findCards(new CardCriteria().setCodes(this.code).name("Urza's Mine")));
+ savedSpecialLand.addAll(CardRepository.instance.findCards(new CardCriteria().setCodes(this.code).name("Urza's Power Plant")));
+ savedSpecialLand.addAll(CardRepository.instance.findCards(new CardCriteria().setCodes(this.code).name("Urza's Tower")));
+ }
+
+ return new ArrayList<>(savedSpecialLand);
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/MediaInserts.java b/Mage.Sets/src/mage/sets/MediaInserts.java
index da6f33f71a0..b5d9e4e12fa 100644
--- a/Mage.Sets/src/mage/sets/MediaInserts.java
+++ b/Mage.Sets/src/mage/sets/MediaInserts.java
@@ -32,7 +32,7 @@ import mage.cards.h.HighTide;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class MediaInserts extends ExpansionSet {
+public final class MediaInserts extends ExpansionSet {
private static final MediaInserts instance = new MediaInserts();
diff --git a/Mage.Sets/src/mage/sets/MercadianMasques.java b/Mage.Sets/src/mage/sets/MercadianMasques.java
index 923cc33a4cb..1ce1826a3a1 100644
--- a/Mage.Sets/src/mage/sets/MercadianMasques.java
+++ b/Mage.Sets/src/mage/sets/MercadianMasques.java
@@ -1,381 +1,384 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- * @author North
- */
-public class MercadianMasques extends ExpansionSet {
-
- private static final MercadianMasques instance = new MercadianMasques();
-
- public static MercadianMasques getInstance() {
- return instance;
- }
-
- private MercadianMasques() {
- super("Mercadian Masques", "MMQ", ExpansionSet.buildDate(1999, 8, 25), SetType.EXPANSION);
- this.blockName = "Masques";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Aerial Caravan", 58, Rarity.RARE, mage.cards.a.AerialCaravan.class));
- cards.add(new SetCardInfo("Afterlife", 1, Rarity.UNCOMMON, mage.cards.a.Afterlife.class));
- cards.add(new SetCardInfo("Alabaster Wall", 2, Rarity.COMMON, mage.cards.a.AlabasterWall.class));
- cards.add(new SetCardInfo("Alley Grifters", 115, Rarity.COMMON, mage.cards.a.AlleyGrifters.class));
- cards.add(new SetCardInfo("Ancestral Mask", 229, Rarity.COMMON, mage.cards.a.AncestralMask.class));
- cards.add(new SetCardInfo("Armistice", 3, Rarity.RARE, mage.cards.a.Armistice.class));
- cards.add(new SetCardInfo("Arms Dealer", 172, Rarity.UNCOMMON, mage.cards.a.ArmsDealer.class));
- cards.add(new SetCardInfo("Arrest", 4, Rarity.UNCOMMON, mage.cards.a.Arrest.class));
- cards.add(new SetCardInfo("Ballista Squad", 5, Rarity.UNCOMMON, mage.cards.b.BallistaSquad.class));
- cards.add(new SetCardInfo("Balloon Peddler", 59, Rarity.COMMON, mage.cards.b.BalloonPeddler.class));
- cards.add(new SetCardInfo("Battle Rampart", 173, Rarity.COMMON, mage.cards.b.BattleRampart.class));
- cards.add(new SetCardInfo("Battle Squadron", 174, Rarity.RARE, mage.cards.b.BattleSquadron.class));
- cards.add(new SetCardInfo("Bifurcate", 230, Rarity.RARE, mage.cards.b.Bifurcate.class));
- cards.add(new SetCardInfo("Black Market", 116, Rarity.RARE, mage.cards.b.BlackMarket.class));
- cards.add(new SetCardInfo("Blaster Mage", 175, Rarity.COMMON, mage.cards.b.BlasterMage.class));
- cards.add(new SetCardInfo("Blockade Runner", 60, Rarity.COMMON, mage.cards.b.BlockadeRunner.class));
- cards.add(new SetCardInfo("Blood Hound", 176, Rarity.RARE, mage.cards.b.BloodHound.class));
- cards.add(new SetCardInfo("Blood Oath", 177, Rarity.RARE, mage.cards.b.BloodOath.class));
- cards.add(new SetCardInfo("Boa Constrictor", 231, Rarity.UNCOMMON, mage.cards.b.BoaConstrictor.class));
- cards.add(new SetCardInfo("Bog Smugglers", 117, Rarity.COMMON, mage.cards.b.BogSmugglers.class));
- cards.add(new SetCardInfo("Bog Witch", 118, Rarity.COMMON, mage.cards.b.BogWitch.class));
- cards.add(new SetCardInfo("Brainstorm", 61, Rarity.COMMON, mage.cards.b.Brainstorm.class));
- cards.add(new SetCardInfo("Brawl", 178, Rarity.RARE, mage.cards.b.Brawl.class));
- cards.add(new SetCardInfo("Briar Patch", 232, Rarity.UNCOMMON, mage.cards.b.BriarPatch.class));
- cards.add(new SetCardInfo("Bribery", 62, Rarity.RARE, mage.cards.b.Bribery.class));
- cards.add(new SetCardInfo("Buoyancy", 63, Rarity.COMMON, mage.cards.b.Buoyancy.class));
- cards.add(new SetCardInfo("Cackling Witch", 119, Rarity.UNCOMMON, mage.cards.c.CacklingWitch.class));
- cards.add(new SetCardInfo("Caller of the Hunt", 233, Rarity.RARE, mage.cards.c.CallerOfTheHunt.class));
- cards.add(new SetCardInfo("Cateran Brute", 120, Rarity.COMMON, mage.cards.c.CateranBrute.class));
- cards.add(new SetCardInfo("Cateran Enforcer", 121, Rarity.UNCOMMON, mage.cards.c.CateranEnforcer.class));
- cards.add(new SetCardInfo("Cateran Kidnappers", 122, Rarity.UNCOMMON, mage.cards.c.CateranKidnappers.class));
- cards.add(new SetCardInfo("Cateran Overlord", 123, Rarity.RARE, mage.cards.c.CateranOverlord.class));
- cards.add(new SetCardInfo("Cateran Persuader", 124, Rarity.COMMON, mage.cards.c.CateranPersuader.class));
- cards.add(new SetCardInfo("Cateran Slaver", 125, Rarity.RARE, mage.cards.c.CateranSlaver.class));
- cards.add(new SetCardInfo("Cateran Summons", 126, Rarity.UNCOMMON, mage.cards.c.CateranSummons.class));
- cards.add(new SetCardInfo("Caustic Wasps", 234, Rarity.UNCOMMON, mage.cards.c.CausticWasps.class));
- cards.add(new SetCardInfo("Cave-In", 180, Rarity.RARE, mage.cards.c.CaveIn.class));
- cards.add(new SetCardInfo("Cavern Crawler", 181, Rarity.COMMON, mage.cards.c.CavernCrawler.class));
- cards.add(new SetCardInfo("Cave Sense", 179, Rarity.COMMON, mage.cards.c.CaveSense.class));
- cards.add(new SetCardInfo("Ceremonial Guard", 182, Rarity.COMMON, mage.cards.c.CeremonialGuard.class));
- cards.add(new SetCardInfo("Chambered Nautilus", 64, Rarity.UNCOMMON, mage.cards.c.ChamberedNautilus.class));
- cards.add(new SetCardInfo("Charisma", 66, Rarity.RARE, mage.cards.c.Charisma.class));
- cards.add(new SetCardInfo("Charm Peddler", 6, Rarity.COMMON, mage.cards.c.CharmPeddler.class));
- cards.add(new SetCardInfo("Charmed Griffin", 7, Rarity.UNCOMMON, mage.cards.c.CharmedGriffin.class));
- cards.add(new SetCardInfo("Cho-Arrim Alchemist", 8, Rarity.RARE, mage.cards.c.ChoArrimAlchemist.class));
- cards.add(new SetCardInfo("Cho-Arrim Bruiser", 9, Rarity.RARE, mage.cards.c.ChoArrimBruiser.class));
- cards.add(new SetCardInfo("Cho-Arrim Legate", 10, Rarity.UNCOMMON, mage.cards.c.ChoArrimLegate.class));
- cards.add(new SetCardInfo("Cho-Manno, Revolutionary", 11, Rarity.RARE, mage.cards.c.ChoMannoRevolutionary.class));
- cards.add(new SetCardInfo("Cho-Manno's Blessing", 12, Rarity.COMMON, mage.cards.c.ChoMannosBlessing.class));
- cards.add(new SetCardInfo("Cinder Elemental", 183, Rarity.UNCOMMON, mage.cards.c.CinderElemental.class));
- cards.add(new SetCardInfo("Close Quarters", 184, Rarity.UNCOMMON, mage.cards.c.CloseQuarters.class));
- cards.add(new SetCardInfo("Cloud Sprite", 67, Rarity.COMMON, mage.cards.c.CloudSprite.class));
- cards.add(new SetCardInfo("Coastal Piracy", 68, Rarity.UNCOMMON, mage.cards.c.CoastalPiracy.class));
- cards.add(new SetCardInfo("Collective Unconscious", 236, Rarity.RARE, mage.cards.c.CollectiveUnconscious.class));
- cards.add(new SetCardInfo("Common Cause", 13, Rarity.RARE, mage.cards.c.CommonCause.class));
- cards.add(new SetCardInfo("Conspiracy", 127, Rarity.RARE, mage.cards.c.Conspiracy.class));
- cards.add(new SetCardInfo("Corrupt Official", 128, Rarity.RARE, mage.cards.c.CorruptOfficial.class));
- cards.add(new SetCardInfo("Counterspell", 69, Rarity.COMMON, mage.cards.c.Counterspell.class));
- cards.add(new SetCardInfo("Cowardice", 70, Rarity.RARE, mage.cards.c.Cowardice.class));
- cards.add(new SetCardInfo("Crackdown", 15, Rarity.RARE, mage.cards.c.Crackdown.class));
- cards.add(new SetCardInfo("Crag Saurian", 185, Rarity.RARE, mage.cards.c.CragSaurian.class));
- cards.add(new SetCardInfo("Crash", 186, Rarity.COMMON, mage.cards.c.Crash.class));
- cards.add(new SetCardInfo("Credit Voucher", 289, Rarity.UNCOMMON, mage.cards.c.CreditVoucher.class));
- cards.add(new SetCardInfo("Crenellated Wall", 290, Rarity.UNCOMMON, mage.cards.c.CrenellatedWall.class));
- cards.add(new SetCardInfo("Crooked Scales", 291, Rarity.RARE, mage.cards.c.CrookedScales.class));
- cards.add(new SetCardInfo("Crossbow Infantry", 16, Rarity.COMMON, mage.cards.c.CrossbowInfantry.class));
- cards.add(new SetCardInfo("Crumbling Sanctuary", 292, Rarity.RARE, mage.cards.c.CrumblingSanctuary.class));
- cards.add(new SetCardInfo("Customs Depot", 71, Rarity.UNCOMMON, mage.cards.c.CustomsDepot.class));
- cards.add(new SetCardInfo("Dark Ritual", 129, Rarity.COMMON, mage.cards.d.DarkRitual.class));
- cards.add(new SetCardInfo("Darting Merfolk", 72, Rarity.COMMON, mage.cards.d.DartingMerfolk.class));
- cards.add(new SetCardInfo("Dawnstrider", 237, Rarity.RARE, mage.cards.d.Dawnstrider.class));
- cards.add(new SetCardInfo("Deadly Insect", 238, Rarity.COMMON, mage.cards.d.DeadlyInsect.class));
- cards.add(new SetCardInfo("Deathgazer", 130, Rarity.UNCOMMON, mage.cards.d.Deathgazer.class));
- cards.add(new SetCardInfo("Deepwood Drummer", 239, Rarity.COMMON, mage.cards.d.DeepwoodDrummer.class));
- cards.add(new SetCardInfo("Deepwood Elder", 240, Rarity.RARE, mage.cards.d.DeepwoodElder.class));
- cards.add(new SetCardInfo("Deepwood Ghoul", 131, Rarity.COMMON, mage.cards.d.DeepwoodGhoul.class));
- cards.add(new SetCardInfo("Deepwood Legate", 132, Rarity.UNCOMMON, mage.cards.d.DeepwoodLegate.class));
- cards.add(new SetCardInfo("Deepwood Tantiv", 241, Rarity.UNCOMMON, mage.cards.d.DeepwoodTantiv.class));
- cards.add(new SetCardInfo("Deepwood Wolverine", 242, Rarity.COMMON, mage.cards.d.DeepwoodWolverine.class));
- cards.add(new SetCardInfo("Dehydration", 73, Rarity.COMMON, mage.cards.d.Dehydration.class));
- cards.add(new SetCardInfo("Delraich", 133, Rarity.RARE, mage.cards.d.Delraich.class));
- cards.add(new SetCardInfo("Desert Twister", 243, Rarity.UNCOMMON, mage.cards.d.DesertTwister.class));
- cards.add(new SetCardInfo("Devout Witness", 17, Rarity.COMMON, mage.cards.d.DevoutWitness.class));
- cards.add(new SetCardInfo("Diplomatic Escort", 74, Rarity.UNCOMMON, mage.cards.d.DiplomaticEscort.class));
- cards.add(new SetCardInfo("Diplomatic Immunity", 75, Rarity.COMMON, mage.cards.d.DiplomaticImmunity.class));
- cards.add(new SetCardInfo("Disenchant", 18, Rarity.COMMON, mage.cards.d.Disenchant.class));
- cards.add(new SetCardInfo("Distorting Lens", 293, Rarity.RARE, mage.cards.d.DistortingLens.class));
- cards.add(new SetCardInfo("Drake Hatchling", 76, Rarity.COMMON, mage.cards.d.DrakeHatchling.class));
- cards.add(new SetCardInfo("Dust Bowl", 316, Rarity.RARE, mage.cards.d.DustBowl.class));
- cards.add(new SetCardInfo("Embargo", 77, Rarity.RARE, mage.cards.e.Embargo.class));
- cards.add(new SetCardInfo("Energy Flux", 78, Rarity.UNCOMMON, mage.cards.e.EnergyFlux.class));
- cards.add(new SetCardInfo("Extortion", 135, Rarity.RARE, mage.cards.e.Extortion.class));
- cards.add(new SetCardInfo("Eye of Ramos", 294, Rarity.RARE, mage.cards.e.EyeOfRamos.class));
- cards.add(new SetCardInfo("False Demise", 80, Rarity.UNCOMMON, mage.cards.f.FalseDemise.class));
- cards.add(new SetCardInfo("Flailing Manticore", 187, Rarity.RARE, mage.cards.f.FlailingManticore.class));
- cards.add(new SetCardInfo("Flailing Ogre", 188, Rarity.UNCOMMON, mage.cards.f.FlailingOgre.class));
- cards.add(new SetCardInfo("Flailing Soldier", 189, Rarity.COMMON, mage.cards.f.FlailingSoldier.class));
- cards.add(new SetCardInfo("Flaming Sword", 190, Rarity.COMMON, mage.cards.f.FlamingSword.class));
- cards.add(new SetCardInfo("Food Chain", 246, Rarity.RARE, mage.cards.f.FoodChain.class));
- cards.add(new SetCardInfo("Forced March", 136, Rarity.RARE, mage.cards.f.ForcedMarch.class));
- cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Foster", 247, Rarity.RARE, mage.cards.f.Foster.class));
- cards.add(new SetCardInfo("Fountain of Cho", 317, Rarity.UNCOMMON, mage.cards.f.FountainOfCho.class));
- cards.add(new SetCardInfo("Fountain Watch", 19, Rarity.RARE, mage.cards.f.FountainWatch.class));
- cards.add(new SetCardInfo("Fresh Volunteers", 20, Rarity.COMMON, mage.cards.f.FreshVolunteers.class));
- cards.add(new SetCardInfo("Furious Assault", 191, Rarity.COMMON, mage.cards.f.FuriousAssault.class));
- cards.add(new SetCardInfo("Game Preserve", 248, Rarity.RARE, mage.cards.g.GamePreserve.class));
- cards.add(new SetCardInfo("General's Regalia", 295, Rarity.RARE, mage.cards.g.GeneralsRegalia.class));
- cards.add(new SetCardInfo("Gerrard's Irregulars", 192, Rarity.COMMON, mage.cards.g.GerrardsIrregulars.class));
- cards.add(new SetCardInfo("Ghoul's Feast", 137, Rarity.UNCOMMON, mage.cards.g.GhoulsFeast.class));
- cards.add(new SetCardInfo("Giant Caterpillar", 249, Rarity.COMMON, mage.cards.g.GiantCaterpillar.class));
- cards.add(new SetCardInfo("Glowing Anemone", 81, Rarity.UNCOMMON, mage.cards.g.GlowingAnemone.class));
- cards.add(new SetCardInfo("Groundskeeper", 250, Rarity.UNCOMMON, mage.cards.g.Groundskeeper.class));
- cards.add(new SetCardInfo("Gush", 82, Rarity.COMMON, mage.cards.g.Gush.class));
- cards.add(new SetCardInfo("Hammer Mage", 193, Rarity.UNCOMMON, mage.cards.h.HammerMage.class));
- cards.add(new SetCardInfo("Haunted Crossroads", 138, Rarity.UNCOMMON, mage.cards.h.HauntedCrossroads.class));
- cards.add(new SetCardInfo("Heart of Ramos", 296, Rarity.RARE, mage.cards.h.HeartOfRamos.class));
- cards.add(new SetCardInfo("Henge Guardian", 297, Rarity.UNCOMMON, mage.cards.h.HengeGuardian.class));
- cards.add(new SetCardInfo("Henge of Ramos", 318, Rarity.UNCOMMON, mage.cards.h.HengeOfRamos.class));
- cards.add(new SetCardInfo("Hickory Woodlot", 319, Rarity.COMMON, mage.cards.h.HickoryWoodlot.class));
- cards.add(new SetCardInfo("High Market", 320, Rarity.RARE, mage.cards.h.HighMarket.class));
- cards.add(new SetCardInfo("High Seas", 83, Rarity.UNCOMMON, mage.cards.h.HighSeas.class));
- cards.add(new SetCardInfo("Highway Robber", 139, Rarity.COMMON, mage.cards.h.HighwayRobber.class));
- cards.add(new SetCardInfo("Hired Giant", 194, Rarity.UNCOMMON, mage.cards.h.HiredGiant.class));
- cards.add(new SetCardInfo("Honor the Fallen", 21, Rarity.RARE, mage.cards.h.HonorTheFallen.class));
- cards.add(new SetCardInfo("Hoodwink", 84, Rarity.COMMON, mage.cards.h.Hoodwink.class));
- cards.add(new SetCardInfo("Horned Troll", 251, Rarity.COMMON, mage.cards.h.HornedTroll.class));
- cards.add(new SetCardInfo("Horn of Plenty", 298, Rarity.RARE, mage.cards.h.HornOfPlenty.class));
- cards.add(new SetCardInfo("Horn of Ramos", 299, Rarity.RARE, mage.cards.h.HornOfRamos.class));
- cards.add(new SetCardInfo("Howling Wolf", 252, Rarity.COMMON, mage.cards.h.HowlingWolf.class));
- cards.add(new SetCardInfo("Hunted Wumpus", 253, Rarity.UNCOMMON, mage.cards.h.HuntedWumpus.class));
- cards.add(new SetCardInfo("Ignoble Soldier", 22, Rarity.UNCOMMON, mage.cards.i.IgnobleSoldier.class));
- cards.add(new SetCardInfo("Indentured Djinn", 85, Rarity.UNCOMMON, mage.cards.i.IndenturedDjinn.class));
- cards.add(new SetCardInfo("Instigator", 140, Rarity.RARE, mage.cards.i.Instigator.class));
- cards.add(new SetCardInfo("Intimidation", 142, Rarity.UNCOMMON, mage.cards.i.Intimidation.class));
- cards.add(new SetCardInfo("Invigorate", 254, Rarity.COMMON, mage.cards.i.Invigorate.class));
- cards.add(new SetCardInfo("Inviolability", 23, Rarity.COMMON, mage.cards.i.Inviolability.class));
- cards.add(new SetCardInfo("Iron Lance", 300, Rarity.UNCOMMON, mage.cards.i.IronLance.class));
- cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ivory Mask", 24, Rarity.RARE, mage.cards.i.IvoryMask.class));
- cards.add(new SetCardInfo("Jhovall Queen", 25, Rarity.RARE, mage.cards.j.JhovallQueen.class));
- cards.add(new SetCardInfo("Jhovall Rider", 26, Rarity.UNCOMMON, mage.cards.j.JhovallRider.class));
- cards.add(new SetCardInfo("Karn's Touch", 86, Rarity.RARE, mage.cards.k.KarnsTouch.class));
- cards.add(new SetCardInfo("Kris Mage", 195, Rarity.COMMON, mage.cards.k.KrisMage.class));
- cards.add(new SetCardInfo("Kyren Glider", 196, Rarity.COMMON, mage.cards.k.KyrenGlider.class));
- cards.add(new SetCardInfo("Kyren Legate", 197, Rarity.UNCOMMON, mage.cards.k.KyrenLegate.class));
- cards.add(new SetCardInfo("Kyren Negotiations", 198, Rarity.UNCOMMON, mage.cards.k.KyrenNegotiations.class));
- cards.add(new SetCardInfo("Kyren Sniper", 199, Rarity.COMMON, mage.cards.k.KyrenSniper.class));
- cards.add(new SetCardInfo("Kyren Toy", 303, Rarity.RARE, mage.cards.k.KyrenToy.class));
- cards.add(new SetCardInfo("Land Grant", 255, Rarity.COMMON, mage.cards.l.LandGrant.class));
- cards.add(new SetCardInfo("Larceny", 143, Rarity.UNCOMMON, mage.cards.l.Larceny.class));
- cards.add(new SetCardInfo("Last Breath", 27, Rarity.UNCOMMON, mage.cards.l.LastBreath.class));
- cards.add(new SetCardInfo("Lava Runner", 200, Rarity.RARE, mage.cards.l.LavaRunner.class));
- cards.add(new SetCardInfo("Liability", 144, Rarity.RARE, mage.cards.l.Liability.class));
- cards.add(new SetCardInfo("Lightning Hounds", 201, Rarity.COMMON, mage.cards.l.LightningHounds.class));
- cards.add(new SetCardInfo("Lithophage", 202, Rarity.RARE, mage.cards.l.Lithophage.class));
- cards.add(new SetCardInfo("Lumbering Satyr", 257, Rarity.UNCOMMON, mage.cards.l.LumberingSatyr.class));
- cards.add(new SetCardInfo("Lunge", 203, Rarity.COMMON, mage.cards.l.Lunge.class));
- cards.add(new SetCardInfo("Lure", 258, Rarity.UNCOMMON, mage.cards.l.Lure.class));
- cards.add(new SetCardInfo("Maggot Therapy", 145, Rarity.COMMON, mage.cards.m.MaggotTherapy.class));
- cards.add(new SetCardInfo("Magistrate's Scepter", 304, Rarity.RARE, mage.cards.m.MagistratesScepter.class));
- cards.add(new SetCardInfo("Magistrate's Veto", 204, Rarity.UNCOMMON, mage.cards.m.MagistratesVeto.class));
- cards.add(new SetCardInfo("Mercadia's Downfall", 205, Rarity.UNCOMMON, mage.cards.m.MercadiasDownfall.class));
- cards.add(new SetCardInfo("Mercadian Bazaar", 321, Rarity.UNCOMMON, mage.cards.m.MercadianBazaar.class));
- cards.add(new SetCardInfo("Midnight Ritual", 146, Rarity.RARE, mage.cards.m.MidnightRitual.class));
- cards.add(new SetCardInfo("Misdirection", 87, Rarity.RARE, mage.cards.m.Misdirection.class));
- cards.add(new SetCardInfo("Misshapen Fiend", 147, Rarity.COMMON, mage.cards.m.MisshapenFiend.class));
- cards.add(new SetCardInfo("Misstep", 88, Rarity.COMMON, mage.cards.m.Misstep.class));
- cards.add(new SetCardInfo("Molting Harpy", 148, Rarity.UNCOMMON, mage.cards.m.MoltingHarpy.class));
- cards.add(new SetCardInfo("Moment of Silence", 28, Rarity.COMMON, mage.cards.m.MomentOfSilence.class));
- cards.add(new SetCardInfo("Monkey Cage", 307, Rarity.RARE, mage.cards.m.MonkeyCage.class));
- cards.add(new SetCardInfo("Moonlit Wake", 29, Rarity.UNCOMMON, mage.cards.m.MoonlitWake.class));
- cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Muzzle", 30, Rarity.COMMON, mage.cards.m.Muzzle.class));
- cards.add(new SetCardInfo("Natural Affinity", 260, Rarity.RARE, mage.cards.n.NaturalAffinity.class));
- cards.add(new SetCardInfo("Nether Spirit", 149, Rarity.RARE, mage.cards.n.NetherSpirit.class));
- cards.add(new SetCardInfo("Nightwind Glider", 31, Rarity.COMMON, mage.cards.n.NightwindGlider.class));
- cards.add(new SetCardInfo("Noble Purpose", 32, Rarity.UNCOMMON, mage.cards.n.NoblePurpose.class));
- cards.add(new SetCardInfo("Notorious Assassin", 150, Rarity.RARE, mage.cards.n.NotoriousAssassin.class));
- cards.add(new SetCardInfo("Ogre Taskmaster", 206, Rarity.UNCOMMON, mage.cards.o.OgreTaskmaster.class));
- cards.add(new SetCardInfo("Orim's Cure", 33, Rarity.COMMON, mage.cards.o.OrimsCure.class));
- cards.add(new SetCardInfo("Overtaker", 89, Rarity.RARE, mage.cards.o.Overtaker.class));
- cards.add(new SetCardInfo("Panacea", 308, Rarity.UNCOMMON, mage.cards.p.Panacea.class));
- cards.add(new SetCardInfo("Pangosaur", 261, Rarity.RARE, mage.cards.p.Pangosaur.class));
- cards.add(new SetCardInfo("Peat Bog", 322, Rarity.COMMON, mage.cards.p.PeatBog.class));
- cards.add(new SetCardInfo("Pious Warrior", 34, Rarity.COMMON, mage.cards.p.PiousWarrior.class));
- cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Power Matrix", 309, Rarity.RARE, mage.cards.p.PowerMatrix.class));
- cards.add(new SetCardInfo("Primeval Shambler", 152, Rarity.UNCOMMON, mage.cards.p.PrimevalShambler.class));
- cards.add(new SetCardInfo("Pulverize", 207, Rarity.RARE, mage.cards.p.Pulverize.class));
- cards.add(new SetCardInfo("Putrefaction", 153, Rarity.UNCOMMON, mage.cards.p.Putrefaction.class));
- cards.add(new SetCardInfo("Puppet's Verdict", 208, Rarity.RARE, mage.cards.p.PuppetsVerdict.class));
- cards.add(new SetCardInfo("Quagmire Lamprey", 154, Rarity.UNCOMMON, mage.cards.q.QuagmireLamprey.class));
- cards.add(new SetCardInfo("Rain of Tears", 155, Rarity.UNCOMMON, mage.cards.r.RainOfTears.class));
- cards.add(new SetCardInfo("Ramosian Captain", 35, Rarity.UNCOMMON, mage.cards.r.RamosianCaptain.class));
- cards.add(new SetCardInfo("Ramosian Commander", 36, Rarity.UNCOMMON, mage.cards.r.RamosianCommander.class));
- cards.add(new SetCardInfo("Ramosian Lieutenant", 37, Rarity.COMMON, mage.cards.r.RamosianLieutenant.class));
- cards.add(new SetCardInfo("Ramosian Rally", 38, Rarity.COMMON, mage.cards.r.RamosianRally.class));
- cards.add(new SetCardInfo("Ramosian Sergeant", 39, Rarity.COMMON, mage.cards.r.RamosianSergeant.class));
- cards.add(new SetCardInfo("Ramosian Sky Marshal", 40, Rarity.RARE, mage.cards.r.RamosianSkyMarshal.class));
- cards.add(new SetCardInfo("Rampart Crawler", 156, Rarity.COMMON, mage.cards.r.RampartCrawler.class));
- cards.add(new SetCardInfo("Rappelling Scouts", 41, Rarity.RARE, mage.cards.r.RappellingScouts.class));
- cards.add(new SetCardInfo("Remote Farm", 323, Rarity.COMMON, mage.cards.r.RemoteFarm.class));
- cards.add(new SetCardInfo("Renounce", 42, Rarity.UNCOMMON, mage.cards.r.Renounce.class));
- cards.add(new SetCardInfo("Revered Elder", 43, Rarity.COMMON, mage.cards.r.ReveredElder.class));
- cards.add(new SetCardInfo("Reverent Mantra", 44, Rarity.RARE, mage.cards.r.ReverentMantra.class));
- cards.add(new SetCardInfo("Revive", 262, Rarity.UNCOMMON, mage.cards.r.Revive.class));
- cards.add(new SetCardInfo("Righteous Aura", 45, Rarity.UNCOMMON, mage.cards.r.RighteousAura.class));
- cards.add(new SetCardInfo("Rishadan Airship", 91, Rarity.COMMON, mage.cards.r.RishadanAirship.class));
- cards.add(new SetCardInfo("Rishadan Brigand", 92, Rarity.RARE, mage.cards.r.RishadanBrigand.class));
- cards.add(new SetCardInfo("Rishadan Cutpurse", 93, Rarity.COMMON, mage.cards.r.RishadanCutpurse.class));
- cards.add(new SetCardInfo("Rishadan Footpad", 94, Rarity.UNCOMMON, mage.cards.r.RishadanFootpad.class));
- cards.add(new SetCardInfo("Rishadan Pawnshop", 311, Rarity.RARE, mage.cards.r.RishadanPawnshop.class));
- cards.add(new SetCardInfo("Rishadan Port", 324, Rarity.RARE, mage.cards.r.RishadanPort.class));
- cards.add(new SetCardInfo("Rock Badger", 210, Rarity.UNCOMMON, mage.cards.r.RockBadger.class));
- cards.add(new SetCardInfo("Rouse", 157, Rarity.COMMON, mage.cards.r.Rouse.class));
- cards.add(new SetCardInfo("Rushwood Dryad", 263, Rarity.COMMON, mage.cards.r.RushwoodDryad.class));
- cards.add(new SetCardInfo("Rushwood Elemental", 264, Rarity.RARE, mage.cards.r.RushwoodElemental.class));
- cards.add(new SetCardInfo("Rushwood Grove", 325, Rarity.UNCOMMON, mage.cards.r.RushwoodGrove.class));
- cards.add(new SetCardInfo("Rushwood Herbalist", 265, Rarity.COMMON, mage.cards.r.RushwoodHerbalist.class));
- cards.add(new SetCardInfo("Rushwood Legate", 266, Rarity.UNCOMMON, mage.cards.r.RushwoodLegate.class));
- cards.add(new SetCardInfo("Saber Ants", 267, Rarity.UNCOMMON, mage.cards.s.SaberAnts.class));
- cards.add(new SetCardInfo("Sacred Prey", 268, Rarity.COMMON, mage.cards.s.SacredPrey.class));
- cards.add(new SetCardInfo("Sailmonger", 95, Rarity.UNCOMMON, mage.cards.s.Sailmonger.class));
- cards.add(new SetCardInfo("Sand Squid", 96, Rarity.RARE, mage.cards.s.SandSquid.class));
- cards.add(new SetCardInfo("Sandstone Needle", 326, Rarity.COMMON, mage.cards.s.SandstoneNeedle.class));
- cards.add(new SetCardInfo("Saprazzan Bailiff", 97, Rarity.RARE, mage.cards.s.SaprazzanBailiff.class));
- cards.add(new SetCardInfo("Saprazzan Breaker", 98, Rarity.UNCOMMON, mage.cards.s.SaprazzanBreaker.class));
- cards.add(new SetCardInfo("Saprazzan Cove", 327, Rarity.UNCOMMON, mage.cards.s.SaprazzanCove.class));
- cards.add(new SetCardInfo("Saprazzan Heir", 99, Rarity.RARE, mage.cards.s.SaprazzanHeir.class));
- cards.add(new SetCardInfo("Saprazzan Legate", 100, Rarity.UNCOMMON, mage.cards.s.SaprazzanLegate.class));
- cards.add(new SetCardInfo("Saprazzan Outrigger", 101, Rarity.COMMON, mage.cards.s.SaprazzanOutrigger.class));
- cards.add(new SetCardInfo("Saprazzan Raider", 102, Rarity.COMMON, mage.cards.s.SaprazzanRaider.class));
- cards.add(new SetCardInfo("Saprazzan Skerry", 328, Rarity.COMMON, mage.cards.s.SaprazzanSkerry.class));
- cards.add(new SetCardInfo("Scandalmonger", 158, Rarity.UNCOMMON, mage.cards.s.Scandalmonger.class));
- cards.add(new SetCardInfo("Security Detail", 47, Rarity.RARE, mage.cards.s.SecurityDetail.class));
- cards.add(new SetCardInfo("Seismic Mage", 211, Rarity.RARE, mage.cards.s.SeismicMage.class));
- cards.add(new SetCardInfo("Sever Soul", 159, Rarity.COMMON, mage.cards.s.SeverSoul.class));
- cards.add(new SetCardInfo("Shock Troops", 212, Rarity.COMMON, mage.cards.s.ShockTroops.class));
- cards.add(new SetCardInfo("Shoving Match", 103, Rarity.UNCOMMON, mage.cards.s.ShovingMatch.class));
- cards.add(new SetCardInfo("Silverglade Elemental", 269, Rarity.COMMON, mage.cards.s.SilvergladeElemental.class));
- cards.add(new SetCardInfo("Silverglade Pathfinder", 270, Rarity.UNCOMMON, mage.cards.s.SilvergladePathfinder.class));
- cards.add(new SetCardInfo("Sizzle", 213, Rarity.COMMON, mage.cards.s.Sizzle.class));
- cards.add(new SetCardInfo("Skulking Fugitive", 161, Rarity.COMMON, mage.cards.s.SkulkingFugitive.class));
- cards.add(new SetCardInfo("Skull of Ramos", 312, Rarity.RARE, mage.cards.s.SkullOfRamos.class));
- cards.add(new SetCardInfo("Snake Pit", 271, Rarity.UNCOMMON, mage.cards.s.SnakePit.class));
- cards.add(new SetCardInfo("Snorting Gahr", 272, Rarity.COMMON, mage.cards.s.SnortingGahr.class));
- cards.add(new SetCardInfo("Snuff Out", 162, Rarity.COMMON, mage.cards.s.SnuffOut.class));
- cards.add(new SetCardInfo("Soothing Balm", 48, Rarity.COMMON, mage.cards.s.SoothingBalm.class));
- cards.add(new SetCardInfo("Soothsaying", 104, Rarity.UNCOMMON, mage.cards.s.Soothsaying.class));
- cards.add(new SetCardInfo("Soul Channeling", 163, Rarity.COMMON, mage.cards.s.SoulChanneling.class));
- cards.add(new SetCardInfo("Specter's Wail", 164, Rarity.COMMON, mage.cards.s.SpectersWail.class));
- cards.add(new SetCardInfo("Spidersilk Armor", 273, Rarity.COMMON, mage.cards.s.SpidersilkArmor.class));
- cards.add(new SetCardInfo("Spiritual Focus", 49, Rarity.RARE, mage.cards.s.SpiritualFocus.class));
- cards.add(new SetCardInfo("Spontaneous Generation", 274, Rarity.RARE, mage.cards.s.SpontaneousGeneration.class));
- cards.add(new SetCardInfo("Squall", 275, Rarity.COMMON, mage.cards.s.Squall.class));
- cards.add(new SetCardInfo("Squallmonger", 276, Rarity.UNCOMMON, mage.cards.s.Squallmonger.class));
- cards.add(new SetCardInfo("Squee, Goblin Nabob", 214, Rarity.RARE, mage.cards.s.SqueeGoblinNabob.class));
- cards.add(new SetCardInfo("Squeeze", 105, Rarity.RARE, mage.cards.s.Squeeze.class));
- cards.add(new SetCardInfo("Stamina", 277, Rarity.UNCOMMON, mage.cards.s.Stamina.class));
- cards.add(new SetCardInfo("Statecraft", 106, Rarity.RARE, mage.cards.s.Statecraft.class));
- cards.add(new SetCardInfo("Steadfast Guard", 50, Rarity.COMMON, mage.cards.s.SteadfastGuard.class));
- cards.add(new SetCardInfo("Stinging Barrier", 107, Rarity.COMMON, mage.cards.s.StingingBarrier.class));
- cards.add(new SetCardInfo("Stone Rain", 215, Rarity.COMMON, mage.cards.s.StoneRain.class));
- cards.add(new SetCardInfo("Story Circle", 51, Rarity.UNCOMMON, mage.cards.s.StoryCircle.class));
- cards.add(new SetCardInfo("Strongarm Thug", 165, Rarity.COMMON, mage.cards.s.StrongarmThug.class));
- cards.add(new SetCardInfo("Subterranean Hangar", 329, Rarity.UNCOMMON, mage.cards.s.SubterraneanHangar.class));
- cards.add(new SetCardInfo("Sustenance", 278, Rarity.UNCOMMON, mage.cards.s.Sustenance.class));
- cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Task Force", 52, Rarity.COMMON, mage.cards.t.TaskForce.class));
- cards.add(new SetCardInfo("Tectonic Break", 216, Rarity.RARE, mage.cards.t.TectonicBreak.class));
- cards.add(new SetCardInfo("Territorial Dispute", 217, Rarity.RARE, mage.cards.t.TerritorialDispute.class));
- cards.add(new SetCardInfo("Thermal Glider", 53, Rarity.COMMON, mage.cards.t.ThermalGlider.class));
- cards.add(new SetCardInfo("Thieves' Auction", 218, Rarity.RARE, mage.cards.t.ThievesAuction.class));
- cards.add(new SetCardInfo("Thrashing Wumpus", 166, Rarity.RARE, mage.cards.t.ThrashingWumpus.class));
- cards.add(new SetCardInfo("Thunderclap", 219, Rarity.COMMON, mage.cards.t.Thunderclap.class));
- cards.add(new SetCardInfo("Thwart", 108, Rarity.UNCOMMON, mage.cards.t.Thwart.class));
- cards.add(new SetCardInfo("Tidal Bore", 109, Rarity.COMMON, mage.cards.t.TidalBore.class));
- cards.add(new SetCardInfo("Tidal Kraken", 110, Rarity.RARE, mage.cards.t.TidalKraken.class));
- cards.add(new SetCardInfo("Tiger Claws", 279, Rarity.COMMON, mage.cards.t.TigerClaws.class));
- cards.add(new SetCardInfo("Timid Drake", 111, Rarity.UNCOMMON, mage.cards.t.TimidDrake.class));
- cards.add(new SetCardInfo("Tonic Peddler", 54, Rarity.UNCOMMON, mage.cards.t.TonicPeddler.class));
- cards.add(new SetCardInfo("Tooth of Ramos", 313, Rarity.RARE, mage.cards.t.ToothOfRamos.class));
- cards.add(new SetCardInfo("Tower of the Magistrate", 330, Rarity.RARE, mage.cards.t.TowerOfTheMagistrate.class));
- cards.add(new SetCardInfo("Toymaker", 314, Rarity.UNCOMMON, mage.cards.t.Toymaker.class));
- cards.add(new SetCardInfo("Trade Routes", 112, Rarity.RARE, mage.cards.t.TradeRoutes.class));
- cards.add(new SetCardInfo("Tranquility", 280, Rarity.COMMON, mage.cards.t.Tranquility.class));
- cards.add(new SetCardInfo("Trap Runner", 55, Rarity.UNCOMMON, mage.cards.t.TrapRunner.class));
- cards.add(new SetCardInfo("Tremor", 220, Rarity.COMMON, mage.cards.t.Tremor.class));
- cards.add(new SetCardInfo("Two-Headed Dragon", 221, Rarity.RARE, mage.cards.t.TwoHeadedDragon.class));
- cards.add(new SetCardInfo("Undertaker", 167, Rarity.COMMON, mage.cards.u.Undertaker.class));
- cards.add(new SetCardInfo("Unmask", 168, Rarity.RARE, mage.cards.u.Unmask.class));
- cards.add(new SetCardInfo("Uphill Battle", 222, Rarity.UNCOMMON, mage.cards.u.UphillBattle.class));
- cards.add(new SetCardInfo("Vendetta", 170, Rarity.COMMON, mage.cards.v.Vendetta.class));
- cards.add(new SetCardInfo("Venomous Breath", 281, Rarity.UNCOMMON, mage.cards.v.VenomousBreath.class));
- cards.add(new SetCardInfo("Venomous Dragonfly", 282, Rarity.COMMON, mage.cards.v.VenomousDragonfly.class));
- cards.add(new SetCardInfo("Vernal Equinox", 283, Rarity.RARE, mage.cards.v.VernalEquinox.class));
- cards.add(new SetCardInfo("Vine Dryad", 284, Rarity.RARE, mage.cards.v.VineDryad.class));
- cards.add(new SetCardInfo("Vine Trellis", 285, Rarity.COMMON, mage.cards.v.VineTrellis.class));
- cards.add(new SetCardInfo("Volcanic Wind", 223, Rarity.UNCOMMON, mage.cards.v.VolcanicWind.class));
- cards.add(new SetCardInfo("Wall of Distortion", 171, Rarity.COMMON, mage.cards.w.WallOfDistortion.class));
- cards.add(new SetCardInfo("War Cadence", 224, Rarity.UNCOMMON, mage.cards.w.WarCadence.class));
- cards.add(new SetCardInfo("War Tax", 113, Rarity.UNCOMMON, mage.cards.w.WarTax.class));
- cards.add(new SetCardInfo("Warmonger", 225, Rarity.UNCOMMON, mage.cards.w.Warmonger.class));
- cards.add(new SetCardInfo("Warpath", 226, Rarity.UNCOMMON, mage.cards.w.Warpath.class));
- cards.add(new SetCardInfo("Waterfront Bouncer", 114, Rarity.COMMON, mage.cards.w.WaterfrontBouncer.class));
- cards.add(new SetCardInfo("Wave of Reckoning", 56, Rarity.RARE, mage.cards.w.WaveOfReckoning.class));
- cards.add(new SetCardInfo("Wild Jhovall", 227, Rarity.COMMON, mage.cards.w.WildJhovall.class));
- cards.add(new SetCardInfo("Wishmonger", 57, Rarity.UNCOMMON, mage.cards.w.Wishmonger.class));
- cards.add(new SetCardInfo("Word of Blasting", 228, Rarity.UNCOMMON, mage.cards.w.WordOfBlasting.class));
- cards.add(new SetCardInfo("Worry Beads", 315, Rarity.RARE, mage.cards.w.WorryBeads.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ * @author North
+ */
+public final class MercadianMasques extends ExpansionSet {
+
+ private static final MercadianMasques instance = new MercadianMasques();
+
+ public static MercadianMasques getInstance() {
+ return instance;
+ }
+
+ private MercadianMasques() {
+ super("Mercadian Masques", "MMQ", ExpansionSet.buildDate(1999, 8, 25), SetType.EXPANSION);
+ this.blockName = "Masques";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Aerial Caravan", 58, Rarity.RARE, mage.cards.a.AerialCaravan.class));
+ cards.add(new SetCardInfo("Afterlife", 1, Rarity.UNCOMMON, mage.cards.a.Afterlife.class));
+ cards.add(new SetCardInfo("Alabaster Wall", 2, Rarity.COMMON, mage.cards.a.AlabasterWall.class));
+ cards.add(new SetCardInfo("Alley Grifters", 115, Rarity.COMMON, mage.cards.a.AlleyGrifters.class));
+ cards.add(new SetCardInfo("Ancestral Mask", 229, Rarity.COMMON, mage.cards.a.AncestralMask.class));
+ cards.add(new SetCardInfo("Armistice", 3, Rarity.RARE, mage.cards.a.Armistice.class));
+ cards.add(new SetCardInfo("Arms Dealer", 172, Rarity.UNCOMMON, mage.cards.a.ArmsDealer.class));
+ cards.add(new SetCardInfo("Arrest", 4, Rarity.UNCOMMON, mage.cards.a.Arrest.class));
+ cards.add(new SetCardInfo("Ballista Squad", 5, Rarity.UNCOMMON, mage.cards.b.BallistaSquad.class));
+ cards.add(new SetCardInfo("Balloon Peddler", 59, Rarity.COMMON, mage.cards.b.BalloonPeddler.class));
+ cards.add(new SetCardInfo("Battle Rampart", 173, Rarity.COMMON, mage.cards.b.BattleRampart.class));
+ cards.add(new SetCardInfo("Battle Squadron", 174, Rarity.RARE, mage.cards.b.BattleSquadron.class));
+ cards.add(new SetCardInfo("Bifurcate", 230, Rarity.RARE, mage.cards.b.Bifurcate.class));
+ cards.add(new SetCardInfo("Black Market", 116, Rarity.RARE, mage.cards.b.BlackMarket.class));
+ cards.add(new SetCardInfo("Blaster Mage", 175, Rarity.COMMON, mage.cards.b.BlasterMage.class));
+ cards.add(new SetCardInfo("Blockade Runner", 60, Rarity.COMMON, mage.cards.b.BlockadeRunner.class));
+ cards.add(new SetCardInfo("Blood Hound", 176, Rarity.RARE, mage.cards.b.BloodHound.class));
+ cards.add(new SetCardInfo("Blood Oath", 177, Rarity.RARE, mage.cards.b.BloodOath.class));
+ cards.add(new SetCardInfo("Boa Constrictor", 231, Rarity.UNCOMMON, mage.cards.b.BoaConstrictor.class));
+ cards.add(new SetCardInfo("Bog Smugglers", 117, Rarity.COMMON, mage.cards.b.BogSmugglers.class));
+ cards.add(new SetCardInfo("Bog Witch", 118, Rarity.COMMON, mage.cards.b.BogWitch.class));
+ cards.add(new SetCardInfo("Brainstorm", 61, Rarity.COMMON, mage.cards.b.Brainstorm.class));
+ cards.add(new SetCardInfo("Brawl", 178, Rarity.RARE, mage.cards.b.Brawl.class));
+ cards.add(new SetCardInfo("Briar Patch", 232, Rarity.UNCOMMON, mage.cards.b.BriarPatch.class));
+ cards.add(new SetCardInfo("Bribery", 62, Rarity.RARE, mage.cards.b.Bribery.class));
+ cards.add(new SetCardInfo("Buoyancy", 63, Rarity.COMMON, mage.cards.b.Buoyancy.class));
+ cards.add(new SetCardInfo("Cackling Witch", 119, Rarity.UNCOMMON, mage.cards.c.CacklingWitch.class));
+ cards.add(new SetCardInfo("Caller of the Hunt", 233, Rarity.RARE, mage.cards.c.CallerOfTheHunt.class));
+ cards.add(new SetCardInfo("Cateran Brute", 120, Rarity.COMMON, mage.cards.c.CateranBrute.class));
+ cards.add(new SetCardInfo("Cateran Enforcer", 121, Rarity.UNCOMMON, mage.cards.c.CateranEnforcer.class));
+ cards.add(new SetCardInfo("Cateran Kidnappers", 122, Rarity.UNCOMMON, mage.cards.c.CateranKidnappers.class));
+ cards.add(new SetCardInfo("Cateran Overlord", 123, Rarity.RARE, mage.cards.c.CateranOverlord.class));
+ cards.add(new SetCardInfo("Cateran Persuader", 124, Rarity.COMMON, mage.cards.c.CateranPersuader.class));
+ cards.add(new SetCardInfo("Cateran Slaver", 125, Rarity.RARE, mage.cards.c.CateranSlaver.class));
+ cards.add(new SetCardInfo("Cateran Summons", 126, Rarity.UNCOMMON, mage.cards.c.CateranSummons.class));
+ cards.add(new SetCardInfo("Caustic Wasps", 234, Rarity.UNCOMMON, mage.cards.c.CausticWasps.class));
+ cards.add(new SetCardInfo("Cave-In", 180, Rarity.RARE, mage.cards.c.CaveIn.class));
+ cards.add(new SetCardInfo("Cavern Crawler", 181, Rarity.COMMON, mage.cards.c.CavernCrawler.class));
+ cards.add(new SetCardInfo("Cave Sense", 179, Rarity.COMMON, mage.cards.c.CaveSense.class));
+ cards.add(new SetCardInfo("Ceremonial Guard", 182, Rarity.COMMON, mage.cards.c.CeremonialGuard.class));
+ cards.add(new SetCardInfo("Chambered Nautilus", 64, Rarity.UNCOMMON, mage.cards.c.ChamberedNautilus.class));
+ cards.add(new SetCardInfo("Charisma", 66, Rarity.RARE, mage.cards.c.Charisma.class));
+ cards.add(new SetCardInfo("Charm Peddler", 6, Rarity.COMMON, mage.cards.c.CharmPeddler.class));
+ cards.add(new SetCardInfo("Charmed Griffin", 7, Rarity.UNCOMMON, mage.cards.c.CharmedGriffin.class));
+ cards.add(new SetCardInfo("Cho-Arrim Alchemist", 8, Rarity.RARE, mage.cards.c.ChoArrimAlchemist.class));
+ cards.add(new SetCardInfo("Cho-Arrim Bruiser", 9, Rarity.RARE, mage.cards.c.ChoArrimBruiser.class));
+ cards.add(new SetCardInfo("Cho-Arrim Legate", 10, Rarity.UNCOMMON, mage.cards.c.ChoArrimLegate.class));
+ cards.add(new SetCardInfo("Cho-Manno, Revolutionary", 11, Rarity.RARE, mage.cards.c.ChoMannoRevolutionary.class));
+ cards.add(new SetCardInfo("Cho-Manno's Blessing", 12, Rarity.COMMON, mage.cards.c.ChoMannosBlessing.class));
+ cards.add(new SetCardInfo("Cinder Elemental", 183, Rarity.UNCOMMON, mage.cards.c.CinderElemental.class));
+ cards.add(new SetCardInfo("Close Quarters", 184, Rarity.UNCOMMON, mage.cards.c.CloseQuarters.class));
+ cards.add(new SetCardInfo("Cloud Sprite", 67, Rarity.COMMON, mage.cards.c.CloudSprite.class));
+ cards.add(new SetCardInfo("Coastal Piracy", 68, Rarity.UNCOMMON, mage.cards.c.CoastalPiracy.class));
+ cards.add(new SetCardInfo("Collective Unconscious", 236, Rarity.RARE, mage.cards.c.CollectiveUnconscious.class));
+ cards.add(new SetCardInfo("Common Cause", 13, Rarity.RARE, mage.cards.c.CommonCause.class));
+ cards.add(new SetCardInfo("Conspiracy", 127, Rarity.RARE, mage.cards.c.Conspiracy.class));
+ cards.add(new SetCardInfo("Corrupt Official", 128, Rarity.RARE, mage.cards.c.CorruptOfficial.class));
+ cards.add(new SetCardInfo("Counterspell", 69, Rarity.COMMON, mage.cards.c.Counterspell.class));
+ cards.add(new SetCardInfo("Cowardice", 70, Rarity.RARE, mage.cards.c.Cowardice.class));
+ cards.add(new SetCardInfo("Crackdown", 15, Rarity.RARE, mage.cards.c.Crackdown.class));
+ cards.add(new SetCardInfo("Crag Saurian", 185, Rarity.RARE, mage.cards.c.CragSaurian.class));
+ cards.add(new SetCardInfo("Crash", 186, Rarity.COMMON, mage.cards.c.Crash.class));
+ cards.add(new SetCardInfo("Credit Voucher", 289, Rarity.UNCOMMON, mage.cards.c.CreditVoucher.class));
+ cards.add(new SetCardInfo("Crenellated Wall", 290, Rarity.UNCOMMON, mage.cards.c.CrenellatedWall.class));
+ cards.add(new SetCardInfo("Crooked Scales", 291, Rarity.RARE, mage.cards.c.CrookedScales.class));
+ cards.add(new SetCardInfo("Crossbow Infantry", 16, Rarity.COMMON, mage.cards.c.CrossbowInfantry.class));
+ cards.add(new SetCardInfo("Crumbling Sanctuary", 292, Rarity.RARE, mage.cards.c.CrumblingSanctuary.class));
+ cards.add(new SetCardInfo("Customs Depot", 71, Rarity.UNCOMMON, mage.cards.c.CustomsDepot.class));
+ cards.add(new SetCardInfo("Dark Ritual", 129, Rarity.COMMON, mage.cards.d.DarkRitual.class));
+ cards.add(new SetCardInfo("Darting Merfolk", 72, Rarity.COMMON, mage.cards.d.DartingMerfolk.class));
+ cards.add(new SetCardInfo("Dawnstrider", 237, Rarity.RARE, mage.cards.d.Dawnstrider.class));
+ cards.add(new SetCardInfo("Deadly Insect", 238, Rarity.COMMON, mage.cards.d.DeadlyInsect.class));
+ cards.add(new SetCardInfo("Deathgazer", 130, Rarity.UNCOMMON, mage.cards.d.Deathgazer.class));
+ cards.add(new SetCardInfo("Deepwood Drummer", 239, Rarity.COMMON, mage.cards.d.DeepwoodDrummer.class));
+ cards.add(new SetCardInfo("Deepwood Elder", 240, Rarity.RARE, mage.cards.d.DeepwoodElder.class));
+ cards.add(new SetCardInfo("Deepwood Ghoul", 131, Rarity.COMMON, mage.cards.d.DeepwoodGhoul.class));
+ cards.add(new SetCardInfo("Deepwood Legate", 132, Rarity.UNCOMMON, mage.cards.d.DeepwoodLegate.class));
+ cards.add(new SetCardInfo("Deepwood Tantiv", 241, Rarity.UNCOMMON, mage.cards.d.DeepwoodTantiv.class));
+ cards.add(new SetCardInfo("Deepwood Wolverine", 242, Rarity.COMMON, mage.cards.d.DeepwoodWolverine.class));
+ cards.add(new SetCardInfo("Dehydration", 73, Rarity.COMMON, mage.cards.d.Dehydration.class));
+ cards.add(new SetCardInfo("Delraich", 133, Rarity.RARE, mage.cards.d.Delraich.class));
+ cards.add(new SetCardInfo("Desert Twister", 243, Rarity.UNCOMMON, mage.cards.d.DesertTwister.class));
+ cards.add(new SetCardInfo("Devout Witness", 17, Rarity.COMMON, mage.cards.d.DevoutWitness.class));
+ cards.add(new SetCardInfo("Diplomatic Escort", 74, Rarity.UNCOMMON, mage.cards.d.DiplomaticEscort.class));
+ cards.add(new SetCardInfo("Diplomatic Immunity", 75, Rarity.COMMON, mage.cards.d.DiplomaticImmunity.class));
+ cards.add(new SetCardInfo("Disenchant", 18, Rarity.COMMON, mage.cards.d.Disenchant.class));
+ cards.add(new SetCardInfo("Distorting Lens", 293, Rarity.RARE, mage.cards.d.DistortingLens.class));
+ cards.add(new SetCardInfo("Drake Hatchling", 76, Rarity.COMMON, mage.cards.d.DrakeHatchling.class));
+ cards.add(new SetCardInfo("Dust Bowl", 316, Rarity.RARE, mage.cards.d.DustBowl.class));
+ cards.add(new SetCardInfo("Embargo", 77, Rarity.RARE, mage.cards.e.Embargo.class));
+ cards.add(new SetCardInfo("Energy Flux", 78, Rarity.UNCOMMON, mage.cards.e.EnergyFlux.class));
+ cards.add(new SetCardInfo("Enslaved Horror", 134, Rarity.UNCOMMON, mage.cards.e.EnslavedHorror.class));
+ cards.add(new SetCardInfo("Extortion", 135, Rarity.RARE, mage.cards.e.Extortion.class));
+ cards.add(new SetCardInfo("Eye of Ramos", 294, Rarity.RARE, mage.cards.e.EyeOfRamos.class));
+ cards.add(new SetCardInfo("False Demise", 80, Rarity.UNCOMMON, mage.cards.f.FalseDemise.class));
+ cards.add(new SetCardInfo("Flailing Manticore", 187, Rarity.RARE, mage.cards.f.FlailingManticore.class));
+ cards.add(new SetCardInfo("Flailing Ogre", 188, Rarity.UNCOMMON, mage.cards.f.FlailingOgre.class));
+ cards.add(new SetCardInfo("Flailing Soldier", 189, Rarity.COMMON, mage.cards.f.FlailingSoldier.class));
+ cards.add(new SetCardInfo("Flaming Sword", 190, Rarity.COMMON, mage.cards.f.FlamingSword.class));
+ cards.add(new SetCardInfo("Food Chain", 246, Rarity.RARE, mage.cards.f.FoodChain.class));
+ cards.add(new SetCardInfo("Forced March", 136, Rarity.RARE, mage.cards.f.ForcedMarch.class));
+ cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Foster", 247, Rarity.RARE, mage.cards.f.Foster.class));
+ cards.add(new SetCardInfo("Fountain of Cho", 317, Rarity.UNCOMMON, mage.cards.f.FountainOfCho.class));
+ cards.add(new SetCardInfo("Fountain Watch", 19, Rarity.RARE, mage.cards.f.FountainWatch.class));
+ cards.add(new SetCardInfo("Fresh Volunteers", 20, Rarity.COMMON, mage.cards.f.FreshVolunteers.class));
+ cards.add(new SetCardInfo("Furious Assault", 191, Rarity.COMMON, mage.cards.f.FuriousAssault.class));
+ cards.add(new SetCardInfo("Game Preserve", 248, Rarity.RARE, mage.cards.g.GamePreserve.class));
+ cards.add(new SetCardInfo("General's Regalia", 295, Rarity.RARE, mage.cards.g.GeneralsRegalia.class));
+ cards.add(new SetCardInfo("Gerrard's Irregulars", 192, Rarity.COMMON, mage.cards.g.GerrardsIrregulars.class));
+ cards.add(new SetCardInfo("Ghoul's Feast", 137, Rarity.UNCOMMON, mage.cards.g.GhoulsFeast.class));
+ cards.add(new SetCardInfo("Giant Caterpillar", 249, Rarity.COMMON, mage.cards.g.GiantCaterpillar.class));
+ cards.add(new SetCardInfo("Glowing Anemone", 81, Rarity.UNCOMMON, mage.cards.g.GlowingAnemone.class));
+ cards.add(new SetCardInfo("Groundskeeper", 250, Rarity.UNCOMMON, mage.cards.g.Groundskeeper.class));
+ cards.add(new SetCardInfo("Gush", 82, Rarity.COMMON, mage.cards.g.Gush.class));
+ cards.add(new SetCardInfo("Hammer Mage", 193, Rarity.UNCOMMON, mage.cards.h.HammerMage.class));
+ cards.add(new SetCardInfo("Haunted Crossroads", 138, Rarity.UNCOMMON, mage.cards.h.HauntedCrossroads.class));
+ cards.add(new SetCardInfo("Heart of Ramos", 296, Rarity.RARE, mage.cards.h.HeartOfRamos.class));
+ cards.add(new SetCardInfo("Henge Guardian", 297, Rarity.UNCOMMON, mage.cards.h.HengeGuardian.class));
+ cards.add(new SetCardInfo("Henge of Ramos", 318, Rarity.UNCOMMON, mage.cards.h.HengeOfRamos.class));
+ cards.add(new SetCardInfo("Hickory Woodlot", 319, Rarity.COMMON, mage.cards.h.HickoryWoodlot.class));
+ cards.add(new SetCardInfo("High Market", 320, Rarity.RARE, mage.cards.h.HighMarket.class));
+ cards.add(new SetCardInfo("High Seas", 83, Rarity.UNCOMMON, mage.cards.h.HighSeas.class));
+ cards.add(new SetCardInfo("Highway Robber", 139, Rarity.COMMON, mage.cards.h.HighwayRobber.class));
+ cards.add(new SetCardInfo("Hired Giant", 194, Rarity.UNCOMMON, mage.cards.h.HiredGiant.class));
+ cards.add(new SetCardInfo("Honor the Fallen", 21, Rarity.RARE, mage.cards.h.HonorTheFallen.class));
+ cards.add(new SetCardInfo("Hoodwink", 84, Rarity.COMMON, mage.cards.h.Hoodwink.class));
+ cards.add(new SetCardInfo("Horned Troll", 251, Rarity.COMMON, mage.cards.h.HornedTroll.class));
+ cards.add(new SetCardInfo("Horn of Plenty", 298, Rarity.RARE, mage.cards.h.HornOfPlenty.class));
+ cards.add(new SetCardInfo("Horn of Ramos", 299, Rarity.RARE, mage.cards.h.HornOfRamos.class));
+ cards.add(new SetCardInfo("Howling Wolf", 252, Rarity.COMMON, mage.cards.h.HowlingWolf.class));
+ cards.add(new SetCardInfo("Hunted Wumpus", 253, Rarity.UNCOMMON, mage.cards.h.HuntedWumpus.class));
+ cards.add(new SetCardInfo("Ignoble Soldier", 22, Rarity.UNCOMMON, mage.cards.i.IgnobleSoldier.class));
+ cards.add(new SetCardInfo("Indentured Djinn", 85, Rarity.UNCOMMON, mage.cards.i.IndenturedDjinn.class));
+ cards.add(new SetCardInfo("Instigator", 140, Rarity.RARE, mage.cards.i.Instigator.class));
+ cards.add(new SetCardInfo("Intimidation", 142, Rarity.UNCOMMON, mage.cards.i.Intimidation.class));
+ cards.add(new SetCardInfo("Invigorate", 254, Rarity.COMMON, mage.cards.i.Invigorate.class));
+ cards.add(new SetCardInfo("Inviolability", 23, Rarity.COMMON, mage.cards.i.Inviolability.class));
+ cards.add(new SetCardInfo("Iron Lance", 300, Rarity.UNCOMMON, mage.cards.i.IronLance.class));
+ cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ivory Mask", 24, Rarity.RARE, mage.cards.i.IvoryMask.class));
+ cards.add(new SetCardInfo("Jhovall Queen", 25, Rarity.RARE, mage.cards.j.JhovallQueen.class));
+ cards.add(new SetCardInfo("Jhovall Rider", 26, Rarity.UNCOMMON, mage.cards.j.JhovallRider.class));
+ cards.add(new SetCardInfo("Karn's Touch", 86, Rarity.RARE, mage.cards.k.KarnsTouch.class));
+ cards.add(new SetCardInfo("Kris Mage", 195, Rarity.COMMON, mage.cards.k.KrisMage.class));
+ cards.add(new SetCardInfo("Kyren Archive", 302, Rarity.RARE, mage.cards.k.KyrenArchive.class));
+ cards.add(new SetCardInfo("Kyren Glider", 196, Rarity.COMMON, mage.cards.k.KyrenGlider.class));
+ cards.add(new SetCardInfo("Kyren Legate", 197, Rarity.UNCOMMON, mage.cards.k.KyrenLegate.class));
+ cards.add(new SetCardInfo("Kyren Negotiations", 198, Rarity.UNCOMMON, mage.cards.k.KyrenNegotiations.class));
+ cards.add(new SetCardInfo("Kyren Sniper", 199, Rarity.COMMON, mage.cards.k.KyrenSniper.class));
+ cards.add(new SetCardInfo("Kyren Toy", 303, Rarity.RARE, mage.cards.k.KyrenToy.class));
+ cards.add(new SetCardInfo("Land Grant", 255, Rarity.COMMON, mage.cards.l.LandGrant.class));
+ cards.add(new SetCardInfo("Larceny", 143, Rarity.UNCOMMON, mage.cards.l.Larceny.class));
+ cards.add(new SetCardInfo("Last Breath", 27, Rarity.UNCOMMON, mage.cards.l.LastBreath.class));
+ cards.add(new SetCardInfo("Lava Runner", 200, Rarity.RARE, mage.cards.l.LavaRunner.class));
+ cards.add(new SetCardInfo("Liability", 144, Rarity.RARE, mage.cards.l.Liability.class));
+ cards.add(new SetCardInfo("Lightning Hounds", 201, Rarity.COMMON, mage.cards.l.LightningHounds.class));
+ cards.add(new SetCardInfo("Lithophage", 202, Rarity.RARE, mage.cards.l.Lithophage.class));
+ cards.add(new SetCardInfo("Lumbering Satyr", 257, Rarity.UNCOMMON, mage.cards.l.LumberingSatyr.class));
+ cards.add(new SetCardInfo("Lunge", 203, Rarity.COMMON, mage.cards.l.Lunge.class));
+ cards.add(new SetCardInfo("Lure", 258, Rarity.UNCOMMON, mage.cards.l.Lure.class));
+ cards.add(new SetCardInfo("Maggot Therapy", 145, Rarity.COMMON, mage.cards.m.MaggotTherapy.class));
+ cards.add(new SetCardInfo("Magistrate's Scepter", 304, Rarity.RARE, mage.cards.m.MagistratesScepter.class));
+ cards.add(new SetCardInfo("Magistrate's Veto", 204, Rarity.UNCOMMON, mage.cards.m.MagistratesVeto.class));
+ cards.add(new SetCardInfo("Mercadia's Downfall", 205, Rarity.UNCOMMON, mage.cards.m.MercadiasDownfall.class));
+ cards.add(new SetCardInfo("Mercadian Atlas", 305, Rarity.RARE, mage.cards.m.MercadianAtlas.class));
+ cards.add(new SetCardInfo("Mercadian Bazaar", 321, Rarity.UNCOMMON, mage.cards.m.MercadianBazaar.class));
+ cards.add(new SetCardInfo("Midnight Ritual", 146, Rarity.RARE, mage.cards.m.MidnightRitual.class));
+ cards.add(new SetCardInfo("Misdirection", 87, Rarity.RARE, mage.cards.m.Misdirection.class));
+ cards.add(new SetCardInfo("Misshapen Fiend", 147, Rarity.COMMON, mage.cards.m.MisshapenFiend.class));
+ cards.add(new SetCardInfo("Misstep", 88, Rarity.COMMON, mage.cards.m.Misstep.class));
+ cards.add(new SetCardInfo("Molting Harpy", 148, Rarity.UNCOMMON, mage.cards.m.MoltingHarpy.class));
+ cards.add(new SetCardInfo("Moment of Silence", 28, Rarity.COMMON, mage.cards.m.MomentOfSilence.class));
+ cards.add(new SetCardInfo("Monkey Cage", 307, Rarity.RARE, mage.cards.m.MonkeyCage.class));
+ cards.add(new SetCardInfo("Moonlit Wake", 29, Rarity.UNCOMMON, mage.cards.m.MoonlitWake.class));
+ cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Muzzle", 30, Rarity.COMMON, mage.cards.m.Muzzle.class));
+ cards.add(new SetCardInfo("Natural Affinity", 260, Rarity.RARE, mage.cards.n.NaturalAffinity.class));
+ cards.add(new SetCardInfo("Nether Spirit", 149, Rarity.RARE, mage.cards.n.NetherSpirit.class));
+ cards.add(new SetCardInfo("Nightwind Glider", 31, Rarity.COMMON, mage.cards.n.NightwindGlider.class));
+ cards.add(new SetCardInfo("Noble Purpose", 32, Rarity.UNCOMMON, mage.cards.n.NoblePurpose.class));
+ cards.add(new SetCardInfo("Notorious Assassin", 150, Rarity.RARE, mage.cards.n.NotoriousAssassin.class));
+ cards.add(new SetCardInfo("Ogre Taskmaster", 206, Rarity.UNCOMMON, mage.cards.o.OgreTaskmaster.class));
+ cards.add(new SetCardInfo("Orim's Cure", 33, Rarity.COMMON, mage.cards.o.OrimsCure.class));
+ cards.add(new SetCardInfo("Overtaker", 89, Rarity.RARE, mage.cards.o.Overtaker.class));
+ cards.add(new SetCardInfo("Panacea", 308, Rarity.UNCOMMON, mage.cards.p.Panacea.class));
+ cards.add(new SetCardInfo("Pangosaur", 261, Rarity.RARE, mage.cards.p.Pangosaur.class));
+ cards.add(new SetCardInfo("Peat Bog", 322, Rarity.COMMON, mage.cards.p.PeatBog.class));
+ cards.add(new SetCardInfo("Pious Warrior", 34, Rarity.COMMON, mage.cards.p.PiousWarrior.class));
+ cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Power Matrix", 309, Rarity.RARE, mage.cards.p.PowerMatrix.class));
+ cards.add(new SetCardInfo("Primeval Shambler", 152, Rarity.UNCOMMON, mage.cards.p.PrimevalShambler.class));
+ cards.add(new SetCardInfo("Pulverize", 207, Rarity.RARE, mage.cards.p.Pulverize.class));
+ cards.add(new SetCardInfo("Putrefaction", 153, Rarity.UNCOMMON, mage.cards.p.Putrefaction.class));
+ cards.add(new SetCardInfo("Puppet's Verdict", 208, Rarity.RARE, mage.cards.p.PuppetsVerdict.class));
+ cards.add(new SetCardInfo("Quagmire Lamprey", 154, Rarity.UNCOMMON, mage.cards.q.QuagmireLamprey.class));
+ cards.add(new SetCardInfo("Rain of Tears", 155, Rarity.UNCOMMON, mage.cards.r.RainOfTears.class));
+ cards.add(new SetCardInfo("Ramosian Captain", 35, Rarity.UNCOMMON, mage.cards.r.RamosianCaptain.class));
+ cards.add(new SetCardInfo("Ramosian Commander", 36, Rarity.UNCOMMON, mage.cards.r.RamosianCommander.class));
+ cards.add(new SetCardInfo("Ramosian Lieutenant", 37, Rarity.COMMON, mage.cards.r.RamosianLieutenant.class));
+ cards.add(new SetCardInfo("Ramosian Rally", 38, Rarity.COMMON, mage.cards.r.RamosianRally.class));
+ cards.add(new SetCardInfo("Ramosian Sergeant", 39, Rarity.COMMON, mage.cards.r.RamosianSergeant.class));
+ cards.add(new SetCardInfo("Ramosian Sky Marshal", 40, Rarity.RARE, mage.cards.r.RamosianSkyMarshal.class));
+ cards.add(new SetCardInfo("Rampart Crawler", 156, Rarity.COMMON, mage.cards.r.RampartCrawler.class));
+ cards.add(new SetCardInfo("Rappelling Scouts", 41, Rarity.RARE, mage.cards.r.RappellingScouts.class));
+ cards.add(new SetCardInfo("Remote Farm", 323, Rarity.COMMON, mage.cards.r.RemoteFarm.class));
+ cards.add(new SetCardInfo("Renounce", 42, Rarity.UNCOMMON, mage.cards.r.Renounce.class));
+ cards.add(new SetCardInfo("Revered Elder", 43, Rarity.COMMON, mage.cards.r.ReveredElder.class));
+ cards.add(new SetCardInfo("Reverent Mantra", 44, Rarity.RARE, mage.cards.r.ReverentMantra.class));
+ cards.add(new SetCardInfo("Revive", 262, Rarity.UNCOMMON, mage.cards.r.Revive.class));
+ cards.add(new SetCardInfo("Righteous Aura", 45, Rarity.UNCOMMON, mage.cards.r.RighteousAura.class));
+ cards.add(new SetCardInfo("Rishadan Airship", 91, Rarity.COMMON, mage.cards.r.RishadanAirship.class));
+ cards.add(new SetCardInfo("Rishadan Brigand", 92, Rarity.RARE, mage.cards.r.RishadanBrigand.class));
+ cards.add(new SetCardInfo("Rishadan Cutpurse", 93, Rarity.COMMON, mage.cards.r.RishadanCutpurse.class));
+ cards.add(new SetCardInfo("Rishadan Footpad", 94, Rarity.UNCOMMON, mage.cards.r.RishadanFootpad.class));
+ cards.add(new SetCardInfo("Rishadan Pawnshop", 311, Rarity.RARE, mage.cards.r.RishadanPawnshop.class));
+ cards.add(new SetCardInfo("Rishadan Port", 324, Rarity.RARE, mage.cards.r.RishadanPort.class));
+ cards.add(new SetCardInfo("Rock Badger", 210, Rarity.UNCOMMON, mage.cards.r.RockBadger.class));
+ cards.add(new SetCardInfo("Rouse", 157, Rarity.COMMON, mage.cards.r.Rouse.class));
+ cards.add(new SetCardInfo("Rushwood Dryad", 263, Rarity.COMMON, mage.cards.r.RushwoodDryad.class));
+ cards.add(new SetCardInfo("Rushwood Elemental", 264, Rarity.RARE, mage.cards.r.RushwoodElemental.class));
+ cards.add(new SetCardInfo("Rushwood Grove", 325, Rarity.UNCOMMON, mage.cards.r.RushwoodGrove.class));
+ cards.add(new SetCardInfo("Rushwood Herbalist", 265, Rarity.COMMON, mage.cards.r.RushwoodHerbalist.class));
+ cards.add(new SetCardInfo("Rushwood Legate", 266, Rarity.UNCOMMON, mage.cards.r.RushwoodLegate.class));
+ cards.add(new SetCardInfo("Saber Ants", 267, Rarity.UNCOMMON, mage.cards.s.SaberAnts.class));
+ cards.add(new SetCardInfo("Sacred Prey", 268, Rarity.COMMON, mage.cards.s.SacredPrey.class));
+ cards.add(new SetCardInfo("Sailmonger", 95, Rarity.UNCOMMON, mage.cards.s.Sailmonger.class));
+ cards.add(new SetCardInfo("Sand Squid", 96, Rarity.RARE, mage.cards.s.SandSquid.class));
+ cards.add(new SetCardInfo("Sandstone Needle", 326, Rarity.COMMON, mage.cards.s.SandstoneNeedle.class));
+ cards.add(new SetCardInfo("Saprazzan Bailiff", 97, Rarity.RARE, mage.cards.s.SaprazzanBailiff.class));
+ cards.add(new SetCardInfo("Saprazzan Breaker", 98, Rarity.UNCOMMON, mage.cards.s.SaprazzanBreaker.class));
+ cards.add(new SetCardInfo("Saprazzan Cove", 327, Rarity.UNCOMMON, mage.cards.s.SaprazzanCove.class));
+ cards.add(new SetCardInfo("Saprazzan Heir", 99, Rarity.RARE, mage.cards.s.SaprazzanHeir.class));
+ cards.add(new SetCardInfo("Saprazzan Legate", 100, Rarity.UNCOMMON, mage.cards.s.SaprazzanLegate.class));
+ cards.add(new SetCardInfo("Saprazzan Outrigger", 101, Rarity.COMMON, mage.cards.s.SaprazzanOutrigger.class));
+ cards.add(new SetCardInfo("Saprazzan Raider", 102, Rarity.COMMON, mage.cards.s.SaprazzanRaider.class));
+ cards.add(new SetCardInfo("Saprazzan Skerry", 328, Rarity.COMMON, mage.cards.s.SaprazzanSkerry.class));
+ cards.add(new SetCardInfo("Scandalmonger", 158, Rarity.UNCOMMON, mage.cards.s.Scandalmonger.class));
+ cards.add(new SetCardInfo("Security Detail", 47, Rarity.RARE, mage.cards.s.SecurityDetail.class));
+ cards.add(new SetCardInfo("Seismic Mage", 211, Rarity.RARE, mage.cards.s.SeismicMage.class));
+ cards.add(new SetCardInfo("Sever Soul", 159, Rarity.COMMON, mage.cards.s.SeverSoul.class));
+ cards.add(new SetCardInfo("Shock Troops", 212, Rarity.COMMON, mage.cards.s.ShockTroops.class));
+ cards.add(new SetCardInfo("Shoving Match", 103, Rarity.UNCOMMON, mage.cards.s.ShovingMatch.class));
+ cards.add(new SetCardInfo("Silverglade Elemental", 269, Rarity.COMMON, mage.cards.s.SilvergladeElemental.class));
+ cards.add(new SetCardInfo("Silverglade Pathfinder", 270, Rarity.UNCOMMON, mage.cards.s.SilvergladePathfinder.class));
+ cards.add(new SetCardInfo("Sizzle", 213, Rarity.COMMON, mage.cards.s.Sizzle.class));
+ cards.add(new SetCardInfo("Skulking Fugitive", 161, Rarity.COMMON, mage.cards.s.SkulkingFugitive.class));
+ cards.add(new SetCardInfo("Skull of Ramos", 312, Rarity.RARE, mage.cards.s.SkullOfRamos.class));
+ cards.add(new SetCardInfo("Snake Pit", 271, Rarity.UNCOMMON, mage.cards.s.SnakePit.class));
+ cards.add(new SetCardInfo("Snorting Gahr", 272, Rarity.COMMON, mage.cards.s.SnortingGahr.class));
+ cards.add(new SetCardInfo("Snuff Out", 162, Rarity.COMMON, mage.cards.s.SnuffOut.class));
+ cards.add(new SetCardInfo("Soothing Balm", 48, Rarity.COMMON, mage.cards.s.SoothingBalm.class));
+ cards.add(new SetCardInfo("Soothsaying", 104, Rarity.UNCOMMON, mage.cards.s.Soothsaying.class));
+ cards.add(new SetCardInfo("Soul Channeling", 163, Rarity.COMMON, mage.cards.s.SoulChanneling.class));
+ cards.add(new SetCardInfo("Specter's Wail", 164, Rarity.COMMON, mage.cards.s.SpectersWail.class));
+ cards.add(new SetCardInfo("Spidersilk Armor", 273, Rarity.COMMON, mage.cards.s.SpidersilkArmor.class));
+ cards.add(new SetCardInfo("Spiritual Focus", 49, Rarity.RARE, mage.cards.s.SpiritualFocus.class));
+ cards.add(new SetCardInfo("Spontaneous Generation", 274, Rarity.RARE, mage.cards.s.SpontaneousGeneration.class));
+ cards.add(new SetCardInfo("Squall", 275, Rarity.COMMON, mage.cards.s.Squall.class));
+ cards.add(new SetCardInfo("Squallmonger", 276, Rarity.UNCOMMON, mage.cards.s.Squallmonger.class));
+ cards.add(new SetCardInfo("Squee, Goblin Nabob", 214, Rarity.RARE, mage.cards.s.SqueeGoblinNabob.class));
+ cards.add(new SetCardInfo("Squeeze", 105, Rarity.RARE, mage.cards.s.Squeeze.class));
+ cards.add(new SetCardInfo("Stamina", 277, Rarity.UNCOMMON, mage.cards.s.Stamina.class));
+ cards.add(new SetCardInfo("Statecraft", 106, Rarity.RARE, mage.cards.s.Statecraft.class));
+ cards.add(new SetCardInfo("Steadfast Guard", 50, Rarity.COMMON, mage.cards.s.SteadfastGuard.class));
+ cards.add(new SetCardInfo("Stinging Barrier", 107, Rarity.COMMON, mage.cards.s.StingingBarrier.class));
+ cards.add(new SetCardInfo("Stone Rain", 215, Rarity.COMMON, mage.cards.s.StoneRain.class));
+ cards.add(new SetCardInfo("Story Circle", 51, Rarity.UNCOMMON, mage.cards.s.StoryCircle.class));
+ cards.add(new SetCardInfo("Strongarm Thug", 165, Rarity.COMMON, mage.cards.s.StrongarmThug.class));
+ cards.add(new SetCardInfo("Subterranean Hangar", 329, Rarity.UNCOMMON, mage.cards.s.SubterraneanHangar.class));
+ cards.add(new SetCardInfo("Sustenance", 278, Rarity.UNCOMMON, mage.cards.s.Sustenance.class));
+ cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Task Force", 52, Rarity.COMMON, mage.cards.t.TaskForce.class));
+ cards.add(new SetCardInfo("Tectonic Break", 216, Rarity.RARE, mage.cards.t.TectonicBreak.class));
+ cards.add(new SetCardInfo("Territorial Dispute", 217, Rarity.RARE, mage.cards.t.TerritorialDispute.class));
+ cards.add(new SetCardInfo("Thermal Glider", 53, Rarity.COMMON, mage.cards.t.ThermalGlider.class));
+ cards.add(new SetCardInfo("Thieves' Auction", 218, Rarity.RARE, mage.cards.t.ThievesAuction.class));
+ cards.add(new SetCardInfo("Thrashing Wumpus", 166, Rarity.RARE, mage.cards.t.ThrashingWumpus.class));
+ cards.add(new SetCardInfo("Thunderclap", 219, Rarity.COMMON, mage.cards.t.Thunderclap.class));
+ cards.add(new SetCardInfo("Thwart", 108, Rarity.UNCOMMON, mage.cards.t.Thwart.class));
+ cards.add(new SetCardInfo("Tidal Bore", 109, Rarity.COMMON, mage.cards.t.TidalBore.class));
+ cards.add(new SetCardInfo("Tidal Kraken", 110, Rarity.RARE, mage.cards.t.TidalKraken.class));
+ cards.add(new SetCardInfo("Tiger Claws", 279, Rarity.COMMON, mage.cards.t.TigerClaws.class));
+ cards.add(new SetCardInfo("Timid Drake", 111, Rarity.UNCOMMON, mage.cards.t.TimidDrake.class));
+ cards.add(new SetCardInfo("Tonic Peddler", 54, Rarity.UNCOMMON, mage.cards.t.TonicPeddler.class));
+ cards.add(new SetCardInfo("Tooth of Ramos", 313, Rarity.RARE, mage.cards.t.ToothOfRamos.class));
+ cards.add(new SetCardInfo("Tower of the Magistrate", 330, Rarity.RARE, mage.cards.t.TowerOfTheMagistrate.class));
+ cards.add(new SetCardInfo("Toymaker", 314, Rarity.UNCOMMON, mage.cards.t.Toymaker.class));
+ cards.add(new SetCardInfo("Trade Routes", 112, Rarity.RARE, mage.cards.t.TradeRoutes.class));
+ cards.add(new SetCardInfo("Tranquility", 280, Rarity.COMMON, mage.cards.t.Tranquility.class));
+ cards.add(new SetCardInfo("Trap Runner", 55, Rarity.UNCOMMON, mage.cards.t.TrapRunner.class));
+ cards.add(new SetCardInfo("Tremor", 220, Rarity.COMMON, mage.cards.t.Tremor.class));
+ cards.add(new SetCardInfo("Two-Headed Dragon", 221, Rarity.RARE, mage.cards.t.TwoHeadedDragon.class));
+ cards.add(new SetCardInfo("Undertaker", 167, Rarity.COMMON, mage.cards.u.Undertaker.class));
+ cards.add(new SetCardInfo("Unmask", 168, Rarity.RARE, mage.cards.u.Unmask.class));
+ cards.add(new SetCardInfo("Uphill Battle", 222, Rarity.UNCOMMON, mage.cards.u.UphillBattle.class));
+ cards.add(new SetCardInfo("Vendetta", 170, Rarity.COMMON, mage.cards.v.Vendetta.class));
+ cards.add(new SetCardInfo("Venomous Breath", 281, Rarity.UNCOMMON, mage.cards.v.VenomousBreath.class));
+ cards.add(new SetCardInfo("Venomous Dragonfly", 282, Rarity.COMMON, mage.cards.v.VenomousDragonfly.class));
+ cards.add(new SetCardInfo("Vernal Equinox", 283, Rarity.RARE, mage.cards.v.VernalEquinox.class));
+ cards.add(new SetCardInfo("Vine Dryad", 284, Rarity.RARE, mage.cards.v.VineDryad.class));
+ cards.add(new SetCardInfo("Vine Trellis", 285, Rarity.COMMON, mage.cards.v.VineTrellis.class));
+ cards.add(new SetCardInfo("Volcanic Wind", 223, Rarity.UNCOMMON, mage.cards.v.VolcanicWind.class));
+ cards.add(new SetCardInfo("Wall of Distortion", 171, Rarity.COMMON, mage.cards.w.WallOfDistortion.class));
+ cards.add(new SetCardInfo("War Cadence", 224, Rarity.UNCOMMON, mage.cards.w.WarCadence.class));
+ cards.add(new SetCardInfo("War Tax", 113, Rarity.UNCOMMON, mage.cards.w.WarTax.class));
+ cards.add(new SetCardInfo("Warmonger", 225, Rarity.UNCOMMON, mage.cards.w.Warmonger.class));
+ cards.add(new SetCardInfo("Warpath", 226, Rarity.UNCOMMON, mage.cards.w.Warpath.class));
+ cards.add(new SetCardInfo("Waterfront Bouncer", 114, Rarity.COMMON, mage.cards.w.WaterfrontBouncer.class));
+ cards.add(new SetCardInfo("Wave of Reckoning", 56, Rarity.RARE, mage.cards.w.WaveOfReckoning.class));
+ cards.add(new SetCardInfo("Wild Jhovall", 227, Rarity.COMMON, mage.cards.w.WildJhovall.class));
+ cards.add(new SetCardInfo("Wishmonger", 57, Rarity.UNCOMMON, mage.cards.w.Wishmonger.class));
+ cards.add(new SetCardInfo("Word of Blasting", 228, Rarity.UNCOMMON, mage.cards.w.WordOfBlasting.class));
+ cards.add(new SetCardInfo("Worry Beads", 315, Rarity.RARE, mage.cards.w.WorryBeads.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/MerfolkVsGoblins.java b/Mage.Sets/src/mage/sets/MerfolkVsGoblins.java
index de3ef4866ae..e7d1bcd6363 100644
--- a/Mage.Sets/src/mage/sets/MerfolkVsGoblins.java
+++ b/Mage.Sets/src/mage/sets/MerfolkVsGoblins.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class MerfolkVsGoblins extends ExpansionSet {
+public final class MerfolkVsGoblins extends ExpansionSet {
private static final MerfolkVsGoblins instance = new MerfolkVsGoblins();
diff --git a/Mage.Sets/src/mage/sets/MindVsMight.java b/Mage.Sets/src/mage/sets/MindVsMight.java
index f0da25b5158..48d26f8b5ea 100644
--- a/Mage.Sets/src/mage/sets/MindVsMight.java
+++ b/Mage.Sets/src/mage/sets/MindVsMight.java
@@ -13,7 +13,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class MindVsMight extends ExpansionSet {
+public final class MindVsMight extends ExpansionSet {
private static final MindVsMight instance = new MindVsMight();
diff --git a/Mage.Sets/src/mage/sets/Mirage.java b/Mage.Sets/src/mage/sets/Mirage.java
index 227f64009a1..a14e58b342d 100644
--- a/Mage.Sets/src/mage/sets/Mirage.java
+++ b/Mage.Sets/src/mage/sets/Mirage.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class Mirage extends ExpansionSet {
+public final class Mirage extends ExpansionSet {
private static final Mirage instance = new Mirage();
@@ -156,7 +156,7 @@ public class Mirage extends ExpansionSet {
cards.add(new SetCardInfo("Gibbering Hyenas", 219, Rarity.COMMON, mage.cards.g.GibberingHyenas.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 Soothsayer", 179, Rarity.UNCOMMON, 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", 220, Rarity.COMMON, mage.cards.g.GrangerGuildmage.class));
cards.add(new SetCardInfo("Grasslands", 327, Rarity.UNCOMMON, mage.cards.g.Grasslands.class));
@@ -330,6 +330,7 @@ public class Mirage extends ExpansionSet {
cards.add(new SetCardInfo("Waiting in the Weeds", 252, Rarity.RARE, mage.cards.w.WaitingInTheWeeds.class));
cards.add(new SetCardInfo("Wall of Roots", 253, Rarity.COMMON, mage.cards.w.WallOfRoots.class));
cards.add(new SetCardInfo("Ward of Lights", 47, Rarity.COMMON, mage.cards.w.WardOfLights.class));
+ cards.add(new SetCardInfo("Warping Wurm", 287, Rarity.RARE, mage.cards.w.WarpingWurm.class));
cards.add(new SetCardInfo("Wave Elemental", 102, Rarity.UNCOMMON, mage.cards.w.WaveElemental.class));
cards.add(new SetCardInfo("Wild Elephant", 254, Rarity.COMMON, mage.cards.w.WildElephant.class));
cards.add(new SetCardInfo("Wildfire Emissary", 203, Rarity.UNCOMMON, mage.cards.w.WildfireEmissary.class));
diff --git a/Mage.Sets/src/mage/sets/Mirrodin.java b/Mage.Sets/src/mage/sets/Mirrodin.java
index 251d9d6a3f7..a494c80176f 100644
--- a/Mage.Sets/src/mage/sets/Mirrodin.java
+++ b/Mage.Sets/src/mage/sets/Mirrodin.java
@@ -1,329 +1,329 @@
-package mage.sets;
-
-import mage.cards.ExpansionSet;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-public class Mirrodin extends ExpansionSet {
-
- private static final Mirrodin instance = new Mirrodin();
-
- public static Mirrodin getInstance() {
- return instance;
- }
-
- private Mirrodin() {
- super("Mirrodin", "MRD", ExpansionSet.buildDate(2003, 9, 2), SetType.EXPANSION);
- this.blockName = "Mirrodin";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Aether Spellbomb", 141, Rarity.COMMON, mage.cards.a.AetherSpellbomb.class));
- cards.add(new SetCardInfo("Alpha Myr", 142, Rarity.COMMON, mage.cards.a.AlphaMyr.class));
- cards.add(new SetCardInfo("Altar of Shadows", 143, Rarity.RARE, mage.cards.a.AltarOfShadows.class));
- cards.add(new SetCardInfo("Altar's Light", 1, Rarity.UNCOMMON, mage.cards.a.AltarsLight.class));
- cards.add(new SetCardInfo("Ancient Den", 278, Rarity.COMMON, mage.cards.a.AncientDen.class));
- cards.add(new SetCardInfo("Annul", 29, Rarity.COMMON, mage.cards.a.Annul.class));
- cards.add(new SetCardInfo("Arc-Slogger", 85, Rarity.RARE, mage.cards.a.ArcSlogger.class));
- cards.add(new SetCardInfo("Arrest", 2, Rarity.COMMON, mage.cards.a.Arrest.class));
- cards.add(new SetCardInfo("Assert Authority", 30, Rarity.UNCOMMON, mage.cards.a.AssertAuthority.class));
- cards.add(new SetCardInfo("Atog", 86, Rarity.UNCOMMON, mage.cards.a.Atog.class));
- cards.add(new SetCardInfo("Auriok Bladewarden", 3, Rarity.UNCOMMON, mage.cards.a.AuriokBladewarden.class));
- cards.add(new SetCardInfo("Auriok Steelshaper", 4, Rarity.RARE, mage.cards.a.AuriokSteelshaper.class));
- cards.add(new SetCardInfo("Auriok Transfixer", 5, Rarity.COMMON, mage.cards.a.AuriokTransfixer.class));
- cards.add(new SetCardInfo("Awe Strike", 6, Rarity.COMMON, mage.cards.a.AweStrike.class));
- cards.add(new SetCardInfo("Banshee's Blade", 144, Rarity.UNCOMMON, mage.cards.b.BansheesBlade.class));
- cards.add(new SetCardInfo("Barter in Blood", 57, Rarity.UNCOMMON, mage.cards.b.BarterInBlood.class));
- cards.add(new SetCardInfo("Battlegrowth", 113, Rarity.COMMON, mage.cards.b.Battlegrowth.class));
- cards.add(new SetCardInfo("Betrayal of Flesh", 58, Rarity.UNCOMMON, mage.cards.b.BetrayalOfFlesh.class));
- cards.add(new SetCardInfo("Blinding Beam", 7, Rarity.COMMON, mage.cards.b.BlindingBeam.class));
- cards.add(new SetCardInfo("Blinkmoth Urn", 145, Rarity.RARE, mage.cards.b.BlinkmothUrn.class));
- cards.add(new SetCardInfo("Blinkmoth Well", 279, Rarity.UNCOMMON, mage.cards.b.BlinkmothWell.class));
- cards.add(new SetCardInfo("Bloodscent", 114, Rarity.UNCOMMON, mage.cards.b.Bloodscent.class));
- cards.add(new SetCardInfo("Bonesplitter", 146, Rarity.COMMON, mage.cards.b.Bonesplitter.class));
- cards.add(new SetCardInfo("Bosh, Iron Golem", 147, Rarity.RARE, mage.cards.b.BoshIronGolem.class));
- cards.add(new SetCardInfo("Bottle Gnomes", 148, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class));
- cards.add(new SetCardInfo("Broodstar", 31, Rarity.RARE, mage.cards.b.Broodstar.class));
- cards.add(new SetCardInfo("Brown Ouphe", 115, Rarity.UNCOMMON, mage.cards.b.BrownOuphe.class));
- cards.add(new SetCardInfo("Cathodion", 149, Rarity.UNCOMMON, mage.cards.c.Cathodion.class));
- cards.add(new SetCardInfo("Chalice of the Void", 150, Rarity.RARE, mage.cards.c.ChaliceOfTheVoid.class));
- cards.add(new SetCardInfo("Chimney Imp", 59, Rarity.COMMON, mage.cards.c.ChimneyImp.class));
- cards.add(new SetCardInfo("Chromatic Sphere", 151, Rarity.COMMON, mage.cards.c.ChromaticSphere.class));
- cards.add(new SetCardInfo("Chrome Mox", 152, Rarity.RARE, mage.cards.c.ChromeMox.class));
- cards.add(new SetCardInfo("Clockwork Beetle", 153, Rarity.COMMON, mage.cards.c.ClockworkBeetle.class));
- cards.add(new SetCardInfo("Clockwork Condor", 154, Rarity.COMMON, mage.cards.c.ClockworkCondor.class));
- cards.add(new SetCardInfo("Clockwork Dragon", 155, Rarity.RARE, mage.cards.c.ClockworkDragon.class));
- cards.add(new SetCardInfo("Clockwork Vorrac", 156, Rarity.UNCOMMON, mage.cards.c.ClockworkVorrac.class));
- cards.add(new SetCardInfo("Cloudpost", 280, Rarity.COMMON, mage.cards.c.Cloudpost.class));
- cards.add(new SetCardInfo("Cobalt Golem", 157, Rarity.COMMON, mage.cards.c.CobaltGolem.class));
- cards.add(new SetCardInfo("Confusion in the Ranks", 87, Rarity.RARE, mage.cards.c.ConfusionInTheRanks.class));
- cards.add(new SetCardInfo("Consume Spirit", 60, Rarity.COMMON, mage.cards.c.ConsumeSpirit.class));
- cards.add(new SetCardInfo("Contaminated Bond", 61, Rarity.COMMON, mage.cards.c.ContaminatedBond.class));
- cards.add(new SetCardInfo("Copperhoof Vorrac", 116, Rarity.RARE, mage.cards.c.CopperhoofVorrac.class));
- cards.add(new SetCardInfo("Copper Myr", 158, Rarity.COMMON, mage.cards.c.CopperMyr.class));
- cards.add(new SetCardInfo("Creeping Mold", 117, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class));
- cards.add(new SetCardInfo("Crystal Shard", 159, Rarity.UNCOMMON, mage.cards.c.CrystalShard.class));
- cards.add(new SetCardInfo("Culling Scales", 160, Rarity.RARE, mage.cards.c.CullingScales.class));
- cards.add(new SetCardInfo("Damping Matrix", 161, Rarity.RARE, mage.cards.d.DampingMatrix.class));
- cards.add(new SetCardInfo("Dead-Iron Sledge", 162, Rarity.UNCOMMON, mage.cards.d.DeadIronSledge.class));
- cards.add(new SetCardInfo("Deconstruct", 118, Rarity.COMMON, mage.cards.d.Deconstruct.class));
- cards.add(new SetCardInfo("Detonate", 88, Rarity.UNCOMMON, mage.cards.d.Detonate.class));
- cards.add(new SetCardInfo("Disarm", 32, Rarity.COMMON, mage.cards.d.Disarm.class));
- cards.add(new SetCardInfo("Disciple of the Vault", 62, Rarity.COMMON, mage.cards.d.DiscipleOfTheVault.class));
- cards.add(new SetCardInfo("Domineer", 33, Rarity.UNCOMMON, mage.cards.d.Domineer.class));
- cards.add(new SetCardInfo("Dragon Blood", 163, Rarity.UNCOMMON, mage.cards.d.DragonBlood.class));
- cards.add(new SetCardInfo("Dream's Grip", 34, Rarity.COMMON, mage.cards.d.DreamsGrip.class));
- cards.add(new SetCardInfo("Dross Harvester", 63, Rarity.RARE, mage.cards.d.DrossHarvester.class));
- cards.add(new SetCardInfo("Dross Prowler", 64, Rarity.COMMON, mage.cards.d.DrossProwler.class));
- cards.add(new SetCardInfo("Dross Scorpion", 164, Rarity.COMMON, mage.cards.d.DrossScorpion.class));
- cards.add(new SetCardInfo("Duplicant", 165, Rarity.RARE, mage.cards.d.Duplicant.class));
- cards.add(new SetCardInfo("Duskworker", 166, Rarity.UNCOMMON, mage.cards.d.Duskworker.class));
- cards.add(new SetCardInfo("Electrostatic Bolt", 89, Rarity.COMMON, mage.cards.e.ElectrostaticBolt.class));
- cards.add(new SetCardInfo("Elf Replica", 167, Rarity.COMMON, mage.cards.e.ElfReplica.class));
- cards.add(new SetCardInfo("Empyrial Plate", 168, Rarity.RARE, mage.cards.e.EmpyrialPlate.class));
- cards.add(new SetCardInfo("Extraplanar Lens", 169, Rarity.RARE, mage.cards.e.ExtraplanarLens.class));
- cards.add(new SetCardInfo("Fabricate", 35, Rarity.UNCOMMON, mage.cards.f.Fabricate.class));
- cards.add(new SetCardInfo("Fangren Hunter", 119, Rarity.COMMON, mage.cards.f.FangrenHunter.class));
- cards.add(new SetCardInfo("Farsight Mask", 170, Rarity.UNCOMMON, mage.cards.f.FarsightMask.class));
- cards.add(new SetCardInfo("Fatespinner", 36, Rarity.RARE, mage.cards.f.Fatespinner.class));
- cards.add(new SetCardInfo("Fiery Gambit", 90, Rarity.RARE, mage.cards.f.FieryGambit.class));
- cards.add(new SetCardInfo("Fireshrieker", 171, Rarity.UNCOMMON, mage.cards.f.Fireshrieker.class));
- cards.add(new SetCardInfo("Fists of the Anvil", 91, Rarity.COMMON, mage.cards.f.FistsOfTheAnvil.class));
+package mage.sets;
+
+import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+public final class Mirrodin extends ExpansionSet {
+
+ private static final Mirrodin instance = new Mirrodin();
+
+ public static Mirrodin getInstance() {
+ return instance;
+ }
+
+ private Mirrodin() {
+ super("Mirrodin", "MRD", ExpansionSet.buildDate(2003, 9, 2), SetType.EXPANSION);
+ this.blockName = "Mirrodin";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Aether Spellbomb", 141, Rarity.COMMON, mage.cards.a.AetherSpellbomb.class));
+ cards.add(new SetCardInfo("Alpha Myr", 142, Rarity.COMMON, mage.cards.a.AlphaMyr.class));
+ cards.add(new SetCardInfo("Altar of Shadows", 143, Rarity.RARE, mage.cards.a.AltarOfShadows.class));
+ cards.add(new SetCardInfo("Altar's Light", 1, Rarity.UNCOMMON, mage.cards.a.AltarsLight.class));
+ cards.add(new SetCardInfo("Ancient Den", 278, Rarity.COMMON, mage.cards.a.AncientDen.class));
+ cards.add(new SetCardInfo("Annul", 29, Rarity.COMMON, mage.cards.a.Annul.class));
+ cards.add(new SetCardInfo("Arc-Slogger", 85, Rarity.RARE, mage.cards.a.ArcSlogger.class));
+ cards.add(new SetCardInfo("Arrest", 2, Rarity.COMMON, mage.cards.a.Arrest.class));
+ cards.add(new SetCardInfo("Assert Authority", 30, Rarity.UNCOMMON, mage.cards.a.AssertAuthority.class));
+ cards.add(new SetCardInfo("Atog", 86, Rarity.UNCOMMON, mage.cards.a.Atog.class));
+ cards.add(new SetCardInfo("Auriok Bladewarden", 3, Rarity.UNCOMMON, mage.cards.a.AuriokBladewarden.class));
+ cards.add(new SetCardInfo("Auriok Steelshaper", 4, Rarity.RARE, mage.cards.a.AuriokSteelshaper.class));
+ cards.add(new SetCardInfo("Auriok Transfixer", 5, Rarity.COMMON, mage.cards.a.AuriokTransfixer.class));
+ cards.add(new SetCardInfo("Awe Strike", 6, Rarity.COMMON, mage.cards.a.AweStrike.class));
+ cards.add(new SetCardInfo("Banshee's Blade", 144, Rarity.UNCOMMON, mage.cards.b.BansheesBlade.class));
+ cards.add(new SetCardInfo("Barter in Blood", 57, Rarity.UNCOMMON, mage.cards.b.BarterInBlood.class));
+ cards.add(new SetCardInfo("Battlegrowth", 113, Rarity.COMMON, mage.cards.b.Battlegrowth.class));
+ cards.add(new SetCardInfo("Betrayal of Flesh", 58, Rarity.UNCOMMON, mage.cards.b.BetrayalOfFlesh.class));
+ cards.add(new SetCardInfo("Blinding Beam", 7, Rarity.COMMON, mage.cards.b.BlindingBeam.class));
+ cards.add(new SetCardInfo("Blinkmoth Urn", 145, Rarity.RARE, mage.cards.b.BlinkmothUrn.class));
+ cards.add(new SetCardInfo("Blinkmoth Well", 279, Rarity.UNCOMMON, mage.cards.b.BlinkmothWell.class));
+ cards.add(new SetCardInfo("Bloodscent", 114, Rarity.UNCOMMON, mage.cards.b.Bloodscent.class));
+ cards.add(new SetCardInfo("Bonesplitter", 146, Rarity.COMMON, mage.cards.b.Bonesplitter.class));
+ cards.add(new SetCardInfo("Bosh, Iron Golem", 147, Rarity.RARE, mage.cards.b.BoshIronGolem.class));
+ cards.add(new SetCardInfo("Bottle Gnomes", 148, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class));
+ cards.add(new SetCardInfo("Broodstar", 31, Rarity.RARE, mage.cards.b.Broodstar.class));
+ cards.add(new SetCardInfo("Brown Ouphe", 115, Rarity.UNCOMMON, mage.cards.b.BrownOuphe.class));
+ cards.add(new SetCardInfo("Cathodion", 149, Rarity.UNCOMMON, mage.cards.c.Cathodion.class));
+ cards.add(new SetCardInfo("Chalice of the Void", 150, Rarity.RARE, mage.cards.c.ChaliceOfTheVoid.class));
+ cards.add(new SetCardInfo("Chimney Imp", 59, Rarity.COMMON, mage.cards.c.ChimneyImp.class));
+ cards.add(new SetCardInfo("Chromatic Sphere", 151, Rarity.COMMON, mage.cards.c.ChromaticSphere.class));
+ cards.add(new SetCardInfo("Chrome Mox", 152, Rarity.RARE, mage.cards.c.ChromeMox.class));
+ cards.add(new SetCardInfo("Clockwork Beetle", 153, Rarity.COMMON, mage.cards.c.ClockworkBeetle.class));
+ cards.add(new SetCardInfo("Clockwork Condor", 154, Rarity.COMMON, mage.cards.c.ClockworkCondor.class));
+ cards.add(new SetCardInfo("Clockwork Dragon", 155, Rarity.RARE, mage.cards.c.ClockworkDragon.class));
+ cards.add(new SetCardInfo("Clockwork Vorrac", 156, Rarity.UNCOMMON, mage.cards.c.ClockworkVorrac.class));
+ cards.add(new SetCardInfo("Cloudpost", 280, Rarity.COMMON, mage.cards.c.Cloudpost.class));
+ cards.add(new SetCardInfo("Cobalt Golem", 157, Rarity.COMMON, mage.cards.c.CobaltGolem.class));
+ cards.add(new SetCardInfo("Confusion in the Ranks", 87, Rarity.RARE, mage.cards.c.ConfusionInTheRanks.class));
+ cards.add(new SetCardInfo("Consume Spirit", 60, Rarity.COMMON, mage.cards.c.ConsumeSpirit.class));
+ cards.add(new SetCardInfo("Contaminated Bond", 61, Rarity.COMMON, mage.cards.c.ContaminatedBond.class));
+ cards.add(new SetCardInfo("Copperhoof Vorrac", 116, Rarity.RARE, mage.cards.c.CopperhoofVorrac.class));
+ cards.add(new SetCardInfo("Copper Myr", 158, Rarity.COMMON, mage.cards.c.CopperMyr.class));
+ cards.add(new SetCardInfo("Creeping Mold", 117, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class));
+ cards.add(new SetCardInfo("Crystal Shard", 159, Rarity.UNCOMMON, mage.cards.c.CrystalShard.class));
+ cards.add(new SetCardInfo("Culling Scales", 160, Rarity.RARE, mage.cards.c.CullingScales.class));
+ cards.add(new SetCardInfo("Damping Matrix", 161, Rarity.RARE, mage.cards.d.DampingMatrix.class));
+ cards.add(new SetCardInfo("Dead-Iron Sledge", 162, Rarity.UNCOMMON, mage.cards.d.DeadIronSledge.class));
+ cards.add(new SetCardInfo("Deconstruct", 118, Rarity.COMMON, mage.cards.d.Deconstruct.class));
+ cards.add(new SetCardInfo("Detonate", 88, Rarity.UNCOMMON, mage.cards.d.Detonate.class));
+ cards.add(new SetCardInfo("Disarm", 32, Rarity.COMMON, mage.cards.d.Disarm.class));
+ cards.add(new SetCardInfo("Disciple of the Vault", 62, Rarity.COMMON, mage.cards.d.DiscipleOfTheVault.class));
+ cards.add(new SetCardInfo("Domineer", 33, Rarity.UNCOMMON, mage.cards.d.Domineer.class));
+ cards.add(new SetCardInfo("Dragon Blood", 163, Rarity.UNCOMMON, mage.cards.d.DragonBlood.class));
+ cards.add(new SetCardInfo("Dream's Grip", 34, Rarity.COMMON, mage.cards.d.DreamsGrip.class));
+ cards.add(new SetCardInfo("Dross Harvester", 63, Rarity.RARE, mage.cards.d.DrossHarvester.class));
+ cards.add(new SetCardInfo("Dross Prowler", 64, Rarity.COMMON, mage.cards.d.DrossProwler.class));
+ cards.add(new SetCardInfo("Dross Scorpion", 164, Rarity.COMMON, mage.cards.d.DrossScorpion.class));
+ cards.add(new SetCardInfo("Duplicant", 165, Rarity.RARE, mage.cards.d.Duplicant.class));
+ cards.add(new SetCardInfo("Duskworker", 166, Rarity.UNCOMMON, mage.cards.d.Duskworker.class));
+ cards.add(new SetCardInfo("Electrostatic Bolt", 89, Rarity.COMMON, mage.cards.e.ElectrostaticBolt.class));
+ cards.add(new SetCardInfo("Elf Replica", 167, Rarity.COMMON, mage.cards.e.ElfReplica.class));
+ cards.add(new SetCardInfo("Empyrial Plate", 168, Rarity.RARE, mage.cards.e.EmpyrialPlate.class));
+ cards.add(new SetCardInfo("Extraplanar Lens", 169, Rarity.RARE, mage.cards.e.ExtraplanarLens.class));
+ cards.add(new SetCardInfo("Fabricate", 35, Rarity.UNCOMMON, mage.cards.f.Fabricate.class));
+ cards.add(new SetCardInfo("Fangren Hunter", 119, Rarity.COMMON, mage.cards.f.FangrenHunter.class));
+ cards.add(new SetCardInfo("Farsight Mask", 170, Rarity.UNCOMMON, mage.cards.f.FarsightMask.class));
+ cards.add(new SetCardInfo("Fatespinner", 36, Rarity.RARE, mage.cards.f.Fatespinner.class));
+ cards.add(new SetCardInfo("Fiery Gambit", 90, Rarity.RARE, mage.cards.f.FieryGambit.class));
+ cards.add(new SetCardInfo("Fireshrieker", 171, Rarity.UNCOMMON, mage.cards.f.Fireshrieker.class));
+ cards.add(new SetCardInfo("Fists of the Anvil", 91, Rarity.COMMON, mage.cards.f.FistsOfTheAnvil.class));
cards.add(new SetCardInfo("Flayed Nim", 65, Rarity.UNCOMMON, mage.cards.f.FlayedNim.class));
- cards.add(new SetCardInfo("Forest", 303, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 304, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 305, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 306, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forge Armor", 92, Rarity.UNCOMMON, mage.cards.f.ForgeArmor.class));
- cards.add(new SetCardInfo("Fractured Loyalty", 93, Rarity.UNCOMMON, mage.cards.f.FracturedLoyalty.class));
- cards.add(new SetCardInfo("Frogmite", 172, Rarity.COMMON, mage.cards.f.Frogmite.class));
- cards.add(new SetCardInfo("Galvanic Key", 173, Rarity.COMMON, mage.cards.g.GalvanicKey.class));
- cards.add(new SetCardInfo("Gate to the Aether", 174, Rarity.RARE, mage.cards.g.GateToTheAether.class));
- cards.add(new SetCardInfo("Gilded Lotus", 175, Rarity.RARE, mage.cards.g.GildedLotus.class));
- cards.add(new SetCardInfo("Glimmervoid", 281, Rarity.RARE, mage.cards.g.Glimmervoid.class));
- cards.add(new SetCardInfo("Glissa Sunseeker", 120, Rarity.RARE, mage.cards.g.GlissaSunseeker.class));
- cards.add(new SetCardInfo("Goblin Charbelcher", 176, Rarity.RARE, mage.cards.g.GoblinCharbelcher.class));
- cards.add(new SetCardInfo("Goblin Dirigible", 177, Rarity.UNCOMMON, mage.cards.g.GoblinDirigible.class));
- cards.add(new SetCardInfo("Goblin Replica", 178, Rarity.COMMON, mage.cards.g.GoblinReplica.class));
- cards.add(new SetCardInfo("Goblin Striker", 94, Rarity.COMMON, mage.cards.g.GoblinStriker.class));
- cards.add(new SetCardInfo("Goblin War Wagon", 179, Rarity.COMMON, mage.cards.g.GoblinWarWagon.class));
- cards.add(new SetCardInfo("Gold Myr", 180, Rarity.COMMON, mage.cards.g.GoldMyr.class));
- cards.add(new SetCardInfo("Golem-Skin Gauntlets", 181, Rarity.UNCOMMON, mage.cards.g.GolemSkinGauntlets.class));
- cards.add(new SetCardInfo("Grab the Reins", 95, Rarity.UNCOMMON, mage.cards.g.GrabTheReins.class));
- cards.add(new SetCardInfo("Granite Shard", 182, Rarity.UNCOMMON, mage.cards.g.GraniteShard.class));
- cards.add(new SetCardInfo("Great Furnace", 282, Rarity.COMMON, mage.cards.g.GreatFurnace.class));
- cards.add(new SetCardInfo("Grid Monitor", 183, Rarity.RARE, mage.cards.g.GridMonitor.class));
+ cards.add(new SetCardInfo("Forest", 303, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 304, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 305, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 306, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forge Armor", 92, Rarity.UNCOMMON, mage.cards.f.ForgeArmor.class));
+ cards.add(new SetCardInfo("Fractured Loyalty", 93, Rarity.UNCOMMON, mage.cards.f.FracturedLoyalty.class));
+ cards.add(new SetCardInfo("Frogmite", 172, Rarity.COMMON, mage.cards.f.Frogmite.class));
+ cards.add(new SetCardInfo("Galvanic Key", 173, Rarity.COMMON, mage.cards.g.GalvanicKey.class));
+ cards.add(new SetCardInfo("Gate to the Aether", 174, Rarity.RARE, mage.cards.g.GateToTheAether.class));
+ cards.add(new SetCardInfo("Gilded Lotus", 175, Rarity.RARE, mage.cards.g.GildedLotus.class));
+ cards.add(new SetCardInfo("Glimmervoid", 281, Rarity.RARE, mage.cards.g.Glimmervoid.class));
+ cards.add(new SetCardInfo("Glissa Sunseeker", 120, Rarity.RARE, mage.cards.g.GlissaSunseeker.class));
+ cards.add(new SetCardInfo("Goblin Charbelcher", 176, Rarity.RARE, mage.cards.g.GoblinCharbelcher.class));
+ cards.add(new SetCardInfo("Goblin Dirigible", 177, Rarity.UNCOMMON, mage.cards.g.GoblinDirigible.class));
+ cards.add(new SetCardInfo("Goblin Replica", 178, Rarity.COMMON, mage.cards.g.GoblinReplica.class));
+ cards.add(new SetCardInfo("Goblin Striker", 94, Rarity.COMMON, mage.cards.g.GoblinStriker.class));
+ cards.add(new SetCardInfo("Goblin War Wagon", 179, Rarity.COMMON, mage.cards.g.GoblinWarWagon.class));
+ cards.add(new SetCardInfo("Gold Myr", 180, Rarity.COMMON, mage.cards.g.GoldMyr.class));
+ cards.add(new SetCardInfo("Golem-Skin Gauntlets", 181, Rarity.UNCOMMON, mage.cards.g.GolemSkinGauntlets.class));
+ cards.add(new SetCardInfo("Grab the Reins", 95, Rarity.UNCOMMON, mage.cards.g.GrabTheReins.class));
+ cards.add(new SetCardInfo("Granite Shard", 182, Rarity.UNCOMMON, mage.cards.g.GraniteShard.class));
+ cards.add(new SetCardInfo("Great Furnace", 282, Rarity.COMMON, mage.cards.g.GreatFurnace.class));
+ cards.add(new SetCardInfo("Grid Monitor", 183, Rarity.RARE, mage.cards.g.GridMonitor.class));
cards.add(new SetCardInfo("Grim Reminder", 66, Rarity.RARE, mage.cards.g.GrimReminder.class));
- 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));
- cards.add(new SetCardInfo("Iron Myr", 187, Rarity.COMMON, mage.cards.i.IronMyr.class));
- cards.add(new SetCardInfo("Irradiate", 67, Rarity.COMMON, mage.cards.i.Irradiate.class));
- cards.add(new SetCardInfo("Island", 291, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 292, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 293, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 294, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Isochron Scepter", 188, Rarity.UNCOMMON, mage.cards.i.IsochronScepter.class));
- cards.add(new SetCardInfo("Jinxed Choker", 189, Rarity.RARE, mage.cards.j.JinxedChoker.class));
- cards.add(new SetCardInfo("Journey of Discovery", 123, Rarity.COMMON, mage.cards.j.JourneyOfDiscovery.class));
- cards.add(new SetCardInfo("Krark-Clan Grunt", 97, Rarity.COMMON, mage.cards.k.KrarkClanGrunt.class));
- cards.add(new SetCardInfo("Krark-Clan Shaman", 98, Rarity.COMMON, mage.cards.k.KrarkClanShaman.class));
- cards.add(new SetCardInfo("Krark's Thumb", 190, Rarity.RARE, mage.cards.k.KrarksThumb.class));
- cards.add(new SetCardInfo("Leaden Myr", 191, Rarity.COMMON, mage.cards.l.LeadenMyr.class));
- cards.add(new SetCardInfo("Leonin Abunas", 8, Rarity.RARE, mage.cards.l.LeoninAbunas.class));
- cards.add(new SetCardInfo("Leonin Bladetrap", 192, Rarity.UNCOMMON, mage.cards.l.LeoninBladetrap.class));
- cards.add(new SetCardInfo("Leonin Den-Guard", 9, Rarity.COMMON, mage.cards.l.LeoninDenGuard.class));
- cards.add(new SetCardInfo("Leonin Elder", 10, Rarity.COMMON, mage.cards.l.LeoninElder.class));
- cards.add(new SetCardInfo("Leonin Scimitar", 193, Rarity.COMMON, mage.cards.l.LeoninScimitar.class));
- cards.add(new SetCardInfo("Leonin Skyhunter", 11, Rarity.UNCOMMON, mage.cards.l.LeoninSkyhunter.class));
- cards.add(new SetCardInfo("Leonin Sun Standard", 194, Rarity.RARE, mage.cards.l.LeoninSunStandard.class));
- cards.add(new SetCardInfo("Leveler", 195, Rarity.RARE, mage.cards.l.Leveler.class));
- cards.add(new SetCardInfo("Liar's Pendulum", 196, Rarity.RARE, mage.cards.l.LiarsPendulum.class));
- cards.add(new SetCardInfo("Lifespark Spellbomb", 197, Rarity.COMMON, mage.cards.l.LifesparkSpellbomb.class));
- cards.add(new SetCardInfo("Lightning Coils", 198, Rarity.RARE, mage.cards.l.LightningCoils.class));
- cards.add(new SetCardInfo("Lightning Greaves", 199, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class));
- cards.add(new SetCardInfo("Living Hive", 124, Rarity.RARE, mage.cards.l.LivingHive.class));
- cards.add(new SetCardInfo("Lodestone Myr", 200, Rarity.RARE, mage.cards.l.LodestoneMyr.class));
- cards.add(new SetCardInfo("Looming Hoverguard", 38, Rarity.UNCOMMON, mage.cards.l.LoomingHoverguard.class));
- cards.add(new SetCardInfo("Loxodon Mender", 12, Rarity.COMMON, mage.cards.l.LoxodonMender.class));
- cards.add(new SetCardInfo("Loxodon Peacekeeper", 13, Rarity.RARE, mage.cards.l.LoxodonPeacekeeper.class));
- cards.add(new SetCardInfo("Loxodon Punisher", 14, Rarity.RARE, mage.cards.l.LoxodonPunisher.class));
- cards.add(new SetCardInfo("Loxodon Warhammer", 201, Rarity.UNCOMMON, mage.cards.l.LoxodonWarhammer.class));
- cards.add(new SetCardInfo("Lumengrid Augur", 39, Rarity.RARE, mage.cards.l.LumengridAugur.class));
- cards.add(new SetCardInfo("Lumengrid Sentinel", 40, Rarity.UNCOMMON, mage.cards.l.LumengridSentinel.class));
- cards.add(new SetCardInfo("Lumengrid Warden", 41, Rarity.COMMON, mage.cards.l.LumengridWarden.class));
- cards.add(new SetCardInfo("Luminous Angel", 15, Rarity.RARE, mage.cards.l.LuminousAngel.class));
- cards.add(new SetCardInfo("Malachite Golem", 202, Rarity.COMMON, mage.cards.m.MalachiteGolem.class));
- cards.add(new SetCardInfo("March of the Machines", 42, Rarity.RARE, mage.cards.m.MarchOfTheMachines.class));
- cards.add(new SetCardInfo("Mask of Memory", 203, Rarity.UNCOMMON, mage.cards.m.MaskOfMemory.class));
- cards.add(new SetCardInfo("Mass Hysteria", 99, Rarity.RARE, mage.cards.m.MassHysteria.class));
- cards.add(new SetCardInfo("Megatog", 100, Rarity.RARE, mage.cards.m.Megatog.class));
- cards.add(new SetCardInfo("Mesmeric Orb", 204, Rarity.RARE, mage.cards.m.MesmericOrb.class));
- cards.add(new SetCardInfo("Mind's Eye", 205, Rarity.RARE, mage.cards.m.MindsEye.class));
- cards.add(new SetCardInfo("Mindslaver", 206, Rarity.RARE, mage.cards.m.Mindslaver.class));
- cards.add(new SetCardInfo("Mindstorm Crown", 207, Rarity.UNCOMMON, mage.cards.m.MindstormCrown.class));
- cards.add(new SetCardInfo("Molder Slug", 125, Rarity.RARE, mage.cards.m.MolderSlug.class));
- cards.add(new SetCardInfo("Molten Rain", 101, Rarity.COMMON, mage.cards.m.MoltenRain.class));
- cards.add(new SetCardInfo("Moriok Scavenger", 68, Rarity.COMMON, mage.cards.m.MoriokScavenger.class));
- cards.add(new SetCardInfo("Mountain", 299, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 300, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 301, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 302, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Myr Adapter", 210, Rarity.COMMON, mage.cards.m.MyrAdapter.class));
- cards.add(new SetCardInfo("Myr Enforcer", 211, Rarity.COMMON, mage.cards.m.MyrEnforcer.class));
- cards.add(new SetCardInfo("Myr Incubator", 212, Rarity.RARE, mage.cards.m.MyrIncubator.class));
- cards.add(new SetCardInfo("Myr Mindservant", 213, Rarity.UNCOMMON, mage.cards.m.MyrMindservant.class));
- cards.add(new SetCardInfo("Myr Prototype", 214, Rarity.UNCOMMON, mage.cards.m.MyrPrototype.class));
- cards.add(new SetCardInfo("Myr Retriever", 215, Rarity.UNCOMMON, mage.cards.m.MyrRetriever.class));
- cards.add(new SetCardInfo("Necrogen Mists", 69, Rarity.RARE, mage.cards.n.NecrogenMists.class));
- cards.add(new SetCardInfo("Necrogen Spellbomb", 216, Rarity.COMMON, mage.cards.n.NecrogenSpellbomb.class));
- cards.add(new SetCardInfo("Needlebug", 217, Rarity.UNCOMMON, mage.cards.n.Needlebug.class));
- cards.add(new SetCardInfo("Neurok Familiar", 43, Rarity.COMMON, mage.cards.n.NeurokFamiliar.class));
- cards.add(new SetCardInfo("Neurok Hoversail", 218, Rarity.COMMON, mage.cards.n.NeurokHoversail.class));
- cards.add(new SetCardInfo("Neurok Spy", 44, Rarity.COMMON, mage.cards.n.NeurokSpy.class));
- cards.add(new SetCardInfo("Nightmare Lash", 219, Rarity.RARE, mage.cards.n.NightmareLash.class));
- cards.add(new SetCardInfo("Nim Devourer", 70, Rarity.RARE, mage.cards.n.NimDevourer.class));
- cards.add(new SetCardInfo("Nim Lasher", 71, Rarity.COMMON, mage.cards.n.NimLasher.class));
- cards.add(new SetCardInfo("Nim Replica", 220, Rarity.COMMON, mage.cards.n.NimReplica.class));
- cards.add(new SetCardInfo("Nim Shambler", 72, Rarity.UNCOMMON, mage.cards.n.NimShambler.class));
- cards.add(new SetCardInfo("Nim Shrieker", 73, Rarity.COMMON, mage.cards.n.NimShrieker.class));
- cards.add(new SetCardInfo("Nuisance Engine", 221, Rarity.UNCOMMON, mage.cards.n.NuisanceEngine.class));
- cards.add(new SetCardInfo("Oblivion Stone", 222, Rarity.RARE, mage.cards.o.OblivionStone.class));
- cards.add(new SetCardInfo("Ogre Leadfoot", 102, Rarity.COMMON, mage.cards.o.OgreLeadfoot.class));
- cards.add(new SetCardInfo("Omega Myr", 223, Rarity.COMMON, mage.cards.o.OmegaMyr.class));
- cards.add(new SetCardInfo("One Dozen Eyes", 126, Rarity.UNCOMMON, mage.cards.o.OneDozenEyes.class));
- cards.add(new SetCardInfo("Ornithopter", 224, Rarity.UNCOMMON, mage.cards.o.Ornithopter.class));
- cards.add(new SetCardInfo("Override", 45, Rarity.COMMON, mage.cards.o.OverrideCard.class));
- cards.add(new SetCardInfo("Pearl Shard", 225, Rarity.UNCOMMON, mage.cards.p.PearlShard.class));
- cards.add(new SetCardInfo("Pentavus", 226, Rarity.RARE, mage.cards.p.Pentavus.class));
- cards.add(new SetCardInfo("Pewter Golem", 227, Rarity.COMMON, mage.cards.p.PewterGolem.class));
- cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 288, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 289, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 290, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plated Slagwurm", 127, Rarity.RARE, mage.cards.p.PlatedSlagwurm.class));
- cards.add(new SetCardInfo("Platinum Angel", 228, Rarity.RARE, mage.cards.p.PlatinumAngel.class));
- cards.add(new SetCardInfo("Power Conduit", 229, Rarity.UNCOMMON, mage.cards.p.PowerConduit.class));
- cards.add(new SetCardInfo("Predator's Strike", 128, Rarity.COMMON, mage.cards.p.PredatorsStrike.class));
- cards.add(new SetCardInfo("Promise of Power", 74, Rarity.RARE, mage.cards.p.PromiseOfPower.class));
- cards.add(new SetCardInfo("Proteus Staff", 230, Rarity.RARE, mage.cards.p.ProteusStaff.class));
- cards.add(new SetCardInfo("Psychic Membrane", 46, Rarity.UNCOMMON, mage.cards.p.PsychicMembrane.class));
- cards.add(new SetCardInfo("Psychogenic Probe", 231, Rarity.RARE, mage.cards.p.PsychogenicProbe.class));
- cards.add(new SetCardInfo("Pyrite Spellbomb", 232, Rarity.COMMON, mage.cards.p.PyriteSpellbomb.class));
- cards.add(new SetCardInfo("Quicksilver Elemental", 47, Rarity.RARE, mage.cards.q.QuicksilverElemental.class));
- cards.add(new SetCardInfo("Quicksilver Fountain", 233, Rarity.RARE, mage.cards.q.QuicksilverFountain.class));
- cards.add(new SetCardInfo("Raise the Alarm", 16, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class));
- cards.add(new SetCardInfo("Razor Barrier", 17, Rarity.COMMON, mage.cards.r.RazorBarrier.class));
- cards.add(new SetCardInfo("Regress", 48, Rarity.COMMON, mage.cards.r.Regress.class));
- cards.add(new SetCardInfo("Reiver Demon", 75, Rarity.RARE, mage.cards.r.ReiverDemon.class));
- cards.add(new SetCardInfo("Relic Bane", 76, Rarity.UNCOMMON, mage.cards.r.RelicBane.class));
- cards.add(new SetCardInfo("Roar of the Kha", 18, Rarity.UNCOMMON, mage.cards.r.RoarOfTheKha.class));
- cards.add(new SetCardInfo("Rule of Law", 19, Rarity.RARE, mage.cards.r.RuleOfLaw.class));
- cards.add(new SetCardInfo("Rust Elemental", 234, Rarity.UNCOMMON, mage.cards.r.RustElemental.class));
- cards.add(new SetCardInfo("Rustmouth Ogre", 103, Rarity.UNCOMMON, mage.cards.r.RustmouthOgre.class));
- cards.add(new SetCardInfo("Rustspore Ram", 235, Rarity.UNCOMMON, mage.cards.r.RustsporeRam.class));
- cards.add(new SetCardInfo("Scale of Chiss-Goria", 236, Rarity.COMMON, mage.cards.s.ScaleOfChissGoria.class));
- cards.add(new SetCardInfo("Scrabbling Claws", 237, Rarity.UNCOMMON, mage.cards.s.ScrabblingClaws.class));
- cards.add(new SetCardInfo("Sculpting Steel", 238, Rarity.RARE, mage.cards.s.SculptingSteel.class));
- cards.add(new SetCardInfo("Scythe of the Wretched", 239, Rarity.RARE, mage.cards.s.ScytheOfTheWretched.class));
- cards.add(new SetCardInfo("Seat of the Synod", 283, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class));
- cards.add(new SetCardInfo("Second Sunrise", 20, Rarity.RARE, mage.cards.s.SecondSunrise.class));
- cards.add(new SetCardInfo("Seething Song", 104, Rarity.COMMON, mage.cards.s.SeethingSong.class));
- cards.add(new SetCardInfo("Serum Tank", 240, Rarity.UNCOMMON, mage.cards.s.SerumTank.class));
- cards.add(new SetCardInfo("Shared Fate", 49, Rarity.RARE, mage.cards.s.SharedFate.class));
- cards.add(new SetCardInfo("Shatter", 105, Rarity.COMMON, mage.cards.s.Shatter.class));
- cards.add(new SetCardInfo("Shrapnel Blast", 106, Rarity.UNCOMMON, mage.cards.s.ShrapnelBlast.class));
- cards.add(new SetCardInfo("Silver Myr", 241, Rarity.COMMON, mage.cards.s.SilverMyr.class));
- cards.add(new SetCardInfo("Skeleton Shard", 242, Rarity.UNCOMMON, mage.cards.s.SkeletonShard.class));
- cards.add(new SetCardInfo("Skyhunter Cub", 21, Rarity.COMMON, mage.cards.s.SkyhunterCub.class));
- cards.add(new SetCardInfo("Skyhunter Patrol", 22, Rarity.COMMON, mage.cards.s.SkyhunterPatrol.class));
- cards.add(new SetCardInfo("Slagwurm Armor", 243, Rarity.COMMON, mage.cards.s.SlagwurmArmor.class));
- cards.add(new SetCardInfo("Slith Ascendant", 23, Rarity.UNCOMMON, mage.cards.s.SlithAscendant.class));
- cards.add(new SetCardInfo("Slith Bloodletter", 77, Rarity.UNCOMMON, mage.cards.s.SlithBloodletter.class));
- cards.add(new SetCardInfo("Slith Firewalker", 107, Rarity.UNCOMMON, mage.cards.s.SlithFirewalker.class));
- cards.add(new SetCardInfo("Slith Predator", 129, Rarity.UNCOMMON, mage.cards.s.SlithPredator.class));
- cards.add(new SetCardInfo("Slith Strider", 50, Rarity.UNCOMMON, mage.cards.s.SlithStrider.class));
- cards.add(new SetCardInfo("Solar Tide", 24, Rarity.RARE, mage.cards.s.SolarTide.class));
- cards.add(new SetCardInfo("Soldier Replica", 244, Rarity.COMMON, mage.cards.s.SoldierReplica.class));
- cards.add(new SetCardInfo("Solemn Simulacrum", 245, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class));
- cards.add(new SetCardInfo("Somber Hoverguard", 51, Rarity.COMMON, mage.cards.s.SomberHoverguard.class));
- cards.add(new SetCardInfo("Soul Foundry", 246, Rarity.RARE, mage.cards.s.SoulFoundry.class));
- cards.add(new SetCardInfo("Soul Nova", 25, Rarity.UNCOMMON, mage.cards.s.SoulNova.class));
- cards.add(new SetCardInfo("Spellweaver Helix", 247, Rarity.RARE, mage.cards.s.SpellweaverHelix.class));
- cards.add(new SetCardInfo("Sphere of Purity", 26, Rarity.COMMON, mage.cards.s.SphereOfPurity.class));
- cards.add(new SetCardInfo("Spikeshot Goblin", 108, Rarity.COMMON, mage.cards.s.SpikeshotGoblin.class));
- cards.add(new SetCardInfo("Spoils of the Vault", 78, Rarity.RARE, mage.cards.s.SpoilsOfTheVault.class));
- cards.add(new SetCardInfo("Stalking Stones", 284, Rarity.UNCOMMON, mage.cards.s.StalkingStones.class));
- cards.add(new SetCardInfo("Steel Wall", 248, Rarity.COMMON, mage.cards.s.SteelWall.class));
- cards.add(new SetCardInfo("Sunbeam Spellbomb", 250, Rarity.COMMON, mage.cards.s.SunbeamSpellbomb.class));
- cards.add(new SetCardInfo("Sun Droplet", 249, Rarity.UNCOMMON, mage.cards.s.SunDroplet.class));
- cards.add(new SetCardInfo("Swamp", 295, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 296, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 297, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 298, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Sword of Kaldra", 251, Rarity.RARE, mage.cards.s.SwordOfKaldra.class));
- cards.add(new SetCardInfo("Sylvan Scrying", 130, Rarity.UNCOMMON, mage.cards.s.SylvanScrying.class));
- cards.add(new SetCardInfo("Synod Sanctum", 252, Rarity.UNCOMMON, mage.cards.s.SynodSanctum.class));
- cards.add(new SetCardInfo("Taj-Nar Swordsmith", 27, Rarity.UNCOMMON, mage.cards.t.TajNarSwordsmith.class));
- cards.add(new SetCardInfo("Talisman of Dominance", 253, Rarity.UNCOMMON, mage.cards.t.TalismanOfDominance.class));
- cards.add(new SetCardInfo("Talisman of Impulse", 254, Rarity.UNCOMMON, mage.cards.t.TalismanOfImpulse.class));
- cards.add(new SetCardInfo("Talisman of Indulgence", 255, Rarity.UNCOMMON, mage.cards.t.TalismanOfIndulgence.class));
- cards.add(new SetCardInfo("Talisman of Progress", 256, Rarity.UNCOMMON, mage.cards.t.TalismanOfProgress.class));
- cards.add(new SetCardInfo("Talisman of Unity", 257, Rarity.UNCOMMON, mage.cards.t.TalismanOfUnity.class));
- cards.add(new SetCardInfo("Tanglebloom", 258, Rarity.COMMON, mage.cards.t.Tanglebloom.class));
- cards.add(new SetCardInfo("Tangleroot", 259, Rarity.RARE, mage.cards.t.Tangleroot.class));
- cards.add(new SetCardInfo("Tel-Jilad Archers", 131, Rarity.COMMON, mage.cards.t.TelJiladArchers.class));
- cards.add(new SetCardInfo("Tel-Jilad Chosen", 132, Rarity.COMMON, mage.cards.t.TelJiladChosen.class));
- cards.add(new SetCardInfo("Tel-Jilad Exile", 133, Rarity.COMMON, mage.cards.t.TelJiladExile.class));
- cards.add(new SetCardInfo("Tel-Jilad Stylus", 260, Rarity.UNCOMMON, mage.cards.t.TelJiladStylus.class));
- cards.add(new SetCardInfo("Tempest of Light", 28, Rarity.UNCOMMON, mage.cards.t.TempestOfLight.class));
- cards.add(new SetCardInfo("Temporal Cascade", 52, Rarity.RARE, mage.cards.t.TemporalCascade.class));
- cards.add(new SetCardInfo("Terror", 79, Rarity.COMMON, mage.cards.t.Terror.class));
- cards.add(new SetCardInfo("Thirst for Knowledge", 53, Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class));
- cards.add(new SetCardInfo("Thoughtcast", 54, Rarity.COMMON, mage.cards.t.Thoughtcast.class));
- cards.add(new SetCardInfo("Thought Prison", 261, Rarity.UNCOMMON, mage.cards.t.ThoughtPrison.class));
- cards.add(new SetCardInfo("Timesifter", 262, Rarity.RARE, mage.cards.t.Timesifter.class));
- cards.add(new SetCardInfo("Titanium Golem", 263, Rarity.COMMON, mage.cards.t.TitaniumGolem.class));
- cards.add(new SetCardInfo("Tooth and Nail", 134, Rarity.RARE, mage.cards.t.ToothAndNail.class));
- cards.add(new SetCardInfo("Tooth of Chiss-Goria", 264, Rarity.COMMON, mage.cards.t.ToothOfChissGoria.class));
- cards.add(new SetCardInfo("Tower of Champions", 265, Rarity.RARE, mage.cards.t.TowerOfChampions.class));
- cards.add(new SetCardInfo("Tower of Eons", 266, Rarity.RARE, mage.cards.t.TowerOfEons.class));
- cards.add(new SetCardInfo("Tower of Fortunes", 267, Rarity.RARE, mage.cards.t.TowerOfFortunes.class));
- cards.add(new SetCardInfo("Tower of Murmurs", 268, Rarity.RARE, mage.cards.t.TowerOfMurmurs.class));
- cards.add(new SetCardInfo("Trash for Treasure", 109, Rarity.RARE, mage.cards.t.TrashForTreasure.class));
- cards.add(new SetCardInfo("Tree of Tales", 285, Rarity.COMMON, mage.cards.t.TreeOfTales.class));
- cards.add(new SetCardInfo("Triskelion", 269, Rarity.RARE, mage.cards.t.Triskelion.class));
- cards.add(new SetCardInfo("Troll Ascetic", 135, Rarity.RARE, mage.cards.t.TrollAscetic.class));
- cards.add(new SetCardInfo("Trolls of Tel-Jilad", 136, Rarity.UNCOMMON, mage.cards.t.TrollsOfTelJilad.class));
- cards.add(new SetCardInfo("Turn to Dust", 137, Rarity.COMMON, mage.cards.t.TurnToDust.class));
- cards.add(new SetCardInfo("Vault of Whispers", 286, Rarity.COMMON, mage.cards.v.VaultOfWhispers.class));
- cards.add(new SetCardInfo("Vedalken Archmage", 55, Rarity.RARE, mage.cards.v.VedalkenArchmage.class));
- cards.add(new SetCardInfo("Vermiculos", 80, Rarity.RARE, mage.cards.v.Vermiculos.class));
- cards.add(new SetCardInfo("Viridian Joiner", 138, Rarity.COMMON, mage.cards.v.ViridianJoiner.class));
- cards.add(new SetCardInfo("Viridian Longbow", 270, Rarity.COMMON, mage.cards.v.ViridianLongbow.class));
- cards.add(new SetCardInfo("Viridian Shaman", 139, Rarity.UNCOMMON, mage.cards.v.ViridianShaman.class));
- cards.add(new SetCardInfo("Vorrac Battlehorns", 271, Rarity.COMMON, mage.cards.v.VorracBattlehorns.class));
- cards.add(new SetCardInfo("Vulshok Battlegear", 272, Rarity.UNCOMMON, mage.cards.v.VulshokBattlegear.class));
- cards.add(new SetCardInfo("Vulshok Battlemaster", 110, Rarity.RARE, mage.cards.v.VulshokBattlemaster.class));
- cards.add(new SetCardInfo("Vulshok Berserker", 111, Rarity.COMMON, mage.cards.v.VulshokBerserker.class));
- cards.add(new SetCardInfo("Vulshok Gauntlets", 273, Rarity.COMMON, mage.cards.v.VulshokGauntlets.class));
- cards.add(new SetCardInfo("Wail of the Nim", 81, Rarity.COMMON, mage.cards.w.WailOfTheNim.class));
- cards.add(new SetCardInfo("Wall of Blood", 82, Rarity.UNCOMMON, mage.cards.w.WallOfBlood.class));
- cards.add(new SetCardInfo("Wanderguard Sentry", 56, Rarity.COMMON, mage.cards.w.WanderguardSentry.class));
- cards.add(new SetCardInfo("War Elemental", 112, Rarity.RARE, mage.cards.w.WarElemental.class));
- cards.add(new SetCardInfo("Welding Jar", 274, Rarity.COMMON, mage.cards.w.WeldingJar.class));
- cards.add(new SetCardInfo("Wizard Replica", 275, Rarity.COMMON, mage.cards.w.WizardReplica.class));
- cards.add(new SetCardInfo("Woebearer", 83, Rarity.UNCOMMON, mage.cards.w.Woebearer.class));
- cards.add(new SetCardInfo("Worldslayer", 276, Rarity.RARE, mage.cards.w.Worldslayer.class));
- cards.add(new SetCardInfo("Wrench Mind", 84, Rarity.COMMON, mage.cards.w.WrenchMind.class));
- cards.add(new SetCardInfo("Wurmskin Forger", 140, Rarity.COMMON, mage.cards.w.WurmskinForger.class));
- cards.add(new SetCardInfo("Yotian Soldier", 277, Rarity.COMMON, mage.cards.y.YotianSoldier.class));
- }
-}
+ 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));
+ cards.add(new SetCardInfo("Iron Myr", 187, Rarity.COMMON, mage.cards.i.IronMyr.class));
+ cards.add(new SetCardInfo("Irradiate", 67, Rarity.COMMON, mage.cards.i.Irradiate.class));
+ cards.add(new SetCardInfo("Island", 291, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 292, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 293, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 294, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Isochron Scepter", 188, Rarity.UNCOMMON, mage.cards.i.IsochronScepter.class));
+ cards.add(new SetCardInfo("Jinxed Choker", 189, Rarity.RARE, mage.cards.j.JinxedChoker.class));
+ cards.add(new SetCardInfo("Journey of Discovery", 123, Rarity.COMMON, mage.cards.j.JourneyOfDiscovery.class));
+ cards.add(new SetCardInfo("Krark-Clan Grunt", 97, Rarity.COMMON, mage.cards.k.KrarkClanGrunt.class));
+ cards.add(new SetCardInfo("Krark-Clan Shaman", 98, Rarity.COMMON, mage.cards.k.KrarkClanShaman.class));
+ cards.add(new SetCardInfo("Krark's Thumb", 190, Rarity.RARE, mage.cards.k.KrarksThumb.class));
+ cards.add(new SetCardInfo("Leaden Myr", 191, Rarity.COMMON, mage.cards.l.LeadenMyr.class));
+ cards.add(new SetCardInfo("Leonin Abunas", 8, Rarity.RARE, mage.cards.l.LeoninAbunas.class));
+ cards.add(new SetCardInfo("Leonin Bladetrap", 192, Rarity.UNCOMMON, mage.cards.l.LeoninBladetrap.class));
+ cards.add(new SetCardInfo("Leonin Den-Guard", 9, Rarity.COMMON, mage.cards.l.LeoninDenGuard.class));
+ cards.add(new SetCardInfo("Leonin Elder", 10, Rarity.COMMON, mage.cards.l.LeoninElder.class));
+ cards.add(new SetCardInfo("Leonin Scimitar", 193, Rarity.COMMON, mage.cards.l.LeoninScimitar.class));
+ cards.add(new SetCardInfo("Leonin Skyhunter", 11, Rarity.UNCOMMON, mage.cards.l.LeoninSkyhunter.class));
+ cards.add(new SetCardInfo("Leonin Sun Standard", 194, Rarity.RARE, mage.cards.l.LeoninSunStandard.class));
+ cards.add(new SetCardInfo("Leveler", 195, Rarity.RARE, mage.cards.l.Leveler.class));
+ cards.add(new SetCardInfo("Liar's Pendulum", 196, Rarity.RARE, mage.cards.l.LiarsPendulum.class));
+ cards.add(new SetCardInfo("Lifespark Spellbomb", 197, Rarity.COMMON, mage.cards.l.LifesparkSpellbomb.class));
+ cards.add(new SetCardInfo("Lightning Coils", 198, Rarity.RARE, mage.cards.l.LightningCoils.class));
+ cards.add(new SetCardInfo("Lightning Greaves", 199, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class));
+ cards.add(new SetCardInfo("Living Hive", 124, Rarity.RARE, mage.cards.l.LivingHive.class));
+ cards.add(new SetCardInfo("Lodestone Myr", 200, Rarity.RARE, mage.cards.l.LodestoneMyr.class));
+ cards.add(new SetCardInfo("Looming Hoverguard", 38, Rarity.UNCOMMON, mage.cards.l.LoomingHoverguard.class));
+ cards.add(new SetCardInfo("Loxodon Mender", 12, Rarity.COMMON, mage.cards.l.LoxodonMender.class));
+ cards.add(new SetCardInfo("Loxodon Peacekeeper", 13, Rarity.RARE, mage.cards.l.LoxodonPeacekeeper.class));
+ cards.add(new SetCardInfo("Loxodon Punisher", 14, Rarity.RARE, mage.cards.l.LoxodonPunisher.class));
+ cards.add(new SetCardInfo("Loxodon Warhammer", 201, Rarity.UNCOMMON, mage.cards.l.LoxodonWarhammer.class));
+ cards.add(new SetCardInfo("Lumengrid Augur", 39, Rarity.RARE, mage.cards.l.LumengridAugur.class));
+ cards.add(new SetCardInfo("Lumengrid Sentinel", 40, Rarity.UNCOMMON, mage.cards.l.LumengridSentinel.class));
+ cards.add(new SetCardInfo("Lumengrid Warden", 41, Rarity.COMMON, mage.cards.l.LumengridWarden.class));
+ cards.add(new SetCardInfo("Luminous Angel", 15, Rarity.RARE, mage.cards.l.LuminousAngel.class));
+ cards.add(new SetCardInfo("Malachite Golem", 202, Rarity.COMMON, mage.cards.m.MalachiteGolem.class));
+ cards.add(new SetCardInfo("March of the Machines", 42, Rarity.RARE, mage.cards.m.MarchOfTheMachines.class));
+ cards.add(new SetCardInfo("Mask of Memory", 203, Rarity.UNCOMMON, mage.cards.m.MaskOfMemory.class));
+ cards.add(new SetCardInfo("Mass Hysteria", 99, Rarity.RARE, mage.cards.m.MassHysteria.class));
+ cards.add(new SetCardInfo("Megatog", 100, Rarity.RARE, mage.cards.m.Megatog.class));
+ cards.add(new SetCardInfo("Mesmeric Orb", 204, Rarity.RARE, mage.cards.m.MesmericOrb.class));
+ cards.add(new SetCardInfo("Mind's Eye", 205, Rarity.RARE, mage.cards.m.MindsEye.class));
+ cards.add(new SetCardInfo("Mindslaver", 206, Rarity.RARE, mage.cards.m.Mindslaver.class));
+ cards.add(new SetCardInfo("Mindstorm Crown", 207, Rarity.UNCOMMON, mage.cards.m.MindstormCrown.class));
+ cards.add(new SetCardInfo("Molder Slug", 125, Rarity.RARE, mage.cards.m.MolderSlug.class));
+ cards.add(new SetCardInfo("Molten Rain", 101, Rarity.COMMON, mage.cards.m.MoltenRain.class));
+ cards.add(new SetCardInfo("Moriok Scavenger", 68, Rarity.COMMON, mage.cards.m.MoriokScavenger.class));
+ cards.add(new SetCardInfo("Mountain", 299, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 300, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 301, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 302, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Myr Adapter", 210, Rarity.COMMON, mage.cards.m.MyrAdapter.class));
+ cards.add(new SetCardInfo("Myr Enforcer", 211, Rarity.COMMON, mage.cards.m.MyrEnforcer.class));
+ cards.add(new SetCardInfo("Myr Incubator", 212, Rarity.RARE, mage.cards.m.MyrIncubator.class));
+ cards.add(new SetCardInfo("Myr Mindservant", 213, Rarity.UNCOMMON, mage.cards.m.MyrMindservant.class));
+ cards.add(new SetCardInfo("Myr Prototype", 214, Rarity.UNCOMMON, mage.cards.m.MyrPrototype.class));
+ cards.add(new SetCardInfo("Myr Retriever", 215, Rarity.UNCOMMON, mage.cards.m.MyrRetriever.class));
+ cards.add(new SetCardInfo("Necrogen Mists", 69, Rarity.RARE, mage.cards.n.NecrogenMists.class));
+ cards.add(new SetCardInfo("Necrogen Spellbomb", 216, Rarity.COMMON, mage.cards.n.NecrogenSpellbomb.class));
+ cards.add(new SetCardInfo("Needlebug", 217, Rarity.UNCOMMON, mage.cards.n.Needlebug.class));
+ cards.add(new SetCardInfo("Neurok Familiar", 43, Rarity.COMMON, mage.cards.n.NeurokFamiliar.class));
+ cards.add(new SetCardInfo("Neurok Hoversail", 218, Rarity.COMMON, mage.cards.n.NeurokHoversail.class));
+ cards.add(new SetCardInfo("Neurok Spy", 44, Rarity.COMMON, mage.cards.n.NeurokSpy.class));
+ cards.add(new SetCardInfo("Nightmare Lash", 219, Rarity.RARE, mage.cards.n.NightmareLash.class));
+ cards.add(new SetCardInfo("Nim Devourer", 70, Rarity.RARE, mage.cards.n.NimDevourer.class));
+ cards.add(new SetCardInfo("Nim Lasher", 71, Rarity.COMMON, mage.cards.n.NimLasher.class));
+ cards.add(new SetCardInfo("Nim Replica", 220, Rarity.COMMON, mage.cards.n.NimReplica.class));
+ cards.add(new SetCardInfo("Nim Shambler", 72, Rarity.UNCOMMON, mage.cards.n.NimShambler.class));
+ cards.add(new SetCardInfo("Nim Shrieker", 73, Rarity.COMMON, mage.cards.n.NimShrieker.class));
+ cards.add(new SetCardInfo("Nuisance Engine", 221, Rarity.UNCOMMON, mage.cards.n.NuisanceEngine.class));
+ cards.add(new SetCardInfo("Oblivion Stone", 222, Rarity.RARE, mage.cards.o.OblivionStone.class));
+ cards.add(new SetCardInfo("Ogre Leadfoot", 102, Rarity.COMMON, mage.cards.o.OgreLeadfoot.class));
+ cards.add(new SetCardInfo("Omega Myr", 223, Rarity.COMMON, mage.cards.o.OmegaMyr.class));
+ cards.add(new SetCardInfo("One Dozen Eyes", 126, Rarity.UNCOMMON, mage.cards.o.OneDozenEyes.class));
+ cards.add(new SetCardInfo("Ornithopter", 224, Rarity.UNCOMMON, mage.cards.o.Ornithopter.class));
+ cards.add(new SetCardInfo("Override", 45, Rarity.COMMON, mage.cards.o.OverrideCard.class));
+ cards.add(new SetCardInfo("Pearl Shard", 225, Rarity.UNCOMMON, mage.cards.p.PearlShard.class));
+ cards.add(new SetCardInfo("Pentavus", 226, Rarity.RARE, mage.cards.p.Pentavus.class));
+ cards.add(new SetCardInfo("Pewter Golem", 227, Rarity.COMMON, mage.cards.p.PewterGolem.class));
+ cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 288, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 289, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 290, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plated Slagwurm", 127, Rarity.RARE, mage.cards.p.PlatedSlagwurm.class));
+ cards.add(new SetCardInfo("Platinum Angel", 228, Rarity.RARE, mage.cards.p.PlatinumAngel.class));
+ cards.add(new SetCardInfo("Power Conduit", 229, Rarity.UNCOMMON, mage.cards.p.PowerConduit.class));
+ cards.add(new SetCardInfo("Predator's Strike", 128, Rarity.COMMON, mage.cards.p.PredatorsStrike.class));
+ cards.add(new SetCardInfo("Promise of Power", 74, Rarity.RARE, mage.cards.p.PromiseOfPower.class));
+ cards.add(new SetCardInfo("Proteus Staff", 230, Rarity.RARE, mage.cards.p.ProteusStaff.class));
+ cards.add(new SetCardInfo("Psychic Membrane", 46, Rarity.UNCOMMON, mage.cards.p.PsychicMembrane.class));
+ cards.add(new SetCardInfo("Psychogenic Probe", 231, Rarity.RARE, mage.cards.p.PsychogenicProbe.class));
+ cards.add(new SetCardInfo("Pyrite Spellbomb", 232, Rarity.COMMON, mage.cards.p.PyriteSpellbomb.class));
+ cards.add(new SetCardInfo("Quicksilver Elemental", 47, Rarity.RARE, mage.cards.q.QuicksilverElemental.class));
+ cards.add(new SetCardInfo("Quicksilver Fountain", 233, Rarity.RARE, mage.cards.q.QuicksilverFountain.class));
+ cards.add(new SetCardInfo("Raise the Alarm", 16, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class));
+ cards.add(new SetCardInfo("Razor Barrier", 17, Rarity.COMMON, mage.cards.r.RazorBarrier.class));
+ cards.add(new SetCardInfo("Regress", 48, Rarity.COMMON, mage.cards.r.Regress.class));
+ cards.add(new SetCardInfo("Reiver Demon", 75, Rarity.RARE, mage.cards.r.ReiverDemon.class));
+ cards.add(new SetCardInfo("Relic Bane", 76, Rarity.UNCOMMON, mage.cards.r.RelicBane.class));
+ cards.add(new SetCardInfo("Roar of the Kha", 18, Rarity.UNCOMMON, mage.cards.r.RoarOfTheKha.class));
+ cards.add(new SetCardInfo("Rule of Law", 19, Rarity.RARE, mage.cards.r.RuleOfLaw.class));
+ cards.add(new SetCardInfo("Rust Elemental", 234, Rarity.UNCOMMON, mage.cards.r.RustElemental.class));
+ cards.add(new SetCardInfo("Rustmouth Ogre", 103, Rarity.UNCOMMON, mage.cards.r.RustmouthOgre.class));
+ cards.add(new SetCardInfo("Rustspore Ram", 235, Rarity.UNCOMMON, mage.cards.r.RustsporeRam.class));
+ cards.add(new SetCardInfo("Scale of Chiss-Goria", 236, Rarity.COMMON, mage.cards.s.ScaleOfChissGoria.class));
+ cards.add(new SetCardInfo("Scrabbling Claws", 237, Rarity.UNCOMMON, mage.cards.s.ScrabblingClaws.class));
+ cards.add(new SetCardInfo("Sculpting Steel", 238, Rarity.RARE, mage.cards.s.SculptingSteel.class));
+ cards.add(new SetCardInfo("Scythe of the Wretched", 239, Rarity.RARE, mage.cards.s.ScytheOfTheWretched.class));
+ cards.add(new SetCardInfo("Seat of the Synod", 283, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class));
+ cards.add(new SetCardInfo("Second Sunrise", 20, Rarity.RARE, mage.cards.s.SecondSunrise.class));
+ cards.add(new SetCardInfo("Seething Song", 104, Rarity.COMMON, mage.cards.s.SeethingSong.class));
+ cards.add(new SetCardInfo("Serum Tank", 240, Rarity.UNCOMMON, mage.cards.s.SerumTank.class));
+ cards.add(new SetCardInfo("Shared Fate", 49, Rarity.RARE, mage.cards.s.SharedFate.class));
+ cards.add(new SetCardInfo("Shatter", 105, Rarity.COMMON, mage.cards.s.Shatter.class));
+ cards.add(new SetCardInfo("Shrapnel Blast", 106, Rarity.UNCOMMON, mage.cards.s.ShrapnelBlast.class));
+ cards.add(new SetCardInfo("Silver Myr", 241, Rarity.COMMON, mage.cards.s.SilverMyr.class));
+ cards.add(new SetCardInfo("Skeleton Shard", 242, Rarity.UNCOMMON, mage.cards.s.SkeletonShard.class));
+ cards.add(new SetCardInfo("Skyhunter Cub", 21, Rarity.COMMON, mage.cards.s.SkyhunterCub.class));
+ cards.add(new SetCardInfo("Skyhunter Patrol", 22, Rarity.COMMON, mage.cards.s.SkyhunterPatrol.class));
+ cards.add(new SetCardInfo("Slagwurm Armor", 243, Rarity.COMMON, mage.cards.s.SlagwurmArmor.class));
+ cards.add(new SetCardInfo("Slith Ascendant", 23, Rarity.UNCOMMON, mage.cards.s.SlithAscendant.class));
+ cards.add(new SetCardInfo("Slith Bloodletter", 77, Rarity.UNCOMMON, mage.cards.s.SlithBloodletter.class));
+ cards.add(new SetCardInfo("Slith Firewalker", 107, Rarity.UNCOMMON, mage.cards.s.SlithFirewalker.class));
+ cards.add(new SetCardInfo("Slith Predator", 129, Rarity.UNCOMMON, mage.cards.s.SlithPredator.class));
+ cards.add(new SetCardInfo("Slith Strider", 50, Rarity.UNCOMMON, mage.cards.s.SlithStrider.class));
+ cards.add(new SetCardInfo("Solar Tide", 24, Rarity.RARE, mage.cards.s.SolarTide.class));
+ cards.add(new SetCardInfo("Soldier Replica", 244, Rarity.COMMON, mage.cards.s.SoldierReplica.class));
+ cards.add(new SetCardInfo("Solemn Simulacrum", 245, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class));
+ cards.add(new SetCardInfo("Somber Hoverguard", 51, Rarity.COMMON, mage.cards.s.SomberHoverguard.class));
+ cards.add(new SetCardInfo("Soul Foundry", 246, Rarity.RARE, mage.cards.s.SoulFoundry.class));
+ cards.add(new SetCardInfo("Soul Nova", 25, Rarity.UNCOMMON, mage.cards.s.SoulNova.class));
+ cards.add(new SetCardInfo("Spellweaver Helix", 247, Rarity.RARE, mage.cards.s.SpellweaverHelix.class));
+ cards.add(new SetCardInfo("Sphere of Purity", 26, Rarity.COMMON, mage.cards.s.SphereOfPurity.class));
+ cards.add(new SetCardInfo("Spikeshot Goblin", 108, Rarity.COMMON, mage.cards.s.SpikeshotGoblin.class));
+ cards.add(new SetCardInfo("Spoils of the Vault", 78, Rarity.RARE, mage.cards.s.SpoilsOfTheVault.class));
+ cards.add(new SetCardInfo("Stalking Stones", 284, Rarity.UNCOMMON, mage.cards.s.StalkingStones.class));
+ cards.add(new SetCardInfo("Steel Wall", 248, Rarity.COMMON, mage.cards.s.SteelWall.class));
+ cards.add(new SetCardInfo("Sunbeam Spellbomb", 250, Rarity.COMMON, mage.cards.s.SunbeamSpellbomb.class));
+ cards.add(new SetCardInfo("Sun Droplet", 249, Rarity.UNCOMMON, mage.cards.s.SunDroplet.class));
+ cards.add(new SetCardInfo("Swamp", 295, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 296, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 297, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 298, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Sword of Kaldra", 251, Rarity.RARE, mage.cards.s.SwordOfKaldra.class));
+ cards.add(new SetCardInfo("Sylvan Scrying", 130, Rarity.UNCOMMON, mage.cards.s.SylvanScrying.class));
+ cards.add(new SetCardInfo("Synod Sanctum", 252, Rarity.UNCOMMON, mage.cards.s.SynodSanctum.class));
+ cards.add(new SetCardInfo("Taj-Nar Swordsmith", 27, Rarity.UNCOMMON, mage.cards.t.TajNarSwordsmith.class));
+ cards.add(new SetCardInfo("Talisman of Dominance", 253, Rarity.UNCOMMON, mage.cards.t.TalismanOfDominance.class));
+ cards.add(new SetCardInfo("Talisman of Impulse", 254, Rarity.UNCOMMON, mage.cards.t.TalismanOfImpulse.class));
+ cards.add(new SetCardInfo("Talisman of Indulgence", 255, Rarity.UNCOMMON, mage.cards.t.TalismanOfIndulgence.class));
+ cards.add(new SetCardInfo("Talisman of Progress", 256, Rarity.UNCOMMON, mage.cards.t.TalismanOfProgress.class));
+ cards.add(new SetCardInfo("Talisman of Unity", 257, Rarity.UNCOMMON, mage.cards.t.TalismanOfUnity.class));
+ cards.add(new SetCardInfo("Tanglebloom", 258, Rarity.COMMON, mage.cards.t.Tanglebloom.class));
+ cards.add(new SetCardInfo("Tangleroot", 259, Rarity.RARE, mage.cards.t.Tangleroot.class));
+ cards.add(new SetCardInfo("Tel-Jilad Archers", 131, Rarity.COMMON, mage.cards.t.TelJiladArchers.class));
+ cards.add(new SetCardInfo("Tel-Jilad Chosen", 132, Rarity.COMMON, mage.cards.t.TelJiladChosen.class));
+ cards.add(new SetCardInfo("Tel-Jilad Exile", 133, Rarity.COMMON, mage.cards.t.TelJiladExile.class));
+ cards.add(new SetCardInfo("Tel-Jilad Stylus", 260, Rarity.UNCOMMON, mage.cards.t.TelJiladStylus.class));
+ cards.add(new SetCardInfo("Tempest of Light", 28, Rarity.UNCOMMON, mage.cards.t.TempestOfLight.class));
+ cards.add(new SetCardInfo("Temporal Cascade", 52, Rarity.RARE, mage.cards.t.TemporalCascade.class));
+ cards.add(new SetCardInfo("Terror", 79, Rarity.COMMON, mage.cards.t.Terror.class));
+ cards.add(new SetCardInfo("Thirst for Knowledge", 53, Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class));
+ cards.add(new SetCardInfo("Thoughtcast", 54, Rarity.COMMON, mage.cards.t.Thoughtcast.class));
+ cards.add(new SetCardInfo("Thought Prison", 261, Rarity.UNCOMMON, mage.cards.t.ThoughtPrison.class));
+ cards.add(new SetCardInfo("Timesifter", 262, Rarity.RARE, mage.cards.t.Timesifter.class));
+ cards.add(new SetCardInfo("Titanium Golem", 263, Rarity.COMMON, mage.cards.t.TitaniumGolem.class));
+ cards.add(new SetCardInfo("Tooth and Nail", 134, Rarity.RARE, mage.cards.t.ToothAndNail.class));
+ cards.add(new SetCardInfo("Tooth of Chiss-Goria", 264, Rarity.COMMON, mage.cards.t.ToothOfChissGoria.class));
+ cards.add(new SetCardInfo("Tower of Champions", 265, Rarity.RARE, mage.cards.t.TowerOfChampions.class));
+ cards.add(new SetCardInfo("Tower of Eons", 266, Rarity.RARE, mage.cards.t.TowerOfEons.class));
+ cards.add(new SetCardInfo("Tower of Fortunes", 267, Rarity.RARE, mage.cards.t.TowerOfFortunes.class));
+ cards.add(new SetCardInfo("Tower of Murmurs", 268, Rarity.RARE, mage.cards.t.TowerOfMurmurs.class));
+ cards.add(new SetCardInfo("Trash for Treasure", 109, Rarity.RARE, mage.cards.t.TrashForTreasure.class));
+ cards.add(new SetCardInfo("Tree of Tales", 285, Rarity.COMMON, mage.cards.t.TreeOfTales.class));
+ cards.add(new SetCardInfo("Triskelion", 269, Rarity.RARE, mage.cards.t.Triskelion.class));
+ cards.add(new SetCardInfo("Troll Ascetic", 135, Rarity.RARE, mage.cards.t.TrollAscetic.class));
+ cards.add(new SetCardInfo("Trolls of Tel-Jilad", 136, Rarity.UNCOMMON, mage.cards.t.TrollsOfTelJilad.class));
+ cards.add(new SetCardInfo("Turn to Dust", 137, Rarity.COMMON, mage.cards.t.TurnToDust.class));
+ cards.add(new SetCardInfo("Vault of Whispers", 286, Rarity.COMMON, mage.cards.v.VaultOfWhispers.class));
+ cards.add(new SetCardInfo("Vedalken Archmage", 55, Rarity.RARE, mage.cards.v.VedalkenArchmage.class));
+ cards.add(new SetCardInfo("Vermiculos", 80, Rarity.RARE, mage.cards.v.Vermiculos.class));
+ cards.add(new SetCardInfo("Viridian Joiner", 138, Rarity.COMMON, mage.cards.v.ViridianJoiner.class));
+ cards.add(new SetCardInfo("Viridian Longbow", 270, Rarity.COMMON, mage.cards.v.ViridianLongbow.class));
+ cards.add(new SetCardInfo("Viridian Shaman", 139, Rarity.UNCOMMON, mage.cards.v.ViridianShaman.class));
+ cards.add(new SetCardInfo("Vorrac Battlehorns", 271, Rarity.COMMON, mage.cards.v.VorracBattlehorns.class));
+ cards.add(new SetCardInfo("Vulshok Battlegear", 272, Rarity.UNCOMMON, mage.cards.v.VulshokBattlegear.class));
+ cards.add(new SetCardInfo("Vulshok Battlemaster", 110, Rarity.RARE, mage.cards.v.VulshokBattlemaster.class));
+ cards.add(new SetCardInfo("Vulshok Berserker", 111, Rarity.COMMON, mage.cards.v.VulshokBerserker.class));
+ cards.add(new SetCardInfo("Vulshok Gauntlets", 273, Rarity.COMMON, mage.cards.v.VulshokGauntlets.class));
+ cards.add(new SetCardInfo("Wail of the Nim", 81, Rarity.COMMON, mage.cards.w.WailOfTheNim.class));
+ cards.add(new SetCardInfo("Wall of Blood", 82, Rarity.UNCOMMON, mage.cards.w.WallOfBlood.class));
+ cards.add(new SetCardInfo("Wanderguard Sentry", 56, Rarity.COMMON, mage.cards.w.WanderguardSentry.class));
+ cards.add(new SetCardInfo("War Elemental", 112, Rarity.RARE, mage.cards.w.WarElemental.class));
+ cards.add(new SetCardInfo("Welding Jar", 274, Rarity.COMMON, mage.cards.w.WeldingJar.class));
+ cards.add(new SetCardInfo("Wizard Replica", 275, Rarity.COMMON, mage.cards.w.WizardReplica.class));
+ cards.add(new SetCardInfo("Woebearer", 83, Rarity.UNCOMMON, mage.cards.w.Woebearer.class));
+ cards.add(new SetCardInfo("Worldslayer", 276, Rarity.RARE, mage.cards.w.Worldslayer.class));
+ cards.add(new SetCardInfo("Wrench Mind", 84, Rarity.COMMON, mage.cards.w.WrenchMind.class));
+ cards.add(new SetCardInfo("Wurmskin Forger", 140, Rarity.COMMON, mage.cards.w.WurmskinForger.class));
+ cards.add(new SetCardInfo("Yotian Soldier", 277, Rarity.COMMON, mage.cards.y.YotianSoldier.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/MirrodinBesieged.java b/Mage.Sets/src/mage/sets/MirrodinBesieged.java
index 23677de00ca..2076308067c 100644
--- a/Mage.Sets/src/mage/sets/MirrodinBesieged.java
+++ b/Mage.Sets/src/mage/sets/MirrodinBesieged.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author nantuko84
*/
-public class MirrodinBesieged extends ExpansionSet {
+public final class MirrodinBesieged extends ExpansionSet {
private static final MirrodinBesieged instance = new MirrodinBesieged();
diff --git a/Mage.Sets/src/mage/sets/ModernMasters.java b/Mage.Sets/src/mage/sets/ModernMasters.java
index 1546ae073d1..a1dc50c9dec 100644
--- a/Mage.Sets/src/mage/sets/ModernMasters.java
+++ b/Mage.Sets/src/mage/sets/ModernMasters.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class ModernMasters extends ExpansionSet {
+public final class ModernMasters extends ExpansionSet {
private static final ModernMasters instance = new ModernMasters();
diff --git a/Mage.Sets/src/mage/sets/ModernMasters2015.java b/Mage.Sets/src/mage/sets/ModernMasters2015.java
index 633f35b5132..5a4ec7140da 100644
--- a/Mage.Sets/src/mage/sets/ModernMasters2015.java
+++ b/Mage.Sets/src/mage/sets/ModernMasters2015.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class ModernMasters2015 extends ExpansionSet {
+public final class ModernMasters2015 extends ExpansionSet {
private static final ModernMasters2015 instance = new ModernMasters2015();
diff --git a/Mage.Sets/src/mage/sets/ModernMasters2017.java b/Mage.Sets/src/mage/sets/ModernMasters2017.java
index 483bfc4307a..64da74a142c 100644
--- a/Mage.Sets/src/mage/sets/ModernMasters2017.java
+++ b/Mage.Sets/src/mage/sets/ModernMasters2017.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class ModernMasters2017 extends ExpansionSet {
+public final class ModernMasters2017 extends ExpansionSet {
private static final ModernMasters2017 instance = new ModernMasters2017();
diff --git a/Mage.Sets/src/mage/sets/Morningtide.java b/Mage.Sets/src/mage/sets/Morningtide.java
index 296de677327..32069858b4d 100644
--- a/Mage.Sets/src/mage/sets/Morningtide.java
+++ b/Mage.Sets/src/mage/sets/Morningtide.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class Morningtide extends ExpansionSet {
+public final class Morningtide extends ExpansionSet {
private static final Morningtide instance = new Morningtide();
diff --git a/Mage.Sets/src/mage/sets/Nemesis.java b/Mage.Sets/src/mage/sets/Nemesis.java
index a1fb5595e93..3472335e720 100644
--- a/Mage.Sets/src/mage/sets/Nemesis.java
+++ b/Mage.Sets/src/mage/sets/Nemesis.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class Nemesis extends ExpansionSet {
+public final class Nemesis extends ExpansionSet {
private static final Nemesis instance = new Nemesis();
diff --git a/Mage.Sets/src/mage/sets/NewPhyrexia.java b/Mage.Sets/src/mage/sets/NewPhyrexia.java
index 10af6d4c5be..c5dc6ca2c8c 100644
--- a/Mage.Sets/src/mage/sets/NewPhyrexia.java
+++ b/Mage.Sets/src/mage/sets/NewPhyrexia.java
@@ -4,7 +4,7 @@ import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class NewPhyrexia extends ExpansionSet {
+public final class NewPhyrexia extends ExpansionSet {
private static final NewPhyrexia instance = new NewPhyrexia();
diff --git a/Mage.Sets/src/mage/sets/NinthEdition.java b/Mage.Sets/src/mage/sets/NinthEdition.java
index b8415c89c06..eac43b9eba0 100644
--- a/Mage.Sets/src/mage/sets/NinthEdition.java
+++ b/Mage.Sets/src/mage/sets/NinthEdition.java
@@ -6,7 +6,7 @@ import mage.cards.r.RukhEgg;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class NinthEdition extends ExpansionSet {
+public final class NinthEdition extends ExpansionSet {
private static final NinthEdition instance = new NinthEdition();
diff --git a/Mage.Sets/src/mage/sets/NinthEditionBox.java b/Mage.Sets/src/mage/sets/NinthEditionBox.java
index 45bcb00cc02..10f11dfaccb 100644
--- a/Mage.Sets/src/mage/sets/NinthEditionBox.java
+++ b/Mage.Sets/src/mage/sets/NinthEditionBox.java
@@ -4,7 +4,7 @@ import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class NinthEditionBox extends ExpansionSet {
+public final class NinthEditionBox extends ExpansionSet {
private static final NinthEditionBox instance = new NinthEditionBox();
diff --git a/Mage.Sets/src/mage/sets/NissaVsObNixilis.java b/Mage.Sets/src/mage/sets/NissaVsObNixilis.java
index 2e13f097351..cdfc58065b1 100644
--- a/Mage.Sets/src/mage/sets/NissaVsObNixilis.java
+++ b/Mage.Sets/src/mage/sets/NissaVsObNixilis.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class NissaVsObNixilis extends ExpansionSet {
+public final class NissaVsObNixilis extends ExpansionSet {
private static final NissaVsObNixilis instance = new NissaVsObNixilis();
diff --git a/Mage.Sets/src/mage/sets/OathOfTheGatewatch.java b/Mage.Sets/src/mage/sets/OathOfTheGatewatch.java
index 30fe536acc6..e99f121ea51 100644
--- a/Mage.Sets/src/mage/sets/OathOfTheGatewatch.java
+++ b/Mage.Sets/src/mage/sets/OathOfTheGatewatch.java
@@ -20,7 +20,7 @@ import java.util.List;
*
* @author fireshoes
*/
-public class OathOfTheGatewatch extends ExpansionSet {
+public final class OathOfTheGatewatch extends ExpansionSet {
private static final OathOfTheGatewatch instance = new OathOfTheGatewatch();
diff --git a/Mage.Sets/src/mage/sets/Odyssey.java b/Mage.Sets/src/mage/sets/Odyssey.java
index 121b3ad17d3..6463bda9d63 100644
--- a/Mage.Sets/src/mage/sets/Odyssey.java
+++ b/Mage.Sets/src/mage/sets/Odyssey.java
@@ -1,406 +1,406 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class Odyssey extends ExpansionSet {
-
- private static final Odyssey instance = new Odyssey();
-
- public static Odyssey getInstance() {
- return instance;
- }
-
- private Odyssey() {
- super("Odyssey", "ODY", ExpansionSet.buildDate(2001, 9, 22), SetType.EXPANSION);
- this.blockName = "Odyssey";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Abandoned Outpost", 312, Rarity.COMMON, mage.cards.a.AbandonedOutpost.class));
- cards.add(new SetCardInfo("Aboshan, Cephalid Emperor", 58, Rarity.RARE, mage.cards.a.AboshanCephalidEmperor.class));
- cards.add(new SetCardInfo("Aboshan's Desire", 59, Rarity.COMMON, mage.cards.a.AboshansDesire.class));
- cards.add(new SetCardInfo("Acceptable Losses", 172, Rarity.COMMON, mage.cards.a.AcceptableLosses.class));
- cards.add(new SetCardInfo("Aegis of Honor", 1, Rarity.RARE, mage.cards.a.AegisOfHonor.class));
- cards.add(new SetCardInfo("Aether Burst", 60, Rarity.COMMON, mage.cards.a.AetherBurst.class));
- cards.add(new SetCardInfo("Afflict", 115, Rarity.COMMON, mage.cards.a.Afflict.class));
- cards.add(new SetCardInfo("Amugaba", 61, Rarity.RARE, mage.cards.a.Amugaba.class));
- cards.add(new SetCardInfo("Anarchist", 173, Rarity.COMMON, mage.cards.a.Anarchist.class));
- cards.add(new SetCardInfo("Ancestral Tribute", 2, Rarity.RARE, mage.cards.a.AncestralTribute.class));
- cards.add(new SetCardInfo("Angelic Wall", 3, Rarity.COMMON, mage.cards.a.AngelicWall.class));
- cards.add(new SetCardInfo("Animal Boneyard", 4, Rarity.UNCOMMON, mage.cards.a.AnimalBoneyard.class));
- cards.add(new SetCardInfo("Ashen Firebeast", 174, Rarity.RARE, mage.cards.a.AshenFirebeast.class));
- cards.add(new SetCardInfo("Atogatog", 286, Rarity.RARE, mage.cards.a.Atogatog.class));
- cards.add(new SetCardInfo("Aura Graft", 62, Rarity.UNCOMMON, mage.cards.a.AuraGraft.class));
- cards.add(new SetCardInfo("Auramancer", 5, Rarity.COMMON, mage.cards.a.Auramancer.class));
- cards.add(new SetCardInfo("Aven Archer", 6, Rarity.UNCOMMON, mage.cards.a.AvenArcher.class));
- cards.add(new SetCardInfo("Aven Cloudchaser", 7, Rarity.COMMON, mage.cards.a.AvenCloudchaser.class));
- cards.add(new SetCardInfo("Aven Fisher", 63, Rarity.COMMON, mage.cards.a.AvenFisher.class));
- cards.add(new SetCardInfo("Aven Flock", 8, Rarity.COMMON, mage.cards.a.AvenFlock.class));
- cards.add(new SetCardInfo("Aven Shrine", 9, Rarity.RARE, mage.cards.a.AvenShrine.class));
- cards.add(new SetCardInfo("Aven Smokeweaver", 64, Rarity.UNCOMMON, mage.cards.a.AvenSmokeweaver.class));
- cards.add(new SetCardInfo("Aven Windreader", 65, Rarity.COMMON, mage.cards.a.AvenWindreader.class));
- cards.add(new SetCardInfo("Balancing Act", 10, Rarity.RARE, mage.cards.b.BalancingAct.class));
- cards.add(new SetCardInfo("Balshan Beguiler", 66, Rarity.UNCOMMON, mage.cards.b.BalshanBeguiler.class));
- cards.add(new SetCardInfo("Balshan Griffin", 67, Rarity.UNCOMMON, mage.cards.b.BalshanGriffin.class));
- cards.add(new SetCardInfo("Bamboozle", 68, Rarity.UNCOMMON, mage.cards.b.Bamboozle.class));
- cards.add(new SetCardInfo("Barbarian Lunatic", 175, Rarity.COMMON, mage.cards.b.BarbarianLunatic.class));
- cards.add(new SetCardInfo("Barbarian Ring", 313, Rarity.UNCOMMON, mage.cards.b.BarbarianRing.class));
- cards.add(new SetCardInfo("Bash to Bits", 176, Rarity.UNCOMMON, mage.cards.b.BashToBits.class));
- cards.add(new SetCardInfo("Battle of Wits", 69, Rarity.RARE, mage.cards.b.BattleOfWits.class));
- cards.add(new SetCardInfo("Battle Strain", 177, Rarity.UNCOMMON, mage.cards.b.BattleStrain.class));
- cards.add(new SetCardInfo("Bearscape", 229, Rarity.RARE, mage.cards.b.Bearscape.class));
- cards.add(new SetCardInfo("Beast Attack", 230, Rarity.UNCOMMON, mage.cards.b.BeastAttack.class));
- cards.add(new SetCardInfo("Beloved Chaplain", 11, Rarity.UNCOMMON, mage.cards.b.BelovedChaplain.class));
- cards.add(new SetCardInfo("Blazing Salvo", 178, Rarity.COMMON, mage.cards.b.BlazingSalvo.class));
- cards.add(new SetCardInfo("Blessed Orator", 12, Rarity.UNCOMMON, mage.cards.b.BlessedOrator.class));
- cards.add(new SetCardInfo("Bloodcurdler", 116, Rarity.RARE, mage.cards.b.Bloodcurdler.class));
- cards.add(new SetCardInfo("Bog Wreckage", 314, Rarity.COMMON, mage.cards.b.BogWreckage.class));
- cards.add(new SetCardInfo("Bomb Squad", 179, Rarity.RARE, mage.cards.b.BombSquad.class));
- cards.add(new SetCardInfo("Braids, Cabal Minion", 117, Rarity.RARE, mage.cards.b.BraidsCabalMinion.class));
- cards.add(new SetCardInfo("Buried Alive", 118, Rarity.UNCOMMON, mage.cards.b.BuriedAlive.class));
- cards.add(new SetCardInfo("Burning Sands", 180, Rarity.RARE, mage.cards.b.BurningSands.class));
- cards.add(new SetCardInfo("Cabal Inquisitor", 119, Rarity.COMMON, mage.cards.c.CabalInquisitor.class));
- cards.add(new SetCardInfo("Cabal Patriarch", 120, Rarity.RARE, mage.cards.c.CabalPatriarch.class));
- cards.add(new SetCardInfo("Cabal Pit", 315, Rarity.UNCOMMON, mage.cards.c.CabalPit.class));
- cards.add(new SetCardInfo("Cabal Shrine", 121, Rarity.RARE, mage.cards.c.CabalShrine.class));
- cards.add(new SetCardInfo("Call of the Herd", 231, Rarity.RARE, mage.cards.c.CallOfTheHerd.class));
- cards.add(new SetCardInfo("Cantivore", 13, Rarity.RARE, mage.cards.c.Cantivore.class));
- cards.add(new SetCardInfo("Careful Study", 70, Rarity.COMMON, mage.cards.c.CarefulStudy.class));
- cards.add(new SetCardInfo("Cartographer", 232, Rarity.COMMON, mage.cards.c.Cartographer.class));
- cards.add(new SetCardInfo("Catalyst Stone", 297, Rarity.RARE, mage.cards.c.CatalystStone.class));
- cards.add(new SetCardInfo("Caustic Tar", 122, Rarity.UNCOMMON, mage.cards.c.CausticTar.class));
- cards.add(new SetCardInfo("Cease-Fire", 14, Rarity.COMMON, mage.cards.c.CeaseFire.class));
- cards.add(new SetCardInfo("Centaur Garden", 316, Rarity.UNCOMMON, mage.cards.c.CentaurGarden.class));
- cards.add(new SetCardInfo("Cephalid Broker", 71, Rarity.UNCOMMON, mage.cards.c.CephalidBroker.class));
- cards.add(new SetCardInfo("Cephalid Coliseum", 317, Rarity.UNCOMMON, mage.cards.c.CephalidColiseum.class));
- cards.add(new SetCardInfo("Cephalid Looter", 72, Rarity.COMMON, mage.cards.c.CephalidLooter.class));
- cards.add(new SetCardInfo("Cephalid Retainer", 73, Rarity.RARE, mage.cards.c.CephalidRetainer.class));
- cards.add(new SetCardInfo("Cephalid Scout", 74, Rarity.COMMON, mage.cards.c.CephalidScout.class));
- cards.add(new SetCardInfo("Cephalid Shrine", 75, Rarity.RARE, mage.cards.c.CephalidShrine.class));
- cards.add(new SetCardInfo("Chainflinger", 181, Rarity.COMMON, mage.cards.c.Chainflinger.class));
- cards.add(new SetCardInfo("Chamber of Manipulation", 76, Rarity.UNCOMMON, mage.cards.c.ChamberOfManipulation.class));
- cards.add(new SetCardInfo("Chance Encounter", 182, Rarity.RARE, mage.cards.c.ChanceEncounter.class));
- cards.add(new SetCardInfo("Charmed Pendant", 298, Rarity.RARE, mage.cards.c.CharmedPendant.class));
- cards.add(new SetCardInfo("Chatter of the Squirrel", 233, Rarity.COMMON, mage.cards.c.ChatterOfTheSquirrel.class));
- cards.add(new SetCardInfo("Childhood Horror", 123, Rarity.UNCOMMON, mage.cards.c.ChildhoodHorror.class));
- cards.add(new SetCardInfo("Chlorophant", 234, Rarity.RARE, mage.cards.c.Chlorophant.class));
- cards.add(new SetCardInfo("Coffin Purge", 124, Rarity.COMMON, mage.cards.c.CoffinPurge.class));
- cards.add(new SetCardInfo("Cognivore", 77, Rarity.RARE, mage.cards.c.Cognivore.class));
- cards.add(new SetCardInfo("Concentrate", 78, Rarity.UNCOMMON, mage.cards.c.Concentrate.class));
- cards.add(new SetCardInfo("Confessor", 15, Rarity.COMMON, mage.cards.c.Confessor.class));
- cards.add(new SetCardInfo("Crashing Centaur", 235, Rarity.UNCOMMON, mage.cards.c.CrashingCentaur.class));
- cards.add(new SetCardInfo("Crypt Creeper", 125, Rarity.COMMON, mage.cards.c.CryptCreeper.class));
- cards.add(new SetCardInfo("Crystal Quarry", 318, Rarity.RARE, mage.cards.c.CrystalQuarry.class));
- cards.add(new SetCardInfo("Cultural Exchange", 79, Rarity.RARE, mage.cards.c.CulturalExchange.class));
- cards.add(new SetCardInfo("Cursed Monstrosity", 126, Rarity.RARE, mage.cards.c.CursedMonstrosity.class));
- cards.add(new SetCardInfo("Darkwater Catacombs", 319, Rarity.RARE, mage.cards.d.DarkwaterCatacombs.class));
- cards.add(new SetCardInfo("Darkwater Egg", 299, Rarity.UNCOMMON, mage.cards.d.DarkwaterEgg.class));
- cards.add(new SetCardInfo("Decaying Soil", 127, Rarity.RARE, mage.cards.d.DecayingSoil.class));
- cards.add(new SetCardInfo("Decimate", 287, Rarity.RARE, mage.cards.d.Decimate.class));
- cards.add(new SetCardInfo("Decompose", 128, Rarity.UNCOMMON, mage.cards.d.Decompose.class));
- cards.add(new SetCardInfo("Dedicated Martyr", 16, Rarity.COMMON, mage.cards.d.DedicatedMartyr.class));
- cards.add(new SetCardInfo("Deep Reconnaissance", 236, Rarity.UNCOMMON, mage.cards.d.DeepReconnaissance.class));
- cards.add(new SetCardInfo("Delaying Shield", 17, Rarity.RARE, mage.cards.d.DelayingShield.class));
- cards.add(new SetCardInfo("Deluge", 80, Rarity.UNCOMMON, mage.cards.d.Deluge.class));
- cards.add(new SetCardInfo("Dematerialize", 81, Rarity.COMMON, mage.cards.d.Dematerialize.class));
- cards.add(new SetCardInfo("Demolish", 183, Rarity.UNCOMMON, mage.cards.d.Demolish.class));
- cards.add(new SetCardInfo("Demoralize", 184, Rarity.COMMON, mage.cards.d.Demoralize.class));
- cards.add(new SetCardInfo("Deserted Temple", 320, Rarity.RARE, mage.cards.d.DesertedTemple.class));
- cards.add(new SetCardInfo("Devoted Caretaker", 18, Rarity.RARE, mage.cards.d.DevotedCaretaker.class));
- cards.add(new SetCardInfo("Diabolic Tutor", 129, Rarity.UNCOMMON, mage.cards.d.DiabolicTutor.class));
- cards.add(new SetCardInfo("Diligent Farmhand", 237, Rarity.COMMON, mage.cards.d.DiligentFarmhand.class));
- cards.add(new SetCardInfo("Dirty Wererat", 130, Rarity.COMMON, mage.cards.d.DirtyWererat.class));
- cards.add(new SetCardInfo("Divert", 82, Rarity.RARE, mage.cards.d.Divert.class));
- cards.add(new SetCardInfo("Divine Sacrament", 19, Rarity.RARE, mage.cards.d.DivineSacrament.class));
- cards.add(new SetCardInfo("Dogged Hunter", 20, Rarity.RARE, mage.cards.d.DoggedHunter.class));
- cards.add(new SetCardInfo("Dreamwinder", 83, Rarity.COMMON, mage.cards.d.Dreamwinder.class));
- cards.add(new SetCardInfo("Druid Lyrist", 238, Rarity.COMMON, mage.cards.d.DruidLyrist.class));
- cards.add(new SetCardInfo("Druid's Call", 239, Rarity.UNCOMMON, mage.cards.d.DruidsCall.class));
- cards.add(new SetCardInfo("Dusk Imp", 131, Rarity.COMMON, mage.cards.d.DuskImp.class));
- cards.add(new SetCardInfo("Dwarven Grunt", 185, Rarity.COMMON, mage.cards.d.DwarvenGrunt.class));
- cards.add(new SetCardInfo("Dwarven Recruiter", 186, Rarity.UNCOMMON, mage.cards.d.DwarvenRecruiter.class));
- cards.add(new SetCardInfo("Dwarven Shrine", 187, Rarity.RARE, mage.cards.d.DwarvenShrine.class));
- cards.add(new SetCardInfo("Dwarven Strike Force", 188, Rarity.UNCOMMON, mage.cards.d.DwarvenStrikeForce.class));
- cards.add(new SetCardInfo("Earnest Fellowship", 21, Rarity.RARE, mage.cards.e.EarnestFellowship.class));
- cards.add(new SetCardInfo("Earth Rift", 189, Rarity.COMMON, mage.cards.e.EarthRift.class));
- cards.add(new SetCardInfo("Elephant Ambush", 240, Rarity.COMMON, mage.cards.e.ElephantAmbush.class));
- cards.add(new SetCardInfo("Ember Beast", 190, Rarity.COMMON, mage.cards.e.EmberBeast.class));
- cards.add(new SetCardInfo("Embolden", 22, Rarity.COMMON, mage.cards.e.Embolden.class));
- cards.add(new SetCardInfo("Engulfing Flames", 191, Rarity.UNCOMMON, mage.cards.e.EngulfingFlames.class));
- cards.add(new SetCardInfo("Entomb", 132, Rarity.RARE, mage.cards.e.Entomb.class));
- cards.add(new SetCardInfo("Epicenter", 192, Rarity.RARE, mage.cards.e.Epicenter.class));
- cards.add(new SetCardInfo("Escape Artist", 84, Rarity.COMMON, mage.cards.e.EscapeArtist.class));
- cards.add(new SetCardInfo("Execute", 133, Rarity.UNCOMMON, mage.cards.e.Execute.class));
- cards.add(new SetCardInfo("Extract", 85, Rarity.RARE, mage.cards.e.Extract.class));
- cards.add(new SetCardInfo("Face of Fear", 134, Rarity.UNCOMMON, mage.cards.f.FaceOfFear.class));
- cards.add(new SetCardInfo("Famished Ghoul", 135, Rarity.UNCOMMON, mage.cards.f.FamishedGhoul.class));
- cards.add(new SetCardInfo("Fervent Denial", 86, Rarity.UNCOMMON, mage.cards.f.FerventDenial.class));
- cards.add(new SetCardInfo("Filthy Cur", 136, Rarity.COMMON, mage.cards.f.FilthyCur.class));
- cards.add(new SetCardInfo("Firebolt", 193, Rarity.COMMON, mage.cards.f.Firebolt.class));
- cards.add(new SetCardInfo("Flame Burst", 194, Rarity.COMMON, mage.cards.f.FlameBurst.class));
- cards.add(new SetCardInfo("Fledgling Imp", 137, Rarity.COMMON, mage.cards.f.FledglingImp.class));
- cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Frenetic Ogre", 195, Rarity.UNCOMMON, mage.cards.f.FreneticOgre.class));
- cards.add(new SetCardInfo("Frightcrawler", 138, Rarity.COMMON, mage.cards.f.Frightcrawler.class));
- cards.add(new SetCardInfo("Gallantry", 23, Rarity.UNCOMMON, mage.cards.g.Gallantry.class));
- cards.add(new SetCardInfo("Ghastly Demise", 139, Rarity.COMMON, mage.cards.g.GhastlyDemise.class));
- cards.add(new SetCardInfo("Gorilla Titan", 241, Rarity.UNCOMMON, mage.cards.g.GorillaTitan.class));
- cards.add(new SetCardInfo("Graceful Antelope", 24, Rarity.RARE, mage.cards.g.GracefulAntelope.class));
- cards.add(new SetCardInfo("Gravedigger", 140, Rarity.COMMON, mage.cards.g.Gravedigger.class));
- cards.add(new SetCardInfo("Gravestorm", 141, Rarity.RARE, mage.cards.g.Gravestorm.class));
- cards.add(new SetCardInfo("Ground Seal", 242, Rarity.RARE, mage.cards.g.GroundSeal.class));
- cards.add(new SetCardInfo("Halberdier", 196, Rarity.COMMON, mage.cards.h.Halberdier.class));
- cards.add(new SetCardInfo("Hallowed Healer", 25, Rarity.COMMON, mage.cards.h.HallowedHealer.class));
- cards.add(new SetCardInfo("Haunting Echoes", 142, Rarity.RARE, mage.cards.h.HauntingEchoes.class));
- cards.add(new SetCardInfo("Hint of Insanity", 143, Rarity.RARE, mage.cards.h.HintOfInsanity.class));
- cards.add(new SetCardInfo("Holistic Wisdom", 243, Rarity.RARE, mage.cards.h.HolisticWisdom.class));
- cards.add(new SetCardInfo("Howling Gale", 244, Rarity.UNCOMMON, mage.cards.h.HowlingGale.class));
- cards.add(new SetCardInfo("Immobilizing Ink", 87, Rarity.COMMON, mage.cards.i.ImmobilizingInk.class));
- cards.add(new SetCardInfo("Impulsive Maneuvers", 197, Rarity.RARE, mage.cards.i.ImpulsiveManeuvers.class));
- cards.add(new SetCardInfo("Infected Vermin", 144, Rarity.UNCOMMON, mage.cards.i.InfectedVermin.class));
- cards.add(new SetCardInfo("Innocent Blood", 145, Rarity.COMMON, mage.cards.i.InnocentBlood.class));
- cards.add(new SetCardInfo("Iridescent Angel", 288, Rarity.RARE, mage.cards.i.IridescentAngel.class));
- cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ivy Elemental", 245, Rarity.RARE, mage.cards.i.IvyElemental.class));
- cards.add(new SetCardInfo("Junk Golem", 300, Rarity.RARE, mage.cards.j.JunkGolem.class));
- cards.add(new SetCardInfo("Kamahl, Pit Fighter", 198, Rarity.RARE, mage.cards.k.KamahlPitFighter.class));
- cards.add(new SetCardInfo("Kamahl's Desire", 199, Rarity.COMMON, mage.cards.k.KamahlsDesire.class));
- cards.add(new SetCardInfo("Karmic Justice", 26, Rarity.RARE, mage.cards.k.KarmicJustice.class));
- cards.add(new SetCardInfo("Kirtar's Desire", 27, Rarity.COMMON, mage.cards.k.KirtarsDesire.class));
- cards.add(new SetCardInfo("Kirtar's Wrath", 28, Rarity.RARE, mage.cards.k.KirtarsWrath.class));
- cards.add(new SetCardInfo("Krosan Archer", 246, Rarity.COMMON, mage.cards.k.KrosanArcher.class));
- cards.add(new SetCardInfo("Krosan Avenger", 247, Rarity.COMMON, mage.cards.k.KrosanAvenger.class));
- cards.add(new SetCardInfo("Krosan Beast", 248, Rarity.RARE, mage.cards.k.KrosanBeast.class));
- cards.add(new SetCardInfo("Laquatus's Creativity", 88, Rarity.UNCOMMON, mage.cards.l.LaquatussCreativity.class));
- cards.add(new SetCardInfo("Last Rites", 146, Rarity.COMMON, mage.cards.l.LastRites.class));
- cards.add(new SetCardInfo("Lava Blister", 200, Rarity.UNCOMMON, mage.cards.l.LavaBlister.class));
- cards.add(new SetCardInfo("Leaf Dancer", 249, Rarity.COMMON, mage.cards.l.LeafDancer.class));
- cards.add(new SetCardInfo("Lieutenant Kirtar", 29, Rarity.RARE, mage.cards.l.LieutenantKirtar.class));
- cards.add(new SetCardInfo("Life Burst", 30, Rarity.COMMON, mage.cards.l.LifeBurst.class));
- cards.add(new SetCardInfo("Limestone Golem", 301, Rarity.UNCOMMON, mage.cards.l.LimestoneGolem.class));
- cards.add(new SetCardInfo("Liquid Fire", 201, Rarity.UNCOMMON, mage.cards.l.LiquidFire.class));
- cards.add(new SetCardInfo("Lithatog", 289, Rarity.UNCOMMON, mage.cards.l.Lithatog.class));
- cards.add(new SetCardInfo("Luminous Guardian", 31, Rarity.UNCOMMON, mage.cards.l.LuminousGuardian.class));
- cards.add(new SetCardInfo("Mad Dog", 202, Rarity.COMMON, mage.cards.m.MadDog.class));
- cards.add(new SetCardInfo("Magma Vein", 203, Rarity.UNCOMMON, mage.cards.m.MagmaVein.class));
- cards.add(new SetCardInfo("Magnivore", 204, Rarity.RARE, mage.cards.m.Magnivore.class));
- cards.add(new SetCardInfo("Malevolent Awakening", 147, Rarity.UNCOMMON, mage.cards.m.MalevolentAwakening.class));
- cards.add(new SetCardInfo("Master Apothecary", 32, Rarity.RARE, mage.cards.m.MasterApothecary.class));
- cards.add(new SetCardInfo("Metamorphic Wurm", 250, Rarity.UNCOMMON, mage.cards.m.MetamorphicWurm.class));
- cards.add(new SetCardInfo("Millikin", 302, Rarity.UNCOMMON, mage.cards.m.Millikin.class));
- cards.add(new SetCardInfo("Mind Burst", 148, Rarity.COMMON, mage.cards.m.MindBurst.class));
- cards.add(new SetCardInfo("Mindslicer", 149, Rarity.RARE, mage.cards.m.Mindslicer.class));
- cards.add(new SetCardInfo("Mine Layer", 205, Rarity.RARE, mage.cards.m.MineLayer.class));
- cards.add(new SetCardInfo("Minotaur Explorer", 206, Rarity.UNCOMMON, mage.cards.m.MinotaurExplorer.class));
- cards.add(new SetCardInfo("Mirari", 303, Rarity.RARE, mage.cards.m.Mirari.class));
- cards.add(new SetCardInfo("Molten Influence", 207, Rarity.RARE, mage.cards.m.MoltenInfluence.class));
- cards.add(new SetCardInfo("Moment's Peace", 251, Rarity.COMMON, mage.cards.m.MomentsPeace.class));
- cards.add(new SetCardInfo("Morbid Hunger", 150, Rarity.COMMON, mage.cards.m.MorbidHunger.class));
- cards.add(new SetCardInfo("Morgue Theft", 151, Rarity.COMMON, mage.cards.m.MorgueTheft.class));
- cards.add(new SetCardInfo("Mortivore", 152, Rarity.RARE, mage.cards.m.Mortivore.class));
- cards.add(new SetCardInfo("Mossfire Egg", 304, Rarity.UNCOMMON, mage.cards.m.MossfireEgg.class));
- cards.add(new SetCardInfo("Mossfire Valley", 321, Rarity.RARE, mage.cards.m.MossfireValley.class));
- cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mudhole", 208, Rarity.RARE, mage.cards.m.Mudhole.class));
- cards.add(new SetCardInfo("Muscle Burst", 252, Rarity.COMMON, mage.cards.m.MuscleBurst.class));
- cards.add(new SetCardInfo("Mystic Crusader", 33, Rarity.RARE, mage.cards.m.MysticCrusader.class));
- cards.add(new SetCardInfo("Mystic Enforcer", 290, Rarity.RARE, mage.cards.m.MysticEnforcer.class));
- cards.add(new SetCardInfo("Mystic Penitent", 34, Rarity.UNCOMMON, mage.cards.m.MysticPenitent.class));
- cards.add(new SetCardInfo("Mystic Visionary", 35, Rarity.COMMON, mage.cards.m.MysticVisionary.class));
- cards.add(new SetCardInfo("Mystic Zealot", 36, Rarity.COMMON, mage.cards.m.MysticZealot.class));
- cards.add(new SetCardInfo("Nantuko Disciple", 253, Rarity.COMMON, mage.cards.n.NantukoDisciple.class));
- cards.add(new SetCardInfo("Nantuko Elder", 254, Rarity.UNCOMMON, mage.cards.n.NantukoElder.class));
- cards.add(new SetCardInfo("Nantuko Mentor", 255, Rarity.RARE, mage.cards.n.NantukoMentor.class));
- cards.add(new SetCardInfo("Nantuko Shrine", 256, Rarity.RARE, mage.cards.n.NantukoShrine.class));
- cards.add(new SetCardInfo("Need for Speed", 209, Rarity.RARE, mage.cards.n.NeedForSpeed.class));
- cards.add(new SetCardInfo("Nefarious Lich", 153, Rarity.RARE, mage.cards.n.NefariousLich.class));
- cards.add(new SetCardInfo("New Frontiers", 257, Rarity.RARE, mage.cards.n.NewFrontiers.class));
- cards.add(new SetCardInfo("Nimble Mongoose", 258, Rarity.UNCOMMON, mage.cards.n.NimbleMongoose.class));
- cards.add(new SetCardInfo("Nomad Decoy", 37, Rarity.UNCOMMON, mage.cards.n.NomadDecoy.class));
- cards.add(new SetCardInfo("Nomad Stadium", 322, Rarity.UNCOMMON, mage.cards.n.NomadStadium.class));
- cards.add(new SetCardInfo("Nut Collector", 259, Rarity.RARE, mage.cards.n.NutCollector.class));
- cards.add(new SetCardInfo("Obstinate Familiar", 210, Rarity.RARE, mage.cards.o.ObstinateFamiliar.class));
- cards.add(new SetCardInfo("Otarian Juggernaut", 305, Rarity.RARE, mage.cards.o.OtarianJuggernaut.class));
- cards.add(new SetCardInfo("Overeager Apprentice", 154, Rarity.COMMON, mage.cards.o.OvereagerApprentice.class));
- cards.add(new SetCardInfo("Overrun", 260, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
- cards.add(new SetCardInfo("Painbringer", 155, Rarity.UNCOMMON, mage.cards.p.Painbringer.class));
- cards.add(new SetCardInfo("Pardic Firecat", 211, Rarity.COMMON, mage.cards.p.PardicFirecat.class));
- cards.add(new SetCardInfo("Pardic Miner", 212, Rarity.RARE, mage.cards.p.PardicMiner.class));
- cards.add(new SetCardInfo("Pardic Swordsmith", 213, Rarity.COMMON, mage.cards.p.PardicSwordsmith.class));
- cards.add(new SetCardInfo("Patchwork Gnomes", 306, Rarity.UNCOMMON, mage.cards.p.PatchworkGnomes.class));
- cards.add(new SetCardInfo("Patriarch's Desire", 156, Rarity.COMMON, mage.cards.p.PatriarchsDesire.class));
- cards.add(new SetCardInfo("Patrol Hound", 38, Rarity.COMMON, mage.cards.p.PatrolHound.class));
- cards.add(new SetCardInfo("Patron Wizard", 89, Rarity.RARE, mage.cards.p.PatronWizard.class));
- cards.add(new SetCardInfo("Pedantic Learning", 90, Rarity.RARE, mage.cards.p.PedanticLearning.class));
- cards.add(new SetCardInfo("Peek", 91, Rarity.COMMON, mage.cards.p.Peek.class));
- cards.add(new SetCardInfo("Persuasion", 92, Rarity.RARE, mage.cards.p.Persuasion.class));
- cards.add(new SetCardInfo("Petrified Field", 323, Rarity.RARE, mage.cards.p.PetrifiedField.class));
- cards.add(new SetCardInfo("Phantatog", 291, Rarity.UNCOMMON, mage.cards.p.Phantatog.class));
- cards.add(new SetCardInfo("Pianna, Nomad Captain", 39, Rarity.RARE, mage.cards.p.PiannaNomadCaptain.class));
- cards.add(new SetCardInfo("Pilgrim of Justice", 40, Rarity.COMMON, mage.cards.p.PilgrimOfJustice.class));
- cards.add(new SetCardInfo("Pilgrim of Virtue", 41, Rarity.COMMON, mage.cards.p.PilgrimOfVirtue.class));
- cards.add(new SetCardInfo("Piper's Melody", 261, Rarity.UNCOMMON, mage.cards.p.PipersMelody.class));
- cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Phantom Whelp", 93, Rarity.COMMON, mage.cards.p.PhantomWhelp.class));
- cards.add(new SetCardInfo("Predict", 94, Rarity.UNCOMMON, mage.cards.p.Predict.class));
- cards.add(new SetCardInfo("Price of Glory", 214, Rarity.UNCOMMON, mage.cards.p.PriceOfGlory.class));
- cards.add(new SetCardInfo("Primal Frenzy", 262, Rarity.COMMON, mage.cards.p.PrimalFrenzy.class));
- cards.add(new SetCardInfo("Psionic Gift", 95, Rarity.COMMON, mage.cards.p.PsionicGift.class));
- cards.add(new SetCardInfo("Psychatog", 292, Rarity.UNCOMMON, mage.cards.p.Psychatog.class));
- cards.add(new SetCardInfo("Pulsating Illusion", 96, Rarity.UNCOMMON, mage.cards.p.PulsatingIllusion.class));
- cards.add(new SetCardInfo("Puppeteer", 97, Rarity.UNCOMMON, mage.cards.p.Puppeteer.class));
- cards.add(new SetCardInfo("Rabid Elephant", 263, Rarity.COMMON, mage.cards.r.RabidElephant.class));
- cards.add(new SetCardInfo("Ravaged Highlands", 324, Rarity.COMMON, mage.cards.r.RavagedHighlands.class));
- cards.add(new SetCardInfo("Ray of Distortion", 42, Rarity.COMMON, mage.cards.r.RayOfDistortion.class));
- cards.add(new SetCardInfo("Reckless Charge", 215, Rarity.COMMON, mage.cards.r.RecklessCharge.class));
- cards.add(new SetCardInfo("Recoup", 216, Rarity.UNCOMMON, mage.cards.r.Recoup.class));
- cards.add(new SetCardInfo("Refresh", 264, Rarity.COMMON, mage.cards.r.Refresh.class));
- cards.add(new SetCardInfo("Repel", 98, Rarity.COMMON, mage.cards.r.Repel.class));
- cards.add(new SetCardInfo("Repentant Vampire", 157, Rarity.RARE, mage.cards.r.RepentantVampire.class));
- cards.add(new SetCardInfo("Resilient Wanderer", 43, Rarity.UNCOMMON, mage.cards.r.ResilientWanderer.class));
- cards.add(new SetCardInfo("Rites of Initiation", 217, Rarity.COMMON, mage.cards.r.RitesOfInitiation.class));
- cards.add(new SetCardInfo("Rites of Refusal", 99, Rarity.COMMON, mage.cards.r.RitesOfRefusal.class));
- cards.add(new SetCardInfo("Rites of Spring", 265, Rarity.COMMON, mage.cards.r.RitesOfSpring.class));
- cards.add(new SetCardInfo("Roar of the Wurm", 266, Rarity.UNCOMMON, mage.cards.r.RoarOfTheWurm.class));
- cards.add(new SetCardInfo("Rotting Giant", 158, Rarity.UNCOMMON, mage.cards.r.RottingGiant.class));
- cards.add(new SetCardInfo("Sacred Rites", 44, Rarity.COMMON, mage.cards.s.SacredRites.class));
- cards.add(new SetCardInfo("Sadistic Hypnotist", 159, Rarity.UNCOMMON, mage.cards.s.SadisticHypnotist.class));
- cards.add(new SetCardInfo("Sandstone Deadfall", 307, Rarity.UNCOMMON, mage.cards.s.SandstoneDeadfall.class));
- cards.add(new SetCardInfo("Sarcatog", 293, Rarity.UNCOMMON, mage.cards.s.Sarcatog.class));
- cards.add(new SetCardInfo("Savage Firecat", 218, Rarity.RARE, mage.cards.s.SavageFirecat.class));
- cards.add(new SetCardInfo("Scorching Missile", 219, Rarity.COMMON, mage.cards.s.ScorchingMissile.class));
- cards.add(new SetCardInfo("Screams of the Damned", 160, Rarity.UNCOMMON, mage.cards.s.ScreamsOfTheDamned.class));
- cards.add(new SetCardInfo("Scrivener", 100, Rarity.COMMON, mage.cards.s.Scrivener.class));
- cards.add(new SetCardInfo("Seafloor Debris", 325, Rarity.COMMON, mage.cards.s.SeafloorDebris.class));
- cards.add(new SetCardInfo("Second Thoughts", 45, Rarity.COMMON, mage.cards.s.SecondThoughts.class));
- cards.add(new SetCardInfo("Seize the Day", 220, Rarity.RARE, mage.cards.s.SeizeTheDay.class));
- cards.add(new SetCardInfo("Seton, Krosan Protector", 267, Rarity.RARE, mage.cards.s.SetonKrosanProtector.class));
- cards.add(new SetCardInfo("Seton's Desire", 268, Rarity.UNCOMMON, mage.cards.s.SetonsDesire.class));
- cards.add(new SetCardInfo("Shadowblood Egg", 308, Rarity.UNCOMMON, mage.cards.s.ShadowbloodEgg.class));
- cards.add(new SetCardInfo("Shadowblood Ridge", 326, Rarity.RARE, mage.cards.s.ShadowbloodRidge.class));
- cards.add(new SetCardInfo("Shadowmage Infiltrator", 294, Rarity.RARE, mage.cards.s.ShadowmageInfiltrator.class));
- cards.add(new SetCardInfo("Shelter", 46, Rarity.COMMON, mage.cards.s.Shelter.class));
- cards.add(new SetCardInfo("Shifty Doppelganger", 101, Rarity.RARE, mage.cards.s.ShiftyDoppelganger.class));
- cards.add(new SetCardInfo("Shower of Coals", 221, Rarity.UNCOMMON, mage.cards.s.ShowerOfCoals.class));
- cards.add(new SetCardInfo("Simplify", 269, Rarity.COMMON, mage.cards.s.Simplify.class));
- cards.add(new SetCardInfo("Skeletal Scrying", 161, Rarity.UNCOMMON, mage.cards.s.SkeletalScrying.class));
- cards.add(new SetCardInfo("Skull Fracture", 162, Rarity.UNCOMMON, mage.cards.s.SkullFracture.class));
- cards.add(new SetCardInfo("Skycloud Egg", 309, Rarity.UNCOMMON, mage.cards.s.SkycloudEgg.class));
- cards.add(new SetCardInfo("Skycloud Expanse", 327, Rarity.RARE, mage.cards.s.SkycloudExpanse.class));
- cards.add(new SetCardInfo("Skyshooter", 270, Rarity.UNCOMMON, mage.cards.s.Skyshooter.class));
- cards.add(new SetCardInfo("Soulcatcher", 47, Rarity.UNCOMMON, mage.cards.s.Soulcatcher.class));
- cards.add(new SetCardInfo("Spark Mage", 222, Rarity.UNCOMMON, mage.cards.s.SparkMage.class));
- cards.add(new SetCardInfo("Spellbane Centaur", 271, Rarity.RARE, mage.cards.s.SpellbaneCentaur.class));
- cards.add(new SetCardInfo("Sphere of Duty", 48, Rarity.UNCOMMON, mage.cards.s.SphereOfDuty.class));
- cards.add(new SetCardInfo("Sphere of Grace", 49, Rarity.UNCOMMON, mage.cards.s.SphereOfGrace.class));
- cards.add(new SetCardInfo("Sphere of Law", 50, Rarity.UNCOMMON, mage.cards.s.SphereOfLaw.class));
- cards.add(new SetCardInfo("Sphere of Reason", 51, Rarity.UNCOMMON, mage.cards.s.SphereOfReason.class));
- cards.add(new SetCardInfo("Sphere of Truth", 52, Rarity.UNCOMMON, mage.cards.s.SphereOfTruth.class));
- cards.add(new SetCardInfo("Spiritualize", 53, Rarity.UNCOMMON, mage.cards.s.Spiritualize.class));
- cards.add(new SetCardInfo("Springing Tiger", 272, Rarity.COMMON, mage.cards.s.SpringingTiger.class));
- cards.add(new SetCardInfo("Squirrel Mob", 273, Rarity.RARE, mage.cards.s.SquirrelMob.class));
- cards.add(new SetCardInfo("Squirrel Nest", 274, Rarity.UNCOMMON, mage.cards.s.SquirrelNest.class));
- cards.add(new SetCardInfo("Stalking Bloodsucker", 163, Rarity.RARE, mage.cards.s.StalkingBloodsucker.class));
- cards.add(new SetCardInfo("Standstill", 102, Rarity.UNCOMMON, mage.cards.s.Standstill.class));
- cards.add(new SetCardInfo("Steam Vines", 223, Rarity.UNCOMMON, mage.cards.s.SteamVines.class));
- cards.add(new SetCardInfo("Steamclaw", 310, Rarity.UNCOMMON, mage.cards.s.Steamclaw.class));
- cards.add(new SetCardInfo("Still Life", 275, Rarity.UNCOMMON, mage.cards.s.StillLife.class));
- cards.add(new SetCardInfo("Stone-Tongue Basilisk", 276, Rarity.RARE, mage.cards.s.StoneTongueBasilisk.class));
- cards.add(new SetCardInfo("Sungrass Egg", 311, Rarity.UNCOMMON, mage.cards.s.SungrassEgg.class));
- cards.add(new SetCardInfo("Sungrass Prairie", 328, Rarity.RARE, mage.cards.s.SungrassPrairie.class));
- cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Sylvan Might", 277, Rarity.UNCOMMON, mage.cards.s.SylvanMight.class));
- cards.add(new SetCardInfo("Syncopate", 103, Rarity.COMMON, mage.cards.s.Syncopate.class));
- cards.add(new SetCardInfo("Tainted Pact", 164, Rarity.RARE, mage.cards.t.TaintedPact.class));
- cards.add(new SetCardInfo("Tarnished Citadel", 329, Rarity.RARE, mage.cards.t.TarnishedCitadel.class));
- cards.add(new SetCardInfo("Tattoo Ward", 54, Rarity.UNCOMMON, mage.cards.t.TattooWard.class));
- cards.add(new SetCardInfo("Terravore", 278, Rarity.RARE, mage.cards.t.Terravore.class));
- cards.add(new SetCardInfo("Testament of Faith", 55, Rarity.UNCOMMON, mage.cards.t.TestamentOfFaith.class));
- cards.add(new SetCardInfo("Thaumatog", 295, Rarity.UNCOMMON, mage.cards.t.Thaumatog.class));
- cards.add(new SetCardInfo("Thermal Blast", 224, Rarity.COMMON, mage.cards.t.ThermalBlast.class));
- cards.add(new SetCardInfo("Think Tank", 104, Rarity.UNCOMMON, mage.cards.t.ThinkTank.class));
- cards.add(new SetCardInfo("Thought Devourer", 105, Rarity.RARE, mage.cards.t.ThoughtDevourer.class));
- cards.add(new SetCardInfo("Thought Eater", 106, Rarity.UNCOMMON, mage.cards.t.ThoughtEater.class));
- cards.add(new SetCardInfo("Thought Nibbler", 107, Rarity.COMMON, mage.cards.t.ThoughtNibbler.class));
- cards.add(new SetCardInfo("Timberland Ruins", 330, Rarity.COMMON, mage.cards.t.TimberlandRuins.class));
- cards.add(new SetCardInfo("Time Stretch", 108, Rarity.RARE, mage.cards.t.TimeStretch.class));
- cards.add(new SetCardInfo("Tireless Tribe", 56, Rarity.COMMON, mage.cards.t.TirelessTribe.class));
- cards.add(new SetCardInfo("Tombfire", 165, Rarity.RARE, mage.cards.t.Tombfire.class));
- cards.add(new SetCardInfo("Touch of Invisibility", 109, Rarity.COMMON, mage.cards.t.TouchOfInvisibility.class));
- cards.add(new SetCardInfo("Traumatize", 110, Rarity.RARE, mage.cards.t.Traumatize.class));
- cards.add(new SetCardInfo("Traveling Plague", 166, Rarity.RARE, mage.cards.t.TravelingPlague.class));
- cards.add(new SetCardInfo("Treetop Sentinel", 111, Rarity.UNCOMMON, mage.cards.t.TreetopSentinel.class));
- cards.add(new SetCardInfo("Tremble", 225, Rarity.COMMON, mage.cards.t.Tremble.class));
- cards.add(new SetCardInfo("Twigwalker", 279, Rarity.UNCOMMON, mage.cards.t.Twigwalker.class));
- cards.add(new SetCardInfo("Unifying Theory", 112, Rarity.RARE, mage.cards.u.UnifyingTheory.class));
- cards.add(new SetCardInfo("Upheaval", 113, Rarity.RARE, mage.cards.u.Upheaval.class));
- cards.add(new SetCardInfo("Vampiric Dragon", 296, Rarity.RARE, mage.cards.v.VampiricDragon.class));
- cards.add(new SetCardInfo("Verdant Succession", 280, Rarity.RARE, mage.cards.v.VerdantSuccession.class));
- cards.add(new SetCardInfo("Vivify", 281, Rarity.UNCOMMON, mage.cards.v.Vivify.class));
- cards.add(new SetCardInfo("Volcanic Spray", 226, Rarity.UNCOMMON, mage.cards.v.VolcanicSpray.class));
- cards.add(new SetCardInfo("Volley of Boulders", 227, Rarity.RARE, mage.cards.v.VolleyOfBoulders.class));
- cards.add(new SetCardInfo("Wayward Angel", 57, Rarity.RARE, mage.cards.w.WaywardAngel.class));
- cards.add(new SetCardInfo("Werebear", 282, Rarity.COMMON, mage.cards.w.Werebear.class));
- cards.add(new SetCardInfo("Whipkeeper", 228, Rarity.UNCOMMON, mage.cards.w.Whipkeeper.class));
- cards.add(new SetCardInfo("Whispering Shade", 167, Rarity.COMMON, mage.cards.w.WhisperingShade.class));
- cards.add(new SetCardInfo("Wild Mongrel", 283, Rarity.COMMON, mage.cards.w.WildMongrel.class));
- cards.add(new SetCardInfo("Woodland Druid", 284, Rarity.COMMON, mage.cards.w.WoodlandDruid.class));
- cards.add(new SetCardInfo("Words of Wisdom", 114, Rarity.COMMON, mage.cards.w.WordsOfWisdom.class));
- cards.add(new SetCardInfo("Zombie Assassin", 168, Rarity.COMMON, mage.cards.z.ZombieAssassin.class));
- cards.add(new SetCardInfo("Zombie Cannibal", 169, Rarity.COMMON, mage.cards.z.ZombieCannibal.class));
- cards.add(new SetCardInfo("Zombie Infestation", 170, Rarity.UNCOMMON, mage.cards.z.ZombieInfestation.class));
- cards.add(new SetCardInfo("Zombify", 171, Rarity.UNCOMMON, mage.cards.z.Zombify.class));
- cards.add(new SetCardInfo("Zoologist", 285, Rarity.RARE, mage.cards.z.Zoologist.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Odyssey extends ExpansionSet {
+
+ private static final Odyssey instance = new Odyssey();
+
+ public static Odyssey getInstance() {
+ return instance;
+ }
+
+ private Odyssey() {
+ super("Odyssey", "ODY", ExpansionSet.buildDate(2001, 9, 22), SetType.EXPANSION);
+ this.blockName = "Odyssey";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Abandoned Outpost", 312, Rarity.COMMON, mage.cards.a.AbandonedOutpost.class));
+ cards.add(new SetCardInfo("Aboshan, Cephalid Emperor", 58, Rarity.RARE, mage.cards.a.AboshanCephalidEmperor.class));
+ cards.add(new SetCardInfo("Aboshan's Desire", 59, Rarity.COMMON, mage.cards.a.AboshansDesire.class));
+ cards.add(new SetCardInfo("Acceptable Losses", 172, Rarity.COMMON, mage.cards.a.AcceptableLosses.class));
+ cards.add(new SetCardInfo("Aegis of Honor", 1, Rarity.RARE, mage.cards.a.AegisOfHonor.class));
+ cards.add(new SetCardInfo("Aether Burst", 60, Rarity.COMMON, mage.cards.a.AetherBurst.class));
+ cards.add(new SetCardInfo("Afflict", 115, Rarity.COMMON, mage.cards.a.Afflict.class));
+ cards.add(new SetCardInfo("Amugaba", 61, Rarity.RARE, mage.cards.a.Amugaba.class));
+ cards.add(new SetCardInfo("Anarchist", 173, Rarity.COMMON, mage.cards.a.Anarchist.class));
+ cards.add(new SetCardInfo("Ancestral Tribute", 2, Rarity.RARE, mage.cards.a.AncestralTribute.class));
+ cards.add(new SetCardInfo("Angelic Wall", 3, Rarity.COMMON, mage.cards.a.AngelicWall.class));
+ cards.add(new SetCardInfo("Animal Boneyard", 4, Rarity.UNCOMMON, mage.cards.a.AnimalBoneyard.class));
+ cards.add(new SetCardInfo("Ashen Firebeast", 174, Rarity.RARE, mage.cards.a.AshenFirebeast.class));
+ cards.add(new SetCardInfo("Atogatog", 286, Rarity.RARE, mage.cards.a.Atogatog.class));
+ cards.add(new SetCardInfo("Aura Graft", 62, Rarity.UNCOMMON, mage.cards.a.AuraGraft.class));
+ cards.add(new SetCardInfo("Auramancer", 5, Rarity.COMMON, mage.cards.a.Auramancer.class));
+ cards.add(new SetCardInfo("Aven Archer", 6, Rarity.UNCOMMON, mage.cards.a.AvenArcher.class));
+ cards.add(new SetCardInfo("Aven Cloudchaser", 7, Rarity.COMMON, mage.cards.a.AvenCloudchaser.class));
+ cards.add(new SetCardInfo("Aven Fisher", 63, Rarity.COMMON, mage.cards.a.AvenFisher.class));
+ cards.add(new SetCardInfo("Aven Flock", 8, Rarity.COMMON, mage.cards.a.AvenFlock.class));
+ cards.add(new SetCardInfo("Aven Shrine", 9, Rarity.RARE, mage.cards.a.AvenShrine.class));
+ cards.add(new SetCardInfo("Aven Smokeweaver", 64, Rarity.UNCOMMON, mage.cards.a.AvenSmokeweaver.class));
+ cards.add(new SetCardInfo("Aven Windreader", 65, Rarity.COMMON, mage.cards.a.AvenWindreader.class));
+ cards.add(new SetCardInfo("Balancing Act", 10, Rarity.RARE, mage.cards.b.BalancingAct.class));
+ cards.add(new SetCardInfo("Balshan Beguiler", 66, Rarity.UNCOMMON, mage.cards.b.BalshanBeguiler.class));
+ cards.add(new SetCardInfo("Balshan Griffin", 67, Rarity.UNCOMMON, mage.cards.b.BalshanGriffin.class));
+ cards.add(new SetCardInfo("Bamboozle", 68, Rarity.UNCOMMON, mage.cards.b.Bamboozle.class));
+ cards.add(new SetCardInfo("Barbarian Lunatic", 175, Rarity.COMMON, mage.cards.b.BarbarianLunatic.class));
+ cards.add(new SetCardInfo("Barbarian Ring", 313, Rarity.UNCOMMON, mage.cards.b.BarbarianRing.class));
+ cards.add(new SetCardInfo("Bash to Bits", 176, Rarity.UNCOMMON, mage.cards.b.BashToBits.class));
+ cards.add(new SetCardInfo("Battle of Wits", 69, Rarity.RARE, mage.cards.b.BattleOfWits.class));
+ cards.add(new SetCardInfo("Battle Strain", 177, Rarity.UNCOMMON, mage.cards.b.BattleStrain.class));
+ cards.add(new SetCardInfo("Bearscape", 229, Rarity.RARE, mage.cards.b.Bearscape.class));
+ cards.add(new SetCardInfo("Beast Attack", 230, Rarity.UNCOMMON, mage.cards.b.BeastAttack.class));
+ cards.add(new SetCardInfo("Beloved Chaplain", 11, Rarity.UNCOMMON, mage.cards.b.BelovedChaplain.class));
+ cards.add(new SetCardInfo("Blazing Salvo", 178, Rarity.COMMON, mage.cards.b.BlazingSalvo.class));
+ cards.add(new SetCardInfo("Blessed Orator", 12, Rarity.UNCOMMON, mage.cards.b.BlessedOrator.class));
+ cards.add(new SetCardInfo("Bloodcurdler", 116, Rarity.RARE, mage.cards.b.Bloodcurdler.class));
+ cards.add(new SetCardInfo("Bog Wreckage", 314, Rarity.COMMON, mage.cards.b.BogWreckage.class));
+ cards.add(new SetCardInfo("Bomb Squad", 179, Rarity.RARE, mage.cards.b.BombSquad.class));
+ cards.add(new SetCardInfo("Braids, Cabal Minion", 117, Rarity.RARE, mage.cards.b.BraidsCabalMinion.class));
+ cards.add(new SetCardInfo("Buried Alive", 118, Rarity.UNCOMMON, mage.cards.b.BuriedAlive.class));
+ cards.add(new SetCardInfo("Burning Sands", 180, Rarity.RARE, mage.cards.b.BurningSands.class));
+ cards.add(new SetCardInfo("Cabal Inquisitor", 119, Rarity.COMMON, mage.cards.c.CabalInquisitor.class));
+ cards.add(new SetCardInfo("Cabal Patriarch", 120, Rarity.RARE, mage.cards.c.CabalPatriarch.class));
+ cards.add(new SetCardInfo("Cabal Pit", 315, Rarity.UNCOMMON, mage.cards.c.CabalPit.class));
+ cards.add(new SetCardInfo("Cabal Shrine", 121, Rarity.RARE, mage.cards.c.CabalShrine.class));
+ cards.add(new SetCardInfo("Call of the Herd", 231, Rarity.RARE, mage.cards.c.CallOfTheHerd.class));
+ cards.add(new SetCardInfo("Cantivore", 13, Rarity.RARE, mage.cards.c.Cantivore.class));
+ cards.add(new SetCardInfo("Careful Study", 70, Rarity.COMMON, mage.cards.c.CarefulStudy.class));
+ cards.add(new SetCardInfo("Cartographer", 232, Rarity.COMMON, mage.cards.c.Cartographer.class));
+ cards.add(new SetCardInfo("Catalyst Stone", 297, Rarity.RARE, mage.cards.c.CatalystStone.class));
+ cards.add(new SetCardInfo("Caustic Tar", 122, Rarity.UNCOMMON, mage.cards.c.CausticTar.class));
+ cards.add(new SetCardInfo("Cease-Fire", 14, Rarity.COMMON, mage.cards.c.CeaseFire.class));
+ cards.add(new SetCardInfo("Centaur Garden", 316, Rarity.UNCOMMON, mage.cards.c.CentaurGarden.class));
+ cards.add(new SetCardInfo("Cephalid Broker", 71, Rarity.UNCOMMON, mage.cards.c.CephalidBroker.class));
+ cards.add(new SetCardInfo("Cephalid Coliseum", 317, Rarity.UNCOMMON, mage.cards.c.CephalidColiseum.class));
+ cards.add(new SetCardInfo("Cephalid Looter", 72, Rarity.COMMON, mage.cards.c.CephalidLooter.class));
+ cards.add(new SetCardInfo("Cephalid Retainer", 73, Rarity.RARE, mage.cards.c.CephalidRetainer.class));
+ cards.add(new SetCardInfo("Cephalid Scout", 74, Rarity.COMMON, mage.cards.c.CephalidScout.class));
+ cards.add(new SetCardInfo("Cephalid Shrine", 75, Rarity.RARE, mage.cards.c.CephalidShrine.class));
+ cards.add(new SetCardInfo("Chainflinger", 181, Rarity.COMMON, mage.cards.c.Chainflinger.class));
+ cards.add(new SetCardInfo("Chamber of Manipulation", 76, Rarity.UNCOMMON, mage.cards.c.ChamberOfManipulation.class));
+ cards.add(new SetCardInfo("Chance Encounter", 182, Rarity.RARE, mage.cards.c.ChanceEncounter.class));
+ cards.add(new SetCardInfo("Charmed Pendant", 298, Rarity.RARE, mage.cards.c.CharmedPendant.class));
+ cards.add(new SetCardInfo("Chatter of the Squirrel", 233, Rarity.COMMON, mage.cards.c.ChatterOfTheSquirrel.class));
+ cards.add(new SetCardInfo("Childhood Horror", 123, Rarity.UNCOMMON, mage.cards.c.ChildhoodHorror.class));
+ cards.add(new SetCardInfo("Chlorophant", 234, Rarity.RARE, mage.cards.c.Chlorophant.class));
+ cards.add(new SetCardInfo("Coffin Purge", 124, Rarity.COMMON, mage.cards.c.CoffinPurge.class));
+ cards.add(new SetCardInfo("Cognivore", 77, Rarity.RARE, mage.cards.c.Cognivore.class));
+ cards.add(new SetCardInfo("Concentrate", 78, Rarity.UNCOMMON, mage.cards.c.Concentrate.class));
+ cards.add(new SetCardInfo("Confessor", 15, Rarity.COMMON, mage.cards.c.Confessor.class));
+ cards.add(new SetCardInfo("Crashing Centaur", 235, Rarity.UNCOMMON, mage.cards.c.CrashingCentaur.class));
+ cards.add(new SetCardInfo("Crypt Creeper", 125, Rarity.COMMON, mage.cards.c.CryptCreeper.class));
+ cards.add(new SetCardInfo("Crystal Quarry", 318, Rarity.RARE, mage.cards.c.CrystalQuarry.class));
+ cards.add(new SetCardInfo("Cultural Exchange", 79, Rarity.RARE, mage.cards.c.CulturalExchange.class));
+ cards.add(new SetCardInfo("Cursed Monstrosity", 126, Rarity.RARE, mage.cards.c.CursedMonstrosity.class));
+ cards.add(new SetCardInfo("Darkwater Catacombs", 319, Rarity.RARE, mage.cards.d.DarkwaterCatacombs.class));
+ cards.add(new SetCardInfo("Darkwater Egg", 299, Rarity.UNCOMMON, mage.cards.d.DarkwaterEgg.class));
+ cards.add(new SetCardInfo("Decaying Soil", 127, Rarity.RARE, mage.cards.d.DecayingSoil.class));
+ cards.add(new SetCardInfo("Decimate", 287, Rarity.RARE, mage.cards.d.Decimate.class));
+ cards.add(new SetCardInfo("Decompose", 128, Rarity.UNCOMMON, mage.cards.d.Decompose.class));
+ cards.add(new SetCardInfo("Dedicated Martyr", 16, Rarity.COMMON, mage.cards.d.DedicatedMartyr.class));
+ cards.add(new SetCardInfo("Deep Reconnaissance", 236, Rarity.UNCOMMON, mage.cards.d.DeepReconnaissance.class));
+ cards.add(new SetCardInfo("Delaying Shield", 17, Rarity.RARE, mage.cards.d.DelayingShield.class));
+ cards.add(new SetCardInfo("Deluge", 80, Rarity.UNCOMMON, mage.cards.d.Deluge.class));
+ cards.add(new SetCardInfo("Dematerialize", 81, Rarity.COMMON, mage.cards.d.Dematerialize.class));
+ cards.add(new SetCardInfo("Demolish", 183, Rarity.UNCOMMON, mage.cards.d.Demolish.class));
+ cards.add(new SetCardInfo("Demoralize", 184, Rarity.COMMON, mage.cards.d.Demoralize.class));
+ cards.add(new SetCardInfo("Deserted Temple", 320, Rarity.RARE, mage.cards.d.DesertedTemple.class));
+ cards.add(new SetCardInfo("Devoted Caretaker", 18, Rarity.RARE, mage.cards.d.DevotedCaretaker.class));
+ cards.add(new SetCardInfo("Diabolic Tutor", 129, Rarity.UNCOMMON, mage.cards.d.DiabolicTutor.class));
+ cards.add(new SetCardInfo("Diligent Farmhand", 237, Rarity.COMMON, mage.cards.d.DiligentFarmhand.class));
+ cards.add(new SetCardInfo("Dirty Wererat", 130, Rarity.COMMON, mage.cards.d.DirtyWererat.class));
+ cards.add(new SetCardInfo("Divert", 82, Rarity.RARE, mage.cards.d.Divert.class));
+ cards.add(new SetCardInfo("Divine Sacrament", 19, Rarity.RARE, mage.cards.d.DivineSacrament.class));
+ cards.add(new SetCardInfo("Dogged Hunter", 20, Rarity.RARE, mage.cards.d.DoggedHunter.class));
+ cards.add(new SetCardInfo("Dreamwinder", 83, Rarity.COMMON, mage.cards.d.Dreamwinder.class));
+ cards.add(new SetCardInfo("Druid Lyrist", 238, Rarity.COMMON, mage.cards.d.DruidLyrist.class));
+ cards.add(new SetCardInfo("Druid's Call", 239, Rarity.UNCOMMON, mage.cards.d.DruidsCall.class));
+ cards.add(new SetCardInfo("Dusk Imp", 131, Rarity.COMMON, mage.cards.d.DuskImp.class));
+ cards.add(new SetCardInfo("Dwarven Grunt", 185, Rarity.COMMON, mage.cards.d.DwarvenGrunt.class));
+ cards.add(new SetCardInfo("Dwarven Recruiter", 186, Rarity.UNCOMMON, mage.cards.d.DwarvenRecruiter.class));
+ cards.add(new SetCardInfo("Dwarven Shrine", 187, Rarity.RARE, mage.cards.d.DwarvenShrine.class));
+ cards.add(new SetCardInfo("Dwarven Strike Force", 188, Rarity.UNCOMMON, mage.cards.d.DwarvenStrikeForce.class));
+ cards.add(new SetCardInfo("Earnest Fellowship", 21, Rarity.RARE, mage.cards.e.EarnestFellowship.class));
+ cards.add(new SetCardInfo("Earth Rift", 189, Rarity.COMMON, mage.cards.e.EarthRift.class));
+ cards.add(new SetCardInfo("Elephant Ambush", 240, Rarity.COMMON, mage.cards.e.ElephantAmbush.class));
+ cards.add(new SetCardInfo("Ember Beast", 190, Rarity.COMMON, mage.cards.e.EmberBeast.class));
+ cards.add(new SetCardInfo("Embolden", 22, Rarity.COMMON, mage.cards.e.Embolden.class));
+ cards.add(new SetCardInfo("Engulfing Flames", 191, Rarity.UNCOMMON, mage.cards.e.EngulfingFlames.class));
+ cards.add(new SetCardInfo("Entomb", 132, Rarity.RARE, mage.cards.e.Entomb.class));
+ cards.add(new SetCardInfo("Epicenter", 192, Rarity.RARE, mage.cards.e.Epicenter.class));
+ cards.add(new SetCardInfo("Escape Artist", 84, Rarity.COMMON, mage.cards.e.EscapeArtist.class));
+ cards.add(new SetCardInfo("Execute", 133, Rarity.UNCOMMON, mage.cards.e.Execute.class));
+ cards.add(new SetCardInfo("Extract", 85, Rarity.RARE, mage.cards.e.Extract.class));
+ cards.add(new SetCardInfo("Face of Fear", 134, Rarity.UNCOMMON, mage.cards.f.FaceOfFear.class));
+ cards.add(new SetCardInfo("Famished Ghoul", 135, Rarity.UNCOMMON, mage.cards.f.FamishedGhoul.class));
+ cards.add(new SetCardInfo("Fervent Denial", 86, Rarity.UNCOMMON, mage.cards.f.FerventDenial.class));
+ cards.add(new SetCardInfo("Filthy Cur", 136, Rarity.COMMON, mage.cards.f.FilthyCur.class));
+ cards.add(new SetCardInfo("Firebolt", 193, Rarity.COMMON, mage.cards.f.Firebolt.class));
+ cards.add(new SetCardInfo("Flame Burst", 194, Rarity.COMMON, mage.cards.f.FlameBurst.class));
+ cards.add(new SetCardInfo("Fledgling Imp", 137, Rarity.COMMON, mage.cards.f.FledglingImp.class));
+ cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Frenetic Ogre", 195, Rarity.UNCOMMON, mage.cards.f.FreneticOgre.class));
+ cards.add(new SetCardInfo("Frightcrawler", 138, Rarity.COMMON, mage.cards.f.Frightcrawler.class));
+ cards.add(new SetCardInfo("Gallantry", 23, Rarity.UNCOMMON, mage.cards.g.Gallantry.class));
+ cards.add(new SetCardInfo("Ghastly Demise", 139, Rarity.COMMON, mage.cards.g.GhastlyDemise.class));
+ cards.add(new SetCardInfo("Gorilla Titan", 241, Rarity.UNCOMMON, mage.cards.g.GorillaTitan.class));
+ cards.add(new SetCardInfo("Graceful Antelope", 24, Rarity.RARE, mage.cards.g.GracefulAntelope.class));
+ cards.add(new SetCardInfo("Gravedigger", 140, Rarity.COMMON, mage.cards.g.Gravedigger.class));
+ cards.add(new SetCardInfo("Gravestorm", 141, Rarity.RARE, mage.cards.g.Gravestorm.class));
+ cards.add(new SetCardInfo("Ground Seal", 242, Rarity.RARE, mage.cards.g.GroundSeal.class));
+ cards.add(new SetCardInfo("Halberdier", 196, Rarity.COMMON, mage.cards.h.Halberdier.class));
+ cards.add(new SetCardInfo("Hallowed Healer", 25, Rarity.COMMON, mage.cards.h.HallowedHealer.class));
+ cards.add(new SetCardInfo("Haunting Echoes", 142, Rarity.RARE, mage.cards.h.HauntingEchoes.class));
+ cards.add(new SetCardInfo("Hint of Insanity", 143, Rarity.RARE, mage.cards.h.HintOfInsanity.class));
+ cards.add(new SetCardInfo("Holistic Wisdom", 243, Rarity.RARE, mage.cards.h.HolisticWisdom.class));
+ cards.add(new SetCardInfo("Howling Gale", 244, Rarity.UNCOMMON, mage.cards.h.HowlingGale.class));
+ cards.add(new SetCardInfo("Immobilizing Ink", 87, Rarity.COMMON, mage.cards.i.ImmobilizingInk.class));
+ cards.add(new SetCardInfo("Impulsive Maneuvers", 197, Rarity.RARE, mage.cards.i.ImpulsiveManeuvers.class));
+ cards.add(new SetCardInfo("Infected Vermin", 144, Rarity.UNCOMMON, mage.cards.i.InfectedVermin.class));
+ cards.add(new SetCardInfo("Innocent Blood", 145, Rarity.COMMON, mage.cards.i.InnocentBlood.class));
+ cards.add(new SetCardInfo("Iridescent Angel", 288, Rarity.RARE, mage.cards.i.IridescentAngel.class));
+ cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ivy Elemental", 245, Rarity.RARE, mage.cards.i.IvyElemental.class));
+ cards.add(new SetCardInfo("Junk Golem", 300, Rarity.RARE, mage.cards.j.JunkGolem.class));
+ cards.add(new SetCardInfo("Kamahl, Pit Fighter", 198, Rarity.RARE, mage.cards.k.KamahlPitFighter.class));
+ cards.add(new SetCardInfo("Kamahl's Desire", 199, Rarity.COMMON, mage.cards.k.KamahlsDesire.class));
+ cards.add(new SetCardInfo("Karmic Justice", 26, Rarity.RARE, mage.cards.k.KarmicJustice.class));
+ cards.add(new SetCardInfo("Kirtar's Desire", 27, Rarity.COMMON, mage.cards.k.KirtarsDesire.class));
+ cards.add(new SetCardInfo("Kirtar's Wrath", 28, Rarity.RARE, mage.cards.k.KirtarsWrath.class));
+ cards.add(new SetCardInfo("Krosan Archer", 246, Rarity.COMMON, mage.cards.k.KrosanArcher.class));
+ cards.add(new SetCardInfo("Krosan Avenger", 247, Rarity.COMMON, mage.cards.k.KrosanAvenger.class));
+ cards.add(new SetCardInfo("Krosan Beast", 248, Rarity.RARE, mage.cards.k.KrosanBeast.class));
+ cards.add(new SetCardInfo("Laquatus's Creativity", 88, Rarity.UNCOMMON, mage.cards.l.LaquatussCreativity.class));
+ cards.add(new SetCardInfo("Last Rites", 146, Rarity.COMMON, mage.cards.l.LastRites.class));
+ cards.add(new SetCardInfo("Lava Blister", 200, Rarity.UNCOMMON, mage.cards.l.LavaBlister.class));
+ cards.add(new SetCardInfo("Leaf Dancer", 249, Rarity.COMMON, mage.cards.l.LeafDancer.class));
+ cards.add(new SetCardInfo("Lieutenant Kirtar", 29, Rarity.RARE, mage.cards.l.LieutenantKirtar.class));
+ cards.add(new SetCardInfo("Life Burst", 30, Rarity.COMMON, mage.cards.l.LifeBurst.class));
+ cards.add(new SetCardInfo("Limestone Golem", 301, Rarity.UNCOMMON, mage.cards.l.LimestoneGolem.class));
+ cards.add(new SetCardInfo("Liquid Fire", 201, Rarity.UNCOMMON, mage.cards.l.LiquidFire.class));
+ cards.add(new SetCardInfo("Lithatog", 289, Rarity.UNCOMMON, mage.cards.l.Lithatog.class));
+ cards.add(new SetCardInfo("Luminous Guardian", 31, Rarity.UNCOMMON, mage.cards.l.LuminousGuardian.class));
+ cards.add(new SetCardInfo("Mad Dog", 202, Rarity.COMMON, mage.cards.m.MadDog.class));
+ cards.add(new SetCardInfo("Magma Vein", 203, Rarity.UNCOMMON, mage.cards.m.MagmaVein.class));
+ cards.add(new SetCardInfo("Magnivore", 204, Rarity.RARE, mage.cards.m.Magnivore.class));
+ cards.add(new SetCardInfo("Malevolent Awakening", 147, Rarity.UNCOMMON, mage.cards.m.MalevolentAwakening.class));
+ cards.add(new SetCardInfo("Master Apothecary", 32, Rarity.RARE, mage.cards.m.MasterApothecary.class));
+ cards.add(new SetCardInfo("Metamorphic Wurm", 250, Rarity.UNCOMMON, mage.cards.m.MetamorphicWurm.class));
+ cards.add(new SetCardInfo("Millikin", 302, Rarity.UNCOMMON, mage.cards.m.Millikin.class));
+ cards.add(new SetCardInfo("Mind Burst", 148, Rarity.COMMON, mage.cards.m.MindBurst.class));
+ cards.add(new SetCardInfo("Mindslicer", 149, Rarity.RARE, mage.cards.m.Mindslicer.class));
+ cards.add(new SetCardInfo("Mine Layer", 205, Rarity.RARE, mage.cards.m.MineLayer.class));
+ cards.add(new SetCardInfo("Minotaur Explorer", 206, Rarity.UNCOMMON, mage.cards.m.MinotaurExplorer.class));
+ cards.add(new SetCardInfo("Mirari", 303, Rarity.RARE, mage.cards.m.Mirari.class));
+ cards.add(new SetCardInfo("Molten Influence", 207, Rarity.RARE, mage.cards.m.MoltenInfluence.class));
+ cards.add(new SetCardInfo("Moment's Peace", 251, Rarity.COMMON, mage.cards.m.MomentsPeace.class));
+ cards.add(new SetCardInfo("Morbid Hunger", 150, Rarity.COMMON, mage.cards.m.MorbidHunger.class));
+ cards.add(new SetCardInfo("Morgue Theft", 151, Rarity.COMMON, mage.cards.m.MorgueTheft.class));
+ cards.add(new SetCardInfo("Mortivore", 152, Rarity.RARE, mage.cards.m.Mortivore.class));
+ cards.add(new SetCardInfo("Mossfire Egg", 304, Rarity.UNCOMMON, mage.cards.m.MossfireEgg.class));
+ cards.add(new SetCardInfo("Mossfire Valley", 321, Rarity.RARE, mage.cards.m.MossfireValley.class));
+ cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mudhole", 208, Rarity.RARE, mage.cards.m.Mudhole.class));
+ cards.add(new SetCardInfo("Muscle Burst", 252, Rarity.COMMON, mage.cards.m.MuscleBurst.class));
+ cards.add(new SetCardInfo("Mystic Crusader", 33, Rarity.RARE, mage.cards.m.MysticCrusader.class));
+ cards.add(new SetCardInfo("Mystic Enforcer", 290, Rarity.RARE, mage.cards.m.MysticEnforcer.class));
+ cards.add(new SetCardInfo("Mystic Penitent", 34, Rarity.UNCOMMON, mage.cards.m.MysticPenitent.class));
+ cards.add(new SetCardInfo("Mystic Visionary", 35, Rarity.COMMON, mage.cards.m.MysticVisionary.class));
+ cards.add(new SetCardInfo("Mystic Zealot", 36, Rarity.COMMON, mage.cards.m.MysticZealot.class));
+ cards.add(new SetCardInfo("Nantuko Disciple", 253, Rarity.COMMON, mage.cards.n.NantukoDisciple.class));
+ cards.add(new SetCardInfo("Nantuko Elder", 254, Rarity.UNCOMMON, mage.cards.n.NantukoElder.class));
+ cards.add(new SetCardInfo("Nantuko Mentor", 255, Rarity.RARE, mage.cards.n.NantukoMentor.class));
+ cards.add(new SetCardInfo("Nantuko Shrine", 256, Rarity.RARE, mage.cards.n.NantukoShrine.class));
+ cards.add(new SetCardInfo("Need for Speed", 209, Rarity.RARE, mage.cards.n.NeedForSpeed.class));
+ cards.add(new SetCardInfo("Nefarious Lich", 153, Rarity.RARE, mage.cards.n.NefariousLich.class));
+ cards.add(new SetCardInfo("New Frontiers", 257, Rarity.RARE, mage.cards.n.NewFrontiers.class));
+ cards.add(new SetCardInfo("Nimble Mongoose", 258, Rarity.UNCOMMON, mage.cards.n.NimbleMongoose.class));
+ cards.add(new SetCardInfo("Nomad Decoy", 37, Rarity.UNCOMMON, mage.cards.n.NomadDecoy.class));
+ cards.add(new SetCardInfo("Nomad Stadium", 322, Rarity.UNCOMMON, mage.cards.n.NomadStadium.class));
+ cards.add(new SetCardInfo("Nut Collector", 259, Rarity.RARE, mage.cards.n.NutCollector.class));
+ cards.add(new SetCardInfo("Obstinate Familiar", 210, Rarity.RARE, mage.cards.o.ObstinateFamiliar.class));
+ cards.add(new SetCardInfo("Otarian Juggernaut", 305, Rarity.RARE, mage.cards.o.OtarianJuggernaut.class));
+ cards.add(new SetCardInfo("Overeager Apprentice", 154, Rarity.COMMON, mage.cards.o.OvereagerApprentice.class));
+ cards.add(new SetCardInfo("Overrun", 260, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
+ cards.add(new SetCardInfo("Painbringer", 155, Rarity.UNCOMMON, mage.cards.p.Painbringer.class));
+ cards.add(new SetCardInfo("Pardic Firecat", 211, Rarity.COMMON, mage.cards.p.PardicFirecat.class));
+ cards.add(new SetCardInfo("Pardic Miner", 212, Rarity.RARE, mage.cards.p.PardicMiner.class));
+ cards.add(new SetCardInfo("Pardic Swordsmith", 213, Rarity.COMMON, mage.cards.p.PardicSwordsmith.class));
+ cards.add(new SetCardInfo("Patchwork Gnomes", 306, Rarity.UNCOMMON, mage.cards.p.PatchworkGnomes.class));
+ cards.add(new SetCardInfo("Patriarch's Desire", 156, Rarity.COMMON, mage.cards.p.PatriarchsDesire.class));
+ cards.add(new SetCardInfo("Patrol Hound", 38, Rarity.COMMON, mage.cards.p.PatrolHound.class));
+ cards.add(new SetCardInfo("Patron Wizard", 89, Rarity.RARE, mage.cards.p.PatronWizard.class));
+ cards.add(new SetCardInfo("Pedantic Learning", 90, Rarity.RARE, mage.cards.p.PedanticLearning.class));
+ cards.add(new SetCardInfo("Peek", 91, Rarity.COMMON, mage.cards.p.Peek.class));
+ cards.add(new SetCardInfo("Persuasion", 92, Rarity.RARE, mage.cards.p.Persuasion.class));
+ cards.add(new SetCardInfo("Petrified Field", 323, Rarity.RARE, mage.cards.p.PetrifiedField.class));
+ cards.add(new SetCardInfo("Phantatog", 291, Rarity.UNCOMMON, mage.cards.p.Phantatog.class));
+ cards.add(new SetCardInfo("Pianna, Nomad Captain", 39, Rarity.RARE, mage.cards.p.PiannaNomadCaptain.class));
+ cards.add(new SetCardInfo("Pilgrim of Justice", 40, Rarity.COMMON, mage.cards.p.PilgrimOfJustice.class));
+ cards.add(new SetCardInfo("Pilgrim of Virtue", 41, Rarity.COMMON, mage.cards.p.PilgrimOfVirtue.class));
+ cards.add(new SetCardInfo("Piper's Melody", 261, Rarity.UNCOMMON, mage.cards.p.PipersMelody.class));
+ cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Phantom Whelp", 93, Rarity.COMMON, mage.cards.p.PhantomWhelp.class));
+ cards.add(new SetCardInfo("Predict", 94, Rarity.UNCOMMON, mage.cards.p.Predict.class));
+ cards.add(new SetCardInfo("Price of Glory", 214, Rarity.UNCOMMON, mage.cards.p.PriceOfGlory.class));
+ cards.add(new SetCardInfo("Primal Frenzy", 262, Rarity.COMMON, mage.cards.p.PrimalFrenzy.class));
+ cards.add(new SetCardInfo("Psionic Gift", 95, Rarity.COMMON, mage.cards.p.PsionicGift.class));
+ cards.add(new SetCardInfo("Psychatog", 292, Rarity.UNCOMMON, mage.cards.p.Psychatog.class));
+ cards.add(new SetCardInfo("Pulsating Illusion", 96, Rarity.UNCOMMON, mage.cards.p.PulsatingIllusion.class));
+ cards.add(new SetCardInfo("Puppeteer", 97, Rarity.UNCOMMON, mage.cards.p.Puppeteer.class));
+ cards.add(new SetCardInfo("Rabid Elephant", 263, Rarity.COMMON, mage.cards.r.RabidElephant.class));
+ cards.add(new SetCardInfo("Ravaged Highlands", 324, Rarity.COMMON, mage.cards.r.RavagedHighlands.class));
+ cards.add(new SetCardInfo("Ray of Distortion", 42, Rarity.COMMON, mage.cards.r.RayOfDistortion.class));
+ cards.add(new SetCardInfo("Reckless Charge", 215, Rarity.COMMON, mage.cards.r.RecklessCharge.class));
+ cards.add(new SetCardInfo("Recoup", 216, Rarity.UNCOMMON, mage.cards.r.Recoup.class));
+ cards.add(new SetCardInfo("Refresh", 264, Rarity.COMMON, mage.cards.r.Refresh.class));
+ cards.add(new SetCardInfo("Repel", 98, Rarity.COMMON, mage.cards.r.Repel.class));
+ cards.add(new SetCardInfo("Repentant Vampire", 157, Rarity.RARE, mage.cards.r.RepentantVampire.class));
+ cards.add(new SetCardInfo("Resilient Wanderer", 43, Rarity.UNCOMMON, mage.cards.r.ResilientWanderer.class));
+ cards.add(new SetCardInfo("Rites of Initiation", 217, Rarity.COMMON, mage.cards.r.RitesOfInitiation.class));
+ cards.add(new SetCardInfo("Rites of Refusal", 99, Rarity.COMMON, mage.cards.r.RitesOfRefusal.class));
+ cards.add(new SetCardInfo("Rites of Spring", 265, Rarity.COMMON, mage.cards.r.RitesOfSpring.class));
+ cards.add(new SetCardInfo("Roar of the Wurm", 266, Rarity.UNCOMMON, mage.cards.r.RoarOfTheWurm.class));
+ cards.add(new SetCardInfo("Rotting Giant", 158, Rarity.UNCOMMON, mage.cards.r.RottingGiant.class));
+ cards.add(new SetCardInfo("Sacred Rites", 44, Rarity.COMMON, mage.cards.s.SacredRites.class));
+ cards.add(new SetCardInfo("Sadistic Hypnotist", 159, Rarity.UNCOMMON, mage.cards.s.SadisticHypnotist.class));
+ cards.add(new SetCardInfo("Sandstone Deadfall", 307, Rarity.UNCOMMON, mage.cards.s.SandstoneDeadfall.class));
+ cards.add(new SetCardInfo("Sarcatog", 293, Rarity.UNCOMMON, mage.cards.s.Sarcatog.class));
+ cards.add(new SetCardInfo("Savage Firecat", 218, Rarity.RARE, mage.cards.s.SavageFirecat.class));
+ cards.add(new SetCardInfo("Scorching Missile", 219, Rarity.COMMON, mage.cards.s.ScorchingMissile.class));
+ cards.add(new SetCardInfo("Screams of the Damned", 160, Rarity.UNCOMMON, mage.cards.s.ScreamsOfTheDamned.class));
+ cards.add(new SetCardInfo("Scrivener", 100, Rarity.COMMON, mage.cards.s.Scrivener.class));
+ cards.add(new SetCardInfo("Seafloor Debris", 325, Rarity.COMMON, mage.cards.s.SeafloorDebris.class));
+ cards.add(new SetCardInfo("Second Thoughts", 45, Rarity.COMMON, mage.cards.s.SecondThoughts.class));
+ cards.add(new SetCardInfo("Seize the Day", 220, Rarity.RARE, mage.cards.s.SeizeTheDay.class));
+ cards.add(new SetCardInfo("Seton, Krosan Protector", 267, Rarity.RARE, mage.cards.s.SetonKrosanProtector.class));
+ cards.add(new SetCardInfo("Seton's Desire", 268, Rarity.UNCOMMON, mage.cards.s.SetonsDesire.class));
+ cards.add(new SetCardInfo("Shadowblood Egg", 308, Rarity.UNCOMMON, mage.cards.s.ShadowbloodEgg.class));
+ cards.add(new SetCardInfo("Shadowblood Ridge", 326, Rarity.RARE, mage.cards.s.ShadowbloodRidge.class));
+ cards.add(new SetCardInfo("Shadowmage Infiltrator", 294, Rarity.RARE, mage.cards.s.ShadowmageInfiltrator.class));
+ cards.add(new SetCardInfo("Shelter", 46, Rarity.COMMON, mage.cards.s.Shelter.class));
+ cards.add(new SetCardInfo("Shifty Doppelganger", 101, Rarity.RARE, mage.cards.s.ShiftyDoppelganger.class));
+ cards.add(new SetCardInfo("Shower of Coals", 221, Rarity.UNCOMMON, mage.cards.s.ShowerOfCoals.class));
+ cards.add(new SetCardInfo("Simplify", 269, Rarity.COMMON, mage.cards.s.Simplify.class));
+ cards.add(new SetCardInfo("Skeletal Scrying", 161, Rarity.UNCOMMON, mage.cards.s.SkeletalScrying.class));
+ cards.add(new SetCardInfo("Skull Fracture", 162, Rarity.UNCOMMON, mage.cards.s.SkullFracture.class));
+ cards.add(new SetCardInfo("Skycloud Egg", 309, Rarity.UNCOMMON, mage.cards.s.SkycloudEgg.class));
+ cards.add(new SetCardInfo("Skycloud Expanse", 327, Rarity.RARE, mage.cards.s.SkycloudExpanse.class));
+ cards.add(new SetCardInfo("Skyshooter", 270, Rarity.UNCOMMON, mage.cards.s.Skyshooter.class));
+ cards.add(new SetCardInfo("Soulcatcher", 47, Rarity.UNCOMMON, mage.cards.s.Soulcatcher.class));
+ cards.add(new SetCardInfo("Spark Mage", 222, Rarity.UNCOMMON, mage.cards.s.SparkMage.class));
+ cards.add(new SetCardInfo("Spellbane Centaur", 271, Rarity.RARE, mage.cards.s.SpellbaneCentaur.class));
+ cards.add(new SetCardInfo("Sphere of Duty", 48, Rarity.UNCOMMON, mage.cards.s.SphereOfDuty.class));
+ cards.add(new SetCardInfo("Sphere of Grace", 49, Rarity.UNCOMMON, mage.cards.s.SphereOfGrace.class));
+ cards.add(new SetCardInfo("Sphere of Law", 50, Rarity.UNCOMMON, mage.cards.s.SphereOfLaw.class));
+ cards.add(new SetCardInfo("Sphere of Reason", 51, Rarity.UNCOMMON, mage.cards.s.SphereOfReason.class));
+ cards.add(new SetCardInfo("Sphere of Truth", 52, Rarity.UNCOMMON, mage.cards.s.SphereOfTruth.class));
+ cards.add(new SetCardInfo("Spiritualize", 53, Rarity.UNCOMMON, mage.cards.s.Spiritualize.class));
+ cards.add(new SetCardInfo("Springing Tiger", 272, Rarity.COMMON, mage.cards.s.SpringingTiger.class));
+ cards.add(new SetCardInfo("Squirrel Mob", 273, Rarity.RARE, mage.cards.s.SquirrelMob.class));
+ cards.add(new SetCardInfo("Squirrel Nest", 274, Rarity.UNCOMMON, mage.cards.s.SquirrelNest.class));
+ cards.add(new SetCardInfo("Stalking Bloodsucker", 163, Rarity.RARE, mage.cards.s.StalkingBloodsucker.class));
+ cards.add(new SetCardInfo("Standstill", 102, Rarity.UNCOMMON, mage.cards.s.Standstill.class));
+ cards.add(new SetCardInfo("Steam Vines", 223, Rarity.UNCOMMON, mage.cards.s.SteamVines.class));
+ cards.add(new SetCardInfo("Steamclaw", 310, Rarity.UNCOMMON, mage.cards.s.Steamclaw.class));
+ cards.add(new SetCardInfo("Still Life", 275, Rarity.UNCOMMON, mage.cards.s.StillLife.class));
+ cards.add(new SetCardInfo("Stone-Tongue Basilisk", 276, Rarity.RARE, mage.cards.s.StoneTongueBasilisk.class));
+ cards.add(new SetCardInfo("Sungrass Egg", 311, Rarity.UNCOMMON, mage.cards.s.SungrassEgg.class));
+ cards.add(new SetCardInfo("Sungrass Prairie", 328, Rarity.RARE, mage.cards.s.SungrassPrairie.class));
+ cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Sylvan Might", 277, Rarity.UNCOMMON, mage.cards.s.SylvanMight.class));
+ cards.add(new SetCardInfo("Syncopate", 103, Rarity.COMMON, mage.cards.s.Syncopate.class));
+ cards.add(new SetCardInfo("Tainted Pact", 164, Rarity.RARE, mage.cards.t.TaintedPact.class));
+ cards.add(new SetCardInfo("Tarnished Citadel", 329, Rarity.RARE, mage.cards.t.TarnishedCitadel.class));
+ cards.add(new SetCardInfo("Tattoo Ward", 54, Rarity.UNCOMMON, mage.cards.t.TattooWard.class));
+ cards.add(new SetCardInfo("Terravore", 278, Rarity.RARE, mage.cards.t.Terravore.class));
+ cards.add(new SetCardInfo("Testament of Faith", 55, Rarity.UNCOMMON, mage.cards.t.TestamentOfFaith.class));
+ cards.add(new SetCardInfo("Thaumatog", 295, Rarity.UNCOMMON, mage.cards.t.Thaumatog.class));
+ cards.add(new SetCardInfo("Thermal Blast", 224, Rarity.COMMON, mage.cards.t.ThermalBlast.class));
+ cards.add(new SetCardInfo("Think Tank", 104, Rarity.UNCOMMON, mage.cards.t.ThinkTank.class));
+ cards.add(new SetCardInfo("Thought Devourer", 105, Rarity.RARE, mage.cards.t.ThoughtDevourer.class));
+ cards.add(new SetCardInfo("Thought Eater", 106, Rarity.UNCOMMON, mage.cards.t.ThoughtEater.class));
+ cards.add(new SetCardInfo("Thought Nibbler", 107, Rarity.COMMON, mage.cards.t.ThoughtNibbler.class));
+ cards.add(new SetCardInfo("Timberland Ruins", 330, Rarity.COMMON, mage.cards.t.TimberlandRuins.class));
+ cards.add(new SetCardInfo("Time Stretch", 108, Rarity.RARE, mage.cards.t.TimeStretch.class));
+ cards.add(new SetCardInfo("Tireless Tribe", 56, Rarity.COMMON, mage.cards.t.TirelessTribe.class));
+ cards.add(new SetCardInfo("Tombfire", 165, Rarity.RARE, mage.cards.t.Tombfire.class));
+ cards.add(new SetCardInfo("Touch of Invisibility", 109, Rarity.COMMON, mage.cards.t.TouchOfInvisibility.class));
+ cards.add(new SetCardInfo("Traumatize", 110, Rarity.RARE, mage.cards.t.Traumatize.class));
+ cards.add(new SetCardInfo("Traveling Plague", 166, Rarity.RARE, mage.cards.t.TravelingPlague.class));
+ cards.add(new SetCardInfo("Treetop Sentinel", 111, Rarity.UNCOMMON, mage.cards.t.TreetopSentinel.class));
+ cards.add(new SetCardInfo("Tremble", 225, Rarity.COMMON, mage.cards.t.Tremble.class));
+ cards.add(new SetCardInfo("Twigwalker", 279, Rarity.UNCOMMON, mage.cards.t.Twigwalker.class));
+ cards.add(new SetCardInfo("Unifying Theory", 112, Rarity.RARE, mage.cards.u.UnifyingTheory.class));
+ cards.add(new SetCardInfo("Upheaval", 113, Rarity.RARE, mage.cards.u.Upheaval.class));
+ cards.add(new SetCardInfo("Vampiric Dragon", 296, Rarity.RARE, mage.cards.v.VampiricDragon.class));
+ cards.add(new SetCardInfo("Verdant Succession", 280, Rarity.RARE, mage.cards.v.VerdantSuccession.class));
+ cards.add(new SetCardInfo("Vivify", 281, Rarity.UNCOMMON, mage.cards.v.Vivify.class));
+ cards.add(new SetCardInfo("Volcanic Spray", 226, Rarity.UNCOMMON, mage.cards.v.VolcanicSpray.class));
+ cards.add(new SetCardInfo("Volley of Boulders", 227, Rarity.RARE, mage.cards.v.VolleyOfBoulders.class));
+ cards.add(new SetCardInfo("Wayward Angel", 57, Rarity.RARE, mage.cards.w.WaywardAngel.class));
+ cards.add(new SetCardInfo("Werebear", 282, Rarity.COMMON, mage.cards.w.Werebear.class));
+ cards.add(new SetCardInfo("Whipkeeper", 228, Rarity.UNCOMMON, mage.cards.w.Whipkeeper.class));
+ cards.add(new SetCardInfo("Whispering Shade", 167, Rarity.COMMON, mage.cards.w.WhisperingShade.class));
+ cards.add(new SetCardInfo("Wild Mongrel", 283, Rarity.COMMON, mage.cards.w.WildMongrel.class));
+ cards.add(new SetCardInfo("Woodland Druid", 284, Rarity.COMMON, mage.cards.w.WoodlandDruid.class));
+ cards.add(new SetCardInfo("Words of Wisdom", 114, Rarity.COMMON, mage.cards.w.WordsOfWisdom.class));
+ cards.add(new SetCardInfo("Zombie Assassin", 168, Rarity.COMMON, mage.cards.z.ZombieAssassin.class));
+ cards.add(new SetCardInfo("Zombie Cannibal", 169, Rarity.COMMON, mage.cards.z.ZombieCannibal.class));
+ cards.add(new SetCardInfo("Zombie Infestation", 170, Rarity.UNCOMMON, mage.cards.z.ZombieInfestation.class));
+ cards.add(new SetCardInfo("Zombify", 171, Rarity.UNCOMMON, mage.cards.z.Zombify.class));
+ cards.add(new SetCardInfo("Zoologist", 285, Rarity.RARE, mage.cards.z.Zoologist.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Onslaught.java b/Mage.Sets/src/mage/sets/Onslaught.java
index 44cedc876cf..25258a6aa8e 100644
--- a/Mage.Sets/src/mage/sets/Onslaught.java
+++ b/Mage.Sets/src/mage/sets/Onslaught.java
@@ -6,7 +6,7 @@ import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class Onslaught extends ExpansionSet {
+public final class Onslaught extends ExpansionSet {
private static final Onslaught instance = new Onslaught();
diff --git a/Mage.Sets/src/mage/sets/PDSFireAndLightning.java b/Mage.Sets/src/mage/sets/PDSFireAndLightning.java
index e10ce94989e..91b1c962cfb 100644
--- a/Mage.Sets/src/mage/sets/PDSFireAndLightning.java
+++ b/Mage.Sets/src/mage/sets/PDSFireAndLightning.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class PDSFireAndLightning extends ExpansionSet {
+public final class PDSFireAndLightning extends ExpansionSet {
private static final PDSFireAndLightning instance = new PDSFireAndLightning();
diff --git a/Mage.Sets/src/mage/sets/PDSGraveborn.java b/Mage.Sets/src/mage/sets/PDSGraveborn.java
index 77e28025420..fc6181045ca 100644
--- a/Mage.Sets/src/mage/sets/PDSGraveborn.java
+++ b/Mage.Sets/src/mage/sets/PDSGraveborn.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class PDSGraveborn extends ExpansionSet {
+public final class PDSGraveborn extends ExpansionSet {
private static final PDSGraveborn instance = new PDSGraveborn();
diff --git a/Mage.Sets/src/mage/sets/PDSSlivers.java b/Mage.Sets/src/mage/sets/PDSSlivers.java
index ac9c361d38c..daee0b88de9 100644
--- a/Mage.Sets/src/mage/sets/PDSSlivers.java
+++ b/Mage.Sets/src/mage/sets/PDSSlivers.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class PDSSlivers extends ExpansionSet {
+public final class PDSSlivers extends ExpansionSet {
private static final PDSSlivers instance = new PDSSlivers();
diff --git a/Mage.Sets/src/mage/sets/PhyrexiaVsTheCoalition.java b/Mage.Sets/src/mage/sets/PhyrexiaVsTheCoalition.java
index e002f9fd8b6..30854cd9a29 100644
--- a/Mage.Sets/src/mage/sets/PhyrexiaVsTheCoalition.java
+++ b/Mage.Sets/src/mage/sets/PhyrexiaVsTheCoalition.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class PhyrexiaVsTheCoalition extends ExpansionSet {
+public final class PhyrexiaVsTheCoalition extends ExpansionSet {
private static final PhyrexiaVsTheCoalition instance = new PhyrexiaVsTheCoalition();
diff --git a/Mage.Sets/src/mage/sets/PlanarChaos.java b/Mage.Sets/src/mage/sets/PlanarChaos.java
index 14e6c8cac41..17763b99bbb 100644
--- a/Mage.Sets/src/mage/sets/PlanarChaos.java
+++ b/Mage.Sets/src/mage/sets/PlanarChaos.java
@@ -1,221 +1,221 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class PlanarChaos extends ExpansionSet {
-
- private static final PlanarChaos instance = new PlanarChaos();
-
- public static PlanarChaos getInstance() {
- return instance;
- }
-
- 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("Auramancer's Guise", 34, Rarity.UNCOMMON, mage.cards.a.AuramancersGuise.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("Kor Dirge", 87, Rarity.UNCOMMON, mage.cards.k.KorDirge.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("Mantle of Leadership", 9, Rarity.UNCOMMON, mage.cards.m.MantleOfLeadership.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("Muck Drubb", 76, Rarity.UNCOMMON, mage.cards.m.MuckDrubb.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("Retether", 13, Rarity.RARE, mage.cards.r.Retether.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("Riftmarked Knight", 14, Rarity.UNCOMMON, mage.cards.r.RiftmarkedKnight.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("Timebender", 50, Rarity.UNCOMMON, mage.cards.t.Timebender.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("Treacherous Urge", 82, Rarity.UNCOMMON, mage.cards.t.TreacherousUrge.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("Veiling Oddity", 51, Rarity.COMMON, mage.cards.v.VeilingOddity.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("Volcano Hellion", 111, Rarity.RARE, mage.cards.v.VolcanoHellion.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.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class PlanarChaos extends ExpansionSet {
+
+ private static final PlanarChaos instance = new PlanarChaos();
+
+ public static PlanarChaos getInstance() {
+ return instance;
+ }
+
+ 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("Auramancer's Guise", 34, Rarity.UNCOMMON, mage.cards.a.AuramancersGuise.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("Kor Dirge", 87, Rarity.UNCOMMON, mage.cards.k.KorDirge.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("Mantle of Leadership", 9, Rarity.UNCOMMON, mage.cards.m.MantleOfLeadership.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("Muck Drubb", 76, Rarity.UNCOMMON, mage.cards.m.MuckDrubb.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("Retether", 13, Rarity.RARE, mage.cards.r.Retether.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("Riftmarked Knight", 14, Rarity.UNCOMMON, mage.cards.r.RiftmarkedKnight.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("Timebender", 50, Rarity.UNCOMMON, mage.cards.t.Timebender.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("Treacherous Urge", 82, Rarity.UNCOMMON, mage.cards.t.TreacherousUrge.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("Veiling Oddity", 51, Rarity.COMMON, mage.cards.v.VeilingOddity.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("Volcano Hellion", 111, Rarity.RARE, mage.cards.v.VolcanoHellion.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));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Planechase.java b/Mage.Sets/src/mage/sets/Planechase.java
index e59ada31530..4038d0045a6 100644
--- a/Mage.Sets/src/mage/sets/Planechase.java
+++ b/Mage.Sets/src/mage/sets/Planechase.java
@@ -1,218 +1,218 @@
-/*
-* 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author BetaSteward_at_googlemail.com
- */
-public class Planechase extends ExpansionSet {
-
- private static final Planechase instance = new Planechase();
-
- public static Planechase getInstance() {
- return instance;
- }
-
- private Planechase() {
- super("Planechase", "HOP", ExpansionSet.buildDate(2009, 8, 4), SetType.SUPPLEMENTAL);
- this.blockName = "Command Zone";
- cards.add(new SetCardInfo("Akroma's Vengeance", 1, Rarity.RARE, mage.cards.a.AkromasVengeance.class));
- cards.add(new SetCardInfo("Ancient Den", 130, Rarity.COMMON, mage.cards.a.AncientDen.class));
- cards.add(new SetCardInfo("Arcbound Crusher", 105, Rarity.UNCOMMON, mage.cards.a.ArcboundCrusher.class));
- cards.add(new SetCardInfo("Arcbound Slith", 106, Rarity.UNCOMMON, mage.cards.a.ArcboundSlith.class));
- cards.add(new SetCardInfo("Arc Lightning", 46, Rarity.COMMON, mage.cards.a.ArcLightning.class));
- cards.add(new SetCardInfo("Arsenal Thresher", 96, Rarity.COMMON, mage.cards.a.ArsenalThresher.class));
- cards.add(new SetCardInfo("Ascendant Evincar", 17, Rarity.RARE, mage.cards.a.AscendantEvincar.class));
- cards.add(new SetCardInfo("Balefire Liege", 97, Rarity.RARE, mage.cards.b.BalefireLiege.class));
- cards.add(new SetCardInfo("Battlegate Mimic", 98, Rarity.COMMON, mage.cards.b.BattlegateMimic.class));
- cards.add(new SetCardInfo("Beacon of Unrest", 18, Rarity.RARE, mage.cards.b.BeaconOfUnrest.class));
- cards.add(new SetCardInfo("Beast Hunt", 68, Rarity.COMMON, mage.cards.b.BeastHunt.class));
- cards.add(new SetCardInfo("Beseech the Queen", 19, Rarity.UNCOMMON, mage.cards.b.BeseechTheQueen.class));
- cards.add(new SetCardInfo("Blaze", 47, Rarity.UNCOMMON, mage.cards.b.Blaze.class));
- cards.add(new SetCardInfo("Bogardan Firefiend", 48, Rarity.COMMON, mage.cards.b.BogardanFirefiend.class));
- cards.add(new SetCardInfo("Bogardan Rager", 49, Rarity.COMMON, mage.cards.b.BogardanRager.class));
- cards.add(new SetCardInfo("Boros Garrison", 131, Rarity.COMMON, mage.cards.b.BorosGarrison.class));
- cards.add(new SetCardInfo("Boros Guildmage", 99, Rarity.UNCOMMON, mage.cards.b.BorosGuildmage.class));
- cards.add(new SetCardInfo("Boros Signet", 107, Rarity.COMMON, mage.cards.b.BorosSignet.class));
- cards.add(new SetCardInfo("Boros Swiftblade", 82, Rarity.UNCOMMON, mage.cards.b.BorosSwiftblade.class));
- cards.add(new SetCardInfo("Bosh, Iron Golem", 108, Rarity.RARE, mage.cards.b.BoshIronGolem.class));
- cards.add(new SetCardInfo("Branching Bolt", 83, Rarity.COMMON, mage.cards.b.BranchingBolt.class));
- cards.add(new SetCardInfo("Briarhorn", 69, Rarity.UNCOMMON, mage.cards.b.Briarhorn.class));
- cards.add(new SetCardInfo("Broodstar", 8, Rarity.RARE, mage.cards.b.Broodstar.class));
- cards.add(new SetCardInfo("Browbeat", 50, Rarity.UNCOMMON, mage.cards.b.Browbeat.class));
- cards.add(new SetCardInfo("Bull Cerodon", 84, Rarity.UNCOMMON, mage.cards.b.BullCerodon.class));
- cards.add(new SetCardInfo("Cabal Coffers", 132, Rarity.UNCOMMON, mage.cards.c.CabalCoffers.class));
- cards.add(new SetCardInfo("Cadaverous Knight", 20, Rarity.COMMON, mage.cards.c.CadaverousKnight.class));
- cards.add(new SetCardInfo("Cerodon Yearling", 86, Rarity.COMMON, mage.cards.c.CerodonYearling.class));
- cards.add(new SetCardInfo("Cinder Elemental", 51, Rarity.UNCOMMON, mage.cards.c.CinderElemental.class));
- cards.add(new SetCardInfo("Cone of Flame", 52, Rarity.UNCOMMON, mage.cards.c.ConeOfFlame.class));
- cards.add(new SetCardInfo("Congregate", 2, Rarity.COMMON, mage.cards.c.Congregate.class));
- cards.add(new SetCardInfo("Consume Spirit", 21, Rarity.UNCOMMON, mage.cards.c.ConsumeSpirit.class));
- cards.add(new SetCardInfo("Copper Myr", 109, Rarity.COMMON, mage.cards.c.CopperMyr.class));
- cards.add(new SetCardInfo("Corpse Harvester", 22, Rarity.UNCOMMON, mage.cards.c.CorpseHarvester.class));
- cards.add(new SetCardInfo("Cranial Plating", 110, Rarity.COMMON, mage.cards.c.CranialPlating.class));
- cards.add(new SetCardInfo("Cruel Revival", 23, Rarity.COMMON, mage.cards.c.CruelRevival.class));
- cards.add(new SetCardInfo("Dark Ritual", 24, Rarity.COMMON, mage.cards.d.DarkRitual.class));
- cards.add(new SetCardInfo("Darksteel Forge", 111, Rarity.RARE, mage.cards.d.DarksteelForge.class));
- cards.add(new SetCardInfo("Death Baron", 25, Rarity.RARE, mage.cards.d.DeathBaron.class));
- cards.add(new SetCardInfo("Door to Nothingness", 112, Rarity.RARE, mage.cards.d.DoorToNothingness.class));
- cards.add(new SetCardInfo("Double Cleave", 100, Rarity.COMMON, mage.cards.d.DoubleCleave.class));
- cards.add(new SetCardInfo("Dregscape Zombie", 26, Rarity.COMMON, mage.cards.d.DregscapeZombie.class));
- cards.add(new SetCardInfo("Duergar Hedge-Mage", 101, Rarity.UNCOMMON, mage.cards.d.DuergarHedgeMage.class));
- cards.add(new SetCardInfo("Etched Oracle", 113, Rarity.UNCOMMON, mage.cards.e.EtchedOracle.class));
- cards.add(new SetCardInfo("Explosive Vegetation", 70, Rarity.UNCOMMON, mage.cards.e.ExplosiveVegetation.class));
- cards.add(new SetCardInfo("Fabricate", 9, Rarity.UNCOMMON, mage.cards.f.Fabricate.class));
- cards.add(new SetCardInfo("Fertile Ground", 71, Rarity.COMMON, mage.cards.f.FertileGround.class));
- cards.add(new SetCardInfo("Fertilid", 72, Rarity.COMMON, mage.cards.f.Fertilid.class));
- cards.add(new SetCardInfo("Festering Goblin", 27, Rarity.COMMON, mage.cards.f.FesteringGoblin.class));
- cards.add(new SetCardInfo("Fires of Yavimaya", 87, Rarity.UNCOMMON, mage.cards.f.FiresOfYavimaya.class));
- cards.add(new SetCardInfo("Flamekin Harbinger", 53, Rarity.UNCOMMON, mage.cards.f.FlamekinHarbinger.class));
- cards.add(new SetCardInfo("Flametongue Kavu", 54, Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class));
- cards.add(new SetCardInfo("Forest", 165, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 166, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 167, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 168, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 169, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forgotten Ancient", 73, Rarity.RARE, mage.cards.f.ForgottenAncient.class));
- cards.add(new SetCardInfo("Furnace of Rath", 55, Rarity.RARE, mage.cards.f.FurnaceOfRath.class));
- cards.add(new SetCardInfo("Glory of Warfare", 88, Rarity.RARE, mage.cards.g.GloryOfWarfare.class));
- cards.add(new SetCardInfo("Goblin Offensive", 56, Rarity.UNCOMMON, mage.cards.g.GoblinOffensive.class));
- cards.add(new SetCardInfo("Gold Myr", 114, Rarity.COMMON, mage.cards.g.GoldMyr.class));
- cards.add(new SetCardInfo("Gravedigger", 29, Rarity.COMMON, mage.cards.g.Gravedigger.class));
- cards.add(new SetCardInfo("Grave Pact", 28, Rarity.RARE, mage.cards.g.GravePact.class));
- cards.add(new SetCardInfo("Great Furnace", 133, Rarity.COMMON, mage.cards.g.GreatFurnace.class));
- cards.add(new SetCardInfo("Gruul Turf", 134, Rarity.COMMON, mage.cards.g.GruulTurf.class));
- cards.add(new SetCardInfo("Hearthfire Hobgoblin", 102, Rarity.UNCOMMON, mage.cards.h.HearthfireHobgoblin.class));
- cards.add(new SetCardInfo("Helldozer", 30, Rarity.RARE, mage.cards.h.Helldozer.class));
- cards.add(new SetCardInfo("Hideous End", 31, Rarity.COMMON, mage.cards.h.HideousEnd.class));
- cards.add(new SetCardInfo("Hull Breach", 89, Rarity.COMMON, mage.cards.h.HullBreach.class));
- cards.add(new SetCardInfo("Incremental Blight", 32, Rarity.UNCOMMON, mage.cards.i.IncrementalBlight.class));
- cards.add(new SetCardInfo("Innocent Blood", 33, Rarity.COMMON, mage.cards.i.InnocentBlood.class));
- cards.add(new SetCardInfo("Insurrection", 57, Rarity.RARE, mage.cards.i.Insurrection.class));
- cards.add(new SetCardInfo("Iron Myr", 115, Rarity.COMMON, mage.cards.i.IronMyr.class));
- cards.add(new SetCardInfo("Island", 147, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 148, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 149, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 150, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ivy Elemental", 74, Rarity.RARE, mage.cards.i.IvyElemental.class));
- cards.add(new SetCardInfo("Keep Watch", 10, Rarity.COMMON, mage.cards.k.KeepWatch.class));
- cards.add(new SetCardInfo("Keldon Champion", 58, Rarity.UNCOMMON, mage.cards.k.KeldonChampion.class));
- cards.add(new SetCardInfo("Kor Sanctifiers", 3, Rarity.COMMON, mage.cards.k.KorSanctifiers.class));
- cards.add(new SetCardInfo("Leaden Myr", 116, Rarity.COMMON, mage.cards.l.LeadenMyr.class));
- cards.add(new SetCardInfo("Leechridden Swamp", 135, Rarity.UNCOMMON, mage.cards.l.LeechriddenSwamp.class));
- cards.add(new SetCardInfo("Lightning Helix", 90, Rarity.UNCOMMON, mage.cards.l.LightningHelix.class));
- cards.add(new SetCardInfo("Living Hive", 75, Rarity.RARE, mage.cards.l.LivingHive.class));
- cards.add(new SetCardInfo("Lodestone Myr", 117, Rarity.RARE, mage.cards.l.LodestoneMyr.class));
- cards.add(new SetCardInfo("Loxodon Warhammer", 118, Rarity.RARE, mage.cards.l.LoxodonWarhammer.class));
- cards.add(new SetCardInfo("Mage Slayer", 91, Rarity.UNCOMMON, mage.cards.m.MageSlayer.class));
- cards.add(new SetCardInfo("Mask of Memory", 119, Rarity.UNCOMMON, mage.cards.m.MaskOfMemory.class));
- cards.add(new SetCardInfo("Master of Etherium", 11, Rarity.RARE, mage.cards.m.MasterOfEtherium.class));
- cards.add(new SetCardInfo("Menacing Ogre", 59, Rarity.RARE, mage.cards.m.MenacingOgre.class));
- cards.add(new SetCardInfo("Mountain", 156, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 157, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 158, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 159, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 160, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 161, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 162, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 163, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 164, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Myr Enforcer", 120, Rarity.COMMON, mage.cards.m.MyrEnforcer.class));
- cards.add(new SetCardInfo("Nefashu", 34, Rarity.RARE, mage.cards.n.Nefashu.class));
- cards.add(new SetCardInfo("Noxious Ghoul", 35, Rarity.UNCOMMON, mage.cards.n.NoxiousGhoul.class));
- cards.add(new SetCardInfo("Nuisance Engine", 121, Rarity.UNCOMMON, mage.cards.n.NuisanceEngine.class));
- cards.add(new SetCardInfo("Oblivion Ring", 4, Rarity.COMMON, mage.cards.o.OblivionRing.class));
- cards.add(new SetCardInfo("Order // Chaos", 104, Rarity.UNCOMMON, mage.cards.o.OrderChaos.class));
- cards.add(new SetCardInfo("Orim's Thunder", 5, Rarity.COMMON, mage.cards.o.OrimsThunder.class));
- cards.add(new SetCardInfo("Pentad Prism", 122, Rarity.COMMON, mage.cards.p.PentadPrism.class));
- cards.add(new SetCardInfo("Pentavus", 123, Rarity.RARE, mage.cards.p.Pentavus.class));
- cards.add(new SetCardInfo("Phyrexian Arena", 36, Rarity.RARE, mage.cards.p.PhyrexianArena.class));
- cards.add(new SetCardInfo("Phyrexian Ghoul", 37, Rarity.COMMON, mage.cards.p.PhyrexianGhoul.class));
- cards.add(new SetCardInfo("Plains", 142, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 143, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 144, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 145, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 146, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Prison Term", 6, Rarity.UNCOMMON, mage.cards.p.PrisonTerm.class));
- cards.add(new SetCardInfo("Profane Command", 38, Rarity.RARE, mage.cards.p.ProfaneCommand.class));
- cards.add(new SetCardInfo("Pyrotechnics", 60, Rarity.UNCOMMON, mage.cards.p.Pyrotechnics.class));
- cards.add(new SetCardInfo("Qumulox", 12, Rarity.UNCOMMON, mage.cards.q.Qumulox.class));
- cards.add(new SetCardInfo("Rampant Growth", 76, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
- cards.add(new SetCardInfo("Razia, Boros Archangel", 92, Rarity.RARE, mage.cards.r.RaziaBorosArchangel.class));
- cards.add(new SetCardInfo("Reckless Charge", 61, Rarity.COMMON, mage.cards.r.RecklessCharge.class));
- cards.add(new SetCardInfo("Relentless Assault", 62, Rarity.RARE, mage.cards.r.RelentlessAssault.class));
- cards.add(new SetCardInfo("Relic of Progenitus", 124, Rarity.COMMON, mage.cards.r.RelicOfProgenitus.class));
- cards.add(new SetCardInfo("Rockslide Elemental", 63, Rarity.UNCOMMON, mage.cards.r.RockslideElemental.class));
- cards.add(new SetCardInfo("Rolling Thunder", 64, Rarity.COMMON, mage.cards.r.RollingThunder.class));
- cards.add(new SetCardInfo("Rorix Bladewing", 65, Rarity.RARE, mage.cards.r.RorixBladewing.class));
- cards.add(new SetCardInfo("Rotting Rats", 39, Rarity.COMMON, mage.cards.r.RottingRats.class));
- cards.add(new SetCardInfo("Rumbling Slum", 93, Rarity.RARE, mage.cards.r.RumblingSlum.class));
- cards.add(new SetCardInfo("Sarcomite Myr", 13, Rarity.COMMON, mage.cards.s.SarcomiteMyr.class));
- cards.add(new SetCardInfo("Savage Twister", 94, Rarity.UNCOMMON, mage.cards.s.SavageTwister.class));
- cards.add(new SetCardInfo("Search for Tomorrow", 77, Rarity.COMMON, mage.cards.s.SearchForTomorrow.class));
- cards.add(new SetCardInfo("Seat of the Synod", 136, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class));
- cards.add(new SetCardInfo("Serum Tank", 125, Rarity.UNCOMMON, mage.cards.s.SerumTank.class));
- cards.add(new SetCardInfo("Shepherd of Rot", 40, Rarity.COMMON, mage.cards.s.ShepherdOfRot.class));
- cards.add(new SetCardInfo("Shivan Oasis", 137, Rarity.UNCOMMON, mage.cards.s.ShivanOasis.class));
- cards.add(new SetCardInfo("Silverglade Elemental", 78, Rarity.COMMON, mage.cards.s.SilvergladeElemental.class));
- cards.add(new SetCardInfo("Silver Myr", 126, Rarity.COMMON, mage.cards.s.SilverMyr.class));
- cards.add(new SetCardInfo("Skeleton Shard", 127, Rarity.UNCOMMON, mage.cards.s.SkeletonShard.class));
- cards.add(new SetCardInfo("Sludge Strider", 95, Rarity.UNCOMMON, mage.cards.s.SludgeStrider.class));
- cards.add(new SetCardInfo("Smokebraider", 66, Rarity.COMMON, mage.cards.s.Smokebraider.class));
- cards.add(new SetCardInfo("Soulless One", 41, Rarity.UNCOMMON, mage.cards.s.SoullessOne.class));
- cards.add(new SetCardInfo("Soul Warden", 7, Rarity.COMMON, mage.cards.s.SoulWarden.class));
- cards.add(new SetCardInfo("Sunhome, Fortress of the Legion", 138, Rarity.UNCOMMON, mage.cards.s.SunhomeFortressOfTheLegion.class));
- cards.add(new SetCardInfo("Suntouched Myr", 128, Rarity.COMMON, mage.cards.s.SuntouchedMyr.class));
- cards.add(new SetCardInfo("Swamp", 151, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 152, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 153, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 154, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 155, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Syphon Mind", 42, Rarity.COMMON, mage.cards.s.SyphonMind.class));
- cards.add(new SetCardInfo("Syphon Soul", 43, Rarity.COMMON, mage.cards.s.SyphonSoul.class));
- cards.add(new SetCardInfo("Taurean Mauler", 67, Rarity.RARE, mage.cards.t.TaureanMauler.class));
- cards.add(new SetCardInfo("Terramorphic Expanse", 139, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
- cards.add(new SetCardInfo("Thirst for Knowledge", 14, Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class));
- cards.add(new SetCardInfo("Tornado Elemental", 79, Rarity.RARE, mage.cards.t.TornadoElemental.class));
- cards.add(new SetCardInfo("Tree of Tales", 140, Rarity.COMMON, mage.cards.t.TreeOfTales.class));
- cards.add(new SetCardInfo("Tribal Unity", 80, Rarity.UNCOMMON, mage.cards.t.TribalUnity.class));
- cards.add(new SetCardInfo("Undead Warchief", 44, Rarity.UNCOMMON, mage.cards.u.UndeadWarchief.class));
- cards.add(new SetCardInfo("Vault of Whispers", 141, Rarity.COMMON, mage.cards.v.VaultOfWhispers.class));
- cards.add(new SetCardInfo("Vedalken Engineer", 15, Rarity.COMMON, mage.cards.v.VedalkenEngineer.class));
- cards.add(new SetCardInfo("Verdant Force", 81, Rarity.RARE, mage.cards.v.VerdantForce.class));
- cards.add(new SetCardInfo("Whiplash Trap", 16, Rarity.COMMON, mage.cards.w.WhiplashTrap.class));
- cards.add(new SetCardInfo("Withered Wretch", 45, Rarity.UNCOMMON, mage.cards.w.WitheredWretch.class));
- cards.add(new SetCardInfo("Wizard Replica", 129, Rarity.COMMON, mage.cards.w.WizardReplica.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author BetaSteward_at_googlemail.com
+ */
+public final class Planechase extends ExpansionSet {
+
+ private static final Planechase instance = new Planechase();
+
+ public static Planechase getInstance() {
+ return instance;
+ }
+
+ private Planechase() {
+ super("Planechase", "HOP", ExpansionSet.buildDate(2009, 8, 4), SetType.SUPPLEMENTAL);
+ this.blockName = "Command Zone";
+ cards.add(new SetCardInfo("Akroma's Vengeance", 1, Rarity.RARE, mage.cards.a.AkromasVengeance.class));
+ cards.add(new SetCardInfo("Ancient Den", 130, Rarity.COMMON, mage.cards.a.AncientDen.class));
+ cards.add(new SetCardInfo("Arcbound Crusher", 105, Rarity.UNCOMMON, mage.cards.a.ArcboundCrusher.class));
+ cards.add(new SetCardInfo("Arcbound Slith", 106, Rarity.UNCOMMON, mage.cards.a.ArcboundSlith.class));
+ cards.add(new SetCardInfo("Arc Lightning", 46, Rarity.COMMON, mage.cards.a.ArcLightning.class));
+ cards.add(new SetCardInfo("Arsenal Thresher", 96, Rarity.COMMON, mage.cards.a.ArsenalThresher.class));
+ cards.add(new SetCardInfo("Ascendant Evincar", 17, Rarity.RARE, mage.cards.a.AscendantEvincar.class));
+ cards.add(new SetCardInfo("Balefire Liege", 97, Rarity.RARE, mage.cards.b.BalefireLiege.class));
+ cards.add(new SetCardInfo("Battlegate Mimic", 98, Rarity.COMMON, mage.cards.b.BattlegateMimic.class));
+ cards.add(new SetCardInfo("Beacon of Unrest", 18, Rarity.RARE, mage.cards.b.BeaconOfUnrest.class));
+ cards.add(new SetCardInfo("Beast Hunt", 68, Rarity.COMMON, mage.cards.b.BeastHunt.class));
+ cards.add(new SetCardInfo("Beseech the Queen", 19, Rarity.UNCOMMON, mage.cards.b.BeseechTheQueen.class));
+ cards.add(new SetCardInfo("Blaze", 47, Rarity.UNCOMMON, mage.cards.b.Blaze.class));
+ cards.add(new SetCardInfo("Bogardan Firefiend", 48, Rarity.COMMON, mage.cards.b.BogardanFirefiend.class));
+ cards.add(new SetCardInfo("Bogardan Rager", 49, Rarity.COMMON, mage.cards.b.BogardanRager.class));
+ cards.add(new SetCardInfo("Boros Garrison", 131, Rarity.COMMON, mage.cards.b.BorosGarrison.class));
+ cards.add(new SetCardInfo("Boros Guildmage", 99, Rarity.UNCOMMON, mage.cards.b.BorosGuildmage.class));
+ cards.add(new SetCardInfo("Boros Signet", 107, Rarity.COMMON, mage.cards.b.BorosSignet.class));
+ cards.add(new SetCardInfo("Boros Swiftblade", 82, Rarity.UNCOMMON, mage.cards.b.BorosSwiftblade.class));
+ cards.add(new SetCardInfo("Bosh, Iron Golem", 108, Rarity.RARE, mage.cards.b.BoshIronGolem.class));
+ cards.add(new SetCardInfo("Branching Bolt", 83, Rarity.COMMON, mage.cards.b.BranchingBolt.class));
+ cards.add(new SetCardInfo("Briarhorn", 69, Rarity.UNCOMMON, mage.cards.b.Briarhorn.class));
+ cards.add(new SetCardInfo("Broodstar", 8, Rarity.RARE, mage.cards.b.Broodstar.class));
+ cards.add(new SetCardInfo("Browbeat", 50, Rarity.UNCOMMON, mage.cards.b.Browbeat.class));
+ cards.add(new SetCardInfo("Bull Cerodon", 84, Rarity.UNCOMMON, mage.cards.b.BullCerodon.class));
+ cards.add(new SetCardInfo("Cabal Coffers", 132, Rarity.UNCOMMON, mage.cards.c.CabalCoffers.class));
+ cards.add(new SetCardInfo("Cadaverous Knight", 20, Rarity.COMMON, mage.cards.c.CadaverousKnight.class));
+ cards.add(new SetCardInfo("Cerodon Yearling", 86, Rarity.COMMON, mage.cards.c.CerodonYearling.class));
+ cards.add(new SetCardInfo("Cinder Elemental", 51, Rarity.UNCOMMON, mage.cards.c.CinderElemental.class));
+ cards.add(new SetCardInfo("Cone of Flame", 52, Rarity.UNCOMMON, mage.cards.c.ConeOfFlame.class));
+ cards.add(new SetCardInfo("Congregate", 2, Rarity.COMMON, mage.cards.c.Congregate.class));
+ cards.add(new SetCardInfo("Consume Spirit", 21, Rarity.UNCOMMON, mage.cards.c.ConsumeSpirit.class));
+ cards.add(new SetCardInfo("Copper Myr", 109, Rarity.COMMON, mage.cards.c.CopperMyr.class));
+ cards.add(new SetCardInfo("Corpse Harvester", 22, Rarity.UNCOMMON, mage.cards.c.CorpseHarvester.class));
+ cards.add(new SetCardInfo("Cranial Plating", 110, Rarity.COMMON, mage.cards.c.CranialPlating.class));
+ cards.add(new SetCardInfo("Cruel Revival", 23, Rarity.COMMON, mage.cards.c.CruelRevival.class));
+ cards.add(new SetCardInfo("Dark Ritual", 24, Rarity.COMMON, mage.cards.d.DarkRitual.class));
+ cards.add(new SetCardInfo("Darksteel Forge", 111, Rarity.RARE, mage.cards.d.DarksteelForge.class));
+ cards.add(new SetCardInfo("Death Baron", 25, Rarity.RARE, mage.cards.d.DeathBaron.class));
+ cards.add(new SetCardInfo("Door to Nothingness", 112, Rarity.RARE, mage.cards.d.DoorToNothingness.class));
+ cards.add(new SetCardInfo("Double Cleave", 100, Rarity.COMMON, mage.cards.d.DoubleCleave.class));
+ cards.add(new SetCardInfo("Dregscape Zombie", 26, Rarity.COMMON, mage.cards.d.DregscapeZombie.class));
+ cards.add(new SetCardInfo("Duergar Hedge-Mage", 101, Rarity.UNCOMMON, mage.cards.d.DuergarHedgeMage.class));
+ cards.add(new SetCardInfo("Etched Oracle", 113, Rarity.UNCOMMON, mage.cards.e.EtchedOracle.class));
+ cards.add(new SetCardInfo("Explosive Vegetation", 70, Rarity.UNCOMMON, mage.cards.e.ExplosiveVegetation.class));
+ cards.add(new SetCardInfo("Fabricate", 9, Rarity.UNCOMMON, mage.cards.f.Fabricate.class));
+ cards.add(new SetCardInfo("Fertile Ground", 71, Rarity.COMMON, mage.cards.f.FertileGround.class));
+ cards.add(new SetCardInfo("Fertilid", 72, Rarity.COMMON, mage.cards.f.Fertilid.class));
+ cards.add(new SetCardInfo("Festering Goblin", 27, Rarity.COMMON, mage.cards.f.FesteringGoblin.class));
+ cards.add(new SetCardInfo("Fires of Yavimaya", 87, Rarity.UNCOMMON, mage.cards.f.FiresOfYavimaya.class));
+ cards.add(new SetCardInfo("Flamekin Harbinger", 53, Rarity.UNCOMMON, mage.cards.f.FlamekinHarbinger.class));
+ cards.add(new SetCardInfo("Flametongue Kavu", 54, Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class));
+ cards.add(new SetCardInfo("Forest", 165, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 166, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 167, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 168, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 169, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forgotten Ancient", 73, Rarity.RARE, mage.cards.f.ForgottenAncient.class));
+ cards.add(new SetCardInfo("Furnace of Rath", 55, Rarity.RARE, mage.cards.f.FurnaceOfRath.class));
+ cards.add(new SetCardInfo("Glory of Warfare", 88, Rarity.RARE, mage.cards.g.GloryOfWarfare.class));
+ cards.add(new SetCardInfo("Goblin Offensive", 56, Rarity.UNCOMMON, mage.cards.g.GoblinOffensive.class));
+ cards.add(new SetCardInfo("Gold Myr", 114, Rarity.COMMON, mage.cards.g.GoldMyr.class));
+ cards.add(new SetCardInfo("Gravedigger", 29, Rarity.COMMON, mage.cards.g.Gravedigger.class));
+ cards.add(new SetCardInfo("Grave Pact", 28, Rarity.RARE, mage.cards.g.GravePact.class));
+ cards.add(new SetCardInfo("Great Furnace", 133, Rarity.COMMON, mage.cards.g.GreatFurnace.class));
+ cards.add(new SetCardInfo("Gruul Turf", 134, Rarity.COMMON, mage.cards.g.GruulTurf.class));
+ cards.add(new SetCardInfo("Hearthfire Hobgoblin", 102, Rarity.UNCOMMON, mage.cards.h.HearthfireHobgoblin.class));
+ cards.add(new SetCardInfo("Helldozer", 30, Rarity.RARE, mage.cards.h.Helldozer.class));
+ cards.add(new SetCardInfo("Hideous End", 31, Rarity.COMMON, mage.cards.h.HideousEnd.class));
+ cards.add(new SetCardInfo("Hull Breach", 89, Rarity.COMMON, mage.cards.h.HullBreach.class));
+ cards.add(new SetCardInfo("Incremental Blight", 32, Rarity.UNCOMMON, mage.cards.i.IncrementalBlight.class));
+ cards.add(new SetCardInfo("Innocent Blood", 33, Rarity.COMMON, mage.cards.i.InnocentBlood.class));
+ cards.add(new SetCardInfo("Insurrection", 57, Rarity.RARE, mage.cards.i.Insurrection.class));
+ cards.add(new SetCardInfo("Iron Myr", 115, Rarity.COMMON, mage.cards.i.IronMyr.class));
+ cards.add(new SetCardInfo("Island", 147, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 148, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 149, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 150, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ivy Elemental", 74, Rarity.RARE, mage.cards.i.IvyElemental.class));
+ cards.add(new SetCardInfo("Keep Watch", 10, Rarity.COMMON, mage.cards.k.KeepWatch.class));
+ cards.add(new SetCardInfo("Keldon Champion", 58, Rarity.UNCOMMON, mage.cards.k.KeldonChampion.class));
+ cards.add(new SetCardInfo("Kor Sanctifiers", 3, Rarity.COMMON, mage.cards.k.KorSanctifiers.class));
+ cards.add(new SetCardInfo("Leaden Myr", 116, Rarity.COMMON, mage.cards.l.LeadenMyr.class));
+ cards.add(new SetCardInfo("Leechridden Swamp", 135, Rarity.UNCOMMON, mage.cards.l.LeechriddenSwamp.class));
+ cards.add(new SetCardInfo("Lightning Helix", 90, Rarity.UNCOMMON, mage.cards.l.LightningHelix.class));
+ cards.add(new SetCardInfo("Living Hive", 75, Rarity.RARE, mage.cards.l.LivingHive.class));
+ cards.add(new SetCardInfo("Lodestone Myr", 117, Rarity.RARE, mage.cards.l.LodestoneMyr.class));
+ cards.add(new SetCardInfo("Loxodon Warhammer", 118, Rarity.RARE, mage.cards.l.LoxodonWarhammer.class));
+ cards.add(new SetCardInfo("Mage Slayer", 91, Rarity.UNCOMMON, mage.cards.m.MageSlayer.class));
+ cards.add(new SetCardInfo("Mask of Memory", 119, Rarity.UNCOMMON, mage.cards.m.MaskOfMemory.class));
+ cards.add(new SetCardInfo("Master of Etherium", 11, Rarity.RARE, mage.cards.m.MasterOfEtherium.class));
+ cards.add(new SetCardInfo("Menacing Ogre", 59, Rarity.RARE, mage.cards.m.MenacingOgre.class));
+ cards.add(new SetCardInfo("Mountain", 156, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 157, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 158, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 159, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 160, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 161, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 162, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 163, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 164, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Myr Enforcer", 120, Rarity.COMMON, mage.cards.m.MyrEnforcer.class));
+ cards.add(new SetCardInfo("Nefashu", 34, Rarity.RARE, mage.cards.n.Nefashu.class));
+ cards.add(new SetCardInfo("Noxious Ghoul", 35, Rarity.UNCOMMON, mage.cards.n.NoxiousGhoul.class));
+ cards.add(new SetCardInfo("Nuisance Engine", 121, Rarity.UNCOMMON, mage.cards.n.NuisanceEngine.class));
+ cards.add(new SetCardInfo("Oblivion Ring", 4, Rarity.COMMON, mage.cards.o.OblivionRing.class));
+ cards.add(new SetCardInfo("Order // Chaos", 104, Rarity.UNCOMMON, mage.cards.o.OrderChaos.class));
+ cards.add(new SetCardInfo("Orim's Thunder", 5, Rarity.COMMON, mage.cards.o.OrimsThunder.class));
+ cards.add(new SetCardInfo("Pentad Prism", 122, Rarity.COMMON, mage.cards.p.PentadPrism.class));
+ cards.add(new SetCardInfo("Pentavus", 123, Rarity.RARE, mage.cards.p.Pentavus.class));
+ cards.add(new SetCardInfo("Phyrexian Arena", 36, Rarity.RARE, mage.cards.p.PhyrexianArena.class));
+ cards.add(new SetCardInfo("Phyrexian Ghoul", 37, Rarity.COMMON, mage.cards.p.PhyrexianGhoul.class));
+ cards.add(new SetCardInfo("Plains", 142, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 143, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 144, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 145, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 146, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Prison Term", 6, Rarity.UNCOMMON, mage.cards.p.PrisonTerm.class));
+ cards.add(new SetCardInfo("Profane Command", 38, Rarity.RARE, mage.cards.p.ProfaneCommand.class));
+ cards.add(new SetCardInfo("Pyrotechnics", 60, Rarity.UNCOMMON, mage.cards.p.Pyrotechnics.class));
+ cards.add(new SetCardInfo("Qumulox", 12, Rarity.UNCOMMON, mage.cards.q.Qumulox.class));
+ cards.add(new SetCardInfo("Rampant Growth", 76, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
+ cards.add(new SetCardInfo("Razia, Boros Archangel", 92, Rarity.RARE, mage.cards.r.RaziaBorosArchangel.class));
+ cards.add(new SetCardInfo("Reckless Charge", 61, Rarity.COMMON, mage.cards.r.RecklessCharge.class));
+ cards.add(new SetCardInfo("Relentless Assault", 62, Rarity.RARE, mage.cards.r.RelentlessAssault.class));
+ cards.add(new SetCardInfo("Relic of Progenitus", 124, Rarity.COMMON, mage.cards.r.RelicOfProgenitus.class));
+ cards.add(new SetCardInfo("Rockslide Elemental", 63, Rarity.UNCOMMON, mage.cards.r.RockslideElemental.class));
+ cards.add(new SetCardInfo("Rolling Thunder", 64, Rarity.COMMON, mage.cards.r.RollingThunder.class));
+ cards.add(new SetCardInfo("Rorix Bladewing", 65, Rarity.RARE, mage.cards.r.RorixBladewing.class));
+ cards.add(new SetCardInfo("Rotting Rats", 39, Rarity.COMMON, mage.cards.r.RottingRats.class));
+ cards.add(new SetCardInfo("Rumbling Slum", 93, Rarity.RARE, mage.cards.r.RumblingSlum.class));
+ cards.add(new SetCardInfo("Sarcomite Myr", 13, Rarity.COMMON, mage.cards.s.SarcomiteMyr.class));
+ cards.add(new SetCardInfo("Savage Twister", 94, Rarity.UNCOMMON, mage.cards.s.SavageTwister.class));
+ cards.add(new SetCardInfo("Search for Tomorrow", 77, Rarity.COMMON, mage.cards.s.SearchForTomorrow.class));
+ cards.add(new SetCardInfo("Seat of the Synod", 136, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class));
+ cards.add(new SetCardInfo("Serum Tank", 125, Rarity.UNCOMMON, mage.cards.s.SerumTank.class));
+ cards.add(new SetCardInfo("Shepherd of Rot", 40, Rarity.COMMON, mage.cards.s.ShepherdOfRot.class));
+ cards.add(new SetCardInfo("Shivan Oasis", 137, Rarity.UNCOMMON, mage.cards.s.ShivanOasis.class));
+ cards.add(new SetCardInfo("Silverglade Elemental", 78, Rarity.COMMON, mage.cards.s.SilvergladeElemental.class));
+ cards.add(new SetCardInfo("Silver Myr", 126, Rarity.COMMON, mage.cards.s.SilverMyr.class));
+ cards.add(new SetCardInfo("Skeleton Shard", 127, Rarity.UNCOMMON, mage.cards.s.SkeletonShard.class));
+ cards.add(new SetCardInfo("Sludge Strider", 95, Rarity.UNCOMMON, mage.cards.s.SludgeStrider.class));
+ cards.add(new SetCardInfo("Smokebraider", 66, Rarity.COMMON, mage.cards.s.Smokebraider.class));
+ cards.add(new SetCardInfo("Soulless One", 41, Rarity.UNCOMMON, mage.cards.s.SoullessOne.class));
+ cards.add(new SetCardInfo("Soul Warden", 7, Rarity.COMMON, mage.cards.s.SoulWarden.class));
+ cards.add(new SetCardInfo("Sunhome, Fortress of the Legion", 138, Rarity.UNCOMMON, mage.cards.s.SunhomeFortressOfTheLegion.class));
+ cards.add(new SetCardInfo("Suntouched Myr", 128, Rarity.COMMON, mage.cards.s.SuntouchedMyr.class));
+ cards.add(new SetCardInfo("Swamp", 151, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 152, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 153, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 154, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 155, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Syphon Mind", 42, Rarity.COMMON, mage.cards.s.SyphonMind.class));
+ cards.add(new SetCardInfo("Syphon Soul", 43, Rarity.COMMON, mage.cards.s.SyphonSoul.class));
+ cards.add(new SetCardInfo("Taurean Mauler", 67, Rarity.RARE, mage.cards.t.TaureanMauler.class));
+ cards.add(new SetCardInfo("Terramorphic Expanse", 139, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
+ cards.add(new SetCardInfo("Thirst for Knowledge", 14, Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class));
+ cards.add(new SetCardInfo("Tornado Elemental", 79, Rarity.RARE, mage.cards.t.TornadoElemental.class));
+ cards.add(new SetCardInfo("Tree of Tales", 140, Rarity.COMMON, mage.cards.t.TreeOfTales.class));
+ cards.add(new SetCardInfo("Tribal Unity", 80, Rarity.UNCOMMON, mage.cards.t.TribalUnity.class));
+ cards.add(new SetCardInfo("Undead Warchief", 44, Rarity.UNCOMMON, mage.cards.u.UndeadWarchief.class));
+ cards.add(new SetCardInfo("Vault of Whispers", 141, Rarity.COMMON, mage.cards.v.VaultOfWhispers.class));
+ cards.add(new SetCardInfo("Vedalken Engineer", 15, Rarity.COMMON, mage.cards.v.VedalkenEngineer.class));
+ cards.add(new SetCardInfo("Verdant Force", 81, Rarity.RARE, mage.cards.v.VerdantForce.class));
+ cards.add(new SetCardInfo("Whiplash Trap", 16, Rarity.COMMON, mage.cards.w.WhiplashTrap.class));
+ cards.add(new SetCardInfo("Withered Wretch", 45, Rarity.UNCOMMON, mage.cards.w.WitheredWretch.class));
+ cards.add(new SetCardInfo("Wizard Replica", 129, Rarity.COMMON, mage.cards.w.WizardReplica.class));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/Planechase2012.java b/Mage.Sets/src/mage/sets/Planechase2012.java
index d2fc87f364d..3c3c9ae291b 100644
--- a/Mage.Sets/src/mage/sets/Planechase2012.java
+++ b/Mage.Sets/src/mage/sets/Planechase2012.java
@@ -1,206 +1,206 @@
-/*
-* 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author LevelX2
- */
-public class Planechase2012 extends ExpansionSet {
-
- private static final Planechase2012 instance = new Planechase2012();
-
- public static Planechase2012 getInstance() {
- return instance;
- }
-
- private Planechase2012() {
- super("Planechase 2012 Edition", "PC2", ExpansionSet.buildDate(2012, 6, 1), SetType.SUPPLEMENTAL);
- this.blockName = "Command Zone";
- cards.add(new SetCardInfo("Arc Trail", 39, Rarity.UNCOMMON, mage.cards.a.ArcTrail.class));
- cards.add(new SetCardInfo("Armillary Sphere", 108, Rarity.COMMON, mage.cards.a.ArmillarySphere.class));
- cards.add(new SetCardInfo("Armored Griffin", 1, Rarity.UNCOMMON, mage.cards.a.ArmoredGriffin.class));
- cards.add(new SetCardInfo("Assassinate", 30, Rarity.COMMON, mage.cards.a.Assassinate.class));
- cards.add(new SetCardInfo("Augury Owl", 14, Rarity.COMMON, mage.cards.a.AuguryOwl.class));
- cards.add(new SetCardInfo("Aura Gnarlid", 55, Rarity.COMMON, mage.cards.a.AuraGnarlid.class));
- cards.add(new SetCardInfo("Auramancer", 2, Rarity.COMMON, mage.cards.a.Auramancer.class));
- cards.add(new SetCardInfo("Auratouched Mage", 3, Rarity.UNCOMMON, mage.cards.a.AuratouchedMage.class));
- cards.add(new SetCardInfo("Awakening Zone", 56, Rarity.RARE, mage.cards.a.AwakeningZone.class));
- cards.add(new SetCardInfo("Baleful Strix", 82, Rarity.UNCOMMON, mage.cards.b.BalefulStrix.class));
- cards.add(new SetCardInfo("Beast Within", 57, Rarity.UNCOMMON, mage.cards.b.BeastWithin.class));
- cards.add(new SetCardInfo("Beetleback Chief", 40, Rarity.UNCOMMON, mage.cards.b.BeetlebackChief.class));
- cards.add(new SetCardInfo("Bituminous Blast", 83, Rarity.UNCOMMON, mage.cards.b.BituminousBlast.class));
- cards.add(new SetCardInfo("Bloodbraid Elf", 84, Rarity.UNCOMMON, mage.cards.b.BloodbraidElf.class));
- cards.add(new SetCardInfo("Boar Umbra", 58, Rarity.UNCOMMON, mage.cards.b.BoarUmbra.class));
- cards.add(new SetCardInfo("Bramble Elemental", 59, Rarity.COMMON, mage.cards.b.BrambleElemental.class));
- cards.add(new SetCardInfo("Brindle Shoat", 60, Rarity.UNCOMMON, mage.cards.b.BrindleShoat.class));
- cards.add(new SetCardInfo("Brutalizer Exarch", 61, Rarity.UNCOMMON, mage.cards.b.BrutalizerExarch.class));
- cards.add(new SetCardInfo("Cadaver Imp", 31, Rarity.COMMON, mage.cards.c.CadaverImp.class));
- cards.add(new SetCardInfo("Cage of Hands", 4, Rarity.COMMON, mage.cards.c.CageOfHands.class));
- cards.add(new SetCardInfo("Cancel", 15, Rarity.COMMON, mage.cards.c.Cancel.class));
- cards.add(new SetCardInfo("Celestial Ancient", 5, Rarity.RARE, mage.cards.c.CelestialAncient.class));
- cards.add(new SetCardInfo("Concentrate", 16, Rarity.UNCOMMON, mage.cards.c.Concentrate.class));
- cards.add(new SetCardInfo("Cultivate", 62, Rarity.COMMON, mage.cards.c.Cultivate.class));
- cards.add(new SetCardInfo("Dark Hatchling", 32, Rarity.RARE, mage.cards.d.DarkHatchling.class));
- cards.add(new SetCardInfo("Deny Reality", 85, Rarity.COMMON, mage.cards.d.DenyReality.class));
- cards.add(new SetCardInfo("Dimir Aqueduct", 116, Rarity.COMMON, mage.cards.d.DimirAqueduct.class));
- cards.add(new SetCardInfo("Dimir Infiltrator", 86, Rarity.COMMON, mage.cards.d.DimirInfiltrator.class));
- cards.add(new SetCardInfo("Dowsing Shaman", 63, Rarity.UNCOMMON, mage.cards.d.DowsingShaman.class));
- cards.add(new SetCardInfo("Dragonlair Spider", 87, Rarity.RARE, mage.cards.d.DragonlairSpider.class));
- cards.add(new SetCardInfo("Dreampod Druid", 64, Rarity.RARE, mage.cards.d.DreampodDruid.class));
- cards.add(new SetCardInfo("Elderwood Scion", 88, Rarity.RARE, mage.cards.e.ElderwoodScion.class));
- cards.add(new SetCardInfo("Enigma Sphinx", 89, Rarity.RARE, mage.cards.e.EnigmaSphinx.class));
- cards.add(new SetCardInfo("Enlisted Wurm", 90, Rarity.UNCOMMON, mage.cards.e.EnlistedWurm.class));
- cards.add(new SetCardInfo("Erratic Explosion", 41, Rarity.COMMON, mage.cards.e.ErraticExplosion.class));
- cards.add(new SetCardInfo("Etherium-Horn Sorcerer", 91, Rarity.RARE, mage.cards.e.EtheriumHornSorcerer.class));
- cards.add(new SetCardInfo("Exotic Orchard", 117, Rarity.RARE, mage.cards.e.ExoticOrchard.class));
- cards.add(new SetCardInfo("Farsight Mask", 109, Rarity.UNCOMMON, mage.cards.f.FarsightMask.class));
- cards.add(new SetCardInfo("Felidar Umbra", 6, Rarity.UNCOMMON, mage.cards.f.FelidarUmbra.class));
- cards.add(new SetCardInfo("Fiery Conclusion", 42, Rarity.COMMON, mage.cards.f.FieryConclusion.class));
- cards.add(new SetCardInfo("Fiery Fall", 43, Rarity.COMMON, mage.cards.f.FieryFall.class));
- cards.add(new SetCardInfo("Fires of Yavimaya", 92, Rarity.UNCOMMON, mage.cards.f.FiresOfYavimaya.class));
- cards.add(new SetCardInfo("Flayer Husk", 110, Rarity.COMMON, mage.cards.f.FlayerHusk.class));
- cards.add(new SetCardInfo("Fling", 44, Rarity.COMMON, mage.cards.f.Fling.class));
- cards.add(new SetCardInfo("Forest", 151, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 152, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 153, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 154, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 155, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 156, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Fusion Elemental", 93, Rarity.UNCOMMON, mage.cards.f.FusionElemental.class));
- cards.add(new SetCardInfo("Ghostly Prison", 7, Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class));
- cards.add(new SetCardInfo("Glen Elendra Liege", 94, Rarity.RARE, mage.cards.g.GlenElendraLiege.class));
- cards.add(new SetCardInfo("Gluttonous Slime", 65, Rarity.UNCOMMON, mage.cards.g.GluttonousSlime.class));
- cards.add(new SetCardInfo("Graypelt Refuge", 118, Rarity.UNCOMMON, mage.cards.g.GraypeltRefuge.class));
- cards.add(new SetCardInfo("Gruul Turf", 119, Rarity.COMMON, mage.cards.g.GruulTurf.class));
- cards.add(new SetCardInfo("Guard Gomazoa", 17, Rarity.UNCOMMON, mage.cards.g.GuardGomazoa.class));
- cards.add(new SetCardInfo("Hellion Eruption", 45, Rarity.RARE, mage.cards.h.HellionEruption.class));
- cards.add(new SetCardInfo("Hellkite Hatchling", 95, Rarity.UNCOMMON, mage.cards.h.HellkiteHatchling.class));
- cards.add(new SetCardInfo("Higure, the Still Wind", 18, Rarity.RARE, mage.cards.h.HigureTheStillWind.class));
- cards.add(new SetCardInfo("Hissing Iguanar", 46, Rarity.COMMON, mage.cards.h.HissingIguanar.class));
- cards.add(new SetCardInfo("Hyena Umbra", 8, Rarity.COMMON, mage.cards.h.HyenaUmbra.class));
- cards.add(new SetCardInfo("Illusory Angel", 19, Rarity.UNCOMMON, mage.cards.i.IllusoryAngel.class));
- cards.add(new SetCardInfo("Indrik Umbra", 96, Rarity.RARE, mage.cards.i.IndrikUmbra.class));
- cards.add(new SetCardInfo("Ink-Eyes, Servant of Oni", 33, Rarity.RARE, mage.cards.i.InkEyesServantOfOni.class));
- cards.add(new SetCardInfo("Inkfathom Witch", 97, Rarity.UNCOMMON, mage.cards.i.InkfathomWitch.class));
- cards.add(new SetCardInfo("Island", 137, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 138, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 139, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 140, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 141, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Jwar Isle Refuge", 120, Rarity.UNCOMMON, mage.cards.j.JwarIsleRefuge.class));
- cards.add(new SetCardInfo("Kathari Remnant", 98, Rarity.UNCOMMON, mage.cards.k.KathariRemnant.class));
- cards.add(new SetCardInfo("Kazandu Refuge", 121, Rarity.UNCOMMON, mage.cards.k.KazanduRefuge.class));
- cards.add(new SetCardInfo("Khalni Garden", 122, Rarity.COMMON, mage.cards.k.KhalniGarden.class));
- cards.add(new SetCardInfo("Kor Spiritdancer", 9, Rarity.RARE, mage.cards.k.KorSpiritdancer.class));
- cards.add(new SetCardInfo("Krond the Dawn-Clad", 99, Rarity.MYTHIC, mage.cards.k.KrondTheDawnClad.class));
- cards.add(new SetCardInfo("Krosan Verge", 123, Rarity.UNCOMMON, mage.cards.k.KrosanVerge.class));
- cards.add(new SetCardInfo("Last Stand", 100, Rarity.RARE, mage.cards.l.LastStand.class));
- cards.add(new SetCardInfo("Liliana's Specter", 34, Rarity.COMMON, mage.cards.l.LilianasSpecter.class));
- cards.add(new SetCardInfo("Lumberknot", 66, Rarity.UNCOMMON, mage.cards.l.Lumberknot.class));
- cards.add(new SetCardInfo("Maelstrom Wanderer", 101, Rarity.MYTHIC, mage.cards.m.MaelstromWanderer.class));
- cards.add(new SetCardInfo("Mammoth Umbra", 10, Rarity.UNCOMMON, mage.cards.m.MammothUmbra.class));
- cards.add(new SetCardInfo("Mark of Mutiny", 47, Rarity.UNCOMMON, mage.cards.m.MarkOfMutiny.class));
- cards.add(new SetCardInfo("Mass Mutiny", 48, Rarity.RARE, mage.cards.m.MassMutiny.class));
- cards.add(new SetCardInfo("Mistblade Shinobi", 20, Rarity.COMMON, mage.cards.m.MistbladeShinobi.class));
- cards.add(new SetCardInfo("Mitotic Slime", 67, Rarity.RARE, mage.cards.m.MitoticSlime.class));
- cards.add(new SetCardInfo("Mountain", 147, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 148, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 149, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 150, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mudbutton Torchrunner", 49, Rarity.COMMON, mage.cards.m.MudbuttonTorchrunner.class));
- cards.add(new SetCardInfo("Mycoloth", 68, Rarity.RARE, mage.cards.m.Mycoloth.class));
- cards.add(new SetCardInfo("Nest Invader", 69, Rarity.COMMON, mage.cards.n.NestInvader.class));
- cards.add(new SetCardInfo("Ninja of the Deep Hours", 21, Rarity.COMMON, mage.cards.n.NinjaOfTheDeepHours.class));
- cards.add(new SetCardInfo("Noggle Ransacker", 102, Rarity.UNCOMMON, mage.cards.n.NoggleRansacker.class));
- cards.add(new SetCardInfo("Nullmage Advocate", 70, Rarity.COMMON, mage.cards.n.NullmageAdvocate.class));
- cards.add(new SetCardInfo("Okiba-Gang Shinobi", 35, Rarity.COMMON, mage.cards.o.OkibaGangShinobi.class));
- cards.add(new SetCardInfo("Ondu Giant", 71, Rarity.COMMON, mage.cards.o.OnduGiant.class));
- cards.add(new SetCardInfo("Overrun", 72, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
- cards.add(new SetCardInfo("Penumbra Spider", 73, Rarity.COMMON, mage.cards.p.PenumbraSpider.class));
- cards.add(new SetCardInfo("Peregrine Drake", 22, Rarity.UNCOMMON, mage.cards.p.PeregrineDrake.class));
- cards.add(new SetCardInfo("Plains", 132, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 133, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 134, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 135, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 136, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Pollenbright Wings", 103, Rarity.UNCOMMON, mage.cards.p.PollenbrightWings.class));
- cards.add(new SetCardInfo("Predatory Urge", 74, Rarity.RARE, mage.cards.p.PredatoryUrge.class));
- cards.add(new SetCardInfo("Preyseizer Dragon", 50, Rarity.RARE, mage.cards.p.PreyseizerDragon.class));
- cards.add(new SetCardInfo("Primal Plasma", 23, Rarity.COMMON, mage.cards.p.PrimalPlasma.class));
- cards.add(new SetCardInfo("Quiet Disrepair", 75, Rarity.COMMON, mage.cards.q.QuietDisrepair.class));
- cards.add(new SetCardInfo("Quietus Spike", 112, Rarity.RARE, mage.cards.q.QuietusSpike.class));
- cards.add(new SetCardInfo("Rancor", 76, Rarity.COMMON, mage.cards.r.Rancor.class));
- cards.add(new SetCardInfo("Rivals' Duel", 51, Rarity.UNCOMMON, mage.cards.r.RivalsDuel.class));
- cards.add(new SetCardInfo("Rupture Spire", 124, Rarity.COMMON, mage.cards.r.RuptureSpire.class));
- cards.add(new SetCardInfo("Sai of the Shinobi", 113, Rarity.UNCOMMON, mage.cards.s.SaiOfTheShinobi.class));
- cards.add(new SetCardInfo("Sakashima's Student", 24, Rarity.RARE, mage.cards.s.SakashimasStudent.class));
- cards.add(new SetCardInfo("See Beyond", 25, Rarity.COMMON, mage.cards.s.SeeBeyond.class));
- cards.add(new SetCardInfo("Selesnya Sanctuary", 125, Rarity.COMMON, mage.cards.s.SelesnyaSanctuary.class));
- cards.add(new SetCardInfo("Shardless Agent", 104, Rarity.UNCOMMON, mage.cards.s.ShardlessAgent.class));
- cards.add(new SetCardInfo("Shimmering Grotto", 126, Rarity.COMMON, mage.cards.s.ShimmeringGrotto.class));
- cards.add(new SetCardInfo("Sigil of the Empty Throne", 11, Rarity.RARE, mage.cards.s.SigilOfTheEmptyThrone.class));
- cards.add(new SetCardInfo("Silent-Blade Oni", 105, Rarity.RARE, mage.cards.s.SilentBladeOni.class));
- cards.add(new SetCardInfo("Silhana Ledgewalker", 77, Rarity.COMMON, mage.cards.s.SilhanaLedgewalker.class));
- cards.add(new SetCardInfo("Skarrg, the Rage Pits", 127, Rarity.UNCOMMON, mage.cards.s.SkarrgTheRagePits.class));
- cards.add(new SetCardInfo("Skullsnatcher", 36, Rarity.COMMON, mage.cards.s.Skullsnatcher.class));
- cards.add(new SetCardInfo("Snake Umbra", 78, Rarity.COMMON, mage.cards.s.SnakeUmbra.class));
- cards.add(new SetCardInfo("Spirit Mantle", 12, Rarity.UNCOMMON, mage.cards.s.SpiritMantle.class));
- cards.add(new SetCardInfo("Sunken Hope", 26, Rarity.RARE, mage.cards.s.SunkenHope.class));
- cards.add(new SetCardInfo("Swamp", 142, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 143, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 144, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 145, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 146, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Tainted Isle", 128, Rarity.UNCOMMON, mage.cards.t.TaintedIsle.class));
- cards.add(new SetCardInfo("Terramorphic Expanse", 129, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
- cards.add(new SetCardInfo("Thorn-Thrash Viashino", 52, Rarity.COMMON, mage.cards.t.ThornThrashViashino.class));
- cards.add(new SetCardInfo("Thran Golem", 114, Rarity.UNCOMMON, mage.cards.t.ThranGolem.class));
- cards.add(new SetCardInfo("Three Dreams", 13, Rarity.RARE, mage.cards.t.ThreeDreams.class));
- cards.add(new SetCardInfo("Throat Slitter", 37, Rarity.UNCOMMON, mage.cards.t.ThroatSlitter.class));
- cards.add(new SetCardInfo("Thromok the Insatiable", 106, Rarity.MYTHIC, mage.cards.t.ThromokTheInsatiable.class));
- cards.add(new SetCardInfo("Thunder-Thrash Elder", 53, Rarity.UNCOMMON, mage.cards.t.ThunderThrashElder.class));
- cards.add(new SetCardInfo("Tormented Soul", 38, Rarity.COMMON, mage.cards.t.TormentedSoul.class));
- cards.add(new SetCardInfo("Tukatongue Thallid", 79, Rarity.COMMON, mage.cards.t.TukatongueThallid.class));
- cards.add(new SetCardInfo("Vela the Night-Clad", 107, Rarity.MYTHIC, mage.cards.v.VelaTheNightClad.class));
- cards.add(new SetCardInfo("Viridian Emissary", 80, Rarity.COMMON, mage.cards.v.ViridianEmissary.class));
- cards.add(new SetCardInfo("Vitu-Ghazi, the City-Tree", 130, Rarity.UNCOMMON, mage.cards.v.VituGhaziTheCityTree.class));
- cards.add(new SetCardInfo("Vivid Creek", 131, Rarity.UNCOMMON, mage.cards.v.VividCreek.class));
- cards.add(new SetCardInfo("Walker of Secret Ways", 27, Rarity.UNCOMMON, mage.cards.w.WalkerOfSecretWays.class));
- cards.add(new SetCardInfo("Wall of Blossoms", 81, Rarity.UNCOMMON, mage.cards.w.WallOfBlossoms.class));
- cards.add(new SetCardInfo("Wall of Frost", 28, Rarity.UNCOMMON, mage.cards.w.WallOfFrost.class));
- cards.add(new SetCardInfo("Warstorm Surge", 54, Rarity.RARE, mage.cards.w.WarstormSurge.class));
- cards.add(new SetCardInfo("Whirlpool Warrior", 29, Rarity.RARE, mage.cards.w.WhirlpoolWarrior.class));
- cards.add(new SetCardInfo("Whispersilk Cloak", 115, Rarity.UNCOMMON, mage.cards.w.WhispersilkCloak.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author LevelX2
+ */
+public final class Planechase2012 extends ExpansionSet {
+
+ private static final Planechase2012 instance = new Planechase2012();
+
+ public static Planechase2012 getInstance() {
+ return instance;
+ }
+
+ private Planechase2012() {
+ super("Planechase 2012 Edition", "PC2", ExpansionSet.buildDate(2012, 6, 1), SetType.SUPPLEMENTAL);
+ this.blockName = "Command Zone";
+ cards.add(new SetCardInfo("Arc Trail", 39, Rarity.UNCOMMON, mage.cards.a.ArcTrail.class));
+ cards.add(new SetCardInfo("Armillary Sphere", 108, Rarity.COMMON, mage.cards.a.ArmillarySphere.class));
+ cards.add(new SetCardInfo("Armored Griffin", 1, Rarity.UNCOMMON, mage.cards.a.ArmoredGriffin.class));
+ cards.add(new SetCardInfo("Assassinate", 30, Rarity.COMMON, mage.cards.a.Assassinate.class));
+ cards.add(new SetCardInfo("Augury Owl", 14, Rarity.COMMON, mage.cards.a.AuguryOwl.class));
+ cards.add(new SetCardInfo("Aura Gnarlid", 55, Rarity.COMMON, mage.cards.a.AuraGnarlid.class));
+ cards.add(new SetCardInfo("Auramancer", 2, Rarity.COMMON, mage.cards.a.Auramancer.class));
+ cards.add(new SetCardInfo("Auratouched Mage", 3, Rarity.UNCOMMON, mage.cards.a.AuratouchedMage.class));
+ cards.add(new SetCardInfo("Awakening Zone", 56, Rarity.RARE, mage.cards.a.AwakeningZone.class));
+ cards.add(new SetCardInfo("Baleful Strix", 82, Rarity.UNCOMMON, mage.cards.b.BalefulStrix.class));
+ cards.add(new SetCardInfo("Beast Within", 57, Rarity.UNCOMMON, mage.cards.b.BeastWithin.class));
+ cards.add(new SetCardInfo("Beetleback Chief", 40, Rarity.UNCOMMON, mage.cards.b.BeetlebackChief.class));
+ cards.add(new SetCardInfo("Bituminous Blast", 83, Rarity.UNCOMMON, mage.cards.b.BituminousBlast.class));
+ cards.add(new SetCardInfo("Bloodbraid Elf", 84, Rarity.UNCOMMON, mage.cards.b.BloodbraidElf.class));
+ cards.add(new SetCardInfo("Boar Umbra", 58, Rarity.UNCOMMON, mage.cards.b.BoarUmbra.class));
+ cards.add(new SetCardInfo("Bramble Elemental", 59, Rarity.COMMON, mage.cards.b.BrambleElemental.class));
+ cards.add(new SetCardInfo("Brindle Shoat", 60, Rarity.UNCOMMON, mage.cards.b.BrindleShoat.class));
+ cards.add(new SetCardInfo("Brutalizer Exarch", 61, Rarity.UNCOMMON, mage.cards.b.BrutalizerExarch.class));
+ cards.add(new SetCardInfo("Cadaver Imp", 31, Rarity.COMMON, mage.cards.c.CadaverImp.class));
+ cards.add(new SetCardInfo("Cage of Hands", 4, Rarity.COMMON, mage.cards.c.CageOfHands.class));
+ cards.add(new SetCardInfo("Cancel", 15, Rarity.COMMON, mage.cards.c.Cancel.class));
+ cards.add(new SetCardInfo("Celestial Ancient", 5, Rarity.RARE, mage.cards.c.CelestialAncient.class));
+ cards.add(new SetCardInfo("Concentrate", 16, Rarity.UNCOMMON, mage.cards.c.Concentrate.class));
+ cards.add(new SetCardInfo("Cultivate", 62, Rarity.COMMON, mage.cards.c.Cultivate.class));
+ cards.add(new SetCardInfo("Dark Hatchling", 32, Rarity.RARE, mage.cards.d.DarkHatchling.class));
+ cards.add(new SetCardInfo("Deny Reality", 85, Rarity.COMMON, mage.cards.d.DenyReality.class));
+ cards.add(new SetCardInfo("Dimir Aqueduct", 116, Rarity.COMMON, mage.cards.d.DimirAqueduct.class));
+ cards.add(new SetCardInfo("Dimir Infiltrator", 86, Rarity.COMMON, mage.cards.d.DimirInfiltrator.class));
+ cards.add(new SetCardInfo("Dowsing Shaman", 63, Rarity.UNCOMMON, mage.cards.d.DowsingShaman.class));
+ cards.add(new SetCardInfo("Dragonlair Spider", 87, Rarity.RARE, mage.cards.d.DragonlairSpider.class));
+ cards.add(new SetCardInfo("Dreampod Druid", 64, Rarity.RARE, mage.cards.d.DreampodDruid.class));
+ cards.add(new SetCardInfo("Elderwood Scion", 88, Rarity.RARE, mage.cards.e.ElderwoodScion.class));
+ cards.add(new SetCardInfo("Enigma Sphinx", 89, Rarity.RARE, mage.cards.e.EnigmaSphinx.class));
+ cards.add(new SetCardInfo("Enlisted Wurm", 90, Rarity.UNCOMMON, mage.cards.e.EnlistedWurm.class));
+ cards.add(new SetCardInfo("Erratic Explosion", 41, Rarity.COMMON, mage.cards.e.ErraticExplosion.class));
+ cards.add(new SetCardInfo("Etherium-Horn Sorcerer", 91, Rarity.RARE, mage.cards.e.EtheriumHornSorcerer.class));
+ cards.add(new SetCardInfo("Exotic Orchard", 117, Rarity.RARE, mage.cards.e.ExoticOrchard.class));
+ cards.add(new SetCardInfo("Farsight Mask", 109, Rarity.UNCOMMON, mage.cards.f.FarsightMask.class));
+ cards.add(new SetCardInfo("Felidar Umbra", 6, Rarity.UNCOMMON, mage.cards.f.FelidarUmbra.class));
+ cards.add(new SetCardInfo("Fiery Conclusion", 42, Rarity.COMMON, mage.cards.f.FieryConclusion.class));
+ cards.add(new SetCardInfo("Fiery Fall", 43, Rarity.COMMON, mage.cards.f.FieryFall.class));
+ cards.add(new SetCardInfo("Fires of Yavimaya", 92, Rarity.UNCOMMON, mage.cards.f.FiresOfYavimaya.class));
+ cards.add(new SetCardInfo("Flayer Husk", 110, Rarity.COMMON, mage.cards.f.FlayerHusk.class));
+ cards.add(new SetCardInfo("Fling", 44, Rarity.COMMON, mage.cards.f.Fling.class));
+ cards.add(new SetCardInfo("Forest", 151, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 152, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 153, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 154, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 155, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 156, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Fusion Elemental", 93, Rarity.UNCOMMON, mage.cards.f.FusionElemental.class));
+ cards.add(new SetCardInfo("Ghostly Prison", 7, Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class));
+ cards.add(new SetCardInfo("Glen Elendra Liege", 94, Rarity.RARE, mage.cards.g.GlenElendraLiege.class));
+ cards.add(new SetCardInfo("Gluttonous Slime", 65, Rarity.UNCOMMON, mage.cards.g.GluttonousSlime.class));
+ cards.add(new SetCardInfo("Graypelt Refuge", 118, Rarity.UNCOMMON, mage.cards.g.GraypeltRefuge.class));
+ cards.add(new SetCardInfo("Gruul Turf", 119, Rarity.COMMON, mage.cards.g.GruulTurf.class));
+ cards.add(new SetCardInfo("Guard Gomazoa", 17, Rarity.UNCOMMON, mage.cards.g.GuardGomazoa.class));
+ cards.add(new SetCardInfo("Hellion Eruption", 45, Rarity.RARE, mage.cards.h.HellionEruption.class));
+ cards.add(new SetCardInfo("Hellkite Hatchling", 95, Rarity.UNCOMMON, mage.cards.h.HellkiteHatchling.class));
+ cards.add(new SetCardInfo("Higure, the Still Wind", 18, Rarity.RARE, mage.cards.h.HigureTheStillWind.class));
+ cards.add(new SetCardInfo("Hissing Iguanar", 46, Rarity.COMMON, mage.cards.h.HissingIguanar.class));
+ cards.add(new SetCardInfo("Hyena Umbra", 8, Rarity.COMMON, mage.cards.h.HyenaUmbra.class));
+ cards.add(new SetCardInfo("Illusory Angel", 19, Rarity.UNCOMMON, mage.cards.i.IllusoryAngel.class));
+ cards.add(new SetCardInfo("Indrik Umbra", 96, Rarity.RARE, mage.cards.i.IndrikUmbra.class));
+ cards.add(new SetCardInfo("Ink-Eyes, Servant of Oni", 33, Rarity.RARE, mage.cards.i.InkEyesServantOfOni.class));
+ cards.add(new SetCardInfo("Inkfathom Witch", 97, Rarity.UNCOMMON, mage.cards.i.InkfathomWitch.class));
+ cards.add(new SetCardInfo("Island", 137, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 138, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 139, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 140, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 141, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Jwar Isle Refuge", 120, Rarity.UNCOMMON, mage.cards.j.JwarIsleRefuge.class));
+ cards.add(new SetCardInfo("Kathari Remnant", 98, Rarity.UNCOMMON, mage.cards.k.KathariRemnant.class));
+ cards.add(new SetCardInfo("Kazandu Refuge", 121, Rarity.UNCOMMON, mage.cards.k.KazanduRefuge.class));
+ cards.add(new SetCardInfo("Khalni Garden", 122, Rarity.COMMON, mage.cards.k.KhalniGarden.class));
+ cards.add(new SetCardInfo("Kor Spiritdancer", 9, Rarity.RARE, mage.cards.k.KorSpiritdancer.class));
+ cards.add(new SetCardInfo("Krond the Dawn-Clad", 99, Rarity.MYTHIC, mage.cards.k.KrondTheDawnClad.class));
+ cards.add(new SetCardInfo("Krosan Verge", 123, Rarity.UNCOMMON, mage.cards.k.KrosanVerge.class));
+ cards.add(new SetCardInfo("Last Stand", 100, Rarity.RARE, mage.cards.l.LastStand.class));
+ cards.add(new SetCardInfo("Liliana's Specter", 34, Rarity.COMMON, mage.cards.l.LilianasSpecter.class));
+ cards.add(new SetCardInfo("Lumberknot", 66, Rarity.UNCOMMON, mage.cards.l.Lumberknot.class));
+ cards.add(new SetCardInfo("Maelstrom Wanderer", 101, Rarity.MYTHIC, mage.cards.m.MaelstromWanderer.class));
+ cards.add(new SetCardInfo("Mammoth Umbra", 10, Rarity.UNCOMMON, mage.cards.m.MammothUmbra.class));
+ cards.add(new SetCardInfo("Mark of Mutiny", 47, Rarity.UNCOMMON, mage.cards.m.MarkOfMutiny.class));
+ cards.add(new SetCardInfo("Mass Mutiny", 48, Rarity.RARE, mage.cards.m.MassMutiny.class));
+ cards.add(new SetCardInfo("Mistblade Shinobi", 20, Rarity.COMMON, mage.cards.m.MistbladeShinobi.class));
+ cards.add(new SetCardInfo("Mitotic Slime", 67, Rarity.RARE, mage.cards.m.MitoticSlime.class));
+ cards.add(new SetCardInfo("Mountain", 147, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 148, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 149, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 150, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mudbutton Torchrunner", 49, Rarity.COMMON, mage.cards.m.MudbuttonTorchrunner.class));
+ cards.add(new SetCardInfo("Mycoloth", 68, Rarity.RARE, mage.cards.m.Mycoloth.class));
+ cards.add(new SetCardInfo("Nest Invader", 69, Rarity.COMMON, mage.cards.n.NestInvader.class));
+ cards.add(new SetCardInfo("Ninja of the Deep Hours", 21, Rarity.COMMON, mage.cards.n.NinjaOfTheDeepHours.class));
+ cards.add(new SetCardInfo("Noggle Ransacker", 102, Rarity.UNCOMMON, mage.cards.n.NoggleRansacker.class));
+ cards.add(new SetCardInfo("Nullmage Advocate", 70, Rarity.COMMON, mage.cards.n.NullmageAdvocate.class));
+ cards.add(new SetCardInfo("Okiba-Gang Shinobi", 35, Rarity.COMMON, mage.cards.o.OkibaGangShinobi.class));
+ cards.add(new SetCardInfo("Ondu Giant", 71, Rarity.COMMON, mage.cards.o.OnduGiant.class));
+ cards.add(new SetCardInfo("Overrun", 72, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
+ cards.add(new SetCardInfo("Penumbra Spider", 73, Rarity.COMMON, mage.cards.p.PenumbraSpider.class));
+ cards.add(new SetCardInfo("Peregrine Drake", 22, Rarity.UNCOMMON, mage.cards.p.PeregrineDrake.class));
+ cards.add(new SetCardInfo("Plains", 132, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 133, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 134, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 135, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 136, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Pollenbright Wings", 103, Rarity.UNCOMMON, mage.cards.p.PollenbrightWings.class));
+ cards.add(new SetCardInfo("Predatory Urge", 74, Rarity.RARE, mage.cards.p.PredatoryUrge.class));
+ cards.add(new SetCardInfo("Preyseizer Dragon", 50, Rarity.RARE, mage.cards.p.PreyseizerDragon.class));
+ cards.add(new SetCardInfo("Primal Plasma", 23, Rarity.COMMON, mage.cards.p.PrimalPlasma.class));
+ cards.add(new SetCardInfo("Quiet Disrepair", 75, Rarity.COMMON, mage.cards.q.QuietDisrepair.class));
+ cards.add(new SetCardInfo("Quietus Spike", 112, Rarity.RARE, mage.cards.q.QuietusSpike.class));
+ cards.add(new SetCardInfo("Rancor", 76, Rarity.COMMON, mage.cards.r.Rancor.class));
+ cards.add(new SetCardInfo("Rivals' Duel", 51, Rarity.UNCOMMON, mage.cards.r.RivalsDuel.class));
+ cards.add(new SetCardInfo("Rupture Spire", 124, Rarity.COMMON, mage.cards.r.RuptureSpire.class));
+ cards.add(new SetCardInfo("Sai of the Shinobi", 113, Rarity.UNCOMMON, mage.cards.s.SaiOfTheShinobi.class));
+ cards.add(new SetCardInfo("Sakashima's Student", 24, Rarity.RARE, mage.cards.s.SakashimasStudent.class));
+ cards.add(new SetCardInfo("See Beyond", 25, Rarity.COMMON, mage.cards.s.SeeBeyond.class));
+ cards.add(new SetCardInfo("Selesnya Sanctuary", 125, Rarity.COMMON, mage.cards.s.SelesnyaSanctuary.class));
+ cards.add(new SetCardInfo("Shardless Agent", 104, Rarity.UNCOMMON, mage.cards.s.ShardlessAgent.class));
+ cards.add(new SetCardInfo("Shimmering Grotto", 126, Rarity.COMMON, mage.cards.s.ShimmeringGrotto.class));
+ cards.add(new SetCardInfo("Sigil of the Empty Throne", 11, Rarity.RARE, mage.cards.s.SigilOfTheEmptyThrone.class));
+ cards.add(new SetCardInfo("Silent-Blade Oni", 105, Rarity.RARE, mage.cards.s.SilentBladeOni.class));
+ cards.add(new SetCardInfo("Silhana Ledgewalker", 77, Rarity.COMMON, mage.cards.s.SilhanaLedgewalker.class));
+ cards.add(new SetCardInfo("Skarrg, the Rage Pits", 127, Rarity.UNCOMMON, mage.cards.s.SkarrgTheRagePits.class));
+ cards.add(new SetCardInfo("Skullsnatcher", 36, Rarity.COMMON, mage.cards.s.Skullsnatcher.class));
+ cards.add(new SetCardInfo("Snake Umbra", 78, Rarity.COMMON, mage.cards.s.SnakeUmbra.class));
+ cards.add(new SetCardInfo("Spirit Mantle", 12, Rarity.UNCOMMON, mage.cards.s.SpiritMantle.class));
+ cards.add(new SetCardInfo("Sunken Hope", 26, Rarity.RARE, mage.cards.s.SunkenHope.class));
+ cards.add(new SetCardInfo("Swamp", 142, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 143, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 144, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 145, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 146, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Tainted Isle", 128, Rarity.UNCOMMON, mage.cards.t.TaintedIsle.class));
+ cards.add(new SetCardInfo("Terramorphic Expanse", 129, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
+ cards.add(new SetCardInfo("Thorn-Thrash Viashino", 52, Rarity.COMMON, mage.cards.t.ThornThrashViashino.class));
+ cards.add(new SetCardInfo("Thran Golem", 114, Rarity.UNCOMMON, mage.cards.t.ThranGolem.class));
+ cards.add(new SetCardInfo("Three Dreams", 13, Rarity.RARE, mage.cards.t.ThreeDreams.class));
+ cards.add(new SetCardInfo("Throat Slitter", 37, Rarity.UNCOMMON, mage.cards.t.ThroatSlitter.class));
+ cards.add(new SetCardInfo("Thromok the Insatiable", 106, Rarity.MYTHIC, mage.cards.t.ThromokTheInsatiable.class));
+ cards.add(new SetCardInfo("Thunder-Thrash Elder", 53, Rarity.UNCOMMON, mage.cards.t.ThunderThrashElder.class));
+ cards.add(new SetCardInfo("Tormented Soul", 38, Rarity.COMMON, mage.cards.t.TormentedSoul.class));
+ cards.add(new SetCardInfo("Tukatongue Thallid", 79, Rarity.COMMON, mage.cards.t.TukatongueThallid.class));
+ cards.add(new SetCardInfo("Vela the Night-Clad", 107, Rarity.MYTHIC, mage.cards.v.VelaTheNightClad.class));
+ cards.add(new SetCardInfo("Viridian Emissary", 80, Rarity.COMMON, mage.cards.v.ViridianEmissary.class));
+ cards.add(new SetCardInfo("Vitu-Ghazi, the City-Tree", 130, Rarity.UNCOMMON, mage.cards.v.VituGhaziTheCityTree.class));
+ cards.add(new SetCardInfo("Vivid Creek", 131, Rarity.UNCOMMON, mage.cards.v.VividCreek.class));
+ cards.add(new SetCardInfo("Walker of Secret Ways", 27, Rarity.UNCOMMON, mage.cards.w.WalkerOfSecretWays.class));
+ cards.add(new SetCardInfo("Wall of Blossoms", 81, Rarity.UNCOMMON, mage.cards.w.WallOfBlossoms.class));
+ cards.add(new SetCardInfo("Wall of Frost", 28, Rarity.UNCOMMON, mage.cards.w.WallOfFrost.class));
+ cards.add(new SetCardInfo("Warstorm Surge", 54, Rarity.RARE, mage.cards.w.WarstormSurge.class));
+ cards.add(new SetCardInfo("Whirlpool Warrior", 29, Rarity.RARE, mage.cards.w.WhirlpoolWarrior.class));
+ cards.add(new SetCardInfo("Whispersilk Cloak", 115, Rarity.UNCOMMON, mage.cards.w.WhispersilkCloak.class));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/PlanechaseAnthology.java b/Mage.Sets/src/mage/sets/PlanechaseAnthology.java
index 05f1027ca71..6a44e28c952 100644
--- a/Mage.Sets/src/mage/sets/PlanechaseAnthology.java
+++ b/Mage.Sets/src/mage/sets/PlanechaseAnthology.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class PlanechaseAnthology extends ExpansionSet {
+public final class PlanechaseAnthology extends ExpansionSet {
private static final PlanechaseAnthology instance = new PlanechaseAnthology();
diff --git a/Mage.Sets/src/mage/sets/Planeshift.java b/Mage.Sets/src/mage/sets/Planeshift.java
index 015f44c7f94..962f2d95662 100644
--- a/Mage.Sets/src/mage/sets/Planeshift.java
+++ b/Mage.Sets/src/mage/sets/Planeshift.java
@@ -1,202 +1,202 @@
-/*
- * 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.cards.e.ErtaiTheCorrupted;
-import mage.cards.s.SkyshipWeatherlight;
-import mage.cards.t.TahngarthTalruumHero;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class Planeshift extends ExpansionSet {
-
- private static final Planeshift instance = new Planeshift();
-
- public static Planeshift getInstance() {
- return instance;
- }
-
- private Planeshift() {
- super("Planeshift", "PLS", ExpansionSet.buildDate(2001, 1, 5), SetType.EXPANSION);
- this.blockName = "Invasion";
- this.parentSet = Invasion.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("Allied Strategies", 20, Rarity.UNCOMMON, mage.cards.a.AlliedStrategies.class));
- cards.add(new SetCardInfo("Alpha Kavu", 77, Rarity.UNCOMMON, mage.cards.a.AlphaKavu.class));
- cards.add(new SetCardInfo("Ancient Spider", 96, Rarity.RARE, mage.cards.a.AncientSpider.class));
- cards.add(new SetCardInfo("Arctic Merfolk", 21, Rarity.COMMON, mage.cards.a.ArcticMerfolk.class));
- cards.add(new SetCardInfo("Aura Blast", 1, Rarity.COMMON, mage.cards.a.AuraBlast.class));
- cards.add(new SetCardInfo("Aurora Griffin", 2, Rarity.COMMON, mage.cards.a.AuroraGriffin.class));
- cards.add(new SetCardInfo("Bog Down", 39, Rarity.COMMON, mage.cards.b.BogDown.class));
- cards.add(new SetCardInfo("Caldera Kavu", 58, Rarity.COMMON, mage.cards.c.CalderaKavu.class));
- cards.add(new SetCardInfo("Cavern Harpy", 97, Rarity.COMMON, mage.cards.c.CavernHarpy.class));
- cards.add(new SetCardInfo("Cloud Cover", 98, Rarity.RARE, mage.cards.c.CloudCover.class));
- cards.add(new SetCardInfo("Confound", 22, Rarity.COMMON, mage.cards.c.Confound.class));
- cards.add(new SetCardInfo("Crosis's Catacombs", 136, Rarity.UNCOMMON, mage.cards.c.CrosissCatacombs.class));
- cards.add(new SetCardInfo("Crosis's Charm", 99, Rarity.UNCOMMON, mage.cards.c.CrosissCharm.class));
- cards.add(new SetCardInfo("Darigaaz's Caldera", 137, Rarity.UNCOMMON, mage.cards.d.DarigaazsCaldera.class));
- cards.add(new SetCardInfo("Darigaaz's Charm", 100, Rarity.UNCOMMON, mage.cards.d.DarigaazsCharm.class));
- cards.add(new SetCardInfo("Daring Leap", 101, Rarity.COMMON, mage.cards.d.DaringLeap.class));
- cards.add(new SetCardInfo("Dark Suspicions", 40, Rarity.RARE, mage.cards.d.DarkSuspicions.class));
- cards.add(new SetCardInfo("Deadapult", 59, Rarity.RARE, mage.cards.d.Deadapult.class));
- cards.add(new SetCardInfo("Death Bomb", 41, Rarity.COMMON, mage.cards.d.DeathBomb.class));
- cards.add(new SetCardInfo("Destructive Flow", 102, Rarity.RARE, mage.cards.d.DestructiveFlow.class));
- cards.add(new SetCardInfo("Diabolic Intent", 42, Rarity.RARE, mage.cards.d.DiabolicIntent.class));
- cards.add(new SetCardInfo("Disciple of Kangee", 3, Rarity.COMMON, mage.cards.d.DiscipleOfKangee.class));
- cards.add(new SetCardInfo("Doomsday Specter", 103, Rarity.RARE, mage.cards.d.DoomsdaySpecter.class));
- cards.add(new SetCardInfo("Draco", 131, Rarity.RARE, mage.cards.d.Draco.class));
- cards.add(new SetCardInfo("Dralnu's Crusade", 104, Rarity.RARE, mage.cards.d.DralnusCrusade.class));
- cards.add(new SetCardInfo("Dralnu's Pet", 23, Rarity.RARE, mage.cards.d.DralnusPet.class));
- cards.add(new SetCardInfo("Dromar's Cavern", 138, Rarity.UNCOMMON, mage.cards.d.DromarsCavern.class));
- cards.add(new SetCardInfo("Dromar's Charm", 105, Rarity.UNCOMMON, mage.cards.d.DromarsCharm.class));
- cards.add(new SetCardInfo("Eladamri's Call", 106, Rarity.RARE, mage.cards.e.EladamrisCall.class));
- cards.add(new SetCardInfo("Ertai's Trickery", 24, Rarity.UNCOMMON, mage.cards.e.ErtaisTrickery.class));
- cards.add(new SetCardInfo("Ertai, the Corrupted", "107a", Rarity.RARE, ErtaiTheCorrupted.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ertai, the Corrupted", "107b", Rarity.RARE, ErtaiTheCorrupted.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Escape Routes", 25, Rarity.COMMON, mage.cards.e.EscapeRoutes.class));
- cards.add(new SetCardInfo("Exotic Disease", 43, Rarity.UNCOMMON, mage.cards.e.ExoticDisease.class));
- cards.add(new SetCardInfo("Falling Timber", 79, Rarity.COMMON, mage.cards.f.FallingTimber.class));
- cards.add(new SetCardInfo("Flametongue Kavu", 60, Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class));
- cards.add(new SetCardInfo("Fleetfoot Panther", 108, Rarity.UNCOMMON, mage.cards.f.FleetfootPanther.class));
- cards.add(new SetCardInfo("Forsaken City", 139, Rarity.RARE, mage.cards.f.ForsakenCity.class));
- cards.add(new SetCardInfo("Gaea's Herald", 80, Rarity.RARE, mage.cards.g.GaeasHerald.class));
- cards.add(new SetCardInfo("Gaea's Might", 81, Rarity.COMMON, mage.cards.g.GaeasMight.class));
- cards.add(new SetCardInfo("Gainsay", 26, Rarity.UNCOMMON, mage.cards.g.Gainsay.class));
- cards.add(new SetCardInfo("Gerrard's Command", 109, Rarity.COMMON, mage.cards.g.GerrardsCommand.class));
- cards.add(new SetCardInfo("Goblin Game", 61, Rarity.RARE, mage.cards.g.GoblinGame.class));
- cards.add(new SetCardInfo("Heroic Defiance", 6, Rarity.COMMON, mage.cards.h.HeroicDefiance.class));
- cards.add(new SetCardInfo("Hobble", 7, Rarity.COMMON, mage.cards.h.Hobble.class));
- cards.add(new SetCardInfo("Honorable Scout", 8, Rarity.COMMON, mage.cards.h.HonorableScout.class));
- cards.add(new SetCardInfo("Horned Kavu", 110, Rarity.COMMON, mage.cards.h.HornedKavu.class));
- cards.add(new SetCardInfo("Hull Breach", 111, Rarity.COMMON, mage.cards.h.HullBreach.class));
- cards.add(new SetCardInfo("Hunting Drake", 27, Rarity.COMMON, mage.cards.h.HuntingDrake.class));
- cards.add(new SetCardInfo("Implode", 62, Rarity.UNCOMMON, mage.cards.i.Implode.class));
- cards.add(new SetCardInfo("Insolence", 63, Rarity.COMMON, mage.cards.i.Insolence.class));
- cards.add(new SetCardInfo("Kavu Recluse", 64, Rarity.COMMON, mage.cards.k.KavuRecluse.class));
- cards.add(new SetCardInfo("Keldon Mantle", 65, Rarity.COMMON, mage.cards.k.KeldonMantle.class));
- cards.add(new SetCardInfo("Keldon Twilight", 112, Rarity.RARE, mage.cards.k.KeldonTwilight.class));
- cards.add(new SetCardInfo("Lashknife Barrier", 9, Rarity.UNCOMMON, mage.cards.l.LashknifeBarrier.class));
- cards.add(new SetCardInfo("Lava Zombie", 113, Rarity.COMMON, mage.cards.l.LavaZombie.class));
- cards.add(new SetCardInfo("Lord of the Undead", 44, Rarity.RARE, mage.cards.l.LordOfTheUndead.class));
- cards.add(new SetCardInfo("Maggot Carrier", 45, Rarity.COMMON, mage.cards.m.MaggotCarrier.class));
- cards.add(new SetCardInfo("Magma Burst", 66, Rarity.COMMON, mage.cards.m.MagmaBurst.class));
- cards.add(new SetCardInfo("Magnigoth Treefolk", 82, Rarity.RARE, mage.cards.m.MagnigothTreefolk.class));
- cards.add(new SetCardInfo("Malicious Advice", 114, Rarity.COMMON, mage.cards.m.MaliciousAdvice.class));
- cards.add(new SetCardInfo("Mana Cylix", 132, Rarity.UNCOMMON, mage.cards.m.ManaCylix.class));
- cards.add(new SetCardInfo("March of Souls", 10, Rarity.RARE, mage.cards.m.MarchOfSouls.class));
- cards.add(new SetCardInfo("Marsh Crocodile", 115, Rarity.UNCOMMON, mage.cards.m.MarshCrocodile.class));
- cards.add(new SetCardInfo("Meddling Mage", 116, Rarity.RARE, mage.cards.m.MeddlingMage.class));
- cards.add(new SetCardInfo("Meteor Crater", 140, Rarity.RARE, mage.cards.m.MeteorCrater.class));
- cards.add(new SetCardInfo("Mire Kavu", 67, Rarity.COMMON, mage.cards.m.MireKavu.class));
- cards.add(new SetCardInfo("Mogg Jailer", 68, Rarity.UNCOMMON, mage.cards.m.MoggJailer.class));
- cards.add(new SetCardInfo("Mogg Sentry", 69, Rarity.RARE, mage.cards.m.MoggSentry.class));
- cards.add(new SetCardInfo("Morgue Toad", 46, Rarity.COMMON, mage.cards.m.MorgueToad.class));
- cards.add(new SetCardInfo("Multani's Harmony", 84, Rarity.UNCOMMON, mage.cards.m.MultanisHarmony.class));
- cards.add(new SetCardInfo("Natural Emergence", 117, Rarity.RARE, mage.cards.n.NaturalEmergence.class));
- cards.add(new SetCardInfo("Nemata, Grove Guardian", 85, Rarity.RARE, mage.cards.n.NemataGroveGuardian.class));
- cards.add(new SetCardInfo("Nightscape Battlemage", 47, Rarity.UNCOMMON, mage.cards.n.NightscapeBattlemage.class));
- cards.add(new SetCardInfo("Nightscape Familiar", 48, Rarity.COMMON, mage.cards.n.NightscapeFamiliar.class));
- cards.add(new SetCardInfo("Orim's Chant", 11, Rarity.RARE, mage.cards.o.OrimsChant.class));
- cards.add(new SetCardInfo("Phyrexian Bloodstock", 50, Rarity.COMMON, mage.cards.p.PhyrexianBloodstock.class));
- cards.add(new SetCardInfo("Phyrexian Scuta", 51, Rarity.RARE, mage.cards.p.PhyrexianScuta.class));
- cards.add(new SetCardInfo("Phyrexian Tyranny", 118, Rarity.RARE, mage.cards.p.PhyrexianTyranny.class));
- cards.add(new SetCardInfo("Planar Overlay", 28, Rarity.RARE, mage.cards.p.PlanarOverlay.class));
- cards.add(new SetCardInfo("Planeswalker's Favor", 86, Rarity.RARE, mage.cards.p.PlaneswalkersFavor.class));
- cards.add(new SetCardInfo("Planeswalker's Fury", 70, Rarity.RARE, mage.cards.p.PlaneswalkersFury.class));
- cards.add(new SetCardInfo("Planeswalker's Mirth", 12, Rarity.RARE, mage.cards.p.PlaneswalkersMirth.class));
- cards.add(new SetCardInfo("Planeswalker's Mischief", 29, Rarity.RARE, mage.cards.p.PlaneswalkersMischief.class));
- cards.add(new SetCardInfo("Planeswalker's Scorn", 52, Rarity.RARE, mage.cards.p.PlaneswalkersScorn.class));
- cards.add(new SetCardInfo("Pollen Remedy", 13, Rarity.COMMON, mage.cards.p.PollenRemedy.class));
- cards.add(new SetCardInfo("Primal Growth", 87, Rarity.COMMON, mage.cards.p.PrimalGrowth.class));
- cards.add(new SetCardInfo("Pygmy Kavu", 88, Rarity.COMMON, mage.cards.p.PygmyKavu.class));
- cards.add(new SetCardInfo("Questing Phelddagrif", 119, Rarity.RARE, mage.cards.q.QuestingPhelddagrif.class));
- cards.add(new SetCardInfo("Quirion Dryad", 89, Rarity.RARE, mage.cards.q.QuirionDryad.class));
- cards.add(new SetCardInfo("Quirion Explorer", 90, Rarity.COMMON, mage.cards.q.QuirionExplorer.class));
- cards.add(new SetCardInfo("Radiant Kavu", 120, Rarity.RARE, mage.cards.r.RadiantKavu.class));
- cards.add(new SetCardInfo("Razing Snidd", 121, Rarity.UNCOMMON, mage.cards.r.RazingSnidd.class));
- cards.add(new SetCardInfo("Rith's Charm", 122, Rarity.UNCOMMON, mage.cards.r.RithsCharm.class));
- cards.add(new SetCardInfo("Rith's Grove", 141, Rarity.UNCOMMON, mage.cards.r.RithsGrove.class));
- cards.add(new SetCardInfo("Root Greevil", 91, Rarity.COMMON, mage.cards.r.RootGreevil.class));
- cards.add(new SetCardInfo("Rushing River", 30, Rarity.COMMON, mage.cards.r.RushingRiver.class));
- cards.add(new SetCardInfo("Samite Elder", 14, Rarity.RARE, mage.cards.s.SamiteElder.class));
- cards.add(new SetCardInfo("Samite Pilgrim", 15, Rarity.COMMON, mage.cards.s.SamitePilgrim.class));
- cards.add(new SetCardInfo("Sawtooth Loon", 123, Rarity.UNCOMMON, mage.cards.s.SawtoothLoon.class));
- cards.add(new SetCardInfo("Sea Snidd", 31, Rarity.COMMON, mage.cards.s.SeaSnidd.class));
- cards.add(new SetCardInfo("Shifting Sky", 32, Rarity.UNCOMMON, mage.cards.s.ShiftingSky.class));
- cards.add(new SetCardInfo("Shivan Wurm", 124, Rarity.RARE, mage.cards.s.ShivanWurm.class));
- cards.add(new SetCardInfo("Shriek of Dread", 53, Rarity.COMMON, mage.cards.s.ShriekOfDread.class));
- cards.add(new SetCardInfo("Silver Drake", 125, Rarity.COMMON, mage.cards.s.SilverDrake.class));
- cards.add(new SetCardInfo("Singe", 71, Rarity.COMMON, mage.cards.s.Singe.class));
- cards.add(new SetCardInfo("Sinister Strength", 54, Rarity.COMMON, mage.cards.s.SinisterStrength.class));
- cards.add(new SetCardInfo("Sisay's Ingenuity", 33, Rarity.COMMON, mage.cards.s.SisaysIngenuity.class));
- cards.add(new SetCardInfo("Skyship Weatherlight", "133a", Rarity.RARE, SkyshipWeatherlight.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Skyship Weatherlight", "133b", Rarity.RARE, SkyshipWeatherlight.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Skyshroud Blessing", 92, Rarity.UNCOMMON, mage.cards.s.SkyshroudBlessing.class));
- cards.add(new SetCardInfo("Slay", 55, Rarity.UNCOMMON, mage.cards.s.Slay.class));
- cards.add(new SetCardInfo("Sleeping Potion", 34, Rarity.COMMON, mage.cards.s.SleepingPotion.class));
- cards.add(new SetCardInfo("Slingshot Goblin", 72, Rarity.COMMON, mage.cards.s.SlingshotGoblin.class));
- cards.add(new SetCardInfo("Sparkcaster", 126, Rarity.UNCOMMON, mage.cards.s.Sparkcaster.class));
- cards.add(new SetCardInfo("Star Compass", 134, Rarity.UNCOMMON, mage.cards.s.StarCompass.class));
- cards.add(new SetCardInfo("Steel Leaf Paladin", 127, Rarity.COMMON, mage.cards.s.SteelLeafPaladin.class));
- cards.add(new SetCardInfo("Stone Kavu", 93, Rarity.COMMON, mage.cards.s.StoneKavu.class));
- cards.add(new SetCardInfo("Stormscape Battlemage", 35, Rarity.UNCOMMON, mage.cards.s.StormscapeBattlemage.class));
- cards.add(new SetCardInfo("Stormscape Familiar", 36, Rarity.COMMON, mage.cards.s.StormscapeFamiliar.class));
- cards.add(new SetCardInfo("Strafe", 73, Rarity.UNCOMMON, mage.cards.s.Strafe.class));
- cards.add(new SetCardInfo("Stratadon", 135, Rarity.UNCOMMON, mage.cards.s.Stratadon.class));
- cards.add(new SetCardInfo("Sunken Hope", 37, Rarity.RARE, mage.cards.s.SunkenHope.class));
- cards.add(new SetCardInfo("Sunscape Battlemage", 16, Rarity.UNCOMMON, mage.cards.s.SunscapeBattlemage.class));
- cards.add(new SetCardInfo("Sunscape Familiar", 17, Rarity.COMMON, mage.cards.s.SunscapeFamiliar.class));
- cards.add(new SetCardInfo("Surprise Deployment", 18, Rarity.UNCOMMON, mage.cards.s.SurpriseDeployment.class));
- cards.add(new SetCardInfo("Tahngarth, Talruum Hero", "74a", Rarity.RARE, TahngarthTalruumHero.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Tahngarth, Talruum Hero", "74b", Rarity.RARE, TahngarthTalruumHero.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Terminal Moraine", 142, Rarity.UNCOMMON, mage.cards.t.TerminalMoraine.class));
- cards.add(new SetCardInfo("Terminate", 128, Rarity.COMMON, mage.cards.t.Terminate.class));
- cards.add(new SetCardInfo("Thornscape Battlemage", 94, Rarity.UNCOMMON, mage.cards.t.ThornscapeBattlemage.class));
- cards.add(new SetCardInfo("Thornscape Familiar", 95, Rarity.COMMON, mage.cards.t.ThornscapeFamiliar.class));
- cards.add(new SetCardInfo("Thunderscape Battlemage", 75, Rarity.UNCOMMON, mage.cards.t.ThunderscapeBattlemage.class));
- cards.add(new SetCardInfo("Thunderscape Familiar", 76, Rarity.COMMON, mage.cards.t.ThunderscapeFamiliar.class));
- cards.add(new SetCardInfo("Treva's Charm", 129, Rarity.UNCOMMON, mage.cards.t.TrevasCharm.class));
- cards.add(new SetCardInfo("Treva's Ruins", 143, Rarity.UNCOMMON, mage.cards.t.TrevasRuins.class));
- cards.add(new SetCardInfo("Urza's Guilt", 130, Rarity.RARE, mage.cards.u.UrzasGuilt.class));
- cards.add(new SetCardInfo("Voice of All", 19, Rarity.UNCOMMON, mage.cards.v.VoiceOfAll.class));
- cards.add(new SetCardInfo("Volcano Imp", 56, Rarity.COMMON, mage.cards.v.VolcanoImp.class));
- cards.add(new SetCardInfo("Warped Devotion", 57, Rarity.UNCOMMON, mage.cards.w.WarpedDevotion.class));
- cards.add(new SetCardInfo("Waterspout Elemental", 38, Rarity.RARE, mage.cards.w.WaterspoutElemental.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.cards.e.ErtaiTheCorrupted;
+import mage.cards.s.SkyshipWeatherlight;
+import mage.cards.t.TahngarthTalruumHero;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Planeshift extends ExpansionSet {
+
+ private static final Planeshift instance = new Planeshift();
+
+ public static Planeshift getInstance() {
+ return instance;
+ }
+
+ private Planeshift() {
+ super("Planeshift", "PLS", ExpansionSet.buildDate(2001, 1, 5), SetType.EXPANSION);
+ this.blockName = "Invasion";
+ this.parentSet = Invasion.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("Allied Strategies", 20, Rarity.UNCOMMON, mage.cards.a.AlliedStrategies.class));
+ cards.add(new SetCardInfo("Alpha Kavu", 77, Rarity.UNCOMMON, mage.cards.a.AlphaKavu.class));
+ cards.add(new SetCardInfo("Ancient Spider", 96, Rarity.RARE, mage.cards.a.AncientSpider.class));
+ cards.add(new SetCardInfo("Arctic Merfolk", 21, Rarity.COMMON, mage.cards.a.ArcticMerfolk.class));
+ cards.add(new SetCardInfo("Aura Blast", 1, Rarity.COMMON, mage.cards.a.AuraBlast.class));
+ cards.add(new SetCardInfo("Aurora Griffin", 2, Rarity.COMMON, mage.cards.a.AuroraGriffin.class));
+ cards.add(new SetCardInfo("Bog Down", 39, Rarity.COMMON, mage.cards.b.BogDown.class));
+ cards.add(new SetCardInfo("Caldera Kavu", 58, Rarity.COMMON, mage.cards.c.CalderaKavu.class));
+ cards.add(new SetCardInfo("Cavern Harpy", 97, Rarity.COMMON, mage.cards.c.CavernHarpy.class));
+ cards.add(new SetCardInfo("Cloud Cover", 98, Rarity.RARE, mage.cards.c.CloudCover.class));
+ cards.add(new SetCardInfo("Confound", 22, Rarity.COMMON, mage.cards.c.Confound.class));
+ cards.add(new SetCardInfo("Crosis's Catacombs", 136, Rarity.UNCOMMON, mage.cards.c.CrosissCatacombs.class));
+ cards.add(new SetCardInfo("Crosis's Charm", 99, Rarity.UNCOMMON, mage.cards.c.CrosissCharm.class));
+ cards.add(new SetCardInfo("Darigaaz's Caldera", 137, Rarity.UNCOMMON, mage.cards.d.DarigaazsCaldera.class));
+ cards.add(new SetCardInfo("Darigaaz's Charm", 100, Rarity.UNCOMMON, mage.cards.d.DarigaazsCharm.class));
+ cards.add(new SetCardInfo("Daring Leap", 101, Rarity.COMMON, mage.cards.d.DaringLeap.class));
+ cards.add(new SetCardInfo("Dark Suspicions", 40, Rarity.RARE, mage.cards.d.DarkSuspicions.class));
+ cards.add(new SetCardInfo("Deadapult", 59, Rarity.RARE, mage.cards.d.Deadapult.class));
+ cards.add(new SetCardInfo("Death Bomb", 41, Rarity.COMMON, mage.cards.d.DeathBomb.class));
+ cards.add(new SetCardInfo("Destructive Flow", 102, Rarity.RARE, mage.cards.d.DestructiveFlow.class));
+ cards.add(new SetCardInfo("Diabolic Intent", 42, Rarity.RARE, mage.cards.d.DiabolicIntent.class));
+ cards.add(new SetCardInfo("Disciple of Kangee", 3, Rarity.COMMON, mage.cards.d.DiscipleOfKangee.class));
+ cards.add(new SetCardInfo("Doomsday Specter", 103, Rarity.RARE, mage.cards.d.DoomsdaySpecter.class));
+ cards.add(new SetCardInfo("Draco", 131, Rarity.RARE, mage.cards.d.Draco.class));
+ cards.add(new SetCardInfo("Dralnu's Crusade", 104, Rarity.RARE, mage.cards.d.DralnusCrusade.class));
+ cards.add(new SetCardInfo("Dralnu's Pet", 23, Rarity.RARE, mage.cards.d.DralnusPet.class));
+ cards.add(new SetCardInfo("Dromar's Cavern", 138, Rarity.UNCOMMON, mage.cards.d.DromarsCavern.class));
+ cards.add(new SetCardInfo("Dromar's Charm", 105, Rarity.UNCOMMON, mage.cards.d.DromarsCharm.class));
+ cards.add(new SetCardInfo("Eladamri's Call", 106, Rarity.RARE, mage.cards.e.EladamrisCall.class));
+ cards.add(new SetCardInfo("Ertai's Trickery", 24, Rarity.UNCOMMON, mage.cards.e.ErtaisTrickery.class));
+ cards.add(new SetCardInfo("Ertai, the Corrupted", "107a", Rarity.RARE, ErtaiTheCorrupted.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ertai, the Corrupted", "107b", Rarity.RARE, ErtaiTheCorrupted.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Escape Routes", 25, Rarity.COMMON, mage.cards.e.EscapeRoutes.class));
+ cards.add(new SetCardInfo("Exotic Disease", 43, Rarity.UNCOMMON, mage.cards.e.ExoticDisease.class));
+ cards.add(new SetCardInfo("Falling Timber", 79, Rarity.COMMON, mage.cards.f.FallingTimber.class));
+ cards.add(new SetCardInfo("Flametongue Kavu", 60, Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class));
+ cards.add(new SetCardInfo("Fleetfoot Panther", 108, Rarity.UNCOMMON, mage.cards.f.FleetfootPanther.class));
+ cards.add(new SetCardInfo("Forsaken City", 139, Rarity.RARE, mage.cards.f.ForsakenCity.class));
+ cards.add(new SetCardInfo("Gaea's Herald", 80, Rarity.RARE, mage.cards.g.GaeasHerald.class));
+ cards.add(new SetCardInfo("Gaea's Might", 81, Rarity.COMMON, mage.cards.g.GaeasMight.class));
+ cards.add(new SetCardInfo("Gainsay", 26, Rarity.UNCOMMON, mage.cards.g.Gainsay.class));
+ cards.add(new SetCardInfo("Gerrard's Command", 109, Rarity.COMMON, mage.cards.g.GerrardsCommand.class));
+ cards.add(new SetCardInfo("Goblin Game", 61, Rarity.RARE, mage.cards.g.GoblinGame.class));
+ cards.add(new SetCardInfo("Heroic Defiance", 6, Rarity.COMMON, mage.cards.h.HeroicDefiance.class));
+ cards.add(new SetCardInfo("Hobble", 7, Rarity.COMMON, mage.cards.h.Hobble.class));
+ cards.add(new SetCardInfo("Honorable Scout", 8, Rarity.COMMON, mage.cards.h.HonorableScout.class));
+ cards.add(new SetCardInfo("Horned Kavu", 110, Rarity.COMMON, mage.cards.h.HornedKavu.class));
+ cards.add(new SetCardInfo("Hull Breach", 111, Rarity.COMMON, mage.cards.h.HullBreach.class));
+ cards.add(new SetCardInfo("Hunting Drake", 27, Rarity.COMMON, mage.cards.h.HuntingDrake.class));
+ cards.add(new SetCardInfo("Implode", 62, Rarity.UNCOMMON, mage.cards.i.Implode.class));
+ cards.add(new SetCardInfo("Insolence", 63, Rarity.COMMON, mage.cards.i.Insolence.class));
+ cards.add(new SetCardInfo("Kavu Recluse", 64, Rarity.COMMON, mage.cards.k.KavuRecluse.class));
+ cards.add(new SetCardInfo("Keldon Mantle", 65, Rarity.COMMON, mage.cards.k.KeldonMantle.class));
+ cards.add(new SetCardInfo("Keldon Twilight", 112, Rarity.RARE, mage.cards.k.KeldonTwilight.class));
+ cards.add(new SetCardInfo("Lashknife Barrier", 9, Rarity.UNCOMMON, mage.cards.l.LashknifeBarrier.class));
+ cards.add(new SetCardInfo("Lava Zombie", 113, Rarity.COMMON, mage.cards.l.LavaZombie.class));
+ cards.add(new SetCardInfo("Lord of the Undead", 44, Rarity.RARE, mage.cards.l.LordOfTheUndead.class));
+ cards.add(new SetCardInfo("Maggot Carrier", 45, Rarity.COMMON, mage.cards.m.MaggotCarrier.class));
+ cards.add(new SetCardInfo("Magma Burst", 66, Rarity.COMMON, mage.cards.m.MagmaBurst.class));
+ cards.add(new SetCardInfo("Magnigoth Treefolk", 82, Rarity.RARE, mage.cards.m.MagnigothTreefolk.class));
+ cards.add(new SetCardInfo("Malicious Advice", 114, Rarity.COMMON, mage.cards.m.MaliciousAdvice.class));
+ cards.add(new SetCardInfo("Mana Cylix", 132, Rarity.UNCOMMON, mage.cards.m.ManaCylix.class));
+ cards.add(new SetCardInfo("March of Souls", 10, Rarity.RARE, mage.cards.m.MarchOfSouls.class));
+ cards.add(new SetCardInfo("Marsh Crocodile", 115, Rarity.UNCOMMON, mage.cards.m.MarshCrocodile.class));
+ cards.add(new SetCardInfo("Meddling Mage", 116, Rarity.RARE, mage.cards.m.MeddlingMage.class));
+ cards.add(new SetCardInfo("Meteor Crater", 140, Rarity.RARE, mage.cards.m.MeteorCrater.class));
+ cards.add(new SetCardInfo("Mire Kavu", 67, Rarity.COMMON, mage.cards.m.MireKavu.class));
+ cards.add(new SetCardInfo("Mogg Jailer", 68, Rarity.UNCOMMON, mage.cards.m.MoggJailer.class));
+ cards.add(new SetCardInfo("Mogg Sentry", 69, Rarity.RARE, mage.cards.m.MoggSentry.class));
+ cards.add(new SetCardInfo("Morgue Toad", 46, Rarity.COMMON, mage.cards.m.MorgueToad.class));
+ cards.add(new SetCardInfo("Multani's Harmony", 84, Rarity.UNCOMMON, mage.cards.m.MultanisHarmony.class));
+ cards.add(new SetCardInfo("Natural Emergence", 117, Rarity.RARE, mage.cards.n.NaturalEmergence.class));
+ cards.add(new SetCardInfo("Nemata, Grove Guardian", 85, Rarity.RARE, mage.cards.n.NemataGroveGuardian.class));
+ cards.add(new SetCardInfo("Nightscape Battlemage", 47, Rarity.UNCOMMON, mage.cards.n.NightscapeBattlemage.class));
+ cards.add(new SetCardInfo("Nightscape Familiar", 48, Rarity.COMMON, mage.cards.n.NightscapeFamiliar.class));
+ cards.add(new SetCardInfo("Orim's Chant", 11, Rarity.RARE, mage.cards.o.OrimsChant.class));
+ cards.add(new SetCardInfo("Phyrexian Bloodstock", 50, Rarity.COMMON, mage.cards.p.PhyrexianBloodstock.class));
+ cards.add(new SetCardInfo("Phyrexian Scuta", 51, Rarity.RARE, mage.cards.p.PhyrexianScuta.class));
+ cards.add(new SetCardInfo("Phyrexian Tyranny", 118, Rarity.RARE, mage.cards.p.PhyrexianTyranny.class));
+ cards.add(new SetCardInfo("Planar Overlay", 28, Rarity.RARE, mage.cards.p.PlanarOverlay.class));
+ cards.add(new SetCardInfo("Planeswalker's Favor", 86, Rarity.RARE, mage.cards.p.PlaneswalkersFavor.class));
+ cards.add(new SetCardInfo("Planeswalker's Fury", 70, Rarity.RARE, mage.cards.p.PlaneswalkersFury.class));
+ cards.add(new SetCardInfo("Planeswalker's Mirth", 12, Rarity.RARE, mage.cards.p.PlaneswalkersMirth.class));
+ cards.add(new SetCardInfo("Planeswalker's Mischief", 29, Rarity.RARE, mage.cards.p.PlaneswalkersMischief.class));
+ cards.add(new SetCardInfo("Planeswalker's Scorn", 52, Rarity.RARE, mage.cards.p.PlaneswalkersScorn.class));
+ cards.add(new SetCardInfo("Pollen Remedy", 13, Rarity.COMMON, mage.cards.p.PollenRemedy.class));
+ cards.add(new SetCardInfo("Primal Growth", 87, Rarity.COMMON, mage.cards.p.PrimalGrowth.class));
+ cards.add(new SetCardInfo("Pygmy Kavu", 88, Rarity.COMMON, mage.cards.p.PygmyKavu.class));
+ cards.add(new SetCardInfo("Questing Phelddagrif", 119, Rarity.RARE, mage.cards.q.QuestingPhelddagrif.class));
+ cards.add(new SetCardInfo("Quirion Dryad", 89, Rarity.RARE, mage.cards.q.QuirionDryad.class));
+ cards.add(new SetCardInfo("Quirion Explorer", 90, Rarity.COMMON, mage.cards.q.QuirionExplorer.class));
+ cards.add(new SetCardInfo("Radiant Kavu", 120, Rarity.RARE, mage.cards.r.RadiantKavu.class));
+ cards.add(new SetCardInfo("Razing Snidd", 121, Rarity.UNCOMMON, mage.cards.r.RazingSnidd.class));
+ cards.add(new SetCardInfo("Rith's Charm", 122, Rarity.UNCOMMON, mage.cards.r.RithsCharm.class));
+ cards.add(new SetCardInfo("Rith's Grove", 141, Rarity.UNCOMMON, mage.cards.r.RithsGrove.class));
+ cards.add(new SetCardInfo("Root Greevil", 91, Rarity.COMMON, mage.cards.r.RootGreevil.class));
+ cards.add(new SetCardInfo("Rushing River", 30, Rarity.COMMON, mage.cards.r.RushingRiver.class));
+ cards.add(new SetCardInfo("Samite Elder", 14, Rarity.RARE, mage.cards.s.SamiteElder.class));
+ cards.add(new SetCardInfo("Samite Pilgrim", 15, Rarity.COMMON, mage.cards.s.SamitePilgrim.class));
+ cards.add(new SetCardInfo("Sawtooth Loon", 123, Rarity.UNCOMMON, mage.cards.s.SawtoothLoon.class));
+ cards.add(new SetCardInfo("Sea Snidd", 31, Rarity.COMMON, mage.cards.s.SeaSnidd.class));
+ cards.add(new SetCardInfo("Shifting Sky", 32, Rarity.UNCOMMON, mage.cards.s.ShiftingSky.class));
+ cards.add(new SetCardInfo("Shivan Wurm", 124, Rarity.RARE, mage.cards.s.ShivanWurm.class));
+ cards.add(new SetCardInfo("Shriek of Dread", 53, Rarity.COMMON, mage.cards.s.ShriekOfDread.class));
+ cards.add(new SetCardInfo("Silver Drake", 125, Rarity.COMMON, mage.cards.s.SilverDrake.class));
+ cards.add(new SetCardInfo("Singe", 71, Rarity.COMMON, mage.cards.s.Singe.class));
+ cards.add(new SetCardInfo("Sinister Strength", 54, Rarity.COMMON, mage.cards.s.SinisterStrength.class));
+ cards.add(new SetCardInfo("Sisay's Ingenuity", 33, Rarity.COMMON, mage.cards.s.SisaysIngenuity.class));
+ cards.add(new SetCardInfo("Skyship Weatherlight", "133a", Rarity.RARE, SkyshipWeatherlight.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Skyship Weatherlight", "133b", Rarity.RARE, SkyshipWeatherlight.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Skyshroud Blessing", 92, Rarity.UNCOMMON, mage.cards.s.SkyshroudBlessing.class));
+ cards.add(new SetCardInfo("Slay", 55, Rarity.UNCOMMON, mage.cards.s.Slay.class));
+ cards.add(new SetCardInfo("Sleeping Potion", 34, Rarity.COMMON, mage.cards.s.SleepingPotion.class));
+ cards.add(new SetCardInfo("Slingshot Goblin", 72, Rarity.COMMON, mage.cards.s.SlingshotGoblin.class));
+ cards.add(new SetCardInfo("Sparkcaster", 126, Rarity.UNCOMMON, mage.cards.s.Sparkcaster.class));
+ cards.add(new SetCardInfo("Star Compass", 134, Rarity.UNCOMMON, mage.cards.s.StarCompass.class));
+ cards.add(new SetCardInfo("Steel Leaf Paladin", 127, Rarity.COMMON, mage.cards.s.SteelLeafPaladin.class));
+ cards.add(new SetCardInfo("Stone Kavu", 93, Rarity.COMMON, mage.cards.s.StoneKavu.class));
+ cards.add(new SetCardInfo("Stormscape Battlemage", 35, Rarity.UNCOMMON, mage.cards.s.StormscapeBattlemage.class));
+ cards.add(new SetCardInfo("Stormscape Familiar", 36, Rarity.COMMON, mage.cards.s.StormscapeFamiliar.class));
+ cards.add(new SetCardInfo("Strafe", 73, Rarity.UNCOMMON, mage.cards.s.Strafe.class));
+ cards.add(new SetCardInfo("Stratadon", 135, Rarity.UNCOMMON, mage.cards.s.Stratadon.class));
+ cards.add(new SetCardInfo("Sunken Hope", 37, Rarity.RARE, mage.cards.s.SunkenHope.class));
+ cards.add(new SetCardInfo("Sunscape Battlemage", 16, Rarity.UNCOMMON, mage.cards.s.SunscapeBattlemage.class));
+ cards.add(new SetCardInfo("Sunscape Familiar", 17, Rarity.COMMON, mage.cards.s.SunscapeFamiliar.class));
+ cards.add(new SetCardInfo("Surprise Deployment", 18, Rarity.UNCOMMON, mage.cards.s.SurpriseDeployment.class));
+ cards.add(new SetCardInfo("Tahngarth, Talruum Hero", "74a", Rarity.RARE, TahngarthTalruumHero.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Tahngarth, Talruum Hero", "74b", Rarity.RARE, TahngarthTalruumHero.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Terminal Moraine", 142, Rarity.UNCOMMON, mage.cards.t.TerminalMoraine.class));
+ cards.add(new SetCardInfo("Terminate", 128, Rarity.COMMON, mage.cards.t.Terminate.class));
+ cards.add(new SetCardInfo("Thornscape Battlemage", 94, Rarity.UNCOMMON, mage.cards.t.ThornscapeBattlemage.class));
+ cards.add(new SetCardInfo("Thornscape Familiar", 95, Rarity.COMMON, mage.cards.t.ThornscapeFamiliar.class));
+ cards.add(new SetCardInfo("Thunderscape Battlemage", 75, Rarity.UNCOMMON, mage.cards.t.ThunderscapeBattlemage.class));
+ cards.add(new SetCardInfo("Thunderscape Familiar", 76, Rarity.COMMON, mage.cards.t.ThunderscapeFamiliar.class));
+ cards.add(new SetCardInfo("Treva's Charm", 129, Rarity.UNCOMMON, mage.cards.t.TrevasCharm.class));
+ cards.add(new SetCardInfo("Treva's Ruins", 143, Rarity.UNCOMMON, mage.cards.t.TrevasRuins.class));
+ cards.add(new SetCardInfo("Urza's Guilt", 130, Rarity.RARE, mage.cards.u.UrzasGuilt.class));
+ cards.add(new SetCardInfo("Voice of All", 19, Rarity.UNCOMMON, mage.cards.v.VoiceOfAll.class));
+ cards.add(new SetCardInfo("Volcano Imp", 56, Rarity.COMMON, mage.cards.v.VolcanoImp.class));
+ cards.add(new SetCardInfo("Warped Devotion", 57, Rarity.UNCOMMON, mage.cards.w.WarpedDevotion.class));
+ cards.add(new SetCardInfo("Waterspout Elemental", 38, Rarity.RARE, mage.cards.w.WaterspoutElemental.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Portal.java b/Mage.Sets/src/mage/sets/Portal.java
index 36adbfaa9b7..e2a5257fce6 100644
--- a/Mage.Sets/src/mage/sets/Portal.java
+++ b/Mage.Sets/src/mage/sets/Portal.java
@@ -1,285 +1,285 @@
-/*
- * 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.cards.d.DrySpell;
-import mage.cards.e.EliteCatWarrior;
-import mage.cards.w.WarriorsCharge;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author Plopman
- */
-public class Portal extends ExpansionSet {
-
- private static final Portal instance = new Portal();
-
- /**
- *
- * @return
- */
- public static Portal getInstance() {
- return instance;
- }
-
- private Portal() {
- super("Portal", "POR", ExpansionSet.buildDate(1997, 5, 1), SetType.SUPPLEMENTAL);
- this.blockName = "Beginner";
- this.hasBasicLands = true;
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Alabaster Dragon", 163, Rarity.RARE, mage.cards.a.AlabasterDragon.class));
- cards.add(new SetCardInfo("Alluring Scent", 80, Rarity.RARE, mage.cards.a.AlluringScent.class));
- cards.add(new SetCardInfo("Anaconda", 81, Rarity.UNCOMMON, mage.cards.a.Anaconda.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Anaconda", 82, Rarity.UNCOMMON, mage.cards.a.Anaconda.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ancestral Memories", 41, Rarity.RARE, mage.cards.a.AncestralMemories.class));
- cards.add(new SetCardInfo("Angelic Blessing", 164, Rarity.COMMON, mage.cards.a.AngelicBlessing.class));
- cards.add(new SetCardInfo("Archangel", 165, Rarity.RARE, mage.cards.a.Archangel.class));
- cards.add(new SetCardInfo("Ardent Militia", 166, Rarity.UNCOMMON, mage.cards.a.ArdentMilitia.class));
- cards.add(new SetCardInfo("Armageddon", 167, Rarity.RARE, mage.cards.a.Armageddon.class));
- cards.add(new SetCardInfo("Armored Pegasus", 168, Rarity.COMMON, mage.cards.a.ArmoredPegasus.class));
- cards.add(new SetCardInfo("Arrogant Vampire", 1, Rarity.UNCOMMON, mage.cards.a.ArrogantVampire.class));
- cards.add(new SetCardInfo("Assassin's Blade", 2, Rarity.UNCOMMON, mage.cards.a.AssassinsBlade.class));
- cards.add(new SetCardInfo("Balance of Power", 42, Rarity.RARE, mage.cards.b.BalanceOfPower.class));
- cards.add(new SetCardInfo("Baleful Stare", 43, Rarity.UNCOMMON, mage.cards.b.BalefulStare.class));
- cards.add(new SetCardInfo("Bee Sting", 83, Rarity.UNCOMMON, mage.cards.b.BeeSting.class));
- cards.add(new SetCardInfo("Blaze", 122, Rarity.UNCOMMON, mage.cards.b.Blaze.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Blaze", 123, Rarity.UNCOMMON, mage.cards.b.Blaze.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Blessed Reversal", 169, Rarity.RARE, mage.cards.b.BlessedReversal.class));
- cards.add(new SetCardInfo("Blinding Light", 170, Rarity.RARE, mage.cards.b.BlindingLight.class));
- cards.add(new SetCardInfo("Bog Imp", 3, Rarity.COMMON, mage.cards.b.BogImp.class));
- cards.add(new SetCardInfo("Bog Raiders", 4, Rarity.COMMON, mage.cards.b.BogRaiders.class));
- cards.add(new SetCardInfo("Bog Wraith", 5, Rarity.UNCOMMON, mage.cards.b.BogWraith.class));
- cards.add(new SetCardInfo("Boiling Seas", 124, Rarity.UNCOMMON, mage.cards.b.BoilingSeas.class));
- cards.add(new SetCardInfo("Border Guard", 171, Rarity.COMMON, mage.cards.b.BorderGuard.class));
- cards.add(new SetCardInfo("Breath of Life", 172, Rarity.COMMON, mage.cards.b.BreathOfLife.class));
- cards.add(new SetCardInfo("Bull Hippo", 84, Rarity.UNCOMMON, mage.cards.b.BullHippo.class));
- cards.add(new SetCardInfo("Burning Cloak", 125, Rarity.COMMON, mage.cards.b.BurningCloak.class));
- cards.add(new SetCardInfo("Capricious Sorcerer", 44, Rarity.RARE, mage.cards.c.CapriciousSorcerer.class));
- cards.add(new SetCardInfo("Charging Bandits", 6, Rarity.UNCOMMON, mage.cards.c.ChargingBandits.class));
- cards.add(new SetCardInfo("Charging Paladin", 173, Rarity.UNCOMMON, mage.cards.c.ChargingPaladin.class));
- cards.add(new SetCardInfo("Charging Rhino", 85, Rarity.RARE, mage.cards.c.ChargingRhino.class));
- cards.add(new SetCardInfo("Cloak of Feathers", 45, Rarity.COMMON, mage.cards.c.CloakOfFeathers.class));
- cards.add(new SetCardInfo("Cloud Dragon", 46, Rarity.RARE, mage.cards.c.CloudDragon.class));
- cards.add(new SetCardInfo("Cloud Pirates", 47, Rarity.COMMON, mage.cards.c.CloudPirates.class));
- cards.add(new SetCardInfo("Cloud Spirit", 48, Rarity.UNCOMMON, mage.cards.c.CloudSpirit.class));
- cards.add(new SetCardInfo("Command of Unsummoning", 49, Rarity.UNCOMMON, mage.cards.c.CommandOfUnsummoning.class));
- cards.add(new SetCardInfo("Coral Eel", 50, Rarity.COMMON, mage.cards.c.CoralEel.class));
- cards.add(new SetCardInfo("Craven Giant", 126, Rarity.COMMON, mage.cards.c.CravenGiant.class));
- cards.add(new SetCardInfo("Craven Knight", 7, Rarity.COMMON, mage.cards.c.CravenKnight.class));
- cards.add(new SetCardInfo("Cruel Bargain", 8, Rarity.RARE, mage.cards.c.CruelBargain.class));
- cards.add(new SetCardInfo("Cruel Fate", 51, Rarity.RARE, mage.cards.c.CruelFate.class));
- cards.add(new SetCardInfo("Cruel Tutor", 9, Rarity.RARE, mage.cards.c.CruelTutor.class));
- cards.add(new SetCardInfo("Deep-Sea Serpent", 52, Rarity.UNCOMMON, mage.cards.d.DeepSeaSerpent.class));
- cards.add(new SetCardInfo("Deep Wood", 86, Rarity.UNCOMMON, mage.cards.d.DeepWood.class));
- cards.add(new SetCardInfo("Defiant Stand", 174, Rarity.UNCOMMON, mage.cards.d.DefiantStand.class));
- cards.add(new SetCardInfo("Deja Vu", 53, Rarity.COMMON, mage.cards.d.DejaVu.class));
- cards.add(new SetCardInfo("Desert Drake", 127, Rarity.UNCOMMON, mage.cards.d.DesertDrake.class));
- cards.add(new SetCardInfo("Devastation", 128, Rarity.RARE, mage.cards.d.Devastation.class));
- cards.add(new SetCardInfo("Devoted Hero", 175, Rarity.COMMON, mage.cards.d.DevotedHero.class));
- cards.add(new SetCardInfo("Djinn of the Lamp", 54, Rarity.RARE, mage.cards.d.DjinnOfTheLamp.class));
- cards.add(new SetCardInfo("Dread Charge", 10, Rarity.RARE, mage.cards.d.DreadCharge.class));
- cards.add(new SetCardInfo("Dread Reaper", 11, Rarity.RARE, mage.cards.d.DreadReaper.class));
- cards.add(new SetCardInfo("Dry Spell", 12, Rarity.UNCOMMON, DrySpell.class));
- cards.add(new SetCardInfo("Earthquake", 129, Rarity.RARE, mage.cards.e.Earthquake.class));
- cards.add(new SetCardInfo("Ebon Dragon", 13, Rarity.RARE, mage.cards.e.EbonDragon.class));
- cards.add(new SetCardInfo("Elite Cat Warrior", 87, Rarity.COMMON, EliteCatWarrior.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Elite Cat Warrior", 88, Rarity.COMMON, EliteCatWarrior.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Elven Cache", 89, Rarity.COMMON, mage.cards.e.ElvenCache.class));
- cards.add(new SetCardInfo("Elvish Ranger", 90, Rarity.COMMON, mage.cards.e.ElvishRanger.class));
- cards.add(new SetCardInfo("Endless Cockroaches", 14, Rarity.RARE, mage.cards.e.EndlessCockroaches.class));
- cards.add(new SetCardInfo("Exhaustion", 55, Rarity.RARE, mage.cards.e.Exhaustion.class));
- cards.add(new SetCardInfo("False Peace", 176, Rarity.COMMON, mage.cards.f.FalsePeace.class));
- cards.add(new SetCardInfo("Feral Shadow", 15, Rarity.COMMON, mage.cards.f.FeralShadow.class));
- cards.add(new SetCardInfo("Final Strike", 16, Rarity.RARE, mage.cards.f.FinalStrike.class));
- cards.add(new SetCardInfo("Fire Dragon", 130, Rarity.RARE, mage.cards.f.FireDragon.class));
- cards.add(new SetCardInfo("Fire Imp", 131, Rarity.UNCOMMON, mage.cards.f.FireImp.class));
- cards.add(new SetCardInfo("Fire Snake", 132, Rarity.COMMON, mage.cards.f.FireSnake.class));
- cards.add(new SetCardInfo("Fire Tempest", 133, Rarity.RARE, mage.cards.f.FireTempest.class));
- cards.add(new SetCardInfo("Flashfires", 134, Rarity.UNCOMMON, mage.cards.f.Flashfires.class));
- cards.add(new SetCardInfo("Fleet-Footed Monk", 177, Rarity.COMMON, mage.cards.f.FleetFootedMonk.class));
- cards.add(new SetCardInfo("Flux", 56, Rarity.UNCOMMON, mage.cards.f.Flux.class));
- cards.add(new SetCardInfo("Foot Soldiers", 178, Rarity.COMMON, mage.cards.f.FootSoldiers.class));
- cards.add(new SetCardInfo("Forest", 203, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 204, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 205, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 206, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Fruition", 91, Rarity.COMMON, mage.cards.f.Fruition.class));
- cards.add(new SetCardInfo("Giant Octopus", 57, Rarity.COMMON, mage.cards.g.GiantOctopus.class));
- cards.add(new SetCardInfo("Giant Spider", 92, Rarity.COMMON, mage.cards.g.GiantSpider.class));
- cards.add(new SetCardInfo("Gift of Estates", 179, Rarity.RARE, mage.cards.g.GiftOfEstates.class));
- cards.add(new SetCardInfo("Goblin Bully", 136, Rarity.COMMON, mage.cards.g.GoblinBully.class));
- cards.add(new SetCardInfo("Gorilla Warrior", 93, Rarity.COMMON, mage.cards.g.GorillaWarrior.class));
- cards.add(new SetCardInfo("Gravedigger", 17, Rarity.UNCOMMON, mage.cards.g.Gravedigger.class));
- cards.add(new SetCardInfo("Grizzly Bears", 94, Rarity.COMMON, mage.cards.g.GrizzlyBears.class));
- cards.add(new SetCardInfo("Hand of Death", 18, Rarity.COMMON, mage.cards.h.HandOfDeath.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Hand of Death", 19, Rarity.COMMON, mage.cards.h.HandOfDeath.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Harsh Justice", 180, Rarity.RARE, mage.cards.h.HarshJustice.class));
- cards.add(new SetCardInfo("Highland Giant", 137, Rarity.COMMON, mage.cards.h.HighlandGiant.class));
- cards.add(new SetCardInfo("Hill Giant", 138, Rarity.COMMON, mage.cards.h.HillGiant.class));
- cards.add(new SetCardInfo("Horned Turtle", 58, Rarity.COMMON, mage.cards.h.HornedTurtle.class));
- cards.add(new SetCardInfo("Howling Fury", 20, Rarity.COMMON, mage.cards.h.HowlingFury.class));
- cards.add(new SetCardInfo("Hulking Cyclops", 139, Rarity.UNCOMMON, mage.cards.h.HulkingCyclops.class));
- cards.add(new SetCardInfo("Hulking Goblin", 140, Rarity.COMMON, mage.cards.h.HulkingGoblin.class));
- cards.add(new SetCardInfo("Hurricane", 95, Rarity.RARE, mage.cards.h.Hurricane.class));
- cards.add(new SetCardInfo("Ingenious Thief", 59, Rarity.UNCOMMON, mage.cards.i.IngeniousThief.class));
- cards.add(new SetCardInfo("Island", 207, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 208, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 209, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 210, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Jungle Lion", 96, Rarity.COMMON, mage.cards.j.JungleLion.class));
- cards.add(new SetCardInfo("Keen-Eyed Archers", 181, Rarity.COMMON, mage.cards.k.KeenEyedArchers.class));
- cards.add(new SetCardInfo("King's Assassin", 21, Rarity.RARE, mage.cards.k.KingsAssassin.class));
- cards.add(new SetCardInfo("Knight Errant", 182, Rarity.COMMON, mage.cards.k.KnightErrant.class));
- cards.add(new SetCardInfo("Last Chance", 141, Rarity.RARE, mage.cards.l.LastChance.class));
- cards.add(new SetCardInfo("Lava Axe", 142, Rarity.COMMON, mage.cards.l.LavaAxe.class));
- cards.add(new SetCardInfo("Lava Flow", 143, Rarity.UNCOMMON, mage.cards.l.LavaFlow.class));
- cards.add(new SetCardInfo("Lizard Warrior", 144, Rarity.COMMON, mage.cards.l.LizardWarrior.class));
- cards.add(new SetCardInfo("Man-o'-War", 60, Rarity.UNCOMMON, mage.cards.m.ManOWar.class));
- cards.add(new SetCardInfo("Mercenary Knight", 22, Rarity.RARE, mage.cards.m.MercenaryKnight.class));
- cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 61, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class));
- cards.add(new SetCardInfo("Mind Knives", 23, Rarity.COMMON, mage.cards.m.MindKnives.class));
- cards.add(new SetCardInfo("Mind Rot", 24, Rarity.COMMON, mage.cards.m.MindRot.class));
- cards.add(new SetCardInfo("Minotaur Warrior", 145, Rarity.COMMON, mage.cards.m.MinotaurWarrior.class));
- cards.add(new SetCardInfo("Mobilize", 97, Rarity.COMMON, mage.cards.m.Mobilize.class));
- cards.add(new SetCardInfo("Monstrous Growth", 98, Rarity.COMMON, mage.cards.m.MonstrousGrowth.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Monstrous Growth", 99, Rarity.COMMON, mage.cards.m.MonstrousGrowth.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Moon Sprite", 100, Rarity.UNCOMMON, mage.cards.m.MoonSprite.class));
- cards.add(new SetCardInfo("Mountain", 211, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 212, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 213, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 214, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain Goat", 146, Rarity.UNCOMMON, mage.cards.m.MountainGoat.class));
- cards.add(new SetCardInfo("Muck Rats", 25, Rarity.COMMON, mage.cards.m.MuckRats.class));
- cards.add(new SetCardInfo("Mystic Denial", 62, Rarity.UNCOMMON, mage.cards.m.MysticDenial.class));
- cards.add(new SetCardInfo("Natural Order", 101, Rarity.RARE, mage.cards.n.NaturalOrder.class));
- cards.add(new SetCardInfo("Natural Spring", 102, Rarity.UNCOMMON, mage.cards.n.NaturalSpring.class));
- cards.add(new SetCardInfo("Nature's Cloak", 103, Rarity.RARE, mage.cards.n.NaturesCloak.class));
- cards.add(new SetCardInfo("Nature's Lore", 104, Rarity.COMMON, mage.cards.n.NaturesLore.class));
- cards.add(new SetCardInfo("Nature's Ruin", 26, Rarity.UNCOMMON, mage.cards.n.NaturesRuin.class));
- cards.add(new SetCardInfo("Needle Storm", 105, Rarity.UNCOMMON, mage.cards.n.NeedleStorm.class));
- cards.add(new SetCardInfo("Noxious Toad", 27, Rarity.UNCOMMON, mage.cards.n.NoxiousToad.class));
- cards.add(new SetCardInfo("Omen", 63, Rarity.COMMON, mage.cards.o.Omen.class));
- cards.add(new SetCardInfo("Owl Familiar", 64, Rarity.COMMON, mage.cards.o.OwlFamiliar.class));
- cards.add(new SetCardInfo("Panther Warriors", 106, Rarity.COMMON, mage.cards.p.PantherWarriors.class));
- cards.add(new SetCardInfo("Path of Peace", 183, Rarity.COMMON, mage.cards.p.PathOfPeace.class));
- cards.add(new SetCardInfo("Personal Tutor", 65, Rarity.UNCOMMON, mage.cards.p.PersonalTutor.class));
- cards.add(new SetCardInfo("Phantom Warrior", 66, Rarity.RARE, mage.cards.p.PhantomWarrior.class));
- cards.add(new SetCardInfo("Pillaging Horde", 147, Rarity.RARE, mage.cards.p.PillagingHorde.class));
- cards.add(new SetCardInfo("Plains", 215, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 216, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 217, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 218, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plant Elemental", 107, Rarity.UNCOMMON, mage.cards.p.PlantElemental.class));
- cards.add(new SetCardInfo("Primeval Force", 108, Rarity.RARE, mage.cards.p.PrimevalForce.class));
- cards.add(new SetCardInfo("Prosperity", 67, Rarity.RARE, mage.cards.p.Prosperity.class));
- cards.add(new SetCardInfo("Pyroclasm", 148, Rarity.RARE, mage.cards.p.Pyroclasm.class));
- cards.add(new SetCardInfo("Python", 28, Rarity.COMMON, mage.cards.p.Python.class));
- cards.add(new SetCardInfo("Raging Cougar", 149, Rarity.COMMON, mage.cards.r.RagingCougar.class));
- cards.add(new SetCardInfo("Raging Goblin", 150, Rarity.COMMON, mage.cards.r.RagingGoblin.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Raging Goblin", 151, Rarity.COMMON, mage.cards.r.RagingGoblin.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Raging Minotaur", 152, Rarity.COMMON, mage.cards.r.RagingMinotaur.class));
- cards.add(new SetCardInfo("Rain of Salt", 153, Rarity.UNCOMMON, mage.cards.r.RainOfSalt.class));
- cards.add(new SetCardInfo("Rain of Tears", 29, Rarity.UNCOMMON, mage.cards.r.RainOfTears.class));
- cards.add(new SetCardInfo("Raise Dead", 30, Rarity.COMMON, mage.cards.r.RaiseDead.class));
- cards.add(new SetCardInfo("Redwood Treefolk", 109, Rarity.COMMON, mage.cards.r.RedwoodTreefolk.class));
- cards.add(new SetCardInfo("Regal Unicorn", 184, Rarity.COMMON, mage.cards.r.RegalUnicorn.class));
- cards.add(new SetCardInfo("Renewing Dawn", 185, Rarity.UNCOMMON, mage.cards.r.RenewingDawn.class));
- cards.add(new SetCardInfo("Rowan Treefolk", 110, Rarity.COMMON, mage.cards.r.RowanTreefolk.class));
- cards.add(new SetCardInfo("Sacred Knight", 186, Rarity.COMMON, mage.cards.s.SacredKnight.class));
- cards.add(new SetCardInfo("Sacred Nectar", 187, Rarity.COMMON, mage.cards.s.SacredNectar.class));
- cards.add(new SetCardInfo("Scorching Spear", 154, Rarity.COMMON, mage.cards.s.ScorchingSpear.class));
- cards.add(new SetCardInfo("Scorching Winds", 155, Rarity.UNCOMMON, mage.cards.s.ScorchingWinds.class));
- cards.add(new SetCardInfo("Seasoned Marshal", 188, Rarity.UNCOMMON, mage.cards.s.SeasonedMarshal.class));
- cards.add(new SetCardInfo("Serpent Assassin", 31, Rarity.RARE, mage.cards.s.SerpentAssassin.class));
- cards.add(new SetCardInfo("Serpent Warrior", 32, Rarity.COMMON, mage.cards.s.SerpentWarrior.class));
- cards.add(new SetCardInfo("Skeletal Crocodile", 33, Rarity.COMMON, mage.cards.s.SkeletalCrocodile.class));
- cards.add(new SetCardInfo("Skeletal Snake", 34, Rarity.COMMON, mage.cards.s.SkeletalSnake.class));
- cards.add(new SetCardInfo("Snapping Drake", 68, Rarity.COMMON, mage.cards.s.SnappingDrake.class));
- cards.add(new SetCardInfo("Sorcerous Sight", 69, Rarity.COMMON, mage.cards.s.SorcerousSight.class));
- cards.add(new SetCardInfo("Soul Shred", 35, Rarity.COMMON, mage.cards.s.SoulShred.class));
- cards.add(new SetCardInfo("Spined Wurm", 111, Rarity.COMMON, mage.cards.s.SpinedWurm.class));
- cards.add(new SetCardInfo("Spiritual Guardian", 189, Rarity.RARE, mage.cards.s.SpiritualGuardian.class));
- cards.add(new SetCardInfo("Spitting Earth", 156, Rarity.COMMON, mage.cards.s.SpittingEarth.class));
- cards.add(new SetCardInfo("Spotted Griffin", 190, Rarity.COMMON, mage.cards.s.SpottedGriffin.class));
- cards.add(new SetCardInfo("Stalking Tiger", 112, Rarity.COMMON, mage.cards.s.StalkingTiger.class));
- cards.add(new SetCardInfo("Starlight", 191, Rarity.UNCOMMON, mage.cards.s.Starlight.class));
- cards.add(new SetCardInfo("Starlit Angel", 192, Rarity.UNCOMMON, mage.cards.s.StarlitAngel.class));
- cards.add(new SetCardInfo("Steadfastness", 193, Rarity.COMMON, mage.cards.s.Steadfastness.class));
- cards.add(new SetCardInfo("Stern Marshal", 194, Rarity.RARE, mage.cards.s.SternMarshal.class));
- cards.add(new SetCardInfo("Stone Rain", 157, Rarity.COMMON, mage.cards.s.StoneRain.class));
- cards.add(new SetCardInfo("Storm Crow", 70, Rarity.COMMON, mage.cards.s.StormCrow.class));
- cards.add(new SetCardInfo("Summer Bloom", 113, Rarity.RARE, mage.cards.s.SummerBloom.class));
- cards.add(new SetCardInfo("Swamp", 219, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 220, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 221, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 222, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Sylvan Tutor", 114, Rarity.RARE, mage.cards.s.SylvanTutor.class));
- cards.add(new SetCardInfo("Symbol of Unsummoning", 71, Rarity.COMMON, mage.cards.s.SymbolOfUnsummoning.class));
- cards.add(new SetCardInfo("Taunt", 72, Rarity.RARE, mage.cards.t.Taunt.class));
- cards.add(new SetCardInfo("Temporary Truce", 195, Rarity.RARE, mage.cards.t.TemporaryTruce.class));
- cards.add(new SetCardInfo("Theft of Dreams", 73, Rarity.UNCOMMON, mage.cards.t.TheftOfDreams.class));
- cards.add(new SetCardInfo("Thing from the Deep", 74, Rarity.RARE, mage.cards.t.ThingFromTheDeep.class));
- cards.add(new SetCardInfo("Thundering Wurm", 115, Rarity.RARE, mage.cards.t.ThunderingWurm.class));
- cards.add(new SetCardInfo("Thundermare", 158, Rarity.RARE, mage.cards.t.Thundermare.class));
- cards.add(new SetCardInfo("Tidal Surge", 75, Rarity.COMMON, mage.cards.t.TidalSurge.class));
- cards.add(new SetCardInfo("Time Ebb", 76, Rarity.COMMON, mage.cards.t.TimeEbb.class));
- cards.add(new SetCardInfo("Touch of Brilliance", 77, Rarity.COMMON, mage.cards.t.TouchOfBrilliance.class));
- cards.add(new SetCardInfo("Treetop Defense", 116, Rarity.RARE, mage.cards.t.TreetopDefense.class));
- cards.add(new SetCardInfo("Undying Beast", 36, Rarity.COMMON, mage.cards.u.UndyingBeast.class));
- cards.add(new SetCardInfo("Untamed Wilds", 117, Rarity.UNCOMMON, mage.cards.u.UntamedWilds.class));
- cards.add(new SetCardInfo("Valorous Charge", 196, Rarity.UNCOMMON, mage.cards.v.ValorousCharge.class));
- cards.add(new SetCardInfo("Vampiric Feast", 37, Rarity.UNCOMMON, mage.cards.v.VampiricFeast.class));
- cards.add(new SetCardInfo("Vampiric Touch", 38, Rarity.COMMON, mage.cards.v.VampiricTouch.class));
- cards.add(new SetCardInfo("Venerable Monk", 197, Rarity.UNCOMMON, mage.cards.v.VenerableMonk.class));
- cards.add(new SetCardInfo("Vengeance", 198, Rarity.UNCOMMON, mage.cards.v.Vengeance.class));
- cards.add(new SetCardInfo("Virtue's Ruin", 39, Rarity.UNCOMMON, mage.cards.v.VirtuesRuin.class));
- cards.add(new SetCardInfo("Volcanic Dragon", 159, Rarity.RARE, mage.cards.v.VolcanicDragon.class));
- cards.add(new SetCardInfo("Volcanic Hammer", 160, Rarity.COMMON, mage.cards.v.VolcanicHammer.class));
- cards.add(new SetCardInfo("Wall of Granite", 161, Rarity.UNCOMMON, mage.cards.w.WallOfGranite.class));
- cards.add(new SetCardInfo("Wall of Swords", 199, Rarity.UNCOMMON, mage.cards.w.WallOfSwords.class));
- cards.add(new SetCardInfo("Warrior's Charge", 200, Rarity.COMMON, WarriorsCharge.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Warrior's Charge", 201, Rarity.COMMON, WarriorsCharge.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Whiptail Wurm", 118, Rarity.UNCOMMON, mage.cards.w.WhiptailWurm.class));
- cards.add(new SetCardInfo("Wicked Pact", 40, Rarity.RARE, mage.cards.w.WickedPact.class));
- cards.add(new SetCardInfo("Willow Dryad", 119, Rarity.COMMON, mage.cards.w.WillowDryad.class));
- cards.add(new SetCardInfo("Wind Drake", 78, Rarity.COMMON, mage.cards.w.WindDrake.class));
- cards.add(new SetCardInfo("Winds of Change", 162, Rarity.RARE, mage.cards.w.WindsOfChange.class));
- cards.add(new SetCardInfo("Winter's Grasp", 120, Rarity.UNCOMMON, mage.cards.w.WintersGrasp.class));
- cards.add(new SetCardInfo("Withering Gaze", 79, Rarity.UNCOMMON, mage.cards.w.WitheringGaze.class));
- cards.add(new SetCardInfo("Wood Elves", 121, Rarity.RARE, mage.cards.w.WoodElves.class));
- cards.add(new SetCardInfo("Wrath of God", 202, Rarity.RARE, mage.cards.w.WrathOfGod.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.cards.d.DrySpell;
+import mage.cards.e.EliteCatWarrior;
+import mage.cards.w.WarriorsCharge;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author Plopman
+ */
+public final class Portal extends ExpansionSet {
+
+ private static final Portal instance = new Portal();
+
+ /**
+ *
+ * @return
+ */
+ public static Portal getInstance() {
+ return instance;
+ }
+
+ private Portal() {
+ super("Portal", "POR", ExpansionSet.buildDate(1997, 5, 1), SetType.SUPPLEMENTAL);
+ this.blockName = "Beginner";
+ this.hasBasicLands = true;
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Alabaster Dragon", 163, Rarity.RARE, mage.cards.a.AlabasterDragon.class));
+ cards.add(new SetCardInfo("Alluring Scent", 80, Rarity.RARE, mage.cards.a.AlluringScent.class));
+ cards.add(new SetCardInfo("Anaconda", 81, Rarity.UNCOMMON, mage.cards.a.Anaconda.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Anaconda", 82, Rarity.UNCOMMON, mage.cards.a.Anaconda.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ancestral Memories", 41, Rarity.RARE, mage.cards.a.AncestralMemories.class));
+ cards.add(new SetCardInfo("Angelic Blessing", 164, Rarity.COMMON, mage.cards.a.AngelicBlessing.class));
+ cards.add(new SetCardInfo("Archangel", 165, Rarity.RARE, mage.cards.a.Archangel.class));
+ cards.add(new SetCardInfo("Ardent Militia", 166, Rarity.UNCOMMON, mage.cards.a.ArdentMilitia.class));
+ cards.add(new SetCardInfo("Armageddon", 167, Rarity.RARE, mage.cards.a.Armageddon.class));
+ cards.add(new SetCardInfo("Armored Pegasus", 168, Rarity.COMMON, mage.cards.a.ArmoredPegasus.class));
+ cards.add(new SetCardInfo("Arrogant Vampire", 1, Rarity.UNCOMMON, mage.cards.a.ArrogantVampire.class));
+ cards.add(new SetCardInfo("Assassin's Blade", 2, Rarity.UNCOMMON, mage.cards.a.AssassinsBlade.class));
+ cards.add(new SetCardInfo("Balance of Power", 42, Rarity.RARE, mage.cards.b.BalanceOfPower.class));
+ cards.add(new SetCardInfo("Baleful Stare", 43, Rarity.UNCOMMON, mage.cards.b.BalefulStare.class));
+ cards.add(new SetCardInfo("Bee Sting", 83, Rarity.UNCOMMON, mage.cards.b.BeeSting.class));
+ cards.add(new SetCardInfo("Blaze", 122, Rarity.UNCOMMON, mage.cards.b.Blaze.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Blaze", 123, Rarity.UNCOMMON, mage.cards.b.Blaze.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Blessed Reversal", 169, Rarity.RARE, mage.cards.b.BlessedReversal.class));
+ cards.add(new SetCardInfo("Blinding Light", 170, Rarity.RARE, mage.cards.b.BlindingLight.class));
+ cards.add(new SetCardInfo("Bog Imp", 3, Rarity.COMMON, mage.cards.b.BogImp.class));
+ cards.add(new SetCardInfo("Bog Raiders", 4, Rarity.COMMON, mage.cards.b.BogRaiders.class));
+ cards.add(new SetCardInfo("Bog Wraith", 5, Rarity.UNCOMMON, mage.cards.b.BogWraith.class));
+ cards.add(new SetCardInfo("Boiling Seas", 124, Rarity.UNCOMMON, mage.cards.b.BoilingSeas.class));
+ cards.add(new SetCardInfo("Border Guard", 171, Rarity.COMMON, mage.cards.b.BorderGuard.class));
+ cards.add(new SetCardInfo("Breath of Life", 172, Rarity.COMMON, mage.cards.b.BreathOfLife.class));
+ cards.add(new SetCardInfo("Bull Hippo", 84, Rarity.UNCOMMON, mage.cards.b.BullHippo.class));
+ cards.add(new SetCardInfo("Burning Cloak", 125, Rarity.COMMON, mage.cards.b.BurningCloak.class));
+ cards.add(new SetCardInfo("Capricious Sorcerer", 44, Rarity.RARE, mage.cards.c.CapriciousSorcerer.class));
+ cards.add(new SetCardInfo("Charging Bandits", 6, Rarity.UNCOMMON, mage.cards.c.ChargingBandits.class));
+ cards.add(new SetCardInfo("Charging Paladin", 173, Rarity.UNCOMMON, mage.cards.c.ChargingPaladin.class));
+ cards.add(new SetCardInfo("Charging Rhino", 85, Rarity.RARE, mage.cards.c.ChargingRhino.class));
+ cards.add(new SetCardInfo("Cloak of Feathers", 45, Rarity.COMMON, mage.cards.c.CloakOfFeathers.class));
+ cards.add(new SetCardInfo("Cloud Dragon", 46, Rarity.RARE, mage.cards.c.CloudDragon.class));
+ cards.add(new SetCardInfo("Cloud Pirates", 47, Rarity.COMMON, mage.cards.c.CloudPirates.class));
+ cards.add(new SetCardInfo("Cloud Spirit", 48, Rarity.UNCOMMON, mage.cards.c.CloudSpirit.class));
+ cards.add(new SetCardInfo("Command of Unsummoning", 49, Rarity.UNCOMMON, mage.cards.c.CommandOfUnsummoning.class));
+ cards.add(new SetCardInfo("Coral Eel", 50, Rarity.COMMON, mage.cards.c.CoralEel.class));
+ cards.add(new SetCardInfo("Craven Giant", 126, Rarity.COMMON, mage.cards.c.CravenGiant.class));
+ cards.add(new SetCardInfo("Craven Knight", 7, Rarity.COMMON, mage.cards.c.CravenKnight.class));
+ cards.add(new SetCardInfo("Cruel Bargain", 8, Rarity.RARE, mage.cards.c.CruelBargain.class));
+ cards.add(new SetCardInfo("Cruel Fate", 51, Rarity.RARE, mage.cards.c.CruelFate.class));
+ cards.add(new SetCardInfo("Cruel Tutor", 9, Rarity.RARE, mage.cards.c.CruelTutor.class));
+ cards.add(new SetCardInfo("Deep-Sea Serpent", 52, Rarity.UNCOMMON, mage.cards.d.DeepSeaSerpent.class));
+ cards.add(new SetCardInfo("Deep Wood", 86, Rarity.UNCOMMON, mage.cards.d.DeepWood.class));
+ cards.add(new SetCardInfo("Defiant Stand", 174, Rarity.UNCOMMON, mage.cards.d.DefiantStand.class));
+ cards.add(new SetCardInfo("Deja Vu", 53, Rarity.COMMON, mage.cards.d.DejaVu.class));
+ cards.add(new SetCardInfo("Desert Drake", 127, Rarity.UNCOMMON, mage.cards.d.DesertDrake.class));
+ cards.add(new SetCardInfo("Devastation", 128, Rarity.RARE, mage.cards.d.Devastation.class));
+ cards.add(new SetCardInfo("Devoted Hero", 175, Rarity.COMMON, mage.cards.d.DevotedHero.class));
+ cards.add(new SetCardInfo("Djinn of the Lamp", 54, Rarity.RARE, mage.cards.d.DjinnOfTheLamp.class));
+ cards.add(new SetCardInfo("Dread Charge", 10, Rarity.RARE, mage.cards.d.DreadCharge.class));
+ cards.add(new SetCardInfo("Dread Reaper", 11, Rarity.RARE, mage.cards.d.DreadReaper.class));
+ cards.add(new SetCardInfo("Dry Spell", 12, Rarity.UNCOMMON, DrySpell.class));
+ cards.add(new SetCardInfo("Earthquake", 129, Rarity.RARE, mage.cards.e.Earthquake.class));
+ cards.add(new SetCardInfo("Ebon Dragon", 13, Rarity.RARE, mage.cards.e.EbonDragon.class));
+ cards.add(new SetCardInfo("Elite Cat Warrior", 87, Rarity.COMMON, EliteCatWarrior.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Elite Cat Warrior", 88, Rarity.COMMON, EliteCatWarrior.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Elven Cache", 89, Rarity.COMMON, mage.cards.e.ElvenCache.class));
+ cards.add(new SetCardInfo("Elvish Ranger", 90, Rarity.COMMON, mage.cards.e.ElvishRanger.class));
+ cards.add(new SetCardInfo("Endless Cockroaches", 14, Rarity.RARE, mage.cards.e.EndlessCockroaches.class));
+ cards.add(new SetCardInfo("Exhaustion", 55, Rarity.RARE, mage.cards.e.Exhaustion.class));
+ cards.add(new SetCardInfo("False Peace", 176, Rarity.COMMON, mage.cards.f.FalsePeace.class));
+ cards.add(new SetCardInfo("Feral Shadow", 15, Rarity.COMMON, mage.cards.f.FeralShadow.class));
+ cards.add(new SetCardInfo("Final Strike", 16, Rarity.RARE, mage.cards.f.FinalStrike.class));
+ cards.add(new SetCardInfo("Fire Dragon", 130, Rarity.RARE, mage.cards.f.FireDragon.class));
+ cards.add(new SetCardInfo("Fire Imp", 131, Rarity.UNCOMMON, mage.cards.f.FireImp.class));
+ cards.add(new SetCardInfo("Fire Snake", 132, Rarity.COMMON, mage.cards.f.FireSnake.class));
+ cards.add(new SetCardInfo("Fire Tempest", 133, Rarity.RARE, mage.cards.f.FireTempest.class));
+ cards.add(new SetCardInfo("Flashfires", 134, Rarity.UNCOMMON, mage.cards.f.Flashfires.class));
+ cards.add(new SetCardInfo("Fleet-Footed Monk", 177, Rarity.COMMON, mage.cards.f.FleetFootedMonk.class));
+ cards.add(new SetCardInfo("Flux", 56, Rarity.UNCOMMON, mage.cards.f.Flux.class));
+ cards.add(new SetCardInfo("Foot Soldiers", 178, Rarity.COMMON, mage.cards.f.FootSoldiers.class));
+ cards.add(new SetCardInfo("Forest", 203, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 204, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 205, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 206, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Fruition", 91, Rarity.COMMON, mage.cards.f.Fruition.class));
+ cards.add(new SetCardInfo("Giant Octopus", 57, Rarity.COMMON, mage.cards.g.GiantOctopus.class));
+ cards.add(new SetCardInfo("Giant Spider", 92, Rarity.COMMON, mage.cards.g.GiantSpider.class));
+ cards.add(new SetCardInfo("Gift of Estates", 179, Rarity.RARE, mage.cards.g.GiftOfEstates.class));
+ cards.add(new SetCardInfo("Goblin Bully", 136, Rarity.COMMON, mage.cards.g.GoblinBully.class));
+ cards.add(new SetCardInfo("Gorilla Warrior", 93, Rarity.COMMON, mage.cards.g.GorillaWarrior.class));
+ cards.add(new SetCardInfo("Gravedigger", 17, Rarity.UNCOMMON, mage.cards.g.Gravedigger.class));
+ cards.add(new SetCardInfo("Grizzly Bears", 94, Rarity.COMMON, mage.cards.g.GrizzlyBears.class));
+ cards.add(new SetCardInfo("Hand of Death", 18, Rarity.COMMON, mage.cards.h.HandOfDeath.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Hand of Death", 19, Rarity.COMMON, mage.cards.h.HandOfDeath.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Harsh Justice", 180, Rarity.RARE, mage.cards.h.HarshJustice.class));
+ cards.add(new SetCardInfo("Highland Giant", 137, Rarity.COMMON, mage.cards.h.HighlandGiant.class));
+ cards.add(new SetCardInfo("Hill Giant", 138, Rarity.COMMON, mage.cards.h.HillGiant.class));
+ cards.add(new SetCardInfo("Horned Turtle", 58, Rarity.COMMON, mage.cards.h.HornedTurtle.class));
+ cards.add(new SetCardInfo("Howling Fury", 20, Rarity.COMMON, mage.cards.h.HowlingFury.class));
+ cards.add(new SetCardInfo("Hulking Cyclops", 139, Rarity.UNCOMMON, mage.cards.h.HulkingCyclops.class));
+ cards.add(new SetCardInfo("Hulking Goblin", 140, Rarity.COMMON, mage.cards.h.HulkingGoblin.class));
+ cards.add(new SetCardInfo("Hurricane", 95, Rarity.RARE, mage.cards.h.Hurricane.class));
+ cards.add(new SetCardInfo("Ingenious Thief", 59, Rarity.UNCOMMON, mage.cards.i.IngeniousThief.class));
+ cards.add(new SetCardInfo("Island", 207, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 208, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 209, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 210, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Jungle Lion", 96, Rarity.COMMON, mage.cards.j.JungleLion.class));
+ cards.add(new SetCardInfo("Keen-Eyed Archers", 181, Rarity.COMMON, mage.cards.k.KeenEyedArchers.class));
+ cards.add(new SetCardInfo("King's Assassin", 21, Rarity.RARE, mage.cards.k.KingsAssassin.class));
+ cards.add(new SetCardInfo("Knight Errant", 182, Rarity.COMMON, mage.cards.k.KnightErrant.class));
+ cards.add(new SetCardInfo("Last Chance", 141, Rarity.RARE, mage.cards.l.LastChance.class));
+ cards.add(new SetCardInfo("Lava Axe", 142, Rarity.COMMON, mage.cards.l.LavaAxe.class));
+ cards.add(new SetCardInfo("Lava Flow", 143, Rarity.UNCOMMON, mage.cards.l.LavaFlow.class));
+ cards.add(new SetCardInfo("Lizard Warrior", 144, Rarity.COMMON, mage.cards.l.LizardWarrior.class));
+ cards.add(new SetCardInfo("Man-o'-War", 60, Rarity.UNCOMMON, mage.cards.m.ManOWar.class));
+ cards.add(new SetCardInfo("Mercenary Knight", 22, Rarity.RARE, mage.cards.m.MercenaryKnight.class));
+ cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 61, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class));
+ cards.add(new SetCardInfo("Mind Knives", 23, Rarity.COMMON, mage.cards.m.MindKnives.class));
+ cards.add(new SetCardInfo("Mind Rot", 24, Rarity.COMMON, mage.cards.m.MindRot.class));
+ cards.add(new SetCardInfo("Minotaur Warrior", 145, Rarity.COMMON, mage.cards.m.MinotaurWarrior.class));
+ cards.add(new SetCardInfo("Mobilize", 97, Rarity.COMMON, mage.cards.m.Mobilize.class));
+ cards.add(new SetCardInfo("Monstrous Growth", 98, Rarity.COMMON, mage.cards.m.MonstrousGrowth.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Monstrous Growth", 99, Rarity.COMMON, mage.cards.m.MonstrousGrowth.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Moon Sprite", 100, Rarity.UNCOMMON, mage.cards.m.MoonSprite.class));
+ cards.add(new SetCardInfo("Mountain", 211, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 212, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 213, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 214, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain Goat", 146, Rarity.UNCOMMON, mage.cards.m.MountainGoat.class));
+ cards.add(new SetCardInfo("Muck Rats", 25, Rarity.COMMON, mage.cards.m.MuckRats.class));
+ cards.add(new SetCardInfo("Mystic Denial", 62, Rarity.UNCOMMON, mage.cards.m.MysticDenial.class));
+ cards.add(new SetCardInfo("Natural Order", 101, Rarity.RARE, mage.cards.n.NaturalOrder.class));
+ cards.add(new SetCardInfo("Natural Spring", 102, Rarity.UNCOMMON, mage.cards.n.NaturalSpring.class));
+ cards.add(new SetCardInfo("Nature's Cloak", 103, Rarity.RARE, mage.cards.n.NaturesCloak.class));
+ cards.add(new SetCardInfo("Nature's Lore", 104, Rarity.COMMON, mage.cards.n.NaturesLore.class));
+ cards.add(new SetCardInfo("Nature's Ruin", 26, Rarity.UNCOMMON, mage.cards.n.NaturesRuin.class));
+ cards.add(new SetCardInfo("Needle Storm", 105, Rarity.UNCOMMON, mage.cards.n.NeedleStorm.class));
+ cards.add(new SetCardInfo("Noxious Toad", 27, Rarity.UNCOMMON, mage.cards.n.NoxiousToad.class));
+ cards.add(new SetCardInfo("Omen", 63, Rarity.COMMON, mage.cards.o.Omen.class));
+ cards.add(new SetCardInfo("Owl Familiar", 64, Rarity.COMMON, mage.cards.o.OwlFamiliar.class));
+ cards.add(new SetCardInfo("Panther Warriors", 106, Rarity.COMMON, mage.cards.p.PantherWarriors.class));
+ cards.add(new SetCardInfo("Path of Peace", 183, Rarity.COMMON, mage.cards.p.PathOfPeace.class));
+ cards.add(new SetCardInfo("Personal Tutor", 65, Rarity.UNCOMMON, mage.cards.p.PersonalTutor.class));
+ cards.add(new SetCardInfo("Phantom Warrior", 66, Rarity.RARE, mage.cards.p.PhantomWarrior.class));
+ cards.add(new SetCardInfo("Pillaging Horde", 147, Rarity.RARE, mage.cards.p.PillagingHorde.class));
+ cards.add(new SetCardInfo("Plains", 215, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 216, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 217, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 218, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plant Elemental", 107, Rarity.UNCOMMON, mage.cards.p.PlantElemental.class));
+ cards.add(new SetCardInfo("Primeval Force", 108, Rarity.RARE, mage.cards.p.PrimevalForce.class));
+ cards.add(new SetCardInfo("Prosperity", 67, Rarity.RARE, mage.cards.p.Prosperity.class));
+ cards.add(new SetCardInfo("Pyroclasm", 148, Rarity.RARE, mage.cards.p.Pyroclasm.class));
+ cards.add(new SetCardInfo("Python", 28, Rarity.COMMON, mage.cards.p.Python.class));
+ cards.add(new SetCardInfo("Raging Cougar", 149, Rarity.COMMON, mage.cards.r.RagingCougar.class));
+ cards.add(new SetCardInfo("Raging Goblin", 150, Rarity.COMMON, mage.cards.r.RagingGoblin.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Raging Goblin", 151, Rarity.COMMON, mage.cards.r.RagingGoblin.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Raging Minotaur", 152, Rarity.COMMON, mage.cards.r.RagingMinotaur.class));
+ cards.add(new SetCardInfo("Rain of Salt", 153, Rarity.UNCOMMON, mage.cards.r.RainOfSalt.class));
+ cards.add(new SetCardInfo("Rain of Tears", 29, Rarity.UNCOMMON, mage.cards.r.RainOfTears.class));
+ cards.add(new SetCardInfo("Raise Dead", 30, Rarity.COMMON, mage.cards.r.RaiseDead.class));
+ cards.add(new SetCardInfo("Redwood Treefolk", 109, Rarity.COMMON, mage.cards.r.RedwoodTreefolk.class));
+ cards.add(new SetCardInfo("Regal Unicorn", 184, Rarity.COMMON, mage.cards.r.RegalUnicorn.class));
+ cards.add(new SetCardInfo("Renewing Dawn", 185, Rarity.UNCOMMON, mage.cards.r.RenewingDawn.class));
+ cards.add(new SetCardInfo("Rowan Treefolk", 110, Rarity.COMMON, mage.cards.r.RowanTreefolk.class));
+ cards.add(new SetCardInfo("Sacred Knight", 186, Rarity.COMMON, mage.cards.s.SacredKnight.class));
+ cards.add(new SetCardInfo("Sacred Nectar", 187, Rarity.COMMON, mage.cards.s.SacredNectar.class));
+ cards.add(new SetCardInfo("Scorching Spear", 154, Rarity.COMMON, mage.cards.s.ScorchingSpear.class));
+ cards.add(new SetCardInfo("Scorching Winds", 155, Rarity.UNCOMMON, mage.cards.s.ScorchingWinds.class));
+ cards.add(new SetCardInfo("Seasoned Marshal", 188, Rarity.UNCOMMON, mage.cards.s.SeasonedMarshal.class));
+ cards.add(new SetCardInfo("Serpent Assassin", 31, Rarity.RARE, mage.cards.s.SerpentAssassin.class));
+ cards.add(new SetCardInfo("Serpent Warrior", 32, Rarity.COMMON, mage.cards.s.SerpentWarrior.class));
+ cards.add(new SetCardInfo("Skeletal Crocodile", 33, Rarity.COMMON, mage.cards.s.SkeletalCrocodile.class));
+ cards.add(new SetCardInfo("Skeletal Snake", 34, Rarity.COMMON, mage.cards.s.SkeletalSnake.class));
+ cards.add(new SetCardInfo("Snapping Drake", 68, Rarity.COMMON, mage.cards.s.SnappingDrake.class));
+ cards.add(new SetCardInfo("Sorcerous Sight", 69, Rarity.COMMON, mage.cards.s.SorcerousSight.class));
+ cards.add(new SetCardInfo("Soul Shred", 35, Rarity.COMMON, mage.cards.s.SoulShred.class));
+ cards.add(new SetCardInfo("Spined Wurm", 111, Rarity.COMMON, mage.cards.s.SpinedWurm.class));
+ cards.add(new SetCardInfo("Spiritual Guardian", 189, Rarity.RARE, mage.cards.s.SpiritualGuardian.class));
+ cards.add(new SetCardInfo("Spitting Earth", 156, Rarity.COMMON, mage.cards.s.SpittingEarth.class));
+ cards.add(new SetCardInfo("Spotted Griffin", 190, Rarity.COMMON, mage.cards.s.SpottedGriffin.class));
+ cards.add(new SetCardInfo("Stalking Tiger", 112, Rarity.COMMON, mage.cards.s.StalkingTiger.class));
+ cards.add(new SetCardInfo("Starlight", 191, Rarity.UNCOMMON, mage.cards.s.Starlight.class));
+ cards.add(new SetCardInfo("Starlit Angel", 192, Rarity.UNCOMMON, mage.cards.s.StarlitAngel.class));
+ cards.add(new SetCardInfo("Steadfastness", 193, Rarity.COMMON, mage.cards.s.Steadfastness.class));
+ cards.add(new SetCardInfo("Stern Marshal", 194, Rarity.RARE, mage.cards.s.SternMarshal.class));
+ cards.add(new SetCardInfo("Stone Rain", 157, Rarity.COMMON, mage.cards.s.StoneRain.class));
+ cards.add(new SetCardInfo("Storm Crow", 70, Rarity.COMMON, mage.cards.s.StormCrow.class));
+ cards.add(new SetCardInfo("Summer Bloom", 113, Rarity.RARE, mage.cards.s.SummerBloom.class));
+ cards.add(new SetCardInfo("Swamp", 219, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 220, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 221, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 222, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Sylvan Tutor", 114, Rarity.RARE, mage.cards.s.SylvanTutor.class));
+ cards.add(new SetCardInfo("Symbol of Unsummoning", 71, Rarity.COMMON, mage.cards.s.SymbolOfUnsummoning.class));
+ cards.add(new SetCardInfo("Taunt", 72, Rarity.RARE, mage.cards.t.Taunt.class));
+ cards.add(new SetCardInfo("Temporary Truce", 195, Rarity.RARE, mage.cards.t.TemporaryTruce.class));
+ cards.add(new SetCardInfo("Theft of Dreams", 73, Rarity.UNCOMMON, mage.cards.t.TheftOfDreams.class));
+ cards.add(new SetCardInfo("Thing from the Deep", 74, Rarity.RARE, mage.cards.t.ThingFromTheDeep.class));
+ cards.add(new SetCardInfo("Thundering Wurm", 115, Rarity.RARE, mage.cards.t.ThunderingWurm.class));
+ cards.add(new SetCardInfo("Thundermare", 158, Rarity.RARE, mage.cards.t.Thundermare.class));
+ cards.add(new SetCardInfo("Tidal Surge", 75, Rarity.COMMON, mage.cards.t.TidalSurge.class));
+ cards.add(new SetCardInfo("Time Ebb", 76, Rarity.COMMON, mage.cards.t.TimeEbb.class));
+ cards.add(new SetCardInfo("Touch of Brilliance", 77, Rarity.COMMON, mage.cards.t.TouchOfBrilliance.class));
+ cards.add(new SetCardInfo("Treetop Defense", 116, Rarity.RARE, mage.cards.t.TreetopDefense.class));
+ cards.add(new SetCardInfo("Undying Beast", 36, Rarity.COMMON, mage.cards.u.UndyingBeast.class));
+ cards.add(new SetCardInfo("Untamed Wilds", 117, Rarity.UNCOMMON, mage.cards.u.UntamedWilds.class));
+ cards.add(new SetCardInfo("Valorous Charge", 196, Rarity.UNCOMMON, mage.cards.v.ValorousCharge.class));
+ cards.add(new SetCardInfo("Vampiric Feast", 37, Rarity.UNCOMMON, mage.cards.v.VampiricFeast.class));
+ cards.add(new SetCardInfo("Vampiric Touch", 38, Rarity.COMMON, mage.cards.v.VampiricTouch.class));
+ cards.add(new SetCardInfo("Venerable Monk", 197, Rarity.UNCOMMON, mage.cards.v.VenerableMonk.class));
+ cards.add(new SetCardInfo("Vengeance", 198, Rarity.UNCOMMON, mage.cards.v.Vengeance.class));
+ cards.add(new SetCardInfo("Virtue's Ruin", 39, Rarity.UNCOMMON, mage.cards.v.VirtuesRuin.class));
+ cards.add(new SetCardInfo("Volcanic Dragon", 159, Rarity.RARE, mage.cards.v.VolcanicDragon.class));
+ cards.add(new SetCardInfo("Volcanic Hammer", 160, Rarity.COMMON, mage.cards.v.VolcanicHammer.class));
+ cards.add(new SetCardInfo("Wall of Granite", 161, Rarity.UNCOMMON, mage.cards.w.WallOfGranite.class));
+ cards.add(new SetCardInfo("Wall of Swords", 199, Rarity.UNCOMMON, mage.cards.w.WallOfSwords.class));
+ cards.add(new SetCardInfo("Warrior's Charge", 200, Rarity.COMMON, WarriorsCharge.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Warrior's Charge", 201, Rarity.COMMON, WarriorsCharge.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Whiptail Wurm", 118, Rarity.UNCOMMON, mage.cards.w.WhiptailWurm.class));
+ cards.add(new SetCardInfo("Wicked Pact", 40, Rarity.RARE, mage.cards.w.WickedPact.class));
+ cards.add(new SetCardInfo("Willow Dryad", 119, Rarity.COMMON, mage.cards.w.WillowDryad.class));
+ cards.add(new SetCardInfo("Wind Drake", 78, Rarity.COMMON, mage.cards.w.WindDrake.class));
+ cards.add(new SetCardInfo("Winds of Change", 162, Rarity.RARE, mage.cards.w.WindsOfChange.class));
+ cards.add(new SetCardInfo("Winter's Grasp", 120, Rarity.UNCOMMON, mage.cards.w.WintersGrasp.class));
+ cards.add(new SetCardInfo("Withering Gaze", 79, Rarity.UNCOMMON, mage.cards.w.WitheringGaze.class));
+ cards.add(new SetCardInfo("Wood Elves", 121, Rarity.RARE, mage.cards.w.WoodElves.class));
+ cards.add(new SetCardInfo("Wrath of God", 202, Rarity.RARE, mage.cards.w.WrathOfGod.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/PortalSecondAge.java b/Mage.Sets/src/mage/sets/PortalSecondAge.java
index 827a31692cd..f1c1a69e4b6 100644
--- a/Mage.Sets/src/mage/sets/PortalSecondAge.java
+++ b/Mage.Sets/src/mage/sets/PortalSecondAge.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author Plopman
*/
-public class PortalSecondAge extends ExpansionSet {
+public final class PortalSecondAge extends ExpansionSet {
private static final PortalSecondAge instance = new PortalSecondAge();
diff --git a/Mage.Sets/src/mage/sets/PortalThreeKingdoms.java b/Mage.Sets/src/mage/sets/PortalThreeKingdoms.java
index 9aba3151d9b..822982dece1 100644
--- a/Mage.Sets/src/mage/sets/PortalThreeKingdoms.java
+++ b/Mage.Sets/src/mage/sets/PortalThreeKingdoms.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class PortalThreeKingdoms extends ExpansionSet {
+public final class PortalThreeKingdoms extends ExpansionSet {
private static final PortalThreeKingdoms instance = new PortalThreeKingdoms();
diff --git a/Mage.Sets/src/mage/sets/PrereleaseEvents.java b/Mage.Sets/src/mage/sets/PrereleaseEvents.java
index 265bed8f6eb..332dd771a68 100644
--- a/Mage.Sets/src/mage/sets/PrereleaseEvents.java
+++ b/Mage.Sets/src/mage/sets/PrereleaseEvents.java
@@ -4,7 +4,7 @@ import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
-public class PrereleaseEvents extends ExpansionSet {
+public final class PrereleaseEvents extends ExpansionSet {
private static final PrereleaseEvents instance = new PrereleaseEvents();
diff --git a/Mage.Sets/src/mage/sets/ProTourPromos.java b/Mage.Sets/src/mage/sets/ProTourPromos.java
index a169dfd41c3..60ec4d2d8d8 100644
--- a/Mage.Sets/src/mage/sets/ProTourPromos.java
+++ b/Mage.Sets/src/mage/sets/ProTourPromos.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author JayDi85
*/
-public class ProTourPromos extends ExpansionSet {
+public final class ProTourPromos extends ExpansionSet {
private static final ProTourPromos instance = new ProTourPromos();
diff --git a/Mage.Sets/src/mage/sets/Prophecy.java b/Mage.Sets/src/mage/sets/Prophecy.java
index 6708779181c..036a62be8a3 100644
--- a/Mage.Sets/src/mage/sets/Prophecy.java
+++ b/Mage.Sets/src/mage/sets/Prophecy.java
@@ -1,198 +1,198 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class Prophecy extends ExpansionSet {
-
- private static final Prophecy instance = new Prophecy();
-
- public static Prophecy getInstance() {
- return instance;
- }
-
- private Prophecy() {
- super("Prophecy", "PCY", ExpansionSet.buildDate(2000, 4, 27), SetType.EXPANSION);
- this.blockName = "Masques";
- this.parentSet = MercadianMasques.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("Abolish", 1, Rarity.UNCOMMON, mage.cards.a.Abolish.class));
- cards.add(new SetCardInfo("Agent of Shauku", 55, Rarity.COMMON, mage.cards.a.AgentOfShauku.class));
- cards.add(new SetCardInfo("Alexi's Cloak", 29, Rarity.COMMON, mage.cards.a.AlexisCloak.class));
- cards.add(new SetCardInfo("Alexi, Zephyr Mage", 28, Rarity.RARE, mage.cards.a.AlexiZephyrMage.class));
- cards.add(new SetCardInfo("Aura Fracture", 2, Rarity.COMMON, mage.cards.a.AuraFracture.class));
- cards.add(new SetCardInfo("Avatar of Fury", 82, Rarity.RARE, mage.cards.a.AvatarOfFury.class));
- cards.add(new SetCardInfo("Avatar of Hope", 3, Rarity.RARE, mage.cards.a.AvatarOfHope.class));
- cards.add(new SetCardInfo("Avatar of Might", 109, Rarity.RARE, mage.cards.a.AvatarOfMight.class));
- cards.add(new SetCardInfo("Avatar of Will", 30, Rarity.RARE, mage.cards.a.AvatarOfWill.class));
- cards.add(new SetCardInfo("Avatar of Woe", 56, Rarity.RARE, mage.cards.a.AvatarOfWoe.class));
- cards.add(new SetCardInfo("Barbed Field", 83, Rarity.UNCOMMON, mage.cards.b.BarbedField.class));
- cards.add(new SetCardInfo("Blessed Wind", 4, Rarity.RARE, mage.cards.b.BlessedWind.class));
- cards.add(new SetCardInfo("Bog Elemental", 57, Rarity.RARE, mage.cards.b.BogElemental.class));
- cards.add(new SetCardInfo("Bog Glider", 58, Rarity.COMMON, mage.cards.b.BogGlider.class));
- cards.add(new SetCardInfo("Branded Brawlers", 84, Rarity.COMMON, mage.cards.b.BrandedBrawlers.class));
- cards.add(new SetCardInfo("Brutal Suppression", 85, Rarity.UNCOMMON, mage.cards.b.BrutalSuppression.class));
- cards.add(new SetCardInfo("Calming Verse", 110, Rarity.COMMON, mage.cards.c.CalmingVerse.class));
- cards.add(new SetCardInfo("Celestial Convergence", 5, Rarity.RARE, mage.cards.c.CelestialConvergence.class));
- cards.add(new SetCardInfo("Chilling Apparition", 59, Rarity.UNCOMMON, mage.cards.c.ChillingApparition.class));
- cards.add(new SetCardInfo("Chimeric Idol", 136, Rarity.UNCOMMON, mage.cards.c.ChimericIdol.class));
- cards.add(new SetCardInfo("Citadel of Pain", 86, Rarity.UNCOMMON, mage.cards.c.CitadelOfPain.class));
- cards.add(new SetCardInfo("Coastal Hornclaw", 31, Rarity.COMMON, mage.cards.c.CoastalHornclaw.class));
- cards.add(new SetCardInfo("Coffin Puppets", 60, Rarity.RARE, mage.cards.c.CoffinPuppets.class));
- cards.add(new SetCardInfo("Copper-Leaf Angel", 137, Rarity.RARE, mage.cards.c.CopperLeafAngel.class));
- cards.add(new SetCardInfo("Darba", 111, Rarity.UNCOMMON, mage.cards.d.Darba.class));
- cards.add(new SetCardInfo("Death Charmer", 61, Rarity.COMMON, mage.cards.d.DeathCharmer.class));
- cards.add(new SetCardInfo("Denying Wind", 32, Rarity.RARE, mage.cards.d.DenyingWind.class));
- cards.add(new SetCardInfo("Despoil", 62, Rarity.COMMON, mage.cards.d.Despoil.class));
- cards.add(new SetCardInfo("Devastate", 87, Rarity.COMMON, mage.cards.d.Devastate.class));
- cards.add(new SetCardInfo("Diving Griffin", 6, Rarity.COMMON, mage.cards.d.DivingGriffin.class));
- cards.add(new SetCardInfo("Dual Nature", 112, Rarity.RARE, mage.cards.d.DualNature.class));
- cards.add(new SetCardInfo("Elephant Resurgence", 113, Rarity.RARE, mage.cards.e.ElephantResurgence.class));
- cards.add(new SetCardInfo("Endbringer's Revel", 63, Rarity.UNCOMMON, mage.cards.e.EndbringersRevel.class));
- cards.add(new SetCardInfo("Entangler", 7, Rarity.UNCOMMON, mage.cards.e.Entangler.class));
- cards.add(new SetCardInfo("Excavation", 33, Rarity.UNCOMMON, mage.cards.e.Excavation.class));
- cards.add(new SetCardInfo("Excise", 8, Rarity.COMMON, mage.cards.e.Excise.class));
- cards.add(new SetCardInfo("Fault Riders", 88, Rarity.COMMON, mage.cards.f.FaultRiders.class));
- cards.add(new SetCardInfo("Fen Stalker", 64, Rarity.COMMON, mage.cards.f.FenStalker.class));
- cards.add(new SetCardInfo("Fickle Efreet", 89, Rarity.RARE, mage.cards.f.FickleEfreet.class));
- cards.add(new SetCardInfo("Flameshot", 90, Rarity.UNCOMMON, mage.cards.f.Flameshot.class));
- cards.add(new SetCardInfo("Flay", 65, Rarity.COMMON, mage.cards.f.Flay.class));
- cards.add(new SetCardInfo("Flowering Field", 9, Rarity.UNCOMMON, mage.cards.f.FloweringField.class));
- cards.add(new SetCardInfo("Foil", 34, Rarity.UNCOMMON, mage.cards.f.Foil.class));
- cards.add(new SetCardInfo("Forgotten Harvest", 114, Rarity.RARE, mage.cards.f.ForgottenHarvest.class));
- cards.add(new SetCardInfo("Glittering Lion", 10, Rarity.UNCOMMON, mage.cards.g.GlitteringLion.class));
- cards.add(new SetCardInfo("Glittering Lynx", 11, Rarity.COMMON, mage.cards.g.GlitteringLynx.class));
- cards.add(new SetCardInfo("Greel's Caress", 67, Rarity.COMMON, mage.cards.g.GreelsCaress.class));
- cards.add(new SetCardInfo("Greel, Mind Raker", 66, Rarity.RARE, mage.cards.g.GreelMindRaker.class));
- cards.add(new SetCardInfo("Gulf Squid", 35, Rarity.COMMON, mage.cards.g.GulfSquid.class));
- cards.add(new SetCardInfo("Hazy Homunculus", 36, Rarity.COMMON, mage.cards.h.HazyHomunculus.class));
- cards.add(new SetCardInfo("Heightened Awareness", 37, Rarity.RARE, mage.cards.h.HeightenedAwareness.class));
- cards.add(new SetCardInfo("Hollow Warrior", 138, Rarity.UNCOMMON, mage.cards.h.HollowWarrior.class));
- cards.add(new SetCardInfo("Infernal Genesis", 68, Rarity.RARE, mage.cards.i.InfernalGenesis.class));
- cards.add(new SetCardInfo("Inflame", 91, Rarity.COMMON, mage.cards.i.Inflame.class));
- cards.add(new SetCardInfo("Jeweled Spirit", 12, Rarity.RARE, mage.cards.j.JeweledSpirit.class));
- cards.add(new SetCardInfo("Jolrael, Empress of Beasts", 115, Rarity.RARE, mage.cards.j.JolraelEmpressOfBeasts.class));
- cards.add(new SetCardInfo("Jolrael's Favor", 116, Rarity.COMMON, mage.cards.j.JolraelsFavor.class));
- cards.add(new SetCardInfo("Keldon Arsonist", 92, Rarity.UNCOMMON, mage.cards.k.KeldonArsonist.class));
- cards.add(new SetCardInfo("Keldon Battlewagon", 139, Rarity.RARE, mage.cards.k.KeldonBattlewagon.class));
- cards.add(new SetCardInfo("Keldon Berserker", 93, Rarity.COMMON, mage.cards.k.KeldonBerserker.class));
- cards.add(new SetCardInfo("Keldon Firebombers", 94, Rarity.RARE, mage.cards.k.KeldonFirebombers.class));
- cards.add(new SetCardInfo("Latulla, Keldon Overseer", 95, Rarity.RARE, mage.cards.l.LatullaKeldonOverseer.class));
- cards.add(new SetCardInfo("Latulla's Orders", 96, Rarity.COMMON, mage.cards.l.LatullasOrders.class));
- cards.add(new SetCardInfo("Lesser Gargadon", 97, Rarity.UNCOMMON, mage.cards.l.LesserGargadon.class));
- cards.add(new SetCardInfo("Living Terrain", 117, Rarity.UNCOMMON, mage.cards.l.LivingTerrain.class));
- cards.add(new SetCardInfo("Mageta's Boon", 14, Rarity.COMMON, mage.cards.m.MagetasBoon.class));
- cards.add(new SetCardInfo("Mageta the Lion", 13, Rarity.RARE, mage.cards.m.MagetaTheLion.class));
- cards.add(new SetCardInfo("Mana Vapors", 38, Rarity.UNCOMMON, mage.cards.m.ManaVapors.class));
- cards.add(new SetCardInfo("Marsh Boa", 118, Rarity.COMMON, mage.cards.m.MarshBoa.class));
- cards.add(new SetCardInfo("Mercenary Informer", 15, Rarity.RARE, mage.cards.m.MercenaryInformer.class));
- cards.add(new SetCardInfo("Mine Bearer", 16, Rarity.COMMON, mage.cards.m.MineBearer.class));
- cards.add(new SetCardInfo("Mirror Strike", 17, Rarity.UNCOMMON, mage.cards.m.MirrorStrike.class));
- cards.add(new SetCardInfo("Mungha Wurm", 119, Rarity.RARE, mage.cards.m.MunghaWurm.class));
- cards.add(new SetCardInfo("Nakaya Shade", 69, Rarity.UNCOMMON, mage.cards.n.NakayaShade.class));
- cards.add(new SetCardInfo("Noxious Field", 70, Rarity.UNCOMMON, mage.cards.n.NoxiousField.class));
- cards.add(new SetCardInfo("Outbreak", 71, Rarity.UNCOMMON, mage.cards.o.Outbreak.class));
- cards.add(new SetCardInfo("Overburden", 39, Rarity.RARE, mage.cards.o.Overburden.class));
- cards.add(new SetCardInfo("Panic Attack", 98, Rarity.COMMON, mage.cards.p.PanicAttack.class));
- cards.add(new SetCardInfo("Pit Raptor", 72, Rarity.UNCOMMON, mage.cards.p.PitRaptor.class));
- cards.add(new SetCardInfo("Plague Fiend", 73, Rarity.COMMON, mage.cards.p.PlagueFiend.class));
- cards.add(new SetCardInfo("Plague Wind", 74, Rarity.RARE, mage.cards.p.PlagueWind.class));
- cards.add(new SetCardInfo("Psychic Theft", 40, Rarity.RARE, mage.cards.p.PsychicTheft.class));
- cards.add(new SetCardInfo("Pygmy Razorback", 120, Rarity.COMMON, mage.cards.p.PygmyRazorback.class));
- cards.add(new SetCardInfo("Quicksilver Wall", 41, Rarity.UNCOMMON, mage.cards.q.QuicksilverWall.class));
- cards.add(new SetCardInfo("Rebel Informer", 75, Rarity.RARE, mage.cards.r.RebelInformer.class));
- cards.add(new SetCardInfo("Rethink", 42, Rarity.COMMON, mage.cards.r.Rethink.class));
- cards.add(new SetCardInfo("Reveille Squad", 18, Rarity.UNCOMMON, mage.cards.r.ReveilleSquad.class));
- cards.add(new SetCardInfo("Rhystic Cave", 142, Rarity.UNCOMMON, mage.cards.r.RhysticCave.class));
- cards.add(new SetCardInfo("Rhystic Circle", 19, Rarity.COMMON, mage.cards.r.RhysticCircle.class));
- cards.add(new SetCardInfo("Rhystic Deluge", 43, Rarity.COMMON, mage.cards.r.RhysticDeluge.class));
- cards.add(new SetCardInfo("Rhystic Lightning", 99, Rarity.COMMON, mage.cards.r.RhysticLightning.class));
- cards.add(new SetCardInfo("Rhystic Scrying", 44, Rarity.UNCOMMON, mage.cards.r.RhysticScrying.class));
- cards.add(new SetCardInfo("Rhystic Shield", 20, Rarity.COMMON, mage.cards.r.RhysticShield.class));
- cards.add(new SetCardInfo("Rhystic Study", 45, Rarity.COMMON, mage.cards.r.RhysticStudy.class));
- cards.add(new SetCardInfo("Rhystic Syphon", 76, Rarity.UNCOMMON, mage.cards.r.RhysticSyphon.class));
- cards.add(new SetCardInfo("Rhystic Tutor", 77, Rarity.RARE, mage.cards.r.RhysticTutor.class));
- cards.add(new SetCardInfo("Ribbon Snake", 46, Rarity.COMMON, mage.cards.r.RibbonSnake.class));
- cards.add(new SetCardInfo("Rib Cage Spider", 121, Rarity.COMMON, mage.cards.r.RibCageSpider.class));
- cards.add(new SetCardInfo("Ridgeline Rager", 100, Rarity.COMMON, mage.cards.r.RidgelineRager.class));
- cards.add(new SetCardInfo("Root Cage", 122, Rarity.UNCOMMON, mage.cards.r.RootCage.class));
- cards.add(new SetCardInfo("Samite Sanctuary", 21, Rarity.RARE, mage.cards.s.SamiteSanctuary.class));
- cards.add(new SetCardInfo("Scoria Cat", 101, Rarity.UNCOMMON, mage.cards.s.ScoriaCat.class));
- cards.add(new SetCardInfo("Searing Wind", 103, Rarity.RARE, mage.cards.s.SearingWind.class));
- cards.add(new SetCardInfo("Shield Dancer", 23, Rarity.UNCOMMON, mage.cards.s.ShieldDancer.class));
- cards.add(new SetCardInfo("Shrouded Serpent", 47, Rarity.RARE, mage.cards.s.ShroudedSerpent.class));
- cards.add(new SetCardInfo("Silt Crawler", 123, Rarity.COMMON, mage.cards.s.SiltCrawler.class));
- cards.add(new SetCardInfo("Snag", 124, Rarity.UNCOMMON, mage.cards.s.Snag.class));
- cards.add(new SetCardInfo("Soul Charmer", 24, Rarity.COMMON, mage.cards.s.SoulCharmer.class));
- cards.add(new SetCardInfo("Spiketail Drake", 48, Rarity.UNCOMMON, mage.cards.s.SpiketailDrake.class));
- cards.add(new SetCardInfo("Spiketail Hatchling", 49, Rarity.COMMON, mage.cards.s.SpiketailHatchling.class));
- cards.add(new SetCardInfo("Spitting Spider", 125, Rarity.UNCOMMON, mage.cards.s.SpittingSpider.class));
- cards.add(new SetCardInfo("Spore Frog", 126, Rarity.COMMON, mage.cards.s.SporeFrog.class));
- cards.add(new SetCardInfo("Spur Grappler", 104, Rarity.COMMON, mage.cards.s.SpurGrappler.class));
- cards.add(new SetCardInfo("Squirrel Wrangler", 127, Rarity.RARE, mage.cards.s.SquirrelWrangler.class));
- cards.add(new SetCardInfo("Steal Strength", 79, Rarity.COMMON, mage.cards.s.StealStrength.class));
- cards.add(new SetCardInfo("Stormwatch Eagle", 50, Rarity.COMMON, mage.cards.s.StormwatchEagle.class));
- cards.add(new SetCardInfo("Sunken Field", 51, Rarity.UNCOMMON, mage.cards.s.SunkenField.class));
- cards.add(new SetCardInfo("Sword Dancer", 25, Rarity.UNCOMMON, mage.cards.s.SwordDancer.class));
- cards.add(new SetCardInfo("Task Mage Assembly", 105, Rarity.RARE, mage.cards.t.TaskMageAssembly.class));
- cards.add(new SetCardInfo("Thresher Beast", 128, Rarity.COMMON, mage.cards.t.ThresherBeast.class));
- cards.add(new SetCardInfo("Thrive", 129, Rarity.COMMON, mage.cards.t.Thrive.class));
- cards.add(new SetCardInfo("Trenching Steed", 26, Rarity.COMMON, mage.cards.t.TrenchingSteed.class));
- cards.add(new SetCardInfo("Troubled Healer", 27, Rarity.COMMON, mage.cards.t.TroubledHealer.class));
- cards.add(new SetCardInfo("Troublesome Spirit", 52, Rarity.RARE, mage.cards.t.TroublesomeSpirit.class));
- cards.add(new SetCardInfo("Verdant Field", 130, Rarity.UNCOMMON, mage.cards.v.VerdantField.class));
- cards.add(new SetCardInfo("Veteran Brawlers", 106, Rarity.RARE, mage.cards.v.VeteranBrawlers.class));
- cards.add(new SetCardInfo("Vintara Elephant", 131, Rarity.COMMON, mage.cards.v.VintaraElephant.class));
- cards.add(new SetCardInfo("Vintara Snapper", 132, Rarity.UNCOMMON, mage.cards.v.VintaraSnapper.class));
- cards.add(new SetCardInfo("Vitalizing Wind", 133, Rarity.RARE, mage.cards.v.VitalizingWind.class));
- cards.add(new SetCardInfo("Wall of Vipers", 80, Rarity.UNCOMMON, mage.cards.w.WallOfVipers.class));
- cards.add(new SetCardInfo("Well of Discovery", 140, Rarity.RARE, mage.cards.w.WellOfDiscovery.class));
- cards.add(new SetCardInfo("Well of Life", 141, Rarity.UNCOMMON, mage.cards.w.WellOfLife.class));
- cards.add(new SetCardInfo("Whip Sergeant", 107, Rarity.UNCOMMON, mage.cards.w.WhipSergeant.class));
- cards.add(new SetCardInfo("Whipstitched Zombie", 81, Rarity.COMMON, mage.cards.w.WhipstitchedZombie.class));
- cards.add(new SetCardInfo("Wild Might", 134, Rarity.COMMON, mage.cards.w.WildMight.class));
- cards.add(new SetCardInfo("Windscouter", 53, Rarity.UNCOMMON, mage.cards.w.Windscouter.class));
- cards.add(new SetCardInfo("Wing Storm", 135, Rarity.UNCOMMON, mage.cards.w.WingStorm.class));
- cards.add(new SetCardInfo("Wintermoon Mesa", 143, Rarity.RARE, mage.cards.w.WintermoonMesa.class));
- cards.add(new SetCardInfo("Withdraw", 54, Rarity.COMMON, mage.cards.w.Withdraw.class));
- cards.add(new SetCardInfo("Zerapa Minotaur", 108, Rarity.COMMON, mage.cards.z.ZerapaMinotaur.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Prophecy extends ExpansionSet {
+
+ private static final Prophecy instance = new Prophecy();
+
+ public static Prophecy getInstance() {
+ return instance;
+ }
+
+ private Prophecy() {
+ super("Prophecy", "PCY", ExpansionSet.buildDate(2000, 4, 27), SetType.EXPANSION);
+ this.blockName = "Masques";
+ this.parentSet = MercadianMasques.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("Abolish", 1, Rarity.UNCOMMON, mage.cards.a.Abolish.class));
+ cards.add(new SetCardInfo("Agent of Shauku", 55, Rarity.COMMON, mage.cards.a.AgentOfShauku.class));
+ cards.add(new SetCardInfo("Alexi's Cloak", 29, Rarity.COMMON, mage.cards.a.AlexisCloak.class));
+ cards.add(new SetCardInfo("Alexi, Zephyr Mage", 28, Rarity.RARE, mage.cards.a.AlexiZephyrMage.class));
+ cards.add(new SetCardInfo("Aura Fracture", 2, Rarity.COMMON, mage.cards.a.AuraFracture.class));
+ cards.add(new SetCardInfo("Avatar of Fury", 82, Rarity.RARE, mage.cards.a.AvatarOfFury.class));
+ cards.add(new SetCardInfo("Avatar of Hope", 3, Rarity.RARE, mage.cards.a.AvatarOfHope.class));
+ cards.add(new SetCardInfo("Avatar of Might", 109, Rarity.RARE, mage.cards.a.AvatarOfMight.class));
+ cards.add(new SetCardInfo("Avatar of Will", 30, Rarity.RARE, mage.cards.a.AvatarOfWill.class));
+ cards.add(new SetCardInfo("Avatar of Woe", 56, Rarity.RARE, mage.cards.a.AvatarOfWoe.class));
+ cards.add(new SetCardInfo("Barbed Field", 83, Rarity.UNCOMMON, mage.cards.b.BarbedField.class));
+ cards.add(new SetCardInfo("Blessed Wind", 4, Rarity.RARE, mage.cards.b.BlessedWind.class));
+ cards.add(new SetCardInfo("Bog Elemental", 57, Rarity.RARE, mage.cards.b.BogElemental.class));
+ cards.add(new SetCardInfo("Bog Glider", 58, Rarity.COMMON, mage.cards.b.BogGlider.class));
+ cards.add(new SetCardInfo("Branded Brawlers", 84, Rarity.COMMON, mage.cards.b.BrandedBrawlers.class));
+ cards.add(new SetCardInfo("Brutal Suppression", 85, Rarity.UNCOMMON, mage.cards.b.BrutalSuppression.class));
+ cards.add(new SetCardInfo("Calming Verse", 110, Rarity.COMMON, mage.cards.c.CalmingVerse.class));
+ cards.add(new SetCardInfo("Celestial Convergence", 5, Rarity.RARE, mage.cards.c.CelestialConvergence.class));
+ cards.add(new SetCardInfo("Chilling Apparition", 59, Rarity.UNCOMMON, mage.cards.c.ChillingApparition.class));
+ cards.add(new SetCardInfo("Chimeric Idol", 136, Rarity.UNCOMMON, mage.cards.c.ChimericIdol.class));
+ cards.add(new SetCardInfo("Citadel of Pain", 86, Rarity.UNCOMMON, mage.cards.c.CitadelOfPain.class));
+ cards.add(new SetCardInfo("Coastal Hornclaw", 31, Rarity.COMMON, mage.cards.c.CoastalHornclaw.class));
+ cards.add(new SetCardInfo("Coffin Puppets", 60, Rarity.RARE, mage.cards.c.CoffinPuppets.class));
+ cards.add(new SetCardInfo("Copper-Leaf Angel", 137, Rarity.RARE, mage.cards.c.CopperLeafAngel.class));
+ cards.add(new SetCardInfo("Darba", 111, Rarity.UNCOMMON, mage.cards.d.Darba.class));
+ cards.add(new SetCardInfo("Death Charmer", 61, Rarity.COMMON, mage.cards.d.DeathCharmer.class));
+ cards.add(new SetCardInfo("Denying Wind", 32, Rarity.RARE, mage.cards.d.DenyingWind.class));
+ cards.add(new SetCardInfo("Despoil", 62, Rarity.COMMON, mage.cards.d.Despoil.class));
+ cards.add(new SetCardInfo("Devastate", 87, Rarity.COMMON, mage.cards.d.Devastate.class));
+ cards.add(new SetCardInfo("Diving Griffin", 6, Rarity.COMMON, mage.cards.d.DivingGriffin.class));
+ cards.add(new SetCardInfo("Dual Nature", 112, Rarity.RARE, mage.cards.d.DualNature.class));
+ cards.add(new SetCardInfo("Elephant Resurgence", 113, Rarity.RARE, mage.cards.e.ElephantResurgence.class));
+ cards.add(new SetCardInfo("Endbringer's Revel", 63, Rarity.UNCOMMON, mage.cards.e.EndbringersRevel.class));
+ cards.add(new SetCardInfo("Entangler", 7, Rarity.UNCOMMON, mage.cards.e.Entangler.class));
+ cards.add(new SetCardInfo("Excavation", 33, Rarity.UNCOMMON, mage.cards.e.Excavation.class));
+ cards.add(new SetCardInfo("Excise", 8, Rarity.COMMON, mage.cards.e.Excise.class));
+ cards.add(new SetCardInfo("Fault Riders", 88, Rarity.COMMON, mage.cards.f.FaultRiders.class));
+ cards.add(new SetCardInfo("Fen Stalker", 64, Rarity.COMMON, mage.cards.f.FenStalker.class));
+ cards.add(new SetCardInfo("Fickle Efreet", 89, Rarity.RARE, mage.cards.f.FickleEfreet.class));
+ cards.add(new SetCardInfo("Flameshot", 90, Rarity.UNCOMMON, mage.cards.f.Flameshot.class));
+ cards.add(new SetCardInfo("Flay", 65, Rarity.COMMON, mage.cards.f.Flay.class));
+ cards.add(new SetCardInfo("Flowering Field", 9, Rarity.UNCOMMON, mage.cards.f.FloweringField.class));
+ cards.add(new SetCardInfo("Foil", 34, Rarity.UNCOMMON, mage.cards.f.Foil.class));
+ cards.add(new SetCardInfo("Forgotten Harvest", 114, Rarity.RARE, mage.cards.f.ForgottenHarvest.class));
+ cards.add(new SetCardInfo("Glittering Lion", 10, Rarity.UNCOMMON, mage.cards.g.GlitteringLion.class));
+ cards.add(new SetCardInfo("Glittering Lynx", 11, Rarity.COMMON, mage.cards.g.GlitteringLynx.class));
+ cards.add(new SetCardInfo("Greel's Caress", 67, Rarity.COMMON, mage.cards.g.GreelsCaress.class));
+ cards.add(new SetCardInfo("Greel, Mind Raker", 66, Rarity.RARE, mage.cards.g.GreelMindRaker.class));
+ cards.add(new SetCardInfo("Gulf Squid", 35, Rarity.COMMON, mage.cards.g.GulfSquid.class));
+ cards.add(new SetCardInfo("Hazy Homunculus", 36, Rarity.COMMON, mage.cards.h.HazyHomunculus.class));
+ cards.add(new SetCardInfo("Heightened Awareness", 37, Rarity.RARE, mage.cards.h.HeightenedAwareness.class));
+ cards.add(new SetCardInfo("Hollow Warrior", 138, Rarity.UNCOMMON, mage.cards.h.HollowWarrior.class));
+ cards.add(new SetCardInfo("Infernal Genesis", 68, Rarity.RARE, mage.cards.i.InfernalGenesis.class));
+ cards.add(new SetCardInfo("Inflame", 91, Rarity.COMMON, mage.cards.i.Inflame.class));
+ cards.add(new SetCardInfo("Jeweled Spirit", 12, Rarity.RARE, mage.cards.j.JeweledSpirit.class));
+ cards.add(new SetCardInfo("Jolrael, Empress of Beasts", 115, Rarity.RARE, mage.cards.j.JolraelEmpressOfBeasts.class));
+ cards.add(new SetCardInfo("Jolrael's Favor", 116, Rarity.COMMON, mage.cards.j.JolraelsFavor.class));
+ cards.add(new SetCardInfo("Keldon Arsonist", 92, Rarity.UNCOMMON, mage.cards.k.KeldonArsonist.class));
+ cards.add(new SetCardInfo("Keldon Battlewagon", 139, Rarity.RARE, mage.cards.k.KeldonBattlewagon.class));
+ cards.add(new SetCardInfo("Keldon Berserker", 93, Rarity.COMMON, mage.cards.k.KeldonBerserker.class));
+ cards.add(new SetCardInfo("Keldon Firebombers", 94, Rarity.RARE, mage.cards.k.KeldonFirebombers.class));
+ cards.add(new SetCardInfo("Latulla, Keldon Overseer", 95, Rarity.RARE, mage.cards.l.LatullaKeldonOverseer.class));
+ cards.add(new SetCardInfo("Latulla's Orders", 96, Rarity.COMMON, mage.cards.l.LatullasOrders.class));
+ cards.add(new SetCardInfo("Lesser Gargadon", 97, Rarity.UNCOMMON, mage.cards.l.LesserGargadon.class));
+ cards.add(new SetCardInfo("Living Terrain", 117, Rarity.UNCOMMON, mage.cards.l.LivingTerrain.class));
+ cards.add(new SetCardInfo("Mageta's Boon", 14, Rarity.COMMON, mage.cards.m.MagetasBoon.class));
+ cards.add(new SetCardInfo("Mageta the Lion", 13, Rarity.RARE, mage.cards.m.MagetaTheLion.class));
+ cards.add(new SetCardInfo("Mana Vapors", 38, Rarity.UNCOMMON, mage.cards.m.ManaVapors.class));
+ cards.add(new SetCardInfo("Marsh Boa", 118, Rarity.COMMON, mage.cards.m.MarshBoa.class));
+ cards.add(new SetCardInfo("Mercenary Informer", 15, Rarity.RARE, mage.cards.m.MercenaryInformer.class));
+ cards.add(new SetCardInfo("Mine Bearer", 16, Rarity.COMMON, mage.cards.m.MineBearer.class));
+ cards.add(new SetCardInfo("Mirror Strike", 17, Rarity.UNCOMMON, mage.cards.m.MirrorStrike.class));
+ cards.add(new SetCardInfo("Mungha Wurm", 119, Rarity.RARE, mage.cards.m.MunghaWurm.class));
+ cards.add(new SetCardInfo("Nakaya Shade", 69, Rarity.UNCOMMON, mage.cards.n.NakayaShade.class));
+ cards.add(new SetCardInfo("Noxious Field", 70, Rarity.UNCOMMON, mage.cards.n.NoxiousField.class));
+ cards.add(new SetCardInfo("Outbreak", 71, Rarity.UNCOMMON, mage.cards.o.Outbreak.class));
+ cards.add(new SetCardInfo("Overburden", 39, Rarity.RARE, mage.cards.o.Overburden.class));
+ cards.add(new SetCardInfo("Panic Attack", 98, Rarity.COMMON, mage.cards.p.PanicAttack.class));
+ cards.add(new SetCardInfo("Pit Raptor", 72, Rarity.UNCOMMON, mage.cards.p.PitRaptor.class));
+ cards.add(new SetCardInfo("Plague Fiend", 73, Rarity.COMMON, mage.cards.p.PlagueFiend.class));
+ cards.add(new SetCardInfo("Plague Wind", 74, Rarity.RARE, mage.cards.p.PlagueWind.class));
+ cards.add(new SetCardInfo("Psychic Theft", 40, Rarity.RARE, mage.cards.p.PsychicTheft.class));
+ cards.add(new SetCardInfo("Pygmy Razorback", 120, Rarity.COMMON, mage.cards.p.PygmyRazorback.class));
+ cards.add(new SetCardInfo("Quicksilver Wall", 41, Rarity.UNCOMMON, mage.cards.q.QuicksilverWall.class));
+ cards.add(new SetCardInfo("Rebel Informer", 75, Rarity.RARE, mage.cards.r.RebelInformer.class));
+ cards.add(new SetCardInfo("Rethink", 42, Rarity.COMMON, mage.cards.r.Rethink.class));
+ cards.add(new SetCardInfo("Reveille Squad", 18, Rarity.UNCOMMON, mage.cards.r.ReveilleSquad.class));
+ cards.add(new SetCardInfo("Rhystic Cave", 142, Rarity.UNCOMMON, mage.cards.r.RhysticCave.class));
+ cards.add(new SetCardInfo("Rhystic Circle", 19, Rarity.COMMON, mage.cards.r.RhysticCircle.class));
+ cards.add(new SetCardInfo("Rhystic Deluge", 43, Rarity.COMMON, mage.cards.r.RhysticDeluge.class));
+ cards.add(new SetCardInfo("Rhystic Lightning", 99, Rarity.COMMON, mage.cards.r.RhysticLightning.class));
+ cards.add(new SetCardInfo("Rhystic Scrying", 44, Rarity.UNCOMMON, mage.cards.r.RhysticScrying.class));
+ cards.add(new SetCardInfo("Rhystic Shield", 20, Rarity.COMMON, mage.cards.r.RhysticShield.class));
+ cards.add(new SetCardInfo("Rhystic Study", 45, Rarity.COMMON, mage.cards.r.RhysticStudy.class));
+ cards.add(new SetCardInfo("Rhystic Syphon", 76, Rarity.UNCOMMON, mage.cards.r.RhysticSyphon.class));
+ cards.add(new SetCardInfo("Rhystic Tutor", 77, Rarity.RARE, mage.cards.r.RhysticTutor.class));
+ cards.add(new SetCardInfo("Ribbon Snake", 46, Rarity.COMMON, mage.cards.r.RibbonSnake.class));
+ cards.add(new SetCardInfo("Rib Cage Spider", 121, Rarity.COMMON, mage.cards.r.RibCageSpider.class));
+ cards.add(new SetCardInfo("Ridgeline Rager", 100, Rarity.COMMON, mage.cards.r.RidgelineRager.class));
+ cards.add(new SetCardInfo("Root Cage", 122, Rarity.UNCOMMON, mage.cards.r.RootCage.class));
+ cards.add(new SetCardInfo("Samite Sanctuary", 21, Rarity.RARE, mage.cards.s.SamiteSanctuary.class));
+ cards.add(new SetCardInfo("Scoria Cat", 101, Rarity.UNCOMMON, mage.cards.s.ScoriaCat.class));
+ cards.add(new SetCardInfo("Searing Wind", 103, Rarity.RARE, mage.cards.s.SearingWind.class));
+ cards.add(new SetCardInfo("Shield Dancer", 23, Rarity.UNCOMMON, mage.cards.s.ShieldDancer.class));
+ cards.add(new SetCardInfo("Shrouded Serpent", 47, Rarity.RARE, mage.cards.s.ShroudedSerpent.class));
+ cards.add(new SetCardInfo("Silt Crawler", 123, Rarity.COMMON, mage.cards.s.SiltCrawler.class));
+ cards.add(new SetCardInfo("Snag", 124, Rarity.UNCOMMON, mage.cards.s.Snag.class));
+ cards.add(new SetCardInfo("Soul Charmer", 24, Rarity.COMMON, mage.cards.s.SoulCharmer.class));
+ cards.add(new SetCardInfo("Spiketail Drake", 48, Rarity.UNCOMMON, mage.cards.s.SpiketailDrake.class));
+ cards.add(new SetCardInfo("Spiketail Hatchling", 49, Rarity.COMMON, mage.cards.s.SpiketailHatchling.class));
+ cards.add(new SetCardInfo("Spitting Spider", 125, Rarity.UNCOMMON, mage.cards.s.SpittingSpider.class));
+ cards.add(new SetCardInfo("Spore Frog", 126, Rarity.COMMON, mage.cards.s.SporeFrog.class));
+ cards.add(new SetCardInfo("Spur Grappler", 104, Rarity.COMMON, mage.cards.s.SpurGrappler.class));
+ cards.add(new SetCardInfo("Squirrel Wrangler", 127, Rarity.RARE, mage.cards.s.SquirrelWrangler.class));
+ cards.add(new SetCardInfo("Steal Strength", 79, Rarity.COMMON, mage.cards.s.StealStrength.class));
+ cards.add(new SetCardInfo("Stormwatch Eagle", 50, Rarity.COMMON, mage.cards.s.StormwatchEagle.class));
+ cards.add(new SetCardInfo("Sunken Field", 51, Rarity.UNCOMMON, mage.cards.s.SunkenField.class));
+ cards.add(new SetCardInfo("Sword Dancer", 25, Rarity.UNCOMMON, mage.cards.s.SwordDancer.class));
+ cards.add(new SetCardInfo("Task Mage Assembly", 105, Rarity.RARE, mage.cards.t.TaskMageAssembly.class));
+ cards.add(new SetCardInfo("Thresher Beast", 128, Rarity.COMMON, mage.cards.t.ThresherBeast.class));
+ cards.add(new SetCardInfo("Thrive", 129, Rarity.COMMON, mage.cards.t.Thrive.class));
+ cards.add(new SetCardInfo("Trenching Steed", 26, Rarity.COMMON, mage.cards.t.TrenchingSteed.class));
+ cards.add(new SetCardInfo("Troubled Healer", 27, Rarity.COMMON, mage.cards.t.TroubledHealer.class));
+ cards.add(new SetCardInfo("Troublesome Spirit", 52, Rarity.RARE, mage.cards.t.TroublesomeSpirit.class));
+ cards.add(new SetCardInfo("Verdant Field", 130, Rarity.UNCOMMON, mage.cards.v.VerdantField.class));
+ cards.add(new SetCardInfo("Veteran Brawlers", 106, Rarity.RARE, mage.cards.v.VeteranBrawlers.class));
+ cards.add(new SetCardInfo("Vintara Elephant", 131, Rarity.COMMON, mage.cards.v.VintaraElephant.class));
+ cards.add(new SetCardInfo("Vintara Snapper", 132, Rarity.UNCOMMON, mage.cards.v.VintaraSnapper.class));
+ cards.add(new SetCardInfo("Vitalizing Wind", 133, Rarity.RARE, mage.cards.v.VitalizingWind.class));
+ cards.add(new SetCardInfo("Wall of Vipers", 80, Rarity.UNCOMMON, mage.cards.w.WallOfVipers.class));
+ cards.add(new SetCardInfo("Well of Discovery", 140, Rarity.RARE, mage.cards.w.WellOfDiscovery.class));
+ cards.add(new SetCardInfo("Well of Life", 141, Rarity.UNCOMMON, mage.cards.w.WellOfLife.class));
+ cards.add(new SetCardInfo("Whip Sergeant", 107, Rarity.UNCOMMON, mage.cards.w.WhipSergeant.class));
+ cards.add(new SetCardInfo("Whipstitched Zombie", 81, Rarity.COMMON, mage.cards.w.WhipstitchedZombie.class));
+ cards.add(new SetCardInfo("Wild Might", 134, Rarity.COMMON, mage.cards.w.WildMight.class));
+ cards.add(new SetCardInfo("Windscouter", 53, Rarity.UNCOMMON, mage.cards.w.Windscouter.class));
+ cards.add(new SetCardInfo("Wing Storm", 135, Rarity.UNCOMMON, mage.cards.w.WingStorm.class));
+ cards.add(new SetCardInfo("Wintermoon Mesa", 143, Rarity.RARE, mage.cards.w.WintermoonMesa.class));
+ cards.add(new SetCardInfo("Withdraw", 54, Rarity.COMMON, mage.cards.w.Withdraw.class));
+ cards.add(new SetCardInfo("Zerapa Minotaur", 108, Rarity.COMMON, mage.cards.z.ZerapaMinotaur.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/RavnicaCityOfGuilds.java b/Mage.Sets/src/mage/sets/RavnicaCityOfGuilds.java
index 02b7de36443..789e756bf67 100644
--- a/Mage.Sets/src/mage/sets/RavnicaCityOfGuilds.java
+++ b/Mage.Sets/src/mage/sets/RavnicaCityOfGuilds.java
@@ -1,362 +1,362 @@
-/*
-* 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author loki
- */
-public class RavnicaCityOfGuilds extends ExpansionSet {
-
- private static final RavnicaCityOfGuilds instance = new RavnicaCityOfGuilds();
-
- public static RavnicaCityOfGuilds getInstance() {
- return instance;
- }
-
- private RavnicaCityOfGuilds() {
- super("Ravnica: City of Guilds", "RAV", ExpansionSet.buildDate(2005, 9, 24), SetType.EXPANSION);
- this.blockName = "Ravnica";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Agrus Kos, Wojek Veteran", 190, Rarity.RARE, mage.cards.a.AgrusKosWojekVeteran.class));
- cards.add(new SetCardInfo("Auratouched Mage", 1, Rarity.UNCOMMON, mage.cards.a.AuratouchedMage.class));
- cards.add(new SetCardInfo("Autochthon Wurm", 191, Rarity.RARE, mage.cards.a.AutochthonWurm.class));
- cards.add(new SetCardInfo("Barbarian Riftcutter", 114, Rarity.COMMON, mage.cards.b.BarbarianRiftcutter.class));
- cards.add(new SetCardInfo("Bathe in Light", 2, Rarity.UNCOMMON, mage.cards.b.BatheInLight.class));
- cards.add(new SetCardInfo("Belltower Sphinx", 38, Rarity.UNCOMMON, mage.cards.b.BelltowerSphinx.class));
- cards.add(new SetCardInfo("Benevolent Ancestor", 3, Rarity.COMMON, mage.cards.b.BenevolentAncestor.class));
- cards.add(new SetCardInfo("Birds of Paradise", 153, Rarity.RARE, mage.cards.b.BirdsOfParadise.class));
- cards.add(new SetCardInfo("Blazing Archon", 4, Rarity.RARE, mage.cards.b.BlazingArchon.class));
- cards.add(new SetCardInfo("Blockbuster", 115, Rarity.UNCOMMON, mage.cards.b.Blockbuster.class));
- cards.add(new SetCardInfo("Blood Funnel", 77, Rarity.RARE, mage.cards.b.BloodFunnel.class));
- cards.add(new SetCardInfo("Bloodbond March", 192, Rarity.RARE, mage.cards.b.BloodbondMarch.class));
- cards.add(new SetCardInfo("Bloodletter Quill", 254, Rarity.RARE, mage.cards.b.BloodletterQuill.class));
- cards.add(new SetCardInfo("Boros Fury-Shield", 5, Rarity.COMMON, mage.cards.b.BorosFuryShield.class));
- cards.add(new SetCardInfo("Boros Garrison", 275, Rarity.COMMON, mage.cards.b.BorosGarrison.class));
- cards.add(new SetCardInfo("Boros Guildmage", 242, Rarity.UNCOMMON, mage.cards.b.BorosGuildmage.class));
- cards.add(new SetCardInfo("Boros Recruit", 243, Rarity.COMMON, mage.cards.b.BorosRecruit.class));
- cards.add(new SetCardInfo("Boros Signet", 255, Rarity.COMMON, mage.cards.b.BorosSignet.class));
- cards.add(new SetCardInfo("Boros Swiftblade", 193, Rarity.UNCOMMON, mage.cards.b.BorosSwiftblade.class));
- cards.add(new SetCardInfo("Bottled Cloister", 256, Rarity.RARE, mage.cards.b.BottledCloister.class));
- cards.add(new SetCardInfo("Brainspoil", 78, Rarity.COMMON, mage.cards.b.Brainspoil.class));
- cards.add(new SetCardInfo("Bramble Elemental", 154, Rarity.COMMON, mage.cards.b.BrambleElemental.class));
- cards.add(new SetCardInfo("Breath of Fury", 116, Rarity.RARE, mage.cards.b.BreathOfFury.class));
- cards.add(new SetCardInfo("Brightflame", 194, Rarity.RARE, mage.cards.b.Brightflame.class));
- cards.add(new SetCardInfo("Caregiver", 6, Rarity.COMMON, mage.cards.c.Caregiver.class));
- cards.add(new SetCardInfo("Carrion Howler", 79, Rarity.UNCOMMON, mage.cards.c.CarrionHowler.class));
- cards.add(new SetCardInfo("Carven Caryatid", 155, Rarity.UNCOMMON, mage.cards.c.CarvenCaryatid.class));
- cards.add(new SetCardInfo("Centaur Safeguard", 244, Rarity.COMMON, mage.cards.c.CentaurSafeguard.class));
- cards.add(new SetCardInfo("Cerulean Sphinx", 39, Rarity.RARE, mage.cards.c.CeruleanSphinx.class));
- cards.add(new SetCardInfo("Chant of Vitu-Ghazi", 7, Rarity.UNCOMMON, mage.cards.c.ChantOfVituGhazi.class));
- cards.add(new SetCardInfo("Char", 117, Rarity.RARE, mage.cards.c.Char.class));
- cards.add(new SetCardInfo("Chord of Calling", 156, Rarity.RARE, mage.cards.c.ChordOfCalling.class));
- cards.add(new SetCardInfo("Chorus of the Conclave", 195, Rarity.RARE, mage.cards.c.ChorusOfTheConclave.class));
- cards.add(new SetCardInfo("Circu, Dimir Lobotomist", 196, Rarity.RARE, mage.cards.c.CircuDimirLobotomist.class));
- cards.add(new SetCardInfo("Civic Wayfinder", 157, Rarity.COMMON, mage.cards.c.CivicWayfinder.class));
- cards.add(new SetCardInfo("Cleansing Beam", 118, Rarity.UNCOMMON, mage.cards.c.CleansingBeam.class));
- cards.add(new SetCardInfo("Clinging Darkness", 80, Rarity.COMMON, mage.cards.c.ClingingDarkness.class));
- cards.add(new SetCardInfo("Cloudstone Curio", 257, Rarity.RARE, mage.cards.c.CloudstoneCurio.class));
- cards.add(new SetCardInfo("Clutch of the Undercity", 197, Rarity.UNCOMMON, mage.cards.c.ClutchOfTheUndercity.class));
- cards.add(new SetCardInfo("Coalhauler Swine", 119, Rarity.COMMON, mage.cards.c.CoalhaulerSwine.class));
- cards.add(new SetCardInfo("Compulsive Research", 40, Rarity.COMMON, mage.cards.c.CompulsiveResearch.class));
- cards.add(new SetCardInfo("Concerted Effort", 8, Rarity.RARE, mage.cards.c.ConcertedEffort.class));
- cards.add(new SetCardInfo("Conclave Equenaut", 9, Rarity.COMMON, mage.cards.c.ConclaveEquenaut.class));
- cards.add(new SetCardInfo("Conclave Phalanx", 10, Rarity.UNCOMMON, mage.cards.c.ConclavePhalanx.class));
- cards.add(new SetCardInfo("Conclave's Blessing", 11, Rarity.COMMON, mage.cards.c.ConclavesBlessing.class));
- cards.add(new SetCardInfo("Congregation at Dawn", 198, Rarity.UNCOMMON, mage.cards.c.CongregationAtDawn.class));
- cards.add(new SetCardInfo("Consult the Necrosages", 199, Rarity.COMMON, mage.cards.c.ConsultTheNecrosages.class));
- cards.add(new SetCardInfo("Convolute", 41, Rarity.COMMON, mage.cards.c.Convolute.class));
- cards.add(new SetCardInfo("Copy Enchantment", 42, Rarity.RARE, mage.cards.c.CopyEnchantment.class));
- cards.add(new SetCardInfo("Courier Hawk", 12, Rarity.COMMON, mage.cards.c.CourierHawk.class));
- cards.add(new SetCardInfo("Crown of Convergence", 258, Rarity.RARE, mage.cards.c.CrownOfConvergence.class));
- cards.add(new SetCardInfo("Cyclopean Snare", 259, Rarity.UNCOMMON, mage.cards.c.CyclopeanSnare.class));
- cards.add(new SetCardInfo("Darkblast", 82, Rarity.UNCOMMON, mage.cards.d.Darkblast.class));
- cards.add(new SetCardInfo("Dark Confidant", 81, Rarity.RARE, mage.cards.d.DarkConfidant.class));
- cards.add(new SetCardInfo("Dark Heart of the Wood", 200, Rarity.UNCOMMON, mage.cards.d.DarkHeartOfTheWood.class));
- cards.add(new SetCardInfo("Devouring Light", 13, Rarity.UNCOMMON, mage.cards.d.DevouringLight.class));
- cards.add(new SetCardInfo("Dimir Aqueduct", 276, Rarity.COMMON, mage.cards.d.DimirAqueduct.class));
- cards.add(new SetCardInfo("Dimir Cutpurse", 201, Rarity.RARE, mage.cards.d.DimirCutpurse.class));
- cards.add(new SetCardInfo("Dimir Doppelganger", 202, Rarity.RARE, mage.cards.d.DimirDoppelganger.class));
- cards.add(new SetCardInfo("Dimir Guildmage", 245, Rarity.UNCOMMON, mage.cards.d.DimirGuildmage.class));
- cards.add(new SetCardInfo("Dimir House Guard", 83, Rarity.COMMON, mage.cards.d.DimirHouseGuard.class));
- cards.add(new SetCardInfo("Dimir Infiltrator", 203, Rarity.COMMON, mage.cards.d.DimirInfiltrator.class));
- cards.add(new SetCardInfo("Dimir Machinations", 84, Rarity.UNCOMMON, mage.cards.d.DimirMachinations.class));
- cards.add(new SetCardInfo("Dimir Signet", 260, Rarity.COMMON, mage.cards.d.DimirSignet.class));
- cards.add(new SetCardInfo("Disembowel", 85, Rarity.COMMON, mage.cards.d.Disembowel.class));
- cards.add(new SetCardInfo("Divebomber Griffin", 14, Rarity.UNCOMMON, mage.cards.d.DivebomberGriffin.class));
- cards.add(new SetCardInfo("Dizzy Spell", 43, Rarity.COMMON, mage.cards.d.DizzySpell.class));
- cards.add(new SetCardInfo("Dogpile", 120, Rarity.COMMON, mage.cards.d.Dogpile.class));
- cards.add(new SetCardInfo("Doubling Season", 158, Rarity.RARE, mage.cards.d.DoublingSeason.class));
- cards.add(new SetCardInfo("Dowsing Shaman", 159, Rarity.UNCOMMON, mage.cards.d.DowsingShaman.class));
- cards.add(new SetCardInfo("Drake Familiar", 44, Rarity.COMMON, mage.cards.d.DrakeFamiliar.class));
- cards.add(new SetCardInfo("Dream Leash", 45, Rarity.RARE, mage.cards.d.DreamLeash.class));
- cards.add(new SetCardInfo("Drift of Phantasms", 46, Rarity.COMMON, mage.cards.d.DriftOfPhantasms.class));
- cards.add(new SetCardInfo("Dromad Purebred", 15, Rarity.COMMON, mage.cards.d.DromadPurebred.class));
- cards.add(new SetCardInfo("Drooling Groodion", 204, Rarity.UNCOMMON, mage.cards.d.DroolingGroodion.class));
- cards.add(new SetCardInfo("Dryad's Caress", 160, Rarity.COMMON, mage.cards.d.DryadsCaress.class));
- cards.add(new SetCardInfo("Duskmantle, House of Shadow", 277, Rarity.UNCOMMON, mage.cards.d.DuskmantleHouseOfShadow.class));
- cards.add(new SetCardInfo("Elves of Deep Shadow", 161, Rarity.COMMON, mage.cards.e.ElvesOfDeepShadow.class));
- cards.add(new SetCardInfo("Elvish Skysweeper", 162, Rarity.COMMON, mage.cards.e.ElvishSkysweeper.class));
- cards.add(new SetCardInfo("Empty the Catacombs", 86, Rarity.RARE, mage.cards.e.EmptyTheCatacombs.class));
- cards.add(new SetCardInfo("Ethereal Usher", 47, Rarity.UNCOMMON, mage.cards.e.EtherealUsher.class));
- cards.add(new SetCardInfo("Excruciator", 121, Rarity.RARE, mage.cards.e.Excruciator.class));
- cards.add(new SetCardInfo("Eye of the Storm", 48, Rarity.RARE, mage.cards.e.EyeOfTheStorm.class));
- cards.add(new SetCardInfo("Faith's Fetters", 16, Rarity.COMMON, mage.cards.f.FaithsFetters.class));
- cards.add(new SetCardInfo("Farseek", 163, Rarity.COMMON, mage.cards.f.Farseek.class));
- cards.add(new SetCardInfo("Festival of the Guildpact", 17, Rarity.UNCOMMON, mage.cards.f.FestivalOfTheGuildpact.class));
- cards.add(new SetCardInfo("Fiery Conclusion", 122, Rarity.COMMON, mage.cards.f.FieryConclusion.class));
- cards.add(new SetCardInfo("Firemane Angel", 205, Rarity.RARE, mage.cards.f.FiremaneAngel.class));
- cards.add(new SetCardInfo("Fists of Ironwood", 164, Rarity.COMMON, mage.cards.f.FistsOfIronwood.class));
- cards.add(new SetCardInfo("Flame Fusillade", 123, Rarity.RARE, mage.cards.f.FlameFusillade.class));
- cards.add(new SetCardInfo("Flame-Kin Zealot", 206, Rarity.UNCOMMON, mage.cards.f.FlameKinZealot.class));
- cards.add(new SetCardInfo("Flash Conscription", 124, Rarity.UNCOMMON, mage.cards.f.FlashConscription.class));
- cards.add(new SetCardInfo("Flickerform", 18, Rarity.RARE, mage.cards.f.Flickerform.class));
- cards.add(new SetCardInfo("Flight of Fancy", 49, Rarity.COMMON, mage.cards.f.FlightOfFancy.class));
- cards.add(new SetCardInfo("Flow of Ideas", 50, Rarity.UNCOMMON, mage.cards.f.FlowOfIdeas.class));
- cards.add(new SetCardInfo("Followed Footsteps", 51, Rarity.RARE, mage.cards.f.FollowedFootsteps.class));
- cards.add(new SetCardInfo("Forest", 303, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 304, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 305, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 306, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Frenzied Goblin", 125, Rarity.UNCOMMON, mage.cards.f.FrenziedGoblin.class));
- cards.add(new SetCardInfo("Galvanic Arc", 126, Rarity.COMMON, mage.cards.g.GalvanicArc.class));
- cards.add(new SetCardInfo("Gate Hound", 19, Rarity.COMMON, mage.cards.g.GateHound.class));
- cards.add(new SetCardInfo("Gather Courage", 165, Rarity.COMMON, mage.cards.g.GatherCourage.class));
- cards.add(new SetCardInfo("Gaze of the Gorgon", 246, Rarity.COMMON, mage.cards.g.GazeOfTheGorgon.class));
- cards.add(new SetCardInfo("Ghosts of the Innocent", 20, Rarity.RARE, mage.cards.g.GhostsOfTheInnocent.class));
- cards.add(new SetCardInfo("Glare of Subdual", 207, Rarity.RARE, mage.cards.g.GlareOfSubdual.class));
- cards.add(new SetCardInfo("Glass Golem", 261, Rarity.UNCOMMON, mage.cards.g.GlassGolem.class));
- cards.add(new SetCardInfo("Gleancrawler", 247, Rarity.RARE, mage.cards.g.Gleancrawler.class));
- cards.add(new SetCardInfo("Glimpse the Unthinkable", 208, Rarity.RARE, mage.cards.g.GlimpseTheUnthinkable.class));
- cards.add(new SetCardInfo("Goblin Fire Fiend", 127, Rarity.COMMON, mage.cards.g.GoblinFireFiend.class));
- cards.add(new SetCardInfo("Goblin Spelunkers", 128, Rarity.COMMON, mage.cards.g.GoblinSpelunkers.class));
- cards.add(new SetCardInfo("Golgari Brownscale", 166, Rarity.COMMON, mage.cards.g.GolgariBrownscale.class));
- cards.add(new SetCardInfo("Golgari Germination", 209, Rarity.UNCOMMON, mage.cards.g.GolgariGermination.class));
- cards.add(new SetCardInfo("Golgari Grave-Troll", 167, Rarity.RARE, mage.cards.g.GolgariGraveTroll.class));
- cards.add(new SetCardInfo("Golgari Guildmage", 248, Rarity.UNCOMMON, mage.cards.g.GolgariGuildmage.class));
- cards.add(new SetCardInfo("Golgari Rot Farm", 278, Rarity.COMMON, mage.cards.g.GolgariRotFarm.class));
- cards.add(new SetCardInfo("Golgari Rotwurm", 210, Rarity.COMMON, mage.cards.g.GolgariRotwurm.class));
- cards.add(new SetCardInfo("Golgari Signet", 262, Rarity.COMMON, mage.cards.g.GolgariSignet.class));
- cards.add(new SetCardInfo("Golgari Thug", 87, Rarity.UNCOMMON, mage.cards.g.GolgariThug.class));
- cards.add(new SetCardInfo("Goliath Spider", 168, Rarity.UNCOMMON, mage.cards.g.GoliathSpider.class));
- cards.add(new SetCardInfo("Grave-Shell Scarab", 211, Rarity.RARE, mage.cards.g.GraveShellScarab.class));
- cards.add(new SetCardInfo("Grayscaled Gharial", 52, Rarity.COMMON, mage.cards.g.GrayscaledGharial.class));
- cards.add(new SetCardInfo("Greater Forgeling", 129, Rarity.UNCOMMON, mage.cards.g.GreaterForgeling.class));
- cards.add(new SetCardInfo("Greater Mossdog", 169, Rarity.COMMON, mage.cards.g.GreaterMossdog.class));
- cards.add(new SetCardInfo("Grifter's Blade", 263, Rarity.UNCOMMON, mage.cards.g.GriftersBlade.class));
- cards.add(new SetCardInfo("Grozoth", 53, Rarity.RARE, mage.cards.g.Grozoth.class));
- cards.add(new SetCardInfo("Guardian of Vitu-Ghazi", 212, Rarity.COMMON, mage.cards.g.GuardianOfVituGhazi.class));
- cards.add(new SetCardInfo("Halcyon Glaze", 54, Rarity.UNCOMMON, mage.cards.h.HalcyonGlaze.class));
- cards.add(new SetCardInfo("Hammerfist Giant", 130, Rarity.RARE, mage.cards.h.HammerfistGiant.class));
- cards.add(new SetCardInfo("Helldozer", 88, Rarity.RARE, mage.cards.h.Helldozer.class));
- cards.add(new SetCardInfo("Hex", 89, Rarity.RARE, mage.cards.h.Hex.class));
- cards.add(new SetCardInfo("Hour of Reckoning", 21, Rarity.RARE, mage.cards.h.HourOfReckoning.class));
- cards.add(new SetCardInfo("Hunted Dragon", 131, Rarity.RARE, mage.cards.h.HuntedDragon.class));
- cards.add(new SetCardInfo("Hunted Horror", 90, Rarity.RARE, mage.cards.h.HuntedHorror.class));
- cards.add(new SetCardInfo("Hunted Lammasu", 22, Rarity.RARE, mage.cards.h.HuntedLammasu.class));
- cards.add(new SetCardInfo("Hunted Phantasm", 55, Rarity.RARE, mage.cards.h.HuntedPhantasm.class));
- cards.add(new SetCardInfo("Hunted Troll", 170, Rarity.RARE, mage.cards.h.HuntedTroll.class));
- cards.add(new SetCardInfo("Incite Hysteria", 132, Rarity.COMMON, mage.cards.i.InciteHysteria.class));
- cards.add(new SetCardInfo("Indentured Oaf", 133, Rarity.UNCOMMON, mage.cards.i.IndenturedOaf.class));
- cards.add(new SetCardInfo("Induce Paranoia", 56, Rarity.COMMON, mage.cards.i.InduceParanoia.class));
- cards.add(new SetCardInfo("Infectious Host", 91, Rarity.COMMON, mage.cards.i.InfectiousHost.class));
- cards.add(new SetCardInfo("Instill Furor", 134, Rarity.UNCOMMON, mage.cards.i.InstillFuror.class));
- cards.add(new SetCardInfo("Island", 291, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 292, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 293, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 294, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ivy Dancer", 171, Rarity.UNCOMMON, mage.cards.i.IvyDancer.class));
- cards.add(new SetCardInfo("Junktroller", 264, Rarity.UNCOMMON, mage.cards.j.Junktroller.class));
- cards.add(new SetCardInfo("Keening Banshee", 92, Rarity.UNCOMMON, mage.cards.k.KeeningBanshee.class));
- cards.add(new SetCardInfo("Last Gasp", 93, Rarity.COMMON, mage.cards.l.LastGasp.class));
- cards.add(new SetCardInfo("Leashling", 265, Rarity.UNCOMMON, mage.cards.l.Leashling.class));
- cards.add(new SetCardInfo("Leave No Trace", 23, Rarity.COMMON, mage.cards.l.LeaveNoTrace.class));
- cards.add(new SetCardInfo("Life from the Loam", 172, Rarity.RARE, mage.cards.l.LifeFromTheLoam.class));
- cards.add(new SetCardInfo("Lightning Helix", 213, Rarity.UNCOMMON, mage.cards.l.LightningHelix.class));
- cards.add(new SetCardInfo("Light of Sanction", 24, Rarity.RARE, mage.cards.l.LightOfSanction.class));
- cards.add(new SetCardInfo("Lore Broker", 57, Rarity.UNCOMMON, mage.cards.l.LoreBroker.class));
- cards.add(new SetCardInfo("Loxodon Gatekeeper", 25, Rarity.RARE, mage.cards.l.LoxodonGatekeeper.class));
- cards.add(new SetCardInfo("Loxodon Hierarch", 214, Rarity.RARE, mage.cards.l.LoxodonHierarch.class));
- cards.add(new SetCardInfo("Lurking Informant", 249, Rarity.COMMON, mage.cards.l.LurkingInformant.class));
- cards.add(new SetCardInfo("Mark of Eviction", 58, Rarity.UNCOMMON, mage.cards.m.MarkOfEviction.class));
- cards.add(new SetCardInfo("Master Warcraft", 250, Rarity.RARE, mage.cards.m.MasterWarcraft.class));
- cards.add(new SetCardInfo("Mausoleum Turnkey", 94, Rarity.UNCOMMON, mage.cards.m.MausoleumTurnkey.class));
- cards.add(new SetCardInfo("Mindleech Mass", 215, Rarity.RARE, mage.cards.m.MindleechMass.class));
- cards.add(new SetCardInfo("Mindmoil", 135, Rarity.RARE, mage.cards.m.Mindmoil.class));
- cards.add(new SetCardInfo("Mnemonic Nexus", 59, Rarity.UNCOMMON, mage.cards.m.MnemonicNexus.class));
- cards.add(new SetCardInfo("Moldervine Cloak", 173, Rarity.UNCOMMON, mage.cards.m.MoldervineCloak.class));
- cards.add(new SetCardInfo("Molten Sentry", 136, Rarity.RARE, mage.cards.m.MoltenSentry.class));
- cards.add(new SetCardInfo("Moonlight Bargain", 95, Rarity.RARE, mage.cards.m.MoonlightBargain.class));
- cards.add(new SetCardInfo("Moroii", 216, Rarity.UNCOMMON, mage.cards.m.Moroii.class));
- cards.add(new SetCardInfo("Mortipede", 96, Rarity.COMMON, mage.cards.m.Mortipede.class));
- cards.add(new SetCardInfo("Mountain", 299, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 300, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 301, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 302, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Muddle the Mixture", 60, Rarity.COMMON, mage.cards.m.MuddleTheMixture.class));
- cards.add(new SetCardInfo("Necromantic Thirst", 97, Rarity.COMMON, mage.cards.n.NecromanticThirst.class));
- cards.add(new SetCardInfo("Necroplasm", 98, Rarity.RARE, mage.cards.n.Necroplasm.class));
- cards.add(new SetCardInfo("Netherborn Phalanx", 99, Rarity.UNCOMMON, mage.cards.n.NetherbornPhalanx.class));
- cards.add(new SetCardInfo("Nightguard Patrol", 26, Rarity.COMMON, mage.cards.n.NightguardPatrol.class));
- cards.add(new SetCardInfo("Nightmare Void", 100, Rarity.UNCOMMON, mage.cards.n.NightmareVoid.class));
- cards.add(new SetCardInfo("Nullmage Shepherd", 174, Rarity.UNCOMMON, mage.cards.n.NullmageShepherd.class));
- cards.add(new SetCardInfo("Nullstone Gargoyle", 266, Rarity.RARE, mage.cards.n.NullstoneGargoyle.class));
- cards.add(new SetCardInfo("Oathsworn Giant", 27, Rarity.UNCOMMON, mage.cards.o.OathswornGiant.class));
- cards.add(new SetCardInfo("Ordruun Commando", 137, Rarity.COMMON, mage.cards.o.OrdruunCommando.class));
- cards.add(new SetCardInfo("Overgrown Tomb", 279, Rarity.RARE, mage.cards.o.OvergrownTomb.class));
- cards.add(new SetCardInfo("Overwhelm", 175, Rarity.UNCOMMON, mage.cards.o.Overwhelm.class));
- cards.add(new SetCardInfo("Pariah's Shield", 267, Rarity.RARE, mage.cards.p.PariahsShield.class));
- cards.add(new SetCardInfo("Peel from Reality", 61, Rarity.COMMON, mage.cards.p.PeelFromReality.class));
- cards.add(new SetCardInfo("Peregrine Mask", 268, Rarity.UNCOMMON, mage.cards.p.PeregrineMask.class));
- cards.add(new SetCardInfo("Perilous Forays", 176, Rarity.UNCOMMON, mage.cards.p.PerilousForays.class));
- cards.add(new SetCardInfo("Perplex", 217, Rarity.COMMON, mage.cards.p.Perplex.class));
- cards.add(new SetCardInfo("Phytohydra", 218, Rarity.RARE, mage.cards.p.Phytohydra.class));
- cards.add(new SetCardInfo("Plague Boiler", 269, Rarity.RARE, mage.cards.p.PlagueBoiler.class));
- cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 288, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 289, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 290, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Pollenbright Wings", 219, Rarity.UNCOMMON, mage.cards.p.PollenbrightWings.class));
- cards.add(new SetCardInfo("Primordial Sage", 177, Rarity.RARE, mage.cards.p.PrimordialSage.class));
- cards.add(new SetCardInfo("Privileged Position", 251, Rarity.RARE, mage.cards.p.PrivilegedPosition.class));
- cards.add(new SetCardInfo("Psychic Drain", 220, Rarity.UNCOMMON, mage.cards.p.PsychicDrain.class));
- cards.add(new SetCardInfo("Putrefy", 221, Rarity.UNCOMMON, mage.cards.p.Putrefy.class));
- cards.add(new SetCardInfo("Quickchange", 62, Rarity.COMMON, mage.cards.q.Quickchange.class));
- cards.add(new SetCardInfo("Rain of Embers", 138, Rarity.COMMON, mage.cards.r.RainOfEmbers.class));
- cards.add(new SetCardInfo("Rally the Righteous", 222, Rarity.COMMON, mage.cards.r.RallyTheRighteous.class));
- cards.add(new SetCardInfo("Razia's Purification", 224, Rarity.RARE, mage.cards.r.RaziasPurification.class));
- cards.add(new SetCardInfo("Razia, Boros Archangel", 223, Rarity.RARE, mage.cards.r.RaziaBorosArchangel.class));
- cards.add(new SetCardInfo("Recollect", 178, Rarity.UNCOMMON, mage.cards.r.Recollect.class));
- cards.add(new SetCardInfo("Remand", 63, Rarity.UNCOMMON, mage.cards.r.Remand.class));
- cards.add(new SetCardInfo("Reroute", 139, Rarity.UNCOMMON, mage.cards.r.Reroute.class));
- cards.add(new SetCardInfo("Ribbons of Night", 101, Rarity.UNCOMMON, mage.cards.r.RibbonsOfNight.class));
- cards.add(new SetCardInfo("Rolling Spoil", 179, Rarity.UNCOMMON, mage.cards.r.RollingSpoil.class));
- cards.add(new SetCardInfo("Roofstalker Wight", 102, Rarity.COMMON, mage.cards.r.RoofstalkerWight.class));
- cards.add(new SetCardInfo("Root-Kin Ally", 180, Rarity.UNCOMMON, mage.cards.r.RootKinAlly.class));
- cards.add(new SetCardInfo("Sabertooth Alley Cat", 140, Rarity.COMMON, mage.cards.s.SabertoothAlleyCat.class));
- cards.add(new SetCardInfo("Sacred Foundry", 280, Rarity.RARE, mage.cards.s.SacredFoundry.class));
- cards.add(new SetCardInfo("Sadistic Augermage", 103, Rarity.COMMON, mage.cards.s.SadisticAugermage.class));
- cards.add(new SetCardInfo("Sandsower", 28, Rarity.UNCOMMON, mage.cards.s.Sandsower.class));
- cards.add(new SetCardInfo("Savra, Queen of the Golgari", 225, Rarity.RARE, mage.cards.s.SavraQueenOfTheGolgari.class));
- cards.add(new SetCardInfo("Scatter the Seeds", 181, Rarity.COMMON, mage.cards.s.ScatterTheSeeds.class));
- cards.add(new SetCardInfo("Screeching Griffin", 29, Rarity.COMMON, mage.cards.s.ScreechingGriffin.class));
- cards.add(new SetCardInfo("Scion of the Wild", 182, Rarity.RARE, mage.cards.s.ScionOfTheWild.class));
- cards.add(new SetCardInfo("Searing Meditation", 226, Rarity.RARE, mage.cards.s.SearingMeditation.class));
- cards.add(new SetCardInfo("Seed Spark", 30, Rarity.UNCOMMON, mage.cards.s.SeedSpark.class));
- cards.add(new SetCardInfo("Seeds of Strength", 227, Rarity.COMMON, mage.cards.s.SeedsOfStrength.class));
- cards.add(new SetCardInfo("Seismic Spike", 141, Rarity.COMMON, mage.cards.s.SeismicSpike.class));
- cards.add(new SetCardInfo("Selesnya Evangel", 228, Rarity.COMMON, mage.cards.s.SelesnyaEvangel.class));
- cards.add(new SetCardInfo("Selesnya Guildmage", 252, Rarity.UNCOMMON, mage.cards.s.SelesnyaGuildmage.class));
- cards.add(new SetCardInfo("Selesnya Sagittars", 229, Rarity.UNCOMMON, mage.cards.s.SelesnyaSagittars.class));
- cards.add(new SetCardInfo("Selesnya Sanctuary", 281, Rarity.COMMON, mage.cards.s.SelesnyaSanctuary.class));
- cards.add(new SetCardInfo("Selesnya Signet", 270, Rarity.COMMON, mage.cards.s.SelesnyaSignet.class));
- cards.add(new SetCardInfo("Sell-Sword Brute", 142, Rarity.COMMON, mage.cards.s.SellSwordBrute.class));
- cards.add(new SetCardInfo("Sewerdreg", 104, Rarity.COMMON, mage.cards.s.Sewerdreg.class));
- cards.add(new SetCardInfo("Shadow of Doubt", 253, Rarity.RARE, mage.cards.s.ShadowOfDoubt.class));
- cards.add(new SetCardInfo("Shambling Shell", 230, Rarity.COMMON, mage.cards.s.ShamblingShell.class));
- cards.add(new SetCardInfo("Shred Memory", 105, Rarity.COMMON, mage.cards.s.ShredMemory.class));
- cards.add(new SetCardInfo("Siege Wurm", 183, Rarity.COMMON, mage.cards.s.SiegeWurm.class));
- cards.add(new SetCardInfo("Sins of the Past", 106, Rarity.RARE, mage.cards.s.SinsOfThePast.class));
- cards.add(new SetCardInfo("Sisters of Stone Death", 231, Rarity.RARE, mage.cards.s.SistersOfStoneDeath.class));
- cards.add(new SetCardInfo("Skyknight Legionnaire", 232, Rarity.COMMON, mage.cards.s.SkyknightLegionnaire.class));
- cards.add(new SetCardInfo("Smash", 143, Rarity.COMMON, mage.cards.s.Smash.class));
- cards.add(new SetCardInfo("Snapping Drake", 64, Rarity.COMMON, mage.cards.s.SnappingDrake.class));
- cards.add(new SetCardInfo("Sparkmage Apprentice", 144, Rarity.COMMON, mage.cards.s.SparkmageApprentice.class));
- cards.add(new SetCardInfo("Spawnbroker", 65, Rarity.RARE, mage.cards.s.Spawnbroker.class));
- cards.add(new SetCardInfo("Spectral Searchlight", 271, Rarity.UNCOMMON, mage.cards.s.SpectralSearchlight.class));
- cards.add(new SetCardInfo("Stasis Cell", 66, Rarity.COMMON, mage.cards.s.StasisCell.class));
- cards.add(new SetCardInfo("Stinkweed Imp", 107, Rarity.COMMON, mage.cards.s.StinkweedImp.class));
- cards.add(new SetCardInfo("Stone-Seeder Hierophant", 184, Rarity.COMMON, mage.cards.s.StoneSeederHierophant.class));
- cards.add(new SetCardInfo("Stoneshaker Shaman", 145, Rarity.UNCOMMON, mage.cards.s.StoneshakerShaman.class));
- cards.add(new SetCardInfo("Strands of Undeath", 108, Rarity.COMMON, mage.cards.s.StrandsOfUndeath.class));
- cards.add(new SetCardInfo("Sundering Vitae", 185, Rarity.COMMON, mage.cards.s.SunderingVitae.class));
- cards.add(new SetCardInfo("Sunforger", 272, Rarity.RARE, mage.cards.s.Sunforger.class));
- cards.add(new SetCardInfo("Sunhome Enforcer", 233, Rarity.UNCOMMON, mage.cards.s.SunhomeEnforcer.class));
- cards.add(new SetCardInfo("Sunhome, Fortress of the Legion", 282, Rarity.UNCOMMON, mage.cards.s.SunhomeFortressOfTheLegion.class));
- cards.add(new SetCardInfo("Suppression Field", 31, Rarity.UNCOMMON, mage.cards.s.SuppressionField.class));
- cards.add(new SetCardInfo("Surge of Zeal", 146, Rarity.COMMON, mage.cards.s.SurgeOfZeal.class));
- cards.add(new SetCardInfo("Surveilling Sprite", 67, Rarity.COMMON, mage.cards.s.SurveillingSprite.class));
- cards.add(new SetCardInfo("Svogthos, the Restless Tomb", 283, Rarity.UNCOMMON, mage.cards.s.SvogthosTheRestlessTomb.class));
- cards.add(new SetCardInfo("Swamp", 295, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 296, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 297, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 298, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Szadek, Lord of Secrets", 234, Rarity.RARE, mage.cards.s.SzadekLordOfSecrets.class));
- cards.add(new SetCardInfo("Tattered Drake", 68, Rarity.COMMON, mage.cards.t.TatteredDrake.class));
- cards.add(new SetCardInfo("Telling Time", 69, Rarity.UNCOMMON, mage.cards.t.TellingTime.class));
- cards.add(new SetCardInfo("Temple Garden", 284, Rarity.RARE, mage.cards.t.TempleGarden.class));
- cards.add(new SetCardInfo("Terraformer", 70, Rarity.COMMON, mage.cards.t.Terraformer.class));
- cards.add(new SetCardInfo("Terrarion", 273, Rarity.COMMON, mage.cards.t.Terrarion.class));
- cards.add(new SetCardInfo("Thoughtpicker Witch", 109, Rarity.COMMON, mage.cards.t.ThoughtpickerWitch.class));
- cards.add(new SetCardInfo("Three Dreams", 32, Rarity.RARE, mage.cards.t.ThreeDreams.class));
- cards.add(new SetCardInfo("Thundersong Trumpeter", 235, Rarity.COMMON, mage.cards.t.ThundersongTrumpeter.class));
- cards.add(new SetCardInfo("Tidewater Minion", 71, Rarity.COMMON, mage.cards.t.TidewaterMinion.class));
- cards.add(new SetCardInfo("Tolsimir Wolfblood", 236, Rarity.RARE, mage.cards.t.TolsimirWolfblood.class));
- cards.add(new SetCardInfo("Torpid Moloch", 147, Rarity.COMMON, mage.cards.t.TorpidMoloch.class));
- cards.add(new SetCardInfo("Transluminant", 186, Rarity.COMMON, mage.cards.t.Transluminant.class));
- cards.add(new SetCardInfo("Trophy Hunter", 187, Rarity.UNCOMMON, mage.cards.t.TrophyHunter.class));
- cards.add(new SetCardInfo("Tunnel Vision", 72, Rarity.RARE, mage.cards.t.TunnelVision.class));
- cards.add(new SetCardInfo("Twilight Drover", 33, Rarity.RARE, mage.cards.t.TwilightDrover.class));
- cards.add(new SetCardInfo("Twisted Justice", 237, Rarity.UNCOMMON, mage.cards.t.TwistedJustice.class));
- cards.add(new SetCardInfo("Undercity Shade", 110, Rarity.UNCOMMON, mage.cards.u.UndercityShade.class));
- cards.add(new SetCardInfo("Ursapine", 188, Rarity.RARE, mage.cards.u.Ursapine.class));
- cards.add(new SetCardInfo("Vedalken Dismisser", 73, Rarity.COMMON, mage.cards.v.VedalkenDismisser.class));
- cards.add(new SetCardInfo("Vedalken Entrancer", 74, Rarity.COMMON, mage.cards.v.VedalkenEntrancer.class));
- cards.add(new SetCardInfo("Veteran Armorer", 34, Rarity.COMMON, mage.cards.v.VeteranArmorer.class));
- cards.add(new SetCardInfo("Viashino Fangtail", 148, Rarity.COMMON, mage.cards.v.ViashinoFangtail.class));
- cards.add(new SetCardInfo("Viashino Slasher", 149, Rarity.COMMON, mage.cards.v.ViashinoSlasher.class));
- cards.add(new SetCardInfo("Vigor Mortis", 111, Rarity.UNCOMMON, mage.cards.v.VigorMortis.class));
- cards.add(new SetCardInfo("Vindictive Mob", 112, Rarity.UNCOMMON, mage.cards.v.VindictiveMob.class));
- cards.add(new SetCardInfo("Vinelasher Kudzu", 189, Rarity.RARE, mage.cards.v.VinelasherKudzu.class));
- cards.add(new SetCardInfo("Vitu-Ghazi, the City-Tree", 285, Rarity.UNCOMMON, mage.cards.v.VituGhaziTheCityTree.class));
- cards.add(new SetCardInfo("Votary of the Conclave", 35, Rarity.COMMON, mage.cards.v.VotaryOfTheConclave.class));
- cards.add(new SetCardInfo("Voyager Staff", 274, Rarity.UNCOMMON, mage.cards.v.VoyagerStaff.class));
- cards.add(new SetCardInfo("Vulturous Zombie", 238, Rarity.RARE, mage.cards.v.VulturousZombie.class));
- cards.add(new SetCardInfo("Warp World", 150, Rarity.RARE, mage.cards.w.WarpWorld.class));
- cards.add(new SetCardInfo("War-Torch Goblin", 151, Rarity.COMMON, mage.cards.w.WarTorchGoblin.class));
- cards.add(new SetCardInfo("Watchwolf", 239, Rarity.UNCOMMON, mage.cards.w.Watchwolf.class));
- cards.add(new SetCardInfo("Watery Grave", 286, Rarity.RARE, mage.cards.w.WateryGrave.class));
- cards.add(new SetCardInfo("Wizened Snitches", 75, Rarity.UNCOMMON, mage.cards.w.WizenedSnitches.class));
- cards.add(new SetCardInfo("Woebringer Demon", 113, Rarity.RARE, mage.cards.w.WoebringerDemon.class));
- cards.add(new SetCardInfo("Wojek Apothecary", 36, Rarity.UNCOMMON, mage.cards.w.WojekApothecary.class));
- cards.add(new SetCardInfo("Wojek Embermage", 152, Rarity.UNCOMMON, mage.cards.w.WojekEmbermage.class));
- cards.add(new SetCardInfo("Wojek Siren", 37, Rarity.COMMON, mage.cards.w.WojekSiren.class));
- cards.add(new SetCardInfo("Woodwraith Corrupter", 240, Rarity.RARE, mage.cards.w.WoodwraithCorrupter.class));
- cards.add(new SetCardInfo("Woodwraith Strangler", 241, Rarity.COMMON, mage.cards.w.WoodwraithStrangler.class));
- cards.add(new SetCardInfo("Zephyr Spirit", 76, Rarity.COMMON, mage.cards.z.ZephyrSpirit.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author loki
+ */
+public final class RavnicaCityOfGuilds extends ExpansionSet {
+
+ private static final RavnicaCityOfGuilds instance = new RavnicaCityOfGuilds();
+
+ public static RavnicaCityOfGuilds getInstance() {
+ return instance;
+ }
+
+ private RavnicaCityOfGuilds() {
+ super("Ravnica: City of Guilds", "RAV", ExpansionSet.buildDate(2005, 9, 24), SetType.EXPANSION);
+ this.blockName = "Ravnica";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Agrus Kos, Wojek Veteran", 190, Rarity.RARE, mage.cards.a.AgrusKosWojekVeteran.class));
+ cards.add(new SetCardInfo("Auratouched Mage", 1, Rarity.UNCOMMON, mage.cards.a.AuratouchedMage.class));
+ cards.add(new SetCardInfo("Autochthon Wurm", 191, Rarity.RARE, mage.cards.a.AutochthonWurm.class));
+ cards.add(new SetCardInfo("Barbarian Riftcutter", 114, Rarity.COMMON, mage.cards.b.BarbarianRiftcutter.class));
+ cards.add(new SetCardInfo("Bathe in Light", 2, Rarity.UNCOMMON, mage.cards.b.BatheInLight.class));
+ cards.add(new SetCardInfo("Belltower Sphinx", 38, Rarity.UNCOMMON, mage.cards.b.BelltowerSphinx.class));
+ cards.add(new SetCardInfo("Benevolent Ancestor", 3, Rarity.COMMON, mage.cards.b.BenevolentAncestor.class));
+ cards.add(new SetCardInfo("Birds of Paradise", 153, Rarity.RARE, mage.cards.b.BirdsOfParadise.class));
+ cards.add(new SetCardInfo("Blazing Archon", 4, Rarity.RARE, mage.cards.b.BlazingArchon.class));
+ cards.add(new SetCardInfo("Blockbuster", 115, Rarity.UNCOMMON, mage.cards.b.Blockbuster.class));
+ cards.add(new SetCardInfo("Blood Funnel", 77, Rarity.RARE, mage.cards.b.BloodFunnel.class));
+ cards.add(new SetCardInfo("Bloodbond March", 192, Rarity.RARE, mage.cards.b.BloodbondMarch.class));
+ cards.add(new SetCardInfo("Bloodletter Quill", 254, Rarity.RARE, mage.cards.b.BloodletterQuill.class));
+ cards.add(new SetCardInfo("Boros Fury-Shield", 5, Rarity.COMMON, mage.cards.b.BorosFuryShield.class));
+ cards.add(new SetCardInfo("Boros Garrison", 275, Rarity.COMMON, mage.cards.b.BorosGarrison.class));
+ cards.add(new SetCardInfo("Boros Guildmage", 242, Rarity.UNCOMMON, mage.cards.b.BorosGuildmage.class));
+ cards.add(new SetCardInfo("Boros Recruit", 243, Rarity.COMMON, mage.cards.b.BorosRecruit.class));
+ cards.add(new SetCardInfo("Boros Signet", 255, Rarity.COMMON, mage.cards.b.BorosSignet.class));
+ cards.add(new SetCardInfo("Boros Swiftblade", 193, Rarity.UNCOMMON, mage.cards.b.BorosSwiftblade.class));
+ cards.add(new SetCardInfo("Bottled Cloister", 256, Rarity.RARE, mage.cards.b.BottledCloister.class));
+ cards.add(new SetCardInfo("Brainspoil", 78, Rarity.COMMON, mage.cards.b.Brainspoil.class));
+ cards.add(new SetCardInfo("Bramble Elemental", 154, Rarity.COMMON, mage.cards.b.BrambleElemental.class));
+ cards.add(new SetCardInfo("Breath of Fury", 116, Rarity.RARE, mage.cards.b.BreathOfFury.class));
+ cards.add(new SetCardInfo("Brightflame", 194, Rarity.RARE, mage.cards.b.Brightflame.class));
+ cards.add(new SetCardInfo("Caregiver", 6, Rarity.COMMON, mage.cards.c.Caregiver.class));
+ cards.add(new SetCardInfo("Carrion Howler", 79, Rarity.UNCOMMON, mage.cards.c.CarrionHowler.class));
+ cards.add(new SetCardInfo("Carven Caryatid", 155, Rarity.UNCOMMON, mage.cards.c.CarvenCaryatid.class));
+ cards.add(new SetCardInfo("Centaur Safeguard", 244, Rarity.COMMON, mage.cards.c.CentaurSafeguard.class));
+ cards.add(new SetCardInfo("Cerulean Sphinx", 39, Rarity.RARE, mage.cards.c.CeruleanSphinx.class));
+ cards.add(new SetCardInfo("Chant of Vitu-Ghazi", 7, Rarity.UNCOMMON, mage.cards.c.ChantOfVituGhazi.class));
+ cards.add(new SetCardInfo("Char", 117, Rarity.RARE, mage.cards.c.Char.class));
+ cards.add(new SetCardInfo("Chord of Calling", 156, Rarity.RARE, mage.cards.c.ChordOfCalling.class));
+ cards.add(new SetCardInfo("Chorus of the Conclave", 195, Rarity.RARE, mage.cards.c.ChorusOfTheConclave.class));
+ cards.add(new SetCardInfo("Circu, Dimir Lobotomist", 196, Rarity.RARE, mage.cards.c.CircuDimirLobotomist.class));
+ cards.add(new SetCardInfo("Civic Wayfinder", 157, Rarity.COMMON, mage.cards.c.CivicWayfinder.class));
+ cards.add(new SetCardInfo("Cleansing Beam", 118, Rarity.UNCOMMON, mage.cards.c.CleansingBeam.class));
+ cards.add(new SetCardInfo("Clinging Darkness", 80, Rarity.COMMON, mage.cards.c.ClingingDarkness.class));
+ cards.add(new SetCardInfo("Cloudstone Curio", 257, Rarity.RARE, mage.cards.c.CloudstoneCurio.class));
+ cards.add(new SetCardInfo("Clutch of the Undercity", 197, Rarity.UNCOMMON, mage.cards.c.ClutchOfTheUndercity.class));
+ cards.add(new SetCardInfo("Coalhauler Swine", 119, Rarity.COMMON, mage.cards.c.CoalhaulerSwine.class));
+ cards.add(new SetCardInfo("Compulsive Research", 40, Rarity.COMMON, mage.cards.c.CompulsiveResearch.class));
+ cards.add(new SetCardInfo("Concerted Effort", 8, Rarity.RARE, mage.cards.c.ConcertedEffort.class));
+ cards.add(new SetCardInfo("Conclave Equenaut", 9, Rarity.COMMON, mage.cards.c.ConclaveEquenaut.class));
+ cards.add(new SetCardInfo("Conclave Phalanx", 10, Rarity.UNCOMMON, mage.cards.c.ConclavePhalanx.class));
+ cards.add(new SetCardInfo("Conclave's Blessing", 11, Rarity.COMMON, mage.cards.c.ConclavesBlessing.class));
+ cards.add(new SetCardInfo("Congregation at Dawn", 198, Rarity.UNCOMMON, mage.cards.c.CongregationAtDawn.class));
+ cards.add(new SetCardInfo("Consult the Necrosages", 199, Rarity.COMMON, mage.cards.c.ConsultTheNecrosages.class));
+ cards.add(new SetCardInfo("Convolute", 41, Rarity.COMMON, mage.cards.c.Convolute.class));
+ cards.add(new SetCardInfo("Copy Enchantment", 42, Rarity.RARE, mage.cards.c.CopyEnchantment.class));
+ cards.add(new SetCardInfo("Courier Hawk", 12, Rarity.COMMON, mage.cards.c.CourierHawk.class));
+ cards.add(new SetCardInfo("Crown of Convergence", 258, Rarity.RARE, mage.cards.c.CrownOfConvergence.class));
+ cards.add(new SetCardInfo("Cyclopean Snare", 259, Rarity.UNCOMMON, mage.cards.c.CyclopeanSnare.class));
+ cards.add(new SetCardInfo("Darkblast", 82, Rarity.UNCOMMON, mage.cards.d.Darkblast.class));
+ cards.add(new SetCardInfo("Dark Confidant", 81, Rarity.RARE, mage.cards.d.DarkConfidant.class));
+ cards.add(new SetCardInfo("Dark Heart of the Wood", 200, Rarity.UNCOMMON, mage.cards.d.DarkHeartOfTheWood.class));
+ cards.add(new SetCardInfo("Devouring Light", 13, Rarity.UNCOMMON, mage.cards.d.DevouringLight.class));
+ cards.add(new SetCardInfo("Dimir Aqueduct", 276, Rarity.COMMON, mage.cards.d.DimirAqueduct.class));
+ cards.add(new SetCardInfo("Dimir Cutpurse", 201, Rarity.RARE, mage.cards.d.DimirCutpurse.class));
+ cards.add(new SetCardInfo("Dimir Doppelganger", 202, Rarity.RARE, mage.cards.d.DimirDoppelganger.class));
+ cards.add(new SetCardInfo("Dimir Guildmage", 245, Rarity.UNCOMMON, mage.cards.d.DimirGuildmage.class));
+ cards.add(new SetCardInfo("Dimir House Guard", 83, Rarity.COMMON, mage.cards.d.DimirHouseGuard.class));
+ cards.add(new SetCardInfo("Dimir Infiltrator", 203, Rarity.COMMON, mage.cards.d.DimirInfiltrator.class));
+ cards.add(new SetCardInfo("Dimir Machinations", 84, Rarity.UNCOMMON, mage.cards.d.DimirMachinations.class));
+ cards.add(new SetCardInfo("Dimir Signet", 260, Rarity.COMMON, mage.cards.d.DimirSignet.class));
+ cards.add(new SetCardInfo("Disembowel", 85, Rarity.COMMON, mage.cards.d.Disembowel.class));
+ cards.add(new SetCardInfo("Divebomber Griffin", 14, Rarity.UNCOMMON, mage.cards.d.DivebomberGriffin.class));
+ cards.add(new SetCardInfo("Dizzy Spell", 43, Rarity.COMMON, mage.cards.d.DizzySpell.class));
+ cards.add(new SetCardInfo("Dogpile", 120, Rarity.COMMON, mage.cards.d.Dogpile.class));
+ cards.add(new SetCardInfo("Doubling Season", 158, Rarity.RARE, mage.cards.d.DoublingSeason.class));
+ cards.add(new SetCardInfo("Dowsing Shaman", 159, Rarity.UNCOMMON, mage.cards.d.DowsingShaman.class));
+ cards.add(new SetCardInfo("Drake Familiar", 44, Rarity.COMMON, mage.cards.d.DrakeFamiliar.class));
+ cards.add(new SetCardInfo("Dream Leash", 45, Rarity.RARE, mage.cards.d.DreamLeash.class));
+ cards.add(new SetCardInfo("Drift of Phantasms", 46, Rarity.COMMON, mage.cards.d.DriftOfPhantasms.class));
+ cards.add(new SetCardInfo("Dromad Purebred", 15, Rarity.COMMON, mage.cards.d.DromadPurebred.class));
+ cards.add(new SetCardInfo("Drooling Groodion", 204, Rarity.UNCOMMON, mage.cards.d.DroolingGroodion.class));
+ cards.add(new SetCardInfo("Dryad's Caress", 160, Rarity.COMMON, mage.cards.d.DryadsCaress.class));
+ cards.add(new SetCardInfo("Duskmantle, House of Shadow", 277, Rarity.UNCOMMON, mage.cards.d.DuskmantleHouseOfShadow.class));
+ cards.add(new SetCardInfo("Elves of Deep Shadow", 161, Rarity.COMMON, mage.cards.e.ElvesOfDeepShadow.class));
+ cards.add(new SetCardInfo("Elvish Skysweeper", 162, Rarity.COMMON, mage.cards.e.ElvishSkysweeper.class));
+ cards.add(new SetCardInfo("Empty the Catacombs", 86, Rarity.RARE, mage.cards.e.EmptyTheCatacombs.class));
+ cards.add(new SetCardInfo("Ethereal Usher", 47, Rarity.UNCOMMON, mage.cards.e.EtherealUsher.class));
+ cards.add(new SetCardInfo("Excruciator", 121, Rarity.RARE, mage.cards.e.Excruciator.class));
+ cards.add(new SetCardInfo("Eye of the Storm", 48, Rarity.RARE, mage.cards.e.EyeOfTheStorm.class));
+ cards.add(new SetCardInfo("Faith's Fetters", 16, Rarity.COMMON, mage.cards.f.FaithsFetters.class));
+ cards.add(new SetCardInfo("Farseek", 163, Rarity.COMMON, mage.cards.f.Farseek.class));
+ cards.add(new SetCardInfo("Festival of the Guildpact", 17, Rarity.UNCOMMON, mage.cards.f.FestivalOfTheGuildpact.class));
+ cards.add(new SetCardInfo("Fiery Conclusion", 122, Rarity.COMMON, mage.cards.f.FieryConclusion.class));
+ cards.add(new SetCardInfo("Firemane Angel", 205, Rarity.RARE, mage.cards.f.FiremaneAngel.class));
+ cards.add(new SetCardInfo("Fists of Ironwood", 164, Rarity.COMMON, mage.cards.f.FistsOfIronwood.class));
+ cards.add(new SetCardInfo("Flame Fusillade", 123, Rarity.RARE, mage.cards.f.FlameFusillade.class));
+ cards.add(new SetCardInfo("Flame-Kin Zealot", 206, Rarity.UNCOMMON, mage.cards.f.FlameKinZealot.class));
+ cards.add(new SetCardInfo("Flash Conscription", 124, Rarity.UNCOMMON, mage.cards.f.FlashConscription.class));
+ cards.add(new SetCardInfo("Flickerform", 18, Rarity.RARE, mage.cards.f.Flickerform.class));
+ cards.add(new SetCardInfo("Flight of Fancy", 49, Rarity.COMMON, mage.cards.f.FlightOfFancy.class));
+ cards.add(new SetCardInfo("Flow of Ideas", 50, Rarity.UNCOMMON, mage.cards.f.FlowOfIdeas.class));
+ cards.add(new SetCardInfo("Followed Footsteps", 51, Rarity.RARE, mage.cards.f.FollowedFootsteps.class));
+ cards.add(new SetCardInfo("Forest", 303, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 304, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 305, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 306, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Frenzied Goblin", 125, Rarity.UNCOMMON, mage.cards.f.FrenziedGoblin.class));
+ cards.add(new SetCardInfo("Galvanic Arc", 126, Rarity.COMMON, mage.cards.g.GalvanicArc.class));
+ cards.add(new SetCardInfo("Gate Hound", 19, Rarity.COMMON, mage.cards.g.GateHound.class));
+ cards.add(new SetCardInfo("Gather Courage", 165, Rarity.COMMON, mage.cards.g.GatherCourage.class));
+ cards.add(new SetCardInfo("Gaze of the Gorgon", 246, Rarity.COMMON, mage.cards.g.GazeOfTheGorgon.class));
+ cards.add(new SetCardInfo("Ghosts of the Innocent", 20, Rarity.RARE, mage.cards.g.GhostsOfTheInnocent.class));
+ cards.add(new SetCardInfo("Glare of Subdual", 207, Rarity.RARE, mage.cards.g.GlareOfSubdual.class));
+ cards.add(new SetCardInfo("Glass Golem", 261, Rarity.UNCOMMON, mage.cards.g.GlassGolem.class));
+ cards.add(new SetCardInfo("Gleancrawler", 247, Rarity.RARE, mage.cards.g.Gleancrawler.class));
+ cards.add(new SetCardInfo("Glimpse the Unthinkable", 208, Rarity.RARE, mage.cards.g.GlimpseTheUnthinkable.class));
+ cards.add(new SetCardInfo("Goblin Fire Fiend", 127, Rarity.COMMON, mage.cards.g.GoblinFireFiend.class));
+ cards.add(new SetCardInfo("Goblin Spelunkers", 128, Rarity.COMMON, mage.cards.g.GoblinSpelunkers.class));
+ cards.add(new SetCardInfo("Golgari Brownscale", 166, Rarity.COMMON, mage.cards.g.GolgariBrownscale.class));
+ cards.add(new SetCardInfo("Golgari Germination", 209, Rarity.UNCOMMON, mage.cards.g.GolgariGermination.class));
+ cards.add(new SetCardInfo("Golgari Grave-Troll", 167, Rarity.RARE, mage.cards.g.GolgariGraveTroll.class));
+ cards.add(new SetCardInfo("Golgari Guildmage", 248, Rarity.UNCOMMON, mage.cards.g.GolgariGuildmage.class));
+ cards.add(new SetCardInfo("Golgari Rot Farm", 278, Rarity.COMMON, mage.cards.g.GolgariRotFarm.class));
+ cards.add(new SetCardInfo("Golgari Rotwurm", 210, Rarity.COMMON, mage.cards.g.GolgariRotwurm.class));
+ cards.add(new SetCardInfo("Golgari Signet", 262, Rarity.COMMON, mage.cards.g.GolgariSignet.class));
+ cards.add(new SetCardInfo("Golgari Thug", 87, Rarity.UNCOMMON, mage.cards.g.GolgariThug.class));
+ cards.add(new SetCardInfo("Goliath Spider", 168, Rarity.UNCOMMON, mage.cards.g.GoliathSpider.class));
+ cards.add(new SetCardInfo("Grave-Shell Scarab", 211, Rarity.RARE, mage.cards.g.GraveShellScarab.class));
+ cards.add(new SetCardInfo("Grayscaled Gharial", 52, Rarity.COMMON, mage.cards.g.GrayscaledGharial.class));
+ cards.add(new SetCardInfo("Greater Forgeling", 129, Rarity.UNCOMMON, mage.cards.g.GreaterForgeling.class));
+ cards.add(new SetCardInfo("Greater Mossdog", 169, Rarity.COMMON, mage.cards.g.GreaterMossdog.class));
+ cards.add(new SetCardInfo("Grifter's Blade", 263, Rarity.UNCOMMON, mage.cards.g.GriftersBlade.class));
+ cards.add(new SetCardInfo("Grozoth", 53, Rarity.RARE, mage.cards.g.Grozoth.class));
+ cards.add(new SetCardInfo("Guardian of Vitu-Ghazi", 212, Rarity.COMMON, mage.cards.g.GuardianOfVituGhazi.class));
+ cards.add(new SetCardInfo("Halcyon Glaze", 54, Rarity.UNCOMMON, mage.cards.h.HalcyonGlaze.class));
+ cards.add(new SetCardInfo("Hammerfist Giant", 130, Rarity.RARE, mage.cards.h.HammerfistGiant.class));
+ cards.add(new SetCardInfo("Helldozer", 88, Rarity.RARE, mage.cards.h.Helldozer.class));
+ cards.add(new SetCardInfo("Hex", 89, Rarity.RARE, mage.cards.h.Hex.class));
+ cards.add(new SetCardInfo("Hour of Reckoning", 21, Rarity.RARE, mage.cards.h.HourOfReckoning.class));
+ cards.add(new SetCardInfo("Hunted Dragon", 131, Rarity.RARE, mage.cards.h.HuntedDragon.class));
+ cards.add(new SetCardInfo("Hunted Horror", 90, Rarity.RARE, mage.cards.h.HuntedHorror.class));
+ cards.add(new SetCardInfo("Hunted Lammasu", 22, Rarity.RARE, mage.cards.h.HuntedLammasu.class));
+ cards.add(new SetCardInfo("Hunted Phantasm", 55, Rarity.RARE, mage.cards.h.HuntedPhantasm.class));
+ cards.add(new SetCardInfo("Hunted Troll", 170, Rarity.RARE, mage.cards.h.HuntedTroll.class));
+ cards.add(new SetCardInfo("Incite Hysteria", 132, Rarity.COMMON, mage.cards.i.InciteHysteria.class));
+ cards.add(new SetCardInfo("Indentured Oaf", 133, Rarity.UNCOMMON, mage.cards.i.IndenturedOaf.class));
+ cards.add(new SetCardInfo("Induce Paranoia", 56, Rarity.COMMON, mage.cards.i.InduceParanoia.class));
+ cards.add(new SetCardInfo("Infectious Host", 91, Rarity.COMMON, mage.cards.i.InfectiousHost.class));
+ cards.add(new SetCardInfo("Instill Furor", 134, Rarity.UNCOMMON, mage.cards.i.InstillFuror.class));
+ cards.add(new SetCardInfo("Island", 291, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 292, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 293, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 294, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ivy Dancer", 171, Rarity.UNCOMMON, mage.cards.i.IvyDancer.class));
+ cards.add(new SetCardInfo("Junktroller", 264, Rarity.UNCOMMON, mage.cards.j.Junktroller.class));
+ cards.add(new SetCardInfo("Keening Banshee", 92, Rarity.UNCOMMON, mage.cards.k.KeeningBanshee.class));
+ cards.add(new SetCardInfo("Last Gasp", 93, Rarity.COMMON, mage.cards.l.LastGasp.class));
+ cards.add(new SetCardInfo("Leashling", 265, Rarity.UNCOMMON, mage.cards.l.Leashling.class));
+ cards.add(new SetCardInfo("Leave No Trace", 23, Rarity.COMMON, mage.cards.l.LeaveNoTrace.class));
+ cards.add(new SetCardInfo("Life from the Loam", 172, Rarity.RARE, mage.cards.l.LifeFromTheLoam.class));
+ cards.add(new SetCardInfo("Lightning Helix", 213, Rarity.UNCOMMON, mage.cards.l.LightningHelix.class));
+ cards.add(new SetCardInfo("Light of Sanction", 24, Rarity.RARE, mage.cards.l.LightOfSanction.class));
+ cards.add(new SetCardInfo("Lore Broker", 57, Rarity.UNCOMMON, mage.cards.l.LoreBroker.class));
+ cards.add(new SetCardInfo("Loxodon Gatekeeper", 25, Rarity.RARE, mage.cards.l.LoxodonGatekeeper.class));
+ cards.add(new SetCardInfo("Loxodon Hierarch", 214, Rarity.RARE, mage.cards.l.LoxodonHierarch.class));
+ cards.add(new SetCardInfo("Lurking Informant", 249, Rarity.COMMON, mage.cards.l.LurkingInformant.class));
+ cards.add(new SetCardInfo("Mark of Eviction", 58, Rarity.UNCOMMON, mage.cards.m.MarkOfEviction.class));
+ cards.add(new SetCardInfo("Master Warcraft", 250, Rarity.RARE, mage.cards.m.MasterWarcraft.class));
+ cards.add(new SetCardInfo("Mausoleum Turnkey", 94, Rarity.UNCOMMON, mage.cards.m.MausoleumTurnkey.class));
+ cards.add(new SetCardInfo("Mindleech Mass", 215, Rarity.RARE, mage.cards.m.MindleechMass.class));
+ cards.add(new SetCardInfo("Mindmoil", 135, Rarity.RARE, mage.cards.m.Mindmoil.class));
+ cards.add(new SetCardInfo("Mnemonic Nexus", 59, Rarity.UNCOMMON, mage.cards.m.MnemonicNexus.class));
+ cards.add(new SetCardInfo("Moldervine Cloak", 173, Rarity.UNCOMMON, mage.cards.m.MoldervineCloak.class));
+ cards.add(new SetCardInfo("Molten Sentry", 136, Rarity.RARE, mage.cards.m.MoltenSentry.class));
+ cards.add(new SetCardInfo("Moonlight Bargain", 95, Rarity.RARE, mage.cards.m.MoonlightBargain.class));
+ cards.add(new SetCardInfo("Moroii", 216, Rarity.UNCOMMON, mage.cards.m.Moroii.class));
+ cards.add(new SetCardInfo("Mortipede", 96, Rarity.COMMON, mage.cards.m.Mortipede.class));
+ cards.add(new SetCardInfo("Mountain", 299, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 300, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 301, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 302, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Muddle the Mixture", 60, Rarity.COMMON, mage.cards.m.MuddleTheMixture.class));
+ cards.add(new SetCardInfo("Necromantic Thirst", 97, Rarity.COMMON, mage.cards.n.NecromanticThirst.class));
+ cards.add(new SetCardInfo("Necroplasm", 98, Rarity.RARE, mage.cards.n.Necroplasm.class));
+ cards.add(new SetCardInfo("Netherborn Phalanx", 99, Rarity.UNCOMMON, mage.cards.n.NetherbornPhalanx.class));
+ cards.add(new SetCardInfo("Nightguard Patrol", 26, Rarity.COMMON, mage.cards.n.NightguardPatrol.class));
+ cards.add(new SetCardInfo("Nightmare Void", 100, Rarity.UNCOMMON, mage.cards.n.NightmareVoid.class));
+ cards.add(new SetCardInfo("Nullmage Shepherd", 174, Rarity.UNCOMMON, mage.cards.n.NullmageShepherd.class));
+ cards.add(new SetCardInfo("Nullstone Gargoyle", 266, Rarity.RARE, mage.cards.n.NullstoneGargoyle.class));
+ cards.add(new SetCardInfo("Oathsworn Giant", 27, Rarity.UNCOMMON, mage.cards.o.OathswornGiant.class));
+ cards.add(new SetCardInfo("Ordruun Commando", 137, Rarity.COMMON, mage.cards.o.OrdruunCommando.class));
+ cards.add(new SetCardInfo("Overgrown Tomb", 279, Rarity.RARE, mage.cards.o.OvergrownTomb.class));
+ cards.add(new SetCardInfo("Overwhelm", 175, Rarity.UNCOMMON, mage.cards.o.Overwhelm.class));
+ cards.add(new SetCardInfo("Pariah's Shield", 267, Rarity.RARE, mage.cards.p.PariahsShield.class));
+ cards.add(new SetCardInfo("Peel from Reality", 61, Rarity.COMMON, mage.cards.p.PeelFromReality.class));
+ cards.add(new SetCardInfo("Peregrine Mask", 268, Rarity.UNCOMMON, mage.cards.p.PeregrineMask.class));
+ cards.add(new SetCardInfo("Perilous Forays", 176, Rarity.UNCOMMON, mage.cards.p.PerilousForays.class));
+ cards.add(new SetCardInfo("Perplex", 217, Rarity.COMMON, mage.cards.p.Perplex.class));
+ cards.add(new SetCardInfo("Phytohydra", 218, Rarity.RARE, mage.cards.p.Phytohydra.class));
+ cards.add(new SetCardInfo("Plague Boiler", 269, Rarity.RARE, mage.cards.p.PlagueBoiler.class));
+ cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 288, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 289, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 290, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Pollenbright Wings", 219, Rarity.UNCOMMON, mage.cards.p.PollenbrightWings.class));
+ cards.add(new SetCardInfo("Primordial Sage", 177, Rarity.RARE, mage.cards.p.PrimordialSage.class));
+ cards.add(new SetCardInfo("Privileged Position", 251, Rarity.RARE, mage.cards.p.PrivilegedPosition.class));
+ cards.add(new SetCardInfo("Psychic Drain", 220, Rarity.UNCOMMON, mage.cards.p.PsychicDrain.class));
+ cards.add(new SetCardInfo("Putrefy", 221, Rarity.UNCOMMON, mage.cards.p.Putrefy.class));
+ cards.add(new SetCardInfo("Quickchange", 62, Rarity.COMMON, mage.cards.q.Quickchange.class));
+ cards.add(new SetCardInfo("Rain of Embers", 138, Rarity.COMMON, mage.cards.r.RainOfEmbers.class));
+ cards.add(new SetCardInfo("Rally the Righteous", 222, Rarity.COMMON, mage.cards.r.RallyTheRighteous.class));
+ cards.add(new SetCardInfo("Razia's Purification", 224, Rarity.RARE, mage.cards.r.RaziasPurification.class));
+ cards.add(new SetCardInfo("Razia, Boros Archangel", 223, Rarity.RARE, mage.cards.r.RaziaBorosArchangel.class));
+ cards.add(new SetCardInfo("Recollect", 178, Rarity.UNCOMMON, mage.cards.r.Recollect.class));
+ cards.add(new SetCardInfo("Remand", 63, Rarity.UNCOMMON, mage.cards.r.Remand.class));
+ cards.add(new SetCardInfo("Reroute", 139, Rarity.UNCOMMON, mage.cards.r.Reroute.class));
+ cards.add(new SetCardInfo("Ribbons of Night", 101, Rarity.UNCOMMON, mage.cards.r.RibbonsOfNight.class));
+ cards.add(new SetCardInfo("Rolling Spoil", 179, Rarity.UNCOMMON, mage.cards.r.RollingSpoil.class));
+ cards.add(new SetCardInfo("Roofstalker Wight", 102, Rarity.COMMON, mage.cards.r.RoofstalkerWight.class));
+ cards.add(new SetCardInfo("Root-Kin Ally", 180, Rarity.UNCOMMON, mage.cards.r.RootKinAlly.class));
+ cards.add(new SetCardInfo("Sabertooth Alley Cat", 140, Rarity.COMMON, mage.cards.s.SabertoothAlleyCat.class));
+ cards.add(new SetCardInfo("Sacred Foundry", 280, Rarity.RARE, mage.cards.s.SacredFoundry.class));
+ cards.add(new SetCardInfo("Sadistic Augermage", 103, Rarity.COMMON, mage.cards.s.SadisticAugermage.class));
+ cards.add(new SetCardInfo("Sandsower", 28, Rarity.UNCOMMON, mage.cards.s.Sandsower.class));
+ cards.add(new SetCardInfo("Savra, Queen of the Golgari", 225, Rarity.RARE, mage.cards.s.SavraQueenOfTheGolgari.class));
+ cards.add(new SetCardInfo("Scatter the Seeds", 181, Rarity.COMMON, mage.cards.s.ScatterTheSeeds.class));
+ cards.add(new SetCardInfo("Screeching Griffin", 29, Rarity.COMMON, mage.cards.s.ScreechingGriffin.class));
+ cards.add(new SetCardInfo("Scion of the Wild", 182, Rarity.RARE, mage.cards.s.ScionOfTheWild.class));
+ cards.add(new SetCardInfo("Searing Meditation", 226, Rarity.RARE, mage.cards.s.SearingMeditation.class));
+ cards.add(new SetCardInfo("Seed Spark", 30, Rarity.UNCOMMON, mage.cards.s.SeedSpark.class));
+ cards.add(new SetCardInfo("Seeds of Strength", 227, Rarity.COMMON, mage.cards.s.SeedsOfStrength.class));
+ cards.add(new SetCardInfo("Seismic Spike", 141, Rarity.COMMON, mage.cards.s.SeismicSpike.class));
+ cards.add(new SetCardInfo("Selesnya Evangel", 228, Rarity.COMMON, mage.cards.s.SelesnyaEvangel.class));
+ cards.add(new SetCardInfo("Selesnya Guildmage", 252, Rarity.UNCOMMON, mage.cards.s.SelesnyaGuildmage.class));
+ cards.add(new SetCardInfo("Selesnya Sagittars", 229, Rarity.UNCOMMON, mage.cards.s.SelesnyaSagittars.class));
+ cards.add(new SetCardInfo("Selesnya Sanctuary", 281, Rarity.COMMON, mage.cards.s.SelesnyaSanctuary.class));
+ cards.add(new SetCardInfo("Selesnya Signet", 270, Rarity.COMMON, mage.cards.s.SelesnyaSignet.class));
+ cards.add(new SetCardInfo("Sell-Sword Brute", 142, Rarity.COMMON, mage.cards.s.SellSwordBrute.class));
+ cards.add(new SetCardInfo("Sewerdreg", 104, Rarity.COMMON, mage.cards.s.Sewerdreg.class));
+ cards.add(new SetCardInfo("Shadow of Doubt", 253, Rarity.RARE, mage.cards.s.ShadowOfDoubt.class));
+ cards.add(new SetCardInfo("Shambling Shell", 230, Rarity.COMMON, mage.cards.s.ShamblingShell.class));
+ cards.add(new SetCardInfo("Shred Memory", 105, Rarity.COMMON, mage.cards.s.ShredMemory.class));
+ cards.add(new SetCardInfo("Siege Wurm", 183, Rarity.COMMON, mage.cards.s.SiegeWurm.class));
+ cards.add(new SetCardInfo("Sins of the Past", 106, Rarity.RARE, mage.cards.s.SinsOfThePast.class));
+ cards.add(new SetCardInfo("Sisters of Stone Death", 231, Rarity.RARE, mage.cards.s.SistersOfStoneDeath.class));
+ cards.add(new SetCardInfo("Skyknight Legionnaire", 232, Rarity.COMMON, mage.cards.s.SkyknightLegionnaire.class));
+ cards.add(new SetCardInfo("Smash", 143, Rarity.COMMON, mage.cards.s.Smash.class));
+ cards.add(new SetCardInfo("Snapping Drake", 64, Rarity.COMMON, mage.cards.s.SnappingDrake.class));
+ cards.add(new SetCardInfo("Sparkmage Apprentice", 144, Rarity.COMMON, mage.cards.s.SparkmageApprentice.class));
+ cards.add(new SetCardInfo("Spawnbroker", 65, Rarity.RARE, mage.cards.s.Spawnbroker.class));
+ cards.add(new SetCardInfo("Spectral Searchlight", 271, Rarity.UNCOMMON, mage.cards.s.SpectralSearchlight.class));
+ cards.add(new SetCardInfo("Stasis Cell", 66, Rarity.COMMON, mage.cards.s.StasisCell.class));
+ cards.add(new SetCardInfo("Stinkweed Imp", 107, Rarity.COMMON, mage.cards.s.StinkweedImp.class));
+ cards.add(new SetCardInfo("Stone-Seeder Hierophant", 184, Rarity.COMMON, mage.cards.s.StoneSeederHierophant.class));
+ cards.add(new SetCardInfo("Stoneshaker Shaman", 145, Rarity.UNCOMMON, mage.cards.s.StoneshakerShaman.class));
+ cards.add(new SetCardInfo("Strands of Undeath", 108, Rarity.COMMON, mage.cards.s.StrandsOfUndeath.class));
+ cards.add(new SetCardInfo("Sundering Vitae", 185, Rarity.COMMON, mage.cards.s.SunderingVitae.class));
+ cards.add(new SetCardInfo("Sunforger", 272, Rarity.RARE, mage.cards.s.Sunforger.class));
+ cards.add(new SetCardInfo("Sunhome Enforcer", 233, Rarity.UNCOMMON, mage.cards.s.SunhomeEnforcer.class));
+ cards.add(new SetCardInfo("Sunhome, Fortress of the Legion", 282, Rarity.UNCOMMON, mage.cards.s.SunhomeFortressOfTheLegion.class));
+ cards.add(new SetCardInfo("Suppression Field", 31, Rarity.UNCOMMON, mage.cards.s.SuppressionField.class));
+ cards.add(new SetCardInfo("Surge of Zeal", 146, Rarity.COMMON, mage.cards.s.SurgeOfZeal.class));
+ cards.add(new SetCardInfo("Surveilling Sprite", 67, Rarity.COMMON, mage.cards.s.SurveillingSprite.class));
+ cards.add(new SetCardInfo("Svogthos, the Restless Tomb", 283, Rarity.UNCOMMON, mage.cards.s.SvogthosTheRestlessTomb.class));
+ cards.add(new SetCardInfo("Swamp", 295, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 296, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 297, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 298, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Szadek, Lord of Secrets", 234, Rarity.RARE, mage.cards.s.SzadekLordOfSecrets.class));
+ cards.add(new SetCardInfo("Tattered Drake", 68, Rarity.COMMON, mage.cards.t.TatteredDrake.class));
+ cards.add(new SetCardInfo("Telling Time", 69, Rarity.UNCOMMON, mage.cards.t.TellingTime.class));
+ cards.add(new SetCardInfo("Temple Garden", 284, Rarity.RARE, mage.cards.t.TempleGarden.class));
+ cards.add(new SetCardInfo("Terraformer", 70, Rarity.COMMON, mage.cards.t.Terraformer.class));
+ cards.add(new SetCardInfo("Terrarion", 273, Rarity.COMMON, mage.cards.t.Terrarion.class));
+ cards.add(new SetCardInfo("Thoughtpicker Witch", 109, Rarity.COMMON, mage.cards.t.ThoughtpickerWitch.class));
+ cards.add(new SetCardInfo("Three Dreams", 32, Rarity.RARE, mage.cards.t.ThreeDreams.class));
+ cards.add(new SetCardInfo("Thundersong Trumpeter", 235, Rarity.COMMON, mage.cards.t.ThundersongTrumpeter.class));
+ cards.add(new SetCardInfo("Tidewater Minion", 71, Rarity.COMMON, mage.cards.t.TidewaterMinion.class));
+ cards.add(new SetCardInfo("Tolsimir Wolfblood", 236, Rarity.RARE, mage.cards.t.TolsimirWolfblood.class));
+ cards.add(new SetCardInfo("Torpid Moloch", 147, Rarity.COMMON, mage.cards.t.TorpidMoloch.class));
+ cards.add(new SetCardInfo("Transluminant", 186, Rarity.COMMON, mage.cards.t.Transluminant.class));
+ cards.add(new SetCardInfo("Trophy Hunter", 187, Rarity.UNCOMMON, mage.cards.t.TrophyHunter.class));
+ cards.add(new SetCardInfo("Tunnel Vision", 72, Rarity.RARE, mage.cards.t.TunnelVision.class));
+ cards.add(new SetCardInfo("Twilight Drover", 33, Rarity.RARE, mage.cards.t.TwilightDrover.class));
+ cards.add(new SetCardInfo("Twisted Justice", 237, Rarity.UNCOMMON, mage.cards.t.TwistedJustice.class));
+ cards.add(new SetCardInfo("Undercity Shade", 110, Rarity.UNCOMMON, mage.cards.u.UndercityShade.class));
+ cards.add(new SetCardInfo("Ursapine", 188, Rarity.RARE, mage.cards.u.Ursapine.class));
+ cards.add(new SetCardInfo("Vedalken Dismisser", 73, Rarity.COMMON, mage.cards.v.VedalkenDismisser.class));
+ cards.add(new SetCardInfo("Vedalken Entrancer", 74, Rarity.COMMON, mage.cards.v.VedalkenEntrancer.class));
+ cards.add(new SetCardInfo("Veteran Armorer", 34, Rarity.COMMON, mage.cards.v.VeteranArmorer.class));
+ cards.add(new SetCardInfo("Viashino Fangtail", 148, Rarity.COMMON, mage.cards.v.ViashinoFangtail.class));
+ cards.add(new SetCardInfo("Viashino Slasher", 149, Rarity.COMMON, mage.cards.v.ViashinoSlasher.class));
+ cards.add(new SetCardInfo("Vigor Mortis", 111, Rarity.UNCOMMON, mage.cards.v.VigorMortis.class));
+ cards.add(new SetCardInfo("Vindictive Mob", 112, Rarity.UNCOMMON, mage.cards.v.VindictiveMob.class));
+ cards.add(new SetCardInfo("Vinelasher Kudzu", 189, Rarity.RARE, mage.cards.v.VinelasherKudzu.class));
+ cards.add(new SetCardInfo("Vitu-Ghazi, the City-Tree", 285, Rarity.UNCOMMON, mage.cards.v.VituGhaziTheCityTree.class));
+ cards.add(new SetCardInfo("Votary of the Conclave", 35, Rarity.COMMON, mage.cards.v.VotaryOfTheConclave.class));
+ cards.add(new SetCardInfo("Voyager Staff", 274, Rarity.UNCOMMON, mage.cards.v.VoyagerStaff.class));
+ cards.add(new SetCardInfo("Vulturous Zombie", 238, Rarity.RARE, mage.cards.v.VulturousZombie.class));
+ cards.add(new SetCardInfo("Warp World", 150, Rarity.RARE, mage.cards.w.WarpWorld.class));
+ cards.add(new SetCardInfo("War-Torch Goblin", 151, Rarity.COMMON, mage.cards.w.WarTorchGoblin.class));
+ cards.add(new SetCardInfo("Watchwolf", 239, Rarity.UNCOMMON, mage.cards.w.Watchwolf.class));
+ cards.add(new SetCardInfo("Watery Grave", 286, Rarity.RARE, mage.cards.w.WateryGrave.class));
+ cards.add(new SetCardInfo("Wizened Snitches", 75, Rarity.UNCOMMON, mage.cards.w.WizenedSnitches.class));
+ cards.add(new SetCardInfo("Woebringer Demon", 113, Rarity.RARE, mage.cards.w.WoebringerDemon.class));
+ cards.add(new SetCardInfo("Wojek Apothecary", 36, Rarity.UNCOMMON, mage.cards.w.WojekApothecary.class));
+ cards.add(new SetCardInfo("Wojek Embermage", 152, Rarity.UNCOMMON, mage.cards.w.WojekEmbermage.class));
+ cards.add(new SetCardInfo("Wojek Siren", 37, Rarity.COMMON, mage.cards.w.WojekSiren.class));
+ cards.add(new SetCardInfo("Woodwraith Corrupter", 240, Rarity.RARE, mage.cards.w.WoodwraithCorrupter.class));
+ cards.add(new SetCardInfo("Woodwraith Strangler", 241, Rarity.COMMON, mage.cards.w.WoodwraithStrangler.class));
+ cards.add(new SetCardInfo("Zephyr Spirit", 76, Rarity.COMMON, mage.cards.z.ZephyrSpirit.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ReturnToRavnica.java b/Mage.Sets/src/mage/sets/ReturnToRavnica.java
index 132fdb5b940..23ed443a0e2 100644
--- a/Mage.Sets/src/mage/sets/ReturnToRavnica.java
+++ b/Mage.Sets/src/mage/sets/ReturnToRavnica.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author magenoxx_at_gmail.com
*/
-public class ReturnToRavnica extends ExpansionSet {
+public final class ReturnToRavnica extends ExpansionSet {
private static final ReturnToRavnica instance = new ReturnToRavnica();
diff --git a/Mage.Sets/src/mage/sets/RevisedEdition.java b/Mage.Sets/src/mage/sets/RevisedEdition.java
index 36950df6f41..4a52b16002a 100644
--- a/Mage.Sets/src/mage/sets/RevisedEdition.java
+++ b/Mage.Sets/src/mage/sets/RevisedEdition.java
@@ -8,7 +8,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class RevisedEdition extends ExpansionSet {
+public final class RevisedEdition extends ExpansionSet {
private static final RevisedEdition instance = new RevisedEdition();
diff --git a/Mage.Sets/src/mage/sets/RiseOfTheEldrazi.java b/Mage.Sets/src/mage/sets/RiseOfTheEldrazi.java
index 36acd42558a..1b33d54cabc 100644
--- a/Mage.Sets/src/mage/sets/RiseOfTheEldrazi.java
+++ b/Mage.Sets/src/mage/sets/RiseOfTheEldrazi.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class RiseOfTheEldrazi extends ExpansionSet {
+public final class RiseOfTheEldrazi extends ExpansionSet {
private static final RiseOfTheEldrazi instance = new RiseOfTheEldrazi();
diff --git a/Mage.Sets/src/mage/sets/RivalsOfIxalan.java b/Mage.Sets/src/mage/sets/RivalsOfIxalan.java
index 931345ba423..33edc347e8f 100644
--- a/Mage.Sets/src/mage/sets/RivalsOfIxalan.java
+++ b/Mage.Sets/src/mage/sets/RivalsOfIxalan.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class RivalsOfIxalan extends ExpansionSet {
+public final class RivalsOfIxalan extends ExpansionSet {
private static final RivalsOfIxalan instance = new RivalsOfIxalan();
diff --git a/Mage.Sets/src/mage/sets/SaviorsOfKamigawa.java b/Mage.Sets/src/mage/sets/SaviorsOfKamigawa.java
index d3d7e0b4eaf..9e8d834449e 100644
--- a/Mage.Sets/src/mage/sets/SaviorsOfKamigawa.java
+++ b/Mage.Sets/src/mage/sets/SaviorsOfKamigawa.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class SaviorsOfKamigawa extends ExpansionSet {
+public final class SaviorsOfKamigawa extends ExpansionSet {
private static final SaviorsOfKamigawa instance = new SaviorsOfKamigawa();
diff --git a/Mage.Sets/src/mage/sets/ScarsOfMirrodin.java b/Mage.Sets/src/mage/sets/ScarsOfMirrodin.java
index 24db557f77f..01d62de6a3e 100644
--- a/Mage.Sets/src/mage/sets/ScarsOfMirrodin.java
+++ b/Mage.Sets/src/mage/sets/ScarsOfMirrodin.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author nantuko84
*/
-public class ScarsOfMirrodin extends ExpansionSet {
+public final class ScarsOfMirrodin extends ExpansionSet {
private static final ScarsOfMirrodin instance = new ScarsOfMirrodin();
diff --git a/Mage.Sets/src/mage/sets/Scourge.java b/Mage.Sets/src/mage/sets/Scourge.java
index 3c5bf9920f1..25a6ccbf908 100644
--- a/Mage.Sets/src/mage/sets/Scourge.java
+++ b/Mage.Sets/src/mage/sets/Scourge.java
@@ -1,198 +1,198 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class Scourge extends ExpansionSet {
-
- private static final Scourge instance = new Scourge();
-
- public static Scourge getInstance() {
- return instance;
- }
-
- private Scourge() {
- super("Scourge", "SCG", ExpansionSet.buildDate(2003, 5, 17), SetType.EXPANSION);
- this.blockName = "Onslaught";
- this.parentSet = Onslaught.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("Accelerated Mutation", 109, Rarity.COMMON, mage.cards.a.AcceleratedMutation.class));
- cards.add(new SetCardInfo("Ageless Sentinels", 1, Rarity.RARE, mage.cards.a.AgelessSentinels.class));
- cards.add(new SetCardInfo("Alpha Status", 110, Rarity.UNCOMMON, mage.cards.a.AlphaStatus.class));
- cards.add(new SetCardInfo("Ambush Commander", 111, Rarity.RARE, mage.cards.a.AmbushCommander.class));
- cards.add(new SetCardInfo("Ancient Ooze", 112, Rarity.RARE, mage.cards.a.AncientOoze.class));
- cards.add(new SetCardInfo("Aphetto Runecaster", 28, Rarity.UNCOMMON, mage.cards.a.AphettoRunecaster.class));
- cards.add(new SetCardInfo("Ark of Blight", 140, Rarity.UNCOMMON, mage.cards.a.ArkOfBlight.class));
- cards.add(new SetCardInfo("Astral Steel", 2, Rarity.COMMON, mage.cards.a.AstralSteel.class));
- cards.add(new SetCardInfo("Aven Farseer", 3, Rarity.COMMON, mage.cards.a.AvenFarseer.class));
- cards.add(new SetCardInfo("Aven Liberator", 4, Rarity.COMMON, mage.cards.a.AvenLiberator.class));
- cards.add(new SetCardInfo("Bladewing's Thrall", 55, Rarity.UNCOMMON, mage.cards.b.BladewingsThrall.class));
- cards.add(new SetCardInfo("Bladewing the Risen", 136, Rarity.RARE, mage.cards.b.BladewingTheRisen.class));
- cards.add(new SetCardInfo("Bonethorn Valesk", 82, Rarity.COMMON, mage.cards.b.BonethornValesk.class));
- 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("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));
- cards.add(new SetCardInfo("Chartooth Cougar", 84, Rarity.COMMON, mage.cards.c.ChartoothCougar.class));
- cards.add(new SetCardInfo("Chill Haunting", 60, Rarity.UNCOMMON, mage.cards.c.ChillHaunting.class));
- cards.add(new SetCardInfo("Claws of Wirewood", 114, Rarity.UNCOMMON, mage.cards.c.ClawsOfWirewood.class));
- cards.add(new SetCardInfo("Clutch of Undeath", 61, Rarity.COMMON, mage.cards.c.ClutchOfUndeath.class));
- cards.add(new SetCardInfo("Coast Watcher", 30, Rarity.COMMON, mage.cards.c.CoastWatcher.class));
- cards.add(new SetCardInfo("Consumptive Goo", 62, Rarity.RARE, mage.cards.c.ConsumptiveGoo.class));
- cards.add(new SetCardInfo("Daru Spiritualist", 5, Rarity.COMMON, mage.cards.d.DaruSpiritualist.class));
- cards.add(new SetCardInfo("Daru Warchief", 6, Rarity.UNCOMMON, mage.cards.d.DaruWarchief.class));
- cards.add(new SetCardInfo("Dawn Elemental", 7, Rarity.RARE, mage.cards.d.DawnElemental.class));
- cards.add(new SetCardInfo("Day of the Dragons", 31, Rarity.RARE, mage.cards.d.DayOfTheDragons.class));
- cards.add(new SetCardInfo("Death's-Head Buzzard", 63, Rarity.COMMON, mage.cards.d.DeathsHeadBuzzard.class));
- cards.add(new SetCardInfo("Decree of Annihilation", 85, Rarity.RARE, mage.cards.d.DecreeOfAnnihilation.class));
- cards.add(new SetCardInfo("Decree of Justice", 8, Rarity.RARE, mage.cards.d.DecreeOfJustice.class));
- cards.add(new SetCardInfo("Decree of Pain", 64, Rarity.RARE, mage.cards.d.DecreeOfPain.class));
- cards.add(new SetCardInfo("Decree of Savagery", 115, Rarity.RARE, mage.cards.d.DecreeOfSavagery.class));
- cards.add(new SetCardInfo("Decree of Silence", 32, Rarity.RARE, mage.cards.d.DecreeOfSilence.class));
- cards.add(new SetCardInfo("Dimensional Breach", 9, Rarity.RARE, mage.cards.d.DimensionalBreach.class));
- cards.add(new SetCardInfo("Dispersal Shield", 33, Rarity.COMMON, mage.cards.d.DispersalShield.class));
- cards.add(new SetCardInfo("Divergent Growth", 116, Rarity.COMMON, mage.cards.d.DivergentGrowth.class));
- cards.add(new SetCardInfo("Dragon Breath", 86, Rarity.COMMON, mage.cards.d.DragonBreath.class));
- cards.add(new SetCardInfo("Dragon Fangs", 117, Rarity.COMMON, mage.cards.d.DragonFangs.class));
- cards.add(new SetCardInfo("Dragon Mage", 87, Rarity.RARE, mage.cards.d.DragonMage.class));
- cards.add(new SetCardInfo("Dragon Scales", 10, Rarity.COMMON, mage.cards.d.DragonScales.class));
- cards.add(new SetCardInfo("Dragon Shadow", 65, Rarity.COMMON, mage.cards.d.DragonShadow.class));
- cards.add(new SetCardInfo("Dragonspeaker Shaman", 89, Rarity.UNCOMMON, mage.cards.d.DragonspeakerShaman.class));
- cards.add(new SetCardInfo("Dragonstalker", 11, Rarity.UNCOMMON, mage.cards.d.Dragonstalker.class));
- cards.add(new SetCardInfo("Dragonstorm", 90, Rarity.RARE, mage.cards.d.Dragonstorm.class));
- cards.add(new SetCardInfo("Dragon Tyrant", 88, Rarity.RARE, mage.cards.d.DragonTyrant.class));
- cards.add(new SetCardInfo("Dragon Wings", 34, Rarity.COMMON, mage.cards.d.DragonWings.class));
- cards.add(new SetCardInfo("Edgewalker", 137, Rarity.UNCOMMON, mage.cards.e.Edgewalker.class));
- cards.add(new SetCardInfo("Elvish Aberration", 118, Rarity.UNCOMMON, mage.cards.e.ElvishAberration.class));
- cards.add(new SetCardInfo("Enrage", 91, Rarity.UNCOMMON, mage.cards.e.Enrage.class));
- cards.add(new SetCardInfo("Eternal Dragon", 12, Rarity.RARE, mage.cards.e.EternalDragon.class));
- cards.add(new SetCardInfo("Extra Arms", 92, Rarity.UNCOMMON, mage.cards.e.ExtraArms.class));
- cards.add(new SetCardInfo("Faces of the Past", 35, Rarity.RARE, mage.cards.f.FacesOfThePast.class));
- cards.add(new SetCardInfo("Fatal Mutation", 66, Rarity.UNCOMMON, mage.cards.f.FatalMutation.class));
- cards.add(new SetCardInfo("Fierce Empath", 119, Rarity.COMMON, mage.cards.f.FierceEmpath.class));
- cards.add(new SetCardInfo("Final Punishment", 67, Rarity.RARE, mage.cards.f.FinalPunishment.class));
- cards.add(new SetCardInfo("Forgotten Ancient", 120, Rarity.RARE, mage.cards.f.ForgottenAncient.class));
- cards.add(new SetCardInfo("Form of the Dragon", 93, Rarity.RARE, mage.cards.f.FormOfTheDragon.class));
- cards.add(new SetCardInfo("Force Bubble", 14, Rarity.RARE, mage.cards.f.ForceBubble.class));
- cards.add(new SetCardInfo("Frontline Strategist", 15, Rarity.COMMON, mage.cards.f.FrontlineStrategist.class));
- cards.add(new SetCardInfo("Frozen Solid", 36, Rarity.COMMON, mage.cards.f.FrozenSolid.class));
- cards.add(new SetCardInfo("Gilded Light", 16, Rarity.UNCOMMON, mage.cards.g.GildedLight.class));
- cards.add(new SetCardInfo("Goblin Brigand", 94, Rarity.COMMON, mage.cards.g.GoblinBrigand.class));
- cards.add(new SetCardInfo("Goblin Psychopath", 95, Rarity.UNCOMMON, mage.cards.g.GoblinPsychopath.class));
- cards.add(new SetCardInfo("Goblin Warchief", 97, Rarity.UNCOMMON, mage.cards.g.GoblinWarchief.class));
- cards.add(new SetCardInfo("Goblin War Strike", 96, Rarity.COMMON, mage.cards.g.GoblinWarStrike.class));
- cards.add(new SetCardInfo("Grip of Chaos", 98, Rarity.RARE, mage.cards.g.GripOfChaos.class));
- cards.add(new SetCardInfo("Guilty Conscience", 17, Rarity.COMMON, mage.cards.g.GuiltyConscience.class));
- cards.add(new SetCardInfo("Hindering Touch", 37, Rarity.COMMON, mage.cards.h.HinderingTouch.class));
- cards.add(new SetCardInfo("Hunting Pack", 121, Rarity.UNCOMMON, mage.cards.h.HuntingPack.class));
- cards.add(new SetCardInfo("Karona's Zealot", 18, Rarity.UNCOMMON, mage.cards.k.KaronasZealot.class));
- cards.add(new SetCardInfo("Karona, False God", 138, Rarity.RARE, mage.cards.k.KaronaFalseGod.class));
- cards.add(new SetCardInfo("Krosan Drover", 122, Rarity.COMMON, mage.cards.k.KrosanDrover.class));
- cards.add(new SetCardInfo("Krosan Warchief", 123, Rarity.UNCOMMON, mage.cards.k.KrosanWarchief.class));
- cards.add(new SetCardInfo("Kurgadon", 124, Rarity.UNCOMMON, mage.cards.k.Kurgadon.class));
- cards.add(new SetCardInfo("Lethal Vapors", 68, Rarity.RARE, mage.cards.l.LethalVapors.class));
- cards.add(new SetCardInfo("Lingering Death", 69, Rarity.COMMON, mage.cards.l.LingeringDeath.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));
- cards.add(new SetCardInfo("Mistform Warchief", 43, Rarity.UNCOMMON, mage.cards.m.MistformWarchief.class));
- cards.add(new SetCardInfo("Nefashu", 70, Rarity.RARE, mage.cards.n.Nefashu.class));
- cards.add(new SetCardInfo("Noble Templar", 19, Rarity.COMMON, mage.cards.n.NobleTemplar.class));
- cards.add(new SetCardInfo("One with Nature", 125, Rarity.UNCOMMON, mage.cards.o.OneWithNature.class));
- cards.add(new SetCardInfo("Parallel Thoughts", 44, Rarity.RARE, mage.cards.p.ParallelThoughts.class));
- cards.add(new SetCardInfo("Pemmin's Aura", 45, Rarity.UNCOMMON, mage.cards.p.PemminsAura.class));
- cards.add(new SetCardInfo("Primitive Etchings", 126, Rarity.RARE, mage.cards.p.PrimitiveEtchings.class));
- cards.add(new SetCardInfo("Proteus Machine", 141, Rarity.UNCOMMON, mage.cards.p.ProteusMachine.class));
- cards.add(new SetCardInfo("Putrid Raptor", 71, Rarity.UNCOMMON, mage.cards.p.PutridRaptor.class));
- cards.add(new SetCardInfo("Pyrostatic Pillar", 100, Rarity.UNCOMMON, mage.cards.p.PyrostaticPillar.class));
- cards.add(new SetCardInfo("Rain of Blades", 20, Rarity.UNCOMMON, mage.cards.r.RainOfBlades.class));
- cards.add(new SetCardInfo("Raven Guild Initiate", 46, Rarity.COMMON, mage.cards.r.RavenGuildInitiate.class));
- cards.add(new SetCardInfo("Raven Guild Master", 47, Rarity.RARE, mage.cards.r.RavenGuildMaster.class));
- cards.add(new SetCardInfo("Reaping the Graves", 72, Rarity.COMMON, mage.cards.r.ReapingTheGraves.class));
- cards.add(new SetCardInfo("Recuperate", 21, Rarity.COMMON, mage.cards.r.Recuperate.class));
- cards.add(new SetCardInfo("Reward the Faithful", 22, Rarity.UNCOMMON, mage.cards.r.RewardTheFaithful.class));
- cards.add(new SetCardInfo("Riptide Survivor", 48, Rarity.UNCOMMON, mage.cards.r.RiptideSurvivor.class));
- cards.add(new SetCardInfo("Root Elemental", 127, Rarity.RARE, mage.cards.r.RootElemental.class));
- cards.add(new SetCardInfo("Rush of Knowledge", 49, Rarity.COMMON, mage.cards.r.RushOfKnowledge.class));
- cards.add(new SetCardInfo("Scattershot", 102, Rarity.COMMON, mage.cards.s.Scattershot.class));
- cards.add(new SetCardInfo("Scornful Egotist", 50, Rarity.COMMON, mage.cards.s.ScornfulEgotist.class));
- cards.add(new SetCardInfo("Shoreline Ranger", 51, Rarity.COMMON, mage.cards.s.ShorelineRanger.class));
- cards.add(new SetCardInfo("Siege-Gang Commander", 103, Rarity.RARE, mage.cards.s.SiegeGangCommander.class));
- cards.add(new SetCardInfo("Silver Knight", 23, Rarity.UNCOMMON, mage.cards.s.SilverKnight.class));
- cards.add(new SetCardInfo("Skirk Volcanist", 104, Rarity.UNCOMMON, mage.cards.s.SkirkVolcanist.class));
- cards.add(new SetCardInfo("Skulltap", 73, Rarity.COMMON, mage.cards.s.Skulltap.class));
- cards.add(new SetCardInfo("Sliver Overlord", 139, Rarity.RARE, mage.cards.s.SliverOverlord.class));
- cards.add(new SetCardInfo("Soul Collector", 74, Rarity.RARE, mage.cards.s.SoulCollector.class));
- cards.add(new SetCardInfo("Spark Spray", 105, Rarity.COMMON, mage.cards.s.SparkSpray.class));
- cards.add(new SetCardInfo("Sprouting Vines", 128, Rarity.COMMON, mage.cards.s.SproutingVines.class));
- cards.add(new SetCardInfo("Stifle", 52, Rarity.RARE, mage.cards.s.Stifle.class));
- cards.add(new SetCardInfo("Sulfuric Vortex", 106, Rarity.RARE, mage.cards.s.SulfuricVortex.class));
- cards.add(new SetCardInfo("Temple of the False God", 143, Rarity.UNCOMMON, mage.cards.t.TempleOfTheFalseGod.class));
- cards.add(new SetCardInfo("Temporal Fissure", 53, Rarity.COMMON, mage.cards.t.TemporalFissure.class));
- cards.add(new SetCardInfo("Tendrils of Agony", 75, Rarity.UNCOMMON, mage.cards.t.TendrilsOfAgony.class));
- cards.add(new SetCardInfo("Thundercloud Elemental", 54, Rarity.UNCOMMON, mage.cards.t.ThundercloudElemental.class));
- cards.add(new SetCardInfo("Titanic Bulvox", 129, Rarity.COMMON, mage.cards.t.TitanicBulvox.class));
- cards.add(new SetCardInfo("Torrent of Fire", 107, Rarity.COMMON, mage.cards.t.TorrentOfFire.class));
- cards.add(new SetCardInfo("Trap Digger", 24, Rarity.RARE, mage.cards.t.TrapDigger.class));
- cards.add(new SetCardInfo("Treetop Scout", 130, Rarity.COMMON, mage.cards.t.TreetopScout.class));
- cards.add(new SetCardInfo("Twisted Abomination", 76, Rarity.COMMON, mage.cards.t.TwistedAbomination.class));
- cards.add(new SetCardInfo("Unburden", 77, Rarity.COMMON, mage.cards.u.Unburden.class));
- cards.add(new SetCardInfo("Uncontrolled Infestation", 108, Rarity.COMMON, mage.cards.u.UncontrolledInfestation.class));
- cards.add(new SetCardInfo("Undead Warchief", 78, Rarity.UNCOMMON, mage.cards.u.UndeadWarchief.class));
- cards.add(new SetCardInfo("Unspeakable Symbol", 79, Rarity.UNCOMMON, mage.cards.u.UnspeakableSymbol.class));
- cards.add(new SetCardInfo("Upwelling", 131, Rarity.RARE, mage.cards.u.Upwelling.class));
- cards.add(new SetCardInfo("Vengeful Dead", 80, Rarity.COMMON, mage.cards.v.VengefulDead.class));
- cards.add(new SetCardInfo("Wing Shards", 25, Rarity.UNCOMMON, mage.cards.w.WingShards.class));
- cards.add(new SetCardInfo("Wipe Clean", 26, Rarity.COMMON, mage.cards.w.WipeClean.class));
- cards.add(new SetCardInfo("Wirewood Guardian", 132, Rarity.COMMON, mage.cards.w.WirewoodGuardian.class));
- cards.add(new SetCardInfo("Wirewood Symbiote", 133, Rarity.UNCOMMON, mage.cards.w.WirewoodSymbiote.class));
- cards.add(new SetCardInfo("Woodcloaker", 134, Rarity.COMMON, mage.cards.w.Woodcloaker.class));
- cards.add(new SetCardInfo("Xantid Swarm", 135, Rarity.RARE, mage.cards.x.XantidSwarm.class));
- cards.add(new SetCardInfo("Zealous Inquisitor", 27, Rarity.COMMON, mage.cards.z.ZealousInquisitor.class));
- cards.add(new SetCardInfo("Zombie Cutthroat", 81, Rarity.COMMON, mage.cards.z.ZombieCutthroat.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Scourge extends ExpansionSet {
+
+ private static final Scourge instance = new Scourge();
+
+ public static Scourge getInstance() {
+ return instance;
+ }
+
+ private Scourge() {
+ super("Scourge", "SCG", ExpansionSet.buildDate(2003, 5, 17), SetType.EXPANSION);
+ this.blockName = "Onslaught";
+ this.parentSet = Onslaught.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("Accelerated Mutation", 109, Rarity.COMMON, mage.cards.a.AcceleratedMutation.class));
+ cards.add(new SetCardInfo("Ageless Sentinels", 1, Rarity.RARE, mage.cards.a.AgelessSentinels.class));
+ cards.add(new SetCardInfo("Alpha Status", 110, Rarity.UNCOMMON, mage.cards.a.AlphaStatus.class));
+ cards.add(new SetCardInfo("Ambush Commander", 111, Rarity.RARE, mage.cards.a.AmbushCommander.class));
+ cards.add(new SetCardInfo("Ancient Ooze", 112, Rarity.RARE, mage.cards.a.AncientOoze.class));
+ cards.add(new SetCardInfo("Aphetto Runecaster", 28, Rarity.UNCOMMON, mage.cards.a.AphettoRunecaster.class));
+ cards.add(new SetCardInfo("Ark of Blight", 140, Rarity.UNCOMMON, mage.cards.a.ArkOfBlight.class));
+ cards.add(new SetCardInfo("Astral Steel", 2, Rarity.COMMON, mage.cards.a.AstralSteel.class));
+ cards.add(new SetCardInfo("Aven Farseer", 3, Rarity.COMMON, mage.cards.a.AvenFarseer.class));
+ cards.add(new SetCardInfo("Aven Liberator", 4, Rarity.COMMON, mage.cards.a.AvenLiberator.class));
+ cards.add(new SetCardInfo("Bladewing's Thrall", 55, Rarity.UNCOMMON, mage.cards.b.BladewingsThrall.class));
+ cards.add(new SetCardInfo("Bladewing the Risen", 136, Rarity.RARE, mage.cards.b.BladewingTheRisen.class));
+ cards.add(new SetCardInfo("Bonethorn Valesk", 82, Rarity.COMMON, mage.cards.b.BonethornValesk.class));
+ 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("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));
+ cards.add(new SetCardInfo("Chartooth Cougar", 84, Rarity.COMMON, mage.cards.c.ChartoothCougar.class));
+ cards.add(new SetCardInfo("Chill Haunting", 60, Rarity.UNCOMMON, mage.cards.c.ChillHaunting.class));
+ cards.add(new SetCardInfo("Claws of Wirewood", 114, Rarity.UNCOMMON, mage.cards.c.ClawsOfWirewood.class));
+ cards.add(new SetCardInfo("Clutch of Undeath", 61, Rarity.COMMON, mage.cards.c.ClutchOfUndeath.class));
+ cards.add(new SetCardInfo("Coast Watcher", 30, Rarity.COMMON, mage.cards.c.CoastWatcher.class));
+ cards.add(new SetCardInfo("Consumptive Goo", 62, Rarity.RARE, mage.cards.c.ConsumptiveGoo.class));
+ cards.add(new SetCardInfo("Daru Spiritualist", 5, Rarity.COMMON, mage.cards.d.DaruSpiritualist.class));
+ cards.add(new SetCardInfo("Daru Warchief", 6, Rarity.UNCOMMON, mage.cards.d.DaruWarchief.class));
+ cards.add(new SetCardInfo("Dawn Elemental", 7, Rarity.RARE, mage.cards.d.DawnElemental.class));
+ cards.add(new SetCardInfo("Day of the Dragons", 31, Rarity.RARE, mage.cards.d.DayOfTheDragons.class));
+ cards.add(new SetCardInfo("Death's-Head Buzzard", 63, Rarity.COMMON, mage.cards.d.DeathsHeadBuzzard.class));
+ cards.add(new SetCardInfo("Decree of Annihilation", 85, Rarity.RARE, mage.cards.d.DecreeOfAnnihilation.class));
+ cards.add(new SetCardInfo("Decree of Justice", 8, Rarity.RARE, mage.cards.d.DecreeOfJustice.class));
+ cards.add(new SetCardInfo("Decree of Pain", 64, Rarity.RARE, mage.cards.d.DecreeOfPain.class));
+ cards.add(new SetCardInfo("Decree of Savagery", 115, Rarity.RARE, mage.cards.d.DecreeOfSavagery.class));
+ cards.add(new SetCardInfo("Decree of Silence", 32, Rarity.RARE, mage.cards.d.DecreeOfSilence.class));
+ cards.add(new SetCardInfo("Dimensional Breach", 9, Rarity.RARE, mage.cards.d.DimensionalBreach.class));
+ cards.add(new SetCardInfo("Dispersal Shield", 33, Rarity.COMMON, mage.cards.d.DispersalShield.class));
+ cards.add(new SetCardInfo("Divergent Growth", 116, Rarity.COMMON, mage.cards.d.DivergentGrowth.class));
+ cards.add(new SetCardInfo("Dragon Breath", 86, Rarity.COMMON, mage.cards.d.DragonBreath.class));
+ cards.add(new SetCardInfo("Dragon Fangs", 117, Rarity.COMMON, mage.cards.d.DragonFangs.class));
+ cards.add(new SetCardInfo("Dragon Mage", 87, Rarity.RARE, mage.cards.d.DragonMage.class));
+ cards.add(new SetCardInfo("Dragon Scales", 10, Rarity.COMMON, mage.cards.d.DragonScales.class));
+ cards.add(new SetCardInfo("Dragon Shadow", 65, Rarity.COMMON, mage.cards.d.DragonShadow.class));
+ cards.add(new SetCardInfo("Dragonspeaker Shaman", 89, Rarity.UNCOMMON, mage.cards.d.DragonspeakerShaman.class));
+ cards.add(new SetCardInfo("Dragonstalker", 11, Rarity.UNCOMMON, mage.cards.d.Dragonstalker.class));
+ cards.add(new SetCardInfo("Dragonstorm", 90, Rarity.RARE, mage.cards.d.Dragonstorm.class));
+ cards.add(new SetCardInfo("Dragon Tyrant", 88, Rarity.RARE, mage.cards.d.DragonTyrant.class));
+ cards.add(new SetCardInfo("Dragon Wings", 34, Rarity.COMMON, mage.cards.d.DragonWings.class));
+ cards.add(new SetCardInfo("Edgewalker", 137, Rarity.UNCOMMON, mage.cards.e.Edgewalker.class));
+ cards.add(new SetCardInfo("Elvish Aberration", 118, Rarity.UNCOMMON, mage.cards.e.ElvishAberration.class));
+ cards.add(new SetCardInfo("Enrage", 91, Rarity.UNCOMMON, mage.cards.e.Enrage.class));
+ cards.add(new SetCardInfo("Eternal Dragon", 12, Rarity.RARE, mage.cards.e.EternalDragon.class));
+ cards.add(new SetCardInfo("Extra Arms", 92, Rarity.UNCOMMON, mage.cards.e.ExtraArms.class));
+ cards.add(new SetCardInfo("Faces of the Past", 35, Rarity.RARE, mage.cards.f.FacesOfThePast.class));
+ cards.add(new SetCardInfo("Fatal Mutation", 66, Rarity.UNCOMMON, mage.cards.f.FatalMutation.class));
+ cards.add(new SetCardInfo("Fierce Empath", 119, Rarity.COMMON, mage.cards.f.FierceEmpath.class));
+ cards.add(new SetCardInfo("Final Punishment", 67, Rarity.RARE, mage.cards.f.FinalPunishment.class));
+ cards.add(new SetCardInfo("Forgotten Ancient", 120, Rarity.RARE, mage.cards.f.ForgottenAncient.class));
+ cards.add(new SetCardInfo("Form of the Dragon", 93, Rarity.RARE, mage.cards.f.FormOfTheDragon.class));
+ cards.add(new SetCardInfo("Force Bubble", 14, Rarity.RARE, mage.cards.f.ForceBubble.class));
+ cards.add(new SetCardInfo("Frontline Strategist", 15, Rarity.COMMON, mage.cards.f.FrontlineStrategist.class));
+ cards.add(new SetCardInfo("Frozen Solid", 36, Rarity.COMMON, mage.cards.f.FrozenSolid.class));
+ cards.add(new SetCardInfo("Gilded Light", 16, Rarity.UNCOMMON, mage.cards.g.GildedLight.class));
+ cards.add(new SetCardInfo("Goblin Brigand", 94, Rarity.COMMON, mage.cards.g.GoblinBrigand.class));
+ cards.add(new SetCardInfo("Goblin Psychopath", 95, Rarity.UNCOMMON, mage.cards.g.GoblinPsychopath.class));
+ cards.add(new SetCardInfo("Goblin Warchief", 97, Rarity.UNCOMMON, mage.cards.g.GoblinWarchief.class));
+ cards.add(new SetCardInfo("Goblin War Strike", 96, Rarity.COMMON, mage.cards.g.GoblinWarStrike.class));
+ cards.add(new SetCardInfo("Grip of Chaos", 98, Rarity.RARE, mage.cards.g.GripOfChaos.class));
+ cards.add(new SetCardInfo("Guilty Conscience", 17, Rarity.COMMON, mage.cards.g.GuiltyConscience.class));
+ cards.add(new SetCardInfo("Hindering Touch", 37, Rarity.COMMON, mage.cards.h.HinderingTouch.class));
+ cards.add(new SetCardInfo("Hunting Pack", 121, Rarity.UNCOMMON, mage.cards.h.HuntingPack.class));
+ cards.add(new SetCardInfo("Karona's Zealot", 18, Rarity.UNCOMMON, mage.cards.k.KaronasZealot.class));
+ cards.add(new SetCardInfo("Karona, False God", 138, Rarity.RARE, mage.cards.k.KaronaFalseGod.class));
+ cards.add(new SetCardInfo("Krosan Drover", 122, Rarity.COMMON, mage.cards.k.KrosanDrover.class));
+ cards.add(new SetCardInfo("Krosan Warchief", 123, Rarity.UNCOMMON, mage.cards.k.KrosanWarchief.class));
+ cards.add(new SetCardInfo("Kurgadon", 124, Rarity.UNCOMMON, mage.cards.k.Kurgadon.class));
+ cards.add(new SetCardInfo("Lethal Vapors", 68, Rarity.RARE, mage.cards.l.LethalVapors.class));
+ cards.add(new SetCardInfo("Lingering Death", 69, Rarity.COMMON, mage.cards.l.LingeringDeath.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));
+ cards.add(new SetCardInfo("Mistform Warchief", 43, Rarity.UNCOMMON, mage.cards.m.MistformWarchief.class));
+ cards.add(new SetCardInfo("Nefashu", 70, Rarity.RARE, mage.cards.n.Nefashu.class));
+ cards.add(new SetCardInfo("Noble Templar", 19, Rarity.COMMON, mage.cards.n.NobleTemplar.class));
+ cards.add(new SetCardInfo("One with Nature", 125, Rarity.UNCOMMON, mage.cards.o.OneWithNature.class));
+ cards.add(new SetCardInfo("Parallel Thoughts", 44, Rarity.RARE, mage.cards.p.ParallelThoughts.class));
+ cards.add(new SetCardInfo("Pemmin's Aura", 45, Rarity.UNCOMMON, mage.cards.p.PemminsAura.class));
+ cards.add(new SetCardInfo("Primitive Etchings", 126, Rarity.RARE, mage.cards.p.PrimitiveEtchings.class));
+ cards.add(new SetCardInfo("Proteus Machine", 141, Rarity.UNCOMMON, mage.cards.p.ProteusMachine.class));
+ cards.add(new SetCardInfo("Putrid Raptor", 71, Rarity.UNCOMMON, mage.cards.p.PutridRaptor.class));
+ cards.add(new SetCardInfo("Pyrostatic Pillar", 100, Rarity.UNCOMMON, mage.cards.p.PyrostaticPillar.class));
+ cards.add(new SetCardInfo("Rain of Blades", 20, Rarity.UNCOMMON, mage.cards.r.RainOfBlades.class));
+ cards.add(new SetCardInfo("Raven Guild Initiate", 46, Rarity.COMMON, mage.cards.r.RavenGuildInitiate.class));
+ cards.add(new SetCardInfo("Raven Guild Master", 47, Rarity.RARE, mage.cards.r.RavenGuildMaster.class));
+ cards.add(new SetCardInfo("Reaping the Graves", 72, Rarity.COMMON, mage.cards.r.ReapingTheGraves.class));
+ cards.add(new SetCardInfo("Recuperate", 21, Rarity.COMMON, mage.cards.r.Recuperate.class));
+ cards.add(new SetCardInfo("Reward the Faithful", 22, Rarity.UNCOMMON, mage.cards.r.RewardTheFaithful.class));
+ cards.add(new SetCardInfo("Riptide Survivor", 48, Rarity.UNCOMMON, mage.cards.r.RiptideSurvivor.class));
+ cards.add(new SetCardInfo("Root Elemental", 127, Rarity.RARE, mage.cards.r.RootElemental.class));
+ cards.add(new SetCardInfo("Rush of Knowledge", 49, Rarity.COMMON, mage.cards.r.RushOfKnowledge.class));
+ cards.add(new SetCardInfo("Scattershot", 102, Rarity.COMMON, mage.cards.s.Scattershot.class));
+ cards.add(new SetCardInfo("Scornful Egotist", 50, Rarity.COMMON, mage.cards.s.ScornfulEgotist.class));
+ cards.add(new SetCardInfo("Shoreline Ranger", 51, Rarity.COMMON, mage.cards.s.ShorelineRanger.class));
+ cards.add(new SetCardInfo("Siege-Gang Commander", 103, Rarity.RARE, mage.cards.s.SiegeGangCommander.class));
+ cards.add(new SetCardInfo("Silver Knight", 23, Rarity.UNCOMMON, mage.cards.s.SilverKnight.class));
+ cards.add(new SetCardInfo("Skirk Volcanist", 104, Rarity.UNCOMMON, mage.cards.s.SkirkVolcanist.class));
+ cards.add(new SetCardInfo("Skulltap", 73, Rarity.COMMON, mage.cards.s.Skulltap.class));
+ cards.add(new SetCardInfo("Sliver Overlord", 139, Rarity.RARE, mage.cards.s.SliverOverlord.class));
+ cards.add(new SetCardInfo("Soul Collector", 74, Rarity.RARE, mage.cards.s.SoulCollector.class));
+ cards.add(new SetCardInfo("Spark Spray", 105, Rarity.COMMON, mage.cards.s.SparkSpray.class));
+ cards.add(new SetCardInfo("Sprouting Vines", 128, Rarity.COMMON, mage.cards.s.SproutingVines.class));
+ cards.add(new SetCardInfo("Stifle", 52, Rarity.RARE, mage.cards.s.Stifle.class));
+ cards.add(new SetCardInfo("Sulfuric Vortex", 106, Rarity.RARE, mage.cards.s.SulfuricVortex.class));
+ cards.add(new SetCardInfo("Temple of the False God", 143, Rarity.UNCOMMON, mage.cards.t.TempleOfTheFalseGod.class));
+ cards.add(new SetCardInfo("Temporal Fissure", 53, Rarity.COMMON, mage.cards.t.TemporalFissure.class));
+ cards.add(new SetCardInfo("Tendrils of Agony", 75, Rarity.UNCOMMON, mage.cards.t.TendrilsOfAgony.class));
+ cards.add(new SetCardInfo("Thundercloud Elemental", 54, Rarity.UNCOMMON, mage.cards.t.ThundercloudElemental.class));
+ cards.add(new SetCardInfo("Titanic Bulvox", 129, Rarity.COMMON, mage.cards.t.TitanicBulvox.class));
+ cards.add(new SetCardInfo("Torrent of Fire", 107, Rarity.COMMON, mage.cards.t.TorrentOfFire.class));
+ cards.add(new SetCardInfo("Trap Digger", 24, Rarity.RARE, mage.cards.t.TrapDigger.class));
+ cards.add(new SetCardInfo("Treetop Scout", 130, Rarity.COMMON, mage.cards.t.TreetopScout.class));
+ cards.add(new SetCardInfo("Twisted Abomination", 76, Rarity.COMMON, mage.cards.t.TwistedAbomination.class));
+ cards.add(new SetCardInfo("Unburden", 77, Rarity.COMMON, mage.cards.u.Unburden.class));
+ cards.add(new SetCardInfo("Uncontrolled Infestation", 108, Rarity.COMMON, mage.cards.u.UncontrolledInfestation.class));
+ cards.add(new SetCardInfo("Undead Warchief", 78, Rarity.UNCOMMON, mage.cards.u.UndeadWarchief.class));
+ cards.add(new SetCardInfo("Unspeakable Symbol", 79, Rarity.UNCOMMON, mage.cards.u.UnspeakableSymbol.class));
+ cards.add(new SetCardInfo("Upwelling", 131, Rarity.RARE, mage.cards.u.Upwelling.class));
+ cards.add(new SetCardInfo("Vengeful Dead", 80, Rarity.COMMON, mage.cards.v.VengefulDead.class));
+ cards.add(new SetCardInfo("Wing Shards", 25, Rarity.UNCOMMON, mage.cards.w.WingShards.class));
+ cards.add(new SetCardInfo("Wipe Clean", 26, Rarity.COMMON, mage.cards.w.WipeClean.class));
+ cards.add(new SetCardInfo("Wirewood Guardian", 132, Rarity.COMMON, mage.cards.w.WirewoodGuardian.class));
+ cards.add(new SetCardInfo("Wirewood Symbiote", 133, Rarity.UNCOMMON, mage.cards.w.WirewoodSymbiote.class));
+ cards.add(new SetCardInfo("Woodcloaker", 134, Rarity.COMMON, mage.cards.w.Woodcloaker.class));
+ cards.add(new SetCardInfo("Xantid Swarm", 135, Rarity.RARE, mage.cards.x.XantidSwarm.class));
+ cards.add(new SetCardInfo("Zealous Inquisitor", 27, Rarity.COMMON, mage.cards.z.ZealousInquisitor.class));
+ cards.add(new SetCardInfo("Zombie Cutthroat", 81, Rarity.COMMON, mage.cards.z.ZombieCutthroat.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/SeventhEdition.java b/Mage.Sets/src/mage/sets/SeventhEdition.java
index b20edf1c44c..6d1e55ab16e 100644
--- a/Mage.Sets/src/mage/sets/SeventhEdition.java
+++ b/Mage.Sets/src/mage/sets/SeventhEdition.java
@@ -37,7 +37,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class SeventhEdition extends ExpansionSet {
+public final class SeventhEdition extends ExpansionSet {
private static final SeventhEdition instance = new SeventhEdition();
diff --git a/Mage.Sets/src/mage/sets/Shadowmoor.java b/Mage.Sets/src/mage/sets/Shadowmoor.java
index b736b2c024b..f2122a4648b 100644
--- a/Mage.Sets/src/mage/sets/Shadowmoor.java
+++ b/Mage.Sets/src/mage/sets/Shadowmoor.java
@@ -36,7 +36,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class Shadowmoor extends ExpansionSet {
+public final class Shadowmoor extends ExpansionSet {
private static final Shadowmoor instance = new Shadowmoor();
diff --git a/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java b/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java
index fd811f4834d..51e5d50b2ca 100644
--- a/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java
+++ b/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java
@@ -43,7 +43,7 @@ import mage.util.RandomUtil;
*
* @author fireshoes
*/
-public class ShadowsOverInnistrad extends ExpansionSet {
+public final class ShadowsOverInnistrad extends ExpansionSet {
private static final ShadowsOverInnistrad instance = new ShadowsOverInnistrad();
diff --git a/Mage.Sets/src/mage/sets/ShardsOfAlara.java b/Mage.Sets/src/mage/sets/ShardsOfAlara.java
index a53e4700f3c..fa663403b67 100644
--- a/Mage.Sets/src/mage/sets/ShardsOfAlara.java
+++ b/Mage.Sets/src/mage/sets/ShardsOfAlara.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class ShardsOfAlara extends ExpansionSet {
+public final class ShardsOfAlara extends ExpansionSet {
private static final ShardsOfAlara instance = new ShardsOfAlara();
diff --git a/Mage.Sets/src/mage/sets/SorinVsTibalt.java b/Mage.Sets/src/mage/sets/SorinVsTibalt.java
index 598857fb9ab..fab04e90a07 100644
--- a/Mage.Sets/src/mage/sets/SorinVsTibalt.java
+++ b/Mage.Sets/src/mage/sets/SorinVsTibalt.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class SorinVsTibalt extends ExpansionSet {
+public final class SorinVsTibalt extends ExpansionSet {
private static final SorinVsTibalt instance = new SorinVsTibalt();
diff --git a/Mage.Sets/src/mage/sets/SpeedVsCunning.java b/Mage.Sets/src/mage/sets/SpeedVsCunning.java
index 84c4846b53b..a2706aaaa07 100644
--- a/Mage.Sets/src/mage/sets/SpeedVsCunning.java
+++ b/Mage.Sets/src/mage/sets/SpeedVsCunning.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class SpeedVsCunning extends ExpansionSet {
+public final class SpeedVsCunning extends ExpansionSet {
private static final SpeedVsCunning instance = new SpeedVsCunning();
diff --git a/Mage.Sets/src/mage/sets/StarWars.java b/Mage.Sets/src/mage/sets/StarWars.java
index 2cfa88c803d..e5ece5364e0 100644
--- a/Mage.Sets/src/mage/sets/StarWars.java
+++ b/Mage.Sets/src/mage/sets/StarWars.java
@@ -1,331 +1,331 @@
-/*
- * 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.CardGraphicInfo;
-import mage.cards.ExpansionSet;
-import mage.cards.FrameStyle;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author Styxo
- */
-public class StarWars extends ExpansionSet {
-
- private static final StarWars instance = new StarWars();
-
- public static StarWars getInstance() {
- return instance;
- }
-
- private StarWars() {
- super("Star Wars", "SWS", ExpansionSet.buildDate(2016, 12, 12), SetType.CUSTOM_SET);
- this.blockName = "Star Wars";
- this.hasBoosters = true;
- this.hasBasicLands = true;
- this.numBoosterLands = 1;
- this.numBoosterCommon = 10;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 8;
- cards.add(new SetCardInfo("A-Wing", 96, Rarity.UNCOMMON, mage.cards.a.AWing.class));
- cards.add(new SetCardInfo("AAT-1", 160, Rarity.UNCOMMON, mage.cards.a.AAT1.class));
- cards.add(new SetCardInfo("Acklay of the Arena", 161, Rarity.RARE, mage.cards.a.AcklayOfTheArena.class));
- cards.add(new SetCardInfo("Acquire Target", 65, Rarity.COMMON, mage.cards.a.AcquireTarget.class));
- cards.add(new SetCardInfo("Admiral Ackbar", 35, Rarity.RARE, mage.cards.a.AdmiralAckbar.class));
- cards.add(new SetCardInfo("Adroit Hateflayer", 162, Rarity.COMMON, mage.cards.a.AdroitHateflayer.class));
- cards.add(new SetCardInfo("Anakin Skywalker", 163, Rarity.MYTHIC, mage.cards.a.AnakinSkywalker.class));
- cards.add(new SetCardInfo("Ancient Holocron", 230, Rarity.UNCOMMON, mage.cards.a.AncientHolocron.class));
- cards.add(new SetCardInfo("Aqualish Bounty Hunter", 66, Rarity.COMMON, mage.cards.a.AqualishBountyHunter.class));
- cards.add(new SetCardInfo("Armed Protocol Droid", 36, Rarity.UNCOMMON, mage.cards.a.ArmedProtocolDroid.class));
- cards.add(new SetCardInfo("Arrest", 2, Rarity.COMMON, mage.cards.a.Arrest.class));
- cards.add(new SetCardInfo("Asajj Ventress", 164, Rarity.RARE, mage.cards.a.AsajjVentress.class));
- cards.add(new SetCardInfo("AT-ST", 128, Rarity.RARE, mage.cards.a.ATST.class));
- cards.add(new SetCardInfo("Aurra Sing, Bane of Jedi", 165, Rarity.MYTHIC, mage.cards.a.AurraSingBaneOfJedi.class));
- cards.add(new SetCardInfo("Bantha Herd", 3, Rarity.RARE, mage.cards.b.BanthaHerd.class));
- cards.add(new SetCardInfo("Bathe in Bacta", 129, Rarity.COMMON, mage.cards.b.BatheInBacta.class));
- cards.add(new SetCardInfo("Battle Tactics", 5, Rarity.UNCOMMON, mage.cards.b.BattleTactics.class));
- cards.add(new SetCardInfo("Bib Fortuna", 68, Rarity.RARE, mage.cards.b.BibFortuna.class));
- cards.add(new SetCardInfo("Black Market Dealer", 69, Rarity.UNCOMMON, mage.cards.b.BlackMarketDealer.class));
- cards.add(new SetCardInfo("Blind Worship", 166, Rarity.RARE, mage.cards.b.BlindWorship.class));
- cards.add(new SetCardInfo("Boba Fett", 167, Rarity.MYTHIC, mage.cards.b.BobaFett.class));
- cards.add(new SetCardInfo("Bossk", 131, Rarity.RARE, mage.cards.b.Bossk.class));
- cards.add(new SetCardInfo("Bounty Collector", 132, Rarity.UNCOMMON, mage.cards.b.BountyCollector.class));
- cards.add(new SetCardInfo("Bounty Sniper", 98, Rarity.UNCOMMON, mage.cards.b.BountySniper.class));
- cards.add(new SetCardInfo("Bounty Spotter", 70, Rarity.UNCOMMON, mage.cards.b.BountySpotter.class));
- cards.add(new SetCardInfo("Bull Rancor", 168, Rarity.RARE, mage.cards.b.BullRancor.class));
- cards.add(new SetCardInfo("C-3PO and R2D2", 169, Rarity.RARE, mage.cards.c.C3POAndR2D2.class));
- cards.add(new SetCardInfo("Cantina Band", 6, Rarity.COMMON, mage.cards.c.CantinaBand.class));
- cards.add(new SetCardInfo("Capture", 99, Rarity.COMMON, mage.cards.c.Capture.class));
- cards.add(new SetCardInfo("Carbonite Chamber", 170, Rarity.UNCOMMON, mage.cards.c.CarboniteChamber.class));
- cards.add(new SetCardInfo("Chewbacca", 171, Rarity.RARE, mage.cards.c.Chewbacca.class));
- cards.add(new SetCardInfo("Chief Chirpa", 172, Rarity.RARE, mage.cards.c.ChiefChirpa.class));
- cards.add(new SetCardInfo("Cloaking Device", 38, Rarity.COMMON, mage.cards.c.CloakingDevice.class));
- cards.add(new SetCardInfo("Commander Cody", 173, Rarity.RARE, mage.cards.c.CommanderCody.class));
- cards.add(new SetCardInfo("Condemn", 7, Rarity.UNCOMMON, mage.cards.c.Condemn.class));
- cards.add(new SetCardInfo("Corellian Corvette", 133, Rarity.UNCOMMON, mage.cards.c.CorellianCorvette.class));
- cards.add(new SetCardInfo("Crossfire", 100, Rarity.COMMON, mage.cards.c.Crossfire.class));
- cards.add(new SetCardInfo("Cruelty of the Sith", 174, Rarity.UNCOMMON, mage.cards.c.CrueltyOfTheSith.class));
- cards.add(new SetCardInfo("Cunning Abduction", 175, Rarity.RARE, mage.cards.c.CunningAbduction.class));
- cards.add(new SetCardInfo("Dagobah Maw Slug", 176, Rarity.COMMON, mage.cards.d.DagobahMawSlug.class));
- cards.add(new SetCardInfo("Dark Apprenticeship", 101, Rarity.UNCOMMON, mage.cards.d.DarkApprenticeship.class));
- cards.add(new SetCardInfo("Dark Decision", 177, Rarity.COMMON, mage.cards.d.DarkDecision.class));
- cards.add(new SetCardInfo("Dark Trooper", 231, Rarity.UNCOMMON, mage.cards.d.DarkTrooper.class));
- cards.add(new SetCardInfo("Darth Maul", 178, Rarity.RARE, mage.cards.d.DarthMaul.class));
- cards.add(new SetCardInfo("Darth Sidious, Sith Lord", 179, Rarity.MYTHIC, mage.cards.d.DarthSidiousSithLord.class));
- cards.add(new SetCardInfo("Darth Tyranus", 180, Rarity.MYTHIC, mage.cards.d.DarthTyranus.class));
- cards.add(new SetCardInfo("Darth Vader", 140, Rarity.MYTHIC, mage.cards.d.DarthVader.class));
- cards.add(new SetCardInfo("Death Trooper", 71, Rarity.UNCOMMON, mage.cards.d.DeathTrooper.class));
- cards.add(new SetCardInfo("Deploy The Troops", 8, Rarity.UNCOMMON, mage.cards.d.DeployTheTroops.class));
- cards.add(new SetCardInfo("Doom Blade", 72, Rarity.UNCOMMON, mage.cards.d.DoomBlade.class));
- cards.add(new SetCardInfo("Droid Commando", 73, Rarity.COMMON, mage.cards.d.DroidCommando.class));
- cards.add(new SetCardInfo("Droid Factory", 239, Rarity.COMMON, mage.cards.d.DroidFactory.class));
- cards.add(new SetCardInfo("Droid Foundry", 240, Rarity.UNCOMMON, mage.cards.d.DroidFoundry.class));
- cards.add(new SetCardInfo("Droideka", 9, Rarity.UNCOMMON, mage.cards.d.Droideka.class));
- cards.add(new SetCardInfo("Drone Holocron", 232, Rarity.COMMON, mage.cards.d.DroneHolocron.class));
- cards.add(new SetCardInfo("Echo Base Commando", 181, Rarity.RARE, mage.cards.e.EchoBaseCommando.class));
- cards.add(new SetCardInfo("EMP Blast", 10, Rarity.UNCOMMON, mage.cards.e.EMPBlast.class));
- cards.add(new SetCardInfo("Escape Pod", 11, Rarity.COMMON, mage.cards.e.EscapePod.class));
- cards.add(new SetCardInfo("Ewok Ambush", 134, Rarity.COMMON, mage.cards.e.EwokAmbush.class));
- cards.add(new SetCardInfo("Ewok Firedancers", 135, Rarity.COMMON, mage.cards.e.EwokFiredancers.class));
- cards.add(new SetCardInfo("Ewok Village", 241, Rarity.UNCOMMON, mage.cards.e.EwokVillage.class));
- cards.add(new SetCardInfo("Exogorth", 136, Rarity.RARE, mage.cards.e.Exogorth.class));
- cards.add(new SetCardInfo("Ferocity of the Underworld", 182, Rarity.UNCOMMON, mage.cards.f.FerocityOfTheUnderworld.class));
- cards.add(new SetCardInfo("Flames of Remembrance", 102, Rarity.RARE, mage.cards.f.FlamesOfRemembrance.class));
- cards.add(new SetCardInfo("Force Choke", 183, Rarity.COMMON, mage.cards.f.ForceChoke.class));
- cards.add(new SetCardInfo("Force Denial", 39, Rarity.COMMON, mage.cards.f.ForceDenial.class));
- cards.add(new SetCardInfo("Force Drain", 74, Rarity.COMMON, mage.cards.f.ForceDrain.class));
- cards.add(new SetCardInfo("Force Healing", 12, Rarity.COMMON, mage.cards.f.ForceHealing.class));
- cards.add(new SetCardInfo("Force Lightning", 103, Rarity.RARE, mage.cards.f.ForceLightning.class));
- cards.add(new SetCardInfo("Force Mastery", 184, Rarity.RARE, mage.cards.f.ForceMastery.class));
- cards.add(new SetCardInfo("Force Pull", 137, Rarity.COMMON, mage.cards.f.ForcePull.class));
- cards.add(new SetCardInfo("Force Push", 40, Rarity.UNCOMMON, mage.cards.f.ForcePush.class));
- cards.add(new SetCardInfo("Force Reflex", 13, Rarity.COMMON, mage.cards.f.ForceReflex.class));
- cards.add(new SetCardInfo("Force Scream", 104, Rarity.UNCOMMON, mage.cards.f.ForceScream.class));
- cards.add(new SetCardInfo("Force Spark", 105, Rarity.COMMON, mage.cards.f.ForceSpark.class));
- cards.add(new SetCardInfo("Forest", "268a", Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Forest", "268b", Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Forest", "268c", Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Forest", "268d", Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Fulfill Contract", 224, Rarity.COMMON, mage.cards.f.FulfillContract.class));
- cards.add(new SetCardInfo("Gamorrean Prison Guard", 106, Rarity.UNCOMMON, mage.cards.g.GamorreanPrisonGuard.class));
- cards.add(new SetCardInfo("General Grievous", 185, Rarity.MYTHIC, mage.cards.g.GeneralGrievous.class));
- cards.add(new SetCardInfo("Gifted Initiate", 14, Rarity.COMMON, mage.cards.g.GiftedInitiate.class));
- cards.add(new SetCardInfo("Grand Moff Tarkin", 75, Rarity.RARE, mage.cards.g.GrandMoffTarkin.class));
- cards.add(new SetCardInfo("Greater Krayt Dragon", 186, Rarity.MYTHIC, mage.cards.g.GreaterKraytDragon.class));
- cards.add(new SetCardInfo("Greedo", 187, Rarity.RARE, mage.cards.g.Greedo.class));
- cards.add(new SetCardInfo("Gundark", 107, Rarity.UNCOMMON, mage.cards.g.Gundark.class));
- cards.add(new SetCardInfo("Gungan Captain", 41, Rarity.COMMON, mage.cards.g.GunganCaptain.class));
- cards.add(new SetCardInfo("Han Solo", 108, Rarity.RARE, mage.cards.h.HanSolo.class));
- cards.add(new SetCardInfo("Hazard Trooper", 76, Rarity.UNCOMMON, mage.cards.h.HazardTrooper.class));
- cards.add(new SetCardInfo("Head Hunting", 77, Rarity.COMMON, mage.cards.h.HeadHunting.class));
- cards.add(new SetCardInfo("Heavy Trooper", 78, Rarity.COMMON, mage.cards.h.HeavyTrooper.class));
- cards.add(new SetCardInfo("Hot Pursuit", 188, Rarity.RARE, mage.cards.h.HotPursuit.class));
- cards.add(new SetCardInfo("Hungry Dragonsnake", 138, Rarity.COMMON, mage.cards.h.HungryDragonsnake.class));
- cards.add(new SetCardInfo("Hunt to Extinction", 189, Rarity.RARE, mage.cards.h.HuntToExtinction.class));
- cards.add(new SetCardInfo("Hutt Crime Lord", 139, Rarity.UNCOMMON, mage.cards.h.HuttCrimeLord.class));
- cards.add(new SetCardInfo("Hutt Palace", 242, Rarity.UNCOMMON, mage.cards.h.HuttPalace.class));
- cards.add(new SetCardInfo("IG-88B", 79, Rarity.RARE, mage.cards.i.IG88B.class));
- cards.add(new SetCardInfo("Images of the Past", 190, Rarity.COMMON, mage.cards.i.ImagesOfThePast.class));
- cards.add(new SetCardInfo("Imperial Gunner", 109, Rarity.COMMON, mage.cards.i.ImperialGunner.class));
- cards.add(new SetCardInfo("Impulsive Wager", 110, Rarity.COMMON, mage.cards.i.ImpulsiveWager.class));
- cards.add(new SetCardInfo("Insatiable Rakghoul", 80, Rarity.COMMON, mage.cards.i.InsatiableRakghoul.class));
- cards.add(new SetCardInfo("Interrogation", 81, Rarity.COMMON, mage.cards.i.Interrogation.class));
- cards.add(new SetCardInfo("Ion Cannon", 15, Rarity.COMMON, mage.cards.i.IonCannon.class));
- cards.add(new SetCardInfo("Iron Fist of the Empire", 191, Rarity.RARE, mage.cards.i.IronFistOfTheEmpire.class));
- cards.add(new SetCardInfo("Island", "256a", Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Island", "256b", Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Island", "256c", Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Island", "256d", Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Ithorian Initiate", 140, Rarity.COMMON, mage.cards.i.IthorianInitiate.class));
- cards.add(new SetCardInfo("Jabba the Hutt", 192, Rarity.RARE, mage.cards.j.JabbaTheHutt.class));
- cards.add(new SetCardInfo("Jango Fett", 111, Rarity.RARE, mage.cards.j.JangoFett.class));
- cards.add(new SetCardInfo("Jar Jar Binks", 42, Rarity.RARE, mage.cards.j.JarJarBinks.class));
- cards.add(new SetCardInfo("Jar'Kai Battle Stance", 112, Rarity.COMMON, mage.cards.j.JarKaiBattleStance.class));
- cards.add(new SetCardInfo("Jedi Battle Healer", 16, Rarity.UNCOMMON, mage.cards.j.JediBattleHealer.class));
- cards.add(new SetCardInfo("Jedi Battle Mage", 43, Rarity.UNCOMMON, mage.cards.j.JediBattleMage.class));
- cards.add(new SetCardInfo("Jedi Battle Sage", 141, Rarity.UNCOMMON, mage.cards.j.JediBattleSage.class));
- cards.add(new SetCardInfo("Jedi Enclave", 243, Rarity.COMMON, mage.cards.j.JediEnclave.class));
- cards.add(new SetCardInfo("Jedi Holocron", 233, Rarity.COMMON, mage.cards.j.JediHolocron.class));
- cards.add(new SetCardInfo("Jedi Inquirer", 17, Rarity.COMMON, mage.cards.j.JediInquirer.class));
- cards.add(new SetCardInfo("Jedi Instructor", 18, Rarity.COMMON, mage.cards.j.JediInstructor.class));
- cards.add(new SetCardInfo("Jedi Knight", 193, Rarity.UNCOMMON, mage.cards.j.JediKnight.class));
- cards.add(new SetCardInfo("Jedi Mind Trick", 44, Rarity.RARE, mage.cards.j.JediMindTrick.class));
- cards.add(new SetCardInfo("Jedi Sentinel", 194, Rarity.COMMON, mage.cards.j.JediSentinel.class));
- cards.add(new SetCardInfo("Jedi Starfighter", 19, Rarity.UNCOMMON, mage.cards.j.JediStarfighter.class));
- cards.add(new SetCardInfo("Jedi Temple", 244, Rarity.UNCOMMON, mage.cards.j.JediTemple.class));
- cards.add(new SetCardInfo("Jedi Training", 45, Rarity.UNCOMMON, mage.cards.j.JediTraining.class));
- cards.add(new SetCardInfo("Jump Trooper", 46, Rarity.UNCOMMON, mage.cards.j.JumpTrooper.class));
- cards.add(new SetCardInfo("Jungle Village", 245, Rarity.UNCOMMON, mage.cards.j.JungleVillage.class));
- cards.add(new SetCardInfo("Kamino Cloning Facility", 246, Rarity.RARE, mage.cards.k.KaminoCloningFacility.class));
- cards.add(new SetCardInfo("Ki-Adi-Mundi", 142, Rarity.RARE, mage.cards.k.KiAdiMundi.class));
- cards.add(new SetCardInfo("LAAT Gunship", 20, Rarity.UNCOMMON, mage.cards.l.LAATGunship.class));
- cards.add(new SetCardInfo("Lando Calrissian", 21, Rarity.RARE, mage.cards.l.LandoCalrissian.class));
- cards.add(new SetCardInfo("Legacy of the Beloved", 143, Rarity.RARE, mage.cards.l.LegacyOfTheBeloved.class));
- cards.add(new SetCardInfo("Lightning Bolt", 113, Rarity.UNCOMMON, mage.cards.l.LightningBolt.class));
- cards.add(new SetCardInfo("Lightsaber", 234, Rarity.COMMON, mage.cards.l.Lightsaber.class));
- cards.add(new SetCardInfo("Loyal Tauntaun", 22, Rarity.COMMON, mage.cards.l.LoyalTauntaun.class));
- cards.add(new SetCardInfo("Luke Skywalker", 195, Rarity.MYTHIC, mage.cards.l.LukeSkywalker.class));
- cards.add(new SetCardInfo("Mace Windu", 47, Rarity.RARE, mage.cards.m.MaceWindu.class));
- cards.add(new SetCardInfo("Maintenance Droid", 196, Rarity.COMMON, mage.cards.m.MaintenanceDroid.class));
- cards.add(new SetCardInfo("Maintenance Hangar", 23, Rarity.RARE, mage.cards.m.MaintenanceHangar.class));
- cards.add(new SetCardInfo("Mantellian Savrip", 144, Rarity.UNCOMMON, mage.cards.m.MantellianSavrip.class));
- cards.add(new SetCardInfo("March of the Droids", 197, Rarity.RARE, mage.cards.m.MarchOfTheDroids.class));
- cards.add(new SetCardInfo("Massiff Swarm", 145, Rarity.COMMON, mage.cards.m.MassiffSwarm.class));
- cards.add(new SetCardInfo("Might of the Wild", 198, Rarity.UNCOMMON, mage.cards.m.MightOfTheWild.class));
- cards.add(new SetCardInfo("Millennium Falcon", 146, Rarity.RARE, mage.cards.m.MillenniumFalcon.class));
- cards.add(new SetCardInfo("Miraculous Recovery", 24, Rarity.UNCOMMON, mage.cards.m.MiraculousRecovery.class));
- cards.add(new SetCardInfo("Moisture Farm", 247, Rarity.UNCOMMON, mage.cards.m.MoistureFarm.class));
- cards.add(new SetCardInfo("Mon Calamari Cruiser", 48, Rarity.UNCOMMON, mage.cards.m.MonCalamariCruiser.class));
- cards.add(new SetCardInfo("Mon Calamari Initiate", 49, Rarity.COMMON, mage.cards.m.MonCalamariInitiate.class));
- cards.add(new SetCardInfo("Mountain", "264a", Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Mountain", "264b", Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Mountain", "264c", Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Mountain", "264d", Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("N-1 Starfighter", 225, Rarity.COMMON, mage.cards.n.N1Starfighter.class));
- cards.add(new SetCardInfo("Nebulon-B Frigate", 25, Rarity.COMMON, mage.cards.n.NebulonBFrigate.class));
- cards.add(new SetCardInfo("Neophyte Hateflayer", 82, Rarity.COMMON, mage.cards.n.NeophyteHateflayer.class));
- cards.add(new SetCardInfo("Nerf Herder", 147, Rarity.UNCOMMON, mage.cards.n.NerfHerder.class));
- cards.add(new SetCardInfo("Nexu Stalker", 148, Rarity.UNCOMMON, mage.cards.n.NexuStalker.class));
- cards.add(new SetCardInfo("Nightspider", 149, Rarity.COMMON, mage.cards.n.Nightspider.class));
- cards.add(new SetCardInfo("No Contest", 150, Rarity.COMMON, mage.cards.n.NoContest.class));
- cards.add(new SetCardInfo("Novice Bounty Hunter", 114, Rarity.COMMON, mage.cards.n.NoviceBountyHunter.class));
- cards.add(new SetCardInfo("Nute Gunray", 199, Rarity.RARE, mage.cards.n.NuteGunray.class));
- cards.add(new SetCardInfo("Obi-Wan Kenobi", 200, Rarity.MYTHIC, mage.cards.o.ObiWanKenobi.class));
- cards.add(new SetCardInfo("Open Season", 83, Rarity.UNCOMMON, mage.cards.o.OpenSeason.class));
- cards.add(new SetCardInfo("Orbital Bombardment", 26, Rarity.RARE, mage.cards.o.OrbitalBombardment.class));
- cards.add(new SetCardInfo("Order 66", 84, Rarity.RARE, mage.cards.o.Order66.class));
- cards.add(new SetCardInfo("Ortolan Keyboardist", 50, Rarity.COMMON, mage.cards.o.OrtolanKeyboardist.class));
- cards.add(new SetCardInfo("Outer Rim Slaver", 201, Rarity.COMMON, mage.cards.o.OuterRimSlaver.class));
- cards.add(new SetCardInfo("Outlaw Holocron", 235, Rarity.COMMON, mage.cards.o.OutlawHolocron.class));
- cards.add(new SetCardInfo("Personal Energy Shield", 51, Rarity.COMMON, mage.cards.p.PersonalEnergyShield.class));
- cards.add(new SetCardInfo("Plains", "252a", Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Plains", "252b", Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Plains", "252c", Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Plains", "252d", Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Plo Koon", 27, Rarity.RARE, mage.cards.p.PloKoon.class));
- cards.add(new SetCardInfo("Precipice of Mortis", 202, Rarity.RARE, mage.cards.p.PrecipiceOfMortis.class));
- cards.add(new SetCardInfo("Predator's Strike", 151, Rarity.COMMON, mage.cards.p.PredatorsStrike.class));
- cards.add(new SetCardInfo("Preordain", 34, Rarity.UNCOMMON, mage.cards.p.Preordain.class));
- cards.add(new SetCardInfo("Primal Instinct", 203, Rarity.COMMON, mage.cards.p.PrimalInstinct.class));
- cards.add(new SetCardInfo("Princess Leia", 204, Rarity.RARE, mage.cards.p.PrincessLeia.class));
- cards.add(new SetCardInfo("Probe Droid", 52, Rarity.COMMON, mage.cards.p.ProbeDroid.class));
- cards.add(new SetCardInfo("Qui-Gon Jinn", 205, Rarity.RARE, mage.cards.q.QuiGonJinn.class));
- cards.add(new SetCardInfo("Raging Reek", 115, Rarity.COMMON, mage.cards.r.RagingReek.class));
- cards.add(new SetCardInfo("Rallying Fire", 116, Rarity.COMMON, mage.cards.r.RallyingFire.class));
- cards.add(new SetCardInfo("Ravenous Wampa", 226, Rarity.UNCOMMON, mage.cards.r.RavenousWampa.class));
- cards.add(new SetCardInfo("Regression", 152, Rarity.UNCOMMON, mage.cards.r.Regression.class));
- cards.add(new SetCardInfo("Republic Frigate", 53, Rarity.COMMON, mage.cards.r.RepublicFrigate.class));
- cards.add(new SetCardInfo("Repurpose", 85, Rarity.COMMON, mage.cards.r.Repurpose.class));
- cards.add(new SetCardInfo("Revenge", 117, Rarity.COMMON, mage.cards.r.Revenge.class));
- cards.add(new SetCardInfo("Riding Ronto", 28, Rarity.UNCOMMON, mage.cards.r.RidingRonto.class));
- cards.add(new SetCardInfo("Rocket Trooper", 118, Rarity.RARE, mage.cards.r.RocketTrooper.class));
- cards.add(new SetCardInfo("Rogue's Passage", 248, Rarity.UNCOMMON, mage.cards.r.RoguesPassage.class));
- cards.add(new SetCardInfo("Rule of two", 86, Rarity.UNCOMMON, mage.cards.r.RuleOfTwo.class));
- cards.add(new SetCardInfo("Rumination", 54, Rarity.COMMON, mage.cards.r.Rumination.class));
- cards.add(new SetCardInfo("Rumor Monger", 206, Rarity.UNCOMMON, mage.cards.r.RumorMonger.class));
- cards.add(new SetCardInfo("Sabacc Game", 55, Rarity.UNCOMMON, mage.cards.s.SabaccGame.class));
- cards.add(new SetCardInfo("Salvage Squad", 207, Rarity.COMMON, mage.cards.s.SalvageSquad.class));
- cards.add(new SetCardInfo("Sand Trooper", 29, Rarity.COMMON, mage.cards.s.SandTrooper.class));
- cards.add(new SetCardInfo("Sarlacc Pit", 208, Rarity.RARE, mage.cards.s.SarlaccPit.class));
- cards.add(new SetCardInfo("Scout the Perimeter", 153, Rarity.COMMON, mage.cards.s.ScoutThePerimeter.class));
- cards.add(new SetCardInfo("Scout Trooper", 154, Rarity.COMMON, mage.cards.s.ScoutTrooper.class));
- cards.add(new SetCardInfo("Security Droid", 30, Rarity.COMMON, mage.cards.s.SecurityDroid.class));
- cards.add(new SetCardInfo("Senator Bail Organa", 209, Rarity.UNCOMMON, mage.cards.s.SenatorBailOrgana.class));
- cards.add(new SetCardInfo("Senator Lott Dod", 210, Rarity.UNCOMMON, mage.cards.s.SenatorLottDod.class));
- cards.add(new SetCardInfo("Senator Onaconda Farr", 211, Rarity.UNCOMMON, mage.cards.s.SenatorOnacondaFarr.class));
- cards.add(new SetCardInfo("Senator Padmé Amidala", 212, Rarity.UNCOMMON, mage.cards.s.SenatorPadmeAmidala.class));
- cards.add(new SetCardInfo("Senator Passel Argente", 213, Rarity.UNCOMMON, mage.cards.s.SenatorPasselArgente.class));
- cards.add(new SetCardInfo("Shaak Herd", 155, Rarity.COMMON, mage.cards.s.ShaakHerd.class));
- cards.add(new SetCardInfo("Shadow Trooper", 56, Rarity.COMMON, mage.cards.s.ShadowTrooper.class));
- cards.add(new SetCardInfo("Shock Trooper", 119, Rarity.UNCOMMON, mage.cards.s.ShockTrooper.class));
- cards.add(new SetCardInfo("Show of Dominance", 156, Rarity.UNCOMMON, mage.cards.s.ShowOfDominance.class));
- cards.add(new SetCardInfo("Sith Assassin", 87, Rarity.UNCOMMON, mage.cards.s.SithAssassin.class));
- cards.add(new SetCardInfo("Sith Citadel", 249, Rarity.UNCOMMON, mage.cards.s.SithCitadel.class));
- cards.add(new SetCardInfo("Sith Evoker", 88, Rarity.COMMON, mage.cards.s.SithEvoker.class));
- cards.add(new SetCardInfo("Sith Holocron", 236, Rarity.COMMON, mage.cards.s.SithHolocron.class));
- cards.add(new SetCardInfo("Sith Inquisitor", 89, Rarity.COMMON, mage.cards.s.SithInquisitor.class));
- cards.add(new SetCardInfo("Sith Lord", 90, Rarity.RARE, mage.cards.s.SithLord.class));
- cards.add(new SetCardInfo("Sith Magic", 214, Rarity.RARE, mage.cards.s.SithMagic.class));
- cards.add(new SetCardInfo("Sith Manipulator", 57, Rarity.UNCOMMON, mage.cards.s.SithManipulator.class));
- cards.add(new SetCardInfo("Sith Marauder", 120, Rarity.UNCOMMON, mage.cards.s.SithMarauder.class));
- cards.add(new SetCardInfo("Sith Mindseer", 215, Rarity.UNCOMMON, mage.cards.s.SithMindseer.class));
- cards.add(new SetCardInfo("Sith Ravager", 121, Rarity.COMMON, mage.cards.s.SithRavager.class));
- cards.add(new SetCardInfo("Sith Ruins", 250, Rarity.COMMON, mage.cards.s.SithRuins.class));
- cards.add(new SetCardInfo("Sith Sorcerer", 58, Rarity.COMMON, mage.cards.s.SithSorcerer.class));
- cards.add(new SetCardInfo("Sith Thoughtseeker", 91, Rarity.COMMON, mage.cards.s.SithThoughtseeker.class));
- cards.add(new SetCardInfo("Slave I", 216, Rarity.RARE, mage.cards.s.SlaveI.class));
- cards.add(new SetCardInfo("Smash to Smithereens", 122, Rarity.UNCOMMON, mage.cards.s.SmashToSmithereens.class));
- cards.add(new SetCardInfo("Snow Trooper", 31, Rarity.UNCOMMON, mage.cards.s.SnowTrooper.class));
- cards.add(new SetCardInfo("Speeder Trooper", 123, Rarity.COMMON, mage.cards.s.SpeederTrooper.class));
- cards.add(new SetCardInfo("Star Destroyer", 217, Rarity.RARE, mage.cards.s.StarDestroyer.class));
- cards.add(new SetCardInfo("Strike Team Commando", 227, Rarity.COMMON, mage.cards.s.StrikeTeamCommando.class));
- cards.add(new SetCardInfo("Super Battle Droid", 59, Rarity.COMMON, mage.cards.s.SuperBattleDroid.class));
- cards.add(new SetCardInfo("Surprise Maneuver", 60, Rarity.COMMON, mage.cards.s.SurpriseManeuver.class));
- cards.add(new SetCardInfo("Swamp", "260a", Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Swamp", "260b", Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Swamp", "260c", Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Swamp", "260d", Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
- cards.add(new SetCardInfo("Swarm the Skies", 92, Rarity.COMMON, mage.cards.s.SwarmTheSkies.class));
- cards.add(new SetCardInfo("Syndicate Enforcer", 124, Rarity.COMMON, mage.cards.s.SyndicateEnforcerSWS.class));
- cards.add(new SetCardInfo("Tank Droid", 218, Rarity.RARE, mage.cards.t.TankDroid.class));
- cards.add(new SetCardInfo("Terentatek Cub", 125, Rarity.COMMON, mage.cards.t.TerentatekCub.class));
- cards.add(new SetCardInfo("The Battle of Endor", 130, Rarity.MYTHIC, mage.cards.t.TheBattleOfEndor.class));
- cards.add(new SetCardInfo("The Battle of Geonosis", 97, Rarity.MYTHIC, mage.cards.t.TheBattleOfGeonosis.class));
- cards.add(new SetCardInfo("The Battle of Hoth", 4, Rarity.MYTHIC, mage.cards.t.TheBattleOfHoth.class));
- cards.add(new SetCardInfo("The Battle of Naboo", 37, Rarity.MYTHIC, mage.cards.t.TheBattleOfNaboo.class));
- cards.add(new SetCardInfo("The Battle of Yavin", 67, Rarity.MYTHIC, mage.cards.t.TheBattleOfYavin.class));
- cards.add(new SetCardInfo("The Death Star", 1, Rarity.MYTHIC, mage.cards.t.TheDeathStar.class));
- cards.add(new SetCardInfo("TIE Bomber", 93, Rarity.UNCOMMON, mage.cards.t.TIEBomber.class));
- cards.add(new SetCardInfo("TIE Interceptor", 94, Rarity.COMMON, mage.cards.t.TIEInterceptor.class));
- cards.add(new SetCardInfo("Trade Federation Battleship", 219, Rarity.RARE, mage.cards.t.TradeFederationBattleship.class));
- cards.add(new SetCardInfo("Tri-Fighter", 228, Rarity.COMMON, mage.cards.t.TriFighter.class));
- cards.add(new SetCardInfo("Trooper Armor", 237, Rarity.UNCOMMON, mage.cards.t.TrooperArmor.class));
- cards.add(new SetCardInfo("Trooper Commando", 157, Rarity.UNCOMMON, mage.cards.t.TrooperCommando.class));
- cards.add(new SetCardInfo("Twi'lek Seductress", 158, Rarity.COMMON, mage.cards.t.TwilekSeductress.class));
- cards.add(new SetCardInfo("Ugnaught Scrap Worker", 61, Rarity.COMMON, mage.cards.u.UgnaughtScrapWorker.class));
- cards.add(new SetCardInfo("Underworld Slums", 251, Rarity.COMMON, mage.cards.u.UnderworldSlums.class));
- cards.add(new SetCardInfo("Unity of the Droids", 220, Rarity.UNCOMMON, mage.cards.u.UnityOfTheDroids.class));
- cards.add(new SetCardInfo("Unruly Sureshot", 95, Rarity.UNCOMMON, mage.cards.u.UnrulySureshot.class));
- cards.add(new SetCardInfo("V-Wing", 126, Rarity.COMMON, mage.cards.v.VWing.class));
- cards.add(new SetCardInfo("Vapor Snag", 62, Rarity.COMMON, mage.cards.v.VaporSnag.class));
- cards.add(new SetCardInfo("Weequay Beastmaster", 127, Rarity.UNCOMMON, mage.cards.w.WeequayBeastmaster.class));
- cards.add(new SetCardInfo("Wild Holocron", 238, Rarity.COMMON, mage.cards.w.WildHolocron.class));
- cards.add(new SetCardInfo("Wisdom of the Jedi", 221, Rarity.UNCOMMON, mage.cards.w.WisdomOfTheJedi.class));
- cards.add(new SetCardInfo("Womp Rat", 32, Rarity.COMMON, mage.cards.w.WompRat.class));
- cards.add(new SetCardInfo("Wookiee Bounty Hunter", 159, Rarity.COMMON, mage.cards.w.WookieeBountyHunter.class));
- cards.add(new SetCardInfo("Wookiee Mystic", 222, Rarity.UNCOMMON, mage.cards.w.WookieeMystic.class));
- cards.add(new SetCardInfo("Wookiee Raidleader", 229, Rarity.COMMON, mage.cards.w.WookieeRaidleader.class));
- cards.add(new SetCardInfo("X-Wing", 33, Rarity.COMMON, mage.cards.x.XWing.class));
- cards.add(new SetCardInfo("Y-Wing", 63, Rarity.UNCOMMON, mage.cards.y.YWing.class));
- cards.add(new SetCardInfo("Yoda, Jedi Master", 223, Rarity.MYTHIC, mage.cards.y.YodaJediMaster.class));
- cards.add(new SetCardInfo("Zam Wesell", 64, Rarity.RARE, mage.cards.z.ZamWesell.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.CardGraphicInfo;
+import mage.cards.ExpansionSet;
+import mage.cards.FrameStyle;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author Styxo
+ */
+public final class StarWars extends ExpansionSet {
+
+ private static final StarWars instance = new StarWars();
+
+ public static StarWars getInstance() {
+ return instance;
+ }
+
+ private StarWars() {
+ super("Star Wars", "SWS", ExpansionSet.buildDate(2016, 12, 12), SetType.CUSTOM_SET);
+ this.blockName = "Star Wars";
+ this.hasBoosters = true;
+ this.hasBasicLands = true;
+ this.numBoosterLands = 1;
+ this.numBoosterCommon = 10;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 8;
+ cards.add(new SetCardInfo("A-Wing", 96, Rarity.UNCOMMON, mage.cards.a.AWing.class));
+ cards.add(new SetCardInfo("AAT-1", 160, Rarity.UNCOMMON, mage.cards.a.AAT1.class));
+ cards.add(new SetCardInfo("Acklay of the Arena", 161, Rarity.RARE, mage.cards.a.AcklayOfTheArena.class));
+ cards.add(new SetCardInfo("Acquire Target", 65, Rarity.COMMON, mage.cards.a.AcquireTarget.class));
+ cards.add(new SetCardInfo("Admiral Ackbar", 35, Rarity.RARE, mage.cards.a.AdmiralAckbar.class));
+ cards.add(new SetCardInfo("Adroit Hateflayer", 162, Rarity.COMMON, mage.cards.a.AdroitHateflayer.class));
+ cards.add(new SetCardInfo("Anakin Skywalker", 163, Rarity.MYTHIC, mage.cards.a.AnakinSkywalker.class));
+ cards.add(new SetCardInfo("Ancient Holocron", 230, Rarity.UNCOMMON, mage.cards.a.AncientHolocron.class));
+ cards.add(new SetCardInfo("Aqualish Bounty Hunter", 66, Rarity.COMMON, mage.cards.a.AqualishBountyHunter.class));
+ cards.add(new SetCardInfo("Armed Protocol Droid", 36, Rarity.UNCOMMON, mage.cards.a.ArmedProtocolDroid.class));
+ cards.add(new SetCardInfo("Arrest", 2, Rarity.COMMON, mage.cards.a.Arrest.class));
+ cards.add(new SetCardInfo("Asajj Ventress", 164, Rarity.RARE, mage.cards.a.AsajjVentress.class));
+ cards.add(new SetCardInfo("AT-ST", 128, Rarity.RARE, mage.cards.a.ATST.class));
+ cards.add(new SetCardInfo("Aurra Sing, Bane of Jedi", 165, Rarity.MYTHIC, mage.cards.a.AurraSingBaneOfJedi.class));
+ cards.add(new SetCardInfo("Bantha Herd", 3, Rarity.RARE, mage.cards.b.BanthaHerd.class));
+ cards.add(new SetCardInfo("Bathe in Bacta", 129, Rarity.COMMON, mage.cards.b.BatheInBacta.class));
+ cards.add(new SetCardInfo("Battle Tactics", 5, Rarity.UNCOMMON, mage.cards.b.BattleTactics.class));
+ cards.add(new SetCardInfo("Bib Fortuna", 68, Rarity.RARE, mage.cards.b.BibFortuna.class));
+ cards.add(new SetCardInfo("Black Market Dealer", 69, Rarity.UNCOMMON, mage.cards.b.BlackMarketDealer.class));
+ cards.add(new SetCardInfo("Blind Worship", 166, Rarity.RARE, mage.cards.b.BlindWorship.class));
+ cards.add(new SetCardInfo("Boba Fett", 167, Rarity.MYTHIC, mage.cards.b.BobaFett.class));
+ cards.add(new SetCardInfo("Bossk", 131, Rarity.RARE, mage.cards.b.Bossk.class));
+ cards.add(new SetCardInfo("Bounty Collector", 132, Rarity.UNCOMMON, mage.cards.b.BountyCollector.class));
+ cards.add(new SetCardInfo("Bounty Sniper", 98, Rarity.UNCOMMON, mage.cards.b.BountySniper.class));
+ cards.add(new SetCardInfo("Bounty Spotter", 70, Rarity.UNCOMMON, mage.cards.b.BountySpotter.class));
+ cards.add(new SetCardInfo("Bull Rancor", 168, Rarity.RARE, mage.cards.b.BullRancor.class));
+ cards.add(new SetCardInfo("C-3PO and R2D2", 169, Rarity.RARE, mage.cards.c.C3POAndR2D2.class));
+ cards.add(new SetCardInfo("Cantina Band", 6, Rarity.COMMON, mage.cards.c.CantinaBand.class));
+ cards.add(new SetCardInfo("Capture", 99, Rarity.COMMON, mage.cards.c.Capture.class));
+ cards.add(new SetCardInfo("Carbonite Chamber", 170, Rarity.UNCOMMON, mage.cards.c.CarboniteChamber.class));
+ cards.add(new SetCardInfo("Chewbacca", 171, Rarity.RARE, mage.cards.c.Chewbacca.class));
+ cards.add(new SetCardInfo("Chief Chirpa", 172, Rarity.RARE, mage.cards.c.ChiefChirpa.class));
+ cards.add(new SetCardInfo("Cloaking Device", 38, Rarity.COMMON, mage.cards.c.CloakingDevice.class));
+ cards.add(new SetCardInfo("Commander Cody", 173, Rarity.RARE, mage.cards.c.CommanderCody.class));
+ cards.add(new SetCardInfo("Condemn", 7, Rarity.UNCOMMON, mage.cards.c.Condemn.class));
+ cards.add(new SetCardInfo("Corellian Corvette", 133, Rarity.UNCOMMON, mage.cards.c.CorellianCorvette.class));
+ cards.add(new SetCardInfo("Crossfire", 100, Rarity.COMMON, mage.cards.c.Crossfire.class));
+ cards.add(new SetCardInfo("Cruelty of the Sith", 174, Rarity.UNCOMMON, mage.cards.c.CrueltyOfTheSith.class));
+ cards.add(new SetCardInfo("Cunning Abduction", 175, Rarity.RARE, mage.cards.c.CunningAbduction.class));
+ cards.add(new SetCardInfo("Dagobah Maw Slug", 176, Rarity.COMMON, mage.cards.d.DagobahMawSlug.class));
+ cards.add(new SetCardInfo("Dark Apprenticeship", 101, Rarity.UNCOMMON, mage.cards.d.DarkApprenticeship.class));
+ cards.add(new SetCardInfo("Dark Decision", 177, Rarity.COMMON, mage.cards.d.DarkDecision.class));
+ cards.add(new SetCardInfo("Dark Trooper", 231, Rarity.UNCOMMON, mage.cards.d.DarkTrooper.class));
+ cards.add(new SetCardInfo("Darth Maul", 178, Rarity.RARE, mage.cards.d.DarthMaul.class));
+ cards.add(new SetCardInfo("Darth Sidious, Sith Lord", 179, Rarity.MYTHIC, mage.cards.d.DarthSidiousSithLord.class));
+ cards.add(new SetCardInfo("Darth Tyranus", 180, Rarity.MYTHIC, mage.cards.d.DarthTyranus.class));
+ cards.add(new SetCardInfo("Darth Vader", 140, Rarity.MYTHIC, mage.cards.d.DarthVader.class));
+ cards.add(new SetCardInfo("Death Trooper", 71, Rarity.UNCOMMON, mage.cards.d.DeathTrooper.class));
+ cards.add(new SetCardInfo("Deploy The Troops", 8, Rarity.UNCOMMON, mage.cards.d.DeployTheTroops.class));
+ cards.add(new SetCardInfo("Doom Blade", 72, Rarity.UNCOMMON, mage.cards.d.DoomBlade.class));
+ cards.add(new SetCardInfo("Droid Commando", 73, Rarity.COMMON, mage.cards.d.DroidCommando.class));
+ cards.add(new SetCardInfo("Droid Factory", 239, Rarity.COMMON, mage.cards.d.DroidFactory.class));
+ cards.add(new SetCardInfo("Droid Foundry", 240, Rarity.UNCOMMON, mage.cards.d.DroidFoundry.class));
+ cards.add(new SetCardInfo("Droideka", 9, Rarity.UNCOMMON, mage.cards.d.Droideka.class));
+ cards.add(new SetCardInfo("Drone Holocron", 232, Rarity.COMMON, mage.cards.d.DroneHolocron.class));
+ cards.add(new SetCardInfo("Echo Base Commando", 181, Rarity.RARE, mage.cards.e.EchoBaseCommando.class));
+ cards.add(new SetCardInfo("EMP Blast", 10, Rarity.UNCOMMON, mage.cards.e.EMPBlast.class));
+ cards.add(new SetCardInfo("Escape Pod", 11, Rarity.COMMON, mage.cards.e.EscapePod.class));
+ cards.add(new SetCardInfo("Ewok Ambush", 134, Rarity.COMMON, mage.cards.e.EwokAmbush.class));
+ cards.add(new SetCardInfo("Ewok Firedancers", 135, Rarity.COMMON, mage.cards.e.EwokFiredancers.class));
+ cards.add(new SetCardInfo("Ewok Village", 241, Rarity.UNCOMMON, mage.cards.e.EwokVillage.class));
+ cards.add(new SetCardInfo("Exogorth", 136, Rarity.RARE, mage.cards.e.Exogorth.class));
+ cards.add(new SetCardInfo("Ferocity of the Underworld", 182, Rarity.UNCOMMON, mage.cards.f.FerocityOfTheUnderworld.class));
+ cards.add(new SetCardInfo("Flames of Remembrance", 102, Rarity.RARE, mage.cards.f.FlamesOfRemembrance.class));
+ cards.add(new SetCardInfo("Force Choke", 183, Rarity.COMMON, mage.cards.f.ForceChoke.class));
+ cards.add(new SetCardInfo("Force Denial", 39, Rarity.COMMON, mage.cards.f.ForceDenial.class));
+ cards.add(new SetCardInfo("Force Drain", 74, Rarity.COMMON, mage.cards.f.ForceDrain.class));
+ cards.add(new SetCardInfo("Force Healing", 12, Rarity.COMMON, mage.cards.f.ForceHealing.class));
+ cards.add(new SetCardInfo("Force Lightning", 103, Rarity.RARE, mage.cards.f.ForceLightning.class));
+ cards.add(new SetCardInfo("Force Mastery", 184, Rarity.RARE, mage.cards.f.ForceMastery.class));
+ cards.add(new SetCardInfo("Force Pull", 137, Rarity.COMMON, mage.cards.f.ForcePull.class));
+ cards.add(new SetCardInfo("Force Push", 40, Rarity.UNCOMMON, mage.cards.f.ForcePush.class));
+ cards.add(new SetCardInfo("Force Reflex", 13, Rarity.COMMON, mage.cards.f.ForceReflex.class));
+ cards.add(new SetCardInfo("Force Scream", 104, Rarity.UNCOMMON, mage.cards.f.ForceScream.class));
+ cards.add(new SetCardInfo("Force Spark", 105, Rarity.COMMON, mage.cards.f.ForceSpark.class));
+ cards.add(new SetCardInfo("Forest", "268a", Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Forest", "268b", Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Forest", "268c", Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Forest", "268d", Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Fulfill Contract", 224, Rarity.COMMON, mage.cards.f.FulfillContract.class));
+ cards.add(new SetCardInfo("Gamorrean Prison Guard", 106, Rarity.UNCOMMON, mage.cards.g.GamorreanPrisonGuard.class));
+ cards.add(new SetCardInfo("General Grievous", 185, Rarity.MYTHIC, mage.cards.g.GeneralGrievous.class));
+ cards.add(new SetCardInfo("Gifted Initiate", 14, Rarity.COMMON, mage.cards.g.GiftedInitiate.class));
+ cards.add(new SetCardInfo("Grand Moff Tarkin", 75, Rarity.RARE, mage.cards.g.GrandMoffTarkin.class));
+ cards.add(new SetCardInfo("Greater Krayt Dragon", 186, Rarity.MYTHIC, mage.cards.g.GreaterKraytDragon.class));
+ cards.add(new SetCardInfo("Greedo", 187, Rarity.RARE, mage.cards.g.Greedo.class));
+ cards.add(new SetCardInfo("Gundark", 107, Rarity.UNCOMMON, mage.cards.g.Gundark.class));
+ cards.add(new SetCardInfo("Gungan Captain", 41, Rarity.COMMON, mage.cards.g.GunganCaptain.class));
+ cards.add(new SetCardInfo("Han Solo", 108, Rarity.RARE, mage.cards.h.HanSolo.class));
+ cards.add(new SetCardInfo("Hazard Trooper", 76, Rarity.UNCOMMON, mage.cards.h.HazardTrooper.class));
+ cards.add(new SetCardInfo("Head Hunting", 77, Rarity.COMMON, mage.cards.h.HeadHunting.class));
+ cards.add(new SetCardInfo("Heavy Trooper", 78, Rarity.COMMON, mage.cards.h.HeavyTrooper.class));
+ cards.add(new SetCardInfo("Hot Pursuit", 188, Rarity.RARE, mage.cards.h.HotPursuit.class));
+ cards.add(new SetCardInfo("Hungry Dragonsnake", 138, Rarity.COMMON, mage.cards.h.HungryDragonsnake.class));
+ cards.add(new SetCardInfo("Hunt to Extinction", 189, Rarity.RARE, mage.cards.h.HuntToExtinction.class));
+ cards.add(new SetCardInfo("Hutt Crime Lord", 139, Rarity.UNCOMMON, mage.cards.h.HuttCrimeLord.class));
+ cards.add(new SetCardInfo("Hutt Palace", 242, Rarity.UNCOMMON, mage.cards.h.HuttPalace.class));
+ cards.add(new SetCardInfo("IG-88B", 79, Rarity.RARE, mage.cards.i.IG88B.class));
+ cards.add(new SetCardInfo("Images of the Past", 190, Rarity.COMMON, mage.cards.i.ImagesOfThePast.class));
+ cards.add(new SetCardInfo("Imperial Gunner", 109, Rarity.COMMON, mage.cards.i.ImperialGunner.class));
+ cards.add(new SetCardInfo("Impulsive Wager", 110, Rarity.COMMON, mage.cards.i.ImpulsiveWager.class));
+ cards.add(new SetCardInfo("Insatiable Rakghoul", 80, Rarity.COMMON, mage.cards.i.InsatiableRakghoul.class));
+ cards.add(new SetCardInfo("Interrogation", 81, Rarity.COMMON, mage.cards.i.Interrogation.class));
+ cards.add(new SetCardInfo("Ion Cannon", 15, Rarity.COMMON, mage.cards.i.IonCannon.class));
+ cards.add(new SetCardInfo("Iron Fist of the Empire", 191, Rarity.RARE, mage.cards.i.IronFistOfTheEmpire.class));
+ cards.add(new SetCardInfo("Island", "256a", Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Island", "256b", Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Island", "256c", Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Island", "256d", Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Ithorian Initiate", 140, Rarity.COMMON, mage.cards.i.IthorianInitiate.class));
+ cards.add(new SetCardInfo("Jabba the Hutt", 192, Rarity.RARE, mage.cards.j.JabbaTheHutt.class));
+ cards.add(new SetCardInfo("Jango Fett", 111, Rarity.RARE, mage.cards.j.JangoFett.class));
+ cards.add(new SetCardInfo("Jar Jar Binks", 42, Rarity.RARE, mage.cards.j.JarJarBinks.class));
+ cards.add(new SetCardInfo("Jar'Kai Battle Stance", 112, Rarity.COMMON, mage.cards.j.JarKaiBattleStance.class));
+ cards.add(new SetCardInfo("Jedi Battle Healer", 16, Rarity.UNCOMMON, mage.cards.j.JediBattleHealer.class));
+ cards.add(new SetCardInfo("Jedi Battle Mage", 43, Rarity.UNCOMMON, mage.cards.j.JediBattleMage.class));
+ cards.add(new SetCardInfo("Jedi Battle Sage", 141, Rarity.UNCOMMON, mage.cards.j.JediBattleSage.class));
+ cards.add(new SetCardInfo("Jedi Enclave", 243, Rarity.COMMON, mage.cards.j.JediEnclave.class));
+ cards.add(new SetCardInfo("Jedi Holocron", 233, Rarity.COMMON, mage.cards.j.JediHolocron.class));
+ cards.add(new SetCardInfo("Jedi Inquirer", 17, Rarity.COMMON, mage.cards.j.JediInquirer.class));
+ cards.add(new SetCardInfo("Jedi Instructor", 18, Rarity.COMMON, mage.cards.j.JediInstructor.class));
+ cards.add(new SetCardInfo("Jedi Knight", 193, Rarity.UNCOMMON, mage.cards.j.JediKnight.class));
+ cards.add(new SetCardInfo("Jedi Mind Trick", 44, Rarity.RARE, mage.cards.j.JediMindTrick.class));
+ cards.add(new SetCardInfo("Jedi Sentinel", 194, Rarity.COMMON, mage.cards.j.JediSentinel.class));
+ cards.add(new SetCardInfo("Jedi Starfighter", 19, Rarity.UNCOMMON, mage.cards.j.JediStarfighter.class));
+ cards.add(new SetCardInfo("Jedi Temple", 244, Rarity.UNCOMMON, mage.cards.j.JediTemple.class));
+ cards.add(new SetCardInfo("Jedi Training", 45, Rarity.UNCOMMON, mage.cards.j.JediTraining.class));
+ cards.add(new SetCardInfo("Jump Trooper", 46, Rarity.UNCOMMON, mage.cards.j.JumpTrooper.class));
+ cards.add(new SetCardInfo("Jungle Village", 245, Rarity.UNCOMMON, mage.cards.j.JungleVillage.class));
+ cards.add(new SetCardInfo("Kamino Cloning Facility", 246, Rarity.RARE, mage.cards.k.KaminoCloningFacility.class));
+ cards.add(new SetCardInfo("Ki-Adi-Mundi", 142, Rarity.RARE, mage.cards.k.KiAdiMundi.class));
+ cards.add(new SetCardInfo("LAAT Gunship", 20, Rarity.UNCOMMON, mage.cards.l.LAATGunship.class));
+ cards.add(new SetCardInfo("Lando Calrissian", 21, Rarity.RARE, mage.cards.l.LandoCalrissian.class));
+ cards.add(new SetCardInfo("Legacy of the Beloved", 143, Rarity.RARE, mage.cards.l.LegacyOfTheBeloved.class));
+ cards.add(new SetCardInfo("Lightning Bolt", 113, Rarity.UNCOMMON, mage.cards.l.LightningBolt.class));
+ cards.add(new SetCardInfo("Lightsaber", 234, Rarity.COMMON, mage.cards.l.Lightsaber.class));
+ cards.add(new SetCardInfo("Loyal Tauntaun", 22, Rarity.COMMON, mage.cards.l.LoyalTauntaun.class));
+ cards.add(new SetCardInfo("Luke Skywalker", 195, Rarity.MYTHIC, mage.cards.l.LukeSkywalker.class));
+ cards.add(new SetCardInfo("Mace Windu", 47, Rarity.RARE, mage.cards.m.MaceWindu.class));
+ cards.add(new SetCardInfo("Maintenance Droid", 196, Rarity.COMMON, mage.cards.m.MaintenanceDroid.class));
+ cards.add(new SetCardInfo("Maintenance Hangar", 23, Rarity.RARE, mage.cards.m.MaintenanceHangar.class));
+ cards.add(new SetCardInfo("Mantellian Savrip", 144, Rarity.UNCOMMON, mage.cards.m.MantellianSavrip.class));
+ cards.add(new SetCardInfo("March of the Droids", 197, Rarity.RARE, mage.cards.m.MarchOfTheDroids.class));
+ cards.add(new SetCardInfo("Massiff Swarm", 145, Rarity.COMMON, mage.cards.m.MassiffSwarm.class));
+ cards.add(new SetCardInfo("Might of the Wild", 198, Rarity.UNCOMMON, mage.cards.m.MightOfTheWild.class));
+ cards.add(new SetCardInfo("Millennium Falcon", 146, Rarity.RARE, mage.cards.m.MillenniumFalcon.class));
+ cards.add(new SetCardInfo("Miraculous Recovery", 24, Rarity.UNCOMMON, mage.cards.m.MiraculousRecovery.class));
+ cards.add(new SetCardInfo("Moisture Farm", 247, Rarity.UNCOMMON, mage.cards.m.MoistureFarm.class));
+ cards.add(new SetCardInfo("Mon Calamari Cruiser", 48, Rarity.UNCOMMON, mage.cards.m.MonCalamariCruiser.class));
+ cards.add(new SetCardInfo("Mon Calamari Initiate", 49, Rarity.COMMON, mage.cards.m.MonCalamariInitiate.class));
+ cards.add(new SetCardInfo("Mountain", "264a", Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Mountain", "264b", Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Mountain", "264c", Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Mountain", "264d", Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("N-1 Starfighter", 225, Rarity.COMMON, mage.cards.n.N1Starfighter.class));
+ cards.add(new SetCardInfo("Nebulon-B Frigate", 25, Rarity.COMMON, mage.cards.n.NebulonBFrigate.class));
+ cards.add(new SetCardInfo("Neophyte Hateflayer", 82, Rarity.COMMON, mage.cards.n.NeophyteHateflayer.class));
+ cards.add(new SetCardInfo("Nerf Herder", 147, Rarity.UNCOMMON, mage.cards.n.NerfHerder.class));
+ cards.add(new SetCardInfo("Nexu Stalker", 148, Rarity.UNCOMMON, mage.cards.n.NexuStalker.class));
+ cards.add(new SetCardInfo("Nightspider", 149, Rarity.COMMON, mage.cards.n.Nightspider.class));
+ cards.add(new SetCardInfo("No Contest", 150, Rarity.COMMON, mage.cards.n.NoContest.class));
+ cards.add(new SetCardInfo("Novice Bounty Hunter", 114, Rarity.COMMON, mage.cards.n.NoviceBountyHunter.class));
+ cards.add(new SetCardInfo("Nute Gunray", 199, Rarity.RARE, mage.cards.n.NuteGunray.class));
+ cards.add(new SetCardInfo("Obi-Wan Kenobi", 200, Rarity.MYTHIC, mage.cards.o.ObiWanKenobi.class));
+ cards.add(new SetCardInfo("Open Season", 83, Rarity.UNCOMMON, mage.cards.o.OpenSeason.class));
+ cards.add(new SetCardInfo("Orbital Bombardment", 26, Rarity.RARE, mage.cards.o.OrbitalBombardment.class));
+ cards.add(new SetCardInfo("Order 66", 84, Rarity.RARE, mage.cards.o.Order66.class));
+ cards.add(new SetCardInfo("Ortolan Keyboardist", 50, Rarity.COMMON, mage.cards.o.OrtolanKeyboardist.class));
+ cards.add(new SetCardInfo("Outer Rim Slaver", 201, Rarity.COMMON, mage.cards.o.OuterRimSlaver.class));
+ cards.add(new SetCardInfo("Outlaw Holocron", 235, Rarity.COMMON, mage.cards.o.OutlawHolocron.class));
+ cards.add(new SetCardInfo("Personal Energy Shield", 51, Rarity.COMMON, mage.cards.p.PersonalEnergyShield.class));
+ cards.add(new SetCardInfo("Plains", "252a", Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Plains", "252b", Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Plains", "252c", Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Plains", "252d", Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Plo Koon", 27, Rarity.RARE, mage.cards.p.PloKoon.class));
+ cards.add(new SetCardInfo("Precipice of Mortis", 202, Rarity.RARE, mage.cards.p.PrecipiceOfMortis.class));
+ cards.add(new SetCardInfo("Predator's Strike", 151, Rarity.COMMON, mage.cards.p.PredatorsStrike.class));
+ cards.add(new SetCardInfo("Preordain", 34, Rarity.UNCOMMON, mage.cards.p.Preordain.class));
+ cards.add(new SetCardInfo("Primal Instinct", 203, Rarity.COMMON, mage.cards.p.PrimalInstinct.class));
+ cards.add(new SetCardInfo("Princess Leia", 204, Rarity.RARE, mage.cards.p.PrincessLeia.class));
+ cards.add(new SetCardInfo("Probe Droid", 52, Rarity.COMMON, mage.cards.p.ProbeDroid.class));
+ cards.add(new SetCardInfo("Qui-Gon Jinn", 205, Rarity.RARE, mage.cards.q.QuiGonJinn.class));
+ cards.add(new SetCardInfo("Raging Reek", 115, Rarity.COMMON, mage.cards.r.RagingReek.class));
+ cards.add(new SetCardInfo("Rallying Fire", 116, Rarity.COMMON, mage.cards.r.RallyingFire.class));
+ cards.add(new SetCardInfo("Ravenous Wampa", 226, Rarity.UNCOMMON, mage.cards.r.RavenousWampa.class));
+ cards.add(new SetCardInfo("Regression", 152, Rarity.UNCOMMON, mage.cards.r.Regression.class));
+ cards.add(new SetCardInfo("Republic Frigate", 53, Rarity.COMMON, mage.cards.r.RepublicFrigate.class));
+ cards.add(new SetCardInfo("Repurpose", 85, Rarity.COMMON, mage.cards.r.Repurpose.class));
+ cards.add(new SetCardInfo("Revenge", 117, Rarity.COMMON, mage.cards.r.Revenge.class));
+ cards.add(new SetCardInfo("Riding Ronto", 28, Rarity.UNCOMMON, mage.cards.r.RidingRonto.class));
+ cards.add(new SetCardInfo("Rocket Trooper", 118, Rarity.RARE, mage.cards.r.RocketTrooper.class));
+ cards.add(new SetCardInfo("Rogue's Passage", 248, Rarity.UNCOMMON, mage.cards.r.RoguesPassage.class));
+ cards.add(new SetCardInfo("Rule of two", 86, Rarity.UNCOMMON, mage.cards.r.RuleOfTwo.class));
+ cards.add(new SetCardInfo("Rumination", 54, Rarity.COMMON, mage.cards.r.Rumination.class));
+ cards.add(new SetCardInfo("Rumor Monger", 206, Rarity.UNCOMMON, mage.cards.r.RumorMonger.class));
+ cards.add(new SetCardInfo("Sabacc Game", 55, Rarity.UNCOMMON, mage.cards.s.SabaccGame.class));
+ cards.add(new SetCardInfo("Salvage Squad", 207, Rarity.COMMON, mage.cards.s.SalvageSquad.class));
+ cards.add(new SetCardInfo("Sand Trooper", 29, Rarity.COMMON, mage.cards.s.SandTrooper.class));
+ cards.add(new SetCardInfo("Sarlacc Pit", 208, Rarity.RARE, mage.cards.s.SarlaccPit.class));
+ cards.add(new SetCardInfo("Scout the Perimeter", 153, Rarity.COMMON, mage.cards.s.ScoutThePerimeter.class));
+ cards.add(new SetCardInfo("Scout Trooper", 154, Rarity.COMMON, mage.cards.s.ScoutTrooper.class));
+ cards.add(new SetCardInfo("Security Droid", 30, Rarity.COMMON, mage.cards.s.SecurityDroid.class));
+ cards.add(new SetCardInfo("Senator Bail Organa", 209, Rarity.UNCOMMON, mage.cards.s.SenatorBailOrgana.class));
+ cards.add(new SetCardInfo("Senator Lott Dod", 210, Rarity.UNCOMMON, mage.cards.s.SenatorLottDod.class));
+ cards.add(new SetCardInfo("Senator Onaconda Farr", 211, Rarity.UNCOMMON, mage.cards.s.SenatorOnacondaFarr.class));
+ cards.add(new SetCardInfo("Senator Padmé Amidala", 212, Rarity.UNCOMMON, mage.cards.s.SenatorPadmeAmidala.class));
+ cards.add(new SetCardInfo("Senator Passel Argente", 213, Rarity.UNCOMMON, mage.cards.s.SenatorPasselArgente.class));
+ cards.add(new SetCardInfo("Shaak Herd", 155, Rarity.COMMON, mage.cards.s.ShaakHerd.class));
+ cards.add(new SetCardInfo("Shadow Trooper", 56, Rarity.COMMON, mage.cards.s.ShadowTrooper.class));
+ cards.add(new SetCardInfo("Shock Trooper", 119, Rarity.UNCOMMON, mage.cards.s.ShockTrooper.class));
+ cards.add(new SetCardInfo("Show of Dominance", 156, Rarity.UNCOMMON, mage.cards.s.ShowOfDominance.class));
+ cards.add(new SetCardInfo("Sith Assassin", 87, Rarity.UNCOMMON, mage.cards.s.SithAssassin.class));
+ cards.add(new SetCardInfo("Sith Citadel", 249, Rarity.UNCOMMON, mage.cards.s.SithCitadel.class));
+ cards.add(new SetCardInfo("Sith Evoker", 88, Rarity.COMMON, mage.cards.s.SithEvoker.class));
+ cards.add(new SetCardInfo("Sith Holocron", 236, Rarity.COMMON, mage.cards.s.SithHolocron.class));
+ cards.add(new SetCardInfo("Sith Inquisitor", 89, Rarity.COMMON, mage.cards.s.SithInquisitor.class));
+ cards.add(new SetCardInfo("Sith Lord", 90, Rarity.RARE, mage.cards.s.SithLord.class));
+ cards.add(new SetCardInfo("Sith Magic", 214, Rarity.RARE, mage.cards.s.SithMagic.class));
+ cards.add(new SetCardInfo("Sith Manipulator", 57, Rarity.UNCOMMON, mage.cards.s.SithManipulator.class));
+ cards.add(new SetCardInfo("Sith Marauder", 120, Rarity.UNCOMMON, mage.cards.s.SithMarauder.class));
+ cards.add(new SetCardInfo("Sith Mindseer", 215, Rarity.UNCOMMON, mage.cards.s.SithMindseer.class));
+ cards.add(new SetCardInfo("Sith Ravager", 121, Rarity.COMMON, mage.cards.s.SithRavager.class));
+ cards.add(new SetCardInfo("Sith Ruins", 250, Rarity.COMMON, mage.cards.s.SithRuins.class));
+ cards.add(new SetCardInfo("Sith Sorcerer", 58, Rarity.COMMON, mage.cards.s.SithSorcerer.class));
+ cards.add(new SetCardInfo("Sith Thoughtseeker", 91, Rarity.COMMON, mage.cards.s.SithThoughtseeker.class));
+ cards.add(new SetCardInfo("Slave I", 216, Rarity.RARE, mage.cards.s.SlaveI.class));
+ cards.add(new SetCardInfo("Smash to Smithereens", 122, Rarity.UNCOMMON, mage.cards.s.SmashToSmithereens.class));
+ cards.add(new SetCardInfo("Snow Trooper", 31, Rarity.UNCOMMON, mage.cards.s.SnowTrooper.class));
+ cards.add(new SetCardInfo("Speeder Trooper", 123, Rarity.COMMON, mage.cards.s.SpeederTrooper.class));
+ cards.add(new SetCardInfo("Star Destroyer", 217, Rarity.RARE, mage.cards.s.StarDestroyer.class));
+ cards.add(new SetCardInfo("Strike Team Commando", 227, Rarity.COMMON, mage.cards.s.StrikeTeamCommando.class));
+ cards.add(new SetCardInfo("Super Battle Droid", 59, Rarity.COMMON, mage.cards.s.SuperBattleDroid.class));
+ cards.add(new SetCardInfo("Surprise Maneuver", 60, Rarity.COMMON, mage.cards.s.SurpriseManeuver.class));
+ cards.add(new SetCardInfo("Swamp", "260a", Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Swamp", "260b", Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Swamp", "260c", Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Swamp", "260d", Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(FrameStyle.ZEN_FULL_ART_BASIC, true)));
+ cards.add(new SetCardInfo("Swarm the Skies", 92, Rarity.COMMON, mage.cards.s.SwarmTheSkies.class));
+ cards.add(new SetCardInfo("Syndicate Enforcer", 124, Rarity.COMMON, mage.cards.s.SyndicateEnforcerSWS.class));
+ cards.add(new SetCardInfo("Tank Droid", 218, Rarity.RARE, mage.cards.t.TankDroid.class));
+ cards.add(new SetCardInfo("Terentatek Cub", 125, Rarity.COMMON, mage.cards.t.TerentatekCub.class));
+ cards.add(new SetCardInfo("The Battle of Endor", 130, Rarity.MYTHIC, mage.cards.t.TheBattleOfEndor.class));
+ cards.add(new SetCardInfo("The Battle of Geonosis", 97, Rarity.MYTHIC, mage.cards.t.TheBattleOfGeonosis.class));
+ cards.add(new SetCardInfo("The Battle of Hoth", 4, Rarity.MYTHIC, mage.cards.t.TheBattleOfHoth.class));
+ cards.add(new SetCardInfo("The Battle of Naboo", 37, Rarity.MYTHIC, mage.cards.t.TheBattleOfNaboo.class));
+ cards.add(new SetCardInfo("The Battle of Yavin", 67, Rarity.MYTHIC, mage.cards.t.TheBattleOfYavin.class));
+ cards.add(new SetCardInfo("The Death Star", 1, Rarity.MYTHIC, mage.cards.t.TheDeathStar.class));
+ cards.add(new SetCardInfo("TIE Bomber", 93, Rarity.UNCOMMON, mage.cards.t.TIEBomber.class));
+ cards.add(new SetCardInfo("TIE Interceptor", 94, Rarity.COMMON, mage.cards.t.TIEInterceptor.class));
+ cards.add(new SetCardInfo("Trade Federation Battleship", 219, Rarity.RARE, mage.cards.t.TradeFederationBattleship.class));
+ cards.add(new SetCardInfo("Tri-Fighter", 228, Rarity.COMMON, mage.cards.t.TriFighter.class));
+ cards.add(new SetCardInfo("Trooper Armor", 237, Rarity.UNCOMMON, mage.cards.t.TrooperArmor.class));
+ cards.add(new SetCardInfo("Trooper Commando", 157, Rarity.UNCOMMON, mage.cards.t.TrooperCommando.class));
+ cards.add(new SetCardInfo("Twi'lek Seductress", 158, Rarity.COMMON, mage.cards.t.TwilekSeductress.class));
+ cards.add(new SetCardInfo("Ugnaught Scrap Worker", 61, Rarity.COMMON, mage.cards.u.UgnaughtScrapWorker.class));
+ cards.add(new SetCardInfo("Underworld Slums", 251, Rarity.COMMON, mage.cards.u.UnderworldSlums.class));
+ cards.add(new SetCardInfo("Unity of the Droids", 220, Rarity.UNCOMMON, mage.cards.u.UnityOfTheDroids.class));
+ cards.add(new SetCardInfo("Unruly Sureshot", 95, Rarity.UNCOMMON, mage.cards.u.UnrulySureshot.class));
+ cards.add(new SetCardInfo("V-Wing", 126, Rarity.COMMON, mage.cards.v.VWing.class));
+ cards.add(new SetCardInfo("Vapor Snag", 62, Rarity.COMMON, mage.cards.v.VaporSnag.class));
+ cards.add(new SetCardInfo("Weequay Beastmaster", 127, Rarity.UNCOMMON, mage.cards.w.WeequayBeastmaster.class));
+ cards.add(new SetCardInfo("Wild Holocron", 238, Rarity.COMMON, mage.cards.w.WildHolocron.class));
+ cards.add(new SetCardInfo("Wisdom of the Jedi", 221, Rarity.UNCOMMON, mage.cards.w.WisdomOfTheJedi.class));
+ cards.add(new SetCardInfo("Womp Rat", 32, Rarity.COMMON, mage.cards.w.WompRat.class));
+ cards.add(new SetCardInfo("Wookiee Bounty Hunter", 159, Rarity.COMMON, mage.cards.w.WookieeBountyHunter.class));
+ cards.add(new SetCardInfo("Wookiee Mystic", 222, Rarity.UNCOMMON, mage.cards.w.WookieeMystic.class));
+ cards.add(new SetCardInfo("Wookiee Raidleader", 229, Rarity.COMMON, mage.cards.w.WookieeRaidleader.class));
+ cards.add(new SetCardInfo("X-Wing", 33, Rarity.COMMON, mage.cards.x.XWing.class));
+ cards.add(new SetCardInfo("Y-Wing", 63, Rarity.UNCOMMON, mage.cards.y.YWing.class));
+ cards.add(new SetCardInfo("Yoda, Jedi Master", 223, Rarity.MYTHIC, mage.cards.y.YodaJediMaster.class));
+ cards.add(new SetCardInfo("Zam Wesell", 64, Rarity.RARE, mage.cards.z.ZamWesell.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Starter1999.java b/Mage.Sets/src/mage/sets/Starter1999.java
index 6f6a5119169..8baf9243ad9 100644
--- a/Mage.Sets/src/mage/sets/Starter1999.java
+++ b/Mage.Sets/src/mage/sets/Starter1999.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class Starter1999 extends ExpansionSet {
+public final class Starter1999 extends ExpansionSet {
private static final Starter1999 instance = new Starter1999();
diff --git a/Mage.Sets/src/mage/sets/Starter2000.java b/Mage.Sets/src/mage/sets/Starter2000.java
index 21a339d1eed..f14bcb9bd4a 100644
--- a/Mage.Sets/src/mage/sets/Starter2000.java
+++ b/Mage.Sets/src/mage/sets/Starter2000.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class Starter2000 extends ExpansionSet {
+public final class Starter2000 extends ExpansionSet {
private static final Starter2000 instance = new Starter2000();
diff --git a/Mage.Sets/src/mage/sets/Stronghold.java b/Mage.Sets/src/mage/sets/Stronghold.java
index 7b765308c20..8490457fa51 100644
--- a/Mage.Sets/src/mage/sets/Stronghold.java
+++ b/Mage.Sets/src/mage/sets/Stronghold.java
@@ -34,7 +34,7 @@ import mage.constants.SetType;
/**
* @author North
*/
-public class Stronghold extends ExpansionSet {
+public final class Stronghold extends ExpansionSet {
private static final Stronghold instance = new Stronghold();
diff --git a/Mage.Sets/src/mage/sets/SuperSeries.java b/Mage.Sets/src/mage/sets/SuperSeries.java
index a10bb671425..3b5500c1498 100644
--- a/Mage.Sets/src/mage/sets/SuperSeries.java
+++ b/Mage.Sets/src/mage/sets/SuperSeries.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class SuperSeries extends ExpansionSet {
+public final class SuperSeries extends ExpansionSet {
private static final SuperSeries instance = new SuperSeries();
diff --git a/Mage.Sets/src/mage/sets/Tempest.java b/Mage.Sets/src/mage/sets/Tempest.java
index 91069bf74a6..bcb715359dd 100644
--- a/Mage.Sets/src/mage/sets/Tempest.java
+++ b/Mage.Sets/src/mage/sets/Tempest.java
@@ -1,367 +1,367 @@
-package mage.sets;
-
-import mage.cards.ExpansionSet;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-public class Tempest extends ExpansionSet {
-
- private static final Tempest instance = new Tempest();
-
- public static Tempest getInstance() {
- return instance;
- }
-
- private Tempest() {
- super("Tempest", "TMP", ExpansionSet.buildDate(1997, 10, 1), SetType.EXPANSION);
- this.blockName = "Tempest";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Abandon Hope", 107, Rarity.UNCOMMON, mage.cards.a.AbandonHope.class));
- cards.add(new SetCardInfo("Advance Scout", 1, Rarity.COMMON, mage.cards.a.AdvanceScout.class));
- cards.add(new SetCardInfo("Aftershock", 160, Rarity.COMMON, mage.cards.a.Aftershock.class));
- cards.add(new SetCardInfo("Altar of Dementia", 276, Rarity.RARE, mage.cards.a.AltarOfDementia.class));
- cards.add(new SetCardInfo("Aluren", 213, Rarity.RARE, mage.cards.a.Aluren.class));
- cards.add(new SetCardInfo("Ancient Runes", 161, Rarity.UNCOMMON, mage.cards.a.AncientRunes.class));
- cards.add(new SetCardInfo("Ancient Tomb", 315, Rarity.UNCOMMON, mage.cards.a.AncientTomb.class));
- cards.add(new SetCardInfo("Angelic Protector", 2, Rarity.UNCOMMON, mage.cards.a.AngelicProtector.class));
- cards.add(new SetCardInfo("Anoint", 3, Rarity.COMMON, mage.cards.a.Anoint.class));
- cards.add(new SetCardInfo("Apes of Rath", 214, Rarity.UNCOMMON, mage.cards.a.ApesOfRath.class));
- cards.add(new SetCardInfo("Apocalypse", 162, Rarity.RARE, mage.cards.a.Apocalypse.class));
- cards.add(new SetCardInfo("Armor Sliver", 4, Rarity.UNCOMMON, mage.cards.a.ArmorSliver.class));
- cards.add(new SetCardInfo("Armored Pegasus", 5, Rarity.COMMON, mage.cards.a.ArmoredPegasus.class));
- cards.add(new SetCardInfo("Auratog", 6, Rarity.RARE, mage.cards.a.Auratog.class));
- cards.add(new SetCardInfo("Avenging Angel", 7, Rarity.RARE, mage.cards.a.AvengingAngel.class));
- cards.add(new SetCardInfo("Barbed Sliver", 163, Rarity.UNCOMMON, mage.cards.b.BarbedSliver.class));
- cards.add(new SetCardInfo("Bayou Dragonfly", 215, Rarity.COMMON, mage.cards.b.BayouDragonfly.class));
- cards.add(new SetCardInfo("Bellowing Fiend", 108, Rarity.RARE, mage.cards.b.BellowingFiend.class));
- cards.add(new SetCardInfo("Benthic Behemoth", 54, Rarity.RARE, mage.cards.b.BenthicBehemoth.class));
- cards.add(new SetCardInfo("Blood Frenzy", 164, Rarity.COMMON, mage.cards.b.BloodFrenzy.class));
- cards.add(new SetCardInfo("Blood Pet", 109, Rarity.COMMON, mage.cards.b.BloodPet.class));
- cards.add(new SetCardInfo("Boil", 165, Rarity.UNCOMMON, mage.cards.b.Boil.class));
- cards.add(new SetCardInfo("Bottle Gnomes", 278, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class));
- cards.add(new SetCardInfo("Bounty Hunter", 110, Rarity.RARE, mage.cards.b.BountyHunter.class));
- cards.add(new SetCardInfo("Broken Fall", 216, Rarity.COMMON, mage.cards.b.BrokenFall.class));
- cards.add(new SetCardInfo("Caldera Lake", 316, Rarity.RARE, mage.cards.c.CalderaLake.class));
- cards.add(new SetCardInfo("Canopy Spider", 217, Rarity.COMMON, mage.cards.c.CanopySpider.class));
- cards.add(new SetCardInfo("Canyon Drake", 166, Rarity.RARE, mage.cards.c.CanyonDrake.class));
- cards.add(new SetCardInfo("Canyon Wildcat", 167, Rarity.COMMON, mage.cards.c.CanyonWildcat.class));
- cards.add(new SetCardInfo("Capsize", 55, Rarity.COMMON, mage.cards.c.Capsize.class));
- cards.add(new SetCardInfo("Carrionette", 111, Rarity.RARE, mage.cards.c.Carrionette.class));
- cards.add(new SetCardInfo("Chaotic Goo", 168, Rarity.RARE, mage.cards.c.ChaoticGoo.class));
- cards.add(new SetCardInfo("Charging Rhino", 218, Rarity.UNCOMMON, mage.cards.c.ChargingRhino.class));
- cards.add(new SetCardInfo("Chill", 56, Rarity.UNCOMMON, mage.cards.c.Chill.class));
- cards.add(new SetCardInfo("Choke", 219, Rarity.UNCOMMON, mage.cards.c.Choke.class));
- cards.add(new SetCardInfo("Cinder Marsh", 317, Rarity.UNCOMMON, mage.cards.c.CinderMarsh.class));
- cards.add(new SetCardInfo("Circle of Protection: Black", 8, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class));
- cards.add(new SetCardInfo("Circle of Protection: Blue", 9, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlue.class));
- cards.add(new SetCardInfo("Circle of Protection: Green", 10, Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class));
- cards.add(new SetCardInfo("Circle of Protection: Red", 11, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class));
- cards.add(new SetCardInfo("Circle of Protection: Shadow", 12, Rarity.COMMON, mage.cards.c.CircleOfProtectionShadow.class));
- cards.add(new SetCardInfo("Circle of Protection: White", 13, Rarity.COMMON, mage.cards.c.CircleOfProtectionWhite.class));
- cards.add(new SetCardInfo("Clergy en-Vec", 14, Rarity.COMMON, mage.cards.c.ClergyEnVec.class));
- cards.add(new SetCardInfo("Clot Sliver", 112, Rarity.COMMON, mage.cards.c.ClotSliver.class));
- cards.add(new SetCardInfo("Cloudchaser Eagle", 15, Rarity.COMMON, mage.cards.c.CloudchaserEagle.class));
- cards.add(new SetCardInfo("Coercion", 113, Rarity.COMMON, mage.cards.c.Coercion.class));
- cards.add(new SetCardInfo("Coffin Queen", 114, Rarity.RARE, mage.cards.c.CoffinQueen.class));
- cards.add(new SetCardInfo("Coiled Tinviper", 279, Rarity.COMMON, mage.cards.c.CoiledTinviper.class));
- cards.add(new SetCardInfo("Cold Storage", 280, Rarity.RARE, mage.cards.c.ColdStorage.class));
- cards.add(new SetCardInfo("Commander Greven il-Vec", 115, Rarity.RARE, mage.cards.c.CommanderGrevenIlVec.class));
- cards.add(new SetCardInfo("Corpse Dance", 116, Rarity.RARE, mage.cards.c.CorpseDance.class));
- cards.add(new SetCardInfo("Counterspell", 57, Rarity.COMMON, mage.cards.c.Counterspell.class));
- cards.add(new SetCardInfo("Crazed Armodon", 220, Rarity.RARE, mage.cards.c.CrazedArmodon.class));
- cards.add(new SetCardInfo("Crown of Flames", 169, Rarity.COMMON, mage.cards.c.CrownOfFlames.class));
- cards.add(new SetCardInfo("Cursed Scroll", 281, Rarity.RARE, mage.cards.c.CursedScroll.class));
- cards.add(new SetCardInfo("Dark Banishing", 117, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
- cards.add(new SetCardInfo("Dark Ritual", 118, Rarity.COMMON, mage.cards.d.DarkRitual.class));
- cards.add(new SetCardInfo("Darkling Stalker", 119, Rarity.COMMON, mage.cards.d.DarklingStalker.class));
- cards.add(new SetCardInfo("Dauthi Embrace", 120, Rarity.UNCOMMON, mage.cards.d.DauthiEmbrace.class));
- cards.add(new SetCardInfo("Dauthi Ghoul", 121, Rarity.UNCOMMON, mage.cards.d.DauthiGhoul.class));
- cards.add(new SetCardInfo("Dauthi Horror", 122, Rarity.COMMON, mage.cards.d.DauthiHorror.class));
- cards.add(new SetCardInfo("Dauthi Marauder", 123, Rarity.COMMON, mage.cards.d.DauthiMarauder.class));
- cards.add(new SetCardInfo("Dauthi Mercenary", 124, Rarity.UNCOMMON, mage.cards.d.DauthiMercenary.class));
- cards.add(new SetCardInfo("Dauthi Mindripper", 125, Rarity.UNCOMMON, mage.cards.d.DauthiMindripper.class));
- cards.add(new SetCardInfo("Dauthi Slayer", 126, Rarity.COMMON, mage.cards.d.DauthiSlayer.class));
- cards.add(new SetCardInfo("Deadshot", 170, Rarity.RARE, mage.cards.d.Deadshot.class));
- cards.add(new SetCardInfo("Death Pits of Rath", 127, Rarity.RARE, mage.cards.d.DeathPitsOfRath.class));
- cards.add(new SetCardInfo("Diabolic Edict", 128, Rarity.COMMON, mage.cards.d.DiabolicEdict.class));
- cards.add(new SetCardInfo("Dirtcowl Wurm", 221, Rarity.RARE, mage.cards.d.DirtcowlWurm.class));
- cards.add(new SetCardInfo("Disenchant", 16, Rarity.COMMON, mage.cards.d.Disenchant.class));
- cards.add(new SetCardInfo("Dismiss", 58, Rarity.UNCOMMON, mage.cards.d.Dismiss.class));
- cards.add(new SetCardInfo("Disturbed Burial", 129, Rarity.COMMON, mage.cards.d.DisturbedBurial.class));
- cards.add(new SetCardInfo("Dracoplasm", 266, Rarity.RARE, mage.cards.d.Dracoplasm.class));
- cards.add(new SetCardInfo("Dread of Night", 130, Rarity.UNCOMMON, mage.cards.d.DreadOfNight.class));
- cards.add(new SetCardInfo("Dream Cache", 59, Rarity.COMMON, mage.cards.d.DreamCache.class));
- cards.add(new SetCardInfo("Dregs of Sorrow", 131, Rarity.RARE, mage.cards.d.DregsOfSorrow.class));
- cards.add(new SetCardInfo("Earthcraft", 222, Rarity.RARE, mage.cards.e.Earthcraft.class));
- cards.add(new SetCardInfo("Echo Chamber", 282, Rarity.RARE, mage.cards.e.EchoChamber.class));
- cards.add(new SetCardInfo("Eladamri's Vineyard", 223, Rarity.RARE, mage.cards.e.EladamrisVineyard.class));
- cards.add(new SetCardInfo("Eladamri, Lord of Leaves", 224, Rarity.RARE, mage.cards.e.EladamriLordOfLeaves.class));
- cards.add(new SetCardInfo("Elite Javelineer", 17, Rarity.COMMON, mage.cards.e.EliteJavelineer.class));
- cards.add(new SetCardInfo("Elven Warhounds", 225, Rarity.RARE, mage.cards.e.ElvenWarhounds.class));
- cards.add(new SetCardInfo("Elvish Fury", 226, Rarity.UNCOMMON, mage.cards.e.ElvishFury.class));
- cards.add(new SetCardInfo("Emerald Medallion", 283, Rarity.RARE, mage.cards.e.EmeraldMedallion.class));
- cards.add(new SetCardInfo("Emmessi Tome", 284, Rarity.RARE, mage.cards.e.EmmessiTome.class));
- cards.add(new SetCardInfo("Endless Scream", 132, Rarity.COMMON, mage.cards.e.EndlessScream.class));
- cards.add(new SetCardInfo("Energizer", 285, Rarity.RARE, mage.cards.e.Energizer.class));
- cards.add(new SetCardInfo("Enfeeblement", 133, Rarity.COMMON, mage.cards.e.Enfeeblement.class));
- cards.add(new SetCardInfo("Enraging Licid", 171, Rarity.UNCOMMON, mage.cards.e.EnragingLicid.class));
- cards.add(new SetCardInfo("Essence Bottle", 286, Rarity.UNCOMMON, mage.cards.e.EssenceBottle.class));
- cards.add(new SetCardInfo("Evincar's Justice", 134, Rarity.COMMON, mage.cards.e.EvincarsJustice.class));
- cards.add(new SetCardInfo("Excavator", 287, Rarity.UNCOMMON, mage.cards.e.Excavator.class));
- cards.add(new SetCardInfo("Extinction", 135, Rarity.RARE, mage.cards.e.Extinction.class));
- cards.add(new SetCardInfo("Fevered Convulsions", 136, Rarity.RARE, mage.cards.f.FeveredConvulsions.class));
- cards.add(new SetCardInfo("Field of Souls", 18, Rarity.RARE, mage.cards.f.FieldOfSouls.class));
- cards.add(new SetCardInfo("Fighting Drake", 63, Rarity.UNCOMMON, mage.cards.f.FightingDrake.class));
- cards.add(new SetCardInfo("Firefly", 172, Rarity.UNCOMMON, mage.cards.f.Firefly.class));
- cards.add(new SetCardInfo("Fireslinger", 173, Rarity.COMMON, mage.cards.f.Fireslinger.class));
- cards.add(new SetCardInfo("Flailing Drake", 227, Rarity.UNCOMMON, mage.cards.f.FlailingDrake.class));
- cards.add(new SetCardInfo("Flickering Ward", 19, Rarity.UNCOMMON, mage.cards.f.FlickeringWard.class));
- cards.add(new SetCardInfo("Flowstone Giant", 174, Rarity.COMMON, mage.cards.f.FlowstoneGiant.class));
- cards.add(new SetCardInfo("Flowstone Salamander", 175, Rarity.UNCOMMON, mage.cards.f.FlowstoneSalamander.class));
- cards.add(new SetCardInfo("Flowstone Sculpture", 288, Rarity.RARE, mage.cards.f.FlowstoneSculpture.class));
- cards.add(new SetCardInfo("Flowstone Wyvern", 176, Rarity.RARE, mage.cards.f.FlowstoneWyvern.class));
- cards.add(new SetCardInfo("Fool's Tome", 289, Rarity.RARE, mage.cards.f.FoolsTome.class));
- cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Frog Tongue", 228, Rarity.COMMON, mage.cards.f.FrogTongue.class));
- cards.add(new SetCardInfo("Fugitive Druid", 229, Rarity.RARE, mage.cards.f.FugitiveDruid.class));
- cards.add(new SetCardInfo("Furnace of Rath", 177, Rarity.RARE, mage.cards.f.FurnaceOfRath.class));
- cards.add(new SetCardInfo("Fylamarid", 64, Rarity.UNCOMMON, mage.cards.f.Fylamarid.class));
- cards.add(new SetCardInfo("Gallantry", 20, Rarity.UNCOMMON, mage.cards.g.Gallantry.class));
- cards.add(new SetCardInfo("Gaseous Form", 65, Rarity.COMMON, mage.cards.g.GaseousForm.class));
- cards.add(new SetCardInfo("Gerrard's Battle Cry", 21, Rarity.RARE, mage.cards.g.GerrardsBattleCry.class));
- cards.add(new SetCardInfo("Ghost Town", 318, Rarity.UNCOMMON, mage.cards.g.GhostTown.class));
- cards.add(new SetCardInfo("Giant Crab", 66, Rarity.COMMON, mage.cards.g.GiantCrab.class));
- cards.add(new SetCardInfo("Giant Strength", 178, Rarity.COMMON, mage.cards.g.GiantStrength.class));
- cards.add(new SetCardInfo("Goblin Bombardment", 179, Rarity.UNCOMMON, mage.cards.g.GoblinBombardment.class));
- cards.add(new SetCardInfo("Gravedigger", 137, Rarity.COMMON, mage.cards.g.Gravedigger.class));
- cards.add(new SetCardInfo("Grindstone", 290, Rarity.RARE, mage.cards.g.Grindstone.class));
- cards.add(new SetCardInfo("Hand to Hand", 180, Rarity.RARE, mage.cards.h.HandToHand.class));
- cards.add(new SetCardInfo("Hanna's Custody", 22, Rarity.RARE, mage.cards.h.HannasCustody.class));
- cards.add(new SetCardInfo("Harrow", 230, Rarity.UNCOMMON, mage.cards.h.Harrow.class));
- cards.add(new SetCardInfo("Havoc", 181, Rarity.UNCOMMON, mage.cards.h.Havoc.class));
- cards.add(new SetCardInfo("Heart Sliver", 182, Rarity.COMMON, mage.cards.h.HeartSliver.class));
- cards.add(new SetCardInfo("Heartwood Dryad", 231, Rarity.COMMON, mage.cards.h.HeartwoodDryad.class));
- cards.add(new SetCardInfo("Heartwood Giant", 232, Rarity.RARE, mage.cards.h.HeartwoodGiant.class));
- cards.add(new SetCardInfo("Heartwood Treefolk", 233, Rarity.UNCOMMON, mage.cards.h.HeartwoodTreefolk.class));
- cards.add(new SetCardInfo("Helm of Possession", 291, Rarity.RARE, mage.cards.h.HelmOfPossession.class));
- cards.add(new SetCardInfo("Hero's Resolve", 23, Rarity.COMMON, mage.cards.h.HerosResolve.class));
- cards.add(new SetCardInfo("Horned Sliver", 234, Rarity.UNCOMMON, mage.cards.h.HornedSliver.class));
- cards.add(new SetCardInfo("Horned Turtle", 67, Rarity.COMMON, mage.cards.h.HornedTurtle.class));
- cards.add(new SetCardInfo("Humility", 24, Rarity.RARE, mage.cards.h.Humility.class));
- cards.add(new SetCardInfo("Imps' Taunt", 138, Rarity.UNCOMMON, mage.cards.i.ImpsTaunt.class));
- cards.add(new SetCardInfo("Insight", 68, Rarity.UNCOMMON, mage.cards.i.Insight.class));
- cards.add(new SetCardInfo("Interdict", 69, Rarity.UNCOMMON, mage.cards.i.Interdict.class));
- cards.add(new SetCardInfo("Intuition", 70, Rarity.RARE, mage.cards.i.Intuition.class));
- cards.add(new SetCardInfo("Invulnerability", 25, Rarity.UNCOMMON, mage.cards.i.Invulnerability.class));
- cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Jackal Pup", 183, Rarity.UNCOMMON, mage.cards.j.JackalPup.class));
- cards.add(new SetCardInfo("Jet Medallion", 292, Rarity.RARE, mage.cards.j.JetMedallion.class));
- cards.add(new SetCardInfo("Jinxed Idol", 293, Rarity.RARE, mage.cards.j.JinxedIdol.class));
- cards.add(new SetCardInfo("Kezzerdrix", 139, Rarity.RARE, mage.cards.k.Kezzerdrix.class));
- cards.add(new SetCardInfo("Kindle", 184, Rarity.COMMON, mage.cards.k.Kindle.class));
- cards.add(new SetCardInfo("Knight of Dawn", 26, Rarity.UNCOMMON, mage.cards.k.KnightOfDawn.class));
- cards.add(new SetCardInfo("Knight of Dusk", 140, Rarity.UNCOMMON, mage.cards.k.KnightOfDusk.class));
- cards.add(new SetCardInfo("Krakilin", 235, Rarity.UNCOMMON, mage.cards.k.Krakilin.class));
- cards.add(new SetCardInfo("Leeching Licid", 141, Rarity.UNCOMMON, mage.cards.l.LeechingLicid.class));
- cards.add(new SetCardInfo("Legacy's Allure", 71, Rarity.UNCOMMON, mage.cards.l.LegacysAllure.class));
- cards.add(new SetCardInfo("Legerdemain", 72, Rarity.UNCOMMON, mage.cards.l.Legerdemain.class));
- cards.add(new SetCardInfo("Light of Day", 27, Rarity.UNCOMMON, mage.cards.l.LightOfDay.class));
- cards.add(new SetCardInfo("Lightning Blast", 185, Rarity.COMMON, mage.cards.l.LightningBlast.class));
- cards.add(new SetCardInfo("Lightning Elemental", 186, Rarity.COMMON, mage.cards.l.LightningElemental.class));
- cards.add(new SetCardInfo("Living Death", 142, Rarity.RARE, mage.cards.l.LivingDeath.class));
- cards.add(new SetCardInfo("Lobotomy", 267, Rarity.UNCOMMON, mage.cards.l.Lobotomy.class));
- cards.add(new SetCardInfo("Lotus Petal", 294, Rarity.COMMON, mage.cards.l.LotusPetal.class));
- cards.add(new SetCardInfo("Lowland Giant", 187, Rarity.COMMON, mage.cards.l.LowlandGiant.class));
- cards.add(new SetCardInfo("Maddening Imp", 143, Rarity.RARE, mage.cards.m.MaddeningImp.class));
- cards.add(new SetCardInfo("Magmasaur", 188, Rarity.RARE, mage.cards.m.Magmasaur.class));
- cards.add(new SetCardInfo("Mana Severance", 73, Rarity.RARE, mage.cards.m.ManaSeverance.class));
- cards.add(new SetCardInfo("Manakin", 296, Rarity.COMMON, mage.cards.m.Manakin.class));
- cards.add(new SetCardInfo("Manta Riders", 74, Rarity.COMMON, mage.cards.m.MantaRiders.class));
- cards.add(new SetCardInfo("Marble Titan", 28, Rarity.RARE, mage.cards.m.MarbleTitan.class));
- cards.add(new SetCardInfo("Marsh Lurker", 144, Rarity.COMMON, mage.cards.m.MarshLurker.class));
- cards.add(new SetCardInfo("Master Decoy", 29, Rarity.COMMON, mage.cards.m.MasterDecoy.class));
- cards.add(new SetCardInfo("Mawcor", 75, Rarity.RARE, mage.cards.m.Mawcor.class));
- cards.add(new SetCardInfo("Maze of Shadows", 319, Rarity.UNCOMMON, mage.cards.m.MazeOfShadows.class));
- cards.add(new SetCardInfo("Meditate", 76, Rarity.RARE, mage.cards.m.Meditate.class));
- cards.add(new SetCardInfo("Metallic Sliver", 297, Rarity.COMMON, mage.cards.m.MetallicSliver.class));
- cards.add(new SetCardInfo("Mindwhip Sliver", 145, Rarity.UNCOMMON, mage.cards.m.MindwhipSliver.class));
- cards.add(new SetCardInfo("Minion of the Wastes", 146, Rarity.RARE, mage.cards.m.MinionOfTheWastes.class));
- cards.add(new SetCardInfo("Mirri's Guile", 236, Rarity.RARE, mage.cards.m.MirrisGuile.class));
- cards.add(new SetCardInfo("Mnemonic Sliver", 77, Rarity.UNCOMMON, mage.cards.m.MnemonicSliver.class));
- cards.add(new SetCardInfo("Mogg Cannon", 298, Rarity.UNCOMMON, mage.cards.m.MoggCannon.class));
- cards.add(new SetCardInfo("Mogg Conscripts", 189, Rarity.COMMON, mage.cards.m.MoggConscripts.class));
- cards.add(new SetCardInfo("Mogg Fanatic", 190, Rarity.COMMON, mage.cards.m.MoggFanatic.class));
- cards.add(new SetCardInfo("Mogg Hollows", 320, Rarity.UNCOMMON, mage.cards.m.MoggHollows.class));
- cards.add(new SetCardInfo("Mogg Raider", 191, Rarity.COMMON, mage.cards.m.MoggRaider.class));
- cards.add(new SetCardInfo("Mogg Squad", 192, Rarity.COMMON, mage.cards.m.MoggSquad.class));
- cards.add(new SetCardInfo("Mongrel Pack", 237, Rarity.RARE, mage.cards.m.MongrelPack.class));
- cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mounted Archers", 30, Rarity.COMMON, mage.cards.m.MountedArchers.class));
- cards.add(new SetCardInfo("Muscle Sliver", 238, Rarity.COMMON, mage.cards.m.MuscleSliver.class));
- cards.add(new SetCardInfo("Natural Spring", 239, Rarity.COMMON, mage.cards.n.NaturalSpring.class));
- cards.add(new SetCardInfo("Nature's Revolt", 240, Rarity.RARE, mage.cards.n.NaturesRevolt.class));
- cards.add(new SetCardInfo("Needle Storm", 241, Rarity.UNCOMMON, mage.cards.n.NeedleStorm.class));
- cards.add(new SetCardInfo("Nurturing Licid", 242, Rarity.UNCOMMON, mage.cards.n.NurturingLicid.class));
- cards.add(new SetCardInfo("Opportunist", 194, Rarity.UNCOMMON, mage.cards.o.Opportunist.class));
- cards.add(new SetCardInfo("Oracle en-Vec", 31, Rarity.RARE, mage.cards.o.OracleEnVec.class));
- cards.add(new SetCardInfo("Orim's Prayer", 32, Rarity.UNCOMMON, mage.cards.o.OrimsPrayer.class));
- cards.add(new SetCardInfo("Orim, Samite Healer", 33, Rarity.RARE, mage.cards.o.OrimSamiteHealer.class));
- cards.add(new SetCardInfo("Overrun", 243, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
- cards.add(new SetCardInfo("Pacifism", 34, Rarity.COMMON, mage.cards.p.Pacifism.class));
- cards.add(new SetCardInfo("Pallimud", 195, Rarity.RARE, mage.cards.p.Pallimud.class));
- cards.add(new SetCardInfo("Patchwork Gnomes", 299, Rarity.UNCOMMON, mage.cards.p.PatchworkGnomes.class));
- cards.add(new SetCardInfo("Pearl Medallion", 300, Rarity.RARE, mage.cards.p.PearlMedallion.class));
- cards.add(new SetCardInfo("Pegasus Refuge", 35, Rarity.RARE, mage.cards.p.PegasusRefuge.class));
- cards.add(new SetCardInfo("Perish", 147, Rarity.UNCOMMON, mage.cards.p.Perish.class));
- cards.add(new SetCardInfo("Phyrexian Grimoire", 301, Rarity.RARE, mage.cards.p.PhyrexianGrimoire.class));
- cards.add(new SetCardInfo("Phyrexian Hulk", 302, Rarity.UNCOMMON, mage.cards.p.PhyrexianHulk.class));
- cards.add(new SetCardInfo("Pincher Beetles", 244, Rarity.COMMON, mage.cards.p.PincherBeetles.class));
- cards.add(new SetCardInfo("Pine Barrens", 321, Rarity.RARE, mage.cards.p.PineBarrens.class));
- cards.add(new SetCardInfo("Pit Imp", 148, Rarity.COMMON, mage.cards.p.PitImp.class));
- cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Power Sink", 78, Rarity.COMMON, mage.cards.p.PowerSink.class));
- cards.add(new SetCardInfo("Precognition", 79, Rarity.RARE, mage.cards.p.Precognition.class));
- cards.add(new SetCardInfo("Propaganda", 80, Rarity.UNCOMMON, mage.cards.p.Propaganda.class));
- cards.add(new SetCardInfo("Puppet Strings", 304, Rarity.UNCOMMON, mage.cards.p.PuppetStrings.class));
- cards.add(new SetCardInfo("Quickening Licid", 36, Rarity.UNCOMMON, mage.cards.q.QuickeningLicid.class));
- cards.add(new SetCardInfo("Rain of Tears", 149, Rarity.UNCOMMON, mage.cards.r.RainOfTears.class));
- cards.add(new SetCardInfo("Rampant Growth", 245, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
- cards.add(new SetCardInfo("Ranger en-Vec", 268, Rarity.UNCOMMON, mage.cards.r.RangerEnVec.class));
- cards.add(new SetCardInfo("Rathi Dragon", 196, Rarity.RARE, mage.cards.r.RathiDragon.class));
- cards.add(new SetCardInfo("Rats of Rath", 150, Rarity.COMMON, mage.cards.r.RatsOfRath.class));
- cards.add(new SetCardInfo("Reality Anchor", 246, Rarity.COMMON, mage.cards.r.RealityAnchor.class));
- cards.add(new SetCardInfo("Reanimate", 151, Rarity.UNCOMMON, mage.cards.r.Reanimate.class));
- cards.add(new SetCardInfo("Reap", 247, Rarity.UNCOMMON, mage.cards.r.Reap.class));
- cards.add(new SetCardInfo("Reckless Spite", 152, Rarity.UNCOMMON, mage.cards.r.RecklessSpite.class));
- cards.add(new SetCardInfo("Recycle", 248, Rarity.RARE, mage.cards.r.Recycle.class));
- cards.add(new SetCardInfo("Reflecting Pool", 322, Rarity.RARE, mage.cards.r.ReflectingPool.class));
- cards.add(new SetCardInfo("Renegade Warlord", 197, Rarity.UNCOMMON, mage.cards.r.RenegadeWarlord.class));
- cards.add(new SetCardInfo("Repentance", 37, Rarity.UNCOMMON, mage.cards.r.Repentance.class));
- cards.add(new SetCardInfo("Respite", 249, Rarity.COMMON, mage.cards.r.Respite.class));
- cards.add(new SetCardInfo("Rolling Thunder", 198, Rarity.COMMON, mage.cards.r.RollingThunder.class));
- cards.add(new SetCardInfo("Root Maze", 250, Rarity.RARE, mage.cards.r.RootMaze.class));
- cards.add(new SetCardInfo("Rootbreaker Wurm", 251, Rarity.COMMON, mage.cards.r.RootbreakerWurm.class));
- cards.add(new SetCardInfo("Rootwalla", 252, Rarity.COMMON, mage.cards.r.Rootwalla.class));
- cards.add(new SetCardInfo("Rootwater Depths", 323, Rarity.UNCOMMON, mage.cards.r.RootwaterDepths.class));
- cards.add(new SetCardInfo("Rootwater Diver", 81, Rarity.UNCOMMON, mage.cards.r.RootwaterDiver.class));
- cards.add(new SetCardInfo("Rootwater Hunter", 82, Rarity.COMMON, mage.cards.r.RootwaterHunter.class));
- cards.add(new SetCardInfo("Rootwater Matriarch", 83, Rarity.RARE, mage.cards.r.RootwaterMatriarch.class));
- cards.add(new SetCardInfo("Rootwater Shaman", 84, Rarity.RARE, mage.cards.r.RootwaterShaman.class));
- cards.add(new SetCardInfo("Ruby Medallion", 305, Rarity.RARE, mage.cards.r.RubyMedallion.class));
- cards.add(new SetCardInfo("Sacred Guide", 38, Rarity.RARE, mage.cards.s.SacredGuide.class));
- cards.add(new SetCardInfo("Sadistic Glee", 153, Rarity.COMMON, mage.cards.s.SadisticGlee.class));
- cards.add(new SetCardInfo("Safeguard", 39, Rarity.RARE, mage.cards.s.Safeguard.class));
- cards.add(new SetCardInfo("Salt Flats", 324, Rarity.RARE, mage.cards.s.SaltFlats.class));
- cards.add(new SetCardInfo("Sandstone Warrior", 199, Rarity.COMMON, mage.cards.s.SandstoneWarrior.class));
- cards.add(new SetCardInfo("Sapphire Medallion", 306, Rarity.RARE, mage.cards.s.SapphireMedallion.class));
- cards.add(new SetCardInfo("Sarcomancy", 154, Rarity.RARE, mage.cards.s.Sarcomancy.class));
- cards.add(new SetCardInfo("Scabland", 325, Rarity.RARE, mage.cards.s.Scabland.class));
- cards.add(new SetCardInfo("Scalding Tongs", 307, Rarity.RARE, mage.cards.s.ScaldingTongs.class));
- cards.add(new SetCardInfo("Scorched Earth", 200, Rarity.RARE, mage.cards.s.ScorchedEarth.class));
- cards.add(new SetCardInfo("Scragnoth", 253, Rarity.UNCOMMON, mage.cards.s.Scragnoth.class));
- cards.add(new SetCardInfo("Screeching Harpy", 155, Rarity.UNCOMMON, mage.cards.s.ScreechingHarpy.class));
- cards.add(new SetCardInfo("Scroll Rack", 308, Rarity.RARE, mage.cards.s.ScrollRack.class));
- cards.add(new SetCardInfo("Sea Monster", 85, Rarity.COMMON, mage.cards.s.SeaMonster.class));
- cards.add(new SetCardInfo("Searing Touch", 201, Rarity.UNCOMMON, mage.cards.s.SearingTouch.class));
- cards.add(new SetCardInfo("Seeker of Skybreak", 254, Rarity.COMMON, mage.cards.s.SeekerOfSkybreak.class));
- cards.add(new SetCardInfo("Segmented Wurm", 269, Rarity.UNCOMMON, mage.cards.s.SegmentedWurm.class));
- cards.add(new SetCardInfo("Selenia, Dark Angel", 270, Rarity.RARE, mage.cards.s.SeleniaDarkAngel.class));
- cards.add(new SetCardInfo("Serene Offering", 40, Rarity.UNCOMMON, mage.cards.s.SereneOffering.class));
- cards.add(new SetCardInfo("Servant of Volrath", 156, Rarity.COMMON, mage.cards.s.ServantOfVolrath.class));
- cards.add(new SetCardInfo("Shadow Rift", 86, Rarity.COMMON, mage.cards.s.ShadowRift.class));
- cards.add(new SetCardInfo("Shadowstorm", 202, Rarity.UNCOMMON, mage.cards.s.Shadowstorm.class));
- cards.add(new SetCardInfo("Shatter", 203, Rarity.COMMON, mage.cards.s.Shatter.class));
- cards.add(new SetCardInfo("Shimmering Wings", 87, Rarity.COMMON, mage.cards.s.ShimmeringWings.class));
- cards.add(new SetCardInfo("Shocker", 204, Rarity.RARE, mage.cards.s.Shocker.class));
- cards.add(new SetCardInfo("Sky Spirit", 271, Rarity.UNCOMMON, mage.cards.s.SkySpirit.class));
- cards.add(new SetCardInfo("Skyshroud Condor", 88, Rarity.UNCOMMON, mage.cards.s.SkyshroudCondor.class));
- cards.add(new SetCardInfo("Skyshroud Elf", 255, Rarity.COMMON, mage.cards.s.SkyshroudElf.class));
- cards.add(new SetCardInfo("Skyshroud Forest", 326, Rarity.RARE, mage.cards.s.SkyshroudForest.class));
- cards.add(new SetCardInfo("Skyshroud Ranger", 256, Rarity.COMMON, mage.cards.s.SkyshroudRanger.class));
- cards.add(new SetCardInfo("Skyshroud Troll", 257, Rarity.COMMON, mage.cards.s.SkyshroudTroll.class));
- cards.add(new SetCardInfo("Skyshroud Vampire", 157, Rarity.UNCOMMON, mage.cards.s.SkyshroudVampire.class));
- cards.add(new SetCardInfo("Soltari Crusader", 41, Rarity.UNCOMMON, mage.cards.s.SoltariCrusader.class));
- cards.add(new SetCardInfo("Soltari Emissary", 42, Rarity.RARE, mage.cards.s.SoltariEmissary.class));
- cards.add(new SetCardInfo("Soltari Foot Soldier", 43, Rarity.COMMON, mage.cards.s.SoltariFootSoldier.class));
- cards.add(new SetCardInfo("Soltari Guerrillas", 272, Rarity.RARE, mage.cards.s.SoltariGuerrillas.class));
- cards.add(new SetCardInfo("Soltari Lancer", 44, Rarity.COMMON, mage.cards.s.SoltariLancer.class));
- cards.add(new SetCardInfo("Soltari Monk", 45, Rarity.UNCOMMON, mage.cards.s.SoltariMonk.class));
- cards.add(new SetCardInfo("Soltari Priest", 46, Rarity.UNCOMMON, mage.cards.s.SoltariPriest.class));
- cards.add(new SetCardInfo("Soltari Trooper", 47, Rarity.COMMON, mage.cards.s.SoltariTrooper.class));
- cards.add(new SetCardInfo("Souldrinker", 158, Rarity.UNCOMMON, mage.cards.s.Souldrinker.class));
- cards.add(new SetCardInfo("Spell Blast", 89, Rarity.COMMON, mage.cards.s.SpellBlast.class));
- cards.add(new SetCardInfo("Spike Drone", 258, Rarity.COMMON, mage.cards.s.SpikeDrone.class));
- cards.add(new SetCardInfo("Spinal Graft", 159, Rarity.COMMON, mage.cards.s.SpinalGraft.class));
- cards.add(new SetCardInfo("Spirit Mirror", 48, Rarity.RARE, mage.cards.s.SpiritMirror.class));
- cards.add(new SetCardInfo("Spontaneous Combustion", 273, Rarity.UNCOMMON, mage.cards.s.SpontaneousCombustion.class));
- cards.add(new SetCardInfo("Squee's Toy", 309, Rarity.COMMON, mage.cards.s.SqueesToy.class));
- cards.add(new SetCardInfo("Stalking Stones", 327, Rarity.UNCOMMON, mage.cards.s.StalkingStones.class));
- cards.add(new SetCardInfo("Starke of Rath", 205, Rarity.RARE, mage.cards.s.StarkeOfRath.class));
- cards.add(new SetCardInfo("Static Orb", 310, Rarity.RARE, mage.cards.s.StaticOrb.class));
- cards.add(new SetCardInfo("Staunch Defenders", 49, Rarity.UNCOMMON, mage.cards.s.StaunchDefenders.class));
- cards.add(new SetCardInfo("Steal Enchantment", 90, Rarity.UNCOMMON, mage.cards.s.StealEnchantment.class));
- cards.add(new SetCardInfo("Stinging Licid", 91, Rarity.UNCOMMON, mage.cards.s.StingingLicid.class));
- cards.add(new SetCardInfo("Stone Rain", 206, Rarity.COMMON, mage.cards.s.StoneRain.class));
- cards.add(new SetCardInfo("Storm Front", 259, Rarity.UNCOMMON, mage.cards.s.StormFront.class));
- cards.add(new SetCardInfo("Stun", 207, Rarity.COMMON, mage.cards.s.Stun.class));
- cards.add(new SetCardInfo("Sudden Impact", 208, Rarity.UNCOMMON, mage.cards.s.SuddenImpact.class));
- cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Tahngarth's Rage", 209, Rarity.UNCOMMON, mage.cards.t.TahngarthsRage.class));
- cards.add(new SetCardInfo("Talon Sliver", 50, Rarity.COMMON, mage.cards.t.TalonSliver.class));
- cards.add(new SetCardInfo("Telethopter", 311, Rarity.UNCOMMON, mage.cards.t.Telethopter.class));
- cards.add(new SetCardInfo("Thalakos Dreamsower", 92, Rarity.UNCOMMON, mage.cards.t.ThalakosDreamsower.class));
- cards.add(new SetCardInfo("Thalakos Lowlands", 328, Rarity.UNCOMMON, mage.cards.t.ThalakosLowlands.class));
- cards.add(new SetCardInfo("Thalakos Mistfolk", 93, Rarity.COMMON, mage.cards.t.ThalakosMistfolk.class));
- cards.add(new SetCardInfo("Thalakos Seer", 94, Rarity.COMMON, mage.cards.t.ThalakosSeer.class));
- cards.add(new SetCardInfo("Thalakos Sentry", 95, Rarity.COMMON, mage.cards.t.ThalakosSentry.class));
- cards.add(new SetCardInfo("Thumbscrews", 312, Rarity.RARE, mage.cards.t.Thumbscrews.class));
- cards.add(new SetCardInfo("Time Ebb", 96, Rarity.COMMON, mage.cards.t.TimeEbb.class));
- cards.add(new SetCardInfo("Time Warp", 97, Rarity.RARE, mage.cards.t.TimeWarp.class));
- cards.add(new SetCardInfo("Tooth and Claw", 210, Rarity.RARE, mage.cards.t.ToothAndClaw.class));
- cards.add(new SetCardInfo("Torture Chamber", 313, Rarity.RARE, mage.cards.t.TortureChamber.class));
- cards.add(new SetCardInfo("Tradewind Rider", 98, Rarity.RARE, mage.cards.t.TradewindRider.class));
- cards.add(new SetCardInfo("Trained Armodon", 260, Rarity.COMMON, mage.cards.t.TrainedArmodon.class));
- cards.add(new SetCardInfo("Tranquility", 261, Rarity.COMMON, mage.cards.t.Tranquility.class));
- cards.add(new SetCardInfo("Trumpeting Armodon", 262, Rarity.UNCOMMON, mage.cards.t.TrumpetingArmodon.class));
- cards.add(new SetCardInfo("Twitch", 99, Rarity.COMMON, mage.cards.t.Twitch.class));
- cards.add(new SetCardInfo("Unstable Shapeshifter", 100, Rarity.RARE, mage.cards.u.UnstableShapeshifter.class));
- cards.add(new SetCardInfo("Vec Townships", 329, Rarity.UNCOMMON, mage.cards.v.VecTownships.class));
- cards.add(new SetCardInfo("Verdant Force", 263, Rarity.RARE, mage.cards.v.VerdantForce.class));
- cards.add(new SetCardInfo("Verdigris", 264, Rarity.UNCOMMON, mage.cards.v.Verdigris.class));
- cards.add(new SetCardInfo("Vhati il-Dal", 274, Rarity.RARE, mage.cards.v.VhatiIlDal.class));
- cards.add(new SetCardInfo("Volrath's Curse", 101, Rarity.COMMON, mage.cards.v.VolrathsCurse.class));
- cards.add(new SetCardInfo("Wall of Diffusion", 211, Rarity.COMMON, mage.cards.w.WallOfDiffusion.class));
- cards.add(new SetCardInfo("Warmth", 51, Rarity.UNCOMMON, mage.cards.w.Warmth.class));
- cards.add(new SetCardInfo("Wasteland", 330, Rarity.UNCOMMON, mage.cards.w.Wasteland.class));
- cards.add(new SetCardInfo("Watchdog", 314, Rarity.UNCOMMON, mage.cards.w.Watchdog.class));
- cards.add(new SetCardInfo("Whispers of the Muse", 103, Rarity.UNCOMMON, mage.cards.w.WhispersOfTheMuse.class));
- cards.add(new SetCardInfo("Wild Wurm", 212, Rarity.UNCOMMON, mage.cards.w.WildWurm.class));
- cards.add(new SetCardInfo("Wind Dancer", 104, Rarity.UNCOMMON, mage.cards.w.WindDancer.class));
- cards.add(new SetCardInfo("Wind Drake", 105, Rarity.COMMON, mage.cards.w.WindDrake.class));
- cards.add(new SetCardInfo("Winds of Rath", 52, Rarity.RARE, mage.cards.w.WindsOfRath.class));
- cards.add(new SetCardInfo("Winged Sliver", 106, Rarity.COMMON, mage.cards.w.WingedSliver.class));
- cards.add(new SetCardInfo("Winter's Grasp", 265, Rarity.UNCOMMON, mage.cards.w.WintersGrasp.class));
- cards.add(new SetCardInfo("Wood Sage", 275, Rarity.RARE, mage.cards.w.WoodSage.class));
- cards.add(new SetCardInfo("Worthy Cause", 53, Rarity.UNCOMMON, mage.cards.w.WorthyCause.class));
- }
-}
+package mage.sets;
+
+import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+public final class Tempest extends ExpansionSet {
+
+ private static final Tempest instance = new Tempest();
+
+ public static Tempest getInstance() {
+ return instance;
+ }
+
+ private Tempest() {
+ super("Tempest", "TMP", ExpansionSet.buildDate(1997, 10, 1), SetType.EXPANSION);
+ this.blockName = "Tempest";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Abandon Hope", 107, Rarity.UNCOMMON, mage.cards.a.AbandonHope.class));
+ cards.add(new SetCardInfo("Advance Scout", 1, Rarity.COMMON, mage.cards.a.AdvanceScout.class));
+ cards.add(new SetCardInfo("Aftershock", 160, Rarity.COMMON, mage.cards.a.Aftershock.class));
+ cards.add(new SetCardInfo("Altar of Dementia", 276, Rarity.RARE, mage.cards.a.AltarOfDementia.class));
+ cards.add(new SetCardInfo("Aluren", 213, Rarity.RARE, mage.cards.a.Aluren.class));
+ cards.add(new SetCardInfo("Ancient Runes", 161, Rarity.UNCOMMON, mage.cards.a.AncientRunes.class));
+ cards.add(new SetCardInfo("Ancient Tomb", 315, Rarity.UNCOMMON, mage.cards.a.AncientTomb.class));
+ cards.add(new SetCardInfo("Angelic Protector", 2, Rarity.UNCOMMON, mage.cards.a.AngelicProtector.class));
+ cards.add(new SetCardInfo("Anoint", 3, Rarity.COMMON, mage.cards.a.Anoint.class));
+ cards.add(new SetCardInfo("Apes of Rath", 214, Rarity.UNCOMMON, mage.cards.a.ApesOfRath.class));
+ cards.add(new SetCardInfo("Apocalypse", 162, Rarity.RARE, mage.cards.a.Apocalypse.class));
+ cards.add(new SetCardInfo("Armor Sliver", 4, Rarity.UNCOMMON, mage.cards.a.ArmorSliver.class));
+ cards.add(new SetCardInfo("Armored Pegasus", 5, Rarity.COMMON, mage.cards.a.ArmoredPegasus.class));
+ cards.add(new SetCardInfo("Auratog", 6, Rarity.RARE, mage.cards.a.Auratog.class));
+ cards.add(new SetCardInfo("Avenging Angel", 7, Rarity.RARE, mage.cards.a.AvengingAngel.class));
+ cards.add(new SetCardInfo("Barbed Sliver", 163, Rarity.UNCOMMON, mage.cards.b.BarbedSliver.class));
+ cards.add(new SetCardInfo("Bayou Dragonfly", 215, Rarity.COMMON, mage.cards.b.BayouDragonfly.class));
+ cards.add(new SetCardInfo("Bellowing Fiend", 108, Rarity.RARE, mage.cards.b.BellowingFiend.class));
+ cards.add(new SetCardInfo("Benthic Behemoth", 54, Rarity.RARE, mage.cards.b.BenthicBehemoth.class));
+ cards.add(new SetCardInfo("Blood Frenzy", 164, Rarity.COMMON, mage.cards.b.BloodFrenzy.class));
+ cards.add(new SetCardInfo("Blood Pet", 109, Rarity.COMMON, mage.cards.b.BloodPet.class));
+ cards.add(new SetCardInfo("Boil", 165, Rarity.UNCOMMON, mage.cards.b.Boil.class));
+ cards.add(new SetCardInfo("Bottle Gnomes", 278, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class));
+ cards.add(new SetCardInfo("Bounty Hunter", 110, Rarity.RARE, mage.cards.b.BountyHunter.class));
+ cards.add(new SetCardInfo("Broken Fall", 216, Rarity.COMMON, mage.cards.b.BrokenFall.class));
+ cards.add(new SetCardInfo("Caldera Lake", 316, Rarity.RARE, mage.cards.c.CalderaLake.class));
+ cards.add(new SetCardInfo("Canopy Spider", 217, Rarity.COMMON, mage.cards.c.CanopySpider.class));
+ cards.add(new SetCardInfo("Canyon Drake", 166, Rarity.RARE, mage.cards.c.CanyonDrake.class));
+ cards.add(new SetCardInfo("Canyon Wildcat", 167, Rarity.COMMON, mage.cards.c.CanyonWildcat.class));
+ cards.add(new SetCardInfo("Capsize", 55, Rarity.COMMON, mage.cards.c.Capsize.class));
+ cards.add(new SetCardInfo("Carrionette", 111, Rarity.RARE, mage.cards.c.Carrionette.class));
+ cards.add(new SetCardInfo("Chaotic Goo", 168, Rarity.RARE, mage.cards.c.ChaoticGoo.class));
+ cards.add(new SetCardInfo("Charging Rhino", 218, Rarity.UNCOMMON, mage.cards.c.ChargingRhino.class));
+ cards.add(new SetCardInfo("Chill", 56, Rarity.UNCOMMON, mage.cards.c.Chill.class));
+ cards.add(new SetCardInfo("Choke", 219, Rarity.UNCOMMON, mage.cards.c.Choke.class));
+ cards.add(new SetCardInfo("Cinder Marsh", 317, Rarity.UNCOMMON, mage.cards.c.CinderMarsh.class));
+ cards.add(new SetCardInfo("Circle of Protection: Black", 8, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class));
+ cards.add(new SetCardInfo("Circle of Protection: Blue", 9, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlue.class));
+ cards.add(new SetCardInfo("Circle of Protection: Green", 10, Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class));
+ cards.add(new SetCardInfo("Circle of Protection: Red", 11, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class));
+ cards.add(new SetCardInfo("Circle of Protection: Shadow", 12, Rarity.COMMON, mage.cards.c.CircleOfProtectionShadow.class));
+ cards.add(new SetCardInfo("Circle of Protection: White", 13, Rarity.COMMON, mage.cards.c.CircleOfProtectionWhite.class));
+ cards.add(new SetCardInfo("Clergy en-Vec", 14, Rarity.COMMON, mage.cards.c.ClergyEnVec.class));
+ cards.add(new SetCardInfo("Clot Sliver", 112, Rarity.COMMON, mage.cards.c.ClotSliver.class));
+ cards.add(new SetCardInfo("Cloudchaser Eagle", 15, Rarity.COMMON, mage.cards.c.CloudchaserEagle.class));
+ cards.add(new SetCardInfo("Coercion", 113, Rarity.COMMON, mage.cards.c.Coercion.class));
+ cards.add(new SetCardInfo("Coffin Queen", 114, Rarity.RARE, mage.cards.c.CoffinQueen.class));
+ cards.add(new SetCardInfo("Coiled Tinviper", 279, Rarity.COMMON, mage.cards.c.CoiledTinviper.class));
+ cards.add(new SetCardInfo("Cold Storage", 280, Rarity.RARE, mage.cards.c.ColdStorage.class));
+ cards.add(new SetCardInfo("Commander Greven il-Vec", 115, Rarity.RARE, mage.cards.c.CommanderGrevenIlVec.class));
+ cards.add(new SetCardInfo("Corpse Dance", 116, Rarity.RARE, mage.cards.c.CorpseDance.class));
+ cards.add(new SetCardInfo("Counterspell", 57, Rarity.COMMON, mage.cards.c.Counterspell.class));
+ cards.add(new SetCardInfo("Crazed Armodon", 220, Rarity.RARE, mage.cards.c.CrazedArmodon.class));
+ cards.add(new SetCardInfo("Crown of Flames", 169, Rarity.COMMON, mage.cards.c.CrownOfFlames.class));
+ cards.add(new SetCardInfo("Cursed Scroll", 281, Rarity.RARE, mage.cards.c.CursedScroll.class));
+ cards.add(new SetCardInfo("Dark Banishing", 117, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
+ cards.add(new SetCardInfo("Dark Ritual", 118, Rarity.COMMON, mage.cards.d.DarkRitual.class));
+ cards.add(new SetCardInfo("Darkling Stalker", 119, Rarity.COMMON, mage.cards.d.DarklingStalker.class));
+ cards.add(new SetCardInfo("Dauthi Embrace", 120, Rarity.UNCOMMON, mage.cards.d.DauthiEmbrace.class));
+ cards.add(new SetCardInfo("Dauthi Ghoul", 121, Rarity.UNCOMMON, mage.cards.d.DauthiGhoul.class));
+ cards.add(new SetCardInfo("Dauthi Horror", 122, Rarity.COMMON, mage.cards.d.DauthiHorror.class));
+ cards.add(new SetCardInfo("Dauthi Marauder", 123, Rarity.COMMON, mage.cards.d.DauthiMarauder.class));
+ cards.add(new SetCardInfo("Dauthi Mercenary", 124, Rarity.UNCOMMON, mage.cards.d.DauthiMercenary.class));
+ cards.add(new SetCardInfo("Dauthi Mindripper", 125, Rarity.UNCOMMON, mage.cards.d.DauthiMindripper.class));
+ cards.add(new SetCardInfo("Dauthi Slayer", 126, Rarity.COMMON, mage.cards.d.DauthiSlayer.class));
+ cards.add(new SetCardInfo("Deadshot", 170, Rarity.RARE, mage.cards.d.Deadshot.class));
+ cards.add(new SetCardInfo("Death Pits of Rath", 127, Rarity.RARE, mage.cards.d.DeathPitsOfRath.class));
+ cards.add(new SetCardInfo("Diabolic Edict", 128, Rarity.COMMON, mage.cards.d.DiabolicEdict.class));
+ cards.add(new SetCardInfo("Dirtcowl Wurm", 221, Rarity.RARE, mage.cards.d.DirtcowlWurm.class));
+ cards.add(new SetCardInfo("Disenchant", 16, Rarity.COMMON, mage.cards.d.Disenchant.class));
+ cards.add(new SetCardInfo("Dismiss", 58, Rarity.UNCOMMON, mage.cards.d.Dismiss.class));
+ cards.add(new SetCardInfo("Disturbed Burial", 129, Rarity.COMMON, mage.cards.d.DisturbedBurial.class));
+ cards.add(new SetCardInfo("Dracoplasm", 266, Rarity.RARE, mage.cards.d.Dracoplasm.class));
+ cards.add(new SetCardInfo("Dread of Night", 130, Rarity.UNCOMMON, mage.cards.d.DreadOfNight.class));
+ cards.add(new SetCardInfo("Dream Cache", 59, Rarity.COMMON, mage.cards.d.DreamCache.class));
+ cards.add(new SetCardInfo("Dregs of Sorrow", 131, Rarity.RARE, mage.cards.d.DregsOfSorrow.class));
+ cards.add(new SetCardInfo("Earthcraft", 222, Rarity.RARE, mage.cards.e.Earthcraft.class));
+ cards.add(new SetCardInfo("Echo Chamber", 282, Rarity.RARE, mage.cards.e.EchoChamber.class));
+ cards.add(new SetCardInfo("Eladamri's Vineyard", 223, Rarity.RARE, mage.cards.e.EladamrisVineyard.class));
+ cards.add(new SetCardInfo("Eladamri, Lord of Leaves", 224, Rarity.RARE, mage.cards.e.EladamriLordOfLeaves.class));
+ cards.add(new SetCardInfo("Elite Javelineer", 17, Rarity.COMMON, mage.cards.e.EliteJavelineer.class));
+ cards.add(new SetCardInfo("Elven Warhounds", 225, Rarity.RARE, mage.cards.e.ElvenWarhounds.class));
+ cards.add(new SetCardInfo("Elvish Fury", 226, Rarity.UNCOMMON, mage.cards.e.ElvishFury.class));
+ cards.add(new SetCardInfo("Emerald Medallion", 283, Rarity.RARE, mage.cards.e.EmeraldMedallion.class));
+ cards.add(new SetCardInfo("Emmessi Tome", 284, Rarity.RARE, mage.cards.e.EmmessiTome.class));
+ cards.add(new SetCardInfo("Endless Scream", 132, Rarity.COMMON, mage.cards.e.EndlessScream.class));
+ cards.add(new SetCardInfo("Energizer", 285, Rarity.RARE, mage.cards.e.Energizer.class));
+ cards.add(new SetCardInfo("Enfeeblement", 133, Rarity.COMMON, mage.cards.e.Enfeeblement.class));
+ cards.add(new SetCardInfo("Enraging Licid", 171, Rarity.UNCOMMON, mage.cards.e.EnragingLicid.class));
+ cards.add(new SetCardInfo("Essence Bottle", 286, Rarity.UNCOMMON, mage.cards.e.EssenceBottle.class));
+ cards.add(new SetCardInfo("Evincar's Justice", 134, Rarity.COMMON, mage.cards.e.EvincarsJustice.class));
+ cards.add(new SetCardInfo("Excavator", 287, Rarity.UNCOMMON, mage.cards.e.Excavator.class));
+ cards.add(new SetCardInfo("Extinction", 135, Rarity.RARE, mage.cards.e.Extinction.class));
+ cards.add(new SetCardInfo("Fevered Convulsions", 136, Rarity.RARE, mage.cards.f.FeveredConvulsions.class));
+ cards.add(new SetCardInfo("Field of Souls", 18, Rarity.RARE, mage.cards.f.FieldOfSouls.class));
+ cards.add(new SetCardInfo("Fighting Drake", 63, Rarity.UNCOMMON, mage.cards.f.FightingDrake.class));
+ cards.add(new SetCardInfo("Firefly", 172, Rarity.UNCOMMON, mage.cards.f.Firefly.class));
+ cards.add(new SetCardInfo("Fireslinger", 173, Rarity.COMMON, mage.cards.f.Fireslinger.class));
+ cards.add(new SetCardInfo("Flailing Drake", 227, Rarity.UNCOMMON, mage.cards.f.FlailingDrake.class));
+ cards.add(new SetCardInfo("Flickering Ward", 19, Rarity.UNCOMMON, mage.cards.f.FlickeringWard.class));
+ cards.add(new SetCardInfo("Flowstone Giant", 174, Rarity.COMMON, mage.cards.f.FlowstoneGiant.class));
+ cards.add(new SetCardInfo("Flowstone Salamander", 175, Rarity.UNCOMMON, mage.cards.f.FlowstoneSalamander.class));
+ cards.add(new SetCardInfo("Flowstone Sculpture", 288, Rarity.RARE, mage.cards.f.FlowstoneSculpture.class));
+ cards.add(new SetCardInfo("Flowstone Wyvern", 176, Rarity.RARE, mage.cards.f.FlowstoneWyvern.class));
+ cards.add(new SetCardInfo("Fool's Tome", 289, Rarity.RARE, mage.cards.f.FoolsTome.class));
+ cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Frog Tongue", 228, Rarity.COMMON, mage.cards.f.FrogTongue.class));
+ cards.add(new SetCardInfo("Fugitive Druid", 229, Rarity.RARE, mage.cards.f.FugitiveDruid.class));
+ cards.add(new SetCardInfo("Furnace of Rath", 177, Rarity.RARE, mage.cards.f.FurnaceOfRath.class));
+ cards.add(new SetCardInfo("Fylamarid", 64, Rarity.UNCOMMON, mage.cards.f.Fylamarid.class));
+ cards.add(new SetCardInfo("Gallantry", 20, Rarity.UNCOMMON, mage.cards.g.Gallantry.class));
+ cards.add(new SetCardInfo("Gaseous Form", 65, Rarity.COMMON, mage.cards.g.GaseousForm.class));
+ cards.add(new SetCardInfo("Gerrard's Battle Cry", 21, Rarity.RARE, mage.cards.g.GerrardsBattleCry.class));
+ cards.add(new SetCardInfo("Ghost Town", 318, Rarity.UNCOMMON, mage.cards.g.GhostTown.class));
+ cards.add(new SetCardInfo("Giant Crab", 66, Rarity.COMMON, mage.cards.g.GiantCrab.class));
+ cards.add(new SetCardInfo("Giant Strength", 178, Rarity.COMMON, mage.cards.g.GiantStrength.class));
+ cards.add(new SetCardInfo("Goblin Bombardment", 179, Rarity.UNCOMMON, mage.cards.g.GoblinBombardment.class));
+ cards.add(new SetCardInfo("Gravedigger", 137, Rarity.COMMON, mage.cards.g.Gravedigger.class));
+ cards.add(new SetCardInfo("Grindstone", 290, Rarity.RARE, mage.cards.g.Grindstone.class));
+ cards.add(new SetCardInfo("Hand to Hand", 180, Rarity.RARE, mage.cards.h.HandToHand.class));
+ cards.add(new SetCardInfo("Hanna's Custody", 22, Rarity.RARE, mage.cards.h.HannasCustody.class));
+ cards.add(new SetCardInfo("Harrow", 230, Rarity.UNCOMMON, mage.cards.h.Harrow.class));
+ cards.add(new SetCardInfo("Havoc", 181, Rarity.UNCOMMON, mage.cards.h.Havoc.class));
+ cards.add(new SetCardInfo("Heart Sliver", 182, Rarity.COMMON, mage.cards.h.HeartSliver.class));
+ cards.add(new SetCardInfo("Heartwood Dryad", 231, Rarity.COMMON, mage.cards.h.HeartwoodDryad.class));
+ cards.add(new SetCardInfo("Heartwood Giant", 232, Rarity.RARE, mage.cards.h.HeartwoodGiant.class));
+ cards.add(new SetCardInfo("Heartwood Treefolk", 233, Rarity.UNCOMMON, mage.cards.h.HeartwoodTreefolk.class));
+ cards.add(new SetCardInfo("Helm of Possession", 291, Rarity.RARE, mage.cards.h.HelmOfPossession.class));
+ cards.add(new SetCardInfo("Hero's Resolve", 23, Rarity.COMMON, mage.cards.h.HerosResolve.class));
+ cards.add(new SetCardInfo("Horned Sliver", 234, Rarity.UNCOMMON, mage.cards.h.HornedSliver.class));
+ cards.add(new SetCardInfo("Horned Turtle", 67, Rarity.COMMON, mage.cards.h.HornedTurtle.class));
+ cards.add(new SetCardInfo("Humility", 24, Rarity.RARE, mage.cards.h.Humility.class));
+ cards.add(new SetCardInfo("Imps' Taunt", 138, Rarity.UNCOMMON, mage.cards.i.ImpsTaunt.class));
+ cards.add(new SetCardInfo("Insight", 68, Rarity.UNCOMMON, mage.cards.i.Insight.class));
+ cards.add(new SetCardInfo("Interdict", 69, Rarity.UNCOMMON, mage.cards.i.Interdict.class));
+ cards.add(new SetCardInfo("Intuition", 70, Rarity.RARE, mage.cards.i.Intuition.class));
+ cards.add(new SetCardInfo("Invulnerability", 25, Rarity.UNCOMMON, mage.cards.i.Invulnerability.class));
+ cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Jackal Pup", 183, Rarity.UNCOMMON, mage.cards.j.JackalPup.class));
+ cards.add(new SetCardInfo("Jet Medallion", 292, Rarity.RARE, mage.cards.j.JetMedallion.class));
+ cards.add(new SetCardInfo("Jinxed Idol", 293, Rarity.RARE, mage.cards.j.JinxedIdol.class));
+ cards.add(new SetCardInfo("Kezzerdrix", 139, Rarity.RARE, mage.cards.k.Kezzerdrix.class));
+ cards.add(new SetCardInfo("Kindle", 184, Rarity.COMMON, mage.cards.k.Kindle.class));
+ cards.add(new SetCardInfo("Knight of Dawn", 26, Rarity.UNCOMMON, mage.cards.k.KnightOfDawn.class));
+ cards.add(new SetCardInfo("Knight of Dusk", 140, Rarity.UNCOMMON, mage.cards.k.KnightOfDusk.class));
+ cards.add(new SetCardInfo("Krakilin", 235, Rarity.UNCOMMON, mage.cards.k.Krakilin.class));
+ cards.add(new SetCardInfo("Leeching Licid", 141, Rarity.UNCOMMON, mage.cards.l.LeechingLicid.class));
+ cards.add(new SetCardInfo("Legacy's Allure", 71, Rarity.UNCOMMON, mage.cards.l.LegacysAllure.class));
+ cards.add(new SetCardInfo("Legerdemain", 72, Rarity.UNCOMMON, mage.cards.l.Legerdemain.class));
+ cards.add(new SetCardInfo("Light of Day", 27, Rarity.UNCOMMON, mage.cards.l.LightOfDay.class));
+ cards.add(new SetCardInfo("Lightning Blast", 185, Rarity.COMMON, mage.cards.l.LightningBlast.class));
+ cards.add(new SetCardInfo("Lightning Elemental", 186, Rarity.COMMON, mage.cards.l.LightningElemental.class));
+ cards.add(new SetCardInfo("Living Death", 142, Rarity.RARE, mage.cards.l.LivingDeath.class));
+ cards.add(new SetCardInfo("Lobotomy", 267, Rarity.UNCOMMON, mage.cards.l.Lobotomy.class));
+ cards.add(new SetCardInfo("Lotus Petal", 294, Rarity.COMMON, mage.cards.l.LotusPetal.class));
+ cards.add(new SetCardInfo("Lowland Giant", 187, Rarity.COMMON, mage.cards.l.LowlandGiant.class));
+ cards.add(new SetCardInfo("Maddening Imp", 143, Rarity.RARE, mage.cards.m.MaddeningImp.class));
+ cards.add(new SetCardInfo("Magmasaur", 188, Rarity.RARE, mage.cards.m.Magmasaur.class));
+ cards.add(new SetCardInfo("Mana Severance", 73, Rarity.RARE, mage.cards.m.ManaSeverance.class));
+ cards.add(new SetCardInfo("Manakin", 296, Rarity.COMMON, mage.cards.m.Manakin.class));
+ cards.add(new SetCardInfo("Manta Riders", 74, Rarity.COMMON, mage.cards.m.MantaRiders.class));
+ cards.add(new SetCardInfo("Marble Titan", 28, Rarity.RARE, mage.cards.m.MarbleTitan.class));
+ cards.add(new SetCardInfo("Marsh Lurker", 144, Rarity.COMMON, mage.cards.m.MarshLurker.class));
+ cards.add(new SetCardInfo("Master Decoy", 29, Rarity.COMMON, mage.cards.m.MasterDecoy.class));
+ cards.add(new SetCardInfo("Mawcor", 75, Rarity.RARE, mage.cards.m.Mawcor.class));
+ cards.add(new SetCardInfo("Maze of Shadows", 319, Rarity.UNCOMMON, mage.cards.m.MazeOfShadows.class));
+ cards.add(new SetCardInfo("Meditate", 76, Rarity.RARE, mage.cards.m.Meditate.class));
+ cards.add(new SetCardInfo("Metallic Sliver", 297, Rarity.COMMON, mage.cards.m.MetallicSliver.class));
+ cards.add(new SetCardInfo("Mindwhip Sliver", 145, Rarity.UNCOMMON, mage.cards.m.MindwhipSliver.class));
+ cards.add(new SetCardInfo("Minion of the Wastes", 146, Rarity.RARE, mage.cards.m.MinionOfTheWastes.class));
+ cards.add(new SetCardInfo("Mirri's Guile", 236, Rarity.RARE, mage.cards.m.MirrisGuile.class));
+ cards.add(new SetCardInfo("Mnemonic Sliver", 77, Rarity.UNCOMMON, mage.cards.m.MnemonicSliver.class));
+ cards.add(new SetCardInfo("Mogg Cannon", 298, Rarity.UNCOMMON, mage.cards.m.MoggCannon.class));
+ cards.add(new SetCardInfo("Mogg Conscripts", 189, Rarity.COMMON, mage.cards.m.MoggConscripts.class));
+ cards.add(new SetCardInfo("Mogg Fanatic", 190, Rarity.COMMON, mage.cards.m.MoggFanatic.class));
+ cards.add(new SetCardInfo("Mogg Hollows", 320, Rarity.UNCOMMON, mage.cards.m.MoggHollows.class));
+ cards.add(new SetCardInfo("Mogg Raider", 191, Rarity.COMMON, mage.cards.m.MoggRaider.class));
+ cards.add(new SetCardInfo("Mogg Squad", 192, Rarity.COMMON, mage.cards.m.MoggSquad.class));
+ cards.add(new SetCardInfo("Mongrel Pack", 237, Rarity.RARE, mage.cards.m.MongrelPack.class));
+ cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mounted Archers", 30, Rarity.COMMON, mage.cards.m.MountedArchers.class));
+ cards.add(new SetCardInfo("Muscle Sliver", 238, Rarity.COMMON, mage.cards.m.MuscleSliver.class));
+ cards.add(new SetCardInfo("Natural Spring", 239, Rarity.COMMON, mage.cards.n.NaturalSpring.class));
+ cards.add(new SetCardInfo("Nature's Revolt", 240, Rarity.RARE, mage.cards.n.NaturesRevolt.class));
+ cards.add(new SetCardInfo("Needle Storm", 241, Rarity.UNCOMMON, mage.cards.n.NeedleStorm.class));
+ cards.add(new SetCardInfo("Nurturing Licid", 242, Rarity.UNCOMMON, mage.cards.n.NurturingLicid.class));
+ cards.add(new SetCardInfo("Opportunist", 194, Rarity.UNCOMMON, mage.cards.o.Opportunist.class));
+ cards.add(new SetCardInfo("Oracle en-Vec", 31, Rarity.RARE, mage.cards.o.OracleEnVec.class));
+ cards.add(new SetCardInfo("Orim's Prayer", 32, Rarity.UNCOMMON, mage.cards.o.OrimsPrayer.class));
+ cards.add(new SetCardInfo("Orim, Samite Healer", 33, Rarity.RARE, mage.cards.o.OrimSamiteHealer.class));
+ cards.add(new SetCardInfo("Overrun", 243, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
+ cards.add(new SetCardInfo("Pacifism", 34, Rarity.COMMON, mage.cards.p.Pacifism.class));
+ cards.add(new SetCardInfo("Pallimud", 195, Rarity.RARE, mage.cards.p.Pallimud.class));
+ cards.add(new SetCardInfo("Patchwork Gnomes", 299, Rarity.UNCOMMON, mage.cards.p.PatchworkGnomes.class));
+ cards.add(new SetCardInfo("Pearl Medallion", 300, Rarity.RARE, mage.cards.p.PearlMedallion.class));
+ cards.add(new SetCardInfo("Pegasus Refuge", 35, Rarity.RARE, mage.cards.p.PegasusRefuge.class));
+ cards.add(new SetCardInfo("Perish", 147, Rarity.UNCOMMON, mage.cards.p.Perish.class));
+ cards.add(new SetCardInfo("Phyrexian Grimoire", 301, Rarity.RARE, mage.cards.p.PhyrexianGrimoire.class));
+ cards.add(new SetCardInfo("Phyrexian Hulk", 302, Rarity.UNCOMMON, mage.cards.p.PhyrexianHulk.class));
+ cards.add(new SetCardInfo("Pincher Beetles", 244, Rarity.COMMON, mage.cards.p.PincherBeetles.class));
+ cards.add(new SetCardInfo("Pine Barrens", 321, Rarity.RARE, mage.cards.p.PineBarrens.class));
+ cards.add(new SetCardInfo("Pit Imp", 148, Rarity.COMMON, mage.cards.p.PitImp.class));
+ cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Power Sink", 78, Rarity.COMMON, mage.cards.p.PowerSink.class));
+ cards.add(new SetCardInfo("Precognition", 79, Rarity.RARE, mage.cards.p.Precognition.class));
+ cards.add(new SetCardInfo("Propaganda", 80, Rarity.UNCOMMON, mage.cards.p.Propaganda.class));
+ cards.add(new SetCardInfo("Puppet Strings", 304, Rarity.UNCOMMON, mage.cards.p.PuppetStrings.class));
+ cards.add(new SetCardInfo("Quickening Licid", 36, Rarity.UNCOMMON, mage.cards.q.QuickeningLicid.class));
+ cards.add(new SetCardInfo("Rain of Tears", 149, Rarity.UNCOMMON, mage.cards.r.RainOfTears.class));
+ cards.add(new SetCardInfo("Rampant Growth", 245, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
+ cards.add(new SetCardInfo("Ranger en-Vec", 268, Rarity.UNCOMMON, mage.cards.r.RangerEnVec.class));
+ cards.add(new SetCardInfo("Rathi Dragon", 196, Rarity.RARE, mage.cards.r.RathiDragon.class));
+ cards.add(new SetCardInfo("Rats of Rath", 150, Rarity.COMMON, mage.cards.r.RatsOfRath.class));
+ cards.add(new SetCardInfo("Reality Anchor", 246, Rarity.COMMON, mage.cards.r.RealityAnchor.class));
+ cards.add(new SetCardInfo("Reanimate", 151, Rarity.UNCOMMON, mage.cards.r.Reanimate.class));
+ cards.add(new SetCardInfo("Reap", 247, Rarity.UNCOMMON, mage.cards.r.Reap.class));
+ cards.add(new SetCardInfo("Reckless Spite", 152, Rarity.UNCOMMON, mage.cards.r.RecklessSpite.class));
+ cards.add(new SetCardInfo("Recycle", 248, Rarity.RARE, mage.cards.r.Recycle.class));
+ cards.add(new SetCardInfo("Reflecting Pool", 322, Rarity.RARE, mage.cards.r.ReflectingPool.class));
+ cards.add(new SetCardInfo("Renegade Warlord", 197, Rarity.UNCOMMON, mage.cards.r.RenegadeWarlord.class));
+ cards.add(new SetCardInfo("Repentance", 37, Rarity.UNCOMMON, mage.cards.r.Repentance.class));
+ cards.add(new SetCardInfo("Respite", 249, Rarity.COMMON, mage.cards.r.Respite.class));
+ cards.add(new SetCardInfo("Rolling Thunder", 198, Rarity.COMMON, mage.cards.r.RollingThunder.class));
+ cards.add(new SetCardInfo("Root Maze", 250, Rarity.RARE, mage.cards.r.RootMaze.class));
+ cards.add(new SetCardInfo("Rootbreaker Wurm", 251, Rarity.COMMON, mage.cards.r.RootbreakerWurm.class));
+ cards.add(new SetCardInfo("Rootwalla", 252, Rarity.COMMON, mage.cards.r.Rootwalla.class));
+ cards.add(new SetCardInfo("Rootwater Depths", 323, Rarity.UNCOMMON, mage.cards.r.RootwaterDepths.class));
+ cards.add(new SetCardInfo("Rootwater Diver", 81, Rarity.UNCOMMON, mage.cards.r.RootwaterDiver.class));
+ cards.add(new SetCardInfo("Rootwater Hunter", 82, Rarity.COMMON, mage.cards.r.RootwaterHunter.class));
+ cards.add(new SetCardInfo("Rootwater Matriarch", 83, Rarity.RARE, mage.cards.r.RootwaterMatriarch.class));
+ cards.add(new SetCardInfo("Rootwater Shaman", 84, Rarity.RARE, mage.cards.r.RootwaterShaman.class));
+ cards.add(new SetCardInfo("Ruby Medallion", 305, Rarity.RARE, mage.cards.r.RubyMedallion.class));
+ cards.add(new SetCardInfo("Sacred Guide", 38, Rarity.RARE, mage.cards.s.SacredGuide.class));
+ cards.add(new SetCardInfo("Sadistic Glee", 153, Rarity.COMMON, mage.cards.s.SadisticGlee.class));
+ cards.add(new SetCardInfo("Safeguard", 39, Rarity.RARE, mage.cards.s.Safeguard.class));
+ cards.add(new SetCardInfo("Salt Flats", 324, Rarity.RARE, mage.cards.s.SaltFlats.class));
+ cards.add(new SetCardInfo("Sandstone Warrior", 199, Rarity.COMMON, mage.cards.s.SandstoneWarrior.class));
+ cards.add(new SetCardInfo("Sapphire Medallion", 306, Rarity.RARE, mage.cards.s.SapphireMedallion.class));
+ cards.add(new SetCardInfo("Sarcomancy", 154, Rarity.RARE, mage.cards.s.Sarcomancy.class));
+ cards.add(new SetCardInfo("Scabland", 325, Rarity.RARE, mage.cards.s.Scabland.class));
+ cards.add(new SetCardInfo("Scalding Tongs", 307, Rarity.RARE, mage.cards.s.ScaldingTongs.class));
+ cards.add(new SetCardInfo("Scorched Earth", 200, Rarity.RARE, mage.cards.s.ScorchedEarth.class));
+ cards.add(new SetCardInfo("Scragnoth", 253, Rarity.UNCOMMON, mage.cards.s.Scragnoth.class));
+ cards.add(new SetCardInfo("Screeching Harpy", 155, Rarity.UNCOMMON, mage.cards.s.ScreechingHarpy.class));
+ cards.add(new SetCardInfo("Scroll Rack", 308, Rarity.RARE, mage.cards.s.ScrollRack.class));
+ cards.add(new SetCardInfo("Sea Monster", 85, Rarity.COMMON, mage.cards.s.SeaMonster.class));
+ cards.add(new SetCardInfo("Searing Touch", 201, Rarity.UNCOMMON, mage.cards.s.SearingTouch.class));
+ cards.add(new SetCardInfo("Seeker of Skybreak", 254, Rarity.COMMON, mage.cards.s.SeekerOfSkybreak.class));
+ cards.add(new SetCardInfo("Segmented Wurm", 269, Rarity.UNCOMMON, mage.cards.s.SegmentedWurm.class));
+ cards.add(new SetCardInfo("Selenia, Dark Angel", 270, Rarity.RARE, mage.cards.s.SeleniaDarkAngel.class));
+ cards.add(new SetCardInfo("Serene Offering", 40, Rarity.UNCOMMON, mage.cards.s.SereneOffering.class));
+ cards.add(new SetCardInfo("Servant of Volrath", 156, Rarity.COMMON, mage.cards.s.ServantOfVolrath.class));
+ cards.add(new SetCardInfo("Shadow Rift", 86, Rarity.COMMON, mage.cards.s.ShadowRift.class));
+ cards.add(new SetCardInfo("Shadowstorm", 202, Rarity.UNCOMMON, mage.cards.s.Shadowstorm.class));
+ cards.add(new SetCardInfo("Shatter", 203, Rarity.COMMON, mage.cards.s.Shatter.class));
+ cards.add(new SetCardInfo("Shimmering Wings", 87, Rarity.COMMON, mage.cards.s.ShimmeringWings.class));
+ cards.add(new SetCardInfo("Shocker", 204, Rarity.RARE, mage.cards.s.Shocker.class));
+ cards.add(new SetCardInfo("Sky Spirit", 271, Rarity.UNCOMMON, mage.cards.s.SkySpirit.class));
+ cards.add(new SetCardInfo("Skyshroud Condor", 88, Rarity.UNCOMMON, mage.cards.s.SkyshroudCondor.class));
+ cards.add(new SetCardInfo("Skyshroud Elf", 255, Rarity.COMMON, mage.cards.s.SkyshroudElf.class));
+ cards.add(new SetCardInfo("Skyshroud Forest", 326, Rarity.RARE, mage.cards.s.SkyshroudForest.class));
+ cards.add(new SetCardInfo("Skyshroud Ranger", 256, Rarity.COMMON, mage.cards.s.SkyshroudRanger.class));
+ cards.add(new SetCardInfo("Skyshroud Troll", 257, Rarity.COMMON, mage.cards.s.SkyshroudTroll.class));
+ cards.add(new SetCardInfo("Skyshroud Vampire", 157, Rarity.UNCOMMON, mage.cards.s.SkyshroudVampire.class));
+ cards.add(new SetCardInfo("Soltari Crusader", 41, Rarity.UNCOMMON, mage.cards.s.SoltariCrusader.class));
+ cards.add(new SetCardInfo("Soltari Emissary", 42, Rarity.RARE, mage.cards.s.SoltariEmissary.class));
+ cards.add(new SetCardInfo("Soltari Foot Soldier", 43, Rarity.COMMON, mage.cards.s.SoltariFootSoldier.class));
+ cards.add(new SetCardInfo("Soltari Guerrillas", 272, Rarity.RARE, mage.cards.s.SoltariGuerrillas.class));
+ cards.add(new SetCardInfo("Soltari Lancer", 44, Rarity.COMMON, mage.cards.s.SoltariLancer.class));
+ cards.add(new SetCardInfo("Soltari Monk", 45, Rarity.UNCOMMON, mage.cards.s.SoltariMonk.class));
+ cards.add(new SetCardInfo("Soltari Priest", 46, Rarity.UNCOMMON, mage.cards.s.SoltariPriest.class));
+ cards.add(new SetCardInfo("Soltari Trooper", 47, Rarity.COMMON, mage.cards.s.SoltariTrooper.class));
+ cards.add(new SetCardInfo("Souldrinker", 158, Rarity.UNCOMMON, mage.cards.s.Souldrinker.class));
+ cards.add(new SetCardInfo("Spell Blast", 89, Rarity.COMMON, mage.cards.s.SpellBlast.class));
+ cards.add(new SetCardInfo("Spike Drone", 258, Rarity.COMMON, mage.cards.s.SpikeDrone.class));
+ cards.add(new SetCardInfo("Spinal Graft", 159, Rarity.COMMON, mage.cards.s.SpinalGraft.class));
+ cards.add(new SetCardInfo("Spirit Mirror", 48, Rarity.RARE, mage.cards.s.SpiritMirror.class));
+ cards.add(new SetCardInfo("Spontaneous Combustion", 273, Rarity.UNCOMMON, mage.cards.s.SpontaneousCombustion.class));
+ cards.add(new SetCardInfo("Squee's Toy", 309, Rarity.COMMON, mage.cards.s.SqueesToy.class));
+ cards.add(new SetCardInfo("Stalking Stones", 327, Rarity.UNCOMMON, mage.cards.s.StalkingStones.class));
+ cards.add(new SetCardInfo("Starke of Rath", 205, Rarity.RARE, mage.cards.s.StarkeOfRath.class));
+ cards.add(new SetCardInfo("Static Orb", 310, Rarity.RARE, mage.cards.s.StaticOrb.class));
+ cards.add(new SetCardInfo("Staunch Defenders", 49, Rarity.UNCOMMON, mage.cards.s.StaunchDefenders.class));
+ cards.add(new SetCardInfo("Steal Enchantment", 90, Rarity.UNCOMMON, mage.cards.s.StealEnchantment.class));
+ cards.add(new SetCardInfo("Stinging Licid", 91, Rarity.UNCOMMON, mage.cards.s.StingingLicid.class));
+ cards.add(new SetCardInfo("Stone Rain", 206, Rarity.COMMON, mage.cards.s.StoneRain.class));
+ cards.add(new SetCardInfo("Storm Front", 259, Rarity.UNCOMMON, mage.cards.s.StormFront.class));
+ cards.add(new SetCardInfo("Stun", 207, Rarity.COMMON, mage.cards.s.Stun.class));
+ cards.add(new SetCardInfo("Sudden Impact", 208, Rarity.UNCOMMON, mage.cards.s.SuddenImpact.class));
+ cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Tahngarth's Rage", 209, Rarity.UNCOMMON, mage.cards.t.TahngarthsRage.class));
+ cards.add(new SetCardInfo("Talon Sliver", 50, Rarity.COMMON, mage.cards.t.TalonSliver.class));
+ cards.add(new SetCardInfo("Telethopter", 311, Rarity.UNCOMMON, mage.cards.t.Telethopter.class));
+ cards.add(new SetCardInfo("Thalakos Dreamsower", 92, Rarity.UNCOMMON, mage.cards.t.ThalakosDreamsower.class));
+ cards.add(new SetCardInfo("Thalakos Lowlands", 328, Rarity.UNCOMMON, mage.cards.t.ThalakosLowlands.class));
+ cards.add(new SetCardInfo("Thalakos Mistfolk", 93, Rarity.COMMON, mage.cards.t.ThalakosMistfolk.class));
+ cards.add(new SetCardInfo("Thalakos Seer", 94, Rarity.COMMON, mage.cards.t.ThalakosSeer.class));
+ cards.add(new SetCardInfo("Thalakos Sentry", 95, Rarity.COMMON, mage.cards.t.ThalakosSentry.class));
+ cards.add(new SetCardInfo("Thumbscrews", 312, Rarity.RARE, mage.cards.t.Thumbscrews.class));
+ cards.add(new SetCardInfo("Time Ebb", 96, Rarity.COMMON, mage.cards.t.TimeEbb.class));
+ cards.add(new SetCardInfo("Time Warp", 97, Rarity.RARE, mage.cards.t.TimeWarp.class));
+ cards.add(new SetCardInfo("Tooth and Claw", 210, Rarity.RARE, mage.cards.t.ToothAndClaw.class));
+ cards.add(new SetCardInfo("Torture Chamber", 313, Rarity.RARE, mage.cards.t.TortureChamber.class));
+ cards.add(new SetCardInfo("Tradewind Rider", 98, Rarity.RARE, mage.cards.t.TradewindRider.class));
+ cards.add(new SetCardInfo("Trained Armodon", 260, Rarity.COMMON, mage.cards.t.TrainedArmodon.class));
+ cards.add(new SetCardInfo("Tranquility", 261, Rarity.COMMON, mage.cards.t.Tranquility.class));
+ cards.add(new SetCardInfo("Trumpeting Armodon", 262, Rarity.UNCOMMON, mage.cards.t.TrumpetingArmodon.class));
+ cards.add(new SetCardInfo("Twitch", 99, Rarity.COMMON, mage.cards.t.Twitch.class));
+ cards.add(new SetCardInfo("Unstable Shapeshifter", 100, Rarity.RARE, mage.cards.u.UnstableShapeshifter.class));
+ cards.add(new SetCardInfo("Vec Townships", 329, Rarity.UNCOMMON, mage.cards.v.VecTownships.class));
+ cards.add(new SetCardInfo("Verdant Force", 263, Rarity.RARE, mage.cards.v.VerdantForce.class));
+ cards.add(new SetCardInfo("Verdigris", 264, Rarity.UNCOMMON, mage.cards.v.Verdigris.class));
+ cards.add(new SetCardInfo("Vhati il-Dal", 274, Rarity.RARE, mage.cards.v.VhatiIlDal.class));
+ cards.add(new SetCardInfo("Volrath's Curse", 101, Rarity.COMMON, mage.cards.v.VolrathsCurse.class));
+ cards.add(new SetCardInfo("Wall of Diffusion", 211, Rarity.COMMON, mage.cards.w.WallOfDiffusion.class));
+ cards.add(new SetCardInfo("Warmth", 51, Rarity.UNCOMMON, mage.cards.w.Warmth.class));
+ cards.add(new SetCardInfo("Wasteland", 330, Rarity.UNCOMMON, mage.cards.w.Wasteland.class));
+ cards.add(new SetCardInfo("Watchdog", 314, Rarity.UNCOMMON, mage.cards.w.Watchdog.class));
+ cards.add(new SetCardInfo("Whispers of the Muse", 103, Rarity.UNCOMMON, mage.cards.w.WhispersOfTheMuse.class));
+ cards.add(new SetCardInfo("Wild Wurm", 212, Rarity.UNCOMMON, mage.cards.w.WildWurm.class));
+ cards.add(new SetCardInfo("Wind Dancer", 104, Rarity.UNCOMMON, mage.cards.w.WindDancer.class));
+ cards.add(new SetCardInfo("Wind Drake", 105, Rarity.COMMON, mage.cards.w.WindDrake.class));
+ cards.add(new SetCardInfo("Winds of Rath", 52, Rarity.RARE, mage.cards.w.WindsOfRath.class));
+ cards.add(new SetCardInfo("Winged Sliver", 106, Rarity.COMMON, mage.cards.w.WingedSliver.class));
+ cards.add(new SetCardInfo("Winter's Grasp", 265, Rarity.UNCOMMON, mage.cards.w.WintersGrasp.class));
+ cards.add(new SetCardInfo("Wood Sage", 275, Rarity.RARE, mage.cards.w.WoodSage.class));
+ cards.add(new SetCardInfo("Worthy Cause", 53, Rarity.UNCOMMON, mage.cards.w.WorthyCause.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/TempestRemastered.java b/Mage.Sets/src/mage/sets/TempestRemastered.java
index 62ca2a2fd26..3c09e943dda 100644
--- a/Mage.Sets/src/mage/sets/TempestRemastered.java
+++ b/Mage.Sets/src/mage/sets/TempestRemastered.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class TempestRemastered extends ExpansionSet {
+public final class TempestRemastered extends ExpansionSet {
private static final TempestRemastered instance = new TempestRemastered();
diff --git a/Mage.Sets/src/mage/sets/TenthEdition.java b/Mage.Sets/src/mage/sets/TenthEdition.java
index 7ad9e23b795..954496e85eb 100644
--- a/Mage.Sets/src/mage/sets/TenthEdition.java
+++ b/Mage.Sets/src/mage/sets/TenthEdition.java
@@ -1,438 +1,438 @@
-/*
-* 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author BetaSteward_at_googlemail.com
- */
-public class TenthEdition extends ExpansionSet {
-
- private static final TenthEdition instance = new TenthEdition();
-
- public static TenthEdition getInstance() {
- return instance;
- }
-
- 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, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 381, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 382, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 383, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- 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, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 369, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 370, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 371, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- 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, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 377, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 378, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 379, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- 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, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 365, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 366, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 367, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- 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, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 373, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 374, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 375, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- 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.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author BetaSteward_at_googlemail.com
+ */
+public final class TenthEdition extends ExpansionSet {
+
+ private static final TenthEdition instance = new TenthEdition();
+
+ public static TenthEdition getInstance() {
+ return instance;
+ }
+
+ 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, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 381, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 382, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 383, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ 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, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 369, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 370, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 371, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ 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, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 377, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 378, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 379, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ 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, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 365, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 366, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 367, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ 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, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 373, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 374, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 375, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ 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));
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/TheDark.java b/Mage.Sets/src/mage/sets/TheDark.java
index c1f910b772e..e9bdf637bd5 100644
--- a/Mage.Sets/src/mage/sets/TheDark.java
+++ b/Mage.Sets/src/mage/sets/TheDark.java
@@ -1,172 +1,172 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class TheDark extends ExpansionSet {
-
- private static final TheDark instance = new TheDark();
-
- public static TheDark getInstance() {
- return instance;
- }
-
- private TheDark() {
- super("The Dark", "DRK", ExpansionSet.buildDate(1994, 7, 1), SetType.EXPANSION);
- this.hasBasicLands = false;
- this.hasBoosters = true;
- this.numBoosterLands = 1;
- this.numBoosterCommon = 10;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Amnesia", 20, Rarity.UNCOMMON, mage.cards.a.Amnesia.class));
- cards.add(new SetCardInfo("Angry Mob", 1, Rarity.UNCOMMON, mage.cards.a.AngryMob.class));
- cards.add(new SetCardInfo("Apprentice Wizard", 21, Rarity.RARE, mage.cards.a.ApprenticeWizard.class));
- cards.add(new SetCardInfo("Ashes to Ashes", 39, Rarity.COMMON, mage.cards.a.AshesToAshes.class));
- cards.add(new SetCardInfo("Ball Lightning", 57, Rarity.RARE, mage.cards.b.BallLightning.class));
- cards.add(new SetCardInfo("Banshee", 40, Rarity.RARE, mage.cards.b.Banshee.class));
- cards.add(new SetCardInfo("Barl's Cage", 96, Rarity.RARE, mage.cards.b.BarlsCage.class));
- cards.add(new SetCardInfo("Blood Moon", 58, Rarity.RARE, mage.cards.b.BloodMoon.class));
- cards.add(new SetCardInfo("Blood of the Martyr", 2, Rarity.RARE, mage.cards.b.BloodOfTheMartyr.class));
- cards.add(new SetCardInfo("Bog Imp", 41, Rarity.COMMON, mage.cards.b.BogImp.class));
- cards.add(new SetCardInfo("Bog Rats", 42, Rarity.COMMON, mage.cards.b.BogRats.class));
- cards.add(new SetCardInfo("Bone Flute", 97, Rarity.UNCOMMON, mage.cards.b.BoneFlute.class));
- cards.add(new SetCardInfo("Book of Rass", 98, Rarity.UNCOMMON, mage.cards.b.BookOfRass.class));
- cards.add(new SetCardInfo("Brainwash", 3, Rarity.COMMON, mage.cards.b.Brainwash.class));
- cards.add(new SetCardInfo("Brothers of Fire", 59, Rarity.UNCOMMON, mage.cards.b.BrothersOfFire.class));
- cards.add(new SetCardInfo("Carnivorous Plant", 75, Rarity.COMMON, mage.cards.c.CarnivorousPlant.class));
- cards.add(new SetCardInfo("Cave People", 60, Rarity.UNCOMMON, mage.cards.c.CavePeople.class));
- cards.add(new SetCardInfo("City of Shadows", 116, Rarity.RARE, mage.cards.c.CityOfShadows.class));
- cards.add(new SetCardInfo("Cleansing", 4, Rarity.RARE, mage.cards.c.Cleansing.class));
- cards.add(new SetCardInfo("Coal Golem", 99, Rarity.UNCOMMON, mage.cards.c.CoalGolem.class));
- cards.add(new SetCardInfo("Curse Artifact", 43, Rarity.RARE, mage.cards.c.CurseArtifact.class));
- cards.add(new SetCardInfo("Dance of Many", 22, Rarity.RARE, mage.cards.d.DanceOfMany.class));
- cards.add(new SetCardInfo("Dark Heart of the Wood", 95, Rarity.COMMON, mage.cards.d.DarkHeartOfTheWood.class));
- cards.add(new SetCardInfo("Dark Sphere", 100, Rarity.RARE, mage.cards.d.DarkSphere.class));
- cards.add(new SetCardInfo("Deep Water", 23, Rarity.COMMON, mage.cards.d.DeepWater.class));
- cards.add(new SetCardInfo("Diabolic Machine", 101, Rarity.UNCOMMON, mage.cards.d.DiabolicMachine.class));
- cards.add(new SetCardInfo("Drowned", 24, Rarity.COMMON, mage.cards.d.Drowned.class));
- cards.add(new SetCardInfo("Dust to Dust", 5, Rarity.COMMON, mage.cards.d.DustToDust.class));
- cards.add(new SetCardInfo("Eater of the Dead", 44, Rarity.UNCOMMON, mage.cards.e.EaterOfTheDead.class));
- cards.add(new SetCardInfo("Electric Eel", 25, Rarity.UNCOMMON, mage.cards.e.ElectricEel.class));
- cards.add(new SetCardInfo("Elves of Deep Shadow", 76, Rarity.UNCOMMON, mage.cards.e.ElvesOfDeepShadow.class));
- cards.add(new SetCardInfo("Erosion", 26, Rarity.COMMON, mage.cards.e.Erosion.class));
- cards.add(new SetCardInfo("Eternal Flame", 61, Rarity.RARE, mage.cards.e.EternalFlame.class));
- cards.add(new SetCardInfo("Exorcist", 6, Rarity.RARE, mage.cards.e.Exorcist.class));
- cards.add(new SetCardInfo("Fasting", 7, Rarity.RARE, mage.cards.f.Fasting.class));
- cards.add(new SetCardInfo("Fellwar Stone", 102, Rarity.UNCOMMON, mage.cards.f.FellwarStone.class));
- cards.add(new SetCardInfo("Festival", 8, Rarity.COMMON, mage.cards.f.Festival.class));
- cards.add(new SetCardInfo("Fire and Brimstone", 9, Rarity.RARE, mage.cards.f.FireAndBrimstone.class));
- cards.add(new SetCardInfo("Fire Drake", 62, Rarity.UNCOMMON, mage.cards.f.FireDrake.class));
- cards.add(new SetCardInfo("Fissure", 63, Rarity.COMMON, mage.cards.f.Fissure.class));
- cards.add(new SetCardInfo("Flood", 27, Rarity.UNCOMMON, mage.cards.f.Flood.class));
- cards.add(new SetCardInfo("Fountain of Youth", 103, Rarity.UNCOMMON, mage.cards.f.FountainOfYouth.class));
- cards.add(new SetCardInfo("Gaea's Touch", 77, Rarity.COMMON, mage.cards.g.GaeasTouch.class));
- cards.add(new SetCardInfo("Ghost Ship", 28, Rarity.COMMON, mage.cards.g.GhostShip.class));
- cards.add(new SetCardInfo("Giant Shark", 29, Rarity.COMMON, mage.cards.g.GiantShark.class));
- cards.add(new SetCardInfo("Goblin Caves", 64, Rarity.COMMON, mage.cards.g.GoblinCaves.class));
- cards.add(new SetCardInfo("Goblin Digging Team", 65, Rarity.COMMON, mage.cards.g.GoblinDiggingTeam.class));
- cards.add(new SetCardInfo("Goblin Hero", 66, Rarity.COMMON, mage.cards.g.GoblinHero.class));
- cards.add(new SetCardInfo("Goblin Rock Sled", 67, Rarity.COMMON, mage.cards.g.GoblinRockSled.class));
- cards.add(new SetCardInfo("Goblin Shrine", 68, Rarity.COMMON, mage.cards.g.GoblinShrine.class));
- cards.add(new SetCardInfo("Goblin Wizard", 69, Rarity.RARE, mage.cards.g.GoblinWizard.class));
- cards.add(new SetCardInfo("Goblins of the Flarg", 70, Rarity.COMMON, mage.cards.g.GoblinsOfTheFlarg.class));
- cards.add(new SetCardInfo("Grave Robbers", 46, Rarity.RARE, mage.cards.g.GraveRobbers.class));
- cards.add(new SetCardInfo("Hidden Path", 78, Rarity.RARE, mage.cards.h.HiddenPath.class));
- cards.add(new SetCardInfo("Holy Light", 10, Rarity.COMMON, mage.cards.h.HolyLight.class));
- cards.add(new SetCardInfo("Inferno", 71, Rarity.RARE, mage.cards.i.Inferno.class));
- cards.add(new SetCardInfo("Inquisition", 47, Rarity.COMMON, mage.cards.i.Inquisition.class));
- cards.add(new SetCardInfo("Knights of Thorn", 11, Rarity.RARE, mage.cards.k.KnightsOfThorn.class));
- cards.add(new SetCardInfo("Land Leeches", 79, Rarity.COMMON, mage.cards.l.LandLeeches.class));
- cards.add(new SetCardInfo("Leviathan", 30, Rarity.RARE, mage.cards.l.Leviathan.class));
- cards.add(new SetCardInfo("Living Armor", 104, Rarity.UNCOMMON, mage.cards.l.LivingArmor.class));
- cards.add(new SetCardInfo("Lurker", 80, Rarity.RARE, mage.cards.l.Lurker.class));
- cards.add(new SetCardInfo("Mana Clash", 72, Rarity.RARE, mage.cards.m.ManaClash.class));
- cards.add(new SetCardInfo("Mana Vortex", 31, Rarity.RARE, mage.cards.m.ManaVortex.class));
- cards.add(new SetCardInfo("Marsh Gas", 48, Rarity.COMMON, mage.cards.m.MarshGas.class));
- cards.add(new SetCardInfo("Marsh Goblins", 93, Rarity.COMMON, mage.cards.m.MarshGoblins.class));
- cards.add(new SetCardInfo("Marsh Viper", 81, Rarity.COMMON, mage.cards.m.MarshViper.class));
- cards.add(new SetCardInfo("Martyr's Cry", 12, Rarity.RARE, mage.cards.m.MartyrsCry.class));
- cards.add(new SetCardInfo("Maze of Ith", 117, Rarity.UNCOMMON, mage.cards.m.MazeOfIth.class));
- cards.add(new SetCardInfo("Merfolk Assassin", 32, Rarity.UNCOMMON, mage.cards.m.MerfolkAssassin.class));
- cards.add(new SetCardInfo("Mind Bomb", 33, Rarity.RARE, mage.cards.m.MindBomb.class));
- cards.add(new SetCardInfo("Miracle Worker", 13, Rarity.COMMON, mage.cards.m.MiracleWorker.class));
- cards.add(new SetCardInfo("Morale", 14, Rarity.COMMON, mage.cards.m.Morale.class));
- cards.add(new SetCardInfo("Murk Dwellers", 49, Rarity.COMMON, mage.cards.m.MurkDwellers.class));
- cards.add(new SetCardInfo("Nameless Race", 50, Rarity.RARE, mage.cards.n.NamelessRace.class));
- cards.add(new SetCardInfo("Necropolis", 105, Rarity.RARE, mage.cards.n.Necropolis.class));
- cards.add(new SetCardInfo("Niall Silvain", 82, Rarity.RARE, mage.cards.n.NiallSilvain.class));
- cards.add(new SetCardInfo("Orc General", 73, Rarity.UNCOMMON, mage.cards.o.OrcGeneral.class));
- cards.add(new SetCardInfo("People of the Woods", 83, Rarity.UNCOMMON, mage.cards.p.PeopleOfTheWoods.class));
- cards.add(new SetCardInfo("Pikemen", 15, Rarity.COMMON, mage.cards.p.Pikemen.class));
- cards.add(new SetCardInfo("Preacher", 16, Rarity.RARE, mage.cards.p.Preacher.class));
- cards.add(new SetCardInfo("Psychic Allergy", 34, Rarity.RARE, mage.cards.p.PsychicAllergy.class));
- cards.add(new SetCardInfo("Rag Man", 51, Rarity.RARE, mage.cards.r.RagMan.class));
- cards.add(new SetCardInfo("Riptide", 35, Rarity.COMMON, mage.cards.r.Riptide.class));
- cards.add(new SetCardInfo("Runesword", 107, Rarity.RARE, mage.cards.r.Runesword.class));
- cards.add(new SetCardInfo("Safe Haven", 118, Rarity.RARE, mage.cards.s.SafeHaven.class));
- cards.add(new SetCardInfo("Savaen Elves", 84, Rarity.COMMON, mage.cards.s.SavaenElves.class));
- cards.add(new SetCardInfo("Scarecrow", 108, Rarity.RARE, mage.cards.s.Scarecrow.class));
- cards.add(new SetCardInfo("Scarwood Bandits", 85, Rarity.RARE, mage.cards.s.ScarwoodBandits.class));
- cards.add(new SetCardInfo("Scarwood Goblins", 94, Rarity.COMMON, mage.cards.s.ScarwoodGoblins.class));
- cards.add(new SetCardInfo("Scarwood Hag", 86, Rarity.UNCOMMON, mage.cards.s.ScarwoodHag.class));
- cards.add(new SetCardInfo("Scavenger Folk", 87, Rarity.COMMON, mage.cards.s.ScavengerFolk.class));
- cards.add(new SetCardInfo("Season of the Witch", 52, Rarity.RARE, mage.cards.s.SeasonOfTheWitch.class));
- cards.add(new SetCardInfo("Sisters of the Flame", 74, Rarity.UNCOMMON, mage.cards.s.SistersOfTheFlame.class));
- cards.add(new SetCardInfo("Skull of Orm", 109, Rarity.UNCOMMON, mage.cards.s.SkullOfOrm.class));
- cards.add(new SetCardInfo("Sorrow's Path", 119, Rarity.RARE, mage.cards.s.SorrowsPath.class));
- cards.add(new SetCardInfo("Spitting Slug", 88, Rarity.RARE, mage.cards.s.SpittingSlug.class));
- cards.add(new SetCardInfo("Squire", 17, Rarity.COMMON, mage.cards.s.Squire.class));
- cards.add(new SetCardInfo("Standing Stones", 110, Rarity.UNCOMMON, mage.cards.s.StandingStones.class));
- cards.add(new SetCardInfo("Stone Calendar", 111, Rarity.RARE, mage.cards.s.StoneCalendar.class));
- cards.add(new SetCardInfo("Sunken City", 36, Rarity.COMMON, mage.cards.s.SunkenCity.class));
- cards.add(new SetCardInfo("Tangle Kelp", 37, Rarity.RARE, mage.cards.t.TangleKelp.class));
- cards.add(new SetCardInfo("The Fallen", 53, Rarity.RARE, mage.cards.t.TheFallen.class));
- cards.add(new SetCardInfo("Tivadar's Crusade", 18, Rarity.UNCOMMON, mage.cards.t.TivadarsCrusade.class));
- cards.add(new SetCardInfo("Tormod's Crypt", 112, Rarity.UNCOMMON, mage.cards.t.TormodsCrypt.class));
- cards.add(new SetCardInfo("Tower of Coireall", 113, Rarity.RARE, mage.cards.t.TowerOfCoireall.class));
- cards.add(new SetCardInfo("Tracker", 89, Rarity.RARE, mage.cards.t.Tracker.class));
- cards.add(new SetCardInfo("Uncle Istvan", 54, Rarity.UNCOMMON, mage.cards.u.UncleIstvan.class));
- cards.add(new SetCardInfo("Venom", 90, Rarity.COMMON, mage.cards.v.Venom.class));
- cards.add(new SetCardInfo("Wand of Ith", 114, Rarity.RARE, mage.cards.w.WandOfIth.class));
- cards.add(new SetCardInfo("War Barge", 115, Rarity.RARE, mage.cards.w.WarBarge.class));
- cards.add(new SetCardInfo("Water Wurm", 38, Rarity.COMMON, mage.cards.w.WaterWurm.class));
- cards.add(new SetCardInfo("Witch Hunter", 19, Rarity.RARE, mage.cards.w.WitchHunter.class));
- cards.add(new SetCardInfo("Word of Binding", 55, Rarity.COMMON, mage.cards.w.WordOfBinding.class));
- cards.add(new SetCardInfo("Worms of the Earth", 56, Rarity.RARE, mage.cards.w.WormsOfTheEarth.class));
- cards.add(new SetCardInfo("Wormwood Treefolk", 92, Rarity.RARE, mage.cards.w.WormwoodTreefolk.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class TheDark extends ExpansionSet {
+
+ private static final TheDark instance = new TheDark();
+
+ public static TheDark getInstance() {
+ return instance;
+ }
+
+ private TheDark() {
+ super("The Dark", "DRK", ExpansionSet.buildDate(1994, 7, 1), SetType.EXPANSION);
+ this.hasBasicLands = false;
+ this.hasBoosters = true;
+ this.numBoosterLands = 1;
+ this.numBoosterCommon = 10;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Amnesia", 20, Rarity.UNCOMMON, mage.cards.a.Amnesia.class));
+ cards.add(new SetCardInfo("Angry Mob", 1, Rarity.UNCOMMON, mage.cards.a.AngryMob.class));
+ cards.add(new SetCardInfo("Apprentice Wizard", 21, Rarity.RARE, mage.cards.a.ApprenticeWizard.class));
+ cards.add(new SetCardInfo("Ashes to Ashes", 39, Rarity.COMMON, mage.cards.a.AshesToAshes.class));
+ cards.add(new SetCardInfo("Ball Lightning", 57, Rarity.RARE, mage.cards.b.BallLightning.class));
+ cards.add(new SetCardInfo("Banshee", 40, Rarity.RARE, mage.cards.b.Banshee.class));
+ cards.add(new SetCardInfo("Barl's Cage", 96, Rarity.RARE, mage.cards.b.BarlsCage.class));
+ cards.add(new SetCardInfo("Blood Moon", 58, Rarity.RARE, mage.cards.b.BloodMoon.class));
+ cards.add(new SetCardInfo("Blood of the Martyr", 2, Rarity.RARE, mage.cards.b.BloodOfTheMartyr.class));
+ cards.add(new SetCardInfo("Bog Imp", 41, Rarity.COMMON, mage.cards.b.BogImp.class));
+ cards.add(new SetCardInfo("Bog Rats", 42, Rarity.COMMON, mage.cards.b.BogRats.class));
+ cards.add(new SetCardInfo("Bone Flute", 97, Rarity.UNCOMMON, mage.cards.b.BoneFlute.class));
+ cards.add(new SetCardInfo("Book of Rass", 98, Rarity.UNCOMMON, mage.cards.b.BookOfRass.class));
+ cards.add(new SetCardInfo("Brainwash", 3, Rarity.COMMON, mage.cards.b.Brainwash.class));
+ cards.add(new SetCardInfo("Brothers of Fire", 59, Rarity.UNCOMMON, mage.cards.b.BrothersOfFire.class));
+ cards.add(new SetCardInfo("Carnivorous Plant", 75, Rarity.COMMON, mage.cards.c.CarnivorousPlant.class));
+ cards.add(new SetCardInfo("Cave People", 60, Rarity.UNCOMMON, mage.cards.c.CavePeople.class));
+ cards.add(new SetCardInfo("City of Shadows", 116, Rarity.RARE, mage.cards.c.CityOfShadows.class));
+ cards.add(new SetCardInfo("Cleansing", 4, Rarity.RARE, mage.cards.c.Cleansing.class));
+ cards.add(new SetCardInfo("Coal Golem", 99, Rarity.UNCOMMON, mage.cards.c.CoalGolem.class));
+ cards.add(new SetCardInfo("Curse Artifact", 43, Rarity.RARE, mage.cards.c.CurseArtifact.class));
+ cards.add(new SetCardInfo("Dance of Many", 22, Rarity.RARE, mage.cards.d.DanceOfMany.class));
+ cards.add(new SetCardInfo("Dark Heart of the Wood", 95, Rarity.COMMON, mage.cards.d.DarkHeartOfTheWood.class));
+ cards.add(new SetCardInfo("Dark Sphere", 100, Rarity.RARE, mage.cards.d.DarkSphere.class));
+ cards.add(new SetCardInfo("Deep Water", 23, Rarity.COMMON, mage.cards.d.DeepWater.class));
+ cards.add(new SetCardInfo("Diabolic Machine", 101, Rarity.UNCOMMON, mage.cards.d.DiabolicMachine.class));
+ cards.add(new SetCardInfo("Drowned", 24, Rarity.COMMON, mage.cards.d.Drowned.class));
+ cards.add(new SetCardInfo("Dust to Dust", 5, Rarity.COMMON, mage.cards.d.DustToDust.class));
+ cards.add(new SetCardInfo("Eater of the Dead", 44, Rarity.UNCOMMON, mage.cards.e.EaterOfTheDead.class));
+ cards.add(new SetCardInfo("Electric Eel", 25, Rarity.UNCOMMON, mage.cards.e.ElectricEel.class));
+ cards.add(new SetCardInfo("Elves of Deep Shadow", 76, Rarity.UNCOMMON, mage.cards.e.ElvesOfDeepShadow.class));
+ cards.add(new SetCardInfo("Erosion", 26, Rarity.COMMON, mage.cards.e.Erosion.class));
+ cards.add(new SetCardInfo("Eternal Flame", 61, Rarity.RARE, mage.cards.e.EternalFlame.class));
+ cards.add(new SetCardInfo("Exorcist", 6, Rarity.RARE, mage.cards.e.Exorcist.class));
+ cards.add(new SetCardInfo("Fasting", 7, Rarity.RARE, mage.cards.f.Fasting.class));
+ cards.add(new SetCardInfo("Fellwar Stone", 102, Rarity.UNCOMMON, mage.cards.f.FellwarStone.class));
+ cards.add(new SetCardInfo("Festival", 8, Rarity.COMMON, mage.cards.f.Festival.class));
+ cards.add(new SetCardInfo("Fire and Brimstone", 9, Rarity.RARE, mage.cards.f.FireAndBrimstone.class));
+ cards.add(new SetCardInfo("Fire Drake", 62, Rarity.UNCOMMON, mage.cards.f.FireDrake.class));
+ cards.add(new SetCardInfo("Fissure", 63, Rarity.COMMON, mage.cards.f.Fissure.class));
+ cards.add(new SetCardInfo("Flood", 27, Rarity.UNCOMMON, mage.cards.f.Flood.class));
+ cards.add(new SetCardInfo("Fountain of Youth", 103, Rarity.UNCOMMON, mage.cards.f.FountainOfYouth.class));
+ cards.add(new SetCardInfo("Gaea's Touch", 77, Rarity.COMMON, mage.cards.g.GaeasTouch.class));
+ cards.add(new SetCardInfo("Ghost Ship", 28, Rarity.COMMON, mage.cards.g.GhostShip.class));
+ cards.add(new SetCardInfo("Giant Shark", 29, Rarity.COMMON, mage.cards.g.GiantShark.class));
+ cards.add(new SetCardInfo("Goblin Caves", 64, Rarity.COMMON, mage.cards.g.GoblinCaves.class));
+ cards.add(new SetCardInfo("Goblin Digging Team", 65, Rarity.COMMON, mage.cards.g.GoblinDiggingTeam.class));
+ cards.add(new SetCardInfo("Goblin Hero", 66, Rarity.COMMON, mage.cards.g.GoblinHero.class));
+ cards.add(new SetCardInfo("Goblin Rock Sled", 67, Rarity.COMMON, mage.cards.g.GoblinRockSled.class));
+ cards.add(new SetCardInfo("Goblin Shrine", 68, Rarity.COMMON, mage.cards.g.GoblinShrine.class));
+ cards.add(new SetCardInfo("Goblin Wizard", 69, Rarity.RARE, mage.cards.g.GoblinWizard.class));
+ cards.add(new SetCardInfo("Goblins of the Flarg", 70, Rarity.COMMON, mage.cards.g.GoblinsOfTheFlarg.class));
+ cards.add(new SetCardInfo("Grave Robbers", 46, Rarity.RARE, mage.cards.g.GraveRobbers.class));
+ cards.add(new SetCardInfo("Hidden Path", 78, Rarity.RARE, mage.cards.h.HiddenPath.class));
+ cards.add(new SetCardInfo("Holy Light", 10, Rarity.COMMON, mage.cards.h.HolyLight.class));
+ cards.add(new SetCardInfo("Inferno", 71, Rarity.RARE, mage.cards.i.Inferno.class));
+ cards.add(new SetCardInfo("Inquisition", 47, Rarity.COMMON, mage.cards.i.Inquisition.class));
+ cards.add(new SetCardInfo("Knights of Thorn", 11, Rarity.RARE, mage.cards.k.KnightsOfThorn.class));
+ cards.add(new SetCardInfo("Land Leeches", 79, Rarity.COMMON, mage.cards.l.LandLeeches.class));
+ cards.add(new SetCardInfo("Leviathan", 30, Rarity.RARE, mage.cards.l.Leviathan.class));
+ cards.add(new SetCardInfo("Living Armor", 104, Rarity.UNCOMMON, mage.cards.l.LivingArmor.class));
+ cards.add(new SetCardInfo("Lurker", 80, Rarity.RARE, mage.cards.l.Lurker.class));
+ cards.add(new SetCardInfo("Mana Clash", 72, Rarity.RARE, mage.cards.m.ManaClash.class));
+ cards.add(new SetCardInfo("Mana Vortex", 31, Rarity.RARE, mage.cards.m.ManaVortex.class));
+ cards.add(new SetCardInfo("Marsh Gas", 48, Rarity.COMMON, mage.cards.m.MarshGas.class));
+ cards.add(new SetCardInfo("Marsh Goblins", 93, Rarity.COMMON, mage.cards.m.MarshGoblins.class));
+ cards.add(new SetCardInfo("Marsh Viper", 81, Rarity.COMMON, mage.cards.m.MarshViper.class));
+ cards.add(new SetCardInfo("Martyr's Cry", 12, Rarity.RARE, mage.cards.m.MartyrsCry.class));
+ cards.add(new SetCardInfo("Maze of Ith", 117, Rarity.UNCOMMON, mage.cards.m.MazeOfIth.class));
+ cards.add(new SetCardInfo("Merfolk Assassin", 32, Rarity.UNCOMMON, mage.cards.m.MerfolkAssassin.class));
+ cards.add(new SetCardInfo("Mind Bomb", 33, Rarity.RARE, mage.cards.m.MindBomb.class));
+ cards.add(new SetCardInfo("Miracle Worker", 13, Rarity.COMMON, mage.cards.m.MiracleWorker.class));
+ cards.add(new SetCardInfo("Morale", 14, Rarity.COMMON, mage.cards.m.Morale.class));
+ cards.add(new SetCardInfo("Murk Dwellers", 49, Rarity.COMMON, mage.cards.m.MurkDwellers.class));
+ cards.add(new SetCardInfo("Nameless Race", 50, Rarity.RARE, mage.cards.n.NamelessRace.class));
+ cards.add(new SetCardInfo("Necropolis", 105, Rarity.RARE, mage.cards.n.Necropolis.class));
+ cards.add(new SetCardInfo("Niall Silvain", 82, Rarity.RARE, mage.cards.n.NiallSilvain.class));
+ cards.add(new SetCardInfo("Orc General", 73, Rarity.UNCOMMON, mage.cards.o.OrcGeneral.class));
+ cards.add(new SetCardInfo("People of the Woods", 83, Rarity.UNCOMMON, mage.cards.p.PeopleOfTheWoods.class));
+ cards.add(new SetCardInfo("Pikemen", 15, Rarity.COMMON, mage.cards.p.Pikemen.class));
+ cards.add(new SetCardInfo("Preacher", 16, Rarity.RARE, mage.cards.p.Preacher.class));
+ cards.add(new SetCardInfo("Psychic Allergy", 34, Rarity.RARE, mage.cards.p.PsychicAllergy.class));
+ cards.add(new SetCardInfo("Rag Man", 51, Rarity.RARE, mage.cards.r.RagMan.class));
+ cards.add(new SetCardInfo("Riptide", 35, Rarity.COMMON, mage.cards.r.Riptide.class));
+ cards.add(new SetCardInfo("Runesword", 107, Rarity.RARE, mage.cards.r.Runesword.class));
+ cards.add(new SetCardInfo("Safe Haven", 118, Rarity.RARE, mage.cards.s.SafeHaven.class));
+ cards.add(new SetCardInfo("Savaen Elves", 84, Rarity.COMMON, mage.cards.s.SavaenElves.class));
+ cards.add(new SetCardInfo("Scarecrow", 108, Rarity.RARE, mage.cards.s.Scarecrow.class));
+ cards.add(new SetCardInfo("Scarwood Bandits", 85, Rarity.RARE, mage.cards.s.ScarwoodBandits.class));
+ cards.add(new SetCardInfo("Scarwood Goblins", 94, Rarity.COMMON, mage.cards.s.ScarwoodGoblins.class));
+ cards.add(new SetCardInfo("Scarwood Hag", 86, Rarity.UNCOMMON, mage.cards.s.ScarwoodHag.class));
+ cards.add(new SetCardInfo("Scavenger Folk", 87, Rarity.COMMON, mage.cards.s.ScavengerFolk.class));
+ cards.add(new SetCardInfo("Season of the Witch", 52, Rarity.RARE, mage.cards.s.SeasonOfTheWitch.class));
+ cards.add(new SetCardInfo("Sisters of the Flame", 74, Rarity.UNCOMMON, mage.cards.s.SistersOfTheFlame.class));
+ cards.add(new SetCardInfo("Skull of Orm", 109, Rarity.UNCOMMON, mage.cards.s.SkullOfOrm.class));
+ cards.add(new SetCardInfo("Sorrow's Path", 119, Rarity.RARE, mage.cards.s.SorrowsPath.class));
+ cards.add(new SetCardInfo("Spitting Slug", 88, Rarity.RARE, mage.cards.s.SpittingSlug.class));
+ cards.add(new SetCardInfo("Squire", 17, Rarity.COMMON, mage.cards.s.Squire.class));
+ cards.add(new SetCardInfo("Standing Stones", 110, Rarity.UNCOMMON, mage.cards.s.StandingStones.class));
+ cards.add(new SetCardInfo("Stone Calendar", 111, Rarity.RARE, mage.cards.s.StoneCalendar.class));
+ cards.add(new SetCardInfo("Sunken City", 36, Rarity.COMMON, mage.cards.s.SunkenCity.class));
+ cards.add(new SetCardInfo("Tangle Kelp", 37, Rarity.RARE, mage.cards.t.TangleKelp.class));
+ cards.add(new SetCardInfo("The Fallen", 53, Rarity.RARE, mage.cards.t.TheFallen.class));
+ cards.add(new SetCardInfo("Tivadar's Crusade", 18, Rarity.UNCOMMON, mage.cards.t.TivadarsCrusade.class));
+ cards.add(new SetCardInfo("Tormod's Crypt", 112, Rarity.UNCOMMON, mage.cards.t.TormodsCrypt.class));
+ cards.add(new SetCardInfo("Tower of Coireall", 113, Rarity.RARE, mage.cards.t.TowerOfCoireall.class));
+ cards.add(new SetCardInfo("Tracker", 89, Rarity.RARE, mage.cards.t.Tracker.class));
+ cards.add(new SetCardInfo("Uncle Istvan", 54, Rarity.UNCOMMON, mage.cards.u.UncleIstvan.class));
+ cards.add(new SetCardInfo("Venom", 90, Rarity.COMMON, mage.cards.v.Venom.class));
+ cards.add(new SetCardInfo("Wand of Ith", 114, Rarity.RARE, mage.cards.w.WandOfIth.class));
+ cards.add(new SetCardInfo("War Barge", 115, Rarity.RARE, mage.cards.w.WarBarge.class));
+ cards.add(new SetCardInfo("Water Wurm", 38, Rarity.COMMON, mage.cards.w.WaterWurm.class));
+ cards.add(new SetCardInfo("Witch Hunter", 19, Rarity.RARE, mage.cards.w.WitchHunter.class));
+ cards.add(new SetCardInfo("Word of Binding", 55, Rarity.COMMON, mage.cards.w.WordOfBinding.class));
+ cards.add(new SetCardInfo("Worms of the Earth", 56, Rarity.RARE, mage.cards.w.WormsOfTheEarth.class));
+ cards.add(new SetCardInfo("Wormwood Treefolk", 92, Rarity.RARE, mage.cards.w.WormwoodTreefolk.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Theros.java b/Mage.Sets/src/mage/sets/Theros.java
index 0055bc8d5e7..9c76d6db22a 100644
--- a/Mage.Sets/src/mage/sets/Theros.java
+++ b/Mage.Sets/src/mage/sets/Theros.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class Theros extends ExpansionSet {
+public final class Theros extends ExpansionSet {
private static final Theros instance = new Theros();
diff --git a/Mage.Sets/src/mage/sets/TimeSpiral.java b/Mage.Sets/src/mage/sets/TimeSpiral.java
index 900cf730690..dd82083812d 100644
--- a/Mage.Sets/src/mage/sets/TimeSpiral.java
+++ b/Mage.Sets/src/mage/sets/TimeSpiral.java
@@ -1,330 +1,332 @@
-package mage.sets;
-
-import java.util.List;
-import mage.cards.Card;
-import mage.cards.ExpansionSet;
-import mage.cards.repository.CardCriteria;
-import mage.cards.repository.CardRepository;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-public class TimeSpiral extends ExpansionSet {
-
- private static final TimeSpiral instance = new TimeSpiral();
-
- public static TimeSpiral getInstance() {
- return instance;
- }
-
- private TimeSpiral() {
- super("Time Spiral", "TSP", ExpansionSet.buildDate(2006, 9, 9), SetType.EXPANSION);
- this.blockName = "Time Spiral";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 10;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Academy Ruins", 269, Rarity.RARE, mage.cards.a.AcademyRuins.class));
- cards.add(new SetCardInfo("Amrou Scout", 1, Rarity.COMMON, mage.cards.a.AmrouScout.class));
- cards.add(new SetCardInfo("Amrou Seekers", 2, Rarity.COMMON, mage.cards.a.AmrouSeekers.class));
- cards.add(new SetCardInfo("Ancestral Vision", 48, Rarity.RARE, mage.cards.a.AncestralVision.class));
- cards.add(new SetCardInfo("Ancient Grudge", 143, Rarity.COMMON, mage.cards.a.AncientGrudge.class));
- cards.add(new SetCardInfo("Angel's Grace", 3, Rarity.RARE, mage.cards.a.AngelsGrace.class));
- cards.add(new SetCardInfo("Ashcoat Bear", 190, Rarity.COMMON, mage.cards.a.AshcoatBear.class));
- cards.add(new SetCardInfo("Aspect of Mongoose", 191, Rarity.UNCOMMON, mage.cards.a.AspectOfMongoose.class));
- cards.add(new SetCardInfo("Assassinate", 95, Rarity.COMMON, mage.cards.a.Assassinate.class));
- cards.add(new SetCardInfo("Assembly-Worker", 248, Rarity.UNCOMMON, mage.cards.a.AssemblyWorker.class));
- cards.add(new SetCardInfo("Barbed Shocker", 144, Rarity.UNCOMMON, mage.cards.b.BarbedShocker.class));
- cards.add(new SetCardInfo("Basal Sliver", 96, Rarity.COMMON, mage.cards.b.BasalSliver.class));
- cards.add(new SetCardInfo("Basalt Gargoyle", 145, Rarity.UNCOMMON, mage.cards.b.BasaltGargoyle.class));
- cards.add(new SetCardInfo("Benalish Cavalry", 4, Rarity.COMMON, mage.cards.b.BenalishCavalry.class));
- cards.add(new SetCardInfo("Bewilder", 49, Rarity.COMMON, mage.cards.b.Bewilder.class));
- cards.add(new SetCardInfo("Blazing Blade Askari", 146, Rarity.COMMON, mage.cards.b.BlazingBladeAskari.class));
- cards.add(new SetCardInfo("Bogardan Hellkite", 147, Rarity.RARE, mage.cards.b.BogardanHellkite.class));
- cards.add(new SetCardInfo("Bogardan Rager", 148, Rarity.COMMON, mage.cards.b.BogardanRager.class));
- cards.add(new SetCardInfo("Bonesplitter Sliver", 149, Rarity.COMMON, mage.cards.b.BonesplitterSliver.class));
- cards.add(new SetCardInfo("Brass Gnat", 249, Rarity.COMMON, mage.cards.b.BrassGnat.class));
- cards.add(new SetCardInfo("Brine Elemental", 50, Rarity.UNCOMMON, mage.cards.b.BrineElemental.class));
- cards.add(new SetCardInfo("Calciform Pools", 270, Rarity.UNCOMMON, mage.cards.c.CalciformPools.class));
- cards.add(new SetCardInfo("Call to the Netherworld", 97, Rarity.COMMON, mage.cards.c.CallToTheNetherworld.class));
- cards.add(new SetCardInfo("Cancel", 51, Rarity.COMMON, mage.cards.c.Cancel.class));
- cards.add(new SetCardInfo("Candles of Leng", 250, Rarity.RARE, mage.cards.c.CandlesOfLeng.class));
- cards.add(new SetCardInfo("Careful Consideration", 52, Rarity.UNCOMMON, mage.cards.c.CarefulConsideration.class));
- cards.add(new SetCardInfo("Castle Raptors", 5, Rarity.COMMON, mage.cards.c.CastleRaptors.class));
- cards.add(new SetCardInfo("Cavalry Master", 6, Rarity.UNCOMMON, mage.cards.c.CavalryMaster.class));
- cards.add(new SetCardInfo("Celestial Crusader", 7, Rarity.UNCOMMON, mage.cards.c.CelestialCrusader.class));
- cards.add(new SetCardInfo("Children of Korlis", 8, Rarity.COMMON, mage.cards.c.ChildrenOfKorlis.class));
- cards.add(new SetCardInfo("Chromatic Star", 251, Rarity.COMMON, mage.cards.c.ChromaticStar.class));
- cards.add(new SetCardInfo("Chronatog Totem", 252, Rarity.UNCOMMON, mage.cards.c.ChronatogTotem.class));
- cards.add(new SetCardInfo("Chronosavant", 9, Rarity.RARE, mage.cards.c.Chronosavant.class));
- cards.add(new SetCardInfo("Clockspinning", 53, Rarity.COMMON, mage.cards.c.Clockspinning.class));
- cards.add(new SetCardInfo("Clockwork Hydra", 253, Rarity.UNCOMMON, mage.cards.c.ClockworkHydra.class));
- cards.add(new SetCardInfo("Cloudchaser Kestrel", 10, Rarity.COMMON, mage.cards.c.CloudchaserKestrel.class));
- cards.add(new SetCardInfo("Coal Stoker", 150, Rarity.COMMON, mage.cards.c.CoalStoker.class));
- cards.add(new SetCardInfo("Conflagrate", 151, Rarity.UNCOMMON, mage.cards.c.Conflagrate.class));
- cards.add(new SetCardInfo("Coral Trickster", 54, Rarity.COMMON, mage.cards.c.CoralTrickster.class));
- cards.add(new SetCardInfo("Corpulent Corpse", 98, Rarity.COMMON, mage.cards.c.CorpulentCorpse.class));
- cards.add(new SetCardInfo("Crookclaw Transmuter", 55, Rarity.COMMON, mage.cards.c.CrookclawTransmuter.class));
- cards.add(new SetCardInfo("Curse of the Cabal", 99, Rarity.RARE, mage.cards.c.CurseOfTheCabal.class));
- cards.add(new SetCardInfo("Dark Withering", 101, Rarity.COMMON, mage.cards.d.DarkWithering.class));
- cards.add(new SetCardInfo("D'Avenant Healer", 11, Rarity.COMMON, mage.cards.d.DAvenantHealer.class));
- cards.add(new SetCardInfo("Deathspore Thallid", 102, Rarity.COMMON, mage.cards.d.DeathsporeThallid.class));
- cards.add(new SetCardInfo("Deep-Sea Kraken", 56, Rarity.RARE, mage.cards.d.DeepSeaKraken.class));
- cards.add(new SetCardInfo("Dementia Sliver", 236, Rarity.UNCOMMON, mage.cards.d.DementiaSliver.class));
- cards.add(new SetCardInfo("Demonic Collusion", 103, Rarity.RARE, mage.cards.d.DemonicCollusion.class));
- cards.add(new SetCardInfo("Detainment Spell", 12, Rarity.COMMON, mage.cards.d.DetainmentSpell.class));
- cards.add(new SetCardInfo("Divine Congregation", 13, Rarity.COMMON, mage.cards.d.DivineCongregation.class));
- cards.add(new SetCardInfo("Draining Whelk", 57, Rarity.RARE, mage.cards.d.DrainingWhelk.class));
- cards.add(new SetCardInfo("Dralnu, Lich Lord", 237, Rarity.RARE, mage.cards.d.DralnuLichLord.class));
- cards.add(new SetCardInfo("Dread Return", 104, Rarity.UNCOMMON, mage.cards.d.DreadReturn.class));
- cards.add(new SetCardInfo("Dreadship Reef", 271, Rarity.UNCOMMON, mage.cards.d.DreadshipReef.class));
- cards.add(new SetCardInfo("Dream Stalker", 58, Rarity.COMMON, mage.cards.d.DreamStalker.class));
- cards.add(new SetCardInfo("Drifter il-Dal", 59, Rarity.COMMON, mage.cards.d.DrifterIlDal.class));
- cards.add(new SetCardInfo("Drudge Reavers", 105, Rarity.COMMON, mage.cards.d.DrudgeReavers.class));
- cards.add(new SetCardInfo("Durkwood Baloth", 193, Rarity.COMMON, mage.cards.d.DurkwoodBaloth.class));
- cards.add(new SetCardInfo("Duskrider Peregrine", 14, Rarity.UNCOMMON, mage.cards.d.DuskriderPeregrine.class));
- cards.add(new SetCardInfo("Empty the Warrens", 152, Rarity.COMMON, mage.cards.e.EmptyTheWarrens.class));
- cards.add(new SetCardInfo("Endrek Sahr, Master Breeder", 106, Rarity.RARE, mage.cards.e.EndrekSahrMasterBreeder.class));
- cards.add(new SetCardInfo("Errant Doomsayers", 15, Rarity.COMMON, mage.cards.e.ErrantDoomsayers.class));
- cards.add(new SetCardInfo("Errant Ephemeron", 60, Rarity.COMMON, mage.cards.e.ErrantEphemeron.class));
- cards.add(new SetCardInfo("Eternity Snare", 61, Rarity.COMMON, mage.cards.e.EternitySnare.class));
- cards.add(new SetCardInfo("Evangelize", 16, Rarity.RARE, mage.cards.e.Evangelize.class));
- cards.add(new SetCardInfo("Evil Eye of Urborg", 107, Rarity.UNCOMMON, mage.cards.e.EvilEyeOfUrborg.class));
- cards.add(new SetCardInfo("Faceless Devourer", 108, Rarity.UNCOMMON, mage.cards.f.FacelessDevourer.class));
- cards.add(new SetCardInfo("Fallen Ideal", 109, Rarity.UNCOMMON, mage.cards.f.FallenIdeal.class));
- cards.add(new SetCardInfo("Fathom Seer", 62, Rarity.COMMON, mage.cards.f.FathomSeer.class));
- cards.add(new SetCardInfo("Feebleness", 110, Rarity.COMMON, mage.cards.f.Feebleness.class));
- cards.add(new SetCardInfo("Firemaw Kavu", 153, Rarity.UNCOMMON, mage.cards.f.FiremawKavu.class));
- cards.add(new SetCardInfo("Firewake Sliver", 238, Rarity.UNCOMMON, mage.cards.f.FirewakeSliver.class));
- cards.add(new SetCardInfo("Flagstones of Trokair", 272, Rarity.RARE, mage.cards.f.FlagstonesOfTrokair.class));
- cards.add(new SetCardInfo("Flamecore Elemental", 154, Rarity.COMMON, mage.cards.f.FlamecoreElemental.class));
- cards.add(new SetCardInfo("Fledgling Mawcor", 63, Rarity.UNCOMMON, mage.cards.f.FledglingMawcor.class));
- cards.add(new SetCardInfo("Flickering Spirit", 17, Rarity.COMMON, mage.cards.f.FlickeringSpirit.class));
- cards.add(new SetCardInfo("Flowstone Channeler", 155, Rarity.COMMON, mage.cards.f.FlowstoneChanneler.class));
- cards.add(new SetCardInfo("Fool's Demise", 64, Rarity.UNCOMMON, mage.cards.f.FoolsDemise.class));
- cards.add(new SetCardInfo("Forest", 298, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 299, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 300, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 301, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Foriysian Interceptor", 18, Rarity.COMMON, mage.cards.f.ForiysianInterceptor.class));
- cards.add(new SetCardInfo("Foriysian Totem", 254, Rarity.UNCOMMON, mage.cards.f.ForiysianTotem.class));
- cards.add(new SetCardInfo("Fortify", 19, Rarity.COMMON, mage.cards.f.Fortify.class));
- cards.add(new SetCardInfo("Fortune Thief", 156, Rarity.RARE, mage.cards.f.FortuneThief.class));
- cards.add(new SetCardInfo("Fungal Reaches", 273, Rarity.UNCOMMON, mage.cards.f.FungalReaches.class));
- cards.add(new SetCardInfo("Fungus Sliver", 195, Rarity.RARE, mage.cards.f.FungusSliver.class));
- cards.add(new SetCardInfo("Fury Sliver", 157, Rarity.UNCOMMON, mage.cards.f.FurySliver.class));
- cards.add(new SetCardInfo("Gauntlet of Power", 255, Rarity.RARE, mage.cards.g.GauntletOfPower.class));
- cards.add(new SetCardInfo("Gaze of Justice", 20, Rarity.COMMON, mage.cards.g.GazeOfJustice.class));
- cards.add(new SetCardInfo("Gemhide Sliver", 196, Rarity.COMMON, mage.cards.g.GemhideSliver.class));
- cards.add(new SetCardInfo("Gemstone Caverns", 274, Rarity.RARE, mage.cards.g.GemstoneCaverns.class));
- cards.add(new SetCardInfo("Ghitu Firebreathing", 158, Rarity.COMMON, mage.cards.g.GhituFirebreathing.class));
- cards.add(new SetCardInfo("Ghostflame Sliver", 239, Rarity.UNCOMMON, mage.cards.g.GhostflameSliver.class));
- cards.add(new SetCardInfo("Glass Asp", 197, Rarity.COMMON, mage.cards.g.GlassAsp.class));
- cards.add(new SetCardInfo("Goblin Skycutter", 159, Rarity.COMMON, mage.cards.g.GoblinSkycutter.class));
- cards.add(new SetCardInfo("Gorgon Recluse", 111, Rarity.COMMON, mage.cards.g.GorgonRecluse.class));
- cards.add(new SetCardInfo("Grapeshot", 160, Rarity.COMMON, mage.cards.g.Grapeshot.class));
- cards.add(new SetCardInfo("Greater Gargadon", 161, Rarity.RARE, mage.cards.g.GreaterGargadon.class));
- cards.add(new SetCardInfo("Greenseeker", 198, Rarity.COMMON, mage.cards.g.Greenseeker.class));
- cards.add(new SetCardInfo("Griffin Guide", 21, Rarity.UNCOMMON, mage.cards.g.GriffinGuide.class));
- cards.add(new SetCardInfo("Ground Rift", 162, Rarity.COMMON, mage.cards.g.GroundRift.class));
- cards.add(new SetCardInfo("Gustcloak Cavalier", 22, Rarity.UNCOMMON, mage.cards.g.GustcloakCavalier.class));
- cards.add(new SetCardInfo("Harmonic Sliver", 240, Rarity.UNCOMMON, mage.cards.h.HarmonicSliver.class));
- cards.add(new SetCardInfo("Haunting Hymn", 112, Rarity.UNCOMMON, mage.cards.h.HauntingHymn.class));
- cards.add(new SetCardInfo("Havenwood Wurm", 199, Rarity.COMMON, mage.cards.h.HavenwoodWurm.class));
- cards.add(new SetCardInfo("Herd Gnarr", 200, Rarity.COMMON, mage.cards.h.HerdGnarr.class));
- cards.add(new SetCardInfo("Hivestone", 256, Rarity.RARE, mage.cards.h.Hivestone.class));
- cards.add(new SetCardInfo("Hypergenesis", 201, Rarity.RARE, mage.cards.h.Hypergenesis.class));
- cards.add(new SetCardInfo("Ib Halfheart, Goblin Tactician", 163, Rarity.RARE, mage.cards.i.IbHalfheartGoblinTactician.class));
- cards.add(new SetCardInfo("Icatian Crier", 23, Rarity.COMMON, mage.cards.i.IcatianCrier.class));
- cards.add(new SetCardInfo("Ignite Memories", 164, Rarity.UNCOMMON, mage.cards.i.IgniteMemories.class));
- cards.add(new SetCardInfo("Ironclaw Buzzardiers", 165, Rarity.COMMON, mage.cards.i.IronclawBuzzardiers.class));
- cards.add(new SetCardInfo("Island", 286, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 287, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 288, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 289, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ith, High Arcanist", 241, Rarity.RARE, mage.cards.i.IthHighArcanist.class));
- cards.add(new SetCardInfo("Ivory Giant", 24, Rarity.COMMON, mage.cards.i.IvoryGiant.class));
- cards.add(new SetCardInfo("Ixidron", 65, Rarity.RARE, mage.cards.i.Ixidron.class));
- cards.add(new SetCardInfo("Jaya Ballard, Task Mage", 166, Rarity.RARE, mage.cards.j.JayaBallardTaskMage.class));
- cards.add(new SetCardInfo("Jedit's Dragoons", 25, Rarity.COMMON, mage.cards.j.JeditsDragoons.class));
- cards.add(new SetCardInfo("Jhoira's Timebug", 257, Rarity.COMMON, mage.cards.j.JhoirasTimebug.class));
- cards.add(new SetCardInfo("Kaervek the Merciless", 242, Rarity.RARE, mage.cards.k.KaervekTheMerciless.class));
- cards.add(new SetCardInfo("Keldon Halberdier", 167, Rarity.COMMON, mage.cards.k.KeldonHalberdier.class));
- cards.add(new SetCardInfo("Kher Keep", 275, Rarity.RARE, mage.cards.k.KherKeep.class));
- cards.add(new SetCardInfo("Knight of the Holy Nimbus", 26, Rarity.UNCOMMON, mage.cards.k.KnightOfTheHolyNimbus.class));
- cards.add(new SetCardInfo("Krosan Grip", 202, Rarity.UNCOMMON, mage.cards.k.KrosanGrip.class));
- cards.add(new SetCardInfo("Liege of the Pit", 113, Rarity.RARE, mage.cards.l.LiegeOfThePit.class));
- cards.add(new SetCardInfo("Lightning Axe", 168, Rarity.COMMON, mage.cards.l.LightningAxe.class));
- cards.add(new SetCardInfo("Lim-Dul the Necromancer", 114, Rarity.RARE, mage.cards.l.LimDulTheNecromancer.class));
- cards.add(new SetCardInfo("Living End", 115, Rarity.RARE, mage.cards.l.LivingEnd.class));
- cards.add(new SetCardInfo("Locket of Yesterdays", 258, Rarity.UNCOMMON, mage.cards.l.LocketOfYesterdays.class));
- cards.add(new SetCardInfo("Looter il-Kor", 66, Rarity.COMMON, mage.cards.l.LooterIlKor.class));
- cards.add(new SetCardInfo("Lotus Bloom", 259, Rarity.RARE, mage.cards.l.LotusBloom.class));
- cards.add(new SetCardInfo("Magus of the Candelabra", 203, Rarity.RARE, mage.cards.m.MagusOfTheCandelabra.class));
- cards.add(new SetCardInfo("Magus of the Disk", 27, Rarity.RARE, mage.cards.m.MagusOfTheDisk.class));
- cards.add(new SetCardInfo("Magus of the Jar", 67, Rarity.RARE, mage.cards.m.MagusOfTheJar.class));
- cards.add(new SetCardInfo("Magus of the Mirror", 116, Rarity.RARE, mage.cards.m.MagusOfTheMirror.class));
- cards.add(new SetCardInfo("Magus of the Scroll", 169, Rarity.RARE, mage.cards.m.MagusOfTheScroll.class));
- cards.add(new SetCardInfo("Mana Skimmer", 117, Rarity.COMMON, mage.cards.m.ManaSkimmer.class));
- cards.add(new SetCardInfo("Mangara of Corondor", 28, Rarity.RARE, mage.cards.m.MangaraOfCorondor.class));
- cards.add(new SetCardInfo("Might of Old Krosa", 204, Rarity.UNCOMMON, mage.cards.m.MightOfOldKrosa.class));
- cards.add(new SetCardInfo("Might Sliver", 205, Rarity.UNCOMMON, mage.cards.m.MightSliver.class));
- cards.add(new SetCardInfo("Mindlash Sliver", 118, Rarity.COMMON, mage.cards.m.MindlashSliver.class));
- cards.add(new SetCardInfo("Mindstab", 119, Rarity.COMMON, mage.cards.m.Mindstab.class));
- cards.add(new SetCardInfo("Mishra, Artificer Prodigy", 243, Rarity.RARE, mage.cards.m.MishraArtificerProdigy.class));
- cards.add(new SetCardInfo("Mogg War Marshal", 170, Rarity.COMMON, mage.cards.m.MoggWarMarshal.class));
- cards.add(new SetCardInfo("Molder", 206, Rarity.COMMON, mage.cards.m.Molder.class));
- cards.add(new SetCardInfo("Molten Slagheap", 276, Rarity.UNCOMMON, mage.cards.m.MoltenSlagheap.class));
- cards.add(new SetCardInfo("Momentary Blink", 29, Rarity.COMMON, mage.cards.m.MomentaryBlink.class));
- cards.add(new SetCardInfo("Moonlace", 68, Rarity.RARE, mage.cards.m.Moonlace.class));
- cards.add(new SetCardInfo("Mountain", 294, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 295, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 296, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 297, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mwonvuli Acid-Moss", 207, Rarity.COMMON, mage.cards.m.MwonvuliAcidMoss.class));
- cards.add(new SetCardInfo("Mystical Teachings", 69, Rarity.COMMON, mage.cards.m.MysticalTeachings.class));
- cards.add(new SetCardInfo("Nantuko Shaman", 208, Rarity.COMMON, mage.cards.n.NantukoShaman.class));
- cards.add(new SetCardInfo("Nether Traitor", 120, Rarity.RARE, mage.cards.n.NetherTraitor.class));
- cards.add(new SetCardInfo("Nightshade Assassin", 121, Rarity.UNCOMMON, mage.cards.n.NightshadeAssassin.class));
- cards.add(new SetCardInfo("Norin the Wary", 171, Rarity.RARE, mage.cards.n.NorinTheWary.class));
- cards.add(new SetCardInfo("Opal Guardian", 30, Rarity.RARE, mage.cards.o.OpalGuardian.class));
- cards.add(new SetCardInfo("Opaline Sliver", 244, Rarity.UNCOMMON, mage.cards.o.OpalineSliver.class));
- cards.add(new SetCardInfo("Ophidian Eye", 70, Rarity.COMMON, mage.cards.o.OphidianEye.class));
- cards.add(new SetCardInfo("Orcish Cannonade", 172, Rarity.COMMON, mage.cards.o.OrcishCannonade.class));
- cards.add(new SetCardInfo("Outrider en-Kor", 31, Rarity.UNCOMMON, mage.cards.o.OutriderEnKor.class));
- cards.add(new SetCardInfo("Paradise Plume", 260, Rarity.UNCOMMON, mage.cards.p.ParadisePlume.class));
- cards.add(new SetCardInfo("Paradox Haze", 71, Rarity.UNCOMMON, mage.cards.p.ParadoxHaze.class));
- cards.add(new SetCardInfo("Pardic Dragon", 173, Rarity.RARE, mage.cards.p.PardicDragon.class));
- cards.add(new SetCardInfo("Pendelhaven Elder", 209, Rarity.UNCOMMON, mage.cards.p.PendelhavenElder.class));
- cards.add(new SetCardInfo("Pentarch Paladin", 32, Rarity.RARE, mage.cards.p.PentarchPaladin.class));
- cards.add(new SetCardInfo("Pentarch Ward", 33, Rarity.COMMON, mage.cards.p.PentarchWard.class));
- cards.add(new SetCardInfo("Penumbra Spider", 210, Rarity.COMMON, mage.cards.p.PenumbraSpider.class));
- cards.add(new SetCardInfo("Phantom Wurm", 211, Rarity.UNCOMMON, mage.cards.p.PhantomWurm.class));
- cards.add(new SetCardInfo("Phthisis", 122, Rarity.UNCOMMON, mage.cards.p.Phthisis.class));
- cards.add(new SetCardInfo("Phyrexian Totem", 261, Rarity.UNCOMMON, mage.cards.p.PhyrexianTotem.class));
- cards.add(new SetCardInfo("Pit Keeper", 123, Rarity.COMMON, mage.cards.p.PitKeeper.class));
- cards.add(new SetCardInfo("Plague Sliver", 124, Rarity.RARE, mage.cards.p.PlagueSliver.class));
- cards.add(new SetCardInfo("Plains", 282, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 283, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 284, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 285, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plunder", 174, Rarity.COMMON, mage.cards.p.Plunder.class));
- cards.add(new SetCardInfo("Primal Forcemage", 212, Rarity.UNCOMMON, mage.cards.p.PrimalForcemage.class));
- cards.add(new SetCardInfo("Prismatic Lens", 262, Rarity.COMMON, mage.cards.p.PrismaticLens.class));
- cards.add(new SetCardInfo("Psionic Sliver", 72, Rarity.RARE, mage.cards.p.PsionicSliver.class));
- cards.add(new SetCardInfo("Psychotic Episode", 126, Rarity.COMMON, mage.cards.p.PsychoticEpisode.class));
- cards.add(new SetCardInfo("Pull from Eternity", 35, Rarity.UNCOMMON, mage.cards.p.PullFromEternity.class));
- cards.add(new SetCardInfo("Pulmonic Sliver", 36, Rarity.RARE, mage.cards.p.PulmonicSliver.class));
- cards.add(new SetCardInfo("Quilled Sliver", 37, Rarity.UNCOMMON, mage.cards.q.QuilledSliver.class));
- cards.add(new SetCardInfo("Reiterate", 175, Rarity.RARE, mage.cards.r.Reiterate.class));
- cards.add(new SetCardInfo("Restore Balance", 38, Rarity.RARE, mage.cards.r.RestoreBalance.class));
- cards.add(new SetCardInfo("Return to Dust", 39, Rarity.UNCOMMON, mage.cards.r.ReturnToDust.class));
- cards.add(new SetCardInfo("Rift Bolt", 176, Rarity.COMMON, mage.cards.r.RiftBolt.class));
- cards.add(new SetCardInfo("Riftwing Cloudskate", 73, Rarity.UNCOMMON, mage.cards.r.RiftwingCloudskate.class));
- cards.add(new SetCardInfo("Saffi Eriksdotter", 245, Rarity.RARE, mage.cards.s.SaffiEriksdotter.class));
- cards.add(new SetCardInfo("Sage of Epityr", 74, Rarity.COMMON, mage.cards.s.SageOfEpityr.class));
- cards.add(new SetCardInfo("Saltcrusted Steppe", 277, Rarity.UNCOMMON, mage.cards.s.SaltcrustedSteppe.class));
- cards.add(new SetCardInfo("Sangrophage", 127, Rarity.COMMON, mage.cards.s.Sangrophage.class));
- cards.add(new SetCardInfo("Sarpadian Empires, Vol. VII", 263, Rarity.RARE, mage.cards.s.SarpadianEmpiresVolVii.class));
- cards.add(new SetCardInfo("Savage Thallid", 213, Rarity.COMMON, mage.cards.s.SavageThallid.class));
- cards.add(new SetCardInfo("Scarwood Treefolk", 214, Rarity.COMMON, mage.cards.s.ScarwoodTreefolk.class));
- cards.add(new SetCardInfo("Scion of the Ur-Dragon", 246, Rarity.RARE, mage.cards.s.ScionOfTheUrDragon.class));
- cards.add(new SetCardInfo("Screeching Sliver", 75, Rarity.COMMON, mage.cards.s.ScreechingSliver.class));
- cards.add(new SetCardInfo("Scryb Ranger", 215, Rarity.UNCOMMON, mage.cards.s.ScrybRanger.class));
- cards.add(new SetCardInfo("Search for Tomorrow", 216, Rarity.COMMON, mage.cards.s.SearchForTomorrow.class));
- cards.add(new SetCardInfo("Sedge Sliver", 177, Rarity.RARE, mage.cards.s.SedgeSliver.class));
- cards.add(new SetCardInfo("Sengir Nosferatu", 128, Rarity.RARE, mage.cards.s.SengirNosferatu.class));
- cards.add(new SetCardInfo("Serra Avenger", 40, Rarity.RARE, mage.cards.s.SerraAvenger.class));
- cards.add(new SetCardInfo("Shadow Sliver", 76, Rarity.COMMON, mage.cards.s.ShadowSliver.class));
- cards.add(new SetCardInfo("Sidewinder Sliver", 41, Rarity.COMMON, mage.cards.s.SidewinderSliver.class));
- cards.add(new SetCardInfo("Skittering Monstrosity", 129, Rarity.UNCOMMON, mage.cards.s.SkitteringMonstrosity.class));
- cards.add(new SetCardInfo("Skulking Knight", 130, Rarity.COMMON, mage.cards.s.SkulkingKnight.class));
- cards.add(new SetCardInfo("Slipstream Serpent", 77, Rarity.COMMON, mage.cards.s.SlipstreamSerpent.class));
- cards.add(new SetCardInfo("Smallpox", 131, Rarity.UNCOMMON, mage.cards.s.Smallpox.class));
- cards.add(new SetCardInfo("Snapback", 78, Rarity.COMMON, mage.cards.s.Snapback.class));
- cards.add(new SetCardInfo("Spectral Force", 217, Rarity.RARE, mage.cards.s.SpectralForce.class));
- cards.add(new SetCardInfo("Spell Burst", 79, Rarity.UNCOMMON, mage.cards.s.SpellBurst.class));
- cards.add(new SetCardInfo("Spiketail Drakeling", 80, Rarity.COMMON, mage.cards.s.SpiketailDrakeling.class));
- cards.add(new SetCardInfo("Spike Tiller", 218, Rarity.RARE, mage.cards.s.SpikeTiller.class));
- cards.add(new SetCardInfo("Spinneret Sliver", 219, Rarity.COMMON, mage.cards.s.SpinneretSliver.class));
- cards.add(new SetCardInfo("Spirit Loop", 42, Rarity.UNCOMMON, mage.cards.s.SpiritLoop.class));
- cards.add(new SetCardInfo("Sporesower Thallid", 220, Rarity.UNCOMMON, mage.cards.s.SporesowerThallid.class));
- cards.add(new SetCardInfo("Sprite Noble", 81, Rarity.RARE, mage.cards.s.SpriteNoble.class));
- cards.add(new SetCardInfo("Sprout", 221, Rarity.COMMON, mage.cards.s.Sprout.class));
- cards.add(new SetCardInfo("Squall Line", 222, Rarity.RARE, mage.cards.s.SquallLine.class));
- cards.add(new SetCardInfo("Stonebrow, Krosan Hero", 247, Rarity.RARE, mage.cards.s.StonebrowKrosanHero.class));
- cards.add(new SetCardInfo("Stonewood Invocation", 223, Rarity.RARE, mage.cards.s.StonewoodInvocation.class));
- cards.add(new SetCardInfo("Stormcloud Djinn", 82, Rarity.UNCOMMON, mage.cards.s.StormcloudDjinn.class));
- cards.add(new SetCardInfo("Strangling Soot", 132, Rarity.COMMON, mage.cards.s.StranglingSoot.class));
- cards.add(new SetCardInfo("Strength in Numbers", 224, Rarity.COMMON, mage.cards.s.StrengthInNumbers.class));
- cards.add(new SetCardInfo("Stronghold Overseer", 133, Rarity.RARE, mage.cards.s.StrongholdOverseer.class));
- cards.add(new SetCardInfo("Stuffy Doll", 264, Rarity.RARE, mage.cards.s.StuffyDoll.class));
- cards.add(new SetCardInfo("Subterranean Shambler", 178, Rarity.COMMON, mage.cards.s.SubterraneanShambler.class));
- cards.add(new SetCardInfo("Sudden Death", 134, Rarity.UNCOMMON, mage.cards.s.SuddenDeath.class));
- cards.add(new SetCardInfo("Sudden Shock", 179, Rarity.UNCOMMON, mage.cards.s.SuddenShock.class));
- cards.add(new SetCardInfo("Sudden Spoiling", 135, Rarity.RARE, mage.cards.s.SuddenSpoiling.class));
- cards.add(new SetCardInfo("Sulfurous Blast", 180, Rarity.UNCOMMON, mage.cards.s.SulfurousBlast.class));
- cards.add(new SetCardInfo("Swamp", 290, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 291, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 292, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 293, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swarmyard", 278, Rarity.RARE, mage.cards.s.Swarmyard.class));
- cards.add(new SetCardInfo("Tectonic Fiend", 181, Rarity.UNCOMMON, mage.cards.t.TectonicFiend.class));
- cards.add(new SetCardInfo("Teferi, Mage of Zhalfir", 83, Rarity.RARE, mage.cards.t.TeferiMageOfZhalfir.class));
- cards.add(new SetCardInfo("Telekinetic Sliver", 84, Rarity.UNCOMMON, mage.cards.t.TelekineticSliver.class));
- cards.add(new SetCardInfo("Temporal Eddy", 85, Rarity.COMMON, mage.cards.t.TemporalEddy.class));
- cards.add(new SetCardInfo("Temporal Isolation", 43, Rarity.COMMON, mage.cards.t.TemporalIsolation.class));
- cards.add(new SetCardInfo("Tendrils of Corruption", 136, Rarity.COMMON, mage.cards.t.TendrilsOfCorruption.class));
- cards.add(new SetCardInfo("Terramorphic Expanse", 279, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
- cards.add(new SetCardInfo("Thallid Germinator", 225, Rarity.COMMON, mage.cards.t.ThallidGerminator.class));
- cards.add(new SetCardInfo("Thallid Shell-Dweller", 226, Rarity.COMMON, mage.cards.t.ThallidShellDweller.class));
- cards.add(new SetCardInfo("Thelonite Hermit", 228, Rarity.RARE, mage.cards.t.TheloniteHermit.class));
- cards.add(new SetCardInfo("Thelon of Havenwood", 227, Rarity.RARE, mage.cards.t.ThelonOfHavenwood.class));
- cards.add(new SetCardInfo("Think Twice", 86, Rarity.COMMON, mage.cards.t.ThinkTwice.class));
- cards.add(new SetCardInfo("Thrill of the Hunt", 229, Rarity.COMMON, mage.cards.t.ThrillOfTheHunt.class));
- cards.add(new SetCardInfo("Thunder Totem", 265, Rarity.UNCOMMON, mage.cards.t.ThunderTotem.class));
- cards.add(new SetCardInfo("Tivadar of Thorn", 44, Rarity.RARE, mage.cards.t.TivadarOfThorn.class));
- cards.add(new SetCardInfo("Tolarian Sentinel", 87, Rarity.COMMON, mage.cards.t.TolarianSentinel.class));
- cards.add(new SetCardInfo("Traitor's Clutch", 137, Rarity.COMMON, mage.cards.t.TraitorsClutch.class));
- cards.add(new SetCardInfo("Trespasser il-Vec", 138, Rarity.COMMON, mage.cards.t.TrespasserIlVec.class));
- cards.add(new SetCardInfo("Trickbind", 88, Rarity.RARE, mage.cards.t.Trickbind.class));
- cards.add(new SetCardInfo("Triskelavus", 266, Rarity.RARE, mage.cards.t.Triskelavus.class));
- cards.add(new SetCardInfo("Tromp the Domains", 230, Rarity.UNCOMMON, mage.cards.t.TrompTheDomains.class));
- cards.add(new SetCardInfo("Two-Headed Sliver", 183, Rarity.COMMON, mage.cards.t.TwoHeadedSliver.class));
- cards.add(new SetCardInfo("Undying Rage", 184, Rarity.UNCOMMON, mage.cards.u.UndyingRage.class));
- cards.add(new SetCardInfo("Unyaro Bees", 231, Rarity.RARE, mage.cards.u.UnyaroBees.class));
- cards.add(new SetCardInfo("Urborg Syphon-Mage", 139, Rarity.COMMON, mage.cards.u.UrborgSyphonMage.class));
- cards.add(new SetCardInfo("Urza's Factory", 280, Rarity.UNCOMMON, mage.cards.u.UrzasFactory.class));
- cards.add(new SetCardInfo("Vampiric Sliver", 140, Rarity.UNCOMMON, mage.cards.v.VampiricSliver.class));
- cards.add(new SetCardInfo("Venser's Sliver", 267, Rarity.COMMON, mage.cards.v.VensersSliver.class));
- cards.add(new SetCardInfo("Verdant Embrace", 232, Rarity.RARE, mage.cards.v.VerdantEmbrace.class));
- cards.add(new SetCardInfo("Vesuva", 281, Rarity.RARE, mage.cards.v.Vesuva.class));
- cards.add(new SetCardInfo("Vesuvan Shapeshifter", 90, Rarity.RARE, mage.cards.v.VesuvanShapeshifter.class));
- cards.add(new SetCardInfo("Viashino Bladescout", 185, Rarity.COMMON, mage.cards.v.ViashinoBladescout.class));
- cards.add(new SetCardInfo("Viscerid Deepwalker", 91, Rarity.COMMON, mage.cards.v.VisceridDeepwalker.class));
- cards.add(new SetCardInfo("Viscid Lemures", 141, Rarity.COMMON, mage.cards.v.ViscidLemures.class));
- cards.add(new SetCardInfo("Voidmage Husher", 92, Rarity.UNCOMMON, mage.cards.v.VoidmageHusher.class));
- cards.add(new SetCardInfo("Volcanic Awakening", 186, Rarity.UNCOMMON, mage.cards.v.VolcanicAwakening.class));
- cards.add(new SetCardInfo("Walk the Aeons", 93, Rarity.RARE, mage.cards.w.WalkTheAeons.class));
- cards.add(new SetCardInfo("Watcher Sliver", 45, Rarity.COMMON, mage.cards.w.WatcherSliver.class));
- cards.add(new SetCardInfo("Weathered Bodyguards", 46, Rarity.RARE, mage.cards.w.WeatheredBodyguards.class));
- cards.add(new SetCardInfo("Weatherseed Totem", 268, Rarity.UNCOMMON, mage.cards.w.WeatherseedTotem.class));
- cards.add(new SetCardInfo("Wheel of Fate", 187, Rarity.RARE, mage.cards.w.WheelOfFate.class));
- cards.add(new SetCardInfo("Wipe Away", 94, Rarity.UNCOMMON, mage.cards.w.WipeAway.class));
- cards.add(new SetCardInfo("Word of Seizing", 188, Rarity.RARE, mage.cards.w.WordOfSeizing.class));
- cards.add(new SetCardInfo("Wormwood Dryad", 233, Rarity.COMMON, mage.cards.w.WormwoodDryad.class));
- cards.add(new SetCardInfo("Wurmcalling", 234, Rarity.RARE, mage.cards.w.Wurmcalling.class));
- cards.add(new SetCardInfo("Yavimaya Dryad", 235, Rarity.UNCOMMON, mage.cards.y.YavimayaDryad.class));
- cards.add(new SetCardInfo("Zealot il-Vec", 47, Rarity.COMMON, mage.cards.z.ZealotIlVec.class));
- }
-
- @Override
- public List createBooster() {
- List booster = super.createBooster();
- CardCriteria criteria = new CardCriteria();
- criteria.rarities(Rarity.SPECIAL).setCodes("TSB");
- addToBooster(booster, CardRepository.instance.findCards(criteria));
- return booster;
- }
-}
+package mage.sets;
+
+import java.util.List;
+import mage.cards.Card;
+import mage.cards.ExpansionSet;
+import mage.cards.repository.CardCriteria;
+import mage.cards.repository.CardRepository;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+public final class TimeSpiral extends ExpansionSet {
+
+ private static final TimeSpiral instance = new TimeSpiral();
+
+ public static TimeSpiral getInstance() {
+ return instance;
+ }
+
+ private TimeSpiral() {
+ super("Time Spiral", "TSP", ExpansionSet.buildDate(2006, 9, 9), SetType.EXPANSION);
+ this.blockName = "Time Spiral";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 10;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Academy Ruins", 269, Rarity.RARE, mage.cards.a.AcademyRuins.class));
+ cards.add(new SetCardInfo("Amrou Scout", 1, Rarity.COMMON, mage.cards.a.AmrouScout.class));
+ cards.add(new SetCardInfo("Amrou Seekers", 2, Rarity.COMMON, mage.cards.a.AmrouSeekers.class));
+ cards.add(new SetCardInfo("Ancestral Vision", 48, Rarity.RARE, mage.cards.a.AncestralVision.class));
+ cards.add(new SetCardInfo("Ancient Grudge", 143, Rarity.COMMON, mage.cards.a.AncientGrudge.class));
+ cards.add(new SetCardInfo("Angel's Grace", 3, Rarity.RARE, mage.cards.a.AngelsGrace.class));
+ cards.add(new SetCardInfo("Ashcoat Bear", 190, Rarity.COMMON, mage.cards.a.AshcoatBear.class));
+ cards.add(new SetCardInfo("Aspect of Mongoose", 191, Rarity.UNCOMMON, mage.cards.a.AspectOfMongoose.class));
+ cards.add(new SetCardInfo("Assassinate", 95, Rarity.COMMON, mage.cards.a.Assassinate.class));
+ cards.add(new SetCardInfo("Assembly-Worker", 248, Rarity.UNCOMMON, mage.cards.a.AssemblyWorker.class));
+ cards.add(new SetCardInfo("Barbed Shocker", 144, Rarity.UNCOMMON, mage.cards.b.BarbedShocker.class));
+ cards.add(new SetCardInfo("Basal Sliver", 96, Rarity.COMMON, mage.cards.b.BasalSliver.class));
+ cards.add(new SetCardInfo("Basalt Gargoyle", 145, Rarity.UNCOMMON, mage.cards.b.BasaltGargoyle.class));
+ cards.add(new SetCardInfo("Benalish Cavalry", 4, Rarity.COMMON, mage.cards.b.BenalishCavalry.class));
+ cards.add(new SetCardInfo("Bewilder", 49, Rarity.COMMON, mage.cards.b.Bewilder.class));
+ cards.add(new SetCardInfo("Blazing Blade Askari", 146, Rarity.COMMON, mage.cards.b.BlazingBladeAskari.class));
+ cards.add(new SetCardInfo("Bogardan Hellkite", 147, Rarity.RARE, mage.cards.b.BogardanHellkite.class));
+ cards.add(new SetCardInfo("Bogardan Rager", 148, Rarity.COMMON, mage.cards.b.BogardanRager.class));
+ cards.add(new SetCardInfo("Bonesplitter Sliver", 149, Rarity.COMMON, mage.cards.b.BonesplitterSliver.class));
+ cards.add(new SetCardInfo("Brass Gnat", 249, Rarity.COMMON, mage.cards.b.BrassGnat.class));
+ cards.add(new SetCardInfo("Brine Elemental", 50, Rarity.UNCOMMON, mage.cards.b.BrineElemental.class));
+ cards.add(new SetCardInfo("Calciform Pools", 270, Rarity.UNCOMMON, mage.cards.c.CalciformPools.class));
+ cards.add(new SetCardInfo("Call to the Netherworld", 97, Rarity.COMMON, mage.cards.c.CallToTheNetherworld.class));
+ cards.add(new SetCardInfo("Cancel", 51, Rarity.COMMON, mage.cards.c.Cancel.class));
+ cards.add(new SetCardInfo("Candles of Leng", 250, Rarity.RARE, mage.cards.c.CandlesOfLeng.class));
+ cards.add(new SetCardInfo("Careful Consideration", 52, Rarity.UNCOMMON, mage.cards.c.CarefulConsideration.class));
+ cards.add(new SetCardInfo("Castle Raptors", 5, Rarity.COMMON, mage.cards.c.CastleRaptors.class));
+ cards.add(new SetCardInfo("Cavalry Master", 6, Rarity.UNCOMMON, mage.cards.c.CavalryMaster.class));
+ cards.add(new SetCardInfo("Celestial Crusader", 7, Rarity.UNCOMMON, mage.cards.c.CelestialCrusader.class));
+ cards.add(new SetCardInfo("Chameleon Blur", 192, Rarity.COMMON, mage.cards.c.ChameleonBlur.class));
+ cards.add(new SetCardInfo("Children of Korlis", 8, Rarity.COMMON, mage.cards.c.ChildrenOfKorlis.class));
+ cards.add(new SetCardInfo("Chromatic Star", 251, Rarity.COMMON, mage.cards.c.ChromaticStar.class));
+ cards.add(new SetCardInfo("Chronatog Totem", 252, Rarity.UNCOMMON, mage.cards.c.ChronatogTotem.class));
+ cards.add(new SetCardInfo("Chronosavant", 9, Rarity.RARE, mage.cards.c.Chronosavant.class));
+ cards.add(new SetCardInfo("Clockspinning", 53, Rarity.COMMON, mage.cards.c.Clockspinning.class));
+ cards.add(new SetCardInfo("Clockwork Hydra", 253, Rarity.UNCOMMON, mage.cards.c.ClockworkHydra.class));
+ cards.add(new SetCardInfo("Cloudchaser Kestrel", 10, Rarity.COMMON, mage.cards.c.CloudchaserKestrel.class));
+ cards.add(new SetCardInfo("Coal Stoker", 150, Rarity.COMMON, mage.cards.c.CoalStoker.class));
+ cards.add(new SetCardInfo("Conflagrate", 151, Rarity.UNCOMMON, mage.cards.c.Conflagrate.class));
+ cards.add(new SetCardInfo("Coral Trickster", 54, Rarity.COMMON, mage.cards.c.CoralTrickster.class));
+ cards.add(new SetCardInfo("Corpulent Corpse", 98, Rarity.COMMON, mage.cards.c.CorpulentCorpse.class));
+ cards.add(new SetCardInfo("Crookclaw Transmuter", 55, Rarity.COMMON, mage.cards.c.CrookclawTransmuter.class));
+ cards.add(new SetCardInfo("Curse of the Cabal", 99, Rarity.RARE, mage.cards.c.CurseOfTheCabal.class));
+ cards.add(new SetCardInfo("Dark Withering", 101, Rarity.COMMON, mage.cards.d.DarkWithering.class));
+ cards.add(new SetCardInfo("D'Avenant Healer", 11, Rarity.COMMON, mage.cards.d.DAvenantHealer.class));
+ cards.add(new SetCardInfo("Deathspore Thallid", 102, Rarity.COMMON, mage.cards.d.DeathsporeThallid.class));
+ cards.add(new SetCardInfo("Deep-Sea Kraken", 56, Rarity.RARE, mage.cards.d.DeepSeaKraken.class));
+ cards.add(new SetCardInfo("Dementia Sliver", 236, Rarity.UNCOMMON, mage.cards.d.DementiaSliver.class));
+ cards.add(new SetCardInfo("Demonic Collusion", 103, Rarity.RARE, mage.cards.d.DemonicCollusion.class));
+ cards.add(new SetCardInfo("Detainment Spell", 12, Rarity.COMMON, mage.cards.d.DetainmentSpell.class));
+ cards.add(new SetCardInfo("Divine Congregation", 13, Rarity.COMMON, mage.cards.d.DivineCongregation.class));
+ cards.add(new SetCardInfo("Draining Whelk", 57, Rarity.RARE, mage.cards.d.DrainingWhelk.class));
+ cards.add(new SetCardInfo("Dralnu, Lich Lord", 237, Rarity.RARE, mage.cards.d.DralnuLichLord.class));
+ cards.add(new SetCardInfo("Dread Return", 104, Rarity.UNCOMMON, mage.cards.d.DreadReturn.class));
+ cards.add(new SetCardInfo("Dreadship Reef", 271, Rarity.UNCOMMON, mage.cards.d.DreadshipReef.class));
+ cards.add(new SetCardInfo("Dream Stalker", 58, Rarity.COMMON, mage.cards.d.DreamStalker.class));
+ cards.add(new SetCardInfo("Drifter il-Dal", 59, Rarity.COMMON, mage.cards.d.DrifterIlDal.class));
+ cards.add(new SetCardInfo("Drudge Reavers", 105, Rarity.COMMON, mage.cards.d.DrudgeReavers.class));
+ cards.add(new SetCardInfo("Durkwood Baloth", 193, Rarity.COMMON, mage.cards.d.DurkwoodBaloth.class));
+ cards.add(new SetCardInfo("Durkwood Tracker", 194, Rarity.UNCOMMON, mage.cards.d.DurkwoodTracker.class));
+ cards.add(new SetCardInfo("Duskrider Peregrine", 14, Rarity.UNCOMMON, mage.cards.d.DuskriderPeregrine.class));
+ cards.add(new SetCardInfo("Empty the Warrens", 152, Rarity.COMMON, mage.cards.e.EmptyTheWarrens.class));
+ cards.add(new SetCardInfo("Endrek Sahr, Master Breeder", 106, Rarity.RARE, mage.cards.e.EndrekSahrMasterBreeder.class));
+ cards.add(new SetCardInfo("Errant Doomsayers", 15, Rarity.COMMON, mage.cards.e.ErrantDoomsayers.class));
+ cards.add(new SetCardInfo("Errant Ephemeron", 60, Rarity.COMMON, mage.cards.e.ErrantEphemeron.class));
+ cards.add(new SetCardInfo("Eternity Snare", 61, Rarity.COMMON, mage.cards.e.EternitySnare.class));
+ cards.add(new SetCardInfo("Evangelize", 16, Rarity.RARE, mage.cards.e.Evangelize.class));
+ cards.add(new SetCardInfo("Evil Eye of Urborg", 107, Rarity.UNCOMMON, mage.cards.e.EvilEyeOfUrborg.class));
+ cards.add(new SetCardInfo("Faceless Devourer", 108, Rarity.UNCOMMON, mage.cards.f.FacelessDevourer.class));
+ cards.add(new SetCardInfo("Fallen Ideal", 109, Rarity.UNCOMMON, mage.cards.f.FallenIdeal.class));
+ cards.add(new SetCardInfo("Fathom Seer", 62, Rarity.COMMON, mage.cards.f.FathomSeer.class));
+ cards.add(new SetCardInfo("Feebleness", 110, Rarity.COMMON, mage.cards.f.Feebleness.class));
+ cards.add(new SetCardInfo("Firemaw Kavu", 153, Rarity.UNCOMMON, mage.cards.f.FiremawKavu.class));
+ cards.add(new SetCardInfo("Firewake Sliver", 238, Rarity.UNCOMMON, mage.cards.f.FirewakeSliver.class));
+ cards.add(new SetCardInfo("Flagstones of Trokair", 272, Rarity.RARE, mage.cards.f.FlagstonesOfTrokair.class));
+ cards.add(new SetCardInfo("Flamecore Elemental", 154, Rarity.COMMON, mage.cards.f.FlamecoreElemental.class));
+ cards.add(new SetCardInfo("Fledgling Mawcor", 63, Rarity.UNCOMMON, mage.cards.f.FledglingMawcor.class));
+ cards.add(new SetCardInfo("Flickering Spirit", 17, Rarity.COMMON, mage.cards.f.FlickeringSpirit.class));
+ cards.add(new SetCardInfo("Flowstone Channeler", 155, Rarity.COMMON, mage.cards.f.FlowstoneChanneler.class));
+ cards.add(new SetCardInfo("Fool's Demise", 64, Rarity.UNCOMMON, mage.cards.f.FoolsDemise.class));
+ cards.add(new SetCardInfo("Forest", 298, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 299, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 300, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 301, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Foriysian Interceptor", 18, Rarity.COMMON, mage.cards.f.ForiysianInterceptor.class));
+ cards.add(new SetCardInfo("Foriysian Totem", 254, Rarity.UNCOMMON, mage.cards.f.ForiysianTotem.class));
+ cards.add(new SetCardInfo("Fortify", 19, Rarity.COMMON, mage.cards.f.Fortify.class));
+ cards.add(new SetCardInfo("Fortune Thief", 156, Rarity.RARE, mage.cards.f.FortuneThief.class));
+ cards.add(new SetCardInfo("Fungal Reaches", 273, Rarity.UNCOMMON, mage.cards.f.FungalReaches.class));
+ cards.add(new SetCardInfo("Fungus Sliver", 195, Rarity.RARE, mage.cards.f.FungusSliver.class));
+ cards.add(new SetCardInfo("Fury Sliver", 157, Rarity.UNCOMMON, mage.cards.f.FurySliver.class));
+ cards.add(new SetCardInfo("Gauntlet of Power", 255, Rarity.RARE, mage.cards.g.GauntletOfPower.class));
+ cards.add(new SetCardInfo("Gaze of Justice", 20, Rarity.COMMON, mage.cards.g.GazeOfJustice.class));
+ cards.add(new SetCardInfo("Gemhide Sliver", 196, Rarity.COMMON, mage.cards.g.GemhideSliver.class));
+ cards.add(new SetCardInfo("Gemstone Caverns", 274, Rarity.RARE, mage.cards.g.GemstoneCaverns.class));
+ cards.add(new SetCardInfo("Ghitu Firebreathing", 158, Rarity.COMMON, mage.cards.g.GhituFirebreathing.class));
+ cards.add(new SetCardInfo("Ghostflame Sliver", 239, Rarity.UNCOMMON, mage.cards.g.GhostflameSliver.class));
+ cards.add(new SetCardInfo("Glass Asp", 197, Rarity.COMMON, mage.cards.g.GlassAsp.class));
+ cards.add(new SetCardInfo("Goblin Skycutter", 159, Rarity.COMMON, mage.cards.g.GoblinSkycutter.class));
+ cards.add(new SetCardInfo("Gorgon Recluse", 111, Rarity.COMMON, mage.cards.g.GorgonRecluse.class));
+ cards.add(new SetCardInfo("Grapeshot", 160, Rarity.COMMON, mage.cards.g.Grapeshot.class));
+ cards.add(new SetCardInfo("Greater Gargadon", 161, Rarity.RARE, mage.cards.g.GreaterGargadon.class));
+ cards.add(new SetCardInfo("Greenseeker", 198, Rarity.COMMON, mage.cards.g.Greenseeker.class));
+ cards.add(new SetCardInfo("Griffin Guide", 21, Rarity.UNCOMMON, mage.cards.g.GriffinGuide.class));
+ cards.add(new SetCardInfo("Ground Rift", 162, Rarity.COMMON, mage.cards.g.GroundRift.class));
+ cards.add(new SetCardInfo("Gustcloak Cavalier", 22, Rarity.UNCOMMON, mage.cards.g.GustcloakCavalier.class));
+ cards.add(new SetCardInfo("Harmonic Sliver", 240, Rarity.UNCOMMON, mage.cards.h.HarmonicSliver.class));
+ cards.add(new SetCardInfo("Haunting Hymn", 112, Rarity.UNCOMMON, mage.cards.h.HauntingHymn.class));
+ cards.add(new SetCardInfo("Havenwood Wurm", 199, Rarity.COMMON, mage.cards.h.HavenwoodWurm.class));
+ cards.add(new SetCardInfo("Herd Gnarr", 200, Rarity.COMMON, mage.cards.h.HerdGnarr.class));
+ cards.add(new SetCardInfo("Hivestone", 256, Rarity.RARE, mage.cards.h.Hivestone.class));
+ cards.add(new SetCardInfo("Hypergenesis", 201, Rarity.RARE, mage.cards.h.Hypergenesis.class));
+ cards.add(new SetCardInfo("Ib Halfheart, Goblin Tactician", 163, Rarity.RARE, mage.cards.i.IbHalfheartGoblinTactician.class));
+ cards.add(new SetCardInfo("Icatian Crier", 23, Rarity.COMMON, mage.cards.i.IcatianCrier.class));
+ cards.add(new SetCardInfo("Ignite Memories", 164, Rarity.UNCOMMON, mage.cards.i.IgniteMemories.class));
+ cards.add(new SetCardInfo("Ironclaw Buzzardiers", 165, Rarity.COMMON, mage.cards.i.IronclawBuzzardiers.class));
+ cards.add(new SetCardInfo("Island", 286, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 287, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 288, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 289, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ith, High Arcanist", 241, Rarity.RARE, mage.cards.i.IthHighArcanist.class));
+ cards.add(new SetCardInfo("Ivory Giant", 24, Rarity.COMMON, mage.cards.i.IvoryGiant.class));
+ cards.add(new SetCardInfo("Ixidron", 65, Rarity.RARE, mage.cards.i.Ixidron.class));
+ cards.add(new SetCardInfo("Jaya Ballard, Task Mage", 166, Rarity.RARE, mage.cards.j.JayaBallardTaskMage.class));
+ cards.add(new SetCardInfo("Jedit's Dragoons", 25, Rarity.COMMON, mage.cards.j.JeditsDragoons.class));
+ cards.add(new SetCardInfo("Jhoira's Timebug", 257, Rarity.COMMON, mage.cards.j.JhoirasTimebug.class));
+ cards.add(new SetCardInfo("Kaervek the Merciless", 242, Rarity.RARE, mage.cards.k.KaervekTheMerciless.class));
+ cards.add(new SetCardInfo("Keldon Halberdier", 167, Rarity.COMMON, mage.cards.k.KeldonHalberdier.class));
+ cards.add(new SetCardInfo("Kher Keep", 275, Rarity.RARE, mage.cards.k.KherKeep.class));
+ cards.add(new SetCardInfo("Knight of the Holy Nimbus", 26, Rarity.UNCOMMON, mage.cards.k.KnightOfTheHolyNimbus.class));
+ cards.add(new SetCardInfo("Krosan Grip", 202, Rarity.UNCOMMON, mage.cards.k.KrosanGrip.class));
+ cards.add(new SetCardInfo("Liege of the Pit", 113, Rarity.RARE, mage.cards.l.LiegeOfThePit.class));
+ cards.add(new SetCardInfo("Lightning Axe", 168, Rarity.COMMON, mage.cards.l.LightningAxe.class));
+ cards.add(new SetCardInfo("Lim-Dul the Necromancer", 114, Rarity.RARE, mage.cards.l.LimDulTheNecromancer.class));
+ cards.add(new SetCardInfo("Living End", 115, Rarity.RARE, mage.cards.l.LivingEnd.class));
+ cards.add(new SetCardInfo("Locket of Yesterdays", 258, Rarity.UNCOMMON, mage.cards.l.LocketOfYesterdays.class));
+ cards.add(new SetCardInfo("Looter il-Kor", 66, Rarity.COMMON, mage.cards.l.LooterIlKor.class));
+ cards.add(new SetCardInfo("Lotus Bloom", 259, Rarity.RARE, mage.cards.l.LotusBloom.class));
+ cards.add(new SetCardInfo("Magus of the Candelabra", 203, Rarity.RARE, mage.cards.m.MagusOfTheCandelabra.class));
+ cards.add(new SetCardInfo("Magus of the Disk", 27, Rarity.RARE, mage.cards.m.MagusOfTheDisk.class));
+ cards.add(new SetCardInfo("Magus of the Jar", 67, Rarity.RARE, mage.cards.m.MagusOfTheJar.class));
+ cards.add(new SetCardInfo("Magus of the Mirror", 116, Rarity.RARE, mage.cards.m.MagusOfTheMirror.class));
+ cards.add(new SetCardInfo("Magus of the Scroll", 169, Rarity.RARE, mage.cards.m.MagusOfTheScroll.class));
+ cards.add(new SetCardInfo("Mana Skimmer", 117, Rarity.COMMON, mage.cards.m.ManaSkimmer.class));
+ cards.add(new SetCardInfo("Mangara of Corondor", 28, Rarity.RARE, mage.cards.m.MangaraOfCorondor.class));
+ cards.add(new SetCardInfo("Might of Old Krosa", 204, Rarity.UNCOMMON, mage.cards.m.MightOfOldKrosa.class));
+ cards.add(new SetCardInfo("Might Sliver", 205, Rarity.UNCOMMON, mage.cards.m.MightSliver.class));
+ cards.add(new SetCardInfo("Mindlash Sliver", 118, Rarity.COMMON, mage.cards.m.MindlashSliver.class));
+ cards.add(new SetCardInfo("Mindstab", 119, Rarity.COMMON, mage.cards.m.Mindstab.class));
+ cards.add(new SetCardInfo("Mishra, Artificer Prodigy", 243, Rarity.RARE, mage.cards.m.MishraArtificerProdigy.class));
+ cards.add(new SetCardInfo("Mogg War Marshal", 170, Rarity.COMMON, mage.cards.m.MoggWarMarshal.class));
+ cards.add(new SetCardInfo("Molder", 206, Rarity.COMMON, mage.cards.m.Molder.class));
+ cards.add(new SetCardInfo("Molten Slagheap", 276, Rarity.UNCOMMON, mage.cards.m.MoltenSlagheap.class));
+ cards.add(new SetCardInfo("Momentary Blink", 29, Rarity.COMMON, mage.cards.m.MomentaryBlink.class));
+ cards.add(new SetCardInfo("Moonlace", 68, Rarity.RARE, mage.cards.m.Moonlace.class));
+ cards.add(new SetCardInfo("Mountain", 294, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 295, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 296, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 297, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mwonvuli Acid-Moss", 207, Rarity.COMMON, mage.cards.m.MwonvuliAcidMoss.class));
+ cards.add(new SetCardInfo("Mystical Teachings", 69, Rarity.COMMON, mage.cards.m.MysticalTeachings.class));
+ cards.add(new SetCardInfo("Nantuko Shaman", 208, Rarity.COMMON, mage.cards.n.NantukoShaman.class));
+ cards.add(new SetCardInfo("Nether Traitor", 120, Rarity.RARE, mage.cards.n.NetherTraitor.class));
+ cards.add(new SetCardInfo("Nightshade Assassin", 121, Rarity.UNCOMMON, mage.cards.n.NightshadeAssassin.class));
+ cards.add(new SetCardInfo("Norin the Wary", 171, Rarity.RARE, mage.cards.n.NorinTheWary.class));
+ cards.add(new SetCardInfo("Opal Guardian", 30, Rarity.RARE, mage.cards.o.OpalGuardian.class));
+ cards.add(new SetCardInfo("Opaline Sliver", 244, Rarity.UNCOMMON, mage.cards.o.OpalineSliver.class));
+ cards.add(new SetCardInfo("Ophidian Eye", 70, Rarity.COMMON, mage.cards.o.OphidianEye.class));
+ cards.add(new SetCardInfo("Orcish Cannonade", 172, Rarity.COMMON, mage.cards.o.OrcishCannonade.class));
+ cards.add(new SetCardInfo("Outrider en-Kor", 31, Rarity.UNCOMMON, mage.cards.o.OutriderEnKor.class));
+ cards.add(new SetCardInfo("Paradise Plume", 260, Rarity.UNCOMMON, mage.cards.p.ParadisePlume.class));
+ cards.add(new SetCardInfo("Paradox Haze", 71, Rarity.UNCOMMON, mage.cards.p.ParadoxHaze.class));
+ cards.add(new SetCardInfo("Pardic Dragon", 173, Rarity.RARE, mage.cards.p.PardicDragon.class));
+ cards.add(new SetCardInfo("Pendelhaven Elder", 209, Rarity.UNCOMMON, mage.cards.p.PendelhavenElder.class));
+ cards.add(new SetCardInfo("Pentarch Paladin", 32, Rarity.RARE, mage.cards.p.PentarchPaladin.class));
+ cards.add(new SetCardInfo("Pentarch Ward", 33, Rarity.COMMON, mage.cards.p.PentarchWard.class));
+ cards.add(new SetCardInfo("Penumbra Spider", 210, Rarity.COMMON, mage.cards.p.PenumbraSpider.class));
+ cards.add(new SetCardInfo("Phantom Wurm", 211, Rarity.UNCOMMON, mage.cards.p.PhantomWurm.class));
+ cards.add(new SetCardInfo("Phthisis", 122, Rarity.UNCOMMON, mage.cards.p.Phthisis.class));
+ cards.add(new SetCardInfo("Phyrexian Totem", 261, Rarity.UNCOMMON, mage.cards.p.PhyrexianTotem.class));
+ cards.add(new SetCardInfo("Pit Keeper", 123, Rarity.COMMON, mage.cards.p.PitKeeper.class));
+ cards.add(new SetCardInfo("Plague Sliver", 124, Rarity.RARE, mage.cards.p.PlagueSliver.class));
+ cards.add(new SetCardInfo("Plains", 282, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 283, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 284, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 285, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plunder", 174, Rarity.COMMON, mage.cards.p.Plunder.class));
+ cards.add(new SetCardInfo("Primal Forcemage", 212, Rarity.UNCOMMON, mage.cards.p.PrimalForcemage.class));
+ cards.add(new SetCardInfo("Prismatic Lens", 262, Rarity.COMMON, mage.cards.p.PrismaticLens.class));
+ cards.add(new SetCardInfo("Psionic Sliver", 72, Rarity.RARE, mage.cards.p.PsionicSliver.class));
+ cards.add(new SetCardInfo("Psychotic Episode", 126, Rarity.COMMON, mage.cards.p.PsychoticEpisode.class));
+ cards.add(new SetCardInfo("Pull from Eternity", 35, Rarity.UNCOMMON, mage.cards.p.PullFromEternity.class));
+ cards.add(new SetCardInfo("Pulmonic Sliver", 36, Rarity.RARE, mage.cards.p.PulmonicSliver.class));
+ cards.add(new SetCardInfo("Quilled Sliver", 37, Rarity.UNCOMMON, mage.cards.q.QuilledSliver.class));
+ cards.add(new SetCardInfo("Reiterate", 175, Rarity.RARE, mage.cards.r.Reiterate.class));
+ cards.add(new SetCardInfo("Restore Balance", 38, Rarity.RARE, mage.cards.r.RestoreBalance.class));
+ cards.add(new SetCardInfo("Return to Dust", 39, Rarity.UNCOMMON, mage.cards.r.ReturnToDust.class));
+ cards.add(new SetCardInfo("Rift Bolt", 176, Rarity.COMMON, mage.cards.r.RiftBolt.class));
+ cards.add(new SetCardInfo("Riftwing Cloudskate", 73, Rarity.UNCOMMON, mage.cards.r.RiftwingCloudskate.class));
+ cards.add(new SetCardInfo("Saffi Eriksdotter", 245, Rarity.RARE, mage.cards.s.SaffiEriksdotter.class));
+ cards.add(new SetCardInfo("Sage of Epityr", 74, Rarity.COMMON, mage.cards.s.SageOfEpityr.class));
+ cards.add(new SetCardInfo("Saltcrusted Steppe", 277, Rarity.UNCOMMON, mage.cards.s.SaltcrustedSteppe.class));
+ cards.add(new SetCardInfo("Sangrophage", 127, Rarity.COMMON, mage.cards.s.Sangrophage.class));
+ cards.add(new SetCardInfo("Sarpadian Empires, Vol. VII", 263, Rarity.RARE, mage.cards.s.SarpadianEmpiresVolVii.class));
+ cards.add(new SetCardInfo("Savage Thallid", 213, Rarity.COMMON, mage.cards.s.SavageThallid.class));
+ cards.add(new SetCardInfo("Scarwood Treefolk", 214, Rarity.COMMON, mage.cards.s.ScarwoodTreefolk.class));
+ cards.add(new SetCardInfo("Scion of the Ur-Dragon", 246, Rarity.RARE, mage.cards.s.ScionOfTheUrDragon.class));
+ cards.add(new SetCardInfo("Screeching Sliver", 75, Rarity.COMMON, mage.cards.s.ScreechingSliver.class));
+ cards.add(new SetCardInfo("Scryb Ranger", 215, Rarity.UNCOMMON, mage.cards.s.ScrybRanger.class));
+ cards.add(new SetCardInfo("Search for Tomorrow", 216, Rarity.COMMON, mage.cards.s.SearchForTomorrow.class));
+ cards.add(new SetCardInfo("Sedge Sliver", 177, Rarity.RARE, mage.cards.s.SedgeSliver.class));
+ cards.add(new SetCardInfo("Sengir Nosferatu", 128, Rarity.RARE, mage.cards.s.SengirNosferatu.class));
+ cards.add(new SetCardInfo("Serra Avenger", 40, Rarity.RARE, mage.cards.s.SerraAvenger.class));
+ cards.add(new SetCardInfo("Shadow Sliver", 76, Rarity.COMMON, mage.cards.s.ShadowSliver.class));
+ cards.add(new SetCardInfo("Sidewinder Sliver", 41, Rarity.COMMON, mage.cards.s.SidewinderSliver.class));
+ cards.add(new SetCardInfo("Skittering Monstrosity", 129, Rarity.UNCOMMON, mage.cards.s.SkitteringMonstrosity.class));
+ cards.add(new SetCardInfo("Skulking Knight", 130, Rarity.COMMON, mage.cards.s.SkulkingKnight.class));
+ cards.add(new SetCardInfo("Slipstream Serpent", 77, Rarity.COMMON, mage.cards.s.SlipstreamSerpent.class));
+ cards.add(new SetCardInfo("Smallpox", 131, Rarity.UNCOMMON, mage.cards.s.Smallpox.class));
+ cards.add(new SetCardInfo("Snapback", 78, Rarity.COMMON, mage.cards.s.Snapback.class));
+ cards.add(new SetCardInfo("Spectral Force", 217, Rarity.RARE, mage.cards.s.SpectralForce.class));
+ cards.add(new SetCardInfo("Spell Burst", 79, Rarity.UNCOMMON, mage.cards.s.SpellBurst.class));
+ cards.add(new SetCardInfo("Spiketail Drakeling", 80, Rarity.COMMON, mage.cards.s.SpiketailDrakeling.class));
+ cards.add(new SetCardInfo("Spike Tiller", 218, Rarity.RARE, mage.cards.s.SpikeTiller.class));
+ cards.add(new SetCardInfo("Spinneret Sliver", 219, Rarity.COMMON, mage.cards.s.SpinneretSliver.class));
+ cards.add(new SetCardInfo("Spirit Loop", 42, Rarity.UNCOMMON, mage.cards.s.SpiritLoop.class));
+ cards.add(new SetCardInfo("Sporesower Thallid", 220, Rarity.UNCOMMON, mage.cards.s.SporesowerThallid.class));
+ cards.add(new SetCardInfo("Sprite Noble", 81, Rarity.RARE, mage.cards.s.SpriteNoble.class));
+ cards.add(new SetCardInfo("Sprout", 221, Rarity.COMMON, mage.cards.s.Sprout.class));
+ cards.add(new SetCardInfo("Squall Line", 222, Rarity.RARE, mage.cards.s.SquallLine.class));
+ cards.add(new SetCardInfo("Stonebrow, Krosan Hero", 247, Rarity.RARE, mage.cards.s.StonebrowKrosanHero.class));
+ cards.add(new SetCardInfo("Stonewood Invocation", 223, Rarity.RARE, mage.cards.s.StonewoodInvocation.class));
+ cards.add(new SetCardInfo("Stormcloud Djinn", 82, Rarity.UNCOMMON, mage.cards.s.StormcloudDjinn.class));
+ cards.add(new SetCardInfo("Strangling Soot", 132, Rarity.COMMON, mage.cards.s.StranglingSoot.class));
+ cards.add(new SetCardInfo("Strength in Numbers", 224, Rarity.COMMON, mage.cards.s.StrengthInNumbers.class));
+ cards.add(new SetCardInfo("Stronghold Overseer", 133, Rarity.RARE, mage.cards.s.StrongholdOverseer.class));
+ cards.add(new SetCardInfo("Stuffy Doll", 264, Rarity.RARE, mage.cards.s.StuffyDoll.class));
+ cards.add(new SetCardInfo("Subterranean Shambler", 178, Rarity.COMMON, mage.cards.s.SubterraneanShambler.class));
+ cards.add(new SetCardInfo("Sudden Death", 134, Rarity.UNCOMMON, mage.cards.s.SuddenDeath.class));
+ cards.add(new SetCardInfo("Sudden Shock", 179, Rarity.UNCOMMON, mage.cards.s.SuddenShock.class));
+ cards.add(new SetCardInfo("Sudden Spoiling", 135, Rarity.RARE, mage.cards.s.SuddenSpoiling.class));
+ cards.add(new SetCardInfo("Sulfurous Blast", 180, Rarity.UNCOMMON, mage.cards.s.SulfurousBlast.class));
+ cards.add(new SetCardInfo("Swamp", 290, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 291, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 292, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 293, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swarmyard", 278, Rarity.RARE, mage.cards.s.Swarmyard.class));
+ cards.add(new SetCardInfo("Tectonic Fiend", 181, Rarity.UNCOMMON, mage.cards.t.TectonicFiend.class));
+ cards.add(new SetCardInfo("Teferi, Mage of Zhalfir", 83, Rarity.RARE, mage.cards.t.TeferiMageOfZhalfir.class));
+ cards.add(new SetCardInfo("Telekinetic Sliver", 84, Rarity.UNCOMMON, mage.cards.t.TelekineticSliver.class));
+ cards.add(new SetCardInfo("Temporal Eddy", 85, Rarity.COMMON, mage.cards.t.TemporalEddy.class));
+ cards.add(new SetCardInfo("Temporal Isolation", 43, Rarity.COMMON, mage.cards.t.TemporalIsolation.class));
+ cards.add(new SetCardInfo("Tendrils of Corruption", 136, Rarity.COMMON, mage.cards.t.TendrilsOfCorruption.class));
+ cards.add(new SetCardInfo("Terramorphic Expanse", 279, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
+ cards.add(new SetCardInfo("Thallid Germinator", 225, Rarity.COMMON, mage.cards.t.ThallidGerminator.class));
+ cards.add(new SetCardInfo("Thallid Shell-Dweller", 226, Rarity.COMMON, mage.cards.t.ThallidShellDweller.class));
+ cards.add(new SetCardInfo("Thelonite Hermit", 228, Rarity.RARE, mage.cards.t.TheloniteHermit.class));
+ cards.add(new SetCardInfo("Thelon of Havenwood", 227, Rarity.RARE, mage.cards.t.ThelonOfHavenwood.class));
+ cards.add(new SetCardInfo("Think Twice", 86, Rarity.COMMON, mage.cards.t.ThinkTwice.class));
+ cards.add(new SetCardInfo("Thrill of the Hunt", 229, Rarity.COMMON, mage.cards.t.ThrillOfTheHunt.class));
+ cards.add(new SetCardInfo("Thunder Totem", 265, Rarity.UNCOMMON, mage.cards.t.ThunderTotem.class));
+ cards.add(new SetCardInfo("Tivadar of Thorn", 44, Rarity.RARE, mage.cards.t.TivadarOfThorn.class));
+ cards.add(new SetCardInfo("Tolarian Sentinel", 87, Rarity.COMMON, mage.cards.t.TolarianSentinel.class));
+ cards.add(new SetCardInfo("Traitor's Clutch", 137, Rarity.COMMON, mage.cards.t.TraitorsClutch.class));
+ cards.add(new SetCardInfo("Trespasser il-Vec", 138, Rarity.COMMON, mage.cards.t.TrespasserIlVec.class));
+ cards.add(new SetCardInfo("Trickbind", 88, Rarity.RARE, mage.cards.t.Trickbind.class));
+ cards.add(new SetCardInfo("Triskelavus", 266, Rarity.RARE, mage.cards.t.Triskelavus.class));
+ cards.add(new SetCardInfo("Tromp the Domains", 230, Rarity.UNCOMMON, mage.cards.t.TrompTheDomains.class));
+ cards.add(new SetCardInfo("Two-Headed Sliver", 183, Rarity.COMMON, mage.cards.t.TwoHeadedSliver.class));
+ cards.add(new SetCardInfo("Undying Rage", 184, Rarity.UNCOMMON, mage.cards.u.UndyingRage.class));
+ cards.add(new SetCardInfo("Unyaro Bees", 231, Rarity.RARE, mage.cards.u.UnyaroBees.class));
+ cards.add(new SetCardInfo("Urborg Syphon-Mage", 139, Rarity.COMMON, mage.cards.u.UrborgSyphonMage.class));
+ cards.add(new SetCardInfo("Urza's Factory", 280, Rarity.UNCOMMON, mage.cards.u.UrzasFactory.class));
+ cards.add(new SetCardInfo("Vampiric Sliver", 140, Rarity.UNCOMMON, mage.cards.v.VampiricSliver.class));
+ cards.add(new SetCardInfo("Venser's Sliver", 267, Rarity.COMMON, mage.cards.v.VensersSliver.class));
+ cards.add(new SetCardInfo("Verdant Embrace", 232, Rarity.RARE, mage.cards.v.VerdantEmbrace.class));
+ cards.add(new SetCardInfo("Vesuva", 281, Rarity.RARE, mage.cards.v.Vesuva.class));
+ cards.add(new SetCardInfo("Vesuvan Shapeshifter", 90, Rarity.RARE, mage.cards.v.VesuvanShapeshifter.class));
+ cards.add(new SetCardInfo("Viashino Bladescout", 185, Rarity.COMMON, mage.cards.v.ViashinoBladescout.class));
+ cards.add(new SetCardInfo("Viscerid Deepwalker", 91, Rarity.COMMON, mage.cards.v.VisceridDeepwalker.class));
+ cards.add(new SetCardInfo("Viscid Lemures", 141, Rarity.COMMON, mage.cards.v.ViscidLemures.class));
+ cards.add(new SetCardInfo("Voidmage Husher", 92, Rarity.UNCOMMON, mage.cards.v.VoidmageHusher.class));
+ cards.add(new SetCardInfo("Volcanic Awakening", 186, Rarity.UNCOMMON, mage.cards.v.VolcanicAwakening.class));
+ cards.add(new SetCardInfo("Walk the Aeons", 93, Rarity.RARE, mage.cards.w.WalkTheAeons.class));
+ cards.add(new SetCardInfo("Watcher Sliver", 45, Rarity.COMMON, mage.cards.w.WatcherSliver.class));
+ cards.add(new SetCardInfo("Weathered Bodyguards", 46, Rarity.RARE, mage.cards.w.WeatheredBodyguards.class));
+ cards.add(new SetCardInfo("Weatherseed Totem", 268, Rarity.UNCOMMON, mage.cards.w.WeatherseedTotem.class));
+ cards.add(new SetCardInfo("Wheel of Fate", 187, Rarity.RARE, mage.cards.w.WheelOfFate.class));
+ cards.add(new SetCardInfo("Wipe Away", 94, Rarity.UNCOMMON, mage.cards.w.WipeAway.class));
+ cards.add(new SetCardInfo("Word of Seizing", 188, Rarity.RARE, mage.cards.w.WordOfSeizing.class));
+ cards.add(new SetCardInfo("Wormwood Dryad", 233, Rarity.COMMON, mage.cards.w.WormwoodDryad.class));
+ cards.add(new SetCardInfo("Wurmcalling", 234, Rarity.RARE, mage.cards.w.Wurmcalling.class));
+ cards.add(new SetCardInfo("Yavimaya Dryad", 235, Rarity.UNCOMMON, mage.cards.y.YavimayaDryad.class));
+ cards.add(new SetCardInfo("Zealot il-Vec", 47, Rarity.COMMON, mage.cards.z.ZealotIlVec.class));
+ }
+
+ @Override
+ public List createBooster() {
+ List booster = super.createBooster();
+ CardCriteria criteria = new CardCriteria();
+ criteria.rarities(Rarity.SPECIAL).setCodes("TSB");
+ addToBooster(booster, CardRepository.instance.findCards(criteria));
+ return booster;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/TimeSpiralTimeshifted.java b/Mage.Sets/src/mage/sets/TimeSpiralTimeshifted.java
index d124325bccc..2088281f156 100644
--- a/Mage.Sets/src/mage/sets/TimeSpiralTimeshifted.java
+++ b/Mage.Sets/src/mage/sets/TimeSpiralTimeshifted.java
@@ -37,7 +37,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class TimeSpiralTimeshifted extends ExpansionSet {
+public final class TimeSpiralTimeshifted extends ExpansionSet {
private static final TimeSpiralTimeshifted instance = new TimeSpiralTimeshifted();
diff --git a/Mage.Sets/src/mage/sets/Torment.java b/Mage.Sets/src/mage/sets/Torment.java
index 6d69b7240b0..99051eaca30 100644
--- a/Mage.Sets/src/mage/sets/Torment.java
+++ b/Mage.Sets/src/mage/sets/Torment.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class Torment extends ExpansionSet {
+public final class Torment extends ExpansionSet {
private static final Torment instance = new Torment();
diff --git a/Mage.Sets/src/mage/sets/UginsFate.java b/Mage.Sets/src/mage/sets/UginsFate.java
index a54fa8d5989..d5a8b33be59 100644
--- a/Mage.Sets/src/mage/sets/UginsFate.java
+++ b/Mage.Sets/src/mage/sets/UginsFate.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class UginsFate extends ExpansionSet {
+public final class UginsFate extends ExpansionSet {
private static final UginsFate instance = new UginsFate();
diff --git a/Mage.Sets/src/mage/sets/Unglued.java b/Mage.Sets/src/mage/sets/Unglued.java
index 48aa475c3b4..00114c8eb98 100644
--- a/Mage.Sets/src/mage/sets/Unglued.java
+++ b/Mage.Sets/src/mage/sets/Unglued.java
@@ -10,7 +10,7 @@ import mage.constants.SetType;
*
* @author lopho
*/
-public class Unglued extends ExpansionSet {
+public final class Unglued extends ExpansionSet {
private static final Unglued instance = new Unglued();
diff --git a/Mage.Sets/src/mage/sets/Unhinged.java b/Mage.Sets/src/mage/sets/Unhinged.java
index b4e4aedb0d4..a2098352175 100644
--- a/Mage.Sets/src/mage/sets/Unhinged.java
+++ b/Mage.Sets/src/mage/sets/Unhinged.java
@@ -10,7 +10,7 @@ import mage.constants.SetType;
*
* @author magenoxx
*/
-public class Unhinged extends ExpansionSet {
+public final class Unhinged extends ExpansionSet {
private static final Unhinged instance = new Unhinged();
diff --git a/Mage.Sets/src/mage/sets/UnlimitedEdition.java b/Mage.Sets/src/mage/sets/UnlimitedEdition.java
index 5fcfc293f2b..c2dc591ecf0 100644
--- a/Mage.Sets/src/mage/sets/UnlimitedEdition.java
+++ b/Mage.Sets/src/mage/sets/UnlimitedEdition.java
@@ -8,7 +8,7 @@ import mage.constants.SetType;
*
* @author North
*/
-public class UnlimitedEdition extends ExpansionSet {
+public final class UnlimitedEdition extends ExpansionSet {
private static final UnlimitedEdition instance = new UnlimitedEdition();
diff --git a/Mage.Sets/src/mage/sets/Unstable.java b/Mage.Sets/src/mage/sets/Unstable.java
index b21b1f77343..27deec90be6 100644
--- a/Mage.Sets/src/mage/sets/Unstable.java
+++ b/Mage.Sets/src/mage/sets/Unstable.java
@@ -37,7 +37,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class Unstable extends ExpansionSet {
+public final class Unstable extends ExpansionSet {
private static final Unstable instance = new Unstable();
diff --git a/Mage.Sets/src/mage/sets/UrzasDestiny.java b/Mage.Sets/src/mage/sets/UrzasDestiny.java
index 082450cfd86..2111014fafb 100644
--- a/Mage.Sets/src/mage/sets/UrzasDestiny.java
+++ b/Mage.Sets/src/mage/sets/UrzasDestiny.java
@@ -1,182 +1,182 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author Backfir3
- */
-public class UrzasDestiny extends ExpansionSet {
-
- private static final UrzasDestiny instance = new UrzasDestiny();
-
- public static UrzasDestiny getInstance() {
- return instance;
- }
-
- private UrzasDestiny() {
- super("Urza's Destiny", "UDS", ExpansionSet.buildDate(1999, 6, 7), SetType.EXPANSION);
- this.blockName = "Urza";
- this.parentSet = UrzasSaga.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("Academy Rector", 1, Rarity.RARE, mage.cards.a.AcademyRector.class));
- cards.add(new SetCardInfo("Aether Sting", 76, Rarity.UNCOMMON, mage.cards.a.AetherSting.class));
- cards.add(new SetCardInfo("Ancient Silverback", 101, Rarity.RARE, mage.cards.a.AncientSilverback.class));
- cards.add(new SetCardInfo("Apprentice Necromancer", 51, Rarity.RARE, mage.cards.a.ApprenticeNecromancer.class));
- cards.add(new SetCardInfo("Attrition", 52, Rarity.RARE, mage.cards.a.Attrition.class));
- cards.add(new SetCardInfo("Aura Thief", 26, Rarity.RARE, mage.cards.a.AuraThief.class));
- cards.add(new SetCardInfo("Blizzard Elemental", 27, Rarity.RARE, mage.cards.b.BlizzardElemental.class));
- cards.add(new SetCardInfo("Bloodshot Cyclops", 77, Rarity.RARE, mage.cards.b.BloodshotCyclops.class));
- cards.add(new SetCardInfo("Body Snatcher", 53, Rarity.RARE, mage.cards.b.BodySnatcher.class));
- cards.add(new SetCardInfo("Braidwood Cup", 126, Rarity.UNCOMMON, mage.cards.b.BraidwoodCup.class));
- cards.add(new SetCardInfo("Braidwood Sextant", 127, Rarity.UNCOMMON, mage.cards.b.BraidwoodSextant.class));
- cards.add(new SetCardInfo("Brass Secretary", 128, Rarity.UNCOMMON, mage.cards.b.BrassSecretary.class));
- cards.add(new SetCardInfo("Bubbling Beebles", 29, Rarity.COMMON, mage.cards.b.BubblingBeebles.class));
- cards.add(new SetCardInfo("Bubbling Muck", 54, Rarity.COMMON, mage.cards.b.BubblingMuck.class));
- cards.add(new SetCardInfo("Caltrops", 129, Rarity.UNCOMMON, mage.cards.c.Caltrops.class));
- cards.add(new SetCardInfo("Capashen Knight", 3, Rarity.COMMON, mage.cards.c.CapashenKnight.class));
- cards.add(new SetCardInfo("Capashen Standard", 4, Rarity.COMMON, mage.cards.c.CapashenStandard.class));
- cards.add(new SetCardInfo("Capashen Templar", 5, Rarity.COMMON, mage.cards.c.CapashenTemplar.class));
- cards.add(new SetCardInfo("Carnival of Souls", 55, Rarity.RARE, mage.cards.c.CarnivalOfSouls.class));
- cards.add(new SetCardInfo("Chime of Night", 56, Rarity.COMMON, mage.cards.c.ChimeOfNight.class));
- cards.add(new SetCardInfo("Colos Yearling", 79, Rarity.COMMON, mage.cards.c.ColosYearling.class));
- cards.add(new SetCardInfo("Compost", 102, Rarity.UNCOMMON, mage.cards.c.Compost.class));
- cards.add(new SetCardInfo("Covetous Dragon", 80, Rarity.RARE, mage.cards.c.CovetousDragon.class));
- cards.add(new SetCardInfo("Disease Carriers", 57, Rarity.COMMON, mage.cards.d.DiseaseCarriers.class));
- cards.add(new SetCardInfo("Donate", 31, Rarity.RARE, mage.cards.d.Donate.class));
- cards.add(new SetCardInfo("Dying Wail", 58, Rarity.COMMON, mage.cards.d.DyingWail.class));
- cards.add(new SetCardInfo("Elvish Lookout", 103, Rarity.COMMON, mage.cards.e.ElvishLookout.class));
- cards.add(new SetCardInfo("Elvish Piper", 104, Rarity.RARE, mage.cards.e.ElvishPiper.class));
- cards.add(new SetCardInfo("Emperor Crocodile", 105, Rarity.RARE, mage.cards.e.EmperorCrocodile.class));
- cards.add(new SetCardInfo("Encroach", 59, Rarity.UNCOMMON, mage.cards.e.Encroach.class));
- cards.add(new SetCardInfo("Eradicate", 60, Rarity.UNCOMMON, mage.cards.e.Eradicate.class));
- cards.add(new SetCardInfo("Extruder", 130, Rarity.UNCOMMON, mage.cards.e.Extruder.class));
- cards.add(new SetCardInfo("False Prophet", 6, Rarity.RARE, mage.cards.f.FalseProphet.class));
- cards.add(new SetCardInfo("Festering Wound", 61, Rarity.UNCOMMON, mage.cards.f.FesteringWound.class));
- cards.add(new SetCardInfo("Field Surgeon", 8, Rarity.COMMON, mage.cards.f.FieldSurgeon.class));
- cards.add(new SetCardInfo("Flame Jet", 81, Rarity.COMMON, mage.cards.f.FlameJet.class));
- cards.add(new SetCardInfo("Fledgling Osprey", 33, Rarity.COMMON, mage.cards.f.FledglingOsprey.class));
- cards.add(new SetCardInfo("Flicker", 9, Rarity.RARE, mage.cards.f.Flicker.class));
- cards.add(new SetCardInfo("Fodder Cannon", 131, Rarity.UNCOMMON, mage.cards.f.FodderCannon.class));
- cards.add(new SetCardInfo("Gamekeeper", 106, Rarity.UNCOMMON, mage.cards.g.Gamekeeper.class));
- cards.add(new SetCardInfo("Goblin Berserker", 82, Rarity.UNCOMMON, mage.cards.g.GoblinBerserker.class));
- cards.add(new SetCardInfo("Goblin Festival", 83, Rarity.RARE, mage.cards.g.GoblinFestival.class));
- cards.add(new SetCardInfo("Goblin Gardener", 84, Rarity.COMMON, mage.cards.g.GoblinGardener.class));
- cards.add(new SetCardInfo("Goblin Marshal", 85, Rarity.RARE, mage.cards.g.GoblinMarshal.class));
- cards.add(new SetCardInfo("Goblin Masons", 86, Rarity.COMMON, mage.cards.g.GoblinMasons.class));
- cards.add(new SetCardInfo("Goliath Beetle", 107, Rarity.COMMON, mage.cards.g.GoliathBeetle.class));
- cards.add(new SetCardInfo("Heart Warden", 108, Rarity.COMMON, mage.cards.h.HeartWarden.class));
- cards.add(new SetCardInfo("Hulking Ogre", 87, Rarity.COMMON, mage.cards.h.HulkingOgre.class));
- cards.add(new SetCardInfo("Hunting Moa", 109, Rarity.UNCOMMON, mage.cards.h.HuntingMoa.class));
- cards.add(new SetCardInfo("Illuminated Wings", 34, Rarity.COMMON, mage.cards.i.IlluminatedWings.class));
- cards.add(new SetCardInfo("Impatience", 88, Rarity.RARE, mage.cards.i.Impatience.class));
- cards.add(new SetCardInfo("Iridescent Drake", 35, Rarity.UNCOMMON, mage.cards.i.IridescentDrake.class));
- cards.add(new SetCardInfo("Junk Diver", 132, Rarity.RARE, mage.cards.j.JunkDiver.class));
- cards.add(new SetCardInfo("Keldon Champion", 90, Rarity.UNCOMMON, mage.cards.k.KeldonChampion.class));
- cards.add(new SetCardInfo("Keldon Vandals", 91, Rarity.COMMON, mage.cards.k.KeldonVandals.class));
- cards.add(new SetCardInfo("Kingfisher", 36, Rarity.COMMON, mage.cards.k.Kingfisher.class));
- cards.add(new SetCardInfo("Landslide", 92, Rarity.UNCOMMON, mage.cards.l.Landslide.class));
- cards.add(new SetCardInfo("Magnify", 111, Rarity.COMMON, mage.cards.m.Magnify.class));
- cards.add(new SetCardInfo("Mantis Engine", 133, Rarity.UNCOMMON, mage.cards.m.MantisEngine.class));
- cards.add(new SetCardInfo("Marker Beetles", 112, Rarity.COMMON, mage.cards.m.MarkerBeetles.class));
- cards.add(new SetCardInfo("Mark of Fury", 93, Rarity.COMMON, mage.cards.m.MarkOfFury.class));
- cards.add(new SetCardInfo("Mask of Law and Grace", 11, Rarity.COMMON, mage.cards.m.MaskOfLawAndGrace.class));
- cards.add(new SetCardInfo("Master Healer", 12, Rarity.RARE, mage.cards.m.MasterHealer.class));
- cards.add(new SetCardInfo("Masticore", 134, Rarity.RARE, mage.cards.m.Masticore.class));
- cards.add(new SetCardInfo("Mental Discipline", 37, Rarity.COMMON, mage.cards.m.MentalDiscipline.class));
- cards.add(new SetCardInfo("Metalworker", 135, Rarity.RARE, mage.cards.m.Metalworker.class));
- cards.add(new SetCardInfo("Metathran Soldier", 39, Rarity.COMMON, mage.cards.m.MetathranSoldier.class));
- cards.add(new SetCardInfo("Momentum", 113, Rarity.UNCOMMON, mage.cards.m.Momentum.class));
- cards.add(new SetCardInfo("Multani's Decree", 114, Rarity.COMMON, mage.cards.m.MultanisDecree.class));
- cards.add(new SetCardInfo("Opalescence", 13, Rarity.RARE, mage.cards.o.Opalescence.class));
- cards.add(new SetCardInfo("Opposition", 40, Rarity.RARE, mage.cards.o.Opposition.class));
- cards.add(new SetCardInfo("Pattern of Rebirth", 115, Rarity.RARE, mage.cards.p.PatternOfRebirth.class));
- cards.add(new SetCardInfo("Phyrexian Monitor", 64, Rarity.COMMON, mage.cards.p.PhyrexianMonitor.class));
- cards.add(new SetCardInfo("Phyrexian Negator", 65, Rarity.RARE, mage.cards.p.PhyrexianNegator.class));
- cards.add(new SetCardInfo("Plague Dogs", 66, Rarity.UNCOMMON, mage.cards.p.PlagueDogs.class));
- cards.add(new SetCardInfo("Plated Spider", 116, Rarity.COMMON, mage.cards.p.PlatedSpider.class));
- cards.add(new SetCardInfo("Plow Under", 117, Rarity.RARE, mage.cards.p.PlowUnder.class));
- cards.add(new SetCardInfo("Powder Keg", 136, Rarity.RARE, mage.cards.p.PowderKeg.class));
- cards.add(new SetCardInfo("Quash", 42, Rarity.UNCOMMON, mage.cards.q.Quash.class));
- cards.add(new SetCardInfo("Rapid Decay", 67, Rarity.RARE, mage.cards.r.RapidDecay.class));
- cards.add(new SetCardInfo("Ravenous Rats", 68, Rarity.COMMON, mage.cards.r.RavenousRats.class));
- cards.add(new SetCardInfo("Rayne, Academy Chancellor", 43, Rarity.RARE, mage.cards.r.RayneAcademyChancellor.class));
- cards.add(new SetCardInfo("Reckless Abandon", 94, Rarity.COMMON, mage.cards.r.RecklessAbandon.class));
- cards.add(new SetCardInfo("Reliquary Monk", 14, Rarity.COMMON, mage.cards.r.ReliquaryMonk.class));
- cards.add(new SetCardInfo("Repercussion", 95, Rarity.RARE, mage.cards.r.Repercussion.class));
- cards.add(new SetCardInfo("Replenish", 15, Rarity.RARE, mage.cards.r.Replenish.class));
- cards.add(new SetCardInfo("Rescue", 44, Rarity.COMMON, mage.cards.r.Rescue.class));
- cards.add(new SetCardInfo("Rofellos, Llanowar Emissary", 118, Rarity.RARE, mage.cards.r.RofellosLlanowarEmissary.class));
- cards.add(new SetCardInfo("Sanctimony", 16, Rarity.UNCOMMON, mage.cards.s.Sanctimony.class));
- cards.add(new SetCardInfo("Scent of Jasmine", 17, Rarity.COMMON, mage.cards.s.ScentOfJasmine.class));
- cards.add(new SetCardInfo("Scour", 18, Rarity.UNCOMMON, mage.cards.s.Scour.class));
- cards.add(new SetCardInfo("Serra Advocate", 19, Rarity.UNCOMMON, mage.cards.s.SerraAdvocate.class));
- cards.add(new SetCardInfo("Sigil of Sleep", 46, Rarity.COMMON, mage.cards.s.SigilOfSleep.class));
- cards.add(new SetCardInfo("Skittering Horror", 70, Rarity.COMMON, mage.cards.s.SkitteringHorror.class));
- cards.add(new SetCardInfo("Slinking Skirge", 71, Rarity.COMMON, mage.cards.s.SlinkingSkirge.class));
- cards.add(new SetCardInfo("Solidarity", 20, Rarity.COMMON, mage.cards.s.Solidarity.class));
- cards.add(new SetCardInfo("Soul Feast", 72, Rarity.UNCOMMON, mage.cards.s.SoulFeast.class));
- cards.add(new SetCardInfo("Sowing Salt", 97, Rarity.UNCOMMON, mage.cards.s.SowingSalt.class));
- cards.add(new SetCardInfo("Splinter", 121, Rarity.UNCOMMON, mage.cards.s.Splinter.class));
- cards.add(new SetCardInfo("Squirming Mass", 73, Rarity.COMMON, mage.cards.s.SquirmingMass.class));
- cards.add(new SetCardInfo("Storage Matrix", 138, Rarity.RARE, mage.cards.s.StorageMatrix.class));
- cards.add(new SetCardInfo("Taunting Elf", 122, Rarity.COMMON, mage.cards.t.TauntingElf.class));
- cards.add(new SetCardInfo("Telepathic Spies", 47, Rarity.COMMON, mage.cards.t.TelepathicSpies.class));
- cards.add(new SetCardInfo("Temporal Adept", 48, Rarity.RARE, mage.cards.t.TemporalAdept.class));
- cards.add(new SetCardInfo("Tethered Griffin", 21, Rarity.RARE, mage.cards.t.TetheredGriffin.class));
- cards.add(new SetCardInfo("Thieving Magpie", 49, Rarity.UNCOMMON, mage.cards.t.ThievingMagpie.class));
- cards.add(new SetCardInfo("Thorn Elemental", 123, Rarity.RARE, mage.cards.t.ThornElemental.class));
- cards.add(new SetCardInfo("Thran Dynamo", 139, Rarity.UNCOMMON, mage.cards.t.ThranDynamo.class));
- cards.add(new SetCardInfo("Thran Foundry", 140, Rarity.UNCOMMON, mage.cards.t.ThranFoundry.class));
- cards.add(new SetCardInfo("Thran Golem", 141, Rarity.RARE, mage.cards.t.ThranGolem.class));
- cards.add(new SetCardInfo("Tormented Angel", 22, Rarity.COMMON, mage.cards.t.TormentedAngel.class));
- cards.add(new SetCardInfo("Treachery", 50, Rarity.RARE, mage.cards.t.Treachery.class));
- cards.add(new SetCardInfo("Trumpet Blast", 98, Rarity.COMMON, mage.cards.t.TrumpetBlast.class));
- cards.add(new SetCardInfo("Twisted Experiment", 74, Rarity.COMMON, mage.cards.t.TwistedExperiment.class));
- cards.add(new SetCardInfo("Urza's Incubator", 142, Rarity.RARE, mage.cards.u.UrzasIncubator.class));
- cards.add(new SetCardInfo("Voice of Duty", 23, Rarity.UNCOMMON, mage.cards.v.VoiceOfDuty.class));
- cards.add(new SetCardInfo("Voice of Reason", 24, Rarity.UNCOMMON, mage.cards.v.VoiceOfReason.class));
- cards.add(new SetCardInfo("Wake of Destruction", 99, Rarity.RARE, mage.cards.w.WakeOfDestruction.class));
- cards.add(new SetCardInfo("Wall of Glare", 25, Rarity.COMMON, mage.cards.w.WallOfGlare.class));
- cards.add(new SetCardInfo("Wild Colos", 100, Rarity.COMMON, mage.cards.w.WildColos.class));
- cards.add(new SetCardInfo("Yavimaya Elder", 124, Rarity.COMMON, mage.cards.y.YavimayaElder.class));
- cards.add(new SetCardInfo("Yavimaya Enchantress", 125, Rarity.UNCOMMON, mage.cards.y.YavimayaEnchantress.class));
- cards.add(new SetCardInfo("Yavimaya Hollow", 143, Rarity.RARE, mage.cards.y.YavimayaHollow.class));
- cards.add(new SetCardInfo("Yawgmoth's Bargain", 75, Rarity.RARE, mage.cards.y.YawgmothsBargain.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author Backfir3
+ */
+public final class UrzasDestiny extends ExpansionSet {
+
+ private static final UrzasDestiny instance = new UrzasDestiny();
+
+ public static UrzasDestiny getInstance() {
+ return instance;
+ }
+
+ private UrzasDestiny() {
+ super("Urza's Destiny", "UDS", ExpansionSet.buildDate(1999, 6, 7), SetType.EXPANSION);
+ this.blockName = "Urza";
+ this.parentSet = UrzasSaga.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("Academy Rector", 1, Rarity.RARE, mage.cards.a.AcademyRector.class));
+ cards.add(new SetCardInfo("Aether Sting", 76, Rarity.UNCOMMON, mage.cards.a.AetherSting.class));
+ cards.add(new SetCardInfo("Ancient Silverback", 101, Rarity.RARE, mage.cards.a.AncientSilverback.class));
+ cards.add(new SetCardInfo("Apprentice Necromancer", 51, Rarity.RARE, mage.cards.a.ApprenticeNecromancer.class));
+ cards.add(new SetCardInfo("Attrition", 52, Rarity.RARE, mage.cards.a.Attrition.class));
+ cards.add(new SetCardInfo("Aura Thief", 26, Rarity.RARE, mage.cards.a.AuraThief.class));
+ cards.add(new SetCardInfo("Blizzard Elemental", 27, Rarity.RARE, mage.cards.b.BlizzardElemental.class));
+ cards.add(new SetCardInfo("Bloodshot Cyclops", 77, Rarity.RARE, mage.cards.b.BloodshotCyclops.class));
+ cards.add(new SetCardInfo("Body Snatcher", 53, Rarity.RARE, mage.cards.b.BodySnatcher.class));
+ cards.add(new SetCardInfo("Braidwood Cup", 126, Rarity.UNCOMMON, mage.cards.b.BraidwoodCup.class));
+ cards.add(new SetCardInfo("Braidwood Sextant", 127, Rarity.UNCOMMON, mage.cards.b.BraidwoodSextant.class));
+ cards.add(new SetCardInfo("Brass Secretary", 128, Rarity.UNCOMMON, mage.cards.b.BrassSecretary.class));
+ cards.add(new SetCardInfo("Bubbling Beebles", 29, Rarity.COMMON, mage.cards.b.BubblingBeebles.class));
+ cards.add(new SetCardInfo("Bubbling Muck", 54, Rarity.COMMON, mage.cards.b.BubblingMuck.class));
+ cards.add(new SetCardInfo("Caltrops", 129, Rarity.UNCOMMON, mage.cards.c.Caltrops.class));
+ cards.add(new SetCardInfo("Capashen Knight", 3, Rarity.COMMON, mage.cards.c.CapashenKnight.class));
+ cards.add(new SetCardInfo("Capashen Standard", 4, Rarity.COMMON, mage.cards.c.CapashenStandard.class));
+ cards.add(new SetCardInfo("Capashen Templar", 5, Rarity.COMMON, mage.cards.c.CapashenTemplar.class));
+ cards.add(new SetCardInfo("Carnival of Souls", 55, Rarity.RARE, mage.cards.c.CarnivalOfSouls.class));
+ cards.add(new SetCardInfo("Chime of Night", 56, Rarity.COMMON, mage.cards.c.ChimeOfNight.class));
+ cards.add(new SetCardInfo("Colos Yearling", 79, Rarity.COMMON, mage.cards.c.ColosYearling.class));
+ cards.add(new SetCardInfo("Compost", 102, Rarity.UNCOMMON, mage.cards.c.Compost.class));
+ cards.add(new SetCardInfo("Covetous Dragon", 80, Rarity.RARE, mage.cards.c.CovetousDragon.class));
+ cards.add(new SetCardInfo("Disease Carriers", 57, Rarity.COMMON, mage.cards.d.DiseaseCarriers.class));
+ cards.add(new SetCardInfo("Donate", 31, Rarity.RARE, mage.cards.d.Donate.class));
+ cards.add(new SetCardInfo("Dying Wail", 58, Rarity.COMMON, mage.cards.d.DyingWail.class));
+ cards.add(new SetCardInfo("Elvish Lookout", 103, Rarity.COMMON, mage.cards.e.ElvishLookout.class));
+ cards.add(new SetCardInfo("Elvish Piper", 104, Rarity.RARE, mage.cards.e.ElvishPiper.class));
+ cards.add(new SetCardInfo("Emperor Crocodile", 105, Rarity.RARE, mage.cards.e.EmperorCrocodile.class));
+ cards.add(new SetCardInfo("Encroach", 59, Rarity.UNCOMMON, mage.cards.e.Encroach.class));
+ cards.add(new SetCardInfo("Eradicate", 60, Rarity.UNCOMMON, mage.cards.e.Eradicate.class));
+ cards.add(new SetCardInfo("Extruder", 130, Rarity.UNCOMMON, mage.cards.e.Extruder.class));
+ cards.add(new SetCardInfo("False Prophet", 6, Rarity.RARE, mage.cards.f.FalseProphet.class));
+ cards.add(new SetCardInfo("Festering Wound", 61, Rarity.UNCOMMON, mage.cards.f.FesteringWound.class));
+ cards.add(new SetCardInfo("Field Surgeon", 8, Rarity.COMMON, mage.cards.f.FieldSurgeon.class));
+ cards.add(new SetCardInfo("Flame Jet", 81, Rarity.COMMON, mage.cards.f.FlameJet.class));
+ cards.add(new SetCardInfo("Fledgling Osprey", 33, Rarity.COMMON, mage.cards.f.FledglingOsprey.class));
+ cards.add(new SetCardInfo("Flicker", 9, Rarity.RARE, mage.cards.f.Flicker.class));
+ cards.add(new SetCardInfo("Fodder Cannon", 131, Rarity.UNCOMMON, mage.cards.f.FodderCannon.class));
+ cards.add(new SetCardInfo("Gamekeeper", 106, Rarity.UNCOMMON, mage.cards.g.Gamekeeper.class));
+ cards.add(new SetCardInfo("Goblin Berserker", 82, Rarity.UNCOMMON, mage.cards.g.GoblinBerserker.class));
+ cards.add(new SetCardInfo("Goblin Festival", 83, Rarity.RARE, mage.cards.g.GoblinFestival.class));
+ cards.add(new SetCardInfo("Goblin Gardener", 84, Rarity.COMMON, mage.cards.g.GoblinGardener.class));
+ cards.add(new SetCardInfo("Goblin Marshal", 85, Rarity.RARE, mage.cards.g.GoblinMarshal.class));
+ cards.add(new SetCardInfo("Goblin Masons", 86, Rarity.COMMON, mage.cards.g.GoblinMasons.class));
+ cards.add(new SetCardInfo("Goliath Beetle", 107, Rarity.COMMON, mage.cards.g.GoliathBeetle.class));
+ cards.add(new SetCardInfo("Heart Warden", 108, Rarity.COMMON, mage.cards.h.HeartWarden.class));
+ cards.add(new SetCardInfo("Hulking Ogre", 87, Rarity.COMMON, mage.cards.h.HulkingOgre.class));
+ cards.add(new SetCardInfo("Hunting Moa", 109, Rarity.UNCOMMON, mage.cards.h.HuntingMoa.class));
+ cards.add(new SetCardInfo("Illuminated Wings", 34, Rarity.COMMON, mage.cards.i.IlluminatedWings.class));
+ cards.add(new SetCardInfo("Impatience", 88, Rarity.RARE, mage.cards.i.Impatience.class));
+ cards.add(new SetCardInfo("Iridescent Drake", 35, Rarity.UNCOMMON, mage.cards.i.IridescentDrake.class));
+ cards.add(new SetCardInfo("Junk Diver", 132, Rarity.RARE, mage.cards.j.JunkDiver.class));
+ cards.add(new SetCardInfo("Keldon Champion", 90, Rarity.UNCOMMON, mage.cards.k.KeldonChampion.class));
+ cards.add(new SetCardInfo("Keldon Vandals", 91, Rarity.COMMON, mage.cards.k.KeldonVandals.class));
+ cards.add(new SetCardInfo("Kingfisher", 36, Rarity.COMMON, mage.cards.k.Kingfisher.class));
+ cards.add(new SetCardInfo("Landslide", 92, Rarity.UNCOMMON, mage.cards.l.Landslide.class));
+ cards.add(new SetCardInfo("Magnify", 111, Rarity.COMMON, mage.cards.m.Magnify.class));
+ cards.add(new SetCardInfo("Mantis Engine", 133, Rarity.UNCOMMON, mage.cards.m.MantisEngine.class));
+ cards.add(new SetCardInfo("Marker Beetles", 112, Rarity.COMMON, mage.cards.m.MarkerBeetles.class));
+ cards.add(new SetCardInfo("Mark of Fury", 93, Rarity.COMMON, mage.cards.m.MarkOfFury.class));
+ cards.add(new SetCardInfo("Mask of Law and Grace", 11, Rarity.COMMON, mage.cards.m.MaskOfLawAndGrace.class));
+ cards.add(new SetCardInfo("Master Healer", 12, Rarity.RARE, mage.cards.m.MasterHealer.class));
+ cards.add(new SetCardInfo("Masticore", 134, Rarity.RARE, mage.cards.m.Masticore.class));
+ cards.add(new SetCardInfo("Mental Discipline", 37, Rarity.COMMON, mage.cards.m.MentalDiscipline.class));
+ cards.add(new SetCardInfo("Metalworker", 135, Rarity.RARE, mage.cards.m.Metalworker.class));
+ cards.add(new SetCardInfo("Metathran Soldier", 39, Rarity.COMMON, mage.cards.m.MetathranSoldier.class));
+ cards.add(new SetCardInfo("Momentum", 113, Rarity.UNCOMMON, mage.cards.m.Momentum.class));
+ cards.add(new SetCardInfo("Multani's Decree", 114, Rarity.COMMON, mage.cards.m.MultanisDecree.class));
+ cards.add(new SetCardInfo("Opalescence", 13, Rarity.RARE, mage.cards.o.Opalescence.class));
+ cards.add(new SetCardInfo("Opposition", 40, Rarity.RARE, mage.cards.o.Opposition.class));
+ cards.add(new SetCardInfo("Pattern of Rebirth", 115, Rarity.RARE, mage.cards.p.PatternOfRebirth.class));
+ cards.add(new SetCardInfo("Phyrexian Monitor", 64, Rarity.COMMON, mage.cards.p.PhyrexianMonitor.class));
+ cards.add(new SetCardInfo("Phyrexian Negator", 65, Rarity.RARE, mage.cards.p.PhyrexianNegator.class));
+ cards.add(new SetCardInfo("Plague Dogs", 66, Rarity.UNCOMMON, mage.cards.p.PlagueDogs.class));
+ cards.add(new SetCardInfo("Plated Spider", 116, Rarity.COMMON, mage.cards.p.PlatedSpider.class));
+ cards.add(new SetCardInfo("Plow Under", 117, Rarity.RARE, mage.cards.p.PlowUnder.class));
+ cards.add(new SetCardInfo("Powder Keg", 136, Rarity.RARE, mage.cards.p.PowderKeg.class));
+ cards.add(new SetCardInfo("Quash", 42, Rarity.UNCOMMON, mage.cards.q.Quash.class));
+ cards.add(new SetCardInfo("Rapid Decay", 67, Rarity.RARE, mage.cards.r.RapidDecay.class));
+ cards.add(new SetCardInfo("Ravenous Rats", 68, Rarity.COMMON, mage.cards.r.RavenousRats.class));
+ cards.add(new SetCardInfo("Rayne, Academy Chancellor", 43, Rarity.RARE, mage.cards.r.RayneAcademyChancellor.class));
+ cards.add(new SetCardInfo("Reckless Abandon", 94, Rarity.COMMON, mage.cards.r.RecklessAbandon.class));
+ cards.add(new SetCardInfo("Reliquary Monk", 14, Rarity.COMMON, mage.cards.r.ReliquaryMonk.class));
+ cards.add(new SetCardInfo("Repercussion", 95, Rarity.RARE, mage.cards.r.Repercussion.class));
+ cards.add(new SetCardInfo("Replenish", 15, Rarity.RARE, mage.cards.r.Replenish.class));
+ cards.add(new SetCardInfo("Rescue", 44, Rarity.COMMON, mage.cards.r.Rescue.class));
+ cards.add(new SetCardInfo("Rofellos, Llanowar Emissary", 118, Rarity.RARE, mage.cards.r.RofellosLlanowarEmissary.class));
+ cards.add(new SetCardInfo("Sanctimony", 16, Rarity.UNCOMMON, mage.cards.s.Sanctimony.class));
+ cards.add(new SetCardInfo("Scent of Jasmine", 17, Rarity.COMMON, mage.cards.s.ScentOfJasmine.class));
+ cards.add(new SetCardInfo("Scour", 18, Rarity.UNCOMMON, mage.cards.s.Scour.class));
+ cards.add(new SetCardInfo("Serra Advocate", 19, Rarity.UNCOMMON, mage.cards.s.SerraAdvocate.class));
+ cards.add(new SetCardInfo("Sigil of Sleep", 46, Rarity.COMMON, mage.cards.s.SigilOfSleep.class));
+ cards.add(new SetCardInfo("Skittering Horror", 70, Rarity.COMMON, mage.cards.s.SkitteringHorror.class));
+ cards.add(new SetCardInfo("Slinking Skirge", 71, Rarity.COMMON, mage.cards.s.SlinkingSkirge.class));
+ cards.add(new SetCardInfo("Solidarity", 20, Rarity.COMMON, mage.cards.s.Solidarity.class));
+ cards.add(new SetCardInfo("Soul Feast", 72, Rarity.UNCOMMON, mage.cards.s.SoulFeast.class));
+ cards.add(new SetCardInfo("Sowing Salt", 97, Rarity.UNCOMMON, mage.cards.s.SowingSalt.class));
+ cards.add(new SetCardInfo("Splinter", 121, Rarity.UNCOMMON, mage.cards.s.Splinter.class));
+ cards.add(new SetCardInfo("Squirming Mass", 73, Rarity.COMMON, mage.cards.s.SquirmingMass.class));
+ cards.add(new SetCardInfo("Storage Matrix", 138, Rarity.RARE, mage.cards.s.StorageMatrix.class));
+ cards.add(new SetCardInfo("Taunting Elf", 122, Rarity.COMMON, mage.cards.t.TauntingElf.class));
+ cards.add(new SetCardInfo("Telepathic Spies", 47, Rarity.COMMON, mage.cards.t.TelepathicSpies.class));
+ cards.add(new SetCardInfo("Temporal Adept", 48, Rarity.RARE, mage.cards.t.TemporalAdept.class));
+ cards.add(new SetCardInfo("Tethered Griffin", 21, Rarity.RARE, mage.cards.t.TetheredGriffin.class));
+ cards.add(new SetCardInfo("Thieving Magpie", 49, Rarity.UNCOMMON, mage.cards.t.ThievingMagpie.class));
+ cards.add(new SetCardInfo("Thorn Elemental", 123, Rarity.RARE, mage.cards.t.ThornElemental.class));
+ cards.add(new SetCardInfo("Thran Dynamo", 139, Rarity.UNCOMMON, mage.cards.t.ThranDynamo.class));
+ cards.add(new SetCardInfo("Thran Foundry", 140, Rarity.UNCOMMON, mage.cards.t.ThranFoundry.class));
+ cards.add(new SetCardInfo("Thran Golem", 141, Rarity.RARE, mage.cards.t.ThranGolem.class));
+ cards.add(new SetCardInfo("Tormented Angel", 22, Rarity.COMMON, mage.cards.t.TormentedAngel.class));
+ cards.add(new SetCardInfo("Treachery", 50, Rarity.RARE, mage.cards.t.Treachery.class));
+ cards.add(new SetCardInfo("Trumpet Blast", 98, Rarity.COMMON, mage.cards.t.TrumpetBlast.class));
+ cards.add(new SetCardInfo("Twisted Experiment", 74, Rarity.COMMON, mage.cards.t.TwistedExperiment.class));
+ cards.add(new SetCardInfo("Urza's Incubator", 142, Rarity.RARE, mage.cards.u.UrzasIncubator.class));
+ cards.add(new SetCardInfo("Voice of Duty", 23, Rarity.UNCOMMON, mage.cards.v.VoiceOfDuty.class));
+ cards.add(new SetCardInfo("Voice of Reason", 24, Rarity.UNCOMMON, mage.cards.v.VoiceOfReason.class));
+ cards.add(new SetCardInfo("Wake of Destruction", 99, Rarity.RARE, mage.cards.w.WakeOfDestruction.class));
+ cards.add(new SetCardInfo("Wall of Glare", 25, Rarity.COMMON, mage.cards.w.WallOfGlare.class));
+ cards.add(new SetCardInfo("Wild Colos", 100, Rarity.COMMON, mage.cards.w.WildColos.class));
+ cards.add(new SetCardInfo("Yavimaya Elder", 124, Rarity.COMMON, mage.cards.y.YavimayaElder.class));
+ cards.add(new SetCardInfo("Yavimaya Enchantress", 125, Rarity.UNCOMMON, mage.cards.y.YavimayaEnchantress.class));
+ cards.add(new SetCardInfo("Yavimaya Hollow", 143, Rarity.RARE, mage.cards.y.YavimayaHollow.class));
+ cards.add(new SetCardInfo("Yawgmoth's Bargain", 75, Rarity.RARE, mage.cards.y.YawgmothsBargain.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/UrzasLegacy.java b/Mage.Sets/src/mage/sets/UrzasLegacy.java
index 38b8dff7ede..55454afd15e 100644
--- a/Mage.Sets/src/mage/sets/UrzasLegacy.java
+++ b/Mage.Sets/src/mage/sets/UrzasLegacy.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author noxx
*/
-public class UrzasLegacy extends ExpansionSet {
+public final class UrzasLegacy extends ExpansionSet {
private static final UrzasLegacy instance = new UrzasLegacy();
diff --git a/Mage.Sets/src/mage/sets/UrzasSaga.java b/Mage.Sets/src/mage/sets/UrzasSaga.java
index 8a815ba8dc6..d60750b656d 100644
--- a/Mage.Sets/src/mage/sets/UrzasSaga.java
+++ b/Mage.Sets/src/mage/sets/UrzasSaga.java
@@ -1,387 +1,389 @@
-/*
-* 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author Backfir3
- */
-public class UrzasSaga extends ExpansionSet {
-
- private static final UrzasSaga instance = new UrzasSaga();
-
- public static UrzasSaga getInstance() {
- return instance;
- }
-
- private UrzasSaga() {
- super("Urza's Saga", "USG", ExpansionSet.buildDate(1998, 10, 12), SetType.EXPANSION);
- this.blockName = "Urza";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Absolute Grace", 1, Rarity.UNCOMMON, mage.cards.a.AbsoluteGrace.class));
- cards.add(new SetCardInfo("Absolute Law", 2, Rarity.UNCOMMON, mage.cards.a.AbsoluteLaw.class));
- cards.add(new SetCardInfo("Abundance", 229, Rarity.RARE, mage.cards.a.Abundance.class));
- cards.add(new SetCardInfo("Abyssal Horror", 115, Rarity.RARE, mage.cards.a.AbyssalHorror.class));
- cards.add(new SetCardInfo("Academy Researchers", 58, Rarity.UNCOMMON, mage.cards.a.AcademyResearchers.class));
- cards.add(new SetCardInfo("Acidic Soil", 172, Rarity.UNCOMMON, mage.cards.a.AcidicSoil.class));
- cards.add(new SetCardInfo("Acridian", 230, Rarity.COMMON, mage.cards.a.Acridian.class));
- cards.add(new SetCardInfo("Albino Troll", 231, Rarity.UNCOMMON, mage.cards.a.AlbinoTroll.class));
- cards.add(new SetCardInfo("Anaconda", 232, Rarity.UNCOMMON, mage.cards.a.Anaconda.class));
- cards.add(new SetCardInfo("Angelic Chorus", 3, Rarity.RARE, mage.cards.a.AngelicChorus.class));
- cards.add(new SetCardInfo("Angelic Page", 4, Rarity.COMMON, mage.cards.a.AngelicPage.class));
- cards.add(new SetCardInfo("Annul", 59, Rarity.COMMON, mage.cards.a.Annul.class));
- cards.add(new SetCardInfo("Arcane Laboratory", 60, Rarity.UNCOMMON, mage.cards.a.ArcaneLaboratory.class));
- cards.add(new SetCardInfo("Arc Lightning", 174, Rarity.COMMON, mage.cards.a.ArcLightning.class));
- cards.add(new SetCardInfo("Argothian Elder", 233, Rarity.UNCOMMON, mage.cards.a.ArgothianElder.class));
- cards.add(new SetCardInfo("Argothian Enchantress", 234, Rarity.RARE, mage.cards.a.ArgothianEnchantress.class));
- cards.add(new SetCardInfo("Argothian Swine", 235, Rarity.COMMON, mage.cards.a.ArgothianSwine.class));
- cards.add(new SetCardInfo("Argothian Wurm", 236, Rarity.RARE, mage.cards.a.ArgothianWurm.class));
- cards.add(new SetCardInfo("Attunement", 61, Rarity.RARE, mage.cards.a.Attunement.class));
- cards.add(new SetCardInfo("Back to Basics", 62, Rarity.RARE, mage.cards.b.BackToBasics.class));
- cards.add(new SetCardInfo("Barrin, Master Wizard", 63, Rarity.RARE, mage.cards.b.BarrinMasterWizard.class));
- cards.add(new SetCardInfo("Barrin's Codex", 286, Rarity.RARE, mage.cards.b.BarrinsCodex.class));
- cards.add(new SetCardInfo("Bedlam", 175, Rarity.RARE, mage.cards.b.Bedlam.class));
- cards.add(new SetCardInfo("Befoul", 116, Rarity.COMMON, mage.cards.b.Befoul.class));
- cards.add(new SetCardInfo("Bereavement", 117, Rarity.UNCOMMON, mage.cards.b.Bereavement.class));
- cards.add(new SetCardInfo("Blanchwood Armor", 237, Rarity.UNCOMMON, mage.cards.b.BlanchwoodArmor.class));
- cards.add(new SetCardInfo("Blanchwood Treefolk", 238, Rarity.COMMON, mage.cards.b.BlanchwoodTreefolk.class));
- cards.add(new SetCardInfo("Blasted Landscape", 319, Rarity.UNCOMMON, mage.cards.b.BlastedLandscape.class));
- cards.add(new SetCardInfo("Blood Vassal", 118, Rarity.COMMON, mage.cards.b.BloodVassal.class));
- cards.add(new SetCardInfo("Bog Raiders", 119, Rarity.COMMON, mage.cards.b.BogRaiders.class));
- cards.add(new SetCardInfo("Brand", 176, Rarity.RARE, mage.cards.b.Brand.class));
- cards.add(new SetCardInfo("Bravado", 177, Rarity.COMMON, mage.cards.b.Bravado.class));
- cards.add(new SetCardInfo("Breach", 120, Rarity.COMMON, mage.cards.b.Breach.class));
- cards.add(new SetCardInfo("Brilliant Halo", 5, Rarity.COMMON, mage.cards.b.BrilliantHalo.class));
- cards.add(new SetCardInfo("Bull Hippo", 239, Rarity.UNCOMMON, mage.cards.b.BullHippo.class));
- cards.add(new SetCardInfo("Bulwark", 178, Rarity.RARE, mage.cards.b.Bulwark.class));
- cards.add(new SetCardInfo("Cackling Fiend", 121, Rarity.COMMON, mage.cards.c.CacklingFiend.class));
- cards.add(new SetCardInfo("Carpet of Flowers", 240, Rarity.UNCOMMON, mage.cards.c.CarpetOfFlowers.class));
- cards.add(new SetCardInfo("Carrion Beetles", 122, Rarity.COMMON, mage.cards.c.CarrionBeetles.class));
- cards.add(new SetCardInfo("Catalog", 64, Rarity.COMMON, mage.cards.c.Catalog.class));
- cards.add(new SetCardInfo("Catastrophe", 6, Rarity.RARE, mage.cards.c.Catastrophe.class));
- cards.add(new SetCardInfo("Cathodion", 287, Rarity.UNCOMMON, mage.cards.c.Cathodion.class));
- cards.add(new SetCardInfo("Cave Tiger", 241, Rarity.COMMON, mage.cards.c.CaveTiger.class));
- cards.add(new SetCardInfo("Child of Gaea", 242, Rarity.RARE, mage.cards.c.ChildOfGaea.class));
- cards.add(new SetCardInfo("Chimeric Staff", 288, Rarity.RARE, mage.cards.c.ChimericStaff.class));
- cards.add(new SetCardInfo("Citanul Centaurs", 243, Rarity.RARE, mage.cards.c.CitanulCentaurs.class));
- cards.add(new SetCardInfo("Citanul Flute", 289, Rarity.RARE, mage.cards.c.CitanulFlute.class));
- cards.add(new SetCardInfo("Citanul Hierophants", 244, Rarity.RARE, mage.cards.c.CitanulHierophants.class));
- cards.add(new SetCardInfo("Claws of Gix", 290, Rarity.UNCOMMON, mage.cards.c.ClawsOfGix.class));
- cards.add(new SetCardInfo("Clear", 7, Rarity.UNCOMMON, mage.cards.c.Clear.class));
- cards.add(new SetCardInfo("Cloak of Mists", 65, Rarity.COMMON, mage.cards.c.CloakOfMists.class));
- cards.add(new SetCardInfo("Confiscate", 66, Rarity.UNCOMMON, mage.cards.c.Confiscate.class));
- cards.add(new SetCardInfo("Congregate", 8, Rarity.COMMON, mage.cards.c.Congregate.class));
- cards.add(new SetCardInfo("Contamination", 123, Rarity.RARE, mage.cards.c.Contamination.class));
- cards.add(new SetCardInfo("Copper Gnomes", 291, Rarity.RARE, mage.cards.c.CopperGnomes.class));
- cards.add(new SetCardInfo("Coral Merfolk", 67, Rarity.COMMON, mage.cards.c.CoralMerfolk.class));
- cards.add(new SetCardInfo("Corrupt", 124, Rarity.COMMON, mage.cards.c.Corrupt.class));
- cards.add(new SetCardInfo("Cradle Guard", 245, Rarity.UNCOMMON, mage.cards.c.CradleGuard.class));
- cards.add(new SetCardInfo("Crater Hellion", 179, Rarity.RARE, mage.cards.c.CraterHellion.class));
- cards.add(new SetCardInfo("Crazed Skirge", 125, Rarity.UNCOMMON, mage.cards.c.CrazedSkirge.class));
- cards.add(new SetCardInfo("Crosswinds", 246, Rarity.UNCOMMON, mage.cards.c.Crosswinds.class));
- cards.add(new SetCardInfo("Crystal Chimes", 292, Rarity.UNCOMMON, mage.cards.c.CrystalChimes.class));
- cards.add(new SetCardInfo("Curfew", 68, Rarity.COMMON, mage.cards.c.Curfew.class));
- cards.add(new SetCardInfo("Darkest Hour", 128, Rarity.RARE, mage.cards.d.DarkestHour.class));
- cards.add(new SetCardInfo("Dark Hatchling", 126, Rarity.RARE, mage.cards.d.DarkHatchling.class));
- cards.add(new SetCardInfo("Dark Ritual", 127, Rarity.COMMON, mage.cards.d.DarkRitual.class));
- cards.add(new SetCardInfo("Defensive Formation", 9, Rarity.UNCOMMON, mage.cards.d.DefensiveFormation.class));
- cards.add(new SetCardInfo("Despondency", 129, Rarity.COMMON, mage.cards.d.Despondency.class));
- cards.add(new SetCardInfo("Destructive Urge", 180, Rarity.UNCOMMON, mage.cards.d.DestructiveUrge.class));
- cards.add(new SetCardInfo("Diabolic Servitude", 130, Rarity.UNCOMMON, mage.cards.d.DiabolicServitude.class));
- cards.add(new SetCardInfo("Disciple of Grace", 10, Rarity.COMMON, mage.cards.d.DiscipleOfGrace.class));
- cards.add(new SetCardInfo("Disciple of Law", 11, Rarity.COMMON, mage.cards.d.DiscipleOfLaw.class));
- cards.add(new SetCardInfo("Disenchant", 12, Rarity.COMMON, mage.cards.d.Disenchant.class));
- cards.add(new SetCardInfo("Disorder", 181, Rarity.UNCOMMON, mage.cards.d.Disorder.class));
- cards.add(new SetCardInfo("Disruptive Student", 69, Rarity.COMMON, mage.cards.d.DisruptiveStudent.class));
- cards.add(new SetCardInfo("Douse", 70, Rarity.UNCOMMON, mage.cards.d.Douse.class));
- cards.add(new SetCardInfo("Dragon Blood", 293, Rarity.UNCOMMON, mage.cards.d.DragonBlood.class));
- cards.add(new SetCardInfo("Drifting Djinn", 71, Rarity.RARE, mage.cards.d.DriftingDjinn.class));
- cards.add(new SetCardInfo("Drifting Meadow", 320, Rarity.COMMON, mage.cards.d.DriftingMeadow.class));
- cards.add(new SetCardInfo("Dromosaur", 182, Rarity.COMMON, mage.cards.d.Dromosaur.class));
- cards.add(new SetCardInfo("Duress", 132, Rarity.COMMON, mage.cards.d.Duress.class));
- cards.add(new SetCardInfo("Eastern Paladin", 133, Rarity.RARE, mage.cards.e.EasternPaladin.class));
- cards.add(new SetCardInfo("Elite Archers", 13, Rarity.RARE, mage.cards.e.EliteArchers.class));
- cards.add(new SetCardInfo("Elvish Herder", 247, Rarity.COMMON, mage.cards.e.ElvishHerder.class));
- cards.add(new SetCardInfo("Elvish Lyrist", 248, Rarity.COMMON, mage.cards.e.ElvishLyrist.class));
- cards.add(new SetCardInfo("Endless Wurm", 249, Rarity.RARE, mage.cards.e.EndlessWurm.class));
- cards.add(new SetCardInfo("Endoskeleton", 294, Rarity.UNCOMMON, mage.cards.e.Endoskeleton.class));
- cards.add(new SetCardInfo("Energy Field", 73, Rarity.RARE, mage.cards.e.EnergyField.class));
- cards.add(new SetCardInfo("Exhaustion", 74, Rarity.UNCOMMON, mage.cards.e.Exhaustion.class));
- cards.add(new SetCardInfo("Exhume", 134, Rarity.COMMON, mage.cards.e.Exhume.class));
- cards.add(new SetCardInfo("Exploration", 250, Rarity.RARE, mage.cards.e.Exploration.class));
- cards.add(new SetCardInfo("Expunge", 135, Rarity.COMMON, mage.cards.e.Expunge.class));
- cards.add(new SetCardInfo("Faith Healer", 14, Rarity.RARE, mage.cards.f.FaithHealer.class));
- cards.add(new SetCardInfo("Falter", 184, Rarity.COMMON, mage.cards.f.Falter.class));
- cards.add(new SetCardInfo("Fault Line", 185, Rarity.RARE, mage.cards.f.FaultLine.class));
- cards.add(new SetCardInfo("Fecundity", 251, Rarity.UNCOMMON, mage.cards.f.Fecundity.class));
- cards.add(new SetCardInfo("Fertile Ground", 252, Rarity.COMMON, mage.cards.f.FertileGround.class));
- cards.add(new SetCardInfo("Fiery Mantle", 186, Rarity.COMMON, mage.cards.f.FieryMantle.class));
- cards.add(new SetCardInfo("Fire Ants", 187, Rarity.UNCOMMON, mage.cards.f.FireAnts.class));
- cards.add(new SetCardInfo("Flesh Reaver", 136, Rarity.UNCOMMON, mage.cards.f.FleshReaver.class));
- cards.add(new SetCardInfo("Fluctuator", 295, Rarity.RARE, mage.cards.f.Fluctuator.class));
- cards.add(new SetCardInfo("Fog Bank", 75, Rarity.UNCOMMON, mage.cards.f.FogBank.class));
- cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Fortitude", 253, Rarity.COMMON, mage.cards.f.Fortitude.class));
- cards.add(new SetCardInfo("Gaea's Bounty", 254, Rarity.COMMON, mage.cards.g.GaeasBounty.class));
- cards.add(new SetCardInfo("Gaea's Cradle", 321, Rarity.RARE, mage.cards.g.GaeasCradle.class));
- cards.add(new SetCardInfo("Gaea's Embrace", 255, Rarity.UNCOMMON, mage.cards.g.GaeasEmbrace.class));
- cards.add(new SetCardInfo("Gamble", 188, Rarity.RARE, mage.cards.g.Gamble.class));
- cards.add(new SetCardInfo("Gilded Drake", 76, Rarity.RARE, mage.cards.g.GildedDrake.class));
- cards.add(new SetCardInfo("Glorious Anthem", 15, Rarity.RARE, mage.cards.g.GloriousAnthem.class));
- cards.add(new SetCardInfo("Goblin Cadets", 189, Rarity.UNCOMMON, mage.cards.g.GoblinCadets.class));
- cards.add(new SetCardInfo("Goblin Lackey", 190, Rarity.UNCOMMON, mage.cards.g.GoblinLackey.class));
- cards.add(new SetCardInfo("Goblin Matron", 191, Rarity.COMMON, mage.cards.g.GoblinMatron.class));
- cards.add(new SetCardInfo("Goblin Offensive", 192, Rarity.UNCOMMON, mage.cards.g.GoblinOffensive.class));
- cards.add(new SetCardInfo("Goblin Patrol", 193, Rarity.COMMON, mage.cards.g.GoblinPatrol.class));
- cards.add(new SetCardInfo("Goblin Raider", 194, Rarity.COMMON, mage.cards.g.GoblinRaider.class));
- cards.add(new SetCardInfo("Goblin Spelunkers", 195, Rarity.COMMON, mage.cards.g.GoblinSpelunkers.class));
- cards.add(new SetCardInfo("Goblin War Buggy", 196, Rarity.COMMON, mage.cards.g.GoblinWarBuggy.class));
- cards.add(new SetCardInfo("Gorilla Warrior", 256, Rarity.COMMON, mage.cards.g.GorillaWarrior.class));
- cards.add(new SetCardInfo("Grafted Skullcap", 296, Rarity.RARE, mage.cards.g.GraftedSkullcap.class));
- cards.add(new SetCardInfo("Greater Good", 257, Rarity.RARE, mage.cards.g.GreaterGood.class));
- cards.add(new SetCardInfo("Great Whale", 77, Rarity.RARE, mage.cards.g.GreatWhale.class));
- cards.add(new SetCardInfo("Greener Pastures", 258, Rarity.RARE, mage.cards.g.GreenerPastures.class));
- cards.add(new SetCardInfo("Guma", 197, Rarity.UNCOMMON, mage.cards.g.Guma.class));
- cards.add(new SetCardInfo("Hawkeater Moth", 259, Rarity.UNCOMMON, mage.cards.h.HawkeaterMoth.class));
- cards.add(new SetCardInfo("Headlong Rush", 198, Rarity.COMMON, mage.cards.h.HeadlongRush.class));
- cards.add(new SetCardInfo("Healing Salve", 16, Rarity.COMMON, mage.cards.h.HealingSalve.class));
- cards.add(new SetCardInfo("Heat Ray", 199, Rarity.COMMON, mage.cards.h.HeatRay.class));
- cards.add(new SetCardInfo("Herald of Serra", 17, Rarity.RARE, mage.cards.h.HeraldOfSerra.class));
- cards.add(new SetCardInfo("Hermetic Study", 78, Rarity.COMMON, mage.cards.h.HermeticStudy.class));
- cards.add(new SetCardInfo("Hibernation", 79, Rarity.UNCOMMON, mage.cards.h.Hibernation.class));
- cards.add(new SetCardInfo("Hidden Ancients", 260, Rarity.UNCOMMON, mage.cards.h.HiddenAncients.class));
- cards.add(new SetCardInfo("Hidden Guerrillas", 261, Rarity.UNCOMMON, mage.cards.h.HiddenGuerrillas.class));
- cards.add(new SetCardInfo("Hidden Herd", 262, Rarity.RARE, mage.cards.h.HiddenHerd.class));
- cards.add(new SetCardInfo("Hidden Spider", 264, Rarity.COMMON, mage.cards.h.HiddenSpider.class));
- cards.add(new SetCardInfo("Hollow Dogs", 137, Rarity.COMMON, mage.cards.h.HollowDogs.class));
- cards.add(new SetCardInfo("Hopping Automaton", 297, Rarity.UNCOMMON, mage.cards.h.HoppingAutomaton.class));
- cards.add(new SetCardInfo("Horseshoe Crab", 80, Rarity.COMMON, mage.cards.h.HorseshoeCrab.class));
- cards.add(new SetCardInfo("Humble", 18, Rarity.UNCOMMON, mage.cards.h.Humble.class));
- cards.add(new SetCardInfo("Hush", 266, Rarity.COMMON, mage.cards.h.Hush.class));
- cards.add(new SetCardInfo("Ill-Gotten Gains", 138, Rarity.RARE, mage.cards.i.IllGottenGains.class));
- cards.add(new SetCardInfo("Imaginary Pet", 81, Rarity.RARE, mage.cards.i.ImaginaryPet.class));
- cards.add(new SetCardInfo("Intrepid Hero", 19, Rarity.RARE, mage.cards.i.IntrepidHero.class));
- cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Jagged Lightning", 200, Rarity.UNCOMMON, mage.cards.j.JaggedLightning.class));
- 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));
- cards.add(new SetCardInfo("Looming Shade", 139, Rarity.COMMON, mage.cards.l.LoomingShade.class));
- cards.add(new SetCardInfo("Lotus Blossom", 300, Rarity.RARE, mage.cards.l.LotusBlossom.class));
- cards.add(new SetCardInfo("Lull", 267, Rarity.COMMON, mage.cards.l.Lull.class));
- cards.add(new SetCardInfo("Lurking Evil", 140, Rarity.RARE, mage.cards.l.LurkingEvil.class));
- cards.add(new SetCardInfo("Mana Leech", 141, Rarity.UNCOMMON, mage.cards.m.ManaLeech.class));
- cards.add(new SetCardInfo("Meltdown", 203, Rarity.UNCOMMON, mage.cards.m.Meltdown.class));
- cards.add(new SetCardInfo("Metrognome", 301, Rarity.RARE, mage.cards.m.Metrognome.class));
- cards.add(new SetCardInfo("Midsummer Revel", 268, Rarity.RARE, mage.cards.m.MidsummerRevel.class));
- cards.add(new SetCardInfo("Mishra's Helix", 302, Rarity.RARE, mage.cards.m.MishrasHelix.class));
- cards.add(new SetCardInfo("Mobile Fort", 303, Rarity.UNCOMMON, mage.cards.m.MobileFort.class));
- cards.add(new SetCardInfo("Monk Idealist", 20, Rarity.UNCOMMON, mage.cards.m.MonkIdealist.class));
- cards.add(new SetCardInfo("Monk Realist", 21, Rarity.COMMON, mage.cards.m.MonkRealist.class));
- cards.add(new SetCardInfo("Morphling", 85, Rarity.RARE, mage.cards.m.Morphling.class));
- cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("No Rest for the Wicked", 142, Rarity.UNCOMMON, mage.cards.n.NoRestForTheWicked.class));
- cards.add(new SetCardInfo("Noetic Scales", 304, Rarity.RARE, mage.cards.n.NoeticScales.class));
- cards.add(new SetCardInfo("Okk", 204, Rarity.RARE, mage.cards.o.Okk.class));
- cards.add(new SetCardInfo("Opal Archangel", 23, Rarity.RARE, mage.cards.o.OpalArchangel.class));
- cards.add(new SetCardInfo("Opal Caryatid", 24, Rarity.COMMON, mage.cards.o.OpalCaryatid.class));
- cards.add(new SetCardInfo("Opal Gargoyle", 25, Rarity.COMMON, mage.cards.o.OpalGargoyle.class));
- cards.add(new SetCardInfo("Oppression", 143, Rarity.RARE, mage.cards.o.Oppression.class));
- cards.add(new SetCardInfo("Order of Yawgmoth", 144, Rarity.UNCOMMON, mage.cards.o.OrderOfYawgmoth.class));
- cards.add(new SetCardInfo("Pacifism", 27, Rarity.COMMON, mage.cards.p.Pacifism.class));
- cards.add(new SetCardInfo("Parasitic Bond", 145, Rarity.UNCOMMON, mage.cards.p.ParasiticBond.class));
- cards.add(new SetCardInfo("Pariah", 28, Rarity.RARE, mage.cards.p.Pariah.class));
- cards.add(new SetCardInfo("Path of Peace", 29, Rarity.COMMON, mage.cards.p.PathOfPeace.class));
- cards.add(new SetCardInfo("Pegasus Charger", 30, Rarity.COMMON, mage.cards.p.PegasusCharger.class));
- cards.add(new SetCardInfo("Pendrell Drake", 86, Rarity.COMMON, mage.cards.p.PendrellDrake.class));
- cards.add(new SetCardInfo("Pendrell Flux", 87, Rarity.COMMON, mage.cards.p.PendrellFlux.class));
- cards.add(new SetCardInfo("Peregrine Drake", 88, Rarity.UNCOMMON, mage.cards.p.PeregrineDrake.class));
- cards.add(new SetCardInfo("Persecute", 146, Rarity.RARE, mage.cards.p.Persecute.class));
- cards.add(new SetCardInfo("Pestilence", 147, Rarity.COMMON, mage.cards.p.Pestilence.class));
- cards.add(new SetCardInfo("Phyrexian Colossus", 305, Rarity.RARE, mage.cards.p.PhyrexianColossus.class));
- cards.add(new SetCardInfo("Phyrexian Ghoul", 148, Rarity.COMMON, mage.cards.p.PhyrexianGhoul.class));
- cards.add(new SetCardInfo("Phyrexian Processor", 306, Rarity.RARE, mage.cards.p.PhyrexianProcessor.class));
- cards.add(new SetCardInfo("Phyrexian Tower", 322, Rarity.RARE, mage.cards.p.PhyrexianTower.class));
- cards.add(new SetCardInfo("Pit Trap", 307, Rarity.UNCOMMON, mage.cards.p.PitTrap.class));
- cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Planar Birth", 31, Rarity.RARE, mage.cards.p.PlanarBirth.class));
- cards.add(new SetCardInfo("Planar Void", 149, Rarity.RARE, mage.cards.p.PlanarVoid.class));
- cards.add(new SetCardInfo("Polluted Mire", 323, Rarity.COMMON, mage.cards.p.PollutedMire.class));
- cards.add(new SetCardInfo("Pouncing Jaguar", 269, Rarity.COMMON, mage.cards.p.PouncingJaguar.class));
- cards.add(new SetCardInfo("Power Sink", 89, Rarity.COMMON, mage.cards.p.PowerSink.class));
- cards.add(new SetCardInfo("Presence of the Master", 32, Rarity.UNCOMMON, mage.cards.p.PresenceOfTheMaster.class));
- cards.add(new SetCardInfo("Priest of Gix", 150, Rarity.UNCOMMON, mage.cards.p.PriestOfGix.class));
- cards.add(new SetCardInfo("Priest of Titania", 270, Rarity.COMMON, mage.cards.p.PriestOfTitania.class));
- cards.add(new SetCardInfo("Rain of Filth", 151, Rarity.UNCOMMON, mage.cards.r.RainOfFilth.class));
- cards.add(new SetCardInfo("Rain of Salt", 206, Rarity.UNCOMMON, mage.cards.r.RainOfSalt.class));
- cards.add(new SetCardInfo("Ravenous Skirge", 152, Rarity.COMMON, mage.cards.r.RavenousSkirge.class));
- cards.add(new SetCardInfo("Raze", 207, Rarity.COMMON, mage.cards.r.Raze.class));
- cards.add(new SetCardInfo("Recantation", 91, Rarity.RARE, mage.cards.r.Recantation.class));
- cards.add(new SetCardInfo("Reclusive Wight", 153, Rarity.UNCOMMON, mage.cards.r.ReclusiveWight.class));
- cards.add(new SetCardInfo("Redeem", 33, Rarity.UNCOMMON, mage.cards.r.Redeem.class));
- cards.add(new SetCardInfo("Reflexes", 208, Rarity.COMMON, mage.cards.r.Reflexes.class));
- cards.add(new SetCardInfo("Rejuvenate", 271, Rarity.COMMON, mage.cards.r.Rejuvenate.class));
- cards.add(new SetCardInfo("Remembrance", 34, Rarity.RARE, mage.cards.r.Remembrance.class));
- cards.add(new SetCardInfo("Remote Isle", 324, Rarity.COMMON, mage.cards.r.RemoteIsle.class));
- cards.add(new SetCardInfo("Reprocess", 154, Rarity.RARE, mage.cards.r.Reprocess.class));
- cards.add(new SetCardInfo("Rescind", 92, Rarity.COMMON, mage.cards.r.Rescind.class));
- cards.add(new SetCardInfo("Retaliation", 272, Rarity.UNCOMMON, mage.cards.r.Retaliation.class));
- cards.add(new SetCardInfo("Retromancer", 209, Rarity.COMMON, mage.cards.r.Retromancer.class));
- cards.add(new SetCardInfo("Rewind", 93, Rarity.COMMON, mage.cards.r.Rewind.class));
- cards.add(new SetCardInfo("Rumbling Crescendo", 210, Rarity.RARE, mage.cards.r.RumblingCrescendo.class));
- cards.add(new SetCardInfo("Rune of Protection: Artifacts", 35, Rarity.UNCOMMON, mage.cards.r.RuneOfProtectionArtifacts.class));
- cards.add(new SetCardInfo("Rune of Protection: Black", 36, Rarity.COMMON, mage.cards.r.RuneOfProtectionBlack.class));
- cards.add(new SetCardInfo("Rune of Protection: Blue", 37, Rarity.COMMON, mage.cards.r.RuneOfProtectionBlue.class));
- cards.add(new SetCardInfo("Rune of Protection: Green", 38, Rarity.COMMON, mage.cards.r.RuneOfProtectionGreen.class));
- cards.add(new SetCardInfo("Rune of Protection: Lands", 39, Rarity.RARE, mage.cards.r.RuneOfProtectionLands.class));
- cards.add(new SetCardInfo("Rune of Protection: Red", 40, Rarity.COMMON, mage.cards.r.RuneOfProtectionRed.class));
- cards.add(new SetCardInfo("Rune of Protection: White", 41, Rarity.COMMON, mage.cards.r.RuneOfProtectionWhite.class));
- cards.add(new SetCardInfo("Sanctum Custodian", 42, Rarity.COMMON, mage.cards.s.SanctumCustodian.class));
- cards.add(new SetCardInfo("Sanctum Guardian", 43, Rarity.UNCOMMON, mage.cards.s.SanctumGuardian.class));
- cards.add(new SetCardInfo("Sandbar Merfolk", 94, Rarity.COMMON, mage.cards.s.SandbarMerfolk.class));
- cards.add(new SetCardInfo("Sandbar Serpent", 95, Rarity.UNCOMMON, mage.cards.s.SandbarSerpent.class));
- cards.add(new SetCardInfo("Sanguine Guard", 155, Rarity.UNCOMMON, mage.cards.s.SanguineGuard.class));
- cards.add(new SetCardInfo("Scald", 211, Rarity.UNCOMMON, mage.cards.s.Scald.class));
- cards.add(new SetCardInfo("Scoria Wurm", 212, Rarity.RARE, mage.cards.s.ScoriaWurm.class));
- cards.add(new SetCardInfo("Scrap", 213, Rarity.COMMON, mage.cards.s.Scrap.class));
- cards.add(new SetCardInfo("Seasoned Marshal", 44, Rarity.UNCOMMON, mage.cards.s.SeasonedMarshal.class));
- cards.add(new SetCardInfo("Serra Avatar", 45, Rarity.RARE, mage.cards.s.SerraAvatar.class));
- cards.add(new SetCardInfo("Serra's Embrace", 47, Rarity.UNCOMMON, mage.cards.s.SerrasEmbrace.class));
- cards.add(new SetCardInfo("Serra's Liturgy", 49, Rarity.RARE, mage.cards.s.SerrasLiturgy.class));
- cards.add(new SetCardInfo("Serra's Sanctum", 325, Rarity.RARE, mage.cards.s.SerrasSanctum.class));
- cards.add(new SetCardInfo("Serra Zealot", 46, Rarity.COMMON, mage.cards.s.SerraZealot.class));
- cards.add(new SetCardInfo("Shimmering Barrier", 50, Rarity.UNCOMMON, mage.cards.s.ShimmeringBarrier.class));
- cards.add(new SetCardInfo("Shivan Gorge", 326, Rarity.RARE, mage.cards.s.ShivanGorge.class));
- cards.add(new SetCardInfo("Shivan Hellkite", 214, Rarity.RARE, mage.cards.s.ShivanHellkite.class));
- cards.add(new SetCardInfo("Shivan Raptor", 215, Rarity.UNCOMMON, mage.cards.s.ShivanRaptor.class));
- cards.add(new SetCardInfo("Shiv's Embrace", 216, Rarity.UNCOMMON, mage.cards.s.ShivsEmbrace.class));
- cards.add(new SetCardInfo("Show and Tell", 96, Rarity.RARE, mage.cards.s.ShowAndTell.class));
- cards.add(new SetCardInfo("Shower of Sparks", 217, Rarity.COMMON, mage.cards.s.ShowerOfSparks.class));
- cards.add(new SetCardInfo("Sicken", 156, Rarity.COMMON, mage.cards.s.Sicken.class));
- cards.add(new SetCardInfo("Silent Attendant", 51, Rarity.COMMON, mage.cards.s.SilentAttendant.class));
- cards.add(new SetCardInfo("Skirge Familiar", 157, Rarity.UNCOMMON, mage.cards.s.SkirgeFamiliar.class));
- cards.add(new SetCardInfo("Skittering Skirge", 158, Rarity.COMMON, mage.cards.s.SkitteringSkirge.class));
- cards.add(new SetCardInfo("Sleeper Agent", 159, Rarity.RARE, mage.cards.s.SleeperAgent.class));
- cards.add(new SetCardInfo("Slippery Karst", 327, Rarity.COMMON, mage.cards.s.SlipperyKarst.class));
- cards.add(new SetCardInfo("Smokestack", 309, Rarity.RARE, mage.cards.s.Smokestack.class));
- cards.add(new SetCardInfo("Smoldering Crater", 328, Rarity.COMMON, mage.cards.s.SmolderingCrater.class));
- cards.add(new SetCardInfo("Sneak Attack", 218, Rarity.RARE, mage.cards.s.SneakAttack.class));
- cards.add(new SetCardInfo("Somnophore", 97, Rarity.RARE, mage.cards.s.Somnophore.class));
- cards.add(new SetCardInfo("Songstitcher", 52, Rarity.UNCOMMON, mage.cards.s.Songstitcher.class));
- cards.add(new SetCardInfo("Spined Fluke", 160, Rarity.UNCOMMON, mage.cards.s.SpinedFluke.class));
- cards.add(new SetCardInfo("Spire Owl", 98, Rarity.COMMON, mage.cards.s.SpireOwl.class));
- cards.add(new SetCardInfo("Sporogenesis", 273, Rarity.RARE, mage.cards.s.Sporogenesis.class));
- cards.add(new SetCardInfo("Spreading Algae", 274, Rarity.UNCOMMON, mage.cards.s.SpreadingAlgae.class));
- cards.add(new SetCardInfo("Steam Blast", 219, Rarity.UNCOMMON, mage.cards.s.SteamBlast.class));
- cards.add(new SetCardInfo("Stern Proctor", 99, Rarity.UNCOMMON, mage.cards.s.SternProctor.class));
- cards.add(new SetCardInfo("Stroke of Genius", 100, Rarity.RARE, mage.cards.s.StrokeOfGenius.class));
- cards.add(new SetCardInfo("Sulfuric Vapors", 220, Rarity.RARE, mage.cards.s.SulfuricVapors.class));
- cards.add(new SetCardInfo("Sunder", 101, Rarity.RARE, mage.cards.s.Sunder.class));
- cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Symbiosis", 275, Rarity.COMMON, mage.cards.s.Symbiosis.class));
- cards.add(new SetCardInfo("Tainted Aether", 161, Rarity.RARE, mage.cards.t.TaintedAether.class));
- cards.add(new SetCardInfo("Telepathy", 102, Rarity.UNCOMMON, mage.cards.t.Telepathy.class));
- cards.add(new SetCardInfo("Temporal Aperture", 310, Rarity.RARE, mage.cards.t.TemporalAperture.class));
- cards.add(new SetCardInfo("Thran Quarry", 329, Rarity.RARE, mage.cards.t.ThranQuarry.class));
- cards.add(new SetCardInfo("Thran Turbine", 311, Rarity.UNCOMMON, mage.cards.t.ThranTurbine.class));
- cards.add(new SetCardInfo("Thundering Giant", 221, Rarity.UNCOMMON, mage.cards.t.ThunderingGiant.class));
- cards.add(new SetCardInfo("Time Spiral", 103, Rarity.RARE, mage.cards.t.TimeSpiral.class));
- cards.add(new SetCardInfo("Titania's Boon", 276, Rarity.UNCOMMON, mage.cards.t.TitaniasBoon.class));
- cards.add(new SetCardInfo("Titania's Chosen", 277, Rarity.UNCOMMON, mage.cards.t.TitaniasChosen.class));
- cards.add(new SetCardInfo("Tolarian Academy", 330, Rarity.RARE, mage.cards.t.TolarianAcademy.class));
- cards.add(new SetCardInfo("Tolarian Winds", 104, Rarity.COMMON, mage.cards.t.TolarianWinds.class));
- cards.add(new SetCardInfo("Torch Song", 222, Rarity.UNCOMMON, mage.cards.t.TorchSong.class));
- cards.add(new SetCardInfo("Treefolk Seedlings", 278, Rarity.UNCOMMON, mage.cards.t.TreefolkSeedlings.class));
- cards.add(new SetCardInfo("Treetop Rangers", 279, Rarity.COMMON, mage.cards.t.TreetopRangers.class));
- cards.add(new SetCardInfo("Turnabout", 105, Rarity.UNCOMMON, mage.cards.t.Turnabout.class));
- cards.add(new SetCardInfo("Umbilicus", 312, Rarity.RARE, mage.cards.u.Umbilicus.class));
- cards.add(new SetCardInfo("Unnerve", 162, Rarity.COMMON, mage.cards.u.Unnerve.class));
- cards.add(new SetCardInfo("Unworthy Dead", 163, Rarity.COMMON, mage.cards.u.UnworthyDead.class));
- cards.add(new SetCardInfo("Urza's Armor", 313, Rarity.UNCOMMON, mage.cards.u.UrzasArmor.class));
- cards.add(new SetCardInfo("Vampiric Embrace", 164, Rarity.UNCOMMON, mage.cards.v.VampiricEmbrace.class));
- cards.add(new SetCardInfo("Vebulid", 165, Rarity.RARE, mage.cards.v.Vebulid.class));
- cards.add(new SetCardInfo("Vernal Bloom", 281, Rarity.RARE, mage.cards.v.VernalBloom.class));
- cards.add(new SetCardInfo("Viashino Outrider", 223, Rarity.COMMON, mage.cards.v.ViashinoOutrider.class));
- cards.add(new SetCardInfo("Viashino Runner", 224, Rarity.COMMON, mage.cards.v.ViashinoRunner.class));
- cards.add(new SetCardInfo("Viashino Sandswimmer", 225, Rarity.RARE, mage.cards.v.ViashinoSandswimmer.class));
- cards.add(new SetCardInfo("Viashino Weaponsmith", 226, Rarity.COMMON, mage.cards.v.ViashinoWeaponsmith.class));
- cards.add(new SetCardInfo("Victimize", 166, Rarity.UNCOMMON, mage.cards.v.Victimize.class));
- cards.add(new SetCardInfo("Vile Requiem", 167, Rarity.UNCOMMON, mage.cards.v.VileRequiem.class));
- cards.add(new SetCardInfo("Voice of Grace", 54, Rarity.UNCOMMON, mage.cards.v.VoiceOfGrace.class));
- cards.add(new SetCardInfo("Voice of Law", 55, Rarity.UNCOMMON, mage.cards.v.VoiceOfLaw.class));
- cards.add(new SetCardInfo("Voltaic Key", 314, Rarity.UNCOMMON, mage.cards.v.VoltaicKey.class));
- cards.add(new SetCardInfo("Vug Lizard", 227, Rarity.UNCOMMON, mage.cards.v.VugLizard.class));
- cards.add(new SetCardInfo("War Dance", 282, Rarity.UNCOMMON, mage.cards.w.WarDance.class));
- cards.add(new SetCardInfo("Wall of Junk", 315, Rarity.UNCOMMON, mage.cards.w.WallOfJunk.class));
- cards.add(new SetCardInfo("Waylay", 56, Rarity.UNCOMMON, mage.cards.w.Waylay.class));
- cards.add(new SetCardInfo("Western Paladin", 168, Rarity.RARE, mage.cards.w.WesternPaladin.class));
- cards.add(new SetCardInfo("Whetstone", 316, Rarity.RARE, mage.cards.w.Whetstone.class));
- cards.add(new SetCardInfo("Whirlwind", 283, Rarity.RARE, mage.cards.w.Whirlwind.class));
- cards.add(new SetCardInfo("Wild Dogs", 284, Rarity.COMMON, mage.cards.w.WildDogs.class));
- cards.add(new SetCardInfo("Wildfire", 228, Rarity.RARE, mage.cards.w.Wildfire.class));
- cards.add(new SetCardInfo("Windfall", 111, Rarity.UNCOMMON, mage.cards.w.Windfall.class));
- cards.add(new SetCardInfo("Winding Wurm", 285, Rarity.COMMON, mage.cards.w.WindingWurm.class));
- cards.add(new SetCardInfo("Wirecat", 317, Rarity.UNCOMMON, mage.cards.w.Wirecat.class));
- cards.add(new SetCardInfo("Witch Engine", 169, Rarity.RARE, mage.cards.w.WitchEngine.class));
- cards.add(new SetCardInfo("Wizard Mentor", 112, Rarity.COMMON, mage.cards.w.WizardMentor.class));
- cards.add(new SetCardInfo("Worn Powerstone", 318, Rarity.UNCOMMON, mage.cards.w.WornPowerstone.class));
- cards.add(new SetCardInfo("Worship", 57, Rarity.RARE, mage.cards.w.Worship.class));
- cards.add(new SetCardInfo("Yawgmoth's Edict", 170, Rarity.UNCOMMON, mage.cards.y.YawgmothsEdict.class));
- cards.add(new SetCardInfo("Yawgmoth's Will", 171, Rarity.RARE, mage.cards.y.YawgmothsWill.class));
- cards.add(new SetCardInfo("Zephid", 113, Rarity.RARE, mage.cards.z.Zephid.class));
- cards.add(new SetCardInfo("Zephid's Embrace", 114, Rarity.UNCOMMON, mage.cards.z.ZephidsEmbrace.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author Backfir3
+ */
+public final class UrzasSaga extends ExpansionSet {
+
+ private static final UrzasSaga instance = new UrzasSaga();
+
+ public static UrzasSaga getInstance() {
+ return instance;
+ }
+
+ private UrzasSaga() {
+ super("Urza's Saga", "USG", ExpansionSet.buildDate(1998, 10, 12), SetType.EXPANSION);
+ this.blockName = "Urza";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Absolute Grace", 1, Rarity.UNCOMMON, mage.cards.a.AbsoluteGrace.class));
+ cards.add(new SetCardInfo("Absolute Law", 2, Rarity.UNCOMMON, mage.cards.a.AbsoluteLaw.class));
+ cards.add(new SetCardInfo("Abundance", 229, Rarity.RARE, mage.cards.a.Abundance.class));
+ cards.add(new SetCardInfo("Abyssal Horror", 115, Rarity.RARE, mage.cards.a.AbyssalHorror.class));
+ cards.add(new SetCardInfo("Academy Researchers", 58, Rarity.UNCOMMON, mage.cards.a.AcademyResearchers.class));
+ cards.add(new SetCardInfo("Acidic Soil", 172, Rarity.UNCOMMON, mage.cards.a.AcidicSoil.class));
+ cards.add(new SetCardInfo("Acridian", 230, Rarity.COMMON, mage.cards.a.Acridian.class));
+ cards.add(new SetCardInfo("Albino Troll", 231, Rarity.UNCOMMON, mage.cards.a.AlbinoTroll.class));
+ cards.add(new SetCardInfo("Anaconda", 232, Rarity.UNCOMMON, mage.cards.a.Anaconda.class));
+ cards.add(new SetCardInfo("Angelic Chorus", 3, Rarity.RARE, mage.cards.a.AngelicChorus.class));
+ cards.add(new SetCardInfo("Angelic Page", 4, Rarity.COMMON, mage.cards.a.AngelicPage.class));
+ cards.add(new SetCardInfo("Annul", 59, Rarity.COMMON, mage.cards.a.Annul.class));
+ cards.add(new SetCardInfo("Arcane Laboratory", 60, Rarity.UNCOMMON, mage.cards.a.ArcaneLaboratory.class));
+ cards.add(new SetCardInfo("Arc Lightning", 174, Rarity.COMMON, mage.cards.a.ArcLightning.class));
+ cards.add(new SetCardInfo("Argothian Elder", 233, Rarity.UNCOMMON, mage.cards.a.ArgothianElder.class));
+ cards.add(new SetCardInfo("Argothian Enchantress", 234, Rarity.RARE, mage.cards.a.ArgothianEnchantress.class));
+ cards.add(new SetCardInfo("Argothian Swine", 235, Rarity.COMMON, mage.cards.a.ArgothianSwine.class));
+ cards.add(new SetCardInfo("Argothian Wurm", 236, Rarity.RARE, mage.cards.a.ArgothianWurm.class));
+ cards.add(new SetCardInfo("Attunement", 61, Rarity.RARE, mage.cards.a.Attunement.class));
+ cards.add(new SetCardInfo("Back to Basics", 62, Rarity.RARE, mage.cards.b.BackToBasics.class));
+ cards.add(new SetCardInfo("Barrin, Master Wizard", 63, Rarity.RARE, mage.cards.b.BarrinMasterWizard.class));
+ cards.add(new SetCardInfo("Barrin's Codex", 286, Rarity.RARE, mage.cards.b.BarrinsCodex.class));
+ cards.add(new SetCardInfo("Bedlam", 175, Rarity.RARE, mage.cards.b.Bedlam.class));
+ cards.add(new SetCardInfo("Befoul", 116, Rarity.COMMON, mage.cards.b.Befoul.class));
+ cards.add(new SetCardInfo("Bereavement", 117, Rarity.UNCOMMON, mage.cards.b.Bereavement.class));
+ cards.add(new SetCardInfo("Blanchwood Armor", 237, Rarity.UNCOMMON, mage.cards.b.BlanchwoodArmor.class));
+ cards.add(new SetCardInfo("Blanchwood Treefolk", 238, Rarity.COMMON, mage.cards.b.BlanchwoodTreefolk.class));
+ cards.add(new SetCardInfo("Blasted Landscape", 319, Rarity.UNCOMMON, mage.cards.b.BlastedLandscape.class));
+ cards.add(new SetCardInfo("Blood Vassal", 118, Rarity.COMMON, mage.cards.b.BloodVassal.class));
+ cards.add(new SetCardInfo("Bog Raiders", 119, Rarity.COMMON, mage.cards.b.BogRaiders.class));
+ cards.add(new SetCardInfo("Brand", 176, Rarity.RARE, mage.cards.b.Brand.class));
+ cards.add(new SetCardInfo("Bravado", 177, Rarity.COMMON, mage.cards.b.Bravado.class));
+ cards.add(new SetCardInfo("Breach", 120, Rarity.COMMON, mage.cards.b.Breach.class));
+ cards.add(new SetCardInfo("Brilliant Halo", 5, Rarity.COMMON, mage.cards.b.BrilliantHalo.class));
+ cards.add(new SetCardInfo("Bull Hippo", 239, Rarity.UNCOMMON, mage.cards.b.BullHippo.class));
+ cards.add(new SetCardInfo("Bulwark", 178, Rarity.RARE, mage.cards.b.Bulwark.class));
+ cards.add(new SetCardInfo("Cackling Fiend", 121, Rarity.COMMON, mage.cards.c.CacklingFiend.class));
+ cards.add(new SetCardInfo("Carpet of Flowers", 240, Rarity.UNCOMMON, mage.cards.c.CarpetOfFlowers.class));
+ cards.add(new SetCardInfo("Carrion Beetles", 122, Rarity.COMMON, mage.cards.c.CarrionBeetles.class));
+ cards.add(new SetCardInfo("Catalog", 64, Rarity.COMMON, mage.cards.c.Catalog.class));
+ cards.add(new SetCardInfo("Catastrophe", 6, Rarity.RARE, mage.cards.c.Catastrophe.class));
+ cards.add(new SetCardInfo("Cathodion", 287, Rarity.UNCOMMON, mage.cards.c.Cathodion.class));
+ cards.add(new SetCardInfo("Cave Tiger", 241, Rarity.COMMON, mage.cards.c.CaveTiger.class));
+ cards.add(new SetCardInfo("Child of Gaea", 242, Rarity.RARE, mage.cards.c.ChildOfGaea.class));
+ cards.add(new SetCardInfo("Chimeric Staff", 288, Rarity.RARE, mage.cards.c.ChimericStaff.class));
+ cards.add(new SetCardInfo("Citanul Centaurs", 243, Rarity.RARE, mage.cards.c.CitanulCentaurs.class));
+ cards.add(new SetCardInfo("Citanul Flute", 289, Rarity.RARE, mage.cards.c.CitanulFlute.class));
+ cards.add(new SetCardInfo("Citanul Hierophants", 244, Rarity.RARE, mage.cards.c.CitanulHierophants.class));
+ cards.add(new SetCardInfo("Claws of Gix", 290, Rarity.UNCOMMON, mage.cards.c.ClawsOfGix.class));
+ cards.add(new SetCardInfo("Clear", 7, Rarity.UNCOMMON, mage.cards.c.Clear.class));
+ cards.add(new SetCardInfo("Cloak of Mists", 65, Rarity.COMMON, mage.cards.c.CloakOfMists.class));
+ cards.add(new SetCardInfo("Confiscate", 66, Rarity.UNCOMMON, mage.cards.c.Confiscate.class));
+ cards.add(new SetCardInfo("Congregate", 8, Rarity.COMMON, mage.cards.c.Congregate.class));
+ cards.add(new SetCardInfo("Contamination", 123, Rarity.RARE, mage.cards.c.Contamination.class));
+ cards.add(new SetCardInfo("Copper Gnomes", 291, Rarity.RARE, mage.cards.c.CopperGnomes.class));
+ cards.add(new SetCardInfo("Coral Merfolk", 67, Rarity.COMMON, mage.cards.c.CoralMerfolk.class));
+ cards.add(new SetCardInfo("Corrupt", 124, Rarity.COMMON, mage.cards.c.Corrupt.class));
+ cards.add(new SetCardInfo("Cradle Guard", 245, Rarity.UNCOMMON, mage.cards.c.CradleGuard.class));
+ cards.add(new SetCardInfo("Crater Hellion", 179, Rarity.RARE, mage.cards.c.CraterHellion.class));
+ cards.add(new SetCardInfo("Crazed Skirge", 125, Rarity.UNCOMMON, mage.cards.c.CrazedSkirge.class));
+ cards.add(new SetCardInfo("Crosswinds", 246, Rarity.UNCOMMON, mage.cards.c.Crosswinds.class));
+ cards.add(new SetCardInfo("Crystal Chimes", 292, Rarity.UNCOMMON, mage.cards.c.CrystalChimes.class));
+ cards.add(new SetCardInfo("Curfew", 68, Rarity.COMMON, mage.cards.c.Curfew.class));
+ cards.add(new SetCardInfo("Darkest Hour", 128, Rarity.RARE, mage.cards.d.DarkestHour.class));
+ cards.add(new SetCardInfo("Dark Hatchling", 126, Rarity.RARE, mage.cards.d.DarkHatchling.class));
+ cards.add(new SetCardInfo("Dark Ritual", 127, Rarity.COMMON, mage.cards.d.DarkRitual.class));
+ cards.add(new SetCardInfo("Defensive Formation", 9, Rarity.UNCOMMON, mage.cards.d.DefensiveFormation.class));
+ cards.add(new SetCardInfo("Despondency", 129, Rarity.COMMON, mage.cards.d.Despondency.class));
+ cards.add(new SetCardInfo("Destructive Urge", 180, Rarity.UNCOMMON, mage.cards.d.DestructiveUrge.class));
+ cards.add(new SetCardInfo("Diabolic Servitude", 130, Rarity.UNCOMMON, mage.cards.d.DiabolicServitude.class));
+ cards.add(new SetCardInfo("Disciple of Grace", 10, Rarity.COMMON, mage.cards.d.DiscipleOfGrace.class));
+ cards.add(new SetCardInfo("Disciple of Law", 11, Rarity.COMMON, mage.cards.d.DiscipleOfLaw.class));
+ cards.add(new SetCardInfo("Disenchant", 12, Rarity.COMMON, mage.cards.d.Disenchant.class));
+ cards.add(new SetCardInfo("Disorder", 181, Rarity.UNCOMMON, mage.cards.d.Disorder.class));
+ cards.add(new SetCardInfo("Disruptive Student", 69, Rarity.COMMON, mage.cards.d.DisruptiveStudent.class));
+ cards.add(new SetCardInfo("Douse", 70, Rarity.UNCOMMON, mage.cards.d.Douse.class));
+ cards.add(new SetCardInfo("Dragon Blood", 293, Rarity.UNCOMMON, mage.cards.d.DragonBlood.class));
+ cards.add(new SetCardInfo("Drifting Djinn", 71, Rarity.RARE, mage.cards.d.DriftingDjinn.class));
+ cards.add(new SetCardInfo("Drifting Meadow", 320, Rarity.COMMON, mage.cards.d.DriftingMeadow.class));
+ cards.add(new SetCardInfo("Dromosaur", 182, Rarity.COMMON, mage.cards.d.Dromosaur.class));
+ cards.add(new SetCardInfo("Duress", 132, Rarity.COMMON, mage.cards.d.Duress.class));
+ cards.add(new SetCardInfo("Eastern Paladin", 133, Rarity.RARE, mage.cards.e.EasternPaladin.class));
+ cards.add(new SetCardInfo("Electryte", 183, Rarity.RARE, mage.cards.e.Electryte.class));
+ cards.add(new SetCardInfo("Elite Archers", 13, Rarity.RARE, mage.cards.e.EliteArchers.class));
+ cards.add(new SetCardInfo("Elvish Herder", 247, Rarity.COMMON, mage.cards.e.ElvishHerder.class));
+ cards.add(new SetCardInfo("Elvish Lyrist", 248, Rarity.COMMON, mage.cards.e.ElvishLyrist.class));
+ cards.add(new SetCardInfo("Endless Wurm", 249, Rarity.RARE, mage.cards.e.EndlessWurm.class));
+ cards.add(new SetCardInfo("Endoskeleton", 294, Rarity.UNCOMMON, mage.cards.e.Endoskeleton.class));
+ cards.add(new SetCardInfo("Energy Field", 73, Rarity.RARE, mage.cards.e.EnergyField.class));
+ cards.add(new SetCardInfo("Exhaustion", 74, Rarity.UNCOMMON, mage.cards.e.Exhaustion.class));
+ cards.add(new SetCardInfo("Exhume", 134, Rarity.COMMON, mage.cards.e.Exhume.class));
+ cards.add(new SetCardInfo("Exploration", 250, Rarity.RARE, mage.cards.e.Exploration.class));
+ cards.add(new SetCardInfo("Expunge", 135, Rarity.COMMON, mage.cards.e.Expunge.class));
+ cards.add(new SetCardInfo("Faith Healer", 14, Rarity.RARE, mage.cards.f.FaithHealer.class));
+ cards.add(new SetCardInfo("Falter", 184, Rarity.COMMON, mage.cards.f.Falter.class));
+ cards.add(new SetCardInfo("Fault Line", 185, Rarity.RARE, mage.cards.f.FaultLine.class));
+ cards.add(new SetCardInfo("Fecundity", 251, Rarity.UNCOMMON, mage.cards.f.Fecundity.class));
+ cards.add(new SetCardInfo("Fertile Ground", 252, Rarity.COMMON, mage.cards.f.FertileGround.class));
+ cards.add(new SetCardInfo("Fiery Mantle", 186, Rarity.COMMON, mage.cards.f.FieryMantle.class));
+ cards.add(new SetCardInfo("Fire Ants", 187, Rarity.UNCOMMON, mage.cards.f.FireAnts.class));
+ cards.add(new SetCardInfo("Flesh Reaver", 136, Rarity.UNCOMMON, mage.cards.f.FleshReaver.class));
+ cards.add(new SetCardInfo("Fluctuator", 295, Rarity.RARE, mage.cards.f.Fluctuator.class));
+ cards.add(new SetCardInfo("Fog Bank", 75, Rarity.UNCOMMON, mage.cards.f.FogBank.class));
+ cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Fortitude", 253, Rarity.COMMON, mage.cards.f.Fortitude.class));
+ cards.add(new SetCardInfo("Gaea's Bounty", 254, Rarity.COMMON, mage.cards.g.GaeasBounty.class));
+ cards.add(new SetCardInfo("Gaea's Cradle", 321, Rarity.RARE, mage.cards.g.GaeasCradle.class));
+ cards.add(new SetCardInfo("Gaea's Embrace", 255, Rarity.UNCOMMON, mage.cards.g.GaeasEmbrace.class));
+ cards.add(new SetCardInfo("Gamble", 188, Rarity.RARE, mage.cards.g.Gamble.class));
+ cards.add(new SetCardInfo("Gilded Drake", 76, Rarity.RARE, mage.cards.g.GildedDrake.class));
+ cards.add(new SetCardInfo("Glorious Anthem", 15, Rarity.RARE, mage.cards.g.GloriousAnthem.class));
+ cards.add(new SetCardInfo("Goblin Cadets", 189, Rarity.UNCOMMON, mage.cards.g.GoblinCadets.class));
+ cards.add(new SetCardInfo("Goblin Lackey", 190, Rarity.UNCOMMON, mage.cards.g.GoblinLackey.class));
+ cards.add(new SetCardInfo("Goblin Matron", 191, Rarity.COMMON, mage.cards.g.GoblinMatron.class));
+ cards.add(new SetCardInfo("Goblin Offensive", 192, Rarity.UNCOMMON, mage.cards.g.GoblinOffensive.class));
+ cards.add(new SetCardInfo("Goblin Patrol", 193, Rarity.COMMON, mage.cards.g.GoblinPatrol.class));
+ cards.add(new SetCardInfo("Goblin Raider", 194, Rarity.COMMON, mage.cards.g.GoblinRaider.class));
+ cards.add(new SetCardInfo("Goblin Spelunkers", 195, Rarity.COMMON, mage.cards.g.GoblinSpelunkers.class));
+ cards.add(new SetCardInfo("Goblin War Buggy", 196, Rarity.COMMON, mage.cards.g.GoblinWarBuggy.class));
+ cards.add(new SetCardInfo("Gorilla Warrior", 256, Rarity.COMMON, mage.cards.g.GorillaWarrior.class));
+ cards.add(new SetCardInfo("Grafted Skullcap", 296, Rarity.RARE, mage.cards.g.GraftedSkullcap.class));
+ cards.add(new SetCardInfo("Greater Good", 257, Rarity.RARE, mage.cards.g.GreaterGood.class));
+ cards.add(new SetCardInfo("Great Whale", 77, Rarity.RARE, mage.cards.g.GreatWhale.class));
+ cards.add(new SetCardInfo("Greener Pastures", 258, Rarity.RARE, mage.cards.g.GreenerPastures.class));
+ cards.add(new SetCardInfo("Guma", 197, Rarity.UNCOMMON, mage.cards.g.Guma.class));
+ cards.add(new SetCardInfo("Hawkeater Moth", 259, Rarity.UNCOMMON, mage.cards.h.HawkeaterMoth.class));
+ cards.add(new SetCardInfo("Headlong Rush", 198, Rarity.COMMON, mage.cards.h.HeadlongRush.class));
+ cards.add(new SetCardInfo("Healing Salve", 16, Rarity.COMMON, mage.cards.h.HealingSalve.class));
+ cards.add(new SetCardInfo("Heat Ray", 199, Rarity.COMMON, mage.cards.h.HeatRay.class));
+ cards.add(new SetCardInfo("Herald of Serra", 17, Rarity.RARE, mage.cards.h.HeraldOfSerra.class));
+ cards.add(new SetCardInfo("Hermetic Study", 78, Rarity.COMMON, mage.cards.h.HermeticStudy.class));
+ cards.add(new SetCardInfo("Hibernation", 79, Rarity.UNCOMMON, mage.cards.h.Hibernation.class));
+ cards.add(new SetCardInfo("Hidden Ancients", 260, Rarity.UNCOMMON, mage.cards.h.HiddenAncients.class));
+ cards.add(new SetCardInfo("Hidden Guerrillas", 261, Rarity.UNCOMMON, mage.cards.h.HiddenGuerrillas.class));
+ cards.add(new SetCardInfo("Hidden Herd", 262, Rarity.RARE, mage.cards.h.HiddenHerd.class));
+ cards.add(new SetCardInfo("Hidden Spider", 264, Rarity.COMMON, mage.cards.h.HiddenSpider.class));
+ cards.add(new SetCardInfo("Hollow Dogs", 137, Rarity.COMMON, mage.cards.h.HollowDogs.class));
+ cards.add(new SetCardInfo("Hopping Automaton", 297, Rarity.UNCOMMON, mage.cards.h.HoppingAutomaton.class));
+ cards.add(new SetCardInfo("Horseshoe Crab", 80, Rarity.COMMON, mage.cards.h.HorseshoeCrab.class));
+ cards.add(new SetCardInfo("Humble", 18, Rarity.UNCOMMON, mage.cards.h.Humble.class));
+ cards.add(new SetCardInfo("Hush", 266, Rarity.COMMON, mage.cards.h.Hush.class));
+ cards.add(new SetCardInfo("Ill-Gotten Gains", 138, Rarity.RARE, mage.cards.i.IllGottenGains.class));
+ cards.add(new SetCardInfo("Imaginary Pet", 81, Rarity.RARE, mage.cards.i.ImaginaryPet.class));
+ cards.add(new SetCardInfo("Intrepid Hero", 19, Rarity.RARE, mage.cards.i.IntrepidHero.class));
+ cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Jagged Lightning", 200, Rarity.UNCOMMON, mage.cards.j.JaggedLightning.class));
+ 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));
+ cards.add(new SetCardInfo("Looming Shade", 139, Rarity.COMMON, mage.cards.l.LoomingShade.class));
+ cards.add(new SetCardInfo("Lotus Blossom", 300, Rarity.RARE, mage.cards.l.LotusBlossom.class));
+ cards.add(new SetCardInfo("Lull", 267, Rarity.COMMON, mage.cards.l.Lull.class));
+ cards.add(new SetCardInfo("Lurking Evil", 140, Rarity.RARE, mage.cards.l.LurkingEvil.class));
+ cards.add(new SetCardInfo("Mana Leech", 141, Rarity.UNCOMMON, mage.cards.m.ManaLeech.class));
+ cards.add(new SetCardInfo("Meltdown", 203, Rarity.UNCOMMON, mage.cards.m.Meltdown.class));
+ cards.add(new SetCardInfo("Metrognome", 301, Rarity.RARE, mage.cards.m.Metrognome.class));
+ cards.add(new SetCardInfo("Midsummer Revel", 268, Rarity.RARE, mage.cards.m.MidsummerRevel.class));
+ cards.add(new SetCardInfo("Mishra's Helix", 302, Rarity.RARE, mage.cards.m.MishrasHelix.class));
+ cards.add(new SetCardInfo("Mobile Fort", 303, Rarity.UNCOMMON, mage.cards.m.MobileFort.class));
+ cards.add(new SetCardInfo("Monk Idealist", 20, Rarity.UNCOMMON, mage.cards.m.MonkIdealist.class));
+ cards.add(new SetCardInfo("Monk Realist", 21, Rarity.COMMON, mage.cards.m.MonkRealist.class));
+ cards.add(new SetCardInfo("Morphling", 85, Rarity.RARE, mage.cards.m.Morphling.class));
+ cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("No Rest for the Wicked", 142, Rarity.UNCOMMON, mage.cards.n.NoRestForTheWicked.class));
+ cards.add(new SetCardInfo("Noetic Scales", 304, Rarity.RARE, mage.cards.n.NoeticScales.class));
+ cards.add(new SetCardInfo("Okk", 204, Rarity.RARE, mage.cards.o.Okk.class));
+ cards.add(new SetCardInfo("Opal Archangel", 23, Rarity.RARE, mage.cards.o.OpalArchangel.class));
+ cards.add(new SetCardInfo("Opal Caryatid", 24, Rarity.COMMON, mage.cards.o.OpalCaryatid.class));
+ cards.add(new SetCardInfo("Opal Gargoyle", 25, Rarity.COMMON, mage.cards.o.OpalGargoyle.class));
+ cards.add(new SetCardInfo("Oppression", 143, Rarity.RARE, mage.cards.o.Oppression.class));
+ cards.add(new SetCardInfo("Order of Yawgmoth", 144, Rarity.UNCOMMON, mage.cards.o.OrderOfYawgmoth.class));
+ cards.add(new SetCardInfo("Pacifism", 27, Rarity.COMMON, mage.cards.p.Pacifism.class));
+ cards.add(new SetCardInfo("Parasitic Bond", 145, Rarity.UNCOMMON, mage.cards.p.ParasiticBond.class));
+ cards.add(new SetCardInfo("Pariah", 28, Rarity.RARE, mage.cards.p.Pariah.class));
+ cards.add(new SetCardInfo("Path of Peace", 29, Rarity.COMMON, mage.cards.p.PathOfPeace.class));
+ cards.add(new SetCardInfo("Pegasus Charger", 30, Rarity.COMMON, mage.cards.p.PegasusCharger.class));
+ cards.add(new SetCardInfo("Pendrell Drake", 86, Rarity.COMMON, mage.cards.p.PendrellDrake.class));
+ cards.add(new SetCardInfo("Pendrell Flux", 87, Rarity.COMMON, mage.cards.p.PendrellFlux.class));
+ cards.add(new SetCardInfo("Peregrine Drake", 88, Rarity.UNCOMMON, mage.cards.p.PeregrineDrake.class));
+ cards.add(new SetCardInfo("Persecute", 146, Rarity.RARE, mage.cards.p.Persecute.class));
+ cards.add(new SetCardInfo("Pestilence", 147, Rarity.COMMON, mage.cards.p.Pestilence.class));
+ cards.add(new SetCardInfo("Phyrexian Colossus", 305, Rarity.RARE, mage.cards.p.PhyrexianColossus.class));
+ cards.add(new SetCardInfo("Phyrexian Ghoul", 148, Rarity.COMMON, mage.cards.p.PhyrexianGhoul.class));
+ cards.add(new SetCardInfo("Phyrexian Processor", 306, Rarity.RARE, mage.cards.p.PhyrexianProcessor.class));
+ cards.add(new SetCardInfo("Phyrexian Tower", 322, Rarity.RARE, mage.cards.p.PhyrexianTower.class));
+ cards.add(new SetCardInfo("Pit Trap", 307, Rarity.UNCOMMON, mage.cards.p.PitTrap.class));
+ cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Planar Birth", 31, Rarity.RARE, mage.cards.p.PlanarBirth.class));
+ cards.add(new SetCardInfo("Planar Void", 149, Rarity.RARE, mage.cards.p.PlanarVoid.class));
+ cards.add(new SetCardInfo("Polluted Mire", 323, Rarity.COMMON, mage.cards.p.PollutedMire.class));
+ cards.add(new SetCardInfo("Pouncing Jaguar", 269, Rarity.COMMON, mage.cards.p.PouncingJaguar.class));
+ cards.add(new SetCardInfo("Power Sink", 89, Rarity.COMMON, mage.cards.p.PowerSink.class));
+ cards.add(new SetCardInfo("Presence of the Master", 32, Rarity.UNCOMMON, mage.cards.p.PresenceOfTheMaster.class));
+ cards.add(new SetCardInfo("Priest of Gix", 150, Rarity.UNCOMMON, mage.cards.p.PriestOfGix.class));
+ cards.add(new SetCardInfo("Priest of Titania", 270, Rarity.COMMON, mage.cards.p.PriestOfTitania.class));
+ cards.add(new SetCardInfo("Purging Scythe", 308, Rarity.RARE, mage.cards.p.PurgingScythe.class));
+ cards.add(new SetCardInfo("Rain of Filth", 151, Rarity.UNCOMMON, mage.cards.r.RainOfFilth.class));
+ cards.add(new SetCardInfo("Rain of Salt", 206, Rarity.UNCOMMON, mage.cards.r.RainOfSalt.class));
+ cards.add(new SetCardInfo("Ravenous Skirge", 152, Rarity.COMMON, mage.cards.r.RavenousSkirge.class));
+ cards.add(new SetCardInfo("Raze", 207, Rarity.COMMON, mage.cards.r.Raze.class));
+ cards.add(new SetCardInfo("Recantation", 91, Rarity.RARE, mage.cards.r.Recantation.class));
+ cards.add(new SetCardInfo("Reclusive Wight", 153, Rarity.UNCOMMON, mage.cards.r.ReclusiveWight.class));
+ cards.add(new SetCardInfo("Redeem", 33, Rarity.UNCOMMON, mage.cards.r.Redeem.class));
+ cards.add(new SetCardInfo("Reflexes", 208, Rarity.COMMON, mage.cards.r.Reflexes.class));
+ cards.add(new SetCardInfo("Rejuvenate", 271, Rarity.COMMON, mage.cards.r.Rejuvenate.class));
+ cards.add(new SetCardInfo("Remembrance", 34, Rarity.RARE, mage.cards.r.Remembrance.class));
+ cards.add(new SetCardInfo("Remote Isle", 324, Rarity.COMMON, mage.cards.r.RemoteIsle.class));
+ cards.add(new SetCardInfo("Reprocess", 154, Rarity.RARE, mage.cards.r.Reprocess.class));
+ cards.add(new SetCardInfo("Rescind", 92, Rarity.COMMON, mage.cards.r.Rescind.class));
+ cards.add(new SetCardInfo("Retaliation", 272, Rarity.UNCOMMON, mage.cards.r.Retaliation.class));
+ cards.add(new SetCardInfo("Retromancer", 209, Rarity.COMMON, mage.cards.r.Retromancer.class));
+ cards.add(new SetCardInfo("Rewind", 93, Rarity.COMMON, mage.cards.r.Rewind.class));
+ cards.add(new SetCardInfo("Rumbling Crescendo", 210, Rarity.RARE, mage.cards.r.RumblingCrescendo.class));
+ cards.add(new SetCardInfo("Rune of Protection: Artifacts", 35, Rarity.UNCOMMON, mage.cards.r.RuneOfProtectionArtifacts.class));
+ cards.add(new SetCardInfo("Rune of Protection: Black", 36, Rarity.COMMON, mage.cards.r.RuneOfProtectionBlack.class));
+ cards.add(new SetCardInfo("Rune of Protection: Blue", 37, Rarity.COMMON, mage.cards.r.RuneOfProtectionBlue.class));
+ cards.add(new SetCardInfo("Rune of Protection: Green", 38, Rarity.COMMON, mage.cards.r.RuneOfProtectionGreen.class));
+ cards.add(new SetCardInfo("Rune of Protection: Lands", 39, Rarity.RARE, mage.cards.r.RuneOfProtectionLands.class));
+ cards.add(new SetCardInfo("Rune of Protection: Red", 40, Rarity.COMMON, mage.cards.r.RuneOfProtectionRed.class));
+ cards.add(new SetCardInfo("Rune of Protection: White", 41, Rarity.COMMON, mage.cards.r.RuneOfProtectionWhite.class));
+ cards.add(new SetCardInfo("Sanctum Custodian", 42, Rarity.COMMON, mage.cards.s.SanctumCustodian.class));
+ cards.add(new SetCardInfo("Sanctum Guardian", 43, Rarity.UNCOMMON, mage.cards.s.SanctumGuardian.class));
+ cards.add(new SetCardInfo("Sandbar Merfolk", 94, Rarity.COMMON, mage.cards.s.SandbarMerfolk.class));
+ cards.add(new SetCardInfo("Sandbar Serpent", 95, Rarity.UNCOMMON, mage.cards.s.SandbarSerpent.class));
+ cards.add(new SetCardInfo("Sanguine Guard", 155, Rarity.UNCOMMON, mage.cards.s.SanguineGuard.class));
+ cards.add(new SetCardInfo("Scald", 211, Rarity.UNCOMMON, mage.cards.s.Scald.class));
+ cards.add(new SetCardInfo("Scoria Wurm", 212, Rarity.RARE, mage.cards.s.ScoriaWurm.class));
+ cards.add(new SetCardInfo("Scrap", 213, Rarity.COMMON, mage.cards.s.Scrap.class));
+ cards.add(new SetCardInfo("Seasoned Marshal", 44, Rarity.UNCOMMON, mage.cards.s.SeasonedMarshal.class));
+ cards.add(new SetCardInfo("Serra Avatar", 45, Rarity.RARE, mage.cards.s.SerraAvatar.class));
+ cards.add(new SetCardInfo("Serra's Embrace", 47, Rarity.UNCOMMON, mage.cards.s.SerrasEmbrace.class));
+ cards.add(new SetCardInfo("Serra's Liturgy", 49, Rarity.RARE, mage.cards.s.SerrasLiturgy.class));
+ cards.add(new SetCardInfo("Serra's Sanctum", 325, Rarity.RARE, mage.cards.s.SerrasSanctum.class));
+ cards.add(new SetCardInfo("Serra Zealot", 46, Rarity.COMMON, mage.cards.s.SerraZealot.class));
+ cards.add(new SetCardInfo("Shimmering Barrier", 50, Rarity.UNCOMMON, mage.cards.s.ShimmeringBarrier.class));
+ cards.add(new SetCardInfo("Shivan Gorge", 326, Rarity.RARE, mage.cards.s.ShivanGorge.class));
+ cards.add(new SetCardInfo("Shivan Hellkite", 214, Rarity.RARE, mage.cards.s.ShivanHellkite.class));
+ cards.add(new SetCardInfo("Shivan Raptor", 215, Rarity.UNCOMMON, mage.cards.s.ShivanRaptor.class));
+ cards.add(new SetCardInfo("Shiv's Embrace", 216, Rarity.UNCOMMON, mage.cards.s.ShivsEmbrace.class));
+ cards.add(new SetCardInfo("Show and Tell", 96, Rarity.RARE, mage.cards.s.ShowAndTell.class));
+ cards.add(new SetCardInfo("Shower of Sparks", 217, Rarity.COMMON, mage.cards.s.ShowerOfSparks.class));
+ cards.add(new SetCardInfo("Sicken", 156, Rarity.COMMON, mage.cards.s.Sicken.class));
+ cards.add(new SetCardInfo("Silent Attendant", 51, Rarity.COMMON, mage.cards.s.SilentAttendant.class));
+ cards.add(new SetCardInfo("Skirge Familiar", 157, Rarity.UNCOMMON, mage.cards.s.SkirgeFamiliar.class));
+ cards.add(new SetCardInfo("Skittering Skirge", 158, Rarity.COMMON, mage.cards.s.SkitteringSkirge.class));
+ cards.add(new SetCardInfo("Sleeper Agent", 159, Rarity.RARE, mage.cards.s.SleeperAgent.class));
+ cards.add(new SetCardInfo("Slippery Karst", 327, Rarity.COMMON, mage.cards.s.SlipperyKarst.class));
+ cards.add(new SetCardInfo("Smokestack", 309, Rarity.RARE, mage.cards.s.Smokestack.class));
+ cards.add(new SetCardInfo("Smoldering Crater", 328, Rarity.COMMON, mage.cards.s.SmolderingCrater.class));
+ cards.add(new SetCardInfo("Sneak Attack", 218, Rarity.RARE, mage.cards.s.SneakAttack.class));
+ cards.add(new SetCardInfo("Somnophore", 97, Rarity.RARE, mage.cards.s.Somnophore.class));
+ cards.add(new SetCardInfo("Songstitcher", 52, Rarity.UNCOMMON, mage.cards.s.Songstitcher.class));
+ cards.add(new SetCardInfo("Spined Fluke", 160, Rarity.UNCOMMON, mage.cards.s.SpinedFluke.class));
+ cards.add(new SetCardInfo("Spire Owl", 98, Rarity.COMMON, mage.cards.s.SpireOwl.class));
+ cards.add(new SetCardInfo("Sporogenesis", 273, Rarity.RARE, mage.cards.s.Sporogenesis.class));
+ cards.add(new SetCardInfo("Spreading Algae", 274, Rarity.UNCOMMON, mage.cards.s.SpreadingAlgae.class));
+ cards.add(new SetCardInfo("Steam Blast", 219, Rarity.UNCOMMON, mage.cards.s.SteamBlast.class));
+ cards.add(new SetCardInfo("Stern Proctor", 99, Rarity.UNCOMMON, mage.cards.s.SternProctor.class));
+ cards.add(new SetCardInfo("Stroke of Genius", 100, Rarity.RARE, mage.cards.s.StrokeOfGenius.class));
+ cards.add(new SetCardInfo("Sulfuric Vapors", 220, Rarity.RARE, mage.cards.s.SulfuricVapors.class));
+ cards.add(new SetCardInfo("Sunder", 101, Rarity.RARE, mage.cards.s.Sunder.class));
+ cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Symbiosis", 275, Rarity.COMMON, mage.cards.s.Symbiosis.class));
+ cards.add(new SetCardInfo("Tainted Aether", 161, Rarity.RARE, mage.cards.t.TaintedAether.class));
+ cards.add(new SetCardInfo("Telepathy", 102, Rarity.UNCOMMON, mage.cards.t.Telepathy.class));
+ cards.add(new SetCardInfo("Temporal Aperture", 310, Rarity.RARE, mage.cards.t.TemporalAperture.class));
+ cards.add(new SetCardInfo("Thran Quarry", 329, Rarity.RARE, mage.cards.t.ThranQuarry.class));
+ cards.add(new SetCardInfo("Thran Turbine", 311, Rarity.UNCOMMON, mage.cards.t.ThranTurbine.class));
+ cards.add(new SetCardInfo("Thundering Giant", 221, Rarity.UNCOMMON, mage.cards.t.ThunderingGiant.class));
+ cards.add(new SetCardInfo("Time Spiral", 103, Rarity.RARE, mage.cards.t.TimeSpiral.class));
+ cards.add(new SetCardInfo("Titania's Boon", 276, Rarity.UNCOMMON, mage.cards.t.TitaniasBoon.class));
+ cards.add(new SetCardInfo("Titania's Chosen", 277, Rarity.UNCOMMON, mage.cards.t.TitaniasChosen.class));
+ cards.add(new SetCardInfo("Tolarian Academy", 330, Rarity.RARE, mage.cards.t.TolarianAcademy.class));
+ cards.add(new SetCardInfo("Tolarian Winds", 104, Rarity.COMMON, mage.cards.t.TolarianWinds.class));
+ cards.add(new SetCardInfo("Torch Song", 222, Rarity.UNCOMMON, mage.cards.t.TorchSong.class));
+ cards.add(new SetCardInfo("Treefolk Seedlings", 278, Rarity.UNCOMMON, mage.cards.t.TreefolkSeedlings.class));
+ cards.add(new SetCardInfo("Treetop Rangers", 279, Rarity.COMMON, mage.cards.t.TreetopRangers.class));
+ cards.add(new SetCardInfo("Turnabout", 105, Rarity.UNCOMMON, mage.cards.t.Turnabout.class));
+ cards.add(new SetCardInfo("Umbilicus", 312, Rarity.RARE, mage.cards.u.Umbilicus.class));
+ cards.add(new SetCardInfo("Unnerve", 162, Rarity.COMMON, mage.cards.u.Unnerve.class));
+ cards.add(new SetCardInfo("Unworthy Dead", 163, Rarity.COMMON, mage.cards.u.UnworthyDead.class));
+ cards.add(new SetCardInfo("Urza's Armor", 313, Rarity.UNCOMMON, mage.cards.u.UrzasArmor.class));
+ cards.add(new SetCardInfo("Vampiric Embrace", 164, Rarity.UNCOMMON, mage.cards.v.VampiricEmbrace.class));
+ cards.add(new SetCardInfo("Vebulid", 165, Rarity.RARE, mage.cards.v.Vebulid.class));
+ cards.add(new SetCardInfo("Vernal Bloom", 281, Rarity.RARE, mage.cards.v.VernalBloom.class));
+ cards.add(new SetCardInfo("Viashino Outrider", 223, Rarity.COMMON, mage.cards.v.ViashinoOutrider.class));
+ cards.add(new SetCardInfo("Viashino Runner", 224, Rarity.COMMON, mage.cards.v.ViashinoRunner.class));
+ cards.add(new SetCardInfo("Viashino Sandswimmer", 225, Rarity.RARE, mage.cards.v.ViashinoSandswimmer.class));
+ cards.add(new SetCardInfo("Viashino Weaponsmith", 226, Rarity.COMMON, mage.cards.v.ViashinoWeaponsmith.class));
+ cards.add(new SetCardInfo("Victimize", 166, Rarity.UNCOMMON, mage.cards.v.Victimize.class));
+ cards.add(new SetCardInfo("Vile Requiem", 167, Rarity.UNCOMMON, mage.cards.v.VileRequiem.class));
+ cards.add(new SetCardInfo("Voice of Grace", 54, Rarity.UNCOMMON, mage.cards.v.VoiceOfGrace.class));
+ cards.add(new SetCardInfo("Voice of Law", 55, Rarity.UNCOMMON, mage.cards.v.VoiceOfLaw.class));
+ cards.add(new SetCardInfo("Voltaic Key", 314, Rarity.UNCOMMON, mage.cards.v.VoltaicKey.class));
+ cards.add(new SetCardInfo("Vug Lizard", 227, Rarity.UNCOMMON, mage.cards.v.VugLizard.class));
+ cards.add(new SetCardInfo("War Dance", 282, Rarity.UNCOMMON, mage.cards.w.WarDance.class));
+ cards.add(new SetCardInfo("Wall of Junk", 315, Rarity.UNCOMMON, mage.cards.w.WallOfJunk.class));
+ cards.add(new SetCardInfo("Waylay", 56, Rarity.UNCOMMON, mage.cards.w.Waylay.class));
+ cards.add(new SetCardInfo("Western Paladin", 168, Rarity.RARE, mage.cards.w.WesternPaladin.class));
+ cards.add(new SetCardInfo("Whetstone", 316, Rarity.RARE, mage.cards.w.Whetstone.class));
+ cards.add(new SetCardInfo("Whirlwind", 283, Rarity.RARE, mage.cards.w.Whirlwind.class));
+ cards.add(new SetCardInfo("Wild Dogs", 284, Rarity.COMMON, mage.cards.w.WildDogs.class));
+ cards.add(new SetCardInfo("Wildfire", 228, Rarity.RARE, mage.cards.w.Wildfire.class));
+ cards.add(new SetCardInfo("Windfall", 111, Rarity.UNCOMMON, mage.cards.w.Windfall.class));
+ cards.add(new SetCardInfo("Winding Wurm", 285, Rarity.COMMON, mage.cards.w.WindingWurm.class));
+ cards.add(new SetCardInfo("Wirecat", 317, Rarity.UNCOMMON, mage.cards.w.Wirecat.class));
+ cards.add(new SetCardInfo("Witch Engine", 169, Rarity.RARE, mage.cards.w.WitchEngine.class));
+ cards.add(new SetCardInfo("Wizard Mentor", 112, Rarity.COMMON, mage.cards.w.WizardMentor.class));
+ cards.add(new SetCardInfo("Worn Powerstone", 318, Rarity.UNCOMMON, mage.cards.w.WornPowerstone.class));
+ cards.add(new SetCardInfo("Worship", 57, Rarity.RARE, mage.cards.w.Worship.class));
+ cards.add(new SetCardInfo("Yawgmoth's Edict", 170, Rarity.UNCOMMON, mage.cards.y.YawgmothsEdict.class));
+ cards.add(new SetCardInfo("Yawgmoth's Will", 171, Rarity.RARE, mage.cards.y.YawgmothsWill.class));
+ cards.add(new SetCardInfo("Zephid", 113, Rarity.RARE, mage.cards.z.Zephid.class));
+ cards.add(new SetCardInfo("Zephid's Embrace", 114, Rarity.UNCOMMON, mage.cards.z.ZephidsEmbrace.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/VenserVsKoth.java b/Mage.Sets/src/mage/sets/VenserVsKoth.java
index c945ed85ec4..5994fabcc68 100644
--- a/Mage.Sets/src/mage/sets/VenserVsKoth.java
+++ b/Mage.Sets/src/mage/sets/VenserVsKoth.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class VenserVsKoth extends ExpansionSet {
+public final class VenserVsKoth extends ExpansionSet {
private static final VenserVsKoth instance = new VenserVsKoth();
diff --git a/Mage.Sets/src/mage/sets/VintageMasters.java b/Mage.Sets/src/mage/sets/VintageMasters.java
index df3d41db5d6..489e11c6ce6 100644
--- a/Mage.Sets/src/mage/sets/VintageMasters.java
+++ b/Mage.Sets/src/mage/sets/VintageMasters.java
@@ -41,7 +41,7 @@ import mage.constants.SetType;
*
* @author LevelX2
*/
-public class VintageMasters extends ExpansionSet {
+public final class VintageMasters extends ExpansionSet {
private static final VintageMasters instance = new VintageMasters();
diff --git a/Mage.Sets/src/mage/sets/Visions.java b/Mage.Sets/src/mage/sets/Visions.java
index cb753ada3f1..975c9c6e927 100644
--- a/Mage.Sets/src/mage/sets/Visions.java
+++ b/Mage.Sets/src/mage/sets/Visions.java
@@ -1,209 +1,209 @@
-/*
- * 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.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public class Visions extends ExpansionSet {
-
- private static final Visions instance = new Visions();
-
- public static Visions getInstance() {
- return instance;
- }
-
- private Visions() {
- super("Visions", "VIS", ExpansionSet.buildDate(1997, 1, 11), SetType.EXPANSION);
- this.blockName = "Mirage";
- this.parentSet = Mirage.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("Aku Djinn", 51, Rarity.RARE, mage.cards.a.AkuDjinn.class));
- cards.add(new SetCardInfo("Anvil of Bogardan", 141, Rarity.RARE, mage.cards.a.AnvilOfBogardan.class));
- cards.add(new SetCardInfo("Archangel", 1, Rarity.RARE, mage.cards.a.Archangel.class));
- cards.add(new SetCardInfo("Army Ants", 126, Rarity.UNCOMMON, mage.cards.a.ArmyAnts.class));
- cards.add(new SetCardInfo("Betrayal", 26, Rarity.COMMON, mage.cards.b.Betrayal.class));
- cards.add(new SetCardInfo("Blanket of Night", 52, Rarity.UNCOMMON, mage.cards.b.BlanketOfNight.class));
- cards.add(new SetCardInfo("Brass-Talon Chimera", 142, Rarity.UNCOMMON, mage.cards.b.BrassTalonChimera.class));
- cards.add(new SetCardInfo("Breathstealer's Crypt", 127, Rarity.RARE, mage.cards.b.BreathstealersCrypt.class));
- cards.add(new SetCardInfo("Breezekeeper", 27, Rarity.COMMON, mage.cards.b.Breezekeeper.class));
- cards.add(new SetCardInfo("Brood of Cockroaches", 53, Rarity.UNCOMMON, mage.cards.b.BroodOfCockroaches.class));
- cards.add(new SetCardInfo("Bull Elephant", 101, Rarity.COMMON, mage.cards.b.BullElephant.class));
- cards.add(new SetCardInfo("Chronatog", 28, Rarity.RARE, mage.cards.c.Chronatog.class));
- cards.add(new SetCardInfo("City of Solitude", 102, Rarity.RARE, mage.cards.c.CityOfSolitude.class));
- cards.add(new SetCardInfo("Cloud Elemental", 29, Rarity.COMMON, mage.cards.c.CloudElemental.class));
- cards.add(new SetCardInfo("Coercion", 54, Rarity.COMMON, mage.cards.c.Coercion.class));
- cards.add(new SetCardInfo("Coral Atoll", 160, Rarity.UNCOMMON, mage.cards.c.CoralAtoll.class));
- cards.add(new SetCardInfo("Corrosion", 128, Rarity.RARE, mage.cards.c.Corrosion.class));
- cards.add(new SetCardInfo("Creeping Mold", 103, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class));
- cards.add(new SetCardInfo("Crypt Rats", 55, Rarity.COMMON, mage.cards.c.CryptRats.class));
- cards.add(new SetCardInfo("Daraja Griffin", 2, Rarity.UNCOMMON, mage.cards.d.DarajaGriffin.class));
- cards.add(new SetCardInfo("Dark Privilege", 56, Rarity.COMMON, mage.cards.d.DarkPrivilege.class));
- cards.add(new SetCardInfo("Death Watch", 57, Rarity.COMMON, mage.cards.d.DeathWatch.class));
- cards.add(new SetCardInfo("Desertion", 30, Rarity.RARE, mage.cards.d.Desertion.class));
- cards.add(new SetCardInfo("Desolation", 58, Rarity.UNCOMMON, mage.cards.d.Desolation.class));
- cards.add(new SetCardInfo("Diamond Kaleidoscope", 143, Rarity.RARE, mage.cards.d.DiamondKaleidoscope.class));
- cards.add(new SetCardInfo("Dormant Volcano", 161, Rarity.UNCOMMON, mage.cards.d.DormantVolcano.class));
- cards.add(new SetCardInfo("Dragon Mask", 144, Rarity.UNCOMMON, mage.cards.d.DragonMask.class));
- cards.add(new SetCardInfo("Dream Tides", 31, Rarity.UNCOMMON, mage.cards.d.DreamTides.class));
- cards.add(new SetCardInfo("Dwarven Vigilantes", 77, Rarity.COMMON, mage.cards.d.DwarvenVigilantes.class));
- cards.add(new SetCardInfo("Elephant Grass", 104, Rarity.UNCOMMON, mage.cards.e.ElephantGrass.class));
- cards.add(new SetCardInfo("Elkin Lair", 78, Rarity.RARE, mage.cards.e.ElkinLair.class));
- cards.add(new SetCardInfo("Elven Cache", 105, Rarity.COMMON, mage.cards.e.ElvenCache.class));
- cards.add(new SetCardInfo("Emerald Charm", 106, Rarity.COMMON, mage.cards.e.EmeraldCharm.class));
- cards.add(new SetCardInfo("Equipoise", 3, 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", 4, Rarity.RARE, mage.cards.e.EyeOfSingularity.class));
- cards.add(new SetCardInfo("Fallen Askari", 59, 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", 107, Rarity.COMMON, mage.cards.f.FeralInstinct.class));
- cards.add(new SetCardInfo("Fireblast", 79, Rarity.COMMON, mage.cards.f.Fireblast.class));
- cards.add(new SetCardInfo("Firestorm Hellkite", 130, Rarity.RARE, mage.cards.f.FirestormHellkite.class));
- cards.add(new SetCardInfo("Flooded Shoreline", 32, Rarity.RARE, mage.cards.f.FloodedShoreline.class));
- cards.add(new SetCardInfo("Foreshadow", 33, Rarity.UNCOMMON, mage.cards.f.Foreshadow.class));
- cards.add(new SetCardInfo("Freewind Falcon", 5, Rarity.COMMON, mage.cards.f.FreewindFalcon.class));
- cards.add(new SetCardInfo("Funeral Charm", 61, Rarity.COMMON, mage.cards.f.FuneralCharm.class));
- cards.add(new SetCardInfo("Giant Caterpillar", 108, Rarity.COMMON, mage.cards.g.GiantCaterpillar.class));
- cards.add(new SetCardInfo("Goblin Recruiter", 80, Rarity.UNCOMMON, mage.cards.g.GoblinRecruiter.class));
- cards.add(new SetCardInfo("Goblin Swine-Rider", 81, Rarity.COMMON, mage.cards.g.GoblinSwineRider.class));
- cards.add(new SetCardInfo("Gossamer Chains", 6, Rarity.COMMON, mage.cards.g.GossamerChains.class));
- cards.add(new SetCardInfo("Griffin Canyon", 163, Rarity.RARE, mage.cards.g.GriffinCanyon.class));
- cards.add(new SetCardInfo("Hearth Charm", 82, Rarity.COMMON, mage.cards.h.HearthCharm.class));
- cards.add(new SetCardInfo("Helm of Awakening", 145, Rarity.UNCOMMON, mage.cards.h.HelmOfAwakening.class));
- cards.add(new SetCardInfo("Honorable Passage", 7, Rarity.UNCOMMON, mage.cards.h.HonorablePassage.class));
- cards.add(new SetCardInfo("Hope Charm", 8, Rarity.COMMON, mage.cards.h.HopeCharm.class));
- cards.add(new SetCardInfo("Hulking Cyclops", 84, Rarity.UNCOMMON, mage.cards.h.HulkingCyclops.class));
- cards.add(new SetCardInfo("Impulse", 34, Rarity.COMMON, mage.cards.i.Impulse.class));
- cards.add(new SetCardInfo("Infantry Veteran", 9, Rarity.COMMON, mage.cards.i.InfantryVeteran.class));
- cards.add(new SetCardInfo("Inspiration", 35, Rarity.COMMON, mage.cards.i.Inspiration.class));
- cards.add(new SetCardInfo("Iron-Heart Chimera", 146, Rarity.UNCOMMON, mage.cards.i.IronHeartChimera.class));
- cards.add(new SetCardInfo("Jamuraan Lion", 10, Rarity.COMMON, mage.cards.j.JamuraanLion.class));
- cards.add(new SetCardInfo("Jungle Basin", 164, Rarity.UNCOMMON, mage.cards.j.JungleBasin.class));
- cards.add(new SetCardInfo("Kaervek's Spite", 63, Rarity.RARE, mage.cards.k.KaerveksSpite.class));
- cards.add(new SetCardInfo("Karoo", 165, Rarity.UNCOMMON, mage.cards.k.Karoo.class));
- cards.add(new SetCardInfo("Katabatic Winds", 109, Rarity.RARE, mage.cards.k.KatabaticWinds.class));
- cards.add(new SetCardInfo("Keeper of Kookus", 85, Rarity.COMMON, mage.cards.k.KeeperOfKookus.class));
- cards.add(new SetCardInfo("King Cheetah", 110, Rarity.COMMON, mage.cards.k.KingCheetah.class));
- cards.add(new SetCardInfo("Knight of the Mists", 36, Rarity.COMMON, mage.cards.k.KnightOfTheMists.class));
- cards.add(new SetCardInfo("Knight of Valor", 11, Rarity.COMMON, mage.cards.k.KnightOfValor.class));
- cards.add(new SetCardInfo("Kookus", 86, Rarity.RARE, mage.cards.k.Kookus.class));
- cards.add(new SetCardInfo("Lead-Belly Chimera", 148, Rarity.UNCOMMON, mage.cards.l.LeadBellyChimera.class));
- cards.add(new SetCardInfo("Lichenthrope", 112, Rarity.RARE, mage.cards.l.Lichenthrope.class));
- cards.add(new SetCardInfo("Lightning Cloud", 87, Rarity.RARE, mage.cards.l.LightningCloud.class));
- cards.add(new SetCardInfo("Longbow Archer", 12, Rarity.UNCOMMON, mage.cards.l.LongbowArcher.class));
- cards.add(new SetCardInfo("Magma Mine", 149, Rarity.UNCOMMON, mage.cards.m.MagmaMine.class));
- cards.add(new SetCardInfo("Man-o'-War", 37, Rarity.COMMON, mage.cards.m.ManOWar.class));
- cards.add(new SetCardInfo("Miraculous Recovery", 13, Rarity.UNCOMMON, mage.cards.m.MiraculousRecovery.class));
- cards.add(new SetCardInfo("Mortal Wound", 113, Rarity.COMMON, mage.cards.m.MortalWound.class));
- cards.add(new SetCardInfo("Mundungu", 132, Rarity.UNCOMMON, mage.cards.m.Mundungu.class));
- cards.add(new SetCardInfo("Mystic Veil", 38, Rarity.COMMON, mage.cards.m.MysticVeil.class));
- cards.add(new SetCardInfo("Natural Order", 114, Rarity.RARE, mage.cards.n.NaturalOrder.class));
- cards.add(new SetCardInfo("Necromancy", 64, Rarity.UNCOMMON, mage.cards.n.Necromancy.class));
- cards.add(new SetCardInfo("Necrosavant", 65, Rarity.RARE, mage.cards.n.Necrosavant.class));
- cards.add(new SetCardInfo("Nekrataal", 66, Rarity.UNCOMMON, mage.cards.n.Nekrataal.class));
- cards.add(new SetCardInfo("Ovinomancer", 39, Rarity.UNCOMMON, mage.cards.o.Ovinomancer.class));
- cards.add(new SetCardInfo("Panther Warriors", 115, Rarity.COMMON, mage.cards.p.PantherWarriors.class));
- cards.add(new SetCardInfo("Parapet", 14, Rarity.COMMON, mage.cards.p.Parapet.class));
- cards.add(new SetCardInfo("Phyrexian Marauder", 151, Rarity.RARE, mage.cards.p.PhyrexianMarauder.class));
- cards.add(new SetCardInfo("Phyrexian Walker", 152, Rarity.COMMON, mage.cards.p.PhyrexianWalker.class));
- cards.add(new SetCardInfo("Prosperity", 40, Rarity.UNCOMMON, mage.cards.p.Prosperity.class));
- cards.add(new SetCardInfo("Python", 68, Rarity.COMMON, mage.cards.p.Python.class));
- cards.add(new SetCardInfo("Quicksand", 166, Rarity.UNCOMMON, mage.cards.q.Quicksand.class));
- cards.add(new SetCardInfo("Quirion Ranger", 117, Rarity.COMMON, mage.cards.q.QuirionRanger.class));
- cards.add(new SetCardInfo("Raging Gorilla", 90, Rarity.COMMON, mage.cards.r.RagingGorilla.class));
- cards.add(new SetCardInfo("Rainbow Efreet", 41, Rarity.RARE, mage.cards.r.RainbowEfreet.class));
- cards.add(new SetCardInfo("Relentless Assault", 91, Rarity.RARE, mage.cards.r.RelentlessAssault.class));
- cards.add(new SetCardInfo("Relic Ward", 16, Rarity.UNCOMMON, mage.cards.r.RelicWard.class));
- cards.add(new SetCardInfo("Remedy", 17, Rarity.COMMON, mage.cards.r.Remedy.class));
- cards.add(new SetCardInfo("Resistance Fighter", 18, Rarity.COMMON, mage.cards.r.ResistanceFighter.class));
- cards.add(new SetCardInfo("Retribution of the Meek", 19, Rarity.RARE, mage.cards.r.RetributionOfTheMeek.class));
- cards.add(new SetCardInfo("Righteous Aura", 20, Rarity.COMMON, mage.cards.r.RighteousAura.class));
- cards.add(new SetCardInfo("Righteous War", 134, Rarity.RARE, mage.cards.r.RighteousWar.class));
- cards.add(new SetCardInfo("River Boa", 118, Rarity.COMMON, mage.cards.r.RiverBoa.class));
- cards.add(new SetCardInfo("Rock Slide", 92, Rarity.COMMON, mage.cards.r.RockSlide.class));
- cards.add(new SetCardInfo("Rowen", 119, Rarity.RARE, mage.cards.r.Rowen.class));
- cards.add(new SetCardInfo("Sands of Time", 153, Rarity.RARE, mage.cards.s.SandsOfTime.class));
- cards.add(new SetCardInfo("Scalebane's Elite", 135, Rarity.UNCOMMON, mage.cards.s.ScalebanesElite.class));
- cards.add(new SetCardInfo("Shrieking Drake", 43, Rarity.COMMON, mage.cards.s.ShriekingDrake.class));
- cards.add(new SetCardInfo("Simoon", 136, Rarity.UNCOMMON, mage.cards.s.Simoon.class));
- cards.add(new SetCardInfo("Sisay's Ring", 154, Rarity.COMMON, mage.cards.s.SisaysRing.class));
- cards.add(new SetCardInfo("Snake Basket", 155, Rarity.RARE, mage.cards.s.SnakeBasket.class));
- cards.add(new SetCardInfo("Solfatara", 93, Rarity.COMMON, mage.cards.s.Solfatara.class));
- cards.add(new SetCardInfo("Song of Blood", 94, Rarity.COMMON, mage.cards.s.SongOfBlood.class));
- cards.add(new SetCardInfo("Spider Climb", 120, Rarity.COMMON, mage.cards.s.SpiderClimb.class));
- cards.add(new SetCardInfo("Spitting Drake", 95, Rarity.UNCOMMON, mage.cards.s.SpittingDrake.class));
- cards.add(new SetCardInfo("Squandered Resources", 137, Rarity.RARE, mage.cards.s.SquanderedResources.class));
- cards.add(new SetCardInfo("Stampeding Wildebeests", 121, Rarity.UNCOMMON, mage.cards.s.StampedingWildebeests.class));
- cards.add(new SetCardInfo("Suleiman's Legacy", 138, Rarity.RARE, mage.cards.s.SuleimansLegacy.class));
- cards.add(new SetCardInfo("Summer Bloom", 122, Rarity.UNCOMMON, mage.cards.s.SummerBloom.class));
- cards.add(new SetCardInfo("Sun Clasp", 21, Rarity.COMMON, mage.cards.s.SunClasp.class));
- cards.add(new SetCardInfo("Suq'Ata Assassin", 69, Rarity.UNCOMMON, mage.cards.s.SuqAtaAssassin.class));
- cards.add(new SetCardInfo("Suq'Ata Lancer", 96, Rarity.COMMON, mage.cards.s.SuqAtaLancer.class));
- cards.add(new SetCardInfo("Talruum Champion", 97, Rarity.COMMON, mage.cards.t.TalruumChampion.class));
- cards.add(new SetCardInfo("Talruum Piper", 98, Rarity.UNCOMMON, mage.cards.t.TalruumPiper.class));
- cards.add(new SetCardInfo("Tar Pit Warrior", 70, Rarity.COMMON, mage.cards.t.TarPitWarrior.class));
- cards.add(new SetCardInfo("Teferi's Honor Guard", 22, Rarity.UNCOMMON, mage.cards.t.TeferisHonorGuard.class));
- cards.add(new SetCardInfo("Teferi's Puzzle Box", 156, Rarity.RARE, mage.cards.t.TeferisPuzzleBox.class));
- cards.add(new SetCardInfo("Teferi's Realm", 44, Rarity.RARE, mage.cards.t.TeferisRealm.class));
- cards.add(new SetCardInfo("Tempest Drake", 139, Rarity.UNCOMMON, mage.cards.t.TempestDrake.class));
- cards.add(new SetCardInfo("Three Wishes", 45, Rarity.RARE, mage.cards.t.ThreeWishes.class));
- cards.add(new SetCardInfo("Tin-Wing Chimera", 157, Rarity.UNCOMMON, mage.cards.t.TinWingChimera.class));
- cards.add(new SetCardInfo("Tithe", 23, Rarity.RARE, mage.cards.t.Tithe.class));
- cards.add(new SetCardInfo("Tremor", 99, Rarity.COMMON, mage.cards.t.Tremor.class));
- cards.add(new SetCardInfo("Triangle of War", 158, Rarity.RARE, mage.cards.t.TriangleOfWar.class));
- cards.add(new SetCardInfo("Uktabi Orangutan", 123, Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class));
- cards.add(new SetCardInfo("Undiscovered Paradise", 167, Rarity.RARE, mage.cards.u.UndiscoveredParadise.class));
- cards.add(new SetCardInfo("Undo", 47, Rarity.COMMON, mage.cards.u.Undo.class));
- cards.add(new SetCardInfo("Urborg Mindsucker", 71, Rarity.COMMON, mage.cards.u.UrborgMindsucker.class));
- cards.add(new SetCardInfo("Vampiric Tutor", 72, Rarity.RARE, mage.cards.v.VampiricTutor.class));
- cards.add(new SetCardInfo("Vampirism", 73, Rarity.UNCOMMON, mage.cards.v.Vampirism.class));
- cards.add(new SetCardInfo("Vanishing", 48, Rarity.COMMON, mage.cards.v.Vanishing.class));
- cards.add(new SetCardInfo("Viashino Sandstalker", 100, Rarity.UNCOMMON, mage.cards.v.ViashinoSandstalker.class));
- cards.add(new SetCardInfo("Viashivan Dragon", 140, Rarity.RARE, mage.cards.v.ViashivanDragon.class));
- cards.add(new SetCardInfo("Vision Charm", 49, Rarity.COMMON, mage.cards.v.VisionCharm.class));
- cards.add(new SetCardInfo("Wake of Vultures", 74, Rarity.COMMON, mage.cards.w.WakeOfVultures.class));
- cards.add(new SetCardInfo("Wand of Denial", 159, Rarity.RARE, mage.cards.w.WandOfDenial.class));
- cards.add(new SetCardInfo("Warrior's Honor", 24, Rarity.COMMON, mage.cards.w.WarriorsHonor.class));
- cards.add(new SetCardInfo("Warthog", 124, Rarity.COMMON, mage.cards.w.Warthog.class));
- cards.add(new SetCardInfo("Waterspout Djinn", 50, Rarity.UNCOMMON, mage.cards.w.WaterspoutDjinn.class));
- cards.add(new SetCardInfo("Wicked Reward", 75, Rarity.COMMON, mage.cards.w.WickedReward.class));
- cards.add(new SetCardInfo("Wind Shear", 125, Rarity.UNCOMMON, mage.cards.w.WindShear.class));
- cards.add(new SetCardInfo("Zhalfirin Crusader", 25, Rarity.RARE, mage.cards.z.ZhalfirinCrusader.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.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Visions extends ExpansionSet {
+
+ private static final Visions instance = new Visions();
+
+ public static Visions getInstance() {
+ return instance;
+ }
+
+ private Visions() {
+ super("Visions", "VIS", ExpansionSet.buildDate(1997, 1, 11), SetType.EXPANSION);
+ this.blockName = "Mirage";
+ this.parentSet = Mirage.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("Aku Djinn", 51, Rarity.RARE, mage.cards.a.AkuDjinn.class));
+ cards.add(new SetCardInfo("Anvil of Bogardan", 141, Rarity.RARE, mage.cards.a.AnvilOfBogardan.class));
+ cards.add(new SetCardInfo("Archangel", 1, Rarity.RARE, mage.cards.a.Archangel.class));
+ cards.add(new SetCardInfo("Army Ants", 126, Rarity.UNCOMMON, mage.cards.a.ArmyAnts.class));
+ cards.add(new SetCardInfo("Betrayal", 26, Rarity.COMMON, mage.cards.b.Betrayal.class));
+ cards.add(new SetCardInfo("Blanket of Night", 52, Rarity.UNCOMMON, mage.cards.b.BlanketOfNight.class));
+ cards.add(new SetCardInfo("Brass-Talon Chimera", 142, Rarity.UNCOMMON, mage.cards.b.BrassTalonChimera.class));
+ cards.add(new SetCardInfo("Breathstealer's Crypt", 127, Rarity.RARE, mage.cards.b.BreathstealersCrypt.class));
+ cards.add(new SetCardInfo("Breezekeeper", 27, Rarity.COMMON, mage.cards.b.Breezekeeper.class));
+ cards.add(new SetCardInfo("Brood of Cockroaches", 53, Rarity.UNCOMMON, mage.cards.b.BroodOfCockroaches.class));
+ cards.add(new SetCardInfo("Bull Elephant", 101, Rarity.COMMON, mage.cards.b.BullElephant.class));
+ cards.add(new SetCardInfo("Chronatog", 28, Rarity.RARE, mage.cards.c.Chronatog.class));
+ cards.add(new SetCardInfo("City of Solitude", 102, Rarity.RARE, mage.cards.c.CityOfSolitude.class));
+ cards.add(new SetCardInfo("Cloud Elemental", 29, Rarity.COMMON, mage.cards.c.CloudElemental.class));
+ cards.add(new SetCardInfo("Coercion", 54, Rarity.COMMON, mage.cards.c.Coercion.class));
+ cards.add(new SetCardInfo("Coral Atoll", 160, Rarity.UNCOMMON, mage.cards.c.CoralAtoll.class));
+ cards.add(new SetCardInfo("Corrosion", 128, Rarity.RARE, mage.cards.c.Corrosion.class));
+ cards.add(new SetCardInfo("Creeping Mold", 103, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class));
+ cards.add(new SetCardInfo("Crypt Rats", 55, Rarity.COMMON, mage.cards.c.CryptRats.class));
+ cards.add(new SetCardInfo("Daraja Griffin", 2, Rarity.UNCOMMON, mage.cards.d.DarajaGriffin.class));
+ cards.add(new SetCardInfo("Dark Privilege", 56, Rarity.COMMON, mage.cards.d.DarkPrivilege.class));
+ cards.add(new SetCardInfo("Death Watch", 57, Rarity.COMMON, mage.cards.d.DeathWatch.class));
+ cards.add(new SetCardInfo("Desertion", 30, Rarity.RARE, mage.cards.d.Desertion.class));
+ cards.add(new SetCardInfo("Desolation", 58, Rarity.UNCOMMON, mage.cards.d.Desolation.class));
+ cards.add(new SetCardInfo("Diamond Kaleidoscope", 143, Rarity.RARE, mage.cards.d.DiamondKaleidoscope.class));
+ cards.add(new SetCardInfo("Dormant Volcano", 161, Rarity.UNCOMMON, mage.cards.d.DormantVolcano.class));
+ cards.add(new SetCardInfo("Dragon Mask", 144, Rarity.UNCOMMON, mage.cards.d.DragonMask.class));
+ cards.add(new SetCardInfo("Dream Tides", 31, Rarity.UNCOMMON, mage.cards.d.DreamTides.class));
+ cards.add(new SetCardInfo("Dwarven Vigilantes", 77, Rarity.COMMON, mage.cards.d.DwarvenVigilantes.class));
+ cards.add(new SetCardInfo("Elephant Grass", 104, Rarity.UNCOMMON, mage.cards.e.ElephantGrass.class));
+ cards.add(new SetCardInfo("Elkin Lair", 78, Rarity.RARE, mage.cards.e.ElkinLair.class));
+ cards.add(new SetCardInfo("Elven Cache", 105, Rarity.COMMON, mage.cards.e.ElvenCache.class));
+ cards.add(new SetCardInfo("Emerald Charm", 106, Rarity.COMMON, mage.cards.e.EmeraldCharm.class));
+ cards.add(new SetCardInfo("Equipoise", 3, 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", 4, Rarity.RARE, mage.cards.e.EyeOfSingularity.class));
+ cards.add(new SetCardInfo("Fallen Askari", 59, 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", 107, Rarity.COMMON, mage.cards.f.FeralInstinct.class));
+ cards.add(new SetCardInfo("Fireblast", 79, Rarity.COMMON, mage.cards.f.Fireblast.class));
+ cards.add(new SetCardInfo("Firestorm Hellkite", 130, Rarity.RARE, mage.cards.f.FirestormHellkite.class));
+ cards.add(new SetCardInfo("Flooded Shoreline", 32, Rarity.RARE, mage.cards.f.FloodedShoreline.class));
+ cards.add(new SetCardInfo("Foreshadow", 33, Rarity.UNCOMMON, mage.cards.f.Foreshadow.class));
+ cards.add(new SetCardInfo("Freewind Falcon", 5, Rarity.COMMON, mage.cards.f.FreewindFalcon.class));
+ cards.add(new SetCardInfo("Funeral Charm", 61, Rarity.COMMON, mage.cards.f.FuneralCharm.class));
+ cards.add(new SetCardInfo("Giant Caterpillar", 108, Rarity.COMMON, mage.cards.g.GiantCaterpillar.class));
+ cards.add(new SetCardInfo("Goblin Recruiter", 80, Rarity.UNCOMMON, mage.cards.g.GoblinRecruiter.class));
+ cards.add(new SetCardInfo("Goblin Swine-Rider", 81, Rarity.COMMON, mage.cards.g.GoblinSwineRider.class));
+ cards.add(new SetCardInfo("Gossamer Chains", 6, Rarity.COMMON, mage.cards.g.GossamerChains.class));
+ cards.add(new SetCardInfo("Griffin Canyon", 163, Rarity.RARE, mage.cards.g.GriffinCanyon.class));
+ cards.add(new SetCardInfo("Hearth Charm", 82, Rarity.COMMON, mage.cards.h.HearthCharm.class));
+ cards.add(new SetCardInfo("Helm of Awakening", 145, Rarity.UNCOMMON, mage.cards.h.HelmOfAwakening.class));
+ cards.add(new SetCardInfo("Honorable Passage", 7, Rarity.UNCOMMON, mage.cards.h.HonorablePassage.class));
+ cards.add(new SetCardInfo("Hope Charm", 8, Rarity.COMMON, mage.cards.h.HopeCharm.class));
+ cards.add(new SetCardInfo("Hulking Cyclops", 84, Rarity.UNCOMMON, mage.cards.h.HulkingCyclops.class));
+ cards.add(new SetCardInfo("Impulse", 34, Rarity.COMMON, mage.cards.i.Impulse.class));
+ cards.add(new SetCardInfo("Infantry Veteran", 9, Rarity.COMMON, mage.cards.i.InfantryVeteran.class));
+ cards.add(new SetCardInfo("Inspiration", 35, Rarity.COMMON, mage.cards.i.Inspiration.class));
+ cards.add(new SetCardInfo("Iron-Heart Chimera", 146, Rarity.UNCOMMON, mage.cards.i.IronHeartChimera.class));
+ cards.add(new SetCardInfo("Jamuraan Lion", 10, Rarity.COMMON, mage.cards.j.JamuraanLion.class));
+ cards.add(new SetCardInfo("Jungle Basin", 164, Rarity.UNCOMMON, mage.cards.j.JungleBasin.class));
+ cards.add(new SetCardInfo("Kaervek's Spite", 63, Rarity.RARE, mage.cards.k.KaerveksSpite.class));
+ cards.add(new SetCardInfo("Karoo", 165, Rarity.UNCOMMON, mage.cards.k.Karoo.class));
+ cards.add(new SetCardInfo("Katabatic Winds", 109, Rarity.RARE, mage.cards.k.KatabaticWinds.class));
+ cards.add(new SetCardInfo("Keeper of Kookus", 85, Rarity.COMMON, mage.cards.k.KeeperOfKookus.class));
+ cards.add(new SetCardInfo("King Cheetah", 110, Rarity.COMMON, mage.cards.k.KingCheetah.class));
+ cards.add(new SetCardInfo("Knight of the Mists", 36, Rarity.COMMON, mage.cards.k.KnightOfTheMists.class));
+ cards.add(new SetCardInfo("Knight of Valor", 11, Rarity.COMMON, mage.cards.k.KnightOfValor.class));
+ cards.add(new SetCardInfo("Kookus", 86, Rarity.RARE, mage.cards.k.Kookus.class));
+ cards.add(new SetCardInfo("Lead-Belly Chimera", 148, Rarity.UNCOMMON, mage.cards.l.LeadBellyChimera.class));
+ cards.add(new SetCardInfo("Lichenthrope", 112, Rarity.RARE, mage.cards.l.Lichenthrope.class));
+ cards.add(new SetCardInfo("Lightning Cloud", 87, Rarity.RARE, mage.cards.l.LightningCloud.class));
+ cards.add(new SetCardInfo("Longbow Archer", 12, Rarity.UNCOMMON, mage.cards.l.LongbowArcher.class));
+ cards.add(new SetCardInfo("Magma Mine", 149, Rarity.UNCOMMON, mage.cards.m.MagmaMine.class));
+ cards.add(new SetCardInfo("Man-o'-War", 37, Rarity.COMMON, mage.cards.m.ManOWar.class));
+ cards.add(new SetCardInfo("Miraculous Recovery", 13, Rarity.UNCOMMON, mage.cards.m.MiraculousRecovery.class));
+ cards.add(new SetCardInfo("Mortal Wound", 113, Rarity.COMMON, mage.cards.m.MortalWound.class));
+ cards.add(new SetCardInfo("Mundungu", 132, Rarity.UNCOMMON, mage.cards.m.Mundungu.class));
+ cards.add(new SetCardInfo("Mystic Veil", 38, Rarity.COMMON, mage.cards.m.MysticVeil.class));
+ cards.add(new SetCardInfo("Natural Order", 114, Rarity.RARE, mage.cards.n.NaturalOrder.class));
+ cards.add(new SetCardInfo("Necromancy", 64, Rarity.UNCOMMON, mage.cards.n.Necromancy.class));
+ cards.add(new SetCardInfo("Necrosavant", 65, Rarity.RARE, mage.cards.n.Necrosavant.class));
+ cards.add(new SetCardInfo("Nekrataal", 66, Rarity.UNCOMMON, mage.cards.n.Nekrataal.class));
+ cards.add(new SetCardInfo("Ovinomancer", 39, Rarity.UNCOMMON, mage.cards.o.Ovinomancer.class));
+ cards.add(new SetCardInfo("Panther Warriors", 115, Rarity.COMMON, mage.cards.p.PantherWarriors.class));
+ cards.add(new SetCardInfo("Parapet", 14, Rarity.COMMON, mage.cards.p.Parapet.class));
+ cards.add(new SetCardInfo("Phyrexian Marauder", 151, Rarity.RARE, mage.cards.p.PhyrexianMarauder.class));
+ cards.add(new SetCardInfo("Phyrexian Walker", 152, Rarity.COMMON, mage.cards.p.PhyrexianWalker.class));
+ cards.add(new SetCardInfo("Prosperity", 40, Rarity.UNCOMMON, mage.cards.p.Prosperity.class));
+ cards.add(new SetCardInfo("Python", 68, Rarity.COMMON, mage.cards.p.Python.class));
+ cards.add(new SetCardInfo("Quicksand", 166, Rarity.UNCOMMON, mage.cards.q.Quicksand.class));
+ cards.add(new SetCardInfo("Quirion Ranger", 117, Rarity.COMMON, mage.cards.q.QuirionRanger.class));
+ cards.add(new SetCardInfo("Raging Gorilla", 90, Rarity.COMMON, mage.cards.r.RagingGorilla.class));
+ cards.add(new SetCardInfo("Rainbow Efreet", 41, Rarity.RARE, mage.cards.r.RainbowEfreet.class));
+ cards.add(new SetCardInfo("Relentless Assault", 91, Rarity.RARE, mage.cards.r.RelentlessAssault.class));
+ cards.add(new SetCardInfo("Relic Ward", 16, Rarity.UNCOMMON, mage.cards.r.RelicWard.class));
+ cards.add(new SetCardInfo("Remedy", 17, Rarity.COMMON, mage.cards.r.Remedy.class));
+ cards.add(new SetCardInfo("Resistance Fighter", 18, Rarity.COMMON, mage.cards.r.ResistanceFighter.class));
+ cards.add(new SetCardInfo("Retribution of the Meek", 19, Rarity.RARE, mage.cards.r.RetributionOfTheMeek.class));
+ cards.add(new SetCardInfo("Righteous Aura", 20, Rarity.COMMON, mage.cards.r.RighteousAura.class));
+ cards.add(new SetCardInfo("Righteous War", 134, Rarity.RARE, mage.cards.r.RighteousWar.class));
+ cards.add(new SetCardInfo("River Boa", 118, Rarity.COMMON, mage.cards.r.RiverBoa.class));
+ cards.add(new SetCardInfo("Rock Slide", 92, Rarity.COMMON, mage.cards.r.RockSlide.class));
+ cards.add(new SetCardInfo("Rowen", 119, Rarity.RARE, mage.cards.r.Rowen.class));
+ cards.add(new SetCardInfo("Sands of Time", 153, Rarity.RARE, mage.cards.s.SandsOfTime.class));
+ cards.add(new SetCardInfo("Scalebane's Elite", 135, Rarity.UNCOMMON, mage.cards.s.ScalebanesElite.class));
+ cards.add(new SetCardInfo("Shrieking Drake", 43, Rarity.COMMON, mage.cards.s.ShriekingDrake.class));
+ cards.add(new SetCardInfo("Simoon", 136, Rarity.UNCOMMON, mage.cards.s.Simoon.class));
+ cards.add(new SetCardInfo("Sisay's Ring", 154, Rarity.COMMON, mage.cards.s.SisaysRing.class));
+ cards.add(new SetCardInfo("Snake Basket", 155, Rarity.RARE, mage.cards.s.SnakeBasket.class));
+ cards.add(new SetCardInfo("Solfatara", 93, Rarity.COMMON, mage.cards.s.Solfatara.class));
+ cards.add(new SetCardInfo("Song of Blood", 94, Rarity.COMMON, mage.cards.s.SongOfBlood.class));
+ cards.add(new SetCardInfo("Spider Climb", 120, Rarity.COMMON, mage.cards.s.SpiderClimb.class));
+ cards.add(new SetCardInfo("Spitting Drake", 95, Rarity.UNCOMMON, mage.cards.s.SpittingDrake.class));
+ cards.add(new SetCardInfo("Squandered Resources", 137, Rarity.RARE, mage.cards.s.SquanderedResources.class));
+ cards.add(new SetCardInfo("Stampeding Wildebeests", 121, Rarity.UNCOMMON, mage.cards.s.StampedingWildebeests.class));
+ cards.add(new SetCardInfo("Suleiman's Legacy", 138, Rarity.RARE, mage.cards.s.SuleimansLegacy.class));
+ cards.add(new SetCardInfo("Summer Bloom", 122, Rarity.UNCOMMON, mage.cards.s.SummerBloom.class));
+ cards.add(new SetCardInfo("Sun Clasp", 21, Rarity.COMMON, mage.cards.s.SunClasp.class));
+ cards.add(new SetCardInfo("Suq'Ata Assassin", 69, Rarity.UNCOMMON, mage.cards.s.SuqAtaAssassin.class));
+ cards.add(new SetCardInfo("Suq'Ata Lancer", 96, Rarity.COMMON, mage.cards.s.SuqAtaLancer.class));
+ cards.add(new SetCardInfo("Talruum Champion", 97, Rarity.COMMON, mage.cards.t.TalruumChampion.class));
+ cards.add(new SetCardInfo("Talruum Piper", 98, Rarity.UNCOMMON, mage.cards.t.TalruumPiper.class));
+ cards.add(new SetCardInfo("Tar Pit Warrior", 70, Rarity.COMMON, mage.cards.t.TarPitWarrior.class));
+ cards.add(new SetCardInfo("Teferi's Honor Guard", 22, Rarity.UNCOMMON, mage.cards.t.TeferisHonorGuard.class));
+ cards.add(new SetCardInfo("Teferi's Puzzle Box", 156, Rarity.RARE, mage.cards.t.TeferisPuzzleBox.class));
+ cards.add(new SetCardInfo("Teferi's Realm", 44, Rarity.RARE, mage.cards.t.TeferisRealm.class));
+ cards.add(new SetCardInfo("Tempest Drake", 139, Rarity.UNCOMMON, mage.cards.t.TempestDrake.class));
+ cards.add(new SetCardInfo("Three Wishes", 45, Rarity.RARE, mage.cards.t.ThreeWishes.class));
+ cards.add(new SetCardInfo("Tin-Wing Chimera", 157, Rarity.UNCOMMON, mage.cards.t.TinWingChimera.class));
+ cards.add(new SetCardInfo("Tithe", 23, Rarity.RARE, mage.cards.t.Tithe.class));
+ cards.add(new SetCardInfo("Tremor", 99, Rarity.COMMON, mage.cards.t.Tremor.class));
+ cards.add(new SetCardInfo("Triangle of War", 158, Rarity.RARE, mage.cards.t.TriangleOfWar.class));
+ cards.add(new SetCardInfo("Uktabi Orangutan", 123, Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class));
+ cards.add(new SetCardInfo("Undiscovered Paradise", 167, Rarity.RARE, mage.cards.u.UndiscoveredParadise.class));
+ cards.add(new SetCardInfo("Undo", 47, Rarity.COMMON, mage.cards.u.Undo.class));
+ cards.add(new SetCardInfo("Urborg Mindsucker", 71, Rarity.COMMON, mage.cards.u.UrborgMindsucker.class));
+ cards.add(new SetCardInfo("Vampiric Tutor", 72, Rarity.RARE, mage.cards.v.VampiricTutor.class));
+ cards.add(new SetCardInfo("Vampirism", 73, Rarity.UNCOMMON, mage.cards.v.Vampirism.class));
+ cards.add(new SetCardInfo("Vanishing", 48, Rarity.COMMON, mage.cards.v.Vanishing.class));
+ cards.add(new SetCardInfo("Viashino Sandstalker", 100, Rarity.UNCOMMON, mage.cards.v.ViashinoSandstalker.class));
+ cards.add(new SetCardInfo("Viashivan Dragon", 140, Rarity.RARE, mage.cards.v.ViashivanDragon.class));
+ cards.add(new SetCardInfo("Vision Charm", 49, Rarity.COMMON, mage.cards.v.VisionCharm.class));
+ cards.add(new SetCardInfo("Wake of Vultures", 74, Rarity.COMMON, mage.cards.w.WakeOfVultures.class));
+ cards.add(new SetCardInfo("Wand of Denial", 159, Rarity.RARE, mage.cards.w.WandOfDenial.class));
+ cards.add(new SetCardInfo("Warrior's Honor", 24, Rarity.COMMON, mage.cards.w.WarriorsHonor.class));
+ cards.add(new SetCardInfo("Warthog", 124, Rarity.COMMON, mage.cards.w.Warthog.class));
+ cards.add(new SetCardInfo("Waterspout Djinn", 50, Rarity.UNCOMMON, mage.cards.w.WaterspoutDjinn.class));
+ cards.add(new SetCardInfo("Wicked Reward", 75, Rarity.COMMON, mage.cards.w.WickedReward.class));
+ cards.add(new SetCardInfo("Wind Shear", 125, Rarity.UNCOMMON, mage.cards.w.WindShear.class));
+ cards.add(new SetCardInfo("Zhalfirin Crusader", 25, Rarity.RARE, mage.cards.z.ZhalfirinCrusader.class));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/WPNGateway.java b/Mage.Sets/src/mage/sets/WPNGateway.java
index 1b52b21315f..ea7ec76c723 100644
--- a/Mage.Sets/src/mage/sets/WPNGateway.java
+++ b/Mage.Sets/src/mage/sets/WPNGateway.java
@@ -14,7 +14,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class WPNGateway extends ExpansionSet {
+public final class WPNGateway extends ExpansionSet {
private static final WPNGateway instance = new WPNGateway();
diff --git a/Mage.Sets/src/mage/sets/Weatherlight.java b/Mage.Sets/src/mage/sets/Weatherlight.java
index 3aa398fdc05..681efdea055 100644
--- a/Mage.Sets/src/mage/sets/Weatherlight.java
+++ b/Mage.Sets/src/mage/sets/Weatherlight.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author noxx
*/
-public class Weatherlight extends ExpansionSet {
+public final class Weatherlight extends ExpansionSet {
private static final Weatherlight instance = new Weatherlight();
diff --git a/Mage.Sets/src/mage/sets/WelcomeDeck2016.java b/Mage.Sets/src/mage/sets/WelcomeDeck2016.java
index f79a2ab1411..75baf992137 100644
--- a/Mage.Sets/src/mage/sets/WelcomeDeck2016.java
+++ b/Mage.Sets/src/mage/sets/WelcomeDeck2016.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author escplan9
*/
-public class WelcomeDeck2016 extends ExpansionSet {
+public final class WelcomeDeck2016 extends ExpansionSet {
private static final WelcomeDeck2016 instance = new WelcomeDeck2016();
diff --git a/Mage.Sets/src/mage/sets/WelcomeDeck2017.java b/Mage.Sets/src/mage/sets/WelcomeDeck2017.java
index 4d740ea5e90..8f1726594e9 100644
--- a/Mage.Sets/src/mage/sets/WelcomeDeck2017.java
+++ b/Mage.Sets/src/mage/sets/WelcomeDeck2017.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author escplan9
*/
-public class WelcomeDeck2017 extends ExpansionSet {
+public final class WelcomeDeck2017 extends ExpansionSet {
private static final WelcomeDeck2017 instance = new WelcomeDeck2017();
diff --git a/Mage.Sets/src/mage/sets/WorldMagicCupQualifier.java b/Mage.Sets/src/mage/sets/WorldMagicCupQualifier.java
index 4d4cb373ba7..cafb95149b8 100644
--- a/Mage.Sets/src/mage/sets/WorldMagicCupQualifier.java
+++ b/Mage.Sets/src/mage/sets/WorldMagicCupQualifier.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class WorldMagicCupQualifier extends ExpansionSet {
+public final class WorldMagicCupQualifier extends ExpansionSet {
private static final WorldMagicCupQualifier instance = new WorldMagicCupQualifier();
diff --git a/Mage.Sets/src/mage/sets/Worldwake.java b/Mage.Sets/src/mage/sets/Worldwake.java
index b426f3d7016..943ba38a0d0 100644
--- a/Mage.Sets/src/mage/sets/Worldwake.java
+++ b/Mage.Sets/src/mage/sets/Worldwake.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Worldwake extends ExpansionSet {
+public final class Worldwake extends ExpansionSet {
private static final Worldwake instance = new Worldwake();
diff --git a/Mage.Sets/src/mage/sets/Zendikar.java b/Mage.Sets/src/mage/sets/Zendikar.java
index 8bd0ad46e52..3ebef6ad721 100644
--- a/Mage.Sets/src/mage/sets/Zendikar.java
+++ b/Mage.Sets/src/mage/sets/Zendikar.java
@@ -38,7 +38,7 @@ import mage.constants.SetType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class Zendikar extends ExpansionSet {
+public final class Zendikar extends ExpansionSet {
private static final Zendikar instance = new Zendikar();
diff --git a/Mage.Sets/src/mage/sets/ZendikarExpeditions.java b/Mage.Sets/src/mage/sets/ZendikarExpeditions.java
index b004407fbaa..bf1a128acb3 100644
--- a/Mage.Sets/src/mage/sets/ZendikarExpeditions.java
+++ b/Mage.Sets/src/mage/sets/ZendikarExpeditions.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class ZendikarExpeditions extends ExpansionSet {
+public final class ZendikarExpeditions extends ExpansionSet {
private static final ZendikarExpeditions instance = new ZendikarExpeditions();
diff --git a/Mage.Sets/src/mage/sets/ZendikarVsEldrazi.java b/Mage.Sets/src/mage/sets/ZendikarVsEldrazi.java
index c50645e3dd7..2d64ee96e75 100644
--- a/Mage.Sets/src/mage/sets/ZendikarVsEldrazi.java
+++ b/Mage.Sets/src/mage/sets/ZendikarVsEldrazi.java
@@ -35,7 +35,7 @@ import mage.constants.SetType;
*
* @author fireshoes
*/
-public class ZendikarVsEldrazi extends ExpansionSet {
+public final class ZendikarVsEldrazi extends ExpansionSet {
private static final ZendikarVsEldrazi instance = new ZendikarVsEldrazi();
diff --git a/Mage.Stats/pom.xml b/Mage.Stats/pom.xml
index 818eb3bdd39..2d0403d9c20 100644
--- a/Mage.Stats/pom.xml
+++ b/Mage.Stats/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-root
- 1.4.29
+ 1.4.30
org.mage
diff --git a/Mage.Tests/pom.xml b/Mage.Tests/pom.xml
index e681102f7ec..5ee48c61bbf 100644
--- a/Mage.Tests/pom.xml
+++ b/Mage.Tests/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-root
- 1.4.29
+ 1.4.30
mage-tests
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/ConstellationTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/ConstellationTest.java
index 22755f1ac7d..a7c55a1cae0 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/ConstellationTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/ConstellationTest.java
@@ -6,7 +6,6 @@ import mage.constants.CardType;
import mage.constants.PhaseStep;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.util.functions.Function;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
@@ -16,11 +15,11 @@ import org.mage.test.serverside.base.CardTestPlayerBase;
public class ConstellationTest extends CardTestPlayerBase {
/**
- * Daxos's Torment {3}{B}
- * Constellation — Whenever Daxos’s Torment or another enchantment enters the battlefield under your control,
- * Daxos’s Torment becomes a 5/5 Demon creature with flying and haste in addition to its other types until end of turn.
+ * Daxos's Torment {3}{B} Constellation — Whenever Daxos’s Torment or
+ * another enchantment enters the battlefield under your control, Daxos’s
+ * Torment becomes a 5/5 Demon creature with flying and haste in addition to
+ * its other types until end of turn.
*/
-
private final String daxosCard = "Daxos's Torment";
private void assertDaxosBoost(boolean mustHave) {
@@ -150,7 +149,7 @@ public class ConstellationTest extends CardTestPlayerBase {
assertHandCount(playerA, daxosCard, 0);
assertPermanentCount(playerA, daxosCard, 1);
- assertHandCount(playerA, "Gravity Sphere", 0);
+ assertHandCount(playerA, "Gravity Sphere", 0); // Possible problem : this is sometimes 1
assertPermanentCount(playerA, "Gravity Sphere", 1);
assertPowerToughness(playerA, daxosCard, 5, 5);
@@ -227,5 +226,3 @@ public class ConstellationTest extends CardTestPlayerBase {
playDaxosAndVampire(true);
}
}
-
-
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/DashTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/DashTest.java
index e5f3b6f0167..24c8b98315d 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/DashTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/DashTest.java
@@ -27,6 +27,7 @@
*/
package org.mage.test.cards.abilities.keywords;
+import mage.abilities.keyword.HasteAbility;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
@@ -120,4 +121,26 @@ public class DashTest extends CardTestPlayerBase {
assertGraveyardCount(playerB, "Geist of the Moors", 1);
}
+
+ /**
+ * Test that the creature got Dash again if cast again
+ */
+ @Test
+ public void testDashedCreatureDiesInCombatAndIsLaterRecast() {
+ addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
+ addCard(Zone.HAND, playerA, "Screamreach Brawler"); // 2/3
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Screamreach Brawler");
+ setChoice(playerA, "Yes");
+ attack(1, playerA, "Screamreach Brawler");
+
+ castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Screamreach Brawler");
+ setStopAt(3, PhaseStep.BEGIN_COMBAT);
+ execute();
+
+ assertLife(playerB, 18);
+ assertPermanentCount(playerA, "Screamreach Brawler", 1);
+ assertHandCount(playerA, "Screamreach Brawler", 0);
+ assertAbility(playerA, "Screamreach Brawler", HasteAbility.getInstance(), true);
+ }
}
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/SuspendTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/SuspendTest.java
index d8836b3dba5..401cbb6dd75 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/SuspendTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/SuspendTest.java
@@ -185,4 +185,44 @@ public class SuspendTest extends CardTestPlayerBase {
assertHandCount(playerA, "Rift Bolt", 0);
}
+
+ /**
+ * Cards cast from other zones that aren't the hand should not trigger
+ * Knowledge Pool, as it states that only cards cast from the hand should be
+ * exiled afterwards.
+ *
+ * Example: cards coming off suspend shouldn't trigger Knowledge Pool.
+ *
+ */
+ @Test
+ public void testThatNotCastFromHand() {
+
+ // Rift Bolt deals 3 damage to any target.
+ // Suspend 1-{R}
+ addCard(Zone.HAND, playerA, "Rift Bolt", 1);
+ addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1);
+ addCard(Zone.LIBRARY, playerA, "Silvercoat Lion", 3);
+ // Imprint - When Knowledge Pool enters the battlefield, each player exiles the top three cards of their library
+ // Whenever a player casts a spell from their hand, that player exiles it. If the player does, he or she may cast another nonland card
+ // exiled with Knowledge Pool without paying that card's mana cost.
+ addCard(Zone.HAND, playerB, "Knowledge Pool", 1);
+ addCard(Zone.BATTLEFIELD, playerB, "Plains", 6);
+ addCard(Zone.LIBRARY, playerB, "Silvercoat Lion", 3);
+
+ activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Suspend");
+
+ castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Knowledge Pool");
+
+ addTarget(playerA, playerB);
+
+ setStopAt(3, PhaseStep.BEGIN_COMBAT);
+ execute();
+
+ assertPermanentCount(playerB, "Knowledge Pool", 1);
+ assertHandCount(playerA, "Rift Bolt", 0);
+ assertGraveyardCount(playerA, "Rift Bolt", 1);
+ assertLife(playerB, 17);
+ assertPermanentCount(playerA, "Silvercoat Lion", 0);
+
+ }
}
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/copy/CleverImpersonatorTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/copy/CleverImpersonatorTest.java
index 7cb9d15d87a..cab6b2eaddd 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/copy/CleverImpersonatorTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/copy/CleverImpersonatorTest.java
@@ -191,7 +191,7 @@ public class CleverImpersonatorTest extends CardTestPlayerBase {
/*
{3}{G} Dawn's Reflection
Enchantment - Aura, Enchant Land
- Whenever enchanted land is tapped for mana, its controller adds two mana in any combination of colors to their mana pool (in addition to the mana the land produces).
+ Whenever enchanted land is tapped for mana, its controller adds two mana in any combination of colors (in addition to the mana the land produces).
*/
addCard(Zone.HAND, playerA, dReflection);
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/mana/EldraziTempleTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/mana/EldraziTempleTest.java
new file mode 100644
index 00000000000..f975c154a2c
--- /dev/null
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/mana/EldraziTempleTest.java
@@ -0,0 +1,111 @@
+/*
+ * 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.mana;
+
+import mage.constants.PhaseStep;
+import mage.constants.Zone;
+import org.junit.Test;
+import org.mage.test.serverside.base.CardTestPlayerBase;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class EldraziTempleTest extends CardTestPlayerBase {
+
+ @Test
+ public void TestWithoutDampingSphere() {
+ // {T}: Add {C}.
+ // {T}: Add {C}{C}. Spend this mana only to cast colorless Eldrazi spells or activate abilities of colorless Eldrazi.
+ addCard(Zone.BATTLEFIELD, playerA, "Eldrazi Temple", 1);
+ addCard(Zone.BATTLEFIELD, playerA, "Mountain", 3);
+ // Devoid (This card has no color.)
+ // {2}{R}, Sacrifice another colorless creature: Barrage Tyrant deals damage equal to the sacrificed creature's power to target creature or player.
+ addCard(Zone.HAND, playerA, "Barrage Tyrant", 1); // Creature {4}{R}
+
+ // If a land is tapped for two or more mana, it produces {C} instead of any other type and amount.
+ // Each spell a player casts costs {1} more to cast for each other spell that player has cast this turn.
+ // addCard(Zone.BATTLEFIELD, playerB, "Damping Sphere", 1);
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Barrage Tyrant");
+
+ setStopAt(1, PhaseStep.BEGIN_COMBAT);
+ execute();
+
+ assertPermanentCount(playerA, "Barrage Tyrant", 1);
+
+ }
+
+ /**
+ * Damping Sphere vs Eldrazi
+ *
+ * My opponent managed to produce 7 mana to cast a All Is Dust with 6 lands
+ * where one was an Eldrazi Temple. This should not be possible if my
+ * reading of Damping Sphere (If a land is tapped for two or more mana, it
+ * produces {C} instead of any other type and amount.) is correct. It should
+ * produce a single colorless mana rather than 2 colorless for the eldrazi
+ * tribal spell
+ */
+ @Test
+ public void TestWithDampingSphere() {
+ // {T}: Add {C}.
+ // {T}: Add {C}{C}. Spend this mana only to cast colorless Eldrazi spells or activate abilities of colorless Eldrazi.
+ addCard(Zone.BATTLEFIELD, playerA, "Eldrazi Temple", 1);
+ addCard(Zone.BATTLEFIELD, playerA, "Mountain", 3);
+ // Devoid (This card has no color.)
+ // {2}{R}, Sacrifice another colorless creature: Barrage Tyrant deals damage equal to the sacrificed creature's power to target creature or player.
+ addCard(Zone.HAND, playerA, "Barrage Tyrant", 1); // Creature {4}{R}
+
+ // If a land is tapped for two or more mana, it produces {C} instead of any other type and amount.
+ // Each spell a player casts costs {1} more to cast for each other spell that player has cast this turn.
+ addCard(Zone.BATTLEFIELD, playerB, "Damping Sphere", 1);
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Barrage Tyrant");
+
+ setStopAt(1, PhaseStep.BEGIN_COMBAT);
+ execute();
+
+ assertPermanentCount(playerA, "Barrage Tyrant", 0);
+ }
+
+ @Test
+ public void TestUseOfUnconditionalMana() {
+ // {T}: Add {C}.
+ // {T}: Add {C}{C}. Spend this mana only to cast colorless Eldrazi spells or activate abilities of colorless Eldrazi.
+ addCard(Zone.BATTLEFIELD, playerA, "Eldrazi Temple", 1);
+ addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
+ // {T}: Add {W}, {B}, or {G}.
+ // {W}{B}{G}, {T}, Sacrifice Abzan Banner: Draw a card.
+ addCard(Zone.HAND, playerA, "Abzan Banner", 1); // Artifact {3}
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Abzan Banner");
+
+ setStopAt(1, PhaseStep.BEGIN_COMBAT);
+ execute();
+
+ assertPermanentCount(playerA, "Abzan Banner", 1);
+ }
+}
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/mana/EmptyOnlyOnTurnsEndManaTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/mana/EmptyOnlyOnTurnsEndManaTest.java
index 9ab2021b2e9..bde2f8aefdf 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/mana/EmptyOnlyOnTurnsEndManaTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/mana/EmptyOnlyOnTurnsEndManaTest.java
@@ -41,7 +41,7 @@ public class EmptyOnlyOnTurnsEndManaTest extends CardTestPlayerBase {
@Test
public void testDaxosOfMeletis() {
- // At the beginning of each player's upkeep, that player adds {G}{G}{G} to their mana pool. Until end of turn, this mana doesn't empty from that player's mana pool as steps and phases end.
+ // At the beginning of each player's upkeep, that player adds {G}{G}{G}. Until end of turn, this mana doesn't empty from that player's mana pool as steps and phases end.
addCard(Zone.BATTLEFIELD, playerA, "Shizuko, Caller of Autumn", 1);
addCard(Zone.HAND, playerA, "Birds of Paradise", 1);
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/mana/ManaFlareTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/mana/ManaFlareTest.java
index f8d954ed361..cd7b4d121a9 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/mana/ManaFlareTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/mana/ManaFlareTest.java
@@ -40,7 +40,7 @@ public class ManaFlareTest extends CardTestPlayerBase {
@Test
public void testIsland() {
- // Whenever a player taps a land for mana, that player adds one mana to their mana pool of any type that land produced.
+ // Whenever a player taps a land for mana, that player adds one mana of any type that land produced.
addCard(Zone.BATTLEFIELD, playerA, "Mana Flare", 1);
addCard(Zone.BATTLEFIELD, playerA, "Island", 1);
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/mana/VorinclexVoiceOfHungerTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/mana/VorinclexVoiceOfHungerTest.java
index d4250193112..54828ccbf5d 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/mana/VorinclexVoiceOfHungerTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/mana/VorinclexVoiceOfHungerTest.java
@@ -110,6 +110,7 @@ public class VorinclexVoiceOfHungerTest extends CardTestPlayerBase {
execute();
assertPermanentCount(playerB, "Gemstone Caverns", 1);
+ assertCounterCount("Gemstone Caverns", CounterType.LUCK, 1);
assertPermanentCount(playerB, "Silvercoat Lion", 1);
assertExileCount("Silvercoat Lion", 1);
assertTapped("Gemstone Caverns", true);
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/FiendOfTheShadowsTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/FiendOfTheShadowsTest.java
index 9c5b8ca20e4..bdde801cd48 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/single/FiendOfTheShadowsTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/FiendOfTheShadowsTest.java
@@ -39,6 +39,8 @@ public class FiendOfTheShadowsTest extends CardTestPlayerBase {
@Test
public void testCardExile1() {
+ // Whenever Fiend of the Shadows deals combat damage to a player, that player exiles a card from their hand. You may play that card for as long as it remains exiled.
+ // Sacrifice a Human: Regenerate Fiend of the Shadows.
addCard(Zone.BATTLEFIELD, playerA, "Fiend of the Shadows");
removeAllCardsFromHand(playerB);
addCard(Zone.HAND, playerB, "Swamp");
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/HeartbeatOfSpringTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/HeartbeatOfSpringTest.java
index 5ac66853f03..8f9db4bd86f 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/HeartbeatOfSpringTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/HeartbeatOfSpringTest.java
@@ -46,7 +46,7 @@ public class HeartbeatOfSpringTest extends CardTestPlayerBase {
addCard(Zone.BATTLEFIELD, playerA, "Forest", 3);
// {T}: Add {C}. If you control an Urza's Power-Plant and an Urza's Tower, add {C}{C} instead.
addCard(Zone.HAND, playerA, "Urza's Mine", 1);
- // Whenever a player taps a land for mana, that player adds one mana to their mana pool of any type that land produced.
+ // Whenever a player taps a land for mana, that player adds one mana of any type that land produced.
addCard(Zone.HAND, playerA, "Heartbeat of Spring"); // {2}{G}
// Whenever a player casts a white spell, you may gain 1 life.
addCard(Zone.HAND, playerA, "Angel's Feather"); // {2}
diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java
index 4582e497d63..78f47f0315a 100644
--- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java
+++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java
@@ -495,7 +495,7 @@ public class TestPlayer implements Player {
List manaPermsWithCost = computerPlayer.getAvailableManaProducersWithCost(game);
for (Permanent perm : manaPermsWithCost) {
for (ActivatedManaAbilityImpl manaAbility : perm.getAbilities().getAvailableActivatedManaAbilities(Zone.BATTLEFIELD, game)) {
- if (manaAbility.toString().startsWith(groups[0]) && manaAbility.canActivate(computerPlayer.getId(), game)) {
+ if (manaAbility.toString().startsWith(groups[0]) && manaAbility.canActivate(computerPlayer.getId(), game).canActivate()) {
Ability newManaAbility = manaAbility.copy();
computerPlayer.activateAbility((ActivatedAbility) newManaAbility, game);
actions.remove(action);
@@ -1598,13 +1598,13 @@ public class TestPlayer implements Player {
}
@Override
- public boolean cast(SpellAbility ability, Game game, boolean noMana) {
- return computerPlayer.cast(ability, game, noMana);
+ public boolean cast(SpellAbility ability, Game game, boolean noMana, MageObjectReference reference) {
+ return computerPlayer.cast(ability, game, noMana, reference);
}
@Override
- public boolean playCard(Card card, Game game, boolean noMana, boolean ignoreTiming) {
- return computerPlayer.playCard(card, game, noMana, ignoreTiming);
+ public boolean playCard(Card card, Game game, boolean noMana, boolean ignoreTiming, MageObjectReference reference) {
+ return computerPlayer.playCard(card, game, noMana, ignoreTiming, reference);
}
@Override
@@ -2007,6 +2007,11 @@ public class TestPlayer implements Player {
computerPlayer.declareBlocker(defenderId, blockerId, attackerId, game);
}
+ @Override
+ public void declareBlocker(UUID defenderId, UUID blockerId, UUID attackerId, Game game, boolean allowUndo) {
+ computerPlayer.declareBlocker(defenderId, blockerId, attackerId, game, allowUndo);
+ }
+
@Override
public boolean searchLibrary(TargetCardInLibrary target, Game game) {
return computerPlayer.searchLibrary(target, game);
diff --git a/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java b/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java
index e6cdc6f7bcc..2b79823cf43 100644
--- a/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java
+++ b/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java
@@ -30,6 +30,7 @@ package org.mage.test.stub;
import java.io.Serializable;
import java.util.*;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.*;
import mage.abilities.costs.AlternativeSourceCosts;
import mage.abilities.costs.Cost;
@@ -564,7 +565,7 @@ public class PlayerStub implements Player {
}
@Override
- public boolean cast(SpellAbility ability, Game game, boolean noMana) {
+ public boolean cast(SpellAbility ability, Game game, boolean noMana, MageObjectReference reference) {
return false;
}
@@ -619,7 +620,7 @@ public class PlayerStub implements Player {
}
@Override
- public boolean playCard(Card card, Game game, boolean noMana, boolean checkTiming) {
+ public boolean playCard(Card card, Game game, boolean noMana, boolean checkTiming, MageObjectReference reference) {
return false;
}
@@ -993,6 +994,11 @@ public class PlayerStub implements Player {
}
+ @Override
+ public void declareBlocker(UUID defenderId, UUID blockerId, UUID attackerId, Game game, boolean allowUndo) {
+
+ }
+
@Override
public List getAvailableAttackers(Game game) {
return null;
diff --git a/Mage.Tests/src/test/java/org/mage/test/utils/ManaOptionsTest.java b/Mage.Tests/src/test/java/org/mage/test/utils/ManaOptionsTest.java
index 2cfb533c4ca..f96b0d1d92a 100644
--- a/Mage.Tests/src/test/java/org/mage/test/utils/ManaOptionsTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/utils/ManaOptionsTest.java
@@ -158,7 +158,7 @@ public class ManaOptionsTest extends CardTestPlayerBase {
assertDuplicatedManaOptions(manaOptions);
Assert.assertEquals("mana variations don't fit", 1, manaOptions.size());
- assertManaOptions("{C}{W}{W}{G}{G}", manaOptions);
+ assertManaOptions("{C}{W}{W}{G}{G}", manaOptions);
}
// Crystal Quarry
@@ -236,6 +236,29 @@ public class ManaOptionsTest extends CardTestPlayerBase {
assertManaOptions("{C}{G}{Any}", manaOptions);
}
+ // Nykthos, Shrine to Nyx
+ // {T}: Add {C}.
+ // {2}, {T}: Choose a color. Add an amount of mana of that color equal to your devotion to that color. (Your devotion to a color is the number of mana symbols of that color in the mana costs of permanents you control.)
+ @Test
+ public void testNykthos4() {
+ // If a land is tapped for two or more mana, it produces {C} instead of any other type and amount.
+ // Each spell a player casts costs {1} more to cast for each other spell that player has cast this turn.
+ addCard(Zone.BATTLEFIELD, playerA, "Damping Sphere", 1);
+ addCard(Zone.BATTLEFIELD, playerA, "Sedge Scorpion", 4);
+ addCard(Zone.BATTLEFIELD, playerA, "Forest", 3);
+ addCard(Zone.BATTLEFIELD, playerA, "Nykthos, Shrine to Nyx", 1);
+
+ setStopAt(1, PhaseStep.UPKEEP);
+ execute();
+
+ ManaOptions manaOptions = playerA.getAvailableManaTest(currentGame);
+ assertDuplicatedManaOptions(manaOptions);
+
+ Assert.assertEquals("mana variations don't fit", 1, manaOptions.size());
+ assertManaOptions("{C}{G}{G}{G}", manaOptions);
+
+ }
+
@Test
public void testDuplicatedDontHave1() {
addCard(Zone.BATTLEFIELD, playerA, "City of Brass", 2); // Any
@@ -401,4 +424,23 @@ public class ManaOptionsTest extends CardTestPlayerBase {
Assert.assertEquals("mana variations don't fit", 1, manaOptions.size());
assertManaOptions("{B}{B}", manaOptions);
}
+
+ @Test
+ public void testDampingSphere() {
+ // If a land is tapped for two or more mana, it produces {C} instead of any other type and amount.
+ // Each spell a player casts costs {1} more to cast for each other spell that player has cast this turn.
+ addCard(Zone.BATTLEFIELD, playerA, "Damping Sphere", 1);
+ // {T}: Add {C}.
+ // {T}: Add {C}{C}. Spend this mana only to cast colorless Eldrazi spells or activate abilities of colorless Eldrazi.
+ addCard(Zone.BATTLEFIELD, playerA, "Eldrazi Temple", 1);
+
+ setStopAt(1, PhaseStep.UPKEEP);
+ execute();
+
+ ManaOptions manaOptions = playerA.getAvailableManaTest(currentGame);
+ assertDuplicatedManaOptions(manaOptions);
+
+ Assert.assertEquals("mana variations don't fit", 1, manaOptions.size());
+ assertManaOptions("{C}", manaOptions);
+ }
}
diff --git a/Mage.Updater/pom.xml b/Mage.Updater/pom.xml
index 33fb497996d..953864d6478 100644
--- a/Mage.Updater/pom.xml
+++ b/Mage.Updater/pom.xml
@@ -5,7 +5,7 @@
mage-root
org.mage
- 1.4.29
+ 1.4.30
4.0.0
diff --git a/Mage.Verify/pom.xml b/Mage.Verify/pom.xml
index c0cc0aae2b2..2b5f9eeabd5 100644
--- a/Mage.Verify/pom.xml
+++ b/Mage.Verify/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-root
- 1.4.29
+ 1.4.30
mage-verify
@@ -49,7 +49,7 @@
org.mage
mage-client
- 1.4.29
+ 1.4.30
diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
index acc9db29673..344b52e7ea9 100644
--- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
+++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
@@ -1,6 +1,5 @@
package mage.verify;
-import javassist.bytecode.SignatureAttribute;
import mage.ObjectColor;
import mage.cards.*;
import mage.cards.basiclands.BasicLand;
@@ -54,16 +53,6 @@ public class VerifyCardDataTest {
static {
// skip lists for checks (example: unstable cards with same name may have different stats)
- // TODO: mtgjson have wrong data for UGL
- // remove after fixed
- // https://github.com/mtgjson/mtgjson/issues/531
- // https://github.com/mtgjson/mtgjson/issues/534
- // https://github.com/mtgjson/mtgjson/issues/535
-
- // TODO: mtgjson have wrong data to last dino updates from wizards 11.01.2018
- // remove after fixed
- // https://github.com/mtgjson/mtgjson/issues/538
-
// power-toughness
skipListCreate("PT");
skipListAddName("PT", "Garbage Elemental"); // UST
@@ -77,25 +66,12 @@ public class VerifyCardDataTest {
// supertype
skipListCreate("SUPERTYPE");
- skipListAddName("SUPERTYPE", "Timmy, Power Gamer"); // UGL, mtgjson error
// type
skipListCreate("TYPE");
- skipListAddName("TYPE", "Fowl Play"); // UGL, mtgjson error
// subtype
skipListCreate("SUBTYPE");
- skipListAddName("SUBTYPE", "Timmy, Power Gamer"); // UGL, mtgjson error
- skipListAddName("SUBTYPE", "Fowl Play"); // UGL, mtgjson error
- skipListAddName("SUBTYPE", "Paper Tiger"); // UGL, mtgjson error
- skipListAddName("SUBTYPE", "Rock Lobster"); // UGL, mtgjson error
- skipListAddName("SUBTYPE", "Scissors Lizard"); // UGL, mtgjson error
- skipListAddName("SUBTYPE", "Urza's Science Fair Project"); // UGL, mtgjson error
- skipListAddName("SUBTYPE", "Ripscale Predator"); // mtgjson error for dino update
- skipListAddName("SUBTYPE", "Regal Behemoth"); // mtgjson error for dino update
- skipListAddName("SUBTYPE", "Gnathosaur"); // mtgjson error for dino update
- skipListAddName("SUBTYPE", "Pteron Ghost"); // mtgjson error for dino update
-
// number
skipListCreate("NUMBER");
@@ -375,9 +351,7 @@ public class VerifyCardDataTest {
//Assert.assertNotNull("Can't create token by default constructor", token);
if (token == null) {
Assert.fail("Can't create token by default constructor: " + className);
- }
-
- if (tokDataNamesIndex.getOrDefault(token.getName(), "").isEmpty()) {
+ } else if (tokDataNamesIndex.getOrDefault(token.getName(), "").isEmpty()) {
errorsList.add("error, can't find data in card-pictures-tok.txt for token: " + tokenClass.getName() + " -> " + token.getName());
}
}
@@ -388,7 +362,6 @@ public class VerifyCardDataTest {
// https://api.scryfall.com/cards/search?order=set&q=%21%E2%80%9CAngel%E2%80%9D&unique=prints
// 3. Collect all strings in "set@name"
// 4. Proccess tokens data and find missing strings from "set@name" list
-
printMessages(warningsList);
printMessages(errorsList);
if (errorsList.size() > 0) {
@@ -492,7 +465,7 @@ public class VerifyCardDataTest {
// fix names (e.g. Urza’s to Urza's)
if (expected != null && expected.contains("Urza’s")) {
expected = new ArrayList<>(expected);
- for (ListIterator it = ((List) expected).listIterator(); it.hasNext(); ) {
+ for (ListIterator it = ((List) expected).listIterator(); it.hasNext();) {
if (it.next().equals("Urza’s")) {
it.set("Urza's");
}
@@ -595,19 +568,18 @@ public class VerifyCardDataTest {
checkName = name.replace("Snow-Covered ", "");
}
- return checkName.equals("Island") ||
- checkName.equals("Forest") ||
- checkName.equals("Swamp") ||
- checkName.equals("Plains") ||
- checkName.equals("Mountain") ||
- checkName.equals("Wastes");
+ return checkName.equals("Island")
+ || checkName.equals("Forest")
+ || checkName.equals("Swamp")
+ || checkName.equals("Plains")
+ || checkName.equals("Mountain")
+ || checkName.equals("Wastes");
}
private void checkBasicLands(Card card, JsonCard ref) {
// basic lands must have Rarity.LAND and SuperType.BASIC
// other cards can't have that stats
-
if (isBasicLandName(card.getName())) {
// lands
if (card.getRarity() != Rarity.LAND) {
diff --git a/Mage/pom.xml b/Mage/pom.xml
index c17c46b9bb7..55d268b455c 100644
--- a/Mage/pom.xml
+++ b/Mage/pom.xml
@@ -6,7 +6,7 @@
org.mage
mage-root
- 1.4.29
+ 1.4.30
mage
diff --git a/Mage/src/main/java/mage/abilities/AbilitiesImpl.java b/Mage/src/main/java/mage/abilities/AbilitiesImpl.java
index 4b99d2d8ed0..8e79524bf53 100644
--- a/Mage/src/main/java/mage/abilities/AbilitiesImpl.java
+++ b/Mage/src/main/java/mage/abilities/AbilitiesImpl.java
@@ -157,7 +157,7 @@ public class AbilitiesImpl extends ArrayList implements Ab
return stream()
.filter(ability -> ability instanceof ActivatedManaAbilityImpl)
.filter(ability -> ability.getZone().match(zone))
- .filter(ability -> (((ActivatedManaAbilityImpl) ability).canActivate(ability.getControllerId(), game)))
+ .filter(ability -> (((ActivatedManaAbilityImpl) ability).canActivate(ability.getControllerId(), game).canActivate()))
.map(ability -> (ActivatedManaAbilityImpl) ability)
.collect(Collectors.toCollection(AbilitiesImpl::new));
diff --git a/Mage/src/main/java/mage/abilities/ActivatedAbility.java b/Mage/src/main/java/mage/abilities/ActivatedAbility.java
index 11de964ed9d..22e9f8ecb39 100644
--- a/Mage/src/main/java/mage/abilities/ActivatedAbility.java
+++ b/Mage/src/main/java/mage/abilities/ActivatedAbility.java
@@ -28,6 +28,7 @@
package mage.abilities;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.mana.ManaOptions;
import mage.constants.TargetController;
import mage.game.Game;
@@ -38,9 +39,36 @@ import mage.game.Game;
*/
public interface ActivatedAbility extends Ability {
- boolean canActivate(UUID playerId, Game game);
+ final public class ActivationStatus {
- public void setMayActivate(TargetController mayActivate);
+ private final boolean canActivate;
+ private final MageObjectReference permittingObject;
+
+ public ActivationStatus(boolean canActivate, MageObjectReference permittingObject) {
+ this.canActivate = canActivate;
+ this.permittingObject = permittingObject;
+ }
+
+ public boolean canActivate() {
+ return canActivate;
+ }
+
+ public MageObjectReference getPermittingObject() {
+ return permittingObject;
+ }
+
+ public static ActivationStatus getFalse() {
+ return new ActivationStatus(false, null);
+ }
+
+ public static ActivationStatus getTrue() {
+ return new ActivationStatus(true, null);
+ }
+ }
+
+ ActivationStatus canActivate(UUID playerId, Game game); // has to return a reference to the permitting ability/source
+
+ void setMayActivate(TargetController mayActivate);
/**
* Returns the minimal possible cost for what the ability can be activated
@@ -67,4 +95,8 @@ public interface ActivatedAbility extends Ability {
void setCheckPlayableMode();
boolean isCheckPlayableMode();
+
+ void setMaxActivationsPerTurn(int maxActivationsPerTurn);
+
+ int getMaxActivationsPerTurn(Game game);
}
diff --git a/Mage/src/main/java/mage/abilities/ActivatedAbilityImpl.java b/Mage/src/main/java/mage/abilities/ActivatedAbilityImpl.java
index 073a4596885..aaa4eeffd21 100644
--- a/Mage/src/main/java/mage/abilities/ActivatedAbilityImpl.java
+++ b/Mage/src/main/java/mage/abilities/ActivatedAbilityImpl.java
@@ -29,6 +29,7 @@ package mage.abilities;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.condition.Condition;
import mage.abilities.costs.Cost;
import mage.abilities.costs.Costs;
@@ -177,10 +178,10 @@ public abstract class ActivatedAbilityImpl extends AbilityImpl implements Activa
public abstract ActivatedAbilityImpl copy();
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
//20091005 - 602.2
if (!(hasMoreActivationsThisTurn(game) && (condition == null || condition.apply(game, this)))) {
- return false;
+ return ActivationStatus.getFalse();
}
switch (mayActivate) {
case ANY:
@@ -188,24 +189,28 @@ public abstract class ActivatedAbilityImpl extends AbilityImpl implements Activa
case NOT_YOU:
if (controlsAbility(playerId, game)) {
- return false;
+ return ActivationStatus.getFalse();
+ }
+ break;
+ case TEAM:
+ if (game.getPlayer(controllerId).hasOpponent(playerId, game)) {
+ return ActivationStatus.getFalse();
}
break;
-
case OPPONENT:
if (!game.getPlayer(controllerId).hasOpponent(playerId, game)) {
- return false;
+ return ActivationStatus.getFalse();
}
break;
case OWNER:
Permanent permanent = game.getPermanent(getSourceId());
if (!permanent.getOwnerId().equals(playerId)) {
- return false;
+ return ActivationStatus.getFalse();
}
break;
case YOU:
if (!controlsAbility(playerId, game)) {
- return false;
+ return ActivationStatus.getFalse();
}
break;
case CONTROLLER_ATTACHED_TO:
@@ -216,17 +221,17 @@ public abstract class ActivatedAbilityImpl extends AbilityImpl implements Activa
break;
}
}
- return false;
+ return ActivationStatus.getFalse();
}
//20091005 - 602.5d/602.5e
- if (timing == TimingRule.INSTANT || game.canPlaySorcery(playerId)
- || null != game.getContinuousEffects().asThough(sourceId, AsThoughEffectType.ACTIVATE_AS_INSTANT, this, controllerId, game)) {
+ MageObjectReference permittingObject = game.getContinuousEffects().asThough(sourceId, AsThoughEffectType.ACTIVATE_AS_INSTANT, this, controllerId, game);
+ if (timing == TimingRule.INSTANT || game.canPlaySorcery(playerId) || null != permittingObject) {
if (costs.canPay(this, sourceId, playerId, game) && canChooseTarget(game)) {
this.activatorId = playerId;
- return true;
+ return new ActivationStatus(true, permittingObject);
}
}
- return false;
+ return ActivationStatus.getFalse();
}
@Override
@@ -307,10 +312,12 @@ public abstract class ActivatedAbilityImpl extends AbilityImpl implements Activa
return false;
}
+ @Override
public void setMaxActivationsPerTurn(int maxActivationsPerTurn) {
this.maxActivationsPerTurn = maxActivationsPerTurn;
}
+ @Override
public int getMaxActivationsPerTurn(Game game) {
return maxActivationsPerTurn;
}
diff --git a/Mage/src/main/java/mage/abilities/PlayLandAbility.java b/Mage/src/main/java/mage/abilities/PlayLandAbility.java
index 5aa10fb6cd9..65d6a17b11c 100644
--- a/Mage/src/main/java/mage/abilities/PlayLandAbility.java
+++ b/Mage/src/main/java/mage/abilities/PlayLandAbility.java
@@ -28,6 +28,7 @@
package mage.abilities;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.constants.AbilityType;
import mage.constants.AsThoughEffectType;
import mage.constants.Zone;
@@ -50,13 +51,13 @@ public class PlayLandAbility extends ActivatedAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
- if (!controlsAbility(playerId, game)
- && null == game.getContinuousEffects().asThough(getSourceId(), AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, playerId, game)) {
- return false;
+ public ActivationStatus canActivate(UUID playerId, Game game) {
+ MageObjectReference permittingObject = game.getContinuousEffects().asThough(getSourceId(), AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, null, playerId, game);
+ if (!controlsAbility(playerId, game) && null == permittingObject) {
+ return ActivationStatus.getFalse();
}
//20091005 - 114.2a
- return game.getActivePlayerId().equals(playerId) && game.getPlayer(playerId).canPlayLand() && game.canPlaySorcery(playerId);
+ return new ActivationStatus(game.getActivePlayerId().equals(playerId) && game.getPlayer(playerId).canPlayLand() && game.canPlaySorcery(playerId), permittingObject);
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/SpellAbility.java b/Mage/src/main/java/mage/abilities/SpellAbility.java
index 84491fb0096..00c2144b06b 100644
--- a/Mage/src/main/java/mage/abilities/SpellAbility.java
+++ b/Mage/src/main/java/mage/abilities/SpellAbility.java
@@ -29,6 +29,7 @@ package mage.abilities;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.costs.Cost;
import mage.abilities.costs.VariableCost;
import mage.abilities.costs.mana.ManaCost;
@@ -91,48 +92,49 @@ public class SpellAbility extends ActivatedAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
if (null != game.getContinuousEffects().asThough(sourceId, AsThoughEffectType.CAST_AS_INSTANT, this, playerId, game) // check this first to allow Offering in main phase
|| this.spellCanBeActivatedRegularlyNow(playerId, game)) {
if (spellAbilityType == SpellAbilityType.SPLIT || spellAbilityType == SpellAbilityType.SPLIT_AFTERMATH) {
- return false;
+ return ActivationStatus.getFalse();
}
// fix for Gitaxian Probe and casting opponent's spells
- if (null == game.getContinuousEffects().asThough(getSourceId(), AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, playerId, game)) {
+ MageObjectReference permittingSource = game.getContinuousEffects().asThough(getSourceId(), AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, null, playerId, game);
+ if (permittingSource == null) {
Card card = game.getCard(sourceId);
if (!(card != null && card.getOwnerId().equals(playerId))) {
- return false;
+ return ActivationStatus.getFalse();
}
}
// Check if rule modifying events prevent to cast the spell in check playable mode
if (this.isCheckPlayableMode()) {
if (game.getContinuousEffects().preventedByRuleModification(
GameEvent.getEvent(GameEvent.EventType.CAST_SPELL, this.getId(), this.getSourceId(), playerId), this, game, true)) {
- return false;
+ return ActivationStatus.getFalse();
}
}
// Alternate spell abilities (Flashback, Overload) can't be cast with no mana to pay option
if (getSpellAbilityType() == SpellAbilityType.BASE_ALTERNATE) {
Player player = game.getPlayer(playerId);
if (player != null && getSourceId().equals(player.getCastSourceIdWithAlternateMana())) {
- return false;
+ return ActivationStatus.getFalse();
}
}
if (costs.canPay(this, sourceId, controllerId, game)) {
if (getSpellAbilityType() == SpellAbilityType.SPLIT_FUSED) {
SplitCard splitCard = (SplitCard) game.getCard(getSourceId());
if (splitCard != null) {
- return (splitCard.getLeftHalfCard().getSpellAbility().canChooseTarget(game)
- && splitCard.getRightHalfCard().getSpellAbility().canChooseTarget(game));
+ return new ActivationStatus(splitCard.getLeftHalfCard().getSpellAbility().canChooseTarget(game)
+ && splitCard.getRightHalfCard().getSpellAbility().canChooseTarget(game), null);
}
- return false;
+ return ActivationStatus.getFalse();
} else {
- return canChooseTarget(game);
+ return new ActivationStatus(canChooseTarget(game), permittingSource);
}
}
}
- return false;
+ return ActivationStatus.getFalse();
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/common/AttacksFirstTimeTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/AttacksFirstTimeTriggeredAbility.java
new file mode 100644
index 00000000000..b7e17825862
--- /dev/null
+++ b/Mage/src/main/java/mage/abilities/common/AttacksFirstTimeTriggeredAbility.java
@@ -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.abilities.common;
+
+import mage.MageObjectReference;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.effects.Effect;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+import mage.watchers.common.AttackedThisTurnWatcher;
+
+/**
+ *
+ * @author TheElk801
+ */
+public class AttacksFirstTimeTriggeredAbility extends TriggeredAbilityImpl {
+
+ public AttacksFirstTimeTriggeredAbility(Effect effect, boolean optional) {
+ super(Zone.BATTLEFIELD, effect, optional);
+ this.addWatcher(new AttackedThisTurnWatcher());
+ }
+
+ public AttacksFirstTimeTriggeredAbility(final AttacksFirstTimeTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.ATTACKER_DECLARED;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ if (!event.getSourceId().equals(this.getSourceId())) {
+ return false;
+ }
+ AttackedThisTurnWatcher watcher = (AttackedThisTurnWatcher) game.getState().getWatchers().get(AttackedThisTurnWatcher.class.getSimpleName());
+ if (watcher == null) {
+ return false;
+ }
+ Permanent sourcePerm = game.getPermanentOrLKIBattlefield(event.getSourceId());
+ if (sourcePerm == null) {
+ return false;
+ }
+ for (MageObjectReference mor : watcher.getAttackedThisTurnCreaturesCounts().keySet()) {
+ if (mor.refersTo(sourcePerm, game)
+ && watcher.getAttackedThisTurnCreaturesCounts().get(mor) > 1) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever {this} attacks for the first time each turn, " + super.getRule();
+ }
+
+ @Override
+ public AttacksFirstTimeTriggeredAbility copy() {
+ return new AttacksFirstTimeTriggeredAbility(this);
+ }
+}
diff --git a/Mage/src/main/java/mage/abilities/common/PassAbility.java b/Mage/src/main/java/mage/abilities/common/PassAbility.java
index 1c64b2a05c9..9220ecfdc76 100644
--- a/Mage/src/main/java/mage/abilities/common/PassAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/PassAbility.java
@@ -1,16 +1,16 @@
/*
* 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
@@ -20,18 +20,17 @@
* 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.abilities.common;
import java.util.UUID;
-import mage.constants.Zone;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.effects.common.PassEffect;
+import mage.constants.Zone;
import mage.game.Game;
/**
@@ -55,8 +54,8 @@ public class PassAbility extends ActivatedAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
- return true;
+ public ActivationStatus canActivate(UUID playerId, Game game) {
+ return ActivationStatus.getTrue();
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/common/SagaAbility.java b/Mage/src/main/java/mage/abilities/common/SagaAbility.java
index 3e377d3f438..35aee48fb56 100644
--- a/Mage/src/main/java/mage/abilities/common/SagaAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/SagaAbility.java
@@ -93,10 +93,14 @@ public class SagaAbility extends SimpleStaticAbility {
for (int i = fromChapter.getNumber(); i <= toChapter.getNumber(); i++) {
ability = new ChapterTriggeredAbility(null, SagaChapter.getChapter(i), toChapter);
for (Effect effect : effects) {
- ability.addEffect(effect);
+ if (effect != null) {
+ ability.addEffect(effect.copy());
+ }
}
for (Target target : targets) {
- ability.addTarget(target);
+ if (target != null) {
+ ability.addTarget(target.copy());
+ }
}
if (i > fromChapter.getNumber()) {
ability.setRuleVisible(false);
@@ -136,7 +140,7 @@ public class SagaAbility extends SimpleStaticAbility {
class ChapterTriggeredAbility extends TriggeredAbilityImpl {
- SagaChapter chapterFrom, chapterTo;
+ private SagaChapter chapterFrom, chapterTo;
public ChapterTriggeredAbility(Effect effect, SagaChapter chapterFrom, SagaChapter chapterTo) {
super(Zone.ALL, effect, false);
@@ -161,7 +165,10 @@ class ChapterTriggeredAbility extends TriggeredAbilityImpl {
int amountAdded = event.getAmount();
int loreCounters = amountAdded;
Permanent sourceSaga = game.getPermanentOrLKIBattlefield(getSourceId());
- if (sourceSaga != null) { // If it's entering the battlefield, it won't be found so we assume it had no counters
+ if (sourceSaga == null) {
+ sourceSaga = game.getPermanentEntering(getSourceId());
+ }
+ if (sourceSaga != null) {
loreCounters = sourceSaga.getCounters(game).getCount(CounterType.LORE);
}
return loreCounters - amountAdded < chapterFrom.getNumber()
@@ -204,40 +211,3 @@ class ChapterTriggeredAbility extends TriggeredAbilityImpl {
return sb.toString();
}
}
-
-//class SagaAddCounterAbility extends TriggeredAbilityImpl {
-//
-// SagaChapter maxChapter;
-//
-// SagaAddCounterAbility(SagaChapter maxChapter) {
-// super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.LORE.createInstance()), false);
-// this.usesStack = false;
-// this.maxChapter = maxChapter;
-// }
-//
-// SagaAddCounterAbility(final SagaAddCounterAbility ability) {
-// super(ability);
-// this.maxChapter = ability.maxChapter;
-// }
-//
-// @Override
-// public SagaAddCounterAbility copy() {
-// return new SagaAddCounterAbility(this);
-// }
-//
-// @Override
-// public boolean checkEventType(GameEvent event, Game game) {
-// return event.getType() == EventType.PRECOMBAT_MAIN_PHASE_PRE;
-// }
-//
-// @Override
-// public boolean checkTrigger(GameEvent event, Game game) {
-// return event.getPlayerId().equals(this.controllerId);
-// }
-//
-// @Override
-// public String getRule() {
-// return "(As this Saga enters and after your draw step, add a lore counter. Sacrifice after " + maxChapter.toString() + ".) ";
-// }
-//
-//}
diff --git a/Mage/src/main/java/mage/abilities/common/WinsCoinFlipTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/WinsCoinFlipTriggeredAbility.java
new file mode 100644
index 00000000000..2cd87803c80
--- /dev/null
+++ b/Mage/src/main/java/mage/abilities/common/WinsCoinFlipTriggeredAbility.java
@@ -0,0 +1,69 @@
+/*
+ * 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.abilities.common;
+
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.effects.Effect;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+
+/**
+ *
+ * @author TheElk801
+ */
+public class WinsCoinFlipTriggeredAbility extends TriggeredAbilityImpl {
+
+ public WinsCoinFlipTriggeredAbility(Effect effect) {
+ super(Zone.BATTLEFIELD, effect, false);
+ }
+
+ public WinsCoinFlipTriggeredAbility(final WinsCoinFlipTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public WinsCoinFlipTriggeredAbility copy() {
+ return new WinsCoinFlipTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.COIN_FLIPPED;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ return event.getFlag();
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever a player wins a coin flip, " + super.getRule();
+ }
+}
diff --git a/Mage/src/main/java/mage/abilities/costs/common/PayLoyaltyCost.java b/Mage/src/main/java/mage/abilities/costs/common/PayLoyaltyCost.java
index 20b7f4d2124..4450a58a7fa 100644
--- a/Mage/src/main/java/mage/abilities/costs/common/PayLoyaltyCost.java
+++ b/Mage/src/main/java/mage/abilities/costs/common/PayLoyaltyCost.java
@@ -64,17 +64,19 @@ public class PayLoyaltyCost extends CostImpl {
}
/**
- * Gatherer Ruling:
- * 10/1/2005: Planeswalkers will enter the battlefield with double the normal amount of loyalty counters. However,
- * if you activate an ability whose cost has you put loyalty counters on a planeswalker, the number you put on isn’t doubled.
- * This is because those counters are put on as a cost, not as an effect.
- **/
+ * Gatherer Ruling: 10/1/2005: Planeswalkers will enter the battlefield with
+ * double the normal amount of loyalty counters. However, if you activate an
+ * ability whose cost has you put loyalty counters on a planeswalker, the
+ * number you put on isn’t doubled. This is because those counters are put
+ * on as a cost, not as an effect.
+ *
+ */
@Override
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
Permanent planeswalker = game.getPermanent(sourceId);
if (planeswalker != null && planeswalker.getCounters(game).getCount(CounterType.LOYALTY) + amount >= 0 && planeswalker.canLoyaltyBeUsed(game)) {
if (amount > 0) {
- planeswalker.getCounters(game).addCounter(CounterType.LOYALTY.createInstance(amount));
+ planeswalker.addCounters(CounterType.LOYALTY.createInstance(amount), ability, game, false);
} else if (amount < 0) {
planeswalker.removeCounters(CounterType.LOYALTY.getName(), Math.abs(amount), game);
}
diff --git a/Mage/src/main/java/mage/abilities/costs/common/PutCountersSourceCost.java b/Mage/src/main/java/mage/abilities/costs/common/PutCountersSourceCost.java
index a4bc5d6cb49..1508253a4ab 100644
--- a/Mage/src/main/java/mage/abilities/costs/common/PutCountersSourceCost.java
+++ b/Mage/src/main/java/mage/abilities/costs/common/PutCountersSourceCost.java
@@ -72,7 +72,7 @@ public class PutCountersSourceCost extends CostImpl {
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
Permanent permanent = game.getPermanent(sourceId);
if (permanent != null) {
- this.paid = permanent.addCounters(counter, ability, game);
+ this.paid = permanent.addCounters(counter, ability, game, false);
}
return paid;
}
diff --git a/Mage/src/main/java/mage/abilities/costs/common/TapSourceCost.java b/Mage/src/main/java/mage/abilities/costs/common/TapSourceCost.java
index d127b664918..c321bcc54ee 100644
--- a/Mage/src/main/java/mage/abilities/costs/common/TapSourceCost.java
+++ b/Mage/src/main/java/mage/abilities/costs/common/TapSourceCost.java
@@ -63,7 +63,7 @@ public class TapSourceCost extends CostImpl {
Permanent permanent = game.getPermanent(sourceId);
if (permanent != null) {
return !permanent.isTapped()
- && (permanent.canTap() || null != game.getContinuousEffects().asThough(sourceId, AsThoughEffectType.ACTIVATE_HASTE, controllerId, game));
+ && (permanent.canTap() || null != game.getContinuousEffects().asThough(sourceId, AsThoughEffectType.ACTIVATE_HASTE, ability, controllerId, game));
}
return false;
}
diff --git a/Mage/src/main/java/mage/abilities/costs/common/UntapSourceCost.java b/Mage/src/main/java/mage/abilities/costs/common/UntapSourceCost.java
index 15af412080f..f1fce810e5c 100644
--- a/Mage/src/main/java/mage/abilities/costs/common/UntapSourceCost.java
+++ b/Mage/src/main/java/mage/abilities/costs/common/UntapSourceCost.java
@@ -62,7 +62,7 @@ public class UntapSourceCost extends CostImpl {
public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) {
Permanent permanent = game.getPermanent(sourceId);
if (permanent != null) {
- return permanent.isTapped() && (permanent.canTap() || null != game.getContinuousEffects().asThough(sourceId, AsThoughEffectType.ACTIVATE_HASTE, controllerId, game));
+ return permanent.isTapped() && (permanent.canTap() || null != game.getContinuousEffects().asThough(sourceId, AsThoughEffectType.ACTIVATE_HASTE, ability, controllerId, game));
}
return false;
}
diff --git a/Mage/src/main/java/mage/abilities/decorator/ConditionalGainActivatedAbility.java b/Mage/src/main/java/mage/abilities/decorator/ConditionalGainActivatedAbility.java
index 41660dda3e3..deedcca4468 100644
--- a/Mage/src/main/java/mage/abilities/decorator/ConditionalGainActivatedAbility.java
+++ b/Mage/src/main/java/mage/abilities/decorator/ConditionalGainActivatedAbility.java
@@ -82,9 +82,9 @@ public class ConditionalGainActivatedAbility extends ActivatedAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
if (!condition.apply(game, this)) {
- return false;
+ return ActivationStatus.getFalse();
}
return super.canActivate(playerId, game);
}
diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/ManaTypeInManaPoolCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/ManaTypeInManaPoolCount.java
index 73572da3bec..55dc44ddbc0 100644
--- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/ManaTypeInManaPoolCount.java
+++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/ManaTypeInManaPoolCount.java
@@ -45,7 +45,7 @@ public class ManaTypeInManaPoolCount implements DynamicValue {
@Override
public String getMessage() {
- StringBuilder sb = new StringBuilder();
+ StringBuilder sb = new StringBuilder("unspent ");
switch (manaType) {
case BLACK:
sb.append("black");
@@ -66,7 +66,7 @@ public class ManaTypeInManaPoolCount implements DynamicValue {
sb.append("colorless");
break;
}
- sb.append(" mana in your mana pool");
+ sb.append(" mana you have");
return sb.toString();
}
}
diff --git a/Mage/src/main/java/mage/abilities/effects/ContinuousEffect.java b/Mage/src/main/java/mage/abilities/effects/ContinuousEffect.java
index 51df5b855d2..04e7fdec34f 100644
--- a/Mage/src/main/java/mage/abilities/effects/ContinuousEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/ContinuousEffect.java
@@ -51,6 +51,8 @@ public interface ContinuousEffect extends Effect {
void discard();
+ void setDuration(Duration duration);
+
Duration getDuration();
long getOrder();
diff --git a/Mage/src/main/java/mage/abilities/effects/ContinuousEffectImpl.java b/Mage/src/main/java/mage/abilities/effects/ContinuousEffectImpl.java
index ac2720a3932..eab9194ed5c 100644
--- a/Mage/src/main/java/mage/abilities/effects/ContinuousEffectImpl.java
+++ b/Mage/src/main/java/mage/abilities/effects/ContinuousEffectImpl.java
@@ -112,6 +112,11 @@ public abstract class ContinuousEffectImpl extends EffectImpl implements Continu
this.characterDefining = effect.characterDefining;
}
+ @Override
+ public void setDuration(Duration duration) {
+ this.duration = duration;
+ }
+
@Override
public Duration getDuration() {
return duration;
diff --git a/Mage/src/main/java/mage/abilities/effects/ContinuousEffects.java b/Mage/src/main/java/mage/abilities/effects/ContinuousEffects.java
index 90306488a3c..cd4a15c37e2 100644
--- a/Mage/src/main/java/mage/abilities/effects/ContinuousEffects.java
+++ b/Mage/src/main/java/mage/abilities/effects/ContinuousEffects.java
@@ -32,6 +32,7 @@ import java.util.*;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.*;
import mage.abilities.effects.common.continuous.BecomesFaceDownCreatureEffect;
import mage.abilities.effects.common.continuous.CommanderReplacementEffect;
@@ -347,7 +348,8 @@ public class ContinuousEffects implements Serializable {
}
// boolean checkLKI = event.getType().equals(EventType.ZONE_CHANGE) || event.getType().equals(EventType.DESTROYED_PERMANENT);
//get all applicable transient Replacement effects
- for (ReplacementEffect effect : replacementEffects) {
+ for (Iterator iterator = replacementEffects.iterator(); iterator.hasNext();) {
+ ReplacementEffect effect = iterator.next();
if (!effect.checksEventType(event, game)) {
continue;
}
@@ -378,7 +380,8 @@ public class ContinuousEffects implements Serializable {
replaceEffects.put(effect, applicableAbilities);
}
}
- for (PreventionEffect effect : preventionEffects) {
+ for (Iterator iterator = preventionEffects.iterator(); iterator.hasNext();) {
+ PreventionEffect effect = iterator.next();
if (!effect.checksEventType(event, game)) {
continue;
}
@@ -500,19 +503,6 @@ public class ContinuousEffects implements Serializable {
return spliceEffects;
}
- /**
- *
- * @param objectId
- * @param type
- * @param controllerId
- * @param game
- * @return sourceId of the permitting effect if any exists otherwise returns
- * null
- */
- public UUID asThough(UUID objectId, AsThoughEffectType type, UUID controllerId, Game game) {
- return asThough(objectId, type, null, controllerId, game);
- }
-
/**
*
* @param objectId
@@ -523,17 +513,17 @@ public class ContinuousEffects implements Serializable {
* @return sourceId of the permitting effect if any exists otherwise returns
* null
*/
- public UUID asThough(UUID objectId, AsThoughEffectType type, Ability affectedAbility, UUID controllerId, Game game) {
+ public MageObjectReference asThough(UUID objectId, AsThoughEffectType type, Ability affectedAbility, UUID controllerId, Game game) {
List asThoughEffectsList = getApplicableAsThoughEffects(type, game);
for (AsThoughEffect effect : asThoughEffectsList) {
Set abilities = asThoughEffectsMap.get(type).getAbility(effect.getId());
for (Ability ability : abilities) {
if (affectedAbility == null) {
if (effect.applies(objectId, ability, controllerId, game)) {
- return ability.getSourceId();
+ return new MageObjectReference(ability.getSourceObject(game), game);
}
} else if (effect.applies(objectId, affectedAbility, ability, game)) {
- return ability.getSourceId();
+ return new MageObjectReference(ability.getSourceObject(game), game);
}
}
}
@@ -849,6 +839,9 @@ public class ContinuousEffects implements Serializable {
if (rEffect != null) {
event.getAppliedEffects().add(rEffect.getId());
caught = rEffect.replaceEvent(event, rAbility, game);
+ if (Duration.OneUse.equals(rEffect.getDuration())) {
+ rEffect.discard();
+ }
}
if (caught) { // Event was completely replaced -> stop applying effects to it
break;
@@ -932,8 +925,7 @@ public class ContinuousEffects implements Serializable {
System.out.println(game.getTurn() + ", " + game.getPhase() + ": " + "need apply " + layer.stream()
.map((eff) -> {return eff.getClass().getName().replaceAll(".+\\.(.+)", "$1");})
.collect(Collectors.joining(", ")));
- */
-
+ */
for (ContinuousEffect effect : layer) {
if (activeLayerEffects.contains(effect) && !appliedEffects.contains(effect.getId())) { // Effect does still exist and was not applied yet
Set dependentTo = effect.isDependentTo(layer);
diff --git a/Mage/src/main/java/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java
index c8e1052d3a5..eb4a8df758b 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java
@@ -28,6 +28,7 @@
package mage.abilities.effects.common;
import java.util.Set;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
@@ -88,7 +89,7 @@ public class CastCardFromOutsideTheGameEffect extends OneShotEffect {
}
return false;
}
-
+
Cards filteredCards = new CardsImpl();
for (Card card : filtered) {
filteredCards.add(card.getId());
@@ -98,7 +99,7 @@ public class CastCardFromOutsideTheGameEffect extends OneShotEffect {
if (player.choose(Outcome.Benefit, filteredCards, target, game)) {
Card card = player.getSideboard().get(target.getFirstTarget(), game);
if (card != null) {
- player.cast(card.getSpellAbility(), game, true);
+ player.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
}
@@ -106,4 +107,4 @@ public class CastCardFromOutsideTheGameEffect extends OneShotEffect {
return true;
}
-}
\ No newline at end of file
+}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/CipherEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CipherEffect.java
index bd4dc4146f4..9d66979137f 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/CipherEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/CipherEffect.java
@@ -28,6 +28,7 @@
package mage.abilities.effects.common;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
@@ -151,7 +152,7 @@ class CipherStoreEffect extends OneShotEffect {
}
ability.getEffects().remove(cipherEffect);
if (ability instanceof SpellAbility) {
- controller.cast(ability, game, true);
+ controller.cast(ability, game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/CopyTargetSpellEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CopyTargetSpellEffect.java
index 56d50b8c409..7382a19cc5c 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/CopyTargetSpellEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/CopyTargetSpellEffect.java
@@ -43,20 +43,27 @@ import mage.players.Player;
*/
public class CopyTargetSpellEffect extends OneShotEffect {
- private boolean useLKI = false;
+ private final boolean useController;
+ private final boolean useLKI;
public CopyTargetSpellEffect() {
- super(Outcome.Copy);
+ this(false);
}
public CopyTargetSpellEffect(boolean useLKI) {
+ this(false, useLKI);
+ }
+
+ public CopyTargetSpellEffect(boolean useController, boolean useLKI) {
super(Outcome.Copy);
+ this.useController = useController;
this.useLKI = useLKI;
}
public CopyTargetSpellEffect(final CopyTargetSpellEffect effect) {
super(effect);
this.useLKI = effect.useLKI;
+ this.useController = effect.useController;
}
@Override
@@ -71,7 +78,7 @@ public class CopyTargetSpellEffect extends OneShotEffect {
spell = (Spell) game.getLastKnownInformation(targetPointer.getFirst(game, source), Zone.STACK);
}
if (spell != null) {
- StackObject newStackObject = spell.createCopyOnStack(game, source, source.getControllerId(), true);
+ StackObject newStackObject = spell.createCopyOnStack(game, source, useController ? spell.getControllerId() : source.getControllerId(), true);
Player player = game.getPlayer(source.getControllerId());
if (player != null && newStackObject != null && newStackObject instanceof Spell) {
String activateMessage = ((Spell) newStackObject).getActivatedMessage(game);
diff --git a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java
index 6bb2ce18c58..50435d05c79 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java
@@ -81,19 +81,7 @@ public class CreateTokenCopyTargetEffect extends OneShotEffect {
}
public CreateTokenCopyTargetEffect() {
- super(Outcome.PutCreatureInPlay);
- this.playerId = null;
- this.additionalCardType = null;
- this.addedTokenPermanents = new ArrayList<>();
- this.number = 1;
- this.additionalSubType = null;
- this.onlySubType = null;
- this.attackedPlayer = null;
- this.tokenPower = Integer.MIN_VALUE;
- this.tokenToughness = Integer.MIN_VALUE;
- this.gainsFlying = false;
- this.becomesArtifact = false;
- this.color = null;
+ this((UUID) null);
}
public CreateTokenCopyTargetEffect(UUID playerId) {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/DoUnlessTargetPlayerOrTargetsControllerPaysEffect.java b/Mage/src/main/java/mage/abilities/effects/common/DoUnlessTargetPlayerOrTargetsControllerPaysEffect.java
index 47f064ea6fb..7c820143efb 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/DoUnlessTargetPlayerOrTargetsControllerPaysEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/DoUnlessTargetPlayerOrTargetsControllerPaysEffect.java
@@ -103,7 +103,7 @@ public class DoUnlessTargetPlayerOrTargetsControllerPaysEffect extends OneShotEf
}
if (targetController != null) {
MageObject sourceObject = game.getObject(source.getSourceId());
- if (targetController != null && sourceObject != null) {
+ if (sourceObject != null) {
Cost costToPay;
if (cost != null) {
costToPay = cost.copy();
@@ -120,7 +120,7 @@ public class DoUnlessTargetPlayerOrTargetsControllerPaysEffect extends OneShotEf
message = CardUtil.replaceSourceName(message, sourceObject.getName());
boolean result = true;
boolean doEffect = true;
-
+
// check if targetController is willing to pay
if (costToPay.canPay(source, source.getSourceId(), targetController.getId(), game) && targetController.chooseUse(Outcome.Detriment, message, source, game)) {
costToPay.clearPaid();
@@ -128,10 +128,10 @@ public class DoUnlessTargetPlayerOrTargetsControllerPaysEffect extends OneShotEf
if (!game.isSimulation()) {
game.informPlayers(targetController.getLogName() + " pays the cost to prevent the effect");
}
- doEffect = false;
+ doEffect = false;
}
}
-
+
// do the effects if not paid
if (doEffect) {
for (Effect effect : executingEffects) {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/DrawCardTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/DrawCardTargetEffect.java
index 0068c5a7015..ca91d449974 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/DrawCardTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/DrawCardTargetEffect.java
@@ -115,7 +115,7 @@ public class DrawCardTargetEffect extends OneShotEffect {
} else {
target = mode.getTargets().get(0);
}
- sb.append("Target ").append(target.getTargetName());
+ sb.append("target ").append(target.getTargetName());
} else {
sb.append("that player");
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/FlipUntilLoseEffect.java b/Mage/src/main/java/mage/abilities/effects/common/FlipUntilLoseEffect.java
new file mode 100644
index 00000000000..f4a65a3b0e7
--- /dev/null
+++ b/Mage/src/main/java/mage/abilities/effects/common/FlipUntilLoseEffect.java
@@ -0,0 +1,68 @@
+/*
+ * 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.abilities.effects.common;
+
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.constants.Outcome;
+import mage.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author TheElk801
+ */
+public class FlipUntilLoseEffect extends OneShotEffect {
+
+ public FlipUntilLoseEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "flip a coin until you lose a flip";
+ }
+
+ public FlipUntilLoseEffect(final FlipUntilLoseEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public FlipUntilLoseEffect copy() {
+ return new FlipUntilLoseEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getControllerId());
+ if (player == null) {
+ return false;
+ }
+ while (true) {
+ if (!player.flipCoin(game)) {
+ return true;
+ }
+ }
+ }
+}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/HideawayPlayEffect.java b/Mage/src/main/java/mage/abilities/effects/common/HideawayPlayEffect.java
index 8fed10126d3..94a428f49b4 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/HideawayPlayEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/HideawayPlayEffect.java
@@ -27,6 +27,8 @@
*/
package mage.abilities.effects.common;
+import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
@@ -36,8 +38,6 @@ import mage.game.Game;
import mage.players.Player;
import mage.util.CardUtil;
-import java.util.UUID;
-
/**
* @author LevelX2
*
@@ -82,7 +82,7 @@ public class HideawayPlayEffect extends OneShotEffect {
}
}
- if (!controller.playCard(card, game, true, true)) {
+ if (!controller.playCard(card, game, true, true, new MageObjectReference(source.getSourceObject(game), game))) {
if (card.getZoneChangeCounter(game) == zcc) {
card.setFaceDown(true, game);
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/LoseControlOnOtherPlayersControllerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LoseControlOnOtherPlayersControllerEffect.java
index 5ddf7d65e2c..ada377e8dab 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/LoseControlOnOtherPlayersControllerEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/LoseControlOnOtherPlayersControllerEffect.java
@@ -42,7 +42,7 @@ public class LoseControlOnOtherPlayersControllerEffect extends OneShotEffect {
public LoseControlOnOtherPlayersControllerEffect(String controllingPlayerName, String controlledPlayerName) {
super(Outcome.Detriment);
- staticText = controlledPlayerName + " lost control over " + controlledPlayerName;
+ staticText = controllingPlayerName + " lost control over " + controlledPlayerName;
}
public LoseControlOnOtherPlayersControllerEffect(final LoseControlOnOtherPlayersControllerEffect effect) {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/PlayTargetWithoutPayingManaEffect.java b/Mage/src/main/java/mage/abilities/effects/common/PlayTargetWithoutPayingManaEffect.java
index 08612e5e187..8b3356482d0 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/PlayTargetWithoutPayingManaEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/PlayTargetWithoutPayingManaEffect.java
@@ -24,16 +24,16 @@
* 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.abilities.effects.common;
-import mage.constants.Outcome;
-import mage.constants.Zone;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
+import mage.constants.Outcome;
+import mage.constants.Zone;
import mage.game.Game;
import mage.players.Player;
import mage.target.Target;
@@ -62,7 +62,7 @@ public class PlayTargetWithoutPayingManaEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
Card target = (Card) game.getObject(source.getFirstTarget());
if (controller != null && target != null) {
- return controller.cast(target.getSpellAbility(), game, true);
+ return controller.cast(target.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
return false;
}
@@ -74,8 +74,7 @@ public class PlayTargetWithoutPayingManaEffect extends OneShotEffect {
Target target = mode.getTargets().get(0);
if (mode.getTargets().get(0).getZone() == Zone.HAND) {
sb.append("you may put ").append(target.getTargetName()).append(" from your hand onto the battlefield");
- }
- else {
+ } else {
sb.append("you may cast target ").append(target.getTargetName()).append(" without paying its mana cost");
}
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/PutPermanentOnBattlefieldEffect.java b/Mage/src/main/java/mage/abilities/effects/common/PutCardFromHandOntoBattlefieldEffect.java
similarity index 70%
rename from Mage/src/main/java/mage/abilities/effects/common/PutPermanentOnBattlefieldEffect.java
rename to Mage/src/main/java/mage/abilities/effects/common/PutCardFromHandOntoBattlefieldEffect.java
index c6f2461b5a9..4ea64c17dc9 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/PutPermanentOnBattlefieldEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/PutCardFromHandOntoBattlefieldEffect.java
@@ -15,34 +15,41 @@ import mage.target.common.TargetCardInHand;
/**
* @author magenoxx_at_gmail.com
*/
-public class PutPermanentOnBattlefieldEffect extends OneShotEffect {
+public class PutCardFromHandOntoBattlefieldEffect extends OneShotEffect {
private final FilterCard filter;
private final boolean useTargetController;
+ private final boolean tapped;
- public PutPermanentOnBattlefieldEffect() {
+ public PutCardFromHandOntoBattlefieldEffect() {
this(new FilterPermanentCard("a permanent card"), false);
}
- public PutPermanentOnBattlefieldEffect(FilterCard filter) {
+ public PutCardFromHandOntoBattlefieldEffect(FilterCard filter) {
this(filter, false);
}
- public PutPermanentOnBattlefieldEffect(FilterCard filter, boolean useTargetController) {
+ public PutCardFromHandOntoBattlefieldEffect(FilterCard filter, boolean useTargetController) {
+ this(filter, useTargetController, false);
+ }
+
+ public PutCardFromHandOntoBattlefieldEffect(FilterCard filter, boolean useTargetController, boolean tapped) {
super(Outcome.PutCardInPlay);
this.filter = filter;
this.useTargetController = useTargetController;
+ this.tapped = tapped;
}
- public PutPermanentOnBattlefieldEffect(final PutPermanentOnBattlefieldEffect effect) {
+ public PutCardFromHandOntoBattlefieldEffect(final PutCardFromHandOntoBattlefieldEffect effect) {
super(effect);
this.filter = effect.filter.copy();
this.useTargetController = effect.useTargetController;
+ this.tapped = effect.tapped;
}
@Override
- public PutPermanentOnBattlefieldEffect copy() {
- return new PutPermanentOnBattlefieldEffect(this);
+ public PutCardFromHandOntoBattlefieldEffect copy() {
+ return new PutCardFromHandOntoBattlefieldEffect(this);
}
@Override
@@ -58,10 +65,10 @@ public class PutPermanentOnBattlefieldEffect extends OneShotEffect {
}
if (player.chooseUse(Outcome.PutCardInPlay, "Put " + filter.getMessage() + " from your hand onto the battlefield?", source, game)) {
TargetCardInHand target = new TargetCardInHand(filter);
- if (player.choose(Outcome.PutCreatureInPlay, target, source.getSourceId(), game)) {
+ if (player.choose(Outcome.PutCardInPlay, target, source.getSourceId(), game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
- return player.moveCards(card, Zone.BATTLEFIELD, source, game);
+ return player.moveCards(card, Zone.BATTLEFIELD, source, game, tapped, false, false, null);
}
}
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlAttachedEffect.java
index 18c5bad257a..09545bd4cc0 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlAttachedEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlAttachedEffect.java
@@ -1,16 +1,16 @@
/*
* 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
@@ -20,22 +20,21 @@
* 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.abilities.effects.common;
-import mage.constants.Outcome;
-import mage.constants.Zone;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
+import mage.constants.Outcome;
+import mage.constants.Zone;
import mage.game.Game;
-
-
import mage.game.permanent.Permanent;
+import mage.players.Player;
/**
*
@@ -59,12 +58,15 @@ public class ReturnToBattlefieldUnderOwnerControlAttachedEffect extends OneShotE
@Override
public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
Object object = getValue("attachedTo");
if (object != null && object instanceof Permanent) {
Card card = game.getCard(((Permanent) object).getId());
if (card != null) {
- Zone currentZone = game.getState().getZone(card.getId());
- if (card.putOntoBattlefield(game, currentZone, source.getSourceId(), card.getOwnerId())) {
+ if (controller.moveCards(card, Zone.BATTLEFIELD, source, game, false, false, true, null)) {
return true;
}
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlSourceEffect.java
index 07048c0624d..e2383ead403 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlSourceEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlSourceEffect.java
@@ -1,16 +1,16 @@
/*
* 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
@@ -20,22 +20,22 @@
* 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.abilities.effects.common;
import java.util.UUID;
-import mage.constants.Outcome;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
+import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.ExileZone;
import mage.game.Game;
+import mage.players.Player;
import mage.util.CardUtil;
/**
@@ -60,11 +60,16 @@ public class ReturnToBattlefieldUnderYourControlSourceEffect extends OneShotEffe
@Override
public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
UUID exileZoneId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter());
ExileZone exileZone = game.getExile().getExileZone(exileZoneId);
if (exileZone != null && exileZone.contains(source.getSourceId())) {
- Card card = game.getCard(source.getSourceId());
- if (card != null && card.putOntoBattlefield(game, Zone.EXILED, source.getSourceId(), source.getControllerId())) {
+ Card card = game.getCard(source.getSourceId());
+ if (card != null
+ && controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
return true;
}
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/ShuffleHandGraveyardAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ShuffleHandGraveyardAllEffect.java
new file mode 100644
index 00000000000..e764cc92166
--- /dev/null
+++ b/Mage/src/main/java/mage/abilities/effects/common/ShuffleHandGraveyardAllEffect.java
@@ -0,0 +1,45 @@
+package mage.abilities.effects.common;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author BetaSteward_at_googlemail.com
+ */
+public class ShuffleHandGraveyardAllEffect extends OneShotEffect {
+
+ public ShuffleHandGraveyardAllEffect() {
+ super(Outcome.Neutral);
+ staticText = "each player shuffles their hand and graveyard into their library";
+ }
+
+ public ShuffleHandGraveyardAllEffect(final ShuffleHandGraveyardAllEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ player.moveCards(player.getHand(), Zone.LIBRARY, source, game);
+ player.moveCards(player.getGraveyard(), Zone.LIBRARY, source, game);
+ player.shuffleLibrary(source, game);
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public ShuffleHandGraveyardAllEffect copy() {
+ return new ShuffleHandGraveyardAllEffect(this);
+ }
+
+}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/CommanderManaReplacementEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/CommanderManaReplacementEffect.java
index 67302439642..8737704aec9 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/continuous/CommanderManaReplacementEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/CommanderManaReplacementEffect.java
@@ -50,6 +50,7 @@ import mage.game.events.ManaEvent;
* Commander rule #4 was removed Jan. 18, 2016
*
*/
+@Deprecated
public class CommanderManaReplacementEffect extends ReplacementEffectImpl {
private final UUID playerId;
diff --git a/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java b/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java
index c389ece434b..43c43b1cf18 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java
@@ -27,6 +27,7 @@
*/
package mage.abilities.effects.common.cost;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
@@ -101,7 +102,7 @@ public class CastWithoutPayingManaCostEffect extends OneShotEffect {
}
}
if (cardToCast != null) {
- controller.cast(cardToCast.getSpellAbility(), game, true);
+ controller.cast(cardToCast.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
return true;
diff --git a/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostReductionAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostReductionAllEffect.java
index 3f079002389..dcd2bea04d2 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostReductionAllEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostReductionAllEffect.java
@@ -29,6 +29,7 @@ package mage.abilities.effects.common.cost;
import java.util.LinkedHashSet;
import java.util.Set;
+import java.util.UUID;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.ActivatedAbility;
@@ -54,6 +55,7 @@ public class SpellsCostReductionAllEffect extends CostModificationEffectImpl {
private int amount;
private final boolean upTo;
private boolean onlyControlled;
+ private UUID controllerId;
public SpellsCostReductionAllEffect(int amount) {
this(new FilterCard("Spells"), amount);
@@ -74,6 +76,7 @@ public class SpellsCostReductionAllEffect extends CostModificationEffectImpl {
this.upTo = upTo;
this.onlyControlled = onlyControlled;
this.staticText = filter.getMessage() + " cost " + (upTo ? "up to " : "") + '{' + amount + "} less to cast";
+ this.controllerId = null;
}
protected SpellsCostReductionAllEffect(final SpellsCostReductionAllEffect effect) {
@@ -82,6 +85,7 @@ public class SpellsCostReductionAllEffect extends CostModificationEffectImpl {
this.amount = effect.amount;
this.upTo = effect.upTo;
this.onlyControlled = effect.onlyControlled;
+ this.controllerId = effect.controllerId;
}
@Override
@@ -145,6 +149,9 @@ public class SpellsCostReductionAllEffect extends CostModificationEffectImpl {
if (onlyControlled && !abilityToModify.getControllerId().equals(source.getControllerId())) {
return false;
}
+ if (controllerId != null && !abilityToModify.getControllerId().equals(controllerId)) {
+ return false;
+ }
if (abilityToModify instanceof SpellAbility) {
Spell spell = (Spell) game.getStack().getStackObject(abilityToModify.getId());
if (spell != null) {
@@ -158,6 +165,10 @@ public class SpellsCostReductionAllEffect extends CostModificationEffectImpl {
return false;
}
+ public void setControllerId(UUID controllerId) {
+ this.controllerId = controllerId;
+ }
+
@Override
public SpellsCostReductionAllEffect copy() {
return new SpellsCostReductionAllEffect(this);
diff --git a/Mage/src/main/java/mage/abilities/effects/mana/AddConditionalManaOfAnyColorEffect.java b/Mage/src/main/java/mage/abilities/effects/mana/AddConditionalManaOfAnyColorEffect.java
index 8cdb5f50276..359171a0ab7 100644
--- a/Mage/src/main/java/mage/abilities/effects/mana/AddConditionalManaOfAnyColorEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/mana/AddConditionalManaOfAnyColorEffect.java
@@ -38,12 +38,15 @@ import mage.choices.ChoiceColor;
import mage.game.Game;
import mage.players.Player;
import mage.util.CardUtil;
+import org.apache.log4j.Logger;
/**
* @author noxx
*/
public class AddConditionalManaOfAnyColorEffect extends ManaEffect {
+ private static final Logger logger = Logger.getLogger(AddConditionalManaOfAnyColorEffect.class);
+
private final DynamicValue amount;
private final ConditionalManaBuilder manaBuilder;
private final boolean oneChoice;
@@ -87,8 +90,13 @@ public class AddConditionalManaOfAnyColorEffect extends ManaEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
- checkToFirePossibleEvents(getMana(game, source), game, source);
- controller.getManaPool().addMana(getMana(game, source), game, source);
+ Mana mana = getMana(game, source);
+ if (mana != null) {
+ checkToFirePossibleEvents(mana, game, source);
+ controller.getManaPool().addMana(mana, game, source);
+ } else {
+ logger.error("There was no mana created: " + source.getSourceObject(game).getName() + " - Ability: " + source.getRule());
+ }
return true;
}
return false;
diff --git a/Mage/src/main/java/mage/abilities/effects/mana/AddManaAnyColorAttachedControllerEffect.java b/Mage/src/main/java/mage/abilities/effects/mana/AddManaAnyColorAttachedControllerEffect.java
index 2fdf2db8076..52eb55bf843 100644
--- a/Mage/src/main/java/mage/abilities/effects/mana/AddManaAnyColorAttachedControllerEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/mana/AddManaAnyColorAttachedControllerEffect.java
@@ -45,7 +45,7 @@ public class AddManaAnyColorAttachedControllerEffect extends ManaEffect {
public AddManaAnyColorAttachedControllerEffect() {
super();
- staticText = "its controller adds one mana of any color to their mana pool";
+ staticText = "its controller adds one mana of any color";
}
public AddManaAnyColorAttachedControllerEffect(final AddManaAnyColorAttachedControllerEffect effect) {
diff --git a/Mage/src/main/java/mage/abilities/effects/mana/AddManaOfAnyTypeProducedEffect.java b/Mage/src/main/java/mage/abilities/effects/mana/AddManaOfAnyTypeProducedEffect.java
index 2885f791b4c..21424b92220 100644
--- a/Mage/src/main/java/mage/abilities/effects/mana/AddManaOfAnyTypeProducedEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/mana/AddManaOfAnyTypeProducedEffect.java
@@ -44,7 +44,7 @@ public class AddManaOfAnyTypeProducedEffect extends ManaEffect {
public AddManaOfAnyTypeProducedEffect() {
super();
- staticText = "that player adds one mana to their mana pool of any type that land produced";
+ staticText = "that player adds one mana of any type that land produced";
}
public AddManaOfAnyTypeProducedEffect(final AddManaOfAnyTypeProducedEffect effect) {
diff --git a/Mage/src/main/java/mage/abilities/effects/mana/AddManaToManaPoolTargetControllerEffect.java b/Mage/src/main/java/mage/abilities/effects/mana/AddManaToManaPoolTargetControllerEffect.java
index 44bfec584d2..0770c1f94d6 100644
--- a/Mage/src/main/java/mage/abilities/effects/mana/AddManaToManaPoolTargetControllerEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/mana/AddManaToManaPoolTargetControllerEffect.java
@@ -38,7 +38,7 @@ public class AddManaToManaPoolTargetControllerEffect extends ManaEffect {
super();
this.mana = mana;
this.emptyOnlyOnTurnsEnd = emptyOnTurnsEnd;
- this.staticText = (textManaPoolOwner.equals("their") ? "that player adds " : "add ") + mana.toString() + " to " + textManaPoolOwner + " mana pool";
+ this.staticText = (textManaPoolOwner.equals("their") ? "that player adds " : "add ") + mana.toString();
}
public AddManaToManaPoolTargetControllerEffect(final AddManaToManaPoolTargetControllerEffect effect) {
diff --git a/Mage/src/main/java/mage/abilities/keyword/AssistAbility.java b/Mage/src/main/java/mage/abilities/keyword/AssistAbility.java
new file mode 100644
index 00000000000..f1ebade5524
--- /dev/null
+++ b/Mage/src/main/java/mage/abilities/keyword/AssistAbility.java
@@ -0,0 +1,159 @@
+/*
+ * 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.abilities.keyword;
+
+import mage.Mana;
+import mage.abilities.Ability;
+import mage.abilities.SpecialAction;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.Cost;
+import mage.abilities.costs.mana.AlternateManaPaymentAbility;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.costs.mana.ManaCost;
+import mage.abilities.effects.OneShotEffect;
+import mage.constants.AbilityType;
+import mage.constants.ManaType;
+import mage.constants.Outcome;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.FilterPlayer;
+import mage.filter.predicate.other.PlayerPredicate;
+import mage.game.Game;
+import mage.players.ManaPool;
+import mage.players.Player;
+import mage.target.Target;
+import mage.target.TargetPlayer;
+
+/*
+ * @author emerald000
+ */
+public class AssistAbility extends SimpleStaticAbility implements AlternateManaPaymentAbility {
+
+ private static final FilterPlayer filter = new FilterPlayer("another player");
+
+ static {
+ filter.add(new PlayerPredicate(TargetController.NOT_YOU));
+ }
+
+ public AssistAbility() {
+ super(Zone.STACK, null);
+ this.setRuleAtTheTop(true);
+ }
+
+ public AssistAbility(final AssistAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public AssistAbility copy() {
+ return new AssistAbility(this);
+ }
+
+ @Override
+ public void addSpecialAction(Ability source, Game game, ManaCost unpaid) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null
+ && source.getAbilityType() == AbilityType.SPELL
+ && unpaid.getMana().getGeneric() >= 1
+ && game.getState().getValue(source.getSourceId().toString() + game.getState().getZoneChangeCounter(source.getSourceId())) == null) {
+ SpecialAction specialAction = new AssistSpecialAction(unpaid);
+ specialAction.setControllerId(source.getControllerId());
+ specialAction.setSourceId(source.getSourceId());
+ Target target = new TargetPlayer(1, 1, true, filter);
+ specialAction.addTarget(target);
+ if (specialAction.canActivate(source.getControllerId(), game).canActivate()) {
+ game.getState().getSpecialActions().add(specialAction);
+ }
+ }
+ }
+
+ @Override
+ public String getRule() {
+ return "Assist (Another player can help pay the generic mana of this spell's cost.)";
+ }
+}
+
+class AssistSpecialAction extends SpecialAction {
+
+ AssistSpecialAction(ManaCost unpaid) {
+ super(Zone.ALL, true);
+ setRuleVisible(false);
+ this.addEffect(new AssistEffect(unpaid));
+ }
+
+ AssistSpecialAction(final AssistSpecialAction ability) {
+ super(ability);
+ }
+
+ @Override
+ public AssistSpecialAction copy() {
+ return new AssistSpecialAction(this);
+ }
+}
+
+class AssistEffect extends OneShotEffect {
+
+ private final ManaCost unpaid;
+
+ AssistEffect(ManaCost unpaid) {
+ super(Outcome.Benefit);
+ this.unpaid = unpaid;
+ this.staticText = "Assist (Another player can help pay the generic mana of this spell's cost.)";
+ }
+
+ AssistEffect(final AssistEffect effect) {
+ super(effect);
+ this.unpaid = effect.unpaid;
+ }
+
+ @Override
+ public AssistEffect copy() {
+ return new AssistEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ Player targetPlayer = game.getPlayer(this.getTargetPointer().getFirst(game, source));
+ if (controller != null && targetPlayer != null) {
+ int amountToPay = targetPlayer.announceXMana(0, unpaid.getMana().getGeneric(), "How much mana to pay?", game, source);
+ if (amountToPay > 0) {
+ Cost cost = new GenericManaCost(amountToPay);
+ if (cost.pay(source, game, source.getSourceId(), targetPlayer.getId(), false)) {
+ ManaPool manaPool = controller.getManaPool();
+ manaPool.addMana(Mana.ColorlessMana(amountToPay), game, source);
+ manaPool.unlockManaType(ManaType.COLORLESS);
+ game.informPlayers(targetPlayer.getLogName() + " paid " + amountToPay + " mana.");
+ game.getState().setValue(source.getSourceId().toString() + game.getState().getZoneChangeCounter(source.getSourceId()), true);
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java b/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java
index b662a749115..655ccff0aa4 100644
--- a/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java
@@ -103,11 +103,11 @@ class AuraSwapEffect extends OneShotEffect {
Card auraInHand = game.getCard(target.getFirstTarget());
if (auraInHand != null) {
game.getState().setValue("attachTo:" + auraInHand.getId(), enchantedPermanent);
- auraInHand.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), controller.getId());
+ controller.moveCards(auraInHand, Zone.BATTLEFIELD, source, game);
enchantedPermanent.addAttachment(auraInHand.getId(), game);
game.informPlayers(controller.getLogName() + " put " + auraInHand.getLogName() + " on the battlefield attached to " + enchantedPermanent.getLogName() + '.');
enchantedPermanent.removeAttachment(auraSourcePermanent.getId(), game);
- return controller.moveCards(game.getCard(source.getSourceId()), Zone.HAND, source, game);
+ return controller.moveCards(auraSourcePermanent, Zone.HAND, source, game);
}
}
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/BasicLandcyclingAbility.java b/Mage/src/main/java/mage/abilities/keyword/BasicLandcyclingAbility.java
index 8565a5a42a2..3066bacda77 100644
--- a/Mage/src/main/java/mage/abilities/keyword/BasicLandcyclingAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/BasicLandcyclingAbility.java
@@ -39,7 +39,7 @@ public class BasicLandcyclingAbility extends CyclingAbility{
private static final String text = "Basic landcycling";
public BasicLandcyclingAbility(ManaCosts costs) {
- super(costs, StaticFilters.FILTER_BASIC_LAND_CARD, text);
+ super(costs, StaticFilters.FILTER_CARD_BASIC_LAND, text);
}
public BasicLandcyclingAbility(final BasicLandcyclingAbility ability) {
diff --git a/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java b/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java
index 4c59a830136..25044b2db97 100644
--- a/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java
@@ -27,6 +27,7 @@
*/
package mage.abilities.keyword;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.OneShotEffect;
@@ -124,7 +125,7 @@ class CascadeEffect extends OneShotEffect {
if (card != null) {
if (controller.chooseUse(outcome, "Use cascade effect on " + card.getLogName() + '?', source, game)) {
- controller.cast(card.getSpellAbility(), game, true);
+ controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
}
}
// Move the remaining cards to the buttom of the library in a random order
diff --git a/Mage/src/main/java/mage/abilities/keyword/ConvokeAbility.java b/Mage/src/main/java/mage/abilities/keyword/ConvokeAbility.java
index 2f0b744d3a2..6cf69788585 100644
--- a/Mage/src/main/java/mage/abilities/keyword/ConvokeAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/ConvokeAbility.java
@@ -145,7 +145,7 @@ public class ConvokeAbility extends SimpleStaticAbility implements AlternateMana
Target target = new TargetControlledCreaturePermanent(1, 1, filter, true);
target.setTargetName("creature to convoke");
specialAction.addTarget(target);
- if (specialAction.canActivate(source.getControllerId(), game)) {
+ if (specialAction.canActivate(source.getControllerId(), game).canActivate()) {
game.getState().getSpecialActions().add(specialAction);
}
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/DelveAbility.java b/Mage/src/main/java/mage/abilities/keyword/DelveAbility.java
index 97c03922d16..59071c34714 100644
--- a/Mage/src/main/java/mage/abilities/keyword/DelveAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/DelveAbility.java
@@ -110,7 +110,7 @@ public class DelveAbility extends SimpleStaticAbility implements AlternateManaPa
}
specialAction.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(
0, Math.min(controller.getGraveyard().size(), unpaidAmount), new FilterCard(), true)));
- if (specialAction.canActivate(source.getControllerId(), game)) {
+ if (specialAction.canActivate(source.getControllerId(), game).canActivate()) {
game.getState().getSpecialActions().add(specialAction);
}
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/EmergeAbility.java b/Mage/src/main/java/mage/abilities/keyword/EmergeAbility.java
index ce1c24afdd2..8dea409e830 100644
--- a/Mage/src/main/java/mage/abilities/keyword/EmergeAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/EmergeAbility.java
@@ -1,140 +1,140 @@
-/*
- * 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.abilities.keyword;
-
-import java.util.UUID;
-import mage.Mana;
-import mage.abilities.SpellAbility;
-import mage.abilities.costs.common.SacrificeTargetCost;
-import mage.abilities.costs.mana.ManaCost;
-import mage.abilities.costs.mana.ManaCosts;
-import mage.abilities.mana.ManaOptions;
-import mage.cards.Card;
-import mage.constants.Outcome;
-import mage.constants.SpellAbilityType;
-import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.predicate.mageobject.CardIdPredicate;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.TargetPermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
-import mage.util.CardUtil;
-
-/**
- *
- * @author emerald000
- */
-public class EmergeAbility extends SpellAbility {
-
- private final ManaCosts emergeCost;
-
- public EmergeAbility(Card card, ManaCosts emergeCost) {
- super(emergeCost, card.getName() + " with emerge", Zone.HAND, SpellAbilityType.BASE_ALTERNATE);
- this.getCosts().addAll(card.getSpellAbility().getCosts().copy());
- this.getEffects().addAll(card.getSpellAbility().getEffects().copy());
- this.getTargets().addAll(card.getSpellAbility().getTargets().copy());
- this.timing = card.getSpellAbility().getTiming();
- this.setRuleAtTheTop(true);
- this.emergeCost = emergeCost.copy();
- }
-
- public EmergeAbility(final EmergeAbility ability) {
- super(ability);
- this.emergeCost = ability.emergeCost.copy();
- }
-
- @Override
- public boolean canActivate(UUID playerId, Game game) {
- if (super.canActivate(playerId, game)) {
- Player controller = game.getPlayer(this.getControllerId());
- if (controller != null) {
- for (Permanent creature : game.getBattlefield().getActivePermanents(new FilterControlledCreaturePermanent(), this.getControllerId(), this.getSourceId(), game)) {
- ManaCost costToPay = CardUtil.reduceCost(emergeCost.copy(), creature.getConvertedManaCost());
- if (costToPay.canPay(this, this.getSourceId(), this.getControllerId(), game)) {
- return true;
- }
- }
- }
- }
- return false;
- }
-
- @Override
- public ManaOptions getMinimumCostToActivate(UUID playerId, Game game) {
- int maxCMC = 0;
- for (Permanent creature : game.getBattlefield().getActivePermanents(new FilterControlledCreaturePermanent(), playerId, this.getSourceId(), game)) {
- int cmc = creature.getConvertedManaCost();
- if (cmc > maxCMC) {
- maxCMC = cmc;
- }
- }
- ManaOptions manaOptions = super.getMinimumCostToActivate(playerId, game);
- for (Mana mana : manaOptions) {
- if (mana.getGeneric() > maxCMC) {
- mana.setGeneric(mana.getGeneric() - maxCMC);
- } else {
- mana.setGeneric(0);
- }
- }
- return manaOptions;
- }
-
- @Override
- public boolean activate(Game game, boolean noMana) {
- Player controller = game.getPlayer(this.getControllerId());
- if (controller != null) {
- TargetPermanent target = new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent("creature to sacrifice for emerge"));
- if (controller.choose(Outcome.Sacrifice, target, this.getSourceId(), game)) {
- Permanent creature = game.getPermanent(target.getFirstTarget());
- CardUtil.reduceCost(this, creature.getConvertedManaCost());
- FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(creature.getLogName());
- filter.add(new CardIdPredicate(creature.getId()));
- this.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(filter)));
- return super.activate(game, false);
- }
- }
- return false;
- }
-
- @Override
- public EmergeAbility copy() {
- return new EmergeAbility(this);
- }
-
- @Override
- public String getRule(boolean all) {
- return getRule();
- }
-
- @Override
- public String getRule() {
- return "Emerge " + emergeCost.getText() + " (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.)";
- }
-}
+/*
+ * 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.abilities.keyword;
+
+import java.util.UUID;
+import mage.Mana;
+import mage.abilities.SpellAbility;
+import mage.abilities.costs.common.SacrificeTargetCost;
+import mage.abilities.costs.mana.ManaCost;
+import mage.abilities.costs.mana.ManaCosts;
+import mage.abilities.mana.ManaOptions;
+import mage.cards.Card;
+import mage.constants.Outcome;
+import mage.constants.SpellAbilityType;
+import mage.constants.Zone;
+import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.predicate.mageobject.CardIdPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetControlledCreaturePermanent;
+import mage.util.CardUtil;
+
+/**
+ *
+ * @author emerald000
+ */
+public class EmergeAbility extends SpellAbility {
+
+ private final ManaCosts emergeCost;
+
+ public EmergeAbility(Card card, ManaCosts emergeCost) {
+ super(emergeCost, card.getName() + " with emerge", Zone.HAND, SpellAbilityType.BASE_ALTERNATE);
+ this.getCosts().addAll(card.getSpellAbility().getCosts().copy());
+ this.getEffects().addAll(card.getSpellAbility().getEffects().copy());
+ this.getTargets().addAll(card.getSpellAbility().getTargets().copy());
+ this.timing = card.getSpellAbility().getTiming();
+ this.setRuleAtTheTop(true);
+ this.emergeCost = emergeCost.copy();
+ }
+
+ public EmergeAbility(final EmergeAbility ability) {
+ super(ability);
+ this.emergeCost = ability.emergeCost.copy();
+ }
+
+ @Override
+ public ActivationStatus canActivate(UUID playerId, Game game) {
+ if (super.canActivate(playerId, game).canActivate()) {
+ Player controller = game.getPlayer(this.getControllerId());
+ if (controller != null) {
+ for (Permanent creature : game.getBattlefield().getActivePermanents(new FilterControlledCreaturePermanent(), this.getControllerId(), this.getSourceId(), game)) {
+ ManaCost costToPay = CardUtil.reduceCost(emergeCost.copy(), creature.getConvertedManaCost());
+ if (costToPay.canPay(this, this.getSourceId(), this.getControllerId(), game)) {
+ return ActivationStatus.getTrue();
+ }
+ }
+ }
+ }
+ return ActivationStatus.getFalse();
+ }
+
+ @Override
+ public ManaOptions getMinimumCostToActivate(UUID playerId, Game game) {
+ int maxCMC = 0;
+ for (Permanent creature : game.getBattlefield().getActivePermanents(new FilterControlledCreaturePermanent(), playerId, this.getSourceId(), game)) {
+ int cmc = creature.getConvertedManaCost();
+ if (cmc > maxCMC) {
+ maxCMC = cmc;
+ }
+ }
+ ManaOptions manaOptions = super.getMinimumCostToActivate(playerId, game);
+ for (Mana mana : manaOptions) {
+ if (mana.getGeneric() > maxCMC) {
+ mana.setGeneric(mana.getGeneric() - maxCMC);
+ } else {
+ mana.setGeneric(0);
+ }
+ }
+ return manaOptions;
+ }
+
+ @Override
+ public boolean activate(Game game, boolean noMana) {
+ Player controller = game.getPlayer(this.getControllerId());
+ if (controller != null) {
+ TargetPermanent target = new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent("creature to sacrifice for emerge"));
+ if (controller.choose(Outcome.Sacrifice, target, this.getSourceId(), game)) {
+ Permanent creature = game.getPermanent(target.getFirstTarget());
+ CardUtil.reduceCost(this, creature.getConvertedManaCost());
+ FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(creature.getLogName());
+ filter.add(new CardIdPredicate(creature.getId()));
+ this.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(filter)));
+ return super.activate(game, false);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public EmergeAbility copy() {
+ return new EmergeAbility(this);
+ }
+
+ @Override
+ public String getRule(boolean all) {
+ return getRule();
+ }
+
+ @Override
+ public String getRule() {
+ return "Emerge " + emergeCost.getText() + " (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.)";
+ }
+}
diff --git a/Mage/src/main/java/mage/abilities/keyword/EquipAbility.java b/Mage/src/main/java/mage/abilities/keyword/EquipAbility.java
index f6ae708cf97..8fc907d4eb8 100644
--- a/Mage/src/main/java/mage/abilities/keyword/EquipAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/EquipAbility.java
@@ -27,6 +27,7 @@
*/
package mage.abilities.keyword;
+import java.util.UUID;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.costs.Cost;
import mage.abilities.effects.common.AttachEffect;
@@ -39,8 +40,6 @@ import mage.game.permanent.Permanent;
import mage.target.Target;
import mage.target.common.TargetControlledCreaturePermanent;
-import java.util.UUID;
-
/**
* @author BetaSteward_at_googlemail.com
*/
@@ -57,14 +56,15 @@ public class EquipAbility extends ActivatedAbilityImpl {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
- if (super.canActivate(playerId, game)) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
+ ActivationStatus activationStatus = super.canActivate(playerId, game);
+ if (activationStatus.canActivate()) {
Permanent permanent = game.getPermanent(sourceId);
if (permanent != null && permanent.hasSubtype(SubType.EQUIPMENT, game)) {
- return true;
+ return activationStatus;
}
}
- return false;
+ return activationStatus;
}
public EquipAbility(final EquipAbility ability) {
diff --git a/Mage/src/main/java/mage/abilities/keyword/EquipLegendaryAbility.java b/Mage/src/main/java/mage/abilities/keyword/EquipLegendaryAbility.java
index 585a3577131..8ea4c9ef442 100644
--- a/Mage/src/main/java/mage/abilities/keyword/EquipLegendaryAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/EquipLegendaryAbility.java
@@ -1,96 +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.abilities.keyword;
-
-import mage.abilities.ActivatedAbilityImpl;
-import mage.abilities.costs.Cost;
-import mage.abilities.effects.common.AttachEffect;
-import mage.constants.Outcome;
-import mage.constants.SubType;
-import mage.constants.TimingRule;
-import mage.constants.Zone;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.target.Target;
-import mage.target.common.TargetControlledCreaturePermanent;
-
-import java.util.UUID;
-import mage.constants.SuperType;
-import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.predicate.mageobject.SupertypePredicate;
-
-/**
- * @author Rystan
- */
-public class EquipLegendaryAbility extends ActivatedAbilityImpl {
-
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("legendary creature you control");
-
- static {
- filter.add(new SupertypePredicate(SuperType.LEGENDARY));
- }
-
- public EquipLegendaryAbility(Outcome outcome, Cost cost) {
- this(outcome, cost, new TargetControlledCreaturePermanent(filter));
- }
-
- public EquipLegendaryAbility(Outcome outcome, Cost cost, Target target) {
- super(Zone.BATTLEFIELD, new AttachEffect(outcome, "Equip"), cost);
- this.addTarget(target);
- this.timing = TimingRule.SORCERY;
- }
-
- @Override
- public boolean canActivate(UUID playerId, Game game) {
- if (super.canActivate(playerId, game)) {
- Permanent permanent = game.getPermanent(sourceId);
- if (permanent != null && permanent.hasSubtype(SubType.EQUIPMENT, game)) {
- return true;
- }
- }
- return false;
- }
-
- public EquipLegendaryAbility(final EquipLegendaryAbility ability) {
- super(ability);
- }
-
- @Override
- public EquipLegendaryAbility copy() {
- return new EquipLegendaryAbility(this);
- }
-
- @Override
- public String getRule() {
- return "Equip legendary creature " + costs.getText() +
- manaCosts.getText() + " (" + manaCosts.getText() +
- ": Attach to target legendary creature you control. Equip only as a sorcery.)";
- }
-
-}
+/*
+ * 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.abilities.keyword;
+
+import java.util.UUID;
+import mage.abilities.ActivatedAbilityImpl;
+import mage.abilities.costs.Cost;
+import mage.abilities.effects.common.AttachEffect;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.constants.TimingRule;
+import mage.constants.Zone;
+import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.predicate.mageobject.SupertypePredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.target.Target;
+import mage.target.common.TargetControlledCreaturePermanent;
+
+/**
+ * @author Rystan
+ */
+public class EquipLegendaryAbility extends ActivatedAbilityImpl {
+
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("legendary creature you control");
+
+ static {
+ filter.add(new SupertypePredicate(SuperType.LEGENDARY));
+ }
+
+ public EquipLegendaryAbility(Outcome outcome, Cost cost) {
+ this(outcome, cost, new TargetControlledCreaturePermanent(filter));
+ }
+
+ public EquipLegendaryAbility(Outcome outcome, Cost cost, Target target) {
+ super(Zone.BATTLEFIELD, new AttachEffect(outcome, "Equip"), cost);
+ this.addTarget(target);
+ this.timing = TimingRule.SORCERY;
+ }
+
+ @Override
+ public ActivationStatus canActivate(UUID playerId, Game game) {
+ ActivationStatus activationStatus = super.canActivate(playerId, game);
+ if (activationStatus.canActivate()) {
+ Permanent permanent = game.getPermanent(sourceId);
+ if (permanent != null && permanent.hasSubtype(SubType.EQUIPMENT, game)) {
+ return activationStatus;
+ }
+ }
+ return activationStatus;
+ }
+
+ public EquipLegendaryAbility(final EquipLegendaryAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public EquipLegendaryAbility copy() {
+ return new EquipLegendaryAbility(this);
+ }
+
+ @Override
+ public String getRule() {
+ return "Equip legendary creature " + costs.getText()
+ + manaCosts.getText() + " (" + manaCosts.getText()
+ + ": Attach to target legendary creature you control. Equip only as a sorcery.)";
+ }
+
+}
diff --git a/Mage/src/main/java/mage/abilities/keyword/FlashbackAbility.java b/Mage/src/main/java/mage/abilities/keyword/FlashbackAbility.java
index 13f489dd365..f7d7fbe0697 100644
--- a/Mage/src/main/java/mage/abilities/keyword/FlashbackAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/FlashbackAbility.java
@@ -83,13 +83,14 @@ public class FlashbackAbility extends SpellAbility {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
- if (super.canActivate(playerId, game)) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
+ ActivationStatus activationStatus = super.canActivate(playerId, game);
+ if (activationStatus.canActivate()) {
Card card = game.getCard(getSourceId());
if (card != null) {
// Cards with no Mana Costs cant't be flashbacked (e.g. Ancestral Vision)
if (card.getManaCost().isEmpty()) {
- return false;
+ return ActivationStatus.getFalse();
}
// Flashback can never cast a split card by Fuse, because Fuse only works from hand
if (card.isSplitCard()) {
@@ -102,7 +103,7 @@ public class FlashbackAbility extends SpellAbility {
return card.getSpellAbility().canActivate(playerId, game);
}
}
- return false;
+ return activationStatus;
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/keyword/ForecastAbility.java b/Mage/src/main/java/mage/abilities/keyword/ForecastAbility.java
index fdbfe871ffe..2d3a2fbf2d6 100644
--- a/Mage/src/main/java/mage/abilities/keyword/ForecastAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/ForecastAbility.java
@@ -43,10 +43,10 @@ import mage.game.Game;
*
* 702.56b A forecast ability may be activated only during the upkeep step of
* the card's owner and only once each turn. The controller of the forecast
- * ability reveals the card with that ability from their hand as the
- * ability is activated. That player plays with that card revealed in their
- * hand until it leaves the player's hand or until a step or phase that isn't an
- * upkeep step begins, whichever comes first.
+ * ability reveals the card with that ability from their hand as the ability is
+ * activated. That player plays with that card revealed in their hand until it
+ * leaves the player's hand or until a step or phase that isn't an upkeep step
+ * begins, whichever comes first.
*
* @author LevelX2
*
@@ -68,11 +68,11 @@ public class ForecastAbility extends LimitedTimesPerTurnActivatedAbility {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
// May be activated only during the upkeep step of the card's owner
// Because it can only be activated from a players hand it should be ok to check here with controllerId instead of card.getOwnerId().
if (!game.getActivePlayerId().equals(controllerId) || PhaseStep.UPKEEP != game.getStep().getType()) {
- return false;
+ return ActivationStatus.getFalse();
}
return super.canActivate(playerId, game);
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/ImproviseAbility.java b/Mage/src/main/java/mage/abilities/keyword/ImproviseAbility.java
index 738537f59d1..f3a9f36d652 100644
--- a/Mage/src/main/java/mage/abilities/keyword/ImproviseAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/ImproviseAbility.java
@@ -6,7 +6,6 @@
package mage.abilities.keyword;
import java.util.UUID;
-
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.SpecialAction;
@@ -69,7 +68,7 @@ public class ImproviseAbility extends SimpleStaticAbility implements AlternateMa
Target target = new TargetControlledPermanent(1, unpaid.getMana().getGeneric(), filter, true);
target.setTargetName("artifact to Improvise");
specialAction.addTarget(target);
- if (specialAction.canActivate(source.getControllerId(), game)) {
+ if (specialAction.canActivate(source.getControllerId(), game).canActivate()) {
game.getState().getSpecialActions().add(specialAction);
}
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/KickerAbility.java b/Mage/src/main/java/mage/abilities/keyword/KickerAbility.java
index 10f5565cea7..d75c6651a0e 100644
--- a/Mage/src/main/java/mage/abilities/keyword/KickerAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/KickerAbility.java
@@ -27,6 +27,7 @@
*/
package mage.abilities.keyword;
+import java.util.*;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
import mage.abilities.StaticAbility;
@@ -41,8 +42,6 @@ import mage.constants.Zone;
import mage.game.Game;
import mage.players.Player;
-import java.util.*;
-
/**
* 20121001 702.31. Kicker 702.31a Kicker is a static ability that functions
* while the spell with kicker is on the stack. "Kicker [cost]" means "You may
@@ -134,7 +133,8 @@ public class KickerAbility extends StaticAbility implements OptionalAdditionalSo
cost.reset();
}
String key = getActivationKey(source, "", game);
- for (String activationKey : activations.keySet()) {
+ for (Iterator iterator = activations.keySet().iterator(); iterator.hasNext();) {
+ String activationKey = iterator.next();
if (activationKey.startsWith(key) && activations.get(activationKey) > 0) {
activations.put(key, 0);
}
@@ -212,10 +212,10 @@ public class KickerAbility extends StaticAbility implements OptionalAdditionalSo
&& player.chooseUse(Outcome.Benefit, "Pay " + times + kickerCost.getText(false) + " ?", ability, game)) {
this.activateKicker(kickerCost, ability, game);
if (kickerCost instanceof Costs) {
- for (Iterator itKickerCost = ((Costs) kickerCost).iterator(); itKickerCost.hasNext(); ) {
+ for (Iterator itKickerCost = ((Costs) kickerCost).iterator(); itKickerCost.hasNext();) {
Object kickerCostObject = itKickerCost.next();
if ((kickerCostObject instanceof Costs) || (kickerCostObject instanceof CostsImpl)) {
- for (@SuppressWarnings("unchecked") Iterator itDetails = ((Costs) kickerCostObject).iterator(); itDetails.hasNext(); ) {
+ for (@SuppressWarnings("unchecked") Iterator itDetails = ((Costs) kickerCostObject).iterator(); itDetails.hasNext();) {
addKickerCostsToAbility(itDetails.next(), ability, game);
}
} else {
diff --git a/Mage/src/main/java/mage/abilities/keyword/MadnessAbility.java b/Mage/src/main/java/mage/abilities/keyword/MadnessAbility.java
index 44153d7f32b..b07de0e0b0e 100644
--- a/Mage/src/main/java/mage/abilities/keyword/MadnessAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/MadnessAbility.java
@@ -2,6 +2,7 @@ package mage.abilities.keyword;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
import mage.abilities.StaticAbility;
@@ -33,10 +34,10 @@ import mage.players.Player;
* first ability is applied.
*
* "Madness [cost]" means "If a player would discard this card, that player
- * discards it, but may exile it instead of putting it into their
- * graveyard" and "When this card is exiled this way, its owner may cast it by
- * paying [cost] rather than paying its mana cost. If that player doesn't, he or
- * she puts this card into their graveyard.
+ * discards it, but may exile it instead of putting it into their graveyard" and
+ * "When this card is exiled this way, its owner may cast it by paying [cost]
+ * rather than paying its mana cost. If that player doesn't, he or she puts this
+ * card into their graveyard.
*
* 702.33b. Casting a spell using its madness ability follows the rules for
* paying alternative costs in rules 601.2b and 601.2e-g.
@@ -219,7 +220,7 @@ class MadnessCastEffect extends OneShotEffect {
castByMadness.setSpellAbilityCastMode(SpellAbilityCastMode.MADNESS);
costRef.clear();
costRef.add(madnessCost);
- boolean result = owner.cast(castByMadness, game, false);
+ boolean result = owner.cast(castByMadness, game, false, new MageObjectReference(source.getSourceObject(game), game));
return result;
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/MiracleAbility.java b/Mage/src/main/java/mage/abilities/keyword/MiracleAbility.java
index ed50e9b7b00..5cc3b7f6066 100644
--- a/Mage/src/main/java/mage/abilities/keyword/MiracleAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/MiracleAbility.java
@@ -27,6 +27,7 @@
*/
package mage.abilities.keyword;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
import mage.abilities.TriggeredAbilityImpl;
@@ -52,8 +53,8 @@ import mage.watchers.common.MiracleWatcher;
* cost."
*
* 702.92b If a player chooses to reveal a card using its miracle ability, he or
- * she plays with that card revealed until that card leaves their hand,
- * that ability resolves, or that ability otherwise leaves the stack.
+ * she plays with that card revealed until that card leaves their hand, that
+ * ability resolves, or that ability otherwise leaves the stack.
*
* You can cast a card for its miracle cost only as the miracle triggered
* ability resolves. If you don't want to cast it at that time (or you can't
@@ -172,7 +173,7 @@ class MiracleEffect extends OneShotEffect {
// replace with the new cost
costRef.clear();
costRef.add(miracleCosts);
- controller.cast(abilityToCast, game, false);
+ controller.cast(abilityToCast, game, false, new MageObjectReference(source.getSourceObject(game), game));
return true;
}
return false;
diff --git a/Mage/src/main/java/mage/abilities/keyword/NinjutsuAbility.java b/Mage/src/main/java/mage/abilities/keyword/NinjutsuAbility.java
index 893fad9d4e2..86b04eccc3b 100644
--- a/Mage/src/main/java/mage/abilities/keyword/NinjutsuAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/NinjutsuAbility.java
@@ -120,9 +120,13 @@ class NinjutsuEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller == null) {
+ return false;
+ }
Card card = game.getCard(source.getSourceId());
if (card != null) {
- card.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), source.getControllerId());
+ controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) {
UUID defendingPlayerId = null;
@@ -133,7 +137,6 @@ class NinjutsuEffect extends OneShotEffect {
}
if (defendingPlayerId != null) {
game.getCombat().addAttackerToCombat(permanent.getId(), defendingPlayerId, game);
- permanent.setTapped(true);
return true;
}
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/PartnerWithAbility.java b/Mage/src/main/java/mage/abilities/keyword/PartnerWithAbility.java
new file mode 100644
index 00000000000..77dc2461a56
--- /dev/null
+++ b/Mage/src/main/java/mage/abilities/keyword/PartnerWithAbility.java
@@ -0,0 +1,162 @@
+/*
+ * 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.abilities.keyword;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardsImpl;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.filter.predicate.mageobject.NamePredicate;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.TargetPlayer;
+import mage.target.common.TargetCardInLibrary;
+
+/**
+ *
+ * @author TheElk801
+ */
+public class PartnerWithAbility extends EntersBattlefieldTriggeredAbility {
+
+ private final String partnerName;
+ private final String shortName;
+ private final boolean hasReminderText;
+
+ public PartnerWithAbility(String partnerName) {
+ this(partnerName, false);
+ }
+
+ public PartnerWithAbility(String partnerName, boolean isLegendary) {
+ this(partnerName, isLegendary, true);
+ }
+
+ public PartnerWithAbility(String partnerName, boolean isLegendary, boolean hasReminderText) {
+ super(new PartnersWithSearchEffect(partnerName), false);
+ this.addTarget(new TargetPlayer());
+ this.partnerName = partnerName;
+ this.hasReminderText = hasReminderText;
+ if (isLegendary) {
+ this.shortName = shortenName(partnerName);
+ } else {
+ this.shortName = partnerName;
+ }
+ }
+
+ public PartnerWithAbility(final PartnerWithAbility ability) {
+ super(ability);
+ this.partnerName = ability.partnerName;
+ this.shortName = ability.shortName;
+ this.hasReminderText = ability.hasReminderText;
+ }
+
+ @Override
+ public PartnerWithAbility copy() {
+ return new PartnerWithAbility(this);
+ }
+
+ @Override
+ public String getRule() {
+ if (hasReminderText) {
+ return "Partner with " + partnerName
+ + " (When this creature enters the battlefield, target player may put " + shortName
+ + " into their hand from their library, then shuffle.)";
+ } else {
+ return "Partner with " + partnerName;
+ }
+ }
+
+ public String getPartnerName() {
+ return partnerName;
+ }
+
+ public static String shortenName(String st) {
+ StringBuilder sb = new StringBuilder();
+ for (char s : st.toCharArray()) {
+ if (s == ' ' || s == ',') {
+ break;
+ } else {
+ sb.append(s);
+ }
+ }
+ return sb.toString();
+ }
+}
+
+class PartnersWithSearchEffect extends OneShotEffect {
+
+ private final String partnerName;
+
+ public PartnersWithSearchEffect(String partnerName) {
+ super(Outcome.DrawCard);
+ this.partnerName = partnerName;
+ this.staticText = "";
+ }
+
+ public PartnersWithSearchEffect(final PartnersWithSearchEffect effect) {
+ super(effect);
+ this.partnerName = effect.partnerName;
+ }
+
+ @Override
+ public PartnersWithSearchEffect copy() {
+ return new PartnersWithSearchEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ Player player = game.getPlayer(source.getFirstTarget());
+ if (player != null) {
+ FilterCard filter = new FilterCard("card named " + partnerName);
+ filter.add(new NamePredicate(partnerName));
+ TargetCardInLibrary target = new TargetCardInLibrary(filter);
+ if (player.chooseUse(Outcome.Benefit, "Search your library for a card named " + partnerName + " and put it into your hand?", source, game)) {
+ player.searchLibrary(target, game);
+ for (UUID cardId : target.getTargets()) {
+ Card card = player.getLibrary().getCard(cardId, game);
+ if (card != null) {
+ player.revealCards(source, new CardsImpl(card), game);
+ player.moveCards(card, Zone.HAND, source, game);
+ }
+ }
+ player.shuffleLibrary(source, game);
+ }
+ }
+ // prevent undo
+ controller.resetStoredBookmark(game);
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage/src/main/java/mage/abilities/keyword/ReboundAbility.java b/Mage/src/main/java/mage/abilities/keyword/ReboundAbility.java
index 17bcf1d600e..6766d6d53a8 100644
--- a/Mage/src/main/java/mage/abilities/keyword/ReboundAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/ReboundAbility.java
@@ -28,6 +28,7 @@
package mage.abilities.keyword;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.SpellAbility;
@@ -206,7 +207,7 @@ class ReboundCastSpellFromExileEffect extends OneShotEffect {
Player player = game.getPlayer(source.getControllerId());
if (player != null && reboundCard != null) {
SpellAbility ability = reboundCard.getSpellAbility();
- player.cast(ability, game, true);
+ player.cast(ability, game, true, new MageObjectReference(source.getSourceObject(game), game));
zone.remove(reboundCard.getId());
return true;
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/RippleAbility.java b/Mage/src/main/java/mage/abilities/keyword/RippleAbility.java
index 80bab29d568..8dbd4b8e92f 100644
--- a/Mage/src/main/java/mage/abilities/keyword/RippleAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/RippleAbility.java
@@ -1,6 +1,7 @@
package mage.abilities.keyword;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.OneShotEffect;
@@ -103,7 +104,7 @@ class RippleEffect extends OneShotEffect {
while (player.canRespond() && cards.count(sameNameFilter, game) > 0 && player.choose(Outcome.PlayForFree, cards, target1, game)) {
Card card = cards.get(target1.getFirstTarget(), game);
if (card != null) {
- player.cast(card.getSpellAbility(), game, true);
+ player.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game));
cards.remove(card);
}
target1.clearChosen();
diff --git a/Mage/src/main/java/mage/abilities/keyword/SpliceOntoArcaneAbility.java b/Mage/src/main/java/mage/abilities/keyword/SpliceOntoArcaneAbility.java
index 0a4f96049be..9932427baff 100644
--- a/Mage/src/main/java/mage/abilities/keyword/SpliceOntoArcaneAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/SpliceOntoArcaneAbility.java
@@ -27,6 +27,7 @@
*/
package mage.abilities.keyword;
+import java.util.Iterator;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
@@ -42,63 +43,66 @@ import mage.game.Game;
import mage.game.stack.Spell;
import mage.players.Player;
-import java.util.Iterator;
-
-
/**
* 702.45. Splice
*
- * 702.45a Splice is a static ability that functions while a card is in your hand.
- * "Splice onto [subtype] [cost]" means "You may reveal this card from your hand
- * as you cast a [subtype] spell. If you do, copy this card's text box onto that
- * spell and pay [cost] as an additional cost to cast that spell." Paying a card's
- * splice cost follows the rules for paying additional costs in rules 601.2b and
- * 601.2e-g.
+ * 702.45a Splice is a static ability that functions while a card is in your
+ * hand. "Splice onto [subtype] [cost]" means "You may reveal this card from
+ * your hand as you cast a [subtype] spell. If you do, copy this card's text box
+ * onto that spell and pay [cost] as an additional cost to cast that spell."
+ * Paying a card's splice cost follows the rules for paying additional costs in
+ * rules 601.2b and 601.2e-g.
*
- * Example: Since the card with splice remains in the player's hand, it can later
- * be cast normally or spliced onto another spell. It can even be discarded to pay
- * a "discard a card" cost of the spell it's spliced onto.
+ * Example: Since the card with splice remains in the player's hand, it can
+ * later be cast normally or spliced onto another spell. It can even be
+ * discarded to pay a "discard a card" cost of the spell it's spliced onto.
*
- * 702.45b You can't choose to use a splice ability if you can't make the required
- * choices (targets, etc.) for that card's instructions. You can't splice any one
- * card onto the same spell more than once. If you're splicing more than one card
- * onto a spell, reveal them all at once and choose the order in which their
- * instructions will be followed. The instructions on the main spell have to be
- * followed first.
+ * 702.45b You can't choose to use a splice ability if you can't make the
+ * required choices (targets, etc.) for that card's instructions. You can't
+ * splice any one card onto the same spell more than once. If you're splicing
+ * more than one card onto a spell, reveal them all at once and choose the order
+ * in which their instructions will be followed. The instructions on the main
+ * spell have to be followed first.
*
- * 702.45c The spell has the characteristics of the main spell, plus the text boxes
- * of each of the spliced cards. The spell doesn't gain any other characteristics
- * (name, mana cost, color, supertypes, card types, subtypes, etc.) of the spliced
- * cards. Text copied onto the spell that refers to a card by name refers to the spell
- * on the stack, not the card from which the text was copied.
+ * 702.45c The spell has the characteristics of the main spell, plus the text
+ * boxes of each of the spliced cards. The spell doesn't gain any other
+ * characteristics (name, mana cost, color, supertypes, card types, subtypes,
+ * etc.) of the spliced cards. Text copied onto the spell that refers to a card
+ * by name refers to the spell on the stack, not the card from which the text
+ * was copied.
*
- * Example: Glacial Ray is a red card with splice onto Arcane that reads, "Glacial
- * Ray deals 2 damage to any target." Suppose Glacial Ray is spliced
- * onto Reach Through Mists, a blue spell. The spell is still blue, and Reach Through
- * Mists deals the damage. This means that the ability can target a creature with
- * protection from red and deal 2 damage to that creature.
+ * Example: Glacial Ray is a red card with splice onto Arcane that reads,
+ * "Glacial Ray deals 2 damage to any target." Suppose Glacial Ray is spliced
+ * onto Reach Through Mists, a blue spell. The spell is still blue, and Reach
+ * Through Mists deals the damage. This means that the ability can target a
+ * creature with protection from red and deal 2 damage to that creature.
*
- * 702.45d Choose targets for the added text normally (see rule 601.2c). Note that a
- * spell with one or more targets will be countered if all of its targets are illegal
- * on resolution.
+ * 702.45d Choose targets for the added text normally (see rule 601.2c). Note
+ * that a spell with one or more targets will be countered if all of its targets
+ * are illegal on resolution.
*
- * 702.45e The spell loses any splice changes once it leaves the stack (for example,
- * when it's countered, it's exiled, or it resolves).
+ * 702.45e The spell loses any splice changes once it leaves the stack (for
+ * example, when it's countered, it's exiled, or it resolves).
*
- * Rulings
+ * Rulings
*
- * You must reveal all of the cards you intend to splice at the same time. Each individual card can only be spliced once onto a spell.
- * If you have more than one card with the same name in your hand, you may splice both of them onto the spell.
- * A card with a splice ability can't be spliced onto itself because the spell is on the stack (and not in your hand) when you reveal the cards you want to splice onto it.
- * The target for a card that's spliced onto a spell may be the same as the target chosen for the original spell or for another spliced-on card. (A recent change to the targeting rules allows this, but most other cards are unaffected by the change.)
- * If you splice a targeted card onto an untargeted spell, the entire spell will be countered if the target isn't legal when the spell resolves.
- * If you splice an untargeted card onto a targeted spell, the entire spell will be countered if the target isn't legal when the spell resolves.
- * A spell is countered on resolution only if *all* of its targets are illegal (or the spell is countered by an effect).
+ * You must reveal all of the cards you intend to splice at the same time. Each
+ * individual card can only be spliced once onto a spell. If you have more than
+ * one card with the same name in your hand, you may splice both of them onto
+ * the spell. A card with a splice ability can't be spliced onto itself because
+ * the spell is on the stack (and not in your hand) when you reveal the cards
+ * you want to splice onto it. The target for a card that's spliced onto a spell
+ * may be the same as the target chosen for the original spell or for another
+ * spliced-on card. (A recent change to the targeting rules allows this, but
+ * most other cards are unaffected by the change.) If you splice a targeted card
+ * onto an untargeted spell, the entire spell will be countered if the target
+ * isn't legal when the spell resolves. If you splice an untargeted card onto a
+ * targeted spell, the entire spell will be countered if the target isn't legal
+ * when the spell resolves. A spell is countered on resolution only if *all* of
+ * its targets are illegal (or the spell is countered by an effect).
*
* @author LevelX2
*/
-
-
public class SpliceOntoArcaneAbility extends SimpleStaticAbility {
private static final String KEYWORD_TEXT = "Splice onto Arcane";
@@ -134,8 +138,8 @@ public class SpliceOntoArcaneAbility extends SimpleStaticAbility {
@Override
public String getRule() {
StringBuilder sb = new StringBuilder();
- sb.append(KEYWORD_TEXT).append(nonManaCosts?"-":" ");
- sb.append(spliceCosts.getText()).append(nonManaCosts?". ":" ");
+ sb.append(KEYWORD_TEXT).append(nonManaCosts ? "-" : " ");
+ sb.append(spliceCosts.getText()).append(nonManaCosts ? ". " : " ");
sb.append("(As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.)");
return sb.toString();
}
@@ -193,7 +197,7 @@ class SpliceOntoArcaneEffect extends SpliceCardEffectImpl {
if (card.getManaCost().isEmpty()) { // e.g. Evermind
return card.getSpellAbility().spellCanBeActivatedRegularlyNow(source.getControllerId(), game);
} else {
- return card.getSpellAbility().canActivate(source.getControllerId(), game);
+ return card.getSpellAbility().canActivate(source.getControllerId(), game).canActivate();
}
}
return false;
diff --git a/Mage/src/main/java/mage/abilities/keyword/SurgeAbility.java b/Mage/src/main/java/mage/abilities/keyword/SurgeAbility.java
index d03a394d6be..041331417c6 100644
--- a/Mage/src/main/java/mage/abilities/keyword/SurgeAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/SurgeAbility.java
@@ -66,7 +66,7 @@ public class SurgeAbility extends SpellAbility {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
// check if controller or teammate has already cast a spell this turn
CastSpellLastTurnWatcher watcher = (CastSpellLastTurnWatcher) game.getState().getWatchers().get(CastSpellLastTurnWatcher.class.getSimpleName());
if (watcher != null) {
@@ -81,7 +81,7 @@ public class SurgeAbility extends SpellAbility {
}
}
}
- return false;
+ return ActivationStatus.getFalse();
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/keyword/SuspendAbility.java b/Mage/src/main/java/mage/abilities/keyword/SuspendAbility.java
index b19ca7db21c..11a9163cb54 100644
--- a/Mage/src/main/java/mage/abilities/keyword/SuspendAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/SuspendAbility.java
@@ -31,6 +31,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import mage.MageObject;
+import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.SpecialAction;
import mage.abilities.TriggeredAbilityImpl;
@@ -228,16 +229,16 @@ public class SuspendAbility extends SpecialAction {
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
if (game.getState().getZone(getSourceId()) != Zone.HAND) {
// Supend can only be activated from hand
- return false;
+ return ActivationStatus.getFalse();
}
MageObject object = game.getObject(sourceId);
- return (object.isInstant()
+ return new ActivationStatus(object.isInstant()
|| object.hasAbility(FlashAbility.getInstance().getId(), game)
|| null != game.getContinuousEffects().asThough(sourceId, AsThoughEffectType.CAST_AS_INSTANT, this, playerId, game)
- || game.canPlaySorcery(playerId));
+ || game.canPlaySorcery(playerId), null);
}
@Override
@@ -376,7 +377,7 @@ class SuspendPlayCardEffect extends OneShotEffect {
card.getAbilities().removeAll(abilitiesToRemove);
}
// cast the card for free
- if (player.cast(card.getSpellAbility(), game, true)) {
+ if (player.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {
if (card.isCreature()) {
ContinuousEffect effect = new GainHasteEffect();
effect.setTargetPointer(new FixedTarget(card.getId(), card.getZoneChangeCounter(game) + 1));
diff --git a/Mage/src/main/java/mage/abilities/keyword/UnearthAbility.java b/Mage/src/main/java/mage/abilities/keyword/UnearthAbility.java
index b43eb548597..578540f2189 100644
--- a/Mage/src/main/java/mage/abilities/keyword/UnearthAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/UnearthAbility.java
@@ -145,8 +145,8 @@ class UnearthLeavesBattlefieldEffect extends ReplacementEffectImpl {
if (event.getTargetId().equals(source.getSourceId())) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() != Zone.EXILED) {
- // started in graveyard going to battlefield so current zone change counter has to be +1
- return source.getSourceObjectZoneChangeCounter() + 1 == game.getState().getZoneChangeCounter(source.getSourceId());
+ // Only move it to exile if it was this instance that was moved to battlefield with unearth
+ return source.getSourceObjectZoneChangeCounter() == game.getState().getZoneChangeCounter(source.getSourceId());
}
}
return false;
diff --git a/Mage/src/main/java/mage/abilities/mana/ActivateIfConditionManaAbility.java b/Mage/src/main/java/mage/abilities/mana/ActivateIfConditionManaAbility.java
index dbbf9bb9103..953f3542b3d 100644
--- a/Mage/src/main/java/mage/abilities/mana/ActivateIfConditionManaAbility.java
+++ b/Mage/src/main/java/mage/abilities/mana/ActivateIfConditionManaAbility.java
@@ -59,7 +59,7 @@ public class ActivateIfConditionManaAbility extends ActivatedManaAbilityImpl {
@Override
public String getRule() {
- return new StringBuilder(super.getRule()).append(" Activate this ability only if ").append(condition.toString()).append('.').toString();
+ return super.getRule() + " Activate this ability only if " + condition.toString() + '.';
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/mana/ActivateOncePerTurnManaAbility.java b/Mage/src/main/java/mage/abilities/mana/ActivateOncePerTurnManaAbility.java
index d647995c9b9..623e8d51c09 100644
--- a/Mage/src/main/java/mage/abilities/mana/ActivateOncePerTurnManaAbility.java
+++ b/Mage/src/main/java/mage/abilities/mana/ActivateOncePerTurnManaAbility.java
@@ -58,7 +58,7 @@ public class ActivateOncePerTurnManaAbility extends ActivatedManaAbilityImpl {
@Override
public boolean activate(Game game, boolean noMana) {
- if (canActivate(this.controllerId, game)) {
+ if (canActivate(this.controllerId, game).canActivate()) {
return super.activate(game, noMana);
}
return false;
diff --git a/Mage/src/main/java/mage/abilities/mana/ActivatedManaAbilityImpl.java b/Mage/src/main/java/mage/abilities/mana/ActivatedManaAbilityImpl.java
index 9f7c294c6c3..6b95b9685e9 100644
--- a/Mage/src/main/java/mage/abilities/mana/ActivatedManaAbilityImpl.java
+++ b/Mage/src/main/java/mage/abilities/mana/ActivatedManaAbilityImpl.java
@@ -69,21 +69,21 @@ public abstract class ActivatedManaAbilityImpl extends ActivatedAbilityImpl impl
}
@Override
- public boolean canActivate(UUID playerId, Game game) {
+ public ActivationStatus canActivate(UUID playerId, Game game) {
if (!super.hasMoreActivationsThisTurn(game) || !(condition == null || condition.apply(game, this))) {
- return false;
+ return ActivationStatus.getFalse();
}
if (!controlsAbility(playerId, game)) {
- return false;
+ return ActivationStatus.getFalse();
}
if (timing == TimingRule.SORCERY
&& !game.canPlaySorcery(playerId)
&& null == game.getContinuousEffects().asThough(sourceId, AsThoughEffectType.ACTIVATE_AS_INSTANT, this, controllerId, game)) {
- return false;
+ return ActivationStatus.getFalse();
}
// check if player is in the process of playing spell costs and he is no longer allowed to use activated mana abilities (e.g. because he started to use improvise)
//20091005 - 605.3a
- return costs.canPay(this, sourceId, controllerId, game);
+ return new ActivationStatus(costs.canPay(this, sourceId, controllerId, game), null);
}
@@ -103,7 +103,11 @@ public abstract class ActivatedManaAbilityImpl extends ActivatedAbilityImpl impl
}
}
}
- return netMana;
+ ArrayList netManaCopy = new ArrayList<>();
+ for (Mana mana : netMana) {
+ netManaCopy.add(mana.copy());
+ }
+ return netManaCopy;
}
/**
diff --git a/Mage/src/main/java/mage/abilities/mana/ConditionalColorlessManaAbility.java b/Mage/src/main/java/mage/abilities/mana/ConditionalColorlessManaAbility.java
index 6c67a7f6579..09f903b0756 100644
--- a/Mage/src/main/java/mage/abilities/mana/ConditionalColorlessManaAbility.java
+++ b/Mage/src/main/java/mage/abilities/mana/ConditionalColorlessManaAbility.java
@@ -5,7 +5,6 @@
*/
package mage.abilities.mana;
-import mage.Mana;
import mage.abilities.costs.Cost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.mana.AddConditionalColorlessManaEffect;
@@ -24,7 +23,7 @@ public class ConditionalColorlessManaAbility extends ActivatedManaAbilityImpl {
public ConditionalColorlessManaAbility(Cost cost, int amount, ConditionalManaBuilder manaBuilder) {
super(Zone.BATTLEFIELD, new AddConditionalColorlessManaEffect(amount, manaBuilder), cost);
- this.netMana.add(Mana.ColorlessMana(amount));
+ // this.netMana.add(Mana.ColorlessMana(amount)); // When produced during runtime, condition is added (how to add condition here?)
}
public ConditionalColorlessManaAbility(final ConditionalColorlessManaAbility ability) {
diff --git a/Mage/src/main/java/mage/abilities/mana/ManaOptions.java b/Mage/src/main/java/mage/abilities/mana/ManaOptions.java
index dd90f3a57d0..151535799a2 100644
--- a/Mage/src/main/java/mage/abilities/mana/ManaOptions.java
+++ b/Mage/src/main/java/mage/abilities/mana/ManaOptions.java
@@ -31,9 +31,13 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-
import mage.Mana;
+import mage.abilities.Ability;
+import mage.abilities.costs.Cost;
+import mage.abilities.costs.common.TapSourceCost;
import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.ManaEvent;
/**
*
@@ -64,43 +68,51 @@ public class ManaOptions extends ArrayList {
//if there is only one mana option available add it to all the existing options
List netManas = abilities.get(0).getNetMana(game);
if (netManas.size() == 1) {
- addMana(netManas.get(0));
+ if (!hasTapCost(abilities.get(0)) || checkTappedForManaReplacement(abilities.get(0), game, netManas.get(0))) {
+ addMana(netManas.get(0));
+ }
} else {
List copy = copy();
this.clear();
+ boolean hasTapCost = hasTapCost(abilities.get(0));
for (Mana netMana : netManas) {
for (Mana mana : copy) {
- Mana newMana = new Mana();
- newMana.add(mana);
- newMana.add(netMana);
- this.add(newMana);
+ if (!hasTapCost || checkTappedForManaReplacement(abilities.get(0), game, netMana)) {
+ Mana newMana = new Mana();
+ newMana.add(mana);
+ newMana.add(netMana);
+ this.add(newMana);
+ }
}
}
}
- } else if (abilities.size() > 1) {
+ } else { // mana source has more than 1 ability
//perform a union of all existing options and the new options
List copy = copy();
this.clear();
for (ActivatedManaAbilityImpl ability : abilities) {
+ boolean hasTapCost = hasTapCost(ability);
for (Mana netMana : ability.getNetMana(game)) {
- SkipAddMana:
- for (Mana mana : copy) {
- Mana newMana = new Mana();
- newMana.add(mana);
- newMana.add(netMana);
- for (Mana existingMana : this) {
- if (existingMana.equalManaValue(newMana)) {
- continue SkipAddMana;
- }
- Mana moreValuable = Mana.getMoreValuableMana(newMana, existingMana);
- if (moreValuable != null) {
- // only keep the more valuable mana
- existingMana.setToMana(moreValuable);
- continue SkipAddMana;
+ if (!hasTapCost || checkTappedForManaReplacement(ability, game, netMana)) {
+ SkipAddMana:
+ for (Mana mana : copy) {
+ Mana newMana = new Mana();
+ newMana.add(mana);
+ newMana.add(netMana);
+ for (Mana existingMana : this) {
+ if (existingMana.equalManaValue(newMana)) {
+ continue SkipAddMana;
+ }
+ Mana moreValuable = Mana.getMoreValuableMana(newMana, existingMana);
+ if (moreValuable != null) {
+ // only keep the more valuable mana
+ existingMana.setToMana(moreValuable);
+ continue SkipAddMana;
+ }
}
+ this.add(newMana);
}
- this.add(newMana);
}
}
}
@@ -108,6 +120,23 @@ public class ManaOptions extends ArrayList {
}
}
+ private boolean checkTappedForManaReplacement(Ability ability, Game game, Mana mana) {
+ ManaEvent event = new ManaEvent(GameEvent.EventType.TAPPED_FOR_MANA, ability.getSourceId(), ability.getSourceId(), ability.getControllerId(), mana);
+ if (!game.replaceEvent(event)) {
+ return true;
+ }
+ return false;
+ }
+
+ private boolean hasTapCost(Ability ability) {
+ for (Cost cost : ability.getCosts()) {
+ if (cost instanceof TapSourceCost) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public void addManaWithCost(List abilities, Game game) {
if (isEmpty()) {
this.add(new Mana());
@@ -153,37 +182,41 @@ public class ManaOptions extends ArrayList {
List copy = copy();
this.clear();
for (ActivatedManaAbilityImpl ability : abilities) {
-
+ boolean hasTapCost = hasTapCost(ability);
List netManas = ability.getNetMana(game);
if (ability.getManaCosts().isEmpty()) {
for (Mana netMana : netManas) {
- for (Mana mana : copy) {
- Mana newMana = new Mana();
- newMana.add(mana);
- newMana.add(netMana);
- this.add(newMana);
+ if (!hasTapCost || checkTappedForManaReplacement(ability, game, netMana)) {
+ for (Mana mana : copy) {
+ Mana newMana = new Mana();
+ newMana.add(mana);
+ newMana.add(netMana);
+ this.add(newMana);
+ }
}
}
} else {
for (Mana netMana : netManas) {
- for (Mana previousMana : copy) {
- CombineWithExisting:
- for (Mana manaOption : ability.getManaCosts().getManaOptions()) {
- Mana newMana = new Mana(previousMana);
- if (previousMana.includesMana(manaOption)) { // costs can be paid
- newMana.subtractCost(manaOption);
- newMana.add(netMana);
- // if the new mana is in all colors more than another already existing than replace
- for (Mana existingMana : this) {
- Mana moreValuable = Mana.getMoreValuableMana(newMana, existingMana);
- if (moreValuable != null) {
- existingMana.setToMana(moreValuable);
- continue CombineWithExisting;
+ if (!hasTapCost || checkTappedForManaReplacement(ability, game, netMana)) {
+ for (Mana previousMana : copy) {
+ CombineWithExisting:
+ for (Mana manaOption : ability.getManaCosts().getManaOptions()) {
+ Mana newMana = new Mana(previousMana);
+ if (previousMana.includesMana(manaOption)) { // costs can be paid
+ newMana.subtractCost(manaOption);
+ newMana.add(netMana);
+ // if the new mana is in all colors more than another already existing than replace
+ for (Mana existingMana : this) {
+ Mana moreValuable = Mana.getMoreValuableMana(newMana, existingMana);
+ if (moreValuable != null) {
+ existingMana.setToMana(moreValuable);
+ continue CombineWithExisting;
+ }
}
+ // no existing Mana includes this new mana so add
+ this.add(newMana);
}
- // no existing Mana includes this new mana so add
- this.add(newMana);
}
}
}
@@ -330,16 +363,15 @@ public class ManaOptions extends ArrayList {
payCombinationsStrings.add(newMana.toString());
}
-
- public void removeDuplicated(){
+ public void removeDuplicated() {
Set list = new HashSet<>();
- for(int i = this.size() - 1; i >= 0; i--){
+ for (int i = this.size() - 1; i >= 0; i--) {
String s = this.get(i).toString();
- if (list.contains(s)){
+ if (list.contains(s)) {
// remove duplicated
this.remove(i);
- }else{
+ } else {
list.add(s);
}
}
diff --git a/Mage/src/main/java/mage/cards/Card.java b/Mage/src/main/java/mage/cards/Card.java
index 4398096c06a..470915a13ae 100644
--- a/Mage/src/main/java/mage/cards/Card.java
+++ b/Mage/src/main/java/mage/cards/Card.java
@@ -161,8 +161,12 @@ public interface Card extends MageObject {
boolean addCounters(Counter counter, Ability source, Game game);
+ boolean addCounters(Counter counter, Ability source, Game game, boolean isEffect);
+
boolean addCounters(Counter counter, Ability source, Game game, List appliedEffects);
+ boolean addCounters(Counter counter, Ability source, Game game, List appliedEffects, boolean isEffect);
+
void removeCounters(String name, int amount, Game game);
void removeCounters(Counter counter, Game game);
diff --git a/Mage/src/main/java/mage/cards/CardImpl.java b/Mage/src/main/java/mage/cards/CardImpl.java
index 57c4c9427d6..ae0919fb90a 100644
--- a/Mage/src/main/java/mage/cards/CardImpl.java
+++ b/Mage/src/main/java/mage/cards/CardImpl.java
@@ -789,15 +789,26 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
@Override
public boolean addCounters(Counter counter, Ability source, Game game) {
- return addCounters(counter, source, game, null);
+ return addCounters(counter, source, game, null, true);
+ }
+
+ @Override
+ public boolean addCounters(Counter counter, Ability source, Game game, boolean isEffect) {
+ return addCounters(counter, source, game, null, isEffect);
}
@Override
public boolean addCounters(Counter counter, Ability source, Game game, List appliedEffects) {
+ return addCounters(counter, source, game, appliedEffects, true);
+ }
+
+ @Override
+ public boolean addCounters(Counter counter, Ability source, Game game, List appliedEffects, boolean isEffect) {
boolean returnCode = true;
UUID sourceId = (source == null ? getId() : source.getSourceId());
GameEvent countersEvent = GameEvent.getEvent(GameEvent.EventType.ADD_COUNTERS, objectId, sourceId, getControllerOrOwner(), counter.getName(), counter.getCount());
countersEvent.setAppliedEffects(appliedEffects);
+ countersEvent.setFlag(isEffect);
if (!game.replaceEvent(countersEvent)) {
int amount = countersEvent.getAmount();
int finalAmount = amount;
diff --git a/Mage/src/main/java/mage/cards/decks/Deck.java b/Mage/src/main/java/mage/cards/decks/Deck.java
index 57c6a1e96f2..b0bb5fe48b5 100644
--- a/Mage/src/main/java/mage/cards/decks/Deck.java
+++ b/Mage/src/main/java/mage/cards/decks/Deck.java
@@ -142,7 +142,7 @@ public class Deck implements Serializable {
cardInfo = CardRepository.instance.findCard("Silvercoat Lion");
Logger.getLogger(Deck.class).error("Tried to restart the DB: " + (cardInfo == null ? "not successful" : "successful"));
}
- return new GameException("Card not found - " + deckCardInfo.getCardName() + " - " + deckCardInfo.getSetCode() + " for deck - " + deckName + '\n'
+ return new GameException("Card not found - " + deckCardInfo.getCardName() + " - " + deckCardInfo.getSetCode() + "/" + deckCardInfo.getCardNum() + " for deck - " + deckName + '\n'
+ "Possible reason is, that you use cards in your deck, that are only supported in newer versions of the server.\n"
+ "So it can help to use the same card from another set, that's already supported from this server.");
diff --git a/Mage/src/main/java/mage/cards/repository/CardRepository.java b/Mage/src/main/java/mage/cards/repository/CardRepository.java
index 39201d4a6d9..a9070abdb00 100644
--- a/Mage/src/main/java/mage/cards/repository/CardRepository.java
+++ b/Mage/src/main/java/mage/cards/repository/CardRepository.java
@@ -58,7 +58,7 @@ public enum CardRepository {
// raise this if db structure was changed
private static final long CARD_DB_VERSION = 51;
// raise this if new cards were added to the server
- private static final long CARD_CONTENT_VERSION = 109;
+ private static final long CARD_CONTENT_VERSION = 112;
private Dao cardDao;
private Set classNames;
diff --git a/Mage/src/main/java/mage/cards/repository/ExpansionRepository.java b/Mage/src/main/java/mage/cards/repository/ExpansionRepository.java
index 6df02be31ef..a8fd506d91c 100644
--- a/Mage/src/main/java/mage/cards/repository/ExpansionRepository.java
+++ b/Mage/src/main/java/mage/cards/repository/ExpansionRepository.java
@@ -29,7 +29,7 @@ public enum ExpansionRepository {
private static final String JDBC_URL = "jdbc:h2:file:./db/cards.h2;AUTO_SERVER=TRUE";
private static final String VERSION_ENTITY_NAME = "expansion";
private static final long EXPANSION_DB_VERSION = 5;
- private static final long EXPANSION_CONTENT_VERSION = 14;
+ private static final long EXPANSION_CONTENT_VERSION = 15;
private Dao expansionDao;
@@ -88,10 +88,10 @@ public enum ExpansionRepository {
try {
// only with boosters and cards
GenericRawResults setsList = expansionDao.queryRaw(
- "select * from expansion e " +
- " where e.boosters = 1 " +
- " and exists(select (1) from card c where c.setcode = e.code) " +
- " order by e.releasedate desc",
+ "select * from expansion e "
+ + " where e.boosters = 1 "
+ + " and exists(select (1) from card c where c.setcode = e.code) "
+ + " order by e.releasedate desc",
expansionDao.getRawRowMapper());
List resList = new ArrayList<>();
diff --git a/Mage/src/main/java/mage/choices/ChooseFriendsAndFoes.java b/Mage/src/main/java/mage/choices/ChooseFriendsAndFoes.java
new file mode 100644
index 00000000000..6ab7e4891d7
--- /dev/null
+++ b/Mage/src/main/java/mage/choices/ChooseFriendsAndFoes.java
@@ -0,0 +1,51 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package mage.choices;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.constants.Outcome;
+import mage.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author TheElk801
+ */
+public class ChooseFriendsAndFoes {
+
+ private List friends = new ArrayList<>();
+ private List foes = new ArrayList<>();
+
+ public boolean chooseFriendOrFoe(Player playerChoosing, Ability source, Game game) {
+ if (playerChoosing == null) {
+ return false;
+ }
+ friends.clear();
+ foes.clear();
+ for (UUID playerId : game.getState().getPlayersInRange(playerChoosing.getId(), game)) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ if (playerChoosing.chooseUse(Outcome.Vote, "Is " + player.getName() + " friend or foe?", null, "Friend", "Foe", source, game)) {
+ friends.add(player);
+ } else {
+ foes.add(player);
+ }
+ }
+ }
+ return true;
+ }
+
+ public List getFriends() {
+ return friends;
+ }
+
+ public List getFoes() {
+ return foes;
+ }
+}
diff --git a/Mage/src/main/java/mage/constants/Planes.java b/Mage/src/main/java/mage/constants/Planes.java
index 57b31d49dcb..63f1cd3ca47 100644
--- a/Mage/src/main/java/mage/constants/Planes.java
+++ b/Mage/src/main/java/mage/constants/Planes.java
@@ -43,6 +43,7 @@ public enum Planes {
PLANE_HEDRON_FIELDS_OF_AGADEEM("HedronFieldsOfAgadeemPlane"),
PLANE_LETHE_LAKE("LetheLakePlane"),
PLANE_NAYA("NayaPlane"),
+ PLANE_PANOPTICON("PanopticonPlane"),
PLANE_TAZEEM("TazeemPlane"),
PLANE_THE_DARK_BARONY("TheDarkBaronyPlane"),
PLANE_THE_EON_FOG("TheEonFogPlane"),
diff --git a/Mage/src/main/java/mage/constants/SubType.java b/Mage/src/main/java/mage/constants/SubType.java
index 05f7f08e477..082b3478e27 100644
--- a/Mage/src/main/java/mage/constants/SubType.java
+++ b/Mage/src/main/java/mage/constants/SubType.java
@@ -61,6 +61,7 @@ public enum SubType {
AUROCHS("Aurochs", SubTypeSet.CreatureType),
AUTOBOT("Autobot", SubTypeSet.CreatureType, true), // H17, Grimlock
AVATAR("Avatar", SubTypeSet.CreatureType),
+ AZRA("Azra", SubTypeSet.CreatureType),
// B
BADGER("Badger", SubTypeSet.CreatureType),
BARBARIAN("Barbarian", SubTypeSet.CreatureType),
@@ -389,6 +390,7 @@ public enum SubType {
NIXILIS("Nixilis", SubTypeSet.PlaneswalkerType),
OBI_WAN("Obi-Wan", SubTypeSet.PlaneswalkerType, true), // Star Wars
RAL("Ral", SubTypeSet.PlaneswalkerType),
+ ROWAN("Rowan", SubTypeSet.PlaneswalkerType),
SAHEELI("Saheeli", SubTypeSet.PlaneswalkerType),
SAMUT("Samut", SubTypeSet.PlaneswalkerType),
SARKHAN("Sarkhan", SubTypeSet.PlaneswalkerType),
@@ -401,6 +403,7 @@ public enum SubType {
UGIN("Ugin", SubTypeSet.PlaneswalkerType),
VENSER("Venser", SubTypeSet.PlaneswalkerType),
VRASKA("Vraska", SubTypeSet.PlaneswalkerType),
+ WILL("Will", SubTypeSet.PlaneswalkerType),
XENAGOS("Xenagos", SubTypeSet.PlaneswalkerType),
YANGGU("Yanggu", SubTypeSet.PlaneswalkerType),
YANLING("Yanling", SubTypeSet.PlaneswalkerType),
diff --git a/Mage/src/main/java/mage/constants/TargetController.java b/Mage/src/main/java/mage/constants/TargetController.java
index 82766cdbad7..2236ebe4649 100644
--- a/Mage/src/main/java/mage/constants/TargetController.java
+++ b/Mage/src/main/java/mage/constants/TargetController.java
@@ -6,5 +6,5 @@ package mage.constants;
*/
public enum TargetController {
- ACTIVE, ANY, YOU, NOT_YOU, OPPONENT, OWNER, CONTROLLER_ATTACHED_TO, NEXT
+ ACTIVE, ANY, YOU, NOT_YOU, OPPONENT, TEAM, OWNER, CONTROLLER_ATTACHED_TO, NEXT
}
diff --git a/Mage/src/main/java/mage/filter/FilterMana.java b/Mage/src/main/java/mage/filter/FilterMana.java
index 5deda8ce48a..d942b6bd12b 100644
--- a/Mage/src/main/java/mage/filter/FilterMana.java
+++ b/Mage/src/main/java/mage/filter/FilterMana.java
@@ -104,7 +104,7 @@ public class FilterMana implements Serializable {
}
public boolean isColorless() {
- return colorless;
+ return !(white || blue || black || red || green) || colorless;
}
public void setColorless(boolean colorless) {
diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java
index 7ef7ed806b9..4e9531e8c79 100644
--- a/Mage/src/main/java/mage/filter/StaticFilters.java
+++ b/Mage/src/main/java/mage/filter/StaticFilters.java
@@ -71,6 +71,13 @@ public final class StaticFilters {
static {
FILTER_CARD_CREATURE.setLockedFilter(true);
}
+
+ public static final FilterCreatureCard FILTER_CARD_CREATURE_A = new FilterCreatureCard("a creature card");
+
+ static {
+ FILTER_CARD_CREATURE_A.setLockedFilter(true);
+ }
+
public static final FilterCreatureCard FILTER_CARD_CREATURE_YOUR_GRAVEYARD = new FilterCreatureCard("creature card from your graveyard");
static {
@@ -88,6 +95,25 @@ public final class StaticFilters {
static {
FILTER_CARD_LAND.setLockedFilter(true);
}
+
+ public static final FilterLandCard FILTER_CARD_LAND_A = new FilterLandCard("a land card");
+
+ static {
+ FILTER_CARD_LAND_A.setLockedFilter(true);
+ }
+
+ public static final FilterBasicLandCard FILTER_CARD_BASIC_LAND = new FilterBasicLandCard();
+
+ static {
+ FILTER_CARD_BASIC_LAND.setLockedFilter(true);
+ }
+
+ public static final FilterBasicLandCard FILTER_CARD_BASIC_LAND_A = new FilterBasicLandCard("a basic land card");
+
+ static {
+ FILTER_CARD_BASIC_LAND_A.setLockedFilter(true);
+ }
+
public static final FilterNonlandCard FILTER_CARD_NON_LAND = new FilterNonlandCard();
static {
@@ -286,12 +312,6 @@ public final class StaticFilters {
FILTER_LANDS_NONBASIC.setLockedFilter(true);
}
- public static final FilterBasicLandCard FILTER_BASIC_LAND_CARD = new FilterBasicLandCard();
-
- static {
- FILTER_BASIC_LAND_CARD.setLockedFilter(true);
- }
-
// Used for sacrifice targets that don't need the "you control" text
public static final FilterControlledLandPermanent FILTER_CONTROLLED_LAND_SHORT_TEXT = new FilterControlledLandPermanent("a land");
@@ -357,6 +377,12 @@ public final class StaticFilters {
FILTER_PERMANENT_NON_LAND.setLockedFilter(true);
}
+ public static final FilterPermanent FILTER_PERMANENTS_NON_LAND = new FilterNonlandPermanent("nonland permanents");
+
+ static {
+ FILTER_PERMANENTS_NON_LAND.setLockedFilter(true);
+ }
+
public static final FilterCreatureSpell FILTER_SPELL_A_CREATURE = new FilterCreatureSpell("a creature spell");
static {
diff --git a/Mage/src/main/java/mage/filter/common/FilterCreatureForCombatBlock.java b/Mage/src/main/java/mage/filter/common/FilterCreatureForCombatBlock.java
index f4e35180ca2..99d99fd8a06 100644
--- a/Mage/src/main/java/mage/filter/common/FilterCreatureForCombatBlock.java
+++ b/Mage/src/main/java/mage/filter/common/FilterCreatureForCombatBlock.java
@@ -61,7 +61,7 @@ class BlockTappedPredicate implements Predicate {
@Override
public boolean apply(Permanent input, Game game) {
- return !input.isTapped() || null != game.getState().getContinuousEffects().asThough(input.getId(), AsThoughEffectType.BLOCK_TAPPED, input.getControllerId(), game);
+ return !input.isTapped() || null != game.getState().getContinuousEffects().asThough(input.getId(), AsThoughEffectType.BLOCK_TAPPED, null, input.getControllerId(), game);
}
@Override
diff --git a/Mage/src/main/java/mage/filter/common/FilterTeamCreaturePermanent.java b/Mage/src/main/java/mage/filter/common/FilterTeamCreaturePermanent.java
new file mode 100644
index 00000000000..7d6bb67c72b
--- /dev/null
+++ b/Mage/src/main/java/mage/filter/common/FilterTeamCreaturePermanent.java
@@ -0,0 +1,41 @@
+package mage.filter.common;
+
+import mage.constants.SubType;
+import mage.constants.TargetController;
+import mage.filter.predicate.permanent.ControllerPredicate;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+/**
+ *
+ * @author TheElk801
+ */
+public class FilterTeamCreaturePermanent extends FilterCreaturePermanent {
+
+ public FilterTeamCreaturePermanent() {
+ this("creature your team controls");
+ }
+
+ public FilterTeamCreaturePermanent(String name) {
+ super(name);
+ this.add(new ControllerPredicate(TargetController.TEAM));
+
+ }
+
+ public FilterTeamCreaturePermanent(SubType subtype, String name) {
+ super(subtype, name);
+ this.add(new ControllerPredicate(TargetController.TEAM));
+ }
+
+ public FilterTeamCreaturePermanent(final FilterTeamCreaturePermanent filter) {
+ super(filter);
+ }
+
+ @Override
+ public FilterTeamCreaturePermanent copy() {
+ return new FilterTeamCreaturePermanent(this);
+ }
+}
diff --git a/Mage/src/main/java/mage/filter/common/FilterTeamPermanent.java b/Mage/src/main/java/mage/filter/common/FilterTeamPermanent.java
new file mode 100644
index 00000000000..445088e6607
--- /dev/null
+++ b/Mage/src/main/java/mage/filter/common/FilterTeamPermanent.java
@@ -0,0 +1,42 @@
+package mage.filter.common;
+
+import mage.constants.SubType;
+import mage.constants.TargetController;
+import mage.filter.FilterPermanent;
+import mage.filter.predicate.permanent.ControllerPredicate;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+/**
+ *
+ * @author TheElk801
+ */
+public class FilterTeamPermanent extends FilterPermanent {
+
+ public FilterTeamPermanent() {
+ this("permanent your team controls");
+ }
+
+ public FilterTeamPermanent(String name) {
+ super(name);
+ this.add(new ControllerPredicate(TargetController.TEAM));
+
+ }
+
+ public FilterTeamPermanent(SubType subtype, String name) {
+ super(subtype, name);
+ this.add(new ControllerPredicate(TargetController.TEAM));
+ }
+
+ public FilterTeamPermanent(final FilterTeamPermanent filter) {
+ super(filter);
+ }
+
+ @Override
+ public FilterTeamPermanent copy() {
+ return new FilterTeamPermanent(this);
+ }
+}
diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/MageObjectReferencePredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/MageObjectReferencePredicate.java
new file mode 100644
index 00000000000..31f6132b614
--- /dev/null
+++ b/Mage/src/main/java/mage/filter/predicate/mageobject/MageObjectReferencePredicate.java
@@ -0,0 +1,56 @@
+/*
+ * 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.filter.predicate.mageobject;
+
+import mage.MageObject;
+import mage.MageObjectReference;
+import mage.filter.predicate.Predicate;
+import mage.game.Game;
+
+/**
+ *
+ * @author TheElk801
+ */
+public class MageObjectReferencePredicate implements Predicate {
+
+ private final MageObjectReference mor;
+
+ public MageObjectReferencePredicate(MageObjectReference mor) {
+ this.mor = mor;
+ }
+
+ @Override
+ public boolean apply(MageObject input, Game game) {
+ return mor.refersTo(input, game);
+ }
+
+ @Override
+ public String toString() {
+ return "MageObjectReference(" + mor.toString() + ')';
+ }
+}
diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/ControllerPredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/ControllerPredicate.java
index 21234780d9d..3cbe8a72587 100644
--- a/Mage/src/main/java/mage/filter/predicate/permanent/ControllerPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/permanent/ControllerPredicate.java
@@ -58,9 +58,14 @@ public class ControllerPredicate implements ObjectPlayerPredicate getOpponents(UUID playerId);
+ default public Set getOpponents(UUID playerId) {
+ Set opponents = new HashSet<>();
+ Player player = getPlayer(playerId);
+ for (UUID opponentId : player.getInRange()) {
+ if (!opponentId.equals(playerId)) {
+ opponents.add(opponentId);
+ }
+ }
+ return opponents;
+ }
/**
- * Checks if the given playerToCheckId is an opponent of player
+ * Checks if the given playerToCheckId is an opponent of player As long as
+ * no team formats are implemented, this method returns always true for each
+ * playerId not equal to the player it is checked for. Also if this player
+ * is out of range. This method can't handle that only players in range are
+ * processed because it can only return TRUE or FALSE.
*
* @param player
* @param playerToCheckId
* @return
*/
- boolean isOpponent(Player player, UUID playerToCheckId);
+ default public boolean isOpponent(Player player, UUID playerToCheckId) {
+ return !player.getId().equals(playerToCheckId);
+ }
Turn getTurn();
diff --git a/Mage/src/main/java/mage/game/GameCanadianHighlanderImpl.java b/Mage/src/main/java/mage/game/GameCanadianHighlanderImpl.java
index 40aecac9efb..6736b49758f 100644
--- a/Mage/src/main/java/mage/game/GameCanadianHighlanderImpl.java
+++ b/Mage/src/main/java/mage/game/GameCanadianHighlanderImpl.java
@@ -27,14 +27,13 @@
*/
package mage.game;
+import java.util.*;
import mage.constants.MultiplayerAttackOption;
import mage.constants.PhaseStep;
import mage.constants.RangeOfInfluence;
import mage.game.turn.TurnMod;
import mage.players.Player;
-import java.util.*;
-
public abstract class GameCanadianHighlanderImpl extends GameImpl {
protected boolean startingPlayerSkipsDraw = true;
@@ -160,19 +159,4 @@ public abstract class GameCanadianHighlanderImpl extends GameImpl {
super.endMulligan(playerId);
}
- @Override
- public Set getOpponents(UUID playerId) {
- Set opponents = new HashSet<>();
- for (UUID opponentId : getState().getPlayersInRange(playerId, this)) {
- if (!opponentId.equals(playerId)) {
- opponents.add(opponentId);
- }
- }
- return opponents;
- }
-
- @Override
- public boolean isOpponent(Player player, UUID playerToCheck) {
- return !player.getId().equals(playerToCheck);
- }
}
diff --git a/Mage/src/main/java/mage/game/GameCommanderImpl.java b/Mage/src/main/java/mage/game/GameCommanderImpl.java
index b952ba3ca3f..cd370630ab5 100644
--- a/Mage/src/main/java/mage/game/GameCommanderImpl.java
+++ b/Mage/src/main/java/mage/game/GameCommanderImpl.java
@@ -27,9 +27,7 @@
*/
package mage.game;
-import java.util.HashSet;
import java.util.Map;
-import java.util.Set;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
@@ -200,22 +198,6 @@ public abstract class GameCommanderImpl extends GameImpl {
return super.checkStateBasedActions();
}
- @Override
- public Set getOpponents(UUID playerId) {
- Set opponents = new HashSet<>();
- for (UUID opponentId : getState().getPlayersInRange(playerId, this)) {
- if (!opponentId.equals(playerId)) {
- opponents.add(opponentId);
- }
- }
- return opponents;
- }
-
- @Override
- public boolean isOpponent(Player player, UUID playerToCheck) {
- return !player.getId().equals(playerToCheck);
- }
-
public void setAlsoHand(boolean alsoHand) {
this.alsoHand = alsoHand;
}
diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java
index e8b31da5aa0..2921ed02a7d 100644
--- a/Mage/src/main/java/mage/game/GameImpl.java
+++ b/Mage/src/main/java/mage/game/GameImpl.java
@@ -1521,8 +1521,9 @@ public abstract class GameImpl implements Game, Serializable {
@Override
public void addEffect(ContinuousEffect continuousEffect, Ability source) {
Ability newAbility = source.copy();
-
+ newAbility.setSourceObject(null, this); // Update the source object to the currently existing Object
ContinuousEffect newEffect = continuousEffect.copy();
+
newEffect.newId();
newEffect.init(newAbility, this);
@@ -2031,7 +2032,7 @@ public abstract class GameImpl implements Game, Serializable {
}
}
}
- // 704.5s If the number of lore counters on a Saga permanent is greater than or equal to its final chapter number
+ // 704.5s If the number of lore counters on a Saga permanent is greater than or equal to its final chapter number
// and it isn’t the source of a chapter ability that has triggered but not yet left the stack, that Saga’s controller sacrifices it.
if (perm.hasSubtype(SubType.SAGA, this)) {
for (Ability sagaAbility : perm.getAbilities()) {
diff --git a/Mage/src/main/java/mage/game/GameTinyLeadersImpl.java b/Mage/src/main/java/mage/game/GameTinyLeadersImpl.java
index 95cc851ec8f..29cdb00d027 100644
--- a/Mage/src/main/java/mage/game/GameTinyLeadersImpl.java
+++ b/Mage/src/main/java/mage/game/GameTinyLeadersImpl.java
@@ -132,22 +132,6 @@ public abstract class GameTinyLeadersImpl extends GameImpl {
return commander;
}
- @Override
- public Set getOpponents(UUID playerId) {
- Set opponents = new HashSet<>();
- for (UUID opponentId : getState().getPlayersInRange(playerId, this)) {
- if (!opponentId.equals(playerId)) {
- opponents.add(opponentId);
- }
- }
- return opponents;
- }
-
- @Override
- public boolean isOpponent(Player player, UUID playerToCheck) {
- return !player.getId().equals(playerToCheck);
- }
-
public void setAlsoHand(boolean alsoHand) {
this.alsoHand = alsoHand;
}
diff --git a/Mage/src/main/java/mage/game/combat/Combat.java b/Mage/src/main/java/mage/game/combat/Combat.java
index 8abc77f1c81..de1bf60ec63 100644
--- a/Mage/src/main/java/mage/game/combat/Combat.java
+++ b/Mage/src/main/java/mage/game/combat/Combat.java
@@ -412,19 +412,19 @@ public class Combat implements Serializable, Copyable {
creaturesForcedToAttack.put(creature.getId(), defendersForcedToAttack);
// No need to attack a special defender
if (defendersForcedToAttack.isEmpty()) {
- if (defendersForcedToAttack.isEmpty()) {
- if (defendersCostlessAttackable.size() >= 1) {
- if (defenders.size() == 1) {
- player.declareAttacker(creature.getId(), defenders.iterator().next(), game, false);
- } else {
- TargetDefender target = new TargetDefender(defenders, creature.getId());
- target.setRequired(true);
- target.setTargetName("planeswalker or player for " + creature.getLogName() + " to attack");
- if (player.chooseTarget(Outcome.Damage, target, null, game)) {
- player.declareAttacker(creature.getId(), target.getFirstTarget(), game, false);
- }
- }
+ if (defenders.size() == 1) {
+ player.declareAttacker(creature.getId(), defenders.iterator().next(), game, false);
+ } else {
+ TargetDefender target = new TargetDefender(defenders, creature.getId());
+ target.setRequired(true);
+ target.setTargetName("planeswalker or player for " + creature.getLogName() + " to attack");
+ if (player.chooseTarget(Outcome.Damage, target, null, game)) {
+ player.declareAttacker(creature.getId(), target.getFirstTarget(), game, false);
}
+ }
+ } else {
+ if (defenders.size() == 1) {
+ player.declareAttacker(creature.getId(), defendersForcedToAttack.iterator().next(), game, false);
} else {
TargetDefender target = new TargetDefender(defendersCostlessAttackable, creature.getId());
target.setRequired(true);
@@ -432,8 +432,6 @@ public class Combat implements Serializable, Copyable {
player.declareAttacker(creature.getId(), target.getFirstTarget(), game, false);
}
}
- } else {
- player.declareAttacker(creature.getId(), defendersForcedToAttack.iterator().next(), game, false);
}
}
@@ -684,7 +682,7 @@ public class Combat implements Serializable, Copyable {
forcingAttackers.add(attackingCreatureId);
creatureMustBlockAttackers.put(possibleBlocker.getId(), forcingAttackers);
// assign block to the first forcing attacker automatically
- defender.declareBlocker(defender.getId(), possibleBlocker.getId(), attackingCreatureId, game);
+ defender.declareBlocker(defender.getId(), possibleBlocker.getId(), attackingCreatureId, game, false);
}
}
}
@@ -972,7 +970,7 @@ public class Combat implements Serializable, Copyable {
// check if creatures are forced to block but do not block at all or block creatures they are not forced to block
StringBuilder sb = new StringBuilder();
for (Map.Entry> entry : creatureMustBlockAttackers.entrySet()) {
- boolean blockIsValid;
+ boolean blockIsValid = true;
Permanent creatureForcedToBlock = game.getPermanent(entry.getKey());
if (creatureForcedToBlock == null) {
break;
@@ -982,29 +980,6 @@ public class Combat implements Serializable, Copyable {
continue;
}
- // Check if blocker is really able to block one or more attackers (maybe not if the attacker has menace) - if not continue with the next forced blocker
- // TODO: Probably there is some potential to abuse the check if forced blockers are assigned to differnt attackers with e.g. menace.
- // While if assigned all to one the block is possible
- if (creatureForcedToBlock.getBlocking() == 0) {
- boolean validBlockPossible = false;
- for (UUID possibleAttackerId : entry.getValue()) {
- CombatGroup attackersGroup = findGroup(possibleAttackerId);
- if (attackersGroup.getBlockers().contains(creatureForcedToBlock.getId())) {
- // forcedBlocker blocks a valid blocker, so no problem break check if valid block option exists
- validBlockPossible = true;
- break;
- }
- Permanent attackingCreature = game.getPermanent(possibleAttackerId);
- if (attackingCreature.getMinBlockedBy() > 1) { // e.g. Menace
- if (attackersGroup.getBlockers().size() + 1 >= attackingCreature.getMinBlockedBy()) {
- validBlockPossible = true;
- }
- }
- }
- if (!validBlockPossible) {
- continue;
- }
- }
// // check if creature has to pay a cost to block so it's not mandatory to block
// boolean removedAttacker = false;
@@ -1021,8 +996,24 @@ public class Combat implements Serializable, Copyable {
// continue;
// }
// creature does not block -> not allowed
+
+ // Check if blocker is really able to block one or more attackers (maybe not if the attacker has menace) - if not continue with the next forced blocker
+ // TODO: Probably there is some potential to abuse the check if forced blockers are assigned to differnt attackers with e.g. menace.
+ // While if assigned all to one the block is possible
if (creatureForcedToBlock.getBlocking() == 0) {
- blockIsValid = false;
+ blockIsValid = entry.getValue().isEmpty();
+ for (UUID possibleAttackerId : entry.getValue()) {
+ CombatGroup attackersGroup = game.getCombat().findGroup(possibleAttackerId);
+ Permanent attackingCreature = game.getPermanent(possibleAttackerId);
+ if (attackersGroup == null || attackingCreature == null) {
+ continue;
+ }
+ if (attackingCreature.getMinBlockedBy() > 1) { // e.g. Menace
+ if (attackersGroup.getBlockers().size() + 1 < attackingCreature.getMinBlockedBy()) {
+ blockIsValid = true;
+ }
+ }
+ }
} else {
blockIsValid = false;
// which attacker is he blocking
@@ -1242,19 +1233,21 @@ public class Combat implements Serializable, Copyable {
}
}
}
-
+
@SuppressWarnings("deprecation")
public boolean declareAttacker(UUID creatureId, UUID defenderId, UUID playerId, Game game) {
Permanent attacker = game.getPermanent(creatureId);
if (attacker != null) {
- if (!attacker.getAbilities().containsKey(VigilanceAbility.getInstance().getId()) && !attacker.getAbilities().containsKey(JohanVigilanceAbility.getInstance().getId())) {
- if (!attacker.isTapped()) {
- attacker.setTapped(true);
- attackersTappedByAttack.add(attacker.getId());
- }
- }
if (!game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.DECLARE_ATTACKER, defenderId, creatureId, playerId))) {
- return addAttackerToCombat(creatureId, defenderId, game);
+ if (addAttackerToCombat(creatureId, defenderId, game)) {
+ if (!attacker.getAbilities().containsKey(VigilanceAbility.getInstance().getId()) && !attacker.getAbilities().containsKey(JohanVigilanceAbility.getInstance().getId())) {
+ if (!attacker.isTapped()) {
+ attacker.setTapped(true);
+ attackersTappedByAttack.add(attacker.getId());
+ }
+ }
+ return true;
+ }
}
}
return false;
diff --git a/Mage/src/main/java/mage/game/combat/CombatGroup.java b/Mage/src/main/java/mage/game/combat/CombatGroup.java
index e1f003e1d87..0fe5834ac9e 100644
--- a/Mage/src/main/java/mage/game/combat/CombatGroup.java
+++ b/Mage/src/main/java/mage/game/combat/CombatGroup.java
@@ -29,7 +29,6 @@ package mage.game.combat;
import java.io.Serializable;
import java.util.*;
-
import mage.abilities.common.ControllerAssignCombatDamageToBlockersAbility;
import mage.abilities.common.ControllerDivideCombatDamageAbility;
import mage.abilities.common.DamageAsThoughNotBlockedAbility;
@@ -178,7 +177,7 @@ public class CombatGroup implements Serializable, Copyable {
}
if (attackers.size() != 1) {
multiAttackerDamage(first, game);
- // } else {
+ // } else {
// singleAttackerDamage(first, game);
}
}
@@ -334,7 +333,7 @@ public class CombatGroup implements Serializable, Copyable {
defenderDamage(attacker, damage, game);
} else if (!blockerOrder.isEmpty()) {
// Assign the damage left to first blocker
- assigned.put(blockerOrder.get(0), assigned.get(blockerOrder.get(0)) + damage);
+ assigned.put(blockerOrder.get(0), assigned.get(blockerOrder.get(0)) == null ? 0 : assigned.get(blockerOrder.get(0)) + damage);
}
}
for (UUID blockerId : blockerOrder) {
@@ -430,7 +429,7 @@ public class CombatGroup implements Serializable, Copyable {
}
}
- public boolean checkSoleBlockerAfter (Permanent blocker, Game game) {
+ public boolean checkSoleBlockerAfter(Permanent blocker, Game game) {
// this solves some corner cases (involving banding) when finding out whether a blocker is blocking alone or not
if (blocker.getBlocking() == 1) {
if (game.getCombat().blockingGroups.get(blocker.getId()) == null) {
@@ -454,9 +453,9 @@ public class CombatGroup implements Serializable, Copyable {
* {@link #singleBlockerDamage}.
*
* Handles abilities like "{this} an block any number of creatures.".
- *
- * Blocker damage for blockers blocking single creatures is handled in
- * the single/multi blocker methods, so this shouldn't be used anymore.
+ *
+ * Blocker damage for blockers blocking single creatures is handled in the
+ * single/multi blocker methods, so this shouldn't be used anymore.
*
* @param first
* @param game
@@ -782,7 +781,7 @@ public class CombatGroup implements Serializable, Copyable {
/**
* There are effects, that set an attacker to be blocked. Therefore this
* setter can be used.
- *
+ *
* This method lacks a band check, use setBlocked(blocked, game) instead.
*
* @param blocked
@@ -870,8 +869,8 @@ public class CombatGroup implements Serializable, Copyable {
}
/**
- * Decides damage distribution for blocking creatures with banding or
- * if defending player controls the Defensive Formation enchantment.
+ * Decides damage distribution for blocking creatures with banding or if
+ * defending player controls the Defensive Formation enchantment.
*
* @param game
*/
diff --git a/Mage/src/main/java/mage/game/command/emblems/DackFaydenEmblem.java b/Mage/src/main/java/mage/game/command/emblems/DackFaydenEmblem.java
index 2a1b54ef49c..0d0b594298b 100644
--- a/Mage/src/main/java/mage/game/command/emblems/DackFaydenEmblem.java
+++ b/Mage/src/main/java/mage/game/command/emblems/DackFaydenEmblem.java
@@ -31,6 +31,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import mage.abilities.Ability;
+import mage.abilities.Mode;
import mage.abilities.SpellAbility;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.ContinuousEffectImpl;
@@ -92,12 +93,14 @@ class DackFaydenEmblemTriggeredAbility extends TriggeredAbilityImpl {
Spell spell = game.getStack().getSpell(event.getTargetId());
if (spell != null) {
SpellAbility spellAbility = spell.getSpellAbility();
- for (Target target : spellAbility.getTargets()) {
- if (!target.isNotTarget()) {
- for (UUID targetId : target.getTargets()) {
- if (game.getBattlefield().containsPermanent(targetId)) {
- returnValue = true;
- targetedPermanentIds.add(targetId);
+ for (Mode mode : spellAbility.getModes().values()) {
+ for (Target target : mode.getTargets()) {
+ if (!target.isNotTarget()) {
+ for (UUID targetId : target.getTargets()) {
+ if (game.getBattlefield().containsPermanent(targetId)) {
+ returnValue = true;
+ targetedPermanentIds.add(targetId);
+ }
}
}
}
diff --git a/Mage/src/main/java/mage/game/command/emblems/RowanKenrithEmblem.java b/Mage/src/main/java/mage/game/command/emblems/RowanKenrithEmblem.java
new file mode 100644
index 00000000000..292542dd2b7
--- /dev/null
+++ b/Mage/src/main/java/mage/game/command/emblems/RowanKenrithEmblem.java
@@ -0,0 +1,124 @@
+/*
+ * 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.game.command.emblems;
+
+import mage.abilities.Ability;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.mana.ManaAbility;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.command.Emblem;
+import mage.game.events.GameEvent;
+import mage.game.stack.StackAbility;
+import mage.game.stack.StackObject;
+import mage.players.Player;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author TheElk801
+ */
+public class RowanKenrithEmblem extends Emblem {
+ // Target player gets an emblem with "Whenever you activate an ability that isn't a mana ability, copy it. You may choose new targets for the copy."
+
+ public RowanKenrithEmblem() {
+ this.setName("Emblem Rowan Kenrith");
+ this.getAbilities().add(new RowanKenrithEmblemTriggeredAbility());
+ }
+}
+
+class RowanKenrithEmblemTriggeredAbility extends TriggeredAbilityImpl {
+
+ public RowanKenrithEmblemTriggeredAbility() {
+ super(Zone.COMMAND, new RowanKenrithEmblemCopyEffect(), false);
+ }
+
+ public RowanKenrithEmblemTriggeredAbility(final RowanKenrithEmblemTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.ACTIVATED_ABILITY;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ if (event.getPlayerId().equals(this.getControllerId())) {
+ StackObject ability = game.getStack().getStackObject(event.getTargetId());
+ if (ability != null && !(ability instanceof ManaAbility)) {
+ this.getEffects().get(0).setTargetPointer(new FixedTarget(ability.getId()));
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever you activate an ability that isn't a mana ability, copy it. You may choose new targets for the copy.";
+ }
+
+ @Override
+ public RowanKenrithEmblemTriggeredAbility copy() {
+ return new RowanKenrithEmblemTriggeredAbility(this);
+ }
+}
+
+class RowanKenrithEmblemCopyEffect extends OneShotEffect {
+
+ public RowanKenrithEmblemCopyEffect() {
+ super(Outcome.Copy);
+ this.staticText = "copy it. You may choose new targets for the copy.";
+ }
+
+ public RowanKenrithEmblemCopyEffect(final RowanKenrithEmblemCopyEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ StackAbility stackAbility = (StackAbility) game.getStack().getStackObject(targetPointer.getFirst(game, source));
+ if (stackAbility != null) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ stackAbility.createCopyOnStack(game, source, source.getControllerId(), true);
+ return true;
+ }
+ }
+ return false;
+
+ }
+
+ @Override
+ public RowanKenrithEmblemCopyEffect copy() {
+ return new RowanKenrithEmblemCopyEffect(this);
+ }
+}
diff --git a/Mage/src/main/java/mage/game/command/emblems/WillKenrithEmblem.java b/Mage/src/main/java/mage/game/command/emblems/WillKenrithEmblem.java
new file mode 100644
index 00000000000..25fa741b917
--- /dev/null
+++ b/Mage/src/main/java/mage/game/command/emblems/WillKenrithEmblem.java
@@ -0,0 +1,54 @@
+/*
+ * 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.game.command.emblems;
+
+import mage.abilities.common.SpellCastControllerTriggeredAbility;
+import mage.abilities.effects.common.CopyTargetSpellEffect;
+import mage.constants.Zone;
+import mage.filter.StaticFilters;
+import mage.game.command.Emblem;
+
+/**
+ *
+ * @author TheElk801
+ */
+public class WillKenrithEmblem extends Emblem {
+ // Target player gets an emblem with "Whenever you cast an instant or sorcery spell, copy it. You may choose new targets for the copy."
+
+ public WillKenrithEmblem() {
+ this.setName("Emblem Will Kenrith");
+ this.getAbilities().add(new SpellCastControllerTriggeredAbility(
+ Zone.COMMAND,
+ new CopyTargetSpellEffect(true)
+ .setText("copy that spell. You may choose new targets for the copy"),
+ StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL,
+ false,
+ true
+ ));
+ }
+}
diff --git a/Mage/src/main/java/mage/game/command/planes/PanopticonPlane.java b/Mage/src/main/java/mage/game/command/planes/PanopticonPlane.java
new file mode 100644
index 00000000000..e73b4912d7f
--- /dev/null
+++ b/Mage/src/main/java/mage/game/command/planes/PanopticonPlane.java
@@ -0,0 +1,128 @@
+/*
+ * 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.game.command.planes;
+
+import java.util.ArrayList;
+import java.util.List;
+import mage.abilities.Ability;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.common.BeginningOfDrawTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.condition.common.MainPhaseStackEmptyCondition;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.DrawCardTargetEffect;
+import mage.abilities.effects.common.RollPlanarDieEffect;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.command.Plane;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+import mage.players.Player;
+import mage.target.Target;
+import mage.watchers.common.PlanarRollWatcher;
+
+/**
+ *
+ * @author spjspj
+ */
+public class PanopticonPlane extends Plane {
+
+ private static final String rule = "At the beginning of your draw step, draw an additional card";
+
+ public PanopticonPlane() {
+ this.setName("Plane - Panopticon");
+ this.setExpansionSetCodeForImage("PCA");
+
+ // At the beginning of your draw step, draw an additional card.
+ Ability ability = new BeginningOfDrawTriggeredAbility(new DrawCardTargetEffect(1), TargetController.ANY, false);
+ this.getAbilities().add(ability);
+ Ability pwability = new PanopticonTriggeredAbility(new DrawCardTargetEffect(1));
+ this.getAbilities().add(pwability);
+
+ // Active player can roll the planar die: Whenever you roll {CHAOS}, draw a card
+ Effect chaosEffect = new DrawCardSourceControllerEffect(1);
+ Target chaosTarget = null;
+
+ List chaosEffects = new ArrayList<>();
+ chaosEffects.add(chaosEffect);
+
+ List chaosTargets = new ArrayList<>();
+ chaosTargets.add(chaosTarget);
+
+ ActivateIfConditionActivatedAbility chaosAbility = new ActivateIfConditionActivatedAbility(Zone.COMMAND, new RollPlanarDieEffect(chaosEffects, chaosTargets), new GenericManaCost(0), MainPhaseStackEmptyCondition.instance);
+ chaosAbility.addWatcher(new PlanarRollWatcher());
+ this.getAbilities().add(chaosAbility);
+ chaosAbility.setMayActivate(TargetController.ANY);
+ this.getAbilities().add(new SimpleStaticAbility(Zone.ALL, new PlanarDieRollCostIncreasingEffect(chaosAbility.getOriginalId())));
+ }
+}
+
+class PanopticonTriggeredAbility extends TriggeredAbilityImpl {
+
+ public PanopticonTriggeredAbility(Effect effect) {
+ super(Zone.COMMAND, effect);
+ }
+
+ public PanopticonTriggeredAbility(final PanopticonTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.PLANESWALKED;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ Plane cPlane = game.getState().getCurrentPlane();
+ if (cPlane == null || !cPlane.getName().equalsIgnoreCase("Plane - Panopticon")) {
+ return false;
+ }
+
+ Player activePlayer = game.getPlayer(game.getActivePlayerId());
+ if (activePlayer != null) {
+ activePlayer.drawCards(1, game);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "When you planeswalk to {this}, draw a card";
+ }
+
+ @Override
+ public PanopticonTriggeredAbility copy() {
+ return new PanopticonTriggeredAbility(this);
+ }
+}
diff --git a/Mage/src/main/java/mage/game/events/GameEvent.java b/Mage/src/main/java/mage/game/events/GameEvent.java
index cee8547a817..33a8a29080a 100644
--- a/Mage/src/main/java/mage/game/events/GameEvent.java
+++ b/Mage/src/main/java/mage/game/events/GameEvent.java
@@ -31,6 +31,7 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
+import mage.MageObjectReference;
import mage.constants.Zone;
/**
@@ -48,6 +49,7 @@ public class GameEvent implements Serializable {
protected String data;
protected Zone zone;
protected List appliedEffects = new ArrayList<>();
+ protected MageObjectReference reference; // e.g. the permitting object for casting a spell from non hand zone
protected UUID customEventType = null;
public enum EventType {
@@ -232,7 +234,7 @@ public class GameEvent implements Serializable {
FLIP_COIN, COIN_FLIPPED, SCRY, FATESEAL,
ROLL_DICE, DICE_ROLLED,
ROLL_PLANAR_DIE, PLANAR_DIE_ROLLED,
- PLANESWALK, PLANESWALKED,
+ PLANESWALK, PLANESWALKED,
PAID_CUMULATIVE_UPKEEP,
DIDNT_PAY_CUMULATIVE_UPKEEP,
//permanent events
@@ -334,21 +336,14 @@ public class GameEvent implements Serializable {
CUSTOM_EVENT
}
- private GameEvent(EventType type, UUID customEventType,
- UUID targetId, UUID sourceId, UUID playerId, int amount, boolean flag) {
- this.type = type;
- this.customEventType = customEventType;
- this.targetId = targetId;
- this.sourceId = sourceId;
- this.amount = amount;
- this.playerId = playerId;
- this.flag = flag;
- }
-
public GameEvent(EventType type, UUID targetId, UUID sourceId, UUID playerId) {
this(type, null, targetId, sourceId, playerId, 0, false);
}
+ public GameEvent(EventType type, UUID targetId, UUID sourceId, UUID playerId, MageObjectReference reference) {
+ this(type, null, targetId, sourceId, playerId, 0, false, reference);
+ }
+
public GameEvent(EventType type, UUID targetId, UUID sourceId, UUID playerId, int amount, boolean flag) {
this(type, null, targetId, sourceId, playerId, amount, flag);
}
@@ -369,6 +364,10 @@ public class GameEvent implements Serializable {
return new GameEvent(type, targetId, sourceId, playerId);
}
+ public static GameEvent getEvent(EventType type, UUID targetId, UUID sourceId, UUID playerId, MageObjectReference reference) {
+ return new GameEvent(type, targetId, sourceId, playerId, reference);
+ }
+
public static GameEvent getEvent(EventType type, UUID targetId, UUID playerId) {
return new GameEvent(type, targetId, null, playerId);
}
@@ -399,6 +398,23 @@ public class GameEvent implements Serializable {
return event;
}
+ private GameEvent(EventType type, UUID customEventType,
+ UUID targetId, UUID sourceId, UUID playerId, int amount, boolean flag) {
+ this(type, customEventType, targetId, sourceId, playerId, amount, flag, null);
+ }
+
+ private GameEvent(EventType type, UUID customEventType,
+ UUID targetId, UUID sourceId, UUID playerId, int amount, boolean flag, MageObjectReference reference) {
+ this.type = type;
+ this.customEventType = customEventType;
+ this.targetId = targetId;
+ this.sourceId = sourceId;
+ this.amount = amount;
+ this.playerId = playerId;
+ this.flag = flag;
+ this.reference = reference;
+ }
+
public EventType getType() {
return type;
}
@@ -455,6 +471,14 @@ public class GameEvent implements Serializable {
this.zone = zone;
}
+ public MageObjectReference getAdditionalReference() {
+ return reference;
+ }
+
+ public void setAdditionalReference(MageObjectReference additionalReference) {
+ this.reference = additionalReference;
+ }
+
/**
* used to store which replacement effects were already applied to an event
* or or any modified events that may replace it
diff --git a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java
index 427b46ef05c..e033640c13a 100644
--- a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java
+++ b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java
@@ -152,7 +152,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
this.blocking = permanent.blocking;
this.maxBlocks = permanent.maxBlocks;
this.deathtouched = permanent.deathtouched;
-// this.attachments.addAll(permanent.attachments);
+
for (Map.Entry> entry : permanent.connectedCards.entrySet()) {
this.connectedCards.put(entry.getKey(), entry.getValue());
}
@@ -696,7 +696,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
for (Iterator ite = ability.getEffects(game, EffectType.CONTINUOUS).iterator(); ite.hasNext();) {
ContinuousEffect effect = (ContinuousEffect) ite.next();
game.getContinuousEffects().setOrder(effect);
- // It's important is to update timestamp of the copied effect in ContinuousEffects because it does the action
+ // It's important to update the timestamp of the copied effect in ContinuousEffects because it does the action
for (ContinuousEffect conEffect : game.getContinuousEffects().getLayeredEffects(game)) {
if (conEffect.getId().equals(effect.getId())) {
game.getContinuousEffects().setOrder(conEffect);
@@ -935,20 +935,20 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
public boolean canBeTargetedBy(MageObject source, UUID sourceControllerId, Game game) {
if (source != null) {
if (abilities.containsKey(ShroudAbility.getInstance().getId())) {
- if (null == game.getContinuousEffects().asThough(this.getId(), AsThoughEffectType.SHROUD, sourceControllerId, game)) {
+ if (null == game.getContinuousEffects().asThough(this.getId(), AsThoughEffectType.SHROUD, null, sourceControllerId, game)) {
return false;
}
}
if (abilities.containsKey(HexproofAbility.getInstance().getId())) {
if (game.getPlayer(this.getControllerId()).hasOpponent(sourceControllerId, game)
- && null == game.getContinuousEffects().asThough(this.getId(), AsThoughEffectType.HEXPROOF, sourceControllerId, game)) {
+ && null == game.getContinuousEffects().asThough(this.getId(), AsThoughEffectType.HEXPROOF, null, sourceControllerId, game)) {
return false;
}
}
if (abilities.containsKey(HexproofFromBlackAbility.getInstance().getId())) {
if (game.getPlayer(this.getControllerId()).hasOpponent(sourceControllerId, game)
- && null == game.getContinuousEffects().asThough(this.getId(), AsThoughEffectType.HEXPROOF, sourceControllerId, game)
+ && null == game.getContinuousEffects().asThough(this.getId(), AsThoughEffectType.HEXPROOF, null, sourceControllerId, game)
&& source.getColor(game).isBlack()) {
return false;
}
@@ -956,7 +956,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
if (abilities.containsKey(HexproofFromWhiteAbility.getInstance().getId())) {
if (game.getPlayer(this.getControllerId()).hasOpponent(sourceControllerId, game)
- && null == game.getContinuousEffects().asThough(this.getId(), AsThoughEffectType.HEXPROOF, sourceControllerId, game)
+ && null == game.getContinuousEffects().asThough(this.getId(), AsThoughEffectType.HEXPROOF, null, sourceControllerId, game)
&& source.getColor(game).isWhite()) {
return false;
}
@@ -1096,7 +1096,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
@Override
public boolean canAttackInPrinciple(UUID defenderId, Game game) {
if (hasSummoningSickness()
- && null == game.getContinuousEffects().asThough(this.objectId, AsThoughEffectType.ATTACK_AS_HASTE, this.getControllerId(), game)) {
+ && null == game.getContinuousEffects().asThough(this.objectId, AsThoughEffectType.ATTACK_AS_HASTE, null, this.getControllerId(), game)) {
return false;
}
//20101001 - 508.1c
@@ -1116,7 +1116,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
}
return !abilities.containsKey(DefenderAbility.getInstance().getId())
- || null != game.getContinuousEffects().asThough(this.objectId, AsThoughEffectType.ATTACK, this.getControllerId(), game);
+ || null != game.getContinuousEffects().asThough(this.objectId, AsThoughEffectType.ATTACK, null, this.getControllerId(), game);
}
private boolean canAttackCheckRestrictionEffects(UUID defenderId, Game game) {
@@ -1136,7 +1136,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
@Override
public boolean canBlock(UUID attackerId, Game game) {
- if (tapped && null == game.getState().getContinuousEffects().asThough(this.getId(), AsThoughEffectType.BLOCK_TAPPED, this.getControllerId(), game)) {
+ if (tapped && null == game.getState().getContinuousEffects().asThough(this.getId(), AsThoughEffectType.BLOCK_TAPPED, null, this.getControllerId(), game)) {
return false;
}
Permanent attacker = game.getPermanent(attackerId);
@@ -1169,7 +1169,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
@Override
public boolean canBlockAny(Game game) {
- if (tapped && null == game.getState().getContinuousEffects().asThough(this.getId(), AsThoughEffectType.BLOCK_TAPPED, this.getControllerId(), game)) {
+ if (tapped && null == game.getState().getContinuousEffects().asThough(this.getId(), AsThoughEffectType.BLOCK_TAPPED, null, this.getControllerId(), game)) {
return false;
}
diff --git a/Mage/src/main/java/mage/game/permanent/token/ATATToken.java b/Mage/src/main/java/mage/game/permanent/token/ATATToken.java
index d922acfa4f0..f90bd344588 100644
--- a/Mage/src/main/java/mage/game/permanent/token/ATATToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/ATATToken.java
@@ -37,7 +37,7 @@ import mage.abilities.effects.common.CreateTokenEffect;
*
* @author spjspj
*/
-public class ATATToken extends TokenImpl {
+public final class ATATToken extends TokenImpl {
public ATATToken() {
super("AT-AT", "5/5 white artifact AT-AT creature tokens with \"When this creature dies, create two 1/1 white Trooper creature tokens.\"", 5, 5);
diff --git a/Mage/src/main/java/mage/game/permanent/token/AbhorrentOverlordHarpyToken.java b/Mage/src/main/java/mage/game/permanent/token/AbhorrentOverlordHarpyToken.java
index ace77ce752e..3aa3a0e6609 100644
--- a/Mage/src/main/java/mage/game/permanent/token/AbhorrentOverlordHarpyToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/AbhorrentOverlordHarpyToken.java
@@ -37,7 +37,7 @@ import mage.abilities.keyword.FlyingAbility;
*
* @author spjspj
*/
-public class AbhorrentOverlordHarpyToken extends TokenImpl {
+public final class AbhorrentOverlordHarpyToken extends TokenImpl {
public AbhorrentOverlordHarpyToken() {
super("Harpy", "1/1 black Harpy creature tokens with flying");
diff --git a/Mage/src/main/java/mage/game/permanent/token/AerieWorshippersBirdToken.java b/Mage/src/main/java/mage/game/permanent/token/AerieWorshippersBirdToken.java
index 6ce726b7a1e..e2c79b64125 100644
--- a/Mage/src/main/java/mage/game/permanent/token/AerieWorshippersBirdToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/AerieWorshippersBirdToken.java
@@ -38,7 +38,7 @@ import mage.abilities.keyword.FlyingAbility;
*
* @author spjspj
*/
-public class AerieWorshippersBirdToken extends TokenImpl {
+public final class AerieWorshippersBirdToken extends TokenImpl {
public AerieWorshippersBirdToken() {
super("Bird", "2/2 blue Bird enchantment creature token with flying");
diff --git a/Mage/src/main/java/mage/game/permanent/token/AkoumStonewakerElementalToken.java b/Mage/src/main/java/mage/game/permanent/token/AkoumStonewakerElementalToken.java
index 91ee184fee4..41738b94c1b 100644
--- a/Mage/src/main/java/mage/game/permanent/token/AkoumStonewakerElementalToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/AkoumStonewakerElementalToken.java
@@ -38,7 +38,7 @@ import mage.abilities.keyword.TrampleAbility;
*
* @author spjspj
*/
-public class AkoumStonewakerElementalToken extends TokenImpl {
+public final class AkoumStonewakerElementalToken extends TokenImpl {
public AkoumStonewakerElementalToken() {
super("Elemental", "3/1 red Elemental creature token with trample and haste");
diff --git a/Mage/src/main/java/mage/game/permanent/token/AkroanSoldierToken.java b/Mage/src/main/java/mage/game/permanent/token/AkroanSoldierToken.java
index 17edfe81deb..57c11a2f2dd 100644
--- a/Mage/src/main/java/mage/game/permanent/token/AkroanSoldierToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/AkroanSoldierToken.java
@@ -36,7 +36,7 @@ import mage.abilities.keyword.HasteAbility;
*
* @author spjspj
*/
-public class AkroanSoldierToken extends TokenImpl {
+public final class AkroanSoldierToken extends TokenImpl {
public AkroanSoldierToken() {
super("Soldier", "1/1 red Soldier creature token with haste");
diff --git a/Mage/src/main/java/mage/game/permanent/token/AngelToken.java b/Mage/src/main/java/mage/game/permanent/token/AngelToken.java
index 455e5f2dac3..04f1ee9fbc3 100644
--- a/Mage/src/main/java/mage/game/permanent/token/AngelToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/AngelToken.java
@@ -8,7 +8,7 @@ import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
-public class AngelToken extends TokenImpl {
+public final class AngelToken extends TokenImpl {
final static private List tokenImageSets = new ArrayList<>();
diff --git a/Mage/src/main/java/mage/game/permanent/token/AnotherSpiritToken.java b/Mage/src/main/java/mage/game/permanent/token/AnotherSpiritToken.java
index 5c740f16f91..097b545e20e 100644
--- a/Mage/src/main/java/mage/game/permanent/token/AnotherSpiritToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/AnotherSpiritToken.java
@@ -36,7 +36,7 @@ import mage.abilities.keyword.FlyingAbility;
*
* @author spjspj
*/
-public class AnotherSpiritToken extends TokenImpl {
+public final class AnotherSpiritToken extends TokenImpl {
public AnotherSpiritToken() {
super("Spirit", "3/3 white Spirit creature token with flying");
diff --git a/Mage/src/main/java/mage/game/permanent/token/AnthousaWarriorToken.java b/Mage/src/main/java/mage/game/permanent/token/AnthousaWarriorToken.java
index d7e4d9a19c3..8796c7f847c 100644
--- a/Mage/src/main/java/mage/game/permanent/token/AnthousaWarriorToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/AnthousaWarriorToken.java
@@ -36,7 +36,7 @@ import mage.MageInt;
*
* @author spjspj
*/
-public class AnthousaWarriorToken extends TokenImpl {
+public final class AnthousaWarriorToken extends TokenImpl {
public AnthousaWarriorToken() {
super("", "2/2 Warrior creatures");
diff --git a/Mage/src/main/java/mage/game/permanent/token/ApeToken.java b/Mage/src/main/java/mage/game/permanent/token/ApeToken.java
index 8d293135fcc..6ac5ab39523 100644
--- a/Mage/src/main/java/mage/game/permanent/token/ApeToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/ApeToken.java
@@ -35,7 +35,7 @@ import mage.MageInt;
*
* @author spjspj
*/
-public class ApeToken extends TokenImpl {
+public final class ApeToken extends TokenImpl {
public ApeToken() {
super("Ape", "2/2 green Ape creature token");
diff --git a/Mage/src/main/java/mage/game/permanent/token/ArchitectOfTheUntamedBeastToken.java b/Mage/src/main/java/mage/game/permanent/token/ArchitectOfTheUntamedBeastToken.java
index 7e52bf41877..63812c05db4 100644
--- a/Mage/src/main/java/mage/game/permanent/token/ArchitectOfTheUntamedBeastToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/ArchitectOfTheUntamedBeastToken.java
@@ -36,7 +36,7 @@ import mage.MageInt;
*
* @author spjspj
*/
-public class ArchitectOfTheUntamedBeastToken extends TokenImpl {
+public final class ArchitectOfTheUntamedBeastToken extends TokenImpl {
public ArchitectOfTheUntamedBeastToken() {
super("Beast", "6/6 colorless Beast artifact creature token");
diff --git a/Mage/src/main/java/mage/game/permanent/token/AssassinToken.java b/Mage/src/main/java/mage/game/permanent/token/AssassinToken.java
index c3a78c1c05b..49c5c00a434 100644
--- a/Mage/src/main/java/mage/game/permanent/token/AssassinToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/AssassinToken.java
@@ -38,7 +38,7 @@ import mage.abilities.effects.common.LoseGameTargetPlayerEffect;
*
* @author spjspj
*/
-public class AssassinToken extends TokenImpl {
+public final class AssassinToken extends TokenImpl {
public AssassinToken() {
super("Assassin", "1/1 black Assassin creature tokens with \"Whenever this creature deals combat damage to a player, that player loses the game.\"");
diff --git a/Mage/src/main/java/mage/game/permanent/token/AssemblyWorkerToken.java b/Mage/src/main/java/mage/game/permanent/token/AssemblyWorkerToken.java
index 3425261e898..b36e87e2a08 100644
--- a/Mage/src/main/java/mage/game/permanent/token/AssemblyWorkerToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/AssemblyWorkerToken.java
@@ -35,7 +35,7 @@ import mage.MageInt;
*
* @author spjspj
*/
-public class AssemblyWorkerToken extends TokenImpl {
+public final class AssemblyWorkerToken extends TokenImpl {
public AssemblyWorkerToken() {
super("Assembly-Worker", "2/2 Assembly-Worker artifact creature");
diff --git a/Mage/src/main/java/mage/game/permanent/token/AvatarToken.java b/Mage/src/main/java/mage/game/permanent/token/AvatarToken.java
index 52376adfaaf..a3457d414f0 100644
--- a/Mage/src/main/java/mage/game/permanent/token/AvatarToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/AvatarToken.java
@@ -46,7 +46,7 @@ import mage.players.Player;
*
* @author spjspj
*/
-public class AvatarToken extends TokenImpl {
+public final class AvatarToken extends TokenImpl {
public AvatarToken() {
super("Avatar", "white Avatar creature token with \"This creature's power and toughness are each equal to your life total.\"");
diff --git a/Mage/src/main/java/mage/game/permanent/token/BalduvianToken.java b/Mage/src/main/java/mage/game/permanent/token/BalduvianToken.java
index d4a8c55e915..5ce46dae210 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BalduvianToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BalduvianToken.java
@@ -36,7 +36,7 @@ import mage.abilities.keyword.HasteAbility;
*
* @author spjspj
*/
-public class BalduvianToken extends TokenImpl {
+public final class BalduvianToken extends TokenImpl {
public BalduvianToken() {
super("Graveborn", "3/1 black and red Graveborn creature token with haste");
diff --git a/Mage/src/main/java/mage/game/permanent/token/BaruFistOfKrosaToken.java b/Mage/src/main/java/mage/game/permanent/token/BaruFistOfKrosaToken.java
index a6803fd20aa..d071a2197b0 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BaruFistOfKrosaToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BaruFistOfKrosaToken.java
@@ -36,7 +36,7 @@ import mage.MageInt;
*
* @author spjspj
*/
-public class BaruFistOfKrosaToken extends TokenImpl {
+public final class BaruFistOfKrosaToken extends TokenImpl {
public BaruFistOfKrosaToken() {
this(1);
diff --git a/Mage/src/main/java/mage/game/permanent/token/BatToken.java b/Mage/src/main/java/mage/game/permanent/token/BatToken.java
index 68059eb78ff..d87677d013b 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BatToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BatToken.java
@@ -8,7 +8,7 @@ import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
-public class BatToken extends TokenImpl {
+public final class BatToken extends TokenImpl {
final static private List tokenImageSets = new ArrayList<>();
diff --git a/Mage/src/main/java/mage/game/permanent/token/BearToken.java b/Mage/src/main/java/mage/game/permanent/token/BearToken.java
index b0b6214e806..5d002f1fd94 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BearToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BearToken.java
@@ -36,7 +36,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BearToken extends TokenImpl {
+public final class BearToken extends TokenImpl {
public BearToken() {
super("Bear", "2/2 green Bear creature token");
diff --git a/Mage/src/main/java/mage/game/permanent/token/BearsCompanionBearToken.java b/Mage/src/main/java/mage/game/permanent/token/BearsCompanionBearToken.java
index bb3ef58c795..5e8c9dc466b 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BearsCompanionBearToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BearsCompanionBearToken.java
@@ -35,7 +35,7 @@ import mage.MageInt;
*
* @author spjspj
*/
-public class BearsCompanionBearToken extends TokenImpl {
+public final class BearsCompanionBearToken extends TokenImpl {
public BearsCompanionBearToken() {
super("Bear", "4/4 green Bear creature token");
diff --git a/Mage/src/main/java/mage/game/permanent/token/BeastToken.java b/Mage/src/main/java/mage/game/permanent/token/BeastToken.java
index 7bb5ab5dcaf..41a35ab93a7 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BeastToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BeastToken.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author BetaSteward_at_googlemail.com
*/
-public class BeastToken extends TokenImpl {
+public final class BeastToken extends TokenImpl {
final static private List tokenImageSets = new ArrayList<>();
diff --git a/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java b/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java
index ac205e801da..b5ba85a7f62 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class BeastToken2 extends TokenImpl {
+public final class BeastToken2 extends TokenImpl {
final static private List tokenImageSets = new ArrayList<>();
diff --git a/Mage/src/main/java/mage/game/permanent/token/BeastToken3.java b/Mage/src/main/java/mage/game/permanent/token/BeastToken3.java
index f5d79e6cc77..450af1b94ff 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BeastToken3.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BeastToken3.java
@@ -35,7 +35,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class BeastToken3 extends TokenImpl {
+public final class BeastToken3 extends TokenImpl {
public BeastToken3() {
this(null, 0);
diff --git a/Mage/src/main/java/mage/game/permanent/token/BeckonApparitionToken.java b/Mage/src/main/java/mage/game/permanent/token/BeckonApparitionToken.java
index 652d94c8507..4cfeb28a367 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BeckonApparitionToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BeckonApparitionToken.java
@@ -36,7 +36,7 @@ import mage.abilities.keyword.FlyingAbility;
*
* @author spjspj
*/
-public class BeckonApparitionToken extends TokenImpl {
+public final class BeckonApparitionToken extends TokenImpl {
public BeckonApparitionToken() {
super("Spirit", "1/1 white and black Spirit creature token with flying");
diff --git a/Mage/src/main/java/mage/game/permanent/token/BelzenlokClericToken.java b/Mage/src/main/java/mage/game/permanent/token/BelzenlokClericToken.java
index 00eee821106..d7ce805db49 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BelzenlokClericToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BelzenlokClericToken.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class BelzenlokClericToken extends TokenImpl {
+public final class BelzenlokClericToken extends TokenImpl {
final static private List tokenImageSets = new ArrayList<>();
static {
diff --git a/Mage/src/main/java/mage/game/permanent/token/BelzenlokDemonToken.java b/Mage/src/main/java/mage/game/permanent/token/BelzenlokDemonToken.java
index e7d194041d9..470570432b8 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BelzenlokDemonToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BelzenlokDemonToken.java
@@ -52,7 +52,7 @@ import mage.game.permanent.Permanent;
*
* @author LoneFox
*/
-public class BelzenlokDemonToken extends TokenImpl {
+public final class BelzenlokDemonToken extends TokenImpl {
final static private List tokenImageSets = new ArrayList<>();
static {
diff --git a/Mage/src/main/java/mage/game/permanent/token/BirdSoldierToken.java b/Mage/src/main/java/mage/game/permanent/token/BirdSoldierToken.java
index 435921807b1..4f6e6d581fb 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BirdSoldierToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BirdSoldierToken.java
@@ -36,7 +36,7 @@ import mage.abilities.keyword.FlyingAbility;
*
* @author spjspj
*/
-public class BirdSoldierToken extends TokenImpl {
+public final class BirdSoldierToken extends TokenImpl {
public BirdSoldierToken() {
super("Bird Soldier", "1/1 white Bird Soldier creature with flying");
diff --git a/Mage/src/main/java/mage/game/permanent/token/BirdToken.java b/Mage/src/main/java/mage/game/permanent/token/BirdToken.java
index 92101b5dd33..c3f15d3e7ca 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BirdToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BirdToken.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class BirdToken extends TokenImpl {
+public final class BirdToken extends TokenImpl {
public BirdToken() {
super("Bird", "1/1 white Bird creature token with flying");
diff --git a/Mage/src/main/java/mage/game/permanent/token/BoarToken.java b/Mage/src/main/java/mage/game/permanent/token/BoarToken.java
index 9f4e9c78364..601125f8092 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BoarToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BoarToken.java
@@ -35,7 +35,7 @@ import mage.MageInt;
*
* @author spjspj
*/
-public class BoarToken extends TokenImpl {
+public final class BoarToken extends TokenImpl {
public BoarToken() {
super("Boar", "3/3 green Boar creature token");
diff --git a/Mage/src/main/java/mage/game/permanent/token/BrainiacToken.java b/Mage/src/main/java/mage/game/permanent/token/BrainiacToken.java
index bf3e694b76f..d4c1b141207 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BrainiacToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BrainiacToken.java
@@ -35,7 +35,7 @@ import mage.MageInt;
*
* @author spjspj
*/
-public class BrainiacToken extends TokenImpl {
+public final class BrainiacToken extends TokenImpl {
public BrainiacToken() {
super("Brainiac", "1/1 red Brainiac creature token");
diff --git a/Mage/src/main/java/mage/game/permanent/token/BreedingPitThrullToken.java b/Mage/src/main/java/mage/game/permanent/token/BreedingPitThrullToken.java
index 00c4e8ff672..6af683494b0 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BreedingPitThrullToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BreedingPitThrullToken.java
@@ -35,7 +35,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class BreedingPitThrullToken extends TokenImpl {
+public final class BreedingPitThrullToken extends TokenImpl {
public BreedingPitThrullToken() {
super("Thrull", "0/1 black Thrull creature token");
diff --git a/Mage/src/main/java/mage/game/permanent/token/BrokenVisageSpiritToken.java b/Mage/src/main/java/mage/game/permanent/token/BrokenVisageSpiritToken.java
index af64bf698d4..7aeeb0435ea 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BrokenVisageSpiritToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BrokenVisageSpiritToken.java
@@ -35,7 +35,7 @@ import mage.MageInt;
*
* @author spjspj & L_J
*/
-public class BrokenVisageSpiritToken extends TokenImpl {
+public final class BrokenVisageSpiritToken extends TokenImpl {
public BrokenVisageSpiritToken() {
this(0,0);
diff --git a/Mage/src/main/java/mage/game/permanent/token/BroodKeeperDragonToken.java b/Mage/src/main/java/mage/game/permanent/token/BroodKeeperDragonToken.java
index b0487c7ac33..ab26bfefdc3 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BroodKeeperDragonToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BroodKeeperDragonToken.java
@@ -41,7 +41,7 @@ import mage.constants.Zone;
*
* @author spjspj
*/
-public class BroodKeeperDragonToken extends TokenImpl {
+public final class BroodKeeperDragonToken extends TokenImpl {
public BroodKeeperDragonToken() {
super("Dragon", "2/2 red Dragon creature token with flying. It has \"{R}: This creature gets +1/+0 until end of turn.\"");
diff --git a/Mage/src/main/java/mage/game/permanent/token/ButterflyToken.java b/Mage/src/main/java/mage/game/permanent/token/ButterflyToken.java
index e021ec68b13..0396dfb9648 100644
--- a/Mage/src/main/java/mage/game/permanent/token/ButterflyToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/ButterflyToken.java
@@ -36,7 +36,7 @@ import mage.abilities.keyword.FlyingAbility;
*
* @author spjspj
*/
-public class ButterflyToken extends TokenImpl {
+public final class ButterflyToken extends TokenImpl {
public ButterflyToken() {
super("Butterfly", "1/1 green Insect creature token with flying named Butterfly");
diff --git a/Mage/src/main/java/mage/game/permanent/token/CallTheSkyBreakerElementalToken.java b/Mage/src/main/java/mage/game/permanent/token/CallTheSkyBreakerElementalToken.java
index 92c6d00be6f..dd1d7d34023 100644
--- a/Mage/src/main/java/mage/game/permanent/token/CallTheSkyBreakerElementalToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/CallTheSkyBreakerElementalToken.java
@@ -36,7 +36,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class CallTheSkyBreakerElementalToken extends TokenImpl {
+public final class CallTheSkyBreakerElementalToken extends TokenImpl {
public CallTheSkyBreakerElementalToken() {
super("Elemental", "5/5 blue and red Elemental creature token with flying");
diff --git a/Mage/src/main/java/mage/game/permanent/token/CamaridToken.java b/Mage/src/main/java/mage/game/permanent/token/CamaridToken.java
index 36d0271410d..6763956a1b2 100644
--- a/Mage/src/main/java/mage/game/permanent/token/CamaridToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/CamaridToken.java
@@ -34,7 +34,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class CamaridToken extends TokenImpl {
+public final class CamaridToken extends TokenImpl {
public CamaridToken() {
super("Camarid", "1/1 blue Camarid creature tokens");
diff --git a/Mage/src/main/java/mage/game/permanent/token/CaribouToken.java b/Mage/src/main/java/mage/game/permanent/token/CaribouToken.java
index e62ac8352ef..4b66268f340 100644
--- a/Mage/src/main/java/mage/game/permanent/token/CaribouToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/CaribouToken.java
@@ -35,7 +35,7 @@ import mage.MageInt;
*
* @author spjspj
*/
-public class CaribouToken extends TokenImpl {
+public final class CaribouToken extends TokenImpl {
public CaribouToken() {
super("Caribou", "0/1 white Caribou creature token");
diff --git a/Mage/src/main/java/mage/game/permanent/token/CarnivoreToken.java b/Mage/src/main/java/mage/game/permanent/token/CarnivoreToken.java
index 3ecd377c109..5b6be115386 100644
--- a/Mage/src/main/java/mage/game/permanent/token/CarnivoreToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/CarnivoreToken.java
@@ -35,7 +35,7 @@ import mage.MageInt;
*
* @author spjspj
*/
-public class CarnivoreToken extends TokenImpl {
+public final class CarnivoreToken extends TokenImpl {
public CarnivoreToken() {
super("Carnivore", "3/1 red Beast creature token");
diff --git a/Mage/src/main/java/mage/game/permanent/token/CarrionBlackInsectToken.java b/Mage/src/main/java/mage/game/permanent/token/CarrionBlackInsectToken.java
index 96f06dcf150..2cdc68f8f45 100644
--- a/Mage/src/main/java/mage/game/permanent/token/CarrionBlackInsectToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/CarrionBlackInsectToken.java
@@ -35,7 +35,7 @@ import mage.MageInt;
*
* @author TheElk801
*/
-public class CarrionBlackInsectToken extends TokenImpl {
+public final class CarrionBlackInsectToken extends TokenImpl {
public CarrionBlackInsectToken() {
super("Insect", "0/1 black Insect creature token");
diff --git a/Mage/src/main/java/mage/game/permanent/token/CatSoldierCreatureToken.java b/Mage/src/main/java/mage/game/permanent/token/CatSoldierCreatureToken.java
index d1e9c380327..49ee1e32ed5 100644
--- a/Mage/src/main/java/mage/game/permanent/token/CatSoldierCreatureToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/CatSoldierCreatureToken.java
@@ -36,7 +36,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CatSoldierCreatureToken extends TokenImpl {
+public final class CatSoldierCreatureToken extends TokenImpl {
public CatSoldierCreatureToken() {
super("Cat Soldier", "1/1 white Cat Soldier creature token with vigilance");
diff --git a/Mage/src/main/java/mage/game/permanent/token/CatToken.java b/Mage/src/main/java/mage/game/permanent/token/CatToken.java
index 5af06d60428..d8e49096ecf 100644
--- a/Mage/src/main/java/mage/game/permanent/token/CatToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/CatToken.java
@@ -39,7 +39,7 @@ import mage.constants.SubType;
*
* @author LoneFox
*/
-public class CatToken extends TokenImpl {
+public final class CatToken extends TokenImpl {
final static private List tokenImageSets = new ArrayList<>();
diff --git a/Mage/src/main/java/mage/game/permanent/token/CatToken2.java b/Mage/src/main/java/mage/game/permanent/token/CatToken2.java
index 28c67a2f638..3bd3e4657c1 100644
--- a/Mage/src/main/java/mage/game/permanent/token/CatToken2.java
+++ b/Mage/src/main/java/mage/game/permanent/token/CatToken2.java
@@ -37,7 +37,7 @@ import mage.constants.SubType;
*
* @author fireshoes
*/
-public class CatToken2 extends TokenImpl {
+public final class CatToken2 extends TokenImpl {
public CatToken2() {
this((String)null);
diff --git a/Mage/src/main/java/mage/game/permanent/token/CatWarriorToken.java b/Mage/src/main/java/mage/game/permanent/token/CatWarriorToken.java
index 0e526afe6ac..f5bd0a6dfd0 100644
--- a/Mage/src/main/java/mage/game/permanent/token/CatWarriorToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/CatWarriorToken.java
@@ -38,7 +38,7 @@ import mage.constants.SubType;
*
* @author spjspj
*/
-public class CatWarriorToken extends TokenImpl {
+public final class CatWarriorToken extends TokenImpl {
final static private List tokenImageSets = new ArrayList<>();
diff --git a/Mage/src/main/java/mage/game/permanent/token/CentaurEnchantmentCreatureToken.java b/Mage/src/main/java/mage/game/permanent/token/CentaurEnchantmentCreatureToken.java
index 83d5d93c9fe..04330a6f455 100644
--- a/Mage/src/main/java/mage/game/permanent/token/CentaurEnchantmentCreatureToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/CentaurEnchantmentCreatureToken.java
@@ -35,7 +35,7 @@ import mage.constants.SubType;
*
* @author LevelX2
*/
-public class CentaurEnchantmentCreatureToken extends TokenImpl {
+public final class CentaurEnchantmentCreatureToken extends TokenImpl {
public CentaurEnchantmentCreatureToken() {
super("Centaur", "3/3 green Centaur enchantment creature token");
diff --git a/Mage/src/main/java/mage/game/permanent/token/CentaurToken.java b/Mage/src/main/java/mage/game/permanent/token/CentaurToken.java
index 2e70aad6b42..3daaf8814e8 100644
--- a/Mage/src/main/java/mage/game/permanent/token/CentaurToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/CentaurToken.java
@@ -40,7 +40,7 @@ import mage.util.RandomUtil;
*
* @author LevelX2
*/
-public class CentaurToken extends TokenImpl {
+public final class CentaurToken extends TokenImpl {
final static private List tokenImageSets = new ArrayList<>();
diff --git a/Mage/src/main/java/mage/game/permanent/token/ChainersTormentNightmareToken.java b/Mage/src/main/java/mage/game/permanent/token/ChainersTormentNightmareToken.java
index c4042149cf9..a890c4ab153 100644
--- a/Mage/src/main/java/mage/game/permanent/token/ChainersTormentNightmareToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/ChainersTormentNightmareToken.java
@@ -38,7 +38,7 @@ import mage.MageInt;
*
* @author spjspj
*/
-public class ChainersTormentNightmareToken extends TokenImpl {
+public final class ChainersTormentNightmareToken extends TokenImpl {
final static private List